diff --git a/frontend/.next/app-build-manifest.json b/frontend/.next/app-build-manifest.json index 011bf53..2dc1dcc 100644 --- a/frontend/.next/app-build-manifest.json +++ b/frontend/.next/app-build-manifest.json @@ -35,6 +35,11 @@ "static/chunks/webpack.js", "static/chunks/main-app.js", "static/chunks/app/flashcards/page.js" + ], + "/generate/page": [ + "static/chunks/webpack.js", + "static/chunks/main-app.js", + "static/chunks/app/generate/page.js" ] } } \ No newline at end of file diff --git a/frontend/.next/cache/webpack/client-development/5.pack.gz b/frontend/.next/cache/webpack/client-development/5.pack.gz index 4f25d3f..6ca5d8d 100644 Binary files a/frontend/.next/cache/webpack/client-development/5.pack.gz and b/frontend/.next/cache/webpack/client-development/5.pack.gz differ diff --git a/frontend/.next/cache/webpack/client-development/6.pack.gz b/frontend/.next/cache/webpack/client-development/6.pack.gz new file mode 100644 index 0000000..d1bd68d Binary files /dev/null and b/frontend/.next/cache/webpack/client-development/6.pack.gz differ diff --git a/frontend/.next/cache/webpack/client-development/7.pack.gz b/frontend/.next/cache/webpack/client-development/7.pack.gz new file mode 100644 index 0000000..b054bd4 Binary files /dev/null and b/frontend/.next/cache/webpack/client-development/7.pack.gz differ diff --git a/frontend/.next/cache/webpack/client-development/8.pack.gz b/frontend/.next/cache/webpack/client-development/8.pack.gz new file mode 100644 index 0000000..27c6cf4 Binary files /dev/null and b/frontend/.next/cache/webpack/client-development/8.pack.gz differ diff --git a/frontend/.next/cache/webpack/client-development/index.pack.gz b/frontend/.next/cache/webpack/client-development/index.pack.gz index 1207742..dc35c51 100644 Binary files a/frontend/.next/cache/webpack/client-development/index.pack.gz and b/frontend/.next/cache/webpack/client-development/index.pack.gz differ diff --git a/frontend/.next/cache/webpack/client-development/index.pack.gz.old b/frontend/.next/cache/webpack/client-development/index.pack.gz.old index 0b3a8e9..9943bd4 100644 Binary files a/frontend/.next/cache/webpack/client-development/index.pack.gz.old and b/frontend/.next/cache/webpack/client-development/index.pack.gz.old differ diff --git a/frontend/.next/cache/webpack/server-development/10.pack.gz b/frontend/.next/cache/webpack/server-development/10.pack.gz index 60081f2..6e32e1e 100644 Binary files a/frontend/.next/cache/webpack/server-development/10.pack.gz and b/frontend/.next/cache/webpack/server-development/10.pack.gz differ diff --git a/frontend/.next/cache/webpack/server-development/13.pack.gz b/frontend/.next/cache/webpack/server-development/13.pack.gz new file mode 100644 index 0000000..f348e3c Binary files /dev/null and b/frontend/.next/cache/webpack/server-development/13.pack.gz differ diff --git a/frontend/.next/cache/webpack/server-development/3.pack.gz b/frontend/.next/cache/webpack/server-development/3.pack.gz index 2e30cf8..ce111d1 100644 Binary files a/frontend/.next/cache/webpack/server-development/3.pack.gz and b/frontend/.next/cache/webpack/server-development/3.pack.gz differ diff --git a/frontend/.next/cache/webpack/server-development/4.pack.gz b/frontend/.next/cache/webpack/server-development/4.pack.gz index 50e00a8..1410ca8 100644 Binary files a/frontend/.next/cache/webpack/server-development/4.pack.gz and b/frontend/.next/cache/webpack/server-development/4.pack.gz differ diff --git a/frontend/.next/cache/webpack/server-development/6.pack.gz b/frontend/.next/cache/webpack/server-development/6.pack.gz index f39ab6e..d6c4c18 100644 Binary files a/frontend/.next/cache/webpack/server-development/6.pack.gz and b/frontend/.next/cache/webpack/server-development/6.pack.gz differ diff --git a/frontend/.next/cache/webpack/server-development/7.pack.gz b/frontend/.next/cache/webpack/server-development/7.pack.gz index ebc800c..018bf19 100644 Binary files a/frontend/.next/cache/webpack/server-development/7.pack.gz and b/frontend/.next/cache/webpack/server-development/7.pack.gz differ diff --git a/frontend/.next/cache/webpack/server-development/8.pack.gz b/frontend/.next/cache/webpack/server-development/8.pack.gz index b396444..3fbc2e9 100644 Binary files a/frontend/.next/cache/webpack/server-development/8.pack.gz and b/frontend/.next/cache/webpack/server-development/8.pack.gz differ diff --git a/frontend/.next/cache/webpack/server-development/index.pack.gz b/frontend/.next/cache/webpack/server-development/index.pack.gz index 16506fe..87cfab8 100644 Binary files a/frontend/.next/cache/webpack/server-development/index.pack.gz and b/frontend/.next/cache/webpack/server-development/index.pack.gz differ diff --git a/frontend/.next/cache/webpack/server-development/index.pack.gz.old b/frontend/.next/cache/webpack/server-development/index.pack.gz.old index 32fa8fc..c83342c 100644 Binary files a/frontend/.next/cache/webpack/server-development/index.pack.gz.old and b/frontend/.next/cache/webpack/server-development/index.pack.gz.old differ diff --git a/frontend/.next/server/app-paths-manifest.json b/frontend/.next/server/app-paths-manifest.json index 3608eda..774e6aa 100644 --- a/frontend/.next/server/app-paths-manifest.json +++ b/frontend/.next/server/app-paths-manifest.json @@ -1,4 +1,7 @@ { + "/login/page": "app/login/page.js", + "/generate/page": "app/generate/page.js", + "/dashboard/page": "app/dashboard/page.js", "/register/page": "app/register/page.js", - "/login/page": "app/login/page.js" + "/flashcards/page": "app/flashcards/page.js" } \ No newline at end of file diff --git a/frontend/.next/server/app/dashboard/page.js b/frontend/.next/server/app/dashboard/page.js index 23d581b..79a31b7 100644 --- a/frontend/.next/server/app/dashboard/page.js +++ b/frontend/.next/server/app/dashboard/page.js @@ -104,7 +104,18 @@ eval("Promise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__w /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ DashboardPage)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react-jsx-dev-runtime.js\");\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! next/link */ \"(ssr)/./node_modules/next/dist/client/app-dir/link.js\");\n/* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(next_link__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _components_ProtectedRoute__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/components/ProtectedRoute */ \"(ssr)/./components/ProtectedRoute.tsx\");\n/* harmony import */ var _contexts_AuthContext__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/contexts/AuthContext */ \"(ssr)/./contexts/AuthContext.tsx\");\n/* __next_internal_client_entry_do_not_use__ default auto */ \n\n\n\n\nfunction DashboardContent() {\n const [activeTab, setActiveTab] = (0,react__WEBPACK_IMPORTED_MODULE_2__.useState)('overview');\n const { user, logout } = (0,_contexts_AuthContext__WEBPACK_IMPORTED_MODULE_4__.useAuth)();\n // Mock data\n const stats = {\n totalWords: 234,\n wordsToday: 12,\n streak: 7,\n accuracy: 85,\n todayReview: 23,\n completedToday: 15\n };\n const recentWords = [\n {\n id: 1,\n word: 'negotiate',\n translation: '協商',\n status: 'learned'\n },\n {\n id: 2,\n word: 'accomplish',\n translation: '完成',\n status: 'learning'\n },\n {\n id: 3,\n word: 'perspective',\n translation: '觀點',\n status: 'new'\n },\n {\n id: 4,\n word: 'substantial',\n translation: '大量的',\n status: 'learned'\n }\n ];\n const cardSets = [\n {\n id: 1,\n name: '美劇經典台詞',\n count: 45,\n progress: 60\n },\n {\n id: 2,\n name: '商務英文必備',\n count: 30,\n progress: 30\n },\n {\n id: 3,\n name: '日常對話',\n count: 25,\n progress: 80\n }\n ];\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"min-h-screen bg-gray-50\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"nav\", {\n className: \"bg-white shadow-sm border-b\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"max-w-7xl mx-auto px-4 sm:px-6 lg:px-8\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex justify-between h-16\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center space-x-8\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h1\", {\n className: \"text-2xl font-bold text-primary\",\n children: \"DramaLing\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 42,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"hidden md:flex space-x-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_link__WEBPACK_IMPORTED_MODULE_1___default()), {\n href: \"/dashboard\",\n className: \"text-gray-900 font-medium\",\n children: \"儀表板\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 44,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_link__WEBPACK_IMPORTED_MODULE_1___default()), {\n href: \"/flashcards\",\n className: \"text-gray-600 hover:text-gray-900\",\n children: \"詞卡\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 45,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_link__WEBPACK_IMPORTED_MODULE_1___default()), {\n href: \"/learn\",\n className: \"text-gray-600 hover:text-gray-900\",\n children: \"學習\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 46,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 43,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 41,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center space-x-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n className: \"p-2 text-gray-600 hover:text-gray-900\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n className: \"w-6 h-6\",\n fill: \"none\",\n stroke: \"currentColor\",\n viewBox: \"0 0 24 24\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n d: \"M15 17h5l-1.405-1.405A2.032 2.032 0 0118 14.158V11a6.002 6.002 0 00-4-5.659V5a2 2 0 10-4 0v.341C7.67 6.165 6 8.388 6 11v3.159c0 .538-.214 1.055-.595 1.436L4 17h5m6 0v1a3 3 0 11-6 0v-1m6 0H9\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 52,\n columnNumber: 19\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 51,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 50,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center space-x-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-8 h-8 bg-primary rounded-full flex items-center justify-center text-white font-semibold\",\n children: user?.username?.[0]?.toUpperCase() || 'U'\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 56,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-sm font-medium\",\n children: user?.displayName || user?.username\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 59,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: logout,\n className: \"ml-4 text-sm text-gray-600 hover:text-gray-900\",\n children: \"登出\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 60,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 55,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 49,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 40,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 39,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 38,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-8\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-white rounded-xl shadow-sm p-6 mb-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h2\", {\n className: \"text-2xl font-bold text-gray-900 mb-2\",\n children: [\n \"歡迎回來,\",\n user?.displayName || user?.username,\n \"! \\uD83C\\uDF1F\"\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 76,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-gray-600\",\n children: [\n \"今天有 \",\n stats.todayReview,\n \" 個單字等待複習,繼續加油!\"\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 77,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mt-4 flex gap-3\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_link__WEBPACK_IMPORTED_MODULE_1___default()), {\n href: \"/learn\",\n className: \"bg-primary text-white px-6 py-2 rounded-lg font-medium hover:bg-primary-hover transition-colors\",\n children: \"開始今日學習\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 79,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_link__WEBPACK_IMPORTED_MODULE_1___default()), {\n href: \"/generate\",\n className: \"border border-primary text-primary px-6 py-2 rounded-lg font-medium hover:bg-primary-light transition-colors\",\n children: \"AI 生成新詞卡\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 85,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 78,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 75,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-4 mb-8\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-white rounded-xl shadow-sm p-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center justify-between mb-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-gray-600 text-sm\",\n children: \"總學習單字\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 98,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n className: \"w-5 h-5 text-blue-500\",\n fill: \"none\",\n stroke: \"currentColor\",\n viewBox: \"0 0 24 24\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n d: \"M12 6.253v13m0-13C10.832 5.477 9.246 5 7.5 5S4.168 5.477 3 6.253v13C4.168 18.477 5.754 18 7.5 18s3.332.477 4.5 1.253m0-13C13.168 5.477 14.754 5 16.5 5c1.747 0 3.332.477 4.5 1.253v13C19.832 18.477 18.247 18 16.5 18c-1.746 0-3.332.477-4.5 1.253\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 100,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 99,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 97,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-3xl font-bold text-gray-900\",\n children: stats.totalWords\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 103,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm text-green-600 mt-1\",\n children: [\n \"+\",\n stats.wordsToday,\n \" 今日\"\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 104,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 96,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-white rounded-xl shadow-sm p-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center justify-between mb-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-gray-600 text-sm\",\n children: \"連續學習\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 109,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n className: \"w-5 h-5 text-orange-500\",\n fill: \"none\",\n stroke: \"currentColor\",\n viewBox: \"0 0 24 24\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n d: \"M17.657 18.657A8 8 0 016.343 7.343S7 9 9 10c0-2 .5-5 2.986-7C14 5 16.09 5.777 17.656 7.343A7.975 7.975 0 0120 13a7.975 7.975 0 01-2.343 5.657z\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 111,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 110,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 108,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-3xl font-bold text-gray-900\",\n children: [\n stats.streak,\n \" 天\"\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 114,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm text-orange-600 mt-1\",\n children: \"\\uD83D\\uDD25 保持良好!\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 115,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 107,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-white rounded-xl shadow-sm p-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center justify-between mb-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-gray-600 text-sm\",\n children: \"正確率\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 120,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n className: \"w-5 h-5 text-green-500\",\n fill: \"none\",\n stroke: \"currentColor\",\n viewBox: \"0 0 24 24\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n d: \"M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 122,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 121,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 119,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-3xl font-bold text-gray-900\",\n children: [\n stats.accuracy,\n \"%\"\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 125,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm text-gray-600 mt-1\",\n children: \"上周 82%\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 126,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 118,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-white rounded-xl shadow-sm p-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center justify-between mb-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-gray-600 text-sm\",\n children: \"今日進度\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 131,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n className: \"w-5 h-5 text-purple-500\",\n fill: \"none\",\n stroke: \"currentColor\",\n viewBox: \"0 0 24 24\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n d: \"M13 7h8m0 0v8m0-8l-8 8-4-4-6 6\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 133,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 132,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 130,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-3xl font-bold text-gray-900\",\n children: [\n stats.completedToday,\n \"/\",\n stats.todayReview\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 136,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full bg-gray-200 rounded-full h-2 mt-2\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-purple-500 h-2 rounded-full\",\n style: {\n width: `${stats.completedToday / stats.todayReview * 100}%`\n }\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 138,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 137,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 129,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 95,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-white rounded-xl shadow-sm\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"border-b border-gray-200\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"nav\", {\n className: \"-mb-px flex space-x-8 px-6\",\n \"aria-label\": \"Tabs\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>setActiveTab('overview'),\n className: `py-4 px-1 border-b-2 font-medium text-sm ${activeTab === 'overview' ? 'border-primary text-primary' : 'border-transparent text-gray-500 hover:text-gray-700 hover:border-gray-300'}`,\n children: \"最近學習\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 150,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>setActiveTab('sets'),\n className: `py-4 px-1 border-b-2 font-medium text-sm ${activeTab === 'sets' ? 'border-primary text-primary' : 'border-transparent text-gray-500 hover:text-gray-700 hover:border-gray-300'}`,\n children: \"我的卡組\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 160,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>setActiveTab('progress'),\n className: `py-4 px-1 border-b-2 font-medium text-sm ${activeTab === 'progress' ? 'border-primary text-primary' : 'border-transparent text-gray-500 hover:text-gray-700 hover:border-gray-300'}`,\n children: \"學習統計\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 170,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 149,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 148,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"p-6\",\n children: [\n activeTab === 'overview' && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h3\", {\n className: \"text-lg font-semibold mb-4\",\n children: \"最近學習的單字\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 186,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-y-3\",\n children: recentWords.map((word)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center justify-between p-4 border rounded-lg hover:bg-gray-50\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center space-x-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-2 h-2 rounded-full bg-green-500\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 191,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"font-semibold\",\n children: word.word\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 193,\n columnNumber: 27\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm text-gray-600\",\n children: word.translation\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 194,\n columnNumber: 27\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 192,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 190,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: `px-3 py-1 rounded-full text-xs font-medium ${word.status === 'learned' ? 'bg-green-100 text-green-800' : word.status === 'learning' ? 'bg-yellow-100 text-yellow-800' : 'bg-gray-100 text-gray-800'}`,\n children: word.status === 'learned' ? '已掌握' : word.status === 'learning' ? '學習中' : '新詞'\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 197,\n columnNumber: 23\n }, this)\n ]\n }, word.id, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 189,\n columnNumber: 21\n }, this))\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 187,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 185,\n columnNumber: 15\n }, this),\n activeTab === 'sets' && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h3\", {\n className: \"text-lg font-semibold mb-4\",\n children: \"我的卡組\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 213,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4\",\n children: cardSets.map((set)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"border rounded-lg p-4 hover:shadow-md transition-shadow\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h4\", {\n className: \"font-semibold mb-2\",\n children: set.name\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 217,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-sm text-gray-600 mb-3\",\n children: [\n set.count,\n \" 個單字\"\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 218,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full bg-gray-200 rounded-full h-2 mb-3\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-primary h-2 rounded-full\",\n style: {\n width: `${set.progress}%`\n }\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 220,\n columnNumber: 25\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 219,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_link__WEBPACK_IMPORTED_MODULE_1___default()), {\n href: `/flashcards/${set.id}`,\n className: \"text-primary text-sm font-medium hover:text-primary-hover\",\n children: \"繼續學習 →\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 225,\n columnNumber: 23\n }, this)\n ]\n }, set.id, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 216,\n columnNumber: 21\n }, this))\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 214,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 212,\n columnNumber: 15\n }, this),\n activeTab === 'progress' && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h3\", {\n className: \"text-lg font-semibold mb-4\",\n children: \"學習統計\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 239,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-gray-50 rounded-lg p-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid grid-cols-2 md:grid-cols-4 gap-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm text-gray-600\",\n children: \"本周學習\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 243,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-2xl font-bold mt-1\",\n children: \"89 個\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 244,\n columnNumber: 23\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 242,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm text-gray-600\",\n children: \"本月學習\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 247,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-2xl font-bold mt-1\",\n children: \"312 個\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 248,\n columnNumber: 23\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 246,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm text-gray-600\",\n children: \"平均每日\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 251,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-2xl font-bold mt-1\",\n children: \"15 個\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 252,\n columnNumber: 23\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 250,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm text-gray-600\",\n children: \"最佳紀錄\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 255,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-2xl font-bold mt-1\",\n children: \"32 個\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 256,\n columnNumber: 23\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 254,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 241,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mt-6 pt-6 border-t\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm text-gray-600 mb-2\",\n children: \"每日學習趨勢(過去7天)\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 260,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-end space-x-2 h-20\",\n children: [\n 15,\n 20,\n 18,\n 25,\n 22,\n 30,\n 12\n ].map((value, index)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-primary rounded-t\",\n style: {\n height: `${value / 30 * 100}%`\n }\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 264,\n columnNumber: 27\n }, this)\n }, index, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 263,\n columnNumber: 25\n }, this))\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 261,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 259,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 240,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 238,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 183,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 147,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 73,\n columnNumber: 7\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 36,\n columnNumber: 5\n }, this);\n}\nfunction DashboardPage() {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ProtectedRoute__WEBPACK_IMPORTED_MODULE_3__.ProtectedRoute, {\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(DashboardContent, {}, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 285,\n columnNumber: 7\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 284,\n columnNumber: 5\n }, this);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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a0ZBQ3ZDLDhEQUFDRDt3RUFBSUMsV0FBVTtrRkFBMEI7Ozs7Ozs7Ozs7Ozs7Ozs7OztrRUFHN0MsOERBQUNEO3dEQUFJQyxXQUFVOzswRUFDYiw4REFBQ0Q7Z0VBQUlDLFdBQVU7MEVBQTZCOzs7Ozs7MEVBQzVDLDhEQUFDRDtnRUFBSUMsV0FBVTswRUFDWjtvRUFBQztvRUFBSTtvRUFBSTtvRUFBSTtvRUFBSTtvRUFBSTtvRUFBSTtpRUFBRyxDQUFDeUIsR0FBRyxDQUFDLENBQUNHLE9BQU9DLHNCQUN4Qyw4REFBQzlCO3dFQUFnQkMsV0FBVTtrRkFDekIsNEVBQUNEOzRFQUNDQyxXQUFVOzRFQUNWcUIsT0FBTztnRkFBRVMsUUFBUSxHQUFHLFFBQVMsS0FBTSxJQUFJLENBQUMsQ0FBQzs0RUFBQzs7Ozs7O3VFQUhwQ0Q7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFpQmxDO0FBRWUsU0FBU0U7SUFDdEIscUJBQ0UsOERBQUN2RCxzRUFBY0E7a0JBQ2IsNEVBQUNFOzs7Ozs7Ozs7O0FBR1AiLCJzb3VyY2VzIjpbIi9Vc2Vycy9qZXR0Y2hlbmcxMDE4L2NvZGUvZHJhbWFsaW5nLXZvY2FiLWxlYXJuaW5nL2Zyb250ZW5kL2FwcC9kYXNoYm9hcmQvcGFnZS50c3giXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBjbGllbnQnXG5cbmltcG9ydCBMaW5rIGZyb20gJ25leHQvbGluaydcbmltcG9ydCB7IHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBQcm90ZWN0ZWRSb3V0ZSB9IGZyb20gJ0AvY29tcG9uZW50cy9Qcm90ZWN0ZWRSb3V0ZSdcbmltcG9ydCB7IHVzZUF1dGggfSBmcm9tICdAL2NvbnRleHRzL0F1dGhDb250ZXh0J1xuXG5mdW5jdGlvbiBEYXNoYm9hcmRDb250ZW50KCkge1xuICBjb25zdCBbYWN0aXZlVGFiLCBzZXRBY3RpdmVUYWJdID0gdXNlU3RhdGUoJ292ZXJ2aWV3JylcbiAgY29uc3QgeyB1c2VyLCBsb2dvdXQgfSA9IHVzZUF1dGgoKVxuXG4gIC8vIE1vY2sgZGF0YVxuICBjb25zdCBzdGF0cyA9IHtcbiAgICB0b3RhbFdvcmRzOiAyMzQsXG4gICAgd29yZHNUb2RheTogMTIsXG4gICAgc3RyZWFrOiA3LFxuICAgIGFjY3VyYWN5OiA4NSxcbiAgICB0b2RheVJldmlldzogMjMsXG4gICAgY29tcGxldGVkVG9kYXk6IDE1XG4gIH1cblxuICBjb25zdCByZWNlbnRXb3JkcyA9IFtcbiAgICB7IGlkOiAxLCB3b3JkOiAnbmVnb3RpYXRlJywgdHJhbnNsYXRpb246ICfljZTllYYnLCBzdGF0dXM6ICdsZWFybmVkJyB9LFxuICAgIHsgaWQ6IDIsIHdvcmQ6ICdhY2NvbXBsaXNoJywgdHJhbnNsYXRpb246ICflrozmiJAnLCBzdGF0dXM6ICdsZWFybmluZycgfSxcbiAgICB7IGlkOiAzLCB3b3JkOiAncGVyc3BlY3RpdmUnLCB0cmFuc2xhdGlvbjogJ+ingOm7nicsIHN0YXR1czogJ25ldycgfSxcbiAgICB7IGlkOiA0LCB3b3JkOiAnc3Vic3RhbnRpYWwnLCB0cmFuc2xhdGlvbjogJ+Wkp+mHj+eahCcsIHN0YXR1czogJ2xlYXJuZWQnIH0sXG4gIF1cblxuICBjb25zdCBjYXJkU2V0cyA9IFtcbiAgICB7IGlkOiAxLCBuYW1lOiAn576O5YqH57aT5YW45Y+w6KmeJywgY291bnQ6IDQ1LCBwcm9ncmVzczogNjAgfSxcbiAgICB7IGlkOiAyLCBuYW1lOiAn5ZWG5YuZ6Iux5paH5b+F5YKZJywgY291bnQ6IDMwLCBwcm9ncmVzczogMzAgfSxcbiAgICB7IGlkOiAzLCBuYW1lOiAn5pel5bi45bCN6KmxJywgY291bnQ6IDI1LCBwcm9ncmVzczogODAgfSxcbiAgXVxuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJtaW4taC1zY3JlZW4gYmctZ3JheS01MFwiPlxuICAgICAgey8qIE5hdmlnYXRpb24gKi99XG4gICAgICA8bmF2IGNsYXNzTmFtZT1cImJnLXdoaXRlIHNoYWRvdy1zbSBib3JkZXItYlwiPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1heC13LTd4bCBteC1hdXRvIHB4LTQgc206cHgtNiBsZzpweC04XCI+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGp1c3RpZnktYmV0d2VlbiBoLTE2XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIHNwYWNlLXgtOFwiPlxuICAgICAgICAgICAgICA8aDEgY2xhc3NOYW1lPVwidGV4dC0yeGwgZm9udC1ib2xkIHRleHQtcHJpbWFyeVwiPkRyYW1hTGluZzwvaDE+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaGlkZGVuIG1kOmZsZXggc3BhY2UteC02XCI+XG4gICAgICAgICAgICAgICAgPExpbmsgaHJlZj1cIi9kYXNoYm9hcmRcIiBjbGFzc05hbWU9XCJ0ZXh0LWdyYXktOTAwIGZvbnQtbWVkaXVtXCI+5YSA6KGo5p2/PC9MaW5rPlxuICAgICAgICAgICAgICAgIDxMaW5rIGhyZWY9XCIvZmxhc2hjYXJkc1wiIGNsYXNzTmFtZT1cInRleHQtZ3JheS02MDAgaG92ZXI6dGV4dC1ncmF5LTkwMFwiPuipnuWNoTwvTGluaz5cbiAgICAgICAgICAgICAgICA8TGluayBocmVmPVwiL2xlYXJuXCIgY2xhc3NOYW1lPVwidGV4dC1ncmF5LTYwMCBob3Zlcjp0ZXh0LWdyYXktOTAwXCI+5a2457+SPC9MaW5rPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBzcGFjZS14LTRcIj5cbiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzc05hbWU9XCJwLTIgdGV4dC1ncmF5LTYwMCBob3Zlcjp0ZXh0LWdyYXktOTAwXCI+XG4gICAgICAgICAgICAgICAgPHN2ZyBjbGFzc05hbWU9XCJ3LTYgaC02XCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCI+XG4gICAgICAgICAgICAgICAgICA8cGF0aCBzdHJva2VMaW5lY2FwPVwicm91bmRcIiBzdHJva2VMaW5lam9pbj1cInJvdW5kXCIgc3Ryb2tlV2lkdGg9ezJ9IGQ9XCJNMTUgMTdoNWwtMS40MDUtMS40MDVBMi4wMzIgMi4wMzIgMCAwMTE4IDE0LjE1OFYxMWE2LjAwMiA2LjAwMiAwIDAwLTQtNS42NTlWNWEyIDIgMCAxMC00IDB2LjM0MUM3LjY3IDYuMTY1IDYgOC4zODggNiAxMXYzLjE1OWMwIC41MzgtLjIxNCAxLjA1NS0uNTk1IDEuNDM2TDQgMTdoNW02IDB2MWEzIDMgMCAxMS02IDB2LTFtNiAwSDlcIiAvPlxuICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBzcGFjZS14LTJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctOCBoLTggYmctcHJpbWFyeSByb3VuZGVkLWZ1bGwgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgdGV4dC13aGl0ZSBmb250LXNlbWlib2xkXCI+XG4gICAgICAgICAgICAgICAgICB7dXNlcj8udXNlcm5hbWU/LlswXT8udG9VcHBlckNhc2UoKSB8fCAnVSd9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC1zbSBmb250LW1lZGl1bVwiPnt1c2VyPy5kaXNwbGF5TmFtZSB8fCB1c2VyPy51c2VybmFtZX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgb25DbGljaz17bG9nb3V0fVxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwibWwtNCB0ZXh0LXNtIHRleHQtZ3JheS02MDAgaG92ZXI6dGV4dC1ncmF5LTkwMFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAg55m75Ye6XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uYXY+XG5cbiAgICAgIHsvKiBNYWluIENvbnRlbnQgKi99XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1heC13LTd4bCBteC1hdXRvIHB4LTQgc206cHgtNiBsZzpweC04IHB5LThcIj5cbiAgICAgICAgey8qIFdlbGNvbWUgU2VjdGlvbiAqL31cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJiZy13aGl0ZSByb3VuZGVkLXhsIHNoYWRvdy1zbSBwLTYgbWItNlwiPlxuICAgICAgICAgIDxoMiBjbGFzc05hbWU9XCJ0ZXh0LTJ4bCBmb250LWJvbGQgdGV4dC1ncmF5LTkwMCBtYi0yXCI+5q2h6L+O5Zue5L6G77yMe3VzZXI/LmRpc3BsYXlOYW1lIHx8IHVzZXI/LnVzZXJuYW1lfSEg8J+MnzwvaDI+XG4gICAgICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC1ncmF5LTYwMFwiPuS7iuWkqeaciSB7c3RhdHMudG9kYXlSZXZpZXd9IOWAi+WWruWtl+etieW+heikh+e/ku+8jOe5vOe6jOWKoOayue+8gTwvcD5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm10LTQgZmxleCBnYXAtM1wiPlxuICAgICAgICAgICAgPExpbmtcbiAgICAgICAgICAgICAgaHJlZj1cIi9sZWFyblwiXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT1cImJnLXByaW1hcnkgdGV4dC13aGl0ZSBweC02IHB5LTIgcm91bmRlZC1sZyBmb250LW1lZGl1bSBob3ZlcjpiZy1wcmltYXJ5LWhvdmVyIHRyYW5zaXRpb24tY29sb3JzXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAg6ZaL5aeL5LuK5pel5a2457+SXG4gICAgICAgICAgICA8L0xpbms+XG4gICAgICAgICAgICA8TGlua1xuICAgICAgICAgICAgICBocmVmPVwiL2dlbmVyYXRlXCJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiYm9yZGVyIGJvcmRlci1wcmltYXJ5IHRleHQtcHJpbWFyeSBweC02IHB5LTIgcm91bmRlZC1sZyBmb250LW1lZGl1bSBob3ZlcjpiZy1wcmltYXJ5LWxpZ2h0IHRyYW5zaXRpb24tY29sb3JzXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgQUkg55Sf5oiQ5paw6Kme5Y2hXG4gICAgICAgICAgICA8L0xpbms+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIHsvKiBTdGF0cyBHcmlkICovfVxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImdyaWQgZ3JpZC1jb2xzLTEgbWQ6Z3JpZC1jb2xzLTIgbGc6Z3JpZC1jb2xzLTQgZ2FwLTQgbWItOFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmctd2hpdGUgcm91bmRlZC14bCBzaGFkb3ctc20gcC02XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBtYi0yXCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtZ3JheS02MDAgdGV4dC1zbVwiPue4veWtuOe/kuWWruWtlzwvc3Bhbj5cbiAgICAgICAgICAgICAgPHN2ZyBjbGFzc05hbWU9XCJ3LTUgaC01IHRleHQtYmx1ZS01MDBcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIj5cbiAgICAgICAgICAgICAgICA8cGF0aCBzdHJva2VMaW5lY2FwPVwicm91bmRcIiBzdHJva2VMaW5lam9pbj1cInJvdW5kXCIgc3Ryb2tlV2lkdGg9ezJ9IGQ9XCJNMTIgNi4yNTN2MTNtMC0xM0MxMC44MzIgNS40NzcgOS4yNDYgNSA3LjUgNVM0LjE2OCA1LjQ3NyAzIDYuMjUzdjEzQzQuMTY4IDE4LjQ3NyA1Ljc1NCAxOCA3LjUgMThzMy4zMzIuNDc3IDQuNSAxLjI1M20wLTEzQzEzLjE2OCA1LjQ3NyAxNC43NTQgNSAxNi41IDVjMS43NDcgMCAzLjMzMi40NzcgNC41IDEuMjUzdjEzQzE5LjgzMiAxOC40NzcgMTguMjQ3IDE4IDE2LjUgMThjLTEuNzQ2IDAtMy4zMzIuNDc3LTQuNSAxLjI1M1wiIC8+XG4gICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtM3hsIGZvbnQtYm9sZCB0ZXh0LWdyYXktOTAwXCI+e3N0YXRzLnRvdGFsV29yZHN9PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtc20gdGV4dC1ncmVlbi02MDAgbXQtMVwiPit7c3RhdHMud29yZHNUb2RheX0g5LuK5pelPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJnLXdoaXRlIHJvdW5kZWQteGwgc2hhZG93LXNtIHAtNlwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gbWItMlwiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LWdyYXktNjAwIHRleHQtc21cIj7pgKPnuozlrbjnv5I8L3NwYW4+XG4gICAgICAgICAgICAgIDxzdmcgY2xhc3NOYW1lPVwidy01IGgtNSB0ZXh0LW9yYW5nZS01MDBcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIj5cbiAgICAgICAgICAgICAgICA8cGF0aCBzdHJva2VMaW5lY2FwPVwicm91bmRcIiBzdHJva2VMaW5lam9pbj1cInJvdW5kXCIgc3Ryb2tlV2lkdGg9ezJ9IGQ9XCJNMTcuNjU3IDE4LjY1N0E4IDggMCAwMTYuMzQzIDcuMzQzUzcgOSA5IDEwYzAtMiAuNS01IDIuOTg2LTdDMTQgNSAxNi4wOSA1Ljc3NyAxNy42NTYgNy4zNDNBNy45NzUgNy45NzUgMCAwMTIwIDEzYTcuOTc1IDcuOTc1IDAgMDEtMi4zNDMgNS42NTd6XCIgLz5cbiAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC0zeGwgZm9udC1ib2xkIHRleHQtZ3JheS05MDBcIj57c3RhdHMuc3RyZWFrfSDlpKk8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1zbSB0ZXh0LW9yYW5nZS02MDAgbXQtMVwiPvCflKUg5L+d5oyB6Imv5aW977yBPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJnLXdoaXRlIHJvdW5kZWQteGwgc2hhZG93LXNtIHAtNlwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gbWItMlwiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LWdyYXktNjAwIHRleHQtc21cIj7mraPnorrnjoc8L3NwYW4+XG4gICAgICAgICAgICAgIDxzdmcgY2xhc3NOYW1lPVwidy01IGgtNSB0ZXh0LWdyZWVuLTUwMFwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiPlxuICAgICAgICAgICAgICAgIDxwYXRoIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZUxpbmVqb2luPVwicm91bmRcIiBzdHJva2VXaWR0aD17Mn0gZD1cIk05IDEybDIgMiA0LTRtNiAyYTkgOSAwIDExLTE4IDAgOSA5IDAgMDExOCAwelwiIC8+XG4gICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtM3hsIGZvbnQtYm9sZCB0ZXh0LWdyYXktOTAwXCI+e3N0YXRzLmFjY3VyYWN5fSU8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1zbSB0ZXh0LWdyYXktNjAwIG10LTFcIj7kuIrlkaggODIlPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJnLXdoaXRlIHJvdW5kZWQteGwgc2hhZG93LXNtIHAtNlwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gbWItMlwiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LWdyYXktNjAwIHRleHQtc21cIj7ku4rml6XpgLLluqY8L3NwYW4+XG4gICAgICAgICAgICAgIDxzdmcgY2xhc3NOYW1lPVwidy01IGgtNSB0ZXh0LXB1cnBsZS01MDBcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIj5cbiAgICAgICAgICAgICAgICA8cGF0aCBzdHJva2VMaW5lY2FwPVwicm91bmRcIiBzdHJva2VMaW5lam9pbj1cInJvdW5kXCIgc3Ryb2tlV2lkdGg9ezJ9IGQ9XCJNMTMgN2g4bTAgMHY4bTAtOGwtOCA4LTQtNC02IDZcIiAvPlxuICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LTN4bCBmb250LWJvbGQgdGV4dC1ncmF5LTkwMFwiPntzdGF0cy5jb21wbGV0ZWRUb2RheX0ve3N0YXRzLnRvZGF5UmV2aWV3fTwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LWZ1bGwgYmctZ3JheS0yMDAgcm91bmRlZC1mdWxsIGgtMiBtdC0yXCI+XG4gICAgICAgICAgICAgIDxkaXYgXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiYmctcHVycGxlLTUwMCBoLTIgcm91bmRlZC1mdWxsXCJcbiAgICAgICAgICAgICAgICBzdHlsZT17eyB3aWR0aDogYCR7KHN0YXRzLmNvbXBsZXRlZFRvZGF5IC8gc3RhdHMudG9kYXlSZXZpZXcpICogMTAwfSVgIH19XG4gICAgICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICB7LyogQ29udGVudCBUYWJzICovfVxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJnLXdoaXRlIHJvdW5kZWQteGwgc2hhZG93LXNtXCI+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJib3JkZXItYiBib3JkZXItZ3JheS0yMDBcIj5cbiAgICAgICAgICAgIDxuYXYgY2xhc3NOYW1lPVwiLW1iLXB4IGZsZXggc3BhY2UteC04IHB4LTZcIiBhcmlhLWxhYmVsPVwiVGFic1wiPlxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gc2V0QWN0aXZlVGFiKCdvdmVydmlldycpfVxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17YHB5LTQgcHgtMSBib3JkZXItYi0yIGZvbnQtbWVkaXVtIHRleHQtc20gJHtcbiAgICAgICAgICAgICAgICAgIGFjdGl2ZVRhYiA9PT0gJ292ZXJ2aWV3J1xuICAgICAgICAgICAgICAgICAgICA/ICdib3JkZXItcHJpbWFyeSB0ZXh0LXByaW1hcnknXG4gICAgICAgICAgICAgICAgICAgIDogJ2JvcmRlci10cmFuc3BhcmVudCB0ZXh0LWdyYXktNTAwIGhvdmVyOnRleHQtZ3JheS03MDAgaG92ZXI6Ym9yZGVyLWdyYXktMzAwJ1xuICAgICAgICAgICAgICAgIH1gfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAg5pyA6L+R5a2457+SXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gc2V0QWN0aXZlVGFiKCdzZXRzJyl9XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgcHktNCBweC0xIGJvcmRlci1iLTIgZm9udC1tZWRpdW0gdGV4dC1zbSAke1xuICAgICAgICAgICAgICAgICAgYWN0aXZlVGFiID09PSAnc2V0cydcbiAgICAgICAgICAgICAgICAgICAgPyAnYm9yZGVyLXByaW1hcnkgdGV4dC1wcmltYXJ5J1xuICAgICAgICAgICAgICAgICAgICA6ICdib3JkZXItdHJhbnNwYXJlbnQgdGV4dC1ncmF5LTUwMCBob3Zlcjp0ZXh0LWdyYXktNzAwIGhvdmVyOmJvcmRlci1ncmF5LTMwMCdcbiAgICAgICAgICAgICAgICB9YH1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIOaIkeeahOWNoee1hFxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldEFjdGl2ZVRhYigncHJvZ3Jlc3MnKX1cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2BweS00IHB4LTEgYm9yZGVyLWItMiBmb250LW1lZGl1bSB0ZXh0LXNtICR7XG4gICAgICAgICAgICAgICAgICBhY3RpdmVUYWIgPT09ICdwcm9ncmVzcydcbiAgICAgICAgICAgICAgICAgICAgPyAnYm9yZGVyLXByaW1hcnkgdGV4dC1wcmltYXJ5J1xuICAgICAgICAgICAgICAgICAgICA6ICdib3JkZXItdHJhbnNwYXJlbnQgdGV4dC1ncmF5LTUwMCBob3Zlcjp0ZXh0LWdyYXktNzAwIGhvdmVyOmJvcmRlci1ncmF5LTMwMCdcbiAgICAgICAgICAgICAgICB9YH1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIOWtuOe/kue1seioiFxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvbmF2PlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwLTZcIj5cbiAgICAgICAgICAgIHthY3RpdmVUYWIgPT09ICdvdmVydmlldycgJiYgKFxuICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgIDxoMyBjbGFzc05hbWU9XCJ0ZXh0LWxnIGZvbnQtc2VtaWJvbGQgbWItNFwiPuacgOi/keWtuOe/kueahOWWruWtlzwvaDM+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJzcGFjZS15LTNcIj5cbiAgICAgICAgICAgICAgICAgIHtyZWNlbnRXb3Jkcy5tYXAod29yZCA9PiAoXG4gICAgICAgICAgICAgICAgICAgIDxkaXYga2V5PXt3b3JkLmlkfSBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gcC00IGJvcmRlciByb3VuZGVkLWxnIGhvdmVyOmJnLWdyYXktNTBcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIHNwYWNlLXgtNFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LTIgaC0yIHJvdW5kZWQtZnVsbCBiZy1ncmVlbi01MDBcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZm9udC1zZW1pYm9sZFwiPnt3b3JkLndvcmR9PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1zbSB0ZXh0LWdyYXktNjAwXCI+e3dvcmQudHJhbnNsYXRpb259PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2BweC0zIHB5LTEgcm91bmRlZC1mdWxsIHRleHQteHMgZm9udC1tZWRpdW0gJHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdvcmQuc3RhdHVzID09PSAnbGVhcm5lZCcgPyAnYmctZ3JlZW4tMTAwIHRleHQtZ3JlZW4tODAwJyA6XG4gICAgICAgICAgICAgICAgICAgICAgICB3b3JkLnN0YXR1cyA9PT0gJ2xlYXJuaW5nJyA/ICdiZy15ZWxsb3ctMTAwIHRleHQteWVsbG93LTgwMCcgOlxuICAgICAgICAgICAgICAgICAgICAgICAgJ2JnLWdyYXktMTAwIHRleHQtZ3JheS04MDAnXG4gICAgICAgICAgICAgICAgICAgICAgfWB9PlxuICAgICAgICAgICAgICAgICAgICAgICAge3dvcmQuc3RhdHVzID09PSAnbGVhcm5lZCcgPyAn5bey5o6M5o+hJyA6IFxuICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmQuc3RhdHVzID09PSAnbGVhcm5pbmcnID8gJ+WtuOe/kuS4rScgOiAn5paw6KmeJ31cbiAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAge2FjdGl2ZVRhYiA9PT0gJ3NldHMnICYmIChcbiAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8aDMgY2xhc3NOYW1lPVwidGV4dC1sZyBmb250LXNlbWlib2xkIG1iLTRcIj7miJHnmoTljaHntYQ8L2gzPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZ3JpZCBncmlkLWNvbHMtMSBtZDpncmlkLWNvbHMtMiBsZzpncmlkLWNvbHMtMyBnYXAtNFwiPlxuICAgICAgICAgICAgICAgICAge2NhcmRTZXRzLm1hcChzZXQgPT4gKFxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGtleT17c2V0LmlkfSBjbGFzc05hbWU9XCJib3JkZXIgcm91bmRlZC1sZyBwLTQgaG92ZXI6c2hhZG93LW1kIHRyYW5zaXRpb24tc2hhZG93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGg0IGNsYXNzTmFtZT1cImZvbnQtc2VtaWJvbGQgbWItMlwiPntzZXQubmFtZX08L2g0PlxuICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQtc20gdGV4dC1ncmF5LTYwMCBtYi0zXCI+e3NldC5jb3VudH0g5YCL5Zau5a2XPC9wPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy1mdWxsIGJnLWdyYXktMjAwIHJvdW5kZWQtZnVsbCBoLTIgbWItM1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiYmctcHJpbWFyeSBoLTIgcm91bmRlZC1mdWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3sgd2lkdGg6IGAke3NldC5wcm9ncmVzc30lYCB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDxMaW5rXG4gICAgICAgICAgICAgICAgICAgICAgICBocmVmPXtgL2ZsYXNoY2FyZHMvJHtzZXQuaWR9YH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInRleHQtcHJpbWFyeSB0ZXh0LXNtIGZvbnQtbWVkaXVtIGhvdmVyOnRleHQtcHJpbWFyeS1ob3ZlclwiXG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAg57m857qM5a2457+SIOKGklxuICAgICAgICAgICAgICAgICAgICAgIDwvTGluaz5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICApfVxuXG4gICAgICAgICAgICB7YWN0aXZlVGFiID09PSAncHJvZ3Jlc3MnICYmIChcbiAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8aDMgY2xhc3NOYW1lPVwidGV4dC1sZyBmb250LXNlbWlib2xkIG1iLTRcIj7lrbjnv5LntbHoqIg8L2gzPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmctZ3JheS01MCByb3VuZGVkLWxnIHAtNlwiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJncmlkIGdyaWQtY29scy0yIG1kOmdyaWQtY29scy00IGdhcC02XCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LXNtIHRleHQtZ3JheS02MDBcIj7mnKzlkajlrbjnv5I8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtMnhsIGZvbnQtYm9sZCBtdC0xXCI+ODkg5YCLPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1zbSB0ZXh0LWdyYXktNjAwXCI+5pys5pyI5a2457+SPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LTJ4bCBmb250LWJvbGQgbXQtMVwiPjMxMiDlgIs8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LXNtIHRleHQtZ3JheS02MDBcIj7lubPlnYfmr4/ml6U8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtMnhsIGZvbnQtYm9sZCBtdC0xXCI+MTUg5YCLPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1zbSB0ZXh0LWdyYXktNjAwXCI+5pyA5L2z57SA6YyEPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LTJ4bCBmb250LWJvbGQgbXQtMVwiPjMyIOWAizwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtdC02IHB0LTYgYm9yZGVyLXRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LXNtIHRleHQtZ3JheS02MDAgbWItMlwiPuavj+aXpeWtuOe/kui2qOWLou+8iOmBjuWOuzflpKnvvIk8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWVuZCBzcGFjZS14LTIgaC0yMFwiPlxuICAgICAgICAgICAgICAgICAgICAgIHtbMTUsIDIwLCAxOCwgMjUsIDIyLCAzMCwgMTJdLm1hcCgodmFsdWUsIGluZGV4KSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGtleT17aW5kZXh9IGNsYXNzTmFtZT1cImZsZXgtMVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImJnLXByaW1hcnkgcm91bmRlZC10XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17eyBoZWlnaHQ6IGAkeyh2YWx1ZSAvIDMwKSAqIDEwMH0lYCB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICApfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICApXG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIERhc2hib2FyZFBhZ2UoKSB7XG4gIHJldHVybiAoXG4gICAgPFByb3RlY3RlZFJvdXRlPlxuICAgICAgPERhc2hib2FyZENvbnRlbnQgLz5cbiAgICA8L1Byb3RlY3RlZFJvdXRlPlxuICApXG59Il0sIm5hbWVzIjpbIkxpbmsiLCJ1c2VTdGF0ZSIsIlByb3RlY3RlZFJvdXRlIiwidXNlQXV0aCIsIkRhc2hib2FyZENvbnRlbnQiLCJhY3RpdmVUYWIiLCJzZXRBY3RpdmVUYWIiLCJ1c2VyIiwibG9nb3V0Iiwic3RhdHMiLCJ0b3RhbFdvcmRzIiwid29yZHNUb2RheSIsInN0cmVhayIsImFjY3VyYWN5IiwidG9kYXlSZXZpZXciLCJjb21wbGV0ZWRUb2RheSIsInJlY2VudFdvcmRzIiwiaWQiLCJ3b3JkIiwidHJhbnNsYXRpb24iLCJzdGF0dXMiLCJjYXJkU2V0cyIsIm5hbWUiLCJjb3VudCIsInByb2dyZXNzIiwiZGl2IiwiY2xhc3NOYW1lIiwibmF2IiwiaDEiLCJocmVmIiwiYnV0dG9uIiwic3ZnIiwiZmlsbCIsInN0cm9rZSIsInZpZXdCb3giLCJwYXRoIiwic3Ryb2tlTGluZWNhcCIsInN0cm9rZUxpbmVqb2luIiwic3Ryb2tlV2lkdGgiLCJkIiwidXNlcm5hbWUiLCJ0b1VwcGVyQ2FzZSIsInNwYW4iLCJkaXNwbGF5TmFtZSIsIm9uQ2xpY2siLCJoMiIsInAiLCJzdHlsZSIsIndpZHRoIiwiYXJpYS1sYWJlbCIsImgzIiwibWFwIiwic2V0IiwiaDQiLCJ2YWx1ZSIsImluZGV4IiwiaGVpZ2h0IiwiRGFzaGJvYXJkUGFnZSJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./app/dashboard/page.tsx\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ DashboardPage)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react-jsx-dev-runtime.js\");\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! next/link */ \"(ssr)/./node_modules/next/dist/client/app-dir/link.js\");\n/* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(next_link__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _components_ProtectedRoute__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/components/ProtectedRoute */ \"(ssr)/./components/ProtectedRoute.tsx\");\n/* harmony import */ var _components_Navigation__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/components/Navigation */ \"(ssr)/./components/Navigation.tsx\");\n/* harmony import */ var _contexts_AuthContext__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/contexts/AuthContext */ \"(ssr)/./contexts/AuthContext.tsx\");\n/* __next_internal_client_entry_do_not_use__ default auto */ \n\n\n\n\n\nfunction DashboardContent() {\n const [activeTab, setActiveTab] = (0,react__WEBPACK_IMPORTED_MODULE_2__.useState)('overview');\n const { user, logout } = (0,_contexts_AuthContext__WEBPACK_IMPORTED_MODULE_5__.useAuth)();\n // Mock data\n const stats = {\n totalWords: 234,\n wordsToday: 12,\n streak: 7,\n accuracy: 85,\n todayReview: 23,\n completedToday: 15\n };\n const recentWords = [\n {\n id: 1,\n word: 'negotiate',\n translation: '協商',\n status: 'learned'\n },\n {\n id: 2,\n word: 'accomplish',\n translation: '完成',\n status: 'learning'\n },\n {\n id: 3,\n word: 'perspective',\n translation: '觀點',\n status: 'new'\n },\n {\n id: 4,\n word: 'substantial',\n translation: '大量的',\n status: 'learned'\n }\n ];\n const cardSets = [\n {\n id: 1,\n name: '美劇經典台詞',\n count: 45,\n progress: 60\n },\n {\n id: 2,\n name: '商務英文必備',\n count: 30,\n progress: 30\n },\n {\n id: 3,\n name: '日常對話',\n count: 25,\n progress: 80\n }\n ];\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"min-h-screen bg-gray-50\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_Navigation__WEBPACK_IMPORTED_MODULE_4__.Navigation, {}, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 39,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-8\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-white rounded-xl shadow-sm p-6 mb-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h2\", {\n className: \"text-2xl font-bold text-gray-900 mb-2\",\n children: [\n \"歡迎回來,\",\n user?.displayName || user?.username,\n \"! \\uD83C\\uDF1F\"\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 45,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-gray-600\",\n children: [\n \"今天有 \",\n stats.todayReview,\n \" 個單字等待複習,繼續加油!\"\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 46,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mt-4 flex gap-3\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_link__WEBPACK_IMPORTED_MODULE_1___default()), {\n href: \"/learn\",\n className: \"bg-primary text-white px-6 py-2 rounded-lg font-medium hover:bg-primary-hover transition-colors\",\n children: \"開始今日學習\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 48,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_link__WEBPACK_IMPORTED_MODULE_1___default()), {\n href: \"/generate\",\n className: \"border border-primary text-primary px-6 py-2 rounded-lg font-medium hover:bg-primary-light transition-colors\",\n children: \"AI 生成新詞卡\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 54,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 47,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 44,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-4 mb-8\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-white rounded-xl shadow-sm p-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center justify-between mb-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-gray-600 text-sm\",\n children: \"總學習單字\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 67,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n className: \"w-5 h-5 text-blue-500\",\n fill: \"none\",\n stroke: \"currentColor\",\n viewBox: \"0 0 24 24\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n d: \"M12 6.253v13m0-13C10.832 5.477 9.246 5 7.5 5S4.168 5.477 3 6.253v13C4.168 18.477 5.754 18 7.5 18s3.332.477 4.5 1.253m0-13C13.168 5.477 14.754 5 16.5 5c1.747 0 3.332.477 4.5 1.253v13C19.832 18.477 18.247 18 16.5 18c-1.746 0-3.332.477-4.5 1.253\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 69,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 68,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 66,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-3xl font-bold text-gray-900\",\n children: stats.totalWords\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 72,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm text-green-600 mt-1\",\n children: [\n \"+\",\n stats.wordsToday,\n \" 今日\"\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 73,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 65,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-white rounded-xl shadow-sm p-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center justify-between mb-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-gray-600 text-sm\",\n children: \"連續學習\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 78,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n className: \"w-5 h-5 text-orange-500\",\n fill: \"none\",\n stroke: \"currentColor\",\n viewBox: \"0 0 24 24\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n d: \"M17.657 18.657A8 8 0 016.343 7.343S7 9 9 10c0-2 .5-5 2.986-7C14 5 16.09 5.777 17.656 7.343A7.975 7.975 0 0120 13a7.975 7.975 0 01-2.343 5.657z\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 80,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 79,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 77,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-3xl font-bold text-gray-900\",\n children: [\n stats.streak,\n \" 天\"\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 83,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm text-orange-600 mt-1\",\n children: \"\\uD83D\\uDD25 保持良好!\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 84,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 76,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-white rounded-xl shadow-sm p-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center justify-between mb-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-gray-600 text-sm\",\n children: \"正確率\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 89,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n className: \"w-5 h-5 text-green-500\",\n fill: \"none\",\n stroke: \"currentColor\",\n viewBox: \"0 0 24 24\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n d: \"M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 91,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 90,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 88,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-3xl font-bold text-gray-900\",\n children: [\n stats.accuracy,\n \"%\"\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 94,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm text-gray-600 mt-1\",\n children: \"上周 82%\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 95,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 87,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-white rounded-xl shadow-sm p-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center justify-between mb-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-gray-600 text-sm\",\n children: \"今日進度\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 100,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n className: \"w-5 h-5 text-purple-500\",\n fill: \"none\",\n stroke: \"currentColor\",\n viewBox: \"0 0 24 24\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n d: \"M13 7h8m0 0v8m0-8l-8 8-4-4-6 6\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 102,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 101,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 99,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-3xl font-bold text-gray-900\",\n children: [\n stats.completedToday,\n \"/\",\n stats.todayReview\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 105,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full bg-gray-200 rounded-full h-2 mt-2\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-purple-500 h-2 rounded-full\",\n style: {\n width: `${stats.completedToday / stats.todayReview * 100}%`\n }\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 107,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 106,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 98,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 64,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-white rounded-xl shadow-sm\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"border-b border-gray-200\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"nav\", {\n className: \"-mb-px flex space-x-8 px-6\",\n \"aria-label\": \"Tabs\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>setActiveTab('overview'),\n className: `py-4 px-1 border-b-2 font-medium text-sm ${activeTab === 'overview' ? 'border-primary text-primary' : 'border-transparent text-gray-500 hover:text-gray-700 hover:border-gray-300'}`,\n children: \"最近學習\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 119,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>setActiveTab('sets'),\n className: `py-4 px-1 border-b-2 font-medium text-sm ${activeTab === 'sets' ? 'border-primary text-primary' : 'border-transparent text-gray-500 hover:text-gray-700 hover:border-gray-300'}`,\n children: \"我的卡組\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 129,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>setActiveTab('progress'),\n className: `py-4 px-1 border-b-2 font-medium text-sm ${activeTab === 'progress' ? 'border-primary text-primary' : 'border-transparent text-gray-500 hover:text-gray-700 hover:border-gray-300'}`,\n children: \"學習統計\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 139,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 118,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 117,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"p-6\",\n children: [\n activeTab === 'overview' && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h3\", {\n className: \"text-lg font-semibold mb-4\",\n children: \"最近學習的單字\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 155,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-y-3\",\n children: recentWords.map((word)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center justify-between p-4 border rounded-lg hover:bg-gray-50\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center space-x-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-2 h-2 rounded-full bg-green-500\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 160,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"font-semibold\",\n children: word.word\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 162,\n columnNumber: 27\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm text-gray-600\",\n children: word.translation\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 163,\n columnNumber: 27\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 161,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 159,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: `px-3 py-1 rounded-full text-xs font-medium ${word.status === 'learned' ? 'bg-green-100 text-green-800' : word.status === 'learning' ? 'bg-yellow-100 text-yellow-800' : 'bg-gray-100 text-gray-800'}`,\n children: word.status === 'learned' ? '已掌握' : word.status === 'learning' ? '學習中' : '新詞'\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 166,\n columnNumber: 23\n }, this)\n ]\n }, word.id, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 158,\n columnNumber: 21\n }, this))\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 156,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 154,\n columnNumber: 15\n }, this),\n activeTab === 'sets' && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h3\", {\n className: \"text-lg font-semibold mb-4\",\n children: \"我的卡組\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 182,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4\",\n children: cardSets.map((set)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"border rounded-lg p-4 hover:shadow-md transition-shadow\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h4\", {\n className: \"font-semibold mb-2\",\n children: set.name\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 186,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-sm text-gray-600 mb-3\",\n children: [\n set.count,\n \" 個單字\"\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 187,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full bg-gray-200 rounded-full h-2 mb-3\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-primary h-2 rounded-full\",\n style: {\n width: `${set.progress}%`\n }\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 189,\n columnNumber: 25\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 188,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_link__WEBPACK_IMPORTED_MODULE_1___default()), {\n href: `/flashcards/${set.id}`,\n className: \"text-primary text-sm font-medium hover:text-primary-hover\",\n children: \"繼續學習 →\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 194,\n columnNumber: 23\n }, this)\n ]\n }, set.id, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 185,\n columnNumber: 21\n }, this))\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 183,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 181,\n columnNumber: 15\n }, this),\n activeTab === 'progress' && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h3\", {\n className: \"text-lg font-semibold mb-4\",\n children: \"學習統計\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 208,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-gray-50 rounded-lg p-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid grid-cols-2 md:grid-cols-4 gap-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm text-gray-600\",\n children: \"本周學習\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 212,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-2xl font-bold mt-1\",\n children: \"89 個\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 213,\n columnNumber: 23\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 211,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm text-gray-600\",\n children: \"本月學習\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 216,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-2xl font-bold mt-1\",\n children: \"312 個\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 217,\n columnNumber: 23\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 215,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm text-gray-600\",\n children: \"平均每日\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 220,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-2xl font-bold mt-1\",\n children: \"15 個\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 221,\n columnNumber: 23\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 219,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm text-gray-600\",\n children: \"最佳紀錄\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 224,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-2xl font-bold mt-1\",\n children: \"32 個\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 225,\n columnNumber: 23\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 223,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 210,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mt-6 pt-6 border-t\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm text-gray-600 mb-2\",\n children: \"每日學習趨勢(過去7天)\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 229,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-end space-x-2 h-20\",\n children: [\n 15,\n 20,\n 18,\n 25,\n 22,\n 30,\n 12\n ].map((value, index)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-primary rounded-t\",\n style: {\n height: `${value / 30 * 100}%`\n }\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 233,\n columnNumber: 27\n }, this)\n }, index, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 232,\n columnNumber: 25\n }, this))\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 230,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 228,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 209,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 207,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 152,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 116,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 42,\n columnNumber: 7\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 37,\n columnNumber: 5\n }, this);\n}\nfunction DashboardPage() {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ProtectedRoute__WEBPACK_IMPORTED_MODULE_3__.ProtectedRoute, {\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(DashboardContent, {}, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 254,\n columnNumber: 7\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 253,\n columnNumber: 5\n }, this);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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O2tGQUNDLDhEQUFDQTt3RUFBSUMsV0FBVTtrRkFBd0I7Ozs7OztrRkFDdkMsOERBQUNEO3dFQUFJQyxXQUFVO2tGQUEwQjs7Ozs7Ozs7Ozs7OzBFQUUzQyw4REFBQ0Q7O2tGQUNDLDhEQUFDQTt3RUFBSUMsV0FBVTtrRkFBd0I7Ozs7OztrRkFDdkMsOERBQUNEO3dFQUFJQyxXQUFVO2tGQUEwQjs7Ozs7Ozs7Ozs7Ozs7Ozs7O2tFQUc3Qyw4REFBQ0Q7d0RBQUlDLFdBQVU7OzBFQUNiLDhEQUFDRDtnRUFBSUMsV0FBVTswRUFBNkI7Ozs7OzswRUFDNUMsOERBQUNEO2dFQUFJQyxXQUFVOzBFQUNaO29FQUFDO29FQUFJO29FQUFJO29FQUFJO29FQUFJO29FQUFJO29FQUFJO2lFQUFHLENBQUN1QixHQUFHLENBQUMsQ0FBQ0csT0FBT0Msc0JBQ3hDLDhEQUFDNUI7d0VBQWdCQyxXQUFVO2tGQUN6Qiw0RUFBQ0Q7NEVBQ0NDLFdBQVU7NEVBQ1ZnQixPQUFPO2dGQUFFWSxRQUFRLEdBQUcsUUFBUyxLQUFNLElBQUksQ0FBQyxDQUFDOzRFQUFDOzs7Ozs7dUVBSHBDRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWlCbEM7QUFFZSxTQUFTRTtJQUN0QixxQkFDRSw4REFBQ3RELHNFQUFjQTtrQkFDYiw0RUFBQ0c7Ozs7Ozs7Ozs7QUFHUCIsInNvdXJjZXMiOlsiL1VzZXJzL2pldHRjaGVuZzEwMTgvY29kZS9kcmFtYWxpbmctdm9jYWItbGVhcm5pbmcvZnJvbnRlbmQvYXBwL2Rhc2hib2FyZC9wYWdlLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIGNsaWVudCdcblxuaW1wb3J0IExpbmsgZnJvbSAnbmV4dC9saW5rJ1xuaW1wb3J0IHsgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IFByb3RlY3RlZFJvdXRlIH0gZnJvbSAnQC9jb21wb25lbnRzL1Byb3RlY3RlZFJvdXRlJ1xuaW1wb3J0IHsgTmF2aWdhdGlvbiB9IGZyb20gJ0AvY29tcG9uZW50cy9OYXZpZ2F0aW9uJ1xuaW1wb3J0IHsgdXNlQXV0aCB9IGZyb20gJ0AvY29udGV4dHMvQXV0aENvbnRleHQnXG5cbmZ1bmN0aW9uIERhc2hib2FyZENvbnRlbnQoKSB7XG4gIGNvbnN0IFthY3RpdmVUYWIsIHNldEFjdGl2ZVRhYl0gPSB1c2VTdGF0ZSgnb3ZlcnZpZXcnKVxuICBjb25zdCB7IHVzZXIsIGxvZ291dCB9ID0gdXNlQXV0aCgpXG5cbiAgLy8gTW9jayBkYXRhXG4gIGNvbnN0IHN0YXRzID0ge1xuICAgIHRvdGFsV29yZHM6IDIzNCxcbiAgICB3b3Jkc1RvZGF5OiAxMixcbiAgICBzdHJlYWs6IDcsXG4gICAgYWNjdXJhY3k6IDg1LFxuICAgIHRvZGF5UmV2aWV3OiAyMyxcbiAgICBjb21wbGV0ZWRUb2RheTogMTVcbiAgfVxuXG4gIGNvbnN0IHJlY2VudFdvcmRzID0gW1xuICAgIHsgaWQ6IDEsIHdvcmQ6ICduZWdvdGlhdGUnLCB0cmFuc2xhdGlvbjogJ+WNlOWVhicsIHN0YXR1czogJ2xlYXJuZWQnIH0sXG4gICAgeyBpZDogMiwgd29yZDogJ2FjY29tcGxpc2gnLCB0cmFuc2xhdGlvbjogJ+WujOaIkCcsIHN0YXR1czogJ2xlYXJuaW5nJyB9LFxuICAgIHsgaWQ6IDMsIHdvcmQ6ICdwZXJzcGVjdGl2ZScsIHRyYW5zbGF0aW9uOiAn6KeA6bueJywgc3RhdHVzOiAnbmV3JyB9LFxuICAgIHsgaWQ6IDQsIHdvcmQ6ICdzdWJzdGFudGlhbCcsIHRyYW5zbGF0aW9uOiAn5aSn6YeP55qEJywgc3RhdHVzOiAnbGVhcm5lZCcgfSxcbiAgXVxuXG4gIGNvbnN0IGNhcmRTZXRzID0gW1xuICAgIHsgaWQ6IDEsIG5hbWU6ICfnvo7liofntpPlhbjlj7DoqZ4nLCBjb3VudDogNDUsIHByb2dyZXNzOiA2MCB9LFxuICAgIHsgaWQ6IDIsIG5hbWU6ICfllYbli5noi7Hmloflv4XlgpknLCBjb3VudDogMzAsIHByb2dyZXNzOiAzMCB9LFxuICAgIHsgaWQ6IDMsIG5hbWU6ICfml6XluLjlsI3oqbEnLCBjb3VudDogMjUsIHByb2dyZXNzOiA4MCB9LFxuICBdXG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cIm1pbi1oLXNjcmVlbiBiZy1ncmF5LTUwXCI+XG4gICAgICB7LyogTmF2aWdhdGlvbiAqL31cbiAgICAgIDxOYXZpZ2F0aW9uIC8+XG5cbiAgICAgIHsvKiBNYWluIENvbnRlbnQgKi99XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1heC13LTd4bCBteC1hdXRvIHB4LTQgc206cHgtNiBsZzpweC04IHB5LThcIj5cbiAgICAgICAgey8qIFdlbGNvbWUgU2VjdGlvbiAqL31cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJiZy13aGl0ZSByb3VuZGVkLXhsIHNoYWRvdy1zbSBwLTYgbWItNlwiPlxuICAgICAgICAgIDxoMiBjbGFzc05hbWU9XCJ0ZXh0LTJ4bCBmb250LWJvbGQgdGV4dC1ncmF5LTkwMCBtYi0yXCI+5q2h6L+O5Zue5L6G77yMe3VzZXI/LmRpc3BsYXlOYW1lIHx8IHVzZXI/LnVzZXJuYW1lfSEg8J+MnzwvaDI+XG4gICAgICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC1ncmF5LTYwMFwiPuS7iuWkqeaciSB7c3RhdHMudG9kYXlSZXZpZXd9IOWAi+WWruWtl+etieW+heikh+e/ku+8jOe5vOe6jOWKoOayue+8gTwvcD5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm10LTQgZmxleCBnYXAtM1wiPlxuICAgICAgICAgICAgPExpbmtcbiAgICAgICAgICAgICAgaHJlZj1cIi9sZWFyblwiXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT1cImJnLXByaW1hcnkgdGV4dC13aGl0ZSBweC02IHB5LTIgcm91bmRlZC1sZyBmb250LW1lZGl1bSBob3ZlcjpiZy1wcmltYXJ5LWhvdmVyIHRyYW5zaXRpb24tY29sb3JzXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAg6ZaL5aeL5LuK5pel5a2457+SXG4gICAgICAgICAgICA8L0xpbms+XG4gICAgICAgICAgICA8TGlua1xuICAgICAgICAgICAgICBocmVmPVwiL2dlbmVyYXRlXCJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiYm9yZGVyIGJvcmRlci1wcmltYXJ5IHRleHQtcHJpbWFyeSBweC02IHB5LTIgcm91bmRlZC1sZyBmb250LW1lZGl1bSBob3ZlcjpiZy1wcmltYXJ5LWxpZ2h0IHRyYW5zaXRpb24tY29sb3JzXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgQUkg55Sf5oiQ5paw6Kme5Y2hXG4gICAgICAgICAgICA8L0xpbms+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIHsvKiBTdGF0cyBHcmlkICovfVxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImdyaWQgZ3JpZC1jb2xzLTEgbWQ6Z3JpZC1jb2xzLTIgbGc6Z3JpZC1jb2xzLTQgZ2FwLTQgbWItOFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmctd2hpdGUgcm91bmRlZC14bCBzaGFkb3ctc20gcC02XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBtYi0yXCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtZ3JheS02MDAgdGV4dC1zbVwiPue4veWtuOe/kuWWruWtlzwvc3Bhbj5cbiAgICAgICAgICAgICAgPHN2ZyBjbGFzc05hbWU9XCJ3LTUgaC01IHRleHQtYmx1ZS01MDBcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIj5cbiAgICAgICAgICAgICAgICA8cGF0aCBzdHJva2VMaW5lY2FwPVwicm91bmRcIiBzdHJva2VMaW5lam9pbj1cInJvdW5kXCIgc3Ryb2tlV2lkdGg9ezJ9IGQ9XCJNMTIgNi4yNTN2MTNtMC0xM0MxMC44MzIgNS40NzcgOS4yNDYgNSA3LjUgNVM0LjE2OCA1LjQ3NyAzIDYuMjUzdjEzQzQuMTY4IDE4LjQ3NyA1Ljc1NCAxOCA3LjUgMThzMy4zMzIuNDc3IDQuNSAxLjI1M20wLTEzQzEzLjE2OCA1LjQ3NyAxNC43NTQgNSAxNi41IDVjMS43NDcgMCAzLjMzMi40NzcgNC41IDEuMjUzdjEzQzE5LjgzMiAxOC40NzcgMTguMjQ3IDE4IDE2LjUgMThjLTEuNzQ2IDAtMy4zMzIuNDc3LTQuNSAxLjI1M1wiIC8+XG4gICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtM3hsIGZvbnQtYm9sZCB0ZXh0LWdyYXktOTAwXCI+e3N0YXRzLnRvdGFsV29yZHN9PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtc20gdGV4dC1ncmVlbi02MDAgbXQtMVwiPit7c3RhdHMud29yZHNUb2RheX0g5LuK5pelPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJnLXdoaXRlIHJvdW5kZWQteGwgc2hhZG93LXNtIHAtNlwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gbWItMlwiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LWdyYXktNjAwIHRleHQtc21cIj7pgKPnuozlrbjnv5I8L3NwYW4+XG4gICAgICAgICAgICAgIDxzdmcgY2xhc3NOYW1lPVwidy01IGgtNSB0ZXh0LW9yYW5nZS01MDBcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIj5cbiAgICAgICAgICAgICAgICA8cGF0aCBzdHJva2VMaW5lY2FwPVwicm91bmRcIiBzdHJva2VMaW5lam9pbj1cInJvdW5kXCIgc3Ryb2tlV2lkdGg9ezJ9IGQ9XCJNMTcuNjU3IDE4LjY1N0E4IDggMCAwMTYuMzQzIDcuMzQzUzcgOSA5IDEwYzAtMiAuNS01IDIuOTg2LTdDMTQgNSAxNi4wOSA1Ljc3NyAxNy42NTYgNy4zNDNBNy45NzUgNy45NzUgMCAwMTIwIDEzYTcuOTc1IDcuOTc1IDAgMDEtMi4zNDMgNS42NTd6XCIgLz5cbiAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC0zeGwgZm9udC1ib2xkIHRleHQtZ3JheS05MDBcIj57c3RhdHMuc3RyZWFrfSDlpKk8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1zbSB0ZXh0LW9yYW5nZS02MDAgbXQtMVwiPvCflKUg5L+d5oyB6Imv5aW977yBPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJnLXdoaXRlIHJvdW5kZWQteGwgc2hhZG93LXNtIHAtNlwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gbWItMlwiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LWdyYXktNjAwIHRleHQtc21cIj7mraPnorrnjoc8L3NwYW4+XG4gICAgICAgICAgICAgIDxzdmcgY2xhc3NOYW1lPVwidy01IGgtNSB0ZXh0LWdyZWVuLTUwMFwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiPlxuICAgICAgICAgICAgICAgIDxwYXRoIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZUxpbmVqb2luPVwicm91bmRcIiBzdHJva2VXaWR0aD17Mn0gZD1cIk05IDEybDIgMiA0LTRtNiAyYTkgOSAwIDExLTE4IDAgOSA5IDAgMDExOCAwelwiIC8+XG4gICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtM3hsIGZvbnQtYm9sZCB0ZXh0LWdyYXktOTAwXCI+e3N0YXRzLmFjY3VyYWN5fSU8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1zbSB0ZXh0LWdyYXktNjAwIG10LTFcIj7kuIrlkaggODIlPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJnLXdoaXRlIHJvdW5kZWQteGwgc2hhZG93LXNtIHAtNlwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gbWItMlwiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LWdyYXktNjAwIHRleHQtc21cIj7ku4rml6XpgLLluqY8L3NwYW4+XG4gICAgICAgICAgICAgIDxzdmcgY2xhc3NOYW1lPVwidy01IGgtNSB0ZXh0LXB1cnBsZS01MDBcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIj5cbiAgICAgICAgICAgICAgICA8cGF0aCBzdHJva2VMaW5lY2FwPVwicm91bmRcIiBzdHJva2VMaW5lam9pbj1cInJvdW5kXCIgc3Ryb2tlV2lkdGg9ezJ9IGQ9XCJNMTMgN2g4bTAgMHY4bTAtOGwtOCA4LTQtNC02IDZcIiAvPlxuICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LTN4bCBmb250LWJvbGQgdGV4dC1ncmF5LTkwMFwiPntzdGF0cy5jb21wbGV0ZWRUb2RheX0ve3N0YXRzLnRvZGF5UmV2aWV3fTwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LWZ1bGwgYmctZ3JheS0yMDAgcm91bmRlZC1mdWxsIGgtMiBtdC0yXCI+XG4gICAgICAgICAgICAgIDxkaXYgXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiYmctcHVycGxlLTUwMCBoLTIgcm91bmRlZC1mdWxsXCJcbiAgICAgICAgICAgICAgICBzdHlsZT17eyB3aWR0aDogYCR7KHN0YXRzLmNvbXBsZXRlZFRvZGF5IC8gc3RhdHMudG9kYXlSZXZpZXcpICogMTAwfSVgIH19XG4gICAgICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICB7LyogQ29udGVudCBUYWJzICovfVxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJnLXdoaXRlIHJvdW5kZWQteGwgc2hhZG93LXNtXCI+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJib3JkZXItYiBib3JkZXItZ3JheS0yMDBcIj5cbiAgICAgICAgICAgIDxuYXYgY2xhc3NOYW1lPVwiLW1iLXB4IGZsZXggc3BhY2UteC04IHB4LTZcIiBhcmlhLWxhYmVsPVwiVGFic1wiPlxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gc2V0QWN0aXZlVGFiKCdvdmVydmlldycpfVxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17YHB5LTQgcHgtMSBib3JkZXItYi0yIGZvbnQtbWVkaXVtIHRleHQtc20gJHtcbiAgICAgICAgICAgICAgICAgIGFjdGl2ZVRhYiA9PT0gJ292ZXJ2aWV3J1xuICAgICAgICAgICAgICAgICAgICA/ICdib3JkZXItcHJpbWFyeSB0ZXh0LXByaW1hcnknXG4gICAgICAgICAgICAgICAgICAgIDogJ2JvcmRlci10cmFuc3BhcmVudCB0ZXh0LWdyYXktNTAwIGhvdmVyOnRleHQtZ3JheS03MDAgaG92ZXI6Ym9yZGVyLWdyYXktMzAwJ1xuICAgICAgICAgICAgICAgIH1gfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAg5pyA6L+R5a2457+SXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gc2V0QWN0aXZlVGFiKCdzZXRzJyl9XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgcHktNCBweC0xIGJvcmRlci1iLTIgZm9udC1tZWRpdW0gdGV4dC1zbSAke1xuICAgICAgICAgICAgICAgICAgYWN0aXZlVGFiID09PSAnc2V0cydcbiAgICAgICAgICAgICAgICAgICAgPyAnYm9yZGVyLXByaW1hcnkgdGV4dC1wcmltYXJ5J1xuICAgICAgICAgICAgICAgICAgICA6ICdib3JkZXItdHJhbnNwYXJlbnQgdGV4dC1ncmF5LTUwMCBob3Zlcjp0ZXh0LWdyYXktNzAwIGhvdmVyOmJvcmRlci1ncmF5LTMwMCdcbiAgICAgICAgICAgICAgICB9YH1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIOaIkeeahOWNoee1hFxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldEFjdGl2ZVRhYigncHJvZ3Jlc3MnKX1cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2BweS00IHB4LTEgYm9yZGVyLWItMiBmb250LW1lZGl1bSB0ZXh0LXNtICR7XG4gICAgICAgICAgICAgICAgICBhY3RpdmVUYWIgPT09ICdwcm9ncmVzcydcbiAgICAgICAgICAgICAgICAgICAgPyAnYm9yZGVyLXByaW1hcnkgdGV4dC1wcmltYXJ5J1xuICAgICAgICAgICAgICAgICAgICA6ICdib3JkZXItdHJhbnNwYXJlbnQgdGV4dC1ncmF5LTUwMCBob3Zlcjp0ZXh0LWdyYXktNzAwIGhvdmVyOmJvcmRlci1ncmF5LTMwMCdcbiAgICAgICAgICAgICAgICB9YH1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIOWtuOe/kue1seioiFxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvbmF2PlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwLTZcIj5cbiAgICAgICAgICAgIHthY3RpdmVUYWIgPT09ICdvdmVydmlldycgJiYgKFxuICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgIDxoMyBjbGFzc05hbWU9XCJ0ZXh0LWxnIGZvbnQtc2VtaWJvbGQgbWItNFwiPuacgOi/keWtuOe/kueahOWWruWtlzwvaDM+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJzcGFjZS15LTNcIj5cbiAgICAgICAgICAgICAgICAgIHtyZWNlbnRXb3Jkcy5tYXAod29yZCA9PiAoXG4gICAgICAgICAgICAgICAgICAgIDxkaXYga2V5PXt3b3JkLmlkfSBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gcC00IGJvcmRlciByb3VuZGVkLWxnIGhvdmVyOmJnLWdyYXktNTBcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIHNwYWNlLXgtNFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LTIgaC0yIHJvdW5kZWQtZnVsbCBiZy1ncmVlbi01MDBcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZm9udC1zZW1pYm9sZFwiPnt3b3JkLndvcmR9PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1zbSB0ZXh0LWdyYXktNjAwXCI+e3dvcmQudHJhbnNsYXRpb259PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2BweC0zIHB5LTEgcm91bmRlZC1mdWxsIHRleHQteHMgZm9udC1tZWRpdW0gJHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdvcmQuc3RhdHVzID09PSAnbGVhcm5lZCcgPyAnYmctZ3JlZW4tMTAwIHRleHQtZ3JlZW4tODAwJyA6XG4gICAgICAgICAgICAgICAgICAgICAgICB3b3JkLnN0YXR1cyA9PT0gJ2xlYXJuaW5nJyA/ICdiZy15ZWxsb3ctMTAwIHRleHQteWVsbG93LTgwMCcgOlxuICAgICAgICAgICAgICAgICAgICAgICAgJ2JnLWdyYXktMTAwIHRleHQtZ3JheS04MDAnXG4gICAgICAgICAgICAgICAgICAgICAgfWB9PlxuICAgICAgICAgICAgICAgICAgICAgICAge3dvcmQuc3RhdHVzID09PSAnbGVhcm5lZCcgPyAn5bey5o6M5o+hJyA6IFxuICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmQuc3RhdHVzID09PSAnbGVhcm5pbmcnID8gJ+WtuOe/kuS4rScgOiAn5paw6KmeJ31cbiAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAge2FjdGl2ZVRhYiA9PT0gJ3NldHMnICYmIChcbiAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8aDMgY2xhc3NOYW1lPVwidGV4dC1sZyBmb250LXNlbWlib2xkIG1iLTRcIj7miJHnmoTljaHntYQ8L2gzPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZ3JpZCBncmlkLWNvbHMtMSBtZDpncmlkLWNvbHMtMiBsZzpncmlkLWNvbHMtMyBnYXAtNFwiPlxuICAgICAgICAgICAgICAgICAge2NhcmRTZXRzLm1hcChzZXQgPT4gKFxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGtleT17c2V0LmlkfSBjbGFzc05hbWU9XCJib3JkZXIgcm91bmRlZC1sZyBwLTQgaG92ZXI6c2hhZG93LW1kIHRyYW5zaXRpb24tc2hhZG93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGg0IGNsYXNzTmFtZT1cImZvbnQtc2VtaWJvbGQgbWItMlwiPntzZXQubmFtZX08L2g0PlxuICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQtc20gdGV4dC1ncmF5LTYwMCBtYi0zXCI+e3NldC5jb3VudH0g5YCL5Zau5a2XPC9wPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy1mdWxsIGJnLWdyYXktMjAwIHJvdW5kZWQtZnVsbCBoLTIgbWItM1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiYmctcHJpbWFyeSBoLTIgcm91bmRlZC1mdWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3sgd2lkdGg6IGAke3NldC5wcm9ncmVzc30lYCB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDxMaW5rXG4gICAgICAgICAgICAgICAgICAgICAgICBocmVmPXtgL2ZsYXNoY2FyZHMvJHtzZXQuaWR9YH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInRleHQtcHJpbWFyeSB0ZXh0LXNtIGZvbnQtbWVkaXVtIGhvdmVyOnRleHQtcHJpbWFyeS1ob3ZlclwiXG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAg57m857qM5a2457+SIOKGklxuICAgICAgICAgICAgICAgICAgICAgIDwvTGluaz5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICApfVxuXG4gICAgICAgICAgICB7YWN0aXZlVGFiID09PSAncHJvZ3Jlc3MnICYmIChcbiAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8aDMgY2xhc3NOYW1lPVwidGV4dC1sZyBmb250LXNlbWlib2xkIG1iLTRcIj7lrbjnv5LntbHoqIg8L2gzPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmctZ3JheS01MCByb3VuZGVkLWxnIHAtNlwiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJncmlkIGdyaWQtY29scy0yIG1kOmdyaWQtY29scy00IGdhcC02XCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LXNtIHRleHQtZ3JheS02MDBcIj7mnKzlkajlrbjnv5I8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtMnhsIGZvbnQtYm9sZCBtdC0xXCI+ODkg5YCLPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1zbSB0ZXh0LWdyYXktNjAwXCI+5pys5pyI5a2457+SPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LTJ4bCBmb250LWJvbGQgbXQtMVwiPjMxMiDlgIs8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LXNtIHRleHQtZ3JheS02MDBcIj7lubPlnYfmr4/ml6U8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtMnhsIGZvbnQtYm9sZCBtdC0xXCI+MTUg5YCLPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1zbSB0ZXh0LWdyYXktNjAwXCI+5pyA5L2z57SA6YyEPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LTJ4bCBmb250LWJvbGQgbXQtMVwiPjMyIOWAizwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtdC02IHB0LTYgYm9yZGVyLXRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LXNtIHRleHQtZ3JheS02MDAgbWItMlwiPuavj+aXpeWtuOe/kui2qOWLou+8iOmBjuWOuzflpKnvvIk8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWVuZCBzcGFjZS14LTIgaC0yMFwiPlxuICAgICAgICAgICAgICAgICAgICAgIHtbMTUsIDIwLCAxOCwgMjUsIDIyLCAzMCwgMTJdLm1hcCgodmFsdWUsIGluZGV4KSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGtleT17aW5kZXh9IGNsYXNzTmFtZT1cImZsZXgtMVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImJnLXByaW1hcnkgcm91bmRlZC10XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17eyBoZWlnaHQ6IGAkeyh2YWx1ZSAvIDMwKSAqIDEwMH0lYCB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICApfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICApXG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIERhc2hib2FyZFBhZ2UoKSB7XG4gIHJldHVybiAoXG4gICAgPFByb3RlY3RlZFJvdXRlPlxuICAgICAgPERhc2hib2FyZENvbnRlbnQgLz5cbiAgICA8L1Byb3RlY3RlZFJvdXRlPlxuICApXG59Il0sIm5hbWVzIjpbIkxpbmsiLCJ1c2VTdGF0ZSIsIlByb3RlY3RlZFJvdXRlIiwiTmF2aWdhdGlvbiIsInVzZUF1dGgiLCJEYXNoYm9hcmRDb250ZW50IiwiYWN0aXZlVGFiIiwic2V0QWN0aXZlVGFiIiwidXNlciIsImxvZ291dCIsInN0YXRzIiwidG90YWxXb3JkcyIsIndvcmRzVG9kYXkiLCJzdHJlYWsiLCJhY2N1cmFjeSIsInRvZGF5UmV2aWV3IiwiY29tcGxldGVkVG9kYXkiLCJyZWNlbnRXb3JkcyIsImlkIiwid29yZCIsInRyYW5zbGF0aW9uIiwic3RhdHVzIiwiY2FyZFNldHMiLCJuYW1lIiwiY291bnQiLCJwcm9ncmVzcyIsImRpdiIsImNsYXNzTmFtZSIsImgyIiwiZGlzcGxheU5hbWUiLCJ1c2VybmFtZSIsInAiLCJocmVmIiwic3BhbiIsInN2ZyIsImZpbGwiLCJzdHJva2UiLCJ2aWV3Qm94IiwicGF0aCIsInN0cm9rZUxpbmVjYXAiLCJzdHJva2VMaW5lam9pbiIsInN0cm9rZVdpZHRoIiwiZCIsInN0eWxlIiwid2lkdGgiLCJuYXYiLCJhcmlhLWxhYmVsIiwiYnV0dG9uIiwib25DbGljayIsImgzIiwibWFwIiwic2V0IiwiaDQiLCJ2YWx1ZSIsImluZGV4IiwiaGVpZ2h0IiwiRGFzaGJvYXJkUGFnZSJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./app/dashboard/page.tsx\n"); + +/***/ }), + +/***/ "(ssr)/./components/Navigation.tsx": +/*!***********************************!*\ + !*** ./components/Navigation.tsx ***! + \***********************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Navigation: () => (/* binding */ Navigation)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react-jsx-dev-runtime.js\");\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! next/link */ \"(ssr)/./node_modules/next/dist/client/app-dir/link.js\");\n/* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(next_link__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var next_navigation__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! next/navigation */ \"(ssr)/./node_modules/next/dist/api/navigation.js\");\n/* harmony import */ var _contexts_AuthContext__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/contexts/AuthContext */ \"(ssr)/./contexts/AuthContext.tsx\");\n/* __next_internal_client_entry_do_not_use__ Navigation auto */ \n\n\n\nfunction Navigation() {\n const { user, logout } = (0,_contexts_AuthContext__WEBPACK_IMPORTED_MODULE_3__.useAuth)();\n const pathname = (0,next_navigation__WEBPACK_IMPORTED_MODULE_2__.usePathname)();\n const navItems = [\n {\n href: '/dashboard',\n label: '儀表板'\n },\n {\n href: '/flashcards',\n label: '詞卡'\n },\n {\n href: '/learn',\n label: '學習'\n },\n {\n href: '/generate',\n label: 'AI 生成'\n }\n ];\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"nav\", {\n className: \"bg-white shadow-sm border-b\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"max-w-7xl mx-auto px-4 sm:px-6 lg:px-8\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex justify-between h-16\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center space-x-8\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_link__WEBPACK_IMPORTED_MODULE_1___default()), {\n href: \"/dashboard\",\n className: \"text-2xl font-bold text-primary\",\n children: \"DramaLing\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/components/Navigation.tsx\",\n lineNumber: 23,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"hidden md:flex space-x-6\",\n children: navItems.map((item)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_link__WEBPACK_IMPORTED_MODULE_1___default()), {\n href: item.href,\n className: `font-medium transition-colors ${pathname === item.href ? 'text-primary' : 'text-gray-600 hover:text-gray-900'}`,\n children: item.label\n }, item.href, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/components/Navigation.tsx\",\n lineNumber: 28,\n columnNumber: 17\n }, this))\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/components/Navigation.tsx\",\n lineNumber: 26,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/components/Navigation.tsx\",\n lineNumber: 22,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center space-x-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n className: \"p-2 text-gray-600 hover:text-gray-900\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n className: \"w-6 h-6\",\n fill: \"none\",\n stroke: \"currentColor\",\n viewBox: \"0 0 24 24\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n d: \"M15 17h5l-1.405-1.405A2.032 2.032 0 0118 14.158V11a6.002 6.002 0 00-4-5.659V5a2 2 0 10-4 0v.341C7.67 6.165 6 8.388 6 11v3.159c0 .538-.214 1.055-.595 1.436L4 17h5m6 0v1a3 3 0 11-6 0v-1m6 0H9\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/components/Navigation.tsx\",\n lineNumber: 47,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/components/Navigation.tsx\",\n lineNumber: 46,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/components/Navigation.tsx\",\n lineNumber: 45,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center space-x-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-8 h-8 bg-primary rounded-full flex items-center justify-center text-white font-semibold\",\n children: user?.username?.[0]?.toUpperCase() || 'U'\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/components/Navigation.tsx\",\n lineNumber: 53,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-sm font-medium\",\n children: user?.displayName || user?.username\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/components/Navigation.tsx\",\n lineNumber: 56,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: logout,\n className: \"ml-4 text-sm text-gray-600 hover:text-gray-900\",\n children: \"登出\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/components/Navigation.tsx\",\n lineNumber: 57,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/components/Navigation.tsx\",\n lineNumber: 52,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/components/Navigation.tsx\",\n lineNumber: 43,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/components/Navigation.tsx\",\n lineNumber: 21,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/components/Navigation.tsx\",\n lineNumber: 20,\n columnNumber: 7\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/components/Navigation.tsx\",\n lineNumber: 19,\n columnNumber: 5\n }, this);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9jb21wb25lbnRzL05hdmlnYXRpb24udHN4IiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBRTRCO0FBQ2lCO0FBQ0c7QUFFekMsU0FBU0c7SUFDZCxNQUFNLEVBQUVDLElBQUksRUFBRUMsTUFBTSxFQUFFLEdBQUdILDhEQUFPQTtJQUNoQyxNQUFNSSxXQUFXTCw0REFBV0E7SUFFNUIsTUFBTU0sV0FBVztRQUNmO1lBQUVDLE1BQU07WUFBY0MsT0FBTztRQUFNO1FBQ25DO1lBQUVELE1BQU07WUFBZUMsT0FBTztRQUFLO1FBQ25DO1lBQUVELE1BQU07WUFBVUMsT0FBTztRQUFLO1FBQzlCO1lBQUVELE1BQU07WUFBYUMsT0FBTztRQUFRO0tBQ3JDO0lBRUQscUJBQ0UsOERBQUNDO1FBQUlDLFdBQVU7a0JBQ2IsNEVBQUNDO1lBQUlELFdBQVU7c0JBQ2IsNEVBQUNDO2dCQUFJRCxXQUFVOztrQ0FDYiw4REFBQ0M7d0JBQUlELFdBQVU7OzBDQUNiLDhEQUFDWCxrREFBSUE7Z0NBQUNRLE1BQUs7Z0NBQWFHLFdBQVU7MENBQWtDOzs7Ozs7MENBR3BFLDhEQUFDQztnQ0FBSUQsV0FBVTswQ0FDWkosU0FBU00sR0FBRyxDQUFDLENBQUNDLHFCQUNiLDhEQUFDZCxrREFBSUE7d0NBRUhRLE1BQU1NLEtBQUtOLElBQUk7d0NBQ2ZHLFdBQVcsQ0FBQyw4QkFBOEIsRUFDeENMLGFBQWFRLEtBQUtOLElBQUksR0FDbEIsaUJBQ0EscUNBQ0o7a0RBRURNLEtBQUtMLEtBQUs7dUNBUk5LLEtBQUtOLElBQUk7Ozs7Ozs7Ozs7Ozs7Ozs7a0NBY3RCLDhEQUFDSTt3QkFBSUQsV0FBVTs7MENBRWIsOERBQUNJO2dDQUFPSixXQUFVOzBDQUNoQiw0RUFBQ0s7b0NBQUlMLFdBQVU7b0NBQVVNLE1BQUs7b0NBQU9DLFFBQU87b0NBQWVDLFNBQVE7OENBQ2pFLDRFQUFDQzt3Q0FBS0MsZUFBYzt3Q0FBUUMsZ0JBQWU7d0NBQVFDLGFBQWE7d0NBQUdDLEdBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7MENBS3pFLDhEQUFDWjtnQ0FBSUQsV0FBVTs7a0RBQ2IsOERBQUNDO3dDQUFJRCxXQUFVO2tEQUNaUCxNQUFNcUIsVUFBVSxDQUFDLEVBQUUsRUFBRUMsaUJBQWlCOzs7Ozs7a0RBRXpDLDhEQUFDQzt3Q0FBS2hCLFdBQVU7a0RBQXVCUCxNQUFNd0IsZUFBZXhCLE1BQU1xQjs7Ozs7O2tEQUNsRSw4REFBQ1Y7d0NBQ0NjLFNBQVN4Qjt3Q0FDVE0sV0FBVTtrREFDWDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVNmIiwic291cmNlcyI6WyIvVXNlcnMvamV0dGNoZW5nMTAxOC9jb2RlL2RyYW1hbGluZy12b2NhYi1sZWFybmluZy9mcm9udGVuZC9jb21wb25lbnRzL05hdmlnYXRpb24udHN4Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2UgY2xpZW50J1xyXG5cclxuaW1wb3J0IExpbmsgZnJvbSAnbmV4dC9saW5rJ1xyXG5pbXBvcnQgeyB1c2VQYXRobmFtZSB9IGZyb20gJ25leHQvbmF2aWdhdGlvbidcclxuaW1wb3J0IHsgdXNlQXV0aCB9IGZyb20gJ0AvY29udGV4dHMvQXV0aENvbnRleHQnXHJcblxyXG5leHBvcnQgZnVuY3Rpb24gTmF2aWdhdGlvbigpIHtcclxuICBjb25zdCB7IHVzZXIsIGxvZ291dCB9ID0gdXNlQXV0aCgpXHJcbiAgY29uc3QgcGF0aG5hbWUgPSB1c2VQYXRobmFtZSgpXHJcblxyXG4gIGNvbnN0IG5hdkl0ZW1zID0gW1xyXG4gICAgeyBocmVmOiAnL2Rhc2hib2FyZCcsIGxhYmVsOiAn5YSA6KGo5p2/JyB9LFxyXG4gICAgeyBocmVmOiAnL2ZsYXNoY2FyZHMnLCBsYWJlbDogJ+ipnuWNoScgfSxcclxuICAgIHsgaHJlZjogJy9sZWFybicsIGxhYmVsOiAn5a2457+SJyB9LFxyXG4gICAgeyBocmVmOiAnL2dlbmVyYXRlJywgbGFiZWw6ICdBSSDnlJ/miJAnIH0sXHJcbiAgXVxyXG5cclxuICByZXR1cm4gKFxyXG4gICAgPG5hdiBjbGFzc05hbWU9XCJiZy13aGl0ZSBzaGFkb3ctc20gYm9yZGVyLWJcIj5cclxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJtYXgtdy03eGwgbXgtYXV0byBweC00IHNtOnB4LTYgbGc6cHgtOFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBqdXN0aWZ5LWJldHdlZW4gaC0xNlwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBzcGFjZS14LThcIj5cclxuICAgICAgICAgICAgPExpbmsgaHJlZj1cIi9kYXNoYm9hcmRcIiBjbGFzc05hbWU9XCJ0ZXh0LTJ4bCBmb250LWJvbGQgdGV4dC1wcmltYXJ5XCI+XHJcbiAgICAgICAgICAgICAgRHJhbWFMaW5nXHJcbiAgICAgICAgICAgIDwvTGluaz5cclxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJoaWRkZW4gbWQ6ZmxleCBzcGFjZS14LTZcIj5cclxuICAgICAgICAgICAgICB7bmF2SXRlbXMubWFwKChpdGVtKSA9PiAoXHJcbiAgICAgICAgICAgICAgICA8TGlua1xyXG4gICAgICAgICAgICAgICAgICBrZXk9e2l0ZW0uaHJlZn1cclxuICAgICAgICAgICAgICAgICAgaHJlZj17aXRlbS5ocmVmfVxyXG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2Bmb250LW1lZGl1bSB0cmFuc2l0aW9uLWNvbG9ycyAke1xyXG4gICAgICAgICAgICAgICAgICAgIHBhdGhuYW1lID09PSBpdGVtLmhyZWZcclxuICAgICAgICAgICAgICAgICAgICAgID8gJ3RleHQtcHJpbWFyeSdcclxuICAgICAgICAgICAgICAgICAgICAgIDogJ3RleHQtZ3JheS02MDAgaG92ZXI6dGV4dC1ncmF5LTkwMCdcclxuICAgICAgICAgICAgICAgICAgfWB9XHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIHtpdGVtLmxhYmVsfVxyXG4gICAgICAgICAgICAgICAgPC9MaW5rPlxyXG4gICAgICAgICAgICAgICkpfVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIgc3BhY2UteC00XCI+XHJcbiAgICAgICAgICAgIHsvKiDpgJrnn6XmjInpiJUgKi99XHJcbiAgICAgICAgICAgIDxidXR0b24gY2xhc3NOYW1lPVwicC0yIHRleHQtZ3JheS02MDAgaG92ZXI6dGV4dC1ncmF5LTkwMFwiPlxyXG4gICAgICAgICAgICAgIDxzdmcgY2xhc3NOYW1lPVwidy02IGgtNlwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiPlxyXG4gICAgICAgICAgICAgICAgPHBhdGggc3Ryb2tlTGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlTGluZWpvaW49XCJyb3VuZFwiIHN0cm9rZVdpZHRoPXsyfSBkPVwiTTE1IDE3aDVsLTEuNDA1LTEuNDA1QTIuMDMyIDIuMDMyIDAgMDExOCAxNC4xNThWMTFhNi4wMDIgNi4wMDIgMCAwMC00LTUuNjU5VjVhMiAyIDAgMTAtNCAwdi4zNDFDNy42NyA2LjE2NSA2IDguMzg4IDYgMTF2My4xNTljMCAuNTM4LS4yMTQgMS4wNTUtLjU5NSAxLjQzNkw0IDE3aDVtNiAwdjFhMyAzIDAgMTEtNiAwdi0xbTYgMEg5XCIgLz5cclxuICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcblxyXG4gICAgICAgICAgICB7Lyog55So5oi26LOH6KiKICovfVxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIHNwYWNlLXgtMlwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy04IGgtOCBiZy1wcmltYXJ5IHJvdW5kZWQtZnVsbCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciB0ZXh0LXdoaXRlIGZvbnQtc2VtaWJvbGRcIj5cclxuICAgICAgICAgICAgICAgIHt1c2VyPy51c2VybmFtZT8uWzBdPy50b1VwcGVyQ2FzZSgpIHx8ICdVJ31cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LXNtIGZvbnQtbWVkaXVtXCI+e3VzZXI/LmRpc3BsYXlOYW1lIHx8IHVzZXI/LnVzZXJuYW1lfTwvc3Bhbj5cclxuICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICBvbkNsaWNrPXtsb2dvdXR9XHJcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJtbC00IHRleHQtc20gdGV4dC1ncmF5LTYwMCBob3Zlcjp0ZXh0LWdyYXktOTAwXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICDnmbvlh7pcclxuICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L25hdj5cclxuICApXHJcbn0iXSwibmFtZXMiOlsiTGluayIsInVzZVBhdGhuYW1lIiwidXNlQXV0aCIsIk5hdmlnYXRpb24iLCJ1c2VyIiwibG9nb3V0IiwicGF0aG5hbWUiLCJuYXZJdGVtcyIsImhyZWYiLCJsYWJlbCIsIm5hdiIsImNsYXNzTmFtZSIsImRpdiIsIm1hcCIsIml0ZW0iLCJidXR0b24iLCJzdmciLCJmaWxsIiwic3Ryb2tlIiwidmlld0JveCIsInBhdGgiLCJzdHJva2VMaW5lY2FwIiwic3Ryb2tlTGluZWpvaW4iLCJzdHJva2VXaWR0aCIsImQiLCJ1c2VybmFtZSIsInRvVXBwZXJDYXNlIiwic3BhbiIsImRpc3BsYXlOYW1lIiwib25DbGljayJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./components/Navigation.tsx\n"); /***/ }), diff --git a/frontend/.next/server/app/dashboard/page_client-reference-manifest.js b/frontend/.next/server/app/dashboard/page_client-reference-manifest.js index f030cb7..ee7bf92 100644 --- a/frontend/.next/server/app/dashboard/page_client-reference-manifest.js +++ b/frontend/.next/server/app/dashboard/page_client-reference-manifest.js @@ -1 +1 @@ -globalThis.__RSC_MANIFEST=(globalThis.__RSC_MANIFEST||{});globalThis.__RSC_MANIFEST["/dashboard/page"]={"moduleLoading":{"prefix":"/_next/"},"ssrModuleMapping":{"(app-pages-browser)/./contexts/AuthContext.tsx":{"*":{"id":"(ssr)/./contexts/AuthContext.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/learn/page.tsx":{"*":{"id":"(ssr)/./app/learn/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/builtin/global-error.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/builtin/global-error.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/client-page.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/client-page.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/client-segment.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/client-segment.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/http-access-fallback/error-boundary.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/http-access-fallback/error-boundary.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/layout-router.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/layout-router.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/metadata/async-metadata.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/metadata/async-metadata.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/render-from-template-context.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/render-from-template-context.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/lib/framework/boundary-components.js":{"*":{"id":"(ssr)/./node_modules/next/dist/lib/framework/boundary-components.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/lib/metadata/generate/icon-mark.js":{"*":{"id":"(ssr)/./node_modules/next/dist/lib/metadata/generate/icon-mark.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js":{"*":{"id":"(ssr)/./node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/page.tsx":{"*":{"id":"(ssr)/./app/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/register/page.tsx":{"*":{"id":"(ssr)/./app/register/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/dashboard/page.tsx":{"*":{"id":"(ssr)/./app/dashboard/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/login/page.tsx":{"*":{"id":"(ssr)/./app/login/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/flashcards/page.tsx":{"*":{"id":"(ssr)/./app/flashcards/page.tsx","name":"*","chunks":[],"async":false}}},"edgeSSRModuleMapping":{},"clientModules":{"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/contexts/AuthContext.tsx":{"id":"(app-pages-browser)/./contexts/AuthContext.tsx","name":"*","chunks":["app/layout","static/chunks/app/layout.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/font/google/target.css?{\"path\":\"app/layout.tsx\",\"import\":\"Inter\",\"arguments\":[{\"subsets\":[\"latin\"]}],\"variableName\":\"inter\"}":{"id":"(app-pages-browser)/./node_modules/next/font/google/target.css?{\"path\":\"app/layout.tsx\",\"import\":\"Inter\",\"arguments\":[{\"subsets\":[\"latin\"]}],\"variableName\":\"inter\"}","name":"*","chunks":["app/layout","static/chunks/app/layout.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/globals.css":{"id":"(app-pages-browser)/./app/globals.css","name":"*","chunks":["app/layout","static/chunks/app/layout.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/learn/page.tsx":{"id":"(app-pages-browser)/./app/learn/page.tsx","name":"*","chunks":[],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/client/components/builtin/global-error.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/builtin/global-error.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/esm/client/components/builtin/global-error.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/builtin/global-error.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/client/components/client-page.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/client-page.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/esm/client/components/client-page.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/client-page.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/client/components/client-segment.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/client-segment.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/esm/client/components/client-segment.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/client-segment.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/client/components/http-access-fallback/error-boundary.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/http-access-fallback/error-boundary.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/http-access-fallback/error-boundary.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/client/components/layout-router.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/layout-router.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/esm/client/components/layout-router.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/layout-router.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/client/components/metadata/async-metadata.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/metadata/async-metadata.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/esm/client/components/metadata/async-metadata.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/metadata/async-metadata.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/client/components/render-from-template-context.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/render-from-template-context.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/render-from-template-context.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/lib/framework/boundary-components.js":{"id":"(app-pages-browser)/./node_modules/next/dist/lib/framework/boundary-components.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":"(app-pages-browser)/./node_modules/next/dist/lib/framework/boundary-components.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/lib/metadata/generate/icon-mark.js":{"id":"(app-pages-browser)/./node_modules/next/dist/lib/metadata/generate/icon-mark.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":"(app-pages-browser)/./node_modules/next/dist/lib/metadata/generate/icon-mark.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js":{"id":"(app-pages-browser)/./node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/esm/next-devtools/userspace/app/segment-explorer-node.js":{"id":"(app-pages-browser)/./node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/page.tsx":{"id":"(app-pages-browser)/./app/page.tsx","name":"*","chunks":["app/page","static/chunks/app/page.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/register/page.tsx":{"id":"(app-pages-browser)/./app/register/page.tsx","name":"*","chunks":[],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx":{"id":"(app-pages-browser)/./app/dashboard/page.tsx","name":"*","chunks":["app/dashboard/page","static/chunks/app/dashboard/page.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/login/page.tsx":{"id":"(app-pages-browser)/./app/login/page.tsx","name":"*","chunks":[],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx":{"id":"(app-pages-browser)/./app/flashcards/page.tsx","name":"*","chunks":[],"async":false}},"entryCSSFiles":{"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/":[],"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/layout":[{"inlined":false,"path":"static/css/app/layout.css"}],"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/page":[],"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page":[]},"rscModuleMapping":{"(app-pages-browser)/./contexts/AuthContext.tsx":{"*":{"id":"(rsc)/./contexts/AuthContext.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/globals.css":{"*":{"id":"(rsc)/./app/globals.css","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/learn/page.tsx":{"*":{"id":"(rsc)/./app/learn/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/builtin/global-error.js":{"*":{"id":"(rsc)/./node_modules/next/dist/client/components/builtin/global-error.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/client-page.js":{"*":{"id":"(rsc)/./node_modules/next/dist/client/components/client-page.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/client-segment.js":{"*":{"id":"(rsc)/./node_modules/next/dist/client/components/client-segment.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/http-access-fallback/error-boundary.js":{"*":{"id":"(rsc)/./node_modules/next/dist/client/components/http-access-fallback/error-boundary.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/layout-router.js":{"*":{"id":"(rsc)/./node_modules/next/dist/client/components/layout-router.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/metadata/async-metadata.js":{"*":{"id":"(rsc)/./node_modules/next/dist/client/components/metadata/async-metadata.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/render-from-template-context.js":{"*":{"id":"(rsc)/./node_modules/next/dist/client/components/render-from-template-context.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/lib/framework/boundary-components.js":{"*":{"id":"(rsc)/./node_modules/next/dist/lib/framework/boundary-components.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/lib/metadata/generate/icon-mark.js":{"*":{"id":"(rsc)/./node_modules/next/dist/lib/metadata/generate/icon-mark.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js":{"*":{"id":"(rsc)/./node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/page.tsx":{"*":{"id":"(rsc)/./app/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/register/page.tsx":{"*":{"id":"(rsc)/./app/register/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/dashboard/page.tsx":{"*":{"id":"(rsc)/./app/dashboard/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/login/page.tsx":{"*":{"id":"(rsc)/./app/login/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/flashcards/page.tsx":{"*":{"id":"(rsc)/./app/flashcards/page.tsx","name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{}} \ No newline at end of file +globalThis.__RSC_MANIFEST=(globalThis.__RSC_MANIFEST||{});globalThis.__RSC_MANIFEST["/dashboard/page"]={"moduleLoading":{"prefix":"/_next/"},"ssrModuleMapping":{"(app-pages-browser)/./contexts/AuthContext.tsx":{"*":{"id":"(ssr)/./contexts/AuthContext.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/learn/page.tsx":{"*":{"id":"(ssr)/./app/learn/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/builtin/global-error.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/builtin/global-error.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/client-page.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/client-page.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/client-segment.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/client-segment.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/http-access-fallback/error-boundary.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/http-access-fallback/error-boundary.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/layout-router.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/layout-router.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/metadata/async-metadata.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/metadata/async-metadata.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/render-from-template-context.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/render-from-template-context.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/lib/framework/boundary-components.js":{"*":{"id":"(ssr)/./node_modules/next/dist/lib/framework/boundary-components.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/lib/metadata/generate/icon-mark.js":{"*":{"id":"(ssr)/./node_modules/next/dist/lib/metadata/generate/icon-mark.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js":{"*":{"id":"(ssr)/./node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/page.tsx":{"*":{"id":"(ssr)/./app/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/register/page.tsx":{"*":{"id":"(ssr)/./app/register/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/dashboard/page.tsx":{"*":{"id":"(ssr)/./app/dashboard/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/login/page.tsx":{"*":{"id":"(ssr)/./app/login/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/flashcards/page.tsx":{"*":{"id":"(ssr)/./app/flashcards/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/generate/page.tsx":{"*":{"id":"(ssr)/./app/generate/page.tsx","name":"*","chunks":[],"async":false}}},"edgeSSRModuleMapping":{},"clientModules":{"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/contexts/AuthContext.tsx":{"id":"(app-pages-browser)/./contexts/AuthContext.tsx","name":"*","chunks":["app/layout","static/chunks/app/layout.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/font/google/target.css?{\"path\":\"app/layout.tsx\",\"import\":\"Inter\",\"arguments\":[{\"subsets\":[\"latin\"]}],\"variableName\":\"inter\"}":{"id":"(app-pages-browser)/./node_modules/next/font/google/target.css?{\"path\":\"app/layout.tsx\",\"import\":\"Inter\",\"arguments\":[{\"subsets\":[\"latin\"]}],\"variableName\":\"inter\"}","name":"*","chunks":["app/layout","static/chunks/app/layout.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/globals.css":{"id":"(app-pages-browser)/./app/globals.css","name":"*","chunks":["app/layout","static/chunks/app/layout.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/learn/page.tsx":{"id":"(app-pages-browser)/./app/learn/page.tsx","name":"*","chunks":[],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/client/components/builtin/global-error.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/builtin/global-error.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/esm/client/components/builtin/global-error.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/builtin/global-error.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/client/components/client-page.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/client-page.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/esm/client/components/client-page.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/client-page.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/client/components/client-segment.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/client-segment.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/esm/client/components/client-segment.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/client-segment.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/client/components/http-access-fallback/error-boundary.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/http-access-fallback/error-boundary.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/http-access-fallback/error-boundary.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/client/components/layout-router.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/layout-router.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/esm/client/components/layout-router.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/layout-router.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/client/components/metadata/async-metadata.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/metadata/async-metadata.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/esm/client/components/metadata/async-metadata.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/metadata/async-metadata.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/client/components/render-from-template-context.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/render-from-template-context.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/render-from-template-context.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/lib/framework/boundary-components.js":{"id":"(app-pages-browser)/./node_modules/next/dist/lib/framework/boundary-components.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":"(app-pages-browser)/./node_modules/next/dist/lib/framework/boundary-components.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/lib/metadata/generate/icon-mark.js":{"id":"(app-pages-browser)/./node_modules/next/dist/lib/metadata/generate/icon-mark.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":"(app-pages-browser)/./node_modules/next/dist/lib/metadata/generate/icon-mark.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js":{"id":"(app-pages-browser)/./node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/esm/next-devtools/userspace/app/segment-explorer-node.js":{"id":"(app-pages-browser)/./node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/page.tsx":{"id":"(app-pages-browser)/./app/page.tsx","name":"*","chunks":["app/page","static/chunks/app/page.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/register/page.tsx":{"id":"(app-pages-browser)/./app/register/page.tsx","name":"*","chunks":[],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx":{"id":"(app-pages-browser)/./app/dashboard/page.tsx","name":"*","chunks":["app/dashboard/page","static/chunks/app/dashboard/page.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/login/page.tsx":{"id":"(app-pages-browser)/./app/login/page.tsx","name":"*","chunks":[],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx":{"id":"(app-pages-browser)/./app/flashcards/page.tsx","name":"*","chunks":[],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx":{"id":"(app-pages-browser)/./app/generate/page.tsx","name":"*","chunks":[],"async":false}},"entryCSSFiles":{"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/":[],"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/layout":[{"inlined":false,"path":"static/css/app/layout.css"}],"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/page":[],"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page":[]},"rscModuleMapping":{"(app-pages-browser)/./contexts/AuthContext.tsx":{"*":{"id":"(rsc)/./contexts/AuthContext.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/globals.css":{"*":{"id":"(rsc)/./app/globals.css","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/learn/page.tsx":{"*":{"id":"(rsc)/./app/learn/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/builtin/global-error.js":{"*":{"id":"(rsc)/./node_modules/next/dist/client/components/builtin/global-error.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/client-page.js":{"*":{"id":"(rsc)/./node_modules/next/dist/client/components/client-page.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/client-segment.js":{"*":{"id":"(rsc)/./node_modules/next/dist/client/components/client-segment.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/http-access-fallback/error-boundary.js":{"*":{"id":"(rsc)/./node_modules/next/dist/client/components/http-access-fallback/error-boundary.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/layout-router.js":{"*":{"id":"(rsc)/./node_modules/next/dist/client/components/layout-router.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/metadata/async-metadata.js":{"*":{"id":"(rsc)/./node_modules/next/dist/client/components/metadata/async-metadata.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/render-from-template-context.js":{"*":{"id":"(rsc)/./node_modules/next/dist/client/components/render-from-template-context.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/lib/framework/boundary-components.js":{"*":{"id":"(rsc)/./node_modules/next/dist/lib/framework/boundary-components.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/lib/metadata/generate/icon-mark.js":{"*":{"id":"(rsc)/./node_modules/next/dist/lib/metadata/generate/icon-mark.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js":{"*":{"id":"(rsc)/./node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/page.tsx":{"*":{"id":"(rsc)/./app/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/register/page.tsx":{"*":{"id":"(rsc)/./app/register/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/dashboard/page.tsx":{"*":{"id":"(rsc)/./app/dashboard/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/login/page.tsx":{"*":{"id":"(rsc)/./app/login/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/flashcards/page.tsx":{"*":{"id":"(rsc)/./app/flashcards/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/generate/page.tsx":{"*":{"id":"(rsc)/./app/generate/page.tsx","name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{}} \ No newline at end of file diff --git a/frontend/.next/server/app/flashcards/page.js b/frontend/.next/server/app/flashcards/page.js index ae23a28..97d0afd 100644 --- a/frontend/.next/server/app/flashcards/page.js +++ b/frontend/.next/server/app/flashcards/page.js @@ -104,7 +104,29 @@ eval("Promise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__w /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ FlashcardsPage)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react-jsx-dev-runtime.js\");\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! next/link */ \"(ssr)/./node_modules/next/dist/client/app-dir/link.js\");\n/* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(next_link__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _components_ProtectedRoute__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/components/ProtectedRoute */ \"(ssr)/./components/ProtectedRoute.tsx\");\n/* harmony import */ var _lib_services_flashcards__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/lib/services/flashcards */ \"(ssr)/./lib/services/flashcards.ts\");\n/* __next_internal_client_entry_do_not_use__ default auto */ \n\n\n\n\nfunction FlashcardsContent() {\n const [activeTab, setActiveTab] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)('my-cards');\n const [selectedSet, setSelectedSet] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);\n const [searchTerm, setSearchTerm] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)('');\n // Real data from API\n const [cardSets, setCardSets] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)([]);\n const [flashcards, setFlashcards] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)([]);\n const [loading, setLoading] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(true);\n const [error, setError] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);\n // Load data from API\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)({\n \"FlashcardsContent.useEffect\": ()=>{\n loadCardSets();\n loadFlashcards();\n }\n }[\"FlashcardsContent.useEffect\"], []);\n const loadCardSets = async ()=>{\n try {\n const result = await _lib_services_flashcards__WEBPACK_IMPORTED_MODULE_4__.flashcardsService.getCardSets();\n if (result.success && result.data) {\n setCardSets(result.data.sets);\n } else {\n setError(result.error || 'Failed to load card sets');\n }\n } catch (err) {\n setError('Failed to load card sets');\n }\n };\n const loadFlashcards = async ()=>{\n try {\n setLoading(true);\n const result = await _lib_services_flashcards__WEBPACK_IMPORTED_MODULE_4__.flashcardsService.getFlashcards(selectedSet || undefined);\n if (result.success && result.data) {\n setFlashcards(result.data.flashcards);\n } else {\n setError(result.error || 'Failed to load flashcards');\n }\n } catch (err) {\n setError('Failed to load flashcards');\n } finally{\n setLoading(false);\n }\n };\n // Reload flashcards when selectedSet changes\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)({\n \"FlashcardsContent.useEffect\": ()=>{\n loadFlashcards();\n }\n }[\"FlashcardsContent.useEffect\"], [\n selectedSet\n ]);\n // Filter data\n const filteredSets = cardSets.filter((set)=>set.name.toLowerCase().includes(searchTerm.toLowerCase()) || set.description.toLowerCase().includes(searchTerm.toLowerCase()));\n const filteredCards = flashcards.filter((card)=>{\n if (searchTerm) {\n return card.word?.toLowerCase().includes(searchTerm.toLowerCase()) || card.translation?.toLowerCase().includes(searchTerm.toLowerCase());\n }\n return true;\n });\n // Add loading and error states\n if (loading) {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"min-h-screen bg-gray-50 flex items-center justify-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-lg\",\n children: \"載入中...\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 77,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 76,\n columnNumber: 7\n }, this);\n }\n if (error) {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"min-h-screen bg-gray-50 flex items-center justify-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-red-600\",\n children: error\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 85,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 84,\n columnNumber: 7\n }, this);\n }\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"min-h-screen bg-gray-50\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-white border-b border-gray-200\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"max-w-7xl mx-auto px-4 sm:px-6 lg:px-8\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex justify-between items-center py-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h1\", {\n className: \"text-3xl font-bold text-gray-900\",\n children: \"詞卡管理\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 97,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"mt-1 text-sm text-gray-500\",\n children: \"管理你的詞卡集合\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 98,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 96,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center space-x-4\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_link__WEBPACK_IMPORTED_MODULE_2___default()), {\n href: \"/generate\",\n className: \"bg-primary text-white px-4 py-2 rounded-lg hover:bg-primary/90 transition-colors\",\n children: \"AI 生成詞卡\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 101,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 100,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 95,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex space-x-8\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>setActiveTab('my-cards'),\n className: `pb-4 px-1 border-b-2 font-medium text-sm ${activeTab === 'my-cards' ? 'border-primary text-primary' : 'border-transparent text-gray-500 hover:text-gray-700 hover:border-gray-300'}`,\n children: [\n \"我的卡組 (\",\n filteredSets.length,\n \")\"\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 112,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>setActiveTab('all-cards'),\n className: `pb-4 px-1 border-b-2 font-medium text-sm ${activeTab === 'all-cards' ? 'border-primary text-primary' : 'border-transparent text-gray-500 hover:text-gray-700 hover:border-gray-300'}`,\n children: [\n \"所有詞卡 (\",\n filteredCards.length,\n \")\"\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 122,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 111,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 94,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 93,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-8\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mb-6\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"relative\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"text\",\n value: searchTerm,\n onChange: (e)=>setSearchTerm(e.target.value),\n placeholder: \"搜尋詞卡或卡組...\",\n className: \"w-full pl-10 pr-4 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-primary focus:border-transparent\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 141,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute inset-y-0 left-0 pl-3 flex items-center pointer-events-none\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n className: \"h-5 w-5 text-gray-400\",\n fill: \"none\",\n stroke: \"currentColor\",\n viewBox: \"0 0 24 24\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n d: \"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 150,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 149,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 148,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 140,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 139,\n columnNumber: 9\n }, this),\n activeTab === 'my-cards' && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex justify-between items-center mb-4\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h3\", {\n className: \"text-lg font-semibold\",\n children: [\n \"共 \",\n filteredSets.length,\n \" 個卡組\"\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 160,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 159,\n columnNumber: 13\n }, this),\n filteredSets.length === 0 ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-center py-12\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-gray-500 mb-4\",\n children: \"還沒有詞卡集合\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 165,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_link__WEBPACK_IMPORTED_MODULE_2___default()), {\n href: \"/generate\",\n className: \"bg-primary text-white px-4 py-2 rounded-lg hover:bg-primary/90 transition-colors\",\n children: \"創建第一個卡組\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 166,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 164,\n columnNumber: 15\n }, this) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4\",\n children: filteredSets.map((set)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"border rounded-lg hover:shadow-lg transition-shadow cursor-pointer\",\n onClick: ()=>{\n setSelectedSet(set.id);\n setActiveTab('all-cards');\n },\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `${set.color} text-white p-4 rounded-t-lg`,\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h4\", {\n className: \"font-semibold text-lg\",\n children: set.name\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 185,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-sm opacity-90\",\n children: set.description\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 186,\n columnNumber: 23\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 184,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"p-4 bg-white rounded-b-lg\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex justify-between items-center text-sm text-gray-600\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n children: [\n set.cardCount,\n \" 張詞卡\"\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 190,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n children: [\n \"進度: \",\n set.progress,\n \"%\"\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 191,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 189,\n columnNumber: 23\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 188,\n columnNumber: 21\n }, this)\n ]\n }, set.id, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 176,\n columnNumber: 19\n }, this))\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 174,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 158,\n columnNumber: 11\n }, this),\n activeTab === 'all-cards' && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex justify-between items-center mb-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h3\", {\n className: \"text-lg font-semibold\",\n children: [\n \"共 \",\n filteredCards.length,\n \" 個詞卡\"\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 205,\n columnNumber: 15\n }, this),\n selectedSet && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>setSelectedSet(null),\n className: \"text-sm text-gray-600 hover:text-gray-900\",\n children: \"顯示所有詞卡\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 207,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 204,\n columnNumber: 13\n }, this),\n filteredCards.length === 0 ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-center py-12\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-gray-500 mb-4\",\n children: \"沒有找到詞卡\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 218,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_link__WEBPACK_IMPORTED_MODULE_2___default()), {\n href: \"/generate\",\n className: \"bg-primary text-white px-4 py-2 rounded-lg hover:bg-primary/90 transition-colors\",\n children: \"創建新詞卡\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 219,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 217,\n columnNumber: 15\n }, this) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-y-3\",\n children: filteredCards.map((card)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-white border rounded-lg p-4 hover:shadow-md transition-shadow\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center justify-between\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center space-x-4\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center space-x-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h4\", {\n className: \"font-semibold text-lg\",\n children: card.word || '未設定'\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 235,\n columnNumber: 31\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-sm text-gray-500\",\n children: card.partOfSpeech\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 236,\n columnNumber: 31\n }, this),\n card.pronunciation && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-sm text-blue-600\",\n children: card.pronunciation\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 238,\n columnNumber: 33\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 234,\n columnNumber: 29\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-gray-700 mt-1\",\n children: card.translation || '未設定'\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 241,\n columnNumber: 29\n }, this),\n card.example && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-sm text-gray-600 mt-2 italic\",\n children: [\n \"例句: \",\n card.example\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 243,\n columnNumber: 31\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center space-x-4 mt-2 text-xs text-gray-500\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n children: [\n \"卡組: \",\n card.cardSet.name\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 246,\n columnNumber: 31\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n children: [\n \"熟練度: \",\n card.masteryLevel,\n \"/5\"\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 247,\n columnNumber: 31\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n children: [\n \"複習: \",\n card.timesReviewed,\n \" 次\"\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 248,\n columnNumber: 31\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n children: [\n \"下次複習: \",\n new Date(card.nextReviewDate).toLocaleDateString()\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 249,\n columnNumber: 31\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 245,\n columnNumber: 29\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 233,\n columnNumber: 27\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 232,\n columnNumber: 25\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 231,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center space-x-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>{\n // TODO: 實作編輯功能\n console.log('編輯詞卡:', card.id);\n },\n className: \"text-blue-600 hover:text-blue-800 text-sm\",\n children: \"編輯\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 255,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>{\n // TODO: 實作刪除功能\n console.log('刪除詞卡:', card.id);\n },\n className: \"text-red-600 hover:text-red-800 text-sm\",\n children: \"刪除\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 264,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 254,\n columnNumber: 23\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 230,\n columnNumber: 21\n }, this)\n }, card.id, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 229,\n columnNumber: 19\n }, this))\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 227,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 203,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 137,\n columnNumber: 7\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 91,\n columnNumber: 5\n }, this);\n}\nfunction FlashcardsPage() {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ProtectedRoute__WEBPACK_IMPORTED_MODULE_3__.ProtectedRoute, {\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(FlashcardsContent, {}, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 289,\n columnNumber: 7\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 288,\n columnNumber: 5\n }, this);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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S2hDLEtBQUt3QyxhQUFhO2dGQUFDOzs7Ozs7O3NGQUM5Qiw4REFBQ1I7O2dGQUFLO2dGQUFPLElBQUlTLEtBQUt6QyxLQUFLMEMsY0FBYyxFQUFFQyxrQkFBa0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzhEQUtyRSw4REFBQ3hDO29EQUFJQyxXQUFVOztzRUFDYiw4REFBQ0k7NERBQ0NDLFNBQVM7Z0VBQ1AsZUFBZTtnRUFDZm1DLFFBQVFDLEdBQUcsQ0FBQyxTQUFTN0MsS0FBSzZCLEVBQUU7NERBQzlCOzREQUNBekIsV0FBVTtzRUFDWDs7Ozs7O3NFQUdELDhEQUFDSTs0REFDQ0MsU0FBUztnRUFDUCxlQUFlO2dFQUNmbUMsUUFBUUMsR0FBRyxDQUFDLFNBQVM3QyxLQUFLNkIsRUFBRTs0REFDOUI7NERBQ0F6QixXQUFVO3NFQUNYOzs7Ozs7Ozs7Ozs7Ozs7Ozs7dUNBekNHSixLQUFLNkIsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXVEbkM7QUFFZSxTQUFTaUI7SUFDdEIscUJBQ0UsOERBQUNqRixzRUFBY0E7a0JBQ2IsNEVBQUNFOzs7Ozs7Ozs7O0FBR1AiLCJzb3VyY2VzIjpbIi9Vc2Vycy9qZXR0Y2hlbmcxMDE4L2NvZGUvZHJhbWFsaW5nLXZvY2FiLWxlYXJuaW5nL2Zyb250ZW5kL2FwcC9mbGFzaGNhcmRzL3BhZ2UudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2UgY2xpZW50J1xuXG5pbXBvcnQgeyB1c2VTdGF0ZSwgdXNlRWZmZWN0IH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgTGluayBmcm9tICduZXh0L2xpbmsnXG5pbXBvcnQgeyBQcm90ZWN0ZWRSb3V0ZSB9IGZyb20gJ0AvY29tcG9uZW50cy9Qcm90ZWN0ZWRSb3V0ZSdcbmltcG9ydCB7IGZsYXNoY2FyZHNTZXJ2aWNlLCB0eXBlIENhcmRTZXQsIHR5cGUgRmxhc2hjYXJkIH0gZnJvbSAnQC9saWIvc2VydmljZXMvZmxhc2hjYXJkcydcblxuZnVuY3Rpb24gRmxhc2hjYXJkc0NvbnRlbnQoKSB7XG4gIGNvbnN0IFthY3RpdmVUYWIsIHNldEFjdGl2ZVRhYl0gPSB1c2VTdGF0ZSgnbXktY2FyZHMnKVxuICBjb25zdCBbc2VsZWN0ZWRTZXQsIHNldFNlbGVjdGVkU2V0XSA9IHVzZVN0YXRlPHN0cmluZyB8IG51bGw+KG51bGwpXG4gIGNvbnN0IFtzZWFyY2hUZXJtLCBzZXRTZWFyY2hUZXJtXSA9IHVzZVN0YXRlKCcnKVxuXG4gIC8vIFJlYWwgZGF0YSBmcm9tIEFQSVxuICBjb25zdCBbY2FyZFNldHMsIHNldENhcmRTZXRzXSA9IHVzZVN0YXRlPENhcmRTZXRbXT4oW10pXG4gIGNvbnN0IFtmbGFzaGNhcmRzLCBzZXRGbGFzaGNhcmRzXSA9IHVzZVN0YXRlPEZsYXNoY2FyZFtdPihbXSlcbiAgY29uc3QgW2xvYWRpbmcsIHNldExvYWRpbmddID0gdXNlU3RhdGUodHJ1ZSlcbiAgY29uc3QgW2Vycm9yLCBzZXRFcnJvcl0gPSB1c2VTdGF0ZTxzdHJpbmcgfCBudWxsPihudWxsKVxuXG4gIC8vIExvYWQgZGF0YSBmcm9tIEFQSVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGxvYWRDYXJkU2V0cygpXG4gICAgbG9hZEZsYXNoY2FyZHMoKVxuICB9LCBbXSlcblxuICBjb25zdCBsb2FkQ2FyZFNldHMgPSBhc3luYyAoKSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGZsYXNoY2FyZHNTZXJ2aWNlLmdldENhcmRTZXRzKClcbiAgICAgIGlmIChyZXN1bHQuc3VjY2VzcyAmJiByZXN1bHQuZGF0YSkge1xuICAgICAgICBzZXRDYXJkU2V0cyhyZXN1bHQuZGF0YS5zZXRzKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2V0RXJyb3IocmVzdWx0LmVycm9yIHx8ICdGYWlsZWQgdG8gbG9hZCBjYXJkIHNldHMnKVxuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgc2V0RXJyb3IoJ0ZhaWxlZCB0byBsb2FkIGNhcmQgc2V0cycpXG4gICAgfVxuICB9XG5cbiAgY29uc3QgbG9hZEZsYXNoY2FyZHMgPSBhc3luYyAoKSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIHNldExvYWRpbmcodHJ1ZSlcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGZsYXNoY2FyZHNTZXJ2aWNlLmdldEZsYXNoY2FyZHMoc2VsZWN0ZWRTZXQgfHwgdW5kZWZpbmVkKVxuICAgICAgaWYgKHJlc3VsdC5zdWNjZXNzICYmIHJlc3VsdC5kYXRhKSB7XG4gICAgICAgIHNldEZsYXNoY2FyZHMocmVzdWx0LmRhdGEuZmxhc2hjYXJkcylcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNldEVycm9yKHJlc3VsdC5lcnJvciB8fCAnRmFpbGVkIHRvIGxvYWQgZmxhc2hjYXJkcycpXG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBzZXRFcnJvcignRmFpbGVkIHRvIGxvYWQgZmxhc2hjYXJkcycpXG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHNldExvYWRpbmcoZmFsc2UpXG4gICAgfVxuICB9XG5cbiAgLy8gUmVsb2FkIGZsYXNoY2FyZHMgd2hlbiBzZWxlY3RlZFNldCBjaGFuZ2VzXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgbG9hZEZsYXNoY2FyZHMoKVxuICB9LCBbc2VsZWN0ZWRTZXRdKVxuXG4gIC8vIEZpbHRlciBkYXRhXG4gIGNvbnN0IGZpbHRlcmVkU2V0cyA9IGNhcmRTZXRzLmZpbHRlcihzZXQgPT5cbiAgICBzZXQubmFtZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaFRlcm0udG9Mb3dlckNhc2UoKSkgfHxcbiAgICBzZXQuZGVzY3JpcHRpb24udG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhzZWFyY2hUZXJtLnRvTG93ZXJDYXNlKCkpXG4gIClcblxuICBjb25zdCBmaWx0ZXJlZENhcmRzID0gZmxhc2hjYXJkcy5maWx0ZXIoY2FyZCA9PiB7XG4gICAgaWYgKHNlYXJjaFRlcm0pIHtcbiAgICAgIHJldHVybiBjYXJkLndvcmQ/LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc2VhcmNoVGVybS50b0xvd2VyQ2FzZSgpKSB8fFxuICAgICAgICAgICAgIGNhcmQudHJhbnNsYXRpb24/LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc2VhcmNoVGVybS50b0xvd2VyQ2FzZSgpKVxuICAgIH1cbiAgICByZXR1cm4gdHJ1ZVxuICB9KVxuXG4gIC8vIEFkZCBsb2FkaW5nIGFuZCBlcnJvciBzdGF0ZXNcbiAgaWYgKGxvYWRpbmcpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJtaW4taC1zY3JlZW4gYmctZ3JheS01MCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlclwiPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtbGdcIj7ovInlhaXkuK0uLi48L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIClcbiAgfVxuXG4gIGlmIChlcnJvcikge1xuICAgIHJldHVybiAoXG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1pbi1oLXNjcmVlbiBiZy1ncmF5LTUwIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1yZWQtNjAwXCI+e2Vycm9yfTwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgKVxuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cIm1pbi1oLXNjcmVlbiBiZy1ncmF5LTUwXCI+XG4gICAgICB7LyogSGVhZGVyICovfVxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJiZy13aGl0ZSBib3JkZXItYiBib3JkZXItZ3JheS0yMDBcIj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtYXgtdy03eGwgbXgtYXV0byBweC00IHNtOnB4LTYgbGc6cHgtOFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBqdXN0aWZ5LWJldHdlZW4gaXRlbXMtY2VudGVyIHB5LTZcIj5cbiAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgIDxoMSBjbGFzc05hbWU9XCJ0ZXh0LTN4bCBmb250LWJvbGQgdGV4dC1ncmF5LTkwMFwiPuipnuWNoeeuoeeQhjwvaDE+XG4gICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cIm10LTEgdGV4dC1zbSB0ZXh0LWdyYXktNTAwXCI+566h55CG5L2g55qE6Kme5Y2h6ZuG5ZCIPC9wPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIHNwYWNlLXgtNFwiPlxuICAgICAgICAgICAgICA8TGlua1xuICAgICAgICAgICAgICAgIGhyZWY9XCIvZ2VuZXJhdGVcIlxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImJnLXByaW1hcnkgdGV4dC13aGl0ZSBweC00IHB5LTIgcm91bmRlZC1sZyBob3ZlcjpiZy1wcmltYXJ5LzkwIHRyYW5zaXRpb24tY29sb3JzXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIEFJIOeUn+aIkOipnuWNoVxuICAgICAgICAgICAgICA8L0xpbms+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIHsvKiBUYWJzICovfVxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBzcGFjZS14LThcIj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gc2V0QWN0aXZlVGFiKCdteS1jYXJkcycpfVxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2BwYi00IHB4LTEgYm9yZGVyLWItMiBmb250LW1lZGl1bSB0ZXh0LXNtICR7XG4gICAgICAgICAgICAgICAgYWN0aXZlVGFiID09PSAnbXktY2FyZHMnXG4gICAgICAgICAgICAgICAgICA/ICdib3JkZXItcHJpbWFyeSB0ZXh0LXByaW1hcnknXG4gICAgICAgICAgICAgICAgICA6ICdib3JkZXItdHJhbnNwYXJlbnQgdGV4dC1ncmF5LTUwMCBob3Zlcjp0ZXh0LWdyYXktNzAwIGhvdmVyOmJvcmRlci1ncmF5LTMwMCdcbiAgICAgICAgICAgICAgfWB9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIOaIkeeahOWNoee1hCAoe2ZpbHRlcmVkU2V0cy5sZW5ndGh9KVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldEFjdGl2ZVRhYignYWxsLWNhcmRzJyl9XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17YHBiLTQgcHgtMSBib3JkZXItYi0yIGZvbnQtbWVkaXVtIHRleHQtc20gJHtcbiAgICAgICAgICAgICAgICBhY3RpdmVUYWIgPT09ICdhbGwtY2FyZHMnXG4gICAgICAgICAgICAgICAgICA/ICdib3JkZXItcHJpbWFyeSB0ZXh0LXByaW1hcnknXG4gICAgICAgICAgICAgICAgICA6ICdib3JkZXItdHJhbnNwYXJlbnQgdGV4dC1ncmF5LTUwMCBob3Zlcjp0ZXh0LWdyYXktNzAwIGhvdmVyOmJvcmRlci1ncmF5LTMwMCdcbiAgICAgICAgICAgICAgfWB9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIOaJgOacieipnuWNoSAoe2ZpbHRlcmVkQ2FyZHMubGVuZ3RofSlcbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICB7LyogQ29udGVudCAqL31cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwibWF4LXctN3hsIG14LWF1dG8gcHgtNCBzbTpweC02IGxnOnB4LTggcHktOFwiPlxuICAgICAgICB7LyogU2VhcmNoICovfVxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1iLTZcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInJlbGF0aXZlXCI+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICB2YWx1ZT17c2VhcmNoVGVybX1cbiAgICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiBzZXRTZWFyY2hUZXJtKGUudGFyZ2V0LnZhbHVlKX1cbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCLmkJzlsIvoqZ7ljaHmiJbljaHntYQuLi5cIlxuICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ3LWZ1bGwgcGwtMTAgcHItNCBweS0yIGJvcmRlciBib3JkZXItZ3JheS0zMDAgcm91bmRlZC1sZyBmb2N1czpyaW5nLTIgZm9jdXM6cmluZy1wcmltYXJ5IGZvY3VzOmJvcmRlci10cmFuc3BhcmVudFwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJhYnNvbHV0ZSBpbnNldC15LTAgbGVmdC0wIHBsLTMgZmxleCBpdGVtcy1jZW50ZXIgcG9pbnRlci1ldmVudHMtbm9uZVwiPlxuICAgICAgICAgICAgICA8c3ZnIGNsYXNzTmFtZT1cImgtNSB3LTUgdGV4dC1ncmF5LTQwMFwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiPlxuICAgICAgICAgICAgICAgIDxwYXRoIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZUxpbmVqb2luPVwicm91bmRcIiBzdHJva2VXaWR0aD17Mn0gZD1cIk0yMSAyMWwtNi02bTItNWE3IDcgMCAxMS0xNCAwIDcgNyAwIDAxMTQgMHpcIiAvPlxuICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICB7LyogQ2FyZCBTZXRzIFRhYiAqL31cbiAgICAgICAge2FjdGl2ZVRhYiA9PT0gJ215LWNhcmRzJyAmJiAoXG4gICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBqdXN0aWZ5LWJldHdlZW4gaXRlbXMtY2VudGVyIG1iLTRcIj5cbiAgICAgICAgICAgICAgPGgzIGNsYXNzTmFtZT1cInRleHQtbGcgZm9udC1zZW1pYm9sZFwiPuWFsSB7ZmlsdGVyZWRTZXRzLmxlbmd0aH0g5YCL5Y2h57WEPC9oMz5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICB7ZmlsdGVyZWRTZXRzLmxlbmd0aCA9PT0gMCA/IChcbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LWNlbnRlciBweS0xMlwiPlxuICAgICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQtZ3JheS01MDAgbWItNFwiPumChOaykuacieipnuWNoembhuWQiDwvcD5cbiAgICAgICAgICAgICAgICA8TGlua1xuICAgICAgICAgICAgICAgICAgaHJlZj1cIi9nZW5lcmF0ZVwiXG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJiZy1wcmltYXJ5IHRleHQtd2hpdGUgcHgtNCBweS0yIHJvdW5kZWQtbGcgaG92ZXI6YmctcHJpbWFyeS85MCB0cmFuc2l0aW9uLWNvbG9yc1wiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAg5Ym15bu656ys5LiA5YCL5Y2h57WEXG4gICAgICAgICAgICAgICAgPC9MaW5rPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZ3JpZCBncmlkLWNvbHMtMSBtZDpncmlkLWNvbHMtMiBsZzpncmlkLWNvbHMtMyBnYXAtNFwiPlxuICAgICAgICAgICAgICAgIHtmaWx0ZXJlZFNldHMubWFwKHNldCA9PiAoXG4gICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgIGtleT17c2V0LmlkfVxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJib3JkZXIgcm91bmRlZC1sZyBob3ZlcjpzaGFkb3ctbGcgdHJhbnNpdGlvbi1zaGFkb3cgY3Vyc29yLXBvaW50ZXJcIlxuICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgc2V0U2VsZWN0ZWRTZXQoc2V0LmlkKVxuICAgICAgICAgICAgICAgICAgICAgIHNldEFjdGl2ZVRhYignYWxsLWNhcmRzJylcbiAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2Ake3NldC5jb2xvcn0gdGV4dC13aGl0ZSBwLTQgcm91bmRlZC10LWxnYH0+XG4gICAgICAgICAgICAgICAgICAgICAgPGg0IGNsYXNzTmFtZT1cImZvbnQtc2VtaWJvbGQgdGV4dC1sZ1wiPntzZXQubmFtZX08L2g0PlxuICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQtc20gb3BhY2l0eS05MFwiPntzZXQuZGVzY3JpcHRpb259PC9wPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwLTQgYmctd2hpdGUgcm91bmRlZC1iLWxnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGp1c3RpZnktYmV0d2VlbiBpdGVtcy1jZW50ZXIgdGV4dC1zbSB0ZXh0LWdyYXktNjAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57c2V0LmNhcmRDb3VudH0g5by16Kme5Y2hPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+6YCy5bqmOiB7c2V0LnByb2dyZXNzfSU8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKX1cblxuICAgICAgICB7LyogQWxsIENhcmRzIFRhYiAqL31cbiAgICAgICAge2FjdGl2ZVRhYiA9PT0gJ2FsbC1jYXJkcycgJiYgKFxuICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXgganVzdGlmeS1iZXR3ZWVuIGl0ZW1zLWNlbnRlciBtYi00XCI+XG4gICAgICAgICAgICAgIDxoMyBjbGFzc05hbWU9XCJ0ZXh0LWxnIGZvbnQtc2VtaWJvbGRcIj7lhbEge2ZpbHRlcmVkQ2FyZHMubGVuZ3RofSDlgIvoqZ7ljaE8L2gzPlxuICAgICAgICAgICAgICB7c2VsZWN0ZWRTZXQgJiYgKFxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldFNlbGVjdGVkU2V0KG51bGwpfVxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidGV4dC1zbSB0ZXh0LWdyYXktNjAwIGhvdmVyOnRleHQtZ3JheS05MDBcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIOmhr+ekuuaJgOacieipnuWNoVxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIHtmaWx0ZXJlZENhcmRzLmxlbmd0aCA9PT0gMCA/IChcbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LWNlbnRlciBweS0xMlwiPlxuICAgICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQtZ3JheS01MDAgbWItNFwiPuaykuacieaJvuWIsOipnuWNoTwvcD5cbiAgICAgICAgICAgICAgICA8TGlua1xuICAgICAgICAgICAgICAgICAgaHJlZj1cIi9nZW5lcmF0ZVwiXG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJiZy1wcmltYXJ5IHRleHQtd2hpdGUgcHgtNCBweS0yIHJvdW5kZWQtbGcgaG92ZXI6YmctcHJpbWFyeS85MCB0cmFuc2l0aW9uLWNvbG9yc1wiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAg5Ym15bu65paw6Kme5Y2hXG4gICAgICAgICAgICAgICAgPC9MaW5rPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwic3BhY2UteS0zXCI+XG4gICAgICAgICAgICAgICAge2ZpbHRlcmVkQ2FyZHMubWFwKGNhcmQgPT4gKFxuICAgICAgICAgICAgICAgICAgPGRpdiBrZXk9e2NhcmQuaWR9IGNsYXNzTmFtZT1cImJnLXdoaXRlIGJvcmRlciByb3VuZGVkLWxnIHAtNCBob3ZlcjpzaGFkb3ctbWQgdHJhbnNpdGlvbi1zaGFkb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW5cIj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXgtMVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBzcGFjZS14LTRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4LTFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIHNwYWNlLXgtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0IGNsYXNzTmFtZT1cImZvbnQtc2VtaWJvbGQgdGV4dC1sZ1wiPntjYXJkLndvcmQgfHwgJ+acquioreWumid9PC9oND5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtc20gdGV4dC1ncmF5LTUwMFwiPntjYXJkLnBhcnRPZlNwZWVjaH08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y2FyZC5wcm9udW5jaWF0aW9uICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC1zbSB0ZXh0LWJsdWUtNjAwXCI+e2NhcmQucHJvbnVuY2lhdGlvbn08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQtZ3JheS03MDAgbXQtMVwiPntjYXJkLnRyYW5zbGF0aW9uIHx8ICfmnKroqK3lrponfTwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y2FyZC5leGFtcGxlICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQtc20gdGV4dC1ncmF5LTYwMCBtdC0yIGl0YWxpY1wiPuS+i+WPpToge2NhcmQuZXhhbXBsZX08L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIHNwYWNlLXgtNCBtdC0yIHRleHQteHMgdGV4dC1ncmF5LTUwMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+5Y2h57WEOiB7Y2FyZC5jYXJkU2V0Lm5hbWV9PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+54af57e05bqmOiB7Y2FyZC5tYXN0ZXJ5TGV2ZWx9LzU8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj7opIfnv5I6IHtjYXJkLnRpbWVzUmV2aWV3ZWR9IOasoTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPuS4i+asoeikh+e/kjoge25ldyBEYXRlKGNhcmQubmV4dFJldmlld0RhdGUpLnRvTG9jYWxlRGF0ZVN0cmluZygpfTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIHNwYWNlLXgtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVE9ETzog5a+m5L2c57eo6Lyv5Yqf6IO9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ+e3qOi8r+ipnuWNoTonLCBjYXJkLmlkKVxuICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ0ZXh0LWJsdWUtNjAwIGhvdmVyOnRleHQtYmx1ZS04MDAgdGV4dC1zbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIOe3qOi8r1xuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUT0RPOiDlr6bkvZzliKrpmaTlip/og71cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygn5Yiq6Zmk6Kme5Y2hOicsIGNhcmQuaWQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInRleHQtcmVkLTYwMCBob3Zlcjp0ZXh0LXJlZC04MDAgdGV4dC1zbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIOWIqumZpFxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKX1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICApXG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEZsYXNoY2FyZHNQYWdlKCkge1xuICByZXR1cm4gKFxuICAgIDxQcm90ZWN0ZWRSb3V0ZT5cbiAgICAgIDxGbGFzaGNhcmRzQ29udGVudCAvPlxuICAgIDwvUHJvdGVjdGVkUm91dGU+XG4gIClcbn0iXSwibmFtZXMiOlsidXNlU3RhdGUiLCJ1c2VFZmZlY3QiLCJMaW5rIiwiUHJvdGVjdGVkUm91dGUiLCJmbGFzaGNhcmRzU2VydmljZSIsIkZsYXNoY2FyZHNDb250ZW50IiwiYWN0aXZlVGFiIiwic2V0QWN0aXZlVGFiIiwic2VsZWN0ZWRTZXQiLCJzZXRTZWxlY3RlZFNldCIsInNlYXJjaFRlcm0iLCJzZXRTZWFyY2hUZXJtIiwiY2FyZFNldHMiLCJzZXRDYXJkU2V0cyIsImZsYXNoY2FyZHMiLCJzZXRGbGFzaGNhcmRzIiwibG9hZGluZyIsInNldExvYWRpbmciLCJlcnJvciIsInNldEVycm9yIiwibG9hZENhcmRTZXRzIiwibG9hZEZsYXNoY2FyZHMiLCJyZXN1bHQiLCJnZXRDYXJkU2V0cyIsInN1Y2Nlc3MiLCJkYXRhIiwic2V0cyIsImVyciIsImdldEZsYXNoY2FyZHMiLCJ1bmRlZmluZWQiLCJmaWx0ZXJlZFNldHMiLCJmaWx0ZXIiLCJzZXQiLCJuYW1lIiwidG9Mb3dlckNhc2UiLCJpbmNsdWRlcyIsImRlc2NyaXB0aW9uIiwiZmlsdGVyZWRDYXJkcyIsImNhcmQiLCJ3b3JkIiwidHJhbnNsYXRpb24iLCJkaXYiLCJjbGFzc05hbWUiLCJoMSIsInAiLCJocmVmIiwiYnV0dG9uIiwib25DbGljayIsImxlbmd0aCIsImlucHV0IiwidHlwZSIsInZhbHVlIiwib25DaGFuZ2UiLCJlIiwidGFyZ2V0IiwicGxhY2Vob2xkZXIiLCJzdmciLCJmaWxsIiwic3Ryb2tlIiwidmlld0JveCIsInBhdGgiLCJzdHJva2VMaW5lY2FwIiwic3Ryb2tlTGluZWpvaW4iLCJzdHJva2VXaWR0aCIsImQiLCJoMyIsIm1hcCIsImlkIiwiY29sb3IiLCJoNCIsInNwYW4iLCJjYXJkQ291bnQiLCJwcm9ncmVzcyIsInBhcnRPZlNwZWVjaCIsInByb251bmNpYXRpb24iLCJleGFtcGxlIiwiY2FyZFNldCIsIm1hc3RlcnlMZXZlbCIsInRpbWVzUmV2aWV3ZWQiLCJEYXRlIiwibmV4dFJldmlld0RhdGUiLCJ0b0xvY2FsZURhdGVTdHJpbmciLCJjb25zb2xlIiwibG9nIiwiRmxhc2hjYXJkc1BhZ2UiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./app/flashcards/page.tsx\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ FlashcardsPage)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react-jsx-dev-runtime.js\");\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! next/link */ \"(ssr)/./node_modules/next/dist/client/app-dir/link.js\");\n/* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(next_link__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _components_ProtectedRoute__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/components/ProtectedRoute */ \"(ssr)/./components/ProtectedRoute.tsx\");\n/* harmony import */ var _components_Navigation__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/components/Navigation */ \"(ssr)/./components/Navigation.tsx\");\n/* harmony import */ var _components_FlashcardForm__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/components/FlashcardForm */ \"(ssr)/./components/FlashcardForm.tsx\");\n/* harmony import */ var _lib_services_flashcards__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @/lib/services/flashcards */ \"(ssr)/./lib/services/flashcards.ts\");\n/* __next_internal_client_entry_do_not_use__ default auto */ \n\n\n\n\n\n\nfunction FlashcardsContent() {\n const [activeTab, setActiveTab] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)('my-cards');\n const [selectedSet, setSelectedSet] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);\n const [searchTerm, setSearchTerm] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)('');\n // Real data from API\n const [cardSets, setCardSets] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)([]);\n const [flashcards, setFlashcards] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)([]);\n const [loading, setLoading] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(true);\n const [error, setError] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);\n // Form states\n const [showForm, setShowForm] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n const [editingCard, setEditingCard] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);\n // Load data from API\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)({\n \"FlashcardsContent.useEffect\": ()=>{\n loadCardSets();\n loadFlashcards();\n }\n }[\"FlashcardsContent.useEffect\"], []);\n const loadCardSets = async ()=>{\n try {\n const result = await _lib_services_flashcards__WEBPACK_IMPORTED_MODULE_6__.flashcardsService.getCardSets();\n if (result.success && result.data) {\n setCardSets(result.data.sets);\n } else {\n setError(result.error || 'Failed to load card sets');\n }\n } catch (err) {\n setError('Failed to load card sets');\n }\n };\n const loadFlashcards = async ()=>{\n try {\n setLoading(true);\n const result = await _lib_services_flashcards__WEBPACK_IMPORTED_MODULE_6__.flashcardsService.getFlashcards(selectedSet || undefined);\n if (result.success && result.data) {\n setFlashcards(result.data.flashcards);\n } else {\n setError(result.error || 'Failed to load flashcards');\n }\n } catch (err) {\n setError('Failed to load flashcards');\n } finally{\n setLoading(false);\n }\n };\n // Reload flashcards when selectedSet changes\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)({\n \"FlashcardsContent.useEffect\": ()=>{\n loadFlashcards();\n }\n }[\"FlashcardsContent.useEffect\"], [\n selectedSet\n ]);\n // Handle form operations\n const handleFormSuccess = ()=>{\n setShowForm(false);\n setEditingCard(null);\n loadFlashcards();\n loadCardSets();\n };\n const handleEdit = (card)=>{\n setEditingCard(card);\n setShowForm(true);\n };\n const handleDelete = async (card)=>{\n if (!confirm(`確定要刪除詞卡「${card.word}」嗎?`)) {\n return;\n }\n try {\n const result = await _lib_services_flashcards__WEBPACK_IMPORTED_MODULE_6__.flashcardsService.deleteFlashcard(card.id);\n if (result.success) {\n loadFlashcards();\n loadCardSets();\n } else {\n alert(result.error || '刪除失敗');\n }\n } catch (err) {\n alert('刪除失敗,請重試');\n }\n };\n // Filter data\n const filteredSets = cardSets.filter((set)=>set.name.toLowerCase().includes(searchTerm.toLowerCase()) || set.description.toLowerCase().includes(searchTerm.toLowerCase()));\n const filteredCards = flashcards.filter((card)=>{\n if (searchTerm) {\n return card.word?.toLowerCase().includes(searchTerm.toLowerCase()) || card.translation?.toLowerCase().includes(searchTerm.toLowerCase());\n }\n return true;\n });\n // Add loading and error states\n if (loading) {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"min-h-screen bg-gray-50 flex items-center justify-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-lg\",\n children: \"載入中...\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 114,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 113,\n columnNumber: 7\n }, this);\n }\n if (error) {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"min-h-screen bg-gray-50 flex items-center justify-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-red-600\",\n children: error\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 122,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 121,\n columnNumber: 7\n }, this);\n }\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"min-h-screen bg-gray-50\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_Navigation__WEBPACK_IMPORTED_MODULE_4__.Navigation, {}, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 130,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-white border-b border-gray-200\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"max-w-7xl mx-auto px-4 sm:px-6 lg:px-8\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex justify-between items-center py-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h1\", {\n className: \"text-3xl font-bold text-gray-900\",\n children: \"詞卡管理\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 137,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"mt-1 text-sm text-gray-500\",\n children: \"管理你的詞卡集合\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 138,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 136,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center space-x-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>setShowForm(true),\n className: \"bg-green-600 text-white px-4 py-2 rounded-lg hover:bg-green-700 transition-colors\",\n children: \"新增詞卡\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 141,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_link__WEBPACK_IMPORTED_MODULE_2___default()), {\n href: \"/generate\",\n className: \"bg-primary text-white px-4 py-2 rounded-lg hover:bg-primary/90 transition-colors\",\n children: \"AI 生成詞卡\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 147,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 140,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 135,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex space-x-8\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>setActiveTab('my-cards'),\n className: `pb-4 px-1 border-b-2 font-medium text-sm ${activeTab === 'my-cards' ? 'border-primary text-primary' : 'border-transparent text-gray-500 hover:text-gray-700 hover:border-gray-300'}`,\n children: [\n \"我的卡組 (\",\n filteredSets.length,\n \")\"\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 158,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>setActiveTab('all-cards'),\n className: `pb-4 px-1 border-b-2 font-medium text-sm ${activeTab === 'all-cards' ? 'border-primary text-primary' : 'border-transparent text-gray-500 hover:text-gray-700 hover:border-gray-300'}`,\n children: [\n \"所有詞卡 (\",\n filteredCards.length,\n \")\"\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 168,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 157,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 134,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 133,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-8\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mb-6\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"relative\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"text\",\n value: searchTerm,\n onChange: (e)=>setSearchTerm(e.target.value),\n placeholder: \"搜尋詞卡或卡組...\",\n className: \"w-full pl-10 pr-4 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-primary focus:border-transparent\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 187,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute inset-y-0 left-0 pl-3 flex items-center pointer-events-none\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n className: \"h-5 w-5 text-gray-400\",\n fill: \"none\",\n stroke: \"currentColor\",\n viewBox: \"0 0 24 24\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n d: \"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 196,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 195,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 194,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 186,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 185,\n columnNumber: 9\n }, this),\n activeTab === 'my-cards' && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex justify-between items-center mb-4\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h3\", {\n className: \"text-lg font-semibold\",\n children: [\n \"共 \",\n filteredSets.length,\n \" 個卡組\"\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 206,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 205,\n columnNumber: 13\n }, this),\n filteredSets.length === 0 ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-center py-12\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-gray-500 mb-4\",\n children: \"還沒有詞卡集合\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 211,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_link__WEBPACK_IMPORTED_MODULE_2___default()), {\n href: \"/generate\",\n className: \"bg-primary text-white px-4 py-2 rounded-lg hover:bg-primary/90 transition-colors\",\n children: \"創建第一個卡組\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 212,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 210,\n columnNumber: 15\n }, this) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4\",\n children: filteredSets.map((set)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"border rounded-lg hover:shadow-lg transition-shadow cursor-pointer\",\n onClick: ()=>{\n setSelectedSet(set.id);\n setActiveTab('all-cards');\n },\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `${set.color} text-white p-4 rounded-t-lg`,\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h4\", {\n className: \"font-semibold text-lg\",\n children: set.name\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 231,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-sm opacity-90\",\n children: set.description\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 232,\n columnNumber: 23\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 230,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"p-4 bg-white rounded-b-lg\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex justify-between items-center text-sm text-gray-600\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n children: [\n set.cardCount,\n \" 張詞卡\"\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 236,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n children: [\n \"進度: \",\n set.progress,\n \"%\"\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 237,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 235,\n columnNumber: 23\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 234,\n columnNumber: 21\n }, this)\n ]\n }, set.id, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 222,\n columnNumber: 19\n }, this))\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 220,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 204,\n columnNumber: 11\n }, this),\n activeTab === 'all-cards' && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex justify-between items-center mb-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h3\", {\n className: \"text-lg font-semibold\",\n children: [\n \"共 \",\n filteredCards.length,\n \" 個詞卡\"\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 251,\n columnNumber: 15\n }, this),\n selectedSet && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>setSelectedSet(null),\n className: \"text-sm text-gray-600 hover:text-gray-900\",\n children: \"顯示所有詞卡\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 253,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 250,\n columnNumber: 13\n }, this),\n filteredCards.length === 0 ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-center py-12\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-gray-500 mb-4\",\n children: \"沒有找到詞卡\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 264,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_link__WEBPACK_IMPORTED_MODULE_2___default()), {\n href: \"/generate\",\n className: \"bg-primary text-white px-4 py-2 rounded-lg hover:bg-primary/90 transition-colors\",\n children: \"創建新詞卡\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 265,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 263,\n columnNumber: 15\n }, this) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-y-3\",\n children: filteredCards.map((card)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-white border rounded-lg p-4 hover:shadow-md transition-shadow\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center justify-between\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center space-x-4\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center space-x-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h4\", {\n className: \"font-semibold text-lg\",\n children: card.word || '未設定'\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 281,\n columnNumber: 31\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-sm text-gray-500\",\n children: card.partOfSpeech\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 282,\n columnNumber: 31\n }, this),\n card.pronunciation && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-sm text-blue-600\",\n children: card.pronunciation\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 284,\n columnNumber: 33\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 280,\n columnNumber: 29\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-gray-700 mt-1\",\n children: card.translation || '未設定'\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 287,\n columnNumber: 29\n }, this),\n card.example && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-sm text-gray-600 mt-2 italic\",\n children: [\n \"例句: \",\n card.example\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 289,\n columnNumber: 31\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center space-x-4 mt-2 text-xs text-gray-500\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n children: [\n \"卡組: \",\n card.cardSet.name\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 292,\n columnNumber: 31\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n children: [\n \"熟練度: \",\n card.masteryLevel,\n \"/5\"\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 293,\n columnNumber: 31\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n children: [\n \"複習: \",\n card.timesReviewed,\n \" 次\"\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 294,\n columnNumber: 31\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n children: [\n \"下次複習: \",\n new Date(card.nextReviewDate).toLocaleDateString()\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 295,\n columnNumber: 31\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 291,\n columnNumber: 29\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 279,\n columnNumber: 27\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 278,\n columnNumber: 25\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 277,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center space-x-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>handleEdit(card),\n className: \"text-blue-600 hover:text-blue-800 text-sm\",\n children: \"編輯\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 301,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>handleDelete(card),\n className: \"text-red-600 hover:text-red-800 text-sm\",\n children: \"刪除\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 307,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 300,\n columnNumber: 23\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 276,\n columnNumber: 21\n }, this)\n }, card.id, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 275,\n columnNumber: 19\n }, this))\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 273,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 249,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 183,\n columnNumber: 7\n }, this),\n showForm && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_FlashcardForm__WEBPACK_IMPORTED_MODULE_5__.FlashcardForm, {\n cardSets: cardSets,\n initialData: editingCard ? {\n id: editingCard.id,\n cardSetId: editingCard.cardSet ? cardSets.find((cs)=>cs.name === editingCard.cardSet.name)?.id || cardSets[0]?.id : cardSets[0]?.id,\n english: editingCard.word,\n chinese: editingCard.translation,\n pronunciation: editingCard.pronunciation,\n partOfSpeech: editingCard.partOfSpeech,\n example: editingCard.example\n } : undefined,\n isEdit: !!editingCard,\n onSuccess: handleFormSuccess,\n onCancel: ()=>{\n setShowForm(false);\n setEditingCard(null);\n }\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 325,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 128,\n columnNumber: 5\n }, this);\n}\nfunction FlashcardsPage() {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ProtectedRoute__WEBPACK_IMPORTED_MODULE_3__.ProtectedRoute, {\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(FlashcardsContent, {}, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 351,\n columnNumber: 7\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 350,\n columnNumber: 5\n }, this);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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aUIsV0FBVTtzRUFDWDs7Ozs7Ozs7Ozs7Ozs7Ozs7O3VDQW5DR2pCLEtBQUtLLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7WUFpRDVCckIsMEJBQ0MsOERBQUNqQixvRUFBYUE7Z0JBQ1pTLFVBQVVBO2dCQUNWZ0YsYUFBYXRFLGNBQWM7b0JBQ3pCbUIsSUFBSW5CLFlBQVltQixFQUFFO29CQUNsQm9ELFdBQVd2RSxZQUFZZ0UsT0FBTyxHQUFHMUUsU0FBU2tGLElBQUksQ0FBQ0MsQ0FBQUEsS0FBTUEsR0FBR2pELElBQUksS0FBS3hCLFlBQVlnRSxPQUFPLENBQUN4QyxJQUFJLEdBQUdMLE1BQU03QixRQUFRLENBQUMsRUFBRSxFQUFFNkIsS0FBSzdCLFFBQVEsQ0FBQyxFQUFFLEVBQUU2QjtvQkFDakl1RCxTQUFTMUUsWUFBWWlCLElBQUk7b0JBQ3pCMEQsU0FBUzNFLFlBQVk2QixXQUFXO29CQUNoQ2lDLGVBQWU5RCxZQUFZOEQsYUFBYTtvQkFDeENELGNBQWM3RCxZQUFZNkQsWUFBWTtvQkFDdENFLFNBQVMvRCxZQUFZK0QsT0FBTztnQkFDOUIsSUFBSXBEO2dCQUNKaUUsUUFBUSxDQUFDLENBQUM1RTtnQkFDVjZFLFdBQVdqRTtnQkFDWGtFLFVBQVU7b0JBQ1IvRSxZQUFZO29CQUNaRSxlQUFlO2dCQUNqQjs7Ozs7Ozs7Ozs7O0FBS1Y7QUFFZSxTQUFTOEU7SUFDdEIscUJBQ0UsOERBQUNwRyxzRUFBY0E7a0JBQ2IsNEVBQUNJOzs7Ozs7Ozs7O0FBR1AiLCJzb3VyY2VzIjpbIi9Vc2Vycy9qZXR0Y2hlbmcxMDE4L2NvZGUvZHJhbWFsaW5nLXZvY2FiLWxlYXJuaW5nL2Zyb250ZW5kL2FwcC9mbGFzaGNhcmRzL3BhZ2UudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2UgY2xpZW50J1xuXG5pbXBvcnQgeyB1c2VTdGF0ZSwgdXNlRWZmZWN0IH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgTGluayBmcm9tICduZXh0L2xpbmsnXG5pbXBvcnQgeyBQcm90ZWN0ZWRSb3V0ZSB9IGZyb20gJ0AvY29tcG9uZW50cy9Qcm90ZWN0ZWRSb3V0ZSdcbmltcG9ydCB7IE5hdmlnYXRpb24gfSBmcm9tICdAL2NvbXBvbmVudHMvTmF2aWdhdGlvbidcbmltcG9ydCB7IEZsYXNoY2FyZEZvcm0gfSBmcm9tICdAL2NvbXBvbmVudHMvRmxhc2hjYXJkRm9ybSdcbmltcG9ydCB7IGZsYXNoY2FyZHNTZXJ2aWNlLCB0eXBlIENhcmRTZXQsIHR5cGUgRmxhc2hjYXJkIH0gZnJvbSAnQC9saWIvc2VydmljZXMvZmxhc2hjYXJkcydcblxuZnVuY3Rpb24gRmxhc2hjYXJkc0NvbnRlbnQoKSB7XG4gIGNvbnN0IFthY3RpdmVUYWIsIHNldEFjdGl2ZVRhYl0gPSB1c2VTdGF0ZSgnbXktY2FyZHMnKVxuICBjb25zdCBbc2VsZWN0ZWRTZXQsIHNldFNlbGVjdGVkU2V0XSA9IHVzZVN0YXRlPHN0cmluZyB8IG51bGw+KG51bGwpXG4gIGNvbnN0IFtzZWFyY2hUZXJtLCBzZXRTZWFyY2hUZXJtXSA9IHVzZVN0YXRlKCcnKVxuXG4gIC8vIFJlYWwgZGF0YSBmcm9tIEFQSVxuICBjb25zdCBbY2FyZFNldHMsIHNldENhcmRTZXRzXSA9IHVzZVN0YXRlPENhcmRTZXRbXT4oW10pXG4gIGNvbnN0IFtmbGFzaGNhcmRzLCBzZXRGbGFzaGNhcmRzXSA9IHVzZVN0YXRlPEZsYXNoY2FyZFtdPihbXSlcbiAgY29uc3QgW2xvYWRpbmcsIHNldExvYWRpbmddID0gdXNlU3RhdGUodHJ1ZSlcbiAgY29uc3QgW2Vycm9yLCBzZXRFcnJvcl0gPSB1c2VTdGF0ZTxzdHJpbmcgfCBudWxsPihudWxsKVxuXG4gIC8vIEZvcm0gc3RhdGVzXG4gIGNvbnN0IFtzaG93Rm9ybSwgc2V0U2hvd0Zvcm1dID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtlZGl0aW5nQ2FyZCwgc2V0RWRpdGluZ0NhcmRdID0gdXNlU3RhdGU8Rmxhc2hjYXJkIHwgbnVsbD4obnVsbClcblxuICAvLyBMb2FkIGRhdGEgZnJvbSBBUElcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBsb2FkQ2FyZFNldHMoKVxuICAgIGxvYWRGbGFzaGNhcmRzKClcbiAgfSwgW10pXG5cbiAgY29uc3QgbG9hZENhcmRTZXRzID0gYXN5bmMgKCkgPT4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBmbGFzaGNhcmRzU2VydmljZS5nZXRDYXJkU2V0cygpXG4gICAgICBpZiAocmVzdWx0LnN1Y2Nlc3MgJiYgcmVzdWx0LmRhdGEpIHtcbiAgICAgICAgc2V0Q2FyZFNldHMocmVzdWx0LmRhdGEuc2V0cylcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNldEVycm9yKHJlc3VsdC5lcnJvciB8fCAnRmFpbGVkIHRvIGxvYWQgY2FyZCBzZXRzJylcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHNldEVycm9yKCdGYWlsZWQgdG8gbG9hZCBjYXJkIHNldHMnKVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGxvYWRGbGFzaGNhcmRzID0gYXN5bmMgKCkgPT4ge1xuICAgIHRyeSB7XG4gICAgICBzZXRMb2FkaW5nKHRydWUpXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBmbGFzaGNhcmRzU2VydmljZS5nZXRGbGFzaGNhcmRzKHNlbGVjdGVkU2V0IHx8IHVuZGVmaW5lZClcbiAgICAgIGlmIChyZXN1bHQuc3VjY2VzcyAmJiByZXN1bHQuZGF0YSkge1xuICAgICAgICBzZXRGbGFzaGNhcmRzKHJlc3VsdC5kYXRhLmZsYXNoY2FyZHMpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzZXRFcnJvcihyZXN1bHQuZXJyb3IgfHwgJ0ZhaWxlZCB0byBsb2FkIGZsYXNoY2FyZHMnKVxuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgc2V0RXJyb3IoJ0ZhaWxlZCB0byBsb2FkIGZsYXNoY2FyZHMnKVxuICAgIH0gZmluYWxseSB7XG4gICAgICBzZXRMb2FkaW5nKGZhbHNlKVxuICAgIH1cbiAgfVxuXG4gIC8vIFJlbG9hZCBmbGFzaGNhcmRzIHdoZW4gc2VsZWN0ZWRTZXQgY2hhbmdlc1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGxvYWRGbGFzaGNhcmRzKClcbiAgfSwgW3NlbGVjdGVkU2V0XSlcblxuICAvLyBIYW5kbGUgZm9ybSBvcGVyYXRpb25zXG4gIGNvbnN0IGhhbmRsZUZvcm1TdWNjZXNzID0gKCkgPT4ge1xuICAgIHNldFNob3dGb3JtKGZhbHNlKVxuICAgIHNldEVkaXRpbmdDYXJkKG51bGwpXG4gICAgbG9hZEZsYXNoY2FyZHMoKVxuICAgIGxvYWRDYXJkU2V0cygpXG4gIH1cblxuICBjb25zdCBoYW5kbGVFZGl0ID0gKGNhcmQ6IEZsYXNoY2FyZCkgPT4ge1xuICAgIHNldEVkaXRpbmdDYXJkKGNhcmQpXG4gICAgc2V0U2hvd0Zvcm0odHJ1ZSlcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZURlbGV0ZSA9IGFzeW5jIChjYXJkOiBGbGFzaGNhcmQpID0+IHtcbiAgICBpZiAoIWNvbmZpcm0oYOeiuuWumuimgeWIqumZpOipnuWNoeOAjCR7Y2FyZC53b3JkfeOAjeWXju+8n2ApKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZmxhc2hjYXJkc1NlcnZpY2UuZGVsZXRlRmxhc2hjYXJkKGNhcmQuaWQpXG4gICAgICBpZiAocmVzdWx0LnN1Y2Nlc3MpIHtcbiAgICAgICAgbG9hZEZsYXNoY2FyZHMoKVxuICAgICAgICBsb2FkQ2FyZFNldHMoKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYWxlcnQocmVzdWx0LmVycm9yIHx8ICfliKrpmaTlpLHmlZcnKVxuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgYWxlcnQoJ+WIqumZpOWkseaVl++8jOiri+mHjeippicpXG4gICAgfVxuICB9XG5cbiAgLy8gRmlsdGVyIGRhdGFcbiAgY29uc3QgZmlsdGVyZWRTZXRzID0gY2FyZFNldHMuZmlsdGVyKHNldCA9PlxuICAgIHNldC5uYW1lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc2VhcmNoVGVybS50b0xvd2VyQ2FzZSgpKSB8fFxuICAgIHNldC5kZXNjcmlwdGlvbi50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaFRlcm0udG9Mb3dlckNhc2UoKSlcbiAgKVxuXG4gIGNvbnN0IGZpbHRlcmVkQ2FyZHMgPSBmbGFzaGNhcmRzLmZpbHRlcihjYXJkID0+IHtcbiAgICBpZiAoc2VhcmNoVGVybSkge1xuICAgICAgcmV0dXJuIGNhcmQud29yZD8udG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhzZWFyY2hUZXJtLnRvTG93ZXJDYXNlKCkpIHx8XG4gICAgICAgICAgICAgY2FyZC50cmFuc2xhdGlvbj8udG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhzZWFyY2hUZXJtLnRvTG93ZXJDYXNlKCkpXG4gICAgfVxuICAgIHJldHVybiB0cnVlXG4gIH0pXG5cbiAgLy8gQWRkIGxvYWRpbmcgYW5kIGVycm9yIHN0YXRlc1xuICBpZiAobG9hZGluZykge1xuICAgIHJldHVybiAoXG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1pbi1oLXNjcmVlbiBiZy1ncmF5LTUwIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1sZ1wiPui8ieWFpeS4rS4uLjwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgKVxuICB9XG5cbiAgaWYgKGVycm9yKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwibWluLWgtc2NyZWVuIGJnLWdyYXktNTAgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LXJlZC02MDBcIj57ZXJyb3J9PC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICApXG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwibWluLWgtc2NyZWVuIGJnLWdyYXktNTBcIj5cbiAgICAgIHsvKiBOYXZpZ2F0aW9uICovfVxuICAgICAgPE5hdmlnYXRpb24gLz5cblxuICAgICAgey8qIFBhZ2UgSGVhZGVyICovfVxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJiZy13aGl0ZSBib3JkZXItYiBib3JkZXItZ3JheS0yMDBcIj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtYXgtdy03eGwgbXgtYXV0byBweC00IHNtOnB4LTYgbGc6cHgtOFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBqdXN0aWZ5LWJldHdlZW4gaXRlbXMtY2VudGVyIHB5LTZcIj5cbiAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgIDxoMSBjbGFzc05hbWU9XCJ0ZXh0LTN4bCBmb250LWJvbGQgdGV4dC1ncmF5LTkwMFwiPuipnuWNoeeuoeeQhjwvaDE+XG4gICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cIm10LTEgdGV4dC1zbSB0ZXh0LWdyYXktNTAwXCI+566h55CG5L2g55qE6Kme5Y2h6ZuG5ZCIPC9wPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIHNwYWNlLXgtNFwiPlxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gc2V0U2hvd0Zvcm0odHJ1ZSl9XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiYmctZ3JlZW4tNjAwIHRleHQtd2hpdGUgcHgtNCBweS0yIHJvdW5kZWQtbGcgaG92ZXI6YmctZ3JlZW4tNzAwIHRyYW5zaXRpb24tY29sb3JzXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIOaWsOWinuipnuWNoVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPExpbmtcbiAgICAgICAgICAgICAgICBocmVmPVwiL2dlbmVyYXRlXCJcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJiZy1wcmltYXJ5IHRleHQtd2hpdGUgcHgtNCBweS0yIHJvdW5kZWQtbGcgaG92ZXI6YmctcHJpbWFyeS85MCB0cmFuc2l0aW9uLWNvbG9yc1wiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBBSSDnlJ/miJDoqZ7ljaFcbiAgICAgICAgICAgICAgPC9MaW5rPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICB7LyogVGFicyAqL31cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggc3BhY2UteC04XCI+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldEFjdGl2ZVRhYignbXktY2FyZHMnKX1cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgcGItNCBweC0xIGJvcmRlci1iLTIgZm9udC1tZWRpdW0gdGV4dC1zbSAke1xuICAgICAgICAgICAgICAgIGFjdGl2ZVRhYiA9PT0gJ215LWNhcmRzJ1xuICAgICAgICAgICAgICAgICAgPyAnYm9yZGVyLXByaW1hcnkgdGV4dC1wcmltYXJ5J1xuICAgICAgICAgICAgICAgICAgOiAnYm9yZGVyLXRyYW5zcGFyZW50IHRleHQtZ3JheS01MDAgaG92ZXI6dGV4dC1ncmF5LTcwMCBob3Zlcjpib3JkZXItZ3JheS0zMDAnXG4gICAgICAgICAgICAgIH1gfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICDmiJHnmoTljaHntYQgKHtmaWx0ZXJlZFNldHMubGVuZ3RofSlcbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRBY3RpdmVUYWIoJ2FsbC1jYXJkcycpfVxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2BwYi00IHB4LTEgYm9yZGVyLWItMiBmb250LW1lZGl1bSB0ZXh0LXNtICR7XG4gICAgICAgICAgICAgICAgYWN0aXZlVGFiID09PSAnYWxsLWNhcmRzJ1xuICAgICAgICAgICAgICAgICAgPyAnYm9yZGVyLXByaW1hcnkgdGV4dC1wcmltYXJ5J1xuICAgICAgICAgICAgICAgICAgOiAnYm9yZGVyLXRyYW5zcGFyZW50IHRleHQtZ3JheS01MDAgaG92ZXI6dGV4dC1ncmF5LTcwMCBob3Zlcjpib3JkZXItZ3JheS0zMDAnXG4gICAgICAgICAgICAgIH1gfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICDmiYDmnInoqZ7ljaEgKHtmaWx0ZXJlZENhcmRzLmxlbmd0aH0pXG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgey8qIENvbnRlbnQgKi99XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1heC13LTd4bCBteC1hdXRvIHB4LTQgc206cHgtNiBsZzpweC04IHB5LThcIj5cbiAgICAgICAgey8qIFNlYXJjaCAqL31cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtYi02XCI+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyZWxhdGl2ZVwiPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgdmFsdWU9e3NlYXJjaFRlcm19XG4gICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gc2V0U2VhcmNoVGVybShlLnRhcmdldC52YWx1ZSl9XG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwi5pCc5bCL6Kme5Y2h5oiW5Y2h57WELi4uXCJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidy1mdWxsIHBsLTEwIHByLTQgcHktMiBib3JkZXIgYm9yZGVyLWdyYXktMzAwIHJvdW5kZWQtbGcgZm9jdXM6cmluZy0yIGZvY3VzOnJpbmctcHJpbWFyeSBmb2N1czpib3JkZXItdHJhbnNwYXJlbnRcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYWJzb2x1dGUgaW5zZXQteS0wIGxlZnQtMCBwbC0zIGZsZXggaXRlbXMtY2VudGVyIHBvaW50ZXItZXZlbnRzLW5vbmVcIj5cbiAgICAgICAgICAgICAgPHN2ZyBjbGFzc05hbWU9XCJoLTUgdy01IHRleHQtZ3JheS00MDBcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIj5cbiAgICAgICAgICAgICAgICA8cGF0aCBzdHJva2VMaW5lY2FwPVwicm91bmRcIiBzdHJva2VMaW5lam9pbj1cInJvdW5kXCIgc3Ryb2tlV2lkdGg9ezJ9IGQ9XCJNMjEgMjFsLTYtNm0yLTVhNyA3IDAgMTEtMTQgMCA3IDcgMCAwMTE0IDB6XCIgLz5cbiAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgey8qIENhcmQgU2V0cyBUYWIgKi99XG4gICAgICAgIHthY3RpdmVUYWIgPT09ICdteS1jYXJkcycgJiYgKFxuICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXgganVzdGlmeS1iZXR3ZWVuIGl0ZW1zLWNlbnRlciBtYi00XCI+XG4gICAgICAgICAgICAgIDxoMyBjbGFzc05hbWU9XCJ0ZXh0LWxnIGZvbnQtc2VtaWJvbGRcIj7lhbEge2ZpbHRlcmVkU2V0cy5sZW5ndGh9IOWAi+WNoee1hDwvaDM+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAge2ZpbHRlcmVkU2V0cy5sZW5ndGggPT09IDAgPyAoXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1jZW50ZXIgcHktMTJcIj5cbiAgICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJ0ZXh0LWdyYXktNTAwIG1iLTRcIj7pgoTmspLmnInoqZ7ljaHpm4blkIg8L3A+XG4gICAgICAgICAgICAgICAgPExpbmtcbiAgICAgICAgICAgICAgICAgIGhyZWY9XCIvZ2VuZXJhdGVcIlxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiYmctcHJpbWFyeSB0ZXh0LXdoaXRlIHB4LTQgcHktMiByb3VuZGVkLWxnIGhvdmVyOmJnLXByaW1hcnkvOTAgdHJhbnNpdGlvbi1jb2xvcnNcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIOWJteW7uuesrOS4gOWAi+WNoee1hFxuICAgICAgICAgICAgICAgIDwvTGluaz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImdyaWQgZ3JpZC1jb2xzLTEgbWQ6Z3JpZC1jb2xzLTIgbGc6Z3JpZC1jb2xzLTMgZ2FwLTRcIj5cbiAgICAgICAgICAgICAgICB7ZmlsdGVyZWRTZXRzLm1hcChzZXQgPT4gKFxuICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICBrZXk9e3NldC5pZH1cbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiYm9yZGVyIHJvdW5kZWQtbGcgaG92ZXI6c2hhZG93LWxnIHRyYW5zaXRpb24tc2hhZG93IGN1cnNvci1wb2ludGVyXCJcbiAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgIHNldFNlbGVjdGVkU2V0KHNldC5pZClcbiAgICAgICAgICAgICAgICAgICAgICBzZXRBY3RpdmVUYWIoJ2FsbC1jYXJkcycpXG4gICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtgJHtzZXQuY29sb3J9IHRleHQtd2hpdGUgcC00IHJvdW5kZWQtdC1sZ2B9PlxuICAgICAgICAgICAgICAgICAgICAgIDxoNCBjbGFzc05hbWU9XCJmb250LXNlbWlib2xkIHRleHQtbGdcIj57c2V0Lm5hbWV9PC9oND5cbiAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJ0ZXh0LXNtIG9wYWNpdHktOTBcIj57c2V0LmRlc2NyaXB0aW9ufTwvcD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicC00IGJnLXdoaXRlIHJvdW5kZWQtYi1sZ1wiPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBqdXN0aWZ5LWJldHdlZW4gaXRlbXMtY2VudGVyIHRleHQtc20gdGV4dC1ncmF5LTYwMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3NldC5jYXJkQ291bnR9IOW8teipnuWNoTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPumAsuW6pjoge3NldC5wcm9ncmVzc30lPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICl9XG5cbiAgICAgICAgey8qIEFsbCBDYXJkcyBUYWIgKi99XG4gICAgICAgIHthY3RpdmVUYWIgPT09ICdhbGwtY2FyZHMnICYmIChcbiAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGp1c3RpZnktYmV0d2VlbiBpdGVtcy1jZW50ZXIgbWItNFwiPlxuICAgICAgICAgICAgICA8aDMgY2xhc3NOYW1lPVwidGV4dC1sZyBmb250LXNlbWlib2xkXCI+5YWxIHtmaWx0ZXJlZENhcmRzLmxlbmd0aH0g5YCL6Kme5Y2hPC9oMz5cbiAgICAgICAgICAgICAge3NlbGVjdGVkU2V0ICYmIChcbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRTZWxlY3RlZFNldChudWxsKX1cbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInRleHQtc20gdGV4dC1ncmF5LTYwMCBob3Zlcjp0ZXh0LWdyYXktOTAwXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICDpoa/npLrmiYDmnInoqZ7ljaFcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICB7ZmlsdGVyZWRDYXJkcy5sZW5ndGggPT09IDAgPyAoXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1jZW50ZXIgcHktMTJcIj5cbiAgICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJ0ZXh0LWdyYXktNTAwIG1iLTRcIj7mspLmnInmib7liLDoqZ7ljaE8L3A+XG4gICAgICAgICAgICAgICAgPExpbmtcbiAgICAgICAgICAgICAgICAgIGhyZWY9XCIvZ2VuZXJhdGVcIlxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiYmctcHJpbWFyeSB0ZXh0LXdoaXRlIHB4LTQgcHktMiByb3VuZGVkLWxnIGhvdmVyOmJnLXByaW1hcnkvOTAgdHJhbnNpdGlvbi1jb2xvcnNcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIOWJteW7uuaWsOipnuWNoVxuICAgICAgICAgICAgICAgIDwvTGluaz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInNwYWNlLXktM1wiPlxuICAgICAgICAgICAgICAgIHtmaWx0ZXJlZENhcmRzLm1hcChjYXJkID0+IChcbiAgICAgICAgICAgICAgICAgIDxkaXYga2V5PXtjYXJkLmlkfSBjbGFzc05hbWU9XCJiZy13aGl0ZSBib3JkZXIgcm91bmRlZC1sZyBwLTQgaG92ZXI6c2hhZG93LW1kIHRyYW5zaXRpb24tc2hhZG93XCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4LTFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIgc3BhY2UteC00XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleC0xXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBzcGFjZS14LTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoNCBjbGFzc05hbWU9XCJmb250LXNlbWlib2xkIHRleHQtbGdcIj57Y2FyZC53b3JkIHx8ICfmnKroqK3lrponfTwvaDQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LXNtIHRleHQtZ3JheS01MDBcIj57Y2FyZC5wYXJ0T2ZTcGVlY2h9PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2NhcmQucHJvbnVuY2lhdGlvbiAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtc20gdGV4dC1ibHVlLTYwMFwiPntjYXJkLnByb251bmNpYXRpb259PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJ0ZXh0LWdyYXktNzAwIG10LTFcIj57Y2FyZC50cmFuc2xhdGlvbiB8fCAn5pyq6Kit5a6aJ308L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2NhcmQuZXhhbXBsZSAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJ0ZXh0LXNtIHRleHQtZ3JheS02MDAgbXQtMiBpdGFsaWNcIj7kvovlj6U6IHtjYXJkLmV4YW1wbGV9PC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBzcGFjZS14LTQgbXQtMiB0ZXh0LXhzIHRleHQtZ3JheS01MDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPuWNoee1hDoge2NhcmQuY2FyZFNldC5uYW1lfTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPueGn+e3tOW6pjoge2NhcmQubWFzdGVyeUxldmVsfS81PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+6KSH57+SOiB7Y2FyZC50aW1lc1Jldmlld2VkfSDmrKE8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj7kuIvmrKHopIfnv5I6IHtuZXcgRGF0ZShjYXJkLm5leHRSZXZpZXdEYXRlKS50b0xvY2FsZURhdGVTdHJpbmcoKX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBzcGFjZS14LTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gaGFuZGxlRWRpdChjYXJkKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidGV4dC1ibHVlLTYwMCBob3Zlcjp0ZXh0LWJsdWUtODAwIHRleHQtc21cIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICDnt6jovK9cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBoYW5kbGVEZWxldGUoY2FyZCl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInRleHQtcmVkLTYwMCBob3Zlcjp0ZXh0LXJlZC04MDAgdGV4dC1zbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIOWIqumZpFxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKX1cbiAgICAgIDwvZGl2PlxuXG4gICAgICB7LyogRmxhc2hjYXJkIEZvcm0gTW9kYWwgKi99XG4gICAgICB7c2hvd0Zvcm0gJiYgKFxuICAgICAgICA8Rmxhc2hjYXJkRm9ybVxuICAgICAgICAgIGNhcmRTZXRzPXtjYXJkU2V0c31cbiAgICAgICAgICBpbml0aWFsRGF0YT17ZWRpdGluZ0NhcmQgPyB7XG4gICAgICAgICAgICBpZDogZWRpdGluZ0NhcmQuaWQsXG4gICAgICAgICAgICBjYXJkU2V0SWQ6IGVkaXRpbmdDYXJkLmNhcmRTZXQgPyBjYXJkU2V0cy5maW5kKGNzID0+IGNzLm5hbWUgPT09IGVkaXRpbmdDYXJkLmNhcmRTZXQubmFtZSk/LmlkIHx8IGNhcmRTZXRzWzBdPy5pZCA6IGNhcmRTZXRzWzBdPy5pZCxcbiAgICAgICAgICAgIGVuZ2xpc2g6IGVkaXRpbmdDYXJkLndvcmQsXG4gICAgICAgICAgICBjaGluZXNlOiBlZGl0aW5nQ2FyZC50cmFuc2xhdGlvbixcbiAgICAgICAgICAgIHByb251bmNpYXRpb246IGVkaXRpbmdDYXJkLnByb251bmNpYXRpb24sXG4gICAgICAgICAgICBwYXJ0T2ZTcGVlY2g6IGVkaXRpbmdDYXJkLnBhcnRPZlNwZWVjaCxcbiAgICAgICAgICAgIGV4YW1wbGU6IGVkaXRpbmdDYXJkLmV4YW1wbGUsXG4gICAgICAgICAgfSA6IHVuZGVmaW5lZH1cbiAgICAgICAgICBpc0VkaXQ9eyEhZWRpdGluZ0NhcmR9XG4gICAgICAgICAgb25TdWNjZXNzPXtoYW5kbGVGb3JtU3VjY2Vzc31cbiAgICAgICAgICBvbkNhbmNlbD17KCkgPT4ge1xuICAgICAgICAgICAgc2V0U2hvd0Zvcm0oZmFsc2UpXG4gICAgICAgICAgICBzZXRFZGl0aW5nQ2FyZChudWxsKVxuICAgICAgICAgIH19XG4gICAgICAgIC8+XG4gICAgICApfVxuICAgIDwvZGl2PlxuICApXG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEZsYXNoY2FyZHNQYWdlKCkge1xuICByZXR1cm4gKFxuICAgIDxQcm90ZWN0ZWRSb3V0ZT5cbiAgICAgIDxGbGFzaGNhcmRzQ29udGVudCAvPlxuICAgIDwvUHJvdGVjdGVkUm91dGU+XG4gIClcbn0iXSwibmFtZXMiOlsidXNlU3RhdGUiLCJ1c2VFZmZlY3QiLCJMaW5rIiwiUHJvdGVjdGVkUm91dGUiLCJOYXZpZ2F0aW9uIiwiRmxhc2hjYXJkRm9ybSIsImZsYXNoY2FyZHNTZXJ2aWNlIiwiRmxhc2hjYXJkc0NvbnRlbnQiLCJhY3RpdmVUYWIiLCJzZXRBY3RpdmVUYWIiLCJzZWxlY3RlZFNldCIsInNldFNlbGVjdGVkU2V0Iiwic2VhcmNoVGVybSIsInNldFNlYXJjaFRlcm0iLCJjYXJkU2V0cyIsInNldENhcmRTZXRzIiwiZmxhc2hjYXJkcyIsInNldEZsYXNoY2FyZHMiLCJsb2FkaW5nIiwic2V0TG9hZGluZyIsImVycm9yIiwic2V0RXJyb3IiLCJzaG93Rm9ybSIsInNldFNob3dGb3JtIiwiZWRpdGluZ0NhcmQiLCJzZXRFZGl0aW5nQ2FyZCIsImxvYWRDYXJkU2V0cyIsImxvYWRGbGFzaGNhcmRzIiwicmVzdWx0IiwiZ2V0Q2FyZFNldHMiLCJzdWNjZXNzIiwiZGF0YSIsInNldHMiLCJlcnIiLCJnZXRGbGFzaGNhcmRzIiwidW5kZWZpbmVkIiwiaGFuZGxlRm9ybVN1Y2Nlc3MiLCJoYW5kbGVFZGl0IiwiY2FyZCIsImhhbmRsZURlbGV0ZSIsImNvbmZpcm0iLCJ3b3JkIiwiZGVsZXRlRmxhc2hjYXJkIiwiaWQiLCJhbGVydCIsImZpbHRlcmVkU2V0cyIsImZpbHRlciIsInNldCIsIm5hbWUiLCJ0b0xvd2VyQ2FzZSIsImluY2x1ZGVzIiwiZGVzY3JpcHRpb24iLCJmaWx0ZXJlZENhcmRzIiwidHJhbnNsYXRpb24iLCJkaXYiLCJjbGFzc05hbWUiLCJoMSIsInAiLCJidXR0b24iLCJvbkNsaWNrIiwiaHJlZiIsImxlbmd0aCIsImlucHV0IiwidHlwZSIsInZhbHVlIiwib25DaGFuZ2UiLCJlIiwidGFyZ2V0IiwicGxhY2Vob2xkZXIiLCJzdmciLCJmaWxsIiwic3Ryb2tlIiwidmlld0JveCIsInBhdGgiLCJzdHJva2VMaW5lY2FwIiwic3Ryb2tlTGluZWpvaW4iLCJzdHJva2VXaWR0aCIsImQiLCJoMyIsIm1hcCIsImNvbG9yIiwiaDQiLCJzcGFuIiwiY2FyZENvdW50IiwicHJvZ3Jlc3MiLCJwYXJ0T2ZTcGVlY2giLCJwcm9udW5jaWF0aW9uIiwiZXhhbXBsZSIsImNhcmRTZXQiLCJtYXN0ZXJ5TGV2ZWwiLCJ0aW1lc1Jldmlld2VkIiwiRGF0ZSIsIm5leHRSZXZpZXdEYXRlIiwidG9Mb2NhbGVEYXRlU3RyaW5nIiwiaW5pdGlhbERhdGEiLCJjYXJkU2V0SWQiLCJmaW5kIiwiY3MiLCJlbmdsaXNoIiwiY2hpbmVzZSIsImlzRWRpdCIsIm9uU3VjY2VzcyIsIm9uQ2FuY2VsIiwiRmxhc2hjYXJkc1BhZ2UiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./app/flashcards/page.tsx\n"); + +/***/ }), + +/***/ "(ssr)/./components/FlashcardForm.tsx": +/*!**************************************!*\ + !*** ./components/FlashcardForm.tsx ***! + \**************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ FlashcardForm: () => (/* binding */ FlashcardForm)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react-jsx-dev-runtime.js\");\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _lib_services_flashcards__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/lib/services/flashcards */ \"(ssr)/./lib/services/flashcards.ts\");\n/* __next_internal_client_entry_do_not_use__ FlashcardForm auto */ \n\n\nfunction FlashcardForm({ cardSets, initialData, isEdit = false, onSuccess, onCancel }) {\n const [formData, setFormData] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)({\n cardSetId: initialData?.cardSetId || cardSets[0]?.id || '',\n english: initialData?.english || '',\n chinese: initialData?.chinese || '',\n pronunciation: initialData?.pronunciation || '',\n partOfSpeech: initialData?.partOfSpeech || '名詞',\n example: initialData?.example || ''\n });\n const [loading, setLoading] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n const [error, setError] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);\n const partOfSpeechOptions = [\n '名詞',\n '動詞',\n '形容詞',\n '副詞',\n '介詞',\n '連詞',\n '感嘆詞',\n '代詞',\n '冠詞'\n ];\n const handleSubmit = async (e)=>{\n e.preventDefault();\n setLoading(true);\n setError(null);\n try {\n let result;\n if (isEdit && initialData?.id) {\n result = await _lib_services_flashcards__WEBPACK_IMPORTED_MODULE_2__.flashcardsService.updateFlashcard(initialData.id, formData);\n } else {\n result = await _lib_services_flashcards__WEBPACK_IMPORTED_MODULE_2__.flashcardsService.createFlashcard(formData);\n }\n if (result.success) {\n onSuccess();\n } else {\n setError(result.error || '操作失敗');\n }\n } catch (err) {\n setError('操作失敗,請重試');\n } finally{\n setLoading(false);\n }\n };\n const handleChange = (field, value)=>{\n setFormData((prev)=>({\n ...prev,\n [field]: value\n }));\n };\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"fixed inset-0 bg-black bg-opacity-50 flex items-center justify-center p-4 z-50\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-white rounded-lg w-full max-w-2xl max-h-[90vh] overflow-y-auto\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"p-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex justify-between items-center mb-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h2\", {\n className: \"text-2xl font-bold\",\n children: isEdit ? '編輯詞卡' : '新增詞卡'\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/components/FlashcardForm.tsx\",\n lineNumber: 65,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: onCancel,\n className: \"text-gray-400 hover:text-gray-600\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n className: \"w-6 h-6\",\n fill: \"none\",\n stroke: \"currentColor\",\n viewBox: \"0 0 24 24\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n d: \"M6 18L18 6M6 6l12 12\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/components/FlashcardForm.tsx\",\n lineNumber: 73,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/components/FlashcardForm.tsx\",\n lineNumber: 72,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/components/FlashcardForm.tsx\",\n lineNumber: 68,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/components/FlashcardForm.tsx\",\n lineNumber: 64,\n columnNumber: 11\n }, this),\n error && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-red-50 border border-red-200 rounded-lg p-4 mb-6\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-red-600 text-sm\",\n children: error\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/components/FlashcardForm.tsx\",\n lineNumber: 80,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/components/FlashcardForm.tsx\",\n lineNumber: 79,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"form\", {\n onSubmit: handleSubmit,\n className: \"space-y-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"label\", {\n className: \"block text-sm font-medium text-gray-700 mb-2\",\n children: \"詞卡集合 *\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/components/FlashcardForm.tsx\",\n lineNumber: 87,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"select\", {\n value: formData.cardSetId,\n onChange: (e)=>handleChange('cardSetId', e.target.value),\n className: \"w-full px-3 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-primary focus:border-transparent\",\n required: true,\n children: cardSets.map((set)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"option\", {\n value: set.id,\n children: set.name\n }, set.id, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/components/FlashcardForm.tsx\",\n lineNumber: 97,\n columnNumber: 19\n }, this))\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/components/FlashcardForm.tsx\",\n lineNumber: 90,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/components/FlashcardForm.tsx\",\n lineNumber: 86,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"label\", {\n className: \"block text-sm font-medium text-gray-700 mb-2\",\n children: \"英文單字 *\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/components/FlashcardForm.tsx\",\n lineNumber: 106,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"text\",\n value: formData.english,\n onChange: (e)=>handleChange('english', e.target.value),\n className: \"w-full px-3 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-primary focus:border-transparent\",\n placeholder: \"例如:negotiate\",\n required: true\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/components/FlashcardForm.tsx\",\n lineNumber: 109,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/components/FlashcardForm.tsx\",\n lineNumber: 105,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"label\", {\n className: \"block text-sm font-medium text-gray-700 mb-2\",\n children: \"中文翻譯 *\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/components/FlashcardForm.tsx\",\n lineNumber: 121,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"text\",\n value: formData.chinese,\n onChange: (e)=>handleChange('chinese', e.target.value),\n className: \"w-full px-3 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-primary focus:border-transparent\",\n placeholder: \"例如:談判,協商\",\n required: true\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/components/FlashcardForm.tsx\",\n lineNumber: 124,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/components/FlashcardForm.tsx\",\n lineNumber: 120,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid grid-cols-1 md:grid-cols-2 gap-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"label\", {\n className: \"block text-sm font-medium text-gray-700 mb-2\",\n children: \"詞性 *\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/components/FlashcardForm.tsx\",\n lineNumber: 137,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"select\", {\n value: formData.partOfSpeech,\n onChange: (e)=>handleChange('partOfSpeech', e.target.value),\n className: \"w-full px-3 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-primary focus:border-transparent\",\n required: true,\n children: partOfSpeechOptions.map((option)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"option\", {\n value: option,\n children: option\n }, option, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/components/FlashcardForm.tsx\",\n lineNumber: 147,\n columnNumber: 21\n }, this))\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/components/FlashcardForm.tsx\",\n lineNumber: 140,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/components/FlashcardForm.tsx\",\n lineNumber: 136,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"label\", {\n className: \"block text-sm font-medium text-gray-700 mb-2\",\n children: \"發音\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/components/FlashcardForm.tsx\",\n lineNumber: 155,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"text\",\n value: formData.pronunciation,\n onChange: (e)=>handleChange('pronunciation', e.target.value),\n className: \"w-full px-3 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-primary focus:border-transparent\",\n placeholder: \"例如:/nɪˈɡoʊʃieɪt/\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/components/FlashcardForm.tsx\",\n lineNumber: 158,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/components/FlashcardForm.tsx\",\n lineNumber: 154,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/components/FlashcardForm.tsx\",\n lineNumber: 135,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"label\", {\n className: \"block text-sm font-medium text-gray-700 mb-2\",\n children: \"例句\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/components/FlashcardForm.tsx\",\n lineNumber: 170,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"textarea\", {\n value: formData.example,\n onChange: (e)=>handleChange('example', e.target.value),\n rows: 3,\n className: \"w-full px-3 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-primary focus:border-transparent\",\n placeholder: \"例如:We need to negotiate the contract terms.\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/components/FlashcardForm.tsx\",\n lineNumber: 173,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/components/FlashcardForm.tsx\",\n lineNumber: 169,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex justify-end space-x-4 pt-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n type: \"button\",\n onClick: onCancel,\n className: \"px-4 py-2 border border-gray-300 rounded-lg text-gray-700 hover:bg-gray-50 transition-colors\",\n children: \"取消\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/components/FlashcardForm.tsx\",\n lineNumber: 184,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n type: \"submit\",\n disabled: loading,\n className: \"px-4 py-2 bg-primary text-white rounded-lg hover:bg-primary/90 transition-colors disabled:opacity-50 disabled:cursor-not-allowed\",\n children: loading ? '處理中...' : isEdit ? '更新詞卡' : '新增詞卡'\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/components/FlashcardForm.tsx\",\n lineNumber: 191,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/components/FlashcardForm.tsx\",\n lineNumber: 183,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/components/FlashcardForm.tsx\",\n lineNumber: 84,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/components/FlashcardForm.tsx\",\n lineNumber: 63,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/components/FlashcardForm.tsx\",\n lineNumber: 62,\n columnNumber: 7\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/components/FlashcardForm.tsx\",\n lineNumber: 61,\n columnNumber: 5\n }, this);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QzlCLElBQU1PLGFBQWEsaUJBQWlCUCxFQUFFK0IsTUFBTSxDQUFDdEIsS0FBSztnREFDN0RHLFdBQVU7Z0RBQ1YyQixhQUFZOzs7Ozs7Ozs7Ozs7Ozs7Ozs7MENBTWxCLDhEQUFDNUI7O2tEQUNDLDhEQUFDaUI7d0NBQU1oQixXQUFVO2tEQUErQzs7Ozs7O2tEQUdoRSw4REFBQzRCO3dDQUNDL0IsT0FBT3hCLFNBQVNRLE9BQU87d0NBQ3ZCcUMsVUFBVSxDQUFDOUIsSUFBTU8sYUFBYSxXQUFXUCxFQUFFK0IsTUFBTSxDQUFDdEIsS0FBSzt3Q0FDdkRnQyxNQUFNO3dDQUNON0IsV0FBVTt3Q0FDVjJCLGFBQVk7Ozs7Ozs7Ozs7OzswQ0FLaEIsOERBQUM1QjtnQ0FBSUMsV0FBVTs7a0RBQ2IsOERBQUNFO3dDQUNDd0IsTUFBSzt3Q0FDTHZCLFNBQVMvQjt3Q0FDVDRCLFdBQVU7a0RBQ1g7Ozs7OztrREFHRCw4REFBQ0U7d0NBQ0N3QixNQUFLO3dDQUNMSSxVQUFVaEQ7d0NBQ1ZrQixXQUFVO2tEQUVUbEIsVUFBVSxXQUFZWixTQUFTLFNBQVM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFRekQiLCJzb3VyY2VzIjpbIi9Vc2Vycy9qZXR0Y2hlbmcxMDE4L2NvZGUvZHJhbWFsaW5nLXZvY2FiLWxlYXJuaW5nL2Zyb250ZW5kL2NvbXBvbmVudHMvRmxhc2hjYXJkRm9ybS50c3giXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBjbGllbnQnXHJcblxyXG5pbXBvcnQgeyB1c2VTdGF0ZSwgdXNlRWZmZWN0IH0gZnJvbSAncmVhY3QnXHJcbmltcG9ydCB7IGZsYXNoY2FyZHNTZXJ2aWNlLCB0eXBlIENyZWF0ZUZsYXNoY2FyZFJlcXVlc3QsIHR5cGUgQ2FyZFNldCB9IGZyb20gJ0AvbGliL3NlcnZpY2VzL2ZsYXNoY2FyZHMnXHJcblxyXG5pbnRlcmZhY2UgRmxhc2hjYXJkRm9ybVByb3BzIHtcclxuICBjYXJkU2V0czogQ2FyZFNldFtdXHJcbiAgaW5pdGlhbERhdGE/OiBQYXJ0aWFsPENyZWF0ZUZsYXNoY2FyZFJlcXVlc3QgJiB7IGlkOiBzdHJpbmcgfT5cclxuICBpc0VkaXQ/OiBib29sZWFuXHJcbiAgb25TdWNjZXNzOiAoKSA9PiB2b2lkXHJcbiAgb25DYW5jZWw6ICgpID0+IHZvaWRcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIEZsYXNoY2FyZEZvcm0oeyBjYXJkU2V0cywgaW5pdGlhbERhdGEsIGlzRWRpdCA9IGZhbHNlLCBvblN1Y2Nlc3MsIG9uQ2FuY2VsIH06IEZsYXNoY2FyZEZvcm1Qcm9wcykge1xyXG4gIGNvbnN0IFtmb3JtRGF0YSwgc2V0Rm9ybURhdGFdID0gdXNlU3RhdGU8Q3JlYXRlRmxhc2hjYXJkUmVxdWVzdD4oe1xyXG4gICAgY2FyZFNldElkOiBpbml0aWFsRGF0YT8uY2FyZFNldElkIHx8IChjYXJkU2V0c1swXT8uaWQgfHwgJycpLFxyXG4gICAgZW5nbGlzaDogaW5pdGlhbERhdGE/LmVuZ2xpc2ggfHwgJycsXHJcbiAgICBjaGluZXNlOiBpbml0aWFsRGF0YT8uY2hpbmVzZSB8fCAnJyxcclxuICAgIHByb251bmNpYXRpb246IGluaXRpYWxEYXRhPy5wcm9udW5jaWF0aW9uIHx8ICcnLFxyXG4gICAgcGFydE9mU3BlZWNoOiBpbml0aWFsRGF0YT8ucGFydE9mU3BlZWNoIHx8ICflkI3oqZ4nLFxyXG4gICAgZXhhbXBsZTogaW5pdGlhbERhdGE/LmV4YW1wbGUgfHwgJycsXHJcbiAgfSlcclxuXHJcbiAgY29uc3QgW2xvYWRpbmcsIHNldExvYWRpbmddID0gdXNlU3RhdGUoZmFsc2UpXHJcbiAgY29uc3QgW2Vycm9yLCBzZXRFcnJvcl0gPSB1c2VTdGF0ZTxzdHJpbmcgfCBudWxsPihudWxsKVxyXG5cclxuICBjb25zdCBwYXJ0T2ZTcGVlY2hPcHRpb25zID0gW1xyXG4gICAgJ+WQjeipnicsICfli5XoqZ4nLCAn5b2i5a656KmeJywgJ+WJr+ipnicsICfku4voqZ4nLCAn6YCj6KmeJywgJ+aEn+WYhuipnicsICfku6PoqZ4nLCAn5Yag6KmeJ1xyXG4gIF1cclxuXHJcbiAgY29uc3QgaGFuZGxlU3VibWl0ID0gYXN5bmMgKGU6IFJlYWN0LkZvcm1FdmVudCkgPT4ge1xyXG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpXHJcbiAgICBzZXRMb2FkaW5nKHRydWUpXHJcbiAgICBzZXRFcnJvcihudWxsKVxyXG5cclxuICAgIHRyeSB7XHJcbiAgICAgIGxldCByZXN1bHRcclxuICAgICAgaWYgKGlzRWRpdCAmJiBpbml0aWFsRGF0YT8uaWQpIHtcclxuICAgICAgICByZXN1bHQgPSBhd2FpdCBmbGFzaGNhcmRzU2VydmljZS51cGRhdGVGbGFzaGNhcmQoaW5pdGlhbERhdGEuaWQsIGZvcm1EYXRhKVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJlc3VsdCA9IGF3YWl0IGZsYXNoY2FyZHNTZXJ2aWNlLmNyZWF0ZUZsYXNoY2FyZChmb3JtRGF0YSlcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHJlc3VsdC5zdWNjZXNzKSB7XHJcbiAgICAgICAgb25TdWNjZXNzKClcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBzZXRFcnJvcihyZXN1bHQuZXJyb3IgfHwgJ+aTjeS9nOWkseaVlycpXHJcbiAgICAgIH1cclxuICAgIH0gY2F0Y2ggKGVycikge1xyXG4gICAgICBzZXRFcnJvcign5pON5L2c5aSx5pWX77yM6KuL6YeN6KmmJylcclxuICAgIH0gZmluYWxseSB7XHJcbiAgICAgIHNldExvYWRpbmcoZmFsc2UpXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjb25zdCBoYW5kbGVDaGFuZ2UgPSAoZmllbGQ6IGtleW9mIENyZWF0ZUZsYXNoY2FyZFJlcXVlc3QsIHZhbHVlOiBzdHJpbmcpID0+IHtcclxuICAgIHNldEZvcm1EYXRhKHByZXYgPT4gKHsgLi4ucHJldiwgW2ZpZWxkXTogdmFsdWUgfSkpXHJcbiAgfVxyXG5cclxuICByZXR1cm4gKFxyXG4gICAgPGRpdiBjbGFzc05hbWU9XCJmaXhlZCBpbnNldC0wIGJnLWJsYWNrIGJnLW9wYWNpdHktNTAgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgcC00IHotNTBcIj5cclxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJiZy13aGl0ZSByb3VuZGVkLWxnIHctZnVsbCBtYXgtdy0yeGwgbWF4LWgtWzkwdmhdIG92ZXJmbG93LXktYXV0b1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicC02XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXgganVzdGlmeS1iZXR3ZWVuIGl0ZW1zLWNlbnRlciBtYi02XCI+XHJcbiAgICAgICAgICAgIDxoMiBjbGFzc05hbWU9XCJ0ZXh0LTJ4bCBmb250LWJvbGRcIj5cclxuICAgICAgICAgICAgICB7aXNFZGl0ID8gJ+e3qOi8r+ipnuWNoScgOiAn5paw5aKe6Kme5Y2hJ31cclxuICAgICAgICAgICAgPC9oMj5cclxuICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgIG9uQ2xpY2s9e29uQ2FuY2VsfVxyXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT1cInRleHQtZ3JheS00MDAgaG92ZXI6dGV4dC1ncmF5LTYwMFwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8c3ZnIGNsYXNzTmFtZT1cInctNiBoLTZcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIj5cclxuICAgICAgICAgICAgICAgIDxwYXRoIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZUxpbmVqb2luPVwicm91bmRcIiBzdHJva2VXaWR0aD17Mn0gZD1cIk02IDE4TDE4IDZNNiA2bDEyIDEyXCIgLz5cclxuICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICB7ZXJyb3IgJiYgKFxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJnLXJlZC01MCBib3JkZXIgYm9yZGVyLXJlZC0yMDAgcm91bmRlZC1sZyBwLTQgbWItNlwiPlxyXG4gICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQtcmVkLTYwMCB0ZXh0LXNtXCI+e2Vycm9yfTwvcD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICApfVxyXG5cclxuICAgICAgICAgIDxmb3JtIG9uU3VibWl0PXtoYW5kbGVTdWJtaXR9IGNsYXNzTmFtZT1cInNwYWNlLXktNlwiPlxyXG4gICAgICAgICAgICB7Lyog6Kme5Y2h6ZuG5ZCI6YG45pOHICovfVxyXG4gICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgIDxsYWJlbCBjbGFzc05hbWU9XCJibG9jayB0ZXh0LXNtIGZvbnQtbWVkaXVtIHRleHQtZ3JheS03MDAgbWItMlwiPlxyXG4gICAgICAgICAgICAgICAg6Kme5Y2h6ZuG5ZCIICpcclxuICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgIDxzZWxlY3RcclxuICAgICAgICAgICAgICAgIHZhbHVlPXtmb3JtRGF0YS5jYXJkU2V0SWR9XHJcbiAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IGhhbmRsZUNoYW5nZSgnY2FyZFNldElkJywgZS50YXJnZXQudmFsdWUpfVxyXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidy1mdWxsIHB4LTMgcHktMiBib3JkZXIgYm9yZGVyLWdyYXktMzAwIHJvdW5kZWQtbGcgZm9jdXM6cmluZy0yIGZvY3VzOnJpbmctcHJpbWFyeSBmb2N1czpib3JkZXItdHJhbnNwYXJlbnRcIlxyXG4gICAgICAgICAgICAgICAgcmVxdWlyZWRcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICB7Y2FyZFNldHMubWFwKHNldCA9PiAoXHJcbiAgICAgICAgICAgICAgICAgIDxvcHRpb24ga2V5PXtzZXQuaWR9IHZhbHVlPXtzZXQuaWR9PlxyXG4gICAgICAgICAgICAgICAgICAgIHtzZXQubmFtZX1cclxuICAgICAgICAgICAgICAgICAgPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICApKX1cclxuICAgICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICB7Lyog6Iux5paH5Zau5a2XICovfVxyXG4gICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgIDxsYWJlbCBjbGFzc05hbWU9XCJibG9jayB0ZXh0LXNtIGZvbnQtbWVkaXVtIHRleHQtZ3JheS03MDAgbWItMlwiPlxyXG4gICAgICAgICAgICAgICAg6Iux5paH5Zau5a2XICpcclxuICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICAgICAgdmFsdWU9e2Zvcm1EYXRhLmVuZ2xpc2h9XHJcbiAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IGhhbmRsZUNoYW5nZSgnZW5nbGlzaCcsIGUudGFyZ2V0LnZhbHVlKX1cclxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInctZnVsbCBweC0zIHB5LTIgYm9yZGVyIGJvcmRlci1ncmF5LTMwMCByb3VuZGVkLWxnIGZvY3VzOnJpbmctMiBmb2N1czpyaW5nLXByaW1hcnkgZm9jdXM6Ym9yZGVyLXRyYW5zcGFyZW50XCJcclxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwi5L6L5aaC77yabmVnb3RpYXRlXCJcclxuICAgICAgICAgICAgICAgIHJlcXVpcmVkXHJcbiAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICB7Lyog5Lit5paH57+76K2vICovfVxyXG4gICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgIDxsYWJlbCBjbGFzc05hbWU9XCJibG9jayB0ZXh0LXNtIGZvbnQtbWVkaXVtIHRleHQtZ3JheS03MDAgbWItMlwiPlxyXG4gICAgICAgICAgICAgICAg5Lit5paH57+76K2vICpcclxuICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICAgICAgdmFsdWU9e2Zvcm1EYXRhLmNoaW5lc2V9XHJcbiAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IGhhbmRsZUNoYW5nZSgnY2hpbmVzZScsIGUudGFyZ2V0LnZhbHVlKX1cclxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInctZnVsbCBweC0zIHB5LTIgYm9yZGVyIGJvcmRlci1ncmF5LTMwMCByb3VuZGVkLWxnIGZvY3VzOnJpbmctMiBmb2N1czpyaW5nLXByaW1hcnkgZm9jdXM6Ym9yZGVyLXRyYW5zcGFyZW50XCJcclxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwi5L6L5aaC77ya6KuH5Yik77yM5Y2U5ZWGXCJcclxuICAgICAgICAgICAgICAgIHJlcXVpcmVkXHJcbiAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICB7Lyog6Kme5oCn5ZKM55m86Z+zICovfVxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImdyaWQgZ3JpZC1jb2xzLTEgbWQ6Z3JpZC1jb2xzLTIgZ2FwLTRcIj5cclxuICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzTmFtZT1cImJsb2NrIHRleHQtc20gZm9udC1tZWRpdW0gdGV4dC1ncmF5LTcwMCBtYi0yXCI+XHJcbiAgICAgICAgICAgICAgICAgIOipnuaApyAqXHJcbiAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgPHNlbGVjdFxyXG4gICAgICAgICAgICAgICAgICB2YWx1ZT17Zm9ybURhdGEucGFydE9mU3BlZWNofVxyXG4gICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IGhhbmRsZUNoYW5nZSgncGFydE9mU3BlZWNoJywgZS50YXJnZXQudmFsdWUpfVxyXG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ3LWZ1bGwgcHgtMyBweS0yIGJvcmRlciBib3JkZXItZ3JheS0zMDAgcm91bmRlZC1sZyBmb2N1czpyaW5nLTIgZm9jdXM6cmluZy1wcmltYXJ5IGZvY3VzOmJvcmRlci10cmFuc3BhcmVudFwiXHJcbiAgICAgICAgICAgICAgICAgIHJlcXVpcmVkXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIHtwYXJ0T2ZTcGVlY2hPcHRpb25zLm1hcChvcHRpb24gPT4gKFxyXG4gICAgICAgICAgICAgICAgICAgIDxvcHRpb24ga2V5PXtvcHRpb259IHZhbHVlPXtvcHRpb259PlxyXG4gICAgICAgICAgICAgICAgICAgICAge29wdGlvbn1cclxuICAgICAgICAgICAgICAgICAgICA8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgKSl9XHJcbiAgICAgICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzc05hbWU9XCJibG9jayB0ZXh0LXNtIGZvbnQtbWVkaXVtIHRleHQtZ3JheS03MDAgbWItMlwiPlxyXG4gICAgICAgICAgICAgICAgICDnmbzpn7NcclxuICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICAgICAgICB2YWx1ZT17Zm9ybURhdGEucHJvbnVuY2lhdGlvbn1cclxuICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiBoYW5kbGVDaGFuZ2UoJ3Byb251bmNpYXRpb24nLCBlLnRhcmdldC52YWx1ZSl9XHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInctZnVsbCBweC0zIHB5LTIgYm9yZGVyIGJvcmRlci1ncmF5LTMwMCByb3VuZGVkLWxnIGZvY3VzOnJpbmctMiBmb2N1czpyaW5nLXByaW1hcnkgZm9jdXM6Ym9yZGVyLXRyYW5zcGFyZW50XCJcclxuICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCLkvovlpoLvvJovbsmqy4jJoW/KisqDaWXJqnQvXCJcclxuICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgey8qIOS+i+WPpSAqL31cclxuICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICA8bGFiZWwgY2xhc3NOYW1lPVwiYmxvY2sgdGV4dC1zbSBmb250LW1lZGl1bSB0ZXh0LWdyYXktNzAwIG1iLTJcIj5cclxuICAgICAgICAgICAgICAgIOS+i+WPpVxyXG4gICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgPHRleHRhcmVhXHJcbiAgICAgICAgICAgICAgICB2YWx1ZT17Zm9ybURhdGEuZXhhbXBsZX1cclxuICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gaGFuZGxlQ2hhbmdlKCdleGFtcGxlJywgZS50YXJnZXQudmFsdWUpfVxyXG4gICAgICAgICAgICAgICAgcm93cz17M31cclxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInctZnVsbCBweC0zIHB5LTIgYm9yZGVyIGJvcmRlci1ncmF5LTMwMCByb3VuZGVkLWxnIGZvY3VzOnJpbmctMiBmb2N1czpyaW5nLXByaW1hcnkgZm9jdXM6Ym9yZGVyLXRyYW5zcGFyZW50XCJcclxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwi5L6L5aaC77yaV2UgbmVlZCB0byBuZWdvdGlhdGUgdGhlIGNvbnRyYWN0IHRlcm1zLlwiXHJcbiAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICB7Lyog5pON5L2c5oyJ6YiVICovfVxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXgganVzdGlmeS1lbmQgc3BhY2UteC00IHB0LTRcIj5cclxuICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9e29uQ2FuY2VsfVxyXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwicHgtNCBweS0yIGJvcmRlciBib3JkZXItZ3JheS0zMDAgcm91bmRlZC1sZyB0ZXh0LWdyYXktNzAwIGhvdmVyOmJnLWdyYXktNTAgdHJhbnNpdGlvbi1jb2xvcnNcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIOWPlua2iFxyXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgIHR5cGU9XCJzdWJtaXRcIlxyXG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ9e2xvYWRpbmd9XHJcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJweC00IHB5LTIgYmctcHJpbWFyeSB0ZXh0LXdoaXRlIHJvdW5kZWQtbGcgaG92ZXI6YmctcHJpbWFyeS85MCB0cmFuc2l0aW9uLWNvbG9ycyBkaXNhYmxlZDpvcGFjaXR5LTUwIGRpc2FibGVkOmN1cnNvci1ub3QtYWxsb3dlZFwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAge2xvYWRpbmcgPyAn6JmV55CG5LitLi4uJyA6IChpc0VkaXQgPyAn5pu05paw6Kme5Y2hJyA6ICfmlrDlop7oqZ7ljaEnKX1cclxuICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Zvcm0+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgKVxyXG59Il0sIm5hbWVzIjpbInVzZVN0YXRlIiwiZmxhc2hjYXJkc1NlcnZpY2UiLCJGbGFzaGNhcmRGb3JtIiwiY2FyZFNldHMiLCJpbml0aWFsRGF0YSIsImlzRWRpdCIsIm9uU3VjY2VzcyIsIm9uQ2FuY2VsIiwiZm9ybURhdGEiLCJzZXRGb3JtRGF0YSIsImNhcmRTZXRJZCIsImlkIiwiZW5nbGlzaCIsImNoaW5lc2UiLCJwcm9udW5jaWF0aW9uIiwicGFydE9mU3BlZWNoIiwiZXhhbXBsZSIsImxvYWRpbmciLCJzZXRMb2FkaW5nIiwiZXJyb3IiLCJzZXRFcnJvciIsInBhcnRPZlNwZWVjaE9wdGlvbnMiLCJoYW5kbGVTdWJtaXQiLCJlIiwicHJldmVudERlZmF1bHQiLCJyZXN1bHQiLCJ1cGRhdGVGbGFzaGNhcmQiLCJjcmVhdGVGbGFzaGNhcmQiLCJzdWNjZXNzIiwiZXJyIiwiaGFuZGxlQ2hhbmdlIiwiZmllbGQiLCJ2YWx1ZSIsInByZXYiLCJkaXYiLCJjbGFzc05hbWUiLCJoMiIsImJ1dHRvbiIsIm9uQ2xpY2siLCJzdmciLCJmaWxsIiwic3Ryb2tlIiwidmlld0JveCIsInBhdGgiLCJzdHJva2VMaW5lY2FwIiwic3Ryb2tlTGluZWpvaW4iLCJzdHJva2VXaWR0aCIsImQiLCJwIiwiZm9ybSIsIm9uU3VibWl0IiwibGFiZWwiLCJzZWxlY3QiLCJvbkNoYW5nZSIsInRhcmdldCIsInJlcXVpcmVkIiwibWFwIiwic2V0Iiwib3B0aW9uIiwibmFtZSIsImlucHV0IiwidHlwZSIsInBsYWNlaG9sZGVyIiwidGV4dGFyZWEiLCJyb3dzIiwiZGlzYWJsZWQiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./components/FlashcardForm.tsx\n"); + +/***/ }), + +/***/ "(ssr)/./components/Navigation.tsx": +/*!***********************************!*\ + !*** ./components/Navigation.tsx ***! + \***********************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Navigation: () => (/* binding */ Navigation)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react-jsx-dev-runtime.js\");\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! next/link */ \"(ssr)/./node_modules/next/dist/client/app-dir/link.js\");\n/* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(next_link__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var next_navigation__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! next/navigation */ \"(ssr)/./node_modules/next/dist/api/navigation.js\");\n/* harmony import */ var _contexts_AuthContext__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/contexts/AuthContext */ \"(ssr)/./contexts/AuthContext.tsx\");\n/* __next_internal_client_entry_do_not_use__ Navigation auto */ \n\n\n\nfunction Navigation() {\n const { user, logout } = (0,_contexts_AuthContext__WEBPACK_IMPORTED_MODULE_3__.useAuth)();\n const pathname = (0,next_navigation__WEBPACK_IMPORTED_MODULE_2__.usePathname)();\n const navItems = [\n {\n href: '/dashboard',\n label: '儀表板'\n },\n {\n href: '/flashcards',\n label: '詞卡'\n },\n {\n href: '/learn',\n label: '學習'\n },\n {\n href: '/generate',\n label: 'AI 生成'\n }\n ];\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"nav\", {\n className: \"bg-white shadow-sm border-b\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"max-w-7xl mx-auto px-4 sm:px-6 lg:px-8\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex justify-between h-16\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center space-x-8\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_link__WEBPACK_IMPORTED_MODULE_1___default()), {\n href: \"/dashboard\",\n className: \"text-2xl font-bold text-primary\",\n children: \"DramaLing\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/components/Navigation.tsx\",\n lineNumber: 23,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"hidden md:flex space-x-6\",\n children: navItems.map((item)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_link__WEBPACK_IMPORTED_MODULE_1___default()), {\n href: item.href,\n className: `font-medium transition-colors ${pathname === item.href ? 'text-primary' : 'text-gray-600 hover:text-gray-900'}`,\n children: item.label\n }, item.href, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/components/Navigation.tsx\",\n lineNumber: 28,\n columnNumber: 17\n }, this))\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/components/Navigation.tsx\",\n lineNumber: 26,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/components/Navigation.tsx\",\n lineNumber: 22,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center space-x-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n className: \"p-2 text-gray-600 hover:text-gray-900\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n className: \"w-6 h-6\",\n fill: \"none\",\n stroke: \"currentColor\",\n viewBox: \"0 0 24 24\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n d: \"M15 17h5l-1.405-1.405A2.032 2.032 0 0118 14.158V11a6.002 6.002 0 00-4-5.659V5a2 2 0 10-4 0v.341C7.67 6.165 6 8.388 6 11v3.159c0 .538-.214 1.055-.595 1.436L4 17h5m6 0v1a3 3 0 11-6 0v-1m6 0H9\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/components/Navigation.tsx\",\n lineNumber: 47,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/components/Navigation.tsx\",\n lineNumber: 46,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/components/Navigation.tsx\",\n lineNumber: 45,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center space-x-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-8 h-8 bg-primary rounded-full flex items-center justify-center text-white font-semibold\",\n children: user?.username?.[0]?.toUpperCase() || 'U'\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/components/Navigation.tsx\",\n lineNumber: 53,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-sm font-medium\",\n children: user?.displayName || user?.username\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/components/Navigation.tsx\",\n lineNumber: 56,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: logout,\n className: \"ml-4 text-sm text-gray-600 hover:text-gray-900\",\n children: \"登出\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/components/Navigation.tsx\",\n lineNumber: 57,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/components/Navigation.tsx\",\n lineNumber: 52,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/components/Navigation.tsx\",\n lineNumber: 43,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/components/Navigation.tsx\",\n lineNumber: 21,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/components/Navigation.tsx\",\n lineNumber: 20,\n columnNumber: 7\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/components/Navigation.tsx\",\n lineNumber: 19,\n columnNumber: 5\n }, this);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9jb21wb25lbnRzL05hdmlnYXRpb24udHN4IiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBRTRCO0FBQ2lCO0FBQ0c7QUFFekMsU0FBU0c7SUFDZCxNQUFNLEVBQUVDLElBQUksRUFBRUMsTUFBTSxFQUFFLEdBQUdILDhEQUFPQTtJQUNoQyxNQUFNSSxXQUFXTCw0REFBV0E7SUFFNUIsTUFBTU0sV0FBVztRQUNmO1lBQUVDLE1BQU07WUFBY0MsT0FBTztRQUFNO1FBQ25DO1lBQUVELE1BQU07WUFBZUMsT0FBTztRQUFLO1FBQ25DO1lBQUVELE1BQU07WUFBVUMsT0FBTztRQUFLO1FBQzlCO1lBQUVELE1BQU07WUFBYUMsT0FBTztRQUFRO0tBQ3JDO0lBRUQscUJBQ0UsOERBQUNDO1FBQUlDLFdBQVU7a0JBQ2IsNEVBQUNDO1lBQUlELFdBQVU7c0JBQ2IsNEVBQUNDO2dCQUFJRCxXQUFVOztrQ0FDYiw4REFBQ0M7d0JBQUlELFdBQVU7OzBDQUNiLDhEQUFDWCxrREFBSUE7Z0NBQUNRLE1BQUs7Z0NBQWFHLFdBQVU7MENBQWtDOzs7Ozs7MENBR3BFLDhEQUFDQztnQ0FBSUQsV0FBVTswQ0FDWkosU0FBU00sR0FBRyxDQUFDLENBQUNDLHFCQUNiLDhEQUFDZCxrREFBSUE7d0NBRUhRLE1BQU1NLEtBQUtOLElBQUk7d0NBQ2ZHLFdBQVcsQ0FBQyw4QkFBOEIsRUFDeENMLGFBQWFRLEtBQUtOLElBQUksR0FDbEIsaUJBQ0EscUNBQ0o7a0RBRURNLEtBQUtMLEtBQUs7dUNBUk5LLEtBQUtOLElBQUk7Ozs7Ozs7Ozs7Ozs7Ozs7a0NBY3RCLDhEQUFDSTt3QkFBSUQsV0FBVTs7MENBRWIsOERBQUNJO2dDQUFPSixXQUFVOzBDQUNoQiw0RUFBQ0s7b0NBQUlMLFdBQVU7b0NBQVVNLE1BQUs7b0NBQU9DLFFBQU87b0NBQWVDLFNBQVE7OENBQ2pFLDRFQUFDQzt3Q0FBS0MsZUFBYzt3Q0FBUUMsZ0JBQWU7d0NBQVFDLGFBQWE7d0NBQUdDLEdBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7MENBS3pFLDhEQUFDWjtnQ0FBSUQsV0FBVTs7a0RBQ2IsOERBQUNDO3dDQUFJRCxXQUFVO2tEQUNaUCxNQUFNcUIsVUFBVSxDQUFDLEVBQUUsRUFBRUMsaUJBQWlCOzs7Ozs7a0RBRXpDLDhEQUFDQzt3Q0FBS2hCLFdBQVU7a0RBQXVCUCxNQUFNd0IsZUFBZXhCLE1BQU1xQjs7Ozs7O2tEQUNsRSw4REFBQ1Y7d0NBQ0NjLFNBQVN4Qjt3Q0FDVE0sV0FBVTtrREFDWDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVNmIiwic291cmNlcyI6WyIvVXNlcnMvamV0dGNoZW5nMTAxOC9jb2RlL2RyYW1hbGluZy12b2NhYi1sZWFybmluZy9mcm9udGVuZC9jb21wb25lbnRzL05hdmlnYXRpb24udHN4Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2UgY2xpZW50J1xyXG5cclxuaW1wb3J0IExpbmsgZnJvbSAnbmV4dC9saW5rJ1xyXG5pbXBvcnQgeyB1c2VQYXRobmFtZSB9IGZyb20gJ25leHQvbmF2aWdhdGlvbidcclxuaW1wb3J0IHsgdXNlQXV0aCB9IGZyb20gJ0AvY29udGV4dHMvQXV0aENvbnRleHQnXHJcblxyXG5leHBvcnQgZnVuY3Rpb24gTmF2aWdhdGlvbigpIHtcclxuICBjb25zdCB7IHVzZXIsIGxvZ291dCB9ID0gdXNlQXV0aCgpXHJcbiAgY29uc3QgcGF0aG5hbWUgPSB1c2VQYXRobmFtZSgpXHJcblxyXG4gIGNvbnN0IG5hdkl0ZW1zID0gW1xyXG4gICAgeyBocmVmOiAnL2Rhc2hib2FyZCcsIGxhYmVsOiAn5YSA6KGo5p2/JyB9LFxyXG4gICAgeyBocmVmOiAnL2ZsYXNoY2FyZHMnLCBsYWJlbDogJ+ipnuWNoScgfSxcclxuICAgIHsgaHJlZjogJy9sZWFybicsIGxhYmVsOiAn5a2457+SJyB9LFxyXG4gICAgeyBocmVmOiAnL2dlbmVyYXRlJywgbGFiZWw6ICdBSSDnlJ/miJAnIH0sXHJcbiAgXVxyXG5cclxuICByZXR1cm4gKFxyXG4gICAgPG5hdiBjbGFzc05hbWU9XCJiZy13aGl0ZSBzaGFkb3ctc20gYm9yZGVyLWJcIj5cclxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJtYXgtdy03eGwgbXgtYXV0byBweC00IHNtOnB4LTYgbGc6cHgtOFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBqdXN0aWZ5LWJldHdlZW4gaC0xNlwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBzcGFjZS14LThcIj5cclxuICAgICAgICAgICAgPExpbmsgaHJlZj1cIi9kYXNoYm9hcmRcIiBjbGFzc05hbWU9XCJ0ZXh0LTJ4bCBmb250LWJvbGQgdGV4dC1wcmltYXJ5XCI+XHJcbiAgICAgICAgICAgICAgRHJhbWFMaW5nXHJcbiAgICAgICAgICAgIDwvTGluaz5cclxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJoaWRkZW4gbWQ6ZmxleCBzcGFjZS14LTZcIj5cclxuICAgICAgICAgICAgICB7bmF2SXRlbXMubWFwKChpdGVtKSA9PiAoXHJcbiAgICAgICAgICAgICAgICA8TGlua1xyXG4gICAgICAgICAgICAgICAgICBrZXk9e2l0ZW0uaHJlZn1cclxuICAgICAgICAgICAgICAgICAgaHJlZj17aXRlbS5ocmVmfVxyXG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2Bmb250LW1lZGl1bSB0cmFuc2l0aW9uLWNvbG9ycyAke1xyXG4gICAgICAgICAgICAgICAgICAgIHBhdGhuYW1lID09PSBpdGVtLmhyZWZcclxuICAgICAgICAgICAgICAgICAgICAgID8gJ3RleHQtcHJpbWFyeSdcclxuICAgICAgICAgICAgICAgICAgICAgIDogJ3RleHQtZ3JheS02MDAgaG92ZXI6dGV4dC1ncmF5LTkwMCdcclxuICAgICAgICAgICAgICAgICAgfWB9XHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIHtpdGVtLmxhYmVsfVxyXG4gICAgICAgICAgICAgICAgPC9MaW5rPlxyXG4gICAgICAgICAgICAgICkpfVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIgc3BhY2UteC00XCI+XHJcbiAgICAgICAgICAgIHsvKiDpgJrnn6XmjInpiJUgKi99XHJcbiAgICAgICAgICAgIDxidXR0b24gY2xhc3NOYW1lPVwicC0yIHRleHQtZ3JheS02MDAgaG92ZXI6dGV4dC1ncmF5LTkwMFwiPlxyXG4gICAgICAgICAgICAgIDxzdmcgY2xhc3NOYW1lPVwidy02IGgtNlwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiPlxyXG4gICAgICAgICAgICAgICAgPHBhdGggc3Ryb2tlTGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlTGluZWpvaW49XCJyb3VuZFwiIHN0cm9rZVdpZHRoPXsyfSBkPVwiTTE1IDE3aDVsLTEuNDA1LTEuNDA1QTIuMDMyIDIuMDMyIDAgMDExOCAxNC4xNThWMTFhNi4wMDIgNi4wMDIgMCAwMC00LTUuNjU5VjVhMiAyIDAgMTAtNCAwdi4zNDFDNy42NyA2LjE2NSA2IDguMzg4IDYgMTF2My4xNTljMCAuNTM4LS4yMTQgMS4wNTUtLjU5NSAxLjQzNkw0IDE3aDVtNiAwdjFhMyAzIDAgMTEtNiAwdi0xbTYgMEg5XCIgLz5cclxuICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcblxyXG4gICAgICAgICAgICB7Lyog55So5oi26LOH6KiKICovfVxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIHNwYWNlLXgtMlwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy04IGgtOCBiZy1wcmltYXJ5IHJvdW5kZWQtZnVsbCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciB0ZXh0LXdoaXRlIGZvbnQtc2VtaWJvbGRcIj5cclxuICAgICAgICAgICAgICAgIHt1c2VyPy51c2VybmFtZT8uWzBdPy50b1VwcGVyQ2FzZSgpIHx8ICdVJ31cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LXNtIGZvbnQtbWVkaXVtXCI+e3VzZXI/LmRpc3BsYXlOYW1lIHx8IHVzZXI/LnVzZXJuYW1lfTwvc3Bhbj5cclxuICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICBvbkNsaWNrPXtsb2dvdXR9XHJcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJtbC00IHRleHQtc20gdGV4dC1ncmF5LTYwMCBob3Zlcjp0ZXh0LWdyYXktOTAwXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICDnmbvlh7pcclxuICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L25hdj5cclxuICApXHJcbn0iXSwibmFtZXMiOlsiTGluayIsInVzZVBhdGhuYW1lIiwidXNlQXV0aCIsIk5hdmlnYXRpb24iLCJ1c2VyIiwibG9nb3V0IiwicGF0aG5hbWUiLCJuYXZJdGVtcyIsImhyZWYiLCJsYWJlbCIsIm5hdiIsImNsYXNzTmFtZSIsImRpdiIsIm1hcCIsIml0ZW0iLCJidXR0b24iLCJzdmciLCJmaWxsIiwic3Ryb2tlIiwidmlld0JveCIsInBhdGgiLCJzdHJva2VMaW5lY2FwIiwic3Ryb2tlTGluZWpvaW4iLCJzdHJva2VXaWR0aCIsImQiLCJ1c2VybmFtZSIsInRvVXBwZXJDYXNlIiwic3BhbiIsImRpc3BsYXlOYW1lIiwib25DbGljayJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./components/Navigation.tsx\n"); /***/ }), diff --git a/frontend/.next/server/app/flashcards/page_client-reference-manifest.js b/frontend/.next/server/app/flashcards/page_client-reference-manifest.js index 7b3c172..7f10219 100644 --- a/frontend/.next/server/app/flashcards/page_client-reference-manifest.js +++ b/frontend/.next/server/app/flashcards/page_client-reference-manifest.js @@ -1 +1 @@ -globalThis.__RSC_MANIFEST=(globalThis.__RSC_MANIFEST||{});globalThis.__RSC_MANIFEST["/flashcards/page"]={"moduleLoading":{"prefix":"/_next/"},"ssrModuleMapping":{"(app-pages-browser)/./contexts/AuthContext.tsx":{"*":{"id":"(ssr)/./contexts/AuthContext.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/learn/page.tsx":{"*":{"id":"(ssr)/./app/learn/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/builtin/global-error.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/builtin/global-error.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/client-page.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/client-page.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/client-segment.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/client-segment.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/http-access-fallback/error-boundary.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/http-access-fallback/error-boundary.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/layout-router.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/layout-router.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/metadata/async-metadata.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/metadata/async-metadata.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/render-from-template-context.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/render-from-template-context.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/lib/framework/boundary-components.js":{"*":{"id":"(ssr)/./node_modules/next/dist/lib/framework/boundary-components.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/lib/metadata/generate/icon-mark.js":{"*":{"id":"(ssr)/./node_modules/next/dist/lib/metadata/generate/icon-mark.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js":{"*":{"id":"(ssr)/./node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/page.tsx":{"*":{"id":"(ssr)/./app/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/register/page.tsx":{"*":{"id":"(ssr)/./app/register/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/dashboard/page.tsx":{"*":{"id":"(ssr)/./app/dashboard/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/login/page.tsx":{"*":{"id":"(ssr)/./app/login/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/flashcards/page.tsx":{"*":{"id":"(ssr)/./app/flashcards/page.tsx","name":"*","chunks":[],"async":false}}},"edgeSSRModuleMapping":{},"clientModules":{"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/contexts/AuthContext.tsx":{"id":"(app-pages-browser)/./contexts/AuthContext.tsx","name":"*","chunks":["app/layout","static/chunks/app/layout.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/font/google/target.css?{\"path\":\"app/layout.tsx\",\"import\":\"Inter\",\"arguments\":[{\"subsets\":[\"latin\"]}],\"variableName\":\"inter\"}":{"id":"(app-pages-browser)/./node_modules/next/font/google/target.css?{\"path\":\"app/layout.tsx\",\"import\":\"Inter\",\"arguments\":[{\"subsets\":[\"latin\"]}],\"variableName\":\"inter\"}","name":"*","chunks":["app/layout","static/chunks/app/layout.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/globals.css":{"id":"(app-pages-browser)/./app/globals.css","name":"*","chunks":["app/layout","static/chunks/app/layout.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/learn/page.tsx":{"id":"(app-pages-browser)/./app/learn/page.tsx","name":"*","chunks":[],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/client/components/builtin/global-error.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/builtin/global-error.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/esm/client/components/builtin/global-error.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/builtin/global-error.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/client/components/client-page.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/client-page.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/esm/client/components/client-page.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/client-page.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/client/components/client-segment.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/client-segment.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/esm/client/components/client-segment.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/client-segment.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/client/components/http-access-fallback/error-boundary.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/http-access-fallback/error-boundary.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/http-access-fallback/error-boundary.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/client/components/layout-router.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/layout-router.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/esm/client/components/layout-router.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/layout-router.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/client/components/metadata/async-metadata.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/metadata/async-metadata.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/esm/client/components/metadata/async-metadata.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/metadata/async-metadata.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/client/components/render-from-template-context.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/render-from-template-context.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/render-from-template-context.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/lib/framework/boundary-components.js":{"id":"(app-pages-browser)/./node_modules/next/dist/lib/framework/boundary-components.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":"(app-pages-browser)/./node_modules/next/dist/lib/framework/boundary-components.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/lib/metadata/generate/icon-mark.js":{"id":"(app-pages-browser)/./node_modules/next/dist/lib/metadata/generate/icon-mark.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":"(app-pages-browser)/./node_modules/next/dist/lib/metadata/generate/icon-mark.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js":{"id":"(app-pages-browser)/./node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/esm/next-devtools/userspace/app/segment-explorer-node.js":{"id":"(app-pages-browser)/./node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/page.tsx":{"id":"(app-pages-browser)/./app/page.tsx","name":"*","chunks":["app/page","static/chunks/app/page.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/register/page.tsx":{"id":"(app-pages-browser)/./app/register/page.tsx","name":"*","chunks":[],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx":{"id":"(app-pages-browser)/./app/dashboard/page.tsx","name":"*","chunks":[],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/login/page.tsx":{"id":"(app-pages-browser)/./app/login/page.tsx","name":"*","chunks":[],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx":{"id":"(app-pages-browser)/./app/flashcards/page.tsx","name":"*","chunks":["app/flashcards/page","static/chunks/app/flashcards/page.js"],"async":false}},"entryCSSFiles":{"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/":[],"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/layout":[{"inlined":false,"path":"static/css/app/layout.css"}],"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/page":[],"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page":[]},"rscModuleMapping":{"(app-pages-browser)/./contexts/AuthContext.tsx":{"*":{"id":"(rsc)/./contexts/AuthContext.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/globals.css":{"*":{"id":"(rsc)/./app/globals.css","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/learn/page.tsx":{"*":{"id":"(rsc)/./app/learn/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/builtin/global-error.js":{"*":{"id":"(rsc)/./node_modules/next/dist/client/components/builtin/global-error.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/client-page.js":{"*":{"id":"(rsc)/./node_modules/next/dist/client/components/client-page.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/client-segment.js":{"*":{"id":"(rsc)/./node_modules/next/dist/client/components/client-segment.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/http-access-fallback/error-boundary.js":{"*":{"id":"(rsc)/./node_modules/next/dist/client/components/http-access-fallback/error-boundary.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/layout-router.js":{"*":{"id":"(rsc)/./node_modules/next/dist/client/components/layout-router.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/metadata/async-metadata.js":{"*":{"id":"(rsc)/./node_modules/next/dist/client/components/metadata/async-metadata.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/render-from-template-context.js":{"*":{"id":"(rsc)/./node_modules/next/dist/client/components/render-from-template-context.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/lib/framework/boundary-components.js":{"*":{"id":"(rsc)/./node_modules/next/dist/lib/framework/boundary-components.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/lib/metadata/generate/icon-mark.js":{"*":{"id":"(rsc)/./node_modules/next/dist/lib/metadata/generate/icon-mark.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js":{"*":{"id":"(rsc)/./node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/page.tsx":{"*":{"id":"(rsc)/./app/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/register/page.tsx":{"*":{"id":"(rsc)/./app/register/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/dashboard/page.tsx":{"*":{"id":"(rsc)/./app/dashboard/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/login/page.tsx":{"*":{"id":"(rsc)/./app/login/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/flashcards/page.tsx":{"*":{"id":"(rsc)/./app/flashcards/page.tsx","name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{}} \ No newline at end of file +globalThis.__RSC_MANIFEST=(globalThis.__RSC_MANIFEST||{});globalThis.__RSC_MANIFEST["/flashcards/page"]={"moduleLoading":{"prefix":"/_next/"},"ssrModuleMapping":{"(app-pages-browser)/./contexts/AuthContext.tsx":{"*":{"id":"(ssr)/./contexts/AuthContext.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/learn/page.tsx":{"*":{"id":"(ssr)/./app/learn/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/builtin/global-error.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/builtin/global-error.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/client-page.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/client-page.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/client-segment.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/client-segment.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/http-access-fallback/error-boundary.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/http-access-fallback/error-boundary.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/layout-router.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/layout-router.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/metadata/async-metadata.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/metadata/async-metadata.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/render-from-template-context.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/render-from-template-context.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/lib/framework/boundary-components.js":{"*":{"id":"(ssr)/./node_modules/next/dist/lib/framework/boundary-components.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/lib/metadata/generate/icon-mark.js":{"*":{"id":"(ssr)/./node_modules/next/dist/lib/metadata/generate/icon-mark.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js":{"*":{"id":"(ssr)/./node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/page.tsx":{"*":{"id":"(ssr)/./app/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/register/page.tsx":{"*":{"id":"(ssr)/./app/register/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/dashboard/page.tsx":{"*":{"id":"(ssr)/./app/dashboard/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/login/page.tsx":{"*":{"id":"(ssr)/./app/login/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/flashcards/page.tsx":{"*":{"id":"(ssr)/./app/flashcards/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/generate/page.tsx":{"*":{"id":"(ssr)/./app/generate/page.tsx","name":"*","chunks":[],"async":false}}},"edgeSSRModuleMapping":{},"clientModules":{"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/contexts/AuthContext.tsx":{"id":"(app-pages-browser)/./contexts/AuthContext.tsx","name":"*","chunks":["app/layout","static/chunks/app/layout.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/font/google/target.css?{\"path\":\"app/layout.tsx\",\"import\":\"Inter\",\"arguments\":[{\"subsets\":[\"latin\"]}],\"variableName\":\"inter\"}":{"id":"(app-pages-browser)/./node_modules/next/font/google/target.css?{\"path\":\"app/layout.tsx\",\"import\":\"Inter\",\"arguments\":[{\"subsets\":[\"latin\"]}],\"variableName\":\"inter\"}","name":"*","chunks":["app/layout","static/chunks/app/layout.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/globals.css":{"id":"(app-pages-browser)/./app/globals.css","name":"*","chunks":["app/layout","static/chunks/app/layout.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/learn/page.tsx":{"id":"(app-pages-browser)/./app/learn/page.tsx","name":"*","chunks":[],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/client/components/builtin/global-error.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/builtin/global-error.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/esm/client/components/builtin/global-error.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/builtin/global-error.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/client/components/client-page.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/client-page.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/esm/client/components/client-page.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/client-page.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/client/components/client-segment.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/client-segment.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/esm/client/components/client-segment.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/client-segment.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/client/components/http-access-fallback/error-boundary.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/http-access-fallback/error-boundary.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/http-access-fallback/error-boundary.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/client/components/layout-router.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/layout-router.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/esm/client/components/layout-router.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/layout-router.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/client/components/metadata/async-metadata.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/metadata/async-metadata.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/esm/client/components/metadata/async-metadata.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/metadata/async-metadata.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/client/components/render-from-template-context.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/render-from-template-context.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/render-from-template-context.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/lib/framework/boundary-components.js":{"id":"(app-pages-browser)/./node_modules/next/dist/lib/framework/boundary-components.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":"(app-pages-browser)/./node_modules/next/dist/lib/framework/boundary-components.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/lib/metadata/generate/icon-mark.js":{"id":"(app-pages-browser)/./node_modules/next/dist/lib/metadata/generate/icon-mark.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":"(app-pages-browser)/./node_modules/next/dist/lib/metadata/generate/icon-mark.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js":{"id":"(app-pages-browser)/./node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/esm/next-devtools/userspace/app/segment-explorer-node.js":{"id":"(app-pages-browser)/./node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/page.tsx":{"id":"(app-pages-browser)/./app/page.tsx","name":"*","chunks":["app/page","static/chunks/app/page.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/register/page.tsx":{"id":"(app-pages-browser)/./app/register/page.tsx","name":"*","chunks":[],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx":{"id":"(app-pages-browser)/./app/dashboard/page.tsx","name":"*","chunks":[],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/login/page.tsx":{"id":"(app-pages-browser)/./app/login/page.tsx","name":"*","chunks":[],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx":{"id":"(app-pages-browser)/./app/flashcards/page.tsx","name":"*","chunks":["app/flashcards/page","static/chunks/app/flashcards/page.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx":{"id":"(app-pages-browser)/./app/generate/page.tsx","name":"*","chunks":[],"async":false}},"entryCSSFiles":{"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/":[],"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/layout":[{"inlined":false,"path":"static/css/app/layout.css"}],"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/page":[],"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page":[]},"rscModuleMapping":{"(app-pages-browser)/./contexts/AuthContext.tsx":{"*":{"id":"(rsc)/./contexts/AuthContext.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/globals.css":{"*":{"id":"(rsc)/./app/globals.css","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/learn/page.tsx":{"*":{"id":"(rsc)/./app/learn/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/builtin/global-error.js":{"*":{"id":"(rsc)/./node_modules/next/dist/client/components/builtin/global-error.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/client-page.js":{"*":{"id":"(rsc)/./node_modules/next/dist/client/components/client-page.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/client-segment.js":{"*":{"id":"(rsc)/./node_modules/next/dist/client/components/client-segment.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/http-access-fallback/error-boundary.js":{"*":{"id":"(rsc)/./node_modules/next/dist/client/components/http-access-fallback/error-boundary.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/layout-router.js":{"*":{"id":"(rsc)/./node_modules/next/dist/client/components/layout-router.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/metadata/async-metadata.js":{"*":{"id":"(rsc)/./node_modules/next/dist/client/components/metadata/async-metadata.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/render-from-template-context.js":{"*":{"id":"(rsc)/./node_modules/next/dist/client/components/render-from-template-context.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/lib/framework/boundary-components.js":{"*":{"id":"(rsc)/./node_modules/next/dist/lib/framework/boundary-components.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/lib/metadata/generate/icon-mark.js":{"*":{"id":"(rsc)/./node_modules/next/dist/lib/metadata/generate/icon-mark.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js":{"*":{"id":"(rsc)/./node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/page.tsx":{"*":{"id":"(rsc)/./app/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/register/page.tsx":{"*":{"id":"(rsc)/./app/register/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/dashboard/page.tsx":{"*":{"id":"(rsc)/./app/dashboard/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/login/page.tsx":{"*":{"id":"(rsc)/./app/login/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/flashcards/page.tsx":{"*":{"id":"(rsc)/./app/flashcards/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/generate/page.tsx":{"*":{"id":"(rsc)/./app/generate/page.tsx","name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{}} \ No newline at end of file diff --git a/frontend/.next/server/app/generate/page.js b/frontend/.next/server/app/generate/page.js new file mode 100644 index 0000000..cec4cb8 --- /dev/null +++ b/frontend/.next/server/app/generate/page.js @@ -0,0 +1,305 @@ +/* + * 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/). + */ +(() => { +var exports = {}; +exports.id = "app/generate/page"; +exports.ids = ["app/generate/page"]; +exports.modules = { + +/***/ "(rsc)/./app/generate/page.tsx": +/*!*******************************!*\ + !*** ./app/generate/page.tsx ***! + \*******************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react_server_dom_webpack_server__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react-server-dom-webpack/server */ \"(rsc)/./node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react-server-dom-webpack-server.js\");\n/* harmony import */ var react_server_dom_webpack_server__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_server_dom_webpack_server__WEBPACK_IMPORTED_MODULE_0__);\n// This file is generated by the Webpack next-flight-loader.\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((0,react_server_dom_webpack_server__WEBPACK_IMPORTED_MODULE_0__.registerClientReference)(\nfunction() { throw new Error(\"Attempted to call the default export of \\\"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\\\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.\"); },\n\"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n\"default\",\n));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9hcHAvZ2VuZXJhdGUvcGFnZS50c3giLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEiLCJzb3VyY2VzIjpbIl9OX0UvLi9hcHAvZ2VuZXJhdGUvcGFnZS50c3gvX19uZXh0anMtaW50ZXJuYWwtcHJveHkubWpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFRoaXMgZmlsZSBpcyBnZW5lcmF0ZWQgYnkgdGhlIFdlYnBhY2sgbmV4dC1mbGlnaHQtbG9hZGVyLlxuaW1wb3J0IHsgcmVnaXN0ZXJDbGllbnRSZWZlcmVuY2UgfSBmcm9tIFwicmVhY3Qtc2VydmVyLWRvbS13ZWJwYWNrL3NlcnZlclwiO1xuZXhwb3J0IGRlZmF1bHQgcmVnaXN0ZXJDbGllbnRSZWZlcmVuY2UoXG5mdW5jdGlvbigpIHsgdGhyb3cgbmV3IEVycm9yKFwiQXR0ZW1wdGVkIHRvIGNhbGwgdGhlIGRlZmF1bHQgZXhwb3J0IG9mIFxcXCIvVXNlcnMvamV0dGNoZW5nMTAxOC9jb2RlL2RyYW1hbGluZy12b2NhYi1sZWFybmluZy9mcm9udGVuZC9hcHAvZ2VuZXJhdGUvcGFnZS50c3hcXFwiIGZyb20gdGhlIHNlcnZlciwgYnV0IGl0J3Mgb24gdGhlIGNsaWVudC4gSXQncyBub3QgcG9zc2libGUgdG8gaW52b2tlIGEgY2xpZW50IGZ1bmN0aW9uIGZyb20gdGhlIHNlcnZlciwgaXQgY2FuIG9ubHkgYmUgcmVuZGVyZWQgYXMgYSBDb21wb25lbnQgb3IgcGFzc2VkIHRvIHByb3BzIG9mIGEgQ2xpZW50IENvbXBvbmVudC5cIik7IH0sXG5cIi9Vc2Vycy9qZXR0Y2hlbmcxMDE4L2NvZGUvZHJhbWFsaW5nLXZvY2FiLWxlYXJuaW5nL2Zyb250ZW5kL2FwcC9nZW5lcmF0ZS9wYWdlLnRzeFwiLFxuXCJkZWZhdWx0XCIsXG4pO1xuIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./app/generate/page.tsx\n"); + +/***/ }), + +/***/ "(rsc)/./app/globals.css": +/*!*************************!*\ + !*** ./app/globals.css ***! + \*************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (\"9fdc4ff274b5\");\nif (false) {}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9hcHAvZ2xvYmFscy5jc3MiLCJtYXBwaW5ncyI6Ijs7OztBQUFBLGlFQUFlLGNBQWM7QUFDN0IsSUFBSSxLQUFVLEVBQUUsRUFBdUIiLCJzb3VyY2VzIjpbIi9Vc2Vycy9qZXR0Y2hlbmcxMDE4L2NvZGUvZHJhbWFsaW5nLXZvY2FiLWxlYXJuaW5nL2Zyb250ZW5kL2FwcC9nbG9iYWxzLmNzcyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBcIjlmZGM0ZmYyNzRiNVwiXG5pZiAobW9kdWxlLmhvdCkgeyBtb2R1bGUuaG90LmFjY2VwdCgpIH1cbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./app/globals.css\n"); + +/***/ }), + +/***/ "(rsc)/./app/layout.tsx": +/*!************************!*\ + !*** ./app/layout.tsx ***! + \************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ RootLayout),\n/* harmony export */ metadata: () => (/* binding */ metadata)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"(rsc)/./node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react-jsx-dev-runtime.js\");\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var next_font_google_target_css_path_app_layout_tsx_import_Inter_arguments_subsets_latin_variableName_inter___WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! next/font/google/target.css?{\"path\":\"app/layout.tsx\",\"import\":\"Inter\",\"arguments\":[{\"subsets\":[\"latin\"]}],\"variableName\":\"inter\"} */ \"(rsc)/./node_modules/next/font/google/target.css?{\\\"path\\\":\\\"app/layout.tsx\\\",\\\"import\\\":\\\"Inter\\\",\\\"arguments\\\":[{\\\"subsets\\\":[\\\"latin\\\"]}],\\\"variableName\\\":\\\"inter\\\"}\");\n/* harmony import */ var next_font_google_target_css_path_app_layout_tsx_import_Inter_arguments_subsets_latin_variableName_inter___WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(next_font_google_target_css_path_app_layout_tsx_import_Inter_arguments_subsets_latin_variableName_inter___WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _globals_css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./globals.css */ \"(rsc)/./app/globals.css\");\n/* harmony import */ var _contexts_AuthContext__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/contexts/AuthContext */ \"(rsc)/./contexts/AuthContext.tsx\");\n\n\n\n\nconst metadata = {\n title: 'DramaLing - 從影劇學英文',\n description: 'AI驅動的英文詞彙學習平台,透過影劇對話生成個性化詞卡'\n};\nfunction RootLayout({ children }) {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"html\", {\n lang: \"zh-TW\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"body\", {\n className: (next_font_google_target_css_path_app_layout_tsx_import_Inter_arguments_subsets_latin_variableName_inter___WEBPACK_IMPORTED_MODULE_3___default().className),\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_contexts_AuthContext__WEBPACK_IMPORTED_MODULE_2__.AuthProvider, {\n children: children\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/layout.tsx\",\n lineNumber: 21,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/layout.tsx\",\n lineNumber: 20,\n columnNumber: 7\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/layout.tsx\",\n lineNumber: 19,\n columnNumber: 5\n }, this);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9hcHAvbGF5b3V0LnRzeCIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFLTUE7QUFIZ0I7QUFDK0I7QUFJOUMsTUFBTUUsV0FBcUI7SUFDaENDLE9BQU87SUFDUEMsYUFBYTtBQUNmLEVBQUM7QUFFYyxTQUFTQyxXQUFXLEVBQ2pDQyxRQUFRLEVBR1Q7SUFDQyxxQkFDRSw4REFBQ0M7UUFBS0MsTUFBSztrQkFDVCw0RUFBQ0M7WUFBS0MsV0FBV1YsMkpBQWU7c0JBQzlCLDRFQUFDQywrREFBWUE7MEJBQ1ZLOzs7Ozs7Ozs7Ozs7Ozs7O0FBS1giLCJzb3VyY2VzIjpbIi9Vc2Vycy9qZXR0Y2hlbmcxMDE4L2NvZGUvZHJhbWFsaW5nLXZvY2FiLWxlYXJuaW5nL2Zyb250ZW5kL2FwcC9sYXlvdXQudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgTWV0YWRhdGEgfSBmcm9tICduZXh0J1xuaW1wb3J0IHsgSW50ZXIgfSBmcm9tICduZXh0L2ZvbnQvZ29vZ2xlJ1xuaW1wb3J0ICcuL2dsb2JhbHMuY3NzJ1xuaW1wb3J0IHsgQXV0aFByb3ZpZGVyIH0gZnJvbSAnQC9jb250ZXh0cy9BdXRoQ29udGV4dCdcblxuY29uc3QgaW50ZXIgPSBJbnRlcih7IHN1YnNldHM6IFsnbGF0aW4nXSB9KVxuXG5leHBvcnQgY29uc3QgbWV0YWRhdGE6IE1ldGFkYXRhID0ge1xuICB0aXRsZTogJ0RyYW1hTGluZyAtIOW+nuW9seWKh+WtuOiLseaWhycsXG4gIGRlc2NyaXB0aW9uOiAnQUnpqYXli5XnmoToi7HmlofoqZ7lvZnlrbjnv5LlubPlj7DvvIzpgI/pgY7lvbHlioflsI3oqbHnlJ/miJDlgIvmgKfljJboqZ7ljaEnLFxufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBSb290TGF5b3V0KHtcbiAgY2hpbGRyZW4sXG59OiB7XG4gIGNoaWxkcmVuOiBSZWFjdC5SZWFjdE5vZGVcbn0pIHtcbiAgcmV0dXJuIChcbiAgICA8aHRtbCBsYW5nPVwiemgtVFdcIj5cbiAgICAgIDxib2R5IGNsYXNzTmFtZT17aW50ZXIuY2xhc3NOYW1lfT5cbiAgICAgICAgPEF1dGhQcm92aWRlcj5cbiAgICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgIDwvQXV0aFByb3ZpZGVyPlxuICAgICAgPC9ib2R5PlxuICAgIDwvaHRtbD5cbiAgKVxufSJdLCJuYW1lcyI6WyJpbnRlciIsIkF1dGhQcm92aWRlciIsIm1ldGFkYXRhIiwidGl0bGUiLCJkZXNjcmlwdGlvbiIsIlJvb3RMYXlvdXQiLCJjaGlsZHJlbiIsImh0bWwiLCJsYW5nIiwiYm9keSIsImNsYXNzTmFtZSJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./app/layout.tsx\n"); + +/***/ }), + +/***/ "(rsc)/./contexts/AuthContext.tsx": +/*!**********************************!*\ + !*** ./contexts/AuthContext.tsx ***! + \**********************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ AuthProvider: () => (/* binding */ AuthProvider),\n/* harmony export */ useAuth: () => (/* binding */ useAuth)\n/* harmony export */ });\n/* harmony import */ var react_server_dom_webpack_server__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react-server-dom-webpack/server */ \"(rsc)/./node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react-server-dom-webpack-server.js\");\n/* harmony import */ var react_server_dom_webpack_server__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_server_dom_webpack_server__WEBPACK_IMPORTED_MODULE_0__);\n// This file is generated by the Webpack next-flight-loader.\n\nconst useAuth = (0,react_server_dom_webpack_server__WEBPACK_IMPORTED_MODULE_0__.registerClientReference)(\nfunction() { throw new Error(\"Attempted to call useAuth() from the server but useAuth is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.\"); },\n\"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/contexts/AuthContext.tsx\",\n\"useAuth\",\n);const AuthProvider = (0,react_server_dom_webpack_server__WEBPACK_IMPORTED_MODULE_0__.registerClientReference)(\nfunction() { throw new Error(\"Attempted to call AuthProvider() from the server but AuthProvider is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.\"); },\n\"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/contexts/AuthContext.tsx\",\n\"AuthProvider\",\n);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9jb250ZXh0cy9BdXRoQ29udGV4dC50c3giLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBIiwic291cmNlcyI6WyJfTl9FLy4vY29udGV4dHMvQXV0aENvbnRleHQudHN4L19fbmV4dGpzLWludGVybmFsLXByb3h5Lm1qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIGJ5IHRoZSBXZWJwYWNrIG5leHQtZmxpZ2h0LWxvYWRlci5cbmltcG9ydCB7IHJlZ2lzdGVyQ2xpZW50UmVmZXJlbmNlIH0gZnJvbSBcInJlYWN0LXNlcnZlci1kb20td2VicGFjay9zZXJ2ZXJcIjtcbmV4cG9ydCBjb25zdCB1c2VBdXRoID0gcmVnaXN0ZXJDbGllbnRSZWZlcmVuY2UoXG5mdW5jdGlvbigpIHsgdGhyb3cgbmV3IEVycm9yKFwiQXR0ZW1wdGVkIHRvIGNhbGwgdXNlQXV0aCgpIGZyb20gdGhlIHNlcnZlciBidXQgdXNlQXV0aCBpcyBvbiB0aGUgY2xpZW50LiBJdCdzIG5vdCBwb3NzaWJsZSB0byBpbnZva2UgYSBjbGllbnQgZnVuY3Rpb24gZnJvbSB0aGUgc2VydmVyLCBpdCBjYW4gb25seSBiZSByZW5kZXJlZCBhcyBhIENvbXBvbmVudCBvciBwYXNzZWQgdG8gcHJvcHMgb2YgYSBDbGllbnQgQ29tcG9uZW50LlwiKTsgfSxcblwiL1VzZXJzL2pldHRjaGVuZzEwMTgvY29kZS9kcmFtYWxpbmctdm9jYWItbGVhcm5pbmcvZnJvbnRlbmQvY29udGV4dHMvQXV0aENvbnRleHQudHN4XCIsXG5cInVzZUF1dGhcIixcbik7ZXhwb3J0IGNvbnN0IEF1dGhQcm92aWRlciA9IHJlZ2lzdGVyQ2xpZW50UmVmZXJlbmNlKFxuZnVuY3Rpb24oKSB7IHRocm93IG5ldyBFcnJvcihcIkF0dGVtcHRlZCB0byBjYWxsIEF1dGhQcm92aWRlcigpIGZyb20gdGhlIHNlcnZlciBidXQgQXV0aFByb3ZpZGVyIGlzIG9uIHRoZSBjbGllbnQuIEl0J3Mgbm90IHBvc3NpYmxlIHRvIGludm9rZSBhIGNsaWVudCBmdW5jdGlvbiBmcm9tIHRoZSBzZXJ2ZXIsIGl0IGNhbiBvbmx5IGJlIHJlbmRlcmVkIGFzIGEgQ29tcG9uZW50IG9yIHBhc3NlZCB0byBwcm9wcyBvZiBhIENsaWVudCBDb21wb25lbnQuXCIpOyB9LFxuXCIvVXNlcnMvamV0dGNoZW5nMTAxOC9jb2RlL2RyYW1hbGluZy12b2NhYi1sZWFybmluZy9mcm9udGVuZC9jb250ZXh0cy9BdXRoQ29udGV4dC50c3hcIixcblwiQXV0aFByb3ZpZGVyXCIsXG4pOyJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./contexts/AuthContext.tsx\n"); + +/***/ }), + +/***/ "(rsc)/./node_modules/next/dist/build/webpack/loaders/next-app-loader/index.js?name=app%2Fgenerate%2Fpage&page=%2Fgenerate%2Fpage&appPaths=%2Fgenerate%2Fpage&pagePath=private-next-app-dir%2Fgenerate%2Fpage.tsx&appDir=%2FUsers%2Fjettcheng1018%2Fcode%2Fdramaling-vocab-learning%2Ffrontend%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fjettcheng1018%2Fcode%2Fdramaling-vocab-learning%2Ffrontend&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D&isGlobalNotFoundEnabled=!": +/*!***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ + !*** ./node_modules/next/dist/build/webpack/loaders/next-app-loader/index.js?name=app%2Fgenerate%2Fpage&page=%2Fgenerate%2Fpage&appPaths=%2Fgenerate%2Fpage&pagePath=private-next-app-dir%2Fgenerate%2Fpage.tsx&appDir=%2FUsers%2Fjettcheng1018%2Fcode%2Fdramaling-vocab-learning%2Ffrontend%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fjettcheng1018%2Fcode%2Fdramaling-vocab-learning%2Ffrontend&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D&isGlobalNotFoundEnabled=! ***! + \***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ GlobalError: () => (/* reexport default from dynamic */ next_dist_client_components_builtin_global_error_js__WEBPACK_IMPORTED_MODULE_25___default.a),\n/* harmony export */ __next_app__: () => (/* binding */ __next_app__),\n/* harmony export */ handler: () => (/* binding */ handler),\n/* harmony export */ pages: () => (/* binding */ pages),\n/* harmony export */ routeModule: () => (/* binding */ routeModule),\n/* harmony export */ tree: () => (/* binding */ tree)\n/* harmony export */ });\n/* harmony import */ var next_dist_server_route_modules_app_page_module_compiled__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! next/dist/server/route-modules/app-page/module.compiled */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/module.compiled.js?6a4d\");\n/* harmony import */ var next_dist_server_route_modules_app_page_module_compiled__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_route_modules_app_page_module_compiled__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var next_dist_server_route_kind__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! next/dist/server/route-kind */ \"(rsc)/./node_modules/next/dist/server/route-kind.js\");\n/* harmony import */ var next_dist_server_instrumentation_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! next/dist/server/instrumentation/utils */ \"(rsc)/./node_modules/next/dist/server/instrumentation/utils.js\");\n/* harmony import */ var next_dist_server_lib_trace_tracer__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! next/dist/server/lib/trace/tracer */ \"(rsc)/./node_modules/next/dist/server/lib/trace/tracer.js\");\n/* harmony import */ var next_dist_server_lib_trace_tracer__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_lib_trace_tracer__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var next_dist_server_request_meta__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! next/dist/server/request-meta */ \"(rsc)/./node_modules/next/dist/server/request-meta.js\");\n/* harmony import */ var next_dist_server_request_meta__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_request_meta__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var next_dist_server_lib_trace_constants__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! next/dist/server/lib/trace/constants */ \"(rsc)/./node_modules/next/dist/server/lib/trace/constants.js\");\n/* harmony import */ var next_dist_server_lib_trace_constants__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_lib_trace_constants__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var next_dist_server_app_render_interop_default__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! next/dist/server/app-render/interop-default */ \"(rsc)/./node_modules/next/dist/server/app-render/interop-default.js\");\n/* harmony import */ var next_dist_server_app_render_strip_flight_headers__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! next/dist/server/app-render/strip-flight-headers */ \"(rsc)/./node_modules/next/dist/server/app-render/strip-flight-headers.js\");\n/* harmony import */ var next_dist_server_base_http_node__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! next/dist/server/base-http/node */ \"(rsc)/./node_modules/next/dist/server/base-http/node.js\");\n/* harmony import */ var next_dist_server_base_http_node__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_base_http_node__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var next_dist_server_lib_experimental_ppr__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! next/dist/server/lib/experimental/ppr */ \"(rsc)/./node_modules/next/dist/server/lib/experimental/ppr.js\");\n/* harmony import */ var next_dist_server_lib_experimental_ppr__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_lib_experimental_ppr__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var next_dist_server_request_fallback_params__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! next/dist/server/request/fallback-params */ \"(rsc)/./node_modules/next/dist/server/request/fallback-params.js\");\n/* harmony import */ var next_dist_server_app_render_encryption_utils__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! next/dist/server/app-render/encryption-utils */ \"(rsc)/./node_modules/next/dist/server/app-render/encryption-utils.js\");\n/* harmony import */ var next_dist_server_app_render_encryption_utils__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_app_render_encryption_utils__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var next_dist_server_lib_streaming_metadata__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! next/dist/server/lib/streaming-metadata */ \"(rsc)/./node_modules/next/dist/server/lib/streaming-metadata.js\");\n/* harmony import */ var next_dist_server_lib_streaming_metadata__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_lib_streaming_metadata__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var next_dist_server_app_render_action_utils__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! next/dist/server/app-render/action-utils */ \"(rsc)/./node_modules/next/dist/server/app-render/action-utils.js\");\n/* harmony import */ var next_dist_server_app_render_action_utils__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_app_render_action_utils__WEBPACK_IMPORTED_MODULE_13__);\n/* harmony import */ var next_dist_shared_lib_router_utils_app_paths__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! next/dist/shared/lib/router/utils/app-paths */ \"next/dist/shared/lib/router/utils/app-paths\");\n/* harmony import */ var next_dist_shared_lib_router_utils_app_paths__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(next_dist_shared_lib_router_utils_app_paths__WEBPACK_IMPORTED_MODULE_14__);\n/* harmony import */ var next_dist_server_lib_server_action_request_meta__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! next/dist/server/lib/server-action-request-meta */ \"(rsc)/./node_modules/next/dist/server/lib/server-action-request-meta.js\");\n/* harmony import */ var next_dist_server_lib_server_action_request_meta__WEBPACK_IMPORTED_MODULE_15___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_lib_server_action_request_meta__WEBPACK_IMPORTED_MODULE_15__);\n/* harmony import */ var next_dist_client_components_app_router_headers__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! next/dist/client/components/app-router-headers */ \"(rsc)/./node_modules/next/dist/client/components/app-router-headers.js\");\n/* harmony import */ var next_dist_client_components_app_router_headers__WEBPACK_IMPORTED_MODULE_16___default = /*#__PURE__*/__webpack_require__.n(next_dist_client_components_app_router_headers__WEBPACK_IMPORTED_MODULE_16__);\n/* harmony import */ var next_dist_shared_lib_router_utils_is_bot__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! next/dist/shared/lib/router/utils/is-bot */ \"next/dist/shared/lib/router/utils/is-bot\");\n/* harmony import */ var next_dist_shared_lib_router_utils_is_bot__WEBPACK_IMPORTED_MODULE_17___default = /*#__PURE__*/__webpack_require__.n(next_dist_shared_lib_router_utils_is_bot__WEBPACK_IMPORTED_MODULE_17__);\n/* harmony import */ var next_dist_server_response_cache__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! next/dist/server/response-cache */ \"(rsc)/./node_modules/next/dist/server/response-cache/index.js\");\n/* harmony import */ var next_dist_server_response_cache__WEBPACK_IMPORTED_MODULE_18___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_response_cache__WEBPACK_IMPORTED_MODULE_18__);\n/* harmony import */ var next_dist_lib_fallback__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! next/dist/lib/fallback */ \"(rsc)/./node_modules/next/dist/lib/fallback.js\");\n/* harmony import */ var next_dist_lib_fallback__WEBPACK_IMPORTED_MODULE_19___default = /*#__PURE__*/__webpack_require__.n(next_dist_lib_fallback__WEBPACK_IMPORTED_MODULE_19__);\n/* harmony import */ var next_dist_server_render_result__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! next/dist/server/render-result */ \"(rsc)/./node_modules/next/dist/server/render-result.js\");\n/* harmony import */ var next_dist_lib_constants__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! next/dist/lib/constants */ \"(rsc)/./node_modules/next/dist/lib/constants.js\");\n/* harmony import */ var next_dist_lib_constants__WEBPACK_IMPORTED_MODULE_21___default = /*#__PURE__*/__webpack_require__.n(next_dist_lib_constants__WEBPACK_IMPORTED_MODULE_21__);\n/* harmony import */ var next_dist_server_stream_utils_encoded_tags__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! next/dist/server/stream-utils/encoded-tags */ \"(rsc)/./node_modules/next/dist/server/stream-utils/encoded-tags.js\");\n/* harmony import */ var next_dist_server_send_payload__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! next/dist/server/send-payload */ \"(rsc)/./node_modules/next/dist/server/send-payload.js\");\n/* harmony import */ var next_dist_server_send_payload__WEBPACK_IMPORTED_MODULE_23___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_send_payload__WEBPACK_IMPORTED_MODULE_23__);\n/* harmony import */ var next_dist_shared_lib_no_fallback_error_external__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! next/dist/shared/lib/no-fallback-error.external */ \"next/dist/shared/lib/no-fallback-error.external\");\n/* harmony import */ var next_dist_shared_lib_no_fallback_error_external__WEBPACK_IMPORTED_MODULE_24___default = /*#__PURE__*/__webpack_require__.n(next_dist_shared_lib_no_fallback_error_external__WEBPACK_IMPORTED_MODULE_24__);\n/* harmony import */ var next_dist_client_components_builtin_global_error_js__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! next/dist/client/components/builtin/global-error.js */ \"(rsc)/./node_modules/next/dist/client/components/builtin/global-error.js\");\n/* harmony import */ var next_dist_client_components_builtin_global_error_js__WEBPACK_IMPORTED_MODULE_25___default = /*#__PURE__*/__webpack_require__.n(next_dist_client_components_builtin_global_error_js__WEBPACK_IMPORTED_MODULE_25__);\n/* harmony import */ var next_dist_server_app_render_entry_base__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! next/dist/server/app-render/entry-base */ \"(rsc)/./node_modules/next/dist/server/app-render/entry-base.js\");\n/* harmony import */ var next_dist_server_app_render_entry_base__WEBPACK_IMPORTED_MODULE_26___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_app_render_entry_base__WEBPACK_IMPORTED_MODULE_26__);\n/* harmony import */ var next_dist_client_components_redirect_status_code__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! next/dist/client/components/redirect-status-code */ \"(rsc)/./node_modules/next/dist/client/components/redirect-status-code.js\");\n/* harmony import */ var next_dist_client_components_redirect_status_code__WEBPACK_IMPORTED_MODULE_27___default = /*#__PURE__*/__webpack_require__.n(next_dist_client_components_redirect_status_code__WEBPACK_IMPORTED_MODULE_27__);\n/* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {};\n/* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in next_dist_server_app_render_entry_base__WEBPACK_IMPORTED_MODULE_26__) if([\"default\",\"tree\",\"pages\",\"GlobalError\",\"__next_app__\",\"routeModule\",\"handler\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => next_dist_server_app_render_entry_base__WEBPACK_IMPORTED_MODULE_26__[__WEBPACK_IMPORT_KEY__]\n/* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__);\nconst module0 = () => Promise.resolve(/*! import() eager */).then(__webpack_require__.bind(__webpack_require__, /*! ./app/layout.tsx */ \"(rsc)/./app/layout.tsx\"));\nconst module1 = () => Promise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__webpack_require__, /*! next/dist/client/components/builtin/global-error.js */ \"(rsc)/./node_modules/next/dist/client/components/builtin/global-error.js\", 23));\nconst module2 = () => Promise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__webpack_require__, /*! next/dist/client/components/builtin/not-found.js */ \"(rsc)/./node_modules/next/dist/client/components/builtin/not-found.js\", 23));\nconst module3 = () => Promise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__webpack_require__, /*! next/dist/client/components/builtin/forbidden.js */ \"(rsc)/./node_modules/next/dist/client/components/builtin/forbidden.js\", 23));\nconst module4 = () => Promise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__webpack_require__, /*! next/dist/client/components/builtin/unauthorized.js */ \"(rsc)/./node_modules/next/dist/client/components/builtin/unauthorized.js\", 23));\nconst page5 = () => Promise.resolve(/*! import() eager */).then(__webpack_require__.bind(__webpack_require__, /*! ./app/generate/page.tsx */ \"(rsc)/./app/generate/page.tsx\"));\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n// We inject the tree and pages here so that we can use them in the route\n// module.\nconst tree = {\n children: [\n '',\n {\n children: [\n 'generate',\n {\n children: ['__PAGE__', {}, {\n page: [page5, \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\"],\n \n }]\n },\n {\n \n \n }\n ]\n },\n {\n 'layout': [module0, \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/layout.tsx\"],\n'global-error': [module1, \"next/dist/client/components/builtin/global-error.js\"],\n'not-found': [module2, \"next/dist/client/components/builtin/not-found.js\"],\n'forbidden': [module3, \"next/dist/client/components/builtin/forbidden.js\"],\n'unauthorized': [module4, \"next/dist/client/components/builtin/unauthorized.js\"],\n \n }\n ]\n }.children;\nconst pages = [\"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\"];\n\n\n\nconst __next_app_require__ = __webpack_require__\nconst __next_app_load_chunk__ = () => Promise.resolve()\nconst __next_app__ = {\n require: __next_app_require__,\n loadChunk: __next_app_load_chunk__\n};\n\n\n\n// Create and export the route module that will be consumed.\nconst routeModule = new next_dist_server_route_modules_app_page_module_compiled__WEBPACK_IMPORTED_MODULE_0__.AppPageRouteModule({\n definition: {\n kind: next_dist_server_route_kind__WEBPACK_IMPORTED_MODULE_1__.RouteKind.APP_PAGE,\n page: \"/generate/page\",\n pathname: \"/generate\",\n // The following aren't used in production.\n bundlePath: '',\n filename: '',\n appPaths: []\n },\n userland: {\n loaderTree: tree\n },\n distDir: \".next\" || 0,\n relativeProjectDir: false || ''\n});\nasync function handler(req, res, ctx) {\n var _this;\n let srcPage = \"/generate/page\";\n // turbopack doesn't normalize `/index` in the page name\n // so we need to to process dynamic routes properly\n // TODO: fix turbopack providing differing value from webpack\n if (false) {} else if (srcPage === '/index') {\n // we always normalize /index specifically\n srcPage = '/';\n }\n const multiZoneDraftMode = false;\n const initialPostponed = (0,next_dist_server_request_meta__WEBPACK_IMPORTED_MODULE_4__.getRequestMeta)(req, 'postponed');\n // TODO: replace with more specific flags\n const minimalMode = (0,next_dist_server_request_meta__WEBPACK_IMPORTED_MODULE_4__.getRequestMeta)(req, 'minimalMode');\n const prepareResult = await routeModule.prepare(req, res, {\n srcPage,\n multiZoneDraftMode\n });\n if (!prepareResult) {\n res.statusCode = 400;\n res.end('Bad Request');\n ctx.waitUntil == null ? void 0 : ctx.waitUntil.call(ctx, Promise.resolve());\n return null;\n }\n const { buildId, query, params, parsedUrl, pageIsDynamic, buildManifest, nextFontManifest, reactLoadableManifest, serverActionsManifest, clientReferenceManifest, subresourceIntegrityManifest, prerenderManifest, isDraftMode, resolvedPathname, revalidateOnlyGenerated, routerServerContext, nextConfig, interceptionRoutePatterns } = prepareResult;\n const pathname = parsedUrl.pathname || '/';\n const normalizedSrcPage = (0,next_dist_shared_lib_router_utils_app_paths__WEBPACK_IMPORTED_MODULE_14__.normalizeAppPath)(srcPage);\n let { isOnDemandRevalidate } = prepareResult;\n const prerenderInfo = routeModule.match(pathname, prerenderManifest);\n const isPrerendered = !!prerenderManifest.routes[resolvedPathname];\n let isSSG = Boolean(prerenderInfo || isPrerendered || prerenderManifest.routes[normalizedSrcPage]);\n const userAgent = req.headers['user-agent'] || '';\n const botType = (0,next_dist_shared_lib_router_utils_is_bot__WEBPACK_IMPORTED_MODULE_17__.getBotType)(userAgent);\n const isHtmlBot = (0,next_dist_server_lib_streaming_metadata__WEBPACK_IMPORTED_MODULE_12__.isHtmlBotRequest)(req);\n /**\n * If true, this indicates that the request being made is for an app\n * prefetch request.\n */ const isPrefetchRSCRequest = (0,next_dist_server_request_meta__WEBPACK_IMPORTED_MODULE_4__.getRequestMeta)(req, 'isPrefetchRSCRequest') ?? req.headers[next_dist_client_components_app_router_headers__WEBPACK_IMPORTED_MODULE_16__.NEXT_ROUTER_PREFETCH_HEADER] === '1' // exclude runtime prefetches, which use '2'\n ;\n // NOTE: Don't delete headers[RSC] yet, it still needs to be used in renderToHTML later\n const isRSCRequest = (0,next_dist_server_request_meta__WEBPACK_IMPORTED_MODULE_4__.getRequestMeta)(req, 'isRSCRequest') ?? Boolean(req.headers[next_dist_client_components_app_router_headers__WEBPACK_IMPORTED_MODULE_16__.RSC_HEADER]);\n const isPossibleServerAction = (0,next_dist_server_lib_server_action_request_meta__WEBPACK_IMPORTED_MODULE_15__.getIsPossibleServerAction)(req);\n /**\n * If the route being rendered is an app page, and the ppr feature has been\n * enabled, then the given route _could_ support PPR.\n */ const couldSupportPPR = (0,next_dist_server_lib_experimental_ppr__WEBPACK_IMPORTED_MODULE_9__.checkIsAppPPREnabled)(nextConfig.experimental.ppr);\n // When enabled, this will allow the use of the `?__nextppronly` query to\n // enable debugging of the static shell.\n const hasDebugStaticShellQuery = false && 0;\n // When enabled, this will allow the use of the `?__nextppronly` query\n // to enable debugging of the fallback shell.\n const hasDebugFallbackShellQuery = hasDebugStaticShellQuery && query.__nextppronly === 'fallback';\n // This page supports PPR if it is marked as being `PARTIALLY_STATIC` in the\n // prerender manifest and this is an app page.\n const isRoutePPREnabled = couldSupportPPR && (((_this = prerenderManifest.routes[normalizedSrcPage] ?? prerenderManifest.dynamicRoutes[normalizedSrcPage]) == null ? void 0 : _this.renderingMode) === 'PARTIALLY_STATIC' || // Ideally we'd want to check the appConfig to see if this page has PPR\n // enabled or not, but that would require plumbing the appConfig through\n // to the server during development. We assume that the page supports it\n // but only during development.\n hasDebugStaticShellQuery && (routeModule.isDev === true || (routerServerContext == null ? void 0 : routerServerContext.experimentalTestProxy) === true));\n const isDebugStaticShell = hasDebugStaticShellQuery && isRoutePPREnabled;\n // We should enable debugging dynamic accesses when the static shell\n // debugging has been enabled and we're also in development mode.\n const isDebugDynamicAccesses = isDebugStaticShell && routeModule.isDev === true;\n const isDebugFallbackShell = hasDebugFallbackShellQuery && isRoutePPREnabled;\n // If we're in minimal mode, then try to get the postponed information from\n // the request metadata. If available, use it for resuming the postponed\n // render.\n const minimalPostponed = isRoutePPREnabled ? initialPostponed : undefined;\n // If PPR is enabled, and this is a RSC request (but not a prefetch), then\n // we can use this fact to only generate the flight data for the request\n // because we can't cache the HTML (as it's also dynamic).\n const isDynamicRSCRequest = isRoutePPREnabled && isRSCRequest && !isPrefetchRSCRequest;\n // Need to read this before it's stripped by stripFlightHeaders. We don't\n // need to transfer it to the request meta because it's only read\n // within this function; the static segment data should have already been\n // generated, so we will always either return a static response or a 404.\n const segmentPrefetchHeader = (0,next_dist_server_request_meta__WEBPACK_IMPORTED_MODULE_4__.getRequestMeta)(req, 'segmentPrefetchRSCRequest');\n // TODO: investigate existing bug with shouldServeStreamingMetadata always\n // being true for a revalidate due to modifying the base-server this.renderOpts\n // when fixing this to correct logic it causes hydration issue since we set\n // serveStreamingMetadata to true during export\n let serveStreamingMetadata = !userAgent ? true : (0,next_dist_server_lib_streaming_metadata__WEBPACK_IMPORTED_MODULE_12__.shouldServeStreamingMetadata)(userAgent, nextConfig.htmlLimitedBots);\n if (isHtmlBot && isRoutePPREnabled) {\n isSSG = false;\n serveStreamingMetadata = false;\n }\n // In development, we always want to generate dynamic HTML.\n let supportsDynamicResponse = // If we're in development, we always support dynamic HTML, unless it's\n // a data request, in which case we only produce static HTML.\n routeModule.isDev === true || // If this is not SSG or does not have static paths, then it supports\n // dynamic HTML.\n !isSSG || // If this request has provided postponed data, it supports dynamic\n // HTML.\n typeof initialPostponed === 'string' || // If this is a dynamic RSC request, then this render supports dynamic\n // HTML (it's dynamic).\n isDynamicRSCRequest;\n // When html bots request PPR page, perform the full dynamic rendering.\n const shouldWaitOnAllReady = isHtmlBot && isRoutePPREnabled;\n let ssgCacheKey = null;\n if (!isDraftMode && isSSG && !supportsDynamicResponse && !isPossibleServerAction && !minimalPostponed && !isDynamicRSCRequest) {\n ssgCacheKey = resolvedPathname;\n }\n // the staticPathKey differs from ssgCacheKey since\n // ssgCacheKey is null in dev since we're always in \"dynamic\"\n // mode in dev to bypass the cache, but we still need to honor\n // dynamicParams = false in dev mode\n let staticPathKey = ssgCacheKey;\n if (!staticPathKey && routeModule.isDev) {\n staticPathKey = resolvedPathname;\n }\n // If this is a request for an app path that should be statically generated\n // and we aren't in the edge runtime, strip the flight headers so it will\n // generate the static response.\n if (!routeModule.isDev && !isDraftMode && isSSG && isRSCRequest && !isDynamicRSCRequest) {\n (0,next_dist_server_app_render_strip_flight_headers__WEBPACK_IMPORTED_MODULE_7__.stripFlightHeaders)(req.headers);\n }\n const ComponentMod = {\n ...next_dist_server_app_render_entry_base__WEBPACK_IMPORTED_MODULE_26__,\n tree,\n pages,\n GlobalError: (next_dist_client_components_builtin_global_error_js__WEBPACK_IMPORTED_MODULE_25___default()),\n handler,\n routeModule,\n __next_app__\n };\n // Before rendering (which initializes component tree modules), we have to\n // set the reference manifests to our global store so Server Action's\n // encryption util can access to them at the top level of the page module.\n if (serverActionsManifest && clientReferenceManifest) {\n (0,next_dist_server_app_render_encryption_utils__WEBPACK_IMPORTED_MODULE_11__.setReferenceManifestsSingleton)({\n page: srcPage,\n clientReferenceManifest,\n serverActionsManifest,\n serverModuleMap: (0,next_dist_server_app_render_action_utils__WEBPACK_IMPORTED_MODULE_13__.createServerModuleMap)({\n serverActionsManifest\n })\n });\n }\n const method = req.method || 'GET';\n const tracer = (0,next_dist_server_lib_trace_tracer__WEBPACK_IMPORTED_MODULE_3__.getTracer)();\n const activeSpan = tracer.getActiveScopeSpan();\n try {\n const varyHeader = routeModule.getVaryHeader(resolvedPathname, interceptionRoutePatterns);\n res.setHeader('Vary', varyHeader);\n const invokeRouteModule = async (span, context)=>{\n const nextReq = new next_dist_server_base_http_node__WEBPACK_IMPORTED_MODULE_8__.NodeNextRequest(req);\n const nextRes = new next_dist_server_base_http_node__WEBPACK_IMPORTED_MODULE_8__.NodeNextResponse(res);\n // TODO: adapt for putting the RDC inside the postponed data\n // If we're in dev, and this isn't a prefetch or a server action,\n // we should seed the resume data cache.\n if (true) {\n if (nextConfig.experimental.cacheComponents && !isPrefetchRSCRequest && !context.renderOpts.isPossibleServerAction) {\n const warmup = await routeModule.warmup(nextReq, nextRes, context);\n // If the warmup is successful, we should use the resume data\n // cache from the warmup.\n if (warmup.metadata.renderResumeDataCache) {\n context.renderOpts.renderResumeDataCache = warmup.metadata.renderResumeDataCache;\n }\n }\n }\n return routeModule.render(nextReq, nextRes, context).finally(()=>{\n if (!span) return;\n span.setAttributes({\n 'http.status_code': res.statusCode,\n 'next.rsc': false\n });\n const rootSpanAttributes = tracer.getRootSpanAttributes();\n // We were unable to get attributes, probably OTEL is not enabled\n if (!rootSpanAttributes) {\n return;\n }\n if (rootSpanAttributes.get('next.span_type') !== next_dist_server_lib_trace_constants__WEBPACK_IMPORTED_MODULE_5__.BaseServerSpan.handleRequest) {\n console.warn(`Unexpected root span type '${rootSpanAttributes.get('next.span_type')}'. Please report this Next.js issue https://github.com/vercel/next.js`);\n return;\n }\n const route = rootSpanAttributes.get('next.route');\n if (route) {\n const name = `${method} ${route}`;\n span.setAttributes({\n 'next.route': route,\n 'http.route': route,\n 'next.span_name': name\n });\n span.updateName(name);\n } else {\n span.updateName(`${method} ${req.url}`);\n }\n });\n };\n const doRender = async ({ span, postponed, fallbackRouteParams })=>{\n const context = {\n query,\n params,\n page: normalizedSrcPage,\n sharedContext: {\n buildId\n },\n serverComponentsHmrCache: (0,next_dist_server_request_meta__WEBPACK_IMPORTED_MODULE_4__.getRequestMeta)(req, 'serverComponentsHmrCache'),\n fallbackRouteParams,\n renderOpts: {\n App: ()=>null,\n Document: ()=>null,\n pageConfig: {},\n ComponentMod,\n Component: (0,next_dist_server_app_render_interop_default__WEBPACK_IMPORTED_MODULE_6__.interopDefault)(ComponentMod),\n params,\n routeModule,\n page: srcPage,\n postponed,\n shouldWaitOnAllReady,\n serveStreamingMetadata,\n supportsDynamicResponse: typeof postponed === 'string' || supportsDynamicResponse,\n buildManifest,\n nextFontManifest,\n reactLoadableManifest,\n subresourceIntegrityManifest,\n serverActionsManifest,\n clientReferenceManifest,\n setIsrStatus: routerServerContext == null ? void 0 : routerServerContext.setIsrStatus,\n dir: true ? (__webpack_require__(/*! path */ \"path\").join)(/* turbopackIgnore: true */ process.cwd(), routeModule.relativeProjectDir) : 0,\n isDraftMode,\n isRevalidate: isSSG && !postponed && !isDynamicRSCRequest,\n botType,\n isOnDemandRevalidate,\n isPossibleServerAction,\n assetPrefix: nextConfig.assetPrefix,\n nextConfigOutput: nextConfig.output,\n crossOrigin: nextConfig.crossOrigin,\n trailingSlash: nextConfig.trailingSlash,\n previewProps: prerenderManifest.preview,\n deploymentId: nextConfig.deploymentId,\n enableTainting: nextConfig.experimental.taint,\n htmlLimitedBots: nextConfig.htmlLimitedBots,\n devtoolSegmentExplorer: nextConfig.experimental.devtoolSegmentExplorer,\n reactMaxHeadersLength: nextConfig.reactMaxHeadersLength,\n multiZoneDraftMode,\n incrementalCache: (0,next_dist_server_request_meta__WEBPACK_IMPORTED_MODULE_4__.getRequestMeta)(req, 'incrementalCache'),\n cacheLifeProfiles: nextConfig.experimental.cacheLife,\n basePath: nextConfig.basePath,\n serverActions: nextConfig.experimental.serverActions,\n ...isDebugStaticShell || isDebugDynamicAccesses ? {\n nextExport: true,\n supportsDynamicResponse: false,\n isStaticGeneration: true,\n isRevalidate: true,\n isDebugDynamicAccesses: isDebugDynamicAccesses\n } : {},\n experimental: {\n isRoutePPREnabled,\n expireTime: nextConfig.expireTime,\n staleTimes: nextConfig.experimental.staleTimes,\n cacheComponents: Boolean(nextConfig.experimental.cacheComponents),\n clientSegmentCache: Boolean(nextConfig.experimental.clientSegmentCache),\n clientParamParsing: Boolean(nextConfig.experimental.clientParamParsing),\n dynamicOnHover: Boolean(nextConfig.experimental.dynamicOnHover),\n inlineCss: Boolean(nextConfig.experimental.inlineCss),\n authInterrupts: Boolean(nextConfig.experimental.authInterrupts),\n clientTraceMetadata: nextConfig.experimental.clientTraceMetadata || []\n },\n waitUntil: ctx.waitUntil,\n onClose: (cb)=>{\n res.on('close', cb);\n },\n onAfterTaskError: ()=>{},\n onInstrumentationRequestError: (error, _request, errorContext)=>routeModule.onRequestError(req, error, errorContext, routerServerContext),\n err: (0,next_dist_server_request_meta__WEBPACK_IMPORTED_MODULE_4__.getRequestMeta)(req, 'invokeError'),\n dev: routeModule.isDev\n }\n };\n const result = await invokeRouteModule(span, context);\n const { metadata } = result;\n const { cacheControl, headers = {}, // Add any fetch tags that were on the page to the response headers.\n fetchTags: cacheTags } = metadata;\n if (cacheTags) {\n headers[next_dist_lib_constants__WEBPACK_IMPORTED_MODULE_21__.NEXT_CACHE_TAGS_HEADER] = cacheTags;\n }\n // Pull any fetch metrics from the render onto the request.\n ;\n req.fetchMetrics = metadata.fetchMetrics;\n // we don't throw static to dynamic errors in dev as isSSG\n // is a best guess in dev since we don't have the prerender pass\n // to know whether the path is actually static or not\n if (isSSG && (cacheControl == null ? void 0 : cacheControl.revalidate) === 0 && !routeModule.isDev && !isRoutePPREnabled) {\n const staticBailoutInfo = metadata.staticBailoutInfo;\n const err = Object.defineProperty(new Error(`Page changed from static to dynamic at runtime ${resolvedPathname}${(staticBailoutInfo == null ? void 0 : staticBailoutInfo.description) ? `, reason: ${staticBailoutInfo.description}` : ``}` + `\\nsee more here https://nextjs.org/docs/messages/app-static-to-dynamic-error`), \"__NEXT_ERROR_CODE\", {\n value: \"E132\",\n enumerable: false,\n configurable: true\n });\n if (staticBailoutInfo == null ? void 0 : staticBailoutInfo.stack) {\n const stack = staticBailoutInfo.stack;\n err.stack = err.message + stack.substring(stack.indexOf('\\n'));\n }\n throw err;\n }\n return {\n value: {\n kind: next_dist_server_response_cache__WEBPACK_IMPORTED_MODULE_18__.CachedRouteKind.APP_PAGE,\n html: result,\n headers,\n rscData: metadata.flightData,\n postponed: metadata.postponed,\n status: metadata.statusCode,\n segmentData: metadata.segmentData\n },\n cacheControl\n };\n };\n const responseGenerator = async ({ hasResolved, previousCacheEntry, isRevalidating, span })=>{\n const isProduction = routeModule.isDev === false;\n const didRespond = hasResolved || res.writableEnded;\n // skip on-demand revalidate if cache is not present and\n // revalidate-if-generated is set\n if (isOnDemandRevalidate && revalidateOnlyGenerated && !previousCacheEntry && !minimalMode) {\n if (routerServerContext == null ? void 0 : routerServerContext.render404) {\n await routerServerContext.render404(req, res);\n } else {\n res.statusCode = 404;\n res.end('This page could not be found');\n }\n return null;\n }\n let fallbackMode;\n if (prerenderInfo) {\n fallbackMode = (0,next_dist_lib_fallback__WEBPACK_IMPORTED_MODULE_19__.parseFallbackField)(prerenderInfo.fallback);\n }\n // When serving a HTML bot request, we want to serve a blocking render and\n // not the prerendered page. This ensures that the correct content is served\n // to the bot in the head.\n if (fallbackMode === next_dist_lib_fallback__WEBPACK_IMPORTED_MODULE_19__.FallbackMode.PRERENDER && (0,next_dist_shared_lib_router_utils_is_bot__WEBPACK_IMPORTED_MODULE_17__.isBot)(userAgent)) {\n if (!isRoutePPREnabled || isHtmlBot) {\n fallbackMode = next_dist_lib_fallback__WEBPACK_IMPORTED_MODULE_19__.FallbackMode.BLOCKING_STATIC_RENDER;\n }\n }\n if ((previousCacheEntry == null ? void 0 : previousCacheEntry.isStale) === -1) {\n isOnDemandRevalidate = true;\n }\n // TODO: adapt for PPR\n // only allow on-demand revalidate for fallback: true/blocking\n // or for prerendered fallback: false paths\n if (isOnDemandRevalidate && (fallbackMode !== next_dist_lib_fallback__WEBPACK_IMPORTED_MODULE_19__.FallbackMode.NOT_FOUND || previousCacheEntry)) {\n fallbackMode = next_dist_lib_fallback__WEBPACK_IMPORTED_MODULE_19__.FallbackMode.BLOCKING_STATIC_RENDER;\n }\n if (!minimalMode && fallbackMode !== next_dist_lib_fallback__WEBPACK_IMPORTED_MODULE_19__.FallbackMode.BLOCKING_STATIC_RENDER && staticPathKey && !didRespond && !isDraftMode && pageIsDynamic && (isProduction || !isPrerendered)) {\n // if the page has dynamicParams: false and this pathname wasn't\n // prerendered trigger the no fallback handling\n if (// In development, fall through to render to handle missing\n // getStaticPaths.\n (isProduction || prerenderInfo) && // When fallback isn't present, abort this render so we 404\n fallbackMode === next_dist_lib_fallback__WEBPACK_IMPORTED_MODULE_19__.FallbackMode.NOT_FOUND) {\n throw new next_dist_shared_lib_no_fallback_error_external__WEBPACK_IMPORTED_MODULE_24__.NoFallbackError();\n }\n let fallbackResponse;\n if (isRoutePPREnabled && !isRSCRequest) {\n const cacheKey = typeof (prerenderInfo == null ? void 0 : prerenderInfo.fallback) === 'string' ? prerenderInfo.fallback : isProduction ? normalizedSrcPage : null;\n // We use the response cache here to handle the revalidation and\n // management of the fallback shell.\n fallbackResponse = await routeModule.handleResponse({\n cacheKey,\n req,\n nextConfig,\n routeKind: next_dist_server_route_kind__WEBPACK_IMPORTED_MODULE_1__.RouteKind.APP_PAGE,\n isFallback: true,\n prerenderManifest,\n isRoutePPREnabled,\n responseGenerator: async ()=>doRender({\n span,\n // We pass `undefined` as rendering a fallback isn't resumed\n // here.\n postponed: undefined,\n fallbackRouteParams: // If we're in production or we're debugging the fallback\n // shell then we should postpone when dynamic params are\n // accessed.\n isProduction || isDebugFallbackShell ? (0,next_dist_server_request_fallback_params__WEBPACK_IMPORTED_MODULE_10__.getFallbackRouteParams)(normalizedSrcPage) : null\n }),\n waitUntil: ctx.waitUntil\n });\n // If the fallback response was set to null, then we should return null.\n if (fallbackResponse === null) return null;\n // Otherwise, if we did get a fallback response, we should return it.\n if (fallbackResponse) {\n // Remove the cache control from the response to prevent it from being\n // used in the surrounding cache.\n delete fallbackResponse.cacheControl;\n return fallbackResponse;\n }\n }\n }\n // Only requests that aren't revalidating can be resumed. If we have the\n // minimal postponed data, then we should resume the render with it.\n const postponed = !isOnDemandRevalidate && !isRevalidating && minimalPostponed ? minimalPostponed : undefined;\n // When we're in minimal mode, if we're trying to debug the static shell,\n // we should just return nothing instead of resuming the dynamic render.\n if ((isDebugStaticShell || isDebugDynamicAccesses) && typeof postponed !== 'undefined') {\n return {\n cacheControl: {\n revalidate: 1,\n expire: undefined\n },\n value: {\n kind: next_dist_server_response_cache__WEBPACK_IMPORTED_MODULE_18__.CachedRouteKind.PAGES,\n html: next_dist_server_render_result__WEBPACK_IMPORTED_MODULE_20__[\"default\"].EMPTY,\n pageData: {},\n headers: undefined,\n status: undefined\n }\n };\n }\n // If this is a dynamic route with PPR enabled and the default route\n // matches were set, then we should pass the fallback route params to\n // the renderer as this is a fallback revalidation request.\n const fallbackRouteParams = pageIsDynamic && isRoutePPREnabled && ((0,next_dist_server_request_meta__WEBPACK_IMPORTED_MODULE_4__.getRequestMeta)(req, 'renderFallbackShell') || isDebugFallbackShell) ? (0,next_dist_server_request_fallback_params__WEBPACK_IMPORTED_MODULE_10__.getFallbackRouteParams)(pathname) : null;\n // Perform the render.\n return doRender({\n span,\n postponed,\n fallbackRouteParams\n });\n };\n const handleResponse = async (span)=>{\n var _cacheEntry_value, _cachedData_headers;\n const cacheEntry = await routeModule.handleResponse({\n cacheKey: ssgCacheKey,\n responseGenerator: (c)=>responseGenerator({\n span,\n ...c\n }),\n routeKind: next_dist_server_route_kind__WEBPACK_IMPORTED_MODULE_1__.RouteKind.APP_PAGE,\n isOnDemandRevalidate,\n isRoutePPREnabled,\n req,\n nextConfig,\n prerenderManifest,\n waitUntil: ctx.waitUntil\n });\n if (isDraftMode) {\n res.setHeader('Cache-Control', 'private, no-cache, no-store, max-age=0, must-revalidate');\n }\n // In dev, we should not cache pages for any reason.\n if (routeModule.isDev) {\n res.setHeader('Cache-Control', 'no-store, must-revalidate');\n }\n if (!cacheEntry) {\n if (ssgCacheKey) {\n // A cache entry might not be generated if a response is written\n // in `getInitialProps` or `getServerSideProps`, but those shouldn't\n // have a cache key. If we do have a cache key but we don't end up\n // with a cache entry, then either Next.js or the application has a\n // bug that needs fixing.\n throw Object.defineProperty(new Error('invariant: cache entry required but not generated'), \"__NEXT_ERROR_CODE\", {\n value: \"E62\",\n enumerable: false,\n configurable: true\n });\n }\n return null;\n }\n if (((_cacheEntry_value = cacheEntry.value) == null ? void 0 : _cacheEntry_value.kind) !== next_dist_server_response_cache__WEBPACK_IMPORTED_MODULE_18__.CachedRouteKind.APP_PAGE) {\n var _cacheEntry_value1;\n throw Object.defineProperty(new Error(`Invariant app-page handler received invalid cache entry ${(_cacheEntry_value1 = cacheEntry.value) == null ? void 0 : _cacheEntry_value1.kind}`), \"__NEXT_ERROR_CODE\", {\n value: \"E707\",\n enumerable: false,\n configurable: true\n });\n }\n const didPostpone = typeof cacheEntry.value.postponed === 'string';\n if (isSSG && // We don't want to send a cache header for requests that contain dynamic\n // data. If this is a Dynamic RSC request or wasn't a Prefetch RSC\n // request, then we should set the cache header.\n !isDynamicRSCRequest && (!didPostpone || isPrefetchRSCRequest)) {\n if (!minimalMode) {\n // set x-nextjs-cache header to match the header\n // we set for the image-optimizer\n res.setHeader('x-nextjs-cache', isOnDemandRevalidate ? 'REVALIDATED' : cacheEntry.isMiss ? 'MISS' : cacheEntry.isStale ? 'STALE' : 'HIT');\n }\n // Set a header used by the client router to signal the response is static\n // and should respect the `static` cache staleTime value.\n res.setHeader(next_dist_client_components_app_router_headers__WEBPACK_IMPORTED_MODULE_16__.NEXT_IS_PRERENDER_HEADER, '1');\n }\n const { value: cachedData } = cacheEntry;\n // Coerce the cache control parameter from the render.\n let cacheControl;\n // If this is a resume request in minimal mode it is streamed with dynamic\n // content and should not be cached.\n if (minimalPostponed) {\n cacheControl = {\n revalidate: 0,\n expire: undefined\n };\n } else if (minimalMode && isRSCRequest && !isPrefetchRSCRequest && isRoutePPREnabled) {\n cacheControl = {\n revalidate: 0,\n expire: undefined\n };\n } else if (!routeModule.isDev) {\n // If this is a preview mode request, we shouldn't cache it\n if (isDraftMode) {\n cacheControl = {\n revalidate: 0,\n expire: undefined\n };\n } else if (!isSSG) {\n if (!res.getHeader('Cache-Control')) {\n cacheControl = {\n revalidate: 0,\n expire: undefined\n };\n }\n } else if (cacheEntry.cacheControl) {\n // If the cache entry has a cache control with a revalidate value that's\n // a number, use it.\n if (typeof cacheEntry.cacheControl.revalidate === 'number') {\n var _cacheEntry_cacheControl;\n if (cacheEntry.cacheControl.revalidate < 1) {\n throw Object.defineProperty(new Error(`Invalid revalidate configuration provided: ${cacheEntry.cacheControl.revalidate} < 1`), \"__NEXT_ERROR_CODE\", {\n value: \"E22\",\n enumerable: false,\n configurable: true\n });\n }\n cacheControl = {\n revalidate: cacheEntry.cacheControl.revalidate,\n expire: ((_cacheEntry_cacheControl = cacheEntry.cacheControl) == null ? void 0 : _cacheEntry_cacheControl.expire) ?? nextConfig.expireTime\n };\n } else {\n cacheControl = {\n revalidate: next_dist_lib_constants__WEBPACK_IMPORTED_MODULE_21__.CACHE_ONE_YEAR,\n expire: undefined\n };\n }\n }\n }\n cacheEntry.cacheControl = cacheControl;\n if (typeof segmentPrefetchHeader === 'string' && (cachedData == null ? void 0 : cachedData.kind) === next_dist_server_response_cache__WEBPACK_IMPORTED_MODULE_18__.CachedRouteKind.APP_PAGE && cachedData.segmentData) {\n var _cachedData_headers1;\n // This is a prefetch request issued by the client Segment Cache. These\n // should never reach the application layer (lambda). We should either\n // respond from the cache (HIT) or respond with 204 No Content (MISS).\n // Set a header to indicate that PPR is enabled for this route. This\n // lets the client distinguish between a regular cache miss and a cache\n // miss due to PPR being disabled. In other contexts this header is used\n // to indicate that the response contains dynamic data, but here we're\n // only using it to indicate that the feature is enabled — the segment\n // response itself contains whether the data is dynamic.\n res.setHeader(next_dist_client_components_app_router_headers__WEBPACK_IMPORTED_MODULE_16__.NEXT_DID_POSTPONE_HEADER, '2');\n // Add the cache tags header to the response if it exists and we're in\n // minimal mode while rendering a static page.\n const tags = (_cachedData_headers1 = cachedData.headers) == null ? void 0 : _cachedData_headers1[next_dist_lib_constants__WEBPACK_IMPORTED_MODULE_21__.NEXT_CACHE_TAGS_HEADER];\n if (minimalMode && isSSG && tags && typeof tags === 'string') {\n res.setHeader(next_dist_lib_constants__WEBPACK_IMPORTED_MODULE_21__.NEXT_CACHE_TAGS_HEADER, tags);\n }\n const matchedSegment = cachedData.segmentData.get(segmentPrefetchHeader);\n if (matchedSegment !== undefined) {\n // Cache hit\n return (0,next_dist_server_send_payload__WEBPACK_IMPORTED_MODULE_23__.sendRenderResult)({\n req,\n res,\n generateEtags: nextConfig.generateEtags,\n poweredByHeader: nextConfig.poweredByHeader,\n result: next_dist_server_render_result__WEBPACK_IMPORTED_MODULE_20__[\"default\"].fromStatic(matchedSegment, next_dist_client_components_app_router_headers__WEBPACK_IMPORTED_MODULE_16__.RSC_CONTENT_TYPE_HEADER),\n cacheControl: cacheEntry.cacheControl\n });\n }\n // Cache miss. Either a cache entry for this route has not been generated\n // (which technically should not be possible when PPR is enabled, because\n // at a minimum there should always be a fallback entry) or there's no\n // match for the requested segment. Respond with a 204 No Content. We\n // don't bother to respond with 404, because these requests are only\n // issued as part of a prefetch.\n res.statusCode = 204;\n return (0,next_dist_server_send_payload__WEBPACK_IMPORTED_MODULE_23__.sendRenderResult)({\n req,\n res,\n generateEtags: nextConfig.generateEtags,\n poweredByHeader: nextConfig.poweredByHeader,\n result: next_dist_server_render_result__WEBPACK_IMPORTED_MODULE_20__[\"default\"].EMPTY,\n cacheControl: cacheEntry.cacheControl\n });\n }\n // If there's a callback for `onCacheEntry`, call it with the cache entry\n // and the revalidate options.\n const onCacheEntry = (0,next_dist_server_request_meta__WEBPACK_IMPORTED_MODULE_4__.getRequestMeta)(req, 'onCacheEntry');\n if (onCacheEntry) {\n const finished = await onCacheEntry({\n ...cacheEntry,\n // TODO: remove this when upstream doesn't\n // always expect this value to be \"PAGE\"\n value: {\n ...cacheEntry.value,\n kind: 'PAGE'\n }\n }, {\n url: (0,next_dist_server_request_meta__WEBPACK_IMPORTED_MODULE_4__.getRequestMeta)(req, 'initURL')\n });\n if (finished) {\n // TODO: maybe we have to end the request?\n return null;\n }\n }\n // If the request has a postponed state and it's a resume request we\n // should error.\n if (didPostpone && minimalPostponed) {\n throw Object.defineProperty(new Error('Invariant: postponed state should not be present on a resume request'), \"__NEXT_ERROR_CODE\", {\n value: \"E396\",\n enumerable: false,\n configurable: true\n });\n }\n if (cachedData.headers) {\n const headers = {\n ...cachedData.headers\n };\n if (!minimalMode || !isSSG) {\n delete headers[next_dist_lib_constants__WEBPACK_IMPORTED_MODULE_21__.NEXT_CACHE_TAGS_HEADER];\n }\n for (let [key, value] of Object.entries(headers)){\n if (typeof value === 'undefined') continue;\n if (Array.isArray(value)) {\n for (const v of value){\n res.appendHeader(key, v);\n }\n } else if (typeof value === 'number') {\n value = value.toString();\n res.appendHeader(key, value);\n } else {\n res.appendHeader(key, value);\n }\n }\n }\n // Add the cache tags header to the response if it exists and we're in\n // minimal mode while rendering a static page.\n const tags = (_cachedData_headers = cachedData.headers) == null ? void 0 : _cachedData_headers[next_dist_lib_constants__WEBPACK_IMPORTED_MODULE_21__.NEXT_CACHE_TAGS_HEADER];\n if (minimalMode && isSSG && tags && typeof tags === 'string') {\n res.setHeader(next_dist_lib_constants__WEBPACK_IMPORTED_MODULE_21__.NEXT_CACHE_TAGS_HEADER, tags);\n }\n // If the request is a data request, then we shouldn't set the status code\n // from the response because it should always be 200. This should be gated\n // behind the experimental PPR flag.\n if (cachedData.status && (!isRSCRequest || !isRoutePPREnabled)) {\n res.statusCode = cachedData.status;\n }\n // Redirect information is encoded in RSC payload, so we don't need to use redirect status codes\n if (!minimalMode && cachedData.status && next_dist_client_components_redirect_status_code__WEBPACK_IMPORTED_MODULE_27__.RedirectStatusCode[cachedData.status] && isRSCRequest) {\n res.statusCode = 200;\n }\n // Mark that the request did postpone.\n if (didPostpone) {\n res.setHeader(next_dist_client_components_app_router_headers__WEBPACK_IMPORTED_MODULE_16__.NEXT_DID_POSTPONE_HEADER, '1');\n }\n // we don't go through this block when preview mode is true\n // as preview mode is a dynamic request (bypasses cache) and doesn't\n // generate both HTML and payloads in the same request so continue to just\n // return the generated payload\n if (isRSCRequest && !isDraftMode) {\n // If this is a dynamic RSC request, then stream the response.\n if (typeof cachedData.rscData === 'undefined') {\n if (cachedData.postponed) {\n throw Object.defineProperty(new Error('Invariant: Expected postponed to be undefined'), \"__NEXT_ERROR_CODE\", {\n value: \"E372\",\n enumerable: false,\n configurable: true\n });\n }\n return (0,next_dist_server_send_payload__WEBPACK_IMPORTED_MODULE_23__.sendRenderResult)({\n req,\n res,\n generateEtags: nextConfig.generateEtags,\n poweredByHeader: nextConfig.poweredByHeader,\n result: cachedData.html,\n // Dynamic RSC responses cannot be cached, even if they're\n // configured with `force-static` because we have no way of\n // distinguishing between `force-static` and pages that have no\n // postponed state.\n // TODO: distinguish `force-static` from pages with no postponed state (static)\n cacheControl: isDynamicRSCRequest ? {\n revalidate: 0,\n expire: undefined\n } : cacheEntry.cacheControl\n });\n }\n // As this isn't a prefetch request, we should serve the static flight\n // data.\n return (0,next_dist_server_send_payload__WEBPACK_IMPORTED_MODULE_23__.sendRenderResult)({\n req,\n res,\n generateEtags: nextConfig.generateEtags,\n poweredByHeader: nextConfig.poweredByHeader,\n result: next_dist_server_render_result__WEBPACK_IMPORTED_MODULE_20__[\"default\"].fromStatic(cachedData.rscData, next_dist_client_components_app_router_headers__WEBPACK_IMPORTED_MODULE_16__.RSC_CONTENT_TYPE_HEADER),\n cacheControl: cacheEntry.cacheControl\n });\n }\n // This is a request for HTML data.\n let body = cachedData.html;\n // If there's no postponed state, we should just serve the HTML. This\n // should also be the case for a resume request because it's completed\n // as a server render (rather than a static render).\n if (!didPostpone || minimalMode || isRSCRequest) {\n // If we're in test mode, we should add a sentinel chunk to the response\n // that's between the static and dynamic parts so we can compare the\n // chunks and add assertions.\n if (false) {}\n return (0,next_dist_server_send_payload__WEBPACK_IMPORTED_MODULE_23__.sendRenderResult)({\n req,\n res,\n generateEtags: nextConfig.generateEtags,\n poweredByHeader: nextConfig.poweredByHeader,\n result: body,\n cacheControl: cacheEntry.cacheControl\n });\n }\n // If we're debugging the static shell or the dynamic API accesses, we\n // should just serve the HTML without resuming the render. The returned\n // HTML will be the static shell so all the Dynamic API's will be used\n // during static generation.\n if (isDebugStaticShell || isDebugDynamicAccesses) {\n // Since we're not resuming the render, we need to at least add the\n // closing body and html tags to create valid HTML.\n body.push(new ReadableStream({\n start (controller) {\n controller.enqueue(next_dist_server_stream_utils_encoded_tags__WEBPACK_IMPORTED_MODULE_22__.ENCODED_TAGS.CLOSED.BODY_AND_HTML);\n controller.close();\n }\n }));\n return (0,next_dist_server_send_payload__WEBPACK_IMPORTED_MODULE_23__.sendRenderResult)({\n req,\n res,\n generateEtags: nextConfig.generateEtags,\n poweredByHeader: nextConfig.poweredByHeader,\n result: body,\n cacheControl: {\n revalidate: 0,\n expire: undefined\n }\n });\n }\n // If we're in test mode, we should add a sentinel chunk to the response\n // that's between the static and dynamic parts so we can compare the\n // chunks and add assertions.\n if (false) {}\n // This request has postponed, so let's create a new transformer that the\n // dynamic data can pipe to that will attach the dynamic data to the end\n // of the response.\n const transformer = new TransformStream();\n body.push(transformer.readable);\n // Perform the render again, but this time, provide the postponed state.\n // We don't await because we want the result to start streaming now, and\n // we've already chained the transformer's readable to the render result.\n doRender({\n span,\n postponed: cachedData.postponed,\n // This is a resume render, not a fallback render, so we don't need to\n // set this.\n fallbackRouteParams: null\n }).then(async (result)=>{\n var _result_value;\n if (!result) {\n throw Object.defineProperty(new Error('Invariant: expected a result to be returned'), \"__NEXT_ERROR_CODE\", {\n value: \"E463\",\n enumerable: false,\n configurable: true\n });\n }\n if (((_result_value = result.value) == null ? void 0 : _result_value.kind) !== next_dist_server_response_cache__WEBPACK_IMPORTED_MODULE_18__.CachedRouteKind.APP_PAGE) {\n var _result_value1;\n throw Object.defineProperty(new Error(`Invariant: expected a page response, got ${(_result_value1 = result.value) == null ? void 0 : _result_value1.kind}`), \"__NEXT_ERROR_CODE\", {\n value: \"E305\",\n enumerable: false,\n configurable: true\n });\n }\n // Pipe the resume result to the transformer.\n await result.value.html.pipeTo(transformer.writable);\n }).catch((err)=>{\n // An error occurred during piping or preparing the render, abort\n // the transformers writer so we can terminate the stream.\n transformer.writable.abort(err).catch((e)=>{\n console.error(\"couldn't abort transformer\", e);\n });\n });\n return (0,next_dist_server_send_payload__WEBPACK_IMPORTED_MODULE_23__.sendRenderResult)({\n req,\n res,\n generateEtags: nextConfig.generateEtags,\n poweredByHeader: nextConfig.poweredByHeader,\n result: body,\n // We don't want to cache the response if it has postponed data because\n // the response being sent to the client it's dynamic parts are streamed\n // to the client on the same request.\n cacheControl: {\n revalidate: 0,\n expire: undefined\n }\n });\n };\n // TODO: activeSpan code path is for when wrapped by\n // next-server can be removed when this is no longer used\n if (activeSpan) {\n await handleResponse(activeSpan);\n } else {\n return await tracer.withPropagatedContext(req.headers, ()=>tracer.trace(next_dist_server_lib_trace_constants__WEBPACK_IMPORTED_MODULE_5__.BaseServerSpan.handleRequest, {\n spanName: `${method} ${req.url}`,\n kind: next_dist_server_lib_trace_tracer__WEBPACK_IMPORTED_MODULE_3__.SpanKind.SERVER,\n attributes: {\n 'http.method': method,\n 'http.target': req.url\n }\n }, handleResponse));\n }\n } catch (err) {\n // if we aren't wrapped by base-server handle here\n if (!activeSpan && !(err instanceof next_dist_shared_lib_no_fallback_error_external__WEBPACK_IMPORTED_MODULE_24__.NoFallbackError)) {\n await routeModule.onRequestError(req, err, {\n routerKind: 'App Router',\n routePath: srcPage,\n routeType: 'render',\n revalidateReason: (0,next_dist_server_instrumentation_utils__WEBPACK_IMPORTED_MODULE_2__.getRevalidateReason)({\n isRevalidate: isSSG,\n isOnDemandRevalidate\n })\n }, routerServerContext);\n }\n // rethrow so that we can handle serving error page\n throw err;\n }\n}\n// TODO: omit this from production builds, only test builds should include it\n/**\n * Creates a readable stream that emits a PPR boundary sentinel.\n *\n * @returns A readable stream that emits a PPR boundary sentinel.\n */ function createPPRBoundarySentinel() {\n return new ReadableStream({\n start (controller) {\n controller.enqueue(new TextEncoder().encode(''));\n controller.close();\n }\n });\n}\n\n//# sourceMappingURL=app-page.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2J1aWxkL3dlYnBhY2svbG9hZGVycy9uZXh0LWFwcC1sb2FkZXIvaW5kZXguanM/bmFtZT1hcHAlMkZnZW5lcmF0ZSUyRnBhZ2UmcGFnZT0lMkZnZW5lcmF0ZSUyRnBhZ2UmYXBwUGF0aHM9JTJGZ2VuZXJhdGUlMkZwYWdlJnBhZ2VQYXRoPXByaXZhdGUtbmV4dC1hcHAtZGlyJTJGZ2VuZXJhdGUlMkZwYWdlLnRzeCZhcHBEaXI9JTJGVXNlcnMlMkZqZXR0Y2hlbmcxMDE4JTJGY29kZSUyRmRyYW1hbGluZy12b2NhYi1sZWFybmluZyUyRmZyb250ZW5kJTJGYXBwJnBhZ2VFeHRlbnNpb25zPXRzeCZwYWdlRXh0ZW5zaW9ucz10cyZwYWdlRXh0ZW5zaW9ucz1qc3gmcGFnZUV4dGVuc2lvbnM9anMmcm9vdERpcj0lMkZVc2VycyUyRmpldHRjaGVuZzEwMTglMkZjb2RlJTJGZHJhbWFsaW5nLXZvY2FiLWxlYXJuaW5nJTJGZnJvbnRlbmQmaXNEZXY9dHJ1ZSZ0c2NvbmZpZ1BhdGg9dHNjb25maWcuanNvbiZiYXNlUGF0aD0mYXNzZXRQcmVmaXg9Jm5leHRDb25maWdPdXRwdXQ9JnByZWZlcnJlZFJlZ2lvbj0mbWlkZGxld2FyZUNvbmZpZz1lMzAlM0QmaXNHbG9iYWxOb3RGb3VuZEVuYWJsZWQ9ISIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsc0JBQXNCLDRJQUErRztBQUNySSxzQkFBc0IsdU9BQXdGO0FBQzlHLHNCQUFzQixpT0FBcUY7QUFDM0csc0JBQXNCLGlPQUFxRjtBQUMzRyxzQkFBc0IsdU9BQXdGO0FBQzlHLG9CQUFvQiwwSkFBc0g7QUFHeEk7QUFHQTtBQUMyRTtBQUNMO0FBQ1Q7QUFDTztBQUNPO0FBQ1M7QUFDRjtBQUNQO0FBQ0s7QUFDWTtBQUNXO0FBQ3hCO0FBQ0Y7QUFDYTtBQUMwRjtBQUN6RztBQUNYO0FBQ1E7QUFDaEI7QUFDaUQ7QUFDakM7QUFDVDtBQUNpQjtBQUNsRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQ0FBaUM7QUFDakM7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDdUI7QUFHckI7QUFDcUI7QUFDdkIsNkJBQTZCLG1CQUFtQjtBQUNoRDtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBR0U7QUFDb0Y7QUFHcEY7QUFDRjtBQUNPLHdCQUF3Qix1R0FBa0I7QUFDakQ7QUFDQSxjQUFjLGtFQUFTO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMLGFBQWEsT0FBb0MsSUFBSSxDQUFFO0FBQ3ZELHdCQUF3QixNQUF1QztBQUMvRCxDQUFDO0FBQ007QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSxLQUFxQixFQUFFLEVBRTFCLENBQUM7QUFDTjtBQUNBO0FBQ0E7QUFDQSwrQkFBK0IsS0FBd0M7QUFDdkUsNkJBQTZCLDZFQUFjO0FBQzNDO0FBQ0Esd0JBQXdCLDZFQUFjO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLGdVQUFnVTtBQUM1VTtBQUNBLDhCQUE4Qiw4RkFBZ0I7QUFDOUMsVUFBVSx1QkFBdUI7QUFDakM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IscUZBQVU7QUFDOUIsc0JBQXNCLDBGQUFnQjtBQUN0QztBQUNBO0FBQ0E7QUFDQSxtQ0FBbUMsNkVBQWMsNkNBQTZDLHdHQUEyQjtBQUN6SDtBQUNBO0FBQ0EseUJBQXlCLDZFQUFjLDZDQUE2Qyx1RkFBVTtBQUM5RixtQ0FBbUMsMkdBQXlCO0FBQzVEO0FBQ0E7QUFDQTtBQUNBLDhCQUE4QiwyRkFBb0I7QUFDbEQ7QUFDQTtBQUNBLHFDQUFxQyxNQUE0RyxJQUFJLENBQWU7QUFDcEs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2QkFBNkI7QUFDN0I7QUFDQSxrQ0FBa0MsNkVBQWM7QUFDaEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxREFBcUQsc0dBQTRCO0FBQ2pGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLG9HQUFrQjtBQUMxQjtBQUNBO0FBQ0EsV0FBVyxvRUFBUztBQUNwQjtBQUNBO0FBQ0EsbUJBQW1CO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLDZHQUE4QjtBQUN0QztBQUNBO0FBQ0E7QUFDQSw2QkFBNkIsZ0dBQXFCO0FBQ2xEO0FBQ0EsYUFBYTtBQUNiLFNBQVM7QUFDVDtBQUNBO0FBQ0EsbUJBQW1CLDRFQUFTO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQ0FBZ0MsNEVBQWU7QUFDL0MsZ0NBQWdDLDZFQUFnQjtBQUNoRDtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsSUFBc0M7QUFDdEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUVBQWlFLGdGQUFjO0FBQy9FLCtEQUErRCx5Q0FBeUM7QUFDeEc7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQ0FBb0MsUUFBUSxFQUFFLE1BQU07QUFDcEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQSxrQkFBa0I7QUFDbEIsdUNBQXVDLFFBQVEsRUFBRSxRQUFRO0FBQ3pEO0FBQ0EsYUFBYTtBQUNiO0FBQ0Esa0NBQWtDLHNDQUFzQztBQUN4RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakIsMENBQTBDLDZFQUFjO0FBQ3hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0NBQWtDO0FBQ2xDO0FBQ0EsK0JBQStCLDJGQUFjO0FBQzdDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUIsS0FBcUMsR0FBRyw4Q0FBb0IsOEVBQThFLENBQW9EO0FBQ3ZOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0NBQXNDLDZFQUFjO0FBQ3BEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQixJQUFJO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCLDRDQUE0QztBQUM1QztBQUNBLHlCQUF5Qiw2RUFBYztBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQixXQUFXO0FBQy9CLG9CQUFvQiwwQkFBMEI7QUFDOUMsbUNBQW1DO0FBQ25DO0FBQ0Esd0JBQXdCLDRFQUFzQjtBQUM5QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4R0FBOEcsaUJBQWlCLEVBQUUsb0ZBQW9GLDhCQUE4QixPQUFPO0FBQzFQO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCLDZFQUFlO0FBQ3pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQSwyQ0FBMkMsdURBQXVEO0FBQ2xHO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsK0JBQStCLDJFQUFrQjtBQUNqRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQyxpRUFBWSxjQUFjLGdGQUFLO0FBQ2hFO0FBQ0EsbUNBQW1DLGlFQUFZO0FBQy9DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwREFBMEQsaUVBQVk7QUFDdEUsK0JBQStCLGlFQUFZO0FBQzNDO0FBQ0EsaURBQWlELGlFQUFZO0FBQzdEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQ0FBaUMsaUVBQVk7QUFDN0MsOEJBQThCLDZGQUFlO0FBQzdDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUNBQW1DLGtFQUFTO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1RUFBdUUsaUdBQXNCO0FBQzdGLDZCQUE2QjtBQUM3QjtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQSw4QkFBOEIsNkVBQWU7QUFDN0MsOEJBQThCLHVFQUFZO0FBQzFDLG9DQUFvQztBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsK0VBQStFLDZFQUFjLHdEQUF3RCxpR0FBc0I7QUFDM0s7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCLDJCQUEyQixrRUFBUztBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBLHVHQUF1Ryw2RUFBZTtBQUN0SDtBQUNBLGlIQUFpSCxtRkFBbUY7QUFDcE07QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOEJBQThCLHFHQUF3QjtBQUN0RDtBQUNBLG9CQUFvQixvQkFBb0I7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQjtBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0I7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdIQUFnSCxvQ0FBb0M7QUFDcEo7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCO0FBQzdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0I7QUFDdEI7QUFDQSx3Q0FBd0Msb0VBQWM7QUFDdEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUhBQWlILDZFQUFlO0FBQ2hJO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOEJBQThCLHFHQUF3QjtBQUN0RDtBQUNBO0FBQ0EsaUhBQWlILDRFQUFzQjtBQUN2STtBQUNBLGtDQUFrQyw0RUFBc0I7QUFDeEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQkFBMkIsZ0ZBQWdCO0FBQzNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0NBQWdDLHVFQUFZLDRCQUE0QixvR0FBdUI7QUFDL0Y7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QixnRkFBZ0I7QUFDdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0QkFBNEIsdUVBQVk7QUFDeEM7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0EsaUNBQWlDLDZFQUFjO0FBQy9DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQix5QkFBeUIsNkVBQWM7QUFDdkMsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQ0FBbUMsNEVBQXNCO0FBQ3pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0JBQXNCO0FBQ3RCO0FBQ0E7QUFDQSxzQkFBc0I7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkdBQTJHLDRFQUFzQjtBQUNqSTtBQUNBLDhCQUE4Qiw0RUFBc0I7QUFDcEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFEQUFxRCxpR0FBa0I7QUFDdkU7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4QkFBOEIscUdBQXdCO0FBQ3REO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUJBQXlCO0FBQ3pCO0FBQ0EsMkJBQTJCLGdGQUFnQjtBQUMzQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQjtBQUMxQixxQkFBcUI7QUFDckI7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLGdGQUFnQjtBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBLDRCQUE0Qix1RUFBWSxnQ0FBZ0Msb0dBQXVCO0FBQy9GO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLEtBQWlILEVBQUUsRUFLdEg7QUFDakIsdUJBQXVCLGdGQUFnQjtBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQ0FBMkMscUZBQVk7QUFDdkQ7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQix1QkFBdUIsZ0ZBQWdCO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQixLQUE0QixFQUFFLEVBRWpDO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQSwrRkFBK0YsNkVBQWU7QUFDOUc7QUFDQSxzR0FBc0csdUVBQXVFO0FBQzdLO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakIsYUFBYTtBQUNiLG1CQUFtQixnRkFBZ0I7QUFDbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Ysb0ZBQW9GLGdGQUFjO0FBQ2xHLGlDQUFpQyxRQUFRLEVBQUUsUUFBUTtBQUNuRCwwQkFBMEIsdUVBQVE7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQSxNQUFNO0FBQ047QUFDQSw0Q0FBNEMsNkZBQWU7QUFDM0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQ0FBa0MsMkZBQW1CO0FBQ3JEO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakIsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBIiwic291cmNlcyI6WyIiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgbW9kdWxlMCA9ICgpID0+IGltcG9ydCgvKiB3ZWJwYWNrTW9kZTogXCJlYWdlclwiICovIFwiL1VzZXJzL2pldHRjaGVuZzEwMTgvY29kZS9kcmFtYWxpbmctdm9jYWItbGVhcm5pbmcvZnJvbnRlbmQvYXBwL2xheW91dC50c3hcIik7XG5jb25zdCBtb2R1bGUxID0gKCkgPT4gaW1wb3J0KC8qIHdlYnBhY2tNb2RlOiBcImVhZ2VyXCIgKi8gXCJuZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvYnVpbHRpbi9nbG9iYWwtZXJyb3IuanNcIik7XG5jb25zdCBtb2R1bGUyID0gKCkgPT4gaW1wb3J0KC8qIHdlYnBhY2tNb2RlOiBcImVhZ2VyXCIgKi8gXCJuZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvYnVpbHRpbi9ub3QtZm91bmQuanNcIik7XG5jb25zdCBtb2R1bGUzID0gKCkgPT4gaW1wb3J0KC8qIHdlYnBhY2tNb2RlOiBcImVhZ2VyXCIgKi8gXCJuZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvYnVpbHRpbi9mb3JiaWRkZW4uanNcIik7XG5jb25zdCBtb2R1bGU0ID0gKCkgPT4gaW1wb3J0KC8qIHdlYnBhY2tNb2RlOiBcImVhZ2VyXCIgKi8gXCJuZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvYnVpbHRpbi91bmF1dGhvcml6ZWQuanNcIik7XG5jb25zdCBwYWdlNSA9ICgpID0+IGltcG9ydCgvKiB3ZWJwYWNrTW9kZTogXCJlYWdlclwiICovIFwiL1VzZXJzL2pldHRjaGVuZzEwMTgvY29kZS9kcmFtYWxpbmctdm9jYWItbGVhcm5pbmcvZnJvbnRlbmQvYXBwL2dlbmVyYXRlL3BhZ2UudHN4XCIpO1xuaW1wb3J0IHsgQXBwUGFnZVJvdXRlTW9kdWxlIH0gZnJvbSBcIm5leHQvZGlzdC9zZXJ2ZXIvcm91dGUtbW9kdWxlcy9hcHAtcGFnZS9tb2R1bGUuY29tcGlsZWRcIiB3aXRoIHtcbiAgICAndHVyYm9wYWNrLXRyYW5zaXRpb24nOiAnbmV4dC1zc3InXG59O1xuaW1wb3J0IHsgUm91dGVLaW5kIH0gZnJvbSBcIm5leHQvZGlzdC9zZXJ2ZXIvcm91dGUta2luZFwiIHdpdGgge1xuICAgICd0dXJib3BhY2stdHJhbnNpdGlvbic6ICduZXh0LXNlcnZlci11dGlsaXR5J1xufTtcbmltcG9ydCB7IGdldFJldmFsaWRhdGVSZWFzb24gfSBmcm9tIFwibmV4dC9kaXN0L3NlcnZlci9pbnN0cnVtZW50YXRpb24vdXRpbHNcIjtcbmltcG9ydCB7IGdldFRyYWNlciwgU3BhbktpbmQgfSBmcm9tIFwibmV4dC9kaXN0L3NlcnZlci9saWIvdHJhY2UvdHJhY2VyXCI7XG5pbXBvcnQgeyBnZXRSZXF1ZXN0TWV0YSB9IGZyb20gXCJuZXh0L2Rpc3Qvc2VydmVyL3JlcXVlc3QtbWV0YVwiO1xuaW1wb3J0IHsgQmFzZVNlcnZlclNwYW4gfSBmcm9tIFwibmV4dC9kaXN0L3NlcnZlci9saWIvdHJhY2UvY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBpbnRlcm9wRGVmYXVsdCB9IGZyb20gXCJuZXh0L2Rpc3Qvc2VydmVyL2FwcC1yZW5kZXIvaW50ZXJvcC1kZWZhdWx0XCI7XG5pbXBvcnQgeyBzdHJpcEZsaWdodEhlYWRlcnMgfSBmcm9tIFwibmV4dC9kaXN0L3NlcnZlci9hcHAtcmVuZGVyL3N0cmlwLWZsaWdodC1oZWFkZXJzXCI7XG5pbXBvcnQgeyBOb2RlTmV4dFJlcXVlc3QsIE5vZGVOZXh0UmVzcG9uc2UgfSBmcm9tIFwibmV4dC9kaXN0L3NlcnZlci9iYXNlLWh0dHAvbm9kZVwiO1xuaW1wb3J0IHsgY2hlY2tJc0FwcFBQUkVuYWJsZWQgfSBmcm9tIFwibmV4dC9kaXN0L3NlcnZlci9saWIvZXhwZXJpbWVudGFsL3BwclwiO1xuaW1wb3J0IHsgZ2V0RmFsbGJhY2tSb3V0ZVBhcmFtcyB9IGZyb20gXCJuZXh0L2Rpc3Qvc2VydmVyL3JlcXVlc3QvZmFsbGJhY2stcGFyYW1zXCI7XG5pbXBvcnQgeyBzZXRSZWZlcmVuY2VNYW5pZmVzdHNTaW5nbGV0b24gfSBmcm9tIFwibmV4dC9kaXN0L3NlcnZlci9hcHAtcmVuZGVyL2VuY3J5cHRpb24tdXRpbHNcIjtcbmltcG9ydCB7IGlzSHRtbEJvdFJlcXVlc3QsIHNob3VsZFNlcnZlU3RyZWFtaW5nTWV0YWRhdGEgfSBmcm9tIFwibmV4dC9kaXN0L3NlcnZlci9saWIvc3RyZWFtaW5nLW1ldGFkYXRhXCI7XG5pbXBvcnQgeyBjcmVhdGVTZXJ2ZXJNb2R1bGVNYXAgfSBmcm9tIFwibmV4dC9kaXN0L3NlcnZlci9hcHAtcmVuZGVyL2FjdGlvbi11dGlsc1wiO1xuaW1wb3J0IHsgbm9ybWFsaXplQXBwUGF0aCB9IGZyb20gXCJuZXh0L2Rpc3Qvc2hhcmVkL2xpYi9yb3V0ZXIvdXRpbHMvYXBwLXBhdGhzXCI7XG5pbXBvcnQgeyBnZXRJc1Bvc3NpYmxlU2VydmVyQWN0aW9uIH0gZnJvbSBcIm5leHQvZGlzdC9zZXJ2ZXIvbGliL3NlcnZlci1hY3Rpb24tcmVxdWVzdC1tZXRhXCI7XG5pbXBvcnQgeyBSU0NfSEVBREVSLCBORVhUX1JPVVRFUl9QUkVGRVRDSF9IRUFERVIsIE5FWFRfSVNfUFJFUkVOREVSX0hFQURFUiwgTkVYVF9ESURfUE9TVFBPTkVfSEVBREVSLCBSU0NfQ09OVEVOVF9UWVBFX0hFQURFUiB9IGZyb20gXCJuZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvYXBwLXJvdXRlci1oZWFkZXJzXCI7XG5pbXBvcnQgeyBnZXRCb3RUeXBlLCBpc0JvdCB9IGZyb20gXCJuZXh0L2Rpc3Qvc2hhcmVkL2xpYi9yb3V0ZXIvdXRpbHMvaXMtYm90XCI7XG5pbXBvcnQgeyBDYWNoZWRSb3V0ZUtpbmQgfSBmcm9tIFwibmV4dC9kaXN0L3NlcnZlci9yZXNwb25zZS1jYWNoZVwiO1xuaW1wb3J0IHsgRmFsbGJhY2tNb2RlLCBwYXJzZUZhbGxiYWNrRmllbGQgfSBmcm9tIFwibmV4dC9kaXN0L2xpYi9mYWxsYmFja1wiO1xuaW1wb3J0IFJlbmRlclJlc3VsdCBmcm9tIFwibmV4dC9kaXN0L3NlcnZlci9yZW5kZXItcmVzdWx0XCI7XG5pbXBvcnQgeyBDQUNIRV9PTkVfWUVBUiwgSFRNTF9DT05URU5UX1RZUEVfSEVBREVSLCBORVhUX0NBQ0hFX1RBR1NfSEVBREVSIH0gZnJvbSBcIm5leHQvZGlzdC9saWIvY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBFTkNPREVEX1RBR1MgfSBmcm9tIFwibmV4dC9kaXN0L3NlcnZlci9zdHJlYW0tdXRpbHMvZW5jb2RlZC10YWdzXCI7XG5pbXBvcnQgeyBzZW5kUmVuZGVyUmVzdWx0IH0gZnJvbSBcIm5leHQvZGlzdC9zZXJ2ZXIvc2VuZC1wYXlsb2FkXCI7XG5pbXBvcnQgeyBOb0ZhbGxiYWNrRXJyb3IgfSBmcm9tIFwibmV4dC9kaXN0L3NoYXJlZC9saWIvbm8tZmFsbGJhY2stZXJyb3IuZXh0ZXJuYWxcIjtcbi8vIFdlIGluamVjdCB0aGUgdHJlZSBhbmQgcGFnZXMgaGVyZSBzbyB0aGF0IHdlIGNhbiB1c2UgdGhlbSBpbiB0aGUgcm91dGVcbi8vIG1vZHVsZS5cbmNvbnN0IHRyZWUgPSB7XG4gICAgICAgIGNoaWxkcmVuOiBbXG4gICAgICAgICcnLFxuICAgICAgICB7XG4gICAgICAgIGNoaWxkcmVuOiBbXG4gICAgICAgICdnZW5lcmF0ZScsXG4gICAgICAgIHtcbiAgICAgICAgY2hpbGRyZW46IFsnX19QQUdFX18nLCB7fSwge1xuICAgICAgICAgIHBhZ2U6IFtwYWdlNSwgXCIvVXNlcnMvamV0dGNoZW5nMTAxOC9jb2RlL2RyYW1hbGluZy12b2NhYi1sZWFybmluZy9mcm9udGVuZC9hcHAvZ2VuZXJhdGUvcGFnZS50c3hcIl0sXG4gICAgICAgICAgXG4gICAgICAgIH1dXG4gICAgICB9LFxuICAgICAgICB7XG4gICAgICAgIFxuICAgICAgICBcbiAgICAgIH1cbiAgICAgIF1cbiAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgJ2xheW91dCc6IFttb2R1bGUwLCBcIi9Vc2Vycy9qZXR0Y2hlbmcxMDE4L2NvZGUvZHJhbWFsaW5nLXZvY2FiLWxlYXJuaW5nL2Zyb250ZW5kL2FwcC9sYXlvdXQudHN4XCJdLFxuJ2dsb2JhbC1lcnJvcic6IFttb2R1bGUxLCBcIm5leHQvZGlzdC9jbGllbnQvY29tcG9uZW50cy9idWlsdGluL2dsb2JhbC1lcnJvci5qc1wiXSxcbidub3QtZm91bmQnOiBbbW9kdWxlMiwgXCJuZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvYnVpbHRpbi9ub3QtZm91bmQuanNcIl0sXG4nZm9yYmlkZGVuJzogW21vZHVsZTMsIFwibmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL2J1aWx0aW4vZm9yYmlkZGVuLmpzXCJdLFxuJ3VuYXV0aG9yaXplZCc6IFttb2R1bGU0LCBcIm5leHQvZGlzdC9jbGllbnQvY29tcG9uZW50cy9idWlsdGluL3VuYXV0aG9yaXplZC5qc1wiXSxcbiAgICAgICAgXG4gICAgICB9XG4gICAgICBdXG4gICAgICB9LmNoaWxkcmVuO1xuY29uc3QgcGFnZXMgPSBbXCIvVXNlcnMvamV0dGNoZW5nMTAxOC9jb2RlL2RyYW1hbGluZy12b2NhYi1sZWFybmluZy9mcm9udGVuZC9hcHAvZ2VuZXJhdGUvcGFnZS50c3hcIl07XG5leHBvcnQgeyB0cmVlLCBwYWdlcyB9O1xuaW1wb3J0IEdsb2JhbEVycm9yIGZyb20gXCJuZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvYnVpbHRpbi9nbG9iYWwtZXJyb3IuanNcIiB3aXRoIHtcbiAgICAndHVyYm9wYWNrLXRyYW5zaXRpb24nOiAnbmV4dC1zZXJ2ZXItdXRpbGl0eSdcbn07XG5leHBvcnQgeyBHbG9iYWxFcnJvciB9O1xuY29uc3QgX19uZXh0X2FwcF9yZXF1aXJlX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fXG5jb25zdCBfX25leHRfYXBwX2xvYWRfY2h1bmtfXyA9ICgpID0+IFByb21pc2UucmVzb2x2ZSgpXG5leHBvcnQgY29uc3QgX19uZXh0X2FwcF9fID0ge1xuICAgIHJlcXVpcmU6IF9fbmV4dF9hcHBfcmVxdWlyZV9fLFxuICAgIGxvYWRDaHVuazogX19uZXh0X2FwcF9sb2FkX2NodW5rX19cbn07XG5pbXBvcnQgKiBhcyBlbnRyeUJhc2UgZnJvbSBcIm5leHQvZGlzdC9zZXJ2ZXIvYXBwLXJlbmRlci9lbnRyeS1iYXNlXCIgd2l0aCB7XG4gICAgJ3R1cmJvcGFjay10cmFuc2l0aW9uJzogJ25leHQtc2VydmVyLXV0aWxpdHknXG59O1xuaW1wb3J0IHsgUmVkaXJlY3RTdGF0dXNDb2RlIH0gZnJvbSBcIm5leHQvZGlzdC9jbGllbnQvY29tcG9uZW50cy9yZWRpcmVjdC1zdGF0dXMtY29kZVwiO1xuZXhwb3J0ICogZnJvbSBcIm5leHQvZGlzdC9zZXJ2ZXIvYXBwLXJlbmRlci9lbnRyeS1iYXNlXCIgd2l0aCB7XG4gICAgJ3R1cmJvcGFjay10cmFuc2l0aW9uJzogJ25leHQtc2VydmVyLXV0aWxpdHknXG59O1xuLy8gQ3JlYXRlIGFuZCBleHBvcnQgdGhlIHJvdXRlIG1vZHVsZSB0aGF0IHdpbGwgYmUgY29uc3VtZWQuXG5leHBvcnQgY29uc3Qgcm91dGVNb2R1bGUgPSBuZXcgQXBwUGFnZVJvdXRlTW9kdWxlKHtcbiAgICBkZWZpbml0aW9uOiB7XG4gICAgICAgIGtpbmQ6IFJvdXRlS2luZC5BUFBfUEFHRSxcbiAgICAgICAgcGFnZTogXCIvZ2VuZXJhdGUvcGFnZVwiLFxuICAgICAgICBwYXRobmFtZTogXCIvZ2VuZXJhdGVcIixcbiAgICAgICAgLy8gVGhlIGZvbGxvd2luZyBhcmVuJ3QgdXNlZCBpbiBwcm9kdWN0aW9uLlxuICAgICAgICBidW5kbGVQYXRoOiAnJyxcbiAgICAgICAgZmlsZW5hbWU6ICcnLFxuICAgICAgICBhcHBQYXRoczogW11cbiAgICB9LFxuICAgIHVzZXJsYW5kOiB7XG4gICAgICAgIGxvYWRlclRyZWU6IHRyZWVcbiAgICB9LFxuICAgIGRpc3REaXI6IHByb2Nlc3MuZW52Ll9fTkVYVF9SRUxBVElWRV9ESVNUX0RJUiB8fCAnJyxcbiAgICByZWxhdGl2ZVByb2plY3REaXI6IHByb2Nlc3MuZW52Ll9fTkVYVF9SRUxBVElWRV9QUk9KRUNUX0RJUiB8fCAnJ1xufSk7XG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gaGFuZGxlcihyZXEsIHJlcywgY3R4KSB7XG4gICAgdmFyIF90aGlzO1xuICAgIGxldCBzcmNQYWdlID0gXCIvZ2VuZXJhdGUvcGFnZVwiO1xuICAgIC8vIHR1cmJvcGFjayBkb2Vzbid0IG5vcm1hbGl6ZSBgL2luZGV4YCBpbiB0aGUgcGFnZSBuYW1lXG4gICAgLy8gc28gd2UgbmVlZCB0byB0byBwcm9jZXNzIGR5bmFtaWMgcm91dGVzIHByb3Blcmx5XG4gICAgLy8gVE9ETzogZml4IHR1cmJvcGFjayBwcm92aWRpbmcgZGlmZmVyaW5nIHZhbHVlIGZyb20gd2VicGFja1xuICAgIGlmIChwcm9jZXNzLmVudi5UVVJCT1BBQ0spIHtcbiAgICAgICAgc3JjUGFnZSA9IHNyY1BhZ2UucmVwbGFjZSgvXFwvaW5kZXgkLywgJycpIHx8ICcvJztcbiAgICB9IGVsc2UgaWYgKHNyY1BhZ2UgPT09ICcvaW5kZXgnKSB7XG4gICAgICAgIC8vIHdlIGFsd2F5cyBub3JtYWxpemUgL2luZGV4IHNwZWNpZmljYWxseVxuICAgICAgICBzcmNQYWdlID0gJy8nO1xuICAgIH1cbiAgICBjb25zdCBtdWx0aVpvbmVEcmFmdE1vZGUgPSBwcm9jZXNzLmVudi5fX05FWFRfTVVMVElfWk9ORV9EUkFGVF9NT0RFO1xuICAgIGNvbnN0IGluaXRpYWxQb3N0cG9uZWQgPSBnZXRSZXF1ZXN0TWV0YShyZXEsICdwb3N0cG9uZWQnKTtcbiAgICAvLyBUT0RPOiByZXBsYWNlIHdpdGggbW9yZSBzcGVjaWZpYyBmbGFnc1xuICAgIGNvbnN0IG1pbmltYWxNb2RlID0gZ2V0UmVxdWVzdE1ldGEocmVxLCAnbWluaW1hbE1vZGUnKTtcbiAgICBjb25zdCBwcmVwYXJlUmVzdWx0ID0gYXdhaXQgcm91dGVNb2R1bGUucHJlcGFyZShyZXEsIHJlcywge1xuICAgICAgICBzcmNQYWdlLFxuICAgICAgICBtdWx0aVpvbmVEcmFmdE1vZGVcbiAgICB9KTtcbiAgICBpZiAoIXByZXBhcmVSZXN1bHQpIHtcbiAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSA0MDA7XG4gICAgICAgIHJlcy5lbmQoJ0JhZCBSZXF1ZXN0Jyk7XG4gICAgICAgIGN0eC53YWl0VW50aWwgPT0gbnVsbCA/IHZvaWQgMCA6IGN0eC53YWl0VW50aWwuY2FsbChjdHgsIFByb21pc2UucmVzb2x2ZSgpKTtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGNvbnN0IHsgYnVpbGRJZCwgcXVlcnksIHBhcmFtcywgcGFyc2VkVXJsLCBwYWdlSXNEeW5hbWljLCBidWlsZE1hbmlmZXN0LCBuZXh0Rm9udE1hbmlmZXN0LCByZWFjdExvYWRhYmxlTWFuaWZlc3QsIHNlcnZlckFjdGlvbnNNYW5pZmVzdCwgY2xpZW50UmVmZXJlbmNlTWFuaWZlc3QsIHN1YnJlc291cmNlSW50ZWdyaXR5TWFuaWZlc3QsIHByZXJlbmRlck1hbmlmZXN0LCBpc0RyYWZ0TW9kZSwgcmVzb2x2ZWRQYXRobmFtZSwgcmV2YWxpZGF0ZU9ubHlHZW5lcmF0ZWQsIHJvdXRlclNlcnZlckNvbnRleHQsIG5leHRDb25maWcsIGludGVyY2VwdGlvblJvdXRlUGF0dGVybnMgfSA9IHByZXBhcmVSZXN1bHQ7XG4gICAgY29uc3QgcGF0aG5hbWUgPSBwYXJzZWRVcmwucGF0aG5hbWUgfHwgJy8nO1xuICAgIGNvbnN0IG5vcm1hbGl6ZWRTcmNQYWdlID0gbm9ybWFsaXplQXBwUGF0aChzcmNQYWdlKTtcbiAgICBsZXQgeyBpc09uRGVtYW5kUmV2YWxpZGF0ZSB9ID0gcHJlcGFyZVJlc3VsdDtcbiAgICBjb25zdCBwcmVyZW5kZXJJbmZvID0gcm91dGVNb2R1bGUubWF0Y2gocGF0aG5hbWUsIHByZXJlbmRlck1hbmlmZXN0KTtcbiAgICBjb25zdCBpc1ByZXJlbmRlcmVkID0gISFwcmVyZW5kZXJNYW5pZmVzdC5yb3V0ZXNbcmVzb2x2ZWRQYXRobmFtZV07XG4gICAgbGV0IGlzU1NHID0gQm9vbGVhbihwcmVyZW5kZXJJbmZvIHx8IGlzUHJlcmVuZGVyZWQgfHwgcHJlcmVuZGVyTWFuaWZlc3Qucm91dGVzW25vcm1hbGl6ZWRTcmNQYWdlXSk7XG4gICAgY29uc3QgdXNlckFnZW50ID0gcmVxLmhlYWRlcnNbJ3VzZXItYWdlbnQnXSB8fCAnJztcbiAgICBjb25zdCBib3RUeXBlID0gZ2V0Qm90VHlwZSh1c2VyQWdlbnQpO1xuICAgIGNvbnN0IGlzSHRtbEJvdCA9IGlzSHRtbEJvdFJlcXVlc3QocmVxKTtcbiAgICAvKipcbiAgICogSWYgdHJ1ZSwgdGhpcyBpbmRpY2F0ZXMgdGhhdCB0aGUgcmVxdWVzdCBiZWluZyBtYWRlIGlzIGZvciBhbiBhcHBcbiAgICogcHJlZmV0Y2ggcmVxdWVzdC5cbiAgICovIGNvbnN0IGlzUHJlZmV0Y2hSU0NSZXF1ZXN0ID0gZ2V0UmVxdWVzdE1ldGEocmVxLCAnaXNQcmVmZXRjaFJTQ1JlcXVlc3QnKSA/PyByZXEuaGVhZGVyc1tORVhUX1JPVVRFUl9QUkVGRVRDSF9IRUFERVJdID09PSAnMScgLy8gZXhjbHVkZSBydW50aW1lIHByZWZldGNoZXMsIHdoaWNoIHVzZSAnMidcbiAgICA7XG4gICAgLy8gTk9URTogRG9uJ3QgZGVsZXRlIGhlYWRlcnNbUlNDXSB5ZXQsIGl0IHN0aWxsIG5lZWRzIHRvIGJlIHVzZWQgaW4gcmVuZGVyVG9IVE1MIGxhdGVyXG4gICAgY29uc3QgaXNSU0NSZXF1ZXN0ID0gZ2V0UmVxdWVzdE1ldGEocmVxLCAnaXNSU0NSZXF1ZXN0JykgPz8gQm9vbGVhbihyZXEuaGVhZGVyc1tSU0NfSEVBREVSXSk7XG4gICAgY29uc3QgaXNQb3NzaWJsZVNlcnZlckFjdGlvbiA9IGdldElzUG9zc2libGVTZXJ2ZXJBY3Rpb24ocmVxKTtcbiAgICAvKipcbiAgICogSWYgdGhlIHJvdXRlIGJlaW5nIHJlbmRlcmVkIGlzIGFuIGFwcCBwYWdlLCBhbmQgdGhlIHBwciBmZWF0dXJlIGhhcyBiZWVuXG4gICAqIGVuYWJsZWQsIHRoZW4gdGhlIGdpdmVuIHJvdXRlIF9jb3VsZF8gc3VwcG9ydCBQUFIuXG4gICAqLyBjb25zdCBjb3VsZFN1cHBvcnRQUFIgPSBjaGVja0lzQXBwUFBSRW5hYmxlZChuZXh0Q29uZmlnLmV4cGVyaW1lbnRhbC5wcHIpO1xuICAgIC8vIFdoZW4gZW5hYmxlZCwgdGhpcyB3aWxsIGFsbG93IHRoZSB1c2Ugb2YgdGhlIGA/X19uZXh0cHByb25seWAgcXVlcnkgdG9cbiAgICAvLyBlbmFibGUgZGVidWdnaW5nIG9mIHRoZSBzdGF0aWMgc2hlbGwuXG4gICAgY29uc3QgaGFzRGVidWdTdGF0aWNTaGVsbFF1ZXJ5ID0gcHJvY2Vzcy5lbnYuX19ORVhUX0VYUEVSSU1FTlRBTF9TVEFUSUNfU0hFTExfREVCVUdHSU5HID09PSAnMScgJiYgdHlwZW9mIHF1ZXJ5Ll9fbmV4dHBwcm9ubHkgIT09ICd1bmRlZmluZWQnICYmIGNvdWxkU3VwcG9ydFBQUjtcbiAgICAvLyBXaGVuIGVuYWJsZWQsIHRoaXMgd2lsbCBhbGxvdyB0aGUgdXNlIG9mIHRoZSBgP19fbmV4dHBwcm9ubHlgIHF1ZXJ5XG4gICAgLy8gdG8gZW5hYmxlIGRlYnVnZ2luZyBvZiB0aGUgZmFsbGJhY2sgc2hlbGwuXG4gICAgY29uc3QgaGFzRGVidWdGYWxsYmFja1NoZWxsUXVlcnkgPSBoYXNEZWJ1Z1N0YXRpY1NoZWxsUXVlcnkgJiYgcXVlcnkuX19uZXh0cHByb25seSA9PT0gJ2ZhbGxiYWNrJztcbiAgICAvLyBUaGlzIHBhZ2Ugc3VwcG9ydHMgUFBSIGlmIGl0IGlzIG1hcmtlZCBhcyBiZWluZyBgUEFSVElBTExZX1NUQVRJQ2AgaW4gdGhlXG4gICAgLy8gcHJlcmVuZGVyIG1hbmlmZXN0IGFuZCB0aGlzIGlzIGFuIGFwcCBwYWdlLlxuICAgIGNvbnN0IGlzUm91dGVQUFJFbmFibGVkID0gY291bGRTdXBwb3J0UFBSICYmICgoKF90aGlzID0gcHJlcmVuZGVyTWFuaWZlc3Qucm91dGVzW25vcm1hbGl6ZWRTcmNQYWdlXSA/PyBwcmVyZW5kZXJNYW5pZmVzdC5keW5hbWljUm91dGVzW25vcm1hbGl6ZWRTcmNQYWdlXSkgPT0gbnVsbCA/IHZvaWQgMCA6IF90aGlzLnJlbmRlcmluZ01vZGUpID09PSAnUEFSVElBTExZX1NUQVRJQycgfHwgLy8gSWRlYWxseSB3ZSdkIHdhbnQgdG8gY2hlY2sgdGhlIGFwcENvbmZpZyB0byBzZWUgaWYgdGhpcyBwYWdlIGhhcyBQUFJcbiAgICAvLyBlbmFibGVkIG9yIG5vdCwgYnV0IHRoYXQgd291bGQgcmVxdWlyZSBwbHVtYmluZyB0aGUgYXBwQ29uZmlnIHRocm91Z2hcbiAgICAvLyB0byB0aGUgc2VydmVyIGR1cmluZyBkZXZlbG9wbWVudC4gV2UgYXNzdW1lIHRoYXQgdGhlIHBhZ2Ugc3VwcG9ydHMgaXRcbiAgICAvLyBidXQgb25seSBkdXJpbmcgZGV2ZWxvcG1lbnQuXG4gICAgaGFzRGVidWdTdGF0aWNTaGVsbFF1ZXJ5ICYmIChyb3V0ZU1vZHVsZS5pc0RldiA9PT0gdHJ1ZSB8fCAocm91dGVyU2VydmVyQ29udGV4dCA9PSBudWxsID8gdm9pZCAwIDogcm91dGVyU2VydmVyQ29udGV4dC5leHBlcmltZW50YWxUZXN0UHJveHkpID09PSB0cnVlKSk7XG4gICAgY29uc3QgaXNEZWJ1Z1N0YXRpY1NoZWxsID0gaGFzRGVidWdTdGF0aWNTaGVsbFF1ZXJ5ICYmIGlzUm91dGVQUFJFbmFibGVkO1xuICAgIC8vIFdlIHNob3VsZCBlbmFibGUgZGVidWdnaW5nIGR5bmFtaWMgYWNjZXNzZXMgd2hlbiB0aGUgc3RhdGljIHNoZWxsXG4gICAgLy8gZGVidWdnaW5nIGhhcyBiZWVuIGVuYWJsZWQgYW5kIHdlJ3JlIGFsc28gaW4gZGV2ZWxvcG1lbnQgbW9kZS5cbiAgICBjb25zdCBpc0RlYnVnRHluYW1pY0FjY2Vzc2VzID0gaXNEZWJ1Z1N0YXRpY1NoZWxsICYmIHJvdXRlTW9kdWxlLmlzRGV2ID09PSB0cnVlO1xuICAgIGNvbnN0IGlzRGVidWdGYWxsYmFja1NoZWxsID0gaGFzRGVidWdGYWxsYmFja1NoZWxsUXVlcnkgJiYgaXNSb3V0ZVBQUkVuYWJsZWQ7XG4gICAgLy8gSWYgd2UncmUgaW4gbWluaW1hbCBtb2RlLCB0aGVuIHRyeSB0byBnZXQgdGhlIHBvc3Rwb25lZCBpbmZvcm1hdGlvbiBmcm9tXG4gICAgLy8gdGhlIHJlcXVlc3QgbWV0YWRhdGEuIElmIGF2YWlsYWJsZSwgdXNlIGl0IGZvciByZXN1bWluZyB0aGUgcG9zdHBvbmVkXG4gICAgLy8gcmVuZGVyLlxuICAgIGNvbnN0IG1pbmltYWxQb3N0cG9uZWQgPSBpc1JvdXRlUFBSRW5hYmxlZCA/IGluaXRpYWxQb3N0cG9uZWQgOiB1bmRlZmluZWQ7XG4gICAgLy8gSWYgUFBSIGlzIGVuYWJsZWQsIGFuZCB0aGlzIGlzIGEgUlNDIHJlcXVlc3QgKGJ1dCBub3QgYSBwcmVmZXRjaCksIHRoZW5cbiAgICAvLyB3ZSBjYW4gdXNlIHRoaXMgZmFjdCB0byBvbmx5IGdlbmVyYXRlIHRoZSBmbGlnaHQgZGF0YSBmb3IgdGhlIHJlcXVlc3RcbiAgICAvLyBiZWNhdXNlIHdlIGNhbid0IGNhY2hlIHRoZSBIVE1MIChhcyBpdCdzIGFsc28gZHluYW1pYykuXG4gICAgY29uc3QgaXNEeW5hbWljUlNDUmVxdWVzdCA9IGlzUm91dGVQUFJFbmFibGVkICYmIGlzUlNDUmVxdWVzdCAmJiAhaXNQcmVmZXRjaFJTQ1JlcXVlc3Q7XG4gICAgLy8gTmVlZCB0byByZWFkIHRoaXMgYmVmb3JlIGl0J3Mgc3RyaXBwZWQgYnkgc3RyaXBGbGlnaHRIZWFkZXJzLiBXZSBkb24ndFxuICAgIC8vIG5lZWQgdG8gdHJhbnNmZXIgaXQgdG8gdGhlIHJlcXVlc3QgbWV0YSBiZWNhdXNlIGl0J3Mgb25seSByZWFkXG4gICAgLy8gd2l0aGluIHRoaXMgZnVuY3Rpb247IHRoZSBzdGF0aWMgc2VnbWVudCBkYXRhIHNob3VsZCBoYXZlIGFscmVhZHkgYmVlblxuICAgIC8vIGdlbmVyYXRlZCwgc28gd2Ugd2lsbCBhbHdheXMgZWl0aGVyIHJldHVybiBhIHN0YXRpYyByZXNwb25zZSBvciBhIDQwNC5cbiAgICBjb25zdCBzZWdtZW50UHJlZmV0Y2hIZWFkZXIgPSBnZXRSZXF1ZXN0TWV0YShyZXEsICdzZWdtZW50UHJlZmV0Y2hSU0NSZXF1ZXN0Jyk7XG4gICAgLy8gVE9ETzogaW52ZXN0aWdhdGUgZXhpc3RpbmcgYnVnIHdpdGggc2hvdWxkU2VydmVTdHJlYW1pbmdNZXRhZGF0YSBhbHdheXNcbiAgICAvLyBiZWluZyB0cnVlIGZvciBhIHJldmFsaWRhdGUgZHVlIHRvIG1vZGlmeWluZyB0aGUgYmFzZS1zZXJ2ZXIgdGhpcy5yZW5kZXJPcHRzXG4gICAgLy8gd2hlbiBmaXhpbmcgdGhpcyB0byBjb3JyZWN0IGxvZ2ljIGl0IGNhdXNlcyBoeWRyYXRpb24gaXNzdWUgc2luY2Ugd2Ugc2V0XG4gICAgLy8gc2VydmVTdHJlYW1pbmdNZXRhZGF0YSB0byB0cnVlIGR1cmluZyBleHBvcnRcbiAgICBsZXQgc2VydmVTdHJlYW1pbmdNZXRhZGF0YSA9ICF1c2VyQWdlbnQgPyB0cnVlIDogc2hvdWxkU2VydmVTdHJlYW1pbmdNZXRhZGF0YSh1c2VyQWdlbnQsIG5leHRDb25maWcuaHRtbExpbWl0ZWRCb3RzKTtcbiAgICBpZiAoaXNIdG1sQm90ICYmIGlzUm91dGVQUFJFbmFibGVkKSB7XG4gICAgICAgIGlzU1NHID0gZmFsc2U7XG4gICAgICAgIHNlcnZlU3RyZWFtaW5nTWV0YWRhdGEgPSBmYWxzZTtcbiAgICB9XG4gICAgLy8gSW4gZGV2ZWxvcG1lbnQsIHdlIGFsd2F5cyB3YW50IHRvIGdlbmVyYXRlIGR5bmFtaWMgSFRNTC5cbiAgICBsZXQgc3VwcG9ydHNEeW5hbWljUmVzcG9uc2UgPSAvLyBJZiB3ZSdyZSBpbiBkZXZlbG9wbWVudCwgd2UgYWx3YXlzIHN1cHBvcnQgZHluYW1pYyBIVE1MLCB1bmxlc3MgaXQnc1xuICAgIC8vIGEgZGF0YSByZXF1ZXN0LCBpbiB3aGljaCBjYXNlIHdlIG9ubHkgcHJvZHVjZSBzdGF0aWMgSFRNTC5cbiAgICByb3V0ZU1vZHVsZS5pc0RldiA9PT0gdHJ1ZSB8fCAvLyBJZiB0aGlzIGlzIG5vdCBTU0cgb3IgZG9lcyBub3QgaGF2ZSBzdGF0aWMgcGF0aHMsIHRoZW4gaXQgc3VwcG9ydHNcbiAgICAvLyBkeW5hbWljIEhUTUwuXG4gICAgIWlzU1NHIHx8IC8vIElmIHRoaXMgcmVxdWVzdCBoYXMgcHJvdmlkZWQgcG9zdHBvbmVkIGRhdGEsIGl0IHN1cHBvcnRzIGR5bmFtaWNcbiAgICAvLyBIVE1MLlxuICAgIHR5cGVvZiBpbml0aWFsUG9zdHBvbmVkID09PSAnc3RyaW5nJyB8fCAvLyBJZiB0aGlzIGlzIGEgZHluYW1pYyBSU0MgcmVxdWVzdCwgdGhlbiB0aGlzIHJlbmRlciBzdXBwb3J0cyBkeW5hbWljXG4gICAgLy8gSFRNTCAoaXQncyBkeW5hbWljKS5cbiAgICBpc0R5bmFtaWNSU0NSZXF1ZXN0O1xuICAgIC8vIFdoZW4gaHRtbCBib3RzIHJlcXVlc3QgUFBSIHBhZ2UsIHBlcmZvcm0gdGhlIGZ1bGwgZHluYW1pYyByZW5kZXJpbmcuXG4gICAgY29uc3Qgc2hvdWxkV2FpdE9uQWxsUmVhZHkgPSBpc0h0bWxCb3QgJiYgaXNSb3V0ZVBQUkVuYWJsZWQ7XG4gICAgbGV0IHNzZ0NhY2hlS2V5ID0gbnVsbDtcbiAgICBpZiAoIWlzRHJhZnRNb2RlICYmIGlzU1NHICYmICFzdXBwb3J0c0R5bmFtaWNSZXNwb25zZSAmJiAhaXNQb3NzaWJsZVNlcnZlckFjdGlvbiAmJiAhbWluaW1hbFBvc3Rwb25lZCAmJiAhaXNEeW5hbWljUlNDUmVxdWVzdCkge1xuICAgICAgICBzc2dDYWNoZUtleSA9IHJlc29sdmVkUGF0aG5hbWU7XG4gICAgfVxuICAgIC8vIHRoZSBzdGF0aWNQYXRoS2V5IGRpZmZlcnMgZnJvbSBzc2dDYWNoZUtleSBzaW5jZVxuICAgIC8vIHNzZ0NhY2hlS2V5IGlzIG51bGwgaW4gZGV2IHNpbmNlIHdlJ3JlIGFsd2F5cyBpbiBcImR5bmFtaWNcIlxuICAgIC8vIG1vZGUgaW4gZGV2IHRvIGJ5cGFzcyB0aGUgY2FjaGUsIGJ1dCB3ZSBzdGlsbCBuZWVkIHRvIGhvbm9yXG4gICAgLy8gZHluYW1pY1BhcmFtcyA9IGZhbHNlIGluIGRldiBtb2RlXG4gICAgbGV0IHN0YXRpY1BhdGhLZXkgPSBzc2dDYWNoZUtleTtcbiAgICBpZiAoIXN0YXRpY1BhdGhLZXkgJiYgcm91dGVNb2R1bGUuaXNEZXYpIHtcbiAgICAgICAgc3RhdGljUGF0aEtleSA9IHJlc29sdmVkUGF0aG5hbWU7XG4gICAgfVxuICAgIC8vIElmIHRoaXMgaXMgYSByZXF1ZXN0IGZvciBhbiBhcHAgcGF0aCB0aGF0IHNob3VsZCBiZSBzdGF0aWNhbGx5IGdlbmVyYXRlZFxuICAgIC8vIGFuZCB3ZSBhcmVuJ3QgaW4gdGhlIGVkZ2UgcnVudGltZSwgc3RyaXAgdGhlIGZsaWdodCBoZWFkZXJzIHNvIGl0IHdpbGxcbiAgICAvLyBnZW5lcmF0ZSB0aGUgc3RhdGljIHJlc3BvbnNlLlxuICAgIGlmICghcm91dGVNb2R1bGUuaXNEZXYgJiYgIWlzRHJhZnRNb2RlICYmIGlzU1NHICYmIGlzUlNDUmVxdWVzdCAmJiAhaXNEeW5hbWljUlNDUmVxdWVzdCkge1xuICAgICAgICBzdHJpcEZsaWdodEhlYWRlcnMocmVxLmhlYWRlcnMpO1xuICAgIH1cbiAgICBjb25zdCBDb21wb25lbnRNb2QgPSB7XG4gICAgICAgIC4uLmVudHJ5QmFzZSxcbiAgICAgICAgdHJlZSxcbiAgICAgICAgcGFnZXMsXG4gICAgICAgIEdsb2JhbEVycm9yLFxuICAgICAgICBoYW5kbGVyLFxuICAgICAgICByb3V0ZU1vZHVsZSxcbiAgICAgICAgX19uZXh0X2FwcF9fXG4gICAgfTtcbiAgICAvLyBCZWZvcmUgcmVuZGVyaW5nICh3aGljaCBpbml0aWFsaXplcyBjb21wb25lbnQgdHJlZSBtb2R1bGVzKSwgd2UgaGF2ZSB0b1xuICAgIC8vIHNldCB0aGUgcmVmZXJlbmNlIG1hbmlmZXN0cyB0byBvdXIgZ2xvYmFsIHN0b3JlIHNvIFNlcnZlciBBY3Rpb24nc1xuICAgIC8vIGVuY3J5cHRpb24gdXRpbCBjYW4gYWNjZXNzIHRvIHRoZW0gYXQgdGhlIHRvcCBsZXZlbCBvZiB0aGUgcGFnZSBtb2R1bGUuXG4gICAgaWYgKHNlcnZlckFjdGlvbnNNYW5pZmVzdCAmJiBjbGllbnRSZWZlcmVuY2VNYW5pZmVzdCkge1xuICAgICAgICBzZXRSZWZlcmVuY2VNYW5pZmVzdHNTaW5nbGV0b24oe1xuICAgICAgICAgICAgcGFnZTogc3JjUGFnZSxcbiAgICAgICAgICAgIGNsaWVudFJlZmVyZW5jZU1hbmlmZXN0LFxuICAgICAgICAgICAgc2VydmVyQWN0aW9uc01hbmlmZXN0LFxuICAgICAgICAgICAgc2VydmVyTW9kdWxlTWFwOiBjcmVhdGVTZXJ2ZXJNb2R1bGVNYXAoe1xuICAgICAgICAgICAgICAgIHNlcnZlckFjdGlvbnNNYW5pZmVzdFxuICAgICAgICAgICAgfSlcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGNvbnN0IG1ldGhvZCA9IHJlcS5tZXRob2QgfHwgJ0dFVCc7XG4gICAgY29uc3QgdHJhY2VyID0gZ2V0VHJhY2VyKCk7XG4gICAgY29uc3QgYWN0aXZlU3BhbiA9IHRyYWNlci5nZXRBY3RpdmVTY29wZVNwYW4oKTtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCB2YXJ5SGVhZGVyID0gcm91dGVNb2R1bGUuZ2V0VmFyeUhlYWRlcihyZXNvbHZlZFBhdGhuYW1lLCBpbnRlcmNlcHRpb25Sb3V0ZVBhdHRlcm5zKTtcbiAgICAgICAgcmVzLnNldEhlYWRlcignVmFyeScsIHZhcnlIZWFkZXIpO1xuICAgICAgICBjb25zdCBpbnZva2VSb3V0ZU1vZHVsZSA9IGFzeW5jIChzcGFuLCBjb250ZXh0KT0+e1xuICAgICAgICAgICAgY29uc3QgbmV4dFJlcSA9IG5ldyBOb2RlTmV4dFJlcXVlc3QocmVxKTtcbiAgICAgICAgICAgIGNvbnN0IG5leHRSZXMgPSBuZXcgTm9kZU5leHRSZXNwb25zZShyZXMpO1xuICAgICAgICAgICAgLy8gVE9ETzogYWRhcHQgZm9yIHB1dHRpbmcgdGhlIFJEQyBpbnNpZGUgdGhlIHBvc3Rwb25lZCBkYXRhXG4gICAgICAgICAgICAvLyBJZiB3ZSdyZSBpbiBkZXYsIGFuZCB0aGlzIGlzbid0IGEgcHJlZmV0Y2ggb3IgYSBzZXJ2ZXIgYWN0aW9uLFxuICAgICAgICAgICAgLy8gd2Ugc2hvdWxkIHNlZWQgdGhlIHJlc3VtZSBkYXRhIGNhY2hlLlxuICAgICAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAnZGV2ZWxvcG1lbnQnKSB7XG4gICAgICAgICAgICAgICAgaWYgKG5leHRDb25maWcuZXhwZXJpbWVudGFsLmNhY2hlQ29tcG9uZW50cyAmJiAhaXNQcmVmZXRjaFJTQ1JlcXVlc3QgJiYgIWNvbnRleHQucmVuZGVyT3B0cy5pc1Bvc3NpYmxlU2VydmVyQWN0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHdhcm11cCA9IGF3YWl0IHJvdXRlTW9kdWxlLndhcm11cChuZXh0UmVxLCBuZXh0UmVzLCBjb250ZXh0KTtcbiAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhlIHdhcm11cCBpcyBzdWNjZXNzZnVsLCB3ZSBzaG91bGQgdXNlIHRoZSByZXN1bWUgZGF0YVxuICAgICAgICAgICAgICAgICAgICAvLyBjYWNoZSBmcm9tIHRoZSB3YXJtdXAuXG4gICAgICAgICAgICAgICAgICAgIGlmICh3YXJtdXAubWV0YWRhdGEucmVuZGVyUmVzdW1lRGF0YUNhY2hlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LnJlbmRlck9wdHMucmVuZGVyUmVzdW1lRGF0YUNhY2hlID0gd2FybXVwLm1ldGFkYXRhLnJlbmRlclJlc3VtZURhdGFDYWNoZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiByb3V0ZU1vZHVsZS5yZW5kZXIobmV4dFJlcSwgbmV4dFJlcywgY29udGV4dCkuZmluYWxseSgoKT0+e1xuICAgICAgICAgICAgICAgIGlmICghc3BhbikgcmV0dXJuO1xuICAgICAgICAgICAgICAgIHNwYW4uc2V0QXR0cmlidXRlcyh7XG4gICAgICAgICAgICAgICAgICAgICdodHRwLnN0YXR1c19jb2RlJzogcmVzLnN0YXR1c0NvZGUsXG4gICAgICAgICAgICAgICAgICAgICduZXh0LnJzYyc6IGZhbHNlXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgY29uc3Qgcm9vdFNwYW5BdHRyaWJ1dGVzID0gdHJhY2VyLmdldFJvb3RTcGFuQXR0cmlidXRlcygpO1xuICAgICAgICAgICAgICAgIC8vIFdlIHdlcmUgdW5hYmxlIHRvIGdldCBhdHRyaWJ1dGVzLCBwcm9iYWJseSBPVEVMIGlzIG5vdCBlbmFibGVkXG4gICAgICAgICAgICAgICAgaWYgKCFyb290U3BhbkF0dHJpYnV0ZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAocm9vdFNwYW5BdHRyaWJ1dGVzLmdldCgnbmV4dC5zcGFuX3R5cGUnKSAhPT0gQmFzZVNlcnZlclNwYW4uaGFuZGxlUmVxdWVzdCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oYFVuZXhwZWN0ZWQgcm9vdCBzcGFuIHR5cGUgJyR7cm9vdFNwYW5BdHRyaWJ1dGVzLmdldCgnbmV4dC5zcGFuX3R5cGUnKX0nLiBQbGVhc2UgcmVwb3J0IHRoaXMgTmV4dC5qcyBpc3N1ZSBodHRwczovL2dpdGh1Yi5jb20vdmVyY2VsL25leHQuanNgKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCByb3V0ZSA9IHJvb3RTcGFuQXR0cmlidXRlcy5nZXQoJ25leHQucm91dGUnKTtcbiAgICAgICAgICAgICAgICBpZiAocm91dGUpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbmFtZSA9IGAke21ldGhvZH0gJHtyb3V0ZX1gO1xuICAgICAgICAgICAgICAgICAgICBzcGFuLnNldEF0dHJpYnV0ZXMoe1xuICAgICAgICAgICAgICAgICAgICAgICAgJ25leHQucm91dGUnOiByb3V0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICdodHRwLnJvdXRlJzogcm91dGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbmV4dC5zcGFuX25hbWUnOiBuYW1lXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBzcGFuLnVwZGF0ZU5hbWUobmFtZSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgc3Bhbi51cGRhdGVOYW1lKGAke21ldGhvZH0gJHtyZXEudXJsfWApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgICAgICBjb25zdCBkb1JlbmRlciA9IGFzeW5jICh7IHNwYW4sIHBvc3Rwb25lZCwgZmFsbGJhY2tSb3V0ZVBhcmFtcyB9KT0+e1xuICAgICAgICAgICAgY29uc3QgY29udGV4dCA9IHtcbiAgICAgICAgICAgICAgICBxdWVyeSxcbiAgICAgICAgICAgICAgICBwYXJhbXMsXG4gICAgICAgICAgICAgICAgcGFnZTogbm9ybWFsaXplZFNyY1BhZ2UsXG4gICAgICAgICAgICAgICAgc2hhcmVkQ29udGV4dDoge1xuICAgICAgICAgICAgICAgICAgICBidWlsZElkXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBzZXJ2ZXJDb21wb25lbnRzSG1yQ2FjaGU6IGdldFJlcXVlc3RNZXRhKHJlcSwgJ3NlcnZlckNvbXBvbmVudHNIbXJDYWNoZScpLFxuICAgICAgICAgICAgICAgIGZhbGxiYWNrUm91dGVQYXJhbXMsXG4gICAgICAgICAgICAgICAgcmVuZGVyT3B0czoge1xuICAgICAgICAgICAgICAgICAgICBBcHA6ICgpPT5udWxsLFxuICAgICAgICAgICAgICAgICAgICBEb2N1bWVudDogKCk9Pm51bGwsXG4gICAgICAgICAgICAgICAgICAgIHBhZ2VDb25maWc6IHt9LFxuICAgICAgICAgICAgICAgICAgICBDb21wb25lbnRNb2QsXG4gICAgICAgICAgICAgICAgICAgIENvbXBvbmVudDogaW50ZXJvcERlZmF1bHQoQ29tcG9uZW50TW9kKSxcbiAgICAgICAgICAgICAgICAgICAgcGFyYW1zLFxuICAgICAgICAgICAgICAgICAgICByb3V0ZU1vZHVsZSxcbiAgICAgICAgICAgICAgICAgICAgcGFnZTogc3JjUGFnZSxcbiAgICAgICAgICAgICAgICAgICAgcG9zdHBvbmVkLFxuICAgICAgICAgICAgICAgICAgICBzaG91bGRXYWl0T25BbGxSZWFkeSxcbiAgICAgICAgICAgICAgICAgICAgc2VydmVTdHJlYW1pbmdNZXRhZGF0YSxcbiAgICAgICAgICAgICAgICAgICAgc3VwcG9ydHNEeW5hbWljUmVzcG9uc2U6IHR5cGVvZiBwb3N0cG9uZWQgPT09ICdzdHJpbmcnIHx8IHN1cHBvcnRzRHluYW1pY1Jlc3BvbnNlLFxuICAgICAgICAgICAgICAgICAgICBidWlsZE1hbmlmZXN0LFxuICAgICAgICAgICAgICAgICAgICBuZXh0Rm9udE1hbmlmZXN0LFxuICAgICAgICAgICAgICAgICAgICByZWFjdExvYWRhYmxlTWFuaWZlc3QsXG4gICAgICAgICAgICAgICAgICAgIHN1YnJlc291cmNlSW50ZWdyaXR5TWFuaWZlc3QsXG4gICAgICAgICAgICAgICAgICAgIHNlcnZlckFjdGlvbnNNYW5pZmVzdCxcbiAgICAgICAgICAgICAgICAgICAgY2xpZW50UmVmZXJlbmNlTWFuaWZlc3QsXG4gICAgICAgICAgICAgICAgICAgIHNldElzclN0YXR1czogcm91dGVyU2VydmVyQ29udGV4dCA9PSBudWxsID8gdm9pZCAwIDogcm91dGVyU2VydmVyQ29udGV4dC5zZXRJc3JTdGF0dXMsXG4gICAgICAgICAgICAgICAgICAgIGRpcjogcHJvY2Vzcy5lbnYuTkVYVF9SVU5USU1FID09PSAnbm9kZWpzJyA/IHJlcXVpcmUoJ3BhdGgnKS5qb2luKC8qIHR1cmJvcGFja0lnbm9yZTogdHJ1ZSAqLyBwcm9jZXNzLmN3ZCgpLCByb3V0ZU1vZHVsZS5yZWxhdGl2ZVByb2plY3REaXIpIDogYCR7cHJvY2Vzcy5jd2QoKX0vJHtyb3V0ZU1vZHVsZS5yZWxhdGl2ZVByb2plY3REaXJ9YCxcbiAgICAgICAgICAgICAgICAgICAgaXNEcmFmdE1vZGUsXG4gICAgICAgICAgICAgICAgICAgIGlzUmV2YWxpZGF0ZTogaXNTU0cgJiYgIXBvc3Rwb25lZCAmJiAhaXNEeW5hbWljUlNDUmVxdWVzdCxcbiAgICAgICAgICAgICAgICAgICAgYm90VHlwZSxcbiAgICAgICAgICAgICAgICAgICAgaXNPbkRlbWFuZFJldmFsaWRhdGUsXG4gICAgICAgICAgICAgICAgICAgIGlzUG9zc2libGVTZXJ2ZXJBY3Rpb24sXG4gICAgICAgICAgICAgICAgICAgIGFzc2V0UHJlZml4OiBuZXh0Q29uZmlnLmFzc2V0UHJlZml4LFxuICAgICAgICAgICAgICAgICAgICBuZXh0Q29uZmlnT3V0cHV0OiBuZXh0Q29uZmlnLm91dHB1dCxcbiAgICAgICAgICAgICAgICAgICAgY3Jvc3NPcmlnaW46IG5leHRDb25maWcuY3Jvc3NPcmlnaW4sXG4gICAgICAgICAgICAgICAgICAgIHRyYWlsaW5nU2xhc2g6IG5leHRDb25maWcudHJhaWxpbmdTbGFzaCxcbiAgICAgICAgICAgICAgICAgICAgcHJldmlld1Byb3BzOiBwcmVyZW5kZXJNYW5pZmVzdC5wcmV2aWV3LFxuICAgICAgICAgICAgICAgICAgICBkZXBsb3ltZW50SWQ6IG5leHRDb25maWcuZGVwbG95bWVudElkLFxuICAgICAgICAgICAgICAgICAgICBlbmFibGVUYWludGluZzogbmV4dENvbmZpZy5leHBlcmltZW50YWwudGFpbnQsXG4gICAgICAgICAgICAgICAgICAgIGh0bWxMaW1pdGVkQm90czogbmV4dENvbmZpZy5odG1sTGltaXRlZEJvdHMsXG4gICAgICAgICAgICAgICAgICAgIGRldnRvb2xTZWdtZW50RXhwbG9yZXI6IG5leHRDb25maWcuZXhwZXJpbWVudGFsLmRldnRvb2xTZWdtZW50RXhwbG9yZXIsXG4gICAgICAgICAgICAgICAgICAgIHJlYWN0TWF4SGVhZGVyc0xlbmd0aDogbmV4dENvbmZpZy5yZWFjdE1heEhlYWRlcnNMZW5ndGgsXG4gICAgICAgICAgICAgICAgICAgIG11bHRpWm9uZURyYWZ0TW9kZSxcbiAgICAgICAgICAgICAgICAgICAgaW5jcmVtZW50YWxDYWNoZTogZ2V0UmVxdWVzdE1ldGEocmVxLCAnaW5jcmVtZW50YWxDYWNoZScpLFxuICAgICAgICAgICAgICAgICAgICBjYWNoZUxpZmVQcm9maWxlczogbmV4dENvbmZpZy5leHBlcmltZW50YWwuY2FjaGVMaWZlLFxuICAgICAgICAgICAgICAgICAgICBiYXNlUGF0aDogbmV4dENvbmZpZy5iYXNlUGF0aCxcbiAgICAgICAgICAgICAgICAgICAgc2VydmVyQWN0aW9uczogbmV4dENvbmZpZy5leHBlcmltZW50YWwuc2VydmVyQWN0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgLi4uaXNEZWJ1Z1N0YXRpY1NoZWxsIHx8IGlzRGVidWdEeW5hbWljQWNjZXNzZXMgPyB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuZXh0RXhwb3J0OiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydHNEeW5hbWljUmVzcG9uc2U6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNTdGF0aWNHZW5lcmF0aW9uOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNSZXZhbGlkYXRlOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNEZWJ1Z0R5bmFtaWNBY2Nlc3NlczogaXNEZWJ1Z0R5bmFtaWNBY2Nlc3Nlc1xuICAgICAgICAgICAgICAgICAgICB9IDoge30sXG4gICAgICAgICAgICAgICAgICAgIGV4cGVyaW1lbnRhbDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgaXNSb3V0ZVBQUkVuYWJsZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBleHBpcmVUaW1lOiBuZXh0Q29uZmlnLmV4cGlyZVRpbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFsZVRpbWVzOiBuZXh0Q29uZmlnLmV4cGVyaW1lbnRhbC5zdGFsZVRpbWVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGVDb21wb25lbnRzOiBCb29sZWFuKG5leHRDb25maWcuZXhwZXJpbWVudGFsLmNhY2hlQ29tcG9uZW50cyksXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGllbnRTZWdtZW50Q2FjaGU6IEJvb2xlYW4obmV4dENvbmZpZy5leHBlcmltZW50YWwuY2xpZW50U2VnbWVudENhY2hlKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsaWVudFBhcmFtUGFyc2luZzogQm9vbGVhbihuZXh0Q29uZmlnLmV4cGVyaW1lbnRhbC5jbGllbnRQYXJhbVBhcnNpbmcpLFxuICAgICAgICAgICAgICAgICAgICAgICAgZHluYW1pY09uSG92ZXI6IEJvb2xlYW4obmV4dENvbmZpZy5leHBlcmltZW50YWwuZHluYW1pY09uSG92ZXIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW5saW5lQ3NzOiBCb29sZWFuKG5leHRDb25maWcuZXhwZXJpbWVudGFsLmlubGluZUNzcyksXG4gICAgICAgICAgICAgICAgICAgICAgICBhdXRoSW50ZXJydXB0czogQm9vbGVhbihuZXh0Q29uZmlnLmV4cGVyaW1lbnRhbC5hdXRoSW50ZXJydXB0cyksXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGllbnRUcmFjZU1ldGFkYXRhOiBuZXh0Q29uZmlnLmV4cGVyaW1lbnRhbC5jbGllbnRUcmFjZU1ldGFkYXRhIHx8IFtdXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIHdhaXRVbnRpbDogY3R4LndhaXRVbnRpbCxcbiAgICAgICAgICAgICAgICAgICAgb25DbG9zZTogKGNiKT0+e1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzLm9uKCdjbG9zZScsIGNiKTtcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgb25BZnRlclRhc2tFcnJvcjogKCk9Pnt9LFxuICAgICAgICAgICAgICAgICAgICBvbkluc3RydW1lbnRhdGlvblJlcXVlc3RFcnJvcjogKGVycm9yLCBfcmVxdWVzdCwgZXJyb3JDb250ZXh0KT0+cm91dGVNb2R1bGUub25SZXF1ZXN0RXJyb3IocmVxLCBlcnJvciwgZXJyb3JDb250ZXh0LCByb3V0ZXJTZXJ2ZXJDb250ZXh0KSxcbiAgICAgICAgICAgICAgICAgICAgZXJyOiBnZXRSZXF1ZXN0TWV0YShyZXEsICdpbnZva2VFcnJvcicpLFxuICAgICAgICAgICAgICAgICAgICBkZXY6IHJvdXRlTW9kdWxlLmlzRGV2XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGludm9rZVJvdXRlTW9kdWxlKHNwYW4sIGNvbnRleHQpO1xuICAgICAgICAgICAgY29uc3QgeyBtZXRhZGF0YSB9ID0gcmVzdWx0O1xuICAgICAgICAgICAgY29uc3QgeyBjYWNoZUNvbnRyb2wsIGhlYWRlcnMgPSB7fSwgLy8gQWRkIGFueSBmZXRjaCB0YWdzIHRoYXQgd2VyZSBvbiB0aGUgcGFnZSB0byB0aGUgcmVzcG9uc2UgaGVhZGVycy5cbiAgICAgICAgICAgIGZldGNoVGFnczogY2FjaGVUYWdzIH0gPSBtZXRhZGF0YTtcbiAgICAgICAgICAgIGlmIChjYWNoZVRhZ3MpIHtcbiAgICAgICAgICAgICAgICBoZWFkZXJzW05FWFRfQ0FDSEVfVEFHU19IRUFERVJdID0gY2FjaGVUYWdzO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gUHVsbCBhbnkgZmV0Y2ggbWV0cmljcyBmcm9tIHRoZSByZW5kZXIgb250byB0aGUgcmVxdWVzdC5cbiAgICAgICAgICAgIDtcbiAgICAgICAgICAgIHJlcS5mZXRjaE1ldHJpY3MgPSBtZXRhZGF0YS5mZXRjaE1ldHJpY3M7XG4gICAgICAgICAgICAvLyB3ZSBkb24ndCB0aHJvdyBzdGF0aWMgdG8gZHluYW1pYyBlcnJvcnMgaW4gZGV2IGFzIGlzU1NHXG4gICAgICAgICAgICAvLyBpcyBhIGJlc3QgZ3Vlc3MgaW4gZGV2IHNpbmNlIHdlIGRvbid0IGhhdmUgdGhlIHByZXJlbmRlciBwYXNzXG4gICAgICAgICAgICAvLyB0byBrbm93IHdoZXRoZXIgdGhlIHBhdGggaXMgYWN0dWFsbHkgc3RhdGljIG9yIG5vdFxuICAgICAgICAgICAgaWYgKGlzU1NHICYmIChjYWNoZUNvbnRyb2wgPT0gbnVsbCA/IHZvaWQgMCA6IGNhY2hlQ29udHJvbC5yZXZhbGlkYXRlKSA9PT0gMCAmJiAhcm91dGVNb2R1bGUuaXNEZXYgJiYgIWlzUm91dGVQUFJFbmFibGVkKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc3RhdGljQmFpbG91dEluZm8gPSBtZXRhZGF0YS5zdGF0aWNCYWlsb3V0SW5mbztcbiAgICAgICAgICAgICAgICBjb25zdCBlcnIgPSBPYmplY3QuZGVmaW5lUHJvcGVydHkobmV3IEVycm9yKGBQYWdlIGNoYW5nZWQgZnJvbSBzdGF0aWMgdG8gZHluYW1pYyBhdCBydW50aW1lICR7cmVzb2x2ZWRQYXRobmFtZX0keyhzdGF0aWNCYWlsb3V0SW5mbyA9PSBudWxsID8gdm9pZCAwIDogc3RhdGljQmFpbG91dEluZm8uZGVzY3JpcHRpb24pID8gYCwgcmVhc29uOiAke3N0YXRpY0JhaWxvdXRJbmZvLmRlc2NyaXB0aW9ufWAgOiBgYH1gICsgYFxcbnNlZSBtb3JlIGhlcmUgaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvbWVzc2FnZXMvYXBwLXN0YXRpYy10by1keW5hbWljLWVycm9yYCksIFwiX19ORVhUX0VSUk9SX0NPREVcIiwge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogXCJFMTMyXCIsXG4gICAgICAgICAgICAgICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBpZiAoc3RhdGljQmFpbG91dEluZm8gPT0gbnVsbCA/IHZvaWQgMCA6IHN0YXRpY0JhaWxvdXRJbmZvLnN0YWNrKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0YWNrID0gc3RhdGljQmFpbG91dEluZm8uc3RhY2s7XG4gICAgICAgICAgICAgICAgICAgIGVyci5zdGFjayA9IGVyci5tZXNzYWdlICsgc3RhY2suc3Vic3RyaW5nKHN0YWNrLmluZGV4T2YoJ1xcbicpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB2YWx1ZToge1xuICAgICAgICAgICAgICAgICAgICBraW5kOiBDYWNoZWRSb3V0ZUtpbmQuQVBQX1BBR0UsXG4gICAgICAgICAgICAgICAgICAgIGh0bWw6IHJlc3VsdCxcbiAgICAgICAgICAgICAgICAgICAgaGVhZGVycyxcbiAgICAgICAgICAgICAgICAgICAgcnNjRGF0YTogbWV0YWRhdGEuZmxpZ2h0RGF0YSxcbiAgICAgICAgICAgICAgICAgICAgcG9zdHBvbmVkOiBtZXRhZGF0YS5wb3N0cG9uZWQsXG4gICAgICAgICAgICAgICAgICAgIHN0YXR1czogbWV0YWRhdGEuc3RhdHVzQ29kZSxcbiAgICAgICAgICAgICAgICAgICAgc2VnbWVudERhdGE6IG1ldGFkYXRhLnNlZ21lbnREYXRhXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBjYWNoZUNvbnRyb2xcbiAgICAgICAgICAgIH07XG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IHJlc3BvbnNlR2VuZXJhdG9yID0gYXN5bmMgKHsgaGFzUmVzb2x2ZWQsIHByZXZpb3VzQ2FjaGVFbnRyeSwgaXNSZXZhbGlkYXRpbmcsIHNwYW4gfSk9PntcbiAgICAgICAgICAgIGNvbnN0IGlzUHJvZHVjdGlvbiA9IHJvdXRlTW9kdWxlLmlzRGV2ID09PSBmYWxzZTtcbiAgICAgICAgICAgIGNvbnN0IGRpZFJlc3BvbmQgPSBoYXNSZXNvbHZlZCB8fCByZXMud3JpdGFibGVFbmRlZDtcbiAgICAgICAgICAgIC8vIHNraXAgb24tZGVtYW5kIHJldmFsaWRhdGUgaWYgY2FjaGUgaXMgbm90IHByZXNlbnQgYW5kXG4gICAgICAgICAgICAvLyByZXZhbGlkYXRlLWlmLWdlbmVyYXRlZCBpcyBzZXRcbiAgICAgICAgICAgIGlmIChpc09uRGVtYW5kUmV2YWxpZGF0ZSAmJiByZXZhbGlkYXRlT25seUdlbmVyYXRlZCAmJiAhcHJldmlvdXNDYWNoZUVudHJ5ICYmICFtaW5pbWFsTW9kZSkge1xuICAgICAgICAgICAgICAgIGlmIChyb3V0ZXJTZXJ2ZXJDb250ZXh0ID09IG51bGwgPyB2b2lkIDAgOiByb3V0ZXJTZXJ2ZXJDb250ZXh0LnJlbmRlcjQwNCkge1xuICAgICAgICAgICAgICAgICAgICBhd2FpdCByb3V0ZXJTZXJ2ZXJDb250ZXh0LnJlbmRlcjQwNChyZXEsIHJlcyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSA0MDQ7XG4gICAgICAgICAgICAgICAgICAgIHJlcy5lbmQoJ1RoaXMgcGFnZSBjb3VsZCBub3QgYmUgZm91bmQnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsZXQgZmFsbGJhY2tNb2RlO1xuICAgICAgICAgICAgaWYgKHByZXJlbmRlckluZm8pIHtcbiAgICAgICAgICAgICAgICBmYWxsYmFja01vZGUgPSBwYXJzZUZhbGxiYWNrRmllbGQocHJlcmVuZGVySW5mby5mYWxsYmFjayk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBXaGVuIHNlcnZpbmcgYSBIVE1MIGJvdCByZXF1ZXN0LCB3ZSB3YW50IHRvIHNlcnZlIGEgYmxvY2tpbmcgcmVuZGVyIGFuZFxuICAgICAgICAgICAgLy8gbm90IHRoZSBwcmVyZW5kZXJlZCBwYWdlLiBUaGlzIGVuc3VyZXMgdGhhdCB0aGUgY29ycmVjdCBjb250ZW50IGlzIHNlcnZlZFxuICAgICAgICAgICAgLy8gdG8gdGhlIGJvdCBpbiB0aGUgaGVhZC5cbiAgICAgICAgICAgIGlmIChmYWxsYmFja01vZGUgPT09IEZhbGxiYWNrTW9kZS5QUkVSRU5ERVIgJiYgaXNCb3QodXNlckFnZW50KSkge1xuICAgICAgICAgICAgICAgIGlmICghaXNSb3V0ZVBQUkVuYWJsZWQgfHwgaXNIdG1sQm90KSB7XG4gICAgICAgICAgICAgICAgICAgIGZhbGxiYWNrTW9kZSA9IEZhbGxiYWNrTW9kZS5CTE9DS0lOR19TVEFUSUNfUkVOREVSO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICgocHJldmlvdXNDYWNoZUVudHJ5ID09IG51bGwgPyB2b2lkIDAgOiBwcmV2aW91c0NhY2hlRW50cnkuaXNTdGFsZSkgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgaXNPbkRlbWFuZFJldmFsaWRhdGUgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gVE9ETzogYWRhcHQgZm9yIFBQUlxuICAgICAgICAgICAgLy8gb25seSBhbGxvdyBvbi1kZW1hbmQgcmV2YWxpZGF0ZSBmb3IgZmFsbGJhY2s6IHRydWUvYmxvY2tpbmdcbiAgICAgICAgICAgIC8vIG9yIGZvciBwcmVyZW5kZXJlZCBmYWxsYmFjazogZmFsc2UgcGF0aHNcbiAgICAgICAgICAgIGlmIChpc09uRGVtYW5kUmV2YWxpZGF0ZSAmJiAoZmFsbGJhY2tNb2RlICE9PSBGYWxsYmFja01vZGUuTk9UX0ZPVU5EIHx8IHByZXZpb3VzQ2FjaGVFbnRyeSkpIHtcbiAgICAgICAgICAgICAgICBmYWxsYmFja01vZGUgPSBGYWxsYmFja01vZGUuQkxPQ0tJTkdfU1RBVElDX1JFTkRFUjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghbWluaW1hbE1vZGUgJiYgZmFsbGJhY2tNb2RlICE9PSBGYWxsYmFja01vZGUuQkxPQ0tJTkdfU1RBVElDX1JFTkRFUiAmJiBzdGF0aWNQYXRoS2V5ICYmICFkaWRSZXNwb25kICYmICFpc0RyYWZ0TW9kZSAmJiBwYWdlSXNEeW5hbWljICYmIChpc1Byb2R1Y3Rpb24gfHwgIWlzUHJlcmVuZGVyZWQpKSB7XG4gICAgICAgICAgICAgICAgLy8gaWYgdGhlIHBhZ2UgaGFzIGR5bmFtaWNQYXJhbXM6IGZhbHNlIGFuZCB0aGlzIHBhdGhuYW1lIHdhc24ndFxuICAgICAgICAgICAgICAgIC8vIHByZXJlbmRlcmVkIHRyaWdnZXIgdGhlIG5vIGZhbGxiYWNrIGhhbmRsaW5nXG4gICAgICAgICAgICAgICAgaWYgKC8vIEluIGRldmVsb3BtZW50LCBmYWxsIHRocm91Z2ggdG8gcmVuZGVyIHRvIGhhbmRsZSBtaXNzaW5nXG4gICAgICAgICAgICAgICAgLy8gZ2V0U3RhdGljUGF0aHMuXG4gICAgICAgICAgICAgICAgKGlzUHJvZHVjdGlvbiB8fCBwcmVyZW5kZXJJbmZvKSAmJiAvLyBXaGVuIGZhbGxiYWNrIGlzbid0IHByZXNlbnQsIGFib3J0IHRoaXMgcmVuZGVyIHNvIHdlIDQwNFxuICAgICAgICAgICAgICAgIGZhbGxiYWNrTW9kZSA9PT0gRmFsbGJhY2tNb2RlLk5PVF9GT1VORCkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgTm9GYWxsYmFja0Vycm9yKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGxldCBmYWxsYmFja1Jlc3BvbnNlO1xuICAgICAgICAgICAgICAgIGlmIChpc1JvdXRlUFBSRW5hYmxlZCAmJiAhaXNSU0NSZXF1ZXN0KSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNhY2hlS2V5ID0gdHlwZW9mIChwcmVyZW5kZXJJbmZvID09IG51bGwgPyB2b2lkIDAgOiBwcmVyZW5kZXJJbmZvLmZhbGxiYWNrKSA9PT0gJ3N0cmluZycgPyBwcmVyZW5kZXJJbmZvLmZhbGxiYWNrIDogaXNQcm9kdWN0aW9uID8gbm9ybWFsaXplZFNyY1BhZ2UgOiBudWxsO1xuICAgICAgICAgICAgICAgICAgICAvLyBXZSB1c2UgdGhlIHJlc3BvbnNlIGNhY2hlIGhlcmUgdG8gaGFuZGxlIHRoZSByZXZhbGlkYXRpb24gYW5kXG4gICAgICAgICAgICAgICAgICAgIC8vIG1hbmFnZW1lbnQgb2YgdGhlIGZhbGxiYWNrIHNoZWxsLlxuICAgICAgICAgICAgICAgICAgICBmYWxsYmFja1Jlc3BvbnNlID0gYXdhaXQgcm91dGVNb2R1bGUuaGFuZGxlUmVzcG9uc2Uoe1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGVLZXksXG4gICAgICAgICAgICAgICAgICAgICAgICByZXEsXG4gICAgICAgICAgICAgICAgICAgICAgICBuZXh0Q29uZmlnLFxuICAgICAgICAgICAgICAgICAgICAgICAgcm91dGVLaW5kOiBSb3V0ZUtpbmQuQVBQX1BBR0UsXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0ZhbGxiYWNrOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJlcmVuZGVyTWFuaWZlc3QsXG4gICAgICAgICAgICAgICAgICAgICAgICBpc1JvdXRlUFBSRW5hYmxlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlR2VuZXJhdG9yOiBhc3luYyAoKT0+ZG9SZW5kZXIoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGFuLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBXZSBwYXNzIGB1bmRlZmluZWRgIGFzIHJlbmRlcmluZyBhIGZhbGxiYWNrIGlzbid0IHJlc3VtZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaGVyZS5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zdHBvbmVkOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbGxiYWNrUm91dGVQYXJhbXM6IC8vIElmIHdlJ3JlIGluIHByb2R1Y3Rpb24gb3Igd2UncmUgZGVidWdnaW5nIHRoZSBmYWxsYmFja1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzaGVsbCB0aGVuIHdlIHNob3VsZCBwb3N0cG9uZSB3aGVuIGR5bmFtaWMgcGFyYW1zIGFyZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhY2Nlc3NlZC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNQcm9kdWN0aW9uIHx8IGlzRGVidWdGYWxsYmFja1NoZWxsID8gZ2V0RmFsbGJhY2tSb3V0ZVBhcmFtcyhub3JtYWxpemVkU3JjUGFnZSkgOiBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICB3YWl0VW50aWw6IGN0eC53YWl0VW50aWxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZSBmYWxsYmFjayByZXNwb25zZSB3YXMgc2V0IHRvIG51bGwsIHRoZW4gd2Ugc2hvdWxkIHJldHVybiBudWxsLlxuICAgICAgICAgICAgICAgICAgICBpZiAoZmFsbGJhY2tSZXNwb25zZSA9PT0gbnVsbCkgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICAgICAgICAgIC8vIE90aGVyd2lzZSwgaWYgd2UgZGlkIGdldCBhIGZhbGxiYWNrIHJlc3BvbnNlLCB3ZSBzaG91bGQgcmV0dXJuIGl0LlxuICAgICAgICAgICAgICAgICAgICBpZiAoZmFsbGJhY2tSZXNwb25zZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVtb3ZlIHRoZSBjYWNoZSBjb250cm9sIGZyb20gdGhlIHJlc3BvbnNlIHRvIHByZXZlbnQgaXQgZnJvbSBiZWluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gdXNlZCBpbiB0aGUgc3Vycm91bmRpbmcgY2FjaGUuXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgZmFsbGJhY2tSZXNwb25zZS5jYWNoZUNvbnRyb2w7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsbGJhY2tSZXNwb25zZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIE9ubHkgcmVxdWVzdHMgdGhhdCBhcmVuJ3QgcmV2YWxpZGF0aW5nIGNhbiBiZSByZXN1bWVkLiBJZiB3ZSBoYXZlIHRoZVxuICAgICAgICAgICAgLy8gbWluaW1hbCBwb3N0cG9uZWQgZGF0YSwgdGhlbiB3ZSBzaG91bGQgcmVzdW1lIHRoZSByZW5kZXIgd2l0aCBpdC5cbiAgICAgICAgICAgIGNvbnN0IHBvc3Rwb25lZCA9ICFpc09uRGVtYW5kUmV2YWxpZGF0ZSAmJiAhaXNSZXZhbGlkYXRpbmcgJiYgbWluaW1hbFBvc3Rwb25lZCA/IG1pbmltYWxQb3N0cG9uZWQgOiB1bmRlZmluZWQ7XG4gICAgICAgICAgICAvLyBXaGVuIHdlJ3JlIGluIG1pbmltYWwgbW9kZSwgaWYgd2UncmUgdHJ5aW5nIHRvIGRlYnVnIHRoZSBzdGF0aWMgc2hlbGwsXG4gICAgICAgICAgICAvLyB3ZSBzaG91bGQganVzdCByZXR1cm4gbm90aGluZyBpbnN0ZWFkIG9mIHJlc3VtaW5nIHRoZSBkeW5hbWljIHJlbmRlci5cbiAgICAgICAgICAgIGlmICgoaXNEZWJ1Z1N0YXRpY1NoZWxsIHx8IGlzRGVidWdEeW5hbWljQWNjZXNzZXMpICYmIHR5cGVvZiBwb3N0cG9uZWQgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgY2FjaGVDb250cm9sOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXZhbGlkYXRlOiAxLFxuICAgICAgICAgICAgICAgICAgICAgICAgZXhwaXJlOiB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGtpbmQ6IENhY2hlZFJvdXRlS2luZC5QQUdFUyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGh0bWw6IFJlbmRlclJlc3VsdC5FTVBUWSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2VEYXRhOiB7fSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1czogdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gSWYgdGhpcyBpcyBhIGR5bmFtaWMgcm91dGUgd2l0aCBQUFIgZW5hYmxlZCBhbmQgdGhlIGRlZmF1bHQgcm91dGVcbiAgICAgICAgICAgIC8vIG1hdGNoZXMgd2VyZSBzZXQsIHRoZW4gd2Ugc2hvdWxkIHBhc3MgdGhlIGZhbGxiYWNrIHJvdXRlIHBhcmFtcyB0b1xuICAgICAgICAgICAgLy8gdGhlIHJlbmRlcmVyIGFzIHRoaXMgaXMgYSBmYWxsYmFjayByZXZhbGlkYXRpb24gcmVxdWVzdC5cbiAgICAgICAgICAgIGNvbnN0IGZhbGxiYWNrUm91dGVQYXJhbXMgPSBwYWdlSXNEeW5hbWljICYmIGlzUm91dGVQUFJFbmFibGVkICYmIChnZXRSZXF1ZXN0TWV0YShyZXEsICdyZW5kZXJGYWxsYmFja1NoZWxsJykgfHwgaXNEZWJ1Z0ZhbGxiYWNrU2hlbGwpID8gZ2V0RmFsbGJhY2tSb3V0ZVBhcmFtcyhwYXRobmFtZSkgOiBudWxsO1xuICAgICAgICAgICAgLy8gUGVyZm9ybSB0aGUgcmVuZGVyLlxuICAgICAgICAgICAgcmV0dXJuIGRvUmVuZGVyKHtcbiAgICAgICAgICAgICAgICBzcGFuLFxuICAgICAgICAgICAgICAgIHBvc3Rwb25lZCxcbiAgICAgICAgICAgICAgICBmYWxsYmFja1JvdXRlUGFyYW1zXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgaGFuZGxlUmVzcG9uc2UgPSBhc3luYyAoc3Bhbik9PntcbiAgICAgICAgICAgIHZhciBfY2FjaGVFbnRyeV92YWx1ZSwgX2NhY2hlZERhdGFfaGVhZGVycztcbiAgICAgICAgICAgIGNvbnN0IGNhY2hlRW50cnkgPSBhd2FpdCByb3V0ZU1vZHVsZS5oYW5kbGVSZXNwb25zZSh7XG4gICAgICAgICAgICAgICAgY2FjaGVLZXk6IHNzZ0NhY2hlS2V5LFxuICAgICAgICAgICAgICAgIHJlc3BvbnNlR2VuZXJhdG9yOiAoYyk9PnJlc3BvbnNlR2VuZXJhdG9yKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNwYW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5jXG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIHJvdXRlS2luZDogUm91dGVLaW5kLkFQUF9QQUdFLFxuICAgICAgICAgICAgICAgIGlzT25EZW1hbmRSZXZhbGlkYXRlLFxuICAgICAgICAgICAgICAgIGlzUm91dGVQUFJFbmFibGVkLFxuICAgICAgICAgICAgICAgIHJlcSxcbiAgICAgICAgICAgICAgICBuZXh0Q29uZmlnLFxuICAgICAgICAgICAgICAgIHByZXJlbmRlck1hbmlmZXN0LFxuICAgICAgICAgICAgICAgIHdhaXRVbnRpbDogY3R4LndhaXRVbnRpbFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAoaXNEcmFmdE1vZGUpIHtcbiAgICAgICAgICAgICAgICByZXMuc2V0SGVhZGVyKCdDYWNoZS1Db250cm9sJywgJ3ByaXZhdGUsIG5vLWNhY2hlLCBuby1zdG9yZSwgbWF4LWFnZT0wLCBtdXN0LXJldmFsaWRhdGUnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIEluIGRldiwgd2Ugc2hvdWxkIG5vdCBjYWNoZSBwYWdlcyBmb3IgYW55IHJlYXNvbi5cbiAgICAgICAgICAgIGlmIChyb3V0ZU1vZHVsZS5pc0Rldikge1xuICAgICAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NhY2hlLUNvbnRyb2wnLCAnbm8tc3RvcmUsIG11c3QtcmV2YWxpZGF0ZScpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFjYWNoZUVudHJ5KSB7XG4gICAgICAgICAgICAgICAgaWYgKHNzZ0NhY2hlS2V5KSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIEEgY2FjaGUgZW50cnkgbWlnaHQgbm90IGJlIGdlbmVyYXRlZCBpZiBhIHJlc3BvbnNlIGlzIHdyaXR0ZW5cbiAgICAgICAgICAgICAgICAgICAgLy8gaW4gYGdldEluaXRpYWxQcm9wc2Agb3IgYGdldFNlcnZlclNpZGVQcm9wc2AsIGJ1dCB0aG9zZSBzaG91bGRuJ3RcbiAgICAgICAgICAgICAgICAgICAgLy8gaGF2ZSBhIGNhY2hlIGtleS4gSWYgd2UgZG8gaGF2ZSBhIGNhY2hlIGtleSBidXQgd2UgZG9uJ3QgZW5kIHVwXG4gICAgICAgICAgICAgICAgICAgIC8vIHdpdGggYSBjYWNoZSBlbnRyeSwgdGhlbiBlaXRoZXIgTmV4dC5qcyBvciB0aGUgYXBwbGljYXRpb24gaGFzIGFcbiAgICAgICAgICAgICAgICAgICAgLy8gYnVnIHRoYXQgbmVlZHMgZml4aW5nLlxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBPYmplY3QuZGVmaW5lUHJvcGVydHkobmV3IEVycm9yKCdpbnZhcmlhbnQ6IGNhY2hlIGVudHJ5IHJlcXVpcmVkIGJ1dCBub3QgZ2VuZXJhdGVkJyksIFwiX19ORVhUX0VSUk9SX0NPREVcIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IFwiRTYyXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoKChfY2FjaGVFbnRyeV92YWx1ZSA9IGNhY2hlRW50cnkudmFsdWUpID09IG51bGwgPyB2b2lkIDAgOiBfY2FjaGVFbnRyeV92YWx1ZS5raW5kKSAhPT0gQ2FjaGVkUm91dGVLaW5kLkFQUF9QQUdFKSB7XG4gICAgICAgICAgICAgICAgdmFyIF9jYWNoZUVudHJ5X3ZhbHVlMTtcbiAgICAgICAgICAgICAgICB0aHJvdyBPYmplY3QuZGVmaW5lUHJvcGVydHkobmV3IEVycm9yKGBJbnZhcmlhbnQgYXBwLXBhZ2UgaGFuZGxlciByZWNlaXZlZCBpbnZhbGlkIGNhY2hlIGVudHJ5ICR7KF9jYWNoZUVudHJ5X3ZhbHVlMSA9IGNhY2hlRW50cnkudmFsdWUpID09IG51bGwgPyB2b2lkIDAgOiBfY2FjaGVFbnRyeV92YWx1ZTEua2luZH1gKSwgXCJfX05FWFRfRVJST1JfQ09ERVwiLCB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBcIkU3MDdcIixcbiAgICAgICAgICAgICAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgZGlkUG9zdHBvbmUgPSB0eXBlb2YgY2FjaGVFbnRyeS52YWx1ZS5wb3N0cG9uZWQgPT09ICdzdHJpbmcnO1xuICAgICAgICAgICAgaWYgKGlzU1NHICYmIC8vIFdlIGRvbid0IHdhbnQgdG8gc2VuZCBhIGNhY2hlIGhlYWRlciBmb3IgcmVxdWVzdHMgdGhhdCBjb250YWluIGR5bmFtaWNcbiAgICAgICAgICAgIC8vIGRhdGEuIElmIHRoaXMgaXMgYSBEeW5hbWljIFJTQyByZXF1ZXN0IG9yIHdhc24ndCBhIFByZWZldGNoIFJTQ1xuICAgICAgICAgICAgLy8gcmVxdWVzdCwgdGhlbiB3ZSBzaG91bGQgc2V0IHRoZSBjYWNoZSBoZWFkZXIuXG4gICAgICAgICAgICAhaXNEeW5hbWljUlNDUmVxdWVzdCAmJiAoIWRpZFBvc3Rwb25lIHx8IGlzUHJlZmV0Y2hSU0NSZXF1ZXN0KSkge1xuICAgICAgICAgICAgICAgIGlmICghbWluaW1hbE1vZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gc2V0IHgtbmV4dGpzLWNhY2hlIGhlYWRlciB0byBtYXRjaCB0aGUgaGVhZGVyXG4gICAgICAgICAgICAgICAgICAgIC8vIHdlIHNldCBmb3IgdGhlIGltYWdlLW9wdGltaXplclxuICAgICAgICAgICAgICAgICAgICByZXMuc2V0SGVhZGVyKCd4LW5leHRqcy1jYWNoZScsIGlzT25EZW1hbmRSZXZhbGlkYXRlID8gJ1JFVkFMSURBVEVEJyA6IGNhY2hlRW50cnkuaXNNaXNzID8gJ01JU1MnIDogY2FjaGVFbnRyeS5pc1N0YWxlID8gJ1NUQUxFJyA6ICdISVQnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gU2V0IGEgaGVhZGVyIHVzZWQgYnkgdGhlIGNsaWVudCByb3V0ZXIgdG8gc2lnbmFsIHRoZSByZXNwb25zZSBpcyBzdGF0aWNcbiAgICAgICAgICAgICAgICAvLyBhbmQgc2hvdWxkIHJlc3BlY3QgdGhlIGBzdGF0aWNgIGNhY2hlIHN0YWxlVGltZSB2YWx1ZS5cbiAgICAgICAgICAgICAgICByZXMuc2V0SGVhZGVyKE5FWFRfSVNfUFJFUkVOREVSX0hFQURFUiwgJzEnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHsgdmFsdWU6IGNhY2hlZERhdGEgfSA9IGNhY2hlRW50cnk7XG4gICAgICAgICAgICAvLyBDb2VyY2UgdGhlIGNhY2hlIGNvbnRyb2wgcGFyYW1ldGVyIGZyb20gdGhlIHJlbmRlci5cbiAgICAgICAgICAgIGxldCBjYWNoZUNvbnRyb2w7XG4gICAgICAgICAgICAvLyBJZiB0aGlzIGlzIGEgcmVzdW1lIHJlcXVlc3QgaW4gbWluaW1hbCBtb2RlIGl0IGlzIHN0cmVhbWVkIHdpdGggZHluYW1pY1xuICAgICAgICAgICAgLy8gY29udGVudCBhbmQgc2hvdWxkIG5vdCBiZSBjYWNoZWQuXG4gICAgICAgICAgICBpZiAobWluaW1hbFBvc3Rwb25lZCkge1xuICAgICAgICAgICAgICAgIGNhY2hlQ29udHJvbCA9IHtcbiAgICAgICAgICAgICAgICAgICAgcmV2YWxpZGF0ZTogMCxcbiAgICAgICAgICAgICAgICAgICAgZXhwaXJlOiB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtaW5pbWFsTW9kZSAmJiBpc1JTQ1JlcXVlc3QgJiYgIWlzUHJlZmV0Y2hSU0NSZXF1ZXN0ICYmIGlzUm91dGVQUFJFbmFibGVkKSB7XG4gICAgICAgICAgICAgICAgY2FjaGVDb250cm9sID0ge1xuICAgICAgICAgICAgICAgICAgICByZXZhbGlkYXRlOiAwLFxuICAgICAgICAgICAgICAgICAgICBleHBpcmU6IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9IGVsc2UgaWYgKCFyb3V0ZU1vZHVsZS5pc0Rldikge1xuICAgICAgICAgICAgICAgIC8vIElmIHRoaXMgaXMgYSBwcmV2aWV3IG1vZGUgcmVxdWVzdCwgd2Ugc2hvdWxkbid0IGNhY2hlIGl0XG4gICAgICAgICAgICAgICAgaWYgKGlzRHJhZnRNb2RlKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhY2hlQ29udHJvbCA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldmFsaWRhdGU6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICBleHBpcmU6IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIWlzU1NHKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghcmVzLmdldEhlYWRlcignQ2FjaGUtQ29udHJvbCcpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYWNoZUNvbnRyb2wgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV2YWxpZGF0ZTogMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBpcmU6IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoY2FjaGVFbnRyeS5jYWNoZUNvbnRyb2wpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhlIGNhY2hlIGVudHJ5IGhhcyBhIGNhY2hlIGNvbnRyb2wgd2l0aCBhIHJldmFsaWRhdGUgdmFsdWUgdGhhdCdzXG4gICAgICAgICAgICAgICAgICAgIC8vIGEgbnVtYmVyLCB1c2UgaXQuXG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgY2FjaGVFbnRyeS5jYWNoZUNvbnRyb2wucmV2YWxpZGF0ZSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBfY2FjaGVFbnRyeV9jYWNoZUNvbnRyb2w7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2FjaGVFbnRyeS5jYWNoZUNvbnRyb2wucmV2YWxpZGF0ZSA8IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBPYmplY3QuZGVmaW5lUHJvcGVydHkobmV3IEVycm9yKGBJbnZhbGlkIHJldmFsaWRhdGUgY29uZmlndXJhdGlvbiBwcm92aWRlZDogJHtjYWNoZUVudHJ5LmNhY2hlQ29udHJvbC5yZXZhbGlkYXRlfSA8IDFgKSwgXCJfX05FWFRfRVJST1JfQ09ERVwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBcIkUyMlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBjYWNoZUNvbnRyb2wgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV2YWxpZGF0ZTogY2FjaGVFbnRyeS5jYWNoZUNvbnRyb2wucmV2YWxpZGF0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBpcmU6ICgoX2NhY2hlRW50cnlfY2FjaGVDb250cm9sID0gY2FjaGVFbnRyeS5jYWNoZUNvbnRyb2wpID09IG51bGwgPyB2b2lkIDAgOiBfY2FjaGVFbnRyeV9jYWNoZUNvbnRyb2wuZXhwaXJlKSA/PyBuZXh0Q29uZmlnLmV4cGlyZVRpbWVcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYWNoZUNvbnRyb2wgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV2YWxpZGF0ZTogQ0FDSEVfT05FX1lFQVIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwaXJlOiB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYWNoZUVudHJ5LmNhY2hlQ29udHJvbCA9IGNhY2hlQ29udHJvbDtcbiAgICAgICAgICAgIGlmICh0eXBlb2Ygc2VnbWVudFByZWZldGNoSGVhZGVyID09PSAnc3RyaW5nJyAmJiAoY2FjaGVkRGF0YSA9PSBudWxsID8gdm9pZCAwIDogY2FjaGVkRGF0YS5raW5kKSA9PT0gQ2FjaGVkUm91dGVLaW5kLkFQUF9QQUdFICYmIGNhY2hlZERhdGEuc2VnbWVudERhdGEpIHtcbiAgICAgICAgICAgICAgICB2YXIgX2NhY2hlZERhdGFfaGVhZGVyczE7XG4gICAgICAgICAgICAgICAgLy8gVGhpcyBpcyBhIHByZWZldGNoIHJlcXVlc3QgaXNzdWVkIGJ5IHRoZSBjbGllbnQgU2VnbWVudCBDYWNoZS4gVGhlc2VcbiAgICAgICAgICAgICAgICAvLyBzaG91bGQgbmV2ZXIgcmVhY2ggdGhlIGFwcGxpY2F0aW9uIGxheWVyIChsYW1iZGEpLiBXZSBzaG91bGQgZWl0aGVyXG4gICAgICAgICAgICAgICAgLy8gcmVzcG9uZCBmcm9tIHRoZSBjYWNoZSAoSElUKSBvciByZXNwb25kIHdpdGggMjA0IE5vIENvbnRlbnQgKE1JU1MpLlxuICAgICAgICAgICAgICAgIC8vIFNldCBhIGhlYWRlciB0byBpbmRpY2F0ZSB0aGF0IFBQUiBpcyBlbmFibGVkIGZvciB0aGlzIHJvdXRlLiBUaGlzXG4gICAgICAgICAgICAgICAgLy8gbGV0cyB0aGUgY2xpZW50IGRpc3Rpbmd1aXNoIGJldHdlZW4gYSByZWd1bGFyIGNhY2hlIG1pc3MgYW5kIGEgY2FjaGVcbiAgICAgICAgICAgICAgICAvLyBtaXNzIGR1ZSB0byBQUFIgYmVpbmcgZGlzYWJsZWQuIEluIG90aGVyIGNvbnRleHRzIHRoaXMgaGVhZGVyIGlzIHVzZWRcbiAgICAgICAgICAgICAgICAvLyB0byBpbmRpY2F0ZSB0aGF0IHRoZSByZXNwb25zZSBjb250YWlucyBkeW5hbWljIGRhdGEsIGJ1dCBoZXJlIHdlJ3JlXG4gICAgICAgICAgICAgICAgLy8gb25seSB1c2luZyBpdCB0byBpbmRpY2F0ZSB0aGF0IHRoZSBmZWF0dXJlIGlzIGVuYWJsZWQg4oCUIHRoZSBzZWdtZW50XG4gICAgICAgICAgICAgICAgLy8gcmVzcG9uc2UgaXRzZWxmIGNvbnRhaW5zIHdoZXRoZXIgdGhlIGRhdGEgaXMgZHluYW1pYy5cbiAgICAgICAgICAgICAgICByZXMuc2V0SGVhZGVyKE5FWFRfRElEX1BPU1RQT05FX0hFQURFUiwgJzInKTtcbiAgICAgICAgICAgICAgICAvLyBBZGQgdGhlIGNhY2hlIHRhZ3MgaGVhZGVyIHRvIHRoZSByZXNwb25zZSBpZiBpdCBleGlzdHMgYW5kIHdlJ3JlIGluXG4gICAgICAgICAgICAgICAgLy8gbWluaW1hbCBtb2RlIHdoaWxlIHJlbmRlcmluZyBhIHN0YXRpYyBwYWdlLlxuICAgICAgICAgICAgICAgIGNvbnN0IHRhZ3MgPSAoX2NhY2hlZERhdGFfaGVhZGVyczEgPSBjYWNoZWREYXRhLmhlYWRlcnMpID09IG51bGwgPyB2b2lkIDAgOiBfY2FjaGVkRGF0YV9oZWFkZXJzMVtORVhUX0NBQ0hFX1RBR1NfSEVBREVSXTtcbiAgICAgICAgICAgICAgICBpZiAobWluaW1hbE1vZGUgJiYgaXNTU0cgJiYgdGFncyAmJiB0eXBlb2YgdGFncyA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzLnNldEhlYWRlcihORVhUX0NBQ0hFX1RBR1NfSEVBREVSLCB0YWdzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgbWF0Y2hlZFNlZ21lbnQgPSBjYWNoZWREYXRhLnNlZ21lbnREYXRhLmdldChzZWdtZW50UHJlZmV0Y2hIZWFkZXIpO1xuICAgICAgICAgICAgICAgIGlmIChtYXRjaGVkU2VnbWVudCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIENhY2hlIGhpdFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2VuZFJlbmRlclJlc3VsdCh7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXEsXG4gICAgICAgICAgICAgICAgICAgICAgICByZXMsXG4gICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0ZUV0YWdzOiBuZXh0Q29uZmlnLmdlbmVyYXRlRXRhZ3MsXG4gICAgICAgICAgICAgICAgICAgICAgICBwb3dlcmVkQnlIZWFkZXI6IG5leHRDb25maWcucG93ZXJlZEJ5SGVhZGVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0OiBSZW5kZXJSZXN1bHQuZnJvbVN0YXRpYyhtYXRjaGVkU2VnbWVudCwgUlNDX0NPTlRFTlRfVFlQRV9IRUFERVIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGVDb250cm9sOiBjYWNoZUVudHJ5LmNhY2hlQ29udHJvbFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gQ2FjaGUgbWlzcy4gRWl0aGVyIGEgY2FjaGUgZW50cnkgZm9yIHRoaXMgcm91dGUgaGFzIG5vdCBiZWVuIGdlbmVyYXRlZFxuICAgICAgICAgICAgICAgIC8vICh3aGljaCB0ZWNobmljYWxseSBzaG91bGQgbm90IGJlIHBvc3NpYmxlIHdoZW4gUFBSIGlzIGVuYWJsZWQsIGJlY2F1c2VcbiAgICAgICAgICAgICAgICAvLyBhdCBhIG1pbmltdW0gdGhlcmUgc2hvdWxkIGFsd2F5cyBiZSBhIGZhbGxiYWNrIGVudHJ5KSBvciB0aGVyZSdzIG5vXG4gICAgICAgICAgICAgICAgLy8gbWF0Y2ggZm9yIHRoZSByZXF1ZXN0ZWQgc2VnbWVudC4gUmVzcG9uZCB3aXRoIGEgMjA0IE5vIENvbnRlbnQuIFdlXG4gICAgICAgICAgICAgICAgLy8gZG9uJ3QgYm90aGVyIHRvIHJlc3BvbmQgd2l0aCA0MDQsIGJlY2F1c2UgdGhlc2UgcmVxdWVzdHMgYXJlIG9ubHlcbiAgICAgICAgICAgICAgICAvLyBpc3N1ZWQgYXMgcGFydCBvZiBhIHByZWZldGNoLlxuICAgICAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gMjA0O1xuICAgICAgICAgICAgICAgIHJldHVybiBzZW5kUmVuZGVyUmVzdWx0KHtcbiAgICAgICAgICAgICAgICAgICAgcmVxLFxuICAgICAgICAgICAgICAgICAgICByZXMsXG4gICAgICAgICAgICAgICAgICAgIGdlbmVyYXRlRXRhZ3M6IG5leHRDb25maWcuZ2VuZXJhdGVFdGFncyxcbiAgICAgICAgICAgICAgICAgICAgcG93ZXJlZEJ5SGVhZGVyOiBuZXh0Q29uZmlnLnBvd2VyZWRCeUhlYWRlcixcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0OiBSZW5kZXJSZXN1bHQuRU1QVFksXG4gICAgICAgICAgICAgICAgICAgIGNhY2hlQ29udHJvbDogY2FjaGVFbnRyeS5jYWNoZUNvbnRyb2xcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIElmIHRoZXJlJ3MgYSBjYWxsYmFjayBmb3IgYG9uQ2FjaGVFbnRyeWAsIGNhbGwgaXQgd2l0aCB0aGUgY2FjaGUgZW50cnlcbiAgICAgICAgICAgIC8vIGFuZCB0aGUgcmV2YWxpZGF0ZSBvcHRpb25zLlxuICAgICAgICAgICAgY29uc3Qgb25DYWNoZUVudHJ5ID0gZ2V0UmVxdWVzdE1ldGEocmVxLCAnb25DYWNoZUVudHJ5Jyk7XG4gICAgICAgICAgICBpZiAob25DYWNoZUVudHJ5KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZmluaXNoZWQgPSBhd2FpdCBvbkNhY2hlRW50cnkoe1xuICAgICAgICAgICAgICAgICAgICAuLi5jYWNoZUVudHJ5LFxuICAgICAgICAgICAgICAgICAgICAvLyBUT0RPOiByZW1vdmUgdGhpcyB3aGVuIHVwc3RyZWFtIGRvZXNuJ3RcbiAgICAgICAgICAgICAgICAgICAgLy8gYWx3YXlzIGV4cGVjdCB0aGlzIHZhbHVlIHRvIGJlIFwiUEFHRVwiXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5jYWNoZUVudHJ5LnZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAga2luZDogJ1BBR0UnXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgIHVybDogZ2V0UmVxdWVzdE1ldGEocmVxLCAnaW5pdFVSTCcpXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgaWYgKGZpbmlzaGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFRPRE86IG1heWJlIHdlIGhhdmUgdG8gZW5kIHRoZSByZXF1ZXN0P1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBJZiB0aGUgcmVxdWVzdCBoYXMgYSBwb3N0cG9uZWQgc3RhdGUgYW5kIGl0J3MgYSByZXN1bWUgcmVxdWVzdCB3ZVxuICAgICAgICAgICAgLy8gc2hvdWxkIGVycm9yLlxuICAgICAgICAgICAgaWYgKGRpZFBvc3Rwb25lICYmIG1pbmltYWxQb3N0cG9uZWQpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBPYmplY3QuZGVmaW5lUHJvcGVydHkobmV3IEVycm9yKCdJbnZhcmlhbnQ6IHBvc3Rwb25lZCBzdGF0ZSBzaG91bGQgbm90IGJlIHByZXNlbnQgb24gYSByZXN1bWUgcmVxdWVzdCcpLCBcIl9fTkVYVF9FUlJPUl9DT0RFXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IFwiRTM5NlwiLFxuICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoY2FjaGVkRGF0YS5oZWFkZXJzKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaGVhZGVycyA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uY2FjaGVkRGF0YS5oZWFkZXJzXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBpZiAoIW1pbmltYWxNb2RlIHx8ICFpc1NTRykge1xuICAgICAgICAgICAgICAgICAgICBkZWxldGUgaGVhZGVyc1tORVhUX0NBQ0hFX1RBR1NfSEVBREVSXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKGhlYWRlcnMpKXtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3VuZGVmaW5lZCcpIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgdiBvZiB2YWx1ZSl7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzLmFwcGVuZEhlYWRlcihrZXksIHYpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gdmFsdWUudG9TdHJpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcy5hcHBlbmRIZWFkZXIoa2V5LCB2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXMuYXBwZW5kSGVhZGVyKGtleSwgdmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gQWRkIHRoZSBjYWNoZSB0YWdzIGhlYWRlciB0byB0aGUgcmVzcG9uc2UgaWYgaXQgZXhpc3RzIGFuZCB3ZSdyZSBpblxuICAgICAgICAgICAgLy8gbWluaW1hbCBtb2RlIHdoaWxlIHJlbmRlcmluZyBhIHN0YXRpYyBwYWdlLlxuICAgICAgICAgICAgY29uc3QgdGFncyA9IChfY2FjaGVkRGF0YV9oZWFkZXJzID0gY2FjaGVkRGF0YS5oZWFkZXJzKSA9PSBudWxsID8gdm9pZCAwIDogX2NhY2hlZERhdGFfaGVhZGVyc1tORVhUX0NBQ0hFX1RBR1NfSEVBREVSXTtcbiAgICAgICAgICAgIGlmIChtaW5pbWFsTW9kZSAmJiBpc1NTRyAmJiB0YWdzICYmIHR5cGVvZiB0YWdzID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoTkVYVF9DQUNIRV9UQUdTX0hFQURFUiwgdGFncyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBJZiB0aGUgcmVxdWVzdCBpcyBhIGRhdGEgcmVxdWVzdCwgdGhlbiB3ZSBzaG91bGRuJ3Qgc2V0IHRoZSBzdGF0dXMgY29kZVxuICAgICAgICAgICAgLy8gZnJvbSB0aGUgcmVzcG9uc2UgYmVjYXVzZSBpdCBzaG91bGQgYWx3YXlzIGJlIDIwMC4gVGhpcyBzaG91bGQgYmUgZ2F0ZWRcbiAgICAgICAgICAgIC8vIGJlaGluZCB0aGUgZXhwZXJpbWVudGFsIFBQUiBmbGFnLlxuICAgICAgICAgICAgaWYgKGNhY2hlZERhdGEuc3RhdHVzICYmICghaXNSU0NSZXF1ZXN0IHx8ICFpc1JvdXRlUFBSRW5hYmxlZCkpIHtcbiAgICAgICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IGNhY2hlZERhdGEuc3RhdHVzO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gUmVkaXJlY3QgaW5mb3JtYXRpb24gaXMgZW5jb2RlZCBpbiBSU0MgcGF5bG9hZCwgc28gd2UgZG9uJ3QgbmVlZCB0byB1c2UgcmVkaXJlY3Qgc3RhdHVzIGNvZGVzXG4gICAgICAgICAgICBpZiAoIW1pbmltYWxNb2RlICYmIGNhY2hlZERhdGEuc3RhdHVzICYmIFJlZGlyZWN0U3RhdHVzQ29kZVtjYWNoZWREYXRhLnN0YXR1c10gJiYgaXNSU0NSZXF1ZXN0KSB7XG4gICAgICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSAyMDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBNYXJrIHRoYXQgdGhlIHJlcXVlc3QgZGlkIHBvc3Rwb25lLlxuICAgICAgICAgICAgaWYgKGRpZFBvc3Rwb25lKSB7XG4gICAgICAgICAgICAgICAgcmVzLnNldEhlYWRlcihORVhUX0RJRF9QT1NUUE9ORV9IRUFERVIsICcxJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyB3ZSBkb24ndCBnbyB0aHJvdWdoIHRoaXMgYmxvY2sgd2hlbiBwcmV2aWV3IG1vZGUgaXMgdHJ1ZVxuICAgICAgICAgICAgLy8gYXMgcHJldmlldyBtb2RlIGlzIGEgZHluYW1pYyByZXF1ZXN0IChieXBhc3NlcyBjYWNoZSkgYW5kIGRvZXNuJ3RcbiAgICAgICAgICAgIC8vIGdlbmVyYXRlIGJvdGggSFRNTCBhbmQgcGF5bG9hZHMgaW4gdGhlIHNhbWUgcmVxdWVzdCBzbyBjb250aW51ZSB0byBqdXN0XG4gICAgICAgICAgICAvLyByZXR1cm4gdGhlIGdlbmVyYXRlZCBwYXlsb2FkXG4gICAgICAgICAgICBpZiAoaXNSU0NSZXF1ZXN0ICYmICFpc0RyYWZ0TW9kZSkge1xuICAgICAgICAgICAgICAgIC8vIElmIHRoaXMgaXMgYSBkeW5hbWljIFJTQyByZXF1ZXN0LCB0aGVuIHN0cmVhbSB0aGUgcmVzcG9uc2UuXG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBjYWNoZWREYXRhLnJzY0RhdGEgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChjYWNoZWREYXRhLnBvc3Rwb25lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ldyBFcnJvcignSW52YXJpYW50OiBFeHBlY3RlZCBwb3N0cG9uZWQgdG8gYmUgdW5kZWZpbmVkJyksIFwiX19ORVhUX0VSUk9SX0NPREVcIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBcIkUzNzJcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBzZW5kUmVuZGVyUmVzdWx0KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRlRXRhZ3M6IG5leHRDb25maWcuZ2VuZXJhdGVFdGFncyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBvd2VyZWRCeUhlYWRlcjogbmV4dENvbmZpZy5wb3dlcmVkQnlIZWFkZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQ6IGNhY2hlZERhdGEuaHRtbCxcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIER5bmFtaWMgUlNDIHJlc3BvbnNlcyBjYW5ub3QgYmUgY2FjaGVkLCBldmVuIGlmIHRoZXkncmVcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbmZpZ3VyZWQgd2l0aCBgZm9yY2Utc3RhdGljYCBiZWNhdXNlIHdlIGhhdmUgbm8gd2F5IG9mXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBkaXN0aW5ndWlzaGluZyBiZXR3ZWVuIGBmb3JjZS1zdGF0aWNgIGFuZCBwYWdlcyB0aGF0IGhhdmUgbm9cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBvc3Rwb25lZCBzdGF0ZS5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRPRE86IGRpc3Rpbmd1aXNoIGBmb3JjZS1zdGF0aWNgIGZyb20gcGFnZXMgd2l0aCBubyBwb3N0cG9uZWQgc3RhdGUgKHN0YXRpYylcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhY2hlQ29udHJvbDogaXNEeW5hbWljUlNDUmVxdWVzdCA/IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXZhbGlkYXRlOiAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGlyZTogdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICB9IDogY2FjaGVFbnRyeS5jYWNoZUNvbnRyb2xcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIEFzIHRoaXMgaXNuJ3QgYSBwcmVmZXRjaCByZXF1ZXN0LCB3ZSBzaG91bGQgc2VydmUgdGhlIHN0YXRpYyBmbGlnaHRcbiAgICAgICAgICAgICAgICAvLyBkYXRhLlxuICAgICAgICAgICAgICAgIHJldHVybiBzZW5kUmVuZGVyUmVzdWx0KHtcbiAgICAgICAgICAgICAgICAgICAgcmVxLFxuICAgICAgICAgICAgICAgICAgICByZXMsXG4gICAgICAgICAgICAgICAgICAgIGdlbmVyYXRlRXRhZ3M6IG5leHRDb25maWcuZ2VuZXJhdGVFdGFncyxcbiAgICAgICAgICAgICAgICAgICAgcG93ZXJlZEJ5SGVhZGVyOiBuZXh0Q29uZmlnLnBvd2VyZWRCeUhlYWRlcixcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0OiBSZW5kZXJSZXN1bHQuZnJvbVN0YXRpYyhjYWNoZWREYXRhLnJzY0RhdGEsIFJTQ19DT05URU5UX1RZUEVfSEVBREVSKSxcbiAgICAgICAgICAgICAgICAgICAgY2FjaGVDb250cm9sOiBjYWNoZUVudHJ5LmNhY2hlQ29udHJvbFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gVGhpcyBpcyBhIHJlcXVlc3QgZm9yIEhUTUwgZGF0YS5cbiAgICAgICAgICAgIGxldCBib2R5ID0gY2FjaGVkRGF0YS5odG1sO1xuICAgICAgICAgICAgLy8gSWYgdGhlcmUncyBubyBwb3N0cG9uZWQgc3RhdGUsIHdlIHNob3VsZCBqdXN0IHNlcnZlIHRoZSBIVE1MLiBUaGlzXG4gICAgICAgICAgICAvLyBzaG91bGQgYWxzbyBiZSB0aGUgY2FzZSBmb3IgYSByZXN1bWUgcmVxdWVzdCBiZWNhdXNlIGl0J3MgY29tcGxldGVkXG4gICAgICAgICAgICAvLyBhcyBhIHNlcnZlciByZW5kZXIgKHJhdGhlciB0aGFuIGEgc3RhdGljIHJlbmRlcikuXG4gICAgICAgICAgICBpZiAoIWRpZFBvc3Rwb25lIHx8IG1pbmltYWxNb2RlIHx8IGlzUlNDUmVxdWVzdCkge1xuICAgICAgICAgICAgICAgIC8vIElmIHdlJ3JlIGluIHRlc3QgbW9kZSwgd2Ugc2hvdWxkIGFkZCBhIHNlbnRpbmVsIGNodW5rIHRvIHRoZSByZXNwb25zZVxuICAgICAgICAgICAgICAgIC8vIHRoYXQncyBiZXR3ZWVuIHRoZSBzdGF0aWMgYW5kIGR5bmFtaWMgcGFydHMgc28gd2UgY2FuIGNvbXBhcmUgdGhlXG4gICAgICAgICAgICAgICAgLy8gY2h1bmtzIGFuZCBhZGQgYXNzZXJ0aW9ucy5cbiAgICAgICAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuX19ORVhUX1RFU1RfTU9ERSAmJiBtaW5pbWFsTW9kZSAmJiBpc1JvdXRlUFBSRW5hYmxlZCAmJiBib2R5LmNvbnRlbnRUeXBlID09PSBIVE1MX0NPTlRFTlRfVFlQRV9IRUFERVIpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gQXMgd2UncmUgaW4gbWluaW1hbCBtb2RlLCB0aGUgc3RhdGljIHBhcnQgd291bGQgaGF2ZSBhbHJlYWR5IGJlZW5cbiAgICAgICAgICAgICAgICAgICAgLy8gc3RyZWFtZWQgZmlyc3QuIFRoZSBvbmx5IHBhcnQgdGhhdCB0aGlzIHN0cmVhbXMgaXMgdGhlIGR5bmFtaWMgcGFydFxuICAgICAgICAgICAgICAgICAgICAvLyBzbyB3ZSBzaG91bGQgRklSU1Qgc3RyZWFtIHRoZSBzZW50aW5lbCBhbmQgVEhFTiB0aGUgZHluYW1pYyBwYXJ0LlxuICAgICAgICAgICAgICAgICAgICBib2R5LnVuc2hpZnQoY3JlYXRlUFBSQm91bmRhcnlTZW50aW5lbCgpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHNlbmRSZW5kZXJSZXN1bHQoe1xuICAgICAgICAgICAgICAgICAgICByZXEsXG4gICAgICAgICAgICAgICAgICAgIHJlcyxcbiAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdGVFdGFnczogbmV4dENvbmZpZy5nZW5lcmF0ZUV0YWdzLFxuICAgICAgICAgICAgICAgICAgICBwb3dlcmVkQnlIZWFkZXI6IG5leHRDb25maWcucG93ZXJlZEJ5SGVhZGVyLFxuICAgICAgICAgICAgICAgICAgICByZXN1bHQ6IGJvZHksXG4gICAgICAgICAgICAgICAgICAgIGNhY2hlQ29udHJvbDogY2FjaGVFbnRyeS5jYWNoZUNvbnRyb2xcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIElmIHdlJ3JlIGRlYnVnZ2luZyB0aGUgc3RhdGljIHNoZWxsIG9yIHRoZSBkeW5hbWljIEFQSSBhY2Nlc3Nlcywgd2VcbiAgICAgICAgICAgIC8vIHNob3VsZCBqdXN0IHNlcnZlIHRoZSBIVE1MIHdpdGhvdXQgcmVzdW1pbmcgdGhlIHJlbmRlci4gVGhlIHJldHVybmVkXG4gICAgICAgICAgICAvLyBIVE1MIHdpbGwgYmUgdGhlIHN0YXRpYyBzaGVsbCBzbyBhbGwgdGhlIER5bmFtaWMgQVBJJ3Mgd2lsbCBiZSB1c2VkXG4gICAgICAgICAgICAvLyBkdXJpbmcgc3RhdGljIGdlbmVyYXRpb24uXG4gICAgICAgICAgICBpZiAoaXNEZWJ1Z1N0YXRpY1NoZWxsIHx8IGlzRGVidWdEeW5hbWljQWNjZXNzZXMpIHtcbiAgICAgICAgICAgICAgICAvLyBTaW5jZSB3ZSdyZSBub3QgcmVzdW1pbmcgdGhlIHJlbmRlciwgd2UgbmVlZCB0byBhdCBsZWFzdCBhZGQgdGhlXG4gICAgICAgICAgICAgICAgLy8gY2xvc2luZyBib2R5IGFuZCBodG1sIHRhZ3MgdG8gY3JlYXRlIHZhbGlkIEhUTUwuXG4gICAgICAgICAgICAgICAgYm9keS5wdXNoKG5ldyBSZWFkYWJsZVN0cmVhbSh7XG4gICAgICAgICAgICAgICAgICAgIHN0YXJ0IChjb250cm9sbGVyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb250cm9sbGVyLmVucXVldWUoRU5DT0RFRF9UQUdTLkNMT1NFRC5CT0RZX0FORF9IVE1MKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2xsZXIuY2xvc2UoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gc2VuZFJlbmRlclJlc3VsdCh7XG4gICAgICAgICAgICAgICAgICAgIHJlcSxcbiAgICAgICAgICAgICAgICAgICAgcmVzLFxuICAgICAgICAgICAgICAgICAgICBnZW5lcmF0ZUV0YWdzOiBuZXh0Q29uZmlnLmdlbmVyYXRlRXRhZ3MsXG4gICAgICAgICAgICAgICAgICAgIHBvd2VyZWRCeUhlYWRlcjogbmV4dENvbmZpZy5wb3dlcmVkQnlIZWFkZXIsXG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdDogYm9keSxcbiAgICAgICAgICAgICAgICAgICAgY2FjaGVDb250cm9sOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXZhbGlkYXRlOiAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgZXhwaXJlOiB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gSWYgd2UncmUgaW4gdGVzdCBtb2RlLCB3ZSBzaG91bGQgYWRkIGEgc2VudGluZWwgY2h1bmsgdG8gdGhlIHJlc3BvbnNlXG4gICAgICAgICAgICAvLyB0aGF0J3MgYmV0d2VlbiB0aGUgc3RhdGljIGFuZCBkeW5hbWljIHBhcnRzIHNvIHdlIGNhbiBjb21wYXJlIHRoZVxuICAgICAgICAgICAgLy8gY2h1bmtzIGFuZCBhZGQgYXNzZXJ0aW9ucy5cbiAgICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5fX05FWFRfVEVTVF9NT0RFKSB7XG4gICAgICAgICAgICAgICAgYm9keS5wdXNoKGNyZWF0ZVBQUkJvdW5kYXJ5U2VudGluZWwoKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBUaGlzIHJlcXVlc3QgaGFzIHBvc3Rwb25lZCwgc28gbGV0J3MgY3JlYXRlIGEgbmV3IHRyYW5zZm9ybWVyIHRoYXQgdGhlXG4gICAgICAgICAgICAvLyBkeW5hbWljIGRhdGEgY2FuIHBpcGUgdG8gdGhhdCB3aWxsIGF0dGFjaCB0aGUgZHluYW1pYyBkYXRhIHRvIHRoZSBlbmRcbiAgICAgICAgICAgIC8vIG9mIHRoZSByZXNwb25zZS5cbiAgICAgICAgICAgIGNvbnN0IHRyYW5zZm9ybWVyID0gbmV3IFRyYW5zZm9ybVN0cmVhbSgpO1xuICAgICAgICAgICAgYm9keS5wdXNoKHRyYW5zZm9ybWVyLnJlYWRhYmxlKTtcbiAgICAgICAgICAgIC8vIFBlcmZvcm0gdGhlIHJlbmRlciBhZ2FpbiwgYnV0IHRoaXMgdGltZSwgcHJvdmlkZSB0aGUgcG9zdHBvbmVkIHN0YXRlLlxuICAgICAgICAgICAgLy8gV2UgZG9uJ3QgYXdhaXQgYmVjYXVzZSB3ZSB3YW50IHRoZSByZXN1bHQgdG8gc3RhcnQgc3RyZWFtaW5nIG5vdywgYW5kXG4gICAgICAgICAgICAvLyB3ZSd2ZSBhbHJlYWR5IGNoYWluZWQgdGhlIHRyYW5zZm9ybWVyJ3MgcmVhZGFibGUgdG8gdGhlIHJlbmRlciByZXN1bHQuXG4gICAgICAgICAgICBkb1JlbmRlcih7XG4gICAgICAgICAgICAgICAgc3BhbixcbiAgICAgICAgICAgICAgICBwb3N0cG9uZWQ6IGNhY2hlZERhdGEucG9zdHBvbmVkLFxuICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgYSByZXN1bWUgcmVuZGVyLCBub3QgYSBmYWxsYmFjayByZW5kZXIsIHNvIHdlIGRvbid0IG5lZWQgdG9cbiAgICAgICAgICAgICAgICAvLyBzZXQgdGhpcy5cbiAgICAgICAgICAgICAgICBmYWxsYmFja1JvdXRlUGFyYW1zOiBudWxsXG4gICAgICAgICAgICB9KS50aGVuKGFzeW5jIChyZXN1bHQpPT57XG4gICAgICAgICAgICAgICAgdmFyIF9yZXN1bHRfdmFsdWU7XG4gICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ldyBFcnJvcignSW52YXJpYW50OiBleHBlY3RlZCBhIHJlc3VsdCB0byBiZSByZXR1cm5lZCcpLCBcIl9fTkVYVF9FUlJPUl9DT0RFXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBcIkU0NjNcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoKChfcmVzdWx0X3ZhbHVlID0gcmVzdWx0LnZhbHVlKSA9PSBudWxsID8gdm9pZCAwIDogX3Jlc3VsdF92YWx1ZS5raW5kKSAhPT0gQ2FjaGVkUm91dGVLaW5kLkFQUF9QQUdFKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBfcmVzdWx0X3ZhbHVlMTtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ldyBFcnJvcihgSW52YXJpYW50OiBleHBlY3RlZCBhIHBhZ2UgcmVzcG9uc2UsIGdvdCAkeyhfcmVzdWx0X3ZhbHVlMSA9IHJlc3VsdC52YWx1ZSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9yZXN1bHRfdmFsdWUxLmtpbmR9YCksIFwiX19ORVhUX0VSUk9SX0NPREVcIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IFwiRTMwNVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIFBpcGUgdGhlIHJlc3VtZSByZXN1bHQgdG8gdGhlIHRyYW5zZm9ybWVyLlxuICAgICAgICAgICAgICAgIGF3YWl0IHJlc3VsdC52YWx1ZS5odG1sLnBpcGVUbyh0cmFuc2Zvcm1lci53cml0YWJsZSk7XG4gICAgICAgICAgICB9KS5jYXRjaCgoZXJyKT0+e1xuICAgICAgICAgICAgICAgIC8vIEFuIGVycm9yIG9jY3VycmVkIGR1cmluZyBwaXBpbmcgb3IgcHJlcGFyaW5nIHRoZSByZW5kZXIsIGFib3J0XG4gICAgICAgICAgICAgICAgLy8gdGhlIHRyYW5zZm9ybWVycyB3cml0ZXIgc28gd2UgY2FuIHRlcm1pbmF0ZSB0aGUgc3RyZWFtLlxuICAgICAgICAgICAgICAgIHRyYW5zZm9ybWVyLndyaXRhYmxlLmFib3J0KGVycikuY2F0Y2goKGUpPT57XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJjb3VsZG4ndCBhYm9ydCB0cmFuc2Zvcm1lclwiLCBlKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIHNlbmRSZW5kZXJSZXN1bHQoe1xuICAgICAgICAgICAgICAgIHJlcSxcbiAgICAgICAgICAgICAgICByZXMsXG4gICAgICAgICAgICAgICAgZ2VuZXJhdGVFdGFnczogbmV4dENvbmZpZy5nZW5lcmF0ZUV0YWdzLFxuICAgICAgICAgICAgICAgIHBvd2VyZWRCeUhlYWRlcjogbmV4dENvbmZpZy5wb3dlcmVkQnlIZWFkZXIsXG4gICAgICAgICAgICAgICAgcmVzdWx0OiBib2R5LFxuICAgICAgICAgICAgICAgIC8vIFdlIGRvbid0IHdhbnQgdG8gY2FjaGUgdGhlIHJlc3BvbnNlIGlmIGl0IGhhcyBwb3N0cG9uZWQgZGF0YSBiZWNhdXNlXG4gICAgICAgICAgICAgICAgLy8gdGhlIHJlc3BvbnNlIGJlaW5nIHNlbnQgdG8gdGhlIGNsaWVudCBpdCdzIGR5bmFtaWMgcGFydHMgYXJlIHN0cmVhbWVkXG4gICAgICAgICAgICAgICAgLy8gdG8gdGhlIGNsaWVudCBvbiB0aGUgc2FtZSByZXF1ZXN0LlxuICAgICAgICAgICAgICAgIGNhY2hlQ29udHJvbDoge1xuICAgICAgICAgICAgICAgICAgICByZXZhbGlkYXRlOiAwLFxuICAgICAgICAgICAgICAgICAgICBleHBpcmU6IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgICAgICAvLyBUT0RPOiBhY3RpdmVTcGFuIGNvZGUgcGF0aCBpcyBmb3Igd2hlbiB3cmFwcGVkIGJ5XG4gICAgICAgIC8vIG5leHQtc2VydmVyIGNhbiBiZSByZW1vdmVkIHdoZW4gdGhpcyBpcyBubyBsb25nZXIgdXNlZFxuICAgICAgICBpZiAoYWN0aXZlU3Bhbikge1xuICAgICAgICAgICAgYXdhaXQgaGFuZGxlUmVzcG9uc2UoYWN0aXZlU3Bhbik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gYXdhaXQgdHJhY2VyLndpdGhQcm9wYWdhdGVkQ29udGV4dChyZXEuaGVhZGVycywgKCk9PnRyYWNlci50cmFjZShCYXNlU2VydmVyU3Bhbi5oYW5kbGVSZXF1ZXN0LCB7XG4gICAgICAgICAgICAgICAgICAgIHNwYW5OYW1lOiBgJHttZXRob2R9ICR7cmVxLnVybH1gLFxuICAgICAgICAgICAgICAgICAgICBraW5kOiBTcGFuS2luZC5TRVJWRVIsXG4gICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICdodHRwLm1ldGhvZCc6IG1ldGhvZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICdodHRwLnRhcmdldCc6IHJlcS51cmxcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sIGhhbmRsZVJlc3BvbnNlKSk7XG4gICAgICAgIH1cbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgLy8gaWYgd2UgYXJlbid0IHdyYXBwZWQgYnkgYmFzZS1zZXJ2ZXIgaGFuZGxlIGhlcmVcbiAgICAgICAgaWYgKCFhY3RpdmVTcGFuICYmICEoZXJyIGluc3RhbmNlb2YgTm9GYWxsYmFja0Vycm9yKSkge1xuICAgICAgICAgICAgYXdhaXQgcm91dGVNb2R1bGUub25SZXF1ZXN0RXJyb3IocmVxLCBlcnIsIHtcbiAgICAgICAgICAgICAgICByb3V0ZXJLaW5kOiAnQXBwIFJvdXRlcicsXG4gICAgICAgICAgICAgICAgcm91dGVQYXRoOiBzcmNQYWdlLFxuICAgICAgICAgICAgICAgIHJvdXRlVHlwZTogJ3JlbmRlcicsXG4gICAgICAgICAgICAgICAgcmV2YWxpZGF0ZVJlYXNvbjogZ2V0UmV2YWxpZGF0ZVJlYXNvbih7XG4gICAgICAgICAgICAgICAgICAgIGlzUmV2YWxpZGF0ZTogaXNTU0csXG4gICAgICAgICAgICAgICAgICAgIGlzT25EZW1hbmRSZXZhbGlkYXRlXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH0sIHJvdXRlclNlcnZlckNvbnRleHQpO1xuICAgICAgICB9XG4gICAgICAgIC8vIHJldGhyb3cgc28gdGhhdCB3ZSBjYW4gaGFuZGxlIHNlcnZpbmcgZXJyb3IgcGFnZVxuICAgICAgICB0aHJvdyBlcnI7XG4gICAgfVxufVxuLy8gVE9ETzogb21pdCB0aGlzIGZyb20gcHJvZHVjdGlvbiBidWlsZHMsIG9ubHkgdGVzdCBidWlsZHMgc2hvdWxkIGluY2x1ZGUgaXRcbi8qKlxuICogQ3JlYXRlcyBhIHJlYWRhYmxlIHN0cmVhbSB0aGF0IGVtaXRzIGEgUFBSIGJvdW5kYXJ5IHNlbnRpbmVsLlxuICpcbiAqIEByZXR1cm5zIEEgcmVhZGFibGUgc3RyZWFtIHRoYXQgZW1pdHMgYSBQUFIgYm91bmRhcnkgc2VudGluZWwuXG4gKi8gZnVuY3Rpb24gY3JlYXRlUFBSQm91bmRhcnlTZW50aW5lbCgpIHtcbiAgICByZXR1cm4gbmV3IFJlYWRhYmxlU3RyZWFtKHtcbiAgICAgICAgc3RhcnQgKGNvbnRyb2xsZXIpIHtcbiAgICAgICAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZShuZXcgVGV4dEVuY29kZXIoKS5lbmNvZGUoJzwhLS0gUFBSX0JPVU5EQVJZX1NFTlRJTkVMIC0tPicpKTtcbiAgICAgICAgICAgIGNvbnRyb2xsZXIuY2xvc2UoKTtcbiAgICAgICAgfVxuICAgIH0pO1xufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1hcHAtcGFnZS5qcy5tYXBcbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/build/webpack/loaders/next-app-loader/index.js?name=app%2Fgenerate%2Fpage&page=%2Fgenerate%2Fpage&appPaths=%2Fgenerate%2Fpage&pagePath=private-next-app-dir%2Fgenerate%2Fpage.tsx&appDir=%2FUsers%2Fjettcheng1018%2Fcode%2Fdramaling-vocab-learning%2Ffrontend%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fjettcheng1018%2Fcode%2Fdramaling-vocab-learning%2Ffrontend&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D&isGlobalNotFoundEnabled=!\n"); + +/***/ }), + +/***/ "(rsc)/./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%7B%22request%22%3A%22%2FUsers%2Fjettcheng1018%2Fcode%2Fdramaling-vocab-learning%2Ffrontend%2Fapp%2Fgenerate%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=true!": +/*!*****************************************************************************************************************************************************************************************************************************************************************!*\ + !*** ./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%7B%22request%22%3A%22%2FUsers%2Fjettcheng1018%2Fcode%2Fdramaling-vocab-learning%2Ffrontend%2Fapp%2Fgenerate%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=true! ***! + \*****************************************************************************************************************************************************************************************************************************************************************/ +/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { + +eval("Promise.resolve(/*! import() eager */).then(__webpack_require__.bind(__webpack_require__, /*! ./app/generate/page.tsx */ \"(rsc)/./app/generate/page.tsx\"));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2J1aWxkL3dlYnBhY2svbG9hZGVycy9uZXh0LWZsaWdodC1jbGllbnQtZW50cnktbG9hZGVyLmpzP21vZHVsZXM9JTdCJTIycmVxdWVzdCUyMiUzQSUyMiUyRlVzZXJzJTJGamV0dGNoZW5nMTAxOCUyRmNvZGUlMkZkcmFtYWxpbmctdm9jYWItbGVhcm5pbmclMkZmcm9udGVuZCUyRmFwcCUyRmdlbmVyYXRlJTJGcGFnZS50c3glMjIlMkMlMjJpZHMlMjIlM0ElNUIlNUQlN0Qmc2VydmVyPXRydWUhIiwibWFwcGluZ3MiOiJBQUFBLDBKQUFzSCIsInNvdXJjZXMiOlsiIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCgvKiB3ZWJwYWNrTW9kZTogXCJlYWdlclwiICovIFwiL1VzZXJzL2pldHRjaGVuZzEwMTgvY29kZS9kcmFtYWxpbmctdm9jYWItbGVhcm5pbmcvZnJvbnRlbmQvYXBwL2dlbmVyYXRlL3BhZ2UudHN4XCIpO1xuIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%7B%22request%22%3A%22%2FUsers%2Fjettcheng1018%2Fcode%2Fdramaling-vocab-learning%2Ffrontend%2Fapp%2Fgenerate%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=true!\n"); + +/***/ }), + +/***/ "(rsc)/./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%7B%22request%22%3A%22%2FUsers%2Fjettcheng1018%2Fcode%2Fdramaling-vocab-learning%2Ffrontend%2Fcontexts%2FAuthContext.tsx%22%2C%22ids%22%3A%5B%22AuthProvider%22%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fjettcheng1018%2Fcode%2Fdramaling-vocab-learning%2Ffrontend%2Fnode_modules%2Fnext%2Ffont%2Fgoogle%2Ftarget.css%3F%7B%5C%22path%5C%22%3A%5C%22app%2Flayout.tsx%5C%22%2C%5C%22import%5C%22%3A%5C%22Inter%5C%22%2C%5C%22arguments%5C%22%3A%5B%7B%5C%22subsets%5C%22%3A%5B%5C%22latin%5C%22%5D%7D%5D%2C%5C%22variableName%5C%22%3A%5C%22inter%5C%22%7D%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fjettcheng1018%2Fcode%2Fdramaling-vocab-learning%2Ffrontend%2Fapp%2Fglobals.css%22%2C%22ids%22%3A%5B%5D%7D&server=true!": +/*!*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ + !*** ./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%7B%22request%22%3A%22%2FUsers%2Fjettcheng1018%2Fcode%2Fdramaling-vocab-learning%2Ffrontend%2Fcontexts%2FAuthContext.tsx%22%2C%22ids%22%3A%5B%22AuthProvider%22%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fjettcheng1018%2Fcode%2Fdramaling-vocab-learning%2Ffrontend%2Fnode_modules%2Fnext%2Ffont%2Fgoogle%2Ftarget.css%3F%7B%5C%22path%5C%22%3A%5C%22app%2Flayout.tsx%5C%22%2C%5C%22import%5C%22%3A%5C%22Inter%5C%22%2C%5C%22arguments%5C%22%3A%5B%7B%5C%22subsets%5C%22%3A%5B%5C%22latin%5C%22%5D%7D%5D%2C%5C%22variableName%5C%22%3A%5C%22inter%5C%22%7D%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fjettcheng1018%2Fcode%2Fdramaling-vocab-learning%2Ffrontend%2Fapp%2Fglobals.css%22%2C%22ids%22%3A%5B%5D%7D&server=true! ***! + \*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ +/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { + +eval("Promise.resolve(/*! import() eager */).then(__webpack_require__.bind(__webpack_require__, /*! ./contexts/AuthContext.tsx */ \"(rsc)/./contexts/AuthContext.tsx\"));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2J1aWxkL3dlYnBhY2svbG9hZGVycy9uZXh0LWZsaWdodC1jbGllbnQtZW50cnktbG9hZGVyLmpzP21vZHVsZXM9JTdCJTIycmVxdWVzdCUyMiUzQSUyMiUyRlVzZXJzJTJGamV0dGNoZW5nMTAxOCUyRmNvZGUlMkZkcmFtYWxpbmctdm9jYWItbGVhcm5pbmclMkZmcm9udGVuZCUyRmNvbnRleHRzJTJGQXV0aENvbnRleHQudHN4JTIyJTJDJTIyaWRzJTIyJTNBJTVCJTIyQXV0aFByb3ZpZGVyJTIyJTVEJTdEJm1vZHVsZXM9JTdCJTIycmVxdWVzdCUyMiUzQSUyMiUyRlVzZXJzJTJGamV0dGNoZW5nMTAxOCUyRmNvZGUlMkZkcmFtYWxpbmctdm9jYWItbGVhcm5pbmclMkZmcm9udGVuZCUyRm5vZGVfbW9kdWxlcyUyRm5leHQlMkZmb250JTJGZ29vZ2xlJTJGdGFyZ2V0LmNzcyUzRiU3QiU1QyUyMnBhdGglNUMlMjIlM0ElNUMlMjJhcHAlMkZsYXlvdXQudHN4JTVDJTIyJTJDJTVDJTIyaW1wb3J0JTVDJTIyJTNBJTVDJTIySW50ZXIlNUMlMjIlMkMlNUMlMjJhcmd1bWVudHMlNUMlMjIlM0ElNUIlN0IlNUMlMjJzdWJzZXRzJTVDJTIyJTNBJTVCJTVDJTIybGF0aW4lNUMlMjIlNUQlN0QlNUQlMkMlNUMlMjJ2YXJpYWJsZU5hbWUlNUMlMjIlM0ElNUMlMjJpbnRlciU1QyUyMiU3RCUyMiUyQyUyMmlkcyUyMiUzQSU1QiU1RCU3RCZtb2R1bGVzPSU3QiUyMnJlcXVlc3QlMjIlM0ElMjIlMkZVc2VycyUyRmpldHRjaGVuZzEwMTglMkZjb2RlJTJGZHJhbWFsaW5nLXZvY2FiLWxlYXJuaW5nJTJGZnJvbnRlbmQlMkZhcHAlMkZnbG9iYWxzLmNzcyUyMiUyQyUyMmlkcyUyMiUzQSU1QiU1RCU3RCZzZXJ2ZXI9dHJ1ZSEiLCJtYXBwaW5ncyI6IkFBQUEsZ0tBQTJKIiwic291cmNlcyI6WyIiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0KC8qIHdlYnBhY2tNb2RlOiBcImVhZ2VyXCIsIHdlYnBhY2tFeHBvcnRzOiBbXCJBdXRoUHJvdmlkZXJcIl0gKi8gXCIvVXNlcnMvamV0dGNoZW5nMTAxOC9jb2RlL2RyYW1hbGluZy12b2NhYi1sZWFybmluZy9mcm9udGVuZC9jb250ZXh0cy9BdXRoQ29udGV4dC50c3hcIik7XG4iXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%7B%22request%22%3A%22%2FUsers%2Fjettcheng1018%2Fcode%2Fdramaling-vocab-learning%2Ffrontend%2Fcontexts%2FAuthContext.tsx%22%2C%22ids%22%3A%5B%22AuthProvider%22%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fjettcheng1018%2Fcode%2Fdramaling-vocab-learning%2Ffrontend%2Fnode_modules%2Fnext%2Ffont%2Fgoogle%2Ftarget.css%3F%7B%5C%22path%5C%22%3A%5C%22app%2Flayout.tsx%5C%22%2C%5C%22import%5C%22%3A%5C%22Inter%5C%22%2C%5C%22arguments%5C%22%3A%5B%7B%5C%22subsets%5C%22%3A%5B%5C%22latin%5C%22%5D%7D%5D%2C%5C%22variableName%5C%22%3A%5C%22inter%5C%22%7D%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fjettcheng1018%2Fcode%2Fdramaling-vocab-learning%2Ffrontend%2Fapp%2Fglobals.css%22%2C%22ids%22%3A%5B%5D%7D&server=true!\n"); + +/***/ }), + +/***/ "(rsc)/./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%7B%22request%22%3A%22%2FUsers%2Fjettcheng1018%2Fcode%2Fdramaling-vocab-learning%2Ffrontend%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fbuiltin%2Fglobal-error.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fjettcheng1018%2Fcode%2Fdramaling-vocab-learning%2Ffrontend%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fclient-page.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fjettcheng1018%2Fcode%2Fdramaling-vocab-learning%2Ffrontend%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fclient-segment.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fjettcheng1018%2Fcode%2Fdramaling-vocab-learning%2Ffrontend%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fhttp-access-fallback%2Ferror-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fjettcheng1018%2Fcode%2Fdramaling-vocab-learning%2Ffrontend%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Flayout-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fjettcheng1018%2Fcode%2Fdramaling-vocab-learning%2Ffrontend%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fmetadata%2Fasync-metadata.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fjettcheng1018%2Fcode%2Fdramaling-vocab-learning%2Ffrontend%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Frender-from-template-context.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fjettcheng1018%2Fcode%2Fdramaling-vocab-learning%2Ffrontend%2Fnode_modules%2Fnext%2Fdist%2Flib%2Fframework%2Fboundary-components.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fjettcheng1018%2Fcode%2Fdramaling-vocab-learning%2Ffrontend%2Fnode_modules%2Fnext%2Fdist%2Flib%2Fmetadata%2Fgenerate%2Ficon-mark.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fjettcheng1018%2Fcode%2Fdramaling-vocab-learning%2Ffrontend%2Fnode_modules%2Fnext%2Fdist%2Fnext-devtools%2Fuserspace%2Fapp%2Fsegment-explorer-node.js%22%2C%22ids%22%3A%5B%5D%7D&server=true!": +/*!*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ + !*** ./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%7B%22request%22%3A%22%2FUsers%2Fjettcheng1018%2Fcode%2Fdramaling-vocab-learning%2Ffrontend%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fbuiltin%2Fglobal-error.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fjettcheng1018%2Fcode%2Fdramaling-vocab-learning%2Ffrontend%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fclient-page.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fjettcheng1018%2Fcode%2Fdramaling-vocab-learning%2Ffrontend%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fclient-segment.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fjettcheng1018%2Fcode%2Fdramaling-vocab-learning%2Ffrontend%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fhttp-access-fallback%2Ferror-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fjettcheng1018%2Fcode%2Fdramaling-vocab-learning%2Ffrontend%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Flayout-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fjettcheng1018%2Fcode%2Fdramaling-vocab-learning%2Ffrontend%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fmetadata%2Fasync-metadata.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fjettcheng1018%2Fcode%2Fdramaling-vocab-learning%2Ffrontend%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Frender-from-template-context.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fjettcheng1018%2Fcode%2Fdramaling-vocab-learning%2Ffrontend%2Fnode_modules%2Fnext%2Fdist%2Flib%2Fframework%2Fboundary-components.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fjettcheng1018%2Fcode%2Fdramaling-vocab-learning%2Ffrontend%2Fnode_modules%2Fnext%2Fdist%2Flib%2Fmetadata%2Fgenerate%2Ficon-mark.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fjettcheng1018%2Fcode%2Fdramaling-vocab-learning%2Ffrontend%2Fnode_modules%2Fnext%2Fdist%2Fnext-devtools%2Fuserspace%2Fapp%2Fsegment-explorer-node.js%22%2C%22ids%22%3A%5B%5D%7D&server=true! ***! + \*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ +/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { + +eval("Promise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__webpack_require__, /*! ./node_modules/next/dist/client/components/builtin/global-error.js */ \"(rsc)/./node_modules/next/dist/client/components/builtin/global-error.js\", 23));\n;\nPromise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__webpack_require__, /*! ./node_modules/next/dist/client/components/client-page.js */ \"(rsc)/./node_modules/next/dist/client/components/client-page.js\", 23));\n;\nPromise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__webpack_require__, /*! ./node_modules/next/dist/client/components/client-segment.js */ \"(rsc)/./node_modules/next/dist/client/components/client-segment.js\", 23));\n;\nPromise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__webpack_require__, /*! ./node_modules/next/dist/client/components/http-access-fallback/error-boundary.js */ \"(rsc)/./node_modules/next/dist/client/components/http-access-fallback/error-boundary.js\", 23));\n;\nPromise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__webpack_require__, /*! ./node_modules/next/dist/client/components/layout-router.js */ \"(rsc)/./node_modules/next/dist/client/components/layout-router.js\", 23));\n;\nPromise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__webpack_require__, /*! ./node_modules/next/dist/client/components/metadata/async-metadata.js */ \"(rsc)/./node_modules/next/dist/client/components/metadata/async-metadata.js\", 23));\n;\nPromise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__webpack_require__, /*! ./node_modules/next/dist/client/components/render-from-template-context.js */ \"(rsc)/./node_modules/next/dist/client/components/render-from-template-context.js\", 23));\n;\nPromise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__webpack_require__, /*! ./node_modules/next/dist/lib/framework/boundary-components.js */ \"(rsc)/./node_modules/next/dist/lib/framework/boundary-components.js\", 23));\n;\nPromise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__webpack_require__, /*! ./node_modules/next/dist/lib/metadata/generate/icon-mark.js */ \"(rsc)/./node_modules/next/dist/lib/metadata/generate/icon-mark.js\", 23));\n;\nPromise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__webpack_require__, /*! ./node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js */ \"(rsc)/./node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js\", 23));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2J1aWxkL3dlYnBhY2svbG9hZGVycy9uZXh0LWZsaWdodC1jbGllbnQtZW50cnktbG9hZGVyLmpzP21vZHVsZXM9JTdCJTIycmVxdWVzdCUyMiUzQSUyMiUyRlVzZXJzJTJGamV0dGNoZW5nMTAxOCUyRmNvZGUlMkZkcmFtYWxpbmctdm9jYWItbGVhcm5pbmclMkZmcm9udGVuZCUyRm5vZGVfbW9kdWxlcyUyRm5leHQlMkZkaXN0JTJGY2xpZW50JTJGY29tcG9uZW50cyUyRmJ1aWx0aW4lMkZnbG9iYWwtZXJyb3IuanMlMjIlMkMlMjJpZHMlMjIlM0ElNUIlNUQlN0QmbW9kdWxlcz0lN0IlMjJyZXF1ZXN0JTIyJTNBJTIyJTJGVXNlcnMlMkZqZXR0Y2hlbmcxMDE4JTJGY29kZSUyRmRyYW1hbGluZy12b2NhYi1sZWFybmluZyUyRmZyb250ZW5kJTJGbm9kZV9tb2R1bGVzJTJGbmV4dCUyRmRpc3QlMkZjbGllbnQlMkZjb21wb25lbnRzJTJGY2xpZW50LXBhZ2UuanMlMjIlMkMlMjJpZHMlMjIlM0ElNUIlNUQlN0QmbW9kdWxlcz0lN0IlMjJyZXF1ZXN0JTIyJTNBJTIyJTJGVXNlcnMlMkZqZXR0Y2hlbmcxMDE4JTJGY29kZSUyRmRyYW1hbGluZy12b2NhYi1sZWFybmluZyUyRmZyb250ZW5kJTJGbm9kZV9tb2R1bGVzJTJGbmV4dCUyRmRpc3QlMkZjbGllbnQlMkZjb21wb25lbnRzJTJGY2xpZW50LXNlZ21lbnQuanMlMjIlMkMlMjJpZHMlMjIlM0ElNUIlNUQlN0QmbW9kdWxlcz0lN0IlMjJyZXF1ZXN0JTIyJTNBJTIyJTJGVXNlcnMlMkZqZXR0Y2hlbmcxMDE4JTJGY29kZSUyRmRyYW1hbGluZy12b2NhYi1sZWFybmluZyUyRmZyb250ZW5kJTJGbm9kZV9tb2R1bGVzJTJGbmV4dCUyRmRpc3QlMkZjbGllbnQlMkZjb21wb25lbnRzJTJGaHR0cC1hY2Nlc3MtZmFsbGJhY2slMkZlcnJvci1ib3VuZGFyeS5qcyUyMiUyQyUyMmlkcyUyMiUzQSU1QiU1RCU3RCZtb2R1bGVzPSU3QiUyMnJlcXVlc3QlMjIlM0ElMjIlMkZVc2VycyUyRmpldHRjaGVuZzEwMTglMkZjb2RlJTJGZHJhbWFsaW5nLXZvY2FiLWxlYXJuaW5nJTJGZnJvbnRlbmQlMkZub2RlX21vZHVsZXMlMkZuZXh0JTJGZGlzdCUyRmNsaWVudCUyRmNvbXBvbmVudHMlMkZsYXlvdXQtcm91dGVyLmpzJTIyJTJDJTIyaWRzJTIyJTNBJTVCJTVEJTdEJm1vZHVsZXM9JTdCJTIycmVxdWVzdCUyMiUzQSUyMiUyRlVzZXJzJTJGamV0dGNoZW5nMTAxOCUyRmNvZGUlMkZkcmFtYWxpbmctdm9jYWItbGVhcm5pbmclMkZmcm9udGVuZCUyRm5vZGVfbW9kdWxlcyUyRm5leHQlMkZkaXN0JTJGY2xpZW50JTJGY29tcG9uZW50cyUyRm1ldGFkYXRhJTJGYXN5bmMtbWV0YWRhdGEuanMlMjIlMkMlMjJpZHMlMjIlM0ElNUIlNUQlN0QmbW9kdWxlcz0lN0IlMjJyZXF1ZXN0JTIyJTNBJTIyJTJGVXNlcnMlMkZqZXR0Y2hlbmcxMDE4JTJGY29kZSUyRmRyYW1hbGluZy12b2NhYi1sZWFybmluZyUyRmZyb250ZW5kJTJGbm9kZV9tb2R1bGVzJTJGbmV4dCUyRmRpc3QlMkZjbGllbnQlMkZjb21wb25lbnRzJTJGcmVuZGVyLWZyb20tdGVtcGxhdGUtY29udGV4dC5qcyUyMiUyQyUyMmlkcyUyMiUzQSU1QiU1RCU3RCZtb2R1bGVzPSU3QiUyMnJlcXVlc3QlMjIlM0ElMjIlMkZVc2VycyUyRmpldHRjaGVuZzEwMTglMkZjb2RlJTJGZHJhbWFsaW5nLXZvY2FiLWxlYXJuaW5nJTJGZnJvbnRlbmQlMkZub2RlX21vZHVsZXMlMkZuZXh0JTJGZGlzdCUyRmxpYiUyRmZyYW1ld29yayUyRmJvdW5kYXJ5LWNvbXBvbmVudHMuanMlMjIlMkMlMjJpZHMlMjIlM0ElNUIlNUQlN0QmbW9kdWxlcz0lN0IlMjJyZXF1ZXN0JTIyJTNBJTIyJTJGVXNlcnMlMkZqZXR0Y2hlbmcxMDE4JTJGY29kZSUyRmRyYW1hbGluZy12b2NhYi1sZWFybmluZyUyRmZyb250ZW5kJTJGbm9kZV9tb2R1bGVzJTJGbmV4dCUyRmRpc3QlMkZsaWIlMkZtZXRhZGF0YSUyRmdlbmVyYXRlJTJGaWNvbi1tYXJrLmpzJTIyJTJDJTIyaWRzJTIyJTNBJTVCJTVEJTdEJm1vZHVsZXM9JTdCJTIycmVxdWVzdCUyMiUzQSUyMiUyRlVzZXJzJTJGamV0dGNoZW5nMTAxOCUyRmNvZGUlMkZkcmFtYWxpbmctdm9jYWItbGVhcm5pbmclMkZmcm9udGVuZCUyRm5vZGVfbW9kdWxlcyUyRm5leHQlMkZkaXN0JTJGbmV4dC1kZXZ0b29scyUyRnVzZXJzcGFjZSUyRmFwcCUyRnNlZ21lbnQtZXhwbG9yZXItbm9kZS5qcyUyMiUyQyUyMmlkcyUyMiUzQSU1QiU1RCU3RCZzZXJ2ZXI9dHJ1ZSEiLCJtYXBwaW5ncyI6IkFBQUEsc1BBQWlLO0FBQ2pLO0FBQ0Esb09BQXdKO0FBQ3hKO0FBQ0EsME9BQTJKO0FBQzNKO0FBQ0Esb1JBQWdMO0FBQ2hMO0FBQ0Esd09BQTBKO0FBQzFKO0FBQ0EsNFBBQW9LO0FBQ3BLO0FBQ0Esc1FBQXlLO0FBQ3pLO0FBQ0EsNE9BQTRKO0FBQzVKO0FBQ0Esd09BQTBKO0FBQzFKO0FBQ0EsNFFBQTRLIiwic291cmNlcyI6WyIiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0KC8qIHdlYnBhY2tNb2RlOiBcImVhZ2VyXCIgKi8gXCIvVXNlcnMvamV0dGNoZW5nMTAxOC9jb2RlL2RyYW1hbGluZy12b2NhYi1sZWFybmluZy9mcm9udGVuZC9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL2J1aWx0aW4vZ2xvYmFsLWVycm9yLmpzXCIpO1xuO1xuaW1wb3J0KC8qIHdlYnBhY2tNb2RlOiBcImVhZ2VyXCIgKi8gXCIvVXNlcnMvamV0dGNoZW5nMTAxOC9jb2RlL2RyYW1hbGluZy12b2NhYi1sZWFybmluZy9mcm9udGVuZC9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL2NsaWVudC1wYWdlLmpzXCIpO1xuO1xuaW1wb3J0KC8qIHdlYnBhY2tNb2RlOiBcImVhZ2VyXCIgKi8gXCIvVXNlcnMvamV0dGNoZW5nMTAxOC9jb2RlL2RyYW1hbGluZy12b2NhYi1sZWFybmluZy9mcm9udGVuZC9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL2NsaWVudC1zZWdtZW50LmpzXCIpO1xuO1xuaW1wb3J0KC8qIHdlYnBhY2tNb2RlOiBcImVhZ2VyXCIgKi8gXCIvVXNlcnMvamV0dGNoZW5nMTAxOC9jb2RlL2RyYW1hbGluZy12b2NhYi1sZWFybmluZy9mcm9udGVuZC9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL2h0dHAtYWNjZXNzLWZhbGxiYWNrL2Vycm9yLWJvdW5kYXJ5LmpzXCIpO1xuO1xuaW1wb3J0KC8qIHdlYnBhY2tNb2RlOiBcImVhZ2VyXCIgKi8gXCIvVXNlcnMvamV0dGNoZW5nMTAxOC9jb2RlL2RyYW1hbGluZy12b2NhYi1sZWFybmluZy9mcm9udGVuZC9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL2xheW91dC1yb3V0ZXIuanNcIik7XG47XG5pbXBvcnQoLyogd2VicGFja01vZGU6IFwiZWFnZXJcIiAqLyBcIi9Vc2Vycy9qZXR0Y2hlbmcxMDE4L2NvZGUvZHJhbWFsaW5nLXZvY2FiLWxlYXJuaW5nL2Zyb250ZW5kL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvbWV0YWRhdGEvYXN5bmMtbWV0YWRhdGEuanNcIik7XG47XG5pbXBvcnQoLyogd2VicGFja01vZGU6IFwiZWFnZXJcIiAqLyBcIi9Vc2Vycy9qZXR0Y2hlbmcxMDE4L2NvZGUvZHJhbWFsaW5nLXZvY2FiLWxlYXJuaW5nL2Zyb250ZW5kL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvcmVuZGVyLWZyb20tdGVtcGxhdGUtY29udGV4dC5qc1wiKTtcbjtcbmltcG9ydCgvKiB3ZWJwYWNrTW9kZTogXCJlYWdlclwiICovIFwiL1VzZXJzL2pldHRjaGVuZzEwMTgvY29kZS9kcmFtYWxpbmctdm9jYWItbGVhcm5pbmcvZnJvbnRlbmQvbm9kZV9tb2R1bGVzL25leHQvZGlzdC9saWIvZnJhbWV3b3JrL2JvdW5kYXJ5LWNvbXBvbmVudHMuanNcIik7XG47XG5pbXBvcnQoLyogd2VicGFja01vZGU6IFwiZWFnZXJcIiAqLyBcIi9Vc2Vycy9qZXR0Y2hlbmcxMDE4L2NvZGUvZHJhbWFsaW5nLXZvY2FiLWxlYXJuaW5nL2Zyb250ZW5kL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvbGliL21ldGFkYXRhL2dlbmVyYXRlL2ljb24tbWFyay5qc1wiKTtcbjtcbmltcG9ydCgvKiB3ZWJwYWNrTW9kZTogXCJlYWdlclwiICovIFwiL1VzZXJzL2pldHRjaGVuZzEwMTgvY29kZS9kcmFtYWxpbmctdm9jYWItbGVhcm5pbmcvZnJvbnRlbmQvbm9kZV9tb2R1bGVzL25leHQvZGlzdC9uZXh0LWRldnRvb2xzL3VzZXJzcGFjZS9hcHAvc2VnbWVudC1leHBsb3Jlci1ub2RlLmpzXCIpO1xuIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%7B%22request%22%3A%22%2FUsers%2Fjettcheng1018%2Fcode%2Fdramaling-vocab-learning%2Ffrontend%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fbuiltin%2Fglobal-error.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fjettcheng1018%2Fcode%2Fdramaling-vocab-learning%2Ffrontend%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fclient-page.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fjettcheng1018%2Fcode%2Fdramaling-vocab-learning%2Ffrontend%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fclient-segment.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fjettcheng1018%2Fcode%2Fdramaling-vocab-learning%2Ffrontend%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fhttp-access-fallback%2Ferror-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fjettcheng1018%2Fcode%2Fdramaling-vocab-learning%2Ffrontend%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Flayout-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fjettcheng1018%2Fcode%2Fdramaling-vocab-learning%2Ffrontend%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fmetadata%2Fasync-metadata.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fjettcheng1018%2Fcode%2Fdramaling-vocab-learning%2Ffrontend%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Frender-from-template-context.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fjettcheng1018%2Fcode%2Fdramaling-vocab-learning%2Ffrontend%2Fnode_modules%2Fnext%2Fdist%2Flib%2Fframework%2Fboundary-components.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fjettcheng1018%2Fcode%2Fdramaling-vocab-learning%2Ffrontend%2Fnode_modules%2Fnext%2Fdist%2Flib%2Fmetadata%2Fgenerate%2Ficon-mark.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fjettcheng1018%2Fcode%2Fdramaling-vocab-learning%2Ffrontend%2Fnode_modules%2Fnext%2Fdist%2Fnext-devtools%2Fuserspace%2Fapp%2Fsegment-explorer-node.js%22%2C%22ids%22%3A%5B%5D%7D&server=true!\n"); + +/***/ }), + +/***/ "(ssr)/./app/generate/page.tsx": +/*!*******************************!*\ + !*** ./app/generate/page.tsx ***! + \*******************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ GeneratePage)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react-jsx-dev-runtime.js\");\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! next/link */ \"(ssr)/./node_modules/next/dist/client/app-dir/link.js\");\n/* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(next_link__WEBPACK_IMPORTED_MODULE_2__);\n/* __next_internal_client_entry_do_not_use__ default auto */ \n\n\nfunction GeneratePage() {\n const [mode, setMode] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)('manual');\n const [textInput, setTextInput] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)('');\n const [extractionType, setExtractionType] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)('vocabulary');\n const [cardCount, setCardCount] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(10);\n const [isGenerating, setIsGenerating] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n const [generatedCards, setGeneratedCards] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)([]);\n const [showPreview, setShowPreview] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n const [isPremium] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false) // Mock premium status\n ;\n const [showImageForCard, setShowImageForCard] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)({}) // Track which cards show images\n ;\n const [modalImage, setModalImage] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null) // Track modal image\n ;\n const mockGeneratedCards = [\n {\n id: 1,\n word: 'brought',\n partOfSpeech: 'verb',\n pronunciation: {\n us: '/brɔːt/',\n uk: '/brɔːt/'\n },\n translation: '提出、帶來',\n definition: 'Past tense of bring; to mention or introduce a topic in conversation',\n synonyms: [\n 'mentioned',\n 'raised',\n 'introduced'\n ],\n antonyms: [\n 'concealed',\n 'withheld'\n ],\n originalExample: 'He brought this thing up during our meeting and no one agreed.',\n originalExampleTranslation: '他在我們的會議中提出了這件事,但沒有人同意。',\n generatedExample: {\n sentence: 'She brought up an interesting point about the budget.',\n translation: '她提出了一個關於預算的有趣觀點。',\n imageUrl: '/images/examples/bring_up.png',\n audioUrl: '#'\n },\n difficulty: 'B1'\n },\n {\n id: 2,\n word: 'instincts',\n partOfSpeech: 'noun',\n pronunciation: {\n us: '/ˈɪnstɪŋkts/',\n uk: '/ˈɪnstɪŋkts/'\n },\n translation: '本能、直覺',\n definition: 'Natural abilities that help living things survive without learning',\n synonyms: [\n 'intuition',\n 'impulse',\n 'tendency'\n ],\n antonyms: [\n 'logic',\n 'reasoning'\n ],\n originalExample: 'Animals use their instincts to find food and stay safe.',\n originalExampleTranslation: '動物利用本能來尋找食物並保持安全。',\n generatedExample: {\n sentence: 'Trust your instincts when making important decisions.',\n translation: '在做重要決定時要相信你的直覺。',\n imageUrl: '/images/examples/instinct.png',\n audioUrl: '#'\n },\n difficulty: 'B2'\n },\n {\n id: 3,\n word: 'warrants',\n partOfSpeech: 'noun',\n pronunciation: {\n us: '/ˈwɔːrənts/',\n uk: '/ˈwɒrənts/'\n },\n translation: '搜查令、授權令',\n definition: 'Official documents that give police permission to do something',\n synonyms: [\n 'authorization',\n 'permit',\n 'license'\n ],\n antonyms: [\n 'prohibition',\n 'ban'\n ],\n originalExample: 'The police obtained warrants to search the building.',\n originalExampleTranslation: '警方取得了搜查令來搜查這棟建築物。',\n generatedExample: {\n sentence: 'The judge issued arrest warrants for three suspects.',\n translation: '法官對三名嫌疑人發出了逮捕令。',\n imageUrl: '/images/examples/warrant.png',\n audioUrl: '#'\n },\n difficulty: 'C1'\n }\n ];\n const handleGenerate = ()=>{\n setIsGenerating(true);\n // Simulate AI generation\n setTimeout(()=>{\n setGeneratedCards(mockGeneratedCards);\n setShowPreview(true);\n setIsGenerating(false);\n }, 2000);\n };\n const handleSaveCards = ()=>{\n // Mock save action\n alert('詞卡已保存到您的卡組!');\n };\n const toggleImageForCard = (cardId)=>{\n setShowImageForCard((prev)=>({\n ...prev,\n [cardId]: !prev[cardId]\n }));\n };\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"min-h-screen bg-gray-50\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"nav\", {\n className: \"bg-white shadow-sm border-b\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"max-w-7xl mx-auto px-4 sm:px-6 lg:px-8\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex justify-between h-16\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center space-x-8\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_link__WEBPACK_IMPORTED_MODULE_2___default()), {\n href: \"/dashboard\",\n className: \"text-2xl font-bold text-primary\",\n children: \"DramaLing\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 116,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"hidden md:flex space-x-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_link__WEBPACK_IMPORTED_MODULE_2___default()), {\n href: \"/dashboard\",\n className: \"text-gray-600 hover:text-gray-900\",\n children: \"儀表板\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 118,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_link__WEBPACK_IMPORTED_MODULE_2___default()), {\n href: \"/flashcards\",\n className: \"text-gray-600 hover:text-gray-900\",\n children: \"詞卡\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 119,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_link__WEBPACK_IMPORTED_MODULE_2___default()), {\n href: \"/learn\",\n className: \"text-gray-600 hover:text-gray-900\",\n children: \"學習\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 120,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_link__WEBPACK_IMPORTED_MODULE_2___default()), {\n href: \"/generate\",\n className: \"text-gray-900 font-medium\",\n children: \"AI 生成\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 121,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 117,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 115,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 114,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 113,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 112,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-8\",\n children: !showPreview ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"max-w-4xl mx-auto\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h1\", {\n className: \"text-3xl font-bold mb-8\",\n children: \"AI 智能生成詞卡\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 131,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-white rounded-xl shadow-sm p-6 mb-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h2\", {\n className: \"text-lg font-semibold mb-4\",\n children: \"原始例句類型\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 135,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid grid-cols-2 gap-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>setMode('manual'),\n className: `p-4 rounded-lg border-2 transition-all ${mode === 'manual' ? 'border-primary bg-primary-light' : 'border-gray-200 hover:border-gray-300'}`,\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-2xl mb-2\",\n children: \"✍️\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 145,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"font-semibold\",\n children: \"手動輸入\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 146,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm text-gray-600 mt-1\",\n children: \"貼上或輸入英文文本\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 147,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 137,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>setMode('screenshot'),\n disabled: !isPremium,\n className: `p-4 rounded-lg border-2 transition-all relative ${mode === 'screenshot' ? 'border-primary bg-primary-light' : isPremium ? 'border-gray-200 hover:border-gray-300' : 'border-gray-200 bg-gray-100 cursor-not-allowed opacity-60'}`,\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-2xl mb-2\",\n children: \"\\uD83D\\uDCF7\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 160,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"font-semibold\",\n children: \"影劇截圖\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 161,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm text-gray-600 mt-1\",\n children: \"上傳影劇截圖 (Phase 2)\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 162,\n columnNumber: 19\n }, this),\n !isPremium && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute top-2 right-2 px-2 py-1 bg-yellow-100 text-yellow-700 text-xs rounded-full\",\n children: \"訂閱功能\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 164,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 149,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 136,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 134,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-white rounded-xl shadow-sm p-6 mb-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h2\", {\n className: \"text-lg font-semibold mb-4\",\n children: \"萃取方式\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 174,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid grid-cols-2 gap-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>setExtractionType('vocabulary'),\n className: `p-4 rounded-lg border-2 transition-all ${extractionType === 'vocabulary' ? 'border-primary bg-primary-light' : 'border-gray-200 hover:border-gray-300'}`,\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-2xl mb-2\",\n children: \"\\uD83D\\uDCD6\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 184,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"font-semibold\",\n children: \"詞彙萃取\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 185,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm text-gray-600 mt-1\",\n children: \"查詢字典 API 並標記 CEFR\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 186,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 176,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>setExtractionType('smart'),\n className: `p-4 rounded-lg border-2 transition-all ${extractionType === 'smart' ? 'border-primary bg-primary-light' : 'border-gray-200 hover:border-gray-300'}`,\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-2xl mb-2\",\n children: \"\\uD83E\\uDD16\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 196,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"font-semibold\",\n children: \"智能萃取\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 197,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm text-gray-600 mt-1\",\n children: \"AI 分析片語和俚語\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 198,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 188,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 175,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 173,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-white rounded-xl shadow-sm p-6 mb-6\",\n children: mode === 'manual' ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h2\", {\n className: \"text-lg font-semibold mb-4\",\n children: \"輸入英文文本\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 207,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"textarea\", {\n value: textInput,\n onChange: (e)=>setTextInput(e.target.value),\n placeholder: \"貼上您想要學習的英文文本,例如影劇對話、文章段落...\",\n className: \"w-full h-40 px-4 py-3 border border-gray-300 rounded-lg focus:ring-2 focus:ring-primary focus:border-transparent outline-none resize-none\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 208,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mt-2 text-sm text-gray-600\",\n children: [\n \"最多 5000 字元 • 目前:\",\n textInput.length,\n \" 字元\"\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 214,\n columnNumber: 19\n }, this),\n extractionType === 'vocabulary' ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mt-4 p-3 bg-blue-50 rounded-lg\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm text-blue-800\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"strong\", {\n children: \"\\uD83D\\uDCD6 詞彙萃取模式\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 222,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"ul\", {\n className: \"mt-2 space-y-1 text-xs\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"li\", {\n children: \"• 將每個單字查詢字典 API\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 224,\n columnNumber: 27\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"li\", {\n children: \"• 自動標記 CEFR 難度等級\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 225,\n columnNumber: 27\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"li\", {\n children: \"• 提供完整定義和例句\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 226,\n columnNumber: 27\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 223,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 221,\n columnNumber: 23\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 220,\n columnNumber: 21\n }, this) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mt-4 p-3 bg-purple-50 rounded-lg\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm text-purple-800\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"strong\", {\n children: \"\\uD83E\\uDD16 智能萃取模式\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 233,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"ul\", {\n className: \"mt-2 space-y-1 text-xs\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"li\", {\n children: \"• AI 分析常用片語和俚語\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 235,\n columnNumber: 27\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"li\", {\n children: \"• 生成相關詞彙內容\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 236,\n columnNumber: 27\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"li\", {\n children: \"• 提供文化背景說明\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 237,\n columnNumber: 27\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 234,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 232,\n columnNumber: 23\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 231,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 206,\n columnNumber: 17\n }, this) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h2\", {\n className: \"text-lg font-semibold mb-4\",\n children: \"上傳影劇截圖\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 245,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"border-2 border-dashed border-gray-300 rounded-lg p-8 text-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-4xl mb-3\",\n children: \"\\uD83D\\uDCF7\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 247,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-gray-600 mb-2\",\n children: \"點擊或拖拳上傳截圖\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 248,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm text-gray-500\",\n children: \"支持 JPG, PNG 格式,最大 10MB\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 249,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mt-4\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"inline-block px-4 py-2 bg-gray-100 text-gray-400 rounded-lg\",\n children: \"Phase 2 功能開發中\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 251,\n columnNumber: 23\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 250,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 246,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 244,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 204,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-white rounded-xl shadow-sm p-6 mb-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h2\", {\n className: \"text-lg font-semibold mb-4\",\n children: \"生成設定\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 262,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-y-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"label\", {\n className: \"block text-sm font-medium text-gray-700 mb-2\",\n children: [\n \"生成數量:\",\n cardCount,\n \" 個詞卡\"\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 265,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"range\",\n min: \"5\",\n max: \"20\",\n value: cardCount,\n onChange: (e)=>setCardCount(Number(e.target.value)),\n className: \"w-full\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 268,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex justify-between text-xs text-gray-500 mt-1\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n children: \"5\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 277,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n children: \"預設 10\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 278,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n children: \"20\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 279,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 276,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 264,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"p-3 bg-gray-50 rounded-lg\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm\",\n children: isPremium ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-green-700\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"strong\", {\n children: \"\\uD83C\\uDF1F 訂閱用戶\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 288,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs mt-1\",\n children: [\n \"• 每天最多生成 50 張例句圖\",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"br\", {}, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 291,\n columnNumber: 27\n }, this),\n \"• 今日已使用:0/50\"\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 289,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 287,\n columnNumber: 23\n }, this) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-gray-700\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"strong\", {\n children: \"\\uD83C\\uDD93 免費用戶\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 297,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs mt-1\",\n children: [\n \"• 無法自行生成例句圖\",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"br\", {}, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 300,\n columnNumber: 27\n }, this),\n \"• 可使用系統現成例句圖\",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"br\", {}, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 302,\n columnNumber: 27\n }, this),\n \"• 每日學習數量無限制\"\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 298,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 296,\n columnNumber: 23\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 285,\n columnNumber: 19\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 284,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 263,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 261,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: handleGenerate,\n disabled: isGenerating || mode === 'manual' && !textInput || mode === 'screenshot',\n className: \"w-full bg-primary text-white py-4 rounded-lg font-semibold hover:bg-primary-hover transition-colors disabled:opacity-50 disabled:cursor-not-allowed\",\n children: isGenerating ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"flex items-center justify-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n className: \"animate-spin -ml-1 mr-3 h-5 w-5 text-white\",\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"circle\", {\n className: \"opacity-25\",\n cx: \"12\",\n cy: \"12\",\n r: \"10\",\n stroke: \"currentColor\",\n strokeWidth: \"4\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 321,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"path\", {\n className: \"opacity-75\",\n fill: \"currentColor\",\n d: \"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 322,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 320,\n columnNumber: 19\n }, this),\n \"正在萃取詞彙中...\"\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 319,\n columnNumber: 17\n }, this) : extractionType === 'vocabulary' ? '📖 開始詞彙萃取' : '🤖 開始智能萃取'\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 313,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 130,\n columnNumber: 11\n }, this) : /* Preview Generated Cards */ /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"max-w-6xl mx-auto\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center justify-between mb-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h1\", {\n className: \"text-3xl font-bold\",\n children: \"生成結果預覽\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 337,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>setShowPreview(false),\n className: \"text-gray-600 hover:text-gray-900\",\n children: \"← 返回\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 338,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 336,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-white rounded-xl shadow-sm p-6 mb-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center justify-between mb-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h2\", {\n className: \"text-lg font-semibold\",\n children: [\n \"已生成 \",\n generatedCards.length,\n \" 個詞卡\"\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 348,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-x-3\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n className: \"text-primary hover:text-primary-hover font-medium\",\n children: \"重新生成\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 350,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: handleSaveCards,\n className: \"bg-primary text-white px-6 py-2 rounded-lg font-medium hover:bg-primary-hover transition-colors\",\n children: \"保存到卡組\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 353,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 349,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 347,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid grid-cols-1 lg:grid-cols-2 gap-6\",\n children: generatedCards.map((card)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"border rounded-lg p-5 hover:shadow-lg transition-shadow\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-start justify-between mb-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h3\", {\n className: \"text-xl font-bold\",\n children: card.word\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 367,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-4 mt-1\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-sm text-gray-600\",\n children: card.partOfSpeech\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 369,\n columnNumber: 27\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n className: \"text-xs bg-gray-100 px-2 py-1 rounded hover:bg-gray-200\",\n children: [\n \"\\uD83C\\uDDFA\\uD83C\\uDDF8 \",\n card.pronunciation.us\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 371,\n columnNumber: 29\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n className: \"text-xs bg-gray-100 px-2 py-1 rounded hover:bg-gray-200\",\n children: [\n \"\\uD83C\\uDDEC\\uD83C\\uDDE7 \",\n card.pronunciation.uk\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 374,\n columnNumber: 29\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n className: \"text-primary hover:text-primary-hover\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n className: \"w-4 h-4\",\n fill: \"none\",\n stroke: \"currentColor\",\n viewBox: \"0 0 24 24\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n d: \"M15.536 8.464a5 5 0 010 7.072m2.828-9.9a9 9 0 010 12.728M5.586 15H4a1 1 0 01-1-1v-4a1 1 0 011-1h1.586l4.707-4.707C10.923 3.663 12 4.109 12 5v14c0 .891-1.077 1.337-1.707.707L5.586 15z\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 379,\n columnNumber: 33\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 378,\n columnNumber: 31\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 377,\n columnNumber: 29\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 370,\n columnNumber: 27\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 368,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 366,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n className: \"text-red-500 hover:text-red-700 text-2xl\",\n children: \"\\xd7\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 385,\n columnNumber: 23\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 365,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-y-3\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm font-semibold text-gray-700\",\n children: \"翻譯\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 390,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-base font-medium\",\n children: card.translation\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 391,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 389,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm font-semibold text-gray-700\",\n children: \"定義\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 395,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm text-gray-600\",\n children: card.definition\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 396,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 394,\n columnNumber: 23\n }, this),\n card.synonyms.length > 0 && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm font-semibold text-gray-700\",\n children: \"同義詞\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 401,\n columnNumber: 27\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-wrap gap-2 mt-1\",\n children: card.synonyms.map((syn, idx)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"px-2 py-1 bg-blue-100 text-blue-700 rounded-full text-xs\",\n children: syn\n }, idx, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 404,\n columnNumber: 31\n }, this))\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 402,\n columnNumber: 27\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 400,\n columnNumber: 25\n }, this),\n card.antonyms.length > 0 && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm font-semibold text-gray-700\",\n children: \"反義詞\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 414,\n columnNumber: 27\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-wrap gap-2 mt-1\",\n children: card.antonyms.map((ant, idx)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"px-2 py-1 bg-red-100 text-red-700 rounded-full text-xs\",\n children: ant\n }, idx, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 417,\n columnNumber: 31\n }, this))\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 415,\n columnNumber: 27\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 413,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm font-semibold text-gray-700 mb-2\",\n children: \"例句\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 426,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-y-3\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"border-l-2 border-gray-400 pl-3\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-start justify-between\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs text-gray-500 mb-1\",\n children: \"原始例句(來自輸入文本)\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 432,\n columnNumber: 33\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm text-gray-800\",\n children: card.originalExample.split(card.word).map((part, i)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n children: [\n part,\n i < card.originalExample.split(card.word).length - 1 && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"font-bold text-primary\",\n children: card.word\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 438,\n columnNumber: 41\n }, this)\n ]\n }, i, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 435,\n columnNumber: 37\n }, this))\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 433,\n columnNumber: 33\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm text-gray-500 mt-1\",\n children: card.originalExampleTranslation\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 443,\n columnNumber: 33\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 431,\n columnNumber: 31\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-1 ml-2\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n className: \"text-gray-400 hover:text-primary\",\n title: \"播放例句\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n className: \"w-4 h-4\",\n fill: \"none\",\n stroke: \"currentColor\",\n viewBox: \"0 0 24 24\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n d: \"M14.752 11.168l-3.197-2.132A1 1 0 0010 9.87v4.263a1 1 0 001.555.832l3.197-2.132a1 1 0 000-1.664z\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 448,\n columnNumber: 37\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n d: \"M21 12a9 9 0 11-18 0 9 9 0 0118 0z\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 449,\n columnNumber: 37\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 447,\n columnNumber: 35\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 446,\n columnNumber: 33\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 445,\n columnNumber: 31\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 430,\n columnNumber: 29\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 429,\n columnNumber: 27\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"border-l-2 border-primary pl-3\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-start justify-between\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs text-primary mb-1\",\n children: \"AI 生成例句\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 460,\n columnNumber: 33\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm text-gray-800\",\n children: card.generatedExample.sentence.split(card.word).map((part, i)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n children: [\n part,\n i < card.generatedExample.sentence.split(card.word).length - 1 && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"font-bold text-primary\",\n children: card.word\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 466,\n columnNumber: 41\n }, this)\n ]\n }, i, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 463,\n columnNumber: 37\n }, this))\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 461,\n columnNumber: 33\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm text-gray-500 mt-1\",\n children: card.generatedExample.translation\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 471,\n columnNumber: 33\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 459,\n columnNumber: 31\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-1 ml-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n className: \"text-gray-400 hover:text-primary\",\n title: \"播放例句\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n className: \"w-4 h-4\",\n fill: \"none\",\n stroke: \"currentColor\",\n viewBox: \"0 0 24 24\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n d: \"M14.752 11.168l-3.197-2.132A1 1 0 0010 9.87v4.263a1 1 0 001.555.832l3.197-2.132a1 1 0 000-1.664z\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 476,\n columnNumber: 37\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n d: \"M21 12a9 9 0 11-18 0 9 9 0 0118 0z\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 477,\n columnNumber: 37\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 475,\n columnNumber: 35\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 474,\n columnNumber: 33\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>toggleImageForCard(card.id),\n className: `${showImageForCard[card.id] ? 'text-primary' : 'text-gray-400'} hover:text-primary`,\n title: showImageForCard[card.id] ? \"隱藏例句圖\" : \"查看例句圖\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n className: \"w-4 h-4\",\n fill: \"none\",\n stroke: \"currentColor\",\n viewBox: \"0 0 24 24\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n d: \"M4 16l4.586-4.586a2 2 0 012.828 0L16 16m-2-2l1.586-1.586a2 2 0 012.828 0L20 14m-6-6h.01M6 20h12a2 2 0 002-2V6a2 2 0 00-2-2H6a2 2 0 00-2 2v12a2 2 0 002 2z\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 486,\n columnNumber: 37\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 485,\n columnNumber: 35\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 480,\n columnNumber: 33\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 473,\n columnNumber: 31\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 458,\n columnNumber: 29\n }, this),\n showImageForCard[card.id] && card.generatedExample.imageUrl && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mt-3 p-2 bg-gray-50 rounded-lg\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs text-gray-600 mb-2 flex items-center gap-1\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n className: \"w-3 h-3\",\n fill: \"none\",\n stroke: \"currentColor\",\n viewBox: \"0 0 24 24\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n d: \"M4 16l4.586-4.586a2 2 0 012.828 0L16 16m-2-2l1.586-1.586a2 2 0 012.828 0L20 14m-6-6h.01M6 20h12a2 2 0 002-2V6a2 2 0 00-2-2H6a2 2 0 00-2 2v12a2 2 0 002 2z\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 497,\n columnNumber: 37\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 496,\n columnNumber: 35\n }, this),\n \"例句情境圖\"\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 495,\n columnNumber: 33\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"img\", {\n src: card.generatedExample.imageUrl,\n alt: \"Example context\",\n className: \"w-full rounded-md shadow-sm cursor-pointer hover:shadow-lg transition-shadow\",\n style: {\n maxHeight: '250px',\n objectFit: 'contain',\n backgroundColor: 'white'\n },\n onClick: ()=>setModalImage(card.generatedExample.imageUrl)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 501,\n columnNumber: 33\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs text-gray-500 mt-2 text-center\",\n children: \"點擊圖片可放大查看\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 508,\n columnNumber: 33\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 494,\n columnNumber: 31\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 457,\n columnNumber: 27\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 427,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 425,\n columnNumber: 23\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 388,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mt-4 pt-3 border-t flex justify-between items-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-xs text-gray-500\",\n children: [\n \"難度:CEFR \",\n card.difficulty\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 517,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n className: \"text-primary text-sm hover:text-primary-hover font-medium\",\n children: \"編輯詞卡\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 518,\n columnNumber: 23\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 516,\n columnNumber: 21\n }, this)\n ]\n }, card.id, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 364,\n columnNumber: 19\n }, this))\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 362,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 346,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 335,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 128,\n columnNumber: 7\n }, this),\n modalImage && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"fixed inset-0 z-50 flex items-center justify-center bg-black bg-opacity-75 p-4\",\n onClick: ()=>setModalImage(null),\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"relative max-w-4xl max-h-[90vh] bg-white rounded-lg overflow-hidden\",\n onClick: (e)=>e.stopPropagation(),\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>setModalImage(null),\n className: \"absolute top-2 right-2 z-10 p-2 bg-white bg-opacity-90 rounded-full hover:bg-opacity-100 transition-all shadow-lg\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n className: \"w-6 h-6 text-gray-700\",\n fill: \"none\",\n stroke: \"currentColor\",\n viewBox: \"0 0 24 24\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n d: \"M6 18L18 6M6 6l12 12\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 546,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 545,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 541,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"p-4\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"img\", {\n src: modalImage,\n alt: \"Example context enlarged\",\n className: \"w-full h-full object-contain\",\n style: {\n maxHeight: 'calc(90vh - 2rem)'\n }\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 552,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 551,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 536,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 532,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 110,\n columnNumber: 5\n }, this);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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LFdBQVU7O3NFQUNiLDhEQUFDa0I7NERBQUtsQixXQUFVOztnRUFBd0I7Z0VBQVN1QyxLQUFLaEQsVUFBVTs7Ozs7OztzRUFDaEUsOERBQUNjOzREQUFPTCxXQUFVO3NFQUE0RDs7Ozs7Ozs7Ozs7OzsyQ0ExSnhFdUMsS0FBS2hFLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZQXVLNUJILDRCQUNDLDhEQUFDMkI7Z0JBQ0NDLFdBQVU7Z0JBQ1ZNLFNBQVMsSUFBTWpDLGNBQWM7MEJBRTdCLDRFQUFDMEI7b0JBQ0NDLFdBQVU7b0JBQ1ZNLFNBQVMsQ0FBQ0ssSUFBTUEsRUFBRThDLGVBQWU7O3NDQUdqQyw4REFBQ3BEOzRCQUNDQyxTQUFTLElBQU1qQyxjQUFjOzRCQUM3QjJCLFdBQVU7c0NBRVYsNEVBQUMwQjtnQ0FBSTFCLFdBQVU7Z0NBQXdCNEIsTUFBSztnQ0FBT00sUUFBTztnQ0FBZUwsU0FBUTswQ0FDL0UsNEVBQUNPO29DQUFLSyxlQUFjO29DQUFRQyxnQkFBZTtvQ0FBUVAsYUFBYTtvQ0FBR0UsR0FBRTs7Ozs7Ozs7Ozs7Ozs7OztzQ0FLekUsOERBQUN0Qzs0QkFBSUMsV0FBVTtzQ0FDYiw0RUFBQ2tEO2dDQUNDQyxLQUFLL0U7Z0NBQ0xnRixLQUFJO2dDQUNKcEQsV0FBVTtnQ0FDVnFELE9BQU87b0NBQUVDLFdBQVc7Z0NBQW9COzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBUXhEIiwic291cmNlcyI6WyIvVXNlcnMvamV0dGNoZW5nMTAxOC9jb2RlL2RyYW1hbGluZy12b2NhYi1sZWFybmluZy9mcm9udGVuZC9hcHAvZ2VuZXJhdGUvcGFnZS50c3giXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBjbGllbnQnXG5cbmltcG9ydCB7IHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgTGluayBmcm9tICduZXh0L2xpbmsnXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEdlbmVyYXRlUGFnZSgpIHtcbiAgY29uc3QgW21vZGUsIHNldE1vZGVdID0gdXNlU3RhdGU8J21hbnVhbCcgfCAnc2NyZWVuc2hvdCc+KCdtYW51YWwnKVxuICBjb25zdCBbdGV4dElucHV0LCBzZXRUZXh0SW5wdXRdID0gdXNlU3RhdGUoJycpXG4gIGNvbnN0IFtleHRyYWN0aW9uVHlwZSwgc2V0RXh0cmFjdGlvblR5cGVdID0gdXNlU3RhdGU8J3ZvY2FidWxhcnknIHwgJ3NtYXJ0Jz4oJ3ZvY2FidWxhcnknKVxuICBjb25zdCBbY2FyZENvdW50LCBzZXRDYXJkQ291bnRdID0gdXNlU3RhdGUoMTApXG4gIGNvbnN0IFtpc0dlbmVyYXRpbmcsIHNldElzR2VuZXJhdGluZ10gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW2dlbmVyYXRlZENhcmRzLCBzZXRHZW5lcmF0ZWRDYXJkc10gPSB1c2VTdGF0ZTxhbnlbXT4oW10pXG4gIGNvbnN0IFtzaG93UHJldmlldywgc2V0U2hvd1ByZXZpZXddID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtpc1ByZW1pdW1dID0gdXNlU3RhdGUoZmFsc2UpIC8vIE1vY2sgcHJlbWl1bSBzdGF0dXNcbiAgY29uc3QgW3Nob3dJbWFnZUZvckNhcmQsIHNldFNob3dJbWFnZUZvckNhcmRdID0gdXNlU3RhdGU8eyBba2V5OiBudW1iZXJdOiBib29sZWFuIH0+KHt9KSAvLyBUcmFjayB3aGljaCBjYXJkcyBzaG93IGltYWdlc1xuICBjb25zdCBbbW9kYWxJbWFnZSwgc2V0TW9kYWxJbWFnZV0gPSB1c2VTdGF0ZTxzdHJpbmcgfCBudWxsPihudWxsKSAvLyBUcmFjayBtb2RhbCBpbWFnZVxuXG4gIGNvbnN0IG1vY2tHZW5lcmF0ZWRDYXJkcyA9IFtcbiAgICB7XG4gICAgICBpZDogMSxcbiAgICAgIHdvcmQ6ICdicm91Z2h0JyxcbiAgICAgIHBhcnRPZlNwZWVjaDogJ3ZlcmInLFxuICAgICAgcHJvbnVuY2lhdGlvbjoge1xuICAgICAgICB1czogJy9icsmUy5B0LycsXG4gICAgICAgIHVrOiAnL2JyyZTLkHQvJ1xuICAgICAgfSxcbiAgICAgIHRyYW5zbGF0aW9uOiAn5o+Q5Ye644CB5bi25L6GJyxcbiAgICAgIGRlZmluaXRpb246ICdQYXN0IHRlbnNlIG9mIGJyaW5nOyB0byBtZW50aW9uIG9yIGludHJvZHVjZSBhIHRvcGljIGluIGNvbnZlcnNhdGlvbicsXG4gICAgICBzeW5vbnltczogWydtZW50aW9uZWQnLCAncmFpc2VkJywgJ2ludHJvZHVjZWQnXSxcbiAgICAgIGFudG9ueW1zOiBbJ2NvbmNlYWxlZCcsICd3aXRoaGVsZCddLFxuICAgICAgb3JpZ2luYWxFeGFtcGxlOiAnSGUgYnJvdWdodCB0aGlzIHRoaW5nIHVwIGR1cmluZyBvdXIgbWVldGluZyBhbmQgbm8gb25lIGFncmVlZC4nLFxuICAgICAgb3JpZ2luYWxFeGFtcGxlVHJhbnNsYXRpb246ICfku5blnKjmiJHlgJHnmoTmnIPorbDkuK3mj5Dlh7rkuobpgJnku7bkuovvvIzkvYbmspLmnInkurrlkIzmhI/jgIInLFxuICAgICAgZ2VuZXJhdGVkRXhhbXBsZToge1xuICAgICAgICBzZW50ZW5jZTogJ1NoZSBicm91Z2h0IHVwIGFuIGludGVyZXN0aW5nIHBvaW50IGFib3V0IHRoZSBidWRnZXQuJyxcbiAgICAgICAgdHJhbnNsYXRpb246ICflpbnmj5Dlh7rkuobkuIDlgIvpl5zmlrzpoJDnrpfnmoTmnInotqPop4Dpu57jgIInLFxuICAgICAgICBpbWFnZVVybDogJy9pbWFnZXMvZXhhbXBsZXMvYnJpbmdfdXAucG5nJyxcbiAgICAgICAgYXVkaW9Vcmw6ICcjJ1xuICAgICAgfSxcbiAgICAgIGRpZmZpY3VsdHk6ICdCMSdcbiAgICB9LFxuICAgIHtcbiAgICAgIGlkOiAyLFxuICAgICAgd29yZDogJ2luc3RpbmN0cycsXG4gICAgICBwYXJ0T2ZTcGVlY2g6ICdub3VuJyxcbiAgICAgIHByb251bmNpYXRpb246IHtcbiAgICAgICAgdXM6ICcvy4jJqm5zdMmqxYtrdHMvJyxcbiAgICAgICAgdWs6ICcvy4jJqm5zdMmqxYtrdHMvJ1xuICAgICAgfSxcbiAgICAgIHRyYW5zbGF0aW9uOiAn5pys6IO944CB55u06Ka6JyxcbiAgICAgIGRlZmluaXRpb246ICdOYXR1cmFsIGFiaWxpdGllcyB0aGF0IGhlbHAgbGl2aW5nIHRoaW5ncyBzdXJ2aXZlIHdpdGhvdXQgbGVhcm5pbmcnLFxuICAgICAgc3lub255bXM6IFsnaW50dWl0aW9uJywgJ2ltcHVsc2UnLCAndGVuZGVuY3knXSxcbiAgICAgIGFudG9ueW1zOiBbJ2xvZ2ljJywgJ3JlYXNvbmluZyddLFxuICAgICAgb3JpZ2luYWxFeGFtcGxlOiAnQW5pbWFscyB1c2UgdGhlaXIgaW5zdGluY3RzIHRvIGZpbmQgZm9vZCBhbmQgc3RheSBzYWZlLicsXG4gICAgICBvcmlnaW5hbEV4YW1wbGVUcmFuc2xhdGlvbjogJ+WLleeJqeWIqeeUqOacrOiDveS+huWwi+aJvumjn+eJqeS4puS/neaMgeWuieWFqOOAgicsXG4gICAgICBnZW5lcmF0ZWRFeGFtcGxlOiB7XG4gICAgICAgIHNlbnRlbmNlOiAnVHJ1c3QgeW91ciBpbnN0aW5jdHMgd2hlbiBtYWtpbmcgaW1wb3J0YW50IGRlY2lzaW9ucy4nLFxuICAgICAgICB0cmFuc2xhdGlvbjogJ+WcqOWBmumHjeimgeaxuuWumuaZguimgeebuOS/oeS9oOeahOebtOimuuOAgicsXG4gICAgICAgIGltYWdlVXJsOiAnL2ltYWdlcy9leGFtcGxlcy9pbnN0aW5jdC5wbmcnLFxuICAgICAgICBhdWRpb1VybDogJyMnXG4gICAgICB9LFxuICAgICAgZGlmZmljdWx0eTogJ0IyJ1xuICAgIH0sXG4gICAge1xuICAgICAgaWQ6IDMsXG4gICAgICB3b3JkOiAnd2FycmFudHMnLFxuICAgICAgcGFydE9mU3BlZWNoOiAnbm91bicsXG4gICAgICBwcm9udW5jaWF0aW9uOiB7XG4gICAgICAgIHVzOiAnL8uId8mUy5ByyZludHMvJyxcbiAgICAgICAgdWs6ICcvy4h3yZJyyZludHMvJ1xuICAgICAgfSxcbiAgICAgIHRyYW5zbGF0aW9uOiAn5pCc5p+l5Luk44CB5o6I5qyK5LukJyxcbiAgICAgIGRlZmluaXRpb246ICdPZmZpY2lhbCBkb2N1bWVudHMgdGhhdCBnaXZlIHBvbGljZSBwZXJtaXNzaW9uIHRvIGRvIHNvbWV0aGluZycsXG4gICAgICBzeW5vbnltczogWydhdXRob3JpemF0aW9uJywgJ3Blcm1pdCcsICdsaWNlbnNlJ10sXG4gICAgICBhbnRvbnltczogWydwcm9oaWJpdGlvbicsICdiYW4nXSxcbiAgICAgIG9yaWdpbmFsRXhhbXBsZTogJ1RoZSBwb2xpY2Ugb2J0YWluZWQgd2FycmFudHMgdG8gc2VhcmNoIHRoZSBidWlsZGluZy4nLFxuICAgICAgb3JpZ2luYWxFeGFtcGxlVHJhbnNsYXRpb246ICforabmlrnlj5blvpfkuobmkJzmn6Xku6TkvobmkJzmn6XpgJnmo5/lu7rnr4nnianjgIInLFxuICAgICAgZ2VuZXJhdGVkRXhhbXBsZToge1xuICAgICAgICBzZW50ZW5jZTogJ1RoZSBqdWRnZSBpc3N1ZWQgYXJyZXN0IHdhcnJhbnRzIGZvciB0aHJlZSBzdXNwZWN0cy4nLFxuICAgICAgICB0cmFuc2xhdGlvbjogJ+azleWumOWwjeS4ieWQjeWrjOeWkeS6uueZvOWHuuS6humAruaNleS7pOOAgicsXG4gICAgICAgIGltYWdlVXJsOiAnL2ltYWdlcy9leGFtcGxlcy93YXJyYW50LnBuZycsXG4gICAgICAgIGF1ZGlvVXJsOiAnIydcbiAgICAgIH0sXG4gICAgICBkaWZmaWN1bHR5OiAnQzEnXG4gICAgfVxuICBdXG5cbiAgY29uc3QgaGFuZGxlR2VuZXJhdGUgPSAoKSA9PiB7XG4gICAgc2V0SXNHZW5lcmF0aW5nKHRydWUpXG4gICAgLy8gU2ltdWxhdGUgQUkgZ2VuZXJhdGlvblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgc2V0R2VuZXJhdGVkQ2FyZHMobW9ja0dlbmVyYXRlZENhcmRzKVxuICAgICAgc2V0U2hvd1ByZXZpZXcodHJ1ZSlcbiAgICAgIHNldElzR2VuZXJhdGluZyhmYWxzZSlcbiAgICB9LCAyMDAwKVxuICB9XG5cbiAgY29uc3QgaGFuZGxlU2F2ZUNhcmRzID0gKCkgPT4ge1xuICAgIC8vIE1vY2sgc2F2ZSBhY3Rpb25cbiAgICBhbGVydCgn6Kme5Y2h5bey5L+d5a2Y5Yiw5oKo55qE5Y2h57WE77yBJylcbiAgfVxuXG4gIGNvbnN0IHRvZ2dsZUltYWdlRm9yQ2FyZCA9IChjYXJkSWQ6IG51bWJlcikgPT4ge1xuICAgIHNldFNob3dJbWFnZUZvckNhcmQocHJldiA9PiAoe1xuICAgICAgLi4ucHJldixcbiAgICAgIFtjYXJkSWRdOiAhcHJldltjYXJkSWRdXG4gICAgfSkpXG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwibWluLWgtc2NyZWVuIGJnLWdyYXktNTBcIj5cbiAgICAgIHsvKiBOYXZpZ2F0aW9uICovfVxuICAgICAgPG5hdiBjbGFzc05hbWU9XCJiZy13aGl0ZSBzaGFkb3ctc20gYm9yZGVyLWJcIj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtYXgtdy03eGwgbXgtYXV0byBweC00IHNtOnB4LTYgbGc6cHgtOFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBqdXN0aWZ5LWJldHdlZW4gaC0xNlwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBzcGFjZS14LThcIj5cbiAgICAgICAgICAgICAgPExpbmsgaHJlZj1cIi9kYXNoYm9hcmRcIiBjbGFzc05hbWU9XCJ0ZXh0LTJ4bCBmb250LWJvbGQgdGV4dC1wcmltYXJ5XCI+RHJhbWFMaW5nPC9MaW5rPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImhpZGRlbiBtZDpmbGV4IHNwYWNlLXgtNlwiPlxuICAgICAgICAgICAgICAgIDxMaW5rIGhyZWY9XCIvZGFzaGJvYXJkXCIgY2xhc3NOYW1lPVwidGV4dC1ncmF5LTYwMCBob3Zlcjp0ZXh0LWdyYXktOTAwXCI+5YSA6KGo5p2/PC9MaW5rPlxuICAgICAgICAgICAgICAgIDxMaW5rIGhyZWY9XCIvZmxhc2hjYXJkc1wiIGNsYXNzTmFtZT1cInRleHQtZ3JheS02MDAgaG92ZXI6dGV4dC1ncmF5LTkwMFwiPuipnuWNoTwvTGluaz5cbiAgICAgICAgICAgICAgICA8TGluayBocmVmPVwiL2xlYXJuXCIgY2xhc3NOYW1lPVwidGV4dC1ncmF5LTYwMCBob3Zlcjp0ZXh0LWdyYXktOTAwXCI+5a2457+SPC9MaW5rPlxuICAgICAgICAgICAgICAgIDxMaW5rIGhyZWY9XCIvZ2VuZXJhdGVcIiBjbGFzc05hbWU9XCJ0ZXh0LWdyYXktOTAwIGZvbnQtbWVkaXVtXCI+QUkg55Sf5oiQPC9MaW5rPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmF2PlxuXG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1heC13LTd4bCBteC1hdXRvIHB4LTQgc206cHgtNiBsZzpweC04IHB5LThcIj5cbiAgICAgICAgeyFzaG93UHJldmlldyA/IChcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1heC13LTR4bCBteC1hdXRvXCI+XG4gICAgICAgICAgICA8aDEgY2xhc3NOYW1lPVwidGV4dC0zeGwgZm9udC1ib2xkIG1iLThcIj5BSSDmmbrog73nlJ/miJDoqZ7ljaE8L2gxPlxuXG4gICAgICAgICAgICB7LyogSW5wdXQgTW9kZSBTZWxlY3Rpb24gKi99XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJnLXdoaXRlIHJvdW5kZWQteGwgc2hhZG93LXNtIHAtNiBtYi02XCI+XG4gICAgICAgICAgICAgIDxoMiBjbGFzc05hbWU9XCJ0ZXh0LWxnIGZvbnQtc2VtaWJvbGQgbWItNFwiPuWOn+Wni+S+i+WPpemhnuWeizwvaDI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZ3JpZCBncmlkLWNvbHMtMiBnYXAtNFwiPlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldE1vZGUoJ21hbnVhbCcpfVxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgcC00IHJvdW5kZWQtbGcgYm9yZGVyLTIgdHJhbnNpdGlvbi1hbGwgJHtcbiAgICAgICAgICAgICAgICAgICAgbW9kZSA9PT0gJ21hbnVhbCdcbiAgICAgICAgICAgICAgICAgICAgICA/ICdib3JkZXItcHJpbWFyeSBiZy1wcmltYXJ5LWxpZ2h0J1xuICAgICAgICAgICAgICAgICAgICAgIDogJ2JvcmRlci1ncmF5LTIwMCBob3Zlcjpib3JkZXItZ3JheS0zMDAnXG4gICAgICAgICAgICAgICAgICB9YH1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtMnhsIG1iLTJcIj7inI3vuI88L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZm9udC1zZW1pYm9sZFwiPuaJi+WLlei8uOWFpTwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LXNtIHRleHQtZ3JheS02MDAgbXQtMVwiPuiyvOS4iuaIlui8uOWFpeiLseaWh+aWh+acrDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldE1vZGUoJ3NjcmVlbnNob3QnKX1cbiAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXshaXNQcmVtaXVtfVxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgcC00IHJvdW5kZWQtbGcgYm9yZGVyLTIgdHJhbnNpdGlvbi1hbGwgcmVsYXRpdmUgJHtcbiAgICAgICAgICAgICAgICAgICAgbW9kZSA9PT0gJ3NjcmVlbnNob3QnXG4gICAgICAgICAgICAgICAgICAgICAgPyAnYm9yZGVyLXByaW1hcnkgYmctcHJpbWFyeS1saWdodCdcbiAgICAgICAgICAgICAgICAgICAgICA6IGlzUHJlbWl1bVxuICAgICAgICAgICAgICAgICAgICAgID8gJ2JvcmRlci1ncmF5LTIwMCBob3Zlcjpib3JkZXItZ3JheS0zMDAnXG4gICAgICAgICAgICAgICAgICAgICAgOiAnYm9yZGVyLWdyYXktMjAwIGJnLWdyYXktMTAwIGN1cnNvci1ub3QtYWxsb3dlZCBvcGFjaXR5LTYwJ1xuICAgICAgICAgICAgICAgICAgfWB9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LTJ4bCBtYi0yXCI+8J+TtzwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmb250LXNlbWlib2xkXCI+5b2x5YqH5oiq5ZyWPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtc20gdGV4dC1ncmF5LTYwMCBtdC0xXCI+5LiK5YKz5b2x5YqH5oiq5ZyWIChQaGFzZSAyKTwvZGl2PlxuICAgICAgICAgICAgICAgICAgeyFpc1ByZW1pdW0gJiYgKFxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImFic29sdXRlIHRvcC0yIHJpZ2h0LTIgcHgtMiBweS0xIGJnLXllbGxvdy0xMDAgdGV4dC15ZWxsb3ctNzAwIHRleHQteHMgcm91bmRlZC1mdWxsXCI+XG4gICAgICAgICAgICAgICAgICAgICAg6KiC6Zax5Yqf6IO9XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgey8qIEV4dHJhY3Rpb24gVHlwZSBTZWxlY3Rpb24gKi99XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJnLXdoaXRlIHJvdW5kZWQteGwgc2hhZG93LXNtIHAtNiBtYi02XCI+XG4gICAgICAgICAgICAgIDxoMiBjbGFzc05hbWU9XCJ0ZXh0LWxnIGZvbnQtc2VtaWJvbGQgbWItNFwiPuiQg+WPluaWueW8jzwvaDI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZ3JpZCBncmlkLWNvbHMtMiBnYXAtNFwiPlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldEV4dHJhY3Rpb25UeXBlKCd2b2NhYnVsYXJ5Jyl9XG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2BwLTQgcm91bmRlZC1sZyBib3JkZXItMiB0cmFuc2l0aW9uLWFsbCAke1xuICAgICAgICAgICAgICAgICAgICBleHRyYWN0aW9uVHlwZSA9PT0gJ3ZvY2FidWxhcnknXG4gICAgICAgICAgICAgICAgICAgICAgPyAnYm9yZGVyLXByaW1hcnkgYmctcHJpbWFyeS1saWdodCdcbiAgICAgICAgICAgICAgICAgICAgICA6ICdib3JkZXItZ3JheS0yMDAgaG92ZXI6Ym9yZGVyLWdyYXktMzAwJ1xuICAgICAgICAgICAgICAgICAgfWB9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LTJ4bCBtYi0yXCI+8J+TljwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmb250LXNlbWlib2xkXCI+6Kme5b2Z6JCD5Y+WPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtc20gdGV4dC1ncmF5LTYwMCBtdC0xXCI+5p+l6Kmi5a2X5YW4IEFQSSDkuKbmqJnoqJggQ0VGUjwvZGl2PlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldEV4dHJhY3Rpb25UeXBlKCdzbWFydCcpfVxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgcC00IHJvdW5kZWQtbGcgYm9yZGVyLTIgdHJhbnNpdGlvbi1hbGwgJHtcbiAgICAgICAgICAgICAgICAgICAgZXh0cmFjdGlvblR5cGUgPT09ICdzbWFydCdcbiAgICAgICAgICAgICAgICAgICAgICA/ICdib3JkZXItcHJpbWFyeSBiZy1wcmltYXJ5LWxpZ2h0J1xuICAgICAgICAgICAgICAgICAgICAgIDogJ2JvcmRlci1ncmF5LTIwMCBob3Zlcjpib3JkZXItZ3JheS0zMDAnXG4gICAgICAgICAgICAgICAgICB9YH1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtMnhsIG1iLTJcIj7wn6SWPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZvbnQtc2VtaWJvbGRcIj7mmbrog73okIPlj5Y8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1zbSB0ZXh0LWdyYXktNjAwIG10LTFcIj5BSSDliIbmnpDniYfoqp7lkozkv5roqp48L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgey8qIENvbnRlbnQgSW5wdXQgKi99XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJnLXdoaXRlIHJvdW5kZWQteGwgc2hhZG93LXNtIHAtNiBtYi02XCI+XG4gICAgICAgICAgICAgIHttb2RlID09PSAnbWFudWFsJyA/IChcbiAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgPGgyIGNsYXNzTmFtZT1cInRleHQtbGcgZm9udC1zZW1pYm9sZCBtYi00XCI+6Ly45YWl6Iux5paH5paH5pysPC9oMj5cbiAgICAgICAgICAgICAgICAgIDx0ZXh0YXJlYVxuICAgICAgICAgICAgICAgICAgICB2YWx1ZT17dGV4dElucHV0fVxuICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IHNldFRleHRJbnB1dChlLnRhcmdldC52YWx1ZSl9XG4gICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwi6LK85LiK5oKo5oOz6KaB5a2457+S55qE6Iux5paH5paH5pys77yM5L6L5aaC5b2x5YqH5bCN6Kmx44CB5paH56ug5q616JC9Li4uXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidy1mdWxsIGgtNDAgcHgtNCBweS0zIGJvcmRlciBib3JkZXItZ3JheS0zMDAgcm91bmRlZC1sZyBmb2N1czpyaW5nLTIgZm9jdXM6cmluZy1wcmltYXJ5IGZvY3VzOmJvcmRlci10cmFuc3BhcmVudCBvdXRsaW5lLW5vbmUgcmVzaXplLW5vbmVcIlxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibXQtMiB0ZXh0LXNtIHRleHQtZ3JheS02MDBcIj5cbiAgICAgICAgICAgICAgICAgICAg5pyA5aSaIDUwMDAg5a2X5YWDIOKAoiDnm67liY3vvJp7dGV4dElucHV0Lmxlbmd0aH0g5a2X5YWDXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgey8qIEV4dHJhY3Rpb24gVHlwZSBJbmZvICovfVxuICAgICAgICAgICAgICAgICAge2V4dHJhY3Rpb25UeXBlID09PSAndm9jYWJ1bGFyeScgPyAoXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibXQtNCBwLTMgYmctYmx1ZS01MCByb3VuZGVkLWxnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LXNtIHRleHQtYmx1ZS04MDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+8J+TliDoqZ7lvZnokIPlj5bmqKHlvI88L3N0cm9uZz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzc05hbWU9XCJtdC0yIHNwYWNlLXktMSB0ZXh0LXhzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT7igKIg5bCH5q+P5YCL5Zau5a2X5p+l6Kmi5a2X5YW4IEFQSTwvbGk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT7igKIg6Ieq5YuV5qiZ6KiYIENFRlIg6Zuj5bqm562J57SaPC9saT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPuKAoiDmj5DkvpvlrozmlbTlrprnvqnlkozkvovlj6U8L2xpPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm10LTQgcC0zIGJnLXB1cnBsZS01MCByb3VuZGVkLWxnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LXNtIHRleHQtcHVycGxlLTgwMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz7wn6SWIOaZuuiDveiQg+WPluaooeW8jzwvc3Ryb25nPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzTmFtZT1cIm10LTIgc3BhY2UteS0xIHRleHQteHNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPuKAoiBBSSDliIbmnpDluLjnlKjniYfoqp7lkozkv5roqp48L2xpPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+4oCiIOeUn+aIkOebuOmXnOipnuW9meWFp+WuuTwvbGk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT7igKIg5o+Q5L6b5paH5YyW6IOM5pmv6Kqq5piOPC9saT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgPGgyIGNsYXNzTmFtZT1cInRleHQtbGcgZm9udC1zZW1pYm9sZCBtYi00XCI+5LiK5YKz5b2x5YqH5oiq5ZyWPC9oMj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYm9yZGVyLTIgYm9yZGVyLWRhc2hlZCBib3JkZXItZ3JheS0zMDAgcm91bmRlZC1sZyBwLTggdGV4dC1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LTR4bCBtYi0zXCI+8J+TtzwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtZ3JheS02MDAgbWItMlwiPum7nuaTiuaIluaLluaLs+S4iuWCs+aIquWcljwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtc20gdGV4dC1ncmF5LTUwMFwiPuaUr+aMgSBKUEcsIFBORyDmoLzlvI/vvIzmnIDlpKcgMTBNQjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm10LTRcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJpbmxpbmUtYmxvY2sgcHgtNCBweS0yIGJnLWdyYXktMTAwIHRleHQtZ3JheS00MDAgcm91bmRlZC1sZ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgUGhhc2UgMiDlip/og73plovnmbzkuK1cbiAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgey8qIEdlbmVyYXRpb24gU2V0dGluZ3MgKi99XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJnLXdoaXRlIHJvdW5kZWQteGwgc2hhZG93LXNtIHAtNiBtYi02XCI+XG4gICAgICAgICAgICAgIDxoMiBjbGFzc05hbWU9XCJ0ZXh0LWxnIGZvbnQtc2VtaWJvbGQgbWItNFwiPueUn+aIkOioreWumjwvaDI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwic3BhY2UteS00XCI+XG4gICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzc05hbWU9XCJibG9jayB0ZXh0LXNtIGZvbnQtbWVkaXVtIHRleHQtZ3JheS03MDAgbWItMlwiPlxuICAgICAgICAgICAgICAgICAgICDnlJ/miJDmlbjph4/vvJp7Y2FyZENvdW50fSDlgIvoqZ7ljaFcbiAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cInJhbmdlXCJcbiAgICAgICAgICAgICAgICAgICAgbWluPVwiNVwiXG4gICAgICAgICAgICAgICAgICAgIG1heD1cIjIwXCJcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2NhcmRDb3VudH1cbiAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiBzZXRDYXJkQ291bnQoTnVtYmVyKGUudGFyZ2V0LnZhbHVlKSl9XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInctZnVsbFwiXG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGp1c3RpZnktYmV0d2VlbiB0ZXh0LXhzIHRleHQtZ3JheS01MDAgbXQtMVwiPlxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj41PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj7poJDoqK0gMTA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPjIwPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICB7LyogVXNlciBMaW1pdHMgKi99XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwLTMgYmctZ3JheS01MCByb3VuZGVkLWxnXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtc21cIj5cbiAgICAgICAgICAgICAgICAgICAge2lzUHJlbWl1bSA/IChcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtZ3JlZW4tNzAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPvCfjJ8g6KiC6Zax55So5oi2PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQteHMgbXQtMVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICDigKIg5q+P5aSp5pyA5aSa55Sf5oiQIDUwIOW8teS+i+WPpeWcllxuICAgICAgICAgICAgICAgICAgICAgICAgICA8YnIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAg4oCiIOS7iuaXpeW3suS9v+eUqO+8mjAvNTBcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1ncmF5LTcwMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz7wn4aTIOWFjeiyu+eUqOaItjwvc3Ryb25nPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LXhzIG10LTFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAg4oCiIOeEoeazleiHquihjOeUn+aIkOS+i+WPpeWcllxuICAgICAgICAgICAgICAgICAgICAgICAgICA8YnIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAg4oCiIOWPr+S9v+eUqOezu+e1seePvuaIkOS+i+WPpeWcllxuICAgICAgICAgICAgICAgICAgICAgICAgICA8YnIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAg4oCiIOavj+aXpeWtuOe/kuaVuOmHj+eEoemZkOWItlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgey8qIEdlbmVyYXRlIEJ1dHRvbiAqL31cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgb25DbGljaz17aGFuZGxlR2VuZXJhdGV9XG4gICAgICAgICAgICAgIGRpc2FibGVkPXtpc0dlbmVyYXRpbmcgfHwgKG1vZGUgPT09ICdtYW51YWwnICYmICF0ZXh0SW5wdXQpIHx8IChtb2RlID09PSAnc2NyZWVuc2hvdCcpfVxuICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ3LWZ1bGwgYmctcHJpbWFyeSB0ZXh0LXdoaXRlIHB5LTQgcm91bmRlZC1sZyBmb250LXNlbWlib2xkIGhvdmVyOmJnLXByaW1hcnktaG92ZXIgdHJhbnNpdGlvbi1jb2xvcnMgZGlzYWJsZWQ6b3BhY2l0eS01MCBkaXNhYmxlZDpjdXJzb3Itbm90LWFsbG93ZWRcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7aXNHZW5lcmF0aW5nID8gKFxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzTmFtZT1cImFuaW1hdGUtc3BpbiAtbWwtMSBtci0zIGgtNSB3LTUgdGV4dC13aGl0ZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiBmaWxsPVwibm9uZVwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBjbGFzc05hbWU9XCJvcGFjaXR5LTI1XCIgY3g9XCIxMlwiIGN5PVwiMTJcIiByPVwiMTBcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2VXaWR0aD1cIjRcIj48L2NpcmNsZT5cbiAgICAgICAgICAgICAgICAgICAgPHBhdGggY2xhc3NOYW1lPVwib3BhY2l0eS03NVwiIGZpbGw9XCJjdXJyZW50Q29sb3JcIiBkPVwiTTQgMTJhOCA4IDAgMDE4LThWMEM1LjM3MyAwIDAgNS4zNzMgMCAxMmg0em0yIDUuMjkxQTcuOTYyIDcuOTYyIDAgMDE0IDEySDBjMCAzLjA0MiAxLjEzNSA1LjgyNCAzIDcuOTM4bDMtMi42NDd6XCI+PC9wYXRoPlxuICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICDmraPlnKjokIPlj5boqZ7lvZnkuK0uLi5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICkgOiBleHRyYWN0aW9uVHlwZSA9PT0gJ3ZvY2FidWxhcnknID8gKFxuICAgICAgICAgICAgICAgICfwn5OWIOmWi+Wni+ipnuW9meiQg+WPlidcbiAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAn8J+kliDplovlp4vmmbrog73okIPlj5YnXG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKSA6IChcbiAgICAgICAgICAvKiBQcmV2aWV3IEdlbmVyYXRlZCBDYXJkcyAqL1xuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibWF4LXctNnhsIG14LWF1dG9cIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIG1iLTZcIj5cbiAgICAgICAgICAgICAgPGgxIGNsYXNzTmFtZT1cInRleHQtM3hsIGZvbnQtYm9sZFwiPueUn+aIkOe1kOaenOmgkOimvTwvaDE+XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRTaG93UHJldmlldyhmYWxzZSl9XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidGV4dC1ncmF5LTYwMCBob3Zlcjp0ZXh0LWdyYXktOTAwXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIOKGkCDov5Tlm55cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJiZy13aGl0ZSByb3VuZGVkLXhsIHNoYWRvdy1zbSBwLTYgbWItNlwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBtYi00XCI+XG4gICAgICAgICAgICAgICAgPGgyIGNsYXNzTmFtZT1cInRleHQtbGcgZm9udC1zZW1pYm9sZFwiPuW3sueUn+aIkCB7Z2VuZXJhdGVkQ2FyZHMubGVuZ3RofSDlgIvoqZ7ljaE8L2gyPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwic3BhY2UteC0zXCI+XG4gICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzTmFtZT1cInRleHQtcHJpbWFyeSBob3Zlcjp0ZXh0LXByaW1hcnktaG92ZXIgZm9udC1tZWRpdW1cIj5cbiAgICAgICAgICAgICAgICAgICAg6YeN5paw55Sf5oiQXG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgb25DbGljaz17aGFuZGxlU2F2ZUNhcmRzfVxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJiZy1wcmltYXJ5IHRleHQtd2hpdGUgcHgtNiBweS0yIHJvdW5kZWQtbGcgZm9udC1tZWRpdW0gaG92ZXI6YmctcHJpbWFyeS1ob3ZlciB0cmFuc2l0aW9uLWNvbG9yc1wiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIOS/neWtmOWIsOWNoee1hFxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZ3JpZCBncmlkLWNvbHMtMSBsZzpncmlkLWNvbHMtMiBnYXAtNlwiPlxuICAgICAgICAgICAgICAgIHtnZW5lcmF0ZWRDYXJkcy5tYXAoKGNhcmQpID0+IChcbiAgICAgICAgICAgICAgICAgIDxkaXYga2V5PXtjYXJkLmlkfSBjbGFzc05hbWU9XCJib3JkZXIgcm91bmRlZC1sZyBwLTUgaG92ZXI6c2hhZG93LWxnIHRyYW5zaXRpb24tc2hhZG93XCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1zdGFydCBqdXN0aWZ5LWJldHdlZW4gbWItNFwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleC0xXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aDMgY2xhc3NOYW1lPVwidGV4dC14bCBmb250LWJvbGRcIj57Y2FyZC53b3JkfTwvaDM+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGdhcC00IG10LTFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC1zbSB0ZXh0LWdyYXktNjAwXCI+e2NhcmQucGFydE9mU3BlZWNofTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3NOYW1lPVwidGV4dC14cyBiZy1ncmF5LTEwMCBweC0yIHB5LTEgcm91bmRlZCBob3ZlcjpiZy1ncmF5LTIwMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg8J+HuvCfh7gge2NhcmQucHJvbnVuY2lhdGlvbi51c31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzTmFtZT1cInRleHQteHMgYmctZ3JheS0xMDAgcHgtMiBweS0xIHJvdW5kZWQgaG92ZXI6YmctZ3JheS0yMDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIPCfh6zwn4enIHtjYXJkLnByb251bmNpYXRpb24udWt9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzc05hbWU9XCJ0ZXh0LXByaW1hcnkgaG92ZXI6dGV4dC1wcmltYXJ5LWhvdmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzTmFtZT1cInctNCBoLTRcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggc3Ryb2tlTGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlTGluZWpvaW49XCJyb3VuZFwiIHN0cm9rZVdpZHRoPXsyfSBkPVwiTTE1LjUzNiA4LjQ2NGE1IDUgMCAwMTAgNy4wNzJtMi44MjgtOS45YTkgOSAwIDAxMCAxMi43MjhNNS41ODYgMTVINGExIDEgMCAwMS0xLTF2LTRhMSAxIDAgMDExLTFoMS41ODZsNC43MDctNC43MDdDMTAuOTIzIDMuNjYzIDEyIDQuMTA5IDEyIDV2MTRjMCAuODkxLTEuMDc3IDEuMzM3LTEuNzA3LjcwN0w1LjU4NiAxNXpcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzc05hbWU9XCJ0ZXh0LXJlZC01MDAgaG92ZXI6dGV4dC1yZWQtNzAwIHRleHQtMnhsXCI+w5c8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJzcGFjZS15LTNcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LXNtIGZvbnQtc2VtaWJvbGQgdGV4dC1ncmF5LTcwMFwiPue/u+itrzwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LWJhc2UgZm9udC1tZWRpdW1cIj57Y2FyZC50cmFuc2xhdGlvbn08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtc20gZm9udC1zZW1pYm9sZCB0ZXh0LWdyYXktNzAwXCI+5a6a576pPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtc20gdGV4dC1ncmF5LTYwMFwiPntjYXJkLmRlZmluaXRpb259PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICB7Y2FyZC5zeW5vbnltcy5sZW5ndGggPiAwICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1zbSBmb250LXNlbWlib2xkIHRleHQtZ3JheS03MDBcIj7lkIznvqnoqZ48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGZsZXgtd3JhcCBnYXAtMiBtdC0xXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2NhcmQuc3lub255bXMubWFwKChzeW4sIGlkeCkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4ga2V5PXtpZHh9IGNsYXNzTmFtZT1cInB4LTIgcHktMSBiZy1ibHVlLTEwMCB0ZXh0LWJsdWUtNzAwIHJvdW5kZWQtZnVsbCB0ZXh0LXhzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtzeW59XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAgICAgICAgICAgIHtjYXJkLmFudG9ueW1zLmxlbmd0aCA+IDAgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LXNtIGZvbnQtc2VtaWJvbGQgdGV4dC1ncmF5LTcwMFwiPuWPjee+qeipnjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggZmxleC13cmFwIGdhcC0yIG10LTFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y2FyZC5hbnRvbnltcy5tYXAoKGFudCwgaWR4KSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBrZXk9e2lkeH0gY2xhc3NOYW1lPVwicHgtMiBweS0xIGJnLXJlZC0xMDAgdGV4dC1yZWQtNzAwIHJvdW5kZWQtZnVsbCB0ZXh0LXhzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHthbnR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtc20gZm9udC1zZW1pYm9sZCB0ZXh0LWdyYXktNzAwIG1iLTJcIj7kvovlj6U8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwic3BhY2UteS0zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHsvKiDljp/lp4vkvovlj6UgKi99XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYm9yZGVyLWwtMiBib3JkZXItZ3JheS00MDAgcGwtM1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1zdGFydCBqdXN0aWZ5LWJldHdlZW5cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleC0xXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC14cyB0ZXh0LWdyYXktNTAwIG1iLTFcIj7ljp/lp4vkvovlj6XvvIjkvoboh6rovLjlhaXmlofmnKzvvIk8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LXNtIHRleHQtZ3JheS04MDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y2FyZC5vcmlnaW5hbEV4YW1wbGUuc3BsaXQoY2FyZC53b3JkKS5tYXAoKHBhcnQsIGkpID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGtleT17aX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtwYXJ0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7aSA8IGNhcmQub3JpZ2luYWxFeGFtcGxlLnNwbGl0KGNhcmQud29yZCkubGVuZ3RoIC0gMSAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwiZm9udC1ib2xkIHRleHQtcHJpbWFyeVwiPntjYXJkLndvcmR9PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LXNtIHRleHQtZ3JheS01MDAgbXQtMVwiPntjYXJkLm9yaWdpbmFsRXhhbXBsZVRyYW5zbGF0aW9ufTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGdhcC0xIG1sLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzc05hbWU9XCJ0ZXh0LWdyYXktNDAwIGhvdmVyOnRleHQtcHJpbWFyeVwiIHRpdGxlPVwi5pKt5pS+5L6L5Y+lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyBjbGFzc05hbWU9XCJ3LTQgaC00XCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBzdHJva2VMaW5lY2FwPVwicm91bmRcIiBzdHJva2VMaW5lam9pbj1cInJvdW5kXCIgc3Ryb2tlV2lkdGg9ezJ9IGQ9XCJNMTQuNzUyIDExLjE2OGwtMy4xOTctMi4xMzJBMSAxIDAgMDAxMCA5Ljg3djQuMjYzYTEgMSAwIDAwMS41NTUuODMybDMuMTk3LTIuMTMyYTEgMSAwIDAwMC0xLjY2NHpcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggc3Ryb2tlTGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlTGluZWpvaW49XCJyb3VuZFwiIHN0cm9rZVdpZHRoPXsyfSBkPVwiTTIxIDEyYTkgOSAwIDExLTE4IDAgOSA5IDAgMDExOCAwelwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHsvKiDnlJ/miJDkvovlj6UgKi99XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYm9yZGVyLWwtMiBib3JkZXItcHJpbWFyeSBwbC0zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLXN0YXJ0IGp1c3RpZnktYmV0d2VlblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4LTFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LXhzIHRleHQtcHJpbWFyeSBtYi0xXCI+QUkg55Sf5oiQ5L6L5Y+lPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1zbSB0ZXh0LWdyYXktODAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2NhcmQuZ2VuZXJhdGVkRXhhbXBsZS5zZW50ZW5jZS5zcGxpdChjYXJkLndvcmQpLm1hcCgocGFydCwgaSkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4ga2V5PXtpfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3BhcnR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtpIDwgY2FyZC5nZW5lcmF0ZWRFeGFtcGxlLnNlbnRlbmNlLnNwbGl0KGNhcmQud29yZCkubGVuZ3RoIC0gMSAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwiZm9udC1ib2xkIHRleHQtcHJpbWFyeVwiPntjYXJkLndvcmR9PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LXNtIHRleHQtZ3JheS01MDAgbXQtMVwiPntjYXJkLmdlbmVyYXRlZEV4YW1wbGUudHJhbnNsYXRpb259PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTEgbWwtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzTmFtZT1cInRleHQtZ3JheS00MDAgaG92ZXI6dGV4dC1wcmltYXJ5XCIgdGl0bGU9XCLmkq3mlL7kvovlj6VcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzTmFtZT1cInctNCBoLTRcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZUxpbmVqb2luPVwicm91bmRcIiBzdHJva2VXaWR0aD17Mn0gZD1cIk0xNC43NTIgMTEuMTY4bC0zLjE5Ny0yLjEzMkExIDEgMCAwMDEwIDkuODd2NC4yNjNhMSAxIDAgMDAxLjU1NS44MzJsMy4xOTctMi4xMzJhMSAxIDAgMDAwLTEuNjY0elwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBzdHJva2VMaW5lY2FwPVwicm91bmRcIiBzdHJva2VMaW5lam9pbj1cInJvdW5kXCIgc3Ryb2tlV2lkdGg9ezJ9IGQ9XCJNMjEgMTJhOSA5IDAgMTEtMTggMCA5IDkgMCAwMTE4IDB6XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB0b2dnbGVJbWFnZUZvckNhcmQoY2FyZC5pZCl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHtzaG93SW1hZ2VGb3JDYXJkW2NhcmQuaWRdID8gJ3RleHQtcHJpbWFyeScgOiAndGV4dC1ncmF5LTQwMCd9IGhvdmVyOnRleHQtcHJpbWFyeWB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9e3Nob3dJbWFnZUZvckNhcmRbY2FyZC5pZF0gPyBcIumaseiXj+S+i+WPpeWcllwiIDogXCLmn6XnnIvkvovlj6XlnJZcIn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgY2xhc3NOYW1lPVwidy00IGgtNFwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggc3Ryb2tlTGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlTGluZWpvaW49XCJyb3VuZFwiIHN0cm9rZVdpZHRoPXsyfSBkPVwiTTQgMTZsNC41ODYtNC41ODZhMiAyIDAgMDEyLjgyOCAwTDE2IDE2bS0yLTJsMS41ODYtMS41ODZhMiAyIDAgMDEyLjgyOCAwTDIwIDE0bS02LTZoLjAxTTYgMjBoMTJhMiAyIDAgMDAyLTJWNmEyIDIgMCAwMC0yLTJINmEyIDIgMCAwMC0yIDJ2MTJhMiAyIDAgMDAyIDJ6XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsvKiBFeGFtcGxlIEltYWdlIERpc3BsYXkgKi99XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3Nob3dJbWFnZUZvckNhcmRbY2FyZC5pZF0gJiYgY2FyZC5nZW5lcmF0ZWRFeGFtcGxlLmltYWdlVXJsICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibXQtMyBwLTIgYmctZ3JheS01MCByb3VuZGVkLWxnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC14cyB0ZXh0LWdyYXktNjAwIG1iLTIgZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzTmFtZT1cInctMyBoLTNcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZUxpbmVqb2luPVwicm91bmRcIiBzdHJva2VXaWR0aD17Mn0gZD1cIk00IDE2bDQuNTg2LTQuNTg2YTIgMiAwIDAxMi44MjggMEwxNiAxNm0tMi0ybDEuNTg2LTEuNTg2YTIgMiAwIDAxMi44MjggMEwyMCAxNG0tNi02aC4wMU02IDIwaDEyYTIgMiAwIDAwMi0yVjZhMiAyIDAgMDAtMi0ySDZhMiAyIDAgMDAtMiAydjEyYTIgMiAwIDAwMiAyelwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg5L6L5Y+l5oOF5aKD5ZyWXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjPXtjYXJkLmdlbmVyYXRlZEV4YW1wbGUuaW1hZ2VVcmx9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0PVwiRXhhbXBsZSBjb250ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ3LWZ1bGwgcm91bmRlZC1tZCBzaGFkb3ctc20gY3Vyc29yLXBvaW50ZXIgaG92ZXI6c2hhZG93LWxnIHRyYW5zaXRpb24tc2hhZG93XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17eyBtYXhIZWlnaHQ6ICcyNTBweCcsIG9iamVjdEZpdDogJ2NvbnRhaW4nLCBiYWNrZ3JvdW5kQ29sb3I6ICd3aGl0ZScgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRNb2RhbEltYWdlKGNhcmQuZ2VuZXJhdGVkRXhhbXBsZS5pbWFnZVVybCl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC14cyB0ZXh0LWdyYXktNTAwIG10LTIgdGV4dC1jZW50ZXJcIj7pu57mk4rlnJbniYflj6/mlL7lpKfmn6XnnIs8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibXQtNCBwdC0zIGJvcmRlci10IGZsZXgganVzdGlmeS1iZXR3ZWVuIGl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQteHMgdGV4dC1ncmF5LTUwMFwiPumbo+W6pu+8mkNFRlIge2NhcmQuZGlmZmljdWx0eX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzc05hbWU9XCJ0ZXh0LXByaW1hcnkgdGV4dC1zbSBob3Zlcjp0ZXh0LXByaW1hcnktaG92ZXIgZm9udC1tZWRpdW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIOe3qOi8r+ipnuWNoVxuICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICApfVxuICAgICAgPC9kaXY+XG5cbiAgICAgIHsvKiBJbWFnZSBNb2RhbCAqL31cbiAgICAgIHttb2RhbEltYWdlICYmIChcbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzTmFtZT1cImZpeGVkIGluc2V0LTAgei01MCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBiZy1ibGFjayBiZy1vcGFjaXR5LTc1IHAtNFwiXG4gICAgICAgICAgb25DbGljaz17KCkgPT4gc2V0TW9kYWxJbWFnZShudWxsKX1cbiAgICAgICAgPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzTmFtZT1cInJlbGF0aXZlIG1heC13LTR4bCBtYXgtaC1bOTB2aF0gYmctd2hpdGUgcm91bmRlZC1sZyBvdmVyZmxvdy1oaWRkZW5cIlxuICAgICAgICAgICAgb25DbGljaz17KGUpID0+IGUuc3RvcFByb3BhZ2F0aW9uKCl9XG4gICAgICAgICAgPlxuICAgICAgICAgICAgey8qIENsb3NlIEJ1dHRvbiAqL31cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gc2V0TW9kYWxJbWFnZShudWxsKX1cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiYWJzb2x1dGUgdG9wLTIgcmlnaHQtMiB6LTEwIHAtMiBiZy13aGl0ZSBiZy1vcGFjaXR5LTkwIHJvdW5kZWQtZnVsbCBob3ZlcjpiZy1vcGFjaXR5LTEwMCB0cmFuc2l0aW9uLWFsbCBzaGFkb3ctbGdcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8c3ZnIGNsYXNzTmFtZT1cInctNiBoLTYgdGV4dC1ncmF5LTcwMFwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiPlxuICAgICAgICAgICAgICAgIDxwYXRoIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZUxpbmVqb2luPVwicm91bmRcIiBzdHJva2VXaWR0aD17Mn0gZD1cIk02IDE4TDE4IDZNNiA2bDEyIDEyXCIgLz5cbiAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICAgICAgey8qIEltYWdlICovfVxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwLTRcIj5cbiAgICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICAgIHNyYz17bW9kYWxJbWFnZX1cbiAgICAgICAgICAgICAgICBhbHQ9XCJFeGFtcGxlIGNvbnRleHQgZW5sYXJnZWRcIlxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInctZnVsbCBoLWZ1bGwgb2JqZWN0LWNvbnRhaW5cIlxuICAgICAgICAgICAgICAgIHN0eWxlPXt7IG1heEhlaWdodDogJ2NhbGMoOTB2aCAtIDJyZW0pJyB9fVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgKX1cbiAgICA8L2Rpdj5cbiAgKVxufSJdLCJuYW1lcyI6WyJ1c2VTdGF0ZSIsIkxpbmsiLCJHZW5lcmF0ZVBhZ2UiLCJtb2RlIiwic2V0TW9kZSIsInRleHRJbnB1dCIsInNldFRleHRJbnB1dCIsImV4dHJhY3Rpb25UeXBlIiwic2V0RXh0cmFjdGlvblR5cGUiLCJjYXJkQ291bnQiLCJzZXRDYXJkQ291bnQiLCJpc0dlbmVyYXRpbmciLCJzZXRJc0dlbmVyYXRpbmciLCJnZW5lcmF0ZWRDYXJkcyIsInNldEdlbmVyYXRlZENhcmRzIiwic2hvd1ByZXZpZXciLCJzZXRTaG93UHJldmlldyIsImlzUHJlbWl1bSIsInNob3dJbWFnZUZvckNhcmQiLCJzZXRTaG93SW1hZ2VGb3JDYXJkIiwibW9kYWxJbWFnZSIsInNldE1vZGFsSW1hZ2UiLCJtb2NrR2VuZXJhdGVkQ2FyZHMiLCJpZCIsIndvcmQiLCJwYXJ0T2ZTcGVlY2giLCJwcm9udW5jaWF0aW9uIiwidXMiLCJ1ayIsInRyYW5zbGF0aW9uIiwiZGVmaW5pdGlvbiIsInN5bm9ueW1zIiwiYW50b255bXMiLCJvcmlnaW5hbEV4YW1wbGUiLCJvcmlnaW5hbEV4YW1wbGVUcmFuc2xhdGlvbiIsImdlbmVyYXRlZEV4YW1wbGUiLCJzZW50ZW5jZSIsImltYWdlVXJsIiwiYXVkaW9VcmwiLCJkaWZmaWN1bHR5IiwiaGFuZGxlR2VuZXJhdGUiLCJzZXRUaW1lb3V0IiwiaGFuZGxlU2F2ZUNhcmRzIiwiYWxlcnQiLCJ0b2dnbGVJbWFnZUZvckNhcmQiLCJjYXJkSWQiLCJwcmV2IiwiZGl2IiwiY2xhc3NOYW1lIiwibmF2IiwiaHJlZiIsImgxIiwiaDIiLCJidXR0b24iLCJvbkNsaWNrIiwiZGlzYWJsZWQiLCJ0ZXh0YXJlYSIsInZhbHVlIiwib25DaGFuZ2UiLCJlIiwidGFyZ2V0IiwicGxhY2Vob2xkZXIiLCJsZW5ndGgiLCJzdHJvbmciLCJ1bCIsImxpIiwic3BhbiIsImxhYmVsIiwiaW5wdXQiLCJ0eXBlIiwibWluIiwibWF4IiwiTnVtYmVyIiwiYnIiLCJzdmciLCJ4bWxucyIsImZpbGwiLCJ2aWV3Qm94IiwiY2lyY2xlIiwiY3giLCJjeSIsInIiLCJzdHJva2UiLCJzdHJva2VXaWR0aCIsInBhdGgiLCJkIiwibWFwIiwiY2FyZCIsImgzIiwic3Ryb2tlTGluZWNhcCIsInN0cm9rZUxpbmVqb2luIiwic3luIiwiaWR4IiwiYW50Iiwic3BsaXQiLCJwYXJ0IiwiaSIsInRpdGxlIiwiaW1nIiwic3JjIiwiYWx0Iiwic3R5bGUiLCJtYXhIZWlnaHQiLCJvYmplY3RGaXQiLCJiYWNrZ3JvdW5kQ29sb3IiLCJzdG9wUHJvcGFnYXRpb24iXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./app/generate/page.tsx\n"); + +/***/ }), + +/***/ "(ssr)/./contexts/AuthContext.tsx": +/*!**********************************!*\ + !*** ./contexts/AuthContext.tsx ***! + \**********************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ AuthProvider: () => (/* binding */ AuthProvider),\n/* harmony export */ useAuth: () => (/* binding */ useAuth)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react-jsx-dev-runtime.js\");\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _lib_services_auth__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/lib/services/auth */ \"(ssr)/./lib/services/auth.ts\");\n/* __next_internal_client_entry_do_not_use__ useAuth,AuthProvider auto */ \n\n\nconst AuthContext = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.createContext)(undefined);\nconst useAuth = ()=>{\n const context = (0,react__WEBPACK_IMPORTED_MODULE_1__.useContext)(AuthContext);\n if (context === undefined) {\n throw new Error('useAuth must be used within an AuthProvider');\n }\n return context;\n};\nconst AuthProvider = ({ children })=>{\n const [state, setState] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)({\n user: null,\n token: null,\n isAuthenticated: false,\n isLoading: true\n });\n // 初始化時檢查認證狀態\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)({\n \"AuthProvider.useEffect\": ()=>{\n const initAuth = {\n \"AuthProvider.useEffect.initAuth\": async ()=>{\n const token = _lib_services_auth__WEBPACK_IMPORTED_MODULE_2__.authService.getToken();\n const user = _lib_services_auth__WEBPACK_IMPORTED_MODULE_2__.authService.getUser();\n if (token && user) {\n // 驗證 token 是否仍然有效\n const isValid = await _lib_services_auth__WEBPACK_IMPORTED_MODULE_2__.authService.checkAuthStatus();\n if (isValid) {\n setState({\n user,\n token,\n isAuthenticated: true,\n isLoading: false\n });\n } else {\n // Token 無效,清除本地存儲\n _lib_services_auth__WEBPACK_IMPORTED_MODULE_2__.authService.logout();\n setState({\n user: null,\n token: null,\n isAuthenticated: false,\n isLoading: false\n });\n }\n } else {\n setState({\n user: null,\n token: null,\n isAuthenticated: false,\n isLoading: false\n });\n }\n }\n }[\"AuthProvider.useEffect.initAuth\"];\n initAuth();\n }\n }[\"AuthProvider.useEffect\"], []);\n const login = async (email, password)=>{\n try {\n const response = await _lib_services_auth__WEBPACK_IMPORTED_MODULE_2__.authService.login({\n email,\n password\n });\n if (response.success && response.data) {\n setState({\n user: response.data.user,\n token: response.data.token,\n isAuthenticated: true,\n isLoading: false\n });\n return {\n success: true\n };\n } else {\n return {\n success: false,\n error: response.error || '登入失敗'\n };\n }\n } catch (error) {\n return {\n success: false,\n error: '網路錯誤,請稍後再試'\n };\n }\n };\n const register = async (username, email, password)=>{\n try {\n const response = await _lib_services_auth__WEBPACK_IMPORTED_MODULE_2__.authService.register({\n username,\n email,\n password\n });\n if (response.success && response.data) {\n setState({\n user: response.data.user,\n token: response.data.token,\n isAuthenticated: true,\n isLoading: false\n });\n return {\n success: true\n };\n } else {\n return {\n success: false,\n error: response.error || '註冊失敗'\n };\n }\n } catch (error) {\n return {\n success: false,\n error: '網路錯誤,請稍後再試'\n };\n }\n };\n const logout = ()=>{\n _lib_services_auth__WEBPACK_IMPORTED_MODULE_2__.authService.logout();\n setState({\n user: null,\n token: null,\n isAuthenticated: false,\n isLoading: false\n });\n };\n const checkAuth = async ()=>{\n if (!state.token) return false;\n const isValid = await _lib_services_auth__WEBPACK_IMPORTED_MODULE_2__.authService.checkAuthStatus();\n if (!isValid) {\n logout();\n return false;\n }\n return true;\n };\n const contextValue = {\n ...state,\n login,\n register,\n logout,\n checkAuth\n };\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(AuthContext.Provider, {\n value: contextValue,\n children: children\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/contexts/AuthContext.tsx\",\n lineNumber: 151,\n columnNumber: 5\n }, undefined);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9jb250ZXh0cy9BdXRoQ29udGV4dC50c3giLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFFd0Y7QUFDakM7QUFnQnZELE1BQU1NLDRCQUFjTCxvREFBYUEsQ0FBOEJNO0FBRXhELE1BQU1DLFVBQVU7SUFDckIsTUFBTUMsVUFBVVAsaURBQVVBLENBQUNJO0lBQzNCLElBQUlHLFlBQVlGLFdBQVc7UUFDekIsTUFBTSxJQUFJRyxNQUFNO0lBQ2xCO0lBQ0EsT0FBT0Q7QUFDVCxFQUFDO0FBTU0sTUFBTUUsZUFBNEMsQ0FBQyxFQUFFQyxRQUFRLEVBQUU7SUFDcEUsTUFBTSxDQUFDQyxPQUFPQyxTQUFTLEdBQUdWLCtDQUFRQSxDQUFZO1FBQzVDVyxNQUFNO1FBQ05DLE9BQU87UUFDUEMsaUJBQWlCO1FBQ2pCQyxXQUFXO0lBQ2I7SUFFQSxhQUFhO0lBQ2JmLGdEQUFTQTtrQ0FBQztZQUNSLE1BQU1nQjttREFBVztvQkFDZixNQUFNSCxRQUFRWCwyREFBV0EsQ0FBQ2UsUUFBUTtvQkFDbEMsTUFBTUwsT0FBT1YsMkRBQVdBLENBQUNnQixPQUFPO29CQUVoQyxJQUFJTCxTQUFTRCxNQUFNO3dCQUNqQixrQkFBa0I7d0JBQ2xCLE1BQU1PLFVBQVUsTUFBTWpCLDJEQUFXQSxDQUFDa0IsZUFBZTt3QkFDakQsSUFBSUQsU0FBUzs0QkFDWFIsU0FBUztnQ0FDUEM7Z0NBQ0FDO2dDQUNBQyxpQkFBaUI7Z0NBQ2pCQyxXQUFXOzRCQUNiO3dCQUNGLE9BQU87NEJBQ0wsa0JBQWtCOzRCQUNsQmIsMkRBQVdBLENBQUNtQixNQUFNOzRCQUNsQlYsU0FBUztnQ0FDUEMsTUFBTTtnQ0FDTkMsT0FBTztnQ0FDUEMsaUJBQWlCO2dDQUNqQkMsV0FBVzs0QkFDYjt3QkFDRjtvQkFDRixPQUFPO3dCQUNMSixTQUFTOzRCQUNQQyxNQUFNOzRCQUNOQyxPQUFPOzRCQUNQQyxpQkFBaUI7NEJBQ2pCQyxXQUFXO3dCQUNiO29CQUNGO2dCQUNGOztZQUVBQztRQUNGO2lDQUFHLEVBQUU7SUFFTCxNQUFNTSxRQUFRLE9BQU9DLE9BQWVDO1FBQ2xDLElBQUk7WUFDRixNQUFNQyxXQUFXLE1BQU12QiwyREFBV0EsQ0FBQ29CLEtBQUssQ0FBQztnQkFBRUM7Z0JBQU9DO1lBQVM7WUFFM0QsSUFBSUMsU0FBU0MsT0FBTyxJQUFJRCxTQUFTRSxJQUFJLEVBQUU7Z0JBQ3JDaEIsU0FBUztvQkFDUEMsTUFBTWEsU0FBU0UsSUFBSSxDQUFDZixJQUFJO29CQUN4QkMsT0FBT1ksU0FBU0UsSUFBSSxDQUFDZCxLQUFLO29CQUMxQkMsaUJBQWlCO29CQUNqQkMsV0FBVztnQkFDYjtnQkFDQSxPQUFPO29CQUFFVyxTQUFTO2dCQUFLO1lBQ3pCLE9BQU87Z0JBQ0wsT0FBTztvQkFBRUEsU0FBUztvQkFBT0UsT0FBT0gsU0FBU0csS0FBSyxJQUFJO2dCQUFPO1lBQzNEO1FBQ0YsRUFBRSxPQUFPQSxPQUFPO1lBQ2QsT0FBTztnQkFBRUYsU0FBUztnQkFBT0UsT0FBTztZQUFhO1FBQy9DO0lBQ0Y7SUFFQSxNQUFNQyxXQUFXLE9BQU9DLFVBQWtCUCxPQUFlQztRQUN2RCxJQUFJO1lBQ0YsTUFBTUMsV0FBVyxNQUFNdkIsMkRBQVdBLENBQUMyQixRQUFRLENBQUM7Z0JBQUVDO2dCQUFVUDtnQkFBT0M7WUFBUztZQUV4RSxJQUFJQyxTQUFTQyxPQUFPLElBQUlELFNBQVNFLElBQUksRUFBRTtnQkFDckNoQixTQUFTO29CQUNQQyxNQUFNYSxTQUFTRSxJQUFJLENBQUNmLElBQUk7b0JBQ3hCQyxPQUFPWSxTQUFTRSxJQUFJLENBQUNkLEtBQUs7b0JBQzFCQyxpQkFBaUI7b0JBQ2pCQyxXQUFXO2dCQUNiO2dCQUNBLE9BQU87b0JBQUVXLFNBQVM7Z0JBQUs7WUFDekIsT0FBTztnQkFDTCxPQUFPO29CQUFFQSxTQUFTO29CQUFPRSxPQUFPSCxTQUFTRyxLQUFLLElBQUk7Z0JBQU87WUFDM0Q7UUFDRixFQUFFLE9BQU9BLE9BQU87WUFDZCxPQUFPO2dCQUFFRixTQUFTO2dCQUFPRSxPQUFPO1lBQWE7UUFDL0M7SUFDRjtJQUVBLE1BQU1QLFNBQVM7UUFDYm5CLDJEQUFXQSxDQUFDbUIsTUFBTTtRQUNsQlYsU0FBUztZQUNQQyxNQUFNO1lBQ05DLE9BQU87WUFDUEMsaUJBQWlCO1lBQ2pCQyxXQUFXO1FBQ2I7SUFDRjtJQUVBLE1BQU1nQixZQUFZO1FBQ2hCLElBQUksQ0FBQ3JCLE1BQU1HLEtBQUssRUFBRSxPQUFPO1FBRXpCLE1BQU1NLFVBQVUsTUFBTWpCLDJEQUFXQSxDQUFDa0IsZUFBZTtRQUNqRCxJQUFJLENBQUNELFNBQVM7WUFDWkU7WUFDQSxPQUFPO1FBQ1Q7UUFDQSxPQUFPO0lBQ1Q7SUFFQSxNQUFNVyxlQUFnQztRQUNwQyxHQUFHdEIsS0FBSztRQUNSWTtRQUNBTztRQUNBUjtRQUNBVTtJQUNGO0lBRUEscUJBQ0UsOERBQUM1QixZQUFZOEIsUUFBUTtRQUFDQyxPQUFPRjtrQkFDMUJ2Qjs7Ozs7O0FBR1AsRUFBQyIsInNvdXJjZXMiOlsiL1VzZXJzL2pldHRjaGVuZzEwMTgvY29kZS9kcmFtYWxpbmctdm9jYWItbGVhcm5pbmcvZnJvbnRlbmQvY29udGV4dHMvQXV0aENvbnRleHQudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2UgY2xpZW50J1xyXG5cclxuaW1wb3J0IFJlYWN0LCB7IGNyZWF0ZUNvbnRleHQsIHVzZUNvbnRleHQsIHVzZUVmZmVjdCwgdXNlU3RhdGUsIFJlYWN0Tm9kZSB9IGZyb20gJ3JlYWN0J1xyXG5pbXBvcnQgeyBhdXRoU2VydmljZSwgVXNlciB9IGZyb20gJ0AvbGliL3NlcnZpY2VzL2F1dGgnXHJcblxyXG5pbnRlcmZhY2UgQXV0aFN0YXRlIHtcclxuICB1c2VyOiBVc2VyIHwgbnVsbFxyXG4gIHRva2VuOiBzdHJpbmcgfCBudWxsXHJcbiAgaXNBdXRoZW50aWNhdGVkOiBib29sZWFuXHJcbiAgaXNMb2FkaW5nOiBib29sZWFuXHJcbn1cclxuXHJcbmludGVyZmFjZSBBdXRoQ29udGV4dFR5cGUgZXh0ZW5kcyBBdXRoU3RhdGUge1xyXG4gIGxvZ2luOiAoZW1haWw6IHN0cmluZywgcGFzc3dvcmQ6IHN0cmluZykgPT4gUHJvbWlzZTx7IHN1Y2Nlc3M6IGJvb2xlYW47IGVycm9yPzogc3RyaW5nIH0+XHJcbiAgcmVnaXN0ZXI6ICh1c2VybmFtZTogc3RyaW5nLCBlbWFpbDogc3RyaW5nLCBwYXNzd29yZDogc3RyaW5nKSA9PiBQcm9taXNlPHsgc3VjY2VzczogYm9vbGVhbjsgZXJyb3I/OiBzdHJpbmcgfT5cclxuICBsb2dvdXQ6ICgpID0+IHZvaWRcclxuICBjaGVja0F1dGg6ICgpID0+IFByb21pc2U8Ym9vbGVhbj5cclxufVxyXG5cclxuY29uc3QgQXV0aENvbnRleHQgPSBjcmVhdGVDb250ZXh0PEF1dGhDb250ZXh0VHlwZSB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKVxyXG5cclxuZXhwb3J0IGNvbnN0IHVzZUF1dGggPSAoKSA9PiB7XHJcbiAgY29uc3QgY29udGV4dCA9IHVzZUNvbnRleHQoQXV0aENvbnRleHQpXHJcbiAgaWYgKGNvbnRleHQgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgdGhyb3cgbmV3IEVycm9yKCd1c2VBdXRoIG11c3QgYmUgdXNlZCB3aXRoaW4gYW4gQXV0aFByb3ZpZGVyJylcclxuICB9XHJcbiAgcmV0dXJuIGNvbnRleHRcclxufVxyXG5cclxuaW50ZXJmYWNlIEF1dGhQcm92aWRlclByb3BzIHtcclxuICBjaGlsZHJlbjogUmVhY3ROb2RlXHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBBdXRoUHJvdmlkZXI6IFJlYWN0LkZDPEF1dGhQcm92aWRlclByb3BzPiA9ICh7IGNoaWxkcmVuIH0pID0+IHtcclxuICBjb25zdCBbc3RhdGUsIHNldFN0YXRlXSA9IHVzZVN0YXRlPEF1dGhTdGF0ZT4oe1xyXG4gICAgdXNlcjogbnVsbCxcclxuICAgIHRva2VuOiBudWxsLFxyXG4gICAgaXNBdXRoZW50aWNhdGVkOiBmYWxzZSxcclxuICAgIGlzTG9hZGluZzogdHJ1ZSxcclxuICB9KVxyXG5cclxuICAvLyDliJ3lp4vljJbmmYLmqqLmn6Xoqo3orYnni4DmhYtcclxuICB1c2VFZmZlY3QoKCkgPT4ge1xyXG4gICAgY29uc3QgaW5pdEF1dGggPSBhc3luYyAoKSA9PiB7XHJcbiAgICAgIGNvbnN0IHRva2VuID0gYXV0aFNlcnZpY2UuZ2V0VG9rZW4oKVxyXG4gICAgICBjb25zdCB1c2VyID0gYXV0aFNlcnZpY2UuZ2V0VXNlcigpXHJcblxyXG4gICAgICBpZiAodG9rZW4gJiYgdXNlcikge1xyXG4gICAgICAgIC8vIOmpl+itiSB0b2tlbiDmmK/lkKbku43nhLbmnInmlYhcclxuICAgICAgICBjb25zdCBpc1ZhbGlkID0gYXdhaXQgYXV0aFNlcnZpY2UuY2hlY2tBdXRoU3RhdHVzKClcclxuICAgICAgICBpZiAoaXNWYWxpZCkge1xyXG4gICAgICAgICAgc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICB1c2VyLFxyXG4gICAgICAgICAgICB0b2tlbixcclxuICAgICAgICAgICAgaXNBdXRoZW50aWNhdGVkOiB0cnVlLFxyXG4gICAgICAgICAgICBpc0xvYWRpbmc6IGZhbHNlLFxyXG4gICAgICAgICAgfSlcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgLy8gVG9rZW4g54Sh5pWI77yM5riF6Zmk5pys5Zyw5a2Y5YSyXHJcbiAgICAgICAgICBhdXRoU2VydmljZS5sb2dvdXQoKVxyXG4gICAgICAgICAgc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICB1c2VyOiBudWxsLFxyXG4gICAgICAgICAgICB0b2tlbjogbnVsbCxcclxuICAgICAgICAgICAgaXNBdXRoZW50aWNhdGVkOiBmYWxzZSxcclxuICAgICAgICAgICAgaXNMb2FkaW5nOiBmYWxzZSxcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHNldFN0YXRlKHtcclxuICAgICAgICAgIHVzZXI6IG51bGwsXHJcbiAgICAgICAgICB0b2tlbjogbnVsbCxcclxuICAgICAgICAgIGlzQXV0aGVudGljYXRlZDogZmFsc2UsXHJcbiAgICAgICAgICBpc0xvYWRpbmc6IGZhbHNlLFxyXG4gICAgICAgIH0pXHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpbml0QXV0aCgpXHJcbiAgfSwgW10pXHJcblxyXG4gIGNvbnN0IGxvZ2luID0gYXN5bmMgKGVtYWlsOiBzdHJpbmcsIHBhc3N3b3JkOiBzdHJpbmcpID0+IHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgYXV0aFNlcnZpY2UubG9naW4oeyBlbWFpbCwgcGFzc3dvcmQgfSlcclxuXHJcbiAgICAgIGlmIChyZXNwb25zZS5zdWNjZXNzICYmIHJlc3BvbnNlLmRhdGEpIHtcclxuICAgICAgICBzZXRTdGF0ZSh7XHJcbiAgICAgICAgICB1c2VyOiByZXNwb25zZS5kYXRhLnVzZXIsXHJcbiAgICAgICAgICB0b2tlbjogcmVzcG9uc2UuZGF0YS50b2tlbixcclxuICAgICAgICAgIGlzQXV0aGVudGljYXRlZDogdHJ1ZSxcclxuICAgICAgICAgIGlzTG9hZGluZzogZmFsc2UsXHJcbiAgICAgICAgfSlcclxuICAgICAgICByZXR1cm4geyBzdWNjZXNzOiB0cnVlIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4geyBzdWNjZXNzOiBmYWxzZSwgZXJyb3I6IHJlc3BvbnNlLmVycm9yIHx8ICfnmbvlhaXlpLHmlZcnIH1cclxuICAgICAgfVxyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgcmV0dXJuIHsgc3VjY2VzczogZmFsc2UsIGVycm9yOiAn57ay6Lev6Yyv6Kqk77yM6KuL56iN5b6M5YaN6KmmJyB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjb25zdCByZWdpc3RlciA9IGFzeW5jICh1c2VybmFtZTogc3RyaW5nLCBlbWFpbDogc3RyaW5nLCBwYXNzd29yZDogc3RyaW5nKSA9PiB7XHJcbiAgICB0cnkge1xyXG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGF1dGhTZXJ2aWNlLnJlZ2lzdGVyKHsgdXNlcm5hbWUsIGVtYWlsLCBwYXNzd29yZCB9KVxyXG5cclxuICAgICAgaWYgKHJlc3BvbnNlLnN1Y2Nlc3MgJiYgcmVzcG9uc2UuZGF0YSkge1xyXG4gICAgICAgIHNldFN0YXRlKHtcclxuICAgICAgICAgIHVzZXI6IHJlc3BvbnNlLmRhdGEudXNlcixcclxuICAgICAgICAgIHRva2VuOiByZXNwb25zZS5kYXRhLnRva2VuLFxyXG4gICAgICAgICAgaXNBdXRoZW50aWNhdGVkOiB0cnVlLFxyXG4gICAgICAgICAgaXNMb2FkaW5nOiBmYWxzZSxcclxuICAgICAgICB9KVxyXG4gICAgICAgIHJldHVybiB7IHN1Y2Nlc3M6IHRydWUgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiB7IHN1Y2Nlc3M6IGZhbHNlLCBlcnJvcjogcmVzcG9uc2UuZXJyb3IgfHwgJ+iou+WGiuWkseaVlycgfVxyXG4gICAgICB9XHJcbiAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICByZXR1cm4geyBzdWNjZXNzOiBmYWxzZSwgZXJyb3I6ICfntrLot6/pjK/oqqTvvIzoq4vnqI3lvozlho3oqaYnIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNvbnN0IGxvZ291dCA9ICgpID0+IHtcclxuICAgIGF1dGhTZXJ2aWNlLmxvZ291dCgpXHJcbiAgICBzZXRTdGF0ZSh7XHJcbiAgICAgIHVzZXI6IG51bGwsXHJcbiAgICAgIHRva2VuOiBudWxsLFxyXG4gICAgICBpc0F1dGhlbnRpY2F0ZWQ6IGZhbHNlLFxyXG4gICAgICBpc0xvYWRpbmc6IGZhbHNlLFxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGNvbnN0IGNoZWNrQXV0aCA9IGFzeW5jICgpOiBQcm9taXNlPGJvb2xlYW4+ID0+IHtcclxuICAgIGlmICghc3RhdGUudG9rZW4pIHJldHVybiBmYWxzZVxyXG5cclxuICAgIGNvbnN0IGlzVmFsaWQgPSBhd2FpdCBhdXRoU2VydmljZS5jaGVja0F1dGhTdGF0dXMoKVxyXG4gICAgaWYgKCFpc1ZhbGlkKSB7XHJcbiAgICAgIGxvZ291dCgpXHJcbiAgICAgIHJldHVybiBmYWxzZVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRydWVcclxuICB9XHJcblxyXG4gIGNvbnN0IGNvbnRleHRWYWx1ZTogQXV0aENvbnRleHRUeXBlID0ge1xyXG4gICAgLi4uc3RhdGUsXHJcbiAgICBsb2dpbixcclxuICAgIHJlZ2lzdGVyLFxyXG4gICAgbG9nb3V0LFxyXG4gICAgY2hlY2tBdXRoLFxyXG4gIH1cclxuXHJcbiAgcmV0dXJuIChcclxuICAgIDxBdXRoQ29udGV4dC5Qcm92aWRlciB2YWx1ZT17Y29udGV4dFZhbHVlfT5cclxuICAgICAge2NoaWxkcmVufVxyXG4gICAgPC9BdXRoQ29udGV4dC5Qcm92aWRlcj5cclxuICApXHJcbn0iXSwibmFtZXMiOlsiUmVhY3QiLCJjcmVhdGVDb250ZXh0IiwidXNlQ29udGV4dCIsInVzZUVmZmVjdCIsInVzZVN0YXRlIiwiYXV0aFNlcnZpY2UiLCJBdXRoQ29udGV4dCIsInVuZGVmaW5lZCIsInVzZUF1dGgiLCJjb250ZXh0IiwiRXJyb3IiLCJBdXRoUHJvdmlkZXIiLCJjaGlsZHJlbiIsInN0YXRlIiwic2V0U3RhdGUiLCJ1c2VyIiwidG9rZW4iLCJpc0F1dGhlbnRpY2F0ZWQiLCJpc0xvYWRpbmciLCJpbml0QXV0aCIsImdldFRva2VuIiwiZ2V0VXNlciIsImlzVmFsaWQiLCJjaGVja0F1dGhTdGF0dXMiLCJsb2dvdXQiLCJsb2dpbiIsImVtYWlsIiwicGFzc3dvcmQiLCJyZXNwb25zZSIsInN1Y2Nlc3MiLCJkYXRhIiwiZXJyb3IiLCJyZWdpc3RlciIsInVzZXJuYW1lIiwiY2hlY2tBdXRoIiwiY29udGV4dFZhbHVlIiwiUHJvdmlkZXIiLCJ2YWx1ZSJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./contexts/AuthContext.tsx\n"); + +/***/ }), + +/***/ "(ssr)/./lib/services/auth.ts": +/*!******************************!*\ + !*** ./lib/services/auth.ts ***! + \******************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ authService: () => (/* binding */ authService)\n/* harmony export */ });\n// Auth service for handling authentication API calls\nconst API_BASE_URL = 'http://localhost:5000';\nclass AuthService {\n async makeRequest(endpoint, options = {}) {\n const url = `${API_BASE_URL}/api/auth${endpoint}`;\n console.log('Making request to:', url);\n console.log('Request body:', options.body);\n const response = await fetch(url, {\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n },\n ...options\n });\n if (!response.ok) {\n const errorData = await response.json().catch(()=>({\n error: 'Network error'\n }));\n console.log('API Error Response:', errorData);\n // 處理驗證錯誤 (400 Bad Request)\n if (response.status === 400 && errorData.errors) {\n const validationErrors = Object.entries(errorData.errors).map(([field, messages])=>`${field}: ${Array.isArray(messages) ? messages.join(', ') : messages}`).join('\\n');\n throw new Error(validationErrors);\n }\n throw new Error(errorData.error || errorData.title || `HTTP ${response.status}`);\n }\n return response.json();\n }\n async login(data) {\n try {\n const response = await this.makeRequest('/login', {\n method: 'POST',\n body: JSON.stringify(data)\n });\n if (response.success && response.data?.token) {\n // Store token in localStorage\n localStorage.setItem('auth_token', response.data.token);\n localStorage.setItem('user_data', JSON.stringify(response.data.user));\n }\n return response;\n } catch (error) {\n return {\n success: false,\n error: error instanceof Error ? error.message : 'Login failed'\n };\n }\n }\n async register(data) {\n try {\n console.log('AuthService.register called with:', {\n username: data.username,\n email: data.email,\n password: data.password ? '[hidden]' : 'empty'\n });\n const response = await this.makeRequest('/register', {\n method: 'POST',\n body: JSON.stringify(data)\n });\n if (response.success && response.data?.token) {\n // Store token in localStorage\n localStorage.setItem('auth_token', response.data.token);\n localStorage.setItem('user_data', JSON.stringify(response.data.user));\n }\n return response;\n } catch (error) {\n return {\n success: false,\n error: error instanceof Error ? error.message : 'Registration failed'\n };\n }\n }\n async logout() {\n localStorage.removeItem('auth_token');\n localStorage.removeItem('user_data');\n }\n getToken() {\n if (true) return null;\n return localStorage.getItem('auth_token');\n }\n getUser() {\n if (true) return null;\n const userData = localStorage.getItem('user_data');\n return userData ? JSON.parse(userData) : null;\n }\n isAuthenticated() {\n return this.getToken() !== null;\n }\n async checkAuthStatus() {\n const token = this.getToken();\n if (!token) return false;\n try {\n await this.makeRequest('/status', {\n headers: {\n 'Authorization': `Bearer ${token}`\n }\n });\n return true;\n } catch {\n // Token is invalid, clear it\n this.logout();\n return false;\n }\n }\n}\nconst authService = new AuthService();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QVMsQ0FBQ3pCLFNBQVNzQixJQUFJLENBQUNRLElBQUk7WUFDckU7WUFFQSxPQUFPOUI7UUFDVCxFQUFFLE9BQU9PLE9BQU87WUFDZCxPQUFPO2dCQUNMbUIsU0FBUztnQkFDVG5CLE9BQU9BLGlCQUFpQlksUUFBUVosTUFBTXdCLE9BQU8sR0FBRztZQUNsRDtRQUNGO0lBQ0Y7SUFFQSxNQUFNSyxTQUF3QjtRQUM1QlIsYUFBYVMsVUFBVSxDQUFDO1FBQ3hCVCxhQUFhUyxVQUFVLENBQUM7SUFDMUI7SUFFQUMsV0FBMEI7UUFDeEIsSUFBSSxJQUE2QixFQUFFLE9BQU87UUFDMUMsT0FBT1YsYUFBYVcsT0FBTyxDQUFDO0lBQzlCO0lBRUFDLFVBQXVCO1FBQ3JCLElBQUksSUFBNkIsRUFBRSxPQUFPO1FBQzFDLE1BQU1DLFdBQVdiLGFBQWFXLE9BQU8sQ0FBQztRQUN0QyxPQUFPRSxXQUFXakIsS0FBS2tCLEtBQUssQ0FBQ0QsWUFBWTtJQUMzQztJQUVBRSxrQkFBMkI7UUFDekIsT0FBTyxJQUFJLENBQUNMLFFBQVEsT0FBTztJQUM3QjtJQUVBLE1BQU1NLGtCQUFvQztRQUN4QyxNQUFNakIsUUFBUSxJQUFJLENBQUNXLFFBQVE7UUFDM0IsSUFBSSxDQUFDWCxPQUFPLE9BQU87UUFFbkIsSUFBSTtZQUNGLE1BQU0sSUFBSSxDQUFDbEMsV0FBVyxDQUFDLFdBQVc7Z0JBQ2hDUyxTQUFTO29CQUNQLGlCQUFpQixDQUFDLE9BQU8sRUFBRXlCLE9BQU87Z0JBQ3BDO1lBQ0Y7WUFDQSxPQUFPO1FBQ1QsRUFBRSxPQUFNO1lBQ04sNkJBQTZCO1lBQzdCLElBQUksQ0FBQ1MsTUFBTTtZQUNYLE9BQU87UUFDVDtJQUNGO0FBQ0Y7QUFFTyxNQUFNUyxjQUFjLElBQUlyRCxjQUFjIiwic291cmNlcyI6WyIvVXNlcnMvamV0dGNoZW5nMTAxOC9jb2RlL2RyYW1hbGluZy12b2NhYi1sZWFybmluZy9mcm9udGVuZC9saWIvc2VydmljZXMvYXV0aC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBBdXRoIHNlcnZpY2UgZm9yIGhhbmRsaW5nIGF1dGhlbnRpY2F0aW9uIEFQSSBjYWxsc1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBMb2dpblJlcXVlc3Qge1xyXG4gIGVtYWlsOiBzdHJpbmc7XHJcbiAgcGFzc3dvcmQ6IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBSZWdpc3RlclJlcXVlc3Qge1xyXG4gIHVzZXJuYW1lOiBzdHJpbmc7XHJcbiAgZW1haWw6IHN0cmluZztcclxuICBwYXNzd29yZDogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFVzZXIge1xyXG4gIGlkOiBzdHJpbmc7XHJcbiAgdXNlcm5hbWU6IHN0cmluZztcclxuICBlbWFpbDogc3RyaW5nO1xyXG4gIGRpc3BsYXlOYW1lOiBzdHJpbmcgfCBudWxsO1xyXG4gIGF2YXRhclVybDogc3RyaW5nIHwgbnVsbDtcclxuICBzdWJzY3JpcHRpb25UeXBlOiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQXV0aFJlc3BvbnNlIHtcclxuICBzdWNjZXNzOiBib29sZWFuO1xyXG4gIGRhdGE/OiB7XHJcbiAgICB0b2tlbjogc3RyaW5nO1xyXG4gICAgdXNlcjogVXNlcjtcclxuICB9O1xyXG4gIGVycm9yPzogc3RyaW5nO1xyXG59XHJcblxyXG5jb25zdCBBUElfQkFTRV9VUkwgPSAnaHR0cDovL2xvY2FsaG9zdDo1MDAwJztcclxuXHJcbmNsYXNzIEF1dGhTZXJ2aWNlIHtcclxuICBwcml2YXRlIGFzeW5jIG1ha2VSZXF1ZXN0PFQ+KFxyXG4gICAgZW5kcG9pbnQ6IHN0cmluZyxcclxuICAgIG9wdGlvbnM6IFJlcXVlc3RJbml0ID0ge31cclxuICApOiBQcm9taXNlPFQ+IHtcclxuICAgIGNvbnN0IHVybCA9IGAke0FQSV9CQVNFX1VSTH0vYXBpL2F1dGgke2VuZHBvaW50fWA7XHJcblxyXG4gICAgY29uc29sZS5sb2coJ01ha2luZyByZXF1ZXN0IHRvOicsIHVybClcclxuICAgIGNvbnNvbGUubG9nKCdSZXF1ZXN0IGJvZHk6Jywgb3B0aW9ucy5ib2R5KVxyXG5cclxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2godXJsLCB7XHJcbiAgICAgIGhlYWRlcnM6IHtcclxuICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxyXG4gICAgICAgIC4uLm9wdGlvbnMuaGVhZGVycyxcclxuICAgICAgfSxcclxuICAgICAgLi4ub3B0aW9ucyxcclxuICAgIH0pO1xyXG5cclxuICAgIGlmICghcmVzcG9uc2Uub2spIHtcclxuICAgICAgY29uc3QgZXJyb3JEYXRhID0gYXdhaXQgcmVzcG9uc2UuanNvbigpLmNhdGNoKCgpID0+ICh7IGVycm9yOiAnTmV0d29yayBlcnJvcicgfSkpO1xyXG4gICAgICBjb25zb2xlLmxvZygnQVBJIEVycm9yIFJlc3BvbnNlOicsIGVycm9yRGF0YSlcclxuXHJcbiAgICAgIC8vIOiZleeQhumpl+itiemMr+iqpCAoNDAwIEJhZCBSZXF1ZXN0KVxyXG4gICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSA0MDAgJiYgZXJyb3JEYXRhLmVycm9ycykge1xyXG4gICAgICAgIGNvbnN0IHZhbGlkYXRpb25FcnJvcnMgPSBPYmplY3QuZW50cmllcyhlcnJvckRhdGEuZXJyb3JzKVxyXG4gICAgICAgICAgLm1hcCgoW2ZpZWxkLCBtZXNzYWdlc106IFtzdHJpbmcsIGFueV0pID0+IGAke2ZpZWxkfTogJHtBcnJheS5pc0FycmF5KG1lc3NhZ2VzKSA/IG1lc3NhZ2VzLmpvaW4oJywgJykgOiBtZXNzYWdlc31gKVxyXG4gICAgICAgICAgLmpvaW4oJ1xcbicpO1xyXG4gICAgICAgIHRocm93IG5ldyBFcnJvcih2YWxpZGF0aW9uRXJyb3JzKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yRGF0YS5lcnJvciB8fCBlcnJvckRhdGEudGl0bGUgfHwgYEhUVFAgJHtyZXNwb25zZS5zdGF0dXN9YCk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHJlc3BvbnNlLmpzb24oKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIGxvZ2luKGRhdGE6IExvZ2luUmVxdWVzdCk6IFByb21pc2U8QXV0aFJlc3BvbnNlPiB7XHJcbiAgICB0cnkge1xyXG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMubWFrZVJlcXVlc3Q8QXV0aFJlc3BvbnNlPignL2xvZ2luJywge1xyXG4gICAgICAgIG1ldGhvZDogJ1BPU1QnLFxyXG4gICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KGRhdGEpLFxyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIGlmIChyZXNwb25zZS5zdWNjZXNzICYmIHJlc3BvbnNlLmRhdGE/LnRva2VuKSB7XHJcbiAgICAgICAgLy8gU3RvcmUgdG9rZW4gaW4gbG9jYWxTdG9yYWdlXHJcbiAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2F1dGhfdG9rZW4nLCByZXNwb25zZS5kYXRhLnRva2VuKTtcclxuICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgndXNlcl9kYXRhJywgSlNPTi5zdHJpbmdpZnkocmVzcG9uc2UuZGF0YS51c2VyKSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJldHVybiByZXNwb25zZTtcclxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgc3VjY2VzczogZmFsc2UsXHJcbiAgICAgICAgZXJyb3I6IGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogJ0xvZ2luIGZhaWxlZCcsXHJcbiAgICAgIH07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhc3luYyByZWdpc3RlcihkYXRhOiBSZWdpc3RlclJlcXVlc3QpOiBQcm9taXNlPEF1dGhSZXNwb25zZT4ge1xyXG4gICAgdHJ5IHtcclxuICAgICAgY29uc29sZS5sb2coJ0F1dGhTZXJ2aWNlLnJlZ2lzdGVyIGNhbGxlZCB3aXRoOicsIHtcclxuICAgICAgICB1c2VybmFtZTogZGF0YS51c2VybmFtZSxcclxuICAgICAgICBlbWFpbDogZGF0YS5lbWFpbCxcclxuICAgICAgICBwYXNzd29yZDogZGF0YS5wYXNzd29yZCA/ICdbaGlkZGVuXScgOiAnZW1wdHknXHJcbiAgICAgIH0pXHJcblxyXG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMubWFrZVJlcXVlc3Q8QXV0aFJlc3BvbnNlPignL3JlZ2lzdGVyJywge1xyXG4gICAgICAgIG1ldGhvZDogJ1BPU1QnLFxyXG4gICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KGRhdGEpLFxyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIGlmIChyZXNwb25zZS5zdWNjZXNzICYmIHJlc3BvbnNlLmRhdGE/LnRva2VuKSB7XHJcbiAgICAgICAgLy8gU3RvcmUgdG9rZW4gaW4gbG9jYWxTdG9yYWdlXHJcbiAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2F1dGhfdG9rZW4nLCByZXNwb25zZS5kYXRhLnRva2VuKTtcclxuICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgndXNlcl9kYXRhJywgSlNPTi5zdHJpbmdpZnkocmVzcG9uc2UuZGF0YS51c2VyKSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJldHVybiByZXNwb25zZTtcclxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgc3VjY2VzczogZmFsc2UsXHJcbiAgICAgICAgZXJyb3I6IGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogJ1JlZ2lzdHJhdGlvbiBmYWlsZWQnLFxyXG4gICAgICB9O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgbG9nb3V0KCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ2F1dGhfdG9rZW4nKTtcclxuICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCd1c2VyX2RhdGEnKTtcclxuICB9XHJcblxyXG4gIGdldFRva2VuKCk6IHN0cmluZyB8IG51bGwge1xyXG4gICAgaWYgKHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnKSByZXR1cm4gbnVsbDtcclxuICAgIHJldHVybiBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnYXV0aF90b2tlbicpO1xyXG4gIH1cclxuXHJcbiAgZ2V0VXNlcigpOiBVc2VyIHwgbnVsbCB7XHJcbiAgICBpZiAodHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCcpIHJldHVybiBudWxsO1xyXG4gICAgY29uc3QgdXNlckRhdGEgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgndXNlcl9kYXRhJyk7XHJcbiAgICByZXR1cm4gdXNlckRhdGEgPyBKU09OLnBhcnNlKHVzZXJEYXRhKSA6IG51bGw7XHJcbiAgfVxyXG5cclxuICBpc0F1dGhlbnRpY2F0ZWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5nZXRUb2tlbigpICE9PSBudWxsO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgY2hlY2tBdXRoU3RhdHVzKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xyXG4gICAgY29uc3QgdG9rZW4gPSB0aGlzLmdldFRva2VuKCk7XHJcbiAgICBpZiAoIXRva2VuKSByZXR1cm4gZmFsc2U7XHJcblxyXG4gICAgdHJ5IHtcclxuICAgICAgYXdhaXQgdGhpcy5tYWtlUmVxdWVzdCgnL3N0YXR1cycsIHtcclxuICAgICAgICBoZWFkZXJzOiB7XHJcbiAgICAgICAgICAnQXV0aG9yaXphdGlvbic6IGBCZWFyZXIgJHt0b2tlbn1gLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH0gY2F0Y2gge1xyXG4gICAgICAvLyBUb2tlbiBpcyBpbnZhbGlkLCBjbGVhciBpdFxyXG4gICAgICB0aGlzLmxvZ291dCgpO1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgY29uc3QgYXV0aFNlcnZpY2UgPSBuZXcgQXV0aFNlcnZpY2UoKTsiXSwibmFtZXMiOlsiQVBJX0JBU0VfVVJMIiwiQXV0aFNlcnZpY2UiLCJtYWtlUmVxdWVzdCIsImVuZHBvaW50Iiwib3B0aW9ucyIsInVybCIsImNvbnNvbGUiLCJsb2ciLCJib2R5IiwicmVzcG9uc2UiLCJmZXRjaCIsImhlYWRlcnMiLCJvayIsImVycm9yRGF0YSIsImpzb24iLCJjYXRjaCIsImVycm9yIiwic3RhdHVzIiwiZXJyb3JzIiwidmFsaWRhdGlvbkVycm9ycyIsIk9iamVjdCIsImVudHJpZXMiLCJtYXAiLCJmaWVsZCIsIm1lc3NhZ2VzIiwiQXJyYXkiLCJpc0FycmF5Iiwiam9pbiIsIkVycm9yIiwidGl0bGUiLCJsb2dpbiIsImRhdGEiLCJtZXRob2QiLCJKU09OIiwic3RyaW5naWZ5Iiwic3VjY2VzcyIsInRva2VuIiwibG9jYWxTdG9yYWdlIiwic2V0SXRlbSIsInVzZXIiLCJtZXNzYWdlIiwicmVnaXN0ZXIiLCJ1c2VybmFtZSIsImVtYWlsIiwicGFzc3dvcmQiLCJsb2dvdXQiLCJyZW1vdmVJdGVtIiwiZ2V0VG9rZW4iLCJnZXRJdGVtIiwiZ2V0VXNlciIsInVzZXJEYXRhIiwicGFyc2UiLCJpc0F1dGhlbnRpY2F0ZWQiLCJjaGVja0F1dGhTdGF0dXMiLCJhdXRoU2VydmljZSJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./lib/services/auth.ts\n"); + +/***/ }), + +/***/ "(ssr)/./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%7B%22request%22%3A%22%2FUsers%2Fjettcheng1018%2Fcode%2Fdramaling-vocab-learning%2Ffrontend%2Fapp%2Fgenerate%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=true!": +/*!*****************************************************************************************************************************************************************************************************************************************************************!*\ + !*** ./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%7B%22request%22%3A%22%2FUsers%2Fjettcheng1018%2Fcode%2Fdramaling-vocab-learning%2Ffrontend%2Fapp%2Fgenerate%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=true! ***! + \*****************************************************************************************************************************************************************************************************************************************************************/ +/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { + +eval("Promise.resolve(/*! import() eager */).then(__webpack_require__.bind(__webpack_require__, /*! ./app/generate/page.tsx */ \"(ssr)/./app/generate/page.tsx\"));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2J1aWxkL3dlYnBhY2svbG9hZGVycy9uZXh0LWZsaWdodC1jbGllbnQtZW50cnktbG9hZGVyLmpzP21vZHVsZXM9JTdCJTIycmVxdWVzdCUyMiUzQSUyMiUyRlVzZXJzJTJGamV0dGNoZW5nMTAxOCUyRmNvZGUlMkZkcmFtYWxpbmctdm9jYWItbGVhcm5pbmclMkZmcm9udGVuZCUyRmFwcCUyRmdlbmVyYXRlJTJGcGFnZS50c3glMjIlMkMlMjJpZHMlMjIlM0ElNUIlNUQlN0Qmc2VydmVyPXRydWUhIiwibWFwcGluZ3MiOiJBQUFBLDBKQUFzSCIsInNvdXJjZXMiOlsiIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCgvKiB3ZWJwYWNrTW9kZTogXCJlYWdlclwiICovIFwiL1VzZXJzL2pldHRjaGVuZzEwMTgvY29kZS9kcmFtYWxpbmctdm9jYWItbGVhcm5pbmcvZnJvbnRlbmQvYXBwL2dlbmVyYXRlL3BhZ2UudHN4XCIpO1xuIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%7B%22request%22%3A%22%2FUsers%2Fjettcheng1018%2Fcode%2Fdramaling-vocab-learning%2Ffrontend%2Fapp%2Fgenerate%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=true!\n"); + +/***/ }), + +/***/ "(ssr)/./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%7B%22request%22%3A%22%2FUsers%2Fjettcheng1018%2Fcode%2Fdramaling-vocab-learning%2Ffrontend%2Fcontexts%2FAuthContext.tsx%22%2C%22ids%22%3A%5B%22AuthProvider%22%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fjettcheng1018%2Fcode%2Fdramaling-vocab-learning%2Ffrontend%2Fnode_modules%2Fnext%2Ffont%2Fgoogle%2Ftarget.css%3F%7B%5C%22path%5C%22%3A%5C%22app%2Flayout.tsx%5C%22%2C%5C%22import%5C%22%3A%5C%22Inter%5C%22%2C%5C%22arguments%5C%22%3A%5B%7B%5C%22subsets%5C%22%3A%5B%5C%22latin%5C%22%5D%7D%5D%2C%5C%22variableName%5C%22%3A%5C%22inter%5C%22%7D%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fjettcheng1018%2Fcode%2Fdramaling-vocab-learning%2Ffrontend%2Fapp%2Fglobals.css%22%2C%22ids%22%3A%5B%5D%7D&server=true!": +/*!*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ + !*** ./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%7B%22request%22%3A%22%2FUsers%2Fjettcheng1018%2Fcode%2Fdramaling-vocab-learning%2Ffrontend%2Fcontexts%2FAuthContext.tsx%22%2C%22ids%22%3A%5B%22AuthProvider%22%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fjettcheng1018%2Fcode%2Fdramaling-vocab-learning%2Ffrontend%2Fnode_modules%2Fnext%2Ffont%2Fgoogle%2Ftarget.css%3F%7B%5C%22path%5C%22%3A%5C%22app%2Flayout.tsx%5C%22%2C%5C%22import%5C%22%3A%5C%22Inter%5C%22%2C%5C%22arguments%5C%22%3A%5B%7B%5C%22subsets%5C%22%3A%5B%5C%22latin%5C%22%5D%7D%5D%2C%5C%22variableName%5C%22%3A%5C%22inter%5C%22%7D%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fjettcheng1018%2Fcode%2Fdramaling-vocab-learning%2Ffrontend%2Fapp%2Fglobals.css%22%2C%22ids%22%3A%5B%5D%7D&server=true! ***! + \*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ +/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { + +eval("Promise.resolve(/*! import() eager */).then(__webpack_require__.bind(__webpack_require__, /*! ./contexts/AuthContext.tsx */ \"(ssr)/./contexts/AuthContext.tsx\"));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2J1aWxkL3dlYnBhY2svbG9hZGVycy9uZXh0LWZsaWdodC1jbGllbnQtZW50cnktbG9hZGVyLmpzP21vZHVsZXM9JTdCJTIycmVxdWVzdCUyMiUzQSUyMiUyRlVzZXJzJTJGamV0dGNoZW5nMTAxOCUyRmNvZGUlMkZkcmFtYWxpbmctdm9jYWItbGVhcm5pbmclMkZmcm9udGVuZCUyRmNvbnRleHRzJTJGQXV0aENvbnRleHQudHN4JTIyJTJDJTIyaWRzJTIyJTNBJTVCJTIyQXV0aFByb3ZpZGVyJTIyJTVEJTdEJm1vZHVsZXM9JTdCJTIycmVxdWVzdCUyMiUzQSUyMiUyRlVzZXJzJTJGamV0dGNoZW5nMTAxOCUyRmNvZGUlMkZkcmFtYWxpbmctdm9jYWItbGVhcm5pbmclMkZmcm9udGVuZCUyRm5vZGVfbW9kdWxlcyUyRm5leHQlMkZmb250JTJGZ29vZ2xlJTJGdGFyZ2V0LmNzcyUzRiU3QiU1QyUyMnBhdGglNUMlMjIlM0ElNUMlMjJhcHAlMkZsYXlvdXQudHN4JTVDJTIyJTJDJTVDJTIyaW1wb3J0JTVDJTIyJTNBJTVDJTIySW50ZXIlNUMlMjIlMkMlNUMlMjJhcmd1bWVudHMlNUMlMjIlM0ElNUIlN0IlNUMlMjJzdWJzZXRzJTVDJTIyJTNBJTVCJTVDJTIybGF0aW4lNUMlMjIlNUQlN0QlNUQlMkMlNUMlMjJ2YXJpYWJsZU5hbWUlNUMlMjIlM0ElNUMlMjJpbnRlciU1QyUyMiU3RCUyMiUyQyUyMmlkcyUyMiUzQSU1QiU1RCU3RCZtb2R1bGVzPSU3QiUyMnJlcXVlc3QlMjIlM0ElMjIlMkZVc2VycyUyRmpldHRjaGVuZzEwMTglMkZjb2RlJTJGZHJhbWFsaW5nLXZvY2FiLWxlYXJuaW5nJTJGZnJvbnRlbmQlMkZhcHAlMkZnbG9iYWxzLmNzcyUyMiUyQyUyMmlkcyUyMiUzQSU1QiU1RCU3RCZzZXJ2ZXI9dHJ1ZSEiLCJtYXBwaW5ncyI6IkFBQUEsZ0tBQTJKIiwic291cmNlcyI6WyIiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0KC8qIHdlYnBhY2tNb2RlOiBcImVhZ2VyXCIsIHdlYnBhY2tFeHBvcnRzOiBbXCJBdXRoUHJvdmlkZXJcIl0gKi8gXCIvVXNlcnMvamV0dGNoZW5nMTAxOC9jb2RlL2RyYW1hbGluZy12b2NhYi1sZWFybmluZy9mcm9udGVuZC9jb250ZXh0cy9BdXRoQ29udGV4dC50c3hcIik7XG4iXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%7B%22request%22%3A%22%2FUsers%2Fjettcheng1018%2Fcode%2Fdramaling-vocab-learning%2Ffrontend%2Fcontexts%2FAuthContext.tsx%22%2C%22ids%22%3A%5B%22AuthProvider%22%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fjettcheng1018%2Fcode%2Fdramaling-vocab-learning%2Ffrontend%2Fnode_modules%2Fnext%2Ffont%2Fgoogle%2Ftarget.css%3F%7B%5C%22path%5C%22%3A%5C%22app%2Flayout.tsx%5C%22%2C%5C%22import%5C%22%3A%5C%22Inter%5C%22%2C%5C%22arguments%5C%22%3A%5B%7B%5C%22subsets%5C%22%3A%5B%5C%22latin%5C%22%5D%7D%5D%2C%5C%22variableName%5C%22%3A%5C%22inter%5C%22%7D%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fjettcheng1018%2Fcode%2Fdramaling-vocab-learning%2Ffrontend%2Fapp%2Fglobals.css%22%2C%22ids%22%3A%5B%5D%7D&server=true!\n"); + +/***/ }), + +/***/ "(ssr)/./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%7B%22request%22%3A%22%2FUsers%2Fjettcheng1018%2Fcode%2Fdramaling-vocab-learning%2Ffrontend%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fbuiltin%2Fglobal-error.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fjettcheng1018%2Fcode%2Fdramaling-vocab-learning%2Ffrontend%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fclient-page.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fjettcheng1018%2Fcode%2Fdramaling-vocab-learning%2Ffrontend%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fclient-segment.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fjettcheng1018%2Fcode%2Fdramaling-vocab-learning%2Ffrontend%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fhttp-access-fallback%2Ferror-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fjettcheng1018%2Fcode%2Fdramaling-vocab-learning%2Ffrontend%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Flayout-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fjettcheng1018%2Fcode%2Fdramaling-vocab-learning%2Ffrontend%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fmetadata%2Fasync-metadata.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fjettcheng1018%2Fcode%2Fdramaling-vocab-learning%2Ffrontend%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Frender-from-template-context.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fjettcheng1018%2Fcode%2Fdramaling-vocab-learning%2Ffrontend%2Fnode_modules%2Fnext%2Fdist%2Flib%2Fframework%2Fboundary-components.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fjettcheng1018%2Fcode%2Fdramaling-vocab-learning%2Ffrontend%2Fnode_modules%2Fnext%2Fdist%2Flib%2Fmetadata%2Fgenerate%2Ficon-mark.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fjettcheng1018%2Fcode%2Fdramaling-vocab-learning%2Ffrontend%2Fnode_modules%2Fnext%2Fdist%2Fnext-devtools%2Fuserspace%2Fapp%2Fsegment-explorer-node.js%22%2C%22ids%22%3A%5B%5D%7D&server=true!": +/*!*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ + !*** ./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%7B%22request%22%3A%22%2FUsers%2Fjettcheng1018%2Fcode%2Fdramaling-vocab-learning%2Ffrontend%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fbuiltin%2Fglobal-error.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fjettcheng1018%2Fcode%2Fdramaling-vocab-learning%2Ffrontend%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fclient-page.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fjettcheng1018%2Fcode%2Fdramaling-vocab-learning%2Ffrontend%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fclient-segment.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fjettcheng1018%2Fcode%2Fdramaling-vocab-learning%2Ffrontend%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fhttp-access-fallback%2Ferror-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fjettcheng1018%2Fcode%2Fdramaling-vocab-learning%2Ffrontend%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Flayout-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fjettcheng1018%2Fcode%2Fdramaling-vocab-learning%2Ffrontend%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fmetadata%2Fasync-metadata.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fjettcheng1018%2Fcode%2Fdramaling-vocab-learning%2Ffrontend%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Frender-from-template-context.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fjettcheng1018%2Fcode%2Fdramaling-vocab-learning%2Ffrontend%2Fnode_modules%2Fnext%2Fdist%2Flib%2Fframework%2Fboundary-components.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fjettcheng1018%2Fcode%2Fdramaling-vocab-learning%2Ffrontend%2Fnode_modules%2Fnext%2Fdist%2Flib%2Fmetadata%2Fgenerate%2Ficon-mark.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fjettcheng1018%2Fcode%2Fdramaling-vocab-learning%2Ffrontend%2Fnode_modules%2Fnext%2Fdist%2Fnext-devtools%2Fuserspace%2Fapp%2Fsegment-explorer-node.js%22%2C%22ids%22%3A%5B%5D%7D&server=true! ***! + \*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ +/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { + +eval("Promise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__webpack_require__, /*! ./node_modules/next/dist/client/components/builtin/global-error.js */ \"(ssr)/./node_modules/next/dist/client/components/builtin/global-error.js\", 23));\n;\nPromise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__webpack_require__, /*! ./node_modules/next/dist/client/components/client-page.js */ \"(ssr)/./node_modules/next/dist/client/components/client-page.js\", 23));\n;\nPromise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__webpack_require__, /*! ./node_modules/next/dist/client/components/client-segment.js */ \"(ssr)/./node_modules/next/dist/client/components/client-segment.js\", 23));\n;\nPromise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__webpack_require__, /*! ./node_modules/next/dist/client/components/http-access-fallback/error-boundary.js */ \"(ssr)/./node_modules/next/dist/client/components/http-access-fallback/error-boundary.js\", 23));\n;\nPromise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__webpack_require__, /*! ./node_modules/next/dist/client/components/layout-router.js */ \"(ssr)/./node_modules/next/dist/client/components/layout-router.js\", 23));\n;\nPromise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__webpack_require__, /*! ./node_modules/next/dist/client/components/metadata/async-metadata.js */ \"(ssr)/./node_modules/next/dist/client/components/metadata/async-metadata.js\", 23));\n;\nPromise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__webpack_require__, /*! ./node_modules/next/dist/client/components/render-from-template-context.js */ \"(ssr)/./node_modules/next/dist/client/components/render-from-template-context.js\", 23));\n;\nPromise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__webpack_require__, /*! ./node_modules/next/dist/lib/framework/boundary-components.js */ \"(ssr)/./node_modules/next/dist/lib/framework/boundary-components.js\", 23));\n;\nPromise.resolve(/*! import() eager */).then(__webpack_require__.bind(__webpack_require__, /*! ./node_modules/next/dist/lib/metadata/generate/icon-mark.js */ \"(ssr)/./node_modules/next/dist/lib/metadata/generate/icon-mark.js\"));\n;\nPromise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__webpack_require__, /*! ./node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js */ \"(ssr)/./node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js\", 23));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2J1aWxkL3dlYnBhY2svbG9hZGVycy9uZXh0LWZsaWdodC1jbGllbnQtZW50cnktbG9hZGVyLmpzP21vZHVsZXM9JTdCJTIycmVxdWVzdCUyMiUzQSUyMiUyRlVzZXJzJTJGamV0dGNoZW5nMTAxOCUyRmNvZGUlMkZkcmFtYWxpbmctdm9jYWItbGVhcm5pbmclMkZmcm9udGVuZCUyRm5vZGVfbW9kdWxlcyUyRm5leHQlMkZkaXN0JTJGY2xpZW50JTJGY29tcG9uZW50cyUyRmJ1aWx0aW4lMkZnbG9iYWwtZXJyb3IuanMlMjIlMkMlMjJpZHMlMjIlM0ElNUIlNUQlN0QmbW9kdWxlcz0lN0IlMjJyZXF1ZXN0JTIyJTNBJTIyJTJGVXNlcnMlMkZqZXR0Y2hlbmcxMDE4JTJGY29kZSUyRmRyYW1hbGluZy12b2NhYi1sZWFybmluZyUyRmZyb250ZW5kJTJGbm9kZV9tb2R1bGVzJTJGbmV4dCUyRmRpc3QlMkZjbGllbnQlMkZjb21wb25lbnRzJTJGY2xpZW50LXBhZ2UuanMlMjIlMkMlMjJpZHMlMjIlM0ElNUIlNUQlN0QmbW9kdWxlcz0lN0IlMjJyZXF1ZXN0JTIyJTNBJTIyJTJGVXNlcnMlMkZqZXR0Y2hlbmcxMDE4JTJGY29kZSUyRmRyYW1hbGluZy12b2NhYi1sZWFybmluZyUyRmZyb250ZW5kJTJGbm9kZV9tb2R1bGVzJTJGbmV4dCUyRmRpc3QlMkZjbGllbnQlMkZjb21wb25lbnRzJTJGY2xpZW50LXNlZ21lbnQuanMlMjIlMkMlMjJpZHMlMjIlM0ElNUIlNUQlN0QmbW9kdWxlcz0lN0IlMjJyZXF1ZXN0JTIyJTNBJTIyJTJGVXNlcnMlMkZqZXR0Y2hlbmcxMDE4JTJGY29kZSUyRmRyYW1hbGluZy12b2NhYi1sZWFybmluZyUyRmZyb250ZW5kJTJGbm9kZV9tb2R1bGVzJTJGbmV4dCUyRmRpc3QlMkZjbGllbnQlMkZjb21wb25lbnRzJTJGaHR0cC1hY2Nlc3MtZmFsbGJhY2slMkZlcnJvci1ib3VuZGFyeS5qcyUyMiUyQyUyMmlkcyUyMiUzQSU1QiU1RCU3RCZtb2R1bGVzPSU3QiUyMnJlcXVlc3QlMjIlM0ElMjIlMkZVc2VycyUyRmpldHRjaGVuZzEwMTglMkZjb2RlJTJGZHJhbWFsaW5nLXZvY2FiLWxlYXJuaW5nJTJGZnJvbnRlbmQlMkZub2RlX21vZHVsZXMlMkZuZXh0JTJGZGlzdCUyRmNsaWVudCUyRmNvbXBvbmVudHMlMkZsYXlvdXQtcm91dGVyLmpzJTIyJTJDJTIyaWRzJTIyJTNBJTVCJTVEJTdEJm1vZHVsZXM9JTdCJTIycmVxdWVzdCUyMiUzQSUyMiUyRlVzZXJzJTJGamV0dGNoZW5nMTAxOCUyRmNvZGUlMkZkcmFtYWxpbmctdm9jYWItbGVhcm5pbmclMkZmcm9udGVuZCUyRm5vZGVfbW9kdWxlcyUyRm5leHQlMkZkaXN0JTJGY2xpZW50JTJGY29tcG9uZW50cyUyRm1ldGFkYXRhJTJGYXN5bmMtbWV0YWRhdGEuanMlMjIlMkMlMjJpZHMlMjIlM0ElNUIlNUQlN0QmbW9kdWxlcz0lN0IlMjJyZXF1ZXN0JTIyJTNBJTIyJTJGVXNlcnMlMkZqZXR0Y2hlbmcxMDE4JTJGY29kZSUyRmRyYW1hbGluZy12b2NhYi1sZWFybmluZyUyRmZyb250ZW5kJTJGbm9kZV9tb2R1bGVzJTJGbmV4dCUyRmRpc3QlMkZjbGllbnQlMkZjb21wb25lbnRzJTJGcmVuZGVyLWZyb20tdGVtcGxhdGUtY29udGV4dC5qcyUyMiUyQyUyMmlkcyUyMiUzQSU1QiU1RCU3RCZtb2R1bGVzPSU3QiUyMnJlcXVlc3QlMjIlM0ElMjIlMkZVc2VycyUyRmpldHRjaGVuZzEwMTglMkZjb2RlJTJGZHJhbWFsaW5nLXZvY2FiLWxlYXJuaW5nJTJGZnJvbnRlbmQlMkZub2RlX21vZHVsZXMlMkZuZXh0JTJGZGlzdCUyRmxpYiUyRmZyYW1ld29yayUyRmJvdW5kYXJ5LWNvbXBvbmVudHMuanMlMjIlMkMlMjJpZHMlMjIlM0ElNUIlNUQlN0QmbW9kdWxlcz0lN0IlMjJyZXF1ZXN0JTIyJTNBJTIyJTJGVXNlcnMlMkZqZXR0Y2hlbmcxMDE4JTJGY29kZSUyRmRyYW1hbGluZy12b2NhYi1sZWFybmluZyUyRmZyb250ZW5kJTJGbm9kZV9tb2R1bGVzJTJGbmV4dCUyRmRpc3QlMkZsaWIlMkZtZXRhZGF0YSUyRmdlbmVyYXRlJTJGaWNvbi1tYXJrLmpzJTIyJTJDJTIyaWRzJTIyJTNBJTVCJTVEJTdEJm1vZHVsZXM9JTdCJTIycmVxdWVzdCUyMiUzQSUyMiUyRlVzZXJzJTJGamV0dGNoZW5nMTAxOCUyRmNvZGUlMkZkcmFtYWxpbmctdm9jYWItbGVhcm5pbmclMkZmcm9udGVuZCUyRm5vZGVfbW9kdWxlcyUyRm5leHQlMkZkaXN0JTJGbmV4dC1kZXZ0b29scyUyRnVzZXJzcGFjZSUyRmFwcCUyRnNlZ21lbnQtZXhwbG9yZXItbm9kZS5qcyUyMiUyQyUyMmlkcyUyMiUzQSU1QiU1RCU3RCZzZXJ2ZXI9dHJ1ZSEiLCJtYXBwaW5ncyI6IkFBQUEsc1BBQWlLO0FBQ2pLO0FBQ0Esb09BQXdKO0FBQ3hKO0FBQ0EsME9BQTJKO0FBQzNKO0FBQ0Esb1JBQWdMO0FBQ2hMO0FBQ0Esd09BQTBKO0FBQzFKO0FBQ0EsNFBBQW9LO0FBQ3BLO0FBQ0Esc1FBQXlLO0FBQ3pLO0FBQ0EsNE9BQTRKO0FBQzVKO0FBQ0Esa09BQTBKO0FBQzFKO0FBQ0EsNFFBQTRLIiwic291cmNlcyI6WyIiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0KC8qIHdlYnBhY2tNb2RlOiBcImVhZ2VyXCIgKi8gXCIvVXNlcnMvamV0dGNoZW5nMTAxOC9jb2RlL2RyYW1hbGluZy12b2NhYi1sZWFybmluZy9mcm9udGVuZC9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL2J1aWx0aW4vZ2xvYmFsLWVycm9yLmpzXCIpO1xuO1xuaW1wb3J0KC8qIHdlYnBhY2tNb2RlOiBcImVhZ2VyXCIgKi8gXCIvVXNlcnMvamV0dGNoZW5nMTAxOC9jb2RlL2RyYW1hbGluZy12b2NhYi1sZWFybmluZy9mcm9udGVuZC9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL2NsaWVudC1wYWdlLmpzXCIpO1xuO1xuaW1wb3J0KC8qIHdlYnBhY2tNb2RlOiBcImVhZ2VyXCIgKi8gXCIvVXNlcnMvamV0dGNoZW5nMTAxOC9jb2RlL2RyYW1hbGluZy12b2NhYi1sZWFybmluZy9mcm9udGVuZC9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL2NsaWVudC1zZWdtZW50LmpzXCIpO1xuO1xuaW1wb3J0KC8qIHdlYnBhY2tNb2RlOiBcImVhZ2VyXCIgKi8gXCIvVXNlcnMvamV0dGNoZW5nMTAxOC9jb2RlL2RyYW1hbGluZy12b2NhYi1sZWFybmluZy9mcm9udGVuZC9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL2h0dHAtYWNjZXNzLWZhbGxiYWNrL2Vycm9yLWJvdW5kYXJ5LmpzXCIpO1xuO1xuaW1wb3J0KC8qIHdlYnBhY2tNb2RlOiBcImVhZ2VyXCIgKi8gXCIvVXNlcnMvamV0dGNoZW5nMTAxOC9jb2RlL2RyYW1hbGluZy12b2NhYi1sZWFybmluZy9mcm9udGVuZC9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL2xheW91dC1yb3V0ZXIuanNcIik7XG47XG5pbXBvcnQoLyogd2VicGFja01vZGU6IFwiZWFnZXJcIiAqLyBcIi9Vc2Vycy9qZXR0Y2hlbmcxMDE4L2NvZGUvZHJhbWFsaW5nLXZvY2FiLWxlYXJuaW5nL2Zyb250ZW5kL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvbWV0YWRhdGEvYXN5bmMtbWV0YWRhdGEuanNcIik7XG47XG5pbXBvcnQoLyogd2VicGFja01vZGU6IFwiZWFnZXJcIiAqLyBcIi9Vc2Vycy9qZXR0Y2hlbmcxMDE4L2NvZGUvZHJhbWFsaW5nLXZvY2FiLWxlYXJuaW5nL2Zyb250ZW5kL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvcmVuZGVyLWZyb20tdGVtcGxhdGUtY29udGV4dC5qc1wiKTtcbjtcbmltcG9ydCgvKiB3ZWJwYWNrTW9kZTogXCJlYWdlclwiICovIFwiL1VzZXJzL2pldHRjaGVuZzEwMTgvY29kZS9kcmFtYWxpbmctdm9jYWItbGVhcm5pbmcvZnJvbnRlbmQvbm9kZV9tb2R1bGVzL25leHQvZGlzdC9saWIvZnJhbWV3b3JrL2JvdW5kYXJ5LWNvbXBvbmVudHMuanNcIik7XG47XG5pbXBvcnQoLyogd2VicGFja01vZGU6IFwiZWFnZXJcIiAqLyBcIi9Vc2Vycy9qZXR0Y2hlbmcxMDE4L2NvZGUvZHJhbWFsaW5nLXZvY2FiLWxlYXJuaW5nL2Zyb250ZW5kL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvbGliL21ldGFkYXRhL2dlbmVyYXRlL2ljb24tbWFyay5qc1wiKTtcbjtcbmltcG9ydCgvKiB3ZWJwYWNrTW9kZTogXCJlYWdlclwiICovIFwiL1VzZXJzL2pldHRjaGVuZzEwMTgvY29kZS9kcmFtYWxpbmctdm9jYWItbGVhcm5pbmcvZnJvbnRlbmQvbm9kZV9tb2R1bGVzL25leHQvZGlzdC9uZXh0LWRldnRvb2xzL3VzZXJzcGFjZS9hcHAvc2VnbWVudC1leHBsb3Jlci1ub2RlLmpzXCIpO1xuIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%7B%22request%22%3A%22%2FUsers%2Fjettcheng1018%2Fcode%2Fdramaling-vocab-learning%2Ffrontend%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fbuiltin%2Fglobal-error.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fjettcheng1018%2Fcode%2Fdramaling-vocab-learning%2Ffrontend%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fclient-page.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fjettcheng1018%2Fcode%2Fdramaling-vocab-learning%2Ffrontend%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fclient-segment.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fjettcheng1018%2Fcode%2Fdramaling-vocab-learning%2Ffrontend%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fhttp-access-fallback%2Ferror-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fjettcheng1018%2Fcode%2Fdramaling-vocab-learning%2Ffrontend%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Flayout-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fjettcheng1018%2Fcode%2Fdramaling-vocab-learning%2Ffrontend%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fmetadata%2Fasync-metadata.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fjettcheng1018%2Fcode%2Fdramaling-vocab-learning%2Ffrontend%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Frender-from-template-context.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fjettcheng1018%2Fcode%2Fdramaling-vocab-learning%2Ffrontend%2Fnode_modules%2Fnext%2Fdist%2Flib%2Fframework%2Fboundary-components.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fjettcheng1018%2Fcode%2Fdramaling-vocab-learning%2Ffrontend%2Fnode_modules%2Fnext%2Fdist%2Flib%2Fmetadata%2Fgenerate%2Ficon-mark.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fjettcheng1018%2Fcode%2Fdramaling-vocab-learning%2Ffrontend%2Fnode_modules%2Fnext%2Fdist%2Fnext-devtools%2Fuserspace%2Fapp%2Fsegment-explorer-node.js%22%2C%22ids%22%3A%5B%5D%7D&server=true!\n"); + +/***/ }), + +/***/ "../app-render/action-async-storage.external": +/*!*******************************************************************************!*\ + !*** external "next/dist/server/app-render/action-async-storage.external.js" ***! + \*******************************************************************************/ +/***/ ((module) => { + +"use strict"; +module.exports = require("next/dist/server/app-render/action-async-storage.external.js"); + +/***/ }), + +/***/ "../app-render/after-task-async-storage.external": +/*!***********************************************************************************!*\ + !*** external "next/dist/server/app-render/after-task-async-storage.external.js" ***! + \***********************************************************************************/ +/***/ ((module) => { + +"use strict"; +module.exports = require("next/dist/server/app-render/after-task-async-storage.external.js"); + +/***/ }), + +/***/ "../app-render/dynamic-access-async-storage.external": +/*!***************************************************************************************!*\ + !*** external "next/dist/server/app-render/dynamic-access-async-storage.external.js" ***! + \***************************************************************************************/ +/***/ ((module) => { + +"use strict"; +module.exports = require("next/dist/server/app-render/dynamic-access-async-storage.external.js"); + +/***/ }), + +/***/ "./work-async-storage.external": +/*!*****************************************************************************!*\ + !*** external "next/dist/server/app-render/work-async-storage.external.js" ***! + \*****************************************************************************/ +/***/ ((module) => { + +"use strict"; +module.exports = require("next/dist/server/app-render/work-async-storage.external.js"); + +/***/ }), + +/***/ "./work-unit-async-storage.external": +/*!**********************************************************************************!*\ + !*** external "next/dist/server/app-render/work-unit-async-storage.external.js" ***! + \**********************************************************************************/ +/***/ ((module) => { + +"use strict"; +module.exports = require("next/dist/server/app-render/work-unit-async-storage.external.js"); + +/***/ }), + +/***/ "module": +/*!*************************!*\ + !*** external "module" ***! + \*************************/ +/***/ ((module) => { + +"use strict"; +module.exports = require("module"); + +/***/ }), + +/***/ "next/dist/compiled/next-server/app-page.runtime.dev.js": +/*!*************************************************************************!*\ + !*** external "next/dist/compiled/next-server/app-page.runtime.dev.js" ***! + \*************************************************************************/ +/***/ ((module) => { + +"use strict"; +module.exports = require("next/dist/compiled/next-server/app-page.runtime.dev.js"); + +/***/ }), + +/***/ "next/dist/shared/lib/no-fallback-error.external": +/*!******************************************************************!*\ + !*** external "next/dist/shared/lib/no-fallback-error.external" ***! + \******************************************************************/ +/***/ ((module) => { + +"use strict"; +module.exports = require("next/dist/shared/lib/no-fallback-error.external"); + +/***/ }), + +/***/ "next/dist/shared/lib/router/utils/app-paths": +/*!**************************************************************!*\ + !*** external "next/dist/shared/lib/router/utils/app-paths" ***! + \**************************************************************/ +/***/ ((module) => { + +"use strict"; +module.exports = require("next/dist/shared/lib/router/utils/app-paths"); + +/***/ }), + +/***/ "next/dist/shared/lib/router/utils/is-bot": +/*!***********************************************************!*\ + !*** external "next/dist/shared/lib/router/utils/is-bot" ***! + \***********************************************************/ +/***/ ((module) => { + +"use strict"; +module.exports = require("next/dist/shared/lib/router/utils/is-bot"); + +/***/ }), + +/***/ "path": +/*!***********************!*\ + !*** external "path" ***! + \***********************/ +/***/ ((module) => { + +"use strict"; +module.exports = require("path"); + +/***/ }), + +/***/ "util": +/*!***********************!*\ + !*** external "util" ***! + \***********************/ +/***/ ((module) => { + +"use strict"; +module.exports = require("util"); + +/***/ }) + +}; +; + +// load runtime +var __webpack_require__ = require("../../webpack-runtime.js"); +__webpack_require__.C(exports); +var __webpack_exec__ = (moduleId) => (__webpack_require__(__webpack_require__.s = moduleId)) +var __webpack_exports__ = __webpack_require__.X(0, ["vendor-chunks/next","vendor-chunks/@swc"], () => (__webpack_exec__("(rsc)/./node_modules/next/dist/build/webpack/loaders/next-app-loader/index.js?name=app%2Fgenerate%2Fpage&page=%2Fgenerate%2Fpage&appPaths=%2Fgenerate%2Fpage&pagePath=private-next-app-dir%2Fgenerate%2Fpage.tsx&appDir=%2FUsers%2Fjettcheng1018%2Fcode%2Fdramaling-vocab-learning%2Ffrontend%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fjettcheng1018%2Fcode%2Fdramaling-vocab-learning%2Ffrontend&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D&isGlobalNotFoundEnabled=!"))); +module.exports = __webpack_exports__; + +})(); \ No newline at end of file diff --git a/frontend/.next/server/app/generate/page_client-reference-manifest.js b/frontend/.next/server/app/generate/page_client-reference-manifest.js new file mode 100644 index 0000000..1bd7cc7 --- /dev/null +++ b/frontend/.next/server/app/generate/page_client-reference-manifest.js @@ -0,0 +1 @@ +globalThis.__RSC_MANIFEST=(globalThis.__RSC_MANIFEST||{});globalThis.__RSC_MANIFEST["/generate/page"]={"moduleLoading":{"prefix":"/_next/"},"ssrModuleMapping":{"(app-pages-browser)/./contexts/AuthContext.tsx":{"*":{"id":"(ssr)/./contexts/AuthContext.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/learn/page.tsx":{"*":{"id":"(ssr)/./app/learn/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/builtin/global-error.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/builtin/global-error.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/client-page.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/client-page.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/client-segment.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/client-segment.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/http-access-fallback/error-boundary.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/http-access-fallback/error-boundary.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/layout-router.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/layout-router.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/metadata/async-metadata.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/metadata/async-metadata.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/render-from-template-context.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/render-from-template-context.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/lib/framework/boundary-components.js":{"*":{"id":"(ssr)/./node_modules/next/dist/lib/framework/boundary-components.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/lib/metadata/generate/icon-mark.js":{"*":{"id":"(ssr)/./node_modules/next/dist/lib/metadata/generate/icon-mark.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js":{"*":{"id":"(ssr)/./node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/page.tsx":{"*":{"id":"(ssr)/./app/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/register/page.tsx":{"*":{"id":"(ssr)/./app/register/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/dashboard/page.tsx":{"*":{"id":"(ssr)/./app/dashboard/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/login/page.tsx":{"*":{"id":"(ssr)/./app/login/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/flashcards/page.tsx":{"*":{"id":"(ssr)/./app/flashcards/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/generate/page.tsx":{"*":{"id":"(ssr)/./app/generate/page.tsx","name":"*","chunks":[],"async":false}}},"edgeSSRModuleMapping":{},"clientModules":{"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/contexts/AuthContext.tsx":{"id":"(app-pages-browser)/./contexts/AuthContext.tsx","name":"*","chunks":["app/layout","static/chunks/app/layout.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/font/google/target.css?{\"path\":\"app/layout.tsx\",\"import\":\"Inter\",\"arguments\":[{\"subsets\":[\"latin\"]}],\"variableName\":\"inter\"}":{"id":"(app-pages-browser)/./node_modules/next/font/google/target.css?{\"path\":\"app/layout.tsx\",\"import\":\"Inter\",\"arguments\":[{\"subsets\":[\"latin\"]}],\"variableName\":\"inter\"}","name":"*","chunks":["app/layout","static/chunks/app/layout.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/globals.css":{"id":"(app-pages-browser)/./app/globals.css","name":"*","chunks":["app/layout","static/chunks/app/layout.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/learn/page.tsx":{"id":"(app-pages-browser)/./app/learn/page.tsx","name":"*","chunks":[],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/client/components/builtin/global-error.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/builtin/global-error.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/esm/client/components/builtin/global-error.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/builtin/global-error.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/client/components/client-page.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/client-page.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/esm/client/components/client-page.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/client-page.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/client/components/client-segment.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/client-segment.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/esm/client/components/client-segment.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/client-segment.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/client/components/http-access-fallback/error-boundary.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/http-access-fallback/error-boundary.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/http-access-fallback/error-boundary.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/client/components/layout-router.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/layout-router.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/esm/client/components/layout-router.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/layout-router.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/client/components/metadata/async-metadata.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/metadata/async-metadata.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/esm/client/components/metadata/async-metadata.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/metadata/async-metadata.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/client/components/render-from-template-context.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/render-from-template-context.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/render-from-template-context.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/lib/framework/boundary-components.js":{"id":"(app-pages-browser)/./node_modules/next/dist/lib/framework/boundary-components.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":"(app-pages-browser)/./node_modules/next/dist/lib/framework/boundary-components.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/lib/metadata/generate/icon-mark.js":{"id":"(app-pages-browser)/./node_modules/next/dist/lib/metadata/generate/icon-mark.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":"(app-pages-browser)/./node_modules/next/dist/lib/metadata/generate/icon-mark.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js":{"id":"(app-pages-browser)/./node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/esm/next-devtools/userspace/app/segment-explorer-node.js":{"id":"(app-pages-browser)/./node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/page.tsx":{"id":"(app-pages-browser)/./app/page.tsx","name":"*","chunks":["app/page","static/chunks/app/page.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/register/page.tsx":{"id":"(app-pages-browser)/./app/register/page.tsx","name":"*","chunks":[],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx":{"id":"(app-pages-browser)/./app/dashboard/page.tsx","name":"*","chunks":[],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/login/page.tsx":{"id":"(app-pages-browser)/./app/login/page.tsx","name":"*","chunks":[],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx":{"id":"(app-pages-browser)/./app/flashcards/page.tsx","name":"*","chunks":[],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx":{"id":"(app-pages-browser)/./app/generate/page.tsx","name":"*","chunks":["app/generate/page","static/chunks/app/generate/page.js"],"async":false}},"entryCSSFiles":{"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/":[],"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/layout":[{"inlined":false,"path":"static/css/app/layout.css"}],"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/page":[],"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page":[]},"rscModuleMapping":{"(app-pages-browser)/./contexts/AuthContext.tsx":{"*":{"id":"(rsc)/./contexts/AuthContext.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/globals.css":{"*":{"id":"(rsc)/./app/globals.css","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/learn/page.tsx":{"*":{"id":"(rsc)/./app/learn/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/builtin/global-error.js":{"*":{"id":"(rsc)/./node_modules/next/dist/client/components/builtin/global-error.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/client-page.js":{"*":{"id":"(rsc)/./node_modules/next/dist/client/components/client-page.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/client-segment.js":{"*":{"id":"(rsc)/./node_modules/next/dist/client/components/client-segment.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/http-access-fallback/error-boundary.js":{"*":{"id":"(rsc)/./node_modules/next/dist/client/components/http-access-fallback/error-boundary.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/layout-router.js":{"*":{"id":"(rsc)/./node_modules/next/dist/client/components/layout-router.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/metadata/async-metadata.js":{"*":{"id":"(rsc)/./node_modules/next/dist/client/components/metadata/async-metadata.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/render-from-template-context.js":{"*":{"id":"(rsc)/./node_modules/next/dist/client/components/render-from-template-context.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/lib/framework/boundary-components.js":{"*":{"id":"(rsc)/./node_modules/next/dist/lib/framework/boundary-components.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/lib/metadata/generate/icon-mark.js":{"*":{"id":"(rsc)/./node_modules/next/dist/lib/metadata/generate/icon-mark.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js":{"*":{"id":"(rsc)/./node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/page.tsx":{"*":{"id":"(rsc)/./app/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/register/page.tsx":{"*":{"id":"(rsc)/./app/register/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/dashboard/page.tsx":{"*":{"id":"(rsc)/./app/dashboard/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/login/page.tsx":{"*":{"id":"(rsc)/./app/login/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/flashcards/page.tsx":{"*":{"id":"(rsc)/./app/flashcards/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/generate/page.tsx":{"*":{"id":"(rsc)/./app/generate/page.tsx","name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{}} \ No newline at end of file diff --git a/frontend/.next/server/app/learn/page_client-reference-manifest.js b/frontend/.next/server/app/learn/page_client-reference-manifest.js index 6fcef14..33e7a35 100644 --- a/frontend/.next/server/app/learn/page_client-reference-manifest.js +++ b/frontend/.next/server/app/learn/page_client-reference-manifest.js @@ -1 +1 @@ -globalThis.__RSC_MANIFEST=(globalThis.__RSC_MANIFEST||{});globalThis.__RSC_MANIFEST["/learn/page"]={"moduleLoading":{"prefix":"/_next/"},"ssrModuleMapping":{"(app-pages-browser)/./contexts/AuthContext.tsx":{"*":{"id":"(ssr)/./contexts/AuthContext.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/learn/page.tsx":{"*":{"id":"(ssr)/./app/learn/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/builtin/global-error.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/builtin/global-error.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/client-page.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/client-page.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/client-segment.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/client-segment.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/http-access-fallback/error-boundary.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/http-access-fallback/error-boundary.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/layout-router.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/layout-router.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/metadata/async-metadata.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/metadata/async-metadata.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/render-from-template-context.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/render-from-template-context.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/lib/framework/boundary-components.js":{"*":{"id":"(ssr)/./node_modules/next/dist/lib/framework/boundary-components.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/lib/metadata/generate/icon-mark.js":{"*":{"id":"(ssr)/./node_modules/next/dist/lib/metadata/generate/icon-mark.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js":{"*":{"id":"(ssr)/./node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/page.tsx":{"*":{"id":"(ssr)/./app/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/register/page.tsx":{"*":{"id":"(ssr)/./app/register/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/dashboard/page.tsx":{"*":{"id":"(ssr)/./app/dashboard/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/login/page.tsx":{"*":{"id":"(ssr)/./app/login/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/flashcards/page.tsx":{"*":{"id":"(ssr)/./app/flashcards/page.tsx","name":"*","chunks":[],"async":false}}},"edgeSSRModuleMapping":{},"clientModules":{"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/contexts/AuthContext.tsx":{"id":"(app-pages-browser)/./contexts/AuthContext.tsx","name":"*","chunks":["app/layout","static/chunks/app/layout.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/font/google/target.css?{\"path\":\"app/layout.tsx\",\"import\":\"Inter\",\"arguments\":[{\"subsets\":[\"latin\"]}],\"variableName\":\"inter\"}":{"id":"(app-pages-browser)/./node_modules/next/font/google/target.css?{\"path\":\"app/layout.tsx\",\"import\":\"Inter\",\"arguments\":[{\"subsets\":[\"latin\"]}],\"variableName\":\"inter\"}","name":"*","chunks":["app/layout","static/chunks/app/layout.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/globals.css":{"id":"(app-pages-browser)/./app/globals.css","name":"*","chunks":["app/layout","static/chunks/app/layout.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/learn/page.tsx":{"id":"(app-pages-browser)/./app/learn/page.tsx","name":"*","chunks":["app/learn/page","static/chunks/app/learn/page.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/client/components/builtin/global-error.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/builtin/global-error.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/esm/client/components/builtin/global-error.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/builtin/global-error.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/client/components/client-page.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/client-page.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/esm/client/components/client-page.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/client-page.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/client/components/client-segment.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/client-segment.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/esm/client/components/client-segment.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/client-segment.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/client/components/http-access-fallback/error-boundary.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/http-access-fallback/error-boundary.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/http-access-fallback/error-boundary.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/client/components/layout-router.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/layout-router.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/esm/client/components/layout-router.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/layout-router.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/client/components/metadata/async-metadata.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/metadata/async-metadata.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/esm/client/components/metadata/async-metadata.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/metadata/async-metadata.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/client/components/render-from-template-context.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/render-from-template-context.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/render-from-template-context.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/lib/framework/boundary-components.js":{"id":"(app-pages-browser)/./node_modules/next/dist/lib/framework/boundary-components.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":"(app-pages-browser)/./node_modules/next/dist/lib/framework/boundary-components.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/lib/metadata/generate/icon-mark.js":{"id":"(app-pages-browser)/./node_modules/next/dist/lib/metadata/generate/icon-mark.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":"(app-pages-browser)/./node_modules/next/dist/lib/metadata/generate/icon-mark.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js":{"id":"(app-pages-browser)/./node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/esm/next-devtools/userspace/app/segment-explorer-node.js":{"id":"(app-pages-browser)/./node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/page.tsx":{"id":"(app-pages-browser)/./app/page.tsx","name":"*","chunks":["app/page","static/chunks/app/page.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/register/page.tsx":{"id":"(app-pages-browser)/./app/register/page.tsx","name":"*","chunks":[],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx":{"id":"(app-pages-browser)/./app/dashboard/page.tsx","name":"*","chunks":[],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/login/page.tsx":{"id":"(app-pages-browser)/./app/login/page.tsx","name":"*","chunks":[],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx":{"id":"(app-pages-browser)/./app/flashcards/page.tsx","name":"*","chunks":[],"async":false}},"entryCSSFiles":{"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/":[],"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/layout":[{"inlined":false,"path":"static/css/app/layout.css"}],"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/page":[],"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/learn/page":[]},"rscModuleMapping":{"(app-pages-browser)/./contexts/AuthContext.tsx":{"*":{"id":"(rsc)/./contexts/AuthContext.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/globals.css":{"*":{"id":"(rsc)/./app/globals.css","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/learn/page.tsx":{"*":{"id":"(rsc)/./app/learn/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/builtin/global-error.js":{"*":{"id":"(rsc)/./node_modules/next/dist/client/components/builtin/global-error.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/client-page.js":{"*":{"id":"(rsc)/./node_modules/next/dist/client/components/client-page.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/client-segment.js":{"*":{"id":"(rsc)/./node_modules/next/dist/client/components/client-segment.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/http-access-fallback/error-boundary.js":{"*":{"id":"(rsc)/./node_modules/next/dist/client/components/http-access-fallback/error-boundary.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/layout-router.js":{"*":{"id":"(rsc)/./node_modules/next/dist/client/components/layout-router.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/metadata/async-metadata.js":{"*":{"id":"(rsc)/./node_modules/next/dist/client/components/metadata/async-metadata.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/render-from-template-context.js":{"*":{"id":"(rsc)/./node_modules/next/dist/client/components/render-from-template-context.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/lib/framework/boundary-components.js":{"*":{"id":"(rsc)/./node_modules/next/dist/lib/framework/boundary-components.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/lib/metadata/generate/icon-mark.js":{"*":{"id":"(rsc)/./node_modules/next/dist/lib/metadata/generate/icon-mark.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js":{"*":{"id":"(rsc)/./node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/page.tsx":{"*":{"id":"(rsc)/./app/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/register/page.tsx":{"*":{"id":"(rsc)/./app/register/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/dashboard/page.tsx":{"*":{"id":"(rsc)/./app/dashboard/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/login/page.tsx":{"*":{"id":"(rsc)/./app/login/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/flashcards/page.tsx":{"*":{"id":"(rsc)/./app/flashcards/page.tsx","name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{}} \ No newline at end of file +globalThis.__RSC_MANIFEST=(globalThis.__RSC_MANIFEST||{});globalThis.__RSC_MANIFEST["/learn/page"]={"moduleLoading":{"prefix":"/_next/"},"ssrModuleMapping":{"(app-pages-browser)/./contexts/AuthContext.tsx":{"*":{"id":"(ssr)/./contexts/AuthContext.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/learn/page.tsx":{"*":{"id":"(ssr)/./app/learn/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/builtin/global-error.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/builtin/global-error.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/client-page.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/client-page.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/client-segment.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/client-segment.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/http-access-fallback/error-boundary.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/http-access-fallback/error-boundary.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/layout-router.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/layout-router.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/metadata/async-metadata.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/metadata/async-metadata.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/render-from-template-context.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/render-from-template-context.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/lib/framework/boundary-components.js":{"*":{"id":"(ssr)/./node_modules/next/dist/lib/framework/boundary-components.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/lib/metadata/generate/icon-mark.js":{"*":{"id":"(ssr)/./node_modules/next/dist/lib/metadata/generate/icon-mark.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js":{"*":{"id":"(ssr)/./node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/page.tsx":{"*":{"id":"(ssr)/./app/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/register/page.tsx":{"*":{"id":"(ssr)/./app/register/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/dashboard/page.tsx":{"*":{"id":"(ssr)/./app/dashboard/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/login/page.tsx":{"*":{"id":"(ssr)/./app/login/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/flashcards/page.tsx":{"*":{"id":"(ssr)/./app/flashcards/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/generate/page.tsx":{"*":{"id":"(ssr)/./app/generate/page.tsx","name":"*","chunks":[],"async":false}}},"edgeSSRModuleMapping":{},"clientModules":{"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/contexts/AuthContext.tsx":{"id":"(app-pages-browser)/./contexts/AuthContext.tsx","name":"*","chunks":["app/layout","static/chunks/app/layout.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/font/google/target.css?{\"path\":\"app/layout.tsx\",\"import\":\"Inter\",\"arguments\":[{\"subsets\":[\"latin\"]}],\"variableName\":\"inter\"}":{"id":"(app-pages-browser)/./node_modules/next/font/google/target.css?{\"path\":\"app/layout.tsx\",\"import\":\"Inter\",\"arguments\":[{\"subsets\":[\"latin\"]}],\"variableName\":\"inter\"}","name":"*","chunks":["app/layout","static/chunks/app/layout.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/globals.css":{"id":"(app-pages-browser)/./app/globals.css","name":"*","chunks":["app/layout","static/chunks/app/layout.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/learn/page.tsx":{"id":"(app-pages-browser)/./app/learn/page.tsx","name":"*","chunks":["app/learn/page","static/chunks/app/learn/page.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/client/components/builtin/global-error.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/builtin/global-error.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/esm/client/components/builtin/global-error.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/builtin/global-error.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/client/components/client-page.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/client-page.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/esm/client/components/client-page.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/client-page.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/client/components/client-segment.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/client-segment.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/esm/client/components/client-segment.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/client-segment.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/client/components/http-access-fallback/error-boundary.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/http-access-fallback/error-boundary.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/http-access-fallback/error-boundary.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/client/components/layout-router.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/layout-router.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/esm/client/components/layout-router.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/layout-router.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/client/components/metadata/async-metadata.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/metadata/async-metadata.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/esm/client/components/metadata/async-metadata.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/metadata/async-metadata.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/client/components/render-from-template-context.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/render-from-template-context.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/render-from-template-context.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/lib/framework/boundary-components.js":{"id":"(app-pages-browser)/./node_modules/next/dist/lib/framework/boundary-components.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":"(app-pages-browser)/./node_modules/next/dist/lib/framework/boundary-components.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/lib/metadata/generate/icon-mark.js":{"id":"(app-pages-browser)/./node_modules/next/dist/lib/metadata/generate/icon-mark.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":"(app-pages-browser)/./node_modules/next/dist/lib/metadata/generate/icon-mark.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js":{"id":"(app-pages-browser)/./node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/esm/next-devtools/userspace/app/segment-explorer-node.js":{"id":"(app-pages-browser)/./node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/page.tsx":{"id":"(app-pages-browser)/./app/page.tsx","name":"*","chunks":["app/page","static/chunks/app/page.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/register/page.tsx":{"id":"(app-pages-browser)/./app/register/page.tsx","name":"*","chunks":[],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx":{"id":"(app-pages-browser)/./app/dashboard/page.tsx","name":"*","chunks":[],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/login/page.tsx":{"id":"(app-pages-browser)/./app/login/page.tsx","name":"*","chunks":[],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx":{"id":"(app-pages-browser)/./app/flashcards/page.tsx","name":"*","chunks":[],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx":{"id":"(app-pages-browser)/./app/generate/page.tsx","name":"*","chunks":[],"async":false}},"entryCSSFiles":{"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/":[],"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/layout":[{"inlined":false,"path":"static/css/app/layout.css"}],"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/page":[],"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/learn/page":[]},"rscModuleMapping":{"(app-pages-browser)/./contexts/AuthContext.tsx":{"*":{"id":"(rsc)/./contexts/AuthContext.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/globals.css":{"*":{"id":"(rsc)/./app/globals.css","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/learn/page.tsx":{"*":{"id":"(rsc)/./app/learn/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/builtin/global-error.js":{"*":{"id":"(rsc)/./node_modules/next/dist/client/components/builtin/global-error.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/client-page.js":{"*":{"id":"(rsc)/./node_modules/next/dist/client/components/client-page.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/client-segment.js":{"*":{"id":"(rsc)/./node_modules/next/dist/client/components/client-segment.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/http-access-fallback/error-boundary.js":{"*":{"id":"(rsc)/./node_modules/next/dist/client/components/http-access-fallback/error-boundary.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/layout-router.js":{"*":{"id":"(rsc)/./node_modules/next/dist/client/components/layout-router.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/metadata/async-metadata.js":{"*":{"id":"(rsc)/./node_modules/next/dist/client/components/metadata/async-metadata.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/render-from-template-context.js":{"*":{"id":"(rsc)/./node_modules/next/dist/client/components/render-from-template-context.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/lib/framework/boundary-components.js":{"*":{"id":"(rsc)/./node_modules/next/dist/lib/framework/boundary-components.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/lib/metadata/generate/icon-mark.js":{"*":{"id":"(rsc)/./node_modules/next/dist/lib/metadata/generate/icon-mark.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js":{"*":{"id":"(rsc)/./node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/page.tsx":{"*":{"id":"(rsc)/./app/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/register/page.tsx":{"*":{"id":"(rsc)/./app/register/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/dashboard/page.tsx":{"*":{"id":"(rsc)/./app/dashboard/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/login/page.tsx":{"*":{"id":"(rsc)/./app/login/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/flashcards/page.tsx":{"*":{"id":"(rsc)/./app/flashcards/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/generate/page.tsx":{"*":{"id":"(rsc)/./app/generate/page.tsx","name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{}} \ No newline at end of file diff --git a/frontend/.next/server/app/login/page_client-reference-manifest.js b/frontend/.next/server/app/login/page_client-reference-manifest.js index 87f51fa..ecc33fa 100644 --- a/frontend/.next/server/app/login/page_client-reference-manifest.js +++ b/frontend/.next/server/app/login/page_client-reference-manifest.js @@ -1 +1 @@ -globalThis.__RSC_MANIFEST=(globalThis.__RSC_MANIFEST||{});globalThis.__RSC_MANIFEST["/login/page"]={"moduleLoading":{"prefix":"/_next/"},"ssrModuleMapping":{"(app-pages-browser)/./contexts/AuthContext.tsx":{"*":{"id":"(ssr)/./contexts/AuthContext.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/learn/page.tsx":{"*":{"id":"(ssr)/./app/learn/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/builtin/global-error.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/builtin/global-error.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/client-page.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/client-page.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/client-segment.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/client-segment.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/http-access-fallback/error-boundary.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/http-access-fallback/error-boundary.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/layout-router.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/layout-router.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/metadata/async-metadata.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/metadata/async-metadata.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/render-from-template-context.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/render-from-template-context.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/lib/framework/boundary-components.js":{"*":{"id":"(ssr)/./node_modules/next/dist/lib/framework/boundary-components.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/lib/metadata/generate/icon-mark.js":{"*":{"id":"(ssr)/./node_modules/next/dist/lib/metadata/generate/icon-mark.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js":{"*":{"id":"(ssr)/./node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/page.tsx":{"*":{"id":"(ssr)/./app/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/register/page.tsx":{"*":{"id":"(ssr)/./app/register/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/dashboard/page.tsx":{"*":{"id":"(ssr)/./app/dashboard/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/login/page.tsx":{"*":{"id":"(ssr)/./app/login/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/flashcards/page.tsx":{"*":{"id":"(ssr)/./app/flashcards/page.tsx","name":"*","chunks":[],"async":false}}},"edgeSSRModuleMapping":{},"clientModules":{"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/contexts/AuthContext.tsx":{"id":"(app-pages-browser)/./contexts/AuthContext.tsx","name":"*","chunks":["app/layout","static/chunks/app/layout.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/font/google/target.css?{\"path\":\"app/layout.tsx\",\"import\":\"Inter\",\"arguments\":[{\"subsets\":[\"latin\"]}],\"variableName\":\"inter\"}":{"id":"(app-pages-browser)/./node_modules/next/font/google/target.css?{\"path\":\"app/layout.tsx\",\"import\":\"Inter\",\"arguments\":[{\"subsets\":[\"latin\"]}],\"variableName\":\"inter\"}","name":"*","chunks":["app/layout","static/chunks/app/layout.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/globals.css":{"id":"(app-pages-browser)/./app/globals.css","name":"*","chunks":["app/layout","static/chunks/app/layout.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/learn/page.tsx":{"id":"(app-pages-browser)/./app/learn/page.tsx","name":"*","chunks":[],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/client/components/builtin/global-error.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/builtin/global-error.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/esm/client/components/builtin/global-error.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/builtin/global-error.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/client/components/client-page.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/client-page.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/esm/client/components/client-page.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/client-page.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/client/components/client-segment.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/client-segment.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/esm/client/components/client-segment.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/client-segment.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/client/components/http-access-fallback/error-boundary.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/http-access-fallback/error-boundary.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/http-access-fallback/error-boundary.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/client/components/layout-router.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/layout-router.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/esm/client/components/layout-router.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/layout-router.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/client/components/metadata/async-metadata.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/metadata/async-metadata.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/esm/client/components/metadata/async-metadata.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/metadata/async-metadata.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/client/components/render-from-template-context.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/render-from-template-context.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/render-from-template-context.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/lib/framework/boundary-components.js":{"id":"(app-pages-browser)/./node_modules/next/dist/lib/framework/boundary-components.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":"(app-pages-browser)/./node_modules/next/dist/lib/framework/boundary-components.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/lib/metadata/generate/icon-mark.js":{"id":"(app-pages-browser)/./node_modules/next/dist/lib/metadata/generate/icon-mark.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":"(app-pages-browser)/./node_modules/next/dist/lib/metadata/generate/icon-mark.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js":{"id":"(app-pages-browser)/./node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/esm/next-devtools/userspace/app/segment-explorer-node.js":{"id":"(app-pages-browser)/./node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/page.tsx":{"id":"(app-pages-browser)/./app/page.tsx","name":"*","chunks":["app/page","static/chunks/app/page.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/register/page.tsx":{"id":"(app-pages-browser)/./app/register/page.tsx","name":"*","chunks":[],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx":{"id":"(app-pages-browser)/./app/dashboard/page.tsx","name":"*","chunks":[],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/login/page.tsx":{"id":"(app-pages-browser)/./app/login/page.tsx","name":"*","chunks":["app/login/page","static/chunks/app/login/page.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx":{"id":"(app-pages-browser)/./app/flashcards/page.tsx","name":"*","chunks":[],"async":false}},"entryCSSFiles":{"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/":[],"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/layout":[{"inlined":false,"path":"static/css/app/layout.css"}],"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/page":[],"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/login/page":[]},"rscModuleMapping":{"(app-pages-browser)/./contexts/AuthContext.tsx":{"*":{"id":"(rsc)/./contexts/AuthContext.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/globals.css":{"*":{"id":"(rsc)/./app/globals.css","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/learn/page.tsx":{"*":{"id":"(rsc)/./app/learn/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/builtin/global-error.js":{"*":{"id":"(rsc)/./node_modules/next/dist/client/components/builtin/global-error.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/client-page.js":{"*":{"id":"(rsc)/./node_modules/next/dist/client/components/client-page.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/client-segment.js":{"*":{"id":"(rsc)/./node_modules/next/dist/client/components/client-segment.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/http-access-fallback/error-boundary.js":{"*":{"id":"(rsc)/./node_modules/next/dist/client/components/http-access-fallback/error-boundary.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/layout-router.js":{"*":{"id":"(rsc)/./node_modules/next/dist/client/components/layout-router.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/metadata/async-metadata.js":{"*":{"id":"(rsc)/./node_modules/next/dist/client/components/metadata/async-metadata.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/render-from-template-context.js":{"*":{"id":"(rsc)/./node_modules/next/dist/client/components/render-from-template-context.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/lib/framework/boundary-components.js":{"*":{"id":"(rsc)/./node_modules/next/dist/lib/framework/boundary-components.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/lib/metadata/generate/icon-mark.js":{"*":{"id":"(rsc)/./node_modules/next/dist/lib/metadata/generate/icon-mark.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js":{"*":{"id":"(rsc)/./node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/page.tsx":{"*":{"id":"(rsc)/./app/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/register/page.tsx":{"*":{"id":"(rsc)/./app/register/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/dashboard/page.tsx":{"*":{"id":"(rsc)/./app/dashboard/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/login/page.tsx":{"*":{"id":"(rsc)/./app/login/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/flashcards/page.tsx":{"*":{"id":"(rsc)/./app/flashcards/page.tsx","name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{}} \ No newline at end of file +globalThis.__RSC_MANIFEST=(globalThis.__RSC_MANIFEST||{});globalThis.__RSC_MANIFEST["/login/page"]={"moduleLoading":{"prefix":"/_next/"},"ssrModuleMapping":{"(app-pages-browser)/./contexts/AuthContext.tsx":{"*":{"id":"(ssr)/./contexts/AuthContext.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/learn/page.tsx":{"*":{"id":"(ssr)/./app/learn/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/builtin/global-error.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/builtin/global-error.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/client-page.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/client-page.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/client-segment.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/client-segment.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/http-access-fallback/error-boundary.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/http-access-fallback/error-boundary.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/layout-router.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/layout-router.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/metadata/async-metadata.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/metadata/async-metadata.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/render-from-template-context.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/render-from-template-context.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/lib/framework/boundary-components.js":{"*":{"id":"(ssr)/./node_modules/next/dist/lib/framework/boundary-components.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/lib/metadata/generate/icon-mark.js":{"*":{"id":"(ssr)/./node_modules/next/dist/lib/metadata/generate/icon-mark.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js":{"*":{"id":"(ssr)/./node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/page.tsx":{"*":{"id":"(ssr)/./app/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/register/page.tsx":{"*":{"id":"(ssr)/./app/register/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/dashboard/page.tsx":{"*":{"id":"(ssr)/./app/dashboard/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/login/page.tsx":{"*":{"id":"(ssr)/./app/login/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/flashcards/page.tsx":{"*":{"id":"(ssr)/./app/flashcards/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/generate/page.tsx":{"*":{"id":"(ssr)/./app/generate/page.tsx","name":"*","chunks":[],"async":false}}},"edgeSSRModuleMapping":{},"clientModules":{"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/contexts/AuthContext.tsx":{"id":"(app-pages-browser)/./contexts/AuthContext.tsx","name":"*","chunks":["app/layout","static/chunks/app/layout.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/font/google/target.css?{\"path\":\"app/layout.tsx\",\"import\":\"Inter\",\"arguments\":[{\"subsets\":[\"latin\"]}],\"variableName\":\"inter\"}":{"id":"(app-pages-browser)/./node_modules/next/font/google/target.css?{\"path\":\"app/layout.tsx\",\"import\":\"Inter\",\"arguments\":[{\"subsets\":[\"latin\"]}],\"variableName\":\"inter\"}","name":"*","chunks":["app/layout","static/chunks/app/layout.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/globals.css":{"id":"(app-pages-browser)/./app/globals.css","name":"*","chunks":["app/layout","static/chunks/app/layout.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/learn/page.tsx":{"id":"(app-pages-browser)/./app/learn/page.tsx","name":"*","chunks":[],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/client/components/builtin/global-error.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/builtin/global-error.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/esm/client/components/builtin/global-error.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/builtin/global-error.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/client/components/client-page.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/client-page.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/esm/client/components/client-page.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/client-page.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/client/components/client-segment.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/client-segment.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/esm/client/components/client-segment.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/client-segment.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/client/components/http-access-fallback/error-boundary.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/http-access-fallback/error-boundary.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/http-access-fallback/error-boundary.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/client/components/layout-router.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/layout-router.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/esm/client/components/layout-router.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/layout-router.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/client/components/metadata/async-metadata.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/metadata/async-metadata.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/esm/client/components/metadata/async-metadata.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/metadata/async-metadata.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/client/components/render-from-template-context.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/render-from-template-context.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/render-from-template-context.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/lib/framework/boundary-components.js":{"id":"(app-pages-browser)/./node_modules/next/dist/lib/framework/boundary-components.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":"(app-pages-browser)/./node_modules/next/dist/lib/framework/boundary-components.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/lib/metadata/generate/icon-mark.js":{"id":"(app-pages-browser)/./node_modules/next/dist/lib/metadata/generate/icon-mark.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":"(app-pages-browser)/./node_modules/next/dist/lib/metadata/generate/icon-mark.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js":{"id":"(app-pages-browser)/./node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/esm/next-devtools/userspace/app/segment-explorer-node.js":{"id":"(app-pages-browser)/./node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/page.tsx":{"id":"(app-pages-browser)/./app/page.tsx","name":"*","chunks":["app/page","static/chunks/app/page.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/register/page.tsx":{"id":"(app-pages-browser)/./app/register/page.tsx","name":"*","chunks":[],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx":{"id":"(app-pages-browser)/./app/dashboard/page.tsx","name":"*","chunks":[],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/login/page.tsx":{"id":"(app-pages-browser)/./app/login/page.tsx","name":"*","chunks":["app/login/page","static/chunks/app/login/page.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx":{"id":"(app-pages-browser)/./app/flashcards/page.tsx","name":"*","chunks":[],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx":{"id":"(app-pages-browser)/./app/generate/page.tsx","name":"*","chunks":[],"async":false}},"entryCSSFiles":{"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/":[],"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/layout":[{"inlined":false,"path":"static/css/app/layout.css"}],"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/page":[],"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/login/page":[]},"rscModuleMapping":{"(app-pages-browser)/./contexts/AuthContext.tsx":{"*":{"id":"(rsc)/./contexts/AuthContext.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/globals.css":{"*":{"id":"(rsc)/./app/globals.css","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/learn/page.tsx":{"*":{"id":"(rsc)/./app/learn/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/builtin/global-error.js":{"*":{"id":"(rsc)/./node_modules/next/dist/client/components/builtin/global-error.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/client-page.js":{"*":{"id":"(rsc)/./node_modules/next/dist/client/components/client-page.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/client-segment.js":{"*":{"id":"(rsc)/./node_modules/next/dist/client/components/client-segment.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/http-access-fallback/error-boundary.js":{"*":{"id":"(rsc)/./node_modules/next/dist/client/components/http-access-fallback/error-boundary.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/layout-router.js":{"*":{"id":"(rsc)/./node_modules/next/dist/client/components/layout-router.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/metadata/async-metadata.js":{"*":{"id":"(rsc)/./node_modules/next/dist/client/components/metadata/async-metadata.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/render-from-template-context.js":{"*":{"id":"(rsc)/./node_modules/next/dist/client/components/render-from-template-context.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/lib/framework/boundary-components.js":{"*":{"id":"(rsc)/./node_modules/next/dist/lib/framework/boundary-components.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/lib/metadata/generate/icon-mark.js":{"*":{"id":"(rsc)/./node_modules/next/dist/lib/metadata/generate/icon-mark.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js":{"*":{"id":"(rsc)/./node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/page.tsx":{"*":{"id":"(rsc)/./app/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/register/page.tsx":{"*":{"id":"(rsc)/./app/register/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/dashboard/page.tsx":{"*":{"id":"(rsc)/./app/dashboard/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/login/page.tsx":{"*":{"id":"(rsc)/./app/login/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/flashcards/page.tsx":{"*":{"id":"(rsc)/./app/flashcards/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/generate/page.tsx":{"*":{"id":"(rsc)/./app/generate/page.tsx","name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{}} \ No newline at end of file diff --git a/frontend/.next/server/app/page_client-reference-manifest.js b/frontend/.next/server/app/page_client-reference-manifest.js index 1273891..363b8fe 100644 --- a/frontend/.next/server/app/page_client-reference-manifest.js +++ b/frontend/.next/server/app/page_client-reference-manifest.js @@ -1 +1 @@ -globalThis.__RSC_MANIFEST=(globalThis.__RSC_MANIFEST||{});globalThis.__RSC_MANIFEST["/page"]={"moduleLoading":{"prefix":"/_next/"},"ssrModuleMapping":{"(app-pages-browser)/./contexts/AuthContext.tsx":{"*":{"id":"(ssr)/./contexts/AuthContext.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/learn/page.tsx":{"*":{"id":"(ssr)/./app/learn/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/builtin/global-error.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/builtin/global-error.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/client-page.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/client-page.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/client-segment.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/client-segment.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/http-access-fallback/error-boundary.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/http-access-fallback/error-boundary.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/layout-router.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/layout-router.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/metadata/async-metadata.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/metadata/async-metadata.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/render-from-template-context.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/render-from-template-context.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/lib/framework/boundary-components.js":{"*":{"id":"(ssr)/./node_modules/next/dist/lib/framework/boundary-components.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/lib/metadata/generate/icon-mark.js":{"*":{"id":"(ssr)/./node_modules/next/dist/lib/metadata/generate/icon-mark.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js":{"*":{"id":"(ssr)/./node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/page.tsx":{"*":{"id":"(ssr)/./app/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/register/page.tsx":{"*":{"id":"(ssr)/./app/register/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/dashboard/page.tsx":{"*":{"id":"(ssr)/./app/dashboard/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/login/page.tsx":{"*":{"id":"(ssr)/./app/login/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/flashcards/page.tsx":{"*":{"id":"(ssr)/./app/flashcards/page.tsx","name":"*","chunks":[],"async":false}}},"edgeSSRModuleMapping":{},"clientModules":{"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/contexts/AuthContext.tsx":{"id":"(app-pages-browser)/./contexts/AuthContext.tsx","name":"*","chunks":["app/layout","static/chunks/app/layout.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/font/google/target.css?{\"path\":\"app/layout.tsx\",\"import\":\"Inter\",\"arguments\":[{\"subsets\":[\"latin\"]}],\"variableName\":\"inter\"}":{"id":"(app-pages-browser)/./node_modules/next/font/google/target.css?{\"path\":\"app/layout.tsx\",\"import\":\"Inter\",\"arguments\":[{\"subsets\":[\"latin\"]}],\"variableName\":\"inter\"}","name":"*","chunks":["app/layout","static/chunks/app/layout.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/globals.css":{"id":"(app-pages-browser)/./app/globals.css","name":"*","chunks":["app/layout","static/chunks/app/layout.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/learn/page.tsx":{"id":"(app-pages-browser)/./app/learn/page.tsx","name":"*","chunks":[],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/client/components/builtin/global-error.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/builtin/global-error.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/esm/client/components/builtin/global-error.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/builtin/global-error.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/client/components/client-page.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/client-page.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/esm/client/components/client-page.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/client-page.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/client/components/client-segment.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/client-segment.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/esm/client/components/client-segment.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/client-segment.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/client/components/http-access-fallback/error-boundary.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/http-access-fallback/error-boundary.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/http-access-fallback/error-boundary.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/client/components/layout-router.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/layout-router.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/esm/client/components/layout-router.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/layout-router.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/client/components/metadata/async-metadata.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/metadata/async-metadata.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/esm/client/components/metadata/async-metadata.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/metadata/async-metadata.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/client/components/render-from-template-context.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/render-from-template-context.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/render-from-template-context.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/lib/framework/boundary-components.js":{"id":"(app-pages-browser)/./node_modules/next/dist/lib/framework/boundary-components.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":"(app-pages-browser)/./node_modules/next/dist/lib/framework/boundary-components.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/lib/metadata/generate/icon-mark.js":{"id":"(app-pages-browser)/./node_modules/next/dist/lib/metadata/generate/icon-mark.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":"(app-pages-browser)/./node_modules/next/dist/lib/metadata/generate/icon-mark.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js":{"id":"(app-pages-browser)/./node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/esm/next-devtools/userspace/app/segment-explorer-node.js":{"id":"(app-pages-browser)/./node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/page.tsx":{"id":"(app-pages-browser)/./app/page.tsx","name":"*","chunks":["app/page","static/chunks/app/page.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/register/page.tsx":{"id":"(app-pages-browser)/./app/register/page.tsx","name":"*","chunks":[],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx":{"id":"(app-pages-browser)/./app/dashboard/page.tsx","name":"*","chunks":[],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/login/page.tsx":{"id":"(app-pages-browser)/./app/login/page.tsx","name":"*","chunks":[],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx":{"id":"(app-pages-browser)/./app/flashcards/page.tsx","name":"*","chunks":[],"async":false}},"entryCSSFiles":{"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/":[],"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/layout":[{"inlined":false,"path":"static/css/app/layout.css"}],"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/page":[]},"rscModuleMapping":{"(app-pages-browser)/./contexts/AuthContext.tsx":{"*":{"id":"(rsc)/./contexts/AuthContext.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/globals.css":{"*":{"id":"(rsc)/./app/globals.css","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/learn/page.tsx":{"*":{"id":"(rsc)/./app/learn/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/builtin/global-error.js":{"*":{"id":"(rsc)/./node_modules/next/dist/client/components/builtin/global-error.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/client-page.js":{"*":{"id":"(rsc)/./node_modules/next/dist/client/components/client-page.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/client-segment.js":{"*":{"id":"(rsc)/./node_modules/next/dist/client/components/client-segment.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/http-access-fallback/error-boundary.js":{"*":{"id":"(rsc)/./node_modules/next/dist/client/components/http-access-fallback/error-boundary.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/layout-router.js":{"*":{"id":"(rsc)/./node_modules/next/dist/client/components/layout-router.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/metadata/async-metadata.js":{"*":{"id":"(rsc)/./node_modules/next/dist/client/components/metadata/async-metadata.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/render-from-template-context.js":{"*":{"id":"(rsc)/./node_modules/next/dist/client/components/render-from-template-context.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/lib/framework/boundary-components.js":{"*":{"id":"(rsc)/./node_modules/next/dist/lib/framework/boundary-components.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/lib/metadata/generate/icon-mark.js":{"*":{"id":"(rsc)/./node_modules/next/dist/lib/metadata/generate/icon-mark.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js":{"*":{"id":"(rsc)/./node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/page.tsx":{"*":{"id":"(rsc)/./app/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/register/page.tsx":{"*":{"id":"(rsc)/./app/register/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/dashboard/page.tsx":{"*":{"id":"(rsc)/./app/dashboard/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/login/page.tsx":{"*":{"id":"(rsc)/./app/login/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/flashcards/page.tsx":{"*":{"id":"(rsc)/./app/flashcards/page.tsx","name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{}} \ No newline at end of file +globalThis.__RSC_MANIFEST=(globalThis.__RSC_MANIFEST||{});globalThis.__RSC_MANIFEST["/page"]={"moduleLoading":{"prefix":"/_next/"},"ssrModuleMapping":{"(app-pages-browser)/./contexts/AuthContext.tsx":{"*":{"id":"(ssr)/./contexts/AuthContext.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/learn/page.tsx":{"*":{"id":"(ssr)/./app/learn/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/builtin/global-error.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/builtin/global-error.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/client-page.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/client-page.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/client-segment.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/client-segment.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/http-access-fallback/error-boundary.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/http-access-fallback/error-boundary.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/layout-router.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/layout-router.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/metadata/async-metadata.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/metadata/async-metadata.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/render-from-template-context.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/render-from-template-context.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/lib/framework/boundary-components.js":{"*":{"id":"(ssr)/./node_modules/next/dist/lib/framework/boundary-components.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/lib/metadata/generate/icon-mark.js":{"*":{"id":"(ssr)/./node_modules/next/dist/lib/metadata/generate/icon-mark.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js":{"*":{"id":"(ssr)/./node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/page.tsx":{"*":{"id":"(ssr)/./app/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/register/page.tsx":{"*":{"id":"(ssr)/./app/register/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/dashboard/page.tsx":{"*":{"id":"(ssr)/./app/dashboard/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/login/page.tsx":{"*":{"id":"(ssr)/./app/login/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/flashcards/page.tsx":{"*":{"id":"(ssr)/./app/flashcards/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/generate/page.tsx":{"*":{"id":"(ssr)/./app/generate/page.tsx","name":"*","chunks":[],"async":false}}},"edgeSSRModuleMapping":{},"clientModules":{"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/contexts/AuthContext.tsx":{"id":"(app-pages-browser)/./contexts/AuthContext.tsx","name":"*","chunks":["app/layout","static/chunks/app/layout.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/font/google/target.css?{\"path\":\"app/layout.tsx\",\"import\":\"Inter\",\"arguments\":[{\"subsets\":[\"latin\"]}],\"variableName\":\"inter\"}":{"id":"(app-pages-browser)/./node_modules/next/font/google/target.css?{\"path\":\"app/layout.tsx\",\"import\":\"Inter\",\"arguments\":[{\"subsets\":[\"latin\"]}],\"variableName\":\"inter\"}","name":"*","chunks":["app/layout","static/chunks/app/layout.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/globals.css":{"id":"(app-pages-browser)/./app/globals.css","name":"*","chunks":["app/layout","static/chunks/app/layout.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/learn/page.tsx":{"id":"(app-pages-browser)/./app/learn/page.tsx","name":"*","chunks":[],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/client/components/builtin/global-error.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/builtin/global-error.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/esm/client/components/builtin/global-error.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/builtin/global-error.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/client/components/client-page.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/client-page.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/esm/client/components/client-page.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/client-page.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/client/components/client-segment.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/client-segment.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/esm/client/components/client-segment.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/client-segment.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/client/components/http-access-fallback/error-boundary.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/http-access-fallback/error-boundary.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/http-access-fallback/error-boundary.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/client/components/layout-router.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/layout-router.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/esm/client/components/layout-router.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/layout-router.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/client/components/metadata/async-metadata.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/metadata/async-metadata.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/esm/client/components/metadata/async-metadata.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/metadata/async-metadata.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/client/components/render-from-template-context.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/render-from-template-context.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/render-from-template-context.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/lib/framework/boundary-components.js":{"id":"(app-pages-browser)/./node_modules/next/dist/lib/framework/boundary-components.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":"(app-pages-browser)/./node_modules/next/dist/lib/framework/boundary-components.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/lib/metadata/generate/icon-mark.js":{"id":"(app-pages-browser)/./node_modules/next/dist/lib/metadata/generate/icon-mark.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":"(app-pages-browser)/./node_modules/next/dist/lib/metadata/generate/icon-mark.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js":{"id":"(app-pages-browser)/./node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/esm/next-devtools/userspace/app/segment-explorer-node.js":{"id":"(app-pages-browser)/./node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/page.tsx":{"id":"(app-pages-browser)/./app/page.tsx","name":"*","chunks":["app/page","static/chunks/app/page.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/register/page.tsx":{"id":"(app-pages-browser)/./app/register/page.tsx","name":"*","chunks":[],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx":{"id":"(app-pages-browser)/./app/dashboard/page.tsx","name":"*","chunks":[],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/login/page.tsx":{"id":"(app-pages-browser)/./app/login/page.tsx","name":"*","chunks":[],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx":{"id":"(app-pages-browser)/./app/flashcards/page.tsx","name":"*","chunks":[],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx":{"id":"(app-pages-browser)/./app/generate/page.tsx","name":"*","chunks":[],"async":false}},"entryCSSFiles":{"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/":[],"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/layout":[{"inlined":false,"path":"static/css/app/layout.css"}],"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/page":[]},"rscModuleMapping":{"(app-pages-browser)/./contexts/AuthContext.tsx":{"*":{"id":"(rsc)/./contexts/AuthContext.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/globals.css":{"*":{"id":"(rsc)/./app/globals.css","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/learn/page.tsx":{"*":{"id":"(rsc)/./app/learn/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/builtin/global-error.js":{"*":{"id":"(rsc)/./node_modules/next/dist/client/components/builtin/global-error.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/client-page.js":{"*":{"id":"(rsc)/./node_modules/next/dist/client/components/client-page.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/client-segment.js":{"*":{"id":"(rsc)/./node_modules/next/dist/client/components/client-segment.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/http-access-fallback/error-boundary.js":{"*":{"id":"(rsc)/./node_modules/next/dist/client/components/http-access-fallback/error-boundary.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/layout-router.js":{"*":{"id":"(rsc)/./node_modules/next/dist/client/components/layout-router.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/metadata/async-metadata.js":{"*":{"id":"(rsc)/./node_modules/next/dist/client/components/metadata/async-metadata.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/render-from-template-context.js":{"*":{"id":"(rsc)/./node_modules/next/dist/client/components/render-from-template-context.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/lib/framework/boundary-components.js":{"*":{"id":"(rsc)/./node_modules/next/dist/lib/framework/boundary-components.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/lib/metadata/generate/icon-mark.js":{"*":{"id":"(rsc)/./node_modules/next/dist/lib/metadata/generate/icon-mark.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js":{"*":{"id":"(rsc)/./node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/page.tsx":{"*":{"id":"(rsc)/./app/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/register/page.tsx":{"*":{"id":"(rsc)/./app/register/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/dashboard/page.tsx":{"*":{"id":"(rsc)/./app/dashboard/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/login/page.tsx":{"*":{"id":"(rsc)/./app/login/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/flashcards/page.tsx":{"*":{"id":"(rsc)/./app/flashcards/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/generate/page.tsx":{"*":{"id":"(rsc)/./app/generate/page.tsx","name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{}} \ No newline at end of file diff --git a/frontend/.next/server/app/register/page_client-reference-manifest.js b/frontend/.next/server/app/register/page_client-reference-manifest.js index f92b478..0e9e105 100644 --- a/frontend/.next/server/app/register/page_client-reference-manifest.js +++ b/frontend/.next/server/app/register/page_client-reference-manifest.js @@ -1 +1 @@ -globalThis.__RSC_MANIFEST=(globalThis.__RSC_MANIFEST||{});globalThis.__RSC_MANIFEST["/register/page"]={"moduleLoading":{"prefix":"/_next/"},"ssrModuleMapping":{"(app-pages-browser)/./contexts/AuthContext.tsx":{"*":{"id":"(ssr)/./contexts/AuthContext.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/learn/page.tsx":{"*":{"id":"(ssr)/./app/learn/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/builtin/global-error.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/builtin/global-error.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/client-page.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/client-page.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/client-segment.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/client-segment.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/http-access-fallback/error-boundary.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/http-access-fallback/error-boundary.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/layout-router.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/layout-router.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/metadata/async-metadata.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/metadata/async-metadata.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/render-from-template-context.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/render-from-template-context.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/lib/framework/boundary-components.js":{"*":{"id":"(ssr)/./node_modules/next/dist/lib/framework/boundary-components.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/lib/metadata/generate/icon-mark.js":{"*":{"id":"(ssr)/./node_modules/next/dist/lib/metadata/generate/icon-mark.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js":{"*":{"id":"(ssr)/./node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/page.tsx":{"*":{"id":"(ssr)/./app/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/register/page.tsx":{"*":{"id":"(ssr)/./app/register/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/dashboard/page.tsx":{"*":{"id":"(ssr)/./app/dashboard/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/login/page.tsx":{"*":{"id":"(ssr)/./app/login/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/flashcards/page.tsx":{"*":{"id":"(ssr)/./app/flashcards/page.tsx","name":"*","chunks":[],"async":false}}},"edgeSSRModuleMapping":{},"clientModules":{"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/contexts/AuthContext.tsx":{"id":"(app-pages-browser)/./contexts/AuthContext.tsx","name":"*","chunks":["app/layout","static/chunks/app/layout.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/font/google/target.css?{\"path\":\"app/layout.tsx\",\"import\":\"Inter\",\"arguments\":[{\"subsets\":[\"latin\"]}],\"variableName\":\"inter\"}":{"id":"(app-pages-browser)/./node_modules/next/font/google/target.css?{\"path\":\"app/layout.tsx\",\"import\":\"Inter\",\"arguments\":[{\"subsets\":[\"latin\"]}],\"variableName\":\"inter\"}","name":"*","chunks":["app/layout","static/chunks/app/layout.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/globals.css":{"id":"(app-pages-browser)/./app/globals.css","name":"*","chunks":["app/layout","static/chunks/app/layout.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/learn/page.tsx":{"id":"(app-pages-browser)/./app/learn/page.tsx","name":"*","chunks":[],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/client/components/builtin/global-error.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/builtin/global-error.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/esm/client/components/builtin/global-error.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/builtin/global-error.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/client/components/client-page.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/client-page.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/esm/client/components/client-page.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/client-page.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/client/components/client-segment.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/client-segment.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/esm/client/components/client-segment.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/client-segment.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/client/components/http-access-fallback/error-boundary.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/http-access-fallback/error-boundary.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/http-access-fallback/error-boundary.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/client/components/layout-router.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/layout-router.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/esm/client/components/layout-router.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/layout-router.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/client/components/metadata/async-metadata.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/metadata/async-metadata.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/esm/client/components/metadata/async-metadata.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/metadata/async-metadata.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/client/components/render-from-template-context.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/render-from-template-context.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/render-from-template-context.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/lib/framework/boundary-components.js":{"id":"(app-pages-browser)/./node_modules/next/dist/lib/framework/boundary-components.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":"(app-pages-browser)/./node_modules/next/dist/lib/framework/boundary-components.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/lib/metadata/generate/icon-mark.js":{"id":"(app-pages-browser)/./node_modules/next/dist/lib/metadata/generate/icon-mark.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":"(app-pages-browser)/./node_modules/next/dist/lib/metadata/generate/icon-mark.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js":{"id":"(app-pages-browser)/./node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/esm/next-devtools/userspace/app/segment-explorer-node.js":{"id":"(app-pages-browser)/./node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/page.tsx":{"id":"(app-pages-browser)/./app/page.tsx","name":"*","chunks":["app/page","static/chunks/app/page.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/register/page.tsx":{"id":"(app-pages-browser)/./app/register/page.tsx","name":"*","chunks":["app/register/page","static/chunks/app/register/page.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx":{"id":"(app-pages-browser)/./app/dashboard/page.tsx","name":"*","chunks":[],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/login/page.tsx":{"id":"(app-pages-browser)/./app/login/page.tsx","name":"*","chunks":[],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx":{"id":"(app-pages-browser)/./app/flashcards/page.tsx","name":"*","chunks":[],"async":false}},"entryCSSFiles":{"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/":[],"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/layout":[{"inlined":false,"path":"static/css/app/layout.css"}],"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/page":[],"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/register/page":[]},"rscModuleMapping":{"(app-pages-browser)/./contexts/AuthContext.tsx":{"*":{"id":"(rsc)/./contexts/AuthContext.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/globals.css":{"*":{"id":"(rsc)/./app/globals.css","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/learn/page.tsx":{"*":{"id":"(rsc)/./app/learn/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/builtin/global-error.js":{"*":{"id":"(rsc)/./node_modules/next/dist/client/components/builtin/global-error.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/client-page.js":{"*":{"id":"(rsc)/./node_modules/next/dist/client/components/client-page.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/client-segment.js":{"*":{"id":"(rsc)/./node_modules/next/dist/client/components/client-segment.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/http-access-fallback/error-boundary.js":{"*":{"id":"(rsc)/./node_modules/next/dist/client/components/http-access-fallback/error-boundary.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/layout-router.js":{"*":{"id":"(rsc)/./node_modules/next/dist/client/components/layout-router.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/metadata/async-metadata.js":{"*":{"id":"(rsc)/./node_modules/next/dist/client/components/metadata/async-metadata.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/render-from-template-context.js":{"*":{"id":"(rsc)/./node_modules/next/dist/client/components/render-from-template-context.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/lib/framework/boundary-components.js":{"*":{"id":"(rsc)/./node_modules/next/dist/lib/framework/boundary-components.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/lib/metadata/generate/icon-mark.js":{"*":{"id":"(rsc)/./node_modules/next/dist/lib/metadata/generate/icon-mark.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js":{"*":{"id":"(rsc)/./node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/page.tsx":{"*":{"id":"(rsc)/./app/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/register/page.tsx":{"*":{"id":"(rsc)/./app/register/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/dashboard/page.tsx":{"*":{"id":"(rsc)/./app/dashboard/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/login/page.tsx":{"*":{"id":"(rsc)/./app/login/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/flashcards/page.tsx":{"*":{"id":"(rsc)/./app/flashcards/page.tsx","name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{}} \ No newline at end of file +globalThis.__RSC_MANIFEST=(globalThis.__RSC_MANIFEST||{});globalThis.__RSC_MANIFEST["/register/page"]={"moduleLoading":{"prefix":"/_next/"},"ssrModuleMapping":{"(app-pages-browser)/./contexts/AuthContext.tsx":{"*":{"id":"(ssr)/./contexts/AuthContext.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/learn/page.tsx":{"*":{"id":"(ssr)/./app/learn/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/builtin/global-error.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/builtin/global-error.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/client-page.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/client-page.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/client-segment.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/client-segment.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/http-access-fallback/error-boundary.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/http-access-fallback/error-boundary.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/layout-router.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/layout-router.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/metadata/async-metadata.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/metadata/async-metadata.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/render-from-template-context.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/render-from-template-context.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/lib/framework/boundary-components.js":{"*":{"id":"(ssr)/./node_modules/next/dist/lib/framework/boundary-components.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/lib/metadata/generate/icon-mark.js":{"*":{"id":"(ssr)/./node_modules/next/dist/lib/metadata/generate/icon-mark.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js":{"*":{"id":"(ssr)/./node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/page.tsx":{"*":{"id":"(ssr)/./app/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/register/page.tsx":{"*":{"id":"(ssr)/./app/register/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/dashboard/page.tsx":{"*":{"id":"(ssr)/./app/dashboard/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/login/page.tsx":{"*":{"id":"(ssr)/./app/login/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/flashcards/page.tsx":{"*":{"id":"(ssr)/./app/flashcards/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/generate/page.tsx":{"*":{"id":"(ssr)/./app/generate/page.tsx","name":"*","chunks":[],"async":false}}},"edgeSSRModuleMapping":{},"clientModules":{"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/contexts/AuthContext.tsx":{"id":"(app-pages-browser)/./contexts/AuthContext.tsx","name":"*","chunks":["app/layout","static/chunks/app/layout.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/font/google/target.css?{\"path\":\"app/layout.tsx\",\"import\":\"Inter\",\"arguments\":[{\"subsets\":[\"latin\"]}],\"variableName\":\"inter\"}":{"id":"(app-pages-browser)/./node_modules/next/font/google/target.css?{\"path\":\"app/layout.tsx\",\"import\":\"Inter\",\"arguments\":[{\"subsets\":[\"latin\"]}],\"variableName\":\"inter\"}","name":"*","chunks":["app/layout","static/chunks/app/layout.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/globals.css":{"id":"(app-pages-browser)/./app/globals.css","name":"*","chunks":["app/layout","static/chunks/app/layout.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/learn/page.tsx":{"id":"(app-pages-browser)/./app/learn/page.tsx","name":"*","chunks":[],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/client/components/builtin/global-error.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/builtin/global-error.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/esm/client/components/builtin/global-error.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/builtin/global-error.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/client/components/client-page.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/client-page.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/esm/client/components/client-page.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/client-page.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/client/components/client-segment.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/client-segment.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/esm/client/components/client-segment.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/client-segment.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/client/components/http-access-fallback/error-boundary.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/http-access-fallback/error-boundary.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/http-access-fallback/error-boundary.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/client/components/layout-router.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/layout-router.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/esm/client/components/layout-router.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/layout-router.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/client/components/metadata/async-metadata.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/metadata/async-metadata.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/esm/client/components/metadata/async-metadata.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/metadata/async-metadata.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/client/components/render-from-template-context.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/render-from-template-context.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/render-from-template-context.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/lib/framework/boundary-components.js":{"id":"(app-pages-browser)/./node_modules/next/dist/lib/framework/boundary-components.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":"(app-pages-browser)/./node_modules/next/dist/lib/framework/boundary-components.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/lib/metadata/generate/icon-mark.js":{"id":"(app-pages-browser)/./node_modules/next/dist/lib/metadata/generate/icon-mark.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":"(app-pages-browser)/./node_modules/next/dist/lib/metadata/generate/icon-mark.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js":{"id":"(app-pages-browser)/./node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/node_modules/next/dist/esm/next-devtools/userspace/app/segment-explorer-node.js":{"id":"(app-pages-browser)/./node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/page.tsx":{"id":"(app-pages-browser)/./app/page.tsx","name":"*","chunks":["app/page","static/chunks/app/page.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/register/page.tsx":{"id":"(app-pages-browser)/./app/register/page.tsx","name":"*","chunks":["app/register/page","static/chunks/app/register/page.js"],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx":{"id":"(app-pages-browser)/./app/dashboard/page.tsx","name":"*","chunks":[],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/login/page.tsx":{"id":"(app-pages-browser)/./app/login/page.tsx","name":"*","chunks":[],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx":{"id":"(app-pages-browser)/./app/flashcards/page.tsx","name":"*","chunks":[],"async":false},"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx":{"id":"(app-pages-browser)/./app/generate/page.tsx","name":"*","chunks":[],"async":false}},"entryCSSFiles":{"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/":[],"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/layout":[{"inlined":false,"path":"static/css/app/layout.css"}],"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/page":[],"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/register/page":[]},"rscModuleMapping":{"(app-pages-browser)/./contexts/AuthContext.tsx":{"*":{"id":"(rsc)/./contexts/AuthContext.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/globals.css":{"*":{"id":"(rsc)/./app/globals.css","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/learn/page.tsx":{"*":{"id":"(rsc)/./app/learn/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/builtin/global-error.js":{"*":{"id":"(rsc)/./node_modules/next/dist/client/components/builtin/global-error.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/client-page.js":{"*":{"id":"(rsc)/./node_modules/next/dist/client/components/client-page.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/client-segment.js":{"*":{"id":"(rsc)/./node_modules/next/dist/client/components/client-segment.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/http-access-fallback/error-boundary.js":{"*":{"id":"(rsc)/./node_modules/next/dist/client/components/http-access-fallback/error-boundary.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/layout-router.js":{"*":{"id":"(rsc)/./node_modules/next/dist/client/components/layout-router.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/metadata/async-metadata.js":{"*":{"id":"(rsc)/./node_modules/next/dist/client/components/metadata/async-metadata.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/render-from-template-context.js":{"*":{"id":"(rsc)/./node_modules/next/dist/client/components/render-from-template-context.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/lib/framework/boundary-components.js":{"*":{"id":"(rsc)/./node_modules/next/dist/lib/framework/boundary-components.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/lib/metadata/generate/icon-mark.js":{"*":{"id":"(rsc)/./node_modules/next/dist/lib/metadata/generate/icon-mark.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js":{"*":{"id":"(rsc)/./node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/page.tsx":{"*":{"id":"(rsc)/./app/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/register/page.tsx":{"*":{"id":"(rsc)/./app/register/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/dashboard/page.tsx":{"*":{"id":"(rsc)/./app/dashboard/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/login/page.tsx":{"*":{"id":"(rsc)/./app/login/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/flashcards/page.tsx":{"*":{"id":"(rsc)/./app/flashcards/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/generate/page.tsx":{"*":{"id":"(rsc)/./app/generate/page.tsx","name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{}} \ No newline at end of file diff --git a/frontend/.next/server/webpack-runtime.js b/frontend/.next/server/webpack-runtime.js index 06d8794..078a9a3 100644 --- a/frontend/.next/server/webpack-runtime.js +++ b/frontend/.next/server/webpack-runtime.js @@ -117,7 +117,7 @@ /******/ /******/ /* webpack/runtime/getFullHash */ /******/ (() => { -/******/ __webpack_require__.h = () => ("0494fd25de6d5e90") +/******/ __webpack_require__.h = () => ("315acc0f2cb54e5e") /******/ })(); /******/ /******/ /* webpack/runtime/hasOwnProperty shorthand */ @@ -205,5 +205,5 @@ /******/ /******/ })() -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJpZ25vcmVMaXN0IjpbMF0sIm1hcHBpbmdzIjoiQUFBQSIsInNvdXJjZXMiOlsid2VicGFjay1pbnRlcm5hbDovL25leHRqcy93ZWJwYWNrLXJ1bnRpbWUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gVGhpcyBzb3VyY2Ugd2FzIGdlbmVyYXRlZCBieSBOZXh0LmpzIGJhc2VkIG9mZiBvZiB0aGUgZ2VuZXJhdGVkIFdlYnBhY2sgcnVudGltZS5cbi8vIFRoZSBtYXBwaW5ncyBhcmUgaW5jb3JyZWN0LlxuLy8gVG8gZ2V0IHRoZSBjb3JyZWN0IGxpbmUvY29sdW1uIG1hcHBpbmdzLCB0dXJuIG9mZiBzb3VyY2VtYXBzIGluIHlvdXIgZGVidWdnZXIuXG5cbi8qKioqKiovICgoKSA9PiB7IC8vIHdlYnBhY2tCb290c3RyYXBcbi8qKioqKiovIFx0XCJ1c2Ugc3RyaWN0XCI7XG4vKioqKioqLyBcdHZhciBfX3dlYnBhY2tfbW9kdWxlc19fID0gKHt9KTtcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKioqKioqLyBcdC8vIFRoZSBtb2R1bGUgY2FjaGVcbi8qKioqKiovIFx0dmFyIF9fd2VicGFja19tb2R1bGVfY2FjaGVfXyA9IHt9O1xuLyoqKioqKi8gXHRcbi8qKioqKiovIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbi8qKioqKiovIFx0ZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuLyoqKioqKi8gXHRcdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuLyoqKioqKi8gXHRcdHZhciBjYWNoZWRNb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdO1xuLyoqKioqKi8gXHRcdGlmIChjYWNoZWRNb2R1bGUgIT09IHVuZGVmaW5lZCkge1xuLyoqKioqKi8gXHRcdFx0cmV0dXJuIGNhY2hlZE1vZHVsZS5leHBvcnRzO1xuLyoqKioqKi8gXHRcdH1cbi8qKioqKiovIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuLyoqKioqKi8gXHRcdHZhciBtb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdID0ge1xuLyoqKioqKi8gXHRcdFx0aWQ6IG1vZHVsZUlkLFxuLyoqKioqKi8gXHRcdFx0bG9hZGVkOiBmYWxzZSxcbi8qKioqKiovIFx0XHRcdGV4cG9ydHM6IHt9XG4vKioqKioqLyBcdFx0fTtcbi8qKioqKiovIFx0XG4vKioqKioqLyBcdFx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG4vKioqKioqLyBcdFx0dmFyIHRocmV3ID0gdHJ1ZTtcbi8qKioqKiovIFx0XHR0cnkge1xuLyoqKioqKi8gXHRcdFx0X193ZWJwYWNrX21vZHVsZXNfX1ttb2R1bGVJZF0obW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG4vKioqKioqLyBcdFx0XHR0aHJldyA9IGZhbHNlO1xuLyoqKioqKi8gXHRcdH0gZmluYWxseSB7XG4vKioqKioqLyBcdFx0XHRpZih0aHJldykgZGVsZXRlIF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF07XG4vKioqKioqLyBcdFx0fVxuLyoqKioqKi8gXHRcbi8qKioqKiovIFx0XHQvLyBGbGFnIHRoZSBtb2R1bGUgYXMgbG9hZGVkXG4vKioqKioqLyBcdFx0bW9kdWxlLmxvYWRlZCA9IHRydWU7XG4vKioqKioqLyBcdFxuLyoqKioqKi8gXHRcdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG4vKioqKioqLyBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuLyoqKioqKi8gXHR9XG4vKioqKioqLyBcdFxuLyoqKioqKi8gXHQvLyBleHBvc2UgdGhlIG1vZHVsZXMgb2JqZWN0IChfX3dlYnBhY2tfbW9kdWxlc19fKVxuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBfX3dlYnBhY2tfbW9kdWxlc19fO1xuLyoqKioqKi8gXHRcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKioqKioqLyBcdC8qIHdlYnBhY2svcnVudGltZS9jb21wYXQgZ2V0IGRlZmF1bHQgZXhwb3J0ICovXG4vKioqKioqLyBcdCgoKSA9PiB7XG4vKioqKioqLyBcdFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbi8qKioqKiovIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLm4gPSAobW9kdWxlKSA9PiB7XG4vKioqKioqLyBcdFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbi8qKioqKiovIFx0XHRcdFx0KCkgPT4gKG1vZHVsZVsnZGVmYXVsdCddKSA6XG4vKioqKioqLyBcdFx0XHRcdCgpID0+IChtb2R1bGUpO1xuLyoqKioqKi8gXHRcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgeyBhOiBnZXR0ZXIgfSk7XG4vKioqKioqLyBcdFx0XHRyZXR1cm4gZ2V0dGVyO1xuLyoqKioqKi8gXHRcdH07XG4vKioqKioqLyBcdH0pKCk7XG4vKioqKioqLyBcdFxuLyoqKioqKi8gXHQvKiB3ZWJwYWNrL3J1bnRpbWUvY3JlYXRlIGZha2UgbmFtZXNwYWNlIG9iamVjdCAqL1xuLyoqKioqKi8gXHQoKCkgPT4ge1xuLyoqKioqKi8gXHRcdHZhciBnZXRQcm90byA9IE9iamVjdC5nZXRQcm90b3R5cGVPZiA/IChvYmopID0+IChPYmplY3QuZ2V0UHJvdG90eXBlT2Yob2JqKSkgOiAob2JqKSA9PiAob2JqLl9fcHJvdG9fXyk7XG4vKioqKioqLyBcdFx0dmFyIGxlYWZQcm90b3R5cGVzO1xuLyoqKioqKi8gXHRcdC8vIGNyZWF0ZSBhIGZha2UgbmFtZXNwYWNlIG9iamVjdFxuLyoqKioqKi8gXHRcdC8vIG1vZGUgJiAxOiB2YWx1ZSBpcyBhIG1vZHVsZSBpZCwgcmVxdWlyZSBpdFxuLyoqKioqKi8gXHRcdC8vIG1vZGUgJiAyOiBtZXJnZSBhbGwgcHJvcGVydGllcyBvZiB2YWx1ZSBpbnRvIHRoZSBuc1xuLyoqKioqKi8gXHRcdC8vIG1vZGUgJiA0OiByZXR1cm4gdmFsdWUgd2hlbiBhbHJlYWR5IG5zIG9iamVjdFxuLyoqKioqKi8gXHRcdC8vIG1vZGUgJiAxNjogcmV0dXJuIHZhbHVlIHdoZW4gaXQncyBQcm9taXNlLWxpa2Vcbi8qKioqKiovIFx0XHQvLyBtb2RlICYgOHwxOiBiZWhhdmUgbGlrZSByZXF1aXJlXG4vKioqKioqLyBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy50ID0gZnVuY3Rpb24odmFsdWUsIG1vZGUpIHtcbi8qKioqKiovIFx0XHRcdGlmKG1vZGUgJiAxKSB2YWx1ZSA9IHRoaXModmFsdWUpO1xuLyoqKioqKi8gXHRcdFx0aWYobW9kZSAmIDgpIHJldHVybiB2YWx1ZTtcbi8qKioqKiovIFx0XHRcdGlmKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUpIHtcbi8qKioqKiovIFx0XHRcdFx0aWYoKG1vZGUgJiA0KSAmJiB2YWx1ZS5fX2VzTW9kdWxlKSByZXR1cm4gdmFsdWU7XG4vKioqKioqLyBcdFx0XHRcdGlmKChtb2RlICYgMTYpICYmIHR5cGVvZiB2YWx1ZS50aGVuID09PSAnZnVuY3Rpb24nKSByZXR1cm4gdmFsdWU7XG4vKioqKioqLyBcdFx0XHR9XG4vKioqKioqLyBcdFx0XHR2YXIgbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuLyoqKioqKi8gXHRcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5yKG5zKTtcbi8qKioqKiovIFx0XHRcdHZhciBkZWYgPSB7fTtcbi8qKioqKiovIFx0XHRcdGxlYWZQcm90b3R5cGVzID0gbGVhZlByb3RvdHlwZXMgfHwgW251bGwsIGdldFByb3RvKHt9KSwgZ2V0UHJvdG8oW10pLCBnZXRQcm90byhnZXRQcm90byldO1xuLyoqKioqKi8gXHRcdFx0Zm9yKHZhciBjdXJyZW50ID0gbW9kZSAmIDIgJiYgdmFsdWU7IHR5cGVvZiBjdXJyZW50ID09ICdvYmplY3QnICYmICF+bGVhZlByb3RvdHlwZXMuaW5kZXhPZihjdXJyZW50KTsgY3VycmVudCA9IGdldFByb3RvKGN1cnJlbnQpKSB7XG4vKioqKioqLyBcdFx0XHRcdE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGN1cnJlbnQpLmZvckVhY2goKGtleSkgPT4gKGRlZltrZXldID0gKCkgPT4gKHZhbHVlW2tleV0pKSk7XG4vKioqKioqLyBcdFx0XHR9XG4vKioqKioqLyBcdFx0XHRkZWZbJ2RlZmF1bHQnXSA9ICgpID0+ICh2YWx1ZSk7XG4vKioqKioqLyBcdFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQobnMsIGRlZik7XG4vKioqKioqLyBcdFx0XHRyZXR1cm4gbnM7XG4vKioqKioqLyBcdFx0fTtcbi8qKioqKiovIFx0fSkoKTtcbi8qKioqKiovIFx0XG4vKioqKioqLyBcdC8qIHdlYnBhY2svcnVudGltZS9kZWZpbmUgcHJvcGVydHkgZ2V0dGVycyAqL1xuLyoqKioqKi8gXHQoKCkgPT4ge1xuLyoqKioqKi8gXHRcdC8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb25zIGZvciBoYXJtb255IGV4cG9ydHNcbi8qKioqKiovIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSAoZXhwb3J0cywgZGVmaW5pdGlvbikgPT4ge1xuLyoqKioqKi8gXHRcdFx0Zm9yKHZhciBrZXkgaW4gZGVmaW5pdGlvbikge1xuLyoqKioqKi8gXHRcdFx0XHRpZihfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZGVmaW5pdGlvbiwga2V5KSAmJiAhX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIGtleSkpIHtcbi8qKioqKiovIFx0XHRcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZGVmaW5pdGlvbltrZXldIH0pO1xuLyoqKioqKi8gXHRcdFx0XHR9XG4vKioqKioqLyBcdFx0XHR9XG4vKioqKioqLyBcdFx0fTtcbi8qKioqKiovIFx0fSkoKTtcbi8qKioqKiovIFx0XG4vKioqKioqLyBcdC8qIHdlYnBhY2svcnVudGltZS9lbnN1cmUgY2h1bmsgKi9cbi8qKioqKiovIFx0KCgpID0+IHtcbi8qKioqKiovIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLmYgPSB7fTtcbi8qKioqKiovIFx0XHQvLyBUaGlzIGZpbGUgY29udGFpbnMgb25seSB0aGUgZW50cnkgY2h1bmsuXG4vKioqKioqLyBcdFx0Ly8gVGhlIGNodW5rIGxvYWRpbmcgZnVuY3Rpb24gZm9yIGFkZGl0aW9uYWwgY2h1bmtzXG4vKioqKioqLyBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5lID0gKGNodW5rSWQpID0+IHtcbi8qKioqKiovIFx0XHRcdHJldHVybiBQcm9taXNlLmFsbChPYmplY3Qua2V5cyhfX3dlYnBhY2tfcmVxdWlyZV9fLmYpLnJlZHVjZSgocHJvbWlzZXMsIGtleSkgPT4ge1xuLyoqKioqKi8gXHRcdFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLmZba2V5XShjaHVua0lkLCBwcm9taXNlcyk7XG4vKioqKioqLyBcdFx0XHRcdHJldHVybiBwcm9taXNlcztcbi8qKioqKiovIFx0XHRcdH0sIFtdKSk7XG4vKioqKioqLyBcdFx0fTtcbi8qKioqKiovIFx0fSkoKTtcbi8qKioqKiovIFx0XG4vKioqKioqLyBcdC8qIHdlYnBhY2svcnVudGltZS9nZXQgamF2YXNjcmlwdCBjaHVuayBmaWxlbmFtZSAqL1xuLyoqKioqKi8gXHQoKCkgPT4ge1xuLyoqKioqKi8gXHRcdC8vIFRoaXMgZnVuY3Rpb24gYWxsb3cgdG8gcmVmZXJlbmNlIGFzeW5jIGNodW5rcyBhbmQgc2libGluZyBjaHVua3MgZm9yIHRoZSBlbnRyeXBvaW50XG4vKioqKioqLyBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy51ID0gKGNodW5rSWQpID0+IHtcbi8qKioqKiovIFx0XHRcdC8vIHJldHVybiB1cmwgZm9yIGZpbGVuYW1lcyBiYXNlZCBvbiB0ZW1wbGF0ZVxuLyoqKioqKi8gXHRcdFx0cmV0dXJuIFwiXCIgKyBjaHVua0lkICsgXCIuanNcIjtcbi8qKioqKiovIFx0XHR9O1xuLyoqKioqKi8gXHR9KSgpO1xuLyoqKioqKi8gXHRcbi8qKioqKiovIFx0Lyogd2VicGFjay9ydW50aW1lL2dldEZ1bGxIYXNoICovXG4vKioqKioqLyBcdCgoKSA9PiB7XG4vKioqKioqLyBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5oID0gKCkgPT4gKFwiMDQ5NGZkMjVkZTZkNWU5MFwiKVxuLyoqKioqKi8gXHR9KSgpO1xuLyoqKioqKi8gXHRcbi8qKioqKiovIFx0Lyogd2VicGFjay9ydW50aW1lL2hhc093blByb3BlcnR5IHNob3J0aGFuZCAqL1xuLyoqKioqKi8gXHQoKCkgPT4ge1xuLyoqKioqKi8gXHRcdF9fd2VicGFja19yZXF1aXJlX18ubyA9IChvYmosIHByb3ApID0+IChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBwcm9wKSlcbi8qKioqKiovIFx0fSkoKTtcbi8qKioqKiovIFx0XG4vKioqKioqLyBcdC8qIHdlYnBhY2svcnVudGltZS9tYWtlIG5hbWVzcGFjZSBvYmplY3QgKi9cbi8qKioqKiovIFx0KCgpID0+IHtcbi8qKioqKiovIFx0XHQvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG4vKioqKioqLyBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5yID0gKGV4cG9ydHMpID0+IHtcbi8qKioqKiovIFx0XHRcdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuLyoqKioqKi8gXHRcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgU3ltYm9sLnRvU3RyaW5nVGFnLCB7IHZhbHVlOiAnTW9kdWxlJyB9KTtcbi8qKioqKiovIFx0XHRcdH1cbi8qKioqKiovIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4vKioqKioqLyBcdFx0fTtcbi8qKioqKiovIFx0fSkoKTtcbi8qKioqKiovIFx0XG4vKioqKioqLyBcdC8qIHdlYnBhY2svcnVudGltZS9ub2RlIG1vZHVsZSBkZWNvcmF0b3IgKi9cbi8qKioqKiovIFx0KCgpID0+IHtcbi8qKioqKiovIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLm5tZCA9IChtb2R1bGUpID0+IHtcbi8qKioqKiovIFx0XHRcdG1vZHVsZS5wYXRocyA9IFtdO1xuLyoqKioqKi8gXHRcdFx0aWYgKCFtb2R1bGUuY2hpbGRyZW4pIG1vZHVsZS5jaGlsZHJlbiA9IFtdO1xuLyoqKioqKi8gXHRcdFx0cmV0dXJuIG1vZHVsZTtcbi8qKioqKiovIFx0XHR9O1xuLyoqKioqKi8gXHR9KSgpO1xuLyoqKioqKi8gXHRcbi8qKioqKiovIFx0Lyogd2VicGFjay9ydW50aW1lL3N0YXJ0dXAgZW50cnlwb2ludCAqL1xuLyoqKioqKi8gXHQoKCkgPT4ge1xuLyoqKioqKi8gXHRcdF9fd2VicGFja19yZXF1aXJlX18uWCA9IChyZXN1bHQsIGNodW5rSWRzLCBmbikgPT4ge1xuLyoqKioqKi8gXHRcdFx0Ly8gYXJndW1lbnRzOiBjaHVua0lkcywgbW9kdWxlSWQgYXJlIGRlcHJlY2F0ZWRcbi8qKioqKiovIFx0XHRcdHZhciBtb2R1bGVJZCA9IGNodW5rSWRzO1xuLyoqKioqKi8gXHRcdFx0aWYoIWZuKSBjaHVua0lkcyA9IHJlc3VsdCwgZm4gPSAoKSA9PiAoX193ZWJwYWNrX3JlcXVpcmVfXyhfX3dlYnBhY2tfcmVxdWlyZV9fLnMgPSBtb2R1bGVJZCkpO1xuLyoqKioqKi8gXHRcdFx0Y2h1bmtJZHMubWFwKF9fd2VicGFja19yZXF1aXJlX18uZSwgX193ZWJwYWNrX3JlcXVpcmVfXylcbi8qKioqKiovIFx0XHRcdHZhciByID0gZm4oKTtcbi8qKioqKiovIFx0XHRcdHJldHVybiByID09PSB1bmRlZmluZWQgPyByZXN1bHQgOiByO1xuLyoqKioqKi8gXHRcdH1cbi8qKioqKiovIFx0fSkoKTtcbi8qKioqKiovIFx0XG4vKioqKioqLyBcdC8qIHdlYnBhY2svcnVudGltZS9yZXF1aXJlIGNodW5rIGxvYWRpbmcgKi9cbi8qKioqKiovIFx0KCgpID0+IHtcbi8qKioqKiovIFx0XHQvLyBubyBiYXNlVVJJXG4vKioqKioqLyBcdFx0XG4vKioqKioqLyBcdFx0Ly8gb2JqZWN0IHRvIHN0b3JlIGxvYWRlZCBjaHVua3Ncbi8qKioqKiovIFx0XHQvLyBcIjFcIiBtZWFucyBcImxvYWRlZFwiLCBvdGhlcndpc2Ugbm90IGxvYWRlZCB5ZXRcbi8qKioqKiovIFx0XHR2YXIgaW5zdGFsbGVkQ2h1bmtzID0ge1xuLyoqKioqKi8gXHRcdFx0XCJ3ZWJwYWNrLXJ1bnRpbWVcIjogMVxuLyoqKioqKi8gXHRcdH07XG4vKioqKioqLyBcdFx0XG4vKioqKioqLyBcdFx0Ly8gbm8gb24gY2h1bmtzIGxvYWRlZFxuLyoqKioqKi8gXHRcdFxuLyoqKioqKi8gXHRcdHZhciBpbnN0YWxsQ2h1bmsgPSAoY2h1bmspID0+IHtcbi8qKioqKiovIFx0XHRcdHZhciBtb3JlTW9kdWxlcyA9IGNodW5rLm1vZHVsZXMsIGNodW5rSWRzID0gY2h1bmsuaWRzLCBydW50aW1lID0gY2h1bmsucnVudGltZTtcbi8qKioqKiovIFx0XHRcdGZvcih2YXIgbW9kdWxlSWQgaW4gbW9yZU1vZHVsZXMpIHtcbi8qKioqKiovIFx0XHRcdFx0aWYoX193ZWJwYWNrX3JlcXVpcmVfXy5vKG1vcmVNb2R1bGVzLCBtb2R1bGVJZCkpIHtcbi8qKioqKiovIFx0XHRcdFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLm1bbW9kdWxlSWRdID0gbW9yZU1vZHVsZXNbbW9kdWxlSWRdO1xuLyoqKioqKi8gXHRcdFx0XHR9XG4vKioqKioqLyBcdFx0XHR9XG4vKioqKioqLyBcdFx0XHRpZihydW50aW1lKSBydW50aW1lKF9fd2VicGFja19yZXF1aXJlX18pO1xuLyoqKioqKi8gXHRcdFx0Zm9yKHZhciBpID0gMDsgaSA8IGNodW5rSWRzLmxlbmd0aDsgaSsrKVxuLyoqKioqKi8gXHRcdFx0XHRpbnN0YWxsZWRDaHVua3NbY2h1bmtJZHNbaV1dID0gMTtcbi8qKioqKiovIFx0XHRcbi8qKioqKiovIFx0XHR9O1xuLyoqKioqKi8gXHRcdFxuLyoqKioqKi8gXHRcdC8vIHJlcXVpcmUoKSBjaHVuayBsb2FkaW5nIGZvciBqYXZhc2NyaXB0XG4vKioqKioqLyBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5mLnJlcXVpcmUgPSAoY2h1bmtJZCwgcHJvbWlzZXMpID0+IHtcbi8qKioqKiovIFx0XHRcdC8vIFwiMVwiIGlzIHRoZSBzaWduYWwgZm9yIFwiYWxyZWFkeSBsb2FkZWRcIlxuLyoqKioqKi8gXHRcdFx0aWYoIWluc3RhbGxlZENodW5rc1tjaHVua0lkXSkge1xuLyoqKioqKi8gXHRcdFx0XHRpZihcIndlYnBhY2stcnVudGltZVwiICE9IGNodW5rSWQpIHtcbi8qKioqKiovIFx0XHRcdFx0XHRpbnN0YWxsQ2h1bmsocmVxdWlyZShcIi4vXCIgKyBfX3dlYnBhY2tfcmVxdWlyZV9fLnUoY2h1bmtJZCkpKTtcbi8qKioqKiovIFx0XHRcdFx0fSBlbHNlIGluc3RhbGxlZENodW5rc1tjaHVua0lkXSA9IDE7XG4vKioqKioqLyBcdFx0XHR9XG4vKioqKioqLyBcdFx0fTtcbi8qKioqKiovIFx0XHRcbi8qKioqKiovIFx0XHRtb2R1bGUuZXhwb3J0cyA9IF9fd2VicGFja19yZXF1aXJlX187XG4vKioqKioqLyBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5DID0gaW5zdGFsbENodW5rO1xuLyoqKioqKi8gXHRcdFxuLyoqKioqKi8gXHRcdC8vIG5vIEhNUlxuLyoqKioqKi8gXHRcdFxuLyoqKioqKi8gXHRcdC8vIG5vIEhNUiBtYW5pZmVzdFxuLyoqKioqKi8gXHR9KSgpO1xuLyoqKioqKi8gXHRcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKioqKioqLyBcdFxuLyoqKioqKi8gXHRcbi8qKioqKiovIH0pKClcbiJdfQ== +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJpZ25vcmVMaXN0IjpbMF0sIm1hcHBpbmdzIjoiQUFBQSIsInNvdXJjZXMiOlsid2VicGFjay1pbnRlcm5hbDovL25leHRqcy93ZWJwYWNrLXJ1bnRpbWUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gVGhpcyBzb3VyY2Ugd2FzIGdlbmVyYXRlZCBieSBOZXh0LmpzIGJhc2VkIG9mZiBvZiB0aGUgZ2VuZXJhdGVkIFdlYnBhY2sgcnVudGltZS5cbi8vIFRoZSBtYXBwaW5ncyBhcmUgaW5jb3JyZWN0LlxuLy8gVG8gZ2V0IHRoZSBjb3JyZWN0IGxpbmUvY29sdW1uIG1hcHBpbmdzLCB0dXJuIG9mZiBzb3VyY2VtYXBzIGluIHlvdXIgZGVidWdnZXIuXG5cbi8qKioqKiovICgoKSA9PiB7IC8vIHdlYnBhY2tCb290c3RyYXBcbi8qKioqKiovIFx0XCJ1c2Ugc3RyaWN0XCI7XG4vKioqKioqLyBcdHZhciBfX3dlYnBhY2tfbW9kdWxlc19fID0gKHt9KTtcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKioqKioqLyBcdC8vIFRoZSBtb2R1bGUgY2FjaGVcbi8qKioqKiovIFx0dmFyIF9fd2VicGFja19tb2R1bGVfY2FjaGVfXyA9IHt9O1xuLyoqKioqKi8gXHRcbi8qKioqKiovIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbi8qKioqKiovIFx0ZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuLyoqKioqKi8gXHRcdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuLyoqKioqKi8gXHRcdHZhciBjYWNoZWRNb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdO1xuLyoqKioqKi8gXHRcdGlmIChjYWNoZWRNb2R1bGUgIT09IHVuZGVmaW5lZCkge1xuLyoqKioqKi8gXHRcdFx0cmV0dXJuIGNhY2hlZE1vZHVsZS5leHBvcnRzO1xuLyoqKioqKi8gXHRcdH1cbi8qKioqKiovIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuLyoqKioqKi8gXHRcdHZhciBtb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdID0ge1xuLyoqKioqKi8gXHRcdFx0aWQ6IG1vZHVsZUlkLFxuLyoqKioqKi8gXHRcdFx0bG9hZGVkOiBmYWxzZSxcbi8qKioqKiovIFx0XHRcdGV4cG9ydHM6IHt9XG4vKioqKioqLyBcdFx0fTtcbi8qKioqKiovIFx0XG4vKioqKioqLyBcdFx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG4vKioqKioqLyBcdFx0dmFyIHRocmV3ID0gdHJ1ZTtcbi8qKioqKiovIFx0XHR0cnkge1xuLyoqKioqKi8gXHRcdFx0X193ZWJwYWNrX21vZHVsZXNfX1ttb2R1bGVJZF0obW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG4vKioqKioqLyBcdFx0XHR0aHJldyA9IGZhbHNlO1xuLyoqKioqKi8gXHRcdH0gZmluYWxseSB7XG4vKioqKioqLyBcdFx0XHRpZih0aHJldykgZGVsZXRlIF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF07XG4vKioqKioqLyBcdFx0fVxuLyoqKioqKi8gXHRcbi8qKioqKiovIFx0XHQvLyBGbGFnIHRoZSBtb2R1bGUgYXMgbG9hZGVkXG4vKioqKioqLyBcdFx0bW9kdWxlLmxvYWRlZCA9IHRydWU7XG4vKioqKioqLyBcdFxuLyoqKioqKi8gXHRcdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG4vKioqKioqLyBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuLyoqKioqKi8gXHR9XG4vKioqKioqLyBcdFxuLyoqKioqKi8gXHQvLyBleHBvc2UgdGhlIG1vZHVsZXMgb2JqZWN0IChfX3dlYnBhY2tfbW9kdWxlc19fKVxuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBfX3dlYnBhY2tfbW9kdWxlc19fO1xuLyoqKioqKi8gXHRcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKioqKioqLyBcdC8qIHdlYnBhY2svcnVudGltZS9jb21wYXQgZ2V0IGRlZmF1bHQgZXhwb3J0ICovXG4vKioqKioqLyBcdCgoKSA9PiB7XG4vKioqKioqLyBcdFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbi8qKioqKiovIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLm4gPSAobW9kdWxlKSA9PiB7XG4vKioqKioqLyBcdFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbi8qKioqKiovIFx0XHRcdFx0KCkgPT4gKG1vZHVsZVsnZGVmYXVsdCddKSA6XG4vKioqKioqLyBcdFx0XHRcdCgpID0+IChtb2R1bGUpO1xuLyoqKioqKi8gXHRcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgeyBhOiBnZXR0ZXIgfSk7XG4vKioqKioqLyBcdFx0XHRyZXR1cm4gZ2V0dGVyO1xuLyoqKioqKi8gXHRcdH07XG4vKioqKioqLyBcdH0pKCk7XG4vKioqKioqLyBcdFxuLyoqKioqKi8gXHQvKiB3ZWJwYWNrL3J1bnRpbWUvY3JlYXRlIGZha2UgbmFtZXNwYWNlIG9iamVjdCAqL1xuLyoqKioqKi8gXHQoKCkgPT4ge1xuLyoqKioqKi8gXHRcdHZhciBnZXRQcm90byA9IE9iamVjdC5nZXRQcm90b3R5cGVPZiA/IChvYmopID0+IChPYmplY3QuZ2V0UHJvdG90eXBlT2Yob2JqKSkgOiAob2JqKSA9PiAob2JqLl9fcHJvdG9fXyk7XG4vKioqKioqLyBcdFx0dmFyIGxlYWZQcm90b3R5cGVzO1xuLyoqKioqKi8gXHRcdC8vIGNyZWF0ZSBhIGZha2UgbmFtZXNwYWNlIG9iamVjdFxuLyoqKioqKi8gXHRcdC8vIG1vZGUgJiAxOiB2YWx1ZSBpcyBhIG1vZHVsZSBpZCwgcmVxdWlyZSBpdFxuLyoqKioqKi8gXHRcdC8vIG1vZGUgJiAyOiBtZXJnZSBhbGwgcHJvcGVydGllcyBvZiB2YWx1ZSBpbnRvIHRoZSBuc1xuLyoqKioqKi8gXHRcdC8vIG1vZGUgJiA0OiByZXR1cm4gdmFsdWUgd2hlbiBhbHJlYWR5IG5zIG9iamVjdFxuLyoqKioqKi8gXHRcdC8vIG1vZGUgJiAxNjogcmV0dXJuIHZhbHVlIHdoZW4gaXQncyBQcm9taXNlLWxpa2Vcbi8qKioqKiovIFx0XHQvLyBtb2RlICYgOHwxOiBiZWhhdmUgbGlrZSByZXF1aXJlXG4vKioqKioqLyBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy50ID0gZnVuY3Rpb24odmFsdWUsIG1vZGUpIHtcbi8qKioqKiovIFx0XHRcdGlmKG1vZGUgJiAxKSB2YWx1ZSA9IHRoaXModmFsdWUpO1xuLyoqKioqKi8gXHRcdFx0aWYobW9kZSAmIDgpIHJldHVybiB2YWx1ZTtcbi8qKioqKiovIFx0XHRcdGlmKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUpIHtcbi8qKioqKiovIFx0XHRcdFx0aWYoKG1vZGUgJiA0KSAmJiB2YWx1ZS5fX2VzTW9kdWxlKSByZXR1cm4gdmFsdWU7XG4vKioqKioqLyBcdFx0XHRcdGlmKChtb2RlICYgMTYpICYmIHR5cGVvZiB2YWx1ZS50aGVuID09PSAnZnVuY3Rpb24nKSByZXR1cm4gdmFsdWU7XG4vKioqKioqLyBcdFx0XHR9XG4vKioqKioqLyBcdFx0XHR2YXIgbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuLyoqKioqKi8gXHRcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5yKG5zKTtcbi8qKioqKiovIFx0XHRcdHZhciBkZWYgPSB7fTtcbi8qKioqKiovIFx0XHRcdGxlYWZQcm90b3R5cGVzID0gbGVhZlByb3RvdHlwZXMgfHwgW251bGwsIGdldFByb3RvKHt9KSwgZ2V0UHJvdG8oW10pLCBnZXRQcm90byhnZXRQcm90byldO1xuLyoqKioqKi8gXHRcdFx0Zm9yKHZhciBjdXJyZW50ID0gbW9kZSAmIDIgJiYgdmFsdWU7IHR5cGVvZiBjdXJyZW50ID09ICdvYmplY3QnICYmICF+bGVhZlByb3RvdHlwZXMuaW5kZXhPZihjdXJyZW50KTsgY3VycmVudCA9IGdldFByb3RvKGN1cnJlbnQpKSB7XG4vKioqKioqLyBcdFx0XHRcdE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGN1cnJlbnQpLmZvckVhY2goKGtleSkgPT4gKGRlZltrZXldID0gKCkgPT4gKHZhbHVlW2tleV0pKSk7XG4vKioqKioqLyBcdFx0XHR9XG4vKioqKioqLyBcdFx0XHRkZWZbJ2RlZmF1bHQnXSA9ICgpID0+ICh2YWx1ZSk7XG4vKioqKioqLyBcdFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQobnMsIGRlZik7XG4vKioqKioqLyBcdFx0XHRyZXR1cm4gbnM7XG4vKioqKioqLyBcdFx0fTtcbi8qKioqKiovIFx0fSkoKTtcbi8qKioqKiovIFx0XG4vKioqKioqLyBcdC8qIHdlYnBhY2svcnVudGltZS9kZWZpbmUgcHJvcGVydHkgZ2V0dGVycyAqL1xuLyoqKioqKi8gXHQoKCkgPT4ge1xuLyoqKioqKi8gXHRcdC8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb25zIGZvciBoYXJtb255IGV4cG9ydHNcbi8qKioqKiovIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSAoZXhwb3J0cywgZGVmaW5pdGlvbikgPT4ge1xuLyoqKioqKi8gXHRcdFx0Zm9yKHZhciBrZXkgaW4gZGVmaW5pdGlvbikge1xuLyoqKioqKi8gXHRcdFx0XHRpZihfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZGVmaW5pdGlvbiwga2V5KSAmJiAhX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIGtleSkpIHtcbi8qKioqKiovIFx0XHRcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZGVmaW5pdGlvbltrZXldIH0pO1xuLyoqKioqKi8gXHRcdFx0XHR9XG4vKioqKioqLyBcdFx0XHR9XG4vKioqKioqLyBcdFx0fTtcbi8qKioqKiovIFx0fSkoKTtcbi8qKioqKiovIFx0XG4vKioqKioqLyBcdC8qIHdlYnBhY2svcnVudGltZS9lbnN1cmUgY2h1bmsgKi9cbi8qKioqKiovIFx0KCgpID0+IHtcbi8qKioqKiovIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLmYgPSB7fTtcbi8qKioqKiovIFx0XHQvLyBUaGlzIGZpbGUgY29udGFpbnMgb25seSB0aGUgZW50cnkgY2h1bmsuXG4vKioqKioqLyBcdFx0Ly8gVGhlIGNodW5rIGxvYWRpbmcgZnVuY3Rpb24gZm9yIGFkZGl0aW9uYWwgY2h1bmtzXG4vKioqKioqLyBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5lID0gKGNodW5rSWQpID0+IHtcbi8qKioqKiovIFx0XHRcdHJldHVybiBQcm9taXNlLmFsbChPYmplY3Qua2V5cyhfX3dlYnBhY2tfcmVxdWlyZV9fLmYpLnJlZHVjZSgocHJvbWlzZXMsIGtleSkgPT4ge1xuLyoqKioqKi8gXHRcdFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLmZba2V5XShjaHVua0lkLCBwcm9taXNlcyk7XG4vKioqKioqLyBcdFx0XHRcdHJldHVybiBwcm9taXNlcztcbi8qKioqKiovIFx0XHRcdH0sIFtdKSk7XG4vKioqKioqLyBcdFx0fTtcbi8qKioqKiovIFx0fSkoKTtcbi8qKioqKiovIFx0XG4vKioqKioqLyBcdC8qIHdlYnBhY2svcnVudGltZS9nZXQgamF2YXNjcmlwdCBjaHVuayBmaWxlbmFtZSAqL1xuLyoqKioqKi8gXHQoKCkgPT4ge1xuLyoqKioqKi8gXHRcdC8vIFRoaXMgZnVuY3Rpb24gYWxsb3cgdG8gcmVmZXJlbmNlIGFzeW5jIGNodW5rcyBhbmQgc2libGluZyBjaHVua3MgZm9yIHRoZSBlbnRyeXBvaW50XG4vKioqKioqLyBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy51ID0gKGNodW5rSWQpID0+IHtcbi8qKioqKiovIFx0XHRcdC8vIHJldHVybiB1cmwgZm9yIGZpbGVuYW1lcyBiYXNlZCBvbiB0ZW1wbGF0ZVxuLyoqKioqKi8gXHRcdFx0cmV0dXJuIFwiXCIgKyBjaHVua0lkICsgXCIuanNcIjtcbi8qKioqKiovIFx0XHR9O1xuLyoqKioqKi8gXHR9KSgpO1xuLyoqKioqKi8gXHRcbi8qKioqKiovIFx0Lyogd2VicGFjay9ydW50aW1lL2dldEZ1bGxIYXNoICovXG4vKioqKioqLyBcdCgoKSA9PiB7XG4vKioqKioqLyBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5oID0gKCkgPT4gKFwiMzE1YWNjMGYyY2I1NGU1ZVwiKVxuLyoqKioqKi8gXHR9KSgpO1xuLyoqKioqKi8gXHRcbi8qKioqKiovIFx0Lyogd2VicGFjay9ydW50aW1lL2hhc093blByb3BlcnR5IHNob3J0aGFuZCAqL1xuLyoqKioqKi8gXHQoKCkgPT4ge1xuLyoqKioqKi8gXHRcdF9fd2VicGFja19yZXF1aXJlX18ubyA9IChvYmosIHByb3ApID0+IChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBwcm9wKSlcbi8qKioqKiovIFx0fSkoKTtcbi8qKioqKiovIFx0XG4vKioqKioqLyBcdC8qIHdlYnBhY2svcnVudGltZS9tYWtlIG5hbWVzcGFjZSBvYmplY3QgKi9cbi8qKioqKiovIFx0KCgpID0+IHtcbi8qKioqKiovIFx0XHQvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG4vKioqKioqLyBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5yID0gKGV4cG9ydHMpID0+IHtcbi8qKioqKiovIFx0XHRcdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuLyoqKioqKi8gXHRcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgU3ltYm9sLnRvU3RyaW5nVGFnLCB7IHZhbHVlOiAnTW9kdWxlJyB9KTtcbi8qKioqKiovIFx0XHRcdH1cbi8qKioqKiovIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4vKioqKioqLyBcdFx0fTtcbi8qKioqKiovIFx0fSkoKTtcbi8qKioqKiovIFx0XG4vKioqKioqLyBcdC8qIHdlYnBhY2svcnVudGltZS9ub2RlIG1vZHVsZSBkZWNvcmF0b3IgKi9cbi8qKioqKiovIFx0KCgpID0+IHtcbi8qKioqKiovIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLm5tZCA9IChtb2R1bGUpID0+IHtcbi8qKioqKiovIFx0XHRcdG1vZHVsZS5wYXRocyA9IFtdO1xuLyoqKioqKi8gXHRcdFx0aWYgKCFtb2R1bGUuY2hpbGRyZW4pIG1vZHVsZS5jaGlsZHJlbiA9IFtdO1xuLyoqKioqKi8gXHRcdFx0cmV0dXJuIG1vZHVsZTtcbi8qKioqKiovIFx0XHR9O1xuLyoqKioqKi8gXHR9KSgpO1xuLyoqKioqKi8gXHRcbi8qKioqKiovIFx0Lyogd2VicGFjay9ydW50aW1lL3N0YXJ0dXAgZW50cnlwb2ludCAqL1xuLyoqKioqKi8gXHQoKCkgPT4ge1xuLyoqKioqKi8gXHRcdF9fd2VicGFja19yZXF1aXJlX18uWCA9IChyZXN1bHQsIGNodW5rSWRzLCBmbikgPT4ge1xuLyoqKioqKi8gXHRcdFx0Ly8gYXJndW1lbnRzOiBjaHVua0lkcywgbW9kdWxlSWQgYXJlIGRlcHJlY2F0ZWRcbi8qKioqKiovIFx0XHRcdHZhciBtb2R1bGVJZCA9IGNodW5rSWRzO1xuLyoqKioqKi8gXHRcdFx0aWYoIWZuKSBjaHVua0lkcyA9IHJlc3VsdCwgZm4gPSAoKSA9PiAoX193ZWJwYWNrX3JlcXVpcmVfXyhfX3dlYnBhY2tfcmVxdWlyZV9fLnMgPSBtb2R1bGVJZCkpO1xuLyoqKioqKi8gXHRcdFx0Y2h1bmtJZHMubWFwKF9fd2VicGFja19yZXF1aXJlX18uZSwgX193ZWJwYWNrX3JlcXVpcmVfXylcbi8qKioqKiovIFx0XHRcdHZhciByID0gZm4oKTtcbi8qKioqKiovIFx0XHRcdHJldHVybiByID09PSB1bmRlZmluZWQgPyByZXN1bHQgOiByO1xuLyoqKioqKi8gXHRcdH1cbi8qKioqKiovIFx0fSkoKTtcbi8qKioqKiovIFx0XG4vKioqKioqLyBcdC8qIHdlYnBhY2svcnVudGltZS9yZXF1aXJlIGNodW5rIGxvYWRpbmcgKi9cbi8qKioqKiovIFx0KCgpID0+IHtcbi8qKioqKiovIFx0XHQvLyBubyBiYXNlVVJJXG4vKioqKioqLyBcdFx0XG4vKioqKioqLyBcdFx0Ly8gb2JqZWN0IHRvIHN0b3JlIGxvYWRlZCBjaHVua3Ncbi8qKioqKiovIFx0XHQvLyBcIjFcIiBtZWFucyBcImxvYWRlZFwiLCBvdGhlcndpc2Ugbm90IGxvYWRlZCB5ZXRcbi8qKioqKiovIFx0XHR2YXIgaW5zdGFsbGVkQ2h1bmtzID0ge1xuLyoqKioqKi8gXHRcdFx0XCJ3ZWJwYWNrLXJ1bnRpbWVcIjogMVxuLyoqKioqKi8gXHRcdH07XG4vKioqKioqLyBcdFx0XG4vKioqKioqLyBcdFx0Ly8gbm8gb24gY2h1bmtzIGxvYWRlZFxuLyoqKioqKi8gXHRcdFxuLyoqKioqKi8gXHRcdHZhciBpbnN0YWxsQ2h1bmsgPSAoY2h1bmspID0+IHtcbi8qKioqKiovIFx0XHRcdHZhciBtb3JlTW9kdWxlcyA9IGNodW5rLm1vZHVsZXMsIGNodW5rSWRzID0gY2h1bmsuaWRzLCBydW50aW1lID0gY2h1bmsucnVudGltZTtcbi8qKioqKiovIFx0XHRcdGZvcih2YXIgbW9kdWxlSWQgaW4gbW9yZU1vZHVsZXMpIHtcbi8qKioqKiovIFx0XHRcdFx0aWYoX193ZWJwYWNrX3JlcXVpcmVfXy5vKG1vcmVNb2R1bGVzLCBtb2R1bGVJZCkpIHtcbi8qKioqKiovIFx0XHRcdFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLm1bbW9kdWxlSWRdID0gbW9yZU1vZHVsZXNbbW9kdWxlSWRdO1xuLyoqKioqKi8gXHRcdFx0XHR9XG4vKioqKioqLyBcdFx0XHR9XG4vKioqKioqLyBcdFx0XHRpZihydW50aW1lKSBydW50aW1lKF9fd2VicGFja19yZXF1aXJlX18pO1xuLyoqKioqKi8gXHRcdFx0Zm9yKHZhciBpID0gMDsgaSA8IGNodW5rSWRzLmxlbmd0aDsgaSsrKVxuLyoqKioqKi8gXHRcdFx0XHRpbnN0YWxsZWRDaHVua3NbY2h1bmtJZHNbaV1dID0gMTtcbi8qKioqKiovIFx0XHRcbi8qKioqKiovIFx0XHR9O1xuLyoqKioqKi8gXHRcdFxuLyoqKioqKi8gXHRcdC8vIHJlcXVpcmUoKSBjaHVuayBsb2FkaW5nIGZvciBqYXZhc2NyaXB0XG4vKioqKioqLyBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5mLnJlcXVpcmUgPSAoY2h1bmtJZCwgcHJvbWlzZXMpID0+IHtcbi8qKioqKiovIFx0XHRcdC8vIFwiMVwiIGlzIHRoZSBzaWduYWwgZm9yIFwiYWxyZWFkeSBsb2FkZWRcIlxuLyoqKioqKi8gXHRcdFx0aWYoIWluc3RhbGxlZENodW5rc1tjaHVua0lkXSkge1xuLyoqKioqKi8gXHRcdFx0XHRpZihcIndlYnBhY2stcnVudGltZVwiICE9IGNodW5rSWQpIHtcbi8qKioqKiovIFx0XHRcdFx0XHRpbnN0YWxsQ2h1bmsocmVxdWlyZShcIi4vXCIgKyBfX3dlYnBhY2tfcmVxdWlyZV9fLnUoY2h1bmtJZCkpKTtcbi8qKioqKiovIFx0XHRcdFx0fSBlbHNlIGluc3RhbGxlZENodW5rc1tjaHVua0lkXSA9IDE7XG4vKioqKioqLyBcdFx0XHR9XG4vKioqKioqLyBcdFx0fTtcbi8qKioqKiovIFx0XHRcbi8qKioqKiovIFx0XHRtb2R1bGUuZXhwb3J0cyA9IF9fd2VicGFja19yZXF1aXJlX187XG4vKioqKioqLyBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5DID0gaW5zdGFsbENodW5rO1xuLyoqKioqKi8gXHRcdFxuLyoqKioqKi8gXHRcdC8vIG5vIEhNUlxuLyoqKioqKi8gXHRcdFxuLyoqKioqKi8gXHRcdC8vIG5vIEhNUiBtYW5pZmVzdFxuLyoqKioqKi8gXHR9KSgpO1xuLyoqKioqKi8gXHRcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKioqKioqLyBcdFxuLyoqKioqKi8gXHRcbi8qKioqKiovIH0pKClcbiJdfQ== ; \ No newline at end of file diff --git a/frontend/.next/static/chunks/app/dashboard/page.js b/frontend/.next/static/chunks/app/dashboard/page.js index 4acb7a8..1729a90 100644 --- a/frontend/.next/static/chunks/app/dashboard/page.js +++ b/frontend/.next/static/chunks/app/dashboard/page.js @@ -15,7 +15,18 @@ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; -eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ DashboardPage)\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 next_link__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! next/link */ \"(app-pages-browser)/./node_modules/next/dist/client/app-dir/link.js\");\n/* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(next_link__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _components_ProtectedRoute__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/components/ProtectedRoute */ \"(app-pages-browser)/./components/ProtectedRoute.tsx\");\n/* harmony import */ var _contexts_AuthContext__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/contexts/AuthContext */ \"(app-pages-browser)/./contexts/AuthContext.tsx\");\n/* __next_internal_client_entry_do_not_use__ default auto */ \nvar _s = $RefreshSig$();\n\n\n\n\nfunction DashboardContent() {\n var _user_username_, _user_username;\n _s();\n const [activeTab, setActiveTab] = (0,react__WEBPACK_IMPORTED_MODULE_2__.useState)('overview');\n const { user, logout } = (0,_contexts_AuthContext__WEBPACK_IMPORTED_MODULE_4__.useAuth)();\n // Mock data\n const stats = {\n totalWords: 234,\n wordsToday: 12,\n streak: 7,\n accuracy: 85,\n todayReview: 23,\n completedToday: 15\n };\n const recentWords = [\n {\n id: 1,\n word: 'negotiate',\n translation: '協商',\n status: 'learned'\n },\n {\n id: 2,\n word: 'accomplish',\n translation: '完成',\n status: 'learning'\n },\n {\n id: 3,\n word: 'perspective',\n translation: '觀點',\n status: 'new'\n },\n {\n id: 4,\n word: 'substantial',\n translation: '大量的',\n status: 'learned'\n }\n ];\n const cardSets = [\n {\n id: 1,\n name: '美劇經典台詞',\n count: 45,\n progress: 60\n },\n {\n id: 2,\n name: '商務英文必備',\n count: 30,\n progress: 30\n },\n {\n id: 3,\n name: '日常對話',\n count: 25,\n progress: 80\n }\n ];\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"min-h-screen bg-gray-50\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"nav\", {\n className: \"bg-white shadow-sm border-b\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"max-w-7xl mx-auto px-4 sm:px-6 lg:px-8\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex justify-between h-16\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center space-x-8\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h1\", {\n className: \"text-2xl font-bold text-primary\",\n children: \"DramaLing\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 42,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"hidden md:flex space-x-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_link__WEBPACK_IMPORTED_MODULE_1___default()), {\n href: \"/dashboard\",\n className: \"text-gray-900 font-medium\",\n children: \"儀表板\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 44,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_link__WEBPACK_IMPORTED_MODULE_1___default()), {\n href: \"/flashcards\",\n className: \"text-gray-600 hover:text-gray-900\",\n children: \"詞卡\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 45,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_link__WEBPACK_IMPORTED_MODULE_1___default()), {\n href: \"/learn\",\n className: \"text-gray-600 hover:text-gray-900\",\n children: \"學習\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 46,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 43,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 41,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center space-x-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n className: \"p-2 text-gray-600 hover:text-gray-900\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n className: \"w-6 h-6\",\n fill: \"none\",\n stroke: \"currentColor\",\n viewBox: \"0 0 24 24\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n d: \"M15 17h5l-1.405-1.405A2.032 2.032 0 0118 14.158V11a6.002 6.002 0 00-4-5.659V5a2 2 0 10-4 0v.341C7.67 6.165 6 8.388 6 11v3.159c0 .538-.214 1.055-.595 1.436L4 17h5m6 0v1a3 3 0 11-6 0v-1m6 0H9\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 52,\n columnNumber: 19\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 51,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 50,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center space-x-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-8 h-8 bg-primary rounded-full flex items-center justify-center text-white font-semibold\",\n children: (user === null || user === void 0 ? void 0 : (_user_username = user.username) === null || _user_username === void 0 ? void 0 : (_user_username_ = _user_username[0]) === null || _user_username_ === void 0 ? void 0 : _user_username_.toUpperCase()) || 'U'\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 56,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-sm font-medium\",\n children: (user === null || user === void 0 ? void 0 : user.displayName) || (user === null || user === void 0 ? void 0 : user.username)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 59,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: logout,\n className: \"ml-4 text-sm text-gray-600 hover:text-gray-900\",\n children: \"登出\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 60,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 55,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 49,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 40,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 39,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 38,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-8\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-white rounded-xl shadow-sm p-6 mb-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h2\", {\n className: \"text-2xl font-bold text-gray-900 mb-2\",\n children: [\n \"歡迎回來,\",\n (user === null || user === void 0 ? void 0 : user.displayName) || (user === null || user === void 0 ? void 0 : user.username),\n \"! \\uD83C\\uDF1F\"\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 76,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-gray-600\",\n children: [\n \"今天有 \",\n stats.todayReview,\n \" 個單字等待複習,繼續加油!\"\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 77,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mt-4 flex gap-3\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_link__WEBPACK_IMPORTED_MODULE_1___default()), {\n href: \"/learn\",\n className: \"bg-primary text-white px-6 py-2 rounded-lg font-medium hover:bg-primary-hover transition-colors\",\n children: \"開始今日學習\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 79,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_link__WEBPACK_IMPORTED_MODULE_1___default()), {\n href: \"/generate\",\n className: \"border border-primary text-primary px-6 py-2 rounded-lg font-medium hover:bg-primary-light transition-colors\",\n children: \"AI 生成新詞卡\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 85,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 78,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 75,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-4 mb-8\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-white rounded-xl shadow-sm p-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center justify-between mb-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-gray-600 text-sm\",\n children: \"總學習單字\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 98,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n className: \"w-5 h-5 text-blue-500\",\n fill: \"none\",\n stroke: \"currentColor\",\n viewBox: \"0 0 24 24\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n d: \"M12 6.253v13m0-13C10.832 5.477 9.246 5 7.5 5S4.168 5.477 3 6.253v13C4.168 18.477 5.754 18 7.5 18s3.332.477 4.5 1.253m0-13C13.168 5.477 14.754 5 16.5 5c1.747 0 3.332.477 4.5 1.253v13C19.832 18.477 18.247 18 16.5 18c-1.746 0-3.332.477-4.5 1.253\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 100,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 99,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 97,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-3xl font-bold text-gray-900\",\n children: stats.totalWords\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 103,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm text-green-600 mt-1\",\n children: [\n \"+\",\n stats.wordsToday,\n \" 今日\"\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 104,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 96,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-white rounded-xl shadow-sm p-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center justify-between mb-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-gray-600 text-sm\",\n children: \"連續學習\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 109,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n className: \"w-5 h-5 text-orange-500\",\n fill: \"none\",\n stroke: \"currentColor\",\n viewBox: \"0 0 24 24\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n d: \"M17.657 18.657A8 8 0 016.343 7.343S7 9 9 10c0-2 .5-5 2.986-7C14 5 16.09 5.777 17.656 7.343A7.975 7.975 0 0120 13a7.975 7.975 0 01-2.343 5.657z\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 111,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 110,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 108,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-3xl font-bold text-gray-900\",\n children: [\n stats.streak,\n \" 天\"\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 114,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm text-orange-600 mt-1\",\n children: \"\\uD83D\\uDD25 保持良好!\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 115,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 107,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-white rounded-xl shadow-sm p-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center justify-between mb-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-gray-600 text-sm\",\n children: \"正確率\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 120,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n className: \"w-5 h-5 text-green-500\",\n fill: \"none\",\n stroke: \"currentColor\",\n viewBox: \"0 0 24 24\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n d: \"M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 122,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 121,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 119,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-3xl font-bold text-gray-900\",\n children: [\n stats.accuracy,\n \"%\"\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 125,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm text-gray-600 mt-1\",\n children: \"上周 82%\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 126,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 118,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-white rounded-xl shadow-sm p-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center justify-between mb-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-gray-600 text-sm\",\n children: \"今日進度\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 131,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n className: \"w-5 h-5 text-purple-500\",\n fill: \"none\",\n stroke: \"currentColor\",\n viewBox: \"0 0 24 24\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n d: \"M13 7h8m0 0v8m0-8l-8 8-4-4-6 6\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 133,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 132,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 130,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-3xl font-bold text-gray-900\",\n children: [\n stats.completedToday,\n \"/\",\n stats.todayReview\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 136,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full bg-gray-200 rounded-full h-2 mt-2\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-purple-500 h-2 rounded-full\",\n style: {\n width: \"\".concat(stats.completedToday / stats.todayReview * 100, \"%\")\n }\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 138,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 137,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 129,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 95,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-white rounded-xl shadow-sm\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"border-b border-gray-200\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"nav\", {\n className: \"-mb-px flex space-x-8 px-6\",\n \"aria-label\": \"Tabs\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>setActiveTab('overview'),\n className: \"py-4 px-1 border-b-2 font-medium text-sm \".concat(activeTab === 'overview' ? 'border-primary text-primary' : 'border-transparent text-gray-500 hover:text-gray-700 hover:border-gray-300'),\n children: \"最近學習\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 150,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>setActiveTab('sets'),\n className: \"py-4 px-1 border-b-2 font-medium text-sm \".concat(activeTab === 'sets' ? 'border-primary text-primary' : 'border-transparent text-gray-500 hover:text-gray-700 hover:border-gray-300'),\n children: \"我的卡組\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 160,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>setActiveTab('progress'),\n className: \"py-4 px-1 border-b-2 font-medium text-sm \".concat(activeTab === 'progress' ? 'border-primary text-primary' : 'border-transparent text-gray-500 hover:text-gray-700 hover:border-gray-300'),\n children: \"學習統計\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 170,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 149,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 148,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"p-6\",\n children: [\n activeTab === 'overview' && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h3\", {\n className: \"text-lg font-semibold mb-4\",\n children: \"最近學習的單字\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 186,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-y-3\",\n children: recentWords.map((word)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center justify-between p-4 border rounded-lg hover:bg-gray-50\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center space-x-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-2 h-2 rounded-full bg-green-500\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 191,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"font-semibold\",\n children: word.word\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 193,\n columnNumber: 27\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm text-gray-600\",\n children: word.translation\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 194,\n columnNumber: 27\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 192,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 190,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"px-3 py-1 rounded-full text-xs font-medium \".concat(word.status === 'learned' ? 'bg-green-100 text-green-800' : word.status === 'learning' ? 'bg-yellow-100 text-yellow-800' : 'bg-gray-100 text-gray-800'),\n children: word.status === 'learned' ? '已掌握' : word.status === 'learning' ? '學習中' : '新詞'\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 197,\n columnNumber: 23\n }, this)\n ]\n }, word.id, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 189,\n columnNumber: 21\n }, this))\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 187,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 185,\n columnNumber: 15\n }, this),\n activeTab === 'sets' && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h3\", {\n className: \"text-lg font-semibold mb-4\",\n children: \"我的卡組\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 213,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4\",\n children: cardSets.map((set)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"border rounded-lg p-4 hover:shadow-md transition-shadow\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h4\", {\n className: \"font-semibold mb-2\",\n children: set.name\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 217,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-sm text-gray-600 mb-3\",\n children: [\n set.count,\n \" 個單字\"\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 218,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full bg-gray-200 rounded-full h-2 mb-3\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-primary h-2 rounded-full\",\n style: {\n width: \"\".concat(set.progress, \"%\")\n }\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 220,\n columnNumber: 25\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 219,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_link__WEBPACK_IMPORTED_MODULE_1___default()), {\n href: \"/flashcards/\".concat(set.id),\n className: \"text-primary text-sm font-medium hover:text-primary-hover\",\n children: \"繼續學習 →\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 225,\n columnNumber: 23\n }, this)\n ]\n }, set.id, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 216,\n columnNumber: 21\n }, this))\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 214,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 212,\n columnNumber: 15\n }, this),\n activeTab === 'progress' && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h3\", {\n className: \"text-lg font-semibold mb-4\",\n children: \"學習統計\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 239,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-gray-50 rounded-lg p-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid grid-cols-2 md:grid-cols-4 gap-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm text-gray-600\",\n children: \"本周學習\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 243,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-2xl font-bold mt-1\",\n children: \"89 個\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 244,\n columnNumber: 23\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 242,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm text-gray-600\",\n children: \"本月學習\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 247,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-2xl font-bold mt-1\",\n children: \"312 個\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 248,\n columnNumber: 23\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 246,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm text-gray-600\",\n children: \"平均每日\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 251,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-2xl font-bold mt-1\",\n children: \"15 個\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 252,\n columnNumber: 23\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 250,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm text-gray-600\",\n children: \"最佳紀錄\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 255,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-2xl font-bold mt-1\",\n children: \"32 個\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 256,\n columnNumber: 23\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 254,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 241,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mt-6 pt-6 border-t\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm text-gray-600 mb-2\",\n children: \"每日學習趨勢(過去7天)\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 260,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-end space-x-2 h-20\",\n children: [\n 15,\n 20,\n 18,\n 25,\n 22,\n 30,\n 12\n ].map((value, index)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-primary rounded-t\",\n style: {\n height: \"\".concat(value / 30 * 100, \"%\")\n }\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 264,\n columnNumber: 27\n }, this)\n }, index, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 263,\n columnNumber: 25\n }, this))\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 261,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 259,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 240,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 238,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 183,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 147,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 73,\n columnNumber: 7\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 36,\n columnNumber: 5\n }, this);\n}\n_s(DashboardContent, \"3rpTT6MMy25vhIvfdWVywn2iwf0=\", false, function() {\n return [\n _contexts_AuthContext__WEBPACK_IMPORTED_MODULE_4__.useAuth\n ];\n});\n_c = DashboardContent;\nfunction DashboardPage() {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ProtectedRoute__WEBPACK_IMPORTED_MODULE_3__.ProtectedRoute, {\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(DashboardContent, {}, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 285,\n columnNumber: 7\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 284,\n columnNumber: 5\n }, this);\n}\n_c1 = DashboardPage;\nvar _c, _c1;\n$RefreshReg$(_c, \"DashboardContent\");\n$RefreshReg$(_c1, \"DashboardPage\");\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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL2FwcC9kYXNoYm9hcmQvcGFnZS50c3giLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQUU0QjtBQUNJO0FBQzRCO0FBQ1o7QUFFaEQsU0FBU0k7UUFpRFVDLGlCQUFBQTs7SUFoRGpCLE1BQU0sQ0FBQ0MsV0FBV0MsYUFBYSxHQUFHTiwrQ0FBUUEsQ0FBQztJQUMzQyxNQUFNLEVBQUVJLElBQUksRUFBRUcsTUFBTSxFQUFFLEdBQUdMLDhEQUFPQTtJQUVoQyxZQUFZO0lBQ1osTUFBTU0sUUFBUTtRQUNaQyxZQUFZO1FBQ1pDLFlBQVk7UUFDWkMsUUFBUTtRQUNSQyxVQUFVO1FBQ1ZDLGFBQWE7UUFDYkMsZ0JBQWdCO0lBQ2xCO0lBRUEsTUFBTUMsY0FBYztRQUNsQjtZQUFFQyxJQUFJO1lBQUdDLE1BQU07WUFBYUMsYUFBYTtZQUFNQyxRQUFRO1FBQVU7UUFDakU7WUFBRUgsSUFBSTtZQUFHQyxNQUFNO1lBQWNDLGFBQWE7WUFBTUMsUUFBUTtRQUFXO1FBQ25FO1lBQUVILElBQUk7WUFBR0MsTUFBTTtZQUFlQyxhQUFhO1lBQU1DLFFBQVE7UUFBTTtRQUMvRDtZQUFFSCxJQUFJO1lBQUdDLE1BQU07WUFBZUMsYUFBYTtZQUFPQyxRQUFRO1FBQVU7S0FDckU7SUFFRCxNQUFNQyxXQUFXO1FBQ2Y7WUFBRUosSUFBSTtZQUFHSyxNQUFNO1lBQVVDLE9BQU87WUFBSUMsVUFBVTtRQUFHO1FBQ2pEO1lBQUVQLElBQUk7WUFBR0ssTUFBTTtZQUFVQyxPQUFPO1lBQUlDLFVBQVU7UUFBRztRQUNqRDtZQUFFUCxJQUFJO1lBQUdLLE1BQU07WUFBUUMsT0FBTztZQUFJQyxVQUFVO1FBQUc7S0FDaEQ7SUFFRCxxQkFDRSw4REFBQ0M7UUFBSUMsV0FBVTs7MEJBRWIsOERBQUNDO2dCQUFJRCxXQUFVOzBCQUNiLDRFQUFDRDtvQkFBSUMsV0FBVTs4QkFDYiw0RUFBQ0Q7d0JBQUlDLFdBQVU7OzBDQUNiLDhEQUFDRDtnQ0FBSUMsV0FBVTs7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REFBQ0E7d0VBQUlDLFdBQVU7a0ZBQXdCOzs7Ozs7a0ZBQ3ZDLDhEQUFDRDt3RUFBSUMsV0FBVTtrRkFBMEI7Ozs7Ozs7Ozs7OzswRUFFM0MsOERBQUNEOztrRkFDQyw4REFBQ0E7d0VBQUlDLFdBQVU7a0ZBQXdCOzs7Ozs7a0ZBQ3ZDLDhEQUFDRDt3RUFBSUMsV0FBVTtrRkFBMEI7Ozs7Ozs7Ozs7Ozs7Ozs7OztrRUFHN0MsOERBQUNEO3dEQUFJQyxXQUFVOzswRUFDYiw4REFBQ0Q7Z0VBQUlDLFdBQVU7MEVBQTZCOzs7Ozs7MEVBQzVDLDhEQUFDRDtnRUFBSUMsV0FBVTswRUFDWjtvRUFBQztvRUFBSTtvRUFBSTtvRUFBSTtvRUFBSTtvRUFBSTtvRUFBSTtpRUFBRyxDQUFDeUIsR0FBRyxDQUFDLENBQUNHLE9BQU9DLHNCQUN4Qyw4REFBQzlCO3dFQUFnQkMsV0FBVTtrRkFDekIsNEVBQUNEOzRFQUNDQyxXQUFVOzRFQUNWcUIsT0FBTztnRkFBRVMsUUFBUSxHQUFzQixPQUFuQixRQUFTLEtBQU0sS0FBSTs0RUFBRzs7Ozs7O3VFQUhwQ0Q7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFpQmxDO0dBaFJTbkQ7O1FBRWtCRCwwREFBT0E7OztLQUZ6QkM7QUFrUk0sU0FBU3FEO0lBQ3RCLHFCQUNFLDhEQUFDdkQsc0VBQWNBO2tCQUNiLDRFQUFDRTs7Ozs7Ozs7OztBQUdQO01BTndCcUQiLCJzb3VyY2VzIjpbIi9Vc2Vycy9qZXR0Y2hlbmcxMDE4L2NvZGUvZHJhbWFsaW5nLXZvY2FiLWxlYXJuaW5nL2Zyb250ZW5kL2FwcC9kYXNoYm9hcmQvcGFnZS50c3giXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBjbGllbnQnXG5cbmltcG9ydCBMaW5rIGZyb20gJ25leHQvbGluaydcbmltcG9ydCB7IHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBQcm90ZWN0ZWRSb3V0ZSB9IGZyb20gJ0AvY29tcG9uZW50cy9Qcm90ZWN0ZWRSb3V0ZSdcbmltcG9ydCB7IHVzZUF1dGggfSBmcm9tICdAL2NvbnRleHRzL0F1dGhDb250ZXh0J1xuXG5mdW5jdGlvbiBEYXNoYm9hcmRDb250ZW50KCkge1xuICBjb25zdCBbYWN0aXZlVGFiLCBzZXRBY3RpdmVUYWJdID0gdXNlU3RhdGUoJ292ZXJ2aWV3JylcbiAgY29uc3QgeyB1c2VyLCBsb2dvdXQgfSA9IHVzZUF1dGgoKVxuXG4gIC8vIE1vY2sgZGF0YVxuICBjb25zdCBzdGF0cyA9IHtcbiAgICB0b3RhbFdvcmRzOiAyMzQsXG4gICAgd29yZHNUb2RheTogMTIsXG4gICAgc3RyZWFrOiA3LFxuICAgIGFjY3VyYWN5OiA4NSxcbiAgICB0b2RheVJldmlldzogMjMsXG4gICAgY29tcGxldGVkVG9kYXk6IDE1XG4gIH1cblxuICBjb25zdCByZWNlbnRXb3JkcyA9IFtcbiAgICB7IGlkOiAxLCB3b3JkOiAnbmVnb3RpYXRlJywgdHJhbnNsYXRpb246ICfljZTllYYnLCBzdGF0dXM6ICdsZWFybmVkJyB9LFxuICAgIHsgaWQ6IDIsIHdvcmQ6ICdhY2NvbXBsaXNoJywgdHJhbnNsYXRpb246ICflrozmiJAnLCBzdGF0dXM6ICdsZWFybmluZycgfSxcbiAgICB7IGlkOiAzLCB3b3JkOiAncGVyc3BlY3RpdmUnLCB0cmFuc2xhdGlvbjogJ+ingOm7nicsIHN0YXR1czogJ25ldycgfSxcbiAgICB7IGlkOiA0LCB3b3JkOiAnc3Vic3RhbnRpYWwnLCB0cmFuc2xhdGlvbjogJ+Wkp+mHj+eahCcsIHN0YXR1czogJ2xlYXJuZWQnIH0sXG4gIF1cblxuICBjb25zdCBjYXJkU2V0cyA9IFtcbiAgICB7IGlkOiAxLCBuYW1lOiAn576O5YqH57aT5YW45Y+w6KmeJywgY291bnQ6IDQ1LCBwcm9ncmVzczogNjAgfSxcbiAgICB7IGlkOiAyLCBuYW1lOiAn5ZWG5YuZ6Iux5paH5b+F5YKZJywgY291bnQ6IDMwLCBwcm9ncmVzczogMzAgfSxcbiAgICB7IGlkOiAzLCBuYW1lOiAn5pel5bi45bCN6KmxJywgY291bnQ6IDI1LCBwcm9ncmVzczogODAgfSxcbiAgXVxuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJtaW4taC1zY3JlZW4gYmctZ3JheS01MFwiPlxuICAgICAgey8qIE5hdmlnYXRpb24gKi99XG4gICAgICA8bmF2IGNsYXNzTmFtZT1cImJnLXdoaXRlIHNoYWRvdy1zbSBib3JkZXItYlwiPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1heC13LTd4bCBteC1hdXRvIHB4LTQgc206cHgtNiBsZzpweC04XCI+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGp1c3RpZnktYmV0d2VlbiBoLTE2XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIHNwYWNlLXgtOFwiPlxuICAgICAgICAgICAgICA8aDEgY2xhc3NOYW1lPVwidGV4dC0yeGwgZm9udC1ib2xkIHRleHQtcHJpbWFyeVwiPkRyYW1hTGluZzwvaDE+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaGlkZGVuIG1kOmZsZXggc3BhY2UteC02XCI+XG4gICAgICAgICAgICAgICAgPExpbmsgaHJlZj1cIi9kYXNoYm9hcmRcIiBjbGFzc05hbWU9XCJ0ZXh0LWdyYXktOTAwIGZvbnQtbWVkaXVtXCI+5YSA6KGo5p2/PC9MaW5rPlxuICAgICAgICAgICAgICAgIDxMaW5rIGhyZWY9XCIvZmxhc2hjYXJkc1wiIGNsYXNzTmFtZT1cInRleHQtZ3JheS02MDAgaG92ZXI6dGV4dC1ncmF5LTkwMFwiPuipnuWNoTwvTGluaz5cbiAgICAgICAgICAgICAgICA8TGluayBocmVmPVwiL2xlYXJuXCIgY2xhc3NOYW1lPVwidGV4dC1ncmF5LTYwMCBob3Zlcjp0ZXh0LWdyYXktOTAwXCI+5a2457+SPC9MaW5rPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBzcGFjZS14LTRcIj5cbiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzc05hbWU9XCJwLTIgdGV4dC1ncmF5LTYwMCBob3Zlcjp0ZXh0LWdyYXktOTAwXCI+XG4gICAgICAgICAgICAgICAgPHN2ZyBjbGFzc05hbWU9XCJ3LTYgaC02XCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCI+XG4gICAgICAgICAgICAgICAgICA8cGF0aCBzdHJva2VMaW5lY2FwPVwicm91bmRcIiBzdHJva2VMaW5lam9pbj1cInJvdW5kXCIgc3Ryb2tlV2lkdGg9ezJ9IGQ9XCJNMTUgMTdoNWwtMS40MDUtMS40MDVBMi4wMzIgMi4wMzIgMCAwMTE4IDE0LjE1OFYxMWE2LjAwMiA2LjAwMiAwIDAwLTQtNS42NTlWNWEyIDIgMCAxMC00IDB2LjM0MUM3LjY3IDYuMTY1IDYgOC4zODggNiAxMXYzLjE1OWMwIC41MzgtLjIxNCAxLjA1NS0uNTk1IDEuNDM2TDQgMTdoNW02IDB2MWEzIDMgMCAxMS02IDB2LTFtNiAwSDlcIiAvPlxuICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBzcGFjZS14LTJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctOCBoLTggYmctcHJpbWFyeSByb3VuZGVkLWZ1bGwgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgdGV4dC13aGl0ZSBmb250LXNlbWlib2xkXCI+XG4gICAgICAgICAgICAgICAgICB7dXNlcj8udXNlcm5hbWU/LlswXT8udG9VcHBlckNhc2UoKSB8fCAnVSd9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC1zbSBmb250LW1lZGl1bVwiPnt1c2VyPy5kaXNwbGF5TmFtZSB8fCB1c2VyPy51c2VybmFtZX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgb25DbGljaz17bG9nb3V0fVxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwibWwtNCB0ZXh0LXNtIHRleHQtZ3JheS02MDAgaG92ZXI6dGV4dC1ncmF5LTkwMFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAg55m75Ye6XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uYXY+XG5cbiAgICAgIHsvKiBNYWluIENvbnRlbnQgKi99XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1heC13LTd4bCBteC1hdXRvIHB4LTQgc206cHgtNiBsZzpweC04IHB5LThcIj5cbiAgICAgICAgey8qIFdlbGNvbWUgU2VjdGlvbiAqL31cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJiZy13aGl0ZSByb3VuZGVkLXhsIHNoYWRvdy1zbSBwLTYgbWItNlwiPlxuICAgICAgICAgIDxoMiBjbGFzc05hbWU9XCJ0ZXh0LTJ4bCBmb250LWJvbGQgdGV4dC1ncmF5LTkwMCBtYi0yXCI+5q2h6L+O5Zue5L6G77yMe3VzZXI/LmRpc3BsYXlOYW1lIHx8IHVzZXI/LnVzZXJuYW1lfSEg8J+MnzwvaDI+XG4gICAgICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC1ncmF5LTYwMFwiPuS7iuWkqeaciSB7c3RhdHMudG9kYXlSZXZpZXd9IOWAi+WWruWtl+etieW+heikh+e/ku+8jOe5vOe6jOWKoOayue+8gTwvcD5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm10LTQgZmxleCBnYXAtM1wiPlxuICAgICAgICAgICAgPExpbmtcbiAgICAgICAgICAgICAgaHJlZj1cIi9sZWFyblwiXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT1cImJnLXByaW1hcnkgdGV4dC13aGl0ZSBweC02IHB5LTIgcm91bmRlZC1sZyBmb250LW1lZGl1bSBob3ZlcjpiZy1wcmltYXJ5LWhvdmVyIHRyYW5zaXRpb24tY29sb3JzXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAg6ZaL5aeL5LuK5pel5a2457+SXG4gICAgICAgICAgICA8L0xpbms+XG4gICAgICAgICAgICA8TGlua1xuICAgICAgICAgICAgICBocmVmPVwiL2dlbmVyYXRlXCJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiYm9yZGVyIGJvcmRlci1wcmltYXJ5IHRleHQtcHJpbWFyeSBweC02IHB5LTIgcm91bmRlZC1sZyBmb250LW1lZGl1bSBob3ZlcjpiZy1wcmltYXJ5LWxpZ2h0IHRyYW5zaXRpb24tY29sb3JzXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgQUkg55Sf5oiQ5paw6Kme5Y2hXG4gICAgICAgICAgICA8L0xpbms+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIHsvKiBTdGF0cyBHcmlkICovfVxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImdyaWQgZ3JpZC1jb2xzLTEgbWQ6Z3JpZC1jb2xzLTIgbGc6Z3JpZC1jb2xzLTQgZ2FwLTQgbWItOFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmctd2hpdGUgcm91bmRlZC14bCBzaGFkb3ctc20gcC02XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBtYi0yXCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtZ3JheS02MDAgdGV4dC1zbVwiPue4veWtuOe/kuWWruWtlzwvc3Bhbj5cbiAgICAgICAgICAgICAgPHN2ZyBjbGFzc05hbWU9XCJ3LTUgaC01IHRleHQtYmx1ZS01MDBcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIj5cbiAgICAgICAgICAgICAgICA8cGF0aCBzdHJva2VMaW5lY2FwPVwicm91bmRcIiBzdHJva2VMaW5lam9pbj1cInJvdW5kXCIgc3Ryb2tlV2lkdGg9ezJ9IGQ9XCJNMTIgNi4yNTN2MTNtMC0xM0MxMC44MzIgNS40NzcgOS4yNDYgNSA3LjUgNVM0LjE2OCA1LjQ3NyAzIDYuMjUzdjEzQzQuMTY4IDE4LjQ3NyA1Ljc1NCAxOCA3LjUgMThzMy4zMzIuNDc3IDQuNSAxLjI1M20wLTEzQzEzLjE2OCA1LjQ3NyAxNC43NTQgNSAxNi41IDVjMS43NDcgMCAzLjMzMi40NzcgNC41IDEuMjUzdjEzQzE5LjgzMiAxOC40NzcgMTguMjQ3IDE4IDE2LjUgMThjLTEuNzQ2IDAtMy4zMzIuNDc3LTQuNSAxLjI1M1wiIC8+XG4gICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtM3hsIGZvbnQtYm9sZCB0ZXh0LWdyYXktOTAwXCI+e3N0YXRzLnRvdGFsV29yZHN9PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtc20gdGV4dC1ncmVlbi02MDAgbXQtMVwiPit7c3RhdHMud29yZHNUb2RheX0g5LuK5pelPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJnLXdoaXRlIHJvdW5kZWQteGwgc2hhZG93LXNtIHAtNlwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gbWItMlwiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LWdyYXktNjAwIHRleHQtc21cIj7pgKPnuozlrbjnv5I8L3NwYW4+XG4gICAgICAgICAgICAgIDxzdmcgY2xhc3NOYW1lPVwidy01IGgtNSB0ZXh0LW9yYW5nZS01MDBcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIj5cbiAgICAgICAgICAgICAgICA8cGF0aCBzdHJva2VMaW5lY2FwPVwicm91bmRcIiBzdHJva2VMaW5lam9pbj1cInJvdW5kXCIgc3Ryb2tlV2lkdGg9ezJ9IGQ9XCJNMTcuNjU3IDE4LjY1N0E4IDggMCAwMTYuMzQzIDcuMzQzUzcgOSA5IDEwYzAtMiAuNS01IDIuOTg2LTdDMTQgNSAxNi4wOSA1Ljc3NyAxNy42NTYgNy4zNDNBNy45NzUgNy45NzUgMCAwMTIwIDEzYTcuOTc1IDcuOTc1IDAgMDEtMi4zNDMgNS42NTd6XCIgLz5cbiAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC0zeGwgZm9udC1ib2xkIHRleHQtZ3JheS05MDBcIj57c3RhdHMuc3RyZWFrfSDlpKk8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1zbSB0ZXh0LW9yYW5nZS02MDAgbXQtMVwiPvCflKUg5L+d5oyB6Imv5aW977yBPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJnLXdoaXRlIHJvdW5kZWQteGwgc2hhZG93LXNtIHAtNlwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gbWItMlwiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LWdyYXktNjAwIHRleHQtc21cIj7mraPnorrnjoc8L3NwYW4+XG4gICAgICAgICAgICAgIDxzdmcgY2xhc3NOYW1lPVwidy01IGgtNSB0ZXh0LWdyZWVuLTUwMFwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiPlxuICAgICAgICAgICAgICAgIDxwYXRoIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZUxpbmVqb2luPVwicm91bmRcIiBzdHJva2VXaWR0aD17Mn0gZD1cIk05IDEybDIgMiA0LTRtNiAyYTkgOSAwIDExLTE4IDAgOSA5IDAgMDExOCAwelwiIC8+XG4gICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtM3hsIGZvbnQtYm9sZCB0ZXh0LWdyYXktOTAwXCI+e3N0YXRzLmFjY3VyYWN5fSU8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1zbSB0ZXh0LWdyYXktNjAwIG10LTFcIj7kuIrlkaggODIlPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJnLXdoaXRlIHJvdW5kZWQteGwgc2hhZG93LXNtIHAtNlwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gbWItMlwiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LWdyYXktNjAwIHRleHQtc21cIj7ku4rml6XpgLLluqY8L3NwYW4+XG4gICAgICAgICAgICAgIDxzdmcgY2xhc3NOYW1lPVwidy01IGgtNSB0ZXh0LXB1cnBsZS01MDBcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIj5cbiAgICAgICAgICAgICAgICA8cGF0aCBzdHJva2VMaW5lY2FwPVwicm91bmRcIiBzdHJva2VMaW5lam9pbj1cInJvdW5kXCIgc3Ryb2tlV2lkdGg9ezJ9IGQ9XCJNMTMgN2g4bTAgMHY4bTAtOGwtOCA4LTQtNC02IDZcIiAvPlxuICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LTN4bCBmb250LWJvbGQgdGV4dC1ncmF5LTkwMFwiPntzdGF0cy5jb21wbGV0ZWRUb2RheX0ve3N0YXRzLnRvZGF5UmV2aWV3fTwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LWZ1bGwgYmctZ3JheS0yMDAgcm91bmRlZC1mdWxsIGgtMiBtdC0yXCI+XG4gICAgICAgICAgICAgIDxkaXYgXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiYmctcHVycGxlLTUwMCBoLTIgcm91bmRlZC1mdWxsXCJcbiAgICAgICAgICAgICAgICBzdHlsZT17eyB3aWR0aDogYCR7KHN0YXRzLmNvbXBsZXRlZFRvZGF5IC8gc3RhdHMudG9kYXlSZXZpZXcpICogMTAwfSVgIH19XG4gICAgICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICB7LyogQ29udGVudCBUYWJzICovfVxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJnLXdoaXRlIHJvdW5kZWQteGwgc2hhZG93LXNtXCI+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJib3JkZXItYiBib3JkZXItZ3JheS0yMDBcIj5cbiAgICAgICAgICAgIDxuYXYgY2xhc3NOYW1lPVwiLW1iLXB4IGZsZXggc3BhY2UteC04IHB4LTZcIiBhcmlhLWxhYmVsPVwiVGFic1wiPlxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gc2V0QWN0aXZlVGFiKCdvdmVydmlldycpfVxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17YHB5LTQgcHgtMSBib3JkZXItYi0yIGZvbnQtbWVkaXVtIHRleHQtc20gJHtcbiAgICAgICAgICAgICAgICAgIGFjdGl2ZVRhYiA9PT0gJ292ZXJ2aWV3J1xuICAgICAgICAgICAgICAgICAgICA/ICdib3JkZXItcHJpbWFyeSB0ZXh0LXByaW1hcnknXG4gICAgICAgICAgICAgICAgICAgIDogJ2JvcmRlci10cmFuc3BhcmVudCB0ZXh0LWdyYXktNTAwIGhvdmVyOnRleHQtZ3JheS03MDAgaG92ZXI6Ym9yZGVyLWdyYXktMzAwJ1xuICAgICAgICAgICAgICAgIH1gfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAg5pyA6L+R5a2457+SXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gc2V0QWN0aXZlVGFiKCdzZXRzJyl9XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgcHktNCBweC0xIGJvcmRlci1iLTIgZm9udC1tZWRpdW0gdGV4dC1zbSAke1xuICAgICAgICAgICAgICAgICAgYWN0aXZlVGFiID09PSAnc2V0cydcbiAgICAgICAgICAgICAgICAgICAgPyAnYm9yZGVyLXByaW1hcnkgdGV4dC1wcmltYXJ5J1xuICAgICAgICAgICAgICAgICAgICA6ICdib3JkZXItdHJhbnNwYXJlbnQgdGV4dC1ncmF5LTUwMCBob3Zlcjp0ZXh0LWdyYXktNzAwIGhvdmVyOmJvcmRlci1ncmF5LTMwMCdcbiAgICAgICAgICAgICAgICB9YH1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIOaIkeeahOWNoee1hFxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldEFjdGl2ZVRhYigncHJvZ3Jlc3MnKX1cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2BweS00IHB4LTEgYm9yZGVyLWItMiBmb250LW1lZGl1bSB0ZXh0LXNtICR7XG4gICAgICAgICAgICAgICAgICBhY3RpdmVUYWIgPT09ICdwcm9ncmVzcydcbiAgICAgICAgICAgICAgICAgICAgPyAnYm9yZGVyLXByaW1hcnkgdGV4dC1wcmltYXJ5J1xuICAgICAgICAgICAgICAgICAgICA6ICdib3JkZXItdHJhbnNwYXJlbnQgdGV4dC1ncmF5LTUwMCBob3Zlcjp0ZXh0LWdyYXktNzAwIGhvdmVyOmJvcmRlci1ncmF5LTMwMCdcbiAgICAgICAgICAgICAgICB9YH1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIOWtuOe/kue1seioiFxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvbmF2PlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwLTZcIj5cbiAgICAgICAgICAgIHthY3RpdmVUYWIgPT09ICdvdmVydmlldycgJiYgKFxuICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgIDxoMyBjbGFzc05hbWU9XCJ0ZXh0LWxnIGZvbnQtc2VtaWJvbGQgbWItNFwiPuacgOi/keWtuOe/kueahOWWruWtlzwvaDM+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJzcGFjZS15LTNcIj5cbiAgICAgICAgICAgICAgICAgIHtyZWNlbnRXb3Jkcy5tYXAod29yZCA9PiAoXG4gICAgICAgICAgICAgICAgICAgIDxkaXYga2V5PXt3b3JkLmlkfSBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gcC00IGJvcmRlciByb3VuZGVkLWxnIGhvdmVyOmJnLWdyYXktNTBcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIHNwYWNlLXgtNFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LTIgaC0yIHJvdW5kZWQtZnVsbCBiZy1ncmVlbi01MDBcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZm9udC1zZW1pYm9sZFwiPnt3b3JkLndvcmR9PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1zbSB0ZXh0LWdyYXktNjAwXCI+e3dvcmQudHJhbnNsYXRpb259PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2BweC0zIHB5LTEgcm91bmRlZC1mdWxsIHRleHQteHMgZm9udC1tZWRpdW0gJHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdvcmQuc3RhdHVzID09PSAnbGVhcm5lZCcgPyAnYmctZ3JlZW4tMTAwIHRleHQtZ3JlZW4tODAwJyA6XG4gICAgICAgICAgICAgICAgICAgICAgICB3b3JkLnN0YXR1cyA9PT0gJ2xlYXJuaW5nJyA/ICdiZy15ZWxsb3ctMTAwIHRleHQteWVsbG93LTgwMCcgOlxuICAgICAgICAgICAgICAgICAgICAgICAgJ2JnLWdyYXktMTAwIHRleHQtZ3JheS04MDAnXG4gICAgICAgICAgICAgICAgICAgICAgfWB9PlxuICAgICAgICAgICAgICAgICAgICAgICAge3dvcmQuc3RhdHVzID09PSAnbGVhcm5lZCcgPyAn5bey5o6M5o+hJyA6IFxuICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmQuc3RhdHVzID09PSAnbGVhcm5pbmcnID8gJ+WtuOe/kuS4rScgOiAn5paw6KmeJ31cbiAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAge2FjdGl2ZVRhYiA9PT0gJ3NldHMnICYmIChcbiAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8aDMgY2xhc3NOYW1lPVwidGV4dC1sZyBmb250LXNlbWlib2xkIG1iLTRcIj7miJHnmoTljaHntYQ8L2gzPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZ3JpZCBncmlkLWNvbHMtMSBtZDpncmlkLWNvbHMtMiBsZzpncmlkLWNvbHMtMyBnYXAtNFwiPlxuICAgICAgICAgICAgICAgICAge2NhcmRTZXRzLm1hcChzZXQgPT4gKFxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGtleT17c2V0LmlkfSBjbGFzc05hbWU9XCJib3JkZXIgcm91bmRlZC1sZyBwLTQgaG92ZXI6c2hhZG93LW1kIHRyYW5zaXRpb24tc2hhZG93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGg0IGNsYXNzTmFtZT1cImZvbnQtc2VtaWJvbGQgbWItMlwiPntzZXQubmFtZX08L2g0PlxuICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQtc20gdGV4dC1ncmF5LTYwMCBtYi0zXCI+e3NldC5jb3VudH0g5YCL5Zau5a2XPC9wPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy1mdWxsIGJnLWdyYXktMjAwIHJvdW5kZWQtZnVsbCBoLTIgbWItM1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiYmctcHJpbWFyeSBoLTIgcm91bmRlZC1mdWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3sgd2lkdGg6IGAke3NldC5wcm9ncmVzc30lYCB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDxMaW5rXG4gICAgICAgICAgICAgICAgICAgICAgICBocmVmPXtgL2ZsYXNoY2FyZHMvJHtzZXQuaWR9YH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInRleHQtcHJpbWFyeSB0ZXh0LXNtIGZvbnQtbWVkaXVtIGhvdmVyOnRleHQtcHJpbWFyeS1ob3ZlclwiXG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAg57m857qM5a2457+SIOKGklxuICAgICAgICAgICAgICAgICAgICAgIDwvTGluaz5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICApfVxuXG4gICAgICAgICAgICB7YWN0aXZlVGFiID09PSAncHJvZ3Jlc3MnICYmIChcbiAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8aDMgY2xhc3NOYW1lPVwidGV4dC1sZyBmb250LXNlbWlib2xkIG1iLTRcIj7lrbjnv5LntbHoqIg8L2gzPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmctZ3JheS01MCByb3VuZGVkLWxnIHAtNlwiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJncmlkIGdyaWQtY29scy0yIG1kOmdyaWQtY29scy00IGdhcC02XCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LXNtIHRleHQtZ3JheS02MDBcIj7mnKzlkajlrbjnv5I8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtMnhsIGZvbnQtYm9sZCBtdC0xXCI+ODkg5YCLPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1zbSB0ZXh0LWdyYXktNjAwXCI+5pys5pyI5a2457+SPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LTJ4bCBmb250LWJvbGQgbXQtMVwiPjMxMiDlgIs8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LXNtIHRleHQtZ3JheS02MDBcIj7lubPlnYfmr4/ml6U8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtMnhsIGZvbnQtYm9sZCBtdC0xXCI+MTUg5YCLPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1zbSB0ZXh0LWdyYXktNjAwXCI+5pyA5L2z57SA6YyEPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LTJ4bCBmb250LWJvbGQgbXQtMVwiPjMyIOWAizwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtdC02IHB0LTYgYm9yZGVyLXRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LXNtIHRleHQtZ3JheS02MDAgbWItMlwiPuavj+aXpeWtuOe/kui2qOWLou+8iOmBjuWOuzflpKnvvIk8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWVuZCBzcGFjZS14LTIgaC0yMFwiPlxuICAgICAgICAgICAgICAgICAgICAgIHtbMTUsIDIwLCAxOCwgMjUsIDIyLCAzMCwgMTJdLm1hcCgodmFsdWUsIGluZGV4KSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGtleT17aW5kZXh9IGNsYXNzTmFtZT1cImZsZXgtMVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImJnLXByaW1hcnkgcm91bmRlZC10XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17eyBoZWlnaHQ6IGAkeyh2YWx1ZSAvIDMwKSAqIDEwMH0lYCB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICApfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICApXG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIERhc2hib2FyZFBhZ2UoKSB7XG4gIHJldHVybiAoXG4gICAgPFByb3RlY3RlZFJvdXRlPlxuICAgICAgPERhc2hib2FyZENvbnRlbnQgLz5cbiAgICA8L1Byb3RlY3RlZFJvdXRlPlxuICApXG59Il0sIm5hbWVzIjpbIkxpbmsiLCJ1c2VTdGF0ZSIsIlByb3RlY3RlZFJvdXRlIiwidXNlQXV0aCIsIkRhc2hib2FyZENvbnRlbnQiLCJ1c2VyIiwiYWN0aXZlVGFiIiwic2V0QWN0aXZlVGFiIiwibG9nb3V0Iiwic3RhdHMiLCJ0b3RhbFdvcmRzIiwid29yZHNUb2RheSIsInN0cmVhayIsImFjY3VyYWN5IiwidG9kYXlSZXZpZXciLCJjb21wbGV0ZWRUb2RheSIsInJlY2VudFdvcmRzIiwiaWQiLCJ3b3JkIiwidHJhbnNsYXRpb24iLCJzdGF0dXMiLCJjYXJkU2V0cyIsIm5hbWUiLCJjb3VudCIsInByb2dyZXNzIiwiZGl2IiwiY2xhc3NOYW1lIiwibmF2IiwiaDEiLCJocmVmIiwiYnV0dG9uIiwic3ZnIiwiZmlsbCIsInN0cm9rZSIsInZpZXdCb3giLCJwYXRoIiwic3Ryb2tlTGluZWNhcCIsInN0cm9rZUxpbmVqb2luIiwic3Ryb2tlV2lkdGgiLCJkIiwidXNlcm5hbWUiLCJ0b1VwcGVyQ2FzZSIsInNwYW4iLCJkaXNwbGF5TmFtZSIsIm9uQ2xpY2siLCJoMiIsInAiLCJzdHlsZSIsIndpZHRoIiwiYXJpYS1sYWJlbCIsImgzIiwibWFwIiwic2V0IiwiaDQiLCJ2YWx1ZSIsImluZGV4IiwiaGVpZ2h0IiwiRGFzaGJvYXJkUGFnZSJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./app/dashboard/page.tsx\n")); +eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ DashboardPage)\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 next_link__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! next/link */ \"(app-pages-browser)/./node_modules/next/dist/client/app-dir/link.js\");\n/* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(next_link__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _components_ProtectedRoute__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/components/ProtectedRoute */ \"(app-pages-browser)/./components/ProtectedRoute.tsx\");\n/* harmony import */ var _components_Navigation__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/components/Navigation */ \"(app-pages-browser)/./components/Navigation.tsx\");\n/* harmony import */ var _contexts_AuthContext__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/contexts/AuthContext */ \"(app-pages-browser)/./contexts/AuthContext.tsx\");\n/* __next_internal_client_entry_do_not_use__ default auto */ \nvar _s = $RefreshSig$();\n\n\n\n\n\nfunction DashboardContent() {\n _s();\n const [activeTab, setActiveTab] = (0,react__WEBPACK_IMPORTED_MODULE_2__.useState)('overview');\n const { user, logout } = (0,_contexts_AuthContext__WEBPACK_IMPORTED_MODULE_5__.useAuth)();\n // Mock data\n const stats = {\n totalWords: 234,\n wordsToday: 12,\n streak: 7,\n accuracy: 85,\n todayReview: 23,\n completedToday: 15\n };\n const recentWords = [\n {\n id: 1,\n word: 'negotiate',\n translation: '協商',\n status: 'learned'\n },\n {\n id: 2,\n word: 'accomplish',\n translation: '完成',\n status: 'learning'\n },\n {\n id: 3,\n word: 'perspective',\n translation: '觀點',\n status: 'new'\n },\n {\n id: 4,\n word: 'substantial',\n translation: '大量的',\n status: 'learned'\n }\n ];\n const cardSets = [\n {\n id: 1,\n name: '美劇經典台詞',\n count: 45,\n progress: 60\n },\n {\n id: 2,\n name: '商務英文必備',\n count: 30,\n progress: 30\n },\n {\n id: 3,\n name: '日常對話',\n count: 25,\n progress: 80\n }\n ];\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"min-h-screen bg-gray-50\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_Navigation__WEBPACK_IMPORTED_MODULE_4__.Navigation, {}, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 39,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-8\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-white rounded-xl shadow-sm p-6 mb-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h2\", {\n className: \"text-2xl font-bold text-gray-900 mb-2\",\n children: [\n \"歡迎回來,\",\n (user === null || user === void 0 ? void 0 : user.displayName) || (user === null || user === void 0 ? void 0 : user.username),\n \"! \\uD83C\\uDF1F\"\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 45,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-gray-600\",\n children: [\n \"今天有 \",\n stats.todayReview,\n \" 個單字等待複習,繼續加油!\"\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 46,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mt-4 flex gap-3\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_link__WEBPACK_IMPORTED_MODULE_1___default()), {\n href: \"/learn\",\n className: \"bg-primary text-white px-6 py-2 rounded-lg font-medium hover:bg-primary-hover transition-colors\",\n children: \"開始今日學習\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 48,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_link__WEBPACK_IMPORTED_MODULE_1___default()), {\n href: \"/generate\",\n className: \"border border-primary text-primary px-6 py-2 rounded-lg font-medium hover:bg-primary-light transition-colors\",\n children: \"AI 生成新詞卡\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 54,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 47,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 44,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-4 mb-8\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-white rounded-xl shadow-sm p-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center justify-between mb-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-gray-600 text-sm\",\n children: \"總學習單字\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 67,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n className: \"w-5 h-5 text-blue-500\",\n fill: \"none\",\n stroke: \"currentColor\",\n viewBox: \"0 0 24 24\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n d: \"M12 6.253v13m0-13C10.832 5.477 9.246 5 7.5 5S4.168 5.477 3 6.253v13C4.168 18.477 5.754 18 7.5 18s3.332.477 4.5 1.253m0-13C13.168 5.477 14.754 5 16.5 5c1.747 0 3.332.477 4.5 1.253v13C19.832 18.477 18.247 18 16.5 18c-1.746 0-3.332.477-4.5 1.253\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 69,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 68,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 66,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-3xl font-bold text-gray-900\",\n children: stats.totalWords\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 72,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm text-green-600 mt-1\",\n children: [\n \"+\",\n stats.wordsToday,\n \" 今日\"\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 73,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 65,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-white rounded-xl shadow-sm p-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center justify-between mb-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-gray-600 text-sm\",\n children: \"連續學習\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 78,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n className: \"w-5 h-5 text-orange-500\",\n fill: \"none\",\n stroke: \"currentColor\",\n viewBox: \"0 0 24 24\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n d: \"M17.657 18.657A8 8 0 016.343 7.343S7 9 9 10c0-2 .5-5 2.986-7C14 5 16.09 5.777 17.656 7.343A7.975 7.975 0 0120 13a7.975 7.975 0 01-2.343 5.657z\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 80,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 79,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 77,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-3xl font-bold text-gray-900\",\n children: [\n stats.streak,\n \" 天\"\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 83,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm text-orange-600 mt-1\",\n children: \"\\uD83D\\uDD25 保持良好!\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 84,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 76,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-white rounded-xl shadow-sm p-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center justify-between mb-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-gray-600 text-sm\",\n children: \"正確率\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 89,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n className: \"w-5 h-5 text-green-500\",\n fill: \"none\",\n stroke: \"currentColor\",\n viewBox: \"0 0 24 24\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n d: \"M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 91,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 90,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 88,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-3xl font-bold text-gray-900\",\n children: [\n stats.accuracy,\n \"%\"\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 94,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm text-gray-600 mt-1\",\n children: \"上周 82%\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 95,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 87,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-white rounded-xl shadow-sm p-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center justify-between mb-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-gray-600 text-sm\",\n children: \"今日進度\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 100,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n className: \"w-5 h-5 text-purple-500\",\n fill: \"none\",\n stroke: \"currentColor\",\n viewBox: \"0 0 24 24\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n d: \"M13 7h8m0 0v8m0-8l-8 8-4-4-6 6\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 102,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 101,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 99,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-3xl font-bold text-gray-900\",\n children: [\n stats.completedToday,\n \"/\",\n stats.todayReview\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 105,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full bg-gray-200 rounded-full h-2 mt-2\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-purple-500 h-2 rounded-full\",\n style: {\n width: \"\".concat(stats.completedToday / stats.todayReview * 100, \"%\")\n }\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 107,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 106,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 98,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 64,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-white rounded-xl shadow-sm\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"border-b border-gray-200\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"nav\", {\n className: \"-mb-px flex space-x-8 px-6\",\n \"aria-label\": \"Tabs\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>setActiveTab('overview'),\n className: \"py-4 px-1 border-b-2 font-medium text-sm \".concat(activeTab === 'overview' ? 'border-primary text-primary' : 'border-transparent text-gray-500 hover:text-gray-700 hover:border-gray-300'),\n children: \"最近學習\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 119,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>setActiveTab('sets'),\n className: \"py-4 px-1 border-b-2 font-medium text-sm \".concat(activeTab === 'sets' ? 'border-primary text-primary' : 'border-transparent text-gray-500 hover:text-gray-700 hover:border-gray-300'),\n children: \"我的卡組\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 129,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>setActiveTab('progress'),\n className: \"py-4 px-1 border-b-2 font-medium text-sm \".concat(activeTab === 'progress' ? 'border-primary text-primary' : 'border-transparent text-gray-500 hover:text-gray-700 hover:border-gray-300'),\n children: \"學習統計\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 139,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 118,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 117,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"p-6\",\n children: [\n activeTab === 'overview' && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h3\", {\n className: \"text-lg font-semibold mb-4\",\n children: \"最近學習的單字\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 155,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-y-3\",\n children: recentWords.map((word)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center justify-between p-4 border rounded-lg hover:bg-gray-50\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center space-x-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-2 h-2 rounded-full bg-green-500\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 160,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"font-semibold\",\n children: word.word\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 162,\n columnNumber: 27\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm text-gray-600\",\n children: word.translation\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 163,\n columnNumber: 27\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 161,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 159,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"px-3 py-1 rounded-full text-xs font-medium \".concat(word.status === 'learned' ? 'bg-green-100 text-green-800' : word.status === 'learning' ? 'bg-yellow-100 text-yellow-800' : 'bg-gray-100 text-gray-800'),\n children: word.status === 'learned' ? '已掌握' : word.status === 'learning' ? '學習中' : '新詞'\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 166,\n columnNumber: 23\n }, this)\n ]\n }, word.id, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 158,\n columnNumber: 21\n }, this))\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 156,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 154,\n columnNumber: 15\n }, this),\n activeTab === 'sets' && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h3\", {\n className: \"text-lg font-semibold mb-4\",\n children: \"我的卡組\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 182,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4\",\n children: cardSets.map((set)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"border rounded-lg p-4 hover:shadow-md transition-shadow\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h4\", {\n className: \"font-semibold mb-2\",\n children: set.name\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 186,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-sm text-gray-600 mb-3\",\n children: [\n set.count,\n \" 個單字\"\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 187,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full bg-gray-200 rounded-full h-2 mb-3\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-primary h-2 rounded-full\",\n style: {\n width: \"\".concat(set.progress, \"%\")\n }\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 189,\n columnNumber: 25\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 188,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_link__WEBPACK_IMPORTED_MODULE_1___default()), {\n href: \"/flashcards/\".concat(set.id),\n className: \"text-primary text-sm font-medium hover:text-primary-hover\",\n children: \"繼續學習 →\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 194,\n columnNumber: 23\n }, this)\n ]\n }, set.id, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 185,\n columnNumber: 21\n }, this))\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 183,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 181,\n columnNumber: 15\n }, this),\n activeTab === 'progress' && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h3\", {\n className: \"text-lg font-semibold mb-4\",\n children: \"學習統計\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 208,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-gray-50 rounded-lg p-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid grid-cols-2 md:grid-cols-4 gap-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm text-gray-600\",\n children: \"本周學習\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 212,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-2xl font-bold mt-1\",\n children: \"89 個\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 213,\n columnNumber: 23\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 211,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm text-gray-600\",\n children: \"本月學習\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 216,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-2xl font-bold mt-1\",\n children: \"312 個\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 217,\n columnNumber: 23\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 215,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm text-gray-600\",\n children: \"平均每日\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 220,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-2xl font-bold mt-1\",\n children: \"15 個\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 221,\n columnNumber: 23\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 219,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm text-gray-600\",\n children: \"最佳紀錄\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 224,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-2xl font-bold mt-1\",\n children: \"32 個\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 225,\n columnNumber: 23\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 223,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 210,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mt-6 pt-6 border-t\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm text-gray-600 mb-2\",\n children: \"每日學習趨勢(過去7天)\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 229,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-end space-x-2 h-20\",\n children: [\n 15,\n 20,\n 18,\n 25,\n 22,\n 30,\n 12\n ].map((value, index)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-primary rounded-t\",\n style: {\n height: \"\".concat(value / 30 * 100, \"%\")\n }\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 233,\n columnNumber: 27\n }, this)\n }, index, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 232,\n columnNumber: 25\n }, this))\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 230,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 228,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 209,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 207,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 152,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 116,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 42,\n columnNumber: 7\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 37,\n columnNumber: 5\n }, this);\n}\n_s(DashboardContent, \"3rpTT6MMy25vhIvfdWVywn2iwf0=\", false, function() {\n return [\n _contexts_AuthContext__WEBPACK_IMPORTED_MODULE_5__.useAuth\n ];\n});\n_c = DashboardContent;\nfunction DashboardPage() {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ProtectedRoute__WEBPACK_IMPORTED_MODULE_3__.ProtectedRoute, {\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(DashboardContent, {}, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 254,\n columnNumber: 7\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 253,\n columnNumber: 5\n }, this);\n}\n_c1 = DashboardPage;\nvar _c, _c1;\n$RefreshReg$(_c, \"DashboardContent\");\n$RefreshReg$(_c1, \"DashboardPage\");\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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL2FwcC9kYXNoYm9hcmQvcGFnZS50c3giLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUFFNEI7QUFDSTtBQUM0QjtBQUNSO0FBQ0o7QUFFaEQsU0FBU0s7O0lBQ1AsTUFBTSxDQUFDQyxXQUFXQyxhQUFhLEdBQUdOLCtDQUFRQSxDQUFDO0lBQzNDLE1BQU0sRUFBRU8sSUFBSSxFQUFFQyxNQUFNLEVBQUUsR0FBR0wsOERBQU9BO0lBRWhDLFlBQVk7SUFDWixNQUFNTSxRQUFRO1FBQ1pDLFlBQVk7UUFDWkMsWUFBWTtRQUNaQyxRQUFRO1FBQ1JDLFVBQVU7UUFDVkMsYUFBYTtRQUNiQyxnQkFBZ0I7SUFDbEI7SUFFQSxNQUFNQyxjQUFjO1FBQ2xCO1lBQUVDLElBQUk7WUFBR0MsTUFBTTtZQUFhQyxhQUFhO1lBQU1DLFFBQVE7UUFBVTtRQUNqRTtZQUFFSCxJQUFJO1lBQUdDLE1BQU07WUFBY0MsYUFBYTtZQUFNQyxRQUFRO1FBQVc7UUFDbkU7WUFBRUgsSUFBSTtZQUFHQyxNQUFNO1lBQWVDLGFBQWE7WUFBTUMsUUFBUTtRQUFNO1FBQy9EO1lBQUVILElBQUk7WUFBR0MsTUFBTTtZQUFlQyxhQUFhO1lBQU9DLFFBQVE7UUFBVTtLQUNyRTtJQUVELE1BQU1DLFdBQVc7UUFDZjtZQUFFSixJQUFJO1lBQUdLLE1BQU07WUFBVUMsT0FBTztZQUFJQyxVQUFVO1FBQUc7UUFDakQ7WUFBRVAsSUFBSTtZQUFHSyxNQUFNO1lBQVVDLE9BQU87WUFBSUMsVUFBVTtRQUFHO1FBQ2pEO1lBQUVQLElBQUk7WUFBR0ssTUFBTTtZQUFRQyxPQUFPO1lBQUlDLFVBQVU7UUFBRztLQUNoRDtJQUVELHFCQUNFLDhEQUFDQztRQUFJQyxXQUFVOzswQkFFYiw4REFBQ3hCLDhEQUFVQTs7Ozs7MEJBR1gsOERBQUN1QjtnQkFBSUMsV0FBVTs7a0NBRWIsOERBQUNEO3dCQUFJQyxXQUFVOzswQ0FDYiw4REFBQ0M7Z0NBQUdELFdBQVU7O29DQUF3Qztv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REFBQ0E7d0VBQUlDLFdBQVU7a0ZBQXdCOzs7Ozs7a0ZBQ3ZDLDhEQUFDRDt3RUFBSUMsV0FBVTtrRkFBMEI7Ozs7Ozs7Ozs7OzswRUFFM0MsOERBQUNEOztrRkFDQyw4REFBQ0E7d0VBQUlDLFdBQVU7a0ZBQXdCOzs7Ozs7a0ZBQ3ZDLDhEQUFDRDt3RUFBSUMsV0FBVTtrRkFBMEI7Ozs7Ozs7Ozs7Ozs7Ozs7OztrRUFHN0MsOERBQUNEO3dEQUFJQyxXQUFVOzswRUFDYiw4REFBQ0Q7Z0VBQUlDLFdBQVU7MEVBQTZCOzs7Ozs7MEVBQzVDLDhEQUFDRDtnRUFBSUMsV0FBVTswRUFDWjtvRUFBQztvRUFBSTtvRUFBSTtvRUFBSTtvRUFBSTtvRUFBSTtvRUFBSTtpRUFBRyxDQUFDdUIsR0FBRyxDQUFDLENBQUNHLE9BQU9DLHNCQUN4Qyw4REFBQzVCO3dFQUFnQkMsV0FBVTtrRkFDekIsNEVBQUNEOzRFQUNDQyxXQUFVOzRFQUNWZ0IsT0FBTztnRkFBRVksUUFBUSxHQUFzQixPQUFuQixRQUFTLEtBQU0sS0FBSTs0RUFBRzs7Ozs7O3VFQUhwQ0Q7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFpQmxDO0dBaFBTakQ7O1FBRWtCRCwwREFBT0E7OztLQUZ6QkM7QUFrUE0sU0FBU21EO0lBQ3RCLHFCQUNFLDhEQUFDdEQsc0VBQWNBO2tCQUNiLDRFQUFDRzs7Ozs7Ozs7OztBQUdQO01BTndCbUQiLCJzb3VyY2VzIjpbIi9Vc2Vycy9qZXR0Y2hlbmcxMDE4L2NvZGUvZHJhbWFsaW5nLXZvY2FiLWxlYXJuaW5nL2Zyb250ZW5kL2FwcC9kYXNoYm9hcmQvcGFnZS50c3giXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBjbGllbnQnXG5cbmltcG9ydCBMaW5rIGZyb20gJ25leHQvbGluaydcbmltcG9ydCB7IHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBQcm90ZWN0ZWRSb3V0ZSB9IGZyb20gJ0AvY29tcG9uZW50cy9Qcm90ZWN0ZWRSb3V0ZSdcbmltcG9ydCB7IE5hdmlnYXRpb24gfSBmcm9tICdAL2NvbXBvbmVudHMvTmF2aWdhdGlvbidcbmltcG9ydCB7IHVzZUF1dGggfSBmcm9tICdAL2NvbnRleHRzL0F1dGhDb250ZXh0J1xuXG5mdW5jdGlvbiBEYXNoYm9hcmRDb250ZW50KCkge1xuICBjb25zdCBbYWN0aXZlVGFiLCBzZXRBY3RpdmVUYWJdID0gdXNlU3RhdGUoJ292ZXJ2aWV3JylcbiAgY29uc3QgeyB1c2VyLCBsb2dvdXQgfSA9IHVzZUF1dGgoKVxuXG4gIC8vIE1vY2sgZGF0YVxuICBjb25zdCBzdGF0cyA9IHtcbiAgICB0b3RhbFdvcmRzOiAyMzQsXG4gICAgd29yZHNUb2RheTogMTIsXG4gICAgc3RyZWFrOiA3LFxuICAgIGFjY3VyYWN5OiA4NSxcbiAgICB0b2RheVJldmlldzogMjMsXG4gICAgY29tcGxldGVkVG9kYXk6IDE1XG4gIH1cblxuICBjb25zdCByZWNlbnRXb3JkcyA9IFtcbiAgICB7IGlkOiAxLCB3b3JkOiAnbmVnb3RpYXRlJywgdHJhbnNsYXRpb246ICfljZTllYYnLCBzdGF0dXM6ICdsZWFybmVkJyB9LFxuICAgIHsgaWQ6IDIsIHdvcmQ6ICdhY2NvbXBsaXNoJywgdHJhbnNsYXRpb246ICflrozmiJAnLCBzdGF0dXM6ICdsZWFybmluZycgfSxcbiAgICB7IGlkOiAzLCB3b3JkOiAncGVyc3BlY3RpdmUnLCB0cmFuc2xhdGlvbjogJ+ingOm7nicsIHN0YXR1czogJ25ldycgfSxcbiAgICB7IGlkOiA0LCB3b3JkOiAnc3Vic3RhbnRpYWwnLCB0cmFuc2xhdGlvbjogJ+Wkp+mHj+eahCcsIHN0YXR1czogJ2xlYXJuZWQnIH0sXG4gIF1cblxuICBjb25zdCBjYXJkU2V0cyA9IFtcbiAgICB7IGlkOiAxLCBuYW1lOiAn576O5YqH57aT5YW45Y+w6KmeJywgY291bnQ6IDQ1LCBwcm9ncmVzczogNjAgfSxcbiAgICB7IGlkOiAyLCBuYW1lOiAn5ZWG5YuZ6Iux5paH5b+F5YKZJywgY291bnQ6IDMwLCBwcm9ncmVzczogMzAgfSxcbiAgICB7IGlkOiAzLCBuYW1lOiAn5pel5bi45bCN6KmxJywgY291bnQ6IDI1LCBwcm9ncmVzczogODAgfSxcbiAgXVxuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJtaW4taC1zY3JlZW4gYmctZ3JheS01MFwiPlxuICAgICAgey8qIE5hdmlnYXRpb24gKi99XG4gICAgICA8TmF2aWdhdGlvbiAvPlxuXG4gICAgICB7LyogTWFpbiBDb250ZW50ICovfVxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJtYXgtdy03eGwgbXgtYXV0byBweC00IHNtOnB4LTYgbGc6cHgtOCBweS04XCI+XG4gICAgICAgIHsvKiBXZWxjb21lIFNlY3Rpb24gKi99XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmctd2hpdGUgcm91bmRlZC14bCBzaGFkb3ctc20gcC02IG1iLTZcIj5cbiAgICAgICAgICA8aDIgY2xhc3NOYW1lPVwidGV4dC0yeGwgZm9udC1ib2xkIHRleHQtZ3JheS05MDAgbWItMlwiPuatoei/juWbnuS+hu+8jHt1c2VyPy5kaXNwbGF5TmFtZSB8fCB1c2VyPy51c2VybmFtZX0hIPCfjJ88L2gyPlxuICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQtZ3JheS02MDBcIj7ku4rlpKnmnIkge3N0YXRzLnRvZGF5UmV2aWV3fSDlgIvllq7lrZfnrYnlvoXopIfnv5LvvIznubznuozliqDmsrnvvIE8L3A+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtdC00IGZsZXggZ2FwLTNcIj5cbiAgICAgICAgICAgIDxMaW5rXG4gICAgICAgICAgICAgIGhyZWY9XCIvbGVhcm5cIlxuICAgICAgICAgICAgICBjbGFzc05hbWU9XCJiZy1wcmltYXJ5IHRleHQtd2hpdGUgcHgtNiBweS0yIHJvdW5kZWQtbGcgZm9udC1tZWRpdW0gaG92ZXI6YmctcHJpbWFyeS1ob3ZlciB0cmFuc2l0aW9uLWNvbG9yc1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIOmWi+Wni+S7iuaXpeWtuOe/klxuICAgICAgICAgICAgPC9MaW5rPlxuICAgICAgICAgICAgPExpbmtcbiAgICAgICAgICAgICAgaHJlZj1cIi9nZW5lcmF0ZVwiXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT1cImJvcmRlciBib3JkZXItcHJpbWFyeSB0ZXh0LXByaW1hcnkgcHgtNiBweS0yIHJvdW5kZWQtbGcgZm9udC1tZWRpdW0gaG92ZXI6YmctcHJpbWFyeS1saWdodCB0cmFuc2l0aW9uLWNvbG9yc1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIEFJIOeUn+aIkOaWsOipnuWNoVxuICAgICAgICAgICAgPC9MaW5rPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICB7LyogU3RhdHMgR3JpZCAqL31cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJncmlkIGdyaWQtY29scy0xIG1kOmdyaWQtY29scy0yIGxnOmdyaWQtY29scy00IGdhcC00IG1iLThcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJnLXdoaXRlIHJvdW5kZWQteGwgc2hhZG93LXNtIHAtNlwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gbWItMlwiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LWdyYXktNjAwIHRleHQtc21cIj7nuL3lrbjnv5Lllq7lrZc8L3NwYW4+XG4gICAgICAgICAgICAgIDxzdmcgY2xhc3NOYW1lPVwidy01IGgtNSB0ZXh0LWJsdWUtNTAwXCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCI+XG4gICAgICAgICAgICAgICAgPHBhdGggc3Ryb2tlTGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlTGluZWpvaW49XCJyb3VuZFwiIHN0cm9rZVdpZHRoPXsyfSBkPVwiTTEyIDYuMjUzdjEzbTAtMTNDMTAuODMyIDUuNDc3IDkuMjQ2IDUgNy41IDVTNC4xNjggNS40NzcgMyA2LjI1M3YxM0M0LjE2OCAxOC40NzcgNS43NTQgMTggNy41IDE4czMuMzMyLjQ3NyA0LjUgMS4yNTNtMC0xM0MxMy4xNjggNS40NzcgMTQuNzU0IDUgMTYuNSA1YzEuNzQ3IDAgMy4zMzIuNDc3IDQuNSAxLjI1M3YxM0MxOS44MzIgMTguNDc3IDE4LjI0NyAxOCAxNi41IDE4Yy0xLjc0NiAwLTMuMzMyLjQ3Ny00LjUgMS4yNTNcIiAvPlxuICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LTN4bCBmb250LWJvbGQgdGV4dC1ncmF5LTkwMFwiPntzdGF0cy50b3RhbFdvcmRzfTwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LXNtIHRleHQtZ3JlZW4tNjAwIG10LTFcIj4re3N0YXRzLndvcmRzVG9kYXl9IOS7iuaXpTwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJiZy13aGl0ZSByb3VuZGVkLXhsIHNoYWRvdy1zbSBwLTZcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIG1iLTJcIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC1ncmF5LTYwMCB0ZXh0LXNtXCI+6YCj57qM5a2457+SPC9zcGFuPlxuICAgICAgICAgICAgICA8c3ZnIGNsYXNzTmFtZT1cInctNSBoLTUgdGV4dC1vcmFuZ2UtNTAwXCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCI+XG4gICAgICAgICAgICAgICAgPHBhdGggc3Ryb2tlTGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlTGluZWpvaW49XCJyb3VuZFwiIHN0cm9rZVdpZHRoPXsyfSBkPVwiTTE3LjY1NyAxOC42NTdBOCA4IDAgMDE2LjM0MyA3LjM0M1M3IDkgOSAxMGMwLTIgLjUtNSAyLjk4Ni03QzE0IDUgMTYuMDkgNS43NzcgMTcuNjU2IDcuMzQzQTcuOTc1IDcuOTc1IDAgMDEyMCAxM2E3Ljk3NSA3Ljk3NSAwIDAxLTIuMzQzIDUuNjU3elwiIC8+XG4gICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtM3hsIGZvbnQtYm9sZCB0ZXh0LWdyYXktOTAwXCI+e3N0YXRzLnN0cmVha30g5aSpPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtc20gdGV4dC1vcmFuZ2UtNjAwIG10LTFcIj7wn5SlIOS/neaMgeiJr+Wlve+8gTwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJiZy13aGl0ZSByb3VuZGVkLXhsIHNoYWRvdy1zbSBwLTZcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIG1iLTJcIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC1ncmF5LTYwMCB0ZXh0LXNtXCI+5q2j56K6546HPC9zcGFuPlxuICAgICAgICAgICAgICA8c3ZnIGNsYXNzTmFtZT1cInctNSBoLTUgdGV4dC1ncmVlbi01MDBcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIj5cbiAgICAgICAgICAgICAgICA8cGF0aCBzdHJva2VMaW5lY2FwPVwicm91bmRcIiBzdHJva2VMaW5lam9pbj1cInJvdW5kXCIgc3Ryb2tlV2lkdGg9ezJ9IGQ9XCJNOSAxMmwyIDIgNC00bTYgMmE5IDkgMCAxMS0xOCAwIDkgOSAwIDAxMTggMHpcIiAvPlxuICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LTN4bCBmb250LWJvbGQgdGV4dC1ncmF5LTkwMFwiPntzdGF0cy5hY2N1cmFjeX0lPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtc20gdGV4dC1ncmF5LTYwMCBtdC0xXCI+5LiK5ZGoIDgyJTwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJiZy13aGl0ZSByb3VuZGVkLXhsIHNoYWRvdy1zbSBwLTZcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIG1iLTJcIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC1ncmF5LTYwMCB0ZXh0LXNtXCI+5LuK5pel6YCy5bqmPC9zcGFuPlxuICAgICAgICAgICAgICA8c3ZnIGNsYXNzTmFtZT1cInctNSBoLTUgdGV4dC1wdXJwbGUtNTAwXCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCI+XG4gICAgICAgICAgICAgICAgPHBhdGggc3Ryb2tlTGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlTGluZWpvaW49XCJyb3VuZFwiIHN0cm9rZVdpZHRoPXsyfSBkPVwiTTEzIDdoOG0wIDB2OG0wLThsLTggOC00LTQtNiA2XCIgLz5cbiAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC0zeGwgZm9udC1ib2xkIHRleHQtZ3JheS05MDBcIj57c3RhdHMuY29tcGxldGVkVG9kYXl9L3tzdGF0cy50b2RheVJldmlld308L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy1mdWxsIGJnLWdyYXktMjAwIHJvdW5kZWQtZnVsbCBoLTIgbXQtMlwiPlxuICAgICAgICAgICAgICA8ZGl2IFxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImJnLXB1cnBsZS01MDAgaC0yIHJvdW5kZWQtZnVsbFwiXG4gICAgICAgICAgICAgICAgc3R5bGU9e3sgd2lkdGg6IGAkeyhzdGF0cy5jb21wbGV0ZWRUb2RheSAvIHN0YXRzLnRvZGF5UmV2aWV3KSAqIDEwMH0lYCB9fVxuICAgICAgICAgICAgICA+PC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgey8qIENvbnRlbnQgVGFicyAqL31cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJiZy13aGl0ZSByb3VuZGVkLXhsIHNoYWRvdy1zbVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYm9yZGVyLWIgYm9yZGVyLWdyYXktMjAwXCI+XG4gICAgICAgICAgICA8bmF2IGNsYXNzTmFtZT1cIi1tYi1weCBmbGV4IHNwYWNlLXgtOCBweC02XCIgYXJpYS1sYWJlbD1cIlRhYnNcIj5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldEFjdGl2ZVRhYignb3ZlcnZpZXcnKX1cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2BweS00IHB4LTEgYm9yZGVyLWItMiBmb250LW1lZGl1bSB0ZXh0LXNtICR7XG4gICAgICAgICAgICAgICAgICBhY3RpdmVUYWIgPT09ICdvdmVydmlldydcbiAgICAgICAgICAgICAgICAgICAgPyAnYm9yZGVyLXByaW1hcnkgdGV4dC1wcmltYXJ5J1xuICAgICAgICAgICAgICAgICAgICA6ICdib3JkZXItdHJhbnNwYXJlbnQgdGV4dC1ncmF5LTUwMCBob3Zlcjp0ZXh0LWdyYXktNzAwIGhvdmVyOmJvcmRlci1ncmF5LTMwMCdcbiAgICAgICAgICAgICAgICB9YH1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIOacgOi/keWtuOe/klxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldEFjdGl2ZVRhYignc2V0cycpfVxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17YHB5LTQgcHgtMSBib3JkZXItYi0yIGZvbnQtbWVkaXVtIHRleHQtc20gJHtcbiAgICAgICAgICAgICAgICAgIGFjdGl2ZVRhYiA9PT0gJ3NldHMnXG4gICAgICAgICAgICAgICAgICAgID8gJ2JvcmRlci1wcmltYXJ5IHRleHQtcHJpbWFyeSdcbiAgICAgICAgICAgICAgICAgICAgOiAnYm9yZGVyLXRyYW5zcGFyZW50IHRleHQtZ3JheS01MDAgaG92ZXI6dGV4dC1ncmF5LTcwMCBob3Zlcjpib3JkZXItZ3JheS0zMDAnXG4gICAgICAgICAgICAgICAgfWB9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICDmiJHnmoTljaHntYRcbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRBY3RpdmVUYWIoJ3Byb2dyZXNzJyl9XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgcHktNCBweC0xIGJvcmRlci1iLTIgZm9udC1tZWRpdW0gdGV4dC1zbSAke1xuICAgICAgICAgICAgICAgICAgYWN0aXZlVGFiID09PSAncHJvZ3Jlc3MnXG4gICAgICAgICAgICAgICAgICAgID8gJ2JvcmRlci1wcmltYXJ5IHRleHQtcHJpbWFyeSdcbiAgICAgICAgICAgICAgICAgICAgOiAnYm9yZGVyLXRyYW5zcGFyZW50IHRleHQtZ3JheS01MDAgaG92ZXI6dGV4dC1ncmF5LTcwMCBob3Zlcjpib3JkZXItZ3JheS0zMDAnXG4gICAgICAgICAgICAgICAgfWB9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICDlrbjnv5LntbHoqIhcbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L25hdj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicC02XCI+XG4gICAgICAgICAgICB7YWN0aXZlVGFiID09PSAnb3ZlcnZpZXcnICYmIChcbiAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8aDMgY2xhc3NOYW1lPVwidGV4dC1sZyBmb250LXNlbWlib2xkIG1iLTRcIj7mnIDov5Hlrbjnv5LnmoTllq7lrZc8L2gzPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwic3BhY2UteS0zXCI+XG4gICAgICAgICAgICAgICAgICB7cmVjZW50V29yZHMubWFwKHdvcmQgPT4gKFxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGtleT17d29yZC5pZH0gY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIHAtNCBib3JkZXIgcm91bmRlZC1sZyBob3ZlcjpiZy1ncmF5LTUwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBzcGFjZS14LTRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy0yIGgtMiByb3VuZGVkLWZ1bGwgYmctZ3JlZW4tNTAwXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZvbnQtc2VtaWJvbGRcIj57d29yZC53b3JkfTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtc20gdGV4dC1ncmF5LTYwMFwiPnt3b3JkLnRyYW5zbGF0aW9ufTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtgcHgtMyBweS0xIHJvdW5kZWQtZnVsbCB0ZXh0LXhzIGZvbnQtbWVkaXVtICR7XG4gICAgICAgICAgICAgICAgICAgICAgICB3b3JkLnN0YXR1cyA9PT0gJ2xlYXJuZWQnID8gJ2JnLWdyZWVuLTEwMCB0ZXh0LWdyZWVuLTgwMCcgOlxuICAgICAgICAgICAgICAgICAgICAgICAgd29yZC5zdGF0dXMgPT09ICdsZWFybmluZycgPyAnYmcteWVsbG93LTEwMCB0ZXh0LXllbGxvdy04MDAnIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICdiZy1ncmF5LTEwMCB0ZXh0LWdyYXktODAwJ1xuICAgICAgICAgICAgICAgICAgICAgIH1gfT5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt3b3JkLnN0YXR1cyA9PT0gJ2xlYXJuZWQnID8gJ+W3suaOjOaPoScgOiBcbiAgICAgICAgICAgICAgICAgICAgICAgICB3b3JkLnN0YXR1cyA9PT0gJ2xlYXJuaW5nJyA/ICflrbjnv5LkuK0nIDogJ+aWsOipnid9XG4gICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgIHthY3RpdmVUYWIgPT09ICdzZXRzJyAmJiAoXG4gICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgPGgzIGNsYXNzTmFtZT1cInRleHQtbGcgZm9udC1zZW1pYm9sZCBtYi00XCI+5oiR55qE5Y2h57WEPC9oMz5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImdyaWQgZ3JpZC1jb2xzLTEgbWQ6Z3JpZC1jb2xzLTIgbGc6Z3JpZC1jb2xzLTMgZ2FwLTRcIj5cbiAgICAgICAgICAgICAgICAgIHtjYXJkU2V0cy5tYXAoc2V0ID0+IChcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBrZXk9e3NldC5pZH0gY2xhc3NOYW1lPVwiYm9yZGVyIHJvdW5kZWQtbGcgcC00IGhvdmVyOnNoYWRvdy1tZCB0cmFuc2l0aW9uLXNoYWRvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgIDxoNCBjbGFzc05hbWU9XCJmb250LXNlbWlib2xkIG1iLTJcIj57c2V0Lm5hbWV9PC9oND5cbiAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJ0ZXh0LXNtIHRleHQtZ3JheS02MDAgbWItM1wiPntzZXQuY291bnR9IOWAi+WWruWtlzwvcD5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctZnVsbCBiZy1ncmF5LTIwMCByb3VuZGVkLWZ1bGwgaC0yIG1iLTNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImJnLXByaW1hcnkgaC0yIHJvdW5kZWQtZnVsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7IHdpZHRoOiBgJHtzZXQucHJvZ3Jlc3N9JWAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8TGlua1xuICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj17YC9mbGFzaGNhcmRzLyR7c2V0LmlkfWB9XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ0ZXh0LXByaW1hcnkgdGV4dC1zbSBmb250LW1lZGl1bSBob3Zlcjp0ZXh0LXByaW1hcnktaG92ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIOe5vOe6jOWtuOe/kiDihpJcbiAgICAgICAgICAgICAgICAgICAgICA8L0xpbms+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAge2FjdGl2ZVRhYiA9PT0gJ3Byb2dyZXNzJyAmJiAoXG4gICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgPGgzIGNsYXNzTmFtZT1cInRleHQtbGcgZm9udC1zZW1pYm9sZCBtYi00XCI+5a2457+S57Wx6KiIPC9oMz5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJnLWdyYXktNTAgcm91bmRlZC1sZyBwLTZcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZ3JpZCBncmlkLWNvbHMtMiBtZDpncmlkLWNvbHMtNCBnYXAtNlwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1zbSB0ZXh0LWdyYXktNjAwXCI+5pys5ZGo5a2457+SPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LTJ4bCBmb250LWJvbGQgbXQtMVwiPjg5IOWAizwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtc20gdGV4dC1ncmF5LTYwMFwiPuacrOaciOWtuOe/kjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC0yeGwgZm9udC1ib2xkIG10LTFcIj4zMTIg5YCLPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1zbSB0ZXh0LWdyYXktNjAwXCI+5bmz5Z2H5q+P5pelPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LTJ4bCBmb250LWJvbGQgbXQtMVwiPjE1IOWAizwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtc20gdGV4dC1ncmF5LTYwMFwiPuacgOS9s+e0gOmMhDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC0yeGwgZm9udC1ib2xkIG10LTFcIj4zMiDlgIs8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibXQtNiBwdC02IGJvcmRlci10XCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1zbSB0ZXh0LWdyYXktNjAwIG1iLTJcIj7mr4/ml6Xlrbjnv5Lotqjli6LvvIjpgY7ljrs35aSp77yJPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1lbmQgc3BhY2UteC0yIGgtMjBcIj5cbiAgICAgICAgICAgICAgICAgICAgICB7WzE1LCAyMCwgMTgsIDI1LCAyMiwgMzAsIDEyXS5tYXAoKHZhbHVlLCBpbmRleCkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBrZXk9e2luZGV4fSBjbGFzc05hbWU9XCJmbGV4LTFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJiZy1wcmltYXJ5IHJvdW5kZWQtdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3sgaGVpZ2h0OiBgJHsodmFsdWUgLyAzMCkgKiAxMDB9JWAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgKVxufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBEYXNoYm9hcmRQYWdlKCkge1xuICByZXR1cm4gKFxuICAgIDxQcm90ZWN0ZWRSb3V0ZT5cbiAgICAgIDxEYXNoYm9hcmRDb250ZW50IC8+XG4gICAgPC9Qcm90ZWN0ZWRSb3V0ZT5cbiAgKVxufSJdLCJuYW1lcyI6WyJMaW5rIiwidXNlU3RhdGUiLCJQcm90ZWN0ZWRSb3V0ZSIsIk5hdmlnYXRpb24iLCJ1c2VBdXRoIiwiRGFzaGJvYXJkQ29udGVudCIsImFjdGl2ZVRhYiIsInNldEFjdGl2ZVRhYiIsInVzZXIiLCJsb2dvdXQiLCJzdGF0cyIsInRvdGFsV29yZHMiLCJ3b3Jkc1RvZGF5Iiwic3RyZWFrIiwiYWNjdXJhY3kiLCJ0b2RheVJldmlldyIsImNvbXBsZXRlZFRvZGF5IiwicmVjZW50V29yZHMiLCJpZCIsIndvcmQiLCJ0cmFuc2xhdGlvbiIsInN0YXR1cyIsImNhcmRTZXRzIiwibmFtZSIsImNvdW50IiwicHJvZ3Jlc3MiLCJkaXYiLCJjbGFzc05hbWUiLCJoMiIsImRpc3BsYXlOYW1lIiwidXNlcm5hbWUiLCJwIiwiaHJlZiIsInNwYW4iLCJzdmciLCJmaWxsIiwic3Ryb2tlIiwidmlld0JveCIsInBhdGgiLCJzdHJva2VMaW5lY2FwIiwic3Ryb2tlTGluZWpvaW4iLCJzdHJva2VXaWR0aCIsImQiLCJzdHlsZSIsIndpZHRoIiwibmF2IiwiYXJpYS1sYWJlbCIsImJ1dHRvbiIsIm9uQ2xpY2siLCJoMyIsIm1hcCIsInNldCIsImg0IiwidmFsdWUiLCJpbmRleCIsImhlaWdodCIsIkRhc2hib2FyZFBhZ2UiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./app/dashboard/page.tsx\n")); + +/***/ }), + +/***/ "(app-pages-browser)/./components/Navigation.tsx": +/*!***********************************!*\ + !*** ./components/Navigation.tsx ***! + \***********************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Navigation: () => (/* binding */ Navigation)\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 next_link__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! next/link */ \"(app-pages-browser)/./node_modules/next/dist/client/app-dir/link.js\");\n/* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(next_link__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var next_navigation__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! next/navigation */ \"(app-pages-browser)/./node_modules/next/dist/api/navigation.js\");\n/* harmony import */ var _contexts_AuthContext__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/contexts/AuthContext */ \"(app-pages-browser)/./contexts/AuthContext.tsx\");\n/* __next_internal_client_entry_do_not_use__ Navigation auto */ \nvar _s = $RefreshSig$();\n\n\n\nfunction Navigation() {\n var _user_username_, _user_username;\n _s();\n const { user, logout } = (0,_contexts_AuthContext__WEBPACK_IMPORTED_MODULE_3__.useAuth)();\n const pathname = (0,next_navigation__WEBPACK_IMPORTED_MODULE_2__.usePathname)();\n const navItems = [\n {\n href: '/dashboard',\n label: '儀表板'\n },\n {\n href: '/flashcards',\n label: '詞卡'\n },\n {\n href: '/learn',\n label: '學習'\n },\n {\n href: '/generate',\n label: 'AI 生成'\n }\n ];\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"nav\", {\n className: \"bg-white shadow-sm border-b\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"max-w-7xl mx-auto px-4 sm:px-6 lg:px-8\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex justify-between h-16\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center space-x-8\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_link__WEBPACK_IMPORTED_MODULE_1___default()), {\n href: \"/dashboard\",\n className: \"text-2xl font-bold text-primary\",\n children: \"DramaLing\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/components/Navigation.tsx\",\n lineNumber: 23,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"hidden md:flex space-x-6\",\n children: navItems.map((item)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_link__WEBPACK_IMPORTED_MODULE_1___default()), {\n href: item.href,\n className: \"font-medium transition-colors \".concat(pathname === item.href ? 'text-primary' : 'text-gray-600 hover:text-gray-900'),\n children: item.label\n }, item.href, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/components/Navigation.tsx\",\n lineNumber: 28,\n columnNumber: 17\n }, this))\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/components/Navigation.tsx\",\n lineNumber: 26,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/components/Navigation.tsx\",\n lineNumber: 22,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center space-x-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n className: \"p-2 text-gray-600 hover:text-gray-900\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n className: \"w-6 h-6\",\n fill: \"none\",\n stroke: \"currentColor\",\n viewBox: \"0 0 24 24\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n d: \"M15 17h5l-1.405-1.405A2.032 2.032 0 0118 14.158V11a6.002 6.002 0 00-4-5.659V5a2 2 0 10-4 0v.341C7.67 6.165 6 8.388 6 11v3.159c0 .538-.214 1.055-.595 1.436L4 17h5m6 0v1a3 3 0 11-6 0v-1m6 0H9\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/components/Navigation.tsx\",\n lineNumber: 47,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/components/Navigation.tsx\",\n lineNumber: 46,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/components/Navigation.tsx\",\n lineNumber: 45,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center space-x-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-8 h-8 bg-primary rounded-full flex items-center justify-center text-white font-semibold\",\n children: (user === null || user === void 0 ? void 0 : (_user_username = user.username) === null || _user_username === void 0 ? void 0 : (_user_username_ = _user_username[0]) === null || _user_username_ === void 0 ? void 0 : _user_username_.toUpperCase()) || 'U'\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/components/Navigation.tsx\",\n lineNumber: 53,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-sm font-medium\",\n children: (user === null || user === void 0 ? void 0 : user.displayName) || (user === null || user === void 0 ? void 0 : user.username)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/components/Navigation.tsx\",\n lineNumber: 56,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: logout,\n className: \"ml-4 text-sm text-gray-600 hover:text-gray-900\",\n children: \"登出\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/components/Navigation.tsx\",\n lineNumber: 57,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/components/Navigation.tsx\",\n lineNumber: 52,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/components/Navigation.tsx\",\n lineNumber: 43,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/components/Navigation.tsx\",\n lineNumber: 21,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/components/Navigation.tsx\",\n lineNumber: 20,\n columnNumber: 7\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/components/Navigation.tsx\",\n lineNumber: 19,\n columnNumber: 5\n }, this);\n}\n_s(Navigation, \"tHLzmZfHifuHte7SpZSOu+/8DHo=\", false, function() {\n return [\n _contexts_AuthContext__WEBPACK_IMPORTED_MODULE_3__.useAuth,\n next_navigation__WEBPACK_IMPORTED_MODULE_2__.usePathname\n ];\n});\n_c = Navigation;\nvar _c;\n$RefreshReg$(_c, \"Navigation\");\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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL2NvbXBvbmVudHMvTmF2aWdhdGlvbi50c3giLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFFNEI7QUFDaUI7QUFDRztBQUV6QyxTQUFTRztRQStDQ0MsaUJBQUFBOztJQTlDZixNQUFNLEVBQUVBLElBQUksRUFBRUMsTUFBTSxFQUFFLEdBQUdILDhEQUFPQTtJQUNoQyxNQUFNSSxXQUFXTCw0REFBV0E7SUFFNUIsTUFBTU0sV0FBVztRQUNmO1lBQUVDLE1BQU07WUFBY0MsT0FBTztRQUFNO1FBQ25DO1lBQUVELE1BQU07WUFBZUMsT0FBTztRQUFLO1FBQ25DO1lBQUVELE1BQU07WUFBVUMsT0FBTztRQUFLO1FBQzlCO1lBQUVELE1BQU07WUFBYUMsT0FBTztRQUFRO0tBQ3JDO0lBRUQscUJBQ0UsOERBQUNDO1FBQUlDLFdBQVU7a0JBQ2IsNEVBQUNDO1lBQUlELFdBQVU7c0JBQ2IsNEVBQUNDO2dCQUFJRCxXQUFVOztrQ0FDYiw4REFBQ0M7d0JBQUlELFdBQVU7OzBDQUNiLDhEQUFDWCxrREFBSUE7Z0NBQUNRLE1BQUs7Z0NBQWFHLFdBQVU7MENBQWtDOzs7Ozs7MENBR3BFLDhEQUFDQztnQ0FBSUQsV0FBVTswQ0FDWkosU0FBU00sR0FBRyxDQUFDLENBQUNDLHFCQUNiLDhEQUFDZCxrREFBSUE7d0NBRUhRLE1BQU1NLEtBQUtOLElBQUk7d0NBQ2ZHLFdBQVcsaUNBSVYsT0FIQ0wsYUFBYVEsS0FBS04sSUFBSSxHQUNsQixpQkFDQTtrREFHTE0sS0FBS0wsS0FBSzt1Q0FSTkssS0FBS04sSUFBSTs7Ozs7Ozs7Ozs7Ozs7OztrQ0FjdEIsOERBQUNJO3dCQUFJRCxXQUFVOzswQ0FFYiw4REFBQ0k7Z0NBQU9KLFdBQVU7MENBQ2hCLDRFQUFDSztvQ0FBSUwsV0FBVTtvQ0FBVU0sTUFBSztvQ0FBT0MsUUFBTztvQ0FBZUMsU0FBUTs4Q0FDakUsNEVBQUNDO3dDQUFLQyxlQUFjO3dDQUFRQyxnQkFBZTt3Q0FBUUMsYUFBYTt3Q0FBR0MsR0FBRTs7Ozs7Ozs7Ozs7Ozs7OzswQ0FLekUsOERBQUNaO2dDQUFJRCxXQUFVOztrREFDYiw4REFBQ0M7d0NBQUlELFdBQVU7a0RBQ1pQLENBQUFBLGlCQUFBQSw0QkFBQUEsaUJBQUFBLEtBQU1xQixRQUFRLGNBQWRyQixzQ0FBQUEsa0JBQUFBLGNBQWdCLENBQUMsRUFBRSxjQUFuQkEsc0NBQUFBLGdCQUFxQnNCLFdBQVcsT0FBTTs7Ozs7O2tEQUV6Qyw4REFBQ0M7d0NBQUtoQixXQUFVO2tEQUF1QlAsQ0FBQUEsaUJBQUFBLDJCQUFBQSxLQUFNd0IsV0FBVyxNQUFJeEIsaUJBQUFBLDJCQUFBQSxLQUFNcUIsUUFBUTs7Ozs7O2tEQUMxRSw4REFBQ1Y7d0NBQ0NjLFNBQVN4Qjt3Q0FDVE0sV0FBVTtrREFDWDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVNmO0dBOURnQlI7O1FBQ1dELDBEQUFPQTtRQUNmRCx3REFBV0E7OztLQUZkRSIsInNvdXJjZXMiOlsiL1VzZXJzL2pldHRjaGVuZzEwMTgvY29kZS9kcmFtYWxpbmctdm9jYWItbGVhcm5pbmcvZnJvbnRlbmQvY29tcG9uZW50cy9OYXZpZ2F0aW9uLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIGNsaWVudCdcclxuXHJcbmltcG9ydCBMaW5rIGZyb20gJ25leHQvbGluaydcclxuaW1wb3J0IHsgdXNlUGF0aG5hbWUgfSBmcm9tICduZXh0L25hdmlnYXRpb24nXHJcbmltcG9ydCB7IHVzZUF1dGggfSBmcm9tICdAL2NvbnRleHRzL0F1dGhDb250ZXh0J1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIE5hdmlnYXRpb24oKSB7XHJcbiAgY29uc3QgeyB1c2VyLCBsb2dvdXQgfSA9IHVzZUF1dGgoKVxyXG4gIGNvbnN0IHBhdGhuYW1lID0gdXNlUGF0aG5hbWUoKVxyXG5cclxuICBjb25zdCBuYXZJdGVtcyA9IFtcclxuICAgIHsgaHJlZjogJy9kYXNoYm9hcmQnLCBsYWJlbDogJ+WEgOihqOadvycgfSxcclxuICAgIHsgaHJlZjogJy9mbGFzaGNhcmRzJywgbGFiZWw6ICfoqZ7ljaEnIH0sXHJcbiAgICB7IGhyZWY6ICcvbGVhcm4nLCBsYWJlbDogJ+WtuOe/kicgfSxcclxuICAgIHsgaHJlZjogJy9nZW5lcmF0ZScsIGxhYmVsOiAnQUkg55Sf5oiQJyB9LFxyXG4gIF1cclxuXHJcbiAgcmV0dXJuIChcclxuICAgIDxuYXYgY2xhc3NOYW1lPVwiYmctd2hpdGUgc2hhZG93LXNtIGJvcmRlci1iXCI+XHJcbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwibWF4LXctN3hsIG14LWF1dG8gcHgtNCBzbTpweC02IGxnOnB4LThcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXgganVzdGlmeS1iZXR3ZWVuIGgtMTZcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIgc3BhY2UteC04XCI+XHJcbiAgICAgICAgICAgIDxMaW5rIGhyZWY9XCIvZGFzaGJvYXJkXCIgY2xhc3NOYW1lPVwidGV4dC0yeGwgZm9udC1ib2xkIHRleHQtcHJpbWFyeVwiPlxyXG4gICAgICAgICAgICAgIERyYW1hTGluZ1xyXG4gICAgICAgICAgICA8L0xpbms+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaGlkZGVuIG1kOmZsZXggc3BhY2UteC02XCI+XHJcbiAgICAgICAgICAgICAge25hdkl0ZW1zLm1hcCgoaXRlbSkgPT4gKFxyXG4gICAgICAgICAgICAgICAgPExpbmtcclxuICAgICAgICAgICAgICAgICAga2V5PXtpdGVtLmhyZWZ9XHJcbiAgICAgICAgICAgICAgICAgIGhyZWY9e2l0ZW0uaHJlZn1cclxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgZm9udC1tZWRpdW0gdHJhbnNpdGlvbi1jb2xvcnMgJHtcclxuICAgICAgICAgICAgICAgICAgICBwYXRobmFtZSA9PT0gaXRlbS5ocmVmXHJcbiAgICAgICAgICAgICAgICAgICAgICA/ICd0ZXh0LXByaW1hcnknXHJcbiAgICAgICAgICAgICAgICAgICAgICA6ICd0ZXh0LWdyYXktNjAwIGhvdmVyOnRleHQtZ3JheS05MDAnXHJcbiAgICAgICAgICAgICAgICAgIH1gfVxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICB7aXRlbS5sYWJlbH1cclxuICAgICAgICAgICAgICAgIDwvTGluaz5cclxuICAgICAgICAgICAgICApKX1cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIHNwYWNlLXgtNFwiPlxyXG4gICAgICAgICAgICB7Lyog6YCa55+l5oyJ6YiVICovfVxyXG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzTmFtZT1cInAtMiB0ZXh0LWdyYXktNjAwIGhvdmVyOnRleHQtZ3JheS05MDBcIj5cclxuICAgICAgICAgICAgICA8c3ZnIGNsYXNzTmFtZT1cInctNiBoLTZcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIj5cclxuICAgICAgICAgICAgICAgIDxwYXRoIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZUxpbmVqb2luPVwicm91bmRcIiBzdHJva2VXaWR0aD17Mn0gZD1cIk0xNSAxN2g1bC0xLjQwNS0xLjQwNUEyLjAzMiAyLjAzMiAwIDAxMTggMTQuMTU4VjExYTYuMDAyIDYuMDAyIDAgMDAtNC01LjY1OVY1YTIgMiAwIDEwLTQgMHYuMzQxQzcuNjcgNi4xNjUgNiA4LjM4OCA2IDExdjMuMTU5YzAgLjUzOC0uMjE0IDEuMDU1LS41OTUgMS40MzZMNCAxN2g1bTYgMHYxYTMgMyAwIDExLTYgMHYtMW02IDBIOVwiIC8+XHJcbiAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG5cclxuICAgICAgICAgICAgey8qIOeUqOaItuizh+ioiiAqL31cclxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBzcGFjZS14LTJcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctOCBoLTggYmctcHJpbWFyeSByb3VuZGVkLWZ1bGwgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgdGV4dC13aGl0ZSBmb250LXNlbWlib2xkXCI+XHJcbiAgICAgICAgICAgICAgICB7dXNlcj8udXNlcm5hbWU/LlswXT8udG9VcHBlckNhc2UoKSB8fCAnVSd9XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC1zbSBmb250LW1lZGl1bVwiPnt1c2VyPy5kaXNwbGF5TmFtZSB8fCB1c2VyPy51c2VybmFtZX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgb25DbGljaz17bG9nb3V0fVxyXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwibWwtNCB0ZXh0LXNtIHRleHQtZ3JheS02MDAgaG92ZXI6dGV4dC1ncmF5LTkwMFwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAg55m75Ye6XHJcbiAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9uYXY+XHJcbiAgKVxyXG59Il0sIm5hbWVzIjpbIkxpbmsiLCJ1c2VQYXRobmFtZSIsInVzZUF1dGgiLCJOYXZpZ2F0aW9uIiwidXNlciIsImxvZ291dCIsInBhdGhuYW1lIiwibmF2SXRlbXMiLCJocmVmIiwibGFiZWwiLCJuYXYiLCJjbGFzc05hbWUiLCJkaXYiLCJtYXAiLCJpdGVtIiwiYnV0dG9uIiwic3ZnIiwiZmlsbCIsInN0cm9rZSIsInZpZXdCb3giLCJwYXRoIiwic3Ryb2tlTGluZWNhcCIsInN0cm9rZUxpbmVqb2luIiwic3Ryb2tlV2lkdGgiLCJkIiwidXNlcm5hbWUiLCJ0b1VwcGVyQ2FzZSIsInNwYW4iLCJkaXNwbGF5TmFtZSIsIm9uQ2xpY2siXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./components/Navigation.tsx\n")); /***/ }), diff --git a/frontend/.next/static/chunks/app/flashcards/page.js b/frontend/.next/static/chunks/app/flashcards/page.js index ec5f738..cb07b06 100644 --- a/frontend/.next/static/chunks/app/flashcards/page.js +++ b/frontend/.next/static/chunks/app/flashcards/page.js @@ -15,7 +15,7 @@ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; -eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ FlashcardsPage)\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 next_link__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! next/link */ \"(app-pages-browser)/./node_modules/next/dist/client/app-dir/link.js\");\n/* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(next_link__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _components_ProtectedRoute__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/components/ProtectedRoute */ \"(app-pages-browser)/./components/ProtectedRoute.tsx\");\n/* harmony import */ var _components_FlashcardForm__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/components/FlashcardForm */ \"(app-pages-browser)/./components/FlashcardForm.tsx\");\n/* harmony import */ var _lib_services_flashcards__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/lib/services/flashcards */ \"(app-pages-browser)/./lib/services/flashcards.ts\");\n/* __next_internal_client_entry_do_not_use__ default auto */ \nvar _s = $RefreshSig$();\n\n\n\n\n\nfunction FlashcardsContent() {\n var _cardSets_find, _cardSets_, _cardSets_1;\n _s();\n const [activeTab, setActiveTab] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)('my-cards');\n const [selectedSet, setSelectedSet] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);\n const [searchTerm, setSearchTerm] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)('');\n // Real data from API\n const [cardSets, setCardSets] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)([]);\n const [flashcards, setFlashcards] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)([]);\n const [loading, setLoading] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(true);\n const [error, setError] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);\n // Form states\n const [showForm, setShowForm] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n const [editingCard, setEditingCard] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);\n // Load data from API\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)({\n \"FlashcardsContent.useEffect\": ()=>{\n loadCardSets();\n loadFlashcards();\n }\n }[\"FlashcardsContent.useEffect\"], []);\n const loadCardSets = async ()=>{\n try {\n const result = await _lib_services_flashcards__WEBPACK_IMPORTED_MODULE_5__.flashcardsService.getCardSets();\n if (result.success && result.data) {\n setCardSets(result.data.sets);\n } else {\n setError(result.error || 'Failed to load card sets');\n }\n } catch (err) {\n setError('Failed to load card sets');\n }\n };\n const loadFlashcards = async ()=>{\n try {\n setLoading(true);\n const result = await _lib_services_flashcards__WEBPACK_IMPORTED_MODULE_5__.flashcardsService.getFlashcards(selectedSet || undefined);\n if (result.success && result.data) {\n setFlashcards(result.data.flashcards);\n } else {\n setError(result.error || 'Failed to load flashcards');\n }\n } catch (err) {\n setError('Failed to load flashcards');\n } finally{\n setLoading(false);\n }\n };\n // Reload flashcards when selectedSet changes\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)({\n \"FlashcardsContent.useEffect\": ()=>{\n loadFlashcards();\n }\n }[\"FlashcardsContent.useEffect\"], [\n selectedSet\n ]);\n // Handle form operations\n const handleFormSuccess = ()=>{\n setShowForm(false);\n setEditingCard(null);\n loadFlashcards();\n loadCardSets();\n };\n const handleEdit = (card)=>{\n setEditingCard(card);\n setShowForm(true);\n };\n const handleDelete = async (card)=>{\n if (!confirm(\"確定要刪除詞卡「\".concat(card.word, \"」嗎?\"))) {\n return;\n }\n try {\n const result = await _lib_services_flashcards__WEBPACK_IMPORTED_MODULE_5__.flashcardsService.deleteFlashcard(card.id);\n if (result.success) {\n loadFlashcards();\n loadCardSets();\n } else {\n alert(result.error || '刪除失敗');\n }\n } catch (err) {\n alert('刪除失敗,請重試');\n }\n };\n // Filter data\n const filteredSets = cardSets.filter((set)=>set.name.toLowerCase().includes(searchTerm.toLowerCase()) || set.description.toLowerCase().includes(searchTerm.toLowerCase()));\n const filteredCards = flashcards.filter((card)=>{\n if (searchTerm) {\n var _card_word, _card_translation;\n return ((_card_word = card.word) === null || _card_word === void 0 ? void 0 : _card_word.toLowerCase().includes(searchTerm.toLowerCase())) || ((_card_translation = card.translation) === null || _card_translation === void 0 ? void 0 : _card_translation.toLowerCase().includes(searchTerm.toLowerCase()));\n }\n return true;\n });\n // Add loading and error states\n if (loading) {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"min-h-screen bg-gray-50 flex items-center justify-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-lg\",\n children: \"載入中...\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 113,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 112,\n columnNumber: 7\n }, this);\n }\n if (error) {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"min-h-screen bg-gray-50 flex items-center justify-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-red-600\",\n children: error\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 121,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 120,\n columnNumber: 7\n }, this);\n }\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"min-h-screen bg-gray-50\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-white border-b border-gray-200\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"max-w-7xl mx-auto px-4 sm:px-6 lg:px-8\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex justify-between items-center py-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h1\", {\n className: \"text-3xl font-bold text-gray-900\",\n children: \"詞卡管理\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 133,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"mt-1 text-sm text-gray-500\",\n children: \"管理你的詞卡集合\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 134,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 132,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center space-x-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>setShowForm(true),\n className: \"bg-green-600 text-white px-4 py-2 rounded-lg hover:bg-green-700 transition-colors\",\n children: \"新增詞卡\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 137,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_link__WEBPACK_IMPORTED_MODULE_2___default()), {\n href: \"/generate\",\n className: \"bg-primary text-white px-4 py-2 rounded-lg hover:bg-primary/90 transition-colors\",\n children: \"AI 生成詞卡\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 143,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 136,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 131,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex space-x-8\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>setActiveTab('my-cards'),\n className: \"pb-4 px-1 border-b-2 font-medium text-sm \".concat(activeTab === 'my-cards' ? 'border-primary text-primary' : 'border-transparent text-gray-500 hover:text-gray-700 hover:border-gray-300'),\n children: [\n \"我的卡組 (\",\n filteredSets.length,\n \")\"\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 154,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>setActiveTab('all-cards'),\n className: \"pb-4 px-1 border-b-2 font-medium text-sm \".concat(activeTab === 'all-cards' ? 'border-primary text-primary' : 'border-transparent text-gray-500 hover:text-gray-700 hover:border-gray-300'),\n children: [\n \"所有詞卡 (\",\n filteredCards.length,\n \")\"\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 164,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 153,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 130,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 129,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-8\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mb-6\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"relative\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"text\",\n value: searchTerm,\n onChange: (e)=>setSearchTerm(e.target.value),\n placeholder: \"搜尋詞卡或卡組...\",\n className: \"w-full pl-10 pr-4 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-primary focus:border-transparent\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 183,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute inset-y-0 left-0 pl-3 flex items-center pointer-events-none\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n className: \"h-5 w-5 text-gray-400\",\n fill: \"none\",\n stroke: \"currentColor\",\n viewBox: \"0 0 24 24\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n d: \"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 192,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 191,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 190,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 182,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 181,\n columnNumber: 9\n }, this),\n activeTab === 'my-cards' && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex justify-between items-center mb-4\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h3\", {\n className: \"text-lg font-semibold\",\n children: [\n \"共 \",\n filteredSets.length,\n \" 個卡組\"\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 202,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 201,\n columnNumber: 13\n }, this),\n filteredSets.length === 0 ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-center py-12\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-gray-500 mb-4\",\n children: \"還沒有詞卡集合\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 207,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_link__WEBPACK_IMPORTED_MODULE_2___default()), {\n href: \"/generate\",\n className: \"bg-primary text-white px-4 py-2 rounded-lg hover:bg-primary/90 transition-colors\",\n children: \"創建第一個卡組\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 208,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 206,\n columnNumber: 15\n }, this) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4\",\n children: filteredSets.map((set)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"border rounded-lg hover:shadow-lg transition-shadow cursor-pointer\",\n onClick: ()=>{\n setSelectedSet(set.id);\n setActiveTab('all-cards');\n },\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"\".concat(set.color, \" text-white p-4 rounded-t-lg\"),\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h4\", {\n className: \"font-semibold text-lg\",\n children: set.name\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 227,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-sm opacity-90\",\n children: set.description\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 228,\n columnNumber: 23\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 226,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"p-4 bg-white rounded-b-lg\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex justify-between items-center text-sm text-gray-600\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n children: [\n set.cardCount,\n \" 張詞卡\"\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 232,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n children: [\n \"進度: \",\n set.progress,\n \"%\"\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 233,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 231,\n columnNumber: 23\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 230,\n columnNumber: 21\n }, this)\n ]\n }, set.id, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 218,\n columnNumber: 19\n }, this))\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 216,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 200,\n columnNumber: 11\n }, this),\n activeTab === 'all-cards' && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex justify-between items-center mb-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h3\", {\n className: \"text-lg font-semibold\",\n children: [\n \"共 \",\n filteredCards.length,\n \" 個詞卡\"\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 247,\n columnNumber: 15\n }, this),\n selectedSet && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>setSelectedSet(null),\n className: \"text-sm text-gray-600 hover:text-gray-900\",\n children: \"顯示所有詞卡\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 249,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 246,\n columnNumber: 13\n }, this),\n filteredCards.length === 0 ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-center py-12\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-gray-500 mb-4\",\n children: \"沒有找到詞卡\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 260,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_link__WEBPACK_IMPORTED_MODULE_2___default()), {\n href: \"/generate\",\n className: \"bg-primary text-white px-4 py-2 rounded-lg hover:bg-primary/90 transition-colors\",\n children: \"創建新詞卡\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 261,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 259,\n columnNumber: 15\n }, this) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-y-3\",\n children: filteredCards.map((card)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-white border rounded-lg p-4 hover:shadow-md transition-shadow\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center justify-between\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center space-x-4\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center space-x-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h4\", {\n className: \"font-semibold text-lg\",\n children: card.word || '未設定'\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 277,\n columnNumber: 31\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-sm text-gray-500\",\n children: card.partOfSpeech\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 278,\n columnNumber: 31\n }, this),\n card.pronunciation && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-sm text-blue-600\",\n children: card.pronunciation\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 280,\n columnNumber: 33\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 276,\n columnNumber: 29\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-gray-700 mt-1\",\n children: card.translation || '未設定'\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 283,\n columnNumber: 29\n }, this),\n card.example && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-sm text-gray-600 mt-2 italic\",\n children: [\n \"例句: \",\n card.example\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 285,\n columnNumber: 31\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center space-x-4 mt-2 text-xs text-gray-500\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n children: [\n \"卡組: \",\n card.cardSet.name\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 288,\n columnNumber: 31\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n children: [\n \"熟練度: \",\n card.masteryLevel,\n \"/5\"\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 289,\n columnNumber: 31\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n children: [\n \"複習: \",\n card.timesReviewed,\n \" 次\"\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 290,\n columnNumber: 31\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n children: [\n \"下次複習: \",\n new Date(card.nextReviewDate).toLocaleDateString()\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 291,\n columnNumber: 31\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 287,\n columnNumber: 29\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 275,\n columnNumber: 27\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 274,\n columnNumber: 25\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 273,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center space-x-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>handleEdit(card),\n className: \"text-blue-600 hover:text-blue-800 text-sm\",\n children: \"編輯\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 297,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>handleDelete(card),\n className: \"text-red-600 hover:text-red-800 text-sm\",\n children: \"刪除\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 303,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 296,\n columnNumber: 23\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 272,\n columnNumber: 21\n }, this)\n }, card.id, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 271,\n columnNumber: 19\n }, this))\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 269,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 245,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 179,\n columnNumber: 7\n }, this),\n showForm && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_FlashcardForm__WEBPACK_IMPORTED_MODULE_4__.FlashcardForm, {\n cardSets: cardSets,\n initialData: editingCard ? {\n id: editingCard.id,\n cardSetId: editingCard.cardSet ? ((_cardSets_find = cardSets.find((cs)=>cs.name === editingCard.cardSet.name)) === null || _cardSets_find === void 0 ? void 0 : _cardSets_find.id) || ((_cardSets_ = cardSets[0]) === null || _cardSets_ === void 0 ? void 0 : _cardSets_.id) : (_cardSets_1 = cardSets[0]) === null || _cardSets_1 === void 0 ? void 0 : _cardSets_1.id,\n english: editingCard.word,\n chinese: editingCard.translation,\n pronunciation: editingCard.pronunciation,\n partOfSpeech: editingCard.partOfSpeech,\n example: editingCard.example\n } : undefined,\n isEdit: !!editingCard,\n onSuccess: handleFormSuccess,\n onCancel: ()=>{\n setShowForm(false);\n setEditingCard(null);\n }\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 321,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 127,\n columnNumber: 5\n }, this);\n}\n_s(FlashcardsContent, \"oUDLR7NnDUw5gAKYX5V6Mc+Z6Uk=\");\n_c = FlashcardsContent;\nfunction FlashcardsPage() {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ProtectedRoute__WEBPACK_IMPORTED_MODULE_3__.ProtectedRoute, {\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(FlashcardsContent, {}, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 347,\n columnNumber: 7\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 346,\n columnNumber: 5\n }, this);\n}\n_c1 = FlashcardsPage;\nvar _c, _c1;\n$RefreshReg$(_c, \"FlashcardsContent\");\n$RefreshReg$(_c1, \"FlashcardsPage\");\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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL2FwcC9mbGFzaGNhcmRzL3BhZ2UudHN4IiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7O0FBRTJDO0FBQ2Y7QUFDZ0M7QUFDRjtBQUNpQztBQUUzRixTQUFTTTtRQTRUb0NDLGdCQUFpRUEsWUFBa0JBOztJQTNUOUgsTUFBTSxDQUFDQyxXQUFXQyxhQUFhLEdBQUdULCtDQUFRQSxDQUFDO0lBQzNDLE1BQU0sQ0FBQ1UsYUFBYUMsZUFBZSxHQUFHWCwrQ0FBUUEsQ0FBZ0I7SUFDOUQsTUFBTSxDQUFDWSxZQUFZQyxjQUFjLEdBQUdiLCtDQUFRQSxDQUFDO0lBRTdDLHFCQUFxQjtJQUNyQixNQUFNLENBQUNPLFVBQVVPLFlBQVksR0FBR2QsK0NBQVFBLENBQVksRUFBRTtJQUN0RCxNQUFNLENBQUNlLFlBQVlDLGNBQWMsR0FBR2hCLCtDQUFRQSxDQUFjLEVBQUU7SUFDNUQsTUFBTSxDQUFDaUIsU0FBU0MsV0FBVyxHQUFHbEIsK0NBQVFBLENBQUM7SUFDdkMsTUFBTSxDQUFDbUIsT0FBT0MsU0FBUyxHQUFHcEIsK0NBQVFBLENBQWdCO0lBRWxELGNBQWM7SUFDZCxNQUFNLENBQUNxQixVQUFVQyxZQUFZLEdBQUd0QiwrQ0FBUUEsQ0FBQztJQUN6QyxNQUFNLENBQUN1QixhQUFhQyxlQUFlLEdBQUd4QiwrQ0FBUUEsQ0FBbUI7SUFFakUscUJBQXFCO0lBQ3JCQyxnREFBU0E7dUNBQUM7WUFDUndCO1lBQ0FDO1FBQ0Y7c0NBQUcsRUFBRTtJQUVMLE1BQU1ELGVBQWU7UUFDbkIsSUFBSTtZQUNGLE1BQU1FLFNBQVMsTUFBTXRCLHVFQUFpQkEsQ0FBQ3VCLFdBQVc7WUFDbEQsSUFBSUQsT0FBT0UsT0FBTyxJQUFJRixPQUFPRyxJQUFJLEVBQUU7Z0JBQ2pDaEIsWUFBWWEsT0FBT0csSUFBSSxDQUFDQyxJQUFJO1lBQzlCLE9BQU87Z0JBQ0xYLFNBQVNPLE9BQU9SLEtBQUssSUFBSTtZQUMzQjtRQUNGLEVBQUUsT0FBT2EsS0FBSztZQUNaWixTQUFTO1FBQ1g7SUFDRjtJQUVBLE1BQU1NLGlCQUFpQjtRQUNyQixJQUFJO1lBQ0ZSLFdBQVc7WUFDWCxNQUFNUyxTQUFTLE1BQU10Qix1RUFBaUJBLENBQUM0QixhQUFhLENBQUN2QixlQUFld0I7WUFDcEUsSUFBSVAsT0FBT0UsT0FBTyxJQUFJRixPQUFPRyxJQUFJLEVBQUU7Z0JBQ2pDZCxjQUFjVyxPQUFPRyxJQUFJLENBQUNmLFVBQVU7WUFDdEMsT0FBTztnQkFDTEssU0FBU08sT0FBT1IsS0FBSyxJQUFJO1lBQzNCO1FBQ0YsRUFBRSxPQUFPYSxLQUFLO1lBQ1paLFNBQVM7UUFDWCxTQUFVO1lBQ1JGLFdBQVc7UUFDYjtJQUNGO0lBRUEsNkNBQTZDO0lBQzdDakIsZ0RBQVNBO3VDQUFDO1lBQ1J5QjtRQUNGO3NDQUFHO1FBQUNoQjtLQUFZO0lBRWhCLHlCQUF5QjtJQUN6QixNQUFNeUIsb0JBQW9CO1FBQ3hCYixZQUFZO1FBQ1pFLGVBQWU7UUFDZkU7UUFDQUQ7SUFDRjtJQUVBLE1BQU1XLGFBQWEsQ0FBQ0M7UUFDbEJiLGVBQWVhO1FBQ2ZmLFlBQVk7SUFDZDtJQUVBLE1BQU1nQixlQUFlLE9BQU9EO1FBQzFCLElBQUksQ0FBQ0UsUUFBUSxXQUFxQixPQUFWRixLQUFLRyxJQUFJLEVBQUMsU0FBTztZQUN2QztRQUNGO1FBRUEsSUFBSTtZQUNGLE1BQU1iLFNBQVMsTUFBTXRCLHVFQUFpQkEsQ0FBQ29DLGVBQWUsQ0FBQ0osS0FBS0ssRUFBRTtZQUM5RCxJQUFJZixPQUFPRSxPQUFPLEVBQUU7Z0JBQ2xCSDtnQkFDQUQ7WUFDRixPQUFPO2dCQUNMa0IsTUFBTWhCLE9BQU9SLEtBQUssSUFBSTtZQUN4QjtRQUNGLEVBQUUsT0FBT2EsS0FBSztZQUNaVyxNQUFNO1FBQ1I7SUFDRjtJQUVBLGNBQWM7SUFDZCxNQUFNQyxlQUFlckMsU0FBU3NDLE1BQU0sQ0FBQ0MsQ0FBQUEsTUFDbkNBLElBQUlDLElBQUksQ0FBQ0MsV0FBVyxHQUFHQyxRQUFRLENBQUNyQyxXQUFXb0MsV0FBVyxPQUN0REYsSUFBSUksV0FBVyxDQUFDRixXQUFXLEdBQUdDLFFBQVEsQ0FBQ3JDLFdBQVdvQyxXQUFXO0lBRy9ELE1BQU1HLGdCQUFnQnBDLFdBQVc4QixNQUFNLENBQUNSLENBQUFBO1FBQ3RDLElBQUl6QixZQUFZO2dCQUNQeUIsWUFDQUE7WUFEUCxPQUFPQSxFQUFBQSxhQUFBQSxLQUFLRyxJQUFJLGNBQVRILGlDQUFBQSxXQUFXVyxXQUFXLEdBQUdDLFFBQVEsQ0FBQ3JDLFdBQVdvQyxXQUFXLFVBQ3hEWCxvQkFBQUEsS0FBS2UsV0FBVyxjQUFoQmYsd0NBQUFBLGtCQUFrQlcsV0FBVyxHQUFHQyxRQUFRLENBQUNyQyxXQUFXb0MsV0FBVztRQUN4RTtRQUNBLE9BQU87SUFDVDtJQUVBLCtCQUErQjtJQUMvQixJQUFJL0IsU0FBUztRQUNYLHFCQUNFLDhEQUFDb0M7WUFBSUMsV0FBVTtzQkFDYiw0RUFBQ0Q7Z0JBQUlDLFdBQVU7MEJBQVU7Ozs7Ozs7Ozs7O0lBRy9CO0lBRUEsSUFBSW5DLE9BQU87UUFDVCxxQkFDRSw4REFBQ2tDO1lBQUlDLFdBQVU7c0JBQ2IsNEVBQUNEO2dCQUFJQyxXQUFVOzBCQUFnQm5DOzs7Ozs7Ozs7OztJQUdyQztJQUVBLHFCQUNFLDhEQUFDa0M7UUFBSUMsV0FBVTs7MEJBRWIsOERBQUNEO2dCQUFJQyxXQUFVOzBCQUNiLDRFQUFDRDtvQkFBSUMsV0FBVTs7c0NBQ2IsOERBQUNEOzRCQUFJQyxXQUFVOzs4Q0FDYiw4REFBQ0Q7O3NEQUNDLDhEQUFDRTs0Q0FBR0QsV0FBVTtzREFBbUM7Ozs7OztzREFDakQsOERBQUNFOzRDQUFFRixXQUFVO3NEQUE2Qjs7Ozs7Ozs7Ozs7OzhDQUU1Qyw4REFBQ0Q7b0NBQUlDLFdBQVU7O3NEQUNiLDhEQUFDRzs0Q0FDQ0MsU0FBUyxJQUFNcEMsWUFBWTs0Q0FDM0JnQyxXQUFVO3NEQUNYOzs7Ozs7c0RBR0QsOERBQUNwRCxrREFBSUE7NENBQ0h5RCxNQUFLOzRDQUNMTCxXQUFVO3NEQUNYOzs7Ozs7Ozs7Ozs7Ozs7Ozs7c0NBT0wsOERBQUNEOzRCQUFJQyxXQUFVOzs4Q0FDYiw4REFBQ0c7b0NBQ0NDLFNBQVMsSUFBTWpELGFBQWE7b0NBQzVCNkMsV0FBVyw0Q0FJVixPQUhDOUMsY0FBYyxhQUNWLGdDQUNBOzt3Q0FFUDt3Q0FDUW9DLGFBQWFnQixNQUFNO3dDQUFDOzs7Ozs7OzhDQUU3Qiw4REFBQ0g7b0NBQ0NDLFNBQVMsSUFBTWpELGFBQWE7b0NBQzVCNkMsV0FBVyw0Q0FJVixPQUhDOUMsY0FBYyxjQUNWLGdDQUNBOzt3Q0FFUDt3Q0FDUTJDLGNBQWNTLE1BQU07d0NBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzswQkFPcEMsOERBQUNQO2dCQUFJQyxXQUFVOztrQ0FFYiw4REFBQ0Q7d0JBQUlDLFdBQVU7a0NBQ2IsNEVBQUNEOzRCQUFJQyxXQUFVOzs4Q0FDYiw4REFBQ087b0NBQ0NDLE1BQUs7b0NBQ0xDLE9BQU9uRDtvQ0FDUG9ELFVBQVUsQ0FBQ0MsSUFBTXBELGNBQWNvRCxFQUFFQyxNQUFNLENBQUNILEtBQUs7b0NBQzdDSSxhQUFZO29DQUNaYixXQUFVOzs7Ozs7OENBRVosOERBQUNEO29DQUFJQyxXQUFVOzhDQUNiLDRFQUFDYzt3Q0FBSWQsV0FBVTt3Q0FBd0JlLE1BQUs7d0NBQU9DLFFBQU87d0NBQWVDLFNBQVE7a0RBQy9FLDRFQUFDQzs0Q0FBS0MsZUFBYzs0Q0FBUUMsZ0JBQWU7NENBQVFDLGFBQWE7NENBQUdDLEdBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztvQkFPNUVwRSxjQUFjLDRCQUNiLDhEQUFDNkM7OzBDQUNDLDhEQUFDQTtnQ0FBSUMsV0FBVTswQ0FDYiw0RUFBQ3VCO29DQUFHdkIsV0FBVTs7d0NBQXdCO3dDQUFHVixhQUFhZ0IsTUFBTTt3Q0FBQzs7Ozs7Ozs7Ozs7OzRCQUc5RGhCLGFBQWFnQixNQUFNLEtBQUssa0JBQ3ZCLDhEQUFDUDtnQ0FBSUMsV0FBVTs7a0RBQ2IsOERBQUNFO3dDQUFFRixXQUFVO2tEQUFxQjs7Ozs7O2tEQUNsQyw4REFBQ3BELGtEQUFJQTt3Q0FDSHlELE1BQUs7d0NBQ0xMLFdBQVU7a0RBQ1g7Ozs7Ozs7Ozs7O3FEQUtILDhEQUFDRDtnQ0FBSUMsV0FBVTswQ0FDWlYsYUFBYWtDLEdBQUcsQ0FBQ2hDLENBQUFBLG9CQUNoQiw4REFBQ087d0NBRUNDLFdBQVU7d0NBQ1ZJLFNBQVM7NENBQ1AvQyxlQUFlbUMsSUFBSUosRUFBRTs0Q0FDckJqQyxhQUFhO3dDQUNmOzswREFFQSw4REFBQzRDO2dEQUFJQyxXQUFXLEdBQWEsT0FBVlIsSUFBSWlDLEtBQUssRUFBQzs7a0VBQzNCLDhEQUFDQzt3REFBRzFCLFdBQVU7a0VBQXlCUixJQUFJQyxJQUFJOzs7Ozs7a0VBQy9DLDhEQUFDUzt3REFBRUYsV0FBVTtrRUFBc0JSLElBQUlJLFdBQVc7Ozs7Ozs7Ozs7OzswREFFcEQsOERBQUNHO2dEQUFJQyxXQUFVOzBEQUNiLDRFQUFDRDtvREFBSUMsV0FBVTs7c0VBQ2IsOERBQUMyQjs7Z0VBQU1uQyxJQUFJb0MsU0FBUztnRUFBQzs7Ozs7OztzRUFDckIsOERBQUNEOztnRUFBSztnRUFBS25DLElBQUlxQyxRQUFRO2dFQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O3VDQWR2QnJDLElBQUlKLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7b0JBeUJ0QmxDLGNBQWMsNkJBQ2IsOERBQUM2Qzs7MENBQ0MsOERBQUNBO2dDQUFJQyxXQUFVOztrREFDYiw4REFBQ3VCO3dDQUFHdkIsV0FBVTs7NENBQXdCOzRDQUFHSCxjQUFjUyxNQUFNOzRDQUFDOzs7Ozs7O29DQUM3RGxELDZCQUNDLDhEQUFDK0M7d0NBQ0NDLFNBQVMsSUFBTS9DLGVBQWU7d0NBQzlCMkMsV0FBVTtrREFDWDs7Ozs7Ozs7Ozs7OzRCQU1KSCxjQUFjUyxNQUFNLEtBQUssa0JBQ3hCLDhEQUFDUDtnQ0FBSUMsV0FBVTs7a0RBQ2IsOERBQUNFO3dDQUFFRixXQUFVO2tEQUFxQjs7Ozs7O2tEQUNsQyw4REFBQ3BELGtEQUFJQTt3Q0FDSHlELE1BQUs7d0NBQ0xMLFdBQVU7a0RBQ1g7Ozs7Ozs7Ozs7O3FEQUtILDhEQUFDRDtnQ0FBSUMsV0FBVTswQ0FDWkgsY0FBYzJCLEdBQUcsQ0FBQ3pDLENBQUFBLHFCQUNqQiw4REFBQ2dCO3dDQUFrQkMsV0FBVTtrREFDM0IsNEVBQUNEOzRDQUFJQyxXQUFVOzs4REFDYiw4REFBQ0Q7b0RBQUlDLFdBQVU7OERBQ2IsNEVBQUNEO3dEQUFJQyxXQUFVO2tFQUNiLDRFQUFDRDs0REFBSUMsV0FBVTs7OEVBQ2IsOERBQUNEO29FQUFJQyxXQUFVOztzRkFDYiw4REFBQzBCOzRFQUFHMUIsV0FBVTtzRkFBeUJqQixLQUFLRyxJQUFJLElBQUk7Ozs7OztzRkFDcEQsOERBQUN5Qzs0RUFBSzNCLFdBQVU7c0ZBQXlCakIsS0FBSytDLFlBQVk7Ozs7Ozt3RUFDekQvQyxLQUFLZ0QsYUFBYSxrQkFDakIsOERBQUNKOzRFQUFLM0IsV0FBVTtzRkFBeUJqQixLQUFLZ0QsYUFBYTs7Ozs7Ozs7Ozs7OzhFQUcvRCw4REFBQzdCO29FQUFFRixXQUFVOzhFQUFzQmpCLEtBQUtlLFdBQVcsSUFBSTs7Ozs7O2dFQUN0RGYsS0FBS2lELE9BQU8sa0JBQ1gsOERBQUM5QjtvRUFBRUYsV0FBVTs7d0VBQW9DO3dFQUFLakIsS0FBS2lELE9BQU87Ozs7Ozs7OEVBRXBFLDhEQUFDakM7b0VBQUlDLFdBQVU7O3NGQUNiLDhEQUFDMkI7O2dGQUFLO2dGQUFLNUMsS0FBS2tELE9BQU8sQ0FBQ3hDLElBQUk7Ozs7Ozs7c0ZBQzVCLDhEQUFDa0M7O2dGQUFLO2dGQUFNNUMsS0FBS21ELFlBQVk7Z0ZBQUM7Ozs7Ozs7c0ZBQzlCLDhEQUFDUDs7Z0ZBQUs7Z0ZBQUs1QyxLQUFLb0QsYUFBYTtnRkFBQzs7Ozs7OztzRkFDOUIsOERBQUNSOztnRkFBSztnRkFBTyxJQUFJUyxLQUFLckQsS0FBS3NELGNBQWMsRUFBRUMsa0JBQWtCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs4REFLckUsOERBQUN2QztvREFBSUMsV0FBVTs7c0VBQ2IsOERBQUNHOzREQUNDQyxTQUFTLElBQU10QixXQUFXQzs0REFDMUJpQixXQUFVO3NFQUNYOzs7Ozs7c0VBR0QsOERBQUNHOzREQUNDQyxTQUFTLElBQU1wQixhQUFhRDs0REFDNUJpQixXQUFVO3NFQUNYOzs7Ozs7Ozs7Ozs7Ozs7Ozs7dUNBbkNHakIsS0FBS0ssRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZQWlENUJyQiwwQkFDQyw4REFBQ2pCLG9FQUFhQTtnQkFDWkcsVUFBVUE7Z0JBQ1ZzRixhQUFhdEUsY0FBYztvQkFDekJtQixJQUFJbkIsWUFBWW1CLEVBQUU7b0JBQ2xCb0QsV0FBV3ZFLFlBQVlnRSxPQUFPLEdBQUdoRixFQUFBQSxpQkFBQUEsU0FBU3dGLElBQUksQ0FBQ0MsQ0FBQUEsS0FBTUEsR0FBR2pELElBQUksS0FBS3hCLFlBQVlnRSxPQUFPLENBQUN4QyxJQUFJLGVBQXhEeEMscUNBQUFBLGVBQTJEbUMsRUFBRSxPQUFJbkMsYUFBQUEsUUFBUSxDQUFDLEVBQUUsY0FBWEEsaUNBQUFBLFdBQWFtQyxFQUFFLEtBQUduQyxjQUFBQSxRQUFRLENBQUMsRUFBRSxjQUFYQSxrQ0FBQUEsWUFBYW1DLEVBQUU7b0JBQ25JdUQsU0FBUzFFLFlBQVlpQixJQUFJO29CQUN6QjBELFNBQVMzRSxZQUFZNkIsV0FBVztvQkFDaENpQyxlQUFlOUQsWUFBWThELGFBQWE7b0JBQ3hDRCxjQUFjN0QsWUFBWTZELFlBQVk7b0JBQ3RDRSxTQUFTL0QsWUFBWStELE9BQU87Z0JBQzlCLElBQUlwRDtnQkFDSmlFLFFBQVEsQ0FBQyxDQUFDNUU7Z0JBQ1Y2RSxXQUFXakU7Z0JBQ1hrRSxVQUFVO29CQUNSL0UsWUFBWTtvQkFDWkUsZUFBZTtnQkFDakI7Ozs7Ozs7Ozs7OztBQUtWO0dBN1VTbEI7S0FBQUE7QUErVU0sU0FBU2dHO0lBQ3RCLHFCQUNFLDhEQUFDbkcsc0VBQWNBO2tCQUNiLDRFQUFDRzs7Ozs7Ozs7OztBQUdQO01BTndCZ0ciLCJzb3VyY2VzIjpbIi9Vc2Vycy9qZXR0Y2hlbmcxMDE4L2NvZGUvZHJhbWFsaW5nLXZvY2FiLWxlYXJuaW5nL2Zyb250ZW5kL2FwcC9mbGFzaGNhcmRzL3BhZ2UudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2UgY2xpZW50J1xuXG5pbXBvcnQgeyB1c2VTdGF0ZSwgdXNlRWZmZWN0IH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgTGluayBmcm9tICduZXh0L2xpbmsnXG5pbXBvcnQgeyBQcm90ZWN0ZWRSb3V0ZSB9IGZyb20gJ0AvY29tcG9uZW50cy9Qcm90ZWN0ZWRSb3V0ZSdcbmltcG9ydCB7IEZsYXNoY2FyZEZvcm0gfSBmcm9tICdAL2NvbXBvbmVudHMvRmxhc2hjYXJkRm9ybSdcbmltcG9ydCB7IGZsYXNoY2FyZHNTZXJ2aWNlLCB0eXBlIENhcmRTZXQsIHR5cGUgRmxhc2hjYXJkIH0gZnJvbSAnQC9saWIvc2VydmljZXMvZmxhc2hjYXJkcydcblxuZnVuY3Rpb24gRmxhc2hjYXJkc0NvbnRlbnQoKSB7XG4gIGNvbnN0IFthY3RpdmVUYWIsIHNldEFjdGl2ZVRhYl0gPSB1c2VTdGF0ZSgnbXktY2FyZHMnKVxuICBjb25zdCBbc2VsZWN0ZWRTZXQsIHNldFNlbGVjdGVkU2V0XSA9IHVzZVN0YXRlPHN0cmluZyB8IG51bGw+KG51bGwpXG4gIGNvbnN0IFtzZWFyY2hUZXJtLCBzZXRTZWFyY2hUZXJtXSA9IHVzZVN0YXRlKCcnKVxuXG4gIC8vIFJlYWwgZGF0YSBmcm9tIEFQSVxuICBjb25zdCBbY2FyZFNldHMsIHNldENhcmRTZXRzXSA9IHVzZVN0YXRlPENhcmRTZXRbXT4oW10pXG4gIGNvbnN0IFtmbGFzaGNhcmRzLCBzZXRGbGFzaGNhcmRzXSA9IHVzZVN0YXRlPEZsYXNoY2FyZFtdPihbXSlcbiAgY29uc3QgW2xvYWRpbmcsIHNldExvYWRpbmddID0gdXNlU3RhdGUodHJ1ZSlcbiAgY29uc3QgW2Vycm9yLCBzZXRFcnJvcl0gPSB1c2VTdGF0ZTxzdHJpbmcgfCBudWxsPihudWxsKVxuXG4gIC8vIEZvcm0gc3RhdGVzXG4gIGNvbnN0IFtzaG93Rm9ybSwgc2V0U2hvd0Zvcm1dID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtlZGl0aW5nQ2FyZCwgc2V0RWRpdGluZ0NhcmRdID0gdXNlU3RhdGU8Rmxhc2hjYXJkIHwgbnVsbD4obnVsbClcblxuICAvLyBMb2FkIGRhdGEgZnJvbSBBUElcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBsb2FkQ2FyZFNldHMoKVxuICAgIGxvYWRGbGFzaGNhcmRzKClcbiAgfSwgW10pXG5cbiAgY29uc3QgbG9hZENhcmRTZXRzID0gYXN5bmMgKCkgPT4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBmbGFzaGNhcmRzU2VydmljZS5nZXRDYXJkU2V0cygpXG4gICAgICBpZiAocmVzdWx0LnN1Y2Nlc3MgJiYgcmVzdWx0LmRhdGEpIHtcbiAgICAgICAgc2V0Q2FyZFNldHMocmVzdWx0LmRhdGEuc2V0cylcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNldEVycm9yKHJlc3VsdC5lcnJvciB8fCAnRmFpbGVkIHRvIGxvYWQgY2FyZCBzZXRzJylcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHNldEVycm9yKCdGYWlsZWQgdG8gbG9hZCBjYXJkIHNldHMnKVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGxvYWRGbGFzaGNhcmRzID0gYXN5bmMgKCkgPT4ge1xuICAgIHRyeSB7XG4gICAgICBzZXRMb2FkaW5nKHRydWUpXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBmbGFzaGNhcmRzU2VydmljZS5nZXRGbGFzaGNhcmRzKHNlbGVjdGVkU2V0IHx8IHVuZGVmaW5lZClcbiAgICAgIGlmIChyZXN1bHQuc3VjY2VzcyAmJiByZXN1bHQuZGF0YSkge1xuICAgICAgICBzZXRGbGFzaGNhcmRzKHJlc3VsdC5kYXRhLmZsYXNoY2FyZHMpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzZXRFcnJvcihyZXN1bHQuZXJyb3IgfHwgJ0ZhaWxlZCB0byBsb2FkIGZsYXNoY2FyZHMnKVxuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgc2V0RXJyb3IoJ0ZhaWxlZCB0byBsb2FkIGZsYXNoY2FyZHMnKVxuICAgIH0gZmluYWxseSB7XG4gICAgICBzZXRMb2FkaW5nKGZhbHNlKVxuICAgIH1cbiAgfVxuXG4gIC8vIFJlbG9hZCBmbGFzaGNhcmRzIHdoZW4gc2VsZWN0ZWRTZXQgY2hhbmdlc1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGxvYWRGbGFzaGNhcmRzKClcbiAgfSwgW3NlbGVjdGVkU2V0XSlcblxuICAvLyBIYW5kbGUgZm9ybSBvcGVyYXRpb25zXG4gIGNvbnN0IGhhbmRsZUZvcm1TdWNjZXNzID0gKCkgPT4ge1xuICAgIHNldFNob3dGb3JtKGZhbHNlKVxuICAgIHNldEVkaXRpbmdDYXJkKG51bGwpXG4gICAgbG9hZEZsYXNoY2FyZHMoKVxuICAgIGxvYWRDYXJkU2V0cygpXG4gIH1cblxuICBjb25zdCBoYW5kbGVFZGl0ID0gKGNhcmQ6IEZsYXNoY2FyZCkgPT4ge1xuICAgIHNldEVkaXRpbmdDYXJkKGNhcmQpXG4gICAgc2V0U2hvd0Zvcm0odHJ1ZSlcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZURlbGV0ZSA9IGFzeW5jIChjYXJkOiBGbGFzaGNhcmQpID0+IHtcbiAgICBpZiAoIWNvbmZpcm0oYOeiuuWumuimgeWIqumZpOipnuWNoeOAjCR7Y2FyZC53b3JkfeOAjeWXju+8n2ApKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZmxhc2hjYXJkc1NlcnZpY2UuZGVsZXRlRmxhc2hjYXJkKGNhcmQuaWQpXG4gICAgICBpZiAocmVzdWx0LnN1Y2Nlc3MpIHtcbiAgICAgICAgbG9hZEZsYXNoY2FyZHMoKVxuICAgICAgICBsb2FkQ2FyZFNldHMoKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYWxlcnQocmVzdWx0LmVycm9yIHx8ICfliKrpmaTlpLHmlZcnKVxuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgYWxlcnQoJ+WIqumZpOWkseaVl++8jOiri+mHjeippicpXG4gICAgfVxuICB9XG5cbiAgLy8gRmlsdGVyIGRhdGFcbiAgY29uc3QgZmlsdGVyZWRTZXRzID0gY2FyZFNldHMuZmlsdGVyKHNldCA9PlxuICAgIHNldC5uYW1lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc2VhcmNoVGVybS50b0xvd2VyQ2FzZSgpKSB8fFxuICAgIHNldC5kZXNjcmlwdGlvbi50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaFRlcm0udG9Mb3dlckNhc2UoKSlcbiAgKVxuXG4gIGNvbnN0IGZpbHRlcmVkQ2FyZHMgPSBmbGFzaGNhcmRzLmZpbHRlcihjYXJkID0+IHtcbiAgICBpZiAoc2VhcmNoVGVybSkge1xuICAgICAgcmV0dXJuIGNhcmQud29yZD8udG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhzZWFyY2hUZXJtLnRvTG93ZXJDYXNlKCkpIHx8XG4gICAgICAgICAgICAgY2FyZC50cmFuc2xhdGlvbj8udG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhzZWFyY2hUZXJtLnRvTG93ZXJDYXNlKCkpXG4gICAgfVxuICAgIHJldHVybiB0cnVlXG4gIH0pXG5cbiAgLy8gQWRkIGxvYWRpbmcgYW5kIGVycm9yIHN0YXRlc1xuICBpZiAobG9hZGluZykge1xuICAgIHJldHVybiAoXG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1pbi1oLXNjcmVlbiBiZy1ncmF5LTUwIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1sZ1wiPui8ieWFpeS4rS4uLjwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgKVxuICB9XG5cbiAgaWYgKGVycm9yKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwibWluLWgtc2NyZWVuIGJnLWdyYXktNTAgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LXJlZC02MDBcIj57ZXJyb3J9PC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICApXG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwibWluLWgtc2NyZWVuIGJnLWdyYXktNTBcIj5cbiAgICAgIHsvKiBIZWFkZXIgKi99XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImJnLXdoaXRlIGJvcmRlci1iIGJvcmRlci1ncmF5LTIwMFwiPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1heC13LTd4bCBteC1hdXRvIHB4LTQgc206cHgtNiBsZzpweC04XCI+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGp1c3RpZnktYmV0d2VlbiBpdGVtcy1jZW50ZXIgcHktNlwiPlxuICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgPGgxIGNsYXNzTmFtZT1cInRleHQtM3hsIGZvbnQtYm9sZCB0ZXh0LWdyYXktOTAwXCI+6Kme5Y2h566h55CGPC9oMT5cbiAgICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwibXQtMSB0ZXh0LXNtIHRleHQtZ3JheS01MDBcIj7nrqHnkIbkvaDnmoToqZ7ljaHpm4blkIg8L3A+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIgc3BhY2UteC00XCI+XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRTaG93Rm9ybSh0cnVlKX1cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJiZy1ncmVlbi02MDAgdGV4dC13aGl0ZSBweC00IHB5LTIgcm91bmRlZC1sZyBob3ZlcjpiZy1ncmVlbi03MDAgdHJhbnNpdGlvbi1jb2xvcnNcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAg5paw5aKe6Kme5Y2hXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8TGlua1xuICAgICAgICAgICAgICAgIGhyZWY9XCIvZ2VuZXJhdGVcIlxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImJnLXByaW1hcnkgdGV4dC13aGl0ZSBweC00IHB5LTIgcm91bmRlZC1sZyBob3ZlcjpiZy1wcmltYXJ5LzkwIHRyYW5zaXRpb24tY29sb3JzXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIEFJIOeUn+aIkOipnuWNoVxuICAgICAgICAgICAgICA8L0xpbms+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIHsvKiBUYWJzICovfVxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBzcGFjZS14LThcIj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gc2V0QWN0aXZlVGFiKCdteS1jYXJkcycpfVxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2BwYi00IHB4LTEgYm9yZGVyLWItMiBmb250LW1lZGl1bSB0ZXh0LXNtICR7XG4gICAgICAgICAgICAgICAgYWN0aXZlVGFiID09PSAnbXktY2FyZHMnXG4gICAgICAgICAgICAgICAgICA/ICdib3JkZXItcHJpbWFyeSB0ZXh0LXByaW1hcnknXG4gICAgICAgICAgICAgICAgICA6ICdib3JkZXItdHJhbnNwYXJlbnQgdGV4dC1ncmF5LTUwMCBob3Zlcjp0ZXh0LWdyYXktNzAwIGhvdmVyOmJvcmRlci1ncmF5LTMwMCdcbiAgICAgICAgICAgICAgfWB9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIOaIkeeahOWNoee1hCAoe2ZpbHRlcmVkU2V0cy5sZW5ndGh9KVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldEFjdGl2ZVRhYignYWxsLWNhcmRzJyl9XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17YHBiLTQgcHgtMSBib3JkZXItYi0yIGZvbnQtbWVkaXVtIHRleHQtc20gJHtcbiAgICAgICAgICAgICAgICBhY3RpdmVUYWIgPT09ICdhbGwtY2FyZHMnXG4gICAgICAgICAgICAgICAgICA/ICdib3JkZXItcHJpbWFyeSB0ZXh0LXByaW1hcnknXG4gICAgICAgICAgICAgICAgICA6ICdib3JkZXItdHJhbnNwYXJlbnQgdGV4dC1ncmF5LTUwMCBob3Zlcjp0ZXh0LWdyYXktNzAwIGhvdmVyOmJvcmRlci1ncmF5LTMwMCdcbiAgICAgICAgICAgICAgfWB9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIOaJgOacieipnuWNoSAoe2ZpbHRlcmVkQ2FyZHMubGVuZ3RofSlcbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICB7LyogQ29udGVudCAqL31cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwibWF4LXctN3hsIG14LWF1dG8gcHgtNCBzbTpweC02IGxnOnB4LTggcHktOFwiPlxuICAgICAgICB7LyogU2VhcmNoICovfVxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1iLTZcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInJlbGF0aXZlXCI+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICB2YWx1ZT17c2VhcmNoVGVybX1cbiAgICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiBzZXRTZWFyY2hUZXJtKGUudGFyZ2V0LnZhbHVlKX1cbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCLmkJzlsIvoqZ7ljaHmiJbljaHntYQuLi5cIlxuICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ3LWZ1bGwgcGwtMTAgcHItNCBweS0yIGJvcmRlciBib3JkZXItZ3JheS0zMDAgcm91bmRlZC1sZyBmb2N1czpyaW5nLTIgZm9jdXM6cmluZy1wcmltYXJ5IGZvY3VzOmJvcmRlci10cmFuc3BhcmVudFwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJhYnNvbHV0ZSBpbnNldC15LTAgbGVmdC0wIHBsLTMgZmxleCBpdGVtcy1jZW50ZXIgcG9pbnRlci1ldmVudHMtbm9uZVwiPlxuICAgICAgICAgICAgICA8c3ZnIGNsYXNzTmFtZT1cImgtNSB3LTUgdGV4dC1ncmF5LTQwMFwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiPlxuICAgICAgICAgICAgICAgIDxwYXRoIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZUxpbmVqb2luPVwicm91bmRcIiBzdHJva2VXaWR0aD17Mn0gZD1cIk0yMSAyMWwtNi02bTItNWE3IDcgMCAxMS0xNCAwIDcgNyAwIDAxMTQgMHpcIiAvPlxuICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICB7LyogQ2FyZCBTZXRzIFRhYiAqL31cbiAgICAgICAge2FjdGl2ZVRhYiA9PT0gJ215LWNhcmRzJyAmJiAoXG4gICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBqdXN0aWZ5LWJldHdlZW4gaXRlbXMtY2VudGVyIG1iLTRcIj5cbiAgICAgICAgICAgICAgPGgzIGNsYXNzTmFtZT1cInRleHQtbGcgZm9udC1zZW1pYm9sZFwiPuWFsSB7ZmlsdGVyZWRTZXRzLmxlbmd0aH0g5YCL5Y2h57WEPC9oMz5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICB7ZmlsdGVyZWRTZXRzLmxlbmd0aCA9PT0gMCA/IChcbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LWNlbnRlciBweS0xMlwiPlxuICAgICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQtZ3JheS01MDAgbWItNFwiPumChOaykuacieipnuWNoembhuWQiDwvcD5cbiAgICAgICAgICAgICAgICA8TGlua1xuICAgICAgICAgICAgICAgICAgaHJlZj1cIi9nZW5lcmF0ZVwiXG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJiZy1wcmltYXJ5IHRleHQtd2hpdGUgcHgtNCBweS0yIHJvdW5kZWQtbGcgaG92ZXI6YmctcHJpbWFyeS85MCB0cmFuc2l0aW9uLWNvbG9yc1wiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAg5Ym15bu656ys5LiA5YCL5Y2h57WEXG4gICAgICAgICAgICAgICAgPC9MaW5rPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZ3JpZCBncmlkLWNvbHMtMSBtZDpncmlkLWNvbHMtMiBsZzpncmlkLWNvbHMtMyBnYXAtNFwiPlxuICAgICAgICAgICAgICAgIHtmaWx0ZXJlZFNldHMubWFwKHNldCA9PiAoXG4gICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgIGtleT17c2V0LmlkfVxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJib3JkZXIgcm91bmRlZC1sZyBob3ZlcjpzaGFkb3ctbGcgdHJhbnNpdGlvbi1zaGFkb3cgY3Vyc29yLXBvaW50ZXJcIlxuICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgc2V0U2VsZWN0ZWRTZXQoc2V0LmlkKVxuICAgICAgICAgICAgICAgICAgICAgIHNldEFjdGl2ZVRhYignYWxsLWNhcmRzJylcbiAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2Ake3NldC5jb2xvcn0gdGV4dC13aGl0ZSBwLTQgcm91bmRlZC10LWxnYH0+XG4gICAgICAgICAgICAgICAgICAgICAgPGg0IGNsYXNzTmFtZT1cImZvbnQtc2VtaWJvbGQgdGV4dC1sZ1wiPntzZXQubmFtZX08L2g0PlxuICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQtc20gb3BhY2l0eS05MFwiPntzZXQuZGVzY3JpcHRpb259PC9wPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwLTQgYmctd2hpdGUgcm91bmRlZC1iLWxnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGp1c3RpZnktYmV0d2VlbiBpdGVtcy1jZW50ZXIgdGV4dC1zbSB0ZXh0LWdyYXktNjAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57c2V0LmNhcmRDb3VudH0g5by16Kme5Y2hPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+6YCy5bqmOiB7c2V0LnByb2dyZXNzfSU8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKX1cblxuICAgICAgICB7LyogQWxsIENhcmRzIFRhYiAqL31cbiAgICAgICAge2FjdGl2ZVRhYiA9PT0gJ2FsbC1jYXJkcycgJiYgKFxuICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXgganVzdGlmeS1iZXR3ZWVuIGl0ZW1zLWNlbnRlciBtYi00XCI+XG4gICAgICAgICAgICAgIDxoMyBjbGFzc05hbWU9XCJ0ZXh0LWxnIGZvbnQtc2VtaWJvbGRcIj7lhbEge2ZpbHRlcmVkQ2FyZHMubGVuZ3RofSDlgIvoqZ7ljaE8L2gzPlxuICAgICAgICAgICAgICB7c2VsZWN0ZWRTZXQgJiYgKFxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldFNlbGVjdGVkU2V0KG51bGwpfVxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidGV4dC1zbSB0ZXh0LWdyYXktNjAwIGhvdmVyOnRleHQtZ3JheS05MDBcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIOmhr+ekuuaJgOacieipnuWNoVxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIHtmaWx0ZXJlZENhcmRzLmxlbmd0aCA9PT0gMCA/IChcbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LWNlbnRlciBweS0xMlwiPlxuICAgICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQtZ3JheS01MDAgbWItNFwiPuaykuacieaJvuWIsOipnuWNoTwvcD5cbiAgICAgICAgICAgICAgICA8TGlua1xuICAgICAgICAgICAgICAgICAgaHJlZj1cIi9nZW5lcmF0ZVwiXG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJiZy1wcmltYXJ5IHRleHQtd2hpdGUgcHgtNCBweS0yIHJvdW5kZWQtbGcgaG92ZXI6YmctcHJpbWFyeS85MCB0cmFuc2l0aW9uLWNvbG9yc1wiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAg5Ym15bu65paw6Kme5Y2hXG4gICAgICAgICAgICAgICAgPC9MaW5rPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwic3BhY2UteS0zXCI+XG4gICAgICAgICAgICAgICAge2ZpbHRlcmVkQ2FyZHMubWFwKGNhcmQgPT4gKFxuICAgICAgICAgICAgICAgICAgPGRpdiBrZXk9e2NhcmQuaWR9IGNsYXNzTmFtZT1cImJnLXdoaXRlIGJvcmRlciByb3VuZGVkLWxnIHAtNCBob3ZlcjpzaGFkb3ctbWQgdHJhbnNpdGlvbi1zaGFkb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW5cIj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXgtMVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBzcGFjZS14LTRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4LTFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIHNwYWNlLXgtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0IGNsYXNzTmFtZT1cImZvbnQtc2VtaWJvbGQgdGV4dC1sZ1wiPntjYXJkLndvcmQgfHwgJ+acquioreWumid9PC9oND5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtc20gdGV4dC1ncmF5LTUwMFwiPntjYXJkLnBhcnRPZlNwZWVjaH08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y2FyZC5wcm9udW5jaWF0aW9uICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC1zbSB0ZXh0LWJsdWUtNjAwXCI+e2NhcmQucHJvbnVuY2lhdGlvbn08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQtZ3JheS03MDAgbXQtMVwiPntjYXJkLnRyYW5zbGF0aW9uIHx8ICfmnKroqK3lrponfTwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y2FyZC5leGFtcGxlICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQtc20gdGV4dC1ncmF5LTYwMCBtdC0yIGl0YWxpY1wiPuS+i+WPpToge2NhcmQuZXhhbXBsZX08L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIHNwYWNlLXgtNCBtdC0yIHRleHQteHMgdGV4dC1ncmF5LTUwMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+5Y2h57WEOiB7Y2FyZC5jYXJkU2V0Lm5hbWV9PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+54af57e05bqmOiB7Y2FyZC5tYXN0ZXJ5TGV2ZWx9LzU8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj7opIfnv5I6IHtjYXJkLnRpbWVzUmV2aWV3ZWR9IOasoTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPuS4i+asoeikh+e/kjoge25ldyBEYXRlKGNhcmQubmV4dFJldmlld0RhdGUpLnRvTG9jYWxlRGF0ZVN0cmluZygpfTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIHNwYWNlLXgtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBoYW5kbGVFZGl0KGNhcmQpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ0ZXh0LWJsdWUtNjAwIGhvdmVyOnRleHQtYmx1ZS04MDAgdGV4dC1zbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIOe3qOi8r1xuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IGhhbmRsZURlbGV0ZShjYXJkKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidGV4dC1yZWQtNjAwIGhvdmVyOnRleHQtcmVkLTgwMCB0ZXh0LXNtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAg5Yiq6ZmkXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICApfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICApfVxuICAgICAgPC9kaXY+XG5cbiAgICAgIHsvKiBGbGFzaGNhcmQgRm9ybSBNb2RhbCAqL31cbiAgICAgIHtzaG93Rm9ybSAmJiAoXG4gICAgICAgIDxGbGFzaGNhcmRGb3JtXG4gICAgICAgICAgY2FyZFNldHM9e2NhcmRTZXRzfVxuICAgICAgICAgIGluaXRpYWxEYXRhPXtlZGl0aW5nQ2FyZCA/IHtcbiAgICAgICAgICAgIGlkOiBlZGl0aW5nQ2FyZC5pZCxcbiAgICAgICAgICAgIGNhcmRTZXRJZDogZWRpdGluZ0NhcmQuY2FyZFNldCA/IGNhcmRTZXRzLmZpbmQoY3MgPT4gY3MubmFtZSA9PT0gZWRpdGluZ0NhcmQuY2FyZFNldC5uYW1lKT8uaWQgfHwgY2FyZFNldHNbMF0/LmlkIDogY2FyZFNldHNbMF0/LmlkLFxuICAgICAgICAgICAgZW5nbGlzaDogZWRpdGluZ0NhcmQud29yZCxcbiAgICAgICAgICAgIGNoaW5lc2U6IGVkaXRpbmdDYXJkLnRyYW5zbGF0aW9uLFxuICAgICAgICAgICAgcHJvbnVuY2lhdGlvbjogZWRpdGluZ0NhcmQucHJvbnVuY2lhdGlvbixcbiAgICAgICAgICAgIHBhcnRPZlNwZWVjaDogZWRpdGluZ0NhcmQucGFydE9mU3BlZWNoLFxuICAgICAgICAgICAgZXhhbXBsZTogZWRpdGluZ0NhcmQuZXhhbXBsZSxcbiAgICAgICAgICB9IDogdW5kZWZpbmVkfVxuICAgICAgICAgIGlzRWRpdD17ISFlZGl0aW5nQ2FyZH1cbiAgICAgICAgICBvblN1Y2Nlc3M9e2hhbmRsZUZvcm1TdWNjZXNzfVxuICAgICAgICAgIG9uQ2FuY2VsPXsoKSA9PiB7XG4gICAgICAgICAgICBzZXRTaG93Rm9ybShmYWxzZSlcbiAgICAgICAgICAgIHNldEVkaXRpbmdDYXJkKG51bGwpXG4gICAgICAgICAgfX1cbiAgICAgICAgLz5cbiAgICAgICl9XG4gICAgPC9kaXY+XG4gIClcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gRmxhc2hjYXJkc1BhZ2UoKSB7XG4gIHJldHVybiAoXG4gICAgPFByb3RlY3RlZFJvdXRlPlxuICAgICAgPEZsYXNoY2FyZHNDb250ZW50IC8+XG4gICAgPC9Qcm90ZWN0ZWRSb3V0ZT5cbiAgKVxufSJdLCJuYW1lcyI6WyJ1c2VTdGF0ZSIsInVzZUVmZmVjdCIsIkxpbmsiLCJQcm90ZWN0ZWRSb3V0ZSIsIkZsYXNoY2FyZEZvcm0iLCJmbGFzaGNhcmRzU2VydmljZSIsIkZsYXNoY2FyZHNDb250ZW50IiwiY2FyZFNldHMiLCJhY3RpdmVUYWIiLCJzZXRBY3RpdmVUYWIiLCJzZWxlY3RlZFNldCIsInNldFNlbGVjdGVkU2V0Iiwic2VhcmNoVGVybSIsInNldFNlYXJjaFRlcm0iLCJzZXRDYXJkU2V0cyIsImZsYXNoY2FyZHMiLCJzZXRGbGFzaGNhcmRzIiwibG9hZGluZyIsInNldExvYWRpbmciLCJlcnJvciIsInNldEVycm9yIiwic2hvd0Zvcm0iLCJzZXRTaG93Rm9ybSIsImVkaXRpbmdDYXJkIiwic2V0RWRpdGluZ0NhcmQiLCJsb2FkQ2FyZFNldHMiLCJsb2FkRmxhc2hjYXJkcyIsInJlc3VsdCIsImdldENhcmRTZXRzIiwic3VjY2VzcyIsImRhdGEiLCJzZXRzIiwiZXJyIiwiZ2V0Rmxhc2hjYXJkcyIsInVuZGVmaW5lZCIsImhhbmRsZUZvcm1TdWNjZXNzIiwiaGFuZGxlRWRpdCIsImNhcmQiLCJoYW5kbGVEZWxldGUiLCJjb25maXJtIiwid29yZCIsImRlbGV0ZUZsYXNoY2FyZCIsImlkIiwiYWxlcnQiLCJmaWx0ZXJlZFNldHMiLCJmaWx0ZXIiLCJzZXQiLCJuYW1lIiwidG9Mb3dlckNhc2UiLCJpbmNsdWRlcyIsImRlc2NyaXB0aW9uIiwiZmlsdGVyZWRDYXJkcyIsInRyYW5zbGF0aW9uIiwiZGl2IiwiY2xhc3NOYW1lIiwiaDEiLCJwIiwiYnV0dG9uIiwib25DbGljayIsImhyZWYiLCJsZW5ndGgiLCJpbnB1dCIsInR5cGUiLCJ2YWx1ZSIsIm9uQ2hhbmdlIiwiZSIsInRhcmdldCIsInBsYWNlaG9sZGVyIiwic3ZnIiwiZmlsbCIsInN0cm9rZSIsInZpZXdCb3giLCJwYXRoIiwic3Ryb2tlTGluZWNhcCIsInN0cm9rZUxpbmVqb2luIiwic3Ryb2tlV2lkdGgiLCJkIiwiaDMiLCJtYXAiLCJjb2xvciIsImg0Iiwic3BhbiIsImNhcmRDb3VudCIsInByb2dyZXNzIiwicGFydE9mU3BlZWNoIiwicHJvbnVuY2lhdGlvbiIsImV4YW1wbGUiLCJjYXJkU2V0IiwibWFzdGVyeUxldmVsIiwidGltZXNSZXZpZXdlZCIsIkRhdGUiLCJuZXh0UmV2aWV3RGF0ZSIsInRvTG9jYWxlRGF0ZVN0cmluZyIsImluaXRpYWxEYXRhIiwiY2FyZFNldElkIiwiZmluZCIsImNzIiwiZW5nbGlzaCIsImNoaW5lc2UiLCJpc0VkaXQiLCJvblN1Y2Nlc3MiLCJvbkNhbmNlbCIsIkZsYXNoY2FyZHNQYWdlIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./app/flashcards/page.tsx\n")); +eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ FlashcardsPage)\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 next_link__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! next/link */ \"(app-pages-browser)/./node_modules/next/dist/client/app-dir/link.js\");\n/* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(next_link__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _components_ProtectedRoute__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/components/ProtectedRoute */ \"(app-pages-browser)/./components/ProtectedRoute.tsx\");\n/* harmony import */ var _components_Navigation__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/components/Navigation */ \"(app-pages-browser)/./components/Navigation.tsx\");\n/* harmony import */ var _components_FlashcardForm__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/components/FlashcardForm */ \"(app-pages-browser)/./components/FlashcardForm.tsx\");\n/* harmony import */ var _lib_services_flashcards__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @/lib/services/flashcards */ \"(app-pages-browser)/./lib/services/flashcards.ts\");\n/* __next_internal_client_entry_do_not_use__ default auto */ \nvar _s = $RefreshSig$();\n\n\n\n\n\n\nfunction FlashcardsContent() {\n var _cardSets_find, _cardSets_, _cardSets_1;\n _s();\n const [activeTab, setActiveTab] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)('my-cards');\n const [selectedSet, setSelectedSet] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);\n const [searchTerm, setSearchTerm] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)('');\n // Real data from API\n const [cardSets, setCardSets] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)([]);\n const [flashcards, setFlashcards] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)([]);\n const [loading, setLoading] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(true);\n const [error, setError] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);\n // Form states\n const [showForm, setShowForm] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n const [editingCard, setEditingCard] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);\n // Load data from API\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)({\n \"FlashcardsContent.useEffect\": ()=>{\n loadCardSets();\n loadFlashcards();\n }\n }[\"FlashcardsContent.useEffect\"], []);\n const loadCardSets = async ()=>{\n try {\n const result = await _lib_services_flashcards__WEBPACK_IMPORTED_MODULE_6__.flashcardsService.getCardSets();\n if (result.success && result.data) {\n setCardSets(result.data.sets);\n } else {\n setError(result.error || 'Failed to load card sets');\n }\n } catch (err) {\n setError('Failed to load card sets');\n }\n };\n const loadFlashcards = async ()=>{\n try {\n setLoading(true);\n const result = await _lib_services_flashcards__WEBPACK_IMPORTED_MODULE_6__.flashcardsService.getFlashcards(selectedSet || undefined);\n if (result.success && result.data) {\n setFlashcards(result.data.flashcards);\n } else {\n setError(result.error || 'Failed to load flashcards');\n }\n } catch (err) {\n setError('Failed to load flashcards');\n } finally{\n setLoading(false);\n }\n };\n // Reload flashcards when selectedSet changes\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)({\n \"FlashcardsContent.useEffect\": ()=>{\n loadFlashcards();\n }\n }[\"FlashcardsContent.useEffect\"], [\n selectedSet\n ]);\n // Handle form operations\n const handleFormSuccess = ()=>{\n setShowForm(false);\n setEditingCard(null);\n loadFlashcards();\n loadCardSets();\n };\n const handleEdit = (card)=>{\n setEditingCard(card);\n setShowForm(true);\n };\n const handleDelete = async (card)=>{\n if (!confirm(\"確定要刪除詞卡「\".concat(card.word, \"」嗎?\"))) {\n return;\n }\n try {\n const result = await _lib_services_flashcards__WEBPACK_IMPORTED_MODULE_6__.flashcardsService.deleteFlashcard(card.id);\n if (result.success) {\n loadFlashcards();\n loadCardSets();\n } else {\n alert(result.error || '刪除失敗');\n }\n } catch (err) {\n alert('刪除失敗,請重試');\n }\n };\n // Filter data\n const filteredSets = cardSets.filter((set)=>set.name.toLowerCase().includes(searchTerm.toLowerCase()) || set.description.toLowerCase().includes(searchTerm.toLowerCase()));\n const filteredCards = flashcards.filter((card)=>{\n if (searchTerm) {\n var _card_word, _card_translation;\n return ((_card_word = card.word) === null || _card_word === void 0 ? void 0 : _card_word.toLowerCase().includes(searchTerm.toLowerCase())) || ((_card_translation = card.translation) === null || _card_translation === void 0 ? void 0 : _card_translation.toLowerCase().includes(searchTerm.toLowerCase()));\n }\n return true;\n });\n // Add loading and error states\n if (loading) {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"min-h-screen bg-gray-50 flex items-center justify-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-lg\",\n children: \"載入中...\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 114,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 113,\n columnNumber: 7\n }, this);\n }\n if (error) {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"min-h-screen bg-gray-50 flex items-center justify-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-red-600\",\n children: error\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 122,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 121,\n columnNumber: 7\n }, this);\n }\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"min-h-screen bg-gray-50\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_Navigation__WEBPACK_IMPORTED_MODULE_4__.Navigation, {}, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 130,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-white border-b border-gray-200\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"max-w-7xl mx-auto px-4 sm:px-6 lg:px-8\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex justify-between items-center py-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h1\", {\n className: \"text-3xl font-bold text-gray-900\",\n children: \"詞卡管理\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 137,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"mt-1 text-sm text-gray-500\",\n children: \"管理你的詞卡集合\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 138,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 136,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center space-x-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>setShowForm(true),\n className: \"bg-green-600 text-white px-4 py-2 rounded-lg hover:bg-green-700 transition-colors\",\n children: \"新增詞卡\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 141,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_link__WEBPACK_IMPORTED_MODULE_2___default()), {\n href: \"/generate\",\n className: \"bg-primary text-white px-4 py-2 rounded-lg hover:bg-primary/90 transition-colors\",\n children: \"AI 生成詞卡\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 147,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 140,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 135,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex space-x-8\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>setActiveTab('my-cards'),\n className: \"pb-4 px-1 border-b-2 font-medium text-sm \".concat(activeTab === 'my-cards' ? 'border-primary text-primary' : 'border-transparent text-gray-500 hover:text-gray-700 hover:border-gray-300'),\n children: [\n \"我的卡組 (\",\n filteredSets.length,\n \")\"\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 158,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>setActiveTab('all-cards'),\n className: \"pb-4 px-1 border-b-2 font-medium text-sm \".concat(activeTab === 'all-cards' ? 'border-primary text-primary' : 'border-transparent text-gray-500 hover:text-gray-700 hover:border-gray-300'),\n children: [\n \"所有詞卡 (\",\n filteredCards.length,\n \")\"\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 168,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 157,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 134,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 133,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-8\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mb-6\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"relative\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"text\",\n value: searchTerm,\n onChange: (e)=>setSearchTerm(e.target.value),\n placeholder: \"搜尋詞卡或卡組...\",\n className: \"w-full pl-10 pr-4 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-primary focus:border-transparent\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 187,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute inset-y-0 left-0 pl-3 flex items-center pointer-events-none\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n className: \"h-5 w-5 text-gray-400\",\n fill: \"none\",\n stroke: \"currentColor\",\n viewBox: \"0 0 24 24\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n d: \"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 196,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 195,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 194,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 186,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 185,\n columnNumber: 9\n }, this),\n activeTab === 'my-cards' && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex justify-between items-center mb-4\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h3\", {\n className: \"text-lg font-semibold\",\n children: [\n \"共 \",\n filteredSets.length,\n \" 個卡組\"\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 206,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 205,\n columnNumber: 13\n }, this),\n filteredSets.length === 0 ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-center py-12\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-gray-500 mb-4\",\n children: \"還沒有詞卡集合\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 211,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_link__WEBPACK_IMPORTED_MODULE_2___default()), {\n href: \"/generate\",\n className: \"bg-primary text-white px-4 py-2 rounded-lg hover:bg-primary/90 transition-colors\",\n children: \"創建第一個卡組\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 212,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 210,\n columnNumber: 15\n }, this) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4\",\n children: filteredSets.map((set)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"border rounded-lg hover:shadow-lg transition-shadow cursor-pointer\",\n onClick: ()=>{\n setSelectedSet(set.id);\n setActiveTab('all-cards');\n },\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"\".concat(set.color, \" text-white p-4 rounded-t-lg\"),\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h4\", {\n className: \"font-semibold text-lg\",\n children: set.name\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 231,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-sm opacity-90\",\n children: set.description\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 232,\n columnNumber: 23\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 230,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"p-4 bg-white rounded-b-lg\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex justify-between items-center text-sm text-gray-600\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n children: [\n set.cardCount,\n \" 張詞卡\"\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 236,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n children: [\n \"進度: \",\n set.progress,\n \"%\"\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 237,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 235,\n columnNumber: 23\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 234,\n columnNumber: 21\n }, this)\n ]\n }, set.id, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 222,\n columnNumber: 19\n }, this))\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 220,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 204,\n columnNumber: 11\n }, this),\n activeTab === 'all-cards' && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex justify-between items-center mb-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h3\", {\n className: \"text-lg font-semibold\",\n children: [\n \"共 \",\n filteredCards.length,\n \" 個詞卡\"\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 251,\n columnNumber: 15\n }, this),\n selectedSet && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>setSelectedSet(null),\n className: \"text-sm text-gray-600 hover:text-gray-900\",\n children: \"顯示所有詞卡\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 253,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 250,\n columnNumber: 13\n }, this),\n filteredCards.length === 0 ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-center py-12\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-gray-500 mb-4\",\n children: \"沒有找到詞卡\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 264,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_link__WEBPACK_IMPORTED_MODULE_2___default()), {\n href: \"/generate\",\n className: \"bg-primary text-white px-4 py-2 rounded-lg hover:bg-primary/90 transition-colors\",\n children: \"創建新詞卡\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 265,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 263,\n columnNumber: 15\n }, this) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-y-3\",\n children: filteredCards.map((card)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-white border rounded-lg p-4 hover:shadow-md transition-shadow\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center justify-between\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center space-x-4\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center space-x-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h4\", {\n className: \"font-semibold text-lg\",\n children: card.word || '未設定'\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 281,\n columnNumber: 31\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-sm text-gray-500\",\n children: card.partOfSpeech\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 282,\n columnNumber: 31\n }, this),\n card.pronunciation && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-sm text-blue-600\",\n children: card.pronunciation\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 284,\n columnNumber: 33\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 280,\n columnNumber: 29\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-gray-700 mt-1\",\n children: card.translation || '未設定'\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 287,\n columnNumber: 29\n }, this),\n card.example && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-sm text-gray-600 mt-2 italic\",\n children: [\n \"例句: \",\n card.example\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 289,\n columnNumber: 31\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center space-x-4 mt-2 text-xs text-gray-500\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n children: [\n \"卡組: \",\n card.cardSet.name\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 292,\n columnNumber: 31\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n children: [\n \"熟練度: \",\n card.masteryLevel,\n \"/5\"\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 293,\n columnNumber: 31\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n children: [\n \"複習: \",\n card.timesReviewed,\n \" 次\"\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 294,\n columnNumber: 31\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n children: [\n \"下次複習: \",\n new Date(card.nextReviewDate).toLocaleDateString()\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 295,\n columnNumber: 31\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 291,\n columnNumber: 29\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 279,\n columnNumber: 27\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 278,\n columnNumber: 25\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 277,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center space-x-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>handleEdit(card),\n className: \"text-blue-600 hover:text-blue-800 text-sm\",\n children: \"編輯\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 301,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>handleDelete(card),\n className: \"text-red-600 hover:text-red-800 text-sm\",\n children: \"刪除\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 307,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 300,\n columnNumber: 23\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 276,\n columnNumber: 21\n }, this)\n }, card.id, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 275,\n columnNumber: 19\n }, this))\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 273,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 249,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 183,\n columnNumber: 7\n }, this),\n showForm && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_FlashcardForm__WEBPACK_IMPORTED_MODULE_5__.FlashcardForm, {\n cardSets: cardSets,\n initialData: editingCard ? {\n id: editingCard.id,\n cardSetId: editingCard.cardSet ? ((_cardSets_find = cardSets.find((cs)=>cs.name === editingCard.cardSet.name)) === null || _cardSets_find === void 0 ? void 0 : _cardSets_find.id) || ((_cardSets_ = cardSets[0]) === null || _cardSets_ === void 0 ? void 0 : _cardSets_.id) : (_cardSets_1 = cardSets[0]) === null || _cardSets_1 === void 0 ? void 0 : _cardSets_1.id,\n english: editingCard.word,\n chinese: editingCard.translation,\n pronunciation: editingCard.pronunciation,\n partOfSpeech: editingCard.partOfSpeech,\n example: editingCard.example\n } : undefined,\n isEdit: !!editingCard,\n onSuccess: handleFormSuccess,\n onCancel: ()=>{\n setShowForm(false);\n setEditingCard(null);\n }\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 325,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 128,\n columnNumber: 5\n }, this);\n}\n_s(FlashcardsContent, \"oUDLR7NnDUw5gAKYX5V6Mc+Z6Uk=\");\n_c = FlashcardsContent;\nfunction FlashcardsPage() {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ProtectedRoute__WEBPACK_IMPORTED_MODULE_3__.ProtectedRoute, {\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(FlashcardsContent, {}, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 351,\n columnNumber: 7\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 350,\n columnNumber: 5\n }, this);\n}\n_c1 = FlashcardsPage;\nvar _c, _c1;\n$RefreshReg$(_c, \"FlashcardsContent\");\n$RefreshReg$(_c1, \"FlashcardsPage\");\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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL2FwcC9mbGFzaGNhcmRzL3BhZ2UudHN4IiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztBQUUyQztBQUNmO0FBQ2dDO0FBQ1I7QUFDTTtBQUNpQztBQUUzRixTQUFTTztRQStUb0NDLGdCQUFpRUEsWUFBa0JBOztJQTlUOUgsTUFBTSxDQUFDQyxXQUFXQyxhQUFhLEdBQUdWLCtDQUFRQSxDQUFDO0lBQzNDLE1BQU0sQ0FBQ1csYUFBYUMsZUFBZSxHQUFHWiwrQ0FBUUEsQ0FBZ0I7SUFDOUQsTUFBTSxDQUFDYSxZQUFZQyxjQUFjLEdBQUdkLCtDQUFRQSxDQUFDO0lBRTdDLHFCQUFxQjtJQUNyQixNQUFNLENBQUNRLFVBQVVPLFlBQVksR0FBR2YsK0NBQVFBLENBQVksRUFBRTtJQUN0RCxNQUFNLENBQUNnQixZQUFZQyxjQUFjLEdBQUdqQiwrQ0FBUUEsQ0FBYyxFQUFFO0lBQzVELE1BQU0sQ0FBQ2tCLFNBQVNDLFdBQVcsR0FBR25CLCtDQUFRQSxDQUFDO0lBQ3ZDLE1BQU0sQ0FBQ29CLE9BQU9DLFNBQVMsR0FBR3JCLCtDQUFRQSxDQUFnQjtJQUVsRCxjQUFjO0lBQ2QsTUFBTSxDQUFDc0IsVUFBVUMsWUFBWSxHQUFHdkIsK0NBQVFBLENBQUM7SUFDekMsTUFBTSxDQUFDd0IsYUFBYUMsZUFBZSxHQUFHekIsK0NBQVFBLENBQW1CO0lBRWpFLHFCQUFxQjtJQUNyQkMsZ0RBQVNBO3VDQUFDO1lBQ1J5QjtZQUNBQztRQUNGO3NDQUFHLEVBQUU7SUFFTCxNQUFNRCxlQUFlO1FBQ25CLElBQUk7WUFDRixNQUFNRSxTQUFTLE1BQU10Qix1RUFBaUJBLENBQUN1QixXQUFXO1lBQ2xELElBQUlELE9BQU9FLE9BQU8sSUFBSUYsT0FBT0csSUFBSSxFQUFFO2dCQUNqQ2hCLFlBQVlhLE9BQU9HLElBQUksQ0FBQ0MsSUFBSTtZQUM5QixPQUFPO2dCQUNMWCxTQUFTTyxPQUFPUixLQUFLLElBQUk7WUFDM0I7UUFDRixFQUFFLE9BQU9h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QUFXQzs0REFDMUJpQixXQUFVO3NFQUNYOzs7Ozs7c0VBR0QsOERBQUNHOzREQUNDQyxTQUFTLElBQU1wQixhQUFhRDs0REFDNUJpQixXQUFVO3NFQUNYOzs7Ozs7Ozs7Ozs7Ozs7Ozs7dUNBbkNHakIsS0FBS0ssRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZQWlENUJyQiwwQkFDQyw4REFBQ2pCLG9FQUFhQTtnQkFDWkcsVUFBVUE7Z0JBQ1ZzRixhQUFhdEUsY0FBYztvQkFDekJtQixJQUFJbkIsWUFBWW1CLEVBQUU7b0JBQ2xCb0QsV0FBV3ZFLFlBQVlnRSxPQUFPLEdBQUdoRixFQUFBQSxpQkFBQUEsU0FBU3dGLElBQUksQ0FBQ0MsQ0FBQUEsS0FBTUEsR0FBR2pELElBQUksS0FBS3hCLFlBQVlnRSxPQUFPLENBQUN4QyxJQUFJLGVBQXhEeEMscUNBQUFBLGVBQTJEbUMsRUFBRSxPQUFJbkMsYUFBQUEsUUFBUSxDQUFDLEVBQUUsY0FBWEEsaUNBQUFBLFdBQWFtQyxFQUFFLEtBQUduQyxjQUFBQSxRQUFRLENBQUMsRUFBRSxjQUFYQSxrQ0FBQUEsWUFBYW1DLEVBQUU7b0JBQ25JdUQsU0FBUzFFLFlBQVlpQixJQUFJO29CQUN6QjBELFNBQVMzRSxZQUFZNkIsV0FBVztvQkFDaENpQyxlQUFlOUQsWUFBWThELGFBQWE7b0JBQ3hDRCxjQUFjN0QsWUFBWTZELFlBQVk7b0JBQ3RDRSxTQUFTL0QsWUFBWStELE9BQU87Z0JBQzlCLElBQUlwRDtnQkFDSmlFLFFBQVEsQ0FBQyxDQUFDNUU7Z0JBQ1Y2RSxXQUFXakU7Z0JBQ1hrRSxVQUFVO29CQUNSL0UsWUFBWTtvQkFDWkUsZUFBZTtnQkFDakI7Ozs7Ozs7Ozs7OztBQUtWO0dBaFZTbEI7S0FBQUE7QUFrVk0sU0FBU2dHO0lBQ3RCLHFCQUNFLDhEQUFDcEcsc0VBQWNBO2tCQUNiLDRFQUFDSTs7Ozs7Ozs7OztBQUdQO01BTndCZ0ciLCJzb3VyY2VzIjpbIi9Vc2Vycy9qZXR0Y2hlbmcxMDE4L2NvZGUvZHJhbWFsaW5nLXZvY2FiLWxlYXJuaW5nL2Zyb250ZW5kL2FwcC9mbGFzaGNhcmRzL3BhZ2UudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2UgY2xpZW50J1xuXG5pbXBvcnQgeyB1c2VTdGF0ZSwgdXNlRWZmZWN0IH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgTGluayBmcm9tICduZXh0L2xpbmsnXG5pbXBvcnQgeyBQcm90ZWN0ZWRSb3V0ZSB9IGZyb20gJ0AvY29tcG9uZW50cy9Qcm90ZWN0ZWRSb3V0ZSdcbmltcG9ydCB7IE5hdmlnYXRpb24gfSBmcm9tICdAL2NvbXBvbmVudHMvTmF2aWdhdGlvbidcbmltcG9ydCB7IEZsYXNoY2FyZEZvcm0gfSBmcm9tICdAL2NvbXBvbmVudHMvRmxhc2hjYXJkRm9ybSdcbmltcG9ydCB7IGZsYXNoY2FyZHNTZXJ2aWNlLCB0eXBlIENhcmRTZXQsIHR5cGUgRmxhc2hjYXJkIH0gZnJvbSAnQC9saWIvc2VydmljZXMvZmxhc2hjYXJkcydcblxuZnVuY3Rpb24gRmxhc2hjYXJkc0NvbnRlbnQoKSB7XG4gIGNvbnN0IFthY3RpdmVUYWIsIHNldEFjdGl2ZVRhYl0gPSB1c2VTdGF0ZSgnbXktY2FyZHMnKVxuICBjb25zdCBbc2VsZWN0ZWRTZXQsIHNldFNlbGVjdGVkU2V0XSA9IHVzZVN0YXRlPHN0cmluZyB8IG51bGw+KG51bGwpXG4gIGNvbnN0IFtzZWFyY2hUZXJtLCBzZXRTZWFyY2hUZXJtXSA9IHVzZVN0YXRlKCcnKVxuXG4gIC8vIFJlYWwgZGF0YSBmcm9tIEFQSVxuICBjb25zdCBbY2FyZFNldHMsIHNldENhcmRTZXRzXSA9IHVzZVN0YXRlPENhcmRTZXRbXT4oW10pXG4gIGNvbnN0IFtmbGFzaGNhcmRzLCBzZXRGbGFzaGNhcmRzXSA9IHVzZVN0YXRlPEZsYXNoY2FyZFtdPihbXSlcbiAgY29uc3QgW2xvYWRpbmcsIHNldExvYWRpbmddID0gdXNlU3RhdGUodHJ1ZSlcbiAgY29uc3QgW2Vycm9yLCBzZXRFcnJvcl0gPSB1c2VTdGF0ZTxzdHJpbmcgfCBudWxsPihudWxsKVxuXG4gIC8vIEZvcm0gc3RhdGVzXG4gIGNvbnN0IFtzaG93Rm9ybSwgc2V0U2hvd0Zvcm1dID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtlZGl0aW5nQ2FyZCwgc2V0RWRpdGluZ0NhcmRdID0gdXNlU3RhdGU8Rmxhc2hjYXJkIHwgbnVsbD4obnVsbClcblxuICAvLyBMb2FkIGRhdGEgZnJvbSBBUElcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBsb2FkQ2FyZFNldHMoKVxuICAgIGxvYWRGbGFzaGNhcmRzKClcbiAgfSwgW10pXG5cbiAgY29uc3QgbG9hZENhcmRTZXRzID0gYXN5bmMgKCkgPT4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBmbGFzaGNhcmRzU2VydmljZS5nZXRDYXJkU2V0cygpXG4gICAgICBpZiAocmVzdWx0LnN1Y2Nlc3MgJiYgcmVzdWx0LmRhdGEpIHtcbiAgICAgICAgc2V0Q2FyZFNldHMocmVzdWx0LmRhdGEuc2V0cylcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNldEVycm9yKHJlc3VsdC5lcnJvciB8fCAnRmFpbGVkIHRvIGxvYWQgY2FyZCBzZXRzJylcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHNldEVycm9yKCdGYWlsZWQgdG8gbG9hZCBjYXJkIHNldHMnKVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGxvYWRGbGFzaGNhcmRzID0gYXN5bmMgKCkgPT4ge1xuICAgIHRyeSB7XG4gICAgICBzZXRMb2FkaW5nKHRydWUpXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBmbGFzaGNhcmRzU2VydmljZS5nZXRGbGFzaGNhcmRzKHNlbGVjdGVkU2V0IHx8IHVuZGVmaW5lZClcbiAgICAgIGlmIChyZXN1bHQuc3VjY2VzcyAmJiByZXN1bHQuZGF0YSkge1xuICAgICAgICBzZXRGbGFzaGNhcmRzKHJlc3VsdC5kYXRhLmZsYXNoY2FyZHMpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzZXRFcnJvcihyZXN1bHQuZXJyb3IgfHwgJ0ZhaWxlZCB0byBsb2FkIGZsYXNoY2FyZHMnKVxuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgc2V0RXJyb3IoJ0ZhaWxlZCB0byBsb2FkIGZsYXNoY2FyZHMnKVxuICAgIH0gZmluYWxseSB7XG4gICAgICBzZXRMb2FkaW5nKGZhbHNlKVxuICAgIH1cbiAgfVxuXG4gIC8vIFJlbG9hZCBmbGFzaGNhcmRzIHdoZW4gc2VsZWN0ZWRTZXQgY2hhbmdlc1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGxvYWRGbGFzaGNhcmRzKClcbiAgfSwgW3NlbGVjdGVkU2V0XSlcblxuICAvLyBIYW5kbGUgZm9ybSBvcGVyYXRpb25zXG4gIGNvbnN0IGhhbmRsZUZvcm1TdWNjZXNzID0gKCkgPT4ge1xuICAgIHNldFNob3dGb3JtKGZhbHNlKVxuICAgIHNldEVkaXRpbmdDYXJkKG51bGwpXG4gICAgbG9hZEZsYXNoY2FyZHMoKVxuICAgIGxvYWRDYXJkU2V0cygpXG4gIH1cblxuICBjb25zdCBoYW5kbGVFZGl0ID0gKGNhcmQ6IEZsYXNoY2FyZCkgPT4ge1xuICAgIHNldEVkaXRpbmdDYXJkKGNhcmQpXG4gICAgc2V0U2hvd0Zvcm0odHJ1ZSlcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZURlbGV0ZSA9IGFzeW5jIChjYXJkOiBGbGFzaGNhcmQpID0+IHtcbiAgICBpZiAoIWNvbmZpcm0oYOeiuuWumuimgeWIqumZpOipnuWNoeOAjCR7Y2FyZC53b3JkfeOAjeWXju+8n2ApKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZmxhc2hjYXJkc1NlcnZpY2UuZGVsZXRlRmxhc2hjYXJkKGNhcmQuaWQpXG4gICAgICBpZiAocmVzdWx0LnN1Y2Nlc3MpIHtcbiAgICAgICAgbG9hZEZsYXNoY2FyZHMoKVxuICAgICAgICBsb2FkQ2FyZFNldHMoKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYWxlcnQocmVzdWx0LmVycm9yIHx8ICfliKrpmaTlpLHmlZcnKVxuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgYWxlcnQoJ+WIqumZpOWkseaVl++8jOiri+mHjeippicpXG4gICAgfVxuICB9XG5cbiAgLy8gRmlsdGVyIGRhdGFcbiAgY29uc3QgZmlsdGVyZWRTZXRzID0gY2FyZFNldHMuZmlsdGVyKHNldCA9PlxuICAgIHNldC5uYW1lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc2VhcmNoVGVybS50b0xvd2VyQ2FzZSgpKSB8fFxuICAgIHNldC5kZXNjcmlwdGlvbi50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaFRlcm0udG9Mb3dlckNhc2UoKSlcbiAgKVxuXG4gIGNvbnN0IGZpbHRlcmVkQ2FyZHMgPSBmbGFzaGNhcmRzLmZpbHRlcihjYXJkID0+IHtcbiAgICBpZiAoc2VhcmNoVGVybSkge1xuICAgICAgcmV0dXJuIGNhcmQud29yZD8udG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhzZWFyY2hUZXJtLnRvTG93ZXJDYXNlKCkpIHx8XG4gICAgICAgICAgICAgY2FyZC50cmFuc2xhdGlvbj8udG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhzZWFyY2hUZXJtLnRvTG93ZXJDYXNlKCkpXG4gICAgfVxuICAgIHJldHVybiB0cnVlXG4gIH0pXG5cbiAgLy8gQWRkIGxvYWRpbmcgYW5kIGVycm9yIHN0YXRlc1xuICBpZiAobG9hZGluZykge1xuICAgIHJldHVybiAoXG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1pbi1oLXNjcmVlbiBiZy1ncmF5LTUwIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1sZ1wiPui8ieWFpeS4rS4uLjwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgKVxuICB9XG5cbiAgaWYgKGVycm9yKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwibWluLWgtc2NyZWVuIGJnLWdyYXktNTAgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LXJlZC02MDBcIj57ZXJyb3J9PC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICApXG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwibWluLWgtc2NyZWVuIGJnLWdyYXktNTBcIj5cbiAgICAgIHsvKiBOYXZpZ2F0aW9uICovfVxuICAgICAgPE5hdmlnYXRpb24gLz5cblxuICAgICAgey8qIFBhZ2UgSGVhZGVyICovfVxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJiZy13aGl0ZSBib3JkZXItYiBib3JkZXItZ3JheS0yMDBcIj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtYXgtdy03eGwgbXgtYXV0byBweC00IHNtOnB4LTYgbGc6cHgtOFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBqdXN0aWZ5LWJldHdlZW4gaXRlbXMtY2VudGVyIHB5LTZcIj5cbiAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgIDxoMSBjbGFzc05hbWU9XCJ0ZXh0LTN4bCBmb250LWJvbGQgdGV4dC1ncmF5LTkwMFwiPuipnuWNoeeuoeeQhjwvaDE+XG4gICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cIm10LTEgdGV4dC1zbSB0ZXh0LWdyYXktNTAwXCI+566h55CG5L2g55qE6Kme5Y2h6ZuG5ZCIPC9wPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIHNwYWNlLXgtNFwiPlxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gc2V0U2hvd0Zvcm0odHJ1ZSl9XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiYmctZ3JlZW4tNjAwIHRleHQtd2hpdGUgcHgtNCBweS0yIHJvdW5kZWQtbGcgaG92ZXI6YmctZ3JlZW4tNzAwIHRyYW5zaXRpb24tY29sb3JzXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIOaWsOWinuipnuWNoVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPExpbmtcbiAgICAgICAgICAgICAgICBocmVmPVwiL2dlbmVyYXRlXCJcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJiZy1wcmltYXJ5IHRleHQtd2hpdGUgcHgtNCBweS0yIHJvdW5kZWQtbGcgaG92ZXI6YmctcHJpbWFyeS85MCB0cmFuc2l0aW9uLWNvbG9yc1wiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBBSSDnlJ/miJDoqZ7ljaFcbiAgICAgICAgICAgICAgPC9MaW5rPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICB7LyogVGFicyAqL31cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggc3BhY2UteC04XCI+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldEFjdGl2ZVRhYignbXktY2FyZHMnKX1cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgcGItNCBweC0xIGJvcmRlci1iLTIgZm9udC1tZWRpdW0gdGV4dC1zbSAke1xuICAgICAgICAgICAgICAgIGFjdGl2ZVRhYiA9PT0gJ215LWNhcmRzJ1xuICAgICAgICAgICAgICAgICAgPyAnYm9yZGVyLXByaW1hcnkgdGV4dC1wcmltYXJ5J1xuICAgICAgICAgICAgICAgICAgOiAnYm9yZGVyLXRyYW5zcGFyZW50IHRleHQtZ3JheS01MDAgaG92ZXI6dGV4dC1ncmF5LTcwMCBob3Zlcjpib3JkZXItZ3JheS0zMDAnXG4gICAgICAgICAgICAgIH1gfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICDmiJHnmoTljaHntYQgKHtmaWx0ZXJlZFNldHMubGVuZ3RofSlcbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRBY3RpdmVUYWIoJ2FsbC1jYXJkcycpfVxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2BwYi00IHB4LTEgYm9yZGVyLWItMiBmb250LW1lZGl1bSB0ZXh0LXNtICR7XG4gICAgICAgICAgICAgICAgYWN0aXZlVGFiID09PSAnYWxsLWNhcmRzJ1xuICAgICAgICAgICAgICAgICAgPyAnYm9yZGVyLXByaW1hcnkgdGV4dC1wcmltYXJ5J1xuICAgICAgICAgICAgICAgICAgOiAnYm9yZGVyLXRyYW5zcGFyZW50IHRleHQtZ3JheS01MDAgaG92ZXI6dGV4dC1ncmF5LTcwMCBob3Zlcjpib3JkZXItZ3JheS0zMDAnXG4gICAgICAgICAgICAgIH1gfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICDmiYDmnInoqZ7ljaEgKHtmaWx0ZXJlZENhcmRzLmxlbmd0aH0pXG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgey8qIENvbnRlbnQgKi99XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1heC13LTd4bCBteC1hdXRvIHB4LTQgc206cHgtNiBsZzpweC04IHB5LThcIj5cbiAgICAgICAgey8qIFNlYXJjaCAqL31cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtYi02XCI+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyZWxhdGl2ZVwiPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgdmFsdWU9e3NlYXJjaFRlcm19XG4gICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gc2V0U2VhcmNoVGVybShlLnRhcmdldC52YWx1ZSl9XG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwi5pCc5bCL6Kme5Y2h5oiW5Y2h57WELi4uXCJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidy1mdWxsIHBsLTEwIHByLTQgcHktMiBib3JkZXIgYm9yZGVyLWdyYXktMzAwIHJvdW5kZWQtbGcgZm9jdXM6cmluZy0yIGZvY3VzOnJpbmctcHJpbWFyeSBmb2N1czpib3JkZXItdHJhbnNwYXJlbnRcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYWJzb2x1dGUgaW5zZXQteS0wIGxlZnQtMCBwbC0zIGZsZXggaXRlbXMtY2VudGVyIHBvaW50ZXItZXZlbnRzLW5vbmVcIj5cbiAgICAgICAgICAgICAgPHN2ZyBjbGFzc05hbWU9XCJoLTUgdy01IHRleHQtZ3JheS00MDBcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIj5cbiAgICAgICAgICAgICAgICA8cGF0aCBzdHJva2VMaW5lY2FwPVwicm91bmRcIiBzdHJva2VMaW5lam9pbj1cInJvdW5kXCIgc3Ryb2tlV2lkdGg9ezJ9IGQ9XCJNMjEgMjFsLTYtNm0yLTVhNyA3IDAgMTEtMTQgMCA3IDcgMCAwMTE0IDB6XCIgLz5cbiAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgey8qIENhcmQgU2V0cyBUYWIgKi99XG4gICAgICAgIHthY3RpdmVUYWIgPT09ICdteS1jYXJkcycgJiYgKFxuICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXgganVzdGlmeS1iZXR3ZWVuIGl0ZW1zLWNlbnRlciBtYi00XCI+XG4gICAgICAgICAgICAgIDxoMyBjbGFzc05hbWU9XCJ0ZXh0LWxnIGZvbnQtc2VtaWJvbGRcIj7lhbEge2ZpbHRlcmVkU2V0cy5sZW5ndGh9IOWAi+WNoee1hDwvaDM+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAge2ZpbHRlcmVkU2V0cy5sZW5ndGggPT09IDAgPyAoXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1jZW50ZXIgcHktMTJcIj5cbiAgICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJ0ZXh0LWdyYXktNTAwIG1iLTRcIj7pgoTmspLmnInoqZ7ljaHpm4blkIg8L3A+XG4gICAgICAgICAgICAgICAgPExpbmtcbiAgICAgICAgICAgICAgICAgIGhyZWY9XCIvZ2VuZXJhdGVcIlxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiYmctcHJpbWFyeSB0ZXh0LXdoaXRlIHB4LTQgcHktMiByb3VuZGVkLWxnIGhvdmVyOmJnLXByaW1hcnkvOTAgdHJhbnNpdGlvbi1jb2xvcnNcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIOWJteW7uuesrOS4gOWAi+WNoee1hFxuICAgICAgICAgICAgICAgIDwvTGluaz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImdyaWQgZ3JpZC1jb2xzLTEgbWQ6Z3JpZC1jb2xzLTIgbGc6Z3JpZC1jb2xzLTMgZ2FwLTRcIj5cbiAgICAgICAgICAgICAgICB7ZmlsdGVyZWRTZXRzLm1hcChzZXQgPT4gKFxuICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICBrZXk9e3NldC5pZH1cbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiYm9yZGVyIHJvdW5kZWQtbGcgaG92ZXI6c2hhZG93LWxnIHRyYW5zaXRpb24tc2hhZG93IGN1cnNvci1wb2ludGVyXCJcbiAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgIHNldFNlbGVjdGVkU2V0KHNldC5pZClcbiAgICAgICAgICAgICAgICAgICAgICBzZXRBY3RpdmVUYWIoJ2FsbC1jYXJkcycpXG4gICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtgJHtzZXQuY29sb3J9IHRleHQtd2hpdGUgcC00IHJvdW5kZWQtdC1sZ2B9PlxuICAgICAgICAgICAgICAgICAgICAgIDxoNCBjbGFzc05hbWU9XCJmb250LXNlbWlib2xkIHRleHQtbGdcIj57c2V0Lm5hbWV9PC9oND5cbiAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJ0ZXh0LXNtIG9wYWNpdHktOTBcIj57c2V0LmRlc2NyaXB0aW9ufTwvcD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicC00IGJnLXdoaXRlIHJvdW5kZWQtYi1sZ1wiPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBqdXN0aWZ5LWJldHdlZW4gaXRlbXMtY2VudGVyIHRleHQtc20gdGV4dC1ncmF5LTYwMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3NldC5jYXJkQ291bnR9IOW8teipnuWNoTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPumAsuW6pjoge3NldC5wcm9ncmVzc30lPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICl9XG5cbiAgICAgICAgey8qIEFsbCBDYXJkcyBUYWIgKi99XG4gICAgICAgIHthY3RpdmVUYWIgPT09ICdhbGwtY2FyZHMnICYmIChcbiAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGp1c3RpZnktYmV0d2VlbiBpdGVtcy1jZW50ZXIgbWItNFwiPlxuICAgICAgICAgICAgICA8aDMgY2xhc3NOYW1lPVwidGV4dC1sZyBmb250LXNlbWlib2xkXCI+5YWxIHtmaWx0ZXJlZENhcmRzLmxlbmd0aH0g5YCL6Kme5Y2hPC9oMz5cbiAgICAgICAgICAgICAge3NlbGVjdGVkU2V0ICYmIChcbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRTZWxlY3RlZFNldChudWxsKX1cbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInRleHQtc20gdGV4dC1ncmF5LTYwMCBob3Zlcjp0ZXh0LWdyYXktOTAwXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICDpoa/npLrmiYDmnInoqZ7ljaFcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICB7ZmlsdGVyZWRDYXJkcy5sZW5ndGggPT09IDAgPyAoXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1jZW50ZXIgcHktMTJcIj5cbiAgICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJ0ZXh0LWdyYXktNTAwIG1iLTRcIj7mspLmnInmib7liLDoqZ7ljaE8L3A+XG4gICAgICAgICAgICAgICAgPExpbmtcbiAgICAgICAgICAgICAgICAgIGhyZWY9XCIvZ2VuZXJhdGVcIlxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiYmctcHJpbWFyeSB0ZXh0LXdoaXRlIHB4LTQgcHktMiByb3VuZGVkLWxnIGhvdmVyOmJnLXByaW1hcnkvOTAgdHJhbnNpdGlvbi1jb2xvcnNcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIOWJteW7uuaWsOipnuWNoVxuICAgICAgICAgICAgICAgIDwvTGluaz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInNwYWNlLXktM1wiPlxuICAgICAgICAgICAgICAgIHtmaWx0ZXJlZENhcmRzLm1hcChjYXJkID0+IChcbiAgICAgICAgICAgICAgICAgIDxkaXYga2V5PXtjYXJkLmlkfSBjbGFzc05hbWU9XCJiZy13aGl0ZSBib3JkZXIgcm91bmRlZC1sZyBwLTQgaG92ZXI6c2hhZG93LW1kIHRyYW5zaXRpb24tc2hhZG93XCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4LTFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIgc3BhY2UteC00XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleC0xXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBzcGFjZS14LTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoNCBjbGFzc05hbWU9XCJmb250LXNlbWlib2xkIHRleHQtbGdcIj57Y2FyZC53b3JkIHx8ICfmnKroqK3lrponfTwvaDQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LXNtIHRleHQtZ3JheS01MDBcIj57Y2FyZC5wYXJ0T2ZTcGVlY2h9PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2NhcmQucHJvbnVuY2lhdGlvbiAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtc20gdGV4dC1ibHVlLTYwMFwiPntjYXJkLnByb251bmNpYXRpb259PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJ0ZXh0LWdyYXktNzAwIG10LTFcIj57Y2FyZC50cmFuc2xhdGlvbiB8fCAn5pyq6Kit5a6aJ308L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2NhcmQuZXhhbXBsZSAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJ0ZXh0LXNtIHRleHQtZ3JheS02MDAgbXQtMiBpdGFsaWNcIj7kvovlj6U6IHtjYXJkLmV4YW1wbGV9PC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBzcGFjZS14LTQgbXQtMiB0ZXh0LXhzIHRleHQtZ3JheS01MDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPuWNoee1hDoge2NhcmQuY2FyZFNldC5uYW1lfTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPueGn+e3tOW6pjoge2NhcmQubWFzdGVyeUxldmVsfS81PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+6KSH57+SOiB7Y2FyZC50aW1lc1Jldmlld2VkfSDmrKE8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj7kuIvmrKHopIfnv5I6IHtuZXcgRGF0ZShjYXJkLm5leHRSZXZpZXdEYXRlKS50b0xvY2FsZURhdGVTdHJpbmcoKX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBzcGFjZS14LTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gaGFuZGxlRWRpdChjYXJkKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidGV4dC1ibHVlLTYwMCBob3Zlcjp0ZXh0LWJsdWUtODAwIHRleHQtc21cIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICDnt6jovK9cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBoYW5kbGVEZWxldGUoY2FyZCl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInRleHQtcmVkLTYwMCBob3Zlcjp0ZXh0LXJlZC04MDAgdGV4dC1zbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIOWIqumZpFxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKX1cbiAgICAgIDwvZGl2PlxuXG4gICAgICB7LyogRmxhc2hjYXJkIEZvcm0gTW9kYWwgKi99XG4gICAgICB7c2hvd0Zvcm0gJiYgKFxuICAgICAgICA8Rmxhc2hjYXJkRm9ybVxuICAgICAgICAgIGNhcmRTZXRzPXtjYXJkU2V0c31cbiAgICAgICAgICBpbml0aWFsRGF0YT17ZWRpdGluZ0NhcmQgPyB7XG4gICAgICAgICAgICBpZDogZWRpdGluZ0NhcmQuaWQsXG4gICAgICAgICAgICBjYXJkU2V0SWQ6IGVkaXRpbmdDYXJkLmNhcmRTZXQgPyBjYXJkU2V0cy5maW5kKGNzID0+IGNzLm5hbWUgPT09IGVkaXRpbmdDYXJkLmNhcmRTZXQubmFtZSk/LmlkIHx8IGNhcmRTZXRzWzBdPy5pZCA6IGNhcmRTZXRzWzBdPy5pZCxcbiAgICAgICAgICAgIGVuZ2xpc2g6IGVkaXRpbmdDYXJkLndvcmQsXG4gICAgICAgICAgICBjaGluZXNlOiBlZGl0aW5nQ2FyZC50cmFuc2xhdGlvbixcbiAgICAgICAgICAgIHByb251bmNpYXRpb246IGVkaXRpbmdDYXJkLnByb251bmNpYXRpb24sXG4gICAgICAgICAgICBwYXJ0T2ZTcGVlY2g6IGVkaXRpbmdDYXJkLnBhcnRPZlNwZWVjaCxcbiAgICAgICAgICAgIGV4YW1wbGU6IGVkaXRpbmdDYXJkLmV4YW1wbGUsXG4gICAgICAgICAgfSA6IHVuZGVmaW5lZH1cbiAgICAgICAgICBpc0VkaXQ9eyEhZWRpdGluZ0NhcmR9XG4gICAgICAgICAgb25TdWNjZXNzPXtoYW5kbGVGb3JtU3VjY2Vzc31cbiAgICAgICAgICBvbkNhbmNlbD17KCkgPT4ge1xuICAgICAgICAgICAgc2V0U2hvd0Zvcm0oZmFsc2UpXG4gICAgICAgICAgICBzZXRFZGl0aW5nQ2FyZChudWxsKVxuICAgICAgICAgIH19XG4gICAgICAgIC8+XG4gICAgICApfVxuICAgIDwvZGl2PlxuICApXG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEZsYXNoY2FyZHNQYWdlKCkge1xuICByZXR1cm4gKFxuICAgIDxQcm90ZWN0ZWRSb3V0ZT5cbiAgICAgIDxGbGFzaGNhcmRzQ29udGVudCAvPlxuICAgIDwvUHJvdGVjdGVkUm91dGU+XG4gIClcbn0iXSwibmFtZXMiOlsidXNlU3RhdGUiLCJ1c2VFZmZlY3QiLCJMaW5rIiwiUHJvdGVjdGVkUm91dGUiLCJOYXZpZ2F0aW9uIiwiRmxhc2hjYXJkRm9ybSIsImZsYXNoY2FyZHNTZXJ2aWNlIiwiRmxhc2hjYXJkc0NvbnRlbnQiLCJjYXJkU2V0cyIsImFjdGl2ZVRhYiIsInNldEFjdGl2ZVRhYiIsInNlbGVjdGVkU2V0Iiwic2V0U2VsZWN0ZWRTZXQiLCJzZWFyY2hUZXJtIiwic2V0U2VhcmNoVGVybSIsInNldENhcmRTZXRzIiwiZmxhc2hjYXJkcyIsInNldEZsYXNoY2FyZHMiLCJsb2FkaW5nIiwic2V0TG9hZGluZyIsImVycm9yIiwic2V0RXJyb3IiLCJzaG93Rm9ybSIsInNldFNob3dGb3JtIiwiZWRpdGluZ0NhcmQiLCJzZXRFZGl0aW5nQ2FyZCIsImxvYWRDYXJkU2V0cyIsImxvYWRGbGFzaGNhcmRzIiwicmVzdWx0IiwiZ2V0Q2FyZFNldHMiLCJzdWNjZXNzIiwiZGF0YSIsInNldHMiLCJlcnIiLCJnZXRGbGFzaGNhcmRzIiwidW5kZWZpbmVkIiwiaGFuZGxlRm9ybVN1Y2Nlc3MiLCJoYW5kbGVFZGl0IiwiY2FyZCIsImhhbmRsZURlbGV0ZSIsImNvbmZpcm0iLCJ3b3JkIiwiZGVsZXRlRmxhc2hjYXJkIiwiaWQiLCJhbGVydCIsImZpbHRlcmVkU2V0cyIsImZpbHRlciIsInNldCIsIm5hbWUiLCJ0b0xvd2VyQ2FzZSIsImluY2x1ZGVzIiwiZGVzY3JpcHRpb24iLCJmaWx0ZXJlZENhcmRzIiwidHJhbnNsYXRpb24iLCJkaXYiLCJjbGFzc05hbWUiLCJoMSIsInAiLCJidXR0b24iLCJvbkNsaWNrIiwiaHJlZiIsImxlbmd0aCIsImlucHV0IiwidHlwZSIsInZhbHVlIiwib25DaGFuZ2UiLCJlIiwidGFyZ2V0IiwicGxhY2Vob2xkZXIiLCJzdmciLCJmaWxsIiwic3Ryb2tlIiwidmlld0JveCIsInBhdGgiLCJzdHJva2VMaW5lY2FwIiwic3Ryb2tlTGluZWpvaW4iLCJzdHJva2VXaWR0aCIsImQiLCJoMyIsIm1hcCIsImNvbG9yIiwiaDQiLCJzcGFuIiwiY2FyZENvdW50IiwicHJvZ3Jlc3MiLCJwYXJ0T2ZTcGVlY2giLCJwcm9udW5jaWF0aW9uIiwiZXhhbXBsZSIsImNhcmRTZXQiLCJtYXN0ZXJ5TGV2ZWwiLCJ0aW1lc1Jldmlld2VkIiwiRGF0ZSIsIm5leHRSZXZpZXdEYXRlIiwidG9Mb2NhbGVEYXRlU3RyaW5nIiwiaW5pdGlhbERhdGEiLCJjYXJkU2V0SWQiLCJmaW5kIiwiY3MiLCJlbmdsaXNoIiwiY2hpbmVzZSIsImlzRWRpdCIsIm9uU3VjY2VzcyIsIm9uQ2FuY2VsIiwiRmxhc2hjYXJkc1BhZ2UiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./app/flashcards/page.tsx\n")); /***/ }), @@ -30,6 +30,17 @@ eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* har /***/ }), +/***/ "(app-pages-browser)/./components/Navigation.tsx": +/*!***********************************!*\ + !*** ./components/Navigation.tsx ***! + \***********************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Navigation: () => (/* binding */ Navigation)\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 next_link__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! next/link */ \"(app-pages-browser)/./node_modules/next/dist/client/app-dir/link.js\");\n/* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(next_link__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var next_navigation__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! next/navigation */ \"(app-pages-browser)/./node_modules/next/dist/api/navigation.js\");\n/* harmony import */ var _contexts_AuthContext__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/contexts/AuthContext */ \"(app-pages-browser)/./contexts/AuthContext.tsx\");\n/* __next_internal_client_entry_do_not_use__ Navigation auto */ \nvar _s = $RefreshSig$();\n\n\n\nfunction Navigation() {\n var _user_username_, _user_username;\n _s();\n const { user, logout } = (0,_contexts_AuthContext__WEBPACK_IMPORTED_MODULE_3__.useAuth)();\n const pathname = (0,next_navigation__WEBPACK_IMPORTED_MODULE_2__.usePathname)();\n const navItems = [\n {\n href: '/dashboard',\n label: '儀表板'\n },\n {\n href: '/flashcards',\n label: '詞卡'\n },\n {\n href: '/learn',\n label: '學習'\n },\n {\n href: '/generate',\n label: 'AI 生成'\n }\n ];\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"nav\", {\n className: \"bg-white shadow-sm border-b\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"max-w-7xl mx-auto px-4 sm:px-6 lg:px-8\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex justify-between h-16\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center space-x-8\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_link__WEBPACK_IMPORTED_MODULE_1___default()), {\n href: \"/dashboard\",\n className: \"text-2xl font-bold text-primary\",\n children: \"DramaLing\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/components/Navigation.tsx\",\n lineNumber: 23,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"hidden md:flex space-x-6\",\n children: navItems.map((item)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_link__WEBPACK_IMPORTED_MODULE_1___default()), {\n href: item.href,\n className: \"font-medium transition-colors \".concat(pathname === item.href ? 'text-primary' : 'text-gray-600 hover:text-gray-900'),\n children: item.label\n }, item.href, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/components/Navigation.tsx\",\n lineNumber: 28,\n columnNumber: 17\n }, this))\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/components/Navigation.tsx\",\n lineNumber: 26,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/components/Navigation.tsx\",\n lineNumber: 22,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center space-x-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n className: \"p-2 text-gray-600 hover:text-gray-900\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n className: \"w-6 h-6\",\n fill: \"none\",\n stroke: \"currentColor\",\n viewBox: \"0 0 24 24\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n d: \"M15 17h5l-1.405-1.405A2.032 2.032 0 0118 14.158V11a6.002 6.002 0 00-4-5.659V5a2 2 0 10-4 0v.341C7.67 6.165 6 8.388 6 11v3.159c0 .538-.214 1.055-.595 1.436L4 17h5m6 0v1a3 3 0 11-6 0v-1m6 0H9\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/components/Navigation.tsx\",\n lineNumber: 47,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/components/Navigation.tsx\",\n lineNumber: 46,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/components/Navigation.tsx\",\n lineNumber: 45,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center space-x-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-8 h-8 bg-primary rounded-full flex items-center justify-center text-white font-semibold\",\n children: (user === null || user === void 0 ? void 0 : (_user_username = user.username) === null || _user_username === void 0 ? void 0 : (_user_username_ = _user_username[0]) === null || _user_username_ === void 0 ? void 0 : _user_username_.toUpperCase()) || 'U'\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/components/Navigation.tsx\",\n lineNumber: 53,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-sm font-medium\",\n children: (user === null || user === void 0 ? void 0 : user.displayName) || (user === null || user === void 0 ? void 0 : user.username)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/components/Navigation.tsx\",\n lineNumber: 56,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: logout,\n className: \"ml-4 text-sm text-gray-600 hover:text-gray-900\",\n children: \"登出\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/components/Navigation.tsx\",\n lineNumber: 57,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/components/Navigation.tsx\",\n lineNumber: 52,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/components/Navigation.tsx\",\n lineNumber: 43,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/components/Navigation.tsx\",\n lineNumber: 21,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/components/Navigation.tsx\",\n lineNumber: 20,\n columnNumber: 7\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/components/Navigation.tsx\",\n lineNumber: 19,\n columnNumber: 5\n }, this);\n}\n_s(Navigation, \"tHLzmZfHifuHte7SpZSOu+/8DHo=\", false, function() {\n return [\n _contexts_AuthContext__WEBPACK_IMPORTED_MODULE_3__.useAuth,\n next_navigation__WEBPACK_IMPORTED_MODULE_2__.usePathname\n ];\n});\n_c = Navigation;\nvar _c;\n$RefreshReg$(_c, \"Navigation\");\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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL2NvbXBvbmVudHMvTmF2aWdhdGlvbi50c3giLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFFNEI7QUFDaUI7QUFDRztBQUV6QyxTQUFTRztRQStDQ0MsaUJBQUFBOztJQTlDZixNQUFNLEVBQUVBLElBQUksRUFBRUMsTUFBTSxFQUFFLEdBQUdILDhEQUFPQTtJQUNoQyxNQUFNSSxXQUFXTCw0REFBV0E7SUFFNUIsTUFBTU0sV0FBVztRQUNmO1lBQUVDLE1BQU07WUFBY0MsT0FBTztRQUFNO1FBQ25DO1lBQUVELE1BQU07WUFBZUMsT0FBTztRQUFLO1FBQ25DO1lBQUVELE1BQU07WUFBVUMsT0FBTztRQUFLO1FBQzlCO1lBQUVELE1BQU07WUFBYUMsT0FBTztRQUFRO0tBQ3JDO0lBRUQscUJBQ0UsOERBQUNDO1FBQUlDLFdBQVU7a0JBQ2IsNEVBQUNDO1lBQUlELFdBQVU7c0JBQ2IsNEVBQUNDO2dCQUFJRCxXQUFVOztrQ0FDYiw4REFBQ0M7d0JBQUlELFdBQVU7OzBDQUNiLDhEQUFDWCxrREFBSUE7Z0NBQUNRLE1BQUs7Z0NBQWFHLFdBQVU7MENBQWtDOzs7Ozs7MENBR3BFLDhEQUFDQztnQ0FBSUQsV0FBVTswQ0FDWkosU0FBU00sR0FBRyxDQUFDLENBQUNDLHFCQUNiLDhEQUFDZCxrREFBSUE7d0NBRUhRLE1BQU1NLEtBQUtOLElBQUk7d0NBQ2ZHLFdBQVcsaUNBSVYsT0FIQ0wsYUFBYVEsS0FBS04sSUFBSSxHQUNsQixpQkFDQTtrREFHTE0sS0FBS0wsS0FBSzt1Q0FSTkssS0FBS04sSUFBSTs7Ozs7Ozs7Ozs7Ozs7OztrQ0FjdEIsOERBQUNJO3dCQUFJRCxXQUFVOzswQ0FFYiw4REFBQ0k7Z0NBQU9KLFdBQVU7MENBQ2hCLDRFQUFDSztvQ0FBSUwsV0FBVTtvQ0FBVU0sTUFBSztvQ0FBT0MsUUFBTztvQ0FBZUMsU0FBUTs4Q0FDakUsNEVBQUNDO3dDQUFLQyxlQUFjO3dDQUFRQyxnQkFBZTt3Q0FBUUMsYUFBYTt3Q0FBR0MsR0FBRTs7Ozs7Ozs7Ozs7Ozs7OzswQ0FLekUsOERBQUNaO2dDQUFJRCxXQUFVOztrREFDYiw4REFBQ0M7d0NBQUlELFdBQVU7a0RBQ1pQLENBQUFBLGlCQUFBQSw0QkFBQUEsaUJBQUFBLEtBQU1xQixRQUFRLGNBQWRyQixzQ0FBQUEsa0JBQUFBLGNBQWdCLENBQUMsRUFBRSxjQUFuQkEsc0NBQUFBLGdCQUFxQnNCLFdBQVcsT0FBTTs7Ozs7O2tEQUV6Qyw4REFBQ0M7d0NBQUtoQixXQUFVO2tEQUF1QlAsQ0FBQUEsaUJBQUFBLDJCQUFBQSxLQUFNd0IsV0FBVyxNQUFJeEIsaUJBQUFBLDJCQUFBQSxLQUFNcUIsUUFBUTs7Ozs7O2tEQUMxRSw4REFBQ1Y7d0NBQ0NjLFNBQVN4Qjt3Q0FDVE0sV0FBVTtrREFDWDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVNmO0dBOURnQlI7O1FBQ1dELDBEQUFPQTtRQUNmRCx3REFBV0E7OztLQUZkRSIsInNvdXJjZXMiOlsiL1VzZXJzL2pldHRjaGVuZzEwMTgvY29kZS9kcmFtYWxpbmctdm9jYWItbGVhcm5pbmcvZnJvbnRlbmQvY29tcG9uZW50cy9OYXZpZ2F0aW9uLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIGNsaWVudCdcclxuXHJcbmltcG9ydCBMaW5rIGZyb20gJ25leHQvbGluaydcclxuaW1wb3J0IHsgdXNlUGF0aG5hbWUgfSBmcm9tICduZXh0L25hdmlnYXRpb24nXHJcbmltcG9ydCB7IHVzZUF1dGggfSBmcm9tICdAL2NvbnRleHRzL0F1dGhDb250ZXh0J1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIE5hdmlnYXRpb24oKSB7XHJcbiAgY29uc3QgeyB1c2VyLCBsb2dvdXQgfSA9IHVzZUF1dGgoKVxyXG4gIGNvbnN0IHBhdGhuYW1lID0gdXNlUGF0aG5hbWUoKVxyXG5cclxuICBjb25zdCBuYXZJdGVtcyA9IFtcclxuICAgIHsgaHJlZjogJy9kYXNoYm9hcmQnLCBsYWJlbDogJ+WEgOihqOadvycgfSxcclxuICAgIHsgaHJlZjogJy9mbGFzaGNhcmRzJywgbGFiZWw6ICfoqZ7ljaEnIH0sXHJcbiAgICB7IGhyZWY6ICcvbGVhcm4nLCBsYWJlbDogJ+WtuOe/kicgfSxcclxuICAgIHsgaHJlZjogJy9nZW5lcmF0ZScsIGxhYmVsOiAnQUkg55Sf5oiQJyB9LFxyXG4gIF1cclxuXHJcbiAgcmV0dXJuIChcclxuICAgIDxuYXYgY2xhc3NOYW1lPVwiYmctd2hpdGUgc2hhZG93LXNtIGJvcmRlci1iXCI+XHJcbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwibWF4LXctN3hsIG14LWF1dG8gcHgtNCBzbTpweC02IGxnOnB4LThcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXgganVzdGlmeS1iZXR3ZWVuIGgtMTZcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIgc3BhY2UteC04XCI+XHJcbiAgICAgICAgICAgIDxMaW5rIGhyZWY9XCIvZGFzaGJvYXJkXCIgY2xhc3NOYW1lPVwidGV4dC0yeGwgZm9udC1ib2xkIHRleHQtcHJpbWFyeVwiPlxyXG4gICAgICAgICAgICAgIERyYW1hTGluZ1xyXG4gICAgICAgICAgICA8L0xpbms+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaGlkZGVuIG1kOmZsZXggc3BhY2UteC02XCI+XHJcbiAgICAgICAgICAgICAge25hdkl0ZW1zLm1hcCgoaXRlbSkgPT4gKFxyXG4gICAgICAgICAgICAgICAgPExpbmtcclxuICAgICAgICAgICAgICAgICAga2V5PXtpdGVtLmhyZWZ9XHJcbiAgICAgICAgICAgICAgICAgIGhyZWY9e2l0ZW0uaHJlZn1cclxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgZm9udC1tZWRpdW0gdHJhbnNpdGlvbi1jb2xvcnMgJHtcclxuICAgICAgICAgICAgICAgICAgICBwYXRobmFtZSA9PT0gaXRlbS5ocmVmXHJcbiAgICAgICAgICAgICAgICAgICAgICA/ICd0ZXh0LXByaW1hcnknXHJcbiAgICAgICAgICAgICAgICAgICAgICA6ICd0ZXh0LWdyYXktNjAwIGhvdmVyOnRleHQtZ3JheS05MDAnXHJcbiAgICAgICAgICAgICAgICAgIH1gfVxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICB7aXRlbS5sYWJlbH1cclxuICAgICAgICAgICAgICAgIDwvTGluaz5cclxuICAgICAgICAgICAgICApKX1cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIHNwYWNlLXgtNFwiPlxyXG4gICAgICAgICAgICB7Lyog6YCa55+l5oyJ6YiVICovfVxyXG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzTmFtZT1cInAtMiB0ZXh0LWdyYXktNjAwIGhvdmVyOnRleHQtZ3JheS05MDBcIj5cclxuICAgICAgICAgICAgICA8c3ZnIGNsYXNzTmFtZT1cInctNiBoLTZcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIj5cclxuICAgICAgICAgICAgICAgIDxwYXRoIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZUxpbmVqb2luPVwicm91bmRcIiBzdHJva2VXaWR0aD17Mn0gZD1cIk0xNSAxN2g1bC0xLjQwNS0xLjQwNUEyLjAzMiAyLjAzMiAwIDAxMTggMTQuMTU4VjExYTYuMDAyIDYuMDAyIDAgMDAtNC01LjY1OVY1YTIgMiAwIDEwLTQgMHYuMzQxQzcuNjcgNi4xNjUgNiA4LjM4OCA2IDExdjMuMTU5YzAgLjUzOC0uMjE0IDEuMDU1LS41OTUgMS40MzZMNCAxN2g1bTYgMHYxYTMgMyAwIDExLTYgMHYtMW02IDBIOVwiIC8+XHJcbiAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG5cclxuICAgICAgICAgICAgey8qIOeUqOaItuizh+ioiiAqL31cclxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBzcGFjZS14LTJcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctOCBoLTggYmctcHJpbWFyeSByb3VuZGVkLWZ1bGwgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgdGV4dC13aGl0ZSBmb250LXNlbWlib2xkXCI+XHJcbiAgICAgICAgICAgICAgICB7dXNlcj8udXNlcm5hbWU/LlswXT8udG9VcHBlckNhc2UoKSB8fCAnVSd9XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC1zbSBmb250LW1lZGl1bVwiPnt1c2VyPy5kaXNwbGF5TmFtZSB8fCB1c2VyPy51c2VybmFtZX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgb25DbGljaz17bG9nb3V0fVxyXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwibWwtNCB0ZXh0LXNtIHRleHQtZ3JheS02MDAgaG92ZXI6dGV4dC1ncmF5LTkwMFwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAg55m75Ye6XHJcbiAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9uYXY+XHJcbiAgKVxyXG59Il0sIm5hbWVzIjpbIkxpbmsiLCJ1c2VQYXRobmFtZSIsInVzZUF1dGgiLCJOYXZpZ2F0aW9uIiwidXNlciIsImxvZ291dCIsInBhdGhuYW1lIiwibmF2SXRlbXMiLCJocmVmIiwibGFiZWwiLCJuYXYiLCJjbGFzc05hbWUiLCJkaXYiLCJtYXAiLCJpdGVtIiwiYnV0dG9uIiwic3ZnIiwiZmlsbCIsInN0cm9rZSIsInZpZXdCb3giLCJwYXRoIiwic3Ryb2tlTGluZWNhcCIsInN0cm9rZUxpbmVqb2luIiwic3Ryb2tlV2lkdGgiLCJkIiwidXNlcm5hbWUiLCJ0b1VwcGVyQ2FzZSIsInNwYW4iLCJkaXNwbGF5TmFtZSIsIm9uQ2xpY2siXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./components/Navigation.tsx\n")); + +/***/ }), + /***/ "(app-pages-browser)/./components/ProtectedRoute.tsx": /*!***************************************!*\ !*** ./components/ProtectedRoute.tsx ***! diff --git a/frontend/.next/static/chunks/app/generate/page.js b/frontend/.next/static/chunks/app/generate/page.js new file mode 100644 index 0000000..61e3b51 --- /dev/null +++ b/frontend/.next/static/chunks/app/generate/page.js @@ -0,0 +1,138 @@ +/* + * 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/generate/page"],{ + +/***/ "(app-pages-browser)/./app/generate/page.tsx": +/*!*******************************!*\ + !*** ./app/generate/page.tsx ***! + \*******************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ GeneratePage)\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 next_link__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! next/link */ \"(app-pages-browser)/./node_modules/next/dist/client/app-dir/link.js\");\n/* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(next_link__WEBPACK_IMPORTED_MODULE_2__);\n/* __next_internal_client_entry_do_not_use__ default auto */ \nvar _s = $RefreshSig$();\n\n\nfunction GeneratePage() {\n _s();\n const [mode, setMode] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)('manual');\n const [textInput, setTextInput] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)('');\n const [extractionType, setExtractionType] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)('vocabulary');\n const [cardCount, setCardCount] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(10);\n const [isGenerating, setIsGenerating] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n const [generatedCards, setGeneratedCards] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)([]);\n const [showPreview, setShowPreview] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n const [isPremium] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false) // Mock premium status\n ;\n const [showImageForCard, setShowImageForCard] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)({}) // Track which cards show images\n ;\n const [modalImage, setModalImage] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null) // Track modal image\n ;\n const mockGeneratedCards = [\n {\n id: 1,\n word: 'brought',\n partOfSpeech: 'verb',\n pronunciation: {\n us: '/brɔːt/',\n uk: '/brɔːt/'\n },\n translation: '提出、帶來',\n definition: 'Past tense of bring; to mention or introduce a topic in conversation',\n synonyms: [\n 'mentioned',\n 'raised',\n 'introduced'\n ],\n antonyms: [\n 'concealed',\n 'withheld'\n ],\n originalExample: 'He brought this thing up during our meeting and no one agreed.',\n originalExampleTranslation: '他在我們的會議中提出了這件事,但沒有人同意。',\n generatedExample: {\n sentence: 'She brought up an interesting point about the budget.',\n translation: '她提出了一個關於預算的有趣觀點。',\n imageUrl: '/images/examples/bring_up.png',\n audioUrl: '#'\n },\n difficulty: 'B1'\n },\n {\n id: 2,\n word: 'instincts',\n partOfSpeech: 'noun',\n pronunciation: {\n us: '/ˈɪnstɪŋkts/',\n uk: '/ˈɪnstɪŋkts/'\n },\n translation: '本能、直覺',\n definition: 'Natural abilities that help living things survive without learning',\n synonyms: [\n 'intuition',\n 'impulse',\n 'tendency'\n ],\n antonyms: [\n 'logic',\n 'reasoning'\n ],\n originalExample: 'Animals use their instincts to find food and stay safe.',\n originalExampleTranslation: '動物利用本能來尋找食物並保持安全。',\n generatedExample: {\n sentence: 'Trust your instincts when making important decisions.',\n translation: '在做重要決定時要相信你的直覺。',\n imageUrl: '/images/examples/instinct.png',\n audioUrl: '#'\n },\n difficulty: 'B2'\n },\n {\n id: 3,\n word: 'warrants',\n partOfSpeech: 'noun',\n pronunciation: {\n us: '/ˈwɔːrənts/',\n uk: '/ˈwɒrənts/'\n },\n translation: '搜查令、授權令',\n definition: 'Official documents that give police permission to do something',\n synonyms: [\n 'authorization',\n 'permit',\n 'license'\n ],\n antonyms: [\n 'prohibition',\n 'ban'\n ],\n originalExample: 'The police obtained warrants to search the building.',\n originalExampleTranslation: '警方取得了搜查令來搜查這棟建築物。',\n generatedExample: {\n sentence: 'The judge issued arrest warrants for three suspects.',\n translation: '法官對三名嫌疑人發出了逮捕令。',\n imageUrl: '/images/examples/warrant.png',\n audioUrl: '#'\n },\n difficulty: 'C1'\n }\n ];\n const handleGenerate = ()=>{\n setIsGenerating(true);\n // Simulate AI generation\n setTimeout(()=>{\n setGeneratedCards(mockGeneratedCards);\n setShowPreview(true);\n setIsGenerating(false);\n }, 2000);\n };\n const handleSaveCards = ()=>{\n // Mock save action\n alert('詞卡已保存到您的卡組!');\n };\n const toggleImageForCard = (cardId)=>{\n setShowImageForCard((prev)=>({\n ...prev,\n [cardId]: !prev[cardId]\n }));\n };\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"min-h-screen bg-gray-50\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"nav\", {\n className: \"bg-white shadow-sm border-b\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"max-w-7xl mx-auto px-4 sm:px-6 lg:px-8\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex justify-between h-16\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center space-x-8\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_link__WEBPACK_IMPORTED_MODULE_2___default()), {\n href: \"/dashboard\",\n className: \"text-2xl font-bold text-primary\",\n children: \"DramaLing\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 116,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"hidden md:flex space-x-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_link__WEBPACK_IMPORTED_MODULE_2___default()), {\n href: \"/dashboard\",\n className: \"text-gray-600 hover:text-gray-900\",\n children: \"儀表板\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 118,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_link__WEBPACK_IMPORTED_MODULE_2___default()), {\n href: \"/flashcards\",\n className: \"text-gray-600 hover:text-gray-900\",\n children: \"詞卡\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 119,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_link__WEBPACK_IMPORTED_MODULE_2___default()), {\n href: \"/learn\",\n className: \"text-gray-600 hover:text-gray-900\",\n children: \"學習\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 120,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_link__WEBPACK_IMPORTED_MODULE_2___default()), {\n href: \"/generate\",\n className: \"text-gray-900 font-medium\",\n children: \"AI 生成\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 121,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 117,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 115,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 114,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 113,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 112,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-8\",\n children: !showPreview ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"max-w-4xl mx-auto\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h1\", {\n className: \"text-3xl font-bold mb-8\",\n children: \"AI 智能生成詞卡\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 131,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-white rounded-xl shadow-sm p-6 mb-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h2\", {\n className: \"text-lg font-semibold mb-4\",\n children: \"原始例句類型\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 135,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid grid-cols-2 gap-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>setMode('manual'),\n className: \"p-4 rounded-lg border-2 transition-all \".concat(mode === 'manual' ? 'border-primary bg-primary-light' : 'border-gray-200 hover:border-gray-300'),\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-2xl mb-2\",\n children: \"✍️\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 145,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"font-semibold\",\n children: \"手動輸入\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 146,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm text-gray-600 mt-1\",\n children: \"貼上或輸入英文文本\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 147,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 137,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>setMode('screenshot'),\n disabled: !isPremium,\n className: \"p-4 rounded-lg border-2 transition-all relative \".concat(mode === 'screenshot' ? 'border-primary bg-primary-light' : isPremium ? 'border-gray-200 hover:border-gray-300' : 'border-gray-200 bg-gray-100 cursor-not-allowed opacity-60'),\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-2xl mb-2\",\n children: \"\\uD83D\\uDCF7\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 160,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"font-semibold\",\n children: \"影劇截圖\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 161,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm text-gray-600 mt-1\",\n children: \"上傳影劇截圖 (Phase 2)\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 162,\n columnNumber: 19\n }, this),\n !isPremium && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute top-2 right-2 px-2 py-1 bg-yellow-100 text-yellow-700 text-xs rounded-full\",\n children: \"訂閱功能\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 164,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 149,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 136,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 134,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-white rounded-xl shadow-sm p-6 mb-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h2\", {\n className: \"text-lg font-semibold mb-4\",\n children: \"萃取方式\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 174,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid grid-cols-2 gap-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>setExtractionType('vocabulary'),\n className: \"p-4 rounded-lg border-2 transition-all \".concat(extractionType === 'vocabulary' ? 'border-primary bg-primary-light' : 'border-gray-200 hover:border-gray-300'),\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-2xl mb-2\",\n children: \"\\uD83D\\uDCD6\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 184,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"font-semibold\",\n children: \"詞彙萃取\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 185,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm text-gray-600 mt-1\",\n children: \"查詢字典 API 並標記 CEFR\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 186,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 176,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>setExtractionType('smart'),\n className: \"p-4 rounded-lg border-2 transition-all \".concat(extractionType === 'smart' ? 'border-primary bg-primary-light' : 'border-gray-200 hover:border-gray-300'),\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-2xl mb-2\",\n children: \"\\uD83E\\uDD16\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 196,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"font-semibold\",\n children: \"智能萃取\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 197,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm text-gray-600 mt-1\",\n children: \"AI 分析片語和俚語\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 198,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 188,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 175,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 173,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-white rounded-xl shadow-sm p-6 mb-6\",\n children: mode === 'manual' ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h2\", {\n className: \"text-lg font-semibold mb-4\",\n children: \"輸入英文文本\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 207,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"textarea\", {\n value: textInput,\n onChange: (e)=>setTextInput(e.target.value),\n placeholder: \"貼上您想要學習的英文文本,例如影劇對話、文章段落...\",\n className: \"w-full h-40 px-4 py-3 border border-gray-300 rounded-lg focus:ring-2 focus:ring-primary focus:border-transparent outline-none resize-none\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 208,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mt-2 text-sm text-gray-600\",\n children: [\n \"最多 5000 字元 • 目前:\",\n textInput.length,\n \" 字元\"\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 214,\n columnNumber: 19\n }, this),\n extractionType === 'vocabulary' ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mt-4 p-3 bg-blue-50 rounded-lg\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm text-blue-800\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"strong\", {\n children: \"\\uD83D\\uDCD6 詞彙萃取模式\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 222,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"ul\", {\n className: \"mt-2 space-y-1 text-xs\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"li\", {\n children: \"• 將每個單字查詢字典 API\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 224,\n columnNumber: 27\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"li\", {\n children: \"• 自動標記 CEFR 難度等級\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 225,\n columnNumber: 27\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"li\", {\n children: \"• 提供完整定義和例句\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 226,\n columnNumber: 27\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 223,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 221,\n columnNumber: 23\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 220,\n columnNumber: 21\n }, this) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mt-4 p-3 bg-purple-50 rounded-lg\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm text-purple-800\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"strong\", {\n children: \"\\uD83E\\uDD16 智能萃取模式\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 233,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"ul\", {\n className: \"mt-2 space-y-1 text-xs\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"li\", {\n children: \"• AI 分析常用片語和俚語\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 235,\n columnNumber: 27\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"li\", {\n children: \"• 生成相關詞彙內容\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 236,\n columnNumber: 27\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"li\", {\n children: \"• 提供文化背景說明\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 237,\n columnNumber: 27\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 234,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 232,\n columnNumber: 23\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 231,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 206,\n columnNumber: 17\n }, this) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h2\", {\n className: \"text-lg font-semibold mb-4\",\n children: \"上傳影劇截圖\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 245,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"border-2 border-dashed border-gray-300 rounded-lg p-8 text-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-4xl mb-3\",\n children: \"\\uD83D\\uDCF7\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 247,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-gray-600 mb-2\",\n children: \"點擊或拖拳上傳截圖\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 248,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm text-gray-500\",\n children: \"支持 JPG, PNG 格式,最大 10MB\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 249,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mt-4\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"inline-block px-4 py-2 bg-gray-100 text-gray-400 rounded-lg\",\n children: \"Phase 2 功能開發中\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 251,\n columnNumber: 23\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 250,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 246,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 244,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 204,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-white rounded-xl shadow-sm p-6 mb-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h2\", {\n className: \"text-lg font-semibold mb-4\",\n children: \"生成設定\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 262,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-y-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"label\", {\n className: \"block text-sm font-medium text-gray-700 mb-2\",\n children: [\n \"生成數量:\",\n cardCount,\n \" 個詞卡\"\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 265,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"range\",\n min: \"5\",\n max: \"20\",\n value: cardCount,\n onChange: (e)=>setCardCount(Number(e.target.value)),\n className: \"w-full\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 268,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex justify-between text-xs text-gray-500 mt-1\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n children: \"5\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 277,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n children: \"預設 10\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 278,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n children: \"20\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 279,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 276,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 264,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"p-3 bg-gray-50 rounded-lg\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm\",\n children: isPremium ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-green-700\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"strong\", {\n children: \"\\uD83C\\uDF1F 訂閱用戶\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 288,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs mt-1\",\n children: [\n \"• 每天最多生成 50 張例句圖\",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"br\", {}, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 291,\n columnNumber: 27\n }, this),\n \"• 今日已使用:0/50\"\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 289,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 287,\n columnNumber: 23\n }, this) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-gray-700\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"strong\", {\n children: \"\\uD83C\\uDD93 免費用戶\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 297,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs mt-1\",\n children: [\n \"• 無法自行生成例句圖\",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"br\", {}, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 300,\n columnNumber: 27\n }, this),\n \"• 可使用系統現成例句圖\",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"br\", {}, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 302,\n columnNumber: 27\n }, this),\n \"• 每日學習數量無限制\"\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 298,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 296,\n columnNumber: 23\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 285,\n columnNumber: 19\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 284,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 263,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 261,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: handleGenerate,\n disabled: isGenerating || mode === 'manual' && !textInput || mode === 'screenshot',\n className: \"w-full bg-primary text-white py-4 rounded-lg font-semibold hover:bg-primary-hover transition-colors disabled:opacity-50 disabled:cursor-not-allowed\",\n children: isGenerating ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"flex items-center justify-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n className: \"animate-spin -ml-1 mr-3 h-5 w-5 text-white\",\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"circle\", {\n className: \"opacity-25\",\n cx: \"12\",\n cy: \"12\",\n r: \"10\",\n stroke: \"currentColor\",\n strokeWidth: \"4\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 321,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"path\", {\n className: \"opacity-75\",\n fill: \"currentColor\",\n d: \"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 322,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 320,\n columnNumber: 19\n }, this),\n \"正在萃取詞彙中...\"\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 319,\n columnNumber: 17\n }, this) : extractionType === 'vocabulary' ? '📖 開始詞彙萃取' : '🤖 開始智能萃取'\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 313,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 130,\n columnNumber: 11\n }, this) : /* Preview Generated Cards */ /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"max-w-6xl mx-auto\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center justify-between mb-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h1\", {\n className: \"text-3xl font-bold\",\n children: \"生成結果預覽\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 337,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>setShowPreview(false),\n className: \"text-gray-600 hover:text-gray-900\",\n children: \"← 返回\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 338,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 336,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-white rounded-xl shadow-sm p-6 mb-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center justify-between mb-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h2\", {\n className: \"text-lg font-semibold\",\n children: [\n \"已生成 \",\n generatedCards.length,\n \" 個詞卡\"\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 348,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-x-3\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n className: \"text-primary hover:text-primary-hover font-medium\",\n children: \"重新生成\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 350,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: handleSaveCards,\n className: \"bg-primary text-white px-6 py-2 rounded-lg font-medium hover:bg-primary-hover transition-colors\",\n children: \"保存到卡組\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 353,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 349,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 347,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid grid-cols-1 lg:grid-cols-2 gap-6\",\n children: generatedCards.map((card)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"border rounded-lg p-5 hover:shadow-lg transition-shadow\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-start justify-between mb-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h3\", {\n className: \"text-xl font-bold\",\n children: card.word\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 367,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-4 mt-1\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-sm text-gray-600\",\n children: card.partOfSpeech\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 369,\n columnNumber: 27\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n className: \"text-xs bg-gray-100 px-2 py-1 rounded hover:bg-gray-200\",\n children: [\n \"\\uD83C\\uDDFA\\uD83C\\uDDF8 \",\n card.pronunciation.us\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 371,\n columnNumber: 29\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n className: \"text-xs bg-gray-100 px-2 py-1 rounded hover:bg-gray-200\",\n children: [\n \"\\uD83C\\uDDEC\\uD83C\\uDDE7 \",\n card.pronunciation.uk\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 374,\n columnNumber: 29\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n className: \"text-primary hover:text-primary-hover\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n className: \"w-4 h-4\",\n fill: \"none\",\n stroke: \"currentColor\",\n viewBox: \"0 0 24 24\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n d: \"M15.536 8.464a5 5 0 010 7.072m2.828-9.9a9 9 0 010 12.728M5.586 15H4a1 1 0 01-1-1v-4a1 1 0 011-1h1.586l4.707-4.707C10.923 3.663 12 4.109 12 5v14c0 .891-1.077 1.337-1.707.707L5.586 15z\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 379,\n columnNumber: 33\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 378,\n columnNumber: 31\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 377,\n columnNumber: 29\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 370,\n columnNumber: 27\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 368,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 366,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n className: \"text-red-500 hover:text-red-700 text-2xl\",\n children: \"\\xd7\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 385,\n columnNumber: 23\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 365,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-y-3\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm font-semibold text-gray-700\",\n children: \"翻譯\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 390,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-base font-medium\",\n children: card.translation\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 391,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 389,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm font-semibold text-gray-700\",\n children: \"定義\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 395,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm text-gray-600\",\n children: card.definition\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 396,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 394,\n columnNumber: 23\n }, this),\n card.synonyms.length > 0 && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm font-semibold text-gray-700\",\n children: \"同義詞\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 401,\n columnNumber: 27\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-wrap gap-2 mt-1\",\n children: card.synonyms.map((syn, idx)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"px-2 py-1 bg-blue-100 text-blue-700 rounded-full text-xs\",\n children: syn\n }, idx, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 404,\n columnNumber: 31\n }, this))\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 402,\n columnNumber: 27\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 400,\n columnNumber: 25\n }, this),\n card.antonyms.length > 0 && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm font-semibold text-gray-700\",\n children: \"反義詞\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 414,\n columnNumber: 27\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-wrap gap-2 mt-1\",\n children: card.antonyms.map((ant, idx)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"px-2 py-1 bg-red-100 text-red-700 rounded-full text-xs\",\n children: ant\n }, idx, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 417,\n columnNumber: 31\n }, this))\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 415,\n columnNumber: 27\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 413,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm font-semibold text-gray-700 mb-2\",\n children: \"例句\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 426,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-y-3\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"border-l-2 border-gray-400 pl-3\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-start justify-between\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs text-gray-500 mb-1\",\n children: \"原始例句(來自輸入文本)\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 432,\n columnNumber: 33\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm text-gray-800\",\n children: card.originalExample.split(card.word).map((part, i)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n children: [\n part,\n i < card.originalExample.split(card.word).length - 1 && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"font-bold text-primary\",\n children: card.word\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 438,\n columnNumber: 41\n }, this)\n ]\n }, i, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 435,\n columnNumber: 37\n }, this))\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 433,\n columnNumber: 33\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm text-gray-500 mt-1\",\n children: card.originalExampleTranslation\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 443,\n columnNumber: 33\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 431,\n columnNumber: 31\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-1 ml-2\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n className: \"text-gray-400 hover:text-primary\",\n title: \"播放例句\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n className: \"w-4 h-4\",\n fill: \"none\",\n stroke: \"currentColor\",\n viewBox: \"0 0 24 24\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n d: \"M14.752 11.168l-3.197-2.132A1 1 0 0010 9.87v4.263a1 1 0 001.555.832l3.197-2.132a1 1 0 000-1.664z\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 448,\n columnNumber: 37\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n d: \"M21 12a9 9 0 11-18 0 9 9 0 0118 0z\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 449,\n columnNumber: 37\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 447,\n columnNumber: 35\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 446,\n columnNumber: 33\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 445,\n columnNumber: 31\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 430,\n columnNumber: 29\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 429,\n columnNumber: 27\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"border-l-2 border-primary pl-3\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-start justify-between\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs text-primary mb-1\",\n children: \"AI 生成例句\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 460,\n columnNumber: 33\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm text-gray-800\",\n children: card.generatedExample.sentence.split(card.word).map((part, i)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n children: [\n part,\n i < card.generatedExample.sentence.split(card.word).length - 1 && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"font-bold text-primary\",\n children: card.word\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 466,\n columnNumber: 41\n }, this)\n ]\n }, i, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 463,\n columnNumber: 37\n }, this))\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 461,\n columnNumber: 33\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm text-gray-500 mt-1\",\n children: card.generatedExample.translation\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 471,\n columnNumber: 33\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 459,\n columnNumber: 31\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-1 ml-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n className: \"text-gray-400 hover:text-primary\",\n title: \"播放例句\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n className: \"w-4 h-4\",\n fill: \"none\",\n stroke: \"currentColor\",\n viewBox: \"0 0 24 24\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n d: \"M14.752 11.168l-3.197-2.132A1 1 0 0010 9.87v4.263a1 1 0 001.555.832l3.197-2.132a1 1 0 000-1.664z\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 476,\n columnNumber: 37\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n d: \"M21 12a9 9 0 11-18 0 9 9 0 0118 0z\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 477,\n columnNumber: 37\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 475,\n columnNumber: 35\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 474,\n columnNumber: 33\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>toggleImageForCard(card.id),\n className: \"\".concat(showImageForCard[card.id] ? 'text-primary' : 'text-gray-400', \" hover:text-primary\"),\n title: showImageForCard[card.id] ? \"隱藏例句圖\" : \"查看例句圖\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n className: \"w-4 h-4\",\n fill: \"none\",\n stroke: \"currentColor\",\n viewBox: \"0 0 24 24\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n d: \"M4 16l4.586-4.586a2 2 0 012.828 0L16 16m-2-2l1.586-1.586a2 2 0 012.828 0L20 14m-6-6h.01M6 20h12a2 2 0 002-2V6a2 2 0 00-2-2H6a2 2 0 00-2 2v12a2 2 0 002 2z\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 486,\n columnNumber: 37\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 485,\n columnNumber: 35\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 480,\n columnNumber: 33\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 473,\n columnNumber: 31\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 458,\n columnNumber: 29\n }, this),\n showImageForCard[card.id] && card.generatedExample.imageUrl && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mt-3 p-2 bg-gray-50 rounded-lg\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs text-gray-600 mb-2 flex items-center gap-1\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n className: \"w-3 h-3\",\n fill: \"none\",\n stroke: \"currentColor\",\n viewBox: \"0 0 24 24\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n d: \"M4 16l4.586-4.586a2 2 0 012.828 0L16 16m-2-2l1.586-1.586a2 2 0 012.828 0L20 14m-6-6h.01M6 20h12a2 2 0 002-2V6a2 2 0 00-2-2H6a2 2 0 00-2 2v12a2 2 0 002 2z\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 497,\n columnNumber: 37\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 496,\n columnNumber: 35\n }, this),\n \"例句情境圖\"\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 495,\n columnNumber: 33\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"img\", {\n src: card.generatedExample.imageUrl,\n alt: \"Example context\",\n className: \"w-full rounded-md shadow-sm cursor-pointer hover:shadow-lg transition-shadow\",\n style: {\n maxHeight: '250px',\n objectFit: 'contain',\n backgroundColor: 'white'\n },\n onClick: ()=>setModalImage(card.generatedExample.imageUrl)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 501,\n columnNumber: 33\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs text-gray-500 mt-2 text-center\",\n children: \"點擊圖片可放大查看\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 508,\n columnNumber: 33\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 494,\n columnNumber: 31\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 457,\n columnNumber: 27\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 427,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 425,\n columnNumber: 23\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 388,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mt-4 pt-3 border-t flex justify-between items-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-xs text-gray-500\",\n children: [\n \"難度:CEFR \",\n card.difficulty\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 517,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n className: \"text-primary text-sm hover:text-primary-hover font-medium\",\n children: \"編輯詞卡\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 518,\n columnNumber: 23\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 516,\n columnNumber: 21\n }, this)\n ]\n }, card.id, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 364,\n columnNumber: 19\n }, this))\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 362,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 346,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 335,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 128,\n columnNumber: 7\n }, this),\n modalImage && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"fixed inset-0 z-50 flex items-center justify-center bg-black bg-opacity-75 p-4\",\n onClick: ()=>setModalImage(null),\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"relative max-w-4xl max-h-[90vh] bg-white rounded-lg overflow-hidden\",\n onClick: (e)=>e.stopPropagation(),\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>setModalImage(null),\n className: \"absolute top-2 right-2 z-10 p-2 bg-white bg-opacity-90 rounded-full hover:bg-opacity-100 transition-all shadow-lg\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n className: \"w-6 h-6 text-gray-700\",\n fill: \"none\",\n stroke: \"currentColor\",\n viewBox: \"0 0 24 24\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n d: \"M6 18L18 6M6 6l12 12\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 546,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 545,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 541,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"p-4\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"img\", {\n src: modalImage,\n alt: \"Example context enlarged\",\n className: \"w-full h-full object-contain\",\n style: {\n maxHeight: 'calc(90vh - 2rem)'\n }\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 552,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 551,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 536,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 532,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx\",\n lineNumber: 110,\n columnNumber: 5\n }, this);\n}\n_s(GeneratePage, \"SR4WKCEIgepGcdB5gx1uOTRMcek=\");\n_c = GeneratePage;\nvar _c;\n$RefreshReg$(_c, \"GeneratePage\");\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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL2FwcC9nZW5lcmF0ZS9wYWdlLnRzeCIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUVnQztBQUNKO0FBRWIsU0FBU0U7O0lBQ3RCLE1BQU0sQ0FBQ0MsTUFBTUMsUUFBUSxHQUFHSiwrQ0FBUUEsQ0FBMEI7SUFDMUQsTUFBTSxDQUFDSyxXQUFXQyxhQUFhLEdBQUdOLCtDQUFRQSxDQUFDO0lBQzNDLE1BQU0sQ0FBQ08sZ0JBQWdCQyxrQkFBa0IsR0FBR1IsK0NBQVFBLENBQXlCO0lBQzdFLE1BQU0sQ0FBQ1MsV0FBV0MsYUFBYSxHQUFHViwrQ0FBUUEsQ0FBQztJQUMzQyxNQUFNLENBQUNXLGNBQWNDLGdCQUFnQixHQUFHWiwrQ0FBUUEsQ0FBQztJQUNqRCxNQUFNLENBQUNhLGdCQUFnQkMsa0JBQWtCLEdBQUdkLCtDQUFRQSxDQUFRLEVBQUU7SUFDOUQsTUFBTSxDQUFDZSxhQUFhQyxlQUFlLEdBQUdoQiwrQ0FBUUEsQ0FBQztJQUMvQyxNQUFNLENBQUNpQixVQUFVLEdBQUdqQiwrQ0FBUUEsQ0FBQyxPQUFPLHNCQUFzQjs7SUFDMUQsTUFBTSxDQUFDa0Isa0JBQWtCQyxvQkFBb0IsR0FBR25CLCtDQUFRQSxDQUE2QixDQUFDLEdBQUcsZ0NBQWdDOztJQUN6SCxNQUFNLENBQUNvQixZQUFZQyxjQUFjLEdBQUdyQiwrQ0FBUUEsQ0FBZ0IsTUFBTSxvQkFBb0I7O0lBRXRGLE1BQU1zQixxQkFBcUI7UUFDekI7WUFDRUMsSUFBSTtZQUNKQyxNQUFNO1lBQ05DLGNBQWM7WUFDZEMsZUFBZTtnQkFDYkMsSUFBSTtnQkFDSkMsSUFBSTtZQUNOO1lBQ0FDLGFBQWE7WUFDYkMsWUFBWTtZQUNaQyxVQUFVO2dCQUFDO2dCQUFhO2dCQUFVO2FBQWE7WUFDL0NDLFVBQVU7Z0JBQUM7Z0JBQWE7YUFBVztZQUNuQ0MsaUJBQWlCO1lBQ2pCQyw0QkFBNEI7WUFDNUJDLGtCQUFrQjtnQkFDaEJDLFVBQVU7Z0JBQ1ZQLGFBQWE7Z0JBQ2JRLFVB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Z0VBQVN1QyxLQUFLaEQsVUFBVTs7Ozs7OztzRUFDaEUsOERBQUNjOzREQUFPTCxXQUFVO3NFQUE0RDs7Ozs7Ozs7Ozs7OzsyQ0ExSnhFdUMsS0FBS2hFLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZQXVLNUJILDRCQUNDLDhEQUFDMkI7Z0JBQ0NDLFdBQVU7Z0JBQ1ZNLFNBQVMsSUFBTWpDLGNBQWM7MEJBRTdCLDRFQUFDMEI7b0JBQ0NDLFdBQVU7b0JBQ1ZNLFNBQVMsQ0FBQ0ssSUFBTUEsRUFBRThDLGVBQWU7O3NDQUdqQyw4REFBQ3BEOzRCQUNDQyxTQUFTLElBQU1qQyxjQUFjOzRCQUM3QjJCLFdBQVU7c0NBRVYsNEVBQUMwQjtnQ0FBSTFCLFdBQVU7Z0NBQXdCNEIsTUFBSztnQ0FBT00sUUFBTztnQ0FBZUwsU0FBUTswQ0FDL0UsNEVBQUNPO29DQUFLSyxlQUFjO29DQUFRQyxnQkFBZTtvQ0FBUVAsYUFBYTtvQ0FBR0UsR0FBRTs7Ozs7Ozs7Ozs7Ozs7OztzQ0FLekUsOERBQUN0Qzs0QkFBSUMsV0FBVTtzQ0FDYiw0RUFBQ2tEO2dDQUNDQyxLQUFLL0U7Z0NBQ0xnRixLQUFJO2dDQUNKcEQsV0FBVTtnQ0FDVnFELE9BQU87b0NBQUVDLFdBQVc7Z0NBQW9COzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBUXhEO0dBOWlCd0JwRztLQUFBQSIsInNvdXJjZXMiOlsiL1VzZXJzL2pldHRjaGVuZzEwMTgvY29kZS9kcmFtYWxpbmctdm9jYWItbGVhcm5pbmcvZnJvbnRlbmQvYXBwL2dlbmVyYXRlL3BhZ2UudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2UgY2xpZW50J1xuXG5pbXBvcnQgeyB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IExpbmsgZnJvbSAnbmV4dC9saW5rJ1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBHZW5lcmF0ZVBhZ2UoKSB7XG4gIGNvbnN0IFttb2RlLCBzZXRNb2RlXSA9IHVzZVN0YXRlPCdtYW51YWwnIHwgJ3NjcmVlbnNob3QnPignbWFudWFsJylcbiAgY29uc3QgW3RleHRJbnB1dCwgc2V0VGV4dElucHV0XSA9IHVzZVN0YXRlKCcnKVxuICBjb25zdCBbZXh0cmFjdGlvblR5cGUsIHNldEV4dHJhY3Rpb25UeXBlXSA9IHVzZVN0YXRlPCd2b2NhYnVsYXJ5JyB8ICdzbWFydCc+KCd2b2NhYnVsYXJ5JylcbiAgY29uc3QgW2NhcmRDb3VudCwgc2V0Q2FyZENvdW50XSA9IHVzZVN0YXRlKDEwKVxuICBjb25zdCBbaXNHZW5lcmF0aW5nLCBzZXRJc0dlbmVyYXRpbmddID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtnZW5lcmF0ZWRDYXJkcywgc2V0R2VuZXJhdGVkQ2FyZHNdID0gdXNlU3RhdGU8YW55W10+KFtdKVxuICBjb25zdCBbc2hvd1ByZXZpZXcsIHNldFNob3dQcmV2aWV3XSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbaXNQcmVtaXVtXSA9IHVzZVN0YXRlKGZhbHNlKSAvLyBNb2NrIHByZW1pdW0gc3RhdHVzXG4gIGNvbnN0IFtzaG93SW1hZ2VGb3JDYXJkLCBzZXRTaG93SW1hZ2VGb3JDYXJkXSA9IHVzZVN0YXRlPHsgW2tleTogbnVtYmVyXTogYm9vbGVhbiB9Pih7fSkgLy8gVHJhY2sgd2hpY2ggY2FyZHMgc2hvdyBpbWFnZXNcbiAgY29uc3QgW21vZGFsSW1hZ2UsIHNldE1vZGFsSW1hZ2VdID0gdXNlU3RhdGU8c3RyaW5nIHwgbnVsbD4obnVsbCkgLy8gVHJhY2sgbW9kYWwgaW1hZ2VcblxuICBjb25zdCBtb2NrR2VuZXJhdGVkQ2FyZHMgPSBbXG4gICAge1xuICAgICAgaWQ6IDEsXG4gICAgICB3b3JkOiAnYnJvdWdodCcsXG4gICAgICBwYXJ0T2ZTcGVlY2g6ICd2ZXJiJyxcbiAgICAgIHByb251bmNpYXRpb246IHtcbiAgICAgICAgdXM6ICcvYnLJlMuQdC8nLFxuICAgICAgICB1azogJy9icsmUy5B0LydcbiAgICAgIH0sXG4gICAgICB0cmFuc2xhdGlvbjogJ+aPkOWHuuOAgeW4tuS+hicsXG4gICAgICBkZWZpbml0aW9uOiAnUGFzdCB0ZW5zZSBvZiBicmluZzsgdG8gbWVudGlvbiBvciBpbnRyb2R1Y2UgYSB0b3BpYyBpbiBjb252ZXJzYXRpb24nLFxuICAgICAgc3lub255bXM6IFsnbWVudGlvbmVkJywgJ3JhaXNlZCcsICdpbnRyb2R1Y2VkJ10sXG4gICAgICBhbnRvbnltczogWydjb25jZWFsZWQnLCAnd2l0aGhlbGQnXSxcbiAgICAgIG9yaWdpbmFsRXhhbXBsZTogJ0hlIGJyb3VnaHQgdGhpcyB0aGluZyB1cCBkdXJpbmcgb3VyIG1lZXRpbmcgYW5kIG5vIG9uZSBhZ3JlZWQuJyxcbiAgICAgIG9yaWdpbmFsRXhhbXBsZVRyYW5zbGF0aW9uOiAn5LuW5Zyo5oiR5YCR55qE5pyD6K2w5Lit5o+Q5Ye65LqG6YCZ5Lu25LqL77yM5L2G5rKS5pyJ5Lq65ZCM5oSP44CCJyxcbiAgICAgIGdlbmVyYXRlZEV4YW1wbGU6IHtcbiAgICAgICAgc2VudGVuY2U6ICdTaGUgYnJvdWdodCB1cCBhbiBpbnRlcmVzdGluZyBwb2ludCBhYm91dCB0aGUgYnVkZ2V0LicsXG4gICAgICAgIHRyYW5zbGF0aW9uOiAn5aW55o+Q5Ye65LqG5LiA5YCL6Zec5pa86aCQ566X55qE5pyJ6Laj6KeA6bue44CCJyxcbiAgICAgICAgaW1hZ2VVcmw6ICcvaW1hZ2VzL2V4YW1wbGVzL2JyaW5nX3VwLnBuZycsXG4gICAgICAgIGF1ZGlvVXJsOiAnIydcbiAgICAgIH0sXG4gICAgICBkaWZmaWN1bHR5OiAnQjEnXG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogMixcbiAgICAgIHdvcmQ6ICdpbnN0aW5jdHMnLFxuICAgICAgcGFydE9mU3BlZWNoOiAnbm91bicsXG4gICAgICBwcm9udW5jaWF0aW9uOiB7XG4gICAgICAgIHVzOiAnL8uIyapuc3TJqsWLa3RzLycsXG4gICAgICAgIHVrOiAnL8uIyapuc3TJqsWLa3RzLydcbiAgICAgIH0sXG4gICAgICB0cmFuc2xhdGlvbjogJ+acrOiDveOAgeebtOimuicsXG4gICAgICBkZWZpbml0aW9uOiAnTmF0dXJhbCBhYmlsaXRpZXMgdGhhdCBoZWxwIGxpdmluZyB0aGluZ3Mgc3Vydml2ZSB3aXRob3V0IGxlYXJuaW5nJyxcbiAgICAgIHN5bm9ueW1zOiBbJ2ludHVpdGlvbicsICdpbXB1bHNlJywgJ3RlbmRlbmN5J10sXG4gICAgICBhbnRvbnltczogWydsb2dpYycsICdyZWFzb25pbmcnXSxcbiAgICAgIG9yaWdpbmFsRXhhbXBsZTogJ0FuaW1hbHMgdXNlIHRoZWlyIGluc3RpbmN0cyB0byBmaW5kIGZvb2QgYW5kIHN0YXkgc2FmZS4nLFxuICAgICAgb3JpZ2luYWxFeGFtcGxlVHJhbnNsYXRpb246ICfli5XnianliKnnlKjmnKzog73kvoblsIvmib7po5/niankuKbkv53mjIHlronlhajjgIInLFxuICAgICAgZ2VuZXJhdGVkRXhhbXBsZToge1xuICAgICAgICBzZW50ZW5jZTogJ1RydXN0IHlvdXIgaW5zdGluY3RzIHdoZW4gbWFraW5nIGltcG9ydGFudCBkZWNpc2lvbnMuJyxcbiAgICAgICAgdHJhbnNsYXRpb246ICflnKjlgZrph43opoHmsbrlrprmmYLopoHnm7jkv6HkvaDnmoTnm7ToprrjgIInLFxuICAgICAgICBpbWFnZVVybDogJy9pbWFnZXMvZXhhbXBsZXMvaW5zdGluY3QucG5nJyxcbiAgICAgICAgYXVkaW9Vcmw6ICcjJ1xuICAgICAgfSxcbiAgICAgIGRpZmZpY3VsdHk6ICdCMidcbiAgICB9LFxuICAgIHtcbiAgICAgIGlkOiAzLFxuICAgICAgd29yZDogJ3dhcnJhbnRzJyxcbiAgICAgIHBhcnRPZlNwZWVjaDogJ25vdW4nLFxuICAgICAgcHJvbnVuY2lhdGlvbjoge1xuICAgICAgICB1czogJy/LiHfJlMuQcsmZbnRzLycsXG4gICAgICAgIHVrOiAnL8uId8mScsmZbnRzLydcbiAgICAgIH0sXG4gICAgICB0cmFuc2xhdGlvbjogJ+aQnOafpeS7pOOAgeaOiOasiuS7pCcsXG4gICAgICBkZWZpbml0aW9uOiAnT2ZmaWNpYWwgZG9jdW1lbnRzIHRoYXQgZ2l2ZSBwb2xpY2UgcGVybWlzc2lvbiB0byBkbyBzb21ldGhpbmcnLFxuICAgICAgc3lub255bXM6IFsnYXV0aG9yaXphdGlvbicsICdwZXJtaXQnLCAnbGljZW5zZSddLFxuICAgICAgYW50b255bXM6IFsncHJvaGliaXRpb24nLCAnYmFuJ10sXG4gICAgICBvcmlnaW5hbEV4YW1wbGU6ICdUaGUgcG9saWNlIG9idGFpbmVkIHdhcnJhbnRzIHRvIHNlYXJjaCB0aGUgYnVpbGRpbmcuJyxcbiAgICAgIG9yaWdpbmFsRXhhbXBsZVRyYW5zbGF0aW9uOiAn6K2m5pa55Y+W5b6X5LqG5pCc5p+l5Luk5L6G5pCc5p+l6YCZ5qOf5bu656+J54mp44CCJyxcbiAgICAgIGdlbmVyYXRlZEV4YW1wbGU6IHtcbiAgICAgICAgc2VudGVuY2U6ICdUaGUganVkZ2UgaXNzdWVkIGFycmVzdCB3YXJyYW50cyBmb3IgdGhyZWUgc3VzcGVjdHMuJyxcbiAgICAgICAgdHJhbnNsYXRpb246ICfms5XlrpjlsI3kuInlkI3lq4znlpHkurrnmbzlh7rkuobpgK7mjZXku6TjgIInLFxuICAgICAgICBpbWFnZVVybDogJy9pbWFnZXMvZXhhbXBsZXMvd2FycmFudC5wbmcnLFxuICAgICAgICBhdWRpb1VybDogJyMnXG4gICAgICB9LFxuICAgICAgZGlmZmljdWx0eTogJ0MxJ1xuICAgIH1cbiAgXVxuXG4gIGNvbnN0IGhhbmRsZUdlbmVyYXRlID0gKCkgPT4ge1xuICAgIHNldElzR2VuZXJhdGluZyh0cnVlKVxuICAgIC8vIFNpbXVsYXRlIEFJIGdlbmVyYXRpb25cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHNldEdlbmVyYXRlZENhcmRzKG1vY2tHZW5lcmF0ZWRDYXJkcylcbiAgICAgIHNldFNob3dQcmV2aWV3KHRydWUpXG4gICAgICBzZXRJc0dlbmVyYXRpbmcoZmFsc2UpXG4gICAgfSwgMjAwMClcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZVNhdmVDYXJkcyA9ICgpID0+IHtcbiAgICAvLyBNb2NrIHNhdmUgYWN0aW9uXG4gICAgYWxlcnQoJ+ipnuWNoeW3suS/neWtmOWIsOaCqOeahOWNoee1hO+8gScpXG4gIH1cblxuICBjb25zdCB0b2dnbGVJbWFnZUZvckNhcmQgPSAoY2FyZElkOiBudW1iZXIpID0+IHtcbiAgICBzZXRTaG93SW1hZ2VGb3JDYXJkKHByZXYgPT4gKHtcbiAgICAgIC4uLnByZXYsXG4gICAgICBbY2FyZElkXTogIXByZXZbY2FyZElkXVxuICAgIH0pKVxuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cIm1pbi1oLXNjcmVlbiBiZy1ncmF5LTUwXCI+XG4gICAgICB7LyogTmF2aWdhdGlvbiAqL31cbiAgICAgIDxuYXYgY2xhc3NOYW1lPVwiYmctd2hpdGUgc2hhZG93LXNtIGJvcmRlci1iXCI+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibWF4LXctN3hsIG14LWF1dG8gcHgtNCBzbTpweC02IGxnOnB4LThcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXgganVzdGlmeS1iZXR3ZWVuIGgtMTZcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIgc3BhY2UteC04XCI+XG4gICAgICAgICAgICAgIDxMaW5rIGhyZWY9XCIvZGFzaGJvYXJkXCIgY2xhc3NOYW1lPVwidGV4dC0yeGwgZm9udC1ib2xkIHRleHQtcHJpbWFyeVwiPkRyYW1hTGluZzwvTGluaz5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJoaWRkZW4gbWQ6ZmxleCBzcGFjZS14LTZcIj5cbiAgICAgICAgICAgICAgICA8TGluayBocmVmPVwiL2Rhc2hib2FyZFwiIGNsYXNzTmFtZT1cInRleHQtZ3JheS02MDAgaG92ZXI6dGV4dC1ncmF5LTkwMFwiPuWEgOihqOadvzwvTGluaz5cbiAgICAgICAgICAgICAgICA8TGluayBocmVmPVwiL2ZsYXNoY2FyZHNcIiBjbGFzc05hbWU9XCJ0ZXh0LWdyYXktNjAwIGhvdmVyOnRleHQtZ3JheS05MDBcIj7oqZ7ljaE8L0xpbms+XG4gICAgICAgICAgICAgICAgPExpbmsgaHJlZj1cIi9sZWFyblwiIGNsYXNzTmFtZT1cInRleHQtZ3JheS02MDAgaG92ZXI6dGV4dC1ncmF5LTkwMFwiPuWtuOe/kjwvTGluaz5cbiAgICAgICAgICAgICAgICA8TGluayBocmVmPVwiL2dlbmVyYXRlXCIgY2xhc3NOYW1lPVwidGV4dC1ncmF5LTkwMCBmb250LW1lZGl1bVwiPkFJIOeUn+aIkDwvTGluaz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25hdj5cblxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJtYXgtdy03eGwgbXgtYXV0byBweC00IHNtOnB4LTYgbGc6cHgtOCBweS04XCI+XG4gICAgICAgIHshc2hvd1ByZXZpZXcgPyAoXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtYXgtdy00eGwgbXgtYXV0b1wiPlxuICAgICAgICAgICAgPGgxIGNsYXNzTmFtZT1cInRleHQtM3hsIGZvbnQtYm9sZCBtYi04XCI+QUkg5pm66IO955Sf5oiQ6Kme5Y2hPC9oMT5cblxuICAgICAgICAgICAgey8qIElucHV0IE1vZGUgU2VsZWN0aW9uICovfVxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJiZy13aGl0ZSByb3VuZGVkLXhsIHNoYWRvdy1zbSBwLTYgbWItNlwiPlxuICAgICAgICAgICAgICA8aDIgY2xhc3NOYW1lPVwidGV4dC1sZyBmb250LXNlbWlib2xkIG1iLTRcIj7ljp/lp4vkvovlj6XpoZ7lnos8L2gyPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImdyaWQgZ3JpZC1jb2xzLTIgZ2FwLTRcIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRNb2RlKCdtYW51YWwnKX1cbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17YHAtNCByb3VuZGVkLWxnIGJvcmRlci0yIHRyYW5zaXRpb24tYWxsICR7XG4gICAgICAgICAgICAgICAgICAgIG1vZGUgPT09ICdtYW51YWwnXG4gICAgICAgICAgICAgICAgICAgICAgPyAnYm9yZGVyLXByaW1hcnkgYmctcHJpbWFyeS1saWdodCdcbiAgICAgICAgICAgICAgICAgICAgICA6ICdib3JkZXItZ3JheS0yMDAgaG92ZXI6Ym9yZGVyLWdyYXktMzAwJ1xuICAgICAgICAgICAgICAgICAgfWB9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LTJ4bCBtYi0yXCI+4pyN77iPPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZvbnQtc2VtaWJvbGRcIj7miYvli5XovLjlhaU8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1zbSB0ZXh0LWdyYXktNjAwIG10LTFcIj7osrzkuIrmiJbovLjlhaXoi7HmlofmlofmnKw8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRNb2RlKCdzY3JlZW5zaG90Jyl9XG4gICAgICAgICAgICAgICAgICBkaXNhYmxlZD17IWlzUHJlbWl1bX1cbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17YHAtNCByb3VuZGVkLWxnIGJvcmRlci0yIHRyYW5zaXRpb24tYWxsIHJlbGF0aXZlICR7XG4gICAgICAgICAgICAgICAgICAgIG1vZGUgPT09ICdzY3JlZW5zaG90J1xuICAgICAgICAgICAgICAgICAgICAgID8gJ2JvcmRlci1wcmltYXJ5IGJnLXByaW1hcnktbGlnaHQnXG4gICAgICAgICAgICAgICAgICAgICAgOiBpc1ByZW1pdW1cbiAgICAgICAgICAgICAgICAgICAgICA/ICdib3JkZXItZ3JheS0yMDAgaG92ZXI6Ym9yZGVyLWdyYXktMzAwJ1xuICAgICAgICAgICAgICAgICAgICAgIDogJ2JvcmRlci1ncmF5LTIwMCBiZy1ncmF5LTEwMCBjdXJzb3Itbm90LWFsbG93ZWQgb3BhY2l0eS02MCdcbiAgICAgICAgICAgICAgICAgIH1gfVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC0yeGwgbWItMlwiPvCfk7c8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZm9udC1zZW1pYm9sZFwiPuW9seWKh+aIquWcljwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LXNtIHRleHQtZ3JheS02MDAgbXQtMVwiPuS4iuWCs+W9seWKh+aIquWcliAoUGhhc2UgMik8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIHshaXNQcmVtaXVtICYmIChcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJhYnNvbHV0ZSB0b3AtMiByaWdodC0yIHB4LTIgcHktMSBiZy15ZWxsb3ctMTAwIHRleHQteWVsbG93LTcwMCB0ZXh0LXhzIHJvdW5kZWQtZnVsbFwiPlxuICAgICAgICAgICAgICAgICAgICAgIOiogumWseWKn+iDvVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIHsvKiBFeHRyYWN0aW9uIFR5cGUgU2VsZWN0aW9uICovfVxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJiZy13aGl0ZSByb3VuZGVkLXhsIHNoYWRvdy1zbSBwLTYgbWItNlwiPlxuICAgICAgICAgICAgICA8aDIgY2xhc3NOYW1lPVwidGV4dC1sZyBmb250LXNlbWlib2xkIG1iLTRcIj7okIPlj5bmlrnlvI88L2gyPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImdyaWQgZ3JpZC1jb2xzLTIgZ2FwLTRcIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRFeHRyYWN0aW9uVHlwZSgndm9jYWJ1bGFyeScpfVxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgcC00IHJvdW5kZWQtbGcgYm9yZGVyLTIgdHJhbnNpdGlvbi1hbGwgJHtcbiAgICAgICAgICAgICAgICAgICAgZXh0cmFjdGlvblR5cGUgPT09ICd2b2NhYnVsYXJ5J1xuICAgICAgICAgICAgICAgICAgICAgID8gJ2JvcmRlci1wcmltYXJ5IGJnLXByaW1hcnktbGlnaHQnXG4gICAgICAgICAgICAgICAgICAgICAgOiAnYm9yZGVyLWdyYXktMjAwIGhvdmVyOmJvcmRlci1ncmF5LTMwMCdcbiAgICAgICAgICAgICAgICAgIH1gfVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC0yeGwgbWItMlwiPvCfk5Y8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZm9udC1zZW1pYm9sZFwiPuipnuW9meiQg+WPljwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LXNtIHRleHQtZ3JheS02MDAgbXQtMVwiPuafpeipouWtl+WFuCBBUEkg5Lim5qiZ6KiYIENFRlI8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRFeHRyYWN0aW9uVHlwZSgnc21hcnQnKX1cbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17YHAtNCByb3VuZGVkLWxnIGJvcmRlci0yIHRyYW5zaXRpb24tYWxsICR7XG4gICAgICAgICAgICAgICAgICAgIGV4dHJhY3Rpb25UeXBlID09PSAnc21hcnQnXG4gICAgICAgICAgICAgICAgICAgICAgPyAnYm9yZGVyLXByaW1hcnkgYmctcHJpbWFyeS1saWdodCdcbiAgICAgICAgICAgICAgICAgICAgICA6ICdib3JkZXItZ3JheS0yMDAgaG92ZXI6Ym9yZGVyLWdyYXktMzAwJ1xuICAgICAgICAgICAgICAgICAgfWB9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LTJ4bCBtYi0yXCI+8J+kljwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmb250LXNlbWlib2xkXCI+5pm66IO96JCD5Y+WPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtc20gdGV4dC1ncmF5LTYwMCBtdC0xXCI+QUkg5YiG5p6Q54mH6Kqe5ZKM5L+a6KqePC9kaXY+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIHsvKiBDb250ZW50IElucHV0ICovfVxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJiZy13aGl0ZSByb3VuZGVkLXhsIHNoYWRvdy1zbSBwLTYgbWItNlwiPlxuICAgICAgICAgICAgICB7bW9kZSA9PT0gJ21hbnVhbCcgPyAoXG4gICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgIDxoMiBjbGFzc05hbWU9XCJ0ZXh0LWxnIGZvbnQtc2VtaWJvbGQgbWItNFwiPui8uOWFpeiLseaWh+aWh+acrDwvaDI+XG4gICAgICAgICAgICAgICAgICA8dGV4dGFyZWFcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU9e3RleHRJbnB1dH1cbiAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiBzZXRUZXh0SW5wdXQoZS50YXJnZXQudmFsdWUpfVxuICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIuiyvOS4iuaCqOaDs+imgeWtuOe/kueahOiLseaWh+aWh+acrO+8jOS+i+WmguW9seWKh+WwjeipseOAgeaWh+eroOauteiQvS4uLlwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInctZnVsbCBoLTQwIHB4LTQgcHktMyBib3JkZXIgYm9yZGVyLWdyYXktMzAwIHJvdW5kZWQtbGcgZm9jdXM6cmluZy0yIGZvY3VzOnJpbmctcHJpbWFyeSBmb2N1czpib3JkZXItdHJhbnNwYXJlbnQgb3V0bGluZS1ub25lIHJlc2l6ZS1ub25lXCJcbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm10LTIgdGV4dC1zbSB0ZXh0LWdyYXktNjAwXCI+XG4gICAgICAgICAgICAgICAgICAgIOacgOWkmiA1MDAwIOWtl+WFgyDigKIg55uu5YmN77yae3RleHRJbnB1dC5sZW5ndGh9IOWtl+WFg1xuICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgIHsvKiBFeHRyYWN0aW9uIFR5cGUgSW5mbyAqL31cbiAgICAgICAgICAgICAgICAgIHtleHRyYWN0aW9uVHlwZSA9PT0gJ3ZvY2FidWxhcnknID8gKFxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm10LTQgcC0zIGJnLWJsdWUtNTAgcm91bmRlZC1sZ1wiPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1zbSB0ZXh0LWJsdWUtODAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPvCfk5Yg6Kme5b2Z6JCD5Y+W5qih5byPPC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3NOYW1lPVwibXQtMiBzcGFjZS15LTEgdGV4dC14c1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+4oCiIOWwh+avj+WAi+WWruWtl+afpeipouWtl+WFuCBBUEk8L2xpPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+4oCiIOiHquWLleaomeiomCBDRUZSIOmbo+W6puetiee0mjwvbGk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT7igKIg5o+Q5L6b5a6M5pW05a6a576p5ZKM5L6L5Y+lPC9saT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtdC00IHAtMyBiZy1wdXJwbGUtNTAgcm91bmRlZC1sZ1wiPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1zbSB0ZXh0LXB1cnBsZS04MDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+8J+kliDmmbrog73okIPlj5bmqKHlvI88L3N0cm9uZz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzc05hbWU9XCJtdC0yIHNwYWNlLXktMSB0ZXh0LXhzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT7igKIgQUkg5YiG5p6Q5bi455So54mH6Kqe5ZKM5L+a6KqePC9saT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPuKAoiDnlJ/miJDnm7jpl5zoqZ7lvZnlhaflrrk8L2xpPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+4oCiIOaPkOS+m+aWh+WMluiDjOaZr+iqquaYjjwvbGk+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgIDxoMiBjbGFzc05hbWU9XCJ0ZXh0LWxnIGZvbnQtc2VtaWJvbGQgbWItNFwiPuS4iuWCs+W9seWKh+aIquWcljwvaDI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJvcmRlci0yIGJvcmRlci1kYXNoZWQgYm9yZGVyLWdyYXktMzAwIHJvdW5kZWQtbGcgcC04IHRleHQtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC00eGwgbWItM1wiPvCfk7c8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LWdyYXktNjAwIG1iLTJcIj7pu57mk4rmiJbmi5bmi7PkuIrlgrPmiKrlnJY8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LXNtIHRleHQtZ3JheS01MDBcIj7mlK/mjIEgSlBHLCBQTkcg5qC85byP77yM5pyA5aSnIDEwTUI8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtdC00XCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwiaW5saW5lLWJsb2NrIHB4LTQgcHktMiBiZy1ncmF5LTEwMCB0ZXh0LWdyYXktNDAwIHJvdW5kZWQtbGdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIFBoYXNlIDIg5Yqf6IO96ZaL55m85LitXG4gICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIHsvKiBHZW5lcmF0aW9uIFNldHRpbmdzICovfVxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJiZy13aGl0ZSByb3VuZGVkLXhsIHNoYWRvdy1zbSBwLTYgbWItNlwiPlxuICAgICAgICAgICAgICA8aDIgY2xhc3NOYW1lPVwidGV4dC1sZyBmb250LXNlbWlib2xkIG1iLTRcIj7nlJ/miJDoqK3lrpo8L2gyPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInNwYWNlLXktNFwiPlxuICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3NOYW1lPVwiYmxvY2sgdGV4dC1zbSBmb250LW1lZGl1bSB0ZXh0LWdyYXktNzAwIG1iLTJcIj5cbiAgICAgICAgICAgICAgICAgICAg55Sf5oiQ5pW46YeP77yae2NhcmRDb3VudH0g5YCL6Kme5Y2hXG4gICAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJyYW5nZVwiXG4gICAgICAgICAgICAgICAgICAgIG1pbj1cIjVcIlxuICAgICAgICAgICAgICAgICAgICBtYXg9XCIyMFwiXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlPXtjYXJkQ291bnR9XG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gc2V0Q2FyZENvdW50KE51bWJlcihlLnRhcmdldC52YWx1ZSkpfVxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ3LWZ1bGxcIlxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBqdXN0aWZ5LWJldHdlZW4gdGV4dC14cyB0ZXh0LWdyYXktNTAwIG10LTFcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+NTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+6aCQ6KitIDEwPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj4yMDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgey8qIFVzZXIgTGltaXRzICovfVxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicC0zIGJnLWdyYXktNTAgcm91bmRlZC1sZ1wiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LXNtXCI+XG4gICAgICAgICAgICAgICAgICAgIHtpc1ByZW1pdW0gPyAoXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LWdyZWVuLTcwMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz7wn4yfIOiogumWseeUqOaItjwvc3Ryb25nPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LXhzIG10LTFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAg4oCiIOavj+WkqeacgOWkmueUn+aIkCA1MCDlvLXkvovlj6XlnJZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGJyIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIOKAoiDku4rml6Xlt7Lkvb/nlKjvvJowLzUwXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtZ3JheS03MDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+8J+GkyDlhY3osrvnlKjmiLY8L3N0cm9uZz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC14cyBtdC0xXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIOKAoiDnhKHms5Xoh6rooYznlJ/miJDkvovlj6XlnJZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGJyIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIOKAoiDlj6/kvb/nlKjns7vntbHnj77miJDkvovlj6XlnJZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGJyIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIOKAoiDmr4/ml6Xlrbjnv5Lmlbjph4/nhKHpmZDliLZcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIHsvKiBHZW5lcmF0ZSBCdXR0b24gKi99XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIG9uQ2xpY2s9e2hhbmRsZUdlbmVyYXRlfVxuICAgICAgICAgICAgICBkaXNhYmxlZD17aXNHZW5lcmF0aW5nIHx8IChtb2RlID09PSAnbWFudWFsJyAmJiAhdGV4dElucHV0KSB8fCAobW9kZSA9PT0gJ3NjcmVlbnNob3QnKX1cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidy1mdWxsIGJnLXByaW1hcnkgdGV4dC13aGl0ZSBweS00IHJvdW5kZWQtbGcgZm9udC1zZW1pYm9sZCBob3ZlcjpiZy1wcmltYXJ5LWhvdmVyIHRyYW5zaXRpb24tY29sb3JzIGRpc2FibGVkOm9wYWNpdHktNTAgZGlzYWJsZWQ6Y3Vyc29yLW5vdC1hbGxvd2VkXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge2lzR2VuZXJhdGluZyA/IChcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgPHN2ZyBjbGFzc05hbWU9XCJhbmltYXRlLXNwaW4gLW1sLTEgbXItMyBoLTUgdy01IHRleHQtd2hpdGVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgZmlsbD1cIm5vbmVcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCI+XG4gICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgY2xhc3NOYW1lPVwib3BhY2l0eS0yNVwiIGN4PVwiMTJcIiBjeT1cIjEyXCIgcj1cIjEwXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlV2lkdGg9XCI0XCI+PC9jaXJjbGU+XG4gICAgICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzTmFtZT1cIm9wYWNpdHktNzVcIiBmaWxsPVwiY3VycmVudENvbG9yXCIgZD1cIk00IDEyYTggOCAwIDAxOC04VjBDNS4zNzMgMCAwIDUuMzczIDAgMTJoNHptMiA1LjI5MUE3Ljk2MiA3Ljk2MiAwIDAxNCAxMkgwYzAgMy4wNDIgMS4xMzUgNS44MjQgMyA3LjkzOGwzLTIuNjQ3elwiPjwvcGF0aD5cbiAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAg5q2j5Zyo6JCD5Y+W6Kme5b2Z5LitLi4uXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICApIDogZXh0cmFjdGlvblR5cGUgPT09ICd2b2NhYnVsYXJ5JyA/IChcbiAgICAgICAgICAgICAgICAn8J+TliDplovlp4voqZ7lvZnokIPlj5YnXG4gICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgJ/CfpJYg6ZaL5aeL5pm66IO96JCD5Y+WJ1xuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICkgOiAoXG4gICAgICAgICAgLyogUHJldmlldyBHZW5lcmF0ZWQgQ2FyZHMgKi9cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1heC13LTZ4bCBteC1hdXRvXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBtYi02XCI+XG4gICAgICAgICAgICAgIDxoMSBjbGFzc05hbWU9XCJ0ZXh0LTN4bCBmb250LWJvbGRcIj7nlJ/miJDntZDmnpzpoJDopr08L2gxPlxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gc2V0U2hvd1ByZXZpZXcoZmFsc2UpfVxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInRleHQtZ3JheS02MDAgaG92ZXI6dGV4dC1ncmF5LTkwMFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICDihpAg6L+U5ZueXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmctd2hpdGUgcm91bmRlZC14bCBzaGFkb3ctc20gcC02IG1iLTZcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gbWItNFwiPlxuICAgICAgICAgICAgICAgIDxoMiBjbGFzc05hbWU9XCJ0ZXh0LWxnIGZvbnQtc2VtaWJvbGRcIj7lt7LnlJ/miJAge2dlbmVyYXRlZENhcmRzLmxlbmd0aH0g5YCL6Kme5Y2hPC9oMj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInNwYWNlLXgtM1wiPlxuICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzc05hbWU9XCJ0ZXh0LXByaW1hcnkgaG92ZXI6dGV4dC1wcmltYXJ5LWhvdmVyIGZvbnQtbWVkaXVtXCI+XG4gICAgICAgICAgICAgICAgICAgIOmHjeaWsOeUn+aIkFxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2hhbmRsZVNhdmVDYXJkc31cbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiYmctcHJpbWFyeSB0ZXh0LXdoaXRlIHB4LTYgcHktMiByb3VuZGVkLWxnIGZvbnQtbWVkaXVtIGhvdmVyOmJnLXByaW1hcnktaG92ZXIgdHJhbnNpdGlvbi1jb2xvcnNcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICDkv53lrZjliLDljaHntYRcbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImdyaWQgZ3JpZC1jb2xzLTEgbGc6Z3JpZC1jb2xzLTIgZ2FwLTZcIj5cbiAgICAgICAgICAgICAgICB7Z2VuZXJhdGVkQ2FyZHMubWFwKChjYXJkKSA9PiAoXG4gICAgICAgICAgICAgICAgICA8ZGl2IGtleT17Y2FyZC5pZH0gY2xhc3NOYW1lPVwiYm9yZGVyIHJvdW5kZWQtbGcgcC01IGhvdmVyOnNoYWRvdy1sZyB0cmFuc2l0aW9uLXNoYWRvd1wiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtc3RhcnQganVzdGlmeS1iZXR3ZWVuIG1iLTRcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXgtMVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzTmFtZT1cInRleHQteGwgZm9udC1ib2xkXCI+e2NhcmQud29yZH08L2gzPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtNCBtdC0xXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtc20gdGV4dC1ncmF5LTYwMFwiPntjYXJkLnBhcnRPZlNwZWVjaH08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzTmFtZT1cInRleHQteHMgYmctZ3JheS0xMDAgcHgtMiBweS0xIHJvdW5kZWQgaG92ZXI6YmctZ3JheS0yMDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIPCfh7rwn4e4IHtjYXJkLnByb251bmNpYXRpb24udXN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzc05hbWU9XCJ0ZXh0LXhzIGJnLWdyYXktMTAwIHB4LTIgcHktMSByb3VuZGVkIGhvdmVyOmJnLWdyYXktMjAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICDwn4es8J+HpyB7Y2FyZC5wcm9udW5jaWF0aW9uLnVrfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3NOYW1lPVwidGV4dC1wcmltYXJ5IGhvdmVyOnRleHQtcHJpbWFyeS1ob3ZlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyBjbGFzc05hbWU9XCJ3LTQgaC00XCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZUxpbmVqb2luPVwicm91bmRcIiBzdHJva2VXaWR0aD17Mn0gZD1cIk0xNS41MzYgOC40NjRhNSA1IDAgMDEwIDcuMDcybTIuODI4LTkuOWE5IDkgMCAwMTAgMTIuNzI4TTUuNTg2IDE1SDRhMSAxIDAgMDEtMS0xdi00YTEgMSAwIDAxMS0xaDEuNTg2bDQuNzA3LTQuNzA3QzEwLjkyMyAzLjY2MyAxMiA0LjEwOSAxMiA1djE0YzAgLjg5MS0xLjA3NyAxLjMzNy0xLjcwNy43MDdMNS41ODYgMTV6XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3NOYW1lPVwidGV4dC1yZWQtNTAwIGhvdmVyOnRleHQtcmVkLTcwMCB0ZXh0LTJ4bFwiPsOXPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwic3BhY2UteS0zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1zbSBmb250LXNlbWlib2xkIHRleHQtZ3JheS03MDBcIj7nv7vora88L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1iYXNlIGZvbnQtbWVkaXVtXCI+e2NhcmQudHJhbnNsYXRpb259PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LXNtIGZvbnQtc2VtaWJvbGQgdGV4dC1ncmF5LTcwMFwiPuWumue+qTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LXNtIHRleHQtZ3JheS02MDBcIj57Y2FyZC5kZWZpbml0aW9ufTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAge2NhcmQuc3lub255bXMubGVuZ3RoID4gMCAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtc20gZm9udC1zZW1pYm9sZCB0ZXh0LWdyYXktNzAwXCI+5ZCM576p6KmePC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBmbGV4LXdyYXAgZ2FwLTIgbXQtMVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtjYXJkLnN5bm9ueW1zLm1hcCgoc3luLCBpZHgpID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGtleT17aWR4fSBjbGFzc05hbWU9XCJweC0yIHB5LTEgYmctYmx1ZS0xMDAgdGV4dC1ibHVlLTcwMCByb3VuZGVkLWZ1bGwgdGV4dC14c1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7c3lufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgICAgICAgICAgICB7Y2FyZC5hbnRvbnltcy5sZW5ndGggPiAwICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1zbSBmb250LXNlbWlib2xkIHRleHQtZ3JheS03MDBcIj7lj43nvqnoqZ48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGZsZXgtd3JhcCBnYXAtMiBtdC0xXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2NhcmQuYW50b255bXMubWFwKChhbnQsIGlkeCkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4ga2V5PXtpZHh9IGNsYXNzTmFtZT1cInB4LTIgcHktMSBiZy1yZWQtMTAwIHRleHQtcmVkLTcwMCByb3VuZGVkLWZ1bGwgdGV4dC14c1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7YW50fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LXNtIGZvbnQtc2VtaWJvbGQgdGV4dC1ncmF5LTcwMCBtYi0yXCI+5L6L5Y+lPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInNwYWNlLXktM1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7Lyog5Y6f5aeL5L6L5Y+lICovfVxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJvcmRlci1sLTIgYm9yZGVyLWdyYXktNDAwIHBsLTNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtc3RhcnQganVzdGlmeS1iZXR3ZWVuXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXgtMVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQteHMgdGV4dC1ncmF5LTUwMCBtYi0xXCI+5Y6f5aeL5L6L5Y+l77yI5L6G6Ieq6Ly45YWl5paH5pys77yJPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1zbSB0ZXh0LWdyYXktODAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2NhcmQub3JpZ2luYWxFeGFtcGxlLnNwbGl0KGNhcmQud29yZCkubWFwKChwYXJ0LCBpKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBrZXk9e2l9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7cGFydH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2kgPCBjYXJkLm9yaWdpbmFsRXhhbXBsZS5zcGxpdChjYXJkLndvcmQpLmxlbmd0aCAtIDEgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cImZvbnQtYm9sZCB0ZXh0LXByaW1hcnlcIj57Y2FyZC53b3JkfTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1zbSB0ZXh0LWdyYXktNTAwIG10LTFcIj57Y2FyZC5vcmlnaW5hbEV4YW1wbGVUcmFuc2xhdGlvbn08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMSBtbC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3NOYW1lPVwidGV4dC1ncmF5LTQwMCBob3Zlcjp0ZXh0LXByaW1hcnlcIiB0aXRsZT1cIuaSreaUvuS+i+WPpVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgY2xhc3NOYW1lPVwidy00IGgtNFwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggc3Ryb2tlTGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlTGluZWpvaW49XCJyb3VuZFwiIHN0cm9rZVdpZHRoPXsyfSBkPVwiTTE0Ljc1MiAxMS4xNjhsLTMuMTk3LTIuMTMyQTEgMSAwIDAwMTAgOS44N3Y0LjI2M2ExIDEgMCAwMDEuNTU1LjgzMmwzLjE5Ny0yLjEzMmExIDEgMCAwMDAtMS42NjR6XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZUxpbmVqb2luPVwicm91bmRcIiBzdHJva2VXaWR0aD17Mn0gZD1cIk0yMSAxMmE5IDkgMCAxMS0xOCAwIDkgOSAwIDAxMTggMHpcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICB7Lyog55Sf5oiQ5L6L5Y+lICovfVxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJvcmRlci1sLTIgYm9yZGVyLXByaW1hcnkgcGwtM1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1zdGFydCBqdXN0aWZ5LWJldHdlZW5cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleC0xXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC14cyB0ZXh0LXByaW1hcnkgbWItMVwiPkFJIOeUn+aIkOS+i+WPpTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtc20gdGV4dC1ncmF5LTgwMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtjYXJkLmdlbmVyYXRlZEV4YW1wbGUuc2VudGVuY2Uuc3BsaXQoY2FyZC53b3JkKS5tYXAoKHBhcnQsIGkpID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGtleT17aX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtwYXJ0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7aSA8IGNhcmQuZ2VuZXJhdGVkRXhhbXBsZS5zZW50ZW5jZS5zcGxpdChjYXJkLndvcmQpLmxlbmd0aCAtIDEgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cImZvbnQtYm9sZCB0ZXh0LXByaW1hcnlcIj57Y2FyZC53b3JkfTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1zbSB0ZXh0LWdyYXktNTAwIG10LTFcIj57Y2FyZC5nZW5lcmF0ZWRFeGFtcGxlLnRyYW5zbGF0aW9ufTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGdhcC0xIG1sLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzc05hbWU9XCJ0ZXh0LWdyYXktNDAwIGhvdmVyOnRleHQtcHJpbWFyeVwiIHRpdGxlPVwi5pKt5pS+5L6L5Y+lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyBjbGFzc05hbWU9XCJ3LTQgaC00XCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBzdHJva2VMaW5lY2FwPVwicm91bmRcIiBzdHJva2VMaW5lam9pbj1cInJvdW5kXCIgc3Ryb2tlV2lkdGg9ezJ9IGQ9XCJNMTQuNzUyIDExLjE2OGwtMy4xOTctMi4xMzJBMSAxIDAgMDAxMCA5Ljg3djQuMjYzYTEgMSAwIDAwMS41NTUuODMybDMuMTk3LTIuMTMyYTEgMSAwIDAwMC0xLjY2NHpcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggc3Ryb2tlTGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlTGluZWpvaW49XCJyb3VuZFwiIHN0cm9rZVdpZHRoPXsyfSBkPVwiTTIxIDEyYTkgOSAwIDExLTE4IDAgOSA5IDAgMDExOCAwelwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gdG9nZ2xlSW1hZ2VGb3JDYXJkKGNhcmQuaWQpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17YCR7c2hvd0ltYWdlRm9yQ2FyZFtjYXJkLmlkXSA/ICd0ZXh0LXByaW1hcnknIDogJ3RleHQtZ3JheS00MDAnfSBob3Zlcjp0ZXh0LXByaW1hcnlgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPXtzaG93SW1hZ2VGb3JDYXJkW2NhcmQuaWRdID8gXCLpmrHol4/kvovlj6XlnJZcIiA6IFwi5p+l55yL5L6L5Y+l5ZyWXCJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzTmFtZT1cInctNCBoLTRcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZUxpbmVqb2luPVwicm91bmRcIiBzdHJva2VXaWR0aD17Mn0gZD1cIk00IDE2bDQuNTg2LTQuNTg2YTIgMiAwIDAxMi44MjggMEwxNiAxNm0tMi0ybDEuNTg2LTEuNTg2YTIgMiAwIDAxMi44MjggMEwyMCAxNG0tNi02aC4wMU02IDIwaDEyYTIgMiAwIDAwMi0yVjZhMiAyIDAgMDAtMi0ySDZhMiAyIDAgMDAtMiAydjEyYTIgMiAwIDAwMiAyelwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7LyogRXhhbXBsZSBJbWFnZSBEaXNwbGF5ICovfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtzaG93SW1hZ2VGb3JDYXJkW2NhcmQuaWRdICYmIGNhcmQuZ2VuZXJhdGVkRXhhbXBsZS5pbWFnZVVybCAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm10LTMgcC0yIGJnLWdyYXktNTAgcm91bmRlZC1sZ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQteHMgdGV4dC1ncmF5LTYwMCBtYi0yIGZsZXggaXRlbXMtY2VudGVyIGdhcC0xXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyBjbGFzc05hbWU9XCJ3LTMgaC0zXCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBzdHJva2VMaW5lY2FwPVwicm91bmRcIiBzdHJva2VMaW5lam9pbj1cInJvdW5kXCIgc3Ryb2tlV2lkdGg9ezJ9IGQ9XCJNNCAxNmw0LjU4Ni00LjU4NmEyIDIgMCAwMTIuODI4IDBMMTYgMTZtLTItMmwxLjU4Ni0xLjU4NmEyIDIgMCAwMTIuODI4IDBMMjAgMTRtLTYtNmguMDFNNiAyMGgxMmEyIDIgMCAwMDItMlY2YTIgMiAwIDAwLTItMkg2YTIgMiAwIDAwLTIgMnYxMmEyIDIgMCAwMDIgMnpcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIOS+i+WPpeaDheWig+WcllxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz17Y2FyZC5nZW5lcmF0ZWRFeGFtcGxlLmltYWdlVXJsfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdD1cIkV4YW1wbGUgY29udGV4dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidy1mdWxsIHJvdW5kZWQtbWQgc2hhZG93LXNtIGN1cnNvci1wb2ludGVyIGhvdmVyOnNoYWRvdy1sZyB0cmFuc2l0aW9uLXNoYWRvd1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3sgbWF4SGVpZ2h0OiAnMjUwcHgnLCBvYmplY3RGaXQ6ICdjb250YWluJywgYmFja2dyb3VuZENvbG9yOiAnd2hpdGUnIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gc2V0TW9kYWxJbWFnZShjYXJkLmdlbmVyYXRlZEV4YW1wbGUuaW1hZ2VVcmwpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQteHMgdGV4dC1ncmF5LTUwMCBtdC0yIHRleHQtY2VudGVyXCI+6bue5pOK5ZyW54mH5Y+v5pS+5aSn5p+l55yLPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm10LTQgcHQtMyBib3JkZXItdCBmbGV4IGp1c3RpZnktYmV0d2VlbiBpdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LXhzIHRleHQtZ3JheS01MDBcIj7pm6PluqbvvJpDRUZSIHtjYXJkLmRpZmZpY3VsdHl9PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3NOYW1lPVwidGV4dC1wcmltYXJ5IHRleHQtc20gaG92ZXI6dGV4dC1wcmltYXJ5LWhvdmVyIGZvbnQtbWVkaXVtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICDnt6jovK/oqZ7ljaFcbiAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKX1cbiAgICAgIDwvZGl2PlxuXG4gICAgICB7LyogSW1hZ2UgTW9kYWwgKi99XG4gICAgICB7bW9kYWxJbWFnZSAmJiAoXG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzc05hbWU9XCJmaXhlZCBpbnNldC0wIHotNTAgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgYmctYmxhY2sgYmctb3BhY2l0eS03NSBwLTRcIlxuICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldE1vZGFsSW1hZ2UobnVsbCl9XG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzc05hbWU9XCJyZWxhdGl2ZSBtYXgtdy00eGwgbWF4LWgtWzkwdmhdIGJnLXdoaXRlIHJvdW5kZWQtbGcgb3ZlcmZsb3ctaGlkZGVuXCJcbiAgICAgICAgICAgIG9uQ2xpY2s9eyhlKSA9PiBlLnN0b3BQcm9wYWdhdGlvbigpfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHsvKiBDbG9zZSBCdXR0b24gKi99XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldE1vZGFsSW1hZ2UobnVsbCl9XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT1cImFic29sdXRlIHRvcC0yIHJpZ2h0LTIgei0xMCBwLTIgYmctd2hpdGUgYmctb3BhY2l0eS05MCByb3VuZGVkLWZ1bGwgaG92ZXI6Ymctb3BhY2l0eS0xMDAgdHJhbnNpdGlvbi1hbGwgc2hhZG93LWxnXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHN2ZyBjbGFzc05hbWU9XCJ3LTYgaC02IHRleHQtZ3JheS03MDBcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIj5cbiAgICAgICAgICAgICAgICA8cGF0aCBzdHJva2VMaW5lY2FwPVwicm91bmRcIiBzdHJva2VMaW5lam9pbj1cInJvdW5kXCIgc3Ryb2tlV2lkdGg9ezJ9IGQ9XCJNNiAxOEwxOCA2TTYgNmwxMiAxMlwiIC8+XG4gICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgICAgIHsvKiBJbWFnZSAqL31cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicC00XCI+XG4gICAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICBzcmM9e21vZGFsSW1hZ2V9XG4gICAgICAgICAgICAgICAgYWx0PVwiRXhhbXBsZSBjb250ZXh0IGVubGFyZ2VkXCJcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ3LWZ1bGwgaC1mdWxsIG9iamVjdC1jb250YWluXCJcbiAgICAgICAgICAgICAgICBzdHlsZT17eyBtYXhIZWlnaHQ6ICdjYWxjKDkwdmggLSAycmVtKScgfX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICl9XG4gICAgPC9kaXY+XG4gIClcbn0iXSwibmFtZXMiOlsidXNlU3RhdGUiLCJMaW5rIiwiR2VuZXJhdGVQYWdlIiwibW9kZSIsInNldE1vZGUiLCJ0ZXh0SW5wdXQiLCJzZXRUZXh0SW5wdXQiLCJleHRyYWN0aW9uVHlwZSIsInNldEV4dHJhY3Rpb25UeXBlIiwiY2FyZENvdW50Iiwic2V0Q2FyZENvdW50IiwiaXNHZW5lcmF0aW5nIiwic2V0SXNHZW5lcmF0aW5nIiwiZ2VuZXJhdGVkQ2FyZHMiLCJzZXRHZW5lcmF0ZWRDYXJkcyIsInNob3dQcmV2aWV3Iiwic2V0U2hvd1ByZXZpZXciLCJpc1ByZW1pdW0iLCJzaG93SW1hZ2VGb3JDYXJkIiwic2V0U2hvd0ltYWdlRm9yQ2FyZCIsIm1vZGFsSW1hZ2UiLCJzZXRNb2RhbEltYWdlIiwibW9ja0dlbmVyYXRlZENhcmRzIiwiaWQiLCJ3b3JkIiwicGFydE9mU3BlZWNoIiwicHJvbnVuY2lhdGlvbiIsInVzIiwidWsiLCJ0cmFuc2xhdGlvbiIsImRlZmluaXRpb24iLCJzeW5vbnltcyIsImFudG9ueW1zIiwib3JpZ2luYWxFeGFtcGxlIiwib3JpZ2luYWxFeGFtcGxlVHJhbnNsYXRpb24iLCJnZW5lcmF0ZWRFeGFtcGxlIiwic2VudGVuY2UiLCJpbWFnZVVybCIsImF1ZGlvVXJsIiwiZGlmZmljdWx0eSIsImhhbmRsZUdlbmVyYXRlIiwic2V0VGltZW91dCIsImhhbmRsZVNhdmVDYXJkcyIsImFsZXJ0IiwidG9nZ2xlSW1hZ2VGb3JDYXJkIiwiY2FyZElkIiwicHJldiIsImRpdiIsImNsYXNzTmFtZSIsIm5hdiIsImhyZWYiLCJoMSIsImgyIiwiYnV0dG9uIiwib25DbGljayIsImRpc2FibGVkIiwidGV4dGFyZWEiLCJ2YWx1ZSIsIm9uQ2hhbmdlIiwiZSIsInRhcmdldCIsInBsYWNlaG9sZGVyIiwibGVuZ3RoIiwic3Ryb25nIiwidWwiLCJsaSIsInNwYW4iLCJsYWJlbCIsImlucHV0IiwidHlwZSIsIm1pbiIsIm1heCIsIk51bWJlciIsImJyIiwic3ZnIiwieG1sbnMiLCJmaWxsIiwidmlld0JveCIsImNpcmNsZSIsImN4IiwiY3kiLCJyIiwic3Ryb2tlIiwic3Ryb2tlV2lkdGgiLCJwYXRoIiwiZCIsIm1hcCIsImNhcmQiLCJoMyIsInN0cm9rZUxpbmVjYXAiLCJzdHJva2VMaW5lam9pbiIsInN5biIsImlkeCIsImFudCIsInNwbGl0IiwicGFydCIsImkiLCJ0aXRsZSIsImltZyIsInNyYyIsImFsdCIsInN0eWxlIiwibWF4SGVpZ2h0Iiwib2JqZWN0Rml0IiwiYmFja2dyb3VuZENvbG9yIiwic3RvcFByb3BhZ2F0aW9uIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./app/generate/page.tsx\n")); + +/***/ }), + +/***/ "(app-pages-browser)/./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%7B%22request%22%3A%22%2FUsers%2Fjettcheng1018%2Fcode%2Fdramaling-vocab-learning%2Ffrontend%2Fapp%2Fgenerate%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!": +/*!******************************************************************************************************************************************************************************************************************************************************************!*\ + !*** ./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%7B%22request%22%3A%22%2FUsers%2Fjettcheng1018%2Fcode%2Fdramaling-vocab-learning%2Ffrontend%2Fapp%2Fgenerate%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false! ***! + \******************************************************************************************************************************************************************************************************************************************************************/ +/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { + +eval(__webpack_require__.ts("Promise.resolve(/*! import() eager */).then(__webpack_require__.bind(__webpack_require__, /*! ./app/generate/page.tsx */ \"(app-pages-browser)/./app/generate/page.tsx\"));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvYnVpbGQvd2VicGFjay9sb2FkZXJzL25leHQtZmxpZ2h0LWNsaWVudC1lbnRyeS1sb2FkZXIuanM/bW9kdWxlcz0lN0IlMjJyZXF1ZXN0JTIyJTNBJTIyJTJGVXNlcnMlMkZqZXR0Y2hlbmcxMDE4JTJGY29kZSUyRmRyYW1hbGluZy12b2NhYi1sZWFybmluZyUyRmZyb250ZW5kJTJGYXBwJTJGZ2VuZXJhdGUlMkZwYWdlLnRzeCUyMiUyQyUyMmlkcyUyMiUzQSU1QiU1RCU3RCZzZXJ2ZXI9ZmFsc2UhIiwibWFwcGluZ3MiOiJBQUFBLHdLQUFzSCIsInNvdXJjZXMiOlsiIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCgvKiB3ZWJwYWNrTW9kZTogXCJlYWdlclwiICovIFwiL1VzZXJzL2pldHRjaGVuZzEwMTgvY29kZS9kcmFtYWxpbmctdm9jYWItbGVhcm5pbmcvZnJvbnRlbmQvYXBwL2dlbmVyYXRlL3BhZ2UudHN4XCIpO1xuIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%7B%22request%22%3A%22%2FUsers%2Fjettcheng1018%2Fcode%2Fdramaling-vocab-learning%2Ffrontend%2Fapp%2Fgenerate%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!\n")); + +/***/ }), + +/***/ "(app-pages-browser)/./node_modules/next/dist/client/app-dir/link.js": +/*!*******************************************************!*\ + !*** ./node_modules/next/dist/client/app-dir/link.js ***! + \*******************************************************/ +/***/ ((module, exports, __webpack_require__) => { + +"use strict"; +eval(__webpack_require__.ts("/* __next_internal_client_entry_do_not_use__ cjs */ \nvar _s = $RefreshSig$();\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n /**\n * A React component that extends the HTML `` element to provide\n * [prefetching](https://nextjs.org/docs/app/building-your-application/routing/linking-and-navigating#2-prefetching)\n * and client-side navigation. This is the primary way to navigate between routes in Next.js.\n *\n * @remarks\n * - Prefetching is only enabled in production.\n *\n * @see https://nextjs.org/docs/app/api-reference/components/link\n */ default: function() {\n return LinkComponent;\n },\n useLinkStatus: function() {\n return useLinkStatus;\n }\n});\nconst _interop_require_wildcard = __webpack_require__(/*! @swc/helpers/_/_interop_require_wildcard */ \"(app-pages-browser)/./node_modules/@swc/helpers/esm/_interop_require_wildcard.js\");\nconst _jsxruntime = __webpack_require__(/*! react/jsx-runtime */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/jsx-runtime.js\");\nconst _react = /*#__PURE__*/ _interop_require_wildcard._(__webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/index.js\"));\nconst _formaturl = __webpack_require__(/*! ../../shared/lib/router/utils/format-url */ \"(app-pages-browser)/./node_modules/next/dist/shared/lib/router/utils/format-url.js\");\nconst _approutercontextsharedruntime = __webpack_require__(/*! ../../shared/lib/app-router-context.shared-runtime */ \"(app-pages-browser)/./node_modules/next/dist/shared/lib/app-router-context.shared-runtime.js\");\nconst _usemergedref = __webpack_require__(/*! ../use-merged-ref */ \"(app-pages-browser)/./node_modules/next/dist/client/use-merged-ref.js\");\nconst _utils = __webpack_require__(/*! ../../shared/lib/utils */ \"(app-pages-browser)/./node_modules/next/dist/shared/lib/utils.js\");\nconst _addbasepath = __webpack_require__(/*! ../add-base-path */ \"(app-pages-browser)/./node_modules/next/dist/client/add-base-path.js\");\nconst _warnonce = __webpack_require__(/*! ../../shared/lib/utils/warn-once */ \"(app-pages-browser)/./node_modules/next/dist/shared/lib/utils/warn-once.js\");\nconst _links = __webpack_require__(/*! ../components/links */ \"(app-pages-browser)/./node_modules/next/dist/client/components/links.js\");\nconst _islocalurl = __webpack_require__(/*! ../../shared/lib/router/utils/is-local-url */ \"(app-pages-browser)/./node_modules/next/dist/shared/lib/router/utils/is-local-url.js\");\nconst _approuterinstance = __webpack_require__(/*! ../components/app-router-instance */ \"(app-pages-browser)/./node_modules/next/dist/client/components/app-router-instance.js\");\nconst _erroronce = __webpack_require__(/*! ../../shared/lib/utils/error-once */ \"(app-pages-browser)/./node_modules/next/dist/shared/lib/utils/error-once.js\");\nconst _segmentcache = __webpack_require__(/*! ../components/segment-cache */ \"(app-pages-browser)/./node_modules/next/dist/client/components/segment-cache.js\");\nfunction isModifiedEvent(event) {\n const eventTarget = event.currentTarget;\n const target = eventTarget.getAttribute('target');\n return target && target !== '_self' || event.metaKey || event.ctrlKey || event.shiftKey || event.altKey || // triggers resource download\n event.nativeEvent && event.nativeEvent.which === 2;\n}\nfunction linkClicked(e, href, as, linkInstanceRef, replace, scroll, onNavigate) {\n const { nodeName } = e.currentTarget;\n // anchors inside an svg have a lowercase nodeName\n const isAnchorNodeName = nodeName.toUpperCase() === 'A';\n if (isAnchorNodeName && isModifiedEvent(e) || e.currentTarget.hasAttribute('download')) {\n // ignore click for browser’s default behavior\n return;\n }\n if (!(0, _islocalurl.isLocalURL)(href)) {\n if (replace) {\n // browser default behavior does not replace the history state\n // so we need to do it manually\n e.preventDefault();\n location.replace(href);\n }\n // ignore click for browser’s default behavior\n return;\n }\n e.preventDefault();\n if (onNavigate) {\n let isDefaultPrevented = false;\n onNavigate({\n preventDefault: ()=>{\n isDefaultPrevented = true;\n }\n });\n if (isDefaultPrevented) {\n return;\n }\n }\n _react.default.startTransition(()=>{\n (0, _approuterinstance.dispatchNavigateAction)(as || href, replace ? 'replace' : 'push', scroll != null ? scroll : true, linkInstanceRef.current);\n });\n}\nfunction formatStringOrUrl(urlObjOrString) {\n if (typeof urlObjOrString === 'string') {\n return urlObjOrString;\n }\n return (0, _formaturl.formatUrl)(urlObjOrString);\n}\nfunction LinkComponent(props) {\n _s();\n const [linkStatus, setOptimisticLinkStatus] = (0, _react.useOptimistic)(_links.IDLE_LINK_STATUS);\n let children;\n const linkInstanceRef = (0, _react.useRef)(null);\n const { href: hrefProp, as: asProp, children: childrenProp, prefetch: prefetchProp = null, passHref, replace, shallow, scroll, onClick, onMouseEnter: onMouseEnterProp, onTouchStart: onTouchStartProp, legacyBehavior = false, onNavigate, ref: forwardedRef, unstable_dynamicOnHover, ...restProps } = props;\n children = childrenProp;\n if (legacyBehavior && (typeof children === 'string' || typeof children === 'number')) {\n children = /*#__PURE__*/ (0, _jsxruntime.jsx)(\"a\", {\n children: children\n });\n }\n const router = _react.default.useContext(_approutercontextsharedruntime.AppRouterContext);\n const prefetchEnabled = prefetchProp !== false;\n const fetchStrategy = prefetchProp !== false ? getFetchStrategyFromPrefetchProp(prefetchProp) : _segmentcache.FetchStrategy.PPR;\n if (true) {\n function createPropError(args) {\n return Object.defineProperty(new Error(\"Failed prop type: The prop `\" + args.key + \"` expects a \" + args.expected + \" in ``, but got `\" + args.actual + \"` instead.\" + ( true ? \"\\nOpen your browser's console to view the Component stack trace.\" : 0)), \"__NEXT_ERROR_CODE\", {\n value: \"E319\",\n enumerable: false,\n configurable: true\n });\n }\n // TypeScript trick for type-guarding:\n const requiredPropsGuard = {\n href: true\n };\n const requiredProps = Object.keys(requiredPropsGuard);\n requiredProps.forEach((key)=>{\n if (key === 'href') {\n if (props[key] == null || typeof props[key] !== 'string' && typeof props[key] !== 'object') {\n throw createPropError({\n key,\n expected: '`string` or `object`',\n actual: props[key] === null ? 'null' : typeof props[key]\n });\n }\n } else {\n // TypeScript trick for type-guarding:\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const _ = key;\n }\n });\n // TypeScript trick for type-guarding:\n const optionalPropsGuard = {\n as: true,\n replace: true,\n scroll: true,\n shallow: true,\n passHref: true,\n prefetch: true,\n unstable_dynamicOnHover: true,\n onClick: true,\n onMouseEnter: true,\n onTouchStart: true,\n legacyBehavior: true,\n onNavigate: true\n };\n const optionalProps = Object.keys(optionalPropsGuard);\n optionalProps.forEach((key)=>{\n const valType = typeof props[key];\n if (key === 'as') {\n if (props[key] && valType !== 'string' && valType !== 'object') {\n throw createPropError({\n key,\n expected: '`string` or `object`',\n actual: valType\n });\n }\n } else if (key === 'onClick' || key === 'onMouseEnter' || key === 'onTouchStart' || key === 'onNavigate') {\n if (props[key] && valType !== 'function') {\n throw createPropError({\n key,\n expected: '`function`',\n actual: valType\n });\n }\n } else if (key === 'replace' || key === 'scroll' || key === 'shallow' || key === 'passHref' || key === 'legacyBehavior' || key === 'unstable_dynamicOnHover') {\n if (props[key] != null && valType !== 'boolean') {\n throw createPropError({\n key,\n expected: '`boolean`',\n actual: valType\n });\n }\n } else if (key === 'prefetch') {\n if (props[key] != null && valType !== 'boolean' && props[key] !== 'auto' && props[key] !== 'unstable_forceStale') {\n throw createPropError({\n key,\n expected: '`boolean | \"auto\" | \"unstable_forceStale\"`',\n actual: valType\n });\n }\n } else {\n // TypeScript trick for type-guarding:\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const _ = key;\n }\n });\n }\n if (true) {\n if (props.locale) {\n (0, _warnonce.warnOnce)('The `locale` prop is not supported in `next/link` while using the `app` router. Read more about app router internalization: https://nextjs.org/docs/app/building-your-application/routing/internationalization');\n }\n if (!asProp) {\n let href;\n if (typeof hrefProp === 'string') {\n href = hrefProp;\n } else if (typeof hrefProp === 'object' && typeof hrefProp.pathname === 'string') {\n href = hrefProp.pathname;\n }\n if (href) {\n const hasDynamicSegment = href.split('/').some((segment)=>segment.startsWith('[') && segment.endsWith(']'));\n if (hasDynamicSegment) {\n throw Object.defineProperty(new Error(\"Dynamic href `\" + href + \"` found in while using the `/app` router, this is not supported. Read more: https://nextjs.org/docs/messages/app-dir-dynamic-href\"), \"__NEXT_ERROR_CODE\", {\n value: \"E267\",\n enumerable: false,\n configurable: true\n });\n }\n }\n }\n }\n const { href, as } = _react.default.useMemo({\n \"LinkComponent.useMemo\": ()=>{\n const resolvedHref = formatStringOrUrl(hrefProp);\n return {\n href: resolvedHref,\n as: asProp ? formatStringOrUrl(asProp) : resolvedHref\n };\n }\n }[\"LinkComponent.useMemo\"], [\n hrefProp,\n asProp\n ]);\n // This will return the first child, if multiple are provided it will throw an error\n let child;\n if (legacyBehavior) {\n if (true) {\n if (onClick) {\n console.warn('\"onClick\" was passed to with `href` of `' + hrefProp + '` but \"legacyBehavior\" was set. The legacy behavior requires onClick be set on the child of next/link');\n }\n if (onMouseEnterProp) {\n console.warn('\"onMouseEnter\" was passed to with `href` of `' + hrefProp + '` but \"legacyBehavior\" was set. The legacy behavior requires onMouseEnter be set on the child of next/link');\n }\n try {\n child = _react.default.Children.only(children);\n } catch (err) {\n if (!children) {\n throw Object.defineProperty(new Error(\"No children were passed to with `href` of `\" + hrefProp + \"` but one child is required https://nextjs.org/docs/messages/link-no-children\"), \"__NEXT_ERROR_CODE\", {\n value: \"E320\",\n enumerable: false,\n configurable: true\n });\n }\n throw Object.defineProperty(new Error(\"Multiple children were passed to with `href` of `\" + hrefProp + \"` but only one child is supported https://nextjs.org/docs/messages/link-multiple-children\" + ( true ? \" \\nOpen your browser's console to view the Component stack trace.\" : 0)), \"__NEXT_ERROR_CODE\", {\n value: \"E266\",\n enumerable: false,\n configurable: true\n });\n }\n } else {}\n } else {\n if (true) {\n if ((children == null ? void 0 : children.type) === 'a') {\n throw Object.defineProperty(new Error('Invalid with child. Please remove or use .\\nLearn more: https://nextjs.org/docs/messages/invalid-new-link-with-extra-anchor'), \"__NEXT_ERROR_CODE\", {\n value: \"E209\",\n enumerable: false,\n configurable: true\n });\n }\n }\n }\n const childRef = legacyBehavior ? child && typeof child === 'object' && child.ref : forwardedRef;\n // Use a callback ref to attach an IntersectionObserver to the anchor tag on\n // mount. In the future we will also use this to keep track of all the\n // currently mounted instances, e.g. so we can re-prefetch them after\n // a revalidation or refresh.\n const observeLinkVisibilityOnMount = _react.default.useCallback({\n \"LinkComponent.useCallback[observeLinkVisibilityOnMount]\": (element)=>{\n if (router !== null) {\n linkInstanceRef.current = (0, _links.mountLinkInstance)(element, href, router, fetchStrategy, prefetchEnabled, setOptimisticLinkStatus);\n }\n return ({\n \"LinkComponent.useCallback[observeLinkVisibilityOnMount]\": ()=>{\n if (linkInstanceRef.current) {\n (0, _links.unmountLinkForCurrentNavigation)(linkInstanceRef.current);\n linkInstanceRef.current = null;\n }\n (0, _links.unmountPrefetchableInstance)(element);\n }\n })[\"LinkComponent.useCallback[observeLinkVisibilityOnMount]\"];\n }\n }[\"LinkComponent.useCallback[observeLinkVisibilityOnMount]\"], [\n prefetchEnabled,\n href,\n router,\n fetchStrategy,\n setOptimisticLinkStatus\n ]);\n const mergedRef = (0, _usemergedref.useMergedRef)(observeLinkVisibilityOnMount, childRef);\n const childProps = {\n ref: mergedRef,\n onClick (e) {\n if (true) {\n if (!e) {\n throw Object.defineProperty(new Error('Component rendered inside next/link has to pass click event to \"onClick\" prop.'), \"__NEXT_ERROR_CODE\", {\n value: \"E312\",\n enumerable: false,\n configurable: true\n });\n }\n }\n if (!legacyBehavior && typeof onClick === 'function') {\n onClick(e);\n }\n if (legacyBehavior && child.props && typeof child.props.onClick === 'function') {\n child.props.onClick(e);\n }\n if (!router) {\n return;\n }\n if (e.defaultPrevented) {\n return;\n }\n linkClicked(e, href, as, linkInstanceRef, replace, scroll, onNavigate);\n },\n onMouseEnter (e) {\n if (!legacyBehavior && typeof onMouseEnterProp === 'function') {\n onMouseEnterProp(e);\n }\n if (legacyBehavior && child.props && typeof child.props.onMouseEnter === 'function') {\n child.props.onMouseEnter(e);\n }\n if (!router) {\n return;\n }\n if (!prefetchEnabled || \"development\" === 'development') {\n return;\n }\n const upgradeToDynamicPrefetch = unstable_dynamicOnHover === true;\n (0, _links.onNavigationIntent)(e.currentTarget, upgradeToDynamicPrefetch);\n },\n onTouchStart: false ? 0 : function onTouchStart(e) {\n if (!legacyBehavior && typeof onTouchStartProp === 'function') {\n onTouchStartProp(e);\n }\n if (legacyBehavior && child.props && typeof child.props.onTouchStart === 'function') {\n child.props.onTouchStart(e);\n }\n if (!router) {\n return;\n }\n if (!prefetchEnabled) {\n return;\n }\n const upgradeToDynamicPrefetch = unstable_dynamicOnHover === true;\n (0, _links.onNavigationIntent)(e.currentTarget, upgradeToDynamicPrefetch);\n }\n };\n // If child is an tag and doesn't have a href attribute, or if the 'passHref' property is\n // defined, we specify the current 'href', so that repetition is not needed by the user.\n // If the url is absolute, we can bypass the logic to prepend the basePath.\n if ((0, _utils.isAbsoluteUrl)(as)) {\n childProps.href = as;\n } else if (!legacyBehavior || passHref || child.type === 'a' && !('href' in child.props)) {\n childProps.href = (0, _addbasepath.addBasePath)(as);\n }\n let link;\n if (legacyBehavior) {\n if (true) {\n (0, _erroronce.errorOnce)('`legacyBehavior` is deprecated and will be removed in a future ' + 'release. A codemod is available to upgrade your components:\\n\\n' + 'npx @next/codemod@latest new-link .\\n\\n' + 'Learn more: https://nextjs.org/docs/app/building-your-application/upgrading/codemods#remove-a-tags-from-link-components');\n }\n link = /*#__PURE__*/ _react.default.cloneElement(child, childProps);\n } else {\n link = /*#__PURE__*/ (0, _jsxruntime.jsx)(\"a\", {\n ...restProps,\n ...childProps,\n children: children\n });\n }\n return /*#__PURE__*/ (0, _jsxruntime.jsx)(LinkStatusContext.Provider, {\n value: linkStatus,\n children: link\n });\n}\n_s(LinkComponent, \"MNV6IdWv8Lu3MKc7Fm4v59uGRY0=\");\n_c = LinkComponent;\nconst LinkStatusContext = /*#__PURE__*/ (0, _react.createContext)(_links.IDLE_LINK_STATUS);\nconst useLinkStatus = ()=>{\n return (0, _react.useContext)(LinkStatusContext);\n};\nfunction getFetchStrategyFromPrefetchProp(prefetchProp) {\n if (false) {} else {\n return prefetchProp === null || prefetchProp === 'auto' ? _segmentcache.FetchStrategy.PPR : // (although invalid values should've been filtered out by prop validation in dev)\n _segmentcache.FetchStrategy.Full;\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=link.js.map\nvar _c;\n$RefreshReg$(_c, \"LinkComponent\");\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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2FwcC1kaXIvbGluay5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztJQW9UQTs7Ozs7Ozs7O0NBU0MsR0FDRCxPQWthQztlQWxhdUJBOztJQXdhWEMsYUFBYTtlQUFiQTs7Ozs7NkVBcHVCMkQ7dUNBRTlDOzJEQUNPOzBDQUNKO21DQUNDO3lDQUNGO3NDQUNIO21DQVNsQjt3Q0FDb0I7K0NBQ1k7dUNBQ2I7MENBSW5CO0FBME1QLFNBQVNDLGdCQUFnQkMsS0FBdUI7SUFDOUMsTUFBTUMsY0FBY0QsTUFBTUUsYUFBYTtJQUN2QyxNQUFNQyxTQUFTRixZQUFZRyxZQUFZLENBQUM7SUFDeEMsT0FDR0QsVUFBVUEsV0FBVyxXQUN0QkgsTUFBTUssT0FBTyxJQUNiTCxNQUFNTSxPQUFPLElBQ2JOLE1BQU1PLFFBQVEsSUFDZFAsTUFBTVEsTUFBTSxJQUFJLDZCQUE2QjtJQUM1Q1IsTUFBTVMsV0FBVyxJQUFJVCxNQUFNUyxXQUFXLENBQUNDLEtBQUssS0FBSztBQUV0RDtBQUVBLFNBQVNDLFlBQ1BDLENBQW1CLEVBQ25CQyxJQUFZLEVBQ1pDLEVBQVUsRUFDVkMsZUFBcUQsRUFDckRDLE9BQWlCLEVBQ2pCQyxNQUFnQixFQUNoQkMsVUFBbUM7SUFFbkMsTUFBTSxFQUFFQyxRQUFRLEVBQUUsR0FBR1AsRUFBRVYsYUFBYTtJQUVwQyxrREFBa0Q7SUFDbEQsTUFBTWtCLG1CQUFtQkQsU0FBU0UsV0FBVyxPQUFPO0lBRXBELElBQ0dELG9CQUFvQnJCLGdCQUFnQmEsTUFDckNBLEVBQUVWLGFBQWEsQ0FBQ29CLFlBQVksQ0FBQyxhQUM3QjtRQUNBLDhDQUE4QztRQUM5QztJQUNGO0lBRUEsSUFBSSxDQUFDQyxDQUFBQSxHQUFBQSxZQUFBQSxVQUFBQSxFQUFXVixPQUFPO1FBQ3JCLElBQUlHLFNBQVM7WUFDWCw4REFBOEQ7WUFDOUQsK0JBQStCO1lBQy9CSixFQUFFWSxjQUFj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QztJQUNwQixPQUFPLElBQ0wsQ0FBQ3VDLGtCQUNEUCxZQUNDbUQsTUFBTU0sSUFBSSxLQUFLLE9BQU8sQ0FBRSxXQUFVTixNQUFNL0QsS0FBQUEsR0FDekM7UUFDQStFLFdBQVdwRyxJQUFJLEdBQUcyRyxDQUFBQSxHQUFBQSxhQUFBQSxXQUFXLEVBQUMxRztJQUNoQztJQUVBLElBQUkyRztJQUVKLElBQUlwRSxnQkFBZ0I7UUFDbEIsSUFBSWMsSUFBb0IsRUFBb0I7WUFDMUN1RCxDQUFBQSxHQUFBQSxXQUFBQSxTQUFBQSxFQUNFLG9FQUNFLG9FQUNBLDRDQUNBO1FBRU47UUFDQUQsT0FBQUEsV0FBQUEsR0FBTzlGLE9BQUFBLE9BQUssQ0FBQ2dHLFlBQVksQ0FBQzFCLE9BQU9nQjtJQUNuQyxPQUFPO1FBQ0xRLE9BQUFBLFdBQUFBLEdBQ0UscUJBQUMvRCxLQUFBQTtZQUFHLEdBQUdELFNBQVM7WUFBRyxHQUFHd0QsVUFBVTtzQkFDN0IxRTs7SUFHUDtJQUVBLHFCQUNFLHFCQUFDcUYsa0JBQWtCQyxRQUFRO1FBQUNDLE9BQU8zRjtrQkFDaENzRjs7QUFHUDs7S0FsYXdCNUg7QUFvYXhCLE1BQU0rSCxvQkFBQUEsV0FBQUEsR0FBb0JHLENBQUFBLEdBQUFBLE9BQUFBLGFBQUFBLEVBRXhCekYsT0FBQUEsZ0JBQWdCO0FBRVgsTUFBTXhDLGdCQUFnQjtJQUMzQixPQUFPOEQsQ0FBQUEsR0FBQUEsT0FBQUEsVUFBQUEsRUFBV2dFO0FBQ3BCO0FBRUEsU0FBUzVELGlDQUNQbkIsWUFBK0Q7SUFFL0QsSUFDRXNCLEtBQ3VDLEVBQ3ZDLEVBb0JELE1BQU07UUFDTCxPQUFPdEIsaUJBQWlCLFFBQVFBLGlCQUFpQixTQUU3QyxjQUNBb0IsYUFBYSxDQUFDQyxHQUFHLEdBRWpCLDREQUg4RixzQkFJWjtRQUNsRkQsY0FBQUEsYUFBYSxDQUFDa0UsSUFBSTtJQUN4QjtBQUNGIiwic291cmNlcyI6WyIvVXNlcnMvamV0dGNoZW5nMTAxOC9zcmMvY2xpZW50L2FwcC1kaXIvbGluay50c3giXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBjbGllbnQnXG5cbmltcG9ydCBSZWFjdCwgeyBjcmVhdGVDb250ZXh0LCB1c2VDb250ZXh0LCB1c2VPcHRpbWlzdGljLCB1c2VSZWYgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB0eXBlIHsgVXJsT2JqZWN0IH0gZnJvbSAndXJsJ1xuaW1wb3J0IHsgZm9ybWF0VXJsIH0gZnJvbSAnLi4vLi4vc2hhcmVkL2xpYi9yb3V0ZXIvdXRpbHMvZm9ybWF0LXVybCdcbmltcG9ydCB7IEFwcFJvdXRlckNvbnRleHQgfSBmcm9tICcuLi8uLi9zaGFyZWQvbGliL2FwcC1yb3V0ZXItY29udGV4dC5zaGFyZWQtcnVudGltZSdcbmltcG9ydCB7IHVzZU1lcmdlZFJlZiB9IGZyb20gJy4uL3VzZS1tZXJnZWQtcmVmJ1xuaW1wb3J0IHsgaXNBYnNvbHV0ZVVybCB9IGZyb20gJy4uLy4uL3NoYXJlZC9saWIvdXRpbHMnXG5pbXBvcnQgeyBhZGRCYXNlUGF0aCB9IGZyb20gJy4uL2FkZC1iYXNlLXBhdGgnXG5pbXBvcnQgeyB3YXJuT25jZSB9IGZyb20gJy4uLy4uL3NoYXJlZC9saWIvdXRpbHMvd2Fybi1vbmNlJ1xuaW1wb3J0IHR5cGUgeyBQRU5ESU5HX0xJTktfU1RBVFVTIH0gZnJvbSAnLi4vY29tcG9uZW50cy9saW5rcydcbmltcG9ydCB7XG4gIElETEVfTElOS19TVEFUVVMsXG4gIG1vdW50TGlua0luc3RhbmNlLFxuICBvbk5hdmlnYXRpb25JbnRlbnQsXG4gIHVubW91bnRMaW5rRm9yQ3VycmVudE5hdmlnYXRpb24sXG4gIHVubW91bnRQcmVmZXRjaGFibGVJbnN0YW5jZSxcbiAgdHlwZSBMaW5rSW5zdGFuY2UsXG59IGZyb20gJy4uL2NvbXBvbmVudHMvbGlua3MnXG5pbXBvcnQgeyBpc0xvY2FsVVJMIH0gZnJvbSAnLi4vLi4vc2hhcmVkL2xpYi9yb3V0ZXIvdXRpbHMvaXMtbG9jYWwtdXJsJ1xuaW1wb3J0IHsgZGlzcGF0Y2hOYXZpZ2F0ZUFjdGlvbiB9IGZyb20gJy4uL2NvbXBvbmVudHMvYXBwLXJvdXRlci1pbnN0YW5jZSdcbmltcG9ydCB7IGVycm9yT25jZSB9IGZyb20gJy4uLy4uL3NoYXJlZC9saWIvdXRpbHMvZXJyb3Itb25jZSdcbmltcG9ydCB7XG4gIEZldGNoU3RyYXRlZ3ksXG4gIHR5cGUgUHJlZmV0Y2hUYXNrRmV0Y2hTdHJhdGVneSxcbn0gZnJvbSAnLi4vY29tcG9uZW50cy9zZWdtZW50LWNhY2hlJ1xuXG50eXBlIFVybCA9IHN0cmluZyB8IFVybE9iamVjdFxudHlwZSBSZXF1aXJlZEtleXM8VD4gPSB7XG4gIFtLIGluIGtleW9mIFRdLT86IHt9IGV4dGVuZHMgUGljazxULCBLPiA/IG5ldmVyIDogS1xufVtrZXlvZiBUXVxudHlwZSBPcHRpb25hbEtleXM8VD4gPSB7XG4gIFtLIGluIGtleW9mIFRdLT86IHt9IGV4dGVuZHMgUGljazxULCBLPiA/IEsgOiBuZXZlclxufVtrZXlvZiBUXVxuXG50eXBlIE9uTmF2aWdhdGVFdmVudEhhbmRsZXIgPSAoZXZlbnQ6IHsgcHJldmVudERlZmF1bHQ6ICgpID0+IHZvaWQgfSkgPT4gdm9pZFxuXG50eXBlIEludGVybmFsTGlua1Byb3BzID0ge1xuICAvKipcbiAgICogKipSZXF1aXJlZCoqLiBUaGUgcGF0aCBvciBVUkwgdG8gbmF2aWdhdGUgdG8uIEl0IGNhbiBhbHNvIGJlIGFuIG9iamVjdCAoc2ltaWxhciB0byBgVVJMYCkuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHRzeFxuICAgKiAvLyBOYXZpZ2F0ZSB0byAvZGFzaGJvYXJkOlxuICAgKiA8TGluayBocmVmPVwiL2Rhc2hib2FyZFwiPkRhc2hib2FyZDwvTGluaz5cbiAgICpcbiAgICogLy8gTmF2aWdhdGUgdG8gL2Fib3V0P25hbWU9dGVzdDpcbiAgICogPExpbmsgaHJlZj17eyBwYXRobmFtZTogJy9hYm91dCcsIHF1ZXJ5OiB7IG5hbWU6ICd0ZXN0JyB9IH19PlxuICAgKiAgIEFib3V0XG4gICAqIDwvTGluaz5cbiAgICogYGBgXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIC0gRm9yIGV4dGVybmFsIFVSTHMsIHVzZSBhIGZ1bGx5IHF1YWxpZmllZCBVUkwgc3VjaCBhcyBgaHR0cHM6Ly8uLi5gLlxuICAgKiAtIEluIHRoZSBBcHAgUm91dGVyLCBkeW5hbWljIHJvdXRlcyBtdXN0IG5vdCBpbmNsdWRlIGJyYWNrZXRlZCBzZWdtZW50cyBpbiBgaHJlZmAuXG4gICAqL1xuICBocmVmOiBVcmxcblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgdjEwLjAuMDogYGhyZWZgIHByb3BzIHBvaW50aW5nIHRvIGEgZHluYW1pYyByb3V0ZSBhcmVcbiAgICogYXV0b21hdGljYWxseSByZXNvbHZlZCBhbmQgbm8gbG9uZ2VyIHJlcXVpcmUgdGhlIGBhc2AgcHJvcC5cbiAgICovXG4gIGFzPzogVXJsXG5cbiAgLyoqXG4gICAqIFJlcGxhY2UgdGhlIGN1cnJlbnQgYGhpc3RvcnlgIHN0YXRlIGluc3RlYWQgb2YgYWRkaW5nIGEgbmV3IFVSTCBpbnRvIHRoZSBzdGFjay5cbiAgICpcbiAgICogQGRlZmF1bHRWYWx1ZSBgZmFsc2VgXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHRzeFxuICAgKiA8TGluayBocmVmPVwiL2Fib3V0XCIgcmVwbGFjZT5cbiAgICogICBBYm91dCAocmVwbGFjZXMgdGhlIGhpc3Rvcnkgc3RhdGUpXG4gICAqIDwvTGluaz5cbiAgICogYGBgXG4gICAqL1xuICByZXBsYWNlPzogYm9vbGVhblxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0IHNjcm9sbCBiZWhhdmlvci4gSWYgYHRydWVgLCBOZXh0LmpzIGF0dGVtcHRzIHRvIG1haW50YWluXG4gICAqIHRoZSBzY3JvbGwgcG9zaXRpb24gaWYgdGhlIG5ld2x5IG5hdmlnYXRlZCBwYWdlIGlzIHN0aWxsIHZpc2libGUuIElmIG5vdCwgaXQgc2Nyb2xscyB0byB0aGUgdG9wLlxuICAgKlxuICAgKiBJZiBgZmFsc2VgLCBOZXh0LmpzIHdpbGwgbm90IG1vZGlmeSB0aGUgc2Nyb2xsIGJlaGF2aW9yIGF0IGFsbC5cbiAgICpcbiAgICogQGRlZmF1bHRWYWx1ZSBgdHJ1ZWBcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHN4XG4gICAqIDxMaW5rIGhyZWY9XCIvZGFzaGJvYXJkXCIgc2Nyb2xsPXtmYWxzZX0+XG4gICAqICAgTm8gYXV0byBzY3JvbGxcbiAgICogPC9MaW5rPlxuICAgKiBgYGBcbiAgICovXG4gIHNjcm9sbD86IGJvb2xlYW5cblxuICAvKipcbiAgICogVXBkYXRlIHRoZSBwYXRoIG9mIHRoZSBjdXJyZW50IHBhZ2Ugd2l0aG91dCByZXJ1bm5pbmcgZGF0YSBmZXRjaGluZyBtZXRob2RzXG4gICAqIGxpa2UgYGdldFN0YXRpY1Byb3BzYCwgYGdldFNlcnZlclNpZGVQcm9wc2AsIG9yIGBnZXRJbml0aWFsUHJvcHNgLlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBgc2hhbGxvd2Agb25seSBhcHBsaWVzIHRvIHRoZSBQYWdlcyBSb3V0ZXIuIEZvciB0aGUgQXBwIFJvdXRlciwgc2VlIHRoZVxuICAgKiBbZm9sbG93aW5nIGRvY3VtZW50YXRpb25dKGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL2FwcC9idWlsZGluZy15b3VyLWFwcGxpY2F0aW9uL3JvdXRpbmcvbGlua2luZy1hbmQtbmF2aWdhdGluZyN1c2luZy10aGUtbmF0aXZlLWhpc3RvcnktYXBpKS5cbiAgICpcbiAgICogQGRlZmF1bHRWYWx1ZSBgZmFsc2VgXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHRzeFxuICAgKiA8TGluayBocmVmPVwiL2Jsb2dcIiBzaGFsbG93PlxuICAgKiAgIFNoYWxsb3cgbmF2aWdhdGlvblxuICAgKiA8L0xpbms+XG4gICAqIGBgYFxuICAgKi9cbiAgc2hhbGxvdz86IGJvb2xlYW5cblxuICAvKipcbiAgICogRm9yY2VzIGBMaW5rYCB0byBwYXNzIGl0cyBgaHJlZmAgdG8gdGhlIGNoaWxkIGNvbXBvbmVudC4gVXNlZnVsIGlmIHRoZSBjaGlsZCBpcyBhIGN1c3RvbVxuICAgKiBjb21wb25lbnQgdGhhdCB3cmFwcyBhbiBgPGE+YCB0YWcsIG9yIGlmIHlvdSdyZSB1c2luZyBjZXJ0YWluIHN0eWxpbmcgbGlicmFyaWVzLlxuICAgKlxuICAgKiBAZGVmYXVsdFZhbHVlIGBmYWxzZWBcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHN4XG4gICAqIDxMaW5rIGhyZWY9XCIvZGFzaGJvYXJkXCIgcGFzc0hyZWY+XG4gICAqICAgPE15U3R5bGVkQW5jaG9yPkRhc2hib2FyZDwvTXlTdHlsZWRBbmNob3I+XG4gICAqIDwvTGluaz5cbiAgICogYGBgXG4gICAqL1xuICBwYXNzSHJlZj86IGJvb2xlYW5cblxuICAvKipcbiAgICogUHJlZmV0Y2ggdGhlIHBhZ2UgaW4gdGhlIGJhY2tncm91bmQuXG4gICAqIEFueSBgPExpbmsgLz5gIHRoYXQgaXMgaW4gdGhlIHZpZXdwb3J0IChpbml0aWFsbHkgb3IgdGhyb3VnaCBzY3JvbGwpIHdpbGwgYmUgcHJlZmV0Y2hlZC5cbiAgICogUHJlZmV0Y2ggY2FuIGJlIGRpc2FibGVkIGJ5IHBhc3NpbmcgYHByZWZldGNoPXtmYWxzZX1gLlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBQcmVmZXRjaGluZyBpcyBvbmx5IGVuYWJsZWQgaW4gcHJvZHVjdGlvbi5cbiAgICpcbiAgICogLSBJbiB0aGUgKipBcHAgUm91dGVyKio6XG4gICAqICAgLSBgXCJhdXRvXCJgLCBgbnVsbGAsIGB1bmRlZmluZWRgIChkZWZhdWx0KTogUHJlZmV0Y2ggYmVoYXZpb3IgZGVwZW5kcyBvbiBzdGF0aWMgdnMgZHluYW1pYyByb3V0ZXM6XG4gICAqICAgICAtIFN0YXRpYyByb3V0ZXM6IGZ1bGx5IHByZWZldGNoZWRcbiAgICogICAgIC0gRHluYW1pYyByb3V0ZXM6IHBhcnRpYWwgcHJlZmV0Y2ggdG8gdGhlIG5lYXJlc3Qgc2VnbWVudCB3aXRoIGEgYGxvYWRpbmcuanNgXG4gICAqICAgLSBgdHJ1ZWA6IEFsd2F5cyBwcmVmZXRjaCB0aGUgZnVsbCByb3V0ZSBhbmQgZGF0YS5cbiAgICogICAtIGBmYWxzZWA6IERpc2FibGUgcHJlZmV0Y2hpbmcgb24gYm90aCB2aWV3cG9ydCBhbmQgaG92ZXIuXG4gICAqIC0gSW4gdGhlICoqUGFnZXMgUm91dGVyKio6XG4gICAqICAgLSBgdHJ1ZWAgKGRlZmF1bHQpOiBQcmVmZXRjaGVzIHRoZSByb3V0ZSBhbmQgZGF0YSBpbiB0aGUgYmFja2dyb3VuZCBvbiB2aWV3cG9ydCBvciBob3Zlci5cbiAgICogICAtIGBmYWxzZWA6IFByZWZldGNoIG9ubHkgb24gaG92ZXIsIG5vdCBvbiB2aWV3cG9ydC5cbiAgICpcbiAgICogQGRlZmF1bHRWYWx1ZSBgdHJ1ZWAgKFBhZ2VzIFJvdXRlcikgb3IgYG51bGxgIChBcHAgUm91dGVyKVxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0c3hcbiAgICogPExpbmsgaHJlZj1cIi9kYXNoYm9hcmRcIiBwcmVmZXRjaD17ZmFsc2V9PlxuICAgKiAgIERhc2hib2FyZFxuICAgKiA8L0xpbms+XG4gICAqIGBgYFxuICAgKi9cbiAgcHJlZmV0Y2g/OiBib29sZWFuIHwgJ2F1dG8nIHwgbnVsbCB8ICd1bnN0YWJsZV9mb3JjZVN0YWxlJ1xuXG4gIC8qKlxuICAgKiAodW5zdGFibGUpIFN3aXRjaCB0byBhIGZ1bGwgcHJlZmV0Y2ggb24gaG92ZXIuIEVmZmVjdGl2ZWx5IHRoZSBzYW1lIGFzXG4gICAqIHVwZGF0aW5nIHRoZSBwcmVmZXRjaCBwcm9wIHRvIGB0cnVlYCBpbiBhIG1vdXNlIGV2ZW50LlxuICAgKi9cbiAgdW5zdGFibGVfZHluYW1pY09uSG92ZXI/OiBib29sZWFuXG5cbiAgLyoqXG4gICAqIFRoZSBhY3RpdmUgbG9jYWxlIGlzIGF1dG9tYXRpY2FsbHkgcHJlcGVuZGVkIGluIHRoZSBQYWdlcyBSb3V0ZXIuIGBsb2NhbGVgIGFsbG93cyBmb3IgcHJvdmlkaW5nXG4gICAqIGEgZGlmZmVyZW50IGxvY2FsZSwgb3IgY2FuIGJlIHNldCB0byBgZmFsc2VgIHRvIG9wdCBvdXQgb2YgYXV0b21hdGljIGxvY2FsZSBiZWhhdmlvci5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogTm90ZTogbG9jYWxlIG9ubHkgYXBwbGllcyBpbiB0aGUgUGFnZXMgUm91dGVyIGFuZCBpcyBpZ25vcmVkIGluIHRoZSBBcHAgUm91dGVyLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0c3hcbiAgICogLy8gVXNlIHRoZSAnZnInIGxvY2FsZTpcbiAgICogPExpbmsgaHJlZj1cIi9hYm91dFwiIGxvY2FsZT1cImZyXCI+XG4gICAqICAgQWJvdXQgKEZyZW5jaClcbiAgICogPC9MaW5rPlxuICAgKlxuICAgKiAvLyBEaXNhYmxlIGxvY2FsZSBwcmVmaXg6XG4gICAqIDxMaW5rIGhyZWY9XCIvYWJvdXRcIiBsb2NhbGU9e2ZhbHNlfT5cbiAgICogICBBYm91dCAobm8gbG9jYWxlIHByZWZpeClcbiAgICogPC9MaW5rPlxuICAgKiBgYGBcbiAgICovXG4gIGxvY2FsZT86IHN0cmluZyB8IGZhbHNlXG5cbiAgLyoqXG4gICAqIEVuYWJsZSBsZWdhY3kgbGluayBiZWhhdmlvciwgcmVxdWlyaW5nIGFuIGA8YT5gIHRhZyB0byB3cmFwIHRoZSBjaGlsZCBjb250ZW50XG4gICAqIGlmIHRoZSBjaGlsZCBpcyBhIHN0cmluZyBvciBudW1iZXIuXG4gICAqXG4gICAqIEBkZXByZWNhdGVkIFRoaXMgd2lsbCBiZSByZW1vdmVkIGluIHYxNlxuICAgKiBAZGVmYXVsdFZhbHVlIGBmYWxzZWBcbiAgICogQHNlZSBodHRwczovL2dpdGh1Yi5jb20vdmVyY2VsL25leHQuanMvY29tbWl0LzQ4OWU2NWVkOTg1NDRlNjliMGFmZDdlMGNmYzNmOWY2YzJiODAzYjdcbiAgICovXG4gIGxlZ2FjeUJlaGF2aW9yPzogYm9vbGVhblxuXG4gIC8qKlxuICAgKiBPcHRpb25hbCBldmVudCBoYW5kbGVyIGZvciB3aGVuIHRoZSBtb3VzZSBwb2ludGVyIGlzIG1vdmVkIG9udG8gdGhlIGA8TGluaz5gLlxuICAgKi9cbiAgb25Nb3VzZUVudGVyPzogUmVhY3QuTW91c2VFdmVudEhhbmRsZXI8SFRNTEFuY2hvckVsZW1lbnQ+XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIGV2ZW50IGhhbmRsZXIgZm9yIHdoZW4gdGhlIGA8TGluaz5gIGlzIHRvdWNoZWQuXG4gICAqL1xuICBvblRvdWNoU3RhcnQ/OiBSZWFjdC5Ub3VjaEV2ZW50SGFuZGxlcjxIVE1MQW5jaG9yRWxlbWVudD5cblxuICAvKipcbiAgICogT3B0aW9uYWwgZXZlbnQgaGFuZGxlciBmb3Igd2hlbiB0aGUgYDxMaW5rPmAgaXMgY2xpY2tlZC5cbiAgICovXG4gIG9uQ2xpY2s/OiBSZWFjdC5Nb3VzZUV2ZW50SGFuZGxlcjxIVE1MQW5jaG9yRWxlbWVudD5cblxuICAvKipcbiAgICogT3B0aW9uYWwgZXZlbnQgaGFuZGxlciBmb3Igd2hlbiB0aGUgYDxMaW5rPmAgaXMgbmF2aWdhdGVkLlxuICAgKi9cbiAgb25OYXZpZ2F0ZT86IE9uTmF2aWdhdGVFdmVudEhhbmRsZXJcbn1cblxuLy8gVE9ETy1BUFA6IEluY2x1ZGUgdGhlIGZ1bGwgc2V0IG9mIEFuY2hvciBwcm9wc1xuLy8gYWRkaW5nIHRoaXMgdG8gdGhlIHB1YmxpY2x5IGV4cG9ydGVkIHR5cGUgY3VycmVudGx5IGJyZWFrcyBleGlzdGluZyBhcHBzXG5cbi8vIGBSb3V0ZUluZmVyVHlwZWAgaXMgYSBzdHViIGhlcmUgdG8gYXZvaWQgYnJlYWtpbmcgYHR5cGVkUm91dGVzYCB3aGVuIHRoZSB0eXBlXG4vLyBpc24ndCBnZW5lcmF0ZWQgeWV0LiBJdCB3aWxsIGJlIHJlcGxhY2VkIHdoZW4gdHlwZSBnZW5lcmF0aW9uIHJ1bnMuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG5leHBvcnQgdHlwZSBMaW5rUHJvcHM8Um91dGVJbmZlclR5cGUgPSBhbnk+ID0gSW50ZXJuYWxMaW5rUHJvcHNcbnR5cGUgTGlua1Byb3BzUmVxdWlyZWQgPSBSZXF1aXJlZEtleXM8TGlua1Byb3BzPlxudHlwZSBMaW5rUHJvcHNPcHRpb25hbCA9IE9wdGlvbmFsS2V5czxPbWl0PEludGVybmFsTGlua1Byb3BzLCAnbG9jYWxlJz4+XG5cbmZ1bmN0aW9uIGlzTW9kaWZpZWRFdmVudChldmVudDogUmVhY3QuTW91c2VFdmVudCk6IGJvb2xlYW4ge1xuICBjb25zdCBldmVudFRhcmdldCA9IGV2ZW50LmN1cnJlbnRUYXJnZXQgYXMgSFRNTEFuY2hvckVsZW1lbnQgfCBTVkdBRWxlbWVudFxuICBjb25zdCB0YXJnZXQgPSBldmVudFRhcmdldC5nZXRBdHRyaWJ1dGUoJ3RhcmdldCcpXG4gIHJldHVybiAoXG4gICAgKHRhcmdldCAmJiB0YXJnZXQgIT09ICdfc2VsZicpIHx8XG4gICAgZXZlbnQubWV0YUtleSB8fFxuICAgIGV2ZW50LmN0cmxLZXkgfHxcbiAgICBldmVudC5zaGlmdEtleSB8fFxuICAgIGV2ZW50LmFsdEtleSB8fCAvLyB0cmlnZ2VycyByZXNvdXJjZSBkb3dubG9hZFxuICAgIChldmVudC5uYXRpdmVFdmVudCAmJiBldmVudC5uYXRpdmVFdmVudC53aGljaCA9PT0gMilcbiAgKVxufVxuXG5mdW5jdGlvbiBsaW5rQ2xpY2tlZChcbiAgZTogUmVhY3QuTW91c2VFdmVudCxcbiAgaHJlZjogc3RyaW5nLFxuICBhczogc3RyaW5nLFxuICBsaW5rSW5zdGFuY2VSZWY6IFJlYWN0LlJlZk9iamVjdDxMaW5rSW5zdGFuY2UgfCBudWxsPixcbiAgcmVwbGFjZT86IGJvb2xlYW4sXG4gIHNjcm9sbD86IGJvb2xlYW4sXG4gIG9uTmF2aWdhdGU/OiBPbk5hdmlnYXRlRXZlbnRIYW5kbGVyXG4pOiB2b2lkIHtcbiAgY29uc3QgeyBub2RlTmFtZSB9ID0gZS5jdXJyZW50VGFyZ2V0XG5cbiAgLy8gYW5jaG9ycyBpbnNpZGUgYW4gc3ZnIGhhdmUgYSBsb3dlcmNhc2Ugbm9kZU5hbWVcbiAgY29uc3QgaXNBbmNob3JOb2RlTmFtZSA9IG5vZGVOYW1lLnRvVXBwZXJDYXNlKCkgPT09ICdBJ1xuXG4gIGlmIChcbiAgICAoaXNBbmNob3JOb2RlTmFtZSAmJiBpc01vZGlmaWVkRXZlbnQoZSkpIHx8XG4gICAgZS5jdXJyZW50VGFyZ2V0Lmhhc0F0dHJpYnV0ZSgnZG93bmxvYWQnKVxuICApIHtcbiAgICAvLyBpZ25vcmUgY2xpY2sgZm9yIGJyb3dzZXLigJlzIGRlZmF1bHQgYmVoYXZpb3JcbiAgICByZXR1cm5cbiAgfVxuXG4gIGlmICghaXNMb2NhbFVSTChocmVmKSkge1xuICAgIGlmIChyZXBsYWNlKSB7XG4gICAgICAvLyBicm93c2VyIGRlZmF1bHQgYmVoYXZpb3IgZG9lcyBub3QgcmVwbGFjZSB0aGUgaGlzdG9yeSBzdGF0ZVxuICAgICAgLy8gc28gd2UgbmVlZCB0byBkbyBpdCBtYW51YWxseVxuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICBsb2NhdGlvbi5yZXBsYWNlKGhyZWYpXG4gICAgfVxuXG4gICAgLy8gaWdub3JlIGNsaWNrIGZvciBicm93c2Vy4oCZcyBkZWZhdWx0IGJlaGF2aW9yXG4gICAgcmV0dXJuXG4gIH1cblxuICBlLnByZXZlbnREZWZhdWx0KClcblxuICBpZiAob25OYXZpZ2F0ZSkge1xuICAgIGxldCBpc0RlZmF1bHRQcmV2ZW50ZWQgPSBmYWxzZVxuXG4gICAgb25OYXZpZ2F0ZSh7XG4gICAgICBwcmV2ZW50RGVmYXVsdDogKCkgPT4ge1xuICAgICAgICBpc0RlZmF1bHRQcmV2ZW50ZWQgPSB0cnVlXG4gICAgICB9LFxuICAgIH0pXG5cbiAgICBpZiAoaXNEZWZhdWx0UHJldmVudGVkKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gIH1cblxuICBSZWFjdC5zdGFydFRyYW5zaXRpb24oKCkgPT4ge1xuICAgIGRpc3BhdGNoTmF2aWdhdGVBY3Rpb24oXG4gICAgICBhcyB8fCBocmVmLFxuICAgICAgcmVwbGFjZSA/ICdyZXBsYWNlJyA6ICdwdXNoJyxcbiAgICAgIHNjcm9sbCA/PyB0cnVlLFxuICAgICAgbGlua0luc3RhbmNlUmVmLmN1cnJlbnRcbiAgICApXG4gIH0pXG59XG5cbmZ1bmN0aW9uIGZvcm1hdFN0cmluZ09yVXJsKHVybE9iak9yU3RyaW5nOiBVcmxPYmplY3QgfCBzdHJpbmcpOiBzdHJpbmcge1xuICBpZiAodHlwZW9mIHVybE9iak9yU3RyaW5nID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiB1cmxPYmpPclN0cmluZ1xuICB9XG5cbiAgcmV0dXJuIGZvcm1hdFVybCh1cmxPYmpPclN0cmluZylcbn1cblxuLyoqXG4gKiBBIFJlYWN0IGNvbXBvbmVudCB0aGF0IGV4dGVuZHMgdGhlIEhUTUwgYDxhPmAgZWxlbWVudCB0byBwcm92aWRlXG4gKiBbcHJlZmV0Y2hpbmddKGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL2FwcC9idWlsZGluZy15b3VyLWFwcGxpY2F0aW9uL3JvdXRpbmcvbGlua2luZy1hbmQtbmF2aWdhdGluZyMyLXByZWZldGNoaW5nKVxuICogYW5kIGNsaWVudC1zaWRlIG5hdmlnYXRpb24uIFRoaXMgaXMgdGhlIHByaW1hcnkgd2F5IHRvIG5hdmlnYXRlIGJldHdlZW4gcm91dGVzIGluIE5leHQuanMuXG4gKlxuICogQHJlbWFya3NcbiAqIC0gUHJlZmV0Y2hpbmcgaXMgb25seSBlbmFibGVkIGluIHByb2R1Y3Rpb24uXG4gKlxuICogQHNlZSBodHRwczovL25leHRqcy5vcmcvZG9jcy9hcHAvYXBpLXJlZmVyZW5jZS9jb21wb25lbnRzL2xpbmtcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gTGlua0NvbXBvbmVudChcbiAgcHJvcHM6IExpbmtQcm9wcyAmIHtcbiAgICBjaGlsZHJlbjogUmVhY3QuUmVhY3ROb2RlXG4gICAgcmVmOiBSZWFjdC5SZWY8SFRNTEFuY2hvckVsZW1lbnQ+XG4gIH1cbikge1xuICBjb25zdCBbbGlua1N0YXR1cywgc2V0T3B0aW1pc3RpY0xpbmtTdGF0dXNdID0gdXNlT3B0aW1pc3RpYyhJRExFX0xJTktfU1RBVFVTKVxuXG4gIGxldCBjaGlsZHJlbjogUmVhY3QuUmVhY3ROb2RlXG5cbiAgY29uc3QgbGlua0luc3RhbmNlUmVmID0gdXNlUmVmPExpbmtJbnN0YW5jZSB8IG51bGw+KG51bGwpXG5cbiAgY29uc3Qge1xuICAgIGhyZWY6IGhyZWZQcm9wLFxuICAgIGFzOiBhc1Byb3AsXG4gICAgY2hpbGRyZW46IGNoaWxkcmVuUHJvcCxcbiAgICBwcmVmZXRjaDogcHJlZmV0Y2hQcm9wID0gbnVsbCxcbiAgICBwYXNzSHJlZixcbiAgICByZXBsYWNlLFxuICAgIHNoYWxsb3csXG4gICAgc2Nyb2xsLFxuICAgIG9uQ2xpY2ssXG4gICAgb25Nb3VzZUVudGVyOiBvbk1vdXNlRW50ZXJQcm9wLFxuICAgIG9uVG91Y2hTdGFydDogb25Ub3VjaFN0YXJ0UHJvcCxcbiAgICBsZWdhY3lCZWhhdmlvciA9IGZhbHNlLFxuICAgIG9uTmF2aWdhdGUsXG4gICAgcmVmOiBmb3J3YXJkZWRSZWYsXG4gICAgdW5zdGFibGVfZHluYW1pY09uSG92ZXIsXG4gICAgLi4ucmVzdFByb3BzXG4gIH0gPSBwcm9wc1xuXG4gIGNoaWxkcmVuID0gY2hpbGRyZW5Qcm9wXG5cbiAgaWYgKFxuICAgIGxlZ2FjeUJlaGF2aW9yICYmXG4gICAgKHR5cGVvZiBjaGlsZHJlbiA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIGNoaWxkcmVuID09PSAnbnVtYmVyJylcbiAgKSB7XG4gICAgY2hpbGRyZW4gPSA8YT57Y2hpbGRyZW59PC9hPlxuICB9XG5cbiAgY29uc3Qgcm91dGVyID0gUmVhY3QudXNlQ29udGV4dChBcHBSb3V0ZXJDb250ZXh0KVxuXG4gIGNvbnN0IHByZWZldGNoRW5hYmxlZCA9IHByZWZldGNoUHJvcCAhPT0gZmFsc2VcblxuICBjb25zdCBmZXRjaFN0cmF0ZWd5ID1cbiAgICBwcmVmZXRjaFByb3AgIT09IGZhbHNlXG4gICAgICA/IGdldEZldGNoU3RyYXRlZ3lGcm9tUHJlZmV0Y2hQcm9wKHByZWZldGNoUHJvcClcbiAgICAgIDogLy8gVE9ETzogaXQgbWFrZXMgbm8gc2Vuc2UgdG8gYXNzaWduIGEgZmV0Y2hTdHJhdGVneSB3aGVuIHByZWZldGNoaW5nIGlzIGRpc2FibGVkLlxuICAgICAgICBGZXRjaFN0cmF0ZWd5LlBQUlxuXG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgZnVuY3Rpb24gY3JlYXRlUHJvcEVycm9yKGFyZ3M6IHtcbiAgICAgIGtleTogc3RyaW5nXG4gICAgICBleHBlY3RlZDogc3RyaW5nXG4gICAgICBhY3R1YWw6IHN0cmluZ1xuICAgIH0pIHtcbiAgICAgIHJldHVybiBuZXcgRXJyb3IoXG4gICAgICAgIGBGYWlsZWQgcHJvcCB0eXBlOiBUaGUgcHJvcCBcXGAke2FyZ3Mua2V5fVxcYCBleHBlY3RzIGEgJHthcmdzLmV4cGVjdGVkfSBpbiBcXGA8TGluaz5cXGAsIGJ1dCBnb3QgXFxgJHthcmdzLmFjdHVhbH1cXGAgaW5zdGVhZC5gICtcbiAgICAgICAgICAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAgICAgID8gXCJcXG5PcGVuIHlvdXIgYnJvd3NlcidzIGNvbnNvbGUgdG8gdmlldyB0aGUgQ29tcG9uZW50IHN0YWNrIHRyYWNlLlwiXG4gICAgICAgICAgICA6ICcnKVxuICAgICAgKVxuICAgIH1cblxuICAgIC8vIFR5cGVTY3JpcHQgdHJpY2sgZm9yIHR5cGUtZ3VhcmRpbmc6XG4gICAgY29uc3QgcmVxdWlyZWRQcm9wc0d1YXJkOiBSZWNvcmQ8TGlua1Byb3BzUmVxdWlyZWQsIHRydWU+ID0ge1xuICAgICAgaHJlZjogdHJ1ZSxcbiAgICB9IGFzIGNvbnN0XG4gICAgY29uc3QgcmVxdWlyZWRQcm9wczogTGlua1Byb3BzUmVxdWlyZWRbXSA9IE9iamVjdC5rZXlzKFxuICAgICAgcmVxdWlyZWRQcm9wc0d1YXJkXG4gICAgKSBhcyBMaW5rUHJvcHNSZXF1aXJlZFtdXG4gICAgcmVxdWlyZWRQcm9wcy5mb3JFYWNoKChrZXk6IExpbmtQcm9wc1JlcXVpcmVkKSA9PiB7XG4gICAgICBpZiAoa2V5ID09PSAnaHJlZicpIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIHByb3BzW2tleV0gPT0gbnVsbCB8fFxuICAgICAgICAgICh0eXBlb2YgcHJvcHNba2V5XSAhPT0gJ3N0cmluZycgJiYgdHlwZW9mIHByb3BzW2tleV0gIT09ICdvYmplY3QnKVxuICAgICAgICApIHtcbiAgICAgICAgICB0aHJvdyBjcmVhdGVQcm9wRXJyb3Ioe1xuICAgICAgICAgICAga2V5LFxuICAgICAgICAgICAgZXhwZWN0ZWQ6ICdgc3RyaW5nYCBvciBgb2JqZWN0YCcsXG4gICAgICAgICAgICBhY3R1YWw6IHByb3BzW2tleV0gPT09IG51bGwgPyAnbnVsbCcgOiB0eXBlb2YgcHJvcHNba2V5XSxcbiAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBUeXBlU2NyaXB0IHRyaWNrIGZvciB0eXBlLWd1YXJkaW5nOlxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gICAgICAgIGNvbnN0IF86IG5ldmVyID0ga2V5XG4gICAgICB9XG4gICAgfSlcblxuICAgIC8vIFR5cGVTY3JpcHQgdHJpY2sgZm9yIHR5cGUtZ3VhcmRpbmc6XG4gICAgY29uc3Qgb3B0aW9uYWxQcm9wc0d1YXJkOiBSZWNvcmQ8TGlua1Byb3BzT3B0aW9uYWwsIHRydWU+ID0ge1xuICAgICAgYXM6IHRydWUsXG4gICAgICByZXBsYWNlOiB0cnVlLFxuICAgICAgc2Nyb2xsOiB0cnVlLFxuICAgICAgc2hhbGxvdzogdHJ1ZSxcbiAgICAgIHBhc3NIcmVmOiB0cnVlLFxuICAgICAgcHJlZmV0Y2g6IHRydWUsXG4gICAgICB1bnN0YWJsZV9keW5hbWljT25Ib3ZlcjogdHJ1ZSxcbiAgICAgIG9uQ2xpY2s6IHRydWUsXG4gICAgICBvbk1vdXNlRW50ZXI6IHRydWUsXG4gICAgICBvblRvdWNoU3RhcnQ6IHRydWUsXG4gICAgICBsZWdhY3lCZWhhdmlvcjogdHJ1ZSxcbiAgICAgIG9uTmF2aWdhdGU6IHRydWUsXG4gICAgfSBhcyBjb25zdFxuICAgIGNvbnN0IG9wdGlvbmFsUHJvcHM6IExpbmtQcm9wc09wdGlvbmFsW10gPSBPYmplY3Qua2V5cyhcbiAgICAgIG9wdGlvbmFsUHJvcHNHdWFyZFxuICAgICkgYXMgTGlua1Byb3BzT3B0aW9uYWxbXVxuICAgIG9wdGlvbmFsUHJvcHMuZm9yRWFjaCgoa2V5OiBMaW5rUHJvcHNPcHRpb25hbCkgPT4ge1xuICAgICAgY29uc3QgdmFsVHlwZSA9IHR5cGVvZiBwcm9wc1trZXldXG5cbiAgICAgIGlmIChrZXkgPT09ICdhcycpIHtcbiAgICAgICAgaWYgKHByb3BzW2tleV0gJiYgdmFsVHlwZSAhPT0gJ3N0cmluZycgJiYgdmFsVHlwZSAhPT0gJ29iamVjdCcpIHtcbiAgICAgICAgICB0aHJvdyBjcmVhdGVQcm9wRXJyb3Ioe1xuICAgICAgICAgICAga2V5LFxuICAgICAgICAgICAgZXhwZWN0ZWQ6ICdgc3RyaW5nYCBvciBgb2JqZWN0YCcsXG4gICAgICAgICAgICBhY3R1YWw6IHZhbFR5cGUsXG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAga2V5ID09PSAnb25DbGljaycgfHxcbiAgICAgICAga2V5ID09PSAnb25Nb3VzZUVudGVyJyB8fFxuICAgICAgICBrZXkgPT09ICdvblRvdWNoU3RhcnQnIHx8XG4gICAgICAgIGtleSA9PT0gJ29uTmF2aWdhdGUnXG4gICAgICApIHtcbiAgICAgICAgaWYgKHByb3BzW2tleV0gJiYgdmFsVHlwZSAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgIHRocm93IGNyZWF0ZVByb3BFcnJvcih7XG4gICAgICAgICAgICBrZXksXG4gICAgICAgICAgICBleHBlY3RlZDogJ2BmdW5jdGlvbmAnLFxuICAgICAgICAgICAgYWN0dWFsOiB2YWxUeXBlLFxuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgIGtleSA9PT0gJ3JlcGxhY2UnIHx8XG4gICAgICAgIGtleSA9PT0gJ3Njcm9sbCcgfHxcbiAgICAgICAga2V5ID09PSAnc2hhbGxvdycgfHxcbiAgICAgICAga2V5ID09PSAncGFzc0hyZWYnIHx8XG4gICAgICAgIGtleSA9PT0gJ2xlZ2FjeUJlaGF2aW9yJyB8fFxuICAgICAgICBrZXkgPT09ICd1bnN0YWJsZV9keW5hbWljT25Ib3ZlcidcbiAgICAgICkge1xuICAgICAgICBpZiAocHJvcHNba2V5XSAhPSBudWxsICYmIHZhbFR5cGUgIT09ICdib29sZWFuJykge1xuICAgICAgICAgIHRocm93IGNyZWF0ZVByb3BFcnJvcih7XG4gICAgICAgICAgICBrZXksXG4gICAgICAgICAgICBleHBlY3RlZDogJ2Bib29sZWFuYCcsXG4gICAgICAgICAgICBhY3R1YWw6IHZhbFR5cGUsXG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChrZXkgPT09ICdwcmVmZXRjaCcpIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIHByb3BzW2tleV0gIT0gbnVsbCAmJlxuICAgICAgICAgIHZhbFR5cGUgIT09ICdib29sZWFuJyAmJlxuICAgICAgICAgIHByb3BzW2tleV0gIT09ICdhdXRvJyAmJlxuICAgICAgICAgIHByb3BzW2tleV0gIT09ICd1bnN0YWJsZV9mb3JjZVN0YWxlJ1xuICAgICAgICApIHtcbiAgICAgICAgICB0aHJvdyBjcmVhdGVQcm9wRXJyb3Ioe1xuICAgICAgICAgICAga2V5LFxuICAgICAgICAgICAgZXhwZWN0ZWQ6ICdgYm9vbGVhbiB8IFwiYXV0b1wiIHwgXCJ1bnN0YWJsZV9mb3JjZVN0YWxlXCJgJyxcbiAgICAgICAgICAgIGFjdHVhbDogdmFsVHlwZSxcbiAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBUeXBlU2NyaXB0IHRyaWNrIGZvciB0eXBlLWd1YXJkaW5nOlxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gICAgICAgIGNvbnN0IF86IG5ldmVyID0ga2V5XG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgaWYgKHByb3BzLmxvY2FsZSkge1xuICAgICAgd2Fybk9uY2UoXG4gICAgICAgICdUaGUgYGxvY2FsZWAgcHJvcCBpcyBub3Qgc3VwcG9ydGVkIGluIGBuZXh0L2xpbmtgIHdoaWxlIHVzaW5nIHRoZSBgYXBwYCByb3V0ZXIuIFJlYWQgbW9yZSBhYm91dCBhcHAgcm91dGVyIGludGVybmFsaXphdGlvbjogaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvYXBwL2J1aWxkaW5nLXlvdXItYXBwbGljYXRpb24vcm91dGluZy9pbnRlcm5hdGlvbmFsaXphdGlvbidcbiAgICAgIClcbiAgICB9XG4gICAgaWYgKCFhc1Byb3ApIHtcbiAgICAgIGxldCBocmVmOiBzdHJpbmcgfCB1bmRlZmluZWRcbiAgICAgIGlmICh0eXBlb2YgaHJlZlByb3AgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGhyZWYgPSBocmVmUHJvcFxuICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgdHlwZW9mIGhyZWZQcm9wID09PSAnb2JqZWN0JyAmJlxuICAgICAgICB0eXBlb2YgaHJlZlByb3AucGF0aG5hbWUgPT09ICdzdHJpbmcnXG4gICAgICApIHtcbiAgICAgICAgaHJlZiA9IGhyZWZQcm9wLnBhdGhuYW1lXG4gICAgICB9XG5cbiAgICAgIGlmIChocmVmKSB7XG4gICAgICAgIGNvbnN0IGhhc0R5bmFtaWNTZWdtZW50ID0gaHJlZlxuICAgICAgICAgIC5zcGxpdCgnLycpXG4gICAgICAgICAgLnNvbWUoKHNlZ21lbnQpID0+IHNlZ21lbnQuc3RhcnRzV2l0aCgnWycpICYmIHNlZ21lbnQuZW5kc1dpdGgoJ10nKSlcblxuICAgICAgICBpZiAoaGFzRHluYW1pY1NlZ21lbnQpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICBgRHluYW1pYyBocmVmIFxcYCR7aHJlZn1cXGAgZm91bmQgaW4gPExpbms+IHdoaWxlIHVzaW5nIHRoZSBcXGAvYXBwXFxgIHJvdXRlciwgdGhpcyBpcyBub3Qgc3VwcG9ydGVkLiBSZWFkIG1vcmU6IGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL21lc3NhZ2VzL2FwcC1kaXItZHluYW1pYy1ocmVmYFxuICAgICAgICAgIClcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHsgaHJlZiwgYXMgfSA9IFJlYWN0LnVzZU1lbW8oKCkgPT4ge1xuICAgIGNvbnN0IHJlc29sdmVkSHJlZiA9IGZvcm1hdFN0cmluZ09yVXJsKGhyZWZQcm9wKVxuICAgIHJldHVybiB7XG4gICAgICBocmVmOiByZXNvbHZlZEhyZWYsXG4gICAgICBhczogYXNQcm9wID8gZm9ybWF0U3RyaW5nT3JVcmwoYXNQcm9wKSA6IHJlc29sdmVkSHJlZixcbiAgICB9XG4gIH0sIFtocmVmUHJvcCwgYXNQcm9wXSlcblxuICAvLyBUaGlzIHdpbGwgcmV0dXJuIHRoZSBmaXJzdCBjaGlsZCwgaWYgbXVsdGlwbGUgYXJlIHByb3ZpZGVkIGl0IHdpbGwgdGhyb3cgYW4gZXJyb3JcbiAgbGV0IGNoaWxkOiBhbnlcbiAgaWYgKGxlZ2FjeUJlaGF2aW9yKSB7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAnZGV2ZWxvcG1lbnQnKSB7XG4gICAgICBpZiAob25DbGljaykge1xuICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgYFwib25DbGlja1wiIHdhcyBwYXNzZWQgdG8gPExpbms+IHdpdGggXFxgaHJlZlxcYCBvZiBcXGAke2hyZWZQcm9wfVxcYCBidXQgXCJsZWdhY3lCZWhhdmlvclwiIHdhcyBzZXQuIFRoZSBsZWdhY3kgYmVoYXZpb3IgcmVxdWlyZXMgb25DbGljayBiZSBzZXQgb24gdGhlIGNoaWxkIG9mIG5leHQvbGlua2BcbiAgICAgICAgKVxuICAgICAgfVxuICAgICAgaWYgKG9uTW91c2VFbnRlclByb3ApIHtcbiAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgIGBcIm9uTW91c2VFbnRlclwiIHdhcyBwYXNzZWQgdG8gPExpbms+IHdpdGggXFxgaHJlZlxcYCBvZiBcXGAke2hyZWZQcm9wfVxcYCBidXQgXCJsZWdhY3lCZWhhdmlvclwiIHdhcyBzZXQuIFRoZSBsZWdhY3kgYmVoYXZpb3IgcmVxdWlyZXMgb25Nb3VzZUVudGVyIGJlIHNldCBvbiB0aGUgY2hpbGQgb2YgbmV4dC9saW5rYFxuICAgICAgICApXG4gICAgICB9XG4gICAgICB0cnkge1xuICAgICAgICBjaGlsZCA9IFJlYWN0LkNoaWxkcmVuLm9ubHkoY2hpbGRyZW4pXG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgaWYgKCFjaGlsZHJlbikge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgIGBObyBjaGlsZHJlbiB3ZXJlIHBhc3NlZCB0byA8TGluaz4gd2l0aCBcXGBocmVmXFxgIG9mIFxcYCR7aHJlZlByb3B9XFxgIGJ1dCBvbmUgY2hpbGQgaXMgcmVxdWlyZWQgaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvbWVzc2FnZXMvbGluay1uby1jaGlsZHJlbmBcbiAgICAgICAgICApXG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBNdWx0aXBsZSBjaGlsZHJlbiB3ZXJlIHBhc3NlZCB0byA8TGluaz4gd2l0aCBcXGBocmVmXFxgIG9mIFxcYCR7aHJlZlByb3B9XFxgIGJ1dCBvbmx5IG9uZSBjaGlsZCBpcyBzdXBwb3J0ZWQgaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvbWVzc2FnZXMvbGluay1tdWx0aXBsZS1jaGlsZHJlbmAgK1xuICAgICAgICAgICAgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnXG4gICAgICAgICAgICAgID8gXCIgXFxuT3BlbiB5b3VyIGJyb3dzZXIncyBjb25zb2xlIHRvIHZpZXcgdGhlIENvbXBvbmVudCBzdGFjayB0cmFjZS5cIlxuICAgICAgICAgICAgICA6ICcnKVxuICAgICAgICApXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGNoaWxkID0gUmVhY3QuQ2hpbGRyZW4ub25seShjaGlsZHJlbilcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAnZGV2ZWxvcG1lbnQnKSB7XG4gICAgICBpZiAoKGNoaWxkcmVuIGFzIGFueSk/LnR5cGUgPT09ICdhJykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgJ0ludmFsaWQgPExpbms+IHdpdGggPGE+IGNoaWxkLiBQbGVhc2UgcmVtb3ZlIDxhPiBvciB1c2UgPExpbmsgbGVnYWN5QmVoYXZpb3I+LlxcbkxlYXJuIG1vcmU6IGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL21lc3NhZ2VzL2ludmFsaWQtbmV3LWxpbmstd2l0aC1leHRyYS1hbmNob3InXG4gICAgICAgIClcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdCBjaGlsZFJlZjogYW55ID0gbGVnYWN5QmVoYXZpb3JcbiAgICA/IGNoaWxkICYmIHR5cGVvZiBjaGlsZCA9PT0gJ29iamVjdCcgJiYgY2hpbGQucmVmXG4gICAgOiBmb3J3YXJkZWRSZWZcblxuICAvLyBVc2UgYSBjYWxsYmFjayByZWYgdG8gYXR0YWNoIGFuIEludGVyc2VjdGlvbk9ic2VydmVyIHRvIHRoZSBhbmNob3IgdGFnIG9uXG4gIC8vIG1vdW50LiBJbiB0aGUgZnV0dXJlIHdlIHdpbGwgYWxzbyB1c2UgdGhpcyB0byBrZWVwIHRyYWNrIG9mIGFsbCB0aGVcbiAgLy8gY3VycmVudGx5IG1vdW50ZWQgPExpbms+IGluc3RhbmNlcywgZS5nLiBzbyB3ZSBjYW4gcmUtcHJlZmV0Y2ggdGhlbSBhZnRlclxuICAvLyBhIHJldmFsaWRhdGlvbiBvciByZWZyZXNoLlxuICBjb25zdCBvYnNlcnZlTGlua1Zpc2liaWxpdHlPbk1vdW50ID0gUmVhY3QudXNlQ2FsbGJhY2soXG4gICAgKGVsZW1lbnQ6IEhUTUxBbmNob3JFbGVtZW50IHwgU1ZHQUVsZW1lbnQpID0+IHtcbiAgICAgIGlmIChyb3V0ZXIgIT09IG51bGwpIHtcbiAgICAgICAgbGlua0luc3RhbmNlUmVmLmN1cnJlbnQgPSBtb3VudExpbmtJbnN0YW5jZShcbiAgICAgICAgICBlbGVtZW50LFxuICAgICAgICAgIGhyZWYsXG4gICAgICAgICAgcm91dGVyLFxuICAgICAgICAgIGZldGNoU3RyYXRlZ3ksXG4gICAgICAgICAgcHJlZmV0Y2hFbmFibGVkLFxuICAgICAgICAgIHNldE9wdGltaXN0aWNMaW5rU3RhdHVzXG4gICAgICAgIClcbiAgICAgIH1cblxuICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgaWYgKGxpbmtJbnN0YW5jZVJlZi5jdXJyZW50KSB7XG4gICAgICAgICAgdW5tb3VudExpbmtGb3JDdXJyZW50TmF2aWdhdGlvbihsaW5rSW5zdGFuY2VSZWYuY3VycmVudClcbiAgICAgICAgICBsaW5rSW5zdGFuY2VSZWYuY3VycmVudCA9IG51bGxcbiAgICAgICAgfVxuICAgICAgICB1bm1vdW50UHJlZmV0Y2hhYmxlSW5zdGFuY2UoZWxlbWVudClcbiAgICAgIH1cbiAgICB9LFxuICAgIFtwcmVmZXRjaEVuYWJsZWQsIGhyZWYsIHJvdXRlciwgZmV0Y2hTdHJhdGVneSwgc2V0T3B0aW1pc3RpY0xpbmtTdGF0dXNdXG4gIClcblxuICBjb25zdCBtZXJnZWRSZWYgPSB1c2VNZXJnZWRSZWYob2JzZXJ2ZUxpbmtWaXNpYmlsaXR5T25Nb3VudCwgY2hpbGRSZWYpXG5cbiAgY29uc3QgY2hpbGRQcm9wczoge1xuICAgIG9uVG91Y2hTdGFydD86IFJlYWN0LlRvdWNoRXZlbnRIYW5kbGVyPEhUTUxBbmNob3JFbGVtZW50PlxuICAgIG9uTW91c2VFbnRlcjogUmVhY3QuTW91c2VFdmVudEhhbmRsZXI8SFRNTEFuY2hvckVsZW1lbnQ+XG4gICAgb25DbGljazogUmVhY3QuTW91c2VFdmVudEhhbmRsZXI8SFRNTEFuY2hvckVsZW1lbnQ+XG4gICAgaHJlZj86IHN0cmluZ1xuICAgIHJlZj86IGFueVxuICB9ID0ge1xuICAgIHJlZjogbWVyZ2VkUmVmLFxuICAgIG9uQ2xpY2soZSkge1xuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgaWYgKCFlKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgYENvbXBvbmVudCByZW5kZXJlZCBpbnNpZGUgbmV4dC9saW5rIGhhcyB0byBwYXNzIGNsaWNrIGV2ZW50IHRvIFwib25DbGlja1wiIHByb3AuYFxuICAgICAgICAgIClcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoIWxlZ2FjeUJlaGF2aW9yICYmIHR5cGVvZiBvbkNsaWNrID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIG9uQ2xpY2soZSlcbiAgICAgIH1cblxuICAgICAgaWYgKFxuICAgICAgICBsZWdhY3lCZWhhdmlvciAmJlxuICAgICAgICBjaGlsZC5wcm9wcyAmJlxuICAgICAgICB0eXBlb2YgY2hpbGQucHJvcHMub25DbGljayA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgKSB7XG4gICAgICAgIGNoaWxkLnByb3BzLm9uQ2xpY2soZSlcbiAgICAgIH1cblxuICAgICAgaWYgKCFyb3V0ZXIpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGlmIChlLmRlZmF1bHRQcmV2ZW50ZWQpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGxpbmtDbGlja2VkKGUsIGhyZWYsIGFzLCBsaW5rSW5zdGFuY2VSZWYsIHJlcGxhY2UsIHNjcm9sbCwgb25OYXZpZ2F0ZSlcbiAgICB9LFxuICAgIG9uTW91c2VFbnRlcihlKSB7XG4gICAgICBpZiAoIWxlZ2FjeUJlaGF2aW9yICYmIHR5cGVvZiBvbk1vdXNlRW50ZXJQcm9wID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIG9uTW91c2VFbnRlclByb3AoZSlcbiAgICAgIH1cblxuICAgICAgaWYgKFxuICAgICAgICBsZWdhY3lCZWhhdmlvciAmJlxuICAgICAgICBjaGlsZC5wcm9wcyAmJlxuICAgICAgICB0eXBlb2YgY2hpbGQucHJvcHMub25Nb3VzZUVudGVyID09PSAnZnVuY3Rpb24nXG4gICAgICApIHtcbiAgICAgICAgY2hpbGQucHJvcHMub25Nb3VzZUVudGVyKGUpXG4gICAgICB9XG5cbiAgICAgIGlmICghcm91dGVyKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBpZiAoIXByZWZldGNoRW5hYmxlZCB8fCBwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ2RldmVsb3BtZW50Jykge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgY29uc3QgdXBncmFkZVRvRHluYW1pY1ByZWZldGNoID0gdW5zdGFibGVfZHluYW1pY09uSG92ZXIgPT09IHRydWVcbiAgICAgIG9uTmF2aWdhdGlvbkludGVudChcbiAgICAgICAgZS5jdXJyZW50VGFyZ2V0IGFzIEhUTUxBbmNob3JFbGVtZW50IHwgU1ZHQUVsZW1lbnQsXG4gICAgICAgIHVwZ3JhZGVUb0R5bmFtaWNQcmVmZXRjaFxuICAgICAgKVxuICAgIH0sXG4gICAgb25Ub3VjaFN0YXJ0OiBwcm9jZXNzLmVudi5fX05FWFRfTElOS19OT19UT1VDSF9TVEFSVFxuICAgICAgPyB1bmRlZmluZWRcbiAgICAgIDogZnVuY3Rpb24gb25Ub3VjaFN0YXJ0KGUpIHtcbiAgICAgICAgICBpZiAoIWxlZ2FjeUJlaGF2aW9yICYmIHR5cGVvZiBvblRvdWNoU3RhcnRQcm9wID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBvblRvdWNoU3RhcnRQcm9wKGUpXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgbGVnYWN5QmVoYXZpb3IgJiZcbiAgICAgICAgICAgIGNoaWxkLnByb3BzICYmXG4gICAgICAgICAgICB0eXBlb2YgY2hpbGQucHJvcHMub25Ub3VjaFN0YXJ0ID09PSAnZnVuY3Rpb24nXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBjaGlsZC5wcm9wcy5vblRvdWNoU3RhcnQoZSlcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoIXJvdXRlcikge1xuICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKCFwcmVmZXRjaEVuYWJsZWQpIHtcbiAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IHVwZ3JhZGVUb0R5bmFtaWNQcmVmZXRjaCA9IHVuc3RhYmxlX2R5bmFtaWNPbkhvdmVyID09PSB0cnVlXG4gICAgICAgICAgb25OYXZpZ2F0aW9uSW50ZW50KFxuICAgICAgICAgICAgZS5jdXJyZW50VGFyZ2V0IGFzIEhUTUxBbmNob3JFbGVtZW50IHwgU1ZHQUVsZW1lbnQsXG4gICAgICAgICAgICB1cGdyYWRlVG9EeW5hbWljUHJlZmV0Y2hcbiAgICAgICAgICApXG4gICAgICAgIH0sXG4gIH1cblxuICAvLyBJZiBjaGlsZCBpcyBhbiA8YT4gdGFnIGFuZCBkb2Vzbid0IGhhdmUgYSBocmVmIGF0dHJpYnV0ZSwgb3IgaWYgdGhlICdwYXNzSHJlZicgcHJvcGVydHkgaXNcbiAgLy8gZGVmaW5lZCwgd2Ugc3BlY2lmeSB0aGUgY3VycmVudCAnaHJlZicsIHNvIHRoYXQgcmVwZXRpdGlvbiBpcyBub3QgbmVlZGVkIGJ5IHRoZSB1c2VyLlxuICAvLyBJZiB0aGUgdXJsIGlzIGFic29sdXRlLCB3ZSBjYW4gYnlwYXNzIHRoZSBsb2dpYyB0byBwcmVwZW5kIHRoZSBiYXNlUGF0aC5cbiAgaWYgKGlzQWJzb2x1dGVVcmwoYXMpKSB7XG4gICAgY2hpbGRQcm9wcy5ocmVmID0gYXNcbiAgfSBlbHNlIGlmIChcbiAgICAhbGVnYWN5QmVoYXZpb3IgfHxcbiAgICBwYXNzSHJlZiB8fFxuICAgIChjaGlsZC50eXBlID09PSAnYScgJiYgISgnaHJlZicgaW4gY2hpbGQucHJvcHMpKVxuICApIHtcbiAgICBjaGlsZFByb3BzLmhyZWYgPSBhZGRCYXNlUGF0aChhcylcbiAgfVxuXG4gIGxldCBsaW5rOiBSZWFjdC5SZWFjdE5vZGVcblxuICBpZiAobGVnYWN5QmVoYXZpb3IpIHtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdkZXZlbG9wbWVudCcpIHtcbiAgICAgIGVycm9yT25jZShcbiAgICAgICAgJ2BsZWdhY3lCZWhhdmlvcmAgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlICcgK1xuICAgICAgICAgICdyZWxlYXNlLiBBIGNvZGVtb2QgaXMgYXZhaWxhYmxlIHRvIHVwZ3JhZGUgeW91ciBjb21wb25lbnRzOlxcblxcbicgK1xuICAgICAgICAgICducHggQG5leHQvY29kZW1vZEBsYXRlc3QgbmV3LWxpbmsgLlxcblxcbicgK1xuICAgICAgICAgICdMZWFybiBtb3JlOiBodHRwczovL25leHRqcy5vcmcvZG9jcy9hcHAvYnVpbGRpbmcteW91ci1hcHBsaWNhdGlvbi91cGdyYWRpbmcvY29kZW1vZHMjcmVtb3ZlLWEtdGFncy1mcm9tLWxpbmstY29tcG9uZW50cydcbiAgICAgIClcbiAgICB9XG4gICAgbGluayA9IFJlYWN0LmNsb25lRWxlbWVudChjaGlsZCwgY2hpbGRQcm9wcylcbiAgfSBlbHNlIHtcbiAgICBsaW5rID0gKFxuICAgICAgPGEgey4uLnJlc3RQcm9wc30gey4uLmNoaWxkUHJvcHN9PlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L2E+XG4gICAgKVxuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8TGlua1N0YXR1c0NvbnRleHQuUHJvdmlkZXIgdmFsdWU9e2xpbmtTdGF0dXN9PlxuICAgICAge2xpbmt9XG4gICAgPC9MaW5rU3RhdHVzQ29udGV4dC5Qcm92aWRlcj5cbiAgKVxufVxuXG5jb25zdCBMaW5rU3RhdHVzQ29udGV4dCA9IGNyZWF0ZUNvbnRleHQ8XG4gIHR5cGVvZiBQRU5ESU5HX0xJTktfU1RBVFVTIHwgdHlwZW9mIElETEVfTElOS19TVEFUVVNcbj4oSURMRV9MSU5LX1NUQVRVUylcblxuZXhwb3J0IGNvbnN0IHVzZUxpbmtTdGF0dXMgPSAoKSA9PiB7XG4gIHJldHVybiB1c2VDb250ZXh0KExpbmtTdGF0dXNDb250ZXh0KVxufVxuXG5mdW5jdGlvbiBnZXRGZXRjaFN0cmF0ZWd5RnJvbVByZWZldGNoUHJvcChcbiAgcHJlZmV0Y2hQcm9wOiBFeGNsdWRlPExpbmtQcm9wc1sncHJlZmV0Y2gnXSwgdW5kZWZpbmVkIHwgZmFsc2U+XG4pOiBQcmVmZXRjaFRhc2tGZXRjaFN0cmF0ZWd5IHtcbiAgaWYgKFxuICAgIHByb2Nlc3MuZW52Ll9fTkVYVF9DQUNIRV9DT01QT05FTlRTICYmXG4gICAgcHJvY2Vzcy5lbnYuX19ORVhUX0NMSUVOVF9TRUdNRU5UX0NBQ0hFXG4gICkge1xuICAgIC8vIEluIHRoZSBuZXcgaW1wbGVtZW50YXRpb246XG4gICAgLy8gLSBgcHJlZmV0Y2g9e3RydWV9YCBpcyBhIHJ1bnRpbWUgcHJlZmV0Y2hcbiAgICAvLyAgIChpbmNsdWRlcyBjYWNoZWQgSU8gKyBwYXJhbXMgKyBjb29raWVzLCB3aXRoIGR5bmFtaWMgaG9sZXMgZm9yIHVuY2FjaGVkIElPKS5cbiAgICAvLyAtIGB1bnN0YWJsZV9mb3JjZVN0YWxlYCBpcyBhIFwiZnVsbFwiIHByZWZldGNoXG4gICAgLy8gICAoZm9yY2VzIGluY2x1c2lvbiBvZiBhbGwgZHluYW1pYyBkYXRhLCBpLmUuIHRoZSBvbGQgYmVoYXZpb3Igb2YgYHByZWZldGNoPXt0cnVlfWApXG4gICAgaWYgKHByZWZldGNoUHJvcCA9PT0gdHJ1ZSkge1xuICAgICAgcmV0dXJuIEZldGNoU3RyYXRlZ3kuUFBSUnVudGltZVxuICAgIH1cbiAgICBpZiAocHJlZmV0Y2hQcm9wID09PSAndW5zdGFibGVfZm9yY2VTdGFsZScpIHtcbiAgICAgIHJldHVybiBGZXRjaFN0cmF0ZWd5LkZ1bGxcbiAgICB9XG5cbiAgICAvLyBgbnVsbGAgb3IgYFwiYXV0b1wiYDogdGhpcyBpcyB0aGUgZGVmYXVsdCBcImF1dG9cIiBtb2RlLCB3aGVyZSB3ZSB3aWxsIHByZWZldGNoIHBhcnRpYWxseSBpZiB0aGUgbGluayBpcyBpbiB0aGUgdmlld3BvcnQuXG4gICAgLy8gVGhpcyB3aWxsIGFsc28gaW5jbHVkZSBpbnZhbGlkIHByb3AgdmFsdWVzIHRoYXQgZG9uJ3QgbWF0Y2ggdGhlIHR5cGVzIHNwZWNpZmllZCBoZXJlLlxuICAgIC8vIChhbHRob3VnaCB0aG9zZSBzaG91bGQndmUgYmVlbiBmaWx0ZXJlZCBvdXQgYnkgcHJvcCB2YWxpZGF0aW9uIGluIGRldilcbiAgICBwcmVmZXRjaFByb3Agc2F0aXNmaWVzIG51bGwgfCAnYXV0bydcbiAgICAvLyBJbiBgY2xpZW50U2VnbWVudENhY2hlYCwgd2UgZGVmYXVsdCB0byBQUFIsIGFuZCB3ZSdsbCBkaXNjb3ZlciB3aGV0aGVyIG9yIG5vdCB0aGUgcm91dGUgc3VwcG9ydHMgaXQgd2l0aCB0aGUgaW5pdGlhbCBwcmVmZXRjaC5cbiAgICAvLyBJZiB3ZSdyZSBub3QgdXNpbmcgYGNsaWVudFNlZ21lbnRDYWNoZWAsIHRoaXMgd2lsbCBiZSBjb252ZXJ0ZWQgaW50byBhIGBQcmVmZXRjaEtpbmQuQVVUT2AuXG4gICAgcmV0dXJuIEZldGNoU3RyYXRlZ3kuUFBSXG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHByZWZldGNoUHJvcCA9PT0gbnVsbCB8fCBwcmVmZXRjaFByb3AgPT09ICdhdXRvJ1xuICAgICAgPyAvLyBJbiBgY2xpZW50U2VnbWVudENhY2hlYCwgd2UgZGVmYXVsdCB0byBQUFIsIGFuZCB3ZSdsbCBkaXNjb3ZlciB3aGV0aGVyIG9yIG5vdCB0aGUgcm91dGUgc3VwcG9ydHMgaXQgd2l0aCB0aGUgaW5pdGlhbCBwcmVmZXRjaC5cbiAgICAgICAgLy8gSWYgd2UncmUgbm90IHVzaW5nIGBjbGllbnRTZWdtZW50Q2FjaGVgLCB0aGlzIHdpbGwgYmUgY29udmVydGVkIGludG8gYSBgUHJlZmV0Y2hLaW5kLkFVVE9gLlxuICAgICAgICBGZXRjaFN0cmF0ZWd5LlBQUlxuICAgICAgOiAvLyBJbiB0aGUgb2xkIGltcGxlbWVudGF0aW9uIHdpdGhvdXQgcnVudGltZSBwcmVmZXRjaGVzLCBgcHJlZmV0Y2g9e3RydWV9YCBmb3JjZXMgYWxsIGR5bmFtaWMgZGF0YSB0byBiZSBwcmVmZXRjaGVkLlxuICAgICAgICAvLyBUbyBwcmVzZXJ2ZSBiYWNrd2FyZHMtY29tcGF0aWJpbGl0eSwgYW55dGhpbmcgb3RoZXIgdGhhbiBgZmFsc2VgLCBgbnVsbGAsIG9yIGBcImF1dG9cImAgcmVzdWx0cyBpbiBhIGZ1bGwgcHJlZmV0Y2guXG4gICAgICAgIC8vIChhbHRob3VnaCBpbnZhbGlkIHZhbHVlcyBzaG91bGQndmUgYmVlbiBmaWx0ZXJlZCBvdXQgYnkgcHJvcCB2YWxpZGF0aW9uIGluIGRldilcbiAgICAgICAgRmV0Y2hTdHJhdGVneS5GdWxsXG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJMaW5rQ29tcG9uZW50IiwidXNlTGlua1N0YXR1cyIsImlzTW9kaWZpZWRFdmVudCIsImV2ZW50IiwiZXZlbnRUYXJnZXQiLCJjdXJyZW50VGFyZ2V0IiwidGFyZ2V0IiwiZ2V0QXR0cmlidXRlIiwibWV0YUtleSIsImN0cmxLZXkiLCJzaGlmdEtleSIsImFsdEtleSIsIm5hdGl2ZUV2ZW50Iiwid2hpY2giLCJsaW5rQ2xpY2tlZCIsImUiLCJocmVmIiwiYXMiLCJsaW5rSW5zdGFuY2VSZWYiLCJyZXBsYWNlIiwic2Nyb2xsIiwib25OYXZpZ2F0ZSIsIm5vZGVOYW1lIiwiaXNBbmNob3JOb2RlTmFtZSIsInRvVXBwZXJDYXNlIiwiaGFzQXR0cmlidXRlIiwiaXNMb2NhbFVSTCIsInByZXZlbnREZWZhdWx0IiwibG9jYXRpb24iLCJpc0RlZmF1bHRQcmV2ZW50ZWQiLCJSZWFjdCIsInN0YXJ0VHJhbnNpdGlvbiIsImRpc3BhdGNoTmF2aWdhdGVBY3Rpb24iLCJjdXJyZW50IiwiZm9ybWF0U3RyaW5nT3JVcmwiLCJ1cmxPYmpPclN0cmluZyIsImZvcm1hdFVybCIsInByb3BzIiwibGlua1N0YXR1cyIsInNldE9wdGltaXN0aWNMaW5rU3RhdHVzIiwidXNlT3B0aW1pc3RpYyIsIklETEVfTElOS19TVEFUVVMiLCJjaGlsZHJlbiIsInVzZVJlZiIsImhyZWZQcm9wIiwiYXNQcm9wIiwiY2hpbGRyZW5Qcm9wIiwicHJlZmV0Y2giLCJwcmVmZXRjaFByb3AiLCJwYXNzSHJlZiIsInNoYWxsb3ciLCJvbkNsaWNrIiwib25Nb3VzZUVudGVyIiwib25Nb3VzZUVudGVyUHJvcCIsIm9uVG91Y2hTdGFydCIsIm9uVG91Y2hTdGFydFByb3AiLCJsZWdhY3lCZWhhdmlvciIsInJlZiIsImZvcndhcmRlZFJlZiIsInVuc3RhYmxlX2R5bmFtaWNPbkhvdmVyIiwicmVzdFByb3BzIiwiYSIsInJvdXRlciIsInVzZUNvbnRleHQiLCJBcHBSb3V0ZXJDb250ZXh0IiwicHJlZmV0Y2hFbmFibGVkIiwiZmV0Y2hTdHJhdGVneSIsImdldEZldGNoU3RyYXRlZ3lGcm9tUHJlZmV0Y2hQcm9wIiwiRmV0Y2hTdHJhdGVneSIsIlBQUiIsInByb2Nlc3MiLCJlbnYiLCJOT0RFX0VOViIsImNyZWF0ZVByb3BFcnJvciIsImFyZ3MiLCJFcnJvciIsImtleSIsImV4cGVjdGVkIiwiYWN0dWFsIiwid2luZG93IiwicmVxdWlyZWRQcm9wc0d1YXJkIiwicmVxdWlyZWRQcm9wcyIsIk9iamVjdCIsImtleXMiLCJmb3JFYWNoIiwiXyIsIm9wdGlvbmFsUHJvcHNHdWFyZCIsIm9wdGlvbmFsUHJvcHMiLCJ2YWxUeXBlIiwibG9jYWxlIiwid2Fybk9uY2UiLCJwYXRobmFtZSIsImhhc0R5bmFtaWNTZWdtZW50Iiwic3BsaXQiLCJzb21lIiwic2VnbWVudCIsInN0YXJ0c1dpdGgiLCJlbmRzV2l0aCIsInVzZU1lbW8iLCJyZXNvbHZlZEhyZWYiLCJjaGlsZCIsImNvbnNvbGUiLCJ3YXJuIiwiQ2hpbGRyZW4iLCJvbmx5IiwiZXJyIiwidHlwZSIsImNoaWxkUmVmIiwib2JzZXJ2ZUxpbmtWaXNpYmlsaXR5T25Nb3VudCIsInVzZUNhbGxiYWNrIiwiZWxlbWVudCIsIm1vdW50TGlua0luc3RhbmNlIiwidW5tb3VudExpbmtGb3JDdXJyZW50TmF2aWdhdGlvbiIsInVubW91bnRQcmVmZXRjaGFibGVJbnN0YW5jZSIsIm1lcmdlZFJlZiIsInVzZU1lcmdlZFJlZiIsImNoaWxkUHJvcHMiLCJkZWZhdWx0UHJldmVudGVkIiwidXBncmFkZVRvRHluYW1pY1ByZWZldGNoIiwib25OYXZpZ2F0aW9uSW50ZW50IiwiX19ORVhUX0xJTktfTk9fVE9VQ0hfU1RBUlQiLCJ1bmRlZmluZWQiLCJpc0Fic29sdXRlVXJsIiwiYWRkQmFzZVBhdGgiLCJsaW5rIiwiZXJyb3JPbmNlIiwiY2xvbmVFbGVtZW50IiwiTGlua1N0YXR1c0NvbnRleHQiLCJQcm92aWRlciIsInZhbHVlIiwiY3JlYXRlQ29udGV4dCIsIl9fTkVYVF9DQUNIRV9DT01QT05FTlRTIiwiX19ORVhUX0NMSUVOVF9TRUdNRU5UX0NBQ0hFIiwiUFBSUnVudGltZSIsIkZ1bGwiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/client/app-dir/link.js\n")); + +/***/ }), + +/***/ "(app-pages-browser)/./node_modules/next/dist/client/use-merged-ref.js": +/*!*********************************************************!*\ + !*** ./node_modules/next/dist/client/use-merged-ref.js ***! + \*********************************************************/ +/***/ ((module, exports, __webpack_require__) => { + +"use strict"; +eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"useMergedRef\", ({\n enumerable: true,\n get: function() {\n return useMergedRef;\n }\n}));\nconst _react = __webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/index.js\");\nfunction useMergedRef(refA, refB) {\n const cleanupA = (0, _react.useRef)(null);\n const cleanupB = (0, _react.useRef)(null);\n // NOTE: In theory, we could skip the wrapping if only one of the refs is non-null.\n // (this happens often if the user doesn't pass a ref to Link/Form/Image)\n // But this can cause us to leak a cleanup-ref into user code (e.g. via ``),\n // and the user might pass that ref into ref-merging library that doesn't support cleanup refs\n // (because it hasn't been updated for React 19)\n // which can then cause things to blow up, because a cleanup-returning ref gets called with `null`.\n // So in practice, it's safer to be defensive and always wrap the ref, even on React 19.\n return (0, _react.useCallback)((current)=>{\n if (current === null) {\n const cleanupFnA = cleanupA.current;\n if (cleanupFnA) {\n cleanupA.current = null;\n cleanupFnA();\n }\n const cleanupFnB = cleanupB.current;\n if (cleanupFnB) {\n cleanupB.current = null;\n cleanupFnB();\n }\n } else {\n if (refA) {\n cleanupA.current = applyRef(refA, current);\n }\n if (refB) {\n cleanupB.current = applyRef(refB, current);\n }\n }\n }, [\n refA,\n refB\n ]);\n}\nfunction applyRef(refA, current) {\n if (typeof refA === 'function') {\n const cleanup = refA(current);\n if (typeof cleanup === 'function') {\n return cleanup;\n } else {\n return ()=>refA(null);\n }\n } else {\n refA.current = current;\n return ()=>{\n refA.current = null;\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=use-merged-ref.js.map\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L3VzZS1tZXJnZWQtcmVmLmpzIiwibWFwcGluZ3MiOiI7Ozs7Z0RBU2dCQTs7O2VBQUFBOzs7bUNBVDhCO0FBU3ZDLFNBQVNBLGFBQ2RDLElBQW1CLEVBQ25CQyxJQUFtQjtJQUVuQixNQUFNQyxXQUFXQyxDQUFBQSxHQUFBQSxPQUFBQSxNQUFBQSxFQUE0QjtJQUM3QyxNQUFNQyxXQUFXRCxDQUFBQSxHQUFBQSxPQUFBQSxNQUFBQSxFQUE0QjtJQUU3QyxtRkFBbUY7SUFDbkYseUVBQXlFO0lBQ3pFLGlHQUFpRztJQUNqRyw4RkFBOEY7SUFDOUYsZ0RBQWdEO0lBQ2hELG1HQUFtRztJQUNuRyx3RkFBd0Y7SUFDeEYsT0FBT0UsQ0FBQUEsR0FBQUEsT0FBQUEsV0FBQUEsRUFDTCxDQUFDQztRQUNDLElBQUlBLFlBQVksTUFBTTtZQUNwQixNQUFNQyxhQUFhTCxTQUFTSSxPQUFPO1lBQ25DLElBQUlDLFlBQVk7Z0JBQ2RMLFNBQVNJLE9BQU8sR0FBRztnQkFDbkJDO1lBQ0Y7WUFDQSxNQUFNQyxhQUFhSixTQUFTRSxPQUFPO1lBQ25DLElBQUlFLFlBQVk7Z0JBQ2RKLFNBQVNFLE9BQU8sR0FBRztnQkFDbkJFO1lBQ0Y7UUFDRixPQUFPO1lBQ0wsSUFBSVIsTUFBTTtnQkFDUkUsU0FBU0ksT0FBTyxHQUFHRyxTQUFTVCxNQUFNTTtZQUNwQztZQUNBLElBQUlMLE1BQU07Z0JBQ1JHLFNBQVNFLE9BQU8sR0FBR0csU0FBU1IsTUFBTUs7WUFDcEM7UUFDRjtJQUNGLEdBQ0E7UUFBQ047UUFBTUM7S0FBSztBQUVoQjtBQUVBLFNBQVNRLFNBQ1BULElBQWdDLEVBQ2hDTSxPQUFpQjtJQUVqQixJQUFJLE9BQU9OLFNBQVMsWUFBWTtRQUM5QixNQUFNVSxVQUFVVixLQUFLTTtRQUNyQixJQUFJLE9BQU9JLFlBQVksWUFBWTtZQUNqQyxPQUFPQTtRQUNULE9BQU87WUFDTCxPQUFPLElBQU1WLEtBQUs7UUFDcEI7SUFDRixPQUFPO1FBQ0xBLEtBQUtNLE9BQU8sR0FBR0E7UUFDZixPQUFPO1lBQ0xOLEtBQUtNLE9BQU8sR0FBRztRQUNqQjtJQUNGO0FBQ0YiLCJzb3VyY2VzIjpbIi9Vc2Vycy9qZXR0Y2hlbmcxMDE4L2NvZGUvc3JjL2NsaWVudC91c2UtbWVyZ2VkLXJlZi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlUmVmLCB0eXBlIFJlZiB9IGZyb20gJ3JlYWN0J1xuXG4vLyBUaGlzIGlzIGEgY29tcGF0aWJpbGl0eSBob29rIHRvIHN1cHBvcnQgUmVhY3QgMTggYW5kIDE5IHJlZnMuXG4vLyBJbiAxOSwgYSBjbGVhbnVwIGZ1bmN0aW9uIGZyb20gcmVmcyBtYXkgYmUgcmV0dXJuZWQuXG4vLyBJbiAxOCwgcmV0dXJuaW5nIGEgY2xlYW51cCBmdW5jdGlvbiBjcmVhdGVzIGEgd2FybmluZy5cbi8vIFNpbmNlIHdlIHRha2UgdXNlcnNwYWNlIHJlZnMsIHdlIGRvbid0IGtub3cgYWhlYWQgb2YgdGltZSBpZiBhIGNsZWFudXAgZnVuY3Rpb24gd2lsbCBiZSByZXR1cm5lZC5cbi8vIFRoaXMgaW1wbGVtZW50cyBjbGVhbnVwIGZ1bmN0aW9ucyB3aXRoIHRoZSBvbGQgYmVoYXZpb3IgaW4gMTguXG4vLyBXZSBrbm93IHJlZnMgYXJlIGFsd2F5cyBjYWxsZWQgYWx0ZXJuYXRpbmcgd2l0aCBgbnVsbGAgYW5kIHRoZW4gYFRgLlxuLy8gU28gYSBjYWxsIHdpdGggYG51bGxgIG1lYW5zIHdlIG5lZWQgdG8gY2FsbCB0aGUgcHJldmlvdXMgY2xlYW51cCBmdW5jdGlvbnMuXG5leHBvcnQgZnVuY3Rpb24gdXNlTWVyZ2VkUmVmPFRFbGVtZW50PihcbiAgcmVmQTogUmVmPFRFbGVtZW50PixcbiAgcmVmQjogUmVmPFRFbGVtZW50PlxuKTogUmVmPFRFbGVtZW50PiB7XG4gIGNvbnN0IGNsZWFudXBBID0gdXNlUmVmPCgoKSA9PiB2b2lkKSB8IG51bGw+KG51bGwpXG4gIGNvbnN0IGNsZWFudXBCID0gdXNlUmVmPCgoKSA9PiB2b2lkKSB8IG51bGw+KG51bGwpXG5cbiAgLy8gTk9URTogSW4gdGhlb3J5LCB3ZSBjb3VsZCBza2lwIHRoZSB3cmFwcGluZyBpZiBvbmx5IG9uZSBvZiB0aGUgcmVmcyBpcyBub24tbnVsbC5cbiAgLy8gKHRoaXMgaGFwcGVucyBvZnRlbiBpZiB0aGUgdXNlciBkb2Vzbid0IHBhc3MgYSByZWYgdG8gTGluay9Gb3JtL0ltYWdlKVxuICAvLyBCdXQgdGhpcyBjYW4gY2F1c2UgdXMgdG8gbGVhayBhIGNsZWFudXAtcmVmIGludG8gdXNlciBjb2RlIChlLmcuIHZpYSBgPExpbmsgbGVnYWN5QmVoYXZpb3I+YCksXG4gIC8vIGFuZCB0aGUgdXNlciBtaWdodCBwYXNzIHRoYXQgcmVmIGludG8gcmVmLW1lcmdpbmcgbGlicmFyeSB0aGF0IGRvZXNuJ3Qgc3VwcG9ydCBjbGVhbnVwIHJlZnNcbiAgLy8gKGJlY2F1c2UgaXQgaGFzbid0IGJlZW4gdXBkYXRlZCBmb3IgUmVhY3QgMTkpXG4gIC8vIHdoaWNoIGNhbiB0aGVuIGNhdXNlIHRoaW5ncyB0byBibG93IHVwLCBiZWNhdXNlIGEgY2xlYW51cC1yZXR1cm5pbmcgcmVmIGdldHMgY2FsbGVkIHdpdGggYG51bGxgLlxuICAvLyBTbyBpbiBwcmFjdGljZSwgaXQncyBzYWZlciB0byBiZSBkZWZlbnNpdmUgYW5kIGFsd2F5cyB3cmFwIHRoZSByZWYsIGV2ZW4gb24gUmVhY3QgMTkuXG4gIHJldHVybiB1c2VDYWxsYmFjayhcbiAgICAoY3VycmVudDogVEVsZW1lbnQgfCBudWxsKTogdm9pZCA9PiB7XG4gICAgICBpZiAoY3VycmVudCA9PT0gbnVsbCkge1xuICAgICAgICBjb25zdCBjbGVhbnVwRm5BID0gY2xlYW51cEEuY3VycmVudFxuICAgICAgICBpZiAoY2xlYW51cEZuQSkge1xuICAgICAgICAgIGNsZWFudXBBLmN1cnJlbnQgPSBudWxsXG4gICAgICAgICAgY2xlYW51cEZuQSgpXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY2xlYW51cEZuQiA9IGNsZWFudXBCLmN1cnJlbnRcbiAgICAgICAgaWYgKGNsZWFudXBGbkIpIHtcbiAgICAgICAgICBjbGVhbnVwQi5jdXJyZW50ID0gbnVsbFxuICAgICAgICAgIGNsZWFudXBGbkIoKVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAocmVmQSkge1xuICAgICAgICAgIGNsZWFudXBBLmN1cnJlbnQgPSBhcHBseVJlZihyZWZBLCBjdXJyZW50KVxuICAgICAgICB9XG4gICAgICAgIGlmIChyZWZCKSB7XG4gICAgICAgICAgY2xlYW51cEIuY3VycmVudCA9IGFwcGx5UmVmKHJlZkIsIGN1cnJlbnQpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIFtyZWZBLCByZWZCXVxuICApXG59XG5cbmZ1bmN0aW9uIGFwcGx5UmVmPFRFbGVtZW50PihcbiAgcmVmQTogTm9uTnVsbGFibGU8UmVmPFRFbGVtZW50Pj4sXG4gIGN1cnJlbnQ6IFRFbGVtZW50XG4pIHtcbiAgaWYgKHR5cGVvZiByZWZBID09PSAnZnVuY3Rpb24nKSB7XG4gICAgY29uc3QgY2xlYW51cCA9IHJlZkEoY3VycmVudClcbiAgICBpZiAodHlwZW9mIGNsZWFudXAgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHJldHVybiBjbGVhbnVwXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAoKSA9PiByZWZBKG51bGwpXG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHJlZkEuY3VycmVudCA9IGN1cnJlbnRcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgcmVmQS5jdXJyZW50ID0gbnVsbFxuICAgIH1cbiAgfVxufVxuIl0sIm5hbWVzIjpbInVzZU1lcmdlZFJlZiIsInJlZkEiLCJyZWZCIiwiY2xlYW51cEEiLCJ1c2VSZWYiLCJjbGVhbnVwQiIsInVzZUNhbGxiYWNrIiwiY3VycmVudCIsImNsZWFudXBGbkEiLCJjbGVhbnVwRm5CIiwiYXBwbHlSZWYiLCJjbGVhbnVwIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/client/use-merged-ref.js\n")); + +/***/ }), + +/***/ "(app-pages-browser)/./node_modules/next/dist/compiled/react/cjs/react-jsx-dev-runtime.development.js": +/*!****************************************************************************************!*\ + !*** ./node_modules/next/dist/compiled/react/cjs/react-jsx-dev-runtime.development.js ***! + \****************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval(__webpack_require__.ts("/**\n * @license React\n * react-jsx-dev-runtime.development.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\n true &&\n (function () {\n function getComponentNameFromType(type) {\n if (null == type) return null;\n if (\"function\" === typeof type)\n return type.$$typeof === REACT_CLIENT_REFERENCE\n ? null\n : type.displayName || type.name || null;\n if (\"string\" === typeof type) return type;\n switch (type) {\n case REACT_FRAGMENT_TYPE:\n return \"Fragment\";\n case REACT_PROFILER_TYPE:\n return \"Profiler\";\n case REACT_STRICT_MODE_TYPE:\n return \"StrictMode\";\n case REACT_SUSPENSE_TYPE:\n return \"Suspense\";\n case REACT_SUSPENSE_LIST_TYPE:\n return \"SuspenseList\";\n case REACT_ACTIVITY_TYPE:\n return \"Activity\";\n }\n if (\"object\" === typeof type)\n switch (\n (\"number\" === typeof type.tag &&\n console.error(\n \"Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue.\"\n ),\n type.$$typeof)\n ) {\n case REACT_PORTAL_TYPE:\n return \"Portal\";\n case REACT_CONTEXT_TYPE:\n return type.displayName || \"Context\";\n case REACT_CONSUMER_TYPE:\n return (type._context.displayName || \"Context\") + \".Consumer\";\n case REACT_FORWARD_REF_TYPE:\n var innerType = type.render;\n type = type.displayName;\n type ||\n ((type = innerType.displayName || innerType.name || \"\"),\n (type = \"\" !== type ? \"ForwardRef(\" + type + \")\" : \"ForwardRef\"));\n return type;\n case REACT_MEMO_TYPE:\n return (\n (innerType = type.displayName || null),\n null !== innerType\n ? innerType\n : getComponentNameFromType(type.type) || \"Memo\"\n );\n case REACT_LAZY_TYPE:\n innerType = type._payload;\n type = type._init;\n try {\n return getComponentNameFromType(type(innerType));\n } catch (x) {}\n }\n return null;\n }\n function testStringCoercion(value) {\n return \"\" + value;\n }\n function checkKeyStringCoercion(value) {\n try {\n testStringCoercion(value);\n var JSCompiler_inline_result = !1;\n } catch (e) {\n JSCompiler_inline_result = !0;\n }\n if (JSCompiler_inline_result) {\n JSCompiler_inline_result = console;\n var JSCompiler_temp_const = JSCompiler_inline_result.error;\n var JSCompiler_inline_result$jscomp$0 =\n (\"function\" === typeof Symbol &&\n Symbol.toStringTag &&\n value[Symbol.toStringTag]) ||\n value.constructor.name ||\n \"Object\";\n JSCompiler_temp_const.call(\n JSCompiler_inline_result,\n \"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.\",\n JSCompiler_inline_result$jscomp$0\n );\n return testStringCoercion(value);\n }\n }\n function getTaskName(type) {\n if (type === REACT_FRAGMENT_TYPE) return \"<>\";\n if (\n \"object\" === typeof type &&\n null !== type &&\n type.$$typeof === REACT_LAZY_TYPE\n )\n return \"<...>\";\n try {\n var name = getComponentNameFromType(type);\n return name ? \"<\" + name + \">\" : \"<...>\";\n } catch (x) {\n return \"<...>\";\n }\n }\n function getOwner() {\n var dispatcher = ReactSharedInternals.A;\n return null === dispatcher ? null : dispatcher.getOwner();\n }\n function UnknownOwner() {\n return Error(\"react-stack-top-frame\");\n }\n function hasValidKey(config) {\n if (hasOwnProperty.call(config, \"key\")) {\n var getter = Object.getOwnPropertyDescriptor(config, \"key\").get;\n if (getter && getter.isReactWarning) return !1;\n }\n return void 0 !== config.key;\n }\n function defineKeyPropWarningGetter(props, displayName) {\n function warnAboutAccessingKey() {\n specialPropKeyWarningShown ||\n ((specialPropKeyWarningShown = !0),\n console.error(\n \"%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)\",\n displayName\n ));\n }\n warnAboutAccessingKey.isReactWarning = !0;\n Object.defineProperty(props, \"key\", {\n get: warnAboutAccessingKey,\n configurable: !0\n });\n }\n function elementRefGetterWithDeprecationWarning() {\n var componentName = getComponentNameFromType(this.type);\n didWarnAboutElementRef[componentName] ||\n ((didWarnAboutElementRef[componentName] = !0),\n console.error(\n \"Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.\"\n ));\n componentName = this.props.ref;\n return void 0 !== componentName ? componentName : null;\n }\n function ReactElement(type, key, props, owner, debugStack, debugTask) {\n var refProp = props.ref;\n type = {\n $$typeof: REACT_ELEMENT_TYPE,\n type: type,\n key: key,\n props: props,\n _owner: owner\n };\n null !== (void 0 !== refProp ? refProp : null)\n ? Object.defineProperty(type, \"ref\", {\n enumerable: !1,\n get: elementRefGetterWithDeprecationWarning\n })\n : Object.defineProperty(type, \"ref\", { enumerable: !1, value: null });\n type._store = {};\n Object.defineProperty(type._store, \"validated\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: 0\n });\n Object.defineProperty(type, \"_debugInfo\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: null\n });\n Object.defineProperty(type, \"_debugStack\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: debugStack\n });\n Object.defineProperty(type, \"_debugTask\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: debugTask\n });\n Object.freeze && (Object.freeze(type.props), Object.freeze(type));\n return type;\n }\n function jsxDEVImpl(\n type,\n config,\n maybeKey,\n isStaticChildren,\n debugStack,\n debugTask\n ) {\n var children = config.children;\n if (void 0 !== children)\n if (isStaticChildren)\n if (isArrayImpl(children)) {\n for (\n isStaticChildren = 0;\n isStaticChildren < children.length;\n isStaticChildren++\n )\n validateChildKeys(children[isStaticChildren]);\n Object.freeze && Object.freeze(children);\n } else\n console.error(\n \"React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.\"\n );\n else validateChildKeys(children);\n if (hasOwnProperty.call(config, \"key\")) {\n children = getComponentNameFromType(type);\n var keys = Object.keys(config).filter(function (k) {\n return \"key\" !== k;\n });\n isStaticChildren =\n 0 < keys.length\n ? \"{key: someKey, \" + keys.join(\": ..., \") + \": ...}\"\n : \"{key: someKey}\";\n didWarnAboutKeySpread[children + isStaticChildren] ||\n ((keys =\n 0 < keys.length ? \"{\" + keys.join(\": ..., \") + \": ...}\" : \"{}\"),\n console.error(\n 'A props object containing a \"key\" prop is being spread into JSX:\\n let props = %s;\\n <%s {...props} />\\nReact keys must be passed directly to JSX without using spread:\\n let props = %s;\\n <%s key={someKey} {...props} />',\n isStaticChildren,\n children,\n keys,\n children\n ),\n (didWarnAboutKeySpread[children + isStaticChildren] = !0));\n }\n children = null;\n void 0 !== maybeKey &&\n (checkKeyStringCoercion(maybeKey), (children = \"\" + maybeKey));\n hasValidKey(config) &&\n (checkKeyStringCoercion(config.key), (children = \"\" + config.key));\n if (\"key\" in config) {\n maybeKey = {};\n for (var propName in config)\n \"key\" !== propName && (maybeKey[propName] = config[propName]);\n } else maybeKey = config;\n children &&\n defineKeyPropWarningGetter(\n maybeKey,\n \"function\" === typeof type\n ? type.displayName || type.name || \"Unknown\"\n : type\n );\n return ReactElement(\n type,\n children,\n maybeKey,\n getOwner(),\n debugStack,\n debugTask\n );\n }\n function validateChildKeys(node) {\n \"object\" === typeof node &&\n null !== node &&\n node.$$typeof === REACT_ELEMENT_TYPE &&\n node._store &&\n (node._store.validated = 1);\n }\n var React = __webpack_require__(/*! next/dist/compiled/react */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/index.js\"),\n REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_PORTAL_TYPE = Symbol.for(\"react.portal\"),\n REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\"),\n REACT_STRICT_MODE_TYPE = Symbol.for(\"react.strict_mode\"),\n REACT_PROFILER_TYPE = Symbol.for(\"react.profiler\"),\n REACT_CONSUMER_TYPE = Symbol.for(\"react.consumer\"),\n REACT_CONTEXT_TYPE = Symbol.for(\"react.context\"),\n REACT_FORWARD_REF_TYPE = Symbol.for(\"react.forward_ref\"),\n REACT_SUSPENSE_TYPE = Symbol.for(\"react.suspense\"),\n REACT_SUSPENSE_LIST_TYPE = Symbol.for(\"react.suspense_list\"),\n REACT_MEMO_TYPE = Symbol.for(\"react.memo\"),\n REACT_LAZY_TYPE = Symbol.for(\"react.lazy\"),\n REACT_ACTIVITY_TYPE = Symbol.for(\"react.activity\"),\n REACT_CLIENT_REFERENCE = Symbol.for(\"react.client.reference\"),\n ReactSharedInternals =\n React.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,\n hasOwnProperty = Object.prototype.hasOwnProperty,\n isArrayImpl = Array.isArray,\n createTask = console.createTask\n ? console.createTask\n : function () {\n return null;\n };\n React = {\n react_stack_bottom_frame: function (callStackForError) {\n return callStackForError();\n }\n };\n var specialPropKeyWarningShown;\n var didWarnAboutElementRef = {};\n var unknownOwnerDebugStack = React.react_stack_bottom_frame.bind(\n React,\n UnknownOwner\n )();\n var unknownOwnerDebugTask = createTask(getTaskName(UnknownOwner));\n var didWarnAboutKeySpread = {};\n exports.Fragment = REACT_FRAGMENT_TYPE;\n exports.jsxDEV = function (type, config, maybeKey, isStaticChildren) {\n var trackActualOwner =\n 1e4 > ReactSharedInternals.recentlyCreatedOwnerStacks++;\n return jsxDEVImpl(\n type,\n config,\n maybeKey,\n isStaticChildren,\n trackActualOwner\n ? Error(\"react-stack-top-frame\")\n : unknownOwnerDebugStack,\n trackActualOwner ? createTask(getTaskName(type)) : unknownOwnerDebugTask\n );\n };\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY29tcGlsZWQvcmVhY3QvY2pzL3JlYWN0LWpzeC1kZXYtcnVudGltZS5kZXZlbG9wbWVudC5qcyIsIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRWE7QUFDYixLQUFxQztBQUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWCwrQ0FBK0MsNkJBQTZCO0FBQzVFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxnQkFBZ0IsZ0RBQWdEO0FBQ2hFLGdCQUFnQixhQUFhO0FBQzdCO0FBQ0E7QUFDQSxnQ0FBZ0Msa0NBQWtDLE9BQU87QUFDekU7QUFDQSxnR0FBZ0csU0FBUyxVQUFVLHNGQUFzRixhQUFhLFVBQVUsVUFBVTtBQUMxTztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLG1CQUFPLENBQUMsc0dBQTBCO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksZ0JBQWdCO0FBQ3BCLElBQUksY0FBYztBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUciLCJzb3VyY2VzIjpbIi9Vc2Vycy9qZXR0Y2hlbmcxMDE4L2NvZGUvZHJhbWFsaW5nLXZvY2FiLWxlYXJuaW5nL2Zyb250ZW5kL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY29tcGlsZWQvcmVhY3QvY2pzL3JlYWN0LWpzeC1kZXYtcnVudGltZS5kZXZlbG9wbWVudC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlIFJlYWN0XG4gKiByZWFjdC1qc3gtZGV2LXJ1bnRpbWUuZGV2ZWxvcG1lbnQuanNcbiAqXG4gKiBDb3B5cmlnaHQgKGMpIE1ldGEgUGxhdGZvcm1zLCBJbmMuIGFuZCBhZmZpbGlhdGVzLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cblwidXNlIHN0cmljdFwiO1xuXCJwcm9kdWN0aW9uXCIgIT09IHByb2Nlc3MuZW52Lk5PREVfRU5WICYmXG4gIChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gZ2V0Q29tcG9uZW50TmFtZUZyb21UeXBlKHR5cGUpIHtcbiAgICAgIGlmIChudWxsID09IHR5cGUpIHJldHVybiBudWxsO1xuICAgICAgaWYgKFwiZnVuY3Rpb25cIiA9PT0gdHlwZW9mIHR5cGUpXG4gICAgICAgIHJldHVybiB0eXBlLiQkdHlwZW9mID09PSBSRUFDVF9DTElFTlRfUkVGRVJFTkNFXG4gICAgICAgICAgPyBudWxsXG4gICAgICAgICAgOiB0eXBlLmRpc3BsYXlOYW1lIHx8IHR5cGUubmFtZSB8fCBudWxsO1xuICAgICAgaWYgKFwic3RyaW5nXCIgPT09IHR5cGVvZiB0eXBlKSByZXR1cm4gdHlwZTtcbiAgICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgICBjYXNlIFJFQUNUX0ZSQUdNRU5UX1RZUEU6XG4gICAgICAgICAgcmV0dXJuIFwiRnJhZ21lbnRcIjtcbiAgICAgICAgY2FzZSBSRUFDVF9QUk9GSUxFUl9UWVBFOlxuICAgICAgICAgIHJldHVybiBcIlByb2ZpbGVyXCI7XG4gICAgICAgIGNhc2UgUkVBQ1RfU1RSSUNUX01PREVfVFlQRTpcbiAgICAgICAgICByZXR1cm4gXCJTdHJpY3RNb2RlXCI7XG4gICAgICAgIGNhc2UgUkVBQ1RfU1VTUEVOU0VfVFlQRTpcbiAgICAgICAgICByZXR1cm4gXCJTdXNwZW5zZVwiO1xuICAgICAgICBjYXNlIFJFQUNUX1NVU1BFTlNFX0xJU1RfVFlQRTpcbiAgICAgICAgICByZXR1cm4gXCJTdXNwZW5zZUxpc3RcIjtcbiAgICAgICAgY2FzZSBSRUFDVF9BQ1RJVklUWV9UWVBFOlxuICAgICAgICAgIHJldHVybiBcIkFjdGl2aXR5XCI7XG4gICAgICB9XG4gICAgICBpZiAoXCJvYmplY3RcIiA9PT0gdHlwZW9mIHR5cGUpXG4gICAgICAgIHN3aXRjaCAoXG4gICAgICAgICAgKFwibnVtYmVyXCIgPT09IHR5cGVvZiB0eXBlLnRhZyAmJlxuICAgICAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICAgICAgXCJSZWNlaXZlZCBhbiB1bmV4cGVjdGVkIG9iamVjdCBpbiBnZXRDb21wb25lbnROYW1lRnJvbVR5cGUoKS4gVGhpcyBpcyBsaWtlbHkgYSBidWcgaW4gUmVhY3QuIFBsZWFzZSBmaWxlIGFuIGlzc3VlLlwiXG4gICAgICAgICAgICApLFxuICAgICAgICAgIHR5cGUuJCR0eXBlb2YpXG4gICAgICAgICkge1xuICAgICAgICAgIGNhc2UgUkVBQ1RfUE9SVEFMX1RZUEU6XG4gICAgICAgICAgICByZXR1cm4gXCJQb3J0YWxcIjtcbiAgICAgICAgICBjYXNlIFJFQUNUX0NPTlRFWFRfVFlQRTpcbiAgICAgICAgICAgIHJldHVybiB0eXBlLmRpc3BsYXlOYW1lIHx8IFwiQ29udGV4dFwiO1xuICAgICAgICAgIGNhc2UgUkVBQ1RfQ09OU1VNRVJfVFlQRTpcbiAgICAgICAgICAgIHJldHVybiAodHlwZS5fY29udGV4dC5kaXNwbGF5TmFtZSB8fCBcIkNvbnRleHRcIikgKyBcIi5Db25zdW1lclwiO1xuICAgICAgICAgIGNhc2UgUkVBQ1RfRk9SV0FSRF9SRUZfVFlQRTpcbiAgICAgICAgICAgIHZhciBpbm5lclR5cGUgPSB0eXBlLnJlbmRlcjtcbiAgICAgICAgICAgIHR5cGUgPSB0eXBlLmRpc3BsYXlOYW1lO1xuICAgICAgICAgICAgdHlwZSB8fFxuICAgICAgICAgICAgICAoKHR5cGUgPSBpbm5lclR5cGUuZGlzcGxheU5hbWUgfHwgaW5uZXJUeXBlLm5hbWUgfHwgXCJcIiksXG4gICAgICAgICAgICAgICh0eXBlID0gXCJcIiAhPT0gdHlwZSA/IFwiRm9yd2FyZFJlZihcIiArIHR5cGUgKyBcIilcIiA6IFwiRm9yd2FyZFJlZlwiKSk7XG4gICAgICAgICAgICByZXR1cm4gdHlwZTtcbiAgICAgICAgICBjYXNlIFJFQUNUX01FTU9fVFlQRTpcbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgIChpbm5lclR5cGUgPSB0eXBlLmRpc3BsYXlOYW1lIHx8IG51bGwpLFxuICAgICAgICAgICAgICBudWxsICE9PSBpbm5lclR5cGVcbiAgICAgICAgICAgICAgICA/IGlubmVyVHlwZVxuICAgICAgICAgICAgICAgIDogZ2V0Q29tcG9uZW50TmFtZUZyb21UeXBlKHR5cGUudHlwZSkgfHwgXCJNZW1vXCJcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgY2FzZSBSRUFDVF9MQVpZX1RZUEU6XG4gICAgICAgICAgICBpbm5lclR5cGUgPSB0eXBlLl9wYXlsb2FkO1xuICAgICAgICAgICAgdHlwZSA9IHR5cGUuX2luaXQ7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICByZXR1cm4gZ2V0Q29tcG9uZW50TmFtZUZyb21UeXBlKHR5cGUoaW5uZXJUeXBlKSk7XG4gICAgICAgICAgICB9IGNhdGNoICh4KSB7fVxuICAgICAgICB9XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgZnVuY3Rpb24gdGVzdFN0cmluZ0NvZXJjaW9uKHZhbHVlKSB7XG4gICAgICByZXR1cm4gXCJcIiArIHZhbHVlO1xuICAgIH1cbiAgICBmdW5jdGlvbiBjaGVja0tleVN0cmluZ0NvZXJjaW9uKHZhbHVlKSB7XG4gICAgICB0cnkge1xuICAgICAgICB0ZXN0U3RyaW5nQ29lcmNpb24odmFsdWUpO1xuICAgICAgICB2YXIgSlNDb21waWxlcl9pbmxpbmVfcmVzdWx0ID0gITE7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIEpTQ29tcGlsZXJfaW5saW5lX3Jlc3VsdCA9ICEwO1xuICAgICAgfVxuICAgICAgaWYgKEpTQ29tcGlsZXJfaW5saW5lX3Jlc3VsdCkge1xuICAgICAgICBKU0NvbXBpbGVyX2lubGluZV9yZXN1bHQgPSBjb25zb2xlO1xuICAgICAgICB2YXIgSlNDb21waWxlcl90ZW1wX2NvbnN0ID0gSlNDb21waWxlcl9pbmxpbmVfcmVzdWx0LmVycm9yO1xuICAgICAgICB2YXIgSlNDb21waWxlcl9pbmxpbmVfcmVzdWx0JGpzY29tcCQwID1cbiAgICAgICAgICAoXCJmdW5jdGlvblwiID09PSB0eXBlb2YgU3ltYm9sICYmXG4gICAgICAgICAgICBTeW1ib2wudG9TdHJpbmdUYWcgJiZcbiAgICAgICAgICAgIHZhbHVlW1N5bWJvbC50b1N0cmluZ1RhZ10pIHx8XG4gICAgICAgICAgdmFsdWUuY29uc3RydWN0b3IubmFtZSB8fFxuICAgICAgICAgIFwiT2JqZWN0XCI7XG4gICAgICAgIEpTQ29tcGlsZXJfdGVtcF9jb25zdC5jYWxsKFxuICAgICAgICAgIEpTQ29tcGlsZXJfaW5saW5lX3Jlc3VsdCxcbiAgICAgICAgICBcIlRoZSBwcm92aWRlZCBrZXkgaXMgYW4gdW5zdXBwb3J0ZWQgdHlwZSAlcy4gVGhpcyB2YWx1ZSBtdXN0IGJlIGNvZXJjZWQgdG8gYSBzdHJpbmcgYmVmb3JlIHVzaW5nIGl0IGhlcmUuXCIsXG4gICAgICAgICAgSlNDb21waWxlcl9pbmxpbmVfcmVzdWx0JGpzY29tcCQwXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiB0ZXN0U3RyaW5nQ29lcmNpb24odmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiBnZXRUYXNrTmFtZSh0eXBlKSB7XG4gICAgICBpZiAodHlwZSA9PT0gUkVBQ1RfRlJBR01FTlRfVFlQRSkgcmV0dXJuIFwiPD5cIjtcbiAgICAgIGlmIChcbiAgICAgICAgXCJvYmplY3RcIiA9PT0gdHlwZW9mIHR5cGUgJiZcbiAgICAgICAgbnVsbCAhPT0gdHlwZSAmJlxuICAgICAgICB0eXBlLiQkdHlwZW9mID09PSBSRUFDVF9MQVpZX1RZUEVcbiAgICAgIClcbiAgICAgICAgcmV0dXJuIFwiPC4uLj5cIjtcbiAgICAgIHRyeSB7XG4gICAgICAgIHZhciBuYW1lID0gZ2V0Q29tcG9uZW50TmFtZUZyb21UeXBlKHR5cGUpO1xuICAgICAgICByZXR1cm4gbmFtZSA/IFwiPFwiICsgbmFtZSArIFwiPlwiIDogXCI8Li4uPlwiO1xuICAgICAgfSBjYXRjaCAoeCkge1xuICAgICAgICByZXR1cm4gXCI8Li4uPlwiO1xuICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiBnZXRPd25lcigpIHtcbiAgICAgIHZhciBkaXNwYXRjaGVyID0gUmVhY3RTaGFyZWRJbnRlcm5hbHMuQTtcbiAgICAgIHJldHVybiBudWxsID09PSBkaXNwYXRjaGVyID8gbnVsbCA6IGRpc3BhdGNoZXIuZ2V0T3duZXIoKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gVW5rbm93bk93bmVyKCkge1xuICAgICAgcmV0dXJuIEVycm9yKFwicmVhY3Qtc3RhY2stdG9wLWZyYW1lXCIpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBoYXNWYWxpZEtleShjb25maWcpIHtcbiAgICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKGNvbmZpZywgXCJrZXlcIikpIHtcbiAgICAgICAgdmFyIGdldHRlciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoY29uZmlnLCBcImtleVwiKS5nZXQ7XG4gICAgICAgIGlmIChnZXR0ZXIgJiYgZ2V0dGVyLmlzUmVhY3RXYXJuaW5nKSByZXR1cm4gITE7XG4gICAgICB9XG4gICAgICByZXR1cm4gdm9pZCAwICE9PSBjb25maWcua2V5O1xuICAgIH1cbiAgICBmdW5jdGlvbiBkZWZpbmVLZXlQcm9wV2FybmluZ0dldHRlcihwcm9wcywgZGlzcGxheU5hbWUpIHtcbiAgICAgIGZ1bmN0aW9uIHdhcm5BYm91dEFjY2Vzc2luZ0tleSgpIHtcbiAgICAgICAgc3BlY2lhbFByb3BLZXlXYXJuaW5nU2hvd24gfHxcbiAgICAgICAgICAoKHNwZWNpYWxQcm9wS2V5V2FybmluZ1Nob3duID0gITApLFxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICBcIiVzOiBga2V5YCBpcyBub3QgYSBwcm9wLiBUcnlpbmcgdG8gYWNjZXNzIGl0IHdpbGwgcmVzdWx0IGluIGB1bmRlZmluZWRgIGJlaW5nIHJldHVybmVkLiBJZiB5b3UgbmVlZCB0byBhY2Nlc3MgdGhlIHNhbWUgdmFsdWUgd2l0aGluIHRoZSBjaGlsZCBjb21wb25lbnQsIHlvdSBzaG91bGQgcGFzcyBpdCBhcyBhIGRpZmZlcmVudCBwcm9wLiAoaHR0cHM6Ly9yZWFjdC5kZXYvbGluay9zcGVjaWFsLXByb3BzKVwiLFxuICAgICAgICAgICAgZGlzcGxheU5hbWVcbiAgICAgICAgICApKTtcbiAgICAgIH1cbiAgICAgIHdhcm5BYm91dEFjY2Vzc2luZ0tleS5pc1JlYWN0V2FybmluZyA9ICEwO1xuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHByb3BzLCBcImtleVwiLCB7XG4gICAgICAgIGdldDogd2FybkFib3V0QWNjZXNzaW5nS2V5LFxuICAgICAgICBjb25maWd1cmFibGU6ICEwXG4gICAgICB9KTtcbiAgICB9XG4gICAgZnVuY3Rpb24gZWxlbWVudFJlZkdldHRlcldpdGhEZXByZWNhdGlvbldhcm5pbmcoKSB7XG4gICAgICB2YXIgY29tcG9uZW50TmFtZSA9IGdldENvbXBvbmVudE5hbWVGcm9tVHlwZSh0aGlzLnR5cGUpO1xuICAgICAgZGlkV2FybkFib3V0RWxlbWVudFJlZltjb21wb25lbnROYW1lXSB8fFxuICAgICAgICAoKGRpZFdhcm5BYm91dEVsZW1lbnRSZWZbY29tcG9uZW50TmFtZV0gPSAhMCksXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgXCJBY2Nlc3NpbmcgZWxlbWVudC5yZWYgd2FzIHJlbW92ZWQgaW4gUmVhY3QgMTkuIHJlZiBpcyBub3cgYSByZWd1bGFyIHByb3AuIEl0IHdpbGwgYmUgcmVtb3ZlZCBmcm9tIHRoZSBKU1ggRWxlbWVudCB0eXBlIGluIGEgZnV0dXJlIHJlbGVhc2UuXCJcbiAgICAgICAgKSk7XG4gICAgICBjb21wb25lbnROYW1lID0gdGhpcy5wcm9wcy5yZWY7XG4gICAgICByZXR1cm4gdm9pZCAwICE9PSBjb21wb25lbnROYW1lID8gY29tcG9uZW50TmFtZSA6IG51bGw7XG4gICAgfVxuICAgIGZ1bmN0aW9uIFJlYWN0RWxlbWVudCh0eXBlLCBrZXksIHByb3BzLCBvd25lciwgZGVidWdTdGFjaywgZGVidWdUYXNrKSB7XG4gICAgICB2YXIgcmVmUHJvcCA9IHByb3BzLnJlZjtcbiAgICAgIHR5cGUgPSB7XG4gICAgICAgICQkdHlwZW9mOiBSRUFDVF9FTEVNRU5UX1RZUEUsXG4gICAgICAgIHR5cGU6IHR5cGUsXG4gICAgICAgIGtleToga2V5LFxuICAgICAgICBwcm9wczogcHJvcHMsXG4gICAgICAgIF9vd25lcjogb3duZXJcbiAgICAgIH07XG4gICAgICBudWxsICE9PSAodm9pZCAwICE9PSByZWZQcm9wID8gcmVmUHJvcCA6IG51bGwpXG4gICAgICAgID8gT2JqZWN0LmRlZmluZVByb3BlcnR5KHR5cGUsIFwicmVmXCIsIHtcbiAgICAgICAgICAgIGVudW1lcmFibGU6ICExLFxuICAgICAgICAgICAgZ2V0OiBlbGVtZW50UmVmR2V0dGVyV2l0aERlcHJlY2F0aW9uV2FybmluZ1xuICAgICAgICAgIH0pXG4gICAgICAgIDogT2JqZWN0LmRlZmluZVByb3BlcnR5KHR5cGUsIFwicmVmXCIsIHsgZW51bWVyYWJsZTogITEsIHZhbHVlOiBudWxsIH0pO1xuICAgICAgdHlwZS5fc3RvcmUgPSB7fTtcbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0eXBlLl9zdG9yZSwgXCJ2YWxpZGF0ZWRcIiwge1xuICAgICAgICBjb25maWd1cmFibGU6ICExLFxuICAgICAgICBlbnVtZXJhYmxlOiAhMSxcbiAgICAgICAgd3JpdGFibGU6ICEwLFxuICAgICAgICB2YWx1ZTogMFxuICAgICAgfSk7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodHlwZSwgXCJfZGVidWdJbmZvXCIsIHtcbiAgICAgICAgY29uZmlndXJhYmxlOiAhMSxcbiAgICAgICAgZW51bWVyYWJsZTogITEsXG4gICAgICAgIHdyaXRhYmxlOiAhMCxcbiAgICAgICAgdmFsdWU6IG51bGxcbiAgICAgIH0pO1xuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHR5cGUsIFwiX2RlYnVnU3RhY2tcIiwge1xuICAgICAgICBjb25maWd1cmFibGU6ICExLFxuICAgICAgICBlbnVtZXJhYmxlOiAhMSxcbiAgICAgICAgd3JpdGFibGU6ICEwLFxuICAgICAgICB2YWx1ZTogZGVidWdTdGFja1xuICAgICAgfSk7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodHlwZSwgXCJfZGVidWdUYXNrXCIsIHtcbiAgICAgICAgY29uZmlndXJhYmxlOiAhMSxcbiAgICAgICAgZW51bWVyYWJsZTogITEsXG4gICAgICAgIHdyaXRhYmxlOiAhMCxcbiAgICAgICAgdmFsdWU6IGRlYnVnVGFza1xuICAgICAgfSk7XG4gICAgICBPYmplY3QuZnJlZXplICYmIChPYmplY3QuZnJlZXplKHR5cGUucHJvcHMpLCBPYmplY3QuZnJlZXplKHR5cGUpKTtcbiAgICAgIHJldHVybiB0eXBlO1xuICAgIH1cbiAgICBmdW5jdGlvbiBqc3hERVZJbXBsKFxuICAgICAgdHlwZSxcbiAgICAgIGNvbmZpZyxcbiAgICAgIG1heWJlS2V5LFxuICAgICAgaXNTdGF0aWNDaGlsZHJlbixcbiAgICAgIGRlYnVnU3RhY2ssXG4gICAgICBkZWJ1Z1Rhc2tcbiAgICApIHtcbiAgICAgIHZhciBjaGlsZHJlbiA9IGNvbmZpZy5jaGlsZHJlbjtcbiAgICAgIGlmICh2b2lkIDAgIT09IGNoaWxkcmVuKVxuICAgICAgICBpZiAoaXNTdGF0aWNDaGlsZHJlbilcbiAgICAgICAgICBpZiAoaXNBcnJheUltcGwoY2hpbGRyZW4pKSB7XG4gICAgICAgICAgICBmb3IgKFxuICAgICAgICAgICAgICBpc1N0YXRpY0NoaWxkcmVuID0gMDtcbiAgICAgICAgICAgICAgaXNTdGF0aWNDaGlsZHJlbiA8IGNoaWxkcmVuLmxlbmd0aDtcbiAgICAgICAgICAgICAgaXNTdGF0aWNDaGlsZHJlbisrXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAgIHZhbGlkYXRlQ2hpbGRLZXlzKGNoaWxkcmVuW2lzU3RhdGljQ2hpbGRyZW5dKTtcbiAgICAgICAgICAgIE9iamVjdC5mcmVlemUgJiYgT2JqZWN0LmZyZWV6ZShjaGlsZHJlbik7XG4gICAgICAgICAgfSBlbHNlXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgICBcIlJlYWN0LmpzeDogU3RhdGljIGNoaWxkcmVuIHNob3VsZCBhbHdheXMgYmUgYW4gYXJyYXkuIFlvdSBhcmUgbGlrZWx5IGV4cGxpY2l0bHkgY2FsbGluZyBSZWFjdC5qc3hzIG9yIFJlYWN0LmpzeERFVi4gVXNlIHRoZSBCYWJlbCB0cmFuc2Zvcm0gaW5zdGVhZC5cIlxuICAgICAgICAgICAgKTtcbiAgICAgICAgZWxzZSB2YWxpZGF0ZUNoaWxkS2V5cyhjaGlsZHJlbik7XG4gICAgICBpZiAoaGFzT3duUHJvcGVydHkuY2FsbChjb25maWcsIFwia2V5XCIpKSB7XG4gICAgICAgIGNoaWxkcmVuID0gZ2V0Q29tcG9uZW50TmFtZUZyb21UeXBlKHR5cGUpO1xuICAgICAgICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKGNvbmZpZykuZmlsdGVyKGZ1bmN0aW9uIChrKSB7XG4gICAgICAgICAgcmV0dXJuIFwia2V5XCIgIT09IGs7XG4gICAgICAgIH0pO1xuICAgICAgICBpc1N0YXRpY0NoaWxkcmVuID1cbiAgICAgICAgICAwIDwga2V5cy5sZW5ndGhcbiAgICAgICAgICAgID8gXCJ7a2V5OiBzb21lS2V5LCBcIiArIGtleXMuam9pbihcIjogLi4uLCBcIikgKyBcIjogLi4ufVwiXG4gICAgICAgICAgICA6IFwie2tleTogc29tZUtleX1cIjtcbiAgICAgICAgZGlkV2FybkFib3V0S2V5U3ByZWFkW2NoaWxkcmVuICsgaXNTdGF0aWNDaGlsZHJlbl0gfHxcbiAgICAgICAgICAoKGtleXMgPVxuICAgICAgICAgICAgMCA8IGtleXMubGVuZ3RoID8gXCJ7XCIgKyBrZXlzLmpvaW4oXCI6IC4uLiwgXCIpICsgXCI6IC4uLn1cIiA6IFwie31cIiksXG4gICAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICAgICdBIHByb3BzIG9iamVjdCBjb250YWluaW5nIGEgXCJrZXlcIiBwcm9wIGlzIGJlaW5nIHNwcmVhZCBpbnRvIEpTWDpcXG4gIGxldCBwcm9wcyA9ICVzO1xcbiAgPCVzIHsuLi5wcm9wc30gLz5cXG5SZWFjdCBrZXlzIG11c3QgYmUgcGFzc2VkIGRpcmVjdGx5IHRvIEpTWCB3aXRob3V0IHVzaW5nIHNwcmVhZDpcXG4gIGxldCBwcm9wcyA9ICVzO1xcbiAgPCVzIGtleT17c29tZUtleX0gey4uLnByb3BzfSAvPicsXG4gICAgICAgICAgICBpc1N0YXRpY0NoaWxkcmVuLFxuICAgICAgICAgICAgY2hpbGRyZW4sXG4gICAgICAgICAgICBrZXlzLFxuICAgICAgICAgICAgY2hpbGRyZW5cbiAgICAgICAgICApLFxuICAgICAgICAgIChkaWRXYXJuQWJvdXRLZXlTcHJlYWRbY2hpbGRyZW4gKyBpc1N0YXRpY0NoaWxkcmVuXSA9ICEwKSk7XG4gICAgICB9XG4gICAgICBjaGlsZHJlbiA9IG51bGw7XG4gICAgICB2b2lkIDAgIT09IG1heWJlS2V5ICYmXG4gICAgICAgIChjaGVja0tleVN0cmluZ0NvZXJjaW9uKG1heWJlS2V5KSwgKGNoaWxkcmVuID0gXCJcIiArIG1heWJlS2V5KSk7XG4gICAgICBoYXNWYWxpZEtleShjb25maWcpICYmXG4gICAgICAgIChjaGVja0tleVN0cmluZ0NvZXJjaW9uKGNvbmZpZy5rZXkpLCAoY2hpbGRyZW4gPSBcIlwiICsgY29uZmlnLmtleSkpO1xuICAgICAgaWYgKFwia2V5XCIgaW4gY29uZmlnKSB7XG4gICAgICAgIG1heWJlS2V5ID0ge307XG4gICAgICAgIGZvciAodmFyIHByb3BOYW1lIGluIGNvbmZpZylcbiAgICAgICAgICBcImtleVwiICE9PSBwcm9wTmFtZSAmJiAobWF5YmVLZXlbcHJvcE5hbWVdID0gY29uZmlnW3Byb3BOYW1lXSk7XG4gICAgICB9IGVsc2UgbWF5YmVLZXkgPSBjb25maWc7XG4gICAgICBjaGlsZHJlbiAmJlxuICAgICAgICBkZWZpbmVLZXlQcm9wV2FybmluZ0dldHRlcihcbiAgICAgICAgICBtYXliZUtleSxcbiAgICAgICAgICBcImZ1bmN0aW9uXCIgPT09IHR5cGVvZiB0eXBlXG4gICAgICAgICAgICA/IHR5cGUuZGlzcGxheU5hbWUgfHwgdHlwZS5uYW1lIHx8IFwiVW5rbm93blwiXG4gICAgICAgICAgICA6IHR5cGVcbiAgICAgICAgKTtcbiAgICAgIHJldHVybiBSZWFjdEVsZW1lbnQoXG4gICAgICAgIHR5cGUsXG4gICAgICAgIGNoaWxkcmVuLFxuICAgICAgICBtYXliZUtleSxcbiAgICAgICAgZ2V0T3duZXIoKSxcbiAgICAgICAgZGVidWdTdGFjayxcbiAgICAgICAgZGVidWdUYXNrXG4gICAgICApO1xuICAgIH1cbiAgICBmdW5jdGlvbiB2YWxpZGF0ZUNoaWxkS2V5cyhub2RlKSB7XG4gICAgICBcIm9iamVjdFwiID09PSB0eXBlb2Ygbm9kZSAmJlxuICAgICAgICBudWxsICE9PSBub2RlICYmXG4gICAgICAgIG5vZGUuJCR0eXBlb2YgPT09IFJFQUNUX0VMRU1FTlRfVFlQRSAmJlxuICAgICAgICBub2RlLl9zdG9yZSAmJlxuICAgICAgICAobm9kZS5fc3RvcmUudmFsaWRhdGVkID0gMSk7XG4gICAgfVxuICAgIHZhciBSZWFjdCA9IHJlcXVpcmUoXCJuZXh0L2Rpc3QvY29tcGlsZWQvcmVhY3RcIiksXG4gICAgICBSRUFDVF9FTEVNRU5UX1RZUEUgPSBTeW1ib2wuZm9yKFwicmVhY3QudHJhbnNpdGlvbmFsLmVsZW1lbnRcIiksXG4gICAgICBSRUFDVF9QT1JUQUxfVFlQRSA9IFN5bWJvbC5mb3IoXCJyZWFjdC5wb3J0YWxcIiksXG4gICAgICBSRUFDVF9GUkFHTUVOVF9UWVBFID0gU3ltYm9sLmZvcihcInJlYWN0LmZyYWdtZW50XCIpLFxuICAgICAgUkVBQ1RfU1RSSUNUX01PREVfVFlQRSA9IFN5bWJvbC5mb3IoXCJyZWFjdC5zdHJpY3RfbW9kZVwiKSxcbiAgICAgIFJFQUNUX1BST0ZJTEVSX1RZUEUgPSBTeW1ib2wuZm9yKFwicmVhY3QucHJvZmlsZXJcIiksXG4gICAgICBSRUFDVF9DT05TVU1FUl9UWVBFID0gU3ltYm9sLmZvcihcInJlYWN0LmNvbnN1bWVyXCIpLFxuICAgICAgUkVBQ1RfQ09OVEVYVF9UWVBFID0gU3ltYm9sLmZvcihcInJlYWN0LmNvbnRleHRcIiksXG4gICAgICBSRUFDVF9GT1JXQVJEX1JFRl9UWVBFID0gU3ltYm9sLmZvcihcInJlYWN0LmZvcndhcmRfcmVmXCIpLFxuICAgICAgUkVBQ1RfU1VTUEVOU0VfVFlQRSA9IFN5bWJvbC5mb3IoXCJyZWFjdC5zdXNwZW5zZVwiKSxcbiAgICAgIFJFQUNUX1NVU1BFTlNFX0xJU1RfVFlQRSA9IFN5bWJvbC5mb3IoXCJyZWFjdC5zdXNwZW5zZV9saXN0XCIpLFxuICAgICAgUkVBQ1RfTUVNT19UWVBFID0gU3ltYm9sLmZvcihcInJlYWN0Lm1lbW9cIiksXG4gICAgICBSRUFDVF9MQVpZX1RZUEUgPSBTeW1ib2wuZm9yKFwicmVhY3QubGF6eVwiKSxcbiAgICAgIFJFQUNUX0FDVElWSVRZX1RZUEUgPSBTeW1ib2wuZm9yKFwicmVhY3QuYWN0aXZpdHlcIiksXG4gICAgICBSRUFDVF9DTElFTlRfUkVGRVJFTkNFID0gU3ltYm9sLmZvcihcInJlYWN0LmNsaWVudC5yZWZlcmVuY2VcIiksXG4gICAgICBSZWFjdFNoYXJlZEludGVybmFscyA9XG4gICAgICAgIFJlYWN0Ll9fQ0xJRU5UX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1dBUk5fVVNFUlNfVEhFWV9DQU5OT1RfVVBHUkFERSxcbiAgICAgIGhhc093blByb3BlcnR5ID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxcbiAgICAgIGlzQXJyYXlJbXBsID0gQXJyYXkuaXNBcnJheSxcbiAgICAgIGNyZWF0ZVRhc2sgPSBjb25zb2xlLmNyZWF0ZVRhc2tcbiAgICAgICAgPyBjb25zb2xlLmNyZWF0ZVRhc2tcbiAgICAgICAgOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICB9O1xuICAgIFJlYWN0ID0ge1xuICAgICAgcmVhY3Rfc3RhY2tfYm90dG9tX2ZyYW1lOiBmdW5jdGlvbiAoY2FsbFN0YWNrRm9yRXJyb3IpIHtcbiAgICAgICAgcmV0dXJuIGNhbGxTdGFja0ZvckVycm9yKCk7XG4gICAgICB9XG4gICAgfTtcbiAgICB2YXIgc3BlY2lhbFByb3BLZXlXYXJuaW5nU2hvd247XG4gICAgdmFyIGRpZFdhcm5BYm91dEVsZW1lbnRSZWYgPSB7fTtcbiAgICB2YXIgdW5rbm93bk93bmVyRGVidWdTdGFjayA9IFJlYWN0LnJlYWN0X3N0YWNrX2JvdHRvbV9mcmFtZS5iaW5kKFxuICAgICAgUmVhY3QsXG4gICAgICBVbmtub3duT3duZXJcbiAgICApKCk7XG4gICAgdmFyIHVua25vd25Pd25lckRlYnVnVGFzayA9IGNyZWF0ZVRhc2soZ2V0VGFza05hbWUoVW5rbm93bk93bmVyKSk7XG4gICAgdmFyIGRpZFdhcm5BYm91dEtleVNwcmVhZCA9IHt9O1xuICAgIGV4cG9ydHMuRnJhZ21lbnQgPSBSRUFDVF9GUkFHTUVOVF9UWVBFO1xuICAgIGV4cG9ydHMuanN4REVWID0gZnVuY3Rpb24gKHR5cGUsIGNvbmZpZywgbWF5YmVLZXksIGlzU3RhdGljQ2hpbGRyZW4pIHtcbiAgICAgIHZhciB0cmFja0FjdHVhbE93bmVyID1cbiAgICAgICAgMWU0ID4gUmVhY3RTaGFyZWRJbnRlcm5hbHMucmVjZW50bHlDcmVhdGVkT3duZXJTdGFja3MrKztcbiAgICAgIHJldHVybiBqc3hERVZJbXBsKFxuICAgICAgICB0eXBlLFxuICAgICAgICBjb25maWcsXG4gICAgICAgIG1heWJlS2V5LFxuICAgICAgICBpc1N0YXRpY0NoaWxkcmVuLFxuICAgICAgICB0cmFja0FjdHVhbE93bmVyXG4gICAgICAgICAgPyBFcnJvcihcInJlYWN0LXN0YWNrLXRvcC1mcmFtZVwiKVxuICAgICAgICAgIDogdW5rbm93bk93bmVyRGVidWdTdGFjayxcbiAgICAgICAgdHJhY2tBY3R1YWxPd25lciA/IGNyZWF0ZVRhc2soZ2V0VGFza05hbWUodHlwZSkpIDogdW5rbm93bk93bmVyRGVidWdUYXNrXG4gICAgICApO1xuICAgIH07XG4gIH0pKCk7XG4iXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/compiled/react/cjs/react-jsx-dev-runtime.development.js\n")); + +/***/ }), + +/***/ "(app-pages-browser)/./node_modules/next/dist/compiled/react/jsx-dev-runtime.js": +/*!******************************************************************!*\ + !*** ./node_modules/next/dist/compiled/react/jsx-dev-runtime.js ***! + \******************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; +eval(__webpack_require__.ts("\n\nif (false) {} else {\n module.exports = __webpack_require__(/*! ./cjs/react-jsx-dev-runtime.development.js */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/cjs/react-jsx-dev-runtime.development.js\");\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY29tcGlsZWQvcmVhY3QvanN4LWRldi1ydW50aW1lLmpzIiwibWFwcGluZ3MiOiJBQUFhOztBQUViLElBQUksS0FBcUMsRUFBRSxFQUUxQyxDQUFDO0FBQ0YsRUFBRSw4TEFBc0U7QUFDeEUiLCJzb3VyY2VzIjpbIi9Vc2Vycy9qZXR0Y2hlbmcxMDE4L2NvZGUvZHJhbWFsaW5nLXZvY2FiLWxlYXJuaW5nL2Zyb250ZW5kL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY29tcGlsZWQvcmVhY3QvanN4LWRldi1ydW50aW1lLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAncHJvZHVjdGlvbicpIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Nqcy9yZWFjdC1qc3gtZGV2LXJ1bnRpbWUucHJvZHVjdGlvbi5qcycpO1xufSBlbHNlIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Nqcy9yZWFjdC1qc3gtZGV2LXJ1bnRpbWUuZGV2ZWxvcG1lbnQuanMnKTtcbn1cbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/compiled/react/jsx-dev-runtime.js\n")); + +/***/ }), + +/***/ "(app-pages-browser)/./node_modules/next/dist/shared/lib/router/utils/format-url.js": +/*!**********************************************************************!*\ + !*** ./node_modules/next/dist/shared/lib/router/utils/format-url.js ***! + \**********************************************************************/ +/***/ ((module, exports, __webpack_require__) => { + +"use strict"; +eval(__webpack_require__.ts("// Format function modified from nodejs\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n formatUrl: function() {\n return formatUrl;\n },\n formatWithValidation: function() {\n return formatWithValidation;\n },\n urlObjectKeys: function() {\n return urlObjectKeys;\n }\n});\nconst _interop_require_wildcard = __webpack_require__(/*! @swc/helpers/_/_interop_require_wildcard */ \"(app-pages-browser)/./node_modules/@swc/helpers/esm/_interop_require_wildcard.js\");\nconst _querystring = /*#__PURE__*/ _interop_require_wildcard._(__webpack_require__(/*! ./querystring */ \"(app-pages-browser)/./node_modules/next/dist/shared/lib/router/utils/querystring.js\"));\nconst slashedProtocols = /https?|ftp|gopher|file/;\nfunction formatUrl(urlObj) {\n let { auth, hostname } = urlObj;\n let protocol = urlObj.protocol || '';\n let pathname = urlObj.pathname || '';\n let hash = urlObj.hash || '';\n let query = urlObj.query || '';\n let host = false;\n auth = auth ? encodeURIComponent(auth).replace(/%3A/i, ':') + '@' : '';\n if (urlObj.host) {\n host = auth + urlObj.host;\n } else if (hostname) {\n host = auth + (~hostname.indexOf(':') ? \"[\" + hostname + \"]\" : hostname);\n if (urlObj.port) {\n host += ':' + urlObj.port;\n }\n }\n if (query && typeof query === 'object') {\n query = String(_querystring.urlQueryToSearchParams(query));\n }\n let search = urlObj.search || query && \"?\" + query || '';\n if (protocol && !protocol.endsWith(':')) protocol += ':';\n if (urlObj.slashes || (!protocol || slashedProtocols.test(protocol)) && host !== false) {\n host = '//' + (host || '');\n if (pathname && pathname[0] !== '/') pathname = '/' + pathname;\n } else if (!host) {\n host = '';\n }\n if (hash && hash[0] !== '#') hash = '#' + hash;\n if (search && search[0] !== '?') search = '?' + search;\n pathname = pathname.replace(/[?#]/g, encodeURIComponent);\n search = search.replace('#', '%23');\n return \"\" + protocol + host + pathname + search + hash;\n}\nconst urlObjectKeys = [\n 'auth',\n 'hash',\n 'host',\n 'hostname',\n 'href',\n 'path',\n 'pathname',\n 'port',\n 'protocol',\n 'query',\n 'search',\n 'slashes'\n];\nfunction formatWithValidation(url) {\n if (true) {\n if (url !== null && typeof url === 'object') {\n Object.keys(url).forEach((key)=>{\n if (!urlObjectKeys.includes(key)) {\n console.warn(\"Unknown key passed via urlObject into url.format: \" + key);\n }\n });\n }\n }\n return formatUrl(url);\n} //# sourceMappingURL=format-url.js.map\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3Qvc2hhcmVkL2xpYi9yb3V0ZXIvdXRpbHMvZm9ybWF0LXVybC5qcyIsIm1hcHBpbmdzIjoiQUFBQSx1Q0FBdUM7QUFDdkMsc0RBQXNEO0FBQ3RELEVBQUU7QUFDRiwwRUFBMEU7QUFDMUUsZ0VBQWdFO0FBQ2hFLHNFQUFzRTtBQUN0RSxzRUFBc0U7QUFDdEUsNEVBQTRFO0FBQzVFLHFFQUFxRTtBQUNyRSx3QkFBd0I7QUFDeEIsRUFBRTtBQUNGLDBFQUEwRTtBQUMxRSx5REFBeUQ7QUFDekQsRUFBRTtBQUNGLDBFQUEwRTtBQUMxRSw2REFBNkQ7QUFDN0QsNEVBQTRFO0FBQzVFLDJFQUEyRTtBQUMzRSx3RUFBd0U7QUFDeEUsNEVBQTRFO0FBQzVFLHlDQUF5Qzs7Ozs7Ozs7Ozs7OztJQVF6QkEsU0FBUztlQUFUQTs7SUE2REFDLG9CQUFvQjtlQUFwQkE7O0lBZkhDLGFBQWE7ZUFBYkE7Ozs7bUZBbERnQjtBQUU3QixNQUFNQyxtQkFBbUI7QUFFbEIsU0FBU0gsVUFBVUksTUFBaUI7SUFDekMsSUFBSSxFQUFFQyxJQUFJLEVBQUVDLFFBQVEsRUFBRSxHQUFHRjtJQUN6QixJQUFJRyxXQUFXSCxPQUFPRyxRQUFRLElBQUk7SUFDbEMsSUFBSUMsV0FBV0osT0FBT0ksUUFBUSxJQUFJO0lBQ2xDLElBQUlDLE9BQU9MLE9BQU9LLElBQUksSUFBSTtJQUMxQixJQUFJQyxRQUFRTixPQUFPTSxLQUFLLElBQUk7SUFDNUIsSUFBSUMsT0FBdUI7SUFFM0JOLE9BQU9BLE9BQU9PLG1CQUFtQlAsTUFBTVEsT0FBTyxDQUFDLFFBQVEsT0FBTyxNQUFNO0lBRXBFLElBQUlULE9BQU9PLElBQUksRUFBRTtRQUNmQSxPQUFPTixPQUFPRCxPQUFPTyxJQUFJO0lBQzNCLE9BQU8sSUFBSUwsVUFBVTtRQUNuQkssT0FBT04sT0FBUSxFQUFDQyxTQUFTUSxPQUFPLENBQUMsT0FBUSxNQUFHUixXQUFTLE1BQUtBLFFBQUFBLENBQU87UUFDakUsSUFBSUYsT0FBT1csSUFBSSxFQUFFO1lBQ2ZKLFFBQVEsTUFBTVAsT0FBT1csSUFBSTtRQUMzQjtJQUNGO0lBRUEsSUFBSUwsU0FBUyxPQUFPQSxVQUFVLFVBQVU7UUFDdENBLFFBQVFNLE9BQU9DLGFBQVlDLHNCQUFzQixDQUFDUjtJQUNwRDtJQUVBLElBQUlTLFNBQVNmLE9BQU9lLE1BQU0sSUFBS1QsU0FBVSxNQUFHQSxTQUFZO0lBRXhELElBQUlILFlBQVksQ0FBQ0EsU0FBU2EsUUFBUSxDQUFDLE1BQU1iLFlBQVk7SUFFckQsSUFDRUgsT0FBT2lCLE9BQU8sSUFDWixFQUFDZCxZQUFZSixpQkFBaUJtQixJQUFJLENBQUNmLFNBQUFBLENBQVEsSUFBTUksU0FBUyxPQUM1RDtRQUNBQSxPQUFPLE9BQVFBLENBQUFBLFFBQVEsR0FBQztRQUN4QixJQUFJSCxZQUFZQSxRQUFRLENBQUMsRUFBRSxLQUFLLEtBQUtBLFdBQVcsTUFBTUE7SUFDeEQsT0FBTyxJQUFJLENBQUNHLE1BQU07UUFDaEJBLE9BQU87SUFDVDtJQUVBLElBQUlGLFFBQVFBLElBQUksQ0FBQyxFQUFFLEtBQUssS0FBS0EsT0FBTyxNQUFNQTtJQUMxQyxJQUFJVSxVQUFVQSxNQUFNLENBQUMsRUFBRSxLQUFLLEtBQUtBLFNBQVMsTUFBTUE7SUFFaERYLFdBQVdBLFNBQVNLLE9BQU8sQ0FBQyxTQUFTRDtJQUNyQ08sU0FBU0EsT0FBT04sT0FBTyxDQUFDLEtBQUs7SUFFN0IsT0FBUSxLQUFFTixXQUFXSSxPQUFPSCxXQUFXVyxTQUFTVjtBQUNsRDtBQUVPLE1BQU1QLGdCQUFnQjtJQUMzQjtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7Q0FDRDtBQUVNLFNBQVNELHFCQUFxQnNCLEdBQWM7SUFDakQsSUFBSUMsSUFBb0IsRUFBb0I7UUFDMUMsSUFBSUQsUUFBUSxRQUFRLE9BQU9BLFFBQVEsVUFBVTtZQUMzQ0ksT0FBT0MsSUFBSSxDQUFDTCxLQUFLTSxPQUFPLENBQUMsQ0FBQ0M7Z0JBQ3hCLElBQUksQ0FBQzVCLGNBQWM2QixRQUFRLENBQUNELE1BQU07b0JBQ2hDRSxRQUFRQyxJQUFJLENBQ1QsdURBQW9ESDtnQkFFekQ7WUFDRjtRQUNGO0lBQ0Y7SUFFQSxPQUFPOUIsVUFBVXVCO0FBQ25CIiwic291cmNlcyI6WyIvc3JjL3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL2Zvcm1hdC11cmwudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gRm9ybWF0IGZ1bmN0aW9uIG1vZGlmaWVkIGZyb20gbm9kZWpzXG4vLyBDb3B5cmlnaHQgSm95ZW50LCBJbmMuIGFuZCBvdGhlciBOb2RlIGNvbnRyaWJ1dG9ycy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYVxuLy8gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZVxuLy8gXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nXG4vLyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsXG4vLyBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0XG4vLyBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGVcbi8vIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkXG4vLyBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTXG4vLyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GXG4vLyBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOXG4vLyBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSxcbi8vIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUlxuLy8gT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRVxuLy8gVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS5cblxuaW1wb3J0IHR5cGUgeyBVcmxPYmplY3QgfSBmcm9tICd1cmwnXG5pbXBvcnQgdHlwZSB7IFBhcnNlZFVybFF1ZXJ5IH0gZnJvbSAncXVlcnlzdHJpbmcnXG5pbXBvcnQgKiBhcyBxdWVyeXN0cmluZyBmcm9tICcuL3F1ZXJ5c3RyaW5nJ1xuXG5jb25zdCBzbGFzaGVkUHJvdG9jb2xzID0gL2h0dHBzP3xmdHB8Z29waGVyfGZpbGUvXG5cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRVcmwodXJsT2JqOiBVcmxPYmplY3QpIHtcbiAgbGV0IHsgYXV0aCwgaG9zdG5hbWUgfSA9IHVybE9ialxuICBsZXQgcHJvdG9jb2wgPSB1cmxPYmoucHJvdG9jb2wgfHwgJydcbiAgbGV0IHBhdGhuYW1lID0gdXJsT2JqLnBhdGhuYW1lIHx8ICcnXG4gIGxldCBoYXNoID0gdXJsT2JqLmhhc2ggfHwgJydcbiAgbGV0IHF1ZXJ5ID0gdXJsT2JqLnF1ZXJ5IHx8ICcnXG4gIGxldCBob3N0OiBzdHJpbmcgfCBmYWxzZSA9IGZhbHNlXG5cbiAgYXV0aCA9IGF1dGggPyBlbmNvZGVVUklDb21wb25lbnQoYXV0aCkucmVwbGFjZSgvJTNBL2ksICc6JykgKyAnQCcgOiAnJ1xuXG4gIGlmICh1cmxPYmouaG9zdCkge1xuICAgIGhvc3QgPSBhdXRoICsgdXJsT2JqLmhvc3RcbiAgfSBlbHNlIGlmIChob3N0bmFtZSkge1xuICAgIGhvc3QgPSBhdXRoICsgKH5ob3N0bmFtZS5pbmRleE9mKCc6JykgPyBgWyR7aG9zdG5hbWV9XWAgOiBob3N0bmFtZSlcbiAgICBpZiAodXJsT2JqLnBvcnQpIHtcbiAgICAgIGhvc3QgKz0gJzonICsgdXJsT2JqLnBvcnRcbiAgICB9XG4gIH1cblxuICBpZiAocXVlcnkgJiYgdHlwZW9mIHF1ZXJ5ID09PSAnb2JqZWN0Jykge1xuICAgIHF1ZXJ5ID0gU3RyaW5nKHF1ZXJ5c3RyaW5nLnVybFF1ZXJ5VG9TZWFyY2hQYXJhbXMocXVlcnkgYXMgUGFyc2VkVXJsUXVlcnkpKVxuICB9XG5cbiAgbGV0IHNlYXJjaCA9IHVybE9iai5zZWFyY2ggfHwgKHF1ZXJ5ICYmIGA/JHtxdWVyeX1gKSB8fCAnJ1xuXG4gIGlmIChwcm90b2NvbCAmJiAhcHJvdG9jb2wuZW5kc1dpdGgoJzonKSkgcHJvdG9jb2wgKz0gJzonXG5cbiAgaWYgKFxuICAgIHVybE9iai5zbGFzaGVzIHx8XG4gICAgKCghcHJvdG9jb2wgfHwgc2xhc2hlZFByb3RvY29scy50ZXN0KHByb3RvY29sKSkgJiYgaG9zdCAhPT0gZmFsc2UpXG4gICkge1xuICAgIGhvc3QgPSAnLy8nICsgKGhvc3QgfHwgJycpXG4gICAgaWYgKHBhdGhuYW1lICYmIHBhdGhuYW1lWzBdICE9PSAnLycpIHBhdGhuYW1lID0gJy8nICsgcGF0aG5hbWVcbiAgfSBlbHNlIGlmICghaG9zdCkge1xuICAgIGhvc3QgPSAnJ1xuICB9XG5cbiAgaWYgKGhhc2ggJiYgaGFzaFswXSAhPT0gJyMnKSBoYXNoID0gJyMnICsgaGFzaFxuICBpZiAoc2VhcmNoICYmIHNlYXJjaFswXSAhPT0gJz8nKSBzZWFyY2ggPSAnPycgKyBzZWFyY2hcblxuICBwYXRobmFtZSA9IHBhdGhuYW1lLnJlcGxhY2UoL1s/I10vZywgZW5jb2RlVVJJQ29tcG9uZW50KVxuICBzZWFyY2ggPSBzZWFyY2gucmVwbGFjZSgnIycsICclMjMnKVxuXG4gIHJldHVybiBgJHtwcm90b2NvbH0ke2hvc3R9JHtwYXRobmFtZX0ke3NlYXJjaH0ke2hhc2h9YFxufVxuXG5leHBvcnQgY29uc3QgdXJsT2JqZWN0S2V5cyA9IFtcbiAgJ2F1dGgnLFxuICAnaGFzaCcsXG4gICdob3N0JyxcbiAgJ2hvc3RuYW1lJyxcbiAgJ2hyZWYnLFxuICAncGF0aCcsXG4gICdwYXRobmFtZScsXG4gICdwb3J0JyxcbiAgJ3Byb3RvY29sJyxcbiAgJ3F1ZXJ5JyxcbiAgJ3NlYXJjaCcsXG4gICdzbGFzaGVzJyxcbl1cblxuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdFdpdGhWYWxpZGF0aW9uKHVybDogVXJsT2JqZWN0KTogc3RyaW5nIHtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAnZGV2ZWxvcG1lbnQnKSB7XG4gICAgaWYgKHVybCAhPT0gbnVsbCAmJiB0eXBlb2YgdXJsID09PSAnb2JqZWN0Jykge1xuICAgICAgT2JqZWN0LmtleXModXJsKS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgICAgaWYgKCF1cmxPYmplY3RLZXlzLmluY2x1ZGVzKGtleSkpIHtcbiAgICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgICBgVW5rbm93biBrZXkgcGFzc2VkIHZpYSB1cmxPYmplY3QgaW50byB1cmwuZm9ybWF0OiAke2tleX1gXG4gICAgICAgICAgKVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmb3JtYXRVcmwodXJsKVxufVxuIl0sIm5hbWVzIjpbImZvcm1hdFVybCIsImZvcm1hdFdpdGhWYWxpZGF0aW9uIiwidXJsT2JqZWN0S2V5cyIsInNsYXNoZWRQcm90b2NvbHMiLCJ1cmxPYmoiLCJhdXRoIiwiaG9zdG5hbWUiLCJwcm90b2NvbCIsInBhdGhuYW1lIiwiaGFzaCIsInF1ZXJ5IiwiaG9zdCIsImVuY29kZVVSSUNvbXBvbmVudCIsInJlcGxhY2UiLCJpbmRleE9mIiwicG9ydCIsIlN0cmluZyIsInF1ZXJ5c3RyaW5nIiwidXJsUXVlcnlUb1NlYXJjaFBhcmFtcyIsInNlYXJjaCIsImVuZHNXaXRoIiwic2xhc2hlcyIsInRlc3QiLCJ1cmwiLCJwcm9jZXNzIiwiZW52IiwiTk9ERV9FTlYiLCJPYmplY3QiLCJrZXlzIiwiZm9yRWFjaCIsImtleSIsImluY2x1ZGVzIiwiY29uc29sZSIsIndhcm4iXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/shared/lib/router/utils/format-url.js\n")); + +/***/ }), + +/***/ "(app-pages-browser)/./node_modules/next/dist/shared/lib/router/utils/is-local-url.js": +/*!************************************************************************!*\ + !*** ./node_modules/next/dist/shared/lib/router/utils/is-local-url.js ***! + \************************************************************************/ +/***/ ((module, exports, __webpack_require__) => { + +"use strict"; +eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"isLocalURL\", ({\n enumerable: true,\n get: function() {\n return isLocalURL;\n }\n}));\nconst _utils = __webpack_require__(/*! ../../utils */ \"(app-pages-browser)/./node_modules/next/dist/shared/lib/utils.js\");\nconst _hasbasepath = __webpack_require__(/*! ../../../../client/has-base-path */ \"(app-pages-browser)/./node_modules/next/dist/client/has-base-path.js\");\nfunction isLocalURL(url) {\n // prevent a hydration mismatch on href for url with anchor refs\n if (!(0, _utils.isAbsoluteUrl)(url)) return true;\n try {\n // absolute urls can be local if they are on the same origin\n const locationOrigin = (0, _utils.getLocationOrigin)();\n const resolved = new URL(url, locationOrigin);\n return resolved.origin === locationOrigin && (0, _hasbasepath.hasBasePath)(resolved.pathname);\n } catch (_) {\n return false;\n }\n} //# sourceMappingURL=is-local-url.js.map\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3Qvc2hhcmVkL2xpYi9yb3V0ZXIvdXRpbHMvaXMtbG9jYWwtdXJsLmpzIiwibWFwcGluZ3MiOiI7Ozs7OENBTWdCQTs7O2VBQUFBOzs7bUNBTmlDO3lDQUNyQjtBQUtyQixTQUFTQSxXQUFXQyxHQUFXO0lBQ3BDLGdFQUFnRTtJQUNoRSxJQUFJLENBQUNDLENBQUFBLEdBQUFBLE9BQUFBLGFBQUFBLEVBQWNELE1BQU0sT0FBTztJQUNoQyxJQUFJO1FBQ0YsNERBQTREO1FBQzVELE1BQU1FLGlCQUFpQkMsQ0FBQUEsR0FBQUEsT0FBQUEsaUJBQUFBO1FBQ3ZCLE1BQU1DLFdBQVcsSUFBSUMsSUFBSUwsS0FBS0U7UUFDOUIsT0FBT0UsU0FBU0UsTUFBTSxLQUFLSixrQkFBa0JLLENBQUFBLEdBQUFBLGFBQUFBLFdBQUFBLEVBQVlILFNBQVNJLFFBQVE7SUFDNUUsRUFBRSxPQUFPQyxHQUFHO1FBQ1YsT0FBTztJQUNUO0FBQ0YiLCJzb3VyY2VzIjpbIi9zcmMvc2hhcmVkL2xpYi9yb3V0ZXIvdXRpbHMvaXMtbG9jYWwtdXJsLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzQWJzb2x1dGVVcmwsIGdldExvY2F0aW9uT3JpZ2luIH0gZnJvbSAnLi4vLi4vdXRpbHMnXG5pbXBvcnQgeyBoYXNCYXNlUGF0aCB9IGZyb20gJy4uLy4uLy4uLy4uL2NsaWVudC9oYXMtYmFzZS1wYXRoJ1xuXG4vKipcbiAqIERldGVjdHMgd2hldGhlciBhIGdpdmVuIHVybCBpcyByb3V0YWJsZSBieSB0aGUgTmV4dC5qcyByb3V0ZXIgKGJyb3dzZXIgb25seSkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0xvY2FsVVJMKHVybDogc3RyaW5nKTogYm9vbGVhbiB7XG4gIC8vIHByZXZlbnQgYSBoeWRyYXRpb24gbWlzbWF0Y2ggb24gaHJlZiBmb3IgdXJsIHdpdGggYW5jaG9yIHJlZnNcbiAgaWYgKCFpc0Fic29sdXRlVXJsKHVybCkpIHJldHVybiB0cnVlXG4gIHRyeSB7XG4gICAgLy8gYWJzb2x1dGUgdXJscyBjYW4gYmUgbG9jYWwgaWYgdGhleSBhcmUgb24gdGhlIHNhbWUgb3JpZ2luXG4gICAgY29uc3QgbG9jYXRpb25PcmlnaW4gPSBnZXRMb2NhdGlvbk9yaWdpbigpXG4gICAgY29uc3QgcmVzb2x2ZWQgPSBuZXcgVVJMKHVybCwgbG9jYXRpb25PcmlnaW4pXG4gICAgcmV0dXJuIHJlc29sdmVkLm9yaWdpbiA9PT0gbG9jYXRpb25PcmlnaW4gJiYgaGFzQmFzZVBhdGgocmVzb2x2ZWQucGF0aG5hbWUpXG4gIH0gY2F0Y2ggKF8pIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxufVxuIl0sIm5hbWVzIjpbImlzTG9jYWxVUkwiLCJ1cmwiLCJpc0Fic29sdXRlVXJsIiwibG9jYXRpb25PcmlnaW4iLCJnZXRMb2NhdGlvbk9yaWdpbiIsInJlc29sdmVkIiwiVVJMIiwib3JpZ2luIiwiaGFzQmFzZVBhdGgiLCJwYXRobmFtZSIsIl8iXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/shared/lib/router/utils/is-local-url.js\n")); + +/***/ }), + +/***/ "(app-pages-browser)/./node_modules/next/dist/shared/lib/router/utils/querystring.js": +/*!***********************************************************************!*\ + !*** ./node_modules/next/dist/shared/lib/router/utils/querystring.js ***! + \***********************************************************************/ +/***/ ((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 assign: function() {\n return assign;\n },\n searchParamsToUrlQuery: function() {\n return searchParamsToUrlQuery;\n },\n urlQueryToSearchParams: function() {\n return urlQueryToSearchParams;\n }\n});\nfunction searchParamsToUrlQuery(searchParams) {\n const query = {};\n for (const [key, value] of searchParams.entries()){\n const existing = query[key];\n if (typeof existing === 'undefined') {\n query[key] = value;\n } else if (Array.isArray(existing)) {\n existing.push(value);\n } else {\n query[key] = [\n existing,\n value\n ];\n }\n }\n return query;\n}\nfunction stringifyUrlQueryParam(param) {\n if (typeof param === 'string') {\n return param;\n }\n if (typeof param === 'number' && !isNaN(param) || typeof param === 'boolean') {\n return String(param);\n } else {\n return '';\n }\n}\nfunction urlQueryToSearchParams(query) {\n const searchParams = new URLSearchParams();\n for (const [key, value] of Object.entries(query)){\n if (Array.isArray(value)) {\n for (const item of value){\n searchParams.append(key, stringifyUrlQueryParam(item));\n }\n } else {\n searchParams.set(key, stringifyUrlQueryParam(value));\n }\n }\n return searchParams;\n}\nfunction assign(target) {\n for(var _len = arguments.length, searchParamsList = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++){\n searchParamsList[_key - 1] = arguments[_key];\n }\n for (const searchParams of searchParamsList){\n for (const key of searchParams.keys()){\n target.delete(key);\n }\n for (const [key, value] of searchParams.entries()){\n target.append(key, value);\n }\n }\n return target;\n} //# sourceMappingURL=querystring.js.map\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3Qvc2hhcmVkL2xpYi9yb3V0ZXIvdXRpbHMvcXVlcnlzdHJpbmcuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0lBZ0RnQkEsTUFBTTtlQUFOQTs7SUE5Q0FDLHNCQUFzQjtlQUF0QkE7O0lBZ0NBQyxzQkFBc0I7ZUFBdEJBOzs7QUFoQ1QsU0FBU0QsdUJBQ2RFLFlBQTZCO0lBRTdCLE1BQU1DLFFBQXdCLENBQUM7SUFDL0IsS0FBSyxNQUFNLENBQUNDLEtBQUtDLE1BQU0sSUFBSUgsYUFBYUksT0FBTyxHQUFJO1FBQ2pELE1BQU1DLFdBQVdKLEtBQUssQ0FBQ0MsSUFBSTtRQUMzQixJQUFJLE9BQU9HLGFBQWEsYUFBYTtZQUNuQ0osS0FBSyxDQUFDQyxJQUFJLEdBQUdDO1FBQ2YsT0FBTyxJQUFJRyxNQUFNQyxPQUFPLENBQUNGLFdBQVc7WUFDbENBLFNBQVNHLElBQUksQ0FBQ0w7UUFDaEIsT0FBTztZQUNMRixLQUFLLENBQUNDLElBQUksR0FBRztnQkFBQ0c7Z0JBQVVGO2FBQU07UUFDaEM7SUFDRjtJQUNBLE9BQU9GO0FBQ1Q7QUFFQSxTQUFTUSx1QkFBdUJDLEtBQWM7SUFDNUMsSUFBSSxPQUFPQSxVQUFVLFVBQVU7UUFDN0IsT0FBT0E7SUFDVDtJQUVBLElBQ0csT0FBT0EsVUFBVSxZQUFZLENBQUNDLE1BQU1ELFVBQ3JDLE9BQU9BLFVBQVUsV0FDakI7UUFDQSxPQUFPRSxPQUFPRjtJQUNoQixPQUFPO1FBQ0wsT0FBTztJQUNUO0FBQ0Y7QUFFTyxTQUFTWCx1QkFBdUJFLEtBQXFCO0lBQzFELE1BQU1ELGVBQWUsSUFBSWE7SUFDekIsS0FBSyxNQUFNLENBQUNYLEtBQUtDLE1BQU0sSUFBSVcsT0FBT1YsT0FBTyxDQUFDSCxPQUFRO1FBQ2hELElBQUlLLE1BQU1DLE9BQU8sQ0FBQ0osUUFBUTtZQUN4QixLQUFLLE1BQU1ZLFFBQVFaLE1BQU87Z0JBQ3hCSCxhQUFhZ0IsTUFBTSxDQUFDZCxLQUFLTyx1QkFBdUJNO1lBQ2xEO1FBQ0YsT0FBTztZQUNMZixhQUFhaUIsR0FBRyxDQUFDZixLQUFLTyx1QkFBdUJOO1FBQy9DO0lBQ0Y7SUFDQSxPQUFPSDtBQUNUO0FBRU8sU0FBU0gsT0FDZHFCLE1BQXVCO0lBQ3ZCLGlDQUFHQyxtQkFBSDtRQUFHQSxnQkFBQUEsQ0FBSCwyQkFBc0M7O0lBRXRDLEtBQUssTUFBTW5CLGdCQUFnQm1CLGlCQUFrQjtRQUMzQyxLQUFLLE1BQU1qQixPQUFPRixhQUFhb0IsSUFBSSxHQUFJO1lBQ3JDRixPQUFPRyxNQUFNLENBQUNuQjtRQUNoQjtRQUVBLEtBQUssTUFBTSxDQUFDQSxLQUFLQyxNQUFNLElBQUlILGFBQWFJLE9BQU8sR0FBSTtZQUNqRGMsT0FBT0YsTUFBTSxDQUFDZCxLQUFLQztRQUNyQjtJQUNGO0lBRUEsT0FBT2U7QUFDVCIsInNvdXJjZXMiOlsiL3NyYy9zaGFyZWQvbGliL3JvdXRlci91dGlscy9xdWVyeXN0cmluZy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFBhcnNlZFVybFF1ZXJ5IH0gZnJvbSAncXVlcnlzdHJpbmcnXG5cbmV4cG9ydCBmdW5jdGlvbiBzZWFyY2hQYXJhbXNUb1VybFF1ZXJ5KFxuICBzZWFyY2hQYXJhbXM6IFVSTFNlYXJjaFBhcmFtc1xuKTogUGFyc2VkVXJsUXVlcnkge1xuICBjb25zdCBxdWVyeTogUGFyc2VkVXJsUXVlcnkgPSB7fVxuICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBzZWFyY2hQYXJhbXMuZW50cmllcygpKSB7XG4gICAgY29uc3QgZXhpc3RpbmcgPSBxdWVyeVtrZXldXG4gICAgaWYgKHR5cGVvZiBleGlzdGluZyA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHF1ZXJ5W2tleV0gPSB2YWx1ZVxuICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShleGlzdGluZykpIHtcbiAgICAgIGV4aXN0aW5nLnB1c2godmFsdWUpXG4gICAgfSBlbHNlIHtcbiAgICAgIHF1ZXJ5W2tleV0gPSBbZXhpc3RpbmcsIHZhbHVlXVxuICAgIH1cbiAgfVxuICByZXR1cm4gcXVlcnlcbn1cblxuZnVuY3Rpb24gc3RyaW5naWZ5VXJsUXVlcnlQYXJhbShwYXJhbTogdW5rbm93bik6IHN0cmluZyB7XG4gIGlmICh0eXBlb2YgcGFyYW0gPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIHBhcmFtXG4gIH1cblxuICBpZiAoXG4gICAgKHR5cGVvZiBwYXJhbSA9PT0gJ251bWJlcicgJiYgIWlzTmFOKHBhcmFtKSkgfHxcbiAgICB0eXBlb2YgcGFyYW0gPT09ICdib29sZWFuJ1xuICApIHtcbiAgICByZXR1cm4gU3RyaW5nKHBhcmFtKVxuICB9IGVsc2Uge1xuICAgIHJldHVybiAnJ1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1cmxRdWVyeVRvU2VhcmNoUGFyYW1zKHF1ZXJ5OiBQYXJzZWRVcmxRdWVyeSk6IFVSTFNlYXJjaFBhcmFtcyB7XG4gIGNvbnN0IHNlYXJjaFBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoKVxuICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhxdWVyeSkpIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgIGZvciAoY29uc3QgaXRlbSBvZiB2YWx1ZSkge1xuICAgICAgICBzZWFyY2hQYXJhbXMuYXBwZW5kKGtleSwgc3RyaW5naWZ5VXJsUXVlcnlQYXJhbShpdGVtKSlcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgc2VhcmNoUGFyYW1zLnNldChrZXksIHN0cmluZ2lmeVVybFF1ZXJ5UGFyYW0odmFsdWUpKVxuICAgIH1cbiAgfVxuICByZXR1cm4gc2VhcmNoUGFyYW1zXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhc3NpZ24oXG4gIHRhcmdldDogVVJMU2VhcmNoUGFyYW1zLFxuICAuLi5zZWFyY2hQYXJhbXNMaXN0OiBVUkxTZWFyY2hQYXJhbXNbXVxuKTogVVJMU2VhcmNoUGFyYW1zIHtcbiAgZm9yIChjb25zdCBzZWFyY2hQYXJhbXMgb2Ygc2VhcmNoUGFyYW1zTGlzdCkge1xuICAgIGZvciAoY29uc3Qga2V5IG9mIHNlYXJjaFBhcmFtcy5rZXlzKCkpIHtcbiAgICAgIHRhcmdldC5kZWxldGUoa2V5KVxuICAgIH1cblxuICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIHNlYXJjaFBhcmFtcy5lbnRyaWVzKCkpIHtcbiAgICAgIHRhcmdldC5hcHBlbmQoa2V5LCB2YWx1ZSlcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdGFyZ2V0XG59XG4iXSwibmFtZXMiOlsiYXNzaWduIiwic2VhcmNoUGFyYW1zVG9VcmxRdWVyeSIsInVybFF1ZXJ5VG9TZWFyY2hQYXJhbXMiLCJzZWFyY2hQYXJhbXMiLCJxdWVyeSIsImtleSIsInZhbHVlIiwiZW50cmllcyIsImV4aXN0aW5nIiwiQXJyYXkiLCJpc0FycmF5IiwicHVzaCIsInN0cmluZ2lmeVVybFF1ZXJ5UGFyYW0iLCJwYXJhbSIsImlzTmFOIiwiU3RyaW5nIiwiVVJMU2VhcmNoUGFyYW1zIiwiT2JqZWN0IiwiaXRlbSIsImFwcGVuZCIsInNldCIsInRhcmdldCIsInNlYXJjaFBhcmFtc0xpc3QiLCJrZXlzIiwiZGVsZXRlIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/shared/lib/router/utils/querystring.js\n")); + +/***/ }), + +/***/ "(app-pages-browser)/./node_modules/next/dist/shared/lib/utils.js": +/*!****************************************************!*\ + !*** ./node_modules/next/dist/shared/lib/utils.js ***! + \****************************************************/ +/***/ ((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 DecodeError: function() {\n return DecodeError;\n },\n MiddlewareNotFoundError: function() {\n return MiddlewareNotFoundError;\n },\n MissingStaticPage: function() {\n return MissingStaticPage;\n },\n NormalizeError: function() {\n return NormalizeError;\n },\n PageNotFoundError: function() {\n return PageNotFoundError;\n },\n SP: function() {\n return SP;\n },\n ST: function() {\n return ST;\n },\n WEB_VITALS: function() {\n return WEB_VITALS;\n },\n execOnce: function() {\n return execOnce;\n },\n getDisplayName: function() {\n return getDisplayName;\n },\n getLocationOrigin: function() {\n return getLocationOrigin;\n },\n getURL: function() {\n return getURL;\n },\n isAbsoluteUrl: function() {\n return isAbsoluteUrl;\n },\n isResSent: function() {\n return isResSent;\n },\n loadGetInitialProps: function() {\n return loadGetInitialProps;\n },\n normalizeRepeatedSlashes: function() {\n return normalizeRepeatedSlashes;\n },\n stringifyError: function() {\n return stringifyError;\n }\n});\nconst WEB_VITALS = [\n 'CLS',\n 'FCP',\n 'FID',\n 'INP',\n 'LCP',\n 'TTFB'\n];\nfunction execOnce(fn) {\n let used = false;\n let result;\n return function() {\n for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){\n args[_key] = arguments[_key];\n }\n if (!used) {\n used = true;\n result = fn(...args);\n }\n return result;\n };\n}\n// Scheme: https://tools.ietf.org/html/rfc3986#section-3.1\n// Absolute URL: https://tools.ietf.org/html/rfc3986#section-4.3\nconst ABSOLUTE_URL_REGEX = /^[a-zA-Z][a-zA-Z\\d+\\-.]*?:/;\nconst isAbsoluteUrl = (url)=>ABSOLUTE_URL_REGEX.test(url);\nfunction getLocationOrigin() {\n const { protocol, hostname, port } = window.location;\n return protocol + \"//\" + hostname + (port ? ':' + port : '');\n}\nfunction getURL() {\n const { href } = window.location;\n const origin = getLocationOrigin();\n return href.substring(origin.length);\n}\nfunction getDisplayName(Component) {\n return typeof Component === 'string' ? Component : Component.displayName || Component.name || 'Unknown';\n}\nfunction isResSent(res) {\n return res.finished || res.headersSent;\n}\nfunction normalizeRepeatedSlashes(url) {\n const urlParts = url.split('?');\n const urlNoQuery = urlParts[0];\n return urlNoQuery // first we replace any non-encoded backslashes with forward\n // then normalize repeated forward slashes\n .replace(/\\\\/g, '/').replace(/\\/\\/+/g, '/') + (urlParts[1] ? \"?\" + urlParts.slice(1).join('?') : '');\n}\nasync function loadGetInitialProps(App, ctx) {\n if (true) {\n var _App_prototype;\n if ((_App_prototype = App.prototype) == null ? void 0 : _App_prototype.getInitialProps) {\n const message = '\"' + getDisplayName(App) + '.getInitialProps()\" is defined as an instance method - visit https://nextjs.org/docs/messages/get-initial-props-as-an-instance-method for more information.';\n throw Object.defineProperty(new Error(message), \"__NEXT_ERROR_CODE\", {\n value: \"E394\",\n enumerable: false,\n configurable: true\n });\n }\n }\n // when called from _app `ctx` is nested in `ctx`\n const res = ctx.res || ctx.ctx && ctx.ctx.res;\n if (!App.getInitialProps) {\n if (ctx.ctx && ctx.Component) {\n // @ts-ignore pageProps default\n return {\n pageProps: await loadGetInitialProps(ctx.Component, ctx.ctx)\n };\n }\n return {};\n }\n const props = await App.getInitialProps(ctx);\n if (res && isResSent(res)) {\n return props;\n }\n if (!props) {\n const message = '\"' + getDisplayName(App) + '.getInitialProps()\" should resolve to an object. But found \"' + props + '\" instead.';\n throw Object.defineProperty(new Error(message), \"__NEXT_ERROR_CODE\", {\n value: \"E394\",\n enumerable: false,\n configurable: true\n });\n }\n if (true) {\n if (Object.keys(props).length === 0 && !ctx.ctx) {\n console.warn(\"\" + getDisplayName(App) + \" returned an empty object from `getInitialProps`. This de-optimizes and prevents automatic static optimization. https://nextjs.org/docs/messages/empty-object-getInitialProps\");\n }\n }\n return props;\n}\nconst SP = typeof performance !== 'undefined';\nconst ST = SP && [\n 'mark',\n 'measure',\n 'getEntriesByName'\n].every((method)=>typeof performance[method] === 'function');\nclass DecodeError extends Error {\n}\nclass NormalizeError extends Error {\n}\nclass PageNotFoundError extends Error {\n constructor(page){\n super();\n this.code = 'ENOENT';\n this.name = 'PageNotFoundError';\n this.message = \"Cannot find module for page: \" + page;\n }\n}\nclass MissingStaticPage extends Error {\n constructor(page, message){\n super();\n this.message = \"Failed to load static file for page: \" + page + \" \" + message;\n }\n}\nclass MiddlewareNotFoundError extends Error {\n constructor(){\n super();\n this.code = 'ENOENT';\n this.message = \"Cannot find the middleware module\";\n }\n}\nfunction stringifyError(error) {\n return JSON.stringify({\n message: error.message,\n stack: error.stack\n });\n} //# sourceMappingURL=utils.js.map\n\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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3Qvc2hhcmVkL2xpYi91dGlscy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7SUFvYWFBLFdBQVc7ZUFBWEE7O0lBb0JBQyx1QkFBdUI7ZUFBdkJBOztJQVBBQyxpQkFBaUI7ZUFBakJBOztJQVpBQyxjQUFjO2VBQWRBOztJQUNBQyxpQkFBaUI7ZUFBakJBOztJQVRBQyxFQUFFO2VBQUZBOztJQUNBQyxFQUFFO2VBQUZBOztJQWxYQUMsVUFBVTtlQUFWQTs7SUFzUUdDLFFBQVE7ZUFBUkE7O0lBK0JBQyxjQUFjO2VBQWRBOztJQVhBQyxpQkFBaUI7ZUFBakJBOztJQUtBQyxNQUFNO2VBQU5BOztJQVBIQyxhQUFhO2VBQWJBOztJQW1CR0MsU0FBUztlQUFUQTs7SUFrQk1DLG1CQUFtQjtlQUFuQkE7O0lBZE5DLHdCQUF3QjtlQUF4QkE7O0lBK0dBQyxjQUFjO2VBQWRBOzs7QUE5WlQsTUFBTVQsYUFBYTtJQUFDO0lBQU87SUFBTztJQUFPO0lBQU87SUFBTztDQUFPO0FBc1E5RCxTQUFTQyxTQUNkUyxFQUFLO0lBRUwsSUFBSUMsT0FBTztJQUNYLElBQUlDO0lBRUosT0FBUTt5Q0FBSUMsT0FBQUEsSUFBQUEsTUFBQUEsT0FBQUEsT0FBQUEsR0FBQUEsT0FBQUEsTUFBQUEsT0FBQUE7WUFBQUEsSUFBQUEsQ0FBQUEsS0FBQUEsR0FBQUEsU0FBQUEsQ0FBQUEsS0FBQUE7O1FBQ1YsSUFBSSxDQUFDRixNQUFNO1lBQ1RBLE9BQU87WUFDUEMsU0FBU0YsTUFBTUc7UUFDakI7UUFDQSxPQUFPRDtJQUNUO0FBQ0Y7QUFFQSwwREFBMEQ7QUFDMUQsZ0VBQWdFO0FBQ2hFLE1BQU1FLHFCQUFxQjtBQUNwQixNQUFNVCxnQkFBZ0IsQ0FBQ1UsTUFBZ0JELG1CQUFtQkUsSUFBSSxDQUFDRDtBQUUvRCxTQUFTWjtJQUNkLE1BQU0sRUFBRWMsUUFBUSxFQUFFQyxRQUFRLEVBQUVDLElBQUksRUFBRSxH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QUksR0FBRztRQUNaLElBQUksQ0FBQzlCLElBQUksR0FBRztRQUNaLElBQUksQ0FBQ2lCLE9BQU8sR0FBSSxrQ0FBK0JZO0lBQ2pEO0FBQ0Y7QUFFTyxNQUFNOUQsMEJBQTBCbUQ7SUFDckNVLFlBQVlDLElBQVksRUFBRVosT0FBZSxDQUFFO1FBQ3pDLEtBQUs7UUFDTCxJQUFJLENBQUNBLE9BQU8sR0FBSSwwQ0FBdUNZLE9BQUssTUFBR1o7SUFDakU7QUFDRjtBQUVPLE1BQU1uRCxnQ0FBZ0NvRDtJQUUzQ1UsYUFBYztRQUNaLEtBQUs7UUFDTCxJQUFJLENBQUNFLElBQUksR0FBRztRQUNaLElBQUksQ0FBQ2IsT0FBTyxHQUFJO0lBQ2xCO0FBQ0Y7QUFXTyxTQUFTcEMsZUFBZWtELEtBQVk7SUFDekMsT0FBT0MsS0FBS0MsU0FBUyxDQUFDO1FBQUVoQixTQUFTYyxNQUFNZCxPQUFPO1FBQUVpQixPQUFPSCxNQUFNRyxLQUFLO0lBQUM7QUFDckUiLCJzb3VyY2VzIjpbIi9Vc2Vycy9qZXR0Y2hlbmcxMDE4L3NyYy9zaGFyZWQvbGliL3V0aWxzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgSHRtbFByb3BzIH0gZnJvbSAnLi9odG1sLWNvbnRleHQuc2hhcmVkLXJ1bnRpbWUnXG5pbXBvcnQgdHlwZSB7IENvbXBvbmVudFR5cGUsIEpTWCB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHR5cGUgeyBEb21haW5Mb2NhbGUgfSBmcm9tICcuLi8uLi9zZXJ2ZXIvY29uZmlnJ1xuaW1wb3J0IHR5cGUgeyBFbnYgfSBmcm9tICdAbmV4dC9lbnYnXG5pbXBvcnQgdHlwZSB7IEluY29taW5nTWVzc2FnZSwgU2VydmVyUmVzcG9uc2UgfSBmcm9tICdodHRwJ1xuaW1wb3J0IHR5cGUgeyBOZXh0Um91dGVyIH0gZnJvbSAnLi9yb3V0ZXIvcm91dGVyJ1xuaW1wb3J0IHR5cGUgeyBQYXJzZWRVcmxRdWVyeSB9IGZyb20gJ3F1ZXJ5c3RyaW5nJ1xuaW1wb3J0IHR5cGUgeyBQcmV2aWV3RGF0YSB9IGZyb20gJy4uLy4uL3R5cGVzJ1xuaW1wb3J0IHR5cGUgeyBDT01QSUxFUl9OQU1FUyB9IGZyb20gJy4vY29uc3RhbnRzJ1xuaW1wb3J0IHR5cGUgZnMgZnJvbSAnZnMnXG5cbmV4cG9ydCB0eXBlIE5leHRDb21wb25lbnRUeXBlPFxuICBDb250ZXh0IGV4dGVuZHMgQmFzZUNvbnRleHQgPSBOZXh0UGFnZUNvbnRleHQsXG4gIEluaXRpYWxQcm9wcyA9IHt9LFxuICBQcm9wcyA9IHt9LFxuPiA9IENvbXBvbmVudFR5cGU8UHJvcHM+ICYge1xuICAvKipcbiAgICogVXNlZCBmb3IgaW5pdGlhbCBwYWdlIGxvYWQgZGF0YSBwb3B1bGF0aW9uLiBEYXRhIHJldHVybmVkIGZyb20gYGdldEluaXRpYWxQcm9wc2AgaXMgc2VyaWFsaXplZCB3aGVuIHNlcnZlciByZW5kZXJlZC5cbiAgICogTWFrZSBzdXJlIHRvIHJldHVybiBwbGFpbiBgT2JqZWN0YCB3aXRob3V0IHVzaW5nIGBEYXRlYCwgYE1hcGAsIGBTZXRgLlxuICAgKiBAcGFyYW0gY29udGV4dCBDb250ZXh0IG9mIGBwYWdlYFxuICAgKi9cbiAgZ2V0SW5pdGlhbFByb3BzPyhjb250ZXh0OiBDb250ZXh0KTogSW5pdGlhbFByb3BzIHwgUHJvbWlzZTxJbml0aWFsUHJvcHM+XG59XG5cbmV4cG9ydCB0eXBlIERvY3VtZW50VHlwZSA9IE5leHRDb21wb25lbnRUeXBlPFxuICBEb2N1bWVudENvbnRleHQsXG4gIERvY3VtZW50SW5pdGlhbFByb3BzLFxuICBEb2N1bWVudFByb3BzXG4+XG5cbmV4cG9ydCB0eXBlIEFwcFR5cGU8UCA9IHt9PiA9IE5leHRDb21wb25lbnRUeXBlPFxuICBBcHBDb250ZXh0VHlwZSxcbiAgUCxcbiAgQXBwUHJvcHNUeXBlPGFueSwgUD5cbj5cblxuZXhwb3J0IHR5cGUgQXBwVHJlZVR5cGUgPSBDb21wb25lbnRUeXBlPFxuICBBcHBJbml0aWFsUHJvcHMgJiB7IFtuYW1lOiBzdHJpbmddOiBhbnkgfVxuPlxuXG4vKipcbiAqIFdlYiB2aXRhbHMgcHJvdmlkZWQgdG8gX2FwcC5yZXBvcnRXZWJWaXRhbHMgYnkgQ29yZSBXZWIgVml0YWxzIHBsdWdpbiBkZXZlbG9wZWQgYnkgR29vZ2xlIENocm9tZSB0ZWFtLlxuICogaHR0cHM6Ly9uZXh0anMub3JnL2Jsb2cvbmV4dC05LTQjaW50ZWdyYXRlZC13ZWItdml0YWxzLXJlcG9ydGluZ1xuICovXG5leHBvcnQgY29uc3QgV0VCX1ZJVEFMUyA9IFsnQ0xTJywgJ0ZDUCcsICdGSUQnLCAnSU5QJywgJ0xDUCcsICdUVEZCJ10gYXMgY29uc3RcbmV4cG9ydCB0eXBlIE5leHRXZWJWaXRhbHNNZXRyaWMgPSB7XG4gIGlkOiBzdHJpbmdcbiAgc3RhcnRUaW1lOiBudW1iZXJcbiAgdmFsdWU6IG51bWJlclxuICBhdHRyaWJ1dGlvbj86IHsgW2tleTogc3RyaW5nXTogdW5rbm93biB9XG59ICYgKFxuICB8IHtcbiAgICAgIGxhYmVsOiAnd2ViLXZpdGFsJ1xuICAgICAgbmFtZTogKHR5cGVvZiBXRUJfVklUQUxTKVtudW1iZXJdXG4gICAgfVxuICB8IHtcbiAgICAgIGxhYmVsOiAnY3VzdG9tJ1xuICAgICAgbmFtZTpcbiAgICAgICAgfCAnTmV4dC5qcy1oeWRyYXRpb24nXG4gICAgICAgIHwgJ05leHQuanMtcm91dGUtY2hhbmdlLXRvLXJlbmRlcidcbiAgICAgICAgfCAnTmV4dC5qcy1yZW5kZXInXG4gICAgfVxuKVxuXG5leHBvcnQgdHlwZSBFbmhhbmNlcjxDPiA9IChDb21wb25lbnQ6IEMpID0+IENcblxuZXhwb3J0IHR5cGUgQ29tcG9uZW50c0VuaGFuY2VyID1cbiAgfCB7XG4gICAgICBlbmhhbmNlQXBwPzogRW5oYW5jZXI8QXBwVHlwZT5cbiAgICAgIGVuaGFuY2VDb21wb25lbnQ/OiBFbmhhbmNlcjxOZXh0Q29tcG9uZW50VHlwZT5cbiAgICB9XG4gIHwgRW5oYW5jZXI8TmV4dENvbXBvbmVudFR5cGU+XG5cbmV4cG9ydCB0eXBlIFJlbmRlclBhZ2VSZXN1bHQgPSB7XG4gIGh0bWw6IHN0cmluZ1xuICBoZWFkPzogQXJyYXk8SlNYLkVsZW1lbnQgfCBudWxsPlxufVxuXG5leHBvcnQgdHlwZSBSZW5kZXJQYWdlID0gKFxuICBvcHRpb25zPzogQ29tcG9uZW50c0VuaGFuY2VyXG4pID0+IERvY3VtZW50SW5pdGlhbFByb3BzIHwgUHJvbWlzZTxEb2N1bWVudEluaXRpYWxQcm9wcz5cblxuZXhwb3J0IHR5cGUgQmFzZUNvbnRleHQgPSB7XG4gIHJlcz86IFNlcnZlclJlc3BvbnNlXG4gIFtrOiBzdHJpbmddOiBhbnlcbn1cblxuZXhwb3J0IHR5cGUgTkVYVF9EQVRBID0ge1xuICBwcm9wczogUmVjb3JkPHN0cmluZywgYW55PlxuICBwYWdlOiBzdHJpbmdcbiAgcXVlcnk6IFBhcnNlZFVybFF1ZXJ5XG4gIGJ1aWxkSWQ6IHN0cmluZ1xuICBhc3NldFByZWZpeD86IHN0cmluZ1xuICBydW50aW1lQ29uZmlnPzogeyBba2V5OiBzdHJpbmddOiBhbnkgfVxuICBuZXh0RXhwb3J0PzogYm9vbGVhblxuICBhdXRvRXhwb3J0PzogYm9vbGVhblxuICBpc0ZhbGxiYWNrPzogYm9vbGVhblxuICBpc0V4cGVyaW1lbnRhbENvbXBpbGU/OiBib29sZWFuXG4gIGR5bmFtaWNJZHM/OiAoc3RyaW5nIHwgbnVtYmVyKVtdXG4gIGVycj86IEVycm9yICYge1xuICAgIHN0YXR1c0NvZGU/OiBudW1iZXJcbiAgICBzb3VyY2U/OiB0eXBlb2YgQ09NUElMRVJfTkFNRVMuc2VydmVyIHwgdHlwZW9mIENPTVBJTEVSX05BTUVTLmVkZ2VTZXJ2ZXJcbiAgfVxuICBnc3A/OiBib29sZWFuXG4gIGdzc3A/OiBib29sZWFuXG4gIGN1c3RvbVNlcnZlcj86IGJvb2xlYW5cbiAgZ2lwPzogYm9vbGVhblxuICBhcHBHaXA/OiBib29sZWFuXG4gIGxvY2FsZT86IHN0cmluZ1xuICBsb2NhbGVzPzogcmVhZG9ubHkgc3RyaW5nW11cbiAgZGVmYXVsdExvY2FsZT86IHN0cmluZ1xuICBkb21haW5Mb2NhbGVzPzogcmVhZG9ubHkgRG9tYWluTG9jYWxlW11cbiAgc2NyaXB0TG9hZGVyPzogYW55W11cbiAgaXNQcmV2aWV3PzogYm9vbGVhblxuICBub3RGb3VuZFNyY1BhZ2U/OiBzdHJpbmdcbn1cblxuLyoqXG4gKiBgTmV4dGAgY29udGV4dFxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5leHRQYWdlQ29udGV4dCB7XG4gIC8qKlxuICAgKiBFcnJvciBvYmplY3QgaWYgZW5jb3VudGVyZWQgZHVyaW5nIHJlbmRlcmluZ1xuICAgKi9cbiAgZXJyPzogKEVycm9yICYgeyBzdGF0dXNDb2RlPzogbnVtYmVyIH0pIHwgbnVsbFxuICAvKipcbiAgICogYEhUVFBgIHJlcXVlc3Qgb2JqZWN0LlxuICAgKi9cbiAgcmVxPzogSW5jb21pbmdNZXNzYWdlXG4gIC8qKlxuICAgKiBgSFRUUGAgcmVzcG9uc2Ugb2JqZWN0LlxuICAgKi9cbiAgcmVzPzogU2VydmVyUmVzcG9uc2VcbiAgLyoqXG4gICAqIFBhdGggc2VjdGlvbiBvZiBgVVJMYC5cbiAgICovXG4gIHBhdGhuYW1lOiBzdHJpbmdcbiAgLyoqXG4gICAqIFF1ZXJ5IHN0cmluZyBzZWN0aW9uIG9mIGBVUkxgIHBhcnNlZCBhcyBhbiBvYmplY3QuXG4gICAqL1xuICBxdWVyeTogUGFyc2VkVXJsUXVlcnlcbiAgLyoqXG4gICAqIGBTdHJpbmdgIG9mIHRoZSBhY3R1YWwgcGF0aCBpbmNsdWRpbmcgcXVlcnkuXG4gICAqL1xuICBhc1BhdGg/OiBzdHJpbmdcbiAgLyoqXG4gICAqIFRoZSBjdXJyZW50bHkgYWN0aXZlIGxvY2FsZVxuICAgKi9cbiAgbG9jYWxlPzogc3RyaW5nXG4gIC8qKlxuICAgKiBBbGwgY29uZmlndXJlZCBsb2NhbGVzXG4gICAqL1xuICBsb2NhbGVzPzogcmVhZG9ubHkgc3RyaW5nW11cbiAgLyoqXG4gICAqIFRoZSBjb25maWd1cmVkIGRlZmF1bHQgbG9jYWxlXG4gICAqL1xuICBkZWZhdWx0TG9jYWxlPzogc3RyaW5nXG4gIC8qKlxuICAgKiBgQ29tcG9uZW50YCB0aGUgdHJlZSBvZiB0aGUgQXBwIHRvIHVzZSBpZiBuZWVkaW5nIHRvIHJlbmRlciBzZXBhcmF0ZWx5XG4gICAqL1xuICBBcHBUcmVlOiBBcHBUcmVlVHlwZVxufVxuXG5leHBvcnQgdHlwZSBBcHBDb250ZXh0VHlwZTxSb3V0ZXIgZXh0ZW5kcyBOZXh0Um91dGVyID0gTmV4dFJvdXRlcj4gPSB7XG4gIENvbXBvbmVudDogTmV4dENvbXBvbmVudFR5cGU8TmV4dFBhZ2VDb250ZXh0PlxuICBBcHBUcmVlOiBBcHBUcmVlVHlwZVxuICBjdHg6IE5leHRQYWdlQ29udGV4dFxuICByb3V0ZXI6IFJvdXRlclxufVxuXG5leHBvcnQgdHlwZSBBcHBJbml0aWFsUHJvcHM8UGFnZVByb3BzID0gYW55PiA9IHtcbiAgcGFnZVByb3BzOiBQYWdlUHJvcHNcbn1cblxuZXhwb3J0IHR5cGUgQXBwUHJvcHNUeXBlPFxuICBSb3V0ZXIgZXh0ZW5kcyBOZXh0Um91dGVyID0gTmV4dFJvdXRlcixcbiAgUGFnZVByb3BzID0ge30sXG4+ID0gQXBwSW5pdGlhbFByb3BzPFBhZ2VQcm9wcz4gJiB7XG4gIENvbXBvbmVudDogTmV4dENvbXBvbmVudFR5cGU8TmV4dFBhZ2VDb250ZXh0LCBhbnksIGFueT5cbiAgcm91dGVyOiBSb3V0ZXJcbiAgX19OX1NTRz86IGJvb2xlYW5cbiAgX19OX1NTUD86IGJvb2xlYW5cbn1cblxuZXhwb3J0IHR5cGUgRG9jdW1lbnRDb250ZXh0ID0gTmV4dFBhZ2VDb250ZXh0ICYge1xuICByZW5kZXJQYWdlOiBSZW5kZXJQYWdlXG4gIGRlZmF1bHRHZXRJbml0aWFsUHJvcHMoXG4gICAgY3R4OiBEb2N1bWVudENvbnRleHQsXG4gICAgb3B0aW9ucz86IHsgbm9uY2U/OiBzdHJpbmcgfVxuICApOiBQcm9taXNlPERvY3VtZW50SW5pdGlhbFByb3BzPlxufVxuXG5leHBvcnQgdHlwZSBEb2N1bWVudEluaXRpYWxQcm9wcyA9IFJlbmRlclBhZ2VSZXN1bHQgJiB7XG4gIHN0eWxlcz86IFJlYWN0LlJlYWN0RWxlbWVudFtdIHwgSXRlcmFibGU8UmVhY3QuUmVhY3ROb2RlPiB8IEpTWC5FbGVtZW50XG59XG5cbmV4cG9ydCB0eXBlIERvY3VtZW50UHJvcHMgPSBEb2N1bWVudEluaXRpYWxQcm9wcyAmIEh0bWxQcm9wc1xuXG4vKipcbiAqIE5leHQgYEFQSWAgcm91dGUgcmVxdWVzdFxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5leHRBcGlSZXF1ZXN0IGV4dGVuZHMgSW5jb21pbmdNZXNzYWdlIHtcbiAgLyoqXG4gICAqIE9iamVjdCBvZiBgcXVlcnlgIHZhbHVlcyBmcm9tIHVybFxuICAgKi9cbiAgcXVlcnk6IFBhcnRpYWw8e1xuICAgIFtrZXk6IHN0cmluZ106IHN0cmluZyB8IHN0cmluZ1tdXG4gIH0+XG4gIC8qKlxuICAgKiBPYmplY3Qgb2YgYGNvb2tpZXNgIGZyb20gaGVhZGVyXG4gICAqL1xuICBjb29raWVzOiBQYXJ0aWFsPHtcbiAgICBba2V5OiBzdHJpbmddOiBzdHJpbmdcbiAgfT5cblxuICBib2R5OiBhbnlcblxuICBlbnY6IEVudlxuXG4gIGRyYWZ0TW9kZT86IGJvb2xlYW5cblxuICBwcmV2aWV3PzogYm9vbGVhblxuICAvKipcbiAgICogUHJldmlldyBkYXRhIHNldCBvbiB0aGUgcmVxdWVzdCwgaWYgYW55XG4gICAqICovXG4gIHByZXZpZXdEYXRhPzogUHJldmlld0RhdGFcbn1cblxuLyoqXG4gKiBTZW5kIGJvZHkgb2YgcmVzcG9uc2VcbiAqL1xudHlwZSBTZW5kPFQ+ID0gKGJvZHk6IFQpID0+IHZvaWRcblxuLyoqXG4gKiBOZXh0IGBBUElgIHJvdXRlIHJlc3BvbnNlXG4gKi9cbmV4cG9ydCB0eXBlIE5leHRBcGlSZXNwb25zZTxEYXRhID0gYW55PiA9IFNlcnZlclJlc3BvbnNlICYge1xuICAvKipcbiAgICogU2VuZCBkYXRhIGBhbnlgIGRhdGEgaW4gcmVzcG9uc2VcbiAgICovXG4gIHNlbmQ6IFNlbmQ8RGF0YT5cbiAgLyoqXG4gICAqIFNlbmQgZGF0YSBganNvbmAgZGF0YSBpbiByZXNwb25zZVxuICAgKi9cbiAganNvbjogU2VuZDxEYXRhPlxuICBzdGF0dXM6IChzdGF0dXNDb2RlOiBudW1iZXIpID0+IE5leHRBcGlSZXNwb25zZTxEYXRhPlxuICByZWRpcmVjdCh1cmw6IHN0cmluZyk6IE5leHRBcGlSZXNwb25zZTxEYXRhPlxuICByZWRpcmVjdChzdGF0dXM6IG51bWJlciwgdXJsOiBzdHJpbmcpOiBOZXh0QXBpUmVzcG9uc2U8RGF0YT5cblxuICAvKipcbiAgICogU2V0IGRyYWZ0IG1vZGVcbiAgICovXG4gIHNldERyYWZ0TW9kZTogKG9wdGlvbnM6IHsgZW5hYmxlOiBib29sZWFuIH0pID0+IE5leHRBcGlSZXNwb25zZTxEYXRhPlxuXG4gIC8qKlxuICAgKiBTZXQgcHJldmlldyBkYXRhIGZvciBOZXh0LmpzJyBwcmVyZW5kZXIgbW9kZVxuICAgKi9cbiAgc2V0UHJldmlld0RhdGE6IChcbiAgICBkYXRhOiBvYmplY3QgfCBzdHJpbmcsXG4gICAgb3B0aW9ucz86IHtcbiAgICAgIC8qKlxuICAgICAgICogU3BlY2lmaWVzIHRoZSBudW1iZXIgKGluIHNlY29uZHMpIGZvciB0aGUgcHJldmlldyBzZXNzaW9uIHRvIGxhc3QgZm9yLlxuICAgICAgICogVGhlIGdpdmVuIG51bWJlciB3aWxsIGJlIGNvbnZlcnRlZCB0byBhbiBpbnRlZ2VyIGJ5IHJvdW5kaW5nIGRvd24uXG4gICAgICAgKiBCeSBkZWZhdWx0LCBubyBtYXhpbXVtIGFnZSBpcyBzZXQgYW5kIHRoZSBwcmV2aWV3IHNlc3Npb24gZmluaXNoZXNcbiAgICAgICAqIHdoZW4gdGhlIGNsaWVudCBzaHV0cyBkb3duIChicm93c2VyIGlzIGNsb3NlZCkuXG4gICAgICAgKi9cbiAgICAgIG1heEFnZT86IG51bWJlclxuICAgICAgLyoqXG4gICAgICAgKiBTcGVjaWZpZXMgdGhlIHBhdGggZm9yIHRoZSBwcmV2aWV3IHNlc3Npb24gdG8gd29yayB1bmRlci4gQnkgZGVmYXVsdCxcbiAgICAgICAqIHRoZSBwYXRoIGlzIGNvbnNpZGVyZWQgdGhlIFwiZGVmYXVsdCBwYXRoXCIsIGkuZS4sIGFueSBwYWdlcyB1bmRlciBcIi9cIi5cbiAgICAgICAqL1xuICAgICAgcGF0aD86IHN0cmluZ1xuICAgIH1cbiAgKSA9PiBOZXh0QXBpUmVzcG9uc2U8RGF0YT5cblxuICAvKipcbiAgICogQ2xlYXIgcHJldmlldyBkYXRhIGZvciBOZXh0LmpzJyBwcmVyZW5kZXIgbW9kZVxuICAgKi9cbiAgY2xlYXJQcmV2aWV3RGF0YTogKG9wdGlvbnM/OiB7IHBhdGg/OiBzdHJpbmcgfSkgPT4gTmV4dEFwaVJlc3BvbnNlPERhdGE+XG5cbiAgLyoqXG4gICAqIFJldmFsaWRhdGUgYSBzcGVjaWZpYyBwYWdlIGFuZCByZWdlbmVyYXRlIGl0IHVzaW5nIE9uLURlbWFuZCBJbmNyZW1lbnRhbFxuICAgKiBTdGF0aWMgUmVnZW5lcmF0aW9uLlxuICAgKiBUaGUgcGF0aCBzaG91bGQgYmUgYW4gYWN0dWFsIHBhdGgsIG5vdCBhIHJld3JpdHRlbiBwYXRoLiBFLmcuIGZvclxuICAgKiBcIi9ibG9nL1tzbHVnXVwiIHRoaXMgc2hvdWxkIGJlIFwiL2Jsb2cvcG9zdC0xXCIuXG4gICAqIEBsaW5rIGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL2FwcC9idWlsZGluZy15b3VyLWFwcGxpY2F0aW9uL2RhdGEtZmV0Y2hpbmcvaW5jcmVtZW50YWwtc3RhdGljLXJlZ2VuZXJhdGlvbiNvbi1kZW1hbmQtcmV2YWxpZGF0aW9uLXdpdGgtcmV2YWxpZGF0ZXBhdGhcbiAgICovXG4gIHJldmFsaWRhdGU6IChcbiAgICB1cmxQYXRoOiBzdHJpbmcsXG4gICAgb3B0cz86IHtcbiAgICAgIHVuc3RhYmxlX29ubHlHZW5lcmF0ZWQ/OiBib29sZWFuXG4gICAgfVxuICApID0+IFByb21pc2U8dm9pZD5cbn1cblxuLyoqXG4gKiBOZXh0IGBBUElgIHJvdXRlIGhhbmRsZXJcbiAqL1xuZXhwb3J0IHR5cGUgTmV4dEFwaUhhbmRsZXI8VCA9IGFueT4gPSAoXG4gIHJlcTogTmV4dEFwaVJlcXVlc3QsXG4gIHJlczogTmV4dEFwaVJlc3BvbnNlPFQ+XG4pID0+IHVua25vd24gfCBQcm9taXNlPHVua25vd24+XG5cbi8qKlxuICogVXRpbHNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGV4ZWNPbmNlPFQgZXh0ZW5kcyAoLi4uYXJnczogYW55W10pID0+IFJldHVyblR5cGU8VD4+KFxuICBmbjogVFxuKTogVCB7XG4gIGxldCB1c2VkID0gZmFsc2VcbiAgbGV0IHJlc3VsdDogUmV0dXJuVHlwZTxUPlxuXG4gIHJldHVybiAoKC4uLmFyZ3M6IGFueVtdKSA9PiB7XG4gICAgaWYgKCF1c2VkKSB7XG4gICAgICB1c2VkID0gdHJ1ZVxuICAgICAgcmVzdWx0ID0gZm4oLi4uYXJncylcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdFxuICB9KSBhcyBUXG59XG5cbi8vIFNjaGVtZTogaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzM5ODYjc2VjdGlvbi0zLjFcbi8vIEFic29sdXRlIFVSTDogaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzM5ODYjc2VjdGlvbi00LjNcbmNvbnN0IEFCU09MVVRFX1VSTF9SRUdFWCA9IC9eW2EtekEtWl1bYS16QS1aXFxkK1xcLS5dKj86L1xuZXhwb3J0IGNvbnN0IGlzQWJzb2x1dGVVcmwgPSAodXJsOiBzdHJpbmcpID0+IEFCU09MVVRFX1VSTF9SRUdFWC50ZXN0KHVybClcblxuZXhwb3J0IGZ1bmN0aW9uIGdldExvY2F0aW9uT3JpZ2luKCkge1xuICBjb25zdCB7IHByb3RvY29sLCBob3N0bmFtZSwgcG9ydCB9ID0gd2luZG93LmxvY2F0aW9uXG4gIHJldHVybiBgJHtwcm90b2NvbH0vLyR7aG9zdG5hbWV9JHtwb3J0ID8gJzonICsgcG9ydCA6ICcnfWBcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFVSTCgpIHtcbiAgY29uc3QgeyBocmVmIH0gPSB3aW5kb3cubG9jYXRpb25cbiAgY29uc3Qgb3JpZ2luID0gZ2V0TG9jYXRpb25PcmlnaW4oKVxuICByZXR1cm4gaHJlZi5zdWJzdHJpbmcob3JpZ2luLmxlbmd0aClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldERpc3BsYXlOYW1lPFA+KENvbXBvbmVudDogQ29tcG9uZW50VHlwZTxQPikge1xuICByZXR1cm4gdHlwZW9mIENvbXBvbmVudCA9PT0gJ3N0cmluZydcbiAgICA/IENvbXBvbmVudFxuICAgIDogQ29tcG9uZW50LmRpc3BsYXlOYW1lIHx8IENvbXBvbmVudC5uYW1lIHx8ICdVbmtub3duJ1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNSZXNTZW50KHJlczogU2VydmVyUmVzcG9uc2UpIHtcbiAgcmV0dXJuIHJlcy5maW5pc2hlZCB8fCByZXMuaGVhZGVyc1NlbnRcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZVJlcGVhdGVkU2xhc2hlcyh1cmw6IHN0cmluZykge1xuICBjb25zdCB1cmxQYXJ0cyA9IHVybC5zcGxpdCgnPycpXG4gIGNvbnN0IHVybE5vUXVlcnkgPSB1cmxQYXJ0c1swXVxuXG4gIHJldHVybiAoXG4gICAgdXJsTm9RdWVyeVxuICAgICAgLy8gZmlyc3Qgd2UgcmVwbGFjZSBhbnkgbm9uLWVuY29kZWQgYmFja3NsYXNoZXMgd2l0aCBmb3J3YXJkXG4gICAgICAvLyB0aGVuIG5vcm1hbGl6ZSByZXBlYXRlZCBmb3J3YXJkIHNsYXNoZXNcbiAgICAgIC5yZXBsYWNlKC9cXFxcL2csICcvJylcbiAgICAgIC5yZXBsYWNlKC9cXC9cXC8rL2csICcvJykgK1xuICAgICh1cmxQYXJ0c1sxXSA/IGA/JHt1cmxQYXJ0cy5zbGljZSgxKS5qb2luKCc/Jyl9YCA6ICcnKVxuICApXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBsb2FkR2V0SW5pdGlhbFByb3BzPFxuICBDIGV4dGVuZHMgQmFzZUNvbnRleHQsXG4gIElQID0ge30sXG4gIFAgPSB7fSxcbj4oQXBwOiBOZXh0Q29tcG9uZW50VHlwZTxDLCBJUCwgUD4sIGN0eDogQyk6IFByb21pc2U8SVA+IHtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICBpZiAoQXBwLnByb3RvdHlwZT8uZ2V0SW5pdGlhbFByb3BzKSB7XG4gICAgICBjb25zdCBtZXNzYWdlID0gYFwiJHtnZXREaXNwbGF5TmFtZShcbiAgICAgICAgQXBwXG4gICAgICApfS5nZXRJbml0aWFsUHJvcHMoKVwiIGlzIGRlZmluZWQgYXMgYW4gaW5zdGFuY2UgbWV0aG9kIC0gdmlzaXQgaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvbWVzc2FnZXMvZ2V0LWluaXRpYWwtcHJvcHMtYXMtYW4taW5zdGFuY2UtbWV0aG9kIGZvciBtb3JlIGluZm9ybWF0aW9uLmBcbiAgICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKVxuICAgIH1cbiAgfVxuICAvLyB3aGVuIGNhbGxlZCBmcm9tIF9hcHAgYGN0eGAgaXMgbmVzdGVkIGluIGBjdHhgXG4gIGNvbnN0IHJlcyA9IGN0eC5yZXMgfHwgKGN0eC5jdHggJiYgY3R4LmN0eC5yZXMpXG5cbiAgaWYgKCFBcHAuZ2V0SW5pdGlhbFByb3BzKSB7XG4gICAgaWYgKGN0eC5jdHggJiYgY3R4LkNvbXBvbmVudCkge1xuICAgICAgLy8gQHRzLWlnbm9yZSBwYWdlUHJvcHMgZGVmYXVsdFxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgcGFnZVByb3BzOiBhd2FpdCBsb2FkR2V0SW5pdGlhbFByb3BzKGN0eC5Db21wb25lbnQsIGN0eC5jdHgpLFxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4ge30gYXMgSVBcbiAgfVxuXG4gIGNvbnN0IHByb3BzID0gYXdhaXQgQXBwLmdldEluaXRpYWxQcm9wcyhjdHgpXG5cbiAgaWYgKHJlcyAmJiBpc1Jlc1NlbnQocmVzKSkge1xuICAgIHJldHVybiBwcm9wc1xuICB9XG5cbiAgaWYgKCFwcm9wcykge1xuICAgIGNvbnN0IG1lc3NhZ2UgPSBgXCIke2dldERpc3BsYXlOYW1lKFxuICAgICAgQXBwXG4gICAgKX0uZ2V0SW5pdGlhbFByb3BzKClcIiBzaG91bGQgcmVzb2x2ZSB0byBhbiBvYmplY3QuIEJ1dCBmb3VuZCBcIiR7cHJvcHN9XCIgaW5zdGVhZC5gXG4gICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpXG4gIH1cblxuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIGlmIChPYmplY3Qua2V5cyhwcm9wcykubGVuZ3RoID09PSAwICYmICFjdHguY3R4KSB7XG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgIGAke2dldERpc3BsYXlOYW1lKFxuICAgICAgICAgIEFwcFxuICAgICAgICApfSByZXR1cm5lZCBhbiBlbXB0eSBvYmplY3QgZnJvbSBcXGBnZXRJbml0aWFsUHJvcHNcXGAuIFRoaXMgZGUtb3B0aW1pemVzIGFuZCBwcmV2ZW50cyBhdXRvbWF0aWMgc3RhdGljIG9wdGltaXphdGlvbi4gaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvbWVzc2FnZXMvZW1wdHktb2JqZWN0LWdldEluaXRpYWxQcm9wc2BcbiAgICAgIClcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcHJvcHNcbn1cblxuZXhwb3J0IGNvbnN0IFNQID0gdHlwZW9mIHBlcmZvcm1hbmNlICE9PSAndW5kZWZpbmVkJ1xuZXhwb3J0IGNvbnN0IFNUID1cbiAgU1AgJiZcbiAgKFsnbWFyaycsICdtZWFzdXJlJywgJ2dldEVudHJpZXNCeU5hbWUnXSBhcyBjb25zdCkuZXZlcnkoXG4gICAgKG1ldGhvZCkgPT4gdHlwZW9mIHBlcmZvcm1hbmNlW21ldGhvZF0gPT09ICdmdW5jdGlvbidcbiAgKVxuXG5leHBvcnQgY2xhc3MgRGVjb2RlRXJyb3IgZXh0ZW5kcyBFcnJvciB7fVxuZXhwb3J0IGNsYXNzIE5vcm1hbGl6ZUVycm9yIGV4dGVuZHMgRXJyb3Ige31cbmV4cG9ydCBjbGFzcyBQYWdlTm90Rm91bmRFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgY29kZTogc3RyaW5nXG5cbiAgY29uc3RydWN0b3IocGFnZTogc3RyaW5nKSB7XG4gICAgc3VwZXIoKVxuICAgIHRoaXMuY29kZSA9ICdFTk9FTlQnXG4gICAgdGhpcy5uYW1lID0gJ1BhZ2VOb3RGb3VuZEVycm9yJ1xuICAgIHRoaXMubWVzc2FnZSA9IGBDYW5ub3QgZmluZCBtb2R1bGUgZm9yIHBhZ2U6ICR7cGFnZX1gXG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIE1pc3NpbmdTdGF0aWNQYWdlIGV4dGVuZHMgRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihwYWdlOiBzdHJpbmcsIG1lc3NhZ2U6IHN0cmluZykge1xuICAgIHN1cGVyKClcbiAgICB0aGlzLm1lc3NhZ2UgPSBgRmFpbGVkIHRvIGxvYWQgc3RhdGljIGZpbGUgZm9yIHBhZ2U6ICR7cGFnZX0gJHttZXNzYWdlfWBcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgTWlkZGxld2FyZU5vdEZvdW5kRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIGNvZGU6IHN0cmluZ1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpXG4gICAgdGhpcy5jb2RlID0gJ0VOT0VOVCdcbiAgICB0aGlzLm1lc3NhZ2UgPSBgQ2Fubm90IGZpbmQgdGhlIG1pZGRsZXdhcmUgbW9kdWxlYFxuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2FjaGVGcyB7XG4gIGV4aXN0c1N5bmM6IHR5cGVvZiBmcy5leGlzdHNTeW5jXG4gIHJlYWRGaWxlOiB0eXBlb2YgZnMucHJvbWlzZXMucmVhZEZpbGVcbiAgcmVhZEZpbGVTeW5jOiB0eXBlb2YgZnMucmVhZEZpbGVTeW5jXG4gIHdyaXRlRmlsZShmOiBzdHJpbmcsIGQ6IGFueSk6IFByb21pc2U8dm9pZD5cbiAgbWtkaXIoZGlyOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQgfCBzdHJpbmc+XG4gIHN0YXQoZjogc3RyaW5nKTogUHJvbWlzZTx7IG10aW1lOiBEYXRlIH0+XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdHJpbmdpZnlFcnJvcihlcnJvcjogRXJyb3IpIHtcbiAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHsgbWVzc2FnZTogZXJyb3IubWVzc2FnZSwgc3RhY2s6IGVycm9yLnN0YWNrIH0pXG59XG4iXSwibmFtZXMiOlsiRGVjb2RlRXJyb3IiLCJNaWRkbGV3YXJlTm90Rm91bmRFcnJvciIsIk1pc3NpbmdTdGF0aWNQYWdlIiwiTm9ybWFsaXplRXJyb3IiLCJQYWdlTm90Rm91bmRFcnJvciIsIlNQIiwiU1QiLCJXRUJfVklUQUxTIiwiZXhlY09uY2UiLCJnZXREaXNwbGF5TmFtZSIsImdldExvY2F0aW9uT3JpZ2luIiwiZ2V0VVJMIiwiaXNBYnNvbHV0ZVVybCIsImlzUmVzU2VudCIsImxvYWRHZXRJbml0aWFsUHJvcHMiLCJub3JtYWxpemVSZXBlYXRlZFNsYXNoZXMiLCJzdHJpbmdpZnlFcnJvciIsImZuIiwidXNlZCIsInJlc3VsdCIsImFyZ3MiLCJBQlNPTFVURV9VUkxfUkVHRVgiLCJ1cmwiLCJ0ZXN0IiwicHJvdG9jb2wiLCJob3N0bmFtZSIsInBvcnQiLCJ3aW5kb3ciLCJsb2NhdGlvbiIsImhyZWYiLCJvcmlnaW4iLCJzdWJzdHJpbmciLCJsZW5ndGgiLCJDb21wb25lbnQiLCJkaXNwbGF5TmFtZSIsIm5hbWUiLCJyZXMiLCJmaW5pc2hlZCIsImhlYWRlcnNTZW50IiwidXJsUGFydHMiLCJzcGxpdCIsInVybE5vUXVlcnkiLCJyZXBsYWNlIiwic2xpY2UiLCJqb2luIiwiQXBwIiwiY3R4IiwicHJvY2VzcyIsImVudiIsIk5PREVfRU5WIiwicHJvdG90eXBlIiwiZ2V0SW5pdGlhbFByb3BzIiwibWVzc2FnZSIsIkVycm9yIiwicGFnZVByb3BzIiwicHJvcHMiLCJPYmplY3QiLCJrZXlzIiwiY29uc29sZSIsIndhcm4iLCJwZXJmb3JtYW5jZSIsImV2ZXJ5IiwibWV0aG9kIiwiY29uc3RydWN0b3IiLCJwYWdlIiwiY29kZSIsImVycm9yIiwiSlNPTiIsInN0cmluZ2lmeSIsInN0YWNrIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/shared/lib/utils.js\n")); + +/***/ }), + +/***/ "(app-pages-browser)/./node_modules/next/dist/shared/lib/utils/error-once.js": +/*!***************************************************************!*\ + !*** ./node_modules/next/dist/shared/lib/utils/error-once.js ***! + \***************************************************************/ +/***/ ((module, exports, __webpack_require__) => { + +"use strict"; +eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"errorOnce\", ({\n enumerable: true,\n get: function() {\n return errorOnce;\n }\n}));\nlet errorOnce = (_)=>{};\nif (true) {\n const errors = new Set();\n errorOnce = (msg)=>{\n if (!errors.has(msg)) {\n console.error(msg);\n }\n errors.add(msg);\n };\n} //# sourceMappingURL=error-once.js.map\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3Qvc2hhcmVkL2xpYi91dGlscy9lcnJvci1vbmNlLmpzIiwibWFwcGluZ3MiOiI7Ozs7NkNBV1NBOzs7ZUFBQUE7OztBQVhULElBQUlBLFlBQVksQ0FBQ0MsS0FBZTtBQUNoQyxJQUFJQyxJQUFvQixFQUFtQjtJQUN6QyxNQUFNRyxTQUFTLElBQUlDO0lBQ25CTixZQUFZLENBQUNPO1FBQ1gsSUFBSSxDQUFDRixPQUFPRyxHQUFHLENBQUNELE1BQU07WUFDcEJFLFFBQVFDLEtBQUssQ0FBQ0g7UUFDaEI7UUFDQUYsT0FBT00sR0FBRyxDQUFDSjtJQUNiO0FBQ0YiLCJzb3VyY2VzIjpbIi9Vc2Vycy9zcmMvc2hhcmVkL2xpYi91dGlscy9lcnJvci1vbmNlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImxldCBlcnJvck9uY2UgPSAoXzogc3RyaW5nKSA9PiB7fVxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgY29uc3QgZXJyb3JzID0gbmV3IFNldDxzdHJpbmc+KClcbiAgZXJyb3JPbmNlID0gKG1zZzogc3RyaW5nKSA9PiB7XG4gICAgaWYgKCFlcnJvcnMuaGFzKG1zZykpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IobXNnKVxuICAgIH1cbiAgICBlcnJvcnMuYWRkKG1zZylcbiAgfVxufVxuXG5leHBvcnQgeyBlcnJvck9uY2UgfVxuIl0sIm5hbWVzIjpbImVycm9yT25jZSIsIl8iLCJwcm9jZXNzIiwiZW52IiwiTk9ERV9FTlYiLCJlcnJvcnMiLCJTZXQiLCJtc2ciLCJoYXMiLCJjb25zb2xlIiwiZXJyb3IiLCJhZGQiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/shared/lib/utils/error-once.js\n")); + +/***/ }) + +}, +/******/ __webpack_require__ => { // webpackRuntimeModules +/******/ var __webpack_exec__ = (moduleId) => (__webpack_require__(__webpack_require__.s = moduleId)) +/******/ __webpack_require__.O(0, ["main-app"], () => (__webpack_exec__("(app-pages-browser)/./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%7B%22request%22%3A%22%2FUsers%2Fjettcheng1018%2Fcode%2Fdramaling-vocab-learning%2Ffrontend%2Fapp%2Fgenerate%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"))); +/******/ var __webpack_exports__ = __webpack_require__.O(); +/******/ _N_E = __webpack_exports__; +/******/ } +]); \ No newline at end of file diff --git a/frontend/.next/static/chunks/app/layout.js b/frontend/.next/static/chunks/app/layout.js index 57fc539..9e54091 100644 --- a/frontend/.next/static/chunks/app/layout.js +++ b/frontend/.next/static/chunks/app/layout.js @@ -15,7 +15,7 @@ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; -eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (\"1a537eb5ba7b\");\nif (true) { module.hot.accept() }\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL2FwcC9nbG9iYWxzLmNzcyIsIm1hcHBpbmdzIjoiOzs7O0FBQUEsaUVBQWUsY0FBYztBQUM3QixJQUFJLElBQVUsSUFBSSxpQkFBaUIiLCJzb3VyY2VzIjpbIi9Vc2Vycy9qZXR0Y2hlbmcxMDE4L2NvZGUvZHJhbWFsaW5nLXZvY2FiLWxlYXJuaW5nL2Zyb250ZW5kL2FwcC9nbG9iYWxzLmNzcyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBcIjFhNTM3ZWI1YmE3YlwiXG5pZiAobW9kdWxlLmhvdCkgeyBtb2R1bGUuaG90LmFjY2VwdCgpIH1cbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./app/globals.css\n")); +eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (\"fdcd4ccf38fb\");\nif (true) { module.hot.accept() }\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL2FwcC9nbG9iYWxzLmNzcyIsIm1hcHBpbmdzIjoiOzs7O0FBQUEsaUVBQWUsY0FBYztBQUM3QixJQUFJLElBQVUsSUFBSSxpQkFBaUIiLCJzb3VyY2VzIjpbIi9Vc2Vycy9qZXR0Y2hlbmcxMDE4L2NvZGUvZHJhbWFsaW5nLXZvY2FiLWxlYXJuaW5nL2Zyb250ZW5kL2FwcC9nbG9iYWxzLmNzcyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBcImZkY2Q0Y2NmMzhmYlwiXG5pZiAobW9kdWxlLmhvdCkgeyBtb2R1bGUuaG90LmFjY2VwdCgpIH1cbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./app/globals.css\n")); /***/ }), diff --git a/frontend/.next/static/chunks/webpack.js b/frontend/.next/static/chunks/webpack.js index a5b1294..d6d6a46 100644 --- a/frontend/.next/static/chunks/webpack.js +++ b/frontend/.next/static/chunks/webpack.js @@ -182,7 +182,7 @@ /******/ /******/ /* webpack/runtime/getFullHash */ /******/ (() => { -/******/ __webpack_require__.h = () => ("2f372f747e2a80a6") +/******/ __webpack_require__.h = () => ("5b6833c08c682ad1") /******/ })(); /******/ /******/ /* webpack/runtime/global */ @@ -1401,5 +1401,5 @@ /******/ /******/ })() -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJpZ25vcmVMaXN0IjpbMF0sIm1hcHBpbmdzIjoiQUFBQSIsInNvdXJjZXMiOlsid2VicGFjay1pbnRlcm5hbDovL25leHRqcy93ZWJwYWNrLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFRoaXMgc291cmNlIHdhcyBnZW5lcmF0ZWQgYnkgTmV4dC5qcyBiYXNlZCBvZmYgb2YgdGhlIGdlbmVyYXRlZCBXZWJwYWNrIHJ1bnRpbWUuXG4vLyBUaGUgbWFwcGluZ3MgYXJlIGluY29ycmVjdC5cbi8vIFRvIGdldCB0aGUgY29ycmVjdCBsaW5lL2NvbHVtbiBtYXBwaW5ncywgdHVybiBvZmYgc291cmNlbWFwcyBpbiB5b3VyIGRlYnVnZ2VyLlxuXG4vKioqKioqLyAoKCkgPT4geyAvLyB3ZWJwYWNrQm9vdHN0cmFwXG4vKioqKioqLyBcdFwidXNlIHN0cmljdFwiO1xuLyoqKioqKi8gXHR2YXIgX193ZWJwYWNrX21vZHVsZXNfXyA9ICh7fSk7XG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqKioqKi8gXHQvLyBUaGUgbW9kdWxlIGNhY2hlXG4vKioqKioqLyBcdHZhciBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX18gPSB7fTtcbi8qKioqKiovIFx0XG4vKioqKioqLyBcdC8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG4vKioqKioqLyBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcbi8qKioqKiovIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbi8qKioqKiovIFx0XHR2YXIgY2FjaGVkTW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXTtcbi8qKioqKiovIFx0XHRpZiAoY2FjaGVkTW9kdWxlICE9PSB1bmRlZmluZWQpIHtcbi8qKioqKiovIFx0XHRcdGlmIChjYWNoZWRNb2R1bGUuZXJyb3IgIT09IHVuZGVmaW5lZCkgdGhyb3cgY2FjaGVkTW9kdWxlLmVycm9yO1xuLyoqKioqKi8gXHRcdFx0cmV0dXJuIGNhY2hlZE1vZHVsZS5leHBvcnRzO1xuLyoqKioqKi8gXHRcdH1cbi8qKioqKiovIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuLyoqKioqKi8gXHRcdHZhciBtb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdID0ge1xuLyoqKioqKi8gXHRcdFx0aWQ6IG1vZHVsZUlkLFxuLyoqKioqKi8gXHRcdFx0bG9hZGVkOiBmYWxzZSxcbi8qKioqKiovIFx0XHRcdGV4cG9ydHM6IHt9XG4vKioqKioqLyBcdFx0fTtcbi8qKioqKiovIFx0XG4vKioqKioqLyBcdFx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG4vKioqKioqLyBcdFx0dmFyIHRocmV3ID0gdHJ1ZTtcbi8qKioqKiovIFx0XHR0cnkge1xuLyoqKioqKi8gXHRcdFx0dmFyIGV4ZWNPcHRpb25zID0geyBpZDogbW9kdWxlSWQsIG1vZHVsZTogbW9kdWxlLCBmYWN0b3J5OiBfX3dlYnBhY2tfbW9kdWxlc19fW21vZHVsZUlkXSwgcmVxdWlyZTogX193ZWJwYWNrX3JlcXVpcmVfXyB9O1xuLyoqKioqKi8gXHRcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5pLmZvckVhY2goZnVuY3Rpb24oaGFuZGxlcikgeyBoYW5kbGVyKGV4ZWNPcHRpb25zKTsgfSk7XG4vKioqKioqLyBcdFx0XHRtb2R1bGUgPSBleGVjT3B0aW9ucy5tb2R1bGU7XG4vKioqKioqLyBcdFx0XHRleGVjT3B0aW9ucy5mYWN0b3J5LmNhbGwobW9kdWxlLmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIGV4ZWNPcHRpb25zLnJlcXVpcmUpO1xuLyoqKioqKi8gXHRcdFx0dGhyZXcgPSBmYWxzZTtcbi8qKioqKiovIFx0XHR9IGZpbmFsbHkge1xuLyoqKioqKi8gXHRcdFx0aWYodGhyZXcpIGRlbGV0ZSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdO1xuLyoqKioqKi8gXHRcdH1cbi8qKioqKiovIFx0XG4vKioqKioqLyBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuLyoqKioqKi8gXHRcdG1vZHVsZS5sb2FkZWQgPSB0cnVlO1xuLyoqKioqKi8gXHRcbi8qKioqKiovIFx0XHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuLyoqKioqKi8gXHRcdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbi8qKioqKiovIFx0fVxuLyoqKioqKi8gXHRcbi8qKioqKiovIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXylcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5tID0gX193ZWJwYWNrX21vZHVsZXNfXztcbi8qKioqKiovIFx0XG4vKioqKioqLyBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlIGNhY2hlXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18uYyA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfXztcbi8qKioqKiovIFx0XG4vKioqKioqLyBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlIGV4ZWN1dGlvbiBpbnRlcmNlcHRvclxuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmkgPSBbXTtcbi8qKioqKiovIFx0XG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqKioqKi8gXHQvKiB3ZWJwYWNrL3J1bnRpbWUvY2h1bmsgbG9hZGVkICovXG4vKioqKioqLyBcdCgoKSA9PiB7XG4vKioqKioqLyBcdFx0dmFyIGRlZmVycmVkID0gW107XG4vKioqKioqLyBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5PID0gKHJlc3VsdCwgY2h1bmtJZHMsIGZuLCBwcmlvcml0eSkgPT4ge1xuLyoqKioqKi8gXHRcdFx0aWYoY2h1bmtJZHMpIHtcbi8qKioqKiovIFx0XHRcdFx0cHJpb3JpdHkgPSBwcmlvcml0eSB8fCAwO1xuLyoqKioqKi8gXHRcdFx0XHRmb3IodmFyIGkgPSBkZWZlcnJlZC5sZW5ndGg7IGkgPiAwICYmIGRlZmVycmVkW2kgLSAxXVsyXSA+IHByaW9yaXR5OyBpLS0pIGRlZmVycmVkW2ldID0gZGVmZXJyZWRbaSAtIDFdO1xuLyoqKioqKi8gXHRcdFx0XHRkZWZlcnJlZFtpXSA9IFtjaHVua0lkcywgZm4sIHByaW9yaXR5XTtcbi8qKioqKiovIFx0XHRcdFx0cmV0dXJuO1xuLyoqKioqKi8gXHRcdFx0fVxuLyoqKioqKi8gXHRcdFx0dmFyIG5vdEZ1bGZpbGxlZCA9IEluZmluaXR5O1xuLyoqKioqKi8gXHRcdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCBkZWZlcnJlZC5sZW5ndGg7IGkrKykge1xuLyoqKioqKi8gXHRcdFx0XHR2YXIgW2NodW5rSWRzLCBmbiwgcHJpb3JpdHldID0gZGVmZXJyZWRbaV07XG4vKioqKioqLyBcdFx0XHRcdHZhciBmdWxmaWxsZWQgPSB0cnVlO1xuLyoqKioqKi8gXHRcdFx0XHRmb3IgKHZhciBqID0gMDsgaiA8IGNodW5rSWRzLmxlbmd0aDsgaisrKSB7XG4vKioqKioqLyBcdFx0XHRcdFx0aWYgKChwcmlvcml0eSAmIDEgPT09IDAgfHwgbm90RnVsZmlsbGVkID49IHByaW9yaXR5KSAmJiBPYmplY3Qua2V5cyhfX3dlYnBhY2tfcmVxdWlyZV9fLk8pLmV2ZXJ5KChrZXkpID0+IChfX3dlYnBhY2tfcmVxdWlyZV9fLk9ba2V5XShjaHVua0lkc1tqXSkpKSkge1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0Y2h1bmtJZHMuc3BsaWNlKGotLSwgMSk7XG4vKioqKioqLyBcdFx0XHRcdFx0fSBlbHNlIHtcbi8qKioqKiovIFx0XHRcdFx0XHRcdGZ1bGZpbGxlZCA9IGZhbHNlO1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0aWYocHJpb3JpdHkgPCBub3RGdWxmaWxsZWQpIG5vdEZ1bGZpbGxlZCA9IHByaW9yaXR5O1xuLyoqKioqKi8gXHRcdFx0XHRcdH1cbi8qKioqKiovIFx0XHRcdFx0fVxuLyoqKioqKi8gXHRcdFx0XHRpZihmdWxmaWxsZWQpIHtcbi8qKioqKiovIFx0XHRcdFx0XHRkZWZlcnJlZC5zcGxpY2UoaS0tLCAxKVxuLyoqKioqKi8gXHRcdFx0XHRcdHZhciByID0gZm4oKTtcbi8qKioqKiovIFx0XHRcdFx0XHRpZiAociAhPT0gdW5kZWZpbmVkKSByZXN1bHQgPSByO1xuLyoqKioqKi8gXHRcdFx0XHR9XG4vKioqKioqLyBcdFx0XHR9XG4vKioqKioqLyBcdFx0XHRyZXR1cm4gcmVzdWx0O1xuLyoqKioqKi8gXHRcdH07XG4vKioqKioqLyBcdH0pKCk7XG4vKioqKioqLyBcdFxuLyoqKioqKi8gXHQvKiB3ZWJwYWNrL3J1bnRpbWUvY29tcGF0IGdldCBkZWZhdWx0IGV4cG9ydCAqL1xuLyoqKioqKi8gXHQoKCkgPT4ge1xuLyoqKioqKi8gXHRcdC8vIGdldERlZmF1bHRFeHBvcnQgZnVuY3Rpb24gZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBub24taGFybW9ueSBtb2R1bGVzXG4vKioqKioqLyBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5uID0gKG1vZHVsZSkgPT4ge1xuLyoqKioqKi8gXHRcdFx0dmFyIGdldHRlciA9IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XG4vKioqKioqLyBcdFx0XHRcdCgpID0+IChtb2R1bGVbJ2RlZmF1bHQnXSkgOlxuLyoqKioqKi8gXHRcdFx0XHQoKSA9PiAobW9kdWxlKTtcbi8qKioqKiovIFx0XHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsIHsgYTogZ2V0dGVyIH0pO1xuLyoqKioqKi8gXHRcdFx0cmV0dXJuIGdldHRlcjtcbi8qKioqKiovIFx0XHR9O1xuLyoqKioqKi8gXHR9KSgpO1xuLyoqKioqKi8gXHRcbi8qKioqKiovIFx0Lyogd2VicGFjay9ydW50aW1lL2NyZWF0ZSBmYWtlIG5hbWVzcGFjZSBvYmplY3QgKi9cbi8qKioqKiovIFx0KCgpID0+IHtcbi8qKioqKiovIFx0XHR2YXIgZ2V0UHJvdG8gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YgPyAob2JqKSA9PiAoT2JqZWN0LmdldFByb3RvdHlwZU9mKG9iaikpIDogKG9iaikgPT4gKG9iai5fX3Byb3RvX18pO1xuLyoqKioqKi8gXHRcdHZhciBsZWFmUHJvdG90eXBlcztcbi8qKioqKiovIFx0XHQvLyBjcmVhdGUgYSBmYWtlIG5hbWVzcGFjZSBvYmplY3Rcbi8qKioqKiovIFx0XHQvLyBtb2RlICYgMTogdmFsdWUgaXMgYSBtb2R1bGUgaWQsIHJlcXVpcmUgaXRcbi8qKioqKiovIFx0XHQvLyBtb2RlICYgMjogbWVyZ2UgYWxsIHByb3BlcnRpZXMgb2YgdmFsdWUgaW50byB0aGUgbnNcbi8qKioqKiovIFx0XHQvLyBtb2RlICYgNDogcmV0dXJuIHZhbHVlIHdoZW4gYWxyZWFkeSBucyBvYmplY3Rcbi8qKioqKiovIFx0XHQvLyBtb2RlICYgMTY6IHJldHVybiB2YWx1ZSB3aGVuIGl0J3MgUHJvbWlzZS1saWtlXG4vKioqKioqLyBcdFx0Ly8gbW9kZSAmIDh8MTogYmVoYXZlIGxpa2UgcmVxdWlyZVxuLyoqKioqKi8gXHRcdF9fd2VicGFja19yZXF1aXJlX18udCA9IGZ1bmN0aW9uKHZhbHVlLCBtb2RlKSB7XG4vKioqKioqLyBcdFx0XHRpZihtb2RlICYgMSkgdmFsdWUgPSB0aGlzKHZhbHVlKTtcbi8qKioqKiovIFx0XHRcdGlmKG1vZGUgJiA4KSByZXR1cm4gdmFsdWU7XG4vKioqKioqLyBcdFx0XHRpZih0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHZhbHVlKSB7XG4vKioqKioqLyBcdFx0XHRcdGlmKChtb2RlICYgNCkgJiYgdmFsdWUuX19lc01vZHVsZSkgcmV0dXJuIHZhbHVlO1xuLyoqKioqKi8gXHRcdFx0XHRpZigobW9kZSAmIDE2KSAmJiB0eXBlb2YgdmFsdWUudGhlbiA9PT0gJ2Z1bmN0aW9uJykgcmV0dXJuIHZhbHVlO1xuLyoqKioqKi8gXHRcdFx0fVxuLyoqKioqKi8gXHRcdFx0dmFyIG5zID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbi8qKioqKiovIFx0XHRcdF9fd2VicGFja19yZXF1aXJlX18ucihucyk7XG4vKioqKioqLyBcdFx0XHR2YXIgZGVmID0ge307XG4vKioqKioqLyBcdFx0XHRsZWFmUHJvdG90eXBlcyA9IGxlYWZQcm90b3R5cGVzIHx8IFtudWxsLCBnZXRQcm90byh7fSksIGdldFByb3RvKFtdKSwgZ2V0UHJvdG8oZ2V0UHJvdG8pXTtcbi8qKioqKiovIFx0XHRcdGZvcih2YXIgY3VycmVudCA9IG1vZGUgJiAyICYmIHZhbHVlOyB0eXBlb2YgY3VycmVudCA9PSAnb2JqZWN0JyAmJiAhfmxlYWZQcm90b3R5cGVzLmluZGV4T2YoY3VycmVudCk7IGN1cnJlbnQgPSBnZXRQcm90byhjdXJyZW50KSkge1xuLyoqKioqKi8gXHRcdFx0XHRPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhjdXJyZW50KS5mb3JFYWNoKChrZXkpID0+IChkZWZba2V5XSA9ICgpID0+ICh2YWx1ZVtrZXldKSkpO1xuLyoqKioqKi8gXHRcdFx0fVxuLyoqKioqKi8gXHRcdFx0ZGVmWydkZWZhdWx0J10gPSAoKSA9PiAodmFsdWUpO1xuLyoqKioqKi8gXHRcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKG5zLCBkZWYpO1xuLyoqKioqKi8gXHRcdFx0cmV0dXJuIG5zO1xuLyoqKioqKi8gXHRcdH07XG4vKioqKioqLyBcdH0pKCk7XG4vKioqKioqLyBcdFxuLyoqKioqKi8gXHQvKiB3ZWJwYWNrL3J1bnRpbWUvZGVmaW5lIHByb3BlcnR5IGdldHRlcnMgKi9cbi8qKioqKiovIFx0KCgpID0+IHtcbi8qKioqKiovIFx0XHQvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9ucyBmb3IgaGFybW9ueSBleHBvcnRzXG4vKioqKioqLyBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kID0gKGV4cG9ydHMsIGRlZmluaXRpb24pID0+IHtcbi8qKioqKiovIFx0XHRcdGZvcih2YXIga2V5IGluIGRlZmluaXRpb24pIHtcbi8qKioqKiovIFx0XHRcdFx0aWYoX193ZWJwYWNrX3JlcXVpcmVfXy5vKGRlZmluaXRpb24sIGtleSkgJiYgIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBrZXkpKSB7XG4vKioqKioqLyBcdFx0XHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIGtleSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGRlZmluaXRpb25ba2V5XSB9KTtcbi8qKioqKiovIFx0XHRcdFx0fVxuLyoqKioqKi8gXHRcdFx0fVxuLyoqKioqKi8gXHRcdH07XG4vKioqKioqLyBcdH0pKCk7XG4vKioqKioqLyBcdFxuLyoqKioqKi8gXHQvKiB3ZWJwYWNrL3J1bnRpbWUvZW5zdXJlIGNodW5rICovXG4vKioqKioqLyBcdCgoKSA9PiB7XG4vKioqKioqLyBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5mID0ge307XG4vKioqKioqLyBcdFx0Ly8gVGhpcyBmaWxlIGNvbnRhaW5zIG9ubHkgdGhlIGVudHJ5IGNodW5rLlxuLyoqKioqKi8gXHRcdC8vIFRoZSBjaHVuayBsb2FkaW5nIGZ1bmN0aW9uIGZvciBhZGRpdGlvbmFsIGNodW5rc1xuLyoqKioqKi8gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZSA9IChjaHVua0lkKSA9PiB7XG4vKioqKioqLyBcdFx0XHRyZXR1cm4gUHJvbWlzZS5hbGwoT2JqZWN0LmtleXMoX193ZWJwYWNrX3JlcXVpcmVfXy5mKS5yZWR1Y2UoKHByb21pc2VzLCBrZXkpID0+IHtcbi8qKioqKiovIFx0XHRcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5mW2tleV0oY2h1bmtJZCwgcHJvbWlzZXMpO1xuLyoqKioqKi8gXHRcdFx0XHRyZXR1cm4gcHJvbWlzZXM7XG4vKioqKioqLyBcdFx0XHR9LCBbXSkpO1xuLyoqKioqKi8gXHRcdH07XG4vKioqKioqLyBcdH0pKCk7XG4vKioqKioqLyBcdFxuLyoqKioqKi8gXHQvKiB3ZWJwYWNrL3J1bnRpbWUvZ2V0IGphdmFzY3JpcHQgY2h1bmsgZmlsZW5hbWUgKi9cbi8qKioqKiovIFx0KCgpID0+IHtcbi8qKioqKiovIFx0XHQvLyBUaGlzIGZ1bmN0aW9uIGFsbG93IHRvIHJlZmVyZW5jZSBhc3luYyBjaHVua3Ncbi8qKioqKiovIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLnUgPSAoY2h1bmtJZCkgPT4ge1xuLyoqKioqKi8gXHRcdFx0Ly8gcmV0dXJuIHVybCBmb3IgZmlsZW5hbWVzIGJhc2VkIG9uIHRlbXBsYXRlXG4vKioqKioqLyBcdFx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuLyoqKioqKi8gXHRcdH07XG4vKioqKioqLyBcdH0pKCk7XG4vKioqKioqLyBcdFxuLyoqKioqKi8gXHQvKiB3ZWJwYWNrL3J1bnRpbWUvZ2V0IGphdmFzY3JpcHQgdXBkYXRlIGNodW5rIGZpbGVuYW1lICovXG4vKioqKioqLyBcdCgoKSA9PiB7XG4vKioqKioqLyBcdFx0Ly8gVGhpcyBmdW5jdGlvbiBhbGxvdyB0byByZWZlcmVuY2UgYWxsIGNodW5rc1xuLyoqKioqKi8gXHRcdF9fd2VicGFja19yZXF1aXJlX18uaHUgPSAoY2h1bmtJZCkgPT4ge1xuLyoqKioqKi8gXHRcdFx0Ly8gcmV0dXJuIHVybCBmb3IgZmlsZW5hbWVzIGJhc2VkIG9uIHRlbXBsYXRlXG4vKioqKioqLyBcdFx0XHRyZXR1cm4gXCJzdGF0aWMvd2VicGFjay9cIiArIGNodW5rSWQgKyBcIi5cIiArIF9fd2VicGFja19yZXF1aXJlX18uaCgpICsgXCIuaG90LXVwZGF0ZS5qc1wiO1xuLyoqKioqKi8gXHRcdH07XG4vKioqKioqLyBcdH0pKCk7XG4vKioqKioqLyBcdFxuLyoqKioqKi8gXHQvKiB3ZWJwYWNrL3J1bnRpbWUvZ2V0IG1pbmktY3NzIGNodW5rIGZpbGVuYW1lICovXG4vKioqKioqLyBcdCgoKSA9PiB7XG4vKioqKioqLyBcdFx0Ly8gVGhpcyBmdW5jdGlvbiBhbGxvdyB0byByZWZlcmVuY2UgYXN5bmMgY2h1bmtzXG4vKioqKioqLyBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5taW5pQ3NzRiA9IChjaHVua0lkKSA9PiB7XG4vKioqKioqLyBcdFx0XHQvLyByZXR1cm4gdXJsIGZvciBmaWxlbmFtZXMgYmFzZWQgb24gdGVtcGxhdGVcbi8qKioqKiovIFx0XHRcdHJldHVybiB1bmRlZmluZWQ7XG4vKioqKioqLyBcdFx0fTtcbi8qKioqKiovIFx0fSkoKTtcbi8qKioqKiovIFx0XG4vKioqKioqLyBcdC8qIHdlYnBhY2svcnVudGltZS9nZXQgdXBkYXRlIG1hbmlmZXN0IGZpbGVuYW1lICovXG4vKioqKioqLyBcdCgoKSA9PiB7XG4vKioqKioqLyBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5obXJGID0gKCkgPT4gKFwic3RhdGljL3dlYnBhY2svXCIgKyBfX3dlYnBhY2tfcmVxdWlyZV9fLmgoKSArIFwiLndlYnBhY2suaG90LXVwZGF0ZS5qc29uXCIpO1xuLyoqKioqKi8gXHR9KSgpO1xuLyoqKioqKi8gXHRcbi8qKioqKiovIFx0Lyogd2VicGFjay9ydW50aW1lL2dldEZ1bGxIYXNoICovXG4vKioqKioqLyBcdCgoKSA9PiB7XG4vKioqKioqLyBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5oID0gKCkgPT4gKFwiMmYzNzJmNzQ3ZTJhODBhNlwiKVxuLyoqKioqKi8gXHR9KSgpO1xuLyoqKioqKi8gXHRcbi8qKioqKiovIFx0Lyogd2VicGFjay9ydW50aW1lL2dsb2JhbCAqL1xuLyoqKioqKi8gXHQoKCkgPT4ge1xuLyoqKioqKi8gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZyA9IChmdW5jdGlvbigpIHtcbi8qKioqKiovIFx0XHRcdGlmICh0eXBlb2YgZ2xvYmFsVGhpcyA9PT0gJ29iamVjdCcpIHJldHVybiBnbG9iYWxUaGlzO1xuLyoqKioqKi8gXHRcdFx0dHJ5IHtcbi8qKioqKiovIFx0XHRcdFx0cmV0dXJuIHRoaXMgfHwgbmV3IEZ1bmN0aW9uKCdyZXR1cm4gdGhpcycpKCk7XG4vKioqKioqLyBcdFx0XHR9IGNhdGNoIChlKSB7XG4vKioqKioqLyBcdFx0XHRcdGlmICh0eXBlb2Ygd2luZG93ID09PSAnb2JqZWN0JykgcmV0dXJuIHdpbmRvdztcbi8qKioqKiovIFx0XHRcdH1cbi8qKioqKiovIFx0XHR9KSgpO1xuLyoqKioqKi8gXHR9KSgpO1xuLyoqKioqKi8gXHRcbi8qKioqKiovIFx0Lyogd2VicGFjay9ydW50aW1lL2hhc093blByb3BlcnR5IHNob3J0aGFuZCAqL1xuLyoqKioqKi8gXHQoKCkgPT4ge1xuLyoqKioqKi8gXHRcdF9fd2VicGFja19yZXF1aXJlX18ubyA9IChvYmosIHByb3ApID0+IChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBwcm9wKSlcbi8qKioqKiovIFx0fSkoKTtcbi8qKioqKiovIFx0XG4vKioqKioqLyBcdC8qIHdlYnBhY2svcnVudGltZS9sb2FkIHNjcmlwdCAqL1xuLyoqKioqKi8gXHQoKCkgPT4ge1xuLyoqKioqKi8gXHRcdHZhciBpblByb2dyZXNzID0ge307XG4vKioqKioqLyBcdFx0dmFyIGRhdGFXZWJwYWNrUHJlZml4ID0gXCJfTl9FOlwiO1xuLyoqKioqKi8gXHRcdC8vIGxvYWRTY3JpcHQgZnVuY3Rpb24gdG8gbG9hZCBhIHNjcmlwdCB2aWEgc2NyaXB0IHRhZ1xuLyoqKioqKi8gXHRcdF9fd2VicGFja19yZXF1aXJlX18ubCA9ICh1cmwsIGRvbmUsIGtleSwgY2h1bmtJZCkgPT4ge1xuLyoqKioqKi8gXHRcdFx0aWYoaW5Qcm9ncmVzc1t1cmxdKSB7IGluUHJvZ3Jlc3NbdXJsXS5wdXNoKGRvbmUpOyByZXR1cm47IH1cbi8qKioqKiovIFx0XHRcdHZhciBzY3JpcHQsIG5lZWRBdHRhY2g7XG4vKioqKioqLyBcdFx0XHRpZihrZXkgIT09IHVuZGVmaW5lZCkge1xuLyoqKioqKi8gXHRcdFx0XHR2YXIgc2NyaXB0cyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKFwic2NyaXB0XCIpO1xuLyoqKioqKi8gXHRcdFx0XHRmb3IodmFyIGkgPSAwOyBpIDwgc2NyaXB0cy5sZW5ndGg7IGkrKykge1xuLyoqKioqKi8gXHRcdFx0XHRcdHZhciBzID0gc2NyaXB0c1tpXTtcbi8qKioqKiovIFx0XHRcdFx0XHRpZihzLmdldEF0dHJpYnV0ZShcInNyY1wiKSA9PSB1cmwgfHwgcy5nZXRBdHRyaWJ1dGUoXCJkYXRhLXdlYnBhY2tcIikgPT0gZGF0YVdlYnBhY2tQcmVmaXggKyBrZXkpIHsgc2NyaXB0ID0gczsgYnJlYWs7IH1cbi8qKioqKiovIFx0XHRcdFx0fVxuLyoqKioqKi8gXHRcdFx0fVxuLyoqKioqKi8gXHRcdFx0aWYoIXNjcmlwdCkge1xuLyoqKioqKi8gXHRcdFx0XHRuZWVkQXR0YWNoID0gdHJ1ZTtcbi8qKioqKiovIFx0XHRcdFx0c2NyaXB0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7XG4vKioqKioqLyBcdFx0XG4vKioqKioqLyBcdFx0XHRcdHNjcmlwdC5jaGFyc2V0ID0gJ3V0Zi04Jztcbi8qKioqKiovIFx0XHRcdFx0c2NyaXB0LnRpbWVvdXQgPSAxMjA7XG4vKioqKioqLyBcdFx0XHRcdGlmIChfX3dlYnBhY2tfcmVxdWlyZV9fLm5jKSB7XG4vKioqKioqLyBcdFx0XHRcdFx0c2NyaXB0LnNldEF0dHJpYnV0ZShcIm5vbmNlXCIsIF9fd2VicGFja19yZXF1aXJlX18ubmMpO1xuLyoqKioqKi8gXHRcdFx0XHR9XG4vKioqKioqLyBcdFx0XHRcdHNjcmlwdC5zZXRBdHRyaWJ1dGUoXCJkYXRhLXdlYnBhY2tcIiwgZGF0YVdlYnBhY2tQcmVmaXggKyBrZXkpO1xuLyoqKioqKi8gXHRcdFxuLyoqKioqKi8gXHRcdFx0XHRzY3JpcHQuc3JjID0gX193ZWJwYWNrX3JlcXVpcmVfXy50dSh1cmwpO1xuLyoqKioqKi8gXHRcdFx0fVxuLyoqKioqKi8gXHRcdFx0aW5Qcm9ncmVzc1t1cmxdID0gW2RvbmVdO1xuLyoqKioqKi8gXHRcdFx0dmFyIG9uU2NyaXB0Q29tcGxldGUgPSAocHJldiwgZXZlbnQpID0+IHtcbi8qKioqKiovIFx0XHRcdFx0Ly8gYXZvaWQgbWVtIGxlYWtzIGluIElFLlxuLyoqKioqKi8gXHRcdFx0XHRzY3JpcHQub25lcnJvciA9IHNjcmlwdC5vbmxvYWQgPSBudWxsO1xuLyoqKioqKi8gXHRcdFx0XHRjbGVhclRpbWVvdXQodGltZW91dCk7XG4vKioqKioqLyBcdFx0XHRcdHZhciBkb25lRm5zID0gaW5Qcm9ncmVzc1t1cmxdO1xuLyoqKioqKi8gXHRcdFx0XHRkZWxldGUgaW5Qcm9ncmVzc1t1cmxdO1xuLyoqKioqKi8gXHRcdFx0XHRzY3JpcHQucGFyZW50Tm9kZSAmJiBzY3JpcHQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChzY3JpcHQpO1xuLyoqKioqKi8gXHRcdFx0XHRkb25lRm5zICYmIGRvbmVGbnMuZm9yRWFjaCgoZm4pID0+IChmbihldmVudCkpKTtcbi8qKioqKiovIFx0XHRcdFx0aWYocHJldikgcmV0dXJuIHByZXYoZXZlbnQpO1xuLyoqKioqKi8gXHRcdFx0fVxuLyoqKioqKi8gXHRcdFx0dmFyIHRpbWVvdXQgPSBzZXRUaW1lb3V0KG9uU2NyaXB0Q29tcGxldGUuYmluZChudWxsLCB1bmRlZmluZWQsIHsgdHlwZTogJ3RpbWVvdXQnLCB0YXJnZXQ6IHNjcmlwdCB9KSwgMTIwMDAwKTtcbi8qKioqKiovIFx0XHRcdHNjcmlwdC5vbmVycm9yID0gb25TY3JpcHRDb21wbGV0ZS5iaW5kKG51bGwsIHNjcmlwdC5vbmVycm9yKTtcbi8qKioqKiovIFx0XHRcdHNjcmlwdC5vbmxvYWQgPSBvblNjcmlwdENvbXBsZXRlLmJpbmQobnVsbCwgc2NyaXB0Lm9ubG9hZCk7XG4vKioqKioqLyBcdFx0XHRuZWVkQXR0YWNoICYmIGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoc2NyaXB0KTtcbi8qKioqKiovIFx0XHR9O1xuLyoqKioqKi8gXHR9KSgpO1xuLyoqKioqKi8gXHRcbi8qKioqKiovIFx0Lyogd2VicGFjay9ydW50aW1lL21ha2UgbmFtZXNwYWNlIG9iamVjdCAqL1xuLyoqKioqKi8gXHQoKCkgPT4ge1xuLyoqKioqKi8gXHRcdC8vIGRlZmluZSBfX2VzTW9kdWxlIG9uIGV4cG9ydHNcbi8qKioqKiovIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSAoZXhwb3J0cykgPT4ge1xuLyoqKioqKi8gXHRcdFx0aWYodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnRvU3RyaW5nVGFnKSB7XG4vKioqKioqLyBcdFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuLyoqKioqKi8gXHRcdFx0fVxuLyoqKioqKi8gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbi8qKioqKiovIFx0XHR9O1xuLyoqKioqKi8gXHR9KSgpO1xuLyoqKioqKi8gXHRcbi8qKioqKiovIFx0Lyogd2VicGFjay9ydW50aW1lL25vZGUgbW9kdWxlIGRlY29yYXRvciAqL1xuLyoqKioqKi8gXHQoKCkgPT4ge1xuLyoqKioqKi8gXHRcdF9fd2VicGFja19yZXF1aXJlX18ubm1kID0gKG1vZHVsZSkgPT4ge1xuLyoqKioqKi8gXHRcdFx0bW9kdWxlLnBhdGhzID0gW107XG4vKioqKioqLyBcdFx0XHRpZiAoIW1vZHVsZS5jaGlsZHJlbikgbW9kdWxlLmNoaWxkcmVuID0gW107XG4vKioqKioqLyBcdFx0XHRyZXR1cm4gbW9kdWxlO1xuLyoqKioqKi8gXHRcdH07XG4vKioqKioqLyBcdH0pKCk7XG4vKioqKioqLyBcdFxuLyoqKioqKi8gXHQvKiB3ZWJwYWNrL3J1bnRpbWUvdHJ1c3RlZCB0eXBlcyBwb2xpY3kgKi9cbi8qKioqKiovIFx0KCgpID0+IHtcbi8qKioqKiovIFx0XHR2YXIgcG9saWN5O1xuLyoqKioqKi8gXHRcdF9fd2VicGFja19yZXF1aXJlX18udHQgPSAoKSA9PiB7XG4vKioqKioqLyBcdFx0XHQvLyBDcmVhdGUgVHJ1c3RlZCBUeXBlIHBvbGljeSBpZiBUcnVzdGVkIFR5cGVzIGFyZSBhdmFpbGFibGUgYW5kIHRoZSBwb2xpY3kgZG9lc24ndCBleGlzdCB5ZXQuXG4vKioqKioqLyBcdFx0XHRpZiAocG9saWN5ID09PSB1bmRlZmluZWQpIHtcbi8qKioqKiovIFx0XHRcdFx0cG9saWN5ID0ge1xuLyoqKioqKi8gXHRcdFx0XHRcdGNyZWF0ZVNjcmlwdDogKHNjcmlwdCkgPT4gKHNjcmlwdCksXG4vKioqKioqLyBcdFx0XHRcdFx0Y3JlYXRlU2NyaXB0VVJMOiAodXJsKSA9PiAodXJsKVxuLyoqKioqKi8gXHRcdFx0XHR9O1xuLyoqKioqKi8gXHRcdFx0XHRpZiAodHlwZW9mIHRydXN0ZWRUeXBlcyAhPT0gXCJ1bmRlZmluZWRcIiAmJiB0cnVzdGVkVHlwZXMuY3JlYXRlUG9saWN5KSB7XG4vKioqKioqLyBcdFx0XHRcdFx0cG9saWN5ID0gdHJ1c3RlZFR5cGVzLmNyZWF0ZVBvbGljeShcIm5leHRqcyNidW5kbGVyXCIsIHBvbGljeSk7XG4vKioqKioqLyBcdFx0XHRcdH1cbi8qKioqKiovIFx0XHRcdH1cbi8qKioqKiovIFx0XHRcdHJldHVybiBwb2xpY3k7XG4vKioqKioqLyBcdFx0fTtcbi8qKioqKiovIFx0fSkoKTtcbi8qKioqKiovIFx0XG4vKioqKioqLyBcdC8qIHdlYnBhY2svcnVudGltZS90cnVzdGVkIHR5cGVzIHNjcmlwdCAqL1xuLyoqKioqKi8gXHQoKCkgPT4ge1xuLyoqKioqKi8gXHRcdF9fd2VicGFja19yZXF1aXJlX18udHMgPSAoc2NyaXB0KSA9PiAoX193ZWJwYWNrX3JlcXVpcmVfXy50dCgpLmNyZWF0ZVNjcmlwdChzY3JpcHQpKTtcbi8qKioqKiovIFx0fSkoKTtcbi8qKioqKiovIFx0XG4vKioqKioqLyBcdC8qIHdlYnBhY2svcnVudGltZS90cnVzdGVkIHR5cGVzIHNjcmlwdCB1cmwgKi9cbi8qKioqKiovIFx0KCgpID0+IHtcbi8qKioqKiovIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLnR1ID0gKHVybCkgPT4gKF9fd2VicGFja19yZXF1aXJlX18udHQoKS5jcmVhdGVTY3JpcHRVUkwodXJsKSk7XG4vKioqKioqLyBcdH0pKCk7XG4vKioqKioqLyBcdFxuLyoqKioqKi8gXHQvKiB3ZWJwYWNrL3J1bnRpbWUvaG90IG1vZHVsZSByZXBsYWNlbWVudCAqL1xuLyoqKioqKi8gXHQoKCkgPT4ge1xuLyoqKioqKi8gXHRcdHZhciBjdXJyZW50TW9kdWxlRGF0YSA9IHt9O1xuLyoqKioqKi8gXHRcdHZhciBpbnN0YWxsZWRNb2R1bGVzID0gX193ZWJwYWNrX3JlcXVpcmVfXy5jO1xuLyoqKioqKi8gXHRcdFxuLyoqKioqKi8gXHRcdC8vIG1vZHVsZSBhbmQgcmVxdWlyZSBjcmVhdGlvblxuLyoqKioqKi8gXHRcdHZhciBjdXJyZW50Q2hpbGRNb2R1bGU7XG4vKioqKioqLyBcdFx0dmFyIGN1cnJlbnRQYXJlbnRzID0gW107XG4vKioqKioqLyBcdFx0XG4vKioqKioqLyBcdFx0Ly8gc3RhdHVzXG4vKioqKioqLyBcdFx0dmFyIHJlZ2lzdGVyZWRTdGF0dXNIYW5kbGVycyA9IFtdO1xuLyoqKioqKi8gXHRcdHZhciBjdXJyZW50U3RhdHVzID0gXCJpZGxlXCI7XG4vKioqKioqLyBcdFx0XG4vKioqKioqLyBcdFx0Ly8gd2hpbGUgZG93bmxvYWRpbmdcbi8qKioqKiovIFx0XHR2YXIgYmxvY2tpbmdQcm9taXNlcyA9IDA7XG4vKioqKioqLyBcdFx0dmFyIGJsb2NraW5nUHJvbWlzZXNXYWl0aW5nID0gW107XG4vKioqKioqLyBcdFx0XG4vKioqKioqLyBcdFx0Ly8gVGhlIHVwZGF0ZSBpbmZvXG4vKioqKioqLyBcdFx0dmFyIGN1cnJlbnRVcGRhdGVBcHBseUhhbmRsZXJzO1xuLyoqKioqKi8gXHRcdHZhciBxdWV1ZWRJbnZhbGlkYXRlZE1vZHVsZXM7XG4vKioqKioqLyBcdFx0XG4vKioqKioqLyBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5obXJEID0gY3VycmVudE1vZHVsZURhdGE7XG4vKioqKioqLyBcdFx0XG4vKioqKioqLyBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5pLnB1c2goZnVuY3Rpb24gKG9wdGlvbnMpIHtcbi8qKioqKiovIFx0XHRcdHZhciBtb2R1bGUgPSBvcHRpb25zLm1vZHVsZTtcbi8qKioqKiovIFx0XHRcdHZhciByZXF1aXJlID0gY3JlYXRlUmVxdWlyZShvcHRpb25zLnJlcXVpcmUsIG9wdGlvbnMuaWQpO1xuLyoqKioqKi8gXHRcdFx0bW9kdWxlLmhvdCA9IGNyZWF0ZU1vZHVsZUhvdE9iamVjdChvcHRpb25zLmlkLCBtb2R1bGUpO1xuLyoqKioqKi8gXHRcdFx0bW9kdWxlLnBhcmVudHMgPSBjdXJyZW50UGFyZW50cztcbi8qKioqKiovIFx0XHRcdG1vZHVsZS5jaGlsZHJlbiA9IFtdO1xuLyoqKioqKi8gXHRcdFx0Y3VycmVudFBhcmVudHMgPSBbXTtcbi8qKioqKiovIFx0XHRcdG9wdGlvbnMucmVxdWlyZSA9IHJlcXVpcmU7XG4vKioqKioqLyBcdFx0fSk7XG4vKioqKioqLyBcdFx0XG4vKioqKioqLyBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5obXJDID0ge307XG4vKioqKioqLyBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5obXJJID0ge307XG4vKioqKioqLyBcdFx0XG4vKioqKioqLyBcdFx0ZnVuY3Rpb24gY3JlYXRlUmVxdWlyZShyZXF1aXJlLCBtb2R1bGVJZCkge1xuLyoqKioqKi8gXHRcdFx0dmFyIG1lID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF07XG4vKioqKioqLyBcdFx0XHRpZiAoIW1lKSByZXR1cm4gcmVxdWlyZTtcbi8qKioqKiovIFx0XHRcdHZhciBmbiA9IGZ1bmN0aW9uIChyZXF1ZXN0KSB7XG4vKioqKioqLyBcdFx0XHRcdGlmIChtZS5ob3QuYWN0aXZlKSB7XG4vKioqKioqLyBcdFx0XHRcdFx0aWYgKGluc3RhbGxlZE1vZHVsZXNbcmVxdWVzdF0pIHtcbi8qKioqKiovIFx0XHRcdFx0XHRcdHZhciBwYXJlbnRzID0gaW5zdGFsbGVkTW9kdWxlc1tyZXF1ZXN0XS5wYXJlbnRzO1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0aWYgKHBhcmVudHMuaW5kZXhPZihtb2R1bGVJZCkgPT09IC0xKSB7XG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdHBhcmVudHMucHVzaChtb2R1bGVJZCk7XG4vKioqKioqLyBcdFx0XHRcdFx0XHR9XG4vKioqKioqLyBcdFx0XHRcdFx0fSBlbHNlIHtcbi8qKioqKiovIFx0XHRcdFx0XHRcdGN1cnJlbnRQYXJlbnRzID0gW21vZHVsZUlkXTtcbi8qKioqKiovIFx0XHRcdFx0XHRcdGN1cnJlbnRDaGlsZE1vZHVsZSA9IHJlcXVlc3Q7XG4vKioqKioqLyBcdFx0XHRcdFx0fVxuLyoqKioqKi8gXHRcdFx0XHRcdGlmIChtZS5jaGlsZHJlbi5pbmRleE9mKHJlcXVlc3QpID09PSAtMSkge1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0bWUuY2hpbGRyZW4ucHVzaChyZXF1ZXN0KTtcbi8qKioqKiovIFx0XHRcdFx0XHR9XG4vKioqKioqLyBcdFx0XHRcdH0gZWxzZSB7XG4vKioqKioqLyBcdFx0XHRcdFx0Y29uc29sZS53YXJuKFxuLyoqKioqKi8gXHRcdFx0XHRcdFx0XCJbSE1SXSB1bmV4cGVjdGVkIHJlcXVpcmUoXCIgK1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHRyZXF1ZXN0ICtcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0XCIpIGZyb20gZGlzcG9zZWQgbW9kdWxlIFwiICtcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0bW9kdWxlSWRcbi8qKioqKiovIFx0XHRcdFx0XHQpO1xuLyoqKioqKi8gXHRcdFx0XHRcdGN1cnJlbnRQYXJlbnRzID0gW107XG4vKioqKioqLyBcdFx0XHRcdH1cbi8qKioqKiovIFx0XHRcdFx0cmV0dXJuIHJlcXVpcmUocmVxdWVzdCk7XG4vKioqKioqLyBcdFx0XHR9O1xuLyoqKioqKi8gXHRcdFx0dmFyIGNyZWF0ZVByb3BlcnR5RGVzY3JpcHRvciA9IGZ1bmN0aW9uIChuYW1lKSB7XG4vKioqKioqLyBcdFx0XHRcdHJldHVybiB7XG4vKioqKioqLyBcdFx0XHRcdFx0Y29uZmlndXJhYmxlOiB0cnVlLFxuLyoqKioqKi8gXHRcdFx0XHRcdGVudW1lcmFibGU6IHRydWUsXG4vKioqKioqLyBcdFx0XHRcdFx0Z2V0OiBmdW5jdGlvbiAoKSB7XG4vKioqKioqLyBcdFx0XHRcdFx0XHRyZXR1cm4gcmVxdWlyZVtuYW1lXTtcbi8qKioqKiovIFx0XHRcdFx0XHR9LFxuLyoqKioqKi8gXHRcdFx0XHRcdHNldDogZnVuY3Rpb24gKHZhbHVlKSB7XG4vKioqKioqLyBcdFx0XHRcdFx0XHRyZXF1aXJlW25hbWVdID0gdmFsdWU7XG4vKioqKioqLyBcdFx0XHRcdFx0fVxuLyoqKioqKi8gXHRcdFx0XHR9O1xuLyoqKioqKi8gXHRcdFx0fTtcbi8qKioqKiovIFx0XHRcdGZvciAodmFyIG5hbWUgaW4gcmVxdWlyZSkge1xuLyoqKioqKi8gXHRcdFx0XHRpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHJlcXVpcmUsIG5hbWUpICYmIG5hbWUgIT09IFwiZVwiKSB7XG4vKioqKioqLyBcdFx0XHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGZuLCBuYW1lLCBjcmVhdGVQcm9wZXJ0eURlc2NyaXB0b3IobmFtZSkpO1xuLyoqKioqKi8gXHRcdFx0XHR9XG4vKioqKioqLyBcdFx0XHR9XG4vKioqKioqLyBcdFx0XHRmbi5lID0gZnVuY3Rpb24gKGNodW5rSWQsIGZldGNoUHJpb3JpdHkpIHtcbi8qKioqKiovIFx0XHRcdFx0cmV0dXJuIHRyYWNrQmxvY2tpbmdQcm9taXNlKHJlcXVpcmUuZShjaHVua0lkLCBmZXRjaFByaW9yaXR5KSk7XG4vKioqKioqLyBcdFx0XHR9O1xuLyoqKioqKi8gXHRcdFx0cmV0dXJuIGZuO1xuLyoqKioqKi8gXHRcdH1cbi8qKioqKiovIFx0XHRcbi8qKioqKiovIFx0XHRmdW5jdGlvbiBjcmVhdGVNb2R1bGVIb3RPYmplY3QobW9kdWxlSWQsIG1lKSB7XG4vKioqKioqLyBcdFx0XHR2YXIgX21haW4gPSBjdXJyZW50Q2hpbGRNb2R1bGUgIT09IG1vZHVsZUlkO1xuLyoqKioqKi8gXHRcdFx0dmFyIGhvdCA9IHtcbi8qKioqKiovIFx0XHRcdFx0Ly8gcHJpdmF0ZSBzdHVmZlxuLyoqKioqKi8gXHRcdFx0XHRfYWNjZXB0ZWREZXBlbmRlbmNpZXM6IHt9LFxuLyoqKioqKi8gXHRcdFx0XHRfYWNjZXB0ZWRFcnJvckhhbmRsZXJzOiB7fSxcbi8qKioqKiovIFx0XHRcdFx0X2RlY2xpbmVkRGVwZW5kZW5jaWVzOiB7fSxcbi8qKioqKiovIFx0XHRcdFx0X3NlbGZBY2NlcHRlZDogZmFsc2UsXG4vKioqKioqLyBcdFx0XHRcdF9zZWxmRGVjbGluZWQ6IGZhbHNlLFxuLyoqKioqKi8gXHRcdFx0XHRfc2VsZkludmFsaWRhdGVkOiBmYWxzZSxcbi8qKioqKiovIFx0XHRcdFx0X2Rpc3Bvc2VIYW5kbGVyczogW10sXG4vKioqKioqLyBcdFx0XHRcdF9tYWluOiBfbWFpbixcbi8qKioqKiovIFx0XHRcdFx0X3JlcXVpcmVTZWxmOiBmdW5jdGlvbiAoKSB7XG4vKioqKioqLyBcdFx0XHRcdFx0Y3VycmVudFBhcmVudHMgPSBtZS5wYXJlbnRzLnNsaWNlKCk7XG4vKioqKioqLyBcdFx0XHRcdFx0Y3VycmVudENoaWxkTW9kdWxlID0gX21haW4gPyB1bmRlZmluZWQgOiBtb2R1bGVJZDtcbi8qKioqKiovIFx0XHRcdFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKTtcbi8qKioqKiovIFx0XHRcdFx0fSxcbi8qKioqKiovIFx0XHRcbi8qKioqKiovIFx0XHRcdFx0Ly8gTW9kdWxlIEFQSVxuLyoqKioqKi8gXHRcdFx0XHRhY3RpdmU6IHRydWUsXG4vKioqKioqLyBcdFx0XHRcdGFjY2VwdDogZnVuY3Rpb24gKGRlcCwgY2FsbGJhY2ssIGVycm9ySGFuZGxlcikge1xuLyoqKioqKi8gXHRcdFx0XHRcdGlmIChkZXAgPT09IHVuZGVmaW5lZCkgaG90Ll9zZWxmQWNjZXB0ZWQgPSB0cnVlO1xuLyoqKioqKi8gXHRcdFx0XHRcdGVsc2UgaWYgKHR5cGVvZiBkZXAgPT09IFwiZnVuY3Rpb25cIikgaG90Ll9zZWxmQWNjZXB0ZWQgPSBkZXA7XG4vKioqKioqLyBcdFx0XHRcdFx0ZWxzZSBpZiAodHlwZW9mIGRlcCA9PT0gXCJvYmplY3RcIiAmJiBkZXAgIT09IG51bGwpIHtcbi8qKioqKiovIFx0XHRcdFx0XHRcdGZvciAodmFyIGkgPSAwOyBpIDwgZGVwLmxlbmd0aDsgaSsrKSB7XG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdGhvdC5fYWNjZXB0ZWREZXBlbmRlbmNpZXNbZGVwW2ldXSA9IGNhbGxiYWNrIHx8IGZ1bmN0aW9uICgpIHt9O1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHRob3QuX2FjY2VwdGVkRXJyb3JIYW5kbGVyc1tkZXBbaV1dID0gZXJyb3JIYW5kbGVyO1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0fVxuLyoqKioqKi8gXHRcdFx0XHRcdH0gZWxzZSB7XG4vKioqKioqLyBcdFx0XHRcdFx0XHRob3QuX2FjY2VwdGVkRGVwZW5kZW5jaWVzW2RlcF0gPSBjYWxsYmFjayB8fCBmdW5jdGlvbiAoKSB7fTtcbi8qKioqKiovIFx0XHRcdFx0XHRcdGhvdC5fYWNjZXB0ZWRFcnJvckhhbmRsZXJzW2RlcF0gPSBlcnJvckhhbmRsZXI7XG4vKioqKioqLyBcdFx0XHRcdFx0fVxuLyoqKioqKi8gXHRcdFx0XHR9LFxuLyoqKioqKi8gXHRcdFx0XHRkZWNsaW5lOiBmdW5jdGlvbiAoZGVwKSB7XG4vKioqKioqLyBcdFx0XHRcdFx0aWYgKGRlcCA9PT0gdW5kZWZpbmVkKSBob3QuX3NlbGZEZWNsaW5lZCA9IHRydWU7XG4vKioqKioqLyBcdFx0XHRcdFx0ZWxzZSBpZiAodHlwZW9mIGRlcCA9PT0gXCJvYmplY3RcIiAmJiBkZXAgIT09IG51bGwpXG4vKioqKioqLyBcdFx0XHRcdFx0XHRmb3IgKHZhciBpID0gMDsgaSA8IGRlcC5sZW5ndGg7IGkrKylcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0aG90Ll9kZWNsaW5lZERlcGVuZGVuY2llc1tkZXBbaV1dID0gdHJ1ZTtcbi8qKioqKiovIFx0XHRcdFx0XHRlbHNlIGhvdC5fZGVjbGluZWREZXBlbmRlbmNpZXNbZGVwXSA9IHRydWU7XG4vKioqKioqLyBcdFx0XHRcdH0sXG4vKioqKioqLyBcdFx0XHRcdGRpc3Bvc2U6IGZ1bmN0aW9uIChjYWxsYmFjaykge1xuLyoqKioqKi8gXHRcdFx0XHRcdGhvdC5fZGlzcG9zZUhhbmRsZXJzLnB1c2goY2FsbGJhY2spO1xuLyoqKioqKi8gXHRcdFx0XHR9LFxuLyoqKioqKi8gXHRcdFx0XHRhZGREaXNwb3NlSGFuZGxlcjogZnVuY3Rpb24gKGNhbGxiYWNrKSB7XG4vKioqKioqLyBcdFx0XHRcdFx0aG90Ll9kaXNwb3NlSGFuZGxlcnMucHVzaChjYWxsYmFjayk7XG4vKioqKioqLyBcdFx0XHRcdH0sXG4vKioqKioqLyBcdFx0XHRcdHJlbW92ZURpc3Bvc2VIYW5kbGVyOiBmdW5jdGlvbiAoY2FsbGJhY2spIHtcbi8qKioqKiovIFx0XHRcdFx0XHR2YXIgaWR4ID0gaG90Ll9kaXNwb3NlSGFuZGxlcnMuaW5kZXhPZihjYWxsYmFjayk7XG4vKioqKioqLyBcdFx0XHRcdFx0aWYgKGlkeCA+PSAwKSBob3QuX2Rpc3Bvc2VIYW5kbGVycy5zcGxpY2UoaWR4LCAxKTtcbi8qKioqKiovIFx0XHRcdFx0fSxcbi8qKioqKiovIFx0XHRcdFx0aW52YWxpZGF0ZTogZnVuY3Rpb24gKCkge1xuLyoqKioqKi8gXHRcdFx0XHRcdHRoaXMuX3NlbGZJbnZhbGlkYXRlZCA9IHRydWU7XG4vKioqKioqLyBcdFx0XHRcdFx0c3dpdGNoIChjdXJyZW50U3RhdHVzKSB7XG4vKioqKioqLyBcdFx0XHRcdFx0XHRjYXNlIFwiaWRsZVwiOlxuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHRjdXJyZW50VXBkYXRlQXBwbHlIYW5kbGVycyA9IFtdO1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHRPYmplY3Qua2V5cyhfX3dlYnBhY2tfcmVxdWlyZV9fLmhtckkpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHRcdF9fd2VicGFja19yZXF1aXJlX18uaG1ySVtrZXldKFxuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHRcdFx0bW9kdWxlSWQsXG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdFx0XHRjdXJyZW50VXBkYXRlQXBwbHlIYW5kbGVyc1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHRcdCk7XG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdH0pO1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHRzZXRTdGF0dXMoXCJyZWFkeVwiKTtcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0YnJlYWs7XG4vKioqKioqLyBcdFx0XHRcdFx0XHRjYXNlIFwicmVhZHlcIjpcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0T2JqZWN0LmtleXMoX193ZWJwYWNrX3JlcXVpcmVfXy5obXJJKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLmhtcklba2V5XShcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0XHRcdG1vZHVsZUlkLFxuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHRcdFx0Y3VycmVudFVwZGF0ZUFwcGx5SGFuZGxlcnNcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0XHQpO1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHR9KTtcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0YnJlYWs7XG4vKioqKioqLyBcdFx0XHRcdFx0XHRjYXNlIFwicHJlcGFyZVwiOlxuLyoqKioqKi8gXHRcdFx0XHRcdFx0Y2FzZSBcImNoZWNrXCI6XG4vKioqKioqLyBcdFx0XHRcdFx0XHRjYXNlIFwiZGlzcG9zZVwiOlxuLyoqKioqKi8gXHRcdFx0XHRcdFx0Y2FzZSBcImFwcGx5XCI6XG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdChxdWV1ZWRJbnZhbGlkYXRlZE1vZHVsZXMgPSBxdWV1ZWRJbnZhbGlkYXRlZE1vZHVsZXMgfHwgW10pLnB1c2goXG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdFx0bW9kdWxlSWRcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0KTtcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0YnJlYWs7XG4vKioqKioqLyBcdFx0XHRcdFx0XHRkZWZhdWx0OlxuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHQvLyBpZ25vcmUgcmVxdWVzdHMgaW4gZXJyb3Igc3RhdGVzXG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdGJyZWFrO1xuLyoqKioqKi8gXHRcdFx0XHRcdH1cbi8qKioqKiovIFx0XHRcdFx0fSxcbi8qKioqKiovIFx0XHRcbi8qKioqKiovIFx0XHRcdFx0Ly8gTWFuYWdlbWVudCBBUElcbi8qKioqKiovIFx0XHRcdFx0Y2hlY2s6IGhvdENoZWNrLFxuLyoqKioqKi8gXHRcdFx0XHRhcHBseTogaG90QXBwbHksXG4vKioqKioqLyBcdFx0XHRcdHN0YXR1czogZnVuY3Rpb24gKGwpIHtcbi8qKioqKiovIFx0XHRcdFx0XHRpZiAoIWwpIHJldHVybiBjdXJyZW50U3RhdHVzO1xuLyoqKioqKi8gXHRcdFx0XHRcdHJlZ2lzdGVyZWRTdGF0dXNIYW5kbGVycy5wdXNoKGwpO1xuLyoqKioqKi8gXHRcdFx0XHR9LFxuLyoqKioqKi8gXHRcdFx0XHRhZGRTdGF0dXNIYW5kbGVyOiBmdW5jdGlvbiAobCkge1xuLyoqKioqKi8gXHRcdFx0XHRcdHJlZ2lzdGVyZWRTdGF0dXNIYW5kbGVycy5wdXNoKGwpO1xuLyoqKioqKi8gXHRcdFx0XHR9LFxuLyoqKioqKi8gXHRcdFx0XHRyZW1vdmVTdGF0dXNIYW5kbGVyOiBmdW5jdGlvbiAobCkge1xuLyoqKioqKi8gXHRcdFx0XHRcdHZhciBpZHggPSByZWdpc3RlcmVkU3RhdHVzSGFuZGxlcnMuaW5kZXhPZihsKTtcbi8qKioqKiovIFx0XHRcdFx0XHRpZiAoaWR4ID49IDApIHJlZ2lzdGVyZWRTdGF0dXNIYW5kbGVycy5zcGxpY2UoaWR4LCAxKTtcbi8qKioqKiovIFx0XHRcdFx0fSxcbi8qKioqKiovIFx0XHRcbi8qKioqKiovIFx0XHRcdFx0Ly8gaW5oZXJpdCBmcm9tIHByZXZpb3VzIGRpc3Bvc2UgY2FsbFxuLyoqKioqKi8gXHRcdFx0XHRkYXRhOiBjdXJyZW50TW9kdWxlRGF0YVttb2R1bGVJZF1cbi8qKioqKiovIFx0XHRcdH07XG4vKioqKioqLyBcdFx0XHRjdXJyZW50Q2hpbGRNb2R1bGUgPSB1bmRlZmluZWQ7XG4vKioqKioqLyBcdFx0XHRyZXR1cm4gaG90O1xuLyoqKioqKi8gXHRcdH1cbi8qKioqKiovIFx0XHRcbi8qKioqKiovIFx0XHRmdW5jdGlvbiBzZXRTdGF0dXMobmV3U3RhdHVzKSB7XG4vKioqKioqLyBcdFx0XHRjdXJyZW50U3RhdHVzID0gbmV3U3RhdHVzO1xuLyoqKioqKi8gXHRcdFx0dmFyIHJlc3VsdHMgPSBbXTtcbi8qKioqKiovIFx0XHRcbi8qKioqKiovIFx0XHRcdGZvciAodmFyIGkgPSAwOyBpIDwgcmVnaXN0ZXJlZFN0YXR1c0hhbmRsZXJzLmxlbmd0aDsgaSsrKVxuLyoqKioqKi8gXHRcdFx0XHRyZXN1bHRzW2ldID0gcmVnaXN0ZXJlZFN0YXR1c0hhbmRsZXJzW2ldLmNhbGwobnVsbCwgbmV3U3RhdHVzKTtcbi8qKioqKiovIFx0XHRcbi8qKioqKiovIFx0XHRcdHJldHVybiBQcm9taXNlLmFsbChyZXN1bHRzKS50aGVuKGZ1bmN0aW9uICgpIHt9KTtcbi8qKioqKiovIFx0XHR9XG4vKioqKioqLyBcdFx0XG4vKioqKioqLyBcdFx0ZnVuY3Rpb24gdW5ibG9jaygpIHtcbi8qKioqKiovIFx0XHRcdGlmICgtLWJsb2NraW5nUHJvbWlzZXMgPT09IDApIHtcbi8qKioqKiovIFx0XHRcdFx0c2V0U3RhdHVzKFwicmVhZHlcIikudGhlbihmdW5jdGlvbiAoKSB7XG4vKioqKioqLyBcdFx0XHRcdFx0aWYgKGJsb2NraW5nUHJvbWlzZXMgPT09IDApIHtcbi8qKioqKiovIFx0XHRcdFx0XHRcdHZhciBsaXN0ID0gYmxvY2tpbmdQcm9taXNlc1dhaXRpbmc7XG4vKioqKioqLyBcdFx0XHRcdFx0XHRibG9ja2luZ1Byb21pc2VzV2FpdGluZyA9IFtdO1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgaSsrKSB7XG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdGxpc3RbaV0oKTtcbi8qKioqKiovIFx0XHRcdFx0XHRcdH1cbi8qKioqKiovIFx0XHRcdFx0XHR9XG4vKioqKioqLyBcdFx0XHRcdH0pO1xuLyoqKioqKi8gXHRcdFx0fVxuLyoqKioqKi8gXHRcdH1cbi8qKioqKiovIFx0XHRcbi8qKioqKiovIFx0XHRmdW5jdGlvbiB0cmFja0Jsb2NraW5nUHJvbWlzZShwcm9taXNlKSB7XG4vKioqKioqLyBcdFx0XHRzd2l0Y2ggKGN1cnJlbnRTdGF0dXMpIHtcbi8qKioqKiovIFx0XHRcdFx0Y2FzZSBcInJlYWR5XCI6XG4vKioqKioqLyBcdFx0XHRcdFx0c2V0U3RhdHVzKFwicHJlcGFyZVwiKTtcbi8qKioqKiovIFx0XHRcdFx0LyogZmFsbHRocm91Z2ggKi9cbi8qKioqKiovIFx0XHRcdFx0Y2FzZSBcInByZXBhcmVcIjpcbi8qKioqKiovIFx0XHRcdFx0XHRibG9ja2luZ1Byb21pc2VzKys7XG4vKioqKioqLyBcdFx0XHRcdFx0cHJvbWlzZS50aGVuKHVuYmxvY2ssIHVuYmxvY2spO1xuLyoqKioqKi8gXHRcdFx0XHRcdHJldHVybiBwcm9taXNlO1xuLyoqKioqKi8gXHRcdFx0XHRkZWZhdWx0OlxuLyoqKioqKi8gXHRcdFx0XHRcdHJldHVybiBwcm9taXNlO1xuLyoqKioqKi8gXHRcdFx0fVxuLyoqKioqKi8gXHRcdH1cbi8qKioqKiovIFx0XHRcbi8qKioqKiovIFx0XHRmdW5jdGlvbiB3YWl0Rm9yQmxvY2tpbmdQcm9taXNlcyhmbikge1xuLyoqKioqKi8gXHRcdFx0aWYgKGJsb2NraW5nUHJvbWlzZXMgPT09IDApIHJldHVybiBmbigpO1xuLyoqKioqKi8gXHRcdFx0cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlKSB7XG4vKioqKioqLyBcdFx0XHRcdGJsb2NraW5nUHJvbWlzZXNXYWl0aW5nLnB1c2goZnVuY3Rpb24gKCkge1xuLyoqKioqKi8gXHRcdFx0XHRcdHJlc29sdmUoZm4oKSk7XG4vKioqKioqLyBcdFx0XHRcdH0pO1xuLyoqKioqKi8gXHRcdFx0fSk7XG4vKioqKioqLyBcdFx0fVxuLyoqKioqKi8gXHRcdFxuLyoqKioqKi8gXHRcdGZ1bmN0aW9uIGhvdENoZWNrKGFwcGx5T25VcGRhdGUpIHtcbi8qKioqKiovIFx0XHRcdGlmIChjdXJyZW50U3RhdHVzICE9PSBcImlkbGVcIikge1xuLyoqKioqKi8gXHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoXCJjaGVjaygpIGlzIG9ubHkgYWxsb3dlZCBpbiBpZGxlIHN0YXR1c1wiKTtcbi8qKioqKiovIFx0XHRcdH1cbi8qKioqKiovIFx0XHRcdHJldHVybiBzZXRTdGF0dXMoXCJjaGVja1wiKVxuLyoqKioqKi8gXHRcdFx0XHQudGhlbihfX3dlYnBhY2tfcmVxdWlyZV9fLmhtck0pXG4vKioqKioqLyBcdFx0XHRcdC50aGVuKGZ1bmN0aW9uICh1cGRhdGUpIHtcbi8qKioqKiovIFx0XHRcdFx0XHRpZiAoIXVwZGF0ZSkge1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0cmV0dXJuIHNldFN0YXR1cyhhcHBseUludmFsaWRhdGVkTW9kdWxlcygpID8gXCJyZWFkeVwiIDogXCJpZGxlXCIpLnRoZW4oXG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdGZ1bmN0aW9uICgpIHtcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gbnVsbDtcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0fVxuLyoqKioqKi8gXHRcdFx0XHRcdFx0KTtcbi8qKioqKiovIFx0XHRcdFx0XHR9XG4vKioqKioqLyBcdFx0XG4vKioqKioqLyBcdFx0XHRcdFx0cmV0dXJuIHNldFN0YXR1cyhcInByZXBhcmVcIikudGhlbihmdW5jdGlvbiAoKSB7XG4vKioqKioqLyBcdFx0XHRcdFx0XHR2YXIgdXBkYXRlZE1vZHVsZXMgPSBbXTtcbi8qKioqKiovIFx0XHRcdFx0XHRcdGN1cnJlbnRVcGRhdGVBcHBseUhhbmRsZXJzID0gW107XG4vKioqKioqLyBcdFx0XG4vKioqKioqLyBcdFx0XHRcdFx0XHRyZXR1cm4gUHJvbWlzZS5hbGwoXG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdE9iamVjdC5rZXlzKF9fd2VicGFja19yZXF1aXJlX18uaG1yQykucmVkdWNlKGZ1bmN0aW9uIChcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0XHRwcm9taXNlcyxcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0XHRrZXlcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0KSB7XG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5obXJDW2tleV0oXG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdFx0XHR1cGRhdGUuYyxcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0XHRcdHVwZGF0ZS5yLFxuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHRcdFx0dXBkYXRlLm0sXG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdFx0XHRwcm9taXNlcyxcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0XHRcdGN1cnJlbnRVcGRhdGVBcHBseUhhbmRsZXJzLFxuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHRcdFx0dXBkYXRlZE1vZHVsZXNcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0XHQpO1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHRcdHJldHVybiBwcm9taXNlcztcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0fSwgW10pXG4vKioqKioqLyBcdFx0XHRcdFx0XHQpLnRoZW4oZnVuY3Rpb24gKCkge1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHRyZXR1cm4gd2FpdEZvckJsb2NraW5nUHJvbWlzZXMoZnVuY3Rpb24gKCkge1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHRcdGlmIChhcHBseU9uVXBkYXRlKSB7XG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gaW50ZXJuYWxBcHBseShhcHBseU9uVXBkYXRlKTtcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0XHR9XG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHNldFN0YXR1cyhcInJlYWR5XCIpLnRoZW4oZnVuY3Rpb24gKCkge1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHVwZGF0ZWRNb2R1bGVzO1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHRcdH0pO1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHR9KTtcbi8qKioqKiovIFx0XHRcdFx0XHRcdH0pO1xuLyoqKioqKi8gXHRcdFx0XHRcdH0pO1xuLyoqKioqKi8gXHRcdFx0XHR9KTtcbi8qKioqKiovIFx0XHR9XG4vKioqKioqLyBcdFx0XG4vKioqKioqLyBcdFx0ZnVuY3Rpb24gaG90QXBwbHkob3B0aW9ucykge1xuLyoqKioqKi8gXHRcdFx0aWYgKGN1cnJlbnRTdGF0dXMgIT09IFwicmVhZHlcIikge1xuLyoqKioqKi8gXHRcdFx0XHRyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCkudGhlbihmdW5jdGlvbiAoKSB7XG4vKioqKioqLyBcdFx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKFxuLyoqKioqKi8gXHRcdFx0XHRcdFx0XCJhcHBseSgpIGlzIG9ubHkgYWxsb3dlZCBpbiByZWFkeSBzdGF0dXMgKHN0YXRlOiBcIiArXG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdGN1cnJlbnRTdGF0dXMgK1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHRcIilcIlxuLyoqKioqKi8gXHRcdFx0XHRcdCk7XG4vKioqKioqLyBcdFx0XHRcdH0pO1xuLyoqKioqKi8gXHRcdFx0fVxuLyoqKioqKi8gXHRcdFx0cmV0dXJuIGludGVybmFsQXBwbHkob3B0aW9ucyk7XG4vKioqKioqLyBcdFx0fVxuLyoqKioqKi8gXHRcdFxuLyoqKioqKi8gXHRcdGZ1bmN0aW9uIGludGVybmFsQXBwbHkob3B0aW9ucykge1xuLyoqKioqKi8gXHRcdFx0b3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG4vKioqKioqLyBcdFx0XG4vKioqKioqLyBcdFx0XHRhcHBseUludmFsaWRhdGVkTW9kdWxlcygpO1xuLyoqKioqKi8gXHRcdFxuLyoqKioqKi8gXHRcdFx0dmFyIHJlc3VsdHMgPSBjdXJyZW50VXBkYXRlQXBwbHlIYW5kbGVycy5tYXAoZnVuY3Rpb24gKGhhbmRsZXIpIHtcbi8qKioqKiovIFx0XHRcdFx0cmV0dXJuIGhhbmRsZXIob3B0aW9ucyk7XG4vKioqKioqLyBcdFx0XHR9KTtcbi8qKioqKiovIFx0XHRcdGN1cnJlbnRVcGRhdGVBcHBseUhhbmRsZXJzID0gdW5kZWZpbmVkO1xuLyoqKioqKi8gXHRcdFxuLyoqKioqKi8gXHRcdFx0dmFyIGVycm9ycyA9IHJlc3VsdHNcbi8qKioqKiovIFx0XHRcdFx0Lm1hcChmdW5jdGlvbiAocikge1xuLyoqKioqKi8gXHRcdFx0XHRcdHJldHVybiByLmVycm9yO1xuLyoqKioqKi8gXHRcdFx0XHR9KVxuLyoqKioqKi8gXHRcdFx0XHQuZmlsdGVyKEJvb2xlYW4pO1xuLyoqKioqKi8gXHRcdFxuLyoqKioqKi8gXHRcdFx0aWYgKGVycm9ycy5sZW5ndGggPiAwKSB7XG4vKioqKioqLyBcdFx0XHRcdHJldHVybiBzZXRTdGF0dXMoXCJhYm9ydFwiKS50aGVuKGZ1bmN0aW9uICgpIHtcbi8qKioqKiovIFx0XHRcdFx0XHR0aHJvdyBlcnJvcnNbMF07XG4vKioqKioqLyBcdFx0XHRcdH0pO1xuLyoqKioqKi8gXHRcdFx0fVxuLyoqKioqKi8gXHRcdFxuLyoqKioqKi8gXHRcdFx0Ly8gTm93IGluIFwiZGlzcG9zZVwiIHBoYXNlXG4vKioqKioqLyBcdFx0XHR2YXIgZGlzcG9zZVByb21pc2UgPSBzZXRTdGF0dXMoXCJkaXNwb3NlXCIpO1xuLyoqKioqKi8gXHRcdFxuLyoqKioqKi8gXHRcdFx0cmVzdWx0cy5mb3JFYWNoKGZ1bmN0aW9uIChyZXN1bHQpIHtcbi8qKioqKiovIFx0XHRcdFx0aWYgKHJlc3VsdC5kaXNwb3NlKSByZXN1bHQuZGlzcG9zZSgpO1xuLyoqKioqKi8gXHRcdFx0fSk7XG4vKioqKioqLyBcdFx0XG4vKioqKioqLyBcdFx0XHQvLyBOb3cgaW4gXCJhcHBseVwiIHBoYXNlXG4vKioqKioqLyBcdFx0XHR2YXIgYXBwbHlQcm9taXNlID0gc2V0U3RhdHVzKFwiYXBwbHlcIik7XG4vKioqKioqLyBcdFx0XG4vKioqKioqLyBcdFx0XHR2YXIgZXJyb3I7XG4vKioqKioqLyBcdFx0XHR2YXIgcmVwb3J0RXJyb3IgPSBmdW5jdGlvbiAoZXJyKSB7XG4vKioqKioqLyBcdFx0XHRcdGlmICghZXJyb3IpIGVycm9yID0gZXJyO1xuLyoqKioqKi8gXHRcdFx0fTtcbi8qKioqKiovIFx0XHRcbi8qKioqKiovIFx0XHRcdHZhciBvdXRkYXRlZE1vZHVsZXMgPSBbXTtcbi8qKioqKiovIFx0XHRcdHJlc3VsdHMuZm9yRWFjaChmdW5jdGlvbiAocmVzdWx0KSB7XG4vKioqKioqLyBcdFx0XHRcdGlmIChyZXN1bHQuYXBwbHkpIHtcbi8qKioqKiovIFx0XHRcdFx0XHR2YXIgbW9kdWxlcyA9IHJlc3VsdC5hcHBseShyZXBvcnRFcnJvcik7XG4vKioqKioqLyBcdFx0XHRcdFx0aWYgKG1vZHVsZXMpIHtcbi8qKioqKiovIFx0XHRcdFx0XHRcdGZvciAodmFyIGkgPSAwOyBpIDwgbW9kdWxlcy5sZW5ndGg7IGkrKykge1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHRvdXRkYXRlZE1vZHVsZXMucHVzaChtb2R1bGVzW2ldKTtcbi8qKioqKiovIFx0XHRcdFx0XHRcdH1cbi8qKioqKiovIFx0XHRcdFx0XHR9XG4vKioqKioqLyBcdFx0XHRcdH1cbi8qKioqKiovIFx0XHRcdH0pO1xuLyoqKioqKi8gXHRcdFxuLyoqKioqKi8gXHRcdFx0cmV0dXJuIFByb21pc2UuYWxsKFtkaXNwb3NlUHJvbWlzZSwgYXBwbHlQcm9taXNlXSkudGhlbihmdW5jdGlvbiAoKSB7XG4vKioqKioqLyBcdFx0XHRcdC8vIGhhbmRsZSBlcnJvcnMgaW4gYWNjZXB0IGhhbmRsZXJzIGFuZCBzZWxmIGFjY2VwdGVkIG1vZHVsZSBsb2FkXG4vKioqKioqLyBcdFx0XHRcdGlmIChlcnJvcikge1xuLyoqKioqKi8gXHRcdFx0XHRcdHJldHVybiBzZXRTdGF0dXMoXCJmYWlsXCIpLnRoZW4oZnVuY3Rpb24gKCkge1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0dGhyb3cgZXJyb3I7XG4vKioqKioqLyBcdFx0XHRcdFx0fSk7XG4vKioqKioqLyBcdFx0XHRcdH1cbi8qKioqKiovIFx0XHRcbi8qKioqKiovIFx0XHRcdFx0aWYgKHF1ZXVlZEludmFsaWRhdGVkTW9kdWxlcykge1xuLyoqKioqKi8gXHRcdFx0XHRcdHJldHVybiBpbnRlcm5hbEFwcGx5KG9wdGlvbnMpLnRoZW4oZnVuY3Rpb24gKGxpc3QpIHtcbi8qKioqKiovIFx0XHRcdFx0XHRcdG91dGRhdGVkTW9kdWxlcy5mb3JFYWNoKGZ1bmN0aW9uIChtb2R1bGVJZCkge1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHRpZiAobGlzdC5pbmRleE9mKG1vZHVsZUlkKSA8IDApIGxpc3QucHVzaChtb2R1bGVJZCk7XG4vKioqKioqLyBcdFx0XHRcdFx0XHR9KTtcbi8qKioqKiovIFx0XHRcdFx0XHRcdHJldHVybiBsaXN0O1xuLyoqKioqKi8gXHRcdFx0XHRcdH0pO1xuLyoqKioqKi8gXHRcdFx0XHR9XG4vKioqKioqLyBcdFx0XG4vKioqKioqLyBcdFx0XHRcdHJldHVybiBzZXRTdGF0dXMoXCJpZGxlXCIpLnRoZW4oZnVuY3Rpb24gKCkge1xuLyoqKioqKi8gXHRcdFx0XHRcdHJldHVybiBvdXRkYXRlZE1vZHVsZXM7XG4vKioqKioqLyBcdFx0XHRcdH0pO1xuLyoqKioqKi8gXHRcdFx0fSk7XG4vKioqKioqLyBcdFx0fVxuLyoqKioqKi8gXHRcdFxuLyoqKioqKi8gXHRcdGZ1bmN0aW9uIGFwcGx5SW52YWxpZGF0ZWRNb2R1bGVzKCkge1xuLyoqKioqKi8gXHRcdFx0aWYgKHF1ZXVlZEludmFsaWRhdGVkTW9kdWxlcykge1xuLyoqKioqKi8gXHRcdFx0XHRpZiAoIWN1cnJlbnRVcGRhdGVBcHBseUhhbmRsZXJzKSBjdXJyZW50VXBkYXRlQXBwbHlIYW5kbGVycyA9IFtdO1xuLyoqKioqKi8gXHRcdFx0XHRPYmplY3Qua2V5cyhfX3dlYnBhY2tfcmVxdWlyZV9fLmhtckkpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuLyoqKioqKi8gXHRcdFx0XHRcdHF1ZXVlZEludmFsaWRhdGVkTW9kdWxlcy5mb3JFYWNoKGZ1bmN0aW9uIChtb2R1bGVJZCkge1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5obXJJW2tleV0oXG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdG1vZHVsZUlkLFxuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHRjdXJyZW50VXBkYXRlQXBwbHlIYW5kbGVyc1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0KTtcbi8qKioqKiovIFx0XHRcdFx0XHR9KTtcbi8qKioqKiovIFx0XHRcdFx0fSk7XG4vKioqKioqLyBcdFx0XHRcdHF1ZXVlZEludmFsaWRhdGVkTW9kdWxlcyA9IHVuZGVmaW5lZDtcbi8qKioqKiovIFx0XHRcdFx0cmV0dXJuIHRydWU7XG4vKioqKioqLyBcdFx0XHR9XG4vKioqKioqLyBcdFx0fVxuLyoqKioqKi8gXHR9KSgpO1xuLyoqKioqKi8gXHRcbi8qKioqKiovIFx0Lyogd2VicGFjay9ydW50aW1lL3B1YmxpY1BhdGggKi9cbi8qKioqKiovIFx0KCgpID0+IHtcbi8qKioqKiovIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLnAgPSBcIi9fbmV4dC9cIjtcbi8qKioqKiovIFx0fSkoKTtcbi8qKioqKiovIFx0XG4vKioqKioqLyBcdC8qIHdlYnBhY2svcnVudGltZS9yZWFjdCByZWZyZXNoICovXG4vKioqKioqLyBcdCgoKSA9PiB7XG4vKioqKioqLyBcdFx0aWYgKF9fd2VicGFja19yZXF1aXJlX18uaSkge1xuLyoqKioqKi8gXHRcdF9fd2VicGFja19yZXF1aXJlX18uaS5wdXNoKChvcHRpb25zKSA9PiB7XG4vKioqKioqLyBcdFx0XHRjb25zdCBvcmlnaW5hbEZhY3RvcnkgPSBvcHRpb25zLmZhY3Rvcnk7XG4vKioqKioqLyBcdFx0XHRvcHRpb25zLmZhY3RvcnkgPSAobW9kdWxlT2JqZWN0LCBtb2R1bGVFeHBvcnRzLCB3ZWJwYWNrUmVxdWlyZSkgPT4ge1xuLyoqKioqKi8gXHRcdFx0XHRjb25zdCBoYXNSZWZyZXNoID0gdHlwZW9mIHNlbGYgIT09IFwidW5kZWZpbmVkXCIgJiYgISFzZWxmLiRSZWZyZXNoSW50ZXJjZXB0TW9kdWxlRXhlY3V0aW9uJDtcbi8qKioqKiovIFx0XHRcdFx0Y29uc3QgY2xlYW51cCA9IGhhc1JlZnJlc2ggPyBzZWxmLiRSZWZyZXNoSW50ZXJjZXB0TW9kdWxlRXhlY3V0aW9uJChtb2R1bGVPYmplY3QuaWQpIDogKCkgPT4ge307XG4vKioqKioqLyBcdFx0XHRcdHRyeSB7XG4vKioqKioqLyBcdFx0XHRcdFx0b3JpZ2luYWxGYWN0b3J5LmNhbGwodGhpcywgbW9kdWxlT2JqZWN0LCBtb2R1bGVFeHBvcnRzLCB3ZWJwYWNrUmVxdWlyZSk7XG4vKioqKioqLyBcdFx0XHRcdH0gZmluYWxseSB7XG4vKioqKioqLyBcdFx0XHRcdFx0Y2xlYW51cCgpO1xuLyoqKioqKi8gXHRcdFx0XHR9XG4vKioqKioqLyBcdFx0XHR9XG4vKioqKioqLyBcdFx0fSlcbi8qKioqKiovIFx0XHR9XG4vKioqKioqLyBcdH0pKCk7XG4vKioqKioqLyBcdFxuLyoqKioqKi8gXHQvKiB3ZWJwYWNrL3J1bnRpbWUvY29tcGF0ICovXG4vKioqKioqLyBcdFxuLyoqKioqKi8gXHRcbi8qKioqKiovIFx0Ly8gbm9vcCBmbnMgdG8gcHJldmVudCBydW50aW1lIGVycm9ycyBkdXJpbmcgaW5pdGlhbGl6YXRpb25cbi8qKioqKiovIFx0aWYgKHR5cGVvZiBzZWxmICE9PSBcInVuZGVmaW5lZFwiKSB7XG4vKioqKioqLyBcdFx0c2VsZi4kUmVmcmVzaFJlZyQgPSBmdW5jdGlvbiAoKSB7fTtcbi8qKioqKiovIFx0XHRzZWxmLiRSZWZyZXNoU2lnJCA9IGZ1bmN0aW9uICgpIHtcbi8qKioqKiovIFx0XHRcdHJldHVybiBmdW5jdGlvbiAodHlwZSkge1xuLyoqKioqKi8gXHRcdFx0XHRyZXR1cm4gdHlwZTtcbi8qKioqKiovIFx0XHRcdH07XG4vKioqKioqLyBcdFx0fTtcbi8qKioqKiovIFx0fVxuLyoqKioqKi8gXHRcbi8qKioqKiovIFx0Lyogd2VicGFjay9ydW50aW1lL2NzcyBsb2FkaW5nICovXG4vKioqKioqLyBcdCgoKSA9PiB7XG4vKioqKioqLyBcdFx0dmFyIGNyZWF0ZVN0eWxlc2hlZXQgPSAoY2h1bmtJZCwgZnVsbGhyZWYsIHJlc29sdmUsIHJlamVjdCkgPT4ge1xuLyoqKioqKi8gXHRcdFx0dmFyIGxpbmtUYWcgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwibGlua1wiKTtcbi8qKioqKiovIFx0XHRcbi8qKioqKiovIFx0XHRcdGxpbmtUYWcucmVsID0gXCJzdHlsZXNoZWV0XCI7XG4vKioqKioqLyBcdFx0XHRsaW5rVGFnLnR5cGUgPSBcInRleHQvY3NzXCI7XG4vKioqKioqLyBcdFx0XHR2YXIgb25MaW5rQ29tcGxldGUgPSAoZXZlbnQpID0+IHtcbi8qKioqKiovIFx0XHRcdFx0Ly8gYXZvaWQgbWVtIGxlYWtzLlxuLyoqKioqKi8gXHRcdFx0XHRsaW5rVGFnLm9uZXJyb3IgPSBsaW5rVGFnLm9ubG9hZCA9IG51bGw7XG4vKioqKioqLyBcdFx0XHRcdGlmIChldmVudC50eXBlID09PSAnbG9hZCcpIHtcbi8qKioqKiovIFx0XHRcdFx0XHRyZXNvbHZlKCk7XG4vKioqKioqLyBcdFx0XHRcdH0gZWxzZSB7XG4vKioqKioqLyBcdFx0XHRcdFx0dmFyIGVycm9yVHlwZSA9IGV2ZW50ICYmIChldmVudC50eXBlID09PSAnbG9hZCcgPyAnbWlzc2luZycgOiBldmVudC50eXBlKTtcbi8qKioqKiovIFx0XHRcdFx0XHR2YXIgcmVhbEhyZWYgPSBldmVudCAmJiBldmVudC50YXJnZXQgJiYgZXZlbnQudGFyZ2V0LmhyZWYgfHwgZnVsbGhyZWY7XG4vKioqKioqLyBcdFx0XHRcdFx0dmFyIGVyciA9IG5ldyBFcnJvcihcIkxvYWRpbmcgQ1NTIGNodW5rIFwiICsgY2h1bmtJZCArIFwiIGZhaWxlZC5cXG4oXCIgKyByZWFsSHJlZiArIFwiKVwiKTtcbi8qKioqKiovIFx0XHRcdFx0XHRlcnIuY29kZSA9IFwiQ1NTX0NIVU5LX0xPQURfRkFJTEVEXCI7XG4vKioqKioqLyBcdFx0XHRcdFx0ZXJyLnR5cGUgPSBlcnJvclR5cGU7XG4vKioqKioqLyBcdFx0XHRcdFx0ZXJyLnJlcXVlc3QgPSByZWFsSHJlZjtcbi8qKioqKiovIFx0XHRcdFx0XHRsaW5rVGFnLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQobGlua1RhZylcbi8qKioqKiovIFx0XHRcdFx0XHRyZWplY3QoZXJyKTtcbi8qKioqKiovIFx0XHRcdFx0fVxuLyoqKioqKi8gXHRcdFx0fVxuLyoqKioqKi8gXHRcdFx0bGlua1RhZy5vbmVycm9yID0gbGlua1RhZy5vbmxvYWQgPSBvbkxpbmtDb21wbGV0ZTtcbi8qKioqKiovIFx0XHRcdGxpbmtUYWcuaHJlZiA9IGZ1bGxocmVmO1xuLyoqKioqKi8gXHRcdFxuLyoqKioqKi8gXHRcdFx0KGZ1bmN0aW9uKGxpbmtUYWcpIHtcbi8qKioqKiovIFx0XHRcdCAgICAgICAgICAgICAgICBpZiAodHlwZW9mIF9OX0VfU1RZTEVfTE9BRCA9PT0gJ2Z1bmN0aW9uJykge1xuLyoqKioqKi8gXHRcdFx0ICAgICAgICAgICAgICAgICAgICBjb25zdCB7IGhyZWYsIG9ubG9hZCwgb25lcnJvciB9ID0gbGlua1RhZztcbi8qKioqKiovIFx0XHRcdCAgICAgICAgICAgICAgICAgICAgX05fRV9TVFlMRV9MT0FEKGhyZWYuaW5kZXhPZih3aW5kb3cubG9jYXRpb24ub3JpZ2luKSA9PT0gMCA/IG5ldyBVUkwoaHJlZikucGF0aG5hbWUgOiBocmVmKS50aGVuKCgpPT5vbmxvYWQgPT0gbnVsbCA/IHZvaWQgMCA6IG9ubG9hZC5jYWxsKGxpbmtUYWcsIHtcbi8qKioqKiovIFx0XHRcdCAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnbG9hZCdcbi8qKioqKiovIFx0XHRcdCAgICAgICAgICAgICAgICAgICAgICAgIH0pLCAoKT0+b25lcnJvciA9PSBudWxsID8gdm9pZCAwIDogb25lcnJvci5jYWxsKGxpbmtUYWcsIHt9KSk7XG4vKioqKioqLyBcdFx0XHQgICAgICAgICAgICAgICAgfSBlbHNlIHtcbi8qKioqKiovIFx0XHRcdCAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChsaW5rVGFnKTtcbi8qKioqKiovIFx0XHRcdCAgICAgICAgICAgICAgICB9XG4vKioqKioqLyBcdFx0XHQgICAgICAgICAgICB9KShsaW5rVGFnKVxuLyoqKioqKi8gXHRcdFx0cmV0dXJuIGxpbmtUYWc7XG4vKioqKioqLyBcdFx0fTtcbi8qKioqKiovIFx0XHR2YXIgZmluZFN0eWxlc2hlZXQgPSAoaHJlZiwgZnVsbGhyZWYpID0+IHtcbi8qKioqKiovIFx0XHRcdHZhciBleGlzdGluZ0xpbmtUYWdzID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJsaW5rXCIpO1xuLyoqKioqKi8gXHRcdFx0Zm9yKHZhciBpID0gMDsgaSA8IGV4aXN0aW5nTGlua1RhZ3MubGVuZ3RoOyBpKyspIHtcbi8qKioqKiovIFx0XHRcdFx0dmFyIHRhZyA9IGV4aXN0aW5nTGlua1RhZ3NbaV07XG4vKioqKioqLyBcdFx0XHRcdHZhciBkYXRhSHJlZiA9IHRhZy5nZXRBdHRyaWJ1dGUoXCJkYXRhLWhyZWZcIikgfHwgdGFnLmdldEF0dHJpYnV0ZShcImhyZWZcIik7XG4vKioqKioqLyBcdFx0XHRcdGlmKHRhZy5yZWwgPT09IFwic3R5bGVzaGVldFwiICYmIChkYXRhSHJlZiA9PT0gaHJlZiB8fCBkYXRhSHJlZiA9PT0gZnVsbGhyZWYpKSByZXR1cm4gdGFnO1xuLyoqKioqKi8gXHRcdFx0fVxuLyoqKioqKi8gXHRcdFx0dmFyIGV4aXN0aW5nU3R5bGVUYWdzID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJzdHlsZVwiKTtcbi8qKioqKiovIFx0XHRcdGZvcih2YXIgaSA9IDA7IGkgPCBleGlzdGluZ1N0eWxlVGFncy5sZW5ndGg7IGkrKykge1xuLyoqKioqKi8gXHRcdFx0XHR2YXIgdGFnID0gZXhpc3RpbmdTdHlsZVRhZ3NbaV07XG4vKioqKioqLyBcdFx0XHRcdHZhciBkYXRhSHJlZiA9IHRhZy5nZXRBdHRyaWJ1dGUoXCJkYXRhLWhyZWZcIik7XG4vKioqKioqLyBcdFx0XHRcdGlmKGRhdGFIcmVmID09PSBocmVmIHx8IGRhdGFIcmVmID09PSBmdWxsaHJlZikgcmV0dXJuIHRhZztcbi8qKioqKiovIFx0XHRcdH1cbi8qKioqKiovIFx0XHR9O1xuLyoqKioqKi8gXHRcdHZhciBsb2FkU3R5bGVzaGVldCA9IChjaHVua0lkKSA9PiB7XG4vKioqKioqLyBcdFx0XHRyZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuLyoqKioqKi8gXHRcdFx0XHR2YXIgaHJlZiA9IF9fd2VicGFja19yZXF1aXJlX18ubWluaUNzc0YoY2h1bmtJZCk7XG4vKioqKioqLyBcdFx0XHRcdHZhciBmdWxsaHJlZiA9IF9fd2VicGFja19yZXF1aXJlX18ucCArIGhyZWY7XG4vKioqKioqLyBcdFx0XHRcdGlmKGZpbmRTdHlsZXNoZWV0KGhyZWYsIGZ1bGxocmVmKSkgcmV0dXJuIHJlc29sdmUoKTtcbi8qKioqKiovIFx0XHRcdFx0Y3JlYXRlU3R5bGVzaGVldChjaHVua0lkLCBmdWxsaHJlZiwgcmVzb2x2ZSwgcmVqZWN0KTtcbi8qKioqKiovIFx0XHRcdH0pO1xuLyoqKioqKi8gXHRcdH1cbi8qKioqKiovIFx0XHQvLyBubyBjaHVuayBsb2FkaW5nXG4vKioqKioqLyBcdFx0XG4vKioqKioqLyBcdFx0dmFyIG9sZFRhZ3MgPSBbXTtcbi8qKioqKiovIFx0XHR2YXIgbmV3VGFncyA9IFtdO1xuLyoqKioqKi8gXHRcdHZhciBhcHBseUhhbmRsZXIgPSAob3B0aW9ucykgPT4ge1xuLyoqKioqKi8gXHRcdFx0cmV0dXJuIHsgZGlzcG9zZTogKCkgPT4ge1xuLyoqKioqKi8gXHRcdFx0XHRmb3IodmFyIGkgPSAwOyBpIDwgb2xkVGFncy5sZW5ndGg7IGkrKykge1xuLyoqKioqKi8gXHRcdFx0XHRcdHZhciBvbGRUYWcgPSBvbGRUYWdzW2ldO1xuLyoqKioqKi8gXHRcdFx0XHRcdGlmKG9sZFRhZy5wYXJlbnROb2RlKSBvbGRUYWcucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChvbGRUYWcpO1xuLyoqKioqKi8gXHRcdFx0XHR9XG4vKioqKioqLyBcdFx0XHRcdG9sZFRhZ3MubGVuZ3RoID0gMDtcbi8qKioqKiovIFx0XHRcdH0sIGFwcGx5OiAoKSA9PiB7XG4vKioqKioqLyBcdFx0XHRcdGZvcih2YXIgaSA9IDA7IGkgPCBuZXdUYWdzLmxlbmd0aDsgaSsrKSBuZXdUYWdzW2ldLnJlbCA9IFwic3R5bGVzaGVldFwiO1xuLyoqKioqKi8gXHRcdFx0XHRuZXdUYWdzLmxlbmd0aCA9IDA7XG4vKioqKioqLyBcdFx0XHR9IH07XG4vKioqKioqLyBcdFx0fVxuLyoqKioqKi8gXHRcdF9fd2VicGFja19yZXF1aXJlX18uaG1yQy5taW5pQ3NzID0gKGNodW5rSWRzLCByZW1vdmVkQ2h1bmtzLCByZW1vdmVkTW9kdWxlcywgcHJvbWlzZXMsIGFwcGx5SGFuZGxlcnMsIHVwZGF0ZWRNb2R1bGVzTGlzdCkgPT4ge1xuLyoqKioqKi8gXHRcdFx0YXBwbHlIYW5kbGVycy5wdXNoKGFwcGx5SGFuZGxlcik7XG4vKioqKioqLyBcdFx0XHRjaHVua0lkcy5mb3JFYWNoKChjaHVua0lkKSA9PiB7XG4vKioqKioqLyBcdFx0XHRcdHZhciBocmVmID0gX193ZWJwYWNrX3JlcXVpcmVfXy5taW5pQ3NzRihjaHVua0lkKTtcbi8qKioqKiovIFx0XHRcdFx0dmFyIGZ1bGxocmVmID0gX193ZWJwYWNrX3JlcXVpcmVfXy5wICsgaHJlZjtcbi8qKioqKiovIFx0XHRcdFx0dmFyIG9sZFRhZyA9IGZpbmRTdHlsZXNoZWV0KGhyZWYsIGZ1bGxocmVmKTtcbi8qKioqKiovIFx0XHRcdFx0aWYoIW9sZFRhZykgcmV0dXJuO1xuLyoqKioqKi8gXHRcdFx0XHRwcm9taXNlcy5wdXNoKG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbi8qKioqKiovIFx0XHRcdFx0XHR2YXIgdGFnID0gY3JlYXRlU3R5bGVzaGVldChjaHVua0lkLCBmdWxsaHJlZiwgKCkgPT4ge1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0dGFnLmFzID0gXCJzdHlsZVwiO1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0dGFnLnJlbCA9IFwicHJlbG9hZFwiO1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0cmVzb2x2ZSgpO1xuLyoqKioqKi8gXHRcdFx0XHRcdH0sIHJlamVjdCk7XG4vKioqKioqLyBcdFx0XHRcdFx0b2xkVGFncy5wdXNoKG9sZFRhZyk7XG4vKioqKioqLyBcdFx0XHRcdFx0bmV3VGFncy5wdXNoKHRhZyk7XG4vKioqKioqLyBcdFx0XHRcdH0pKTtcbi8qKioqKiovIFx0XHRcdH0pO1xuLyoqKioqKi8gXHRcdH1cbi8qKioqKiovIFx0fSkoKTtcbi8qKioqKiovIFx0XG4vKioqKioqLyBcdC8qIHdlYnBhY2svcnVudGltZS9qc29ucCBjaHVuayBsb2FkaW5nICovXG4vKioqKioqLyBcdCgoKSA9PiB7XG4vKioqKioqLyBcdFx0Ly8gbm8gYmFzZVVSSVxuLyoqKioqKi8gXHRcdFxuLyoqKioqKi8gXHRcdC8vIG9iamVjdCB0byBzdG9yZSBsb2FkZWQgYW5kIGxvYWRpbmcgY2h1bmtzXG4vKioqKioqLyBcdFx0Ly8gdW5kZWZpbmVkID0gY2h1bmsgbm90IGxvYWRlZCwgbnVsbCA9IGNodW5rIHByZWxvYWRlZC9wcmVmZXRjaGVkXG4vKioqKioqLyBcdFx0Ly8gW3Jlc29sdmUsIHJlamVjdCwgUHJvbWlzZV0gPSBjaHVuayBsb2FkaW5nLCAwID0gY2h1bmsgbG9hZGVkXG4vKioqKioqLyBcdFx0dmFyIGluc3RhbGxlZENodW5rcyA9IF9fd2VicGFja19yZXF1aXJlX18uaG1yU19qc29ucCA9IF9fd2VicGFja19yZXF1aXJlX18uaG1yU19qc29ucCB8fCB7XG4vKioqKioqLyBcdFx0XHRcIndlYnBhY2tcIjogMFxuLyoqKioqKi8gXHRcdH07XG4vKioqKioqLyBcdFx0XG4vKioqKioqLyBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5mLmogPSAoY2h1bmtJZCwgcHJvbWlzZXMpID0+IHtcbi8qKioqKiovIFx0XHRcdFx0Ly8gSlNPTlAgY2h1bmsgbG9hZGluZyBmb3IgamF2YXNjcmlwdFxuLyoqKioqKi8gXHRcdFx0XHR2YXIgaW5zdGFsbGVkQ2h1bmtEYXRhID0gX193ZWJwYWNrX3JlcXVpcmVfXy5vKGluc3RhbGxlZENodW5rcywgY2h1bmtJZCkgPyBpbnN0YWxsZWRDaHVua3NbY2h1bmtJZF0gOiB1bmRlZmluZWQ7XG4vKioqKioqLyBcdFx0XHRcdGlmKGluc3RhbGxlZENodW5rRGF0YSAhPT0gMCkgeyAvLyAwIG1lYW5zIFwiYWxyZWFkeSBpbnN0YWxsZWRcIi5cbi8qKioqKiovIFx0XHRcbi8qKioqKiovIFx0XHRcdFx0XHQvLyBhIFByb21pc2UgbWVhbnMgXCJjdXJyZW50bHkgbG9hZGluZ1wiLlxuLyoqKioqKi8gXHRcdFx0XHRcdGlmKGluc3RhbGxlZENodW5rRGF0YSkge1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0cHJvbWlzZXMucHVzaChpbnN0YWxsZWRDaHVua0RhdGFbMl0pO1xuLyoqKioqKi8gXHRcdFx0XHRcdH0gZWxzZSB7XG4vKioqKioqLyBcdFx0XHRcdFx0XHRpZihcIndlYnBhY2tcIiAhPSBjaHVua0lkKSB7XG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdC8vIHNldHVwIFByb21pc2UgaW4gY2h1bmsgY2FjaGVcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0dmFyIHByb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiAoaW5zdGFsbGVkQ2h1bmtEYXRhID0gaW5zdGFsbGVkQ2h1bmtzW2NodW5rSWRdID0gW3Jlc29sdmUsIHJlamVjdF0pKTtcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0cHJvbWlzZXMucHVzaChpbnN0YWxsZWRDaHVua0RhdGFbMl0gPSBwcm9taXNlKTtcbi8qKioqKiovIFx0XHRcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0Ly8gc3RhcnQgY2h1bmsgbG9hZGluZ1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHR2YXIgdXJsID0gX193ZWJwYWNrX3JlcXVpcmVfXy5wICsgX193ZWJwYWNrX3JlcXVpcmVfXy51KGNodW5rSWQpO1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHQvLyBjcmVhdGUgZXJyb3IgYmVmb3JlIHN0YWNrIHVud291bmQgdG8gZ2V0IHVzZWZ1bCBzdGFja3RyYWNlIGxhdGVyXG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdHZhciBlcnJvciA9IG5ldyBFcnJvcigpO1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHR2YXIgbG9hZGluZ0VuZGVkID0gKGV2ZW50KSA9PiB7XG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdFx0aWYoX193ZWJwYWNrX3JlcXVpcmVfXy5vKGluc3RhbGxlZENodW5rcywgY2h1bmtJZCkpIHtcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0XHRcdGluc3RhbGxlZENodW5rRGF0YSA9IGluc3RhbGxlZENodW5rc1tjaHVua0lkXTtcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0XHRcdGlmKGluc3RhbGxlZENodW5rRGF0YSAhPT0gMCkgaW5zdGFsbGVkQ2h1bmtzW2NodW5rSWRdID0gdW5kZWZpbmVkO1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHRcdFx0aWYoaW5zdGFsbGVkQ2h1bmtEYXRhKSB7XG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdFx0XHRcdHZhciBlcnJvclR5cGUgPSBldmVudCAmJiAoZXZlbnQudHlwZSA9PT0gJ2xvYWQnID8gJ21pc3NpbmcnIDogZXZlbnQudHlwZSk7XG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdFx0XHRcdHZhciByZWFsU3JjID0gZXZlbnQgJiYgZXZlbnQudGFyZ2V0ICYmIGV2ZW50LnRhcmdldC5zcmM7XG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdFx0XHRcdGVycm9yLm1lc3NhZ2UgPSAnTG9hZGluZyBjaHVuayAnICsgY2h1bmtJZCArICcgZmFpbGVkLlxcbignICsgZXJyb3JUeXBlICsgJzogJyArIHJlYWxTcmMgKyAnKSc7XG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdFx0XHRcdGVycm9yLm5hbWUgPSAnQ2h1bmtMb2FkRXJyb3InO1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHRcdFx0XHRlcnJvci50eXBlID0gZXJyb3JUeXBlO1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHRcdFx0XHRlcnJvci5yZXF1ZXN0ID0gcmVhbFNyYztcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0XHRcdFx0aW5zdGFsbGVkQ2h1bmtEYXRhWzFdKGVycm9yKTtcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0XHRcdH1cbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0XHR9XG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdH07XG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdF9fd2VicGFja19yZXF1aXJlX18ubCh1cmwsIGxvYWRpbmdFbmRlZCwgXCJjaHVuay1cIiArIGNodW5rSWQsIGNodW5rSWQpO1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0fSBlbHNlIGluc3RhbGxlZENodW5rc1tjaHVua0lkXSA9IDA7XG4vKioqKioqLyBcdFx0XHRcdFx0fVxuLyoqKioqKi8gXHRcdFx0XHR9XG4vKioqKioqLyBcdFx0fTtcbi8qKioqKiovIFx0XHRcbi8qKioqKiovIFx0XHQvLyBubyBwcmVmZXRjaGluZ1xuLyoqKioqKi8gXHRcdFxuLyoqKioqKi8gXHRcdC8vIG5vIHByZWxvYWRlZFxuLyoqKioqKi8gXHRcdFxuLyoqKioqKi8gXHRcdHZhciBjdXJyZW50VXBkYXRlZE1vZHVsZXNMaXN0O1xuLyoqKioqKi8gXHRcdHZhciB3YWl0aW5nVXBkYXRlUmVzb2x2ZXMgPSB7fTtcbi8qKioqKiovIFx0XHRmdW5jdGlvbiBsb2FkVXBkYXRlQ2h1bmsoY2h1bmtJZCwgdXBkYXRlZE1vZHVsZXNMaXN0KSB7XG4vKioqKioqLyBcdFx0XHRjdXJyZW50VXBkYXRlZE1vZHVsZXNMaXN0ID0gdXBkYXRlZE1vZHVsZXNMaXN0O1xuLyoqKioqKi8gXHRcdFx0cmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbi8qKioqKiovIFx0XHRcdFx0d2FpdGluZ1VwZGF0ZVJlc29sdmVzW2NodW5rSWRdID0gcmVzb2x2ZTtcbi8qKioqKiovIFx0XHRcdFx0Ly8gc3RhcnQgdXBkYXRlIGNodW5rIGxvYWRpbmdcbi8qKioqKiovIFx0XHRcdFx0dmFyIHVybCA9IF9fd2VicGFja19yZXF1aXJlX18ucCArIF9fd2VicGFja19yZXF1aXJlX18uaHUoY2h1bmtJZCk7XG4vKioqKioqLyBcdFx0XHRcdC8vIGNyZWF0ZSBlcnJvciBiZWZvcmUgc3RhY2sgdW53b3VuZCB0byBnZXQgdXNlZnVsIHN0YWNrdHJhY2UgbGF0ZXJcbi8qKioqKiovIFx0XHRcdFx0dmFyIGVycm9yID0gbmV3IEVycm9yKCk7XG4vKioqKioqLyBcdFx0XHRcdHZhciBsb2FkaW5nRW5kZWQgPSAoZXZlbnQpID0+IHtcbi8qKioqKiovIFx0XHRcdFx0XHRpZih3YWl0aW5nVXBkYXRlUmVzb2x2ZXNbY2h1bmtJZF0pIHtcbi8qKioqKiovIFx0XHRcdFx0XHRcdHdhaXRpbmdVcGRhdGVSZXNvbHZlc1tjaHVua0lkXSA9IHVuZGVmaW5lZFxuLyoqKioqKi8gXHRcdFx0XHRcdFx0dmFyIGVycm9yVHlwZSA9IGV2ZW50ICYmIChldmVudC50eXBlID09PSAnbG9hZCcgPyAnbWlzc2luZycgOiBldmVudC50eXBlKTtcbi8qKioqKiovIFx0XHRcdFx0XHRcdHZhciByZWFsU3JjID0gZXZlbnQgJiYgZXZlbnQudGFyZ2V0ICYmIGV2ZW50LnRhcmdldC5zcmM7XG4vKioqKioqLyBcdFx0XHRcdFx0XHRlcnJvci5tZXNzYWdlID0gJ0xvYWRpbmcgaG90IHVwZGF0ZSBjaHVuayAnICsgY2h1bmtJZCArICcgZmFpbGVkLlxcbignICsgZXJyb3JUeXBlICsgJzogJyArIHJlYWxTcmMgKyAnKSc7XG4vKioqKioqLyBcdFx0XHRcdFx0XHRlcnJvci5uYW1lID0gJ0NodW5rTG9hZEVycm9yJztcbi8qKioqKiovIFx0XHRcdFx0XHRcdGVycm9yLnR5cGUgPSBlcnJvclR5cGU7XG4vKioqKioqLyBcdFx0XHRcdFx0XHRlcnJvci5yZXF1ZXN0ID0gcmVhbFNyYztcbi8qKioqKiovIFx0XHRcdFx0XHRcdHJlamVjdChlcnJvcik7XG4vKioqKioqLyBcdFx0XHRcdFx0fVxuLyoqKioqKi8gXHRcdFx0XHR9O1xuLyoqKioqKi8gXHRcdFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLmwodXJsLCBsb2FkaW5nRW5kZWQpO1xuLyoqKioqKi8gXHRcdFx0fSk7XG4vKioqKioqLyBcdFx0fVxuLyoqKioqKi8gXHRcdFxuLyoqKioqKi8gXHRcdHNlbGZbXCJ3ZWJwYWNrSG90VXBkYXRlX05fRVwiXSA9IChjaHVua0lkLCBtb3JlTW9kdWxlcywgcnVudGltZSkgPT4ge1xuLyoqKioqKi8gXHRcdFx0Zm9yKHZhciBtb2R1bGVJZCBpbiBtb3JlTW9kdWxlcykge1xuLyoqKioqKi8gXHRcdFx0XHRpZihfX3dlYnBhY2tfcmVxdWlyZV9fLm8obW9yZU1vZHVsZXMsIG1vZHVsZUlkKSkge1xuLyoqKioqKi8gXHRcdFx0XHRcdGN1cnJlbnRVcGRhdGVbbW9kdWxlSWRdID0gbW9yZU1vZHVsZXNbbW9kdWxlSWRdO1xuLyoqKioqKi8gXHRcdFx0XHRcdGlmKGN1cnJlbnRVcGRhdGVkTW9kdWxlc0xpc3QpIGN1cnJlbnRVcGRhdGVkTW9kdWxlc0xpc3QucHVzaChtb2R1bGVJZCk7XG4vKioqKioqLyBcdFx0XHRcdH1cbi8qKioqKiovIFx0XHRcdH1cbi8qKioqKiovIFx0XHRcdGlmKHJ1bnRpbWUpIGN1cnJlbnRVcGRhdGVSdW50aW1lLnB1c2gocnVudGltZSk7XG4vKioqKioqLyBcdFx0XHRpZih3YWl0aW5nVXBkYXRlUmVzb2x2ZXNbY2h1bmtJZF0pIHtcbi8qKioqKiovIFx0XHRcdFx0d2FpdGluZ1VwZGF0ZVJlc29sdmVzW2NodW5rSWRdKCk7XG4vKioqKioqLyBcdFx0XHRcdHdhaXRpbmdVcGRhdGVSZXNvbHZlc1tjaHVua0lkXSA9IHVuZGVmaW5lZDtcbi8qKioqKiovIFx0XHRcdH1cbi8qKioqKiovIFx0XHR9O1xuLyoqKioqKi8gXHRcdFxuLyoqKioqKi8gXHRcdHZhciBjdXJyZW50VXBkYXRlQ2h1bmtzO1xuLyoqKioqKi8gXHRcdHZhciBjdXJyZW50VXBkYXRlO1xuLyoqKioqKi8gXHRcdHZhciBjdXJyZW50VXBkYXRlUmVtb3ZlZENodW5rcztcbi8qKioqKiovIFx0XHR2YXIgY3VycmVudFVwZGF0ZVJ1bnRpbWU7XG4vKioqKioqLyBcdFx0ZnVuY3Rpb24gYXBwbHlIYW5kbGVyKG9wdGlvbnMpIHtcbi8qKioqKiovIFx0XHRcdGlmIChfX3dlYnBhY2tfcmVxdWlyZV9fLmYpIGRlbGV0ZSBfX3dlYnBhY2tfcmVxdWlyZV9fLmYuanNvbnBIbXI7XG4vKioqKioqLyBcdFx0XHRjdXJyZW50VXBkYXRlQ2h1bmtzID0gdW5kZWZpbmVkO1xuLyoqKioqKi8gXHRcdFx0ZnVuY3Rpb24gZ2V0QWZmZWN0ZWRNb2R1bGVFZmZlY3RzKHVwZGF0ZU1vZHVsZUlkKSB7XG4vKioqKioqLyBcdFx0XHRcdHZhciBvdXRkYXRlZE1vZHVsZXMgPSBbdXBkYXRlTW9kdWxlSWRdO1xuLyoqKioqKi8gXHRcdFx0XHR2YXIgb3V0ZGF0ZWREZXBlbmRlbmNpZXMgPSB7fTtcbi8qKioqKiovIFx0XHRcbi8qKioqKiovIFx0XHRcdFx0dmFyIHF1ZXVlID0gb3V0ZGF0ZWRNb2R1bGVzLm1hcChmdW5jdGlvbiAoaWQpIHtcbi8qKioqKiovIFx0XHRcdFx0XHRyZXR1cm4ge1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0Y2hhaW46IFtpZF0sXG4vKioqKioqLyBcdFx0XHRcdFx0XHRpZDogaWRcbi8qKioqKiovIFx0XHRcdFx0XHR9O1xuLyoqKioqKi8gXHRcdFx0XHR9KTtcbi8qKioqKiovIFx0XHRcdFx0d2hpbGUgKHF1ZXVlLmxlbmd0aCA+IDApIHtcbi8qKioqKiovIFx0XHRcdFx0XHR2YXIgcXVldWVJdGVtID0gcXVldWUucG9wKCk7XG4vKioqKioqLyBcdFx0XHRcdFx0dmFyIG1vZHVsZUlkID0gcXVldWVJdGVtLmlkO1xuLyoqKioqKi8gXHRcdFx0XHRcdHZhciBjaGFpbiA9IHF1ZXVlSXRlbS5jaGFpbjtcbi8qKioqKiovIFx0XHRcdFx0XHR2YXIgbW9kdWxlID0gX193ZWJwYWNrX3JlcXVpcmVfXy5jW21vZHVsZUlkXTtcbi8qKioqKiovIFx0XHRcdFx0XHRpZiAoXG4vKioqKioqLyBcdFx0XHRcdFx0XHQhbW9kdWxlIHx8XG4vKioqKioqLyBcdFx0XHRcdFx0XHQobW9kdWxlLmhvdC5fc2VsZkFjY2VwdGVkICYmICFtb2R1bGUuaG90Ll9zZWxmSW52YWxpZGF0ZWQpXG4vKioqKioqLyBcdFx0XHRcdFx0KVxuLyoqKioqKi8gXHRcdFx0XHRcdFx0Y29udGludWU7XG4vKioqKioqLyBcdFx0XHRcdFx0aWYgKG1vZHVsZS5ob3QuX3NlbGZEZWNsaW5lZCkge1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0cmV0dXJuIHtcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0dHlwZTogXCJzZWxmLWRlY2xpbmVkXCIsXG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdGNoYWluOiBjaGFpbixcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0bW9kdWxlSWQ6IG1vZHVsZUlkXG4vKioqKioqLyBcdFx0XHRcdFx0XHR9O1xuLyoqKioqKi8gXHRcdFx0XHRcdH1cbi8qKioqKiovIFx0XHRcdFx0XHRpZiAobW9kdWxlLmhvdC5fbWFpbikge1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0cmV0dXJuIHtcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0dHlwZTogXCJ1bmFjY2VwdGVkXCIsXG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdGNoYWluOiBjaGFpbixcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0bW9kdWxlSWQ6IG1vZHVsZUlkXG4vKioqKioqLyBcdFx0XHRcdFx0XHR9O1xuLyoqKioqKi8gXHRcdFx0XHRcdH1cbi8qKioqKiovIFx0XHRcdFx0XHRmb3IgKHZhciBpID0gMDsgaSA8IG1vZHVsZS5wYXJlbnRzLmxlbmd0aDsgaSsrKSB7XG4vKioqKioqLyBcdFx0XHRcdFx0XHR2YXIgcGFyZW50SWQgPSBtb2R1bGUucGFyZW50c1tpXTtcbi8qKioqKiovIFx0XHRcdFx0XHRcdHZhciBwYXJlbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fLmNbcGFyZW50SWRdO1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0aWYgKCFwYXJlbnQpIGNvbnRpbnVlO1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0aWYgKHBhcmVudC5ob3QuX2RlY2xpbmVkRGVwZW5kZW5jaWVzW21vZHVsZUlkXSkge1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHRyZXR1cm4ge1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHRcdHR5cGU6IFwiZGVjbGluZWRcIixcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0XHRjaGFpbjogY2hhaW4uY29uY2F0KFtwYXJlbnRJZF0pLFxuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHRcdG1vZHVsZUlkOiBtb2R1bGVJZCxcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0XHRwYXJlbnRJZDogcGFyZW50SWRcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0fTtcbi8qKioqKiovIFx0XHRcdFx0XHRcdH1cbi8qKioqKiovIFx0XHRcdFx0XHRcdGlmIChvdXRkYXRlZE1vZHVsZXMuaW5kZXhPZihwYXJlbnRJZCkgIT09IC0xKSBjb250aW51ZTtcbi8qKioqKiovIFx0XHRcdFx0XHRcdGlmIChwYXJlbnQuaG90Ll9hY2NlcHRlZERlcGVuZGVuY2llc1ttb2R1bGVJZF0pIHtcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0aWYgKCFvdXRkYXRlZERlcGVuZGVuY2llc1twYXJlbnRJZF0pXG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdFx0b3V0ZGF0ZWREZXBlbmRlbmNpZXNbcGFyZW50SWRdID0gW107XG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdGFkZEFsbFRvU2V0KG91dGRhdGVkRGVwZW5kZW5jaWVzW3BhcmVudElkXSwgW21vZHVsZUlkXSk7XG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdGNvbnRpbnVlO1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0fVxuLyoqKioqKi8gXHRcdFx0XHRcdFx0ZGVsZXRlIG91dGRhdGVkRGVwZW5kZW5jaWVzW3BhcmVudElkXTtcbi8qKioqKiovIFx0XHRcdFx0XHRcdG91dGRhdGVkTW9kdWxlcy5wdXNoKHBhcmVudElkKTtcbi8qKioqKiovIFx0XHRcdFx0XHRcdHF1ZXVlLnB1c2goe1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHRjaGFpbjogY2hhaW4uY29uY2F0KFtwYXJlbnRJZF0pLFxuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHRpZDogcGFyZW50SWRcbi8qKioqKiovIFx0XHRcdFx0XHRcdH0pO1xuLyoqKioqKi8gXHRcdFx0XHRcdH1cbi8qKioqKiovIFx0XHRcdFx0fVxuLyoqKioqKi8gXHRcdFxuLyoqKioqKi8gXHRcdFx0XHRyZXR1cm4ge1xuLyoqKioqKi8gXHRcdFx0XHRcdHR5cGU6IFwiYWNjZXB0ZWRcIixcbi8qKioqKiovIFx0XHRcdFx0XHRtb2R1bGVJZDogdXBkYXRlTW9kdWxlSWQsXG4vKioqKioqLyBcdFx0XHRcdFx0b3V0ZGF0ZWRNb2R1bGVzOiBvdXRkYXRlZE1vZHVsZXMsXG4vKioqKioqLyBcdFx0XHRcdFx0b3V0ZGF0ZWREZXBlbmRlbmNpZXM6IG91dGRhdGVkRGVwZW5kZW5jaWVzXG4vKioqKioqLyBcdFx0XHRcdH07XG4vKioqKioqLyBcdFx0XHR9XG4vKioqKioqLyBcdFx0XG4vKioqKioqLyBcdFx0XHRmdW5jdGlvbiBhZGRBbGxUb1NldChhLCBiKSB7XG4vKioqKioqLyBcdFx0XHRcdGZvciAodmFyIGkgPSAwOyBpIDwgYi5sZW5ndGg7IGkrKykge1xuLyoqKioqKi8gXHRcdFx0XHRcdHZhciBpdGVtID0gYltpXTtcbi8qKioqKiovIFx0XHRcdFx0XHRpZiAoYS5pbmRleE9mKGl0ZW0pID09PSAtMSkgYS5wdXNoKGl0ZW0pO1xuLyoqKioqKi8gXHRcdFx0XHR9XG4vKioqKioqLyBcdFx0XHR9XG4vKioqKioqLyBcdFx0XG4vKioqKioqLyBcdFx0XHQvLyBhdCBiZWdpbiBhbGwgdXBkYXRlcyBtb2R1bGVzIGFyZSBvdXRkYXRlZFxuLyoqKioqKi8gXHRcdFx0Ly8gdGhlIFwib3V0ZGF0ZWRcIiBzdGF0dXMgY2FuIHByb3BhZ2F0ZSB0byBwYXJlbnRzIGlmIHRoZXkgZG9uJ3QgYWNjZXB0IHRoZSBjaGlsZHJlblxuLyoqKioqKi8gXHRcdFx0dmFyIG91dGRhdGVkRGVwZW5kZW5jaWVzID0ge307XG4vKioqKioqLyBcdFx0XHR2YXIgb3V0ZGF0ZWRNb2R1bGVzID0gW107XG4vKioqKioqLyBcdFx0XHR2YXIgYXBwbGllZFVwZGF0ZSA9IHt9O1xuLyoqKioqKi8gXHRcdFxuLyoqKioqKi8gXHRcdFx0dmFyIHdhcm5VbmV4cGVjdGVkUmVxdWlyZSA9IGZ1bmN0aW9uIHdhcm5VbmV4cGVjdGVkUmVxdWlyZShtb2R1bGUpIHtcbi8qKioqKiovIFx0XHRcdFx0Y29uc29sZS53YXJuKFxuLyoqKioqKi8gXHRcdFx0XHRcdFwiW0hNUl0gdW5leHBlY3RlZCByZXF1aXJlKFwiICsgbW9kdWxlLmlkICsgXCIpIHRvIGRpc3Bvc2VkIG1vZHVsZVwiXG4vKioqKioqLyBcdFx0XHRcdCk7XG4vKioqKioqLyBcdFx0XHR9O1xuLyoqKioqKi8gXHRcdFxuLyoqKioqKi8gXHRcdFx0Zm9yICh2YXIgbW9kdWxlSWQgaW4gY3VycmVudFVwZGF0ZSkge1xuLyoqKioqKi8gXHRcdFx0XHRpZiAoX193ZWJwYWNrX3JlcXVpcmVfXy5vKGN1cnJlbnRVcGRhdGUsIG1vZHVsZUlkKSkge1xuLyoqKioqKi8gXHRcdFx0XHRcdHZhciBuZXdNb2R1bGVGYWN0b3J5ID0gY3VycmVudFVwZGF0ZVttb2R1bGVJZF07XG4vKioqKioqLyBcdFx0XHRcdFx0LyoqIEB0eXBlIHtUT0RPfSAqL1xuLyoqKioqKi8gXHRcdFx0XHRcdHZhciByZXN1bHQgPSBuZXdNb2R1bGVGYWN0b3J5XG4vKioqKioqLyBcdFx0XHRcdFx0XHQ/IGdldEFmZmVjdGVkTW9kdWxlRWZmZWN0cyhtb2R1bGVJZClcbi8qKioqKiovIFx0XHRcdFx0XHRcdDoge1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHRcdHR5cGU6IFwiZGlzcG9zZWRcIixcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0XHRtb2R1bGVJZDogbW9kdWxlSWRcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0fTtcbi8qKioqKiovIFx0XHRcdFx0XHQvKiogQHR5cGUge0Vycm9yfGZhbHNlfSAqL1xuLyoqKioqKi8gXHRcdFx0XHRcdHZhciBhYm9ydEVycm9yID0gZmFsc2U7XG4vKioqKioqLyBcdFx0XHRcdFx0dmFyIGRvQXBwbHkgPSBmYWxzZTtcbi8qKioqKiovIFx0XHRcdFx0XHR2YXIgZG9EaXNwb3NlID0gZmFsc2U7XG4vKioqKioqLyBcdFx0XHRcdFx0dmFyIGNoYWluSW5mbyA9IFwiXCI7XG4vKioqKioqLyBcdFx0XHRcdFx0aWYgKHJlc3VsdC5jaGFpbikge1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0Y2hhaW5JbmZvID0gXCJcXG5VcGRhdGUgcHJvcGFnYXRpb246IFwiICsgcmVzdWx0LmNoYWluLmpvaW4oXCIgLT4gXCIpO1xuLyoqKioqKi8gXHRcdFx0XHRcdH1cbi8qKioqKiovIFx0XHRcdFx0XHRzd2l0Y2ggKHJlc3VsdC50eXBlKSB7XG4vKioqKioqLyBcdFx0XHRcdFx0XHRjYXNlIFwic2VsZi1kZWNsaW5lZFwiOlxuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHRpZiAob3B0aW9ucy5vbkRlY2xpbmVkKSBvcHRpb25zLm9uRGVjbGluZWQocmVzdWx0KTtcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0aWYgKCFvcHRpb25zLmlnbm9yZURlY2xpbmVkKVxuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHRcdGFib3J0RXJyb3IgPSBuZXcgRXJyb3IoXG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdFx0XHRcIkFib3J0ZWQgYmVjYXVzZSBvZiBzZWxmIGRlY2xpbmU6IFwiICtcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0XHRcdFx0cmVzdWx0Lm1vZHVsZUlkICtcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2hhaW5JbmZvXG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdFx0KTtcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0YnJlYWs7XG4vKioqKioqLyBcdFx0XHRcdFx0XHRjYXNlIFwiZGVjbGluZWRcIjpcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0aWYgKG9wdGlvbnMub25EZWNsaW5lZCkgb3B0aW9ucy5vbkRlY2xpbmVkKHJlc3VsdCk7XG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdGlmICghb3B0aW9ucy5pZ25vcmVEZWNsaW5lZClcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0XHRhYm9ydEVycm9yID0gbmV3IEVycm9yKFxuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHRcdFx0XCJBYm9ydGVkIGJlY2F1c2Ugb2YgZGVjbGluZWQgZGVwZW5kZW5jeTogXCIgK1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHRcdFx0XHRyZXN1bHQubW9kdWxlSWQgK1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHRcdFx0XHRcIiBpbiBcIiArXG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdFx0XHRcdHJlc3VsdC5wYXJlbnRJZCArXG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdFx0XHRcdGNoYWluSW5mb1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHRcdCk7XG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdGJyZWFrO1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0Y2FzZSBcInVuYWNjZXB0ZWRcIjpcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0aWYgKG9wdGlvbnMub25VbmFjY2VwdGVkKSBvcHRpb25zLm9uVW5hY2NlcHRlZChyZXN1bHQpO1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHRpZiAoIW9wdGlvbnMuaWdub3JlVW5hY2NlcHRlZClcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0XHRhYm9ydEVycm9yID0gbmV3IEVycm9yKFxuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHRcdFx0XCJBYm9ydGVkIGJlY2F1c2UgXCIgKyBtb2R1bGVJZCArIFwiIGlzIG5vdCBhY2NlcHRlZFwiICsgY2hhaW5JbmZvXG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdFx0KTtcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0YnJlYWs7XG4vKioqKioqLyBcdFx0XHRcdFx0XHRjYXNlIFwiYWNjZXB0ZWRcIjpcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0aWYgKG9wdGlvbnMub25BY2NlcHRlZCkgb3B0aW9ucy5vbkFjY2VwdGVkKHJlc3VsdCk7XG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdGRvQXBwbHkgPSB0cnVlO1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHRicmVhaztcbi8qKioqKiovIFx0XHRcdFx0XHRcdGNhc2UgXCJkaXNwb3NlZFwiOlxuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHRpZiAob3B0aW9ucy5vbkRpc3Bvc2VkKSBvcHRpb25zLm9uRGlzcG9zZWQocmVzdWx0KTtcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0ZG9EaXNwb3NlID0gdHJ1ZTtcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0YnJlYWs7XG4vKioqKioqLyBcdFx0XHRcdFx0XHRkZWZhdWx0OlxuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoXCJVbmV4Y2VwdGlvbiB0eXBlIFwiICsgcmVzdWx0LnR5cGUpO1xuLyoqKioqKi8gXHRcdFx0XHRcdH1cbi8qKioqKiovIFx0XHRcdFx0XHRpZiAoYWJvcnRFcnJvcikge1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0cmV0dXJuIHtcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0ZXJyb3I6IGFib3J0RXJyb3Jcbi8qKioqKiovIFx0XHRcdFx0XHRcdH07XG4vKioqKioqLyBcdFx0XHRcdFx0fVxuLyoqKioqKi8gXHRcdFx0XHRcdGlmIChkb0FwcGx5KSB7XG4vKioqKioqLyBcdFx0XHRcdFx0XHRhcHBsaWVkVXBkYXRlW21vZHVsZUlkXSA9IG5ld01vZHVsZUZhY3Rvcnk7XG4vKioqKioqLyBcdFx0XHRcdFx0XHRhZGRBbGxUb1NldChvdXRkYXRlZE1vZHVsZXMsIHJlc3VsdC5vdXRkYXRlZE1vZHVsZXMpO1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0Zm9yIChtb2R1bGVJZCBpbiByZXN1bHQub3V0ZGF0ZWREZXBlbmRlbmNpZXMpIHtcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0aWYgKF9fd2VicGFja19yZXF1aXJlX18ubyhyZXN1bHQub3V0ZGF0ZWREZXBlbmRlbmNpZXMsIG1vZHVsZUlkKSkge1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHRcdGlmICghb3V0ZGF0ZWREZXBlbmRlbmNpZXNbbW9kdWxlSWRdKVxuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHRcdFx0b3V0ZGF0ZWREZXBlbmRlbmNpZXNbbW9kdWxlSWRdID0gW107XG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdFx0YWRkQWxsVG9TZXQoXG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdFx0XHRvdXRkYXRlZERlcGVuZGVuY2llc1ttb2R1bGVJZF0sXG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdFx0XHRyZXN1bHQub3V0ZGF0ZWREZXBlbmRlbmNpZXNbbW9kdWxlSWRdXG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdFx0KTtcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0fVxuLyoqKioqKi8gXHRcdFx0XHRcdFx0fVxuLyoqKioqKi8gXHRcdFx0XHRcdH1cbi8qKioqKiovIFx0XHRcdFx0XHRpZiAoZG9EaXNwb3NlKSB7XG4vKioqKioqLyBcdFx0XHRcdFx0XHRhZGRBbGxUb1NldChvdXRkYXRlZE1vZHVsZXMsIFtyZXN1bHQubW9kdWxlSWRdKTtcbi8qKioqKiovIFx0XHRcdFx0XHRcdGFwcGxpZWRVcGRhdGVbbW9kdWxlSWRdID0gd2FyblVuZXhwZWN0ZWRSZXF1aXJlO1xuLyoqKioqKi8gXHRcdFx0XHRcdH1cbi8qKioqKiovIFx0XHRcdFx0fVxuLyoqKioqKi8gXHRcdFx0fVxuLyoqKioqKi8gXHRcdFx0Y3VycmVudFVwZGF0ZSA9IHVuZGVmaW5lZDtcbi8qKioqKiovIFx0XHRcbi8qKioqKiovIFx0XHRcdC8vIFN0b3JlIHNlbGYgYWNjZXB0ZWQgb3V0ZGF0ZWQgbW9kdWxlcyB0byByZXF1aXJlIHRoZW0gbGF0ZXIgYnkgdGhlIG1vZHVsZSBzeXN0ZW1cbi8qKioqKiovIFx0XHRcdHZhciBvdXRkYXRlZFNlbGZBY2NlcHRlZE1vZHVsZXMgPSBbXTtcbi8qKioqKiovIFx0XHRcdGZvciAodmFyIGogPSAwOyBqIDwgb3V0ZGF0ZWRNb2R1bGVzLmxlbmd0aDsgaisrKSB7XG4vKioqKioqLyBcdFx0XHRcdHZhciBvdXRkYXRlZE1vZHVsZUlkID0gb3V0ZGF0ZWRNb2R1bGVzW2pdO1xuLyoqKioqKi8gXHRcdFx0XHR2YXIgbW9kdWxlID0gX193ZWJwYWNrX3JlcXVpcmVfXy5jW291dGRhdGVkTW9kdWxlSWRdO1xuLyoqKioqKi8gXHRcdFx0XHRpZiAoXG4vKioqKioqLyBcdFx0XHRcdFx0bW9kdWxlICYmXG4vKioqKioqLyBcdFx0XHRcdFx0KG1vZHVsZS5ob3QuX3NlbGZBY2NlcHRlZCB8fCBtb2R1bGUuaG90Ll9tYWluKSAmJlxuLyoqKioqKi8gXHRcdFx0XHRcdC8vIHJlbW92ZWQgc2VsZi1hY2NlcHRlZCBtb2R1bGVzIHNob3VsZCBub3QgYmUgcmVxdWlyZWRcbi8qKioqKiovIFx0XHRcdFx0XHRhcHBsaWVkVXBkYXRlW291dGRhdGVkTW9kdWxlSWRdICE9PSB3YXJuVW5leHBlY3RlZFJlcXVpcmUgJiZcbi8qKioqKiovIFx0XHRcdFx0XHQvLyB3aGVuIGNhbGxlZCBpbnZhbGlkYXRlIHNlbGYtYWNjZXB0aW5nIGlzIG5vdCBwb3NzaWJsZVxuLyoqKioqKi8gXHRcdFx0XHRcdCFtb2R1bGUuaG90Ll9zZWxmSW52YWxpZGF0ZWRcbi8qKioqKiovIFx0XHRcdFx0KSB7XG4vKioqKioqLyBcdFx0XHRcdFx0b3V0ZGF0ZWRTZWxmQWNjZXB0ZWRNb2R1bGVzLnB1c2goe1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0bW9kdWxlOiBvdXRkYXRlZE1vZHVsZUlkLFxuLyoqKioqKi8gXHRcdFx0XHRcdFx0cmVxdWlyZTogbW9kdWxlLmhvdC5fcmVxdWlyZVNlbGYsXG4vKioqKioqLyBcdFx0XHRcdFx0XHRlcnJvckhhbmRsZXI6IG1vZHVsZS5ob3QuX3NlbGZBY2NlcHRlZFxuLyoqKioqKi8gXHRcdFx0XHRcdH0pO1xuLyoqKioqKi8gXHRcdFx0XHR9XG4vKioqKioqLyBcdFx0XHR9XG4vKioqKioqLyBcdFx0XG4vKioqKioqLyBcdFx0XHR2YXIgbW9kdWxlT3V0ZGF0ZWREZXBlbmRlbmNpZXM7XG4vKioqKioqLyBcdFx0XG4vKioqKioqLyBcdFx0XHRyZXR1cm4ge1xuLyoqKioqKi8gXHRcdFx0XHRkaXNwb3NlOiBmdW5jdGlvbiAoKSB7XG4vKioqKioqLyBcdFx0XHRcdFx0Y3VycmVudFVwZGF0ZVJlbW92ZWRDaHVua3MuZm9yRWFjaChmdW5jdGlvbiAoY2h1bmtJZCkge1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0ZGVsZXRlIGluc3RhbGxlZENodW5rc1tjaHVua0lkXTtcbi8qKioqKiovIFx0XHRcdFx0XHR9KTtcbi8qKioqKiovIFx0XHRcdFx0XHRjdXJyZW50VXBkYXRlUmVtb3ZlZENodW5rcyA9IHVuZGVmaW5lZDtcbi8qKioqKiovIFx0XHRcbi8qKioqKiovIFx0XHRcdFx0XHR2YXIgaWR4O1xuLyoqKioqKi8gXHRcdFx0XHRcdHZhciBxdWV1ZSA9IG91dGRhdGVkTW9kdWxlcy5zbGljZSgpO1xuLyoqKioqKi8gXHRcdFx0XHRcdHdoaWxlIChxdWV1ZS5sZW5ndGggPiAwKSB7XG4vKioqKioqLyBcdFx0XHRcdFx0XHR2YXIgbW9kdWxlSWQgPSBxdWV1ZS5wb3AoKTtcbi8qKioqKiovIFx0XHRcdFx0XHRcdHZhciBtb2R1bGUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fLmNbbW9kdWxlSWRdO1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0aWYgKCFtb2R1bGUpIGNvbnRpbnVlO1xuLyoqKioqKi8gXHRcdFxuLyoqKioqKi8gXHRcdFx0XHRcdFx0dmFyIGRhdGEgPSB7fTtcbi8qKioqKiovIFx0XHRcbi8qKioqKiovIFx0XHRcdFx0XHRcdC8vIENhbGwgZGlzcG9zZSBoYW5kbGVyc1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0dmFyIGRpc3Bvc2VIYW5kbGVycyA9IG1vZHVsZS5ob3QuX2Rpc3Bvc2VIYW5kbGVycztcbi8qKioqKiovIFx0XHRcdFx0XHRcdGZvciAoaiA9IDA7IGogPCBkaXNwb3NlSGFuZGxlcnMubGVuZ3RoOyBqKyspIHtcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0ZGlzcG9zZUhhbmRsZXJzW2pdLmNhbGwobnVsbCwgZGF0YSk7XG4vKioqKioqLyBcdFx0XHRcdFx0XHR9XG4vKioqKioqLyBcdFx0XHRcdFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLmhtckRbbW9kdWxlSWRdID0gZGF0YTtcbi8qKioqKiovIFx0XHRcbi8qKioqKiovIFx0XHRcdFx0XHRcdC8vIGRpc2FibGUgbW9kdWxlICh0aGlzIGRpc2FibGVzIHJlcXVpcmVzIGZyb20gdGhpcyBtb2R1bGUpXG4vKioqKioqLyBcdFx0XHRcdFx0XHRtb2R1bGUuaG90LmFjdGl2ZSA9IGZhbHNlO1xuLyoqKioqKi8gXHRcdFxuLyoqKioqKi8gXHRcdFx0XHRcdFx0Ly8gcmVtb3ZlIG1vZHVsZSBmcm9tIGNhY2hlXG4vKioqKioqLyBcdFx0XHRcdFx0XHRkZWxldGUgX193ZWJwYWNrX3JlcXVpcmVfXy5jW21vZHVsZUlkXTtcbi8qKioqKiovIFx0XHRcbi8qKioqKiovIFx0XHRcdFx0XHRcdC8vIHdoZW4gZGlzcG9zaW5nIHRoZXJlIGlzIG5vIG5lZWQgdG8gY2FsbCBkaXNwb3NlIGhhbmRsZXJcbi8qKioqKiovIFx0XHRcdFx0XHRcdGRlbGV0ZSBvdXRkYXRlZERlcGVuZGVuY2llc1ttb2R1bGVJZF07XG4vKioqKioqLyBcdFx0XG4vKioqKioqLyBcdFx0XHRcdFx0XHQvLyByZW1vdmUgXCJwYXJlbnRzXCIgcmVmZXJlbmNlcyBmcm9tIGFsbCBjaGlsZHJlblxuLyoqKioqKi8gXHRcdFx0XHRcdFx0Zm9yIChqID0gMDsgaiA8IG1vZHVsZS5jaGlsZHJlbi5sZW5ndGg7IGorKykge1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHR2YXIgY2hpbGQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fLmNbbW9kdWxlLmNoaWxkcmVuW2pdXTtcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0aWYgKCFjaGlsZCkgY29udGludWU7XG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdGlkeCA9IGNoaWxkLnBhcmVudHMuaW5kZXhPZihtb2R1bGVJZCk7XG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdGlmIChpZHggPj0gMCkge1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHRcdGNoaWxkLnBhcmVudHMuc3BsaWNlKGlkeCwgMSk7XG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdH1cbi8qKioqKiovIFx0XHRcdFx0XHRcdH1cbi8qKioqKiovIFx0XHRcdFx0XHR9XG4vKioqKioqLyBcdFx0XG4vKioqKioqLyBcdFx0XHRcdFx0Ly8gcmVtb3ZlIG91dGRhdGVkIGRlcGVuZGVuY3kgZnJvbSBtb2R1bGUgY2hpbGRyZW5cbi8qKioqKiovIFx0XHRcdFx0XHR2YXIgZGVwZW5kZW5jeTtcbi8qKioqKiovIFx0XHRcdFx0XHRmb3IgKHZhciBvdXRkYXRlZE1vZHVsZUlkIGluIG91dGRhdGVkRGVwZW5kZW5jaWVzKSB7XG4vKioqKioqLyBcdFx0XHRcdFx0XHRpZiAoX193ZWJwYWNrX3JlcXVpcmVfXy5vKG91dGRhdGVkRGVwZW5kZW5jaWVzLCBvdXRkYXRlZE1vZHVsZUlkKSkge1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHRtb2R1bGUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fLmNbb3V0ZGF0ZWRNb2R1bGVJZF07XG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdGlmIChtb2R1bGUpIHtcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0XHRtb2R1bGVPdXRkYXRlZERlcGVuZGVuY2llcyA9XG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdFx0XHRvdXRkYXRlZERlcGVuZGVuY2llc1tvdXRkYXRlZE1vZHVsZUlkXTtcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0XHRmb3IgKGogPSAwOyBqIDwgbW9kdWxlT3V0ZGF0ZWREZXBlbmRlbmNpZXMubGVuZ3RoOyBqKyspIHtcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0XHRcdGRlcGVuZGVuY3kgPSBtb2R1bGVPdXRkYXRlZERlcGVuZGVuY2llc1tqXTtcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0XHRcdGlkeCA9IG1vZHVsZS5jaGlsZHJlbi5pbmRleE9mKGRlcGVuZGVuY3kpO1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHRcdFx0aWYgKGlkeCA+PSAwKSBtb2R1bGUuY2hpbGRyZW4uc3BsaWNlKGlkeCwgMSk7XG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdFx0fVxuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHR9XG4vKioqKioqLyBcdFx0XHRcdFx0XHR9XG4vKioqKioqLyBcdFx0XHRcdFx0fVxuLyoqKioqKi8gXHRcdFx0XHR9LFxuLyoqKioqKi8gXHRcdFx0XHRhcHBseTogZnVuY3Rpb24gKHJlcG9ydEVycm9yKSB7XG4vKioqKioqLyBcdFx0XHRcdFx0Ly8gaW5zZXJ0IG5ldyBjb2RlXG4vKioqKioqLyBcdFx0XHRcdFx0Zm9yICh2YXIgdXBkYXRlTW9kdWxlSWQgaW4gYXBwbGllZFVwZGF0ZSkge1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0aWYgKF9fd2VicGFja19yZXF1aXJlX18ubyhhcHBsaWVkVXBkYXRlLCB1cGRhdGVNb2R1bGVJZCkpIHtcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5tW3VwZGF0ZU1vZHVsZUlkXSA9IGFwcGxpZWRVcGRhdGVbdXBkYXRlTW9kdWxlSWRdO1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0fVxuLyoqKioqKi8gXHRcdFx0XHRcdH1cbi8qKioqKiovIFx0XHRcbi8qKioqKiovIFx0XHRcdFx0XHQvLyBydW4gbmV3IHJ1bnRpbWUgbW9kdWxlc1xuLyoqKioqKi8gXHRcdFx0XHRcdGZvciAodmFyIGkgPSAwOyBpIDwgY3VycmVudFVwZGF0ZVJ1bnRpbWUubGVuZ3RoOyBpKyspIHtcbi8qKioqKiovIFx0XHRcdFx0XHRcdGN1cnJlbnRVcGRhdGVSdW50aW1lW2ldKF9fd2VicGFja19yZXF1aXJlX18pO1xuLyoqKioqKi8gXHRcdFx0XHRcdH1cbi8qKioqKiovIFx0XHRcbi8qKioqKiovIFx0XHRcdFx0XHQvLyBjYWxsIGFjY2VwdCBoYW5kbGVyc1xuLyoqKioqKi8gXHRcdFx0XHRcdGZvciAodmFyIG91dGRhdGVkTW9kdWxlSWQgaW4gb3V0ZGF0ZWREZXBlbmRlbmNpZXMpIHtcbi8qKioqKiovIFx0XHRcdFx0XHRcdGlmIChfX3dlYnBhY2tfcmVxdWlyZV9fLm8ob3V0ZGF0ZWREZXBlbmRlbmNpZXMsIG91dGRhdGVkTW9kdWxlSWQpKSB7XG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdHZhciBtb2R1bGUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fLmNbb3V0ZGF0ZWRNb2R1bGVJZF07XG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdGlmIChtb2R1bGUpIHtcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0XHRtb2R1bGVPdXRkYXRlZERlcGVuZGVuY2llcyA9XG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdFx0XHRvdXRkYXRlZERlcGVuZGVuY2llc1tvdXRkYXRlZE1vZHVsZUlkXTtcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0XHR2YXIgY2FsbGJhY2tzID0gW107XG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdFx0dmFyIGVycm9ySGFuZGxlcnMgPSBbXTtcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0XHR2YXIgZGVwZW5kZW5jaWVzRm9yQ2FsbGJhY2tzID0gW107XG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgaiA9IDA7IGogPCBtb2R1bGVPdXRkYXRlZERlcGVuZGVuY2llcy5sZW5ndGg7IGorKykge1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHRcdFx0dmFyIGRlcGVuZGVuY3kgPSBtb2R1bGVPdXRkYXRlZERlcGVuZGVuY2llc1tqXTtcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0XHRcdHZhciBhY2NlcHRDYWxsYmFjayA9XG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdFx0XHRcdG1vZHVsZS5ob3QuX2FjY2VwdGVkRGVwZW5kZW5jaWVzW2RlcGVuZGVuY3ldO1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHRcdFx0dmFyIGVycm9ySGFuZGxlciA9XG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdFx0XHRcdG1vZHVsZS5ob3QuX2FjY2VwdGVkRXJyb3JIYW5kbGVyc1tkZXBlbmRlbmN5XTtcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0XHRcdGlmIChhY2NlcHRDYWxsYmFjaykge1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoY2FsbGJhY2tzLmluZGV4T2YoYWNjZXB0Q2FsbGJhY2spICE9PSAtMSkgY29udGludWU7XG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdFx0XHRcdGNhbGxiYWNrcy5wdXNoKGFjY2VwdENhbGxiYWNrKTtcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0XHRcdFx0ZXJyb3JIYW5kbGVycy5wdXNoKGVycm9ySGFuZGxlcik7XG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdFx0XHRcdGRlcGVuZGVuY2llc0ZvckNhbGxiYWNrcy5wdXNoKGRlcGVuZGVuY3kpO1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHRcdFx0fVxuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHRcdH1cbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0XHRmb3IgKHZhciBrID0gMDsgayA8IGNhbGxiYWNrcy5sZW5ndGg7IGsrKykge1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHRcdFx0dHJ5IHtcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2FsbGJhY2tzW2tdLmNhbGwobnVsbCwgbW9kdWxlT3V0ZGF0ZWREZXBlbmRlbmNpZXMpO1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHRcdFx0fSBjYXRjaCAoZXJyKSB7XG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdFx0XHRcdGlmICh0eXBlb2YgZXJyb3JIYW5kbGVyc1trXSA9PT0gXCJmdW5jdGlvblwiKSB7XG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dHJ5IHtcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGVycm9ySGFuZGxlcnNba10oZXJyLCB7XG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdG1vZHVsZUlkOiBvdXRkYXRlZE1vZHVsZUlkLFxuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRkZXBlbmRlbmN5SWQ6IGRlcGVuZGVuY2llc0ZvckNhbGxiYWNrc1trXVxuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSk7XG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSBjYXRjaCAoZXJyMikge1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKG9wdGlvbnMub25FcnJvcmVkKSB7XG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdG9wdGlvbnMub25FcnJvcmVkKHtcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0eXBlOiBcImFjY2VwdC1lcnJvci1oYW5kbGVyLWVycm9yZWRcIixcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRtb2R1bGVJZDogb3V0ZGF0ZWRNb2R1bGVJZCxcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRkZXBlbmRlbmN5SWQ6IGRlcGVuZGVuY2llc0ZvckNhbGxiYWNrc1trXSxcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRlcnJvcjogZXJyMixcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRvcmlnaW5hbEVycm9yOiBlcnJcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSk7XG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoIW9wdGlvbnMuaWdub3JlRXJyb3JlZCkge1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXBvcnRFcnJvcihlcnIyKTtcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmVwb3J0RXJyb3IoZXJyKTtcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKG9wdGlvbnMub25FcnJvcmVkKSB7XG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRvcHRpb25zLm9uRXJyb3JlZCh7XG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHR5cGU6IFwiYWNjZXB0LWVycm9yZWRcIixcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0bW9kdWxlSWQ6IG91dGRhdGVkTW9kdWxlSWQsXG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGRlcGVuZGVuY3lJZDogZGVwZW5kZW5jaWVzRm9yQ2FsbGJhY2tzW2tdLFxuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRlcnJvcjogZXJyXG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9KTtcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKCFvcHRpb25zLmlnbm9yZUVycm9yZWQpIHtcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJlcG9ydEVycm9yKGVycik7XG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHRcdFx0XHR9XG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdFx0XHR9XG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdFx0fVxuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHR9XG4vKioqKioqLyBcdFx0XHRcdFx0XHR9XG4vKioqKioqLyBcdFx0XHRcdFx0fVxuLyoqKioqKi8gXHRcdFxuLyoqKioqKi8gXHRcdFx0XHRcdC8vIExvYWQgc2VsZiBhY2NlcHRlZCBtb2R1bGVzXG4vKioqKioqLyBcdFx0XHRcdFx0Zm9yICh2YXIgbyA9IDA7IG8gPCBvdXRkYXRlZFNlbGZBY2NlcHRlZE1vZHVsZXMubGVuZ3RoOyBvKyspIHtcbi8qKioqKiovIFx0XHRcdFx0XHRcdHZhciBpdGVtID0gb3V0ZGF0ZWRTZWxmQWNjZXB0ZWRNb2R1bGVzW29dO1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0dmFyIG1vZHVsZUlkID0gaXRlbS5tb2R1bGU7XG4vKioqKioqLyBcdFx0XHRcdFx0XHR0cnkge1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHRpdGVtLnJlcXVpcmUobW9kdWxlSWQpO1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0fSBjYXRjaCAoZXJyKSB7XG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdGlmICh0eXBlb2YgaXRlbS5lcnJvckhhbmRsZXIgPT09IFwiZnVuY3Rpb25cIikge1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHRcdHRyeSB7XG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdFx0XHRpdGVtLmVycm9ySGFuZGxlcihlcnIsIHtcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0XHRcdFx0bW9kdWxlSWQ6IG1vZHVsZUlkLFxuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHRcdFx0XHRtb2R1bGU6IF9fd2VicGFja19yZXF1aXJlX18uY1ttb2R1bGVJZF1cbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0XHRcdH0pO1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHRcdH0gY2F0Y2ggKGVycjEpIHtcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0XHRcdGlmIChvcHRpb25zLm9uRXJyb3JlZCkge1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHRcdFx0XHRvcHRpb25zLm9uRXJyb3JlZCh7XG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dHlwZTogXCJzZWxmLWFjY2VwdC1lcnJvci1oYW5kbGVyLWVycm9yZWRcIixcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRtb2R1bGVJZDogbW9kdWxlSWQsXG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZXJyb3I6IGVycjEsXG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdFx0XHRcdFx0b3JpZ2luYWxFcnJvcjogZXJyXG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdFx0XHRcdH0pO1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHRcdFx0fVxuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHRcdFx0aWYgKCFvcHRpb25zLmlnbm9yZUVycm9yZWQpIHtcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0XHRcdFx0cmVwb3J0RXJyb3IoZXJyMSk7XG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdFx0XHRcdHJlcG9ydEVycm9yKGVycik7XG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdFx0XHR9XG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdFx0fVxuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHR9IGVsc2Uge1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHRcdGlmIChvcHRpb25zLm9uRXJyb3JlZCkge1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHRcdFx0b3B0aW9ucy5vbkVycm9yZWQoe1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHRcdFx0XHR0eXBlOiBcInNlbGYtYWNjZXB0LWVycm9yZWRcIixcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0XHRcdFx0bW9kdWxlSWQ6IG1vZHVsZUlkLFxuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHRcdFx0XHRlcnJvcjogZXJyXG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdFx0XHR9KTtcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0XHR9XG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdFx0aWYgKCFvcHRpb25zLmlnbm9yZUVycm9yZWQpIHtcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0XHRcdHJlcG9ydEVycm9yKGVycik7XG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdFx0fVxuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHR9XG4vKioqKioqLyBcdFx0XHRcdFx0XHR9XG4vKioqKioqLyBcdFx0XHRcdFx0fVxuLyoqKioqKi8gXHRcdFxuLyoqKioqKi8gXHRcdFx0XHRcdHJldHVybiBvdXRkYXRlZE1vZHVsZXM7XG4vKioqKioqLyBcdFx0XHRcdH1cbi8qKioqKiovIFx0XHRcdH07XG4vKioqKioqLyBcdFx0fVxuLyoqKioqKi8gXHRcdF9fd2VicGFja19yZXF1aXJlX18uaG1ySS5qc29ucCA9IGZ1bmN0aW9uIChtb2R1bGVJZCwgYXBwbHlIYW5kbGVycykge1xuLyoqKioqKi8gXHRcdFx0aWYgKCFjdXJyZW50VXBkYXRlKSB7XG4vKioqKioqLyBcdFx0XHRcdGN1cnJlbnRVcGRhdGUgPSB7fTtcbi8qKioqKiovIFx0XHRcdFx0Y3VycmVudFVwZGF0ZVJ1bnRpbWUgPSBbXTtcbi8qKioqKiovIFx0XHRcdFx0Y3VycmVudFVwZGF0ZVJlbW92ZWRDaHVua3MgPSBbXTtcbi8qKioqKiovIFx0XHRcdFx0YXBwbHlIYW5kbGVycy5wdXNoKGFwcGx5SGFuZGxlcik7XG4vKioqKioqLyBcdFx0XHR9XG4vKioqKioqLyBcdFx0XHRpZiAoIV9fd2VicGFja19yZXF1aXJlX18ubyhjdXJyZW50VXBkYXRlLCBtb2R1bGVJZCkpIHtcbi8qKioqKiovIFx0XHRcdFx0Y3VycmVudFVwZGF0ZVttb2R1bGVJZF0gPSBfX3dlYnBhY2tfcmVxdWlyZV9fLm1bbW9kdWxlSWRdO1xuLyoqKioqKi8gXHRcdFx0fVxuLyoqKioqKi8gXHRcdH07XG4vKioqKioqLyBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5obXJDLmpzb25wID0gZnVuY3Rpb24gKFxuLyoqKioqKi8gXHRcdFx0Y2h1bmtJZHMsXG4vKioqKioqLyBcdFx0XHRyZW1vdmVkQ2h1bmtzLFxuLyoqKioqKi8gXHRcdFx0cmVtb3ZlZE1vZHVsZXMsXG4vKioqKioqLyBcdFx0XHRwcm9taXNlcyxcbi8qKioqKiovIFx0XHRcdGFwcGx5SGFuZGxlcnMsXG4vKioqKioqLyBcdFx0XHR1cGRhdGVkTW9kdWxlc0xpc3Rcbi8qKioqKiovIFx0XHQpIHtcbi8qKioqKiovIFx0XHRcdGFwcGx5SGFuZGxlcnMucHVzaChhcHBseUhhbmRsZXIpO1xuLyoqKioqKi8gXHRcdFx0Y3VycmVudFVwZGF0ZUNodW5rcyA9IHt9O1xuLyoqKioqKi8gXHRcdFx0Y3VycmVudFVwZGF0ZVJlbW92ZWRDaHVua3MgPSByZW1vdmVkQ2h1bmtzO1xuLyoqKioqKi8gXHRcdFx0Y3VycmVudFVwZGF0ZSA9IHJlbW92ZWRNb2R1bGVzLnJlZHVjZShmdW5jdGlvbiAob2JqLCBrZXkpIHtcbi8qKioqKiovIFx0XHRcdFx0b2JqW2tleV0gPSBmYWxzZTtcbi8qKioqKiovIFx0XHRcdFx0cmV0dXJuIG9iajtcbi8qKioqKiovIFx0XHRcdH0sIHt9KTtcbi8qKioqKiovIFx0XHRcdGN1cnJlbnRVcGRhdGVSdW50aW1lID0gW107XG4vKioqKioqLyBcdFx0XHRjaHVua0lkcy5mb3JFYWNoKGZ1bmN0aW9uIChjaHVua0lkKSB7XG4vKioqKioqLyBcdFx0XHRcdGlmIChcbi8qKioqKiovIFx0XHRcdFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLm8oaW5zdGFsbGVkQ2h1bmtzLCBjaHVua0lkKSAmJlxuLyoqKioqKi8gXHRcdFx0XHRcdGluc3RhbGxlZENodW5rc1tjaHVua0lkXSAhPT0gdW5kZWZpbmVkXG4vKioqKioqLyBcdFx0XHRcdCkge1xuLyoqKioqKi8gXHRcdFx0XHRcdHByb21pc2VzLnB1c2gobG9hZFVwZGF0ZUNodW5rKGNodW5rSWQsIHVwZGF0ZWRNb2R1bGVzTGlzdCkpO1xuLyoqKioqKi8gXHRcdFx0XHRcdGN1cnJlbnRVcGRhdGVDaHVua3NbY2h1bmtJZF0gPSB0cnVlO1xuLyoqKioqKi8gXHRcdFx0XHR9IGVsc2Uge1xuLyoqKioqKi8gXHRcdFx0XHRcdGN1cnJlbnRVcGRhdGVDaHVua3NbY2h1bmtJZF0gPSBmYWxzZTtcbi8qKioqKiovIFx0XHRcdFx0fVxuLyoqKioqKi8gXHRcdFx0fSk7XG4vKioqKioqLyBcdFx0XHRpZiAoX193ZWJwYWNrX3JlcXVpcmVfXy5mKSB7XG4vKioqKioqLyBcdFx0XHRcdF9fd2VicGFja19yZXF1aXJlX18uZi5qc29ucEhtciA9IGZ1bmN0aW9uIChjaHVua0lkLCBwcm9taXNlcykge1xuLyoqKioqKi8gXHRcdFx0XHRcdGlmIChcbi8qKioqKiovIFx0XHRcdFx0XHRcdGN1cnJlbnRVcGRhdGVDaHVua3MgJiZcbi8qKioqKiovIFx0XHRcdFx0XHRcdF9fd2VicGFja19yZXF1aXJlX18ubyhjdXJyZW50VXBkYXRlQ2h1bmtzLCBjaHVua0lkKSAmJlxuLyoqKioqKi8gXHRcdFx0XHRcdFx0IWN1cnJlbnRVcGRhdGVDaHVua3NbY2h1bmtJZF1cbi8qKioqKiovIFx0XHRcdFx0XHQpIHtcbi8qKioqKiovIFx0XHRcdFx0XHRcdHByb21pc2VzLnB1c2gobG9hZFVwZGF0ZUNodW5rKGNodW5rSWQpKTtcbi8qKioqKiovIFx0XHRcdFx0XHRcdGN1cnJlbnRVcGRhdGVDaHVua3NbY2h1bmtJZF0gPSB0cnVlO1xuLyoqKioqKi8gXHRcdFx0XHRcdH1cbi8qKioqKiovIFx0XHRcdFx0fTtcbi8qKioqKiovIFx0XHRcdH1cbi8qKioqKiovIFx0XHR9O1xuLyoqKioqKi8gXHRcdFxuLyoqKioqKi8gXHRcdF9fd2VicGFja19yZXF1aXJlX18uaG1yTSA9ICgpID0+IHtcbi8qKioqKiovIFx0XHRcdGlmICh0eXBlb2YgZmV0Y2ggPT09IFwidW5kZWZpbmVkXCIpIHRocm93IG5ldyBFcnJvcihcIk5vIGJyb3dzZXIgc3VwcG9ydDogbmVlZCBmZXRjaCBBUElcIik7XG4vKioqKioqLyBcdFx0XHRyZXR1cm4gZmV0Y2goX193ZWJwYWNrX3JlcXVpcmVfXy5wICsgX193ZWJwYWNrX3JlcXVpcmVfXy5obXJGKCkpLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG4vKioqKioqLyBcdFx0XHRcdGlmKHJlc3BvbnNlLnN0YXR1cyA9PT0gNDA0KSByZXR1cm47IC8vIG5vIHVwZGF0ZSBhdmFpbGFibGVcbi8qKioqKiovIFx0XHRcdFx0aWYoIXJlc3BvbnNlLm9rKSB0aHJvdyBuZXcgRXJyb3IoXCJGYWlsZWQgdG8gZmV0Y2ggdXBkYXRlIG1hbmlmZXN0IFwiICsgcmVzcG9uc2Uuc3RhdHVzVGV4dCk7XG4vKioqKioqLyBcdFx0XHRcdHJldHVybiByZXNwb25zZS5qc29uKCk7XG4vKioqKioqLyBcdFx0XHR9KTtcbi8qKioqKiovIFx0XHR9O1xuLyoqKioqKi8gXHRcdFxuLyoqKioqKi8gXHRcdF9fd2VicGFja19yZXF1aXJlX18uTy5qID0gKGNodW5rSWQpID0+IChpbnN0YWxsZWRDaHVua3NbY2h1bmtJZF0gPT09IDApO1xuLyoqKioqKi8gXHRcdFxuLyoqKioqKi8gXHRcdC8vIGluc3RhbGwgYSBKU09OUCBjYWxsYmFjayBmb3IgY2h1bmsgbG9hZGluZ1xuLyoqKioqKi8gXHRcdHZhciB3ZWJwYWNrSnNvbnBDYWxsYmFjayA9IChwYXJlbnRDaHVua0xvYWRpbmdGdW5jdGlvbiwgZGF0YSkgPT4ge1xuLyoqKioqKi8gXHRcdFx0dmFyIFtjaHVua0lkcywgbW9yZU1vZHVsZXMsIHJ1bnRpbWVdID0gZGF0YTtcbi8qKioqKiovIFx0XHRcdC8vIGFkZCBcIm1vcmVNb2R1bGVzXCIgdG8gdGhlIG1vZHVsZXMgb2JqZWN0LFxuLyoqKioqKi8gXHRcdFx0Ly8gdGhlbiBmbGFnIGFsbCBcImNodW5rSWRzXCIgYXMgbG9hZGVkIGFuZCBmaXJlIGNhbGxiYWNrXG4vKioqKioqLyBcdFx0XHR2YXIgbW9kdWxlSWQsIGNodW5rSWQsIGkgPSAwO1xuLyoqKioqKi8gXHRcdFx0aWYoY2h1bmtJZHMuc29tZSgoaWQpID0+IChpbnN0YWxsZWRDaHVua3NbaWRdICE9PSAwKSkpIHtcbi8qKioqKiovIFx0XHRcdFx0Zm9yKG1vZHVsZUlkIGluIG1vcmVNb2R1bGVzKSB7XG4vKioqKioqLyBcdFx0XHRcdFx0aWYoX193ZWJwYWNrX3JlcXVpcmVfXy5vKG1vcmVNb2R1bGVzLCBtb2R1bGVJZCkpIHtcbi8qKioqKiovIFx0XHRcdFx0XHRcdF9fd2VicGFja19yZXF1aXJlX18ubVttb2R1bGVJZF0gPSBtb3JlTW9kdWxlc1ttb2R1bGVJZF07XG4vKioqKioqLyBcdFx0XHRcdFx0fVxuLyoqKioqKi8gXHRcdFx0XHR9XG4vKioqKioqLyBcdFx0XHRcdGlmKHJ1bnRpbWUpIHZhciByZXN1bHQgPSBydW50aW1lKF9fd2VicGFja19yZXF1aXJlX18pO1xuLyoqKioqKi8gXHRcdFx0fVxuLyoqKioqKi8gXHRcdFx0aWYocGFyZW50Q2h1bmtMb2FkaW5nRnVuY3Rpb24pIHBhcmVudENodW5rTG9hZGluZ0Z1bmN0aW9uKGRhdGEpO1xuLyoqKioqKi8gXHRcdFx0Zm9yKDtpIDwgY2h1bmtJZHMubGVuZ3RoOyBpKyspIHtcbi8qKioqKiovIFx0XHRcdFx0Y2h1bmtJZCA9IGNodW5rSWRzW2ldO1xuLyoqKioqKi8gXHRcdFx0XHRpZihfX3dlYnBhY2tfcmVxdWlyZV9fLm8oaW5zdGFsbGVkQ2h1bmtzLCBjaHVua0lkKSAmJiBpbnN0YWxsZWRDaHVua3NbY2h1bmtJZF0pIHtcbi8qKioqKiovIFx0XHRcdFx0XHRpbnN0YWxsZWRDaHVua3NbY2h1bmtJZF1bMF0oKTtcbi8qKioqKiovIFx0XHRcdFx0fVxuLyoqKioqKi8gXHRcdFx0XHRpbnN0YWxsZWRDaHVua3NbY2h1bmtJZF0gPSAwO1xuLyoqKioqKi8gXHRcdFx0fVxuLyoqKioqKi8gXHRcdFx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18uTyhyZXN1bHQpO1xuLyoqKioqKi8gXHRcdH1cbi8qKioqKiovIFx0XHRcbi8qKioqKiovIFx0XHR2YXIgY2h1bmtMb2FkaW5nR2xvYmFsID0gc2VsZltcIndlYnBhY2tDaHVua19OX0VcIl0gPSBzZWxmW1wid2VicGFja0NodW5rX05fRVwiXSB8fCBbXTtcbi8qKioqKiovIFx0XHRjaHVua0xvYWRpbmdHbG9iYWwuZm9yRWFjaCh3ZWJwYWNrSnNvbnBDYWxsYmFjay5iaW5kKG51bGwsIDApKTtcbi8qKioqKiovIFx0XHRjaHVua0xvYWRpbmdHbG9iYWwucHVzaCA9IHdlYnBhY2tKc29ucENhbGxiYWNrLmJpbmQobnVsbCwgY2h1bmtMb2FkaW5nR2xvYmFsLnB1c2guYmluZChjaHVua0xvYWRpbmdHbG9iYWwpKTtcbi8qKioqKiovIFx0fSkoKTtcbi8qKioqKiovIFx0XG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqKioqKi8gXHRcbi8qKioqKiovIFx0Ly8gbW9kdWxlIGNhY2hlIGFyZSB1c2VkIHNvIGVudHJ5IGlubGluaW5nIGlzIGRpc2FibGVkXG4vKioqKioqLyBcdFxuLyoqKioqKi8gfSkoKVxuIl19 +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJpZ25vcmVMaXN0IjpbMF0sIm1hcHBpbmdzIjoiQUFBQSIsInNvdXJjZXMiOlsid2VicGFjay1pbnRlcm5hbDovL25leHRqcy93ZWJwYWNrLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFRoaXMgc291cmNlIHdhcyBnZW5lcmF0ZWQgYnkgTmV4dC5qcyBiYXNlZCBvZmYgb2YgdGhlIGdlbmVyYXRlZCBXZWJwYWNrIHJ1bnRpbWUuXG4vLyBUaGUgbWFwcGluZ3MgYXJlIGluY29ycmVjdC5cbi8vIFRvIGdldCB0aGUgY29ycmVjdCBsaW5lL2NvbHVtbiBtYXBwaW5ncywgdHVybiBvZmYgc291cmNlbWFwcyBpbiB5b3VyIGRlYnVnZ2VyLlxuXG4vKioqKioqLyAoKCkgPT4geyAvLyB3ZWJwYWNrQm9vdHN0cmFwXG4vKioqKioqLyBcdFwidXNlIHN0cmljdFwiO1xuLyoqKioqKi8gXHR2YXIgX193ZWJwYWNrX21vZHVsZXNfXyA9ICh7fSk7XG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqKioqKi8gXHQvLyBUaGUgbW9kdWxlIGNhY2hlXG4vKioqKioqLyBcdHZhciBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX18gPSB7fTtcbi8qKioqKiovIFx0XG4vKioqKioqLyBcdC8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG4vKioqKioqLyBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcbi8qKioqKiovIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbi8qKioqKiovIFx0XHR2YXIgY2FjaGVkTW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXTtcbi8qKioqKiovIFx0XHRpZiAoY2FjaGVkTW9kdWxlICE9PSB1bmRlZmluZWQpIHtcbi8qKioqKiovIFx0XHRcdGlmIChjYWNoZWRNb2R1bGUuZXJyb3IgIT09IHVuZGVmaW5lZCkgdGhyb3cgY2FjaGVkTW9kdWxlLmVycm9yO1xuLyoqKioqKi8gXHRcdFx0cmV0dXJuIGNhY2hlZE1vZHVsZS5leHBvcnRzO1xuLyoqKioqKi8gXHRcdH1cbi8qKioqKiovIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuLyoqKioqKi8gXHRcdHZhciBtb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdID0ge1xuLyoqKioqKi8gXHRcdFx0aWQ6IG1vZHVsZUlkLFxuLyoqKioqKi8gXHRcdFx0bG9hZGVkOiBmYWxzZSxcbi8qKioqKiovIFx0XHRcdGV4cG9ydHM6IHt9XG4vKioqKioqLyBcdFx0fTtcbi8qKioqKiovIFx0XG4vKioqKioqLyBcdFx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG4vKioqKioqLyBcdFx0dmFyIHRocmV3ID0gdHJ1ZTtcbi8qKioqKiovIFx0XHR0cnkge1xuLyoqKioqKi8gXHRcdFx0dmFyIGV4ZWNPcHRpb25zID0geyBpZDogbW9kdWxlSWQsIG1vZHVsZTogbW9kdWxlLCBmYWN0b3J5OiBfX3dlYnBhY2tfbW9kdWxlc19fW21vZHVsZUlkXSwgcmVxdWlyZTogX193ZWJwYWNrX3JlcXVpcmVfXyB9O1xuLyoqKioqKi8gXHRcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5pLmZvckVhY2goZnVuY3Rpb24oaGFuZGxlcikgeyBoYW5kbGVyKGV4ZWNPcHRpb25zKTsgfSk7XG4vKioqKioqLyBcdFx0XHRtb2R1bGUgPSBleGVjT3B0aW9ucy5tb2R1bGU7XG4vKioqKioqLyBcdFx0XHRleGVjT3B0aW9ucy5mYWN0b3J5LmNhbGwobW9kdWxlLmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIGV4ZWNPcHRpb25zLnJlcXVpcmUpO1xuLyoqKioqKi8gXHRcdFx0dGhyZXcgPSBmYWxzZTtcbi8qKioqKiovIFx0XHR9IGZpbmFsbHkge1xuLyoqKioqKi8gXHRcdFx0aWYodGhyZXcpIGRlbGV0ZSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdO1xuLyoqKioqKi8gXHRcdH1cbi8qKioqKiovIFx0XG4vKioqKioqLyBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuLyoqKioqKi8gXHRcdG1vZHVsZS5sb2FkZWQgPSB0cnVlO1xuLyoqKioqKi8gXHRcbi8qKioqKiovIFx0XHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuLyoqKioqKi8gXHRcdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbi8qKioqKiovIFx0fVxuLyoqKioqKi8gXHRcbi8qKioqKiovIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXylcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5tID0gX193ZWJwYWNrX21vZHVsZXNfXztcbi8qKioqKiovIFx0XG4vKioqKioqLyBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlIGNhY2hlXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18uYyA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfXztcbi8qKioqKiovIFx0XG4vKioqKioqLyBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlIGV4ZWN1dGlvbiBpbnRlcmNlcHRvclxuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmkgPSBbXTtcbi8qKioqKiovIFx0XG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqKioqKi8gXHQvKiB3ZWJwYWNrL3J1bnRpbWUvY2h1bmsgbG9hZGVkICovXG4vKioqKioqLyBcdCgoKSA9PiB7XG4vKioqKioqLyBcdFx0dmFyIGRlZmVycmVkID0gW107XG4vKioqKioqLyBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5PID0gKHJlc3VsdCwgY2h1bmtJZHMsIGZuLCBwcmlvcml0eSkgPT4ge1xuLyoqKioqKi8gXHRcdFx0aWYoY2h1bmtJZHMpIHtcbi8qKioqKiovIFx0XHRcdFx0cHJpb3JpdHkgPSBwcmlvcml0eSB8fCAwO1xuLyoqKioqKi8gXHRcdFx0XHRmb3IodmFyIGkgPSBkZWZlcnJlZC5sZW5ndGg7IGkgPiAwICYmIGRlZmVycmVkW2kgLSAxXVsyXSA+IHByaW9yaXR5OyBpLS0pIGRlZmVycmVkW2ldID0gZGVmZXJyZWRbaSAtIDFdO1xuLyoqKioqKi8gXHRcdFx0XHRkZWZlcnJlZFtpXSA9IFtjaHVua0lkcywgZm4sIHByaW9yaXR5XTtcbi8qKioqKiovIFx0XHRcdFx0cmV0dXJuO1xuLyoqKioqKi8gXHRcdFx0fVxuLyoqKioqKi8gXHRcdFx0dmFyIG5vdEZ1bGZpbGxlZCA9IEluZmluaXR5O1xuLyoqKioqKi8gXHRcdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCBkZWZlcnJlZC5sZW5ndGg7IGkrKykge1xuLyoqKioqKi8gXHRcdFx0XHR2YXIgW2NodW5rSWRzLCBmbiwgcHJpb3JpdHldID0gZGVmZXJyZWRbaV07XG4vKioqKioqLyBcdFx0XHRcdHZhciBmdWxmaWxsZWQgPSB0cnVlO1xuLyoqKioqKi8gXHRcdFx0XHRmb3IgKHZhciBqID0gMDsgaiA8IGNodW5rSWRzLmxlbmd0aDsgaisrKSB7XG4vKioqKioqLyBcdFx0XHRcdFx0aWYgKChwcmlvcml0eSAmIDEgPT09IDAgfHwgbm90RnVsZmlsbGVkID49IHByaW9yaXR5KSAmJiBPYmplY3Qua2V5cyhfX3dlYnBhY2tfcmVxdWlyZV9fLk8pLmV2ZXJ5KChrZXkpID0+IChfX3dlYnBhY2tfcmVxdWlyZV9fLk9ba2V5XShjaHVua0lkc1tqXSkpKSkge1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0Y2h1bmtJZHMuc3BsaWNlKGotLSwgMSk7XG4vKioqKioqLyBcdFx0XHRcdFx0fSBlbHNlIHtcbi8qKioqKiovIFx0XHRcdFx0XHRcdGZ1bGZpbGxlZCA9IGZhbHNlO1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0aWYocHJpb3JpdHkgPCBub3RGdWxmaWxsZWQpIG5vdEZ1bGZpbGxlZCA9IHByaW9yaXR5O1xuLyoqKioqKi8gXHRcdFx0XHRcdH1cbi8qKioqKiovIFx0XHRcdFx0fVxuLyoqKioqKi8gXHRcdFx0XHRpZihmdWxmaWxsZWQpIHtcbi8qKioqKiovIFx0XHRcdFx0XHRkZWZlcnJlZC5zcGxpY2UoaS0tLCAxKVxuLyoqKioqKi8gXHRcdFx0XHRcdHZhciByID0gZm4oKTtcbi8qKioqKiovIFx0XHRcdFx0XHRpZiAociAhPT0gdW5kZWZpbmVkKSByZXN1bHQgPSByO1xuLyoqKioqKi8gXHRcdFx0XHR9XG4vKioqKioqLyBcdFx0XHR9XG4vKioqKioqLyBcdFx0XHRyZXR1cm4gcmVzdWx0O1xuLyoqKioqKi8gXHRcdH07XG4vKioqKioqLyBcdH0pKCk7XG4vKioqKioqLyBcdFxuLyoqKioqKi8gXHQvKiB3ZWJwYWNrL3J1bnRpbWUvY29tcGF0IGdldCBkZWZhdWx0IGV4cG9ydCAqL1xuLyoqKioqKi8gXHQoKCkgPT4ge1xuLyoqKioqKi8gXHRcdC8vIGdldERlZmF1bHRFeHBvcnQgZnVuY3Rpb24gZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBub24taGFybW9ueSBtb2R1bGVzXG4vKioqKioqLyBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5uID0gKG1vZHVsZSkgPT4ge1xuLyoqKioqKi8gXHRcdFx0dmFyIGdldHRlciA9IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XG4vKioqKioqLyBcdFx0XHRcdCgpID0+IChtb2R1bGVbJ2RlZmF1bHQnXSkgOlxuLyoqKioqKi8gXHRcdFx0XHQoKSA9PiAobW9kdWxlKTtcbi8qKioqKiovIFx0XHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsIHsgYTogZ2V0dGVyIH0pO1xuLyoqKioqKi8gXHRcdFx0cmV0dXJuIGdldHRlcjtcbi8qKioqKiovIFx0XHR9O1xuLyoqKioqKi8gXHR9KSgpO1xuLyoqKioqKi8gXHRcbi8qKioqKiovIFx0Lyogd2VicGFjay9ydW50aW1lL2NyZWF0ZSBmYWtlIG5hbWVzcGFjZSBvYmplY3QgKi9cbi8qKioqKiovIFx0KCgpID0+IHtcbi8qKioqKiovIFx0XHR2YXIgZ2V0UHJvdG8gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YgPyAob2JqKSA9PiAoT2JqZWN0LmdldFByb3RvdHlwZU9mKG9iaikpIDogKG9iaikgPT4gKG9iai5fX3Byb3RvX18pO1xuLyoqKioqKi8gXHRcdHZhciBsZWFmUHJvdG90eXBlcztcbi8qKioqKiovIFx0XHQvLyBjcmVhdGUgYSBmYWtlIG5hbWVzcGFjZSBvYmplY3Rcbi8qKioqKiovIFx0XHQvLyBtb2RlICYgMTogdmFsdWUgaXMgYSBtb2R1bGUgaWQsIHJlcXVpcmUgaXRcbi8qKioqKiovIFx0XHQvLyBtb2RlICYgMjogbWVyZ2UgYWxsIHByb3BlcnRpZXMgb2YgdmFsdWUgaW50byB0aGUgbnNcbi8qKioqKiovIFx0XHQvLyBtb2RlICYgNDogcmV0dXJuIHZhbHVlIHdoZW4gYWxyZWFkeSBucyBvYmplY3Rcbi8qKioqKiovIFx0XHQvLyBtb2RlICYgMTY6IHJldHVybiB2YWx1ZSB3aGVuIGl0J3MgUHJvbWlzZS1saWtlXG4vKioqKioqLyBcdFx0Ly8gbW9kZSAmIDh8MTogYmVoYXZlIGxpa2UgcmVxdWlyZVxuLyoqKioqKi8gXHRcdF9fd2VicGFja19yZXF1aXJlX18udCA9IGZ1bmN0aW9uKHZhbHVlLCBtb2RlKSB7XG4vKioqKioqLyBcdFx0XHRpZihtb2RlICYgMSkgdmFsdWUgPSB0aGlzKHZhbHVlKTtcbi8qKioqKiovIFx0XHRcdGlmKG1vZGUgJiA4KSByZXR1cm4gdmFsdWU7XG4vKioqKioqLyBcdFx0XHRpZih0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHZhbHVlKSB7XG4vKioqKioqLyBcdFx0XHRcdGlmKChtb2RlICYgNCkgJiYgdmFsdWUuX19lc01vZHVsZSkgcmV0dXJuIHZhbHVlO1xuLyoqKioqKi8gXHRcdFx0XHRpZigobW9kZSAmIDE2KSAmJiB0eXBlb2YgdmFsdWUudGhlbiA9PT0gJ2Z1bmN0aW9uJykgcmV0dXJuIHZhbHVlO1xuLyoqKioqKi8gXHRcdFx0fVxuLyoqKioqKi8gXHRcdFx0dmFyIG5zID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbi8qKioqKiovIFx0XHRcdF9fd2VicGFja19yZXF1aXJlX18ucihucyk7XG4vKioqKioqLyBcdFx0XHR2YXIgZGVmID0ge307XG4vKioqKioqLyBcdFx0XHRsZWFmUHJvdG90eXBlcyA9IGxlYWZQcm90b3R5cGVzIHx8IFtudWxsLCBnZXRQcm90byh7fSksIGdldFByb3RvKFtdKSwgZ2V0UHJvdG8oZ2V0UHJvdG8pXTtcbi8qKioqKiovIFx0XHRcdGZvcih2YXIgY3VycmVudCA9IG1vZGUgJiAyICYmIHZhbHVlOyB0eXBlb2YgY3VycmVudCA9PSAnb2JqZWN0JyAmJiAhfmxlYWZQcm90b3R5cGVzLmluZGV4T2YoY3VycmVudCk7IGN1cnJlbnQgPSBnZXRQcm90byhjdXJyZW50KSkge1xuLyoqKioqKi8gXHRcdFx0XHRPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhjdXJyZW50KS5mb3JFYWNoKChrZXkpID0+IChkZWZba2V5XSA9ICgpID0+ICh2YWx1ZVtrZXldKSkpO1xuLyoqKioqKi8gXHRcdFx0fVxuLyoqKioqKi8gXHRcdFx0ZGVmWydkZWZhdWx0J10gPSAoKSA9PiAodmFsdWUpO1xuLyoqKioqKi8gXHRcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKG5zLCBkZWYpO1xuLyoqKioqKi8gXHRcdFx0cmV0dXJuIG5zO1xuLyoqKioqKi8gXHRcdH07XG4vKioqKioqLyBcdH0pKCk7XG4vKioqKioqLyBcdFxuLyoqKioqKi8gXHQvKiB3ZWJwYWNrL3J1bnRpbWUvZGVmaW5lIHByb3BlcnR5IGdldHRlcnMgKi9cbi8qKioqKiovIFx0KCgpID0+IHtcbi8qKioqKiovIFx0XHQvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9ucyBmb3IgaGFybW9ueSBleHBvcnRzXG4vKioqKioqLyBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kID0gKGV4cG9ydHMsIGRlZmluaXRpb24pID0+IHtcbi8qKioqKiovIFx0XHRcdGZvcih2YXIga2V5IGluIGRlZmluaXRpb24pIHtcbi8qKioqKiovIFx0XHRcdFx0aWYoX193ZWJwYWNrX3JlcXVpcmVfXy5vKGRlZmluaXRpb24sIGtleSkgJiYgIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBrZXkpKSB7XG4vKioqKioqLyBcdFx0XHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIGtleSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGRlZmluaXRpb25ba2V5XSB9KTtcbi8qKioqKiovIFx0XHRcdFx0fVxuLyoqKioqKi8gXHRcdFx0fVxuLyoqKioqKi8gXHRcdH07XG4vKioqKioqLyBcdH0pKCk7XG4vKioqKioqLyBcdFxuLyoqKioqKi8gXHQvKiB3ZWJwYWNrL3J1bnRpbWUvZW5zdXJlIGNodW5rICovXG4vKioqKioqLyBcdCgoKSA9PiB7XG4vKioqKioqLyBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5mID0ge307XG4vKioqKioqLyBcdFx0Ly8gVGhpcyBmaWxlIGNvbnRhaW5zIG9ubHkgdGhlIGVudHJ5IGNodW5rLlxuLyoqKioqKi8gXHRcdC8vIFRoZSBjaHVuayBsb2FkaW5nIGZ1bmN0aW9uIGZvciBhZGRpdGlvbmFsIGNodW5rc1xuLyoqKioqKi8gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZSA9IChjaHVua0lkKSA9PiB7XG4vKioqKioqLyBcdFx0XHRyZXR1cm4gUHJvbWlzZS5hbGwoT2JqZWN0LmtleXMoX193ZWJwYWNrX3JlcXVpcmVfXy5mKS5yZWR1Y2UoKHByb21pc2VzLCBrZXkpID0+IHtcbi8qKioqKiovIFx0XHRcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5mW2tleV0oY2h1bmtJZCwgcHJvbWlzZXMpO1xuLyoqKioqKi8gXHRcdFx0XHRyZXR1cm4gcHJvbWlzZXM7XG4vKioqKioqLyBcdFx0XHR9LCBbXSkpO1xuLyoqKioqKi8gXHRcdH07XG4vKioqKioqLyBcdH0pKCk7XG4vKioqKioqLyBcdFxuLyoqKioqKi8gXHQvKiB3ZWJwYWNrL3J1bnRpbWUvZ2V0IGphdmFzY3JpcHQgY2h1bmsgZmlsZW5hbWUgKi9cbi8qKioqKiovIFx0KCgpID0+IHtcbi8qKioqKiovIFx0XHQvLyBUaGlzIGZ1bmN0aW9uIGFsbG93IHRvIHJlZmVyZW5jZSBhc3luYyBjaHVua3Ncbi8qKioqKiovIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLnUgPSAoY2h1bmtJZCkgPT4ge1xuLyoqKioqKi8gXHRcdFx0Ly8gcmV0dXJuIHVybCBmb3IgZmlsZW5hbWVzIGJhc2VkIG9uIHRlbXBsYXRlXG4vKioqKioqLyBcdFx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuLyoqKioqKi8gXHRcdH07XG4vKioqKioqLyBcdH0pKCk7XG4vKioqKioqLyBcdFxuLyoqKioqKi8gXHQvKiB3ZWJwYWNrL3J1bnRpbWUvZ2V0IGphdmFzY3JpcHQgdXBkYXRlIGNodW5rIGZpbGVuYW1lICovXG4vKioqKioqLyBcdCgoKSA9PiB7XG4vKioqKioqLyBcdFx0Ly8gVGhpcyBmdW5jdGlvbiBhbGxvdyB0byByZWZlcmVuY2UgYWxsIGNodW5rc1xuLyoqKioqKi8gXHRcdF9fd2VicGFja19yZXF1aXJlX18uaHUgPSAoY2h1bmtJZCkgPT4ge1xuLyoqKioqKi8gXHRcdFx0Ly8gcmV0dXJuIHVybCBmb3IgZmlsZW5hbWVzIGJhc2VkIG9uIHRlbXBsYXRlXG4vKioqKioqLyBcdFx0XHRyZXR1cm4gXCJzdGF0aWMvd2VicGFjay9cIiArIGNodW5rSWQgKyBcIi5cIiArIF9fd2VicGFja19yZXF1aXJlX18uaCgpICsgXCIuaG90LXVwZGF0ZS5qc1wiO1xuLyoqKioqKi8gXHRcdH07XG4vKioqKioqLyBcdH0pKCk7XG4vKioqKioqLyBcdFxuLyoqKioqKi8gXHQvKiB3ZWJwYWNrL3J1bnRpbWUvZ2V0IG1pbmktY3NzIGNodW5rIGZpbGVuYW1lICovXG4vKioqKioqLyBcdCgoKSA9PiB7XG4vKioqKioqLyBcdFx0Ly8gVGhpcyBmdW5jdGlvbiBhbGxvdyB0byByZWZlcmVuY2UgYXN5bmMgY2h1bmtzXG4vKioqKioqLyBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5taW5pQ3NzRiA9IChjaHVua0lkKSA9PiB7XG4vKioqKioqLyBcdFx0XHQvLyByZXR1cm4gdXJsIGZvciBmaWxlbmFtZXMgYmFzZWQgb24gdGVtcGxhdGVcbi8qKioqKiovIFx0XHRcdHJldHVybiB1bmRlZmluZWQ7XG4vKioqKioqLyBcdFx0fTtcbi8qKioqKiovIFx0fSkoKTtcbi8qKioqKiovIFx0XG4vKioqKioqLyBcdC8qIHdlYnBhY2svcnVudGltZS9nZXQgdXBkYXRlIG1hbmlmZXN0IGZpbGVuYW1lICovXG4vKioqKioqLyBcdCgoKSA9PiB7XG4vKioqKioqLyBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5obXJGID0gKCkgPT4gKFwic3RhdGljL3dlYnBhY2svXCIgKyBfX3dlYnBhY2tfcmVxdWlyZV9fLmgoKSArIFwiLndlYnBhY2suaG90LXVwZGF0ZS5qc29uXCIpO1xuLyoqKioqKi8gXHR9KSgpO1xuLyoqKioqKi8gXHRcbi8qKioqKiovIFx0Lyogd2VicGFjay9ydW50aW1lL2dldEZ1bGxIYXNoICovXG4vKioqKioqLyBcdCgoKSA9PiB7XG4vKioqKioqLyBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5oID0gKCkgPT4gKFwiNWI2ODMzYzA4YzY4MmFkMVwiKVxuLyoqKioqKi8gXHR9KSgpO1xuLyoqKioqKi8gXHRcbi8qKioqKiovIFx0Lyogd2VicGFjay9ydW50aW1lL2dsb2JhbCAqL1xuLyoqKioqKi8gXHQoKCkgPT4ge1xuLyoqKioqKi8gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZyA9IChmdW5jdGlvbigpIHtcbi8qKioqKiovIFx0XHRcdGlmICh0eXBlb2YgZ2xvYmFsVGhpcyA9PT0gJ29iamVjdCcpIHJldHVybiBnbG9iYWxUaGlzO1xuLyoqKioqKi8gXHRcdFx0dHJ5IHtcbi8qKioqKiovIFx0XHRcdFx0cmV0dXJuIHRoaXMgfHwgbmV3IEZ1bmN0aW9uKCdyZXR1cm4gdGhpcycpKCk7XG4vKioqKioqLyBcdFx0XHR9IGNhdGNoIChlKSB7XG4vKioqKioqLyBcdFx0XHRcdGlmICh0eXBlb2Ygd2luZG93ID09PSAnb2JqZWN0JykgcmV0dXJuIHdpbmRvdztcbi8qKioqKiovIFx0XHRcdH1cbi8qKioqKiovIFx0XHR9KSgpO1xuLyoqKioqKi8gXHR9KSgpO1xuLyoqKioqKi8gXHRcbi8qKioqKiovIFx0Lyogd2VicGFjay9ydW50aW1lL2hhc093blByb3BlcnR5IHNob3J0aGFuZCAqL1xuLyoqKioqKi8gXHQoKCkgPT4ge1xuLyoqKioqKi8gXHRcdF9fd2VicGFja19yZXF1aXJlX18ubyA9IChvYmosIHByb3ApID0+IChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBwcm9wKSlcbi8qKioqKiovIFx0fSkoKTtcbi8qKioqKiovIFx0XG4vKioqKioqLyBcdC8qIHdlYnBhY2svcnVudGltZS9sb2FkIHNjcmlwdCAqL1xuLyoqKioqKi8gXHQoKCkgPT4ge1xuLyoqKioqKi8gXHRcdHZhciBpblByb2dyZXNzID0ge307XG4vKioqKioqLyBcdFx0dmFyIGRhdGFXZWJwYWNrUHJlZml4ID0gXCJfTl9FOlwiO1xuLyoqKioqKi8gXHRcdC8vIGxvYWRTY3JpcHQgZnVuY3Rpb24gdG8gbG9hZCBhIHNjcmlwdCB2aWEgc2NyaXB0IHRhZ1xuLyoqKioqKi8gXHRcdF9fd2VicGFja19yZXF1aXJlX18ubCA9ICh1cmwsIGRvbmUsIGtleSwgY2h1bmtJZCkgPT4ge1xuLyoqKioqKi8gXHRcdFx0aWYoaW5Qcm9ncmVzc1t1cmxdKSB7IGluUHJvZ3Jlc3NbdXJsXS5wdXNoKGRvbmUpOyByZXR1cm47IH1cbi8qKioqKiovIFx0XHRcdHZhciBzY3JpcHQsIG5lZWRBdHRhY2g7XG4vKioqKioqLyBcdFx0XHRpZihrZXkgIT09IHVuZGVmaW5lZCkge1xuLyoqKioqKi8gXHRcdFx0XHR2YXIgc2NyaXB0cyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKFwic2NyaXB0XCIpO1xuLyoqKioqKi8gXHRcdFx0XHRmb3IodmFyIGkgPSAwOyBpIDwgc2NyaXB0cy5sZW5ndGg7IGkrKykge1xuLyoqKioqKi8gXHRcdFx0XHRcdHZhciBzID0gc2NyaXB0c1tpXTtcbi8qKioqKiovIFx0XHRcdFx0XHRpZihzLmdldEF0dHJpYnV0ZShcInNyY1wiKSA9PSB1cmwgfHwgcy5nZXRBdHRyaWJ1dGUoXCJkYXRhLXdlYnBhY2tcIikgPT0gZGF0YVdlYnBhY2tQcmVmaXggKyBrZXkpIHsgc2NyaXB0ID0gczsgYnJlYWs7IH1cbi8qKioqKiovIFx0XHRcdFx0fVxuLyoqKioqKi8gXHRcdFx0fVxuLyoqKioqKi8gXHRcdFx0aWYoIXNjcmlwdCkge1xuLyoqKioqKi8gXHRcdFx0XHRuZWVkQXR0YWNoID0gdHJ1ZTtcbi8qKioqKiovIFx0XHRcdFx0c2NyaXB0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7XG4vKioqKioqLyBcdFx0XG4vKioqKioqLyBcdFx0XHRcdHNjcmlwdC5jaGFyc2V0ID0gJ3V0Zi04Jztcbi8qKioqKiovIFx0XHRcdFx0c2NyaXB0LnRpbWVvdXQgPSAxMjA7XG4vKioqKioqLyBcdFx0XHRcdGlmIChfX3dlYnBhY2tfcmVxdWlyZV9fLm5jKSB7XG4vKioqKioqLyBcdFx0XHRcdFx0c2NyaXB0LnNldEF0dHJpYnV0ZShcIm5vbmNlXCIsIF9fd2VicGFja19yZXF1aXJlX18ubmMpO1xuLyoqKioqKi8gXHRcdFx0XHR9XG4vKioqKioqLyBcdFx0XHRcdHNjcmlwdC5zZXRBdHRyaWJ1dGUoXCJkYXRhLXdlYnBhY2tcIiwgZGF0YVdlYnBhY2tQcmVmaXggKyBrZXkpO1xuLyoqKioqKi8gXHRcdFxuLyoqKioqKi8gXHRcdFx0XHRzY3JpcHQuc3JjID0gX193ZWJwYWNrX3JlcXVpcmVfXy50dSh1cmwpO1xuLyoqKioqKi8gXHRcdFx0fVxuLyoqKioqKi8gXHRcdFx0aW5Qcm9ncmVzc1t1cmxdID0gW2RvbmVdO1xuLyoqKioqKi8gXHRcdFx0dmFyIG9uU2NyaXB0Q29tcGxldGUgPSAocHJldiwgZXZlbnQpID0+IHtcbi8qKioqKiovIFx0XHRcdFx0Ly8gYXZvaWQgbWVtIGxlYWtzIGluIElFLlxuLyoqKioqKi8gXHRcdFx0XHRzY3JpcHQub25lcnJvciA9IHNjcmlwdC5vbmxvYWQgPSBudWxsO1xuLyoqKioqKi8gXHRcdFx0XHRjbGVhclRpbWVvdXQodGltZW91dCk7XG4vKioqKioqLyBcdFx0XHRcdHZhciBkb25lRm5zID0gaW5Qcm9ncmVzc1t1cmxdO1xuLyoqKioqKi8gXHRcdFx0XHRkZWxldGUgaW5Qcm9ncmVzc1t1cmxdO1xuLyoqKioqKi8gXHRcdFx0XHRzY3JpcHQucGFyZW50Tm9kZSAmJiBzY3JpcHQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChzY3JpcHQpO1xuLyoqKioqKi8gXHRcdFx0XHRkb25lRm5zICYmIGRvbmVGbnMuZm9yRWFjaCgoZm4pID0+IChmbihldmVudCkpKTtcbi8qKioqKiovIFx0XHRcdFx0aWYocHJldikgcmV0dXJuIHByZXYoZXZlbnQpO1xuLyoqKioqKi8gXHRcdFx0fVxuLyoqKioqKi8gXHRcdFx0dmFyIHRpbWVvdXQgPSBzZXRUaW1lb3V0KG9uU2NyaXB0Q29tcGxldGUuYmluZChudWxsLCB1bmRlZmluZWQsIHsgdHlwZTogJ3RpbWVvdXQnLCB0YXJnZXQ6IHNjcmlwdCB9KSwgMTIwMDAwKTtcbi8qKioqKiovIFx0XHRcdHNjcmlwdC5vbmVycm9yID0gb25TY3JpcHRDb21wbGV0ZS5iaW5kKG51bGwsIHNjcmlwdC5vbmVycm9yKTtcbi8qKioqKiovIFx0XHRcdHNjcmlwdC5vbmxvYWQgPSBvblNjcmlwdENvbXBsZXRlLmJpbmQobnVsbCwgc2NyaXB0Lm9ubG9hZCk7XG4vKioqKioqLyBcdFx0XHRuZWVkQXR0YWNoICYmIGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoc2NyaXB0KTtcbi8qKioqKiovIFx0XHR9O1xuLyoqKioqKi8gXHR9KSgpO1xuLyoqKioqKi8gXHRcbi8qKioqKiovIFx0Lyogd2VicGFjay9ydW50aW1lL21ha2UgbmFtZXNwYWNlIG9iamVjdCAqL1xuLyoqKioqKi8gXHQoKCkgPT4ge1xuLyoqKioqKi8gXHRcdC8vIGRlZmluZSBfX2VzTW9kdWxlIG9uIGV4cG9ydHNcbi8qKioqKiovIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSAoZXhwb3J0cykgPT4ge1xuLyoqKioqKi8gXHRcdFx0aWYodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnRvU3RyaW5nVGFnKSB7XG4vKioqKioqLyBcdFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuLyoqKioqKi8gXHRcdFx0fVxuLyoqKioqKi8gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbi8qKioqKiovIFx0XHR9O1xuLyoqKioqKi8gXHR9KSgpO1xuLyoqKioqKi8gXHRcbi8qKioqKiovIFx0Lyogd2VicGFjay9ydW50aW1lL25vZGUgbW9kdWxlIGRlY29yYXRvciAqL1xuLyoqKioqKi8gXHQoKCkgPT4ge1xuLyoqKioqKi8gXHRcdF9fd2VicGFja19yZXF1aXJlX18ubm1kID0gKG1vZHVsZSkgPT4ge1xuLyoqKioqKi8gXHRcdFx0bW9kdWxlLnBhdGhzID0gW107XG4vKioqKioqLyBcdFx0XHRpZiAoIW1vZHVsZS5jaGlsZHJlbikgbW9kdWxlLmNoaWxkcmVuID0gW107XG4vKioqKioqLyBcdFx0XHRyZXR1cm4gbW9kdWxlO1xuLyoqKioqKi8gXHRcdH07XG4vKioqKioqLyBcdH0pKCk7XG4vKioqKioqLyBcdFxuLyoqKioqKi8gXHQvKiB3ZWJwYWNrL3J1bnRpbWUvdHJ1c3RlZCB0eXBlcyBwb2xpY3kgKi9cbi8qKioqKiovIFx0KCgpID0+IHtcbi8qKioqKiovIFx0XHR2YXIgcG9saWN5O1xuLyoqKioqKi8gXHRcdF9fd2VicGFja19yZXF1aXJlX18udHQgPSAoKSA9PiB7XG4vKioqKioqLyBcdFx0XHQvLyBDcmVhdGUgVHJ1c3RlZCBUeXBlIHBvbGljeSBpZiBUcnVzdGVkIFR5cGVzIGFyZSBhdmFpbGFibGUgYW5kIHRoZSBwb2xpY3kgZG9lc24ndCBleGlzdCB5ZXQuXG4vKioqKioqLyBcdFx0XHRpZiAocG9saWN5ID09PSB1bmRlZmluZWQpIHtcbi8qKioqKiovIFx0XHRcdFx0cG9saWN5ID0ge1xuLyoqKioqKi8gXHRcdFx0XHRcdGNyZWF0ZVNjcmlwdDogKHNjcmlwdCkgPT4gKHNjcmlwdCksXG4vKioqKioqLyBcdFx0XHRcdFx0Y3JlYXRlU2NyaXB0VVJMOiAodXJsKSA9PiAodXJsKVxuLyoqKioqKi8gXHRcdFx0XHR9O1xuLyoqKioqKi8gXHRcdFx0XHRpZiAodHlwZW9mIHRydXN0ZWRUeXBlcyAhPT0gXCJ1bmRlZmluZWRcIiAmJiB0cnVzdGVkVHlwZXMuY3JlYXRlUG9saWN5KSB7XG4vKioqKioqLyBcdFx0XHRcdFx0cG9saWN5ID0gdHJ1c3RlZFR5cGVzLmNyZWF0ZVBvbGljeShcIm5leHRqcyNidW5kbGVyXCIsIHBvbGljeSk7XG4vKioqKioqLyBcdFx0XHRcdH1cbi8qKioqKiovIFx0XHRcdH1cbi8qKioqKiovIFx0XHRcdHJldHVybiBwb2xpY3k7XG4vKioqKioqLyBcdFx0fTtcbi8qKioqKiovIFx0fSkoKTtcbi8qKioqKiovIFx0XG4vKioqKioqLyBcdC8qIHdlYnBhY2svcnVudGltZS90cnVzdGVkIHR5cGVzIHNjcmlwdCAqL1xuLyoqKioqKi8gXHQoKCkgPT4ge1xuLyoqKioqKi8gXHRcdF9fd2VicGFja19yZXF1aXJlX18udHMgPSAoc2NyaXB0KSA9PiAoX193ZWJwYWNrX3JlcXVpcmVfXy50dCgpLmNyZWF0ZVNjcmlwdChzY3JpcHQpKTtcbi8qKioqKiovIFx0fSkoKTtcbi8qKioqKiovIFx0XG4vKioqKioqLyBcdC8qIHdlYnBhY2svcnVudGltZS90cnVzdGVkIHR5cGVzIHNjcmlwdCB1cmwgKi9cbi8qKioqKiovIFx0KCgpID0+IHtcbi8qKioqKiovIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLnR1ID0gKHVybCkgPT4gKF9fd2VicGFja19yZXF1aXJlX18udHQoKS5jcmVhdGVTY3JpcHRVUkwodXJsKSk7XG4vKioqKioqLyBcdH0pKCk7XG4vKioqKioqLyBcdFxuLyoqKioqKi8gXHQvKiB3ZWJwYWNrL3J1bnRpbWUvaG90IG1vZHVsZSByZXBsYWNlbWVudCAqL1xuLyoqKioqKi8gXHQoKCkgPT4ge1xuLyoqKioqKi8gXHRcdHZhciBjdXJyZW50TW9kdWxlRGF0YSA9IHt9O1xuLyoqKioqKi8gXHRcdHZhciBpbnN0YWxsZWRNb2R1bGVzID0gX193ZWJwYWNrX3JlcXVpcmVfXy5jO1xuLyoqKioqKi8gXHRcdFxuLyoqKioqKi8gXHRcdC8vIG1vZHVsZSBhbmQgcmVxdWlyZSBjcmVhdGlvblxuLyoqKioqKi8gXHRcdHZhciBjdXJyZW50Q2hpbGRNb2R1bGU7XG4vKioqKioqLyBcdFx0dmFyIGN1cnJlbnRQYXJlbnRzID0gW107XG4vKioqKioqLyBcdFx0XG4vKioqKioqLyBcdFx0Ly8gc3RhdHVzXG4vKioqKioqLyBcdFx0dmFyIHJlZ2lzdGVyZWRTdGF0dXNIYW5kbGVycyA9IFtdO1xuLyoqKioqKi8gXHRcdHZhciBjdXJyZW50U3RhdHVzID0gXCJpZGxlXCI7XG4vKioqKioqLyBcdFx0XG4vKioqKioqLyBcdFx0Ly8gd2hpbGUgZG93bmxvYWRpbmdcbi8qKioqKiovIFx0XHR2YXIgYmxvY2tpbmdQcm9taXNlcyA9IDA7XG4vKioqKioqLyBcdFx0dmFyIGJsb2NraW5nUHJvbWlzZXNXYWl0aW5nID0gW107XG4vKioqKioqLyBcdFx0XG4vKioqKioqLyBcdFx0Ly8gVGhlIHVwZGF0ZSBpbmZvXG4vKioqKioqLyBcdFx0dmFyIGN1cnJlbnRVcGRhdGVBcHBseUhhbmRsZXJzO1xuLyoqKioqKi8gXHRcdHZhciBxdWV1ZWRJbnZhbGlkYXRlZE1vZHVsZXM7XG4vKioqKioqLyBcdFx0XG4vKioqKioqLyBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5obXJEID0gY3VycmVudE1vZHVsZURhdGE7XG4vKioqKioqLyBcdFx0XG4vKioqKioqLyBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5pLnB1c2goZnVuY3Rpb24gKG9wdGlvbnMpIHtcbi8qKioqKiovIFx0XHRcdHZhciBtb2R1bGUgPSBvcHRpb25zLm1vZHVsZTtcbi8qKioqKiovIFx0XHRcdHZhciByZXF1aXJlID0gY3JlYXRlUmVxdWlyZShvcHRpb25zLnJlcXVpcmUsIG9wdGlvbnMuaWQpO1xuLyoqKioqKi8gXHRcdFx0bW9kdWxlLmhvdCA9IGNyZWF0ZU1vZHVsZUhvdE9iamVjdChvcHRpb25zLmlkLCBtb2R1bGUpO1xuLyoqKioqKi8gXHRcdFx0bW9kdWxlLnBhcmVudHMgPSBjdXJyZW50UGFyZW50cztcbi8qKioqKiovIFx0XHRcdG1vZHVsZS5jaGlsZHJlbiA9IFtdO1xuLyoqKioqKi8gXHRcdFx0Y3VycmVudFBhcmVudHMgPSBbXTtcbi8qKioqKiovIFx0XHRcdG9wdGlvbnMucmVxdWlyZSA9IHJlcXVpcmU7XG4vKioqKioqLyBcdFx0fSk7XG4vKioqKioqLyBcdFx0XG4vKioqKioqLyBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5obXJDID0ge307XG4vKioqKioqLyBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5obXJJID0ge307XG4vKioqKioqLyBcdFx0XG4vKioqKioqLyBcdFx0ZnVuY3Rpb24gY3JlYXRlUmVxdWlyZShyZXF1aXJlLCBtb2R1bGVJZCkge1xuLyoqKioqKi8gXHRcdFx0dmFyIG1lID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF07XG4vKioqKioqLyBcdFx0XHRpZiAoIW1lKSByZXR1cm4gcmVxdWlyZTtcbi8qKioqKiovIFx0XHRcdHZhciBmbiA9IGZ1bmN0aW9uIChyZXF1ZXN0KSB7XG4vKioqKioqLyBcdFx0XHRcdGlmIChtZS5ob3QuYWN0aXZlKSB7XG4vKioqKioqLyBcdFx0XHRcdFx0aWYgKGluc3RhbGxlZE1vZHVsZXNbcmVxdWVzdF0pIHtcbi8qKioqKiovIFx0XHRcdFx0XHRcdHZhciBwYXJlbnRzID0gaW5zdGFsbGVkTW9kdWxlc1tyZXF1ZXN0XS5wYXJlbnRzO1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0aWYgKHBhcmVudHMuaW5kZXhPZihtb2R1bGVJZCkgPT09IC0xKSB7XG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdHBhcmVudHMucHVzaChtb2R1bGVJZCk7XG4vKioqKioqLyBcdFx0XHRcdFx0XHR9XG4vKioqKioqLyBcdFx0XHRcdFx0fSBlbHNlIHtcbi8qKioqKiovIFx0XHRcdFx0XHRcdGN1cnJlbnRQYXJlbnRzID0gW21vZHVsZUlkXTtcbi8qKioqKiovIFx0XHRcdFx0XHRcdGN1cnJlbnRDaGlsZE1vZHVsZSA9IHJlcXVlc3Q7XG4vKioqKioqLyBcdFx0XHRcdFx0fVxuLyoqKioqKi8gXHRcdFx0XHRcdGlmIChtZS5jaGlsZHJlbi5pbmRleE9mKHJlcXVlc3QpID09PSAtMSkge1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0bWUuY2hpbGRyZW4ucHVzaChyZXF1ZXN0KTtcbi8qKioqKiovIFx0XHRcdFx0XHR9XG4vKioqKioqLyBcdFx0XHRcdH0gZWxzZSB7XG4vKioqKioqLyBcdFx0XHRcdFx0Y29uc29sZS53YXJuKFxuLyoqKioqKi8gXHRcdFx0XHRcdFx0XCJbSE1SXSB1bmV4cGVjdGVkIHJlcXVpcmUoXCIgK1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHRyZXF1ZXN0ICtcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0XCIpIGZyb20gZGlzcG9zZWQgbW9kdWxlIFwiICtcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0bW9kdWxlSWRcbi8qKioqKiovIFx0XHRcdFx0XHQpO1xuLyoqKioqKi8gXHRcdFx0XHRcdGN1cnJlbnRQYXJlbnRzID0gW107XG4vKioqKioqLyBcdFx0XHRcdH1cbi8qKioqKiovIFx0XHRcdFx0cmV0dXJuIHJlcXVpcmUocmVxdWVzdCk7XG4vKioqKioqLyBcdFx0XHR9O1xuLyoqKioqKi8gXHRcdFx0dmFyIGNyZWF0ZVByb3BlcnR5RGVzY3JpcHRvciA9IGZ1bmN0aW9uIChuYW1lKSB7XG4vKioqKioqLyBcdFx0XHRcdHJldHVybiB7XG4vKioqKioqLyBcdFx0XHRcdFx0Y29uZmlndXJhYmxlOiB0cnVlLFxuLyoqKioqKi8gXHRcdFx0XHRcdGVudW1lcmFibGU6IHRydWUsXG4vKioqKioqLyBcdFx0XHRcdFx0Z2V0OiBmdW5jdGlvbiAoKSB7XG4vKioqKioqLyBcdFx0XHRcdFx0XHRyZXR1cm4gcmVxdWlyZVtuYW1lXTtcbi8qKioqKiovIFx0XHRcdFx0XHR9LFxuLyoqKioqKi8gXHRcdFx0XHRcdHNldDogZnVuY3Rpb24gKHZhbHVlKSB7XG4vKioqKioqLyBcdFx0XHRcdFx0XHRyZXF1aXJlW25hbWVdID0gdmFsdWU7XG4vKioqKioqLyBcdFx0XHRcdFx0fVxuLyoqKioqKi8gXHRcdFx0XHR9O1xuLyoqKioqKi8gXHRcdFx0fTtcbi8qKioqKiovIFx0XHRcdGZvciAodmFyIG5hbWUgaW4gcmVxdWlyZSkge1xuLyoqKioqKi8gXHRcdFx0XHRpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHJlcXVpcmUsIG5hbWUpICYmIG5hbWUgIT09IFwiZVwiKSB7XG4vKioqKioqLyBcdFx0XHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGZuLCBuYW1lLCBjcmVhdGVQcm9wZXJ0eURlc2NyaXB0b3IobmFtZSkpO1xuLyoqKioqKi8gXHRcdFx0XHR9XG4vKioqKioqLyBcdFx0XHR9XG4vKioqKioqLyBcdFx0XHRmbi5lID0gZnVuY3Rpb24gKGNodW5rSWQsIGZldGNoUHJpb3JpdHkpIHtcbi8qKioqKiovIFx0XHRcdFx0cmV0dXJuIHRyYWNrQmxvY2tpbmdQcm9taXNlKHJlcXVpcmUuZShjaHVua0lkLCBmZXRjaFByaW9yaXR5KSk7XG4vKioqKioqLyBcdFx0XHR9O1xuLyoqKioqKi8gXHRcdFx0cmV0dXJuIGZuO1xuLyoqKioqKi8gXHRcdH1cbi8qKioqKiovIFx0XHRcbi8qKioqKiovIFx0XHRmdW5jdGlvbiBjcmVhdGVNb2R1bGVIb3RPYmplY3QobW9kdWxlSWQsIG1lKSB7XG4vKioqKioqLyBcdFx0XHR2YXIgX21haW4gPSBjdXJyZW50Q2hpbGRNb2R1bGUgIT09IG1vZHVsZUlkO1xuLyoqKioqKi8gXHRcdFx0dmFyIGhvdCA9IHtcbi8qKioqKiovIFx0XHRcdFx0Ly8gcHJpdmF0ZSBzdHVmZlxuLyoqKioqKi8gXHRcdFx0XHRfYWNjZXB0ZWREZXBlbmRlbmNpZXM6IHt9LFxuLyoqKioqKi8gXHRcdFx0XHRfYWNjZXB0ZWRFcnJvckhhbmRsZXJzOiB7fSxcbi8qKioqKiovIFx0XHRcdFx0X2RlY2xpbmVkRGVwZW5kZW5jaWVzOiB7fSxcbi8qKioqKiovIFx0XHRcdFx0X3NlbGZBY2NlcHRlZDogZmFsc2UsXG4vKioqKioqLyBcdFx0XHRcdF9zZWxmRGVjbGluZWQ6IGZhbHNlLFxuLyoqKioqKi8gXHRcdFx0XHRfc2VsZkludmFsaWRhdGVkOiBmYWxzZSxcbi8qKioqKiovIFx0XHRcdFx0X2Rpc3Bvc2VIYW5kbGVyczogW10sXG4vKioqKioqLyBcdFx0XHRcdF9tYWluOiBfbWFpbixcbi8qKioqKiovIFx0XHRcdFx0X3JlcXVpcmVTZWxmOiBmdW5jdGlvbiAoKSB7XG4vKioqKioqLyBcdFx0XHRcdFx0Y3VycmVudFBhcmVudHMgPSBtZS5wYXJlbnRzLnNsaWNlKCk7XG4vKioqKioqLyBcdFx0XHRcdFx0Y3VycmVudENoaWxkTW9kdWxlID0gX21haW4gPyB1bmRlZmluZWQgOiBtb2R1bGVJZDtcbi8qKioqKiovIFx0XHRcdFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKTtcbi8qKioqKiovIFx0XHRcdFx0fSxcbi8qKioqKiovIFx0XHRcbi8qKioqKiovIFx0XHRcdFx0Ly8gTW9kdWxlIEFQSVxuLyoqKioqKi8gXHRcdFx0XHRhY3RpdmU6IHRydWUsXG4vKioqKioqLyBcdFx0XHRcdGFjY2VwdDogZnVuY3Rpb24gKGRlcCwgY2FsbGJhY2ssIGVycm9ySGFuZGxlcikge1xuLyoqKioqKi8gXHRcdFx0XHRcdGlmIChkZXAgPT09IHVuZGVmaW5lZCkgaG90Ll9zZWxmQWNjZXB0ZWQgPSB0cnVlO1xuLyoqKioqKi8gXHRcdFx0XHRcdGVsc2UgaWYgKHR5cGVvZiBkZXAgPT09IFwiZnVuY3Rpb25cIikgaG90Ll9zZWxmQWNjZXB0ZWQgPSBkZXA7XG4vKioqKioqLyBcdFx0XHRcdFx0ZWxzZSBpZiAodHlwZW9mIGRlcCA9PT0gXCJvYmplY3RcIiAmJiBkZXAgIT09IG51bGwpIHtcbi8qKioqKiovIFx0XHRcdFx0XHRcdGZvciAodmFyIGkgPSAwOyBpIDwgZGVwLmxlbmd0aDsgaSsrKSB7XG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdGhvdC5fYWNjZXB0ZWREZXBlbmRlbmNpZXNbZGVwW2ldXSA9IGNhbGxiYWNrIHx8IGZ1bmN0aW9uICgpIHt9O1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHRob3QuX2FjY2VwdGVkRXJyb3JIYW5kbGVyc1tkZXBbaV1dID0gZXJyb3JIYW5kbGVyO1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0fVxuLyoqKioqKi8gXHRcdFx0XHRcdH0gZWxzZSB7XG4vKioqKioqLyBcdFx0XHRcdFx0XHRob3QuX2FjY2VwdGVkRGVwZW5kZW5jaWVzW2RlcF0gPSBjYWxsYmFjayB8fCBmdW5jdGlvbiAoKSB7fTtcbi8qKioqKiovIFx0XHRcdFx0XHRcdGhvdC5fYWNjZXB0ZWRFcnJvckhhbmRsZXJzW2RlcF0gPSBlcnJvckhhbmRsZXI7XG4vKioqKioqLyBcdFx0XHRcdFx0fVxuLyoqKioqKi8gXHRcdFx0XHR9LFxuLyoqKioqKi8gXHRcdFx0XHRkZWNsaW5lOiBmdW5jdGlvbiAoZGVwKSB7XG4vKioqKioqLyBcdFx0XHRcdFx0aWYgKGRlcCA9PT0gdW5kZWZpbmVkKSBob3QuX3NlbGZEZWNsaW5lZCA9IHRydWU7XG4vKioqKioqLyBcdFx0XHRcdFx0ZWxzZSBpZiAodHlwZW9mIGRlcCA9PT0gXCJvYmplY3RcIiAmJiBkZXAgIT09IG51bGwpXG4vKioqKioqLyBcdFx0XHRcdFx0XHRmb3IgKHZhciBpID0gMDsgaSA8IGRlcC5sZW5ndGg7IGkrKylcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0aG90Ll9kZWNsaW5lZERlcGVuZGVuY2llc1tkZXBbaV1dID0gdHJ1ZTtcbi8qKioqKiovIFx0XHRcdFx0XHRlbHNlIGhvdC5fZGVjbGluZWREZXBlbmRlbmNpZXNbZGVwXSA9IHRydWU7XG4vKioqKioqLyBcdFx0XHRcdH0sXG4vKioqKioqLyBcdFx0XHRcdGRpc3Bvc2U6IGZ1bmN0aW9uIChjYWxsYmFjaykge1xuLyoqKioqKi8gXHRcdFx0XHRcdGhvdC5fZGlzcG9zZUhhbmRsZXJzLnB1c2goY2FsbGJhY2spO1xuLyoqKioqKi8gXHRcdFx0XHR9LFxuLyoqKioqKi8gXHRcdFx0XHRhZGREaXNwb3NlSGFuZGxlcjogZnVuY3Rpb24gKGNhbGxiYWNrKSB7XG4vKioqKioqLyBcdFx0XHRcdFx0aG90Ll9kaXNwb3NlSGFuZGxlcnMucHVzaChjYWxsYmFjayk7XG4vKioqKioqLyBcdFx0XHRcdH0sXG4vKioqKioqLyBcdFx0XHRcdHJlbW92ZURpc3Bvc2VIYW5kbGVyOiBmdW5jdGlvbiAoY2FsbGJhY2spIHtcbi8qKioqKiovIFx0XHRcdFx0XHR2YXIgaWR4ID0gaG90Ll9kaXNwb3NlSGFuZGxlcnMuaW5kZXhPZihjYWxsYmFjayk7XG4vKioqKioqLyBcdFx0XHRcdFx0aWYgKGlkeCA+PSAwKSBob3QuX2Rpc3Bvc2VIYW5kbGVycy5zcGxpY2UoaWR4LCAxKTtcbi8qKioqKiovIFx0XHRcdFx0fSxcbi8qKioqKiovIFx0XHRcdFx0aW52YWxpZGF0ZTogZnVuY3Rpb24gKCkge1xuLyoqKioqKi8gXHRcdFx0XHRcdHRoaXMuX3NlbGZJbnZhbGlkYXRlZCA9IHRydWU7XG4vKioqKioqLyBcdFx0XHRcdFx0c3dpdGNoIChjdXJyZW50U3RhdHVzKSB7XG4vKioqKioqLyBcdFx0XHRcdFx0XHRjYXNlIFwiaWRsZVwiOlxuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHRjdXJyZW50VXBkYXRlQXBwbHlIYW5kbGVycyA9IFtdO1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHRPYmplY3Qua2V5cyhfX3dlYnBhY2tfcmVxdWlyZV9fLmhtckkpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHRcdF9fd2VicGFja19yZXF1aXJlX18uaG1ySVtrZXldKFxuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHRcdFx0bW9kdWxlSWQsXG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdFx0XHRjdXJyZW50VXBkYXRlQXBwbHlIYW5kbGVyc1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHRcdCk7XG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdH0pO1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHRzZXRTdGF0dXMoXCJyZWFkeVwiKTtcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0YnJlYWs7XG4vKioqKioqLyBcdFx0XHRcdFx0XHRjYXNlIFwicmVhZHlcIjpcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0T2JqZWN0LmtleXMoX193ZWJwYWNrX3JlcXVpcmVfXy5obXJJKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLmhtcklba2V5XShcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0XHRcdG1vZHVsZUlkLFxuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHRcdFx0Y3VycmVudFVwZGF0ZUFwcGx5SGFuZGxlcnNcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0XHQpO1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHR9KTtcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0YnJlYWs7XG4vKioqKioqLyBcdFx0XHRcdFx0XHRjYXNlIFwicHJlcGFyZVwiOlxuLyoqKioqKi8gXHRcdFx0XHRcdFx0Y2FzZSBcImNoZWNrXCI6XG4vKioqKioqLyBcdFx0XHRcdFx0XHRjYXNlIFwiZGlzcG9zZVwiOlxuLyoqKioqKi8gXHRcdFx0XHRcdFx0Y2FzZSBcImFwcGx5XCI6XG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdChxdWV1ZWRJbnZhbGlkYXRlZE1vZHVsZXMgPSBxdWV1ZWRJbnZhbGlkYXRlZE1vZHVsZXMgfHwgW10pLnB1c2goXG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdFx0bW9kdWxlSWRcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0KTtcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0YnJlYWs7XG4vKioqKioqLyBcdFx0XHRcdFx0XHRkZWZhdWx0OlxuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHQvLyBpZ25vcmUgcmVxdWVzdHMgaW4gZXJyb3Igc3RhdGVzXG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdGJyZWFrO1xuLyoqKioqKi8gXHRcdFx0XHRcdH1cbi8qKioqKiovIFx0XHRcdFx0fSxcbi8qKioqKiovIFx0XHRcbi8qKioqKiovIFx0XHRcdFx0Ly8gTWFuYWdlbWVudCBBUElcbi8qKioqKiovIFx0XHRcdFx0Y2hlY2s6IGhvdENoZWNrLFxuLyoqKioqKi8gXHRcdFx0XHRhcHBseTogaG90QXBwbHksXG4vKioqKioqLyBcdFx0XHRcdHN0YXR1czogZnVuY3Rpb24gKGwpIHtcbi8qKioqKiovIFx0XHRcdFx0XHRpZiAoIWwpIHJldHVybiBjdXJyZW50U3RhdHVzO1xuLyoqKioqKi8gXHRcdFx0XHRcdHJlZ2lzdGVyZWRTdGF0dXNIYW5kbGVycy5wdXNoKGwpO1xuLyoqKioqKi8gXHRcdFx0XHR9LFxuLyoqKioqKi8gXHRcdFx0XHRhZGRTdGF0dXNIYW5kbGVyOiBmdW5jdGlvbiAobCkge1xuLyoqKioqKi8gXHRcdFx0XHRcdHJlZ2lzdGVyZWRTdGF0dXNIYW5kbGVycy5wdXNoKGwpO1xuLyoqKioqKi8gXHRcdFx0XHR9LFxuLyoqKioqKi8gXHRcdFx0XHRyZW1vdmVTdGF0dXNIYW5kbGVyOiBmdW5jdGlvbiAobCkge1xuLyoqKioqKi8gXHRcdFx0XHRcdHZhciBpZHggPSByZWdpc3RlcmVkU3RhdHVzSGFuZGxlcnMuaW5kZXhPZihsKTtcbi8qKioqKiovIFx0XHRcdFx0XHRpZiAoaWR4ID49IDApIHJlZ2lzdGVyZWRTdGF0dXNIYW5kbGVycy5zcGxpY2UoaWR4LCAxKTtcbi8qKioqKiovIFx0XHRcdFx0fSxcbi8qKioqKiovIFx0XHRcbi8qKioqKiovIFx0XHRcdFx0Ly8gaW5oZXJpdCBmcm9tIHByZXZpb3VzIGRpc3Bvc2UgY2FsbFxuLyoqKioqKi8gXHRcdFx0XHRkYXRhOiBjdXJyZW50TW9kdWxlRGF0YVttb2R1bGVJZF1cbi8qKioqKiovIFx0XHRcdH07XG4vKioqKioqLyBcdFx0XHRjdXJyZW50Q2hpbGRNb2R1bGUgPSB1bmRlZmluZWQ7XG4vKioqKioqLyBcdFx0XHRyZXR1cm4gaG90O1xuLyoqKioqKi8gXHRcdH1cbi8qKioqKiovIFx0XHRcbi8qKioqKiovIFx0XHRmdW5jdGlvbiBzZXRTdGF0dXMobmV3U3RhdHVzKSB7XG4vKioqKioqLyBcdFx0XHRjdXJyZW50U3RhdHVzID0gbmV3U3RhdHVzO1xuLyoqKioqKi8gXHRcdFx0dmFyIHJlc3VsdHMgPSBbXTtcbi8qKioqKiovIFx0XHRcbi8qKioqKiovIFx0XHRcdGZvciAodmFyIGkgPSAwOyBpIDwgcmVnaXN0ZXJlZFN0YXR1c0hhbmRsZXJzLmxlbmd0aDsgaSsrKVxuLyoqKioqKi8gXHRcdFx0XHRyZXN1bHRzW2ldID0gcmVnaXN0ZXJlZFN0YXR1c0hhbmRsZXJzW2ldLmNhbGwobnVsbCwgbmV3U3RhdHVzKTtcbi8qKioqKiovIFx0XHRcbi8qKioqKiovIFx0XHRcdHJldHVybiBQcm9taXNlLmFsbChyZXN1bHRzKS50aGVuKGZ1bmN0aW9uICgpIHt9KTtcbi8qKioqKiovIFx0XHR9XG4vKioqKioqLyBcdFx0XG4vKioqKioqLyBcdFx0ZnVuY3Rpb24gdW5ibG9jaygpIHtcbi8qKioqKiovIFx0XHRcdGlmICgtLWJsb2NraW5nUHJvbWlzZXMgPT09IDApIHtcbi8qKioqKiovIFx0XHRcdFx0c2V0U3RhdHVzKFwicmVhZHlcIikudGhlbihmdW5jdGlvbiAoKSB7XG4vKioqKioqLyBcdFx0XHRcdFx0aWYgKGJsb2NraW5nUHJvbWlzZXMgPT09IDApIHtcbi8qKioqKiovIFx0XHRcdFx0XHRcdHZhciBsaXN0ID0gYmxvY2tpbmdQcm9taXNlc1dhaXRpbmc7XG4vKioqKioqLyBcdFx0XHRcdFx0XHRibG9ja2luZ1Byb21pc2VzV2FpdGluZyA9IFtdO1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgaSsrKSB7XG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdGxpc3RbaV0oKTtcbi8qKioqKiovIFx0XHRcdFx0XHRcdH1cbi8qKioqKiovIFx0XHRcdFx0XHR9XG4vKioqKioqLyBcdFx0XHRcdH0pO1xuLyoqKioqKi8gXHRcdFx0fVxuLyoqKioqKi8gXHRcdH1cbi8qKioqKiovIFx0XHRcbi8qKioqKiovIFx0XHRmdW5jdGlvbiB0cmFja0Jsb2NraW5nUHJvbWlzZShwcm9taXNlKSB7XG4vKioqKioqLyBcdFx0XHRzd2l0Y2ggKGN1cnJlbnRTdGF0dXMpIHtcbi8qKioqKiovIFx0XHRcdFx0Y2FzZSBcInJlYWR5XCI6XG4vKioqKioqLyBcdFx0XHRcdFx0c2V0U3RhdHVzKFwicHJlcGFyZVwiKTtcbi8qKioqKiovIFx0XHRcdFx0LyogZmFsbHRocm91Z2ggKi9cbi8qKioqKiovIFx0XHRcdFx0Y2FzZSBcInByZXBhcmVcIjpcbi8qKioqKiovIFx0XHRcdFx0XHRibG9ja2luZ1Byb21pc2VzKys7XG4vKioqKioqLyBcdFx0XHRcdFx0cHJvbWlzZS50aGVuKHVuYmxvY2ssIHVuYmxvY2spO1xuLyoqKioqKi8gXHRcdFx0XHRcdHJldHVybiBwcm9taXNlO1xuLyoqKioqKi8gXHRcdFx0XHRkZWZhdWx0OlxuLyoqKioqKi8gXHRcdFx0XHRcdHJldHVybiBwcm9taXNlO1xuLyoqKioqKi8gXHRcdFx0fVxuLyoqKioqKi8gXHRcdH1cbi8qKioqKiovIFx0XHRcbi8qKioqKiovIFx0XHRmdW5jdGlvbiB3YWl0Rm9yQmxvY2tpbmdQcm9taXNlcyhmbikge1xuLyoqKioqKi8gXHRcdFx0aWYgKGJsb2NraW5nUHJvbWlzZXMgPT09IDApIHJldHVybiBmbigpO1xuLyoqKioqKi8gXHRcdFx0cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlKSB7XG4vKioqKioqLyBcdFx0XHRcdGJsb2NraW5nUHJvbWlzZXNXYWl0aW5nLnB1c2goZnVuY3Rpb24gKCkge1xuLyoqKioqKi8gXHRcdFx0XHRcdHJlc29sdmUoZm4oKSk7XG4vKioqKioqLyBcdFx0XHRcdH0pO1xuLyoqKioqKi8gXHRcdFx0fSk7XG4vKioqKioqLyBcdFx0fVxuLyoqKioqKi8gXHRcdFxuLyoqKioqKi8gXHRcdGZ1bmN0aW9uIGhvdENoZWNrKGFwcGx5T25VcGRhdGUpIHtcbi8qKioqKiovIFx0XHRcdGlmIChjdXJyZW50U3RhdHVzICE9PSBcImlkbGVcIikge1xuLyoqKioqKi8gXHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoXCJjaGVjaygpIGlzIG9ubHkgYWxsb3dlZCBpbiBpZGxlIHN0YXR1c1wiKTtcbi8qKioqKiovIFx0XHRcdH1cbi8qKioqKiovIFx0XHRcdHJldHVybiBzZXRTdGF0dXMoXCJjaGVja1wiKVxuLyoqKioqKi8gXHRcdFx0XHQudGhlbihfX3dlYnBhY2tfcmVxdWlyZV9fLmhtck0pXG4vKioqKioqLyBcdFx0XHRcdC50aGVuKGZ1bmN0aW9uICh1cGRhdGUpIHtcbi8qKioqKiovIFx0XHRcdFx0XHRpZiAoIXVwZGF0ZSkge1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0cmV0dXJuIHNldFN0YXR1cyhhcHBseUludmFsaWRhdGVkTW9kdWxlcygpID8gXCJyZWFkeVwiIDogXCJpZGxlXCIpLnRoZW4oXG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdGZ1bmN0aW9uICgpIHtcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gbnVsbDtcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0fVxuLyoqKioqKi8gXHRcdFx0XHRcdFx0KTtcbi8qKioqKiovIFx0XHRcdFx0XHR9XG4vKioqKioqLyBcdFx0XG4vKioqKioqLyBcdFx0XHRcdFx0cmV0dXJuIHNldFN0YXR1cyhcInByZXBhcmVcIikudGhlbihmdW5jdGlvbiAoKSB7XG4vKioqKioqLyBcdFx0XHRcdFx0XHR2YXIgdXBkYXRlZE1vZHVsZXMgPSBbXTtcbi8qKioqKiovIFx0XHRcdFx0XHRcdGN1cnJlbnRVcGRhdGVBcHBseUhhbmRsZXJzID0gW107XG4vKioqKioqLyBcdFx0XG4vKioqKioqLyBcdFx0XHRcdFx0XHRyZXR1cm4gUHJvbWlzZS5hbGwoXG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdE9iamVjdC5rZXlzKF9fd2VicGFja19yZXF1aXJlX18uaG1yQykucmVkdWNlKGZ1bmN0aW9uIChcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0XHRwcm9taXNlcyxcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0XHRrZXlcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0KSB7XG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5obXJDW2tleV0oXG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdFx0XHR1cGRhdGUuYyxcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0XHRcdHVwZGF0ZS5yLFxuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHRcdFx0dXBkYXRlLm0sXG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdFx0XHRwcm9taXNlcyxcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0XHRcdGN1cnJlbnRVcGRhdGVBcHBseUhhbmRsZXJzLFxuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHRcdFx0dXBkYXRlZE1vZHVsZXNcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0XHQpO1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHRcdHJldHVybiBwcm9taXNlcztcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0fSwgW10pXG4vKioqKioqLyBcdFx0XHRcdFx0XHQpLnRoZW4oZnVuY3Rpb24gKCkge1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHRyZXR1cm4gd2FpdEZvckJsb2NraW5nUHJvbWlzZXMoZnVuY3Rpb24gKCkge1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHRcdGlmIChhcHBseU9uVXBkYXRlKSB7XG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gaW50ZXJuYWxBcHBseShhcHBseU9uVXBkYXRlKTtcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0XHR9XG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHNldFN0YXR1cyhcInJlYWR5XCIpLnRoZW4oZnVuY3Rpb24gKCkge1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHVwZGF0ZWRNb2R1bGVzO1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHRcdH0pO1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHR9KTtcbi8qKioqKiovIFx0XHRcdFx0XHRcdH0pO1xuLyoqKioqKi8gXHRcdFx0XHRcdH0pO1xuLyoqKioqKi8gXHRcdFx0XHR9KTtcbi8qKioqKiovIFx0XHR9XG4vKioqKioqLyBcdFx0XG4vKioqKioqLyBcdFx0ZnVuY3Rpb24gaG90QXBwbHkob3B0aW9ucykge1xuLyoqKioqKi8gXHRcdFx0aWYgKGN1cnJlbnRTdGF0dXMgIT09IFwicmVhZHlcIikge1xuLyoqKioqKi8gXHRcdFx0XHRyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCkudGhlbihmdW5jdGlvbiAoKSB7XG4vKioqKioqLyBcdFx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKFxuLyoqKioqKi8gXHRcdFx0XHRcdFx0XCJhcHBseSgpIGlzIG9ubHkgYWxsb3dlZCBpbiByZWFkeSBzdGF0dXMgKHN0YXRlOiBcIiArXG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdGN1cnJlbnRTdGF0dXMgK1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHRcIilcIlxuLyoqKioqKi8gXHRcdFx0XHRcdCk7XG4vKioqKioqLyBcdFx0XHRcdH0pO1xuLyoqKioqKi8gXHRcdFx0fVxuLyoqKioqKi8gXHRcdFx0cmV0dXJuIGludGVybmFsQXBwbHkob3B0aW9ucyk7XG4vKioqKioqLyBcdFx0fVxuLyoqKioqKi8gXHRcdFxuLyoqKioqKi8gXHRcdGZ1bmN0aW9uIGludGVybmFsQXBwbHkob3B0aW9ucykge1xuLyoqKioqKi8gXHRcdFx0b3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG4vKioqKioqLyBcdFx0XG4vKioqKioqLyBcdFx0XHRhcHBseUludmFsaWRhdGVkTW9kdWxlcygpO1xuLyoqKioqKi8gXHRcdFxuLyoqKioqKi8gXHRcdFx0dmFyIHJlc3VsdHMgPSBjdXJyZW50VXBkYXRlQXBwbHlIYW5kbGVycy5tYXAoZnVuY3Rpb24gKGhhbmRsZXIpIHtcbi8qKioqKiovIFx0XHRcdFx0cmV0dXJuIGhhbmRsZXIob3B0aW9ucyk7XG4vKioqKioqLyBcdFx0XHR9KTtcbi8qKioqKiovIFx0XHRcdGN1cnJlbnRVcGRhdGVBcHBseUhhbmRsZXJzID0gdW5kZWZpbmVkO1xuLyoqKioqKi8gXHRcdFxuLyoqKioqKi8gXHRcdFx0dmFyIGVycm9ycyA9IHJlc3VsdHNcbi8qKioqKiovIFx0XHRcdFx0Lm1hcChmdW5jdGlvbiAocikge1xuLyoqKioqKi8gXHRcdFx0XHRcdHJldHVybiByLmVycm9yO1xuLyoqKioqKi8gXHRcdFx0XHR9KVxuLyoqKioqKi8gXHRcdFx0XHQuZmlsdGVyKEJvb2xlYW4pO1xuLyoqKioqKi8gXHRcdFxuLyoqKioqKi8gXHRcdFx0aWYgKGVycm9ycy5sZW5ndGggPiAwKSB7XG4vKioqKioqLyBcdFx0XHRcdHJldHVybiBzZXRTdGF0dXMoXCJhYm9ydFwiKS50aGVuKGZ1bmN0aW9uICgpIHtcbi8qKioqKiovIFx0XHRcdFx0XHR0aHJvdyBlcnJvcnNbMF07XG4vKioqKioqLyBcdFx0XHRcdH0pO1xuLyoqKioqKi8gXHRcdFx0fVxuLyoqKioqKi8gXHRcdFxuLyoqKioqKi8gXHRcdFx0Ly8gTm93IGluIFwiZGlzcG9zZVwiIHBoYXNlXG4vKioqKioqLyBcdFx0XHR2YXIgZGlzcG9zZVByb21pc2UgPSBzZXRTdGF0dXMoXCJkaXNwb3NlXCIpO1xuLyoqKioqKi8gXHRcdFxuLyoqKioqKi8gXHRcdFx0cmVzdWx0cy5mb3JFYWNoKGZ1bmN0aW9uIChyZXN1bHQpIHtcbi8qKioqKiovIFx0XHRcdFx0aWYgKHJlc3VsdC5kaXNwb3NlKSByZXN1bHQuZGlzcG9zZSgpO1xuLyoqKioqKi8gXHRcdFx0fSk7XG4vKioqKioqLyBcdFx0XG4vKioqKioqLyBcdFx0XHQvLyBOb3cgaW4gXCJhcHBseVwiIHBoYXNlXG4vKioqKioqLyBcdFx0XHR2YXIgYXBwbHlQcm9taXNlID0gc2V0U3RhdHVzKFwiYXBwbHlcIik7XG4vKioqKioqLyBcdFx0XG4vKioqKioqLyBcdFx0XHR2YXIgZXJyb3I7XG4vKioqKioqLyBcdFx0XHR2YXIgcmVwb3J0RXJyb3IgPSBmdW5jdGlvbiAoZXJyKSB7XG4vKioqKioqLyBcdFx0XHRcdGlmICghZXJyb3IpIGVycm9yID0gZXJyO1xuLyoqKioqKi8gXHRcdFx0fTtcbi8qKioqKiovIFx0XHRcbi8qKioqKiovIFx0XHRcdHZhciBvdXRkYXRlZE1vZHVsZXMgPSBbXTtcbi8qKioqKiovIFx0XHRcdHJlc3VsdHMuZm9yRWFjaChmdW5jdGlvbiAocmVzdWx0KSB7XG4vKioqKioqLyBcdFx0XHRcdGlmIChyZXN1bHQuYXBwbHkpIHtcbi8qKioqKiovIFx0XHRcdFx0XHR2YXIgbW9kdWxlcyA9IHJlc3VsdC5hcHBseShyZXBvcnRFcnJvcik7XG4vKioqKioqLyBcdFx0XHRcdFx0aWYgKG1vZHVsZXMpIHtcbi8qKioqKiovIFx0XHRcdFx0XHRcdGZvciAodmFyIGkgPSAwOyBpIDwgbW9kdWxlcy5sZW5ndGg7IGkrKykge1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHRvdXRkYXRlZE1vZHVsZXMucHVzaChtb2R1bGVzW2ldKTtcbi8qKioqKiovIFx0XHRcdFx0XHRcdH1cbi8qKioqKiovIFx0XHRcdFx0XHR9XG4vKioqKioqLyBcdFx0XHRcdH1cbi8qKioqKiovIFx0XHRcdH0pO1xuLyoqKioqKi8gXHRcdFxuLyoqKioqKi8gXHRcdFx0cmV0dXJuIFByb21pc2UuYWxsKFtkaXNwb3NlUHJvbWlzZSwgYXBwbHlQcm9taXNlXSkudGhlbihmdW5jdGlvbiAoKSB7XG4vKioqKioqLyBcdFx0XHRcdC8vIGhhbmRsZSBlcnJvcnMgaW4gYWNjZXB0IGhhbmRsZXJzIGFuZCBzZWxmIGFjY2VwdGVkIG1vZHVsZSBsb2FkXG4vKioqKioqLyBcdFx0XHRcdGlmIChlcnJvcikge1xuLyoqKioqKi8gXHRcdFx0XHRcdHJldHVybiBzZXRTdGF0dXMoXCJmYWlsXCIpLnRoZW4oZnVuY3Rpb24gKCkge1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0dGhyb3cgZXJyb3I7XG4vKioqKioqLyBcdFx0XHRcdFx0fSk7XG4vKioqKioqLyBcdFx0XHRcdH1cbi8qKioqKiovIFx0XHRcbi8qKioqKiovIFx0XHRcdFx0aWYgKHF1ZXVlZEludmFsaWRhdGVkTW9kdWxlcykge1xuLyoqKioqKi8gXHRcdFx0XHRcdHJldHVybiBpbnRlcm5hbEFwcGx5KG9wdGlvbnMpLnRoZW4oZnVuY3Rpb24gKGxpc3QpIHtcbi8qKioqKiovIFx0XHRcdFx0XHRcdG91dGRhdGVkTW9kdWxlcy5mb3JFYWNoKGZ1bmN0aW9uIChtb2R1bGVJZCkge1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHRpZiAobGlzdC5pbmRleE9mKG1vZHVsZUlkKSA8IDApIGxpc3QucHVzaChtb2R1bGVJZCk7XG4vKioqKioqLyBcdFx0XHRcdFx0XHR9KTtcbi8qKioqKiovIFx0XHRcdFx0XHRcdHJldHVybiBsaXN0O1xuLyoqKioqKi8gXHRcdFx0XHRcdH0pO1xuLyoqKioqKi8gXHRcdFx0XHR9XG4vKioqKioqLyBcdFx0XG4vKioqKioqLyBcdFx0XHRcdHJldHVybiBzZXRTdGF0dXMoXCJpZGxlXCIpLnRoZW4oZnVuY3Rpb24gKCkge1xuLyoqKioqKi8gXHRcdFx0XHRcdHJldHVybiBvdXRkYXRlZE1vZHVsZXM7XG4vKioqKioqLyBcdFx0XHRcdH0pO1xuLyoqKioqKi8gXHRcdFx0fSk7XG4vKioqKioqLyBcdFx0fVxuLyoqKioqKi8gXHRcdFxuLyoqKioqKi8gXHRcdGZ1bmN0aW9uIGFwcGx5SW52YWxpZGF0ZWRNb2R1bGVzKCkge1xuLyoqKioqKi8gXHRcdFx0aWYgKHF1ZXVlZEludmFsaWRhdGVkTW9kdWxlcykge1xuLyoqKioqKi8gXHRcdFx0XHRpZiAoIWN1cnJlbnRVcGRhdGVBcHBseUhhbmRsZXJzKSBjdXJyZW50VXBkYXRlQXBwbHlIYW5kbGVycyA9IFtdO1xuLyoqKioqKi8gXHRcdFx0XHRPYmplY3Qua2V5cyhfX3dlYnBhY2tfcmVxdWlyZV9fLmhtckkpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuLyoqKioqKi8gXHRcdFx0XHRcdHF1ZXVlZEludmFsaWRhdGVkTW9kdWxlcy5mb3JFYWNoKGZ1bmN0aW9uIChtb2R1bGVJZCkge1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5obXJJW2tleV0oXG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdG1vZHVsZUlkLFxuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHRjdXJyZW50VXBkYXRlQXBwbHlIYW5kbGVyc1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0KTtcbi8qKioqKiovIFx0XHRcdFx0XHR9KTtcbi8qKioqKiovIFx0XHRcdFx0fSk7XG4vKioqKioqLyBcdFx0XHRcdHF1ZXVlZEludmFsaWRhdGVkTW9kdWxlcyA9IHVuZGVmaW5lZDtcbi8qKioqKiovIFx0XHRcdFx0cmV0dXJuIHRydWU7XG4vKioqKioqLyBcdFx0XHR9XG4vKioqKioqLyBcdFx0fVxuLyoqKioqKi8gXHR9KSgpO1xuLyoqKioqKi8gXHRcbi8qKioqKiovIFx0Lyogd2VicGFjay9ydW50aW1lL3B1YmxpY1BhdGggKi9cbi8qKioqKiovIFx0KCgpID0+IHtcbi8qKioqKiovIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLnAgPSBcIi9fbmV4dC9cIjtcbi8qKioqKiovIFx0fSkoKTtcbi8qKioqKiovIFx0XG4vKioqKioqLyBcdC8qIHdlYnBhY2svcnVudGltZS9yZWFjdCByZWZyZXNoICovXG4vKioqKioqLyBcdCgoKSA9PiB7XG4vKioqKioqLyBcdFx0aWYgKF9fd2VicGFja19yZXF1aXJlX18uaSkge1xuLyoqKioqKi8gXHRcdF9fd2VicGFja19yZXF1aXJlX18uaS5wdXNoKChvcHRpb25zKSA9PiB7XG4vKioqKioqLyBcdFx0XHRjb25zdCBvcmlnaW5hbEZhY3RvcnkgPSBvcHRpb25zLmZhY3Rvcnk7XG4vKioqKioqLyBcdFx0XHRvcHRpb25zLmZhY3RvcnkgPSAobW9kdWxlT2JqZWN0LCBtb2R1bGVFeHBvcnRzLCB3ZWJwYWNrUmVxdWlyZSkgPT4ge1xuLyoqKioqKi8gXHRcdFx0XHRjb25zdCBoYXNSZWZyZXNoID0gdHlwZW9mIHNlbGYgIT09IFwidW5kZWZpbmVkXCIgJiYgISFzZWxmLiRSZWZyZXNoSW50ZXJjZXB0TW9kdWxlRXhlY3V0aW9uJDtcbi8qKioqKiovIFx0XHRcdFx0Y29uc3QgY2xlYW51cCA9IGhhc1JlZnJlc2ggPyBzZWxmLiRSZWZyZXNoSW50ZXJjZXB0TW9kdWxlRXhlY3V0aW9uJChtb2R1bGVPYmplY3QuaWQpIDogKCkgPT4ge307XG4vKioqKioqLyBcdFx0XHRcdHRyeSB7XG4vKioqKioqLyBcdFx0XHRcdFx0b3JpZ2luYWxGYWN0b3J5LmNhbGwodGhpcywgbW9kdWxlT2JqZWN0LCBtb2R1bGVFeHBvcnRzLCB3ZWJwYWNrUmVxdWlyZSk7XG4vKioqKioqLyBcdFx0XHRcdH0gZmluYWxseSB7XG4vKioqKioqLyBcdFx0XHRcdFx0Y2xlYW51cCgpO1xuLyoqKioqKi8gXHRcdFx0XHR9XG4vKioqKioqLyBcdFx0XHR9XG4vKioqKioqLyBcdFx0fSlcbi8qKioqKiovIFx0XHR9XG4vKioqKioqLyBcdH0pKCk7XG4vKioqKioqLyBcdFxuLyoqKioqKi8gXHQvKiB3ZWJwYWNrL3J1bnRpbWUvY29tcGF0ICovXG4vKioqKioqLyBcdFxuLyoqKioqKi8gXHRcbi8qKioqKiovIFx0Ly8gbm9vcCBmbnMgdG8gcHJldmVudCBydW50aW1lIGVycm9ycyBkdXJpbmcgaW5pdGlhbGl6YXRpb25cbi8qKioqKiovIFx0aWYgKHR5cGVvZiBzZWxmICE9PSBcInVuZGVmaW5lZFwiKSB7XG4vKioqKioqLyBcdFx0c2VsZi4kUmVmcmVzaFJlZyQgPSBmdW5jdGlvbiAoKSB7fTtcbi8qKioqKiovIFx0XHRzZWxmLiRSZWZyZXNoU2lnJCA9IGZ1bmN0aW9uICgpIHtcbi8qKioqKiovIFx0XHRcdHJldHVybiBmdW5jdGlvbiAodHlwZSkge1xuLyoqKioqKi8gXHRcdFx0XHRyZXR1cm4gdHlwZTtcbi8qKioqKiovIFx0XHRcdH07XG4vKioqKioqLyBcdFx0fTtcbi8qKioqKiovIFx0fVxuLyoqKioqKi8gXHRcbi8qKioqKiovIFx0Lyogd2VicGFjay9ydW50aW1lL2NzcyBsb2FkaW5nICovXG4vKioqKioqLyBcdCgoKSA9PiB7XG4vKioqKioqLyBcdFx0dmFyIGNyZWF0ZVN0eWxlc2hlZXQgPSAoY2h1bmtJZCwgZnVsbGhyZWYsIHJlc29sdmUsIHJlamVjdCkgPT4ge1xuLyoqKioqKi8gXHRcdFx0dmFyIGxpbmtUYWcgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwibGlua1wiKTtcbi8qKioqKiovIFx0XHRcbi8qKioqKiovIFx0XHRcdGxpbmtUYWcucmVsID0gXCJzdHlsZXNoZWV0XCI7XG4vKioqKioqLyBcdFx0XHRsaW5rVGFnLnR5cGUgPSBcInRleHQvY3NzXCI7XG4vKioqKioqLyBcdFx0XHR2YXIgb25MaW5rQ29tcGxldGUgPSAoZXZlbnQpID0+IHtcbi8qKioqKiovIFx0XHRcdFx0Ly8gYXZvaWQgbWVtIGxlYWtzLlxuLyoqKioqKi8gXHRcdFx0XHRsaW5rVGFnLm9uZXJyb3IgPSBsaW5rVGFnLm9ubG9hZCA9IG51bGw7XG4vKioqKioqLyBcdFx0XHRcdGlmIChldmVudC50eXBlID09PSAnbG9hZCcpIHtcbi8qKioqKiovIFx0XHRcdFx0XHRyZXNvbHZlKCk7XG4vKioqKioqLyBcdFx0XHRcdH0gZWxzZSB7XG4vKioqKioqLyBcdFx0XHRcdFx0dmFyIGVycm9yVHlwZSA9IGV2ZW50ICYmIChldmVudC50eXBlID09PSAnbG9hZCcgPyAnbWlzc2luZycgOiBldmVudC50eXBlKTtcbi8qKioqKiovIFx0XHRcdFx0XHR2YXIgcmVhbEhyZWYgPSBldmVudCAmJiBldmVudC50YXJnZXQgJiYgZXZlbnQudGFyZ2V0LmhyZWYgfHwgZnVsbGhyZWY7XG4vKioqKioqLyBcdFx0XHRcdFx0dmFyIGVyciA9IG5ldyBFcnJvcihcIkxvYWRpbmcgQ1NTIGNodW5rIFwiICsgY2h1bmtJZCArIFwiIGZhaWxlZC5cXG4oXCIgKyByZWFsSHJlZiArIFwiKVwiKTtcbi8qKioqKiovIFx0XHRcdFx0XHRlcnIuY29kZSA9IFwiQ1NTX0NIVU5LX0xPQURfRkFJTEVEXCI7XG4vKioqKioqLyBcdFx0XHRcdFx0ZXJyLnR5cGUgPSBlcnJvclR5cGU7XG4vKioqKioqLyBcdFx0XHRcdFx0ZXJyLnJlcXVlc3QgPSByZWFsSHJlZjtcbi8qKioqKiovIFx0XHRcdFx0XHRsaW5rVGFnLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQobGlua1RhZylcbi8qKioqKiovIFx0XHRcdFx0XHRyZWplY3QoZXJyKTtcbi8qKioqKiovIFx0XHRcdFx0fVxuLyoqKioqKi8gXHRcdFx0fVxuLyoqKioqKi8gXHRcdFx0bGlua1RhZy5vbmVycm9yID0gbGlua1RhZy5vbmxvYWQgPSBvbkxpbmtDb21wbGV0ZTtcbi8qKioqKiovIFx0XHRcdGxpbmtUYWcuaHJlZiA9IGZ1bGxocmVmO1xuLyoqKioqKi8gXHRcdFxuLyoqKioqKi8gXHRcdFx0KGZ1bmN0aW9uKGxpbmtUYWcpIHtcbi8qKioqKiovIFx0XHRcdCAgICAgICAgICAgICAgICBpZiAodHlwZW9mIF9OX0VfU1RZTEVfTE9BRCA9PT0gJ2Z1bmN0aW9uJykge1xuLyoqKioqKi8gXHRcdFx0ICAgICAgICAgICAgICAgICAgICBjb25zdCB7IGhyZWYsIG9ubG9hZCwgb25lcnJvciB9ID0gbGlua1RhZztcbi8qKioqKiovIFx0XHRcdCAgICAgICAgICAgICAgICAgICAgX05fRV9TVFlMRV9MT0FEKGhyZWYuaW5kZXhPZih3aW5kb3cubG9jYXRpb24ub3JpZ2luKSA9PT0gMCA/IG5ldyBVUkwoaHJlZikucGF0aG5hbWUgOiBocmVmKS50aGVuKCgpPT5vbmxvYWQgPT0gbnVsbCA/IHZvaWQgMCA6IG9ubG9hZC5jYWxsKGxpbmtUYWcsIHtcbi8qKioqKiovIFx0XHRcdCAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnbG9hZCdcbi8qKioqKiovIFx0XHRcdCAgICAgICAgICAgICAgICAgICAgICAgIH0pLCAoKT0+b25lcnJvciA9PSBudWxsID8gdm9pZCAwIDogb25lcnJvci5jYWxsKGxpbmtUYWcsIHt9KSk7XG4vKioqKioqLyBcdFx0XHQgICAgICAgICAgICAgICAgfSBlbHNlIHtcbi8qKioqKiovIFx0XHRcdCAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChsaW5rVGFnKTtcbi8qKioqKiovIFx0XHRcdCAgICAgICAgICAgICAgICB9XG4vKioqKioqLyBcdFx0XHQgICAgICAgICAgICB9KShsaW5rVGFnKVxuLyoqKioqKi8gXHRcdFx0cmV0dXJuIGxpbmtUYWc7XG4vKioqKioqLyBcdFx0fTtcbi8qKioqKiovIFx0XHR2YXIgZmluZFN0eWxlc2hlZXQgPSAoaHJlZiwgZnVsbGhyZWYpID0+IHtcbi8qKioqKiovIFx0XHRcdHZhciBleGlzdGluZ0xpbmtUYWdzID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJsaW5rXCIpO1xuLyoqKioqKi8gXHRcdFx0Zm9yKHZhciBpID0gMDsgaSA8IGV4aXN0aW5nTGlua1RhZ3MubGVuZ3RoOyBpKyspIHtcbi8qKioqKiovIFx0XHRcdFx0dmFyIHRhZyA9IGV4aXN0aW5nTGlua1RhZ3NbaV07XG4vKioqKioqLyBcdFx0XHRcdHZhciBkYXRhSHJlZiA9IHRhZy5nZXRBdHRyaWJ1dGUoXCJkYXRhLWhyZWZcIikgfHwgdGFnLmdldEF0dHJpYnV0ZShcImhyZWZcIik7XG4vKioqKioqLyBcdFx0XHRcdGlmKHRhZy5yZWwgPT09IFwic3R5bGVzaGVldFwiICYmIChkYXRhSHJlZiA9PT0gaHJlZiB8fCBkYXRhSHJlZiA9PT0gZnVsbGhyZWYpKSByZXR1cm4gdGFnO1xuLyoqKioqKi8gXHRcdFx0fVxuLyoqKioqKi8gXHRcdFx0dmFyIGV4aXN0aW5nU3R5bGVUYWdzID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJzdHlsZVwiKTtcbi8qKioqKiovIFx0XHRcdGZvcih2YXIgaSA9IDA7IGkgPCBleGlzdGluZ1N0eWxlVGFncy5sZW5ndGg7IGkrKykge1xuLyoqKioqKi8gXHRcdFx0XHR2YXIgdGFnID0gZXhpc3RpbmdTdHlsZVRhZ3NbaV07XG4vKioqKioqLyBcdFx0XHRcdHZhciBkYXRhSHJlZiA9IHRhZy5nZXRBdHRyaWJ1dGUoXCJkYXRhLWhyZWZcIik7XG4vKioqKioqLyBcdFx0XHRcdGlmKGRhdGFIcmVmID09PSBocmVmIHx8IGRhdGFIcmVmID09PSBmdWxsaHJlZikgcmV0dXJuIHRhZztcbi8qKioqKiovIFx0XHRcdH1cbi8qKioqKiovIFx0XHR9O1xuLyoqKioqKi8gXHRcdHZhciBsb2FkU3R5bGVzaGVldCA9IChjaHVua0lkKSA9PiB7XG4vKioqKioqLyBcdFx0XHRyZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuLyoqKioqKi8gXHRcdFx0XHR2YXIgaHJlZiA9IF9fd2VicGFja19yZXF1aXJlX18ubWluaUNzc0YoY2h1bmtJZCk7XG4vKioqKioqLyBcdFx0XHRcdHZhciBmdWxsaHJlZiA9IF9fd2VicGFja19yZXF1aXJlX18ucCArIGhyZWY7XG4vKioqKioqLyBcdFx0XHRcdGlmKGZpbmRTdHlsZXNoZWV0KGhyZWYsIGZ1bGxocmVmKSkgcmV0dXJuIHJlc29sdmUoKTtcbi8qKioqKiovIFx0XHRcdFx0Y3JlYXRlU3R5bGVzaGVldChjaHVua0lkLCBmdWxsaHJlZiwgcmVzb2x2ZSwgcmVqZWN0KTtcbi8qKioqKiovIFx0XHRcdH0pO1xuLyoqKioqKi8gXHRcdH1cbi8qKioqKiovIFx0XHQvLyBubyBjaHVuayBsb2FkaW5nXG4vKioqKioqLyBcdFx0XG4vKioqKioqLyBcdFx0dmFyIG9sZFRhZ3MgPSBbXTtcbi8qKioqKiovIFx0XHR2YXIgbmV3VGFncyA9IFtdO1xuLyoqKioqKi8gXHRcdHZhciBhcHBseUhhbmRsZXIgPSAob3B0aW9ucykgPT4ge1xuLyoqKioqKi8gXHRcdFx0cmV0dXJuIHsgZGlzcG9zZTogKCkgPT4ge1xuLyoqKioqKi8gXHRcdFx0XHRmb3IodmFyIGkgPSAwOyBpIDwgb2xkVGFncy5sZW5ndGg7IGkrKykge1xuLyoqKioqKi8gXHRcdFx0XHRcdHZhciBvbGRUYWcgPSBvbGRUYWdzW2ldO1xuLyoqKioqKi8gXHRcdFx0XHRcdGlmKG9sZFRhZy5wYXJlbnROb2RlKSBvbGRUYWcucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChvbGRUYWcpO1xuLyoqKioqKi8gXHRcdFx0XHR9XG4vKioqKioqLyBcdFx0XHRcdG9sZFRhZ3MubGVuZ3RoID0gMDtcbi8qKioqKiovIFx0XHRcdH0sIGFwcGx5OiAoKSA9PiB7XG4vKioqKioqLyBcdFx0XHRcdGZvcih2YXIgaSA9IDA7IGkgPCBuZXdUYWdzLmxlbmd0aDsgaSsrKSBuZXdUYWdzW2ldLnJlbCA9IFwic3R5bGVzaGVldFwiO1xuLyoqKioqKi8gXHRcdFx0XHRuZXdUYWdzLmxlbmd0aCA9IDA7XG4vKioqKioqLyBcdFx0XHR9IH07XG4vKioqKioqLyBcdFx0fVxuLyoqKioqKi8gXHRcdF9fd2VicGFja19yZXF1aXJlX18uaG1yQy5taW5pQ3NzID0gKGNodW5rSWRzLCByZW1vdmVkQ2h1bmtzLCByZW1vdmVkTW9kdWxlcywgcHJvbWlzZXMsIGFwcGx5SGFuZGxlcnMsIHVwZGF0ZWRNb2R1bGVzTGlzdCkgPT4ge1xuLyoqKioqKi8gXHRcdFx0YXBwbHlIYW5kbGVycy5wdXNoKGFwcGx5SGFuZGxlcik7XG4vKioqKioqLyBcdFx0XHRjaHVua0lkcy5mb3JFYWNoKChjaHVua0lkKSA9PiB7XG4vKioqKioqLyBcdFx0XHRcdHZhciBocmVmID0gX193ZWJwYWNrX3JlcXVpcmVfXy5taW5pQ3NzRihjaHVua0lkKTtcbi8qKioqKiovIFx0XHRcdFx0dmFyIGZ1bGxocmVmID0gX193ZWJwYWNrX3JlcXVpcmVfXy5wICsgaHJlZjtcbi8qKioqKiovIFx0XHRcdFx0dmFyIG9sZFRhZyA9IGZpbmRTdHlsZXNoZWV0KGhyZWYsIGZ1bGxocmVmKTtcbi8qKioqKiovIFx0XHRcdFx0aWYoIW9sZFRhZykgcmV0dXJuO1xuLyoqKioqKi8gXHRcdFx0XHRwcm9taXNlcy5wdXNoKG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbi8qKioqKiovIFx0XHRcdFx0XHR2YXIgdGFnID0gY3JlYXRlU3R5bGVzaGVldChjaHVua0lkLCBmdWxsaHJlZiwgKCkgPT4ge1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0dGFnLmFzID0gXCJzdHlsZVwiO1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0dGFnLnJlbCA9IFwicHJlbG9hZFwiO1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0cmVzb2x2ZSgpO1xuLyoqKioqKi8gXHRcdFx0XHRcdH0sIHJlamVjdCk7XG4vKioqKioqLyBcdFx0XHRcdFx0b2xkVGFncy5wdXNoKG9sZFRhZyk7XG4vKioqKioqLyBcdFx0XHRcdFx0bmV3VGFncy5wdXNoKHRhZyk7XG4vKioqKioqLyBcdFx0XHRcdH0pKTtcbi8qKioqKiovIFx0XHRcdH0pO1xuLyoqKioqKi8gXHRcdH1cbi8qKioqKiovIFx0fSkoKTtcbi8qKioqKiovIFx0XG4vKioqKioqLyBcdC8qIHdlYnBhY2svcnVudGltZS9qc29ucCBjaHVuayBsb2FkaW5nICovXG4vKioqKioqLyBcdCgoKSA9PiB7XG4vKioqKioqLyBcdFx0Ly8gbm8gYmFzZVVSSVxuLyoqKioqKi8gXHRcdFxuLyoqKioqKi8gXHRcdC8vIG9iamVjdCB0byBzdG9yZSBsb2FkZWQgYW5kIGxvYWRpbmcgY2h1bmtzXG4vKioqKioqLyBcdFx0Ly8gdW5kZWZpbmVkID0gY2h1bmsgbm90IGxvYWRlZCwgbnVsbCA9IGNodW5rIHByZWxvYWRlZC9wcmVmZXRjaGVkXG4vKioqKioqLyBcdFx0Ly8gW3Jlc29sdmUsIHJlamVjdCwgUHJvbWlzZV0gPSBjaHVuayBsb2FkaW5nLCAwID0gY2h1bmsgbG9hZGVkXG4vKioqKioqLyBcdFx0dmFyIGluc3RhbGxlZENodW5rcyA9IF9fd2VicGFja19yZXF1aXJlX18uaG1yU19qc29ucCA9IF9fd2VicGFja19yZXF1aXJlX18uaG1yU19qc29ucCB8fCB7XG4vKioqKioqLyBcdFx0XHRcIndlYnBhY2tcIjogMFxuLyoqKioqKi8gXHRcdH07XG4vKioqKioqLyBcdFx0XG4vKioqKioqLyBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5mLmogPSAoY2h1bmtJZCwgcHJvbWlzZXMpID0+IHtcbi8qKioqKiovIFx0XHRcdFx0Ly8gSlNPTlAgY2h1bmsgbG9hZGluZyBmb3IgamF2YXNjcmlwdFxuLyoqKioqKi8gXHRcdFx0XHR2YXIgaW5zdGFsbGVkQ2h1bmtEYXRhID0gX193ZWJwYWNrX3JlcXVpcmVfXy5vKGluc3RhbGxlZENodW5rcywgY2h1bmtJZCkgPyBpbnN0YWxsZWRDaHVua3NbY2h1bmtJZF0gOiB1bmRlZmluZWQ7XG4vKioqKioqLyBcdFx0XHRcdGlmKGluc3RhbGxlZENodW5rRGF0YSAhPT0gMCkgeyAvLyAwIG1lYW5zIFwiYWxyZWFkeSBpbnN0YWxsZWRcIi5cbi8qKioqKiovIFx0XHRcbi8qKioqKiovIFx0XHRcdFx0XHQvLyBhIFByb21pc2UgbWVhbnMgXCJjdXJyZW50bHkgbG9hZGluZ1wiLlxuLyoqKioqKi8gXHRcdFx0XHRcdGlmKGluc3RhbGxlZENodW5rRGF0YSkge1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0cHJvbWlzZXMucHVzaChpbnN0YWxsZWRDaHVua0RhdGFbMl0pO1xuLyoqKioqKi8gXHRcdFx0XHRcdH0gZWxzZSB7XG4vKioqKioqLyBcdFx0XHRcdFx0XHRpZihcIndlYnBhY2tcIiAhPSBjaHVua0lkKSB7XG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdC8vIHNldHVwIFByb21pc2UgaW4gY2h1bmsgY2FjaGVcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0dmFyIHByb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiAoaW5zdGFsbGVkQ2h1bmtEYXRhID0gaW5zdGFsbGVkQ2h1bmtzW2NodW5rSWRdID0gW3Jlc29sdmUsIHJlamVjdF0pKTtcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0cHJvbWlzZXMucHVzaChpbnN0YWxsZWRDaHVua0RhdGFbMl0gPSBwcm9taXNlKTtcbi8qKioqKiovIFx0XHRcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0Ly8gc3RhcnQgY2h1bmsgbG9hZGluZ1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHR2YXIgdXJsID0gX193ZWJwYWNrX3JlcXVpcmVfXy5wICsgX193ZWJwYWNrX3JlcXVpcmVfXy51KGNodW5rSWQpO1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHQvLyBjcmVhdGUgZXJyb3IgYmVmb3JlIHN0YWNrIHVud291bmQgdG8gZ2V0IHVzZWZ1bCBzdGFja3RyYWNlIGxhdGVyXG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdHZhciBlcnJvciA9IG5ldyBFcnJvcigpO1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHR2YXIgbG9hZGluZ0VuZGVkID0gKGV2ZW50KSA9PiB7XG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdFx0aWYoX193ZWJwYWNrX3JlcXVpcmVfXy5vKGluc3RhbGxlZENodW5rcywgY2h1bmtJZCkpIHtcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0XHRcdGluc3RhbGxlZENodW5rRGF0YSA9IGluc3RhbGxlZENodW5rc1tjaHVua0lkXTtcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0XHRcdGlmKGluc3RhbGxlZENodW5rRGF0YSAhPT0gMCkgaW5zdGFsbGVkQ2h1bmtzW2NodW5rSWRdID0gdW5kZWZpbmVkO1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHRcdFx0aWYoaW5zdGFsbGVkQ2h1bmtEYXRhKSB7XG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdFx0XHRcdHZhciBlcnJvclR5cGUgPSBldmVudCAmJiAoZXZlbnQudHlwZSA9PT0gJ2xvYWQnID8gJ21pc3NpbmcnIDogZXZlbnQudHlwZSk7XG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdFx0XHRcdHZhciByZWFsU3JjID0gZXZlbnQgJiYgZXZlbnQudGFyZ2V0ICYmIGV2ZW50LnRhcmdldC5zcmM7XG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdFx0XHRcdGVycm9yLm1lc3NhZ2UgPSAnTG9hZGluZyBjaHVuayAnICsgY2h1bmtJZCArICcgZmFpbGVkLlxcbignICsgZXJyb3JUeXBlICsgJzogJyArIHJlYWxTcmMgKyAnKSc7XG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdFx0XHRcdGVycm9yLm5hbWUgPSAnQ2h1bmtMb2FkRXJyb3InO1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHRcdFx0XHRlcnJvci50eXBlID0gZXJyb3JUeXBlO1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHRcdFx0XHRlcnJvci5yZXF1ZXN0ID0gcmVhbFNyYztcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0XHRcdFx0aW5zdGFsbGVkQ2h1bmtEYXRhWzFdKGVycm9yKTtcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0XHRcdH1cbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0XHR9XG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdH07XG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdF9fd2VicGFja19yZXF1aXJlX18ubCh1cmwsIGxvYWRpbmdFbmRlZCwgXCJjaHVuay1cIiArIGNodW5rSWQsIGNodW5rSWQpO1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0fSBlbHNlIGluc3RhbGxlZENodW5rc1tjaHVua0lkXSA9IDA7XG4vKioqKioqLyBcdFx0XHRcdFx0fVxuLyoqKioqKi8gXHRcdFx0XHR9XG4vKioqKioqLyBcdFx0fTtcbi8qKioqKiovIFx0XHRcbi8qKioqKiovIFx0XHQvLyBubyBwcmVmZXRjaGluZ1xuLyoqKioqKi8gXHRcdFxuLyoqKioqKi8gXHRcdC8vIG5vIHByZWxvYWRlZFxuLyoqKioqKi8gXHRcdFxuLyoqKioqKi8gXHRcdHZhciBjdXJyZW50VXBkYXRlZE1vZHVsZXNMaXN0O1xuLyoqKioqKi8gXHRcdHZhciB3YWl0aW5nVXBkYXRlUmVzb2x2ZXMgPSB7fTtcbi8qKioqKiovIFx0XHRmdW5jdGlvbiBsb2FkVXBkYXRlQ2h1bmsoY2h1bmtJZCwgdXBkYXRlZE1vZHVsZXNMaXN0KSB7XG4vKioqKioqLyBcdFx0XHRjdXJyZW50VXBkYXRlZE1vZHVsZXNMaXN0ID0gdXBkYXRlZE1vZHVsZXNMaXN0O1xuLyoqKioqKi8gXHRcdFx0cmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbi8qKioqKiovIFx0XHRcdFx0d2FpdGluZ1VwZGF0ZVJlc29sdmVzW2NodW5rSWRdID0gcmVzb2x2ZTtcbi8qKioqKiovIFx0XHRcdFx0Ly8gc3RhcnQgdXBkYXRlIGNodW5rIGxvYWRpbmdcbi8qKioqKiovIFx0XHRcdFx0dmFyIHVybCA9IF9fd2VicGFja19yZXF1aXJlX18ucCArIF9fd2VicGFja19yZXF1aXJlX18uaHUoY2h1bmtJZCk7XG4vKioqKioqLyBcdFx0XHRcdC8vIGNyZWF0ZSBlcnJvciBiZWZvcmUgc3RhY2sgdW53b3VuZCB0byBnZXQgdXNlZnVsIHN0YWNrdHJhY2UgbGF0ZXJcbi8qKioqKiovIFx0XHRcdFx0dmFyIGVycm9yID0gbmV3IEVycm9yKCk7XG4vKioqKioqLyBcdFx0XHRcdHZhciBsb2FkaW5nRW5kZWQgPSAoZXZlbnQpID0+IHtcbi8qKioqKiovIFx0XHRcdFx0XHRpZih3YWl0aW5nVXBkYXRlUmVzb2x2ZXNbY2h1bmtJZF0pIHtcbi8qKioqKiovIFx0XHRcdFx0XHRcdHdhaXRpbmdVcGRhdGVSZXNvbHZlc1tjaHVua0lkXSA9IHVuZGVmaW5lZFxuLyoqKioqKi8gXHRcdFx0XHRcdFx0dmFyIGVycm9yVHlwZSA9IGV2ZW50ICYmIChldmVudC50eXBlID09PSAnbG9hZCcgPyAnbWlzc2luZycgOiBldmVudC50eXBlKTtcbi8qKioqKiovIFx0XHRcdFx0XHRcdHZhciByZWFsU3JjID0gZXZlbnQgJiYgZXZlbnQudGFyZ2V0ICYmIGV2ZW50LnRhcmdldC5zcmM7XG4vKioqKioqLyBcdFx0XHRcdFx0XHRlcnJvci5tZXNzYWdlID0gJ0xvYWRpbmcgaG90IHVwZGF0ZSBjaHVuayAnICsgY2h1bmtJZCArICcgZmFpbGVkLlxcbignICsgZXJyb3JUeXBlICsgJzogJyArIHJlYWxTcmMgKyAnKSc7XG4vKioqKioqLyBcdFx0XHRcdFx0XHRlcnJvci5uYW1lID0gJ0NodW5rTG9hZEVycm9yJztcbi8qKioqKiovIFx0XHRcdFx0XHRcdGVycm9yLnR5cGUgPSBlcnJvclR5cGU7XG4vKioqKioqLyBcdFx0XHRcdFx0XHRlcnJvci5yZXF1ZXN0ID0gcmVhbFNyYztcbi8qKioqKiovIFx0XHRcdFx0XHRcdHJlamVjdChlcnJvcik7XG4vKioqKioqLyBcdFx0XHRcdFx0fVxuLyoqKioqKi8gXHRcdFx0XHR9O1xuLyoqKioqKi8gXHRcdFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLmwodXJsLCBsb2FkaW5nRW5kZWQpO1xuLyoqKioqKi8gXHRcdFx0fSk7XG4vKioqKioqLyBcdFx0fVxuLyoqKioqKi8gXHRcdFxuLyoqKioqKi8gXHRcdHNlbGZbXCJ3ZWJwYWNrSG90VXBkYXRlX05fRVwiXSA9IChjaHVua0lkLCBtb3JlTW9kdWxlcywgcnVudGltZSkgPT4ge1xuLyoqKioqKi8gXHRcdFx0Zm9yKHZhciBtb2R1bGVJZCBpbiBtb3JlTW9kdWxlcykge1xuLyoqKioqKi8gXHRcdFx0XHRpZihfX3dlYnBhY2tfcmVxdWlyZV9fLm8obW9yZU1vZHVsZXMsIG1vZHVsZUlkKSkge1xuLyoqKioqKi8gXHRcdFx0XHRcdGN1cnJlbnRVcGRhdGVbbW9kdWxlSWRdID0gbW9yZU1vZHVsZXNbbW9kdWxlSWRdO1xuLyoqKioqKi8gXHRcdFx0XHRcdGlmKGN1cnJlbnRVcGRhdGVkTW9kdWxlc0xpc3QpIGN1cnJlbnRVcGRhdGVkTW9kdWxlc0xpc3QucHVzaChtb2R1bGVJZCk7XG4vKioqKioqLyBcdFx0XHRcdH1cbi8qKioqKiovIFx0XHRcdH1cbi8qKioqKiovIFx0XHRcdGlmKHJ1bnRpbWUpIGN1cnJlbnRVcGRhdGVSdW50aW1lLnB1c2gocnVudGltZSk7XG4vKioqKioqLyBcdFx0XHRpZih3YWl0aW5nVXBkYXRlUmVzb2x2ZXNbY2h1bmtJZF0pIHtcbi8qKioqKiovIFx0XHRcdFx0d2FpdGluZ1VwZGF0ZVJlc29sdmVzW2NodW5rSWRdKCk7XG4vKioqKioqLyBcdFx0XHRcdHdhaXRpbmdVcGRhdGVSZXNvbHZlc1tjaHVua0lkXSA9IHVuZGVmaW5lZDtcbi8qKioqKiovIFx0XHRcdH1cbi8qKioqKiovIFx0XHR9O1xuLyoqKioqKi8gXHRcdFxuLyoqKioqKi8gXHRcdHZhciBjdXJyZW50VXBkYXRlQ2h1bmtzO1xuLyoqKioqKi8gXHRcdHZhciBjdXJyZW50VXBkYXRlO1xuLyoqKioqKi8gXHRcdHZhciBjdXJyZW50VXBkYXRlUmVtb3ZlZENodW5rcztcbi8qKioqKiovIFx0XHR2YXIgY3VycmVudFVwZGF0ZVJ1bnRpbWU7XG4vKioqKioqLyBcdFx0ZnVuY3Rpb24gYXBwbHlIYW5kbGVyKG9wdGlvbnMpIHtcbi8qKioqKiovIFx0XHRcdGlmIChfX3dlYnBhY2tfcmVxdWlyZV9fLmYpIGRlbGV0ZSBfX3dlYnBhY2tfcmVxdWlyZV9fLmYuanNvbnBIbXI7XG4vKioqKioqLyBcdFx0XHRjdXJyZW50VXBkYXRlQ2h1bmtzID0gdW5kZWZpbmVkO1xuLyoqKioqKi8gXHRcdFx0ZnVuY3Rpb24gZ2V0QWZmZWN0ZWRNb2R1bGVFZmZlY3RzKHVwZGF0ZU1vZHVsZUlkKSB7XG4vKioqKioqLyBcdFx0XHRcdHZhciBvdXRkYXRlZE1vZHVsZXMgPSBbdXBkYXRlTW9kdWxlSWRdO1xuLyoqKioqKi8gXHRcdFx0XHR2YXIgb3V0ZGF0ZWREZXBlbmRlbmNpZXMgPSB7fTtcbi8qKioqKiovIFx0XHRcbi8qKioqKiovIFx0XHRcdFx0dmFyIHF1ZXVlID0gb3V0ZGF0ZWRNb2R1bGVzLm1hcChmdW5jdGlvbiAoaWQpIHtcbi8qKioqKiovIFx0XHRcdFx0XHRyZXR1cm4ge1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0Y2hhaW46IFtpZF0sXG4vKioqKioqLyBcdFx0XHRcdFx0XHRpZDogaWRcbi8qKioqKiovIFx0XHRcdFx0XHR9O1xuLyoqKioqKi8gXHRcdFx0XHR9KTtcbi8qKioqKiovIFx0XHRcdFx0d2hpbGUgKHF1ZXVlLmxlbmd0aCA+IDApIHtcbi8qKioqKiovIFx0XHRcdFx0XHR2YXIgcXVldWVJdGVtID0gcXVldWUucG9wKCk7XG4vKioqKioqLyBcdFx0XHRcdFx0dmFyIG1vZHVsZUlkID0gcXVldWVJdGVtLmlkO1xuLyoqKioqKi8gXHRcdFx0XHRcdHZhciBjaGFpbiA9IHF1ZXVlSXRlbS5jaGFpbjtcbi8qKioqKiovIFx0XHRcdFx0XHR2YXIgbW9kdWxlID0gX193ZWJwYWNrX3JlcXVpcmVfXy5jW21vZHVsZUlkXTtcbi8qKioqKiovIFx0XHRcdFx0XHRpZiAoXG4vKioqKioqLyBcdFx0XHRcdFx0XHQhbW9kdWxlIHx8XG4vKioqKioqLyBcdFx0XHRcdFx0XHQobW9kdWxlLmhvdC5fc2VsZkFjY2VwdGVkICYmICFtb2R1bGUuaG90Ll9zZWxmSW52YWxpZGF0ZWQpXG4vKioqKioqLyBcdFx0XHRcdFx0KVxuLyoqKioqKi8gXHRcdFx0XHRcdFx0Y29udGludWU7XG4vKioqKioqLyBcdFx0XHRcdFx0aWYgKG1vZHVsZS5ob3QuX3NlbGZEZWNsaW5lZCkge1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0cmV0dXJuIHtcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0dHlwZTogXCJzZWxmLWRlY2xpbmVkXCIsXG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdGNoYWluOiBjaGFpbixcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0bW9kdWxlSWQ6IG1vZHVsZUlkXG4vKioqKioqLyBcdFx0XHRcdFx0XHR9O1xuLyoqKioqKi8gXHRcdFx0XHRcdH1cbi8qKioqKiovIFx0XHRcdFx0XHRpZiAobW9kdWxlLmhvdC5fbWFpbikge1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0cmV0dXJuIHtcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0dHlwZTogXCJ1bmFjY2VwdGVkXCIsXG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdGNoYWluOiBjaGFpbixcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0bW9kdWxlSWQ6IG1vZHVsZUlkXG4vKioqKioqLyBcdFx0XHRcdFx0XHR9O1xuLyoqKioqKi8gXHRcdFx0XHRcdH1cbi8qKioqKiovIFx0XHRcdFx0XHRmb3IgKHZhciBpID0gMDsgaSA8IG1vZHVsZS5wYXJlbnRzLmxlbmd0aDsgaSsrKSB7XG4vKioqKioqLyBcdFx0XHRcdFx0XHR2YXIgcGFyZW50SWQgPSBtb2R1bGUucGFyZW50c1tpXTtcbi8qKioqKiovIFx0XHRcdFx0XHRcdHZhciBwYXJlbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fLmNbcGFyZW50SWRdO1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0aWYgKCFwYXJlbnQpIGNvbnRpbnVlO1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0aWYgKHBhcmVudC5ob3QuX2RlY2xpbmVkRGVwZW5kZW5jaWVzW21vZHVsZUlkXSkge1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHRyZXR1cm4ge1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHRcdHR5cGU6IFwiZGVjbGluZWRcIixcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0XHRjaGFpbjogY2hhaW4uY29uY2F0KFtwYXJlbnRJZF0pLFxuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHRcdG1vZHVsZUlkOiBtb2R1bGVJZCxcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0XHRwYXJlbnRJZDogcGFyZW50SWRcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0fTtcbi8qKioqKiovIFx0XHRcdFx0XHRcdH1cbi8qKioqKiovIFx0XHRcdFx0XHRcdGlmIChvdXRkYXRlZE1vZHVsZXMuaW5kZXhPZihwYXJlbnRJZCkgIT09IC0xKSBjb250aW51ZTtcbi8qKioqKiovIFx0XHRcdFx0XHRcdGlmIChwYXJlbnQuaG90Ll9hY2NlcHRlZERlcGVuZGVuY2llc1ttb2R1bGVJZF0pIHtcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0aWYgKCFvdXRkYXRlZERlcGVuZGVuY2llc1twYXJlbnRJZF0pXG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdFx0b3V0ZGF0ZWREZXBlbmRlbmNpZXNbcGFyZW50SWRdID0gW107XG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdGFkZEFsbFRvU2V0KG91dGRhdGVkRGVwZW5kZW5jaWVzW3BhcmVudElkXSwgW21vZHVsZUlkXSk7XG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdGNvbnRpbnVlO1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0fVxuLyoqKioqKi8gXHRcdFx0XHRcdFx0ZGVsZXRlIG91dGRhdGVkRGVwZW5kZW5jaWVzW3BhcmVudElkXTtcbi8qKioqKiovIFx0XHRcdFx0XHRcdG91dGRhdGVkTW9kdWxlcy5wdXNoKHBhcmVudElkKTtcbi8qKioqKiovIFx0XHRcdFx0XHRcdHF1ZXVlLnB1c2goe1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHRjaGFpbjogY2hhaW4uY29uY2F0KFtwYXJlbnRJZF0pLFxuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHRpZDogcGFyZW50SWRcbi8qKioqKiovIFx0XHRcdFx0XHRcdH0pO1xuLyoqKioqKi8gXHRcdFx0XHRcdH1cbi8qKioqKiovIFx0XHRcdFx0fVxuLyoqKioqKi8gXHRcdFxuLyoqKioqKi8gXHRcdFx0XHRyZXR1cm4ge1xuLyoqKioqKi8gXHRcdFx0XHRcdHR5cGU6IFwiYWNjZXB0ZWRcIixcbi8qKioqKiovIFx0XHRcdFx0XHRtb2R1bGVJZDogdXBkYXRlTW9kdWxlSWQsXG4vKioqKioqLyBcdFx0XHRcdFx0b3V0ZGF0ZWRNb2R1bGVzOiBvdXRkYXRlZE1vZHVsZXMsXG4vKioqKioqLyBcdFx0XHRcdFx0b3V0ZGF0ZWREZXBlbmRlbmNpZXM6IG91dGRhdGVkRGVwZW5kZW5jaWVzXG4vKioqKioqLyBcdFx0XHRcdH07XG4vKioqKioqLyBcdFx0XHR9XG4vKioqKioqLyBcdFx0XG4vKioqKioqLyBcdFx0XHRmdW5jdGlvbiBhZGRBbGxUb1NldChhLCBiKSB7XG4vKioqKioqLyBcdFx0XHRcdGZvciAodmFyIGkgPSAwOyBpIDwgYi5sZW5ndGg7IGkrKykge1xuLyoqKioqKi8gXHRcdFx0XHRcdHZhciBpdGVtID0gYltpXTtcbi8qKioqKiovIFx0XHRcdFx0XHRpZiAoYS5pbmRleE9mKGl0ZW0pID09PSAtMSkgYS5wdXNoKGl0ZW0pO1xuLyoqKioqKi8gXHRcdFx0XHR9XG4vKioqKioqLyBcdFx0XHR9XG4vKioqKioqLyBcdFx0XG4vKioqKioqLyBcdFx0XHQvLyBhdCBiZWdpbiBhbGwgdXBkYXRlcyBtb2R1bGVzIGFyZSBvdXRkYXRlZFxuLyoqKioqKi8gXHRcdFx0Ly8gdGhlIFwib3V0ZGF0ZWRcIiBzdGF0dXMgY2FuIHByb3BhZ2F0ZSB0byBwYXJlbnRzIGlmIHRoZXkgZG9uJ3QgYWNjZXB0IHRoZSBjaGlsZHJlblxuLyoqKioqKi8gXHRcdFx0dmFyIG91dGRhdGVkRGVwZW5kZW5jaWVzID0ge307XG4vKioqKioqLyBcdFx0XHR2YXIgb3V0ZGF0ZWRNb2R1bGVzID0gW107XG4vKioqKioqLyBcdFx0XHR2YXIgYXBwbGllZFVwZGF0ZSA9IHt9O1xuLyoqKioqKi8gXHRcdFxuLyoqKioqKi8gXHRcdFx0dmFyIHdhcm5VbmV4cGVjdGVkUmVxdWlyZSA9IGZ1bmN0aW9uIHdhcm5VbmV4cGVjdGVkUmVxdWlyZShtb2R1bGUpIHtcbi8qKioqKiovIFx0XHRcdFx0Y29uc29sZS53YXJuKFxuLyoqKioqKi8gXHRcdFx0XHRcdFwiW0hNUl0gdW5leHBlY3RlZCByZXF1aXJlKFwiICsgbW9kdWxlLmlkICsgXCIpIHRvIGRpc3Bvc2VkIG1vZHVsZVwiXG4vKioqKioqLyBcdFx0XHRcdCk7XG4vKioqKioqLyBcdFx0XHR9O1xuLyoqKioqKi8gXHRcdFxuLyoqKioqKi8gXHRcdFx0Zm9yICh2YXIgbW9kdWxlSWQgaW4gY3VycmVudFVwZGF0ZSkge1xuLyoqKioqKi8gXHRcdFx0XHRpZiAoX193ZWJwYWNrX3JlcXVpcmVfXy5vKGN1cnJlbnRVcGRhdGUsIG1vZHVsZUlkKSkge1xuLyoqKioqKi8gXHRcdFx0XHRcdHZhciBuZXdNb2R1bGVGYWN0b3J5ID0gY3VycmVudFVwZGF0ZVttb2R1bGVJZF07XG4vKioqKioqLyBcdFx0XHRcdFx0LyoqIEB0eXBlIHtUT0RPfSAqL1xuLyoqKioqKi8gXHRcdFx0XHRcdHZhciByZXN1bHQgPSBuZXdNb2R1bGVGYWN0b3J5XG4vKioqKioqLyBcdFx0XHRcdFx0XHQ/IGdldEFmZmVjdGVkTW9kdWxlRWZmZWN0cyhtb2R1bGVJZClcbi8qKioqKiovIFx0XHRcdFx0XHRcdDoge1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHRcdHR5cGU6IFwiZGlzcG9zZWRcIixcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0XHRtb2R1bGVJZDogbW9kdWxlSWRcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0fTtcbi8qKioqKiovIFx0XHRcdFx0XHQvKiogQHR5cGUge0Vycm9yfGZhbHNlfSAqL1xuLyoqKioqKi8gXHRcdFx0XHRcdHZhciBhYm9ydEVycm9yID0gZmFsc2U7XG4vKioqKioqLyBcdFx0XHRcdFx0dmFyIGRvQXBwbHkgPSBmYWxzZTtcbi8qKioqKiovIFx0XHRcdFx0XHR2YXIgZG9EaXNwb3NlID0gZmFsc2U7XG4vKioqKioqLyBcdFx0XHRcdFx0dmFyIGNoYWluSW5mbyA9IFwiXCI7XG4vKioqKioqLyBcdFx0XHRcdFx0aWYgKHJlc3VsdC5jaGFpbikge1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0Y2hhaW5JbmZvID0gXCJcXG5VcGRhdGUgcHJvcGFnYXRpb246IFwiICsgcmVzdWx0LmNoYWluLmpvaW4oXCIgLT4gXCIpO1xuLyoqKioqKi8gXHRcdFx0XHRcdH1cbi8qKioqKiovIFx0XHRcdFx0XHRzd2l0Y2ggKHJlc3VsdC50eXBlKSB7XG4vKioqKioqLyBcdFx0XHRcdFx0XHRjYXNlIFwic2VsZi1kZWNsaW5lZFwiOlxuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHRpZiAob3B0aW9ucy5vbkRlY2xpbmVkKSBvcHRpb25zLm9uRGVjbGluZWQocmVzdWx0KTtcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0aWYgKCFvcHRpb25zLmlnbm9yZURlY2xpbmVkKVxuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHRcdGFib3J0RXJyb3IgPSBuZXcgRXJyb3IoXG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdFx0XHRcIkFib3J0ZWQgYmVjYXVzZSBvZiBzZWxmIGRlY2xpbmU6IFwiICtcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0XHRcdFx0cmVzdWx0Lm1vZHVsZUlkICtcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2hhaW5JbmZvXG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdFx0KTtcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0YnJlYWs7XG4vKioqKioqLyBcdFx0XHRcdFx0XHRjYXNlIFwiZGVjbGluZWRcIjpcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0aWYgKG9wdGlvbnMub25EZWNsaW5lZCkgb3B0aW9ucy5vbkRlY2xpbmVkKHJlc3VsdCk7XG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdGlmICghb3B0aW9ucy5pZ25vcmVEZWNsaW5lZClcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0XHRhYm9ydEVycm9yID0gbmV3IEVycm9yKFxuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHRcdFx0XCJBYm9ydGVkIGJlY2F1c2Ugb2YgZGVjbGluZWQgZGVwZW5kZW5jeTogXCIgK1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHRcdFx0XHRyZXN1bHQubW9kdWxlSWQgK1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHRcdFx0XHRcIiBpbiBcIiArXG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdFx0XHRcdHJlc3VsdC5wYXJlbnRJZCArXG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdFx0XHRcdGNoYWluSW5mb1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHRcdCk7XG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdGJyZWFrO1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0Y2FzZSBcInVuYWNjZXB0ZWRcIjpcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0aWYgKG9wdGlvbnMub25VbmFjY2VwdGVkKSBvcHRpb25zLm9uVW5hY2NlcHRlZChyZXN1bHQpO1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHRpZiAoIW9wdGlvbnMuaWdub3JlVW5hY2NlcHRlZClcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0XHRhYm9ydEVycm9yID0gbmV3IEVycm9yKFxuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHRcdFx0XCJBYm9ydGVkIGJlY2F1c2UgXCIgKyBtb2R1bGVJZCArIFwiIGlzIG5vdCBhY2NlcHRlZFwiICsgY2hhaW5JbmZvXG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdFx0KTtcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0YnJlYWs7XG4vKioqKioqLyBcdFx0XHRcdFx0XHRjYXNlIFwiYWNjZXB0ZWRcIjpcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0aWYgKG9wdGlvbnMub25BY2NlcHRlZCkgb3B0aW9ucy5vbkFjY2VwdGVkKHJlc3VsdCk7XG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdGRvQXBwbHkgPSB0cnVlO1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHRicmVhaztcbi8qKioqKiovIFx0XHRcdFx0XHRcdGNhc2UgXCJkaXNwb3NlZFwiOlxuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHRpZiAob3B0aW9ucy5vbkRpc3Bvc2VkKSBvcHRpb25zLm9uRGlzcG9zZWQocmVzdWx0KTtcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0ZG9EaXNwb3NlID0gdHJ1ZTtcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0YnJlYWs7XG4vKioqKioqLyBcdFx0XHRcdFx0XHRkZWZhdWx0OlxuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoXCJVbmV4Y2VwdGlvbiB0eXBlIFwiICsgcmVzdWx0LnR5cGUpO1xuLyoqKioqKi8gXHRcdFx0XHRcdH1cbi8qKioqKiovIFx0XHRcdFx0XHRpZiAoYWJvcnRFcnJvcikge1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0cmV0dXJuIHtcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0ZXJyb3I6IGFib3J0RXJyb3Jcbi8qKioqKiovIFx0XHRcdFx0XHRcdH07XG4vKioqKioqLyBcdFx0XHRcdFx0fVxuLyoqKioqKi8gXHRcdFx0XHRcdGlmIChkb0FwcGx5KSB7XG4vKioqKioqLyBcdFx0XHRcdFx0XHRhcHBsaWVkVXBkYXRlW21vZHVsZUlkXSA9IG5ld01vZHVsZUZhY3Rvcnk7XG4vKioqKioqLyBcdFx0XHRcdFx0XHRhZGRBbGxUb1NldChvdXRkYXRlZE1vZHVsZXMsIHJlc3VsdC5vdXRkYXRlZE1vZHVsZXMpO1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0Zm9yIChtb2R1bGVJZCBpbiByZXN1bHQub3V0ZGF0ZWREZXBlbmRlbmNpZXMpIHtcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0aWYgKF9fd2VicGFja19yZXF1aXJlX18ubyhyZXN1bHQub3V0ZGF0ZWREZXBlbmRlbmNpZXMsIG1vZHVsZUlkKSkge1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHRcdGlmICghb3V0ZGF0ZWREZXBlbmRlbmNpZXNbbW9kdWxlSWRdKVxuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHRcdFx0b3V0ZGF0ZWREZXBlbmRlbmNpZXNbbW9kdWxlSWRdID0gW107XG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdFx0YWRkQWxsVG9TZXQoXG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdFx0XHRvdXRkYXRlZERlcGVuZGVuY2llc1ttb2R1bGVJZF0sXG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdFx0XHRyZXN1bHQub3V0ZGF0ZWREZXBlbmRlbmNpZXNbbW9kdWxlSWRdXG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdFx0KTtcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0fVxuLyoqKioqKi8gXHRcdFx0XHRcdFx0fVxuLyoqKioqKi8gXHRcdFx0XHRcdH1cbi8qKioqKiovIFx0XHRcdFx0XHRpZiAoZG9EaXNwb3NlKSB7XG4vKioqKioqLyBcdFx0XHRcdFx0XHRhZGRBbGxUb1NldChvdXRkYXRlZE1vZHVsZXMsIFtyZXN1bHQubW9kdWxlSWRdKTtcbi8qKioqKiovIFx0XHRcdFx0XHRcdGFwcGxpZWRVcGRhdGVbbW9kdWxlSWRdID0gd2FyblVuZXhwZWN0ZWRSZXF1aXJlO1xuLyoqKioqKi8gXHRcdFx0XHRcdH1cbi8qKioqKiovIFx0XHRcdFx0fVxuLyoqKioqKi8gXHRcdFx0fVxuLyoqKioqKi8gXHRcdFx0Y3VycmVudFVwZGF0ZSA9IHVuZGVmaW5lZDtcbi8qKioqKiovIFx0XHRcbi8qKioqKiovIFx0XHRcdC8vIFN0b3JlIHNlbGYgYWNjZXB0ZWQgb3V0ZGF0ZWQgbW9kdWxlcyB0byByZXF1aXJlIHRoZW0gbGF0ZXIgYnkgdGhlIG1vZHVsZSBzeXN0ZW1cbi8qKioqKiovIFx0XHRcdHZhciBvdXRkYXRlZFNlbGZBY2NlcHRlZE1vZHVsZXMgPSBbXTtcbi8qKioqKiovIFx0XHRcdGZvciAodmFyIGogPSAwOyBqIDwgb3V0ZGF0ZWRNb2R1bGVzLmxlbmd0aDsgaisrKSB7XG4vKioqKioqLyBcdFx0XHRcdHZhciBvdXRkYXRlZE1vZHVsZUlkID0gb3V0ZGF0ZWRNb2R1bGVzW2pdO1xuLyoqKioqKi8gXHRcdFx0XHR2YXIgbW9kdWxlID0gX193ZWJwYWNrX3JlcXVpcmVfXy5jW291dGRhdGVkTW9kdWxlSWRdO1xuLyoqKioqKi8gXHRcdFx0XHRpZiAoXG4vKioqKioqLyBcdFx0XHRcdFx0bW9kdWxlICYmXG4vKioqKioqLyBcdFx0XHRcdFx0KG1vZHVsZS5ob3QuX3NlbGZBY2NlcHRlZCB8fCBtb2R1bGUuaG90Ll9tYWluKSAmJlxuLyoqKioqKi8gXHRcdFx0XHRcdC8vIHJlbW92ZWQgc2VsZi1hY2NlcHRlZCBtb2R1bGVzIHNob3VsZCBub3QgYmUgcmVxdWlyZWRcbi8qKioqKiovIFx0XHRcdFx0XHRhcHBsaWVkVXBkYXRlW291dGRhdGVkTW9kdWxlSWRdICE9PSB3YXJuVW5leHBlY3RlZFJlcXVpcmUgJiZcbi8qKioqKiovIFx0XHRcdFx0XHQvLyB3aGVuIGNhbGxlZCBpbnZhbGlkYXRlIHNlbGYtYWNjZXB0aW5nIGlzIG5vdCBwb3NzaWJsZVxuLyoqKioqKi8gXHRcdFx0XHRcdCFtb2R1bGUuaG90Ll9zZWxmSW52YWxpZGF0ZWRcbi8qKioqKiovIFx0XHRcdFx0KSB7XG4vKioqKioqLyBcdFx0XHRcdFx0b3V0ZGF0ZWRTZWxmQWNjZXB0ZWRNb2R1bGVzLnB1c2goe1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0bW9kdWxlOiBvdXRkYXRlZE1vZHVsZUlkLFxuLyoqKioqKi8gXHRcdFx0XHRcdFx0cmVxdWlyZTogbW9kdWxlLmhvdC5fcmVxdWlyZVNlbGYsXG4vKioqKioqLyBcdFx0XHRcdFx0XHRlcnJvckhhbmRsZXI6IG1vZHVsZS5ob3QuX3NlbGZBY2NlcHRlZFxuLyoqKioqKi8gXHRcdFx0XHRcdH0pO1xuLyoqKioqKi8gXHRcdFx0XHR9XG4vKioqKioqLyBcdFx0XHR9XG4vKioqKioqLyBcdFx0XG4vKioqKioqLyBcdFx0XHR2YXIgbW9kdWxlT3V0ZGF0ZWREZXBlbmRlbmNpZXM7XG4vKioqKioqLyBcdFx0XG4vKioqKioqLyBcdFx0XHRyZXR1cm4ge1xuLyoqKioqKi8gXHRcdFx0XHRkaXNwb3NlOiBmdW5jdGlvbiAoKSB7XG4vKioqKioqLyBcdFx0XHRcdFx0Y3VycmVudFVwZGF0ZVJlbW92ZWRDaHVua3MuZm9yRWFjaChmdW5jdGlvbiAoY2h1bmtJZCkge1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0ZGVsZXRlIGluc3RhbGxlZENodW5rc1tjaHVua0lkXTtcbi8qKioqKiovIFx0XHRcdFx0XHR9KTtcbi8qKioqKiovIFx0XHRcdFx0XHRjdXJyZW50VXBkYXRlUmVtb3ZlZENodW5rcyA9IHVuZGVmaW5lZDtcbi8qKioqKiovIFx0XHRcbi8qKioqKiovIFx0XHRcdFx0XHR2YXIgaWR4O1xuLyoqKioqKi8gXHRcdFx0XHRcdHZhciBxdWV1ZSA9IG91dGRhdGVkTW9kdWxlcy5zbGljZSgpO1xuLyoqKioqKi8gXHRcdFx0XHRcdHdoaWxlIChxdWV1ZS5sZW5ndGggPiAwKSB7XG4vKioqKioqLyBcdFx0XHRcdFx0XHR2YXIgbW9kdWxlSWQgPSBxdWV1ZS5wb3AoKTtcbi8qKioqKiovIFx0XHRcdFx0XHRcdHZhciBtb2R1bGUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fLmNbbW9kdWxlSWRdO1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0aWYgKCFtb2R1bGUpIGNvbnRpbnVlO1xuLyoqKioqKi8gXHRcdFxuLyoqKioqKi8gXHRcdFx0XHRcdFx0dmFyIGRhdGEgPSB7fTtcbi8qKioqKiovIFx0XHRcbi8qKioqKiovIFx0XHRcdFx0XHRcdC8vIENhbGwgZGlzcG9zZSBoYW5kbGVyc1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0dmFyIGRpc3Bvc2VIYW5kbGVycyA9IG1vZHVsZS5ob3QuX2Rpc3Bvc2VIYW5kbGVycztcbi8qKioqKiovIFx0XHRcdFx0XHRcdGZvciAoaiA9IDA7IGogPCBkaXNwb3NlSGFuZGxlcnMubGVuZ3RoOyBqKyspIHtcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0ZGlzcG9zZUhhbmRsZXJzW2pdLmNhbGwobnVsbCwgZGF0YSk7XG4vKioqKioqLyBcdFx0XHRcdFx0XHR9XG4vKioqKioqLyBcdFx0XHRcdFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLmhtckRbbW9kdWxlSWRdID0gZGF0YTtcbi8qKioqKiovIFx0XHRcbi8qKioqKiovIFx0XHRcdFx0XHRcdC8vIGRpc2FibGUgbW9kdWxlICh0aGlzIGRpc2FibGVzIHJlcXVpcmVzIGZyb20gdGhpcyBtb2R1bGUpXG4vKioqKioqLyBcdFx0XHRcdFx0XHRtb2R1bGUuaG90LmFjdGl2ZSA9IGZhbHNlO1xuLyoqKioqKi8gXHRcdFxuLyoqKioqKi8gXHRcdFx0XHRcdFx0Ly8gcmVtb3ZlIG1vZHVsZSBmcm9tIGNhY2hlXG4vKioqKioqLyBcdFx0XHRcdFx0XHRkZWxldGUgX193ZWJwYWNrX3JlcXVpcmVfXy5jW21vZHVsZUlkXTtcbi8qKioqKiovIFx0XHRcbi8qKioqKiovIFx0XHRcdFx0XHRcdC8vIHdoZW4gZGlzcG9zaW5nIHRoZXJlIGlzIG5vIG5lZWQgdG8gY2FsbCBkaXNwb3NlIGhhbmRsZXJcbi8qKioqKiovIFx0XHRcdFx0XHRcdGRlbGV0ZSBvdXRkYXRlZERlcGVuZGVuY2llc1ttb2R1bGVJZF07XG4vKioqKioqLyBcdFx0XG4vKioqKioqLyBcdFx0XHRcdFx0XHQvLyByZW1vdmUgXCJwYXJlbnRzXCIgcmVmZXJlbmNlcyBmcm9tIGFsbCBjaGlsZHJlblxuLyoqKioqKi8gXHRcdFx0XHRcdFx0Zm9yIChqID0gMDsgaiA8IG1vZHVsZS5jaGlsZHJlbi5sZW5ndGg7IGorKykge1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHR2YXIgY2hpbGQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fLmNbbW9kdWxlLmNoaWxkcmVuW2pdXTtcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0aWYgKCFjaGlsZCkgY29udGludWU7XG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdGlkeCA9IGNoaWxkLnBhcmVudHMuaW5kZXhPZihtb2R1bGVJZCk7XG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdGlmIChpZHggPj0gMCkge1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHRcdGNoaWxkLnBhcmVudHMuc3BsaWNlKGlkeCwgMSk7XG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdH1cbi8qKioqKiovIFx0XHRcdFx0XHRcdH1cbi8qKioqKiovIFx0XHRcdFx0XHR9XG4vKioqKioqLyBcdFx0XG4vKioqKioqLyBcdFx0XHRcdFx0Ly8gcmVtb3ZlIG91dGRhdGVkIGRlcGVuZGVuY3kgZnJvbSBtb2R1bGUgY2hpbGRyZW5cbi8qKioqKiovIFx0XHRcdFx0XHR2YXIgZGVwZW5kZW5jeTtcbi8qKioqKiovIFx0XHRcdFx0XHRmb3IgKHZhciBvdXRkYXRlZE1vZHVsZUlkIGluIG91dGRhdGVkRGVwZW5kZW5jaWVzKSB7XG4vKioqKioqLyBcdFx0XHRcdFx0XHRpZiAoX193ZWJwYWNrX3JlcXVpcmVfXy5vKG91dGRhdGVkRGVwZW5kZW5jaWVzLCBvdXRkYXRlZE1vZHVsZUlkKSkge1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHRtb2R1bGUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fLmNbb3V0ZGF0ZWRNb2R1bGVJZF07XG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdGlmIChtb2R1bGUpIHtcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0XHRtb2R1bGVPdXRkYXRlZERlcGVuZGVuY2llcyA9XG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdFx0XHRvdXRkYXRlZERlcGVuZGVuY2llc1tvdXRkYXRlZE1vZHVsZUlkXTtcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0XHRmb3IgKGogPSAwOyBqIDwgbW9kdWxlT3V0ZGF0ZWREZXBlbmRlbmNpZXMubGVuZ3RoOyBqKyspIHtcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0XHRcdGRlcGVuZGVuY3kgPSBtb2R1bGVPdXRkYXRlZERlcGVuZGVuY2llc1tqXTtcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0XHRcdGlkeCA9IG1vZHVsZS5jaGlsZHJlbi5pbmRleE9mKGRlcGVuZGVuY3kpO1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHRcdFx0aWYgKGlkeCA+PSAwKSBtb2R1bGUuY2hpbGRyZW4uc3BsaWNlKGlkeCwgMSk7XG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdFx0fVxuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHR9XG4vKioqKioqLyBcdFx0XHRcdFx0XHR9XG4vKioqKioqLyBcdFx0XHRcdFx0fVxuLyoqKioqKi8gXHRcdFx0XHR9LFxuLyoqKioqKi8gXHRcdFx0XHRhcHBseTogZnVuY3Rpb24gKHJlcG9ydEVycm9yKSB7XG4vKioqKioqLyBcdFx0XHRcdFx0Ly8gaW5zZXJ0IG5ldyBjb2RlXG4vKioqKioqLyBcdFx0XHRcdFx0Zm9yICh2YXIgdXBkYXRlTW9kdWxlSWQgaW4gYXBwbGllZFVwZGF0ZSkge1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0aWYgKF9fd2VicGFja19yZXF1aXJlX18ubyhhcHBsaWVkVXBkYXRlLCB1cGRhdGVNb2R1bGVJZCkpIHtcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5tW3VwZGF0ZU1vZHVsZUlkXSA9IGFwcGxpZWRVcGRhdGVbdXBkYXRlTW9kdWxlSWRdO1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0fVxuLyoqKioqKi8gXHRcdFx0XHRcdH1cbi8qKioqKiovIFx0XHRcbi8qKioqKiovIFx0XHRcdFx0XHQvLyBydW4gbmV3IHJ1bnRpbWUgbW9kdWxlc1xuLyoqKioqKi8gXHRcdFx0XHRcdGZvciAodmFyIGkgPSAwOyBpIDwgY3VycmVudFVwZGF0ZVJ1bnRpbWUubGVuZ3RoOyBpKyspIHtcbi8qKioqKiovIFx0XHRcdFx0XHRcdGN1cnJlbnRVcGRhdGVSdW50aW1lW2ldKF9fd2VicGFja19yZXF1aXJlX18pO1xuLyoqKioqKi8gXHRcdFx0XHRcdH1cbi8qKioqKiovIFx0XHRcbi8qKioqKiovIFx0XHRcdFx0XHQvLyBjYWxsIGFjY2VwdCBoYW5kbGVyc1xuLyoqKioqKi8gXHRcdFx0XHRcdGZvciAodmFyIG91dGRhdGVkTW9kdWxlSWQgaW4gb3V0ZGF0ZWREZXBlbmRlbmNpZXMpIHtcbi8qKioqKiovIFx0XHRcdFx0XHRcdGlmIChfX3dlYnBhY2tfcmVxdWlyZV9fLm8ob3V0ZGF0ZWREZXBlbmRlbmNpZXMsIG91dGRhdGVkTW9kdWxlSWQpKSB7XG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdHZhciBtb2R1bGUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fLmNbb3V0ZGF0ZWRNb2R1bGVJZF07XG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdGlmIChtb2R1bGUpIHtcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0XHRtb2R1bGVPdXRkYXRlZERlcGVuZGVuY2llcyA9XG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdFx0XHRvdXRkYXRlZERlcGVuZGVuY2llc1tvdXRkYXRlZE1vZHVsZUlkXTtcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0XHR2YXIgY2FsbGJhY2tzID0gW107XG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdFx0dmFyIGVycm9ySGFuZGxlcnMgPSBbXTtcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0XHR2YXIgZGVwZW5kZW5jaWVzRm9yQ2FsbGJhY2tzID0gW107XG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgaiA9IDA7IGogPCBtb2R1bGVPdXRkYXRlZERlcGVuZGVuY2llcy5sZW5ndGg7IGorKykge1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHRcdFx0dmFyIGRlcGVuZGVuY3kgPSBtb2R1bGVPdXRkYXRlZERlcGVuZGVuY2llc1tqXTtcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0XHRcdHZhciBhY2NlcHRDYWxsYmFjayA9XG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdFx0XHRcdG1vZHVsZS5ob3QuX2FjY2VwdGVkRGVwZW5kZW5jaWVzW2RlcGVuZGVuY3ldO1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHRcdFx0dmFyIGVycm9ySGFuZGxlciA9XG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdFx0XHRcdG1vZHVsZS5ob3QuX2FjY2VwdGVkRXJyb3JIYW5kbGVyc1tkZXBlbmRlbmN5XTtcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0XHRcdGlmIChhY2NlcHRDYWxsYmFjaykge1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoY2FsbGJhY2tzLmluZGV4T2YoYWNjZXB0Q2FsbGJhY2spICE9PSAtMSkgY29udGludWU7XG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdFx0XHRcdGNhbGxiYWNrcy5wdXNoKGFjY2VwdENhbGxiYWNrKTtcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0XHRcdFx0ZXJyb3JIYW5kbGVycy5wdXNoKGVycm9ySGFuZGxlcik7XG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdFx0XHRcdGRlcGVuZGVuY2llc0ZvckNhbGxiYWNrcy5wdXNoKGRlcGVuZGVuY3kpO1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHRcdFx0fVxuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHRcdH1cbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0XHRmb3IgKHZhciBrID0gMDsgayA8IGNhbGxiYWNrcy5sZW5ndGg7IGsrKykge1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHRcdFx0dHJ5IHtcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2FsbGJhY2tzW2tdLmNhbGwobnVsbCwgbW9kdWxlT3V0ZGF0ZWREZXBlbmRlbmNpZXMpO1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHRcdFx0fSBjYXRjaCAoZXJyKSB7XG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdFx0XHRcdGlmICh0eXBlb2YgZXJyb3JIYW5kbGVyc1trXSA9PT0gXCJmdW5jdGlvblwiKSB7XG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dHJ5IHtcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGVycm9ySGFuZGxlcnNba10oZXJyLCB7XG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdG1vZHVsZUlkOiBvdXRkYXRlZE1vZHVsZUlkLFxuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRkZXBlbmRlbmN5SWQ6IGRlcGVuZGVuY2llc0ZvckNhbGxiYWNrc1trXVxuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSk7XG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSBjYXRjaCAoZXJyMikge1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKG9wdGlvbnMub25FcnJvcmVkKSB7XG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdG9wdGlvbnMub25FcnJvcmVkKHtcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0eXBlOiBcImFjY2VwdC1lcnJvci1oYW5kbGVyLWVycm9yZWRcIixcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRtb2R1bGVJZDogb3V0ZGF0ZWRNb2R1bGVJZCxcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRkZXBlbmRlbmN5SWQ6IGRlcGVuZGVuY2llc0ZvckNhbGxiYWNrc1trXSxcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRlcnJvcjogZXJyMixcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRvcmlnaW5hbEVycm9yOiBlcnJcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSk7XG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoIW9wdGlvbnMuaWdub3JlRXJyb3JlZCkge1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXBvcnRFcnJvcihlcnIyKTtcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmVwb3J0RXJyb3IoZXJyKTtcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKG9wdGlvbnMub25FcnJvcmVkKSB7XG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRvcHRpb25zLm9uRXJyb3JlZCh7XG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHR5cGU6IFwiYWNjZXB0LWVycm9yZWRcIixcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0bW9kdWxlSWQ6IG91dGRhdGVkTW9kdWxlSWQsXG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGRlcGVuZGVuY3lJZDogZGVwZW5kZW5jaWVzRm9yQ2FsbGJhY2tzW2tdLFxuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRlcnJvcjogZXJyXG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9KTtcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKCFvcHRpb25zLmlnbm9yZUVycm9yZWQpIHtcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJlcG9ydEVycm9yKGVycik7XG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHRcdFx0XHR9XG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdFx0XHR9XG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdFx0fVxuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHR9XG4vKioqKioqLyBcdFx0XHRcdFx0XHR9XG4vKioqKioqLyBcdFx0XHRcdFx0fVxuLyoqKioqKi8gXHRcdFxuLyoqKioqKi8gXHRcdFx0XHRcdC8vIExvYWQgc2VsZiBhY2NlcHRlZCBtb2R1bGVzXG4vKioqKioqLyBcdFx0XHRcdFx0Zm9yICh2YXIgbyA9IDA7IG8gPCBvdXRkYXRlZFNlbGZBY2NlcHRlZE1vZHVsZXMubGVuZ3RoOyBvKyspIHtcbi8qKioqKiovIFx0XHRcdFx0XHRcdHZhciBpdGVtID0gb3V0ZGF0ZWRTZWxmQWNjZXB0ZWRNb2R1bGVzW29dO1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0dmFyIG1vZHVsZUlkID0gaXRlbS5tb2R1bGU7XG4vKioqKioqLyBcdFx0XHRcdFx0XHR0cnkge1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHRpdGVtLnJlcXVpcmUobW9kdWxlSWQpO1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0fSBjYXRjaCAoZXJyKSB7XG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdGlmICh0eXBlb2YgaXRlbS5lcnJvckhhbmRsZXIgPT09IFwiZnVuY3Rpb25cIikge1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHRcdHRyeSB7XG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdFx0XHRpdGVtLmVycm9ySGFuZGxlcihlcnIsIHtcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0XHRcdFx0bW9kdWxlSWQ6IG1vZHVsZUlkLFxuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHRcdFx0XHRtb2R1bGU6IF9fd2VicGFja19yZXF1aXJlX18uY1ttb2R1bGVJZF1cbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0XHRcdH0pO1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHRcdH0gY2F0Y2ggKGVycjEpIHtcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0XHRcdGlmIChvcHRpb25zLm9uRXJyb3JlZCkge1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHRcdFx0XHRvcHRpb25zLm9uRXJyb3JlZCh7XG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dHlwZTogXCJzZWxmLWFjY2VwdC1lcnJvci1oYW5kbGVyLWVycm9yZWRcIixcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRtb2R1bGVJZDogbW9kdWxlSWQsXG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZXJyb3I6IGVycjEsXG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdFx0XHRcdFx0b3JpZ2luYWxFcnJvcjogZXJyXG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdFx0XHRcdH0pO1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHRcdFx0fVxuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHRcdFx0aWYgKCFvcHRpb25zLmlnbm9yZUVycm9yZWQpIHtcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0XHRcdFx0cmVwb3J0RXJyb3IoZXJyMSk7XG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdFx0XHRcdHJlcG9ydEVycm9yKGVycik7XG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdFx0XHR9XG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdFx0fVxuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHR9IGVsc2Uge1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHRcdGlmIChvcHRpb25zLm9uRXJyb3JlZCkge1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHRcdFx0b3B0aW9ucy5vbkVycm9yZWQoe1xuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHRcdFx0XHR0eXBlOiBcInNlbGYtYWNjZXB0LWVycm9yZWRcIixcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0XHRcdFx0bW9kdWxlSWQ6IG1vZHVsZUlkLFxuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHRcdFx0XHRlcnJvcjogZXJyXG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdFx0XHR9KTtcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0XHR9XG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdFx0aWYgKCFvcHRpb25zLmlnbm9yZUVycm9yZWQpIHtcbi8qKioqKiovIFx0XHRcdFx0XHRcdFx0XHRcdHJlcG9ydEVycm9yKGVycik7XG4vKioqKioqLyBcdFx0XHRcdFx0XHRcdFx0fVxuLyoqKioqKi8gXHRcdFx0XHRcdFx0XHR9XG4vKioqKioqLyBcdFx0XHRcdFx0XHR9XG4vKioqKioqLyBcdFx0XHRcdFx0fVxuLyoqKioqKi8gXHRcdFxuLyoqKioqKi8gXHRcdFx0XHRcdHJldHVybiBvdXRkYXRlZE1vZHVsZXM7XG4vKioqKioqLyBcdFx0XHRcdH1cbi8qKioqKiovIFx0XHRcdH07XG4vKioqKioqLyBcdFx0fVxuLyoqKioqKi8gXHRcdF9fd2VicGFja19yZXF1aXJlX18uaG1ySS5qc29ucCA9IGZ1bmN0aW9uIChtb2R1bGVJZCwgYXBwbHlIYW5kbGVycykge1xuLyoqKioqKi8gXHRcdFx0aWYgKCFjdXJyZW50VXBkYXRlKSB7XG4vKioqKioqLyBcdFx0XHRcdGN1cnJlbnRVcGRhdGUgPSB7fTtcbi8qKioqKiovIFx0XHRcdFx0Y3VycmVudFVwZGF0ZVJ1bnRpbWUgPSBbXTtcbi8qKioqKiovIFx0XHRcdFx0Y3VycmVudFVwZGF0ZVJlbW92ZWRDaHVua3MgPSBbXTtcbi8qKioqKiovIFx0XHRcdFx0YXBwbHlIYW5kbGVycy5wdXNoKGFwcGx5SGFuZGxlcik7XG4vKioqKioqLyBcdFx0XHR9XG4vKioqKioqLyBcdFx0XHRpZiAoIV9fd2VicGFja19yZXF1aXJlX18ubyhjdXJyZW50VXBkYXRlLCBtb2R1bGVJZCkpIHtcbi8qKioqKiovIFx0XHRcdFx0Y3VycmVudFVwZGF0ZVttb2R1bGVJZF0gPSBfX3dlYnBhY2tfcmVxdWlyZV9fLm1bbW9kdWxlSWRdO1xuLyoqKioqKi8gXHRcdFx0fVxuLyoqKioqKi8gXHRcdH07XG4vKioqKioqLyBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5obXJDLmpzb25wID0gZnVuY3Rpb24gKFxuLyoqKioqKi8gXHRcdFx0Y2h1bmtJZHMsXG4vKioqKioqLyBcdFx0XHRyZW1vdmVkQ2h1bmtzLFxuLyoqKioqKi8gXHRcdFx0cmVtb3ZlZE1vZHVsZXMsXG4vKioqKioqLyBcdFx0XHRwcm9taXNlcyxcbi8qKioqKiovIFx0XHRcdGFwcGx5SGFuZGxlcnMsXG4vKioqKioqLyBcdFx0XHR1cGRhdGVkTW9kdWxlc0xpc3Rcbi8qKioqKiovIFx0XHQpIHtcbi8qKioqKiovIFx0XHRcdGFwcGx5SGFuZGxlcnMucHVzaChhcHBseUhhbmRsZXIpO1xuLyoqKioqKi8gXHRcdFx0Y3VycmVudFVwZGF0ZUNodW5rcyA9IHt9O1xuLyoqKioqKi8gXHRcdFx0Y3VycmVudFVwZGF0ZVJlbW92ZWRDaHVua3MgPSByZW1vdmVkQ2h1bmtzO1xuLyoqKioqKi8gXHRcdFx0Y3VycmVudFVwZGF0ZSA9IHJlbW92ZWRNb2R1bGVzLnJlZHVjZShmdW5jdGlvbiAob2JqLCBrZXkpIHtcbi8qKioqKiovIFx0XHRcdFx0b2JqW2tleV0gPSBmYWxzZTtcbi8qKioqKiovIFx0XHRcdFx0cmV0dXJuIG9iajtcbi8qKioqKiovIFx0XHRcdH0sIHt9KTtcbi8qKioqKiovIFx0XHRcdGN1cnJlbnRVcGRhdGVSdW50aW1lID0gW107XG4vKioqKioqLyBcdFx0XHRjaHVua0lkcy5mb3JFYWNoKGZ1bmN0aW9uIChjaHVua0lkKSB7XG4vKioqKioqLyBcdFx0XHRcdGlmIChcbi8qKioqKiovIFx0XHRcdFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLm8oaW5zdGFsbGVkQ2h1bmtzLCBjaHVua0lkKSAmJlxuLyoqKioqKi8gXHRcdFx0XHRcdGluc3RhbGxlZENodW5rc1tjaHVua0lkXSAhPT0gdW5kZWZpbmVkXG4vKioqKioqLyBcdFx0XHRcdCkge1xuLyoqKioqKi8gXHRcdFx0XHRcdHByb21pc2VzLnB1c2gobG9hZFVwZGF0ZUNodW5rKGNodW5rSWQsIHVwZGF0ZWRNb2R1bGVzTGlzdCkpO1xuLyoqKioqKi8gXHRcdFx0XHRcdGN1cnJlbnRVcGRhdGVDaHVua3NbY2h1bmtJZF0gPSB0cnVlO1xuLyoqKioqKi8gXHRcdFx0XHR9IGVsc2Uge1xuLyoqKioqKi8gXHRcdFx0XHRcdGN1cnJlbnRVcGRhdGVDaHVua3NbY2h1bmtJZF0gPSBmYWxzZTtcbi8qKioqKiovIFx0XHRcdFx0fVxuLyoqKioqKi8gXHRcdFx0fSk7XG4vKioqKioqLyBcdFx0XHRpZiAoX193ZWJwYWNrX3JlcXVpcmVfXy5mKSB7XG4vKioqKioqLyBcdFx0XHRcdF9fd2VicGFja19yZXF1aXJlX18uZi5qc29ucEhtciA9IGZ1bmN0aW9uIChjaHVua0lkLCBwcm9taXNlcykge1xuLyoqKioqKi8gXHRcdFx0XHRcdGlmIChcbi8qKioqKiovIFx0XHRcdFx0XHRcdGN1cnJlbnRVcGRhdGVDaHVua3MgJiZcbi8qKioqKiovIFx0XHRcdFx0XHRcdF9fd2VicGFja19yZXF1aXJlX18ubyhjdXJyZW50VXBkYXRlQ2h1bmtzLCBjaHVua0lkKSAmJlxuLyoqKioqKi8gXHRcdFx0XHRcdFx0IWN1cnJlbnRVcGRhdGVDaHVua3NbY2h1bmtJZF1cbi8qKioqKiovIFx0XHRcdFx0XHQpIHtcbi8qKioqKiovIFx0XHRcdFx0XHRcdHByb21pc2VzLnB1c2gobG9hZFVwZGF0ZUNodW5rKGNodW5rSWQpKTtcbi8qKioqKiovIFx0XHRcdFx0XHRcdGN1cnJlbnRVcGRhdGVDaHVua3NbY2h1bmtJZF0gPSB0cnVlO1xuLyoqKioqKi8gXHRcdFx0XHRcdH1cbi8qKioqKiovIFx0XHRcdFx0fTtcbi8qKioqKiovIFx0XHRcdH1cbi8qKioqKiovIFx0XHR9O1xuLyoqKioqKi8gXHRcdFxuLyoqKioqKi8gXHRcdF9fd2VicGFja19yZXF1aXJlX18uaG1yTSA9ICgpID0+IHtcbi8qKioqKiovIFx0XHRcdGlmICh0eXBlb2YgZmV0Y2ggPT09IFwidW5kZWZpbmVkXCIpIHRocm93IG5ldyBFcnJvcihcIk5vIGJyb3dzZXIgc3VwcG9ydDogbmVlZCBmZXRjaCBBUElcIik7XG4vKioqKioqLyBcdFx0XHRyZXR1cm4gZmV0Y2goX193ZWJwYWNrX3JlcXVpcmVfXy5wICsgX193ZWJwYWNrX3JlcXVpcmVfXy5obXJGKCkpLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG4vKioqKioqLyBcdFx0XHRcdGlmKHJlc3BvbnNlLnN0YXR1cyA9PT0gNDA0KSByZXR1cm47IC8vIG5vIHVwZGF0ZSBhdmFpbGFibGVcbi8qKioqKiovIFx0XHRcdFx0aWYoIXJlc3BvbnNlLm9rKSB0aHJvdyBuZXcgRXJyb3IoXCJGYWlsZWQgdG8gZmV0Y2ggdXBkYXRlIG1hbmlmZXN0IFwiICsgcmVzcG9uc2Uuc3RhdHVzVGV4dCk7XG4vKioqKioqLyBcdFx0XHRcdHJldHVybiByZXNwb25zZS5qc29uKCk7XG4vKioqKioqLyBcdFx0XHR9KTtcbi8qKioqKiovIFx0XHR9O1xuLyoqKioqKi8gXHRcdFxuLyoqKioqKi8gXHRcdF9fd2VicGFja19yZXF1aXJlX18uTy5qID0gKGNodW5rSWQpID0+IChpbnN0YWxsZWRDaHVua3NbY2h1bmtJZF0gPT09IDApO1xuLyoqKioqKi8gXHRcdFxuLyoqKioqKi8gXHRcdC8vIGluc3RhbGwgYSBKU09OUCBjYWxsYmFjayBmb3IgY2h1bmsgbG9hZGluZ1xuLyoqKioqKi8gXHRcdHZhciB3ZWJwYWNrSnNvbnBDYWxsYmFjayA9IChwYXJlbnRDaHVua0xvYWRpbmdGdW5jdGlvbiwgZGF0YSkgPT4ge1xuLyoqKioqKi8gXHRcdFx0dmFyIFtjaHVua0lkcywgbW9yZU1vZHVsZXMsIHJ1bnRpbWVdID0gZGF0YTtcbi8qKioqKiovIFx0XHRcdC8vIGFkZCBcIm1vcmVNb2R1bGVzXCIgdG8gdGhlIG1vZHVsZXMgb2JqZWN0LFxuLyoqKioqKi8gXHRcdFx0Ly8gdGhlbiBmbGFnIGFsbCBcImNodW5rSWRzXCIgYXMgbG9hZGVkIGFuZCBmaXJlIGNhbGxiYWNrXG4vKioqKioqLyBcdFx0XHR2YXIgbW9kdWxlSWQsIGNodW5rSWQsIGkgPSAwO1xuLyoqKioqKi8gXHRcdFx0aWYoY2h1bmtJZHMuc29tZSgoaWQpID0+IChpbnN0YWxsZWRDaHVua3NbaWRdICE9PSAwKSkpIHtcbi8qKioqKiovIFx0XHRcdFx0Zm9yKG1vZHVsZUlkIGluIG1vcmVNb2R1bGVzKSB7XG4vKioqKioqLyBcdFx0XHRcdFx0aWYoX193ZWJwYWNrX3JlcXVpcmVfXy5vKG1vcmVNb2R1bGVzLCBtb2R1bGVJZCkpIHtcbi8qKioqKiovIFx0XHRcdFx0XHRcdF9fd2VicGFja19yZXF1aXJlX18ubVttb2R1bGVJZF0gPSBtb3JlTW9kdWxlc1ttb2R1bGVJZF07XG4vKioqKioqLyBcdFx0XHRcdFx0fVxuLyoqKioqKi8gXHRcdFx0XHR9XG4vKioqKioqLyBcdFx0XHRcdGlmKHJ1bnRpbWUpIHZhciByZXN1bHQgPSBydW50aW1lKF9fd2VicGFja19yZXF1aXJlX18pO1xuLyoqKioqKi8gXHRcdFx0fVxuLyoqKioqKi8gXHRcdFx0aWYocGFyZW50Q2h1bmtMb2FkaW5nRnVuY3Rpb24pIHBhcmVudENodW5rTG9hZGluZ0Z1bmN0aW9uKGRhdGEpO1xuLyoqKioqKi8gXHRcdFx0Zm9yKDtpIDwgY2h1bmtJZHMubGVuZ3RoOyBpKyspIHtcbi8qKioqKiovIFx0XHRcdFx0Y2h1bmtJZCA9IGNodW5rSWRzW2ldO1xuLyoqKioqKi8gXHRcdFx0XHRpZihfX3dlYnBhY2tfcmVxdWlyZV9fLm8oaW5zdGFsbGVkQ2h1bmtzLCBjaHVua0lkKSAmJiBpbnN0YWxsZWRDaHVua3NbY2h1bmtJZF0pIHtcbi8qKioqKiovIFx0XHRcdFx0XHRpbnN0YWxsZWRDaHVua3NbY2h1bmtJZF1bMF0oKTtcbi8qKioqKiovIFx0XHRcdFx0fVxuLyoqKioqKi8gXHRcdFx0XHRpbnN0YWxsZWRDaHVua3NbY2h1bmtJZF0gPSAwO1xuLyoqKioqKi8gXHRcdFx0fVxuLyoqKioqKi8gXHRcdFx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18uTyhyZXN1bHQpO1xuLyoqKioqKi8gXHRcdH1cbi8qKioqKiovIFx0XHRcbi8qKioqKiovIFx0XHR2YXIgY2h1bmtMb2FkaW5nR2xvYmFsID0gc2VsZltcIndlYnBhY2tDaHVua19OX0VcIl0gPSBzZWxmW1wid2VicGFja0NodW5rX05fRVwiXSB8fCBbXTtcbi8qKioqKiovIFx0XHRjaHVua0xvYWRpbmdHbG9iYWwuZm9yRWFjaCh3ZWJwYWNrSnNvbnBDYWxsYmFjay5iaW5kKG51bGwsIDApKTtcbi8qKioqKiovIFx0XHRjaHVua0xvYWRpbmdHbG9iYWwucHVzaCA9IHdlYnBhY2tKc29ucENhbGxiYWNrLmJpbmQobnVsbCwgY2h1bmtMb2FkaW5nR2xvYmFsLnB1c2guYmluZChjaHVua0xvYWRpbmdHbG9iYWwpKTtcbi8qKioqKiovIFx0fSkoKTtcbi8qKioqKiovIFx0XG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqKioqKi8gXHRcbi8qKioqKiovIFx0Ly8gbW9kdWxlIGNhY2hlIGFyZSB1c2VkIHNvIGVudHJ5IGlubGluaW5nIGlzIGRpc2FibGVkXG4vKioqKioqLyBcdFxuLyoqKioqKi8gfSkoKVxuIl19 ; \ No newline at end of file diff --git a/frontend/.next/static/webpack/0a62ebb926bbee91.webpack.hot-update.json b/frontend/.next/static/webpack/0a62ebb926bbee91.webpack.hot-update.json new file mode 100644 index 0000000..5c82546 --- /dev/null +++ b/frontend/.next/static/webpack/0a62ebb926bbee91.webpack.hot-update.json @@ -0,0 +1 @@ +{"c":["app/layout","webpack"],"r":[],"m":[]} \ No newline at end of file diff --git a/frontend/.next/static/webpack/2f372f747e2a80a6.webpack.hot-update.json b/frontend/.next/static/webpack/2f372f747e2a80a6.webpack.hot-update.json new file mode 100644 index 0000000..3823c4c --- /dev/null +++ b/frontend/.next/static/webpack/2f372f747e2a80a6.webpack.hot-update.json @@ -0,0 +1 @@ +{"c":["webpack"],"r":[],"m":[]} \ No newline at end of file diff --git a/frontend/.next/static/webpack/58caba527fcdb9f0.webpack.hot-update.json b/frontend/.next/static/webpack/58caba527fcdb9f0.webpack.hot-update.json new file mode 100644 index 0000000..5c82546 --- /dev/null +++ b/frontend/.next/static/webpack/58caba527fcdb9f0.webpack.hot-update.json @@ -0,0 +1 @@ +{"c":["app/layout","webpack"],"r":[],"m":[]} \ No newline at end of file diff --git a/frontend/.next/static/webpack/6847424edef4a857.webpack.hot-update.json b/frontend/.next/static/webpack/6847424edef4a857.webpack.hot-update.json new file mode 100644 index 0000000..186d1dc --- /dev/null +++ b/frontend/.next/static/webpack/6847424edef4a857.webpack.hot-update.json @@ -0,0 +1 @@ +{"c":["app/layout","app/dashboard/page","webpack"],"r":[],"m":[]} \ No newline at end of file diff --git a/frontend/.next/static/webpack/94e69a03f85ff02d.webpack.hot-update.json b/frontend/.next/static/webpack/94e69a03f85ff02d.webpack.hot-update.json new file mode 100644 index 0000000..2a9890d --- /dev/null +++ b/frontend/.next/static/webpack/94e69a03f85ff02d.webpack.hot-update.json @@ -0,0 +1 @@ +{"c":["app/layout","app/flashcards/page","webpack"],"r":[],"m":[]} \ No newline at end of file diff --git a/frontend/.next/static/webpack/94f087c16bddeb84.webpack.hot-update.json b/frontend/.next/static/webpack/94f087c16bddeb84.webpack.hot-update.json new file mode 100644 index 0000000..2a9890d --- /dev/null +++ b/frontend/.next/static/webpack/94f087c16bddeb84.webpack.hot-update.json @@ -0,0 +1 @@ +{"c":["app/layout","app/flashcards/page","webpack"],"r":[],"m":[]} \ No newline at end of file diff --git a/frontend/.next/static/webpack/a80a3c5572c39252.webpack.hot-update.json b/frontend/.next/static/webpack/a80a3c5572c39252.webpack.hot-update.json new file mode 100644 index 0000000..5c82546 --- /dev/null +++ b/frontend/.next/static/webpack/a80a3c5572c39252.webpack.hot-update.json @@ -0,0 +1 @@ +{"c":["app/layout","webpack"],"r":[],"m":[]} \ No newline at end of file diff --git a/frontend/.next/static/webpack/app/dashboard/page.6847424edef4a857.hot-update.js b/frontend/.next/static/webpack/app/dashboard/page.6847424edef4a857.hot-update.js new file mode 100644 index 0000000..f12cf2d --- /dev/null +++ b/frontend/.next/static/webpack/app/dashboard/page.6847424edef4a857.hot-update.js @@ -0,0 +1,32 @@ +"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/dashboard/page",{ + +/***/ "(app-pages-browser)/./app/dashboard/page.tsx": +/*!********************************!*\ + !*** ./app/dashboard/page.tsx ***! + \********************************/ +/***/ ((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 */ \"default\": () => (/* binding */ DashboardPage)\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 next_link__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! next/link */ \"(app-pages-browser)/./node_modules/next/dist/client/app-dir/link.js\");\n/* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(next_link__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _components_ProtectedRoute__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/components/ProtectedRoute */ \"(app-pages-browser)/./components/ProtectedRoute.tsx\");\n/* harmony import */ var _components_Navigation__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/components/Navigation */ \"(app-pages-browser)/./components/Navigation.tsx\");\n/* harmony import */ var _contexts_AuthContext__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/contexts/AuthContext */ \"(app-pages-browser)/./contexts/AuthContext.tsx\");\n/* __next_internal_client_entry_do_not_use__ default auto */ \nvar _s = $RefreshSig$();\n\n\n\n\n\nfunction DashboardContent() {\n _s();\n const [activeTab, setActiveTab] = (0,react__WEBPACK_IMPORTED_MODULE_2__.useState)('overview');\n const { user, logout } = (0,_contexts_AuthContext__WEBPACK_IMPORTED_MODULE_5__.useAuth)();\n // Mock data\n const stats = {\n totalWords: 234,\n wordsToday: 12,\n streak: 7,\n accuracy: 85,\n todayReview: 23,\n completedToday: 15\n };\n const recentWords = [\n {\n id: 1,\n word: 'negotiate',\n translation: '協商',\n status: 'learned'\n },\n {\n id: 2,\n word: 'accomplish',\n translation: '完成',\n status: 'learning'\n },\n {\n id: 3,\n word: 'perspective',\n translation: '觀點',\n status: 'new'\n },\n {\n id: 4,\n word: 'substantial',\n translation: '大量的',\n status: 'learned'\n }\n ];\n const cardSets = [\n {\n id: 1,\n name: '美劇經典台詞',\n count: 45,\n progress: 60\n },\n {\n id: 2,\n name: '商務英文必備',\n count: 30,\n progress: 30\n },\n {\n id: 3,\n name: '日常對話',\n count: 25,\n progress: 80\n }\n ];\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"min-h-screen bg-gray-50\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_Navigation__WEBPACK_IMPORTED_MODULE_4__.Navigation, {}, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 39,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-8\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-white rounded-xl shadow-sm p-6 mb-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h2\", {\n className: \"text-2xl font-bold text-gray-900 mb-2\",\n children: [\n \"歡迎回來,\",\n (user === null || user === void 0 ? void 0 : user.displayName) || (user === null || user === void 0 ? void 0 : user.username),\n \"! \\uD83C\\uDF1F\"\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 45,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-gray-600\",\n children: [\n \"今天有 \",\n stats.todayReview,\n \" 個單字等待複習,繼續加油!\"\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 46,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mt-4 flex gap-3\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_link__WEBPACK_IMPORTED_MODULE_1___default()), {\n href: \"/learn\",\n className: \"bg-primary text-white px-6 py-2 rounded-lg font-medium hover:bg-primary-hover transition-colors\",\n children: \"開始今日學習\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 48,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_link__WEBPACK_IMPORTED_MODULE_1___default()), {\n href: \"/generate\",\n className: \"border border-primary text-primary px-6 py-2 rounded-lg font-medium hover:bg-primary-light transition-colors\",\n children: \"AI 生成新詞卡\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 54,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 47,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 44,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-4 mb-8\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-white rounded-xl shadow-sm p-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center justify-between mb-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-gray-600 text-sm\",\n children: \"總學習單字\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 67,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n className: \"w-5 h-5 text-blue-500\",\n fill: \"none\",\n stroke: \"currentColor\",\n viewBox: \"0 0 24 24\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n d: \"M12 6.253v13m0-13C10.832 5.477 9.246 5 7.5 5S4.168 5.477 3 6.253v13C4.168 18.477 5.754 18 7.5 18s3.332.477 4.5 1.253m0-13C13.168 5.477 14.754 5 16.5 5c1.747 0 3.332.477 4.5 1.253v13C19.832 18.477 18.247 18 16.5 18c-1.746 0-3.332.477-4.5 1.253\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 69,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 68,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 66,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-3xl font-bold text-gray-900\",\n children: stats.totalWords\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 72,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm text-green-600 mt-1\",\n children: [\n \"+\",\n stats.wordsToday,\n \" 今日\"\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 73,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 65,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-white rounded-xl shadow-sm p-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center justify-between mb-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-gray-600 text-sm\",\n children: \"連續學習\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 78,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n className: \"w-5 h-5 text-orange-500\",\n fill: \"none\",\n stroke: \"currentColor\",\n viewBox: \"0 0 24 24\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n d: \"M17.657 18.657A8 8 0 016.343 7.343S7 9 9 10c0-2 .5-5 2.986-7C14 5 16.09 5.777 17.656 7.343A7.975 7.975 0 0120 13a7.975 7.975 0 01-2.343 5.657z\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 80,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 79,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 77,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-3xl font-bold text-gray-900\",\n children: [\n stats.streak,\n \" 天\"\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 83,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm text-orange-600 mt-1\",\n children: \"\\uD83D\\uDD25 保持良好!\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 84,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 76,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-white rounded-xl shadow-sm p-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center justify-between mb-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-gray-600 text-sm\",\n children: \"正確率\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 89,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n className: \"w-5 h-5 text-green-500\",\n fill: \"none\",\n stroke: \"currentColor\",\n viewBox: \"0 0 24 24\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n d: \"M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 91,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 90,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 88,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-3xl font-bold text-gray-900\",\n children: [\n stats.accuracy,\n \"%\"\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 94,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm text-gray-600 mt-1\",\n children: \"上周 82%\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 95,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 87,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-white rounded-xl shadow-sm p-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center justify-between mb-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-gray-600 text-sm\",\n children: \"今日進度\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 100,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n className: \"w-5 h-5 text-purple-500\",\n fill: \"none\",\n stroke: \"currentColor\",\n viewBox: \"0 0 24 24\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n d: \"M13 7h8m0 0v8m0-8l-8 8-4-4-6 6\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 102,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 101,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 99,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-3xl font-bold text-gray-900\",\n children: [\n stats.completedToday,\n \"/\",\n stats.todayReview\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 105,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full bg-gray-200 rounded-full h-2 mt-2\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-purple-500 h-2 rounded-full\",\n style: {\n width: \"\".concat(stats.completedToday / stats.todayReview * 100, \"%\")\n }\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 107,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 106,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 98,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 64,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-white rounded-xl shadow-sm\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"border-b border-gray-200\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"nav\", {\n className: \"-mb-px flex space-x-8 px-6\",\n \"aria-label\": \"Tabs\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>setActiveTab('overview'),\n className: \"py-4 px-1 border-b-2 font-medium text-sm \".concat(activeTab === 'overview' ? 'border-primary text-primary' : 'border-transparent text-gray-500 hover:text-gray-700 hover:border-gray-300'),\n children: \"最近學習\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 119,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>setActiveTab('sets'),\n className: \"py-4 px-1 border-b-2 font-medium text-sm \".concat(activeTab === 'sets' ? 'border-primary text-primary' : 'border-transparent text-gray-500 hover:text-gray-700 hover:border-gray-300'),\n children: \"我的卡組\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 129,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>setActiveTab('progress'),\n className: \"py-4 px-1 border-b-2 font-medium text-sm \".concat(activeTab === 'progress' ? 'border-primary text-primary' : 'border-transparent text-gray-500 hover:text-gray-700 hover:border-gray-300'),\n children: \"學習統計\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 139,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 118,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 117,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"p-6\",\n children: [\n activeTab === 'overview' && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h3\", {\n className: \"text-lg font-semibold mb-4\",\n children: \"最近學習的單字\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 155,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-y-3\",\n children: recentWords.map((word)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center justify-between p-4 border rounded-lg hover:bg-gray-50\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center space-x-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-2 h-2 rounded-full bg-green-500\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 160,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"font-semibold\",\n children: word.word\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 162,\n columnNumber: 27\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm text-gray-600\",\n children: word.translation\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 163,\n columnNumber: 27\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 161,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 159,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"px-3 py-1 rounded-full text-xs font-medium \".concat(word.status === 'learned' ? 'bg-green-100 text-green-800' : word.status === 'learning' ? 'bg-yellow-100 text-yellow-800' : 'bg-gray-100 text-gray-800'),\n children: word.status === 'learned' ? '已掌握' : word.status === 'learning' ? '學習中' : '新詞'\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 166,\n columnNumber: 23\n }, this)\n ]\n }, word.id, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 158,\n columnNumber: 21\n }, this))\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 156,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 154,\n columnNumber: 15\n }, this),\n activeTab === 'sets' && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h3\", {\n className: \"text-lg font-semibold mb-4\",\n children: \"我的卡組\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 182,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4\",\n children: cardSets.map((set)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"border rounded-lg p-4 hover:shadow-md transition-shadow\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h4\", {\n className: \"font-semibold mb-2\",\n children: set.name\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 186,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-sm text-gray-600 mb-3\",\n children: [\n set.count,\n \" 個單字\"\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 187,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full bg-gray-200 rounded-full h-2 mb-3\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-primary h-2 rounded-full\",\n style: {\n width: \"\".concat(set.progress, \"%\")\n }\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 189,\n columnNumber: 25\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 188,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_link__WEBPACK_IMPORTED_MODULE_1___default()), {\n href: \"/flashcards/\".concat(set.id),\n className: \"text-primary text-sm font-medium hover:text-primary-hover\",\n children: \"繼續學習 →\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 194,\n columnNumber: 23\n }, this)\n ]\n }, set.id, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 185,\n columnNumber: 21\n }, this))\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 183,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 181,\n columnNumber: 15\n }, this),\n activeTab === 'progress' && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h3\", {\n className: \"text-lg font-semibold mb-4\",\n children: \"學習統計\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 208,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-gray-50 rounded-lg p-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid grid-cols-2 md:grid-cols-4 gap-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm text-gray-600\",\n children: \"本周學習\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 212,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-2xl font-bold mt-1\",\n children: \"89 個\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 213,\n columnNumber: 23\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 211,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm text-gray-600\",\n children: \"本月學習\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 216,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-2xl font-bold mt-1\",\n children: \"312 個\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 217,\n columnNumber: 23\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 215,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm text-gray-600\",\n children: \"平均每日\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 220,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-2xl font-bold mt-1\",\n children: \"15 個\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 221,\n columnNumber: 23\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 219,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm text-gray-600\",\n children: \"最佳紀錄\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 224,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-2xl font-bold mt-1\",\n children: \"32 個\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 225,\n columnNumber: 23\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 223,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 210,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mt-6 pt-6 border-t\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm text-gray-600 mb-2\",\n children: \"每日學習趨勢(過去7天)\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 229,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-end space-x-2 h-20\",\n children: [\n 15,\n 20,\n 18,\n 25,\n 22,\n 30,\n 12\n ].map((value, index)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-primary rounded-t\",\n style: {\n height: \"\".concat(value / 30 * 100, \"%\")\n }\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 233,\n columnNumber: 27\n }, this)\n }, index, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 232,\n columnNumber: 25\n }, this))\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 230,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 228,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 209,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 207,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 152,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 116,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 42,\n columnNumber: 7\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 37,\n columnNumber: 5\n }, this);\n}\n_s(DashboardContent, \"3rpTT6MMy25vhIvfdWVywn2iwf0=\", false, function() {\n return [\n _contexts_AuthContext__WEBPACK_IMPORTED_MODULE_5__.useAuth\n ];\n});\n_c = DashboardContent;\nfunction DashboardPage() {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ProtectedRoute__WEBPACK_IMPORTED_MODULE_3__.ProtectedRoute, {\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(DashboardContent, {}, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 254,\n columnNumber: 7\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 253,\n columnNumber: 5\n }, this);\n}\n_c1 = DashboardPage;\nvar _c, _c1;\n$RefreshReg$(_c, \"DashboardContent\");\n$RefreshReg$(_c1, \"DashboardPage\");\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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL2FwcC9kYXNoYm9hcmQvcGFnZS50c3giLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUFFNEI7QUFDSTtBQUM0QjtBQUNSO0FBQ0o7QUFFaEQsU0FBU0s7O0lBQ1AsTUFBTSxDQUFDQyxXQUFXQyxhQUFhLEdBQUdOLCtDQUFRQSxDQUFDO0lBQzNDLE1BQU0sRUFBRU8sSUFBSSxFQUFFQyxNQUFNLEVBQUUsR0FBR0wsOERBQU9BO0lBRWhDLFlBQVk7SUFDWixNQUFNTSxRQUFRO1FBQ1pDLFlBQVk7UUFDWkMsWUFBWTtRQUNaQyxRQUFRO1FBQ1JDLFVBQVU7UUFDVkMsYUFBYTtRQUNiQyxnQkFBZ0I7SUFDbEI7SUFFQSxNQUFNQyxjQUFjO1FBQ2xCO1lBQUVDLElBQUk7WUFBR0MsTUFBTTtZQUFhQyxhQUFhO1lBQU1DLFFBQVE7UUFBVTtRQUNqRTtZQUFFSCxJQUFJO1lBQUdDLE1BQU07WUFBY0MsYUFBYTtZQUFNQyxRQUFRO1FBQVc7UUFDbkU7WUFBRUgsSUFBSTtZQUFHQyxNQUFNO1lBQWVDLGFBQWE7WUFBTUMsUUFBUTtRQUFNO1FBQy9EO1lBQUVILElBQUk7WUFBR0MsTUFBTTtZQUFlQyxhQUFhO1lBQU9DLFFBQVE7UUFBVTtLQUNyRTtJQUVELE1BQU1DLFdBQVc7UUFDZjtZQUFFSixJQUFJO1lBQUdLLE1BQU07WUFBVUMsT0FBTztZQUFJQyxVQUFVO1FBQUc7UUFDakQ7WUFBRVAsSUFBSTtZQUFHSyxNQUFNO1lBQVVDLE9BQU87WUFBSUMsVUFBVTtRQUFHO1FBQ2pEO1lBQUVQLElBQUk7WUFBR0ssTUFBTTtZQUFRQyxPQUFPO1lBQUlDLFVBQVU7UUFBRztLQUNoRDtJQUVELHFCQUNFLDhEQUFDQztRQUFJQyxXQUFVOzswQkFFYiw4REFBQ3hCLDhEQUFVQTs7Ozs7MEJBR1gsOERBQUN1QjtnQkFBSUMsV0FBVTs7a0NBRWIsOERBQUNEO3dCQUFJQyxXQUFVOzswQ0FDYiw4REFBQ0M7Z0NBQUdELFdBQVU7O29DQUF3Qztv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REFBQ0E7d0VBQUlDLFdBQVU7a0ZBQXdCOzs7Ozs7a0ZBQ3ZDLDhEQUFDRDt3RUFBSUMsV0FBVTtrRkFBMEI7Ozs7Ozs7Ozs7OzswRUFFM0MsOERBQUNEOztrRkFDQyw4REFBQ0E7d0VBQUlDLFdBQVU7a0ZBQXdCOzs7Ozs7a0ZBQ3ZDLDhEQUFDRDt3RUFBSUMsV0FBVTtrRkFBMEI7Ozs7Ozs7Ozs7Ozs7Ozs7OztrRUFHN0MsOERBQUNEO3dEQUFJQyxXQUFVOzswRUFDYiw4REFBQ0Q7Z0VBQUlDLFdBQVU7MEVBQTZCOzs7Ozs7MEVBQzVDLDhEQUFDRDtnRUFBSUMsV0FBVTswRUFDWjtvRUFBQztvRUFBSTtvRUFBSTtvRUFBSTtvRUFBSTtvRUFBSTtvRUFBSTtpRUFBRyxDQUFDdUIsR0FBRyxDQUFDLENBQUNHLE9BQU9DLHNCQUN4Qyw4REFBQzVCO3dFQUFnQkMsV0FBVTtrRkFDekIsNEVBQUNEOzRFQUNDQyxXQUFVOzRFQUNWZ0IsT0FBTztnRkFBRVksUUFBUSxHQUFzQixPQUFuQixRQUFTLEtBQU0sS0FBSTs0RUFBRzs7Ozs7O3VFQUhwQ0Q7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFpQmxDO0dBaFBTakQ7O1FBRWtCRCwwREFBT0E7OztLQUZ6QkM7QUFrUE0sU0FBU21EO0lBQ3RCLHFCQUNFLDhEQUFDdEQsc0VBQWNBO2tCQUNiLDRFQUFDRzs7Ozs7Ozs7OztBQUdQO01BTndCbUQiLCJzb3VyY2VzIjpbIi9Vc2Vycy9qZXR0Y2hlbmcxMDE4L2NvZGUvZHJhbWFsaW5nLXZvY2FiLWxlYXJuaW5nL2Zyb250ZW5kL2FwcC9kYXNoYm9hcmQvcGFnZS50c3giXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBjbGllbnQnXG5cbmltcG9ydCBMaW5rIGZyb20gJ25leHQvbGluaydcbmltcG9ydCB7IHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBQcm90ZWN0ZWRSb3V0ZSB9IGZyb20gJ0AvY29tcG9uZW50cy9Qcm90ZWN0ZWRSb3V0ZSdcbmltcG9ydCB7IE5hdmlnYXRpb24gfSBmcm9tICdAL2NvbXBvbmVudHMvTmF2aWdhdGlvbidcbmltcG9ydCB7IHVzZUF1dGggfSBmcm9tICdAL2NvbnRleHRzL0F1dGhDb250ZXh0J1xuXG5mdW5jdGlvbiBEYXNoYm9hcmRDb250ZW50KCkge1xuICBjb25zdCBbYWN0aXZlVGFiLCBzZXRBY3RpdmVUYWJdID0gdXNlU3RhdGUoJ292ZXJ2aWV3JylcbiAgY29uc3QgeyB1c2VyLCBsb2dvdXQgfSA9IHVzZUF1dGgoKVxuXG4gIC8vIE1vY2sgZGF0YVxuICBjb25zdCBzdGF0cyA9IHtcbiAgICB0b3RhbFdvcmRzOiAyMzQsXG4gICAgd29yZHNUb2RheTogMTIsXG4gICAgc3RyZWFrOiA3LFxuICAgIGFjY3VyYWN5OiA4NSxcbiAgICB0b2RheVJldmlldzogMjMsXG4gICAgY29tcGxldGVkVG9kYXk6IDE1XG4gIH1cblxuICBjb25zdCByZWNlbnRXb3JkcyA9IFtcbiAgICB7IGlkOiAxLCB3b3JkOiAnbmVnb3RpYXRlJywgdHJhbnNsYXRpb246ICfljZTllYYnLCBzdGF0dXM6ICdsZWFybmVkJyB9LFxuICAgIHsgaWQ6IDIsIHdvcmQ6ICdhY2NvbXBsaXNoJywgdHJhbnNsYXRpb246ICflrozmiJAnLCBzdGF0dXM6ICdsZWFybmluZycgfSxcbiAgICB7IGlkOiAzLCB3b3JkOiAncGVyc3BlY3RpdmUnLCB0cmFuc2xhdGlvbjogJ+ingOm7nicsIHN0YXR1czogJ25ldycgfSxcbiAgICB7IGlkOiA0LCB3b3JkOiAnc3Vic3RhbnRpYWwnLCB0cmFuc2xhdGlvbjogJ+Wkp+mHj+eahCcsIHN0YXR1czogJ2xlYXJuZWQnIH0sXG4gIF1cblxuICBjb25zdCBjYXJkU2V0cyA9IFtcbiAgICB7IGlkOiAxLCBuYW1lOiAn576O5YqH57aT5YW45Y+w6KmeJywgY291bnQ6IDQ1LCBwcm9ncmVzczogNjAgfSxcbiAgICB7IGlkOiAyLCBuYW1lOiAn5ZWG5YuZ6Iux5paH5b+F5YKZJywgY291bnQ6IDMwLCBwcm9ncmVzczogMzAgfSxcbiAgICB7IGlkOiAzLCBuYW1lOiAn5pel5bi45bCN6KmxJywgY291bnQ6IDI1LCBwcm9ncmVzczogODAgfSxcbiAgXVxuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJtaW4taC1zY3JlZW4gYmctZ3JheS01MFwiPlxuICAgICAgey8qIE5hdmlnYXRpb24gKi99XG4gICAgICA8TmF2aWdhdGlvbiAvPlxuXG4gICAgICB7LyogTWFpbiBDb250ZW50ICovfVxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJtYXgtdy03eGwgbXgtYXV0byBweC00IHNtOnB4LTYgbGc6cHgtOCBweS04XCI+XG4gICAgICAgIHsvKiBXZWxjb21lIFNlY3Rpb24gKi99XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmctd2hpdGUgcm91bmRlZC14bCBzaGFkb3ctc20gcC02IG1iLTZcIj5cbiAgICAgICAgICA8aDIgY2xhc3NOYW1lPVwidGV4dC0yeGwgZm9udC1ib2xkIHRleHQtZ3JheS05MDAgbWItMlwiPuatoei/juWbnuS+hu+8jHt1c2VyPy5kaXNwbGF5TmFtZSB8fCB1c2VyPy51c2VybmFtZX0hIPCfjJ88L2gyPlxuICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQtZ3JheS02MDBcIj7ku4rlpKnmnIkge3N0YXRzLnRvZGF5UmV2aWV3fSDlgIvllq7lrZfnrYnlvoXopIfnv5LvvIznubznuozliqDmsrnvvIE8L3A+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtdC00IGZsZXggZ2FwLTNcIj5cbiAgICAgICAgICAgIDxMaW5rXG4gICAgICAgICAgICAgIGhyZWY9XCIvbGVhcm5cIlxuICAgICAgICAgICAgICBjbGFzc05hbWU9XCJiZy1wcmltYXJ5IHRleHQtd2hpdGUgcHgtNiBweS0yIHJvdW5kZWQtbGcgZm9udC1tZWRpdW0gaG92ZXI6YmctcHJpbWFyeS1ob3ZlciB0cmFuc2l0aW9uLWNvbG9yc1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIOmWi+Wni+S7iuaXpeWtuOe/klxuICAgICAgICAgICAgPC9MaW5rPlxuICAgICAgICAgICAgPExpbmtcbiAgICAgICAgICAgICAgaHJlZj1cIi9nZW5lcmF0ZVwiXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT1cImJvcmRlciBib3JkZXItcHJpbWFyeSB0ZXh0LXByaW1hcnkgcHgtNiBweS0yIHJvdW5kZWQtbGcgZm9udC1tZWRpdW0gaG92ZXI6YmctcHJpbWFyeS1saWdodCB0cmFuc2l0aW9uLWNvbG9yc1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIEFJIOeUn+aIkOaWsOipnuWNoVxuICAgICAgICAgICAgPC9MaW5rPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICB7LyogU3RhdHMgR3JpZCAqL31cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJncmlkIGdyaWQtY29scy0xIG1kOmdyaWQtY29scy0yIGxnOmdyaWQtY29scy00IGdhcC00IG1iLThcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJnLXdoaXRlIHJvdW5kZWQteGwgc2hhZG93LXNtIHAtNlwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gbWItMlwiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LWdyYXktNjAwIHRleHQtc21cIj7nuL3lrbjnv5Lllq7lrZc8L3NwYW4+XG4gICAgICAgICAgICAgIDxzdmcgY2xhc3NOYW1lPVwidy01IGgtNSB0ZXh0LWJsdWUtNTAwXCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCI+XG4gICAgICAgICAgICAgICAgPHBhdGggc3Ryb2tlTGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlTGluZWpvaW49XCJyb3VuZFwiIHN0cm9rZVdpZHRoPXsyfSBkPVwiTTEyIDYuMjUzdjEzbTAtMTNDMTAuODMyIDUuNDc3IDkuMjQ2IDUgNy41IDVTNC4xNjggNS40NzcgMyA2LjI1M3YxM0M0LjE2OCAxOC40NzcgNS43NTQgMTggNy41IDE4czMuMzMyLjQ3NyA0LjUgMS4yNTNtMC0xM0MxMy4xNjggNS40NzcgMTQuNzU0IDUgMTYuNSA1YzEuNzQ3IDAgMy4zMzIuNDc3IDQuNSAxLjI1M3YxM0MxOS44MzIgMTguNDc3IDE4LjI0NyAxOCAxNi41IDE4Yy0xLjc0NiAwLTMuMzMyLjQ3Ny00LjUgMS4yNTNcIiAvPlxuICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LTN4bCBmb250LWJvbGQgdGV4dC1ncmF5LTkwMFwiPntzdGF0cy50b3RhbFdvcmRzfTwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LXNtIHRleHQtZ3JlZW4tNjAwIG10LTFcIj4re3N0YXRzLndvcmRzVG9kYXl9IOS7iuaXpTwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJiZy13aGl0ZSByb3VuZGVkLXhsIHNoYWRvdy1zbSBwLTZcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIG1iLTJcIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC1ncmF5LTYwMCB0ZXh0LXNtXCI+6YCj57qM5a2457+SPC9zcGFuPlxuICAgICAgICAgICAgICA8c3ZnIGNsYXNzTmFtZT1cInctNSBoLTUgdGV4dC1vcmFuZ2UtNTAwXCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCI+XG4gICAgICAgICAgICAgICAgPHBhdGggc3Ryb2tlTGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlTGluZWpvaW49XCJyb3VuZFwiIHN0cm9rZVdpZHRoPXsyfSBkPVwiTTE3LjY1NyAxOC42NTdBOCA4IDAgMDE2LjM0MyA3LjM0M1M3IDkgOSAxMGMwLTIgLjUtNSAyLjk4Ni03QzE0IDUgMTYuMDkgNS43NzcgMTcuNjU2IDcuMzQzQTcuOTc1IDcuOTc1IDAgMDEyMCAxM2E3Ljk3NSA3Ljk3NSAwIDAxLTIuMzQzIDUuNjU3elwiIC8+XG4gICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtM3hsIGZvbnQtYm9sZCB0ZXh0LWdyYXktOTAwXCI+e3N0YXRzLnN0cmVha30g5aSpPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtc20gdGV4dC1vcmFuZ2UtNjAwIG10LTFcIj7wn5SlIOS/neaMgeiJr+Wlve+8gTwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJiZy13aGl0ZSByb3VuZGVkLXhsIHNoYWRvdy1zbSBwLTZcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIG1iLTJcIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC1ncmF5LTYwMCB0ZXh0LXNtXCI+5q2j56K6546HPC9zcGFuPlxuICAgICAgICAgICAgICA8c3ZnIGNsYXNzTmFtZT1cInctNSBoLTUgdGV4dC1ncmVlbi01MDBcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIj5cbiAgICAgICAgICAgICAgICA8cGF0aCBzdHJva2VMaW5lY2FwPVwicm91bmRcIiBzdHJva2VMaW5lam9pbj1cInJvdW5kXCIgc3Ryb2tlV2lkdGg9ezJ9IGQ9XCJNOSAxMmwyIDIgNC00bTYgMmE5IDkgMCAxMS0xOCAwIDkgOSAwIDAxMTggMHpcIiAvPlxuICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LTN4bCBmb250LWJvbGQgdGV4dC1ncmF5LTkwMFwiPntzdGF0cy5hY2N1cmFjeX0lPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtc20gdGV4dC1ncmF5LTYwMCBtdC0xXCI+5LiK5ZGoIDgyJTwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJiZy13aGl0ZSByb3VuZGVkLXhsIHNoYWRvdy1zbSBwLTZcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIG1iLTJcIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC1ncmF5LTYwMCB0ZXh0LXNtXCI+5LuK5pel6YCy5bqmPC9zcGFuPlxuICAgICAgICAgICAgICA8c3ZnIGNsYXNzTmFtZT1cInctNSBoLTUgdGV4dC1wdXJwbGUtNTAwXCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCI+XG4gICAgICAgICAgICAgICAgPHBhdGggc3Ryb2tlTGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlTGluZWpvaW49XCJyb3VuZFwiIHN0cm9rZVdpZHRoPXsyfSBkPVwiTTEzIDdoOG0wIDB2OG0wLThsLTggOC00LTQtNiA2XCIgLz5cbiAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC0zeGwgZm9udC1ib2xkIHRleHQtZ3JheS05MDBcIj57c3RhdHMuY29tcGxldGVkVG9kYXl9L3tzdGF0cy50b2RheVJldmlld308L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy1mdWxsIGJnLWdyYXktMjAwIHJvdW5kZWQtZnVsbCBoLTIgbXQtMlwiPlxuICAgICAgICAgICAgICA8ZGl2IFxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImJnLXB1cnBsZS01MDAgaC0yIHJvdW5kZWQtZnVsbFwiXG4gICAgICAgICAgICAgICAgc3R5bGU9e3sgd2lkdGg6IGAkeyhzdGF0cy5jb21wbGV0ZWRUb2RheSAvIHN0YXRzLnRvZGF5UmV2aWV3KSAqIDEwMH0lYCB9fVxuICAgICAgICAgICAgICA+PC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgey8qIENvbnRlbnQgVGFicyAqL31cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJiZy13aGl0ZSByb3VuZGVkLXhsIHNoYWRvdy1zbVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYm9yZGVyLWIgYm9yZGVyLWdyYXktMjAwXCI+XG4gICAgICAgICAgICA8bmF2IGNsYXNzTmFtZT1cIi1tYi1weCBmbGV4IHNwYWNlLXgtOCBweC02XCIgYXJpYS1sYWJlbD1cIlRhYnNcIj5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldEFjdGl2ZVRhYignb3ZlcnZpZXcnKX1cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2BweS00IHB4LTEgYm9yZGVyLWItMiBmb250LW1lZGl1bSB0ZXh0LXNtICR7XG4gICAgICAgICAgICAgICAgICBhY3RpdmVUYWIgPT09ICdvdmVydmlldydcbiAgICAgICAgICAgICAgICAgICAgPyAnYm9yZGVyLXByaW1hcnkgdGV4dC1wcmltYXJ5J1xuICAgICAgICAgICAgICAgICAgICA6ICdib3JkZXItdHJhbnNwYXJlbnQgdGV4dC1ncmF5LTUwMCBob3Zlcjp0ZXh0LWdyYXktNzAwIGhvdmVyOmJvcmRlci1ncmF5LTMwMCdcbiAgICAgICAgICAgICAgICB9YH1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIOacgOi/keWtuOe/klxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldEFjdGl2ZVRhYignc2V0cycpfVxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17YHB5LTQgcHgtMSBib3JkZXItYi0yIGZvbnQtbWVkaXVtIHRleHQtc20gJHtcbiAgICAgICAgICAgICAgICAgIGFjdGl2ZVRhYiA9PT0gJ3NldHMnXG4gICAgICAgICAgICAgICAgICAgID8gJ2JvcmRlci1wcmltYXJ5IHRleHQtcHJpbWFyeSdcbiAgICAgICAgICAgICAgICAgICAgOiAnYm9yZGVyLXRyYW5zcGFyZW50IHRleHQtZ3JheS01MDAgaG92ZXI6dGV4dC1ncmF5LTcwMCBob3Zlcjpib3JkZXItZ3JheS0zMDAnXG4gICAgICAgICAgICAgICAgfWB9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICDmiJHnmoTljaHntYRcbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRBY3RpdmVUYWIoJ3Byb2dyZXNzJyl9XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgcHktNCBweC0xIGJvcmRlci1iLTIgZm9udC1tZWRpdW0gdGV4dC1zbSAke1xuICAgICAgICAgICAgICAgICAgYWN0aXZlVGFiID09PSAncHJvZ3Jlc3MnXG4gICAgICAgICAgICAgICAgICAgID8gJ2JvcmRlci1wcmltYXJ5IHRleHQtcHJpbWFyeSdcbiAgICAgICAgICAgICAgICAgICAgOiAnYm9yZGVyLXRyYW5zcGFyZW50IHRleHQtZ3JheS01MDAgaG92ZXI6dGV4dC1ncmF5LTcwMCBob3Zlcjpib3JkZXItZ3JheS0zMDAnXG4gICAgICAgICAgICAgICAgfWB9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICDlrbjnv5LntbHoqIhcbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L25hdj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicC02XCI+XG4gICAgICAgICAgICB7YWN0aXZlVGFiID09PSAnb3ZlcnZpZXcnICYmIChcbiAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8aDMgY2xhc3NOYW1lPVwidGV4dC1sZyBmb250LXNlbWlib2xkIG1iLTRcIj7mnIDov5Hlrbjnv5LnmoTllq7lrZc8L2gzPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwic3BhY2UteS0zXCI+XG4gICAgICAgICAgICAgICAgICB7cmVjZW50V29yZHMubWFwKHdvcmQgPT4gKFxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGtleT17d29yZC5pZH0gY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIHAtNCBib3JkZXIgcm91bmRlZC1sZyBob3ZlcjpiZy1ncmF5LTUwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBzcGFjZS14LTRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy0yIGgtMiByb3VuZGVkLWZ1bGwgYmctZ3JlZW4tNTAwXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZvbnQtc2VtaWJvbGRcIj57d29yZC53b3JkfTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtc20gdGV4dC1ncmF5LTYwMFwiPnt3b3JkLnRyYW5zbGF0aW9ufTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtgcHgtMyBweS0xIHJvdW5kZWQtZnVsbCB0ZXh0LXhzIGZvbnQtbWVkaXVtICR7XG4gICAgICAgICAgICAgICAgICAgICAgICB3b3JkLnN0YXR1cyA9PT0gJ2xlYXJuZWQnID8gJ2JnLWdyZWVuLTEwMCB0ZXh0LWdyZWVuLTgwMCcgOlxuICAgICAgICAgICAgICAgICAgICAgICAgd29yZC5zdGF0dXMgPT09ICdsZWFybmluZycgPyAnYmcteWVsbG93LTEwMCB0ZXh0LXllbGxvdy04MDAnIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICdiZy1ncmF5LTEwMCB0ZXh0LWdyYXktODAwJ1xuICAgICAgICAgICAgICAgICAgICAgIH1gfT5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt3b3JkLnN0YXR1cyA9PT0gJ2xlYXJuZWQnID8gJ+W3suaOjOaPoScgOiBcbiAgICAgICAgICAgICAgICAgICAgICAgICB3b3JkLnN0YXR1cyA9PT0gJ2xlYXJuaW5nJyA/ICflrbjnv5LkuK0nIDogJ+aWsOipnid9XG4gICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgIHthY3RpdmVUYWIgPT09ICdzZXRzJyAmJiAoXG4gICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgPGgzIGNsYXNzTmFtZT1cInRleHQtbGcgZm9udC1zZW1pYm9sZCBtYi00XCI+5oiR55qE5Y2h57WEPC9oMz5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImdyaWQgZ3JpZC1jb2xzLTEgbWQ6Z3JpZC1jb2xzLTIgbGc6Z3JpZC1jb2xzLTMgZ2FwLTRcIj5cbiAgICAgICAgICAgICAgICAgIHtjYXJkU2V0cy5tYXAoc2V0ID0+IChcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBrZXk9e3NldC5pZH0gY2xhc3NOYW1lPVwiYm9yZGVyIHJvdW5kZWQtbGcgcC00IGhvdmVyOnNoYWRvdy1tZCB0cmFuc2l0aW9uLXNoYWRvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgIDxoNCBjbGFzc05hbWU9XCJmb250LXNlbWlib2xkIG1iLTJcIj57c2V0Lm5hbWV9PC9oND5cbiAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJ0ZXh0LXNtIHRleHQtZ3JheS02MDAgbWItM1wiPntzZXQuY291bnR9IOWAi+WWruWtlzwvcD5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctZnVsbCBiZy1ncmF5LTIwMCByb3VuZGVkLWZ1bGwgaC0yIG1iLTNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImJnLXByaW1hcnkgaC0yIHJvdW5kZWQtZnVsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7IHdpZHRoOiBgJHtzZXQucHJvZ3Jlc3N9JWAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8TGlua1xuICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj17YC9mbGFzaGNhcmRzLyR7c2V0LmlkfWB9XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ0ZXh0LXByaW1hcnkgdGV4dC1zbSBmb250LW1lZGl1bSBob3Zlcjp0ZXh0LXByaW1hcnktaG92ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIOe5vOe6jOWtuOe/kiDihpJcbiAgICAgICAgICAgICAgICAgICAgICA8L0xpbms+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAge2FjdGl2ZVRhYiA9PT0gJ3Byb2dyZXNzJyAmJiAoXG4gICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgPGgzIGNsYXNzTmFtZT1cInRleHQtbGcgZm9udC1zZW1pYm9sZCBtYi00XCI+5a2457+S57Wx6KiIPC9oMz5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJnLWdyYXktNTAgcm91bmRlZC1sZyBwLTZcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZ3JpZCBncmlkLWNvbHMtMiBtZDpncmlkLWNvbHMtNCBnYXAtNlwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1zbSB0ZXh0LWdyYXktNjAwXCI+5pys5ZGo5a2457+SPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LTJ4bCBmb250LWJvbGQgbXQtMVwiPjg5IOWAizwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtc20gdGV4dC1ncmF5LTYwMFwiPuacrOaciOWtuOe/kjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC0yeGwgZm9udC1ib2xkIG10LTFcIj4zMTIg5YCLPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1zbSB0ZXh0LWdyYXktNjAwXCI+5bmz5Z2H5q+P5pelPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LTJ4bCBmb250LWJvbGQgbXQtMVwiPjE1IOWAizwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtc20gdGV4dC1ncmF5LTYwMFwiPuacgOS9s+e0gOmMhDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC0yeGwgZm9udC1ib2xkIG10LTFcIj4zMiDlgIs8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibXQtNiBwdC02IGJvcmRlci10XCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1zbSB0ZXh0LWdyYXktNjAwIG1iLTJcIj7mr4/ml6Xlrbjnv5Lotqjli6LvvIjpgY7ljrs35aSp77yJPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1lbmQgc3BhY2UteC0yIGgtMjBcIj5cbiAgICAgICAgICAgICAgICAgICAgICB7WzE1LCAyMCwgMTgsIDI1LCAyMiwgMzAsIDEyXS5tYXAoKHZhbHVlLCBpbmRleCkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBrZXk9e2luZGV4fSBjbGFzc05hbWU9XCJmbGV4LTFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJiZy1wcmltYXJ5IHJvdW5kZWQtdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3sgaGVpZ2h0OiBgJHsodmFsdWUgLyAzMCkgKiAxMDB9JWAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgKVxufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBEYXNoYm9hcmRQYWdlKCkge1xuICByZXR1cm4gKFxuICAgIDxQcm90ZWN0ZWRSb3V0ZT5cbiAgICAgIDxEYXNoYm9hcmRDb250ZW50IC8+XG4gICAgPC9Qcm90ZWN0ZWRSb3V0ZT5cbiAgKVxufSJdLCJuYW1lcyI6WyJMaW5rIiwidXNlU3RhdGUiLCJQcm90ZWN0ZWRSb3V0ZSIsIk5hdmlnYXRpb24iLCJ1c2VBdXRoIiwiRGFzaGJvYXJkQ29udGVudCIsImFjdGl2ZVRhYiIsInNldEFjdGl2ZVRhYiIsInVzZXIiLCJsb2dvdXQiLCJzdGF0cyIsInRvdGFsV29yZHMiLCJ3b3Jkc1RvZGF5Iiwic3RyZWFrIiwiYWNjdXJhY3kiLCJ0b2RheVJldmlldyIsImNvbXBsZXRlZFRvZGF5IiwicmVjZW50V29yZHMiLCJpZCIsIndvcmQiLCJ0cmFuc2xhdGlvbiIsInN0YXR1cyIsImNhcmRTZXRzIiwibmFtZSIsImNvdW50IiwicHJvZ3Jlc3MiLCJkaXYiLCJjbGFzc05hbWUiLCJoMiIsImRpc3BsYXlOYW1lIiwidXNlcm5hbWUiLCJwIiwiaHJlZiIsInNwYW4iLCJzdmciLCJmaWxsIiwic3Ryb2tlIiwidmlld0JveCIsInBhdGgiLCJzdHJva2VMaW5lY2FwIiwic3Ryb2tlTGluZWpvaW4iLCJzdHJva2VXaWR0aCIsImQiLCJzdHlsZSIsIndpZHRoIiwibmF2IiwiYXJpYS1sYWJlbCIsImJ1dHRvbiIsIm9uQ2xpY2siLCJoMyIsIm1hcCIsInNldCIsImg0IiwidmFsdWUiLCJpbmRleCIsImhlaWdodCIsIkRhc2hib2FyZFBhZ2UiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./app/dashboard/page.tsx\n")); + +/***/ }), + +/***/ "(app-pages-browser)/./components/Navigation.tsx": +/*!***********************************!*\ + !*** ./components/Navigation.tsx ***! + \***********************************/ +/***/ ((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 */ Navigation: () => (/* binding */ Navigation)\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 next_link__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! next/link */ \"(app-pages-browser)/./node_modules/next/dist/client/app-dir/link.js\");\n/* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(next_link__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var next_navigation__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! next/navigation */ \"(app-pages-browser)/./node_modules/next/dist/api/navigation.js\");\n/* harmony import */ var _contexts_AuthContext__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/contexts/AuthContext */ \"(app-pages-browser)/./contexts/AuthContext.tsx\");\n/* __next_internal_client_entry_do_not_use__ Navigation auto */ \nvar _s = $RefreshSig$();\n\n\n\nfunction Navigation() {\n var _user_username_, _user_username;\n _s();\n const { user, logout } = (0,_contexts_AuthContext__WEBPACK_IMPORTED_MODULE_3__.useAuth)();\n const pathname = (0,next_navigation__WEBPACK_IMPORTED_MODULE_2__.usePathname)();\n const navItems = [\n {\n href: '/dashboard',\n label: '儀表板'\n },\n {\n href: '/flashcards',\n label: '詞卡'\n },\n {\n href: '/learn',\n label: '學習'\n },\n {\n href: '/generate',\n label: 'AI 生成'\n }\n ];\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"nav\", {\n className: \"bg-white shadow-sm border-b\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"max-w-7xl mx-auto px-4 sm:px-6 lg:px-8\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex justify-between h-16\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center space-x-8\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_link__WEBPACK_IMPORTED_MODULE_1___default()), {\n href: \"/dashboard\",\n className: \"text-2xl font-bold text-primary\",\n children: \"DramaLing\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/components/Navigation.tsx\",\n lineNumber: 23,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"hidden md:flex space-x-6\",\n children: navItems.map((item)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_link__WEBPACK_IMPORTED_MODULE_1___default()), {\n href: item.href,\n className: \"font-medium transition-colors \".concat(pathname === item.href ? 'text-primary' : 'text-gray-600 hover:text-gray-900'),\n children: item.label\n }, item.href, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/components/Navigation.tsx\",\n lineNumber: 28,\n columnNumber: 17\n }, this))\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/components/Navigation.tsx\",\n lineNumber: 26,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/components/Navigation.tsx\",\n lineNumber: 22,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center space-x-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n className: \"p-2 text-gray-600 hover:text-gray-900\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n className: \"w-6 h-6\",\n fill: \"none\",\n stroke: \"currentColor\",\n viewBox: \"0 0 24 24\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n d: \"M15 17h5l-1.405-1.405A2.032 2.032 0 0118 14.158V11a6.002 6.002 0 00-4-5.659V5a2 2 0 10-4 0v.341C7.67 6.165 6 8.388 6 11v3.159c0 .538-.214 1.055-.595 1.436L4 17h5m6 0v1a3 3 0 11-6 0v-1m6 0H9\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/components/Navigation.tsx\",\n lineNumber: 47,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/components/Navigation.tsx\",\n lineNumber: 46,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/components/Navigation.tsx\",\n lineNumber: 45,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center space-x-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-8 h-8 bg-primary rounded-full flex items-center justify-center text-white font-semibold\",\n children: (user === null || user === void 0 ? void 0 : (_user_username = user.username) === null || _user_username === void 0 ? void 0 : (_user_username_ = _user_username[0]) === null || _user_username_ === void 0 ? void 0 : _user_username_.toUpperCase()) || 'U'\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/components/Navigation.tsx\",\n lineNumber: 53,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-sm font-medium\",\n children: (user === null || user === void 0 ? void 0 : user.displayName) || (user === null || user === void 0 ? void 0 : user.username)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/components/Navigation.tsx\",\n lineNumber: 56,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: logout,\n className: \"ml-4 text-sm text-gray-600 hover:text-gray-900\",\n children: \"登出\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/components/Navigation.tsx\",\n lineNumber: 57,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/components/Navigation.tsx\",\n lineNumber: 52,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/components/Navigation.tsx\",\n lineNumber: 43,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/components/Navigation.tsx\",\n lineNumber: 21,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/components/Navigation.tsx\",\n lineNumber: 20,\n columnNumber: 7\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/components/Navigation.tsx\",\n lineNumber: 19,\n columnNumber: 5\n }, this);\n}\n_s(Navigation, \"tHLzmZfHifuHte7SpZSOu+/8DHo=\", false, function() {\n return [\n _contexts_AuthContext__WEBPACK_IMPORTED_MODULE_3__.useAuth,\n next_navigation__WEBPACK_IMPORTED_MODULE_2__.usePathname\n ];\n});\n_c = Navigation;\nvar _c;\n$RefreshReg$(_c, \"Navigation\");\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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL2NvbXBvbmVudHMvTmF2aWdhdGlvbi50c3giLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFFNEI7QUFDaUI7QUFDRztBQUV6QyxTQUFTRztRQStDQ0MsaUJBQUFBOztJQTlDZixNQUFNLEVBQUVBLElBQUksRUFBRUMsTUFBTSxFQUFFLEdBQUdILDhEQUFPQTtJQUNoQyxNQUFNSSxXQUFXTCw0REFBV0E7SUFFNUIsTUFBTU0sV0FBVztRQUNmO1lBQUVDLE1BQU07WUFBY0MsT0FBTztRQUFNO1FBQ25DO1lBQUVELE1BQU07WUFBZUMsT0FBTztRQUFLO1FBQ25DO1lBQUVELE1BQU07WUFBVUMsT0FBTztRQUFLO1FBQzlCO1lBQUVELE1BQU07WUFBYUMsT0FBTztRQUFRO0tBQ3JDO0lBRUQscUJBQ0UsOERBQUNDO1FBQUlDLFdBQVU7a0JBQ2IsNEVBQUNDO1lBQUlELFdBQVU7c0JBQ2IsNEVBQUNDO2dCQUFJRCxXQUFVOztrQ0FDYiw4REFBQ0M7d0JBQUlELFdBQVU7OzBDQUNiLDhEQUFDWCxrREFBSUE7Z0NBQUNRLE1BQUs7Z0NBQWFHLFdBQVU7MENBQWtDOzs7Ozs7MENBR3BFLDhEQUFDQztnQ0FBSUQsV0FBVTswQ0FDWkosU0FBU00sR0FBRyxDQUFDLENBQUNDLHFCQUNiLDhEQUFDZCxrREFBSUE7d0NBRUhRLE1BQU1NLEtBQUtOLElBQUk7d0NBQ2ZHLFdBQVcsaUNBSVYsT0FIQ0wsYUFBYVEsS0FBS04sSUFBSSxHQUNsQixpQkFDQTtrREFHTE0sS0FBS0wsS0FBSzt1Q0FSTkssS0FBS04sSUFBSTs7Ozs7Ozs7Ozs7Ozs7OztrQ0FjdEIsOERBQUNJO3dCQUFJRCxXQUFVOzswQ0FFYiw4REFBQ0k7Z0NBQU9KLFdBQVU7MENBQ2hCLDRFQUFDSztvQ0FBSUwsV0FBVTtvQ0FBVU0sTUFBSztvQ0FBT0MsUUFBTztvQ0FBZUMsU0FBUTs4Q0FDakUsNEVBQUNDO3dDQUFLQyxlQUFjO3dDQUFRQyxnQkFBZTt3Q0FBUUMsYUFBYTt3Q0FBR0MsR0FBRTs7Ozs7Ozs7Ozs7Ozs7OzswQ0FLekUsOERBQUNaO2dDQUFJRCxXQUFVOztrREFDYiw4REFBQ0M7d0NBQUlELFdBQVU7a0RBQ1pQLENBQUFBLGlCQUFBQSw0QkFBQUEsaUJBQUFBLEtBQU1xQixRQUFRLGNBQWRyQixzQ0FBQUEsa0JBQUFBLGNBQWdCLENBQUMsRUFBRSxjQUFuQkEsc0NBQUFBLGdCQUFxQnNCLFdBQVcsT0FBTTs7Ozs7O2tEQUV6Qyw4REFBQ0M7d0NBQUtoQixXQUFVO2tEQUF1QlAsQ0FBQUEsaUJBQUFBLDJCQUFBQSxLQUFNd0IsV0FBVyxNQUFJeEIsaUJBQUFBLDJCQUFBQSxLQUFNcUIsUUFBUTs7Ozs7O2tEQUMxRSw4REFBQ1Y7d0NBQ0NjLFNBQVN4Qjt3Q0FDVE0sV0FBVTtrREFDWDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVNmO0dBOURnQlI7O1FBQ1dELDBEQUFPQTtRQUNmRCx3REFBV0E7OztLQUZkRSIsInNvdXJjZXMiOlsiL1VzZXJzL2pldHRjaGVuZzEwMTgvY29kZS9kcmFtYWxpbmctdm9jYWItbGVhcm5pbmcvZnJvbnRlbmQvY29tcG9uZW50cy9OYXZpZ2F0aW9uLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIGNsaWVudCdcclxuXHJcbmltcG9ydCBMaW5rIGZyb20gJ25leHQvbGluaydcclxuaW1wb3J0IHsgdXNlUGF0aG5hbWUgfSBmcm9tICduZXh0L25hdmlnYXRpb24nXHJcbmltcG9ydCB7IHVzZUF1dGggfSBmcm9tICdAL2NvbnRleHRzL0F1dGhDb250ZXh0J1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIE5hdmlnYXRpb24oKSB7XHJcbiAgY29uc3QgeyB1c2VyLCBsb2dvdXQgfSA9IHVzZUF1dGgoKVxyXG4gIGNvbnN0IHBhdGhuYW1lID0gdXNlUGF0aG5hbWUoKVxyXG5cclxuICBjb25zdCBuYXZJdGVtcyA9IFtcclxuICAgIHsgaHJlZjogJy9kYXNoYm9hcmQnLCBsYWJlbDogJ+WEgOihqOadvycgfSxcclxuICAgIHsgaHJlZjogJy9mbGFzaGNhcmRzJywgbGFiZWw6ICfoqZ7ljaEnIH0sXHJcbiAgICB7IGhyZWY6ICcvbGVhcm4nLCBsYWJlbDogJ+WtuOe/kicgfSxcclxuICAgIHsgaHJlZjogJy9nZW5lcmF0ZScsIGxhYmVsOiAnQUkg55Sf5oiQJyB9LFxyXG4gIF1cclxuXHJcbiAgcmV0dXJuIChcclxuICAgIDxuYXYgY2xhc3NOYW1lPVwiYmctd2hpdGUgc2hhZG93LXNtIGJvcmRlci1iXCI+XHJcbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwibWF4LXctN3hsIG14LWF1dG8gcHgtNCBzbTpweC02IGxnOnB4LThcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXgganVzdGlmeS1iZXR3ZWVuIGgtMTZcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIgc3BhY2UteC04XCI+XHJcbiAgICAgICAgICAgIDxMaW5rIGhyZWY9XCIvZGFzaGJvYXJkXCIgY2xhc3NOYW1lPVwidGV4dC0yeGwgZm9udC1ib2xkIHRleHQtcHJpbWFyeVwiPlxyXG4gICAgICAgICAgICAgIERyYW1hTGluZ1xyXG4gICAgICAgICAgICA8L0xpbms+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaGlkZGVuIG1kOmZsZXggc3BhY2UteC02XCI+XHJcbiAgICAgICAgICAgICAge25hdkl0ZW1zLm1hcCgoaXRlbSkgPT4gKFxyXG4gICAgICAgICAgICAgICAgPExpbmtcclxuICAgICAgICAgICAgICAgICAga2V5PXtpdGVtLmhyZWZ9XHJcbiAgICAgICAgICAgICAgICAgIGhyZWY9e2l0ZW0uaHJlZn1cclxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgZm9udC1tZWRpdW0gdHJhbnNpdGlvbi1jb2xvcnMgJHtcclxuICAgICAgICAgICAgICAgICAgICBwYXRobmFtZSA9PT0gaXRlbS5ocmVmXHJcbiAgICAgICAgICAgICAgICAgICAgICA/ICd0ZXh0LXByaW1hcnknXHJcbiAgICAgICAgICAgICAgICAgICAgICA6ICd0ZXh0LWdyYXktNjAwIGhvdmVyOnRleHQtZ3JheS05MDAnXHJcbiAgICAgICAgICAgICAgICAgIH1gfVxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICB7aXRlbS5sYWJlbH1cclxuICAgICAgICAgICAgICAgIDwvTGluaz5cclxuICAgICAgICAgICAgICApKX1cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIHNwYWNlLXgtNFwiPlxyXG4gICAgICAgICAgICB7Lyog6YCa55+l5oyJ6YiVICovfVxyXG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzTmFtZT1cInAtMiB0ZXh0LWdyYXktNjAwIGhvdmVyOnRleHQtZ3JheS05MDBcIj5cclxuICAgICAgICAgICAgICA8c3ZnIGNsYXNzTmFtZT1cInctNiBoLTZcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIj5cclxuICAgICAgICAgICAgICAgIDxwYXRoIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZUxpbmVqb2luPVwicm91bmRcIiBzdHJva2VXaWR0aD17Mn0gZD1cIk0xNSAxN2g1bC0xLjQwNS0xLjQwNUEyLjAzMiAyLjAzMiAwIDAxMTggMTQuMTU4VjExYTYuMDAyIDYuMDAyIDAgMDAtNC01LjY1OVY1YTIgMiAwIDEwLTQgMHYuMzQxQzcuNjcgNi4xNjUgNiA4LjM4OCA2IDExdjMuMTU5YzAgLjUzOC0uMjE0IDEuMDU1LS41OTUgMS40MzZMNCAxN2g1bTYgMHYxYTMgMyAwIDExLTYgMHYtMW02IDBIOVwiIC8+XHJcbiAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG5cclxuICAgICAgICAgICAgey8qIOeUqOaItuizh+ioiiAqL31cclxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBzcGFjZS14LTJcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctOCBoLTggYmctcHJpbWFyeSByb3VuZGVkLWZ1bGwgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgdGV4dC13aGl0ZSBmb250LXNlbWlib2xkXCI+XHJcbiAgICAgICAgICAgICAgICB7dXNlcj8udXNlcm5hbWU/LlswXT8udG9VcHBlckNhc2UoKSB8fCAnVSd9XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC1zbSBmb250LW1lZGl1bVwiPnt1c2VyPy5kaXNwbGF5TmFtZSB8fCB1c2VyPy51c2VybmFtZX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgb25DbGljaz17bG9nb3V0fVxyXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwibWwtNCB0ZXh0LXNtIHRleHQtZ3JheS02MDAgaG92ZXI6dGV4dC1ncmF5LTkwMFwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAg55m75Ye6XHJcbiAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9uYXY+XHJcbiAgKVxyXG59Il0sIm5hbWVzIjpbIkxpbmsiLCJ1c2VQYXRobmFtZSIsInVzZUF1dGgiLCJOYXZpZ2F0aW9uIiwidXNlciIsImxvZ291dCIsInBhdGhuYW1lIiwibmF2SXRlbXMiLCJocmVmIiwibGFiZWwiLCJuYXYiLCJjbGFzc05hbWUiLCJkaXYiLCJtYXAiLCJpdGVtIiwiYnV0dG9uIiwic3ZnIiwiZmlsbCIsInN0cm9rZSIsInZpZXdCb3giLCJwYXRoIiwic3Ryb2tlTGluZWNhcCIsInN0cm9rZUxpbmVqb2luIiwic3Ryb2tlV2lkdGgiLCJkIiwidXNlcm5hbWUiLCJ0b1VwcGVyQ2FzZSIsInNwYW4iLCJkaXNwbGF5TmFtZSIsIm9uQ2xpY2siXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./components/Navigation.tsx\n")); + +/***/ }) + +}); \ No newline at end of file diff --git a/frontend/.next/static/webpack/app/dashboard/page.fbad9fe969969005.hot-update.js b/frontend/.next/static/webpack/app/dashboard/page.fbad9fe969969005.hot-update.js new file mode 100644 index 0000000..351b74c --- /dev/null +++ b/frontend/.next/static/webpack/app/dashboard/page.fbad9fe969969005.hot-update.js @@ -0,0 +1,22 @@ +"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/dashboard/page",{ + +/***/ "(app-pages-browser)/./app/dashboard/page.tsx": +/*!********************************!*\ + !*** ./app/dashboard/page.tsx ***! + \********************************/ +/***/ ((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 */ \"default\": () => (/* binding */ DashboardPage)\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 next_link__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! next/link */ \"(app-pages-browser)/./node_modules/next/dist/client/app-dir/link.js\");\n/* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(next_link__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _components_ProtectedRoute__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/components/ProtectedRoute */ \"(app-pages-browser)/./components/ProtectedRoute.tsx\");\n/* harmony import */ var _contexts_AuthContext__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/contexts/AuthContext */ \"(app-pages-browser)/./contexts/AuthContext.tsx\");\n/* __next_internal_client_entry_do_not_use__ default auto */ \nvar _s = $RefreshSig$();\n\n\n\n\nfunction DashboardContent() {\n var _user_username_, _user_username;\n _s();\n const [activeTab, setActiveTab] = (0,react__WEBPACK_IMPORTED_MODULE_2__.useState)('overview');\n const { user, logout } = (0,_contexts_AuthContext__WEBPACK_IMPORTED_MODULE_4__.useAuth)();\n // Mock data\n const stats = {\n totalWords: 234,\n wordsToday: 12,\n streak: 7,\n accuracy: 85,\n todayReview: 23,\n completedToday: 15\n };\n const recentWords = [\n {\n id: 1,\n word: 'negotiate',\n translation: '協商',\n status: 'learned'\n },\n {\n id: 2,\n word: 'accomplish',\n translation: '完成',\n status: 'learning'\n },\n {\n id: 3,\n word: 'perspective',\n translation: '觀點',\n status: 'new'\n },\n {\n id: 4,\n word: 'substantial',\n translation: '大量的',\n status: 'learned'\n }\n ];\n const cardSets = [\n {\n id: 1,\n name: '美劇經典台詞',\n count: 45,\n progress: 60\n },\n {\n id: 2,\n name: '商務英文必備',\n count: 30,\n progress: 30\n },\n {\n id: 3,\n name: '日常對話',\n count: 25,\n progress: 80\n }\n ];\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"min-h-screen bg-gray-50\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"nav\", {\n className: \"bg-white shadow-sm border-b\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"max-w-7xl mx-auto px-4 sm:px-6 lg:px-8\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex justify-between h-16\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center space-x-8\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h1\", {\n className: \"text-2xl font-bold text-primary\",\n children: \"DramaLing\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 43,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"hidden md:flex space-x-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_link__WEBPACK_IMPORTED_MODULE_1___default()), {\n href: \"/dashboard\",\n className: \"text-gray-900 font-medium\",\n children: \"儀表板\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 45,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_link__WEBPACK_IMPORTED_MODULE_1___default()), {\n href: \"/flashcards\",\n className: \"text-gray-600 hover:text-gray-900\",\n children: \"詞卡\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 46,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_link__WEBPACK_IMPORTED_MODULE_1___default()), {\n href: \"/learn\",\n className: \"text-gray-600 hover:text-gray-900\",\n children: \"學習\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 47,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 44,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 42,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center space-x-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n className: \"p-2 text-gray-600 hover:text-gray-900\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n className: \"w-6 h-6\",\n fill: \"none\",\n stroke: \"currentColor\",\n viewBox: \"0 0 24 24\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n d: \"M15 17h5l-1.405-1.405A2.032 2.032 0 0118 14.158V11a6.002 6.002 0 00-4-5.659V5a2 2 0 10-4 0v.341C7.67 6.165 6 8.388 6 11v3.159c0 .538-.214 1.055-.595 1.436L4 17h5m6 0v1a3 3 0 11-6 0v-1m6 0H9\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 53,\n columnNumber: 19\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 52,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 51,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center space-x-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-8 h-8 bg-primary rounded-full flex items-center justify-center text-white font-semibold\",\n children: (user === null || user === void 0 ? void 0 : (_user_username = user.username) === null || _user_username === void 0 ? void 0 : (_user_username_ = _user_username[0]) === null || _user_username_ === void 0 ? void 0 : _user_username_.toUpperCase()) || 'U'\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 57,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-sm font-medium\",\n children: (user === null || user === void 0 ? void 0 : user.displayName) || (user === null || user === void 0 ? void 0 : user.username)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 60,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: logout,\n className: \"ml-4 text-sm text-gray-600 hover:text-gray-900\",\n children: \"登出\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 61,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 56,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 50,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 41,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 40,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 39,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-8\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-white rounded-xl shadow-sm p-6 mb-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h2\", {\n className: \"text-2xl font-bold text-gray-900 mb-2\",\n children: [\n \"歡迎回來,\",\n (user === null || user === void 0 ? void 0 : user.displayName) || (user === null || user === void 0 ? void 0 : user.username),\n \"! \\uD83C\\uDF1F\"\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 77,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-gray-600\",\n children: [\n \"今天有 \",\n stats.todayReview,\n \" 個單字等待複習,繼續加油!\"\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 78,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mt-4 flex gap-3\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_link__WEBPACK_IMPORTED_MODULE_1___default()), {\n href: \"/learn\",\n className: \"bg-primary text-white px-6 py-2 rounded-lg font-medium hover:bg-primary-hover transition-colors\",\n children: \"開始今日學習\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 80,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_link__WEBPACK_IMPORTED_MODULE_1___default()), {\n href: \"/generate\",\n className: \"border border-primary text-primary px-6 py-2 rounded-lg font-medium hover:bg-primary-light transition-colors\",\n children: \"AI 生成新詞卡\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 86,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 79,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 76,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-4 mb-8\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-white rounded-xl shadow-sm p-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center justify-between mb-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-gray-600 text-sm\",\n children: \"總學習單字\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 99,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n className: \"w-5 h-5 text-blue-500\",\n fill: \"none\",\n stroke: \"currentColor\",\n viewBox: \"0 0 24 24\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n d: \"M12 6.253v13m0-13C10.832 5.477 9.246 5 7.5 5S4.168 5.477 3 6.253v13C4.168 18.477 5.754 18 7.5 18s3.332.477 4.5 1.253m0-13C13.168 5.477 14.754 5 16.5 5c1.747 0 3.332.477 4.5 1.253v13C19.832 18.477 18.247 18 16.5 18c-1.746 0-3.332.477-4.5 1.253\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 101,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 100,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 98,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-3xl font-bold text-gray-900\",\n children: stats.totalWords\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 104,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm text-green-600 mt-1\",\n children: [\n \"+\",\n stats.wordsToday,\n \" 今日\"\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 105,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 97,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-white rounded-xl shadow-sm p-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center justify-between mb-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-gray-600 text-sm\",\n children: \"連續學習\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 110,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n className: \"w-5 h-5 text-orange-500\",\n fill: \"none\",\n stroke: \"currentColor\",\n viewBox: \"0 0 24 24\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n d: \"M17.657 18.657A8 8 0 016.343 7.343S7 9 9 10c0-2 .5-5 2.986-7C14 5 16.09 5.777 17.656 7.343A7.975 7.975 0 0120 13a7.975 7.975 0 01-2.343 5.657z\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 112,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 111,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 109,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-3xl font-bold text-gray-900\",\n children: [\n stats.streak,\n \" 天\"\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 115,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm text-orange-600 mt-1\",\n children: \"\\uD83D\\uDD25 保持良好!\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 116,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 108,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-white rounded-xl shadow-sm p-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center justify-between mb-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-gray-600 text-sm\",\n children: \"正確率\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 121,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n className: \"w-5 h-5 text-green-500\",\n fill: \"none\",\n stroke: \"currentColor\",\n viewBox: \"0 0 24 24\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n d: \"M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 123,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 122,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 120,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-3xl font-bold text-gray-900\",\n children: [\n stats.accuracy,\n \"%\"\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 126,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm text-gray-600 mt-1\",\n children: \"上周 82%\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 127,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 119,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-white rounded-xl shadow-sm p-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center justify-between mb-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-gray-600 text-sm\",\n children: \"今日進度\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 132,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n className: \"w-5 h-5 text-purple-500\",\n fill: \"none\",\n stroke: \"currentColor\",\n viewBox: \"0 0 24 24\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n d: \"M13 7h8m0 0v8m0-8l-8 8-4-4-6 6\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 134,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 133,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 131,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-3xl font-bold text-gray-900\",\n children: [\n stats.completedToday,\n \"/\",\n stats.todayReview\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 137,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full bg-gray-200 rounded-full h-2 mt-2\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-purple-500 h-2 rounded-full\",\n style: {\n width: \"\".concat(stats.completedToday / stats.todayReview * 100, \"%\")\n }\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 139,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 138,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 130,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 96,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-white rounded-xl shadow-sm\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"border-b border-gray-200\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"nav\", {\n className: \"-mb-px flex space-x-8 px-6\",\n \"aria-label\": \"Tabs\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>setActiveTab('overview'),\n className: \"py-4 px-1 border-b-2 font-medium text-sm \".concat(activeTab === 'overview' ? 'border-primary text-primary' : 'border-transparent text-gray-500 hover:text-gray-700 hover:border-gray-300'),\n children: \"最近學習\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 151,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>setActiveTab('sets'),\n className: \"py-4 px-1 border-b-2 font-medium text-sm \".concat(activeTab === 'sets' ? 'border-primary text-primary' : 'border-transparent text-gray-500 hover:text-gray-700 hover:border-gray-300'),\n children: \"我的卡組\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 161,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>setActiveTab('progress'),\n className: \"py-4 px-1 border-b-2 font-medium text-sm \".concat(activeTab === 'progress' ? 'border-primary text-primary' : 'border-transparent text-gray-500 hover:text-gray-700 hover:border-gray-300'),\n children: \"學習統計\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 171,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 150,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 149,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"p-6\",\n children: [\n activeTab === 'overview' && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h3\", {\n className: \"text-lg font-semibold mb-4\",\n children: \"最近學習的單字\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 187,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-y-3\",\n children: recentWords.map((word)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center justify-between p-4 border rounded-lg hover:bg-gray-50\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center space-x-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-2 h-2 rounded-full bg-green-500\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 192,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"font-semibold\",\n children: word.word\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 194,\n columnNumber: 27\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm text-gray-600\",\n children: word.translation\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 195,\n columnNumber: 27\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 193,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 191,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"px-3 py-1 rounded-full text-xs font-medium \".concat(word.status === 'learned' ? 'bg-green-100 text-green-800' : word.status === 'learning' ? 'bg-yellow-100 text-yellow-800' : 'bg-gray-100 text-gray-800'),\n children: word.status === 'learned' ? '已掌握' : word.status === 'learning' ? '學習中' : '新詞'\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 198,\n columnNumber: 23\n }, this)\n ]\n }, word.id, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 190,\n columnNumber: 21\n }, this))\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 188,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 186,\n columnNumber: 15\n }, this),\n activeTab === 'sets' && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h3\", {\n className: \"text-lg font-semibold mb-4\",\n children: \"我的卡組\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 214,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4\",\n children: cardSets.map((set)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"border rounded-lg p-4 hover:shadow-md transition-shadow\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h4\", {\n className: \"font-semibold mb-2\",\n children: set.name\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 218,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-sm text-gray-600 mb-3\",\n children: [\n set.count,\n \" 個單字\"\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 219,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full bg-gray-200 rounded-full h-2 mb-3\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-primary h-2 rounded-full\",\n style: {\n width: \"\".concat(set.progress, \"%\")\n }\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 221,\n columnNumber: 25\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 220,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_link__WEBPACK_IMPORTED_MODULE_1___default()), {\n href: \"/flashcards/\".concat(set.id),\n className: \"text-primary text-sm font-medium hover:text-primary-hover\",\n children: \"繼續學習 →\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 226,\n columnNumber: 23\n }, this)\n ]\n }, set.id, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 217,\n columnNumber: 21\n }, this))\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 215,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 213,\n columnNumber: 15\n }, this),\n activeTab === 'progress' && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h3\", {\n className: \"text-lg font-semibold mb-4\",\n children: \"學習統計\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 240,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-gray-50 rounded-lg p-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid grid-cols-2 md:grid-cols-4 gap-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm text-gray-600\",\n children: \"本周學習\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 244,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-2xl font-bold mt-1\",\n children: \"89 個\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 245,\n columnNumber: 23\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 243,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm text-gray-600\",\n children: \"本月學習\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 248,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-2xl font-bold mt-1\",\n children: \"312 個\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 249,\n columnNumber: 23\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 247,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm text-gray-600\",\n children: \"平均每日\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 252,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-2xl font-bold mt-1\",\n children: \"15 個\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 253,\n columnNumber: 23\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 251,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm text-gray-600\",\n children: \"最佳紀錄\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 256,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-2xl font-bold mt-1\",\n children: \"32 個\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 257,\n columnNumber: 23\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 255,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 242,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mt-6 pt-6 border-t\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm text-gray-600 mb-2\",\n children: \"每日學習趨勢(過去7天)\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 261,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-end space-x-2 h-20\",\n children: [\n 15,\n 20,\n 18,\n 25,\n 22,\n 30,\n 12\n ].map((value, index)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-primary rounded-t\",\n style: {\n height: \"\".concat(value / 30 * 100, \"%\")\n }\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 265,\n columnNumber: 27\n }, this)\n }, index, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 264,\n columnNumber: 25\n }, this))\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 262,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 260,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 241,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 239,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 184,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 148,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 74,\n columnNumber: 7\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 37,\n columnNumber: 5\n }, this);\n}\n_s(DashboardContent, \"3rpTT6MMy25vhIvfdWVywn2iwf0=\", false, function() {\n return [\n _contexts_AuthContext__WEBPACK_IMPORTED_MODULE_4__.useAuth\n ];\n});\n_c = DashboardContent;\nfunction DashboardPage() {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ProtectedRoute__WEBPACK_IMPORTED_MODULE_3__.ProtectedRoute, {\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(DashboardContent, {}, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 286,\n columnNumber: 7\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/dashboard/page.tsx\",\n lineNumber: 285,\n columnNumber: 5\n }, this);\n}\n_c1 = DashboardPage;\nvar _c, _c1;\n$RefreshReg$(_c, \"DashboardContent\");\n$RefreshReg$(_c1, \"DashboardPage\");\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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL2FwcC9kYXNoYm9hcmQvcGFnZS50c3giLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQUU0QjtBQUNJO0FBQzRCO0FBRVo7QUFFaEQsU0FBU0k7UUFpRFVDLGlCQUFBQTs7SUFoRGpCLE1BQU0sQ0FBQ0MsV0FBV0MsYUFBYSxHQUFHTiwrQ0FBUUEsQ0FBQztJQUMzQyxNQUFNLEVBQUVJLElBQUksRUFBRUcsTUFBTSxFQUFFLEdBQUdMLDhEQUFPQTtJQUVoQyxZQUFZO0lBQ1osTUFBTU0sUUFBUTtRQUNaQyxZQUFZO1FBQ1pDLFlBQVk7UUFDWkMsUUFBUTtRQUNSQyxVQUFVO1FBQ1ZDLGFBQWE7UUFDYkMsZ0JBQWdCO0lBQ2xCO0lBRUEsTUFBTUMsY0FBYztRQUNsQjtZQUFFQyxJQUFJO1lBQUdDLE1BQU07WUFBYUMsYUFBYTtZQUFNQyxRQUFRO1FBQVU7UUFDakU7WUFBRUgsSUFBSTtZQUFHQyxNQUFNO1lBQWNDLGFBQWE7WUFBTUMsUUFBUTtRQUFXO1FBQ25FO1lBQUVILElBQUk7WUFBR0MsTUFBTTtZQUFlQyxhQUFhO1lBQU1DLFFBQVE7UUFBTTtRQUMvRDtZQUFFSCxJQUFJO1lBQUdDLE1BQU07WUFBZUMsYUFBYTtZQUFPQyxRQUFRO1FBQVU7S0FDckU7SUFFRCxNQUFNQyxXQUFXO1FBQ2Y7WUFBRUosSUFBSTtZQUFHSyxNQUFNO1lBQVVDLE9BQU87WUFBSUMsVUFBVTtRQUFHO1FBQ2pEO1lBQUVQLElBQUk7WUFBR0ssTUFBTTtZQUFVQyxPQUFPO1lBQUlDLFVBQVU7UUFBRztRQUNqRDtZQUFFUCxJQUFJO1lBQUdLLE1BQU07WUFBUUMsT0FBTztZQUFJQyxVQUFVO1FBQUc7S0FDaEQ7SUFFRCxxQkFDRSw4REFBQ0M7UUFBSUMsV0FBVTs7MEJBRWIsOERBQUNDO2dCQUFJRCxXQUFVOzBCQUNiLDRFQUFDRDtvQkFBSUMsV0FBVTs4QkFDYiw0RUFBQ0Q7d0JBQUlDLFdBQVU7OzBDQUNiLDhEQUFDRDtnQ0FBSUMsV0FBVTs7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REFBQ0E7d0VBQUlDLFdBQVU7a0ZBQXdCOzs7Ozs7a0ZBQ3ZDLDhEQUFDRDt3RUFBSUMsV0FBVTtrRkFBMEI7Ozs7Ozs7Ozs7OzswRUFFM0MsOERBQUNEOztrRkFDQyw4REFBQ0E7d0VBQUlDLFdBQVU7a0ZBQXdCOzs7Ozs7a0ZBQ3ZDLDhEQUFDRDt3RUFBSUMsV0FBVTtrRkFBMEI7Ozs7Ozs7Ozs7Ozs7Ozs7OztrRUFHN0MsOERBQUNEO3dEQUFJQyxXQUFVOzswRUFDYiw4REFBQ0Q7Z0VBQUlDLFdBQVU7MEVBQTZCOzs7Ozs7MEVBQzVDLDhEQUFDRDtnRUFBSUMsV0FBVTswRUFDWjtvRUFBQztvRUFBSTtvRUFBSTtvRUFBSTtvRUFBSTtvRUFBSTtvRUFBSTtpRUFBRyxDQUFDeUIsR0FBRyxDQUFDLENBQUNHLE9BQU9DLHNCQUN4Qyw4REFBQzlCO3dFQUFnQkMsV0FBVTtrRkFDekIsNEVBQUNEOzRFQUNDQyxXQUFVOzRFQUNWcUIsT0FBTztnRkFBRVMsUUFBUSxHQUFzQixPQUFuQixRQUFTLEtBQU0sS0FBSTs0RUFBRzs7Ozs7O3VFQUhwQ0Q7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFpQmxDO0dBaFJTbkQ7O1FBRWtCRCwwREFBT0E7OztLQUZ6QkM7QUFrUk0sU0FBU3FEO0lBQ3RCLHFCQUNFLDhEQUFDdkQsc0VBQWNBO2tCQUNiLDRFQUFDRTs7Ozs7Ozs7OztBQUdQO01BTndCcUQiLCJzb3VyY2VzIjpbIi9Vc2Vycy9qZXR0Y2hlbmcxMDE4L2NvZGUvZHJhbWFsaW5nLXZvY2FiLWxlYXJuaW5nL2Zyb250ZW5kL2FwcC9kYXNoYm9hcmQvcGFnZS50c3giXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBjbGllbnQnXG5cbmltcG9ydCBMaW5rIGZyb20gJ25leHQvbGluaydcbmltcG9ydCB7IHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBQcm90ZWN0ZWRSb3V0ZSB9IGZyb20gJ0AvY29tcG9uZW50cy9Qcm90ZWN0ZWRSb3V0ZSdcbmltcG9ydCB7IE5hdmlnYXRpb24gfSBmcm9tICdAL2NvbXBvbmVudHMvTmF2aWdhdGlvbidcbmltcG9ydCB7IHVzZUF1dGggfSBmcm9tICdAL2NvbnRleHRzL0F1dGhDb250ZXh0J1xuXG5mdW5jdGlvbiBEYXNoYm9hcmRDb250ZW50KCkge1xuICBjb25zdCBbYWN0aXZlVGFiLCBzZXRBY3RpdmVUYWJdID0gdXNlU3RhdGUoJ292ZXJ2aWV3JylcbiAgY29uc3QgeyB1c2VyLCBsb2dvdXQgfSA9IHVzZUF1dGgoKVxuXG4gIC8vIE1vY2sgZGF0YVxuICBjb25zdCBzdGF0cyA9IHtcbiAgICB0b3RhbFdvcmRzOiAyMzQsXG4gICAgd29yZHNUb2RheTogMTIsXG4gICAgc3RyZWFrOiA3LFxuICAgIGFjY3VyYWN5OiA4NSxcbiAgICB0b2RheVJldmlldzogMjMsXG4gICAgY29tcGxldGVkVG9kYXk6IDE1XG4gIH1cblxuICBjb25zdCByZWNlbnRXb3JkcyA9IFtcbiAgICB7IGlkOiAxLCB3b3JkOiAnbmVnb3RpYXRlJywgdHJhbnNsYXRpb246ICfljZTllYYnLCBzdGF0dXM6ICdsZWFybmVkJyB9LFxuICAgIHsgaWQ6IDIsIHdvcmQ6ICdhY2NvbXBsaXNoJywgdHJhbnNsYXRpb246ICflrozmiJAnLCBzdGF0dXM6ICdsZWFybmluZycgfSxcbiAgICB7IGlkOiAzLCB3b3JkOiAncGVyc3BlY3RpdmUnLCB0cmFuc2xhdGlvbjogJ+ingOm7nicsIHN0YXR1czogJ25ldycgfSxcbiAgICB7IGlkOiA0LCB3b3JkOiAnc3Vic3RhbnRpYWwnLCB0cmFuc2xhdGlvbjogJ+Wkp+mHj+eahCcsIHN0YXR1czogJ2xlYXJuZWQnIH0sXG4gIF1cblxuICBjb25zdCBjYXJkU2V0cyA9IFtcbiAgICB7IGlkOiAxLCBuYW1lOiAn576O5YqH57aT5YW45Y+w6KmeJywgY291bnQ6IDQ1LCBwcm9ncmVzczogNjAgfSxcbiAgICB7IGlkOiAyLCBuYW1lOiAn5ZWG5YuZ6Iux5paH5b+F5YKZJywgY291bnQ6IDMwLCBwcm9ncmVzczogMzAgfSxcbiAgICB7IGlkOiAzLCBuYW1lOiAn5pel5bi45bCN6KmxJywgY291bnQ6IDI1LCBwcm9ncmVzczogODAgfSxcbiAgXVxuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJtaW4taC1zY3JlZW4gYmctZ3JheS01MFwiPlxuICAgICAgey8qIE5hdmlnYXRpb24gKi99XG4gICAgICA8bmF2IGNsYXNzTmFtZT1cImJnLXdoaXRlIHNoYWRvdy1zbSBib3JkZXItYlwiPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1heC13LTd4bCBteC1hdXRvIHB4LTQgc206cHgtNiBsZzpweC04XCI+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGp1c3RpZnktYmV0d2VlbiBoLTE2XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIHNwYWNlLXgtOFwiPlxuICAgICAgICAgICAgICA8aDEgY2xhc3NOYW1lPVwidGV4dC0yeGwgZm9udC1ib2xkIHRleHQtcHJpbWFyeVwiPkRyYW1hTGluZzwvaDE+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaGlkZGVuIG1kOmZsZXggc3BhY2UteC02XCI+XG4gICAgICAgICAgICAgICAgPExpbmsgaHJlZj1cIi9kYXNoYm9hcmRcIiBjbGFzc05hbWU9XCJ0ZXh0LWdyYXktOTAwIGZvbnQtbWVkaXVtXCI+5YSA6KGo5p2/PC9MaW5rPlxuICAgICAgICAgICAgICAgIDxMaW5rIGhyZWY9XCIvZmxhc2hjYXJkc1wiIGNsYXNzTmFtZT1cInRleHQtZ3JheS02MDAgaG92ZXI6dGV4dC1ncmF5LTkwMFwiPuipnuWNoTwvTGluaz5cbiAgICAgICAgICAgICAgICA8TGluayBocmVmPVwiL2xlYXJuXCIgY2xhc3NOYW1lPVwidGV4dC1ncmF5LTYwMCBob3Zlcjp0ZXh0LWdyYXktOTAwXCI+5a2457+SPC9MaW5rPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBzcGFjZS14LTRcIj5cbiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzc05hbWU9XCJwLTIgdGV4dC1ncmF5LTYwMCBob3Zlcjp0ZXh0LWdyYXktOTAwXCI+XG4gICAgICAgICAgICAgICAgPHN2ZyBjbGFzc05hbWU9XCJ3LTYgaC02XCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCI+XG4gICAgICAgICAgICAgICAgICA8cGF0aCBzdHJva2VMaW5lY2FwPVwicm91bmRcIiBzdHJva2VMaW5lam9pbj1cInJvdW5kXCIgc3Ryb2tlV2lkdGg9ezJ9IGQ9XCJNMTUgMTdoNWwtMS40MDUtMS40MDVBMi4wMzIgMi4wMzIgMCAwMTE4IDE0LjE1OFYxMWE2LjAwMiA2LjAwMiAwIDAwLTQtNS42NTlWNWEyIDIgMCAxMC00IDB2LjM0MUM3LjY3IDYuMTY1IDYgOC4zODggNiAxMXYzLjE1OWMwIC41MzgtLjIxNCAxLjA1NS0uNTk1IDEuNDM2TDQgMTdoNW02IDB2MWEzIDMgMCAxMS02IDB2LTFtNiAwSDlcIiAvPlxuICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBzcGFjZS14LTJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctOCBoLTggYmctcHJpbWFyeSByb3VuZGVkLWZ1bGwgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgdGV4dC13aGl0ZSBmb250LXNlbWlib2xkXCI+XG4gICAgICAgICAgICAgICAgICB7dXNlcj8udXNlcm5hbWU/LlswXT8udG9VcHBlckNhc2UoKSB8fCAnVSd9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC1zbSBmb250LW1lZGl1bVwiPnt1c2VyPy5kaXNwbGF5TmFtZSB8fCB1c2VyPy51c2VybmFtZX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgb25DbGljaz17bG9nb3V0fVxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwibWwtNCB0ZXh0LXNtIHRleHQtZ3JheS02MDAgaG92ZXI6dGV4dC1ncmF5LTkwMFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAg55m75Ye6XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uYXY+XG5cbiAgICAgIHsvKiBNYWluIENvbnRlbnQgKi99XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1heC13LTd4bCBteC1hdXRvIHB4LTQgc206cHgtNiBsZzpweC04IHB5LThcIj5cbiAgICAgICAgey8qIFdlbGNvbWUgU2VjdGlvbiAqL31cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJiZy13aGl0ZSByb3VuZGVkLXhsIHNoYWRvdy1zbSBwLTYgbWItNlwiPlxuICAgICAgICAgIDxoMiBjbGFzc05hbWU9XCJ0ZXh0LTJ4bCBmb250LWJvbGQgdGV4dC1ncmF5LTkwMCBtYi0yXCI+5q2h6L+O5Zue5L6G77yMe3VzZXI/LmRpc3BsYXlOYW1lIHx8IHVzZXI/LnVzZXJuYW1lfSEg8J+MnzwvaDI+XG4gICAgICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC1ncmF5LTYwMFwiPuS7iuWkqeaciSB7c3RhdHMudG9kYXlSZXZpZXd9IOWAi+WWruWtl+etieW+heikh+e/ku+8jOe5vOe6jOWKoOayue+8gTwvcD5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm10LTQgZmxleCBnYXAtM1wiPlxuICAgICAgICAgICAgPExpbmtcbiAgICAgICAgICAgICAgaHJlZj1cIi9sZWFyblwiXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT1cImJnLXByaW1hcnkgdGV4dC13aGl0ZSBweC02IHB5LTIgcm91bmRlZC1sZyBmb250LW1lZGl1bSBob3ZlcjpiZy1wcmltYXJ5LWhvdmVyIHRyYW5zaXRpb24tY29sb3JzXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAg6ZaL5aeL5LuK5pel5a2457+SXG4gICAgICAgICAgICA8L0xpbms+XG4gICAgICAgICAgICA8TGlua1xuICAgICAgICAgICAgICBocmVmPVwiL2dlbmVyYXRlXCJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiYm9yZGVyIGJvcmRlci1wcmltYXJ5IHRleHQtcHJpbWFyeSBweC02IHB5LTIgcm91bmRlZC1sZyBmb250LW1lZGl1bSBob3ZlcjpiZy1wcmltYXJ5LWxpZ2h0IHRyYW5zaXRpb24tY29sb3JzXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgQUkg55Sf5oiQ5paw6Kme5Y2hXG4gICAgICAgICAgICA8L0xpbms+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIHsvKiBTdGF0cyBHcmlkICovfVxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImdyaWQgZ3JpZC1jb2xzLTEgbWQ6Z3JpZC1jb2xzLTIgbGc6Z3JpZC1jb2xzLTQgZ2FwLTQgbWItOFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmctd2hpdGUgcm91bmRlZC14bCBzaGFkb3ctc20gcC02XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBtYi0yXCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtZ3JheS02MDAgdGV4dC1zbVwiPue4veWtuOe/kuWWruWtlzwvc3Bhbj5cbiAgICAgICAgICAgICAgPHN2ZyBjbGFzc05hbWU9XCJ3LTUgaC01IHRleHQtYmx1ZS01MDBcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIj5cbiAgICAgICAgICAgICAgICA8cGF0aCBzdHJva2VMaW5lY2FwPVwicm91bmRcIiBzdHJva2VMaW5lam9pbj1cInJvdW5kXCIgc3Ryb2tlV2lkdGg9ezJ9IGQ9XCJNMTIgNi4yNTN2MTNtMC0xM0MxMC44MzIgNS40NzcgOS4yNDYgNSA3LjUgNVM0LjE2OCA1LjQ3NyAzIDYuMjUzdjEzQzQuMTY4IDE4LjQ3NyA1Ljc1NCAxOCA3LjUgMThzMy4zMzIuNDc3IDQuNSAxLjI1M20wLTEzQzEzLjE2OCA1LjQ3NyAxNC43NTQgNSAxNi41IDVjMS43NDcgMCAzLjMzMi40NzcgNC41IDEuMjUzdjEzQzE5LjgzMiAxOC40NzcgMTguMjQ3IDE4IDE2LjUgMThjLTEuNzQ2IDAtMy4zMzIuNDc3LTQuNSAxLjI1M1wiIC8+XG4gICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtM3hsIGZvbnQtYm9sZCB0ZXh0LWdyYXktOTAwXCI+e3N0YXRzLnRvdGFsV29yZHN9PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtc20gdGV4dC1ncmVlbi02MDAgbXQtMVwiPit7c3RhdHMud29yZHNUb2RheX0g5LuK5pelPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJnLXdoaXRlIHJvdW5kZWQteGwgc2hhZG93LXNtIHAtNlwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gbWItMlwiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LWdyYXktNjAwIHRleHQtc21cIj7pgKPnuozlrbjnv5I8L3NwYW4+XG4gICAgICAgICAgICAgIDxzdmcgY2xhc3NOYW1lPVwidy01IGgtNSB0ZXh0LW9yYW5nZS01MDBcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIj5cbiAgICAgICAgICAgICAgICA8cGF0aCBzdHJva2VMaW5lY2FwPVwicm91bmRcIiBzdHJva2VMaW5lam9pbj1cInJvdW5kXCIgc3Ryb2tlV2lkdGg9ezJ9IGQ9XCJNMTcuNjU3IDE4LjY1N0E4IDggMCAwMTYuMzQzIDcuMzQzUzcgOSA5IDEwYzAtMiAuNS01IDIuOTg2LTdDMTQgNSAxNi4wOSA1Ljc3NyAxNy42NTYgNy4zNDNBNy45NzUgNy45NzUgMCAwMTIwIDEzYTcuOTc1IDcuOTc1IDAgMDEtMi4zNDMgNS42NTd6XCIgLz5cbiAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC0zeGwgZm9udC1ib2xkIHRleHQtZ3JheS05MDBcIj57c3RhdHMuc3RyZWFrfSDlpKk8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1zbSB0ZXh0LW9yYW5nZS02MDAgbXQtMVwiPvCflKUg5L+d5oyB6Imv5aW977yBPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJnLXdoaXRlIHJvdW5kZWQteGwgc2hhZG93LXNtIHAtNlwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gbWItMlwiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LWdyYXktNjAwIHRleHQtc21cIj7mraPnorrnjoc8L3NwYW4+XG4gICAgICAgICAgICAgIDxzdmcgY2xhc3NOYW1lPVwidy01IGgtNSB0ZXh0LWdyZWVuLTUwMFwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiPlxuICAgICAgICAgICAgICAgIDxwYXRoIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZUxpbmVqb2luPVwicm91bmRcIiBzdHJva2VXaWR0aD17Mn0gZD1cIk05IDEybDIgMiA0LTRtNiAyYTkgOSAwIDExLTE4IDAgOSA5IDAgMDExOCAwelwiIC8+XG4gICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtM3hsIGZvbnQtYm9sZCB0ZXh0LWdyYXktOTAwXCI+e3N0YXRzLmFjY3VyYWN5fSU8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1zbSB0ZXh0LWdyYXktNjAwIG10LTFcIj7kuIrlkaggODIlPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJnLXdoaXRlIHJvdW5kZWQteGwgc2hhZG93LXNtIHAtNlwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gbWItMlwiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LWdyYXktNjAwIHRleHQtc21cIj7ku4rml6XpgLLluqY8L3NwYW4+XG4gICAgICAgICAgICAgIDxzdmcgY2xhc3NOYW1lPVwidy01IGgtNSB0ZXh0LXB1cnBsZS01MDBcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIj5cbiAgICAgICAgICAgICAgICA8cGF0aCBzdHJva2VMaW5lY2FwPVwicm91bmRcIiBzdHJva2VMaW5lam9pbj1cInJvdW5kXCIgc3Ryb2tlV2lkdGg9ezJ9IGQ9XCJNMTMgN2g4bTAgMHY4bTAtOGwtOCA4LTQtNC02IDZcIiAvPlxuICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LTN4bCBmb250LWJvbGQgdGV4dC1ncmF5LTkwMFwiPntzdGF0cy5jb21wbGV0ZWRUb2RheX0ve3N0YXRzLnRvZGF5UmV2aWV3fTwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LWZ1bGwgYmctZ3JheS0yMDAgcm91bmRlZC1mdWxsIGgtMiBtdC0yXCI+XG4gICAgICAgICAgICAgIDxkaXYgXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiYmctcHVycGxlLTUwMCBoLTIgcm91bmRlZC1mdWxsXCJcbiAgICAgICAgICAgICAgICBzdHlsZT17eyB3aWR0aDogYCR7KHN0YXRzLmNvbXBsZXRlZFRvZGF5IC8gc3RhdHMudG9kYXlSZXZpZXcpICogMTAwfSVgIH19XG4gICAgICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICB7LyogQ29udGVudCBUYWJzICovfVxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJnLXdoaXRlIHJvdW5kZWQteGwgc2hhZG93LXNtXCI+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJib3JkZXItYiBib3JkZXItZ3JheS0yMDBcIj5cbiAgICAgICAgICAgIDxuYXYgY2xhc3NOYW1lPVwiLW1iLXB4IGZsZXggc3BhY2UteC04IHB4LTZcIiBhcmlhLWxhYmVsPVwiVGFic1wiPlxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gc2V0QWN0aXZlVGFiKCdvdmVydmlldycpfVxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17YHB5LTQgcHgtMSBib3JkZXItYi0yIGZvbnQtbWVkaXVtIHRleHQtc20gJHtcbiAgICAgICAgICAgICAgICAgIGFjdGl2ZVRhYiA9PT0gJ292ZXJ2aWV3J1xuICAgICAgICAgICAgICAgICAgICA/ICdib3JkZXItcHJpbWFyeSB0ZXh0LXByaW1hcnknXG4gICAgICAgICAgICAgICAgICAgIDogJ2JvcmRlci10cmFuc3BhcmVudCB0ZXh0LWdyYXktNTAwIGhvdmVyOnRleHQtZ3JheS03MDAgaG92ZXI6Ym9yZGVyLWdyYXktMzAwJ1xuICAgICAgICAgICAgICAgIH1gfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAg5pyA6L+R5a2457+SXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gc2V0QWN0aXZlVGFiKCdzZXRzJyl9XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgcHktNCBweC0xIGJvcmRlci1iLTIgZm9udC1tZWRpdW0gdGV4dC1zbSAke1xuICAgICAgICAgICAgICAgICAgYWN0aXZlVGFiID09PSAnc2V0cydcbiAgICAgICAgICAgICAgICAgICAgPyAnYm9yZGVyLXByaW1hcnkgdGV4dC1wcmltYXJ5J1xuICAgICAgICAgICAgICAgICAgICA6ICdib3JkZXItdHJhbnNwYXJlbnQgdGV4dC1ncmF5LTUwMCBob3Zlcjp0ZXh0LWdyYXktNzAwIGhvdmVyOmJvcmRlci1ncmF5LTMwMCdcbiAgICAgICAgICAgICAgICB9YH1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIOaIkeeahOWNoee1hFxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldEFjdGl2ZVRhYigncHJvZ3Jlc3MnKX1cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2BweS00IHB4LTEgYm9yZGVyLWItMiBmb250LW1lZGl1bSB0ZXh0LXNtICR7XG4gICAgICAgICAgICAgICAgICBhY3RpdmVUYWIgPT09ICdwcm9ncmVzcydcbiAgICAgICAgICAgICAgICAgICAgPyAnYm9yZGVyLXByaW1hcnkgdGV4dC1wcmltYXJ5J1xuICAgICAgICAgICAgICAgICAgICA6ICdib3JkZXItdHJhbnNwYXJlbnQgdGV4dC1ncmF5LTUwMCBob3Zlcjp0ZXh0LWdyYXktNzAwIGhvdmVyOmJvcmRlci1ncmF5LTMwMCdcbiAgICAgICAgICAgICAgICB9YH1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIOWtuOe/kue1seioiFxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvbmF2PlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwLTZcIj5cbiAgICAgICAgICAgIHthY3RpdmVUYWIgPT09ICdvdmVydmlldycgJiYgKFxuICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgIDxoMyBjbGFzc05hbWU9XCJ0ZXh0LWxnIGZvbnQtc2VtaWJvbGQgbWItNFwiPuacgOi/keWtuOe/kueahOWWruWtlzwvaDM+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJzcGFjZS15LTNcIj5cbiAgICAgICAgICAgICAgICAgIHtyZWNlbnRXb3Jkcy5tYXAod29yZCA9PiAoXG4gICAgICAgICAgICAgICAgICAgIDxkaXYga2V5PXt3b3JkLmlkfSBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gcC00IGJvcmRlciByb3VuZGVkLWxnIGhvdmVyOmJnLWdyYXktNTBcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIHNwYWNlLXgtNFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LTIgaC0yIHJvdW5kZWQtZnVsbCBiZy1ncmVlbi01MDBcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZm9udC1zZW1pYm9sZFwiPnt3b3JkLndvcmR9PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1zbSB0ZXh0LWdyYXktNjAwXCI+e3dvcmQudHJhbnNsYXRpb259PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2BweC0zIHB5LTEgcm91bmRlZC1mdWxsIHRleHQteHMgZm9udC1tZWRpdW0gJHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdvcmQuc3RhdHVzID09PSAnbGVhcm5lZCcgPyAnYmctZ3JlZW4tMTAwIHRleHQtZ3JlZW4tODAwJyA6XG4gICAgICAgICAgICAgICAgICAgICAgICB3b3JkLnN0YXR1cyA9PT0gJ2xlYXJuaW5nJyA/ICdiZy15ZWxsb3ctMTAwIHRleHQteWVsbG93LTgwMCcgOlxuICAgICAgICAgICAgICAgICAgICAgICAgJ2JnLWdyYXktMTAwIHRleHQtZ3JheS04MDAnXG4gICAgICAgICAgICAgICAgICAgICAgfWB9PlxuICAgICAgICAgICAgICAgICAgICAgICAge3dvcmQuc3RhdHVzID09PSAnbGVhcm5lZCcgPyAn5bey5o6M5o+hJyA6IFxuICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmQuc3RhdHVzID09PSAnbGVhcm5pbmcnID8gJ+WtuOe/kuS4rScgOiAn5paw6KmeJ31cbiAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAge2FjdGl2ZVRhYiA9PT0gJ3NldHMnICYmIChcbiAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8aDMgY2xhc3NOYW1lPVwidGV4dC1sZyBmb250LXNlbWlib2xkIG1iLTRcIj7miJHnmoTljaHntYQ8L2gzPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZ3JpZCBncmlkLWNvbHMtMSBtZDpncmlkLWNvbHMtMiBsZzpncmlkLWNvbHMtMyBnYXAtNFwiPlxuICAgICAgICAgICAgICAgICAge2NhcmRTZXRzLm1hcChzZXQgPT4gKFxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGtleT17c2V0LmlkfSBjbGFzc05hbWU9XCJib3JkZXIgcm91bmRlZC1sZyBwLTQgaG92ZXI6c2hhZG93LW1kIHRyYW5zaXRpb24tc2hhZG93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGg0IGNsYXNzTmFtZT1cImZvbnQtc2VtaWJvbGQgbWItMlwiPntzZXQubmFtZX08L2g0PlxuICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQtc20gdGV4dC1ncmF5LTYwMCBtYi0zXCI+e3NldC5jb3VudH0g5YCL5Zau5a2XPC9wPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy1mdWxsIGJnLWdyYXktMjAwIHJvdW5kZWQtZnVsbCBoLTIgbWItM1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiYmctcHJpbWFyeSBoLTIgcm91bmRlZC1mdWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3sgd2lkdGg6IGAke3NldC5wcm9ncmVzc30lYCB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDxMaW5rXG4gICAgICAgICAgICAgICAgICAgICAgICBocmVmPXtgL2ZsYXNoY2FyZHMvJHtzZXQuaWR9YH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInRleHQtcHJpbWFyeSB0ZXh0LXNtIGZvbnQtbWVkaXVtIGhvdmVyOnRleHQtcHJpbWFyeS1ob3ZlclwiXG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAg57m857qM5a2457+SIOKGklxuICAgICAgICAgICAgICAgICAgICAgIDwvTGluaz5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICApfVxuXG4gICAgICAgICAgICB7YWN0aXZlVGFiID09PSAncHJvZ3Jlc3MnICYmIChcbiAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8aDMgY2xhc3NOYW1lPVwidGV4dC1sZyBmb250LXNlbWlib2xkIG1iLTRcIj7lrbjnv5LntbHoqIg8L2gzPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmctZ3JheS01MCByb3VuZGVkLWxnIHAtNlwiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJncmlkIGdyaWQtY29scy0yIG1kOmdyaWQtY29scy00IGdhcC02XCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LXNtIHRleHQtZ3JheS02MDBcIj7mnKzlkajlrbjnv5I8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtMnhsIGZvbnQtYm9sZCBtdC0xXCI+ODkg5YCLPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1zbSB0ZXh0LWdyYXktNjAwXCI+5pys5pyI5a2457+SPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LTJ4bCBmb250LWJvbGQgbXQtMVwiPjMxMiDlgIs8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LXNtIHRleHQtZ3JheS02MDBcIj7lubPlnYfmr4/ml6U8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtMnhsIGZvbnQtYm9sZCBtdC0xXCI+MTUg5YCLPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1zbSB0ZXh0LWdyYXktNjAwXCI+5pyA5L2z57SA6YyEPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LTJ4bCBmb250LWJvbGQgbXQtMVwiPjMyIOWAizwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtdC02IHB0LTYgYm9yZGVyLXRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LXNtIHRleHQtZ3JheS02MDAgbWItMlwiPuavj+aXpeWtuOe/kui2qOWLou+8iOmBjuWOuzflpKnvvIk8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWVuZCBzcGFjZS14LTIgaC0yMFwiPlxuICAgICAgICAgICAgICAgICAgICAgIHtbMTUsIDIwLCAxOCwgMjUsIDIyLCAzMCwgMTJdLm1hcCgodmFsdWUsIGluZGV4KSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGtleT17aW5kZXh9IGNsYXNzTmFtZT1cImZsZXgtMVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImJnLXByaW1hcnkgcm91bmRlZC10XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17eyBoZWlnaHQ6IGAkeyh2YWx1ZSAvIDMwKSAqIDEwMH0lYCB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICApfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICApXG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIERhc2hib2FyZFBhZ2UoKSB7XG4gIHJldHVybiAoXG4gICAgPFByb3RlY3RlZFJvdXRlPlxuICAgICAgPERhc2hib2FyZENvbnRlbnQgLz5cbiAgICA8L1Byb3RlY3RlZFJvdXRlPlxuICApXG59Il0sIm5hbWVzIjpbIkxpbmsiLCJ1c2VTdGF0ZSIsIlByb3RlY3RlZFJvdXRlIiwidXNlQXV0aCIsIkRhc2hib2FyZENvbnRlbnQiLCJ1c2VyIiwiYWN0aXZlVGFiIiwic2V0QWN0aXZlVGFiIiwibG9nb3V0Iiwic3RhdHMiLCJ0b3RhbFdvcmRzIiwid29yZHNUb2RheSIsInN0cmVhayIsImFjY3VyYWN5IiwidG9kYXlSZXZpZXciLCJjb21wbGV0ZWRUb2RheSIsInJlY2VudFdvcmRzIiwiaWQiLCJ3b3JkIiwidHJhbnNsYXRpb24iLCJzdGF0dXMiLCJjYXJkU2V0cyIsIm5hbWUiLCJjb3VudCIsInByb2dyZXNzIiwiZGl2IiwiY2xhc3NOYW1lIiwibmF2IiwiaDEiLCJocmVmIiwiYnV0dG9uIiwic3ZnIiwiZmlsbCIsInN0cm9rZSIsInZpZXdCb3giLCJwYXRoIiwic3Ryb2tlTGluZWNhcCIsInN0cm9rZUxpbmVqb2luIiwic3Ryb2tlV2lkdGgiLCJkIiwidXNlcm5hbWUiLCJ0b1VwcGVyQ2FzZSIsInNwYW4iLCJkaXNwbGF5TmFtZSIsIm9uQ2xpY2siLCJoMiIsInAiLCJzdHlsZSIsIndpZHRoIiwiYXJpYS1sYWJlbCIsImgzIiwibWFwIiwic2V0IiwiaDQiLCJ2YWx1ZSIsImluZGV4IiwiaGVpZ2h0IiwiRGFzaGJvYXJkUGFnZSJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./app/dashboard/page.tsx\n")); + +/***/ }) + +}); \ No newline at end of file diff --git a/frontend/.next/static/webpack/app/flashcards/page.94e69a03f85ff02d.hot-update.js b/frontend/.next/static/webpack/app/flashcards/page.94e69a03f85ff02d.hot-update.js new file mode 100644 index 0000000..565b251 --- /dev/null +++ b/frontend/.next/static/webpack/app/flashcards/page.94e69a03f85ff02d.hot-update.js @@ -0,0 +1,22 @@ +"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/flashcards/page",{ + +/***/ "(app-pages-browser)/./app/flashcards/page.tsx": +/*!*********************************!*\ + !*** ./app/flashcards/page.tsx ***! + \*********************************/ +/***/ ((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 */ \"default\": () => (/* binding */ FlashcardsPage)\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 next_link__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! next/link */ \"(app-pages-browser)/./node_modules/next/dist/client/app-dir/link.js\");\n/* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(next_link__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _components_ProtectedRoute__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/components/ProtectedRoute */ \"(app-pages-browser)/./components/ProtectedRoute.tsx\");\n/* harmony import */ var _components_FlashcardForm__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/components/FlashcardForm */ \"(app-pages-browser)/./components/FlashcardForm.tsx\");\n/* harmony import */ var _lib_services_flashcards__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/lib/services/flashcards */ \"(app-pages-browser)/./lib/services/flashcards.ts\");\n/* __next_internal_client_entry_do_not_use__ default auto */ \nvar _s = $RefreshSig$();\n\n\n\n\n\nfunction FlashcardsContent() {\n var _cardSets_find, _cardSets_, _cardSets_1;\n _s();\n const [activeTab, setActiveTab] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)('my-cards');\n const [selectedSet, setSelectedSet] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);\n const [searchTerm, setSearchTerm] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)('');\n // Real data from API\n const [cardSets, setCardSets] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)([]);\n const [flashcards, setFlashcards] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)([]);\n const [loading, setLoading] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(true);\n const [error, setError] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);\n // Form states\n const [showForm, setShowForm] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n const [editingCard, setEditingCard] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);\n // Load data from API\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)({\n \"FlashcardsContent.useEffect\": ()=>{\n loadCardSets();\n loadFlashcards();\n }\n }[\"FlashcardsContent.useEffect\"], []);\n const loadCardSets = async ()=>{\n try {\n const result = await _lib_services_flashcards__WEBPACK_IMPORTED_MODULE_5__.flashcardsService.getCardSets();\n if (result.success && result.data) {\n setCardSets(result.data.sets);\n } else {\n setError(result.error || 'Failed to load card sets');\n }\n } catch (err) {\n setError('Failed to load card sets');\n }\n };\n const loadFlashcards = async ()=>{\n try {\n setLoading(true);\n const result = await _lib_services_flashcards__WEBPACK_IMPORTED_MODULE_5__.flashcardsService.getFlashcards(selectedSet || undefined);\n if (result.success && result.data) {\n setFlashcards(result.data.flashcards);\n } else {\n setError(result.error || 'Failed to load flashcards');\n }\n } catch (err) {\n setError('Failed to load flashcards');\n } finally{\n setLoading(false);\n }\n };\n // Reload flashcards when selectedSet changes\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)({\n \"FlashcardsContent.useEffect\": ()=>{\n loadFlashcards();\n }\n }[\"FlashcardsContent.useEffect\"], [\n selectedSet\n ]);\n // Handle form operations\n const handleFormSuccess = ()=>{\n setShowForm(false);\n setEditingCard(null);\n loadFlashcards();\n loadCardSets();\n };\n const handleEdit = (card)=>{\n setEditingCard(card);\n setShowForm(true);\n };\n const handleDelete = async (card)=>{\n if (!confirm(\"確定要刪除詞卡「\".concat(card.word, \"」嗎?\"))) {\n return;\n }\n try {\n const result = await _lib_services_flashcards__WEBPACK_IMPORTED_MODULE_5__.flashcardsService.deleteFlashcard(card.id);\n if (result.success) {\n loadFlashcards();\n loadCardSets();\n } else {\n alert(result.error || '刪除失敗');\n }\n } catch (err) {\n alert('刪除失敗,請重試');\n }\n };\n // Filter data\n const filteredSets = cardSets.filter((set)=>set.name.toLowerCase().includes(searchTerm.toLowerCase()) || set.description.toLowerCase().includes(searchTerm.toLowerCase()));\n const filteredCards = flashcards.filter((card)=>{\n if (searchTerm) {\n var _card_word, _card_translation;\n return ((_card_word = card.word) === null || _card_word === void 0 ? void 0 : _card_word.toLowerCase().includes(searchTerm.toLowerCase())) || ((_card_translation = card.translation) === null || _card_translation === void 0 ? void 0 : _card_translation.toLowerCase().includes(searchTerm.toLowerCase()));\n }\n return true;\n });\n // Add loading and error states\n if (loading) {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"min-h-screen bg-gray-50 flex items-center justify-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-lg\",\n children: \"載入中...\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 114,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 113,\n columnNumber: 7\n }, this);\n }\n if (error) {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"min-h-screen bg-gray-50 flex items-center justify-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-red-600\",\n children: error\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 122,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 121,\n columnNumber: 7\n }, this);\n }\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"min-h-screen bg-gray-50\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-white border-b border-gray-200\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"max-w-7xl mx-auto px-4 sm:px-6 lg:px-8\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex justify-between items-center py-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h1\", {\n className: \"text-3xl font-bold text-gray-900\",\n children: \"詞卡管理\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 134,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"mt-1 text-sm text-gray-500\",\n children: \"管理你的詞卡集合\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 135,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 133,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center space-x-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>setShowForm(true),\n className: \"bg-green-600 text-white px-4 py-2 rounded-lg hover:bg-green-700 transition-colors\",\n children: \"新增詞卡\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 138,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_link__WEBPACK_IMPORTED_MODULE_2___default()), {\n href: \"/generate\",\n className: \"bg-primary text-white px-4 py-2 rounded-lg hover:bg-primary/90 transition-colors\",\n children: \"AI 生成詞卡\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 144,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 137,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 132,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex space-x-8\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>setActiveTab('my-cards'),\n className: \"pb-4 px-1 border-b-2 font-medium text-sm \".concat(activeTab === 'my-cards' ? 'border-primary text-primary' : 'border-transparent text-gray-500 hover:text-gray-700 hover:border-gray-300'),\n children: [\n \"我的卡組 (\",\n filteredSets.length,\n \")\"\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 155,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>setActiveTab('all-cards'),\n className: \"pb-4 px-1 border-b-2 font-medium text-sm \".concat(activeTab === 'all-cards' ? 'border-primary text-primary' : 'border-transparent text-gray-500 hover:text-gray-700 hover:border-gray-300'),\n children: [\n \"所有詞卡 (\",\n filteredCards.length,\n \")\"\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 165,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 154,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 131,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 130,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-8\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mb-6\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"relative\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"text\",\n value: searchTerm,\n onChange: (e)=>setSearchTerm(e.target.value),\n placeholder: \"搜尋詞卡或卡組...\",\n className: \"w-full pl-10 pr-4 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-primary focus:border-transparent\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 184,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute inset-y-0 left-0 pl-3 flex items-center pointer-events-none\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n className: \"h-5 w-5 text-gray-400\",\n fill: \"none\",\n stroke: \"currentColor\",\n viewBox: \"0 0 24 24\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n d: \"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 193,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 192,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 191,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 183,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 182,\n columnNumber: 9\n }, this),\n activeTab === 'my-cards' && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex justify-between items-center mb-4\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h3\", {\n className: \"text-lg font-semibold\",\n children: [\n \"共 \",\n filteredSets.length,\n \" 個卡組\"\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 203,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 202,\n columnNumber: 13\n }, this),\n filteredSets.length === 0 ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-center py-12\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-gray-500 mb-4\",\n children: \"還沒有詞卡集合\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 208,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_link__WEBPACK_IMPORTED_MODULE_2___default()), {\n href: \"/generate\",\n className: \"bg-primary text-white px-4 py-2 rounded-lg hover:bg-primary/90 transition-colors\",\n children: \"創建第一個卡組\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 209,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 207,\n columnNumber: 15\n }, this) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4\",\n children: filteredSets.map((set)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"border rounded-lg hover:shadow-lg transition-shadow cursor-pointer\",\n onClick: ()=>{\n setSelectedSet(set.id);\n setActiveTab('all-cards');\n },\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"\".concat(set.color, \" text-white p-4 rounded-t-lg\"),\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h4\", {\n className: \"font-semibold text-lg\",\n children: set.name\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 228,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-sm opacity-90\",\n children: set.description\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 229,\n columnNumber: 23\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 227,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"p-4 bg-white rounded-b-lg\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex justify-between items-center text-sm text-gray-600\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n children: [\n set.cardCount,\n \" 張詞卡\"\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 233,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n children: [\n \"進度: \",\n set.progress,\n \"%\"\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 234,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 232,\n columnNumber: 23\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 231,\n columnNumber: 21\n }, this)\n ]\n }, set.id, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 219,\n columnNumber: 19\n }, this))\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 217,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 201,\n columnNumber: 11\n }, this),\n activeTab === 'all-cards' && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex justify-between items-center mb-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h3\", {\n className: \"text-lg font-semibold\",\n children: [\n \"共 \",\n filteredCards.length,\n \" 個詞卡\"\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 248,\n columnNumber: 15\n }, this),\n selectedSet && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>setSelectedSet(null),\n className: \"text-sm text-gray-600 hover:text-gray-900\",\n children: \"顯示所有詞卡\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 250,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 247,\n columnNumber: 13\n }, this),\n filteredCards.length === 0 ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-center py-12\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-gray-500 mb-4\",\n children: \"沒有找到詞卡\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 261,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_link__WEBPACK_IMPORTED_MODULE_2___default()), {\n href: \"/generate\",\n className: \"bg-primary text-white px-4 py-2 rounded-lg hover:bg-primary/90 transition-colors\",\n children: \"創建新詞卡\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 262,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 260,\n columnNumber: 15\n }, this) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-y-3\",\n children: filteredCards.map((card)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-white border rounded-lg p-4 hover:shadow-md transition-shadow\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center justify-between\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center space-x-4\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center space-x-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h4\", {\n className: \"font-semibold text-lg\",\n children: card.word || '未設定'\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 278,\n columnNumber: 31\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-sm text-gray-500\",\n children: card.partOfSpeech\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 279,\n columnNumber: 31\n }, this),\n card.pronunciation && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-sm text-blue-600\",\n children: card.pronunciation\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 281,\n columnNumber: 33\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 277,\n columnNumber: 29\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-gray-700 mt-1\",\n children: card.translation || '未設定'\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 284,\n columnNumber: 29\n }, this),\n card.example && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-sm text-gray-600 mt-2 italic\",\n children: [\n \"例句: \",\n card.example\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 286,\n columnNumber: 31\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center space-x-4 mt-2 text-xs text-gray-500\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n children: [\n \"卡組: \",\n card.cardSet.name\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 289,\n columnNumber: 31\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n children: [\n \"熟練度: \",\n card.masteryLevel,\n \"/5\"\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 290,\n columnNumber: 31\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n children: [\n \"複習: \",\n card.timesReviewed,\n \" 次\"\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 291,\n columnNumber: 31\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n children: [\n \"下次複習: \",\n new Date(card.nextReviewDate).toLocaleDateString()\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 292,\n columnNumber: 31\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 288,\n columnNumber: 29\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 276,\n columnNumber: 27\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 275,\n columnNumber: 25\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 274,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center space-x-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>handleEdit(card),\n className: \"text-blue-600 hover:text-blue-800 text-sm\",\n children: \"編輯\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 298,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>handleDelete(card),\n className: \"text-red-600 hover:text-red-800 text-sm\",\n children: \"刪除\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 304,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 297,\n columnNumber: 23\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 273,\n columnNumber: 21\n }, this)\n }, card.id, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 272,\n columnNumber: 19\n }, this))\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 270,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 246,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 180,\n columnNumber: 7\n }, this),\n showForm && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_FlashcardForm__WEBPACK_IMPORTED_MODULE_4__.FlashcardForm, {\n cardSets: cardSets,\n initialData: editingCard ? {\n id: editingCard.id,\n cardSetId: editingCard.cardSet ? ((_cardSets_find = cardSets.find((cs)=>cs.name === editingCard.cardSet.name)) === null || _cardSets_find === void 0 ? void 0 : _cardSets_find.id) || ((_cardSets_ = cardSets[0]) === null || _cardSets_ === void 0 ? void 0 : _cardSets_.id) : (_cardSets_1 = cardSets[0]) === null || _cardSets_1 === void 0 ? void 0 : _cardSets_1.id,\n english: editingCard.word,\n chinese: editingCard.translation,\n pronunciation: editingCard.pronunciation,\n partOfSpeech: editingCard.partOfSpeech,\n example: editingCard.example\n } : undefined,\n isEdit: !!editingCard,\n onSuccess: handleFormSuccess,\n onCancel: ()=>{\n setShowForm(false);\n setEditingCard(null);\n }\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 322,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 128,\n columnNumber: 5\n }, this);\n}\n_s(FlashcardsContent, \"oUDLR7NnDUw5gAKYX5V6Mc+Z6Uk=\");\n_c = FlashcardsContent;\nfunction FlashcardsPage() {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ProtectedRoute__WEBPACK_IMPORTED_MODULE_3__.ProtectedRoute, {\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(FlashcardsContent, {}, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 348,\n columnNumber: 7\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 347,\n columnNumber: 5\n }, this);\n}\n_c1 = FlashcardsPage;\nvar _c, _c1;\n$RefreshReg$(_c, \"FlashcardsContent\");\n$RefreshReg$(_c1, \"FlashcardsPage\");\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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL2FwcC9mbGFzaGNhcmRzL3BhZ2UudHN4IiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7O0FBRTJDO0FBQ2Y7QUFDZ0M7QUFFRjtBQUNpQztBQUUzRixTQUFTTTtRQTRUb0NDLGdCQUFpRUEsWUFBa0JBOztJQTNUOUgsTUFBTSxDQUFDQyxXQUFXQyxhQUFhLEdBQUdULCtDQUFRQSxDQUFDO0lBQzNDLE1BQU0sQ0FBQ1UsYUFBYUMsZUFBZSxHQUFHWCwrQ0FBUUEsQ0FBZ0I7SUFDOUQsTUFBTSxDQUFDWSxZQUFZQyxjQUFjLEdBQUdiLCtDQUFRQSxDQUFDO0lBRTdDLHFCQUFxQjtJQUNyQixNQUFNLENBQUNPLFVBQVVPLFlBQVksR0FBR2QsK0NBQVFBLENBQVksRUFBRTtJQUN0RCxNQUFNLENBQUNlLFlBQVlDLGNBQWMsR0FBR2hCLCtDQUFRQSxDQUFjLEVBQUU7SUFDNUQsTUFBTSxDQUFDaUIsU0FBU0MsV0FBVyxHQUFHbEIsK0NBQVFBLENBQUM7SUFDdkMsTUFBTSxDQUFDbUIsT0FBT0MsU0FBUyxHQUFHcEIsK0NBQVFBLENBQWdCO0lBRWxELGNBQWM7SUFDZCxNQUFNLENBQUNxQixVQUFVQyxZQUFZLEdBQUd0QiwrQ0FBUUEsQ0FBQztJQUN6QyxNQUFNLENBQUN1QixhQUFhQyxlQUFlLEdBQUd4QiwrQ0FBUUEsQ0FBbUI7SUFFakUscUJBQXFCO0lBQ3JCQyxnREFBU0E7dUNBQUM7WUFDUndCO1lBQ0FDO1FBQ0Y7c0NBQUcsRUFBRTtJQUVMLE1BQU1ELGVBQWU7UUFDbkIsSUFBSTtZQUNGLE1BQU1FLFNBQVMsTUFBTXRCLHVFQUFpQkEsQ0FBQ3VCLFdBQVc7WUFDbEQsSUFBSUQsT0FBT0UsT0FBTyxJQUFJRixPQUFPRyxJQUFJLEVBQUU7Z0JBQ2pDaEIsWUFBWWEsT0FBT0csSUFBSSxDQUFDQyxJQUFJO1lBQzlCLE9BQU87Z0JBQ0xYLFNBQVNPLE9BQU9SLEtBQUssSUFBSTtZQUMzQjtRQUNGLEVBQUUsT0FBT2EsS0FBSztZ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R0QsOERBQUNHOzREQUNDQyxTQUFTLElBQU1wQixhQUFhRDs0REFDNUJpQixXQUFVO3NFQUNYOzs7Ozs7Ozs7Ozs7Ozs7Ozs7dUNBbkNHakIsS0FBS0ssRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZQWlENUJyQiwwQkFDQyw4REFBQ2pCLG9FQUFhQTtnQkFDWkcsVUFBVUE7Z0JBQ1ZzRixhQUFhdEUsY0FBYztvQkFDekJtQixJQUFJbkIsWUFBWW1CLEVBQUU7b0JBQ2xCb0QsV0FBV3ZFLFlBQVlnRSxPQUFPLEdBQUdoRixFQUFBQSxpQkFBQUEsU0FBU3dGLElBQUksQ0FBQ0MsQ0FBQUEsS0FBTUEsR0FBR2pELElBQUksS0FBS3hCLFlBQVlnRSxPQUFPLENBQUN4QyxJQUFJLGVBQXhEeEMscUNBQUFBLGVBQTJEbUMsRUFBRSxPQUFJbkMsYUFBQUEsUUFBUSxDQUFDLEVBQUUsY0FBWEEsaUNBQUFBLFdBQWFtQyxFQUFFLEtBQUduQyxjQUFBQSxRQUFRLENBQUMsRUFBRSxjQUFYQSxrQ0FBQUEsWUFBYW1DLEVBQUU7b0JBQ25JdUQsU0FBUzFFLFlBQVlpQixJQUFJO29CQUN6QjBELFNBQVMzRSxZQUFZNkIsV0FBVztvQkFDaENpQyxlQUFlOUQsWUFBWThELGFBQWE7b0JBQ3hDRCxjQUFjN0QsWUFBWTZELFlBQVk7b0JBQ3RDRSxTQUFTL0QsWUFBWStELE9BQU87Z0JBQzlCLElBQUlwRDtnQkFDSmlFLFFBQVEsQ0FBQyxDQUFDNUU7Z0JBQ1Y2RSxXQUFXakU7Z0JBQ1hrRSxVQUFVO29CQUNSL0UsWUFBWTtvQkFDWkUsZUFBZTtnQkFDakI7Ozs7Ozs7Ozs7OztBQUtWO0dBN1VTbEI7S0FBQUE7QUErVU0sU0FBU2dHO0lBQ3RCLHFCQUNFLDhEQUFDbkcsc0VBQWNBO2tCQUNiLDRFQUFDRzs7Ozs7Ozs7OztBQUdQO01BTndCZ0ciLCJzb3VyY2VzIjpbIi9Vc2Vycy9qZXR0Y2hlbmcxMDE4L2NvZGUvZHJhbWFsaW5nLXZvY2FiLWxlYXJuaW5nL2Zyb250ZW5kL2FwcC9mbGFzaGNhcmRzL3BhZ2UudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2UgY2xpZW50J1xuXG5pbXBvcnQgeyB1c2VTdGF0ZSwgdXNlRWZmZWN0IH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgTGluayBmcm9tICduZXh0L2xpbmsnXG5pbXBvcnQgeyBQcm90ZWN0ZWRSb3V0ZSB9IGZyb20gJ0AvY29tcG9uZW50cy9Qcm90ZWN0ZWRSb3V0ZSdcbmltcG9ydCB7IE5hdmlnYXRpb24gfSBmcm9tICdAL2NvbXBvbmVudHMvTmF2aWdhdGlvbidcbmltcG9ydCB7IEZsYXNoY2FyZEZvcm0gfSBmcm9tICdAL2NvbXBvbmVudHMvRmxhc2hjYXJkRm9ybSdcbmltcG9ydCB7IGZsYXNoY2FyZHNTZXJ2aWNlLCB0eXBlIENhcmRTZXQsIHR5cGUgRmxhc2hjYXJkIH0gZnJvbSAnQC9saWIvc2VydmljZXMvZmxhc2hjYXJkcydcblxuZnVuY3Rpb24gRmxhc2hjYXJkc0NvbnRlbnQoKSB7XG4gIGNvbnN0IFthY3RpdmVUYWIsIHNldEFjdGl2ZVRhYl0gPSB1c2VTdGF0ZSgnbXktY2FyZHMnKVxuICBjb25zdCBbc2VsZWN0ZWRTZXQsIHNldFNlbGVjdGVkU2V0XSA9IHVzZVN0YXRlPHN0cmluZyB8IG51bGw+KG51bGwpXG4gIGNvbnN0IFtzZWFyY2hUZXJtLCBzZXRTZWFyY2hUZXJtXSA9IHVzZVN0YXRlKCcnKVxuXG4gIC8vIFJlYWwgZGF0YSBmcm9tIEFQSVxuICBjb25zdCBbY2FyZFNldHMsIHNldENhcmRTZXRzXSA9IHVzZVN0YXRlPENhcmRTZXRbXT4oW10pXG4gIGNvbnN0IFtmbGFzaGNhcmRzLCBzZXRGbGFzaGNhcmRzXSA9IHVzZVN0YXRlPEZsYXNoY2FyZFtdPihbXSlcbiAgY29uc3QgW2xvYWRpbmcsIHNldExvYWRpbmddID0gdXNlU3RhdGUodHJ1ZSlcbiAgY29uc3QgW2Vycm9yLCBzZXRFcnJvcl0gPSB1c2VTdGF0ZTxzdHJpbmcgfCBudWxsPihudWxsKVxuXG4gIC8vIEZvcm0gc3RhdGVzXG4gIGNvbnN0IFtzaG93Rm9ybSwgc2V0U2hvd0Zvcm1dID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtlZGl0aW5nQ2FyZCwgc2V0RWRpdGluZ0NhcmRdID0gdXNlU3RhdGU8Rmxhc2hjYXJkIHwgbnVsbD4obnVsbClcblxuICAvLyBMb2FkIGRhdGEgZnJvbSBBUElcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBsb2FkQ2FyZFNldHMoKVxuICAgIGxvYWRGbGFzaGNhcmRzKClcbiAgfSwgW10pXG5cbiAgY29uc3QgbG9hZENhcmRTZXRzID0gYXN5bmMgKCkgPT4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBmbGFzaGNhcmRzU2VydmljZS5nZXRDYXJkU2V0cygpXG4gICAgICBpZiAocmVzdWx0LnN1Y2Nlc3MgJiYgcmVzdWx0LmRhdGEpIHtcbiAgICAgICAgc2V0Q2FyZFNldHMocmVzdWx0LmRhdGEuc2V0cylcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNldEVycm9yKHJlc3VsdC5lcnJvciB8fCAnRmFpbGVkIHRvIGxvYWQgY2FyZCBzZXRzJylcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHNldEVycm9yKCdGYWlsZWQgdG8gbG9hZCBjYXJkIHNldHMnKVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGxvYWRGbGFzaGNhcmRzID0gYXN5bmMgKCkgPT4ge1xuICAgIHRyeSB7XG4gICAgICBzZXRMb2FkaW5nKHRydWUpXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBmbGFzaGNhcmRzU2VydmljZS5nZXRGbGFzaGNhcmRzKHNlbGVjdGVkU2V0IHx8IHVuZGVmaW5lZClcbiAgICAgIGlmIChyZXN1bHQuc3VjY2VzcyAmJiByZXN1bHQuZGF0YSkge1xuICAgICAgICBzZXRGbGFzaGNhcmRzKHJlc3VsdC5kYXRhLmZsYXNoY2FyZHMpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzZXRFcnJvcihyZXN1bHQuZXJyb3IgfHwgJ0ZhaWxlZCB0byBsb2FkIGZsYXNoY2FyZHMnKVxuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgc2V0RXJyb3IoJ0ZhaWxlZCB0byBsb2FkIGZsYXNoY2FyZHMnKVxuICAgIH0gZmluYWxseSB7XG4gICAgICBzZXRMb2FkaW5nKGZhbHNlKVxuICAgIH1cbiAgfVxuXG4gIC8vIFJlbG9hZCBmbGFzaGNhcmRzIHdoZW4gc2VsZWN0ZWRTZXQgY2hhbmdlc1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGxvYWRGbGFzaGNhcmRzKClcbiAgfSwgW3NlbGVjdGVkU2V0XSlcblxuICAvLyBIYW5kbGUgZm9ybSBvcGVyYXRpb25zXG4gIGNvbnN0IGhhbmRsZUZvcm1TdWNjZXNzID0gKCkgPT4ge1xuICAgIHNldFNob3dGb3JtKGZhbHNlKVxuICAgIHNldEVkaXRpbmdDYXJkKG51bGwpXG4gICAgbG9hZEZsYXNoY2FyZHMoKVxuICAgIGxvYWRDYXJkU2V0cygpXG4gIH1cblxuICBjb25zdCBoYW5kbGVFZGl0ID0gKGNhcmQ6IEZsYXNoY2FyZCkgPT4ge1xuICAgIHNldEVkaXRpbmdDYXJkKGNhcmQpXG4gICAgc2V0U2hvd0Zvcm0odHJ1ZSlcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZURlbGV0ZSA9IGFzeW5jIChjYXJkOiBGbGFzaGNhcmQpID0+IHtcbiAgICBpZiAoIWNvbmZpcm0oYOeiuuWumuimgeWIqumZpOipnuWNoeOAjCR7Y2FyZC53b3JkfeOAjeWXju+8n2ApKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZmxhc2hjYXJkc1NlcnZpY2UuZGVsZXRlRmxhc2hjYXJkKGNhcmQuaWQpXG4gICAgICBpZiAocmVzdWx0LnN1Y2Nlc3MpIHtcbiAgICAgICAgbG9hZEZsYXNoY2FyZHMoKVxuICAgICAgICBsb2FkQ2FyZFNldHMoKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYWxlcnQocmVzdWx0LmVycm9yIHx8ICfliKrpmaTlpLHmlZcnKVxuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgYWxlcnQoJ+WIqumZpOWkseaVl++8jOiri+mHjeippicpXG4gICAgfVxuICB9XG5cbiAgLy8gRmlsdGVyIGRhdGFcbiAgY29uc3QgZmlsdGVyZWRTZXRzID0gY2FyZFNldHMuZmlsdGVyKHNldCA9PlxuICAgIHNldC5uYW1lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc2VhcmNoVGVybS50b0xvd2VyQ2FzZSgpKSB8fFxuICAgIHNldC5kZXNjcmlwdGlvbi50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaFRlcm0udG9Mb3dlckNhc2UoKSlcbiAgKVxuXG4gIGNvbnN0IGZpbHRlcmVkQ2FyZHMgPSBmbGFzaGNhcmRzLmZpbHRlcihjYXJkID0+IHtcbiAgICBpZiAoc2VhcmNoVGVybSkge1xuICAgICAgcmV0dXJuIGNhcmQud29yZD8udG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhzZWFyY2hUZXJtLnRvTG93ZXJDYXNlKCkpIHx8XG4gICAgICAgICAgICAgY2FyZC50cmFuc2xhdGlvbj8udG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhzZWFyY2hUZXJtLnRvTG93ZXJDYXNlKCkpXG4gICAgfVxuICAgIHJldHVybiB0cnVlXG4gIH0pXG5cbiAgLy8gQWRkIGxvYWRpbmcgYW5kIGVycm9yIHN0YXRlc1xuICBpZiAobG9hZGluZykge1xuICAgIHJldHVybiAoXG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1pbi1oLXNjcmVlbiBiZy1ncmF5LTUwIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1sZ1wiPui8ieWFpeS4rS4uLjwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgKVxuICB9XG5cbiAgaWYgKGVycm9yKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwibWluLWgtc2NyZWVuIGJnLWdyYXktNTAgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LXJlZC02MDBcIj57ZXJyb3J9PC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICApXG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwibWluLWgtc2NyZWVuIGJnLWdyYXktNTBcIj5cbiAgICAgIHsvKiBIZWFkZXIgKi99XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImJnLXdoaXRlIGJvcmRlci1iIGJvcmRlci1ncmF5LTIwMFwiPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1heC13LTd4bCBteC1hdXRvIHB4LTQgc206cHgtNiBsZzpweC04XCI+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGp1c3RpZnktYmV0d2VlbiBpdGVtcy1jZW50ZXIgcHktNlwiPlxuICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgPGgxIGNsYXNzTmFtZT1cInRleHQtM3hsIGZvbnQtYm9sZCB0ZXh0LWdyYXktOTAwXCI+6Kme5Y2h566h55CGPC9oMT5cbiAgICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwibXQtMSB0ZXh0LXNtIHRleHQtZ3JheS01MDBcIj7nrqHnkIbkvaDnmoToqZ7ljaHpm4blkIg8L3A+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIgc3BhY2UteC00XCI+XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRTaG93Rm9ybSh0cnVlKX1cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJiZy1ncmVlbi02MDAgdGV4dC13aGl0ZSBweC00IHB5LTIgcm91bmRlZC1sZyBob3ZlcjpiZy1ncmVlbi03MDAgdHJhbnNpdGlvbi1jb2xvcnNcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAg5paw5aKe6Kme5Y2hXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8TGlua1xuICAgICAgICAgICAgICAgIGhyZWY9XCIvZ2VuZXJhdGVcIlxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImJnLXByaW1hcnkgdGV4dC13aGl0ZSBweC00IHB5LTIgcm91bmRlZC1sZyBob3ZlcjpiZy1wcmltYXJ5LzkwIHRyYW5zaXRpb24tY29sb3JzXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIEFJIOeUn+aIkOipnuWNoVxuICAgICAgICAgICAgICA8L0xpbms+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIHsvKiBUYWJzICovfVxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBzcGFjZS14LThcIj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gc2V0QWN0aXZlVGFiKCdteS1jYXJkcycpfVxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2BwYi00IHB4LTEgYm9yZGVyLWItMiBmb250LW1lZGl1bSB0ZXh0LXNtICR7XG4gICAgICAgICAgICAgICAgYWN0aXZlVGFiID09PSAnbXktY2FyZHMnXG4gICAgICAgICAgICAgICAgICA/ICdib3JkZXItcHJpbWFyeSB0ZXh0LXByaW1hcnknXG4gICAgICAgICAgICAgICAgICA6ICdib3JkZXItdHJhbnNwYXJlbnQgdGV4dC1ncmF5LTUwMCBob3Zlcjp0ZXh0LWdyYXktNzAwIGhvdmVyOmJvcmRlci1ncmF5LTMwMCdcbiAgICAgICAgICAgICAgfWB9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIOaIkeeahOWNoee1hCAoe2ZpbHRlcmVkU2V0cy5sZW5ndGh9KVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldEFjdGl2ZVRhYignYWxsLWNhcmRzJyl9XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17YHBiLTQgcHgtMSBib3JkZXItYi0yIGZvbnQtbWVkaXVtIHRleHQtc20gJHtcbiAgICAgICAgICAgICAgICBhY3RpdmVUYWIgPT09ICdhbGwtY2FyZHMnXG4gICAgICAgICAgICAgICAgICA/ICdib3JkZXItcHJpbWFyeSB0ZXh0LXByaW1hcnknXG4gICAgICAgICAgICAgICAgICA6ICdib3JkZXItdHJhbnNwYXJlbnQgdGV4dC1ncmF5LTUwMCBob3Zlcjp0ZXh0LWdyYXktNzAwIGhvdmVyOmJvcmRlci1ncmF5LTMwMCdcbiAgICAgICAgICAgICAgfWB9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIOaJgOacieipnuWNoSAoe2ZpbHRlcmVkQ2FyZHMubGVuZ3RofSlcbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICB7LyogQ29udGVudCAqL31cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwibWF4LXctN3hsIG14LWF1dG8gcHgtNCBzbTpweC02IGxnOnB4LTggcHktOFwiPlxuICAgICAgICB7LyogU2VhcmNoICovfVxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1iLTZcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInJlbGF0aXZlXCI+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICB2YWx1ZT17c2VhcmNoVGVybX1cbiAgICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiBzZXRTZWFyY2hUZXJtKGUudGFyZ2V0LnZhbHVlKX1cbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCLmkJzlsIvoqZ7ljaHmiJbljaHntYQuLi5cIlxuICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ3LWZ1bGwgcGwtMTAgcHItNCBweS0yIGJvcmRlciBib3JkZXItZ3JheS0zMDAgcm91bmRlZC1sZyBmb2N1czpyaW5nLTIgZm9jdXM6cmluZy1wcmltYXJ5IGZvY3VzOmJvcmRlci10cmFuc3BhcmVudFwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJhYnNvbHV0ZSBpbnNldC15LTAgbGVmdC0wIHBsLTMgZmxleCBpdGVtcy1jZW50ZXIgcG9pbnRlci1ldmVudHMtbm9uZVwiPlxuICAgICAgICAgICAgICA8c3ZnIGNsYXNzTmFtZT1cImgtNSB3LTUgdGV4dC1ncmF5LTQwMFwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiPlxuICAgICAgICAgICAgICAgIDxwYXRoIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZUxpbmVqb2luPVwicm91bmRcIiBzdHJva2VXaWR0aD17Mn0gZD1cIk0yMSAyMWwtNi02bTItNWE3IDcgMCAxMS0xNCAwIDcgNyAwIDAxMTQgMHpcIiAvPlxuICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICB7LyogQ2FyZCBTZXRzIFRhYiAqL31cbiAgICAgICAge2FjdGl2ZVRhYiA9PT0gJ215LWNhcmRzJyAmJiAoXG4gICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBqdXN0aWZ5LWJldHdlZW4gaXRlbXMtY2VudGVyIG1iLTRcIj5cbiAgICAgICAgICAgICAgPGgzIGNsYXNzTmFtZT1cInRleHQtbGcgZm9udC1zZW1pYm9sZFwiPuWFsSB7ZmlsdGVyZWRTZXRzLmxlbmd0aH0g5YCL5Y2h57WEPC9oMz5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICB7ZmlsdGVyZWRTZXRzLmxlbmd0aCA9PT0gMCA/IChcbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LWNlbnRlciBweS0xMlwiPlxuICAgICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQtZ3JheS01MDAgbWItNFwiPumChOaykuacieipnuWNoembhuWQiDwvcD5cbiAgICAgICAgICAgICAgICA8TGlua1xuICAgICAgICAgICAgICAgICAgaHJlZj1cIi9nZW5lcmF0ZVwiXG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJiZy1wcmltYXJ5IHRleHQtd2hpdGUgcHgtNCBweS0yIHJvdW5kZWQtbGcgaG92ZXI6YmctcHJpbWFyeS85MCB0cmFuc2l0aW9uLWNvbG9yc1wiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAg5Ym15bu656ys5LiA5YCL5Y2h57WEXG4gICAgICAgICAgICAgICAgPC9MaW5rPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZ3JpZCBncmlkLWNvbHMtMSBtZDpncmlkLWNvbHMtMiBsZzpncmlkLWNvbHMtMyBnYXAtNFwiPlxuICAgICAgICAgICAgICAgIHtmaWx0ZXJlZFNldHMubWFwKHNldCA9PiAoXG4gICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgIGtleT17c2V0LmlkfVxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJib3JkZXIgcm91bmRlZC1sZyBob3ZlcjpzaGFkb3ctbGcgdHJhbnNpdGlvbi1zaGFkb3cgY3Vyc29yLXBvaW50ZXJcIlxuICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgc2V0U2VsZWN0ZWRTZXQoc2V0LmlkKVxuICAgICAgICAgICAgICAgICAgICAgIHNldEFjdGl2ZVRhYignYWxsLWNhcmRzJylcbiAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2Ake3NldC5jb2xvcn0gdGV4dC13aGl0ZSBwLTQgcm91bmRlZC10LWxnYH0+XG4gICAgICAgICAgICAgICAgICAgICAgPGg0IGNsYXNzTmFtZT1cImZvbnQtc2VtaWJvbGQgdGV4dC1sZ1wiPntzZXQubmFtZX08L2g0PlxuICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQtc20gb3BhY2l0eS05MFwiPntzZXQuZGVzY3JpcHRpb259PC9wPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwLTQgYmctd2hpdGUgcm91bmRlZC1iLWxnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGp1c3RpZnktYmV0d2VlbiBpdGVtcy1jZW50ZXIgdGV4dC1zbSB0ZXh0LWdyYXktNjAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57c2V0LmNhcmRDb3VudH0g5by16Kme5Y2hPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+6YCy5bqmOiB7c2V0LnByb2dyZXNzfSU8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKX1cblxuICAgICAgICB7LyogQWxsIENhcmRzIFRhYiAqL31cbiAgICAgICAge2FjdGl2ZVRhYiA9PT0gJ2FsbC1jYXJkcycgJiYgKFxuICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXgganVzdGlmeS1iZXR3ZWVuIGl0ZW1zLWNlbnRlciBtYi00XCI+XG4gICAgICAgICAgICAgIDxoMyBjbGFzc05hbWU9XCJ0ZXh0LWxnIGZvbnQtc2VtaWJvbGRcIj7lhbEge2ZpbHRlcmVkQ2FyZHMubGVuZ3RofSDlgIvoqZ7ljaE8L2gzPlxuICAgICAgICAgICAgICB7c2VsZWN0ZWRTZXQgJiYgKFxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldFNlbGVjdGVkU2V0KG51bGwpfVxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidGV4dC1zbSB0ZXh0LWdyYXktNjAwIGhvdmVyOnRleHQtZ3JheS05MDBcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIOmhr+ekuuaJgOacieipnuWNoVxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIHtmaWx0ZXJlZENhcmRzLmxlbmd0aCA9PT0gMCA/IChcbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LWNlbnRlciBweS0xMlwiPlxuICAgICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQtZ3JheS01MDAgbWItNFwiPuaykuacieaJvuWIsOipnuWNoTwvcD5cbiAgICAgICAgICAgICAgICA8TGlua1xuICAgICAgICAgICAgICAgICAgaHJlZj1cIi9nZW5lcmF0ZVwiXG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJiZy1wcmltYXJ5IHRleHQtd2hpdGUgcHgtNCBweS0yIHJvdW5kZWQtbGcgaG92ZXI6YmctcHJpbWFyeS85MCB0cmFuc2l0aW9uLWNvbG9yc1wiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAg5Ym15bu65paw6Kme5Y2hXG4gICAgICAgICAgICAgICAgPC9MaW5rPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwic3BhY2UteS0zXCI+XG4gICAgICAgICAgICAgICAge2ZpbHRlcmVkQ2FyZHMubWFwKGNhcmQgPT4gKFxuICAgICAgICAgICAgICAgICAgPGRpdiBrZXk9e2NhcmQuaWR9IGNsYXNzTmFtZT1cImJnLXdoaXRlIGJvcmRlciByb3VuZGVkLWxnIHAtNCBob3ZlcjpzaGFkb3ctbWQgdHJhbnNpdGlvbi1zaGFkb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW5cIj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXgtMVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBzcGFjZS14LTRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4LTFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIHNwYWNlLXgtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0IGNsYXNzTmFtZT1cImZvbnQtc2VtaWJvbGQgdGV4dC1sZ1wiPntjYXJkLndvcmQgfHwgJ+acquioreWumid9PC9oND5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtc20gdGV4dC1ncmF5LTUwMFwiPntjYXJkLnBhcnRPZlNwZWVjaH08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y2FyZC5wcm9udW5jaWF0aW9uICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC1zbSB0ZXh0LWJsdWUtNjAwXCI+e2NhcmQucHJvbnVuY2lhdGlvbn08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQtZ3JheS03MDAgbXQtMVwiPntjYXJkLnRyYW5zbGF0aW9uIHx8ICfmnKroqK3lrponfTwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y2FyZC5leGFtcGxlICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQtc20gdGV4dC1ncmF5LTYwMCBtdC0yIGl0YWxpY1wiPuS+i+WPpToge2NhcmQuZXhhbXBsZX08L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIHNwYWNlLXgtNCBtdC0yIHRleHQteHMgdGV4dC1ncmF5LTUwMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+5Y2h57WEOiB7Y2FyZC5jYXJkU2V0Lm5hbWV9PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+54af57e05bqmOiB7Y2FyZC5tYXN0ZXJ5TGV2ZWx9LzU8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj7opIfnv5I6IHtjYXJkLnRpbWVzUmV2aWV3ZWR9IOasoTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPuS4i+asoeikh+e/kjoge25ldyBEYXRlKGNhcmQubmV4dFJldmlld0RhdGUpLnRvTG9jYWxlRGF0ZVN0cmluZygpfTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIHNwYWNlLXgtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBoYW5kbGVFZGl0KGNhcmQpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ0ZXh0LWJsdWUtNjAwIGhvdmVyOnRleHQtYmx1ZS04MDAgdGV4dC1zbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIOe3qOi8r1xuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IGhhbmRsZURlbGV0ZShjYXJkKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidGV4dC1yZWQtNjAwIGhvdmVyOnRleHQtcmVkLTgwMCB0ZXh0LXNtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAg5Yiq6ZmkXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICApfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICApfVxuICAgICAgPC9kaXY+XG5cbiAgICAgIHsvKiBGbGFzaGNhcmQgRm9ybSBNb2RhbCAqL31cbiAgICAgIHtzaG93Rm9ybSAmJiAoXG4gICAgICAgIDxGbGFzaGNhcmRGb3JtXG4gICAgICAgICAgY2FyZFNldHM9e2NhcmRTZXRzfVxuICAgICAgICAgIGluaXRpYWxEYXRhPXtlZGl0aW5nQ2FyZCA/IHtcbiAgICAgICAgICAgIGlkOiBlZGl0aW5nQ2FyZC5pZCxcbiAgICAgICAgICAgIGNhcmRTZXRJZDogZWRpdGluZ0NhcmQuY2FyZFNldCA/IGNhcmRTZXRzLmZpbmQoY3MgPT4gY3MubmFtZSA9PT0gZWRpdGluZ0NhcmQuY2FyZFNldC5uYW1lKT8uaWQgfHwgY2FyZFNldHNbMF0/LmlkIDogY2FyZFNldHNbMF0/LmlkLFxuICAgICAgICAgICAgZW5nbGlzaDogZWRpdGluZ0NhcmQud29yZCxcbiAgICAgICAgICAgIGNoaW5lc2U6IGVkaXRpbmdDYXJkLnRyYW5zbGF0aW9uLFxuICAgICAgICAgICAgcHJvbnVuY2lhdGlvbjogZWRpdGluZ0NhcmQucHJvbnVuY2lhdGlvbixcbiAgICAgICAgICAgIHBhcnRPZlNwZWVjaDogZWRpdGluZ0NhcmQucGFydE9mU3BlZWNoLFxuICAgICAgICAgICAgZXhhbXBsZTogZWRpdGluZ0NhcmQuZXhhbXBsZSxcbiAgICAgICAgICB9IDogdW5kZWZpbmVkfVxuICAgICAgICAgIGlzRWRpdD17ISFlZGl0aW5nQ2FyZH1cbiAgICAgICAgICBvblN1Y2Nlc3M9e2hhbmRsZUZvcm1TdWNjZXNzfVxuICAgICAgICAgIG9uQ2FuY2VsPXsoKSA9PiB7XG4gICAgICAgICAgICBzZXRTaG93Rm9ybShmYWxzZSlcbiAgICAgICAgICAgIHNldEVkaXRpbmdDYXJkKG51bGwpXG4gICAgICAgICAgfX1cbiAgICAgICAgLz5cbiAgICAgICl9XG4gICAgPC9kaXY+XG4gIClcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gRmxhc2hjYXJkc1BhZ2UoKSB7XG4gIHJldHVybiAoXG4gICAgPFByb3RlY3RlZFJvdXRlPlxuICAgICAgPEZsYXNoY2FyZHNDb250ZW50IC8+XG4gICAgPC9Qcm90ZWN0ZWRSb3V0ZT5cbiAgKVxufSJdLCJuYW1lcyI6WyJ1c2VTdGF0ZSIsInVzZUVmZmVjdCIsIkxpbmsiLCJQcm90ZWN0ZWRSb3V0ZSIsIkZsYXNoY2FyZEZvcm0iLCJmbGFzaGNhcmRzU2VydmljZSIsIkZsYXNoY2FyZHNDb250ZW50IiwiY2FyZFNldHMiLCJhY3RpdmVUYWIiLCJzZXRBY3RpdmVUYWIiLCJzZWxlY3RlZFNldCIsInNldFNlbGVjdGVkU2V0Iiwic2VhcmNoVGVybSIsInNldFNlYXJjaFRlcm0iLCJzZXRDYXJkU2V0cyIsImZsYXNoY2FyZHMiLCJzZXRGbGFzaGNhcmRzIiwibG9hZGluZyIsInNldExvYWRpbmciLCJlcnJvciIsInNldEVycm9yIiwic2hvd0Zvcm0iLCJzZXRTaG93Rm9ybSIsImVkaXRpbmdDYXJkIiwic2V0RWRpdGluZ0NhcmQiLCJsb2FkQ2FyZFNldHMiLCJsb2FkRmxhc2hjYXJkcyIsInJlc3VsdCIsImdldENhcmRTZXRzIiwic3VjY2VzcyIsImRhdGEiLCJzZXRzIiwiZXJyIiwiZ2V0Rmxhc2hjYXJkcyIsInVuZGVmaW5lZCIsImhhbmRsZUZvcm1TdWNjZXNzIiwiaGFuZGxlRWRpdCIsImNhcmQiLCJoYW5kbGVEZWxldGUiLCJjb25maXJtIiwid29yZCIsImRlbGV0ZUZsYXNoY2FyZCIsImlkIiwiYWxlcnQiLCJmaWx0ZXJlZFNldHMiLCJmaWx0ZXIiLCJzZXQiLCJuYW1lIiwidG9Mb3dlckNhc2UiLCJpbmNsdWRlcyIsImRlc2NyaXB0aW9uIiwiZmlsdGVyZWRDYXJkcyIsInRyYW5zbGF0aW9uIiwiZGl2IiwiY2xhc3NOYW1lIiwiaDEiLCJwIiwiYnV0dG9uIiwib25DbGljayIsImhyZWYiLCJsZW5ndGgiLCJpbnB1dCIsInR5cGUiLCJ2YWx1ZSIsIm9uQ2hhbmdlIiwiZSIsInRhcmdldCIsInBsYWNlaG9sZGVyIiwic3ZnIiwiZmlsbCIsInN0cm9rZSIsInZpZXdCb3giLCJwYXRoIiwic3Ryb2tlTGluZWNhcCIsInN0cm9rZUxpbmVqb2luIiwic3Ryb2tlV2lkdGgiLCJkIiwiaDMiLCJtYXAiLCJjb2xvciIsImg0Iiwic3BhbiIsImNhcmRDb3VudCIsInByb2dyZXNzIiwicGFydE9mU3BlZWNoIiwicHJvbnVuY2lhdGlvbiIsImV4YW1wbGUiLCJjYXJkU2V0IiwibWFzdGVyeUxldmVsIiwidGltZXNSZXZpZXdlZCIsIkRhdGUiLCJuZXh0UmV2aWV3RGF0ZSIsInRvTG9jYWxlRGF0ZVN0cmluZyIsImluaXRpYWxEYXRhIiwiY2FyZFNldElkIiwiZmluZCIsImNzIiwiZW5nbGlzaCIsImNoaW5lc2UiLCJpc0VkaXQiLCJvblN1Y2Nlc3MiLCJvbkNhbmNlbCIsIkZsYXNoY2FyZHNQYWdlIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./app/flashcards/page.tsx\n")); + +/***/ }) + +}); \ No newline at end of file diff --git a/frontend/.next/static/webpack/app/flashcards/page.94f087c16bddeb84.hot-update.js b/frontend/.next/static/webpack/app/flashcards/page.94f087c16bddeb84.hot-update.js new file mode 100644 index 0000000..643df22 --- /dev/null +++ b/frontend/.next/static/webpack/app/flashcards/page.94f087c16bddeb84.hot-update.js @@ -0,0 +1,32 @@ +"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/flashcards/page",{ + +/***/ "(app-pages-browser)/./app/flashcards/page.tsx": +/*!*********************************!*\ + !*** ./app/flashcards/page.tsx ***! + \*********************************/ +/***/ ((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 */ \"default\": () => (/* binding */ FlashcardsPage)\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 next_link__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! next/link */ \"(app-pages-browser)/./node_modules/next/dist/client/app-dir/link.js\");\n/* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(next_link__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _components_ProtectedRoute__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/components/ProtectedRoute */ \"(app-pages-browser)/./components/ProtectedRoute.tsx\");\n/* harmony import */ var _components_Navigation__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/components/Navigation */ \"(app-pages-browser)/./components/Navigation.tsx\");\n/* harmony import */ var _components_FlashcardForm__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/components/FlashcardForm */ \"(app-pages-browser)/./components/FlashcardForm.tsx\");\n/* harmony import */ var _lib_services_flashcards__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @/lib/services/flashcards */ \"(app-pages-browser)/./lib/services/flashcards.ts\");\n/* __next_internal_client_entry_do_not_use__ default auto */ \nvar _s = $RefreshSig$();\n\n\n\n\n\n\nfunction FlashcardsContent() {\n var _cardSets_find, _cardSets_, _cardSets_1;\n _s();\n const [activeTab, setActiveTab] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)('my-cards');\n const [selectedSet, setSelectedSet] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);\n const [searchTerm, setSearchTerm] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)('');\n // Real data from API\n const [cardSets, setCardSets] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)([]);\n const [flashcards, setFlashcards] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)([]);\n const [loading, setLoading] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(true);\n const [error, setError] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);\n // Form states\n const [showForm, setShowForm] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n const [editingCard, setEditingCard] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);\n // Load data from API\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)({\n \"FlashcardsContent.useEffect\": ()=>{\n loadCardSets();\n loadFlashcards();\n }\n }[\"FlashcardsContent.useEffect\"], []);\n const loadCardSets = async ()=>{\n try {\n const result = await _lib_services_flashcards__WEBPACK_IMPORTED_MODULE_6__.flashcardsService.getCardSets();\n if (result.success && result.data) {\n setCardSets(result.data.sets);\n } else {\n setError(result.error || 'Failed to load card sets');\n }\n } catch (err) {\n setError('Failed to load card sets');\n }\n };\n const loadFlashcards = async ()=>{\n try {\n setLoading(true);\n const result = await _lib_services_flashcards__WEBPACK_IMPORTED_MODULE_6__.flashcardsService.getFlashcards(selectedSet || undefined);\n if (result.success && result.data) {\n setFlashcards(result.data.flashcards);\n } else {\n setError(result.error || 'Failed to load flashcards');\n }\n } catch (err) {\n setError('Failed to load flashcards');\n } finally{\n setLoading(false);\n }\n };\n // Reload flashcards when selectedSet changes\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)({\n \"FlashcardsContent.useEffect\": ()=>{\n loadFlashcards();\n }\n }[\"FlashcardsContent.useEffect\"], [\n selectedSet\n ]);\n // Handle form operations\n const handleFormSuccess = ()=>{\n setShowForm(false);\n setEditingCard(null);\n loadFlashcards();\n loadCardSets();\n };\n const handleEdit = (card)=>{\n setEditingCard(card);\n setShowForm(true);\n };\n const handleDelete = async (card)=>{\n if (!confirm(\"確定要刪除詞卡「\".concat(card.word, \"」嗎?\"))) {\n return;\n }\n try {\n const result = await _lib_services_flashcards__WEBPACK_IMPORTED_MODULE_6__.flashcardsService.deleteFlashcard(card.id);\n if (result.success) {\n loadFlashcards();\n loadCardSets();\n } else {\n alert(result.error || '刪除失敗');\n }\n } catch (err) {\n alert('刪除失敗,請重試');\n }\n };\n // Filter data\n const filteredSets = cardSets.filter((set)=>set.name.toLowerCase().includes(searchTerm.toLowerCase()) || set.description.toLowerCase().includes(searchTerm.toLowerCase()));\n const filteredCards = flashcards.filter((card)=>{\n if (searchTerm) {\n var _card_word, _card_translation;\n return ((_card_word = card.word) === null || _card_word === void 0 ? void 0 : _card_word.toLowerCase().includes(searchTerm.toLowerCase())) || ((_card_translation = card.translation) === null || _card_translation === void 0 ? void 0 : _card_translation.toLowerCase().includes(searchTerm.toLowerCase()));\n }\n return true;\n });\n // Add loading and error states\n if (loading) {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"min-h-screen bg-gray-50 flex items-center justify-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-lg\",\n children: \"載入中...\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 114,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 113,\n columnNumber: 7\n }, this);\n }\n if (error) {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"min-h-screen bg-gray-50 flex items-center justify-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-red-600\",\n children: error\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 122,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 121,\n columnNumber: 7\n }, this);\n }\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"min-h-screen bg-gray-50\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_Navigation__WEBPACK_IMPORTED_MODULE_4__.Navigation, {}, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 130,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-white border-b border-gray-200\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"max-w-7xl mx-auto px-4 sm:px-6 lg:px-8\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex justify-between items-center py-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h1\", {\n className: \"text-3xl font-bold text-gray-900\",\n children: \"詞卡管理\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 137,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"mt-1 text-sm text-gray-500\",\n children: \"管理你的詞卡集合\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 138,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 136,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center space-x-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>setShowForm(true),\n className: \"bg-green-600 text-white px-4 py-2 rounded-lg hover:bg-green-700 transition-colors\",\n children: \"新增詞卡\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 141,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_link__WEBPACK_IMPORTED_MODULE_2___default()), {\n href: \"/generate\",\n className: \"bg-primary text-white px-4 py-2 rounded-lg hover:bg-primary/90 transition-colors\",\n children: \"AI 生成詞卡\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 147,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 140,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 135,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex space-x-8\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>setActiveTab('my-cards'),\n className: \"pb-4 px-1 border-b-2 font-medium text-sm \".concat(activeTab === 'my-cards' ? 'border-primary text-primary' : 'border-transparent text-gray-500 hover:text-gray-700 hover:border-gray-300'),\n children: [\n \"我的卡組 (\",\n filteredSets.length,\n \")\"\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 158,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>setActiveTab('all-cards'),\n className: \"pb-4 px-1 border-b-2 font-medium text-sm \".concat(activeTab === 'all-cards' ? 'border-primary text-primary' : 'border-transparent text-gray-500 hover:text-gray-700 hover:border-gray-300'),\n children: [\n \"所有詞卡 (\",\n filteredCards.length,\n \")\"\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 168,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 157,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 134,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 133,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-8\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mb-6\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"relative\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"text\",\n value: searchTerm,\n onChange: (e)=>setSearchTerm(e.target.value),\n placeholder: \"搜尋詞卡或卡組...\",\n className: \"w-full pl-10 pr-4 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-primary focus:border-transparent\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 187,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute inset-y-0 left-0 pl-3 flex items-center pointer-events-none\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n className: \"h-5 w-5 text-gray-400\",\n fill: \"none\",\n stroke: \"currentColor\",\n viewBox: \"0 0 24 24\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n d: \"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 196,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 195,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 194,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 186,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 185,\n columnNumber: 9\n }, this),\n activeTab === 'my-cards' && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex justify-between items-center mb-4\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h3\", {\n className: \"text-lg font-semibold\",\n children: [\n \"共 \",\n filteredSets.length,\n \" 個卡組\"\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 206,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 205,\n columnNumber: 13\n }, this),\n filteredSets.length === 0 ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-center py-12\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-gray-500 mb-4\",\n children: \"還沒有詞卡集合\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 211,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_link__WEBPACK_IMPORTED_MODULE_2___default()), {\n href: \"/generate\",\n className: \"bg-primary text-white px-4 py-2 rounded-lg hover:bg-primary/90 transition-colors\",\n children: \"創建第一個卡組\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 212,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 210,\n columnNumber: 15\n }, this) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4\",\n children: filteredSets.map((set)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"border rounded-lg hover:shadow-lg transition-shadow cursor-pointer\",\n onClick: ()=>{\n setSelectedSet(set.id);\n setActiveTab('all-cards');\n },\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"\".concat(set.color, \" text-white p-4 rounded-t-lg\"),\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h4\", {\n className: \"font-semibold text-lg\",\n children: set.name\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 231,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-sm opacity-90\",\n children: set.description\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 232,\n columnNumber: 23\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 230,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"p-4 bg-white rounded-b-lg\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex justify-between items-center text-sm text-gray-600\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n children: [\n set.cardCount,\n \" 張詞卡\"\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 236,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n children: [\n \"進度: \",\n set.progress,\n \"%\"\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 237,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 235,\n columnNumber: 23\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 234,\n columnNumber: 21\n }, this)\n ]\n }, set.id, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 222,\n columnNumber: 19\n }, this))\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 220,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 204,\n columnNumber: 11\n }, this),\n activeTab === 'all-cards' && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex justify-between items-center mb-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h3\", {\n className: \"text-lg font-semibold\",\n children: [\n \"共 \",\n filteredCards.length,\n \" 個詞卡\"\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 251,\n columnNumber: 15\n }, this),\n selectedSet && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>setSelectedSet(null),\n className: \"text-sm text-gray-600 hover:text-gray-900\",\n children: \"顯示所有詞卡\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 253,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 250,\n columnNumber: 13\n }, this),\n filteredCards.length === 0 ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-center py-12\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-gray-500 mb-4\",\n children: \"沒有找到詞卡\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 264,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_link__WEBPACK_IMPORTED_MODULE_2___default()), {\n href: \"/generate\",\n className: \"bg-primary text-white px-4 py-2 rounded-lg hover:bg-primary/90 transition-colors\",\n children: \"創建新詞卡\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 265,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 263,\n columnNumber: 15\n }, this) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-y-3\",\n children: filteredCards.map((card)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-white border rounded-lg p-4 hover:shadow-md transition-shadow\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center justify-between\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center space-x-4\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center space-x-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h4\", {\n className: \"font-semibold text-lg\",\n children: card.word || '未設定'\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 281,\n columnNumber: 31\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-sm text-gray-500\",\n children: card.partOfSpeech\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 282,\n columnNumber: 31\n }, this),\n card.pronunciation && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-sm text-blue-600\",\n children: card.pronunciation\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 284,\n columnNumber: 33\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 280,\n columnNumber: 29\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-gray-700 mt-1\",\n children: card.translation || '未設定'\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 287,\n columnNumber: 29\n }, this),\n card.example && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-sm text-gray-600 mt-2 italic\",\n children: [\n \"例句: \",\n card.example\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 289,\n columnNumber: 31\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center space-x-4 mt-2 text-xs text-gray-500\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n children: [\n \"卡組: \",\n card.cardSet.name\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 292,\n columnNumber: 31\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n children: [\n \"熟練度: \",\n card.masteryLevel,\n \"/5\"\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 293,\n columnNumber: 31\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n children: [\n \"複習: \",\n card.timesReviewed,\n \" 次\"\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 294,\n columnNumber: 31\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n children: [\n \"下次複習: \",\n new Date(card.nextReviewDate).toLocaleDateString()\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 295,\n columnNumber: 31\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 291,\n columnNumber: 29\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 279,\n columnNumber: 27\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 278,\n columnNumber: 25\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 277,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center space-x-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>handleEdit(card),\n className: \"text-blue-600 hover:text-blue-800 text-sm\",\n children: \"編輯\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 301,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>handleDelete(card),\n className: \"text-red-600 hover:text-red-800 text-sm\",\n children: \"刪除\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 307,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 300,\n columnNumber: 23\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 276,\n columnNumber: 21\n }, this)\n }, card.id, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 275,\n columnNumber: 19\n }, this))\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 273,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 249,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 183,\n columnNumber: 7\n }, this),\n showForm && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_FlashcardForm__WEBPACK_IMPORTED_MODULE_5__.FlashcardForm, {\n cardSets: cardSets,\n initialData: editingCard ? {\n id: editingCard.id,\n cardSetId: editingCard.cardSet ? ((_cardSets_find = cardSets.find((cs)=>cs.name === editingCard.cardSet.name)) === null || _cardSets_find === void 0 ? void 0 : _cardSets_find.id) || ((_cardSets_ = cardSets[0]) === null || _cardSets_ === void 0 ? void 0 : _cardSets_.id) : (_cardSets_1 = cardSets[0]) === null || _cardSets_1 === void 0 ? void 0 : _cardSets_1.id,\n english: editingCard.word,\n chinese: editingCard.translation,\n pronunciation: editingCard.pronunciation,\n partOfSpeech: editingCard.partOfSpeech,\n example: editingCard.example\n } : undefined,\n isEdit: !!editingCard,\n onSuccess: handleFormSuccess,\n onCancel: ()=>{\n setShowForm(false);\n setEditingCard(null);\n }\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 325,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 128,\n columnNumber: 5\n }, this);\n}\n_s(FlashcardsContent, \"oUDLR7NnDUw5gAKYX5V6Mc+Z6Uk=\");\n_c = FlashcardsContent;\nfunction FlashcardsPage() {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ProtectedRoute__WEBPACK_IMPORTED_MODULE_3__.ProtectedRoute, {\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(FlashcardsContent, {}, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 351,\n columnNumber: 7\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/flashcards/page.tsx\",\n lineNumber: 350,\n columnNumber: 5\n }, this);\n}\n_c1 = FlashcardsPage;\nvar _c, _c1;\n$RefreshReg$(_c, \"FlashcardsContent\");\n$RefreshReg$(_c1, \"FlashcardsPage\");\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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL2FwcC9mbGFzaGNhcmRzL3BhZ2UudHN4IiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztBQUUyQztBQUNmO0FBQ2dDO0FBQ1I7QUFDTTtBQUNpQztBQUUzRixTQUFTTztRQStUb0NDLGdCQUFpRUEsWUFBa0JBOztJQTlUOUgsTUFBTSxDQUFDQyxXQUFXQyxhQUFhLEdBQUdWLCtDQUFRQSxDQUFDO0lBQzNDLE1BQU0sQ0FBQ1csYUFBYUMsZUFBZSxHQUFHWiwrQ0FBUUEsQ0FBZ0I7SUFDOUQsTUFBTSxDQUFDYSxZQUFZQyxjQUFjLEdBQUdkLCtDQUFRQSxDQUFDO0lBRTdDLHFCQUFxQjtJQUNyQixNQUFNLENBQUNRLFVBQVVPLFlBQVksR0FBR2YsK0NBQVFBLENBQVksRUFBRTtJQUN0RCxNQUFNLENBQUNnQixZQUFZQyxjQUFjLEdBQUdqQiwrQ0FBUUEsQ0FBYyxFQUFFO0lBQzVELE1BQU0sQ0FBQ2tCLFNBQVNDLFdBQVcsR0FBR25CLCtDQUFRQSxDQUFDO0lBQ3ZDLE1BQU0sQ0FBQ29CLE9BQU9DLFNBQVMsR0FBR3JCLCtDQUFRQSxDQUFnQjtJQUVsRCxjQUFjO0lBQ2QsTUFBTSxDQUFDc0IsVUFBVUMsWUFBWSxHQUFHdkIsK0NBQVFBLENBQUM7SUFDekMsTUFBTSxDQUFDd0IsYUFBYUMsZUFBZSxHQUFHekIsK0NBQVFBLENBQW1CO0lBRWpFLHFCQUFxQjtJQUNyQkMsZ0RBQVNBO3VDQUFDO1lBQ1J5QjtZQUNBQztRQUNGO3NDQUFHLEVBQUU7SUFFTCxNQUFNRCxlQUFlO1FBQ25CLElBQUk7WUFDRixNQUFNRSxTQUFTLE1BQU10Qix1RUFBaUJBLENBQUN1QixXQUFXO1lBQ2xELElBQUlELE9BQU9FLE9BQU8sSUFBSUYsT0FBT0csSUFBSSxFQUFFO2dCQUNqQ2hCLFlBQVlhLE9BQU9HLElBQUksQ0FBQ0MsSUFBSTtZQUM5QixPQUFPO2dCQUNMWCxTQUFTTyxPQUFPUixLQUFLLElBQUk7WUFDM0I7UUFDRixFQUFFLE9BQU9h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QUFXQzs0REFDMUJpQixXQUFVO3NFQUNYOzs7Ozs7c0VBR0QsOERBQUNHOzREQUNDQyxTQUFTLElBQU1wQixhQUFhRDs0REFDNUJpQixXQUFVO3NFQUNYOzs7Ozs7Ozs7Ozs7Ozs7Ozs7dUNBbkNHakIsS0FBS0ssRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZQWlENUJyQiwwQkFDQyw4REFBQ2pCLG9FQUFhQTtnQkFDWkcsVUFBVUE7Z0JBQ1ZzRixhQUFhdEUsY0FBYztvQkFDekJtQixJQUFJbkIsWUFBWW1CLEVBQUU7b0JBQ2xCb0QsV0FBV3ZFLFlBQVlnRSxPQUFPLEdBQUdoRixFQUFBQSxpQkFBQUEsU0FBU3dGLElBQUksQ0FBQ0MsQ0FBQUEsS0FBTUEsR0FBR2pELElBQUksS0FBS3hCLFlBQVlnRSxPQUFPLENBQUN4QyxJQUFJLGVBQXhEeEMscUNBQUFBLGVBQTJEbUMsRUFBRSxPQUFJbkMsYUFBQUEsUUFBUSxDQUFDLEVBQUUsY0FBWEEsaUNBQUFBLFdBQWFtQyxFQUFFLEtBQUduQyxjQUFBQSxRQUFRLENBQUMsRUFBRSxjQUFYQSxrQ0FBQUEsWUFBYW1DLEVBQUU7b0JBQ25JdUQsU0FBUzFFLFlBQVlpQixJQUFJO29CQUN6QjBELFNBQVMzRSxZQUFZNkIsV0FBVztvQkFDaENpQyxlQUFlOUQsWUFBWThELGFBQWE7b0JBQ3hDRCxjQUFjN0QsWUFBWTZELFlBQVk7b0JBQ3RDRSxTQUFTL0QsWUFBWStELE9BQU87Z0JBQzlCLElBQUlwRDtnQkFDSmlFLFFBQVEsQ0FBQyxDQUFDNUU7Z0JBQ1Y2RSxXQUFXakU7Z0JBQ1hrRSxVQUFVO29CQUNSL0UsWUFBWTtvQkFDWkUsZUFBZTtnQkFDakI7Ozs7Ozs7Ozs7OztBQUtWO0dBaFZTbEI7S0FBQUE7QUFrVk0sU0FBU2dHO0lBQ3RCLHFCQUNFLDhEQUFDcEcsc0VBQWNBO2tCQUNiLDRFQUFDSTs7Ozs7Ozs7OztBQUdQO01BTndCZ0ciLCJzb3VyY2VzIjpbIi9Vc2Vycy9qZXR0Y2hlbmcxMDE4L2NvZGUvZHJhbWFsaW5nLXZvY2FiLWxlYXJuaW5nL2Zyb250ZW5kL2FwcC9mbGFzaGNhcmRzL3BhZ2UudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2UgY2xpZW50J1xuXG5pbXBvcnQgeyB1c2VTdGF0ZSwgdXNlRWZmZWN0IH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgTGluayBmcm9tICduZXh0L2xpbmsnXG5pbXBvcnQgeyBQcm90ZWN0ZWRSb3V0ZSB9IGZyb20gJ0AvY29tcG9uZW50cy9Qcm90ZWN0ZWRSb3V0ZSdcbmltcG9ydCB7IE5hdmlnYXRpb24gfSBmcm9tICdAL2NvbXBvbmVudHMvTmF2aWdhdGlvbidcbmltcG9ydCB7IEZsYXNoY2FyZEZvcm0gfSBmcm9tICdAL2NvbXBvbmVudHMvRmxhc2hjYXJkRm9ybSdcbmltcG9ydCB7IGZsYXNoY2FyZHNTZXJ2aWNlLCB0eXBlIENhcmRTZXQsIHR5cGUgRmxhc2hjYXJkIH0gZnJvbSAnQC9saWIvc2VydmljZXMvZmxhc2hjYXJkcydcblxuZnVuY3Rpb24gRmxhc2hjYXJkc0NvbnRlbnQoKSB7XG4gIGNvbnN0IFthY3RpdmVUYWIsIHNldEFjdGl2ZVRhYl0gPSB1c2VTdGF0ZSgnbXktY2FyZHMnKVxuICBjb25zdCBbc2VsZWN0ZWRTZXQsIHNldFNlbGVjdGVkU2V0XSA9IHVzZVN0YXRlPHN0cmluZyB8IG51bGw+KG51bGwpXG4gIGNvbnN0IFtzZWFyY2hUZXJtLCBzZXRTZWFyY2hUZXJtXSA9IHVzZVN0YXRlKCcnKVxuXG4gIC8vIFJlYWwgZGF0YSBmcm9tIEFQSVxuICBjb25zdCBbY2FyZFNldHMsIHNldENhcmRTZXRzXSA9IHVzZVN0YXRlPENhcmRTZXRbXT4oW10pXG4gIGNvbnN0IFtmbGFzaGNhcmRzLCBzZXRGbGFzaGNhcmRzXSA9IHVzZVN0YXRlPEZsYXNoY2FyZFtdPihbXSlcbiAgY29uc3QgW2xvYWRpbmcsIHNldExvYWRpbmddID0gdXNlU3RhdGUodHJ1ZSlcbiAgY29uc3QgW2Vycm9yLCBzZXRFcnJvcl0gPSB1c2VTdGF0ZTxzdHJpbmcgfCBudWxsPihudWxsKVxuXG4gIC8vIEZvcm0gc3RhdGVzXG4gIGNvbnN0IFtzaG93Rm9ybSwgc2V0U2hvd0Zvcm1dID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtlZGl0aW5nQ2FyZCwgc2V0RWRpdGluZ0NhcmRdID0gdXNlU3RhdGU8Rmxhc2hjYXJkIHwgbnVsbD4obnVsbClcblxuICAvLyBMb2FkIGRhdGEgZnJvbSBBUElcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBsb2FkQ2FyZFNldHMoKVxuICAgIGxvYWRGbGFzaGNhcmRzKClcbiAgfSwgW10pXG5cbiAgY29uc3QgbG9hZENhcmRTZXRzID0gYXN5bmMgKCkgPT4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBmbGFzaGNhcmRzU2VydmljZS5nZXRDYXJkU2V0cygpXG4gICAgICBpZiAocmVzdWx0LnN1Y2Nlc3MgJiYgcmVzdWx0LmRhdGEpIHtcbiAgICAgICAgc2V0Q2FyZFNldHMocmVzdWx0LmRhdGEuc2V0cylcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNldEVycm9yKHJlc3VsdC5lcnJvciB8fCAnRmFpbGVkIHRvIGxvYWQgY2FyZCBzZXRzJylcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHNldEVycm9yKCdGYWlsZWQgdG8gbG9hZCBjYXJkIHNldHMnKVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGxvYWRGbGFzaGNhcmRzID0gYXN5bmMgKCkgPT4ge1xuICAgIHRyeSB7XG4gICAgICBzZXRMb2FkaW5nKHRydWUpXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBmbGFzaGNhcmRzU2VydmljZS5nZXRGbGFzaGNhcmRzKHNlbGVjdGVkU2V0IHx8IHVuZGVmaW5lZClcbiAgICAgIGlmIChyZXN1bHQuc3VjY2VzcyAmJiByZXN1bHQuZGF0YSkge1xuICAgICAgICBzZXRGbGFzaGNhcmRzKHJlc3VsdC5kYXRhLmZsYXNoY2FyZHMpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzZXRFcnJvcihyZXN1bHQuZXJyb3IgfHwgJ0ZhaWxlZCB0byBsb2FkIGZsYXNoY2FyZHMnKVxuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgc2V0RXJyb3IoJ0ZhaWxlZCB0byBsb2FkIGZsYXNoY2FyZHMnKVxuICAgIH0gZmluYWxseSB7XG4gICAgICBzZXRMb2FkaW5nKGZhbHNlKVxuICAgIH1cbiAgfVxuXG4gIC8vIFJlbG9hZCBmbGFzaGNhcmRzIHdoZW4gc2VsZWN0ZWRTZXQgY2hhbmdlc1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGxvYWRGbGFzaGNhcmRzKClcbiAgfSwgW3NlbGVjdGVkU2V0XSlcblxuICAvLyBIYW5kbGUgZm9ybSBvcGVyYXRpb25zXG4gIGNvbnN0IGhhbmRsZUZvcm1TdWNjZXNzID0gKCkgPT4ge1xuICAgIHNldFNob3dGb3JtKGZhbHNlKVxuICAgIHNldEVkaXRpbmdDYXJkKG51bGwpXG4gICAgbG9hZEZsYXNoY2FyZHMoKVxuICAgIGxvYWRDYXJkU2V0cygpXG4gIH1cblxuICBjb25zdCBoYW5kbGVFZGl0ID0gKGNhcmQ6IEZsYXNoY2FyZCkgPT4ge1xuICAgIHNldEVkaXRpbmdDYXJkKGNhcmQpXG4gICAgc2V0U2hvd0Zvcm0odHJ1ZSlcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZURlbGV0ZSA9IGFzeW5jIChjYXJkOiBGbGFzaGNhcmQpID0+IHtcbiAgICBpZiAoIWNvbmZpcm0oYOeiuuWumuimgeWIqumZpOipnuWNoeOAjCR7Y2FyZC53b3JkfeOAjeWXju+8n2ApKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZmxhc2hjYXJkc1NlcnZpY2UuZGVsZXRlRmxhc2hjYXJkKGNhcmQuaWQpXG4gICAgICBpZiAocmVzdWx0LnN1Y2Nlc3MpIHtcbiAgICAgICAgbG9hZEZsYXNoY2FyZHMoKVxuICAgICAgICBsb2FkQ2FyZFNldHMoKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYWxlcnQocmVzdWx0LmVycm9yIHx8ICfliKrpmaTlpLHmlZcnKVxuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgYWxlcnQoJ+WIqumZpOWkseaVl++8jOiri+mHjeippicpXG4gICAgfVxuICB9XG5cbiAgLy8gRmlsdGVyIGRhdGFcbiAgY29uc3QgZmlsdGVyZWRTZXRzID0gY2FyZFNldHMuZmlsdGVyKHNldCA9PlxuICAgIHNldC5uYW1lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc2VhcmNoVGVybS50b0xvd2VyQ2FzZSgpKSB8fFxuICAgIHNldC5kZXNjcmlwdGlvbi50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaFRlcm0udG9Mb3dlckNhc2UoKSlcbiAgKVxuXG4gIGNvbnN0IGZpbHRlcmVkQ2FyZHMgPSBmbGFzaGNhcmRzLmZpbHRlcihjYXJkID0+IHtcbiAgICBpZiAoc2VhcmNoVGVybSkge1xuICAgICAgcmV0dXJuIGNhcmQud29yZD8udG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhzZWFyY2hUZXJtLnRvTG93ZXJDYXNlKCkpIHx8XG4gICAgICAgICAgICAgY2FyZC50cmFuc2xhdGlvbj8udG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhzZWFyY2hUZXJtLnRvTG93ZXJDYXNlKCkpXG4gICAgfVxuICAgIHJldHVybiB0cnVlXG4gIH0pXG5cbiAgLy8gQWRkIGxvYWRpbmcgYW5kIGVycm9yIHN0YXRlc1xuICBpZiAobG9hZGluZykge1xuICAgIHJldHVybiAoXG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1pbi1oLXNjcmVlbiBiZy1ncmF5LTUwIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1sZ1wiPui8ieWFpeS4rS4uLjwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgKVxuICB9XG5cbiAgaWYgKGVycm9yKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwibWluLWgtc2NyZWVuIGJnLWdyYXktNTAgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LXJlZC02MDBcIj57ZXJyb3J9PC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICApXG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwibWluLWgtc2NyZWVuIGJnLWdyYXktNTBcIj5cbiAgICAgIHsvKiBOYXZpZ2F0aW9uICovfVxuICAgICAgPE5hdmlnYXRpb24gLz5cblxuICAgICAgey8qIFBhZ2UgSGVhZGVyICovfVxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJiZy13aGl0ZSBib3JkZXItYiBib3JkZXItZ3JheS0yMDBcIj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtYXgtdy03eGwgbXgtYXV0byBweC00IHNtOnB4LTYgbGc6cHgtOFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBqdXN0aWZ5LWJldHdlZW4gaXRlbXMtY2VudGVyIHB5LTZcIj5cbiAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgIDxoMSBjbGFzc05hbWU9XCJ0ZXh0LTN4bCBmb250LWJvbGQgdGV4dC1ncmF5LTkwMFwiPuipnuWNoeeuoeeQhjwvaDE+XG4gICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cIm10LTEgdGV4dC1zbSB0ZXh0LWdyYXktNTAwXCI+566h55CG5L2g55qE6Kme5Y2h6ZuG5ZCIPC9wPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIHNwYWNlLXgtNFwiPlxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gc2V0U2hvd0Zvcm0odHJ1ZSl9XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiYmctZ3JlZW4tNjAwIHRleHQtd2hpdGUgcHgtNCBweS0yIHJvdW5kZWQtbGcgaG92ZXI6YmctZ3JlZW4tNzAwIHRyYW5zaXRpb24tY29sb3JzXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIOaWsOWinuipnuWNoVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPExpbmtcbiAgICAgICAgICAgICAgICBocmVmPVwiL2dlbmVyYXRlXCJcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJiZy1wcmltYXJ5IHRleHQtd2hpdGUgcHgtNCBweS0yIHJvdW5kZWQtbGcgaG92ZXI6YmctcHJpbWFyeS85MCB0cmFuc2l0aW9uLWNvbG9yc1wiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBBSSDnlJ/miJDoqZ7ljaFcbiAgICAgICAgICAgICAgPC9MaW5rPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICB7LyogVGFicyAqL31cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggc3BhY2UteC04XCI+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldEFjdGl2ZVRhYignbXktY2FyZHMnKX1cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgcGItNCBweC0xIGJvcmRlci1iLTIgZm9udC1tZWRpdW0gdGV4dC1zbSAke1xuICAgICAgICAgICAgICAgIGFjdGl2ZVRhYiA9PT0gJ215LWNhcmRzJ1xuICAgICAgICAgICAgICAgICAgPyAnYm9yZGVyLXByaW1hcnkgdGV4dC1wcmltYXJ5J1xuICAgICAgICAgICAgICAgICAgOiAnYm9yZGVyLXRyYW5zcGFyZW50IHRleHQtZ3JheS01MDAgaG92ZXI6dGV4dC1ncmF5LTcwMCBob3Zlcjpib3JkZXItZ3JheS0zMDAnXG4gICAgICAgICAgICAgIH1gfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICDmiJHnmoTljaHntYQgKHtmaWx0ZXJlZFNldHMubGVuZ3RofSlcbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRBY3RpdmVUYWIoJ2FsbC1jYXJkcycpfVxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2BwYi00IHB4LTEgYm9yZGVyLWItMiBmb250LW1lZGl1bSB0ZXh0LXNtICR7XG4gICAgICAgICAgICAgICAgYWN0aXZlVGFiID09PSAnYWxsLWNhcmRzJ1xuICAgICAgICAgICAgICAgICAgPyAnYm9yZGVyLXByaW1hcnkgdGV4dC1wcmltYXJ5J1xuICAgICAgICAgICAgICAgICAgOiAnYm9yZGVyLXRyYW5zcGFyZW50IHRleHQtZ3JheS01MDAgaG92ZXI6dGV4dC1ncmF5LTcwMCBob3Zlcjpib3JkZXItZ3JheS0zMDAnXG4gICAgICAgICAgICAgIH1gfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICDmiYDmnInoqZ7ljaEgKHtmaWx0ZXJlZENhcmRzLmxlbmd0aH0pXG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgey8qIENvbnRlbnQgKi99XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1heC13LTd4bCBteC1hdXRvIHB4LTQgc206cHgtNiBsZzpweC04IHB5LThcIj5cbiAgICAgICAgey8qIFNlYXJjaCAqL31cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtYi02XCI+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyZWxhdGl2ZVwiPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgdmFsdWU9e3NlYXJjaFRlcm19XG4gICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gc2V0U2VhcmNoVGVybShlLnRhcmdldC52YWx1ZSl9XG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwi5pCc5bCL6Kme5Y2h5oiW5Y2h57WELi4uXCJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidy1mdWxsIHBsLTEwIHByLTQgcHktMiBib3JkZXIgYm9yZGVyLWdyYXktMzAwIHJvdW5kZWQtbGcgZm9jdXM6cmluZy0yIGZvY3VzOnJpbmctcHJpbWFyeSBmb2N1czpib3JkZXItdHJhbnNwYXJlbnRcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYWJzb2x1dGUgaW5zZXQteS0wIGxlZnQtMCBwbC0zIGZsZXggaXRlbXMtY2VudGVyIHBvaW50ZXItZXZlbnRzLW5vbmVcIj5cbiAgICAgICAgICAgICAgPHN2ZyBjbGFzc05hbWU9XCJoLTUgdy01IHRleHQtZ3JheS00MDBcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIj5cbiAgICAgICAgICAgICAgICA8cGF0aCBzdHJva2VMaW5lY2FwPVwicm91bmRcIiBzdHJva2VMaW5lam9pbj1cInJvdW5kXCIgc3Ryb2tlV2lkdGg9ezJ9IGQ9XCJNMjEgMjFsLTYtNm0yLTVhNyA3IDAgMTEtMTQgMCA3IDcgMCAwMTE0IDB6XCIgLz5cbiAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgey8qIENhcmQgU2V0cyBUYWIgKi99XG4gICAgICAgIHthY3RpdmVUYWIgPT09ICdteS1jYXJkcycgJiYgKFxuICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXgganVzdGlmeS1iZXR3ZWVuIGl0ZW1zLWNlbnRlciBtYi00XCI+XG4gICAgICAgICAgICAgIDxoMyBjbGFzc05hbWU9XCJ0ZXh0LWxnIGZvbnQtc2VtaWJvbGRcIj7lhbEge2ZpbHRlcmVkU2V0cy5sZW5ndGh9IOWAi+WNoee1hDwvaDM+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAge2ZpbHRlcmVkU2V0cy5sZW5ndGggPT09IDAgPyAoXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1jZW50ZXIgcHktMTJcIj5cbiAgICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJ0ZXh0LWdyYXktNTAwIG1iLTRcIj7pgoTmspLmnInoqZ7ljaHpm4blkIg8L3A+XG4gICAgICAgICAgICAgICAgPExpbmtcbiAgICAgICAgICAgICAgICAgIGhyZWY9XCIvZ2VuZXJhdGVcIlxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiYmctcHJpbWFyeSB0ZXh0LXdoaXRlIHB4LTQgcHktMiByb3VuZGVkLWxnIGhvdmVyOmJnLXByaW1hcnkvOTAgdHJhbnNpdGlvbi1jb2xvcnNcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIOWJteW7uuesrOS4gOWAi+WNoee1hFxuICAgICAgICAgICAgICAgIDwvTGluaz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImdyaWQgZ3JpZC1jb2xzLTEgbWQ6Z3JpZC1jb2xzLTIgbGc6Z3JpZC1jb2xzLTMgZ2FwLTRcIj5cbiAgICAgICAgICAgICAgICB7ZmlsdGVyZWRTZXRzLm1hcChzZXQgPT4gKFxuICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICBrZXk9e3NldC5pZH1cbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiYm9yZGVyIHJvdW5kZWQtbGcgaG92ZXI6c2hhZG93LWxnIHRyYW5zaXRpb24tc2hhZG93IGN1cnNvci1wb2ludGVyXCJcbiAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgIHNldFNlbGVjdGVkU2V0KHNldC5pZClcbiAgICAgICAgICAgICAgICAgICAgICBzZXRBY3RpdmVUYWIoJ2FsbC1jYXJkcycpXG4gICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtgJHtzZXQuY29sb3J9IHRleHQtd2hpdGUgcC00IHJvdW5kZWQtdC1sZ2B9PlxuICAgICAgICAgICAgICAgICAgICAgIDxoNCBjbGFzc05hbWU9XCJmb250LXNlbWlib2xkIHRleHQtbGdcIj57c2V0Lm5hbWV9PC9oND5cbiAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJ0ZXh0LXNtIG9wYWNpdHktOTBcIj57c2V0LmRlc2NyaXB0aW9ufTwvcD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicC00IGJnLXdoaXRlIHJvdW5kZWQtYi1sZ1wiPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBqdXN0aWZ5LWJldHdlZW4gaXRlbXMtY2VudGVyIHRleHQtc20gdGV4dC1ncmF5LTYwMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3NldC5jYXJkQ291bnR9IOW8teipnuWNoTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPumAsuW6pjoge3NldC5wcm9ncmVzc30lPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICl9XG5cbiAgICAgICAgey8qIEFsbCBDYXJkcyBUYWIgKi99XG4gICAgICAgIHthY3RpdmVUYWIgPT09ICdhbGwtY2FyZHMnICYmIChcbiAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGp1c3RpZnktYmV0d2VlbiBpdGVtcy1jZW50ZXIgbWItNFwiPlxuICAgICAgICAgICAgICA8aDMgY2xhc3NOYW1lPVwidGV4dC1sZyBmb250LXNlbWlib2xkXCI+5YWxIHtmaWx0ZXJlZENhcmRzLmxlbmd0aH0g5YCL6Kme5Y2hPC9oMz5cbiAgICAgICAgICAgICAge3NlbGVjdGVkU2V0ICYmIChcbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRTZWxlY3RlZFNldChudWxsKX1cbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInRleHQtc20gdGV4dC1ncmF5LTYwMCBob3Zlcjp0ZXh0LWdyYXktOTAwXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICDpoa/npLrmiYDmnInoqZ7ljaFcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICB7ZmlsdGVyZWRDYXJkcy5sZW5ndGggPT09IDAgPyAoXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1jZW50ZXIgcHktMTJcIj5cbiAgICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJ0ZXh0LWdyYXktNTAwIG1iLTRcIj7mspLmnInmib7liLDoqZ7ljaE8L3A+XG4gICAgICAgICAgICAgICAgPExpbmtcbiAgICAgICAgICAgICAgICAgIGhyZWY9XCIvZ2VuZXJhdGVcIlxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiYmctcHJpbWFyeSB0ZXh0LXdoaXRlIHB4LTQgcHktMiByb3VuZGVkLWxnIGhvdmVyOmJnLXByaW1hcnkvOTAgdHJhbnNpdGlvbi1jb2xvcnNcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIOWJteW7uuaWsOipnuWNoVxuICAgICAgICAgICAgICAgIDwvTGluaz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInNwYWNlLXktM1wiPlxuICAgICAgICAgICAgICAgIHtmaWx0ZXJlZENhcmRzLm1hcChjYXJkID0+IChcbiAgICAgICAgICAgICAgICAgIDxkaXYga2V5PXtjYXJkLmlkfSBjbGFzc05hbWU9XCJiZy13aGl0ZSBib3JkZXIgcm91bmRlZC1sZyBwLTQgaG92ZXI6c2hhZG93LW1kIHRyYW5zaXRpb24tc2hhZG93XCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4LTFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIgc3BhY2UteC00XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleC0xXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBzcGFjZS14LTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoNCBjbGFzc05hbWU9XCJmb250LXNlbWlib2xkIHRleHQtbGdcIj57Y2FyZC53b3JkIHx8ICfmnKroqK3lrponfTwvaDQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LXNtIHRleHQtZ3JheS01MDBcIj57Y2FyZC5wYXJ0T2ZTcGVlY2h9PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2NhcmQucHJvbnVuY2lhdGlvbiAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtc20gdGV4dC1ibHVlLTYwMFwiPntjYXJkLnByb251bmNpYXRpb259PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJ0ZXh0LWdyYXktNzAwIG10LTFcIj57Y2FyZC50cmFuc2xhdGlvbiB8fCAn5pyq6Kit5a6aJ308L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2NhcmQuZXhhbXBsZSAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJ0ZXh0LXNtIHRleHQtZ3JheS02MDAgbXQtMiBpdGFsaWNcIj7kvovlj6U6IHtjYXJkLmV4YW1wbGV9PC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBzcGFjZS14LTQgbXQtMiB0ZXh0LXhzIHRleHQtZ3JheS01MDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPuWNoee1hDoge2NhcmQuY2FyZFNldC5uYW1lfTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPueGn+e3tOW6pjoge2NhcmQubWFzdGVyeUxldmVsfS81PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+6KSH57+SOiB7Y2FyZC50aW1lc1Jldmlld2VkfSDmrKE8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj7kuIvmrKHopIfnv5I6IHtuZXcgRGF0ZShjYXJkLm5leHRSZXZpZXdEYXRlKS50b0xvY2FsZURhdGVTdHJpbmcoKX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBzcGFjZS14LTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gaGFuZGxlRWRpdChjYXJkKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidGV4dC1ibHVlLTYwMCBob3Zlcjp0ZXh0LWJsdWUtODAwIHRleHQtc21cIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICDnt6jovK9cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBoYW5kbGVEZWxldGUoY2FyZCl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInRleHQtcmVkLTYwMCBob3Zlcjp0ZXh0LXJlZC04MDAgdGV4dC1zbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIOWIqumZpFxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKX1cbiAgICAgIDwvZGl2PlxuXG4gICAgICB7LyogRmxhc2hjYXJkIEZvcm0gTW9kYWwgKi99XG4gICAgICB7c2hvd0Zvcm0gJiYgKFxuICAgICAgICA8Rmxhc2hjYXJkRm9ybVxuICAgICAgICAgIGNhcmRTZXRzPXtjYXJkU2V0c31cbiAgICAgICAgICBpbml0aWFsRGF0YT17ZWRpdGluZ0NhcmQgPyB7XG4gICAgICAgICAgICBpZDogZWRpdGluZ0NhcmQuaWQsXG4gICAgICAgICAgICBjYXJkU2V0SWQ6IGVkaXRpbmdDYXJkLmNhcmRTZXQgPyBjYXJkU2V0cy5maW5kKGNzID0+IGNzLm5hbWUgPT09IGVkaXRpbmdDYXJkLmNhcmRTZXQubmFtZSk/LmlkIHx8IGNhcmRTZXRzWzBdPy5pZCA6IGNhcmRTZXRzWzBdPy5pZCxcbiAgICAgICAgICAgIGVuZ2xpc2g6IGVkaXRpbmdDYXJkLndvcmQsXG4gICAgICAgICAgICBjaGluZXNlOiBlZGl0aW5nQ2FyZC50cmFuc2xhdGlvbixcbiAgICAgICAgICAgIHByb251bmNpYXRpb246IGVkaXRpbmdDYXJkLnByb251bmNpYXRpb24sXG4gICAgICAgICAgICBwYXJ0T2ZTcGVlY2g6IGVkaXRpbmdDYXJkLnBhcnRPZlNwZWVjaCxcbiAgICAgICAgICAgIGV4YW1wbGU6IGVkaXRpbmdDYXJkLmV4YW1wbGUsXG4gICAgICAgICAgfSA6IHVuZGVmaW5lZH1cbiAgICAgICAgICBpc0VkaXQ9eyEhZWRpdGluZ0NhcmR9XG4gICAgICAgICAgb25TdWNjZXNzPXtoYW5kbGVGb3JtU3VjY2Vzc31cbiAgICAgICAgICBvbkNhbmNlbD17KCkgPT4ge1xuICAgICAgICAgICAgc2V0U2hvd0Zvcm0oZmFsc2UpXG4gICAgICAgICAgICBzZXRFZGl0aW5nQ2FyZChudWxsKVxuICAgICAgICAgIH19XG4gICAgICAgIC8+XG4gICAgICApfVxuICAgIDwvZGl2PlxuICApXG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEZsYXNoY2FyZHNQYWdlKCkge1xuICByZXR1cm4gKFxuICAgIDxQcm90ZWN0ZWRSb3V0ZT5cbiAgICAgIDxGbGFzaGNhcmRzQ29udGVudCAvPlxuICAgIDwvUHJvdGVjdGVkUm91dGU+XG4gIClcbn0iXSwibmFtZXMiOlsidXNlU3RhdGUiLCJ1c2VFZmZlY3QiLCJMaW5rIiwiUHJvdGVjdGVkUm91dGUiLCJOYXZpZ2F0aW9uIiwiRmxhc2hjYXJkRm9ybSIsImZsYXNoY2FyZHNTZXJ2aWNlIiwiRmxhc2hjYXJkc0NvbnRlbnQiLCJjYXJkU2V0cyIsImFjdGl2ZVRhYiIsInNldEFjdGl2ZVRhYiIsInNlbGVjdGVkU2V0Iiwic2V0U2VsZWN0ZWRTZXQiLCJzZWFyY2hUZXJtIiwic2V0U2VhcmNoVGVybSIsInNldENhcmRTZXRzIiwiZmxhc2hjYXJkcyIsInNldEZsYXNoY2FyZHMiLCJsb2FkaW5nIiwic2V0TG9hZGluZyIsImVycm9yIiwic2V0RXJyb3IiLCJzaG93Rm9ybSIsInNldFNob3dGb3JtIiwiZWRpdGluZ0NhcmQiLCJzZXRFZGl0aW5nQ2FyZCIsImxvYWRDYXJkU2V0cyIsImxvYWRGbGFzaGNhcmRzIiwicmVzdWx0IiwiZ2V0Q2FyZFNldHMiLCJzdWNjZXNzIiwiZGF0YSIsInNldHMiLCJlcnIiLCJnZXRGbGFzaGNhcmRzIiwidW5kZWZpbmVkIiwiaGFuZGxlRm9ybVN1Y2Nlc3MiLCJoYW5kbGVFZGl0IiwiY2FyZCIsImhhbmRsZURlbGV0ZSIsImNvbmZpcm0iLCJ3b3JkIiwiZGVsZXRlRmxhc2hjYXJkIiwiaWQiLCJhbGVydCIsImZpbHRlcmVkU2V0cyIsImZpbHRlciIsInNldCIsIm5hbWUiLCJ0b0xvd2VyQ2FzZSIsImluY2x1ZGVzIiwiZGVzY3JpcHRpb24iLCJmaWx0ZXJlZENhcmRzIiwidHJhbnNsYXRpb24iLCJkaXYiLCJjbGFzc05hbWUiLCJoMSIsInAiLCJidXR0b24iLCJvbkNsaWNrIiwiaHJlZiIsImxlbmd0aCIsImlucHV0IiwidHlwZSIsInZhbHVlIiwib25DaGFuZ2UiLCJlIiwidGFyZ2V0IiwicGxhY2Vob2xkZXIiLCJzdmciLCJmaWxsIiwic3Ryb2tlIiwidmlld0JveCIsInBhdGgiLCJzdHJva2VMaW5lY2FwIiwic3Ryb2tlTGluZWpvaW4iLCJzdHJva2VXaWR0aCIsImQiLCJoMyIsIm1hcCIsImNvbG9yIiwiaDQiLCJzcGFuIiwiY2FyZENvdW50IiwicHJvZ3Jlc3MiLCJwYXJ0T2ZTcGVlY2giLCJwcm9udW5jaWF0aW9uIiwiZXhhbXBsZSIsImNhcmRTZXQiLCJtYXN0ZXJ5TGV2ZWwiLCJ0aW1lc1Jldmlld2VkIiwiRGF0ZSIsIm5leHRSZXZpZXdEYXRlIiwidG9Mb2NhbGVEYXRlU3RyaW5nIiwiaW5pdGlhbERhdGEiLCJjYXJkU2V0SWQiLCJmaW5kIiwiY3MiLCJlbmdsaXNoIiwiY2hpbmVzZSIsImlzRWRpdCIsIm9uU3VjY2VzcyIsIm9uQ2FuY2VsIiwiRmxhc2hjYXJkc1BhZ2UiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./app/flashcards/page.tsx\n")); + +/***/ }), + +/***/ "(app-pages-browser)/./components/Navigation.tsx": +/*!***********************************!*\ + !*** ./components/Navigation.tsx ***! + \***********************************/ +/***/ ((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 */ Navigation: () => (/* binding */ Navigation)\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 next_link__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! next/link */ \"(app-pages-browser)/./node_modules/next/dist/client/app-dir/link.js\");\n/* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(next_link__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var next_navigation__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! next/navigation */ \"(app-pages-browser)/./node_modules/next/dist/api/navigation.js\");\n/* harmony import */ var _contexts_AuthContext__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/contexts/AuthContext */ \"(app-pages-browser)/./contexts/AuthContext.tsx\");\n/* __next_internal_client_entry_do_not_use__ Navigation auto */ \nvar _s = $RefreshSig$();\n\n\n\nfunction Navigation() {\n var _user_username_, _user_username;\n _s();\n const { user, logout } = (0,_contexts_AuthContext__WEBPACK_IMPORTED_MODULE_3__.useAuth)();\n const pathname = (0,next_navigation__WEBPACK_IMPORTED_MODULE_2__.usePathname)();\n const navItems = [\n {\n href: '/dashboard',\n label: '儀表板'\n },\n {\n href: '/flashcards',\n label: '詞卡'\n },\n {\n href: '/learn',\n label: '學習'\n },\n {\n href: '/generate',\n label: 'AI 生成'\n }\n ];\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"nav\", {\n className: \"bg-white shadow-sm border-b\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"max-w-7xl mx-auto px-4 sm:px-6 lg:px-8\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex justify-between h-16\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center space-x-8\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_link__WEBPACK_IMPORTED_MODULE_1___default()), {\n href: \"/dashboard\",\n className: \"text-2xl font-bold text-primary\",\n children: \"DramaLing\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/components/Navigation.tsx\",\n lineNumber: 23,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"hidden md:flex space-x-6\",\n children: navItems.map((item)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_link__WEBPACK_IMPORTED_MODULE_1___default()), {\n href: item.href,\n className: \"font-medium transition-colors \".concat(pathname === item.href ? 'text-primary' : 'text-gray-600 hover:text-gray-900'),\n children: item.label\n }, item.href, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/components/Navigation.tsx\",\n lineNumber: 28,\n columnNumber: 17\n }, this))\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/components/Navigation.tsx\",\n lineNumber: 26,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/components/Navigation.tsx\",\n lineNumber: 22,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center space-x-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n className: \"p-2 text-gray-600 hover:text-gray-900\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n className: \"w-6 h-6\",\n fill: \"none\",\n stroke: \"currentColor\",\n viewBox: \"0 0 24 24\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n d: \"M15 17h5l-1.405-1.405A2.032 2.032 0 0118 14.158V11a6.002 6.002 0 00-4-5.659V5a2 2 0 10-4 0v.341C7.67 6.165 6 8.388 6 11v3.159c0 .538-.214 1.055-.595 1.436L4 17h5m6 0v1a3 3 0 11-6 0v-1m6 0H9\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/components/Navigation.tsx\",\n lineNumber: 47,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/components/Navigation.tsx\",\n lineNumber: 46,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/components/Navigation.tsx\",\n lineNumber: 45,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center space-x-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-8 h-8 bg-primary rounded-full flex items-center justify-center text-white font-semibold\",\n children: (user === null || user === void 0 ? void 0 : (_user_username = user.username) === null || _user_username === void 0 ? void 0 : (_user_username_ = _user_username[0]) === null || _user_username_ === void 0 ? void 0 : _user_username_.toUpperCase()) || 'U'\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/components/Navigation.tsx\",\n lineNumber: 53,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-sm font-medium\",\n children: (user === null || user === void 0 ? void 0 : user.displayName) || (user === null || user === void 0 ? void 0 : user.username)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/components/Navigation.tsx\",\n lineNumber: 56,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: logout,\n className: \"ml-4 text-sm text-gray-600 hover:text-gray-900\",\n children: \"登出\"\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/components/Navigation.tsx\",\n lineNumber: 57,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/components/Navigation.tsx\",\n lineNumber: 52,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/components/Navigation.tsx\",\n lineNumber: 43,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/components/Navigation.tsx\",\n lineNumber: 21,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/components/Navigation.tsx\",\n lineNumber: 20,\n columnNumber: 7\n }, this)\n }, void 0, false, {\n fileName: \"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/components/Navigation.tsx\",\n lineNumber: 19,\n columnNumber: 5\n }, this);\n}\n_s(Navigation, \"tHLzmZfHifuHte7SpZSOu+/8DHo=\", false, function() {\n return [\n _contexts_AuthContext__WEBPACK_IMPORTED_MODULE_3__.useAuth,\n next_navigation__WEBPACK_IMPORTED_MODULE_2__.usePathname\n ];\n});\n_c = Navigation;\nvar _c;\n$RefreshReg$(_c, \"Navigation\");\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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL2NvbXBvbmVudHMvTmF2aWdhdGlvbi50c3giLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFFNEI7QUFDaUI7QUFDRztBQUV6QyxTQUFTRztRQStDQ0MsaUJBQUFBOztJQTlDZixNQUFNLEVBQUVBLElBQUksRUFBRUMsTUFBTSxFQUFFLEdBQUdILDhEQUFPQTtJQUNoQyxNQUFNSSxXQUFXTCw0REFBV0E7SUFFNUIsTUFBTU0sV0FBVztRQUNmO1lBQUVDLE1BQU07WUFBY0MsT0FBTztRQUFNO1FBQ25DO1lBQUVELE1BQU07WUFBZUMsT0FBTztRQUFLO1FBQ25DO1lBQUVELE1BQU07WUFBVUMsT0FBTztRQUFLO1FBQzlCO1lBQUVELE1BQU07WUFBYUMsT0FBTztRQUFRO0tBQ3JDO0lBRUQscUJBQ0UsOERBQUNDO1FBQUlDLFdBQVU7a0JBQ2IsNEVBQUNDO1lBQUlELFdBQVU7c0JBQ2IsNEVBQUNDO2dCQUFJRCxXQUFVOztrQ0FDYiw4REFBQ0M7d0JBQUlELFdBQVU7OzBDQUNiLDhEQUFDWCxrREFBSUE7Z0NBQUNRLE1BQUs7Z0NBQWFHLFdBQVU7MENBQWtDOzs7Ozs7MENBR3BFLDhEQUFDQztnQ0FBSUQsV0FBVTswQ0FDWkosU0FBU00sR0FBRyxDQUFDLENBQUNDLHFCQUNiLDhEQUFDZCxrREFBSUE7d0NBRUhRLE1BQU1NLEtBQUtOLElBQUk7d0NBQ2ZHLFdBQVcsaUNBSVYsT0FIQ0wsYUFBYVEsS0FBS04sSUFBSSxHQUNsQixpQkFDQTtrREFHTE0sS0FBS0wsS0FBSzt1Q0FSTkssS0FBS04sSUFBSTs7Ozs7Ozs7Ozs7Ozs7OztrQ0FjdEIsOERBQUNJO3dCQUFJRCxXQUFVOzswQ0FFYiw4REFBQ0k7Z0NBQU9KLFdBQVU7MENBQ2hCLDRFQUFDSztvQ0FBSUwsV0FBVTtvQ0FBVU0sTUFBSztvQ0FBT0MsUUFBTztvQ0FBZUMsU0FBUTs4Q0FDakUsNEVBQUNDO3dDQUFLQyxlQUFjO3dDQUFRQyxnQkFBZTt3Q0FBUUMsYUFBYTt3Q0FBR0MsR0FBRTs7Ozs7Ozs7Ozs7Ozs7OzswQ0FLekUsOERBQUNaO2dDQUFJRCxXQUFVOztrREFDYiw4REFBQ0M7d0NBQUlELFdBQVU7a0RBQ1pQLENBQUFBLGlCQUFBQSw0QkFBQUEsaUJBQUFBLEtBQU1xQixRQUFRLGNBQWRyQixzQ0FBQUEsa0JBQUFBLGNBQWdCLENBQUMsRUFBRSxjQUFuQkEsc0NBQUFBLGdCQUFxQnNCLFdBQVcsT0FBTTs7Ozs7O2tEQUV6Qyw4REFBQ0M7d0NBQUtoQixXQUFVO2tEQUF1QlAsQ0FBQUEsaUJBQUFBLDJCQUFBQSxLQUFNd0IsV0FBVyxNQUFJeEIsaUJBQUFBLDJCQUFBQSxLQUFNcUIsUUFBUTs7Ozs7O2tEQUMxRSw4REFBQ1Y7d0NBQ0NjLFNBQVN4Qjt3Q0FDVE0sV0FBVTtrREFDWDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVNmO0dBOURnQlI7O1FBQ1dELDBEQUFPQTtRQUNmRCx3REFBV0E7OztLQUZkRSIsInNvdXJjZXMiOlsiL1VzZXJzL2pldHRjaGVuZzEwMTgvY29kZS9kcmFtYWxpbmctdm9jYWItbGVhcm5pbmcvZnJvbnRlbmQvY29tcG9uZW50cy9OYXZpZ2F0aW9uLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIGNsaWVudCdcclxuXHJcbmltcG9ydCBMaW5rIGZyb20gJ25leHQvbGluaydcclxuaW1wb3J0IHsgdXNlUGF0aG5hbWUgfSBmcm9tICduZXh0L25hdmlnYXRpb24nXHJcbmltcG9ydCB7IHVzZUF1dGggfSBmcm9tICdAL2NvbnRleHRzL0F1dGhDb250ZXh0J1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIE5hdmlnYXRpb24oKSB7XHJcbiAgY29uc3QgeyB1c2VyLCBsb2dvdXQgfSA9IHVzZUF1dGgoKVxyXG4gIGNvbnN0IHBhdGhuYW1lID0gdXNlUGF0aG5hbWUoKVxyXG5cclxuICBjb25zdCBuYXZJdGVtcyA9IFtcclxuICAgIHsgaHJlZjogJy9kYXNoYm9hcmQnLCBsYWJlbDogJ+WEgOihqOadvycgfSxcclxuICAgIHsgaHJlZjogJy9mbGFzaGNhcmRzJywgbGFiZWw6ICfoqZ7ljaEnIH0sXHJcbiAgICB7IGhyZWY6ICcvbGVhcm4nLCBsYWJlbDogJ+WtuOe/kicgfSxcclxuICAgIHsgaHJlZjogJy9nZW5lcmF0ZScsIGxhYmVsOiAnQUkg55Sf5oiQJyB9LFxyXG4gIF1cclxuXHJcbiAgcmV0dXJuIChcclxuICAgIDxuYXYgY2xhc3NOYW1lPVwiYmctd2hpdGUgc2hhZG93LXNtIGJvcmRlci1iXCI+XHJcbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwibWF4LXctN3hsIG14LWF1dG8gcHgtNCBzbTpweC02IGxnOnB4LThcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXgganVzdGlmeS1iZXR3ZWVuIGgtMTZcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIgc3BhY2UteC04XCI+XHJcbiAgICAgICAgICAgIDxMaW5rIGhyZWY9XCIvZGFzaGJvYXJkXCIgY2xhc3NOYW1lPVwidGV4dC0yeGwgZm9udC1ib2xkIHRleHQtcHJpbWFyeVwiPlxyXG4gICAgICAgICAgICAgIERyYW1hTGluZ1xyXG4gICAgICAgICAgICA8L0xpbms+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaGlkZGVuIG1kOmZsZXggc3BhY2UteC02XCI+XHJcbiAgICAgICAgICAgICAge25hdkl0ZW1zLm1hcCgoaXRlbSkgPT4gKFxyXG4gICAgICAgICAgICAgICAgPExpbmtcclxuICAgICAgICAgICAgICAgICAga2V5PXtpdGVtLmhyZWZ9XHJcbiAgICAgICAgICAgICAgICAgIGhyZWY9e2l0ZW0uaHJlZn1cclxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgZm9udC1tZWRpdW0gdHJhbnNpdGlvbi1jb2xvcnMgJHtcclxuICAgICAgICAgICAgICAgICAgICBwYXRobmFtZSA9PT0gaXRlbS5ocmVmXHJcbiAgICAgICAgICAgICAgICAgICAgICA/ICd0ZXh0LXByaW1hcnknXHJcbiAgICAgICAgICAgICAgICAgICAgICA6ICd0ZXh0LWdyYXktNjAwIGhvdmVyOnRleHQtZ3JheS05MDAnXHJcbiAgICAgICAgICAgICAgICAgIH1gfVxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICB7aXRlbS5sYWJlbH1cclxuICAgICAgICAgICAgICAgIDwvTGluaz5cclxuICAgICAgICAgICAgICApKX1cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIHNwYWNlLXgtNFwiPlxyXG4gICAgICAgICAgICB7Lyog6YCa55+l5oyJ6YiVICovfVxyXG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzTmFtZT1cInAtMiB0ZXh0LWdyYXktNjAwIGhvdmVyOnRleHQtZ3JheS05MDBcIj5cclxuICAgICAgICAgICAgICA8c3ZnIGNsYXNzTmFtZT1cInctNiBoLTZcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIj5cclxuICAgICAgICAgICAgICAgIDxwYXRoIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZUxpbmVqb2luPVwicm91bmRcIiBzdHJva2VXaWR0aD17Mn0gZD1cIk0xNSAxN2g1bC0xLjQwNS0xLjQwNUEyLjAzMiAyLjAzMiAwIDAxMTggMTQuMTU4VjExYTYuMDAyIDYuMDAyIDAgMDAtNC01LjY1OVY1YTIgMiAwIDEwLTQgMHYuMzQxQzcuNjcgNi4xNjUgNiA4LjM4OCA2IDExdjMuMTU5YzAgLjUzOC0uMjE0IDEuMDU1LS41OTUgMS40MzZMNCAxN2g1bTYgMHYxYTMgMyAwIDExLTYgMHYtMW02IDBIOVwiIC8+XHJcbiAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG5cclxuICAgICAgICAgICAgey8qIOeUqOaItuizh+ioiiAqL31cclxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBzcGFjZS14LTJcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctOCBoLTggYmctcHJpbWFyeSByb3VuZGVkLWZ1bGwgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgdGV4dC13aGl0ZSBmb250LXNlbWlib2xkXCI+XHJcbiAgICAgICAgICAgICAgICB7dXNlcj8udXNlcm5hbWU/LlswXT8udG9VcHBlckNhc2UoKSB8fCAnVSd9XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC1zbSBmb250LW1lZGl1bVwiPnt1c2VyPy5kaXNwbGF5TmFtZSB8fCB1c2VyPy51c2VybmFtZX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgb25DbGljaz17bG9nb3V0fVxyXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwibWwtNCB0ZXh0LXNtIHRleHQtZ3JheS02MDAgaG92ZXI6dGV4dC1ncmF5LTkwMFwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAg55m75Ye6XHJcbiAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9uYXY+XHJcbiAgKVxyXG59Il0sIm5hbWVzIjpbIkxpbmsiLCJ1c2VQYXRobmFtZSIsInVzZUF1dGgiLCJOYXZpZ2F0aW9uIiwidXNlciIsImxvZ291dCIsInBhdGhuYW1lIiwibmF2SXRlbXMiLCJocmVmIiwibGFiZWwiLCJuYXYiLCJjbGFzc05hbWUiLCJkaXYiLCJtYXAiLCJpdGVtIiwiYnV0dG9uIiwic3ZnIiwiZmlsbCIsInN0cm9rZSIsInZpZXdCb3giLCJwYXRoIiwic3Ryb2tlTGluZWNhcCIsInN0cm9rZUxpbmVqb2luIiwic3Ryb2tlV2lkdGgiLCJkIiwidXNlcm5hbWUiLCJ0b1VwcGVyQ2FzZSIsInNwYW4iLCJkaXNwbGF5TmFtZSIsIm9uQ2xpY2siXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./components/Navigation.tsx\n")); + +/***/ }) + +}); \ No newline at end of file diff --git a/frontend/.next/static/webpack/app/layout.0a62ebb926bbee91.hot-update.js b/frontend/.next/static/webpack/app/layout.0a62ebb926bbee91.hot-update.js new file mode 100644 index 0000000..f8d7685 --- /dev/null +++ b/frontend/.next/static/webpack/app/layout.0a62ebb926bbee91.hot-update.js @@ -0,0 +1,22 @@ +"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/layout",{ + +/***/ "(app-pages-browser)/./app/globals.css": +/*!*************************!*\ + !*** ./app/globals.css ***! + \*************************/ +/***/ ((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 */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (\"4899cbc790f0\");\nif (true) { module.hot.accept() }\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL2FwcC9nbG9iYWxzLmNzcyIsIm1hcHBpbmdzIjoiOzs7O0FBQUEsaUVBQWUsY0FBYztBQUM3QixJQUFJLElBQVUsSUFBSSxpQkFBaUIiLCJzb3VyY2VzIjpbIi9Vc2Vycy9qZXR0Y2hlbmcxMDE4L2NvZGUvZHJhbWFsaW5nLXZvY2FiLWxlYXJuaW5nL2Zyb250ZW5kL2FwcC9nbG9iYWxzLmNzcyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBcIjQ4OTljYmM3OTBmMFwiXG5pZiAobW9kdWxlLmhvdCkgeyBtb2R1bGUuaG90LmFjY2VwdCgpIH1cbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./app/globals.css\n")); + +/***/ }) + +}); \ No newline at end of file diff --git a/frontend/.next/static/webpack/app/layout.58caba527fcdb9f0.hot-update.js b/frontend/.next/static/webpack/app/layout.58caba527fcdb9f0.hot-update.js new file mode 100644 index 0000000..da0e7f8 --- /dev/null +++ b/frontend/.next/static/webpack/app/layout.58caba527fcdb9f0.hot-update.js @@ -0,0 +1,22 @@ +"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/layout",{ + +/***/ "(app-pages-browser)/./app/globals.css": +/*!*************************!*\ + !*** ./app/globals.css ***! + \*************************/ +/***/ ((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 */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (\"883f16b213de\");\nif (true) { module.hot.accept() }\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL2FwcC9nbG9iYWxzLmNzcyIsIm1hcHBpbmdzIjoiOzs7O0FBQUEsaUVBQWUsY0FBYztBQUM3QixJQUFJLElBQVUsSUFBSSxpQkFBaUIiLCJzb3VyY2VzIjpbIi9Vc2Vycy9qZXR0Y2hlbmcxMDE4L2NvZGUvZHJhbWFsaW5nLXZvY2FiLWxlYXJuaW5nL2Zyb250ZW5kL2FwcC9nbG9iYWxzLmNzcyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBcIjg4M2YxNmIyMTNkZVwiXG5pZiAobW9kdWxlLmhvdCkgeyBtb2R1bGUuaG90LmFjY2VwdCgpIH1cbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./app/globals.css\n")); + +/***/ }) + +}); \ No newline at end of file diff --git a/frontend/.next/static/webpack/app/layout.6847424edef4a857.hot-update.js b/frontend/.next/static/webpack/app/layout.6847424edef4a857.hot-update.js new file mode 100644 index 0000000..d784848 --- /dev/null +++ b/frontend/.next/static/webpack/app/layout.6847424edef4a857.hot-update.js @@ -0,0 +1,22 @@ +"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/layout",{ + +/***/ "(app-pages-browser)/./app/globals.css": +/*!*************************!*\ + !*** ./app/globals.css ***! + \*************************/ +/***/ ((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 */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (\"fdcd4ccf38fb\");\nif (true) { module.hot.accept() }\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL2FwcC9nbG9iYWxzLmNzcyIsIm1hcHBpbmdzIjoiOzs7O0FBQUEsaUVBQWUsY0FBYztBQUM3QixJQUFJLElBQVUsSUFBSSxpQkFBaUIiLCJzb3VyY2VzIjpbIi9Vc2Vycy9qZXR0Y2hlbmcxMDE4L2NvZGUvZHJhbWFsaW5nLXZvY2FiLWxlYXJuaW5nL2Zyb250ZW5kL2FwcC9nbG9iYWxzLmNzcyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBcImZkY2Q0Y2NmMzhmYlwiXG5pZiAobW9kdWxlLmhvdCkgeyBtb2R1bGUuaG90LmFjY2VwdCgpIH1cbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./app/globals.css\n")); + +/***/ }) + +}); \ No newline at end of file diff --git a/frontend/.next/static/webpack/app/layout.94e69a03f85ff02d.hot-update.js b/frontend/.next/static/webpack/app/layout.94e69a03f85ff02d.hot-update.js new file mode 100644 index 0000000..598499d --- /dev/null +++ b/frontend/.next/static/webpack/app/layout.94e69a03f85ff02d.hot-update.js @@ -0,0 +1,22 @@ +"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/layout",{ + +/***/ "(app-pages-browser)/./app/globals.css": +/*!*************************!*\ + !*** ./app/globals.css ***! + \*************************/ +/***/ ((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 */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (\"2a88c01b578d\");\nif (true) { module.hot.accept() }\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL2FwcC9nbG9iYWxzLmNzcyIsIm1hcHBpbmdzIjoiOzs7O0FBQUEsaUVBQWUsY0FBYztBQUM3QixJQUFJLElBQVUsSUFBSSxpQkFBaUIiLCJzb3VyY2VzIjpbIi9Vc2Vycy9qZXR0Y2hlbmcxMDE4L2NvZGUvZHJhbWFsaW5nLXZvY2FiLWxlYXJuaW5nL2Zyb250ZW5kL2FwcC9nbG9iYWxzLmNzcyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBcIjJhODhjMDFiNTc4ZFwiXG5pZiAobW9kdWxlLmhvdCkgeyBtb2R1bGUuaG90LmFjY2VwdCgpIH1cbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./app/globals.css\n")); + +/***/ }) + +}); \ No newline at end of file diff --git a/frontend/.next/static/webpack/app/layout.94f087c16bddeb84.hot-update.js b/frontend/.next/static/webpack/app/layout.94f087c16bddeb84.hot-update.js new file mode 100644 index 0000000..aa4d791 --- /dev/null +++ b/frontend/.next/static/webpack/app/layout.94f087c16bddeb84.hot-update.js @@ -0,0 +1,22 @@ +"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/layout",{ + +/***/ "(app-pages-browser)/./app/globals.css": +/*!*************************!*\ + !*** ./app/globals.css ***! + \*************************/ +/***/ ((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 */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (\"c6e8fe368f87\");\nif (true) { module.hot.accept() }\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL2FwcC9nbG9iYWxzLmNzcyIsIm1hcHBpbmdzIjoiOzs7O0FBQUEsaUVBQWUsY0FBYztBQUM3QixJQUFJLElBQVUsSUFBSSxpQkFBaUIiLCJzb3VyY2VzIjpbIi9Vc2Vycy9qZXR0Y2hlbmcxMDE4L2NvZGUvZHJhbWFsaW5nLXZvY2FiLWxlYXJuaW5nL2Zyb250ZW5kL2FwcC9nbG9iYWxzLmNzcyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBcImM2ZThmZTM2OGY4N1wiXG5pZiAobW9kdWxlLmhvdCkgeyBtb2R1bGUuaG90LmFjY2VwdCgpIH1cbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./app/globals.css\n")); + +/***/ }) + +}); \ No newline at end of file diff --git a/frontend/.next/static/webpack/app/layout.a80a3c5572c39252.hot-update.js b/frontend/.next/static/webpack/app/layout.a80a3c5572c39252.hot-update.js new file mode 100644 index 0000000..cbc03f4 --- /dev/null +++ b/frontend/.next/static/webpack/app/layout.a80a3c5572c39252.hot-update.js @@ -0,0 +1,22 @@ +"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/layout",{ + +/***/ "(app-pages-browser)/./app/globals.css": +/*!*************************!*\ + !*** ./app/globals.css ***! + \*************************/ +/***/ ((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 */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (\"a365266cf440\");\nif (true) { module.hot.accept() }\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL2FwcC9nbG9iYWxzLmNzcyIsIm1hcHBpbmdzIjoiOzs7O0FBQUEsaUVBQWUsY0FBYztBQUM3QixJQUFJLElBQVUsSUFBSSxpQkFBaUIiLCJzb3VyY2VzIjpbIi9Vc2Vycy9qZXR0Y2hlbmcxMDE4L2NvZGUvZHJhbWFsaW5nLXZvY2FiLWxlYXJuaW5nL2Zyb250ZW5kL2FwcC9nbG9iYWxzLmNzcyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBcImEzNjUyNjZjZjQ0MFwiXG5pZiAobW9kdWxlLmhvdCkgeyBtb2R1bGUuaG90LmFjY2VwdCgpIH1cbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./app/globals.css\n")); + +/***/ }) + +}); \ No newline at end of file diff --git a/frontend/.next/static/webpack/app/layout.fbad9fe969969005.hot-update.js b/frontend/.next/static/webpack/app/layout.fbad9fe969969005.hot-update.js new file mode 100644 index 0000000..f342d6d --- /dev/null +++ b/frontend/.next/static/webpack/app/layout.fbad9fe969969005.hot-update.js @@ -0,0 +1,22 @@ +"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/layout",{ + +/***/ "(app-pages-browser)/./app/globals.css": +/*!*************************!*\ + !*** ./app/globals.css ***! + \*************************/ +/***/ ((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 */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (\"cb0eaaf5ac4a\");\nif (true) { module.hot.accept() }\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL2FwcC9nbG9iYWxzLmNzcyIsIm1hcHBpbmdzIjoiOzs7O0FBQUEsaUVBQWUsY0FBYztBQUM3QixJQUFJLElBQVUsSUFBSSxpQkFBaUIiLCJzb3VyY2VzIjpbIi9Vc2Vycy9qZXR0Y2hlbmcxMDE4L2NvZGUvZHJhbWFsaW5nLXZvY2FiLWxlYXJuaW5nL2Zyb250ZW5kL2FwcC9nbG9iYWxzLmNzcyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBcImNiMGVhYWY1YWM0YVwiXG5pZiAobW9kdWxlLmhvdCkgeyBtb2R1bGUuaG90LmFjY2VwdCgpIH1cbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./app/globals.css\n")); + +/***/ }) + +}); \ No newline at end of file diff --git a/frontend/.next/static/webpack/fbad9fe969969005.webpack.hot-update.json b/frontend/.next/static/webpack/fbad9fe969969005.webpack.hot-update.json new file mode 100644 index 0000000..186d1dc --- /dev/null +++ b/frontend/.next/static/webpack/fbad9fe969969005.webpack.hot-update.json @@ -0,0 +1 @@ +{"c":["app/layout","app/dashboard/page","webpack"],"r":[],"m":[]} \ No newline at end of file diff --git a/frontend/.next/static/webpack/webpack.0a62ebb926bbee91.hot-update.js b/frontend/.next/static/webpack/webpack.0a62ebb926bbee91.hot-update.js new file mode 100644 index 0000000..58561d7 --- /dev/null +++ b/frontend/.next/static/webpack/webpack.0a62ebb926bbee91.hot-update.js @@ -0,0 +1,12 @@ +"use strict"; +self["webpackHotUpdate_N_E"]("webpack",{}, +/******/ function(__webpack_require__) { // webpackRuntimeModules +/******/ /* webpack/runtime/getFullHash */ +/******/ (() => { +/******/ __webpack_require__.h = () => ("a80a3c5572c39252") +/******/ })(); +/******/ +/******/ } +) +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJpZ25vcmVMaXN0IjpbMF0sIm1hcHBpbmdzIjoiQUFBQSIsInNvdXJjZXMiOlsid2VicGFjay1pbnRlcm5hbDovL25leHRqcy93ZWJwYWNrLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFRoaXMgc291cmNlIHdhcyBnZW5lcmF0ZWQgYnkgTmV4dC5qcyBiYXNlZCBvZmYgb2YgdGhlIGdlbmVyYXRlZCBXZWJwYWNrIHJ1bnRpbWUuXG4vLyBUaGUgbWFwcGluZ3MgYXJlIGluY29ycmVjdC5cbi8vIFRvIGdldCB0aGUgY29ycmVjdCBsaW5lL2NvbHVtbiBtYXBwaW5ncywgdHVybiBvZmYgc291cmNlbWFwcyBpbiB5b3VyIGRlYnVnZ2VyLlxuXG5zZWxmW1wid2VicGFja0hvdFVwZGF0ZV9OX0VcIl0oXCJ3ZWJwYWNrXCIse30sXG4vKioqKioqLyBmdW5jdGlvbihfX3dlYnBhY2tfcmVxdWlyZV9fKSB7IC8vIHdlYnBhY2tSdW50aW1lTW9kdWxlc1xuLyoqKioqKi8gLyogd2VicGFjay9ydW50aW1lL2dldEZ1bGxIYXNoICovXG4vKioqKioqLyAoKCkgPT4ge1xuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmggPSAoKSA9PiAoXCJhODBhM2M1NTcyYzM5MjUyXCIpXG4vKioqKioqLyB9KSgpO1xuLyoqKioqKi8gXG4vKioqKioqLyB9XG4pIl19 +; \ No newline at end of file diff --git a/frontend/.next/static/webpack/webpack.2f372f747e2a80a6.hot-update.js b/frontend/.next/static/webpack/webpack.2f372f747e2a80a6.hot-update.js new file mode 100644 index 0000000..a2931cb --- /dev/null +++ b/frontend/.next/static/webpack/webpack.2f372f747e2a80a6.hot-update.js @@ -0,0 +1,12 @@ +"use strict"; +self["webpackHotUpdate_N_E"]("webpack",{}, +/******/ function(__webpack_require__) { // webpackRuntimeModules +/******/ /* webpack/runtime/getFullHash */ +/******/ (() => { +/******/ __webpack_require__.h = () => ("0a62ebb926bbee91") +/******/ })(); +/******/ +/******/ } +) +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJpZ25vcmVMaXN0IjpbMF0sIm1hcHBpbmdzIjoiQUFBQSIsInNvdXJjZXMiOlsid2VicGFjay1pbnRlcm5hbDovL25leHRqcy93ZWJwYWNrLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFRoaXMgc291cmNlIHdhcyBnZW5lcmF0ZWQgYnkgTmV4dC5qcyBiYXNlZCBvZmYgb2YgdGhlIGdlbmVyYXRlZCBXZWJwYWNrIHJ1bnRpbWUuXG4vLyBUaGUgbWFwcGluZ3MgYXJlIGluY29ycmVjdC5cbi8vIFRvIGdldCB0aGUgY29ycmVjdCBsaW5lL2NvbHVtbiBtYXBwaW5ncywgdHVybiBvZmYgc291cmNlbWFwcyBpbiB5b3VyIGRlYnVnZ2VyLlxuXG5zZWxmW1wid2VicGFja0hvdFVwZGF0ZV9OX0VcIl0oXCJ3ZWJwYWNrXCIse30sXG4vKioqKioqLyBmdW5jdGlvbihfX3dlYnBhY2tfcmVxdWlyZV9fKSB7IC8vIHdlYnBhY2tSdW50aW1lTW9kdWxlc1xuLyoqKioqKi8gLyogd2VicGFjay9ydW50aW1lL2dldEZ1bGxIYXNoICovXG4vKioqKioqLyAoKCkgPT4ge1xuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmggPSAoKSA9PiAoXCIwYTYyZWJiOTI2YmJlZTkxXCIpXG4vKioqKioqLyB9KSgpO1xuLyoqKioqKi8gXG4vKioqKioqLyB9XG4pIl19 +; \ No newline at end of file diff --git a/frontend/.next/static/webpack/webpack.58caba527fcdb9f0.hot-update.js b/frontend/.next/static/webpack/webpack.58caba527fcdb9f0.hot-update.js new file mode 100644 index 0000000..4e91124 --- /dev/null +++ b/frontend/.next/static/webpack/webpack.58caba527fcdb9f0.hot-update.js @@ -0,0 +1,12 @@ +"use strict"; +self["webpackHotUpdate_N_E"]("webpack",{}, +/******/ function(__webpack_require__) { // webpackRuntimeModules +/******/ /* webpack/runtime/getFullHash */ +/******/ (() => { +/******/ __webpack_require__.h = () => ("94f087c16bddeb84") +/******/ })(); +/******/ +/******/ } +) +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJpZ25vcmVMaXN0IjpbMF0sIm1hcHBpbmdzIjoiQUFBQSIsInNvdXJjZXMiOlsid2VicGFjay1pbnRlcm5hbDovL25leHRqcy93ZWJwYWNrLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFRoaXMgc291cmNlIHdhcyBnZW5lcmF0ZWQgYnkgTmV4dC5qcyBiYXNlZCBvZmYgb2YgdGhlIGdlbmVyYXRlZCBXZWJwYWNrIHJ1bnRpbWUuXG4vLyBUaGUgbWFwcGluZ3MgYXJlIGluY29ycmVjdC5cbi8vIFRvIGdldCB0aGUgY29ycmVjdCBsaW5lL2NvbHVtbiBtYXBwaW5ncywgdHVybiBvZmYgc291cmNlbWFwcyBpbiB5b3VyIGRlYnVnZ2VyLlxuXG5zZWxmW1wid2VicGFja0hvdFVwZGF0ZV9OX0VcIl0oXCJ3ZWJwYWNrXCIse30sXG4vKioqKioqLyBmdW5jdGlvbihfX3dlYnBhY2tfcmVxdWlyZV9fKSB7IC8vIHdlYnBhY2tSdW50aW1lTW9kdWxlc1xuLyoqKioqKi8gLyogd2VicGFjay9ydW50aW1lL2dldEZ1bGxIYXNoICovXG4vKioqKioqLyAoKCkgPT4ge1xuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmggPSAoKSA9PiAoXCI5NGYwODdjMTZiZGRlYjg0XCIpXG4vKioqKioqLyB9KSgpO1xuLyoqKioqKi8gXG4vKioqKioqLyB9XG4pIl19 +; \ No newline at end of file diff --git a/frontend/.next/static/webpack/webpack.6847424edef4a857.hot-update.js b/frontend/.next/static/webpack/webpack.6847424edef4a857.hot-update.js new file mode 100644 index 0000000..9496ed1 --- /dev/null +++ b/frontend/.next/static/webpack/webpack.6847424edef4a857.hot-update.js @@ -0,0 +1,12 @@ +"use strict"; +self["webpackHotUpdate_N_E"]("webpack",{}, +/******/ function(__webpack_require__) { // webpackRuntimeModules +/******/ /* webpack/runtime/getFullHash */ +/******/ (() => { +/******/ __webpack_require__.h = () => ("5b6833c08c682ad1") +/******/ })(); +/******/ +/******/ } +) +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJpZ25vcmVMaXN0IjpbMF0sIm1hcHBpbmdzIjoiQUFBQSIsInNvdXJjZXMiOlsid2VicGFjay1pbnRlcm5hbDovL25leHRqcy93ZWJwYWNrLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFRoaXMgc291cmNlIHdhcyBnZW5lcmF0ZWQgYnkgTmV4dC5qcyBiYXNlZCBvZmYgb2YgdGhlIGdlbmVyYXRlZCBXZWJwYWNrIHJ1bnRpbWUuXG4vLyBUaGUgbWFwcGluZ3MgYXJlIGluY29ycmVjdC5cbi8vIFRvIGdldCB0aGUgY29ycmVjdCBsaW5lL2NvbHVtbiBtYXBwaW5ncywgdHVybiBvZmYgc291cmNlbWFwcyBpbiB5b3VyIGRlYnVnZ2VyLlxuXG5zZWxmW1wid2VicGFja0hvdFVwZGF0ZV9OX0VcIl0oXCJ3ZWJwYWNrXCIse30sXG4vKioqKioqLyBmdW5jdGlvbihfX3dlYnBhY2tfcmVxdWlyZV9fKSB7IC8vIHdlYnBhY2tSdW50aW1lTW9kdWxlc1xuLyoqKioqKi8gLyogd2VicGFjay9ydW50aW1lL2dldEZ1bGxIYXNoICovXG4vKioqKioqLyAoKCkgPT4ge1xuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmggPSAoKSA9PiAoXCI1YjY4MzNjMDhjNjgyYWQxXCIpXG4vKioqKioqLyB9KSgpO1xuLyoqKioqKi8gXG4vKioqKioqLyB9XG4pIl19 +; \ No newline at end of file diff --git a/frontend/.next/static/webpack/webpack.94e69a03f85ff02d.hot-update.js b/frontend/.next/static/webpack/webpack.94e69a03f85ff02d.hot-update.js new file mode 100644 index 0000000..ea575b4 --- /dev/null +++ b/frontend/.next/static/webpack/webpack.94e69a03f85ff02d.hot-update.js @@ -0,0 +1,12 @@ +"use strict"; +self["webpackHotUpdate_N_E"]("webpack",{}, +/******/ function(__webpack_require__) { // webpackRuntimeModules +/******/ /* webpack/runtime/getFullHash */ +/******/ (() => { +/******/ __webpack_require__.h = () => ("58caba527fcdb9f0") +/******/ })(); +/******/ +/******/ } +) +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJpZ25vcmVMaXN0IjpbMF0sIm1hcHBpbmdzIjoiQUFBQSIsInNvdXJjZXMiOlsid2VicGFjay1pbnRlcm5hbDovL25leHRqcy93ZWJwYWNrLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFRoaXMgc291cmNlIHdhcyBnZW5lcmF0ZWQgYnkgTmV4dC5qcyBiYXNlZCBvZmYgb2YgdGhlIGdlbmVyYXRlZCBXZWJwYWNrIHJ1bnRpbWUuXG4vLyBUaGUgbWFwcGluZ3MgYXJlIGluY29ycmVjdC5cbi8vIFRvIGdldCB0aGUgY29ycmVjdCBsaW5lL2NvbHVtbiBtYXBwaW5ncywgdHVybiBvZmYgc291cmNlbWFwcyBpbiB5b3VyIGRlYnVnZ2VyLlxuXG5zZWxmW1wid2VicGFja0hvdFVwZGF0ZV9OX0VcIl0oXCJ3ZWJwYWNrXCIse30sXG4vKioqKioqLyBmdW5jdGlvbihfX3dlYnBhY2tfcmVxdWlyZV9fKSB7IC8vIHdlYnBhY2tSdW50aW1lTW9kdWxlc1xuLyoqKioqKi8gLyogd2VicGFjay9ydW50aW1lL2dldEZ1bGxIYXNoICovXG4vKioqKioqLyAoKCkgPT4ge1xuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmggPSAoKSA9PiAoXCI1OGNhYmE1MjdmY2RiOWYwXCIpXG4vKioqKioqLyB9KSgpO1xuLyoqKioqKi8gXG4vKioqKioqLyB9XG4pIl19 +; \ No newline at end of file diff --git a/frontend/.next/static/webpack/webpack.94f087c16bddeb84.hot-update.js b/frontend/.next/static/webpack/webpack.94f087c16bddeb84.hot-update.js new file mode 100644 index 0000000..b5e5af9 --- /dev/null +++ b/frontend/.next/static/webpack/webpack.94f087c16bddeb84.hot-update.js @@ -0,0 +1,12 @@ +"use strict"; +self["webpackHotUpdate_N_E"]("webpack",{}, +/******/ function(__webpack_require__) { // webpackRuntimeModules +/******/ /* webpack/runtime/getFullHash */ +/******/ (() => { +/******/ __webpack_require__.h = () => ("fbad9fe969969005") +/******/ })(); +/******/ +/******/ } +) +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJpZ25vcmVMaXN0IjpbMF0sIm1hcHBpbmdzIjoiQUFBQSIsInNvdXJjZXMiOlsid2VicGFjay1pbnRlcm5hbDovL25leHRqcy93ZWJwYWNrLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFRoaXMgc291cmNlIHdhcyBnZW5lcmF0ZWQgYnkgTmV4dC5qcyBiYXNlZCBvZmYgb2YgdGhlIGdlbmVyYXRlZCBXZWJwYWNrIHJ1bnRpbWUuXG4vLyBUaGUgbWFwcGluZ3MgYXJlIGluY29ycmVjdC5cbi8vIFRvIGdldCB0aGUgY29ycmVjdCBsaW5lL2NvbHVtbiBtYXBwaW5ncywgdHVybiBvZmYgc291cmNlbWFwcyBpbiB5b3VyIGRlYnVnZ2VyLlxuXG5zZWxmW1wid2VicGFja0hvdFVwZGF0ZV9OX0VcIl0oXCJ3ZWJwYWNrXCIse30sXG4vKioqKioqLyBmdW5jdGlvbihfX3dlYnBhY2tfcmVxdWlyZV9fKSB7IC8vIHdlYnBhY2tSdW50aW1lTW9kdWxlc1xuLyoqKioqKi8gLyogd2VicGFjay9ydW50aW1lL2dldEZ1bGxIYXNoICovXG4vKioqKioqLyAoKCkgPT4ge1xuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmggPSAoKSA9PiAoXCJmYmFkOWZlOTY5OTY5MDA1XCIpXG4vKioqKioqLyB9KSgpO1xuLyoqKioqKi8gXG4vKioqKioqLyB9XG4pIl19 +; \ No newline at end of file diff --git a/frontend/.next/static/webpack/webpack.a80a3c5572c39252.hot-update.js b/frontend/.next/static/webpack/webpack.a80a3c5572c39252.hot-update.js new file mode 100644 index 0000000..3cb8d3a --- /dev/null +++ b/frontend/.next/static/webpack/webpack.a80a3c5572c39252.hot-update.js @@ -0,0 +1,12 @@ +"use strict"; +self["webpackHotUpdate_N_E"]("webpack",{}, +/******/ function(__webpack_require__) { // webpackRuntimeModules +/******/ /* webpack/runtime/getFullHash */ +/******/ (() => { +/******/ __webpack_require__.h = () => ("94e69a03f85ff02d") +/******/ })(); +/******/ +/******/ } +) +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJpZ25vcmVMaXN0IjpbMF0sIm1hcHBpbmdzIjoiQUFBQSIsInNvdXJjZXMiOlsid2VicGFjay1pbnRlcm5hbDovL25leHRqcy93ZWJwYWNrLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFRoaXMgc291cmNlIHdhcyBnZW5lcmF0ZWQgYnkgTmV4dC5qcyBiYXNlZCBvZmYgb2YgdGhlIGdlbmVyYXRlZCBXZWJwYWNrIHJ1bnRpbWUuXG4vLyBUaGUgbWFwcGluZ3MgYXJlIGluY29ycmVjdC5cbi8vIFRvIGdldCB0aGUgY29ycmVjdCBsaW5lL2NvbHVtbiBtYXBwaW5ncywgdHVybiBvZmYgc291cmNlbWFwcyBpbiB5b3VyIGRlYnVnZ2VyLlxuXG5zZWxmW1wid2VicGFja0hvdFVwZGF0ZV9OX0VcIl0oXCJ3ZWJwYWNrXCIse30sXG4vKioqKioqLyBmdW5jdGlvbihfX3dlYnBhY2tfcmVxdWlyZV9fKSB7IC8vIHdlYnBhY2tSdW50aW1lTW9kdWxlc1xuLyoqKioqKi8gLyogd2VicGFjay9ydW50aW1lL2dldEZ1bGxIYXNoICovXG4vKioqKioqLyAoKCkgPT4ge1xuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmggPSAoKSA9PiAoXCI5NGU2OWEwM2Y4NWZmMDJkXCIpXG4vKioqKioqLyB9KSgpO1xuLyoqKioqKi8gXG4vKioqKioqLyB9XG4pIl19 +; \ No newline at end of file diff --git a/frontend/.next/static/webpack/webpack.fbad9fe969969005.hot-update.js b/frontend/.next/static/webpack/webpack.fbad9fe969969005.hot-update.js new file mode 100644 index 0000000..bd15c84 --- /dev/null +++ b/frontend/.next/static/webpack/webpack.fbad9fe969969005.hot-update.js @@ -0,0 +1,12 @@ +"use strict"; +self["webpackHotUpdate_N_E"]("webpack",{}, +/******/ function(__webpack_require__) { // webpackRuntimeModules +/******/ /* webpack/runtime/getFullHash */ +/******/ (() => { +/******/ __webpack_require__.h = () => ("6847424edef4a857") +/******/ })(); +/******/ +/******/ } +) +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJpZ25vcmVMaXN0IjpbMF0sIm1hcHBpbmdzIjoiQUFBQSIsInNvdXJjZXMiOlsid2VicGFjay1pbnRlcm5hbDovL25leHRqcy93ZWJwYWNrLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFRoaXMgc291cmNlIHdhcyBnZW5lcmF0ZWQgYnkgTmV4dC5qcyBiYXNlZCBvZmYgb2YgdGhlIGdlbmVyYXRlZCBXZWJwYWNrIHJ1bnRpbWUuXG4vLyBUaGUgbWFwcGluZ3MgYXJlIGluY29ycmVjdC5cbi8vIFRvIGdldCB0aGUgY29ycmVjdCBsaW5lL2NvbHVtbiBtYXBwaW5ncywgdHVybiBvZmYgc291cmNlbWFwcyBpbiB5b3VyIGRlYnVnZ2VyLlxuXG5zZWxmW1wid2VicGFja0hvdFVwZGF0ZV9OX0VcIl0oXCJ3ZWJwYWNrXCIse30sXG4vKioqKioqLyBmdW5jdGlvbihfX3dlYnBhY2tfcmVxdWlyZV9fKSB7IC8vIHdlYnBhY2tSdW50aW1lTW9kdWxlc1xuLyoqKioqKi8gLyogd2VicGFjay9ydW50aW1lL2dldEZ1bGxIYXNoICovXG4vKioqKioqLyAoKCkgPT4ge1xuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmggPSAoKSA9PiAoXCI2ODQ3NDI0ZWRlZjRhODU3XCIpXG4vKioqKioqLyB9KSgpO1xuLyoqKioqKi8gXG4vKioqKioqLyB9XG4pIl19 +; \ No newline at end of file diff --git a/frontend/.next/types/app/generate/page.ts b/frontend/.next/types/app/generate/page.ts new file mode 100644 index 0000000..09ac5aa --- /dev/null +++ b/frontend/.next/types/app/generate/page.ts @@ -0,0 +1,84 @@ +// File: /Users/jettcheng1018/code/dramaling-vocab-learning/frontend/app/generate/page.tsx +import * as entry from '../../../../app/generate/page.js' +import type { ResolvingMetadata, ResolvingViewport } from 'next/dist/lib/metadata/types/metadata-interface.js' + +type TEntry = typeof import('../../../../app/generate/page.js') + +type SegmentParams = T extends Record + ? { [K in keyof T]: T[K] extends string ? string | string[] | undefined : never } + : T + +// Check that the entry is a valid entry +checkFields | false + dynamic?: 'auto' | 'force-dynamic' | 'error' | 'force-static' + dynamicParams?: boolean + fetchCache?: 'auto' | 'force-no-store' | 'only-no-store' | 'default-no-store' | 'default-cache' | 'only-cache' | 'force-cache' + preferredRegion?: 'auto' | 'global' | 'home' | string | string[] + runtime?: 'nodejs' | 'experimental-edge' | 'edge' + maxDuration?: number + + metadata?: any + generateMetadata?: Function + viewport?: any + generateViewport?: Function + experimental_ppr?: boolean + +}, TEntry, ''>>() + + +// Check the prop type of the entry function +checkFields, 'default'>>() + +// Check the arguments and return type of the generateMetadata function +if ('generateMetadata' in entry) { + checkFields>, 'generateMetadata'>>() + checkFields>, 'generateMetadata'>>() +} + +// Check the arguments and return type of the generateViewport function +if ('generateViewport' in entry) { + checkFields>, 'generateViewport'>>() + checkFields>, 'generateViewport'>>() +} + +// Check the arguments and return type of the generateStaticParams function +if ('generateStaticParams' in entry) { + checkFields>, 'generateStaticParams'>>() + checkFields }, { __tag__: 'generateStaticParams', __return_type__: ReturnType> }>>() +} + +export interface PageProps { + params?: Promise + searchParams?: Promise +} +export interface LayoutProps { + children?: React.ReactNode + + params?: Promise +} + +// ============= +// Utility types +type RevalidateRange = T extends { revalidate: any } ? NonNegative : never + +// If T is unknown or any, it will be an empty {} type. Otherwise, it will be the same as Omit. +type OmitWithTag = Omit +type Diff = 0 extends (1 & T) ? {} : OmitWithTag + +type FirstArg = T extends (...args: [infer T, any]) => any ? unknown extends T ? any : T : never +type SecondArg = T extends (...args: [any, infer T]) => any ? unknown extends T ? any : T : never +type MaybeField = T extends { [k in K]: infer G } ? G extends Function ? G : never : never + + + +function checkFields<_ extends { [k in keyof any]: never }>() {} + +// https://github.com/sindresorhus/type-fest +type Numeric = number | bigint +type Zero = 0 | 0n +type Negative = T extends Zero ? never : `${T}` extends `-${string}` ? T : never +type NonNegative = T extends Zero ? T : Negative extends never ? T : '__invalid_negative_number__' diff --git a/frontend/app/dashboard/page.tsx b/frontend/app/dashboard/page.tsx index a1ea374..fddec7f 100644 --- a/frontend/app/dashboard/page.tsx +++ b/frontend/app/dashboard/page.tsx @@ -3,6 +3,7 @@ import Link from 'next/link' import { useState } from 'react' import { ProtectedRoute } from '@/components/ProtectedRoute' +import { Navigation } from '@/components/Navigation' import { useAuth } from '@/contexts/AuthContext' function DashboardContent() { @@ -35,39 +36,7 @@ function DashboardContent() { return (
{/* Navigation */} - + {/* Main Content */}
diff --git a/frontend/app/flashcards/page.tsx b/frontend/app/flashcards/page.tsx index a9a8b11..c0fdd9e 100644 --- a/frontend/app/flashcards/page.tsx +++ b/frontend/app/flashcards/page.tsx @@ -3,6 +3,7 @@ import { useState, useEffect } from 'react' import Link from 'next/link' import { ProtectedRoute } from '@/components/ProtectedRoute' +import { Navigation } from '@/components/Navigation' import { FlashcardForm } from '@/components/FlashcardForm' import { flashcardsService, type CardSet, type Flashcard } from '@/lib/services/flashcards' @@ -125,7 +126,10 @@ function FlashcardsContent() { return (
- {/* Header */} + {/* Navigation */} + + + {/* Page Header */}
diff --git a/frontend/components/Navigation.tsx b/frontend/components/Navigation.tsx new file mode 100644 index 0000000..68574fc --- /dev/null +++ b/frontend/components/Navigation.tsx @@ -0,0 +1,69 @@ +'use client' + +import Link from 'next/link' +import { usePathname } from 'next/navigation' +import { useAuth } from '@/contexts/AuthContext' + +export function Navigation() { + const { user, logout } = useAuth() + const pathname = usePathname() + + const navItems = [ + { href: '/dashboard', label: '儀表板' }, + { href: '/flashcards', label: '詞卡' }, + { href: '/learn', label: '學習' }, + { href: '/generate', label: 'AI 生成' }, + ] + + return ( + + ) +} \ No newline at end of file