22 lines
128 KiB
JavaScript
22 lines
128 KiB
JavaScript
"use strict";
|
||
/*
|
||
* ATTENTION: An "eval-source-map" devtool has been used.
|
||
* This devtool is neither made for production nor for readable output files.
|
||
* It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools.
|
||
* If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/)
|
||
* or disable the default devtool with "devtool: false".
|
||
* If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/).
|
||
*/
|
||
self["webpackHotUpdate_N_E"]("app/dashboard/analytics/page",{
|
||
|
||
/***/ "(app-pages-browser)/./app/dashboard/analytics/page.tsx":
|
||
/*!******************************************!*\
|
||
!*** ./app/dashboard/analytics/page.tsx ***!
|
||
\******************************************/
|
||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": function() { return /* binding */ Analytics; }\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 _barrel_optimize_names_Cell_Pie_PieChart_ResponsiveContainer_Tooltip_recharts__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! __barrel_optimize__?names=Cell,Pie,PieChart,ResponsiveContainer,Tooltip!=!recharts */ \"(app-pages-browser)/./node_modules/recharts/es6/component/ResponsiveContainer.js\");\n/* harmony import */ var _barrel_optimize_names_Cell_Pie_PieChart_ResponsiveContainer_Tooltip_recharts__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! __barrel_optimize__?names=Cell,Pie,PieChart,ResponsiveContainer,Tooltip!=!recharts */ \"(app-pages-browser)/./node_modules/recharts/es6/chart/PieChart.js\");\n/* harmony import */ var _barrel_optimize_names_Cell_Pie_PieChart_ResponsiveContainer_Tooltip_recharts__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! __barrel_optimize__?names=Cell,Pie,PieChart,ResponsiveContainer,Tooltip!=!recharts */ \"(app-pages-browser)/./node_modules/recharts/es6/polar/Pie.js\");\n/* harmony import */ var _barrel_optimize_names_Cell_Pie_PieChart_ResponsiveContainer_Tooltip_recharts__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! __barrel_optimize__?names=Cell,Pie,PieChart,ResponsiveContainer,Tooltip!=!recharts */ \"(app-pages-browser)/./node_modules/recharts/es6/component/Cell.js\");\n/* harmony import */ var _barrel_optimize_names_Cell_Pie_PieChart_ResponsiveContainer_Tooltip_recharts__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! __barrel_optimize__?names=Cell,Pie,PieChart,ResponsiveContainer,Tooltip!=!recharts */ \"(app-pages-browser)/./node_modules/recharts/es6/component/Tooltip.js\");\n/* harmony import */ var _barrel_optimize_names_Download_Globe_ScanLine_ShieldCheck_Users_lucide_react__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! __barrel_optimize__?names=Download,Globe,ScanLine,ShieldCheck,Users!=!lucide-react */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/download.js\");\n/* harmony import */ var _barrel_optimize_names_Download_Globe_ScanLine_ShieldCheck_Users_lucide_react__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! __barrel_optimize__?names=Download,Globe,ScanLine,ShieldCheck,Users!=!lucide-react */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/scan-line.js\");\n/* harmony import */ var _barrel_optimize_names_Download_Globe_ScanLine_ShieldCheck_Users_lucide_react__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! __barrel_optimize__?names=Download,Globe,ScanLine,ShieldCheck,Users!=!lucide-react */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/users.js\");\n/* harmony import */ var _barrel_optimize_names_Download_Globe_ScanLine_ShieldCheck_Users_lucide_react__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! __barrel_optimize__?names=Download,Globe,ScanLine,ShieldCheck,Users!=!lucide-react */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/shield-check.js\");\n/* harmony import */ var _barrel_optimize_names_Download_Globe_ScanLine_ShieldCheck_Users_lucide_react__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! __barrel_optimize__?names=Download,Globe,ScanLine,ShieldCheck,Users!=!lucide-react */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/globe.js\");\n/* harmony import */ var _components_ScanTrendChart__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/components/ScanTrendChart */ \"(app-pages-browser)/./components/ScanTrendChart.tsx\");\n/* harmony import */ var _lib_api__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/lib/api */ \"(app-pages-browser)/./lib/api.ts\");\n/* harmony import */ var _components_GeographicOverview__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/components/GeographicOverview */ \"(app-pages-browser)/./components/GeographicOverview.tsx\");\n/* __next_internal_client_entry_do_not_use__ default auto */ \nvar _s = $RefreshSig$();\n\n\n\n\n\n\nconst PRESETS = [\n {\n label: \"7d\",\n days: 7\n },\n {\n label: \"30d\",\n days: 30\n },\n {\n label: \"90d\",\n days: 90\n }\n];\nconst DONUT = [\n \"#2563eb\",\n \"#10b981\",\n \"#f59e0b\",\n \"#94a3b8\"\n];\nconst DOW = [\n \"Mon\",\n \"Tue\",\n \"Wed\",\n \"Thu\",\n \"Fri\",\n \"Sat\",\n \"Sun\"\n];\nfunction Analytics() {\n _s();\n const [days, setDays] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(30);\n const [s, setS] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);\n const [trend, setTrend] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)([]);\n const [topP, setTopP] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)([]);\n const [cities, setCities] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)([]);\n const [devices, setDevices] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)([]);\n const [heat, setHeat] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)([]);\n const [recent, setRecent] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)([]);\n const [geo, setGeo] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)([]);\n const totalDevices = devices.reduce((sum, d)=>sum + d.scans, 0);\n const [brands, setBrands] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)([]);\n const [brandId, setBrandId] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(\"\");\n const [recentTotal, setRecentTotal] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(0);\n const startPage = Math.max(1, recentPage - 2);\n const endPage = Math.min(recentTotalPages, startPage + 4);\n const pages = Array.from({\n length: endPage - startPage + 1\n }, (_, i)=>startPage + i);\n const DONUT = [\n \"#22c55e\",\n \"#2563eb\",\n \"#7c3aed\",\n \"#f59e0b\"\n ];\n const [fromDate, setFromDate] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(\"\");\n const [toDate, setToDate] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(\"\");\n const params = new URLSearchParams();\n if (fromDate && toDate) {\n params.append(\"from_date\", fromDate);\n params.append(\"to_date\", toDate);\n } else {\n params.append(\"days\", String(days));\n }\n if (brandId) {\n params.append(\"brand_id\", brandId);\n }\n const query = params.toString();\n const [recentPage, setRecentPage] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(1);\n const [recentTotalPages, setRecentTotalPages] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(1);\n const recentPageSize = 20;\n const clearFilters = ()=>{\n setBrandId(\"\");\n setFromDate(\"\");\n setToDate(\"\");\n setDays(30);\n setRecentPage(1); // default preset\n };\n const [showAllProducts, setShowAllProducts] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{\n (0,_lib_api__WEBPACK_IMPORTED_MODULE_3__.api)(\"/analytics/brands\").then(setBrands);\n }, []);\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{\n (0,_lib_api__WEBPACK_IMPORTED_MODULE_3__.api)(\"/analytics/summary?\".concat(query)).then(setS).catch(()=>{});\n (0,_lib_api__WEBPACK_IMPORTED_MODULE_3__.api)(\"/analytics/trend?\".concat(query)).then(setTrend).catch(()=>{});\n (0,_lib_api__WEBPACK_IMPORTED_MODULE_3__.api)(\"/analytics/top-products?\".concat(query)).then(setTopP).catch(()=>{});\n (0,_lib_api__WEBPACK_IMPORTED_MODULE_3__.api)(\"/analytics/top-cities?\".concat(query)).then(setCities).catch(()=>{});\n (0,_lib_api__WEBPACK_IMPORTED_MODULE_3__.api)(\"/analytics/devices?\".concat(query)).then(setDevices).catch(()=>{});\n (0,_lib_api__WEBPACK_IMPORTED_MODULE_3__.api)(\"/analytics/geography?\".concat(query)).then(setGeo).catch(()=>{});\n (0,_lib_api__WEBPACK_IMPORTED_MODULE_3__.api)(\"/analytics/time-distribution?\".concat(query)).then(setHeat).catch(()=>{});\n (0,_lib_api__WEBPACK_IMPORTED_MODULE_3__.api)(\"/analytics/recent-scans?\".concat(query, \"&page=\").concat(recentPage, \"&page_size=\").concat(recentPageSize)).then((res)=>{\n setRecent(res.items);\n setRecentTotalPages(res.pages);\n setRecentTotal(res.total);\n }).catch(()=>{});\n }, [\n days,\n fromDate,\n toDate,\n brandId,\n recentPage\n ]);\n const maxP = Math.max(1, ...topP.map((p)=>p.scans));\n const maxHeat = Math.max(1, ...heat.map((h)=>h.count));\n const downloadCsv = async ()=>{\n const token = localStorage.getItem(\"vp_token\"); // or whatever key you use\n const res = await fetch(\"\".concat(_lib_api__WEBPACK_IMPORTED_MODULE_3__.apiBase, \"/analytics/export?\").concat(query), {\n headers: {\n Authorization: \"Bearer \".concat(token)\n }\n });\n if (!res.ok) {\n alert(\"Failed to download CSV\");\n return;\n }\n const blob = await res.blob();\n const url = window.URL.createObjectURL(blob);\n const a = document.createElement(\"a\");\n a.href = url;\n a.download = \"scans.csv\";\n document.body.appendChild(a);\n a.click();\n a.remove();\n window.URL.revokeObjectURL(url);\n };\n var _s_total_scans, _s_unique_consumers, _s_today_scans, _s_active_products, _s_avg_trust_score, _s_countries;\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-y-5\",\n children: [\n /*#__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)(\"h2\", {\n className: \"text-xl font-bold\",\n children: \"Analytics & Insights\"\n }, void 0, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 131,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-3\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex rounded-lg border border-slate-200 overflow-hidden\",\n children: PRESETS.map((p)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>{\n setDays(p.days);\n setFromDate(\"\");\n setToDate(\"\");\n },\n className: \"px-3 py-1.5 text-sm font-medium \".concat(days === p.days ? \"bg-brand-600 text-white\" : \"bg-white text-slate-600\"),\n children: p.label\n }, p.days, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 135,\n columnNumber: 3\n }, this))\n }, void 0, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 133,\n columnNumber: 11\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)(\"input\", {\n type: \"date\",\n value: fromDate,\n onChange: (e)=>setFromDate(e.target.value),\n className: \"border rounded-lg px-3 py-2 text-sm\"\n }, void 0, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 154,\n columnNumber: 3\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n children: \"to\"\n }, void 0, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 161,\n columnNumber: 3\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"date\",\n value: toDate,\n onChange: (e)=>setToDate(e.target.value),\n className: \"border rounded-lg px-3 py-2 text-sm\"\n }, void 0, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 163,\n columnNumber: 3\n }, this)\n ]\n }, void 0, true, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 152,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"select\", {\n value: brandId,\n onChange: (e)=>setBrandId(e.target.value),\n className: \"border rounded-lg px-3 py-2 text-sm\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"option\", {\n value: \"\",\n children: \"All Brands\"\n }, void 0, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 176,\n columnNumber: 5\n }, this),\n brands.map((b)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"option\", {\n value: b.id,\n children: b.name\n }, b.id, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 179,\n columnNumber: 9\n }, this))\n ]\n }, void 0, true, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 171,\n columnNumber: 1\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: clearFilters,\n className: \"border border-slate-200 px-3 py-2 rounded-lg text-sm font-medium hover:bg-slate-50\",\n children: \"Clear Filters\"\n }, void 0, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 183,\n columnNumber: 10\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: downloadCsv,\n className: \"flex items-center gap-2 border border-slate-200 px-3 py-2 rounded-lg text-sm font-medium\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Download_Globe_ScanLine_ShieldCheck_Users_lucide_react__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n className: \"h-4 w-4\"\n }, void 0, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 193,\n columnNumber: 3\n }, this),\n \"CSV\"\n ]\n }, void 0, true, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 189,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 132,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\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: \"grid grid-cols-2 sm:grid-cols-3 lg:grid-cols-6 gap-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(Kpi, {\n label: \"Total Scans\",\n value: (_s_total_scans = s === null || s === void 0 ? void 0 : s.total_scans) !== null && _s_total_scans !== void 0 ? _s_total_scans : 0,\n icon: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Download_Globe_ScanLine_ShieldCheck_Users_lucide_react__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n className: \"h-5 w-5\"\n }, void 0, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 201,\n columnNumber: 68\n }, void 0),\n tint: \"bg-blue-50 text-blue-600\"\n }, void 0, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 201,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(Kpi, {\n label: \"Unique Consumers\",\n value: (_s_unique_consumers = s === null || s === void 0 ? void 0 : s.unique_consumers) !== null && _s_unique_consumers !== void 0 ? _s_unique_consumers : 0,\n icon: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Download_Globe_ScanLine_ShieldCheck_Users_lucide_react__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n className: \"h-5 w-5\"\n }, void 0, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 202,\n columnNumber: 78\n }, void 0),\n tint: \"bg-violet-50 text-violet-600\"\n }, void 0, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 202,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(Kpi, {\n label: \"Today\",\n value: (_s_today_scans = s === null || s === void 0 ? void 0 : s.today_scans) !== null && _s_today_scans !== void 0 ? _s_today_scans : 0,\n icon: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Download_Globe_ScanLine_ShieldCheck_Users_lucide_react__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n className: \"h-5 w-5\"\n }, void 0, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 203,\n columnNumber: 62\n }, void 0),\n tint: \"bg-orange-50 text-orange-500\"\n }, void 0, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 203,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(Kpi, {\n label: \"Active Products\",\n value: (_s_active_products = s === null || s === void 0 ? void 0 : s.active_products) !== null && _s_active_products !== void 0 ? _s_active_products : 0,\n icon: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Download_Globe_ScanLine_ShieldCheck_Users_lucide_react__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n className: \"h-5 w-5\"\n }, void 0, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 204,\n columnNumber: 76\n }, void 0),\n tint: \"bg-emerald-50 text-emerald-600\"\n }, void 0, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 204,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(Kpi, {\n label: \"Avg Trust\",\n value: \"\".concat((_s_avg_trust_score = s === null || s === void 0 ? void 0 : s.avg_trust_score) !== null && _s_avg_trust_score !== void 0 ? _s_avg_trust_score : 0, \"%\"),\n icon: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Download_Globe_ScanLine_ShieldCheck_Users_lucide_react__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n className: \"h-5 w-5\"\n }, void 0, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 205,\n columnNumber: 76\n }, void 0),\n tint: \"bg-blue-50 text-blue-600\"\n }, void 0, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 205,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(Kpi, {\n label: \"Countries\",\n value: (_s_countries = s === null || s === void 0 ? void 0 : s.countries) !== null && _s_countries !== void 0 ? _s_countries : 0,\n icon: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Download_Globe_ScanLine_ShieldCheck_Users_lucide_react__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n className: \"h-5 w-5\"\n }, void 0, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 206,\n columnNumber: 64\n }, void 0),\n tint: \"bg-amber-50 text-amber-500\"\n }, void 0, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 206,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 200,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid lg:grid-cols-3 gap-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"card p-5 lg:col-span-1\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h3\", {\n className: \"font-bold mb-2\",\n children: \"Scan Trend\"\n }, void 0, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 211,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ScanTrendChart__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n data: trend\n }, void 0, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 212,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 210,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"card p-5\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h3\", {\n className: \"font-bold mb-5\",\n children: \"Device Types\"\n }, void 0, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 215,\n columnNumber: 3\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-6 items-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex justify-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Cell_Pie_PieChart_ResponsiveContainer_Tooltip_recharts__WEBPACK_IMPORTED_MODULE_10__.ResponsiveContainer, {\n width: 200,\n height: 200,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Cell_Pie_PieChart_ResponsiveContainer_Tooltip_recharts__WEBPACK_IMPORTED_MODULE_11__.PieChart, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Cell_Pie_PieChart_ResponsiveContainer_Tooltip_recharts__WEBPACK_IMPORTED_MODULE_12__.Pie, {\n data: devices,\n dataKey: \"scans\",\n nameKey: \"device\",\n innerRadius: 55,\n outerRadius: 80,\n stroke: \"#fff\",\n strokeWidth: 2,\n children: devices.map((_, i)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Cell_Pie_PieChart_ResponsiveContainer_Tooltip_recharts__WEBPACK_IMPORTED_MODULE_13__.Cell, {\n fill: DONUT[i % DONUT.length]\n }, i, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 232,\n columnNumber: 15\n }, this))\n }, void 0, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 222,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Cell_Pie_PieChart_ResponsiveContainer_Tooltip_recharts__WEBPACK_IMPORTED_MODULE_14__.Tooltip, {\n formatter: (value)=>[\n \"\".concat(value, \" scans\"),\n \"Scans\"\n ]\n }, void 0, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 239,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 221,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 220,\n columnNumber: 7\n }, this)\n }, void 0, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 219,\n columnNumber: 5\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-y-4\",\n children: devices.map((d, i)=>{\n const percent = totalDevices === 0 ? 0 : (d.scans / totalDevices * 100).toFixed(1);\n return /*#__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 items-center gap-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"h-2 w-1 rounded-full\",\n style: {\n backgroundColor: DONUT[i % DONUT.length]\n }\n }, void 0, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 263,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"font-medium text-slate-700\",\n children: d.device\n }, void 0, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 270,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 262,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-sm font-semibold text-slate-600\",\n children: [\n percent,\n \"% (\",\n d.scans.toLocaleString(),\n \")\"\n ]\n }, void 0, true, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 275,\n columnNumber: 13\n }, this)\n ]\n }, d.device, true, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 258,\n columnNumber: 11\n }, this);\n })\n }, void 0, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 250,\n columnNumber: 5\n }, this)\n ]\n }, void 0, true, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 217,\n columnNumber: 3\n }, this)\n ]\n }, void 0, true, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 214,\n columnNumber: 8\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"card p-5\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h3\", {\n className: \"font-bold mb-4\",\n children: \"Scan Time Distribution\"\n }, void 0, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 285,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"overflow-x-auto\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"inline-grid gap-0.5\",\n style: {\n gridTemplateColumns: \"28px repeat(24, 10px)\"\n },\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {}, void 0, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 288,\n columnNumber: 13\n }, this),\n Array.from({\n length: 24\n }).map((_, h)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-[8px] text-slate-400 text-center\",\n children: h % 3 === 0 ? h : \"\"\n }, h, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 290,\n columnNumber: 15\n }, this)),\n DOW.map((day, d)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react__WEBPACK_IMPORTED_MODULE_1__.Fragment, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-[10px] text-slate-500 pr-1 flex items-center\",\n children: day\n }, void 0, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 294,\n columnNumber: 17\n }, this),\n Array.from({\n length: 24\n }).map((_, h)=>{\n const cell = heat.find((x)=>x.dow === d && x.hour === h);\n var _cell_count;\n const v = (_cell_count = cell === null || cell === void 0 ? void 0 : cell.count) !== null && _cell_count !== void 0 ? _cell_count : 0;\n const op = v === 0 ? 0.06 : 0.2 + v / maxHeat * 0.8;\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n title: \"\".concat(day, \" \").concat(h, \":00 — \").concat(v),\n className: \"h-[12px] w-[12px] rounded-[2px]\",\n style: {\n background: \"rgba(37,99,235,\".concat(op, \")\")\n }\n }, \"\".concat(d, \"-\").concat(h), false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 299,\n columnNumber: 26\n }, this);\n })\n ]\n }, \"row-\".concat(d), true, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 293,\n columnNumber: 15\n }, this))\n ]\n }, void 0, true, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 287,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 286,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 284,\n columnNumber: 10\n }, this)\n ]\n }, void 0, true, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 209,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid lg:grid-cols-3 gap-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"card p-5\",\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)(\"h3\", {\n className: \"font-bold\",\n children: \"Top Products\"\n }, void 0, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 312,\n columnNumber: 5\n }, this),\n topP.length > 5 && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>setShowAllProducts(!showAllProducts),\n className: \"text-sm font-medium text-blue-600 hover:underline\",\n children: showAllProducts ? \"Show Less\" : \"View All\"\n }, void 0, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 315,\n columnNumber: 7\n }, this)\n ]\n }, void 0, true, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 311,\n columnNumber: 3\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-y-3\",\n children: [\n (showAllProducts ? topP : topP.slice(0, 5)).map((p)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-3\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-36 truncate text-sm text-slate-600\",\n children: p.name\n }, void 0, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 327,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 h-3 rounded-full bg-slate-100 overflow-hidden\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-full rounded-full bg-blue-500\",\n style: {\n width: \"\".concat(p.scans / maxP * 100, \"%\")\n }\n }, void 0, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 332,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 331,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-12 text-right text-sm font-semibold\",\n children: p.scans\n }, void 0, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 340,\n columnNumber: 9\n }, this)\n ]\n }, p.name, true, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 326,\n columnNumber: 7\n }, this)),\n !showAllProducts && topP.length > 5 && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>setShowAllProducts(true),\n className: \"text-sm font-medium text-blue-600 hover:underline\",\n children: [\n \"+\",\n topP.length - 5,\n \" more products\"\n ]\n }, void 0, true, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 347,\n columnNumber: 7\n }, this),\n topP.length === 0 && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-sm text-slate-400\",\n children: \"No data.\"\n }, void 0, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 356,\n columnNumber: 7\n }, this)\n ]\n }, void 0, true, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 324,\n columnNumber: 3\n }, this)\n ]\n }, void 0, true, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 310,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"card p-5\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h3\", {\n className: \"font-bold mb-4\",\n children: \"Top Cities\"\n }, void 0, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 361,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"ol\", {\n className: \"space-y-2 text-sm\",\n children: [\n cities.map((c, i)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"li\", {\n className: \"flex justify-between\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-slate-600\",\n children: [\n i + 1,\n \". \",\n c.city\n ]\n }, void 0, true, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 365,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"font-semibold\",\n children: c.scans\n }, void 0, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 366,\n columnNumber: 17\n }, this)\n ]\n }, c.city, true, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 364,\n columnNumber: 15\n }, this)),\n cities.length === 0 && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"li\", {\n className: \"text-slate-400\",\n children: \"No data.\"\n }, void 0, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 369,\n columnNumber: 37\n }, this)\n ]\n }, void 0, true, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 362,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 360,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"card p-5\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h3\", {\n className: \"font-bold mb-4\",\n children: \"Geographic Overview\"\n }, void 0, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 373,\n columnNumber: 5\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_GeographicOverview__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n data: geo\n }, void 0, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 377,\n columnNumber: 5\n }, this)\n ]\n }, void 0, true, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 372,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 309,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"card overflow-x-auto\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h3\", {\n className: \"font-bold p-5 pb-3\",\n children: \"Recent Scans\"\n }, void 0, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 386,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"table\", {\n className: \"w-full text-sm\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"thead\", {\n className: \"bg-slate-50 text-slate-500 text-left\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"tr\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"th\", {\n className: \"px-4 py-3 font-medium\",\n children: \"Time\"\n }, void 0, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 390,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"th\", {\n className: \"px-4 py-3 font-medium\",\n children: \"Code\"\n }, void 0, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 391,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"th\", {\n className: \"px-4 py-3 font-medium\",\n children: \"City\"\n }, void 0, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 392,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"th\", {\n className: \"px-4 py-3 font-medium\",\n children: \"Country\"\n }, void 0, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 393,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"th\", {\n className: \"px-4 py-3 font-medium\",\n children: \"Device\"\n }, void 0, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 394,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"th\", {\n className: \"px-4 py-3 font-medium\",\n children: \"IP Address\"\n }, void 0, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 395,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 389,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 388,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"tbody\", {\n className: \"divide-y divide-slate-100\",\n children: [\n recent.map((r, i)=>/*#__PURE__*/ {\n var _r_city, _r_country, _r_device, _r_ip;\n return (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"tr\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"td\", {\n className: \"px-4 py-3 text-slate-500\",\n children: new Date(r.at).toLocaleString()\n }, void 0, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 401,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"td\", {\n className: \"px-4 py-3 font-mono text-slate-600\",\n children: r.code\n }, void 0, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 402,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"td\", {\n className: \"px-4 py-3\",\n children: (_r_city = r.city) !== null && _r_city !== void 0 ? _r_city : \"—\"\n }, void 0, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 403,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"td\", {\n className: \"px-4 py-3\",\n children: (_r_country = r.country) !== null && _r_country !== void 0 ? _r_country : \"—\"\n }, void 0, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 404,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"td\", {\n className: \"px-4 py-3\",\n children: (_r_device = r.device) !== null && _r_device !== void 0 ? _r_device : \"—\"\n }, void 0, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 405,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"td\", {\n className: \"px-4 py-3\",\n children: (_r_ip = r.ip) !== null && _r_ip !== void 0 ? _r_ip : \"—\"\n }, void 0, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 406,\n columnNumber: 17\n }, this)\n ]\n }, i, true, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 400,\n columnNumber: 15\n }, this);\n }),\n recent.length === 0 && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"tr\", {\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"td\", {\n colSpan: 5,\n className: \"px-4 py-10 text-center text-slate-400\",\n children: \"No scans yet.\"\n }, void 0, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 409,\n columnNumber: 41\n }, this)\n }, void 0, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 409,\n columnNumber: 37\n }, this)\n ]\n }, void 0, true, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 398,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 387,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center justify-between px-4 py-3 text-sm text-slate-500 border-t\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n children: [\n \"Showing\",\n \" \",\n recent.length === 0 ? 0 : (recentPage - 1) * recentPageSize + 1,\n \" \",\n \"to\",\n \" \",\n Math.min(recentPage * recentPageSize, recentTotal),\n \" \",\n \"of \",\n recentTotal\n ]\n }, void 0, true, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 413,\n columnNumber: 3\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex gap-1\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n disabled: recentPage === 1,\n onClick: ()=>setRecentPage(recentPage - 1),\n className: \"px-3 py-1 rounded border border-slate-200 disabled:opacity-40\",\n children: \"‹\"\n }, void 0, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 424,\n columnNumber: 5\n }, this),\n Array.from({\n length: recentTotalPages\n }).slice(0, 5).map((_, i)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>setRecentPage(i + 1),\n className: \"px-3 py-1 rounded \".concat(recentPage === i + 1 ? \"bg-brand-600 text-white\" : \"border border-slate-200\"),\n children: i + 1\n }, i, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 435,\n columnNumber: 9\n }, this)),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n disabled: recentPage === recentTotalPages,\n onClick: ()=>setRecentPage(recentPage + 1),\n className: \"px-3 py-1 rounded border border-slate-200 disabled:opacity-40\",\n children: \"›\"\n }, void 0, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 448,\n columnNumber: 5\n }, this)\n ]\n }, void 0, true, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 423,\n columnNumber: 3\n }, this)\n ]\n }, void 0, true, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 412,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 385,\n columnNumber: 7\n }, this)\n ]\n }, void 0, true, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 129,\n columnNumber: 5\n }, this);\n}\n_s(Analytics, \"HImQ3Jyw0k/vj8rTvG43NFlDDLU=\");\n_c = Analytics;\nfunction Kpi(param) {\n let { label, value, icon, tint } = param;\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"card p-4\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-3\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-11 w-11 rounded-xl grid place-items-center shrink-0 \".concat(tint),\n children: icon\n }, void 0, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 466,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"min-w-0\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xl font-extrabold text-slate-900\",\n children: value\n }, void 0, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 468,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs text-slate-500\",\n children: label\n }, void 0, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 469,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 467,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 465,\n columnNumber: 7\n }, this)\n }, void 0, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 464,\n columnNumber: 5\n }, this);\n}\n_c1 = Kpi;\nvar _c, _c1;\n$RefreshReg$(_c, \"Analytics\");\n$RefreshReg$(_c1, \"Kpi\");\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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL2FwcC9kYXNoYm9hcmQvYW5hbHl0aWNzL3BhZ2UudHN4IiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDc0Q7QUFHcEM7QUFDMkQ7QUFDcEI7QUFDaEI7QUFDd0I7QUFFakUsTUFBTWlCLFVBQVU7SUFDZDtRQUFFQyxPQUFPO1FBQU1DLE1BQU07SUFBRTtJQUN2QjtRQUFFRCxPQUFPO1FBQU9DLE1BQU07SUFBRztJQUN6QjtRQUFFRCxPQUFPO1FBQU9DLE1BQU07SUFBRztDQUMxQjtBQUNELE1BQU1DLFFBQVE7SUFBQztJQUFXO0lBQVc7SUFBVztDQUFVO0FBQzFELE1BQU1DLE1BQU07SUFBQztJQUFPO0lBQU87SUFBTztJQUFPO0lBQU87SUFBTztDQUFNO0FBRzlDLFNBQVNDOztJQUN0QixNQUFNLENBQUNILE1BQU1JLFFBQVEsR0FBR3JCLCtDQUFRQSxDQUFDO0lBQ2pDLE1BQU0sQ0FBQ3NCLEdBQUdDLEtBQUssR0FBR3ZCLCtDQUFRQSxDQUFNO0lBQ2hDLE1BQU0sQ0FBQ3dCLE9BQU9DLFNBQVMsR0FBR3pCLCtDQUFRQSxDQUFRLEVBQUU7SUFDNUMsTUFBTSxDQUFDMEIsTUFBTUMsUUFBUSxHQUFHM0IsK0NBQVFBLENBQVEsRUFBRTtJQUMxQyxNQUFNLENBQUM0QixRQUFRQyxVQUFVLEdBQUc3QiwrQ0FBUUEsQ0FBUSxFQUFFO0lBQzlDLE1BQU0sQ0FBQzhCLFNBQVNDLFdBQVcsR0FBRy9CLCtDQUFRQSxDQUFRLEVBQUU7SUFDaEQsTUFBTSxDQUFDZ0MsTUFBTUMsUUFBUSxHQUFHakMsK0NBQVFBLENBQVEsRUFBRTtJQUMxQyxNQUFNLENBQUNrQyxRQUFRQyxVQUFVLEdBQUduQywrQ0FBUUEsQ0FBUSxFQUFFO0lBQzlDLE1BQU0sQ0FBQ29DLEtBQUtDLE9BQU8sR0FBR3JDLCtDQUFRQSxDQUFRLEVBQUU7SUFDeEMsTUFBTXNDLGVBQWVSLFFBQVFTLE1BQU0sQ0FBQyxDQUFDQyxLQUFLQyxJQUFNRCxN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Ozs7Ozs7Ozs7OztBQVFMO0dBeGJ3QjlGO0tBQUFBO0FBMGJ4QixTQUFTOEcsSUFBSSxLQUFpQztRQUFqQyxFQUFFbEgsS0FBSyxFQUFFd0csS0FBSyxFQUFFWSxJQUFJLEVBQUVDLElBQUksRUFBTyxHQUFqQztJQUNYLHFCQUNFLDhEQUFDcEI7UUFBSUMsV0FBVTtrQkFDYiw0RUFBQ0Q7WUFBSUMsV0FBVTs7OEJBQ2IsOERBQUNEO29CQUFJQyxXQUFXLHlEQUE4RCxPQUFMbUI7OEJBQVNEOzs7Ozs7OEJBQ2xGLDhEQUFDbkI7b0JBQUlDLFdBQVU7O3NDQUNiLDhEQUFDRDs0QkFBSUMsV0FBVTtzQ0FBeUNNOzs7Ozs7c0NBQ3hELDhEQUFDUDs0QkFBSUMsV0FBVTtzQ0FBMEJsRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFLbkQ7TUFaU2tIIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL2FwcC9kYXNoYm9hcmQvYW5hbHl0aWNzL3BhZ2UudHN4P2I4MjgiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2UgY2xpZW50XCI7XG5pbXBvcnQgeyBGcmFnbWVudCwgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHtcbiAgUGllQ2hhcnQsIFBpZSwgQ2VsbCwgUmVzcG9uc2l2ZUNvbnRhaW5lciwgVG9vbHRpcCxcbn0gZnJvbSBcInJlY2hhcnRzXCI7XG5pbXBvcnQgeyBEb3dubG9hZCwgU2NhbkxpbmUsIFVzZXJzLCBHbG9iZSwgU2hpZWxkQ2hlY2sgfSBmcm9tIFwibHVjaWRlLXJlYWN0XCI7XG5pbXBvcnQgU2NhblRyZW5kQ2hhcnQgZnJvbSBcIkAvY29tcG9uZW50cy9TY2FuVHJlbmRDaGFydFwiO1xuaW1wb3J0IHsgYXBpLCBhcGlCYXNlIH0gZnJvbSBcIkAvbGliL2FwaVwiO1xuaW1wb3J0IEdlb2dyYXBoaWNPdmVydmlldyBmcm9tIFwiQC9jb21wb25lbnRzL0dlb2dyYXBoaWNPdmVydmlld1wiO1xuXG5jb25zdCBQUkVTRVRTID0gW1xuICB7IGxhYmVsOiBcIjdkXCIsIGRheXM6IDcgfSxcbiAgeyBsYWJlbDogXCIzMGRcIiwgZGF5czogMzAgfSxcbiAgeyBsYWJlbDogXCI5MGRcIiwgZGF5czogOTAgfSxcbl07XG5jb25zdCBET05VVCA9IFtcIiMyNTYzZWJcIiwgXCIjMTBiOTgxXCIsIFwiI2Y1OWUwYlwiLCBcIiM5NGEzYjhcIl07XG5jb25zdCBET1cgPSBbXCJNb25cIiwgXCJUdWVcIiwgXCJXZWRcIiwgXCJUaHVcIiwgXCJGcmlcIiwgXCJTYXRcIiwgXCJTdW5cIl07XG5cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gQW5hbHl0aWNzKCkge1xuICBjb25zdCBbZGF5cywgc2V0RGF5c10gPSB1c2VTdGF0ZSgzMCk7XG4gIGNvbnN0IFtzLCBzZXRTXSA9IHVzZVN0YXRlPGFueT4obnVsbCk7XG4gIGNvbnN0IFt0cmVuZCwgc2V0VHJlbmRdID0gdXNlU3RhdGU8YW55W10+KFtdKTtcbiAgY29uc3QgW3RvcFAsIHNldFRvcFBdID0gdXNlU3RhdGU8YW55W10+KFtdKTtcbiAgY29uc3QgW2NpdGllcywgc2V0Q2l0aWVzXSA9IHVzZVN0YXRlPGFueVtdPihbXSk7XG4gIGNvbnN0IFtkZXZpY2VzLCBzZXREZXZpY2VzXSA9IHVzZVN0YXRlPGFueVtdPihbXSk7XG4gIGNvbnN0IFtoZWF0LCBzZXRIZWF0XSA9IHVzZVN0YXRlPGFueVtdPihbXSk7XG4gIGNvbnN0IFtyZWNlbnQsIHNldFJlY2VudF0gPSB1c2VTdGF0ZTxhbnlbXT4oW10pO1xuICBjb25zdCBbZ2VvLCBzZXRHZW9dID0gdXNlU3RhdGU8YW55W10+KFtdKTtcbiAgY29uc3QgdG90YWxEZXZpY2VzID0gZGV2aWNlcy5yZWR1Y2UoKHN1bSwgZCkgPT4gc3VtICsgZC5zY2FucywgMCk7XG4gIGNvbnN0IFticmFuZHMsIHNldEJyYW5kc10gPSB1c2VTdGF0ZShbXSk7XG5jb25zdCBbYnJhbmRJZCwgc2V0QnJhbmRJZF0gPSB1c2VTdGF0ZShcIlwiKTtcbmNvbnN0IFtyZWNlbnRUb3RhbCwgc2V0UmVjZW50VG90YWxdID0gdXNlU3RhdGUoMCk7XG5jb25zdCBzdGFydFBhZ2UgPSBNYXRoLm1heCgxLCByZWNlbnRQYWdlIC0gMik7XG5jb25zdCBlbmRQYWdlID0gTWF0aC5taW4ocmVjZW50VG90YWxQYWdlcywgc3RhcnRQYWdlICsgNCk7XG5cbmNvbnN0IHBhZ2VzID0gQXJyYXkuZnJvbShcbiAgeyBsZW5ndGg6IGVuZFBhZ2UgLSBzdGFydFBhZ2UgKyAxIH0sXG4gIChfLCBpKSA9PiBzdGFydFBhZ2UgKyBpXG4pO1xuXG5jb25zdCBET05VVCA9IFtcbiAgXCIjMjJjNTVlXCIsIC8vIEFuZHJvaWQgLSBHcmVlblxuICBcIiMyNTYzZWJcIiwgLy8gaU9TIC0gQmx1ZVxuICBcIiM3YzNhZWRcIiwgLy8gRGVza3RvcCAtIFB1cnBsZVxuICBcIiNmNTllMGJcIiwgLy8gT3RoZXIgLSBPcmFuZ2Vcbl07XG5jb25zdCBbZnJvbURhdGUsIHNldEZyb21EYXRlXSA9IHVzZVN0YXRlKFwiXCIpO1xuY29uc3QgW3RvRGF0ZSwgc2V0VG9EYXRlXSA9IHVzZVN0YXRlKFwiXCIpO1xuY29uc3QgcGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcygpO1xuXG5pZiAoZnJvbURhdGUgJiYgdG9EYXRlKSB7XG4gICAgcGFyYW1zLmFwcGVuZChcImZyb21fZGF0ZVwiLCBmcm9tRGF0ZSk7XG4gICAgcGFyYW1zLmFwcGVuZChcInRvX2RhdGVcIiwgdG9EYXRlKTtcbn0gZWxzZSB7XG4gICAgcGFyYW1zLmFwcGVuZChcImRheXNcIiwgU3RyaW5nKGRheXMpKTtcbn1cblxuaWYgKGJyYW5kSWQpIHtcbiAgICBwYXJhbXMuYXBwZW5kKFwiYnJhbmRfaWRcIiwgYnJhbmRJZCk7XG59XG5cbmNvbnN0IHF1ZXJ5ID0gcGFyYW1zLnRvU3RyaW5nKCk7XG5cbmNvbnN0IFtyZWNlbnRQYWdlLCBzZXRSZWNlbnRQYWdlXSA9IHVzZVN0YXRlKDEpO1xuY29uc3QgW3JlY2VudFRvdGFsUGFnZXMsIHNldFJlY2VudFRvdGFsUGFnZXNdID0gdXNlU3RhdGUoMSk7XG5jb25zdCByZWNlbnRQYWdlU2l6ZSA9IDIwO1xuY29uc3QgY2xlYXJGaWx0ZXJzID0gKCkgPT4ge1xuICBzZXRCcmFuZElkKFwiXCIpO1xuICBzZXRGcm9tRGF0ZShcIlwiKTtcbiAgc2V0VG9EYXRlKFwiXCIpO1xuICBzZXREYXlzKDMwKTtcbiAgc2V0UmVjZW50UGFnZSgxKTsgLy8gZGVmYXVsdCBwcmVzZXRcbn07XG5jb25zdCBbc2hvd0FsbFByb2R1Y3RzLCBzZXRTaG93QWxsUHJvZHVjdHNdID0gdXNlU3RhdGUoZmFsc2UpO1xudXNlRWZmZWN0KCgpID0+IHtcbiAgICBhcGkoXCIvYW5hbHl0aWNzL2JyYW5kc1wiKS50aGVuKHNldEJyYW5kcyk7XG59LCBbXSk7XG4gdXNlRWZmZWN0KCgpID0+IHtcbiAgYXBpKGAvYW5hbHl0aWNzL3N1bW1hcnk/JHtxdWVyeX1gKS50aGVuKHNldFMpLmNhdGNoKCgpID0+IHt9KTtcbiAgYXBpKGAvYW5hbHl0aWNzL3RyZW5kPyR7cXVlcnl9YCkudGhlbihzZXRUcmVuZCkuY2F0Y2goKCkgPT4ge30pO1xuICBhcGkoYC9hbmFseXRpY3MvdG9wLXByb2R1Y3RzPyR7cXVlcnl9YCkudGhlbihzZXRUb3BQKS5jYXRjaCgoKSA9PiB7fSk7XG4gIGFwaShgL2FuYWx5dGljcy90b3AtY2l0aWVzPyR7cXVlcnl9YCkudGhlbihzZXRDaXRpZXMpLmNhdGNoKCgpID0+IHt9KTtcbiAgYXBpKGAvYW5hbHl0aWNzL2RldmljZXM/JHtxdWVyeX1gKS50aGVuKHNldERldmljZXMpLmNhdGNoKCgpID0+IHt9KTtcbiAgYXBpKGAvYW5hbHl0aWNzL2dlb2dyYXBoeT8ke3F1ZXJ5fWApLnRoZW4oc2V0R2VvKS5jYXRjaCgoKSA9PiB7fSk7XG4gIGFwaShgL2FuYWx5dGljcy90aW1lLWRpc3RyaWJ1dGlvbj8ke3F1ZXJ5fWApLnRoZW4oc2V0SGVhdCkuY2F0Y2goKCkgPT4ge30pO1xuICBhcGkoXG4gIGAvYW5hbHl0aWNzL3JlY2VudC1zY2Fucz8ke3F1ZXJ5fSZwYWdlPSR7cmVjZW50UGFnZX0mcGFnZV9zaXplPSR7cmVjZW50UGFnZVNpemV9YFxuKVxuICAudGhlbigocmVzKSA9PiB7XG4gICAgc2V0UmVjZW50KHJlcy5pdGVtcyk7XG4gICAgc2V0UmVjZW50VG90YWxQYWdlcyhyZXMucGFnZXMpO1xuICAgIHNldFJlY2VudFRvdGFsKHJlcy50b3RhbCk7XG4gIH0pXG4gIC5jYXRjaCgoKSA9PiB7fSk7XG4gIFxufSwgW2RheXMsIGZyb21EYXRlLCB0b0RhdGUsYnJhbmRJZCwgcmVjZW50UGFnZV0pO1xuXG4gIGNvbnN0IG1heFAgPSBNYXRoLm1heCgxLCAuLi50b3BQLm1hcCgocCkgPT4gcC5zY2FucykpO1xuICBjb25zdCBtYXhIZWF0ID0gTWF0aC5tYXgoMSwgLi4uaGVhdC5tYXAoKGgpID0+IGguY291bnQpKTtcbiAgY29uc3QgZG93bmxvYWRDc3YgPSBhc3luYyAoKSA9PiB7XG4gIGNvbnN0IHRva2VuID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJ2cF90b2tlblwiKTsgLy8gb3Igd2hhdGV2ZXIga2V5IHlvdSB1c2VcblxuICBjb25zdCByZXMgPSBhd2FpdCBmZXRjaChgJHthcGlCYXNlfS9hbmFseXRpY3MvZXhwb3J0PyR7cXVlcnl9YCwge1xuICAgIGhlYWRlcnM6IHtcbiAgICAgIEF1dGhvcml6YXRpb246IGBCZWFyZXIgJHt0b2tlbn1gLFxuICAgIH0sXG4gIH0pO1xuXG4gIGlmICghcmVzLm9rKSB7XG4gICAgYWxlcnQoXCJGYWlsZWQgdG8gZG93bmxvYWQgQ1NWXCIpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IGJsb2IgPSBhd2FpdCByZXMuYmxvYigpO1xuICBjb25zdCB1cmwgPSB3aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcblxuICBjb25zdCBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImFcIik7XG4gIGEuaHJlZiA9IHVybDtcbiAgYS5kb3dubG9hZCA9IFwic2NhbnMuY3N2XCI7XG4gIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoYSk7XG4gIGEuY2xpY2soKTtcbiAgYS5yZW1vdmUoKTtcblxuICB3aW5kb3cuVVJMLnJldm9rZU9iamVjdFVSTCh1cmwpO1xufTtcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwic3BhY2UteS01XCI+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlblwiPlxuICAgICAgICA8aDIgY2xhc3NOYW1lPVwidGV4dC14bCBmb250LWJvbGRcIj5BbmFseXRpY3MgJiBJbnNpZ2h0czwvaDI+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTNcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggcm91bmRlZC1sZyBib3JkZXIgYm9yZGVyLXNsYXRlLTIwMCBvdmVyZmxvdy1oaWRkZW5cIj5cbiAgICAgICAgICAgIHtQUkVTRVRTLm1hcCgocCkgPT4gKFxuICA8YnV0dG9uXG4gICAga2V5PXtwLmRheXN9XG4gICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgc2V0RGF5cyhwLmRheXMpO1xuICAgICAgc2V0RnJvbURhdGUoXCJcIik7XG4gICAgICBzZXRUb0RhdGUoXCJcIik7XG4gICAgfX1cbiAgICBjbGFzc05hbWU9e2BweC0zIHB5LTEuNSB0ZXh0LXNtIGZvbnQtbWVkaXVtICR7XG4gICAgICBkYXlzID09PSBwLmRheXNcbiAgICAgICAgPyBcImJnLWJyYW5kLTYwMCB0ZXh0LXdoaXRlXCJcbiAgICAgICAgOiBcImJnLXdoaXRlIHRleHQtc2xhdGUtNjAwXCJcbiAgICB9YH1cbiAgPlxuICAgIHtwLmxhYmVsfVxuICA8L2J1dHRvbj5cbikpfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTJcIj5cblxuICA8aW5wdXRcbiAgICB0eXBlPVwiZGF0ZVwiXG4gICAgdmFsdWU9e2Zyb21EYXRlfVxuICAgIG9uQ2hhbmdlPXsoZSkgPT4gc2V0RnJvbURhdGUoZS50YXJnZXQudmFsdWUpfVxuICAgIGNsYXNzTmFtZT1cImJvcmRlciByb3VuZGVkLWxnIHB4LTMgcHktMiB0ZXh0LXNtXCJcbiAgLz5cblxuICA8c3Bhbj50bzwvc3Bhbj5cblxuICA8aW5wdXRcbiAgICB0eXBlPVwiZGF0ZVwiXG4gICAgdmFsdWU9e3RvRGF0ZX1cbiAgICBvbkNoYW5nZT17KGUpID0+IHNldFRvRGF0ZShlLnRhcmdldC52YWx1ZSl9XG4gICAgY2xhc3NOYW1lPVwiYm9yZGVyIHJvdW5kZWQtbGcgcHgtMyBweS0yIHRleHQtc21cIlxuICAvPlxuXG48L2Rpdj5cbjxzZWxlY3RcbiAgICB2YWx1ZT17YnJhbmRJZH1cbiAgICBvbkNoYW5nZT17KGUpID0+IHNldEJyYW5kSWQoZS50YXJnZXQudmFsdWUpfVxuICAgIGNsYXNzTmFtZT1cImJvcmRlciByb3VuZGVkLWxnIHB4LTMgcHktMiB0ZXh0LXNtXCJcbj5cbiAgICA8b3B0aW9uIHZhbHVlPVwiXCI+QWxsIEJyYW5kczwvb3B0aW9uPlxuXG4gICAge2JyYW5kcy5tYXAoKGI6YW55KSA9PiAoXG4gICAgICAgIDxvcHRpb24ga2V5PXtiLmlkfSB2YWx1ZT17Yi5pZH0+XG4gICAgICAgICAgICB7Yi5uYW1lfVxuICAgICAgICA8L29wdGlvbj5cbiAgICApKX1cbjwvc2VsZWN0PjxidXR0b25cbiAgb25DbGljaz17Y2xlYXJGaWx0ZXJzfVxuICBjbGFzc05hbWU9XCJib3JkZXIgYm9yZGVyLXNsYXRlLTIwMCBweC0zIHB5LTIgcm91bmRlZC1sZyB0ZXh0LXNtIGZvbnQtbWVkaXVtIGhvdmVyOmJnLXNsYXRlLTUwXCJcbj5cbiAgQ2xlYXIgRmlsdGVyc1xuPC9idXR0b24+XG4gICAgICAgICAgPGJ1dHRvblxuICBvbkNsaWNrPXtkb3dubG9hZENzdn1cbiAgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTIgYm9yZGVyIGJvcmRlci1zbGF0ZS0yMDAgcHgtMyBweS0yIHJvdW5kZWQtbGcgdGV4dC1zbSBmb250LW1lZGl1bVwiXG4+XG4gIDxEb3dubG9hZCBjbGFzc05hbWU9XCJoLTQgdy00XCIgLz5cbiAgQ1NWXG48L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgey8qIEtQSXMgKi99XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImdyaWQgZ3JpZC1jb2xzLTIgc206Z3JpZC1jb2xzLTMgbGc6Z3JpZC1jb2xzLTYgZ2FwLTRcIj5cbiAgICAgICAgPEtwaSBsYWJlbD1cIlRvdGFsIFNjYW5zXCIgdmFsdWU9e3M/LnRvdGFsX3NjYW5zID8/IDB9IGljb249ezxTY2FuTGluZSBjbGFzc05hbWU9XCJoLTUgdy01XCIgLz59IHRpbnQ9XCJiZy1ibHVlLTUwIHRleHQtYmx1ZS02MDBcIiAvPlxuICAgICAgICA8S3BpIGxhYmVsPVwiVW5pcXVlIENvbnN1bWVyc1wiIHZhbHVlPXtzPy51bmlxdWVfY29uc3VtZXJzID8/IDB9IGljb249ezxVc2VycyBjbGFzc05hbWU9XCJoLTUgdy01XCIgLz59IHRpbnQ9XCJiZy12aW9sZXQtNTAgdGV4dC12aW9sZXQtNjAwXCIgLz5cbiAgICAgICAgPEtwaSBsYWJlbD1cIlRvZGF5XCIgdmFsdWU9e3M/LnRvZGF5X3NjYW5zID8/IDB9IGljb249ezxTY2FuTGluZSBjbGFzc05hbWU9XCJoLTUgdy01XCIgLz59IHRpbnQ9XCJiZy1vcmFuZ2UtNTAgdGV4dC1vcmFuZ2UtNTAwXCIgLz5cbiAgICAgICAgPEtwaSBsYWJlbD1cIkFjdGl2ZSBQcm9kdWN0c1wiIHZhbHVlPXtzPy5hY3RpdmVfcHJvZHVjdHMgPz8gMH0gaWNvbj17PFNoaWVsZENoZWNrIGNsYXNzTmFtZT1cImgtNSB3LTVcIiAvPn0gdGludD1cImJnLWVtZXJhbGQtNTAgdGV4dC1lbWVyYWxkLTYwMFwiIC8+XG4gICAgICAgIDxLcGkgbGFiZWw9XCJBdmcgVHJ1c3RcIiB2YWx1ZT17YCR7cz8uYXZnX3RydXN0X3Njb3JlID8/IDB9JWB9IGljb249ezxTaGllbGRDaGVjayBjbGFzc05hbWU9XCJoLTUgdy01XCIgLz59IHRpbnQ9XCJiZy1ibHVlLTUwIHRleHQtYmx1ZS02MDBcIiAvPlxuICAgICAgICA8S3BpIGxhYmVsPVwiQ291bnRyaWVzXCIgdmFsdWU9e3M/LmNvdW50cmllcyA/PyAwfSBpY29uPXs8R2xvYmUgY2xhc3NOYW1lPVwiaC01IHctNVwiIC8+fSB0aW50PVwiYmctYW1iZXItNTAgdGV4dC1hbWJlci01MDBcIiAvPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZ3JpZCBsZzpncmlkLWNvbHMtMyBnYXAtNFwiPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNhcmQgcC01IGxnOmNvbC1zcGFuLTFcIj5cbiAgICAgICAgICA8aDMgY2xhc3NOYW1lPVwiZm9udC1ib2xkIG1iLTJcIj5TY2FuIFRyZW5kPC9oMz5cbiAgICAgICAgICA8U2NhblRyZW5kQ2hhcnQgZGF0YT17dHJlbmR9IC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY2FyZCBwLTVcIj5cbiAgPGgzIGNsYXNzTmFtZT1cImZvbnQtYm9sZCBtYi01XCI+RGV2aWNlIFR5cGVzPC9oMz5cblxuICA8ZGl2IGNsYXNzTmFtZT1cImdyaWQgZ3JpZC1jb2xzLTEgbWQ6Z3JpZC1jb2xzLTIgZ2FwLTYgaXRlbXMtY2VudGVyXCI+XG4gICAgey8qIERvbnV0IENoYXJ0ICovfVxuICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBqdXN0aWZ5LWNlbnRlclwiPlxuICAgICAgPFJlc3BvbnNpdmVDb250YWluZXIgd2lkdGg9ezIwMH0gaGVpZ2h0PXsyMDB9PlxuICAgICAgICA8UGllQ2hhcnQ+XG4gICAgICAgICAgPFBpZVxuICAgICAgICAgICAgZGF0YT17ZGV2aWNlc31cbiAgICAgICAgICAgIGRhdGFLZXk9XCJzY2Fuc1wiXG4gICAgICAgICAgICBuYW1lS2V5PVwiZGV2aWNlXCJcbiAgICAgICAgICAgIGlubmVyUmFkaXVzPXs1NX1cbiAgICAgICAgICAgIG91dGVyUmFkaXVzPXs4MH1cbiAgICAgICAgICAgIHN0cm9rZT1cIiNmZmZcIlxuICAgICAgICAgICAgc3Ryb2tlV2lkdGg9ezJ9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge2RldmljZXMubWFwKChfLCBpKSA9PiAoXG4gICAgICAgICAgICAgIDxDZWxsXG4gICAgICAgICAgICAgICAga2V5PXtpfVxuICAgICAgICAgICAgICAgIGZpbGw9e0RPTlVUW2kgJSBET05VVC5sZW5ndGhdfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKSl9XG4gICAgICAgICAgPC9QaWU+XG5cbiAgICAgICAgICA8VG9vbHRpcFxuICAgICAgICAgICAgZm9ybWF0dGVyPXsodmFsdWU6IGFueSkgPT4gW1xuICAgICAgICAgICAgICBgJHt2YWx1ZX0gc2NhbnNgLFxuICAgICAgICAgICAgICBcIlNjYW5zXCIsXG4gICAgICAgICAgICBdfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvUGllQ2hhcnQ+XG4gICAgICA8L1Jlc3BvbnNpdmVDb250YWluZXI+XG4gICAgPC9kaXY+XG5cbiAgICB7LyogTGVnZW5kICovfVxuICAgIDxkaXYgY2xhc3NOYW1lPVwic3BhY2UteS00XCI+XG4gICAgICB7ZGV2aWNlcy5tYXAoKGQsIGkpID0+IHtcbiAgICAgICAgY29uc3QgcGVyY2VudCA9XG4gICAgICAgICAgdG90YWxEZXZpY2VzID09PSAwXG4gICAgICAgICAgICA/IDBcbiAgICAgICAgICAgIDogKChkLnNjYW5zIC8gdG90YWxEZXZpY2VzKSAqIDEwMCkudG9GaXhlZCgxKTtcblxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGtleT17ZC5kZXZpY2V9XG4gICAgICAgICAgICBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW5cIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTJcIj5cbiAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJoLTIgdy0xIHJvdW5kZWQtZnVsbFwiXG4gICAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogRE9OVVRbaSAlIERPTlVULmxlbmd0aF0sXG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgLz5cblxuICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJmb250LW1lZGl1bSB0ZXh0LXNsYXRlLTcwMFwiPlxuICAgICAgICAgICAgICAgIHtkLmRldmljZX1cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtc20gZm9udC1zZW1pYm9sZCB0ZXh0LXNsYXRlLTYwMFwiPlxuICAgICAgICAgICAgICB7cGVyY2VudH0lICh7ZC5zY2Fucy50b0xvY2FsZVN0cmluZygpfSlcbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKTtcbiAgICAgIH0pfVxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjYXJkIHAtNVwiPlxuICAgICAgICA8aDMgY2xhc3NOYW1lPVwiZm9udC1ib2xkIG1iLTRcIj5TY2FuIFRpbWUgRGlzdHJpYnV0aW9uPC9oMz5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJvdmVyZmxvdy14LWF1dG9cIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImlubGluZS1ncmlkIGdhcC0wLjVcIiBzdHlsZT17eyBncmlkVGVtcGxhdGVDb2x1bW5zOiBcIjI4cHggcmVwZWF0KDI0LCAxMHB4KVwiIH19PlxuICAgICAgICAgICAgPGRpdiAvPlxuICAgICAgICAgICAge0FycmF5LmZyb20oeyBsZW5ndGg6IDI0IH0pLm1hcCgoXywgaCkgPT4gKFxuICAgICAgICAgICAgICA8ZGl2IGtleT17aH0gY2xhc3NOYW1lPVwidGV4dC1bOHB4XSB0ZXh0LXNsYXRlLTQwMCB0ZXh0LWNlbnRlclwiPntoICUgMyA9PT0gMCA/IGggOiBcIlwifTwvZGl2PlxuICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICB7RE9XLm1hcCgoZGF5LCBkKSA9PiAoXG4gICAgICAgICAgICAgIDxGcmFnbWVudCBrZXk9e2Byb3ctJHtkfWB9PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1bMTBweF0gdGV4dC1zbGF0ZS01MDAgcHItMSBmbGV4IGl0ZW1zLWNlbnRlclwiPntkYXl9PC9kaXY+XG4gICAgICAgICAgICAgICAge0FycmF5LmZyb20oeyBsZW5ndGg6IDI0IH0pLm1hcCgoXywgaCkgPT4ge1xuICAgICAgICAgICAgICAgICAgY29uc3QgY2VsbCA9IGhlYXQuZmluZCgoeCkgPT4geC5kb3cgPT09IGQgJiYgeC5ob3VyID09PSBoKTtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IHYgPSBjZWxsPy5jb3VudCA/PyAwO1xuICAgICAgICAgICAgICAgICAgY29uc3Qgb3AgPSB2ID09PSAwID8gMC4wNiA6IDAuMiArICh2IC8gbWF4SGVhdCkgKiAwLjg7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gPGRpdiBrZXk9e2Ake2R9LSR7aH1gfSB0aXRsZT17YCR7ZGF5fSAke2h9OjAwIOKAlCAke3Z9YH1cbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiaC1bMTJweF0gdy1bMTJweF0gcm91bmRlZC1bMnB4XVwiIHN0eWxlPXt7IGJhY2tncm91bmQ6IGByZ2JhKDM3LDk5LDIzNSwke29wfSlgIH19IC8+O1xuICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICA8L0ZyYWdtZW50PlxuICAgICAgICAgICAgKSl9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJncmlkIGxnOmdyaWQtY29scy0zIGdhcC00XCI+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY2FyZCBwLTVcIj5cbiAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gbWItNFwiPlxuICAgIDxoMyBjbGFzc05hbWU9XCJmb250LWJvbGRcIj5Ub3AgUHJvZHVjdHM8L2gzPlxuXG4gICAge3RvcFAubGVuZ3RoID4gNSAmJiAoXG4gICAgICA8YnV0dG9uXG4gICAgICAgIG9uQ2xpY2s9eygpID0+IHNldFNob3dBbGxQcm9kdWN0cyghc2hvd0FsbFByb2R1Y3RzKX1cbiAgICAgICAgY2xhc3NOYW1lPVwidGV4dC1zbSBmb250LW1lZGl1bSB0ZXh0LWJsdWUtNjAwIGhvdmVyOnVuZGVybGluZVwiXG4gICAgICA+XG4gICAgICAgIHtzaG93QWxsUHJvZHVjdHMgPyBcIlNob3cgTGVzc1wiIDogXCJWaWV3IEFsbFwifVxuICAgICAgPC9idXR0b24+XG4gICAgKX1cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzc05hbWU9XCJzcGFjZS15LTNcIj5cbiAgICB7KHNob3dBbGxQcm9kdWN0cyA/IHRvcFAgOiB0b3BQLnNsaWNlKDAsIDUpKS5tYXAoKHApID0+IChcbiAgICAgIDxkaXYga2V5PXtwLm5hbWV9IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGdhcC0zXCI+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy0zNiB0cnVuY2F0ZSB0ZXh0LXNtIHRleHQtc2xhdGUtNjAwXCI+XG4gICAgICAgICAge3AubmFtZX1cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4LTEgaC0zIHJvdW5kZWQtZnVsbCBiZy1zbGF0ZS0xMDAgb3ZlcmZsb3ctaGlkZGVuXCI+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3NOYW1lPVwiaC1mdWxsIHJvdW5kZWQtZnVsbCBiZy1ibHVlLTUwMFwiXG4gICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICB3aWR0aDogYCR7KHAuc2NhbnMgLyBtYXhQKSAqIDEwMH0lYCxcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LTEyIHRleHQtcmlnaHQgdGV4dC1zbSBmb250LXNlbWlib2xkXCI+XG4gICAgICAgICAge3Auc2NhbnN9XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgKSl9XG5cbiAgICB7IXNob3dBbGxQcm9kdWN0cyAmJiB0b3BQLmxlbmd0aCA+IDUgJiYgKFxuICAgICAgPGJ1dHRvblxuICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRTaG93QWxsUHJvZHVjdHModHJ1ZSl9XG4gICAgICAgIGNsYXNzTmFtZT1cInRleHQtc20gZm9udC1tZWRpdW0gdGV4dC1ibHVlLTYwMCBob3Zlcjp1bmRlcmxpbmVcIlxuICAgICAgPlxuICAgICAgICAre3RvcFAubGVuZ3RoIC0gNX0gbW9yZSBwcm9kdWN0c1xuICAgICAgPC9idXR0b24+XG4gICAgKX1cblxuICAgIHt0b3BQLmxlbmd0aCA9PT0gMCAmJiAoXG4gICAgICA8cCBjbGFzc05hbWU9XCJ0ZXh0LXNtIHRleHQtc2xhdGUtNDAwXCI+Tm8gZGF0YS48L3A+XG4gICAgKX1cbiAgPC9kaXY+XG48L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjYXJkIHAtNVwiPlxuICAgICAgICAgIDxoMyBjbGFzc05hbWU9XCJmb250LWJvbGQgbWItNFwiPlRvcCBDaXRpZXM8L2gzPlxuICAgICAgICAgIDxvbCBjbGFzc05hbWU9XCJzcGFjZS15LTIgdGV4dC1zbVwiPlxuICAgICAgICAgICAge2NpdGllcy5tYXAoKGMsIGkpID0+IChcbiAgICAgICAgICAgICAgPGxpIGtleT17Yy5jaXR5fSBjbGFzc05hbWU9XCJmbGV4IGp1c3RpZnktYmV0d2VlblwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtc2xhdGUtNjAwXCI+e2kgKyAxfS4ge2MuY2l0eX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwiZm9udC1zZW1pYm9sZFwiPntjLnNjYW5zfTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICkpfVxuICAgICAgICAgICAge2NpdGllcy5sZW5ndGggPT09IDAgJiYgPGxpIGNsYXNzTmFtZT1cInRleHQtc2xhdGUtNDAwXCI+Tm8gZGF0YS48L2xpPn1cbiAgICAgICAgICA8L29sPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjYXJkIHAtNVwiPlxuICAgIDxoMyBjbGFzc05hbWU9XCJmb250LWJvbGQgbWItNFwiPlxuICAgICAgICBHZW9ncmFwaGljIE92ZXJ2aWV3XG4gICAgPC9oMz5cblxuICAgIDxHZW9ncmFwaGljT3ZlcnZpZXcgZGF0YT17Z2VvfSAvPlxuPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgey8qIEhlYXRtYXAgKi99XG4gICAgIFxuXG4gICAgICB7LyogUmVjZW50IHNjYW5zICovfVxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJjYXJkIG92ZXJmbG93LXgtYXV0b1wiPlxuICAgICAgICA8aDMgY2xhc3NOYW1lPVwiZm9udC1ib2xkIHAtNSBwYi0zXCI+UmVjZW50IFNjYW5zPC9oMz5cbiAgICAgICAgPHRhYmxlIGNsYXNzTmFtZT1cInctZnVsbCB0ZXh0LXNtXCI+XG4gICAgICAgICAgPHRoZWFkIGNsYXNzTmFtZT1cImJnLXNsYXRlLTUwIHRleHQtc2xhdGUtNTAwIHRleHQtbGVmdFwiPlxuICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICA8dGggY2xhc3NOYW1lPVwicHgtNCBweS0zIGZvbnQtbWVkaXVtXCI+VGltZTwvdGg+XG4gICAgICAgICAgICAgIDx0aCBjbGFzc05hbWU9XCJweC00IHB5LTMgZm9udC1tZWRpdW1cIj5Db2RlPC90aD5cbiAgICAgICAgICAgICAgPHRoIGNsYXNzTmFtZT1cInB4LTQgcHktMyBmb250LW1lZGl1bVwiPkNpdHk8L3RoPlxuICAgICAgICAgICAgICA8dGggY2xhc3NOYW1lPVwicHgtNCBweS0zIGZvbnQtbWVkaXVtXCI+Q291bnRyeTwvdGg+XG4gICAgICAgICAgICAgIDx0aCBjbGFzc05hbWU9XCJweC00IHB5LTMgZm9udC1tZWRpdW1cIj5EZXZpY2U8L3RoPlxuICAgICAgICAgICAgICA8dGggY2xhc3NOYW1lPVwicHgtNCBweS0zIGZvbnQtbWVkaXVtXCI+SVAgQWRkcmVzczwvdGg+XG4gICAgICAgICAgICA8L3RyPlxuICAgICAgICAgIDwvdGhlYWQ+XG4gICAgICAgICAgPHRib2R5IGNsYXNzTmFtZT1cImRpdmlkZS15IGRpdmlkZS1zbGF0ZS0xMDBcIj5cbiAgICAgICAgICAgIHtyZWNlbnQubWFwKChyLCBpKSA9PiAoXG4gICAgICAgICAgICAgIDx0ciBrZXk9e2l9PlxuICAgICAgICAgICAgICAgIDx0ZCBjbGFzc05hbWU9XCJweC00IHB5LTMgdGV4dC1zbGF0ZS01MDBcIj57bmV3IERhdGUoci5hdCkudG9Mb2NhbGVTdHJpbmcoKX08L3RkPlxuICAgICAgICAgICAgICAgIDx0ZCBjbGFzc05hbWU9XCJweC00IHB5LTMgZm9udC1tb25vIHRleHQtc2xhdGUtNjAwXCI+e3IuY29kZX08L3RkPlxuICAgICAgICAgICAgICAgIDx0ZCBjbGFzc05hbWU9XCJweC00IHB5LTNcIj57ci5jaXR5ID8/IFwi4oCUXCJ9PC90ZD5cbiAgICAgICAgICAgICAgICA8dGQgY2xhc3NOYW1lPVwicHgtNCBweS0zXCI+e3IuY291bnRyeSA/PyBcIuKAlFwifTwvdGQ+XG4gICAgICAgICAgICAgICAgPHRkIGNsYXNzTmFtZT1cInB4LTQgcHktM1wiPntyLmRldmljZSA/PyBcIuKAlFwifTwvdGQ+XG4gICAgICAgICAgICAgICAgPHRkIGNsYXNzTmFtZT1cInB4LTQgcHktM1wiPntyLmlwID8/IFwi4oCUXCJ9PC90ZD5cbiAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICkpfVxuICAgICAgICAgICAge3JlY2VudC5sZW5ndGggPT09IDAgJiYgPHRyPjx0ZCBjb2xTcGFuPXs1fSBjbGFzc05hbWU9XCJweC00IHB5LTEwIHRleHQtY2VudGVyIHRleHQtc2xhdGUtNDAwXCI+Tm8gc2NhbnMgeWV0LjwvdGQ+PC90cj59XG4gICAgICAgICAgPC90Ym9keT5cbiAgICAgICAgPC90YWJsZT5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gcHgtNCBweS0zIHRleHQtc20gdGV4dC1zbGF0ZS01MDAgYm9yZGVyLXRcIj5cbiAgPHNwYW4+XG4gICAgU2hvd2luZ3tcIiBcIn1cbiAgICB7cmVjZW50Lmxlbmd0aCA9PT0gMFxuICAgICAgPyAwXG4gICAgICA6IChyZWNlbnRQYWdlIC0gMSkgKiByZWNlbnRQYWdlU2l6ZSArIDF9e1wiIFwifVxuICAgIHRve1wiIFwifVxuICAgIHtNYXRoLm1pbihyZWNlbnRQYWdlICogcmVjZW50UGFnZVNpemUsIHJlY2VudFRvdGFsKX17XCIgXCJ9XG4gICAgb2Yge3JlY2VudFRvdGFsfVxuICA8L3NwYW4+XG5cbiAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGdhcC0xXCI+XG4gICAgPGJ1dHRvblxuICAgICAgZGlzYWJsZWQ9e3JlY2VudFBhZ2UgPT09IDF9XG4gICAgICBvbkNsaWNrPXsoKSA9PiBzZXRSZWNlbnRQYWdlKHJlY2VudFBhZ2UgLSAxKX1cbiAgICAgIGNsYXNzTmFtZT1cInB4LTMgcHktMSByb3VuZGVkIGJvcmRlciBib3JkZXItc2xhdGUtMjAwIGRpc2FibGVkOm9wYWNpdHktNDBcIlxuICAgID5cbiAgICAgIOKAuVxuICAgIDwvYnV0dG9uPlxuXG4gICAge0FycmF5LmZyb20oeyBsZW5ndGg6IHJlY2VudFRvdGFsUGFnZXMgfSlcbiAgICAgIC5zbGljZSgwLCA1KVxuICAgICAgLm1hcCgoXywgaSkgPT4gKFxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAga2V5PXtpfVxuICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldFJlY2VudFBhZ2UoaSArIDEpfVxuICAgICAgICAgIGNsYXNzTmFtZT17YHB4LTMgcHktMSByb3VuZGVkICR7XG4gICAgICAgICAgICByZWNlbnRQYWdlID09PSBpICsgMVxuICAgICAgICAgICAgICA/IFwiYmctYnJhbmQtNjAwIHRleHQtd2hpdGVcIlxuICAgICAgICAgICAgICA6IFwiYm9yZGVyIGJvcmRlci1zbGF0ZS0yMDBcIlxuICAgICAgICAgIH1gfVxuICAgICAgICA+XG4gICAgICAgICAge2kgKyAxfVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICkpfVxuXG4gICAgPGJ1dHRvblxuICAgICAgZGlzYWJsZWQ9e3JlY2VudFBhZ2UgPT09IHJlY2VudFRvdGFsUGFnZXN9XG4gICAgICBvbkNsaWNrPXsoKSA9PiBzZXRSZWNlbnRQYWdlKHJlY2VudFBhZ2UgKyAxKX1cbiAgICAgIGNsYXNzTmFtZT1cInB4LTMgcHktMSByb3VuZGVkIGJvcmRlciBib3JkZXItc2xhdGUtMjAwIGRpc2FibGVkOm9wYWNpdHktNDBcIlxuICAgID5cbiAgICAgIOKAulxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICk7XG59XG5cbmZ1bmN0aW9uIEtwaSh7IGxhYmVsLCB2YWx1ZSwgaWNvbiwgdGludCB9OiBhbnkpIHtcbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cImNhcmQgcC00XCI+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGdhcC0zXCI+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPXtgaC0xMSB3LTExIHJvdW5kZWQteGwgZ3JpZCBwbGFjZS1pdGVtcy1jZW50ZXIgc2hyaW5rLTAgJHt0aW50fWB9PntpY29ufTwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1pbi13LTBcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQteGwgZm9udC1leHRyYWJvbGQgdGV4dC1zbGF0ZS05MDBcIj57dmFsdWV9PC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LXhzIHRleHQtc2xhdGUtNTAwXCI+e2xhYmVsfTwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICApO1xufVxuIl0sIm5hbWVzIjpbIkZyYWdtZW50IiwidXNlRWZmZWN0IiwidXNlU3RhdGUiLCJQaWVDaGFydCIsIlBpZSIsIkNlbGwiLCJSZXNwb25zaXZlQ29udGFpbmVyIiwiVG9vbHRpcCIsIkRvd25sb2FkIiwiU2NhbkxpbmUiLCJVc2VycyIsIkdsb2JlIiwiU2hpZWxkQ2hlY2siLCJTY2FuVHJlbmRDaGFydCIsImFwaSIsImFwaUJhc2UiLCJHZW9ncmFwaGljT3ZlcnZpZXciLCJQUkVTRVRTIiwibGFiZWwiLCJkYXlzIiwiRE9OVVQiLCJET1ciLCJBbmFseXRpY3MiLCJzZXREYXlzIiwicyIsInNldFMiLCJ0cmVuZCIsInNldFRyZW5kIiwidG9wUCIsInNldFRvcFAiLCJjaXRpZXMiLCJzZXRDaXRpZXMiLCJkZXZpY2VzIiwic2V0RGV2aWNlcyIsImhlYXQiLCJzZXRIZWF0IiwicmVjZW50Iiwic2V0UmVjZW50IiwiZ2VvIiwic2V0R2VvIiwidG90YWxEZXZpY2VzIiwicmVkdWNlIiwic3VtIiwiZCIsInNjYW5zIiwiYnJhbmRzIiwic2V0QnJhbmRzIiwiYnJhbmRJZCIsInNldEJyYW5kSWQiLCJyZWNlbnRUb3RhbCIsInNldFJlY2VudFRvdGFsIiwic3RhcnRQYWdlIiwiTWF0aCIsIm1heCIsInJlY2VudFBhZ2UiLCJlbmRQYWdlIiwibWluIiwicmVjZW50VG90YWxQYWdlcyIsInBhZ2VzIiwiQXJyYXkiLCJmcm9tIiwibGVuZ3RoIiwiXyIsImkiLCJmcm9tRGF0ZSIsInNldEZyb21EYXRlIiwidG9EYXRlIiwic2V0VG9EYXRlIiwicGFyYW1zIiwiVVJMU2VhcmNoUGFyYW1zIiwiYXBwZW5kIiwiU3RyaW5nIiwicXVlcnkiLCJ0b1N0cmluZyIsInNldFJlY2VudFBhZ2UiLCJzZXRSZWNlbnRUb3RhbFBhZ2VzIiwicmVjZW50UGFnZVNpemUiLCJjbGVhckZpbHRlcnMiLCJzaG93QWxsUHJvZHVjdHMiLCJzZXRTaG93QWxsUHJvZHVjdHMiLCJ0aGVuIiwiY2F0Y2giLCJyZXMiLCJpdGVtcyIsInRvdGFsIiwibWF4UCIsIm1hcCIsInAiLCJtYXhIZWF0IiwiaCIsImNvdW50IiwiZG93bmxvYWRDc3YiLCJ0b2tlbiIsImxvY2FsU3RvcmFnZSIsImdldEl0ZW0iLCJmZXRjaCIsImhlYWRlcnMiLCJBdXRob3JpemF0aW9uIiwib2siLCJhbGVydCIsImJsb2IiLCJ1cmwiLCJ3aW5kb3ciLCJVUkwiLCJjcmVhdGVPYmplY3RVUkwiLCJhIiwiZG9jdW1lbnQiLCJjcmVhdGVFbGVtZW50IiwiaHJlZiIsImRvd25sb2FkIiwiYm9keSIsImFwcGVuZENoaWxkIiwiY2xpY2siLCJyZW1vdmUiLCJyZXZva2VPYmplY3RVUkwiLCJkaXYiLCJjbGFzc05hbWUiLCJoMiIsImJ1dHRvbiIsIm9uQ2xpY2siLCJpbnB1dCIsInR5cGUiLCJ2YWx1ZSIsIm9uQ2hhbmdlIiwiZSIsInRhcmdldCIsInNwYW4iLCJzZWxlY3QiLCJvcHRpb24iLCJiIiwiaWQiLCJuYW1lIiwiS3BpIiwidG90YWxfc2NhbnMiLCJpY29uIiwidGludCIsInVuaXF1ZV9jb25zdW1lcnMiLCJ0b2RheV9zY2FucyIsImFjdGl2ZV9wcm9kdWN0cyIsImF2Z190cnVzdF9zY29yZSIsImNvdW50cmllcyIsImgzIiwiZGF0YSIsIndpZHRoIiwiaGVpZ2h0IiwiZGF0YUtleSIsIm5hbWVLZXkiLCJpbm5lclJhZGl1cyIsIm91dGVyUmFkaXVzIiwic3Ryb2tlIiwic3Ryb2tlV2lkdGgiLCJmaWxsIiwiZm9ybWF0dGVyIiwicGVyY2VudCIsInRvRml4ZWQiLCJzdHlsZSIsImJhY2tncm91bmRDb2xvciIsImRldmljZSIsInRvTG9jYWxlU3RyaW5nIiwiZ3JpZFRlbXBsYXRlQ29sdW1ucyIsImRheSIsImNlbGwiLCJmaW5kIiwieCIsImRvdyIsImhvdXIiLCJ2Iiwib3AiLCJ0aXRsZSIsImJhY2tncm91bmQiLCJzbGljZSIsIm9sIiwiYyIsImxpIiwiY2l0eSIsInRhYmxlIiwidGhlYWQiLCJ0ciIsInRoIiwidGJvZHkiLCJyIiwidGQiLCJEYXRlIiwiYXQiLCJjb2RlIiwiY291bnRyeSIsImlwIiwiY29sU3BhbiIsImRpc2FibGVkIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./app/dashboard/analytics/page.tsx\n"));
|
||
|
||
/***/ })
|
||
|
||
}); |