/* * 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 = "pages/index"; exports.ids = ["pages/index"]; exports.modules = { /***/ "(pages-dir-node)/./node_modules/next/dist/build/webpack/loaders/next-route-loader/index.js?kind=PAGES&page=%2F&preferredRegion=&absolutePagePath=.%2Fsrc%2Fpages%2Findex.js&absoluteAppPath=private-next-pages%2F_app&absoluteDocumentPath=private-next-pages%2F_document&middlewareConfigBase64=e30%3D!": /*!***********************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/next/dist/build/webpack/loaders/next-route-loader/index.js?kind=PAGES&page=%2F&preferredRegion=&absolutePagePath=.%2Fsrc%2Fpages%2Findex.js&absoluteAppPath=private-next-pages%2F_app&absoluteDocumentPath=private-next-pages%2F_document&middlewareConfigBase64=e30%3D! ***! \***********************************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; eval("__webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ config: () => (/* binding */ config),\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__),\n/* harmony export */ getServerSideProps: () => (/* binding */ getServerSideProps),\n/* harmony export */ getStaticPaths: () => (/* binding */ getStaticPaths),\n/* harmony export */ getStaticProps: () => (/* binding */ getStaticProps),\n/* harmony export */ reportWebVitals: () => (/* binding */ reportWebVitals),\n/* harmony export */ routeModule: () => (/* binding */ routeModule),\n/* harmony export */ unstable_getServerProps: () => (/* binding */ unstable_getServerProps),\n/* harmony export */ unstable_getServerSideProps: () => (/* binding */ unstable_getServerSideProps),\n/* harmony export */ unstable_getStaticParams: () => (/* binding */ unstable_getStaticParams),\n/* harmony export */ unstable_getStaticPaths: () => (/* binding */ unstable_getStaticPaths),\n/* harmony export */ unstable_getStaticProps: () => (/* binding */ unstable_getStaticProps)\n/* harmony export */ });\n/* harmony import */ var next_dist_server_route_modules_pages_module_compiled__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! next/dist/server/route-modules/pages/module.compiled */ \"(pages-dir-node)/./node_modules/next/dist/server/route-modules/pages/module.compiled.js\");\n/* harmony import */ var next_dist_server_route_modules_pages_module_compiled__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_route_modules_pages_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 */ \"(pages-dir-node)/./node_modules/next/dist/server/route-kind.js\");\n/* harmony import */ var next_dist_build_templates_helpers__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! next/dist/build/templates/helpers */ \"(pages-dir-node)/./node_modules/next/dist/build/templates/helpers.js\");\n/* harmony import */ var private_next_pages_document__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! private-next-pages/_document */ \"(pages-dir-node)/./src/pages/_document.js\");\n/* harmony import */ var private_next_pages_app__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! private-next-pages/_app */ \"(pages-dir-node)/./src/pages/_app.js\");\n/* harmony import */ var _src_pages_index_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./src/pages/index.js */ \"(pages-dir-node)/./src/pages/index.js\");\nvar __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([private_next_pages_app__WEBPACK_IMPORTED_MODULE_4__, _src_pages_index_js__WEBPACK_IMPORTED_MODULE_5__]);\n([private_next_pages_app__WEBPACK_IMPORTED_MODULE_4__, _src_pages_index_js__WEBPACK_IMPORTED_MODULE_5__] = __webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__);\n\n\n\n// Import the app and document modules.\n\n\n// Import the userland code.\n\n// Re-export the component (should be the default export).\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((0,next_dist_build_templates_helpers__WEBPACK_IMPORTED_MODULE_2__.hoist)(_src_pages_index_js__WEBPACK_IMPORTED_MODULE_5__, 'default'));\n// Re-export methods.\nconst getStaticProps = (0,next_dist_build_templates_helpers__WEBPACK_IMPORTED_MODULE_2__.hoist)(_src_pages_index_js__WEBPACK_IMPORTED_MODULE_5__, 'getStaticProps');\nconst getStaticPaths = (0,next_dist_build_templates_helpers__WEBPACK_IMPORTED_MODULE_2__.hoist)(_src_pages_index_js__WEBPACK_IMPORTED_MODULE_5__, 'getStaticPaths');\nconst getServerSideProps = (0,next_dist_build_templates_helpers__WEBPACK_IMPORTED_MODULE_2__.hoist)(_src_pages_index_js__WEBPACK_IMPORTED_MODULE_5__, 'getServerSideProps');\nconst config = (0,next_dist_build_templates_helpers__WEBPACK_IMPORTED_MODULE_2__.hoist)(_src_pages_index_js__WEBPACK_IMPORTED_MODULE_5__, 'config');\nconst reportWebVitals = (0,next_dist_build_templates_helpers__WEBPACK_IMPORTED_MODULE_2__.hoist)(_src_pages_index_js__WEBPACK_IMPORTED_MODULE_5__, 'reportWebVitals');\n// Re-export legacy methods.\nconst unstable_getStaticProps = (0,next_dist_build_templates_helpers__WEBPACK_IMPORTED_MODULE_2__.hoist)(_src_pages_index_js__WEBPACK_IMPORTED_MODULE_5__, 'unstable_getStaticProps');\nconst unstable_getStaticPaths = (0,next_dist_build_templates_helpers__WEBPACK_IMPORTED_MODULE_2__.hoist)(_src_pages_index_js__WEBPACK_IMPORTED_MODULE_5__, 'unstable_getStaticPaths');\nconst unstable_getStaticParams = (0,next_dist_build_templates_helpers__WEBPACK_IMPORTED_MODULE_2__.hoist)(_src_pages_index_js__WEBPACK_IMPORTED_MODULE_5__, 'unstable_getStaticParams');\nconst unstable_getServerProps = (0,next_dist_build_templates_helpers__WEBPACK_IMPORTED_MODULE_2__.hoist)(_src_pages_index_js__WEBPACK_IMPORTED_MODULE_5__, 'unstable_getServerProps');\nconst unstable_getServerSideProps = (0,next_dist_build_templates_helpers__WEBPACK_IMPORTED_MODULE_2__.hoist)(_src_pages_index_js__WEBPACK_IMPORTED_MODULE_5__, 'unstable_getServerSideProps');\n// Create and export the route module that will be consumed.\nconst routeModule = new next_dist_server_route_modules_pages_module_compiled__WEBPACK_IMPORTED_MODULE_0__.PagesRouteModule({\n definition: {\n kind: next_dist_server_route_kind__WEBPACK_IMPORTED_MODULE_1__.RouteKind.PAGES,\n page: \"/index\",\n pathname: \"/\",\n // The following aren't used in production.\n bundlePath: '',\n filename: ''\n },\n components: {\n // default export might not exist when optimized for data only\n App: private_next_pages_app__WEBPACK_IMPORTED_MODULE_4__[\"default\"],\n Document: private_next_pages_document__WEBPACK_IMPORTED_MODULE_3__[\"default\"]\n },\n userland: _src_pages_index_js__WEBPACK_IMPORTED_MODULE_5__\n});\n\n//# sourceMappingURL=pages.js.map\n__webpack_async_result__();\n} catch(e) { __webpack_async_result__(e); } });//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHBhZ2VzLWRpci1ub2RlKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvYnVpbGQvd2VicGFjay9sb2FkZXJzL25leHQtcm91dGUtbG9hZGVyL2luZGV4LmpzP2tpbmQ9UEFHRVMmcGFnZT0lMkYmcHJlZmVycmVkUmVnaW9uPSZhYnNvbHV0ZVBhZ2VQYXRoPS4lMkZzcmMlMkZwYWdlcyUyRmluZGV4LmpzJmFic29sdXRlQXBwUGF0aD1wcml2YXRlLW5leHQtcGFnZXMlMkZfYXBwJmFic29sdXRlRG9jdW1lbnRQYXRoPXByaXZhdGUtbmV4dC1wYWdlcyUyRl9kb2N1bWVudCZtaWRkbGV3YXJlQ29uZmlnQmFzZTY0PWUzMCUzRCEiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUF3RjtBQUNoQztBQUNFO0FBQzFEO0FBQ3lEO0FBQ1Y7QUFDL0M7QUFDaUQ7QUFDakQ7QUFDQSxpRUFBZSx3RUFBSyxDQUFDLGdEQUFRLFlBQVksRUFBQztBQUMxQztBQUNPLHVCQUF1Qix3RUFBSyxDQUFDLGdEQUFRO0FBQ3JDLHVCQUF1Qix3RUFBSyxDQUFDLGdEQUFRO0FBQ3JDLDJCQUEyQix3RUFBSyxDQUFDLGdEQUFRO0FBQ3pDLGVBQWUsd0VBQUssQ0FBQyxnREFBUTtBQUM3Qix3QkFBd0Isd0VBQUssQ0FBQyxnREFBUTtBQUM3QztBQUNPLGdDQUFnQyx3RUFBSyxDQUFDLGdEQUFRO0FBQzlDLGdDQUFnQyx3RUFBSyxDQUFDLGdEQUFRO0FBQzlDLGlDQUFpQyx3RUFBSyxDQUFDLGdEQUFRO0FBQy9DLGdDQUFnQyx3RUFBSyxDQUFDLGdEQUFRO0FBQzlDLG9DQUFvQyx3RUFBSyxDQUFDLGdEQUFRO0FBQ3pEO0FBQ08sd0JBQXdCLGtHQUFnQjtBQUMvQztBQUNBLGNBQWMsa0VBQVM7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsYUFBYSw4REFBVztBQUN4QixrQkFBa0IsbUVBQWdCO0FBQ2xDLEtBQUs7QUFDTCxZQUFZO0FBQ1osQ0FBQzs7QUFFRCxpQyIsInNvdXJjZXMiOlsiIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBhZ2VzUm91dGVNb2R1bGUgfSBmcm9tIFwibmV4dC9kaXN0L3NlcnZlci9yb3V0ZS1tb2R1bGVzL3BhZ2VzL21vZHVsZS5jb21waWxlZFwiO1xuaW1wb3J0IHsgUm91dGVLaW5kIH0gZnJvbSBcIm5leHQvZGlzdC9zZXJ2ZXIvcm91dGUta2luZFwiO1xuaW1wb3J0IHsgaG9pc3QgfSBmcm9tIFwibmV4dC9kaXN0L2J1aWxkL3RlbXBsYXRlcy9oZWxwZXJzXCI7XG4vLyBJbXBvcnQgdGhlIGFwcCBhbmQgZG9jdW1lbnQgbW9kdWxlcy5cbmltcG9ydCAqIGFzIGRvY3VtZW50IGZyb20gXCJwcml2YXRlLW5leHQtcGFnZXMvX2RvY3VtZW50XCI7XG5pbXBvcnQgKiBhcyBhcHAgZnJvbSBcInByaXZhdGUtbmV4dC1wYWdlcy9fYXBwXCI7XG4vLyBJbXBvcnQgdGhlIHVzZXJsYW5kIGNvZGUuXG5pbXBvcnQgKiBhcyB1c2VybGFuZCBmcm9tIFwiLi9zcmMvcGFnZXMvaW5kZXguanNcIjtcbi8vIFJlLWV4cG9ydCB0aGUgY29tcG9uZW50IChzaG91bGQgYmUgdGhlIGRlZmF1bHQgZXhwb3J0KS5cbmV4cG9ydCBkZWZhdWx0IGhvaXN0KHVzZXJsYW5kLCAnZGVmYXVsdCcpO1xuLy8gUmUtZXhwb3J0IG1ldGhvZHMuXG5leHBvcnQgY29uc3QgZ2V0U3RhdGljUHJvcHMgPSBob2lzdCh1c2VybGFuZCwgJ2dldFN0YXRpY1Byb3BzJyk7XG5leHBvcnQgY29uc3QgZ2V0U3RhdGljUGF0aHMgPSBob2lzdCh1c2VybGFuZCwgJ2dldFN0YXRpY1BhdGhzJyk7XG5leHBvcnQgY29uc3QgZ2V0U2VydmVyU2lkZVByb3BzID0gaG9pc3QodXNlcmxhbmQsICdnZXRTZXJ2ZXJTaWRlUHJvcHMnKTtcbmV4cG9ydCBjb25zdCBjb25maWcgPSBob2lzdCh1c2VybGFuZCwgJ2NvbmZpZycpO1xuZXhwb3J0IGNvbnN0IHJlcG9ydFdlYlZpdGFscyA9IGhvaXN0KHVzZXJsYW5kLCAncmVwb3J0V2ViVml0YWxzJyk7XG4vLyBSZS1leHBvcnQgbGVnYWN5IG1ldGhvZHMuXG5leHBvcnQgY29uc3QgdW5zdGFibGVfZ2V0U3RhdGljUHJvcHMgPSBob2lzdCh1c2VybGFuZCwgJ3Vuc3RhYmxlX2dldFN0YXRpY1Byb3BzJyk7XG5leHBvcnQgY29uc3QgdW5zdGFibGVfZ2V0U3RhdGljUGF0aHMgPSBob2lzdCh1c2VybGFuZCwgJ3Vuc3RhYmxlX2dldFN0YXRpY1BhdGhzJyk7XG5leHBvcnQgY29uc3QgdW5zdGFibGVfZ2V0U3RhdGljUGFyYW1zID0gaG9pc3QodXNlcmxhbmQsICd1bnN0YWJsZV9nZXRTdGF0aWNQYXJhbXMnKTtcbmV4cG9ydCBjb25zdCB1bnN0YWJsZV9nZXRTZXJ2ZXJQcm9wcyA9IGhvaXN0KHVzZXJsYW5kLCAndW5zdGFibGVfZ2V0U2VydmVyUHJvcHMnKTtcbmV4cG9ydCBjb25zdCB1bnN0YWJsZV9nZXRTZXJ2ZXJTaWRlUHJvcHMgPSBob2lzdCh1c2VybGFuZCwgJ3Vuc3RhYmxlX2dldFNlcnZlclNpZGVQcm9wcycpO1xuLy8gQ3JlYXRlIGFuZCBleHBvcnQgdGhlIHJvdXRlIG1vZHVsZSB0aGF0IHdpbGwgYmUgY29uc3VtZWQuXG5leHBvcnQgY29uc3Qgcm91dGVNb2R1bGUgPSBuZXcgUGFnZXNSb3V0ZU1vZHVsZSh7XG4gICAgZGVmaW5pdGlvbjoge1xuICAgICAgICBraW5kOiBSb3V0ZUtpbmQuUEFHRVMsXG4gICAgICAgIHBhZ2U6IFwiL2luZGV4XCIsXG4gICAgICAgIHBhdGhuYW1lOiBcIi9cIixcbiAgICAgICAgLy8gVGhlIGZvbGxvd2luZyBhcmVuJ3QgdXNlZCBpbiBwcm9kdWN0aW9uLlxuICAgICAgICBidW5kbGVQYXRoOiAnJyxcbiAgICAgICAgZmlsZW5hbWU6ICcnXG4gICAgfSxcbiAgICBjb21wb25lbnRzOiB7XG4gICAgICAgIC8vIGRlZmF1bHQgZXhwb3J0IG1pZ2h0IG5vdCBleGlzdCB3aGVuIG9wdGltaXplZCBmb3IgZGF0YSBvbmx5XG4gICAgICAgIEFwcDogYXBwLmRlZmF1bHQsXG4gICAgICAgIERvY3VtZW50OiBkb2N1bWVudC5kZWZhdWx0XG4gICAgfSxcbiAgICB1c2VybGFuZFxufSk7XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXBhZ2VzLmpzLm1hcCJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(pages-dir-node)/./node_modules/next/dist/build/webpack/loaders/next-route-loader/index.js?kind=PAGES&page=%2F&preferredRegion=&absolutePagePath=.%2Fsrc%2Fpages%2Findex.js&absoluteAppPath=private-next-pages%2F_app&absoluteDocumentPath=private-next-pages%2F_document&middlewareConfigBase64=e30%3D!\n"); /***/ }), /***/ "(pages-dir-node)/./src/components/AudioProvider.js": /*!*****************************************!*\ !*** ./src/components/AudioProvider.js ***! \*****************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; eval("__webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ AudioProvider: () => (/* binding */ AudioProvider),\n/* harmony export */ useAudio: () => (/* binding */ useAudio)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"react/jsx-dev-runtime\");\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 */ \"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _store_deviceStore__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/store/deviceStore */ \"(pages-dir-node)/./src/store/deviceStore.js\");\n/* harmony import */ var _utils_asset__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/utils/asset */ \"(pages-dir-node)/./src/utils/asset.js\");\nvar __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_store_deviceStore__WEBPACK_IMPORTED_MODULE_2__, _utils_asset__WEBPACK_IMPORTED_MODULE_3__]);\n([_store_deviceStore__WEBPACK_IMPORTED_MODULE_2__, _utils_asset__WEBPACK_IMPORTED_MODULE_3__] = __webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__);\n// 全局音效 Provider:根据 estmodel 预加载并动态切换资源\n\n\n\n\nconst AudioCtx = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.createContext)({\n play: ()=>{}\n});\nfunction AudioProvider({ children }) {\n const { estmodel } = (0,_store_deviceStore__WEBPACK_IMPORTED_MODULE_2__[\"default\"])();\n const soundsRef = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)({});\n const ensureAudio = (key, path)=>{\n const url = (0,_utils_asset__WEBPACK_IMPORTED_MODULE_3__.getAssetUrl)(path);\n let audio = soundsRef.current[key];\n if (!audio) {\n audio = new Audio(url);\n audio.preload = 'auto';\n soundsRef.current[key] = audio;\n } else if (audio.src !== url) {\n audio.src = url;\n audio.load();\n }\n };\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)({\n \"AudioProvider.useEffect\": ()=>{\n if (true) return;\n // 按需添加你要的音效键和值\n ensureAudio('install', '/sounds/generic_in.wav');\n ensureAudio('uninstall', '/sounds/generic_out.wav');\n ensureAudio('keyClick', '/sounds/key_click.wav');\n ensureAudio('pass', '/sounds/test_pass.wav');\n ensureAudio('fail', '/sounds/test_fail.wav');\n ensureAudio('connect', '/sounds/rmt_connect.wav');\n ensureAudio('disconnect', '/sounds/rmt_disconnect.wav');\n }\n }[\"AudioProvider.useEffect\"], [\n estmodel\n ]);\n const play = (key, opts = {})=>{\n const base = soundsRef.current[key];\n if (!base) return;\n // 克隆节点以支持频繁触发的并发播放\n const audio = base.cloneNode(true);\n if (opts.volume != null) audio.volume = Math.min(1, Math.max(0, opts.volume));\n if (opts.playbackRate != null) audio.playbackRate = opts.playbackRate;\n audio.currentTime = 0;\n audio.play().catch(()=>{});\n };\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(AudioCtx.Provider, {\n value: {\n play\n },\n children: children\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/AudioProvider.js\",\n lineNumber: 51,\n columnNumber: 5\n }, this);\n}\nconst useAudio = ()=>(0,react__WEBPACK_IMPORTED_MODULE_1__.useContext)(AudioCtx);\n\n__webpack_async_result__();\n} catch(e) { __webpack_async_result__(e); } });//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHBhZ2VzLWRpci1ub2RlKS8uL3NyYy9jb21wb25lbnRzL0F1ZGlvUHJvdmlkZXIuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUFBQSx1Q0FBdUM7O0FBQzhCO0FBQ3BCO0FBQ0w7QUFFNUMsTUFBTU0seUJBQVdOLG9EQUFhQSxDQUFDO0lBQUVPLE1BQU0sS0FBTztBQUFFO0FBRXpDLFNBQVNDLGNBQWMsRUFBRUMsUUFBUSxFQUFFO0lBQ3hDLE1BQU0sRUFBRUMsUUFBUSxFQUFFLEdBQUdOLDhEQUFjQTtJQUNuQyxNQUFNTyxZQUFZUiw2Q0FBTUEsQ0FBQyxDQUFDO0lBRTFCLE1BQU1TLGNBQWMsQ0FBQ0MsS0FBS0M7UUFDeEIsTUFBTUMsTUFBTVYseURBQVdBLENBQUNTO1FBQ3hCLElBQUlFLFFBQVFMLFVBQVVNLE9BQU8sQ0FBQ0osSUFBSTtRQUNsQyxJQUFJLENBQUNHLE9BQU87WUFDVkEsUUFBUSxJQUFJRSxNQUFNSDtZQUNsQkMsTUFBTUcsT0FBTyxHQUFHO1lBQ2hCUixVQUFVTSxPQUFPLENBQUNKLElBQUksR0FBR0c7UUFDM0IsT0FBTyxJQUFJQSxNQUFNSSxHQUFHLEtBQUtMLEtBQUs7WUFDNUJDLE1BQU1JLEdBQUcsR0FBR0w7WUFDWkMsTUFBTUssSUFBSTtRQUNaO0lBQ0Y7SUFFQW5CLGdEQUFTQTttQ0FBQztZQUNSLElBQUksSUFBNkQsRUFBRTtZQUNuRSxlQUFlO1lBQ2ZVLFlBQVksV0FBVztZQUN2QkEsWUFBWSxhQUFhO1lBQ3pCQSxZQUFZLFlBQVk7WUFFeEJBLFlBQVksUUFBUTtZQUNwQkEsWUFBWSxRQUFRO1lBRXBCQSxZQUFZLFdBQVc7WUFDdkJBLFlBQVksY0FBYztRQUM1QjtrQ0FBRztRQUFDRjtLQUFTO0lBRWIsTUFBTUgsT0FBTyxDQUFDTSxLQUFLUyxPQUFPLENBQUMsQ0FBQztRQUMxQixNQUFNQyxPQUFPWixVQUFVTSxPQUFPLENBQUNKLElBQUk7UUFDbkMsSUFBSSxDQUFDVSxNQUFNO1FBQ1gsbUJBQW1CO1FBQ25CLE1BQU1QLFFBQVFPLEtBQUtDLFNBQVMsQ0FBQztRQUM3QixJQUFJRixLQUFLRyxNQUFNLElBQUksTUFBTVQsTUFBTVMsTUFBTSxHQUFHQyxLQUFLQyxHQUFHLENBQUMsR0FBR0QsS0FBS0UsR0FBRyxDQUFDLEdBQUdOLEtBQUtHLE1BQU07UUFDM0UsSUFBSUgsS0FBS08sWUFBWSxJQUFJLE1BQU1iLE1BQU1hLFlBQVksR0FBR1AsS0FBS08sWUFBWTtRQUNyRWIsTUFBTWMsV0FBVyxHQUFHO1FBQ3BCZCxNQUFNVCxJQUFJLEdBQUd3QixLQUFLLENBQUMsS0FBTztJQUM1QjtJQUVBLHFCQUNFLDhEQUFDekIsU0FBUzBCLFFBQVE7UUFBQ0MsT0FBTztZQUFFMUI7UUFBSztrQkFDOUJFOzs7Ozs7QUFHUDtBQUVPLE1BQU15QixXQUFXLElBQU1qQyxpREFBVUEsQ0FBQ0ssVUFBVSIsInNvdXJjZXMiOlsiL29wdC9kZXYvZXN0LWRzeC9zcmMvY29tcG9uZW50cy9BdWRpb1Byb3ZpZGVyLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIOWFqOWxgOmfs+aViCBQcm92aWRlcu+8muagueaNriBlc3Rtb2RlbCDpooTliqDovb3lubbliqjmgIHliIfmjaLotYTmupBcclxuaW1wb3J0IHsgY3JlYXRlQ29udGV4dCwgdXNlQ29udGV4dCwgdXNlRWZmZWN0LCB1c2VSZWYgfSBmcm9tICdyZWFjdCc7XHJcbmltcG9ydCB1c2VEZXZpY2VTdG9yZSBmcm9tICdAL3N0b3JlL2RldmljZVN0b3JlJztcclxuaW1wb3J0IHsgZ2V0QXNzZXRVcmwgfSBmcm9tICdAL3V0aWxzL2Fzc2V0JztcclxuXHJcbmNvbnN0IEF1ZGlvQ3R4ID0gY3JlYXRlQ29udGV4dCh7IHBsYXk6ICgpID0+IHt9IH0pO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIEF1ZGlvUHJvdmlkZXIoeyBjaGlsZHJlbiB9KSB7XHJcbiAgY29uc3QgeyBlc3Rtb2RlbCB9ID0gdXNlRGV2aWNlU3RvcmUoKTtcclxuICBjb25zdCBzb3VuZHNSZWYgPSB1c2VSZWYoe30pO1xyXG5cclxuICBjb25zdCBlbnN1cmVBdWRpbyA9IChrZXksIHBhdGgpID0+IHtcclxuICAgIGNvbnN0IHVybCA9IGdldEFzc2V0VXJsKHBhdGgpO1xyXG4gICAgbGV0IGF1ZGlvID0gc291bmRzUmVmLmN1cnJlbnRba2V5XTtcclxuICAgIGlmICghYXVkaW8pIHtcclxuICAgICAgYXVkaW8gPSBuZXcgQXVkaW8odXJsKTtcclxuICAgICAgYXVkaW8ucHJlbG9hZCA9ICdhdXRvJztcclxuICAgICAgc291bmRzUmVmLmN1cnJlbnRba2V5XSA9IGF1ZGlvO1xyXG4gICAgfSBlbHNlIGlmIChhdWRpby5zcmMgIT09IHVybCkge1xyXG4gICAgICBhdWRpby5zcmMgPSB1cmw7XHJcbiAgICAgIGF1ZGlvLmxvYWQoKTtcclxuICAgIH1cclxuICB9O1xyXG5cclxuICB1c2VFZmZlY3QoKCkgPT4ge1xyXG4gICAgaWYgKHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnIHx8IHR5cGVvZiBBdWRpbyA9PT0gJ3VuZGVmaW5lZCcpIHJldHVybjtcclxuICAgIC8vIOaMiemcgOa3u+WKoOS9oOimgeeahOmfs+aViOmUruWSjOWAvFxyXG4gICAgZW5zdXJlQXVkaW8oJ2luc3RhbGwnLCAnL3NvdW5kcy9nZW5lcmljX2luLndhdicpO1xyXG4gICAgZW5zdXJlQXVkaW8oJ3VuaW5zdGFsbCcsICcvc291bmRzL2dlbmVyaWNfb3V0LndhdicpO1xyXG4gICAgZW5zdXJlQXVkaW8oJ2tleUNsaWNrJywgJy9zb3VuZHMva2V5X2NsaWNrLndhdicpO1xyXG4gICAgXHJcbiAgICBlbnN1cmVBdWRpbygncGFzcycsICcvc291bmRzL3Rlc3RfcGFzcy53YXYnKTtcclxuICAgIGVuc3VyZUF1ZGlvKCdmYWlsJywgJy9zb3VuZHMvdGVzdF9mYWlsLndhdicpO1xyXG5cclxuICAgIGVuc3VyZUF1ZGlvKCdjb25uZWN0JywgJy9zb3VuZHMvcm10X2Nvbm5lY3Qud2F2Jyk7XHJcbiAgICBlbnN1cmVBdWRpbygnZGlzY29ubmVjdCcsICcvc291bmRzL3JtdF9kaXNjb25uZWN0LndhdicpO1xyXG4gIH0sIFtlc3Rtb2RlbF0pO1xyXG5cclxuICBjb25zdCBwbGF5ID0gKGtleSwgb3B0cyA9IHt9KSA9PiB7XHJcbiAgICBjb25zdCBiYXNlID0gc291bmRzUmVmLmN1cnJlbnRba2V5XTtcclxuICAgIGlmICghYmFzZSkgcmV0dXJuO1xyXG4gICAgLy8g5YWL6ZqG6IqC54K55Lul5pSv5oyB6aKR57mB6Kem5Y+R55qE5bm25Y+R5pKt5pS+XHJcbiAgICBjb25zdCBhdWRpbyA9IGJhc2UuY2xvbmVOb2RlKHRydWUpO1xyXG4gICAgaWYgKG9wdHMudm9sdW1lICE9IG51bGwpIGF1ZGlvLnZvbHVtZSA9IE1hdGgubWluKDEsIE1hdGgubWF4KDAsIG9wdHMudm9sdW1lKSk7XHJcbiAgICBpZiAob3B0cy5wbGF5YmFja1JhdGUgIT0gbnVsbCkgYXVkaW8ucGxheWJhY2tSYXRlID0gb3B0cy5wbGF5YmFja1JhdGU7XHJcbiAgICBhdWRpby5jdXJyZW50VGltZSA9IDA7XHJcbiAgICBhdWRpby5wbGF5KCkuY2F0Y2goKCkgPT4ge30pO1xyXG4gIH07XHJcblxyXG4gIHJldHVybiAoXHJcbiAgICA8QXVkaW9DdHguUHJvdmlkZXIgdmFsdWU9e3sgcGxheSB9fT5cclxuICAgICAge2NoaWxkcmVufVxyXG4gICAgPC9BdWRpb0N0eC5Qcm92aWRlcj5cclxuICApO1xyXG59XHJcblxyXG5leHBvcnQgY29uc3QgdXNlQXVkaW8gPSAoKSA9PiB1c2VDb250ZXh0KEF1ZGlvQ3R4KTsiXSwibmFtZXMiOlsiY3JlYXRlQ29udGV4dCIsInVzZUNvbnRleHQiLCJ1c2VFZmZlY3QiLCJ1c2VSZWYiLCJ1c2VEZXZpY2VTdG9yZSIsImdldEFzc2V0VXJsIiwiQXVkaW9DdHgiLCJwbGF5IiwiQXVkaW9Qcm92aWRlciIsImNoaWxkcmVuIiwiZXN0bW9kZWwiLCJzb3VuZHNSZWYiLCJlbnN1cmVBdWRpbyIsImtleSIsInBhdGgiLCJ1cmwiLCJhdWRpbyIsImN1cnJlbnQiLCJBdWRpbyIsInByZWxvYWQiLCJzcmMiLCJsb2FkIiwib3B0cyIsImJhc2UiLCJjbG9uZU5vZGUiLCJ2b2x1bWUiLCJNYXRoIiwibWluIiwibWF4IiwicGxheWJhY2tSYXRlIiwiY3VycmVudFRpbWUiLCJjYXRjaCIsIlByb3ZpZGVyIiwidmFsdWUiLCJ1c2VBdWRpbyJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(pages-dir-node)/./src/components/AudioProvider.js\n"); /***/ }), /***/ "(pages-dir-node)/./src/components/CompetitionStatistics.js": /*!*************************************************!*\ !*** ./src/components/CompetitionStatistics.js ***! \*************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; eval("__webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ CompetitionStatistics)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _store_displayStore__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/store/displayStore */ \"(pages-dir-node)/./src/store/displayStore.js\");\n/* harmony import */ var _store_deviceStore__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/store/deviceStore */ \"(pages-dir-node)/./src/store/deviceStore.js\");\n/* harmony import */ var _fingerprintjs_fingerprintjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @fingerprintjs/fingerprintjs */ \"@fingerprintjs/fingerprintjs\");\n/* harmony import */ var _fingerprintjs_fingerprintjs__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_fingerprintjs_fingerprintjs__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _config_api__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/config/api */ \"(pages-dir-node)/./src/config/api.js\");\nvar __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_store_displayStore__WEBPACK_IMPORTED_MODULE_1__, _store_deviceStore__WEBPACK_IMPORTED_MODULE_2__]);\n([_store_displayStore__WEBPACK_IMPORTED_MODULE_1__, _store_deviceStore__WEBPACK_IMPORTED_MODULE_2__] = __webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__);\n\n\n\n\n\nfunction CompetitionStatistics() {\n const [fingerprint, setFingerprint] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)('');\n const { faultScenarios, seatNumber, seatUUID, reports, cleanStatus } = (0,_store_deviceStore__WEBPACK_IMPORTED_MODULE_2__[\"default\"])();\n const { getCurrentProject, getCurrentOperator, getCurrentTestConfig } = (0,_store_displayStore__WEBPACK_IMPORTED_MODULE_1__[\"default\"])();\n const UUID = seatUUID;\n const SeatNumber = seatNumber;\n // 新增:获取历史数据\n const fetchHistoryData = async (uuid, fp)=>{\n try {\n const response = await fetch(`${_config_api__WEBPACK_IMPORTED_MODULE_4__.API_URLS.COMPETITION.DATA}?UUID=${uuid}&fingerprint=${fp}`);\n if (response.ok) {\n const data = await response.json();\n if (data[fp]?.projects) {\n _store_displayStore__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getState().updateProjects(data[fp].projects);\n }\n if (data[fp]?.selectedIndexes) {\n _store_displayStore__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getState().updateselectedIndexes(data[fp].selectedIndexes);\n }\n }\n } catch (error) {\n console.error('获取历史数据失败:', error);\n }\n };\n // 初始化指纹\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)({\n \"CompetitionStatistics.useEffect\": ()=>{\n if (!UUID || !SeatNumber) return;\n const initFingerprint = {\n \"CompetitionStatistics.useEffect.initFingerprint\": async ()=>{\n try {\n const fp = await _fingerprintjs_fingerprintjs__WEBPACK_IMPORTED_MODULE_3___default().load();\n const { visitorId } = await fp.get();\n // 将SeatNumber编码后混合到指纹中\n const encodedSeatNumber = encodeURIComponent(SeatNumber);\n // const mixedFingerprint = `${visitorId}-${encodedSeatNumber}`;\n const mixedFingerprint = `${encodedSeatNumber}`;\n setFingerprint(mixedFingerprint);\n // 获取历史数据\n await fetchHistoryData(UUID, mixedFingerprint);\n } catch (error) {\n console.error('生成指纹失败:', error);\n }\n }\n }[\"CompetitionStatistics.useEffect.initFingerprint\"];\n initFingerprint();\n }\n }[\"CompetitionStatistics.useEffect\"], [\n UUID,\n SeatNumber\n ]);\n // 定时发送数据\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)({\n \"CompetitionStatistics.useEffect\": ()=>{\n if (!UUID || !fingerprint) return;\n let intervalId = null; // 声明intervalId变量\n // 设置定时器,每3秒发送一次数据\n intervalId = setInterval({\n \"CompetitionStatistics.useEffect\": ()=>{\n sendStatistics();\n }\n }[\"CompetitionStatistics.useEffect\"], 3000);\n // 获取基准设置状态\n const getRefStatus = {\n \"CompetitionStatistics.useEffect.getRefStatus\": ()=>{\n const currentConfig = getCurrentTestConfig();\n const moduleType = currentConfig?.moduleType;\n if (!moduleType) return false;\n const { ref } = _store_displayStore__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getState();\n if (moduleType === '8000') return ref.copper?.status || false;\n if (moduleType === 'cfp') return ref.cfp?.status || false;\n if (moduleType === 'ofp') return ref.ofp?.status || false;\n return false;\n }\n }[\"CompetitionStatistics.useEffect.getRefStatus\"];\n // 获取测试结果统计\n const getTestResults = {\n \"CompetitionStatistics.useEffect.getTestResults\": ()=>{\n const currentProject = getCurrentProject();\n if (!currentProject?.testResults) return {\n passCount: 0,\n failCount: 0\n };\n const passCount = currentProject?.testResults.filter({\n \"CompetitionStatistics.useEffect.getTestResults\": (result)=>{\n const copperStatus = result.CopperResultStatus;\n const cfpStatus = result.CFPResultStatus;\n const ofpStatus = result.ofpResultStatus;\n if (copperStatus) {\n return copperStatus === 'pass';\n } else if (cfpStatus) {\n return cfpStatus === 'pass';\n } else if (ofpStatus) {\n return ofpStatus === 'pass';\n }\n return false;\n }\n }[\"CompetitionStatistics.useEffect.getTestResults\"]).length;\n const failCount = currentProject?.testResults.filter({\n \"CompetitionStatistics.useEffect.getTestResults\": (result)=>{\n const copperStatus = result.CopperResultStatus;\n const cfpStatus = result.CFPResultStatus;\n const ofpStatus = result.ofpResultStatus;\n if (copperStatus) {\n return copperStatus === 'fail';\n } else if (cfpStatus) {\n return cfpStatus === 'fail';\n } else if (ofpStatus) {\n return ofpStatus === 'fail';\n }\n return false;\n }\n }[\"CompetitionStatistics.useEffect.getTestResults\"]).length;\n return {\n passCount,\n failCount\n };\n }\n }[\"CompetitionStatistics.useEffect.getTestResults\"];\n // 发送统计数据\n const sendStatistics = {\n \"CompetitionStatistics.useEffect.sendStatistics\": async ()=>{\n const currentProject = getCurrentProject();\n const currentOperator = getCurrentOperator();\n const currentConfig = getCurrentTestConfig();\n const refStatus = getRefStatus();\n const { passCount, failCount } = getTestResults();\n const currentReports = _store_deviceStore__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getState().reports;\n const statisticsData = {\n userId: seatNumber,\n scenario: faultScenarios,\n project: currentProject?.name || '',\n operator: currentOperator?.name || '',\n testLimit: currentConfig?.params?.limitValue || '',\n refStatus,\n testResultsCount: {\n passCount,\n failCount\n },\n projects: _store_displayStore__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getState().projects,\n selectedIndexes: _store_displayStore__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getState().selectedIndexes,\n reports: currentReports\n };\n try {\n const response = await fetch(_config_api__WEBPACK_IMPORTED_MODULE_4__.API_URLS.COMPETITION.DATA, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n UUID,\n fingerprint,\n timestamp: Date.now(),\n data: statisticsData\n })\n });\n if (!response.ok) {\n const error = await response.json();\n console.error('发送比赛数据失败:', error);\n }\n } catch (error) {\n console.error('发送比赛数据出错:', error);\n }\n }\n }[\"CompetitionStatistics.useEffect.sendStatistics\"];\n // 返回清理函数\n return ({\n \"CompetitionStatistics.useEffect\": ()=>{\n if (intervalId) {\n clearInterval(intervalId);\n }\n }\n })[\"CompetitionStatistics.useEffect\"];\n }\n }[\"CompetitionStatistics.useEffect\"], [\n seatUUID,\n fingerprint,\n faultScenarios,\n seatNumber,\n getCurrentProject,\n getCurrentTestConfig\n ]);\n return null;\n}\n\n__webpack_async_result__();\n} catch(e) { __webpack_async_result__(e); } });//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHBhZ2VzLWRpci1ub2RlKS8uL3NyYy9jb21wb25lbnRzL0NvbXBldGl0aW9uU3RhdGlzdGljcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztBQUE0QztBQUNPO0FBQ0Y7QUFDUTtBQUNqQjtBQUd6QixTQUFTTTtJQUN0QixNQUFNLENBQUNDLGFBQWFDLGVBQWUsR0FBR1AsK0NBQVFBLENBQUM7SUFDL0MsTUFBTSxFQUFFUSxjQUFjLEVBQUVDLFVBQVUsRUFBQ0MsUUFBUSxFQUFFQyxPQUFPLEVBQUNDLFdBQVcsRUFBQyxHQUFHViw4REFBY0E7SUFDbEYsTUFBTSxFQUFFVyxpQkFBaUIsRUFBQ0Msa0JBQWtCLEVBQUVDLG9CQUFvQixFQUFDLEdBQUdkLCtEQUFlQTtJQUNyRixNQUFNZSxPQUFPTjtJQUNiLE1BQU1PLGFBQWFSO0lBR3JCLFlBQVk7SUFDWixNQUFNUyxtQkFBbUIsT0FBT0MsTUFBTUM7UUFDcEMsSUFBSTtZQUNGLE1BQU1DLFdBQVcsTUFBTUMsTUFBTSxHQUFHbEIsaURBQVFBLENBQUNtQixXQUFXLENBQUNDLElBQUksQ0FBQyxNQUFNLEVBQUVMLEtBQUssYUFBYSxFQUFFQyxJQUFJO1lBQzFGLElBQUlDLFNBQVNJLEVBQUUsRUFBRTtnQkFDZixNQUFNQyxPQUFPLE1BQU1MLFNBQVNNLElBQUk7Z0JBQ2hDLElBQUlELElBQUksQ0FBQ04sR0FBRyxFQUFFUSxVQUFVO29CQUN0QjNCLG9FQUF3QixHQUFHNkIsY0FBYyxDQUFDSixJQUFJLENBQUNOLEdBQUcsQ0FBQ1EsUUFBUTtnQkFDN0Q7Z0JBQ0EsSUFBSUYsSUFBSSxDQUFDTixHQUFHLEVBQUVXLGlCQUFpQjtvQkFDN0I5QixvRUFBd0IsR0FBRytCLHFCQUFxQixDQUFDTixJQUFJLENBQUNOLEdBQUcsQ0FBQ1csZUFBZTtnQkFDM0U7WUFFRjtRQUNGLEVBQUUsT0FBT0UsT0FBTztZQUNkQyxRQUFRRCxLQUFLLENBQUMsYUFBYUE7UUFDN0I7SUFDRjtJQUdBLFFBQVE7SUFDUmxDLGdEQUFT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QU87b0JBR3hELE1BQU0yRCxpQkFBaUI7d0JBQ3JCQyxRQUFROUQ7d0JBQ1IrRCxVQUFVaEU7d0JBQ1ZpRSxTQUFTbkIsZ0JBQWdCb0IsUUFBUTt3QkFDakNDLFVBQVVSLGlCQUFpQk8sUUFBUTt3QkFDbkNFLFdBQVc5QixlQUFlK0IsUUFBUUMsY0FBYzt3QkFDaERWO3dCQUNBVyxrQkFBa0I7NEJBQUV2Qjs0QkFBV0M7d0JBQVU7d0JBQ3pDN0IsVUFBVTNCLG9FQUF3QixHQUFHMkIsUUFBUTt3QkFDN0NHLGlCQUFnQjlCLG9FQUF3QixHQUFHOEIsZUFBZTt3QkFDMURwQixTQUFTMEQ7b0JBRVg7b0JBRUEsSUFBSTt3QkFDRixNQUFNaEQsV0FBVyxNQUFNQyxNQUFNbEIsaURBQVFBLENBQUNtQixXQUFXLENBQUNDLElBQUksRUFBRTs0QkFDdER3RCxRQUFROzRCQUNSQyxTQUFTO2dDQUNQLGdCQUFnQjs0QkFDbEI7NEJBQ0FDLE1BQU1DLEtBQUtDLFNBQVMsQ0FBQztnQ0FDbkJwRTtnQ0FDQVY7Z0NBQ0ErRSxXQUFXQyxLQUFLQyxHQUFHO2dDQUNuQjdELE1BQU00Qzs0QkFDUjt3QkFDRjt3QkFFQSxJQUFJLENBQUNqRCxTQUFTSSxFQUFFLEVBQUU7NEJBQ2hCLE1BQU1RLFFBQVEsTUFBTVosU0FBU00sSUFBSTs0QkFDakNPLFFBQVFELEtBQUssQ0FBQyxhQUFhQTt3QkFDN0I7b0JBQ0YsRUFBRSxPQUFPQSxPQUFPO3dCQUNkQyxRQUFRRCxLQUFLLENBQUMsYUFBYUE7b0JBQzdCO2dCQUNGOztZQUdBLFNBQVM7WUFDVDttREFBTztvQkFDTCxJQUFJUyxZQUFZO3dCQUNkOEMsY0FBYzlDO29CQUNoQjtnQkFDRjs7UUFDRjswQ0FBRztRQUFDaEM7UUFBVUo7UUFBYUU7UUFBZ0JDO1FBQVlJO1FBQW1CRTtLQUFxQjtJQUUvRixPQUFPO0FBQ1QiLCJzb3VyY2VzIjpbIi9vcHQvZGV2L2VzdC1kc3gvc3JjL2NvbXBvbmVudHMvQ29tcGV0aXRpb25TdGF0aXN0aWNzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XHJcbmltcG9ydCB1c2VEaXNwbGF5U3RvcmUgZnJvbSAnQC9zdG9yZS9kaXNwbGF5U3RvcmUnO1xyXG5pbXBvcnQgdXNlRGV2aWNlU3RvcmUgZnJvbSAnQC9zdG9yZS9kZXZpY2VTdG9yZSc7XHJcbmltcG9ydCBGaW5nZXJwcmludEpTIGZyb20gJ0BmaW5nZXJwcmludGpzL2ZpbmdlcnByaW50anMnO1xyXG5pbXBvcnQgeyBBUElfVVJMUyB9IGZyb20gJ0AvY29uZmlnL2FwaSc7XHJcblxyXG5cclxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gQ29tcGV0aXRpb25TdGF0aXN0aWNzKCkge1xyXG4gIGNvbnN0IFtmaW5nZXJwcmludCwgc2V0RmluZ2VycHJpbnRdID0gdXNlU3RhdGUoJycpO1xyXG4gIGNvbnN0IHsgZmF1bHRTY2VuYXJpb3MsIHNlYXROdW1iZXIsc2VhdFVVSUQsIHJlcG9ydHMsY2xlYW5TdGF0dXN9ID0gdXNlRGV2aWNlU3RvcmUoKTtcclxuICBjb25zdCB7IGdldEN1cnJlbnRQcm9qZWN0LGdldEN1cnJlbnRPcGVyYXRvciwgZ2V0Q3VycmVudFRlc3RDb25maWd9ID0gdXNlRGlzcGxheVN0b3JlKCk7XHJcbiAgY29uc3QgVVVJRCA9IHNlYXRVVUlEO1xyXG4gIGNvbnN0IFNlYXROdW1iZXIgPSBzZWF0TnVtYmVyO1xyXG5cclxuXHJcbi8vIOaWsOWinu+8muiOt+WPluWOhuWPsuaVsOaNrlxyXG5jb25zdCBmZXRjaEhpc3RvcnlEYXRhID0gYXN5bmMgKHV1aWQsIGZwKSA9PiB7XHJcbiAgdHJ5IHtcclxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goYCR7QVBJX1VSTFMuQ09NUEVUSVRJT04uREFUQX0/VVVJRD0ke3V1aWR9JmZpbmdlcnByaW50PSR7ZnB9YCk7XHJcbiAgICBpZiAocmVzcG9uc2Uub2spIHtcclxuICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKTtcclxuICAgICAgaWYgKGRhdGFbZnBdPy5wcm9qZWN0cykge1xyXG4gICAgICAgIHVzZURpc3BsYXlTdG9yZS5nZXRTdGF0ZSgpLnVwZGF0ZVByb2plY3RzKGRhdGFbZnBdLnByb2plY3RzKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoZGF0YVtmcF0/LnNlbGVjdGVkSW5kZXhlcykge1xyXG4gICAgICAgIHVzZURpc3BsYXlTdG9yZS5nZXRTdGF0ZSgpLnVwZGF0ZXNlbGVjdGVkSW5kZXhlcyhkYXRhW2ZwXS5zZWxlY3RlZEluZGV4ZXMpO1xyXG4gICAgICB9XHJcblxyXG4gICAgfVxyXG4gIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICBjb25zb2xlLmVycm9yKCfojrflj5bljoblj7LmlbDmja7lpLHotKU6JywgZXJyb3IpO1xyXG4gIH1cclxufTtcclxuXHJcblxyXG4vLyDliJ3lp4vljJbmjIfnurlcclxudXNlRWZmZWN0KCgpID0+IHtcclxuICBpZiAoIVVVSUQgfHwgIVNlYXROdW1iZXIpIHJldHVybjtcclxuXHJcbiAgY29uc3QgaW5pdEZpbmdlcnByaW50ID0gYXN5bmMgKCkgPT4ge1xyXG4gICAgdHJ5IHtcclxuICAgICAgY29uc3QgZnAgPSBhd2FpdCBGaW5nZXJwcmludEpTLmxvYWQoKTtcclxuICAgICAgY29uc3QgeyB2aXNpdG9ySWQgfSA9IGF3YWl0IGZwLmdldCgpO1xyXG4gICAgICAvLyDlsIZTZWF0TnVtYmVy57yW56CB5ZCO5re35ZCI5Yiw5oyH57q55LitXHJcbiAgICAgIGNvbnN0IGVuY29kZWRTZWF0TnVtYmVyID0gZW5jb2RlVVJJQ29tcG9uZW50KFNlYXROdW1iZXIpO1xyXG4gICAgICAvLyBjb25zdCBtaXhlZEZpbmdlcnByaW50ID0gYCR7dmlzaXRvcklkfS0ke2VuY29kZWRTZWF0TnVtYmVyfWA7XHJcbiAgICAgIGNvbnN0IG1peGVkRmluZ2VycHJpbnQgPSBgJHtlbmNvZGVkU2VhdE51bWJlcn1gO1xyXG4gICAgICBzZXRGaW5nZXJwcmludChtaXhlZEZpbmdlcnByaW50KTtcclxuICAgICAgXHJcbiAgICAgIC8vIOiOt+WPluWOhuWPsuaVsOaNrlxyXG4gICAgICBhd2FpdCBmZXRjaEhpc3RvcnlEYXRhKFVVSUQsIG1peGVkRmluZ2VycHJpbnQpO1xyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgY29uc29sZS5lcnJvcign55Sf5oiQ5oyH57q55aSx6LSlOicsIGVycm9yKTtcclxuICAgIH1cclxuICB9O1xyXG5cclxuICBpbml0RmluZ2VycHJpbnQoKTtcclxufSwgW1VVSUQsIFNlYXROdW1iZXJdKTtcclxuXHJcbi8vIOWumuaXtuWPkemAgeaVsOaNrlxyXG51c2VFZmZlY3QoKCkgPT4ge1xyXG4gIGlmICghVVVJRCB8fCAhZmluZ2VycHJpbnQpIHJldHVybjtcclxuXHJcbiAgbGV0IGludGVydmFsSWQgPSBudWxsOyAgLy8g5aOw5piOaW50ZXJ2YWxJZOWPmOmHj1xyXG5cclxuICAvLyDorr7nva7lrprml7blmajvvIzmr48z56eS5Y+R6YCB5LiA5qyh5pWw5o2uXHJcbiAgaW50ZXJ2YWxJZCA9IHNldEludGVydmFsKCgpID0+IHtcclxuICAgIHNlbmRTdGF0aXN0aWNzKCk7XHJcbiAgfSwgMzAwMCk7XHJcblxyXG4gIC8vIOiOt+WPluWfuuWHhuiuvue9rueKtuaAgVxyXG4gICAgY29uc3QgZ2V0UmVmU3RhdHVzID0gKCkgPT4ge1xyXG4gICAgICBjb25zdCBjdXJyZW50Q29uZmlnID0gZ2V0Q3VycmVudFRlc3RDb25maWcoKTtcclxuICAgICAgY29uc3QgbW9kdWxlVHlwZSA9IGN1cnJlbnRDb25maWc/Lm1vZHVsZVR5cGU7XHJcbiAgICAgIGlmICghbW9kdWxlVHlwZSkgcmV0dXJuIGZhbHNlO1xyXG4gICAgICBcclxuICAgICAgY29uc3QgeyByZWYgfSA9IHVzZURpc3BsYXlTdG9yZS5nZXRTdGF0ZSgpO1xyXG4gICAgICBpZiAobW9kdWxlVHlwZSA9PT0gJzgwMDAnKSByZXR1cm4gcmVmLmNvcHBlcj8uc3RhdHVzIHx8IGZhbHNlO1xyXG4gICAgICBpZiAobW9kdWxlVHlwZSA9PT0gJ2NmcCcpIHJldHVybiByZWYuY2ZwPy5zdGF0dXMgfHwgZmFsc2U7XHJcbiAgICAgIGlmIChtb2R1bGVUeXBlID09PSAnb2ZwJykgcmV0dXJuIHJlZi5vZnA/LnN0YXR1cyB8fCBmYWxzZTtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfTtcclxuXHJcbiAgICAvLyDojrflj5bmtYvor5Xnu5Pmnpznu5/orqFcclxuICAgIGNvbnN0IGdldFRlc3RSZXN1bHRzID0gKCkgPT4ge1xyXG4gICAgICBjb25zdCBjdXJyZW50UHJvamVjdCA9IGdldEN1cnJlbnRQcm9qZWN0KCk7XHJcbiAgICAgIGlmICghY3VycmVudFByb2plY3Q/LnRlc3RSZXN1bHRzKSByZXR1cm4geyBwYXNzQ291bnQ6IDAsIGZhaWxDb3VudDogMCB9O1xyXG4gICAgICBcclxuICAgICAgY29uc3QgcGFzc0NvdW50ID0gY3VycmVudFByb2plY3Q/LnRlc3RSZXN1bHRzLmZpbHRlcihyZXN1bHQgPT4ge1xyXG4gICAgICAgIGNvbnN0IGNvcHBlclN0YXR1cyA9IHJlc3VsdC5Db3BwZXJSZXN1bHRTdGF0dXM7XHJcbiAgICAgICAgY29uc3QgY2ZwU3RhdHVzID0gcmVzdWx0LkNGUFJlc3VsdFN0YXR1cztcclxuICAgICAgICBjb25zdCBvZnBTdGF0dXMgPSByZXN1bHQub2ZwUmVzdWx0U3RhdHVzO1xyXG4gICAgICAgIFxyXG4gICAgICAgIGlmIChjb3BwZXJTdGF0dXMpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGNvcHBlclN0YXR1cyA9PT0gJ3Bhc3MnO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoY2ZwU3RhdHVzKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBjZnBTdGF0dXMgPT09ICdwYXNzJztcclxuICAgICAgICB9IGVsc2UgaWYgKG9mcFN0YXR1cykge1xyXG4gICAgICAgICAgICByZXR1cm4gb2ZwU3RhdHVzID09PSAncGFzcyc7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH0pLmxlbmd0aDtcclxuICAgIFxyXG4gICAgY29uc3QgZmFpbENvdW50ID0gY3VycmVudFByb2plY3Q/LnRlc3RSZXN1bHRzLmZpbHRlcihyZXN1bHQgPT4ge1xyXG4gICAgICAgIGNvbnN0IGNvcHBlclN0YXR1cyA9IHJlc3VsdC5Db3BwZXJSZXN1bHRTdGF0dXM7XHJcbiAgICAgICAgY29uc3QgY2ZwU3RhdHVzID0gcmVzdWx0LkNGUFJlc3VsdFN0YXR1cztcclxuICAgICAgICBjb25zdCBvZnBTdGF0dXMgPSByZXN1bHQub2ZwUmVzdWx0U3RhdHVzO1xyXG4gICAgICAgIFxyXG4gICAgICAgIGlmIChjb3BwZXJTdGF0dXMpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGNvcHBlclN0YXR1cyA9PT0gJ2ZhaWwnO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoY2ZwU3RhdHVzKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBjZnBTdGF0dXMgPT09ICdmYWlsJztcclxuICAgICAgICB9IGVsc2UgaWYgKG9mcFN0YXR1cykge1xyXG4gICAgICAgICAgICByZXR1cm4gb2ZwU3RhdHVzID09PSAnZmFpbCc7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH0pLmxlbmd0aDtcclxuXHJcblxyXG4gICAgICByZXR1cm4geyBwYXNzQ291bnQsIGZhaWxDb3VudCB9O1xyXG4gICAgfTtcclxuXHJcbiAgICAvLyDlj5HpgIHnu5/orqHmlbDmja5cclxuICAgIGNvbnN0IHNlbmRTdGF0aXN0aWNzID0gYXN5bmMgKCkgPT4ge1xyXG4gICAgICBjb25zdCBjdXJyZW50UHJvamVjdCA9IGdldEN1cnJlbnRQcm9qZWN0KCk7XHJcbiAgICAgIGNvbnN0IGN1cnJlbnRPcGVyYXRvciA9IGdldEN1cnJlbnRPcGVyYXRvcigpO1xyXG4gICAgICBjb25zdCBjdXJyZW50Q29uZmlnID0gZ2V0Q3VycmVudFRlc3RDb25maWcoKTtcclxuICAgICAgY29uc3QgcmVmU3RhdHVzID0gZ2V0UmVmU3RhdHVzKCk7XHJcbiAgICAgIGNvbnN0IHsgcGFzc0NvdW50LCBmYWlsQ291bnQgfSA9IGdldFRlc3RSZXN1bHRzKCk7XHJcbiAgICAgIGNvbnN0IGN1cnJlbnRSZXBvcnRzID0gdXNlRGV2aWNlU3RvcmUuZ2V0U3RhdGUoKS5yZXBvcnRzO1xyXG4gICAgICBcclxuICAgICAgXHJcbiAgICAgIGNvbnN0IHN0YXRpc3RpY3NEYXRhID0ge1xyXG4gICAgICAgIHVzZXJJZDogc2VhdE51bWJlcixcclxuICAgICAgICBzY2VuYXJpbzogZmF1bHRTY2VuYXJpb3MsXHJcbiAgICAgICAgcHJvamVjdDogY3VycmVudFByb2plY3Q/Lm5hbWUgfHwgJycsXHJcbiAgICAgICAgb3BlcmF0b3I6IGN1cnJlbnRPcGVyYXRvcj8ubmFtZSB8fCAnJyxcclxuICAgICAgICB0ZXN0TGltaXQ6IGN1cnJlbnRDb25maWc/LnBhcmFtcz8ubGltaXRWYWx1ZSB8fCAnJyxcclxuICAgICAgICByZWZTdGF0dXMsXHJcbiAgICAgICAgdGVzdFJlc3VsdHNDb3VudDogeyBwYXNzQ291bnQsIGZhaWxDb3VudCB9LFxyXG4gICAgICAgIHByb2plY3RzOiB1c2VEaXNwbGF5U3RvcmUuZ2V0U3RhdGUoKS5wcm9qZWN0cyxcclxuICAgICAgICBzZWxlY3RlZEluZGV4ZXM6dXNlRGlzcGxheVN0b3JlLmdldFN0YXRlKCkuc2VsZWN0ZWRJbmRleGVzLFxyXG4gICAgICAgIHJlcG9ydHM6IGN1cnJlbnRSZXBvcnRzLFxyXG5cclxuICAgICAgfTtcclxuXHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChBUElfVVJMUy5DT01QRVRJVElPTi5EQVRBLCB7XHJcbiAgICAgICAgICBtZXRob2Q6ICdQT1NUJyxcclxuICAgICAgICAgIGhlYWRlcnM6IHtcclxuICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7XHJcbiAgICAgICAgICAgIFVVSUQsXHJcbiAgICAgICAgICAgIGZpbmdlcnByaW50LFxyXG4gICAgICAgICAgICB0aW1lc3RhbXA6IERhdGUubm93KCksXHJcbiAgICAgICAgICAgIGRhdGE6IHN0YXRpc3RpY3NEYXRhXHJcbiAgICAgICAgICB9KSxcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgaWYgKCFyZXNwb25zZS5vaykge1xyXG4gICAgICAgICAgY29uc3QgZXJyb3IgPSBhd2FpdCByZXNwb25zZS5qc29uKCk7XHJcbiAgICAgICAgICBjb25zb2xlLmVycm9yKCflj5HpgIHmr5TotZvmlbDmja7lpLHotKU6JywgZXJyb3IpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKCflj5HpgIHmr5TotZvmlbDmja7lh7rplJk6JywgZXJyb3IpO1xyXG4gICAgICB9XHJcbiAgICB9O1xyXG5cclxuXHJcbiAgICAvLyDov5Tlm57muIXnkIblh73mlbBcclxuICAgIHJldHVybiAoKSA9PiB7XHJcbiAgICAgIGlmIChpbnRlcnZhbElkKSB7XHJcbiAgICAgICAgY2xlYXJJbnRlcnZhbChpbnRlcnZhbElkKTtcclxuICAgICAgfVxyXG4gICAgfTtcclxuICB9LCBbc2VhdFVVSUQsIGZpbmdlcnByaW50LCBmYXVsdFNjZW5hcmlvcywgc2VhdE51bWJlciwgZ2V0Q3VycmVudFByb2plY3QsIGdldEN1cnJlbnRUZXN0Q29uZmlnXSk7XHJcblxyXG4gIHJldHVybiBudWxsO1xyXG59XHJcbiJdLCJuYW1lcyI6WyJ1c2VFZmZlY3QiLCJ1c2VTdGF0ZSIsInVzZURpc3BsYXlTdG9yZSIsInVzZURldmljZVN0b3JlIiwiRmluZ2VycHJpbnRKUyIsIkFQSV9VUkxTIiwiQ29tcGV0aXRpb25TdGF0aXN0aWNzIiwiZmluZ2VycHJpbnQiLCJzZXRGaW5nZXJwcmludCIsImZhdWx0U2NlbmFyaW9zIiwic2VhdE51bWJlciIsInNlYXRVVUlEIiwicmVwb3J0cyIsImNsZWFuU3RhdHVzIiwiZ2V0Q3VycmVudFByb2plY3QiLCJnZXRDdXJyZW50T3BlcmF0b3IiLCJnZXRDdXJyZW50VGVzdENvbmZpZyIsIlVVSUQiLCJTZWF0TnVtYmVyIiwiZmV0Y2hIaXN0b3J5RGF0YSIsInV1aWQiLCJmcCIsInJlc3BvbnNlIiwiZmV0Y2giLCJDT01QRVRJVElPTiIsIkRBVEEiLCJvayIsImRhdGEiLCJqc29uIiwicHJvamVjdHMiLCJnZXRTdGF0ZSIsInVwZGF0ZVByb2plY3RzIiwic2VsZWN0ZWRJbmRleGVzIiwidXBkYXRlc2VsZWN0ZWRJbmRleGVzIiwiZXJyb3IiLCJjb25zb2xlIiwiaW5pdEZpbmdlcnByaW50IiwibG9hZCIsInZpc2l0b3JJZCIsImdldCIsImVuY29kZWRTZWF0TnVtYmVyIiwiZW5jb2RlVVJJQ29tcG9uZW50IiwibWl4ZWRGaW5nZXJwcmludCIsImludGVydmFsSWQiLCJzZXRJbnRlcnZhbCIsInNlbmRTdGF0aXN0aWNzIiwiZ2V0UmVmU3RhdHVzIiwiY3VycmVudENvbmZpZyIsIm1vZHVsZVR5cGUiLCJyZWYiLCJjb3BwZXIiLCJzdGF0dXMiLCJjZnAiLCJvZnAiLCJnZXRUZXN0UmVzdWx0cyIsImN1cnJlbnRQcm9qZWN0IiwidGVzdFJlc3VsdHMiLCJwYXNzQ291bnQiLCJmYWlsQ291bnQiLCJmaWx0ZXIiLCJyZXN1bHQiLCJjb3BwZXJTdGF0dXMiLCJDb3BwZXJSZXN1bHRTdGF0dXMiLCJjZnBTdGF0dXMiLCJDRlBSZXN1bHRTdGF0dXMiLCJvZnBTdGF0dXMiLCJvZnBSZXN1bHRTdGF0dXMiLCJsZW5ndGgiLCJjdXJyZW50T3BlcmF0b3IiLCJyZWZTdGF0dXMiLCJjdXJyZW50UmVwb3J0cyIsInN0YXRpc3RpY3NEYXRhIiwidXNlcklkIiwic2NlbmFyaW8iLCJwcm9qZWN0IiwibmFtZSIsIm9wZXJhdG9yIiwidGVzdExpbWl0IiwicGFyYW1zIiwibGltaXRWYWx1ZSIsInRlc3RSZXN1bHRzQ291bnQiLCJtZXRob2QiLCJoZWFkZXJzIiwiYm9keSIsIkpTT04iLCJzdHJpbmdpZnkiLCJ0aW1lc3RhbXAiLCJEYXRlIiwibm93IiwiY2xlYXJJbnRlcnZhbCJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(pages-dir-node)/./src/components/CompetitionStatistics.js\n"); /***/ }), /***/ "(pages-dir-node)/./src/components/ConnectionAnalyzer.js": /*!**********************************************!*\ !*** ./src/components/ConnectionAnalyzer.js ***! \**********************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; eval("__webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {\n__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__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _store_deviceStore__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/store/deviceStore */ \"(pages-dir-node)/./src/store/deviceStore.js\");\n/* harmony import */ var _store_displayStore__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/store/displayStore */ \"(pages-dir-node)/./src/store/displayStore.js\");\n/* harmony import */ var _config_api__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/config/api */ \"(pages-dir-node)/./src/config/api.js\");\nvar __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_store_deviceStore__WEBPACK_IMPORTED_MODULE_1__, _store_displayStore__WEBPACK_IMPORTED_MODULE_2__]);\n([_store_deviceStore__WEBPACK_IMPORTED_MODULE_1__, _store_displayStore__WEBPACK_IMPORTED_MODULE_2__] = __webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__);\n\n\n\n\n// 构建连接图\nfunction buildConnectionGraph(connections) {\n const graph = {};\n connections.forEach((conn)=>{\n graph[conn.source] = graph[conn.source] || [];\n graph[conn.target] = graph[conn.target] || [];\n graph[conn.source].push(conn.target);\n graph[conn.target].push(conn.source);\n });\n return graph;\n}\n// 查找跳线/连接器的另一端\nfunction findCounterpart(nodeName) {\n const jumperTypes = [\n {\n pattern: /(pachcode-copper|pachcode-m12-d|pachcode-m12-x|sm-lc-lc|mm-lc-lc|smc-lc-lc|mmc-lc-lc|mm-mpo-mpo|sm-mpo-mpo)/,\n replace: (n)=>n.includes('-left') ? n.replace('-left', '-right') : n.replace('-right', '-left')\n },\n {\n pattern: /lc-connector-\\d+-(left|right)/,\n replace: (n)=>n.includes('-left') ? n.replace('-left', '-right') : n.replace('-right', '-left')\n },\n // MPO-LC连接器穿透逻辑 - 从LC端口到MPO端口\n {\n pattern: /(mm-mpo-lc-box-\\d+-lc-port)(\\d+)/,\n replace: (n)=>{\n const matches = n.match(/(mm-mpo-lc-box-\\d+)-lc-port(\\d+)/);\n if (matches) {\n return `${matches[1]}-mpo-port1`; // 从任意LC端口穿透到对应的MPO端口\n }\n return n;\n }\n }\n ];\n for (const { pattern, replace } of jumperTypes){\n if (nodeName.match(pattern)) return replace(nodeName);\n }\n return null;\n}\n// 完整路径追踪\nfunction traceFullPath(graph, startPoint) {\n const visited = new Set();\n const path = [];\n let current = startPoint;\n while(current && !visited.has(current)){\n visited.add(current);\n path.push(current);\n // 跳线穿透逻辑\n const counterpart = findCounterpart(current);\n if (counterpart && graph[counterpart] && !visited.has(counterpart)) {\n current = counterpart;\n continue;\n }\n // 常规连接\n const neighbors = (graph[current] || []).filter((n)=>!visited.has(n));\n current = neighbors[0];\n }\n // 检测路径中是否存在MPO-LC端口,并修改end值\n let endPoint = path[path.length - 1] || startPoint;\n // 检查路径中是否包含MPO-LC端口\n for (const item of path){\n const matches = item.match(/(mm-mpo-lc-box-\\d+-lc-port)(\\d+)/);\n if (matches) {\n // 在end值上添加端口号\n endPoint = `${endPoint}-port${matches[2]}`;\n break; // 只使用第一个匹配的端口号\n }\n }\n return {\n start: startPoint,\n end: endPoint,\n path: path,\n length: path.length - 1\n };\n}\n// 8000型分析\nfunction analyze8000(graph) {\n const result = {\n mainPaths: {},\n remotePaths: {}\n };\n // 动态识别端口\n const analyzePorts = (prefix, target)=>{\n Object.keys(graph).filter((k)=>k.startsWith(prefix)).forEach((port)=>{\n const trace = traceFullPath(graph, port);\n target[port] = {\n ...trace,\n portType: port.includes('channel') ? 'channel' : 'permanent'\n };\n });\n };\n analyzePorts('main-', result.mainPaths);\n analyzePorts('remote-', result.remotePaths);\n return result;\n}\n// CFP型分析\nfunction analyzeCFP(graph) {\n const result = {\n mainPaths: {},\n remotePaths: {}\n };\n // 端口配置\n const PORT_CONFIG = {\n main: {\n outputs: [\n 'main-cfp-sm-out',\n 'main-cfp-mm-out'\n ],\n input: 'main-cfp-in',\n vfl: 'main-vfl'\n },\n remote: {\n outputs: [\n 'remote-cfp-sm-out',\n 'remote-cfp-mm-out'\n ],\n input: 'remote-cfp-in'\n }\n };\n // 分析端口连接\n const analyzePort = (port, type)=>{\n if (!graph[port]) return;\n const trace = traceFullPath(graph, port);\n result[`${type}Paths`][port] = {\n ...trace\n };\n };\n // 分析所有端口\n Object.values(PORT_CONFIG.main).flat().forEach((p)=>analyzePort(p, 'main'));\n Object.values(PORT_CONFIG.remote).flat().forEach((p)=>analyzePort(p, 'remote'));\n return result;\n}\n// OFP型分析\nfunction analyzeOFP(graph) {\n const result = {\n mainPaths: {}\n };\n [\n 'main-ofp-sm-out',\n 'main-ofp-mm-out',\n 'main-vfl'\n ].forEach((port)=>{\n if (graph[port]) {\n const trace = traceFullPath(graph, port);\n result.mainPaths[port] = {\n ...trace\n };\n }\n });\n return result;\n}\n// 创建通用连接状态检查\nconst setConnectionStatus = async (result, moduleType, connections)=>{\n try {\n // 从API获取连接配置\n const deviceStore = _store_deviceStore__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getState();\n const faultScenario = deviceStore.faultScenarios || '';\n const apiUrl = _config_api__WEBPACK_IMPORTED_MODULE_3__.API_URLS.CONNECTION.MAP_WITH_SCENE(faultScenario);\n const response = await fetch(apiUrl);\n if (!response.ok) {\n throw new Error('获取连接配置失败');\n }\n const data = await response.json();\n const connectionMap = data || {};\n const mainPaths = result.mainPaths;\n const mainEnd = mainPaths ? Object.values(mainPaths)[0]?.end || null : null;\n const mainStart = mainPaths ? Object.values(mainPaths)[0]?.start || null : null;\n // OFP模块特殊处理\n if (moduleType === 'ofp' && mainEnd && mainPaths) {\n // 直接查找mainEnd作为键的情况\n if (connectionMap[mainEnd]) {\n result.OFPStatus = connectionMap[mainEnd]?.fiberstatus || null;\n result.OFPConnectedTo = connectionMap[mainEnd]?.connectedTo || null;\n } else {\n // 如果mainEnd不是键,查找connectedTo等于mainEnd的项\n for(const key in connectionMap){\n if (connectionMap[key]?.connectedTo === mainEnd && connectionMap[key]?.type === 'fiber') {\n result.OFPStatus = connectionMap[key]?.fiberstatus || null;\n result.OFPConnectedTo = key;\n break;\n }\n }\n }\n // 查找OFPConnectedTo对应的source值\n if (result.OFPConnectedTo && connections) {\n const matchingConnection = connections.find((conn)=>conn.target === result.OFPConnectedTo);\n result.OFPConnectedToRefStatus = matchingConnection ? matchingConnection.source : null;\n }\n // 查找mainEnd对应的source值\n if (mainStart && connections) {\n const mainStartConnection = connections.find((conn)=>conn.target === mainStart);\n result.OFPoutRefStatus = mainStartConnection ? mainStartConnection.source : null;\n }\n return;\n }\n // 其他模块的处理逻辑\n const remotePaths = result.remotePaths || {};\n const remoteEnd = Object.values(remotePaths)[0]?.end;\n // 端口互通检查\n if (mainEnd && remoteEnd) {\n // CFP模块特殊处理\n if (moduleType === 'cfp') {\n // 获取四个端点\n const mainSmOutEnd = mainPaths['main-cfp-sm-out']?.end;\n const mainMmOutEnd = mainPaths['main-cfp-mm-out']?.end;\n const mainInEnd = mainPaths['main-cfp-in']?.end;\n const remoteSmOutEnd = remotePaths['remote-cfp-sm-out']?.end;\n const remoteMmOutEnd = remotePaths['remote-cfp-mm-out']?.end;\n const remoteInEnd = remotePaths['remote-cfp-in']?.end;\n // 检查两对连接\n const checkConnection = (end1, end2)=>{\n if (!end1 || !end2) return false;\n return Object.keys(connectionMap).some((key)=>{\n const connection = connectionMap[key];\n return connection.connectedTo === end1 && key === end2 || connection.connectedTo === end2 && key === end1;\n });\n };\n // 分别检查单模和多模的连接\n const isMainToRemoteSmConnected = checkConnection(mainSmOutEnd, remoteInEnd);\n const isMainToRemoteMmConnected = checkConnection(mainMmOutEnd, remoteInEnd);\n const isRemoteToMainSmConnected = checkConnection(remoteSmOutEnd, mainInEnd);\n const isRemoteToMainMmConnected = checkConnection(remoteMmOutEnd, mainInEnd);\n // 任一对连接成功即认为连接成功\n const isConnected = isMainToRemoteSmConnected && isRemoteToMainSmConnected || isMainToRemoteMmConnected && isRemoteToMainMmConnected;\n result.CFPConnectStatus = isConnected;\n // 如果连接存在,获取详细状态信息\n if (isConnected) {\n let connectionKey1, connectionKey2;\n if (isMainToRemoteSmConnected && isRemoteToMainSmConnected) {\n // 单模连接\n connectionKey1 = Object.keys(connectionMap).find((key)=>connectionMap[key].connectedTo === mainSmOutEnd && key === remoteInEnd || connectionMap[key].connectedTo === remoteInEnd && key === mainSmOutEnd);\n connectionKey2 = Object.keys(connectionMap).find((key)=>connectionMap[key].connectedTo === remoteSmOutEnd && key === mainInEnd || connectionMap[key].connectedTo === mainInEnd && key === remoteSmOutEnd);\n } else {\n // 多模连接\n connectionKey1 = Object.keys(connectionMap).find((key)=>connectionMap[key].connectedTo === mainMmOutEnd && key === remoteInEnd || connectionMap[key].connectedTo === remoteInEnd && key === mainMmOutEnd);\n connectionKey2 = Object.keys(connectionMap).find((key)=>connectionMap[key].connectedTo === remoteMmOutEnd && key === mainInEnd || connectionMap[key].connectedTo === mainInEnd && key === remoteMmOutEnd);\n }\n if (connectionKey1 && connectionKey2) {\n const connection1 = connectionMap[connectionKey1];\n const connection2 = connectionMap[connectionKey2];\n result.CFPMainIn = connection1.fiberstatus;\n result.CFPMainOut = connection2.fiberstatus;\n }\n } else {\n result.CFPMainIn = 'unknown';\n result.CFPMainOut = 'unknown';\n }\n } else {\n // 其他模块的处理逻辑\n const isConnected = Object.keys(connectionMap).some((key)=>{\n const connection = connectionMap[key];\n return connection.connectedTo === mainEnd && key === remoteEnd || connection.connectedTo === remoteEnd && key === mainEnd;\n });\n // 设置连接状态\n const statusPrefix = moduleType.toUpperCase();\n result[`${statusPrefix}ConnectStatus`] = isConnected;\n // 如果连接存在,获取详细状态信息\n if (isConnected) {\n const connectionKey = Object.keys(connectionMap).find((key)=>connectionMap[key].connectedTo === mainEnd && key === remoteEnd || connectionMap[key].connectedTo === remoteEnd && key === mainEnd);\n if (connectionKey) {\n const connection = connectionMap[connectionKey];\n switch(moduleType){\n case '8000':\n result.CopperWiremapStatus = connection.wiremapstatus;\n result.CopperPerformanceStatus = connection.performancestatus;\n break;\n }\n }\n } else {\n // 未连接时的默认状态\n switch(moduleType){\n case '8000':\n result.CopperWiremapStatus = 'unknown';\n result.CopperPerformanceStatus = 'unknown';\n break;\n case 'cfp':\n result.CFPMainIn = 'unknown';\n result.CFPMainOut = 'unknown';\n break;\n }\n }\n }\n } else {\n // 无效连接时的默认状态\n const statusPrefix = moduleType.toUpperCase();\n result[`${statusPrefix}ConnectStatus`] = false;\n switch(moduleType){\n case '8000':\n result.CopperWiremapStatus = 'unknown';\n result.CopperPerformanceStatus = 'unknown';\n break;\n case 'cfp':\n result.CFPMainIn = 'unknown';\n result.CFPMainOut = 'unknown';\n break;\n }\n }\n } catch (error) {\n console.error('获取连接配置错误:', error);\n // 错误时的默认状态\n const statusPrefix = moduleType.toUpperCase();\n result[`${statusPrefix}ConnectStatus`] = false;\n switch(moduleType){\n case '8000':\n result.CopperWiremapStatus = 'unknown';\n result.CopperPerformanceStatus = 'unknown';\n break;\n case 'cfp':\n result.CFPMainIn = 'unknown';\n result.CFPMainOut = 'unknown';\n break;\n case 'ofp':\n result.OFPStatus = 'unknown';\n break;\n }\n }\n};\n// 组装最终输出的分析结果\nasync function analyzeAllConnections(connections) {\n const deviceStore = _store_deviceStore__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getState();\n const mainModule = deviceStore.mainUnitModules[0]?.id;\n const remoteModule = deviceStore.remoteUnitModules[0]?.id;\n // 处理没有连接的情况\n if (!connections || connections.length === 0) {\n return {\n mainModule,\n remoteModule\n };\n }\n const graph = buildConnectionGraph(connections);\n const result = {\n mainModule,\n remoteModule\n };\n if (mainModule?.includes('8000')) {\n Object.assign(result, analyze8000(graph));\n } else if (mainModule?.includes('cfp')) {\n Object.assign(result, analyzeCFP(graph));\n } else if (mainModule?.includes('ofp')) {\n Object.assign(result, analyzeOFP(graph));\n } else {\n result.unknownPaths = {};\n Object.keys(graph).forEach((port)=>{\n result.unknownPaths[port] = traceFullPath(graph, port);\n });\n }\n // 检查端口互通状态并更新结果\n const moduleTypeMap = {\n '8000': '8000',\n 'cfp': 'cfp',\n 'ofp': 'ofp'\n };\n const currentModuleType = moduleTypeMap[mainModule?.split('-')[0]] || '8000';\n await setConnectionStatus(result, currentModuleType, connections);\n return result;\n}\n// 同步分析结果到deivceStore\nconst ConnectionAnalyzer = ()=>{\n const connectionPaths = (0,_store_deviceStore__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n \"ConnectionAnalyzer.useDeviceStore[connectionPaths]\": (state)=>state.connectionPaths\n }[\"ConnectionAnalyzer.useDeviceStore[connectionPaths]\"]);\n const updateConnectionStatus = (0,_store_deviceStore__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n \"ConnectionAnalyzer.useDeviceStore[updateConnectionStatus]\": (state)=>state.updateConnectionStatus\n }[\"ConnectionAnalyzer.useDeviceStore[updateConnectionStatus]\"]);\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)({\n \"ConnectionAnalyzer.useEffect\": ()=>{\n // 创建一个异步函数来处理分析\n const analyzeConnections = {\n \"ConnectionAnalyzer.useEffect.analyzeConnections\": async ()=>{\n try {\n const result = await analyzeAllConnections(connectionPaths);\n updateConnectionStatus(result);\n //console.log('连接分析结果:', result);\n } catch (error) {\n console.error('连接分析错误:', error);\n // 发生错误时更新状态为未连接\n updateConnectionStatus({\n mainModule: null,\n remoteModule: null\n });\n }\n }\n }[\"ConnectionAnalyzer.useEffect.analyzeConnections\"];\n // 执行分析\n analyzeConnections();\n }\n }[\"ConnectionAnalyzer.useEffect\"], [\n connectionPaths,\n updateConnectionStatus\n ]);\n return null;\n};\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ConnectionAnalyzer);\n\n__webpack_async_result__();\n} catch(e) { __webpack_async_result__(e); } });//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHBhZ2VzLWRpci1ub2RlKS8uL3NyYy9jb21wb25lbnRzL0Nvbm5lY3Rpb25BbmFseXplci5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBeUM7QUFDUTtBQUNFO0FBQ1g7QUFJeEMsUUFBUTtBQUNSLFNBQVNLLHFCQUFxQkMsV0FBVztJQUN2QyxNQUFNQyxRQUFRLENBQUM7SUFDZkQsWUFBWUUsT0FBTyxDQUFDQyxDQUFBQTtRQUNsQkYsS0FBSyxDQUFDRSxLQUFLQyxNQUFNLENBQUMsR0FBR0gsS0FBSyxDQUFDRSxLQUFLQyxNQUFNLENBQUMsSUFBSSxFQUFFO1FBQzdDSCxLQUFLLENBQUNFLEtBQUtFLE1BQU0sQ0FBQyxHQUFHSixLQUFLLENBQUNFLEtBQUtFLE1BQU0sQ0FBQyxJQUFJLEVBQUU7UUFDN0NKLEtBQUssQ0FBQ0UsS0FBS0MsTUFBTSxDQUFDLENBQUNFLElBQUksQ0FBQ0gsS0FBS0UsTUFBTTtRQUNuQ0osS0FBSyxDQUFDRSxLQUFLRSxNQUFNLENBQUMsQ0FBQ0MsSUFBSSxDQUFDSCxLQUFLQyxNQUFNO0lBQ3JDO0lBQ0EsT0FBT0g7QUFDVDtBQUVBLGVBQWU7QUFDZixTQUFTTSxnQkFBZ0JDLFFBQVE7SUFDL0IsTUFBTUMsY0FBYztRQUNsQjtZQUFFQyxTQUFTO1lBQ1RDLFNBQVMsQ0FBQ0MsSUFBTUEsRUFBRUMsUUFBUSxDQUFDLFdBQVdELEVBQUVELE9BQU8sQ0FBQyxTQUFTLFlBQVlDLEVBQUVELE9BQU8sQ0FBQyxVQUFVO1FBQVM7UUFDcEc7WUFBRUQsU0FBUztZQUNUQyxTQUFTLENBQUNDLElBQU1BLEVBQUVDLFFBQVEsQ0FBQyxXQUFXRCxFQUFFRCxPQUFPLENBQUMsU0FBUyxZQUFZQyxFQUFFRCxPQUFPLENBQUMsVUFBVTtRQUFTO1FBQ3BHLDhCQUE4QjtRQUM5QjtZQUFFRCxTQUFTO1lBQ1RDLFNBQVMsQ0FBQ0M7Z0JBQ1IsTUFBTUUsVUFBVUYsRUFBRUcsS0FBSyxDQUFDO2dCQUN4QixJQUFJRCxTQUFTO29CQUNYLE9BQU8s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QjtJQUV6QixNQUFNQyxrQkFBa0J2SSw4REFBY0E7OERBQUN3SSxDQUFBQSxRQUFTQSxNQUFNRCxlQUFlOztJQUNyRSxNQUFNRSx5QkFBeUJ6SSw4REFBY0E7cUVBQUN3SSxDQUFBQSxRQUFTQSxNQUFNQyxzQkFBc0I7O0lBRW5GMUksZ0RBQVNBO3dDQUFDO1lBQ1IsZ0JBQWdCO1lBQ2hCLE1BQU0ySTttRUFBcUI7b0JBQ3pCLElBQUk7d0JBQ0YsTUFBTXJHLFNBQVMsTUFBTXNGLHNCQUFzQlk7d0JBQzNDRSx1QkFBdUJwRztvQkFDdkIsaUNBQWlDO29CQUNuQyxFQUFFLE9BQU9vRixPQUFPO3dCQUNkQyxRQUFRRCxLQUFLLENBQUMsV0FBV0E7d0JBQ3pCLGdCQUFnQjt3QkFDaEJnQix1QkFBdUI7NEJBQ3JCYixZQUFZOzRCQUNaRyxjQUFjO3dCQUNoQjtvQkFDRjtnQkFDRjs7WUFFQSxPQUFPO1lBQ1BXO1FBQ0Y7dUNBQUc7UUFBQ0g7UUFBaUJFO0tBQXVCO0lBRTVDLE9BQU87QUFDVDtBQUVBLGlFQUFlSCxrQkFBa0JBLEVBQUMiLCJzb3VyY2VzIjpbIi9vcHQvZGV2L2VzdC1kc3gvc3JjL2NvbXBvbmVudHMvQ29ubmVjdGlvbkFuYWx5emVyLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCc7XHJcbmltcG9ydCB1c2VEZXZpY2VTdG9yZSBmcm9tICdAL3N0b3JlL2RldmljZVN0b3JlJztcclxuaW1wb3J0IHVzZURpc3BsYXlTdG9yZSBmcm9tICdAL3N0b3JlL2Rpc3BsYXlTdG9yZSc7XHJcbmltcG9ydCB7IEFQSV9VUkxTIH0gZnJvbSAnQC9jb25maWcvYXBpJztcclxuXHJcblxyXG5cclxuLy8g5p6E5bu66L+e5o6l5Zu+XHJcbmZ1bmN0aW9uIGJ1aWxkQ29ubmVjdGlvbkdyYXBoKGNvbm5lY3Rpb25zKSB7XHJcbiAgY29uc3QgZ3JhcGggPSB7fTtcclxuICBjb25uZWN0aW9ucy5mb3JFYWNoKGNvbm4gPT4ge1xyXG4gICAgZ3JhcGhbY29ubi5zb3VyY2VdID0gZ3JhcGhbY29ubi5zb3VyY2VdIHx8IFtdO1xyXG4gICAgZ3JhcGhbY29ubi50YXJnZXRdID0gZ3JhcGhbY29ubi50YXJnZXRdIHx8IFtdO1xyXG4gICAgZ3JhcGhbY29ubi5zb3VyY2VdLnB1c2goY29ubi50YXJnZXQpO1xyXG4gICAgZ3JhcGhbY29ubi50YXJnZXRdLnB1c2goY29ubi5zb3VyY2UpO1xyXG4gIH0pO1xyXG4gIHJldHVybiBncmFwaDtcclxufVxyXG5cclxuLy8g5p+l5om+6Lez57q/L+i/nuaOpeWZqOeahOWPpuS4gOerr1xyXG5mdW5jdGlvbiBmaW5kQ291bnRlcnBhcnQobm9kZU5hbWUpIHtcclxuICBjb25zdCBqdW1wZXJUeXBlcyA9IFtcclxuICAgIHsgcGF0dGVybjogLyhwYWNoY29kZS1jb3BwZXJ8cGFjaGNvZGUtbTEyLWR8cGFjaGNvZGUtbTEyLXh8c20tbGMtbGN8bW0tbGMtbGN8c21jLWxjLWxjfG1tYy1sYy1sY3xtbS1tcG8tbXBvfHNtLW1wby1tcG8pLywgXHJcbiAgICAgIHJlcGxhY2U6IChuKSA9PiBuLmluY2x1ZGVzKCctbGVmdCcpID8gbi5yZXBsYWNlKCctbGVmdCcsICctcmlnaHQnKSA6IG4ucmVwbGFjZSgnLXJpZ2h0JywgJy1sZWZ0JykgfSxcclxuICAgIHsgcGF0dGVybjogL2xjLWNvbm5lY3Rvci1cXGQrLShsZWZ0fHJpZ2h0KS8sXHJcbiAgICAgIHJlcGxhY2U6IChuKSA9PiBuLmluY2x1ZGVzKCctbGVmdCcpID8gbi5yZXBsYWNlKCctbGVmdCcsICctcmlnaHQnKSA6IG4ucmVwbGFjZSgnLXJpZ2h0JywgJy1sZWZ0JykgfSxcclxuICAgIC8vIE1QTy1MQ+i/nuaOpeWZqOepv+mAj+mAu+i+kSAtIOS7jkxD56uv5Y+j5YiwTVBP56uv5Y+jXHJcbiAgICB7IHBhdHRlcm46IC8obW0tbXBvLWxjLWJveC1cXGQrLWxjLXBvcnQpKFxcZCspLyxcclxuICAgICAgcmVwbGFjZTogKG4pID0+IHtcclxuICAgICAgICBjb25zdCBtYXRjaGVzID0gbi5tYXRjaCgvKG1tLW1wby1sYy1ib3gtXFxkKyktbGMtcG9ydChcXGQrKS8pO1xyXG4gICAgICAgIGlmIChtYXRjaGVzKSB7XHJcbiAgICAgICAgICByZXR1cm4gYCR7bWF0Y2hlc1sxXX0tbXBvLXBvcnQxYDsgLy8g5LuO5Lu75oSPTEPnq6/lj6Pnqb/pgI/liLDlr7nlupTnmoRNUE/nq6/lj6NcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG47XHJcbiAgICAgIH1cclxuICAgIH0sXHJcbiAgICBcclxuICBdO1xyXG5cclxuICBmb3IgKGNvbnN0IHsgcGF0dGVybiwgcmVwbGFjZSB9IG9mIGp1bXBlclR5cGVzKSB7XHJcbiAgICBpZiAobm9kZU5hbWUubWF0Y2gocGF0dGVybikpIHJldHVybiByZXBsYWNlKG5vZGVOYW1lKTtcclxuICB9XHJcbiAgcmV0dXJuIG51bGw7XHJcbn1cclxuXHJcbi8vIOWujOaVtOi3r+W+hOi/vei4qlxyXG5mdW5jdGlvbiB0cmFjZUZ1bGxQYXRoKGdyYXBoLCBzdGFydFBvaW50KSB7XHJcbiAgY29uc3QgdmlzaXRlZCA9IG5ldyBTZXQoKTtcclxuICBjb25zdCBwYXRoID0gW107XHJcbiAgbGV0IGN1cnJlbnQgPSBzdGFydFBvaW50O1xyXG5cclxuICB3aGlsZSAoY3VycmVudCAmJiAhdmlzaXRlZC5oYXMoY3VycmVudCkpIHtcclxuICAgIHZpc2l0ZWQuYWRkKGN1cnJlbnQpO1xyXG4gICAgcGF0aC5wdXNoKGN1cnJlbnQpO1xyXG5cclxuICAgIC8vIOi3s+e6v+epv+mAj+mAu+i+kVxyXG4gICAgY29uc3QgY291bnRlcnBhcnQgPSBmaW5kQ291bnRlcnBhcnQoY3VycmVudCk7XHJcbiAgICBpZiAoY291bnRlcnBhcnQgJiYgZ3JhcGhbY291bnRlcnBhcnRdICYmICF2aXNpdGVkLmhhcyhjb3VudGVycGFydCkpIHtcclxuICAgICAgY3VycmVudCA9IGNvdW50ZXJwYXJ0O1xyXG4gICAgICBjb250aW51ZTtcclxuICAgIH1cclxuXHJcbiAgICAvLyDluLjop4Tov57mjqVcclxuICAgIGNvbnN0IG5laWdoYm9ycyA9IChncmFwaFtjdXJyZW50XSB8fCBbXSkuZmlsdGVyKG4gPT4gIXZpc2l0ZWQuaGFzKG4pKTtcclxuICAgIGN1cnJlbnQgPSBuZWlnaGJvcnNbMF07XHJcbiAgfVxyXG5cclxuICAvLyDmo4DmtYvot6/lvoTkuK3mmK/lkKblrZjlnKhNUE8tTEPnq6/lj6PvvIzlubbkv67mlLllbmTlgLxcclxuICBsZXQgZW5kUG9pbnQgPSBwYXRoW3BhdGgubGVuZ3RoIC0gMV0gfHwgc3RhcnRQb2ludDtcclxuICBcclxuICAvLyDmo4Dmn6Xot6/lvoTkuK3mmK/lkKbljIXlkKtNUE8tTEPnq6/lj6NcclxuICBmb3IgKGNvbnN0IGl0ZW0gb2YgcGF0aCkge1xyXG4gICAgY29uc3QgbWF0Y2hlcyA9IGl0ZW0ubWF0Y2goLyhtbS1tcG8tbGMtYm94LVxcZCstbGMtcG9ydCkoXFxkKykvKTtcclxuICAgIGlmIChtYXRjaGVzKSB7XHJcbiAgICAgIC8vIOWcqGVuZOWAvOS4iua3u+WKoOerr+WPo+WPt1xyXG4gICAgICBlbmRQb2ludCA9IGAke2VuZFBvaW50fS1wb3J0JHttYXRjaGVzWzJdfWA7XHJcbiAgICAgIGJyZWFrOyAvLyDlj6rkvb/nlKjnrKzkuIDkuKrljLnphY3nmoTnq6/lj6Plj7dcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJldHVybiB7XHJcbiAgICBzdGFydDogc3RhcnRQb2ludCxcclxuICAgIGVuZDogZW5kUG9pbnQsXHJcbiAgICBwYXRoOiBwYXRoLFxyXG4gICAgbGVuZ3RoOiBwYXRoLmxlbmd0aCAtIDFcclxuICB9O1xyXG59XHJcblxyXG4vLyA4MDAw5Z6L5YiG5p6QXHJcbmZ1bmN0aW9uIGFuYWx5emU4MDAwKGdyYXBoKSB7XHJcbiAgY29uc3QgcmVzdWx0ID0geyBtYWluUGF0aHM6IHt9LCByZW1vdGVQYXRoczoge30gfTtcclxuXHJcbiAgLy8g5Yqo5oCB6K+G5Yir56uv5Y+jXHJcbiAgY29uc3QgYW5hbHl6ZVBvcnRzID0gKHByZWZpeCwgdGFyZ2V0KSA9PiB7XHJcbiAgICBPYmplY3Qua2V5cyhncmFwaClcclxuICAgICAgLmZpbHRlcihrID0+IGsuc3RhcnRzV2l0aChwcmVmaXgpKVxyXG4gICAgICAuZm9yRWFjaChwb3J0ID0+IHtcclxuICAgICAgICBjb25zdCB0cmFjZSA9IHRyYWNlRnVsbFBhdGgoZ3JhcGgsIHBvcnQpO1xyXG4gICAgICAgIHRhcmdldFtwb3J0XSA9IHtcclxuICAgICAgICAgIC4uLnRyYWNlLFxyXG4gICAgICAgICAgcG9ydFR5cGU6IHBvcnQuaW5jbHVkZXMoJ2NoYW5uZWwnKSA/ICdjaGFubmVsJyA6ICdwZXJtYW5lbnQnXHJcbiAgICAgICAgfTtcclxuICAgICAgfSk7XHJcbiAgfTtcclxuXHJcbiAgYW5hbHl6ZVBvcnRzKCdtYWluLScsIHJlc3VsdC5tYWluUGF0aHMpO1xyXG4gIGFuYWx5emVQb3J0cygncmVtb3RlLScsIHJlc3VsdC5yZW1vdGVQYXRocyk7XHJcblxyXG4gIHJldHVybiByZXN1bHQ7XHJcbn1cclxuXHJcbi8vIENGUOWei+WIhuaekFxyXG5mdW5jdGlvbiBhbmFseXplQ0ZQKGdyYXBoKSB7XHJcbiAgY29uc3QgcmVzdWx0ID0geyBtYWluUGF0aHM6IHt9LCByZW1vdGVQYXRoczoge30gfTtcclxuXHJcbiAgLy8g56uv5Y+j6YWN572uXHJcbiAgY29uc3QgUE9SVF9DT05GSUcgPSB7XHJcbiAgICBtYWluOiB7XHJcbiAgICAgIG91dHB1dHM6IFsnbWFpbi1jZnAtc20tb3V0JywgJ21haW4tY2ZwLW1tLW91dCddLFxyXG4gICAgICBpbnB1dDogJ21haW4tY2ZwLWluJyxcclxuICAgICAgdmZsOidtYWluLXZmbCdcclxuICAgIH0sXHJcbiAgICByZW1vdGU6IHtcclxuICAgICAgb3V0cHV0czogWydyZW1vdGUtY2ZwLXNtLW91dCcsICdyZW1vdGUtY2ZwLW1tLW91dCddLFxyXG4gICAgICBpbnB1dDogJ3JlbW90ZS1jZnAtaW4nXHJcbiAgICB9XHJcbiAgfTtcclxuXHJcbiAgLy8g5YiG5p6Q56uv5Y+j6L+e5o6lXHJcbiAgY29uc3QgYW5hbHl6ZVBvcnQgPSAocG9ydCwgdHlwZSkgPT4ge1xyXG4gICAgaWYgKCFncmFwaFtwb3J0XSkgcmV0dXJuO1xyXG4gICAgY29uc3QgdHJhY2UgPSB0cmFjZUZ1bGxQYXRoKGdyYXBoLCBwb3J0KTtcclxuICAgIHJlc3VsdFtgJHt0eXBlfVBhdGhzYF1bcG9ydF0gPSB7XHJcbiAgICAgIC4uLnRyYWNlLFxyXG4gICAgfTtcclxuICB9O1xyXG5cclxuICAvLyDliIbmnpDmiYDmnInnq6/lj6NcclxuICBPYmplY3QudmFsdWVzKFBPUlRfQ09ORklHLm1haW4pLmZsYXQoKS5mb3JFYWNoKHAgPT4gYW5hbHl6ZVBvcnQocCwgJ21haW4nKSk7XHJcbiAgT2JqZWN0LnZhbHVlcyhQT1JUX0NPTkZJRy5yZW1vdGUpLmZsYXQoKS5mb3JFYWNoKHAgPT4gYW5hbHl6ZVBvcnQocCwgJ3JlbW90ZScpKTtcclxuXHJcbiAgcmV0dXJuIHJlc3VsdDtcclxufVxyXG5cclxuXHJcblxyXG4vLyBPRlDlnovliIbmnpBcclxuZnVuY3Rpb24gYW5hbHl6ZU9GUChncmFwaCkge1xyXG4gIGNvbnN0IHJlc3VsdCA9IHsgbWFpblBhdGhzOiB7fSB9O1xyXG5cclxuICBbJ21haW4tb2ZwLXNtLW91dCcsICdtYWluLW9mcC1tbS1vdXQnLCdtYWluLXZmbCddLmZvckVhY2gocG9ydCA9PiB7XHJcbiAgICBpZiAoZ3JhcGhbcG9ydF0pIHtcclxuICAgICAgY29uc3QgdHJhY2UgPSB0cmFjZUZ1bGxQYXRoKGdyYXBoLCBwb3J0KTtcclxuICAgICAgcmVzdWx0Lm1haW5QYXRoc1twb3J0XSA9IHtcclxuICAgICAgICAuLi50cmFjZSxcclxuICAgICAgfTtcclxuICAgIH1cclxuICB9KTtcclxuXHJcbiAgcmV0dXJuIHJlc3VsdDtcclxufVxyXG5cclxuLy8g5Yib5bu66YCa55So6L+e5o6l54q25oCB5qOA5p+lXHJcbmNvbnN0IHNldENvbm5lY3Rpb25TdGF0dXMgPSBhc3luYyAocmVzdWx0LCBtb2R1bGVUeXBlLCBjb25uZWN0aW9ucykgPT4ge1xyXG5cclxuICB0cnkge1xyXG4gICAgLy8g5LuOQVBJ6I635Y+W6L+e5o6l6YWN572uXHJcbiAgICBjb25zdCBkZXZpY2VTdG9yZSA9IHVzZURldmljZVN0b3JlLmdldFN0YXRlKCk7XHJcbiAgICBjb25zdCBmYXVsdFNjZW5hcmlvID0gZGV2aWNlU3RvcmUuZmF1bHRTY2VuYXJpb3MgfHwgJyc7XHJcbiAgICBjb25zdCBhcGlVcmwgPSBBUElfVVJMUy5DT05ORUNUSU9OLk1BUF9XSVRIX1NDRU5FKGZhdWx0U2NlbmFyaW8pO1xyXG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChhcGlVcmwpO1xyXG4gICAgaWYgKCFyZXNwb25zZS5vaykge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ+iOt+WPlui/nuaOpemFjee9ruWksei0pScpO1xyXG4gICAgfVxyXG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKTtcclxuICAgIGNvbnN0IGNvbm5lY3Rpb25NYXAgPSBkYXRhIHx8IHt9O1xyXG4gICAgY29uc3QgbWFpblBhdGhzID0gcmVzdWx0Lm1haW5QYXRocztcclxuICAgIGNvbnN0IG1haW5FbmQgPSBtYWluUGF0aHMgPyBPYmplY3QudmFsdWVzKG1haW5QYXRocylbMF0/LmVuZCB8fCBudWxsIDogbnVsbDtcclxuICAgIGNvbnN0IG1haW5TdGFydCA9IG1haW5QYXRocyA/IE9iamVjdC52YWx1ZXMobWFpblBhdGhzKVswXT8uc3RhcnQgfHwgbnVsbCA6IG51bGw7XHJcbiAgICBcclxuICAgIC8vIE9GUOaooeWdl+eJueauiuWkhOeQhlxyXG4gICAgaWYgKG1vZHVsZVR5cGUgPT09ICdvZnAnICYmIG1haW5FbmQgJiYgbWFpblBhdGhzKSB7XHJcbiAgICAgIC8vIOebtOaOpeafpeaJvm1haW5FbmTkvZzkuLrplK7nmoTmg4XlhrVcclxuICAgICAgaWYgKGNvbm5lY3Rpb25NYXBbbWFpbkVuZF0pIHtcclxuICAgICAgICByZXN1bHQuT0ZQU3RhdHVzID0gY29ubmVjdGlvbk1hcFttYWluRW5kXT8uZmliZXJzdGF0dXMgfHwgbnVsbDtcclxuICAgICAgICByZXN1bHQuT0ZQQ29ubmVjdGVkVG8gPSBjb25uZWN0aW9uTWFwW21haW5FbmRdPy5jb25uZWN0ZWRUbyB8fCBudWxsO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIC8vIOWmguaenG1haW5FbmTkuI3mmK/plK7vvIzmn6Xmib5jb25uZWN0ZWRUb+etieS6jm1haW5FbmTnmoTpoblcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBjb25uZWN0aW9uTWFwKSB7XHJcbiAgICAgICAgICBpZiAoY29ubmVjdGlvbk1hcFtrZXldPy5jb25uZWN0ZWRUbyA9PT0gbWFpbkVuZCAmJiBjb25uZWN0aW9uTWFwW2tleV0/LnR5cGUgPT09ICdmaWJlcicpIHtcclxuICAgICAgICAgICAgcmVzdWx0Lk9GUFN0YXR1cyA9IGNvbm5lY3Rpb25NYXBba2V5XT8uZmliZXJzdGF0dXMgfHwgbnVsbDtcclxuICAgICAgICAgICAgcmVzdWx0Lk9GUENvbm5lY3RlZFRvID0ga2V5O1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgXHJcbiAgICAgIC8vIOafpeaJvk9GUENvbm5lY3RlZFRv5a+55bqU55qEc291cmNl5YC8XHJcbiAgICAgIGlmIChyZXN1bHQuT0ZQQ29ubmVjdGVkVG8gJiYgY29ubmVjdGlvbnMpIHtcclxuICAgICAgICBjb25zdCBtYXRjaGluZ0Nvbm5lY3Rpb24gPSBjb25uZWN0aW9ucy5maW5kKGNvbm4gPT4gY29ubi50YXJnZXQgPT09IHJlc3VsdC5PRlBDb25uZWN0ZWRUbyk7XHJcbiAgICAgICAgcmVzdWx0Lk9GUENvbm5lY3RlZFRvUmVmU3RhdHVzID0gbWF0Y2hpbmdDb25uZWN0aW9uID8gbWF0Y2hpbmdDb25uZWN0aW9uLnNvdXJjZSA6IG51bGw7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIOafpeaJvm1haW5FbmTlr7nlupTnmoRzb3VyY2XlgLxcclxuICAgICAgaWYgKG1haW5TdGFydCAmJiBjb25uZWN0aW9ucykge1xyXG4gICAgICAgIGNvbnN0IG1haW5TdGFydENvbm5lY3Rpb24gPSBjb25uZWN0aW9ucy5maW5kKGNvbm4gPT4gY29ubi50YXJnZXQgPT09IG1haW5TdGFydCk7XHJcbiAgICAgICAgcmVzdWx0Lk9GUG91dFJlZlN0YXR1cyA9IG1haW5TdGFydENvbm5lY3Rpb24gPyBtYWluU3RhcnRDb25uZWN0aW9uLnNvdXJjZSA6IG51bGw7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIOWFtuS7luaooeWdl+eahOWkhOeQhumAu+i+kVxyXG4gICAgY29uc3QgcmVtb3RlUGF0aHMgPSByZXN1bHQucmVtb3RlUGF0aHMgfHwge307XHJcbiAgICBjb25zdCByZW1vdGVFbmQgPSBPYmplY3QudmFsdWVzKHJlbW90ZVBhdGhzKVswXT8uZW5kO1xyXG5cclxuICAgIC8vIOerr+WPo+S6kumAmuajgOafpVxyXG4gICAgaWYgKG1haW5FbmQgJiYgcmVtb3RlRW5kKSB7XHJcbiAgICAgIC8vIENGUOaooeWdl+eJueauiuWkhOeQhlxyXG4gICAgICBpZiAobW9kdWxlVHlwZSA9PT0gJ2NmcCcpIHtcclxuICAgICAgICAvLyDojrflj5blm5vkuKrnq6/ngrlcclxuICAgICAgICBjb25zdCBtYWluU21PdXRFbmQgPSBtYWluUGF0aHNbJ21haW4tY2ZwLXNtLW91dCddPy5lbmQ7XHJcbiAgICAgICAgY29uc3QgbWFpbk1tT3V0RW5kID0gbWFpblBhdGhzWydtYWluLWNmcC1tbS1vdXQnXT8uZW5kO1xyXG4gICAgICAgIGNvbnN0IG1haW5JbkVuZCA9IG1haW5QYXRoc1snbWFpbi1jZnAtaW4nXT8uZW5kO1xyXG4gICAgICAgIGNvbnN0IHJlbW90ZVNtT3V0RW5kID0gcmVtb3RlUGF0aHNbJ3JlbW90ZS1jZnAtc20tb3V0J10/LmVuZDtcclxuICAgICAgICBjb25zdCByZW1vdGVNbU91dEVuZCA9IHJlbW90ZVBhdGhzWydyZW1vdGUtY2ZwLW1tLW91dCddPy5lbmQ7XHJcbiAgICAgICAgY29uc3QgcmVtb3RlSW5FbmQgPSByZW1vdGVQYXRoc1sncmVtb3RlLWNmcC1pbiddPy5lbmQ7XHJcbiAgICAgICAgXHJcbiAgICAgICAgLy8g5qOA5p+l5Lik5a+56L+e5o6lXHJcbiAgICAgICAgY29uc3QgY2hlY2tDb25uZWN0aW9uID0gKGVuZDEsIGVuZDIpID0+IHtcclxuICAgICAgICAgIGlmICghZW5kMSB8fCAhZW5kMikgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKGNvbm5lY3Rpb25NYXApLnNvbWUoa2V5ID0+IHtcclxuICAgICAgICAgICAgY29uc3QgY29ubmVjdGlvbiA9IGNvbm5lY3Rpb25NYXBba2V5XTtcclxuICAgICAgICAgICAgcmV0dXJuIChjb25uZWN0aW9uLmNvbm5lY3RlZFRvID09PSBlbmQxICYmIGtleSA9PT0gZW5kMikgfHxcclxuICAgICAgICAgICAgICAgICAgIChjb25uZWN0aW9uLmNvbm5lY3RlZFRvID09PSBlbmQyICYmIGtleSA9PT0gZW5kMSk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9O1xyXG4gICAgICAgIFxyXG4gICAgICAgIC8vIOWIhuWIq+ajgOafpeWNleaooeWSjOWkmuaooeeahOi/nuaOpVxyXG4gICAgICAgIGNvbnN0IGlzTWFpblRvUmVtb3RlU21Db25uZWN0ZWQgPSBjaGVja0Nvbm5lY3Rpb24obWFpblNtT3V0RW5kLCByZW1vdGVJbkVuZCk7XHJcbiAgICAgICAgY29uc3QgaXNNYWluVG9SZW1vdGVNbUNvbm5lY3RlZCA9IGNoZWNrQ29ubmVjdGlvbihtYWluTW1PdXRFbmQsIHJlbW90ZUluRW5kKTtcclxuICAgICAgICBjb25zdCBpc1JlbW90ZVRvTWFpblNtQ29ubmVjdGVkID0gY2hlY2tDb25uZWN0aW9uKHJlbW90ZVNtT3V0RW5kLCBtYWluSW5FbmQpO1xyXG4gICAgICAgIGNvbnN0IGlzUmVtb3RlVG9NYWluTW1Db25uZWN0ZWQgPSBjaGVja0Nvbm5lY3Rpb24ocmVtb3RlTW1PdXRFbmQsIG1haW5JbkVuZCk7XHJcbiAgICAgICAgXHJcbiAgICAgICAgLy8g5Lu75LiA5a+56L+e5o6l5oiQ5Yqf5Y2z6K6k5Li66L+e5o6l5oiQ5YqfXHJcbiAgICAgICAgY29uc3QgaXNDb25uZWN0ZWQgPSAoaXNNYWluVG9SZW1vdGVTbUNvbm5lY3RlZCAmJiBpc1JlbW90ZVRvTWFpblNtQ29ubmVjdGVkKSB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChpc01haW5Ub1JlbW90ZU1tQ29ubmVjdGVkICYmIGlzUmVtb3RlVG9NYWluTW1Db25uZWN0ZWQpO1xyXG4gICAgICAgIFxyXG4gICAgICAgIHJlc3VsdC5DRlBDb25uZWN0U3RhdHVzID0gaXNDb25uZWN0ZWQ7XHJcbiAgICAgICAgXHJcbiAgICAgICAgLy8g5aaC5p6c6L+e5o6l5a2Y5Zyo77yM6I635Y+W6K+m57uG54q25oCB5L+h5oGvXHJcbiAgICAgICAgIGlmIChpc0Nvbm5lY3RlZCkge1xyXG4gICAgICAgICAgbGV0IGNvbm5lY3Rpb25LZXkxLCBjb25uZWN0aW9uS2V5MjtcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgaWYgKGlzTWFpblRvUmVtb3RlU21Db25uZWN0ZWQgJiYgaXNSZW1vdGVUb01haW5TbUNvbm5lY3RlZCkge1xyXG4gICAgICAgICAgICAvLyDljZXmqKHov57mjqVcclxuICAgICAgICAgICAgY29ubmVjdGlvbktleTEgPSBPYmplY3Qua2V5cyhjb25uZWN0aW9uTWFwKS5maW5kKGtleSA9PiBcclxuICAgICAgICAgICAgICAoY29ubmVjdGlvbk1hcFtrZXldLmNvbm5lY3RlZFRvID09PSBtYWluU21PdXRFbmQgJiYga2V5ID09PSByZW1vdGVJbkVuZCkgfHxcclxuICAgICAgICAgICAgICAoY29ubmVjdGlvbk1hcFtrZXldLmNvbm5lY3RlZFRvID09PSByZW1vdGVJbkVuZCAmJiBrZXkgPT09IG1haW5TbU91dEVuZClcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgY29ubmVjdGlvbktleTIgPSBPYmplY3Qua2V5cyhjb25uZWN0aW9uTWFwKS5maW5kKGtleSA9PiBcclxuICAgICAgICAgICAgICAoY29ubmVjdGlvbk1hcFtrZXldLmNvbm5lY3RlZFRvID09PSByZW1vdGVTbU91dEVuZCAmJiBrZXkgPT09IG1haW5JbkVuZCkgfHxcclxuICAgICAgICAgICAgICAoY29ubmVjdGlvbk1hcFtrZXldLmNvbm5lY3RlZFRvID09PSBtYWluSW5FbmQgJiYga2V5ID09PSByZW1vdGVTbU91dEVuZCkgIFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgLy8g5aSa5qih6L+e5o6lXHJcbiAgICAgICAgICAgIGNvbm5lY3Rpb25LZXkxID0gT2JqZWN0LmtleXMoY29ubmVjdGlvbk1hcCkuZmluZChrZXkgPT4gXHJcbiAgICAgICAgICAgICAgKGNvbm5lY3Rpb25NYXBba2V5XS5jb25uZWN0ZWRUbyA9PT0gbWFpbk1tT3V0RW5kICYmIGtleSA9PT0gcmVtb3RlSW5FbmQpIHx8XHJcbiAgICAgICAgICAgICAgKGNvbm5lY3Rpb25NYXBba2V5XS5jb25uZWN0ZWRUbyA9PT0gcmVtb3RlSW5FbmQgJiYga2V5ID09PSBtYWluTW1PdXRFbmQpXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIGNvbm5lY3Rpb25LZXkyID0gT2JqZWN0LmtleXMoY29ubmVjdGlvbk1hcCkuZmluZChrZXkgPT4gXHJcbiAgICAgICAgICAgICAgKGNvbm5lY3Rpb25NYXBba2V5XS5jb25uZWN0ZWRUbyA9PT0gcmVtb3RlTW1PdXRFbmQgJiYga2V5ID09PSBtYWluSW5FbmQpIHx8XHJcbiAgICAgICAgICAgICAgKGNvbm5lY3Rpb25NYXBba2V5XS5jb25uZWN0ZWRUbyA9PT0gbWFpbkluRW5kICYmIGtleSA9PT0gcmVtb3RlTW1PdXRFbmQpICBcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIFxyXG4gICAgICAgICAgaWYgKGNvbm5lY3Rpb25LZXkxICYmIGNvbm5lY3Rpb25LZXkyKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNvbm5lY3Rpb24xID0gY29ubmVjdGlvbk1hcFtjb25uZWN0aW9uS2V5MV07XHJcbiAgICAgICAgICAgIGNvbnN0IGNvbm5lY3Rpb24yID0gY29ubmVjdGlvbk1hcFtjb25uZWN0aW9uS2V5Ml07XHJcbiAgICAgICAgICAgIHJlc3VsdC5DRlBNYWluSW4gPSBjb25uZWN0aW9uMS5maWJlcnN0YXR1cztcclxuICAgICAgICAgICAgcmVzdWx0LkNGUE1haW5PdXQgPSBjb25uZWN0aW9uMi5maWJlcnN0YXR1cztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcmVzdWx0LkNGUE1haW5JbiA9ICd1bmtub3duJztcclxuICAgICAgICAgIHJlc3VsdC5DRlBNYWluT3V0ID0gJ3Vua25vd24nO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICAvLyDlhbbku5bmqKHlnZfnmoTlpITnkIbpgLvovpFcclxuICAgICAgICBjb25zdCBpc0Nvbm5lY3RlZCA9IE9iamVjdC5rZXlzKGNvbm5lY3Rpb25NYXApLnNvbWUoa2V5ID0+IHtcclxuICAgICAgICAgIGNvbnN0IGNvbm5lY3Rpb24gPSBjb25uZWN0aW9uTWFwW2tleV07XHJcbiAgICAgICAgICByZXR1cm4gKGNvbm5lY3Rpb24uY29ubmVjdGVkVG8gPT09IG1haW5FbmQgJiYga2V5ID09PSByZW1vdGVFbmQpIHx8XHJcbiAgICAgICAgICAgICAgICAgKGNvbm5lY3Rpb24uY29ubmVjdGVkVG8gPT09IHJlbW90ZUVuZCAmJiBrZXkgPT09IG1haW5FbmQpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIFxyXG4gICAgICAgIC8vIOiuvue9rui/nuaOpeeKtuaAgVxyXG4gICAgICAgIGNvbnN0IHN0YXR1c1ByZWZpeCA9IG1vZHVsZVR5cGUudG9VcHBlckNhc2UoKTtcclxuICAgICAgICByZXN1bHRbYCR7c3RhdHVzUHJlZml4fUNvbm5lY3RTdGF0dXNgXSA9IGlzQ29ubmVjdGVkO1xyXG4gICAgICAgIFxyXG4gICAgICAgIC8vIOWmguaenOi/nuaOpeWtmOWcqO+8jOiOt+WPluivpue7hueKtuaAgeS/oeaBr1xyXG4gICAgICAgIGlmIChpc0Nvbm5lY3RlZCkge1xyXG4gICAgICAgICAgY29uc3QgY29ubmVjdGlvbktleSA9IE9iamVjdC5rZXlzKGNvbm5lY3Rpb25NYXApLmZpbmQoa2V5ID0+IFxyXG4gICAgICAgICAgICAoY29ubmVjdGlvbk1hcFtrZXldLmNvbm5lY3RlZFRvID09PSBtYWluRW5kICYmIGtleSA9PT0gcmVtb3RlRW5kKSB8fFxyXG4gICAgICAgICAgICAoY29ubmVjdGlvbk1hcFtrZXldLmNvbm5lY3RlZFRvID09PSByZW1vdGVFbmQgJiYga2V5ID09PSBtYWluRW5kKVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgaWYgKGNvbm5lY3Rpb25LZXkpIHtcclxuICAgICAgICAgICAgY29uc3QgY29ubmVjdGlvbiA9IGNvbm5lY3Rpb25NYXBbY29ubmVjdGlvbktleV07XHJcbiAgICAgICAgICAgIHN3aXRjaChtb2R1bGVUeXBlKSB7XHJcbiAgICAgICAgICAgICAgY2FzZSAnODAwMCc6XHJcbiAgICAgICAgICAgICAgICByZXN1bHQuQ29wcGVyV2lyZW1hcFN0YXR1cyA9IGNvbm5lY3Rpb24ud2lyZW1hcHN0YXR1cztcclxuICAgICAgICAgICAgICAgIHJlc3VsdC5Db3BwZXJQZXJmb3JtYW5jZVN0YXR1cyA9IGNvbm5lY3Rpb24ucGVyZm9ybWFuY2VzdGF0dXM7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAvLyDmnKrov57mjqXml7bnmoTpu5jorqTnirbmgIFcclxuICAgICAgICAgIHN3aXRjaChtb2R1bGVUeXBlKSB7XHJcbiAgICAgICAgICAgIGNhc2UgJzgwMDAnOlxyXG4gICAgICAgICAgICAgIHJlc3VsdC5Db3BwZXJXaXJlbWFwU3RhdHVzID0gJ3Vua25vd24nO1xyXG4gICAgICAgICAgICAgIHJlc3VsdC5Db3BwZXJQZXJmb3JtYW5jZVN0YXR1cyA9ICd1bmtub3duJztcclxuICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSAnY2ZwJzpcclxuICAgICAgICAgICAgICByZXN1bHQuQ0ZQTWFpbkluID0gJ3Vua25vd24nO1xyXG4gICAgICAgICAgICAgIHJlc3VsdC5DRlBNYWluT3V0ID0gJ3Vua25vd24nO1xyXG4gICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgLy8g5peg5pWI6L+e5o6l5pe255qE6buY6K6k54q25oCBXHJcbiAgICAgIGNvbnN0IHN0YXR1c1ByZWZpeCA9IG1vZHVsZVR5cGUudG9VcHBlckNhc2UoKTtcclxuICAgICAgcmVzdWx0W2Ake3N0YXR1c1ByZWZpeH1Db25uZWN0U3RhdHVzYF0gPSBmYWxzZTtcclxuICAgICAgc3dpdGNoKG1vZHVsZVR5cGUpIHtcclxuICAgICAgICBjYXNlICc4MDAwJzpcclxuICAgICAgICAgIHJlc3VsdC5Db3BwZXJXaXJlbWFwU3RhdHVzID0gJ3Vua25vd24nO1xyXG4gICAgICAgICAgcmVzdWx0LkNvcHBlclBlcmZvcm1hbmNlU3RhdHVzID0gJ3Vua25vd24nO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAnY2ZwJzpcclxuICAgICAgICAgIHJlc3VsdC5DRlBNYWluSW4gPSAndW5rbm93bic7XHJcbiAgICAgICAgICByZXN1bHQuQ0ZQTWFpbk91dCA9ICd1bmtub3duJztcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgIGNvbnNvbGUuZXJyb3IoJ+iOt+WPlui/nuaOpemFjee9rumUmeivrzonLCBlcnJvcik7XHJcbiAgICAvLyDplJnor6/ml7bnmoTpu5jorqTnirbmgIFcclxuICAgIGNvbnN0IHN0YXR1c1ByZWZpeCA9IG1vZHVsZVR5cGUudG9VcHBlckNhc2UoKTtcclxuICAgIHJlc3VsdFtgJHtzdGF0dXNQcmVmaXh9Q29ubmVjdFN0YXR1c2BdID0gZmFsc2U7XHJcbiAgICBzd2l0Y2gobW9kdWxlVHlwZSkge1xyXG4gICAgICBjYXNlICc4MDAwJzpcclxuICAgICAgICByZXN1bHQuQ29wcGVyV2lyZW1hcFN0YXR1cyA9ICd1bmtub3duJztcclxuICAgICAgICByZXN1bHQuQ29wcGVyUGVyZm9ybWFuY2VTdGF0dXMgPSAndW5rbm93bic7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2NmcCc6XHJcbiAgICAgICAgcmVzdWx0LkNGUE1haW5JbiA9ICd1bmtub3duJztcclxuICAgICAgICByZXN1bHQuQ0ZQTWFpbk91dCA9ICd1bmtub3duJztcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnb2ZwJzpcclxuICAgICAgICByZXN1bHQuT0ZQU3RhdHVzID0gJ3Vua25vd24nO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gIH1cclxufTtcclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuLy8g57uE6KOF5pyA57uI6L6T5Ye655qE5YiG5p6Q57uT5p6cXHJcbmFzeW5jIGZ1bmN0aW9uIGFuYWx5emVBbGxDb25uZWN0aW9ucyhjb25uZWN0aW9ucykge1xyXG5cclxuXHJcbiAgY29uc3QgZGV2aWNlU3RvcmUgPSB1c2VEZXZpY2VTdG9yZS5nZXRTdGF0ZSgpO1xyXG4gIGNvbnN0IG1haW5Nb2R1bGUgPSBkZXZpY2VTdG9yZS5tYWluVW5pdE1vZHVsZXNbMF0/LmlkO1xyXG4gIGNvbnN0IHJlbW90ZU1vZHVsZSA9IGRldmljZVN0b3JlLnJlbW90ZVVuaXRNb2R1bGVzWzBdPy5pZDtcclxuXHJcbiAgLy8g5aSE55CG5rKh5pyJ6L+e5o6l55qE5oOF5Ya1XHJcbiAgaWYgKCFjb25uZWN0aW9ucyB8fCBjb25uZWN0aW9ucy5sZW5ndGggPT09IDApIHtcclxuICAgIHJldHVybiB7IG1haW5Nb2R1bGUsIHJlbW90ZU1vZHVsZSB9O1xyXG4gIH1cclxuXHJcbiAgY29uc3QgZ3JhcGggPSBidWlsZENvbm5lY3Rpb25HcmFwaChjb25uZWN0aW9ucyk7XHJcbiAgY29uc3QgcmVzdWx0ID0geyBtYWluTW9kdWxlLCByZW1vdGVNb2R1bGUgfTtcclxuXHJcbiAgaWYgKG1haW5Nb2R1bGU/LmluY2x1ZGVzKCc4MDAwJykpIHtcclxuICAgIE9iamVjdC5hc3NpZ24ocmVzdWx0LCBhbmFseXplODAwMChncmFwaCkpO1xyXG4gIH0gZWxzZSBpZiAobWFpbk1vZHVsZT8uaW5jbHVkZXMoJ2NmcCcpKSB7XHJcbiAgICBPYmplY3QuYXNzaWduKHJlc3VsdCwgYW5hbHl6ZUNGUChncmFwaCkpO1xyXG4gIH0gZWxzZSBpZiAobWFpbk1vZHVsZT8uaW5jbHVkZXMoJ29mcCcpKSB7XHJcbiAgICBPYmplY3QuYXNzaWduKHJlc3VsdCwgYW5hbHl6ZU9GUChncmFwaCkpO1xyXG4gIH0gZWxzZSB7XHJcbiAgICByZXN1bHQudW5rbm93blBhdGhzID0ge307XHJcbiAgICBPYmplY3Qua2V5cyhncmFwaCkuZm9yRWFjaChwb3J0ID0+IHtcclxuICAgICAgcmVzdWx0LnVua25vd25QYXRoc1twb3J0XSA9IHRyYWNlRnVsbFBhdGgoZ3JhcGgsIHBvcnQpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvLyDmo4Dmn6Xnq6/lj6PkupLpgJrnirbmgIHlubbmm7TmlrDnu5PmnpxcclxuICBjb25zdCBtb2R1bGVUeXBlTWFwID0ge1xyXG4gICAgJzgwMDAnOiAnODAwMCcsXHJcbiAgICAnY2ZwJzogJ2NmcCcsXHJcbiAgICAnb2ZwJzogJ29mcCdcclxuICB9O1xyXG4gIGNvbnN0IGN1cnJlbnRNb2R1bGVUeXBlID0gbW9kdWxlVHlwZU1hcFttYWluTW9kdWxlPy5zcGxpdCgnLScpWzBdXSB8fCAnODAwMCc7XHJcbiAgYXdhaXQgc2V0Q29ubmVjdGlvblN0YXR1cyhyZXN1bHQsIGN1cnJlbnRNb2R1bGVUeXBlLGNvbm5lY3Rpb25zKTtcclxuXHJcbiAgcmV0dXJuIHJlc3VsdDtcclxufVxyXG5cclxuXHJcbi8vIOWQjOatpeWIhuaekOe7k+aenOWIsGRlaXZjZVN0b3JlXHJcbmNvbnN0IENvbm5lY3Rpb25BbmFseXplciA9ICgpID0+IHtcclxuXHJcbiAgY29uc3QgY29ubmVjdGlvblBhdGhzID0gdXNlRGV2aWNlU3RvcmUoc3RhdGUgPT4gc3RhdGUuY29ubmVjdGlvblBhdGhzKTtcclxuICBjb25zdCB1cGRhdGVDb25uZWN0aW9uU3RhdHVzID0gdXNlRGV2aWNlU3RvcmUoc3RhdGUgPT4gc3RhdGUudXBkYXRlQ29ubmVjdGlvblN0YXR1cyk7XHJcblxyXG4gIHVzZUVmZmVjdCgoKSA9PiB7XHJcbiAgICAvLyDliJvlu7rkuIDkuKrlvILmraXlh73mlbDmnaXlpITnkIbliIbmnpBcclxuICAgIGNvbnN0IGFuYWx5emVDb25uZWN0aW9ucyA9IGFzeW5jICgpID0+IHtcclxuICAgICAgdHJ5IHtcclxuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBhbmFseXplQWxsQ29ubmVjdGlvbnMoY29ubmVjdGlvblBhdGhzKTtcclxuICAgICAgICB1cGRhdGVDb25uZWN0aW9uU3RhdHVzKHJlc3VsdCk7XHJcbiAgICAgICAgLy9jb25zb2xlLmxvZygn6L+e5o6l5YiG5p6Q57uT5p6cOicsIHJlc3VsdCk7XHJcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcign6L+e5o6l5YiG5p6Q6ZSZ6K+vOicsIGVycm9yKTtcclxuICAgICAgICAvLyDlj5HnlJ/plJnor6/ml7bmm7TmlrDnirbmgIHkuLrmnKrov57mjqVcclxuICAgICAgICB1cGRhdGVDb25uZWN0aW9uU3RhdHVzKHtcclxuICAgICAgICAgIG1haW5Nb2R1bGU6IG51bGwsXHJcbiAgICAgICAgICByZW1vdGVNb2R1bGU6IG51bGwsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgLy8g5omn6KGM5YiG5p6QXHJcbiAgICBhbmFseXplQ29ubmVjdGlvbnMoKTtcclxuICB9LCBbY29ubmVjdGlvblBhdGhzLCB1cGRhdGVDb25uZWN0aW9uU3RhdHVzXSk7XHJcblxyXG4gIHJldHVybiBudWxsO1xyXG59O1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgQ29ubmVjdGlvbkFuYWx5emVyO1xyXG5cclxuIl0sIm5hbWVzIjpbIlJlYWN0IiwidXNlRWZmZWN0IiwidXNlRGV2aWNlU3RvcmUiLCJ1c2VEaXNwbGF5U3RvcmUiLCJBUElfVVJMUyIsImJ1aWxkQ29ubmVjdGlvbkdyYXBoIiwiY29ubmVjdGlvbnMiLCJncmFwaCIsImZvckVhY2giLCJjb25uIiwic291cmNlIiwidGFyZ2V0IiwicHVzaCIsImZpbmRDb3VudGVycGFydCIsIm5vZGVOYW1lIiwianVtcGVyVHlwZXMiLCJwYXR0ZXJuIiwicmVwbGFjZSIsIm4iLCJpbmNsdWRlcyIsIm1hdGNoZXMiLCJtYXRjaCIsInRyYWNlRnVsbFBhdGgiLCJzdGFydFBvaW50IiwidmlzaXRlZCIsIlNldCIsInBhdGgiLCJjdXJyZW50IiwiaGFzIiwiYWRkIiwiY291bnRlcnBhcnQiLCJuZWlnaGJvcnMiLCJmaWx0ZXIiLCJlbmRQb2ludCIsImxlbmd0aCIsIml0ZW0iLCJzdGFydCIsImVuZCIsImFuYWx5emU4MDAwIiwicmVzdWx0IiwibWFpblBhdGhzIiwicmVtb3RlUGF0aHMiLCJhbmFseXplUG9ydHMiLCJwcmVmaXgiLCJPYmplY3QiLCJrZXlzIiwiayIsInN0YXJ0c1dpdGgiLCJwb3J0IiwidHJhY2UiLCJwb3J0VHlwZSIsImFuYWx5emVDRlAiLCJQT1JUX0NPTkZJRyIsIm1haW4iLCJvdXRwdXRzIiwiaW5wdXQiLCJ2ZmwiLCJyZW1vdGUiLCJhbmFseXplUG9ydCIsInR5cGUiLCJ2YWx1ZXMiLCJmbGF0IiwicCIsImFuYWx5emVPRlAiLCJzZXRDb25uZWN0aW9uU3RhdHVzIiwibW9kdWxlVHlwZSIsImRldmljZVN0b3JlIiwiZ2V0U3RhdGUiLCJmYXVsdFNjZW5hcmlvIiwiZmF1bHRTY2VuYXJpb3MiLCJhcGlVcmwiLCJDT05ORUNUSU9OIiwiTUFQX1dJVEhfU0NFTkUiLCJyZXNwb25zZSIsImZldGNoIiwib2siLCJFcnJvciIsImRhdGEiLCJqc29uIiwiY29ubmVjdGlvbk1hcCIsIm1haW5FbmQiLCJtYWluU3RhcnQiLCJPRlBTdGF0dXMiLCJmaWJlcnN0YXR1cyIsIk9GUENvbm5lY3RlZFRvIiwiY29ubmVjdGVkVG8iLCJrZXkiLCJtYXRjaGluZ0Nvbm5lY3Rpb24iLCJmaW5kIiwiT0ZQQ29ubmVjdGVkVG9SZWZTdGF0dXMiLCJtYWluU3RhcnRDb25uZWN0aW9uIiwiT0ZQb3V0UmVmU3RhdHVzIiwicmVtb3RlRW5kIiwibWFpblNtT3V0RW5kIiwibWFpbk1tT3V0RW5kIiwibWFpbkluRW5kIiwicmVtb3RlU21PdXRFbmQiLCJyZW1vdGVNbU91dEVuZCIsInJlbW90ZUluRW5kIiwiY2hlY2tDb25uZWN0aW9uIiwiZW5kMSIsImVuZDIiLCJzb21lIiwiY29ubmVjdGlvbiIsImlzTWFpblRvUmVtb3RlU21Db25uZWN0ZWQiLCJpc01haW5Ub1JlbW90ZU1tQ29ubmVjdGVkIiwiaXNSZW1vdGVUb01haW5TbUNvbm5lY3RlZCIsImlzUmVtb3RlVG9NYWluTW1Db25uZWN0ZWQiLCJpc0Nvbm5lY3RlZCIsIkNGUENvbm5lY3RTdGF0dXMiLCJjb25uZWN0aW9uS2V5MSIsImNvbm5lY3Rpb25LZXkyIiwiY29ubmVjdGlvbjEiLCJjb25uZWN0aW9uMiIsIkNGUE1haW5JbiIsIkNGUE1haW5PdXQiLCJzdGF0dXNQcmVmaXgiLCJ0b1VwcGVyQ2FzZSIsImNvbm5lY3Rpb25LZXkiLCJDb3BwZXJXaXJlbWFwU3RhdHVzIiwid2lyZW1hcHN0YXR1cyIsIkNvcHBlclBlcmZvcm1hbmNlU3RhdHVzIiwicGVyZm9ybWFuY2VzdGF0dXMiLCJlcnJvciIsImNvbnNvbGUiLCJhbmFseXplQWxsQ29ubmVjdGlvbnMiLCJtYWluTW9kdWxlIiwibWFpblVuaXRNb2R1bGVzIiwiaWQiLCJyZW1vdGVNb2R1bGUiLCJyZW1vdGVVbml0TW9kdWxlcyIsImFzc2lnbiIsInVua25vd25QYXRocyIsIm1vZHVsZVR5cGVNYXAiLCJjdXJyZW50TW9kdWxlVHlwZSIsInNwbGl0IiwiQ29ubmVjdGlvbkFuYWx5emVyIiwiY29ubmVjdGlvblBhdGhzIiwic3RhdGUiLCJ1cGRhdGVDb25uZWN0aW9uU3RhdHVzIiwiYW5hbHl6ZUNvbm5lY3Rpb25zIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(pages-dir-node)/./src/components/ConnectionAnalyzer.js\n"); /***/ }), /***/ "(pages-dir-node)/./src/components/ContextMenu.js": /*!***************************************!*\ !*** ./src/components/ContextMenu.js ***! \***************************************/ /***/ ((__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 */ ContextMenu)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"react/jsx-dev-runtime\");\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 */ \"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n\n\nfunction ContextMenu({ x, y, onClose, items }) {\n const menuRef = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)(null);\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)({\n \"ContextMenu.useEffect\": ()=>{\n const handleClickOutside = {\n \"ContextMenu.useEffect.handleClickOutside\": (event)=>{\n if (menuRef.current && !menuRef.current.contains(event.target)) {\n onClose();\n }\n }\n }[\"ContextMenu.useEffect.handleClickOutside\"];\n document.addEventListener('mousedown', handleClickOutside);\n return ({\n \"ContextMenu.useEffect\": ()=>document.removeEventListener('mousedown', handleClickOutside)\n })[\"ContextMenu.useEffect\"];\n }\n }[\"ContextMenu.useEffect\"], [\n onClose\n ]);\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n ref: menuRef,\n className: \"fixed bg-[#1E293B] border border-[#0ff]/20 rounded-lg shadow-lg py-1 z-1001\",\n style: {\n left: x,\n top: y\n },\n children: items.map((item, index)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n className: \"w-full px-4 py-2 text-left text-sm text-[#0ff] hover:bg-[#0ff]/10 hover:text-[#00ff7f]\",\n onClick: ()=>{\n item.onClick();\n onClose();\n },\n children: item.label\n }, index, false, {\n fileName: \"/opt/dev/est-dsx/src/components/ContextMenu.js\",\n lineNumber: 24,\n columnNumber: 9\n }, this))\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/ContextMenu.js\",\n lineNumber: 18,\n columnNumber: 5\n }, this);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHBhZ2VzLWRpci1ub2RlKS8uL3NyYy9jb21wb25lbnRzL0NvbnRleHRNZW51LmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUEwQztBQUUzQixTQUFTRSxZQUFZLEVBQUVDLENBQUMsRUFBRUMsQ0FBQyxFQUFFQyxPQUFPLEVBQUVDLEtBQUssRUFBRTtJQUMxRCxNQUFNQyxVQUFVTiw2Q0FBTUEsQ0FBQztJQUV2QkQsZ0RBQVNBO2lDQUFDO1lBQ1IsTUFBTVE7NERBQXFCLENBQUNDO29CQUMxQixJQUFJRixRQUFRRyxPQUFPLElBQUksQ0FBQ0gsUUFBUUcsT0FBTyxDQUFDQyxRQUFRLENBQUNGLE1BQU1HLE1BQU0sR0FBRzt3QkFDOURQO29CQUNGO2dCQUNGOztZQUVBUSxTQUFTQyxnQkFBZ0IsQ0FBQyxhQUFhTjtZQUN2Qzt5Q0FBTyxJQUFNSyxTQUFTRSxtQkFBbUIsQ0FBQyxhQUFhUDs7UUFDekQ7Z0NBQUc7UUFBQ0g7S0FBUTtJQUVaLHFCQUNFLDhEQUFDVztRQUNDQyxLQUFLVjtRQUNMVyxXQUFVO1FBQ1ZDLE9BQU87WUFBRUMsTUFBTWpCO1lBQUdrQixLQUFLakI7UUFBRTtrQkFFeEJFLE1BQU1nQixHQUFHLENBQUMsQ0FBQ0MsTUFBTUMsc0JBQ2hCLDhEQUFDQztnQkFFQ1AsV0FBVTtnQkFDVlEsU0FBUztvQkFDUEgsS0FBS0csT0FBTztvQkFDWnJCO2dCQUNGOzBCQUVDa0IsS0FBS0ksS0FBSztlQVBOSDs7Ozs7Ozs7OztBQVlmIiwic291cmNlcyI6WyIvb3B0L2Rldi9lc3QtZHN4L3NyYy9jb21wb25lbnRzL0NvbnRleHRNZW51LmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZUVmZmVjdCwgdXNlUmVmIH0gZnJvbSAncmVhY3QnO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gQ29udGV4dE1lbnUoeyB4LCB5LCBvbkNsb3NlLCBpdGVtcyB9KSB7XHJcbiAgY29uc3QgbWVudVJlZiA9IHVzZVJlZihudWxsKTtcclxuXHJcbiAgdXNlRWZmZWN0KCgpID0+IHtcclxuICAgIGNvbnN0IGhhbmRsZUNsaWNrT3V0c2lkZSA9IChldmVudCkgPT4ge1xyXG4gICAgICBpZiAobWVudVJlZi5jdXJyZW50ICYmICFtZW51UmVmLmN1cnJlbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSkge1xyXG4gICAgICAgIG9uQ2xvc2UoKTtcclxuICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCBoYW5kbGVDbGlja091dHNpZGUpO1xyXG4gICAgcmV0dXJuICgpID0+IGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIGhhbmRsZUNsaWNrT3V0c2lkZSk7XHJcbiAgfSwgW29uQ2xvc2VdKTtcclxuXHJcbiAgcmV0dXJuIChcclxuICAgIDxkaXZcclxuICAgICAgcmVmPXttZW51UmVmfVxyXG4gICAgICBjbGFzc05hbWU9XCJmaXhlZCBiZy1bIzFFMjkzQl0gYm9yZGVyIGJvcmRlci1bIzBmZl0vMjAgcm91bmRlZC1sZyBzaGFkb3ctbGcgcHktMSB6LTEwMDFcIlxyXG4gICAgICBzdHlsZT17eyBsZWZ0OiB4LCB0b3A6IHkgfX1cclxuICAgID5cclxuICAgICAge2l0ZW1zLm1hcCgoaXRlbSwgaW5kZXgpID0+IChcclxuICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICBrZXk9e2luZGV4fVxyXG4gICAgICAgICAgY2xhc3NOYW1lPVwidy1mdWxsIHB4LTQgcHktMiB0ZXh0LWxlZnQgdGV4dC1zbSB0ZXh0LVsjMGZmXSBob3ZlcjpiZy1bIzBmZl0vMTAgaG92ZXI6dGV4dC1bIzAwZmY3Zl1cIlxyXG4gICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICBpdGVtLm9uQ2xpY2soKTtcclxuICAgICAgICAgICAgb25DbG9zZSgpO1xyXG4gICAgICAgICAgfX1cclxuICAgICAgICA+XHJcbiAgICAgICAgICB7aXRlbS5sYWJlbH1cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgKSl9XHJcbiAgICA8L2Rpdj5cclxuICApO1xyXG59ICJdLCJuYW1lcyI6WyJ1c2VFZmZlY3QiLCJ1c2VSZWYiLCJDb250ZXh0TWVudSIsIngiLCJ5Iiwib25DbG9zZSIsIml0ZW1zIiwibWVudVJlZiIsImhhbmRsZUNsaWNrT3V0c2lkZSIsImV2ZW50IiwiY3VycmVudCIsImNvbnRhaW5zIiwidGFyZ2V0IiwiZG9jdW1lbnQiLCJhZGRFdmVudExpc3RlbmVyIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsImRpdiIsInJlZiIsImNsYXNzTmFtZSIsInN0eWxlIiwibGVmdCIsInRvcCIsIm1hcCIsIml0ZW0iLCJpbmRleCIsImJ1dHRvbiIsIm9uQ2xpY2siLCJsYWJlbCJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(pages-dir-node)/./src/components/ContextMenu.js\n"); /***/ }), /***/ "(pages-dir-node)/./src/components/Cursors.js": /*!***********************************!*\ !*** ./src/components/Cursors.js ***! \***********************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; eval("__webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ Cursors)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"react/jsx-dev-runtime\");\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 */ \"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _store_deviceStore__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/store/deviceStore */ \"(pages-dir-node)/./src/store/deviceStore.js\");\n/* harmony import */ var _store_displayStore__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/store/displayStore */ \"(pages-dir-node)/./src/store/displayStore.js\");\n/* harmony import */ var zustand_shallow__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! zustand/shallow */ \"zustand/shallow\");\n/* harmony import */ var _components_lib_StatusToast__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/components/lib/StatusToast */ \"(pages-dir-node)/./src/components/lib/StatusToast.js\");\n/* harmony import */ var _config_api__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @/config/api */ \"(pages-dir-node)/./src/config/api.js\");\n/* harmony import */ var _utils_asset__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @/utils/asset */ \"(pages-dir-node)/./src/utils/asset.js\");\nvar __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_store_deviceStore__WEBPACK_IMPORTED_MODULE_2__, _store_displayStore__WEBPACK_IMPORTED_MODULE_3__, zustand_shallow__WEBPACK_IMPORTED_MODULE_4__, _utils_asset__WEBPACK_IMPORTED_MODULE_7__]);\n([_store_deviceStore__WEBPACK_IMPORTED_MODULE_2__, _store_displayStore__WEBPACK_IMPORTED_MODULE_3__, zustand_shallow__WEBPACK_IMPORTED_MODULE_4__, _utils_asset__WEBPACK_IMPORTED_MODULE_7__] = __webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__);\n\n\n\n\n\n\n\n\nconst ToneSound = typeof Audio !== 'undefined' ? new Audio((0,_utils_asset__WEBPACK_IMPORTED_MODULE_7__.getAssetUrl)('/sounds/tone.mp3')) : null;\nconst CleanSound = typeof Audio !== 'undefined' ? new Audio((0,_utils_asset__WEBPACK_IMPORTED_MODULE_7__.getAssetUrl)('/sounds/clean.mp3')) : null;\nfunction Cursors() {\n const { selectedTool, connectionStatus, setTotalToastMessage } = (0,_store_deviceStore__WEBPACK_IMPORTED_MODULE_2__[\"default\"])();\n const [connectionMap, setConnectionMap] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)({});\n const navigation = (0,_store_displayStore__WEBPACK_IMPORTED_MODULE_3__[\"default\"])({\n \"Cursors.useDisplayStore[navigation]\": (state)=>state.navigation\n }[\"Cursors.useDisplayStore[navigation]\"], zustand_shallow__WEBPACK_IMPORTED_MODULE_4__.shallow);\n const connectionMapRef = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)(null); // 添加ref用于缓存connectionMap\n const [showOverlay, setShowOverlay] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false); // 添加遮罩层状态\n const [cleanStatus, setCleanStatus] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null); // 添加清洁状态\n const [toneStatus, setToneStatus] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null); // 添加寻线音频状态\n const mainModule = _store_deviceStore__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getState().mainUnitModules[0]?.id;\n const seatUUID = (0,_store_deviceStore__WEBPACK_IMPORTED_MODULE_2__[\"default\"])({\n \"Cursors.useDeviceStore[seatUUID]\": (state)=>state.seatUUID\n }[\"Cursors.useDeviceStore[seatUUID]\"]);\n // 从localStorage加载清洁状态\n const loadCleanState = ()=>{\n if (!seatUUID) return;\n // 使用setTimeout确保DOM元素已加载\n setTimeout(()=>{\n const lccleanStates = JSON.parse(localStorage.getItem(`cleanState_${seatUUID}_lc`) || '{}');\n const mpoCleanStates = JSON.parse(localStorage.getItem(`cleanState_${seatUUID}_mpo`) || '{}');\n // 恢复LC端口状态\n const lcElements = document.querySelectorAll('[lcclean]');\n lcElements.forEach((el)=>{\n const elementId = el.id || el.getAttribute('data-id');\n if (elementId && lccleanStates[elementId] !== undefined) {\n el.setAttribute('lcclean', lccleanStates[elementId].toString());\n }\n });\n // 恢复MPO端口状态\n const mpoElements = document.querySelectorAll('[mpoClean]');\n mpoElements.forEach((el)=>{\n const elementId = el.id || el.getAttribute('data-id');\n if (elementId && mpoCleanStates[elementId] !== undefined) {\n el.setAttribute('mpoClean', mpoCleanStates[elementId].toString());\n }\n });\n }, 500);\n };\n // 保存清洁状态到localStorage\n const saveCleanState = ()=>{\n if (!seatUUID) return;\n // 保存LC端口状态\n const lcElements = document.querySelectorAll('[lcclean]');\n const lccleanStates = {};\n lcElements.forEach((el)=>{\n const elementId = el.id || el.getAttribute('data-id');\n if (elementId) {\n lccleanStates[elementId] = el.getAttribute('lcclean') === 'true';\n }\n });\n localStorage.setItem(`cleanState_${seatUUID}_lc`, JSON.stringify(lccleanStates));\n // 保存MPO端口状态\n const mpoElements = document.querySelectorAll('[mpoClean]');\n const mpoCleanStates = {};\n mpoElements.forEach((el)=>{\n const elementId = el.id || el.getAttribute('data-id');\n if (elementId) {\n mpoCleanStates[elementId] = el.getAttribute('mpoClean') === 'true';\n }\n });\n localStorage.setItem(`cleanState_${seatUUID}_mpo`, JSON.stringify(mpoCleanStates));\n };\n // 清理非本场seatUUID的清洁状态缓存\n const clearOtherCleanState = ()=>{\n if (!seatUUID) return;\n // 清理所有非本场seatUUID的cleanState_前缀的缓存项\n Object.keys(localStorage).forEach((key)=>{\n if (key.startsWith('cleanState_') && !key.startsWith(`cleanState_${seatUUID}`)) {\n localStorage.removeItem(key);\n }\n });\n };\n // 监听seatUUID变化\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)({\n \"Cursors.useEffect\": ()=>{\n if (seatUUID) {\n loadCleanState();\n // 加载完成后清理其他场次的缓存\n setTimeout({\n \"Cursors.useEffect\": ()=>{\n clearOtherCleanState();\n }\n }[\"Cursors.useEffect\"], 1000);\n }\n }\n }[\"Cursors.useEffect\"], [\n seatUUID\n ]);\n // 获取连接配置\n const fetchConnectionMap = async ()=>{\n try {\n // 如果已经有缓存的connectionMap,直接返回\n if (connectionMapRef.current) {\n setConnectionMap(connectionMapRef.current);\n return;\n }\n const deviceStore = _store_deviceStore__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getState();\n const faultScenario = deviceStore.faultScenarios || '';\n const apiUrl = _config_api__WEBPACK_IMPORTED_MODULE_6__.API_URLS.CONNECTION.MAP_WITH_SCENE(faultScenario);\n const response = await fetch(apiUrl);\n if (!response.ok) {\n throw new Error('获取连接配置失败');\n }\n const data = await response.json();\n connectionMapRef.current = data || {}; // 缓存connectionMap\n setConnectionMap(data || {});\n } catch (error) {\n console.error('获取连接配置错误:', error);\n setConnectionMap({});\n }\n };\n // 处理鼠标按下事件(用于lc-clean工具)\n const handleMouseDown = ()=>{\n if (selectedTool?.id === 'lc-clean') {\n document.body.style.cursor = `url(${(0,_utils_asset__WEBPACK_IMPORTED_MODULE_7__.getAssetUrl)('/custom-clean2.png')}), auto`;\n CleanSound?.play().catch(console.error);\n } else if (selectedTool?.id === 'mpo-clean') {\n document.body.style.cursor = `url(${(0,_utils_asset__WEBPACK_IMPORTED_MODULE_7__.getAssetUrl)('/custom-clean-mpo2.png')}), auto`;\n CleanSound?.play().catch(console.error);\n }\n };\n // 处理鼠标释放事件(用于lc-clean工具)\n const handleMouseUp = (event)=>{\n if (selectedTool?.id === 'lc-clean') {\n document.body.style.cursor = `url(${(0,_utils_asset__WEBPACK_IMPORTED_MODULE_7__.getAssetUrl)('/custom-clean.png')}), auto`;\n const x = event.clientX;\n const y = event.clientY;\n const elements = document.elementsFromPoint(x, y);\n let cleanableElement = null;\n elements.forEach((element)=>{\n if (element.hasAttribute('lcclean')) {\n cleanableElement = element;\n }\n });\n if (cleanableElement) {\n let hasConnectedEndpoint = false;\n elements.forEach((element)=>{\n if (element.classList.contains('jtk-connected')) {\n hasConnectedEndpoint = true;\n setTotalToastMessage('该端口已连接,请断开连接进行清洁');\n }\n });\n if (!hasConnectedEndpoint) {\n cleanableElement.setAttribute('lcclean', 'true');\n setCleanStatus('已清洁');\n saveCleanState(); // 保存状态\n } else {\n setCleanStatus(null);\n }\n } else {\n setCleanStatus(null);\n }\n } else if (selectedTool?.id === 'mpo-clean') {\n document.body.style.cursor = `url(${(0,_utils_asset__WEBPACK_IMPORTED_MODULE_7__.getAssetUrl)('/custom-clean-mpo.png')}), auto`;\n const x = event.clientX;\n const y = event.clientY;\n const elements = document.elementsFromPoint(x, y);\n let foundCleanElement = false;\n elements.forEach((element)=>{\n if (element.hasAttribute('mpoClean')) {\n element.setAttribute('mpoClean', 'true');\n setCleanStatus('已清洁');\n foundCleanElement = true;\n saveCleanState(); // 保存状态\n }\n });\n if (!foundCleanElement) {\n setCleanStatus(null);\n }\n }\n };\n // 这些函数已合并到 handleMouseDown 和 handleMouseUp 中\n // 处理鼠标移动事件(用于lc-clean工具)\n const handleCleanMouseMove = (event)=>{\n if (selectedTool?.id === 'lc-clean') {\n const x = event.clientX;\n const y = event.clientY;\n const elements = document.elementsFromPoint(x, y);\n let foundCleanElement = false;\n let currentStatus = null;\n elements.forEach((element)=>{\n if (element.hasAttribute('lcclean')) {\n foundCleanElement = true;\n const isClean = element.getAttribute('lcclean') === 'true';\n currentStatus = isClean ? '已清洁' : '未清洁';\n }\n });\n if (foundCleanElement) {\n setCleanStatus(currentStatus);\n } else {\n setCleanStatus(null);\n }\n }\n };\n // 处理鼠标移动事件(用于MPO-clean工具)\n const handleMPOCleanMouseMove = (event)=>{\n if (selectedTool?.id === 'mpo-clean') {\n const x = event.clientX;\n const y = event.clientY;\n const elements = document.elementsFromPoint(x, y);\n let foundCleanElement = false;\n let currentStatus = null;\n elements.forEach((element)=>{\n if (element.hasAttribute('mpoClean')) {\n foundCleanElement = true;\n const isClean = element.getAttribute('mpoClean') === 'true';\n currentStatus = isClean ? '已清洁' : '未清洁';\n }\n });\n if (foundCleanElement) {\n setCleanStatus(currentStatus);\n } else {\n setCleanStatus(null);\n }\n }\n };\n // 根据selectedTool更新鼠标样式和事件监听\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)({\n \"Cursors.useEffect\": ()=>{\n // 移除现有的事件监听器\n document.removeEventListener('mousemove', handleMouseMove);\n document.removeEventListener('mousedown', handleMouseDown);\n document.removeEventListener('mouseup', handleMouseUp);\n document.removeEventListener('mousemove', handleCleanMouseMove);\n // 根据工具类型设置鼠标样式\n if (!selectedTool) {\n document.body.style.cursor = 'default';\n fetchConnectionMap();\n setShowOverlay(false);\n setCleanStatus(null);\n } else if (selectedTool.id === 'ILT200') {\n document.body.style.cursor = `url(${(0,_utils_asset__WEBPACK_IMPORTED_MODULE_7__.getAssetUrl)('/cursor-ILT.png')}), auto`;\n setShowOverlay(true);\n setCleanStatus(null);\n // 只在tone视图下获取连接配置和添加事件监听\n if (mainModule === '8000' && navigation.current.view === 'tone') {\n document.addEventListener('mousemove', handleMouseMove);\n }\n } else if (selectedTool.id === 'lc-clean') {\n document.body.style.cursor = `url(${(0,_utils_asset__WEBPACK_IMPORTED_MODULE_7__.getAssetUrl)('/custom-clean.png')}), auto`;\n setShowOverlay(true);\n document.addEventListener('mousedown', handleMouseDown);\n document.addEventListener('mouseup', handleMouseUp);\n document.addEventListener('mousemove', handleCleanMouseMove);\n } else if (selectedTool.id === 'mpo-clean') {\n document.body.style.cursor = `url(${(0,_utils_asset__WEBPACK_IMPORTED_MODULE_7__.getAssetUrl)('/custom-clean-mpo.png')}), auto`;\n setShowOverlay(true);\n document.addEventListener('mousedown', handleMouseDown);\n document.addEventListener('mouseup', handleMouseUp);\n document.addEventListener('mousemove', handleMPOCleanMouseMove);\n }\n return ({\n \"Cursors.useEffect\": ()=>{\n document.removeEventListener('mousemove', handleMouseMove);\n document.removeEventListener('mousedown', handleMouseDown);\n document.removeEventListener('mouseup', handleMouseUp);\n document.removeEventListener('mousemove', handleCleanMouseMove);\n document.removeEventListener('mousemove', handleMPOCleanMouseMove);\n }\n })[\"Cursors.useEffect\"];\n }\n }[\"Cursors.useEffect\"], [\n selectedTool,\n navigation.current.view\n ]);\n // 检查端口互通\n const checkPortConnection = (elementId)=>{\n if (!connectionStatus?.mainPaths) return false;\n // 获取最新的mainPathKey\n const mainPathKey = Object.keys(connectionStatus.mainPaths)[0];\n if (!mainPathKey) return false;\n const mainEnd = connectionStatus.mainPaths[mainPathKey].end;\n if (!mainEnd) return false;\n // 使用最新的connectionMap进行判断\n return Object.keys(connectionMap).some((key)=>{\n const connection = connectionMap[key];\n const isConnected = connection.connectedTo === mainEnd && key === elementId || connection.connectedTo === elementId && key === mainEnd;\n return isConnected;\n });\n };\n // 监听faultScenario变化并重新获取connectionMap\n const faultScenario = (0,_store_deviceStore__WEBPACK_IMPORTED_MODULE_2__[\"default\"])({\n \"Cursors.useDeviceStore[faultScenario]\": (state)=>state.faultScenarios\n }[\"Cursors.useDeviceStore[faultScenario]\"]);\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)({\n \"Cursors.useEffect\": ()=>{\n connectionMapRef.current = null; // 清除缓存\n fetchConnectionMap();\n }\n }[\"Cursors.useEffect\"], [\n faultScenario\n ]); // 添加对faultScenario的依赖\n // 处理鼠标移动事件\n const handleMouseMove = (event)=>{\n const x = event.clientX;\n const y = event.clientY;\n const elements = document.elementsFromPoint(x, y);\n elements.forEach((element)=>{\n if (element.getAttribute('jstype') && element.id) {\n const isConnected = checkPortConnection(element.id);\n if (isConnected) {\n ToneSound?.play().catch(console.error);\n setToneStatus('🔊');\n // 1200ms 后清除状态\n setTimeout(()=>{\n setToneStatus(null);\n }, 1200);\n console.log(isConnected);\n }\n }\n });\n };\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n children: [\n showOverlay && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n style: {\n position: 'fixed',\n top: 0,\n left: 0,\n width: '100%',\n height: '100%',\n background: 'transparent',\n zIndex: 2000,\n pointerEvents: 'auto'\n }\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/Cursors.js\",\n lineNumber: 351,\n columnNumber: 17\n }, this),\n (selectedTool?.id === 'lc-clean' || selectedTool?.id === 'mpo-clean') && cleanStatus && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_StatusToast__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n status: cleanStatus\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/Cursors.js\",\n lineNumber: 366,\n columnNumber: 17\n }, this),\n selectedTool?.id === 'ILT200' && toneStatus && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_StatusToast__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n status: toneStatus\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/Cursors.js\",\n lineNumber: 369,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true);\n}\n\n__webpack_async_result__();\n} catch(e) { __webpack_async_result__(e); } });//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHBhZ2VzLWRpci1ub2RlKS8uL3NyYy9jb21wb25lbnRzL0N1cnNvcnMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQW9EO0FBQ0g7QUFDRTtBQUNUO0FBQ2E7QUFDZjtBQUNJO0FBRTVDLE1BQU1TLFlBQVksT0FBT0MsVUFBVSxjQUFjLElBQUlBLE1BQU1GLHlEQUFXQSxDQUFDLHVCQUF1QjtBQUM5RixNQUFNRyxhQUFhLE9BQU9ELFVBQVUsY0FBYyxJQUFJQSxNQUFNRix5REFBV0EsQ0FBQyx3QkFBd0I7QUFFakYsU0FBU0k7SUFDcEIsTUFBTSxFQUFFQyxZQUFZLEVBQUVDLGdCQUFnQixFQUFFQyxvQkFBb0IsRUFBRSxHQUFHWiw4REFBY0E7SUFDL0UsTUFBTSxDQUFDYSxlQUFlQyxpQkFBaUIsR0FBR2pCLCtDQUFRQSxDQUFDLENBQUM7SUFDcEQsTUFBTWtCLGFBQWFkLCtEQUFlQTsrQ0FBQ2UsQ0FBQUEsUUFBU0EsTUFBTUQsVUFBVTs4Q0FBRWIsb0RBQU9BO0lBQ3JFLE1BQU1lLG1CQUFtQmxCLDZDQUFNQSxDQUFDLE9BQVEseUJBQXlCO0lBQ2pFLE1BQU0sQ0FBQ21CLGFBQWFDLGVBQWUsR0FBR3RCLCtDQUFRQSxDQUFDLFFBQVMsVUFBVTtJQUNsRSxNQUFNLENBQUN1QixhQUFhQyxlQUFlLEdBQUd4QiwrQ0FBUUEsQ0FBQyxPQUFRLFNBQVM7SUFDaEUsTUFBTSxDQUFDeUIsWUFBWUMsY0FBYyxHQUFHMUIsK0NBQVFBLENBQUMsT0FBUSxXQUFXO0lBQ2hFLE1BQU0yQixhQUFheEIsbUVBQXVCLEdBQUcwQixlQUFlLENBQUMsRUFBRSxFQUFFQztJQUNqRSxNQUFNQyxXQUFXNUIsOERBQWNBOzRDQUFDZ0IsQ0FBQUEsUUFBU0EsTUFBTVksUUFBUTs7SUFFdkQsc0JBQXNCO0lBQ3RCLE1BQU1DLGlCQUFpQjtRQUNuQixJQUFJLENBQUNELFVBQVU7UUFFZix5QkFBeUI7UUFDekJFLFdBQVc7WUFDUCxNQUFNQyxnQkFBZ0JDLEtBQUtDLEtB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QUFjakIsY0FBY2lCLE9BQU8sV0FBVSxLQUFNUCw2QkFDdEUsOERBQUNqQixtRUFBV0E7Z0JBQUNzSCxRQUFRckc7Ozs7OztZQUV4QlYsY0FBY2lCLE9BQU8sWUFBWUwsNEJBQzlCLDhEQUFDbkIsbUVBQVdBO2dCQUFDc0gsUUFBUW5HOzs7Ozs7OztBQUlyQyIsInNvdXJjZXMiOlsiL29wdC9kZXYvZXN0LWRzeC9zcmMvY29tcG9uZW50cy9DdXJzb3JzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZVN0YXRlLCB1c2VFZmZlY3QsIHVzZVJlZiB9IGZyb20gJ3JlYWN0JztcclxuaW1wb3J0IHVzZURldmljZVN0b3JlIGZyb20gJ0Avc3RvcmUvZGV2aWNlU3RvcmUnO1xyXG5pbXBvcnQgdXNlRGlzcGxheVN0b3JlIGZyb20gJ0Avc3RvcmUvZGlzcGxheVN0b3JlJztcclxuaW1wb3J0IHsgc2hhbGxvdyB9IGZyb20gJ3p1c3RhbmQvc2hhbGxvdyc7XHJcbmltcG9ydCBTdGF0dXNUb2FzdCBmcm9tICdAL2NvbXBvbmVudHMvbGliL1N0YXR1c1RvYXN0JztcclxuaW1wb3J0IHsgQVBJX1VSTFMgfSBmcm9tICdAL2NvbmZpZy9hcGknO1xyXG5pbXBvcnQgeyBnZXRBc3NldFVybCB9IGZyb20gJ0AvdXRpbHMvYXNzZXQnO1xyXG5cclxuY29uc3QgVG9uZVNvdW5kID0gdHlwZW9mIEF1ZGlvICE9PSAndW5kZWZpbmVkJyA/IG5ldyBBdWRpbyhnZXRBc3NldFVybCgnL3NvdW5kcy90b25lLm1wMycpKSA6IG51bGw7XHJcbmNvbnN0IENsZWFuU291bmQgPSB0eXBlb2YgQXVkaW8gIT09ICd1bmRlZmluZWQnID8gbmV3IEF1ZGlvKGdldEFzc2V0VXJsKCcvc291bmRzL2NsZWFuLm1wMycpKSA6IG51bGw7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBDdXJzb3JzKCkge1xyXG4gICAgY29uc3QgeyBzZWxlY3RlZFRvb2wsIGNvbm5lY3Rpb25TdGF0dXMsIHNldFRvdGFsVG9hc3RNZXNzYWdlIH0gPSB1c2VEZXZpY2VTdG9yZSgpO1xyXG4gICAgY29uc3QgW2Nvbm5lY3Rpb25NYXAsIHNldENvbm5lY3Rpb25NYXBdID0gdXNlU3RhdGUoe30pO1xyXG4gICAgY29uc3QgbmF2aWdhdGlvbiA9IHVzZURpc3BsYXlTdG9yZShzdGF0ZSA9PiBzdGF0ZS5uYXZpZ2F0aW9uLCBzaGFsbG93KTtcclxuICAgIGNvbnN0IGNvbm5lY3Rpb25NYXBSZWYgPSB1c2VSZWYobnVsbCk7ICAvLyDmt7vliqByZWbnlKjkuo7nvJPlrZhjb25uZWN0aW9uTWFwXHJcbiAgICBjb25zdCBbc2hvd092ZXJsYXksIHNldFNob3dPdmVybGF5XSA9IHVzZVN0YXRlKGZhbHNlKTsgIC8vIOa3u+WKoOmBrue9qeWxgueKtuaAgVxyXG4gICAgY29uc3QgW2NsZWFuU3RhdHVzLCBzZXRDbGVhblN0YXR1c10gPSB1c2VTdGF0ZShudWxsKTsgIC8vIOa3u+WKoOa4hea0geeKtuaAgVxyXG4gICAgY29uc3QgW3RvbmVTdGF0dXMsIHNldFRvbmVTdGF0dXNdID0gdXNlU3RhdGUobnVsbCk7ICAvLyDmt7vliqDlr7vnur/pn7PpopHnirbmgIFcclxuICAgIGNvbnN0IG1haW5Nb2R1bGUgPSB1c2VEZXZpY2VTdG9yZS5nZXRTdGF0ZSgpLm1haW5Vbml0TW9kdWxlc1swXT8uaWQ7XHJcbiAgICBjb25zdCBzZWF0VVVJRCA9IHVzZURldmljZVN0b3JlKHN0YXRlID0+IHN0YXRlLnNlYXRVVUlEKTtcclxuXHJcbiAgICAvLyDku45sb2NhbFN0b3JhZ2XliqDovb3muIXmtIHnirbmgIFcclxuICAgIGNvbnN0IGxvYWRDbGVhblN0YXRlID0gKCkgPT4ge1xyXG4gICAgICAgIGlmICghc2VhdFVVSUQpIHJldHVybjtcclxuICAgICAgICBcclxuICAgICAgICAvLyDkvb/nlKhzZXRUaW1lb3V056Gu5L+dRE9N5YWD57Sg5bey5Yqg6L29XHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGxjY2xlYW5TdGF0ZXMgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKGBjbGVhblN0YXRlXyR7c2VhdFVVSUR9X2xjYCkgfHwgJ3t9Jyk7XHJcbiAgICAgICAgICAgIGNvbnN0IG1wb0NsZWFuU3RhdGVzID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShgY2xlYW5TdGF0ZV8ke3NlYXRVVUlEfV9tcG9gKSB8fCAne30nKTtcclxuXHJcbiAgICAgICAgICAgIC8vIOaBouWkjUxD56uv5Y+j54q25oCBXHJcbiAgICAgICAgICAgIGNvbnN0IGxjRWxlbWVudHMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdbbGNjbGVhbl0nKTtcclxuICAgICAgICAgICAgbGNFbGVtZW50cy5mb3JFYWNoKGVsID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRJZCA9IGVsLmlkIHx8IGVsLmdldEF0dHJpYnV0ZSgnZGF0YS1pZCcpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGVsZW1lbnRJZCAmJiBsY2NsZWFuU3RhdGVzW2VsZW1lbnRJZF0gIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGVsLnNldEF0dHJpYnV0ZSgnbGNjbGVhbicsIGxjY2xlYW5TdGF0ZXNbZWxlbWVudElkXS50b1N0cmluZygpKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICAvLyDmgaLlpI1NUE/nq6/lj6PnirbmgIFcclxuICAgICAgICAgICAgY29uc3QgbXBvRWxlbWVudHMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdbbXBvQ2xlYW5dJyk7XHJcbiAgICAgICAgICAgIG1wb0VsZW1lbnRzLmZvckVhY2goZWwgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZWxlbWVudElkID0gZWwuaWQgfHwgZWwuZ2V0QXR0cmlidXRlKCdkYXRhLWlkJyk7XHJcbiAgICAgICAgICAgICAgICBpZiAoZWxlbWVudElkICYmIG1wb0NsZWFuU3RhdGVzW2VsZW1lbnRJZF0gIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGVsLnNldEF0dHJpYnV0ZSgnbXBvQ2xlYW4nLCBtcG9DbGVhblN0YXRlc1tlbGVtZW50SWRdLnRvU3RyaW5nKCkpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9LCA1MDApO1xyXG4gICAgfTtcclxuXHJcbiAgICAvLyDkv53lrZjmuIXmtIHnirbmgIHliLBsb2NhbFN0b3JhZ2VcclxuICAgIGNvbnN0IHNhdmVDbGVhblN0YXRlID0gKCkgPT4ge1xyXG4gICAgICAgIGlmICghc2VhdFVVSUQpIHJldHVybjtcclxuXHJcbiAgICAgICAgLy8g5L+d5a2YTEPnq6/lj6PnirbmgIFcclxuICAgICAgICBjb25zdCBsY0VsZW1lbnRzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnW2xjY2xlYW5dJyk7XHJcbiAgICAgICAgY29uc3QgbGNjbGVhblN0YXRlcyA9IHt9O1xyXG4gICAgICAgIGxjRWxlbWVudHMuZm9yRWFjaChlbCA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRJZCA9IGVsLmlkIHx8IGVsLmdldEF0dHJpYnV0ZSgnZGF0YS1pZCcpO1xyXG4gICAgICAgICAgICBpZiAoZWxlbWVudElkKSB7XHJcbiAgICAgICAgICAgICAgICBsY2NsZWFuU3RhdGVzW2VsZW1lbnRJZF0gPSBlbC5nZXRBdHRyaWJ1dGUoJ2xjY2xlYW4nKSA9PT0gJ3RydWUnO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oYGNsZWFuU3RhdGVfJHtzZWF0VVVJRH1fbGNgLCBKU09OLnN0cmluZ2lmeShsY2NsZWFuU3RhdGVzKSk7XHJcblxyXG4gICAgICAgIC8vIOS/neWtmE1QT+err+WPo+eKtuaAgVxyXG4gICAgICAgIGNvbnN0IG1wb0VsZW1lbnRzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnW21wb0NsZWFuXScpO1xyXG4gICAgICAgIGNvbnN0IG1wb0NsZWFuU3RhdGVzID0ge307XHJcbiAgICAgICAgbXBvRWxlbWVudHMuZm9yRWFjaChlbCA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRJZCA9IGVsLmlkIHx8IGVsLmdldEF0dHJpYnV0ZSgnZGF0YS1pZCcpO1xyXG4gICAgICAgICAgICBpZiAoZWxlbWVudElkKSB7XHJcbiAgICAgICAgICAgICAgICBtcG9DbGVhblN0YXRlc1tlbGVtZW50SWRdID0gZWwuZ2V0QXR0cmlidXRlKCdtcG9DbGVhbicpID09PSAndHJ1ZSc7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShgY2xlYW5TdGF0ZV8ke3NlYXRVVUlEfV9tcG9gLCBKU09OLnN0cmluZ2lmeShtcG9DbGVhblN0YXRlcykpO1xyXG4gICAgfTtcclxuXHJcbiAgICAvLyDmuIXnkIbpnZ7mnKzlnLpzZWF0VVVJROeahOa4hea0geeKtuaAgee8k+WtmFxyXG4gICAgY29uc3QgY2xlYXJPdGhlckNsZWFuU3RhdGUgPSAoKSA9PiB7XHJcbiAgICAgICAgaWYgKCFzZWF0VVVJRCkgcmV0dXJuO1xyXG4gICAgICAgIFxyXG4gICAgICAgIC8vIOa4heeQhuaJgOaciemdnuacrOWcunNlYXRVVUlE55qEY2xlYW5TdGF0ZV/liY3nvIDnmoTnvJPlrZjpoblcclxuICAgICAgICBPYmplY3Qua2V5cyhsb2NhbFN0b3JhZ2UpLmZvckVhY2goa2V5ID0+IHtcclxuICAgICAgICAgICAgaWYgKGtleS5zdGFydHNXaXRoKCdjbGVhblN0YXRlXycpICYmICFrZXkuc3RhcnRzV2l0aChgY2xlYW5TdGF0ZV8ke3NlYXRVVUlEfWApKSB7XHJcbiAgICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShrZXkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9O1xyXG5cclxuICAgIC8vIOebkeWQrHNlYXRVVUlE5Y+Y5YyWXHJcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xyXG4gICAgICAgIGlmIChzZWF0VVVJRCkge1xyXG4gICAgICAgICAgICBsb2FkQ2xlYW5TdGF0ZSgpO1xyXG4gICAgICAgICAgICAvLyDliqDovb3lrozmiJDlkI7muIXnkIblhbbku5blnLrmrKHnmoTnvJPlrZhcclxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjbGVhck90aGVyQ2xlYW5TdGF0ZSgpO1xyXG4gICAgICAgICAgICB9LCAxMDAwKTtcclxuICAgICAgICB9XHJcbiAgICB9LCBbc2VhdFVVSURdKTtcclxuXHJcbiAgICAvLyDojrflj5bov57mjqXphY3nva5cclxuICAgIGNvbnN0IGZldGNoQ29ubmVjdGlvbk1hcCA9IGFzeW5jICgpID0+IHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAvLyDlpoLmnpzlt7Lnu4/mnInnvJPlrZjnmoRjb25uZWN0aW9uTWFw77yM55u05o6l6L+U5ZueXHJcbiAgICAgICAgICAgIGlmIChjb25uZWN0aW9uTWFwUmVmLmN1cnJlbnQpIHtcclxuICAgICAgICAgICAgICAgIHNldENvbm5lY3Rpb25NYXAoY29ubmVjdGlvbk1hcFJlZi5jdXJyZW50KTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgY29uc3QgZGV2aWNlU3RvcmUgPSB1c2VEZXZpY2VTdG9yZS5nZXRTdGF0ZSgpO1xyXG4gICAgICAgICAgICBjb25zdCBmYXVsdFNjZW5hcmlvID0gZGV2aWNlU3RvcmUuZmF1bHRTY2VuYXJpb3MgfHwgJyc7XHJcbiAgICAgICAgICAgIGNvbnN0IGFwaVVybCA9IEFQSV9VUkxTLkNPTk5FQ1RJT04uTUFQX1dJVEhfU0NFTkUoZmF1bHRTY2VuYXJpbyk7XHJcbiAgICAgICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goYXBpVXJsKTtcclxuICAgICAgICAgICAgaWYgKCFyZXNwb25zZS5vaykge1xyXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCfojrflj5bov57mjqXphY3nva7lpLHotKUnKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb25zdCBkYXRhID0gYXdhaXQgcmVzcG9uc2UuanNvbigpO1xyXG4gICAgICAgICAgICBjb25uZWN0aW9uTWFwUmVmLmN1cnJlbnQgPSBkYXRhIHx8IHt9OyAgLy8g57yT5a2YY29ubmVjdGlvbk1hcFxyXG4gICAgICAgICAgICBzZXRDb25uZWN0aW9uTWFwKGRhdGEgfHwge30pO1xyXG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ+iOt+WPlui/nuaOpemFjee9rumUmeivrzonLCBlcnJvcik7XHJcbiAgICAgICAgICAgIHNldENvbm5lY3Rpb25NYXAoe30pO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgLy8g5aSE55CG6byg5qCH5oyJ5LiL5LqL5Lu277yI55So5LqObGMtY2xlYW7lt6XlhbfvvIlcclxuICAgIGNvbnN0IGhhbmRsZU1vdXNlRG93biA9ICgpID0+IHtcclxuICAgICAgICBpZiAoc2VsZWN0ZWRUb29sPy5pZCA9PT0gJ2xjLWNsZWFuJykge1xyXG4gICAgICAgICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLmN1cnNvciA9IGB1cmwoJHtnZXRBc3NldFVybCgnL2N1c3RvbS1jbGVhbjIucG5nJyl9KSwgYXV0b2A7XHJcbiAgICAgICAgICAgIENsZWFuU291bmQ/LnBsYXkoKS5jYXRjaChjb25zb2xlLmVycm9yKTtcclxuICAgICAgICB9IGVsc2UgaWYgKHNlbGVjdGVkVG9vbD8uaWQgPT09ICdtcG8tY2xlYW4nKSB7XHJcbiAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUuY3Vyc29yID0gYHVybCgke2dldEFzc2V0VXJsKCcvY3VzdG9tLWNsZWFuLW1wbzIucG5nJyl9KSwgYXV0b2A7XHJcbiAgICAgICAgICAgIENsZWFuU291bmQ/LnBsYXkoKS5jYXRjaChjb25zb2xlLmVycm9yKTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG5cclxuICAgIC8vIOWkhOeQhum8oOagh+mHiuaUvuS6i+S7tu+8iOeUqOS6jmxjLWNsZWFu5bel5YW377yJXHJcbiAgICBjb25zdCBoYW5kbGVNb3VzZVVwID0gKGV2ZW50KSA9PiB7XHJcbiAgICAgICAgaWYgKHNlbGVjdGVkVG9vbD8uaWQgPT09ICdsYy1jbGVhbicpIHtcclxuICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5jdXJzb3IgPSBgdXJsKCR7Z2V0QXNzZXRVcmwoJy9jdXN0b20tY2xlYW4ucG5nJyl9KSwgYXV0b2A7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBjb25zdCB4ID0gZXZlbnQuY2xpZW50WDtcclxuICAgICAgICAgICAgY29uc3QgeSA9IGV2ZW50LmNsaWVudFk7XHJcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRzID0gZG9jdW1lbnQuZWxlbWVudHNGcm9tUG9pbnQoeCwgeSk7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBsZXQgY2xlYW5hYmxlRWxlbWVudCA9IG51bGw7XHJcbiAgICAgICAgICAgIGVsZW1lbnRzLmZvckVhY2goZWxlbWVudCA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoZWxlbWVudC5oYXNBdHRyaWJ1dGUoJ2xjY2xlYW4nKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNsZWFuYWJsZUVsZW1lbnQgPSBlbGVtZW50O1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIGlmIChjbGVhbmFibGVFbGVtZW50KSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgaGFzQ29ubmVjdGVkRW5kcG9pbnQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIGVsZW1lbnRzLmZvckVhY2goZWxlbWVudCA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCdqdGstY29ubmVjdGVkJykpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaGFzQ29ubmVjdGVkRW5kcG9pbnQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRUb3RhbFRvYXN0TWVzc2FnZSgn6K+l56uv5Y+j5bey6L+e5o6l77yM6K+35pat5byA6L+e5o6l6L+b6KGM5riF5rSBJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIGlmICghaGFzQ29ubmVjdGVkRW5kcG9pbnQpIHtcclxuICAgICAgICAgICAgICAgICAgICBjbGVhbmFibGVFbGVtZW50LnNldEF0dHJpYnV0ZSgnbGNjbGVhbicsICd0cnVlJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgc2V0Q2xlYW5TdGF0dXMoJ+W3sua4hea0gScpO1xyXG4gICAgICAgICAgICAgICAgICAgIHNhdmVDbGVhblN0YXRlKCk7IC8vIOS/neWtmOeKtuaAgVxyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBzZXRDbGVhblN0YXR1cyhudWxsKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHNldENsZWFuU3RhdHVzKG51bGwpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIGlmIChzZWxlY3RlZFRvb2w/LmlkID09PSAnbXBvLWNsZWFuJykge1xyXG4gICAgICAgICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLmN1cnNvciA9IGB1cmwoJHtnZXRBc3NldFVybCgnL2N1c3RvbS1jbGVhbi1tcG8ucG5nJyl9KSwgYXV0b2A7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBjb25zdCB4ID0gZXZlbnQuY2xpZW50WDtcclxuICAgICAgICAgICAgY29uc3QgeSA9IGV2ZW50LmNsaWVudFk7XHJcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRzID0gZG9jdW1lbnQuZWxlbWVudHNGcm9tUG9pbnQoeCwgeSk7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBsZXQgZm91bmRDbGVhbkVsZW1lbnQgPSBmYWxzZTtcclxuICAgICAgICAgICAgZWxlbWVudHMuZm9yRWFjaChlbGVtZW50ID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChlbGVtZW50Lmhhc0F0dHJpYnV0ZSgnbXBvQ2xlYW4nKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKCdtcG9DbGVhbicsICd0cnVlJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgc2V0Q2xlYW5TdGF0dXMoJ+W3sua4hea0gScpO1xyXG4gICAgICAgICAgICAgICAgICAgIGZvdW5kQ2xlYW5FbGVtZW50ID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICBzYXZlQ2xlYW5TdGF0ZSgpOyAvLyDkv53lrZjnirbmgIFcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBpZiAoIWZvdW5kQ2xlYW5FbGVtZW50KSB7XHJcbiAgICAgICAgICAgICAgICBzZXRDbGVhblN0YXR1cyhudWxsKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgLy8g6L+Z5Lqb5Ye95pWw5bey5ZCI5bm25YiwIGhhbmRsZU1vdXNlRG93biDlkowgaGFuZGxlTW91c2VVcCDkuK1cclxuICAgIC8vIOWkhOeQhum8oOagh+enu+WKqOS6i+S7tu+8iOeUqOS6jmxjLWNsZWFu5bel5YW377yJXHJcbiAgICBjb25zdCBoYW5kbGVDbGVhbk1vdXNlTW92ZSA9IChldmVudCkgPT4ge1xyXG4gICAgICAgIGlmIChzZWxlY3RlZFRvb2w/LmlkID09PSAnbGMtY2xlYW4nKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHggPSBldmVudC5jbGllbnRYO1xyXG4gICAgICAgICAgICBjb25zdCB5ID0gZXZlbnQuY2xpZW50WTtcclxuICAgICAgICAgICAgY29uc3QgZWxlbWVudHMgPSBkb2N1bWVudC5lbGVtZW50c0Zyb21Qb2ludCh4LCB5KTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIGxldCBmb3VuZENsZWFuRWxlbWVudCA9IGZhbHNlO1xyXG4gICAgICAgICAgICBsZXQgY3VycmVudFN0YXR1cyA9IG51bGw7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBlbGVtZW50cy5mb3JFYWNoKGVsZW1lbnQgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQuaGFzQXR0cmlidXRlKCdsY2NsZWFuJykpIHtcclxuICAgICAgICAgICAgICAgICAgICBmb3VuZENsZWFuRWxlbWVudCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaXNDbGVhbiA9IGVsZW1lbnQuZ2V0QXR0cmlidXRlKCdsY2NsZWFuJykgPT09ICd0cnVlJztcclxuICAgICAgICAgICAgICAgICAgICBjdXJyZW50U3RhdHVzID0gaXNDbGVhbiA/ICflt7LmuIXmtIEnIDogJ+acqua4hea0gSc7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgaWYgKGZvdW5kQ2xlYW5FbGVtZW50KSB7XHJcbiAgICAgICAgICAgICAgICBzZXRDbGVhblN0YXR1cyhjdXJyZW50U3RhdHVzKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHNldENsZWFuU3RhdHVzKG51bGwpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIC8vIOWkhOeQhum8oOagh+enu+WKqOS6i+S7tu+8iOeUqOS6jk1QTy1jbGVhbuW3peWFt++8iVxyXG4gICAgY29uc3QgaGFuZGxlTVBPQ2xlYW5Nb3VzZU1vdmUgPSAoZXZlbnQpID0+IHtcclxuICAgICAgICBpZiAoc2VsZWN0ZWRUb29sPy5pZCA9PT0gJ21wby1jbGVhbicpIHtcclxuICAgICAgICAgICAgY29uc3QgeCA9IGV2ZW50LmNsaWVudFg7XHJcbiAgICAgICAgICAgIGNvbnN0IHkgPSBldmVudC5jbGllbnRZO1xyXG4gICAgICAgICAgICBjb25zdCBlbGVtZW50cyA9IGRvY3VtZW50LmVsZW1lbnRzRnJvbVBvaW50KHgsIHkpO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgbGV0IGZvdW5kQ2xlYW5FbGVtZW50ID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGxldCBjdXJyZW50U3RhdHVzID0gbnVsbDtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIGVsZW1lbnRzLmZvckVhY2goZWxlbWVudCA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoZWxlbWVudC5oYXNBdHRyaWJ1dGUoJ21wb0NsZWFuJykpIHtcclxuICAgICAgICAgICAgICAgICAgICBmb3VuZENsZWFuRWxlbWVudCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaXNDbGVhbiA9IGVsZW1lbnQuZ2V0QXR0cmlidXRlKCdtcG9DbGVhbicpID09PSAndHJ1ZSc7XHJcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudFN0YXR1cyA9IGlzQ2xlYW4gPyAn5bey5riF5rSBJyA6ICfmnKrmuIXmtIEnO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIGlmIChmb3VuZENsZWFuRWxlbWVudCkge1xyXG4gICAgICAgICAgICAgICAgc2V0Q2xlYW5TdGF0dXMoY3VycmVudFN0YXR1cyk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBzZXRDbGVhblN0YXR1cyhudWxsKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICBcclxuICAgIC8vIOagueaNrnNlbGVjdGVkVG9vbOabtOaWsOm8oOagh+agt+W8j+WSjOS6i+S7tuebkeWQrFxyXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcclxuICAgICAgICAvLyDnp7vpmaTnjrDmnInnmoTkuovku7bnm5HlkKzlmahcclxuICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCBoYW5kbGVNb3VzZU1vdmUpO1xyXG4gICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIGhhbmRsZU1vdXNlRG93bik7XHJcbiAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIGhhbmRsZU1vdXNlVXApO1xyXG4gICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIGhhbmRsZUNsZWFuTW91c2VNb3ZlKTtcclxuXHJcbiAgICAgICAgLy8g5qC55o2u5bel5YW357G75Z6L6K6+572u6byg5qCH5qC35byPXHJcbiAgICAgICAgaWYgKCFzZWxlY3RlZFRvb2wpIHtcclxuICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5jdXJzb3IgPSAnZGVmYXVsdCc7XHJcbiAgICAgICAgICAgIGZldGNoQ29ubmVjdGlvbk1hcCgpO1xyXG4gICAgICAgICAgICBzZXRTaG93T3ZlcmxheShmYWxzZSk7XHJcbiAgICAgICAgICAgIHNldENsZWFuU3RhdHVzKG51bGwpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoc2VsZWN0ZWRUb29sLmlkID09PSAnSUxUMjAwJykge1xyXG4gICAgICAgICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLmN1cnNvciA9IGB1cmwoJHtnZXRBc3NldFVybCgnL2N1cnNvci1JTFQucG5nJyl9KSwgYXV0b2A7XHJcbiAgICAgICAgICAgIHNldFNob3dPdmVybGF5KHRydWUpO1xyXG4gICAgICAgICAgICBzZXRDbGVhblN0YXR1cyhudWxsKTtcclxuICAgICAgICAgICAgLy8g5Y+q5ZyodG9uZeinhuWbvuS4i+iOt+WPlui/nuaOpemFjee9ruWSjOa3u+WKoOS6i+S7tuebkeWQrFxyXG4gICAgICAgICAgICBpZiAobWFpbk1vZHVsZT09PSc4MDAwJyAmJiBuYXZpZ2F0aW9uLmN1cnJlbnQudmlldyA9PT0gJ3RvbmUnKSB7XHJcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCBoYW5kbGVNb3VzZU1vdmUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIGlmIChzZWxlY3RlZFRvb2wuaWQgPT09ICdsYy1jbGVhbicpIHtcclxuICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5jdXJzb3IgPSBgdXJsKCR7Z2V0QXNzZXRVcmwoJy9jdXN0b20tY2xlYW4ucG5nJyl9KSwgYXV0b2A7XHJcbiAgICAgICAgICAgIHNldFNob3dPdmVybGF5KHRydWUpO1xyXG4gICAgICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCBoYW5kbGVNb3VzZURvd24pO1xyXG4gICAgICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgaGFuZGxlTW91c2VVcCk7XHJcbiAgICAgICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIGhhbmRsZUNsZWFuTW91c2VNb3ZlKTtcclxuICAgICAgICB9IGVsc2UgaWYgKHNlbGVjdGVkVG9vbC5pZCA9PT0gJ21wby1jbGVhbicpIHtcclxuICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5jdXJzb3IgPSBgdXJsKCR7Z2V0QXNzZXRVcmwoJy9jdXN0b20tY2xlYW4tbXBvLnBuZycpfSksIGF1dG9gO1xyXG4gICAgICAgICAgICBzZXRTaG93T3ZlcmxheSh0cnVlKTtcclxuICAgICAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgaGFuZGxlTW91c2VEb3duKTtcclxuICAgICAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIGhhbmRsZU1vdXNlVXApO1xyXG4gICAgICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCBoYW5kbGVNUE9DbGVhbk1vdXNlTW92ZSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gKCkgPT4ge1xyXG4gICAgICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCBoYW5kbGVNb3VzZU1vdmUpO1xyXG4gICAgICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCBoYW5kbGVNb3VzZURvd24pO1xyXG4gICAgICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgaGFuZGxlTW91c2VVcCk7XHJcbiAgICAgICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIGhhbmRsZUNsZWFuTW91c2VNb3ZlKTtcclxuICAgICAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgaGFuZGxlTVBPQ2xlYW5Nb3VzZU1vdmUpO1xyXG4gICAgICAgIH07XHJcbiAgICB9LCBbc2VsZWN0ZWRUb29sLCBuYXZpZ2F0aW9uLmN1cnJlbnQudmlld10pO1xyXG5cclxuXHJcbiAgICAvLyDmo4Dmn6Xnq6/lj6PkupLpgJpcclxuICAgIGNvbnN0IGNoZWNrUG9ydENvbm5lY3Rpb24gPSAoZWxlbWVudElkKSA9PiB7XHJcbiAgICAgICAgaWYgKCFjb25uZWN0aW9uU3RhdHVzPy5tYWluUGF0aHMpIHJldHVybiBmYWxzZTtcclxuICAgICAgICBcclxuICAgICAgICAvLyDojrflj5bmnIDmlrDnmoRtYWluUGF0aEtleVxyXG4gICAgICAgIGNvbnN0IG1haW5QYXRoS2V5ID0gT2JqZWN0LmtleXMoY29ubmVjdGlvblN0YXR1cy5tYWluUGF0aHMpWzBdO1xyXG4gICAgICAgIGlmICghbWFpblBhdGhLZXkpIHJldHVybiBmYWxzZTtcclxuXHJcbiAgICAgICAgY29uc3QgbWFpbkVuZCA9IGNvbm5lY3Rpb25TdGF0dXMubWFpblBhdGhzW21haW5QYXRoS2V5XS5lbmQ7XHJcbiAgICAgICAgaWYgKCFtYWluRW5kKSByZXR1cm4gZmFsc2U7XHJcblxyXG4gICAgICAgIC8vIOS9v+eUqOacgOaWsOeahGNvbm5lY3Rpb25NYXDov5vooYzliKTmlq1cclxuICAgICAgICByZXR1cm4gT2JqZWN0LmtleXMoY29ubmVjdGlvbk1hcCkuc29tZShrZXkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBjb25uZWN0aW9uID0gY29ubmVjdGlvbk1hcFtrZXldO1xyXG4gICAgICAgICAgICBjb25zdCBpc0Nvbm5lY3RlZCA9IChjb25uZWN0aW9uLmNvbm5lY3RlZFRvID09PSBtYWluRW5kICYmIGtleSA9PT0gZWxlbWVudElkKSB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29ubmVjdGlvbi5jb25uZWN0ZWRUbyA9PT0gZWxlbWVudElkICYmIGtleSA9PT0gbWFpbkVuZCk7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgcmV0dXJuIGlzQ29ubmVjdGVkO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfTtcclxuXHJcbiAgICAvLyDnm5HlkKxmYXVsdFNjZW5hcmlv5Y+Y5YyW5bm26YeN5paw6I635Y+WY29ubmVjdGlvbk1hcFxyXG4gICAgY29uc3QgZmF1bHRTY2VuYXJpbyA9IHVzZURldmljZVN0b3JlKHN0YXRlID0+IHN0YXRlLmZhdWx0U2NlbmFyaW9zKTtcclxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XHJcbiAgICAgICAgY29ubmVjdGlvbk1hcFJlZi5jdXJyZW50ID0gbnVsbDsgLy8g5riF6Zmk57yT5a2YXHJcbiAgICAgICAgZmV0Y2hDb25uZWN0aW9uTWFwKCk7XHJcbiAgICB9LCBbZmF1bHRTY2VuYXJpb10pOyAgLy8g5re75Yqg5a+5ZmF1bHRTY2VuYXJpb+eahOS+nei1llxyXG5cclxuICAgIC8vIOWkhOeQhum8oOagh+enu+WKqOS6i+S7tlxyXG4gICAgY29uc3QgaGFuZGxlTW91c2VNb3ZlID0gKGV2ZW50KSA9PiB7XHJcbiAgICAgICAgXHJcbiAgICAgICAgY29uc3QgeCA9IGV2ZW50LmNsaWVudFg7XHJcbiAgICAgICAgY29uc3QgeSA9IGV2ZW50LmNsaWVudFk7XHJcbiAgICAgICAgXHJcbiAgICAgICAgY29uc3QgZWxlbWVudHMgPSBkb2N1bWVudC5lbGVtZW50c0Zyb21Qb2ludCh4LCB5KTtcclxuICAgICAgICBcclxuICAgICAgICBlbGVtZW50cy5mb3JFYWNoKGVsZW1lbnQgPT4ge1xyXG4gICAgICAgICAgICBpZiAoZWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2pzdHlwZScpICYmIGVsZW1lbnQuaWQpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGlzQ29ubmVjdGVkID0gY2hlY2tQb3J0Q29ubmVjdGlvbihlbGVtZW50LmlkKTtcclxuICAgICAgICAgICAgICAgIGlmIChpc0Nvbm5lY3RlZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIFRvbmVTb3VuZD8ucGxheSgpLmNhdGNoKGNvbnNvbGUuZXJyb3IpO1xyXG4gICAgICAgICAgICAgICAgICAgIHNldFRvbmVTdGF0dXMoJ/CflIonKTtcclxuICAgICAgICAgICAgICAgICAgICAvLyAxMjAwbXMg5ZCO5riF6Zmk54q25oCBXHJcbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldFRvbmVTdGF0dXMobnVsbCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSwgMTIwMCk7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coaXNDb25uZWN0ZWQpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9O1xyXG5cclxuXHJcbiAgICByZXR1cm4gKFxyXG4gICAgICAgIDw+XHJcbiAgICAgICAgICAgIHtzaG93T3ZlcmxheSAmJiAoXHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246ICdmaXhlZCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvcDogMCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGVmdDogMCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6ICcxMDAlJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAnMTAwJScsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICd0cmFuc3BhcmVudCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHpJbmRleDogMjAwMCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgcG9pbnRlckV2ZW50czogJ2F1dG8nLFxyXG4gICAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICApfVxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgeyhzZWxlY3RlZFRvb2w/LmlkID09PSAnbGMtY2xlYW4nIHx8IHNlbGVjdGVkVG9vbD8uaWQgPT09ICdtcG8tY2xlYW4nKSAmJiBjbGVhblN0YXR1cyAmJiAoXHJcbiAgICAgICAgICAgICAgICA8U3RhdHVzVG9hc3Qgc3RhdHVzPXtjbGVhblN0YXR1c30gLz5cclxuICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAge3NlbGVjdGVkVG9vbD8uaWQgPT09ICdJTFQyMDAnICYmIHRvbmVTdGF0dXMgJiYgKFxyXG4gICAgICAgICAgICAgICAgPFN0YXR1c1RvYXN0IHN0YXR1cz17dG9uZVN0YXR1c30gLz5cclxuICAgICAgICAgICAgKX1cclxuICAgICAgICA8Lz5cclxuICAgICk7XHJcbn0iXSwibmFtZXMiOlsidXNlU3RhdGUiLCJ1c2VFZmZlY3QiLCJ1c2VSZWYiLCJ1c2VEZXZpY2VTdG9yZSIsInVzZURpc3BsYXlTdG9yZSIsInNoYWxsb3ciLCJTdGF0dXNUb2FzdCIsIkFQSV9VUkxTIiwiZ2V0QXNzZXRVcmwiLCJUb25lU291bmQiLCJBdWRpbyIsIkNsZWFuU291bmQiLCJDdXJzb3JzIiwic2VsZWN0ZWRUb29sIiwiY29ubmVjdGlvblN0YXR1cyIsInNldFRvdGFsVG9hc3RNZXNzYWdlIiwiY29ubmVjdGlvbk1hcCIsInNldENvbm5lY3Rpb25NYXAiLCJuYXZpZ2F0aW9uIiwic3RhdGUiLCJjb25uZWN0aW9uTWFwUmVmIiwic2hvd092ZXJsYXkiLCJzZXRTaG93T3ZlcmxheSIsImNsZWFuU3RhdHVzIiwic2V0Q2xlYW5TdGF0dXMiLCJ0b25lU3RhdHVzIiwic2V0VG9uZVN0YXR1cyIsIm1haW5Nb2R1bGUiLCJnZXRTdGF0ZSIsIm1haW5Vbml0TW9kdWxlcyIsImlkIiwic2VhdFVVSUQiLCJsb2FkQ2xlYW5TdGF0ZSIsInNldFRpbWVvdXQiLCJsY2NsZWFuU3RhdGVzIiwiSlNPTiIsInBhcnNlIiwibG9jYWxTdG9yYWdlIiwiZ2V0SXRlbSIsIm1wb0NsZWFuU3RhdGVzIiwibGNFbGVtZW50cyIsImRvY3VtZW50IiwicXVlcnlTZWxlY3RvckFsbCIsImZvckVhY2giLCJlbCIsImVsZW1lbnRJZCIsImdldEF0dHJpYnV0ZSIsInVuZGVmaW5lZCIsInNldEF0dHJpYnV0ZSIsInRvU3RyaW5nIiwibXBvRWxlbWVudHMiLCJzYXZlQ2xlYW5TdGF0ZSIsInNldEl0ZW0iLCJzdHJpbmdpZnkiLCJjbGVhck90aGVyQ2xlYW5TdGF0ZSIsIk9iamVjdCIsImtleXMiLCJrZXkiLCJzdGFydHNXaXRoIiwicmVtb3ZlSXRlbSIsImZldGNoQ29ubmVjdGlvbk1hcCIsImN1cnJlbnQiLCJkZXZpY2VTdG9yZSIsImZhdWx0U2NlbmFyaW8iLCJmYXVsdFNjZW5hcmlvcyIsImFwaVVybCIsIkNPTk5FQ1RJT04iLCJNQVBfV0lUSF9TQ0VORSIsInJlc3BvbnNlIiwiZmV0Y2giLCJvayIsIkVycm9yIiwiZGF0YSIsImpzb24iLCJlcnJvciIsImNvbnNvbGUiLCJoYW5kbGVNb3VzZURvd24iLCJib2R5Iiwic3R5bGUiLCJjdXJzb3IiLCJwbGF5IiwiY2F0Y2giLCJoYW5kbGVNb3VzZVVwIiwiZXZlbnQiLCJ4IiwiY2xpZW50WCIsInkiLCJjbGllbnRZIiwiZWxlbWVudHMiLCJlbGVtZW50c0Zyb21Qb2ludCIsImNsZWFuYWJsZUVsZW1lbnQiLCJlbGVtZW50IiwiaGFzQXR0cmlidXRlIiwiaGFzQ29ubmVjdGVkRW5kcG9pbnQiLCJjbGFzc0xpc3QiLCJjb250YWlucyIsImZvdW5kQ2xlYW5FbGVtZW50IiwiaGFuZGxlQ2xlYW5Nb3VzZU1vdmUiLCJjdXJyZW50U3RhdHVzIiwiaXNDbGVhbiIsImhhbmRsZU1QT0NsZWFuTW91c2VNb3ZlIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsImhhbmRsZU1vdXNlTW92ZSIsInZpZXciLCJhZGRFdmVudExpc3RlbmVyIiwiY2hlY2tQb3J0Q29ubmVjdGlvbiIsIm1haW5QYXRocyIsIm1haW5QYXRoS2V5IiwibWFpbkVuZCIsImVuZCIsInNvbWUiLCJjb25uZWN0aW9uIiwiaXNDb25uZWN0ZWQiLCJjb25uZWN0ZWRUbyIsImxvZyIsImRpdiIsInBvc2l0aW9uIiwidG9wIiwibGVmdCIsIndpZHRoIiwiaGVpZ2h0IiwiYmFja2dyb3VuZCIsInpJbmRleCIsInBvaW50ZXJFdmVudHMiLCJzdGF0dXMiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(pages-dir-node)/./src/components/Cursors.js\n"); /***/ }), /***/ "(pages-dir-node)/./src/components/DisPlay.js": /*!***********************************!*\ !*** ./src/components/DisPlay.js ***! \***********************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; eval("__webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ DisPlay)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"react/jsx-dev-runtime\");\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 */ \"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _utils_asset__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/utils/asset */ \"(pages-dir-node)/./src/utils/asset.js\");\n/* harmony import */ var _components_dsxpage__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/components/dsxpage */ \"(pages-dir-node)/./src/components/dsxpage/index.js\");\n/* harmony import */ var _lib_Toast__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./lib/Toast */ \"(pages-dir-node)/./src/components/lib/Toast.js\");\n/* harmony import */ var _store_displayStore__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/store/displayStore */ \"(pages-dir-node)/./src/store/displayStore.js\");\n/* harmony import */ var _components_AudioProvider__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @/components/AudioProvider */ \"(pages-dir-node)/./src/components/AudioProvider.js\");\nvar __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_utils_asset__WEBPACK_IMPORTED_MODULE_2__, _components_dsxpage__WEBPACK_IMPORTED_MODULE_3__, _lib_Toast__WEBPACK_IMPORTED_MODULE_4__, _store_displayStore__WEBPACK_IMPORTED_MODULE_5__, _components_AudioProvider__WEBPACK_IMPORTED_MODULE_6__]);\n([_utils_asset__WEBPACK_IMPORTED_MODULE_2__, _components_dsxpage__WEBPACK_IMPORTED_MODULE_3__, _lib_Toast__WEBPACK_IMPORTED_MODULE_4__, _store_displayStore__WEBPACK_IMPORTED_MODULE_5__, _components_AudioProvider__WEBPACK_IMPORTED_MODULE_6__] = __webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__);\n\n\n\n\n\n\n\nfunction DisPlay() {\n const { navigation, navigateTo, toastMessage } = (0,_store_displayStore__WEBPACK_IMPORTED_MODULE_5__[\"default\"])();\n const { play } = (0,_components_AudioProvider__WEBPACK_IMPORTED_MODULE_6__.useAudio)();\n const renderPage = ()=>{\n const pageName = navigation?.current?.name || 'home';\n switch(pageName){\n case 'home':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_dsxpage__WEBPACK_IMPORTED_MODULE_3__.HomePage, {}, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/DisPlay.js\",\n lineNumber: 20,\n columnNumber: 24\n }, this);\n case 'project':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_dsxpage__WEBPACK_IMPORTED_MODULE_3__.Project, {}, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/DisPlay.js\",\n lineNumber: 22,\n columnNumber: 24\n }, this);\n case 'operators':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_dsxpage__WEBPACK_IMPORTED_MODULE_3__.Operators, {}, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/DisPlay.js\",\n lineNumber: 24,\n columnNumber: 24\n }, this);\n case 'cableId':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_dsxpage__WEBPACK_IMPORTED_MODULE_3__.CableId, {}, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/DisPlay.js\",\n lineNumber: 26,\n columnNumber: 24\n }, this);\n case 'result':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_dsxpage__WEBPACK_IMPORTED_MODULE_3__.Result, {}, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/DisPlay.js\",\n lineNumber: 28,\n columnNumber: 24\n }, this);\n case 'tools':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_dsxpage__WEBPACK_IMPORTED_MODULE_3__.Tools, {}, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/DisPlay.js\",\n lineNumber: 30,\n columnNumber: 24\n }, this);\n case 'testConfig':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_dsxpage__WEBPACK_IMPORTED_MODULE_3__.TestConfig, {}, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/DisPlay.js\",\n lineNumber: 32,\n columnNumber: 24\n }, this);\n case 'menulist':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_dsxpage__WEBPACK_IMPORTED_MODULE_3__.MenuList, {}, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/DisPlay.js\",\n lineNumber: 34,\n columnNumber: 24\n }, this);\n case 'testing':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_dsxpage__WEBPACK_IMPORTED_MODULE_3__.Testing, {}, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/DisPlay.js\",\n lineNumber: 36,\n columnNumber: 24\n }, this);\n case 'resultinfo':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_dsxpage__WEBPACK_IMPORTED_MODULE_3__.ResultInfo, {}, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/DisPlay.js\",\n lineNumber: 38,\n columnNumber: 24\n }, this);\n case 'copperperformance':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_dsxpage__WEBPACK_IMPORTED_MODULE_3__.CopperPerformance, {}, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/DisPlay.js\",\n lineNumber: 40,\n columnNumber: 24\n }, this);\n // 可以添加更多页面\n default:\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_dsxpage__WEBPACK_IMPORTED_MODULE_3__.HomePage, {}, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/DisPlay.js\",\n lineNumber: 44,\n columnNumber: 24\n }, this);\n }\n };\n const handleClick = ()=>{\n if (touchSound) {\n touchSound.currentTime = 0;\n touchSound.play();\n play('keyClick');\n }\n };\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-[480px] h-[640px] bg-[#fff] flex flex-col overflow-hidden\",\n onClick: handleClick,\n children: [\n toastMessage && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_lib_Toast__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {}, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/DisPlay.js\",\n lineNumber: 61,\n columnNumber: 30\n }, this),\n renderPage()\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/DisPlay.js\",\n lineNumber: 57,\n columnNumber: 9\n }, this);\n}\n\n__webpack_async_result__();\n} catch(e) { __webpack_async_result__(e); } });//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHBhZ2VzLWRpci1ub2RlKS8uL3NyYy9jb21wb25lbnRzL0Rpc1BsYXkuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBeUM7QUFDRztBQUM4RztBQUMxSDtBQUNtQjtBQUNHO0FBRXZDLFNBQVNpQjtJQUVwQixNQUFNLEVBQUVDLFVBQVUsRUFBRUMsVUFBVSxFQUFFQyxZQUFZLEVBQUMsR0FBR0wsK0RBQWVBO0lBQy9ELE1BQU0sRUFBRU0sSUFBSSxFQUFFLEdBQUdMLG1FQUFRQTtJQUl6QixNQUFNTSxhQUFhO1FBQ2YsTUFBTUMsV0FBV0wsWUFBWU0sU0FBU0MsUUFBUTtRQUU5QyxPQUFRRjtZQUNKLEtBQUs7Z0JBQ0QscUJBQU8sOERBQUNwQix5REFBUUE7Ozs7O1lBQ3BCLEtBQUs7Z0JBQ0QscUJBQU8sOERBQUNDLHdEQUFPQTs7Ozs7WUFDbkIsS0FBSztnQkFDRCxxQkFBTyw4REFBQ0MsMERBQVNBOzs7OztZQUNyQixLQUFLO2dCQUNELHFCQUFPLDhEQUFDQyx3REFBT0E7Ozs7O1lBQ25CLEtBQUs7Z0JBQ0QscUJBQU8sOERBQUNFLHVEQUFNQTs7Ozs7WUFDbEIsS0FBSztnQkFDRCxxQkFBTyw4REFBQ0Qsc0RBQUtBOzs7OztZQUNqQixLQUFLO2dCQUNELHFCQUFPLDhEQUFDRSwyREFBVUE7Ozs7O1lBQ3RCLEtBQUs7Z0JBQ0QscUJBQU8sOERBQUNDLHlEQUFRQTs7Ozs7WUFDcEIsS0FBSztnQkFDRCxxQkFBTyw4REFBQ0Msd0RBQU9BOzs7OztZQUNuQixLQUFLO2dCQUNELHFCQUFPLDhEQUFDQywyREFBVUE7Ozs7O1lBQ3RCLEtBQUs7Z0JBQ0QscUJBQU8sOERBQUNDLGtFQUFpQkE7Ozs7O1lBRTdCLFdBQVc7WUFDWDtnQkFDSSxxQkFBTyw4REFBQ1YseURBQVFBOzs7OztRQUN4QjtJQUNKO0lBRUEsTUFBTXVCLGNBQWM7UUFDaEIsSUFBSUMsWUFBWTtZQUNaQSxXQUFXQyxXQUFXLEdBQUc7WUFDekJELFdBQVdOLElBQUk7WUFDZkEsS0FBSztRQUNUO0lBQ0o7SUFFQSxxQkFDSSw4REFBQ1E7UUFDR0MsV0FBVTtRQUNWQyxTQUFTTDs7WUFFUk4sOEJBQWdCLDhEQUFDTixrREFBS0E7Ozs7O1lBQ3RCUTs7Ozs7OztBQUdiIiwic291cmNlcyI6WyIvb3B0L2Rldi9lc3QtZHN4L3NyYy9jb21wb25lbnRzL0Rpc1BsYXkuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCB9IGZyb20gJ3JlYWN0JztcclxuaW1wb3J0IHsgZ2V0QXNzZXRVcmwgfSBmcm9tICdAL3V0aWxzL2Fzc2V0JztcclxuaW1wb3J0IHsgSG9tZVBhZ2UsIFByb2plY3QsIE9wZXJhdG9ycywgQ2FibGVJZCwgVG9vbHMsIFJlc3VsdCwgVGVzdENvbmZpZywgTWVudUxpc3QsIFRlc3RpbmcsIFJlc3VsdEluZm8sIENvcHBlclBlcmZvcm1hbmNlIH0gZnJvbSAnQC9jb21wb25lbnRzL2RzeHBhZ2UnO1xyXG5pbXBvcnQgVG9hc3QgZnJvbSAnLi9saWIvVG9hc3QnO1xyXG5pbXBvcnQgdXNlRGlzcGxheVN0b3JlIGZyb20gJ0Avc3RvcmUvZGlzcGxheVN0b3JlJztcclxuaW1wb3J0IHsgdXNlQXVkaW8gfSBmcm9tICdAL2NvbXBvbmVudHMvQXVkaW9Qcm92aWRlcic7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBEaXNQbGF5KCkge1xyXG4gICAgXHJcbiAgICBjb25zdCB7IG5hdmlnYXRpb24sIG5hdmlnYXRlVG8sIHRvYXN0TWVzc2FnZX0gPSB1c2VEaXNwbGF5U3RvcmUoKTtcclxuICAgIGNvbnN0IHsgcGxheSB9ID0gdXNlQXVkaW8oKTtcclxuXHJcbiAgICBcclxuXHJcbiAgICBjb25zdCByZW5kZXJQYWdlID0gKCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHBhZ2VOYW1lID0gbmF2aWdhdGlvbj8uY3VycmVudD8ubmFtZSB8fCAnaG9tZSc7XHJcbiAgICAgICAgXHJcbiAgICAgICAgc3dpdGNoIChwYWdlTmFtZSkge1xyXG4gICAgICAgICAgICBjYXNlICdob21lJzpcclxuICAgICAgICAgICAgICAgIHJldHVybiA8SG9tZVBhZ2UgLz47XHJcbiAgICAgICAgICAgIGNhc2UgJ3Byb2plY3QnOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIDxQcm9qZWN0IC8+O1xyXG4gICAgICAgICAgICBjYXNlICdvcGVyYXRvcnMnOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIDxPcGVyYXRvcnMgLz47XHJcbiAgICAgICAgICAgIGNhc2UgJ2NhYmxlSWQnOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIDxDYWJsZUlkIC8+O1xyXG4gICAgICAgICAgICBjYXNlICdyZXN1bHQnOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIDxSZXN1bHQgLz47XHJcbiAgICAgICAgICAgIGNhc2UgJ3Rvb2xzJzpcclxuICAgICAgICAgICAgICAgIHJldHVybiA8VG9vbHMgLz47XHJcbiAgICAgICAgICAgIGNhc2UgJ3Rlc3RDb25maWcnOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIDxUZXN0Q29uZmlnIC8+O1xyXG4gICAgICAgICAgICBjYXNlICdtZW51bGlzdCc6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gPE1lbnVMaXN0Lz5cclxuICAgICAgICAgICAgY2FzZSAndGVzdGluZyc6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gPFRlc3RpbmcvPlxyXG4gICAgICAgICAgICBjYXNlICdyZXN1bHRpbmZvJzpcclxuICAgICAgICAgICAgICAgIHJldHVybiA8UmVzdWx0SW5mby8+ICAgXHJcbiAgICAgICAgICAgIGNhc2UgJ2NvcHBlcnBlcmZvcm1hbmNlJzpcclxuICAgICAgICAgICAgICAgIHJldHVybiA8Q29wcGVyUGVyZm9ybWFuY2UvPiAgIFxyXG4gICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAvLyDlj6/ku6Xmt7vliqDmm7TlpJrpobXpnaJcclxuICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgIHJldHVybiA8SG9tZVBhZ2UgLz47XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCBoYW5kbGVDbGljayA9ICgpID0+IHtcclxuICAgICAgICBpZiAodG91Y2hTb3VuZCkge1xyXG4gICAgICAgICAgICB0b3VjaFNvdW5kLmN1cnJlbnRUaW1lID0gMDtcclxuICAgICAgICAgICAgdG91Y2hTb3VuZC5wbGF5KCk7XHJcbiAgICAgICAgICAgIHBsYXkoJ2tleUNsaWNrJyk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICByZXR1cm4gKFxyXG4gICAgICAgIDxkaXYgXHJcbiAgICAgICAgICAgIGNsYXNzTmFtZT1cInctWzQ4MHB4XSBoLVs2NDBweF0gYmctWyNmZmZdIGZsZXggZmxleC1jb2wgb3ZlcmZsb3ctaGlkZGVuXCJcclxuICAgICAgICAgICAgb25DbGljaz17aGFuZGxlQ2xpY2t9XHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgICB7dG9hc3RNZXNzYWdlICYmIDxUb2FzdCAvPn1cclxuICAgICAgICAgICAge3JlbmRlclBhZ2UoKX1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICk7XHJcbn1cclxuIl0sIm5hbWVzIjpbIlJlYWN0IiwidXNlRWZmZWN0IiwiZ2V0QXNzZXRVcmwiLCJIb21lUGFnZSIsIlByb2plY3QiLCJPcGVyYXRvcnMiLCJDYWJsZUlkIiwiVG9vbHMiLCJSZXN1bHQiLCJUZXN0Q29uZmlnIiwiTWVudUxpc3QiLCJUZXN0aW5nIiwiUmVzdWx0SW5mbyIsIkNvcHBlclBlcmZvcm1hbmNlIiwiVG9hc3QiLCJ1c2VEaXNwbGF5U3RvcmUiLCJ1c2VBdWRpbyIsIkRpc1BsYXkiLCJuYXZpZ2F0aW9uIiwibmF2aWdhdGVUbyIsInRvYXN0TWVzc2FnZSIsInBsYXkiLCJyZW5kZXJQYWdlIiwicGFnZU5hbWUiLCJjdXJyZW50IiwibmFtZSIsImhhbmRsZUNsaWNrIiwidG91Y2hTb3VuZCIsImN1cnJlbnRUaW1lIiwiZGl2IiwiY2xhc3NOYW1lIiwib25DbGljayJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(pages-dir-node)/./src/components/DisPlay.js\n"); /***/ }), /***/ "(pages-dir-node)/./src/components/JsPlumbInit.js": /*!***************************************!*\ !*** ./src/components/JsPlumbInit.js ***! \***************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; eval("__webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ JsPlumbInit)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"react/jsx-dev-runtime\");\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 */ \"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _store_deviceStore__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/store/deviceStore */ \"(pages-dir-node)/./src/store/deviceStore.js\");\nvar __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_store_deviceStore__WEBPACK_IMPORTED_MODULE_2__]);\n_store_deviceStore__WEBPACK_IMPORTED_MODULE_2__ = (__webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__)[0];\n\n\n\nfunction JsPlumbInit() {\n const containerRef = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)(null);\n const jsPlumbInstanceRef = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)(null);\n const { connectionItems, mainUnitModules, remoteUnitModules, mainUnitAdapter, remoteUnitAdapter, addConnectionPath, removeConnectionPath, clearConnectionPaths, faultScenarios, WorldSkillScenarios } = (0,_store_deviceStore__WEBPACK_IMPORTED_MODULE_2__[\"default\"])();\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)({\n \"JsPlumbInit.useEffect\": ()=>{\n // 确保在客户端环境中运行\n if (true) return;\n // 动态导入jsplumb\n const initJsPlumb = {\n \"JsPlumbInit.useEffect.initJsPlumb\": async ()=>{\n try {\n const { jsPlumb } = await Promise.resolve(/*! import() */).then(__webpack_require__.t.bind(__webpack_require__, /*! jsplumb */ \"jsplumb\", 23));\n if (!containerRef.current) return;\n // 初始化jsPlumb实例\n if (!jsPlumbInstanceRef.current) {\n jsPlumbInstanceRef.current = jsPlumb.getInstance({\n Container: containerRef.current,\n // 连接线默认配置\n Connector: [\n 'Bezier',\n {\n curviness: 50\n }\n ],\n // 端点默认配置\n Endpoint: [\n 'Dot',\n {\n radius: 10\n }\n ],\n // 连接线样式\n PaintStyle: {\n stroke: '#0ff',\n strokeWidth: 2\n },\n // 端点样式\n EndpointStyle: {\n fill: '#0ff',\n radius: 15\n },\n // 鼠标悬停样式\n HoverPaintStyle: {\n stroke: '#00ff7f',\n strokeWidth: 3\n },\n EndpointHoverStyle: {\n fill: '#00ff7f'\n }\n });\n // 添加连接建立事件处理\n jsPlumbInstanceRef.current.bind('connection', {\n \"JsPlumbInit.useEffect.initJsPlumb\": (info)=>{\n const targetElement = document.getElementById(info.targetId);\n if (targetElement && targetElement.getAttribute('jstype') === 'modelport-fiber') {\n // 如果当前状态是 false,说明是新建立的连接\n if (targetElement.getAttribute('fibersource') === 'false') {\n targetElement.setAttribute('fibersource', 'true');\n }\n }\n }\n }[\"JsPlumbInit.useEffect.initJsPlumb\"]);\n // 添加连接断开事件处理\n jsPlumbInstanceRef.current.bind('connectionDetached', {\n \"JsPlumbInit.useEffect.initJsPlumb\": (info)=>{\n const targetElement = document.getElementById(info.targetId);\n if (targetElement && targetElement.getAttribute('jstype') === 'modelport-fiber') {\n targetElement.setAttribute('fibersource', 'false');\n }\n }\n }[\"JsPlumbInit.useEffect.initJsPlumb\"]);\n // 添加连接拖动开始事件处理\n jsPlumbInstanceRef.current.bind('connectionDrag', {\n \"JsPlumbInit.useEffect.initJsPlumb\": (info)=>{\n const targetElement = document.getElementById(info.targetId);\n if (targetElement && targetElement.getAttribute('jstype') === 'modelport-fiber') {\n // 在拖动开始时就将状态设置为 abnormal\n targetElement.setAttribute('fibersource', 'abnormal');\n }\n }\n }[\"JsPlumbInit.useEffect.initJsPlumb\"]);\n // 添加beforeDrop事件处理\n jsPlumbInstanceRef.current.bind('beforeDrop', {\n \"JsPlumbInit.useEffect.initJsPlumb\": (info)=>{\n // 获取源和目标元素\n const sourceId = info.sourceId;\n const targetId = info.targetId;\n // 如果源和目标是同一个元素,返回false阻止连接\n if (sourceId === targetId) {\n //console.log('不允许自连接');\n return false;\n }\n // 获取源和目标元素的id和jstype属性\n const sourceElement = document.querySelector(`[id=\"${sourceId}\"]`);\n const targetElement = document.querySelector(`[id=\"${targetId}\"]`);\n if (sourceElement && targetElement) {\n const sourceType = sourceElement.getAttribute('jstype');\n const targetType = targetElement.getAttribute('jstype');\n // 检查是否是permanent端口\n const isPermanentSource = sourceId.includes('permanent');\n const isPermanentTarget = targetId.includes('permanent');\n // permanent端口只能作为源,不能作为目标\n if (isPermanentTarget) {\n //console.log('permanent端口不能作为连接目标');\n return false;\n }\n // permanent端口只能连接到testport-copper\n if (isPermanentSource && targetType !== 'modelport-copper' && targetType !== 'testport-copper') {\n return false;\n }\n // connector类型只能作为目标\n if (sourceType === 'connector') {\n //console.log('连接器只能作为连接目标');\n return false;\n }\n // cable类型不能连接同类\n if (sourceType.startsWith('cable-') && targetType.startsWith('cable-')) {\n //console.log('跳线不能连接跳线');\n return false;\n }\n // 铜缆跳线只能连接铜缆端口\n if (sourceType === 'cable-copper-left' && targetType !== 'modelport-copper' && targetType !== 'testport-copper') {\n //console.log('铜缆跳线只能连接铜缆端口');\n return false;\n }\n if (sourceType === 'cable-copper-right' && targetType !== 'modelport-copper' && targetType !== 'testport-copper') {\n //console.log('铜缆跳线只能连接铜缆端口');\n return false;\n }\n // CAM跳线只能连接Channel/PachCode端口\n if (sourceType === 'testport-cam' && targetType !== 'modelport-copper') {\n //console.log('铜缆跳线只能连接铜缆端口');\n return false;\n }\n // ARM跳线只能连接M12 D端口\n if (sourceType === 'testport-arm' && targetType !== 'modelport-m12-d') {\n return false;\n }\n // M12X跳线只能连接M12X\n if (sourceType === 'cable-copper-m12-x-left' && targetType !== 'modelport-m12-x' && targetType !== 'testport-m12-x') {\n //console.log('M12 X-Code跳线只能连接M12 X-Code端口');\n return false;\n }\n if (sourceType === 'cable-copper-m12-x-right' && targetType !== 'modelport-m12-x' && targetType !== 'testport-m12-x') {\n //console.log('M12 X-Code跳线只能连接M12 X-Code端口');\n return false;\n }\n // M12D跳线只能连接M12D\n if (sourceType === 'cable-copper-m12-d-left' && targetType !== 'modelport-m12-d' && targetType !== 'testport-m12-d') {\n //console.log('M12 D-Code跳线只能连接M12 D-Code端口');\n return false;\n }\n if (sourceType === 'cable-copper-m12-d-right' && targetType !== 'modelport-m12-d' && targetType !== 'testport-m12-d') {\n //console.log('M12 D-Code跳线只能连接M12 D-Code端口');\n return false;\n }\n // 铜缆端口不能连接光纤测试端口\n if (sourceType === 'modelport-copper' && targetType === 'testport-fiber') {\n //console.log('铜缆端口不能连接光纤测试端口');\n return false;\n }\n // 光纤跳线只能连接光纤端口或连接器\n if (sourceType === 'cable-fiber-left' && targetType !== 'modelport-fiber' && targetType !== 'connector-left' && targetType !== 'connector-right' && targetType !== 'testport-fiber' && targetType !== 'mpo-fiberbox-lc') {\n //console.log('光纤跳线只能连接光纤端口或连接器');\n return false;\n }\n if (sourceType === 'cable-fiber-right' && targetType !== 'modelport-fiber' && targetType !== 'connector-left' && targetType !== 'connector-right' && targetType !== 'testport-fiber' && targetType !== 'mpo-fiberbox-lc') {\n //console.log('光纤跳线只能连接光纤端口或连接器');\n return false;\n }\n // MPO跳线只能连接MPO端口或连接器\n if (sourceType === 'cable-fiber-mpo-left' && targetType !== 'testport-mpo' && targetType !== 'mpo-fiberbox-mpo') {\n //console.log('光纤跳线只能连接光纤端口或连接器');\n return false;\n }\n if (sourceType === 'cable-fiber-mpo-right' && targetType !== 'testport-mpo' && targetType !== 'mpo-fiberbox-mpo') {\n //console.log('光纤跳线只能连接光纤端口或连接器');\n return false;\n }\n }\n return true;\n }\n }[\"JsPlumbInit.useEffect.initJsPlumb\"]);\n }\n const instance = jsPlumbInstanceRef.current;\n // 移除所有现有端点\n instance.deleteEveryEndpoint();\n // 获取所有需要添加连接点的元素\n const connectorLeftElements = document.querySelectorAll('[jstype=\"connector-left\"]');\n const connectorRightElements = document.querySelectorAll('[jstype=\"connector-right\"]');\n const cableCopperLeftElements = document.querySelectorAll('[jstype=\"cable-copper-left\"]');\n const cableCopperRightElements = document.querySelectorAll('[jstype=\"cable-copper-right\"]');\n const cableM12XLeftElements = document.querySelectorAll('[jstype=\"cable-copper-m12-x-left\"]');\n const cableM12XRightElements = document.querySelectorAll('[jstype=\"cable-copper-m12-x-right\"]');\n const cableM12DLeftElements = document.querySelectorAll('[jstype=\"cable-copper-m12-d-left\"]');\n const cableM12DRightElements = document.querySelectorAll('[jstype=\"cable-copper-m12-d-right\"]');\n const cableFiberLeftElements = document.querySelectorAll('[jstype=\"cable-fiber-left\"]');\n const cableFiberRightElements = document.querySelectorAll('[jstype=\"cable-fiber-right\"]');\n const modelPortCopperElements = document.querySelectorAll('[jstype=\"modelport-copper\"]');\n const modelPortM12DElements = document.querySelectorAll('[jstype=\"modelport-m12-d\"]');\n const modelPortM12XElements = document.querySelectorAll('[jstype=\"modelport-m12-x\"]');\n const modelPortFiberElements = document.querySelectorAll('[jstype=\"modelport-fiber\"]');\n const testCopperPortElements = document.querySelectorAll('[jstype=\"testport-copper\"]');\n const testM12DPortElements = document.querySelectorAll('[jstype=\"testport-m12-d\"]');\n const testM12XPortElements = document.querySelectorAll('[jstype=\"testport-m12-x\"]');\n const testCamPortElements = document.querySelectorAll('[jstype=\"testport-cam\"]');\n const testArmPortElements = document.querySelectorAll('[jstype=\"testport-arm\"]');\n const testFiberPortElements = document.querySelectorAll('[jstype=\"testport-fiber\"]');\n const testTestMPOPortElements = document.querySelectorAll('[jstype=\"testport-mpo\"]');\n const testMPOPortLeftElements = document.querySelectorAll('[jstype=\"cable-fiber-mpo-left\"]');\n const testMPOPortRightElements = document.querySelectorAll('[jstype=\"cable-fiber-mpo-right\"]');\n const testMPOBOXPortElements = document.querySelectorAll('[jstype=\"mpo-fiberbox-mpo\"]');\n const testMPOLCBOXPortElements = document.querySelectorAll('[jstype=\"mpo-fiberbox-lc\"]');\n // 为connector类型元素添加端点(只能作为目标)\n connectorLeftElements.forEach({\n \"JsPlumbInit.useEffect.initJsPlumb\": (element)=>{\n const id = element.getAttribute('id');\n //console.log(`初始化连接器: ${id}`);\n // 添加左侧端点\n instance.addEndpoint(element, {\n anchor: 'Left',\n isSource: false,\n isTarget: true,\n maxConnections: 1,\n connectorStyle: {\n stroke: '#0ff',\n strokeWidth: 2\n },\n connectorHoverStyle: {\n stroke: '#00ff7f',\n strokeWidth: 3\n },\n paintStyle: {\n fill: '#0ff'\n },\n hoverPaintStyle: {\n fill: '#00ff7f'\n }\n });\n }\n }[\"JsPlumbInit.useEffect.initJsPlumb\"]);\n connectorRightElements.forEach({\n \"JsPlumbInit.useEffect.initJsPlumb\": (element)=>{\n const id = element.getAttribute('id');\n //console.log(`初始化连接器: ${id}`);\n // 添加右侧端点\n instance.addEndpoint(element, {\n anchor: 'Right',\n isSource: false,\n isTarget: true,\n maxConnections: 1,\n connectorStyle: {\n stroke: '#0ff',\n strokeWidth: 2\n },\n connectorHoverStyle: {\n stroke: '#00ff7f',\n strokeWidth: 3\n },\n paintStyle: {\n fill: '#0ff'\n },\n hoverPaintStyle: {\n fill: '#00ff7f'\n }\n });\n }\n }[\"JsPlumbInit.useEffect.initJsPlumb\"]);\n // 为铜缆跳线添加端点\n cableCopperLeftElements.forEach({\n \"JsPlumbInit.useEffect.initJsPlumb\": (element)=>{\n const id = element.getAttribute('id');\n //console.log(`初始化铜缆跳线: ${id}`);\n // 添加左侧端点\n instance.addEndpoint(element, {\n anchor: 'Center',\n isSource: true,\n isTarget: true,\n maxConnections: 1,\n connectorStyle: {\n stroke: '#0ff',\n strokeWidth: 2\n },\n connectorHoverStyle: {\n stroke: '#00ff7f',\n strokeWidth: 3\n },\n paintStyle: {\n fill: '#0ff'\n },\n hoverPaintStyle: {\n fill: '#00ff7f'\n }\n });\n }\n }[\"JsPlumbInit.useEffect.initJsPlumb\"]);\n cableCopperRightElements.forEach({\n \"JsPlumbInit.useEffect.initJsPlumb\": (element)=>{\n const id = element.getAttribute('id');\n //console.log(`初始化铜缆跳线: ${id}`);\n // 添加右侧端点\n instance.addEndpoint(element, {\n anchor: 'Center',\n isSource: true,\n isTarget: true,\n maxConnections: 1,\n connectorStyle: {\n stroke: '#0ff',\n strokeWidth: 2\n },\n connectorHoverStyle: {\n stroke: '#00ff7f',\n strokeWidth: 3\n },\n paintStyle: {\n fill: '#0ff'\n },\n hoverPaintStyle: {\n fill: '#00ff7f'\n }\n });\n }\n }[\"JsPlumbInit.useEffect.initJsPlumb\"]);\n // 为M12跳线添加端点\n cableM12XLeftElements.forEach({\n \"JsPlumbInit.useEffect.initJsPlumb\": (element)=>{\n const id = element.getAttribute('id');\n //console.log(`初始化铜缆跳线: ${id}`);\n // 添加左侧端点\n instance.addEndpoint(element, {\n anchor: 'Center',\n isSource: true,\n isTarget: true,\n maxConnections: 1,\n connectorStyle: {\n stroke: '#0ff',\n strokeWidth: 2\n },\n connectorHoverStyle: {\n stroke: '#00ff7f',\n strokeWidth: 3\n },\n paintStyle: {\n fill: '#0ff'\n },\n hoverPaintStyle: {\n fill: '#00ff7f'\n }\n });\n }\n }[\"JsPlumbInit.useEffect.initJsPlumb\"]);\n cableM12XRightElements.forEach({\n \"JsPlumbInit.useEffect.initJsPlumb\": (element)=>{\n const id = element.getAttribute('id');\n //console.log(`初始化铜缆跳线: ${id}`);\n // 添加右侧端点\n instance.addEndpoint(element, {\n anchor: 'Center',\n isSource: true,\n isTarget: true,\n maxConnections: 1,\n connectorStyle: {\n stroke: '#0ff',\n strokeWidth: 2\n },\n connectorHoverStyle: {\n stroke: '#00ff7f',\n strokeWidth: 3\n },\n paintStyle: {\n fill: '#0ff'\n },\n hoverPaintStyle: {\n fill: '#00ff7f'\n }\n });\n }\n }[\"JsPlumbInit.useEffect.initJsPlumb\"]);\n cableM12DLeftElements.forEach({\n \"JsPlumbInit.useEffect.initJsPlumb\": (element)=>{\n const id = element.getAttribute('id');\n //console.log(`初始化铜缆跳线: ${id}`);\n // 添加左侧端点\n instance.addEndpoint(element, {\n anchor: 'Center',\n isSource: true,\n isTarget: true,\n maxConnections: 1,\n connectorStyle: {\n stroke: '#0ff',\n strokeWidth: 2\n },\n connectorHoverStyle: {\n stroke: '#00ff7f',\n strokeWidth: 3\n },\n paintStyle: {\n fill: '#0ff'\n },\n hoverPaintStyle: {\n fill: '#00ff7f'\n }\n });\n }\n }[\"JsPlumbInit.useEffect.initJsPlumb\"]);\n cableM12DRightElements.forEach({\n \"JsPlumbInit.useEffect.initJsPlumb\": (element)=>{\n const id = element.getAttribute('id');\n //console.log(`初始化铜缆跳线: ${id}`);\n // 添加右侧端点\n instance.addEndpoint(element, {\n anchor: 'Center',\n isSource: true,\n isTarget: true,\n maxConnections: 1,\n connectorStyle: {\n stroke: '#0ff',\n strokeWidth: 2\n },\n connectorHoverStyle: {\n stroke: '#00ff7f',\n strokeWidth: 3\n },\n paintStyle: {\n fill: '#0ff'\n },\n hoverPaintStyle: {\n fill: '#00ff7f'\n }\n });\n }\n }[\"JsPlumbInit.useEffect.initJsPlumb\"]);\n // 为光纤跳线添加端点\n cableFiberLeftElements.forEach({\n \"JsPlumbInit.useEffect.initJsPlumb\": (element)=>{\n const id = element.getAttribute('id');\n //console.log(`初始化光纤跳线: ${id}`);\n // 添加左侧端点\n instance.addEndpoint(element, {\n anchor: 'Center',\n isSource: true,\n isTarget: true,\n maxConnections: 1,\n connectorStyle: {\n stroke: '#0ff',\n strokeWidth: 2\n },\n connectorHoverStyle: {\n stroke: '#00ff7f',\n strokeWidth: 3\n },\n paintStyle: {\n fill: '#0ff'\n },\n hoverPaintStyle: {\n fill: '#00ff7f'\n }\n });\n }\n }[\"JsPlumbInit.useEffect.initJsPlumb\"]);\n cableFiberRightElements.forEach({\n \"JsPlumbInit.useEffect.initJsPlumb\": (element)=>{\n const id = element.getAttribute('id');\n //console.log(`初始化光纤跳线: ${id}`);\n // 添加右侧端点\n instance.addEndpoint(element, {\n anchor: 'Center',\n isSource: true,\n isTarget: true,\n maxConnections: 1,\n connectorStyle: {\n stroke: '#0ff',\n strokeWidth: 2\n },\n connectorHoverStyle: {\n stroke: '#00ff7f',\n strokeWidth: 3\n },\n paintStyle: {\n fill: '#0ff'\n },\n hoverPaintStyle: {\n fill: '#00ff7f'\n }\n });\n }\n }[\"JsPlumbInit.useEffect.initJsPlumb\"]);\n // 为铜缆端口添加端点\n modelPortCopperElements.forEach({\n \"JsPlumbInit.useEffect.initJsPlumb\": (element)=>{\n const id = element.getAttribute('id');\n const isPermanent = id.includes('permanent');\n //console.log(`初始化铜缆端口: ${id} (${isPermanent ? '永久链路' : '普通端口'})`);\n instance.addEndpoint(element, {\n anchor: 'Top',\n isSource: isPermanent,\n isTarget: !isPermanent,\n maxConnections: 1,\n connectorStyle: {\n stroke: '#0ff',\n strokeWidth: 2\n },\n connectorHoverStyle: {\n stroke: '#00ff7f',\n strokeWidth: 3\n },\n paintStyle: {\n fill: '#0ff'\n },\n hoverPaintStyle: {\n fill: '#00ff7f'\n }\n });\n }\n }[\"JsPlumbInit.useEffect.initJsPlumb\"]);\n // 为铜缆端口添加端点\n modelPortM12DElements.forEach({\n \"JsPlumbInit.useEffect.initJsPlumb\": (element)=>{\n const id = element.getAttribute('id');\n const isPermanent = id.includes('permanent');\n //console.log(`初始化铜缆端口: ${id} (${isPermanent ? '永久链路' : '普通端口'})`);\n instance.addEndpoint(element, {\n anchor: 'Top',\n isSource: isPermanent,\n isTarget: !isPermanent,\n maxConnections: 1,\n connectorStyle: {\n stroke: '#0ff',\n strokeWidth: 2\n },\n connectorHoverStyle: {\n stroke: '#00ff7f',\n strokeWidth: 3\n },\n paintStyle: {\n fill: '#0ff'\n },\n hoverPaintStyle: {\n fill: '#00ff7f'\n }\n });\n }\n }[\"JsPlumbInit.useEffect.initJsPlumb\"]);\n // 为铜缆端口添加端点\n modelPortM12XElements.forEach({\n \"JsPlumbInit.useEffect.initJsPlumb\": (element)=>{\n const id = element.getAttribute('id');\n const isPermanent = id.includes('permanent');\n //console.log(`初始化铜缆端口: ${id} (${isPermanent ? '永久链路' : '普通端口'})`);\n instance.addEndpoint(element, {\n anchor: 'Top',\n isSource: isPermanent,\n isTarget: !isPermanent,\n maxConnections: 1,\n connectorStyle: {\n stroke: '#0ff',\n strokeWidth: 2\n },\n connectorHoverStyle: {\n stroke: '#00ff7f',\n strokeWidth: 3\n },\n paintStyle: {\n fill: '#0ff'\n },\n hoverPaintStyle: {\n fill: '#00ff7f'\n }\n });\n }\n }[\"JsPlumbInit.useEffect.initJsPlumb\"]);\n // 为光纤端口添加端点\n modelPortFiberElements.forEach({\n \"JsPlumbInit.useEffect.initJsPlumb\": (element)=>{\n const id = element.getAttribute('id');\n // 初始化时设置 fibersource 属性为 false\n element.setAttribute('fibersource', 'false');\n instance.addEndpoint(element, {\n anchor: 'Center',\n isSource: false,\n isTarget: true,\n maxConnections: 1,\n connectorStyle: {\n stroke: '#0ff',\n strokeWidth: 2\n },\n connectorHoverStyle: {\n stroke: '#00ff7f',\n strokeWidth: 3\n },\n paintStyle: {\n fill: '#0ff'\n },\n hoverPaintStyle: {\n fill: '#00ff7f'\n }\n });\n }\n }[\"JsPlumbInit.useEffect.initJsPlumb\"]);\n // 为测试铜端口添加端点\n testCopperPortElements.forEach({\n \"JsPlumbInit.useEffect.initJsPlumb\": (element)=>{\n const id = element.getAttribute('id');\n instance.addEndpoint(element, {\n anchor: 'Center',\n isSource: false,\n isTarget: true,\n maxConnections: 1,\n connectorStyle: {\n stroke: '#0ff',\n strokeWidth: 2\n },\n connectorHoverStyle: {\n stroke: '#00ff7f',\n strokeWidth: 3\n },\n paintStyle: {\n fill: '#00000000'\n },\n hoverPaintStyle: {\n fill: '#00ff7f'\n }\n });\n }\n }[\"JsPlumbInit.useEffect.initJsPlumb\"]);\n // 为测试M12D端口添加端点\n testM12DPortElements.forEach({\n \"JsPlumbInit.useEffect.initJsPlumb\": (element)=>{\n const id = element.getAttribute('id');\n instance.addEndpoint(element, {\n anchor: 'Center',\n isSource: false,\n isTarget: true,\n maxConnections: 1,\n connectorStyle: {\n stroke: '#0ff',\n strokeWidth: 2\n },\n connectorHoverStyle: {\n stroke: '#00ff7f',\n strokeWidth: 3\n },\n paintStyle: {\n fill: '#00000000'\n },\n hoverPaintStyle: {\n fill: '#00ff7f'\n }\n });\n }\n }[\"JsPlumbInit.useEffect.initJsPlumb\"]);\n // 为测试M12X端口添加端点\n testM12XPortElements.forEach({\n \"JsPlumbInit.useEffect.initJsPlumb\": (element)=>{\n const id = element.getAttribute('id');\n instance.addEndpoint(element, {\n anchor: 'Center',\n isSource: false,\n isTarget: true,\n maxConnections: 1,\n connectorStyle: {\n stroke: '#0ff',\n strokeWidth: 2\n },\n connectorHoverStyle: {\n stroke: '#00ff7f',\n strokeWidth: 3\n },\n paintStyle: {\n fill: '#00000000'\n },\n hoverPaintStyle: {\n fill: '#00ff7f'\n }\n });\n }\n }[\"JsPlumbInit.useEffect.initJsPlumb\"]);\n // 为Cam铜端口添加端点\n testCamPortElements.forEach({\n \"JsPlumbInit.useEffect.initJsPlumb\": (element)=>{\n const id = element.getAttribute('id');\n instance.addEndpoint(element, {\n anchor: 'Center',\n isSource: true,\n isTarget: true,\n maxConnections: 1,\n connectorStyle: {\n stroke: '#0ff',\n strokeWidth: 2\n },\n connectorHoverStyle: {\n stroke: '#00ff7f',\n strokeWidth: 3\n },\n paintStyle: {\n fill: '#00000000'\n },\n hoverPaintStyle: {\n fill: '#00ff7f'\n }\n });\n }\n }[\"JsPlumbInit.useEffect.initJsPlumb\"]);\n // 为测试ARM端口添加端点\n testArmPortElements.forEach({\n \"JsPlumbInit.useEffect.initJsPlumb\": (element)=>{\n const id = element.getAttribute('id');\n instance.addEndpoint(element, {\n anchor: 'Center',\n isSource: true,\n isTarget: true,\n maxConnections: 1,\n connectorStyle: {\n stroke: '#0ff',\n strokeWidth: 2\n },\n connectorHoverStyle: {\n stroke: '#00ff7f',\n strokeWidth: 3\n },\n paintStyle: {\n fill: '#00000000'\n },\n hoverPaintStyle: {\n fill: '#00ff7f'\n }\n });\n }\n }[\"JsPlumbInit.useEffect.initJsPlumb\"]);\n // 为测试光端口添加端点\n testFiberPortElements.forEach({\n \"JsPlumbInit.useEffect.initJsPlumb\": (element)=>{\n const id = element.getAttribute('id');\n instance.addEndpoint(element, {\n anchor: 'Center',\n isSource: false,\n isTarget: true,\n maxConnections: 1,\n connectorStyle: {\n stroke: '#0ff',\n strokeWidth: 2\n },\n connectorHoverStyle: {\n stroke: '#00ff7f',\n strokeWidth: 3\n },\n paintStyle: {\n fill: '#00000000'\n },\n hoverPaintStyle: {\n fill: '#80BEBEBE'\n }\n });\n }\n }[\"JsPlumbInit.useEffect.initJsPlumb\"]);\n // 为MPO测试端口添加端点\n testTestMPOPortElements.forEach({\n \"JsPlumbInit.useEffect.initJsPlumb\": (element)=>{\n const id = element.getAttribute('id');\n instance.addEndpoint(element, {\n anchor: 'Center',\n isSource: false,\n isTarget: true,\n maxConnections: 1,\n connectorStyle: {\n stroke: '#0ff',\n strokeWidth: 2\n },\n connectorHoverStyle: {\n stroke: '#00ff7f',\n strokeWidth: 3\n },\n paintStyle: {\n fill: '#00000000'\n },\n hoverPaintStyle: {\n fill: '#80BEBEBE'\n }\n });\n }\n }[\"JsPlumbInit.useEffect.initJsPlumb\"]);\n // 为MPO 跳线添加端口\n testMPOPortLeftElements.forEach({\n \"JsPlumbInit.useEffect.initJsPlumb\": (element)=>{\n const id = element.getAttribute('id');\n //console.log(`初始化光纤跳线: ${id}`);\n // 添加左侧端点\n instance.addEndpoint(element, {\n anchor: 'BottomLeft',\n isSource: true,\n isTarget: true,\n maxConnections: 1,\n connectorStyle: {\n stroke: '#0ff',\n strokeWidth: 2\n },\n connectorHoverStyle: {\n stroke: '#00ff7f',\n strokeWidth: 3\n },\n paintStyle: {\n fill: '#0ff'\n },\n hoverPaintStyle: {\n fill: '#00ff7f'\n }\n });\n }\n }[\"JsPlumbInit.useEffect.initJsPlumb\"]);\n testMPOPortRightElements.forEach({\n \"JsPlumbInit.useEffect.initJsPlumb\": (element)=>{\n const id = element.getAttribute('id');\n //console.log(`初始化光纤跳线: ${id}`);\n // 添加右侧端点\n instance.addEndpoint(element, {\n anchor: 'TopRight',\n isSource: true,\n isTarget: true,\n maxConnections: 1,\n connectorStyle: {\n stroke: '#0ff',\n strokeWidth: 2\n },\n connectorHoverStyle: {\n stroke: '#00ff7f',\n strokeWidth: 3\n },\n paintStyle: {\n fill: '#0ff'\n },\n hoverPaintStyle: {\n fill: '#00ff7f'\n }\n });\n }\n }[\"JsPlumbInit.useEffect.initJsPlumb\"]);\n // 为MPO BOX端口添加端点\n testMPOBOXPortElements.forEach({\n \"JsPlumbInit.useEffect.initJsPlumb\": (element)=>{\n const id = element.getAttribute('id');\n //console.log(`初始化光纤跳线: ${id}`);\n // 添加顶部居中端点\n instance.addEndpoint(element, {\n anchor: 'Center',\n isSource: false,\n isTarget: true,\n maxConnections: 1,\n connectorStyle: {\n stroke: '#0ff',\n strokeWidth: 2\n },\n connectorHoverStyle: {\n stroke: '#00ff7f',\n strokeWidth: 3\n },\n paintStyle: {\n fill: '#00000000'\n },\n hoverPaintStyle: {\n fill: '#80BEBEBE'\n }\n });\n }\n }[\"JsPlumbInit.useEffect.initJsPlumb\"]);\n testMPOLCBOXPortElements.forEach({\n \"JsPlumbInit.useEffect.initJsPlumb\": (element)=>{\n const id = element.getAttribute('id');\n instance.addEndpoint(element, {\n anchor: 'Center',\n isSource: false,\n isTarget: true,\n maxConnections: 1,\n connectorStyle: {\n stroke: '#0ff',\n strokeWidth: 2\n },\n connectorHoverStyle: {\n stroke: '#00ff7f',\n strokeWidth: 3\n },\n paintStyle: {\n fill: '#00000000'\n },\n hoverPaintStyle: {\n fill: '#80BEBEBE'\n }\n });\n }\n }[\"JsPlumbInit.useEffect.initJsPlumb\"]);\n // 添加连接事件监听\n instance.bind('connection', {\n \"JsPlumbInit.useEffect.initJsPlumb\": (info)=>{\n const sourceId = info.sourceId;\n const targetId = info.targetId;\n // 先移除源端点的所有历史连接\n instance.getAllConnections().forEach({\n \"JsPlumbInit.useEffect.initJsPlumb\": (conn)=>{\n if (conn.sourceId === sourceId) {\n removeConnectionPath(conn.sourceId, conn.targetId);\n }\n }\n }[\"JsPlumbInit.useEffect.initJsPlumb\"]);\n // 添加新的连接路径\n addConnectionPath({\n source: sourceId,\n target: targetId,\n connection: info.connection\n });\n }\n }[\"JsPlumbInit.useEffect.initJsPlumb\"]);\n // 清理端口连接状态的函数\n const cleanupPortStatus = {\n \"JsPlumbInit.useEffect.initJsPlumb.cleanupPortStatus\": (elementId, retryCount = 3)=>{\n const cleanupAttempt = {\n \"JsPlumbInit.useEffect.initJsPlumb.cleanupPortStatus.cleanupAttempt\": (attemptCount)=>{\n const element = document.getElementById(elementId);\n if (element && element.classList.contains('jtk-connected')) {\n element.classList.remove('jtk-connected');\n // 再次检查以确保状态被清理\n if (element.classList.contains('jtk-connected') && attemptCount > 0) {\n setTimeout({\n \"JsPlumbInit.useEffect.initJsPlumb.cleanupPortStatus.cleanupAttempt\": ()=>cleanupAttempt(attemptCount - 1)\n }[\"JsPlumbInit.useEffect.initJsPlumb.cleanupPortStatus.cleanupAttempt\"], 50);\n }\n }\n }\n }[\"JsPlumbInit.useEffect.initJsPlumb.cleanupPortStatus.cleanupAttempt\"];\n // 立即执行第一次清理\n cleanupAttempt(retryCount);\n // 延迟100ms后再次检查,以处理快速操作的情况\n setTimeout({\n \"JsPlumbInit.useEffect.initJsPlumb.cleanupPortStatus\": ()=>cleanupAttempt(retryCount)\n }[\"JsPlumbInit.useEffect.initJsPlumb.cleanupPortStatus\"], 100);\n }\n }[\"JsPlumbInit.useEffect.initJsPlumb.cleanupPortStatus\"];\n // 添加断开连接事件监听\n instance.bind('connectionDetached', {\n \"JsPlumbInit.useEffect.initJsPlumb\": (info)=>{\n const sourceId = info.sourceId;\n const targetId = info.targetId;\n // 移除连接路径\n removeConnectionPath(sourceId, targetId);\n // 清理源端口和目标端口的状态\n cleanupPortStatus(sourceId);\n cleanupPortStatus(targetId);\n }\n }[\"JsPlumbInit.useEffect.initJsPlumb\"]);\n // 添加连接移动事件监听\n instance.bind('connectionMoved', {\n \"JsPlumbInit.useEffect.initJsPlumb\": (info)=>{\n // 移除原始连接\n removeConnectionPath(info.originalSourceId, info.originalTargetId);\n // 清理原始源端口和目标端口的状态\n cleanupPortStatus(info.originalSourceId);\n cleanupPortStatus(info.originalTargetId);\n // 添加新连接\n addConnectionPath({\n source: info.newSourceId,\n target: info.newTargetId,\n connection: info.connection\n });\n }\n }[\"JsPlumbInit.useEffect.initJsPlumb\"]);\n // 重绘所有连接\n instance.repaintEverything();\n } catch (error) {\n console.error('Failed to initialize jsPlumb:', error);\n }\n }\n }[\"JsPlumbInit.useEffect.initJsPlumb\"];\n initJsPlumb();\n // 清理函数\n return ({\n \"JsPlumbInit.useEffect\": ()=>{\n if (jsPlumbInstanceRef.current) {\n // 清空连接路径\n clearConnectionPaths();\n jsPlumbInstanceRef.current.reset();\n jsPlumbInstanceRef.current = null;\n }\n }\n })[\"JsPlumbInit.useEffect\"];\n }\n }[\"JsPlumbInit.useEffect\"], [\n connectionItems,\n mainUnitModules,\n remoteUnitModules,\n mainUnitAdapter,\n remoteUnitAdapter,\n addConnectionPath,\n removeConnectionPath,\n clearConnectionPaths,\n faultScenarios,\n WorldSkillScenarios\n ]);\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n ref: containerRef,\n className: \"fixed inset-0 z-[1000] pointer-events-none\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/JsPlumbInit.js\",\n lineNumber: 741,\n columnNumber: 5\n }, this);\n}\n\n__webpack_async_result__();\n} catch(e) { __webpack_async_result__(e); } });//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHBhZ2VzLWRpci1ub2RlKS8uL3NyYy9jb21wb25lbnRzL0pzUGx1bWJJbml0LmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFBMEM7QUFDTztBQUVsQyxTQUFTRztJQUN0QixNQUFNQyxlQUFlSCw2Q0FBTUEsQ0FBQztJQUM1QixNQUFNSSxxQkFBcUJKLDZDQUFNQSxDQUFDO0lBQ2xDLE1BQU0sRUFDSkssZUFBZSxFQUNmQyxlQUFlLEVBQ2ZDLGlCQUFpQixFQUNqQkMsZUFBZSxFQUNmQyxpQkFBaUIsRUFDakJDLGlCQUFpQixFQUNqQkMsb0JBQW9CLEVBQ3BCQyxvQkFBb0IsRUFDcEJDLGNBQWMsRUFDZEMsbUJBQW1CLEVBQ3BCLEdBQUdiLDhEQUFjQTtJQUVsQkYsZ0RBQVNBO2lDQUFDO1lBQ1IsY0FBYztZQUNkLElBQUksSUFBNkIsRUFBRTtZQUVuQyxjQUFjO1lBQ2QsTUFBTWdCO3FEQUFjO29CQUNsQixJQUFJO3dCQUNGLE1BQU0sRUFBRUMsT0FBTyxFQUFFLEdBQUcsTUFBTSxvSEFBaUI7d0JBRTNDLElBQUksQ0FBQ2IsYUFBYWMsT0FBTyxFQUFFO3dCQUUzQixlQUFlO3dCQUNmLElBQUksQ0FBQ2IsbUJBQW1CYSxPQUFPLEVBQUU7NEJBQy9CYixtQkFBbUJhLE9BQU8sR0FBR0QsUUFBUUUsV0FBVyxDQUFDO2dDQUMvQ0MsV0FBV2hCLGFBQWFjLE9BQU87Z0NBQy9CLFVBQVU7Z0NBQ1ZHLFdBQVc7b0NBQUM7b0NBQVU7d0NBQUVDLFdBQVc7b0NBQUc7aUNBQUU7Z0NBQ3hDLFNBQVM7Z0NBQ1RDLFVBQVU7b0NBQUM7b0NBQU87d0NBQUVDLFFBQVE7b0NBQUc7aUNBQUU7Z0NBQ2pDLFFBQVE7Z0NBQ1JDLFlBQVk7b0NBQ1ZDLFFBQVE7b0NBQ1JDLGFBQWE7Z0NBQ2Y7Z0NBQ0EsT0FBTztnQ0FDUEMsZUFBZTtvQ0FDYkMsTUFBTTtvQ0FDTkwsUUFBUTtnQ0FDVjtnQ0FDQSxTQUFTO2dDQUNUTSxpQkFBaUI7b0NBQ2ZKLFFBQVE7b0NBQ1JDLGFBQWE7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O1FBQWlCQztRQUFtQkM7UUFBbUJDO1FBQXNCQztRQUFzQkM7UUFBZ0JDO0tBQW9CO0lBR2hNLHFCQUNFLDhEQUFDaUc7UUFDQ0MsS0FBSzdHO1FBQ0w4RyxXQUFVOzs7Ozs7QUFHaEIiLCJzb3VyY2VzIjpbIi9vcHQvZGV2L2VzdC1kc3gvc3JjL2NvbXBvbmVudHMvSnNQbHVtYkluaXQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdXNlRWZmZWN0LCB1c2VSZWYgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgdXNlRGV2aWNlU3RvcmUgZnJvbSAnQC9zdG9yZS9kZXZpY2VTdG9yZSc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEpzUGx1bWJJbml0KCkge1xuICBjb25zdCBjb250YWluZXJSZWYgPSB1c2VSZWYobnVsbCk7XG4gIGNvbnN0IGpzUGx1bWJJbnN0YW5jZVJlZiA9IHVzZVJlZihudWxsKTtcbiAgY29uc3Qge1xuICAgIGNvbm5lY3Rpb25JdGVtcyxcbiAgICBtYWluVW5pdE1vZHVsZXMsXG4gICAgcmVtb3RlVW5pdE1vZHVsZXMsXG4gICAgbWFpblVuaXRBZGFwdGVyLFxuICAgIHJlbW90ZVVuaXRBZGFwdGVyLFxuICAgIGFkZENvbm5lY3Rpb25QYXRoLFxuICAgIHJlbW92ZUNvbm5lY3Rpb25QYXRoLFxuICAgIGNsZWFyQ29ubmVjdGlvblBhdGhzLFxuICAgIGZhdWx0U2NlbmFyaW9zLFxuICAgIFdvcmxkU2tpbGxTY2VuYXJpb3NcbiAgfSA9IHVzZURldmljZVN0b3JlKCk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAvLyDnoa7kv53lnKjlrqLmiLfnq6/njq/looPkuK3ov5DooYxcbiAgICBpZiAodHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCcpIHJldHVybjtcblxuICAgIC8vIOWKqOaAgeWvvOWFpWpzcGx1bWJcbiAgICBjb25zdCBpbml0SnNQbHVtYiA9IGFzeW5jICgpID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHsganNQbHVtYiB9ID0gYXdhaXQgaW1wb3J0KCdqc3BsdW1iJyk7XG4gICAgICAgIFxuICAgICAgICBpZiAoIWNvbnRhaW5lclJlZi5jdXJyZW50KSByZXR1cm47XG5cbiAgICAgICAgLy8g5Yid5aeL5YyWanNQbHVtYuWunuS+i1xuICAgICAgICBpZiAoIWpzUGx1bWJJbnN0YW5jZVJlZi5jdXJyZW50KSB7XG4gICAgICAgICAganNQbHVtYkluc3RhbmNlUmVmLmN1cnJlbnQgPSBqc1BsdW1iLmdldEluc3RhbmNlKHtcbiAgICAgICAgICAgIENvbnRhaW5lcjogY29udGFpbmVyUmVmLmN1cnJlbnQsXG4gICAgICAgICAgICAvLyDov57mjqXnur/pu5jorqTphY3nva5cbiAgICAgICAgICAgIENvbm5lY3RvcjogWydCZXppZXInLCB7IGN1cnZpbmVzczogNTAgfV0sXG4gICAgICAgICAgICAvLyDnq6/ngrnpu5jorqTphY3nva5cbiAgICAgICAgICAgIEVuZHBvaW50OiBbJ0RvdCcsIHsgcmFkaXVzOiAxMCB9XSxcbiAgICAgICAgICAgIC8vIOi/nuaOpee6v+agt+W8j1xuICAgICAgICAgICAgUGFpbnRTdHlsZToge1xuICAgICAgICAgICAgICBzdHJva2U6ICcjMGZmJyxcbiAgICAgICAgICAgICAgc3Ryb2tlV2lkdGg6IDJcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAvLyDnq6/ngrnmoLflvI9cbiAgICAgICAgICAgIEVuZHBvaW50U3R5bGU6IHsgXG4gICAgICAgICAgICAgIGZpbGw6ICcjMGZmJyxcbiAgICAgICAgICAgICAgcmFkaXVzOiAxNVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIC8vIOm8oOagh+aCrOWBnOagt+W8j1xuICAgICAgICAgICAgSG92ZXJQYWludFN0eWxlOiB7XG4gICAgICAgICAgICAgIHN0cm9rZTogJyMwMGZmN2YnLFxuICAgICAgICAgICAgICBzdHJva2VXaWR0aDogM1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIEVuZHBvaW50SG92ZXJTdHlsZToge1xuICAgICAgICAgICAgICBmaWxsOiAnIzAwZmY3ZidcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIC8vIOa3u+WKoOi/nuaOpeW7uueri+S6i+S7tuWkhOeQhlxuICAgICAgICAgIGpzUGx1bWJJbnN0YW5jZVJlZi5jdXJyZW50LmJpbmQoJ2Nvbm5lY3Rpb24nLCAoaW5mbykgPT4ge1xuICAgICAgICAgICAgY29uc3QgdGFyZ2V0RWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGluZm8udGFyZ2V0SWQpO1xuICAgICAgICAgICAgaWYgKHRhcmdldEVsZW1lbnQgJiYgdGFyZ2V0RWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2pzdHlwZScpID09PSAnbW9kZWxwb3J0LWZpYmVyJykge1xuICAgICAgICAgICAgICAvLyDlpoLmnpzlvZPliY3nirbmgIHmmK8gZmFsc2XvvIzor7TmmI7mmK/mlrDlu7rnq4vnmoTov57mjqVcbiAgICAgICAgICAgICAgaWYgKHRhcmdldEVsZW1lbnQuZ2V0QXR0cmlidXRlKCdmaWJlcnNvdXJjZScpID09PSAnZmFsc2UnKSB7XG4gICAgICAgICAgICAgICAgdGFyZ2V0RWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2ZpYmVyc291cmNlJywgJ3RydWUnKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgLy8g5re75Yqg6L+e5o6l5pat5byA5LqL5Lu25aSE55CGXG4gICAgICAgICAganNQbHVtYkluc3RhbmNlUmVmLmN1cnJlbnQuYmluZCgnY29ubmVjdGlvbkRldGFjaGVkJywgKGluZm8pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHRhcmdldEVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpbmZvLnRhcmdldElkKTtcbiAgICAgICAgICAgIGlmICh0YXJnZXRFbGVtZW50ICYmIHRhcmdldEVsZW1lbnQuZ2V0QXR0cmlidXRlKCdqc3R5cGUnKSA9PT0gJ21vZGVscG9ydC1maWJlcicpIHtcbiAgICAgICAgICAgICAgdGFyZ2V0RWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2ZpYmVyc291cmNlJywgJ2ZhbHNlJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICAvLyDmt7vliqDov57mjqXmi5bliqjlvIDlp4vkuovku7blpITnkIZcbiAgICAgICAgICBqc1BsdW1iSW5zdGFuY2VSZWYuY3VycmVudC5iaW5kKCdjb25uZWN0aW9uRHJhZycsIChpbmZvKSA9PiB7XG5cbiAgICAgICAgICAgICAgY29uc3QgdGFyZ2V0RWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGluZm8udGFyZ2V0SWQpO1xuICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgaWYgKHRhcmdldEVsZW1lbnQgJiYgdGFyZ2V0RWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2pzdHlwZScpID09PSAnbW9kZWxwb3J0LWZpYmVyJykge1xuICAgICAgICAgICAgICAgIC8vIOWcqOaLluWKqOW8gOWni+aXtuWwseWwhueKtuaAgeiuvue9ruS4uiBhYm5vcm1hbFxuICAgICAgICAgICAgICAgIHRhcmdldEVsZW1lbnQuc2V0QXR0cmlidXRlKCdmaWJlcnNvdXJjZScsICdhYm5vcm1hbCcpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICAvLyDmt7vliqBiZWZvcmVEcm9w5LqL5Lu25aSE55CGXG4gICAgICAgICAganNQbHVtYkluc3RhbmNlUmVmLmN1cnJlbnQuYmluZCgnYmVmb3JlRHJvcCcsIChpbmZvKSA9PiB7XG4gICAgICAgICAgICAvLyDojrflj5bmupDlkoznm67moIflhYPntKBcbiAgICAgICAgICAgIGNvbnN0IHNvdXJjZUlkID0gaW5mby5zb3VyY2VJZDtcbiAgICAgICAgICAgIGNvbnN0IHRhcmdldElkID0gaW5mby50YXJnZXRJZDtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgLy8g5aaC5p6c5rqQ5ZKM55uu5qCH5piv5ZCM5LiA5Liq5YWD57Sg77yM6L+U5ZueZmFsc2XpmLvmraLov57mjqVcbiAgICAgICAgICAgIGlmIChzb3VyY2VJZCA9PT0gdGFyZ2V0SWQpIHtcbiAgICAgICAgICAgICAgLy9jb25zb2xlLmxvZygn5LiN5YWB6K646Ieq6L+e5o6lJyk7XG4gICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8g6I635Y+W5rqQ5ZKM55uu5qCH5YWD57Sg55qEaWTlkoxqc3R5cGXlsZ7mgKdcbiAgICAgICAgICAgIGNvbnN0IHNvdXJjZUVsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGBbaWQ9XCIke3NvdXJjZUlkfVwiXWApO1xuICAgICAgICAgICAgY29uc3QgdGFyZ2V0RWxlbWVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYFtpZD1cIiR7dGFyZ2V0SWR9XCJdYCk7XG5cbiAgICAgICAgICAgIGlmIChzb3VyY2VFbGVtZW50ICYmIHRhcmdldEVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgY29uc3Qgc291cmNlVHlwZSA9IHNvdXJjZUVsZW1lbnQuZ2V0QXR0cmlidXRlKCdqc3R5cGUnKTtcbiAgICAgICAgICAgICAgY29uc3QgdGFyZ2V0VHlwZSA9IHRhcmdldEVsZW1lbnQuZ2V0QXR0cmlidXRlKCdqc3R5cGUnKTtcblxuICAgICAgICAgICAgICAvLyDmo4Dmn6XmmK/lkKbmmK9wZXJtYW5lbnTnq6/lj6NcbiAgICAgICAgICAgICAgY29uc3QgaXNQZXJtYW5lbnRTb3VyY2UgPSBzb3VyY2VJZC5pbmNsdWRlcygncGVybWFuZW50Jyk7XG4gICAgICAgICAgICAgIGNvbnN0IGlzUGVybWFuZW50VGFyZ2V0ID0gdGFyZ2V0SWQuaW5jbHVkZXMoJ3Blcm1hbmVudCcpO1xuXG4gICAgICAgICAgICAgIC8vIHBlcm1hbmVudOerr+WPo+WPquiDveS9nOS4uua6kO+8jOS4jeiDveS9nOS4uuebruagh1xuICAgICAgICAgICAgICBpZiAoaXNQZXJtYW5lbnRUYXJnZXQpIHtcbiAgICAgICAgICAgICAgICAvL2NvbnNvbGUubG9nKCdwZXJtYW5lbnTnq6/lj6PkuI3og73kvZzkuLrov57mjqXnm67moIcnKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgLy8gcGVybWFuZW5056uv5Y+j5Y+q6IO96L+e5o6l5YiwdGVzdHBvcnQtY29wcGVyXG4gICAgICAgICAgICAgIGlmIChpc1Blcm1hbmVudFNvdXJjZSAmJiB0YXJnZXRUeXBlICE9PSAnbW9kZWxwb3J0LWNvcHBlcicgJiYgdGFyZ2V0VHlwZSAhPT0gJ3Rlc3Rwb3J0LWNvcHBlcicpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgIC8vIGNvbm5lY3Rvcuexu+Wei+WPquiDveS9nOS4uuebruagh1xuICAgICAgICAgICAgICBpZiAoc291cmNlVHlwZSA9PT0gJ2Nvbm5lY3RvcicpIHtcbiAgICAgICAgICAgICAgICAvL2NvbnNvbGUubG9nKCfov57mjqXlmajlj6rog73kvZzkuLrov57mjqXnm67moIcnKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAvLyBjYWJsZeexu+Wei+S4jeiDvei/nuaOpeWQjOexu1xuICAgICAgICAgICAgICBpZiAoc291cmNlVHlwZS5zdGFydHNXaXRoKCdjYWJsZS0nKSAmJiB0YXJnZXRUeXBlLnN0YXJ0c1dpdGgoJ2NhYmxlLScpKSB7XG4gICAgICAgICAgICAgICAgLy9jb25zb2xlLmxvZygn6Lez57q/5LiN6IO96L+e5o6l6Lez57q/Jyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgLy8g6ZOc57yG6Lez57q/5Y+q6IO96L+e5o6l6ZOc57yG56uv5Y+jXG4gICAgICAgICAgICAgIGlmIChzb3VyY2VUeXBlID09PSAnY2FibGUtY29wcGVyLWxlZnQnICYmIHRhcmdldFR5cGUgIT09ICdtb2RlbHBvcnQtY29wcGVyJyAmJiB0YXJnZXRUeXBlICE9PSAndGVzdHBvcnQtY29wcGVyJykge1xuICAgICAgICAgICAgICAgIC8vY29uc29sZS5sb2coJ+mTnOe8hui3s+e6v+WPquiDvei/nuaOpemTnOe8huerr+WPoycpO1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZiAoc291cmNlVHlwZSA9PT0gJ2NhYmxlLWNvcHBlci1yaWdodCcgJiYgdGFyZ2V0VHlwZSAhPT0gJ21vZGVscG9ydC1jb3BwZXInICYmIHRhcmdldFR5cGUgIT09ICd0ZXN0cG9ydC1jb3BwZXInKSB7XG4gICAgICAgICAgICAgICAgLy9jb25zb2xlLmxvZygn6ZOc57yG6Lez57q/5Y+q6IO96L+e5o6l6ZOc57yG56uv5Y+jJyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgLy8gQ0FN6Lez57q/5Y+q6IO96L+e5o6lQ2hhbm5lbC9QYWNoQ29kZeerr+WPo1xuICAgICAgICAgICAgICBpZiAoc291cmNlVHlwZSA9PT0gJ3Rlc3Rwb3J0LWNhbScgJiYgdGFyZ2V0VHlwZSAhPT0gJ21vZGVscG9ydC1jb3BwZXInKSB7XG4gICAgICAgICAgICAgICAgLy9jb25zb2xlLmxvZygn6ZOc57yG6Lez57q/5Y+q6IO96L+e5o6l6ZOc57yG56uv5Y+jJyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIC8vIEFSTei3s+e6v+WPquiDvei/nuaOpU0xMiBE56uv5Y+jXG4gICAgICAgICAgICAgIGlmIChzb3VyY2VUeXBlID09PSAndGVzdHBvcnQtYXJtJyAmJiB0YXJnZXRUeXBlICE9PSAnbW9kZWxwb3J0LW0xMi1kJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAvLyBNMTJY6Lez57q/5Y+q6IO96L+e5o6lTTEyWFxuICAgICAgICAgICAgICBpZiAoc291cmNlVHlwZSA9PT0gJ2NhYmxlLWNvcHBlci1tMTIteC1sZWZ0JyAmJiB0YXJnZXRUeXBlICE9PSAnbW9kZWxwb3J0LW0xMi14JyAmJiB0YXJnZXRUeXBlICE9PSAndGVzdHBvcnQtbTEyLXgnKSB7XG4gICAgICAgICAgICAgICAgLy9jb25zb2xlLmxvZygnTTEyIFgtQ29kZei3s+e6v+WPquiDvei/nuaOpU0xMiBYLUNvZGXnq6/lj6MnKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaWYgKHNvdXJjZVR5cGUgPT09ICdjYWJsZS1jb3BwZXItbTEyLXgtcmlnaHQnICYmIHRhcmdldFR5cGUgIT09ICdtb2RlbHBvcnQtbTEyLXgnICYmIHRhcmdldFR5cGUgIT09ICd0ZXN0cG9ydC1tMTIteCcpIHtcbiAgICAgICAgICAgICAgICAvL2NvbnNvbGUubG9nKCdNMTIgWC1Db2Rl6Lez57q/5Y+q6IO96L+e5o6lTTEyIFgtQ29kZeerr+WPoycpO1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAvLyBNMTJE6Lez57q/5Y+q6IO96L+e5o6lTTEyRFxuICAgICAgICAgICAgICBpZiAoc291cmNlVHlwZSA9PT0gJ2NhYmxlLWNvcHBlci1tMTItZC1sZWZ0JyAmJiB0YXJnZXRUeXBlICE9PSAnbW9kZWxwb3J0LW0xMi1kJyAmJiB0YXJnZXRUeXBlICE9PSAndGVzdHBvcnQtbTEyLWQnKSB7XG4gICAgICAgICAgICAgICAgLy9jb25zb2xlLmxvZygnTTEyIEQtQ29kZei3s+e6v+WPquiDvei/nuaOpU0xMiBELUNvZGXnq6/lj6MnKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaWYgKHNvdXJjZVR5cGUgPT09ICdjYWJsZS1jb3BwZXItbTEyLWQtcmlnaHQnICYmIHRhcmdldFR5cGUgIT09ICdtb2RlbHBvcnQtbTEyLWQnICYmIHRhcmdldFR5cGUgIT09ICd0ZXN0cG9ydC1tMTItZCcpIHtcbiAgICAgICAgICAgICAgICAvL2NvbnNvbGUubG9nKCdNMTIgRC1Db2Rl6Lez57q/5Y+q6IO96L+e5o6lTTEyIEQtQ29kZeerr+WPoycpO1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAvLyDpk5znvIbnq6/lj6PkuI3og73ov57mjqXlhYnnuqTmtYvor5Xnq6/lj6NcbiAgICAgICAgICAgICAgaWYgKHNvdXJjZVR5cGUgPT09ICdtb2RlbHBvcnQtY29wcGVyJyAmJiB0YXJnZXRUeXBlID09PSAndGVzdHBvcnQtZmliZXInKSB7XG4gICAgICAgICAgICAgICAgLy9jb25zb2xlLmxvZygn6ZOc57yG56uv5Y+j5LiN6IO96L+e5o6l5YWJ57qk5rWL6K+V56uv5Y+jJyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgLy8g5YWJ57qk6Lez57q/5Y+q6IO96L+e5o6l5YWJ57qk56uv5Y+j5oiW6L+e5o6l5ZmoXG4gICAgICAgICAgICAgIGlmIChzb3VyY2VUeXBlID09PSAnY2FibGUtZmliZXItbGVmdCcgJiYgdGFyZ2V0VHlwZSAhPT0gJ21vZGVscG9ydC1maWJlcicgJiYgdGFyZ2V0VHlwZSAhPT0gJ2Nvbm5lY3Rvci1sZWZ0JyAmJiB0YXJnZXRUeXBlICE9PSAnY29ubmVjdG9yLXJpZ2h0JyAmJiB0YXJnZXRUeXBlICE9PSAndGVzdHBvcnQtZmliZXInICYmIHRhcmdldFR5cGUgIT09ICdtcG8tZmliZXJib3gtbGMnKSB7XG4gICAgICAgICAgICAgICAgLy9jb25zb2xlLmxvZygn5YWJ57qk6Lez57q/5Y+q6IO96L+e5o6l5YWJ57qk56uv5Y+j5oiW6L+e5o6l5ZmoJyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmIChzb3VyY2VUeXBlID09PSAnY2FibGUtZmliZXItcmlnaHQnICYmIHRhcmdldFR5cGUgIT09ICdtb2RlbHBvcnQtZmliZXInICYmIHRhcmdldFR5cGUgIT09ICdjb25uZWN0b3ItbGVmdCcgJiYgdGFyZ2V0VHlwZSAhPT0gJ2Nvbm5lY3Rvci1yaWdodCcgJiYgdGFyZ2V0VHlwZSAhPT0gJ3Rlc3Rwb3J0LWZpYmVyJyAmJiB0YXJnZXRUeXBlICE9PSAnbXBvLWZpYmVyYm94LWxjJykge1xuICAgICAgICAgICAgICAgIC8vY29uc29sZS5sb2coJ+WFiee6pOi3s+e6v+WPquiDvei/nuaOpeWFiee6pOerr+WPo+aIlui/nuaOpeWZqCcpO1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIC8vIE1QT+i3s+e6v+WPquiDvei/nuaOpU1QT+err+WPo+aIlui/nuaOpeWZqFxuICAgICAgICAgICAgICBpZiAoc291cmNlVHlwZSA9PT0gJ2NhYmxlLWZpYmVyLW1wby1sZWZ0JyAmJiB0YXJnZXRUeXBlICE9PSAndGVzdHBvcnQtbXBvJyAmJiB0YXJnZXRUeXBlICE9PSAnbXBvLWZpYmVyYm94LW1wbycpIHtcbiAgICAgICAgICAgICAgICAvL2NvbnNvbGUubG9nKCflhYnnuqTot7Pnur/lj6rog73ov57mjqXlhYnnuqTnq6/lj6PmiJbov57mjqXlmagnKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaWYgKHNvdXJjZVR5cGUgPT09ICdjYWJsZS1maWJlci1tcG8tcmlnaHQnICYmIHRhcmdldFR5cGUgIT09ICd0ZXN0cG9ydC1tcG8nJiYgdGFyZ2V0VHlwZSAhPT0gJ21wby1maWJlcmJveC1tcG8nKSB7XG4gICAgICAgICAgICAgICAgLy9jb25zb2xlLmxvZygn5YWJ57qk6Lez57q/5Y+q6IO96L+e5o6l5YWJ57qk56uv5Y+j5oiW6L+e5o6l5ZmoJyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgaW5zdGFuY2UgPSBqc1BsdW1iSW5zdGFuY2VSZWYuY3VycmVudDtcblxuICAgICAgICAvLyDnp7vpmaTmiYDmnInnjrDmnInnq6/ngrlcbiAgICAgICAgaW5zdGFuY2UuZGVsZXRlRXZlcnlFbmRwb2ludCgpO1xuXG4gICAgICAgIC8vIOiOt+WPluaJgOaciemcgOimgea3u+WKoOi/nuaOpeeCueeahOWFg+e0oFxuICAgICAgICBjb25zdCBjb25uZWN0b3JMZWZ0RWxlbWVudHMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdbanN0eXBlPVwiY29ubmVjdG9yLWxlZnRcIl0nKTtcbiAgICAgICAgY29uc3QgY29ubmVjdG9yUmlnaHRFbGVtZW50cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1tqc3R5cGU9XCJjb25uZWN0b3ItcmlnaHRcIl0nKTtcblxuXG4gICAgICAgIGNvbnN0IGNhYmxlQ29wcGVyTGVmdEVsZW1lbnRzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnW2pzdHlwZT1cImNhYmxlLWNvcHBlci1sZWZ0XCJdJyk7XG4gICAgICAgIGNvbnN0IGNhYmxlQ29wcGVyUmlnaHRFbGVtZW50cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1tqc3R5cGU9XCJjYWJsZS1jb3BwZXItcmlnaHRcIl0nKTtcbiAgICAgICAgXG4gICAgICAgIGNvbnN0IGNhYmxlTTEyWExlZnRFbGVtZW50cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1tqc3R5cGU9XCJjYWJsZS1jb3BwZXItbTEyLXgtbGVmdFwiXScpO1xuICAgICAgICBjb25zdCBjYWJsZU0xMlhSaWdodEVsZW1lbnRzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnW2pzdHlwZT1cImNhYmxlLWNvcHBlci1tMTIteC1yaWdodFwiXScpO1xuICAgICAgICBjb25zdCBjYWJsZU0xMkRMZWZ0RWxlbWVudHMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdbanN0eXBlPVwiY2FibGUtY29wcGVyLW0xMi1kLWxlZnRcIl0nKTtcbiAgICAgICAgY29uc3QgY2FibGVNMTJEUmlnaHRFbGVtZW50cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1tqc3R5cGU9XCJjYWJsZS1jb3BwZXItbTEyLWQtcmlnaHRcIl0nKTtcblxuICAgICAgICBjb25zdCBjYWJsZUZpYmVyTGVmdEVsZW1lbnRzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnW2pzdHlwZT1cImNhYmxlLWZpYmVyLWxlZnRcIl0nKTtcbiAgICAgICAgY29uc3QgY2FibGVGaWJlclJpZ2h0RWxlbWVudHMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdbanN0eXBlPVwiY2FibGUtZmliZXItcmlnaHRcIl0nKTtcblxuICAgICAgICBjb25zdCBtb2RlbFBvcnRDb3BwZXJFbGVtZW50cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1tqc3R5cGU9XCJtb2RlbHBvcnQtY29wcGVyXCJdJyk7XG4gICAgICAgIGNvbnN0IG1vZGVsUG9ydE0xMkRFbGVtZW50cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1tqc3R5cGU9XCJtb2RlbHBvcnQtbTEyLWRcIl0nKTtcbiAgICAgICAgY29uc3QgbW9kZWxQb3J0TTEyWEVsZW1lbnRzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnW2pzdHlwZT1cIm1vZGVscG9ydC1tMTIteFwiXScpO1xuICAgICAgICBjb25zdCBtb2RlbFBvcnRGaWJlckVsZW1lbnRzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnW2pzdHlwZT1cIm1vZGVscG9ydC1maWJlclwiXScpO1xuICAgICAgICBcbiAgICAgICAgY29uc3QgdGVzdENvcHBlclBvcnRFbGVtZW50cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1tqc3R5cGU9XCJ0ZXN0cG9ydC1jb3BwZXJcIl0nKTtcbiAgICAgICAgY29uc3QgdGVzdE0xMkRQb3J0RWxlbWVudHMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdbanN0eXBlPVwidGVzdHBvcnQtbTEyLWRcIl0nKTtcbiAgICAgICAgY29uc3QgdGVzdE0xMlhQb3J0RWxlbWVudHMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdbanN0eXBlPVwidGVzdHBvcnQtbTEyLXhcIl0nKTtcbiAgICAgICAgY29uc3QgdGVzdENhbVBvcnRFbGVtZW50cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1tqc3R5cGU9XCJ0ZXN0cG9ydC1jYW1cIl0nKTtcbiAgICAgICAgY29uc3QgdGVzdEFybVBvcnRFbGVtZW50cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1tqc3R5cGU9XCJ0ZXN0cG9ydC1hcm1cIl0nKTtcbiAgICAgICAgY29uc3QgdGVzdEZpYmVyUG9ydEVsZW1lbnRzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnW2pzdHlwZT1cInRlc3Rwb3J0LWZpYmVyXCJdJyk7XG5cbiAgICAgICAgY29uc3QgdGVzdFRlc3RNUE9Qb3J0RWxlbWVudHMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdbanN0eXBlPVwidGVzdHBvcnQtbXBvXCJdJyk7XG4gICAgICAgIFxuICAgICAgICBjb25zdCB0ZXN0TVBPUG9ydExlZnRFbGVtZW50cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1tqc3R5cGU9XCJjYWJsZS1maWJlci1tcG8tbGVmdFwiXScpO1xuICAgICAgICBjb25zdCB0ZXN0TVBPUG9ydFJpZ2h0RWxlbWVudHMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdbanN0eXBlPVwiY2FibGUtZmliZXItbXBvLXJpZ2h0XCJdJyk7XG5cbiAgICAgICAgY29uc3QgdGVzdE1QT0JPWFBvcnRFbGVtZW50cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1tqc3R5cGU9XCJtcG8tZmliZXJib3gtbXBvXCJdJyk7XG4gICAgICAgIGNvbnN0IHRlc3RNUE9MQ0JPWFBvcnRFbGVtZW50cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1tqc3R5cGU9XCJtcG8tZmliZXJib3gtbGNcIl0nKTtcblxuXG4gICAgICAgIC8vIOS4umNvbm5lY3Rvcuexu+Wei+WFg+e0oOa3u+WKoOerr+eCue+8iOWPquiDveS9nOS4uuebruagh++8iVxuICAgICAgICBjb25uZWN0b3JMZWZ0RWxlbWVudHMuZm9yRWFjaCgoZWxlbWVudCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGlkID0gZWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2lkJyk7XG4gICAgICAgICAgLy9jb25zb2xlLmxvZyhg5Yid5aeL5YyW6L+e5o6l5ZmoOiAke2lkfWApO1xuICAgICAgICAgIFxuICAgICAgICAgIC8vIOa3u+WKoOW3puS+p+err+eCuVxuICAgICAgICAgIGluc3RhbmNlLmFkZEVuZHBvaW50KGVsZW1lbnQsIHtcbiAgICAgICAgICAgIGFuY2hvcjogJ0xlZnQnLFxuICAgICAgICAgICAgaXNTb3VyY2U6IGZhbHNlLFxuICAgICAgICAgICAgaXNUYXJnZXQ6IHRydWUsXG4gICAgICAgICAgICBtYXhDb25uZWN0aW9uczogMSxcbiAgICAgICAgICAgIGNvbm5lY3RvclN0eWxlOiB7IHN0cm9rZTogJyMwZmYnLCBzdHJva2VXaWR0aDogMiB9LFxuICAgICAgICAgICAgY29ubmVjdG9ySG92ZXJTdHlsZTogeyBzdHJva2U6ICcjMDBmZjdmJywgc3Ryb2tlV2lkdGg6IDMgfSxcbiAgICAgICAgICAgIHBhaW50U3R5bGU6IHsgZmlsbDogJyMwZmYnLCB9LFxuICAgICAgICAgICAgaG92ZXJQYWludFN0eWxlOiB7IGZpbGw6ICcjMDBmZjdmJyB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgICBjb25uZWN0b3JSaWdodEVsZW1lbnRzLmZvckVhY2goKGVsZW1lbnQpID0+IHtcbiAgICAgICAgICBjb25zdCBpZCA9IGVsZW1lbnQuZ2V0QXR0cmlidXRlKCdpZCcpO1xuICAgICAgICAgIC8vY29uc29sZS5sb2coYOWIneWni+WMlui/nuaOpeWZqDogJHtpZH1gKTtcbiAgICAgICAgICBcbiAgICAgICAgICAvLyDmt7vliqDlj7Pkvqfnq6/ngrlcbiAgICAgICAgICBpbnN0YW5jZS5hZGRFbmRwb2ludChlbGVtZW50LCB7XG4gICAgICAgICAgICBhbmNob3I6ICdSaWdodCcsXG4gICAgICAgICAgICBpc1NvdXJjZTogZmFsc2UsXG4gICAgICAgICAgICBpc1RhcmdldDogdHJ1ZSxcbiAgICAgICAgICAgIG1heENvbm5lY3Rpb25zOiAxLFxuICAgICAgICAgICAgY29ubmVjdG9yU3R5bGU6IHsgc3Ryb2tlOiAnIzBmZicsIHN0cm9rZVdpZHRoOiAyIH0sXG4gICAgICAgICAgICBjb25uZWN0b3JIb3ZlclN0eWxlOiB7IHN0cm9rZTogJyMwMGZmN2YnLCBzdHJva2VXaWR0aDogMyB9LFxuICAgICAgICAgICAgcGFpbnRTdHlsZTogeyBmaWxsOiAnIzBmZicsIH0sXG4gICAgICAgICAgICBob3ZlclBhaW50U3R5bGU6IHsgZmlsbDogJyMwMGZmN2YnIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG5cblxuXG4gICAgICAgIC8vIOS4uumTnOe8hui3s+e6v+a3u+WKoOerr+eCuVxuICAgICAgICBjYWJsZUNvcHBlckxlZnRFbGVtZW50cy5mb3JFYWNoKChlbGVtZW50KSA9PiB7XG4gICAgICAgICAgY29uc3QgaWQgPSBlbGVtZW50LmdldEF0dHJpYnV0ZSgnaWQnKTtcbiAgICAgICAgICAvL2NvbnNvbGUubG9nKGDliJ3lp4vljJbpk5znvIbot7Pnur86ICR7aWR9YCk7XG4gICAgICAgICAgLy8g5re75Yqg5bem5L6n56uv54K5XG4gICAgICAgICAgaW5zdGFuY2UuYWRkRW5kcG9pbnQoZWxlbWVudCwge1xuICAgICAgICAgICAgYW5jaG9yOiAnQ2VudGVyJyxcbiAgICAgICAgICAgIGlzU291cmNlOiB0cnVlLFxuICAgICAgICAgICAgaXNUYXJnZXQ6IHRydWUsXG4gICAgICAgICAgICBtYXhDb25uZWN0aW9uczogMSxcbiAgICAgICAgICAgIGNvbm5lY3RvclN0eWxlOiB7IHN0cm9rZTogJyMwZmYnLCBzdHJva2VXaWR0aDogMiB9LFxuICAgICAgICAgICAgY29ubmVjdG9ySG92ZXJTdHlsZTogeyBzdHJva2U6ICcjMDBmZjdmJywgc3Ryb2tlV2lkdGg6IDMgfSxcbiAgICAgICAgICAgIHBhaW50U3R5bGU6IHsgZmlsbDogJyMwZmYnLCAgfSxcbiAgICAgICAgICAgIGhvdmVyUGFpbnRTdHlsZTogeyBmaWxsOiAnIzAwZmY3ZicgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgY2FibGVDb3BwZXJSaWdodEVsZW1lbnRzLmZvckVhY2goKGVsZW1lbnQpID0+IHtcbiAgICAgICAgICBjb25zdCBpZCA9IGVsZW1lbnQuZ2V0QXR0cmlidXRlKCdpZCcpO1xuICAgICAgICAgIC8vY29uc29sZS5sb2coYOWIneWni+WMlumTnOe8hui3s+e6vzogJHtpZH1gKTtcbiAgICAgICAgICAvLyDmt7vliqDlj7Pkvqfnq6/ngrlcbiAgICAgICAgICBpbnN0YW5jZS5hZGRFbmRwb2ludChlbGVtZW50LCB7XG4gICAgICAgICAgICBhbmNob3I6ICdDZW50ZXInLFxuICAgICAgICAgICAgaXNTb3VyY2U6IHRydWUsXG4gICAgICAgICAgICBpc1RhcmdldDogdHJ1ZSxcbiAgICAgICAgICAgIG1heENvbm5lY3Rpb25zOiAxLFxuICAgICAgICAgICAgY29ubmVjdG9yU3R5bGU6IHsgc3Ryb2tlOiAnIzBmZicsIHN0cm9rZVdpZHRoOiAyIH0sXG4gICAgICAgICAgICBjb25uZWN0b3JIb3ZlclN0eWxlOiB7IHN0cm9rZTogJyMwMGZmN2YnLCBzdHJva2VXaWR0aDogMyB9LFxuICAgICAgICAgICAgcGFpbnRTdHlsZTogeyBmaWxsOiAnIzBmZicsICB9LFxuICAgICAgICAgICAgaG92ZXJQYWludFN0eWxlOiB7IGZpbGw6ICcjMDBmZjdmJyB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgICAvLyDkuLpNMTLot7Pnur/mt7vliqDnq6/ngrlcbiAgICAgICAgY2FibGVNMTJYTGVmdEVsZW1lbnRzLmZvckVhY2goKGVsZW1lbnQpID0+IHtcbiAgICAgICAgICBjb25zdCBpZCA9IGVsZW1lbnQuZ2V0QXR0cmlidXRlKCdpZCcpO1xuICAgICAgICAgIC8vY29uc29sZS5sb2coYOWIneWni+WMlumTnOe8hui3s+e6vzogJHtpZH1gKTtcbiAgICAgICAgICAvLyDmt7vliqDlt6bkvqfnq6/ngrlcbiAgICAgICAgICBpbnN0YW5jZS5hZGRFbmRwb2ludChlbGVtZW50LCB7XG4gICAgICAgICAgICBhbmNob3I6ICdDZW50ZXInLFxuICAgICAgICAgICAgaXNTb3VyY2U6IHRydWUsXG4gICAgICAgICAgICBpc1RhcmdldDogdHJ1ZSxcbiAgICAgICAgICAgIG1heENvbm5lY3Rpb25zOiAxLFxuICAgICAgICAgICAgY29ubmVjdG9yU3R5bGU6IHsgc3Ryb2tlOiAnIzBmZicsIHN0cm9rZVdpZHRoOiAyIH0sXG4gICAgICAgICAgICBjb25uZWN0b3JIb3ZlclN0eWxlOiB7IHN0cm9rZTogJyMwMGZmN2YnLCBzdHJva2VXaWR0aDogMyB9LFxuICAgICAgICAgICAgcGFpbnRTdHlsZTogeyBmaWxsOiAnIzBmZicsICB9LFxuICAgICAgICAgICAgaG92ZXJQYWludFN0eWxlOiB7IGZpbGw6ICcjMDBmZjdmJyB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgICBjYWJsZU0xMlhSaWdodEVsZW1lbnRzLmZvckVhY2goKGVsZW1lbnQpID0+IHtcbiAgICAgICAgICBjb25zdCBpZCA9IGVsZW1lbnQuZ2V0QXR0cmlidXRlKCdpZCcpO1xuICAgICAgICAgIC8vY29uc29sZS5sb2coYOWIneWni+WMlumTnOe8hui3s+e6vzogJHtpZH1gKTtcbiAgICAgICAgICAvLyDmt7vliqDlj7Pkvqfnq6/ngrlcbiAgICAgICAgICBpbnN0YW5jZS5hZGRFbmRwb2ludChlbGVtZW50LCB7XG4gICAgICAgICAgICBhbmNob3I6ICdDZW50ZXInLFxuICAgICAgICAgICAgaXNTb3VyY2U6IHRydWUsXG4gICAgICAgICAgICBpc1RhcmdldDogdHJ1ZSxcbiAgICAgICAgICAgIG1heENvbm5lY3Rpb25zOiAxLFxuICAgICAgICAgICAgY29ubmVjdG9yU3R5bGU6IHsgc3Ryb2tlOiAnIzBmZicsIHN0cm9rZVdpZHRoOiAyIH0sXG4gICAgICAgICAgICBjb25uZWN0b3JIb3ZlclN0eWxlOiB7IHN0cm9rZTogJyMwMGZmN2YnLCBzdHJva2VXaWR0aDogMyB9LFxuICAgICAgICAgICAgcGFpbnRTdHlsZTogeyBmaWxsOiAnIzBmZicsICB9LFxuICAgICAgICAgICAgaG92ZXJQYWludFN0eWxlOiB7IGZpbGw6ICcjMDBmZjdmJyB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgICBjYWJsZU0xMkRMZWZ0RWxlbWVudHMuZm9yRWFjaCgoZWxlbWVudCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGlkID0gZWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2lkJyk7XG4gICAgICAgICAgLy9jb25zb2xlLmxvZyhg5Yid5aeL5YyW6ZOc57yG6Lez57q/OiAke2lkfWApO1xuICAgICAgICAgIC8vIOa3u+WKoOW3puS+p+err+eCuVxuICAgICAgICAgIGluc3RhbmNlLmFkZEVuZHBvaW50KGVsZW1lbnQsIHtcbiAgICAgICAgICAgIGFuY2hvcjogJ0NlbnRlcicsXG4gICAgICAgICAgICBpc1NvdXJjZTogdHJ1ZSxcbiAgICAgICAgICAgIGlzVGFyZ2V0OiB0cnVlLFxuICAgICAgICAgICAgbWF4Q29ubmVjdGlvbnM6IDEsXG4gICAgICAgICAgICBjb25uZWN0b3JTdHlsZTogeyBzdHJva2U6ICcjMGZmJywgc3Ryb2tlV2lkdGg6IDIgfSxcbiAgICAgICAgICAgIGNvbm5lY3RvckhvdmVyU3R5bGU6IHsgc3Ryb2tlOiAnIzAwZmY3ZicsIHN0cm9rZVdpZHRoOiAzIH0sXG4gICAgICAgICAgICBwYWludFN0eWxlOiB7IGZpbGw6ICcjMGZmJywgIH0sXG4gICAgICAgICAgICBob3ZlclBhaW50U3R5bGU6IHsgZmlsbDogJyMwMGZmN2YnIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIGNhYmxlTTEyRFJpZ2h0RWxlbWVudHMuZm9yRWFjaCgoZWxlbWVudCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGlkID0gZWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2lkJyk7XG4gICAgICAgICAgLy9jb25zb2xlLmxvZyhg5Yid5aeL5YyW6ZOc57yG6Lez57q/OiAke2lkfWApO1xuICAgICAgICAgIC8vIOa3u+WKoOWPs+S+p+err+eCuVxuICAgICAgICAgIGluc3RhbmNlLmFkZEVuZHBvaW50KGVsZW1lbnQsIHtcbiAgICAgICAgICAgIGFuY2hvcjogJ0NlbnRlcicsXG4gICAgICAgICAgICBpc1NvdXJjZTogdHJ1ZSxcbiAgICAgICAgICAgIGlzVGFyZ2V0OiB0cnVlLFxuICAgICAgICAgICAgbWF4Q29ubmVjdGlvbnM6IDEsXG4gICAgICAgICAgICBjb25uZWN0b3JTdHlsZTogeyBzdHJva2U6ICcjMGZmJywgc3Ryb2tlV2lkdGg6IDIgfSxcbiAgICAgICAgICAgIGNvbm5lY3RvckhvdmVyU3R5bGU6IHsgc3Ryb2tlOiAnIzAwZmY3ZicsIHN0cm9rZVdpZHRoOiAzIH0sXG4gICAgICAgICAgICBwYWludFN0eWxlOiB7IGZpbGw6ICcjMGZmJywgIH0sXG4gICAgICAgICAgICBob3ZlclBhaW50U3R5bGU6IHsgZmlsbDogJyMwMGZmN2YnIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8g5Li65YWJ57qk6Lez57q/5re75Yqg56uv54K5XG4gICAgICAgIGNhYmxlRmliZXJMZWZ0RWxlbWVudHMuZm9yRWFjaCgoZWxlbWVudCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGlkID0gZWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2lkJyk7XG4gICAgICAgICAgLy9jb25zb2xlLmxvZyhg5Yid5aeL5YyW5YWJ57qk6Lez57q/OiAke2lkfWApO1xuICAgICAgICAgIC8vIOa3u+WKoOW3puS+p+err+eCuVxuICAgICAgICAgIGluc3RhbmNlLmFkZEVuZHBvaW50KGVsZW1lbnQsIHtcbiAgICAgICAgICAgIGFuY2hvcjogJ0NlbnRlcicsXG4gICAgICAgICAgICBpc1NvdXJjZTogdHJ1ZSxcbiAgICAgICAgICAgIGlzVGFyZ2V0OiB0cnVlLFxuICAgICAgICAgICAgbWF4Q29ubmVjdGlvbnM6IDEsXG4gICAgICAgICAgICBjb25uZWN0b3JTdHlsZTogeyBzdHJva2U6ICcjMGZmJywgc3Ryb2tlV2lkdGg6IDIgfSxcbiAgICAgICAgICAgIGNvbm5lY3RvckhvdmVyU3R5bGU6IHsgc3Ryb2tlOiAnIzAwZmY3ZicsIHN0cm9rZVdpZHRoOiAzIH0sXG4gICAgICAgICAgICBwYWludFN0eWxlOiB7IGZpbGw6ICcjMGZmJywgIH0sXG4gICAgICAgICAgICBob3ZlclBhaW50U3R5bGU6IHsgZmlsbDogJyMwMGZmN2YnIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY2FibGVGaWJlclJpZ2h0RWxlbWVudHMuZm9yRWFjaCgoZWxlbWVudCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGlkID0gZWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2lkJyk7XG4gICAgICAgICAgLy9jb25zb2xlLmxvZyhg5Yid5aeL5YyW5YWJ57qk6Lez57q/OiAke2lkfWApO1xuICAgICAgICAgIC8vIOa3u+WKoOWPs+S+p+err+eCuVxuICAgICAgICAgIGluc3RhbmNlLmFkZEVuZHBvaW50KGVsZW1lbnQsIHtcbiAgICAgICAgICAgIGFuY2hvcjogJ0NlbnRlcicsXG4gICAgICAgICAgICBpc1NvdXJjZTogdHJ1ZSxcbiAgICAgICAgICAgIGlzVGFyZ2V0OiB0cnVlLFxuICAgICAgICAgICAgbWF4Q29ubmVjdGlvbnM6IDEsXG4gICAgICAgICAgICBjb25uZWN0b3JTdHlsZTogeyBzdHJva2U6ICcjMGZmJywgc3Ryb2tlV2lkdGg6IDIgfSxcbiAgICAgICAgICAgIGNvbm5lY3RvckhvdmVyU3R5bGU6IHsgc3Ryb2tlOiAnIzAwZmY3ZicsIHN0cm9rZVdpZHRoOiAzIH0sXG4gICAgICAgICAgICBwYWludFN0eWxlOiB7IGZpbGw6ICcjMGZmJywgfSxcbiAgICAgICAgICAgIGhvdmVyUGFpbnRTdHlsZTogeyBmaWxsOiAnIzAwZmY3ZicgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgXG5cbiAgICAgICAgLy8g5Li66ZOc57yG56uv5Y+j5re75Yqg56uv54K5XG4gICAgICAgIG1vZGVsUG9ydENvcHBlckVsZW1lbnRzLmZvckVhY2goKGVsZW1lbnQpID0+IHtcbiAgICAgICAgICBjb25zdCBpZCA9IGVsZW1lbnQuZ2V0QXR0cmlidXRlKCdpZCcpO1xuICAgICAgICAgIGNvbnN0IGlzUGVybWFuZW50ID0gaWQuaW5jbHVkZXMoJ3Blcm1hbmVudCcpO1xuICAgICAgICAgIC8vY29uc29sZS5sb2coYOWIneWni+WMlumTnOe8huerr+WPozogJHtpZH0gKCR7aXNQZXJtYW5lbnQgPyAn5rC45LmF6ZO+6LevJyA6ICfmma7pgJrnq6/lj6MnfSlgKTtcblxuICAgICAgICAgIGluc3RhbmNlLmFkZEVuZHBvaW50KGVsZW1lbnQsIHtcbiAgICAgICAgICAgIGFuY2hvcjogJ1RvcCcsXG4gICAgICAgICAgICBpc1NvdXJjZTogaXNQZXJtYW5lbnQsXG4gICAgICAgICAgICBpc1RhcmdldDogIWlzUGVybWFuZW50LFxuICAgICAgICAgICAgbWF4Q29ubmVjdGlvbnM6IDEsXG4gICAgICAgICAgICBjb25uZWN0b3JTdHlsZTogeyBzdHJva2U6ICcjMGZmJywgc3Ryb2tlV2lkdGg6IDIgfSxcbiAgICAgICAgICAgIGNvbm5lY3RvckhvdmVyU3R5bGU6IHsgc3Ryb2tlOiAnIzAwZmY3ZicsIHN0cm9rZVdpZHRoOiAzIH0sXG4gICAgICAgICAgICBwYWludFN0eWxlOiB7IGZpbGw6ICcjMGZmJywgfSxcbiAgICAgICAgICAgIGhvdmVyUGFpbnRTdHlsZTogeyBmaWxsOiAnIzAwZmY3ZicgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgXG4gICAgICAgIC8vIOS4uumTnOe8huerr+WPo+a3u+WKoOerr+eCuVxuICAgICAgICBtb2RlbFBvcnRNMTJERWxlbWVudHMuZm9yRWFjaCgoZWxlbWVudCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGlkID0gZWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2lkJyk7XG4gICAgICAgICAgY29uc3QgaXNQZXJtYW5lbnQgPSBpZC5pbmNsdWRlcygncGVybWFuZW50Jyk7XG4gICAgICAgICAgLy9jb25zb2xlLmxvZyhg5Yid5aeL5YyW6ZOc57yG56uv5Y+jOiAke2lkfSAoJHtpc1Blcm1hbmVudCA/ICfmsLjkuYXpk77ot68nIDogJ+aZrumAmuerr+WPoyd9KWApO1xuXG4gICAgICAgICAgaW5zdGFuY2UuYWRkRW5kcG9pbnQoZWxlbWVudCwge1xuICAgICAgICAgICAgYW5jaG9yOiAnVG9wJyxcbiAgICAgICAgICAgIGlzU291cmNlOiBpc1Blcm1hbmVudCxcbiAgICAgICAgICAgIGlzVGFyZ2V0OiAhaXNQZXJtYW5lbnQsXG4gICAgICAgICAgICBtYXhDb25uZWN0aW9uczogMSxcbiAgICAgICAgICAgIGNvbm5lY3RvclN0eWxlOiB7IHN0cm9rZTogJyMwZmYnLCBzdHJva2VXaWR0aDogMiB9LFxuICAgICAgICAgICAgY29ubmVjdG9ySG92ZXJTdHlsZTogeyBzdHJva2U6ICcjMDBmZjdmJywgc3Ryb2tlV2lkdGg6IDMgfSxcbiAgICAgICAgICAgIHBhaW50U3R5bGU6IHsgZmlsbDogJyMwZmYnLCB9LFxuICAgICAgICAgICAgaG92ZXJQYWludFN0eWxlOiB7IGZpbGw6ICcjMDBmZjdmJyB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgICAvLyDkuLrpk5znvIbnq6/lj6Pmt7vliqDnq6/ngrlcbiAgICAgICAgbW9kZWxQb3J0TTEyWEVsZW1lbnRzLmZvckVhY2goKGVsZW1lbnQpID0+IHtcbiAgICAgICAgICBjb25zdCBpZCA9IGVsZW1lbnQuZ2V0QXR0cmlidXRlKCdpZCcpO1xuICAgICAgICAgIGNvbnN0IGlzUGVybWFuZW50ID0gaWQuaW5jbHVkZXMoJ3Blcm1hbmVudCcpO1xuICAgICAgICAgIC8vY29uc29sZS5sb2coYOWIneWni+WMlumTnOe8huerr+WPozogJHtpZH0gKCR7aXNQZXJtYW5lbnQgPyAn5rC45LmF6ZO+6LevJyA6ICfmma7pgJrnq6/lj6MnfSlgKTtcblxuICAgICAgICAgIGluc3RhbmNlLmFkZEVuZHBvaW50KGVsZW1lbnQsIHtcbiAgICAgICAgICAgIGFuY2hvcjogJ1RvcCcsXG4gICAgICAgICAgICBpc1NvdXJjZTogaXNQZXJtYW5lbnQsXG4gICAgICAgICAgICBpc1RhcmdldDogIWlzUGVybWFuZW50LFxuICAgICAgICAgICAgbWF4Q29ubmVjdGlvbnM6IDEsXG4gICAgICAgICAgICBjb25uZWN0b3JTdHlsZTogeyBzdHJva2U6ICcjMGZmJywgc3Ryb2tlV2lkdGg6IDIgfSxcbiAgICAgICAgICAgIGNvbm5lY3RvckhvdmVyU3R5bGU6IHsgc3Ryb2tlOiAnIzAwZmY3ZicsIHN0cm9rZVdpZHRoOiAzIH0sXG4gICAgICAgICAgICBwYWludFN0eWxlOiB7IGZpbGw6ICcjMGZmJywgfSxcbiAgICAgICAgICAgIGhvdmVyUGFpbnRTdHlsZTogeyBmaWxsOiAnIzAwZmY3ZicgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcblxuICAgICAgICAvLyDkuLrlhYnnuqTnq6/lj6Pmt7vliqDnq6/ngrlcbiAgICAgICAgbW9kZWxQb3J0RmliZXJFbGVtZW50cy5mb3JFYWNoKChlbGVtZW50KSA9PiB7XG4gICAgICAgICAgY29uc3QgaWQgPSBlbGVtZW50LmdldEF0dHJpYnV0ZSgnaWQnKTtcbiAgICAgICAgICBcbiAgICAgICAgICAvLyDliJ3lp4vljJbml7borr7nva4gZmliZXJzb3VyY2Ug5bGe5oCn5Li6IGZhbHNlXG4gICAgICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2ZpYmVyc291cmNlJywgJ2ZhbHNlJyk7XG5cbiAgICAgICAgICBpbnN0YW5jZS5hZGRFbmRwb2ludChlbGVtZW50LCB7XG4gICAgICAgICAgICBhbmNob3I6ICdDZW50ZXInLFxuICAgICAgICAgICAgaXNTb3VyY2U6IGZhbHNlLFxuICAgICAgICAgICAgaXNUYXJnZXQ6IHRydWUsXG4gICAgICAgICAgICBtYXhDb25uZWN0aW9uczogMSxcbiAgICAgICAgICAgIGNvbm5lY3RvclN0eWxlOiB7IHN0cm9rZTogJyMwZmYnLCBzdHJva2VXaWR0aDogMiB9LFxuICAgICAgICAgICAgY29ubmVjdG9ySG92ZXJTdHlsZTogeyBzdHJva2U6ICcjMDBmZjdmJywgc3Ryb2tlV2lkdGg6IDMgfSxcbiAgICAgICAgICAgIHBhaW50U3R5bGU6IHsgZmlsbDogJyMwZmYnLCB9LFxuICAgICAgICAgICAgaG92ZXJQYWludFN0eWxlOiB7IGZpbGw6ICcjMDBmZjdmJyB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIOS4uua1i+ivlemTnOerr+WPo+a3u+WKoOerr+eCuVxuICAgICAgICB0ZXN0Q29wcGVyUG9ydEVsZW1lbnRzLmZvckVhY2goKGVsZW1lbnQpID0+IHtcbiAgICAgICAgICBjb25zdCBpZCA9IGVsZW1lbnQuZ2V0QXR0cmlidXRlKCdpZCcpO1xuICAgICAgICAgIFxuICAgICAgICAgIGluc3RhbmNlLmFkZEVuZHBvaW50KGVsZW1lbnQsIHtcbiAgICAgICAgICAgIGFuY2hvcjogJ0NlbnRlcicsXG4gICAgICAgICAgICBpc1NvdXJjZTogZmFsc2UsXG4gICAgICAgICAgICBpc1RhcmdldDogdHJ1ZSxcbiAgICAgICAgICAgIG1heENvbm5lY3Rpb25zOiAxLFxuICAgICAgICAgICAgY29ubmVjdG9yU3R5bGU6IHsgc3Ryb2tlOiAnIzBmZicsIHN0cm9rZVdpZHRoOiAyIH0sXG4gICAgICAgICAgICBjb25uZWN0b3JIb3ZlclN0eWxlOiB7IHN0cm9rZTogJyMwMGZmN2YnLCBzdHJva2VXaWR0aDogMyB9LFxuICAgICAgICAgICAgcGFpbnRTdHlsZTogeyBmaWxsOiAnIzAwMDAwMDAwJywgfSwgICAgICAgICAgICBcbiAgICAgICAgICAgIGhvdmVyUGFpbnRTdHlsZTogeyBmaWxsOiAnIzAwZmY3ZicgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgLy8g5Li65rWL6K+VTTEyROerr+WPo+a3u+WKoOerr+eCuVxuICAgICAgICB0ZXN0TTEyRFBvcnRFbGVtZW50cy5mb3JFYWNoKChlbGVtZW50KSA9PiB7XG4gICAgICAgICAgY29uc3QgaWQgPSBlbGVtZW50LmdldEF0dHJpYnV0ZSgnaWQnKTtcbiAgICAgICAgICBcbiAgICAgICAgICBpbnN0YW5jZS5hZGRFbmRwb2ludChlbGVtZW50LCB7XG4gICAgICAgICAgICBhbmNob3I6ICdDZW50ZXInLFxuICAgICAgICAgICAgaXNTb3VyY2U6IGZhbHNlLFxuICAgICAgICAgICAgaXNUYXJnZXQ6IHRydWUsXG4gICAgICAgICAgICBtYXhDb25uZWN0aW9uczogMSxcbiAgICAgICAgICAgIGNvbm5lY3RvclN0eWxlOiB7IHN0cm9rZTogJyMwZmYnLCBzdHJva2VXaWR0aDogMiB9LFxuICAgICAgICAgICAgY29ubmVjdG9ySG92ZXJTdHlsZTogeyBzdHJva2U6ICcjMDBmZjdmJywgc3Ryb2tlV2lkdGg6IDMgfSxcbiAgICAgICAgICAgIHBhaW50U3R5bGU6IHsgZmlsbDogJyMwMDAwMDAwMCcsIH0sICAgICAgICAgICAgXG4gICAgICAgICAgICBob3ZlclBhaW50U3R5bGU6IHsgZmlsbDogJyMwMGZmN2YnIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIC8vIOS4uua1i+ivlU0xMljnq6/lj6Pmt7vliqDnq6/ngrlcbiAgICAgICAgdGVzdE0xMlhQb3J0RWxlbWVudHMuZm9yRWFjaCgoZWxlbWVudCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGlkID0gZWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2lkJyk7XG4gICAgICAgICAgXG4gICAgICAgICAgaW5zdGFuY2UuYWRkRW5kcG9pbnQoZWxlbWVudCwge1xuICAgICAgICAgICAgYW5jaG9yOiAnQ2VudGVyJyxcbiAgICAgICAgICAgIGlzU291cmNlOiBmYWxzZSxcbiAgICAgICAgICAgIGlzVGFyZ2V0OiB0cnVlLFxuICAgICAgICAgICAgbWF4Q29ubmVjdGlvbnM6IDEsXG4gICAgICAgICAgICBjb25uZWN0b3JTdHlsZTogeyBzdHJva2U6ICcjMGZmJywgc3Ryb2tlV2lkdGg6IDIgfSxcbiAgICAgICAgICAgIGNvbm5lY3RvckhvdmVyU3R5bGU6IHsgc3Ryb2tlOiAnIzAwZmY3ZicsIHN0cm9rZVdpZHRoOiAzIH0sXG4gICAgICAgICAgICBwYWludFN0eWxlOiB7IGZpbGw6ICcjMDAwMDAwMDAnLCB9LCAgICAgICAgICAgIFxuICAgICAgICAgICAgaG92ZXJQYWludFN0eWxlOiB7IGZpbGw6ICcjMDBmZjdmJyB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgICAvLyDkuLpDYW3pk5znq6/lj6Pmt7vliqDnq6/ngrlcbiAgICAgICAgdGVzdENhbVBvcnRFbGVtZW50cy5mb3JFYWNoKChlbGVtZW50KSA9PiB7XG4gICAgICAgICAgY29uc3QgaWQgPSBlbGVtZW50LmdldEF0dHJpYnV0ZSgnaWQnKTtcbiAgICAgICAgICBcbiAgICAgICAgICBpbnN0YW5jZS5hZGRFbmRwb2ludChlbGVtZW50LCB7XG4gICAgICAgICAgICBhbmNob3I6ICdDZW50ZXInLFxuICAgICAgICAgICAgaXNTb3VyY2U6IHRydWUsXG4gICAgICAgICAgICBpc1RhcmdldDogdHJ1ZSxcbiAgICAgICAgICAgIG1heENvbm5lY3Rpb25zOiAxLFxuICAgICAgICAgICAgY29ubmVjdG9yU3R5bGU6IHsgc3Ryb2tlOiAnIzBmZicsIHN0cm9rZVdpZHRoOiAyIH0sXG4gICAgICAgICAgICBjb25uZWN0b3JIb3ZlclN0eWxlOiB7IHN0cm9rZTogJyMwMGZmN2YnLCBzdHJva2VXaWR0aDogMyB9LFxuICAgICAgICAgICAgcGFpbnRTdHlsZTogeyBmaWxsOiAnIzAwMDAwMDAwJywgfSwgICAgICAgICAgICBcbiAgICAgICAgICAgIGhvdmVyUGFpbnRTdHlsZTogeyBmaWxsOiAnIzAwZmY3ZicgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgLy8g5Li65rWL6K+VQVJN56uv5Y+j5re75Yqg56uv54K5XG4gICAgICAgIHRlc3RBcm1Qb3J0RWxlbWVudHMuZm9yRWFjaCgoZWxlbWVudCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGlkID0gZWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2lkJyk7XG4gICAgICAgICAgXG4gICAgICAgICAgaW5zdGFuY2UuYWRkRW5kcG9pbnQoZWxlbWVudCwge1xuICAgICAgICAgICAgYW5jaG9yOiAnQ2VudGVyJyxcbiAgICAgICAgICAgIGlzU291cmNlOiB0cnVlLFxuICAgICAgICAgICAgaXNUYXJnZXQ6IHRydWUsXG4gICAgICAgICAgICBtYXhDb25uZWN0aW9uczogMSxcbiAgICAgICAgICAgIGNvbm5lY3RvclN0eWxlOiB7IHN0cm9rZTogJyMwZmYnLCBzdHJva2VXaWR0aDogMiB9LFxuICAgICAgICAgICAgY29ubmVjdG9ySG92ZXJTdHlsZTogeyBzdHJva2U6ICcjMDBmZjdmJywgc3Ryb2tlV2lkdGg6IDMgfSxcbiAgICAgICAgICAgIHBhaW50U3R5bGU6IHsgZmlsbDogJyMwMDAwMDAwMCcsIH0sICAgICAgICAgICAgXG4gICAgICAgICAgICBob3ZlclBhaW50U3R5bGU6IHsgZmlsbDogJyMwMGZmN2YnIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIC8vIOS4uua1i+ivleWFieerr+WPo+a3u+WKoOerr+eCuVxuICAgICAgICB0ZXN0RmliZXJQb3J0RWxlbWVudHMuZm9yRWFjaCgoZWxlbWVudCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGlkID0gZWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2lkJyk7XG4gICAgICAgICAgXG4gICAgICAgICAgaW5zdGFuY2UuYWRkRW5kcG9pbnQoZWxlbWVudCwge1xuICAgICAgICAgICAgYW5jaG9yOiAnQ2VudGVyJyxcbiAgICAgICAgICAgIGlzU291cmNlOiBmYWxzZSxcbiAgICAgICAgICAgIGlzVGFyZ2V0OiB0cnVlLFxuICAgICAgICAgICAgbWF4Q29ubmVjdGlvbnM6IDEsXG4gICAgICAgICAgICBjb25uZWN0b3JTdHlsZTogeyBzdHJva2U6ICcjMGZmJywgc3Ryb2tlV2lkdGg6IDIgfSxcbiAgICAgICAgICAgIGNvbm5lY3RvckhvdmVyU3R5bGU6IHsgc3Ryb2tlOiAnIzAwZmY3ZicsIHN0cm9rZVdpZHRoOiAzIH0sXG4gICAgICAgICAgICBwYWludFN0eWxlOiB7IGZpbGw6ICcjMDAwMDAwMDAnLCB9LFxuICAgICAgICAgICAgaG92ZXJQYWludFN0eWxlOiB7IGZpbGw6ICcjODBCRUJFQkUnIH0sXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgICBcbiAgICAgICAgLy8g5Li6TVBP5rWL6K+V56uv5Y+j5re75Yqg56uv54K5XG4gICAgICAgIHRlc3RUZXN0TVBPUG9ydEVsZW1lbnRzLmZvckVhY2goKGVsZW1lbnQpID0+IHtcbiAgICAgICAgICBjb25zdCBpZCA9IGVsZW1lbnQuZ2V0QXR0cmlidXRlKCdpZCcpO1xuICAgICAgICAgIFxuICAgICAgICAgIGluc3RhbmNlLmFkZEVuZHBvaW50KGVsZW1lbnQsIHtcbiAgICAgICAgICAgIGFuY2hvcjogJ0NlbnRlcicsXG4gICAgICAgICAgICBpc1NvdXJjZTogZmFsc2UsXG4gICAgICAgICAgICBpc1RhcmdldDogdHJ1ZSxcbiAgICAgICAgICAgIG1heENvbm5lY3Rpb25zOiAxLFxuICAgICAgICAgICAgY29ubmVjdG9yU3R5bGU6IHsgc3Ryb2tlOiAnIzBmZicsIHN0cm9rZVdpZHRoOiAyIH0sXG4gICAgICAgICAgICBjb25uZWN0b3JIb3ZlclN0eWxlOiB7IHN0cm9rZTogJyMwMGZmN2YnLCBzdHJva2VXaWR0aDogMyB9LFxuICAgICAgICAgICAgcGFpbnRTdHlsZTogeyBmaWxsOiAnIzAwMDAwMDAwJywgfSxcbiAgICAgICAgICAgIGhvdmVyUGFpbnRTdHlsZTogeyBmaWxsOiAnIzgwQkVCRUJFJyB9LFxuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgLy8g5Li6TVBPIOi3s+e6v+a3u+WKoOerr+WPo1xuICAgICAgICB0ZXN0TVBPUG9ydExlZnRFbGVtZW50cy5mb3JFYWNoKChlbGVtZW50KSA9PiB7XG4gICAgICAgICAgY29uc3QgaWQgPSBlbGVtZW50LmdldEF0dHJpYnV0ZSgnaWQnKTtcbiAgICAgICAgICAvL2NvbnNvbGUubG9nKGDliJ3lp4vljJblhYnnuqTot7Pnur86ICR7aWR9YCk7XG4gICAgICAgICAgLy8g5re75Yqg5bem5L6n56uv54K5XG4gICAgICAgICAgaW5zdGFuY2UuYWRkRW5kcG9pbnQoZWxlbWVudCwge1xuICAgICAgICAgICAgYW5jaG9yOiAnQm90dG9tTGVmdCcsXG4gICAgICAgICAgICBpc1NvdXJjZTogdHJ1ZSxcbiAgICAgICAgICAgIGlzVGFyZ2V0OiB0cnVlLFxuICAgICAgICAgICAgbWF4Q29ubmVjdGlvbnM6IDEsXG4gICAgICAgICAgICBjb25uZWN0b3JTdHlsZTogeyBzdHJva2U6ICcjMGZmJywgc3Ryb2tlV2lkdGg6IDIgfSxcbiAgICAgICAgICAgIGNvbm5lY3RvckhvdmVyU3R5bGU6IHsgc3Ryb2tlOiAnIzAwZmY3ZicsIHN0cm9rZVdpZHRoOiAzIH0sXG4gICAgICAgICAgICBwYWludFN0eWxlOiB7IGZpbGw6ICcjMGZmJywgIH0sXG4gICAgICAgICAgICBob3ZlclBhaW50U3R5bGU6IHsgZmlsbDogJyMwMGZmN2YnIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRlc3RNUE9Qb3J0UmlnaHRFbGVtZW50cy5mb3JFYWNoKChlbGVtZW50KSA9PiB7XG4gICAgICAgICAgY29uc3QgaWQgPSBlbGVtZW50LmdldEF0dHJpYnV0ZSgnaWQnKTtcbiAgICAgICAgICAvL2NvbnNvbGUubG9nKGDliJ3lp4vljJblhYnnuqTot7Pnur86ICR7aWR9YCk7XG4gICAgICAgICAgLy8g5re75Yqg5Y+z5L6n56uv54K5XG4gICAgICAgICAgaW5zdGFuY2UuYWRkRW5kcG9pbnQoZWxlbWVudCwge1xuICAgICAgICAgICAgYW5jaG9yOiAnVG9wUmlnaHQnLFxuICAgICAgICAgICAgaXNTb3VyY2U6IHRydWUsXG4gICAgICAgICAgICBpc1RhcmdldDogdHJ1ZSxcbiAgICAgICAgICAgIG1heENvbm5lY3Rpb25zOiAxLFxuICAgICAgICAgICAgY29ubmVjdG9yU3R5bGU6IHsgc3Ryb2tlOiAnIzBmZicsIHN0cm9rZVdpZHRoOiAyIH0sXG4gICAgICAgICAgICBjb25uZWN0b3JIb3ZlclN0eWxlOiB7IHN0cm9rZTogJyMwMGZmN2YnLCBzdHJva2VXaWR0aDogMyB9LFxuICAgICAgICAgICAgcGFpbnRTdHlsZTogeyBmaWxsOiAnIzBmZicsIH0sXG4gICAgICAgICAgICBob3ZlclBhaW50U3R5bGU6IHsgZmlsbDogJyMwMGZmN2YnIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIC8vIOS4uk1QTyBCT1jnq6/lj6Pmt7vliqDnq6/ngrlcbiAgICAgICAgdGVzdE1QT0JPWFBvcnRFbGVtZW50cy5mb3JFYWNoKChlbGVtZW50KSA9PiB7XG4gICAgICAgICAgY29uc3QgaWQgPSBlbGVtZW50LmdldEF0dHJpYnV0ZSgnaWQnKTtcbiAgICAgICAgICAvL2NvbnNvbGUubG9nKGDliJ3lp4vljJblhYnnuqTot7Pnur86ICR7aWR9YCk7XG4gICAgICAgICAgLy8g5re75Yqg6aG26YOo5bGF5Lit56uv54K5XG4gICAgICAgICAgaW5zdGFuY2UuYWRkRW5kcG9pbnQoZWxlbWVudCwge1xuICAgICAgICAgICAgYW5jaG9yOiAnQ2VudGVyJyxcbiAgICAgICAgICAgIGlzU291cmNlOiBmYWxzZSxcbiAgICAgICAgICAgIGlzVGFyZ2V0OiB0cnVlLFxuICAgICAgICAgICAgbWF4Q29ubmVjdGlvbnM6IDEsXG4gICAgICAgICAgICBjb25uZWN0b3JTdHlsZTogeyBzdHJva2U6ICcjMGZmJywgc3Ryb2tlV2lkdGg6IDIgfSxcbiAgICAgICAgICAgIGNvbm5lY3RvckhvdmVyU3R5bGU6IHsgc3Ryb2tlOiAnIzAwZmY3ZicsIHN0cm9rZVdpZHRoOiAzIH0sXG4gICAgICAgICAgICBwYWludFN0eWxlOiB7IGZpbGw6ICcjMDAwMDAwMDAnLCB9LFxuICAgICAgICAgICAgaG92ZXJQYWludFN0eWxlOiB7IGZpbGw6ICcjODBCRUJFQkUnIH0sXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgICB0ZXN0TVBPTENCT1hQb3J0RWxlbWVudHMuZm9yRWFjaCgoZWxlbWVudCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGlkID0gZWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2lkJyk7XG4gICAgICAgICAgaW5zdGFuY2UuYWRkRW5kcG9pbnQoZWxlbWVudCwge1xuICAgICAgICAgICAgYW5jaG9yOiAnQ2VudGVyJyxcbiAgICAgICAgICAgIGlzU291cmNlOiBmYWxzZSxcbiAgICAgICAgICAgIGlzVGFyZ2V0OiB0cnVlLFxuICAgICAgICAgICAgbWF4Q29ubmVjdGlvbnM6IDEsXG4gICAgICAgICAgICBjb25uZWN0b3JTdHlsZTogeyBzdHJva2U6ICcjMGZmJywgc3Ryb2tlV2lkdGg6IDIgfSxcbiAgICAgICAgICAgIGNvbm5lY3RvckhvdmVyU3R5bGU6IHsgc3Ryb2tlOiAnIzAwZmY3ZicsIHN0cm9rZVdpZHRoOiAzIH0sXG4gICAgICAgICAgICBwYWludFN0eWxlOiB7IGZpbGw6ICcjMDAwMDAwMDAnLCB9LFxuICAgICAgICAgICAgaG92ZXJQYWludFN0eWxlOiB7IGZpbGw6ICcjODBCRUJFQkUnIH0sXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgICBcbiAgICAgICAgLy8g5re75Yqg6L+e5o6l5LqL5Lu255uR5ZCsXG4gICAgICAgIGluc3RhbmNlLmJpbmQoJ2Nvbm5lY3Rpb24nLCAoaW5mbykgPT4ge1xuICAgICAgICAgIGNvbnN0IHNvdXJjZUlkID0gaW5mby5zb3VyY2VJZDtcbiAgICAgICAgICBjb25zdCB0YXJnZXRJZCA9IGluZm8udGFyZ2V0SWQ7XG4gICAgICAgICAgXG4gICAgICAgICAgLy8g5YWI56e76Zmk5rqQ56uv54K555qE5omA5pyJ5Y6G5Y+y6L+e5o6lXG4gICAgICAgICAgaW5zdGFuY2UuZ2V0QWxsQ29ubmVjdGlvbnMoKS5mb3JFYWNoKGNvbm4gPT4ge1xuICAgICAgICAgICAgaWYgKGNvbm4uc291cmNlSWQgPT09IHNvdXJjZUlkKSB7XG4gICAgICAgICAgICAgIHJlbW92ZUNvbm5lY3Rpb25QYXRoKGNvbm4uc291cmNlSWQsIGNvbm4udGFyZ2V0SWQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICAgIFxuICAgICAgICAgIC8vIOa3u+WKoOaWsOeahOi/nuaOpei3r+W+hFxuICAgICAgICAgIGFkZENvbm5lY3Rpb25QYXRoKHtcbiAgICAgICAgICAgIHNvdXJjZTogc291cmNlSWQsXG4gICAgICAgICAgICB0YXJnZXQ6IHRhcmdldElkLFxuICAgICAgICAgICAgY29ubmVjdGlvbjogaW5mby5jb25uZWN0aW9uXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuXG5cbiAgICAgICAgLy8g5riF55CG56uv5Y+j6L+e5o6l54q25oCB55qE5Ye95pWwXG4gICAgICAgIGNvbnN0IGNsZWFudXBQb3J0U3RhdHVzID0gKGVsZW1lbnRJZCwgcmV0cnlDb3VudCA9IDMpID0+IHtcbiAgICAgICAgICBjb25zdCBjbGVhbnVwQXR0ZW1wdCA9IChhdHRlbXB0Q291bnQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChlbGVtZW50SWQpO1xuICAgICAgICAgICAgaWYgKGVsZW1lbnQgJiYgZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoJ2p0ay1jb25uZWN0ZWQnKSkge1xuICAgICAgICAgICAgICBlbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoJ2p0ay1jb25uZWN0ZWQnKTtcbiAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgIC8vIOWGjeasoeajgOafpeS7peehruS/neeKtuaAgeiiq+a4heeQhlxuICAgICAgICAgICAgICBpZiAoZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoJ2p0ay1jb25uZWN0ZWQnKSAmJiBhdHRlbXB0Q291bnQgPiAwKSB7XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiBjbGVhbnVwQXR0ZW1wdChhdHRlbXB0Q291bnQgLSAxKSwgNTApO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfTtcbiAgICAgICAgICBcbiAgICAgICAgICAvLyDnq4vljbPmiafooYznrKzkuIDmrKHmuIXnkIZcbiAgICAgICAgICBjbGVhbnVwQXR0ZW1wdChyZXRyeUNvdW50KTtcbiAgICAgICAgICBcbiAgICAgICAgICAvLyDlu7bov58xMDBtc+WQjuWGjeasoeajgOafpSzku6XlpITnkIblv6vpgJ/mk43kvZznmoTmg4XlhrVcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IGNsZWFudXBBdHRlbXB0KHJldHJ5Q291bnQpLCAxMDApO1xuICAgICAgICB9O1xuXG4gICAgICAgIC8vIOa3u+WKoOaWreW8gOi/nuaOpeS6i+S7tuebkeWQrFxuICAgICAgICBpbnN0YW5jZS5iaW5kKCdjb25uZWN0aW9uRGV0YWNoZWQnLCAoaW5mbykgPT4ge1xuICAgICAgICAgIGNvbnN0IHNvdXJjZUlkID0gaW5mby5zb3VyY2VJZDtcbiAgICAgICAgICBjb25zdCB0YXJnZXRJZCA9IGluZm8udGFyZ2V0SWQ7XG4gICAgICAgICAgXG4gICAgICAgICAgLy8g56e76Zmk6L+e5o6l6Lev5b6EXG4gICAgICAgICAgcmVtb3ZlQ29ubmVjdGlvblBhdGgoc291cmNlSWQsIHRhcmdldElkKTtcbiAgICAgICAgICBcbiAgICAgICAgICAvLyDmuIXnkIbmupDnq6/lj6Plkoznm67moIfnq6/lj6PnmoTnirbmgIFcbiAgICAgICAgICBjbGVhbnVwUG9ydFN0YXR1cyhzb3VyY2VJZCk7XG4gICAgICAgICAgY2xlYW51cFBvcnRTdGF0dXModGFyZ2V0SWQpO1xuICAgICAgICB9KTtcblxuICAgICAgICAvLyDmt7vliqDov57mjqXnp7vliqjkuovku7bnm5HlkKxcbiAgICAgICAgaW5zdGFuY2UuYmluZCgnY29ubmVjdGlvbk1vdmVkJywgKGluZm8pID0+IHtcbiAgICAgICAgICAvLyDnp7vpmaTljp/lp4vov57mjqVcbiAgICAgICAgICByZW1vdmVDb25uZWN0aW9uUGF0aChpbmZvLm9yaWdpbmFsU291cmNlSWQsIGluZm8ub3JpZ2luYWxUYXJnZXRJZCk7XG4gICAgICAgICAgXG4gICAgICAgICAgLy8g5riF55CG5Y6f5aeL5rqQ56uv5Y+j5ZKM55uu5qCH56uv5Y+j55qE54q25oCBXG4gICAgICAgICAgY2xlYW51cFBvcnRTdGF0dXMoaW5mby5vcmlnaW5hbFNvdXJjZUlkKTtcbiAgICAgICAgICBjbGVhbnVwUG9ydFN0YXR1cyhpbmZvLm9yaWdpbmFsVGFyZ2V0SWQpO1xuICAgICAgICAgIFxuICAgICAgICAgIC8vIOa3u+WKoOaWsOi/nuaOpVxuICAgICAgICAgIGFkZENvbm5lY3Rpb25QYXRoKHtcbiAgICAgICAgICAgIHNvdXJjZTogaW5mby5uZXdTb3VyY2VJZCxcbiAgICAgICAgICAgIHRhcmdldDogaW5mby5uZXdUYXJnZXRJZCxcbiAgICAgICAgICAgIGNvbm5lY3Rpb246IGluZm8uY29ubmVjdGlvblxuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcblxuICAgICAgICAvLyDph43nu5jmiYDmnInov57mjqVcbiAgICAgICAgaW5zdGFuY2UucmVwYWludEV2ZXJ5dGhpbmcoKTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0ZhaWxlZCB0byBpbml0aWFsaXplIGpzUGx1bWI6JywgZXJyb3IpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBpbml0SnNQbHVtYigpO1xuXG4gICAgLy8g5riF55CG5Ye95pWwXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGlmIChqc1BsdW1iSW5zdGFuY2VSZWYuY3VycmVudCkge1xuICAgICAgICAvLyDmuIXnqbrov57mjqXot6/lvoRcbiAgICAgICAgY2xlYXJDb25uZWN0aW9uUGF0aHMoKTtcbiAgICAgICAganNQbHVtYkluc3RhbmNlUmVmLmN1cnJlbnQucmVzZXQoKTtcbiAgICAgICAganNQbHVtYkluc3RhbmNlUmVmLmN1cnJlbnQgPSBudWxsO1xuICAgICAgfVxuICAgIH07XG4gIH0sIFtjb25uZWN0aW9uSXRlbXMsIG1haW5Vbml0TW9kdWxlcywgcmVtb3RlVW5pdE1vZHVsZXMsIG1haW5Vbml0QWRhcHRlciwgcmVtb3RlVW5pdEFkYXB0ZXIsIGFkZENvbm5lY3Rpb25QYXRoLCByZW1vdmVDb25uZWN0aW9uUGF0aCwgY2xlYXJDb25uZWN0aW9uUGF0aHMsIGZhdWx0U2NlbmFyaW9zLCBXb3JsZFNraWxsU2NlbmFyaW9zXSk7XG5cblxuICByZXR1cm4gKFxuICAgIDxkaXYgXG4gICAgICByZWY9e2NvbnRhaW5lclJlZn1cbiAgICAgIGNsYXNzTmFtZT1cImZpeGVkIGluc2V0LTAgei1bMTAwMF0gcG9pbnRlci1ldmVudHMtbm9uZVwiXG4gICAgLz5cbiAgKTtcbn0iXSwibmFtZXMiOlsidXNlRWZmZWN0IiwidXNlUmVmIiwidXNlRGV2aWNlU3RvcmUiLCJKc1BsdW1iSW5pdCIsImNvbnRhaW5lclJlZiIsImpzUGx1bWJJbnN0YW5jZVJlZiIsImNvbm5lY3Rpb25JdGVtcyIsIm1haW5Vbml0TW9kdWxlcyIsInJlbW90ZVVuaXRNb2R1bGVzIiwibWFpblVuaXRBZGFwdGVyIiwicmVtb3RlVW5pdEFkYXB0ZXIiLCJhZGRDb25uZWN0aW9uUGF0aCIsInJlbW92ZUNvbm5lY3Rpb25QYXRoIiwiY2xlYXJDb25uZWN0aW9uUGF0aHMiLCJmYXVsdFNjZW5hcmlvcyIsIldvcmxkU2tpbGxTY2VuYXJpb3MiLCJpbml0SnNQbHVtYiIsImpzUGx1bWIiLCJjdXJyZW50IiwiZ2V0SW5zdGFuY2UiLCJDb250YWluZXIiLCJDb25uZWN0b3IiLCJjdXJ2aW5lc3MiLCJFbmRwb2ludCIsInJhZGl1cyIsIlBhaW50U3R5bGUiLCJzdHJva2UiLCJzdHJva2VXaWR0aCIsIkVuZHBvaW50U3R5bGUiLCJmaWxsIiwiSG92ZXJQYWludFN0eWxlIiwiRW5kcG9pbnRIb3ZlclN0eWxlIiwiYmluZCIsImluZm8iLCJ0YXJnZXRFbGVtZW50IiwiZG9jdW1lbnQiLCJnZXRFbGVtZW50QnlJZCIsInRhcmdldElkIiwiZ2V0QXR0cmlidXRlIiwic2V0QXR0cmlidXRlIiwic291cmNlSWQiLCJzb3VyY2VFbGVtZW50IiwicXVlcnlTZWxlY3RvciIsInNvdXJjZVR5cGUiLCJ0YXJnZXRUeXBlIiwiaXNQZXJtYW5lbnRTb3VyY2UiLCJpbmNsdWRlcyIsImlzUGVybWFuZW50VGFyZ2V0Iiwic3RhcnRzV2l0aCIsImluc3RhbmNlIiwiZGVsZXRlRXZlcnlFbmRwb2ludCIsImNvbm5lY3RvckxlZnRFbGVtZW50cyIsInF1ZXJ5U2VsZWN0b3JBbGwiLCJjb25uZWN0b3JSaWdodEVsZW1lbnRzIiwiY2FibGVDb3BwZXJMZWZ0RWxlbWVudHMiLCJjYWJsZUNvcHBlclJpZ2h0RWxlbWVudHMiLCJjYWJsZU0xMlhMZWZ0RWxlbWVudHMiLCJjYWJsZU0xMlhSaWdodEVsZW1lbnRzIiwiY2FibGVNMTJETGVmdEVsZW1lbnRzIiwiY2FibGVNMTJEUmlnaHRFbGVtZW50cyIsImNhYmxlRmliZXJMZWZ0RWxlbWVudHMiLCJjYWJsZUZpYmVyUmlnaHRFbGVtZW50cyIsIm1vZGVsUG9ydENvcHBlckVsZW1lbnRzIiwibW9kZWxQb3J0TTEyREVsZW1lbnRzIiwibW9kZWxQb3J0TTEyWEVsZW1lbnRzIiwibW9kZWxQb3J0RmliZXJFbGVtZW50cyIsInRlc3RDb3BwZXJQb3J0RWxlbWVudHMiLCJ0ZXN0TTEyRFBvcnRFbGVtZW50cyIsInRlc3RNMTJYUG9ydEVsZW1lbnRzIiwidGVzdENhbVBvcnRFbGVtZW50cyIsInRlc3RBcm1Qb3J0RWxlbWVudHMiLCJ0ZXN0RmliZXJQb3J0RWxlbWVudHMiLCJ0ZXN0VGVzdE1QT1BvcnRFbGVtZW50cyIsInRlc3RNUE9Qb3J0TGVmdEVsZW1lbnRzIiwidGVzdE1QT1BvcnRSaWdodEVsZW1lbnRzIiwidGVzdE1QT0JPWFBvcnRFbGVtZW50cyIsInRlc3RNUE9MQ0JPWFBvcnRFbGVtZW50cyIsImZvckVhY2giLCJlbGVtZW50IiwiaWQiLCJhZGRFbmRwb2ludCIsImFuY2hvciIsImlzU291cmNlIiwiaXNUYXJnZXQiLCJtYXhDb25uZWN0aW9ucyIsImNvbm5lY3RvclN0eWxlIiwiY29ubmVjdG9ySG92ZXJTdHlsZSIsInBhaW50U3R5bGUiLCJob3ZlclBhaW50U3R5bGUiLCJpc1Blcm1hbmVudCIsImdldEFsbENvbm5lY3Rpb25zIiwiY29ubiIsInNvdXJjZSIsInRhcmdldCIsImNvbm5lY3Rpb24iLCJjbGVhbnVwUG9ydFN0YXR1cyIsImVsZW1lbnRJZCIsInJldHJ5Q291bnQiLCJjbGVhbnVwQXR0ZW1wdCIsImF0dGVtcHRDb3VudCIsImNsYXNzTGlzdCIsImNvbnRhaW5zIiwicmVtb3ZlIiwic2V0VGltZW91dCIsIm9yaWdpbmFsU291cmNlSWQiLCJvcmlnaW5hbFRhcmdldElkIiwibmV3U291cmNlSWQiLCJuZXdUYXJnZXRJZCIsInJlcGFpbnRFdmVyeXRoaW5nIiwiZXJyb3IiLCJjb25zb2xlIiwicmVzZXQiLCJkaXYiLCJyZWYiLCJjbGFzc05hbWUiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(pages-dir-node)/./src/components/JsPlumbInit.js\n"); /***/ }), /***/ "(pages-dir-node)/./src/components/ResultTable.js": /*!***************************************!*\ !*** ./src/components/ResultTable.js ***! \***************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; eval("__webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {\n__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_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"react/jsx-dev-runtime\");\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 */ \"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _store_deviceStore__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/store/deviceStore */ \"(pages-dir-node)/./src/store/deviceStore.js\");\nvar __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_store_deviceStore__WEBPACK_IMPORTED_MODULE_2__]);\n_store_deviceStore__WEBPACK_IMPORTED_MODULE_2__ = (__webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__)[0];\n\n\n\nconst ResultTable = ()=>{\n const [records, setRecords] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)([\n {\n id: 1,\n linkName: '',\n testResult: 'pass',\n faults: [\n {\n id: 1,\n type: '',\n location: '',\n reason: ''\n }\n ]\n }\n ]);\n // 添加新记录\n const addRecord = ()=>{\n const newRecord = {\n id: Date.now(),\n linkName: '',\n testResult: 'pass',\n faults: [\n {\n id: Date.now(),\n type: '',\n location: '',\n reason: ''\n }\n ]\n };\n setRecords([\n ...records,\n newRecord\n ]);\n };\n // 删除记录\n const deleteRecord = (recordId)=>{\n setRecords(records.filter((record)=>record.id !== recordId));\n };\n // 更新记录基本信息\n const updateRecord = (recordId, field, value)=>{\n setRecords(records.map((record)=>record.id === recordId ? {\n ...record,\n [field]: value\n } : record));\n };\n // 添加故障类型\n const addFault = (recordId)=>{\n setRecords(records.map((record)=>record.id === recordId ? {\n ...record,\n faults: [\n ...record.faults,\n {\n id: Date.now(),\n type: '',\n location: '',\n reason: ''\n }\n ]\n } : record));\n };\n // 删除故障类型\n const deleteFault = (recordId, faultId)=>{\n setRecords(records.map((record)=>record.id === recordId ? {\n ...record,\n faults: record.faults.filter((fault)=>fault.id !== faultId)\n } : record));\n };\n // 更新故障信息\n const updateFault = (recordId, faultId, field, value)=>{\n setRecords(records.map((record)=>record.id === recordId ? {\n ...record,\n faults: record.faults.map((fault)=>fault.id === faultId ? {\n ...fault,\n [field]: value\n } : fault)\n } : record));\n };\n // 提交表单\n const handleSubmit = ()=>{\n // 验证表单\n const isValid = records.every((record)=>{\n if (!record.linkName.trim()) return false;\n return record.faults.every((fault)=>{\n if (record.testResult === 'fail') {\n return fault.type.trim() && fault.location.trim() && fault.reason.trim();\n }\n return true;\n });\n });\n if (!isValid) {\n alert('请填写完整的记录');\n return;\n }\n // 直接使用当前的 records 更新 store\n _store_deviceStore__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getState().updateReports(records);\n alert('记录提交成功!');\n };\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-[#1E293B] rounded-lg p-6 text-white\",\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-xl font-bold text-[#0ff]\",\n children: \"故障检测分析表\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/ResultTable.js\",\n lineNumber: 121,\n columnNumber: 9\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: addRecord,\n className: \"bg-[#0ff] text-black px-4 py-2 rounded hover:bg-[#0ff]/80 transition-colors\",\n children: \"添加记录\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/ResultTable.js\",\n lineNumber: 122,\n columnNumber: 9\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/ResultTable.js\",\n lineNumber: 120,\n columnNumber: 7\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-y-6 max-h-[70vh] overflow-y-auto custom-scrollbar\",\n children: records.map((record, recordIndex)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-[#0F172A] rounded-lg p-4 border border-[#0ff]/20\",\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 text-[#0ff]\",\n children: [\n \"记录 \",\n recordIndex + 1\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/ResultTable.js\",\n lineNumber: 134,\n columnNumber: 15\n }, undefined),\n records.length > 1 && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>deleteRecord(record.id),\n className: \"text-red-400 hover:text-red-300 transition-colors\",\n children: \"删除记录\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/ResultTable.js\",\n lineNumber: 136,\n columnNumber: 17\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/ResultTable.js\",\n lineNumber: 133,\n columnNumber: 13\n }, undefined),\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 mb-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 mb-2\",\n children: \"链路名称 *\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/ResultTable.js\",\n lineNumber: 147,\n columnNumber: 17\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"text\",\n value: record.linkName,\n onChange: (e)=>updateRecord(record.id, 'linkName', e.target.value),\n className: \"w-full bg-[#1E293B] border border-[#0ff]/30 rounded px-3 py-2 text-white focus:border-[#0ff] focus:outline-none\",\n placeholder: \"请输入链路名称\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/ResultTable.js\",\n lineNumber: 148,\n columnNumber: 17\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/ResultTable.js\",\n lineNumber: 146,\n columnNumber: 15\n }, undefined),\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 mb-2\",\n children: \"检测结果 *\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/ResultTable.js\",\n lineNumber: 157,\n columnNumber: 17\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"select\", {\n value: record.testResult,\n onChange: (e)=>updateRecord(record.id, 'testResult', e.target.value),\n className: \"w-full bg-[#1E293B] border border-[#0ff]/30 rounded px-3 py-2 text-white focus:border-[#0ff] focus:outline-none\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"option\", {\n value: \"pass\",\n children: \"通过\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/ResultTable.js\",\n lineNumber: 163,\n columnNumber: 19\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"option\", {\n value: \"fail\",\n children: \"失败\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/ResultTable.js\",\n lineNumber: 164,\n columnNumber: 19\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/ResultTable.js\",\n lineNumber: 158,\n columnNumber: 17\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/ResultTable.js\",\n lineNumber: 156,\n columnNumber: 15\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/ResultTable.js\",\n lineNumber: 145,\n columnNumber: 13\n }, undefined),\n record.testResult === 'fail' && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"border-t border-[#0ff]/20 pt-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex justify-between items-center mb-3\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h4\", {\n className: \"text-md font-medium text-[#0ff]\",\n children: \"故障信息\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/ResultTable.js\",\n lineNumber: 172,\n columnNumber: 19\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>addFault(record.id),\n className: \"bg-[#0ff]/20 text-[#0ff] px-3 py-1 rounded text-sm hover:bg-[#0ff]/30 transition-colors\",\n children: \"添加故障\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/ResultTable.js\",\n lineNumber: 173,\n columnNumber: 19\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/ResultTable.js\",\n lineNumber: 171,\n columnNumber: 17\n }, undefined),\n record.faults.map((fault, faultIndex)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-[#1E293B]/50 rounded p-3 mb-3 border border-[#0ff]/10\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex justify-between items-center mb-3\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-sm text-gray-300\",\n children: [\n \"故障 \",\n faultIndex + 1\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/ResultTable.js\",\n lineNumber: 184,\n columnNumber: 23\n }, undefined),\n record.faults.length > 1 && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>deleteFault(record.id, fault.id),\n className: \"text-red-400 hover:text-red-300 text-sm transition-colors\",\n children: \"删除\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/ResultTable.js\",\n lineNumber: 186,\n columnNumber: 25\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/ResultTable.js\",\n lineNumber: 183,\n columnNumber: 21\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid grid-cols-1 gap-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)(\"label\", {\n className: \"block text-sm font-medium mb-1\",\n children: \"故障类型 *\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/ResultTable.js\",\n lineNumber: 197,\n columnNumber: 25\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"text\",\n value: fault.type,\n onChange: (e)=>updateFault(record.id, fault.id, 'type', e.target.value),\n className: \"w-full bg-[#0F172A] border border-[#0ff]/20 rounded px-3 py-2 text-white text-sm focus:border-[#0ff] focus:outline-none\",\n placeholder: \"请输入故障类型\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/ResultTable.js\",\n lineNumber: 198,\n columnNumber: 25\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/ResultTable.js\",\n lineNumber: 196,\n columnNumber: 23\n }, undefined),\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 mb-1\",\n children: \"故障位置 *\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/ResultTable.js\",\n lineNumber: 207,\n columnNumber: 25\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"text\",\n value: fault.location,\n onChange: (e)=>updateFault(record.id, fault.id, 'location', e.target.value),\n className: \"w-full bg-[#0F172A] border border-[#0ff]/20 rounded px-3 py-2 text-white text-sm focus:border-[#0ff] focus:outline-none\",\n placeholder: \"请输入故障位置\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/ResultTable.js\",\n lineNumber: 208,\n columnNumber: 25\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/ResultTable.js\",\n lineNumber: 206,\n columnNumber: 23\n }, undefined),\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 mb-1\",\n children: \"故障原因 *\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/ResultTable.js\",\n lineNumber: 217,\n columnNumber: 25\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"textarea\", {\n value: fault.reason,\n onChange: (e)=>updateFault(record.id, fault.id, 'reason', e.target.value),\n className: \"w-full bg-[#0F172A] border border-[#0ff]/20 rounded px-3 py-2 text-white text-sm focus:border-[#0ff] focus:outline-none resize-none\",\n placeholder: \"请输入故障原因\",\n rows: 2\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/ResultTable.js\",\n lineNumber: 218,\n columnNumber: 25\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/ResultTable.js\",\n lineNumber: 216,\n columnNumber: 23\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/ResultTable.js\",\n lineNumber: 195,\n columnNumber: 21\n }, undefined)\n ]\n }, fault.id, true, {\n fileName: \"/opt/dev/est-dsx/src/components/ResultTable.js\",\n lineNumber: 182,\n columnNumber: 19\n }, undefined))\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/ResultTable.js\",\n lineNumber: 170,\n columnNumber: 15\n }, undefined)\n ]\n }, record.id, true, {\n fileName: \"/opt/dev/est-dsx/src/components/ResultTable.js\",\n lineNumber: 132,\n columnNumber: 11\n }, undefined))\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/ResultTable.js\",\n lineNumber: 130,\n columnNumber: 7\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mt-6 flex justify-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: handleSubmit,\n className: \"bg-[#0ff] text-black px-8 py-3 rounded-lg font-semibold hover:bg-[#0ff]/80 transition-colors\",\n children: \"保存记录\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/ResultTable.js\",\n lineNumber: 236,\n columnNumber: 9\n }, undefined)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/ResultTable.js\",\n lineNumber: 235,\n columnNumber: 7\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/ResultTable.js\",\n lineNumber: 119,\n columnNumber: 5\n }, undefined);\n};\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ResultTable);\n\n__webpack_async_result__();\n} catch(e) { __webpack_async_result__(e); } });//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHBhZ2VzLWRpci1ub2RlKS8uL3NyYy9jb21wb25lbnRzL1Jlc3VsdFRhYmxlLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFBd0M7QUFDUztBQUVqRCxNQUFNRyxjQUFjO0lBQ2xCLE1BQU0sQ0FBQ0MsU0FBU0MsV0FBVyxHQUFHSiwrQ0FBUUEsQ0FBQztRQUNyQztZQUNFSyxJQUFJO1lBQ0pDLFVBQVU7WUFDVkMsWUFBWTtZQUNaQyxRQUFRO2dCQUFDO29CQUNQSCxJQUFJO29CQUNKSSxNQUFNO29CQUNOQyxVQUFVO29CQUNWQyxRQUFRO2dCQUNWO2FBQUU7UUFDSjtLQUNEO0lBRUQsUUFBUTtJQUNSLE1BQU1DLFlBQVk7UUFDaEIsTUFBTUMsWUFBWTtZQUNoQlIsSUFBSVMsS0FBS0MsR0FBRztZQUNaVCxVQUFVO1lBQ1ZDLFlBQVk7WUFDWkMsUUFBUTtnQkFBQztvQkFDUEgsSUFBSVMsS0FBS0MsR0FBRztvQkFDWk4sTUFBTTtvQkFDTkMsVUFBVTtvQkFDVkMsUUFBUTtnQkFDVjthQUFFO1FBQ0o7UUFDQVAsV0FBVztlQUFJRDtZQUFTVTtTQUFVO0lBQ3BDO0lBRUEsT0FBTztJQUNQLE1BQU1HLGVBQWUsQ0FBQ0M7UUFDcEJiLFdBQVdELFFBQVFlLE1BQU0sQ0FBQ0MsQ0FBQUEsU0FBVUEsT0FBT2QsRUFBRSxLQUFLWTtJQUNwRDtJQUVBLFdBQVc7SUFDWCxNQUFNRyxlQUFlLENBQUNILFVBQVVJLE9BQU9DO1FBQ3JDbEIsV0FBV0QsUUFBUW9CLEdBQUcsQ0FBQ0osQ0FBQUEsU0FDckJBLE9BQU9kLEVBQUUsS0FBS1ksV0FDVjtnQkFBRSxHQUFHRSxNQUFNO2dCQUFFLENBQUNFLE1BQU0sRUFBRUM7WUFBTSxJQUM1Qkg7SUFFUjtJQUVBLFNBQVM7SUFDVCxNQUFNSyxXQUFXLENBQUNQO1FBQ2hCYixXQUFXRCxRQUFRb0IsR0FBRyxDQUFDSixDQUFBQSxTQUNyQkEsT0FBT2QsRUFBRSxLQUFLWSxXQUNWO2dCQUNFLEdBQUdFLE1BQU07Z0JBQ1RYLFFB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QU0sQ0FBQzFCLEtBQUs7b0VBQ3hFZSxXQUFVO29FQUNWWSxhQUFZOzs7Ozs7Ozs7Ozs7c0VBR2hCLDhEQUFDYjs7OEVBQ0MsOERBQUNRO29FQUFNUCxXQUFVOzhFQUFpQzs7Ozs7OzhFQUNsRCw4REFBQ1E7b0VBQ0NwQyxNQUFLO29FQUNMYSxPQUFPSyxNQUFNakIsUUFBUTtvRUFDckJvQyxVQUFVLENBQUNDLElBQU1uQixZQUFZVCxPQUFPZCxFQUFFLEVBQUVzQixNQUFNdEIsRUFBRSxFQUFFLFlBQVkwQyxFQUFFQyxNQUFNLENBQUMxQixLQUFLO29FQUM1RWUsV0FBVTtvRUFDVlksYUFBWTs7Ozs7Ozs7Ozs7O3NFQUdoQiw4REFBQ2I7OzhFQUNDLDhEQUFDUTtvRUFBTVAsV0FBVTs4RUFBaUM7Ozs7Ozs4RUFDbEQsOERBQUNrQjtvRUFDQ2pDLE9BQU9LLE1BQU1oQixNQUFNO29FQUNuQm1DLFVBQVUsQ0FBQ0MsSUFBTW5CLFlBQVlULE9BQU9kLEVBQUUsRUFBRXNCLE1BQU10QixFQUFFLEVBQUUsVUFBVTBDLEVBQUVDLE1BQU0sQ0FBQzFCLEtBQUs7b0VBQzFFZSxXQUFVO29FQUNWWSxhQUFZO29FQUNaTyxNQUFNOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OzJDQXpDSjdCLE1BQU10QixFQUFFOzs7Ozs7Ozs7Ozs7dUJBbERoQmMsT0FBT2QsRUFBRTs7Ozs7Ozs7OzswQkF1R3ZCLDhEQUFDK0I7Z0JBQUlDLFdBQVU7MEJBQ2IsNEVBQUNFO29CQUNDQyxTQUFTWDtvQkFDVFEsV0FBVTs4QkFDWDs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFNVDtBQUVBLGlFQUFlbkMsV0FBV0EsRUFBQyIsInNvdXJjZXMiOlsiL29wdC9kZXYvZXN0LWRzeC9zcmMvY29tcG9uZW50cy9SZXN1bHRUYWJsZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XHJcbmltcG9ydCB1c2VEZXZpY2VTdG9yZSBmcm9tICdAL3N0b3JlL2RldmljZVN0b3JlJztcclxuXHJcbmNvbnN0IFJlc3VsdFRhYmxlID0gKCkgPT4ge1xyXG4gIGNvbnN0IFtyZWNvcmRzLCBzZXRSZWNvcmRzXSA9IHVzZVN0YXRlKFtcclxuICAgIHtcclxuICAgICAgaWQ6IDEsXHJcbiAgICAgIGxpbmtOYW1lOiAnJyxcclxuICAgICAgdGVzdFJlc3VsdDogJ3Bhc3MnLFxyXG4gICAgICBmYXVsdHM6IFt7XHJcbiAgICAgICAgaWQ6IDEsXHJcbiAgICAgICAgdHlwZTogJycsXHJcbiAgICAgICAgbG9jYXRpb246ICcnLFxyXG4gICAgICAgIHJlYXNvbjogJydcclxuICAgICAgfV1cclxuICAgIH1cclxuICBdKTtcclxuXHJcbiAgLy8g5re75Yqg5paw6K6w5b2VXHJcbiAgY29uc3QgYWRkUmVjb3JkID0gKCkgPT4ge1xyXG4gICAgY29uc3QgbmV3UmVjb3JkID0ge1xyXG4gICAgICBpZDogRGF0ZS5ub3coKSxcclxuICAgICAgbGlua05hbWU6ICcnLFxyXG4gICAgICB0ZXN0UmVzdWx0OiAncGFzcycsXHJcbiAgICAgIGZhdWx0czogW3tcclxuICAgICAgICBpZDogRGF0ZS5ub3coKSxcclxuICAgICAgICB0eXBlOiAnJyxcclxuICAgICAgICBsb2NhdGlvbjogJycsXHJcbiAgICAgICAgcmVhc29uOiAnJ1xyXG4gICAgICB9XVxyXG4gICAgfTtcclxuICAgIHNldFJlY29yZHMoWy4uLnJlY29yZHMsIG5ld1JlY29yZF0pO1xyXG4gIH07XHJcblxyXG4gIC8vIOWIoOmZpOiusOW9lVxyXG4gIGNvbnN0IGRlbGV0ZVJlY29yZCA9IChyZWNvcmRJZCkgPT4ge1xyXG4gICAgc2V0UmVjb3JkcyhyZWNvcmRzLmZpbHRlcihyZWNvcmQgPT4gcmVjb3JkLmlkICE9PSByZWNvcmRJZCkpO1xyXG4gIH07XHJcblxyXG4gIC8vIOabtOaWsOiusOW9leWfuuacrOS/oeaBr1xyXG4gIGNvbnN0IHVwZGF0ZVJlY29yZCA9IChyZWNvcmRJZCwgZmllbGQsIHZhbHVlKSA9PiB7XHJcbiAgICBzZXRSZWNvcmRzKHJlY29yZHMubWFwKHJlY29yZCA9PiBcclxuICAgICAgcmVjb3JkLmlkID09PSByZWNvcmRJZCBcclxuICAgICAgICA/IHsgLi4ucmVjb3JkLCBbZmllbGRdOiB2YWx1ZSB9XHJcbiAgICAgICAgOiByZWNvcmRcclxuICAgICkpO1xyXG4gIH07XHJcblxyXG4gIC8vIOa3u+WKoOaVhemanOexu+Wei1xyXG4gIGNvbnN0IGFkZEZhdWx0ID0gKHJlY29yZElkKSA9PiB7XHJcbiAgICBzZXRSZWNvcmRzKHJlY29yZHMubWFwKHJlY29yZCA9PiBcclxuICAgICAgcmVjb3JkLmlkID09PSByZWNvcmRJZCBcclxuICAgICAgICA/IHtcclxuICAgICAgICAgICAgLi4ucmVjb3JkLFxyXG4gICAgICAgICAgICBmYXVsdHM6IFsuLi5yZWNvcmQuZmF1bHRzLCB7XHJcbiAgICAgICAgICAgICAgaWQ6IERhdGUubm93KCksXHJcbiAgICAgICAgICAgICAgdHlwZTogJycsXHJcbiAgICAgICAgICAgICAgbG9jYXRpb246ICcnLFxyXG4gICAgICAgICAgICAgIHJlYXNvbjogJydcclxuICAgICAgICAgICAgfV1cclxuICAgICAgICAgIH1cclxuICAgICAgICA6IHJlY29yZFxyXG4gICAgKSk7XHJcbiAgfTtcclxuXHJcbiAgLy8g5Yig6Zmk5pWF6Zqc57G75Z6LXHJcbiAgY29uc3QgZGVsZXRlRmF1bHQgPSAocmVjb3JkSWQsIGZhdWx0SWQpID0+IHtcclxuICAgIHNldFJlY29yZHMocmVjb3Jkcy5tYXAocmVjb3JkID0+IFxyXG4gICAgICByZWNvcmQuaWQgPT09IHJlY29yZElkIFxyXG4gICAgICAgID8ge1xyXG4gICAgICAgICAgICAuLi5yZWNvcmQsXHJcbiAgICAgICAgICAgIGZhdWx0czogcmVjb3JkLmZhdWx0cy5maWx0ZXIoZmF1bHQgPT4gZmF1bHQuaWQgIT09IGZhdWx0SWQpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgOiByZWNvcmRcclxuICAgICkpO1xyXG4gIH07XHJcblxyXG4gIC8vIOabtOaWsOaVhemanOS/oeaBr1xyXG4gIGNvbnN0IHVwZGF0ZUZhdWx0ID0gKHJlY29yZElkLCBmYXVsdElkLCBmaWVsZCwgdmFsdWUpID0+IHtcclxuICAgIHNldFJlY29yZHMocmVjb3Jkcy5tYXAocmVjb3JkID0+IFxyXG4gICAgICByZWNvcmQuaWQgPT09IHJlY29yZElkIFxyXG4gICAgICAgID8ge1xyXG4gICAgICAgICAgICAuLi5yZWNvcmQsXHJcbiAgICAgICAgICAgIGZhdWx0czogcmVjb3JkLmZhdWx0cy5tYXAoZmF1bHQgPT4gXHJcbiAgICAgICAgICAgICAgZmF1bHQuaWQgPT09IGZhdWx0SWQgXHJcbiAgICAgICAgICAgICAgICA/IHsgLi4uZmF1bHQsIFtmaWVsZF06IHZhbHVlIH1cclxuICAgICAgICAgICAgICAgIDogZmF1bHRcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIDogcmVjb3JkXHJcbiAgICApKTtcclxuICB9O1xyXG5cclxuXHJcbiAgLy8g5o+Q5Lqk6KGo5Y2VXHJcbiAgY29uc3QgaGFuZGxlU3VibWl0ID0gKCkgPT4ge1xyXG4gICAgLy8g6aqM6K+B6KGo5Y2VXHJcbiAgICBjb25zdCBpc1ZhbGlkID0gcmVjb3Jkcy5ldmVyeShyZWNvcmQgPT4ge1xyXG4gICAgICBpZiAoIXJlY29yZC5saW5rTmFtZS50cmltKCkpIHJldHVybiBmYWxzZTtcclxuICAgICAgcmV0dXJuIHJlY29yZC5mYXVsdHMuZXZlcnkoZmF1bHQgPT4ge1xyXG4gICAgICAgIGlmIChyZWNvcmQudGVzdFJlc3VsdCA9PT0gJ2ZhaWwnKSB7XHJcbiAgICAgICAgICByZXR1cm4gZmF1bHQudHlwZS50cmltKCkgJiYgZmF1bHQubG9jYXRpb24udHJpbSgpICYmIGZhdWx0LnJlYXNvbi50cmltKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG5cclxuICAgIGlmICghaXNWYWxpZCkge1xyXG4gICAgICBhbGVydCgn6K+35aGr5YaZ5a6M5pW055qE6K6w5b2VJyk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICAvLyDnm7TmjqXkvb/nlKjlvZPliY3nmoQgcmVjb3JkcyDmm7TmlrAgc3RvcmVcclxuICAgIHVzZURldmljZVN0b3JlLmdldFN0YXRlKCkudXBkYXRlUmVwb3J0cyhyZWNvcmRzKTsgXHJcbiAgICBhbGVydCgn6K6w5b2V5o+Q5Lqk5oiQ5Yqf77yBJyk7XHJcbiAgfTtcclxuXHJcbiAgcmV0dXJuIChcclxuICAgIDxkaXYgY2xhc3NOYW1lPVwiYmctWyMxRTI5M0JdIHJvdW5kZWQtbGcgcC02IHRleHQtd2hpdGVcIj5cclxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGp1c3RpZnktYmV0d2VlbiBpdGVtcy1jZW50ZXIgbWItNlwiPlxyXG4gICAgICAgIDxoMiBjbGFzc05hbWU9XCJ0ZXh0LXhsIGZvbnQtYm9sZCB0ZXh0LVsjMGZmXVwiPuaVhemanOajgOa1i+WIhuaekOihqDwvaDI+XHJcbiAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgb25DbGljaz17YWRkUmVjb3JkfVxyXG4gICAgICAgICAgY2xhc3NOYW1lPVwiYmctWyMwZmZdIHRleHQtYmxhY2sgcHgtNCBweS0yIHJvdW5kZWQgaG92ZXI6YmctWyMwZmZdLzgwIHRyYW5zaXRpb24tY29sb3JzXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICDmt7vliqDorrDlvZVcclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInNwYWNlLXktNiBtYXgtaC1bNzB2aF0gb3ZlcmZsb3cteS1hdXRvIGN1c3RvbS1zY3JvbGxiYXJcIj5cclxuICAgICAgICB7cmVjb3Jkcy5tYXAoKHJlY29yZCwgcmVjb3JkSW5kZXgpID0+IChcclxuICAgICAgICAgIDxkaXYga2V5PXtyZWNvcmQuaWR9IGNsYXNzTmFtZT1cImJnLVsjMEYxNzJBXSByb3VuZGVkLWxnIHAtNCBib3JkZXIgYm9yZGVyLVsjMGZmXS8yMFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXgganVzdGlmeS1iZXR3ZWVuIGl0ZW1zLWNlbnRlciBtYi00XCI+XHJcbiAgICAgICAgICAgICAgPGgzIGNsYXNzTmFtZT1cInRleHQtbGcgZm9udC1zZW1pYm9sZCB0ZXh0LVsjMGZmXVwiPuiusOW9lSB7cmVjb3JkSW5kZXggKyAxfTwvaDM+XHJcbiAgICAgICAgICAgICAge3JlY29yZHMubGVuZ3RoID4gMSAmJiAoXHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IGRlbGV0ZVJlY29yZChyZWNvcmQuaWQpfVxyXG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ0ZXh0LXJlZC00MDAgaG92ZXI6dGV4dC1yZWQtMzAwIHRyYW5zaXRpb24tY29sb3JzXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAg5Yig6Zmk6K6w5b2VXHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZ3JpZCBncmlkLWNvbHMtMSBtZDpncmlkLWNvbHMtMiBnYXAtNCBtYi00XCI+XHJcbiAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzc05hbWU9XCJibG9jayB0ZXh0LXNtIGZvbnQtbWVkaXVtIG1iLTJcIj7pk77ot6/lkI3np7AgKjwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICAgICAgICB2YWx1ZT17cmVjb3JkLmxpbmtOYW1lfVxyXG4gICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IHVwZGF0ZVJlY29yZChyZWNvcmQuaWQsICdsaW5rTmFtZScsIGUudGFyZ2V0LnZhbHVlKX1cclxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidy1mdWxsIGJnLVsjMUUyOTNCXSBib3JkZXIgYm9yZGVyLVsjMGZmXS8zMCByb3VuZGVkIHB4LTMgcHktMiB0ZXh0LXdoaXRlIGZvY3VzOmJvcmRlci1bIzBmZl0gZm9jdXM6b3V0bGluZS1ub25lXCJcclxuICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCLor7fovpPlhaXpk77ot6/lkI3np7BcIlxyXG4gICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzTmFtZT1cImJsb2NrIHRleHQtc20gZm9udC1tZWRpdW0gbWItMlwiPuajgOa1i+e7k+aenCAqPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgIDxzZWxlY3RcclxuICAgICAgICAgICAgICAgICAgdmFsdWU9e3JlY29yZC50ZXN0UmVzdWx0fVxyXG4gICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IHVwZGF0ZVJlY29yZChyZWNvcmQuaWQsICd0ZXN0UmVzdWx0JywgZS50YXJnZXQudmFsdWUpfVxyXG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ3LWZ1bGwgYmctWyMxRTI5M0JdIGJvcmRlciBib3JkZXItWyMwZmZdLzMwIHJvdW5kZWQgcHgtMyBweS0yIHRleHQtd2hpdGUgZm9jdXM6Ym9yZGVyLVsjMGZmXSBmb2N1czpvdXRsaW5lLW5vbmVcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwicGFzc1wiPumAmui/hzwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiZmFpbFwiPuWksei0pTwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgPC9zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAge3JlY29yZC50ZXN0UmVzdWx0ID09PSAnZmFpbCcgJiYgKFxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYm9yZGVyLXQgYm9yZGVyLVsjMGZmXS8yMCBwdC00XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXgganVzdGlmeS1iZXR3ZWVuIGl0ZW1zLWNlbnRlciBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxoNCBjbGFzc05hbWU9XCJ0ZXh0LW1kIGZvbnQtbWVkaXVtIHRleHQtWyMwZmZdXCI+5pWF6Zqc5L+h5oGvPC9oND5cclxuICAgICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IGFkZEZhdWx0KHJlY29yZC5pZCl9XHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiYmctWyMwZmZdLzIwIHRleHQtWyMwZmZdIHB4LTMgcHktMSByb3VuZGVkIHRleHQtc20gaG92ZXI6YmctWyMwZmZdLzMwIHRyYW5zaXRpb24tY29sb3JzXCJcclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIOa3u+WKoOaVhemanFxyXG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIHtyZWNvcmQuZmF1bHRzLm1hcCgoZmF1bHQsIGZhdWx0SW5kZXgpID0+IChcclxuICAgICAgICAgICAgICAgICAgPGRpdiBrZXk9e2ZhdWx0LmlkfSBjbGFzc05hbWU9XCJiZy1bIzFFMjkzQl0vNTAgcm91bmRlZCBwLTMgbWItMyBib3JkZXIgYm9yZGVyLVsjMGZmXS8xMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBqdXN0aWZ5LWJldHdlZW4gaXRlbXMtY2VudGVyIG1iLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtc20gdGV4dC1ncmF5LTMwMFwiPuaVhemanCB7ZmF1bHRJbmRleCArIDF9PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3JlY29yZC5mYXVsdHMubGVuZ3RoID4gMSAmJiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBkZWxldGVGYXVsdChyZWNvcmQuaWQsIGZhdWx0LmlkKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ0ZXh0LXJlZC00MDAgaG92ZXI6dGV4dC1yZWQtMzAwIHRleHQtc20gdHJhbnNpdGlvbi1jb2xvcnNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAg5Yig6ZmkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImdyaWQgZ3JpZC1jb2xzLTEgZ2FwLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzc05hbWU9XCJibG9jayB0ZXh0LXNtIGZvbnQtbWVkaXVtIG1iLTFcIj7mlYXpmpznsbvlnosgKjwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17ZmF1bHQudHlwZX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IHVwZGF0ZUZhdWx0KHJlY29yZC5pZCwgZmF1bHQuaWQsICd0eXBlJywgZS50YXJnZXQudmFsdWUpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInctZnVsbCBiZy1bIzBGMTcyQV0gYm9yZGVyIGJvcmRlci1bIzBmZl0vMjAgcm91bmRlZCBweC0zIHB5LTIgdGV4dC13aGl0ZSB0ZXh0LXNtIGZvY3VzOmJvcmRlci1bIzBmZl0gZm9jdXM6b3V0bGluZS1ub25lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIuivt+i+k+WFpeaVhemanOexu+Wei1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzc05hbWU9XCJibG9jayB0ZXh0LXNtIGZvbnQtbWVkaXVtIG1iLTFcIj7mlYXpmpzkvY3nva4gKjwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17ZmF1bHQubG9jYXRpb259XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiB1cGRhdGVGYXVsdChyZWNvcmQuaWQsIGZhdWx0LmlkLCAnbG9jYXRpb24nLCBlLnRhcmdldC52YWx1ZSl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidy1mdWxsIGJnLVsjMEYxNzJBXSBib3JkZXIgYm9yZGVyLVsjMGZmXS8yMCByb3VuZGVkIHB4LTMgcHktMiB0ZXh0LXdoaXRlIHRleHQtc20gZm9jdXM6Ym9yZGVyLVsjMGZmXSBmb2N1czpvdXRsaW5lLW5vbmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwi6K+36L6T5YWl5pWF6Zqc5L2N572uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzTmFtZT1cImJsb2NrIHRleHQtc20gZm9udC1tZWRpdW0gbWItMVwiPuaVhemanOWOn+WboCAqPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRleHRhcmVhXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2ZhdWx0LnJlYXNvbn1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IHVwZGF0ZUZhdWx0KHJlY29yZC5pZCwgZmF1bHQuaWQsICdyZWFzb24nLCBlLnRhcmdldC52YWx1ZSl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidy1mdWxsIGJnLVsjMEYxNzJBXSBib3JkZXIgYm9yZGVyLVsjMGZmXS8yMCByb3VuZGVkIHB4LTMgcHktMiB0ZXh0LXdoaXRlIHRleHQtc20gZm9jdXM6Ym9yZGVyLVsjMGZmXSBmb2N1czpvdXRsaW5lLW5vbmUgcmVzaXplLW5vbmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwi6K+36L6T5YWl5pWF6Zqc5Y6f5ZugXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICByb3dzPXsyfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgKSl9XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICl9XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICApKX1cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cIm10LTYgZmxleCBqdXN0aWZ5LWNlbnRlclwiPlxyXG4gICAgICAgIDxidXR0b25cclxuICAgICAgICAgIG9uQ2xpY2s9e2hhbmRsZVN1Ym1pdH1cclxuICAgICAgICAgIGNsYXNzTmFtZT1cImJnLVsjMGZmXSB0ZXh0LWJsYWNrIHB4LTggcHktMyByb3VuZGVkLWxnIGZvbnQtc2VtaWJvbGQgaG92ZXI6YmctWyMwZmZdLzgwIHRyYW5zaXRpb24tY29sb3JzXCJcclxuICAgICAgICA+XHJcbiAgICAgICAg5L+d5a2Y6K6w5b2VXHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgKTtcclxufTtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IFJlc3VsdFRhYmxlOyJdLCJuYW1lcyI6WyJSZWFjdCIsInVzZVN0YXRlIiwidXNlRGV2aWNlU3RvcmUiLCJSZXN1bHRUYWJsZSIsInJlY29yZHMiLCJzZXRSZWNvcmRzIiwiaWQiLCJsaW5rTmFtZSIsInRlc3RSZXN1bHQiLCJmYXVsdHMiLCJ0eXBlIiwibG9jYXRpb24iLCJyZWFzb24iLCJhZGRSZWNvcmQiLCJuZXdSZWNvcmQiLCJEYXRlIiwibm93IiwiZGVsZXRlUmVjb3JkIiwicmVjb3JkSWQiLCJmaWx0ZXIiLCJyZWNvcmQiLCJ1cGRhdGVSZWNvcmQiLCJmaWVsZCIsInZhbHVlIiwibWFwIiwiYWRkRmF1bHQiLCJkZWxldGVGYXVsdCIsImZhdWx0SWQiLCJmYXVsdCIsInVwZGF0ZUZhdWx0IiwiaGFuZGxlU3VibWl0IiwiaXNWYWxpZCIsImV2ZXJ5IiwidHJpbSIsImFsZXJ0IiwiZ2V0U3RhdGUiLCJ1cGRhdGVSZXBvcnRzIiwiZGl2IiwiY2xhc3NOYW1lIiwiaDIiLCJidXR0b24iLCJvbkNsaWNrIiwicmVjb3JkSW5kZXgiLCJoMyIsImxlbmd0aCIsImxhYmVsIiwiaW5wdXQiLCJvbkNoYW5nZSIsImUiLCJ0YXJnZXQiLCJwbGFjZWhvbGRlciIsInNlbGVjdCIsIm9wdGlvbiIsImg0IiwiZmF1bHRJbmRleCIsInNwYW4iLCJ0ZXh0YXJlYSIsInJvd3MiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(pages-dir-node)/./src/components/ResultTable.js\n"); /***/ }), /***/ "(pages-dir-node)/./src/components/SourceCheck.js": /*!***************************************!*\ !*** ./src/components/SourceCheck.js ***! \***************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; eval("__webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ SourceCheck)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _store_deviceStore__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/store/deviceStore */ \"(pages-dir-node)/./src/store/deviceStore.js\");\n/* harmony import */ var _store_displayStore__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/store/displayStore */ \"(pages-dir-node)/./src/store/displayStore.js\");\nvar __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_store_deviceStore__WEBPACK_IMPORTED_MODULE_1__, _store_displayStore__WEBPACK_IMPORTED_MODULE_2__]);\n([_store_deviceStore__WEBPACK_IMPORTED_MODULE_1__, _store_displayStore__WEBPACK_IMPORTED_MODULE_2__] = __webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__);\n\n\n\nfunction SourceCheck() {\n const { updataRef, getCurrentTestConfig } = (0,_store_displayStore__WEBPACK_IMPORTED_MODULE_2__[\"default\"])();\n const { mainUnitModules, remoteUnitModules, connectionStatus } = (0,_store_deviceStore__WEBPACK_IMPORTED_MODULE_1__[\"default\"])();\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)({\n \"SourceCheck.useEffect\": ()=>{\n const mainModule = mainUnitModules[0]?.id;\n if (!mainModule) return;\n const currentConfig = getCurrentTestConfig();\n const cableType = currentConfig.params.cableType;\n const isMultiMode = cableType.includes('OM');\n let moduleType, mainSelector, remoteSelector;\n // 根据主机模块类型决定检测逻辑\n if (mainModule === 'cfp') {\n const remoteCFP = remoteUnitModules[0]?.id;\n if (!remoteCFP || remoteCFP !== 'cfp') return;\n moduleType = 'cfp';\n mainSelector = `#main-cfp-${isMultiMode ? 'mm' : 'sm'}-out`;\n remoteSelector = `#remote-cfp-${isMultiMode ? 'mm' : 'sm'}-out`;\n } else if (mainModule === 'ofp') {\n moduleType = 'ofp';\n mainSelector = `#main-ofp-${isMultiMode ? 'mm' : 'sm'}-out`;\n remoteSelector = null; // OFP 模式不需要检查远端\n } else {\n return; // 其他模块类型不需要检测\n }\n // 检查元素是否存在\n const checkElements = {\n \"SourceCheck.useEffect.checkElements\": ()=>{\n const mainElement = document.querySelector(mainSelector);\n const remoteElement = remoteSelector ? document.querySelector(remoteSelector) : null;\n return {\n mainElement,\n remoteElement\n };\n }\n }[\"SourceCheck.useEffect.checkElements\"];\n const observer = new MutationObserver({\n \"SourceCheck.useEffect\": (mutations)=>{\n mutations.forEach({\n \"SourceCheck.useEffect\": (mutation)=>{\n if (mutation.type === 'attributes' && mutation.attributeName === 'fibersource') {\n const oldValue = mutation.oldValue;\n const newValue = mutation.target.getAttribute('fibersource');\n // 只在 fibersource 从 true 变为其他状态时触发\n if (oldValue === 'true' && newValue !== 'true') {\n updataRef(moduleType, {\n connectStatus: false\n });\n }\n }\n }\n }[\"SourceCheck.useEffect\"]);\n }\n }[\"SourceCheck.useEffect\"]);\n // 配置观察选项\n const config = {\n attributes: true,\n attributeFilter: [\n 'fibersource'\n ],\n attributeOldValue: true // 记录属性的旧值\n };\n // 开始观察元素\n const startObserving = {\n \"SourceCheck.useEffect.startObserving\": ()=>{\n const { mainElement, remoteElement } = checkElements();\n if (mainElement && (moduleType === 'ofp' || remoteElement)) {\n observer.observe(mainElement, config);\n if (moduleType === 'cfp' && remoteElement) {\n observer.observe(remoteElement, config);\n }\n // 立即检查初始连接状态\n const isMainConnected = mainElement.getAttribute('fibersource') === 'true';\n const isRemoteConnected = moduleType === 'cfp' ? remoteElement.getAttribute('fibersource') === 'true' : true;\n if (!isMainConnected || !isRemoteConnected) {\n updataRef(moduleType, {\n connectStatus: false\n });\n }\n } else {\n setTimeout(startObserving, 1000);\n }\n }\n }[\"SourceCheck.useEffect.startObserving\"];\n // 根据对应模块的状态决定是否开始观察\n const { ref } = _store_displayStore__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getState();\n if (moduleType === 'cfp' && ref?.cfp?.status || moduleType === 'ofp' && ref?.ofp?.status) {\n startObserving();\n }\n // 清理函数\n return ({\n \"SourceCheck.useEffect\": ()=>{\n observer.disconnect();\n }\n })[\"SourceCheck.useEffect\"];\n }\n }[\"SourceCheck.useEffect\"], [\n mainUnitModules,\n remoteUnitModules,\n updataRef,\n getCurrentTestConfig,\n connectionStatus\n ]);\n return null;\n}\n\n__webpack_async_result__();\n} catch(e) { __webpack_async_result__(e); } });//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHBhZ2VzLWRpci1ub2RlKS8uL3NyYy9jb21wb25lbnRzL1NvdXJjZUNoZWNrLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQW9EO0FBQ0g7QUFDRTtBQUVwQyxTQUFTSztJQUN0QixNQUFNLEVBQUVDLFNBQVMsRUFBRUMsb0JBQW9CLEVBQUUsR0FBR0gsK0RBQWVBO0lBQzNELE1BQU0sRUFBRUksZUFBZSxFQUFFQyxpQkFBaUIsRUFBRUMsZ0JBQWdCLEVBQUUsR0FBR1AsOERBQWNBO0lBRS9FRixnREFBU0E7aUNBQUM7WUFDUixNQUFNVSxhQUFhSCxlQUFlLENBQUMsRUFBRSxFQUFFSTtZQUN2QyxJQUFJLENBQUNELFlBQVk7WUFFakIsTUFBTUUsZ0JBQWdCTjtZQUN0QixNQUFNTyxZQUFZRCxjQUFjRSxNQUFNLENBQUNELFNBQVM7WUFDaEQsTUFBTUUsY0FBY0YsVUFBVUcsUUFBUSxDQUFDO1lBRXZDLElBQUlDLFlBQVlDLGNBQWNDO1lBRTlCLGlCQUFpQjtZQUNqQixJQUFJVCxlQUFlLE9BQU87Z0JBQ3hCLE1BQU1VLFlBQVlaLGlCQUFpQixDQUFDLEVBQUUsRUFBRUc7Z0JBQ3hDLElBQUksQ0FBQ1MsYUFBYUEsY0FBYyxPQUFPO2dCQUV2Q0gsYUFBYTtnQkFDYkMsZUFBZSxDQUFDLFVBQVUsRUFBRUgsY0FBYyxPQUFPLEtBQUssSUFBSSxDQUFDO2dCQUMzREksaUJBQWlCLENBQUMsWUFBWSxFQUFFSixjQUFjLE9BQU8sS0FBSyxJQUFJLENBQUM7WUFDakUsT0FBTyxJQUFJTCxlQUFlLE9BQU87Z0JBQy9CTyxhQUFhO2dCQUNiQyxlQUFlLENBQUMsVUFBVSxFQUFFSCxjQUFjLE9BQU8sS0FBSyxJQUFJLENBQUM7Z0JBQzNESSxpQkFBaUIsTUFBTSxnQkFBZ0I7WUFDekMsT0FBTztnQkFDTCxRQUFRLGNBQWM7WUFDeEI7WUFFQSxXQUFXO1lBQ1gsTUFBTUU7dURBQWdCO29CQUNwQixNQUFNQyxjQUFjQyxTQUFTQyxhQUFhLENBQUNOO29CQUMzQyxNQUFNTyxnQkFBZ0JOLGlCQUFpQkksU0FBU0MsYUFBYSxDQUFDTCxrQkFBa0I7b0JBQ2hGLE9BQU87d0JBQUVHO3dCQUFhRztvQkFBYztnQkFDdEM7O1lBRUEsTUFBTUMsV0FBVyxJQUFJQzt5Q0FBaUIsQ0FBQ0M7b0JBQ3JDQSxVQUFVQyxPQUFPO2lEQUFDLENBQUNDOzRCQUNqQixJQUFJQSxTQUFTQyxJQUFJLEtBQUssZ0JBQWdCRCxTQUFTRSxhQUFhLEtBQUssZUFBZTtnQ0FDOUUsTUFBTUMsV0FBV0gsU0FBU0csUUFBUTtnQ0FDbEMsTUFBTUMsV0FBV0osU0FBU0ssTUFBTSxDQUFDQyxZQUFZLENBQUM7Z0NBRTlDLGtDQUFrQztnQ0FDbEMsSUFBSUgsYUFBYSxVQUFVQyxhQUFhLFFBQVE7b0NBQzlDN0IsVUFBVVksWUFBWTt3Q0FBRW9CLGVBQWU7b0NBQU07Z0NBQy9DOzRCQUNGO3dCQUNGOztnQkFDRjs7WUFFQSxTQUFTO1lBQ1QsTUFBTUMsU0FBUztnQkFDYkMsWUFBWTtnQkFDWkMsaUJBQWlCO29CQUFDO2lCQUFjO2dCQUNoQ0MsbUJBQW1CLEtBQU0sVUFBVTtZQUNyQztZQUVBLFNBQVM7WUFDVCxNQUFNQzt3REFBaUI7b0JBQ3JCLE1BQU0sRUFBRXBCLFdBQVcsRUFBRUcsYUFBYSxFQUFFLEdBQUdKO29CQUV2QyxJQUFJQyxlQUFnQkwsQ0FBQUEsZUFBZSxTQUFTUSxhQUFZLEdBQUk7d0JBQzFEQyxTQUFTaUIsT0FBTyxDQUFDckIsYUFBYWdCO3dCQUM5QixJQUFJckIsZUFBZSxTQUFTUSxlQUFlOzRCQUN6Q0MsU0FBU2lCLE9BQU8sQ0FBQ2xCLGVBQWVhO3dCQUNsQzt3QkFFQSxhQUFhO3dCQUNiLE1BQU1NLGtCQUFrQnRCLFlBQVljLFlBQVksQ0FBQyxtQkFBbUI7d0JBQ3BFLE1BQU1TLG9CQUFvQjVCLGVBQWUsUUFDdkNRLGNBQWNXLFlBQVksQ0FBQyxtQkFBbUIsU0FDOUM7d0JBRUYsSUFBSSxDQUFDUSxtQkFBbUIsQ0FBQ0MsbUJBQW1COzRCQUMxQ3hDLFVBQVVZLFlBQVk7Z0NBQUVvQixlQUFlOzRCQUFNO3dCQUMvQztvQkFDRixPQUFPO3dCQUNMUyxXQUFXSixnQkFBZ0I7b0JBQzdCO2dCQUNGOztZQUVBLG9CQUFvQjtZQUNwQixNQUFNLEVBQUVLLEdBQUcsRUFBRSxHQUFHNUMsb0VBQXdCO1lBQ3hDLElBQUksZUFBZ0IsU0FBUzRDLEtBQUtFLEtBQUtDLFVBQ2xDakMsZUFBZSxTQUFTOEIsS0FBS0ksS0FBS0QsUUFBUztnQkFDOUNSO1lBQ0Y7WUFFQSxPQUFPO1lBQ1A7eUNBQU87b0JBQ0xoQixTQUFTMEIsVUFBVTtnQkFDckI7O1FBQ0Y7Z0NBQUc7UUFBQzdDO1FBQWlCQztRQUFtQkg7UUFBV0M7UUFBc0JHO0tBQWlCO0lBRTFGLE9BQU87QUFDVCIsInNvdXJjZXMiOlsiL29wdC9kZXYvZXN0LWRzeC9zcmMvY29tcG9uZW50cy9Tb3VyY2VDaGVjay5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1c2VTdGF0ZSwgdXNlRWZmZWN0LCB1c2VSZWYgfSBmcm9tICdyZWFjdCc7XHJcbmltcG9ydCB1c2VEZXZpY2VTdG9yZSBmcm9tICdAL3N0b3JlL2RldmljZVN0b3JlJztcclxuaW1wb3J0IHVzZURpc3BsYXlTdG9yZSBmcm9tICdAL3N0b3JlL2Rpc3BsYXlTdG9yZSc7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBTb3VyY2VDaGVjaygpIHtcclxuICBjb25zdCB7IHVwZGF0YVJlZiwgZ2V0Q3VycmVudFRlc3RDb25maWcgfSA9IHVzZURpc3BsYXlTdG9yZSgpO1xyXG4gIGNvbnN0IHsgbWFpblVuaXRNb2R1bGVzLCByZW1vdGVVbml0TW9kdWxlcywgY29ubmVjdGlvblN0YXR1cyB9ID0gdXNlRGV2aWNlU3RvcmUoKTtcclxuXHJcbiAgdXNlRWZmZWN0KCgpID0+IHtcclxuICAgIGNvbnN0IG1haW5Nb2R1bGUgPSBtYWluVW5pdE1vZHVsZXNbMF0/LmlkO1xyXG4gICAgaWYgKCFtYWluTW9kdWxlKSByZXR1cm47XHJcblxyXG4gICAgY29uc3QgY3VycmVudENvbmZpZyA9IGdldEN1cnJlbnRUZXN0Q29uZmlnKCk7XHJcbiAgICBjb25zdCBjYWJsZVR5cGUgPSBjdXJyZW50Q29uZmlnLnBhcmFtcy5jYWJsZVR5cGU7XHJcbiAgICBjb25zdCBpc011bHRpTW9kZSA9IGNhYmxlVHlwZS5pbmNsdWRlcygnT00nKTtcclxuICAgIFxyXG4gICAgbGV0IG1vZHVsZVR5cGUsIG1haW5TZWxlY3RvciwgcmVtb3RlU2VsZWN0b3I7XHJcblxyXG4gICAgLy8g5qC55o2u5Li75py65qih5Z2X57G75Z6L5Yaz5a6a5qOA5rWL6YC76L6RXHJcbiAgICBpZiAobWFpbk1vZHVsZSA9PT0gJ2NmcCcpIHtcclxuICAgICAgY29uc3QgcmVtb3RlQ0ZQID0gcmVtb3RlVW5pdE1vZHVsZXNbMF0/LmlkO1xyXG4gICAgICBpZiAoIXJlbW90ZUNGUCB8fCByZW1vdGVDRlAgIT09ICdjZnAnKSByZXR1cm47XHJcblxyXG4gICAgICBtb2R1bGVUeXBlID0gJ2NmcCc7XHJcbiAgICAgIG1haW5TZWxlY3RvciA9IGAjbWFpbi1jZnAtJHtpc011bHRpTW9kZSA/ICdtbScgOiAnc20nfS1vdXRgO1xyXG4gICAgICByZW1vdGVTZWxlY3RvciA9IGAjcmVtb3RlLWNmcC0ke2lzTXVsdGlNb2RlID8gJ21tJyA6ICdzbSd9LW91dGA7XHJcbiAgICB9IGVsc2UgaWYgKG1haW5Nb2R1bGUgPT09ICdvZnAnKSB7XHJcbiAgICAgIG1vZHVsZVR5cGUgPSAnb2ZwJztcclxuICAgICAgbWFpblNlbGVjdG9yID0gYCNtYWluLW9mcC0ke2lzTXVsdGlNb2RlID8gJ21tJyA6ICdzbSd9LW91dGA7XHJcbiAgICAgIHJlbW90ZVNlbGVjdG9yID0gbnVsbDsgLy8gT0ZQIOaooeW8j+S4jemcgOimgeajgOafpei/nOerr1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuOyAvLyDlhbbku5bmqKHlnZfnsbvlnovkuI3pnIDopoHmo4DmtYtcclxuICAgIH1cclxuXHJcbiAgICAvLyDmo4Dmn6XlhYPntKDmmK/lkKblrZjlnKhcclxuICAgIGNvbnN0IGNoZWNrRWxlbWVudHMgPSAoKSA9PiB7XHJcbiAgICAgIGNvbnN0IG1haW5FbGVtZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihtYWluU2VsZWN0b3IpO1xyXG4gICAgICBjb25zdCByZW1vdGVFbGVtZW50ID0gcmVtb3RlU2VsZWN0b3IgPyBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKHJlbW90ZVNlbGVjdG9yKSA6IG51bGw7XHJcbiAgICAgIHJldHVybiB7IG1haW5FbGVtZW50LCByZW1vdGVFbGVtZW50IH07XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IG9ic2VydmVyID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIoKG11dGF0aW9ucykgPT4ge1xyXG4gICAgICBtdXRhdGlvbnMuZm9yRWFjaCgobXV0YXRpb24pID0+IHtcclxuICAgICAgICBpZiAobXV0YXRpb24udHlwZSA9PT0gJ2F0dHJpYnV0ZXMnICYmIG11dGF0aW9uLmF0dHJpYnV0ZU5hbWUgPT09ICdmaWJlcnNvdXJjZScpIHtcclxuICAgICAgICAgIGNvbnN0IG9sZFZhbHVlID0gbXV0YXRpb24ub2xkVmFsdWU7XHJcbiAgICAgICAgICBjb25zdCBuZXdWYWx1ZSA9IG11dGF0aW9uLnRhcmdldC5nZXRBdHRyaWJ1dGUoJ2ZpYmVyc291cmNlJyk7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIC8vIOWPquWcqCBmaWJlcnNvdXJjZSDku44gdHJ1ZSDlj5jkuLrlhbbku5bnirbmgIHml7bop6blj5FcclxuICAgICAgICAgIGlmIChvbGRWYWx1ZSA9PT0gJ3RydWUnICYmIG5ld1ZhbHVlICE9PSAndHJ1ZScpIHtcclxuICAgICAgICAgICAgdXBkYXRhUmVmKG1vZHVsZVR5cGUsIHsgY29ubmVjdFN0YXR1czogZmFsc2UgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG5cclxuICAgIC8vIOmFjee9ruinguWvn+mAiemhuVxyXG4gICAgY29uc3QgY29uZmlnID0geyBcclxuICAgICAgYXR0cmlidXRlczogdHJ1ZSwgXHJcbiAgICAgIGF0dHJpYnV0ZUZpbHRlcjogWydmaWJlcnNvdXJjZSddLFxyXG4gICAgICBhdHRyaWJ1dGVPbGRWYWx1ZTogdHJ1ZSAgLy8g6K6w5b2V5bGe5oCn55qE5pen5YC8XHJcbiAgICB9O1xyXG5cclxuICAgIC8vIOW8gOWni+inguWvn+WFg+e0oFxyXG4gICAgY29uc3Qgc3RhcnRPYnNlcnZpbmcgPSAoKSA9PiB7XHJcbiAgICAgIGNvbnN0IHsgbWFpbkVsZW1lbnQsIHJlbW90ZUVsZW1lbnQgfSA9IGNoZWNrRWxlbWVudHMoKTtcclxuXHJcbiAgICAgIGlmIChtYWluRWxlbWVudCAmJiAobW9kdWxlVHlwZSA9PT0gJ29mcCcgfHwgcmVtb3RlRWxlbWVudCkpIHtcclxuICAgICAgICBvYnNlcnZlci5vYnNlcnZlKG1haW5FbGVtZW50LCBjb25maWcpO1xyXG4gICAgICAgIGlmIChtb2R1bGVUeXBlID09PSAnY2ZwJyAmJiByZW1vdGVFbGVtZW50KSB7XHJcbiAgICAgICAgICBvYnNlcnZlci5vYnNlcnZlKHJlbW90ZUVsZW1lbnQsIGNvbmZpZyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyDnq4vljbPmo4Dmn6XliJ3lp4vov57mjqXnirbmgIFcclxuICAgICAgICBjb25zdCBpc01haW5Db25uZWN0ZWQgPSBtYWluRWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2ZpYmVyc291cmNlJykgPT09ICd0cnVlJztcclxuICAgICAgICBjb25zdCBpc1JlbW90ZUNvbm5lY3RlZCA9IG1vZHVsZVR5cGUgPT09ICdjZnAnID8gXHJcbiAgICAgICAgICByZW1vdGVFbGVtZW50LmdldEF0dHJpYnV0ZSgnZmliZXJzb3VyY2UnKSA9PT0gJ3RydWUnIDogXHJcbiAgICAgICAgICB0cnVlO1xyXG5cclxuICAgICAgICBpZiAoIWlzTWFpbkNvbm5lY3RlZCB8fCAhaXNSZW1vdGVDb25uZWN0ZWQpIHtcclxuICAgICAgICAgIHVwZGF0YVJlZihtb2R1bGVUeXBlLCB7IGNvbm5lY3RTdGF0dXM6IGZhbHNlIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBzZXRUaW1lb3V0KHN0YXJ0T2JzZXJ2aW5nLCAxMDAwKTtcclxuICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICAvLyDmoLnmja7lr7nlupTmqKHlnZfnmoTnirbmgIHlhrPlrprmmK/lkKblvIDlp4vop4Llr59cclxuICAgIGNvbnN0IHsgcmVmIH0gPSB1c2VEaXNwbGF5U3RvcmUuZ2V0U3RhdGUoKTtcclxuICAgIGlmICgobW9kdWxlVHlwZSA9PT0gJ2NmcCcgJiYgcmVmPy5jZnA/LnN0YXR1cykgfHwgXHJcbiAgICAgICAgKG1vZHVsZVR5cGUgPT09ICdvZnAnICYmIHJlZj8ub2ZwPy5zdGF0dXMpKSB7XHJcbiAgICAgIHN0YXJ0T2JzZXJ2aW5nKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8g5riF55CG5Ye95pWwXHJcbiAgICByZXR1cm4gKCkgPT4ge1xyXG4gICAgICBvYnNlcnZlci5kaXNjb25uZWN0KCk7XHJcbiAgICB9O1xyXG4gIH0sIFttYWluVW5pdE1vZHVsZXMsIHJlbW90ZVVuaXRNb2R1bGVzLCB1cGRhdGFSZWYsIGdldEN1cnJlbnRUZXN0Q29uZmlnLCBjb25uZWN0aW9uU3RhdHVzXSk7XHJcblxyXG4gIHJldHVybiBudWxsO1xyXG59Il0sIm5hbWVzIjpbInVzZVN0YXRlIiwidXNlRWZmZWN0IiwidXNlUmVmIiwidXNlRGV2aWNlU3RvcmUiLCJ1c2VEaXNwbGF5U3RvcmUiLCJTb3VyY2VDaGVjayIsInVwZGF0YVJlZiIsImdldEN1cnJlbnRUZXN0Q29uZmlnIiwibWFpblVuaXRNb2R1bGVzIiwicmVtb3RlVW5pdE1vZHVsZXMiLCJjb25uZWN0aW9uU3RhdHVzIiwibWFpbk1vZHVsZSIsImlkIiwiY3VycmVudENvbmZpZyIsImNhYmxlVHlwZSIsInBhcmFtcyIsImlzTXVsdGlNb2RlIiwiaW5jbHVkZXMiLCJtb2R1bGVUeXBlIiwibWFpblNlbGVjdG9yIiwicmVtb3RlU2VsZWN0b3IiLCJyZW1vdGVDRlAiLCJjaGVja0VsZW1lbnRzIiwibWFpbkVsZW1lbnQiLCJkb2N1bWVudCIsInF1ZXJ5U2VsZWN0b3IiLCJyZW1vdGVFbGVtZW50Iiwib2JzZXJ2ZXIiLCJNdXRhdGlvbk9ic2VydmVyIiwibXV0YXRpb25zIiwiZm9yRWFjaCIsIm11dGF0aW9uIiwidHlwZSIsImF0dHJpYnV0ZU5hbWUiLCJvbGRWYWx1ZSIsIm5ld1ZhbHVlIiwidGFyZ2V0IiwiZ2V0QXR0cmlidXRlIiwiY29ubmVjdFN0YXR1cyIsImNvbmZpZyIsImF0dHJpYnV0ZXMiLCJhdHRyaWJ1dGVGaWx0ZXIiLCJhdHRyaWJ1dGVPbGRWYWx1ZSIsInN0YXJ0T2JzZXJ2aW5nIiwib2JzZXJ2ZSIsImlzTWFpbkNvbm5lY3RlZCIsImlzUmVtb3RlQ29ubmVjdGVkIiwic2V0VGltZW91dCIsInJlZiIsImdldFN0YXRlIiwiY2ZwIiwic3RhdHVzIiwib2ZwIiwiZGlzY29ubmVjdCJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(pages-dir-node)/./src/components/SourceCheck.js\n"); /***/ }), /***/ "(pages-dir-node)/./src/components/dsxpage/fluke/CableId.js": /*!*************************************************!*\ !*** ./src/components/dsxpage/fluke/CableId.js ***! \*************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; eval("__webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ CableId)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"react/jsx-dev-runtime\");\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 */ \"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _components_lib_StatusBar__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/components/lib/StatusBar */ \"(pages-dir-node)/./src/components/lib/StatusBar.js\");\n/* harmony import */ var _components_lib_TitleBar__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/components/lib/TitleBar */ \"(pages-dir-node)/./src/components/lib/TitleBar.js\");\n/* harmony import */ var _components_lib_Keyboard__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/components/lib/Keyboard */ \"(pages-dir-node)/./src/components/lib/Keyboard.js\");\n/* harmony import */ var _store_displayStore__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/store/displayStore */ \"(pages-dir-node)/./src/store/displayStore.js\");\nvar __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_components_lib_StatusBar__WEBPACK_IMPORTED_MODULE_2__, _components_lib_TitleBar__WEBPACK_IMPORTED_MODULE_3__, _components_lib_Keyboard__WEBPACK_IMPORTED_MODULE_4__, _store_displayStore__WEBPACK_IMPORTED_MODULE_5__]);\n([_components_lib_StatusBar__WEBPACK_IMPORTED_MODULE_2__, _components_lib_TitleBar__WEBPACK_IMPORTED_MODULE_3__, _components_lib_Keyboard__WEBPACK_IMPORTED_MODULE_4__, _store_displayStore__WEBPACK_IMPORTED_MODULE_5__] = __webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__);\n\n\n\n\n\n\nfunction CableId() {\n const [showKeyboard, setShowKeyboard] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(true);\n const [cursorPosition, setCursorPosition] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(0);\n const [inputValue, setInputValue] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)('');\n const [inputValue2, setInputValue2] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)('');\n const [activeInput, setActiveInput] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(1); // 1 表示第一个输入框,2 表示第二个输入框\n const { getCurrentProject, getCurrentCableId, getCurrentCableId2, updateProject, goBack } = (0,_store_displayStore__WEBPACK_IMPORTED_MODULE_5__[\"default\"])();\n const currentProject = getCurrentProject();\n // 获取当前选中的电缆ID\n const currentCableId = getCurrentCableId().name;\n // 获取当前选中的电缆ID2\n const currentCableId2 = getCurrentCableId2().name;\n const { view } = _store_displayStore__WEBPACK_IMPORTED_MODULE_5__[\"default\"].getState().navigation.current;\n // 只在cfp视图下初始化第二个输入框\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)({\n \"CableId.useEffect\": ()=>{\n setInputValue(currentCableId);\n if (view === 'cfp') {\n setInputValue2(currentCableId2);\n }\n }\n }[\"CableId.useEffect\"], [\n currentCableId,\n currentCableId2,\n view\n ]);\n // 计算下一个序号的ID\n const getNextId = (currentId)=>{\n if (!currentId) return '';\n // 检查是否以数字结尾\n const numMatch = currentId.match(/^(.*?)(\\d+)$/);\n if (numMatch) {\n const [, prefix, num] = numMatch;\n const nextNum = String(Number(num) + 1).padStart(num.length, '0');\n return prefix + nextNum;\n }\n // 检查是否以字母结尾\n const letterMatch = currentId.match(/^(.*?)([a-zA-Z]+)$/);\n if (letterMatch) {\n const [, prefix, letters] = letterMatch;\n // 将字母转换为数组以便处理\n const letterArray = letters.split('');\n let carry = true;\n // 从右向左处理每个字母\n for(let i = letterArray.length - 1; i >= 0 && carry; i--){\n if (letterArray[i] === 'z') {\n letterArray[i] = 'a';\n carry = true;\n } else if (letterArray[i] === 'Z') {\n letterArray[i] = 'A';\n carry = true;\n } else {\n letterArray[i] = String.fromCharCode(letterArray[i].charCodeAt(0) + 1);\n carry = false;\n }\n }\n // 如果还有进位,说明需要在前面添加一个字母\n if (carry) {\n if (letters[0] >= 'a' && letters[0] <= 'z') {\n letterArray.unshift('a');\n } else {\n letterArray.unshift('A');\n }\n }\n return prefix + letterArray.join('');\n }\n // 如果既不是数字也不是字母结尾,直接返回原值\n return currentId;\n };\n // 只在cfp视图下自动更新第二个输入框\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)({\n \"CableId.useEffect\": ()=>{\n if (view === 'cfp' && inputValue) {\n setInputValue2(getNextId(inputValue));\n }\n }\n }[\"CableId.useEffect\"], [\n inputValue,\n view\n ]);\n const handleComplete = ()=>{\n if (view === 'main' && !inputValue.trim()) return;\n if (view === 'cfp' && (!inputValue.trim() || !inputValue2.trim())) return;\n const currentIndex = _store_displayStore__WEBPACK_IMPORTED_MODULE_5__[\"default\"].getState().selectedIndexes.projectIndex;\n const currentCableIds = currentProject?.cableIds || [];\n let cableIds;\n if (view === 'main') {\n // 在main视图下,只更新选中的ID,保留其他ID\n const selectedId = getCurrentCableId().id;\n cableIds = currentCableIds.map((cable)=>cable.id === selectedId ? {\n ...cable,\n name: inputValue.trim()\n } : cable);\n } else {\n cableIds = [\n {\n id: '1',\n name: inputValue.trim()\n },\n {\n id: '2',\n name: inputValue2.trim()\n }\n ];\n }\n updateProject(currentIndex, {\n cableIds\n });\n goBack();\n };\n const renderContent = ()=>{\n switch(view){\n case 'main':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 bg-[#303040] p-4 flex flex-col\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"relative mb-4 cursor-pointer\",\n onClick: ()=>setShowKeyboard(true),\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"text\",\n className: \"w-full h-[50px] bg-[#ffffe1] rounded-sm p-4 text-black\",\n value: inputValue,\n placeholder: \"请输入线缆ID\",\n onChange: (e)=>{\n setInputValue(e.target.value);\n setCursorPosition(e.target.selectionStart);\n },\n onClick: (e)=>{\n setShowKeyboard(true);\n setCursorPosition(e.target.selectionStart);\n },\n onFocus: (e)=>{\n // 保存光标位置\n const cursorPosition = e.target.selectionStart;\n e.target.setSelectionRange(cursorPosition, cursorPosition);\n }\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/CableId.js\",\n lineNumber: 131,\n columnNumber: 29\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/CableId.js\",\n lineNumber: 127,\n columnNumber: 25\n }, this),\n showKeyboard && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_Keyboard__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n value: inputValue,\n cursorPosition: cursorPosition,\n onChange: (newValue, newPosition)=>{\n setInputValue(newValue);\n setCursorPosition(newPosition);\n },\n onComplete: ()=>{\n setShowKeyboard(false);\n }\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/CableId.js\",\n lineNumber: 152,\n columnNumber: 29\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/CableId.js\",\n lineNumber: 126,\n columnNumber: 21\n }, this);\n case 'cfp':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 bg-[#303040] p-4 flex flex-col\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mb-8\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mb-1 text-white text-sm\",\n children: \"输出光纤ID1\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/CableId.js\",\n lineNumber: 171,\n columnNumber: 29\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"relative cursor-pointer\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"text\",\n className: \"w-full h-[50px] bg-[#ffffe1] rounded-sm px-4 text-black overflow-x-auto whitespace-nowrap\",\n value: inputValue,\n placeholder: \"请输入线缆ID1\",\n onChange: (e)=>{\n setInputValue(e.target.value);\n setCursorPosition(e.target.selectionStart);\n },\n onClick: (e)=>{\n setActiveInput(1);\n setShowKeyboard(true);\n setCursorPosition(e.target.selectionStart);\n },\n onFocus: (e)=>{\n const cursorPosition = e.target.selectionStart;\n e.target.setSelectionRange(cursorPosition, cursorPosition);\n }\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/CableId.js\",\n lineNumber: 173,\n columnNumber: 33\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/CableId.js\",\n lineNumber: 172,\n columnNumber: 29\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/CableId.js\",\n lineNumber: 170,\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: \"mb-1 text-white text-sm\",\n children: \"输入光纤ID2\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/CableId.js\",\n lineNumber: 195,\n columnNumber: 29\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"relative cursor-pointer\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"text\",\n className: \"w-full h-[50px] bg-[#ffffe1] rounded-sm px-4 text-black overflow-x-auto whitespace-nowrap\",\n value: inputValue2,\n placeholder: \"请输入线缆ID2\",\n onChange: (e)=>{\n setInputValue2(e.target.value);\n setCursorPosition(e.target.selectionStart);\n },\n onClick: (e)=>{\n setActiveInput(2);\n setShowKeyboard(true);\n setCursorPosition(e.target.selectionStart);\n },\n onFocus: (e)=>{\n const cursorPosition = e.target.selectionStart;\n e.target.setSelectionRange(cursorPosition, cursorPosition);\n }\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/CableId.js\",\n lineNumber: 197,\n columnNumber: 33\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/CableId.js\",\n lineNumber: 196,\n columnNumber: 29\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/CableId.js\",\n lineNumber: 194,\n columnNumber: 25\n }, this),\n showKeyboard && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_Keyboard__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n value: activeInput === 1 ? inputValue : inputValue2,\n cursorPosition: cursorPosition,\n onChange: (newValue, newPosition)=>{\n if (activeInput === 1) {\n setInputValue(newValue);\n } else {\n setInputValue2(newValue);\n }\n setCursorPosition(newPosition);\n },\n onComplete: ()=>{\n setShowKeyboard(false);\n }\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/CableId.js\",\n lineNumber: 219,\n columnNumber: 29\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/CableId.js\",\n lineNumber: 169,\n columnNumber: 21\n }, this);\n default:\n return null;\n }\n };\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full h-full flex flex-col overflow-hidden\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_StatusBar__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {}, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/CableId.js\",\n lineNumber: 245,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_TitleBar__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n title: \"更改ID\",\n backTo: _store_displayStore__WEBPACK_IMPORTED_MODULE_5__[\"default\"].getState().navigation.previous?.name || 'home',\n view: _store_displayStore__WEBPACK_IMPORTED_MODULE_5__[\"default\"].getState().navigation.previous?.view || 'main'\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/CableId.js\",\n lineNumber: 246,\n columnNumber: 13\n }, this),\n renderContent(),\n view === 'main' && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[60px] bg-[#303030] flex items-center justify-end px-8\",\n children: !showKeyboard && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: handleComplete,\n className: \"w-[100px] h-[40px] bg-gradient-to-b from-[#656565] to-[#313431] rounded-sm flex items-center justify-center text-white font-bold shadow-lg\",\n children: \"完成\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/CableId.js\",\n lineNumber: 254,\n columnNumber: 40\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/CableId.js\",\n lineNumber: 253,\n columnNumber: 17\n }, this),\n view === 'cfp' && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[60px] bg-[#303030] flex items-center justify-end px-8\",\n children: !showKeyboard && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: handleComplete,\n className: \"w-[100px] h-[40px] bg-gradient-to-b from-[#656565] to-[#313431] rounded-sm flex items-center justify-center text-white font-bold shadow-lg\",\n children: \"完成\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/CableId.js\",\n lineNumber: 264,\n columnNumber: 40\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/CableId.js\",\n lineNumber: 263,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/CableId.js\",\n lineNumber: 244,\n columnNumber: 9\n }, this);\n}\n\n__webpack_async_result__();\n} catch(e) { __webpack_async_result__(e); } });//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHBhZ2VzLWRpci1ub2RlKS8uL3NyYy9jb21wb25lbnRzL2RzeHBhZ2UvZmx1a2UvQ2FibGVJZC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQW1EO0FBQ0E7QUFDRjtBQUNBO0FBQ0U7QUFFcEMsU0FBU087SUFDcEIsTUFBTSxDQUFDQyxjQUFjQyxnQkFBZ0IsR0FBR1IsK0NBQVFBLENBQUM7SUFDakQsTUFBTSxDQUFDUyxnQkFBZ0JDLGtCQUFrQixHQUFHViwrQ0FBUUEsQ0FBQztJQUNyRCxNQUFNLENBQUNXLFlBQVlDLGNBQWMsR0FBR1osK0NBQVFBLENBQUM7SUFDN0MsTUFBTSxDQUFDYSxhQUFhQyxlQUFlLEdBQUdkLCtDQUFRQSxDQUFDO0lBQy9DLE1BQU0sQ0FBQ2UsYUFBYUMsZUFBZSxHQUFHaEIsK0NBQVFBLENBQUMsSUFBSSx3QkFBd0I7SUFDM0UsTUFBTSxFQUNGaUIsaUJBQWlCLEVBQ2pCQyxpQkFBaUIsRUFDakJDLGtCQUFrQixFQUNsQkMsYUFBYSxFQUNiQyxNQUFNLEVBQ1QsR0FBR2hCLCtEQUFlQTtJQUVuQixNQUFNaUIsaUJBQWlCTDtJQUN2QixjQUFjO0lBQ2QsTUFBTU0saUJBQWlCTCxvQkFBb0JNLElBQUk7SUFDL0MsZUFBZTtJQUNmLE1BQU1DLGtCQUFrQk4scUJBQXFCSyxJQUFJO0lBRWpELE1BQU0sRUFBRUUsSUFBSSxFQUFFLEdBQUdyQixvRUFBd0IsR0FBR3VCLFVBQVUsQ0FBQ0MsT0FBTztJQUkvRCxvQkFBb0I7SUFDbkI1QixnREFBU0E7NkJBQUM7WUFDTlcsY0FBY1c7WUFDZCxJQUFJRyxTQUFTLE9BQU87Z0JBQ2hCWixlQUFlVztZQUNuQjtRQUNKOzRCQUFHO1FBQUNGO1FBQWdCRTtRQUFpQkM7S0FBSztJQUUxQyxhQUFhO0lBQ2IsTUFBTUksWUFBWSxDQUFDQztRQUNmLElBQUksQ0FBQ0EsV0FBVyxPQUFPO1FBRXZCLFlBQVk7UUFDWixNQUFNQyxXQUFXRCxVQUFVRSxLQUFLLENBQUM7UUFDakMsSUFBSUQsVUFBVTtZQUNWLE1BQU0sR0FBR0UsUUFBUUMsSUFBSSxHQUFHSDtZQUN4QixNQUFNSSxVQUFVQyxPQUFPQyxPQUFPSCxPQUFPLEdBQUdJLFFBQVEsQ0FBQ0osSUFBSUssTUFBTSxFQUFFO1lBQzdELE9BQU9OLFNBQVNFO1FBQ3BCO1FBRUEsWUFBWTtRQUNaLE1BQU1LLGNBQWNWLFVBQVVFLEtBQUssQ0FBQztRQUNwQyxJQUFJUSxhQUFhO1lBQ2IsTUFBTSxHQUFHUCxRQUFRUSxRQUFRLEdBQUdEO1lBRTVCLGVBQWU7WUFDZixNQUFNRSxjQUFjRCxRQUFRRSxLQUFLLENBQUM7WUFDbEMsSUFBSUMsUUFBUTtZQUVaLGFBQWE7WUFDYixJQUFLLElBQUlDLElBQUlILFlBQVlILE1BQU0sR0FBRyxHQUFHTSxLQUFLLEtBQUtELE9BQU9DLElBQUs7Z0JBQ3ZELElBQUlILFdBQVcsQ0FBQ0csRUFBRSxLQUFLLEtBQUs7b0JBQ3hCSCxXQUFXLENBQUNHLEVBQUUsR0FBRztvQkFDakJELFFBQVE7Z0JBQ1osT0FBTyxJQUFJRixXQUFXLENBQUNHLEVBQUUsS0FBSyxLQUFLO29CQUMvQkgsV0FBVyxDQUFDRyxFQUFFLEdBQUc7b0JBQ2pCRCxRQUFRO2dCQUNaLE9BQU87b0JBQ0hGLFdBQVcsQ0FBQ0csRUFBRSxHQUFHVCxPQUFPVSxZQUFZLENBQUNKLFdBQVcsQ0FBQ0csRUFBRSxDQUFDRSxVQUFVLENBQUMsS0FBSztvQkFDcEVILFFBQVE7Z0JBQ1o7WUFDSjtZQUVBLHVCQUF1QjtZQUN2QixJQUFJQSxPQUFPO2dCQUNQLElBQUlILE9BQU8sQ0FBQyxFQUFFLElBQUksT0FBT0EsT0FBTyxDQUFDLEVBQUUsSUFBSSxLQUFLO29CQUN4Q0MsWUFBWU0sT0FBTyxDQUFDO2dCQUN4QixPQUFPO29CQUNITixZQUFZTSxPQUFPLENBQUM7Z0JBQ3hCO1lBQ0o7WUFFQSxPQUFPZixTQUFTUyxZQUFZTyxJQUFJLENBQUM7UUFDckM7UUFFQSx3QkFBd0I7UUFDeEIsT0FBT25CO0lBQ1g7SUFFQSxxQkFBcUI7SUFDckI5QixnREFBU0E7NkJBQUM7WUFDTixJQUFJeUIsU0FBUyxTQUFTZixZQUFZO2dCQUM5QkcsZUFBZWdCLFVBQVVuQjtZQUM3QjtRQUNKOzRCQUFHO1FBQUNBO1FBQVllO0tBQUs7SUFFckIsTUFBTXlCLGlCQUFpQjtRQUNuQixJQUFJekIsU0FBUyxVQUFVLENBQUNmLFdBQVd5QyxJQUFJLElBQUk7UUFDM0MsSUFBSTFCLFNBQVMsU0FBVSxFQUFDZixXQUFXeUMsSUFBSSxNQUFNLENBQUN2QyxZQUFZdUMsSUFBSSxFQUFDLEdBQUk7UUFFbkUsTUFBTUMsZUFBZWhELG9FQUF3QixHQUFHaUQsZUFBZSxDQUFDQyxZQUFZO1FBQzVFLE1BQU1DLGtCQUFrQmxDLGdCQUFnQm1DLFlBQVksRUFBRTtRQUV0RCxJQUFJQTtRQUNKLElBQUkvQixTQUFTLFFBQVE7WUFDakIsMkJBQTJCO1lBQzNCLE1BQU1nQyxhQUFheEMsb0JBQW9CeUMsRUFBRTtZQUN6Q0YsV0FBV0QsZ0JBQWdCSSxHQUFHLENBQUNDLENBQUFBLFFBQzNCQSxNQUFNRixFQUFFLEtBQUtELGFBQWE7b0JBQUUsR0FBR0csS0FBSztvQkFBRXJDLE1BQU1iLFdBQVd5QyxJQUFJO2dCQUFHLElBQUlTO1FBRTFFLE9BQU87WUFDSEosV0FBVztnQkFDUDtvQkFBRUUsSUFBSTtvQkFBS25DLE1BQU1iLFdBQVd5QyxJQUFJO2dCQUFHO2dCQUNuQztvQkFBRU8sSUFBSTtvQkFBS25DLE1BQU1YLFlBQVl1QyxJQUFJO2dCQUFHO2FBQ3ZDO1FBQ0w7UUFFQWhDLGNBQWNpQyxjQUFjO1lBQUVJO1FBQVM7UUFDdkNwQztJQUNKO0lBRUEsTUFBTXlDLGdCQUFnQjtRQUNsQixPQUFRcEM7WUFDSixLQUFLO2dCQUNELHFCQUNJLDhEQUFDcUM7b0JBQUlDLFdBQVU7O3NDQUNYLDhEQUFDRDs0QkFDR0MsV0FBVTs0QkFDVkMsU0FBUyxJQUFNekQsZ0JBQWdCO3NDQUUvQiw0RUFBQzBEO2dDQUNHQyxNQUFLO2dDQUNMSCxXQUFVO2dDQUNWSSxPQUFPekQ7Z0NBQ1AwRCxhQUFZO2dDQUNaQyxVQUFVLENBQUNDO29DQUNQM0QsY0FBYzJELEVBQUVDLE1BQU0sQ0FBQ0osS0FBSztvQ0FDNUIxRCxrQkFBa0I2RCxFQUFFQyxNQUFNLENBQUNDLGNBQWM7Z0NBQzdDO2dDQUNBUixTQUFTLENBQUNNO29DQUNOL0QsZ0JBQWdCO29DQUNoQkUsa0JBQWtCNkQsRUFBRUMsTUFBTSxDQUFDQyxjQUFjO2dDQUM3QztnQ0FDQUMsU0FBUyxDQUFDSDtvQ0FDTixTQUFTO29DQUNULE1BQU05RCxpQkFBaUI4RCxFQUFFQyxNQUFNLENBQUNDLGNBQWM7b0NBQzlDRixFQUFFQyxNQUFNLENBQUNHLGlCQUFpQixDQUFDbEUsZ0JBQWdCQTtnQ0FDL0M7Ozs7Ozs7Ozs7O3dCQUdQRiw4QkFDRyw4REFBQ0gsZ0VBQVFBOzRCQUNUZ0UsT0FBT3pEOzRCQUNQRixnQkFBZ0JBOzRCQUNoQjZELFVBQVUsQ0FBQ00sVUFBVUM7Z0NBQ2pCakUsY0FBY2dFO2dDQUNkbEUsa0JBQWtCbUU7NEJBQ3RCOzRCQUNBQyxZQUFZO2dDQUNSdEUsZ0JBQWdCOzRCQUNwQjs7Ozs7Ozs7Ozs7O1lBTWhCLEtBQUs7Z0JBQ0QscUJBQ0ksOERBQUN1RDtvQkFBSUMsV0FBVTs7c0NBQ1gsOERBQUNEOzRCQUFJQyxXQUFVOzs4Q0FDWCw4REFBQ0Q7b0NBQUlDLFdBQVU7OENBQTBCOzs7Ozs7OENBQ3pDLDhEQUFDRDtvQ0FBSUMsV0FBVTs4Q0FDWCw0RUFBQ0U7d0NBQ0dDLE1BQUs7d0NBQ0xILFdBQVU7d0NBQ1ZJLE9BQU96RDt3Q0FDUDBELGFBQVk7d0NBQ1pDLFVBQVUsQ0FBQ0M7NENBQ1AzRCxjQUFjMkQsRUFBRUMsTUFBTSxDQUFDSixLQUFLOzRDQUM1QjFELGtCQUFrQjZELEVBQUVDLE1BQU0sQ0FBQ0MsY0FBYzt3Q0FDN0M7d0NBQ0FSLFNBQVMsQ0FBQ007NENBQ052RCxlQUFlOzRDQUNmUixnQkFBZ0I7NENBQ2hCRSxrQkFBa0I2RCxFQUFFQyxNQUFNLENBQUNDLGNBQWM7d0NBQzdDO3dDQUNBQyxTQUFTLENBQUNIOzRDQUNOLE1BQU05RCxpQkFBaUI4RCxFQUFFQyxNQUFNLENBQUNDLGNBQWM7NENBQzlDRixFQUFFQyxNQUFNLENBQUNHLGlCQUFpQixDQUFDbEUsZ0JBQWdCQTt3Q0FDL0M7Ozs7Ozs7Ozs7Ozs7Ozs7O3NDQUlaLDhEQUFDc0Q7OzhDQUNHLDhEQUFDQTtvQ0FBSUMsV0FBVTs4Q0FBMEI7Ozs7Ozs4Q0FDekMsOERBQUNEO29DQUFJQyxXQUFVOzhDQUNYLDRFQUFDRTt3Q0FDR0MsTUFBSzt3Q0FDTEgsV0FBVTt3Q0FDVkksT0FBT3ZEO3dDQUNQd0QsYUFBWTt3Q0FDWkMsVUFBVSxDQUFDQzs0Q0FDUHpELGVBQWV5RCxFQUFFQyxNQUFNLENBQUNKLEtBQUs7NENBQzdCMUQsa0JBQWtCNkQsRUFBRUMsTUFBTSxDQUFDQyxjQUFjO3dDQUM3Qzt3Q0FDQVIsU0FBUyxDQUFDTTs0Q0FDTnZELGVBQWU7NENBQ2ZSLGdCQUFnQjs0Q0FDaEJFLGtCQUFrQjZELEVBQUVDLE1BQU0sQ0FBQ0MsY0FBYzt3Q0FDN0M7d0NBQ0FDLFNBQVMsQ0FBQ0g7NENBQ04sTUFBTTlELGlCQUFpQjhELEVBQUVDLE1BQU0sQ0FBQ0MsY0FBYzs0Q0FDOUNGLEVBQUVDLE1BQU0sQ0FBQ0csaUJBQWlCLENBQUNsRSxnQkFBZ0JBO3dDQUMvQzs7Ozs7Ozs7Ozs7Ozs7Ozs7d0JBSVhGLDhCQUNHLDhEQUFDSCxnRUFBUUE7NEJBQ0xnRSxPQUFPckQsZ0JBQWdCLElBQUlKLGFBQWFFOzRCQUN4Q0osZ0JBQWdCQTs0QkFDaEI2RCxVQUFVLENBQUNNLFVBQVVDO2dDQUNqQixJQUFJOUQsZ0JBQWdCLEdBQUc7b0NBQ25CSCxjQUFjZ0U7Z0NBQ2xCLE9BQU87b0NBQ0g5RCxlQUFlOEQ7Z0NBQ25CO2dDQUNBbEUsa0JBQWtCbUU7NEJBQ3RCOzRCQUNBQyxZQUFZO2dDQUNSdEUsZ0JBQWdCOzRCQUNwQjs7Ozs7Ozs7Ozs7O1lBTXBCO2dCQUNJLE9BQU87UUFDZjtJQUNKO0lBRUEscUJBQ0ksOERBQUN1RDtRQUFJQyxXQUFVOzswQkFDWCw4REFBQzlELGlFQUFTQTs7Ozs7MEJBQ1YsOERBQUNDLGdFQUFRQTtnQkFDTDRFLE9BQU07Z0JBQ05DLFFBQVEzRSxvRUFBd0IsR0FBR3VCLFVBQVUsQ0FBQ3FELFFBQVEsRUFBRXpELFFBQVE7Z0JBQ2hFRSxNQUFNckIsb0VBQXdCLEdBQUd1QixVQUFVLENBQUNxRCxRQUFRLEVBQUV2RCxRQUFROzs7Ozs7WUFFakVvQztZQUNBcEMsU0FBUyx3QkFDTiw4REFBQ3FDO2dCQUFJQyxXQUFVOzBCQUNWLENBQUN6RCw4QkFBaUIsOERBQUMyRTtvQkFDaEJqQixTQUFTZDtvQkFDVGEsV0FBVTs4QkFDYjs7Ozs7Ozs7Ozs7WUFLUnRDLFNBQVMsdUJBQ04sOERBQUNxQztnQkFBSUMsV0FBVTswQkFDVixDQUFDekQsOEJBQWlCLDhEQUFDMkU7b0JBQ2hCakIsU0FBU2Q7b0JBQ1RhLFdBQVU7OEJBQ2I7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBT3JCIiwic291cmNlcyI6WyIvb3B0L2Rldi9lc3QtZHN4L3NyYy9jb21wb25lbnRzL2RzeHBhZ2UvZmx1a2UvQ2FibGVJZC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUsIHVzZUVmZmVjdCB9IGZyb20gJ3JlYWN0JztcclxuaW1wb3J0IFN0YXR1c0JhciBmcm9tICdAL2NvbXBvbmVudHMvbGliL1N0YXR1c0Jhcic7XHJcbmltcG9ydCBUaXRsZUJhciBmcm9tICdAL2NvbXBvbmVudHMvbGliL1RpdGxlQmFyJztcclxuaW1wb3J0IEtleWJvYXJkIGZyb20gJ0AvY29tcG9uZW50cy9saWIvS2V5Ym9hcmQnO1xyXG5pbXBvcnQgdXNlRGlzcGxheVN0b3JlIGZyb20gJ0Avc3RvcmUvZGlzcGxheVN0b3JlJztcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIENhYmxlSWQoKSB7XHJcbiAgICBjb25zdCBbc2hvd0tleWJvYXJkLCBzZXRTaG93S2V5Ym9hcmRdID0gdXNlU3RhdGUodHJ1ZSk7XHJcbiAgICBjb25zdCBbY3Vyc29yUG9zaXRpb24sIHNldEN1cnNvclBvc2l0aW9uXSA9IHVzZVN0YXRlKDApO1xyXG4gICAgY29uc3QgW2lucHV0VmFsdWUsIHNldElucHV0VmFsdWVdID0gdXNlU3RhdGUoJycpO1xyXG4gICAgY29uc3QgW2lucHV0VmFsdWUyLCBzZXRJbnB1dFZhbHVlMl0gPSB1c2VTdGF0ZSgnJyk7XHJcbiAgICBjb25zdCBbYWN0aXZlSW5wdXQsIHNldEFjdGl2ZUlucHV0XSA9IHVzZVN0YXRlKDEpOyAvLyAxIOihqOekuuesrOS4gOS4qui+k+WFpeahhu+8jDIg6KGo56S656ys5LqM5Liq6L6T5YWl5qGGXHJcbiAgICBjb25zdCB7XHJcbiAgICAgICAgZ2V0Q3VycmVudFByb2plY3QsXHJcbiAgICAgICAgZ2V0Q3VycmVudENhYmxlSWQsXHJcbiAgICAgICAgZ2V0Q3VycmVudENhYmxlSWQyLFxyXG4gICAgICAgIHVwZGF0ZVByb2plY3QsXHJcbiAgICAgICAgZ29CYWNrXHJcbiAgICB9ID0gdXNlRGlzcGxheVN0b3JlKCk7XHJcblxyXG4gICAgY29uc3QgY3VycmVudFByb2plY3QgPSBnZXRDdXJyZW50UHJvamVjdCgpO1xyXG4gICAgLy8g6I635Y+W5b2T5YmN6YCJ5Lit55qE55S157yGSURcclxuICAgIGNvbnN0IGN1cnJlbnRDYWJsZUlkID0gZ2V0Q3VycmVudENhYmxlSWQoKS5uYW1lO1xyXG4gICAgLy8g6I635Y+W5b2T5YmN6YCJ5Lit55qE55S157yGSUQyXHJcbiAgICBjb25zdCBjdXJyZW50Q2FibGVJZDIgPSBnZXRDdXJyZW50Q2FibGVJZDIoKS5uYW1lO1xyXG5cclxuICAgIGNvbnN0IHsgdmlldyB9ID0gdXNlRGlzcGxheVN0b3JlLmdldFN0YXRlKCkubmF2aWdhdGlvbi5jdXJyZW50O1xyXG5cclxuXHJcblxyXG4gICAvLyDlj6rlnKhjZnDop4blm77kuIvliJ3lp4vljJbnrKzkuozkuKrovpPlhaXmoYZcclxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XHJcbiAgICAgICAgc2V0SW5wdXRWYWx1ZShjdXJyZW50Q2FibGVJZCk7XHJcbiAgICAgICAgaWYgKHZpZXcgPT09ICdjZnAnKSB7XHJcbiAgICAgICAgICAgIHNldElucHV0VmFsdWUyKGN1cnJlbnRDYWJsZUlkMik7XHJcbiAgICAgICAgfVxyXG4gICAgfSwgW2N1cnJlbnRDYWJsZUlkLCBjdXJyZW50Q2FibGVJZDIsIHZpZXddKTtcclxuXHJcbiAgICAvLyDorqHnrpfkuIvkuIDkuKrluo/lj7fnmoRJRFxyXG4gICAgY29uc3QgZ2V0TmV4dElkID0gKGN1cnJlbnRJZCkgPT4ge1xyXG4gICAgICAgIGlmICghY3VycmVudElkKSByZXR1cm4gJyc7XHJcblxyXG4gICAgICAgIC8vIOajgOafpeaYr+WQpuS7peaVsOWtl+e7k+WwvlxyXG4gICAgICAgIGNvbnN0IG51bU1hdGNoID0gY3VycmVudElkLm1hdGNoKC9eKC4qPykoXFxkKykkLyk7XHJcbiAgICAgICAgaWYgKG51bU1hdGNoKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IFssIHByZWZpeCwgbnVtXSA9IG51bU1hdGNoO1xyXG4gICAgICAgICAgICBjb25zdCBuZXh0TnVtID0gU3RyaW5nKE51bWJlcihudW0pICsgMSkucGFkU3RhcnQobnVtLmxlbmd0aCwgJzAnKTtcclxuICAgICAgICAgICAgcmV0dXJuIHByZWZpeCArIG5leHROdW07XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyDmo4Dmn6XmmK/lkKbku6XlrZfmr43nu5PlsL5cclxuICAgICAgICBjb25zdCBsZXR0ZXJNYXRjaCA9IGN1cnJlbnRJZC5tYXRjaCgvXiguKj8pKFthLXpBLVpdKykkLyk7XHJcbiAgICAgICAgaWYgKGxldHRlck1hdGNoKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IFssIHByZWZpeCwgbGV0dGVyc10gPSBsZXR0ZXJNYXRjaDtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIC8vIOWwhuWtl+avjei9rOaNouS4uuaVsOe7hOS7peS+v+WkhOeQhlxyXG4gICAgICAgICAgICBjb25zdCBsZXR0ZXJBcnJheSA9IGxldHRlcnMuc3BsaXQoJycpO1xyXG4gICAgICAgICAgICBsZXQgY2FycnkgPSB0cnVlO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgLy8g5LuO5Y+z5ZCR5bem5aSE55CG5q+P5Liq5a2X5q+NXHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSBsZXR0ZXJBcnJheS5sZW5ndGggLSAxOyBpID49IDAgJiYgY2Fycnk7IGktLSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKGxldHRlckFycmF5W2ldID09PSAneicpIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXR0ZXJBcnJheVtpXSA9ICdhJztcclxuICAgICAgICAgICAgICAgICAgICBjYXJyeSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGxldHRlckFycmF5W2ldID09PSAnWicpIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXR0ZXJBcnJheVtpXSA9ICdBJztcclxuICAgICAgICAgICAgICAgICAgICBjYXJyeSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldHRlckFycmF5W2ldID0gU3RyaW5nLmZyb21DaGFyQ29kZShsZXR0ZXJBcnJheVtpXS5jaGFyQ29kZUF0KDApICsgMSk7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FycnkgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgLy8g5aaC5p6c6L+Y5pyJ6L+b5L2N77yM6K+05piO6ZyA6KaB5Zyo5YmN6Z2i5re75Yqg5LiA5Liq5a2X5q+NXHJcbiAgICAgICAgICAgIGlmIChjYXJyeSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKGxldHRlcnNbMF0gPj0gJ2EnICYmIGxldHRlcnNbMF0gPD0gJ3onKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0dGVyQXJyYXkudW5zaGlmdCgnYScpO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXR0ZXJBcnJheS51bnNoaWZ0KCdBJyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIHJldHVybiBwcmVmaXggKyBsZXR0ZXJBcnJheS5qb2luKCcnKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIOWmguaenOaXouS4jeaYr+aVsOWtl+S5n+S4jeaYr+Wtl+avjee7k+Wwvu+8jOebtOaOpei/lOWbnuWOn+WAvFxyXG4gICAgICAgIHJldHVybiBjdXJyZW50SWQ7XHJcbiAgICB9O1xyXG5cclxuICAgIC8vIOWPquWcqGNmcOinhuWbvuS4i+iHquWKqOabtOaWsOesrOS6jOS4qui+k+WFpeahhlxyXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcclxuICAgICAgICBpZiAodmlldyA9PT0gJ2NmcCcgJiYgaW5wdXRWYWx1ZSkge1xyXG4gICAgICAgICAgICBzZXRJbnB1dFZhbHVlMihnZXROZXh0SWQoaW5wdXRWYWx1ZSkpO1xyXG4gICAgICAgIH1cclxuICAgIH0sIFtpbnB1dFZhbHVlLCB2aWV3XSk7XHJcblxyXG4gICAgY29uc3QgaGFuZGxlQ29tcGxldGUgPSAoKSA9PiB7XHJcbiAgICAgICAgaWYgKHZpZXcgPT09ICdtYWluJyAmJiAhaW5wdXRWYWx1ZS50cmltKCkpIHJldHVybjtcclxuICAgICAgICBpZiAodmlldyA9PT0gJ2NmcCcgJiYgKCFpbnB1dFZhbHVlLnRyaW0oKSB8fCAhaW5wdXRWYWx1ZTIudHJpbSgpKSkgcmV0dXJuO1xyXG5cclxuICAgICAgICBjb25zdCBjdXJyZW50SW5kZXggPSB1c2VEaXNwbGF5U3RvcmUuZ2V0U3RhdGUoKS5zZWxlY3RlZEluZGV4ZXMucHJvamVjdEluZGV4O1xyXG4gICAgICAgIGNvbnN0IGN1cnJlbnRDYWJsZUlkcyA9IGN1cnJlbnRQcm9qZWN0Py5jYWJsZUlkcyB8fCBbXTtcclxuICAgICAgICBcclxuICAgICAgICBsZXQgY2FibGVJZHM7XHJcbiAgICAgICAgaWYgKHZpZXcgPT09ICdtYWluJykge1xyXG4gICAgICAgICAgICAvLyDlnKhtYWlu6KeG5Zu+5LiL77yM5Y+q5pu05paw6YCJ5Lit55qESUTvvIzkv53nlZnlhbbku5ZJRFxyXG4gICAgICAgICAgICBjb25zdCBzZWxlY3RlZElkID0gZ2V0Q3VycmVudENhYmxlSWQoKS5pZDtcclxuICAgICAgICAgICAgY2FibGVJZHMgPSBjdXJyZW50Q2FibGVJZHMubWFwKGNhYmxlID0+IFxyXG4gICAgICAgICAgICAgICAgY2FibGUuaWQgPT09IHNlbGVjdGVkSWQgPyB7IC4uLmNhYmxlLCBuYW1lOiBpbnB1dFZhbHVlLnRyaW0oKSB9IDogY2FibGVcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBjYWJsZUlkcyA9IFtcclxuICAgICAgICAgICAgICAgIHsgaWQ6ICcxJywgbmFtZTogaW5wdXRWYWx1ZS50cmltKCkgfSxcclxuICAgICAgICAgICAgICAgIHsgaWQ6ICcyJywgbmFtZTogaW5wdXRWYWx1ZTIudHJpbSgpIH1cclxuICAgICAgICAgICAgXTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHVwZGF0ZVByb2plY3QoY3VycmVudEluZGV4LCB7IGNhYmxlSWRzIH0pO1xyXG4gICAgICAgIGdvQmFjaygpO1xyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCByZW5kZXJDb250ZW50ID0gKCkgPT4ge1xyXG4gICAgICAgIHN3aXRjaCAodmlldykge1xyXG4gICAgICAgICAgICBjYXNlICdtYWluJzpcclxuICAgICAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4LTEgYmctWyMzMDMwNDBdIHAtNCBmbGV4IGZsZXgtY29sXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJyZWxhdGl2ZSBtYi00IGN1cnNvci1wb2ludGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldFNob3dLZXlib2FyZCh0cnVlKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ3LWZ1bGwgaC1bNTBweF0gYmctWyNmZmZmZTFdIHJvdW5kZWQtc20gcC00IHRleHQtYmxhY2tcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXtpbnB1dFZhbHVlfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwi6K+36L6T5YWl57q/57yGSURcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRJbnB1dFZhbHVlKGUudGFyZ2V0LnZhbHVlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0Q3Vyc29yUG9zaXRpb24oZS50YXJnZXQuc2VsZWN0aW9uU3RhcnQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KGUpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U2hvd0tleWJvYXJkKHRydWUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRDdXJzb3JQb3NpdGlvbihlLnRhcmdldC5zZWxlY3Rpb25TdGFydCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkZvY3VzPXsoZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyDkv53lrZjlhYnmoIfkvY3nva5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY3Vyc29yUG9zaXRpb24gPSBlLnRhcmdldC5zZWxlY3Rpb25TdGFydDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS50YXJnZXQuc2V0U2VsZWN0aW9uUmFuZ2UoY3Vyc29yUG9zaXRpb24sIGN1cnNvclBvc2l0aW9uKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHtzaG93S2V5Ym9hcmQgJiYgKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPEtleWJvYXJkIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2lucHV0VmFsdWV9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJzb3JQb3NpdGlvbj17Y3Vyc29yUG9zaXRpb259XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KG5ld1ZhbHVlLCBuZXdQb3NpdGlvbikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldElucHV0VmFsdWUobmV3VmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEN1cnNvclBvc2l0aW9uKG5ld1Bvc2l0aW9uKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNvbXBsZXRlPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U2hvd0tleWJvYXJkKGZhbHNlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICApO1xyXG5cclxuICAgICAgICAgICAgY2FzZSAnY2ZwJzpcclxuICAgICAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4LTEgYmctWyMzMDMwNDBdIHAtNCBmbGV4IGZsZXgtY29sXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibWItOFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtYi0xIHRleHQtd2hpdGUgdGV4dC1zbVwiPui+k+WHuuWFiee6pElEMTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyZWxhdGl2ZSBjdXJzb3ItcG9pbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ3LWZ1bGwgaC1bNTBweF0gYmctWyNmZmZmZTFdIHJvdW5kZWQtc20gcHgtNCB0ZXh0LWJsYWNrIG92ZXJmbG93LXgtYXV0byB3aGl0ZXNwYWNlLW5vd3JhcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXtpbnB1dFZhbHVlfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIuivt+i+k+WFpee6v+e8hklEMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0SW5wdXRWYWx1ZShlLnRhcmdldC52YWx1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRDdXJzb3JQb3NpdGlvbihlLnRhcmdldC5zZWxlY3Rpb25TdGFydCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eyhlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRBY3RpdmVJbnB1dCgxKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFNob3dLZXlib2FyZCh0cnVlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEN1cnNvclBvc2l0aW9uKGUudGFyZ2V0LnNlbGVjdGlvblN0YXJ0KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Gb2N1cz17KGUpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGN1cnNvclBvc2l0aW9uID0gZS50YXJnZXQuc2VsZWN0aW9uU3RhcnQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnRhcmdldC5zZXRTZWxlY3Rpb25SYW5nZShjdXJzb3JQb3NpdGlvbiwgY3Vyc29yUG9zaXRpb24pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1iLTEgdGV4dC13aGl0ZSB0ZXh0LXNtXCI+6L6T5YWl5YWJ57qkSUQyPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInJlbGF0aXZlIGN1cnNvci1wb2ludGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInctZnVsbCBoLVs1MHB4XSBiZy1bI2ZmZmZlMV0gcm91bmRlZC1zbSBweC00IHRleHQtYmxhY2sgb3ZlcmZsb3cteC1hdXRvIHdoaXRlc3BhY2Utbm93cmFwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2lucHV0VmFsdWUyfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIuivt+i+k+WFpee6v+e8hklEMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0SW5wdXRWYWx1ZTIoZS50YXJnZXQudmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0Q3Vyc29yUG9zaXRpb24oZS50YXJnZXQuc2VsZWN0aW9uU3RhcnQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0QWN0aXZlSW5wdXQoMik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTaG93S2V5Ym9hcmQodHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRDdXJzb3JQb3NpdGlvbihlLnRhcmdldC5zZWxlY3Rpb25TdGFydCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uRm9jdXM9eyhlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjdXJzb3JQb3NpdGlvbiA9IGUudGFyZ2V0LnNlbGVjdGlvblN0YXJ0O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS50YXJnZXQuc2V0U2VsZWN0aW9uUmFuZ2UoY3Vyc29yUG9zaXRpb24sIGN1cnNvclBvc2l0aW9uKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7c2hvd0tleWJvYXJkICYmIChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxLZXlib2FyZCBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17YWN0aXZlSW5wdXQgPT09IDEgPyBpbnB1dFZhbHVlIDogaW5wdXRWYWx1ZTJ9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3Vyc29yUG9zaXRpb249e2N1cnNvclBvc2l0aW9ufVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsobmV3VmFsdWUsIG5ld1Bvc2l0aW9uKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhY3RpdmVJbnB1dCA9PT0gMSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0SW5wdXRWYWx1ZShuZXdWYWx1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRJbnB1dFZhbHVlMihuZXdWYWx1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0Q3Vyc29yUG9zaXRpb24obmV3UG9zaXRpb24pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Db21wbGV0ZT17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTaG93S2V5Ym9hcmQoZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgKTtcclxuXHJcbiAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG5cclxuICAgIHJldHVybiAoXHJcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LWZ1bGwgaC1mdWxsIGZsZXggZmxleC1jb2wgb3ZlcmZsb3ctaGlkZGVuXCI+XHJcbiAgICAgICAgICAgIDxTdGF0dXNCYXIgLz5cclxuICAgICAgICAgICAgPFRpdGxlQmFyIFxyXG4gICAgICAgICAgICAgICAgdGl0bGU9XCLmm7TmlLlJRFwiIFxyXG4gICAgICAgICAgICAgICAgYmFja1RvPXt1c2VEaXNwbGF5U3RvcmUuZ2V0U3RhdGUoKS5uYXZpZ2F0aW9uLnByZXZpb3VzPy5uYW1lIHx8ICdob21lJ30gXHJcbiAgICAgICAgICAgICAgICB2aWV3PXt1c2VEaXNwbGF5U3RvcmUuZ2V0U3RhdGUoKS5uYXZpZ2F0aW9uLnByZXZpb3VzPy52aWV3IHx8ICdtYWluJ30gXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgIHtyZW5kZXJDb250ZW50KCl9XHJcbiAgICAgICAgICAgIHt2aWV3ID09PSAnbWFpbicgJiYgKFxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJoLVs2MHB4XSBiZy1bIzMwMzAzMF0gZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1lbmQgcHgtOFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIHshc2hvd0tleWJvYXJkICYmICg8YnV0dG9uIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXtoYW5kbGVDb21wbGV0ZX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidy1bMTAwcHhdIGgtWzQwcHhdIGJnLWdyYWRpZW50LXRvLWIgZnJvbS1bIzY1NjU2NV0gdG8tWyMzMTM0MzFdIHJvdW5kZWQtc20gZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgdGV4dC13aGl0ZSBmb250LWJvbGQgc2hhZG93LWxnXCJcclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIOWujOaIkFxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPil9XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAge3ZpZXcgPT09ICdjZnAnICYmIChcclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaC1bNjBweF0gYmctWyMzMDMwMzBdIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktZW5kIHB4LThcIj5cclxuICAgICAgICAgICAgICAgICAgICB7IXNob3dLZXlib2FyZCAmJiAoPGJ1dHRvbiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17aGFuZGxlQ29tcGxldGV9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInctWzEwMHB4XSBoLVs0MHB4XSBiZy1ncmFkaWVudC10by1iIGZyb20tWyM2NTY1NjVdIHRvLVsjMzEzNDMxXSByb3VuZGVkLXNtIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHRleHQtd2hpdGUgZm9udC1ib2xkIHNoYWRvdy1sZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICDlrozmiJBcclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj4pfVxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICl9XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICApO1xyXG59XHJcbiJdLCJuYW1lcyI6WyJSZWFjdCIsInVzZVN0YXRlIiwidXNlRWZmZWN0IiwiU3RhdHVzQmFyIiwiVGl0bGVCYXIiLCJLZXlib2FyZCIsInVzZURpc3BsYXlTdG9yZSIsIkNhYmxlSWQiLCJzaG93S2V5Ym9hcmQiLCJzZXRTaG93S2V5Ym9hcmQiLCJjdXJzb3JQb3NpdGlvbiIsInNldEN1cnNvclBvc2l0aW9uIiwiaW5wdXRWYWx1ZSIsInNldElucHV0VmFsdWUiLCJpbnB1dFZhbHVlMiIsInNldElucHV0VmFsdWUyIiwiYWN0aXZlSW5wdXQiLCJzZXRBY3RpdmVJbnB1dCIsImdldEN1cnJlbnRQcm9qZWN0IiwiZ2V0Q3VycmVudENhYmxlSWQiLCJnZXRDdXJyZW50Q2FibGVJZDIiLCJ1cGRhdGVQcm9qZWN0IiwiZ29CYWNrIiwiY3VycmVudFByb2plY3QiLCJjdXJyZW50Q2FibGVJZCIsIm5hbWUiLCJjdXJyZW50Q2FibGVJZDIiLCJ2aWV3IiwiZ2V0U3RhdGUiLCJuYXZpZ2F0aW9uIiwiY3VycmVudCIsImdldE5leHRJZCIsImN1cnJlbnRJZCIsIm51bU1hdGNoIiwibWF0Y2giLCJwcmVmaXgiLCJudW0iLCJuZXh0TnVtIiwiU3RyaW5nIiwiTnVtYmVyIiwicGFkU3RhcnQiLCJsZW5ndGgiLCJsZXR0ZXJNYXRjaCIsImxldHRlcnMiLCJsZXR0ZXJBcnJheSIsInNwbGl0IiwiY2FycnkiLCJpIiwiZnJvbUNoYXJDb2RlIiwiY2hhckNvZGVBdCIsInVuc2hpZnQiLCJqb2luIiwiaGFuZGxlQ29tcGxldGUiLCJ0cmltIiwiY3VycmVudEluZGV4Iiwic2VsZWN0ZWRJbmRleGVzIiwicHJvamVjdEluZGV4IiwiY3VycmVudENhYmxlSWRzIiwiY2FibGVJZHMiLCJzZWxlY3RlZElkIiwiaWQiLCJtYXAiLCJjYWJsZSIsInJlbmRlckNvbnRlbnQiLCJkaXYiLCJjbGFzc05hbWUiLCJvbkNsaWNrIiwiaW5wdXQiLCJ0eXBlIiwidmFsdWUiLCJwbGFjZWhvbGRlciIsIm9uQ2hhbmdlIiwiZSIsInRhcmdldCIsInNlbGVjdGlvblN0YXJ0Iiwib25Gb2N1cyIsInNldFNlbGVjdGlvblJhbmdlIiwibmV3VmFsdWUiLCJuZXdQb3NpdGlvbiIsIm9uQ29tcGxldGUiLCJ0aXRsZSIsImJhY2tUbyIsInByZXZpb3VzIiwiYnV0dG9uIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(pages-dir-node)/./src/components/dsxpage/fluke/CableId.js\n"); /***/ }), /***/ "(pages-dir-node)/./src/components/dsxpage/fluke/CopperPerformance.js": /*!***********************************************************!*\ !*** ./src/components/dsxpage/fluke/CopperPerformance.js ***! \***********************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; eval("__webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ CopperPerformance)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"react/jsx-dev-runtime\");\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 */ \"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _components_lib_StatusBar__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/components/lib/StatusBar */ \"(pages-dir-node)/./src/components/lib/StatusBar.js\");\n/* harmony import */ var _components_lib_ResultTitleBar__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/components/lib/ResultTitleBar */ \"(pages-dir-node)/./src/components/lib/ResultTitleBar.js\");\n/* harmony import */ var _store_displayStore__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/store/displayStore */ \"(pages-dir-node)/./src/store/displayStore.js\");\n/* harmony import */ var _components_lib_FrequencyChart__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/components/lib/FrequencyChart */ \"(pages-dir-node)/./src/components/lib/FrequencyChart.js\");\n/* harmony import */ var _components_lib_HDTDChart__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @/components/lib/HDTDChart */ \"(pages-dir-node)/./src/components/lib/HDTDChart.js\");\nvar __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_components_lib_StatusBar__WEBPACK_IMPORTED_MODULE_2__, _components_lib_ResultTitleBar__WEBPACK_IMPORTED_MODULE_3__, _store_displayStore__WEBPACK_IMPORTED_MODULE_4__, _components_lib_FrequencyChart__WEBPACK_IMPORTED_MODULE_5__, _components_lib_HDTDChart__WEBPACK_IMPORTED_MODULE_6__]);\n([_components_lib_StatusBar__WEBPACK_IMPORTED_MODULE_2__, _components_lib_ResultTitleBar__WEBPACK_IMPORTED_MODULE_3__, _store_displayStore__WEBPACK_IMPORTED_MODULE_4__, _components_lib_FrequencyChart__WEBPACK_IMPORTED_MODULE_5__, _components_lib_HDTDChart__WEBPACK_IMPORTED_MODULE_6__] = __webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__);\n\n\n\n\n\n\n\nfunction CopperPerformance() {\n const { navigation, navigateTo, goBack } = (0,_store_displayStore__WEBPACK_IMPORTED_MODULE_4__[\"default\"])();\n const { view } = navigation.current;\n const curtitle = navigation.current.params.curtitle;\n const testResult = navigation.current.params.testResult;\n const limitValue = testResult.testconfig.params.limitValue;\n const [limitdata, setLimitdata] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);\n const wireOrder = testResult?.testconfig?.params?.wireOrder;\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)({\n \"CopperPerformance.useEffect\": ()=>{\n // 异步加载限制数据\n const loadLimitData = {\n \"CopperPerformance.useEffect.loadLimitData\": async ()=>{\n if (limitValue) {\n try {\n // 从limitValue中提取基础名称(移除+PoE和+ALL后缀)\n const baseName = limitValue.split(' (+')[0];\n // 使用基础名称加载带有(+ALL)后缀的文件\n const data = await __webpack_require__(\"(pages-dir-node)/./src/store/COPPER lazy recursive ^\\\\.\\\\/.* \\\\(\\\\+ALL\\\\)\\\\.json$\")(`./${baseName} (+ALL).json`);\n setLimitdata(data);\n } catch (error) {\n console.error('Error loading limit data:', error);\n }\n }\n }\n }[\"CopperPerformance.useEffect.loadLimitData\"];\n loadLimitData();\n }\n }[\"CopperPerformance.useEffect\"], [\n limitValue\n ]);\n const [poeTab, setPoeTab] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)('回路');\n const renderResultTitleBar = ()=>{\n const handleBack = ()=>{\n goBack();\n };\n let title = '';\n switch(view){\n case 'LENGTH':\n title = '长度';\n break;\n case 'OHM':\n title = '电阻';\n break;\n case 'PoE':\n title = 'PoE';\n break;\n case 'DRAW':\n title = '图表';\n break;\n }\n ;\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_ResultTitleBar__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n title: curtitle,\n onBack: handleBack\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/CopperPerformance.js\",\n lineNumber: 59,\n columnNumber: 16\n }, this);\n };\n const renderContent = ()=>{\n switch(view){\n case 'LENGTH':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full h-[490px] bg-[#6b6d6b]\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full h-full bg-white p-4 rounded-md\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid grid-cols-4 text-center border-b border-gray-300 pb-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-col items-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-blue-600 text-lg\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/CopperPerformance.js\",\n lineNumber: 71,\n columnNumber: 41\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/CopperPerformance.js\",\n lineNumber: 70,\n columnNumber: 37\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-col items-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-blue-600 text-lg\",\n children: \"传输延迟\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/CopperPerformance.js\",\n lineNumber: 74,\n columnNumber: 41\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-gray-500\",\n children: \"(ns)\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/CopperPerformance.js\",\n lineNumber: 75,\n columnNumber: 41\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/CopperPerformance.js\",\n lineNumber: 73,\n columnNumber: 37\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-col items-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-blue-600 text-lg\",\n children: \"延迟时差\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/CopperPerformance.js\",\n lineNumber: 78,\n columnNumber: 41\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-gray-500\",\n children: \"(ns)\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/CopperPerformance.js\",\n lineNumber: 79,\n columnNumber: 41\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/CopperPerformance.js\",\n lineNumber: 77,\n columnNumber: 37\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-col items-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-blue-600 text-lg\",\n children: \"长度\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/CopperPerformance.js\",\n lineNumber: 82,\n columnNumber: 41\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-gray-500\",\n children: \"(m)\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/CopperPerformance.js\",\n lineNumber: 83,\n columnNumber: 41\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/CopperPerformance.js\",\n lineNumber: 81,\n columnNumber: 37\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/CopperPerformance.js\",\n lineNumber: 69,\n columnNumber: 33\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mt-4 space-y-4\",\n children: [\n [\n {\n pair: '1,2',\n color: 'text-orange-500',\n delay: testResult?.resultdata?.performance?.DELAY?.PAIR12,\n delaySkew: testResult?.resultdata?.performance?.DELAYSKEW?.PAIR12,\n length: testResult?.resultdata?.performance?.LENGTH?.PAIR12\n },\n {\n pair: '3,6',\n color: 'text-green-500',\n delay: testResult?.resultdata?.performance?.DELAY?.PAIR36,\n delaySkew: testResult?.resultdata?.performance?.DELAYSKEW?.PAIR36,\n length: testResult?.resultdata?.performance?.LENGTH?.PAIR36\n },\n ...wireOrder !== 'Ethernet Two-Pair' && wireOrder !== 'M12-D Two-Pair' ? [\n {\n pair: '4,5',\n color: 'text-blue-500',\n delay: testResult?.resultdata?.performance?.DELAY?.PAIR45,\n delaySkew: testResult?.resultdata?.performance?.DELAYSKEW?.PAIR45,\n length: testResult?.resultdata?.performance?.LENGTH?.PAIR45\n },\n {\n pair: '7,8',\n color: 'text-yellow-500',\n delay: testResult?.resultdata?.performance?.DELAY?.PAIR78,\n delaySkew: testResult?.resultdata?.performance?.DELAYSKEW?.PAIR78,\n length: testResult?.resultdata?.performance?.LENGTH?.PAIR78\n }\n ] : []\n ].map(({ pair, color, delay, delaySkew, length })=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `grid grid-cols-4 text-center border-gray-300 pt-2 ${color}`,\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"font-bold\",\n children: pair\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/CopperPerformance.js\",\n lineNumber: 97,\n columnNumber: 45\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: limitdata && delay > limitdata.DELAY ? 'bg-red-100 rounded-md' : '',\n children: delay\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/CopperPerformance.js\",\n lineNumber: 98,\n columnNumber: 45\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: limitdata && delaySkew > limitdata.DELAYSKEW ? 'bg-red-100 rounded-md' : '',\n children: delaySkew\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/CopperPerformance.js\",\n lineNumber: 99,\n columnNumber: 46\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `text-center ${limitdata && length > limitdata.LENGTH && !(limitValue?.includes('ISO') || limitValue?.includes('Profinet')) ? 'bg-red-200 rounded-md' : ''}`,\n children: length\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/CopperPerformance.js\",\n lineNumber: 100,\n columnNumber: 46\n }, this)\n ]\n }, pair, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/CopperPerformance.js\",\n lineNumber: 96,\n columnNumber: 41\n }, this)),\n limitdata && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid grid-cols-4 text-center border-t border-gray-300 pt-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"font-bold\",\n children: \"极限\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/CopperPerformance.js\",\n lineNumber: 105,\n columnNumber: 41\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: limitdata.DELAY\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/CopperPerformance.js\",\n lineNumber: 107,\n columnNumber: 41\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: limitdata.DELAYSKEW\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/CopperPerformance.js\",\n lineNumber: 108,\n columnNumber: 41\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: limitdata.LENGTH\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/CopperPerformance.js\",\n lineNumber: 109,\n columnNumber: 41\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/CopperPerformance.js\",\n lineNumber: 104,\n columnNumber: 37\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/CopperPerformance.js\",\n lineNumber: 86,\n columnNumber: 33\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/CopperPerformance.js\",\n lineNumber: 68,\n columnNumber: 29\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/CopperPerformance.js\",\n lineNumber: 67,\n columnNumber: 25\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/CopperPerformance.js\",\n lineNumber: 66,\n columnNumber: 21\n }, this);\n case 'OHM':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full h-[490px] bg-[#6b6d6b]\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full h-full bg-white p-0 rounded-md\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex mb-4\",\n children: [\n '回路'\n ].map((tab)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>setPoeTab(tab),\n className: `flex-1 py-2 text-center text-xl font-bold ${poeTab === tab ? 'bg-gradient-to-b from-[#b0b0b0] via-[#e0e4e0] to-[#fff] text-black' : 'bg-[#303030] text-[#fffe92]'}`,\n children: tab\n }, tab, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/CopperPerformance.js\",\n lineNumber: 125,\n columnNumber: 41\n }, this))\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/CopperPerformance.js\",\n lineNumber: 123,\n columnNumber: 33\n }, this),\n poeTab === '回路' && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mt-4 space-y-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid grid-cols-2 text-center border-b border-gray-300 pb-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"font-bold\",\n children: \" \"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/CopperPerformance.js\",\n lineNumber: 139,\n columnNumber: 49\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-gray-500 text-lg\",\n children: \"值(Ω)\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/CopperPerformance.js\",\n lineNumber: 141,\n columnNumber: 49\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/CopperPerformance.js\",\n lineNumber: 140,\n columnNumber: 49\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/CopperPerformance.js\",\n lineNumber: 138,\n columnNumber: 41\n }, this),\n [\n {\n pair: '1,2',\n color: 'text-orange-500',\n value: testResult?.resultdata?.performance?.OHM?.LOOP?.PAIR12\n },\n {\n pair: '3,6',\n color: 'text-green-500',\n value: testResult?.resultdata?.performance?.OHM?.LOOP?.PAIR36\n },\n ...wireOrder !== 'Ethernet Two-Pair' && wireOrder !== 'M12-D Two-Pair' ? [\n {\n pair: '4,5',\n color: 'text-blue-500',\n value: testResult?.resultdata?.performance?.OHM?.LOOP?.PAIR45\n },\n {\n pair: '7,8',\n color: 'text-yellow-500',\n value: testResult?.resultdata?.performance?.OHM?.LOOP?.PAIR78\n }\n ] : []\n ].map(({ pair, color, value })=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid grid-cols-2 text-center py-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `font-bold ${color}`,\n children: pair\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/CopperPerformance.js\",\n lineNumber: 154,\n columnNumber: 49\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: value || 'N/A'\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/CopperPerformance.js\",\n lineNumber: 155,\n columnNumber: 49\n }, this)\n ]\n }, pair, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/CopperPerformance.js\",\n lineNumber: 153,\n columnNumber: 45\n }, this)),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid grid-cols-2 text-center border-t border-gray-300 pt-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"font-bold\",\n children: \"极限\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/CopperPerformance.js\",\n lineNumber: 160,\n columnNumber: 41\n }, this),\n limitdata && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: limitdata.LOOP\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/CopperPerformance.js\",\n lineNumber: 162,\n columnNumber: 49\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/CopperPerformance.js\",\n lineNumber: 159,\n columnNumber: 41\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/CopperPerformance.js\",\n lineNumber: 137,\n columnNumber: 37\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/CopperPerformance.js\",\n lineNumber: 121,\n columnNumber: 30\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/CopperPerformance.js\",\n lineNumber: 120,\n columnNumber: 25\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/CopperPerformance.js\",\n lineNumber: 119,\n columnNumber: 21\n }, this);\n case 'PoE':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full h-[490px] bg-[#6b6d6b] \",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full h-full bg-white p-0 rounded-md\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex mb-4\",\n children: [\n '回路',\n '线对UBL',\n 'P2P UBL'\n ].map((tab)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>setPoeTab(tab),\n className: `flex-1 py-1 text-center text-lg font-bold ${poeTab === tab ? 'bg-gradient-to-b from-[#b0b0b0] via-[#e0e4e0] to-[#fff] text-black' : 'bg-[#303030] text-[#fffe92]'}`,\n children: tab\n }, tab, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/CopperPerformance.js\",\n lineNumber: 180,\n columnNumber: 41\n }, this))\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/CopperPerformance.js\",\n lineNumber: 178,\n columnNumber: 33\n }, this),\n poeTab === '回路' && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mt-4 space-y-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid grid-cols-2 text-center border-b border-gray-300 pb-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"font-bold\",\n children: \" \"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/CopperPerformance.js\",\n lineNumber: 194,\n columnNumber: 49\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-gray-500 text-lg\",\n children: \"值(Ω)\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/CopperPerformance.js\",\n lineNumber: 196,\n columnNumber: 49\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/CopperPerformance.js\",\n lineNumber: 195,\n columnNumber: 49\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/CopperPerformance.js\",\n lineNumber: 193,\n columnNumber: 41\n }, this),\n [\n {\n pair: '1,2',\n color: 'text-orange-500',\n value: testResult?.resultdata?.performance?.OHM?.LOOP?.PAIR12\n },\n {\n pair: '3,6',\n color: 'text-green-500',\n value: testResult?.resultdata?.performance?.OHM?.LOOP?.PAIR36\n },\n ...wireOrder !== 'Ethernet Two-Pair' && wireOrder !== 'M12-D Two-Pair' ? [\n {\n pair: '4,5',\n color: 'text-blue-500',\n value: testResult?.resultdata?.performance?.OHM?.LOOP?.PAIR45\n },\n {\n pair: '7,8',\n color: 'text-yellow-500',\n value: testResult?.resultdata?.performance?.OHM?.LOOP?.PAIR78\n }\n ] : []\n ].map(({ pair, color, value })=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid grid-cols-2 text-center py-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `font-bold ${color}`,\n children: pair\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/CopperPerformance.js\",\n lineNumber: 210,\n columnNumber: 49\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `${value > limitdata?.LOOP ? 'bg-red-100' : ''}`,\n children: value || 'N/A'\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/CopperPerformance.js\",\n lineNumber: 211,\n columnNumber: 49\n }, this)\n ]\n }, pair, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/CopperPerformance.js\",\n lineNumber: 209,\n columnNumber: 45\n }, this)),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid grid-cols-2 text-center border-t border-gray-300 pt-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"font-bold\",\n children: \"极限\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/CopperPerformance.js\",\n lineNumber: 218,\n columnNumber: 41\n }, this),\n limitdata && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: limitdata.LOOP\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/CopperPerformance.js\",\n lineNumber: 220,\n columnNumber: 49\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/CopperPerformance.js\",\n lineNumber: 217,\n columnNumber: 41\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/CopperPerformance.js\",\n lineNumber: 192,\n columnNumber: 37\n }, this),\n poeTab === '线对UBL' && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mt-4 space-y-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid grid-cols-3 text-center border-b border-gray-300 pb-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"font-bold\",\n children: \" \"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/CopperPerformance.js\",\n lineNumber: 229,\n columnNumber: 45\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-col items-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-gray-500 text-lg\",\n children: \"值(Ω)\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/CopperPerformance.js\",\n lineNumber: 231,\n columnNumber: 49\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/CopperPerformance.js\",\n lineNumber: 230,\n columnNumber: 46\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-col items-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-gray-500 text-lg\",\n children: \"极限(Ω)\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/CopperPerformance.js\",\n lineNumber: 234,\n columnNumber: 49\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/CopperPerformance.js\",\n lineNumber: 233,\n columnNumber: 45\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/CopperPerformance.js\",\n lineNumber: 228,\n columnNumber: 41\n }, this),\n [\n {\n pair: '1,2',\n color: 'text-orange-500',\n value: testResult?.resultdata?.performance?.OHM?.PAIRUBL?.PAIR12\n },\n {\n pair: '3,6',\n color: 'text-green-500',\n value: testResult?.resultdata?.performance?.OHM?.PAIRUBL?.PAIR36\n },\n ...wireOrder !== 'Ethernet Two-Pair' && wireOrder !== 'M12-D Two-Pair' ? [\n {\n pair: '4,5',\n color: 'text-blue-500',\n value: testResult?.resultdata?.performance?.OHM?.PAIRUBL?.PAIR45\n },\n {\n pair: '7,8',\n color: 'text-yellow-500',\n value: testResult?.resultdata?.performance?.OHM?.PAIRUBL?.PAIR78\n }\n ] : []\n ].map(({ pair, color, value })=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid grid-cols-3 text-center py-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `font-bold ${color}`,\n children: pair\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/CopperPerformance.js\",\n lineNumber: 248,\n columnNumber: 49\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `${value > limitdata?.PAIRUBL ? 'bg-red-100' : ''}`,\n children: value || 'N/A'\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/CopperPerformance.js\",\n lineNumber: 249,\n columnNumber: 49\n }, this),\n limitdata && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: limitdata.PAIRUBL\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/CopperPerformance.js\",\n lineNumber: 253,\n columnNumber: 49\n }, this)\n ]\n }, pair, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/CopperPerformance.js\",\n lineNumber: 247,\n columnNumber: 45\n }, this))\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/CopperPerformance.js\",\n lineNumber: 227,\n columnNumber: 37\n }, this),\n poeTab === 'P2P UBL' && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mt-4 space-y-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid grid-cols-3 text-center border-b border-gray-300 pb-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"font-bold\",\n children: \" \"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/CopperPerformance.js\",\n lineNumber: 264,\n columnNumber: 45\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-col items-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-gray-500 text-lg\",\n children: \"值(Ω)\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/CopperPerformance.js\",\n lineNumber: 266,\n columnNumber: 49\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/CopperPerformance.js\",\n lineNumber: 265,\n columnNumber: 45\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-col items-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-gray-500 text-lg\",\n children: \"极限(Ω)\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/CopperPerformance.js\",\n lineNumber: 269,\n columnNumber: 49\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/CopperPerformance.js\",\n lineNumber: 268,\n columnNumber: 45\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/CopperPerformance.js\",\n lineNumber: 263,\n columnNumber: 41\n }, this),\n [\n {\n pair: '12-36',\n color: 'text-orange-500',\n value: testResult?.resultdata?.performance?.OHM?.P2PUBL?.PAIR1236\n },\n ...wireOrder !== 'Ethernet Two-Pair' && wireOrder !== 'M12-D Two-Pair' ? [\n {\n pair: '12-45',\n color: 'text-green-500',\n value: testResult?.resultdata?.performance?.OHM?.P2PUBL?.PAIR1245\n },\n {\n pair: '12-78',\n color: 'text-blue-500',\n value: testResult?.resultdata?.performance?.OHM?.P2PUBL?.PAIR1278\n },\n {\n pair: '36-45',\n color: 'text-yellow-500',\n value: testResult?.resultdata?.performance?.OHM?.P2PUBL?.PAIR3645\n },\n {\n pair: '36-78',\n color: 'text-purple-500',\n value: testResult?.resultdata?.performance?.OHM?.P2PUBL?.PAIR3678\n },\n {\n pair: '45-78',\n color: 'text-pink-500',\n value: testResult?.resultdata?.performance?.OHM?.P2PUBL?.PAIR4578\n }\n ] : []\n ].map(({ pair, color, value })=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid grid-cols-3 text-center py-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `font-bold ${color}`,\n children: pair\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/CopperPerformance.js\",\n lineNumber: 284,\n columnNumber: 49\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `${value > limitdata?.P2PUBL ? 'bg-red-100' : ''}`,\n children: value || 'N/A'\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/CopperPerformance.js\",\n lineNumber: 285,\n columnNumber: 49\n }, this),\n limitdata && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: limitdata.P2PUBL\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/CopperPerformance.js\",\n lineNumber: 289,\n columnNumber: 49\n }, this)\n ]\n }, pair, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/CopperPerformance.js\",\n lineNumber: 283,\n columnNumber: 45\n }, this))\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/CopperPerformance.js\",\n lineNumber: 262,\n columnNumber: 37\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/CopperPerformance.js\",\n lineNumber: 176,\n columnNumber: 29\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/CopperPerformance.js\",\n lineNumber: 175,\n columnNumber: 25\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/CopperPerformance.js\",\n lineNumber: 174,\n columnNumber: 21\n }, this);\n case 'DRAW':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full h-[full] bg-[#6b6d6b]\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full h-full bg-white p-4 rounded-md\",\n children: limitdata && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_FrequencyChart__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n curtitle: curtitle,\n limitValue: limitValue,\n limitdata: limitdata,\n wireOrder: wireOrder,\n data: testResult?.resultdata?.performance?.data\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/CopperPerformance.js\",\n lineNumber: 304,\n columnNumber: 33\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/CopperPerformance.js\",\n lineNumber: 302,\n columnNumber: 25\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/CopperPerformance.js\",\n lineNumber: 301,\n columnNumber: 21\n }, this);\n case 'HDTD':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full h-[full] bg-[#6b6d6b]\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full h-full bg-white p-4 rounded-md\",\n children: limitdata && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_HDTDChart__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n curtitle: curtitle,\n HDTD: testResult?.resultdata?.HDTD\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/CopperPerformance.js\",\n lineNumber: 320,\n columnNumber: 37\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/CopperPerformance.js\",\n lineNumber: 318,\n columnNumber: 29\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/CopperPerformance.js\",\n lineNumber: 317,\n columnNumber: 25\n }, this);\n default:\n return null;\n }\n };\n const renderFooter = ()=>{\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[60px] bg-[#303030] flex items-center justify-end px-8\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/CopperPerformance.js\",\n lineNumber: 335,\n columnNumber: 13\n }, this);\n };\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full h-full flex flex-col overflow-hidden\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_StatusBar__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {}, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/CopperPerformance.js\",\n lineNumber: 343,\n columnNumber: 13\n }, this),\n renderResultTitleBar(),\n renderContent(),\n renderFooter()\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/CopperPerformance.js\",\n lineNumber: 342,\n columnNumber: 9\n }, this);\n}\n\n__webpack_async_result__();\n} catch(e) { __webpack_async_result__(e); } });//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHBhZ2VzLWRpci1ub2RlKS8uL3NyYy9jb21wb25lbnRzL2RzeHBhZ2UvZmx1a2UvQ29wcGVyUGVyZm9ybWFuY2UuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBbUQ7QUFDQTtBQUNVO0FBQ1Y7QUFDVTtBQUNWO0FBRXBDLFNBQVNRO0lBQ3BCLE1BQU0sRUFBRUMsVUFBVSxFQUFFQyxVQUFVLEVBQUNDLE1BQU0sRUFBRSxHQUFHTiwrREFBZUE7SUFDekQsTUFBTSxFQUFFTyxJQUFJLEVBQUUsR0FBR0gsV0FBV0ksT0FBTztJQUNuQyxNQUFNQyxXQUFXTCxXQUFXSSxPQUFPLENBQUNFLE1BQU0sQ0FBQ0QsUUFBUTtJQUNuRCxNQUFNRSxhQUFhUCxXQUFXSSxPQUFPLENBQUNFLE1BQU0sQ0FBQ0MsVUFBVTtJQUN2RCxNQUFNQyxhQUFhRCxXQUFXRSxVQUFVLENBQUNILE1BQU0sQ0FBQ0UsVUFBVTtJQUMxRCxNQUFNLENBQUNFLFdBQVdDLGFBQWEsR0FBR25CLCtDQUFRQSxDQUFDO0lBQzNDLE1BQU1vQixZQUFZTCxZQUFZRSxZQUFZSCxRQUFRTTtJQUVsRG5CLGdEQUFTQTt1Q0FBQztZQUNOLFdBQVc7WUFDWCxNQUFNb0I7NkRBQWdCO29CQUNsQixJQUFJTCxZQUFZO3dCQUNaLElBQUk7NEJBQ0Esb0NBQW9DOzRCQUNwQyxNQUFNTSxXQUFXTixXQUFXTyxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQUU7NEJBQzNDLHdCQUF3Qjs0QkFDeEIsTUFBTUMsT0FBTyxNQUFNLHlHQUFPLEdBQWdCLEVBQUVGLFNBQVMsYUFBYSxDQUFDOzRCQUNuRUgsYUFBYUs7d0JBQ2pCLEVBQUUsT0FBT0MsT0FBTzs0QkFDWkMsUUFBUUQsS0FBSyxDQUFDLDZCQUE2QkE7d0JBQy9DO29CQUNKO2dCQUNKOztZQUNBSjtRQUNKO3NDQUFHO1FBQUNMO0tBQVc7SUFLZixNQUFNLENBQUNXLFFBQVFDLFVBQVUsR0FBRzVCLCtDQUFRQSxDQUFDO0lBRXJDLE1BQU02Qix1QkFBdUI7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WyIvb3B0L2Rldi9lc3QtZHN4L3NyYy9jb21wb25lbnRzL2RzeHBhZ2UvZmx1a2UvQ29wcGVyUGVyZm9ybWFuY2UuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlLCB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCc7XHJcbmltcG9ydCBTdGF0dXNCYXIgZnJvbSAnQC9jb21wb25lbnRzL2xpYi9TdGF0dXNCYXInO1xyXG5pbXBvcnQgUmVzdWx0VGl0bGVCYXIgZnJvbSAnQC9jb21wb25lbnRzL2xpYi9SZXN1bHRUaXRsZUJhcic7XHJcbmltcG9ydCB1c2VEaXNwbGF5U3RvcmUgZnJvbSAnQC9zdG9yZS9kaXNwbGF5U3RvcmUnO1xyXG5pbXBvcnQgRnJlcXVlbmN5Q2hhcnQgZnJvbSAnQC9jb21wb25lbnRzL2xpYi9GcmVxdWVuY3lDaGFydCc7XHJcbmltcG9ydCBIRFREQ2hhcnQgZnJvbSAnQC9jb21wb25lbnRzL2xpYi9IRFREQ2hhcnQnO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gQ29wcGVyUGVyZm9ybWFuY2UoICkge1xyXG4gICAgY29uc3QgeyBuYXZpZ2F0aW9uLCBuYXZpZ2F0ZVRvLGdvQmFjayB9ID0gdXNlRGlzcGxheVN0b3JlKCk7XHJcbiAgICBjb25zdCB7IHZpZXcgfSA9IG5hdmlnYXRpb24uY3VycmVudDtcclxuICAgIGNvbnN0IGN1cnRpdGxlID0gbmF2aWdhdGlvbi5jdXJyZW50LnBhcmFtcy5jdXJ0aXRsZTtcclxuICAgIGNvbnN0IHRlc3RSZXN1bHQgPSBuYXZpZ2F0aW9uLmN1cnJlbnQucGFyYW1zLnRlc3RSZXN1bHQ7XHJcbiAgICBjb25zdCBsaW1pdFZhbHVlID0gdGVzdFJlc3VsdC50ZXN0Y29uZmlnLnBhcmFtcy5saW1pdFZhbHVlO1xyXG4gICAgY29uc3QgW2xpbWl0ZGF0YSwgc2V0TGltaXRkYXRhXSA9IHVzZVN0YXRlKG51bGwpO1xyXG4gICAgY29uc3Qgd2lyZU9yZGVyID0gdGVzdFJlc3VsdD8udGVzdGNvbmZpZz8ucGFyYW1zPy53aXJlT3JkZXI7XHJcblxyXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcclxuICAgICAgICAvLyDlvILmraXliqDovb3pmZDliLbmlbDmja5cclxuICAgICAgICBjb25zdCBsb2FkTGltaXREYXRhID0gYXN5bmMgKCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAobGltaXRWYWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgICAgICAvLyDku45saW1pdFZhbHVl5Lit5o+Q5Y+W5Z+656GA5ZCN56ewKOenu+mZpCtQb0XlkowrQUxM5ZCO57yAKVxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGJhc2VOYW1lID0gbGltaXRWYWx1ZS5zcGxpdCgnICgrJylbMF07XHJcbiAgICAgICAgICAgICAgICAgICAgLy8g5L2/55So5Z+656GA5ZCN56ew5Yqg6L295bim5pyJKCtBTEwp5ZCO57yA55qE5paH5Lu2XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IGltcG9ydChgQC9zdG9yZS9DT1BQRVIvJHtiYXNlTmFtZX0gKCtBTEwpLmpzb25gKTtcclxuICAgICAgICAgICAgICAgICAgICBzZXRMaW1pdGRhdGEoZGF0YSk7XHJcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGxvYWRpbmcgbGltaXQgZGF0YTonLCBlcnJvcik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG4gICAgICAgIGxvYWRMaW1pdERhdGEoKTtcclxuICAgIH0sIFtsaW1pdFZhbHVlXSk7IFxyXG5cclxuXHJcblxyXG5cclxuICAgIGNvbnN0IFtwb2VUYWIsIHNldFBvZVRhYl0gPSB1c2VTdGF0ZSgn5Zue6LevJyk7XHJcblxyXG4gICAgY29uc3QgcmVuZGVyUmVzdWx0VGl0bGVCYXIgPSAoKSA9PiB7ICAgICAgXHJcbiAgICAgICAgY29uc3QgaGFuZGxlQmFjayA9ICgpID0+IHtcclxuICAgICAgICAgICAgICAgIGdvQmFjaygpO1xyXG4gICAgICAgICAgfTsgIFxyXG4gICAgICAgIGxldCB0aXRsZSA9ICcnO1xyXG4gICAgICAgIHN3aXRjaCAodmlldykge1xyXG4gICAgICAgICAgICBjYXNlICdMRU5HVEgnOlxyXG4gICAgICAgICAgICAgICAgdGl0bGUgPSAn6ZW/5bqmJztcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlICdPSE0nOlxyXG4gICAgICAgICAgICAgICAgdGl0bGUgPSAn55S16Zi7JztcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlICdQb0UnOlxyXG4gICAgICAgICAgICAgICAgdGl0bGUgPSAnUG9FJztcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlICdEUkFXJzpcclxuICAgICAgICAgICAgICAgIHRpdGxlID0gJ+WbvuihqCc7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9O1xyXG4gICAgICAgIHJldHVybiA8UmVzdWx0VGl0bGVCYXIgdGl0bGU9e2N1cnRpdGxlfSBvbkJhY2s9e2hhbmRsZUJhY2t9IC8+O1xyXG4gICAgfTtcclxuICAgIFxyXG4gICAgY29uc3QgcmVuZGVyQ29udGVudCA9ICgpID0+IHsgICAgICAgIFxyXG4gICAgICAgIHN3aXRjaCAodmlldykge1xyXG4gICAgICAgICAgICBjYXNlICdMRU5HVEgnOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctZnVsbCBoLVs0OTBweF0gYmctWyM2YjZkNmJdXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy1mdWxsIGgtZnVsbCBiZy13aGl0ZSBwLTQgcm91bmRlZC1tZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LWZ1bGxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImdyaWQgZ3JpZC1jb2xzLTQgdGV4dC1jZW50ZXIgYm9yZGVyLWIgYm9yZGVyLWdyYXktMzAwIHBiLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGZsZXgtY29sIGl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC1ibHVlLTYwMCB0ZXh0LWxnXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGZsZXgtY29sIGl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC1ibHVlLTYwMCB0ZXh0LWxnXCI+5Lyg6L6T5bu26L+fPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC1ncmF5LTUwMFwiPihucyk8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggZmxleC1jb2wgaXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LWJsdWUtNjAwIHRleHQtbGdcIj7lu7bov5/ml7blt648L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LWdyYXktNTAwXCI+KG5zKTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBmbGV4LWNvbCBpdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtYmx1ZS02MDAgdGV4dC1sZ1wiPumVv+W6pjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtZ3JheS01MDBcIj4obSk8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibXQtNCBzcGFjZS15LTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgcGFpcjogJzEsMicsIGNvbG9yOiAndGV4dC1vcmFuZ2UtNTAwJywgZGVsYXk6IHRlc3RSZXN1bHQ/LnJlc3VsdGRhdGE/LnBlcmZvcm1hbmNlPy5ERUxBWT8uUEFJUjEyLCBkZWxheVNrZXc6IHRlc3RSZXN1bHQ/LnJlc3VsdGRhdGE/LnBlcmZvcm1hbmNlPy5ERUxBWVNLRVc/LlBBSVIxMiwgbGVuZ3RoOiB0ZXN0UmVzdWx0Py5yZXN1bHRkYXRhPy5wZXJmb3JtYW5jZT8uTEVOR1RIPy5QQUlSMTIgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgcGFpcjogJzMsNicsIGNvbG9yOiAndGV4dC1ncmVlbi01MDAnLCBkZWxheTogdGVzdFJlc3VsdD8ucmVzdWx0ZGF0YT8ucGVyZm9ybWFuY2U/LkRFTEFZPy5QQUlSMzYsIGRlbGF5U2tldzogdGVzdFJlc3VsdD8ucmVzdWx0ZGF0YT8ucGVyZm9ybWFuY2U/LkRFTEFZU0tFVz8uUEFJUjM2LCBsZW5ndGg6IHRlc3RSZXN1bHQ/LnJlc3VsdGRhdGE/LnBlcmZvcm1hbmNlPy5MRU5HVEg/LlBBSVIzNiB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKHdpcmVPcmRlciAhPT0gJ0V0aGVybmV0IFR3by1QYWlyJyAmJiB3aXJlT3JkZXIgIT09ICdNMTItRCBUd28tUGFpcicgPyBbXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgcGFpcjogJzQsNScsIGNvbG9yOiAndGV4dC1ibHVlLTUwMCcsIGRlbGF5OiB0ZXN0UmVzdWx0Py5yZXN1bHRkYXRhPy5wZXJmb3JtYW5jZT8uREVMQVk/LlBBSVI0NSwgZGVsYXlTa2V3OiB0ZXN0UmVzdWx0Py5yZXN1bHRkYXRhPy5wZXJmb3JtYW5jZT8uREVMQVlTS0VXPy5QQUlSNDUsIGxlbmd0aDogdGVzdFJlc3VsdD8ucmVzdWx0ZGF0YT8ucGVyZm9ybWFuY2U/LkxFTkdUSD8uUEFJUjQ1IH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBwYWlyOiAnNyw4JywgY29sb3I6ICd0ZXh0LXllbGxvdy01MDAnLCBkZWxheTogdGVzdFJlc3VsdD8ucmVzdWx0ZGF0YT8ucGVyZm9ybWFuY2U/LkRFTEFZPy5QQUlSNzgsIGRlbGF5U2tldzogdGVzdFJlc3VsdD8ucmVzdWx0ZGF0YT8ucGVyZm9ybWFuY2U/LkRFTEFZU0tFVz8uUEFJUjc4LCBsZW5ndGg6IHRlc3RSZXN1bHQ/LnJlc3VsdGRhdGE/LnBlcmZvcm1hbmNlPy5MRU5HVEg/LlBBSVI3OCB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdIDogW10pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0ubWFwKCh7IHBhaXIsIGNvbG9yLCBkZWxheSwgZGVsYXlTa2V3LCBsZW5ndGggfSkgPT4gKCAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGtleT17cGFpcn0gY2xhc3NOYW1lPXtgZ3JpZCBncmlkLWNvbHMtNCB0ZXh0LWNlbnRlciBib3JkZXItZ3JheS0zMDAgcHQtMiAke2NvbG9yfWB9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZm9udC1ib2xkXCI+e3BhaXJ9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2xpbWl0ZGF0YSAmJiBkZWxheSA+IGxpbWl0ZGF0YS5ERUxBWSA/ICdiZy1yZWQtMTAwIHJvdW5kZWQtbWQnIDogJyd9PntkZWxheX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2xpbWl0ZGF0YSAmJiBkZWxheVNrZXcgPiBsaW1pdGRhdGEuREVMQVlTS0VXID8gJ2JnLXJlZC0xMDAgcm91bmRlZC1tZCcgOiAnJ30+e2RlbGF5U2tld308L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2B0ZXh0LWNlbnRlciAkeyhsaW1pdGRhdGEgJiYgbGVuZ3RoID4gbGltaXRkYXRhLkxFTkdUSCkgJiYgIShsaW1pdFZhbHVlPy5pbmNsdWRlcygnSVNPJykgfHwgbGltaXRWYWx1ZT8uaW5jbHVkZXMoJ1Byb2ZpbmV0JykpID8gJ2JnLXJlZC0yMDAgcm91bmRlZC1tZCcgOiAnJ31gfT57bGVuZ3RofTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7bGltaXRkYXRhICYmIChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJncmlkIGdyaWQtY29scy00IHRleHQtY2VudGVyIGJvcmRlci10IGJvcmRlci1ncmF5LTMwMCBwdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZvbnQtYm9sZFwiPuaegemZkDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PntsaW1pdGRhdGEuREVMQVl9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PntsaW1pdGRhdGEuREVMQVlTS0VXfTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj57bGltaXRkYXRhLkxFTkdUSH08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICBjYXNlICdPSE0nOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctZnVsbCBoLVs0OTBweF0gYmctWyM2YjZkNmJdXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy1mdWxsIGgtZnVsbCBiZy13aGl0ZSBwLTAgcm91bmRlZC1tZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy1mdWxsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgey8qIOmAiemhueWNoSAqL31cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggbWItNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Wyflm57ot68nXS5tYXAoKHRhYikgPT4gKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17dGFifVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldFBvZVRhYih0YWIpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17YGZsZXgtMSBweS0yIHRleHQtY2VudGVyIHRleHQteGwgZm9udC1ib2xkICR7cG9lVGFiID09PSB0YWIgPyAnYmctZ3JhZGllbnQtdG8tYiBmcm9tLVsjYjBiMGIwXSB2aWEtWyNlMGU0ZTBdIHRvLVsjZmZmXSB0ZXh0LWJsYWNrJyA6ICdiZy1bIzMwMzAzMF0gdGV4dC1bI2ZmZmU5Ml0nfWB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3RhYn1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgey8qIOaVsOaNruWxleekuuWMuuWfnyAqL31cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7cG9lVGFiID09PSAn5Zue6LevJyAmJiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibXQtNCBzcGFjZS15LTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZ3JpZCBncmlkLWNvbHMtMiB0ZXh0LWNlbnRlciBib3JkZXItYiBib3JkZXItZ3JheS0zMDAgcGItMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZvbnQtYm9sZFwiPiAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LWdyYXktNTAwIHRleHQtbGdcIj7lgLwozqkpPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHBhaXI6ICcxLDInLCBjb2xvcjogJ3RleHQtb3JhbmdlLTUwMCcsIHZhbHVlOiB0ZXN0UmVzdWx0Py5yZXN1bHRkYXRhPy5wZXJmb3JtYW5jZT8uT0hNPy5MT09QPy5QQUlSMTIgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHBhaXI6ICczLDYnLCBjb2xvcjogJ3RleHQtZ3JlZW4tNTAwJywgdmFsdWU6IHRlc3RSZXN1bHQ/LnJlc3VsdGRhdGE/LnBlcmZvcm1hbmNlPy5PSE0/LkxPT1A/LlBBSVIzNiB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLih3aXJlT3JkZXIgIT09ICdFdGhlcm5ldCBUd28tUGFpcicgJiYgd2lyZU9yZGVyICE9PSAnTTEyLUQgVHdvLVBhaXInID8gW1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHBhaXI6ICc0LDUnLCBjb2xvcjogJ3RleHQtYmx1ZS01MDAnLCB2YWx1ZTogdGVzdFJlc3VsdD8ucmVzdWx0ZGF0YT8ucGVyZm9ybWFuY2U/Lk9ITT8uTE9PUD8uUEFJUjQ1IH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgcGFpcjogJzcsOCcsIGNvbG9yOiAndGV4dC15ZWxsb3ctNTAwJywgdmFsdWU6IHRlc3RSZXN1bHQ/LnJlc3VsdGRhdGE/LnBlcmZvcm1hbmNlPy5PSE0/LkxPT1A/LlBBSVI3OCB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSA6IFtdKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXS5tYXAoKHsgcGFpciwgY29sb3IsIHZhbHVlIH0pID0+IChcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBrZXk9e3BhaXJ9IGNsYXNzTmFtZT1cImdyaWQgZ3JpZC1jb2xzLTIgdGV4dC1jZW50ZXIgcHktMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17YGZvbnQtYm9sZCAke2NvbG9yfWB9PntwYWlyfTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2Pnt2YWx1ZSB8fCAnTi9BJ308L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZ3JpZCBncmlkLWNvbHMtMiB0ZXh0LWNlbnRlciBib3JkZXItdCBib3JkZXItZ3JheS0zMDAgcHQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmb250LWJvbGRcIj7mnoHpmZA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7bGltaXRkYXRhICYmIChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj57bGltaXRkYXRhLkxPT1B9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICBjYXNlICdQb0UnOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctZnVsbCBoLVs0OTBweF0gYmctWyM2YjZkNmJdIFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctZnVsbCBoLWZ1bGwgYmctd2hpdGUgcC0wIHJvdW5kZWQtbWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy1mdWxsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgey8qIOmAiemhueWNoSAqL31cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggbWItNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Wyflm57ot68nLCAn57q/5a+5VUJMJywgJ1AyUCBVQkwnXS5tYXAoKHRhYikgPT4gKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17dGFifVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldFBvZVRhYih0YWIpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17YGZsZXgtMSBweS0xIHRleHQtY2VudGVyIHRleHQtbGcgZm9udC1ib2xkICR7cG9lVGFiID09PSB0YWIgPyAnYmctZ3JhZGllbnQtdG8tYiBmcm9tLVsjYjBiMGIwXSB2aWEtWyNlMGU0ZTBdIHRvLVsjZmZmXSB0ZXh0LWJsYWNrJyA6ICdiZy1bIzMwMzAzMF0gdGV4dC1bI2ZmZmU5Ml0nfWB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3RhYn1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgey8qIOaVsOaNruWxleekuuWMuuWfnyAqL31cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7cG9lVGFiID09PSAn5Zue6LevJyAmJiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibXQtNCBzcGFjZS15LTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZ3JpZCBncmlkLWNvbHMtMiB0ZXh0LWNlbnRlciBib3JkZXItYiBib3JkZXItZ3JheS0zMDAgcGItMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZvbnQtYm9sZFwiPiAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LWdyYXktNTAwIHRleHQtbGdcIj7lgLwozqkpPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHBhaXI6ICcxLDInLCBjb2xvcjogJ3RleHQtb3JhbmdlLTUwMCcsIHZhbHVlOiB0ZXN0UmVzdWx0Py5yZXN1bHRkYXRhPy5wZXJmb3JtYW5jZT8uT0hNPy5MT09QPy5QQUlSMTIgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHBhaXI6ICczLDYnLCBjb2xvcjogJ3RleHQtZ3JlZW4tNTAwJywgdmFsdWU6IHRlc3RSZXN1bHQ/LnJlc3VsdGRhdGE/LnBlcmZvcm1hbmNlPy5PSE0/LkxPT1A/LlBBSVIzNiB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLih3aXJlT3JkZXIgIT09ICdFdGhlcm5ldCBUd28tUGFpcicgJiYgd2lyZU9yZGVyICE9PSAnTTEyLUQgVHdvLVBhaXInID8gW1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBwYWlyOiAnNCw1JywgY29sb3I6ICd0ZXh0LWJsdWUtNTAwJywgdmFsdWU6IHRlc3RSZXN1bHQ/LnJlc3VsdGRhdGE/LnBlcmZvcm1hbmNlPy5PSE0/LkxPT1A/LlBBSVI0NSB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHBhaXI6ICc3LDgnLCBjb2xvcjogJ3RleHQteWVsbG93LTUwMCcsIHZhbHVlOiB0ZXN0UmVzdWx0Py5yZXN1bHRkYXRhPy5wZXJmb3JtYW5jZT8uT0hNPy5MT09QPy5QQUlSNzggfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0gOiBbXSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0ubWFwKCh7IHBhaXIsIGNvbG9yLCB2YWx1ZSB9KSA9PiAoXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYga2V5PXtwYWlyfSBjbGFzc05hbWU9XCJncmlkIGdyaWQtY29scy0yIHRleHQtY2VudGVyIHB5LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2Bmb250LWJvbGQgJHtjb2xvcn1gfT57cGFpcn08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2Ake3ZhbHVlID4gbGltaXRkYXRhPy5MT09QID8gJ2JnLXJlZC0xMDAnIDogJyd9YH0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7dmFsdWUgfHwgJ04vQSd9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJncmlkIGdyaWQtY29scy0yIHRleHQtY2VudGVyIGJvcmRlci10IGJvcmRlci1ncmF5LTMwMCBwdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZvbnQtYm9sZFwiPuaegemZkDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtsaW1pdGRhdGEgJiYgKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PntsaW1pdGRhdGEuTE9PUH08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7cG9lVGFiID09PSAn57q/5a+5VUJMJyAmJiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibXQtNCBzcGFjZS15LTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZ3JpZCBncmlkLWNvbHMtMyB0ZXh0LWNlbnRlciBib3JkZXItYiBib3JkZXItZ3JheS0zMDAgcGItMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZm9udC1ib2xkXCI+ICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGZsZXgtY29sIGl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LWdyYXktNTAwIHRleHQtbGdcIj7lgLwozqkpPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBmbGV4LWNvbCBpdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC1ncmF5LTUwMCB0ZXh0LWxnXCI+5p6B6ZmQKM6pKTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHBhaXI6ICcxLDInLCBjb2xvcjogJ3RleHQtb3JhbmdlLTUwMCcsIHZhbHVlOiB0ZXN0UmVzdWx0Py5yZXN1bHRkYXRhPy5wZXJmb3JtYW5jZT8uT0hNPy5QQUlSVUJMPy5QQUlSMTIgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHBhaXI6ICczLDYnLCBjb2xvcjogJ3RleHQtZ3JlZW4tNTAwJywgdmFsdWU6IHRlc3RSZXN1bHQ/LnJlc3VsdGRhdGE/LnBlcmZvcm1hbmNlPy5PSE0/LlBBSVJVQkw/LlBBSVIzNiB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLih3aXJlT3JkZXIgIT09ICdFdGhlcm5ldCBUd28tUGFpcicgJiYgd2lyZU9yZGVyICE9PSAnTTEyLUQgVHdvLVBhaXInID8gW1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBwYWlyOiAnNCw1JywgY29sb3I6ICd0ZXh0LWJsdWUtNTAwJywgdmFsdWU6IHRlc3RSZXN1bHQ/LnJlc3VsdGRhdGE/LnBlcmZvcm1hbmNlPy5PSE0/LlBBSVJVQkw/LlBBSVI0NSB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHBhaXI6ICc3LDgnLCBjb2xvcjogJ3RleHQteWVsbG93LTUwMCcsIHZhbHVlOiB0ZXN0UmVzdWx0Py5yZXN1bHRkYXRhPy5wZXJmb3JtYW5jZT8uT0hNPy5QQUlSVUJMPy5QQUlSNzggfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0gOiBbXSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0ubWFwKCh7IHBhaXIsIGNvbG9yLCB2YWx1ZSB9KSA9PiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBrZXk9e3BhaXJ9IGNsYXNzTmFtZT1cImdyaWQgZ3JpZC1jb2xzLTMgdGV4dC1jZW50ZXIgcHktMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17YGZvbnQtYm9sZCAke2NvbG9yfWB9PntwYWlyfTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17YCR7dmFsdWUgPiBsaW1pdGRhdGE/LlBBSVJVQkwgPyAnYmctcmVkLTEwMCcgOiAnJ31gfT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt2YWx1ZSB8fCAnTi9BJ31cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtsaW1pdGRhdGEgJiYgKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PntsaW1pdGRhdGEuUEFJUlVCTH08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3BvZVRhYiA9PT0gJ1AyUCBVQkwnICYmIChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtdC00IHNwYWNlLXktNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJncmlkIGdyaWQtY29scy0zIHRleHQtY2VudGVyIGJvcmRlci1iIGJvcmRlci1ncmF5LTMwMCBwYi0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmb250LWJvbGRcIj4gIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBmbGV4LWNvbCBpdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC1ncmF5LTUwMCB0ZXh0LWxnXCI+5YC8KM6pKTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggZmxleC1jb2wgaXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtZ3JheS01MDAgdGV4dC1sZ1wiPuaegemZkCjOqSk8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtbXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBwYWlyOiAnMTItMzYnLCBjb2xvcjogJ3RleHQtb3JhbmdlLTUwMCcsIHZhbHVlOiB0ZXN0UmVzdWx0Py5yZXN1bHRkYXRhPy5wZXJmb3JtYW5jZT8uT0hNPy5QMlBVQkw/LlBBSVIxMjM2IH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKHdpcmVPcmRlciAhPT0gJ0V0aGVybmV0IFR3by1QYWlyJyAmJiB3aXJlT3JkZXIgIT09ICdNMTItRCBUd28tUGFpcicgPyBbXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHBhaXI6ICcxMi00NScsIGNvbG9yOiAndGV4dC1ncmVlbi01MDAnLCB2YWx1ZTogdGVzdFJlc3VsdD8ucmVzdWx0ZGF0YT8ucGVyZm9ybWFuY2U/Lk9ITT8uUDJQVUJMPy5QQUlSMTI0NSB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHBhaXI6ICcxMi03OCcsIGNvbG9yOiAndGV4dC1ibHVlLTUwMCcsIHZhbHVlOiB0ZXN0UmVzdWx0Py5yZXN1bHRkYXRhPy5wZXJmb3JtYW5jZT8uT0hNPy5QMlBVQkw/LlBBSVIxMjc4IH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgcGFpcjogJzM2LTQ1JywgY29sb3I6ICd0ZXh0LXllbGxvdy01MDAnLCB2YWx1ZTogdGVzdFJlc3VsdD8ucmVzdWx0ZGF0YT8ucGVyZm9ybWFuY2U/Lk9ITT8uUDJQVUJMPy5QQUlSMzY0NSB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHBhaXI6ICczNi03OCcsIGNvbG9yOiAndGV4dC1wdXJwbGUtNTAwJywgdmFsdWU6IHRlc3RSZXN1bHQ/LnJlc3VsdGRhdGE/LnBlcmZvcm1hbmNlPy5PSE0/LlAyUFVCTD8uUEFJUjM2NzggfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBwYWlyOiAnNDUtNzgnLCBjb2xvcjogJ3RleHQtcGluay01MDAnLCB2YWx1ZTogdGVzdFJlc3VsdD8ucmVzdWx0ZGF0YT8ucGVyZm9ybWFuY2U/Lk9ITT8uUDJQVUJMPy5QQUlSNDU3OCB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSA6IFtdKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXS5tYXAoKHsgcGFpciwgY29sb3IsIHZhbHVlIH0pID0+IChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGtleT17cGFpcn0gY2xhc3NOYW1lPVwiZ3JpZCBncmlkLWNvbHMtMyB0ZXh0LWNlbnRlciBweS0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtgZm9udC1ib2xkICR7Y29sb3J9YH0+e3BhaXJ9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtgJHt2YWx1ZSA+IGxpbWl0ZGF0YT8uUDJQVUJMID8gJ2JnLXJlZC0xMDAnIDogJyd9YH0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7dmFsdWUgfHwgJ04vQSd9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7bGltaXRkYXRhICYmIChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj57bGltaXRkYXRhLlAyUFVCTH08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgY2FzZSAnRFJBVyc6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy1mdWxsIGgtW2Z1bGxdIGJnLVsjNmI2ZDZiXVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctZnVsbCBoLWZ1bGwgYmctd2hpdGUgcC00IHJvdW5kZWQtbWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtsaW1pdGRhdGEgJiYgKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGcmVxdWVuY3lDaGFydFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJ0aXRsZT17Y3VydGl0bGV9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbWl0VmFsdWU9e2xpbWl0VmFsdWV9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbWl0ZGF0YT17bGltaXRkYXRhfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXJlT3JkZXI9e3dpcmVPcmRlcn1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT17dGVzdFJlc3VsdD8ucmVzdWx0ZGF0YT8ucGVyZm9ybWFuY2U/LmRhdGF9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIGNhc2UgJ0hEVEQnOlxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy1mdWxsIGgtW2Z1bGxdIGJnLVsjNmI2ZDZiXVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LWZ1bGwgaC1mdWxsIGJnLXdoaXRlIHAtNCByb3VuZGVkLW1kXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2xpbWl0ZGF0YSAmJiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxIRFREQ2hhcnRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnRpdGxlPXtjdXJ0aXRsZX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhEVEQ9e3Rlc3RSZXN1bHQ/LnJlc3VsdGRhdGE/LkhEVER9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCByZW5kZXJGb290ZXIgPSAoKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJoLVs2MHB4XSBiZy1bIzMwMzAzMF0gZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1lbmQgcHgtOFwiPlxyXG5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gKFxyXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy1mdWxsIGgtZnVsbCBmbGV4IGZsZXgtY29sIG92ZXJmbG93LWhpZGRlblwiPlxyXG4gICAgICAgICAgICA8U3RhdHVzQmFyIC8+XHJcbiAgICAgICAgICAgIHtyZW5kZXJSZXN1bHRUaXRsZUJhcigpfVxyXG4gICAgICAgICAgICB7cmVuZGVyQ29udGVudCgpfVxyXG4gICAgICAgICAgICB7cmVuZGVyRm9vdGVyKCl9XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICApO1xyXG59Il0sIm5hbWVzIjpbIlJlYWN0IiwidXNlU3RhdGUiLCJ1c2VFZmZlY3QiLCJTdGF0dXNCYXIiLCJSZXN1bHRUaXRsZUJhciIsInVzZURpc3BsYXlTdG9yZSIsIkZyZXF1ZW5jeUNoYXJ0IiwiSERURENoYXJ0IiwiQ29wcGVyUGVyZm9ybWFuY2UiLCJuYXZpZ2F0aW9uIiwibmF2aWdhdGVUbyIsImdvQmFjayIsInZpZXciLCJjdXJyZW50IiwiY3VydGl0bGUiLCJwYXJhbXMiLCJ0ZXN0UmVzdWx0IiwibGltaXRWYWx1ZSIsInRlc3Rjb25maWciLCJsaW1pdGRhdGEiLCJzZXRMaW1pdGRhdGEiLCJ3aXJlT3JkZXIiLCJsb2FkTGltaXREYXRhIiwiYmFzZU5hbWUiLCJzcGxpdCIsImRhdGEiLCJlcnJvciIsImNvbnNvbGUiLCJwb2VUYWIiLCJzZXRQb2VUYWIiLCJyZW5kZXJSZXN1bHRUaXRsZUJhciIsImhhbmRsZUJhY2siLCJ0aXRsZSIsIm9uQmFjayIsInJlbmRlckNvbnRlbnQiLCJkaXYiLCJjbGFzc05hbWUiLCJzcGFuIiwicGFpciIsImNvbG9yIiwiZGVsYXkiLCJyZXN1bHRkYXRhIiwicGVyZm9ybWFuY2UiLCJERUxBWSIsIlBBSVIxMiIsImRlbGF5U2tldyIsIkRFTEFZU0tFVyIsImxlbmd0aCIsIkxFTkdUSCIsIlBBSVIzNiIsIlBBSVI0NSIsIlBBSVI3OCIsIm1hcCIsImluY2x1ZGVzIiwidGFiIiwiYnV0dG9uIiwib25DbGljayIsInZhbHVlIiwiT0hNIiwiTE9PUCIsIlBBSVJVQkwiLCJQMlBVQkwiLCJQQUlSMTIzNiIsIlBBSVIxMjQ1IiwiUEFJUjEyNzgiLCJQQUlSMzY0NSIsIlBBSVIzNjc4IiwiUEFJUjQ1NzgiLCJIRFREIiwicmVuZGVyRm9vdGVyIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(pages-dir-node)/./src/components/dsxpage/fluke/CopperPerformance.js\n"); /***/ }), /***/ "(pages-dir-node)/./src/components/dsxpage/fluke/HomePage.js": /*!**************************************************!*\ !*** ./src/components/dsxpage/fluke/HomePage.js ***! \**************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; eval("__webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ HomePage)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"react/jsx-dev-runtime\");\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 */ \"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var next_image__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! next/image */ \"(pages-dir-node)/./node_modules/next/image.js\");\n/* harmony import */ var next_image__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(next_image__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _components_lib_StatusBar__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/components/lib/StatusBar */ \"(pages-dir-node)/./src/components/lib/StatusBar.js\");\n/* harmony import */ var _components_lib_TitleBar__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/components/lib/TitleBar */ \"(pages-dir-node)/./src/components/lib/TitleBar.js\");\n/* harmony import */ var _store_displayStore__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/store/displayStore */ \"(pages-dir-node)/./src/store/displayStore.js\");\n/* harmony import */ var _store_deviceStore__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @/store/deviceStore */ \"(pages-dir-node)/./src/store/deviceStore.js\");\n/* harmony import */ var _utils_asset__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @/utils/asset */ \"(pages-dir-node)/./src/utils/asset.js\");\nvar __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_components_lib_StatusBar__WEBPACK_IMPORTED_MODULE_3__, _components_lib_TitleBar__WEBPACK_IMPORTED_MODULE_4__, _store_displayStore__WEBPACK_IMPORTED_MODULE_5__, _store_deviceStore__WEBPACK_IMPORTED_MODULE_6__, _utils_asset__WEBPACK_IMPORTED_MODULE_7__]);\n([_components_lib_StatusBar__WEBPACK_IMPORTED_MODULE_3__, _components_lib_TitleBar__WEBPACK_IMPORTED_MODULE_4__, _store_displayStore__WEBPACK_IMPORTED_MODULE_5__, _store_deviceStore__WEBPACK_IMPORTED_MODULE_6__, _utils_asset__WEBPACK_IMPORTED_MODULE_7__] = __webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__);\n\n\n\n\n\n\n\n\nfunction HomePage() {\n const { getCurrentProject, getCurrentTestConfig, getCurrentOperator, getCurrentCableId, getCurrentCableId2, navigateTo, hasPlayedSound, setToastMessage } = (0,_store_displayStore__WEBPACK_IMPORTED_MODULE_5__[\"default\"])();\n const { ref } = _store_displayStore__WEBPACK_IMPORTED_MODULE_5__[\"default\"].getState();\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)({\n \"HomePage.useEffect\": ()=>{\n if (hasPlayedSound) {\n _store_displayStore__WEBPACK_IMPORTED_MODULE_5__[\"default\"].setState({\n hasPlayedSound: false\n });\n }\n }\n }[\"HomePage.useEffect\"], [\n hasPlayedSound\n ]);\n const { connectionStatus, mainUnitAdapter, remoteUnitAdapter, mainUnitModules, setTotalToastMessage } = (0,_store_deviceStore__WEBPACK_IMPORTED_MODULE_6__[\"default\"])();\n // 获取当前项目数据\n const currentProject = getCurrentProject();\n // 获取当前选中的测试配置\n const currentConfig = getCurrentTestConfig();\n // 获取当前选中的操作员\n const currentOperator = getCurrentOperator();\n // 获取当前选中的电缆ID\n const currentCableId = getCurrentCableId();\n // 获取当前选中的电缆ID2\n const currentCableId2 = getCurrentCableId2();\n const passCount = currentProject?.testResults.filter((result)=>{\n const copperStatus = result.CopperResultStatus;\n const cfpStatus = result.CFPResultStatus;\n const ofpStatus = result.ofpResultStatus;\n if (copperStatus) {\n return copperStatus === 'pass';\n } else if (cfpStatus) {\n return cfpStatus === 'pass';\n } else if (ofpStatus) {\n return ofpStatus === 'pass';\n }\n return false;\n }).length;\n const failCount = currentProject?.testResults.filter((result)=>{\n const copperStatus = result.CopperResultStatus;\n const cfpStatus = result.CFPResultStatus;\n const ofpStatus = result.ofpResultStatus;\n if (copperStatus) {\n return copperStatus === 'fail';\n } else if (cfpStatus) {\n return cfpStatus === 'fail';\n } else if (ofpStatus) {\n return ofpStatus === 'fail';\n }\n return false;\n }).length;\n const ConnectStatus = connectionStatus?.CFPConnectStatus ?? connectionStatus?.['8000ConnectStatus'];\n // 计算下一个线缆ID\n const getNextCableId = (currentId)=>{\n const match = currentId.match(/^(.*?)(\\d+)$/);\n if (match) {\n const prefix = match[1];\n const number = parseInt(match[2]) + 1;\n return `${prefix}${number.toString().padStart(match[2].length, '0')}`;\n }\n return currentId;\n };\n const handleProjectClick = ()=>{\n navigateTo('project', 'main');\n };\n const handleOperatorsClick = ()=>{\n navigateTo('operators', 'main');\n };\n // 渲染测试配置区域的内容\n const renderTestConfigContent = ()=>{\n if (!currentConfig) return null;\n switch(currentConfig.moduleType){\n case '8000':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-col justify-center h-full space-y-0.2 text-sm\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black text-sm\",\n children: currentConfig.params.limitValue\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/HomePage.js\",\n lineNumber: 109,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black text-sm\",\n children: currentConfig.params.cableType\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/HomePage.js\",\n lineNumber: 110,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black text-sm\",\n children: currentConfig.params.wireOrder\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/HomePage.js\",\n lineNumber: 111,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/HomePage.js\",\n lineNumber: 108,\n columnNumber: 21\n }, this);\n case 'cfp':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-col justify-center h-full space-y-0.2 text-sm\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black text-sm\",\n children: \"智能远端\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/HomePage.js\",\n lineNumber: 117,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black text-sm\",\n children: currentConfig.params.limitValue\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/HomePage.js\",\n lineNumber: 118,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black text-sm\",\n children: currentConfig.params.cableType\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/HomePage.js\",\n lineNumber: 119,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black text-sm\",\n children: [\n currentConfig.params.refJumper,\n \" 跳线参照\"\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/HomePage.js\",\n lineNumber: 120,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/HomePage.js\",\n lineNumber: 116,\n columnNumber: 21\n }, this);\n case 'ofp':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-col justify-center h-full space-y-0.2 text-sm\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black text-sm\",\n children: \"自动OTDR\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/HomePage.js\",\n lineNumber: 126,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black text-sm\",\n children: currentConfig.params.limitValue\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/HomePage.js\",\n lineNumber: 127,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black text-sm\",\n children: currentConfig.params.cableType\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/HomePage.js\",\n lineNumber: 128,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/HomePage.js\",\n lineNumber: 125,\n columnNumber: 21\n }, this);\n default:\n return null;\n }\n };\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full h-full flex flex-col overflow-hidden\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_StatusBar__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {}, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/HomePage.js\",\n lineNumber: 140,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_TitleBar__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n title: \"HOME\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/HomePage.js\",\n lineNumber: 141,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[490px] bg-[#303040] p-2 flex flex-col\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[315px] bg-[#c5c2c5] rounded-sm p-3 shadow-lg flex flex-col gap-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex justify-between items-start cursor-pointer\",\n onClick: handleProjectClick,\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-lg font-bold mb-2\",\n children: [\n \"项目:\",\n currentProject?.name\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/HomePage.js\",\n lineNumber: 149,\n columnNumber: 29\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-1\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-green-500\",\n children: passCount || 0\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/HomePage.js\",\n lineNumber: 152,\n columnNumber: 37\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-3 h-3 relative\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: (0,_utils_asset__WEBPACK_IMPORTED_MODULE_7__.getAssetUrl)('/pass.png'),\n alt: \"通过\",\n sizes: \"auto\",\n fill: true,\n className: \"object-contain\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/HomePage.js\",\n lineNumber: 154,\n columnNumber: 41\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/HomePage.js\",\n lineNumber: 153,\n columnNumber: 37\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/HomePage.js\",\n lineNumber: 151,\n columnNumber: 33\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-1\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-red-500\",\n children: failCount || 0\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/HomePage.js\",\n lineNumber: 164,\n columnNumber: 37\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-3 h-3 relative\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: (0,_utils_asset__WEBPACK_IMPORTED_MODULE_7__.getAssetUrl)('/fail.png'),\n alt: \"失败\",\n sizes: \"auto\",\n fill: true,\n className: \"object-contain\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/HomePage.js\",\n lineNumber: 166,\n columnNumber: 41\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/HomePage.js\",\n lineNumber: 165,\n columnNumber: 37\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/HomePage.js\",\n lineNumber: 163,\n columnNumber: 33\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/HomePage.js\",\n lineNumber: 150,\n columnNumber: 29\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/HomePage.js\",\n lineNumber: 148,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-6 h-6 relative\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: (0,_utils_asset__WEBPACK_IMPORTED_MODULE_7__.getAssetUrl)('/arrow.png'),\n alt: \"箭头\",\n sizes: \"auto\",\n fill: true,\n className: \"object-contain\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/HomePage.js\",\n lineNumber: 178,\n columnNumber: 29\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/HomePage.js\",\n lineNumber: 177,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/HomePage.js\",\n lineNumber: 147,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[100px] bg-gradient-to-b from-[#e6e3e6] to-[#7b797b] rounded-sm p-4 shadow-lg flex justify-between items-center cursor-pointer\",\n onClick: ()=>navigateTo('testConfig', 'main'),\n children: [\n renderTestConfigContent(),\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: \"text-gray-500 text-sm\",\n children: currentConfig?.modulelable\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/HomePage.js\",\n lineNumber: 195,\n columnNumber: 29\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-3 h-3 relative\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: (0,_utils_asset__WEBPACK_IMPORTED_MODULE_7__.getAssetUrl)('/arrow.png'),\n alt: \"箭头\",\n sizes: \"auto\",\n fill: true,\n className: \"object-contain\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/HomePage.js\",\n lineNumber: 197,\n columnNumber: 33\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/HomePage.js\",\n lineNumber: 196,\n columnNumber: 29\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/HomePage.js\",\n lineNumber: 194,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/HomePage.js\",\n lineNumber: 189,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[60px] bg-gradient-to-b from-[#e6e3e6] to-[#7b797b] rounded-sm p-4 shadow-lg flex justify-between items-center cursor-pointer\",\n onClick: ()=>navigateTo('cableId', currentConfig?.moduleType === 'cfp' ? 'cfp' : 'main'),\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-col justify-center h-full space-y-0.2 text-sm\",\n children: currentConfig?.moduleType === 'cfp' ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black\",\n children: [\n \"下一个输入ID: \",\n currentCableId?.name\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/HomePage.js\",\n lineNumber: 216,\n columnNumber: 37\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black\",\n children: [\n \"下一个输出ID: \",\n currentCableId2?.name\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/HomePage.js\",\n lineNumber: 217,\n columnNumber: 37\n }, this)\n ]\n }, void 0, true) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black\",\n children: [\n \"下一个ID:\",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n children: currentCableId?.name\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/HomePage.js\",\n lineNumber: 221,\n columnNumber: 33\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/HomePage.js\",\n lineNumber: 220,\n columnNumber: 33\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/HomePage.js\",\n lineNumber: 213,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-3 h-3 relative\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: (0,_utils_asset__WEBPACK_IMPORTED_MODULE_7__.getAssetUrl)('/arrow.png'),\n alt: \"箭头\",\n sizes: \"auto\",\n fill: true,\n className: \"object-contain\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/HomePage.js\",\n lineNumber: 226,\n columnNumber: 29\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/HomePage.js\",\n lineNumber: 225,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/HomePage.js\",\n lineNumber: 209,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[40px] bg-gradient-to-b from-[#e6e3e6] to-[#7b797b] rounded-sm p-4 shadow-lg flex justify-between items-center cursor-pointer\",\n onClick: handleOperatorsClick,\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black text-sm\",\n children: [\n \"操作员: \",\n currentOperator?.name\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/HomePage.js\",\n lineNumber: 241,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-3 h-3 relative\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: (0,_utils_asset__WEBPACK_IMPORTED_MODULE_7__.getAssetUrl)('/arrow.png'),\n alt: \"箭头\",\n sizes: \"auto\",\n fill: true,\n className: \"object-contain\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/HomePage.js\",\n lineNumber: 243,\n columnNumber: 29\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/HomePage.js\",\n lineNumber: 242,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/HomePage.js\",\n lineNumber: 237,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/HomePage.js\",\n lineNumber: 145,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 flex items-center justify-center gap-16\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-col items-center gap-2\",\n onClick: ()=>navigateTo('tools', 'main'),\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-20 h-20 rounded-sm shadow-lg flex items-center justify-center cursor-pointer\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full h-full relative\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: (0,_utils_asset__WEBPACK_IMPORTED_MODULE_7__.getAssetUrl)('/tools.png'),\n alt: \"工具\",\n sizes: \"auto\",\n fill: true,\n className: \"object-contain\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/HomePage.js\",\n lineNumber: 260,\n columnNumber: 33\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/HomePage.js\",\n lineNumber: 259,\n columnNumber: 29\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/HomePage.js\",\n lineNumber: 258,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-white text-sm\",\n children: \"工具\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/HomePage.js\",\n lineNumber: 269,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/HomePage.js\",\n lineNumber: 256,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-col items-center gap-2 cursor-pointer\",\n onClick: ()=>navigateTo('result', 'main'),\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-20 h-20 rounded-sm shadow-lg flex items-center justify-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full h-full relative\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: (0,_utils_asset__WEBPACK_IMPORTED_MODULE_7__.getAssetUrl)('/result.png'),\n alt: \"结果\",\n sizes: \"auto\",\n fill: true,\n className: \"object-contain\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/HomePage.js\",\n lineNumber: 277,\n columnNumber: 33\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/HomePage.js\",\n lineNumber: 276,\n columnNumber: 29\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/HomePage.js\",\n lineNumber: 275,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-white text-sm\",\n children: \"结果\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/HomePage.js\",\n lineNumber: 286,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/HomePage.js\",\n lineNumber: 271,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/HomePage.js\",\n lineNumber: 255,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/HomePage.js\",\n lineNumber: 143,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[60px] bg-[#303030] flex items-center justify-between px-5\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/HomePage.js\",\n lineNumber: 294,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 flex justify-center\",\n children: (currentConfig?.moduleType === 'cfp' || currentConfig?.moduleType === 'ofp') && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n className: \"w-[120px] h-[40px] bg-gradient-to-b from-[#656565] to-[#313431] rounded-sm flex items-center justify-center text-white font-bold shadow-lg\",\n onClick: ()=>{\n // 根据模块类型设置不同的参照逻辑\n if (currentConfig?.moduleType === 'cfp') {\n navigateTo('tools', 'ref-cfp');\n } else if (currentConfig?.moduleType === 'ofp') {\n navigateTo('tools', 'ref-ofp');\n }\n },\n children: currentConfig?.moduleType === 'ofp' ? '设置基准' : '设置参照'\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/HomePage.js\",\n lineNumber: 297,\n columnNumber: 33\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/HomePage.js\",\n lineNumber: 295,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 flex justify-end\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n className: \"w-[100px] h-[40px] bg-gradient-to-b from-[#ffd773] to-[#e7aa29] rounded-sm flex items-center justify-center text-black font-bold shadow-lg\",\n onClick: ()=>{\n if (currentConfig?.moduleType === '8000' || currentConfig?.moduleType === 'cfp') {\n if (!ConnectStatus) {\n setToastMessage('未连接,请检查连接状态');\n return;\n }\n }\n if (currentConfig?.moduleType === '8000') {\n if (mainUnitModules?.[0]?.id !== '8000') {\n setToastMessage('当前模块与所选标准不兼容');\n return;\n }\n const limitValue = currentConfig.params.limitValue;\n if (limitValue.includes('Channel') || limitValue.includes('Ch')) {\n if (!mainUnitAdapter.id.includes('channel') || !remoteUnitAdapter.id.includes('channel')) {\n setToastMessage('当前适配器与所选标准不兼容');\n return;\n }\n } else if (limitValue.includes('Perm') || limitValue.includes('PL')) {\n if (!mainUnitAdapter.id.includes('permanent') || !remoteUnitAdapter.id.includes('permanent')) {\n setToastMessage('当前适配器与所选标准不兼容');\n return;\n }\n } else if (limitValue.includes('MPTL')) {\n const hasPermanent = mainUnitAdapter.id.includes('permanent') || remoteUnitAdapter.id.includes('permanent');\n const hasPatchcode = mainUnitAdapter.id.includes('patchcode') || remoteUnitAdapter.id.includes('patchcode');\n if (!(hasPermanent && hasPatchcode)) {\n setToastMessage('当前适配器与所选标准不兼容');\n return;\n }\n }\n }\n if (currentConfig?.moduleType === 'cfp') {\n if (mainUnitModules?.[0]?.id !== 'cfp') {\n setToastMessage('当前模块与所选标准不兼容');\n return;\n }\n // 检查光纤类型\n const cableType = currentConfig.params.cableType;\n const isMultiMode = cableType.includes('OM');\n // 根据单/多模获取对应的路径\n let mainOutPath, mainInPath, remoteOutPath, remoteInPath;\n if (isMultiMode) {\n // 多模光纤路径\n mainOutPath = connectionStatus?.mainPaths?.['main-cfp-mm-out']?.path || [];\n mainInPath = connectionStatus?.mainPaths?.['main-cfp-in']?.path || [];\n remoteOutPath = connectionStatus?.remotePaths?.['remote-cfp-mm-out']?.path || [];\n remoteInPath = connectionStatus?.remotePaths?.['remote-cfp-in']?.path || [];\n // 检查是否所有端口都已连接\n if (!mainOutPath.length || !mainInPath.length || !remoteOutPath.length || !remoteInPath.length) {\n setTotalToastMessage('请确保所有光纤端口都已正确连接');\n return;\n }\n // 检查是否存在单模跳线\n const hasInvalidConnector = [\n ...mainOutPath,\n ...mainInPath,\n ...remoteOutPath,\n ...remoteInPath\n ].some((item)=>{\n return item.includes('sm');\n });\n if (hasInvalidConnector) {\n setTotalToastMessage('多模光纤链路中存在单模跳线,请检查连接');\n return;\n }\n } else {\n // 单模光纤路径\n mainOutPath = connectionStatus?.mainPaths?.['main-cfp-sm-out']?.path || [];\n mainInPath = connectionStatus?.mainPaths?.['main-cfp-in']?.path || [];\n remoteOutPath = connectionStatus?.remotePaths?.['remote-cfp-sm-out']?.path || [];\n remoteInPath = connectionStatus?.remotePaths?.['remote-cfp-in']?.path || [];\n // 检查是否所有端口都已连接\n if (!mainOutPath.length || !mainInPath.length || !remoteOutPath.length || !remoteInPath.length) {\n setTotalToastMessage('请确保所有光纤端口都已正确连接');\n return;\n }\n // 检查是否存在多模跳线\n const hasInvalidConnector = [\n ...mainOutPath,\n ...mainInPath,\n ...remoteOutPath,\n ...remoteInPath\n ].some((item)=>{\n return item.includes('mm');\n });\n if (hasInvalidConnector) {\n setTotalToastMessage('单模光纤链路中存在多模跳线,请检查连接');\n return;\n }\n }\n }\n if (currentConfig?.moduleType === 'ofp') {\n if (mainUnitModules?.[0]?.id !== 'ofp') {\n setToastMessage('当前模块与所选标准不兼容');\n return;\n }\n // 检查光纤类型是否匹配\n const cableType = currentConfig.params.cableType;\n const isMultiMode = cableType.includes('OM');\n const portType = Object.values(connectionStatus?.mainPaths || {})[0]?.start;\n if (isMultiMode && portType !== 'main-ofp-mm-out') {\n setTotalToastMessage('当前光纤类型必须使用多模端口测试');\n return;\n }\n if (!isMultiMode && portType !== 'main-ofp-sm-out') {\n setTotalToastMessage('当前光纤类型必须使用单模端口测试');\n return;\n }\n // 检查光纤连接器类型是否匹配\n const path = Object.values(connectionStatus?.mainPaths || {})[0]?.path || [];\n const hasInvalidConnector = path.some((item)=>{\n if (isMultiMode) {\n return item.includes('sm-') || item.includes('smc-');\n } else {\n return item.includes('mm-') || item.includes('mmc-');\n }\n });\n if (hasInvalidConnector) {\n setTotalToastMessage(isMultiMode ? '未检测到多模光纤,请检查光纤连接' : '未检测到单模光纤,请检查光纤连接');\n return;\n }\n if (!connectionStatus?.OFPStatus) {\n setTotalToastMessage('请接入实际被测链路,进行测试');\n return;\n }\n // 检查光纤连接数量\n const fiberConnectorCount = path.filter((item)=>{\n return item.includes('sm-') || item.includes('mm-') || item.includes('smc-') || item.includes('mmc-');\n }).length;\n if (fiberConnectorCount > 3) {\n setTotalToastMessage('该场景仅支持使用一段光纤连接测试仪与链路');\n return;\n }\n }\n navigateTo('testing', 'nosave');\n },\n children: \"测试\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/HomePage.js\",\n lineNumber: 314,\n columnNumber: 29\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/HomePage.js\",\n lineNumber: 313,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/HomePage.js\",\n lineNumber: 292,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/HomePage.js\",\n lineNumber: 139,\n columnNumber: 9\n }, this);\n}\n\n__webpack_async_result__();\n} catch(e) { __webpack_async_result__(e); } });//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHBhZ2VzLWRpci1ub2RlKS8uL3NyYy9jb21wb25lbnRzL2RzeHBhZ2UvZmx1a2UvSG9tZVBhZ2UuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUF5QztBQUNWO0FBQ29CO0FBQ0Y7QUFDRTtBQUNGO0FBQ0w7QUFFN0IsU0FBU1E7SUFDcEIsTUFBTSxFQUNGQyxpQkFBaUIsRUFDakJDLG9CQUFvQixFQUNwQkMsa0JBQWtCLEVBQ2xCQyxpQkFBaUIsRUFDakJDLGtCQUFrQixFQUNsQkMsVUFBVSxFQUNWQyxjQUFjLEVBQ2RDLGVBQWUsRUFDbEIsR0FBR1gsK0RBQWVBO0lBRW5CLE1BQU0sRUFBRVksR0FBRyxFQUFFLEdBQUdaLG9FQUF3QjtJQUV4Q0osZ0RBQVNBOzhCQUFDO1lBQ04sSUFBSWMsZ0JBQWdCO2dCQUNoQlYsb0VBQXdCLENBQUM7b0JBQUVVLGdCQUFnQjtnQkFBTTtZQUNyRDtRQUNKOzZCQUFHO1FBQUNBO0tBQWU7SUFFbkIsTUFBTSxFQUFFSyxnQkFBZ0IsRUFBRUMsZUFBZSxFQUFFQyxpQkFBaUIsRUFBQ0MsZUFBZSxFQUFDQyxvQkFBb0IsRUFBRSxHQUFHbEIsOERBQWNBO0lBR3BILFdBQVc7SUFDWCxNQUFNbUIsaUJBQWlCaEI7SUFFdkIsY0FBYztJQUNkLE1BQU1pQixnQkFBZ0JoQjtJQUV0QixhQUFhO0lBQ2IsTUFBTWlCLGtCQUFrQmhCO0lBRXhCLGNBQWM7SUFDZCxNQUFNaUIsaUJBQWlCaEI7SUFDdkIsZUFBZTtJQUNmLE1BQU1pQixrQkFBa0JoQjtJQUV4QixNQUFNaUIsWUFBWUwsZ0JBQWdCTSxZQUFZQyxPQUFPQyxDQUFBQTtRQUNqRCxNQUFNQyxlQUFlRCxPQUFPRSxrQkFBa0I7UUFDOUMsTUFBTUMsWUFBWUgsT0FBT0ksZUFBZTtRQUN4QyxNQUFNQyxZQUFZTCxPQUFPTSxlQUFlO1FBRXhDLElBQUlMLGNBQWM7WUFDZCxPQUFPQSxpQkFBaUI7UUFDNUIsT0FBTyxJQUFJRSxXQUFXO1lBQ2xCLE9BQU9BLGNBQWM7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QUFrQitELGFBQWEsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFQyxRQUFRLEVBQUU7b0NBQzVFLE1BQU1FLHNCQUFzQkYsS0FBS0csSUFBSSxDQUFDQyxDQUFBQTt3Q0FDbEMsSUFBSVYsYUFBYTs0Q0FDYixPQUFPVSxLQUFLYixRQUFRLENBQUMsVUFBVWEsS0FBS2IsUUFBUSxDQUFDO3dDQUNqRCxPQUFPOzRDQUNILE9BQU9hLEtBQUtiLFFBQVEsQ0FBQyxVQUFVYSxLQUFLYixRQUFRLENBQUM7d0NBQ2pEO29DQUNKO29DQUVBLElBQUlXLHFCQUFxQjt3Q0FDckI5RCxxQkFBcUJzRCxjQUFjLHFCQUFxQjt3Q0FDeEQ7b0NBQ0o7b0NBRUEsSUFBSSxDQUFDMUQsa0JBQWtCeUUsV0FBVzt3Q0FDOUJyRSxxQkFBcUI7d0NBQ3JCO29DQUNKO29DQUVBLFdBQVc7b0NBQ1gsTUFBTXNFLHNCQUFzQlYsS0FBS3BELE1BQU0sQ0FBQ3dELENBQUFBO3dDQUNwQyxPQUFPQSxLQUFLYixRQUFRLENBQUMsVUFBVWEsS0FBS2IsUUFBUSxDQUFDLFVBQ3RDYSxLQUFLYixRQUFRLENBQUMsV0FBV2EsS0FBS2IsUUFBUSxDQUFDO29DQUNsRCxHQUFHbkMsTUFBTTtvQ0FFVCxJQUFJc0Qsc0JBQXNCLEdBQUc7d0NBQ3pCdEUscUJBQXFCO3dDQUNyQjtvQ0FDSjtnQ0FDSjtnQ0FFQVYsV0FBVyxXQUFVOzRCQUN6QjtzQ0FDSDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFRN0IiLCJzb3VyY2VzIjpbIi9vcHQvZGV2L2VzdC1kc3gvc3JjL2NvbXBvbmVudHMvZHN4cGFnZS9mbHVrZS9Ib21lUGFnZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0IH0gZnJvbSAncmVhY3QnO1xyXG5pbXBvcnQgSW1hZ2UgZnJvbSAnbmV4dC9pbWFnZSc7XHJcbmltcG9ydCBTdGF0dXNCYXIgZnJvbSAnQC9jb21wb25lbnRzL2xpYi9TdGF0dXNCYXInO1xyXG5pbXBvcnQgVGl0bGVCYXIgZnJvbSAnQC9jb21wb25lbnRzL2xpYi9UaXRsZUJhcic7XHJcbmltcG9ydCB1c2VEaXNwbGF5U3RvcmUgZnJvbSAnQC9zdG9yZS9kaXNwbGF5U3RvcmUnO1xyXG5pbXBvcnQgdXNlRGV2aWNlU3RvcmUgZnJvbSAnQC9zdG9yZS9kZXZpY2VTdG9yZSc7XHJcbmltcG9ydCB7IGdldEFzc2V0VXJsIH0gZnJvbSAnQC91dGlscy9hc3NldCc7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBIb21lUGFnZSgpIHtcclxuICAgIGNvbnN0IHsgXHJcbiAgICAgICAgZ2V0Q3VycmVudFByb2plY3QsXHJcbiAgICAgICAgZ2V0Q3VycmVudFRlc3RDb25maWcsXHJcbiAgICAgICAgZ2V0Q3VycmVudE9wZXJhdG9yLFxyXG4gICAgICAgIGdldEN1cnJlbnRDYWJsZUlkLFxyXG4gICAgICAgIGdldEN1cnJlbnRDYWJsZUlkMixcclxuICAgICAgICBuYXZpZ2F0ZVRvLFxyXG4gICAgICAgIGhhc1BsYXllZFNvdW5kLFxyXG4gICAgICAgIHNldFRvYXN0TWVzc2FnZVxyXG4gICAgfSA9IHVzZURpc3BsYXlTdG9yZSgpO1xyXG4gICAgXHJcbiAgICBjb25zdCB7IHJlZiB9ID0gdXNlRGlzcGxheVN0b3JlLmdldFN0YXRlKCk7XHJcblxyXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcclxuICAgICAgICBpZiAoaGFzUGxheWVkU291bmQpIHtcclxuICAgICAgICAgICAgdXNlRGlzcGxheVN0b3JlLnNldFN0YXRlKHsgaGFzUGxheWVkU291bmQ6IGZhbHNlIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH0sIFtoYXNQbGF5ZWRTb3VuZF0pO1xyXG5cclxuICAgIGNvbnN0IHsgY29ubmVjdGlvblN0YXR1cywgbWFpblVuaXRBZGFwdGVyLCByZW1vdGVVbml0QWRhcHRlcixtYWluVW5pdE1vZHVsZXMsc2V0VG90YWxUb2FzdE1lc3NhZ2UgfSA9IHVzZURldmljZVN0b3JlKCk7XHJcbiAgICBcclxuXHJcbiAgICAvLyDojrflj5blvZPliY3pobnnm67mlbDmja5cclxuICAgIGNvbnN0IGN1cnJlbnRQcm9qZWN0ID0gZ2V0Q3VycmVudFByb2plY3QoKTtcclxuICAgIFxyXG4gICAgLy8g6I635Y+W5b2T5YmN6YCJ5Lit55qE5rWL6K+V6YWN572uXHJcbiAgICBjb25zdCBjdXJyZW50Q29uZmlnID0gZ2V0Q3VycmVudFRlc3RDb25maWcoKTtcclxuXHJcbiAgICAvLyDojrflj5blvZPliY3pgInkuK3nmoTmk43kvZzlkZhcclxuICAgIGNvbnN0IGN1cnJlbnRPcGVyYXRvciA9IGdldEN1cnJlbnRPcGVyYXRvcigpO1xyXG5cclxuICAgIC8vIOiOt+WPluW9k+WJjemAieS4reeahOeUtee8hklEXHJcbiAgICBjb25zdCBjdXJyZW50Q2FibGVJZCA9IGdldEN1cnJlbnRDYWJsZUlkKCk7XHJcbiAgICAvLyDojrflj5blvZPliY3pgInkuK3nmoTnlLXnvIZJRDJcclxuICAgIGNvbnN0IGN1cnJlbnRDYWJsZUlkMiA9IGdldEN1cnJlbnRDYWJsZUlkMigpO1xyXG5cclxuICAgIGNvbnN0IHBhc3NDb3VudCA9IGN1cnJlbnRQcm9qZWN0Py50ZXN0UmVzdWx0cy5maWx0ZXIocmVzdWx0ID0+IHtcclxuICAgICAgICBjb25zdCBjb3BwZXJTdGF0dXMgPSByZXN1bHQuQ29wcGVyUmVzdWx0U3RhdHVzO1xyXG4gICAgICAgIGNvbnN0IGNmcFN0YXR1cyA9IHJlc3VsdC5DRlBSZXN1bHRTdGF0dXM7XHJcbiAgICAgICAgY29uc3Qgb2ZwU3RhdHVzID0gcmVzdWx0Lm9mcFJlc3VsdFN0YXR1cztcclxuICAgICAgICBcclxuICAgICAgICBpZiAoY29wcGVyU3RhdHVzKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBjb3BwZXJTdGF0dXMgPT09ICdwYXNzJztcclxuICAgICAgICB9IGVsc2UgaWYgKGNmcFN0YXR1cykge1xyXG4gICAgICAgICAgICByZXR1cm4gY2ZwU3RhdHVzID09PSAncGFzcyc7XHJcbiAgICAgICAgfSBlbHNlIGlmIChvZnBTdGF0dXMpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG9mcFN0YXR1cyA9PT0gJ3Bhc3MnO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9KS5sZW5ndGg7XHJcbiAgICBcclxuICAgIGNvbnN0IGZhaWxDb3VudCA9IGN1cnJlbnRQcm9qZWN0Py50ZXN0UmVzdWx0cy5maWx0ZXIocmVzdWx0ID0+IHtcclxuICAgICAgICBjb25zdCBjb3BwZXJTdGF0dXMgPSByZXN1bHQuQ29wcGVyUmVzdWx0U3RhdHVzO1xyXG4gICAgICAgIGNvbnN0IGNmcFN0YXR1cyA9IHJlc3VsdC5DRlBSZXN1bHRTdGF0dXM7XHJcbiAgICAgICAgY29uc3Qgb2ZwU3RhdHVzID0gcmVzdWx0Lm9mcFJlc3VsdFN0YXR1cztcclxuICAgICAgICBcclxuICAgICAgICBpZiAoY29wcGVyU3RhdHVzKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBjb3BwZXJTdGF0dXMgPT09ICdmYWlsJztcclxuICAgICAgICB9IGVsc2UgaWYgKGNmcFN0YXR1cykge1xyXG4gICAgICAgICAgICByZXR1cm4gY2ZwU3RhdHVzID09PSAnZmFpbCc7XHJcbiAgICAgICAgfSBlbHNlIGlmIChvZnBTdGF0dXMpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG9mcFN0YXR1cyA9PT0gJ2ZhaWwnO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9KS5sZW5ndGg7XHJcblxyXG5cclxuICAgIGNvbnN0IENvbm5lY3RTdGF0dXMgPSBjb25uZWN0aW9uU3RhdHVzPy5DRlBDb25uZWN0U3RhdHVzID8/IGNvbm5lY3Rpb25TdGF0dXM/LlsnODAwMENvbm5lY3RTdGF0dXMnXTtcclxuICAgIFxyXG5cclxuXHJcblxyXG4gICAgLy8g6K6h566X5LiL5LiA5Liq57q/57yGSURcclxuICAgIGNvbnN0IGdldE5leHRDYWJsZUlkID0gKGN1cnJlbnRJZCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IG1hdGNoID0gY3VycmVudElkLm1hdGNoKC9eKC4qPykoXFxkKykkLyk7XHJcbiAgICAgICAgaWYgKG1hdGNoKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHByZWZpeCA9IG1hdGNoWzFdO1xyXG4gICAgICAgICAgICBjb25zdCBudW1iZXIgPSBwYXJzZUludChtYXRjaFsyXSkgKyAxO1xyXG4gICAgICAgICAgICByZXR1cm4gYCR7cHJlZml4fSR7bnVtYmVyLnRvU3RyaW5nKCkucGFkU3RhcnQobWF0Y2hbMl0ubGVuZ3RoLCAnMCcpfWA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBjdXJyZW50SWQ7XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IGhhbmRsZVByb2plY3RDbGljayA9ICgpID0+IHtcclxuICAgICAgICBuYXZpZ2F0ZVRvKCdwcm9qZWN0JywgJ21haW4nKTtcclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgaGFuZGxlT3BlcmF0b3JzQ2xpY2sgPSAoKSA9PiB7XHJcbiAgICAgICAgbmF2aWdhdGVUbygnb3BlcmF0b3JzJywgJ21haW4nKTtcclxuICAgIH07XHJcblxyXG4gICAgLy8g5riy5p+T5rWL6K+V6YWN572u5Yy65Z+f55qE5YaF5a65XHJcbiAgICBjb25zdCByZW5kZXJUZXN0Q29uZmlnQ29udGVudCA9ICgpID0+IHtcclxuICAgICAgICBpZiAoIWN1cnJlbnRDb25maWcpIHJldHVybiBudWxsO1xyXG5cclxuICAgICAgICBzd2l0Y2ggKGN1cnJlbnRDb25maWcubW9kdWxlVHlwZSkge1xyXG4gICAgICAgICAgICBjYXNlICc4MDAwJzpcclxuICAgICAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGZsZXgtY29sIGp1c3RpZnktY2VudGVyIGgtZnVsbCBzcGFjZS15LTAuMiB0ZXh0LXNtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1ibGFjayB0ZXh0LXNtXCI+e2N1cnJlbnRDb25maWcucGFyYW1zLmxpbWl0VmFsdWV9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1ibGFjayB0ZXh0LXNtXCI+e2N1cnJlbnRDb25maWcucGFyYW1zLmNhYmxlVHlwZX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LWJsYWNrIHRleHQtc21cIj57Y3VycmVudENvbmZpZy5wYXJhbXMud2lyZU9yZGVyfTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgY2FzZSAnY2ZwJzpcclxuICAgICAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGZsZXgtY29sIGp1c3RpZnktY2VudGVyIGgtZnVsbCBzcGFjZS15LTAuMiB0ZXh0LXNtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1ibGFjayB0ZXh0LXNtXCI+5pm66IO96L+c56uvPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1ibGFjayB0ZXh0LXNtXCI+e2N1cnJlbnRDb25maWcucGFyYW1zLmxpbWl0VmFsdWV9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1ibGFjayB0ZXh0LXNtXCI+e2N1cnJlbnRDb25maWcucGFyYW1zLmNhYmxlVHlwZX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LWJsYWNrIHRleHQtc21cIj57Y3VycmVudENvbmZpZy5wYXJhbXMucmVmSnVtcGVyfSDot7Pnur/lj4Lnhac8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIGNhc2UgJ29mcCc6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBmbGV4LWNvbCBqdXN0aWZ5LWNlbnRlciBoLWZ1bGwgc3BhY2UteS0wLjIgdGV4dC1zbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtYmxhY2sgdGV4dC1zbVwiPuiHquWKqE9URFI8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LWJsYWNrIHRleHQtc21cIj57Y3VycmVudENvbmZpZy5wYXJhbXMubGltaXRWYWx1ZX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LWJsYWNrIHRleHQtc21cIj57Y3VycmVudENvbmZpZy5wYXJhbXMuY2FibGVUeXBlfTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcblxyXG5cclxuXHJcbiAgICByZXR1cm4gKFxyXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy1mdWxsIGgtZnVsbCBmbGV4IGZsZXgtY29sIG92ZXJmbG93LWhpZGRlblwiPlxyXG4gICAgICAgICAgICA8U3RhdHVzQmFyIC8+XHJcbiAgICAgICAgICAgIDxUaXRsZUJhciB0aXRsZT1cIkhPTUVcIiAvPlxyXG5cclxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJoLVs0OTBweF0gYmctWyMzMDMwNDBdIHAtMiBmbGV4IGZsZXgtY29sXCI+XHJcbiAgICAgICAgICAgICAgICB7Lyog5LiK5pa55L+h5oGv5Yy65Z+fICovfVxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJoLVszMTVweF0gYmctWyNjNWMyYzVdIHJvdW5kZWQtc20gcC0zIHNoYWRvdy1sZyBmbGV4IGZsZXgtY29sIGdhcC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgey8qIOmhueebrumFjee9rumDqOWIhiAqL31cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXgganVzdGlmeS1iZXR3ZWVuIGl0ZW1zLXN0YXJ0IGN1cnNvci1wb2ludGVyXCIgb25DbGljaz17aGFuZGxlUHJvamVjdENsaWNrfT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1sZyBmb250LWJvbGQgbWItMlwiPumhueebru+8mntjdXJyZW50UHJvamVjdD8ubmFtZX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGdhcC0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtZ3JlZW4tNTAwXCI+e3Bhc3NDb3VudHx8IDB9PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctMyBoLTMgcmVsYXRpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJbWFnZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz17Z2V0QXNzZXRVcmwoJy9wYXNzLnBuZycpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdD1cIumAmui/h1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZXM9e1wiYXV0b1wifVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJvYmplY3QtY29udGFpblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGdhcC0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtcmVkLTUwMFwiPntmYWlsQ291bnR8fCAwfTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LTMgaC0zIHJlbGF0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SW1hZ2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9e2dldEFzc2V0VXJsKCcvZmFpbC5wbmcnKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ9XCLlpLHotKVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVzPXtcImF1dG9cIn1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwib2JqZWN0LWNvbnRhaW5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy02IGgtNiByZWxhdGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPEltYWdlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjPXtnZXRBc3NldFVybCgnL2Fycm93LnBuZycpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdD1cIueureWktFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZXM9e1wiYXV0b1wifVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJvYmplY3QtY29udGFpblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgey8qIOa1i+ivlemFjee9ruWMuuWfnyAqL31cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJoLVsxMDBweF0gYmctZ3JhZGllbnQtdG8tYiBmcm9tLVsjZTZlM2U2XSB0by1bIzdiNzk3Yl0gcm91bmRlZC1zbSBwLTQgc2hhZG93LWxnIGZsZXgganVzdGlmeS1iZXR3ZWVuIGl0ZW1zLWNlbnRlciBjdXJzb3ItcG9pbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IG5hdmlnYXRlVG8oJ3Rlc3RDb25maWcnLCAnbWFpbicpfVxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3JlbmRlclRlc3RDb25maWdDb250ZW50KCl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtZ3JheS01MDAgdGV4dC1zbVwiPntjdXJyZW50Q29uZmlnPy5tb2R1bGVsYWJsZX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctMyBoLTMgcmVsYXRpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SW1hZ2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjPXtnZXRBc3NldFVybCgnL2Fycm93LnBuZycpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ9XCLnrq3lpLRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplcz17XCJhdXRvXCJ9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwib2JqZWN0LWNvbnRhaW5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHsvKiDnur/nvIZJROWMuuWfnyAqL31cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJoLVs2MHB4XSBiZy1ncmFkaWVudC10by1iIGZyb20tWyNlNmUzZTZdIHRvLVsjN2I3OTdiXSByb3VuZGVkLXNtIHAtNCBzaGFkb3ctbGcgZmxleCBqdXN0aWZ5LWJldHdlZW4gaXRlbXMtY2VudGVyIGN1cnNvci1wb2ludGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gbmF2aWdhdGVUbygnY2FibGVJZCcsIGN1cnJlbnRDb25maWc/Lm1vZHVsZVR5cGUgPT09ICdjZnAnID8gJ2NmcCcgOiAnbWFpbicpfVxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGZsZXgtY29sIGp1c3RpZnktY2VudGVyIGgtZnVsbCBzcGFjZS15LTAuMiB0ZXh0LXNtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y3VycmVudENvbmZpZz8ubW9kdWxlVHlwZSA9PT0gJ2NmcCcgPyAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LWJsYWNrXCI+5LiL5LiA5Liq6L6T5YWlSUQ6IHtjdXJyZW50Q2FibGVJZD8ubmFtZX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LWJsYWNrXCI+5LiL5LiA5Liq6L6T5Ye6SUQ6IHtjdXJyZW50Q2FibGVJZDI/Lm5hbWV9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIDogKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1ibGFja1wiPuS4i+S4gOS4qklEOiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD57Y3VycmVudENhYmxlSWQ/Lm5hbWV9PC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy0zIGgtMyByZWxhdGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPEltYWdlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjPXtnZXRBc3NldFVybCgnL2Fycm93LnBuZycpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdD1cIueureWktFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZXM9e1wiYXV0b1wifVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJvYmplY3QtY29udGFpblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgey8qIOaTjeS9nOWRmOWMuuWfnyAqL31cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJoLVs0MHB4XSBiZy1ncmFkaWVudC10by1iIGZyb20tWyNlNmUzZTZdIHRvLVsjN2I3OTdiXSByb3VuZGVkLXNtIHAtNCBzaGFkb3ctbGcgZmxleCBqdXN0aWZ5LWJldHdlZW4gaXRlbXMtY2VudGVyIGN1cnNvci1wb2ludGVyXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2hhbmRsZU9wZXJhdG9yc0NsaWNrfVxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LWJsYWNrIHRleHQtc21cIj7mk43kvZzlkZg6IHtjdXJyZW50T3BlcmF0b3I/Lm5hbWV9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy0zIGgtMyByZWxhdGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPEltYWdlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjPXtnZXRBc3NldFVybCgnL2Fycm93LnBuZycpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdD1cIueureWktFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZXM9e1wiYXV0b1wifVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJvYmplY3QtY29udGFpblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIHsvKiDlupXpg6jmjInpkq7ljLrln58gKi99XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXgtMSBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBnYXAtMTZcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggZmxleC1jb2wgaXRlbXMtY2VudGVyIGdhcC0yXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gbmF2aWdhdGVUbygndG9vbHMnLCAnbWFpbicpfT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LTIwIGgtMjAgcm91bmRlZC1zbSBzaGFkb3ctbGcgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgY3Vyc29yLXBvaW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy1mdWxsIGgtZnVsbCByZWxhdGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJbWFnZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9e2dldEFzc2V0VXJsKCcvdG9vbHMucG5nJyl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdD1cIuW3peWFt1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVzPXtcImF1dG9cIn1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJvYmplY3QtY29udGFpblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC13aGl0ZSB0ZXh0LXNtXCI+5bel5YW3PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImZsZXggZmxleC1jb2wgaXRlbXMtY2VudGVyIGdhcC0yIGN1cnNvci1wb2ludGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gbmF2aWdhdGVUbygncmVzdWx0JywgJ21haW4nKX1cclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy0yMCBoLTIwIHJvdW5kZWQtc20gc2hhZG93LWxnIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctZnVsbCBoLWZ1bGwgcmVsYXRpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SW1hZ2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjPXtnZXRBc3NldFVybCgnL3Jlc3VsdC5wbmcnKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0PVwi57uT5p6cXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZXM9e1wiYXV0b1wifVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cIm9iamVjdC1jb250YWluXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LXdoaXRlIHRleHQtc21cIj7nu5Pmnpw8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICB7Lyog5bqV6YOo5qCPICovfVxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImgtWzYwcHhdIGJnLVsjMzAzMDMwXSBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gcHgtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7Lyog6K6+572u5Y+C54Wn5oyJ6ZKuICovfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXgtMVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXgtMSBmbGV4IGp1c3RpZnktY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7KGN1cnJlbnRDb25maWc/Lm1vZHVsZVR5cGUgPT09ICdjZnAnIHx8IGN1cnJlbnRDb25maWc/Lm1vZHVsZVR5cGUgPT09ICdvZnAnKSAmJiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidy1bMTIwcHhdIGgtWzQwcHhdIGJnLWdyYWRpZW50LXRvLWIgZnJvbS1bIzY1NjU2NV0gdG8tWyMzMTM0MzFdIHJvdW5kZWQtc20gZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgdGV4dC13aGl0ZSBmb250LWJvbGQgc2hhZG93LWxnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g5qC55o2u5qih5Z2X57G75Z6L6K6+572u5LiN5ZCM55qE5Y+C54Wn6YC76L6RXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY3VycmVudENvbmZpZz8ubW9kdWxlVHlwZSA9PT0gJ2NmcCcpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYXZpZ2F0ZVRvKCd0b29scycsICdyZWYtY2ZwJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGN1cnJlbnRDb25maWc/Lm1vZHVsZVR5cGUgPT09ICdvZnAnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmF2aWdhdGVUbygndG9vbHMnLCAncmVmLW9mcCcpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2N1cnJlbnRDb25maWc/Lm1vZHVsZVR5cGUgPT09ICdvZnAnID8gJ+iuvue9ruWfuuWHhicgOiAn6K6+572u5Y+C54WnJ31cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7Lyog5rWL6K+V5oyJ6ZKuICovfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXgtMSBmbGV4IGp1c3RpZnktZW5kXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ3LVsxMDBweF0gaC1bNDBweF0gYmctZ3JhZGllbnQtdG8tYiBmcm9tLVsjZmZkNzczXSB0by1bI2U3YWEyOV0gcm91bmRlZC1zbSBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciB0ZXh0LWJsYWNrIGZvbnQtYm9sZCBzaGFkb3ctbGdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjdXJyZW50Q29uZmlnPy5tb2R1bGVUeXBlID09PSAnODAwMCcgfHwgY3VycmVudENvbmZpZz8ubW9kdWxlVHlwZSA9PT0gJ2NmcCcpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghQ29ubmVjdFN0YXR1cykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRvYXN0TWVzc2FnZSgn5pyq6L+e5o6l77yM6K+35qOA5p+l6L+e5o6l54q25oCBJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY3VycmVudENvbmZpZz8ubW9kdWxlVHlwZSA9PT0gJzgwMDAnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobWFpblVuaXRNb2R1bGVzPy5bMF0/LmlkICE9PSAnODAwMCcpIHsgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VG9hc3RNZXNzYWdlKCflvZPliY3mqKHlnZfkuI7miYDpgInmoIflh4bkuI3lhbzlrrknKTsgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOyBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxpbWl0VmFsdWUgPSBjdXJyZW50Q29uZmlnLnBhcmFtcy5saW1pdFZhbHVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsaW1pdFZhbHVlLmluY2x1ZGVzKCdDaGFubmVsJykgfHwgbGltaXRWYWx1ZS5pbmNsdWRlcygnQ2gnKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbWFpblVuaXRBZGFwdGVyLmlkLmluY2x1ZGVzKCdjaGFubmVsJykgfHwgIXJlbW90ZVVuaXRBZGFwdGVyLmlkLmluY2x1ZGVzKCdjaGFubmVsJykpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VG9hc3RNZXNzYWdlKCflvZPliY3pgILphY3lmajkuI7miYDpgInmoIflh4bkuI3lhbzlrrknKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobGltaXRWYWx1ZS5pbmNsdWRlcygnUGVybScpIHx8IGxpbWl0VmFsdWUuaW5jbHVkZXMoJ1BMJykpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW1haW5Vbml0QWRhcHRlci5pZC5pbmNsdWRlcygncGVybWFuZW50JykgfHwgIXJlbW90ZVVuaXRBZGFwdGVyLmlkLmluY2x1ZGVzKCdwZXJtYW5lbnQnKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUb2FzdE1lc3NhZ2UoJ+W9k+WJjemAgumFjeWZqOS4juaJgOmAieagh+WHhuS4jeWFvOWuuScpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChsaW1pdFZhbHVlLmluY2x1ZGVzKCdNUFRMJykpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBoYXNQZXJtYW5lbnQgPSBtYWluVW5pdEFkYXB0ZXIuaWQuaW5jbHVkZXMoJ3Blcm1hbmVudCcpIHx8IHJlbW90ZVVuaXRBZGFwdGVyLmlkLmluY2x1ZGVzKCdwZXJtYW5lbnQnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBoYXNQYXRjaGNvZGUgPSBtYWluVW5pdEFkYXB0ZXIuaWQuaW5jbHVkZXMoJ3BhdGNoY29kZScpIHx8IHJlbW90ZVVuaXRBZGFwdGVyLmlkLmluY2x1ZGVzKCdwYXRjaGNvZGUnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIShoYXNQZXJtYW5lbnQgJiYgaGFzUGF0Y2hjb2RlKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUb2FzdE1lc3NhZ2UoJ+W9k+WJjemAgumFjeWZqOS4juaJgOmAieagh+WHhuS4jeWFvOWuuScpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjdXJyZW50Q29uZmlnPy5tb2R1bGVUeXBlID09PSAnY2ZwJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1haW5Vbml0TW9kdWxlcz8uWzBdPy5pZCAhPT0gJ2NmcCcpIHsgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VG9hc3RNZXNzYWdlKCflvZPliY3mqKHlnZfkuI7miYDpgInmoIflh4bkuI3lhbzlrrknKTsgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOyBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyDmo4Dmn6XlhYnnuqTnsbvlnotcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNhYmxlVHlwZSA9IGN1cnJlbnRDb25maWcucGFyYW1zLmNhYmxlVHlwZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGlzTXVsdGlNb2RlID0gY2FibGVUeXBlLmluY2x1ZGVzKCdPTScpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyDmoLnmja7ljZUv5aSa5qih6I635Y+W5a+55bqU55qE6Lev5b6EXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbWFpbk91dFBhdGgsIG1haW5JblBhdGgsIHJlbW90ZU91dFBhdGgsIHJlbW90ZUluUGF0aDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzTXVsdGlNb2RlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g5aSa5qih5YWJ57qk6Lev5b6EXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFpbk91dFBhdGggPSBjb25uZWN0aW9uU3RhdHVzPy5tYWluUGF0aHM/LlsnbWFpbi1jZnAtbW0tb3V0J10/LnBhdGggfHwgW107XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFpbkluUGF0aCA9IGNvbm5lY3Rpb25TdGF0dXM/Lm1haW5QYXRocz8uWydtYWluLWNmcC1pbiddPy5wYXRoIHx8IFtdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbW90ZU91dFBhdGggPSBjb25uZWN0aW9uU3RhdHVzPy5yZW1vdGVQYXRocz8uWydyZW1vdGUtY2ZwLW1tLW91dCddPy5wYXRoIHx8IFtdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbW90ZUluUGF0aCA9IGNvbm5lY3Rpb25TdGF0dXM/LnJlbW90ZVBhdGhzPy5bJ3JlbW90ZS1jZnAtaW4nXT8ucGF0aCB8fCBbXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyDmo4Dmn6XmmK/lkKbmiYDmnInnq6/lj6Ppg73lt7Lov57mjqVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW1haW5PdXRQYXRoLmxlbmd0aCB8fCAhbWFpbkluUGF0aC5sZW5ndGggfHwgIXJlbW90ZU91dFBhdGgubGVuZ3RoIHx8ICFyZW1vdGVJblBhdGgubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRvdGFsVG9hc3RNZXNzYWdlKCfor7fnoa7kv53miYDmnInlhYnnuqTnq6/lj6Ppg73lt7LmraPnoa7ov57mjqUnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g5qOA5p+l5piv5ZCm5a2Y5Zyo5Y2V5qih6Lez57q/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaGFzSW52YWxpZENvbm5lY3RvciA9IFsuLi5tYWluT3V0UGF0aCwgLi4ubWFpbkluUGF0aCwgLi4ucmVtb3RlT3V0UGF0aCwgLi4ucmVtb3RlSW5QYXRoXS5zb21lKGl0ZW0gPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaXRlbS5pbmNsdWRlcygnc20nKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaGFzSW52YWxpZENvbm5lY3Rvcikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUb3RhbFRvYXN0TWVzc2FnZSgn5aSa5qih5YWJ57qk6ZO+6Lev5Lit5a2Y5Zyo5Y2V5qih6Lez57q/77yM6K+35qOA5p+l6L+e5o6lJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIOWNleaooeWFiee6pOi3r+W+hFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1haW5PdXRQYXRoID0gY29ubmVjdGlvblN0YXR1cz8ubWFpblBhdGhzPy5bJ21haW4tY2ZwLXNtLW91dCddPy5wYXRoIHx8IFtdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1haW5JblBhdGggPSBjb25uZWN0aW9uU3RhdHVzPy5tYWluUGF0aHM/LlsnbWFpbi1jZnAtaW4nXT8ucGF0aCB8fCBbXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW1vdGVPdXRQYXRoID0gY29ubmVjdGlvblN0YXR1cz8ucmVtb3RlUGF0aHM/LlsncmVtb3RlLWNmcC1zbS1vdXQnXT8ucGF0aCB8fCBbXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW1vdGVJblBhdGggPSBjb25uZWN0aW9uU3RhdHVzPy5yZW1vdGVQYXRocz8uWydyZW1vdGUtY2ZwLWluJ10/LnBhdGggfHwgW107XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g5qOA5p+l5piv5ZCm5omA5pyJ56uv5Y+j6YO95bey6L+e5o6lXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFtYWluT3V0UGF0aC5sZW5ndGggfHwgIW1haW5JblBhdGgubGVuZ3RoIHx8ICFyZW1vdGVPdXRQYXRoLmxlbmd0aCB8fCAhcmVtb3RlSW5QYXRoLmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUb3RhbFRvYXN0TWVzc2FnZSgn6K+356Gu5L+d5omA5pyJ5YWJ57qk56uv5Y+j6YO95bey5q2j56Gu6L+e5o6lJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIOajgOafpeaYr+WQpuWtmOWcqOWkmuaooei3s+e6v1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGhhc0ludmFsaWRDb25uZWN0b3IgPSBbLi4ubWFpbk91dFBhdGgsIC4uLm1haW5JblBhdGgsIC4uLnJlbW90ZU91dFBhdGgsIC4uLnJlbW90ZUluUGF0aF0uc29tZShpdGVtID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW0uaW5jbHVkZXMoJ21tJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGhhc0ludmFsaWRDb25uZWN0b3IpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VG90YWxUb2FzdE1lc3NhZ2UoJ+WNleaooeWFiee6pOmTvui3r+S4reWtmOWcqOWkmuaooei3s+e6v++8jOivt+ajgOafpei/nuaOpScpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY3VycmVudENvbmZpZz8ubW9kdWxlVHlwZSA9PT0gJ29mcCcpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtYWluVW5pdE1vZHVsZXM/LlswXT8uaWQgIT09ICdvZnAnKSB7IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRvYXN0TWVzc2FnZSgn5b2T5YmN5qih5Z2X5LiO5omA6YCJ5qCH5YeG5LiN5YW85a65Jyk7IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g5qOA5p+l5YWJ57qk57G75Z6L5piv5ZCm5Yy56YWNXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjYWJsZVR5cGUgPSBjdXJyZW50Q29uZmlnLnBhcmFtcy5jYWJsZVR5cGU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpc011bHRpTW9kZSA9IGNhYmxlVHlwZS5pbmNsdWRlcygnT00nKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBvcnRUeXBlID0gT2JqZWN0LnZhbHVlcyhjb25uZWN0aW9uU3RhdHVzPy5tYWluUGF0aHMgfHwge30pWzBdPy5zdGFydDtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNNdWx0aU1vZGUgJiYgcG9ydFR5cGUgIT09ICdtYWluLW9mcC1tbS1vdXQnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VG90YWxUb2FzdE1lc3NhZ2UoJ+W9k+WJjeWFiee6pOexu+Wei+W/hemhu+S9v+eUqOWkmuaooeerr+WPo+a1i+ivlScpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWlzTXVsdGlNb2RlICYmIHBvcnRUeXBlICE9PSAnbWFpbi1vZnAtc20tb3V0Jykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRvdGFsVG9hc3RNZXNzYWdlKCflvZPliY3lhYnnuqTnsbvlnovlv4Xpobvkvb/nlKjljZXmqKHnq6/lj6PmtYvor5UnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g5qOA5p+l5YWJ57qk6L+e5o6l5Zmo57G75Z6L5piv5ZCm5Yy56YWNXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXRoID0gT2JqZWN0LnZhbHVlcyhjb25uZWN0aW9uU3RhdHVzPy5tYWluUGF0aHMgfHwge30pWzBdPy5wYXRoIHx8IFtdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaGFzSW52YWxpZENvbm5lY3RvciA9IHBhdGguc29tZShpdGVtID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNNdWx0aU1vZGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW0uaW5jbHVkZXMoJ3NtLScpIHx8IGl0ZW0uaW5jbHVkZXMoJ3NtYy0nKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaXRlbS5pbmNsdWRlcygnbW0tJykgfHwgaXRlbS5pbmNsdWRlcygnbW1jLScpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoYXNJbnZhbGlkQ29ubmVjdG9yKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VG90YWxUb2FzdE1lc3NhZ2UoaXNNdWx0aU1vZGUgPyAn5pyq5qOA5rWL5Yiw5aSa5qih5YWJ57qk77yM6K+35qOA5p+l5YWJ57qk6L+e5o6lJyA6ICfmnKrmo4DmtYvliLDljZXmqKHlhYnnuqTvvIzor7fmo4Dmn6XlhYnnuqTov57mjqUnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghY29ubmVjdGlvblN0YXR1cz8uT0ZQU3RhdHVzKSB7IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRvdGFsVG9hc3RNZXNzYWdlKCfor7fmjqXlhaXlrp7pmYXooqvmtYvpk77ot6/vvIzov5vooYzmtYvor5UnKTsgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOyBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyDmo4Dmn6XlhYnnuqTov57mjqXmlbDph49cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGZpYmVyQ29ubmVjdG9yQ291bnQgPSBwYXRoLmZpbHRlcihpdGVtID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaXRlbS5pbmNsdWRlcygnc20tJykgfHwgaXRlbS5pbmNsdWRlcygnbW0tJykgfHwgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0uaW5jbHVkZXMoJ3NtYy0nKSB8fCBpdGVtLmluY2x1ZGVzKCdtbWMtJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KS5sZW5ndGg7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZpYmVyQ29ubmVjdG9yQ291bnQgPiAzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VG90YWxUb2FzdE1lc3NhZ2UoJ+ivpeWcuuaZr+S7heaUr+aMgeS9v+eUqOS4gOauteWFiee6pOi/nuaOpea1i+ivleS7quS4jumTvui3rycpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmF2aWdhdGVUbygndGVzdGluZycsJ25vc2F2ZScpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg5rWL6K+VXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICk7XHJcbn0iXSwibmFtZXMiOlsiUmVhY3QiLCJ1c2VFZmZlY3QiLCJJbWFnZSIsIlN0YXR1c0JhciIsIlRpdGxlQmFyIiwidXNlRGlzcGxheVN0b3JlIiwidXNlRGV2aWNlU3RvcmUiLCJnZXRBc3NldFVybCIsIkhvbWVQYWdlIiwiZ2V0Q3VycmVudFByb2plY3QiLCJnZXRDdXJyZW50VGVzdENvbmZpZyIsImdldEN1cnJlbnRPcGVyYXRvciIsImdldEN1cnJlbnRDYWJsZUlkIiwiZ2V0Q3VycmVudENhYmxlSWQyIiwibmF2aWdhdGVUbyIsImhhc1BsYXllZFNvdW5kIiwic2V0VG9hc3RNZXNzYWdlIiwicmVmIiwiZ2V0U3RhdGUiLCJzZXRTdGF0ZSIsImNvbm5lY3Rpb25TdGF0dXMiLCJtYWluVW5pdEFkYXB0ZXIiLCJyZW1vdGVVbml0QWRhcHRlciIsIm1haW5Vbml0TW9kdWxlcyIsInNldFRvdGFsVG9hc3RNZXNzYWdlIiwiY3VycmVudFByb2plY3QiLCJjdXJyZW50Q29uZmlnIiwiY3VycmVudE9wZXJhdG9yIiwiY3VycmVudENhYmxlSWQiLCJjdXJyZW50Q2FibGVJZDIiLCJwYXNzQ291bnQiLCJ0ZXN0UmVzdWx0cyIsImZpbHRlciIsInJlc3VsdCIsImNvcHBlclN0YXR1cyIsIkNvcHBlclJlc3VsdFN0YXR1cyIsImNmcFN0YXR1cyIsIkNGUFJlc3VsdFN0YXR1cyIsIm9mcFN0YXR1cyIsIm9mcFJlc3VsdFN0YXR1cyIsImxlbmd0aCIsImZhaWxDb3VudCIsIkNvbm5lY3RTdGF0dXMiLCJDRlBDb25uZWN0U3RhdHVzIiwiZ2V0TmV4dENhYmxlSWQiLCJjdXJyZW50SWQiLCJtYXRjaCIsInByZWZpeCIsIm51bWJlciIsInBhcnNlSW50IiwidG9TdHJpbmciLCJwYWRTdGFydCIsImhhbmRsZVByb2plY3RDbGljayIsImhhbmRsZU9wZXJhdG9yc0NsaWNrIiwicmVuZGVyVGVzdENvbmZpZ0NvbnRlbnQiLCJtb2R1bGVUeXBlIiwiZGl2IiwiY2xhc3NOYW1lIiwicGFyYW1zIiwibGltaXRWYWx1ZSIsImNhYmxlVHlwZSIsIndpcmVPcmRlciIsInJlZkp1bXBlciIsInRpdGxlIiwib25DbGljayIsIm5hbWUiLCJzcGFuIiwic3JjIiwiYWx0Iiwic2l6ZXMiLCJmaWxsIiwibW9kdWxlbGFibGUiLCJwIiwiYnV0dG9uIiwiaWQiLCJpbmNsdWRlcyIsImhhc1Blcm1hbmVudCIsImhhc1BhdGNoY29kZSIsImlzTXVsdGlNb2RlIiwibWFpbk91dFBhdGgiLCJtYWluSW5QYXRoIiwicmVtb3RlT3V0UGF0aCIsInJlbW90ZUluUGF0aCIsIm1haW5QYXRocyIsInBhdGgiLCJyZW1vdGVQYXRocyIsImhhc0ludmFsaWRDb25uZWN0b3IiLCJzb21lIiwiaXRlbSIsInBvcnRUeXBlIiwiT2JqZWN0IiwidmFsdWVzIiwic3RhcnQiLCJPRlBTdGF0dXMiLCJmaWJlckNvbm5lY3RvckNvdW50Il0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(pages-dir-node)/./src/components/dsxpage/fluke/HomePage.js\n"); /***/ }), /***/ "(pages-dir-node)/./src/components/dsxpage/fluke/MenuList.js": /*!**************************************************!*\ !*** ./src/components/dsxpage/fluke/MenuList.js ***! \**************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; eval("__webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ MenuList)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"react/jsx-dev-runtime\");\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 */ \"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _components_lib_StatusBar__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/components/lib/StatusBar */ \"(pages-dir-node)/./src/components/lib/StatusBar.js\");\n/* harmony import */ var _components_lib_TitleBar__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/components/lib/TitleBar */ \"(pages-dir-node)/./src/components/lib/TitleBar.js\");\n/* harmony import */ var _components_lib_SubTitleBar__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/components/lib/SubTitleBar */ \"(pages-dir-node)/./src/components/lib/SubTitleBar.js\");\n/* harmony import */ var _store_displayStore__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/store/displayStore */ \"(pages-dir-node)/./src/store/displayStore.js\");\nvar __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_components_lib_StatusBar__WEBPACK_IMPORTED_MODULE_2__, _components_lib_TitleBar__WEBPACK_IMPORTED_MODULE_3__, _components_lib_SubTitleBar__WEBPACK_IMPORTED_MODULE_4__, _store_displayStore__WEBPACK_IMPORTED_MODULE_5__]);\n([_components_lib_StatusBar__WEBPACK_IMPORTED_MODULE_2__, _components_lib_TitleBar__WEBPACK_IMPORTED_MODULE_3__, _components_lib_SubTitleBar__WEBPACK_IMPORTED_MODULE_4__, _store_displayStore__WEBPACK_IMPORTED_MODULE_5__] = __webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__);\n\n\n\n\n\n\n// 菜单数据定义\nconst menuData = {\n MODULE: {\n title: '模块',\n items: [\n {\n value: '8000',\n label: 'DSX-8000'\n },\n {\n value: 'cfp',\n label: 'CertiFiber Pro-Quad'\n },\n {\n value: 'ofp',\n label: 'OptiFiber Pro-Quad'\n }\n ]\n },\n CABLE_TYPE: {\n title: '电缆类型',\n subTitle: '电缆类型',\n items: [\n {\n value: 'custom',\n label: '定制',\n disabled: true\n },\n {\n value: 'general',\n label: '通用',\n children: [\n // { value: 'Cat8 S/FTP', label: 'Cat8 S/FTP' },\n // { value: 'Cat7A S/FTP', label: 'Cat7A S/FTP' },\n // { value: 'Cat7 S/FTP', label: 'Cat7 S/FTP' },\n // { value: 'Cat6A S/FTP', label: 'Cat6A S/FTP' },\n {\n value: 'Cat6A U/UTP',\n label: 'Cat6A U/UTP'\n },\n {\n value: 'Cat6A F/UTP',\n label: 'Cat6A F/UTP'\n },\n {\n value: 'Cat6 U/UTP',\n label: 'Cat6 U/UTP'\n },\n {\n value: 'Cat6 F/UTP',\n label: 'Cat6 F/UTP'\n },\n // { value: 'Cat6 U/FTP', label: 'Cat6 U/FTP' },\n {\n value: 'Cat5e U/UTP',\n label: 'Cat5e U/UTP'\n },\n {\n value: 'Cat5e F/UTP',\n label: 'Cat5e F/UTP'\n }\n ]\n },\n {\n value: 'coaxial',\n label: '通用同轴电缆',\n disabled: true\n },\n {\n value: 'manufacturer',\n label: '制造商',\n disabled: true\n }\n ]\n },\n LIMIT_VALUE: {\n title: '测试极限值',\n subTitle: '极限值组',\n items: [\n {\n value: 'TIA',\n label: 'TIA',\n children: {\n // Cat8: {\n // label: 'Cat8',\n // children: [\n // { value: 'TIA Cat 8 Perm.Link', label: 'TIA Cat 8 Perm.Link' },\n // { value: 'TIA Cat 8 Perm.Link (+ALL)', label: 'TIA Cat 8 Perm.Link (+ALL)' },\n // { value: 'TIA Cat 8 Perm.Link (+PoE)', label: 'TIA Cat 8 Perm.Link (+PoE)' },\n // { value: 'TIA Cat 8 Channel', label: 'TIA Cat 8 Channel' },\n // { value: 'TIA Cat 8 Channel (+ALL)', label: 'TIA Cat 8 Channel (+ALL)' },\n // { value: 'TIA Cat 8 Channel (+PoE)', label: 'TIA Cat 8 Channel (+PoE)' }\n // ]\n // },\n Cat6A: {\n label: 'Cat6A',\n children: [\n {\n value: 'TIA Cat 6A Perm.Link',\n label: 'TIA Cat 6A Perm.Link'\n },\n {\n value: 'TIA Cat 6A Perm.Link (+ALL)',\n label: 'TIA Cat 6A Perm.Link (+ALL)'\n },\n {\n value: 'TIA Cat 6A Perm.Link (+PoE)',\n label: 'TIA Cat 6A Perm.Link (+PoE)'\n },\n {\n value: 'TIA Cat 6A Channel',\n label: 'TIA Cat 6A Channel'\n },\n {\n value: 'TIA Cat 6A Channel (+ALL)',\n label: 'TIA Cat 6A Channel (+ALL)'\n },\n {\n value: 'TIA Cat 6A Channel (+PoE)',\n label: 'TIA Cat 6A Channel (+PoE)'\n },\n {\n value: 'TIA Cat 6A MPTL',\n label: 'TIA Cat 6A MPTL'\n },\n {\n value: 'TIA Cat 6A MPTL (+PoE)',\n label: 'TIA Cat 6A MPTL (+PoE)'\n },\n // { value: 'TIA 1005 Cat 6A Perm.Link', label: 'TIA 1005 Cat 6A Perm.Link' },\n // { value: 'TIA 1005 Cat 6A Channel', label: 'TIA 1005 Cat 6A Channel' },\n {\n value: 'TIA 1005 Cat 6A Channel E1 (+ALL)',\n label: 'TIA 1005 Cat 6A Channel E1 (+ALL)'\n },\n // { value: 'TIA 1005 Cat 6A Channel E1 (+PoE)', label: 'TIA 1005 Cat 6A Channel E1 (+PoE)' },\n {\n value: 'TIA 1005 Cat 6A Channel E2 (+ALL)',\n label: 'TIA 1005 Cat 6A Channel E2 (+ALL)'\n },\n // { value: 'TIA 1005 Cat 6A Channel E2 (+PoE)', label: 'TIA 1005 Cat 6A Channel E2 (+PoE)' },\n {\n value: 'TIA 1005 Cat 6A Channel E3 (+ALL)',\n label: 'TIA 1005 Cat 6A Channel E3 (+ALL)'\n }\n ]\n },\n Cat6: {\n label: 'Cat6',\n children: [\n {\n value: 'TIA Cat 6 Perm.Link',\n label: 'TIA Cat 6 Perm.Link'\n },\n {\n value: 'TIA Cat 6 Perm.Link (+ALL)',\n label: 'TIA Cat 6 Perm.Link (+ALL)'\n },\n {\n value: 'TIA Cat 6 Perm.Link (+PoE)',\n label: 'TIA Cat 6 Perm.Link (+PoE)'\n },\n {\n value: 'TIA Cat 6 Channel',\n label: 'TIA Cat 6 Channel'\n },\n {\n value: 'TIA Cat 6 Channel (+ALL)',\n label: 'TIA Cat 6 Channel (+ALL)'\n },\n {\n value: 'TIA Cat 6 Channel (+PoE)',\n label: 'TIA Cat 6 Channel (+PoE)'\n },\n {\n value: 'TIA Cat 6 MPTL',\n label: 'TIA Cat 6 MPTL'\n },\n {\n value: 'TIA Cat 6 MPTL (+PoE)',\n label: 'TIA Cat 6 MPTL (+PoE)'\n },\n // { value: 'TIA 1005 Cat 6 Perm.Link', label: 'TIA 1005 Cat 6 Perm.Link' },\n // { value: 'TIA 1005 Cat 6 Channel', label: 'TIA 1005 Cat 6 Channel' },\n // { value: 'TIA 1005 Cat 6 Channel (+ALL)', label: 'TIA 1005 Cat 6 Channel (+ALL)' },\n // { value: 'TIA 1005 Cat 6 Channel (+PoE)', label: 'TIA 1005 Cat 6 Channel (+PoE)' },\n {\n value: 'TIA 1005 Cat 6 Channel E1 (+ALL)',\n label: 'TIA 1005 Cat 6 Channel E1 (+ALL)'\n },\n // { value: 'TIA 1005 Cat 6 Channel E1 (+PoE)', label: 'TIA 1005 Cat 6 Channel E1 (+PoE)' },\n {\n value: 'TIA 1005 Cat 6 Channel E2 (+ALL)',\n label: 'TIA 1005 Cat 6 Channel E2 (+ALL)'\n },\n // { value: 'TIA 1005 Cat 6 Channel E2 (+PoE)', label: 'TIA 1005 Cat 6 Channel E2 (+PoE)' },\n {\n value: 'TIA 1005 Cat 6 Channel E3 (+ALL)',\n label: 'TIA 1005 Cat 6 Channel E3 (+ALL)'\n }\n ]\n },\n Cat5e: {\n label: 'Cat5e',\n children: [\n {\n value: 'TIA Cat 5e Perm.Link',\n label: 'TIA Cat 5e Perm.Link'\n },\n {\n value: 'TIA Cat 5e Perm.Link (+ALL)',\n label: 'TIA Cat 5e Perm.Link (+ALL)'\n },\n {\n value: 'TIA Cat 5e Perm.Link (+PoE)',\n label: 'TIA Cat 5e Perm.Link (+PoE)'\n },\n {\n value: 'TIA Cat 5e Channel',\n label: 'TIA Cat 5e Channel'\n },\n {\n value: 'TIA Cat 5e Channel (+ALL)',\n label: 'TIA Cat 5e Channel (+ALL)'\n },\n {\n value: 'TIA Cat 5e Channel (+PoE)',\n label: 'TIA Cat 5e Channel (+PoE)'\n },\n {\n value: 'TIA Cat 5e MPTL',\n label: 'TIA Cat 5e MPTL'\n },\n {\n value: 'TIA Cat 5e MPTL (+PoE)',\n label: 'TIA Cat 5e MPTL (+PoE)'\n },\n // { value: 'TIA 1005 Cat 5e Perm.Link', label: 'TIA 1005 Cat 5e Perm.Link' },\n // { value: 'TIA 1005 Cat 5e Channel', label: 'TIA 1005 Cat 5e Channel' },\n // { value: 'TIA 1005 Cat 5e Channel (+ALL)', label: 'TIA 1005 Cat 5e Channel (+ALL)' },\n // { value: 'TIA 1005 Cat 5e Channel (+PoE)', label: 'TIA 1005 Cat 5e Channel (+PoE)' },\n {\n value: 'TIA 1005 Cat 5e Channel E1 (+ALL)',\n label: 'TIA 1005 Cat 5e Channel E1 (+ALL)'\n },\n // { value: 'TIA 1005 Cat 5e Channel E1 (+PoE)', label: 'TIA 1005 Cat 5e Channel E1 (+PoE)' },\n {\n value: 'TIA 1005 Cat 5e Channel E2 (+ALL)',\n label: 'TIA 1005 Cat 5e Channel E2 (+ALL)'\n },\n // { value: 'TIA 1005 Cat 5e Channel E2 (+PoE)', label: 'TIA 1005 Cat 5e Channel E2 (+PoE)' },\n {\n value: 'TIA 1005 Cat 5e Channel E3 (+ALL)',\n label: 'TIA 1005 Cat 5e Channel E3 (+ALL)'\n }\n ]\n }\n }\n },\n {\n value: 'ISO',\n label: 'ISO',\n children: {\n // 'Class Ⅱ': {\n // label: 'Class Ⅱ',\n // children: [\n // { value: 'ISO11801 PL Class Ⅱ', label: 'ISO11801 PL Class Ⅱ' },\n // { value: 'ISO11801 PL Class Ⅱ (+ALL)', label: 'ISO11801 PL Class Ⅱ (+ALL)' },\n // { value: 'ISO11801 PL Class Ⅱ (+PoE)', label: 'ISO11801 PL Class Ⅱ (+PoE)' },\n // { value: 'ISO11801 Channel Class Ⅱ', label: 'ISO11801 Channel Class Ⅱ' },\n // { value: 'ISO11801 Channel Class Ⅱ (+ALL)', label: 'ISO11801 Channel Class Ⅱ (+ALL)' },\n // { value: 'ISO11801 Channel Class Ⅱ (+PoE)', label: 'ISO11801 Channel Class Ⅱ (+PoE)' }\n // ],\n // disabled: true \n // },\n // 'Class Ⅰ': {\n // label: 'Class Ⅰ',\n // children: [\n // { value: 'ISO11801 PL Class Ⅰ', label: 'ISO11801 PL Class Ⅰ' },\n // { value: 'ISO11801 PL Class Ⅰ (+ALL)', label: 'ISO11801 PL Class Ⅰ (+ALL)' },\n // { value: 'ISO11801 PL Class Ⅰ (+PoE)', label: 'ISO11801 PL Class Ⅰ (+PoE)' },\n // { value: 'ISO11801 Channel Class Ⅰ', label: 'ISO11801 Channel Class Ⅰ' },\n // { value: 'ISO11801 Channel Class Ⅰ (+ALL)', label: 'ISO11801 Channel Class Ⅰ (+ALL)' },\n // { value: 'ISO11801 Channel Class Ⅰ (+PoE)', label: 'ISO11801 Channel Class Ⅰ (+PoE)' }\n // ],\n // disabled: true \n // },\n // 'Class Fa': {\n // label: 'Class Fa',\n // children: [\n // { value: 'ISO11801 PL2 Class Fa', label: 'ISO11801 PL2 Class Fa' },\n // { value: 'ISO11801 PL2 Class Fa (+ALL)', label: 'ISO11801 PL2 Class Fa (+ALL)' },\n // { value: 'ISO11801 PL2 Class Fa (+PoE)', label: 'ISO11801 PL2 Class Fa (+PoE)' },\n // { value: 'ISO11801 PL3 Class Fa', label: 'ISO11801 PL3 Class Fa' },\n // { value: 'ISO11801 PL3 Class Fa (+ALL)', label: 'ISO11801 PL3 Class Fa (+ALL)' },\n // { value: 'ISO11801 PL3 Class Fa (+PoE)', label: 'ISO11801 PL3 Class Fa (+PoE)' },\n // { value: 'ISO11801 Channel Class Fa', label: 'ISO11801 Channel Class Fa' },\n // { value: 'ISO11801 Channel Class Fa (+ALL)', label: 'ISO11801 Channel Class Fa (+ALL)' },\n // { value: 'ISO11801 Channel Class Fa (+PoE)', label: 'ISO11801 Channel Class Fa (+PoE)' }\n // ],\n // disabled: true \n // },\n // 'Class F': {\n // label: 'Class F',\n // children: [\n // { value: 'ISO11801 PL Class F', label: 'ISO11801 PL Class F' },\n // { value: 'ISO11801 PL Class F (+ALL)', label: 'ISO11801 PL Class F (+ALL)' },\n // { value: 'ISO11801 PL Class F (+PoE)', label: 'ISO11801 PL Class F (+PoE)' },\n // { value: 'ISO11801 Channel Class F', label: 'ISO11801 Channel Class F' },\n // { value: 'ISO11801 Channel Class F (+ALL)', label: 'ISO11801 Channel Class F (+ALL)' },\n // { value: 'ISO11801 Channel Class F (+PoE)', label: 'ISO11801 Channel Class F (+PoE)' }\n // ],\n // disabled: true \n // },\n 'Class Ea': {\n label: 'Class Ea',\n children: [\n {\n value: 'ISO11801 PL2 Class Ea',\n label: 'ISO11801 PL2 Class Ea'\n },\n {\n value: 'ISO11801 PL2 Class Ea (+ALL)',\n label: 'ISO11801 PL2 Class Ea (+ALL)'\n },\n {\n value: 'ISO11801 PL2 Class Ea (+PoE)',\n label: 'ISO11801 PL2 Class Ea (+PoE)'\n },\n {\n value: 'ISO11801 PL3 Class Ea',\n label: 'ISO11801 PL3 Class Ea'\n },\n {\n value: 'ISO11801 PL3 Class Ea (+ALL)',\n label: 'ISO11801 PL3 Class Ea (+ALL)'\n },\n {\n value: 'ISO11801 PL3 Class Ea (+PoE)',\n label: 'ISO11801 PL3 Class Ea (+PoE)'\n },\n {\n value: 'ISO11801 Channel Class Ea',\n label: 'ISO11801 Channel Class Ea'\n },\n {\n value: 'ISO11801 Channel Class Ea (+ALL)',\n label: 'ISO11801 Channel Class Ea (+ALL)'\n },\n {\n value: 'ISO11801 Channel Class Ea (+PoE)',\n label: 'ISO11801 Channel Class Ea (+PoE)'\n },\n {\n value: 'ISO MPTL Class Ea',\n label: 'ISO MPTL Class Ea'\n },\n {\n value: 'ISO MPTL Class Ea (+PoE)',\n label: 'ISO MPTL Class Ea (+PoE)'\n }\n ]\n },\n 'Class E': {\n label: 'Class E',\n children: [\n {\n value: 'ISO11801 PL Class E',\n label: 'ISO11801 PL Class E'\n },\n {\n value: 'ISO11801 PL Class E (+ALL)',\n label: 'ISO11801 PL Class E (+ALL)'\n },\n {\n value: 'ISO11801 PL Class E (+PoE)',\n label: 'ISO11801 PL Class E (+PoE)'\n },\n {\n value: 'ISO11801 Channel Class E',\n label: 'ISO11801 Channel Class E'\n },\n {\n value: 'ISO11801 Channel Class E (+ALL)',\n label: 'ISO11801 Channel Class E (+ALL)'\n },\n {\n value: 'ISO11801 Channel Class E (+PoE)',\n label: 'ISO11801 Channel Class E (+PoE)'\n },\n {\n value: 'ISO MPTL Class E',\n label: 'ISO MPTL Class E'\n },\n {\n value: 'ISO MPTL Class E (+PoE)',\n label: 'ISO MPTL Class E (+PoE)'\n }\n ]\n },\n 'Class D': {\n label: 'Class D',\n children: [\n {\n value: 'ISO11801 PL Class D',\n label: 'ISO11801 PL Class D'\n },\n {\n value: 'ISO11801 PL Class D (+ALL)',\n label: 'ISO11801 PL Class D (+ALL)'\n },\n {\n value: 'ISO11801 PL Class D (+PoE)',\n label: 'ISO11801 PL Class D (+PoE)'\n },\n {\n value: 'ISO11801 Channel Class D',\n label: 'ISO11801 Channel Class D'\n },\n {\n value: 'ISO11801 Channel Class D (+ALL)',\n label: 'ISO11801 Channel Class D (+ALL)'\n },\n {\n value: 'ISO11801 Channel Class D (+PoE)',\n label: 'ISO11801 Channel Class D (+PoE)'\n },\n {\n value: 'ISO MPTL Class D',\n label: 'ISO MPTL Class D'\n },\n {\n value: 'ISO MPTL Class D (+PoE)',\n label: 'ISO MPTL Class D (+PoE)'\n }\n ]\n }\n }\n },\n {\n value: '区域',\n label: '区域',\n children: {\n '中国': {\n label: '中国',\n children: [\n // { value: 'GBT 50312-2016 Cat 7A PL no CP', label: 'GB/T 50312-2016 Cat 7A PL no CP' },\n // { value: 'GBT 50312-2016 Cat 7A PL no CP (+ALL)', label: 'GB/T 50312-2016 Cat 7A PL no CP (+ALL)' },\n // { value: 'GBT 50312-2016 Cat 7A PL no CP (+PoE)', label: 'GB/T 50312-2016 Cat 7A PL no CP (+PoE)' },\n // { value: 'GBT 50312-2016 Cat 7A PL with CP', label: 'GB/T 50312-2016 Cat 7A PL with CP' },\n // { value: 'GBT 50312-2016 Cat 7A PL with CP (+ALL)', label: 'GB/T 50312-2016 Cat 7A PL with CP (+ALL)' },\n // { value: 'GBT 50312-2016 Cat 7A PL with CP (+PoE)', label: 'GB/T 50312-2016 Cat 7A PL with CP (+PoE)' },\n // { value: 'GBT 50312-2016 Cat 7A Ch', label: 'GB/T 50312-2016 Cat 7A Ch' },\n // { value: 'GBT 50312-2016 Cat 7A Ch (+ALL)', label: 'GB/T 50312-2016 Cat 7A Ch (+ALL)' },\n // { value: 'GBT 50312-2016 Cat 7A Ch (+PoE)', label: 'GB/T 50312-2016 Cat 7A Ch (+PoE)' },\n // { value: 'GBT 50312-2016 Cat 7 PL', label: 'GB/T 50312-2016 Cat 7 PL' },\n // { value: 'GBT 50312-2016 Cat 7 PL (+ALL)', label: 'GB/T 50312-2016 Cat 7 PL (+ALL)' },\n // { value: 'GBT 50312-2016 Cat 7 PL (+PoE)', label: 'GB/T 50312-2016 Cat 7 PL (+PoE)' },\n // { value: 'GBT 50312-2016 Cat 7 Ch', label: 'GB/T 50312-2016 Cat 7 Ch' },\n // { value: 'GBT 50312-2016 Cat 7 Ch (+ALL)', label: 'GB/T 50312-2016 Cat 7 Ch (+ALL)' },\n // { value: 'GBT 50312-2016 Cat 7 Ch (+PoE)', label: 'GB/T 50312-2016 Cat 7 Ch (+PoE)' },\n {\n value: 'GBT 50312-2016 Cat 6A PL no CP',\n label: 'GB/T 50312-2016 Cat 6A PL no CP'\n },\n {\n value: 'GBT 50312-2016 Cat 6A PL no CP (+ALL)',\n label: 'GB/T 50312-2016 Cat 6A PL no CP (+ALL)'\n },\n {\n value: 'GBT 50312-2016 Cat 6A PL no CP (+PoE)',\n label: 'GB/T 50312-2016 Cat 6A PL no CP (+PoE)'\n },\n {\n value: 'GBT 50312-2016 Cat 6A PL with CP',\n label: 'GB/T 50312-2016 Cat 6A PL with CP'\n },\n {\n value: 'GBT 50312-2016 Cat 6A PL with CP (+ALL)',\n label: 'GB/T 50312-2016 Cat 6A PL with CP (+ALL)'\n },\n {\n value: 'GBT 50312-2016 Cat 6A PL with CP (+PoE)',\n label: 'GB/T 50312-2016 Cat 6A PL with CP (+PoE)'\n },\n {\n value: 'GBT 50312-2016 Cat 6A Ch',\n label: 'GB/T 50312-2016 Cat 6A Ch'\n },\n {\n value: 'GBT 50312-2016 Cat 6A Ch (+ALL)',\n label: 'GB/T 50312-2016 Cat 6A Ch (+ALL)'\n },\n {\n value: 'GBT 50312-2016 Cat 6A Ch (+PoE)',\n label: 'GB/T 50312-2016 Cat 6A Ch (+PoE)'\n },\n {\n value: 'GBT 50312-2016 Cat 6 PL',\n label: 'GB/T 50312-2016 Cat 6 PL'\n },\n {\n value: 'GBT 50312-2016 Cat 6 PL (+ALL)',\n label: 'GB/T 50312-2016 Cat 6 PL (+ALL)'\n },\n {\n value: 'GBT 50312-2016 Cat 6 PL (+PoE)',\n label: 'GB/T 50312-2016 Cat 6 PL (+PoE)'\n },\n {\n value: 'GBT 50312-2016 Cat 6 Ch',\n label: 'GB/T 50312-2016 Cat 6 Ch'\n },\n {\n value: 'GBT 50312-2016 Cat 6 Ch (+ALL)',\n label: 'GB/T 50312-2016 Cat 6 Ch (+ALL)'\n },\n {\n value: 'GBT 50312-2016 Cat 6 Ch (+PoE)',\n label: 'GB/T 50312-2016 Cat 6 Ch (+PoE)'\n },\n {\n value: 'GBT 50312-2016 Cat 5e PL',\n label: 'GB/T 50312-2016 Cat 5e PL'\n },\n {\n value: 'GBT 50312-2016 Cat 5e PL (+ALL)',\n label: 'GB/T 50312-2016 Cat 5e PL (+ALL)'\n },\n {\n value: 'GBT 50312-2016 Cat 5e PL (+PoE)',\n label: 'GB/T 50312-2016 Cat 5e PL (+PoE)'\n },\n {\n value: 'GBT 50312-2016 Cat 5e Ch',\n label: 'GB/T 50312-2016 Cat 5e Ch'\n },\n {\n value: 'GBT 50312-2016 Cat 5e Ch (+ALL)',\n label: 'GB/T 50312-2016 Cat 5e Ch (+ALL)'\n },\n {\n value: 'GBT 50312-2016 Cat 5e Ch (+PoE)',\n label: 'GB/T 50312-2016 Cat 5e Ch (+PoE)'\n }\n ]\n }\n }\n },\n {\n value: '跳线',\n label: '跳线',\n disabled: true,\n children: {\n 'Cat6A Patch Cords': {\n label: 'Cat6A Patch Cords',\n disabled: true,\n children: []\n },\n 'Cat6 Patch Cords': {\n label: 'Cat6 Patch Cords',\n disabled: true,\n children: []\n },\n 'Cat5e Patch Cords': {\n label: 'Cat5e Patch Cords',\n disabled: true,\n children: []\n },\n 'M12 Patch Cords': {\n label: 'M12 Patch Cords',\n disabled: true,\n children: []\n }\n }\n },\n {\n value: '应用',\n label: '应用',\n disabled: false,\n children: [\n {\n value: 'Profinet',\n label: 'Profinet'\n }\n ]\n }\n ]\n },\n WIRE_ORDER: {\n title: '插座配置',\n items: [\n {\n value: 'T568A',\n label: 'T568A',\n disabled: true\n },\n {\n value: 'T568B',\n label: 'T568B'\n },\n {\n value: 'Ethernet Two-Pair',\n label: 'Ethernet Two-Pair'\n },\n {\n value: 'M12-D Two-Pair',\n label: 'M12-D Two-Pair'\n }\n ]\n },\n FIBER_TYPE: {\n title: '光纤类型',\n subTitle: '电缆组',\n items: [\n {\n value: '定制',\n label: '定制',\n disabled: true,\n children: {}\n },\n {\n value: 'general',\n label: '通用',\n children: [\n {\n value: 'OM1 Mulitmode 62.5',\n label: 'OM1 Mulitmode 62.5'\n },\n {\n value: 'OM2 Mulitmode 50',\n label: 'OM2 Mulitmode 50'\n },\n {\n value: 'OM3 Mulitmode 50',\n label: 'OM3 Mulitmode 50'\n },\n {\n value: 'OM4 Mulitmode 50',\n label: 'OM4 Mulitmode 50'\n },\n {\n value: 'OM5 Mulitmode 50',\n label: 'OM5 Mulitmode 50'\n },\n {\n value: 'OS1 Singlemode',\n label: 'OS1 Singlemode'\n },\n {\n value: 'OS2 Singlemode',\n label: 'OS2 Singlemode'\n }\n ]\n },\n {\n value: '制造商',\n label: '制造商',\n disabled: true,\n children: {}\n }\n ]\n },\n CFP_LIMIT: {\n title: '测试极限值',\n subTitle: '极限值组',\n items: [\n {\n value: 'TIA',\n label: 'TIA',\n children: [\n {\n value: 'TIA-568.3-E Multimode (STD)',\n label: 'TIA-568.3-E Multimode (STD)'\n },\n {\n value: 'TIA-568.3-E Multimode (REF)',\n label: 'TIA-568.3-E Multimode (REF)'\n },\n {\n value: 'TIA-568.3-E Singlemode ISP (STD)',\n label: 'TIA-568.3-E Singlemode ISP (STD)'\n },\n {\n value: 'TIA-568.3-E Singlemode OSP (STD)',\n label: 'TIA-568.3-E Singlemode OSP (STD)'\n },\n {\n value: 'TIA-568.3-E Singlemode ISP (REF)',\n label: 'TIA-568.3-E Singlemode ISP (REF)'\n },\n {\n value: 'TIA-568.3-E Singlemode OSP (REF)',\n label: 'TIA-568.3-E Singlemode OSP (REF)'\n }\n ]\n },\n {\n value: 'China',\n label: '中国',\n children: [\n {\n value: 'GB/T 50312-2016 Fiber Link',\n label: 'GB/T 50312-2016 Fiber Link'\n },\n {\n value: 'GB/T 50312-2016 OF-300 Ch',\n label: 'GB/T 50312-2016 OF-300 Ch'\n },\n {\n value: 'GB/T 50312-2016 OF-500 Ch',\n label: 'GB/T 50312-2016 OF-500 Ch'\n },\n {\n value: 'GB/T 50312-2016 OF-2000 Ch',\n label: 'GB/T 50312-2016 OF-2000 Ch'\n }\n ]\n },\n {\n value: 'ISO',\n label: 'ISO',\n children: [\n {\n value: 'ISO/IEC 11801-2002 Fibre Link',\n label: 'ISO/IEC 11801-2002 Fibre Link'\n },\n {\n value: 'ISO/IEC 11801-2002 OF-300 CH',\n label: 'ISO/IEC 11801-2002 OF-300 CH'\n },\n {\n value: 'ISO/IEC 11801-2002 OF-500 CH',\n label: 'ISO/IEC 11801-2002 OF-500 CH'\n },\n {\n value: 'ISO/IEC 11801-2002 OF-2000 CH',\n label: 'ISO/IEC 11801-2002 OF-2000 CH'\n },\n {\n value: 'ISO/IEC 14763-3:2024 (Draft)',\n label: 'ISO/IEC 14763-3:2024 (Draft)'\n },\n {\n value: 'ISO/IEC 14763-3:2014',\n label: 'ISO/IEC 14763-3:2014'\n },\n {\n value: 'ISO/IEC 14763-3',\n label: 'ISO/IEC 14763-3'\n }\n ]\n }\n ]\n },\n OFP_LIMIT: {\n title: 'OFP极限值',\n items: [\n {\n value: 'TIA',\n label: 'TIA',\n children: [\n {\n value: 'ANSI/TIA-568.3-E',\n label: 'ANSI/TIA-568.3-E'\n },\n {\n value: 'ANSI/TIA-568.3-E RL = 20 dB',\n label: 'ANSI/TIA-568.3-E RL = 20 dB'\n },\n {\n value: 'ANSI/TIA-568.3-E RL = 35 dB',\n label: 'ANSI/TIA-568.3-E RL = 35 dB'\n },\n {\n value: 'ANSI/TIA-568.3-E RL = 55 dB',\n label: 'ANSI/TIA-568.3-E RL = 55 dB'\n }\n ]\n },\n {\n value: 'China',\n label: '中国',\n children: [\n {\n value: 'GB/T 50312-2016 Fiber Link',\n label: 'GB/T 50312-2016 Fiber Link'\n },\n {\n value: 'GB/T 50312-2016 OF-300 Ch',\n label: 'GB/T 50312-2016 OF-300 Ch'\n },\n {\n value: 'GB/T 50312-2016 OF-500 Ch',\n label: 'GB/T 50312-2016 OF-500 Ch'\n },\n {\n value: 'GB/T 50312-2016 OF-2000 Ch',\n label: 'GB/T 50312-2016 OF-2000 Ch'\n }\n ]\n },\n {\n value: 'ISO',\n label: 'ISO',\n children: [\n {\n value: 'ISO/IEC 11801-2002 Fibre Link',\n label: 'ISO/IEC 11801-2002 Fibre Link'\n },\n {\n value: 'ISO/IEC 11801-2002 OF-300 CH',\n label: 'ISO/IEC 11801-2002 OF-300 CH'\n },\n {\n value: 'ISO/IEC 11801-2002 OF-500 CH',\n label: 'ISO/IEC 11801-2002 OF-500 CH'\n },\n {\n value: 'ISO/IEC 11801-2002 OF-2000 CH',\n label: 'ISO/IEC 11801-2002 OF-2000 CH'\n },\n {\n value: 'ISO/IEC 14763-3:2024 (Draft)',\n label: 'ISO/IEC 14763-3:2024 (Draft)'\n },\n {\n value: 'ISO/IEC 14763-3:2024 RL = 20 (Draft)',\n label: 'ISO/IEC 14763-3:2024 RL = 20 (Draft)'\n },\n {\n value: 'ISO/IEC 14763-3:2024 RL = 35 (Draft)',\n label: 'ISO/IEC 14763-3:2024 RL = 35 (Draft)'\n },\n {\n value: 'ISO/IEC 14763-3:2024 RL = 60 (Draft)',\n label: 'ISO/IEC 14763-3:2024 RL = 60 (Draft)'\n },\n {\n value: 'ISO/IEC 14763-3:2014',\n label: 'ISO/IEC 14763-3:2014'\n },\n {\n value: 'ISO/IEC 14763-3',\n label: 'ISO/IEC 14763-3'\n }\n ]\n }\n ]\n }\n};\nfunction MenuList() {\n const { navigation, getCurrentProject, updateProject, navigateTo, goBack } = (0,_store_displayStore__WEBPACK_IMPORTED_MODULE_5__[\"default\"])();\n const currentProject = getCurrentProject();\n const { menuType, selectedConfigId } = navigation.current.params;\n const [selectedPath, setSelectedPath] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)([]);\n const [currentMenu, setCurrentMenu] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(menuData[menuType]);\n // 获取当前选中的配置\n const currentConfig = currentProject.testConfigs.find((config)=>config.id === selectedConfigId);\n // 处理菜单选项选择\n const handleMenuSelect = (item)=>{\n if (item.disabled) return;\n if (item.children) {\n // 如果有子菜单,更新路径和当前菜单\n setSelectedPath([\n ...selectedPath,\n item\n ]);\n setCurrentMenu(item.children);\n return;\n }\n // 如果是最终选项,更新配置并返回\n let updatedConfig = {\n ...currentConfig\n };\n switch(menuType){\n case 'CABLE_TYPE':\n updatedConfig.params.cableType = item.value;\n break;\n case 'LIMIT_VALUE':\n updatedConfig.params.limitValue = item.value;\n break;\n case 'WIRE_ORDER':\n updatedConfig.params.wireOrder = item.value;\n break;\n case 'FIBER_TYPE':\n updatedConfig.params.cableType = item.value;\n if (updatedConfig.moduleType === 'cfp') {\n if (item.value.includes('OM')) {\n updatedConfig.params.limitValue = 'TIA-568.3-E Multimode (STD)';\n } else {\n updatedConfig.params.limitValue = 'TIA-568.3-E Singlemode ISP (STD)';\n }\n }\n break;\n case 'CFP_LIMIT':\n updatedConfig.params.limitValue = item.value;\n break;\n case 'OFP_LIMIT':\n updatedConfig.params.limitValue = item.value;\n break;\n case 'MODULE':\n // 如果模块类型发生变化,完全替换配置对象\n if (currentConfig.moduleType !== item.value) {\n switch(item.value){\n case '8000':\n updatedConfig = {\n id: currentConfig.id,\n moduleType: '8000',\n modulelable: 'DSX-8000',\n params: {\n limitValue: 'TIA Cat 6 Channel',\n cableType: 'Cat6 U/UTP',\n wireOrder: 'T568B'\n }\n };\n break;\n case 'cfp':\n updatedConfig = {\n id: currentConfig.id,\n moduleType: 'cfp',\n modulelable: 'CertiFiber Pro-Quad',\n params: {\n limitValue: 'TIA-568.3-E Multimode (STD)',\n cableType: 'OM3 Multimode 50',\n refJumper: '1',\n spliceCount: '0',\n connectorCount: '2'\n }\n };\n break;\n case 'ofp':\n updatedConfig = {\n id: currentConfig.id,\n moduleType: 'ofp',\n modulelable: 'OptiFiber Pro-Quad',\n params: {\n limitValue: 'General Fiber RL = 35 dB',\n cableType: 'OM3 Multimode 50'\n }\n };\n break;\n }\n } else {\n updatedConfig.moduleType = item.value;\n updatedConfig.modulelable = item.label;\n }\n break;\n }\n // 更新项目数据\n const updatedConfigs = currentProject.testConfigs.map((config)=>{\n if (config.id === selectedConfigId) {\n return updatedConfig;\n }\n return config;\n });\n const projectIndex = _store_displayStore__WEBPACK_IMPORTED_MODULE_5__[\"default\"].getState().selectedIndexes.projectIndex;\n updateProject(projectIndex, {\n testConfigs: updatedConfigs\n });\n // 返回上一页\n goBack();\n };\n // 处理返回上一级\n const handleBack = ()=>{\n if (selectedPath.length > 0) {\n const newPath = selectedPath.slice(0, -1);\n setSelectedPath(newPath);\n if (newPath.length === 0) {\n setCurrentMenu(menuData[menuType]);\n } else {\n let current = menuData[menuType];\n for (const item of newPath){\n current = current.items.find((i)=>i.value === item.value).children;\n }\n setCurrentMenu(current);\n }\n } else {\n goBack();\n }\n };\n // 渲染菜单选项\n const renderMenuOptions = ()=>{\n if (!currentMenu) return null;\n // 如果是子菜单,直接渲染子菜单项\n if (Array.isArray(currentMenu)) {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full h-[490px]\",\n children: currentMenu.map((item)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `h-[60px] w-full bg-gradient-to-b from-[#e6e3e6] to-[#7b797b] p-4 shadow-lg flex items-center ${item.disabled ? 'opacity-50 cursor-not-allowed' : 'cursor-pointer'} ${currentConfig.params.cableType === item.value ? 'bg-blue-500' : ''}`,\n onClick: ()=>handleMenuSelect(item),\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black text-sm\",\n children: item.label\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/MenuList.js\",\n lineNumber: 606,\n columnNumber: 29\n }, this)\n }, item.value, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/MenuList.js\",\n lineNumber: 597,\n columnNumber: 25\n }, this))\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/MenuList.js\",\n lineNumber: 595,\n columnNumber: 17\n }, this);\n }\n // 如果是对象形式的子菜单(如 LIMIT_VALUE 的二级菜单)\n if (typeof currentMenu === 'object' && !currentMenu.items) {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full h-[490px]\",\n children: Object.entries(currentMenu).map(([key, item])=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `h-[60px] w-full bg-gradient-to-b from-[#e6e3e6] to-[#7b797b] p-4 shadow-lg flex items-center cursor-pointer ${currentConfig.params.cableType === item.value ? 'bg-blue-500' : ''}`,\n onClick: ()=>handleMenuSelect(item),\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black text-sm\",\n children: item.label\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/MenuList.js\",\n lineNumber: 625,\n columnNumber: 29\n }, this)\n }, key, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/MenuList.js\",\n lineNumber: 618,\n columnNumber: 25\n }, this))\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/MenuList.js\",\n lineNumber: 616,\n columnNumber: 17\n }, this);\n }\n // 如果是主菜单,渲染主菜单项\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full h-[490px]\",\n children: currentMenu.items.map((item)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `h-[60px] w-full bg-gradient-to-b from-[#e6e3e6] to-[#7b797b] p-4 shadow-lg flex items-center ${item.disabled ? 'opacity-50 cursor-not-allowed' : 'cursor-pointer'} ${currentConfig.params.cableType === item.value ? 'bg-blue-500' : ''}`,\n onClick: ()=>handleMenuSelect(item),\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black text-sm\",\n children: item.label\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/MenuList.js\",\n lineNumber: 645,\n columnNumber: 25\n }, this)\n }, item.value, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/MenuList.js\",\n lineNumber: 636,\n columnNumber: 21\n }, this))\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/MenuList.js\",\n lineNumber: 634,\n columnNumber: 13\n }, this);\n };\n // 获取当前菜单标题(返回 null 表示不显示)\n const getCurrentTitle = ()=>{\n if (selectedPath.length === 0) {\n const subTitle = menuData[menuType]?.subTitle;\n return subTitle ? subTitle : null; // 如果 subTitle 为空则返回 null\n }\n return selectedPath[selectedPath.length - 1].label;\n };\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full h-full flex flex-col overflow-hidden\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_StatusBar__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {}, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/MenuList.js\",\n lineNumber: 663,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_TitleBar__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n title: menuData[menuType].title,\n backTo: selectedPath.length > 0 ? 'menulist' : navigation.previous?.name,\n view: selectedPath.length > 0 ? 'setup' : navigation.previous?.view,\n onBack: handleBack\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/MenuList.js\",\n lineNumber: 664,\n columnNumber: 9\n }, this),\n getCurrentTitle() !== null && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_SubTitleBar__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n title: getCurrentTitle()\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/MenuList.js\",\n lineNumber: 672,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 bg-[#303040]\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-full overflow-y-auto [&::-webkit-scrollbar]:hidden\",\n children: renderMenuOptions()\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/MenuList.js\",\n lineNumber: 675,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/MenuList.js\",\n lineNumber: 674,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/MenuList.js\",\n lineNumber: 662,\n columnNumber: 9\n }, this);\n}\n\n__webpack_async_result__();\n} catch(e) { __webpack_async_result__(e); } });//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHBhZ2VzLWRpci1ub2RlKS8uL3NyYy9jb21wb25lbnRzL2RzeHBhZ2UvZmx1a2UvTWVudUxpc3QuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFrRDtBQUNDO0FBQ0Y7QUFDTTtBQUNKO0FBRW5ELFNBQVM7QUFDVCxNQUFNTyxXQUFXO0lBQ1RDLFFBQVE7UUFDSkMsT0FBTztRQUNQQyxPQUFPO1lBQ0g7Z0JBQUVDLE9BQU87Z0JBQVFDLE9BQU87WUFBVztZQUNuQztnQkFBRUQsT0FBTztnQkFBT0MsT0FBTztZQUFzQjtZQUM3QztnQkFBRUQsT0FBTztnQkFBT0MsT0FBTztZQUFxQjtTQUMvQztJQUNMO0lBQ0FDLFlBQVk7UUFDUkosT0FBTztRQUNQSyxVQUFVO1FBQ1ZKLE9BQU87WUFDSDtnQkFBRUMsT0FBTztnQkFBVUMsT0FBTztnQkFBTUcsVUFBVTtZQUFLO1lBQy9DO2dCQUNJSixPQUFPO2dCQUNQQyxPQUFPO2dCQUNQSSxVQUFVO29CQUNOLGdEQUFnRDtvQkFDaEQsa0RBQWtEO29CQUNsRCxnREFBZ0Q7b0JBQ2hELGtEQUFrRDtvQkFDbEQ7d0JBQUVMLE9BQU87d0JBQWVDLE9BQU87b0JBQWM7b0JBQzdDO3dCQUFFRCxPQUFPO3dCQUFlQyxPQUFPO29CQUFjO29CQUM3Qzt3QkFBRUQsT0FBTzt3QkFBY0MsT0FBTztvQkFBYTtvQkFDM0M7d0JBQUVELE9BQU87d0JBQWNDLE9BQU87b0JBQWE7b0JBQzNDLGdEQUFnRDtvQkFDaEQ7d0JBQUVELE9BQU87d0JBQWVDLE9BQU87b0JBQWM7b0JBQzdDO3dCQUFFRCxPQUFPO3dCQUFlQyxPQUFPO29CQUFjO2lCQUdoRDtZQUNMO1lBQ0E7Z0JBQUVELE9BQU87Z0JBQVdDLE9BQU87Z0JBQVVHLFVBQVU7WUFBSztZQUNwRDtnQkFBRUosT0FBTztnQkFBZ0JDLE9BQU87Z0JBQU9HLFVBQVU7WUFBSztTQUN6RDtJQUNMO0lBQ0FFLGFBQWE7UUFDVFIsT0FBTztRQUNQSyxVQUFVO1FBQ1ZKLE9BQU87WUFD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REFBQzBEO1FBQUlDLFdBQVU7OzBCQUNmLDhEQUFDcEUsaUVBQVNBOzs7OzswQkFDViw4REFBQ0MsZ0VBQVFBO2dCQUNMSyxPQUFPRixRQUFRLENBQUN5QixTQUFTLENBQUN2QixLQUFLO2dCQUMvQm9FLFFBQVF6QyxhQUFhMkIsTUFBTSxHQUFHLElBQUksYUFBYXJDLFdBQVdvRCxRQUFRLEVBQUVDO2dCQUNwRUMsTUFBTTVDLGFBQWEyQixNQUFNLEdBQUcsSUFBSSxVQUFVckMsV0FBV29ELFFBQVEsRUFBRUU7Z0JBQy9EQyxRQUFRbkI7Ozs7OztZQUdYYyxzQkFBc0Isc0JBQ25CLDhEQUFDdkUsbUVBQVdBO2dCQUFDSSxPQUFPbUU7Ozs7OzswQkFFeEIsOERBQUNOO2dCQUFJQyxXQUFVOzBCQUNYLDRFQUFDRDtvQkFBSUMsV0FBVTs4QkFDZEo7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBS2IiLCJzb3VyY2VzIjpbIi9vcHQvZGV2L2VzdC1kc3gvc3JjL2NvbXBvbmVudHMvZHN4cGFnZS9mbHVrZS9NZW51TGlzdC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUsdXNlRWZmZWN0IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IFN0YXR1c0JhciBmcm9tICdAL2NvbXBvbmVudHMvbGliL1N0YXR1c0Jhcic7XG5pbXBvcnQgVGl0bGVCYXIgZnJvbSAnQC9jb21wb25lbnRzL2xpYi9UaXRsZUJhcic7XG5pbXBvcnQgU3ViVGl0bGVCYXIgZnJvbSAnQC9jb21wb25lbnRzL2xpYi9TdWJUaXRsZUJhcic7XG5pbXBvcnQgdXNlRGlzcGxheVN0b3JlIGZyb20gJ0Avc3RvcmUvZGlzcGxheVN0b3JlJztcblxuLy8g6I+c5Y2V5pWw5o2u5a6a5LmJXG5jb25zdCBtZW51RGF0YSA9IHtcbiAgICAgICAgTU9EVUxFOiB7XG4gICAgICAgICAgICB0aXRsZTogJ+aooeWdlycsXG4gICAgICAgICAgICBpdGVtczogW1xuICAgICAgICAgICAgICAgIHsgdmFsdWU6ICc4MDAwJywgbGFiZWw6ICdEU1gtODAwMCcgfSxcbiAgICAgICAgICAgICAgICB7IHZhbHVlOiAnY2ZwJywgbGFiZWw6ICdDZXJ0aUZpYmVyIFByby1RdWFkJyB9LFxuICAgICAgICAgICAgICAgIHsgdmFsdWU6ICdvZnAnLCBsYWJlbDogJ09wdGlGaWJlciBQcm8tUXVhZCcgfVxuICAgICAgICAgICAgXVxuICAgICAgICB9LFxuICAgICAgICBDQUJMRV9UWVBFOiB7XG4gICAgICAgICAgICB0aXRsZTogJ+eUtee8huexu+WeiycsXG4gICAgICAgICAgICBzdWJUaXRsZTogJ+eUtee8huexu+WeiycsXG4gICAgICAgICAgICBpdGVtczogW1xuICAgICAgICAgICAgICAgIHsgdmFsdWU6ICdjdXN0b20nLCBsYWJlbDogJ+WumuWIticsIGRpc2FibGVkOiB0cnVlIH0sXG4gICAgICAgICAgICAgICAgeyBcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICdnZW5lcmFsJywgXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiAn6YCa55SoJyxcbiAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW46IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHsgdmFsdWU6ICdDYXQ4IFMvRlRQJywgbGFiZWw6ICdDYXQ4IFMvRlRQJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgLy8geyB2YWx1ZTogJ0NhdDdBIFMvRlRQJywgbGFiZWw6ICdDYXQ3QSBTL0ZUUCcgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHsgdmFsdWU6ICdDYXQ3IFMvRlRQJywgbGFiZWw6ICdDYXQ3IFMvRlRQJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgLy8geyB2YWx1ZTogJ0NhdDZBIFMvRlRQJywgbGFiZWw6ICdDYXQ2QSBTL0ZUUCcgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6ICdDYXQ2QSBVL1VUUCcsIGxhYmVsOiAnQ2F0NkEgVS9VVFAnIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiAnQ2F0NkEgRi9VVFAnLCBsYWJlbDogJ0NhdDZBIEYvVVRQJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogJ0NhdDYgVS9VVFAnLCBsYWJlbDogJ0NhdDYgVS9VVFAnIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiAnQ2F0NiBGL1VUUCcsIGxhYmVsOiAnQ2F0NiBGL1VUUCcgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHsgdmFsdWU6ICdDYXQ2IFUvRlRQJywgbGFiZWw6ICdDYXQ2IFUvRlRQJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogJ0NhdDVlIFUvVVRQJywgbGFiZWw6ICdDYXQ1ZSBVL1VUUCcgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6ICdDYXQ1ZSBGL1VUUCcsIGxhYmVsOiAnQ2F0NWUgRi9VVFAnIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyB7IHZhbHVlOiAnQ2F0NSBVL1VUUCcsIGxhYmVsOiAnQ2F0NSBVL1VUUCcgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHsgdmFsdWU6ICdDYXQ1IEYvVVRQJywgbGFiZWw6ICdDYXQ1IEYvVVRQJyB9XG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHsgdmFsdWU6ICdjb2F4aWFsJywgbGFiZWw6ICfpgJrnlKjlkIzovbTnlLXnvIYnLCBkaXNhYmxlZDogdHJ1ZSB9LFxuICAgICAgICAgICAgICAgIHsgdmFsdWU6ICdtYW51ZmFjdHVyZXInLCBsYWJlbDogJ+WItumAoOWVhicsIGRpc2FibGVkOiB0cnVlIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfSxcbiAgICAgICAgTElNSVRfVkFMVUU6IHtcbiAgICAgICAgICAgIHRpdGxlOiAn5rWL6K+V5p6B6ZmQ5YC8JyxcbiAgICAgICAgICAgIHN1YlRpdGxlOiAn5p6B6ZmQ5YC857uEJyxcbiAgICAgICAgICAgIGl0ZW1zOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB2YWx1ZTogJ1RJQScsXG4gICAgICAgICAgICAgICAgbGFiZWw6ICdUSUEnLFxuICAgICAgICAgICAgICAgIGNoaWxkcmVuOiB7XG4gICAgICAgICAgICAgICAgICAvLyBDYXQ4OiB7XG4gICAgICAgICAgICAgICAgICAvLyAgIGxhYmVsOiAnQ2F0OCcsXG4gICAgICAgICAgICAgICAgICAvLyAgIGNoaWxkcmVuOiBbXG4gICAgICAgICAgICAgICAgICAvLyAgICAgeyB2YWx1ZTogJ1RJQSBDYXQgOCBQZXJtLkxpbmsnLCBsYWJlbDogJ1RJQSBDYXQgOCBQZXJtLkxpbmsnIH0sXG4gICAgICAgICAgICAgICAgICAvLyAgICAgeyB2YWx1ZTogJ1RJQSBDYXQgOCBQZXJtLkxpbmsgKCtBTEwpJywgbGFiZWw6ICdUSUEgQ2F0IDggUGVybS5MaW5rICgrQUxMKScgfSxcbiAgICAgICAgICAgICAgICAgIC8vICAgICB7IHZhbHVlOiAnVElBIENhdCA4IFBlcm0uTGluayAoK1BvRSknLCBsYWJlbDogJ1RJQSBDYXQgOCBQZXJtLkxpbmsgKCtQb0UpJyB9LFxuICAgICAgICAgICAgICAgICAgLy8gICAgIHsgdmFsdWU6ICdUSUEgQ2F0IDggQ2hhbm5lbCcsIGxhYmVsOiAnVElBIENhdCA4IENoYW5uZWwnIH0sXG4gICAgICAgICAgICAgICAgICAvLyAgICAgeyB2YWx1ZTogJ1RJQSBDYXQgOCBDaGFubmVsICgrQUxMKScsIGxhYmVsOiAnVElBIENhdCA4IENoYW5uZWwgKCtBTEwpJyB9LFxuICAgICAgICAgICAgICAgICAgLy8gICAgIHsgdmFsdWU6ICdUSUEgQ2F0IDggQ2hhbm5lbCAoK1BvRSknLCBsYWJlbDogJ1RJQSBDYXQgOCBDaGFubmVsICgrUG9FKScgfVxuICAgICAgICAgICAgICAgICAgLy8gICBdXG4gICAgICAgICAgICAgICAgICAvLyB9LFxuICAgICAgICAgICAgICAgICAgQ2F0NkE6IHtcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdDYXQ2QScsXG4gICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuOiBbXG4gICAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogJ1RJQSBDYXQgNkEgUGVybS5MaW5rJywgbGFiZWw6ICdUSUEgQ2F0IDZBIFBlcm0uTGluaycgfSxcbiAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiAnVElBIENhdCA2QSBQZXJtLkxpbmsgKCtBTEwpJywgbGFiZWw6ICdUSUEgQ2F0IDZBIFBlcm0uTGluayAoK0FMTCknIH0sXG4gICAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogJ1RJQSBDYXQgNkEgUGVybS5MaW5rICgrUG9FKScsIGxhYmVsOiAnVElBIENhdCA2QSBQZXJtLkxpbmsgKCtQb0UpJyB9LFxuICAgICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6ICdUSUEgQ2F0IDZBIENoYW5uZWwnLCBsYWJlbDogJ1RJQSBDYXQgNkEgQ2hhbm5lbCcgfSxcbiAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiAnVElBIENhdCA2QSBDaGFubmVsICgrQUxMKScsIGxhYmVsOiAnVElBIENhdCA2QSBDaGFubmVsICgrQUxMKScgfSxcbiAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiAnVElBIENhdCA2QSBDaGFubmVsICgrUG9FKScsIGxhYmVsOiAnVElBIENhdCA2QSBDaGFubmVsICgrUG9FKScgfSxcbiAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiAnVElBIENhdCA2QSBNUFRMJywgbGFiZWw6ICdUSUEgQ2F0IDZBIE1QVEwnIH0sXG4gICAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogJ1RJQSBDYXQgNkEgTVBUTCAoK1BvRSknLCBsYWJlbDogJ1RJQSBDYXQgNkEgTVBUTCAoK1BvRSknIH0sXG4gICAgICAgICAgICAgICAgICAgICAgLy8geyB2YWx1ZTogJ1RJQSAxMDA1IENhdCA2QSBQZXJtLkxpbmsnLCBsYWJlbDogJ1RJQSAxMDA1IENhdCA2QSBQZXJtLkxpbmsnIH0sXG4gICAgICAgICAgICAgICAgICAgICAgLy8geyB2YWx1ZTogJ1RJQSAxMDA1IENhdCA2QSBDaGFubmVsJywgbGFiZWw6ICdUSUEgMTAwNSBDYXQgNkEgQ2hhbm5lbCcgfSxcbiAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiAnVElBIDEwMDUgQ2F0IDZBIENoYW5uZWwgRTEgKCtBTEwpJywgbGFiZWw6ICdUSUEgMTAwNSBDYXQgNkEgQ2hhbm5lbCBFMSAoK0FMTCknIH0sXG4gICAgICAgICAgICAgICAgICAgICAgLy8geyB2YWx1ZTogJ1RJQSAxMDA1IENhdCA2QSBDaGFubmVsIEUxICgrUG9FKScsIGxhYmVsOiAnVElBIDEwMDUgQ2F0IDZBIENoYW5uZWwgRTEgKCtQb0UpJyB9LFxuICAgICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6ICdUSUEgMTAwNSBDYXQgNkEgQ2hhbm5lbCBFMiAoK0FMTCknLCBsYWJlbDogJ1RJQSAxMDA1IENhdCA2QSBDaGFubmVsIEUyICgrQUxMKScgfSxcbiAgICAgICAgICAgICAgICAgICAgICAvLyB7IHZhbHVlOiAnVElBIDEwMDUgQ2F0IDZBIENoYW5uZWwgRTIgKCtQb0UpJywgbGFiZWw6ICdUSUEgMTAwNSBDYXQgNkEgQ2hhbm5lbCBFMiAoK1BvRSknIH0sXG4gICAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogJ1RJQSAxMDA1IENhdCA2QSBDaGFubmVsIEUzICgrQUxMKScsIGxhYmVsOiAnVElBIDEwMDUgQ2F0IDZBIENoYW5uZWwgRTMgKCtBTEwpJyB9LFxuICAgICAgICAgICAgICAgICAgICAgIC8vIHsgdmFsdWU6ICdUSUEgMTAwNSBDYXQgNkEgQ2hhbm5lbCBFMyAoK1BvRSknLCBsYWJlbDogJ1RJQSAxMDA1IENhdCA2QSBDaGFubmVsIEUzICgrUG9FKScgfVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgQ2F0Njoge1xuICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ0NhdDYnLFxuICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbjogW1xuICAgICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6ICdUSUEgQ2F0IDYgUGVybS5MaW5rJywgbGFiZWw6ICdUSUEgQ2F0IDYgUGVybS5MaW5rJyB9LFxuICAgICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6ICdUSUEgQ2F0IDYgUGVybS5MaW5rICgrQUxMKScsIGxhYmVsOiAnVElBIENhdCA2IFBlcm0uTGluayAoK0FMTCknIH0sXG4gICAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogJ1RJQSBDYXQgNiBQZXJtLkxpbmsgKCtQb0UpJywgbGFiZWw6ICdUSUEgQ2F0IDYgUGVybS5MaW5rICgrUG9FKScgfSxcbiAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiAnVElBIENhdCA2IENoYW5uZWwnLCBsYWJlbDogJ1RJQSBDYXQgNiBDaGFubmVsJyB9LFxuICAgICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6ICdUSUEgQ2F0IDYgQ2hhbm5lbCAoK0FMTCknLCBsYWJlbDogJ1RJQSBDYXQgNiBDaGFubmVsICgrQUxMKScgfSxcbiAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiAnVElBIENhdCA2IENoYW5uZWwgKCtQb0UpJywgbGFiZWw6ICdUSUEgQ2F0IDYgQ2hhbm5lbCAoK1BvRSknIH0sXG4gICAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogJ1RJQSBDYXQgNiBNUFRMJywgbGFiZWw6ICdUSUEgQ2F0IDYgTVBUTCcgfSxcbiAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiAnVElBIENhdCA2IE1QVEwgKCtQb0UpJywgbGFiZWw6ICdUSUEgQ2F0IDYgTVBUTCAoK1BvRSknIH0sXG4gICAgICAgICAgICAgICAgICAgICAgLy8geyB2YWx1ZTogJ1RJQSAxMDA1IENhdCA2IFBlcm0uTGluaycsIGxhYmVsOiAnVElBIDEwMDUgQ2F0IDYgUGVybS5MaW5rJyB9LFxuICAgICAgICAgICAgICAgICAgICAgIC8vIHsgdmFsdWU6ICdUSUEgMTAwNSBDYXQgNiBDaGFubmVsJywgbGFiZWw6ICdUSUEgMTAwNSBDYXQgNiBDaGFubmVsJyB9LFxuICAgICAgICAgICAgICAgICAgICAgIC8vIHsgdmFsdWU6ICdUSUEgMTAwNSBDYXQgNiBDaGFubmVsICgrQUxMKScsIGxhYmVsOiAnVElBIDEwMDUgQ2F0IDYgQ2hhbm5lbCAoK0FMTCknIH0sXG4gICAgICAgICAgICAgICAgICAgICAgLy8geyB2YWx1ZTogJ1RJQSAxMDA1IENhdCA2IENoYW5uZWwgKCtQb0UpJywgbGFiZWw6ICdUSUEgMTAwNSBDYXQgNiBDaGFubmVsICgrUG9FKScgfSxcbiAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiAnVElBIDEwMDUgQ2F0IDYgQ2hhbm5lbCBFMSAoK0FMTCknLCBsYWJlbDogJ1RJQSAxMDA1IENhdCA2IENoYW5uZWwgRTEgKCtBTEwpJyB9LFxuICAgICAgICAgICAgICAgICAgICAgIC8vIHsgdmFsdWU6ICdUSUEgMTAwNSBDYXQgNiBDaGFubmVsIEUxICgrUG9FKScsIGxhYmVsOiAnVElBIDEwMDUgQ2F0IDYgQ2hhbm5lbCBFMSAoK1BvRSknIH0sXG4gICAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogJ1RJQSAxMDA1IENhdCA2IENoYW5uZWwgRTIgKCtBTEwpJywgbGFiZWw6ICdUSUEgMTAwNSBDYXQgNiBDaGFubmVsIEUyICgrQUxMKScgfSxcbiAgICAgICAgICAgICAgICAgICAgICAvLyB7IHZhbHVlOiAnVElBIDEwMDUgQ2F0IDYgQ2hhbm5lbCBFMiAoK1BvRSknLCBsYWJlbDogJ1RJQSAxMDA1IENhdCA2IENoYW5uZWwgRTIgKCtQb0UpJyB9LFxuICAgICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6ICdUSUEgMTAwNSBDYXQgNiBDaGFubmVsIEUzICgrQUxMKScsIGxhYmVsOiAnVElBIDEwMDUgQ2F0IDYgQ2hhbm5lbCBFMyAoK0FMTCknIH0sXG4gICAgICAgICAgICAgICAgICAgICAgLy8geyB2YWx1ZTogJ1RJQSAxMDA1IENhdCA2IENoYW5uZWwgRTMgKCtQb0UpJywgbGFiZWw6ICdUSUEgMTAwNSBDYXQgNiBDaGFubmVsIEUzICgrUG9FKScgfVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgQ2F0NWU6IHtcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdDYXQ1ZScsXG4gICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuOiBbXG4gICAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogJ1RJQSBDYXQgNWUgUGVybS5MaW5rJywgbGFiZWw6ICdUSUEgQ2F0IDVlIFBlcm0uTGluaycgfSxcbiAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiAnVElBIENhdCA1ZSBQZXJtLkxpbmsgKCtBTEwpJywgbGFiZWw6ICdUSUEgQ2F0IDVlIFBlcm0uTGluayAoK0FMTCknIH0sXG4gICAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogJ1RJQSBDYXQgNWUgUGVybS5MaW5rICgrUG9FKScsIGxhYmVsOiAnVElBIENhdCA1ZSBQZXJtLkxpbmsgKCtQb0UpJyB9LFxuICAgICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6ICdUSUEgQ2F0IDVlIENoYW5uZWwnLCBsYWJlbDogJ1RJQSBDYXQgNWUgQ2hhbm5lbCcgfSxcbiAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiAnVElBIENhdCA1ZSBDaGFubmVsICgrQUxMKScsIGxhYmVsOiAnVElBIENhdCA1ZSBDaGFubmVsICgrQUxMKScgfSxcbiAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiAnVElBIENhdCA1ZSBDaGFubmVsICgrUG9FKScsIGxhYmVsOiAnVElBIENhdCA1ZSBDaGFubmVsICgrUG9FKScgfSxcbiAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiAnVElBIENhdCA1ZSBNUFRMJywgbGFiZWw6ICdUSUEgQ2F0IDVlIE1QVEwnIH0sXG4gICAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogJ1RJQSBDYXQgNWUgTVBUTCAoK1BvRSknLCBsYWJlbDogJ1RJQSBDYXQgNWUgTVBUTCAoK1BvRSknIH0sXG4gICAgICAgICAgICAgICAgICAgICAgLy8geyB2YWx1ZTogJ1RJQSAxMDA1IENhdCA1ZSBQZXJtLkxpbmsnLCBsYWJlbDogJ1RJQSAxMDA1IENhdCA1ZSBQZXJtLkxpbmsnIH0sXG4gICAgICAgICAgICAgICAgICAgICAgLy8geyB2YWx1ZTogJ1RJQSAxMDA1IENhdCA1ZSBDaGFubmVsJywgbGFiZWw6ICdUSUEgMTAwNSBDYXQgNWUgQ2hhbm5lbCcgfSxcbiAgICAgICAgICAgICAgICAgICAgICAvLyB7IHZhbHVlOiAnVElBIDEwMDUgQ2F0IDVlIENoYW5uZWwgKCtBTEwpJywgbGFiZWw6ICdUSUEgMTAwNSBDYXQgNWUgQ2hhbm5lbCAoK0FMTCknIH0sXG4gICAgICAgICAgICAgICAgICAgICAgLy8geyB2YWx1ZTogJ1RJQSAxMDA1IENhdCA1ZSBDaGFubmVsICgrUG9FKScsIGxhYmVsOiAnVElBIDEwMDUgQ2F0IDVlIENoYW5uZWwgKCtQb0UpJyB9LFxuICAgICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6ICdUSUEgMTAwNSBDYXQgNWUgQ2hhbm5lbCBFMSAoK0FMTCknLCBsYWJlbDogJ1RJQSAxMDA1IENhdCA1ZSBDaGFubmVsIEUxICgrQUxMKScgfSxcbiAgICAgICAgICAgICAgICAgICAgICAvLyB7IHZhbHVlOiAnVElBIDEwMDUgQ2F0IDVlIENoYW5uZWwgRTEgKCtQb0UpJywgbGFiZWw6ICdUSUEgMTAwNSBDYXQgNWUgQ2hhbm5lbCBFMSAoK1BvRSknIH0sXG4gICAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogJ1RJQSAxMDA1IENhdCA1ZSBDaGFubmVsIEUyICgrQUxMKScsIGxhYmVsOiAnVElBIDEwMDUgQ2F0IDVlIENoYW5uZWwgRTIgKCtBTEwpJyB9LFxuICAgICAgICAgICAgICAgICAgICAgIC8vIHsgdmFsdWU6ICdUSUEgMTAwNSBDYXQgNWUgQ2hhbm5lbCBFMiAoK1BvRSknLCBsYWJlbDogJ1RJQSAxMDA1IENhdCA1ZSBDaGFubmVsIEUyICgrUG9FKScgfSxcbiAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiAnVElBIDEwMDUgQ2F0IDVlIENoYW5uZWwgRTMgKCtBTEwpJywgbGFiZWw6ICdUSUEgMTAwNSBDYXQgNWUgQ2hhbm5lbCBFMyAoK0FMTCknIH0sXG4gICAgICAgICAgICAgICAgICAgICAgLy8geyB2YWx1ZTogJ1RJQSAxMDA1IENhdCA1ZSBDaGFubmVsIEUzICgrUG9FKScsIGxhYmVsOiAnVElBIDEwMDUgQ2F0IDVlIENoYW5uZWwgRTMgKCtQb0UpJyB9XG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB2YWx1ZTogJ0lTTycsXG4gICAgICAgICAgICAgICAgbGFiZWw6ICdJU08nLFxuICAgICAgICAgICAgICAgIGNoaWxkcmVuOiB7XG4gICAgICAgICAgICAgICAgICAvLyAnQ2xhc3Mg4oWhJzoge1xuICAgICAgICAgICAgICAgICAgLy8gICBsYWJlbDogJ0NsYXNzIOKFoScsXG4gICAgICAgICAgICAgICAgICAvLyAgIGNoaWxkcmVuOiBbXG4gICAgICAgICAgICAgICAgICAvLyAgICAgeyB2YWx1ZTogJ0lTTzExODAxIFBMIENsYXNzIOKFoScsIGxhYmVsOiAnSVNPMTE4MDEgUEwgQ2xhc3Mg4oWhJyB9LFxuICAgICAgICAgICAgICAgICAgLy8gICAgIHsgdmFsdWU6ICdJU08xMTgwMSBQTCBDbGFzcyDihaEgKCtBTEwpJywgbGFiZWw6ICdJU08xMTgwMSBQTCBDbGFzcyDihaEgKCtBTEwpJyB9LFxuICAgICAgICAgICAgICAgICAgLy8gICAgIHsgdmFsdWU6ICdJU08xMTgwMSBQTCBDbGFzcyDihaEgKCtQb0UpJywgbGFiZWw6ICdJU08xMTgwMSBQTCBDbGFzcyDihaEgKCtQb0UpJyB9LFxuICAgICAgICAgICAgICAgICAgLy8gICAgIHsgdmFsdWU6ICdJU08xMTgwMSBDaGFubmVsIENsYXNzIOKFoScsIGxhYmVsOiAnSVNPMTE4MDEgQ2hhbm5lbCBDbGFzcyDihaEnIH0sXG4gICAgICAgICAgICAgICAgICAvLyAgICAgeyB2YWx1ZTogJ0lTTzExODAxIENoYW5uZWwgQ2xhc3Mg4oWhICgrQUxMKScsIGxhYmVsOiAnSVNPMTE4MDEgQ2hhbm5lbCBDbGFzcyDihaEgKCtBTEwpJyB9LFxuICAgICAgICAgICAgICAgICAgLy8gICAgIHsgdmFsdWU6ICdJU08xMTgwMSBDaGFubmVsIENsYXNzIOKFoSAoK1BvRSknLCBsYWJlbDogJ0lTTzExODAxIENoYW5uZWwgQ2xhc3Mg4oWhICgrUG9FKScgfVxuICAgICAgICAgICAgICAgICAgLy8gICBdLFxuICAgICAgICAgICAgICAgICAgLy8gICBkaXNhYmxlZDogdHJ1ZSBcbiAgICAgICAgICAgICAgICAgIC8vIH0sXG4gICAgICAgICAgICAgICAgICAvLyAnQ2xhc3Mg4oWgJzoge1xuICAgICAgICAgICAgICAgICAgLy8gICBsYWJlbDogJ0NsYXNzIOKFoCcsXG4gICAgICAgICAgICAgICAgICAvLyAgIGNoaWxkcmVuOiBbXG4gICAgICAgICAgICAgICAgICAvLyAgICAgeyB2YWx1ZTogJ0lTTzExODAxIFBMIENsYXNzIOKFoCcsIGxhYmVsOiAnSVNPMTE4MDEgUEwgQ2xhc3Mg4oWgJyB9LFxuICAgICAgICAgICAgICAgICAgLy8gICAgIHsgdmFsdWU6ICdJU08xMTgwMSBQTCBDbGFzcyDihaAgKCtBTEwpJywgbGFiZWw6ICdJU08xMTgwMSBQTCBDbGFzcyDihaAgKCtBTEwpJyB9LFxuICAgICAgICAgICAgICAgICAgLy8gICAgIHsgdmFsdWU6ICdJU08xMTgwMSBQTCBDbGFzcyDihaAgKCtQb0UpJywgbGFiZWw6ICdJU08xMTgwMSBQTCBDbGFzcyDihaAgKCtQb0UpJyB9LFxuICAgICAgICAgICAgICAgICAgLy8gICAgIHsgdmFsdWU6ICdJU08xMTgwMSBDaGFubmVsIENsYXNzIOKFoCcsIGxhYmVsOiAnSVNPMTE4MDEgQ2hhbm5lbCBDbGFzcyDihaAnIH0sXG4gICAgICAgICAgICAgICAgICAvLyAgICAgeyB2YWx1ZTogJ0lTTzExODAxIENoYW5uZWwgQ2xhc3Mg4oWgICgrQUxMKScsIGxhYmVsOiAnSVNPMTE4MDEgQ2hhbm5lbCBDbGFzcyDihaAgKCtBTEwpJyB9LFxuICAgICAgICAgICAgICAgICAgLy8gICAgIHsgdmFsdWU6ICdJU08xMTgwMSBDaGFubmVsIENsYXNzIOKFoCAoK1BvRSknLCBsYWJlbDogJ0lTTzExODAxIENoYW5uZWwgQ2xhc3Mg4oWgICgrUG9FKScgfVxuICAgICAgICAgICAgICAgICAgLy8gICBdLFxuICAgICAgICAgICAgICAgICAgLy8gICBkaXNhYmxlZDogdHJ1ZSBcbiAgICAgICAgICAgICAgICAgIC8vIH0sXG4gICAgICAgICAgICAgICAgICAvLyAnQ2xhc3MgRmEnOiB7XG4gICAgICAgICAgICAgICAgICAvLyAgIGxhYmVsOiAnQ2xhc3MgRmEnLFxuICAgICAgICAgICAgICAgICAgLy8gICBjaGlsZHJlbjogW1xuICAgICAgICAgICAgICAgICAgLy8gICAgIHsgdmFsdWU6ICdJU08xMTgwMSBQTDIgQ2xhc3MgRmEnLCBsYWJlbDogJ0lTTzExODAxIFBMMiBDbGFzcyBGYScgfSxcbiAgICAgICAgICAgICAgICAgIC8vICAgICB7IHZhbHVlOiAnSVNPMTE4MDEgUEwyIENsYXNzIEZhICgrQUxMKScsIGxhYmVsOiAnSVNPMTE4MDEgUEwyIENsYXNzIEZhICgrQUxMKScgfSxcbiAgICAgICAgICAgICAgICAgIC8vICAgICB7IHZhbHVlOiAnSVNPMTE4MDEgUEwyIENsYXNzIEZhICgrUG9FKScsIGxhYmVsOiAnSVNPMTE4MDEgUEwyIENsYXNzIEZhICgrUG9FKScgfSxcbiAgICAgICAgICAgICAgICAgIC8vICAgICB7IHZhbHVlOiAnSVNPMTE4MDEgUEwzIENsYXNzIEZhJywgbGFiZWw6ICdJU08xMTgwMSBQTDMgQ2xhc3MgRmEnIH0sXG4gICAgICAgICAgICAgICAgICAvLyAgICAgeyB2YWx1ZTogJ0lTTzExODAxIFBMMyBDbGFzcyBGYSAoK0FMTCknLCBsYWJlbDogJ0lTTzExODAxIFBMMyBDbGFzcyBGYSAoK0FMTCknIH0sXG4gICAgICAgICAgICAgICAgICAvLyAgICAgeyB2YWx1ZTogJ0lTTzExODAxIFBMMyBDbGFzcyBGYSAoK1BvRSknLCBsYWJlbDogJ0lTTzExODAxIFBMMyBDbGFzcyBGYSAoK1BvRSknIH0sXG4gICAgICAgICAgICAgICAgICAvLyAgICAgeyB2YWx1ZTogJ0lTTzExODAxIENoYW5uZWwgQ2xhc3MgRmEnLCBsYWJlbDogJ0lTTzExODAxIENoYW5uZWwgQ2xhc3MgRmEnIH0sXG4gICAgICAgICAgICAgICAgICAvLyAgICAgeyB2YWx1ZTogJ0lTTzExODAxIENoYW5uZWwgQ2xhc3MgRmEgKCtBTEwpJywgbGFiZWw6ICdJU08xMTgwMSBDaGFubmVsIENsYXNzIEZhICgrQUxMKScgfSxcbiAgICAgICAgICAgICAgICAgIC8vICAgICB7IHZhbHVlOiAnSVNPMTE4MDEgQ2hhbm5lbCBDbGFzcyBGYSAoK1BvRSknLCBsYWJlbDogJ0lTTzExODAxIENoYW5uZWwgQ2xhc3MgRmEgKCtQb0UpJyB9XG4gICAgICAgICAgICAgICAgICAvLyAgIF0sXG4gICAgICAgICAgICAgICAgICAvLyAgIGRpc2FibGVkOiB0cnVlIFxuICAgICAgICAgICAgICAgICAgLy8gfSxcbiAgICAgICAgICAgICAgICAgIC8vICdDbGFzcyBGJzoge1xuICAgICAgICAgICAgICAgICAgLy8gICBsYWJlbDogJ0NsYXNzIEYnLFxuICAgICAgICAgICAgICAgICAgLy8gICBjaGlsZHJlbjogW1xuICAgICAgICAgICAgICAgICAgLy8gICAgIHsgdmFsdWU6ICdJU08xMTgwMSBQTCBDbGFzcyBGJywgbGFiZWw6ICdJU08xMTgwMSBQTCBDbGFzcyBGJyB9LFxuICAgICAgICAgICAgICAgICAgLy8gICAgIHsgdmFsdWU6ICdJU08xMTgwMSBQTCBDbGFzcyBGICgrQUxMKScsIGxhYmVsOiAnSVNPMTE4MDEgUEwgQ2xhc3MgRiAoK0FMTCknIH0sXG4gICAgICAgICAgICAgICAgICAvLyAgICAgeyB2YWx1ZTogJ0lTTzExODAxIFBMIENsYXNzIEYgKCtQb0UpJywgbGFiZWw6ICdJU08xMTgwMSBQTCBDbGFzcyBGICgrUG9FKScgfSxcbiAgICAgICAgICAgICAgICAgIC8vICAgICB7IHZhbHVlOiAnSVNPMTE4MDEgQ2hhbm5lbCBDbGFzcyBGJywgbGFiZWw6ICdJU08xMTgwMSBDaGFubmVsIENsYXNzIEYnIH0sXG4gICAgICAgICAgICAgICAgICAvLyAgICAgeyB2YWx1ZTogJ0lTTzExODAxIENoYW5uZWwgQ2xhc3MgRiAoK0FMTCknLCBsYWJlbDogJ0lTTzExODAxIENoYW5uZWwgQ2xhc3MgRiAoK0FMTCknIH0sXG4gICAgICAgICAgICAgICAgICAvLyAgICAgeyB2YWx1ZTogJ0lTTzExODAxIENoYW5uZWwgQ2xhc3MgRiAoK1BvRSknLCBsYWJlbDogJ0lTTzExODAxIENoYW5uZWwgQ2xhc3MgRiAoK1BvRSknIH1cbiAgICAgICAgICAgICAgICAgIC8vICAgXSxcbiAgICAgICAgICAgICAgICAgIC8vICAgZGlzYWJsZWQ6IHRydWUgXG4gICAgICAgICAgICAgICAgICAvLyB9LFxuICAgICAgICAgICAgICAgICAgJ0NsYXNzIEVhJzoge1xuICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ0NsYXNzIEVhJyxcbiAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW46IFtcbiAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiAnSVNPMTE4MDEgUEwyIENsYXNzIEVhJywgbGFiZWw6ICdJU08xMTgwMSBQTDIgQ2xhc3MgRWEnIH0sXG4gICAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogJ0lTTzExODAxIFBMMiBDbGFzcyBFYSAoK0FMTCknLCBsYWJlbDogJ0lTTzExODAxIFBMMiBDbGFzcyBFYSAoK0FMTCknIH0sXG4gICAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogJ0lTTzExODAxIFBMMiBDbGFzcyBFYSAoK1BvRSknLCBsYWJlbDogJ0lTTzExODAxIFBMMiBDbGFzcyBFYSAoK1BvRSknIH0sXG4gICAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogJ0lTTzExODAxIFBMMyBDbGFzcyBFYScsIGxhYmVsOiAnSVNPMTE4MDEgUEwzIENsYXNzIEVhJyB9LFxuICAgICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6ICdJU08xMTgwMSBQTDMgQ2xhc3MgRWEgKCtBTEwpJywgbGFiZWw6ICdJU08xMTgwMSBQTDMgQ2xhc3MgRWEgKCtBTEwpJyB9LFxuICAgICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6ICdJU08xMTgwMSBQTDMgQ2xhc3MgRWEgKCtQb0UpJywgbGFiZWw6ICdJU08xMTgwMSBQTDMgQ2xhc3MgRWEgKCtQb0UpJyB9LFxuICAgICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6ICdJU08xMTgwMSBDaGFubmVsIENsYXNzIEVhJywgbGFiZWw6ICdJU08xMTgwMSBDaGFubmVsIENsYXNzIEVhJyB9LFxuICAgICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6ICdJU08xMTgwMSBDaGFubmVsIENsYXNzIEVhICgrQUxMKScsIGxhYmVsOiAnSVNPMTE4MDEgQ2hhbm5lbCBDbGFzcyBFYSAoK0FMTCknIH0sXG4gICAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogJ0lTTzExODAxIENoYW5uZWwgQ2xhc3MgRWEgKCtQb0UpJywgbGFiZWw6ICdJU08xMTgwMSBDaGFubmVsIENsYXNzIEVhICgrUG9FKScgfSxcbiAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiAnSVNPIE1QVEwgQ2xhc3MgRWEnLCBsYWJlbDogJ0lTTyBNUFRMIENsYXNzIEVhJyB9LFxuICAgICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6ICdJU08gTVBUTCBDbGFzcyBFYSAoK1BvRSknLCBsYWJlbDogJ0lTTyBNUFRMIENsYXNzIEVhICgrUG9FKScgfVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgJ0NsYXNzIEUnOiB7XG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnQ2xhc3MgRScsXG4gICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuOiBbXG4gICAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogJ0lTTzExODAxIFBMIENsYXNzIEUnLCBsYWJlbDogJ0lTTzExODAxIFBMIENsYXNzIEUnIH0sXG4gICAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogJ0lTTzExODAxIFBMIENsYXNzIEUgKCtBTEwpJywgbGFiZWw6ICdJU08xMTgwMSBQTCBDbGFzcyBFICgrQUxMKScgfSxcbiAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiAnSVNPMTE4MDEgUEwgQ2xhc3MgRSAoK1BvRSknLCBsYWJlbDogJ0lTTzExODAxIFBMIENsYXNzIEUgKCtQb0UpJyB9LFxuICAgICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6ICdJU08xMTgwMSBDaGFubmVsIENsYXNzIEUnLCBsYWJlbDogJ0lTTzExODAxIENoYW5uZWwgQ2xhc3MgRScgfSxcbiAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiAnSVNPMTE4MDEgQ2hhbm5lbCBDbGFzcyBFICgrQUxMKScsIGxhYmVsOiAnSVNPMTE4MDEgQ2hhbm5lbCBDbGFzcyBFICgrQUxMKScgfSxcbiAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiAnSVNPMTE4MDEgQ2hhbm5lbCBDbGFzcyBFICgrUG9FKScsIGxhYmVsOiAnSVNPMTE4MDEgQ2hhbm5lbCBDbGFzcyBFICgrUG9FKScgfSxcbiAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiAnSVNPIE1QVEwgQ2xhc3MgRScsIGxhYmVsOiAnSVNPIE1QVEwgQ2xhc3MgRScgfSxcbiAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiAnSVNPIE1QVEwgQ2xhc3MgRSAoK1BvRSknLCBsYWJlbDogJ0lTTyBNUFRMIENsYXNzIEUgKCtQb0UpJyB9XG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAnQ2xhc3MgRCc6IHtcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdDbGFzcyBEJyxcbiAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW46IFtcbiAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiAnSVNPMTE4MDEgUEwgQ2xhc3MgRCcsIGxhYmVsOiAnSVNPMTE4MDEgUEwgQ2xhc3MgRCcgfSxcbiAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiAnSVNPMTE4MDEgUEwgQ2xhc3MgRCAoK0FMTCknLCBsYWJlbDogJ0lTTzExODAxIFBMIENsYXNzIEQgKCtBTEwpJyB9LFxuICAgICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6ICdJU08xMTgwMSBQTCBDbGFzcyBEICgrUG9FKScsIGxhYmVsOiAnSVNPMTE4MDEgUEwgQ2xhc3MgRCAoK1BvRSknIH0sXG4gICAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogJ0lTTzExODAxIENoYW5uZWwgQ2xhc3MgRCcsIGxhYmVsOiAnSVNPMTE4MDEgQ2hhbm5lbCBDbGFzcyBEJyB9LFxuICAgICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6ICdJU08xMTgwMSBDaGFubmVsIENsYXNzIEQgKCtBTEwpJywgbGFiZWw6ICdJU08xMTgwMSBDaGFubmVsIENsYXNzIEQgKCtBTEwpJyB9LFxuICAgICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6ICdJU08xMTgwMSBDaGFubmVsIENsYXNzIEQgKCtQb0UpJywgbGFiZWw6ICdJU08xMTgwMSBDaGFubmVsIENsYXNzIEQgKCtQb0UpJyB9LFxuICAgICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6ICdJU08gTVBUTCBDbGFzcyBEJywgbGFiZWw6ICdJU08gTVBUTCBDbGFzcyBEJyB9LFxuICAgICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6ICdJU08gTVBUTCBDbGFzcyBEICgrUG9FKScsIGxhYmVsOiAnSVNPIE1QVEwgQ2xhc3MgRCAoK1BvRSknIH1cbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHZhbHVlOiAn5Yy65Z+fJyxcbiAgICAgICAgICAgICAgICBsYWJlbDogJ+WMuuWfnycsXG4gICAgICAgICAgICAgICAgY2hpbGRyZW46IHtcbiAgICAgICAgICAgICAgICAgICfkuK3lm70nOiB7XG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiAn5Lit5Zu9JyxcbiAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW46IFtcbiAgICAgICAgICAgICAgICAgICAgICAvLyB7IHZhbHVlOiAnR0JUIDUwMzEyLTIwMTYgQ2F0IDdBIFBMIG5vIENQJywgbGFiZWw6ICdHQi9UIDUwMzEyLTIwMTYgQ2F0IDdBIFBMIG5vIENQJyB9LFxuICAgICAgICAgICAgICAgICAgICAgIC8vIHsgdmFsdWU6ICdHQlQgNTAzMTItMjAxNiBDYXQgN0EgUEwgbm8gQ1AgKCtBTEwpJywgbGFiZWw6ICdHQi9UIDUwMzEyLTIwMTYgQ2F0IDdBIFBMIG5vIENQICgrQUxMKScgfSxcbiAgICAgICAgICAgICAgICAgICAgICAvLyB7IHZhbHVlOiAnR0JUIDUwMzEyLTIwMTYgQ2F0IDdBIFBMIG5vIENQICgrUG9FKScsIGxhYmVsOiAnR0IvVCA1MDMxMi0yMDE2IENhdCA3QSBQTCBubyBDUCAoK1BvRSknIH0sXG4gICAgICAgICAgICAgICAgICAgICAgLy8geyB2YWx1ZTogJ0dCVCA1MDMxMi0yMDE2IENhdCA3QSBQTCB3aXRoIENQJywgbGFiZWw6ICdHQi9UIDUwMzEyLTIwMTYgQ2F0IDdBIFBMIHdpdGggQ1AnIH0sXG4gICAgICAgICAgICAgICAgICAgICAgLy8geyB2YWx1ZTogJ0dCVCA1MDMxMi0yMDE2IENhdCA3QSBQTCB3aXRoIENQICgrQUxMKScsIGxhYmVsOiAnR0IvVCA1MDMxMi0yMDE2IENhdCA3QSBQTCB3aXRoIENQICgrQUxMKScgfSxcbiAgICAgICAgICAgICAgICAgICAgICAvLyB7IHZhbHVlOiAnR0JUIDUwMzEyLTIwMTYgQ2F0IDdBIFBMIHdpdGggQ1AgKCtQb0UpJywgbGFiZWw6ICdHQi9UIDUwMzEyLTIwMTYgQ2F0IDdBIFBMIHdpdGggQ1AgKCtQb0UpJyB9LFxuICAgICAgICAgICAgICAgICAgICAgIC8vIHsgdmFsdWU6ICdHQlQgNTAzMTItMjAxNiBDYXQgN0EgQ2gnLCBsYWJlbDogJ0dCL1QgNTAzMTItMjAxNiBDYXQgN0EgQ2gnIH0sXG4gICAgICAgICAgICAgICAgICAgICAgLy8geyB2YWx1ZTogJ0dCVCA1MDMxMi0yMDE2IENhdCA3QSBDaCAoK0FMTCknLCBsYWJlbDogJ0dCL1QgNTAzMTItMjAxNiBDYXQgN0EgQ2ggKCtBTEwpJyB9LFxuICAgICAgICAgICAgICAgICAgICAgIC8vIHsgdmFsdWU6ICdHQlQgNTAzMTItMjAxNiBDYXQgN0EgQ2ggKCtQb0UpJywgbGFiZWw6ICdHQi9UIDUwMzEyLTIwMTYgQ2F0IDdBIENoICgrUG9FKScgfSxcbiAgICAgICAgICAgICAgICAgICAgICAvLyB7IHZhbHVlOiAnR0JUIDUwMzEyLTIwMTYgQ2F0IDcgUEwnLCBsYWJlbDogJ0dCL1QgNTAzMTItMjAxNiBDYXQgNyBQTCcgfSxcbiAgICAgICAgICAgICAgICAgICAgICAvLyB7IHZhbHVlOiAnR0JUIDUwMzEyLTIwMTYgQ2F0IDcgUEwgKCtBTEwpJywgbGFiZWw6ICdHQi9UIDUwMzEyLTIwMTYgQ2F0IDcgUEwgKCtBTEwpJyB9LFxuICAgICAgICAgICAgICAgICAgICAgIC8vIHsgdmFsdWU6ICdHQlQgNTAzMTItMjAxNiBDYXQgNyBQTCAoK1BvRSknLCBsYWJlbDogJ0dCL1QgNTAzMTItMjAxNiBDYXQgNyBQTCAoK1BvRSknIH0sXG4gICAgICAgICAgICAgICAgICAgICAgLy8geyB2YWx1ZTogJ0dCVCA1MDMxMi0yMDE2IENhdCA3IENoJywgbGFiZWw6ICdHQi9UIDUwMzEyLTIwMTYgQ2F0IDcgQ2gnIH0sXG4gICAgICAgICAgICAgICAgICAgICAgLy8geyB2YWx1ZTogJ0dCVCA1MDMxMi0yMDE2IENhdCA3IENoICgrQUxMKScsIGxhYmVsOiAnR0IvVCA1MDMxMi0yMDE2IENhdCA3IENoICgrQUxMKScgfSxcbiAgICAgICAgICAgICAgICAgICAgICAvLyB7IHZhbHVlOiAnR0JUIDUwMzEyLTIwMTYgQ2F0IDcgQ2ggKCtQb0UpJywgbGFiZWw6ICdHQi9UIDUwMzEyLTIwMTYgQ2F0IDcgQ2ggKCtQb0UpJyB9LFxuICAgICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6ICdHQlQgNTAzMTItMjAxNiBDYXQgNkEgUEwgbm8gQ1AnLCBsYWJlbDogJ0dCL1QgNTAzMTItMjAxNiBDYXQgNkEgUEwgbm8gQ1AnIH0sXG4gICAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogJ0dCVCA1MDMxMi0yMDE2IENhdCA2QSBQTCBubyBDUCAoK0FMTCknLCBsYWJlbDogJ0dCL1QgNTAzMTItMjAxNiBDYXQgNkEgUEwgbm8gQ1AgKCtBTEwpJyB9LFxuICAgICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6ICdHQlQgNTAzMTItMjAxNiBDYXQgNkEgUEwgbm8gQ1AgKCtQb0UpJywgbGFiZWw6ICdHQi9UIDUwMzEyLTIwMTYgQ2F0IDZBIFBMIG5vIENQICgrUG9FKScgfSxcbiAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiAnR0JUIDUwMzEyLTIwMTYgQ2F0IDZBIFBMIHdpdGggQ1AnLCBsYWJlbDogJ0dCL1QgNTAzMTItMjAxNiBDYXQgNkEgUEwgd2l0aCBDUCcgfSxcbiAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiAnR0JUIDUwMzEyLTIwMTYgQ2F0IDZBIFBMIHdpdGggQ1AgKCtBTEwpJywgbGFiZWw6ICdHQi9UIDUwMzEyLTIwMTYgQ2F0IDZBIFBMIHdpdGggQ1AgKCtBTEwpJyB9LFxuICAgICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6ICdHQlQgNTAzMTItMjAxNiBDYXQgNkEgUEwgd2l0aCBDUCAoK1BvRSknLCBsYWJlbDogJ0dCL1QgNTAzMTItMjAxNiBDYXQgNkEgUEwgd2l0aCBDUCAoK1BvRSknIH0sXG4gICAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogJ0dCVCA1MDMxMi0yMDE2IENhdCA2QSBDaCcsIGxhYmVsOiAnR0IvVCA1MDMxMi0yMDE2IENhdCA2QSBDaCcgfSxcbiAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiAnR0JUIDUwMzEyLTIwMTYgQ2F0IDZBIENoICgrQUxMKScsIGxhYmVsOiAnR0IvVCA1MDMxMi0yMDE2IENhdCA2QSBDaCAoK0FMTCknIH0sXG4gICAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogJ0dCVCA1MDMxMi0yMDE2IENhdCA2QSBDaCAoK1BvRSknLCBsYWJlbDogJ0dCL1QgNTAzMTItMjAxNiBDYXQgNkEgQ2ggKCtQb0UpJyB9LFxuICAgICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6ICdHQlQgNTAzMTItMjAxNiBDYXQgNiBQTCcsIGxhYmVsOiAnR0IvVCA1MDMxMi0yMDE2IENhdCA2IFBMJyB9LFxuICAgICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6ICdHQlQgNTAzMTItMjAxNiBDYXQgNiBQTCAoK0FMTCknLCBsYWJlbDogJ0dCL1QgNTAzMTItMjAxNiBDYXQgNiBQTCAoK0FMTCknIH0sXG4gICAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogJ0dCVCA1MDMxMi0yMDE2IENhdCA2IFBMICgrUG9FKScsIGxhYmVsOiAnR0IvVCA1MDMxMi0yMDE2IENhdCA2IFBMICgrUG9FKScgfSxcbiAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiAnR0JUIDUwMzEyLTIwMTYgQ2F0IDYgQ2gnLCBsYWJlbDogJ0dCL1QgNTAzMTItMjAxNiBDYXQgNiBDaCcgfSxcbiAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiAnR0JUIDUwMzEyLTIwMTYgQ2F0IDYgQ2ggKCtBTEwpJywgbGFiZWw6ICdHQi9UIDUwMzEyLTIwMTYgQ2F0IDYgQ2ggKCtBTEwpJyB9LFxuICAgICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6ICdHQlQgNTAzMTItMjAxNiBDYXQgNiBDaCAoK1BvRSknLCBsYWJlbDogJ0dCL1QgNTAzMTItMjAxNiBDYXQgNiBDaCAoK1BvRSknIH0sXG4gICAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogJ0dCVCA1MDMxMi0yMDE2IENhdCA1ZSBQTCcsIGxhYmVsOiAnR0IvVCA1MDMxMi0yMDE2IENhdCA1ZSBQTCcgfSxcbiAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiAnR0JUIDUwMzEyLTIwMTYgQ2F0IDVlIFBMICgrQUxMKScsIGxhYmVsOiAnR0IvVCA1MDMxMi0yMDE2IENhdCA1ZSBQTCAoK0FMTCknIH0sXG4gICAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogJ0dCVCA1MDMxMi0yMDE2IENhdCA1ZSBQTCAoK1BvRSknLCBsYWJlbDogJ0dCL1QgNTAzMTItMjAxNiBDYXQgNWUgUEwgKCtQb0UpJyB9LFxuICAgICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6ICdHQlQgNTAzMTItMjAxNiBDYXQgNWUgQ2gnLCBsYWJlbDogJ0dCL1QgNTAzMTItMjAxNiBDYXQgNWUgQ2gnIH0sXG4gICAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogJ0dCVCA1MDMxMi0yMDE2IENhdCA1ZSBDaCAoK0FMTCknLCBsYWJlbDogJ0dCL1QgNTAzMTItMjAxNiBDYXQgNWUgQ2ggKCtBTEwpJyB9LFxuICAgICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6ICdHQlQgNTAzMTItMjAxNiBDYXQgNWUgQ2ggKCtQb0UpJywgbGFiZWw6ICdHQi9UIDUwMzEyLTIwMTYgQ2F0IDVlIENoICgrUG9FKScgfVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdmFsdWU6ICfot7Pnur8nLFxuICAgICAgICAgICAgICAgIGxhYmVsOiAn6Lez57q/JyxcbiAgICAgICAgICAgICAgICBkaXNhYmxlZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICBjaGlsZHJlbjoge1xuICAgICAgICAgICAgICAgICAgJ0NhdDZBIFBhdGNoIENvcmRzJzoge1xuICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ0NhdDZBIFBhdGNoIENvcmRzJyxcbiAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuOiBbXVxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICdDYXQ2IFBhdGNoIENvcmRzJzoge1xuICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ0NhdDYgUGF0Y2ggQ29yZHMnLFxuICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW46IFtdXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgJ0NhdDVlIFBhdGNoIENvcmRzJzoge1xuICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ0NhdDVlIFBhdGNoIENvcmRzJyxcbiAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuOiBbXVxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICdNMTIgUGF0Y2ggQ29yZHMnOiB7XG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnTTEyIFBhdGNoIENvcmRzJyxcbiAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuOiBbXVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHZhbHVlOiAn5bqU55SoJyxcbiAgICAgICAgICAgICAgICBsYWJlbDogJ+W6lOeUqCcsXG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGNoaWxkcmVuOiBbXG4gICAgICAgICAgICAgICAgICB7IHZhbHVlOiAnUHJvZmluZXQnLCBsYWJlbDogJ1Byb2ZpbmV0JyB9LFxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICAgIH0sXG4gICAgICAgIFdJUkVfT1JERVI6IHtcbiAgICAgICAgICAgIHRpdGxlOiAn5o+S5bqn6YWN572uJyxcbiAgICAgICAgICAgIGl0ZW1zOiBbXG4gICAgICAgICAgICAgICAgeyB2YWx1ZTogJ1Q1NjhBJywgbGFiZWw6ICdUNTY4QScgLCBkaXNhYmxlZDogdHJ1ZX0sXG4gICAgICAgICAgICAgICAgeyB2YWx1ZTogJ1Q1NjhCJywgbGFiZWw6ICdUNTY4QicgfSxcbiAgICAgICAgICAgICAgICB7IHZhbHVlOiAnRXRoZXJuZXQgVHdvLVBhaXInLCBsYWJlbDogJ0V0aGVybmV0IFR3by1QYWlyJyB9LFxuICAgICAgICAgICAgICAgIHsgdmFsdWU6ICdNMTItRCBUd28tUGFpcicsIGxhYmVsOiAnTTEyLUQgVHdvLVBhaXInIH0sXG4gICAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgICAgIEZJQkVSX1RZUEU6IHtcbiAgICAgICAgICAgIHRpdGxlOiAn5YWJ57qk57G75Z6LJyxcbiAgICAgICAgICAgIHN1YlRpdGxlOiAn55S157yG57uEJyxcbiAgICAgICAgICAgIGl0ZW1zOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogJ+WumuWIticsXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiAn5a6a5Yi2JyxcbiAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuOiB7fVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogJ2dlbmVyYWwnLFxuICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ+mAmueUqCcsXG4gICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiAnT00xIE11bGl0bW9kZSA2Mi41JywgbGFiZWw6ICdPTTEgTXVsaXRtb2RlIDYyLjUnIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiAnT00yIE11bGl0bW9kZSA1MCcsIGxhYmVsOiAnT00yIE11bGl0bW9kZSA1MCcgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6ICdPTTMgTXVsaXRtb2RlIDUwJywgbGFiZWw6ICdPTTMgTXVsaXRtb2RlIDUwJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogJ09NNCBNdWxpdG1vZGUgNTAnLCBsYWJlbDogJ09NNCBNdWxpdG1vZGUgNTAnIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiAnT001IE11bGl0bW9kZSA1MCcsIGxhYmVsOiAnT001IE11bGl0bW9kZSA1MCcgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6ICdPUzEgU2luZ2xlbW9kZScsIGxhYmVsOiAnT1MxIFNpbmdsZW1vZGUnIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiAnT1MyIFNpbmdsZW1vZGUnLCBsYWJlbDogJ09TMiBTaW5nbGVtb2RlJyB9XG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICfliLbpgKDllYYnLFxuICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ+WItumAoOWVhicsXG4gICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbjoge31cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgICAgIENGUF9MSU1JVDoge1xuICAgICAgICAgICAgdGl0bGU6ICfmtYvor5XmnoHpmZDlgLwnLFxuICAgICAgICAgICAgc3ViVGl0bGU6ICfmnoHpmZDlgLznu4QnLFxuICAgICAgICAgICAgaXRlbXM6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHZhbHVlOiAnVElBJyxcbiAgICAgICAgICAgICAgICBsYWJlbDogJ1RJQScsXG4gICAgICAgICAgICAgICAgY2hpbGRyZW46IFtcbiAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogJ1RJQS01NjguMy1FIE11bHRpbW9kZSAoU1REKScsIGxhYmVsOiAnVElBLTU2OC4zLUUgTXVsdGltb2RlIChTVEQpJyB9LFxuICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiAnVElBLTU2OC4zLUUgTXVsdGltb2RlIChSRUYpJywgbGFiZWw6ICdUSUEtNTY4LjMtRSBNdWx0aW1vZGUgKFJFRiknIH0sXG4gICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6ICdUSUEtNTY4LjMtRSBTaW5nbGVtb2RlIElTUCAoU1REKScsIGxhYmVsOiAnVElBLTU2OC4zLUUgU2luZ2xlbW9kZSBJU1AgKFNURCknIH0sXG4gICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6ICdUSUEtNTY4LjMtRSBTaW5nbGVtb2RlIE9TUCAoU1REKScsIGxhYmVsOiAnVElBLTU2OC4zLUUgU2luZ2xlbW9kZSBPU1AgKFNURCknIH0sXG4gICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6ICdUSUEtNTY4LjMtRSBTaW5nbGVtb2RlIElTUCAoUkVGKScsIGxhYmVsOiAnVElBLTU2OC4zLUUgU2luZ2xlbW9kZSBJU1AgKFJFRiknIH0sXG4gICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6ICdUSUEtNTY4LjMtRSBTaW5nbGVtb2RlIE9TUCAoUkVGKScsIGxhYmVsOiAnVElBLTU2OC4zLUUgU2luZ2xlbW9kZSBPU1AgKFJFRiknIH1cbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB2YWx1ZTogJ0NoaW5hJyxcbiAgICAgICAgICAgICAgICBsYWJlbDogJ+S4reWbvScsXG4gICAgICAgICAgICAgICAgY2hpbGRyZW46IFtcbiAgICAgICAgICAgICAgICAgIHsgdmFsdWU6ICdHQi9UIDUwMzEyLTIwMTYgRmliZXIgTGluaycsIGxhYmVsOiAnR0IvVCA1MDMxMi0yMDE2IEZpYmVyIExpbmsnIH0sXG4gICAgICAgICAgICAgICAgICB7IHZhbHVlOiAnR0IvVCA1MDMxMi0yMDE2IE9GLTMwMCBDaCcsIGxhYmVsOiAnR0IvVCA1MDMxMi0yMDE2IE9GLTMwMCBDaCcgfSxcbiAgICAgICAgICAgICAgICAgIHsgdmFsdWU6ICdHQi9UIDUwMzEyLTIwMTYgT0YtNTAwIENoJywgbGFiZWw6ICdHQi9UIDUwMzEyLTIwMTYgT0YtNTAwIENoJyB9LFxuICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogJ0dCL1QgNTAzMTItMjAxNiBPRi0yMDAwIENoJywgbGFiZWw6ICdHQi9UIDUwMzEyLTIwMTYgT0YtMjAwMCBDaCcgfVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHZhbHVlOiAnSVNPJyxcbiAgICAgICAgICAgICAgICBsYWJlbDogJ0lTTycsXG4gICAgICAgICAgICAgICAgY2hpbGRyZW46IFtcbiAgICAgICAgICAgICAgICAgIHsgdmFsdWU6ICdJU08vSUVDIDExODAxLTIwMDIgRmlicmUgTGluaycsIGxhYmVsOiAnSVNPL0lFQyAxMTgwMS0yMDAyIEZpYnJlIExpbmsnIH0sXG4gICAgICAgICAgICAgICAgICB7IHZhbHVlOiAnSVNPL0lFQyAxMTgwMS0yMDAyIE9GLTMwMCBDSCcsIGxhYmVsOiAnSVNPL0lFQyAxMTgwMS0yMDAyIE9GLTMwMCBDSCcgfSxcbiAgICAgICAgICAgICAgICAgIHsgdmFsdWU6ICdJU08vSUVDIDExODAxLTIwMDIgT0YtNTAwIENIJywgbGFiZWw6ICdJU08vSUVDIDExODAxLTIwMDIgT0YtNTAwIENIJyB9LFxuICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogJ0lTTy9JRUMgMTE4MDEtMjAwMiBPRi0yMDAwIENIJywgbGFiZWw6ICdJU08vSUVDIDExODAxLTIwMDIgT0YtMjAwMCBDSCcgfSxcbiAgICAgICAgICAgICAgICAgIHsgdmFsdWU6ICdJU08vSUVDIDE0NzYzLTM6MjAyNCAoRHJhZnQpJywgbGFiZWw6ICdJU08vSUVDIDE0NzYzLTM6MjAyNCAoRHJhZnQpJyB9LFxuICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogJ0lTTy9JRUMgMTQ3NjMtMzoyMDE0JywgbGFiZWw6ICdJU08vSUVDIDE0NzYzLTM6MjAxNCcgfSxcbiAgICAgICAgICAgICAgICAgIHsgdmFsdWU6ICdJU08vSUVDIDE0NzYzLTMnLCBsYWJlbDogJ0lTTy9JRUMgMTQ3NjMtMycgfVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICB9LFxuICAgICAgICBPRlBfTElNSVQ6IHtcbiAgICAgICAgICAgIHRpdGxlOiAnT0ZQ5p6B6ZmQ5YC8JyxcbiAgICAgICAgICAgIGl0ZW1zOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB2YWx1ZTogJ1RJQScsXG4gICAgICAgICAgICAgICAgbGFiZWw6ICdUSUEnLFxuICAgICAgICAgICAgICAgIGNoaWxkcmVuOiBbXG4gICAgICAgICAgICAgICAgICB7IHZhbHVlOiAnQU5TSS9USUEtNTY4LjMtRScsIGxhYmVsOiAnQU5TSS9USUEtNTY4LjMtRScgfSxcbiAgICAgICAgICAgICAgICAgIHsgdmFsdWU6ICdBTlNJL1RJQS01NjguMy1FIFJMID0gMjAgZEInLCBsYWJlbDogJ0FOU0kvVElBLTU2OC4zLUUgUkwgPSAyMCBkQicgfSxcbiAgICAgICAgICAgICAgICAgIHsgdmFsdWU6ICdBTlNJL1RJQS01NjguMy1FIFJMID0gMzUgZEInLCBsYWJlbDogJ0FOU0kvVElBLTU2OC4zLUUgUkwgPSAzNSBkQicgfSxcbiAgICAgICAgICAgICAgICAgIHsgdmFsdWU6ICdBTlNJL1RJQS01NjguMy1FIFJMID0gNTUgZEInLCBsYWJlbDogJ0FOU0kvVElBLTU2OC4zLUUgUkwgPSA1NSBkQicgfVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHZhbHVlOiAnQ2hpbmEnLFxuICAgICAgICAgICAgICAgIGxhYmVsOiAn5Lit5Zu9JyxcbiAgICAgICAgICAgICAgICBjaGlsZHJlbjogW1xuICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogJ0dCL1QgNTAzMTItMjAxNiBGaWJlciBMaW5rJywgbGFiZWw6ICdHQi9UIDUwMzEyLTIwMTYgRmliZXIgTGluaycgfSxcbiAgICAgICAgICAgICAgICAgIHsgdmFsdWU6ICdHQi9UIDUwMzEyLTIwMTYgT0YtMzAwIENoJywgbGFiZWw6ICdHQi9UIDUwMzEyLTIwMTYgT0YtMzAwIENoJyB9LFxuICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogJ0dCL1QgNTAzMTItMjAxNiBPRi01MDAgQ2gnLCBsYWJlbDogJ0dCL1QgNTAzMTItMjAxNiBPRi01MDAgQ2gnIH0sXG4gICAgICAgICAgICAgICAgICB7IHZhbHVlOiAnR0IvVCA1MDMxMi0yMDE2IE9GLTIwMDAgQ2gnLCBsYWJlbDogJ0dCL1QgNTAzMTItMjAxNiBPRi0yMDAwIENoJyB9XG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdmFsdWU6ICdJU08nLFxuICAgICAgICAgICAgICAgIGxhYmVsOiAnSVNPJyxcbiAgICAgICAgICAgICAgICBjaGlsZHJlbjogW1xuICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogJ0lTTy9JRUMgMTE4MDEtMjAwMiBGaWJyZSBMaW5rJywgbGFiZWw6ICdJU08vSUVDIDExODAxLTIwMDIgRmlicmUgTGluaycgfSxcbiAgICAgICAgICAgICAgICAgIHsgdmFsdWU6ICdJU08vSUVDIDExODAxLTIwMDIgT0YtMzAwIENIJywgbGFiZWw6ICdJU08vSUVDIDExODAxLTIwMDIgT0YtMzAwIENIJyB9LFxuICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogJ0lTTy9JRUMgMTE4MDEtMjAwMiBPRi01MDAgQ0gnLCBsYWJlbDogJ0lTTy9JRUMgMTE4MDEtMjAwMiBPRi01MDAgQ0gnIH0sXG4gICAgICAgICAgICAgICAgICB7IHZhbHVlOiAnSVNPL0lFQyAxMTgwMS0yMDAyIE9GLTIwMDAgQ0gnLCBsYWJlbDogJ0lTTy9JRUMgMTE4MDEtMjAwMiBPRi0yMDAwIENIJyB9LFxuICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogJ0lTTy9JRUMgMTQ3NjMtMzoyMDI0IChEcmFmdCknLCBsYWJlbDogJ0lTTy9JRUMgMTQ3NjMtMzoyMDI0IChEcmFmdCknIH0sXG4gICAgICAgICAgICAgICAgICB7IHZhbHVlOiAnSVNPL0lFQyAxNDc2My0zOjIwMjQgUkwgPSAyMCAoRHJhZnQpJywgbGFiZWw6ICdJU08vSUVDIDE0NzYzLTM6MjAyNCBSTCA9IDIwIChEcmFmdCknIH0sXG4gICAgICAgICAgICAgICAgICB7IHZhbHVlOiAnSVNPL0lFQyAxNDc2My0zOjIwMjQgUkwgPSAzNSAoRHJhZnQpJywgbGFiZWw6ICdJU08vSUVDIDE0NzYzLTM6MjAyNCBSTCA9IDM1IChEcmFmdCknIH0sXG4gICAgICAgICAgICAgICAgICB7IHZhbHVlOiAnSVNPL0lFQyAxNDc2My0zOjIwMjQgUkwgPSA2MCAoRHJhZnQpJywgbGFiZWw6ICdJU08vSUVDIDE0NzYzLTM6MjAyNCBSTCA9IDYwIChEcmFmdCknIH0sXG4gICAgICAgICAgICAgICAgICB7IHZhbHVlOiAnSVNPL0lFQyAxNDc2My0zOjIwMTQnLCBsYWJlbDogJ0lTTy9JRUMgMTQ3NjMtMzoyMDE0JyB9LFxuICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogJ0lTTy9JRUMgMTQ3NjMtMycsIGxhYmVsOiAnSVNPL0lFQyAxNDc2My0zJyB9XG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgIH1cbiAgICB9O1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBNZW51TGlzdCgpIHtcbiAgICBjb25zdCB7IFxuICAgICAgICBuYXZpZ2F0aW9uLFxuICAgICAgICBnZXRDdXJyZW50UHJvamVjdCxcbiAgICAgICAgdXBkYXRlUHJvamVjdCxcbiAgICAgICAgbmF2aWdhdGVUbyxcbiAgICAgICAgZ29CYWNrXG4gICAgfSA9IHVzZURpc3BsYXlTdG9yZSgpO1xuXG5cblxuXG4gICAgY29uc3QgY3VycmVudFByb2plY3QgPSBnZXRDdXJyZW50UHJvamVjdCgpO1xuICAgIGNvbnN0IHsgbWVudVR5cGUsIHNlbGVjdGVkQ29uZmlnSWQgfSA9IG5hdmlnYXRpb24uY3VycmVudC5wYXJhbXM7XG4gICAgY29uc3QgW3NlbGVjdGVkUGF0aCwgc2V0U2VsZWN0ZWRQYXRoXSA9IHVzZVN0YXRlKFtdKTtcbiAgICBjb25zdCBbY3VycmVudE1lbnUsIHNldEN1cnJlbnRNZW51XSA9IHVzZVN0YXRlKG1lbnVEYXRhW21lbnVUeXBlXSk7XG5cbiAgIFxuXG4gICAgLy8g6I635Y+W5b2T5YmN6YCJ5Lit55qE6YWN572uXG4gICAgY29uc3QgY3VycmVudENvbmZpZyA9IGN1cnJlbnRQcm9qZWN0LnRlc3RDb25maWdzLmZpbmQoXG4gICAgICAgIGNvbmZpZyA9PiBjb25maWcuaWQgPT09IHNlbGVjdGVkQ29uZmlnSWRcbiAgICApO1xuXG5cblxuICAgIC8vIOWkhOeQhuiPnOWNlemAiemhuemAieaLqVxuICAgIGNvbnN0IGhhbmRsZU1lbnVTZWxlY3QgPSAoaXRlbSkgPT4ge1xuICAgICAgICBpZiAoaXRlbS5kaXNhYmxlZCkgcmV0dXJuO1xuXG4gICAgICAgIGlmIChpdGVtLmNoaWxkcmVuKSB7XG4gICAgICAgICAgICAvLyDlpoLmnpzmnInlrZDoj5zljZXvvIzmm7TmlrDot6/lvoTlkozlvZPliY3oj5zljZVcbiAgICAgICAgICAgIHNldFNlbGVjdGVkUGF0aChbLi4uc2VsZWN0ZWRQYXRoLCBpdGVtXSk7XG4gICAgICAgICAgICBzZXRDdXJyZW50TWVudShpdGVtLmNoaWxkcmVuKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIOWmguaenOaYr+acgOe7iOmAiemhue+8jOabtOaWsOmFjee9ruW5tui/lOWbnlxuICAgICAgICBsZXQgdXBkYXRlZENvbmZpZyA9IHsgLi4uY3VycmVudENvbmZpZyB9O1xuICAgICAgICBzd2l0Y2ggKG1lbnVUeXBlKSB7XG4gICAgICAgICAgICBjYXNlICdDQUJMRV9UWVBFJzpcbiAgICAgICAgICAgICAgICB1cGRhdGVkQ29uZmlnLnBhcmFtcy5jYWJsZVR5cGUgPSBpdGVtLnZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnTElNSVRfVkFMVUUnOlxuICAgICAgICAgICAgICAgIHVwZGF0ZWRDb25maWcucGFyYW1zLmxpbWl0VmFsdWUgPSBpdGVtLnZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnV0lSRV9PUkRFUic6XG4gICAgICAgICAgICAgICAgdXBkYXRlZENvbmZpZy5wYXJhbXMud2lyZU9yZGVyID0gaXRlbS52YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ0ZJQkVSX1RZUEUnOlxuICAgICAgICAgICAgICAgIHVwZGF0ZWRDb25maWcucGFyYW1zLmNhYmxlVHlwZSA9IGl0ZW0udmFsdWU7XG4gICAgICAgICAgICAgICAgaWYgKHVwZGF0ZWRDb25maWcubW9kdWxlVHlwZSA9PT0gJ2NmcCcpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZW0udmFsdWUuaW5jbHVkZXMoJ09NJykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZWRDb25maWcucGFyYW1zLmxpbWl0VmFsdWUgPSAnVElBLTU2OC4zLUUgTXVsdGltb2RlIChTVEQpJztcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZWRDb25maWcucGFyYW1zLmxpbWl0VmFsdWUgPSAnVElBLTU2OC4zLUUgU2luZ2xlbW9kZSBJU1AgKFNURCknO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnQ0ZQX0xJTUlUJzpcbiAgICAgICAgICAgICAgICB1cGRhdGVkQ29uZmlnLnBhcmFtcy5saW1pdFZhbHVlID0gaXRlbS52YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ09GUF9MSU1JVCc6XG4gICAgICAgICAgICAgICAgdXBkYXRlZENvbmZpZy5wYXJhbXMubGltaXRWYWx1ZSA9IGl0ZW0udmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdNT0RVTEUnOlxuICAgICAgICAgICAgICAgIC8vIOWmguaenOaooeWdl+exu+Wei+WPkeeUn+WPmOWMlu+8jOWujOWFqOabv+aNoumFjee9ruWvueixoVxuICAgICAgICAgICAgICAgIGlmIChjdXJyZW50Q29uZmlnLm1vZHVsZVR5cGUgIT09IGl0ZW0udmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChpdGVtLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICc4MDAwJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVkQ29uZmlnID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogY3VycmVudENvbmZpZy5pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxlVHlwZTogJzgwMDAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGVsYWJsZTogJ0RTWC04MDAwJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW1pdFZhbHVlOiAnVElBIENhdCA2IENoYW5uZWwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FibGVUeXBlOiAnQ2F0NiBVL1VUUCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXJlT3JkZXI6ICdUNTY4QidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdjZnAnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZWRDb25maWcgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBjdXJyZW50Q29uZmlnLmlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGVUeXBlOiAnY2ZwJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxlbGFibGU6ICdDZXJ0aUZpYmVyIFByby1RdWFkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW1pdFZhbHVlOiAnVElBLTU2OC4zLUUgTXVsdGltb2RlIChTVEQpJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhYmxlVHlwZTogJ09NMyBNdWx0aW1vZGUgNTAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmSnVtcGVyOiAnMScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGxpY2VDb3VudDogJzAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ubmVjdG9yQ291bnQ6ICcyJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ29mcCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlZENvbmZpZyA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGN1cnJlbnRDb25maWcuaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZVR5cGU6ICdvZnAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGVsYWJsZTogJ09wdGlGaWJlciBQcm8tUXVhZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGltaXRWYWx1ZTogJ0dlbmVyYWwgRmliZXIgUkwgPSAzNSBkQicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWJsZVR5cGU6ICdPTTMgTXVsdGltb2RlIDUwJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHVwZGF0ZWRDb25maWcubW9kdWxlVHlwZSA9IGl0ZW0udmFsdWU7XG4gICAgICAgICAgICAgICAgICAgIHVwZGF0ZWRDb25maWcubW9kdWxlbGFibGUgPSBpdGVtLmxhYmVsO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIOabtOaWsOmhueebruaVsOaNrlxuICAgICAgICBjb25zdCB1cGRhdGVkQ29uZmlncyA9IGN1cnJlbnRQcm9qZWN0LnRlc3RDb25maWdzLm1hcChjb25maWcgPT4ge1xuICAgICAgICAgICAgaWYgKGNvbmZpZy5pZCA9PT0gc2VsZWN0ZWRDb25maWdJZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB1cGRhdGVkQ29uZmlnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGNvbmZpZztcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3QgcHJvamVjdEluZGV4ID0gdXNlRGlzcGxheVN0b3JlLmdldFN0YXRlKCkuc2VsZWN0ZWRJbmRleGVzLnByb2plY3RJbmRleDtcbiAgICAgICAgdXBkYXRlUHJvamVjdChwcm9qZWN0SW5kZXgsIHsgdGVzdENvbmZpZ3M6IHVwZGF0ZWRDb25maWdzIH0pO1xuXG4gICAgICAgIC8vIOi/lOWbnuS4iuS4gOmhtVxuICAgICAgICBnb0JhY2soKTtcbiAgICB9O1xuXG4gICAgLy8g5aSE55CG6L+U5Zue5LiK5LiA57qnXG4gICAgY29uc3QgaGFuZGxlQmFjayA9ICgpID0+IHtcbiAgICAgICAgaWYgKHNlbGVjdGVkUGF0aC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBjb25zdCBuZXdQYXRoID0gc2VsZWN0ZWRQYXRoLnNsaWNlKDAsIC0xKTtcbiAgICAgICAgICAgIHNldFNlbGVjdGVkUGF0aChuZXdQYXRoKTtcbiAgICAgICAgICAgIGlmIChuZXdQYXRoLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHNldEN1cnJlbnRNZW51KG1lbnVEYXRhW21lbnVUeXBlXSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGxldCBjdXJyZW50ID0gbWVudURhdGFbbWVudVR5cGVdO1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBuZXdQYXRoKSB7XG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnQgPSBjdXJyZW50Lml0ZW1zLmZpbmQoaSA9PiBpLnZhbHVlID09PSBpdGVtLnZhbHVlKS5jaGlsZHJlbjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgc2V0Q3VycmVudE1lbnUoY3VycmVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBnb0JhY2soKTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICAvLyDmuLLmn5Poj5zljZXpgInpoblcbiAgICBjb25zdCByZW5kZXJNZW51T3B0aW9ucyA9ICgpID0+IHtcbiAgICAgICAgaWYgKCFjdXJyZW50TWVudSkgcmV0dXJuIG51bGw7XG5cbiAgICAgICAgLy8g5aaC5p6c5piv5a2Q6I+c5Y2V77yM55u05o6l5riy5p+T5a2Q6I+c5Y2V6aG5XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGN1cnJlbnRNZW51KSkge1xuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctZnVsbCBoLVs0OTBweF1cIj5cbiAgICAgICAgICAgICAgICAgICAge2N1cnJlbnRNZW51Lm1hcCgoaXRlbSkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17aXRlbS52YWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2BoLVs2MHB4XSB3LWZ1bGwgYmctZ3JhZGllbnQtdG8tYiBmcm9tLVsjZTZlM2U2XSB0by1bIzdiNzk3Yl0gcC00IHNoYWRvdy1sZyBmbGV4IGl0ZW1zLWNlbnRlciAke1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLmRpc2FibGVkID8gJ29wYWNpdHktNTAgY3Vyc29yLW5vdC1hbGxvd2VkJyA6ICdjdXJzb3ItcG9pbnRlcidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICR7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRDb25maWcucGFyYW1zLmNhYmxlVHlwZSA9PT0gaXRlbS52YWx1ZSA/ICdiZy1ibHVlLTUwMCcgOiAnJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1gfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IGhhbmRsZU1lbnVTZWxlY3QoaXRlbSl9XG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LWJsYWNrIHRleHQtc21cIj57aXRlbS5sYWJlbH08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyDlpoLmnpzmmK/lr7nosaHlvaLlvI/nmoTlrZDoj5zljZXvvIjlpoIgTElNSVRfVkFMVUUg55qE5LqM57qn6I+c5Y2V77yJXG4gICAgICAgIGlmICh0eXBlb2YgY3VycmVudE1lbnUgPT09ICdvYmplY3QnICYmICFjdXJyZW50TWVudS5pdGVtcykge1xuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctZnVsbCBoLVs0OTBweF1cIj5cbiAgICAgICAgICAgICAgICAgICAge09iamVjdC5lbnRyaWVzKGN1cnJlbnRNZW51KS5tYXAoKFtrZXksIGl0ZW1dKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtrZXl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgaC1bNjBweF0gdy1mdWxsIGJnLWdyYWRpZW50LXRvLWIgZnJvbS1bI2U2ZTNlNl0gdG8tWyM3Yjc5N2JdIHAtNCBzaGFkb3ctbGcgZmxleCBpdGVtcy1jZW50ZXIgY3Vyc29yLXBvaW50ZXIgJHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudENvbmZpZy5wYXJhbXMuY2FibGVUeXBlID09PSBpdGVtLnZhbHVlID8gJ2JnLWJsdWUtNTAwJyA6ICcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfWB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gaGFuZGxlTWVudVNlbGVjdChpdGVtKX1cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtYmxhY2sgdGV4dC1zbVwiPntpdGVtLmxhYmVsfTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIOWmguaenOaYr+S4u+iPnOWNle+8jOa4suafk+S4u+iPnOWNlemhuVxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LWZ1bGwgaC1bNDkwcHhdXCI+XG4gICAgICAgICAgICAgICAge2N1cnJlbnRNZW51Lml0ZW1zLm1hcCgoaXRlbSkgPT4gKFxuICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk9e2l0ZW0udmFsdWV9XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2BoLVs2MHB4XSB3LWZ1bGwgYmctZ3JhZGllbnQtdG8tYiBmcm9tLVsjZTZlM2U2XSB0by1bIzdiNzk3Yl0gcC00IHNoYWRvdy1sZyBmbGV4IGl0ZW1zLWNlbnRlciAke1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0uZGlzYWJsZWQgPyAnb3BhY2l0eS01MCBjdXJzb3Itbm90LWFsbG93ZWQnIDogJ2N1cnNvci1wb2ludGVyJ1xuICAgICAgICAgICAgICAgICAgICAgICAgfSAke1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRDb25maWcucGFyYW1zLmNhYmxlVHlwZSA9PT0gaXRlbS52YWx1ZSA/ICdiZy1ibHVlLTUwMCcgOiAnJ1xuICAgICAgICAgICAgICAgICAgICAgICAgfWB9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBoYW5kbGVNZW51U2VsZWN0KGl0ZW0pfVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtYmxhY2sgdGV4dC1zbVwiPntpdGVtLmxhYmVsfTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICApO1xuICAgIH07XG5cbiAgICAvLyDojrflj5blvZPliY3oj5zljZXmoIfpopjvvIjov5Tlm54gbnVsbCDooajnpLrkuI3mmL7npLrvvIlcbiAgICBjb25zdCBnZXRDdXJyZW50VGl0bGUgPSAoKSA9PiB7XG4gICAgICAgIGlmIChzZWxlY3RlZFBhdGgubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIGNvbnN0IHN1YlRpdGxlID0gbWVudURhdGFbbWVudVR5cGVdPy5zdWJUaXRsZTtcbiAgICAgICAgcmV0dXJuIHN1YlRpdGxlID8gc3ViVGl0bGUgOiBudWxsOyAvLyDlpoLmnpwgc3ViVGl0bGUg5Li656m65YiZ6L+U5ZueIG51bGxcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc2VsZWN0ZWRQYXRoW3NlbGVjdGVkUGF0aC5sZW5ndGggLSAxXS5sYWJlbDtcbiAgICB9O1xuICAgIFxuICAgIHJldHVybiAoXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy1mdWxsIGgtZnVsbCBmbGV4IGZsZXgtY29sIG92ZXJmbG93LWhpZGRlblwiPlxuICAgICAgICA8U3RhdHVzQmFyIC8+XG4gICAgICAgIDxUaXRsZUJhciBcbiAgICAgICAgICAgIHRpdGxlPXttZW51RGF0YVttZW51VHlwZV0udGl0bGV9XG4gICAgICAgICAgICBiYWNrVG89e3NlbGVjdGVkUGF0aC5sZW5ndGggPiAwID8gJ21lbnVsaXN0JyA6IG5hdmlnYXRpb24ucHJldmlvdXM/Lm5hbWV9IFxuICAgICAgICAgICAgdmlldz17c2VsZWN0ZWRQYXRoLmxlbmd0aCA+IDAgPyAnc2V0dXAnIDogbmF2aWdhdGlvbi5wcmV2aW91cz8udmlld31cbiAgICAgICAgICAgIG9uQmFjaz17aGFuZGxlQmFja31cbiAgICAgICAgLz5cbiAgICAgICAgey8qIOWPquacieW9kyBnZXRDdXJyZW50VGl0bGUoKSDov5Tlm57lgLzkuI3kuLogbnVsbCDml7bmiY3muLLmn5MgU3ViVGl0bGVCYXIgKi99XG4gICAgICAgIHtnZXRDdXJyZW50VGl0bGUoKSAhPT0gbnVsbCAmJiAoXG4gICAgICAgICAgICA8U3ViVGl0bGVCYXIgdGl0bGU9e2dldEN1cnJlbnRUaXRsZSgpfSAvPlxuICAgICAgICApfVxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXgtMSBiZy1bIzMwMzA0MF1cIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaC1mdWxsIG92ZXJmbG93LXktYXV0byBbJjo6LXdlYmtpdC1zY3JvbGxiYXJdOmhpZGRlblwiPlxuICAgICAgICAgICAge3JlbmRlck1lbnVPcHRpb25zKCl9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICk7XG59Il0sIm5hbWVzIjpbIlJlYWN0IiwidXNlU3RhdGUiLCJ1c2VFZmZlY3QiLCJTdGF0dXNCYXIiLCJUaXRsZUJhciIsIlN1YlRpdGxlQmFyIiwidXNlRGlzcGxheVN0b3JlIiwibWVudURhdGEiLCJNT0RVTEUiLCJ0aXRsZSIsIml0ZW1zIiwidmFsdWUiLCJsYWJlbCIsIkNBQkxFX1RZUEUiLCJzdWJUaXRsZSIsImRpc2FibGVkIiwiY2hpbGRyZW4iLCJMSU1JVF9WQUxVRSIsIkNhdDZBIiwiQ2F0NiIsIkNhdDVlIiwiV0lSRV9PUkRFUiIsIkZJQkVSX1RZUEUiLCJDRlBfTElNSVQiLCJPRlBfTElNSVQiLCJNZW51TGlzdCIsIm5hdmlnYXRpb24iLCJnZXRDdXJyZW50UHJvamVjdCIsInVwZGF0ZVByb2plY3QiLCJuYXZpZ2F0ZVRvIiwiZ29CYWNrIiwiY3VycmVudFByb2plY3QiLCJtZW51VHlwZSIsInNlbGVjdGVkQ29uZmlnSWQiLCJjdXJyZW50IiwicGFyYW1zIiwic2VsZWN0ZWRQYXRoIiwic2V0U2VsZWN0ZWRQYXRoIiwiY3VycmVudE1lbnUiLCJzZXRDdXJyZW50TWVudSIsImN1cnJlbnRDb25maWciLCJ0ZXN0Q29uZmlncyIsImZpbmQiLCJjb25maWciLCJpZCIsImhhbmRsZU1lbnVTZWxlY3QiLCJpdGVtIiwidXBkYXRlZENvbmZpZyIsImNhYmxlVHlwZSIsImxpbWl0VmFsdWUiLCJ3aXJlT3JkZXIiLCJtb2R1bGVUeXBlIiwiaW5jbHVkZXMiLCJtb2R1bGVsYWJsZSIsInJlZkp1bXBlciIsInNwbGljZUNvdW50IiwiY29ubmVjdG9yQ291bnQiLCJ1cGRhdGVkQ29uZmlncyIsIm1hcCIsInByb2plY3RJbmRleCIsImdldFN0YXRlIiwic2VsZWN0ZWRJbmRleGVzIiwiaGFuZGxlQmFjayIsImxlbmd0aCIsIm5ld1BhdGgiLCJzbGljZSIsImkiLCJyZW5kZXJNZW51T3B0aW9ucyIsIkFycmF5IiwiaXNBcnJheSIsImRpdiIsImNsYXNzTmFtZSIsIm9uQ2xpY2siLCJPYmplY3QiLCJlbnRyaWVzIiwia2V5IiwiZ2V0Q3VycmVudFRpdGxlIiwiYmFja1RvIiwicHJldmlvdXMiLCJuYW1lIiwidmlldyIsIm9uQmFjayJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(pages-dir-node)/./src/components/dsxpage/fluke/MenuList.js\n"); /***/ }), /***/ "(pages-dir-node)/./src/components/dsxpage/fluke/Operators.js": /*!***************************************************!*\ !*** ./src/components/dsxpage/fluke/Operators.js ***! \***************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; eval("__webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ Operators)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"react/jsx-dev-runtime\");\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 */ \"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _components_lib_StatusBar__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/components/lib/StatusBar */ \"(pages-dir-node)/./src/components/lib/StatusBar.js\");\n/* harmony import */ var _components_lib_TitleBar__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/components/lib/TitleBar */ \"(pages-dir-node)/./src/components/lib/TitleBar.js\");\n/* harmony import */ var _components_lib_Keyboard__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/components/lib/Keyboard */ \"(pages-dir-node)/./src/components/lib/Keyboard.js\");\n/* harmony import */ var _store_displayStore__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/store/displayStore */ \"(pages-dir-node)/./src/store/displayStore.js\");\nvar __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_components_lib_StatusBar__WEBPACK_IMPORTED_MODULE_2__, _components_lib_TitleBar__WEBPACK_IMPORTED_MODULE_3__, _components_lib_Keyboard__WEBPACK_IMPORTED_MODULE_4__, _store_displayStore__WEBPACK_IMPORTED_MODULE_5__]);\n([_components_lib_StatusBar__WEBPACK_IMPORTED_MODULE_2__, _components_lib_TitleBar__WEBPACK_IMPORTED_MODULE_3__, _components_lib_Keyboard__WEBPACK_IMPORTED_MODULE_4__, _store_displayStore__WEBPACK_IMPORTED_MODULE_5__] = __webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__);\n\n\n\n\n\n\nfunction Operators() {\n const [inputValue, setInputValue] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)('');\n const [cursorPosition, setCursorPosition] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(0);\n const [selectedOperators, setSelectedOperators] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)([]);\n const { getCurrentProject, setSelectedIndexes, updateCurrentView, addOperator, updateProject, goBack, setToastMessage } = (0,_store_displayStore__WEBPACK_IMPORTED_MODULE_5__[\"default\"])();\n const currentProject = getCurrentProject();\n const { view } = _store_displayStore__WEBPACK_IMPORTED_MODULE_5__[\"default\"].getState().navigation.current;\n const handleDeleteOperators = ()=>{\n if (selectedOperators.length === currentProject.operators.length) {\n setToastMessage('至少需要保留一个操作员');\n return;\n }\n // 过滤掉被选中的操作员\n const newOperators = currentProject.operators.filter((operator)=>!selectedOperators.includes(operator.id));\n // 更新项目\n const currentIndex = _store_displayStore__WEBPACK_IMPORTED_MODULE_5__[\"default\"].getState().selectedIndexes.projectIndex;\n updateProject(currentIndex, {\n operators: newOperators\n });\n // 如果当前选中的操作员被删除了,重置选中的操作员索引为0\n if (selectedOperators.includes(currentProject.operators[_store_displayStore__WEBPACK_IMPORTED_MODULE_5__[\"default\"].getState().selectedIndexes.operatorIndex].id)) {\n setSelectedIndexes({\n operatorIndex: 0\n });\n }\n // 清空选中列表并返回main视图\n setSelectedOperators([]);\n updateCurrentView('main');\n };\n const renderContent = ()=>{\n switch(view){\n case 'main':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 bg-[#303040] p-0\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-y-0\",\n children: currentProject.operators.map((operator, index)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `h-[50px] p-4 shadow-lg flex items-center cursor-pointer ${index === _store_displayStore__WEBPACK_IMPORTED_MODULE_5__[\"default\"].getState().selectedIndexes.operatorIndex ? 'bg-blue-500' : 'bg-gradient-to-b from-[#e6e3e6] to-[#7b797b]'}`,\n onClick: ()=>{\n setSelectedIndexes({\n operatorIndex: index\n });\n goBack();\n },\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black text-sm\",\n children: operator.name\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Operators.js\",\n lineNumber: 64,\n columnNumber: 37\n }, this)\n }, operator.id, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Operators.js\",\n lineNumber: 56,\n columnNumber: 33\n }, this))\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Operators.js\",\n lineNumber: 54,\n columnNumber: 25\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Operators.js\",\n lineNumber: 53,\n columnNumber: 21\n }, this);\n case 'delete':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 bg-[#303040] p-0\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-y-0\",\n children: currentProject.operators.map((operator)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[50px] p-4 shadow-lg flex items-center justify-between bg-gradient-to-b from-[#e6e3e6] to-[#7b797b]\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black text-sm\",\n children: operator.name\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Operators.js\",\n lineNumber: 80,\n columnNumber: 37\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"checkbox\",\n className: \"w-4 h-4\",\n checked: selectedOperators.includes(operator.id),\n onChange: (e)=>{\n if (e.target.checked) {\n setSelectedOperators([\n ...selectedOperators,\n operator.id\n ]);\n } else {\n setSelectedOperators(selectedOperators.filter((id)=>id !== operator.id));\n }\n }\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Operators.js\",\n lineNumber: 81,\n columnNumber: 37\n }, this)\n ]\n }, operator.id, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Operators.js\",\n lineNumber: 76,\n columnNumber: 33\n }, this))\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Operators.js\",\n lineNumber: 74,\n columnNumber: 25\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Operators.js\",\n lineNumber: 73,\n columnNumber: 21\n }, this);\n case 'new':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 bg-[#303040] p-4 flex flex-col\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"relative\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"text\",\n className: \"w-full h-[50px] bg-[#ffffe1] rounded-sm p-4 text-black\",\n value: inputValue,\n placeholder: \"请输入操作员名称\",\n onChange: (e)=>{\n setInputValue(e.target.value);\n setCursorPosition(e.target.selectionStart);\n },\n onClick: (e)=>{\n setCursorPosition(e.target.selectionStart);\n },\n onFocus: (e)=>{\n // 保存光标位置\n const cursorPosition = e.target.selectionStart;\n e.target.setSelectionRange(cursorPosition, cursorPosition);\n }\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Operators.js\",\n lineNumber: 103,\n columnNumber: 29\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Operators.js\",\n lineNumber: 102,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_Keyboard__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n value: inputValue,\n cursorPosition: cursorPosition,\n onChange: (newValue, newPosition)=>{\n setInputValue(newValue);\n setCursorPosition(newPosition);\n },\n onComplete: ()=>{\n if (inputValue.trim()) {\n const newOperator = {\n id: Math.random().toString(36).substr(2, 9),\n name: inputValue.trim()\n };\n addOperator(newOperator);\n setInputValue('');\n updateCurrentView('main');\n }\n }\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Operators.js\",\n lineNumber: 122,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Operators.js\",\n lineNumber: 101,\n columnNumber: 21\n }, this);\n default:\n return null;\n }\n };\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full h-full flex flex-col overflow-hidden\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_StatusBar__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {}, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Operators.js\",\n lineNumber: 151,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_TitleBar__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n title: view === 'main' ? \"操作员\" : view === 'new' ? \"新操作员\" : \"删除操作员\",\n backTo: view === 'main' ? goBack : _store_displayStore__WEBPACK_IMPORTED_MODULE_5__[\"default\"].getState().navigation.previous?.name || 'home',\n view: _store_displayStore__WEBPACK_IMPORTED_MODULE_5__[\"default\"].getState().navigation.previous?.view || 'main'\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Operators.js\",\n lineNumber: 152,\n columnNumber: 13\n }, this),\n renderContent(),\n view === 'main' && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[60px] bg-[#303030] flex items-center justify-between px-8\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>updateCurrentView('delete'),\n className: \"w-[100px] h-[40px] bg-gradient-to-b from-[#656565] to-[#313431] rounded-sm flex items-center justify-center text-white font-bold shadow-lg\",\n children: \"编辑列表\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Operators.js\",\n lineNumber: 164,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>updateCurrentView('new'),\n className: \"w-[100px] h-[40px] bg-gradient-to-b from-[#656565] to-[#313431] rounded-sm flex items-center justify-center text-white font-bold shadow-lg\",\n children: \"新操作员\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Operators.js\",\n lineNumber: 170,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Operators.js\",\n lineNumber: 163,\n columnNumber: 17\n }, this),\n view === 'delete' && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[60px] bg-[#303030] flex items-center justify-end px-8\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: handleDeleteOperators,\n className: \"w-[100px] h-[40px] bg-gradient-to-b from-[#656565] to-[#313431] rounded-sm flex items-center justify-center text-white font-bold shadow-lg\",\n children: \"删除\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Operators.js\",\n lineNumber: 180,\n columnNumber: 21\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Operators.js\",\n lineNumber: 179,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Operators.js\",\n lineNumber: 150,\n columnNumber: 9\n }, this);\n}\n\n__webpack_async_result__();\n} catch(e) { __webpack_async_result__(e); } });//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHBhZ2VzLWRpci1ub2RlKS8uL3NyYy9jb21wb25lbnRzL2RzeHBhZ2UvZmx1a2UvT3BlcmF0b3JzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBd0M7QUFDVztBQUNGO0FBQ0E7QUFDRTtBQUVwQyxTQUFTTTtJQUNwQixNQUFNLENBQUNDLFlBQVlDLGNBQWMsR0FBR1AsK0NBQVFBLENBQUM7SUFDN0MsTUFBTSxDQUFDUSxnQkFBZ0JDLGtCQUFrQixHQUFHVCwrQ0FBUUEsQ0FBQztJQUNyRCxNQUFNLENBQUNVLG1CQUFtQkMscUJBQXFCLEdBQUdYLCtDQUFRQSxDQUFDLEVBQUU7SUFDN0QsTUFBTSxFQUNGWSxpQkFBaUIsRUFDakJDLGtCQUFrQixFQUNsQkMsaUJBQWlCLEVBQ2pCQyxXQUFXLEVBQ1hDLGFBQWEsRUFDYkMsTUFBTSxFQUNOQyxlQUFlLEVBQ2xCLEdBQUdkLCtEQUFlQTtJQUVuQixNQUFNZSxpQkFBaUJQO0lBQ3ZCLE1BQU0sRUFBRVEsSUFBSSxFQUFFLEdBQUdoQixvRUFBd0IsR0FBR2tCLFVBQVUsQ0FBQ0MsT0FBTztJQUU5RCxNQUFNQyx3QkFBd0I7UUFDMUIsSUFBSWQsa0JBQWtCZSxNQUFNLEtBQUtOLGVBQWVPLFNBQVMsQ0FBQ0QsTUFBTSxFQUFFO1lBQzlEUCxnQkFBZ0I7WUFDaEI7UUFDSjtRQUVBLGFBQWE7UUFDYixNQUFNUyxlQUFlUixlQUFlTyxTQUFTLENBQUNFLE1BQU0sQ0FDaERDLENBQUFBLFdBQVksQ0FBQ25CLGtCQUFrQm9CLFFBQVEsQ0FBQ0QsU0FBU0UsRUFBRTtRQUd2RCxPQUFPO1FBQ1AsTUFBTUMsZUFBZTVCLG9FQUF3QixHQUFHNkIsZUFBZSxDQUFDQyxZQUFZO1FBQzVFbEIsY0FBY2dCLGNBQWM7WUFBRU4sV0FBV0M7UUFBYTtRQUV0RCw4QkFBOEI7UUFDOUIsSUFBSWpCLGtCQUFrQm9CLFFBQVEsQ0FBQ1gsZUFBZU8sU0FBUyxDQUFDdEIsb0VBQXdCLEdBQUc2QixlQUFlLENBQUNFLGFBQWEsQ0FB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ZjtJQUNKO0lBRUEscUJBQ0ksOERBQUN1QjtRQUFJQyxXQUFVOzswQkFDWCw4REFBQ3JDLGlFQUFTQTs7Ozs7MEJBQ1YsOERBQUNDLGdFQUFRQTtnQkFDTDZELE9BQ0kzQyxTQUFTLFNBQVMsUUFDbEJBLFNBQVMsUUFBUSxTQUNqQjtnQkFFSjRDLFFBQVE1QyxTQUFTLFNBQVNILFNBQVNiLG9FQUF3QixHQUFHa0IsVUFBVSxDQUFDMkMsUUFBUSxFQUFFdkIsUUFBUTtnQkFDM0Z0QixNQUFNaEIsb0VBQXdCLEdBQUdrQixVQUFVLENBQUMyQyxRQUFRLEVBQUU3QyxRQUFROzs7Ozs7WUFFakVnQjtZQUNBaEIsU0FBUyx3QkFDTiw4REFBQ2lCO2dCQUFJQyxXQUFVOztrQ0FDWCw4REFBQzRCO3dCQUNHekIsU0FBUyxJQUFNM0Isa0JBQWtCO3dCQUNqQ3dCLFdBQVU7a0NBQ2I7Ozs7OztrQ0FHRCw4REFBQzRCO3dCQUNHekIsU0FBUyxJQUFNM0Isa0JBQWtCO3dCQUNqQ3dCLFdBQVU7a0NBQ2I7Ozs7Ozs7Ozs7OztZQUtSbEIsU0FBUywwQkFDTiw4REFBQ2lCO2dCQUFJQyxXQUFVOzBCQUNYLDRFQUFDNEI7b0JBQ0d6QixTQUFTakI7b0JBQ1RjLFdBQVU7OEJBQ2I7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBT3JCIiwic291cmNlcyI6WyIvb3B0L2Rldi9lc3QtZHN4L3NyYy9jb21wb25lbnRzL2RzeHBhZ2UvZmx1a2UvT3BlcmF0b3JzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcclxuaW1wb3J0IFN0YXR1c0JhciBmcm9tICdAL2NvbXBvbmVudHMvbGliL1N0YXR1c0Jhcic7XHJcbmltcG9ydCBUaXRsZUJhciBmcm9tICdAL2NvbXBvbmVudHMvbGliL1RpdGxlQmFyJztcclxuaW1wb3J0IEtleWJvYXJkIGZyb20gJ0AvY29tcG9uZW50cy9saWIvS2V5Ym9hcmQnO1xyXG5pbXBvcnQgdXNlRGlzcGxheVN0b3JlIGZyb20gJ0Avc3RvcmUvZGlzcGxheVN0b3JlJztcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIE9wZXJhdG9ycygpIHtcclxuICAgIGNvbnN0IFtpbnB1dFZhbHVlLCBzZXRJbnB1dFZhbHVlXSA9IHVzZVN0YXRlKCcnKTtcclxuICAgIGNvbnN0IFtjdXJzb3JQb3NpdGlvbiwgc2V0Q3Vyc29yUG9zaXRpb25dID0gdXNlU3RhdGUoMCk7XHJcbiAgICBjb25zdCBbc2VsZWN0ZWRPcGVyYXRvcnMsIHNldFNlbGVjdGVkT3BlcmF0b3JzXSA9IHVzZVN0YXRlKFtdKTtcclxuICAgIGNvbnN0IHtcclxuICAgICAgICBnZXRDdXJyZW50UHJvamVjdCxcclxuICAgICAgICBzZXRTZWxlY3RlZEluZGV4ZXMsXHJcbiAgICAgICAgdXBkYXRlQ3VycmVudFZpZXcsXHJcbiAgICAgICAgYWRkT3BlcmF0b3IsXHJcbiAgICAgICAgdXBkYXRlUHJvamVjdCxcclxuICAgICAgICBnb0JhY2ssXHJcbiAgICAgICAgc2V0VG9hc3RNZXNzYWdlXHJcbiAgICB9ID0gdXNlRGlzcGxheVN0b3JlKCk7XHJcblxyXG4gICAgY29uc3QgY3VycmVudFByb2plY3QgPSBnZXRDdXJyZW50UHJvamVjdCgpO1xyXG4gICAgY29uc3QgeyB2aWV3IH0gPSB1c2VEaXNwbGF5U3RvcmUuZ2V0U3RhdGUoKS5uYXZpZ2F0aW9uLmN1cnJlbnQ7XHJcblxyXG4gICAgY29uc3QgaGFuZGxlRGVsZXRlT3BlcmF0b3JzID0gKCkgPT4ge1xyXG4gICAgICAgIGlmIChzZWxlY3RlZE9wZXJhdG9ycy5sZW5ndGggPT09IGN1cnJlbnRQcm9qZWN0Lm9wZXJhdG9ycy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgc2V0VG9hc3RNZXNzYWdlKCfoh7PlsJHpnIDopoHkv53nlZnkuIDkuKrmk43kvZzlkZgnKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBcclxuICAgICAgICAvLyDov4fmu6TmjonooqvpgInkuK3nmoTmk43kvZzlkZhcclxuICAgICAgICBjb25zdCBuZXdPcGVyYXRvcnMgPSBjdXJyZW50UHJvamVjdC5vcGVyYXRvcnMuZmlsdGVyKFxyXG4gICAgICAgICAgICBvcGVyYXRvciA9PiAhc2VsZWN0ZWRPcGVyYXRvcnMuaW5jbHVkZXMob3BlcmF0b3IuaWQpXHJcbiAgICAgICAgKTtcclxuICAgICAgICBcclxuICAgICAgICAvLyDmm7TmlrDpobnnm65cclxuICAgICAgICBjb25zdCBjdXJyZW50SW5kZXggPSB1c2VEaXNwbGF5U3RvcmUuZ2V0U3RhdGUoKS5zZWxlY3RlZEluZGV4ZXMucHJvamVjdEluZGV4O1xyXG4gICAgICAgIHVwZGF0ZVByb2plY3QoY3VycmVudEluZGV4LCB7IG9wZXJhdG9yczogbmV3T3BlcmF0b3JzIH0pO1xyXG4gICAgICAgIFxyXG4gICAgICAgIC8vIOWmguaenOW9k+WJjemAieS4reeahOaTjeS9nOWRmOiiq+WIoOmZpOS6hu+8jOmHjee9rumAieS4reeahOaTjeS9nOWRmOe0ouW8leS4ujBcclxuICAgICAgICBpZiAoc2VsZWN0ZWRPcGVyYXRvcnMuaW5jbHVkZXMoY3VycmVudFByb2plY3Qub3BlcmF0b3JzW3VzZURpc3BsYXlTdG9yZS5nZXRTdGF0ZSgpLnNlbGVjdGVkSW5kZXhlcy5vcGVyYXRvckluZGV4XS5pZCkpIHtcclxuICAgICAgICAgICAgc2V0U2VsZWN0ZWRJbmRleGVzKHsgb3BlcmF0b3JJbmRleDogMCB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICAgICAgLy8g5riF56m66YCJ5Lit5YiX6KGo5bm26L+U5ZuebWFpbuinhuWbvlxyXG4gICAgICAgIHNldFNlbGVjdGVkT3BlcmF0b3JzKFtdKTtcclxuICAgICAgICB1cGRhdGVDdXJyZW50VmlldygnbWFpbicpO1xyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCByZW5kZXJDb250ZW50ID0gKCkgPT4ge1xyXG4gICAgICAgIHN3aXRjaCAodmlldykge1xyXG4gICAgICAgICAgICBjYXNlICdtYWluJzpcclxuICAgICAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4LTEgYmctWyMzMDMwNDBdIHAtMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInNwYWNlLXktMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2N1cnJlbnRQcm9qZWN0Lm9wZXJhdG9ycy5tYXAoKG9wZXJhdG9yLCBpbmRleCkgPT4gKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17b3BlcmF0b3IuaWR9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17YGgtWzUwcHhdIHAtNCBzaGFkb3ctbGcgZmxleCBpdGVtcy1jZW50ZXIgY3Vyc29yLXBvaW50ZXIgJHtpbmRleCA9PT0gdXNlRGlzcGxheVN0b3JlLmdldFN0YXRlKCkuc2VsZWN0ZWRJbmRleGVzLm9wZXJhdG9ySW5kZXggPyAnYmctYmx1ZS01MDAnIDogJ2JnLWdyYWRpZW50LXRvLWIgZnJvbS1bI2U2ZTNlNl0gdG8tWyM3Yjc5N2JdJ31gfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTZWxlY3RlZEluZGV4ZXMoeyBvcGVyYXRvckluZGV4OiBpbmRleCB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvQmFjaygpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LWJsYWNrIHRleHQtc21cIj57b3BlcmF0b3IubmFtZX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICk7XHJcblxyXG4gICAgICAgICAgICBjYXNlICdkZWxldGUnOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXgtMSBiZy1bIzMwMzA0MF0gcC0wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwic3BhY2UteS0wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y3VycmVudFByb2plY3Qub3BlcmF0b3JzLm1hcCgob3BlcmF0b3IpID0+IChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e29wZXJhdG9yLmlkfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJoLVs1MHB4XSBwLTQgc2hhZG93LWxnIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBiZy1ncmFkaWVudC10by1iIGZyb20tWyNlNmUzZTZdIHRvLVsjN2I3OTdiXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtYmxhY2sgdGV4dC1zbVwiPntvcGVyYXRvci5uYW1lfTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ3LTQgaC00XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e3NlbGVjdGVkT3BlcmF0b3JzLmluY2x1ZGVzKG9wZXJhdG9yLmlkKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlLnRhcmdldC5jaGVja2VkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFNlbGVjdGVkT3BlcmF0b3JzKFsuLi5zZWxlY3RlZE9wZXJhdG9ycywgb3BlcmF0b3IuaWRdKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTZWxlY3RlZE9wZXJhdG9ycyhzZWxlY3RlZE9wZXJhdG9ycy5maWx0ZXIoaWQgPT4gaWQgIT09IG9wZXJhdG9yLmlkKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICk7XHJcblxyXG4gICAgICAgICAgICBjYXNlICduZXcnOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXgtMSBiZy1bIzMwMzA0MF0gcC00IGZsZXggZmxleC1jb2xcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyZWxhdGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ3LWZ1bGwgaC1bNTBweF0gYmctWyNmZmZmZTFdIHJvdW5kZWQtc20gcC00IHRleHQtYmxhY2tcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXtpbnB1dFZhbHVlfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwi6K+36L6T5YWl5pON5L2c5ZGY5ZCN56ewXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0SW5wdXRWYWx1ZShlLnRhcmdldC52YWx1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEN1cnNvclBvc2l0aW9uKGUudGFyZ2V0LnNlbGVjdGlvblN0YXJ0KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eyhlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEN1cnNvclBvc2l0aW9uKGUudGFyZ2V0LnNlbGVjdGlvblN0YXJ0KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uRm9jdXM9eyhlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIOS/neWtmOWFieagh+S9jee9rlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjdXJzb3JQb3NpdGlvbiA9IGUudGFyZ2V0LnNlbGVjdGlvblN0YXJ0O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnRhcmdldC5zZXRTZWxlY3Rpb25SYW5nZShjdXJzb3JQb3NpdGlvbiwgY3Vyc29yUG9zaXRpb24pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPEtleWJvYXJkIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2lucHV0VmFsdWV9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJzb3JQb3NpdGlvbj17Y3Vyc29yUG9zaXRpb259XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KG5ld1ZhbHVlLCBuZXdQb3NpdGlvbikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldElucHV0VmFsdWUobmV3VmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEN1cnNvclBvc2l0aW9uKG5ld1Bvc2l0aW9uKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNvbXBsZXRlPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0VmFsdWUudHJpbSgpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5ld09wZXJhdG9yID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IE1hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnN1YnN0cigyLCA5KSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGlucHV0VmFsdWUudHJpbSgpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZE9wZXJhdG9yKG5ld09wZXJhdG9yKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0SW5wdXRWYWx1ZSgnJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZUN1cnJlbnRWaWV3KCdtYWluJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICk7XHJcblxyXG4gICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICByZXR1cm4gKFxyXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy1mdWxsIGgtZnVsbCBmbGV4IGZsZXgtY29sIG92ZXJmbG93LWhpZGRlblwiPlxyXG4gICAgICAgICAgICA8U3RhdHVzQmFyIC8+XHJcbiAgICAgICAgICAgIDxUaXRsZUJhciBcclxuICAgICAgICAgICAgICAgIHRpdGxlPXtcclxuICAgICAgICAgICAgICAgICAgICB2aWV3ID09PSAnbWFpbicgPyBcIuaTjeS9nOWRmFwiIDogXHJcbiAgICAgICAgICAgICAgICAgICAgdmlldyA9PT0gJ25ldycgPyBcIuaWsOaTjeS9nOWRmFwiIDogXHJcbiAgICAgICAgICAgICAgICAgICAgXCLliKDpmaTmk43kvZzlkZhcIlxyXG4gICAgICAgICAgICAgICAgfSBcclxuICAgICAgICAgICAgICAgIGJhY2tUbz17dmlldyA9PT0gJ21haW4nID8gZ29CYWNrIDogdXNlRGlzcGxheVN0b3JlLmdldFN0YXRlKCkubmF2aWdhdGlvbi5wcmV2aW91cz8ubmFtZSB8fCAnaG9tZSd9XHJcbiAgICAgICAgICAgICAgICB2aWV3PXt1c2VEaXNwbGF5U3RvcmUuZ2V0U3RhdGUoKS5uYXZpZ2F0aW9uLnByZXZpb3VzPy52aWV3IHx8ICdtYWluJ30gXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgIHtyZW5kZXJDb250ZW50KCl9XHJcbiAgICAgICAgICAgIHt2aWV3ID09PSAnbWFpbicgJiYgKFxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJoLVs2MHB4XSBiZy1bIzMwMzAzMF0gZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIHB4LThcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB1cGRhdGVDdXJyZW50VmlldygnZGVsZXRlJyl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInctWzEwMHB4XSBoLVs0MHB4XSBiZy1ncmFkaWVudC10by1iIGZyb20tWyM2NTY1NjVdIHRvLVsjMzEzNDMxXSByb3VuZGVkLXNtIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHRleHQtd2hpdGUgZm9udC1ib2xkIHNoYWRvdy1sZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICDnvJbovpHliJfooahcclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB1cGRhdGVDdXJyZW50VmlldygnbmV3Jyl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInctWzEwMHB4XSBoLVs0MHB4XSBiZy1ncmFkaWVudC10by1iIGZyb20tWyM2NTY1NjVdIHRvLVsjMzEzNDMxXSByb3VuZGVkLXNtIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHRleHQtd2hpdGUgZm9udC1ib2xkIHNoYWRvdy1sZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICDmlrDmk43kvZzlkZhcclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICApfVxyXG4gICAgICAgICAgICB7dmlldyA9PT0gJ2RlbGV0ZScgJiYgKFxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJoLVs2MHB4XSBiZy1bIzMwMzAzMF0gZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1lbmQgcHgtOFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2hhbmRsZURlbGV0ZU9wZXJhdG9yc31cclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidy1bMTAwcHhdIGgtWzQwcHhdIGJnLWdyYWRpZW50LXRvLWIgZnJvbS1bIzY1NjU2NV0gdG8tWyMzMTM0MzFdIHJvdW5kZWQtc20gZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgdGV4dC13aGl0ZSBmb250LWJvbGQgc2hhZG93LWxnXCJcclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIOWIoOmZpFxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICl9XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICApO1xyXG59ICJdLCJuYW1lcyI6WyJSZWFjdCIsInVzZVN0YXRlIiwiU3RhdHVzQmFyIiwiVGl0bGVCYXIiLCJLZXlib2FyZCIsInVzZURpc3BsYXlTdG9yZSIsIk9wZXJhdG9ycyIsImlucHV0VmFsdWUiLCJzZXRJbnB1dFZhbHVlIiwiY3Vyc29yUG9zaXRpb24iLCJzZXRDdXJzb3JQb3NpdGlvbiIsInNlbGVjdGVkT3BlcmF0b3JzIiwic2V0U2VsZWN0ZWRPcGVyYXRvcnMiLCJnZXRDdXJyZW50UHJvamVjdCIsInNldFNlbGVjdGVkSW5kZXhlcyIsInVwZGF0ZUN1cnJlbnRWaWV3IiwiYWRkT3BlcmF0b3IiLCJ1cGRhdGVQcm9qZWN0IiwiZ29CYWNrIiwic2V0VG9hc3RNZXNzYWdlIiwiY3VycmVudFByb2plY3QiLCJ2aWV3IiwiZ2V0U3RhdGUiLCJuYXZpZ2F0aW9uIiwiY3VycmVudCIsImhhbmRsZURlbGV0ZU9wZXJhdG9ycyIsImxlbmd0aCIsIm9wZXJhdG9ycyIsIm5ld09wZXJhdG9ycyIsImZpbHRlciIsIm9wZXJhdG9yIiwiaW5jbHVkZXMiLCJpZCIsImN1cnJlbnRJbmRleCIsInNlbGVjdGVkSW5kZXhlcyIsInByb2plY3RJbmRleCIsIm9wZXJhdG9ySW5kZXgiLCJyZW5kZXJDb250ZW50IiwiZGl2IiwiY2xhc3NOYW1lIiwibWFwIiwiaW5kZXgiLCJvbkNsaWNrIiwibmFtZSIsImlucHV0IiwidHlwZSIsImNoZWNrZWQiLCJvbkNoYW5nZSIsImUiLCJ0YXJnZXQiLCJ2YWx1ZSIsInBsYWNlaG9sZGVyIiwic2VsZWN0aW9uU3RhcnQiLCJvbkZvY3VzIiwic2V0U2VsZWN0aW9uUmFuZ2UiLCJuZXdWYWx1ZSIsIm5ld1Bvc2l0aW9uIiwib25Db21wbGV0ZSIsInRyaW0iLCJuZXdPcGVyYXRvciIsIk1hdGgiLCJyYW5kb20iLCJ0b1N0cmluZyIsInN1YnN0ciIsInRpdGxlIiwiYmFja1RvIiwicHJldmlvdXMiLCJidXR0b24iXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(pages-dir-node)/./src/components/dsxpage/fluke/Operators.js\n"); /***/ }), /***/ "(pages-dir-node)/./src/components/dsxpage/fluke/Project.js": /*!*************************************************!*\ !*** ./src/components/dsxpage/fluke/Project.js ***! \*************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; eval("__webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ Project)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"react/jsx-dev-runtime\");\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 */ \"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var next_image__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! next/image */ \"(pages-dir-node)/./node_modules/next/image.js\");\n/* harmony import */ var next_image__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(next_image__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _components_lib_StatusBar__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/components/lib/StatusBar */ \"(pages-dir-node)/./src/components/lib/StatusBar.js\");\n/* harmony import */ var _components_lib_TitleBar__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/components/lib/TitleBar */ \"(pages-dir-node)/./src/components/lib/TitleBar.js\");\n/* harmony import */ var _components_lib_SubTitleBar__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/components/lib/SubTitleBar */ \"(pages-dir-node)/./src/components/lib/SubTitleBar.js\");\n/* harmony import */ var _components_lib_Keyboard__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @/components/lib/Keyboard */ \"(pages-dir-node)/./src/components/lib/Keyboard.js\");\n/* harmony import */ var _store_displayStore__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @/store/displayStore */ \"(pages-dir-node)/./src/store/displayStore.js\");\n/* harmony import */ var _utils_asset__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @/utils/asset */ \"(pages-dir-node)/./src/utils/asset.js\");\nvar __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_components_lib_StatusBar__WEBPACK_IMPORTED_MODULE_3__, _components_lib_TitleBar__WEBPACK_IMPORTED_MODULE_4__, _components_lib_SubTitleBar__WEBPACK_IMPORTED_MODULE_5__, _components_lib_Keyboard__WEBPACK_IMPORTED_MODULE_6__, _store_displayStore__WEBPACK_IMPORTED_MODULE_7__, _utils_asset__WEBPACK_IMPORTED_MODULE_8__]);\n([_components_lib_StatusBar__WEBPACK_IMPORTED_MODULE_3__, _components_lib_TitleBar__WEBPACK_IMPORTED_MODULE_4__, _components_lib_SubTitleBar__WEBPACK_IMPORTED_MODULE_5__, _components_lib_Keyboard__WEBPACK_IMPORTED_MODULE_6__, _store_displayStore__WEBPACK_IMPORTED_MODULE_7__, _utils_asset__WEBPACK_IMPORTED_MODULE_8__] = __webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__);\n\n\n\n\n\n\n\n\n\nfunction Project() {\n const [inputValue, setInputValue] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)('');\n const [cursorPosition, setCursorPosition] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(0);\n const { getCurrentProject, navigation, navigateTo, updateCurrentView, goBack, deleteProject, setSelectedIndexes, updateProject, addProject, setToastMessage } = (0,_store_displayStore__WEBPACK_IMPORTED_MODULE_7__[\"default\"])();\n // 获取当前项目数据\n const currentProject = getCurrentProject();\n const passCount = currentProject?.testResults.filter((result)=>{\n const copperStatus = result.CopperResultStatus;\n const cfpStatus = result.CFPResultStatus;\n const ofpStatus = result.ofpResultStatus;\n if (copperStatus) {\n return copperStatus === 'pass';\n } else if (cfpStatus) {\n return cfpStatus === 'pass';\n } else if (ofpStatus) {\n return ofpStatus === 'pass';\n }\n return false;\n }).length;\n const failCount = currentProject?.testResults.filter((result)=>{\n const copperStatus = result.CopperResultStatus;\n const cfpStatus = result.CFPResultStatus;\n const ofpStatus = result.ofpResultStatus;\n if (copperStatus) {\n return copperStatus === 'fail';\n } else if (cfpStatus) {\n return cfpStatus === 'fail';\n } else if (ofpStatus) {\n return ofpStatus === 'fail';\n }\n return false;\n }).length;\n const renderContent = ()=>{\n const { view } = navigation.current;\n switch(view){\n case 'choose':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 bg-[#303040] p-4\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-y-2\",\n children: _store_displayStore__WEBPACK_IMPORTED_MODULE_7__[\"default\"].getState().projects.map((project, index)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[50px] bg-gradient-to-b from-[#e6e3e6] to-[#7b797b] rounded-sm p-4 shadow-lg flex justify-between items-center cursor-pointer\",\n onClick: ()=>{\n setSelectedIndexes({\n projectIndex: index\n });\n setSelectedIndexes({\n testConfigIndex: 0\n });\n updateCurrentView('main');\n },\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black text-sm\",\n children: project.name\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Project.js\",\n lineNumber: 77,\n columnNumber: 37\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-3 h-3 relative\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: (0,_utils_asset__WEBPACK_IMPORTED_MODULE_8__.getAssetUrl)('/arrow.png'),\n alt: \"箭头\",\n fill: true,\n className: \"object-contain\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Project.js\",\n lineNumber: 79,\n columnNumber: 41\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Project.js\",\n lineNumber: 78,\n columnNumber: 37\n }, this)\n ]\n }, project.id, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Project.js\",\n lineNumber: 68,\n columnNumber: 33\n }, this))\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Project.js\",\n lineNumber: 66,\n columnNumber: 25\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Project.js\",\n lineNumber: 65,\n columnNumber: 21\n }, this);\n case 'rxtx':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 bg-[#303040] p-4\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n className: \"w-full h-[200px] bg-gradient-to-b from-[#e6e3e6] to-[#7b797b] rounded-sm p-4 shadow-lg flex items-center justify-center\",\n onClick: ()=>updateCurrentView('rxtx2'),\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black text-lg\",\n children: \"选择存储设备\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Project.js\",\n lineNumber: 99,\n columnNumber: 29\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Project.js\",\n lineNumber: 95,\n columnNumber: 25\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Project.js\",\n lineNumber: 94,\n columnNumber: 21\n }, this);\n case 'rxtx2':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 bg-[#303040] p-4 space-y-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n className: \"w-full h-[100px] bg-gradient-to-b from-[#e6e3e6] to-[#7b797b] rounded-sm p-4 shadow-lg\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black text-lg\",\n children: \"导出\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Project.js\",\n lineNumber: 108,\n columnNumber: 29\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Project.js\",\n lineNumber: 107,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n className: \"w-full h-[100px] bg-gradient-to-b from-[#e6e3e6] to-[#7b797b] rounded-sm p-4 shadow-lg\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black text-lg\",\n children: \"导入\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Project.js\",\n lineNumber: 111,\n columnNumber: 29\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Project.js\",\n lineNumber: 110,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Project.js\",\n lineNumber: 106,\n columnNumber: 21\n }, this);\n case 'setup':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 bg-[#303040] p-4 space-y-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n className: \"w-full h-[100px] bg-gradient-to-b from-[#e6e3e6] to-[#7b797b] rounded-sm p-4 shadow-lg\",\n onClick: ()=>{\n if (currentProject?.id === 'default') {\n setToastMessage('默认项目不能重命名');\n return;\n }\n setInputValue(currentProject?.name || '');\n updateCurrentView('rename');\n },\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black text-lg\",\n children: \"重命名\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Project.js\",\n lineNumber: 130,\n columnNumber: 29\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Project.js\",\n lineNumber: 119,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n className: \"w-full h-[100px] bg-gradient-to-b from-[#e6e3e6] to-[#7b797b] rounded-sm p-4 shadow-lg\",\n onClick: ()=>{\n if (currentProject?.id === 'default') {\n setToastMessage('默认项目不能删除');\n return;\n }\n // 删除当前项目\n deleteProject(_store_displayStore__WEBPACK_IMPORTED_MODULE_7__[\"default\"].getState().selectedIndexes.projectIndex);\n // 切换到默认项目(索引0)\n setSelectedIndexes({\n projectIndex: 0\n });\n updateCurrentView('main');\n },\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black text-lg\",\n children: \"删除\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Project.js\",\n lineNumber: 146,\n columnNumber: 29\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Project.js\",\n lineNumber: 132,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Project.js\",\n lineNumber: 118,\n columnNumber: 21\n }, this);\n case 'rename':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 bg-[#303040] p-4 flex flex-col\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"relative\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"text\",\n className: \"w-full h-[50px] bg-[#ffffe1] rounded-sm p-4 text-black mb-4\",\n value: inputValue,\n onChange: (e)=>{\n setInputValue(e.target.value);\n setCursorPosition(e.target.selectionStart);\n },\n onClick: (e)=>{\n setCursorPosition(e.target.selectionStart);\n },\n onFocus: (e)=>{\n const cursorPosition = e.target.selectionStart;\n e.target.setSelectionRange(cursorPosition, cursorPosition);\n }\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Project.js\",\n lineNumber: 155,\n columnNumber: 29\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Project.js\",\n lineNumber: 154,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_Keyboard__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n value: inputValue,\n cursorPosition: cursorPosition,\n onChange: (newValue, newPosition)=>{\n setInputValue(newValue);\n setCursorPosition(newPosition);\n },\n onComplete: ()=>{\n if (currentProject?.id === 'default') {\n setToastMessage('默认项目不能重命名');\n setInputValue('');\n updateCurrentView('main');\n return;\n }\n if (inputValue.trim()) {\n const currentIndex = _store_displayStore__WEBPACK_IMPORTED_MODULE_7__[\"default\"].getState().selectedIndexes.projectIndex;\n updateProject(currentIndex, {\n name: inputValue.trim()\n });\n setInputValue('');\n updateCurrentView('main');\n }\n }\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Project.js\",\n lineNumber: 172,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Project.js\",\n lineNumber: 153,\n columnNumber: 21\n }, this);\n case 'new':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 bg-[#303040] p-4 flex flex-col\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"relative\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"text\",\n className: \"w-full h-[50px] bg-[#ffffe1] rounded-sm p-4 text-black mb-4\",\n value: inputValue,\n placeholder: \"请输入项目名称\",\n onChange: (e)=>{\n setInputValue(e.target.value);\n setCursorPosition(e.target.selectionStart);\n },\n onClick: (e)=>{\n setCursorPosition(e.target.selectionStart);\n },\n onFocus: (e)=>{\n const cursorPosition = e.target.selectionStart;\n e.target.setSelectionRange(cursorPosition, cursorPosition);\n }\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Project.js\",\n lineNumber: 201,\n columnNumber: 29\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Project.js\",\n lineNumber: 200,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_Keyboard__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n value: inputValue,\n cursorPosition: cursorPosition,\n onChange: (newValue, newPosition)=>{\n setInputValue(newValue);\n setCursorPosition(newPosition);\n },\n onComplete: ()=>{\n if (inputValue.trim()) {\n // 生成唯一ID的函数\n const generateId = ()=>Math.random().toString(36).substr(2, 9);\n // 创建新项目\n const newProject = {\n id: generateId(),\n name: inputValue.trim(),\n testResults: [],\n testConfigs: [\n {\n id: generateId(),\n moduleType: '8000',\n modulelable: 'DSX-8000',\n params: {\n limitValue: 'TIA Cat 6 Channel',\n cableType: 'Cat6 U/UTP',\n wireOrder: 'T568B'\n }\n }\n ],\n cableIds: [\n {\n id: generateId(),\n name: '001'\n },\n {\n id: generateId(),\n name: '002'\n }\n ],\n operators: [\n {\n id: generateId(),\n name: 'Bob'\n }\n ]\n };\n // 添加新项目\n addProject(newProject);\n // 获取新项目的索引\n const newIndex = _store_displayStore__WEBPACK_IMPORTED_MODULE_7__[\"default\"].getState().projects.length - 1;\n // 更新选中索引,重置所有相关索引\n setSelectedIndexes({\n projectIndex: newIndex,\n testConfigIndex: 0,\n operatorIndex: 0,\n cableIdIndex: 0\n });\n // 清空输入并更新视图\n setInputValue('');\n updateCurrentView('main');\n }\n }\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Project.js\",\n lineNumber: 219,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Project.js\",\n lineNumber: 199,\n columnNumber: 21\n }, this);\n case 'main':\n default:\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 bg-[#303040] p-4 space-y-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[50px] bg-gradient-to-b from-[#e6e3e6] to-[#7b797b] rounded-sm p-4 shadow-lg flex justify-between items-center cursor-pointer\",\n onClick: ()=>navigateTo('operators', 'main'),\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black text-sm\",\n children: [\n \"操作员: \",\n currentProject?.operators[_store_displayStore__WEBPACK_IMPORTED_MODULE_7__[\"default\"].getState().selectedIndexes.operatorIndex]?.name\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Project.js\",\n lineNumber: 293,\n columnNumber: 29\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-3 h-3 relative\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: (0,_utils_asset__WEBPACK_IMPORTED_MODULE_8__.getAssetUrl)('/arrow.png'),\n alt: \"箭头\",\n fill: true,\n className: \"object-contain\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Project.js\",\n lineNumber: 295,\n columnNumber: 25\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Project.js\",\n lineNumber: 294,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Project.js\",\n lineNumber: 289,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-y-1\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm text-gray-400\",\n children: [\n \"结果 \",\n currentProject?.testResults[0]?.date,\n \" - \",\n currentProject?.testResults[currentProject.testResults.length - 1]?.date\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Project.js\",\n lineNumber: 306,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[50px] bg-gradient-to-b from-[#e6e3e6] to-[#7b797b] rounded-sm p-4 shadow-lg flex justify-between items-center cursor-pointer\",\n onClick: ()=>navigateTo('result', 'main'),\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-4\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-1\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-green-500\",\n children: passCount || 0\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Project.js\",\n lineNumber: 316,\n columnNumber: 37\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-3 h-3 relative\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: (0,_utils_asset__WEBPACK_IMPORTED_MODULE_8__.getAssetUrl)('/pass.png'),\n alt: \"通过\",\n sizes: \"auto\",\n fill: true,\n className: \"object-contain\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Project.js\",\n lineNumber: 318,\n columnNumber: 41\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Project.js\",\n lineNumber: 317,\n columnNumber: 37\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Project.js\",\n lineNumber: 315,\n columnNumber: 33\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-1\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-red-500\",\n children: failCount || 0\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Project.js\",\n lineNumber: 328,\n columnNumber: 37\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-3 h-3 relative\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: (0,_utils_asset__WEBPACK_IMPORTED_MODULE_8__.getAssetUrl)('/fail.png'),\n alt: \"失败\",\n sizes: \"auto\",\n fill: true,\n className: \"object-contain\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Project.js\",\n lineNumber: 330,\n columnNumber: 41\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Project.js\",\n lineNumber: 329,\n columnNumber: 37\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Project.js\",\n lineNumber: 327,\n columnNumber: 33\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Project.js\",\n lineNumber: 314,\n columnNumber: 25\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Project.js\",\n lineNumber: 313,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-3 h-3 relative\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: (0,_utils_asset__WEBPACK_IMPORTED_MODULE_8__.getAssetUrl)('/arrow.png'),\n alt: \"箭头\",\n fill: true,\n className: \"object-contain\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Project.js\",\n lineNumber: 342,\n columnNumber: 29\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Project.js\",\n lineNumber: 341,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Project.js\",\n lineNumber: 309,\n columnNumber: 29\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Project.js\",\n lineNumber: 305,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-y-1 flex-1 overflow-hidden\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex justify-between items-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-sm text-gray-400\",\n children: \"测试设置\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Project.js\",\n lineNumber: 355,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n className: \"bg-[#404040] text-white px-3 py-1 rounded-sm text-sm\",\n onClick: ()=>{\n // 生成唯一ID\n const generateId = ()=>Math.random().toString(36).substr(2, 9);\n // 创建新的测试配置\n const newConfig = {\n id: generateId(),\n name: '新测试配置',\n moduleType: '8000',\n modulelable: 'DSX-8000',\n params: {\n limitValue: 'TIA Cat 6 Channel',\n cableType: 'Cat6 U/UTP',\n wireOrder: 'T568B',\n refJumper: '1',\n spliceCount: '0',\n connectorCount: '2'\n }\n };\n // 更新项目,添加新的测试配置\n const currentProjectIndex = _store_displayStore__WEBPACK_IMPORTED_MODULE_7__[\"default\"].getState().selectedIndexes.projectIndex;\n const updatedProject = {\n ...currentProject,\n testConfigs: [\n ...currentProject.testConfigs,\n newConfig\n ]\n };\n updateProject(currentProjectIndex, updatedProject);\n // 设置新配置为选中状态\n const newConfigIndex = updatedProject.testConfigs.length - 1;\n setSelectedIndexes({\n testConfigIndex: newConfigIndex\n });\n // 跳转到测试配置页面并进入编辑视图\n navigateTo('testConfig', 'setup');\n },\n children: \"新测试\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Project.js\",\n lineNumber: 356,\n columnNumber: 33\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Project.js\",\n lineNumber: 354,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[100px] overflow-y-auto space-y-2 pr-2\",\n children: currentProject?.testConfigs.map((config, index)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[100px] bg-gradient-to-b from-[#e6e3e6] to-[#7b797b] rounded-sm p-4 shadow-lg cursor-pointer\",\n onClick: ()=>navigateTo('testConfig', 'main'),\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex justify-between\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-y-0.2\",\n children: [\n config.moduleType === '8000' && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black text-sm\",\n children: config.params.limitValue\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Project.js\",\n lineNumber: 408,\n columnNumber: 57\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black text-sm\",\n children: config.params.cableType\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Project.js\",\n lineNumber: 409,\n columnNumber: 57\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black text-sm\",\n children: config.params.wireOrder\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Project.js\",\n lineNumber: 410,\n columnNumber: 57\n }, this)\n ]\n }, void 0, true),\n config.moduleType === 'cfp' && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black text-sm\",\n children: \"智能远端\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Project.js\",\n lineNumber: 415,\n columnNumber: 57\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black text-sm\",\n children: config.params.limitValue\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Project.js\",\n lineNumber: 416,\n columnNumber: 57\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black text-sm\",\n children: config.params.cableType\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Project.js\",\n lineNumber: 417,\n columnNumber: 57\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black text-sm\",\n children: [\n config.params.refJumper,\n \" 跳线参照\"\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Project.js\",\n lineNumber: 418,\n columnNumber: 57\n }, this)\n ]\n }, void 0, true),\n config.moduleType === 'ofp' && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black text-sm\",\n children: \"自动OTDR\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Project.js\",\n lineNumber: 423,\n columnNumber: 57\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black text-sm\",\n children: config.params.limitValue\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Project.js\",\n lineNumber: 424,\n columnNumber: 57\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black text-sm\",\n children: config.params.cableType\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Project.js\",\n lineNumber: 425,\n columnNumber: 57\n }, this)\n ]\n }, void 0, true)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Project.js\",\n lineNumber: 405,\n columnNumber: 45\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-col items-end justify-between\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-gray-500 text-sm\",\n children: config.modulelable\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Project.js\",\n lineNumber: 430,\n columnNumber: 49\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex gap-2\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n className: \"w-6 h-6 bg-[#404040] rounded-sm flex items-center justify-center\",\n onClick: (e)=>{\n e.stopPropagation(); // 阻止事件冒泡\n const currentProjectIndex = _store_displayStore__WEBPACK_IMPORTED_MODULE_7__[\"default\"].getState().selectedIndexes.projectIndex;\n const currentTestConfigIndex = _store_displayStore__WEBPACK_IMPORTED_MODULE_7__[\"default\"].getState().selectedIndexes.testConfigIndex;\n const selectedConfigId = currentProject.testConfigs[currentTestConfigIndex]?.id;\n // 禁止删除最后一项配置\n if (currentProject.testConfigs.length <= 1) {\n setToastMessage('不能删除最后一项配置');\n return;\n }\n // 更新项目,删除选中的测试配置\n const updatedProject = {\n ...currentProject,\n testConfigs: currentProject.testConfigs.filter((testConfig)=>testConfig.id !== config.id)\n };\n updateProject(currentProjectIndex, updatedProject);\n // 更新选中索引\n const newIndex = updatedProject.testConfigs.findIndex((testConfig)=>testConfig.id === selectedConfigId);\n // 如果删除的是当前选中的配置,或者找不到选中的配置ID,则设置索引为0\n setSelectedIndexes({\n testConfigIndex: newIndex === -1 ? 0 : newIndex\n });\n },\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-4 h-4 relative\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: (0,_utils_asset__WEBPACK_IMPORTED_MODULE_8__.getAssetUrl)('/delete.png'),\n alt: \"删除\",\n fill: true,\n className: \"object-contain\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Project.js\",\n lineNumber: 467,\n columnNumber: 45\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Project.js\",\n lineNumber: 466,\n columnNumber: 41\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Project.js\",\n lineNumber: 432,\n columnNumber: 54\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Project.js\",\n lineNumber: 431,\n columnNumber: 33\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Project.js\",\n lineNumber: 429,\n columnNumber: 29\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Project.js\",\n lineNumber: 404,\n columnNumber: 25\n }, this)\n }, config.id, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Project.js\",\n lineNumber: 399,\n columnNumber: 37\n }, this))\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Project.js\",\n lineNumber: 397,\n columnNumber: 29\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Project.js\",\n lineNumber: 353,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-y-1\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex justify-between items-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-sm text-gray-400\",\n children: \"电缆ID集\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Project.js\",\n lineNumber: 487,\n columnNumber: 25\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Project.js\",\n lineNumber: 486,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[50px] bg-gradient-to-b from-[#e6e3e6] to-[#7b797b] rounded-sm p-4 shadow-lg flex justify-between items-center cursor-pointer\",\n onClick: ()=>navigateTo('cableId', 'main'),\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black text-sm\",\n children: [\n \"下一个ID: \",\n currentProject?.cableIds?.[0]?.name || '001'\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Project.js\",\n lineNumber: 493,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-3 h-3 relative\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: (0,_utils_asset__WEBPACK_IMPORTED_MODULE_8__.getAssetUrl)('/arrow.png'),\n alt: \"箭头\",\n fill: true,\n className: \"object-contain\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Project.js\",\n lineNumber: 497,\n columnNumber: 37\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Project.js\",\n lineNumber: 496,\n columnNumber: 33\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Project.js\",\n lineNumber: 489,\n columnNumber: 29\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Project.js\",\n lineNumber: 485,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Project.js\",\n lineNumber: 287,\n columnNumber: 13\n }, this);\n }\n };\n const renderTitleBar = ()=>{\n const { view } = navigation.current;\n switch(view){\n case 'choose':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_TitleBar__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n title: \"更改项目\",\n backTo: null,\n view: \"main\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Project.js\",\n lineNumber: 518,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_SubTitleBar__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n title: \"选择您要的项目\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Project.js\",\n lineNumber: 519,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true);\n case 'rxtx':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_TitleBar__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n title: \"传输项目\",\n backTo: null,\n view: \"main\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Project.js\",\n lineNumber: 526,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_SubTitleBar__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n title: \"选择存储设备\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Project.js\",\n lineNumber: 527,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true);\n case 'rxtx2':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_TitleBar__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n title: \"传输项目\",\n backTo: null,\n view: \"rxtx\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Project.js\",\n lineNumber: 534,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_SubTitleBar__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n title: \"选择所需操作\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Project.js\",\n lineNumber: 535,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true);\n case 'setup':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_TitleBar__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n title: \"管理项目\",\n backTo: null,\n view: \"main\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Project.js\",\n lineNumber: 542,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_SubTitleBar__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n title: currentProject?.name || 'DEFAULT'\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Project.js\",\n lineNumber: 543,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true);\n case 'rename':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_TitleBar__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n title: \"重命名\",\n backTo: null,\n view: \"setup\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Project.js\",\n lineNumber: 550,\n columnNumber: 25\n }, this)\n }, void 0, false);\n case 'new':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_TitleBar__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n title: \"新项目\",\n backTo: null,\n view: \"choose\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Project.js\",\n lineNumber: 557,\n columnNumber: 25\n }, this)\n }, void 0, false);\n case 'main':\n default:\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_TitleBar__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n title: \"项目\",\n backTo: \"home\",\n view: \"main\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Project.js\",\n lineNumber: 565,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_SubTitleBar__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n title: currentProject?.name || 'DEFAULT'\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Project.js\",\n lineNumber: 566,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true);\n }\n };\n const renderFooter = ()=>{\n const { view } = navigation.current;\n switch(view){\n case 'choose':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[60px] bg-[#303030] flex items-center justify-between px-8\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>updateCurrentView('new'),\n className: \"w-[100px] h-[40px] bg-gradient-to-b from-[#656565] to-[#313431] rounded-sm flex items-center justify-center text-white font-bold shadow-lg\",\n children: \"新项目\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Project.js\",\n lineNumber: 579,\n columnNumber: 25\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Project.js\",\n lineNumber: 578,\n columnNumber: 21\n }, this);\n case 'rxtx':\n case 'rxtx2':\n case 'setup':\n case 'rename':\n case 'new':\n return null;\n case 'main':\n default:\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[60px] bg-[#303030] flex items-center justify-between px-8\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>updateCurrentView('choose'),\n className: \"w-[100px] h-[40px] bg-gradient-to-b from-[#656565] to-[#313431] rounded-sm flex items-center justify-center text-white font-bold shadow-lg\",\n children: \"更改项目\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Project.js\",\n lineNumber: 599,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>updateCurrentView('rxtx'),\n className: \"w-[100px] h-[40px] bg-gradient-to-b from-[#656565] to-[#313431] rounded-sm flex items-center justify-center text-white font-bold shadow-lg\",\n children: \"传输\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Project.js\",\n lineNumber: 605,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>updateCurrentView('setup'),\n className: \"w-[100px] h-[40px] bg-gradient-to-b from-[#656565] to-[#313431] rounded-sm flex items-center justify-center text-white font-bold shadow-lg\",\n children: \"管理\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Project.js\",\n lineNumber: 611,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Project.js\",\n lineNumber: 598,\n columnNumber: 13\n }, this);\n }\n };\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full h-full flex flex-col overflow-hidden\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_StatusBar__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {}, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Project.js\",\n lineNumber: 624,\n columnNumber: 13\n }, this),\n renderTitleBar(),\n renderContent(),\n renderFooter()\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Project.js\",\n lineNumber: 623,\n columnNumber: 9\n }, this);\n}\n\n__webpack_async_result__();\n} catch(e) { __webpack_async_result__(e); } });//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHBhZ2VzLWRpci1ub2RlKS8uL3NyYy9jb21wb25lbnRzL2RzeHBhZ2UvZmx1a2UvUHJvamVjdC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUF3QztBQUNUO0FBQ29CO0FBQ0Y7QUFDTTtBQUNOO0FBQ0U7QUFDUDtBQUU3QixTQUFTUztJQUNwQixNQUFNLENBQUNDLFlBQVlDLGNBQWMsR0FBR1YsK0NBQVFBLENBQUM7SUFDN0MsTUFBTSxDQUFDVyxnQkFBZ0JDLGtCQUFrQixHQUFHWiwrQ0FBUUEsQ0FBQztJQUNyRCxNQUFNLEVBQ0ZhLGlCQUFpQixFQUNqQkMsVUFBVSxFQUNWQyxVQUFVLEVBQ1ZDLGlCQUFpQixFQUNqQkMsTUFBTSxFQUNOQyxhQUFhLEVBQ2JDLGtCQUFrQixFQUNsQkMsYUFBYSxFQUNiQyxVQUFVLEVBQ1ZDLGVBQWUsRUFDbEIsR0FBR2hCLCtEQUFlQTtJQUVuQixXQUFXO0lBQ1gsTUFBTWlCLGlCQUFpQlY7SUFDdkIsTUFBTVcsWUFBWUQsZ0JBQWdCRSxZQUFZQyxPQUFPQyxDQUFBQTtRQUNqRCxNQUFNQyxlQUFlRCxPQUFPRSxrQkFBa0I7UUFDOUMsTUFBTUMsWUFBWUgsT0FBT0ksZUFBZTtRQUN4QyxNQUFNQyxZQUFZTCxPQUFPTSxlQUFlO1FBRXhDLElBQUlMLGNBQWM7WUFDZCxPQUFPQSxpQkFBaUI7UUFDNUIsT0FBTyxJQUFJRSxXQUFXO1lBQ2xCLE9BQU9BLGNBQWM7UUFDekIsT0FBTyxJQUFJRSxXQUFXO1lBQ2xCLE9BQU9BLGNBQWM7UUFDekI7UUFDQSxPQUFPO0lBQ1gsR0FBR0U7SUFFSCxNQUFNQyxZQUFZWixnQkFBZ0JFLFlBQVlDLE9BQU9DLENBQUFBO1FBQ2pELE1BQU1DLGVBQWVELE9BQU9FLGtCQUFrQjtRQUM5QyxNQUFNQyxZQUFZSCxPQUFPSSxlQUFlO1FBQ3hDLE1BQU1DLFlBQVlMLE9BQU9NLGVBQWU7UUFFeEMsSUFBSUwsY0FBYztZQUNkLE9BQU9BLGlCQUFpQjtRQUM1QixPQUFPLElBQUlF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UyxJQUFNOUIsa0JBQWtCOzRCQUNqQ3dCLFdBQVU7c0NBQ3JCOzs7Ozs7c0NBR0QsOERBQUNjOzRCQUNXUixTQUFTLElBQU05QixrQkFBa0I7NEJBQ3pDd0IsV0FBVTtzQ0FDYjs7Ozs7O3NDQUdELDhEQUFDYzs0QkFDV1IsU0FBUyxJQUFNOUIsa0JBQWtCOzRCQUN6Q3dCLFdBQVU7c0NBQ2I7Ozs7Ozs7Ozs7OztRQUtUO0lBQ0o7SUFFQSxxQkFDSSw4REFBQ0Q7UUFBSUMsV0FBVTs7MEJBQ1gsOERBQUN0QyxpRUFBU0E7Ozs7O1lBQ1R1RztZQUNBckU7WUFDQXdFOzs7Ozs7O0FBR2IiLCJzb3VyY2VzIjpbIi9vcHQvZGV2L2VzdC1kc3gvc3JjL2NvbXBvbmVudHMvZHN4cGFnZS9mbHVrZS9Qcm9qZWN0LmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBJbWFnZSBmcm9tICduZXh0L2ltYWdlJztcbmltcG9ydCBTdGF0dXNCYXIgZnJvbSAnQC9jb21wb25lbnRzL2xpYi9TdGF0dXNCYXInO1xuaW1wb3J0IFRpdGxlQmFyIGZyb20gJ0AvY29tcG9uZW50cy9saWIvVGl0bGVCYXInO1xuaW1wb3J0IFN1YlRpdGxlQmFyIGZyb20gJ0AvY29tcG9uZW50cy9saWIvU3ViVGl0bGVCYXInO1xuaW1wb3J0IEtleWJvYXJkIGZyb20gJ0AvY29tcG9uZW50cy9saWIvS2V5Ym9hcmQnO1xuaW1wb3J0IHVzZURpc3BsYXlTdG9yZSBmcm9tICdAL3N0b3JlL2Rpc3BsYXlTdG9yZSc7XG5pbXBvcnQgeyBnZXRBc3NldFVybCB9IGZyb20gJ0AvdXRpbHMvYXNzZXQnO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBQcm9qZWN0KCkge1xuICAgIGNvbnN0IFtpbnB1dFZhbHVlLCBzZXRJbnB1dFZhbHVlXSA9IHVzZVN0YXRlKCcnKTtcbiAgICBjb25zdCBbY3Vyc29yUG9zaXRpb24sIHNldEN1cnNvclBvc2l0aW9uXSA9IHVzZVN0YXRlKDApO1xuICAgIGNvbnN0IHsgXG4gICAgICAgIGdldEN1cnJlbnRQcm9qZWN0LFxuICAgICAgICBuYXZpZ2F0aW9uLFxuICAgICAgICBuYXZpZ2F0ZVRvLFxuICAgICAgICB1cGRhdGVDdXJyZW50VmlldyxcbiAgICAgICAgZ29CYWNrLFxuICAgICAgICBkZWxldGVQcm9qZWN0LFxuICAgICAgICBzZXRTZWxlY3RlZEluZGV4ZXMsXG4gICAgICAgIHVwZGF0ZVByb2plY3QsXG4gICAgICAgIGFkZFByb2plY3QsXG4gICAgICAgIHNldFRvYXN0TWVzc2FnZVxuICAgIH0gPSB1c2VEaXNwbGF5U3RvcmUoKTtcblxuICAgIC8vIOiOt+WPluW9k+WJjemhueebruaVsOaNrlxuICAgIGNvbnN0IGN1cnJlbnRQcm9qZWN0ID0gZ2V0Q3VycmVudFByb2plY3QoKTtcbiAgICBjb25zdCBwYXNzQ291bnQgPSBjdXJyZW50UHJvamVjdD8udGVzdFJlc3VsdHMuZmlsdGVyKHJlc3VsdCA9PiB7XG4gICAgICAgIGNvbnN0IGNvcHBlclN0YXR1cyA9IHJlc3VsdC5Db3BwZXJSZXN1bHRTdGF0dXM7XG4gICAgICAgIGNvbnN0IGNmcFN0YXR1cyA9IHJlc3VsdC5DRlBSZXN1bHRTdGF0dXM7XG4gICAgICAgIGNvbnN0IG9mcFN0YXR1cyA9IHJlc3VsdC5vZnBSZXN1bHRTdGF0dXM7XG4gICAgICAgIFxuICAgICAgICBpZiAoY29wcGVyU3RhdHVzKSB7XG4gICAgICAgICAgICByZXR1cm4gY29wcGVyU3RhdHVzID09PSAncGFzcyc7XG4gICAgICAgIH0gZWxzZSBpZiAoY2ZwU3RhdHVzKSB7XG4gICAgICAgICAgICByZXR1cm4gY2ZwU3RhdHVzID09PSAncGFzcyc7XG4gICAgICAgIH0gZWxzZSBpZiAob2ZwU3RhdHVzKSB7XG4gICAgICAgICAgICByZXR1cm4gb2ZwU3RhdHVzID09PSAncGFzcyc7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0pLmxlbmd0aDtcbiAgICBcbiAgICBjb25zdCBmYWlsQ291bnQgPSBjdXJyZW50UHJvamVjdD8udGVzdFJlc3VsdHMuZmlsdGVyKHJlc3VsdCA9PiB7XG4gICAgICAgIGNvbnN0IGNvcHBlclN0YXR1cyA9IHJlc3VsdC5Db3BwZXJSZXN1bHRTdGF0dXM7XG4gICAgICAgIGNvbnN0IGNmcFN0YXR1cyA9IHJlc3VsdC5DRlBSZXN1bHRTdGF0dXM7XG4gICAgICAgIGNvbnN0IG9mcFN0YXR1cyA9IHJlc3VsdC5vZnBSZXN1bHRTdGF0dXM7XG4gICAgICAgIFxuICAgICAgICBpZiAoY29wcGVyU3RhdHVzKSB7XG4gICAgICAgICAgICByZXR1cm4gY29wcGVyU3RhdHVzID09PSAnZmFpbCc7XG4gICAgICAgIH0gZWxzZSBpZiAoY2ZwU3RhdHVzKSB7XG4gICAgICAgICAgICByZXR1cm4gY2ZwU3RhdHVzID09PSAnZmFpbCc7XG4gICAgICAgIH0gZWxzZSBpZiAob2ZwU3RhdHVzKSB7XG4gICAgICAgICAgICByZXR1cm4gb2ZwU3RhdHVzID09PSAnZmFpbCc7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0pLmxlbmd0aDtcblxuXG4gICAgY29uc3QgcmVuZGVyQ29udGVudCA9ICgpID0+IHtcbiAgICAgICAgY29uc3QgeyB2aWV3IH0gPSBuYXZpZ2F0aW9uLmN1cnJlbnQ7XG4gICAgICAgIFxuICAgICAgICBzd2l0Y2ggKHZpZXcpIHtcbiAgICAgICAgICAgIGNhc2UgJ2Nob29zZSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4LTEgYmctWyMzMDMwNDBdIHAtNFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJzcGFjZS15LTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7dXNlRGlzcGxheVN0b3JlLmdldFN0YXRlKCkucHJvamVjdHMubWFwKChwcm9qZWN0LCBpbmRleCkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtwcm9qZWN0LmlkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiaC1bNTBweF0gYmctZ3JhZGllbnQtdG8tYiBmcm9tLVsjZTZlM2U2XSB0by1bIzdiNzk3Yl0gcm91bmRlZC1zbSBwLTQgc2hhZG93LWxnIGZsZXgganVzdGlmeS1iZXR3ZWVuIGl0ZW1zLWNlbnRlciBjdXJzb3ItcG9pbnRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U2VsZWN0ZWRJbmRleGVzKHsgcHJvamVjdEluZGV4OiBpbmRleCB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTZWxlY3RlZEluZGV4ZXMoeyB0ZXN0Q29uZmlnSW5kZXg6IDAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlQ3VycmVudFZpZXcoJ21haW4nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1ibGFjayB0ZXh0LXNtXCI+e3Byb2plY3QubmFtZX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy0zIGgtMyByZWxhdGl2ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJbWFnZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9e2dldEFzc2V0VXJsKCcvYXJyb3cucG5nJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdD1cIueureWktFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwib2JqZWN0LWNvbnRhaW5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgY2FzZSAncnh0eCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4LTEgYmctWyMzMDMwNDBdIHAtNFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ3LWZ1bGwgaC1bMjAwcHhdIGJnLWdyYWRpZW50LXRvLWIgZnJvbS1bI2U2ZTNlNl0gdG8tWyM3Yjc5N2JdIHJvdW5kZWQtc20gcC00IHNoYWRvdy1sZyBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gdXBkYXRlQ3VycmVudFZpZXcoJ3J4dHgyJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LWJsYWNrIHRleHQtbGdcIj7pgInmi6nlrZjlgqjorr7lpIc8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBjYXNlICdyeHR4Mic6XG4gICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4LTEgYmctWyMzMDMwNDBdIHAtNCBzcGFjZS15LTRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3NOYW1lPVwidy1mdWxsIGgtWzEwMHB4XSBiZy1ncmFkaWVudC10by1iIGZyb20tWyNlNmUzZTZdIHRvLVsjN2I3OTdiXSByb3VuZGVkLXNtIHAtNCBzaGFkb3ctbGdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtYmxhY2sgdGV4dC1sZ1wiPuWvvOWHujwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzTmFtZT1cInctZnVsbCBoLVsxMDBweF0gYmctZ3JhZGllbnQtdG8tYiBmcm9tLVsjZTZlM2U2XSB0by1bIzdiNzk3Yl0gcm91bmRlZC1zbSBwLTQgc2hhZG93LWxnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LWJsYWNrIHRleHQtbGdcIj7lr7zlhaU8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBjYXNlICdzZXR1cCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4LTEgYmctWyMzMDMwNDBdIHAtNCBzcGFjZS15LTRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidy1mdWxsIGgtWzEwMHB4XSBiZy1ncmFkaWVudC10by1iIGZyb20tWyNlNmUzZTZdIHRvLVsjN2I3OTdiXSByb3VuZGVkLXNtIHAtNCBzaGFkb3ctbGdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRQcm9qZWN0Py5pZCA9PT0gJ2RlZmF1bHQnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUb2FzdE1lc3NhZ2UoJ+m7mOiupOmhueebruS4jeiDvemHjeWRveWQjScpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldElucHV0VmFsdWUoY3VycmVudFByb2plY3Q/Lm5hbWUgfHwgJycpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVDdXJyZW50VmlldygncmVuYW1lJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtYmxhY2sgdGV4dC1sZ1wiPumHjeWRveWQjTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInctZnVsbCBoLVsxMDBweF0gYmctZ3JhZGllbnQtdG8tYiBmcm9tLVsjZTZlM2U2XSB0by1bIzdiNzk3Yl0gcm91bmRlZC1zbSBwLTQgc2hhZG93LWxnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjdXJyZW50UHJvamVjdD8uaWQgPT09ICdkZWZhdWx0Jykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VG9hc3RNZXNzYWdlKCfpu5jorqTpobnnm67kuI3og73liKDpmaQnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g5Yig6Zmk5b2T5YmN6aG555uuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGVQcm9qZWN0KHVzZURpc3BsYXlTdG9yZS5nZXRTdGF0ZSgpLnNlbGVjdGVkSW5kZXhlcy5wcm9qZWN0SW5kZXgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g5YiH5o2i5Yiw6buY6K6k6aG555uu77yI57Si5byVMO+8iVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U2VsZWN0ZWRJbmRleGVzKHsgcHJvamVjdEluZGV4OiAwIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlQ3VycmVudFZpZXcoJ21haW4nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1ibGFjayB0ZXh0LWxnXCI+5Yig6ZmkPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgY2FzZSAncmVuYW1lJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXgtMSBiZy1bIzMwMzA0MF0gcC00IGZsZXggZmxleC1jb2xcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicmVsYXRpdmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidy1mdWxsIGgtWzUwcHhdIGJnLVsjZmZmZmUxXSByb3VuZGVkLXNtIHAtNCB0ZXh0LWJsYWNrIG1iLTRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17aW5wdXRWYWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRJbnB1dFZhbHVlKGUudGFyZ2V0LnZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEN1cnNvclBvc2l0aW9uKGUudGFyZ2V0LnNlbGVjdGlvblN0YXJ0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEN1cnNvclBvc2l0aW9uKGUudGFyZ2V0LnNlbGVjdGlvblN0YXJ0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Gb2N1cz17KGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGN1cnNvclBvc2l0aW9uID0gZS50YXJnZXQuc2VsZWN0aW9uU3RhcnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnRhcmdldC5zZXRTZWxlY3Rpb25SYW5nZShjdXJzb3JQb3NpdGlvbiwgY3Vyc29yUG9zaXRpb24pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxLZXlib2FyZCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17aW5wdXRWYWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJzb3JQb3NpdGlvbj17Y3Vyc29yUG9zaXRpb259XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhuZXdWYWx1ZSwgbmV3UG9zaXRpb24pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0SW5wdXRWYWx1ZShuZXdWYWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEN1cnNvclBvc2l0aW9uKG5ld1Bvc2l0aW9uKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ29tcGxldGU9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRQcm9qZWN0Py5pZCA9PT0gJ2RlZmF1bHQnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUb2FzdE1lc3NhZ2UoJ+m7mOiupOmhueebruS4jeiDvemHjeWRveWQjScpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0SW5wdXRWYWx1ZSgnJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVDdXJyZW50VmlldygnbWFpbicpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dFZhbHVlLnRyaW0oKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY3VycmVudEluZGV4ID0gdXNlRGlzcGxheVN0b3JlLmdldFN0YXRlKCkuc2VsZWN0ZWRJbmRleGVzLnByb2plY3RJbmRleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZVByb2plY3QoY3VycmVudEluZGV4LCB7IG5hbWU6IGlucHV0VmFsdWUudHJpbSgpIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0SW5wdXRWYWx1ZSgnJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVDdXJyZW50VmlldygnbWFpbicpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGNhc2UgJ25ldyc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4LTEgYmctWyMzMDMwNDBdIHAtNCBmbGV4IGZsZXgtY29sXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInJlbGF0aXZlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInctZnVsbCBoLVs1MHB4XSBiZy1bI2ZmZmZlMV0gcm91bmRlZC1zbSBwLTQgdGV4dC1ibGFjayBtYi00XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2lucHV0VmFsdWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwi6K+36L6T5YWl6aG555uu5ZCN56ewXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRJbnB1dFZhbHVlKGUudGFyZ2V0LnZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEN1cnNvclBvc2l0aW9uKGUudGFyZ2V0LnNlbGVjdGlvblN0YXJ0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEN1cnNvclBvc2l0aW9uKGUudGFyZ2V0LnNlbGVjdGlvblN0YXJ0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Gb2N1cz17KGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGN1cnNvclBvc2l0aW9uID0gZS50YXJnZXQuc2VsZWN0aW9uU3RhcnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnRhcmdldC5zZXRTZWxlY3Rpb25SYW5nZShjdXJzb3JQb3NpdGlvbiwgY3Vyc29yUG9zaXRpb24pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxLZXlib2FyZCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17aW5wdXRWYWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJzb3JQb3NpdGlvbj17Y3Vyc29yUG9zaXRpb259XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhuZXdWYWx1ZSwgbmV3UG9zaXRpb24pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0SW5wdXRWYWx1ZShuZXdWYWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEN1cnNvclBvc2l0aW9uKG5ld1Bvc2l0aW9uKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ29tcGxldGU9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0VmFsdWUudHJpbSgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyDnlJ/miJDllK/kuIBJROeahOWHveaVsFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2VuZXJhdGVJZCA9ICgpID0+IE1hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnN1YnN0cigyLCA5KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g5Yib5bu65paw6aG555uuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXdQcm9qZWN0ID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBnZW5lcmF0ZUlkKCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogaW5wdXRWYWx1ZS50cmltKCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdFJlc3VsdHM6IFtdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RDb25maWdzOiBbe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogZ2VuZXJhdGVJZCgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGVUeXBlOiAnODAwMCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZWxhYmxlOiAnRFNYLTgwMDAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbWl0VmFsdWU6ICdUSUEgQ2F0IDYgQ2hhbm5lbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWJsZVR5cGU6ICdDYXQ2IFUvVVRQJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpcmVPcmRlcjogJ1Q1NjhCJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfV0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FibGVJZHM6IFt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBnZW5lcmF0ZUlkKCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICcwMDEnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBnZW5lcmF0ZUlkKCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICcwMDInXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdG9yczogW3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGdlbmVyYXRlSWQoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ0JvYidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g5re75Yqg5paw6aG555uuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRQcm9qZWN0KG5ld1Byb2plY3QpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyDojrflj5bmlrDpobnnm67nmoTntKLlvJVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5ld0luZGV4ID0gdXNlRGlzcGxheVN0b3JlLmdldFN0YXRlKCkucHJvamVjdHMubGVuZ3RoIC0gMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g5pu05paw6YCJ5Lit57Si5byV77yM6YeN572u5omA5pyJ55u45YWz57Si5byVXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTZWxlY3RlZEluZGV4ZXMoeyBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0SW5kZXg6IG5ld0luZGV4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RDb25maWdJbmRleDogMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRvckluZGV4OiAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhYmxlSWRJbmRleDogMFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIOa4heepuui+k+WFpeW5tuabtOaWsOinhuWbvlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0SW5wdXRWYWx1ZSgnJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVDdXJyZW50VmlldygnbWFpbicpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIGNhc2UgJ21haW4nOlxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4LTEgYmctWyMzMDMwNDBdIHAtNCBzcGFjZS15LTRcIj5cbiAgICAgICAgICAgICAgICB7Lyog5pON5L2c5ZGY5L+h5oGvICovfVxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiaC1bNTBweF0gYmctZ3JhZGllbnQtdG8tYiBmcm9tLVsjZTZlM2U2XSB0by1bIzdiNzk3Yl0gcm91bmRlZC1zbSBwLTQgc2hhZG93LWxnIGZsZXgganVzdGlmeS1iZXR3ZWVuIGl0ZW1zLWNlbnRlciBjdXJzb3ItcG9pbnRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gbmF2aWdhdGVUbygnb3BlcmF0b3JzJywgJ21haW4nKX1cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtYmxhY2sgdGV4dC1zbVwiPuaTjeS9nOWRmDoge2N1cnJlbnRQcm9qZWN0Py5vcGVyYXRvcnNbdXNlRGlzcGxheVN0b3JlLmdldFN0YXRlKCkuc2VsZWN0ZWRJbmRleGVzLm9wZXJhdG9ySW5kZXhdPy5uYW1lfTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctMyBoLTMgcmVsYXRpdmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxJbWFnZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz17Z2V0QXNzZXRVcmwoJy9hcnJvdy5wbmcnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ9XCLnrq3lpLRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJvYmplY3QtY29udGFpblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgIHsvKiDnu5Pmnpznu5/orqEgKi99XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJzcGFjZS15LTFcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LXNtIHRleHQtZ3JheS00MDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIOe7k+aenCB7Y3VycmVudFByb2plY3Q/LnRlc3RSZXN1bHRzWzBdPy5kYXRlfSAtIHtjdXJyZW50UHJvamVjdD8udGVzdFJlc3VsdHNbY3VycmVudFByb2plY3QudGVzdFJlc3VsdHMubGVuZ3RoIC0gMV0/LmRhdGV9XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImgtWzUwcHhdIGJnLWdyYWRpZW50LXRvLWIgZnJvbS1bI2U2ZTNlNl0gdG8tWyM3Yjc5N2JdIHJvdW5kZWQtc20gcC00IHNoYWRvdy1sZyBmbGV4IGp1c3RpZnktYmV0d2VlbiBpdGVtcy1jZW50ZXIgY3Vyc29yLXBvaW50ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBuYXZpZ2F0ZVRvKCdyZXN1bHQnLCAnbWFpbicpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC1ncmVlbi01MDBcIj57cGFzc0NvdW50fHwgMH08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctMyBoLTMgcmVsYXRpdmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SW1hZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjPXtnZXRBc3NldFVybCgnL3Bhc3MucG5nJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdD1cIumAmui/h1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVzPXtcImF1dG9cIn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJvYmplY3QtY29udGFpblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC1yZWQtNTAwXCI+e2ZhaWxDb3VudHx8IDB9PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LTMgaC0zIHJlbGF0aXZlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEltYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz17Z2V0QXNzZXRVcmwoJy9mYWlsLnBuZycpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ9XCLlpLHotKVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplcz17XCJhdXRvXCJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwib2JqZWN0LWNvbnRhaW5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy0zIGgtMyByZWxhdGl2ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJbWFnZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9e2dldEFzc2V0VXJsKCcvYXJyb3cucG5nJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdD1cIueureWktFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwib2JqZWN0LWNvbnRhaW5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICB7Lyog5rWL6K+V6K6+572uICovfVxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInNwYWNlLXktMSBmbGV4LTEgb3ZlcmZsb3ctaGlkZGVuXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBqdXN0aWZ5LWJldHdlZW4gaXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LXNtIHRleHQtZ3JheS00MDBcIj7mtYvor5Xorr7nva48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJiZy1bIzQwNDA0MF0gdGV4dC13aGl0ZSBweC0zIHB5LTEgcm91bmRlZC1zbSB0ZXh0LXNtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyDnlJ/miJDllK/kuIBJRFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdlbmVyYXRlSWQgPSAoKSA9PiBNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zdWJzdHIoMiwgOSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g5Yib5bu65paw55qE5rWL6K+V6YWN572uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV3Q29uZmlnID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogZ2VuZXJhdGVJZCgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAn5paw5rWL6K+V6YWN572uJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxlVHlwZTogJzgwMDAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGVsYWJsZTogJ0RTWC04MDAwJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW1pdFZhbHVlOiAnVElBIENhdCA2IENoYW5uZWwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FibGVUeXBlOiAnQ2F0NiBVL1VUUCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXJlT3JkZXI6ICdUNTY4QicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZKdW1wZXI6ICcxJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwbGljZUNvdW50OiAnMCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25uZWN0b3JDb3VudDogJzInXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g5pu05paw6aG555uu77yM5re75Yqg5paw55qE5rWL6K+V6YWN572uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY3VycmVudFByb2plY3RJbmRleCA9IHVzZURpc3BsYXlTdG9yZS5nZXRTdGF0ZSgpLnNlbGVjdGVkSW5kZXhlcy5wcm9qZWN0SW5kZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdXBkYXRlZFByb2plY3QgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmN1cnJlbnRQcm9qZWN0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0Q29uZmlnczogWy4uLmN1cnJlbnRQcm9qZWN0LnRlc3RDb25maWdzLCBuZXdDb25maWddXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVQcm9qZWN0KGN1cnJlbnRQcm9qZWN0SW5kZXgsIHVwZGF0ZWRQcm9qZWN0KTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIOiuvue9ruaWsOmFjee9ruS4uumAieS4reeKtuaAgVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5ld0NvbmZpZ0luZGV4ID0gdXBkYXRlZFByb2plY3QudGVzdENvbmZpZ3MubGVuZ3RoIC0gMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTZWxlY3RlZEluZGV4ZXMoeyB0ZXN0Q29uZmlnSW5kZXg6IG5ld0NvbmZpZ0luZGV4IH0pO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g6Lez6L2s5Yiw5rWL6K+V6YWN572u6aG16Z2i5bm26L+b5YWl57yW6L6R6KeG5Zu+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmF2aWdhdGVUbygndGVzdENvbmZpZycsICdzZXR1cCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIOaWsOa1i+ivlVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaC1bMTAwcHhdIG92ZXJmbG93LXktYXV0byBzcGFjZS15LTIgcHItMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y3VycmVudFByb2plY3Q/LnRlc3RDb25maWdzLm1hcCgoY29uZmlnLCBpbmRleCkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e2NvbmZpZy5pZH0gXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiaC1bMTAwcHhdIGJnLWdyYWRpZW50LXRvLWIgZnJvbS1bI2U2ZTNlNl0gdG8tWyM3Yjc5N2JdIHJvdW5kZWQtc20gcC00IHNoYWRvdy1sZyBjdXJzb3ItcG9pbnRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gbmF2aWdhdGVUbygndGVzdENvbmZpZycsICdtYWluJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXgganVzdGlmeS1iZXR3ZWVuXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwic3BhY2UteS0wLjJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtjb25maWcubW9kdWxlVHlwZSA9PT0gJzgwMDAnICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtYmxhY2sgdGV4dC1zbVwiPntjb25maWcucGFyYW1zLmxpbWl0VmFsdWV9PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1ibGFjayB0ZXh0LXNtXCI+e2NvbmZpZy5wYXJhbXMuY2FibGVUeXBlfTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtYmxhY2sgdGV4dC1zbVwiPntjb25maWcucGFyYW1zLndpcmVPcmRlcn08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y29uZmlnLm1vZHVsZVR5cGUgPT09ICdjZnAnICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtYmxhY2sgdGV4dC1zbVwiPuaZuuiDvei/nOerrzwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtYmxhY2sgdGV4dC1zbVwiPntjb25maWcucGFyYW1zLmxpbWl0VmFsdWV9PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1ibGFjayB0ZXh0LXNtXCI+e2NvbmZpZy5wYXJhbXMuY2FibGVUeXBlfTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtYmxhY2sgdGV4dC1zbVwiPntjb25maWcucGFyYW1zLnJlZkp1bXBlcn0g6Lez57q/5Y+C54WnPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2NvbmZpZy5tb2R1bGVUeXBlID09PSAnb2ZwJyAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LWJsYWNrIHRleHQtc21cIj7oh6rliqhPVERSPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1ibGFjayB0ZXh0LXNtXCI+e2NvbmZpZy5wYXJhbXMubGltaXRWYWx1ZX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LWJsYWNrIHRleHQtc21cIj57Y29uZmlnLnBhcmFtcy5jYWJsZVR5cGV9PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBmbGV4LWNvbCBpdGVtcy1lbmQganVzdGlmeS1iZXR3ZWVuXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LWdyYXktNTAwIHRleHQtc21cIj57Y29uZmlnLm1vZHVsZWxhYmxlfTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGdhcC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInctNiBoLTYgYmctWyM0MDQwNDBdIHJvdW5kZWQtc20gZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTsgLy8g6Zi75q2i5LqL5Lu25YaS5rOhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY3VycmVudFByb2plY3RJbmRleCA9IHVzZURpc3BsYXlTdG9yZS5nZXRTdGF0ZSgpLnNlbGVjdGVkSW5kZXhlcy5wcm9qZWN0SW5kZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY3VycmVudFRlc3RDb25maWdJbmRleCA9IHVzZURpc3BsYXlTdG9yZS5nZXRTdGF0ZSgpLnNlbGVjdGVkSW5kZXhlcy50ZXN0Q29uZmlnSW5kZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRDb25maWdJZCA9IGN1cnJlbnRQcm9qZWN0LnRlc3RDb25maWdzW2N1cnJlbnRUZXN0Q29uZmlnSW5kZXhdPy5pZDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyDnpoHmraLliKDpmaTmnIDlkI7kuIDpobnphY3nva5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY3VycmVudFByb2plY3QudGVzdENvbmZpZ3MubGVuZ3RoIDw9IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VG9hc3RNZXNzYWdlKCfkuI3og73liKDpmaTmnIDlkI7kuIDpobnphY3nva4nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyDmm7TmlrDpobnnm67vvIzliKDpmaTpgInkuK3nmoTmtYvor5XphY3nva5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1cGRhdGVkUHJvamVjdCA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uY3VycmVudFByb2plY3QsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RDb25maWdzOiBjdXJyZW50UHJvamVjdC50ZXN0Q29uZmlncy5maWx0ZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0Q29uZmlnID0+IHRlc3RDb25maWcuaWQgIT09IGNvbmZpZy5pZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVQcm9qZWN0KGN1cnJlbnRQcm9qZWN0SW5kZXgsIHVwZGF0ZWRQcm9qZWN0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyDmm7TmlrDpgInkuK3ntKLlvJVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXdJbmRleCA9IHVwZGF0ZWRQcm9qZWN0LnRlc3RDb25maWdzLmZpbmRJbmRleChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdENvbmZpZyA9PiB0ZXN0Q29uZmlnLmlkID09PSBzZWxlY3RlZENvbmZpZ0lkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyDlpoLmnpzliKDpmaTnmoTmmK/lvZPliY3pgInkuK3nmoTphY3nva7vvIzmiJbogIXmib7kuI3liLDpgInkuK3nmoTphY3nva5JRO+8jOWImeiuvue9rue0ouW8leS4ujBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTZWxlY3RlZEluZGV4ZXMoeyBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdENvbmZpZ0luZGV4OiBuZXdJbmRleCA9PT0gLTEgPyAwIDogbmV3SW5kZXggXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy00IGgtNCByZWxhdGl2ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SW1hZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz17Z2V0QXNzZXRVcmwoJy9kZWxldGUucG5nJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ9XCLliKDpmaRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwib2JqZWN0LWNvbnRhaW5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICB7Lyog55S157yGSUTpm4YgKi99XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJzcGFjZS15LTFcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGp1c3RpZnktYmV0d2VlbiBpdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtc20gdGV4dC1ncmF5LTQwMFwiPueUtee8hklE6ZuGPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJoLVs1MHB4XSBiZy1ncmFkaWVudC10by1iIGZyb20tWyNlNmUzZTZdIHRvLVsjN2I3OTdiXSByb3VuZGVkLXNtIHAtNCBzaGFkb3ctbGcgZmxleCBqdXN0aWZ5LWJldHdlZW4gaXRlbXMtY2VudGVyIGN1cnNvci1wb2ludGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gbmF2aWdhdGVUbygnY2FibGVJZCcsICdtYWluJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LWJsYWNrIHRleHQtc21cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIOS4i+S4gOS4qklEOiB7Y3VycmVudFByb2plY3Q/LmNhYmxlSWRzPy5bMF0/Lm5hbWUgfHwgJzAwMSd9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctMyBoLTMgcmVsYXRpdmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJbWFnZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz17Z2V0QXNzZXRVcmwoJy9hcnJvdy5wbmcnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ9XCLnrq3lpLRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJvYmplY3QtY29udGFpblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgY29uc3QgcmVuZGVyVGl0bGVCYXIgPSAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHsgdmlldyB9ID0gbmF2aWdhdGlvbi5jdXJyZW50O1xuICAgICAgICBcbiAgICAgICAgc3dpdGNoICh2aWV3KSB7XG4gICAgICAgICAgICBjYXNlICdjaG9vc2UnOlxuICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8VGl0bGVCYXIgdGl0bGU9XCLmm7TmlLnpobnnm65cIiBiYWNrVG89e251bGx9IHZpZXc9XCJtYWluXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxTdWJUaXRsZUJhciB0aXRsZT1cIumAieaLqeaCqOimgeeahOmhueebrlwiIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIGNhc2UgJ3J4dHgnOlxuICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8VGl0bGVCYXIgdGl0bGU9XCLkvKDovpPpobnnm65cIiBiYWNrVG89e251bGx9IHZpZXc9XCJtYWluXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxTdWJUaXRsZUJhciB0aXRsZT1cIumAieaLqeWtmOWCqOiuvuWkh1wiIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGNhc2UgJ3J4dHgyJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgICAgICAgPFRpdGxlQmFyIHRpdGxlPVwi5Lyg6L6T6aG555uuXCIgYmFja1RvPXtudWxsfSB2aWV3PVwicnh0eFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8U3ViVGl0bGVCYXIgdGl0bGU9XCLpgInmi6nmiYDpnIDmk43kvZxcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBjYXNlICdzZXR1cCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxUaXRsZUJhciB0aXRsZT1cIueuoeeQhumhueebrlwiIGJhY2tUbz17bnVsbH0gdmlldz1cIm1haW5cIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPFN1YlRpdGxlQmFyIHRpdGxlPXtjdXJyZW50UHJvamVjdD8ubmFtZSB8fCAnREVGQVVMVCd9IC8+XG4gICAgICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGNhc2UgJ3JlbmFtZSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxUaXRsZUJhciB0aXRsZT1cIumHjeWRveWQjVwiIGJhY2tUbz17bnVsbH0gdmlldz1cInNldHVwXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgY2FzZSAnbmV3JzpcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgICAgICAgPFRpdGxlQmFyIHRpdGxlPVwi5paw6aG555uuXCIgYmFja1RvPXtudWxsfSB2aWV3PVwiY2hvb3NlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgY2FzZSAnbWFpbic6XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8VGl0bGVCYXIgdGl0bGU9XCLpobnnm65cIiBiYWNrVG89XCJob21lXCIgdmlldz1cIm1haW5cIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPFN1YlRpdGxlQmFyIHRpdGxlPXtjdXJyZW50UHJvamVjdD8ubmFtZSB8fCAnREVGQVVMVCd9IC8+XG4gICAgICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgY29uc3QgcmVuZGVyRm9vdGVyID0gKCkgPT4ge1xuICAgICAgICBjb25zdCB7IHZpZXcgfSA9IG5hdmlnYXRpb24uY3VycmVudDtcbiAgICAgICAgXG4gICAgICAgIHN3aXRjaCAodmlldykge1xuICAgICAgICAgICAgY2FzZSAnY2hvb3NlJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImgtWzYwcHhdIGJnLVsjMzAzMDMwXSBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gcHgtOFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB1cGRhdGVDdXJyZW50VmlldygnbmV3Jyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidy1bMTAwcHhdIGgtWzQwcHhdIGJnLWdyYWRpZW50LXRvLWIgZnJvbS1bIzY1NjU2NV0gdG8tWyMzMTM0MzFdIHJvdW5kZWQtc20gZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgdGV4dC13aGl0ZSBmb250LWJvbGQgc2hhZG93LWxnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICDmlrDpobnnm65cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgXG4gICAgICAgICAgICBjYXNlICdyeHR4JzpcbiAgICAgICAgICAgIGNhc2UgJ3J4dHgyJzpcbiAgICAgICAgICAgIGNhc2UgJ3NldHVwJzpcbiAgICAgICAgICAgIGNhc2UgJ3JlbmFtZSc6XG4gICAgICAgICAgICBjYXNlICduZXcnOlxuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgXG4gICAgICAgICAgICBjYXNlICdtYWluJzpcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaC1bNjBweF0gYmctWyMzMDMwMzBdIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBweC04XCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB1cGRhdGVDdXJyZW50VmlldygnY2hvb3NlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidy1bMTAwcHhdIGgtWzQwcHhdIGJnLWdyYWRpZW50LXRvLWIgZnJvbS1bIzY1NjU2NV0gdG8tWyMzMTM0MzFdIHJvdW5kZWQtc20gZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgdGV4dC13aGl0ZSBmb250LWJvbGQgc2hhZG93LWxnXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIOabtOaUuemhueebrlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDxidXR0b24gXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gdXBkYXRlQ3VycmVudFZpZXcoJ3J4dHgnKX1cbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidy1bMTAwcHhdIGgtWzQwcHhdIGJnLWdyYWRpZW50LXRvLWIgZnJvbS1bIzY1NjU2NV0gdG8tWyMzMTM0MzFdIHJvdW5kZWQtc20gZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgdGV4dC13aGl0ZSBmb250LWJvbGQgc2hhZG93LWxnXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIOS8oOi+k1xuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDxidXR0b24gXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gdXBkYXRlQ3VycmVudFZpZXcoJ3NldHVwJyl9XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInctWzEwMHB4XSBoLVs0MHB4XSBiZy1ncmFkaWVudC10by1iIGZyb20tWyM2NTY1NjVdIHRvLVsjMzEzNDMxXSByb3VuZGVkLXNtIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHRleHQtd2hpdGUgZm9udC1ib2xkIHNoYWRvdy1sZ1wiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICDnrqHnkIZcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgcmV0dXJuIChcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LWZ1bGwgaC1mdWxsIGZsZXggZmxleC1jb2wgb3ZlcmZsb3ctaGlkZGVuXCI+XG4gICAgICAgICAgICA8U3RhdHVzQmFyIC8+XG4gICAgICAgICAgICB7cmVuZGVyVGl0bGVCYXIoKX1cbiAgICAgICAgICAgIHtyZW5kZXJDb250ZW50KCl9XG4gICAgICAgICAgICB7cmVuZGVyRm9vdGVyKCl9XG4gICAgICAgIDwvZGl2PlxuICAgICk7XG59Il0sIm5hbWVzIjpbIlJlYWN0IiwidXNlU3RhdGUiLCJJbWFnZSIsIlN0YXR1c0JhciIsIlRpdGxlQmFyIiwiU3ViVGl0bGVCYXIiLCJLZXlib2FyZCIsInVzZURpc3BsYXlTdG9yZSIsImdldEFzc2V0VXJsIiwiUHJvamVjdCIsImlucHV0VmFsdWUiLCJzZXRJbnB1dFZhbHVlIiwiY3Vyc29yUG9zaXRpb24iLCJzZXRDdXJzb3JQb3NpdGlvbiIsImdldEN1cnJlbnRQcm9qZWN0IiwibmF2aWdhdGlvbiIsIm5hdmlnYXRlVG8iLCJ1cGRhdGVDdXJyZW50VmlldyIsImdvQmFjayIsImRlbGV0ZVByb2plY3QiLCJzZXRTZWxlY3RlZEluZGV4ZXMiLCJ1cGRhdGVQcm9qZWN0IiwiYWRkUHJvamVjdCIsInNldFRvYXN0TWVzc2FnZSIsImN1cnJlbnRQcm9qZWN0IiwicGFzc0NvdW50IiwidGVzdFJlc3VsdHMiLCJmaWx0ZXIiLCJyZXN1bHQiLCJjb3BwZXJTdGF0dXMiLCJDb3BwZXJSZXN1bHRTdGF0dXMiLCJjZnBTdGF0dXMiLCJDRlBSZXN1bHRTdGF0dXMiLCJvZnBTdGF0dXMiLCJvZnBSZXN1bHRTdGF0dXMiLCJsZW5ndGgiLCJmYWlsQ291bnQiLCJyZW5kZXJDb250ZW50IiwidmlldyIsImN1cnJlbnQiLCJkaXYiLCJjbGFzc05hbWUiLCJnZXRTdGF0ZSIsInByb2plY3RzIiwibWFwIiwicHJvamVjdCIsImluZGV4Iiwib25DbGljayIsInByb2plY3RJbmRleCIsInRlc3RDb25maWdJbmRleCIsIm5hbWUiLCJzcmMiLCJhbHQiLCJmaWxsIiwiaWQiLCJidXR0b24iLCJzZWxlY3RlZEluZGV4ZXMiLCJpbnB1dCIsInR5cGUiLCJ2YWx1ZSIsIm9uQ2hhbmdlIiwiZSIsInRhcmdldCIsInNlbGVjdGlvblN0YXJ0Iiwib25Gb2N1cyIsInNldFNlbGVjdGlvblJhbmdlIiwibmV3VmFsdWUiLCJuZXdQb3NpdGlvbiIsIm9uQ29tcGxldGUiLCJ0cmltIiwiY3VycmVudEluZGV4IiwicGxhY2Vob2xkZXIiLCJnZW5lcmF0ZUlkIiwiTWF0aCIsInJhbmRvbSIsInRvU3RyaW5nIiwic3Vic3RyIiwibmV3UHJvamVjdCIsInRlc3RDb25maWdzIiwibW9kdWxlVHlwZSIsIm1vZHVsZWxhYmxlIiwicGFyYW1zIiwibGltaXRWYWx1ZSIsImNhYmxlVHlwZSIsIndpcmVPcmRlciIsImNhYmxlSWRzIiwib3BlcmF0b3JzIiwibmV3SW5kZXgiLCJvcGVyYXRvckluZGV4IiwiY2FibGVJZEluZGV4IiwiZGF0ZSIsInNwYW4iLCJzaXplcyIsIm5ld0NvbmZpZyIsInJlZkp1bXBlciIsInNwbGljZUNvdW50IiwiY29ubmVjdG9yQ291bnQiLCJjdXJyZW50UHJvamVjdEluZGV4IiwidXBkYXRlZFByb2plY3QiLCJuZXdDb25maWdJbmRleCIsImNvbmZpZyIsInN0b3BQcm9wYWdhdGlvbiIsImN1cnJlbnRUZXN0Q29uZmlnSW5kZXgiLCJzZWxlY3RlZENvbmZpZ0lkIiwidGVzdENvbmZpZyIsImZpbmRJbmRleCIsInJlbmRlclRpdGxlQmFyIiwidGl0bGUiLCJiYWNrVG8iLCJyZW5kZXJGb290ZXIiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(pages-dir-node)/./src/components/dsxpage/fluke/Project.js\n"); /***/ }), /***/ "(pages-dir-node)/./src/components/dsxpage/fluke/Result.js": /*!************************************************!*\ !*** ./src/components/dsxpage/fluke/Result.js ***! \************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; eval("__webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ Result)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"react/jsx-dev-runtime\");\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 */ \"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var next_image__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! next/image */ \"(pages-dir-node)/./node_modules/next/image.js\");\n/* harmony import */ var next_image__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(next_image__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _components_lib_StatusBar__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/components/lib/StatusBar */ \"(pages-dir-node)/./src/components/lib/StatusBar.js\");\n/* harmony import */ var _components_lib_TitleBar__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/components/lib/TitleBar */ \"(pages-dir-node)/./src/components/lib/TitleBar.js\");\n/* harmony import */ var _components_lib_SubTitleBar__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/components/lib/SubTitleBar */ \"(pages-dir-node)/./src/components/lib/SubTitleBar.js\");\n/* harmony import */ var _store_displayStore__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @/store/displayStore */ \"(pages-dir-node)/./src/store/displayStore.js\");\n/* harmony import */ var _components_lib_Keyboard__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @/components/lib/Keyboard */ \"(pages-dir-node)/./src/components/lib/Keyboard.js\");\n/* harmony import */ var _utils_asset__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @/utils/asset */ \"(pages-dir-node)/./src/utils/asset.js\");\nvar __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_components_lib_StatusBar__WEBPACK_IMPORTED_MODULE_3__, _components_lib_TitleBar__WEBPACK_IMPORTED_MODULE_4__, _components_lib_SubTitleBar__WEBPACK_IMPORTED_MODULE_5__, _store_displayStore__WEBPACK_IMPORTED_MODULE_6__, _components_lib_Keyboard__WEBPACK_IMPORTED_MODULE_7__, _utils_asset__WEBPACK_IMPORTED_MODULE_8__]);\n([_components_lib_StatusBar__WEBPACK_IMPORTED_MODULE_3__, _components_lib_TitleBar__WEBPACK_IMPORTED_MODULE_4__, _components_lib_SubTitleBar__WEBPACK_IMPORTED_MODULE_5__, _store_displayStore__WEBPACK_IMPORTED_MODULE_6__, _components_lib_Keyboard__WEBPACK_IMPORTED_MODULE_7__, _utils_asset__WEBPACK_IMPORTED_MODULE_8__] = __webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__);\n\n\n\n\n\n\n\n\n\nfunction Result() {\n const { view } = _store_displayStore__WEBPACK_IMPORTED_MODULE_6__[\"default\"].getState().navigation.current;\n const { getCurrentProject, setToastMessage } = (0,_store_displayStore__WEBPACK_IMPORTED_MODULE_6__[\"default\"])();\n const currentProject = getCurrentProject();\n const [isManageMode, setIsManageMode] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n const [selectedResults, setSelectedResults] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)([]);\n const [inputValue, setInputValue] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)('');\n const [showKeyboard, setShowKeyboard] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(true);\n const [cursorPosition, setCursorPosition] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(0);\n // 获取当前项目名称\n const projectName = currentProject?.name || '';\n // 获取测试结果并统计通过/失败数量\n const testResults = currentProject?.testResults || [];\n const passCount = currentProject?.testResults.filter((result)=>{\n const copperStatus = result.CopperResultStatus;\n const cfpStatus = result.CFPResultStatus;\n const ofpStatus = result.ofpResultStatus;\n if (copperStatus) {\n return copperStatus === 'pass';\n } else if (cfpStatus) {\n return cfpStatus === 'pass';\n } else if (ofpStatus) {\n return ofpStatus === 'pass';\n }\n return false;\n }).length;\n const failCount = currentProject?.testResults.filter((result)=>{\n const copperStatus = result.CopperResultStatus;\n const cfpStatus = result.CFPResultStatus;\n const ofpStatus = result.ofpResultStatus;\n if (copperStatus) {\n return copperStatus === 'fail';\n } else if (cfpStatus) {\n return cfpStatus === 'fail';\n } else if (ofpStatus) {\n return ofpStatus === 'fail';\n }\n return false;\n }).length;\n // 对测试结果进行排序:失败在前,通过在后,相同结果按name排序(数字部分按数值大小排序)\n const sortedResults = [\n ...testResults\n ].sort((a, b)=>{\n const aPass = a.resultdata?.result === 'pass';\n const bPass = b.resultdata?.result === 'pass';\n // 如果通过状态相同,则按name排序\n if (aPass === bPass) {\n // 将名称分割成文本和数字部分\n const splitName = (name)=>{\n const match = name.match(/^(.*?)(\\d+)$/);\n if (match) {\n return {\n text: match[1],\n number: parseInt(match[2], 10)\n };\n }\n return {\n text: name,\n number: 0\n };\n };\n const nameA = splitName(a.name);\n const nameB = splitName(b.name);\n // 先比较文本部分\n if (nameA.text !== nameB.text) {\n return nameA.text.localeCompare(nameB.text);\n }\n // 文本相同则比较数字部分\n return nameA.number - nameB.number;\n }\n return aPass ? 1 : -1;\n });\n // 处理选择结果\n const handleSelect = (result)=>{\n setSelectedResults((prev)=>{\n if (prev.includes(result.name)) {\n return prev.filter((name)=>name !== result.name);\n } else {\n return [\n ...prev,\n result.name\n ];\n }\n });\n };\n // 处理删除选中的结果\n const handleDelete = ()=>{\n if (selectedResults.length === 0) return;\n const newResults = testResults.filter((result)=>!selectedResults.includes(result.name));\n const updatedProject = {\n ...currentProject,\n testResults: newResults\n };\n const projectIndex = _store_displayStore__WEBPACK_IMPORTED_MODULE_6__[\"default\"].getState().projects.findIndex((p)=>p.id === currentProject.id);\n _store_displayStore__WEBPACK_IMPORTED_MODULE_6__[\"default\"].getState().updateProject(projectIndex, updatedProject);\n setSelectedResults([]);\n setIsManageMode(false);\n setShowDeleteDialog(false);\n };\n // 重命名逻辑\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)({\n \"Result.useEffect\": ()=>{\n if (view === 'rename' && selectedResults.length === 1) {\n const selectedResult = testResults.find({\n \"Result.useEffect.selectedResult\": (result)=>result.name === selectedResults[0]\n }[\"Result.useEffect.selectedResult\"]);\n setInputValue(selectedResult.name);\n }\n }\n }[\"Result.useEffect\"], [\n view,\n selectedResults,\n testResults\n ]);\n // 处理重命名完成\n const handleRename = ()=>{\n if (!inputValue.trim()) return;\n // 检查是否与其他结果名称冲突\n const isDuplicate = testResults.some((result)=>result.name !== selectedResults[0] && result.name === inputValue.trim());\n if (isDuplicate) {\n setToastMessage('该名称已存在,请使用其他名称');\n return;\n }\n const newResults = testResults.map((result)=>{\n console.log(testResults);\n console.log(result);\n if (result.name === selectedResults[0]) {\n // 处理CFP模块类型的特殊重命名逻辑\n if (result.testconfig?.moduleType === 'cfp') {\n const oldName = result.name;\n const newName = inputValue.trim();\n // 判断旧名字是input还是output\n if (oldName === result.inputname) {\n // 查找关联结果:inputname相同但name不同的结果\n const relatedResult = testResults.find((r)=>r.inputname === result.inputname && r.name !== result.name);\n console.log(\"找到的关联结果:\", relatedResult);\n // 如果是当前选中的结果,更新name和inputname\n if (result.name === selectedResults[0]) {\n // 更新选中结果的name和inputname\n const updatedResult = {\n ...result,\n name: newName,\n inputname: newName\n };\n // 查找并更新关联结果的inputname\n const relatedResult = testResults.find((r)=>r.inputname === result.inputname && r.name !== result.name);\n if (relatedResult) {\n relatedResult.inputname = newName;\n }\n return updatedResult;\n }\n return result;\n } else if (oldName === result.outname) {\n // 查找关联结果:outname相同但name不同的结果\n if (result.name === selectedResults[0]) {\n // outname\n const updatedResult = {\n ...result,\n name: newName,\n outname: newName\n };\n // outname\n const relatedResult = testResults.find((r)=>r.outname === result.outname && r.name !== result.name);\n if (relatedResult) {\n relatedResult.outname = newName;\n }\n return updatedResult;\n }\n return result;\n }\n }\n return {\n ...result,\n name: inputValue.trim()\n };\n }\n return result;\n });\n const updatedProject = {\n ...currentProject,\n testResults: newResults\n };\n const projectIndex = _store_displayStore__WEBPACK_IMPORTED_MODULE_6__[\"default\"].getState().projects.findIndex((p)=>p.id === currentProject.id);\n _store_displayStore__WEBPACK_IMPORTED_MODULE_6__[\"default\"].getState().updateProject(projectIndex, updatedProject);\n _store_displayStore__WEBPACK_IMPORTED_MODULE_6__[\"default\"].getState().navigateTo('result', 'main');\n // 重置管理状态和选中结果状态\n setIsManageMode(false);\n setSelectedResults([]);\n };\n //确认删除提示框 \n const [showDeleteDialog, setShowDeleteDialog] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n //确认移动提示框\n const [showConfirmDialog, setShowConfirmDialog] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n const [targetProject, setTargetProject] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);\n const [showOverwriteDialog, setShowOverwriteDialog] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n const [duplicateResults, setDuplicateResults] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)([]);\n const moveResults = (project, index)=>{\n // 检查是否选择了结果和目标项目\n if (selectedResults.length === 0 || !project) return;\n // 检查是否在同一个项目中移动\n if (project.id === currentProject.id) {\n setToastMessage('不能移动到相同项目');\n return;\n }\n // 检查目标项目中是否有重名结果\n const duplicates = selectedResults.filter((resultName)=>project.testResults.some((targetResult)=>targetResult.name === resultName));\n if (duplicates.length > 0) {\n setDuplicateResults(duplicates);\n setTargetProject(project);\n setShowOverwriteDialog(true);\n } else {\n setTargetProject(project);\n setShowConfirmDialog(true);\n }\n };\n const handleMove = (overwrite = false)=>{\n if (!targetProject) return;\n // 获取要移动的结果对象\n const resultsToMove = testResults.filter((result)=>selectedResults.includes(result.name));\n // 更新目标项目\n const updatedTargetResults = overwrite ? [\n ...targetProject.testResults.filter((result)=>!selectedResults.includes(result.name)),\n ...resultsToMove\n ] : [\n ...targetProject.testResults,\n ...resultsToMove\n ];\n const updatedTargetProject = {\n ...targetProject,\n testResults: updatedTargetResults\n };\n // 更新当前项目\n const updatedCurrentResults = testResults.filter((result)=>!selectedResults.includes(result.name));\n const updatedCurrentProject = {\n ...currentProject,\n testResults: updatedCurrentResults\n };\n // 保存更改\n const targetIndex = _store_displayStore__WEBPACK_IMPORTED_MODULE_6__[\"default\"].getState().projects.findIndex((p)=>p.id === targetProject.id);\n const currentIndex = _store_displayStore__WEBPACK_IMPORTED_MODULE_6__[\"default\"].getState().projects.findIndex((p)=>p.id === currentProject.id);\n _store_displayStore__WEBPACK_IMPORTED_MODULE_6__[\"default\"].getState().updateProject(targetIndex, updatedTargetProject);\n _store_displayStore__WEBPACK_IMPORTED_MODULE_6__[\"default\"].getState().updateProject(currentIndex, updatedCurrentProject);\n // 重置状态\n setSelectedResults([]);\n setIsManageMode(false);\n setShowConfirmDialog(false);\n setShowOverwriteDialog(false);\n setTargetProject(null);\n setDuplicateResults([]);\n // 显示成功消息并返回主视图\n setToastMessage('移动成功');\n _store_displayStore__WEBPACK_IMPORTED_MODULE_6__[\"default\"].getState().navigateTo('result', 'main');\n };\n // 渲染标题栏\n const renderTitleBar = ()=>{\n const { view } = _store_displayStore__WEBPACK_IMPORTED_MODULE_6__[\"default\"].getState().navigation.current;\n switch(view){\n case 'rename':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_TitleBar__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n title: \"重命名结果\",\n backTo: _store_displayStore__WEBPACK_IMPORTED_MODULE_6__[\"default\"].getState().navigation.previous?.name || 'home',\n view: _store_displayStore__WEBPACK_IMPORTED_MODULE_6__[\"default\"].getState().navigation.previous?.view || 'main'\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Result.js\",\n lineNumber: 283,\n columnNumber: 21\n }, this);\n case 'move':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_TitleBar__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n title: \"移至\",\n backTo: _store_displayStore__WEBPACK_IMPORTED_MODULE_6__[\"default\"].getState().navigation.previous?.name || 'home',\n view: _store_displayStore__WEBPACK_IMPORTED_MODULE_6__[\"default\"].getState().navigation.previous?.view || 'main'\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Result.js\",\n lineNumber: 291,\n columnNumber: 21\n }, this);\n case 'main':\n default:\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_TitleBar__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n title: \"结果\",\n backTo: 'home',\n view: 'main'\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Result.js\",\n lineNumber: 300,\n columnNumber: 21\n }, this);\n }\n };\n // 渲染主要内容\n const renderContent = ()=>{\n const { view } = _store_displayStore__WEBPACK_IMPORTED_MODULE_6__[\"default\"].getState().navigation.current;\n switch(view){\n case 'rename':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 bg-[#303040] p-4 flex flex-col\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"relative mb-4 cursor-pointer\",\n onClick: ()=>setShowKeyboard(true),\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"text\",\n className: \"w-full h-[50px] bg-[#ffffe1] rounded-sm p-4 text-black\",\n value: inputValue,\n placeholder: \"请输入测试结果名称\",\n onChange: (e)=>{\n setInputValue(e.target.value);\n setCursorPosition(e.target.selectionStart);\n },\n onClick: (e)=>{\n setShowKeyboard(true);\n setCursorPosition(e.target.selectionStart);\n },\n onFocus: (e)=>{\n const cursorPosition = e.target.selectionStart;\n e.target.setSelectionRange(cursorPosition, cursorPosition);\n }\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Result.js\",\n lineNumber: 321,\n columnNumber: 29\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Result.js\",\n lineNumber: 317,\n columnNumber: 25\n }, this),\n showKeyboard && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_Keyboard__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n value: inputValue,\n cursorPosition: cursorPosition,\n onChange: (newValue, newPosition)=>{\n setInputValue(newValue);\n setCursorPosition(newPosition);\n },\n onComplete: ()=>{\n setShowKeyboard(false);\n }\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Result.js\",\n lineNumber: 341,\n columnNumber: 29\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Result.js\",\n lineNumber: 316,\n columnNumber: 21\n }, this);\n case 'move':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 bg-[#303040] flex flex-col relative\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_SubTitleBar__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n title: \"选择您要的项目\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Result.js\",\n lineNumber: 358,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-y-2 p-4\",\n children: _store_displayStore__WEBPACK_IMPORTED_MODULE_6__[\"default\"].getState().projects.map((project, index)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[50px] bg-gradient-to-b from-[#e6e3e6] to-[#7b797b] rounded-sm p-4 shadow-lg flex justify-between items-center cursor-pointer\",\n onClick: ()=>{\n moveResults(project, index);\n },\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black text-sm\",\n children: project.name\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Result.js\",\n lineNumber: 369,\n columnNumber: 37\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-3 h-3 relative\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: (0,_utils_asset__WEBPACK_IMPORTED_MODULE_8__.getAssetUrl)('/arrow.png'),\n alt: \"箭头\",\n fill: true,\n className: \"object-contain\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Result.js\",\n lineNumber: 371,\n columnNumber: 41\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Result.js\",\n lineNumber: 370,\n columnNumber: 37\n }, this)\n ]\n }, project.id, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Result.js\",\n lineNumber: 362,\n columnNumber: 33\n }, this))\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Result.js\",\n lineNumber: 360,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Result.js\",\n lineNumber: 357,\n columnNumber: 21\n }, this);\n case 'main':\n default:\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[60px] bg-gradient-to-b from-[#b0b0b0] via-[#e0e4e0] to-[#b0b0b0] px-4 flex flex-col justify-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black\",\n children: projectName\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Result.js\",\n lineNumber: 389,\n columnNumber: 29\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-1\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-green-500\",\n children: passCount\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Result.js\",\n lineNumber: 393,\n columnNumber: 37\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-3 h-3 relative\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: (0,_utils_asset__WEBPACK_IMPORTED_MODULE_8__.getAssetUrl)('/pass.png'),\n alt: \"通过\",\n sizes: \"auto\",\n fill: true,\n className: \"object-contain\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Result.js\",\n lineNumber: 395,\n columnNumber: 41\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Result.js\",\n lineNumber: 394,\n columnNumber: 37\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Result.js\",\n lineNumber: 392,\n columnNumber: 33\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-1\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-red-500\",\n children: failCount\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Result.js\",\n lineNumber: 405,\n columnNumber: 37\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-3 h-3 relative\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: (0,_utils_asset__WEBPACK_IMPORTED_MODULE_8__.getAssetUrl)('/fail.png'),\n alt: \"失败\",\n sizes: \"auto\",\n fill: true,\n className: \"object-contain\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Result.js\",\n lineNumber: 407,\n columnNumber: 41\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Result.js\",\n lineNumber: 406,\n columnNumber: 37\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Result.js\",\n lineNumber: 404,\n columnNumber: 33\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Result.js\",\n lineNumber: 391,\n columnNumber: 29\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Result.js\",\n lineNumber: 388,\n columnNumber: 25\n }, this),\n isManageMode && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[40px] px-4 bg-[#efebe6] flex items-center border-b border-gray-600\",\n children: /*#__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: \"checkbox\",\n checked: selectedResults.length === sortedResults.length,\n onChange: ()=>{\n if (selectedResults.length === sortedResults.length) {\n setSelectedResults([]);\n } else {\n setSelectedResults(sortedResults.map((result)=>result.name));\n }\n },\n className: \"w-4 h-4\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Result.js\",\n lineNumber: 421,\n columnNumber: 41\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-black\",\n children: \"选择全部\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Result.js\",\n lineNumber: 433,\n columnNumber: 41\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Result.js\",\n lineNumber: 420,\n columnNumber: 37\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Result.js\",\n lineNumber: 419,\n columnNumber: 33\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 bg-[#303040] overflow-y-auto\",\n style: {\n scrollbarWidth: 'none',\n msOverflowStyle: 'none'\n },\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-y-0\",\n children: sortedResults.map((result, index)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[60px] px-4 bg-[#efebe6] flex items-center justify-between border-b border-gray-600 cursor-pointer\",\n onClick: ()=>!isManageMode && _store_displayStore__WEBPACK_IMPORTED_MODULE_6__[\"default\"].getState().navigateTo('resultinfo', 'save', result),\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-4\",\n children: [\n isManageMode && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"checkbox\",\n checked: selectedResults.includes(result.name),\n onChange: ()=>handleSelect(result),\n className: \"w-4 h-4\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Result.js\",\n lineNumber: 447,\n columnNumber: 49\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-black\",\n children: result.name\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Result.js\",\n lineNumber: 454,\n columnNumber: 45\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Result.js\",\n lineNumber: 445,\n columnNumber: 41\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"img\", {\n src: result.CopperResultStatus === 'pass' || result.ofpResultStatus === 'pass' || result.name === result.inputname && result.InPortStatus === 'pass' || result.name === result.outname && result.OutPortStatus === 'pass' ? (0,_utils_asset__WEBPACK_IMPORTED_MODULE_8__.getAssetUrl)('/pass.png') : (0,_utils_asset__WEBPACK_IMPORTED_MODULE_8__.getAssetUrl)('/fail.png'),\n alt: result.CopperResultStatus === 'pass' || result.ofpResultStatus === 'pass' || result.name === result.inputname && result.InPortStatus === 'pass' || result.name === result.outname && result.OutPortStatus === 'pass' ? '通过' : '失败',\n className: \"w-7 h-7\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Result.js\",\n lineNumber: 456,\n columnNumber: 41\n }, this)\n ]\n }, index, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Result.js\",\n lineNumber: 440,\n columnNumber: 37\n }, this))\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Result.js\",\n lineNumber: 438,\n columnNumber: 29\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Result.js\",\n lineNumber: 437,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true);\n }\n };\n // 渲染底部按钮\n const renderFooter = ()=>{\n const { view } = _store_displayStore__WEBPACK_IMPORTED_MODULE_6__[\"default\"].getState().navigation.current;\n switch(view){\n case 'rename':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[60px] bg-[#303030] flex items-center justify-end px-8\",\n children: !showKeyboard && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: handleRename,\n className: \"w-[100px] h-[40px] bg-gradient-to-b from-[#656565] to-[#313431] rounded-sm flex items-center justify-center text-white font-bold shadow-lg\",\n children: \"完成\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Result.js\",\n lineNumber: 493,\n columnNumber: 29\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Result.js\",\n lineNumber: 491,\n columnNumber: 21\n }, this);\n case 'move':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[60px] bg-[#303030] flex items-center justify-between px-5\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Result.js\",\n lineNumber: 504,\n columnNumber: 21\n }, this);\n case 'main':\n default:\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[60px] bg-[#303030] flex items-center justify-between px-5\",\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)(\"button\", {\n className: \"w-[100px] h-[40px] bg-gradient-to-b from-[#656565] to-[#313431] rounded-sm flex items-center justify-center text-white font-bold shadow-lg\",\n onClick: ()=>{\n if (selectedResults.length > 0) {\n _store_displayStore__WEBPACK_IMPORTED_MODULE_6__[\"default\"].getState().navigateTo('result', 'move');\n }\n },\n disabled: selectedResults.length === 0,\n style: {\n opacity: selectedResults.length > 0 ? 1 : 0.5\n },\n children: \"移动\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Result.js\",\n lineNumber: 513,\n columnNumber: 29\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Result.js\",\n lineNumber: 512,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 flex justify-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n className: \"w-[100px] h-[40px] bg-gradient-to-b from-[#656565] to-[#313431] rounded-sm flex items-center justify-center text-white font-bold shadow-lg\",\n onClick: ()=>{\n if (selectedResults.length === 1) {\n const selectedResult = testResults.find((result)=>result.name === selectedResults[0]);\n _store_displayStore__WEBPACK_IMPORTED_MODULE_6__[\"default\"].getState().navigateTo('result', 'rename', selectedResult);\n }\n },\n disabled: selectedResults.length !== 1,\n style: {\n opacity: selectedResults.length === 1 ? 1 : 0.5\n },\n children: \"重命名\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Result.js\",\n lineNumber: 528,\n columnNumber: 25\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Result.js\",\n lineNumber: 527,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 flex justify-end\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n className: \"w-[100px] h-[40px] bg-gradient-to-b from-[#656565] to-[#313431] rounded-sm flex items-center justify-center text-white font-bold shadow-lg\",\n onClick: ()=>isManageMode ? setShowDeleteDialog(true) : setIsManageMode(true),\n children: isManageMode ? '删除' : '管理'\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Result.js\",\n lineNumber: 543,\n columnNumber: 25\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Result.js\",\n lineNumber: 542,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Result.js\",\n lineNumber: 511,\n columnNumber: 21\n }, this);\n }\n };\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full h-full flex flex-col overflow-hidden\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_StatusBar__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {}, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Result.js\",\n lineNumber: 557,\n columnNumber: 13\n }, this),\n renderTitleBar(),\n renderContent(),\n renderFooter(),\n showDeleteDialog && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-[480px] h-[640px] bg-[#002842d4] absolute z-9999\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"pl-10 pt-60\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-[#2B3C5B] rounded-lg p-6 w-[400px] min-h-[200px] flex flex-col\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h3\", {\n className: \"text-white text-xl font-bold mb-4\",\n children: \"提示\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Result.js\",\n lineNumber: 566,\n columnNumber: 37\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 flex items-center justify-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-white text-lg\",\n children: \"是否删除选中的测试结果?\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Result.js\",\n lineNumber: 568,\n columnNumber: 37\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Result.js\",\n lineNumber: 567,\n columnNumber: 37\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex justify-center mt-4\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex justify-center gap-10\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n className: \"text-white text-s font-bold px-4 py-2 bg-[#1d3155] rounded-md hover:bg-[#2b4466]\",\n onClick: ()=>setShowDeleteDialog(false),\n children: \"取消\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Result.js\",\n lineNumber: 572,\n columnNumber: 37\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n className: \"text-white text-s font-bold px-4 py-2 bg-[#1d3155] rounded-md hover:bg-[#2b4466]\",\n onClick: ()=>handleDelete(),\n children: \"确认\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Result.js\",\n lineNumber: 578,\n columnNumber: 37\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Result.js\",\n lineNumber: 571,\n columnNumber: 33\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Result.js\",\n lineNumber: 570,\n columnNumber: 37\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Result.js\",\n lineNumber: 565,\n columnNumber: 37\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Result.js\",\n lineNumber: 564,\n columnNumber: 29\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Result.js\",\n lineNumber: 563,\n columnNumber: 29\n }, this),\n showConfirmDialog && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-[480px] h-[640px] bg-[#002842d4] absolute z-9999\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"pl-10 pt-60\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-[#2B3C5B] rounded-lg p-6 w-[400px] min-h-[200px] flex flex-col\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h3\", {\n className: \"text-white text-xl font-bold mb-4\",\n children: \"提示\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Result.js\",\n lineNumber: 595,\n columnNumber: 37\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 flex items-center justify-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-white text-lg\",\n children: [\n \"是否将选中的测试结果移动到项目 \",\n targetProject?.name,\n \"?\"\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Result.js\",\n lineNumber: 597,\n columnNumber: 37\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Result.js\",\n lineNumber: 596,\n columnNumber: 37\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex justify-center mt-4\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex justify-center gap-10\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n className: \" text-white text-s font-bold px-4 py-2 bg-[#1d3155] rounded-md hover:bg-[#2b4466]\",\n onClick: ()=>setShowConfirmDialog(false),\n children: \"取消\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Result.js\",\n lineNumber: 601,\n columnNumber: 37\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n className: \" text-white text-s font-bold px-4 py-2 bg-[#1d3155] rounded-md hover:bg-[#2b4466]\",\n onClick: ()=>handleMove(false),\n children: \"确认\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Result.js\",\n lineNumber: 607,\n columnNumber: 37\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Result.js\",\n lineNumber: 600,\n columnNumber: 33\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Result.js\",\n lineNumber: 599,\n columnNumber: 37\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Result.js\",\n lineNumber: 594,\n columnNumber: 37\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Result.js\",\n lineNumber: 593,\n columnNumber: 29\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Result.js\",\n lineNumber: 592,\n columnNumber: 29\n }, this),\n showOverwriteDialog && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-[480px] h-[640px] bg-[#002842d4] absolute z-9999\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"pl-10 pt-60\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-[#2B3C5B] rounded-lg p-6 w-[400px] min-h-[200px] flex flex-col\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h3\", {\n className: \"text-white text-xl font-bold mb-4\",\n children: \"提示\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Result.js\",\n lineNumber: 625,\n columnNumber: 37\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 flex flex-col items-center justify-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-white text-lg mb-4\",\n children: \"以下测试结果在目标项目中已存在:\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Result.js\",\n lineNumber: 627,\n columnNumber: 37\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"ul\", {\n className: \"mb-4 list-disc pl-6\",\n children: duplicateResults.map((name, index)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"li\", {\n className: \"text-red-500\",\n children: name\n }, index, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Result.js\",\n lineNumber: 630,\n columnNumber: 45\n }, this))\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Result.js\",\n lineNumber: 628,\n columnNumber: 37\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-white text-lg\",\n children: \"是否覆盖这些结果?\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Result.js\",\n lineNumber: 633,\n columnNumber: 37\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Result.js\",\n lineNumber: 626,\n columnNumber: 37\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex justify-center mt-4\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex justify-center gap-10\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n className: \"text-white text-s font-bold px-4 py-2 bg-[#1d3155] rounded-md hover:bg-[#2b4466]\",\n onClick: ()=>{\n setShowOverwriteDialog(false);\n setTargetProject(null);\n setDuplicateResults([]);\n },\n children: \"取消\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Result.js\",\n lineNumber: 637,\n columnNumber: 41\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n className: \"text-white text-s font-bold px-4 py-2 bg-[#1d3155] rounded-md hover:bg-[#2b4466]\",\n onClick: ()=>handleMove(true),\n children: \"覆盖\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Result.js\",\n lineNumber: 647,\n columnNumber: 41\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Result.js\",\n lineNumber: 636,\n columnNumber: 37\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Result.js\",\n lineNumber: 635,\n columnNumber: 37\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Result.js\",\n lineNumber: 624,\n columnNumber: 37\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Result.js\",\n lineNumber: 623,\n columnNumber: 29\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Result.js\",\n lineNumber: 622,\n columnNumber: 29\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Result.js\",\n lineNumber: 556,\n columnNumber: 9\n }, this);\n}\n\n__webpack_async_result__();\n} catch(e) { __webpack_async_result__(e); } });//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHBhZ2VzLWRpci1ub2RlKS8uL3NyYy9jb21wb25lbnRzL2RzeHBhZ2UvZmx1a2UvUmVzdWx0LmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQW1EO0FBQ3BCO0FBQ29CO0FBQ0Y7QUFDTTtBQUNKO0FBQ0Y7QUFDTDtBQUU3QixTQUFTVTtJQUNwQixNQUFNLEVBQUVDLElBQUksRUFBRSxHQUFHSixvRUFBd0IsR0FBR00sVUFBVSxDQUFDQyxPQUFPO0lBQzlELE1BQU0sRUFBRUMsaUJBQWlCLEVBQUNDLGVBQWUsRUFBRSxHQUFHVCwrREFBZUE7SUFDN0QsTUFBTVUsaUJBQWlCRjtJQUN2QixNQUFNLENBQUNHLGNBQWNDLGdCQUFnQixHQUFHbEIsK0NBQVFBLENBQUM7SUFDakQsTUFBTSxDQUFDbUIsaUJBQWlCQyxtQkFBbUIsR0FBR3BCLCtDQUFRQSxDQUFDLEVBQUU7SUFDekQsTUFBTSxDQUFDcUIsWUFBWUMsY0FBYyxHQUFHdEIsK0NBQVFBLENBQUM7SUFDN0MsTUFBTSxDQUFDdUIsY0FBY0MsZ0JBQWdCLEdBQUd4QiwrQ0FBUUEsQ0FBQztJQUNqRCxNQUFNLENBQUN5QixnQkFBZ0JDLGtCQUFrQixHQUFHMUIsK0NBQVFBLENBQUM7SUFDckQsV0FBVztJQUNYLE1BQU0yQixjQUFjWCxnQkFBZ0JZLFFBQVE7SUFFNUMsbUJBQW1CO0lBQ25CLE1BQU1DLGNBQWNiLGdCQUFnQmEsZUFBZSxFQUFFO0lBQ3JELE1BQU1DLFlBQVlkLGdCQUFnQmEsWUFBWUUsT0FBT0MsQ0FBQUE7UUFDakQsTUFBTUMsZUFBZUQsT0FBT0Usa0JBQWtCO1FBQzlDLE1BQU1DLFlBQVlILE9BQU9JLGVBQWU7UUFDeEMsTUFBTUMsWUFBWUwsT0FBT00sZUFBZTtRQUV4QyxJQUFJTCxjQUFjO1lBQ2QsT0FBT0EsaUJBQWlCO1FBQzVCLE9BQU8sSUFBSUUsV0FBVztZQUNsQixPQUFPQSxjQUFjO1FBQ3pCLE9BQU8sSUFBSUUsV0FBVztZQUNsQixPQUFPQSxjQUFjO1FBQ3pC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QUNHNUIsV0FBVTs0Q0FDVkMsU0FBUyxJQUFNN0IscUJBQXFCO3NEQUN2Qzs7Ozs7O3NEQUdELDhEQUFDd0Q7NENBQ0c1QixXQUFVOzRDQUNWQyxTQUFTLElBQU1oQixXQUFXO3NEQUM3Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1lBV3hCVixxQ0FDZSw4REFBQ3dCO2dCQUFJQyxXQUFVOzBCQUNmLDRFQUFDRDtvQkFBSUMsV0FBVTs4QkFDUCw0RUFBQ0Q7d0JBQUlDLFdBQVU7OzBDQUNmLDhEQUFDK0I7Z0NBQUcvQixXQUFVOzBDQUFvQzs7Ozs7OzBDQUNsRCw4REFBQ0Q7Z0NBQUlDLFdBQVU7O2tEQUNmLDhEQUFDRDt3Q0FBSUMsV0FBVTtrREFBMEI7Ozs7OztrREFDekMsOERBQUNnQzt3Q0FBR2hDLFdBQVU7a0RBQ1R2QixpQkFBaUJwQixHQUFHLENBQUMsQ0FBQy9DLE1BQU11RSxzQkFDekIsOERBQUNvRDtnREFBZWpDLFdBQVU7MERBQWdCMUY7K0NBQWpDdUU7Ozs7Ozs7Ozs7a0RBR2pCLDhEQUFDa0I7d0NBQUlDLFdBQVU7a0RBQXFCOzs7Ozs7Ozs7Ozs7MENBRXBDLDhEQUFDRDtnQ0FBSUMsV0FBVTswQ0FDZiw0RUFBQ0Q7b0NBQUlDLFdBQVU7O3NEQUNYLDhEQUFDNEI7NENBQ0c1QixXQUFVOzRDQUNWQyxTQUFTO2dEQUNMekIsdUJBQXVCO2dEQUN2QkYsaUJBQWlCO2dEQUNqQkksb0JBQW9CLEVBQUU7NENBQzFCO3NEQUNIOzs7Ozs7c0RBR0QsOERBQUNrRDs0Q0FDRzVCLFdBQVU7NENBQ1ZDLFNBQVMsSUFBTWhCLFdBQVc7c0RBQzdCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFXekMiLCJzb3VyY2VzIjpbIi9vcHQvZGV2L2VzdC1kc3gvc3JjL2NvbXBvbmVudHMvZHN4cGFnZS9mbHVrZS9SZXN1bHQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlLCB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCc7XHJcbmltcG9ydCBJbWFnZSBmcm9tICduZXh0L2ltYWdlJztcclxuaW1wb3J0IFN0YXR1c0JhciBmcm9tICdAL2NvbXBvbmVudHMvbGliL1N0YXR1c0Jhcic7XHJcbmltcG9ydCBUaXRsZUJhciBmcm9tICdAL2NvbXBvbmVudHMvbGliL1RpdGxlQmFyJztcclxuaW1wb3J0IFN1YlRpdGxlQmFyIGZyb20gJ0AvY29tcG9uZW50cy9saWIvU3ViVGl0bGVCYXInO1xyXG5pbXBvcnQgdXNlRGlzcGxheVN0b3JlIGZyb20gJ0Avc3RvcmUvZGlzcGxheVN0b3JlJztcclxuaW1wb3J0IEtleWJvYXJkIGZyb20gJ0AvY29tcG9uZW50cy9saWIvS2V5Ym9hcmQnO1xyXG5pbXBvcnQgeyBnZXRBc3NldFVybCB9IGZyb20gJ0AvdXRpbHMvYXNzZXQnO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gUmVzdWx0KCkge1xyXG4gICAgY29uc3QgeyB2aWV3IH0gPSB1c2VEaXNwbGF5U3RvcmUuZ2V0U3RhdGUoKS5uYXZpZ2F0aW9uLmN1cnJlbnQ7XHJcbiAgICBjb25zdCB7IGdldEN1cnJlbnRQcm9qZWN0LHNldFRvYXN0TWVzc2FnZSB9ID0gdXNlRGlzcGxheVN0b3JlKCk7XHJcbiAgICBjb25zdCBjdXJyZW50UHJvamVjdCA9IGdldEN1cnJlbnRQcm9qZWN0KCk7XHJcbiAgICBjb25zdCBbaXNNYW5hZ2VNb2RlLCBzZXRJc01hbmFnZU1vZGVdID0gdXNlU3RhdGUoZmFsc2UpO1xyXG4gICAgY29uc3QgW3NlbGVjdGVkUmVzdWx0cywgc2V0U2VsZWN0ZWRSZXN1bHRzXSA9IHVzZVN0YXRlKFtdKTtcclxuICAgIGNvbnN0IFtpbnB1dFZhbHVlLCBzZXRJbnB1dFZhbHVlXSA9IHVzZVN0YXRlKCcnKTtcclxuICAgIGNvbnN0IFtzaG93S2V5Ym9hcmQsIHNldFNob3dLZXlib2FyZF0gPSB1c2VTdGF0ZSh0cnVlKTtcclxuICAgIGNvbnN0IFtjdXJzb3JQb3NpdGlvbiwgc2V0Q3Vyc29yUG9zaXRpb25dID0gdXNlU3RhdGUoMCk7XHJcbiAgICAvLyDojrflj5blvZPliY3pobnnm67lkI3np7BcclxuICAgIGNvbnN0IHByb2plY3ROYW1lID0gY3VycmVudFByb2plY3Q/Lm5hbWUgfHwgJyc7XHJcblxyXG4gICAgLy8g6I635Y+W5rWL6K+V57uT5p6c5bm257uf6K6h6YCa6L+HL+Wksei0peaVsOmHj1xyXG4gICAgY29uc3QgdGVzdFJlc3VsdHMgPSBjdXJyZW50UHJvamVjdD8udGVzdFJlc3VsdHMgfHwgW107XHJcbiAgICBjb25zdCBwYXNzQ291bnQgPSBjdXJyZW50UHJvamVjdD8udGVzdFJlc3VsdHMuZmlsdGVyKHJlc3VsdCA9PiB7XHJcbiAgICAgICAgY29uc3QgY29wcGVyU3RhdHVzID0gcmVzdWx0LkNvcHBlclJlc3VsdFN0YXR1cztcclxuICAgICAgICBjb25zdCBjZnBTdGF0dXMgPSByZXN1bHQuQ0ZQUmVzdWx0U3RhdHVzO1xyXG4gICAgICAgIGNvbnN0IG9mcFN0YXR1cyA9IHJlc3VsdC5vZnBSZXN1bHRTdGF0dXM7XHJcbiAgICAgICAgXHJcbiAgICAgICAgaWYgKGNvcHBlclN0YXR1cykge1xyXG4gICAgICAgICAgICByZXR1cm4gY29wcGVyU3RhdHVzID09PSAncGFzcyc7XHJcbiAgICAgICAgfSBlbHNlIGlmIChjZnBTdGF0dXMpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGNmcFN0YXR1cyA9PT0gJ3Bhc3MnO1xyXG4gICAgICAgIH0gZWxzZSBpZiAob2ZwU3RhdHVzKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBvZnBTdGF0dXMgPT09ICdwYXNzJztcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfSkubGVuZ3RoO1xyXG4gICAgXHJcbiAgICBjb25zdCBmYWlsQ291bnQgPSBjdXJyZW50UHJvamVjdD8udGVzdFJlc3VsdHMuZmlsdGVyKHJlc3VsdCA9PiB7XHJcbiAgICAgICAgY29uc3QgY29wcGVyU3RhdHVzID0gcmVzdWx0LkNvcHBlclJlc3VsdFN0YXR1cztcclxuICAgICAgICBjb25zdCBjZnBTdGF0dXMgPSByZXN1bHQuQ0ZQUmVzdWx0U3RhdHVzO1xyXG4gICAgICAgIGNvbnN0IG9mcFN0YXR1cyA9IHJlc3VsdC5vZnBSZXN1bHRTdGF0dXM7XHJcbiAgICAgICAgXHJcbiAgICAgICAgaWYgKGNvcHBlclN0YXR1cykge1xyXG4gICAgICAgICAgICByZXR1cm4gY29wcGVyU3RhdHVzID09PSAnZmFpbCc7XHJcbiAgICAgICAgfSBlbHNlIGlmIChjZnBTdGF0dXMpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGNmcFN0YXR1cyA9PT0gJ2ZhaWwnO1xyXG4gICAgICAgIH0gZWxzZSBpZiAob2ZwU3RhdHVzKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBvZnBTdGF0dXMgPT09ICdmYWlsJztcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfSkubGVuZ3RoO1xyXG5cclxuICAgIC8vIOWvuea1i+ivlee7k+aenOi/m+ihjOaOkuW6j++8muWksei0peWcqOWJje+8jOmAmui/h+WcqOWQju+8jOebuOWQjOe7k+aenOaMiW5hbWXmjpLluo/vvIjmlbDlrZfpg6jliIbmjInmlbDlgLzlpKflsI/mjpLluo/vvIlcclxuICAgIGNvbnN0IHNvcnRlZFJlc3VsdHMgPSBbLi4udGVzdFJlc3VsdHNdLnNvcnQoKGEsIGIpID0+IHtcclxuICAgICAgICBjb25zdCBhUGFzcyA9IGEucmVzdWx0ZGF0YT8ucmVzdWx0ID09PSAncGFzcyc7XHJcbiAgICAgICAgY29uc3QgYlBhc3MgPSBiLnJlc3VsdGRhdGE/LnJlc3VsdCA9PT0gJ3Bhc3MnO1xyXG4gICAgICAgIFxyXG4gICAgICAgIC8vIOWmguaenOmAmui/h+eKtuaAgeebuOWQjO+8jOWImeaMiW5hbWXmjpLluo9cclxuICAgICAgICBpZiAoYVBhc3MgPT09IGJQYXNzKSB7XHJcbiAgICAgICAgICAgIC8vIOWwhuWQjeensOWIhuWJsuaIkOaWh+acrOWSjOaVsOWtl+mDqOWIhlxyXG4gICAgICAgICAgICBjb25zdCBzcGxpdE5hbWUgPSAobmFtZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSBuYW1lLm1hdGNoKC9eKC4qPykoXFxkKykkLyk7XHJcbiAgICAgICAgICAgICAgICBpZiAobWF0Y2gpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OiBtYXRjaFsxXSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgbnVtYmVyOiBwYXJzZUludChtYXRjaFsyXSwgMTApXHJcbiAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHJldHVybiB7IHRleHQ6IG5hbWUsIG51bWJlcjogMCB9O1xyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgY29uc3QgbmFtZUEgPSBzcGxpdE5hbWUoYS5uYW1lKTtcclxuICAgICAgICAgICAgY29uc3QgbmFtZUIgPSBzcGxpdE5hbWUoYi5uYW1lKTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIC8vIOWFiOavlOi+g+aWh+acrOmDqOWIhlxyXG4gICAgICAgICAgICBpZiAobmFtZUEudGV4dCAhPT0gbmFtZUIudGV4dCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG5hbWVBLnRleHQubG9jYWxlQ29tcGFyZShuYW1lQi50ZXh0KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyDmlofmnKznm7jlkIzliJnmr5TovoPmlbDlrZfpg6jliIZcclxuICAgICAgICAgICAgcmV0dXJuIG5hbWVBLm51bWJlciAtIG5hbWVCLm51bWJlcjtcclxuICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICAgICAgcmV0dXJuIGFQYXNzID8gMSA6IC0xO1xyXG4gICAgfSk7XHJcblxyXG4gICAgLy8g5aSE55CG6YCJ5oup57uT5p6cXHJcbiAgICBjb25zdCBoYW5kbGVTZWxlY3QgPSAocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgc2V0U2VsZWN0ZWRSZXN1bHRzKHByZXYgPT4ge1xyXG4gICAgICAgICAgICBpZiAocHJldi5pbmNsdWRlcyhyZXN1bHQubmFtZSkpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBwcmV2LmZpbHRlcihuYW1lID0+IG5hbWUgIT09IHJlc3VsdC5uYW1lKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBbLi4ucHJldiwgcmVzdWx0Lm5hbWVdO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9O1xyXG5cclxuICAgIC8vIOWkhOeQhuWIoOmZpOmAieS4reeahOe7k+aenFxyXG4gICAgY29uc3QgaGFuZGxlRGVsZXRlID0gKCkgPT4ge1xyXG4gICAgICAgIGlmIChzZWxlY3RlZFJlc3VsdHMubGVuZ3RoID09PSAwKSByZXR1cm47XHJcbiAgICAgICAgXHJcbiAgICAgICAgY29uc3QgbmV3UmVzdWx0cyA9IHRlc3RSZXN1bHRzLmZpbHRlcihyZXN1bHQgPT4gIXNlbGVjdGVkUmVzdWx0cy5pbmNsdWRlcyhyZXN1bHQubmFtZSkpO1xyXG4gICAgICAgIGNvbnN0IHVwZGF0ZWRQcm9qZWN0ID0ge1xyXG4gICAgICAgICAgICAuLi5jdXJyZW50UHJvamVjdCxcclxuICAgICAgICAgICAgdGVzdFJlc3VsdHM6IG5ld1Jlc3VsdHNcclxuICAgICAgICB9O1xyXG4gICAgICAgIGNvbnN0IHByb2plY3RJbmRleCA9IHVzZURpc3BsYXlTdG9yZS5nZXRTdGF0ZSgpLnByb2plY3RzLmZpbmRJbmRleChwID0+IHAuaWQgPT09IGN1cnJlbnRQcm9qZWN0LmlkKTtcclxuICAgICAgICB1c2VEaXNwbGF5U3RvcmUuZ2V0U3RhdGUoKS51cGRhdGVQcm9qZWN0KHByb2plY3RJbmRleCwgdXBkYXRlZFByb2plY3QpO1xyXG4gICAgICAgIHNldFNlbGVjdGVkUmVzdWx0cyhbXSk7XHJcbiAgICAgICAgc2V0SXNNYW5hZ2VNb2RlKGZhbHNlKTtcclxuICAgICAgICBzZXRTaG93RGVsZXRlRGlhbG9nKGZhbHNlKTtcclxuXHJcbiAgICB9O1xyXG5cclxuXHJcbiAgICAvLyDph43lkb3lkI3pgLvovpFcclxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XHJcbiAgICAgICAgaWYgKHZpZXcgPT09ICdyZW5hbWUnICYmIHNlbGVjdGVkUmVzdWx0cy5sZW5ndGggPT09IDEpIHtcclxuICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRSZXN1bHQgPSB0ZXN0UmVzdWx0cy5maW5kKHJlc3VsdCA9PiByZXN1bHQubmFtZSA9PT0gc2VsZWN0ZWRSZXN1bHRzWzBdKTtcclxuICAgICAgICAgICAgc2V0SW5wdXRWYWx1ZShzZWxlY3RlZFJlc3VsdC5uYW1lKTtcclxuICAgICAgICB9XHJcbiAgICB9LCBbdmlldywgc2VsZWN0ZWRSZXN1bHRzLCB0ZXN0UmVzdWx0c10pO1xyXG5cclxuICAgIC8vIOWkhOeQhumHjeWRveWQjeWujOaIkFxyXG4gICAgY29uc3QgaGFuZGxlUmVuYW1lID0gKCkgPT4ge1xyXG4gICAgICAgIGlmICghaW5wdXRWYWx1ZS50cmltKCkpIHJldHVybjtcclxuICAgICAgICBcclxuICAgICAgICAvLyDmo4Dmn6XmmK/lkKbkuI7lhbbku5bnu5PmnpzlkI3np7DlhrLnqoFcclxuICAgICAgICBjb25zdCBpc0R1cGxpY2F0ZSA9IHRlc3RSZXN1bHRzLnNvbWUocmVzdWx0ID0+IFxyXG4gICAgICAgICAgICByZXN1bHQubmFtZSAhPT0gc2VsZWN0ZWRSZXN1bHRzWzBdICYmIHJlc3VsdC5uYW1lID09PSBpbnB1dFZhbHVlLnRyaW0oKVxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIGlmIChpc0R1cGxpY2F0ZSkge1xyXG4gICAgICAgICAgICBzZXRUb2FzdE1lc3NhZ2UoJ+ivpeWQjeensOW3suWtmOWcqO+8jOivt+S9v+eUqOWFtuS7luWQjeensCcpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIFxyXG4gICAgICAgIGNvbnN0IG5ld1Jlc3VsdHMgPSB0ZXN0UmVzdWx0cy5tYXAocmVzdWx0ID0+IHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2codGVzdFJlc3VsdHMpO1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhyZXN1bHQpO1xyXG5cclxuICAgICAgICAgICAgaWYgKHJlc3VsdC5uYW1lID09PSBzZWxlY3RlZFJlc3VsdHNbMF0pIHtcclxuICAgICAgICAgICAgICAgIC8vIOWkhOeQhkNGUOaooeWdl+exu+Wei+eahOeJueauiumHjeWRveWQjemAu+i+kVxyXG4gICAgICAgICAgICAgICAgaWYgKHJlc3VsdC50ZXN0Y29uZmlnPy5tb2R1bGVUeXBlID09PSAnY2ZwJykge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG9sZE5hbWUgPSByZXN1bHQubmFtZTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXdOYW1lID0gaW5wdXRWYWx1ZS50cmltKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgLy8g5Yik5pat5pen5ZCN5a2X5pivaW5wdXTov5jmmK9vdXRwdXRcclxuICAgICAgICAgICAgICAgICAgICBpZiAob2xkTmFtZSA9PT0gcmVzdWx0LmlucHV0bmFtZSkgeyAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyDmn6Xmib7lhbPogZTnu5PmnpzvvJppbnB1dG5hbWXnm7jlkIzkvYZuYW1l5LiN5ZCM55qE57uT5p6cXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlbGF0ZWRSZXN1bHQgPSB0ZXN0UmVzdWx0cy5maW5kKHIgPT4gci5pbnB1dG5hbWUgPT09IHJlc3VsdC5pbnB1dG5hbWUgJiYgci5uYW1lICE9PSByZXN1bHQubmFtZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwi5om+5Yiw55qE5YWz6IGU57uT5p6c77yaXCIsIHJlbGF0ZWRSZXN1bHQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyDlpoLmnpzmmK/lvZPliY3pgInkuK3nmoTnu5PmnpzvvIzmm7TmlrBuYW1l5ZKMaW5wdXRuYW1lXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQubmFtZSA9PT0gc2VsZWN0ZWRSZXN1bHRzWzBdKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyDmm7TmlrDpgInkuK3nu5PmnpznmoRuYW1l5ZKMaW5wdXRuYW1lXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1cGRhdGVkUmVzdWx0ID0geyAuLi5yZXN1bHQsIG5hbWU6IG5ld05hbWUsIGlucHV0bmFtZTogbmV3TmFtZSB9O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g5p+l5om+5bm25pu05paw5YWz6IGU57uT5p6c55qEaW5wdXRuYW1lXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByZWxhdGVkUmVzdWx0ID0gdGVzdFJlc3VsdHMuZmluZChyID0+IHIuaW5wdXRuYW1lID09PSByZXN1bHQuaW5wdXRuYW1lICYmIHIubmFtZSAhPT0gcmVzdWx0Lm5hbWUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlbGF0ZWRSZXN1bHQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWxhdGVkUmVzdWx0LmlucHV0bmFtZSA9IG5ld05hbWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdXBkYXRlZFJlc3VsdDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG9sZE5hbWUgPT09IHJlc3VsdC5vdXRuYW1lKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIOafpeaJvuWFs+iBlOe7k+aenO+8mm91dG5hbWXnm7jlkIzkvYZuYW1l5LiN5ZCM55qE57uT5p6cXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQubmFtZSA9PT0gc2VsZWN0ZWRSZXN1bHRzWzBdKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvdXRuYW1lXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1cGRhdGVkUmVzdWx0ID0geyAuLi5yZXN1bHQsIG5hbWU6IG5ld05hbWUsIG91dG5hbWU6IG5ld05hbWUgfTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG91dG5hbWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlbGF0ZWRSZXN1bHQgPSB0ZXN0UmVzdWx0cy5maW5kKHIgPT4gci5vdXRuYW1lID09PSByZXN1bHQub3V0bmFtZSAmJiByLm5hbWUgIT09IHJlc3VsdC5uYW1lKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZWxhdGVkUmVzdWx0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVsYXRlZFJlc3VsdC5vdXRuYW1lID0gbmV3TmFtZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1cGRhdGVkUmVzdWx0O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHJldHVybiB7IC4uLnJlc3VsdCwgbmFtZTogaW5wdXRWYWx1ZS50cmltKCkgfTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIFxyXG4gICAgICAgIGNvbnN0IHVwZGF0ZWRQcm9qZWN0ID0ge1xyXG4gICAgICAgICAgICAuLi5jdXJyZW50UHJvamVjdCxcclxuICAgICAgICAgICAgdGVzdFJlc3VsdHM6IG5ld1Jlc3VsdHNcclxuICAgICAgICB9O1xyXG4gICAgICAgIFxyXG4gICAgICAgIGNvbnN0IHByb2plY3RJbmRleCA9IHVzZURpc3BsYXlTdG9yZS5nZXRTdGF0ZSgpLnByb2plY3RzLmZpbmRJbmRleChwID0+IHAuaWQgPT09IGN1cnJlbnRQcm9qZWN0LmlkKTtcclxuICAgICAgICB1c2VEaXNwbGF5U3RvcmUuZ2V0U3RhdGUoKS51cGRhdGVQcm9qZWN0KHByb2plY3RJbmRleCwgdXBkYXRlZFByb2plY3QpO1xyXG4gICAgICAgIHVzZURpc3BsYXlTdG9yZS5nZXRTdGF0ZSgpLm5hdmlnYXRlVG8oJ3Jlc3VsdCcsICdtYWluJyk7XHJcbiAgICAgICAgXHJcbiAgICAgICAgLy8g6YeN572u566h55CG54q25oCB5ZKM6YCJ5Lit57uT5p6c54q25oCBXHJcbiAgICAgICAgc2V0SXNNYW5hZ2VNb2RlKGZhbHNlKTtcclxuICAgICAgICBzZXRTZWxlY3RlZFJlc3VsdHMoW10pO1xyXG4gICAgICAgIFxyXG4gICAgfTtcclxuICAgXHJcbiAgICAvL+ehruiupOWIoOmZpOaPkOekuuahhiBcclxuICAgIGNvbnN0IFtzaG93RGVsZXRlRGlhbG9nLCBzZXRTaG93RGVsZXRlRGlhbG9nXSA9IHVzZVN0YXRlKGZhbHNlKTtcclxuICAgIC8v56Gu6K6k56e75Yqo5o+Q56S65qGGXHJcbiAgICBjb25zdCBbc2hvd0NvbmZpcm1EaWFsb2csIHNldFNob3dDb25maXJtRGlhbG9nXSA9IHVzZVN0YXRlKGZhbHNlKTtcclxuICAgIGNvbnN0IFt0YXJnZXRQcm9qZWN0LCBzZXRUYXJnZXRQcm9qZWN0XSA9IHVzZVN0YXRlKG51bGwpO1xyXG4gICAgY29uc3QgW3Nob3dPdmVyd3JpdGVEaWFsb2csIHNldFNob3dPdmVyd3JpdGVEaWFsb2ddID0gdXNlU3RhdGUoZmFsc2UpO1xyXG4gICAgY29uc3QgW2R1cGxpY2F0ZVJlc3VsdHMsIHNldER1cGxpY2F0ZVJlc3VsdHNdID0gdXNlU3RhdGUoW10pO1xyXG5cclxuICAgIGNvbnN0IG1vdmVSZXN1bHRzID0gKHByb2plY3QsIGluZGV4KSA9PiB7XHJcbiAgICAgICAgLy8g5qOA5p+l5piv5ZCm6YCJ5oup5LqG57uT5p6c5ZKM55uu5qCH6aG555uuXHJcbiAgICAgICAgaWYgKHNlbGVjdGVkUmVzdWx0cy5sZW5ndGggPT09IDAgfHwgIXByb2plY3QpIHJldHVybjtcclxuICAgICAgICBcclxuICAgICAgICAvLyDmo4Dmn6XmmK/lkKblnKjlkIzkuIDkuKrpobnnm67kuK3np7vliqhcclxuICAgICAgICBpZiAocHJvamVjdC5pZCA9PT0gY3VycmVudFByb2plY3QuaWQpIHtcclxuICAgICAgICAgICAgc2V0VG9hc3RNZXNzYWdlKCfkuI3og73np7vliqjliLDnm7jlkIzpobnnm64nKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8g5qOA5p+l55uu5qCH6aG555uu5Lit5piv5ZCm5pyJ6YeN5ZCN57uT5p6cXHJcbiAgICAgICAgY29uc3QgZHVwbGljYXRlcyA9IHNlbGVjdGVkUmVzdWx0cy5maWx0ZXIocmVzdWx0TmFtZSA9PlxyXG4gICAgICAgICAgICBwcm9qZWN0LnRlc3RSZXN1bHRzLnNvbWUodGFyZ2V0UmVzdWx0ID0+IHRhcmdldFJlc3VsdC5uYW1lID09PSByZXN1bHROYW1lKVxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIGlmIChkdXBsaWNhdGVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgc2V0RHVwbGljYXRlUmVzdWx0cyhkdXBsaWNhdGVzKTtcclxuICAgICAgICAgICAgc2V0VGFyZ2V0UHJvamVjdChwcm9qZWN0KTtcclxuICAgICAgICAgICAgc2V0U2hvd092ZXJ3cml0ZURpYWxvZyh0cnVlKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBzZXRUYXJnZXRQcm9qZWN0KHByb2plY3QpO1xyXG4gICAgICAgICAgICBzZXRTaG93Q29uZmlybURpYWxvZyh0cnVlKTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IGhhbmRsZU1vdmUgPSAob3ZlcndyaXRlID0gZmFsc2UpID0+IHtcclxuICAgICAgICBpZiAoIXRhcmdldFByb2plY3QpIHJldHVybjtcclxuXHJcbiAgICAgICAgLy8g6I635Y+W6KaB56e75Yqo55qE57uT5p6c5a+56LGhXHJcbiAgICAgICAgY29uc3QgcmVzdWx0c1RvTW92ZSA9IHRlc3RSZXN1bHRzLmZpbHRlcihyZXN1bHQgPT4gc2VsZWN0ZWRSZXN1bHRzLmluY2x1ZGVzKHJlc3VsdC5uYW1lKSk7XHJcblxyXG4gICAgICAgIC8vIOabtOaWsOebruagh+mhueebrlxyXG4gICAgICAgIGNvbnN0IHVwZGF0ZWRUYXJnZXRSZXN1bHRzID0gb3ZlcndyaXRlXHJcbiAgICAgICAgICAgID8gWy4uLnRhcmdldFByb2plY3QudGVzdFJlc3VsdHMuZmlsdGVyKHJlc3VsdCA9PiAhc2VsZWN0ZWRSZXN1bHRzLmluY2x1ZGVzKHJlc3VsdC5uYW1lKSksIC4uLnJlc3VsdHNUb01vdmVdXHJcbiAgICAgICAgICAgIDogWy4uLnRhcmdldFByb2plY3QudGVzdFJlc3VsdHMsIC4uLnJlc3VsdHNUb01vdmVdO1xyXG5cclxuICAgICAgICBjb25zdCB1cGRhdGVkVGFyZ2V0UHJvamVjdCA9IHtcclxuICAgICAgICAgICAgLi4udGFyZ2V0UHJvamVjdCxcclxuICAgICAgICAgICAgdGVzdFJlc3VsdHM6IHVwZGF0ZWRUYXJnZXRSZXN1bHRzXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgLy8g5pu05paw5b2T5YmN6aG555uuXHJcbiAgICAgICAgY29uc3QgdXBkYXRlZEN1cnJlbnRSZXN1bHRzID0gdGVzdFJlc3VsdHMuZmlsdGVyKHJlc3VsdCA9PiAhc2VsZWN0ZWRSZXN1bHRzLmluY2x1ZGVzKHJlc3VsdC5uYW1lKSk7XHJcbiAgICAgICAgY29uc3QgdXBkYXRlZEN1cnJlbnRQcm9qZWN0ID0ge1xyXG4gICAgICAgICAgICAuLi5jdXJyZW50UHJvamVjdCxcclxuICAgICAgICAgICAgdGVzdFJlc3VsdHM6IHVwZGF0ZWRDdXJyZW50UmVzdWx0c1xyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIC8vIOS/neWtmOabtOaUuVxyXG4gICAgICAgIGNvbnN0IHRhcmdldEluZGV4ID0gdXNlRGlzcGxheVN0b3JlLmdldFN0YXRlKCkucHJvamVjdHMuZmluZEluZGV4KHAgPT4gcC5pZCA9PT0gdGFyZ2V0UHJvamVjdC5pZCk7XHJcbiAgICAgICAgY29uc3QgY3VycmVudEluZGV4ID0gdXNlRGlzcGxheVN0b3JlLmdldFN0YXRlKCkucHJvamVjdHMuZmluZEluZGV4KHAgPT4gcC5pZCA9PT0gY3VycmVudFByb2plY3QuaWQpO1xyXG4gICAgICAgIFxyXG4gICAgICAgIHVzZURpc3BsYXlTdG9yZS5nZXRTdGF0ZSgpLnVwZGF0ZVByb2plY3QodGFyZ2V0SW5kZXgsIHVwZGF0ZWRUYXJnZXRQcm9qZWN0KTtcclxuICAgICAgICB1c2VEaXNwbGF5U3RvcmUuZ2V0U3RhdGUoKS51cGRhdGVQcm9qZWN0KGN1cnJlbnRJbmRleCwgdXBkYXRlZEN1cnJlbnRQcm9qZWN0KTtcclxuXHJcbiAgICAgICAgLy8g6YeN572u54q25oCBXHJcbiAgICAgICAgc2V0U2VsZWN0ZWRSZXN1bHRzKFtdKTtcclxuICAgICAgICBzZXRJc01hbmFnZU1vZGUoZmFsc2UpO1xyXG4gICAgICAgIHNldFNob3dDb25maXJtRGlhbG9nKGZhbHNlKTtcclxuICAgICAgICBzZXRTaG93T3ZlcndyaXRlRGlhbG9nKGZhbHNlKTtcclxuICAgICAgICBzZXRUYXJnZXRQcm9qZWN0KG51bGwpO1xyXG4gICAgICAgIHNldER1cGxpY2F0ZVJlc3VsdHMoW10pO1xyXG5cclxuICAgICAgICAvLyDmmL7npLrmiJDlip/mtojmga/lubbov5Tlm57kuLvop4blm75cclxuICAgICAgICBzZXRUb2FzdE1lc3NhZ2UoJ+enu+WKqOaIkOWKnycpO1xyXG4gICAgICAgIHVzZURpc3BsYXlTdG9yZS5nZXRTdGF0ZSgpLm5hdmlnYXRlVG8oJ3Jlc3VsdCcsICdtYWluJyk7XHJcbiAgICB9O1xyXG5cclxuICAgIC8vIOa4suafk+agh+mimOagj1xyXG4gICAgY29uc3QgcmVuZGVyVGl0bGVCYXIgPSAoKSA9PiB7XHJcbiAgICAgICAgY29uc3QgeyB2aWV3IH0gPSB1c2VEaXNwbGF5U3RvcmUuZ2V0U3RhdGUoKS5uYXZpZ2F0aW9uLmN1cnJlbnQ7XHJcbiAgICAgICAgXHJcbiAgICAgICAgc3dpdGNoICh2aWV3KSB7XHJcbiAgICAgICAgICAgIGNhc2UgJ3JlbmFtZSc6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgICAgIDxUaXRsZUJhciBcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9XCLph43lkb3lkI3nu5PmnpxcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgYmFja1RvPXt1c2VEaXNwbGF5U3RvcmUuZ2V0U3RhdGUoKS5uYXZpZ2F0aW9uLnByZXZpb3VzPy5uYW1lIHx8ICdob21lJ30gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZpZXc9e3VzZURpc3BsYXlTdG9yZS5nZXRTdGF0ZSgpLm5hdmlnYXRpb24ucHJldmlvdXM/LnZpZXcgfHwgJ21haW4nfSBcclxuICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgY2FzZSAnbW92ZSc6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgICAgIDxUaXRsZUJhciBcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9XCLnp7voh7NcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgYmFja1RvPXt1c2VEaXNwbGF5U3RvcmUuZ2V0U3RhdGUoKS5uYXZpZ2F0aW9uLnByZXZpb3VzPy5uYW1lIHx8ICdob21lJ30gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZpZXc9e3VzZURpc3BsYXlTdG9yZS5nZXRTdGF0ZSgpLm5hdmlnYXRpb24ucHJldmlvdXM/LnZpZXcgfHwgJ21haW4nfSBcclxuICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgY2FzZSAnbWFpbic6XHJcbiAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgICAgIDxUaXRsZUJhciBcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9XCLnu5PmnpxcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgYmFja1RvPXsnaG9tZSd9IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB2aWV3PXsnbWFpbid9IFxyXG4gICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgLy8g5riy5p+T5Li76KaB5YaF5a65XHJcbiAgICBjb25zdCByZW5kZXJDb250ZW50ID0gKCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHsgdmlldyB9ID0gdXNlRGlzcGxheVN0b3JlLmdldFN0YXRlKCkubmF2aWdhdGlvbi5jdXJyZW50O1xyXG4gICAgICAgIFxyXG4gICAgICAgIHN3aXRjaCAodmlldykge1xyXG4gICAgICAgICAgICBjYXNlICdyZW5hbWUnOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXgtMSBiZy1bIzMwMzA0MF0gcC00IGZsZXggZmxleC1jb2xcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInJlbGF0aXZlIG1iLTQgY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gc2V0U2hvd0tleWJvYXJkKHRydWUpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInctZnVsbCBoLVs1MHB4XSBiZy1bI2ZmZmZlMV0gcm91bmRlZC1zbSBwLTQgdGV4dC1ibGFja1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2lucHV0VmFsdWV9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCLor7fovpPlhaXmtYvor5Xnu5PmnpzlkI3np7BcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRJbnB1dFZhbHVlKGUudGFyZ2V0LnZhbHVlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0Q3Vyc29yUG9zaXRpb24oZS50YXJnZXQuc2VsZWN0aW9uU3RhcnQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KGUpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U2hvd0tleWJvYXJkKHRydWUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRDdXJzb3JQb3NpdGlvbihlLnRhcmdldC5zZWxlY3Rpb25TdGFydCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkZvY3VzPXsoZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjdXJzb3JQb3NpdGlvbiA9IGUudGFyZ2V0LnNlbGVjdGlvblN0YXJ0O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnRhcmdldC5zZXRTZWxlY3Rpb25SYW5nZShjdXJzb3JQb3NpdGlvbiwgY3Vyc29yUG9zaXRpb24pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3Nob3dLZXlib2FyZCAmJiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8S2V5Ym9hcmQgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2lucHV0VmFsdWV9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3Vyc29yUG9zaXRpb249e2N1cnNvclBvc2l0aW9ufVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsobmV3VmFsdWUsIG5ld1Bvc2l0aW9uKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldElucHV0VmFsdWUobmV3VmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRDdXJzb3JQb3NpdGlvbihuZXdQb3NpdGlvbik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNvbXBsZXRlPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFNob3dLZXlib2FyZChmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICBjYXNlICdtb3ZlJzpcclxuICAgICAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4LTEgYmctWyMzMDMwNDBdIGZsZXggZmxleC1jb2wgcmVsYXRpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPFN1YlRpdGxlQmFyIHRpdGxlPVwi6YCJ5oup5oKo6KaB55qE6aG555uuXCIgLz5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwic3BhY2UteS0yIHAtNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3VzZURpc3BsYXlTdG9yZS5nZXRTdGF0ZSgpLnByb2plY3RzLm1hcCgocHJvamVjdCwgaW5kZXgpID0+IChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e3Byb2plY3QuaWR9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImgtWzUwcHhdIGJnLWdyYWRpZW50LXRvLWIgZnJvbS1bI2U2ZTNlNl0gdG8tWyM3Yjc5N2JdIHJvdW5kZWQtc20gcC00IHNoYWRvdy1sZyBmbGV4IGp1c3RpZnktYmV0d2VlbiBpdGVtcy1jZW50ZXIgY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb3ZlUmVzdWx0cyhwcm9qZWN0LCBpbmRleCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtYmxhY2sgdGV4dC1zbVwiPntwcm9qZWN0Lm5hbWV9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy0zIGgtMyByZWxhdGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEltYWdlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjPXtnZXRBc3NldFVybCgnL2Fycm93LnBuZycpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdD1cIueureWktFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cIm9iamVjdC1jb250YWluXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgKTtcclxuXHJcbiAgICAgICAgICAgIGNhc2UgJ21haW4nOlxyXG4gICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICAgICAgICA8PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImgtWzYwcHhdIGJnLWdyYWRpZW50LXRvLWIgZnJvbS1bI2IwYjBiMF0gdmlhLVsjZTBlNGUwXSB0by1bI2IwYjBiMF0gcHgtNCBmbGV4IGZsZXgtY29sIGp1c3RpZnktY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtYmxhY2tcIj57cHJvamVjdE5hbWV9PC9kaXY+XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC1ncmVlbi01MDBcIj57cGFzc0NvdW50fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LTMgaC0zIHJlbGF0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SW1hZ2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9e2dldEFzc2V0VXJsKCcvcGFzcy5wbmcnKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ9XCLpgJrov4dcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVzPXtcImF1dG9cIn1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwib2JqZWN0LWNvbnRhaW5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LXJlZC01MDBcIj57ZmFpbENvdW50fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LTMgaC0zIHJlbGF0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SW1hZ2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9e2dldEFzc2V0VXJsKCcvZmFpbC5wbmcnKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ9XCLlpLHotKVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVzPXtcImF1dG9cIn1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwib2JqZWN0LWNvbnRhaW5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHtpc01hbmFnZU1vZGUgJiYgKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaC1bNDBweF0gcHgtNCBiZy1bI2VmZWJlNl0gZmxleCBpdGVtcy1jZW50ZXIgYm9yZGVyLWIgYm9yZGVyLWdyYXktNjAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tlZD17c2VsZWN0ZWRSZXN1bHRzLmxlbmd0aCA9PT0gc29ydGVkUmVzdWx0cy5sZW5ndGh9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eygpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNlbGVjdGVkUmVzdWx0cy5sZW5ndGggPT09IHNvcnRlZFJlc3VsdHMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTZWxlY3RlZFJlc3VsdHMoW10pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U2VsZWN0ZWRSZXN1bHRzKHNvcnRlZFJlc3VsdHMubWFwKHJlc3VsdCA9PiByZXN1bHQubmFtZSkpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ3LTQgaC00XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LWJsYWNrXCI+6YCJ5oup5YWo6YOoPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleC0xIGJnLVsjMzAzMDQwXSBvdmVyZmxvdy15LWF1dG9cIiBzdHlsZT17eyBzY3JvbGxiYXJXaWR0aDogJ25vbmUnLCBtc092ZXJmbG93U3R5bGU6ICdub25lJyB9fT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwic3BhY2UteS0wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3NvcnRlZFJlc3VsdHMubWFwKChyZXN1bHQsIGluZGV4KSA9PiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e2luZGV4fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiaC1bNjBweF0gcHgtNCBiZy1bI2VmZWJlNl0gZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIGJvcmRlci1iIGJvcmRlci1ncmF5LTYwMCBjdXJzb3ItcG9pbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiAhaXNNYW5hZ2VNb2RlICYmIHVzZURpc3BsYXlTdG9yZS5nZXRTdGF0ZSgpLm5hdmlnYXRlVG8oJ3Jlc3VsdGluZm8nLCAnc2F2ZScsIHJlc3VsdCl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7aXNNYW5hZ2VNb2RlICYmIChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tlZD17c2VsZWN0ZWRSZXN1bHRzLmluY2x1ZGVzKHJlc3VsdC5uYW1lKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoKSA9PiBoYW5kbGVTZWxlY3QocmVzdWx0KX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInctNCBoLTRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC1ibGFja1wiPntyZXN1bHQubmFtZX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjPXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LkNvcHBlclJlc3VsdFN0YXR1cyA9PT0gJ3Bhc3MnIHx8IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQub2ZwUmVzdWx0U3RhdHVzID09PSAncGFzcycgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlc3VsdC5uYW1lID09PSByZXN1bHQuaW5wdXRuYW1lICYmIHJlc3VsdC5JblBvcnRTdGF0dXMgPT09ICdwYXNzJykgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlc3VsdC5uYW1lID09PSByZXN1bHQub3V0bmFtZSAmJiByZXN1bHQuT3V0UG9ydFN0YXR1cyA9PT0gJ3Bhc3MnKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGdldEFzc2V0VXJsKCcvcGFzcy5wbmcnKSBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBnZXRBc3NldFVybCgnL2ZhaWwucG5nJylcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0PXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LkNvcHBlclJlc3VsdFN0YXR1cyA9PT0gJ3Bhc3MnIHx8IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQub2ZwUmVzdWx0U3RhdHVzID09PSAncGFzcycgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlc3VsdC5uYW1lID09PSByZXN1bHQuaW5wdXRuYW1lICYmIHJlc3VsdC5JblBvcnRTdGF0dXMgPT09ICdwYXNzJykgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlc3VsdC5uYW1lID09PSByZXN1bHQub3V0bmFtZSAmJiByZXN1bHQuT3V0UG9ydFN0YXR1cyA9PT0gJ3Bhc3MnKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICfpgJrov4cnIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICflpLHotKUnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInctNyBoLTdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC8+XHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgLy8g5riy5p+T5bqV6YOo5oyJ6ZKuXHJcbiAgICBjb25zdCByZW5kZXJGb290ZXIgPSAoKSA9PiB7XHJcbiAgICAgICAgY29uc3QgeyB2aWV3IH0gPSB1c2VEaXNwbGF5U3RvcmUuZ2V0U3RhdGUoKS5uYXZpZ2F0aW9uLmN1cnJlbnQ7XHJcbiAgICAgICAgXHJcbiAgICAgICAgc3dpdGNoICh2aWV3KSB7XHJcbiAgICAgICAgICAgIGNhc2UgJ3JlbmFtZSc6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaC1bNjBweF0gYmctWyMzMDMwMzBdIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktZW5kIHB4LThcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgeyFzaG93S2V5Ym9hcmQgJiYgKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXtoYW5kbGVSZW5hbWV9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidy1bMTAwcHhdIGgtWzQwcHhdIGJnLWdyYWRpZW50LXRvLWIgZnJvbS1bIzY1NjU2NV0gdG8tWyMzMTM0MzFdIHJvdW5kZWQtc20gZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgdGV4dC13aGl0ZSBmb250LWJvbGQgc2hhZG93LWxnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDlrozmiJBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgY2FzZSAnbW92ZSc6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4oXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJoLVs2MHB4XSBiZy1bIzMwMzAzMF0gZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIHB4LTVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgY2FzZSAnbWFpbic6XHJcbiAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaC1bNjBweF0gYmctWyMzMDMwMzBdIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBweC01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleC0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInctWzEwMHB4XSBoLVs0MHB4XSBiZy1ncmFkaWVudC10by1iIGZyb20tWyM2NTY1NjVdIHRvLVsjMzEzNDMxXSByb3VuZGVkLXNtIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHRleHQtd2hpdGUgZm9udC1ib2xkIHNoYWRvdy1sZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2VsZWN0ZWRSZXN1bHRzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZURpc3BsYXlTdG9yZS5nZXRTdGF0ZSgpLm5hdmlnYXRlVG8oJ3Jlc3VsdCcsICdtb3ZlJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtzZWxlY3RlZFJlc3VsdHMubGVuZ3RoID09PSAwfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7IG9wYWNpdHk6IHNlbGVjdGVkUmVzdWx0cy5sZW5ndGggPiAwID8gMSA6IDAuNSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIOenu+WKqFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4LTEgZmxleCBqdXN0aWZ5LWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidy1bMTAwcHhdIGgtWzQwcHhdIGJnLWdyYWRpZW50LXRvLWIgZnJvbS1bIzY1NjU2NV0gdG8tWyMzMTM0MzFdIHJvdW5kZWQtc20gZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgdGV4dC13aGl0ZSBmb250LWJvbGQgc2hhZG93LWxnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2VsZWN0ZWRSZXN1bHRzLmxlbmd0aCA9PT0gMSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzZWxlY3RlZFJlc3VsdCA9IHRlc3RSZXN1bHRzLmZpbmQocmVzdWx0ID0+IHJlc3VsdC5uYW1lID09PSBzZWxlY3RlZFJlc3VsdHNbMF0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VEaXNwbGF5U3RvcmUuZ2V0U3RhdGUoKS5uYXZpZ2F0ZVRvKCdyZXN1bHQnLCAncmVuYW1lJywgc2VsZWN0ZWRSZXN1bHQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17c2VsZWN0ZWRSZXN1bHRzLmxlbmd0aCAhPT0gMX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7IG9wYWNpdHk6IHNlbGVjdGVkUmVzdWx0cy5sZW5ndGggPT09IDEgPyAxIDogMC41IH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIOmHjeWRveWQjVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleC0xIGZsZXgganVzdGlmeS1lbmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInctWzEwMHB4XSBoLVs0MHB4XSBiZy1ncmFkaWVudC10by1iIGZyb20tWyM2NTY1NjVdIHRvLVsjMzEzNDMxXSByb3VuZGVkLXNtIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHRleHQtd2hpdGUgZm9udC1ib2xkIHNoYWRvdy1sZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBpc01hbmFnZU1vZGUgPyBzZXRTaG93RGVsZXRlRGlhbG9nKHRydWUpIDogc2V0SXNNYW5hZ2VNb2RlKHRydWUpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7aXNNYW5hZ2VNb2RlID8gJ+WIoOmZpCcgOiAn566h55CGJ31cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG5cclxuICAgIHJldHVybiAoXHJcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LWZ1bGwgaC1mdWxsIGZsZXggZmxleC1jb2wgb3ZlcmZsb3ctaGlkZGVuXCI+XHJcbiAgICAgICAgICAgIDxTdGF0dXNCYXIgLz5cclxuICAgICAgICAgICAge3JlbmRlclRpdGxlQmFyKCl9XHJcbiAgICAgICAgICAgIHtyZW5kZXJDb250ZW50KCl9XHJcbiAgICAgICAgICAgIHtyZW5kZXJGb290ZXIoKX1cclxuICAgICAgICAgICAgey8qIOehruiupOWIoOmZpOWvueivneahhiAqL31cclxuICAgICAgICAgICAge3Nob3dEZWxldGVEaWFsb2cgJiYgKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LVs0ODBweF0gaC1bNjQwcHhdIGJnLVsjMDAyODQyZDRdIGFic29sdXRlIHotOTk5OVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9J3BsLTEwIHB0LTYwJz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJiZy1bIzJCM0M1Ql0gcm91bmRlZC1sZyBwLTYgdy1bNDAwcHhdIG1pbi1oLVsyMDBweF0gZmxleCBmbGV4LWNvbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDMgY2xhc3NOYW1lPVwidGV4dC13aGl0ZSB0ZXh0LXhsIGZvbnQtYm9sZCBtYi00XCI+5o+Q56S6PC9oMz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4LTEgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LXdoaXRlIHRleHQtbGdcIj7mmK/lkKbliKDpmaTpgInkuK3nmoTmtYvor5Xnu5PmnpzvvJ88L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBqdXN0aWZ5LWNlbnRlciBtdC00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGp1c3RpZnktY2VudGVyIGdhcC0xMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ0ZXh0LXdoaXRlIHRleHQtcyBmb250LWJvbGQgcHgtNCBweS0yIGJnLVsjMWQzMTU1XSByb3VuZGVkLW1kIGhvdmVyOmJnLVsjMmI0NDY2XVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRTaG93RGVsZXRlRGlhbG9nKGZhbHNlKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg5Y+W5raIXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ0ZXh0LXdoaXRlIHRleHQtcyBmb250LWJvbGQgcHgtNCBweS0yIGJnLVsjMWQzMTU1XSByb3VuZGVkLW1kIGhvdmVyOmJnLVsjMmI0NDY2XVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBoYW5kbGVEZWxldGUoKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg56Gu6K6kXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICApfVxyXG4gICAgICAgICAgICB7Lyog56Gu6K6k56e75Yqo5a+56K+d5qGGICovfVxyXG4gICAgICAgICAgICB7c2hvd0NvbmZpcm1EaWFsb2cgJiYgKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LVs0ODBweF0gaC1bNjQwcHhdIGJnLVsjMDAyODQyZDRdIGFic29sdXRlIHotOTk5OVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9J3BsLTEwIHB0LTYwJz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJiZy1bIzJCM0M1Ql0gcm91bmRlZC1sZyBwLTYgdy1bNDAwcHhdIG1pbi1oLVsyMDBweF0gZmxleCBmbGV4LWNvbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDMgY2xhc3NOYW1lPVwidGV4dC13aGl0ZSB0ZXh0LXhsIGZvbnQtYm9sZCBtYi00XCI+5o+Q56S6PC9oMz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4LTEgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LXdoaXRlIHRleHQtbGdcIj7mmK/lkKblsIbpgInkuK3nmoTmtYvor5Xnu5Pmnpznp7vliqjliLDpobnnm64ge3RhcmdldFByb2plY3Q/Lm5hbWV977yfPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXgganVzdGlmeS1jZW50ZXIgbXQtNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBqdXN0aWZ5LWNlbnRlciBnYXAtMTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiIHRleHQtd2hpdGUgdGV4dC1zIGZvbnQtYm9sZCBweC00IHB5LTIgYmctWyMxZDMxNTVdIHJvdW5kZWQtbWQgaG92ZXI6YmctWyMyYjQ0NjZdXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldFNob3dDb25maXJtRGlhbG9nKGZhbHNlKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg5Y+W5raIXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCIgdGV4dC13aGl0ZSB0ZXh0LXMgZm9udC1ib2xkIHB4LTQgcHktMiBiZy1bIzFkMzE1NV0gcm91bmRlZC1tZCBob3ZlcjpiZy1bIzJiNDQ2Nl1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gaGFuZGxlTW92ZShmYWxzZSl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIOehruiupFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgIHsvKiDph43lkI3opobnm5bnoa7orqTlr7nor53moYYgKi99XHJcbiAgICAgICAgICAgIHtzaG93T3ZlcndyaXRlRGlhbG9nICYmIChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy1bNDgwcHhdIGgtWzY0MHB4XSBiZy1bIzAwMjg0MmQ0XSBhYnNvbHV0ZSB6LTk5OTlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPSdwbC0xMCBwdC02MCc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmctWyMyQjNDNUJdIHJvdW5kZWQtbGcgcC02IHctWzQwMHB4XSBtaW4taC1bMjAwcHhdIGZsZXggZmxleC1jb2xcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzTmFtZT1cInRleHQtd2hpdGUgdGV4dC14bCBmb250LWJvbGQgbWItNFwiPuaPkOekujwvaDM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleC0xIGZsZXggZmxleC1jb2wgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC13aGl0ZSB0ZXh0LWxnIG1iLTRcIj7ku6XkuIvmtYvor5Xnu5PmnpzlnKjnm67moIfpobnnm67kuK3lt7LlrZjlnKjvvJo8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzTmFtZT1cIm1iLTQgbGlzdC1kaXNjIHBsLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtkdXBsaWNhdGVSZXN1bHRzLm1hcCgobmFtZSwgaW5kZXgpID0+IChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkga2V5PXtpbmRleH0gY2xhc3NOYW1lPVwidGV4dC1yZWQtNTAwXCI+e25hbWV9PC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtd2hpdGUgdGV4dC1sZ1wiPuaYr+WQpuimhueblui/meS6m+e7k+aenO+8nzwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGp1c3RpZnktY2VudGVyIG10LTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGp1c3RpZnktY2VudGVyIGdhcC0xMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInRleHQtd2hpdGUgdGV4dC1zIGZvbnQtYm9sZCBweC00IHB5LTIgYmctWyMxZDMxNTVdIHJvdW5kZWQtbWQgaG92ZXI6YmctWyMyYjQ0NjZdXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFNob3dPdmVyd3JpdGVEaWFsb2coZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUYXJnZXRQcm9qZWN0KG51bGwpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXREdXBsaWNhdGVSZXN1bHRzKFtdKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIOWPlua2iFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidGV4dC13aGl0ZSB0ZXh0LXMgZm9udC1ib2xkIHB4LTQgcHktMiBiZy1bIzFkMzE1NV0gcm91bmRlZC1tZCBob3ZlcjpiZy1bIzJiNDQ2Nl1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IGhhbmRsZU1vdmUodHJ1ZSl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg6KaG55uWXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICl9XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICApO1xyXG59XHJcbiAgICJdLCJuYW1lcyI6WyJSZWFjdCIsInVzZVN0YXRlIiwidXNlRWZmZWN0IiwiSW1hZ2UiLCJTdGF0dXNCYXIiLCJUaXRsZUJhciIsIlN1YlRpdGxlQmFyIiwidXNlRGlzcGxheVN0b3JlIiwiS2V5Ym9hcmQiLCJnZXRBc3NldFVybCIsIlJlc3VsdCIsInZpZXciLCJnZXRTdGF0ZSIsIm5hdmlnYXRpb24iLCJjdXJyZW50IiwiZ2V0Q3VycmVudFByb2plY3QiLCJzZXRUb2FzdE1lc3NhZ2UiLCJjdXJyZW50UHJvamVjdCIsImlzTWFuYWdlTW9kZSIsInNldElzTWFuYWdlTW9kZSIsInNlbGVjdGVkUmVzdWx0cyIsInNldFNlbGVjdGVkUmVzdWx0cyIsImlucHV0VmFsdWUiLCJzZXRJbnB1dFZhbHVlIiwic2hvd0tleWJvYXJkIiwic2V0U2hvd0tleWJvYXJkIiwiY3Vyc29yUG9zaXRpb24iLCJzZXRDdXJzb3JQb3NpdGlvbiIsInByb2plY3ROYW1lIiwibmFtZSIsInRlc3RSZXN1bHRzIiwicGFzc0NvdW50IiwiZmlsdGVyIiwicmVzdWx0IiwiY29wcGVyU3RhdHVzIiwiQ29wcGVyUmVzdWx0U3RhdHVzIiwiY2ZwU3RhdHVzIiwiQ0ZQUmVzdWx0U3RhdHVzIiwib2ZwU3RhdHVzIiwib2ZwUmVzdWx0U3RhdHVzIiwibGVuZ3RoIiwiZmFpbENvdW50Iiwic29ydGVkUmVzdWx0cyIsInNvcnQiLCJhIiwiYiIsImFQYXNzIiwicmVzdWx0ZGF0YSIsImJQYXNzIiwic3BsaXROYW1lIiwibWF0Y2giLCJ0ZXh0IiwibnVtYmVyIiwicGFyc2VJbnQiLCJuYW1lQSIsIm5hbWVCIiwibG9jYWxlQ29tcGFyZSIsImhhbmRsZVNlbGVjdCIsInByZXYiLCJpbmNsdWRlcyIsImhhbmRsZURlbGV0ZSIsIm5ld1Jlc3VsdHMiLCJ1cGRhdGVkUHJvamVjdCIsInByb2plY3RJbmRleCIsInByb2plY3RzIiwiZmluZEluZGV4IiwicCIsImlkIiwidXBkYXRlUHJvamVjdCIsInNldFNob3dEZWxldGVEaWFsb2ciLCJzZWxlY3RlZFJlc3VsdCIsImZpbmQiLCJoYW5kbGVSZW5hbWUiLCJ0cmltIiwiaXNEdXBsaWNhdGUiLCJzb21lIiwibWFwIiwiY29uc29sZSIsImxvZyIsInRlc3Rjb25maWciLCJtb2R1bGVUeXBlIiwib2xkTmFtZSIsIm5ld05hbWUiLCJpbnB1dG5hbWUiLCJyZWxhdGVkUmVzdWx0IiwiciIsInVwZGF0ZWRSZXN1bHQiLCJvdXRuYW1lIiwibmF2aWdhdGVUbyIsInNob3dEZWxldGVEaWFsb2ciLCJzaG93Q29uZmlybURpYWxvZyIsInNldFNob3dDb25maXJtRGlhbG9nIiwidGFyZ2V0UHJvamVjdCIsInNldFRhcmdldFByb2plY3QiLCJzaG93T3ZlcndyaXRlRGlhbG9nIiwic2V0U2hvd092ZXJ3cml0ZURpYWxvZyIsImR1cGxpY2F0ZVJlc3VsdHMiLCJzZXREdXBsaWNhdGVSZXN1bHRzIiwibW92ZVJlc3VsdHMiLCJwcm9qZWN0IiwiaW5kZXgiLCJkdXBsaWNhdGVzIiwicmVzdWx0TmFtZSIsInRhcmdldFJlc3VsdCIsImhhbmRsZU1vdmUiLCJvdmVyd3JpdGUiLCJyZXN1bHRzVG9Nb3ZlIiwidXBkYXRlZFRhcmdldFJlc3VsdHMiLCJ1cGRhdGVkVGFyZ2V0UHJvamVjdCIsInVwZGF0ZWRDdXJyZW50UmVzdWx0cyIsInVwZGF0ZWRDdXJyZW50UHJvamVjdCIsInRhcmdldEluZGV4IiwiY3VycmVudEluZGV4IiwicmVuZGVyVGl0bGVCYXIiLCJ0aXRsZSIsImJhY2tUbyIsInByZXZpb3VzIiwicmVuZGVyQ29udGVudCIsImRpdiIsImNsYXNzTmFtZSIsIm9uQ2xpY2siLCJpbnB1dCIsInR5cGUiLCJ2YWx1ZSIsInBsYWNlaG9sZGVyIiwib25DaGFuZ2UiLCJlIiwidGFyZ2V0Iiwic2VsZWN0aW9uU3RhcnQiLCJvbkZvY3VzIiwic2V0U2VsZWN0aW9uUmFuZ2UiLCJuZXdWYWx1ZSIsIm5ld1Bvc2l0aW9uIiwib25Db21wbGV0ZSIsInNyYyIsImFsdCIsImZpbGwiLCJzcGFuIiwic2l6ZXMiLCJjaGVja2VkIiwic3R5bGUiLCJzY3JvbGxiYXJXaWR0aCIsIm1zT3ZlcmZsb3dTdHlsZSIsImltZyIsIkluUG9ydFN0YXR1cyIsIk91dFBvcnRTdGF0dXMiLCJyZW5kZXJGb290ZXIiLCJidXR0b24iLCJkaXNhYmxlZCIsIm9wYWNpdHkiLCJoMyIsInVsIiwibGkiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(pages-dir-node)/./src/components/dsxpage/fluke/Result.js\n"); /***/ }), /***/ "(pages-dir-node)/./src/components/dsxpage/fluke/ResultInfo.js": /*!****************************************************!*\ !*** ./src/components/dsxpage/fluke/ResultInfo.js ***! \****************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; eval("__webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ ResultInfo)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"react/jsx-dev-runtime\");\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 */ \"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _components_lib_StatusBar__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/components/lib/StatusBar */ \"(pages-dir-node)/./src/components/lib/StatusBar.js\");\n/* harmony import */ var _components_lib_ResultTitleBar__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/components/lib/ResultTitleBar */ \"(pages-dir-node)/./src/components/lib/ResultTitleBar.js\");\n/* harmony import */ var _components_lib_TitleBar__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/components/lib/TitleBar */ \"(pages-dir-node)/./src/components/lib/TitleBar.js\");\n/* harmony import */ var _components_lib_CopperResultMain__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/components/lib/CopperResultMain */ \"(pages-dir-node)/./src/components/lib/CopperResultMain.js\");\n/* harmony import */ var _components_lib_OLTSResultMain__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @/components/lib/OLTSResultMain */ \"(pages-dir-node)/./src/components/lib/OLTSResultMain.js\");\n/* harmony import */ var _components_lib_OTDRResultMain__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @/components/lib/OTDRResultMain */ \"(pages-dir-node)/./src/components/lib/OTDRResultMain.js\");\n/* harmony import */ var _components_lib_Keyboard__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @/components/lib/Keyboard */ \"(pages-dir-node)/./src/components/lib/Keyboard.js\");\n/* harmony import */ var _store_displayStore__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @/store/displayStore */ \"(pages-dir-node)/./src/store/displayStore.js\");\n/* harmony import */ var _utils_asset__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @/utils/asset */ \"(pages-dir-node)/./src/utils/asset.js\");\n/* harmony import */ var _components_AudioProvider__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @/components/AudioProvider */ \"(pages-dir-node)/./src/components/AudioProvider.js\");\nvar __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_components_lib_StatusBar__WEBPACK_IMPORTED_MODULE_2__, _components_lib_ResultTitleBar__WEBPACK_IMPORTED_MODULE_3__, _components_lib_TitleBar__WEBPACK_IMPORTED_MODULE_4__, _components_lib_CopperResultMain__WEBPACK_IMPORTED_MODULE_5__, _components_lib_OLTSResultMain__WEBPACK_IMPORTED_MODULE_6__, _components_lib_OTDRResultMain__WEBPACK_IMPORTED_MODULE_7__, _components_lib_Keyboard__WEBPACK_IMPORTED_MODULE_8__, _store_displayStore__WEBPACK_IMPORTED_MODULE_9__, _utils_asset__WEBPACK_IMPORTED_MODULE_10__, _components_AudioProvider__WEBPACK_IMPORTED_MODULE_11__]);\n([_components_lib_StatusBar__WEBPACK_IMPORTED_MODULE_2__, _components_lib_ResultTitleBar__WEBPACK_IMPORTED_MODULE_3__, _components_lib_TitleBar__WEBPACK_IMPORTED_MODULE_4__, _components_lib_CopperResultMain__WEBPACK_IMPORTED_MODULE_5__, _components_lib_OLTSResultMain__WEBPACK_IMPORTED_MODULE_6__, _components_lib_OTDRResultMain__WEBPACK_IMPORTED_MODULE_7__, _components_lib_Keyboard__WEBPACK_IMPORTED_MODULE_8__, _store_displayStore__WEBPACK_IMPORTED_MODULE_9__, _utils_asset__WEBPACK_IMPORTED_MODULE_10__, _components_AudioProvider__WEBPACK_IMPORTED_MODULE_11__] = __webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__);\n\n\n\n\n\n\n\n\n\n\n\n\n// 自定义确认弹窗组件\nconst ConfirmDialog = ({ message, onConfirm, onCancel })=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-[480px] h-[640px] bg-[#002842d4] absolute z-[9999] top-1/2 left-1/2 transform -translate-x-1/2 -translate-y-1/2\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"pl-10 pt-60\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-[#2B3C5B] rounded-lg p-6 w-[400px] min-h-[200px] flex flex-col\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h3\", {\n className: \"text-white text-xl font-bold mb-4\",\n children: \"提示\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/ResultInfo.js\",\n lineNumber: 19,\n columnNumber: 17\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 flex items-center justify-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-white text-lg\",\n children: message\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/ResultInfo.js\",\n lineNumber: 21,\n columnNumber: 21\n }, undefined)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/ResultInfo.js\",\n lineNumber: 20,\n columnNumber: 17\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex justify-center gap-4 mt-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: onConfirm,\n className: \"bg-[#354e7a] text-white px-6 py-2 rounded hover:bg-[#1E293B] transition-colors\",\n children: \"确定\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/ResultInfo.js\",\n lineNumber: 24,\n columnNumber: 21\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: onCancel,\n className: \"bg-[#4a4a4a] text-white px-6 py-2 rounded hover:bg-[#3a3a3a] transition-colors\",\n children: \"取消\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/ResultInfo.js\",\n lineNumber: 30,\n columnNumber: 21\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/ResultInfo.js\",\n lineNumber: 23,\n columnNumber: 17\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/ResultInfo.js\",\n lineNumber: 18,\n columnNumber: 13\n }, undefined)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/ResultInfo.js\",\n lineNumber: 17,\n columnNumber: 9\n }, undefined)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/ResultInfo.js\",\n lineNumber: 16,\n columnNumber: 5\n }, undefined);\nfunction ResultInfo() {\n const [showKeyboard, setShowKeyboard] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(true);\n const [cursorPosition, setCursorPosition] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(0);\n const [inputValue, setInputValue] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)('');\n const [inputValue2, setInputValue2] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)('');\n const [activeInput, setActiveInput] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(1); // 1 表示第一个输入框,2 表示第二个输入框\n const [showConfirmDialog, setShowConfirmDialog] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n const [confirmDialogMessage, setConfirmDialogMessage] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)('');\n const [confirmDialogCallback, setConfirmDialogCallback] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);\n const { navigation } = _store_displayStore__WEBPACK_IMPORTED_MODULE_9__[\"default\"].getState();\n const tempTestResult = navigation.current.params;\n const { play } = (0,_components_AudioProvider__WEBPACK_IMPORTED_MODULE_11__.useAudio)();\n // 根据测试结果播放音效\n const { hasPlayedSound } = _store_displayStore__WEBPACK_IMPORTED_MODULE_9__[\"default\"].getState();\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)({\n \"ResultInfo.useEffect\": ()=>{\n // 只有从测试页面进入nosave视图时才播放声音\n if (navigation.previous.name === 'testing' && tempTestResult && !hasPlayedSound) {\n if (tempTestResult.CopperResultStatus === 'pass' || tempTestResult.CFPResultStatus === 'pass' || tempTestResult.ofpResultStatus === 'pass') {\n play('pass');\n } else {\n play('fail');\n }\n _store_displayStore__WEBPACK_IMPORTED_MODULE_9__[\"default\"].setState({\n hasPlayedSound: true\n });\n }\n }\n }[\"ResultInfo.useEffect\"], [\n navigation,\n tempTestResult,\n hasPlayedSound\n ]);\n // 从URL参数中获取临时测试结果\n const { getCurrentProject, getCurrentCableId, getCurrentCableId2, updateCurrentView, getCurrentTestConfig, navigateTo, setToastMessage, updateProject } = (0,_store_displayStore__WEBPACK_IMPORTED_MODULE_9__[\"default\"])();\n const currentProject = getCurrentProject();\n const { view } = _store_displayStore__WEBPACK_IMPORTED_MODULE_9__[\"default\"].getState().navigation.current;\n // 获取当前的线缆ID\n const currentCableId = getCurrentCableId().name || '';\n const currentCableId2 = getCurrentCableId2().name || '';\n // 计算下一个序号的ID\n const getNextId = (currentId)=>{\n if (!currentId) return '';\n // 检查是否以数字结尾\n const numMatch = currentId.match(/^(.*?)(\\d+)$/);\n if (numMatch) {\n const [, prefix, num] = numMatch;\n const nextNum = String(Number(num) + 1).padStart(num.length, '0');\n return prefix + nextNum;\n }\n // 检查是否以字母结尾\n const letterMatch = currentId.match(/^(.*?)([a-zA-Z]+)$/);\n if (letterMatch) {\n const [, prefix, letters] = letterMatch;\n // 将字母转换为数组以便处理\n const letterArray = letters.split('');\n let carry = true;\n // 从右向左处理每个字母\n for(let i = letterArray.length - 1; i >= 0 && carry; i--){\n if (letterArray[i] === 'z') {\n letterArray[i] = 'a';\n carry = true;\n } else if (letterArray[i] === 'Z') {\n letterArray[i] = 'A';\n carry = true;\n } else {\n letterArray[i] = String.fromCharCode(letterArray[i].charCodeAt(0) + 1);\n carry = false;\n }\n }\n // 如果还有进位,说明需要在前面添加一个字母\n if (carry) {\n if (letters[0] >= 'a' && letters[0] <= 'z') {\n letterArray.unshift('a');\n } else {\n letterArray.unshift('A');\n }\n }\n return prefix + letterArray.join('');\n }\n // 如果既不是数字也不是字母结尾,直接返回原值\n return currentId;\n };\n // 初始化输入值为当前的线缆ID\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)({\n \"ResultInfo.useEffect\": ()=>{\n setInputValue(currentCableId);\n setInputValue2(currentCableId2);\n }\n }[\"ResultInfo.useEffect\"], [\n currentCableId,\n currentCableId2\n ]);\n // 当第一个输入框值变化时,仅在用户手动输入时自动更新第二个输入框\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)({\n \"ResultInfo.useEffect\": ()=>{\n if (tempTestResult?.testconfig?.moduleType === 'cfp' && inputValue && inputValue !== currentCableId) {\n setInputValue2(getNextId(inputValue));\n }\n }\n }[\"ResultInfo.useEffect\"], [\n inputValue,\n view,\n currentCableId\n ]);\n //创建保存结果存储逻辑\n const handleComplete = ()=>{\n const currentId = inputValue.trim();\n // 检查是否存在重名的测试结果\n const currentProject = getCurrentProject();\n const existingResults = currentProject?.testResults || [];\n // 检查两个ID是否重复\n const isDuplicate = existingResults.some((result)=>result.name === currentId);\n // 重名替换\n if (isDuplicate) {\n setConfirmDialogMessage('该线缆ID已使用,是否覆盖?');\n setConfirmDialogCallback(()=>()=>{\n // 更新临时测试结果的名称\n const updatedTestResult = {\n ...tempTestResult,\n name: currentId\n };\n // 更新当前项目的测试结果\n const currentIndex = _store_displayStore__WEBPACK_IMPORTED_MODULE_9__[\"default\"].getState().projects.findIndex((p)=>p === currentProject);\n if (currentIndex !== -1) {\n // 移除旧的测试结果并添加新的\n const newResults = existingResults.filter((result)=>result.name !== currentId);\n updateProject(currentIndex, {\n testResults: [\n ...newResults,\n updatedTestResult\n ]\n });\n // 更新navigation.current.params中的测试结果名称\n _store_displayStore__WEBPACK_IMPORTED_MODULE_9__[\"default\"].setState({\n navigation: {\n ...navigation,\n current: {\n ...navigation.current,\n params: updatedTestResult\n }\n }\n });\n }\n updateCurrentView('save');\n setShowConfirmDialog(false);\n });\n setShowConfirmDialog(true);\n return;\n }\n // 更新临时测试结果的名称并保存到项目中\n if (tempTestResult) {\n const updatedTestResult = {\n ...tempTestResult,\n name: currentId\n };\n // 更新当前项目的cableIds.name为下一个ID\n const currentIndex = _store_displayStore__WEBPACK_IMPORTED_MODULE_9__[\"default\"].getState().projects.findIndex((p)=>p === currentProject);\n if (currentIndex !== -1) {\n //更新测试结果\n updateProject(currentIndex, {\n testResults: [\n ...currentProject.testResults || [],\n updatedTestResult\n ]\n });\n // 更新navigation.current.params中的测试结果名称\n const navigation = _store_displayStore__WEBPACK_IMPORTED_MODULE_9__[\"default\"].getState().navigation;\n _store_displayStore__WEBPACK_IMPORTED_MODULE_9__[\"default\"].setState({\n navigation: {\n ...navigation,\n current: {\n ...navigation.current,\n params: updatedTestResult\n }\n }\n });\n // 获取下一个ID\n const nextId = (()=>{\n const currentId = inputValue.trim();\n if (!currentId) return currentId;\n // 获取最后一个字符\n const lastChar = currentId.slice(-1);\n const prefix = currentId.slice(0, -1);\n // 如果最后一个字符是数字\n if (/\\d/.test(lastChar)) {\n const match = currentId.match(/^(.*?)(\\d+)$/);\n if (match) {\n const numPrefix = match[1];\n const number = parseInt(match[2]) + 1;\n return `${numPrefix}${number.toString().padStart(match[2].length, '0')}`;\n }\n }\n // 如果最后一个字符是字母\n if (/[A-Za-z]/.test(lastChar)) {\n const nextChar = String.fromCharCode(lastChar.charCodeAt(0) + 1);\n // 如果超过Z或z,回到A或a\n if (lastChar === 'Z' && nextChar > 'Z' || lastChar === 'z' && nextChar > 'z') {\n const baseChar = lastChar === 'Z' ? 'A' : 'a';\n return `${prefix}${baseChar}`;\n }\n return `${prefix}${nextChar}`;\n }\n return currentId;\n })();\n // 获取当前项目的所有cableIds\n const currentCableIds = currentProject?.cableIds || [];\n const selectedId = getCurrentCableId().id;\n // 只更新选中的ID,保留其他ID不变\n const updatedCableIds = currentCableIds.map((cable)=>cable.id === selectedId ? {\n ...cable,\n name: nextId\n } : cable);\n // 更新项目\n updateProject(currentIndex, {\n cableIds: updatedCableIds\n });\n }\n updateCurrentView('save');\n }\n };\n const handleComplete2 = ()=>{\n const currentId = inputValue.trim();\n const currentId2 = inputValue2.trim();\n // 检查两个ID是否相同\n if (currentId === currentId2) {\n setConfirmDialogMessage('输入输出ID不能相同,请检查');\n setConfirmDialogCallback(()=>()=>{\n setShowConfirmDialog(false);\n });\n setShowConfirmDialog(true);\n return;\n }\n // 检查是否存在重名的测试结果\n const currentProject = getCurrentProject();\n const existingResults = currentProject?.testResults || [];\n // 检查两个ID是否重复\n const isDuplicate1 = existingResults.some((result)=>result.name === currentId);\n const isDuplicate2 = existingResults.some((result)=>result.name === currentId2);\n const currentConfig = getCurrentTestConfig();\n const cableType = currentConfig.params.cableType;\n const isMultiMode = cableType.includes('OM');\n if (isDuplicate1 || isDuplicate2) {\n const message = [];\n if (isDuplicate1) message.push(`线缆ID ${currentId}`);\n if (isDuplicate2) message.push(`线缆ID ${currentId2}`);\n setConfirmDialogMessage(`${message.join(' 和 ')}已使用,是否覆盖?`);\n setConfirmDialogCallback(()=>()=>{\n // 更新临时测试结果的名称\n const updatedTestResult1 = {\n ...tempTestResult,\n name: currentId,\n inputname: isMultiMode ? currentId2 : currentId,\n outname: isMultiMode ? currentId : currentId2\n };\n const updatedTestResult2 = {\n ...tempTestResult,\n name: currentId2,\n inputname: isMultiMode ? currentId2 : currentId,\n outname: isMultiMode ? currentId : currentId2\n };\n // 更新当前项目的测试结果\n const currentIndex = _store_displayStore__WEBPACK_IMPORTED_MODULE_9__[\"default\"].getState().projects.findIndex((p)=>p === currentProject);\n if (currentIndex !== -1) {\n // 移除旧的测试结果并添加新的\n const newResults = existingResults.filter((result)=>result.name !== currentId && result.name !== currentId2);\n updateProject(currentIndex, {\n testResults: [\n ...newResults,\n updatedTestResult1,\n updatedTestResult2\n ]\n });\n // 更新navigation.current.params中的测试结果名称\n _store_displayStore__WEBPACK_IMPORTED_MODULE_9__[\"default\"].setState({\n navigation: {\n ...navigation,\n current: {\n ...navigation.current,\n params: updatedTestResult1\n }\n }\n });\n }\n updateCurrentView('save');\n setShowConfirmDialog(false);\n });\n setShowConfirmDialog(true);\n return;\n }\n // 更新临时测试结果的名称并保存到项目中\n if (tempTestResult) {\n // 创建两个测试结果\n const updatedTestResult1 = {\n ...tempTestResult,\n name: currentId,\n inputname: isMultiMode ? currentId2 : currentId,\n outname: isMultiMode ? currentId : currentId2\n };\n const updatedTestResult2 = {\n ...tempTestResult,\n name: currentId2,\n inputname: isMultiMode ? currentId2 : currentId,\n outname: isMultiMode ? currentId : currentId2\n };\n // 更新当前项目的cableIds.name为下一个ID\n const currentIndex = _store_displayStore__WEBPACK_IMPORTED_MODULE_9__[\"default\"].getState().projects.findIndex((p)=>p === currentProject);\n if (currentIndex !== -1) {\n //更新测试结果\n updateProject(currentIndex, {\n testResults: [\n ...currentProject.testResults || [],\n updatedTestResult1,\n updatedTestResult2\n ]\n });\n // 更新navigation.current.params中的测试结果名称\n const navigation = _store_displayStore__WEBPACK_IMPORTED_MODULE_9__[\"default\"].getState().navigation;\n _store_displayStore__WEBPACK_IMPORTED_MODULE_9__[\"default\"].setState({\n navigation: {\n ...navigation,\n current: {\n ...navigation.current,\n params: updatedTestResult1\n }\n }\n });\n // 获取下一个ID\n const nextId = getNextId(getNextId(inputValue.trim()));\n // 获取下一个ID2\n const nextId2 = getNextId(getNextId(inputValue2.trim()));\n // 获取当前项目的所有cableIds\n const currentCableIds = currentProject?.cableIds || [];\n const selectedId = getCurrentCableId().id;\n const selectedId2 = getCurrentCableId2().id;\n // 只更新选中的ID,保留其他ID不变\n const updatedCableIds = currentCableIds.map((cable)=>cable.id === selectedId ? {\n ...cable,\n name: nextId\n } : cable.id === selectedId2 ? {\n ...cable,\n name: nextId2\n } : cable);\n // 更新项目,添加两个测试结果\n updateProject(currentIndex, {\n cableIds: updatedCableIds\n });\n }\n updateCurrentView('save');\n }\n };\n // 创建测试结果的视图\n const renderContent = ()=>{\n const renderResultMain = ()=>{\n const moduleType = tempTestResult?.testconfig?.moduleType;\n switch(moduleType){\n case '8000':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_CopperResultMain__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n testResult: tempTestResult\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/ResultInfo.js\",\n lineNumber: 429,\n columnNumber: 28\n }, this);\n case 'cfp':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_OLTSResultMain__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n testResult: tempTestResult\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/ResultInfo.js\",\n lineNumber: 431,\n columnNumber: 28\n }, this);\n case 'ofp':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_OTDRResultMain__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n testResult: tempTestResult\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/ResultInfo.js\",\n lineNumber: 433,\n columnNumber: 28\n }, this);\n default:\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_CopperResultMain__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n testResult: tempTestResult\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/ResultInfo.js\",\n lineNumber: 435,\n columnNumber: 28\n }, this);\n }\n };\n const renderSetName = ()=>{\n const moduleType = tempTestResult?.testconfig?.moduleType;\n switch(moduleType){\n case 'cfp':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 bg-[#303040] p-4 flex flex-col\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mb-8\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mb-1 text-white text-sm\",\n children: \"输出光纤ID1\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/ResultInfo.js\",\n lineNumber: 446,\n columnNumber: 29\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"relative cursor-pointer\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"text\",\n className: \"w-full h-[50px] bg-[#ffffe1] rounded-sm px-4 text-black overflow-x-auto whitespace-nowrap\",\n value: inputValue,\n placeholder: \"请输入线缆ID1\",\n onChange: (e)=>{\n setInputValue(e.target.value);\n setCursorPosition(e.target.selectionStart);\n },\n onClick: (e)=>{\n setActiveInput(1);\n setShowKeyboard(true);\n setCursorPosition(e.target.selectionStart);\n },\n onFocus: (e)=>{\n const cursorPosition = e.target.selectionStart;\n e.target.setSelectionRange(cursorPosition, cursorPosition);\n }\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/ResultInfo.js\",\n lineNumber: 448,\n columnNumber: 33\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/ResultInfo.js\",\n lineNumber: 447,\n columnNumber: 29\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/ResultInfo.js\",\n lineNumber: 445,\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: \"mb-1 text-white text-sm\",\n children: \"输入光纤ID2\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/ResultInfo.js\",\n lineNumber: 470,\n columnNumber: 29\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"relative cursor-pointer\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"text\",\n className: \"w-full h-[50px] bg-[#ffffe1] rounded-sm px-4 text-black overflow-x-auto whitespace-nowrap\",\n value: inputValue2,\n placeholder: \"请输入线缆ID2\",\n onChange: (e)=>{\n setInputValue2(e.target.value);\n setCursorPosition(e.target.selectionStart);\n },\n onClick: (e)=>{\n setActiveInput(2);\n setShowKeyboard(true);\n setCursorPosition(e.target.selectionStart);\n },\n onFocus: (e)=>{\n const cursorPosition = e.target.selectionStart;\n e.target.setSelectionRange(cursorPosition, cursorPosition);\n }\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/ResultInfo.js\",\n lineNumber: 472,\n columnNumber: 33\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/ResultInfo.js\",\n lineNumber: 471,\n columnNumber: 29\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/ResultInfo.js\",\n lineNumber: 469,\n columnNumber: 25\n }, this),\n showKeyboard && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_Keyboard__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n value: activeInput === 1 ? inputValue : inputValue2,\n cursorPosition: cursorPosition,\n onChange: (newValue, newPosition)=>{\n if (activeInput === 1) {\n setInputValue(newValue);\n } else {\n setInputValue2(newValue);\n }\n setCursorPosition(newPosition);\n },\n onComplete: ()=>{\n setShowKeyboard(false);\n }\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/ResultInfo.js\",\n lineNumber: 494,\n columnNumber: 29\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/ResultInfo.js\",\n lineNumber: 444,\n columnNumber: 21\n }, this);\n default:\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 bg-[#303040] p-4 flex flex-col\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"relative mb-4 cursor-pointer\",\n onClick: ()=>setShowKeyboard(true),\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"text\",\n className: \"w-full h-[50px] bg-[#ffffe1] rounded-sm p-4 text-black\",\n value: inputValue,\n placeholder: \"请输入线缆ID\",\n onChange: (e)=>{\n setInputValue(e.target.value);\n setCursorPosition(e.target.selectionStart);\n },\n onClick: (e)=>{\n setShowKeyboard(true);\n setCursorPosition(e.target.selectionStart);\n },\n onFocus: (e)=>{\n // 保存光标位置\n const cursorPosition = e.target.selectionStart;\n e.target.setSelectionRange(cursorPosition, cursorPosition);\n }\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/ResultInfo.js\",\n lineNumber: 519,\n columnNumber: 25\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/ResultInfo.js\",\n lineNumber: 515,\n columnNumber: 21\n }, this),\n showKeyboard && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_Keyboard__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n value: inputValue,\n cursorPosition: cursorPosition,\n onChange: (newValue, newPosition)=>{\n setInputValue(newValue);\n setCursorPosition(newPosition);\n },\n onComplete: ()=>{\n setShowKeyboard(false);\n }\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/ResultInfo.js\",\n lineNumber: 540,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/ResultInfo.js\",\n lineNumber: 514,\n columnNumber: 21\n }, this);\n }\n };\n switch(view){\n case 'nosave':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full h-full flex flex-col overflow-hidden\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_StatusBar__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {}, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/ResultInfo.js\",\n lineNumber: 561,\n columnNumber: 25\n }, this),\n tempTestResult?.testconfig?.moduleType !== 'cfp' ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_ResultTitleBar__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n title: \"未保存结果\",\n testResult: tempTestResult,\n backTo: \"home\",\n view: \"main\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/ResultInfo.js\",\n lineNumber: 563,\n columnNumber: 29\n }, this) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_ResultTitleBar__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n title: \" \",\n testResult: tempTestResult,\n backTo: \"home\",\n view: \"main\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/ResultInfo.js\",\n lineNumber: 564,\n columnNumber: 30\n }, this),\n renderResultMain(),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[60px] bg-[#303030] flex items-center justify-end px-4\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>updateCurrentView('setname'),\n className: \"w-[100px] h-[40px] bg-gradient-to-b from-[#ffd773] to-[#e7aa29] rounded-sm flex items-center justify-center text-black font-bold shadow-lg\",\n children: \"保存\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/ResultInfo.js\",\n lineNumber: 568,\n columnNumber: 29\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/ResultInfo.js\",\n lineNumber: 567,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/ResultInfo.js\",\n lineNumber: 560,\n columnNumber: 21\n }, this);\n case 'setname':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full h-full flex flex-col overflow-hidden\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_StatusBar__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {}, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/ResultInfo.js\",\n lineNumber: 581,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_TitleBar__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n title: \"保存结果\",\n backTo: _store_displayStore__WEBPACK_IMPORTED_MODULE_9__[\"default\"].getState().navigation.previous?.name || 'home',\n view: _store_displayStore__WEBPACK_IMPORTED_MODULE_9__[\"default\"].getState().navigation.previous?.view || 'main'\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/ResultInfo.js\",\n lineNumber: 583,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 bg-[#303040] p-2 flex flex-col\",\n children: renderSetName()\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/ResultInfo.js\",\n lineNumber: 589,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[60px] bg-[#303030] flex items-center justify-end px-4\",\n children: tempTestResult?.testconfig?.moduleType === \"cfp\" ? !showKeyboard && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>handleComplete2(),\n className: \"w-[100px] h-[40px] bg-gradient-to-b from-[#ffd773] to-[#e7aa29] rounded-sm flex items-center justify-center text-black font-bold shadow-lg\",\n children: \"保存\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/ResultInfo.js\",\n lineNumber: 595,\n columnNumber: 37\n }, this) : !showKeyboard && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>handleComplete(),\n className: \"w-[100px] h-[40px] bg-gradient-to-b from-[#ffd773] to-[#e7aa29] rounded-sm flex items-center justify-center text-black font-bold shadow-lg\",\n children: \"保存\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/ResultInfo.js\",\n lineNumber: 603,\n columnNumber: 51\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/ResultInfo.js\",\n lineNumber: 592,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/ResultInfo.js\",\n lineNumber: 580,\n columnNumber: 21\n }, this);\n case 'save':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full h-full flex flex-col overflow-hidden\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_StatusBar__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {}, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/ResultInfo.js\",\n lineNumber: 620,\n columnNumber: 25\n }, this),\n tempTestResult?.testconfig?.moduleType !== 'cfp' ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_ResultTitleBar__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n testResult: tempTestResult,\n backTo: \"result\",\n view: \"main\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/ResultInfo.js\",\n lineNumber: 622,\n columnNumber: 29\n }, this) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_ResultTitleBar__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n title: \" \",\n testResult: tempTestResult,\n backTo: \"result\",\n view: \"main\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/ResultInfo.js\",\n lineNumber: 623,\n columnNumber: 30\n }, this),\n renderResultMain(),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[60px] bg-[#303030] flex items-center justify-end px-4\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>{\n navigateTo('home', 'main');\n },\n className: \"w-[100px] h-[40px] bg-gradient-to-b from-[#ffd773] to-[#e7aa29] rounded-sm flex items-center justify-center text-black font-bold shadow-lg\",\n children: \"主页\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/ResultInfo.js\",\n lineNumber: 627,\n columnNumber: 29\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/ResultInfo.js\",\n lineNumber: 626,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/ResultInfo.js\",\n lineNumber: 619,\n columnNumber: 21\n }, this);\n default:\n return null;\n }\n };\n const content = renderContent();\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"relative w-full h-full\",\n children: [\n content,\n showConfirmDialog && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(ConfirmDialog, {\n message: confirmDialogMessage,\n onConfirm: confirmDialogCallback,\n onCancel: ()=>setShowConfirmDialog(false)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/ResultInfo.js\",\n lineNumber: 649,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/ResultInfo.js\",\n lineNumber: 646,\n columnNumber: 9\n }, this);\n}\n\n__webpack_async_result__();\n} catch(e) { __webpack_async_result__(e); } });//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHBhZ2VzLWRpci1ub2RlKS8uL3NyYy9jb21wb25lbnRzL2RzeHBhZ2UvZmx1a2UvUmVzdWx0SW5mby5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQW1EO0FBQ0E7QUFDVTtBQUNaO0FBQ2lCO0FBQ0w7QUFDQTtBQUNaO0FBQ0U7QUFDUDtBQUNVO0FBR3RELFlBQVk7QUFDWixNQUFNYSxnQkFBZ0IsQ0FBQyxFQUFFQyxPQUFPLEVBQUVDLFNBQVMsRUFBRUMsUUFBUSxFQUFFLGlCQUNuRCw4REFBQ0M7UUFBSUMsV0FBVTtrQkFDWCw0RUFBQ0Q7WUFBSUMsV0FBVTtzQkFDWCw0RUFBQ0Q7Z0JBQUlDLFdBQVU7O2tDQUNYLDhEQUFDQzt3QkFBR0QsV0FBVTtrQ0FBb0M7Ozs7OztrQ0FDbEQsOERBQUNEO3dCQUFJQyxXQUFVO2tDQUNYLDRFQUFDRDs0QkFBSUMsV0FBVTtzQ0FBc0JKOzs7Ozs7Ozs7OztrQ0FFekMsOERBQUNHO3dCQUFJQyxXQUFVOzswQ0FDWCw4REFBQ0U7Z0NBQ0dDLFNBQVNOO2dDQUNURyxXQUFVOzBDQUNiOzs7Ozs7MENBR0QsOERBQUNFO2dDQUNHQyxTQUFTTDtnQ0FDVEUsV0FBVTswQ0FDYjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVNOLFNBQVNJO0lBQ3BCLE1BQU0sQ0FBQ0MsY0FBY0MsZ0JBQWdCLEdBQUd2QiwrQ0FBUUEsQ0FBQztJQUNqRCxNQUFNLENBQUN3QixnQkFBZ0JDLGtCQUFrQixHQUFHekIsK0NBQVFBLENBQUM7SUFDckQsTUFBTSxDQUFDMEIsWUFBWUMsY0FBYyxHQUFHM0IsK0NBQVFBLENBQUM7SUFDN0MsTUFBTSxDQUFDNEIsYUFBYUMsZUFBZSxHQUFHN0IsK0NBQVFBLENBQUM7SUFDL0MsTUFBTSxDQUFDOEIsYUFBYUMsZUFBZSxHQUFHL0IsK0NBQVFBLENBQUMsSUFBSSx3QkFBd0I7SUFDM0UsTUFBTSxDQUFDZ0MsbUJBQW1CQyxxQkFBcUIsR0FBR2pDLCtDQUFRQSxDQUFDO0lBQzNE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QUNBdkgsbUNBQ0csOERBQUNwQjtnQkFDR0MsU0FBU3FCO2dCQUNUcEIsV0FBV3NCO2dCQUNYckIsVUFBVSxJQUFNa0IscUJBQXFCOzs7Ozs7Ozs7Ozs7QUFLekQiLCJzb3VyY2VzIjpbIi9vcHQvZGV2L2VzdC1kc3gvc3JjL2NvbXBvbmVudHMvZHN4cGFnZS9mbHVrZS9SZXN1bHRJbmZvLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSwgdXNlRWZmZWN0IH0gZnJvbSAncmVhY3QnO1xyXG5pbXBvcnQgU3RhdHVzQmFyIGZyb20gJ0AvY29tcG9uZW50cy9saWIvU3RhdHVzQmFyJztcclxuaW1wb3J0IFJlc3VsdFRpdGxlQmFyIGZyb20gJ0AvY29tcG9uZW50cy9saWIvUmVzdWx0VGl0bGVCYXInO1xyXG5pbXBvcnQgVGl0bGVCYXIgZnJvbSAnQC9jb21wb25lbnRzL2xpYi9UaXRsZUJhcic7XHJcbmltcG9ydCBDb3BwZXJSZXN1bHRNYWluIGZyb20gICdAL2NvbXBvbmVudHMvbGliL0NvcHBlclJlc3VsdE1haW4nO1xyXG5pbXBvcnQgT0xUU1Jlc3VsdE1haW4gZnJvbSAnQC9jb21wb25lbnRzL2xpYi9PTFRTUmVzdWx0TWFpbic7XHJcbmltcG9ydCBPVERSUmVzdWx0TWFpbiBmcm9tICdAL2NvbXBvbmVudHMvbGliL09URFJSZXN1bHRNYWluJztcclxuaW1wb3J0IEtleWJvYXJkIGZyb20gJ0AvY29tcG9uZW50cy9saWIvS2V5Ym9hcmQnO1xyXG5pbXBvcnQgdXNlRGlzcGxheVN0b3JlIGZyb20gJ0Avc3RvcmUvZGlzcGxheVN0b3JlJztcclxuaW1wb3J0IHsgZ2V0QXNzZXRVcmwgfSBmcm9tICdAL3V0aWxzL2Fzc2V0JztcclxuaW1wb3J0IHsgdXNlQXVkaW8gfSBmcm9tICdAL2NvbXBvbmVudHMvQXVkaW9Qcm92aWRlcic7XHJcblxyXG5cclxuLy8g6Ieq5a6a5LmJ56Gu6K6k5by556qX57uE5Lu2XHJcbmNvbnN0IENvbmZpcm1EaWFsb2cgPSAoeyBtZXNzYWdlLCBvbkNvbmZpcm0sIG9uQ2FuY2VsIH0pID0+IChcclxuICAgIDxkaXYgY2xhc3NOYW1lPVwidy1bNDgwcHhdIGgtWzY0MHB4XSBiZy1bIzAwMjg0MmQ0XSBhYnNvbHV0ZSB6LVs5OTk5XSB0b3AtMS8yIGxlZnQtMS8yIHRyYW5zZm9ybSAtdHJhbnNsYXRlLXgtMS8yIC10cmFuc2xhdGUteS0xLzJcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT0ncGwtMTAgcHQtNjAnPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJnLVsjMkIzQzVCXSByb3VuZGVkLWxnIHAtNiB3LVs0MDBweF0gbWluLWgtWzIwMHB4XSBmbGV4IGZsZXgtY29sXCI+XHJcbiAgICAgICAgICAgICAgICA8aDMgY2xhc3NOYW1lPVwidGV4dC13aGl0ZSB0ZXh0LXhsIGZvbnQtYm9sZCBtYi00XCI+5o+Q56S6PC9oMz5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleC0xIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LXdoaXRlIHRleHQtbGdcIj57bWVzc2FnZX08L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGp1c3RpZnktY2VudGVyIGdhcC00IG10LTRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e29uQ29uZmlybX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiYmctWyMzNTRlN2FdIHRleHQtd2hpdGUgcHgtNiBweS0yIHJvdW5kZWQgaG92ZXI6YmctWyMxRTI5M0JdIHRyYW5zaXRpb24tY29sb3JzXCJcclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIOehruWumlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17b25DYW5jZWx9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImJnLVsjNGE0YTRhXSB0ZXh0LXdoaXRlIHB4LTYgcHktMiByb3VuZGVkIGhvdmVyOmJnLVsjM2EzYTNhXSB0cmFuc2l0aW9uLWNvbG9yc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICDlj5bmtohcclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4pO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gUmVzdWx0SW5mbygpIHtcclxuICAgIGNvbnN0IFtzaG93S2V5Ym9hcmQsIHNldFNob3dLZXlib2FyZF0gPSB1c2VTdGF0ZSh0cnVlKTtcclxuICAgIGNvbnN0IFtjdXJzb3JQb3NpdGlvbiwgc2V0Q3Vyc29yUG9zaXRpb25dID0gdXNlU3RhdGUoMCk7XHJcbiAgICBjb25zdCBbaW5wdXRWYWx1ZSwgc2V0SW5wdXRWYWx1ZV0gPSB1c2VTdGF0ZSgnJyk7XHJcbiAgICBjb25zdCBbaW5wdXRWYWx1ZTIsIHNldElucHV0VmFsdWUyXSA9IHVzZVN0YXRlKCcnKTtcclxuICAgIGNvbnN0IFthY3RpdmVJbnB1dCwgc2V0QWN0aXZlSW5wdXRdID0gdXNlU3RhdGUoMSk7IC8vIDEg6KGo56S656ys5LiA5Liq6L6T5YWl5qGG77yMMiDooajnpLrnrKzkuozkuKrovpPlhaXmoYZcclxuICAgIGNvbnN0IFtzaG93Q29uZmlybURpYWxvZywgc2V0U2hvd0NvbmZpcm1EaWFsb2ddID0gdXNlU3RhdGUoZmFsc2UpO1xyXG4gICAgY29uc3QgW2NvbmZpcm1EaWFsb2dNZXNzYWdlLCBzZXRDb25maXJtRGlhbG9nTWVzc2FnZV0gPSB1c2VTdGF0ZSgnJyk7XHJcbiAgICBjb25zdCBbY29uZmlybURpYWxvZ0NhbGxiYWNrLCBzZXRDb25maXJtRGlhbG9nQ2FsbGJhY2tdID0gdXNlU3RhdGUobnVsbCk7XHJcbiAgICBjb25zdCB7IG5hdmlnYXRpb24gfSA9IHVzZURpc3BsYXlTdG9yZS5nZXRTdGF0ZSgpO1xyXG4gICAgY29uc3QgdGVtcFRlc3RSZXN1bHQgPSBuYXZpZ2F0aW9uLmN1cnJlbnQucGFyYW1zO1xyXG4gICAgY29uc3QgeyBwbGF5IH0gPSB1c2VBdWRpbygpO1xyXG4gICAgLy8g5qC55o2u5rWL6K+V57uT5p6c5pKt5pS+6Z+z5pWIXHJcbiAgICBjb25zdCB7IGhhc1BsYXllZFNvdW5kIH0gPSB1c2VEaXNwbGF5U3RvcmUuZ2V0U3RhdGUoKTtcclxuICAgIFxyXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcclxuICAgICAgICAvLyDlj6rmnInku47mtYvor5XpobXpnaLov5vlhaVub3NhdmXop4blm77ml7bmiY3mkq3mlL7lo7Dpn7NcclxuICAgICAgICBpZiAobmF2aWdhdGlvbi5wcmV2aW91cy5uYW1lID09PSAndGVzdGluZycgJiYgXHJcbiAgICAgICAgICAgIHRlbXBUZXN0UmVzdWx0ICYmIFxyXG4gICAgICAgICAgICAhaGFzUGxheWVkU291bmQpIHtcclxuICAgICAgICAgICAgaWYgKHRlbXBUZXN0UmVzdWx0LkNvcHBlclJlc3VsdFN0YXR1cyA9PT0gJ3Bhc3MnfHx0ZW1wVGVzdFJlc3VsdC5DRlBSZXN1bHRTdGF0dXMgPT09ICdwYXNzJyB8fHRlbXBUZXN0UmVzdWx0Lm9mcFJlc3VsdFN0YXR1cyA9PT0gJ3Bhc3MnKSB7XHJcbiAgICAgICAgICAgICAgICBwbGF5KCdwYXNzJyk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBwbGF5KCdmYWlsJyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdXNlRGlzcGxheVN0b3JlLnNldFN0YXRlKHsgaGFzUGxheWVkU291bmQ6IHRydWUgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIFxyXG5cclxuICAgIH0sIFtuYXZpZ2F0aW9uLCB0ZW1wVGVzdFJlc3VsdCwgaGFzUGxheWVkU291bmRdKTtcclxuXHJcbiAgICAvLyDku45VUkzlj4LmlbDkuK3ojrflj5bkuLTml7bmtYvor5Xnu5PmnpxcclxuICAgIGNvbnN0IHtcclxuICAgICAgICBnZXRDdXJyZW50UHJvamVjdCxcclxuICAgICAgICBnZXRDdXJyZW50Q2FibGVJZCxcclxuICAgICAgICBnZXRDdXJyZW50Q2FibGVJZDIsXHJcbiAgICAgICAgdXBkYXRlQ3VycmVudFZpZXcsXHJcbiAgICAgICAgZ2V0Q3VycmVudFRlc3RDb25maWcsXHJcbiAgICAgICAgbmF2aWdhdGVUbyxcclxuICAgICAgICBzZXRUb2FzdE1lc3NhZ2UsXHJcbiAgICAgICAgdXBkYXRlUHJvamVjdFxyXG4gICAgfSA9IHVzZURpc3BsYXlTdG9yZSgpO1xyXG5cclxuICAgIGNvbnN0IGN1cnJlbnRQcm9qZWN0ID0gZ2V0Q3VycmVudFByb2plY3QoKTtcclxuICAgIGNvbnN0IHsgdmlldyB9ID0gdXNlRGlzcGxheVN0b3JlLmdldFN0YXRlKCkubmF2aWdhdGlvbi5jdXJyZW50O1xyXG4gICAgXHJcbiAgICAvLyDojrflj5blvZPliY3nmoTnur/nvIZJRFxyXG4gICAgY29uc3QgY3VycmVudENhYmxlSWQgPSBnZXRDdXJyZW50Q2FibGVJZCgpLm5hbWUgfHwgJyc7XHJcbiAgICBjb25zdCBjdXJyZW50Q2FibGVJZDIgPSBnZXRDdXJyZW50Q2FibGVJZDIoKS5uYW1lIHx8ICcnO1xyXG4gICAgLy8g6K6h566X5LiL5LiA5Liq5bqP5Y+355qESURcclxuICAgIGNvbnN0IGdldE5leHRJZCA9IChjdXJyZW50SWQpID0+IHtcclxuICAgICAgICBpZiAoIWN1cnJlbnRJZCkgcmV0dXJuICcnO1xyXG5cclxuICAgICAgICAvLyDmo4Dmn6XmmK/lkKbku6XmlbDlrZfnu5PlsL5cclxuICAgICAgICBjb25zdCBudW1NYXRjaCA9IGN1cnJlbnRJZC5tYXRjaCgvXiguKj8pKFxcZCspJC8pO1xyXG4gICAgICAgIGlmIChudW1NYXRjaCkge1xyXG4gICAgICAgICAgICBjb25zdCBbLCBwcmVmaXgsIG51bV0gPSBudW1NYXRjaDtcclxuICAgICAgICAgICAgY29uc3QgbmV4dE51bSA9IFN0cmluZyhOdW1iZXIobnVtKSArIDEpLnBhZFN0YXJ0KG51bS5sZW5ndGgsICcwJyk7XHJcbiAgICAgICAgICAgIHJldHVybiBwcmVmaXggKyBuZXh0TnVtO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8g5qOA5p+l5piv5ZCm5Lul5a2X5q+N57uT5bC+XHJcbiAgICAgICAgY29uc3QgbGV0dGVyTWF0Y2ggPSBjdXJyZW50SWQubWF0Y2goL14oLio/KShbYS16QS1aXSspJC8pO1xyXG4gICAgICAgIGlmIChsZXR0ZXJNYXRjaCkge1xyXG4gICAgICAgICAgICBjb25zdCBbLCBwcmVmaXgsIGxldHRlcnNdID0gbGV0dGVyTWF0Y2g7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAvLyDlsIblrZfmr43ovazmjaLkuLrmlbDnu4Tku6Xkvr/lpITnkIZcclxuICAgICAgICAgICAgY29uc3QgbGV0dGVyQXJyYXkgPSBsZXR0ZXJzLnNwbGl0KCcnKTtcclxuICAgICAgICAgICAgbGV0IGNhcnJ5ID0gdHJ1ZTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIC8vIOS7juWPs+WQkeW3puWkhOeQhuavj+S4quWtl+avjVxyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gbGV0dGVyQXJyYXkubGVuZ3RoIC0gMTsgaSA+PSAwICYmIGNhcnJ5OyBpLS0pIHtcclxuICAgICAgICAgICAgICAgIGlmIChsZXR0ZXJBcnJheVtpXSA9PT0gJ3onKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0dGVyQXJyYXlbaV0gPSAnYSc7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FycnkgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChsZXR0ZXJBcnJheVtpXSA9PT0gJ1onKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0dGVyQXJyYXlbaV0gPSAnQSc7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FycnkgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXR0ZXJBcnJheVtpXSA9IFN0cmluZy5mcm9tQ2hhckNvZGUobGV0dGVyQXJyYXlbaV0uY2hhckNvZGVBdCgwKSArIDEpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNhcnJ5ID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIC8vIOWmguaenOi/mOaciei/m+S9je+8jOivtOaYjumcgOimgeWcqOWJjemdoua3u+WKoOS4gOS4quWtl+avjVxyXG4gICAgICAgICAgICBpZiAoY2FycnkpIHtcclxuICAgICAgICAgICAgICAgIGlmIChsZXR0ZXJzWzBdID49ICdhJyAmJiBsZXR0ZXJzWzBdIDw9ICd6Jykge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldHRlckFycmF5LnVuc2hpZnQoJ2EnKTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0dGVyQXJyYXkudW5zaGlmdCgnQScpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICByZXR1cm4gcHJlZml4ICsgbGV0dGVyQXJyYXkuam9pbignJyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyDlpoLmnpzml6LkuI3mmK/mlbDlrZfkuZ/kuI3mmK/lrZfmr43nu5PlsL7vvIznm7TmjqXov5Tlm57ljp/lgLxcclxuICAgICAgICByZXR1cm4gY3VycmVudElkO1xyXG4gICAgfTtcclxuXHJcbiAgICAvLyDliJ3lp4vljJbovpPlhaXlgLzkuLrlvZPliY3nmoTnur/nvIZJRFxyXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcclxuICAgICAgICBzZXRJbnB1dFZhbHVlKGN1cnJlbnRDYWJsZUlkKTtcclxuICAgICAgICBzZXRJbnB1dFZhbHVlMihjdXJyZW50Q2FibGVJZDIpO1xyXG4gICAgfSwgW2N1cnJlbnRDYWJsZUlkLCBjdXJyZW50Q2FibGVJZDJdKTtcclxuXHJcbiAgICAvLyDlvZPnrKzkuIDkuKrovpPlhaXmoYblgLzlj5jljJbml7bvvIzku4XlnKjnlKjmiLfmiYvliqjovpPlhaXml7boh6rliqjmm7TmlrDnrKzkuozkuKrovpPlhaXmoYZcclxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XHJcbiAgICAgICAgaWYgKHRlbXBUZXN0UmVzdWx0Py50ZXN0Y29uZmlnPy5tb2R1bGVUeXBlID09PSAnY2ZwJyAmJiBpbnB1dFZhbHVlICYmIGlucHV0VmFsdWUgIT09IGN1cnJlbnRDYWJsZUlkKSB7XHJcbiAgICAgICAgICAgIHNldElucHV0VmFsdWUyKGdldE5leHRJZChpbnB1dFZhbHVlKSk7XHJcbiAgICAgICAgfVxyXG4gICAgfSwgW2lucHV0VmFsdWUsIHZpZXcsIGN1cnJlbnRDYWJsZUlkXSk7XHJcblxyXG4gICAgICAgIC8v5Yib5bu65L+d5a2Y57uT5p6c5a2Y5YKo6YC76L6RXHJcbiAgICAgICAgY29uc3QgaGFuZGxlQ29tcGxldGUgPSAoKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRJZCA9IGlucHV0VmFsdWUudHJpbSgpO1xyXG4gICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgLy8g5qOA5p+l5piv5ZCm5a2Y5Zyo6YeN5ZCN55qE5rWL6K+V57uT5p6cXHJcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRQcm9qZWN0ID0gZ2V0Q3VycmVudFByb2plY3QoKTtcclxuICAgICAgICAgICAgY29uc3QgZXhpc3RpbmdSZXN1bHRzID0gY3VycmVudFByb2plY3Q/LnRlc3RSZXN1bHRzIHx8IFtdO1xyXG4gICAgXHJcbiAgICAgICAgICAgIC8vIOajgOafpeS4pOS4qklE5piv5ZCm6YeN5aSNXHJcbiAgICAgICAgICAgIGNvbnN0IGlzRHVwbGljYXRlID0gZXhpc3RpbmdSZXN1bHRzLnNvbWUocmVzdWx0ID0+IHJlc3VsdC5uYW1lID09PSBjdXJyZW50SWQpO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgLy8g6YeN5ZCN5pu/5o2iXHJcbiAgICAgICAgICAgIGlmIChpc0R1cGxpY2F0ZSkge1xyXG4gICAgICAgICAgICAgICAgc2V0Q29uZmlybURpYWxvZ01lc3NhZ2UoJ+ivpee6v+e8hklE5bey5L2/55So77yM5piv5ZCm6KaG55uW77yfJyk7XHJcbiAgICAgICAgICAgICAgICBzZXRDb25maXJtRGlhbG9nQ2FsbGJhY2soKCkgPT4gKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIOabtOaWsOS4tOaXtua1i+ivlee7k+aenOeahOWQjeensFxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHVwZGF0ZWRUZXN0UmVzdWx0ID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi50ZW1wVGVzdFJlc3VsdCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogY3VycmVudElkXHJcbiAgICAgICAgICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgLy8g5pu05paw5b2T5YmN6aG555uu55qE5rWL6K+V57uT5p6cXHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY3VycmVudEluZGV4ID0gdXNlRGlzcGxheVN0b3JlLmdldFN0YXRlKCkucHJvamVjdHMuZmluZEluZGV4KHAgPT4gcCA9PT0gY3VycmVudFByb2plY3QpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChjdXJyZW50SW5kZXggIT09IC0xKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIOenu+mZpOaXp+eahOa1i+ivlee7k+aenOW5tua3u+WKoOaWsOeahFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXdSZXN1bHRzID0gZXhpc3RpbmdSZXN1bHRzLmZpbHRlcihyZXN1bHQgPT4gcmVzdWx0Lm5hbWUgIT09IGN1cnJlbnRJZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZVByb2plY3QoY3VycmVudEluZGV4LCB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0UmVzdWx0czogWy4uLm5ld1Jlc3VsdHMsIHVwZGF0ZWRUZXN0UmVzdWx0XVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8g5pu05pawbmF2aWdhdGlvbi5jdXJyZW50LnBhcmFtc+S4reeahOa1i+ivlee7k+aenOWQjeensFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB1c2VEaXNwbGF5U3RvcmUuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmF2aWdhdGlvbjoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLm5hdmlnYXRpb24sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudDoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5uYXZpZ2F0aW9uLmN1cnJlbnQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtczogdXBkYXRlZFRlc3RSZXN1bHRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB1cGRhdGVDdXJyZW50Vmlldygnc2F2ZScpO1xyXG4gICAgICAgICAgICAgICAgICAgIHNldFNob3dDb25maXJtRGlhbG9nKGZhbHNlKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgc2V0U2hvd0NvbmZpcm1EaWFsb2codHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8g5pu05paw5Li05pe25rWL6K+V57uT5p6c55qE5ZCN56ew5bm25L+d5a2Y5Yiw6aG555uu5LitXHJcbiAgICAgICAgICAgIGlmICh0ZW1wVGVzdFJlc3VsdCkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgdXBkYXRlZFRlc3RSZXN1bHQgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLi4udGVtcFRlc3RSZXN1bHQsXHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogY3VycmVudElkXHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgXHJcbiAgICAgICAgICAgICAgICAvLyDmm7TmlrDlvZPliY3pobnnm67nmoRjYWJsZUlkcy5uYW1l5Li65LiL5LiA5LiqSURcclxuICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRJbmRleCA9IHVzZURpc3BsYXlTdG9yZS5nZXRTdGF0ZSgpLnByb2plY3RzLmZpbmRJbmRleChwID0+IHAgPT09IGN1cnJlbnRQcm9qZWN0KTtcclxuICAgICAgICAgICAgICAgIGlmIChjdXJyZW50SW5kZXggIT09IC0xKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy/mm7TmlrDmtYvor5Xnu5PmnpxcclxuICAgICAgICAgICAgICAgICAgICB1cGRhdGVQcm9qZWN0KGN1cnJlbnRJbmRleCwge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXN0UmVzdWx0czogWy4uLihjdXJyZW50UHJvamVjdC50ZXN0UmVzdWx0cyB8fCBbXSksIHVwZGF0ZWRUZXN0UmVzdWx0XVxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgXHJcbiAgICAgICAgICAgICAgICAgICAgLy8g5pu05pawbmF2aWdhdGlvbi5jdXJyZW50LnBhcmFtc+S4reeahOa1i+ivlee7k+aenOWQjeensFxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5hdmlnYXRpb24gPSB1c2VEaXNwbGF5U3RvcmUuZ2V0U3RhdGUoKS5uYXZpZ2F0aW9uO1xyXG4gICAgICAgICAgICAgICAgICAgIHVzZURpc3BsYXlTdG9yZS5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hdmlnYXRpb246IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLm5hdmlnYXRpb24sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4ubmF2aWdhdGlvbi5jdXJyZW50LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtczogdXBkYXRlZFRlc3RSZXN1bHRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgXHJcbiAgICAgICAgICAgICAgICAgICAgLy8g6I635Y+W5LiL5LiA5LiqSURcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXh0SWQgPSAoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50SWQgPSBpbnB1dFZhbHVlLnRyaW0oKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFjdXJyZW50SWQpIHJldHVybiBjdXJyZW50SWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyDojrflj5bmnIDlkI7kuIDkuKrlrZfnrKZcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGFzdENoYXIgPSBjdXJyZW50SWQuc2xpY2UoLTEpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwcmVmaXggPSBjdXJyZW50SWQuc2xpY2UoMCwgLTEpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8g5aaC5p6c5pyA5ZCO5LiA5Liq5a2X56ym5piv5pWw5a2XXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgvXFxkLy50ZXN0KGxhc3RDaGFyKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSBjdXJyZW50SWQubWF0Y2goL14oLio/KShcXGQrKSQvKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtYXRjaCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG51bVByZWZpeCA9IG1hdGNoWzFdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG51bWJlciA9IHBhcnNlSW50KG1hdGNoWzJdKSArIDE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGAke251bVByZWZpeH0ke251bWJlci50b1N0cmluZygpLnBhZFN0YXJ0KG1hdGNoWzJdLmxlbmd0aCwgJzAnKX1gO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyDlpoLmnpzmnIDlkI7kuIDkuKrlrZfnrKbmmK/lrZfmr41cclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKC9bQS1aYS16XS8udGVzdChsYXN0Q2hhcikpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5leHRDaGFyID0gU3RyaW5nLmZyb21DaGFyQ29kZShsYXN0Q2hhci5jaGFyQ29kZUF0KDApICsgMSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyDlpoLmnpzotoXov4da5oiWeu+8jOWbnuWIsEHmiJZhXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGxhc3RDaGFyID09PSAnWicgJiYgbmV4dENoYXIgPiAnWicpIHx8IChsYXN0Q2hhciA9PT0gJ3onICYmIG5leHRDaGFyID4gJ3onKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJhc2VDaGFyID0gbGFzdENoYXIgPT09ICdaJyA/ICdBJyA6ICdhJztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYCR7cHJlZml4fSR7YmFzZUNoYXJ9YDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBgJHtwcmVmaXh9JHtuZXh0Q2hhcn1gO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY3VycmVudElkO1xyXG4gICAgICAgICAgICAgICAgICAgIH0pKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgLy8g6I635Y+W5b2T5YmN6aG555uu55qE5omA5pyJY2FibGVJZHNcclxuICAgICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRDYWJsZUlkcyA9IGN1cnJlbnRQcm9qZWN0Py5jYWJsZUlkcyB8fCBbXTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBzZWxlY3RlZElkID0gZ2V0Q3VycmVudENhYmxlSWQoKS5pZDtcclxuICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIC8vIOWPquabtOaWsOmAieS4reeahElE77yM5L+d55WZ5YW25LuWSUTkuI3lj5hcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCB1cGRhdGVkQ2FibGVJZHMgPSBjdXJyZW50Q2FibGVJZHMubWFwKGNhYmxlID0+IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYWJsZS5pZCA9PT0gc2VsZWN0ZWRJZCA/IHsgLi4uY2FibGUsIG5hbWU6IG5leHRJZCB9IDogY2FibGVcclxuICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgXHJcbiAgICAgICAgICAgICAgICAgICAgLy8g5pu05paw6aG555uuXHJcbiAgICAgICAgICAgICAgICAgICAgdXBkYXRlUHJvamVjdChjdXJyZW50SW5kZXgsIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FibGVJZHM6IHVwZGF0ZWRDYWJsZUlkc1xyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdXBkYXRlQ3VycmVudFZpZXcoJ3NhdmUnKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBoYW5kbGVDb21wbGV0ZTIgPSAoKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRJZCA9IGlucHV0VmFsdWUudHJpbSgpO1xyXG4gICAgICAgICAgICBjb25zdCBjdXJyZW50SWQyID0gaW5wdXRWYWx1ZTIudHJpbSgpO1xyXG5cclxuICAgICAgICAgICAgLy8g5qOA5p+l5Lik5LiqSUTmmK/lkKbnm7jlkIxcclxuICAgICAgICAgICAgaWYgKGN1cnJlbnRJZCA9PT0gY3VycmVudElkMikge1xyXG4gICAgICAgICAgICAgICAgc2V0Q29uZmlybURpYWxvZ01lc3NhZ2UoJ+i+k+WFpei+k+WHuklE5LiN6IO955u45ZCM77yM6K+35qOA5p+lJyk7XHJcbiAgICAgICAgICAgICAgICBzZXRDb25maXJtRGlhbG9nQ2FsbGJhY2soKCkgPT4gKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHNldFNob3dDb25maXJtRGlhbG9nKGZhbHNlKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgc2V0U2hvd0NvbmZpcm1EaWFsb2codHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC8vIOajgOafpeaYr+WQpuWtmOWcqOmHjeWQjeeahOa1i+ivlee7k+aenFxyXG4gICAgICAgICAgICBjb25zdCBjdXJyZW50UHJvamVjdCA9IGdldEN1cnJlbnRQcm9qZWN0KCk7XHJcbiAgICAgICAgICAgIGNvbnN0IGV4aXN0aW5nUmVzdWx0cyA9IGN1cnJlbnRQcm9qZWN0Py50ZXN0UmVzdWx0cyB8fCBbXTtcclxuXHJcbiAgICAgICAgICAgIC8vIOajgOafpeS4pOS4qklE5piv5ZCm6YeN5aSNXHJcbiAgICAgICAgICAgIGNvbnN0IGlzRHVwbGljYXRlMSA9IGV4aXN0aW5nUmVzdWx0cy5zb21lKHJlc3VsdCA9PiByZXN1bHQubmFtZSA9PT0gY3VycmVudElkKTtcclxuICAgICAgICAgICAgY29uc3QgaXNEdXBsaWNhdGUyID0gZXhpc3RpbmdSZXN1bHRzLnNvbWUocmVzdWx0ID0+IHJlc3VsdC5uYW1lID09PSBjdXJyZW50SWQyKTtcclxuXHJcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRDb25maWcgPSBnZXRDdXJyZW50VGVzdENvbmZpZygpO1xyXG4gICAgICAgICAgICBjb25zdCBjYWJsZVR5cGUgPSBjdXJyZW50Q29uZmlnLnBhcmFtcy5jYWJsZVR5cGU7XHJcbiAgICAgICAgICAgIGNvbnN0IGlzTXVsdGlNb2RlID0gY2FibGVUeXBlLmluY2x1ZGVzKCdPTScpO1xyXG5cclxuICAgICAgICAgICAgaWYgKGlzRHVwbGljYXRlMSB8fCBpc0R1cGxpY2F0ZTIpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBbXTtcclxuICAgICAgICAgICAgICAgIGlmIChpc0R1cGxpY2F0ZTEpIG1lc3NhZ2UucHVzaChg57q/57yGSUQgJHtjdXJyZW50SWR9YCk7XHJcbiAgICAgICAgICAgICAgICBpZiAoaXNEdXBsaWNhdGUyKSBtZXNzYWdlLnB1c2goYOe6v+e8hklEICR7Y3VycmVudElkMn1gKTtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgc2V0Q29uZmlybURpYWxvZ01lc3NhZ2UoYCR7bWVzc2FnZS5qb2luKCcg5ZKMICcpfeW3suS9v+eUqO+8jOaYr+WQpuimhueblu+8n2ApO1xyXG4gICAgICAgICAgICAgICAgc2V0Q29uZmlybURpYWxvZ0NhbGxiYWNrKCgpID0+ICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAvLyDmm7TmlrDkuLTml7bmtYvor5Xnu5PmnpznmoTlkI3np7BcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCB1cGRhdGVkVGVzdFJlc3VsdDEgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRlbXBUZXN0UmVzdWx0LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBjdXJyZW50SWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0bmFtZTogaXNNdWx0aU1vZGUgPyBjdXJyZW50SWQyIDogY3VycmVudElkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBvdXRuYW1lOiBpc011bHRpTW9kZSA/IGN1cnJlbnRJZCA6IGN1cnJlbnRJZDIsXHJcbiAgICAgICAgICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdXBkYXRlZFRlc3RSZXN1bHQyID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi50ZW1wVGVzdFJlc3VsdCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogY3VycmVudElkMixcclxuICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRuYW1lOiBpc011bHRpTW9kZSA/IGN1cnJlbnRJZDIgOiBjdXJyZW50SWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG91dG5hbWU6IGlzTXVsdGlNb2RlID8gY3VycmVudElkIDogY3VycmVudElkMixcclxuICAgICAgICAgICAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAvLyDmm7TmlrDlvZPliY3pobnnm67nmoTmtYvor5Xnu5PmnpxcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50SW5kZXggPSB1c2VEaXNwbGF5U3RvcmUuZ2V0U3RhdGUoKS5wcm9qZWN0cy5maW5kSW5kZXgocCA9PiBwID09PSBjdXJyZW50UHJvamVjdCk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRJbmRleCAhPT0gLTEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8g56e76Zmk5pen55qE5rWL6K+V57uT5p6c5bm25re75Yqg5paw55qEXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5ld1Jlc3VsdHMgPSBleGlzdGluZ1Jlc3VsdHMuZmlsdGVyKHJlc3VsdCA9PiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5uYW1lICE9PSBjdXJyZW50SWQgJiYgcmVzdWx0Lm5hbWUgIT09IGN1cnJlbnRJZDJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlUHJvamVjdChjdXJyZW50SW5kZXgsIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RSZXN1bHRzOiBbLi4ubmV3UmVzdWx0cywgdXBkYXRlZFRlc3RSZXN1bHQxLCB1cGRhdGVkVGVzdFJlc3VsdDJdXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8g5pu05pawbmF2aWdhdGlvbi5jdXJyZW50LnBhcmFtc+S4reeahOa1i+ivlee7k+aenOWQjeensFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB1c2VEaXNwbGF5U3RvcmUuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmF2aWdhdGlvbjoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLm5hdmlnYXRpb24sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudDoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5uYXZpZ2F0aW9uLmN1cnJlbnQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtczogdXBkYXRlZFRlc3RSZXN1bHQxXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgdXBkYXRlQ3VycmVudFZpZXcoJ3NhdmUnKTtcclxuICAgICAgICAgICAgICAgICAgICBzZXRTaG93Q29uZmlybURpYWxvZyhmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIHNldFNob3dDb25maXJtRGlhbG9nKHRydWUpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIOabtOaWsOS4tOaXtua1i+ivlee7k+aenOeahOWQjeensOW5tuS/neWtmOWIsOmhueebruS4rVxyXG4gICAgICAgICAgICBpZiAodGVtcFRlc3RSZXN1bHQpIHtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgLy8g5Yib5bu65Lik5Liq5rWL6K+V57uT5p6cXHJcbiAgICAgICAgICAgICAgICBjb25zdCB1cGRhdGVkVGVzdFJlc3VsdDEgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRlbXBUZXN0UmVzdWx0LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBjdXJyZW50SWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0bmFtZTogaXNNdWx0aU1vZGUgPyBjdXJyZW50SWQyIDogY3VycmVudElkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBvdXRuYW1lOiBpc011bHRpTW9kZSA/IGN1cnJlbnRJZCA6IGN1cnJlbnRJZDIsXHJcbiAgICAgICAgICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdXBkYXRlZFRlc3RSZXN1bHQyID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi50ZW1wVGVzdFJlc3VsdCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogY3VycmVudElkMixcclxuICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRuYW1lOiBpc011bHRpTW9kZSA/IGN1cnJlbnRJZDIgOiBjdXJyZW50SWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG91dG5hbWU6IGlzTXVsdGlNb2RlID8gY3VycmVudElkIDogY3VycmVudElkMixcclxuICAgICAgICAgICAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgICAgICAgIC8vIOabtOaWsOW9k+WJjemhueebrueahGNhYmxlSWRzLm5hbWXkuLrkuIvkuIDkuKpJRFxyXG4gICAgICAgICAgICAgICAgY29uc3QgY3VycmVudEluZGV4ID0gdXNlRGlzcGxheVN0b3JlLmdldFN0YXRlKCkucHJvamVjdHMuZmluZEluZGV4KHAgPT4gcCA9PT0gY3VycmVudFByb2plY3QpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRJbmRleCAhPT0gLTEpIHtcclxuICAgICAgICAgICAgICAgICAgICAvL+abtOaWsOa1i+ivlee7k+aenFxyXG4gICAgICAgICAgICAgICAgICAgIHVwZGF0ZVByb2plY3QoY3VycmVudEluZGV4LCB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RSZXN1bHRzOiBbLi4uKGN1cnJlbnRQcm9qZWN0LnRlc3RSZXN1bHRzIHx8IFtdKSwgdXBkYXRlZFRlc3RSZXN1bHQxLHVwZGF0ZWRUZXN0UmVzdWx0Ml1cclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgLy8g5pu05pawbmF2aWdhdGlvbi5jdXJyZW50LnBhcmFtc+S4reeahOa1i+ivlee7k+aenOWQjeensFxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5hdmlnYXRpb24gPSB1c2VEaXNwbGF5U3RvcmUuZ2V0U3RhdGUoKS5uYXZpZ2F0aW9uO1xyXG4gICAgICAgICAgICAgICAgICAgIHVzZURpc3BsYXlTdG9yZS5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hdmlnYXRpb246IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLm5hdmlnYXRpb24sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4ubmF2aWdhdGlvbi5jdXJyZW50LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtczogdXBkYXRlZFRlc3RSZXN1bHQxXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgLy8g6I635Y+W5LiL5LiA5LiqSURcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXh0SWQgPSBnZXROZXh0SWQoZ2V0TmV4dElkKGlucHV0VmFsdWUudHJpbSgpKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgLy8g6I635Y+W5LiL5LiA5LiqSUQyXHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV4dElkMiA9IGdldE5leHRJZChnZXROZXh0SWQoaW5wdXRWYWx1ZTIudHJpbSgpKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgLy8g6I635Y+W5b2T5YmN6aG555uu55qE5omA5pyJY2FibGVJZHNcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50Q2FibGVJZHMgPSBjdXJyZW50UHJvamVjdD8uY2FibGVJZHMgfHwgW107XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRJZCA9IGdldEN1cnJlbnRDYWJsZUlkKCkuaWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRJZDIgPSBnZXRDdXJyZW50Q2FibGVJZDIoKS5pZDtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgXHJcblxyXG4gICAgICAgICAgICAgICAgICAgIC8vIOWPquabtOaWsOmAieS4reeahElE77yM5L+d55WZ5YW25LuWSUTkuI3lj5hcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCB1cGRhdGVkQ2FibGVJZHMgPSBjdXJyZW50Q2FibGVJZHMubWFwKGNhYmxlID0+IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYWJsZS5pZCA9PT0gc2VsZWN0ZWRJZCA/IHsgLi4uY2FibGUsIG5hbWU6IG5leHRJZCB9IDogXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhYmxlLmlkID09PSBzZWxlY3RlZElkMiA/IHsgLi4uY2FibGUsIG5hbWU6IG5leHRJZDIgfSA6IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYWJsZVxyXG4gICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcblxyXG5cclxuICAgICAgICAgICAgICAgICAgICAvLyDmm7TmlrDpobnnm67vvIzmt7vliqDkuKTkuKrmtYvor5Xnu5PmnpxcclxuICAgICAgICAgICAgICAgICAgICB1cGRhdGVQcm9qZWN0KGN1cnJlbnRJbmRleCwge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYWJsZUlkczogdXBkYXRlZENhYmxlSWRzLFxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdXBkYXRlQ3VycmVudFZpZXcoJ3NhdmUnKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAvLyDliJvlu7rmtYvor5Xnu5PmnpznmoTop4blm75cclxuICAgIGNvbnN0IHJlbmRlckNvbnRlbnQgPSAoKSA9PiB7XHJcbiAgICAgICAgY29uc3QgcmVuZGVyUmVzdWx0TWFpbiA9ICgpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgbW9kdWxlVHlwZSA9IHRlbXBUZXN0UmVzdWx0Py50ZXN0Y29uZmlnPy5tb2R1bGVUeXBlO1xyXG4gICAgICAgICAgICBzd2l0Y2ggKG1vZHVsZVR5cGUpIHtcclxuICAgICAgICAgICAgICAgIGNhc2UgJzgwMDAnOlxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiA8Q29wcGVyUmVzdWx0TWFpbiB0ZXN0UmVzdWx0PXt0ZW1wVGVzdFJlc3VsdH0gIC8+O1xyXG4gICAgICAgICAgICAgICAgY2FzZSAnY2ZwJzpcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gPE9MVFNSZXN1bHRNYWluIHRlc3RSZXN1bHQ9e3RlbXBUZXN0UmVzdWx0fSAvPjtcclxuICAgICAgICAgICAgICAgIGNhc2UgJ29mcCc6XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDxPVERSUmVzdWx0TWFpbiB0ZXN0UmVzdWx0PXt0ZW1wVGVzdFJlc3VsdH0gLz47XHJcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiA8Q29wcGVyUmVzdWx0TWFpbiB0ZXN0UmVzdWx0PXt0ZW1wVGVzdFJlc3VsdH0gLz47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICBjb25zdCByZW5kZXJTZXROYW1lID0gKCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBtb2R1bGVUeXBlID0gdGVtcFRlc3RSZXN1bHQ/LnRlc3Rjb25maWc/Lm1vZHVsZVR5cGU7XHJcbiAgICAgICAgICAgIHN3aXRjaCAobW9kdWxlVHlwZSkge1xyXG4gICAgICAgICAgICAgICAgY2FzZSAnY2ZwJzpcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4oXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4LTEgYmctWyMzMDMwNDBdIHAtNCBmbGV4IGZsZXgtY29sXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibWItOFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtYi0xIHRleHQtd2hpdGUgdGV4dC1zbVwiPui+k+WHuuWFiee6pElEMTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyZWxhdGl2ZSBjdXJzb3ItcG9pbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ3LWZ1bGwgaC1bNTBweF0gYmctWyNmZmZmZTFdIHJvdW5kZWQtc20gcHgtNCB0ZXh0LWJsYWNrIG92ZXJmbG93LXgtYXV0byB3aGl0ZXNwYWNlLW5vd3JhcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXtpbnB1dFZhbHVlfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIuivt+i+k+WFpee6v+e8hklEMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0SW5wdXRWYWx1ZShlLnRhcmdldC52YWx1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRDdXJzb3JQb3NpdGlvbihlLnRhcmdldC5zZWxlY3Rpb25TdGFydCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eyhlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRBY3RpdmVJbnB1dCgxKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFNob3dLZXlib2FyZCh0cnVlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEN1cnNvclBvc2l0aW9uKGUudGFyZ2V0LnNlbGVjdGlvblN0YXJ0KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Gb2N1cz17KGUpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGN1cnNvclBvc2l0aW9uID0gZS50YXJnZXQuc2VsZWN0aW9uU3RhcnQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnRhcmdldC5zZXRTZWxlY3Rpb25SYW5nZShjdXJzb3JQb3NpdGlvbiwgY3Vyc29yUG9zaXRpb24pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1iLTEgdGV4dC13aGl0ZSB0ZXh0LXNtXCI+6L6T5YWl5YWJ57qkSUQyPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInJlbGF0aXZlIGN1cnNvci1wb2ludGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInctZnVsbCBoLVs1MHB4XSBiZy1bI2ZmZmZlMV0gcm91bmRlZC1zbSBweC00IHRleHQtYmxhY2sgb3ZlcmZsb3cteC1hdXRvIHdoaXRlc3BhY2Utbm93cmFwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2lucHV0VmFsdWUyfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIuivt+i+k+WFpee6v+e8hklEMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0SW5wdXRWYWx1ZTIoZS50YXJnZXQudmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0Q3Vyc29yUG9zaXRpb24oZS50YXJnZXQuc2VsZWN0aW9uU3RhcnQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0QWN0aXZlSW5wdXQoMik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTaG93S2V5Ym9hcmQodHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRDdXJzb3JQb3NpdGlvbihlLnRhcmdldC5zZWxlY3Rpb25TdGFydCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uRm9jdXM9eyhlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjdXJzb3JQb3NpdGlvbiA9IGUudGFyZ2V0LnNlbGVjdGlvblN0YXJ0O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS50YXJnZXQuc2V0U2VsZWN0aW9uUmFuZ2UoY3Vyc29yUG9zaXRpb24sIGN1cnNvclBvc2l0aW9uKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7c2hvd0tleWJvYXJkICYmIChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxLZXlib2FyZCBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17YWN0aXZlSW5wdXQgPT09IDEgPyBpbnB1dFZhbHVlIDogaW5wdXRWYWx1ZTJ9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3Vyc29yUG9zaXRpb249e2N1cnNvclBvc2l0aW9ufVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsobmV3VmFsdWUsIG5ld1Bvc2l0aW9uKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhY3RpdmVJbnB1dCA9PT0gMSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0SW5wdXRWYWx1ZShuZXdWYWx1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRJbnB1dFZhbHVlMihuZXdWYWx1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0Q3Vyc29yUG9zaXRpb24obmV3UG9zaXRpb24pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Db21wbGV0ZT17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTaG93S2V5Ym9hcmQoZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4LTEgYmctWyMzMDMwNDBdIHAtNCBmbGV4IGZsZXgtY29sXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwicmVsYXRpdmUgbWItNCBjdXJzb3ItcG9pbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldFNob3dLZXlib2FyZCh0cnVlKX1cclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidy1mdWxsIGgtWzUwcHhdIGJnLVsjZmZmZmUxXSByb3VuZGVkLXNtIHAtNCB0ZXh0LWJsYWNrXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17aW5wdXRWYWx1ZX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIuivt+i+k+WFpee6v+e8hklEXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0SW5wdXRWYWx1ZShlLnRhcmdldC52YWx1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEN1cnNvclBvc2l0aW9uKGUudGFyZ2V0LnNlbGVjdGlvblN0YXJ0KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eyhlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFNob3dLZXlib2FyZCh0cnVlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0Q3Vyc29yUG9zaXRpb24oZS50YXJnZXQuc2VsZWN0aW9uU3RhcnQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Gb2N1cz17KGUpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g5L+d5a2Y5YWJ5qCH5L2N572uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGN1cnNvclBvc2l0aW9uID0gZS50YXJnZXQuc2VsZWN0aW9uU3RhcnQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUudGFyZ2V0LnNldFNlbGVjdGlvblJhbmdlKGN1cnNvclBvc2l0aW9uLCBjdXJzb3JQb3NpdGlvbik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAge3Nob3dLZXlib2FyZCAmJiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxLZXlib2FyZCBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXtpbnB1dFZhbHVlfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY3Vyc29yUG9zaXRpb249e2N1cnNvclBvc2l0aW9ufVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhuZXdWYWx1ZSwgbmV3UG9zaXRpb24pID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRJbnB1dFZhbHVlKG5ld1ZhbHVlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRDdXJzb3JQb3NpdGlvbihuZXdQb3NpdGlvbik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Db21wbGV0ZT17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFNob3dLZXlib2FyZChmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICBzd2l0Y2ggKHZpZXcpIHtcclxuICAgICAgICAgICAgY2FzZSAnbm9zYXZlJzpcclxuICAgICAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LWZ1bGwgaC1mdWxsIGZsZXggZmxleC1jb2wgb3ZlcmZsb3ctaGlkZGVuXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxTdGF0dXNCYXIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3RlbXBUZXN0UmVzdWx0Py50ZXN0Y29uZmlnPy5tb2R1bGVUeXBlICE9PSAnY2ZwJyA/IChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSZXN1bHRUaXRsZUJhciB0aXRsZT1cIuacquS/neWtmOe7k+aenFwiIHRlc3RSZXN1bHQ9e3RlbXBUZXN0UmVzdWx0fSBiYWNrVG89XCJob21lXCIgdmlldz1cIm1haW5cIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICApIDogKDxSZXN1bHRUaXRsZUJhciAgdGl0bGU9XCIgXCIgdGVzdFJlc3VsdD17dGVtcFRlc3RSZXN1bHR9IGJhY2tUbz1cImhvbWVcIiB2aWV3PVwibWFpblwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHtyZW5kZXJSZXN1bHRNYWluKCl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaC1bNjBweF0gYmctWyMzMDMwMzBdIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktZW5kIHB4LTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gdXBkYXRlQ3VycmVudFZpZXcoJ3NldG5hbWUnKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ3LVsxMDBweF0gaC1bNDBweF0gYmctZ3JhZGllbnQtdG8tYiBmcm9tLVsjZmZkNzczXSB0by1bI2U3YWEyOV0gcm91bmRlZC1zbSBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciB0ZXh0LWJsYWNrIGZvbnQtYm9sZCBzaGFkb3ctbGdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIOS/neWtmFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgKTtcclxuXHJcbiAgICAgICAgICAgIGNhc2UgJ3NldG5hbWUnOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctZnVsbCBoLWZ1bGwgZmxleCBmbGV4LWNvbCBvdmVyZmxvdy1oaWRkZW5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPFN0YXR1c0JhciAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgPFRpdGxlQmFyIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9XCLkv53lrZjnu5PmnpxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFja1RvPXt1c2VEaXNwbGF5U3RvcmUuZ2V0U3RhdGUoKS5uYXZpZ2F0aW9uLnByZXZpb3VzPy5uYW1lIHx8ICdob21lJ31cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXc9e3VzZURpc3BsYXlTdG9yZS5nZXRTdGF0ZSgpLm5hdmlnYXRpb24ucHJldmlvdXM/LnZpZXcgfHwgJ21haW4nfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4LTEgYmctWyMzMDMwNDBdIHAtMiBmbGV4IGZsZXgtY29sXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICB7cmVuZGVyU2V0TmFtZSgpfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImgtWzYwcHhdIGJnLVsjMzAzMDMwXSBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWVuZCBweC00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7dGVtcFRlc3RSZXN1bHQ/LnRlc3Rjb25maWc/Lm1vZHVsZVR5cGUgPT09IFwiY2ZwXCIgPyAgKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICFzaG93S2V5Ym9hcmQgJiYgKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gaGFuZGxlQ29tcGxldGUyKCl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ3LVsxMDBweF0gaC1bNDBweF0gYmctZ3JhZGllbnQtdG8tYiBmcm9tLVsjZmZkNzczXSB0by1bI2U3YWEyOV0gcm91bmRlZC1zbSBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciB0ZXh0LWJsYWNrIGZvbnQtYm9sZCBzaGFkb3ctbGdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDkv53lrZhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgOiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIXNob3dLZXlib2FyZCAmJiAoPGJ1dHRvbiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBoYW5kbGVDb21wbGV0ZSgpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInctWzEwMHB4XSBoLVs0MHB4XSBiZy1ncmFkaWVudC10by1iIGZyb20tWyNmZmQ3NzNdIHRvLVsjZTdhYTI5XSByb3VuZGVkLXNtIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHRleHQtYmxhY2sgZm9udC1ib2xkIHNoYWRvdy1sZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg5L+d5a2YXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgKTtcclxuXHJcbiAgICAgICAgICAgIGNhc2UgJ3NhdmUnOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctZnVsbCBoLWZ1bGwgZmxleCBmbGV4LWNvbCBvdmVyZmxvdy1oaWRkZW5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPFN0YXR1c0JhciAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7dGVtcFRlc3RSZXN1bHQ/LnRlc3Rjb25maWc/Lm1vZHVsZVR5cGUgIT09ICdjZnAnID8gKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJlc3VsdFRpdGxlQmFyICB0ZXN0UmVzdWx0PXt0ZW1wVGVzdFJlc3VsdH0gYmFja1RvPVwicmVzdWx0XCIgdmlldz1cIm1haW5cIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICApIDogKDxSZXN1bHRUaXRsZUJhciAgdGl0bGU9XCIgXCIgdGVzdFJlc3VsdD17dGVtcFRlc3RSZXN1bHR9IGJhY2tUbz1cInJlc3VsdFwiIHZpZXc9XCJtYWluXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAge3JlbmRlclJlc3VsdE1haW4oKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJoLVs2MHB4XSBiZy1bIzMwMzAzMF0gZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1lbmQgcHgtNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hdmlnYXRlVG8oJ2hvbWUnLCAnbWFpbicpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidy1bMTAwcHhdIGgtWzQwcHhdIGJnLWdyYWRpZW50LXRvLWIgZnJvbS1bI2ZmZDc3M10gdG8tWyNlN2FhMjldIHJvdW5kZWQtc20gZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgdGV4dC1ibGFjayBmb250LWJvbGQgc2hhZG93LWxnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDkuLvpobVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICk7XHJcblxyXG4gICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCBjb250ZW50ID0gcmVuZGVyQ29udGVudCgpO1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInJlbGF0aXZlIHctZnVsbCBoLWZ1bGxcIj5cclxuICAgICAgICAgICAge2NvbnRlbnR9XHJcbiAgICAgICAgICAgIHtzaG93Q29uZmlybURpYWxvZyAmJiAoXHJcbiAgICAgICAgICAgICAgICA8Q29uZmlybURpYWxvZ1xyXG4gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U9e2NvbmZpcm1EaWFsb2dNZXNzYWdlfVxyXG4gICAgICAgICAgICAgICAgICAgIG9uQ29uZmlybT17Y29uZmlybURpYWxvZ0NhbGxiYWNrfVxyXG4gICAgICAgICAgICAgICAgICAgIG9uQ2FuY2VsPXsoKSA9PiBzZXRTaG93Q29uZmlybURpYWxvZyhmYWxzZSl9XHJcbiAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICApfVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgKTtcclxufSJdLCJuYW1lcyI6WyJSZWFjdCIsInVzZVN0YXRlIiwidXNlRWZmZWN0IiwiU3RhdHVzQmFyIiwiUmVzdWx0VGl0bGVCYXIiLCJUaXRsZUJhciIsIkNvcHBlclJlc3VsdE1haW4iLCJPTFRTUmVzdWx0TWFpbiIsIk9URFJSZXN1bHRNYWluIiwiS2V5Ym9hcmQiLCJ1c2VEaXNwbGF5U3RvcmUiLCJnZXRBc3NldFVybCIsInVzZUF1ZGlvIiwiQ29uZmlybURpYWxvZyIsIm1lc3NhZ2UiLCJvbkNvbmZpcm0iLCJvbkNhbmNlbCIsImRpdiIsImNsYXNzTmFtZSIsImgzIiwiYnV0dG9uIiwib25DbGljayIsIlJlc3VsdEluZm8iLCJzaG93S2V5Ym9hcmQiLCJzZXRTaG93S2V5Ym9hcmQiLCJjdXJzb3JQb3NpdGlvbiIsInNldEN1cnNvclBvc2l0aW9uIiwiaW5wdXRWYWx1ZSIsInNldElucHV0VmFsdWUiLCJpbnB1dFZhbHVlMiIsInNldElucHV0VmFsdWUyIiwiYWN0aXZlSW5wdXQiLCJzZXRBY3RpdmVJbnB1dCIsInNob3dDb25maXJtRGlhbG9nIiwic2V0U2hvd0NvbmZpcm1EaWFsb2ciLCJjb25maXJtRGlhbG9nTWVzc2FnZSIsInNldENvbmZpcm1EaWFsb2dNZXNzYWdlIiwiY29uZmlybURpYWxvZ0NhbGxiYWNrIiwic2V0Q29uZmlybURpYWxvZ0NhbGxiYWNrIiwibmF2aWdhdGlvbiIsImdldFN0YXRlIiwidGVtcFRlc3RSZXN1bHQiLCJjdXJyZW50IiwicGFyYW1zIiwicGxheSIsImhhc1BsYXllZFNvdW5kIiwicHJldmlvdXMiLCJuYW1lIiwiQ29wcGVyUmVzdWx0U3RhdHVzIiwiQ0ZQUmVzdWx0U3RhdHVzIiwib2ZwUmVzdWx0U3RhdHVzIiwic2V0U3RhdGUiLCJnZXRDdXJyZW50UHJvamVjdCIsImdldEN1cnJlbnRDYWJsZUlkIiwiZ2V0Q3VycmVudENhYmxlSWQyIiwidXBkYXRlQ3VycmVudFZpZXciLCJnZXRDdXJyZW50VGVzdENvbmZpZyIsIm5hdmlnYXRlVG8iLCJzZXRUb2FzdE1lc3NhZ2UiLCJ1cGRhdGVQcm9qZWN0IiwiY3VycmVudFByb2plY3QiLCJ2aWV3IiwiY3VycmVudENhYmxlSWQiLCJjdXJyZW50Q2FibGVJZDIiLCJnZXROZXh0SWQiLCJjdXJyZW50SWQiLCJudW1NYXRjaCIsIm1hdGNoIiwicHJlZml4IiwibnVtIiwibmV4dE51bSIsIlN0cmluZyIsIk51bWJlciIsInBhZFN0YXJ0IiwibGVuZ3RoIiwibGV0dGVyTWF0Y2giLCJsZXR0ZXJzIiwibGV0dGVyQXJyYXkiLCJzcGxpdCIsImNhcnJ5IiwiaSIsImZyb21DaGFyQ29kZSIsImNoYXJDb2RlQXQiLCJ1bnNoaWZ0Iiwiam9pbiIsInRlc3Rjb25maWciLCJtb2R1bGVUeXBlIiwiaGFuZGxlQ29tcGxldGUiLCJ0cmltIiwiZXhpc3RpbmdSZXN1bHRzIiwidGVzdFJlc3VsdHMiLCJpc0R1cGxpY2F0ZSIsInNvbWUiLCJyZXN1bHQiLCJ1cGRhdGVkVGVzdFJlc3VsdCIsImN1cnJlbnRJbmRleCIsInByb2plY3RzIiwiZmluZEluZGV4IiwicCIsIm5ld1Jlc3VsdHMiLCJmaWx0ZXIiLCJuZXh0SWQiLCJsYXN0Q2hhciIsInNsaWNlIiwidGVzdCIsIm51bVByZWZpeCIsIm51bWJlciIsInBhcnNlSW50IiwidG9TdHJpbmciLCJuZXh0Q2hhciIsImJhc2VDaGFyIiwiY3VycmVudENhYmxlSWRzIiwiY2FibGVJZHMiLCJzZWxlY3RlZElkIiwiaWQiLCJ1cGRhdGVkQ2FibGVJZHMiLCJtYXAiLCJjYWJsZSIsImhhbmRsZUNvbXBsZXRlMiIsImN1cnJlbnRJZDIiLCJpc0R1cGxpY2F0ZTEiLCJpc0R1cGxpY2F0ZTIiLCJjdXJyZW50Q29uZmlnIiwiY2FibGVUeXBlIiwiaXNNdWx0aU1vZGUiLCJpbmNsdWRlcyIsInB1c2giLCJ1cGRhdGVkVGVzdFJlc3VsdDEiLCJpbnB1dG5hbWUiLCJvdXRuYW1lIiwidXBkYXRlZFRlc3RSZXN1bHQyIiwibmV4dElkMiIsInNlbGVjdGVkSWQyIiwicmVuZGVyQ29udGVudCIsInJlbmRlclJlc3VsdE1haW4iLCJ0ZXN0UmVzdWx0IiwicmVuZGVyU2V0TmFtZSIsImlucHV0IiwidHlwZSIsInZhbHVlIiwicGxhY2Vob2xkZXIiLCJvbkNoYW5nZSIsImUiLCJ0YXJnZXQiLCJzZWxlY3Rpb25TdGFydCIsIm9uRm9jdXMiLCJzZXRTZWxlY3Rpb25SYW5nZSIsIm5ld1ZhbHVlIiwibmV3UG9zaXRpb24iLCJvbkNvbXBsZXRlIiwidGl0bGUiLCJiYWNrVG8iLCJjb250ZW50Il0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(pages-dir-node)/./src/components/dsxpage/fluke/ResultInfo.js\n"); /***/ }), /***/ "(pages-dir-node)/./src/components/dsxpage/fluke/TestConfig.js": /*!****************************************************!*\ !*** ./src/components/dsxpage/fluke/TestConfig.js ***! \****************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; eval("__webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ TestConfig)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"react/jsx-dev-runtime\");\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 */ \"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var next_image__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! next/image */ \"(pages-dir-node)/./node_modules/next/image.js\");\n/* harmony import */ var next_image__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(next_image__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _components_lib_StatusBar__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/components/lib/StatusBar */ \"(pages-dir-node)/./src/components/lib/StatusBar.js\");\n/* harmony import */ var _components_lib_TitleBar__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/components/lib/TitleBar */ \"(pages-dir-node)/./src/components/lib/TitleBar.js\");\n/* harmony import */ var _components_lib_SubTitleBar__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/components/lib/SubTitleBar */ \"(pages-dir-node)/./src/components/lib/SubTitleBar.js\");\n/* harmony import */ var _store_displayStore__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @/store/displayStore */ \"(pages-dir-node)/./src/store/displayStore.js\");\n/* harmony import */ var uuid__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! uuid */ \"uuid\");\n/* harmony import */ var _MenuList_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./MenuList.js */ \"(pages-dir-node)/./src/components/dsxpage/fluke/MenuList.js\");\n/* harmony import */ var _utils_asset__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @/utils/asset */ \"(pages-dir-node)/./src/utils/asset.js\");\nvar __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_components_lib_StatusBar__WEBPACK_IMPORTED_MODULE_3__, _components_lib_TitleBar__WEBPACK_IMPORTED_MODULE_4__, _components_lib_SubTitleBar__WEBPACK_IMPORTED_MODULE_5__, _store_displayStore__WEBPACK_IMPORTED_MODULE_6__, uuid__WEBPACK_IMPORTED_MODULE_7__, _MenuList_js__WEBPACK_IMPORTED_MODULE_8__, _utils_asset__WEBPACK_IMPORTED_MODULE_9__]);\n([_components_lib_StatusBar__WEBPACK_IMPORTED_MODULE_3__, _components_lib_TitleBar__WEBPACK_IMPORTED_MODULE_4__, _components_lib_SubTitleBar__WEBPACK_IMPORTED_MODULE_5__, _store_displayStore__WEBPACK_IMPORTED_MODULE_6__, uuid__WEBPACK_IMPORTED_MODULE_7__, _MenuList_js__WEBPACK_IMPORTED_MODULE_8__, _utils_asset__WEBPACK_IMPORTED_MODULE_9__] = __webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__);\n\n\n\n\n\n\n\n\n\n\nfunction TestConfig() {\n const [selectedConfigId, setSelectedConfigId] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);\n const { getCurrentProject, navigation, navigateTo, updateCurrentView, goBack, setSelectedIndexes, updateProject, addProject, setToastMessage } = (0,_store_displayStore__WEBPACK_IMPORTED_MODULE_6__[\"default\"])();\n // 获取当前项目数据\n const currentProject = getCurrentProject();\n // 单多模判断\n const { getCurrentTestConfig } = _store_displayStore__WEBPACK_IMPORTED_MODULE_6__[\"default\"].getState();\n const currentConfig = getCurrentTestConfig();\n const cableType = currentConfig.params.cableType;\n const isMultiMode = cableType.includes('OM');\n // 设置默认选中的配置\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)({\n \"TestConfig.useEffect\": ()=>{\n // 优先使用导航参数中的配置ID\n const configIdFromParams = navigation.current.params?.selectedConfigId;\n if (configIdFromParams) {\n setSelectedConfigId(configIdFromParams);\n return;\n }\n // 如果没有参数,使用当前选中的配置索引\n const currentTestConfigIndex = _store_displayStore__WEBPACK_IMPORTED_MODULE_6__[\"default\"].getState().selectedIndexes.testConfigIndex;\n if (currentProject?.testConfigs && currentTestConfigIndex >= 0) {\n setSelectedConfigId(currentProject.testConfigs[currentTestConfigIndex].id);\n }\n // 确保导航历史正确记录\n if (navigation.current.name === 'testconfig' && navigation.current.view === 'main') {\n const current = navigation.current;\n const previous = navigation.previous;\n if (!previous || previous.name !== 'testconfig' || previous.view !== 'main') {\n _store_displayStore__WEBPACK_IMPORTED_MODULE_6__[\"default\"].getState().navigateTo('testconfig', 'main', current.params);\n }\n }\n }\n }[\"TestConfig.useEffect\"], [\n currentProject,\n navigation.current.params\n ]);\n // 渲染主视图内容\n const renderMainContent = ()=>{\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[490px] flex-1 bg-[#303040] p-4\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-full overflow-y-auto space-y-2 pr-2\",\n children: currentProject?.testConfigs.map((config)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[100px] bg-gradient-to-b from-[#e6e3e6] to-[#7b797b] rounded-sm p-4 shadow-lg flex items-center gap-4 cursor-pointer\",\n onClick: ()=>{\n setSelectedConfigId(config.id);\n // 保存选中的配置ID到导航参数\n updateCurrentView('main', {\n selectedConfigId: config.id\n });\n },\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-6 h-6 border-2 border-gray-600 rounded-full flex items-center justify-center\",\n children: selectedConfigId === config.id && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-4 h-4 bg-blue-500 rounded-full\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 78,\n columnNumber: 37\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 76,\n columnNumber: 29\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 relative\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mt-1\",\n children: [\n config.moduleType === '8000' && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black text-sm\",\n children: config.params.limitValue\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 86,\n columnNumber: 45\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black text-sm\",\n children: config.params.cableType\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 87,\n columnNumber: 45\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black text-sm\",\n children: config.params.wireOrder\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 88,\n columnNumber: 45\n }, this)\n ]\n }, void 0, true),\n config.moduleType === 'cfp' && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black text-sm\",\n children: \"智能远端\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 93,\n columnNumber: 45\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black text-sm\",\n children: config.params.limitValue\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 94,\n columnNumber: 45\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black text-sm\",\n children: config.params.cableType\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 95,\n columnNumber: 45\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black text-sm\",\n children: [\n config.params.refJumper,\n \" 跳线参照\"\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 96,\n columnNumber: 45\n }, this)\n ]\n }, void 0, true),\n config.moduleType === 'ofp' && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black text-sm\",\n children: \"自动OTDR\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 101,\n columnNumber: 45\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black text-sm\",\n children: config.params.limitValue\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 102,\n columnNumber: 45\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black text-sm\",\n children: config.params.cableType\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 103,\n columnNumber: 45\n }, this)\n ]\n }, void 0, true)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 83,\n columnNumber: 33\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-gray-400 text-sm absolute top-0 right-0\",\n children: config.modulelable\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 107,\n columnNumber: 33\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 81,\n columnNumber: 29\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-3 h-3 relative\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: (0,_utils_asset__WEBPACK_IMPORTED_MODULE_9__.getAssetUrl)('/arrow.png'),\n alt: \"箭头\",\n fill: true,\n className: \"object-contain\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 110,\n columnNumber: 33\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 109,\n columnNumber: 29\n }, this)\n ]\n }, config.id, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 67,\n columnNumber: 25\n }, this))\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 65,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 64,\n columnNumber: 13\n }, this);\n };\n // 渲染设置视图内容\n const renderSetupContent = ()=>{\n const currentConfig = currentProject?.testConfigs.find((config)=>config.id === selectedConfigId);\n if (!currentConfig) return null;\n const renderConfigContent = ()=>{\n switch(currentConfig.moduleType){\n case '8000':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-y-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-y-0\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[50px] bg-gradient-to-b from-[#e6e3e6] to-[#7b797b] rounded-t-sm p-4 shadow-lg flex justify-between items-center cursor-pointer\",\n onClick: ()=>navigateTo('menulist', 'setup', {\n menuType: 'CABLE_TYPE',\n selectedConfigId: selectedConfigId,\n backTo: 'testconfig',\n backView: 'setup'\n }),\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black text-l font-bold\",\n children: [\n \"电缆类型:\",\n currentConfig.params.cableType\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 147,\n columnNumber: 37\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-3 h-3 relative\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: (0,_utils_asset__WEBPACK_IMPORTED_MODULE_9__.getAssetUrl)('/arrow.png'),\n alt: \"箭头\",\n fill: true,\n className: \"object-contain\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 149,\n columnNumber: 41\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 148,\n columnNumber: 37\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 138,\n columnNumber: 33\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[50px] bg-gradient-to-b from-[#ffffff] to-[#ffffff] rounded-b-sm p-4 shadow-lg flex justify-between items-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black text-l\",\n children: \"NVP:根据电缆类型生成\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 153,\n columnNumber: 37\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-3 h-3 relative\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: (0,_utils_asset__WEBPACK_IMPORTED_MODULE_9__.getAssetUrl)('/arrow.png'),\n alt: \"箭头\",\n fill: true,\n className: \"object-contain\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 155,\n columnNumber: 41\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 154,\n columnNumber: 37\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 152,\n columnNumber: 33\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 137,\n columnNumber: 29\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-y-0\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[50px] bg-gradient-to-b from-[#e6e3e6] to-[#7b797b] rounded-t-sm p-4 shadow-lg flex justify-between items-center cursor-pointer\",\n onClick: ()=>navigateTo('menulist', 'setup', {\n menuType: 'LIMIT_VALUE',\n selectedConfigId: selectedConfigId,\n backTo: 'testconfig',\n backView: 'setup'\n }),\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black text-l font-bold\",\n children: [\n \"测试极限值:\",\n currentConfig.params.limitValue\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 169,\n columnNumber: 37\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-3 h-3 relative\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: (0,_utils_asset__WEBPACK_IMPORTED_MODULE_9__.getAssetUrl)('/arrow.png'),\n alt: \"箭头\",\n fill: true,\n className: \"object-contain\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 171,\n columnNumber: 41\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 170,\n columnNumber: 37\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 160,\n columnNumber: 33\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[50px] bg-gradient-to-b from-[#ffffff] to-[#ffffff] p-4 shadow-lg flex justify-between items-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black text-l\",\n children: \"存储绘图数据:开\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 175,\n columnNumber: 37\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-3 h-3 relative\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: (0,_utils_asset__WEBPACK_IMPORTED_MODULE_9__.getAssetUrl)('/arrow.png'),\n alt: \"箭头\",\n fill: true,\n className: \"object-contain\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 177,\n columnNumber: 41\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 176,\n columnNumber: 37\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 174,\n columnNumber: 33\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[50px] bg-gradient-to-b from-[#ffffff] to-[#ffffff] rounded-b-sm p-4 shadow-lg flex justify-between items-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black text-l\",\n children: \"HDTDR/HDTDX:仅限失败/通过\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 181,\n columnNumber: 37\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-3 h-3 relative\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: (0,_utils_asset__WEBPACK_IMPORTED_MODULE_9__.getAssetUrl)('/arrow.png'),\n alt: \"箭头\",\n fill: true,\n className: \"object-contain\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 183,\n columnNumber: 41\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 182,\n columnNumber: 37\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 180,\n columnNumber: 33\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 159,\n columnNumber: 29\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[50px] bg-gradient-to-b from-[#e6e3e6] to-[#7b797b] rounded-sm p-4 shadow-lg flex justify-between items-center cursor-pointer\",\n onClick: ()=>navigateTo('menulist', 'setup', {\n menuType: 'WIRE_ORDER',\n selectedConfigId: selectedConfigId,\n backTo: 'testconfig',\n backView: 'setup'\n }),\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black text-l font-bold\",\n children: [\n \"插座配置:\",\n currentConfig.params.wireOrder\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 196,\n columnNumber: 33\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-3 h-3 relative\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: (0,_utils_asset__WEBPACK_IMPORTED_MODULE_9__.getAssetUrl)('/arrow.png'),\n alt: \"箭头\",\n fill: true,\n className: \"object-contain\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 198,\n columnNumber: 37\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 197,\n columnNumber: 33\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 187,\n columnNumber: 29\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 136,\n columnNumber: 25\n }, this);\n case 'cfp':\n return /*#__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 className: \"space-y-0\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[50px] bg-gradient-to-b from-[#e6e3e6] to-[#7b797b] rounded-t-sm p-4 shadow-lg flex justify-between items-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black text-l font-bold\",\n children: \"测试类型:智能远端\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 208,\n columnNumber: 37\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-3 h-3 relative\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: (0,_utils_asset__WEBPACK_IMPORTED_MODULE_9__.getAssetUrl)('/arrow.png'),\n alt: \"箭头\",\n fill: true,\n className: \"object-contain\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 210,\n columnNumber: 41\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 209,\n columnNumber: 37\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 207,\n columnNumber: 33\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[50px] bg-gradient-to-b from-[#ffffff] to-[#ffffff] rounded-b-sm p-4 shadow-lg flex justify-between items-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black text-l\",\n children: \"双向:关\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 214,\n columnNumber: 37\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-3 h-3 relative\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: (0,_utils_asset__WEBPACK_IMPORTED_MODULE_9__.getAssetUrl)('/arrow.png'),\n alt: \"箭头\",\n fill: true,\n className: \"object-contain\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 216,\n columnNumber: 41\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 215,\n columnNumber: 37\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 213,\n columnNumber: 33\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 206,\n columnNumber: 29\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[50px] bg-gradient-to-b from-[#e6e3e6] to-[#7b797b] rounded-sm p-4 shadow-lg flex justify-between items-center cursor-pointer\",\n onClick: ()=>navigateTo('menulist', 'setup', {\n menuType: 'FIBER_TYPE',\n selectedConfigId: selectedConfigId,\n backTo: 'testconfig',\n backView: 'setup'\n }),\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black text-l font-bold\",\n children: [\n \"光纤类型:\",\n currentConfig.params.cableType\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 229,\n columnNumber: 33\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-3 h-3 relative\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: (0,_utils_asset__WEBPACK_IMPORTED_MODULE_9__.getAssetUrl)('/arrow.png'),\n alt: \"箭头\",\n fill: true,\n className: \"object-contain\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 231,\n columnNumber: 37\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 230,\n columnNumber: 33\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 220,\n columnNumber: 29\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-y-0\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[50px] bg-gradient-to-b from-[#e6e3e6] to-[#7b797b] rounded-t-sm p-4 shadow-lg flex justify-between items-center cursor-pointer\",\n onClick: ()=>navigateTo('menulist', 'setup', {\n menuType: 'CFP_LIMIT',\n selectedConfigId: selectedConfigId,\n backTo: 'testconfig',\n backView: 'setup'\n }),\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black text-l font-bold\",\n children: [\n \"测试极限值:\",\n currentConfig.params.limitValue\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 244,\n columnNumber: 37\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-3 h-3 relative\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: (0,_utils_asset__WEBPACK_IMPORTED_MODULE_9__.getAssetUrl)('/arrow.png'),\n alt: \"箭头\",\n fill: true,\n className: \"object-contain\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 246,\n columnNumber: 41\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 245,\n columnNumber: 37\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 235,\n columnNumber: 33\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[50px] bg-gradient-to-b from-[#ffffff] to-[#ffffff] p-4 shadow-lg flex justify-between items-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black text-l \",\n children: [\n \"参照方法:\",\n currentConfig.params.refJumper,\n \" 跳线\"\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 250,\n columnNumber: 37\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-3 h-3 relative\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: (0,_utils_asset__WEBPACK_IMPORTED_MODULE_9__.getAssetUrl)('/arrow.png'),\n alt: \"箭头\",\n fill: true,\n className: \"object-contain\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 252,\n columnNumber: 41\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 251,\n columnNumber: 37\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 249,\n columnNumber: 33\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[50px] bg-gradient-to-b from-[#ffffff] to-[#ffffff] p-4 shadow-lg flex justify-between items-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black text-l\",\n children: \"连接器类型:LC\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 256,\n columnNumber: 37\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-3 h-3 relative\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: (0,_utils_asset__WEBPACK_IMPORTED_MODULE_9__.getAssetUrl)('/arrow.png'),\n alt: \"箭头\",\n fill: true,\n className: \"object-contain\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 258,\n columnNumber: 41\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 257,\n columnNumber: 37\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 255,\n columnNumber: 33\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[50px] bg-gradient-to-b from-[#ffffff] to-[#ffffff] rounded-b-sm p-4 shadow-lg flex justify-between items-center cursor-pointer \",\n onClick: ()=>updateCurrentView('cfp-conunt'),\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black text-l\",\n children: [\n \"接线/接头的数量:\",\n currentConfig.params.connectorCount,\n \"/\",\n currentConfig.params.spliceCount\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 262,\n columnNumber: 37\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-3 h-3 relative\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: (0,_utils_asset__WEBPACK_IMPORTED_MODULE_9__.getAssetUrl)('/arrow.png'),\n alt: \"箭头\",\n fill: true,\n className: \"object-contain\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 264,\n columnNumber: 41\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 263,\n columnNumber: 37\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 261,\n columnNumber: 33\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 234,\n columnNumber: 29\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 205,\n columnNumber: 25\n }, this);\n case 'ofp':\n return /*#__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 className: \"space-y-0\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[50px] bg-gradient-to-b from-[#e6e3e6] to-[#7b797b] rounded-t-sm p-4 shadow-lg flex justify-between items-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black text-l font-bold\",\n children: \"测试类型:自动OTDR\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 275,\n columnNumber: 37\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-3 h-3 relative\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: (0,_utils_asset__WEBPACK_IMPORTED_MODULE_9__.getAssetUrl)('/arrow.png'),\n alt: \"箭头\",\n fill: true,\n className: \"object-contain\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 277,\n columnNumber: 41\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 276,\n columnNumber: 37\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 274,\n columnNumber: 33\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[50px] bg-gradient-to-b from-[#ffffff] to-[#ffffff] p-4 shadow-lg flex justify-between items-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black text-l \",\n children: \"前导补偿:开\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 281,\n columnNumber: 37\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-3 h-3 relative\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 282,\n columnNumber: 37\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 280,\n columnNumber: 33\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[50px] bg-gradient-to-b from-[#ffffff] to-[#ffffff] rounded-b-sm p-4 shadow-lg flex justify-between items-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black text-l \",\n children: [\n \"波长:\",\n currentConfig.params.cableType.includes('OM') ? '850 nm、1310nm' : '1310nm、1550nm'\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 287,\n columnNumber: 33\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-3 h-3 relative\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 288,\n columnNumber: 33\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 286,\n columnNumber: 33\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 273,\n columnNumber: 29\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[50px] bg-gradient-to-b from-[#e6e3e6] to-[#7b797b] rounded-sm p-4 shadow-lg flex justify-between items-center cursor-pointer\",\n onClick: ()=>navigateTo('menulist', 'setup', {\n menuType: 'FIBER_TYPE',\n selectedConfigId: selectedConfigId,\n backTo: 'testconfig',\n backView: 'setup'\n }),\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black text-l font-bold\",\n children: [\n \"光纤类型:\",\n currentConfig.params.cableType\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 302,\n columnNumber: 33\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-3 h-3 relative\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: (0,_utils_asset__WEBPACK_IMPORTED_MODULE_9__.getAssetUrl)('/arrow.png'),\n alt: \"箭头\",\n fill: true,\n className: \"object-contain\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 304,\n columnNumber: 37\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 303,\n columnNumber: 33\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 293,\n columnNumber: 29\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[50px] bg-gradient-to-b from-[#e6e3e6] to-[#7b797b] rounded-sm p-4 shadow-lg flex justify-between items-center cursor-pointer\",\n onClick: ()=>navigateTo('menulist', 'setup', {\n menuType: 'OFP_LIMIT',\n selectedConfigId: selectedConfigId,\n backTo: 'testconfig',\n backView: 'setup'\n }),\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black text-l font-bold\",\n children: [\n \"测试极限值:\",\n currentConfig.params.limitValue\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 316,\n columnNumber: 33\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-3 h-3 relative\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: (0,_utils_asset__WEBPACK_IMPORTED_MODULE_9__.getAssetUrl)('/arrow.png'),\n alt: \"箭头\",\n fill: true,\n className: \"object-contain\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 318,\n columnNumber: 37\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 317,\n columnNumber: 33\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 307,\n columnNumber: 29\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 272,\n columnNumber: 25\n }, this);\n default:\n return null;\n }\n };\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 bg-[#303040] p-4\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-full bg-gradient-to-b from-[#c6c3c6] to-[#c6c3c6] rounded-sm p-4 shadow-lg flex flex-col\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex justify-between items-center mb-4 cursor-pointer\",\n onClick: ()=>navigateTo('menulist', 'setup', {\n menuType: 'MODULE',\n selectedConfigId: selectedConfigId,\n backTo: 'testconfig',\n backView: 'setup'\n }),\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black font-bold text-lg\",\n children: [\n \"模块:\",\n currentConfig.modulelable\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 340,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-5 h-5 relative\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: (0,_utils_asset__WEBPACK_IMPORTED_MODULE_9__.getAssetUrl)('/arrow.png'),\n alt: \"箭头\",\n fill: true,\n className: \"object-contain\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 342,\n columnNumber: 29\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 341,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 331,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 overflow-auto\",\n children: renderConfigContent()\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 345,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 330,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 329,\n columnNumber: 13\n }, this);\n };\n // 渲染标题栏\n const renderTitleBar = ()=>{\n const { view } = navigation.current;\n const handleBack = ()=>{\n if (view === 'setup') {\n updateCurrentView('main');\n } else {\n goBack();\n }\n };\n switch(view){\n case 'main':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_TitleBar__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n title: \"更改测试\",\n backTo: navigation.previous?.name || 'home',\n view: navigation.previous?.view || 'main',\n params: navigation.previous?.params || {},\n onBack: handleBack\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 368,\n columnNumber: 21\n }, this);\n case 'setup':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_TitleBar__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n title: \"测试设置\",\n backTo: navigation.previous?.name || 'testconfig',\n view: navigation.previous?.view || 'main',\n params: navigation.previous?.params || {},\n onBack: handleBack\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 378,\n columnNumber: 21\n }, this);\n case 'cfp-conunt':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_TitleBar__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n title: \" \",\n view: 'setup',\n params: navigation.previous?.params || {}\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 388,\n columnNumber: 21\n }, this);\n }\n };\n // 渲染底部栏\n const renderFooter = ()=>{\n const { view } = navigation.current;\n switch(view){\n case 'main':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[60px] bg-[#303030] flex items-center justify-between px-8\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>{\n // 创建新的测试配置\n const newConfig = {\n id: (0,uuid__WEBPACK_IMPORTED_MODULE_7__.v4)(),\n moduleType: '8000',\n modulelable: 'DSX-8000',\n params: {\n limitValue: 'TIA Cat 6 Channel',\n cableType: 'Cat6 U/UTP',\n wireOrder: 'T568B',\n refJumper: '1',\n spliceCount: '0',\n connectorCount: '2'\n }\n };\n // 更新项目,添加新的测试配置\n const updatedProject = {\n ...currentProject,\n testConfigs: [\n ...currentProject.testConfigs,\n newConfig\n ]\n };\n updateProject(_store_displayStore__WEBPACK_IMPORTED_MODULE_6__[\"default\"].getState().selectedIndexes.projectIndex, updatedProject);\n // 设置新配置为选中状态并保存到导航参数\n setSelectedConfigId(newConfig.id);\n updateCurrentView('setup', {\n selectedConfigId: newConfig.id\n });\n },\n className: \"w-[100px] h-[40px] bg-gradient-to-b from-[#656565] to-[#313431] rounded-sm flex items-center justify-center text-white font-bold shadow-lg\",\n children: \"新测试\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 405,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>{\n if (!selectedConfigId) {\n setToastMessage('请先选择一个测试配置');\n return;\n }\n // 保存选中的配置ID到导航参数\n updateCurrentView('setup', {\n selectedConfigId: selectedConfigId\n });\n },\n className: \"w-[100px] h-[40px] bg-gradient-to-b from-[#656565] to-[#313431] rounded-sm flex items-center justify-center text-white font-bold shadow-lg\",\n children: \"编辑\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 437,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>{\n if (!selectedConfigId) {\n setToastMessage('请先选择一个测试配置');\n return;\n }\n const configIndex = currentProject.testConfigs.findIndex((config)=>config.id === selectedConfigId);\n setSelectedIndexes({\n testConfigIndex: configIndex\n });\n navigateTo('home', 'main');\n },\n className: \"w-[100px] h-[40px] bg-gradient-to-b from-[#ffd773] to-[#e7aa29] rounded-sm flex items-center justify-center text-black font-bold shadow-lg\",\n children: \"使用所选\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 450,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 404,\n columnNumber: 21\n }, this);\n case 'setup':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[60px] bg-[#303030] flex items-center justify-end px-8\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>{\n // 保存配置并返回主视图\n updateCurrentView('main', {\n selectedConfigId: selectedConfigId\n });\n },\n className: \"w-[100px] h-[40px] bg-gradient-to-b from-[#ffd773] to-[#e7aa29] rounded-sm flex items-center justify-center text-black font-bold shadow-lg\",\n children: \"保存\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 471,\n columnNumber: 25\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 470,\n columnNumber: 21\n }, this);\n case 'cfp-conunt':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[60px] bg-[#303030] flex items-center justify-end px-8\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>{\n // 保存配置并返回主视图\n updateCurrentView('setup', {\n selectedConfigId: selectedConfigId\n });\n },\n className: \"w-[100px] h-[40px] bg-gradient-to-b from-[#ffd773] to-[#e7aa29] rounded-sm flex items-center justify-center text-black font-bold shadow-lg\",\n children: \"保存\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 485,\n columnNumber: 25\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 484,\n columnNumber: 21\n }, this);\n default:\n return null;\n }\n };\n const renderCFPCONUNTContent = ()=>{\n const currentConfig = currentProject?.testConfigs.find((config)=>config.id === selectedConfigId);\n if (!currentConfig) return null;\n const handleValueChange = (field, value)=>{\n const currentConfig = currentProject?.testConfigs.find((config)=>config.id === selectedConfigId);\n if (!currentConfig) return;\n // 更新当前配置的参数\n const updatedConfig = {\n ...currentConfig,\n params: {\n ...currentConfig.params,\n [field]: value\n }\n };\n // 更新项目中的测试配置\n const updatedProject = {\n ...currentProject,\n testConfigs: currentProject.testConfigs.map((config)=>config.id === selectedConfigId ? updatedConfig : config)\n };\n // 调用displayStore的updateProject方法更新状态\n updateProject(_store_displayStore__WEBPACK_IMPORTED_MODULE_6__[\"default\"].getState().selectedIndexes.projectIndex, updatedProject);\n };\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 bg-[#0f172a] flex flex-col relative\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute inset-0\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: (0,_utils_asset__WEBPACK_IMPORTED_MODULE_9__.getAssetUrl)(`/olts-weldingPointSet.png`),\n alt: \"CFPCOUNUNT\",\n fill: true,\n className: \"object-contain\",\n sizes: \"100vw\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 539,\n columnNumber: 21\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 538,\n columnNumber: 17\n }, this),\n currentConfig.params.connectorCount > 2 && /*#__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: \"absolute flex flex-col gap-10 pl-56.5 pt-45\",\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)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: (0,_utils_asset__WEBPACK_IMPORTED_MODULE_9__.getAssetUrl)(`/icon-connector.svg`),\n alt: \"connector\",\n width: 30,\n height: 30,\n className: \"object-contain\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 550,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"absolute top-1/2 left-1/2 transform -translate-x-1/2 -translate-y-1/2 text-white\",\n children: currentConfig.params.connectorCount - 2\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 557,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 549,\n columnNumber: 21\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 548,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute flex flex-col gap-10 pl-43 pt-45\",\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)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: (0,_utils_asset__WEBPACK_IMPORTED_MODULE_9__.getAssetUrl)(`/icon-connector.svg`),\n alt: \"connector\",\n width: 30,\n height: 30,\n className: \"object-contain\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 564,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"absolute top-1/2 left-1/2 transform -translate-x-1/2 -translate-y-1/2 text-white\",\n children: currentConfig.params.connectorCount - 2\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 571,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 563,\n columnNumber: 21\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 562,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 547,\n columnNumber: 62\n }, this),\n currentConfig.params.spliceCount > 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: \"absolute flex flex-col gap-10 pl-57 pt-65\",\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)(\"div\", {\n className: \"w-6 h-6 rounded-full bg-[#104878]\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 580,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"absolute top-1/2 left-1/2 transform -translate-x-1/2 -translate-y-1/2 text-white\",\n children: currentConfig.params.spliceCount\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 581,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 579,\n columnNumber: 21\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 578,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute flex flex-col gap-10 pl-44 pt-65\",\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)(\"div\", {\n className: \"w-6 h-6 rounded-full bg-[#104878]\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 588,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"absolute top-1/2 left-1/2 transform -translate-x-1/2 -translate-y-1/2 text-white\",\n children: currentConfig.params.spliceCount\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 589,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 587,\n columnNumber: 21\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 586,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 577,\n columnNumber: 59\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"relative flex flex-col gap-10 pl-75 pt-30\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"number\",\n min: \"2\",\n max: \"20\",\n defaultValue: currentConfig.params.connectorCount,\n onChange: (e)=>handleValueChange('connectorCount', e.target.value),\n onKeyDown: (e)=>e.preventDefault(),\n className: \"w-16 h-8 px-2 bg-[#104878] rounded text-center focus:outline-none focus:ring-2 focus:ring-[#0ff] text-white\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 598,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"ml-4 text-base font-roboto select-none text-black\",\n children: \"全部连接\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 607,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 597,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"number\",\n min: \"0\",\n max: \"18\",\n defaultValue: currentConfig.params.spliceCount,\n onChange: (e)=>handleValueChange('spliceCount', e.target.value),\n onKeyDown: (e)=>e.preventDefault(),\n className: \"w-16 h-8 px-2 bg-[#104878] rounded text-center focus:outline-none focus:ring-2 focus:ring-[#0ff] text-white\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 610,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"ml-4 text-base font-roboto select-none text-black\",\n children: \"接头\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 619,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 609,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"number\",\n min: \"1\",\n max: \"1\",\n defaultValue: currentConfig.params.refJumper,\n onChange: (e)=>handleValueChange('refJumper', e.target.value),\n onKeyDown: (e)=>e.preventDefault(),\n className: \"w-16 h-8 px-2 bg-[#104878] rounded text-center focus:outline-none focus:ring-2 focus:ring-[#0ff] text-white\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 622,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"ml-4 text-base font-roboto select-none text-black\",\n children: \"跳线参照\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 631,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 621,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 596,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 537,\n columnNumber: 13\n }, this);\n };\n // 渲染内容\n const renderContent = ()=>{\n const { view } = navigation.current;\n switch(view){\n case 'main':\n return renderMainContent();\n case 'setup':\n return renderSetupContent();\n case 'cfp-conunt':\n return renderCFPCONUNTContent();\n default:\n return renderMainContent();\n }\n };\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full h-full flex flex-col overflow-hidden\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_StatusBar__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {}, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 656,\n columnNumber: 13\n }, this),\n renderTitleBar(),\n renderContent(),\n renderFooter()\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/TestConfig.js\",\n lineNumber: 655,\n columnNumber: 9\n }, this);\n}\n\n__webpack_async_result__();\n} catch(e) { __webpack_async_result__(e); } });//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHBhZ2VzLWRpci1ub2RlKS8uL3NyYy9jb21wb25lbnRzL2RzeHBhZ2UvZmx1a2UvVGVzdENvbmZpZy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBbUQ7QUFDcEI7QUFDb0I7QUFDRjtBQUNNO0FBQ0o7QUFDZjtBQUNDO0FBQ087QUFJN0IsU0FBU1k7SUFDcEIsTUFBTSxDQUFDQyxrQkFBa0JDLG9CQUFvQixHQUFHYiwrQ0FBUUEsQ0FBQztJQUN6RCxNQUFNLEVBQ0ZjLGlCQUFpQixFQUNqQkMsVUFBVSxFQUNWQyxVQUFVLEVBQ1ZDLGlCQUFpQixFQUNqQkMsTUFBTSxFQUNOQyxrQkFBa0IsRUFDbEJDLGFBQWEsRUFDYkMsVUFBVSxFQUNWQyxlQUFlLEVBQ2xCLEdBQUdoQiwrREFBZUE7SUFFbkIsV0FBVztJQUNYLE1BQU1pQixpQkFBaUJUO0lBRXZCLFFBQVE7SUFDUixNQUFNLEVBQUVVLG9CQUFvQixFQUFFLEdBQUdsQixvRUFBd0I7SUFDekQsTUFBTW9CLGdCQUFnQkY7SUFDdEIsTUFBTUcsWUFBWUQsY0FBY0UsTUFBTSxDQUFDRCxTQUFTO0lBQ2hELE1BQU1FLGNBQWNGLFVBQVVHLFFBQVEsQ0FBQztJQUV2QyxZQUFZO0lBQ1o3QixnREFBU0E7Z0NBQUM7WUFDRixpQkFBaUI7WUFDakIsTUFBTThCLHFCQUFxQmhCLFdBQVdpQixPQUFPLENBQUNKLE1BQU0sRUFBRWhCO1lBQ3RELElBQUltQixvQkFBb0I7Z0JBQ3BCbEIsb0JBQW9Ca0I7Z0JBQ3BCO1lBQ0o7WUFFQSxxQkFBcUI7WUFDckIsTUFBTUUseUJBQXlCM0Isb0VBQXdCLEdBQUc0QixlQUFlLENBQUNDLGVBQWU7WUFDekYsSUFBSVosZ0JBQWdCYSxlQUFlSCwwQkFBMEIsR0FBRztnQkFDNURwQixvQkFBb0JVLGVBQWVhLFdBQVcsQ0FBQ0gsdUJBQXVCLENBQUNJLEVBQUU7WUFDN0U7WUFFQSxhQUFhO1lBQ2IsSUFBSXRCLFdBQVdpQixPQUFPLENBQUNNLElBQUksS0FBSyxnQkFBZ0J2QixXQUFXaUIsT0FBTyxDQUFDTyxJQUFJLEtBQUssUUFBUTtnQkFDaEYsTUFBTVAsVUFBVWpCLFdBQVdpQixPQUFPO2dCQUNsQyxNQUFNUSxXQUFXekIsV0FBV3lCLFFBQVE7Z0JBQ3BDLElBQUksQ0FBQ0EsWUFBWUEsU0FBU0YsSUFBSSxLQUFLLGdCQUFnQkUsU0FBU0QsSUFBSSxLQUFLLFFBQVE7b0JBQ3pFakMsb0VBQXdCLEdBQUdVLFVBQVUsQ0FBQyxjQUFjLFFBQVFnQixRQUFRSixNQUFNO2dCQUM5RTtZQUNKO1FBQ0o7K0JBQUc7UUFBQ0w7UUFBZ0JSLFdBQVdpQixPQUFPLENBQUNKLE1BQU07S0FBQztJQUVsRCxVQUFVO0lBQ1YsTUFBTWEsb0JBQW9CO1FBQ3RCLHFCQUNJLDhEQUFDQztZQUFJQyxXQUFVO3NCQUNYLDRFQUFDRDtnQkFBSUMsV0FBVTswQkFDVnBCLGdCQUFnQmEsWUFBWVEsSUFBSSxDQUFDQyx1QkFDOUIsOERBQUNIO3dCQUVHQyxXQUFVO3dCQUNWRyxTQUFTOzRCQUNMakMsb0JBQW9CZ0MsT0FBT1IsRUFBRTs0QkFDN0IsaUJBQWlCOzRCQUNqQnBCLGtCQUFrQixRQUFRO2dDQUFFTCxrQkFBa0JpQyxPQUFPUixFQUFFOzRCQUFDO3dCQUM1RDs7MENBRUEsOERBQUNLO2dDQUFJQyxXQUFVOzBDQUNWL0IscUJBQXFCaUMsT0FBT1IsRUFBRSxrQkFDM0IsOERBQUNLO29DQUFJQyxXQUFVOzs7Ozs7Ozs7OzswQ0FHdkIsOERBQUNEO2dDQUFJQyxXQUFVOztrREFFWCw4REFBQ0Q7d0NBQUlDLFdBQVU7OzRDQUNWRSxPQUFPRSxVQUFVLEtBQUssd0JBQ25COztrRUFDSSw4REFBQ0w7d0RBQUlDLFdBQVU7a0VBQXNCRSxPQUFPakIsTUFBTSxDQUFDb0IsVUFBVTs7Ozs7O2tFQUM3RCw4REFBQ047d0RBQUlDLFdBQVU7a0VBQXNCRSxPQUFPakIsTUFBTSxDQUFDRCxTQUFTOzs7Ozs7a0VBQzVELDhEQUFDZTt3REFBSUMsV0FBVTtrRUFBc0JFLE9BQU9qQixNQUFNLENBQUNxQixTQUFTOzs7Ozs7Ozs0Q0FHbkVKLE9BQU9FLFVBQVUsS0FBSyx1QkFDbkI7O2tFQUNJLDhEQUFDTDt3REFBSUMsV0FBVTtrRUFBcUI7Ozs7OztrRUFDcEMsOERBQUNEO3dEQUFJQyxXQUFVO2tFQUFzQkUsT0FBT2pCLE1BQU0sQ0FBQ29CLFVBQVU7Ozs7OztrRUFDN0QsOERBQUNOO3dEQUFJQyxXQUFVO2tFQUFzQkUsT0FBT2pCLE1BQU0sQ0FBQ0QsU0FBUzs7Ozs7O2tFQUM1RCw4REFBQ2U7d0RBQUlDLFdBQVU7OzREQUFzQkUsT0FBT2pCLE1BQU0sQ0FBQ3NCLFNBQVM7NERBQUM7Ozs7Ozs7Ozs0Q0FHcEVMLE9BQU9FLFVBQVUsS0FBSyx1QkFDbkI7O2tFQUNJLDhEQUFDTDt3REFBSUMsV0FBVTtrRUFBcUI7Ozs7OztrRUFDcEMsOERBQUNEO3dEQUFJQyxXQUFVO2tFQUFzQkUsT0FBT2pCLE1BQU0sQ0FBQ29CLFVBQVU7Ozs7OztrRUFDN0QsOERBQUNOO3dEQUFJQyxXQUFVO2tFQUFzQkUsT0FBT2pCLE1BQU0sQ0FBQ0QsU0FBUzs7Ozs7Ozs7Ozs7Ozs7a0RBSXhFLDhEQUFDZTt3Q0FBSUMsV0FBVTtrREFBZ0RFLE9BQU9NLFdBQVc7Ozs7Ozs7Ozs7OzswQ0FFckYsOERBQUNUO2dDQUFJQyxXQUFVOzBDQUNYLDRFQUFDekMsbURBQUtBO29DQUNGa0QsS0FBSzFDLHlEQUFXQSxDQUFDO29DQUNqQjJDLEtBQUk7b0NBQ0pDLElBQUk7b0NBQ0pYLFdBQVU7Ozs7Ozs7Ozs7Ozt1QkE5Q2JFLE9BQU9SLEVBQUU7Ozs7Ozs7Ozs7Ozs7OztJQXNEdEM7SUFFQSxXQUFXO0lBQ1gsTUFBTWtCLHFCQUFxQjtRQUN2QixNQUFNN0IsZ0JBQWdCSCxnQkFBZ0JhLFlBQVlvQixLQUM5Q1gsQ0FBQUEsU0FBVUEsT0FBT1IsRUFBRSxLQUFLekI7UUFHNUIsSUFBSSxDQUFDYyxlQUFlLE9BQU87UUFFM0IsTUFBTStCLHNCQUFzQjtZQUN4QixPQUFRL0IsY0FBY3FCLFVBQVU7Z0JBQzVCLEtBQUs7b0JBQ0QscUJBQ0ksOERBQUNMO3dCQUFJQyxXQUFVOzswQ0FDWCw4REFBQ0Q7Z0NBQUlDLFdBQVU7O2tEQUNYLDhEQUFDRDt3Q0FDR0MsV0FBVTt3Q0FDVkcsU0FBUyxJQUFNOUIsV0FBVyxZQUFZLFNBQVM7Z0RBQzNDMEMsVUFBVTtnREFDVjlDLGtCQUFrQkE7Z0RBQ2xCK0MsUUFBUTtnREFDUkMsVUFBVTs0Q0FDZDs7MERBRUEsOERBQUNsQjtnREFBSUMsV0FBVTs7b0RBQThCO29EQUFNakIsY0FBY0UsTUFBTSxDQUFDRCxTQUFTOzs7Ozs7OzBEQUNqRiw4REFBQ2U7Z0RBQUlDLFdBQVU7MERBQ1gsNEVBQUN6QyxtREFBS0E7b0RBQUNrRCxLQUFLMUMseURBQVdBLENBQUM7b0RBQWUyQyxLQUFJO29EQUFLQyxJQUFJO29EQUFDWCxXQUFVOzs7Ozs7Ozs7Ozs7Ozs7OztrREFHdkUsOERBQUNEO3dDQUFJQyxXQUFVOzswREFDWCw4REFBQ0Q7Z0RBQUlDLFdBQVU7MERBQW9COzs7Ozs7MERBQ25DLDhEQUFDRDtnREFBSUMsV0FBVTswREFDWCw0RUFBQ3pDLG1EQUFLQTtvREFBQ2tELEtBQUsxQyx5REFBV0EsQ0FBQztvREFBZTJDLEtBQUk7b0RBQUtDLElBQUk7b0RBQUNYLFdBQVU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzBDQUkzRSw4REFBQ0Q7Z0NBQUlDLFdBQVU7O2tEQUNYLDhEQUFDRDt3Q0FDR0MsV0FBVTt3Q0FDVkcsU0FBUyxJQUFNOUIsV0FBVyxZQUFZLFNBQVM7Z0RBQzNDMEMsVUFBVTtnREFDVjlDLGtCQUFrQkE7Z0RBQ2xCK0MsUUFBUTtnREFDUkMsVUFBVTs0Q0FDZDs7MERBRUEsOERBQUNsQjtnREFBSUMsV0FBVTs7b0RBQThCO29EQUFPakIsY0FBY0UsTUFBTSxDQUFDb0IsVUFBVTs7Ozs7OzswREFDbkYsOERBQUNOO2dEQUFJQyxXQUFVOzBEQUNYLDRFQUFDekMsbURBQUtBO29EQUFDa0QsS0FBSzFDLHlEQUFXQSxDQUFDO29EQUFlMkMsS0FBSTtvREFBS0MsSUFBSTtvREFBQ1gsV0FBVTs7Ozs7Ozs7Ozs7Ozs7Ozs7a0RBR3ZFLDhEQUFDRDt3Q0FBSUMsV0FBVTs7MERBQ1gsOERBQUNEO2dEQUFJQyxXQUFVOzBEQUFvQjs7Ozs7OzBEQUNuQyw4REFBQ0Q7Z0RBQUlDLFdBQVU7MERBQ1gsNEVBQUN6QyxtREFBS0E7b0RBQUNrRCxLQUFLMUMseURBQVdBLENBQUM7b0RBQWUyQyxLQUFJO29EQUFLQyxJQUFJO29EQUFDWCxXQUFVOzs7Ozs7Ozs7Ozs7Ozs7OztrREFHdkUsOERBQUNEO3dDQUFJQyxXQUFVOzswREFDWCw4REFBQ0Q7Z0RBQUlDLFdBQVU7MERBQW9COzs7Ozs7MERBQ25DLDhEQUFDRDtnREFBSUMsV0FBVTswREFDWCw0RUFBQ3pDLG1EQUFLQTtvREFBQ2tELEtBQUsxQyx5REFBV0EsQ0FBQztvREFBZTJDLEtBQUk7b0RBQUtDLElBQUk7b0RBQUNYLFdBQVU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzBDQUkzRSw4REFBQ0Q7Z0NBQ0dDLFdBQVU7Z0NBQ1ZHLFNBQVMsSUFBTTlCLFdBQVcsWUFBWSxTQUFTO3dDQUMzQzBDLFVBQVU7d0NBQ1Y5QyxrQkFBa0JBO3dDQUNsQitDLFFBQVE7d0NBQ1JDLFVBQVU7b0NBQ2Q7O2tEQUVBLDhEQUFDbEI7d0NBQUlDLFdBQVU7OzRDQUE4Qjs0Q0FBTWpCLGNBQWNFLE1BQU0sQ0FBQ3FCLFNBQVM7Ozs7Ozs7a0RBQ2pGLDhEQUFDUDt3Q0FBSUMsV0FBVTtrREFDWCw0RUFBQ3pDLG1EQUFLQTs0Q0FBQ2tELEtBQUsxQyx5REFBV0EsQ0FBQzs0Q0FBZTJDLEtBQUk7NENBQUtDLElBQUk7NENBQUNYLFdBQVU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2dCQUtuRixLQUFLO29CQUNELHFCQUNJLDhEQUFDRDt3QkFBSUMsV0FBVTs7MENBQ1gsOERBQUNEO2dDQUFJQyxXQUFVOztrREFDWCw4REFBQ0Q7d0NBQUlDLFdBQVU7OzBEQUNYLDhEQUFDRDtnREFBSUMsV0FBVTswREFBOEI7Ozs7OzswREFDN0MsOERBQUNEO2dEQUFJQyxXQUFVOzBEQUNYLDRFQUFDekMsbURBQUtBO29EQUFDa0QsS0FBSzFDLHlEQUFXQSxDQUFDO29EQUFlMkMsS0FBSTtvREFBS0MsSUFBSTtvREFBQ1gsV0FBVTs7Ozs7Ozs7Ozs7Ozs7Ozs7a0RBR3ZFLDhEQUFDRDt3Q0FBSUMsV0FBVTs7MERBQ1gsOERBQUNEO2dEQUFJQyxXQUFVOzBEQUFvQjs7Ozs7OzBEQUNuQyw4REFBQ0Q7Z0RBQUlDLFdBQVU7MERBQ1gsNEVBQUN6QyxtREFBS0E7b0RBQUNrRCxLQUFLMUMseURBQVdBLENBQUM7b0RBQWUyQyxLQUFJO29EQUFLQyxJQUFJO29EQUFDWCxXQUFVOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzswQ0FJM0UsOERBQUNEO2dDQUNHQyxXQUFVO2dDQUNWRyxTQUFTLElBQU05QixXQUFXLFlBQVksU0FBUzt3Q0FDM0MwQyxVQUFVO3dDQUNWOUMsa0JBQWtCQTt3Q0FDbEIrQyxRQUFRO3dDQUNSQyxVQUFVO29DQUNkOztrREFFQSw4REFBQ2xCO3dDQUFJQyxXQUFVOzs0Q0FBOEI7NENBQU1qQixjQUFjRSxNQUFNLENBQUNELFNBQVM7Ozs7Ozs7a0RBQ2pGLDhEQUFDZTt3Q0FBSUMsV0FBVTtrREFDWCw0RUFBQ3pDLG1EQUFLQTs0Q0FBQ2tELEtBQUsxQyx5REFBV0EsQ0FBQzs0Q0FBZTJDLEtBQUk7NENBQUtDLElBQUk7NENBQUNYLFdBQVU7Ozs7Ozs7Ozs7Ozs7Ozs7OzBDQUd2RSw4REFBQ0Q7Z0NBQUlDLFdBQVU7O2tEQUNYLDhEQUFDRDt3Q0FDR0MsV0FBVTt3Q0FDVkcsU0FBUyxJQUFNOUIsV0FBVyxZQUFZLFNBQVM7Z0RBQzNDMEMsVUFBVTtnREFDVjlDLGtCQUFrQkE7Z0RBQ2xCK0MsUUFBUTtnREFDUkMsVUFBVTs0Q0FDZDs7MERBRUEsOERBQUNsQjtnREFBSUMsV0FBVTs7b0RBQThCO29EQUFPakIsY0FBY0UsTUFBTSxDQUFDb0IsVUFBVTs7Ozs7OzswREFDbkYsOERBQUNOO2dEQUFJQyxXQUFVOzBEQUNYLDRFQUFDekMsbURBQUtBO29EQUFDa0QsS0FBSzFDLHlEQUFXQSxDQUFDO29EQUFlMkMsS0FBSTtvREFBS0MsSUFBSTtvREFBQ1gsV0FBVTs7Ozs7Ozs7Ozs7Ozs7Ozs7a0RBR3ZFLDhEQUFDRDt3Q0FBSUMsV0FBVTs7MERBQ1gsOERBQUNEO2dEQUFJQyxXQUFVOztvREFBcUI7b0RBQU1qQixjQUFjRSxNQUFNLENBQUNzQixTQUFTO29EQUFDOzs7Ozs7OzBEQUN6RSw4REFBQ1I7Z0RBQUlDLFdBQVU7MERBQ1gsNEVBQUN6QyxtREFBS0E7b0RBQUNrRCxLQUFLMUMseURBQVdBLENBQUM7b0RBQWUyQyxLQUFJO29EQUFLQyxJQUFJO29EQUFDWCxXQUFVOzs7Ozs7Ozs7Ozs7Ozs7OztrREFHdkUsOERBQUNEO3dDQUFJQyxXQUFVOzswREFDWCw4REFBQ0Q7Z0RBQUlDLFdBQVU7MERBQW9COzs7Ozs7MERBQ25DLDhEQUFDRDtnREFBSUMsV0FBVTswREFDWCw0RUFBQ3pDLG1EQUFLQTtvREFBQ2tELEtBQUsxQyx5REFBV0EsQ0FBQztvREFBZTJDLEtBQUk7b0RBQUtDLElBQUk7b0RBQUNYLFdBQVU7Ozs7Ozs7Ozs7Ozs7Ozs7O2tEQUd2RSw4REFBQ0Q7d0NBQUlDLFdBQVU7d0NBQXFJRyxTQUFTLElBQU03QixrQkFBa0I7OzBEQUNqTCw4REFBQ3lCO2dEQUFJQyxXQUFVOztvREFBcUI7b0RBQVVqQixjQUFjRSxNQUFNLENBQUNpQyxjQUFjO29EQUFDO29EQUFFbkMsY0FBY0UsTUFBTSxDQUFDa0MsV0FBVzs7Ozs7OzswREFDcEgsOERBQUNwQjtnREFBSUMsV0FBVTswREFDWCw0RUFBQ3pDLG1EQUFLQTtvREFBQ2tELEtBQUsxQyx5REFBV0EsQ0FBQztvREFBZTJDLEtBQUk7b0RBQUtDLElBQUk7b0RBQUNYLFdBQVU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2dCQU12RixLQUFLO29CQUNELHFCQUNJLDhEQUFDRDt3QkFBSUMsV0FBVTs7MENBQ1gsOERBQUNEO2dDQUFJQyxXQUFVOztrREFDWCw4REFBQ0Q7d0NBQUlDLFdBQVU7OzBEQUNYLDhEQUFDRDtnREFBSUMsV0FBVTswREFBOEI7Ozs7OzswREFDN0MsOERBQUNEO2dEQUFJQyxXQUFVOzBEQUNYLDRFQUFDekMsbURBQUtBO29EQUFDa0QsS0FBSzFDLHlEQUFXQSxDQUFDO29EQUFlMkMsS0FBSTtvREFBS0MsSUFBSTtvREFBQ1gsV0FBVTs7Ozs7Ozs7Ozs7Ozs7Ozs7a0RBR3ZFLDhEQUFDRDt3Q0FBSUMsV0FBVTs7MERBQ1gsOERBQUNEO2dEQUFJQyxXQUFVOzBEQUFxQjs7Ozs7OzBEQUNwQyw4REFBQ0Q7Z0RBQUlDLFdBQVU7Ozs7Ozs7Ozs7OztrREFJbkIsOERBQUNEO3dDQUFJQyxXQUFVOzswREFDZiw4REFBQ0Q7Z0RBQUlDLFdBQVU7O29EQUFxQjtvREFBSWpCLGNBQWNFLE1BQU0sQ0FBQ0QsU0FBUyxDQUFDRyxRQUFRLENBQUMsUUFBUSxrQkFBa0I7Ozs7Ozs7MERBQzFHLDhEQUFDWTtnREFBSUMsV0FBVTs7Ozs7Ozs7Ozs7Ozs7Ozs7OzBDQUtuQiw4REFBQ0Q7Z0NBQ0dDLFdBQVU7Z0NBQ1ZHLFNBQVMsSUFBTTlCLFdBQVcsWUFBWSxTQUFTO3dDQUMzQzBDLFVBQVU7d0NBQ1Y5QyxrQkFBa0JBO3dDQUNsQitDLFFBQVE7d0NBQ1JDLFVBQVU7b0NBQ2Q7O2tEQUVBLDhEQUFDbEI7d0NBQUlDLFdBQVU7OzRDQUE4Qjs0Q0FBTWpCLGNBQWNFLE1BQU0sQ0FBQ0QsU0FBUzs7Ozs7OztrREFDakYsOERBQUNlO3dDQUFJQyxXQUFVO2tEQUNYLDRFQUFDekMsbURBQUtBOzRDQUFDa0QsS0FBSzFDLHlEQUFXQSxDQUFDOzRDQUFlMkMsS0FBSTs0Q0FBS0MsSUFBSTs0Q0FBQ1gsV0FBVTs7Ozs7Ozs7Ozs7Ozs7Ozs7MENBR3ZFLDhEQUFDRDtnQ0FDR0MsV0FBVTtnQ0FDVkcsU0FBUyxJQUFNOUIsV0FBVyxZQUFZLFNBQVM7d0NBQzNDMEMsVUFBVTt3Q0FDVjlDLGtCQUFrQkE7d0NBQ2xCK0MsUUFBUTt3Q0FDUkMsVUFBVTtvQ0FDZDs7a0RBRUEsOERBQUNsQjt3Q0FBSUMsV0FBVTs7NENBQThCOzRDQUFPakIsY0FBY0UsTUFBTSxDQUFDb0IsVUFBVTs7Ozs7OztrREFDbkYsOERBQUNOO3dDQUFJQyxXQUFVO2tEQUNYLDRFQUFDekMsbURBQUtBOzRDQUFDa0QsS0FBSzFDLHlEQUFXQSxDQUFDOzRDQUFlMkMsS0FBSTs0Q0FBS0MsSUFBSTs0Q0FBQ1gsV0FBVTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Z0JBS25GO29CQUNJLE9BQU87WUFDZjtRQUNKO1FBRUEscUJBQ0ksOERBQUNEO1lBQUlDLFdBQVU7c0JBQ1gsNEVBQUNEO2dCQUFJQyxXQUFVOztrQ0FDWCw4REFBQ0Q7d0JBQ0dDLFdBQVU7d0JBQ1ZHLFNBQVMsSUFBTTlCLFdBQVcsWUFBWSxTQUFTO2dDQUMzQzBDLFVBQVU7Z0NBQ1Y5QyxrQkFBa0JBO2dDQUNsQitDLFFBQVE7Z0NBQ1JDLFVBQVU7NEJBQ2Q7OzBDQUVBLDhEQUFDbEI7Z0NBQUlDLFdBQVU7O29DQUErQjtvQ0FBSWpCLGNBQWN5QixXQUFXOzs7Ozs7OzBDQUMzRSw4REFBQ1Q7Z0NBQUlDLFdBQVU7MENBQ1gsNEVBQUN6QyxtREFBS0E7b0NBQUNrRCxLQUFLMUMseURBQVdBLENBQUM7b0NBQWUyQyxLQUFJO29DQUFLQyxJQUFJO29DQUFDWCxXQUFVOzs7Ozs7Ozs7Ozs7Ozs7OztrQ0FHdkUsOERBQUNEO3dCQUFJQyxXQUFVO2tDQUNWYzs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFLckI7SUFFQSxRQUFRO0lBQ1IsTUFBTU0saUJBQWlCO1FBQ25CLE1BQU0sRUFBRXhCLElBQUksRUFBRSxHQUFHeEIsV0FBV2lCLE9BQU87UUFFbkMsTUFBTWdDLGFBQWE7WUFDZixJQUFJekIsU0FBUyxTQUFTO2dCQUNwQnRCLGtCQUFrQjtZQUNwQixPQUFPO2dCQUNIQztZQUNKO1FBQ0Y7UUFFRixPQUFRcUI7WUFDSixLQUFLO2dCQUNELHFCQUNJLDhEQUFDbkMsZ0VBQVFBO29CQUNMNkQsT0FBTTtvQkFDTk4sUUFBUTVDLFdBQVd5QixRQUFRLEVBQUVGLFFBQVE7b0JBQ3JDQyxNQUFNeEIsV0FBV3lCLFFBQVEsRUFBRUQsUUFBUTtvQkFDbkNYLFFBQVFiLFdBQVd5QixRQUFRLEVBQUVaLFVBQVUsQ0FBQztvQkFDeENzQyxRQUFRRjs7Ozs7O1lBR3BCLEtBQUs7Z0JBQ0QscUJBQ0ksOERBQUM1RCxnRUFBUUE7b0JBQ0w2RCxPQUFNO29CQUNOTixRQUFRNUMsV0FBV3lCLFFBQVEsRUFBRUYsUUFBUTtvQkFDckNDLE1BQU14QixXQUFXeUIsUUFBUSxFQUFFRCxRQUFRO29CQUNuQ1gsUUFBUWIsV0FBV3lCLFFBQVEsRUFBRVosVUFBVSxDQUFDO29CQUN4Q3NDLFFBQVFGOzs7Ozs7WUFHcEIsS0FBSztnQkFDRCxxQkFDSSw4REFBQzVELGdFQUFRQTtvQkFDTDZELE9BQU07b0JBQ04xQixNQUFNO29CQUNOWCxRQUFRYixXQUFXeUIsUUFBUSxFQUFFWixVQUFVLENBQUM7Ozs7OztRQUd4RDtJQUNKO0lBRUEsUUFBUTtJQUNSLE1BQU11QyxlQUFlO1FBQ2pCLE1BQU0sRUFBRTVCLElBQUksRUFBRSxHQUFHeEIsV0FBV2lCLE9BQU87UUFFbkMsT0FBUU87WUFDSixLQUFLO2dCQUNELHFCQUNJLDhEQUFDRztvQkFBSUMsV0FBVTs7c0NBQ1gsOERBQUN5Qjs0QkFDR3RCLFNBQVM7Z0NBQ0wsV0FBVztnQ0FDWCxNQUFNdUIsWUFBWTtvQ0FDZGhDLElBQUk3Qix3Q0FBTUE7b0NBQ1Z1QyxZQUFZO29DQUNaSSxhQUFhO29DQUNidkIsUUFBUTt3Q0FDSm9CLFlBQVk7d0NBQ1pyQixXQUFXO3dDQUNYc0IsV0FBVzt3Q0FDWEMsV0FBVzt3Q0FDWFksYUFBYTt3Q0FDYkQsZ0JBQWdCO29DQUNwQjtnQ0FDSjtnQ0FFQSxnQkFBZ0I7Z0NBQ2hCLE1BQU1TLGlCQUFpQjtvQ0FDbkIsR0FBRy9DLGNBQWM7b0NBQ2pCYSxhQUFhOzJDQUFJYixlQUFlYSxXQUFXO3dDQUFFaUM7cUNBQVU7Z0NBQzNEO2dDQUNBakQsY0FBY2Qsb0VBQXdCLEdBQUc0QixlQUFlLENBQUNxQyxZQUFZLEVBQUVEO2dDQUV2RSxxQkFBcUI7Z0NBQ3JCekQsb0JBQW9Cd0QsVUFBVWhDLEVBQUU7Z0NBQ2hDcEIsa0JBQWtCLFNBQVM7b0NBQUVMLGtCQUFrQnlELFVBQVVoQyxFQUFFO2dDQUFDOzRCQUNoRTs0QkFDQU0sV0FBVTtzQ0FDYjs7Ozs7O3NDQUdELDhEQUFDeUI7NEJBQ0d0QixTQUFTO2dDQUNMLElBQUksQ0FBQ2xDLGtCQUFrQjtvQ0FDbkJVLGdCQUFnQjtvQ0FDaEI7Z0NBQ0o7Z0NBQ0EsaUJBQWlCO2dDQUNqQkwsa0JBQWtCLFNBQVM7b0NBQUVMLGtCQUFrQkE7Z0NBQWlCOzRCQUNwRTs0QkFDQStCLFdBQVU7c0NBQ2I7Ozs7OztzQ0FHRCw4REFBQ3lCOzRCQUNHdEIsU0FBUztnQ0FDTCxJQUFJLENBQUNsQyxrQkFBa0I7b0NBQ25CVSxnQkFBZ0I7b0NBQ2hCO2dDQUNKO2dDQUNBLE1BQU1rRCxjQUFjakQsZUFBZWEsV0FBVyxDQUFDcUMsU0FBUyxDQUNwRDVCLENBQUFBLFNBQVVBLE9BQU9SLEVBQUUsS0FBS3pCO2dDQUU1Qk8sbUJBQW1CO29DQUFFZ0IsaUJBQWlCcUM7Z0NBQVk7Z0NBQ2xEeEQsV0FBVyxRQUFROzRCQUN2Qjs0QkFDQTJCLFdBQVU7c0NBQ2I7Ozs7Ozs7Ozs7OztZQUtiLEtBQUs7Z0JBQ0QscUJBQ0ksOERBQUNEO29CQUFJQyxXQUFVOzhCQUNYLDRFQUFDeUI7d0JBQ0d0QixTQUFTOzRCQUNMLGFBQWE7NEJBQ2I3QixrQkFBa0IsUUFBUTtnQ0FBRUwsa0JBQWtCQTs0QkFBaUI7d0JBQ25FO3dCQUNBK0IsV0FBVTtrQ0FDYjs7Ozs7Ozs7Ozs7WUFLYixLQUFLO2dCQUNELHFCQUNJLDhEQUFDRDtvQkFBSUMsV0FBVTs4QkFDWCw0RUFBQ3lCO3dCQUNHdEIsU0FBUzs0QkFDTCxhQUFhOzRCQUNiN0Isa0JBQWtCLFNBQVM7Z0NBQUVMLGtCQUFrQkE7NEJBQWlCO3dCQUNwRTt3QkFDQStCLFdBQVU7a0NBQ2I7Ozs7Ozs7Ozs7O1lBS2I7Z0JBQ0ksT0FBTztRQUNmO0lBQ0o7SUFFQSxNQUFNK0IseUJBQXlCO1FBQzNCLE1BQU1oRCxnQkFBZ0JILGdCQUFnQmEsWUFBWW9CLEtBQzlDWCxDQUFBQSxTQUFVQSxPQUFPUixFQUFFLEtBQUt6QjtRQUc1QixJQUFJLENBQUNjLGVBQWUsT0FBTztRQUUzQixNQUFNaUQsb0JBQW9CLENBQUNDLE9BQU9DO1lBQzlCLE1BQU1uRCxnQkFBZ0JILGdCQUFnQmEsWUFBWW9CLEtBQzlDWCxDQUFBQSxTQUFVQSxPQUFPUixFQUFFLEtBQUt6QjtZQUc1QixJQUFJLENBQUNjLGVBQWU7WUFFcEIsWUFBWTtZQUNaLE1BQU1vRCxnQkFBZ0I7Z0JBQ2xCLEdBQUdwRCxhQUFhO2dCQUNoQkUsUUFBUTtvQkFDSixHQUFHRixjQUFjRSxNQUFNO29CQUN2QixDQUFDZ0QsTUFBTSxFQUFFQztnQkFDYjtZQUNKO1lBRUEsYUFBYTtZQUNiLE1BQU1QLGlCQUFpQjtnQkFDbkIsR0FBRy9DLGNBQWM7Z0JBQ2pCYSxhQUFhYixlQUFlYSxXQUFXLENBQUNRLEdBQUcsQ0FBQ0MsQ0FBQUEsU0FDeENBLE9BQU9SLEVBQUUsS0FBS3pCLG1CQUFtQmtFLGdCQUFnQmpDO1lBRXpEO1lBRUEscUNBQXFDO1lBQ3JDekIsY0FBY2Qsb0VBQXdCLEdBQUc0QixlQUFlLENBQUNxQyxZQUFZLEVBQUVEO1FBQzNFO1FBRUEscUJBQ0ksOERBQUM1QjtZQUFJQyxXQUFVOzs4QkFDWCw4REFBQ0Q7b0JBQUlDLFdBQVU7OEJBQ1gsNEVBQUN6QyxtREFBS0E7d0JBQ0ZrRCxLQUFLMUMseURBQVdBLENBQUMsQ0FBQyx5QkFBeUIsQ0FBQzt3QkFDNUMyQyxLQUFJO3dCQUNKQyxJQUFJO3dCQUNKWCxXQUFVO3dCQUNWb0MsT0FBTTs7Ozs7Ozs7Ozs7Z0JBR2JyRCxjQUFjRSxNQUFNLENBQUNpQyxjQUFjLEdBQUcsbUJBQU0sOERBQUNuQjs7c0NBQzlDLDhEQUFDQTs0QkFBSUMsV0FBVTtzQ0FDWCw0RUFBQ0Q7Z0NBQUlDLFdBQVU7O2tEQUNYLDhEQUFDekMsbURBQUtBO3dDQUNGa0QsS0FBSzFDLHlEQUFXQSxDQUFDLENBQUMsbUJBQW1CLENBQUM7d0NBQ3RDMkMsS0FBSTt3Q0FDSjJCLE9BQU87d0NBQ1BDLFFBQVE7d0NBQ1J0QyxXQUFVOzs7Ozs7a0RBRWQsOERBQUN1Qzt3Q0FBS3ZDLFdBQVU7a0RBQ1hqQixjQUFjRSxNQUFNLENBQUNpQyxjQUFjLEdBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7O3NDQUlqRCw4REFBQ25COzRCQUFJQyxXQUFVO3NDQUNYLDRFQUFDRDtnQ0FBSUMsV0FBVTs7a0RBQ1gsOERBQUN6QyxtREFBS0E7d0NBQ0ZrRCxLQUFLMUMseURBQVdBLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQzt3Q0FDdEMyQyxLQUFJO3dDQUNKMkIsT0FBTzt3Q0FDUEMsUUFBUTt3Q0FDUnRDLFdBQVU7Ozs7OztrREFFZCw4REFBQ3VDO3dDQUFLdkMsV0FBVTtrREFDWGpCLGNBQWNFLE1BQU0sQ0FBQ2lDLGNBQWMsR0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Z0JBS2hEbkMsY0FBY0UsTUFBTSxDQUFDa0MsV0FBVyxHQUFHLG1CQUFNLDhEQUFDcEI7O3NDQUMzQyw4REFBQ0E7NEJBQUlDLFdBQVU7c0NBQ1gsNEVBQUNEO2dDQUFJQyxXQUFVOztrREFDWCw4REFBQ0Q7d0NBQUlDLFdBQVU7Ozs7OztrREFDZiw4REFBQ3VDO3dDQUFLdkMsV0FBVTtrREFDWGpCLGNBQWNFLE1BQU0sQ0FBQ2tDLFdBQVc7Ozs7Ozs7Ozs7Ozs7Ozs7O3NDQUk3Qyw4REFBQ3BCOzRCQUFJQyxXQUFVO3NDQUNYLDRFQUFDRDtnQ0FBSUMsV0FBVTs7a0RBQ1gsOERBQUNEO3dDQUFJQyxXQUFVOzs7Ozs7a0RBQ2YsOERBQUN1Qzt3Q0FBS3ZDLFdBQVU7a0RBQ1hqQixjQUFjRSxNQUFNLENBQUNrQyxXQUFXOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs4QkFNN0MsOERBQUNwQjtvQkFBSUMsV0FBVTs7c0NBQ1gsOERBQUNEOzRCQUFJQyxXQUFVOzs4Q0FDWCw4REFBQ3dDO29DQUNHQyxNQUFLO29DQUNMQyxLQUFJO29DQUNKQyxLQUFJO29DQUNKQyxjQUFjN0QsY0FBY0UsTUFBTSxDQUFDaUMsY0FBYztvQ0FDakQyQixVQUFVLENBQUNDLElBQU1kLGtCQUFrQixrQkFBa0JjLEVBQUVDLE1BQU0sQ0FBQ2IsS0FBSztvQ0FDbkVjLFdBQVcsQ0FBQ0YsSUFBTUEsRUFBRUcsY0FBYztvQ0FDbENqRCxXQUFVOzs7Ozs7OENBRWQsOERBQUN1QztvQ0FBS3ZDLFdBQVU7OENBQW9EOzs7Ozs7Ozs7Ozs7c0NBRXhFLDhEQUFDRDs0QkFBSUMsV0FBVTs7OENBQ1gsOERBQUN3QztvQ0FDR0MsTUFBSztvQ0FDTEMsS0FBSTtvQ0FDSkMsS0FBSTtvQ0FDSkMsY0FBYzdELGNBQWNFLE1BQU0sQ0FBQ2tDLFdBQVc7b0NBQzlDMEIsVUFBVSxDQUFDQyxJQUFNZCxrQkFBa0IsZUFBZWMsRUFBRUMsTUFBTSxDQUFDYixLQUFLO29DQUNoRWMsV0FBVyxDQUFDRixJQUFNQSxFQUFFRyxjQUFjO29DQUNsQ2pELFdBQVU7Ozs7Ozs4Q0FFZCw4REFBQ3VDO29DQUFLdkMsV0FBVTs4Q0FBb0Q7Ozs7Ozs7Ozs7OztzQ0FFeEUsOERBQUNEOzRCQUFJQyxXQUFVOzs4Q0FDWCw4REFBQ3dDO29DQUNHQyxNQUFLO29DQUNMQyxLQUFJO29DQUNKQyxLQUFJO29DQUNKQyxjQUFjN0QsY0FBY0UsTUFBTSxDQUFDc0IsU0FBUztvQ0FDNUNzQyxVQUFVLENBQUNDLElBQU1kLGtCQUFrQixhQUFhYyxFQUFFQyxNQUFNLENBQUNiLEtBQUs7b0NBQzlEYyxXQUFXLENBQUNGLElBQU1BLEVBQUVHLGNBQWM7b0NBQ2xDakQsV0FBVTs7Ozs7OzhDQUVkLDhEQUFDdUM7b0NBQUt2QyxXQUFVOzhDQUFvRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBTXhGO0lBQ0EsT0FBTztJQUNQLE1BQU1rRCxnQkFBZ0I7UUFDbEIsTUFBTSxFQUFFdEQsSUFBSSxFQUFFLEdBQUd4QixXQUFXaUIsT0FBTztRQUVuQyxPQUFRTztZQUNKLEtBQUs7Z0JBQ0QsT0FBT0U7WUFDWCxLQUFLO2dCQUNELE9BQU9jO1lBQ1gsS0FBSztnQkFDQSxPQUFPbUI7WUFDWjtnQkFDSSxPQUFPakM7UUFDZjtJQUNKO0lBRUEscUJBQ0ksOERBQUNDO1FBQUlDLFdBQVU7OzBCQUNYLDhEQUFDeEMsaUVBQVNBOzs7OztZQUNUNEQ7WUFDQThCO1lBQ0ExQjs7Ozs7OztBQUdiIiwic291cmNlcyI6WyIvb3B0L2Rldi9lc3QtZHN4L3NyYy9jb21wb25lbnRzL2RzeHBhZ2UvZmx1a2UvVGVzdENvbmZpZy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUsIHVzZUVmZmVjdCB9IGZyb20gJ3JlYWN0JztcclxuaW1wb3J0IEltYWdlIGZyb20gJ25leHQvaW1hZ2UnO1xyXG5pbXBvcnQgU3RhdHVzQmFyIGZyb20gJ0AvY29tcG9uZW50cy9saWIvU3RhdHVzQmFyJztcclxuaW1wb3J0IFRpdGxlQmFyIGZyb20gJ0AvY29tcG9uZW50cy9saWIvVGl0bGVCYXInO1xyXG5pbXBvcnQgU3ViVGl0bGVCYXIgZnJvbSAnQC9jb21wb25lbnRzL2xpYi9TdWJUaXRsZUJhcic7XHJcbmltcG9ydCB1c2VEaXNwbGF5U3RvcmUgZnJvbSAnQC9zdG9yZS9kaXNwbGF5U3RvcmUnO1xyXG5pbXBvcnQgeyB2NCBhcyB1dWlkdjQgfSBmcm9tICd1dWlkJztcclxuaW1wb3J0IE1lbnVMaXN0IGZyb20gJy4vTWVudUxpc3QuanMnO1xyXG5pbXBvcnQgeyBnZXRBc3NldFVybCB9IGZyb20gJ0AvdXRpbHMvYXNzZXQnO1xyXG5cclxuXHJcblxyXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBUZXN0Q29uZmlnKCkge1xyXG4gICAgY29uc3QgW3NlbGVjdGVkQ29uZmlnSWQsIHNldFNlbGVjdGVkQ29uZmlnSWRdID0gdXNlU3RhdGUobnVsbCk7XHJcbiAgICBjb25zdCB7IFxyXG4gICAgICAgIGdldEN1cnJlbnRQcm9qZWN0LFxyXG4gICAgICAgIG5hdmlnYXRpb24sXHJcbiAgICAgICAgbmF2aWdhdGVUbyxcclxuICAgICAgICB1cGRhdGVDdXJyZW50VmlldyxcclxuICAgICAgICBnb0JhY2ssXHJcbiAgICAgICAgc2V0U2VsZWN0ZWRJbmRleGVzLFxyXG4gICAgICAgIHVwZGF0ZVByb2plY3QsXHJcbiAgICAgICAgYWRkUHJvamVjdCxcclxuICAgICAgICBzZXRUb2FzdE1lc3NhZ2VcclxuICAgIH0gPSB1c2VEaXNwbGF5U3RvcmUoKTtcclxuXHJcbiAgICAvLyDojrflj5blvZPliY3pobnnm67mlbDmja5cclxuICAgIGNvbnN0IGN1cnJlbnRQcm9qZWN0ID0gZ2V0Q3VycmVudFByb2plY3QoKTtcclxuXHJcbiAgICAvLyDljZXlpJrmqKHliKTmlq1cclxuICAgIGNvbnN0IHsgZ2V0Q3VycmVudFRlc3RDb25maWcgfSA9IHVzZURpc3BsYXlTdG9yZS5nZXRTdGF0ZSgpO1xyXG4gICAgY29uc3QgY3VycmVudENvbmZpZyA9IGdldEN1cnJlbnRUZXN0Q29uZmlnKCk7XHJcbiAgICBjb25zdCBjYWJsZVR5cGUgPSBjdXJyZW50Q29uZmlnLnBhcmFtcy5jYWJsZVR5cGU7XHJcbiAgICBjb25zdCBpc011bHRpTW9kZSA9IGNhYmxlVHlwZS5pbmNsdWRlcygnT00nKTtcclxuXHJcbiAgICAvLyDorr7nva7pu5jorqTpgInkuK3nmoTphY3nva5cclxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XHJcbiAgICAgICAgICAgIC8vIOS8mOWFiOS9v+eUqOWvvOiIquWPguaVsOS4reeahOmFjee9rklEXHJcbiAgICAgICAgICAgIGNvbnN0IGNvbmZpZ0lkRnJvbVBhcmFtcyA9IG5hdmlnYXRpb24uY3VycmVudC5wYXJhbXM/LnNlbGVjdGVkQ29uZmlnSWQ7XHJcbiAgICAgICAgICAgIGlmIChjb25maWdJZEZyb21QYXJhbXMpIHtcclxuICAgICAgICAgICAgICAgIHNldFNlbGVjdGVkQ29uZmlnSWQoY29uZmlnSWRGcm9tUGFyYW1zKTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgLy8g5aaC5p6c5rKh5pyJ5Y+C5pWw77yM5L2/55So5b2T5YmN6YCJ5Lit55qE6YWN572u57Si5byVXHJcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRUZXN0Q29uZmlnSW5kZXggPSB1c2VEaXNwbGF5U3RvcmUuZ2V0U3RhdGUoKS5zZWxlY3RlZEluZGV4ZXMudGVzdENvbmZpZ0luZGV4O1xyXG4gICAgICAgICAgICBpZiAoY3VycmVudFByb2plY3Q/LnRlc3RDb25maWdzICYmIGN1cnJlbnRUZXN0Q29uZmlnSW5kZXggPj0gMCkge1xyXG4gICAgICAgICAgICAgICAgc2V0U2VsZWN0ZWRDb25maWdJZChjdXJyZW50UHJvamVjdC50ZXN0Q29uZmlnc1tjdXJyZW50VGVzdENvbmZpZ0luZGV4XS5pZCk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC8vIOehruS/neWvvOiIquWOhuWPsuato+ehruiusOW9lVxyXG4gICAgICAgICAgICBpZiAobmF2aWdhdGlvbi5jdXJyZW50Lm5hbWUgPT09ICd0ZXN0Y29uZmlnJyAmJiBuYXZpZ2F0aW9uLmN1cnJlbnQudmlldyA9PT0gJ21haW4nKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50ID0gbmF2aWdhdGlvbi5jdXJyZW50O1xyXG4gICAgICAgICAgICAgICAgY29uc3QgcHJldmlvdXMgPSBuYXZpZ2F0aW9uLnByZXZpb3VzO1xyXG4gICAgICAgICAgICAgICAgaWYgKCFwcmV2aW91cyB8fCBwcmV2aW91cy5uYW1lICE9PSAndGVzdGNvbmZpZycgfHwgcHJldmlvdXMudmlldyAhPT0gJ21haW4nKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdXNlRGlzcGxheVN0b3JlLmdldFN0YXRlKCkubmF2aWdhdGVUbygndGVzdGNvbmZpZycsICdtYWluJywgY3VycmVudC5wYXJhbXMpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSwgW2N1cnJlbnRQcm9qZWN0LCBuYXZpZ2F0aW9uLmN1cnJlbnQucGFyYW1zXSk7XHJcblxyXG4gICAgLy8g5riy5p+T5Li76KeG5Zu+5YaF5a65XHJcbiAgICBjb25zdCByZW5kZXJNYWluQ29udGVudCA9ICgpID0+IHtcclxuICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImgtWzQ5MHB4XSBmbGV4LTEgYmctWyMzMDMwNDBdIHAtNFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJoLWZ1bGwgb3ZlcmZsb3cteS1hdXRvIHNwYWNlLXktMiBwci0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAge2N1cnJlbnRQcm9qZWN0Py50ZXN0Q29uZmlncy5tYXAoKGNvbmZpZykgPT4gKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtjb25maWcuaWR9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJoLVsxMDBweF0gYmctZ3JhZGllbnQtdG8tYiBmcm9tLVsjZTZlM2U2XSB0by1bIzdiNzk3Yl0gcm91bmRlZC1zbSBwLTQgc2hhZG93LWxnIGZsZXggaXRlbXMtY2VudGVyIGdhcC00IGN1cnNvci1wb2ludGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTZWxlY3RlZENvbmZpZ0lkKGNvbmZpZy5pZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g5L+d5a2Y6YCJ5Lit55qE6YWN572uSUTliLDlr7zoiKrlj4LmlbBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVDdXJyZW50VmlldygnbWFpbicsIHsgc2VsZWN0ZWRDb25maWdJZDogY29uZmlnLmlkIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LTYgaC02IGJvcmRlci0yIGJvcmRlci1ncmF5LTYwMCByb3VuZGVkLWZ1bGwgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7c2VsZWN0ZWRDb25maWdJZCA9PT0gY29uZmlnLmlkICYmIChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LTQgaC00IGJnLWJsdWUtNTAwIHJvdW5kZWQtZnVsbFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4LTEgcmVsYXRpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm10LTFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2NvbmZpZy5tb2R1bGVUeXBlID09PSAnODAwMCcgJiYgKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtYmxhY2sgdGV4dC1zbVwiPntjb25maWcucGFyYW1zLmxpbWl0VmFsdWV9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LWJsYWNrIHRleHQtc21cIj57Y29uZmlnLnBhcmFtcy5jYWJsZVR5cGV9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LWJsYWNrIHRleHQtc21cIj57Y29uZmlnLnBhcmFtcy53aXJlT3JkZXJ9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Lz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2NvbmZpZy5tb2R1bGVUeXBlID09PSAnY2ZwJyAmJiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1ibGFjayB0ZXh0LXNtXCI+5pm66IO96L+c56uvPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LWJsYWNrIHRleHQtc21cIj57Y29uZmlnLnBhcmFtcy5saW1pdFZhbHVlfTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1ibGFjayB0ZXh0LXNtXCI+e2NvbmZpZy5wYXJhbXMuY2FibGVUeXBlfTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1ibGFjayB0ZXh0LXNtXCI+e2NvbmZpZy5wYXJhbXMucmVmSnVtcGVyfSDot7Pnur/lj4Lnhac8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y29uZmlnLm1vZHVsZVR5cGUgPT09ICdvZnAnICYmIChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LWJsYWNrIHRleHQtc21cIj7oh6rliqhPVERSPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LWJsYWNrIHRleHQtc21cIj57Y29uZmlnLnBhcmFtcy5saW1pdFZhbHVlfTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1ibGFjayB0ZXh0LXNtXCI+e2NvbmZpZy5wYXJhbXMuY2FibGVUeXBlfTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LWdyYXktNDAwIHRleHQtc20gYWJzb2x1dGUgdG9wLTAgcmlnaHQtMFwiPntjb25maWcubW9kdWxlbGFibGV9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy0zIGgtMyByZWxhdGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJbWFnZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9e2dldEFzc2V0VXJsKCcvYXJyb3cucG5nJyl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdD1cIueureWktFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwib2JqZWN0LWNvbnRhaW5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgKSl9XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgKTtcclxuICAgIH07XHJcblxyXG4gICAgLy8g5riy5p+T6K6+572u6KeG5Zu+5YaF5a65XHJcbiAgICBjb25zdCByZW5kZXJTZXR1cENvbnRlbnQgPSAoKSA9PiB7XHJcbiAgICAgICAgY29uc3QgY3VycmVudENvbmZpZyA9IGN1cnJlbnRQcm9qZWN0Py50ZXN0Q29uZmlncy5maW5kKFxyXG4gICAgICAgICAgICBjb25maWcgPT4gY29uZmlnLmlkID09PSBzZWxlY3RlZENvbmZpZ0lkXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgaWYgKCFjdXJyZW50Q29uZmlnKSByZXR1cm4gbnVsbDtcclxuXHJcbiAgICAgICAgY29uc3QgcmVuZGVyQ29uZmlnQ29udGVudCA9ICgpID0+IHtcclxuICAgICAgICAgICAgc3dpdGNoIChjdXJyZW50Q29uZmlnLm1vZHVsZVR5cGUpIHtcclxuICAgICAgICAgICAgICAgIGNhc2UgJzgwMDAnOlxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwic3BhY2UteS0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInNwYWNlLXktMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImgtWzUwcHhdIGJnLWdyYWRpZW50LXRvLWIgZnJvbS1bI2U2ZTNlNl0gdG8tWyM3Yjc5N2JdIHJvdW5kZWQtdC1zbSBwLTQgc2hhZG93LWxnIGZsZXgganVzdGlmeS1iZXR3ZWVuIGl0ZW1zLWNlbnRlciBjdXJzb3ItcG9pbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IG5hdmlnYXRlVG8oJ21lbnVsaXN0JywgJ3NldHVwJywgeyBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lbnVUeXBlOiAnQ0FCTEVfVFlQRScsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZENvbmZpZ0lkOiBzZWxlY3RlZENvbmZpZ0lkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFja1RvOiAndGVzdGNvbmZpZycsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrVmlldzogJ3NldHVwJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1ibGFjayB0ZXh0LWwgZm9udC1ib2xkXCI+55S157yG57G75Z6L77yae2N1cnJlbnRDb25maWcucGFyYW1zLmNhYmxlVHlwZX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LTMgaC0zIHJlbGF0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SW1hZ2Ugc3JjPXtnZXRBc3NldFVybCgnL2Fycm93LnBuZycpfSBhbHQ9XCLnrq3lpLRcIiBmaWxsIGNsYXNzTmFtZT1cIm9iamVjdC1jb250YWluXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJoLVs1MHB4XSBiZy1ncmFkaWVudC10by1iIGZyb20tWyNmZmZmZmZdIHRvLVsjZmZmZmZmXSByb3VuZGVkLWItc20gcC00IHNoYWRvdy1sZyBmbGV4IGp1c3RpZnktYmV0d2VlbiBpdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LWJsYWNrIHRleHQtbFwiPk5WUO+8muagueaNrueUtee8huexu+Wei+eUn+aIkDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctMyBoLTMgcmVsYXRpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJbWFnZSBzcmM9e2dldEFzc2V0VXJsKCcvYXJyb3cucG5nJyl9IGFsdD1cIueureWktFwiIGZpbGwgY2xhc3NOYW1lPVwib2JqZWN0LWNvbnRhaW5cIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJzcGFjZS15LTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJoLVs1MHB4XSBiZy1ncmFkaWVudC10by1iIGZyb20tWyNlNmUzZTZdIHRvLVsjN2I3OTdiXSByb3VuZGVkLXQtc20gcC00IHNoYWRvdy1sZyBmbGV4IGp1c3RpZnktYmV0d2VlbiBpdGVtcy1jZW50ZXIgY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBuYXZpZ2F0ZVRvKCdtZW51bGlzdCcsICdzZXR1cCcsIHsgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZW51VHlwZTogJ0xJTUlUX1ZBTFVFJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkQ29uZmlnSWQ6IHNlbGVjdGVkQ29uZmlnSWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrVG86ICd0ZXN0Y29uZmlnJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tWaWV3OiAnc2V0dXAnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LWJsYWNrIHRleHQtbCBmb250LWJvbGRcIj7mtYvor5XmnoHpmZDlgLzvvJp7Y3VycmVudENvbmZpZy5wYXJhbXMubGltaXRWYWx1ZX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LTMgaC0zIHJlbGF0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SW1hZ2Ugc3JjPXtnZXRBc3NldFVybCgnL2Fycm93LnBuZycpfSBhbHQ9XCLnrq3lpLRcIiBmaWxsIGNsYXNzTmFtZT1cIm9iamVjdC1jb250YWluXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJoLVs1MHB4XSBiZy1ncmFkaWVudC10by1iIGZyb20tWyNmZmZmZmZdIHRvLVsjZmZmZmZmXSAgcC00IHNoYWRvdy1sZyBmbGV4IGp1c3RpZnktYmV0d2VlbiBpdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LWJsYWNrIHRleHQtbFwiPuWtmOWCqOe7mOWbvuaVsOaNru+8muW8gDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctMyBoLTMgcmVsYXRpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJbWFnZSBzcmM9e2dldEFzc2V0VXJsKCcvYXJyb3cucG5nJyl9IGFsdD1cIueureWktFwiIGZpbGwgY2xhc3NOYW1lPVwib2JqZWN0LWNvbnRhaW5cIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImgtWzUwcHhdIGJnLWdyYWRpZW50LXRvLWIgZnJvbS1bI2ZmZmZmZl0gdG8tWyNmZmZmZmZdIHJvdW5kZWQtYi1zbSBwLTQgc2hhZG93LWxnIGZsZXgganVzdGlmeS1iZXR3ZWVuIGl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtYmxhY2sgdGV4dC1sXCI+SERURFIvSERURFjvvJrku4XpmZDlpLHotKUv6YCa6L+HPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy0zIGgtMyByZWxhdGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEltYWdlIHNyYz17Z2V0QXNzZXRVcmwoJy9hcnJvdy5wbmcnKX0gYWx0PVwi566t5aS0XCIgZmlsbCBjbGFzc05hbWU9XCJvYmplY3QtY29udGFpblwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImgtWzUwcHhdIGJnLWdyYWRpZW50LXRvLWIgZnJvbS1bI2U2ZTNlNl0gdG8tWyM3Yjc5N2JdIHJvdW5kZWQtc20gcC00IHNoYWRvdy1sZyBmbGV4IGp1c3RpZnktYmV0d2VlbiBpdGVtcy1jZW50ZXIgY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IG5hdmlnYXRlVG8oJ21lbnVsaXN0JywgJ3NldHVwJywgeyBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVudVR5cGU6ICdXSVJFX09SREVSJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRDb25maWdJZDogc2VsZWN0ZWRDb25maWdJZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFja1RvOiAndGVzdGNvbmZpZycsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tWaWV3OiAnc2V0dXAnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LWJsYWNrIHRleHQtbCBmb250LWJvbGRcIj7mj5LluqfphY3nva7vvJp7Y3VycmVudENvbmZpZy5wYXJhbXMud2lyZU9yZGVyfTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy0zIGgtMyByZWxhdGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SW1hZ2Ugc3JjPXtnZXRBc3NldFVybCgnL2Fycm93LnBuZycpfSBhbHQ9XCLnrq3lpLRcIiBmaWxsIGNsYXNzTmFtZT1cIm9iamVjdC1jb250YWluXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgY2FzZSAnY2ZwJzpcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInNwYWNlLXktNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJzcGFjZS15LTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImgtWzUwcHhdIGJnLWdyYWRpZW50LXRvLWIgZnJvbS1bI2U2ZTNlNl0gdG8tWyM3Yjc5N2JdIHJvdW5kZWQtdC1zbSBwLTQgc2hhZG93LWxnIGZsZXgganVzdGlmeS1iZXR3ZWVuIGl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtYmxhY2sgdGV4dC1sIGZvbnQtYm9sZFwiPua1i+ivleexu+Wei++8muaZuuiDvei/nOerrzwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctMyBoLTMgcmVsYXRpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJbWFnZSBzcmM9e2dldEFzc2V0VXJsKCcvYXJyb3cucG5nJyl9IGFsdD1cIueureWktFwiIGZpbGwgY2xhc3NOYW1lPVwib2JqZWN0LWNvbnRhaW5cIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImgtWzUwcHhdIGJnLWdyYWRpZW50LXRvLWIgZnJvbS1bI2ZmZmZmZl0gdG8tWyNmZmZmZmZdIHJvdW5kZWQtYi1zbSBwLTQgc2hhZG93LWxnIGZsZXgganVzdGlmeS1iZXR3ZWVuIGl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtYmxhY2sgdGV4dC1sXCI+5Y+M5ZCR77ya5YWzPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy0zIGgtMyByZWxhdGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEltYWdlIHNyYz17Z2V0QXNzZXRVcmwoJy9hcnJvdy5wbmcnKX0gYWx0PVwi566t5aS0XCIgZmlsbCBjbGFzc05hbWU9XCJvYmplY3QtY29udGFpblwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImgtWzUwcHhdIGJnLWdyYWRpZW50LXRvLWIgZnJvbS1bI2U2ZTNlNl0gdG8tWyM3Yjc5N2JdIHJvdW5kZWQtc20gcC00IHNoYWRvdy1sZyBmbGV4IGp1c3RpZnktYmV0d2VlbiBpdGVtcy1jZW50ZXIgY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IG5hdmlnYXRlVG8oJ21lbnVsaXN0JywgJ3NldHVwJywgeyBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVudVR5cGU6ICdGSUJFUl9UWVBFJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRDb25maWdJZDogc2VsZWN0ZWRDb25maWdJZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFja1RvOiAndGVzdGNvbmZpZycsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tWaWV3OiAnc2V0dXAnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LWJsYWNrIHRleHQtbCBmb250LWJvbGRcIj7lhYnnuqTnsbvlnovvvJp7Y3VycmVudENvbmZpZy5wYXJhbXMuY2FibGVUeXBlfTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy0zIGgtMyByZWxhdGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SW1hZ2Ugc3JjPXtnZXRBc3NldFVybCgnL2Fycm93LnBuZycpfSBhbHQ9XCLnrq3lpLRcIiBmaWxsIGNsYXNzTmFtZT1cIm9iamVjdC1jb250YWluXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJzcGFjZS15LTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJoLVs1MHB4XSBiZy1ncmFkaWVudC10by1iIGZyb20tWyNlNmUzZTZdIHRvLVsjN2I3OTdiXSByb3VuZGVkLXQtc20gcC00IHNoYWRvdy1sZyBmbGV4IGp1c3RpZnktYmV0d2VlbiBpdGVtcy1jZW50ZXIgY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBuYXZpZ2F0ZVRvKCdtZW51bGlzdCcsICdzZXR1cCcsIHsgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZW51VHlwZTogJ0NGUF9MSU1JVCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZENvbmZpZ0lkOiBzZWxlY3RlZENvbmZpZ0lkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFja1RvOiAndGVzdGNvbmZpZycsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrVmlldzogJ3NldHVwJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1ibGFjayB0ZXh0LWwgZm9udC1ib2xkXCI+5rWL6K+V5p6B6ZmQ5YC877yae2N1cnJlbnRDb25maWcucGFyYW1zLmxpbWl0VmFsdWV9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy0zIGgtMyByZWxhdGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEltYWdlIHNyYz17Z2V0QXNzZXRVcmwoJy9hcnJvdy5wbmcnKX0gYWx0PVwi566t5aS0XCIgZmlsbCBjbGFzc05hbWU9XCJvYmplY3QtY29udGFpblwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaC1bNTBweF0gYmctZ3JhZGllbnQtdG8tYiBmcm9tLVsjZmZmZmZmXSB0by1bI2ZmZmZmZl0gIHAtNCBzaGFkb3ctbGcgZmxleCBqdXN0aWZ5LWJldHdlZW4gaXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1ibGFjayB0ZXh0LWwgXCI+5Y+C54Wn5pa55rOV77yae2N1cnJlbnRDb25maWcucGFyYW1zLnJlZkp1bXBlcn0g6Lez57q/PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy0zIGgtMyByZWxhdGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEltYWdlIHNyYz17Z2V0QXNzZXRVcmwoJy9hcnJvdy5wbmcnKX0gYWx0PVwi566t5aS0XCIgZmlsbCBjbGFzc05hbWU9XCJvYmplY3QtY29udGFpblwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaC1bNTBweF0gYmctZ3JhZGllbnQtdG8tYiBmcm9tLVsjZmZmZmZmXSB0by1bI2ZmZmZmZl0gIHAtNCBzaGFkb3ctbGcgZmxleCBqdXN0aWZ5LWJldHdlZW4gaXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1ibGFjayB0ZXh0LWxcIj7ov57mjqXlmajnsbvlnovvvJpMQzwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctMyBoLTMgcmVsYXRpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJbWFnZSBzcmM9e2dldEFzc2V0VXJsKCcvYXJyb3cucG5nJyl9IGFsdD1cIueureWktFwiIGZpbGwgY2xhc3NOYW1lPVwib2JqZWN0LWNvbnRhaW5cIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImgtWzUwcHhdIGJnLWdyYWRpZW50LXRvLWIgZnJvbS1bI2ZmZmZmZl0gdG8tWyNmZmZmZmZdIHJvdW5kZWQtYi1zbSBwLTQgc2hhZG93LWxnIGZsZXgganVzdGlmeS1iZXR3ZWVuIGl0ZW1zLWNlbnRlciBjdXJzb3ItcG9pbnRlciBcIiBvbkNsaWNrPXsoKSA9PiB1cGRhdGVDdXJyZW50VmlldygnY2ZwLWNvbnVudCcpfT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LWJsYWNrIHRleHQtbFwiID7mjqXnur8v5o6l5aS055qE5pWw6YeP77yae2N1cnJlbnRDb25maWcucGFyYW1zLmNvbm5lY3RvckNvdW50fS97Y3VycmVudENvbmZpZy5wYXJhbXMuc3BsaWNlQ291bnR9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy0zIGgtMyByZWxhdGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEltYWdlIHNyYz17Z2V0QXNzZXRVcmwoJy9hcnJvdy5wbmcnKX0gYWx0PVwi566t5aS0XCIgZmlsbCBjbGFzc05hbWU9XCJvYmplY3QtY29udGFpblwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICBjYXNlICdvZnAnOlxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwic3BhY2UteS00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInNwYWNlLXktMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaC1bNTBweF0gYmctZ3JhZGllbnQtdG8tYiBmcm9tLVsjZTZlM2U2XSB0by1bIzdiNzk3Yl0gcm91bmRlZC10LXNtIHAtNCBzaGFkb3ctbGcgZmxleCBqdXN0aWZ5LWJldHdlZW4gaXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1ibGFjayB0ZXh0LWwgZm9udC1ib2xkXCI+5rWL6K+V57G75Z6L77ya6Ieq5YqoT1REUjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctMyBoLTMgcmVsYXRpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJbWFnZSBzcmM9e2dldEFzc2V0VXJsKCcvYXJyb3cucG5nJyl9IGFsdD1cIueureWktFwiIGZpbGwgY2xhc3NOYW1lPVwib2JqZWN0LWNvbnRhaW5cIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImgtWzUwcHhdIGJnLWdyYWRpZW50LXRvLWIgZnJvbS1bI2ZmZmZmZl0gdG8tWyNmZmZmZmZdIHAtNCBzaGFkb3ctbGcgZmxleCBqdXN0aWZ5LWJldHdlZW4gaXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1ibGFjayB0ZXh0LWwgXCI+5YmN5a+86KGl5YG/77ya5byAPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy0zIGgtMyByZWxhdGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgey8qIDxJbWFnZSBzcmM9e2dldEFzc2V0VXJsKCcvYXJyb3cucG5nJyl9IGFsdD1cIueureWktFwiIGZpbGwgY2xhc3NOYW1lPVwib2JqZWN0LWNvbnRhaW5cIiAvPiAqL31cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJoLVs1MHB4XSBiZy1ncmFkaWVudC10by1iIGZyb20tWyNmZmZmZmZdIHRvLVsjZmZmZmZmXSByb3VuZGVkLWItc20gIHAtNCBzaGFkb3ctbGcgZmxleCBqdXN0aWZ5LWJldHdlZW4gaXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LWJsYWNrIHRleHQtbCBcIj7ms6Lplb/vvJp7Y3VycmVudENvbmZpZy5wYXJhbXMuY2FibGVUeXBlLmluY2x1ZGVzKCdPTScpID8gJzg1MCBubeOAgTEzMTBubScgOiAnMTMxMG5t44CBMTU1MG5tJ308L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctMyBoLTMgcmVsYXRpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgey8qIDxJbWFnZSBzcmM9e2dldEFzc2V0VXJsKCcvYXJyb3cucG5nJyl9IGFsdD1cIueureWktFwiIGZpbGwgY2xhc3NOYW1lPVwib2JqZWN0LWNvbnRhaW5cIiAvPiAqL31cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImgtWzUwcHhdIGJnLWdyYWRpZW50LXRvLWIgZnJvbS1bI2U2ZTNlNl0gdG8tWyM3Yjc5N2JdIHJvdW5kZWQtc20gcC00IHNoYWRvdy1sZyBmbGV4IGp1c3RpZnktYmV0d2VlbiBpdGVtcy1jZW50ZXIgY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IG5hdmlnYXRlVG8oJ21lbnVsaXN0JywgJ3NldHVwJywgeyBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVudVR5cGU6ICdGSUJFUl9UWVBFJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRDb25maWdJZDogc2VsZWN0ZWRDb25maWdJZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFja1RvOiAndGVzdGNvbmZpZycsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tWaWV3OiAnc2V0dXAnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LWJsYWNrIHRleHQtbCBmb250LWJvbGRcIj7lhYnnuqTnsbvlnovvvJp7Y3VycmVudENvbmZpZy5wYXJhbXMuY2FibGVUeXBlfTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy0zIGgtMyByZWxhdGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SW1hZ2Ugc3JjPXtnZXRBc3NldFVybCgnL2Fycm93LnBuZycpfSBhbHQ9XCLnrq3lpLRcIiBmaWxsIGNsYXNzTmFtZT1cIm9iamVjdC1jb250YWluXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJoLVs1MHB4XSBiZy1ncmFkaWVudC10by1iIGZyb20tWyNlNmUzZTZdIHRvLVsjN2I3OTdiXSByb3VuZGVkLXNtIHAtNCBzaGFkb3ctbGcgZmxleCBqdXN0aWZ5LWJldHdlZW4gaXRlbXMtY2VudGVyIGN1cnNvci1wb2ludGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBuYXZpZ2F0ZVRvKCdtZW51bGlzdCcsICdzZXR1cCcsIHsgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lbnVUeXBlOiAnT0ZQX0xJTUlUJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRDb25maWdJZDogc2VsZWN0ZWRDb25maWdJZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFja1RvOiAndGVzdGNvbmZpZycsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tWaWV3OiAnc2V0dXAnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LWJsYWNrIHRleHQtbCBmb250LWJvbGRcIj7mtYvor5XmnoHpmZDlgLzvvJp7Y3VycmVudENvbmZpZy5wYXJhbXMubGltaXRWYWx1ZX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctMyBoLTMgcmVsYXRpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEltYWdlIHNyYz17Z2V0QXNzZXRVcmwoJy9hcnJvdy5wbmcnKX0gYWx0PVwi566t5aS0XCIgZmlsbCBjbGFzc05hbWU9XCJvYmplY3QtY29udGFpblwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXgtMSBiZy1bIzMwMzA0MF0gcC00XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImgtZnVsbCBiZy1ncmFkaWVudC10by1iIGZyb20tWyNjNmMzYzZdIHRvLVsjYzZjM2M2XSByb3VuZGVkLXNtIHAtNCBzaGFkb3ctbGcgZmxleCBmbGV4LWNvbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImZsZXgganVzdGlmeS1iZXR3ZWVuIGl0ZW1zLWNlbnRlciBtYi00IGN1cnNvci1wb2ludGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gbmF2aWdhdGVUbygnbWVudWxpc3QnLCAnc2V0dXAnLCB7IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVudVR5cGU6ICdNT0RVTEUnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRDb25maWdJZDogc2VsZWN0ZWRDb25maWdJZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tUbzogJ3Rlc3Rjb25maWcnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFja1ZpZXc6ICdzZXR1cCdcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtYmxhY2sgZm9udC1ib2xkIHRleHQtbGdcIj7mqKHlnZfvvJp7Y3VycmVudENvbmZpZy5tb2R1bGVsYWJsZX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LTUgaC01IHJlbGF0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SW1hZ2Ugc3JjPXtnZXRBc3NldFVybCgnL2Fycm93LnBuZycpfSBhbHQ9XCLnrq3lpLRcIiBmaWxsIGNsYXNzTmFtZT1cIm9iamVjdC1jb250YWluXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4LTEgb3ZlcmZsb3ctYXV0b1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7cmVuZGVyQ29uZmlnQ29udGVudCgpfVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICk7XHJcbiAgICB9O1xyXG5cclxuICAgIC8vIOa4suafk+agh+mimOagj1xyXG4gICAgY29uc3QgcmVuZGVyVGl0bGVCYXIgPSAoKSA9PiB7XHJcbiAgICAgICAgY29uc3QgeyB2aWV3IH0gPSBuYXZpZ2F0aW9uLmN1cnJlbnQ7XHJcbiAgICAgICAgXHJcbiAgICAgICAgY29uc3QgaGFuZGxlQmFjayA9ICgpID0+IHtcclxuICAgICAgICAgICAgaWYgKHZpZXcgPT09ICdzZXR1cCcpIHtcclxuICAgICAgICAgICAgICB1cGRhdGVDdXJyZW50VmlldygnbWFpbicpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgZ29CYWNrKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH07XHJcbiAgICAgICAgXHJcbiAgICAgICAgc3dpdGNoICh2aWV3KSB7XHJcbiAgICAgICAgICAgIGNhc2UgJ21haW4nOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICAgICAgICA8VGl0bGVCYXIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPVwi5pu05pS55rWL6K+VXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tUbz17bmF2aWdhdGlvbi5wcmV2aW91cz8ubmFtZSB8fCAnaG9tZSd9IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB2aWV3PXtuYXZpZ2F0aW9uLnByZXZpb3VzPy52aWV3IHx8ICdtYWluJ30gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcz17bmF2aWdhdGlvbi5wcmV2aW91cz8ucGFyYW1zIHx8IHt9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkJhY2s9e2hhbmRsZUJhY2t9XHJcbiAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIGNhc2UgJ3NldHVwJzpcclxuICAgICAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICAgICAgPFRpdGxlQmFyIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT1cIua1i+ivleiuvue9rlwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBiYWNrVG89e25hdmlnYXRpb24ucHJldmlvdXM/Lm5hbWUgfHwgJ3Rlc3Rjb25maWcnfSBcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmlldz17bmF2aWdhdGlvbi5wcmV2aW91cz8udmlldyB8fCAnbWFpbid9IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXM9e25hdmlnYXRpb24ucHJldmlvdXM/LnBhcmFtcyB8fCB7fX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgb25CYWNrPXtoYW5kbGVCYWNrfVxyXG4gICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICBjYXNlICdjZnAtY29udW50JzpcclxuICAgICAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICAgICAgPFRpdGxlQmFyIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT1cIiBcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmlldz17J3NldHVwJ30gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcz17bmF2aWdhdGlvbi5wcmV2aW91cz8ucGFyYW1zIHx8IHt9fVxyXG4gICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgLy8g5riy5p+T5bqV6YOo5qCPXHJcbiAgICBjb25zdCByZW5kZXJGb290ZXIgPSAoKSA9PiB7XHJcbiAgICAgICAgY29uc3QgeyB2aWV3IH0gPSBuYXZpZ2F0aW9uLmN1cnJlbnQ7XHJcbiAgICAgICAgXHJcbiAgICAgICAgc3dpdGNoICh2aWV3KSB7XHJcbiAgICAgICAgICAgIGNhc2UgJ21haW4nOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImgtWzYwcHhdIGJnLVsjMzAzMDMwXSBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gcHgtOFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIOWIm+W7uuaWsOeahOa1i+ivlemFjee9rlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5ld0NvbmZpZyA9IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHV1aWR2NCgpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGVUeXBlOiAnODAwMCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZWxhYmxlOiAnRFNYLTgwMDAnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXM6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbWl0VmFsdWU6ICdUSUEgQ2F0IDYgQ2hhbm5lbCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWJsZVR5cGU6ICdDYXQ2IFUvVVRQJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpcmVPcmRlcjogJ1Q1NjhCJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZkp1bXBlcjogJzEnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BsaWNlQ291bnQ6ICcwJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbm5lY3RvckNvdW50OiAnMidcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIOabtOaWsOmhueebru+8jOa3u+WKoOaWsOeahOa1i+ivlemFjee9rlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVwZGF0ZWRQcm9qZWN0ID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5jdXJyZW50UHJvamVjdCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdENvbmZpZ3M6IFsuLi5jdXJyZW50UHJvamVjdC50ZXN0Q29uZmlncywgbmV3Q29uZmlnXVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlUHJvamVjdCh1c2VEaXNwbGF5U3RvcmUuZ2V0U3RhdGUoKS5zZWxlY3RlZEluZGV4ZXMucHJvamVjdEluZGV4LCB1cGRhdGVkUHJvamVjdCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g6K6+572u5paw6YWN572u5Li66YCJ5Lit54q25oCB5bm25L+d5a2Y5Yiw5a+86Iiq5Y+C5pWwXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U2VsZWN0ZWRDb25maWdJZChuZXdDb25maWcuaWQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZUN1cnJlbnRWaWV3KCdzZXR1cCcsIHsgc2VsZWN0ZWRDb25maWdJZDogbmV3Q29uZmlnLmlkIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInctWzEwMHB4XSBoLVs0MHB4XSBiZy1ncmFkaWVudC10by1iIGZyb20tWyM2NTY1NjVdIHRvLVsjMzEzNDMxXSByb3VuZGVkLXNtIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHRleHQtd2hpdGUgZm9udC1ib2xkIHNoYWRvdy1sZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIOaWsOa1i+ivlVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXNlbGVjdGVkQ29uZmlnSWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VG9hc3RNZXNzYWdlKCfor7flhYjpgInmi6nkuIDkuKrmtYvor5XphY3nva4nKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyDkv53lrZjpgInkuK3nmoTphY3nva5JROWIsOWvvOiIquWPguaVsFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZUN1cnJlbnRWaWV3KCdzZXR1cCcsIHsgc2VsZWN0ZWRDb25maWdJZDogc2VsZWN0ZWRDb25maWdJZCB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ3LVsxMDBweF0gaC1bNDBweF0gYmctZ3JhZGllbnQtdG8tYiBmcm9tLVsjNjU2NTY1XSB0by1bIzMxMzQzMV0gcm91bmRlZC1zbSBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciB0ZXh0LXdoaXRlIGZvbnQtYm9sZCBzaGFkb3ctbGdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICDnvJbovpFcclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFzZWxlY3RlZENvbmZpZ0lkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRvYXN0TWVzc2FnZSgn6K+35YWI6YCJ5oup5LiA5Liq5rWL6K+V6YWN572uJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY29uZmlnSW5kZXggPSBjdXJyZW50UHJvamVjdC50ZXN0Q29uZmlncy5maW5kSW5kZXgoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZyA9PiBjb25maWcuaWQgPT09IHNlbGVjdGVkQ29uZmlnSWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFNlbGVjdGVkSW5kZXhlcyh7IHRlc3RDb25maWdJbmRleDogY29uZmlnSW5kZXggfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmF2aWdhdGVUbygnaG9tZScsICdtYWluJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidy1bMTAwcHhdIGgtWzQwcHhdIGJnLWdyYWRpZW50LXRvLWIgZnJvbS1bI2ZmZDc3M10gdG8tWyNlN2FhMjldIHJvdW5kZWQtc20gZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgdGV4dC1ibGFjayBmb250LWJvbGQgc2hhZG93LWxnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAg5L2/55So5omA6YCJXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgY2FzZSAnc2V0dXAnOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImgtWzYwcHhdIGJnLVsjMzAzMDMwXSBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWVuZCBweC04XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g5L+d5a2Y6YWN572u5bm26L+U5Zue5Li76KeG5Zu+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlQ3VycmVudFZpZXcoJ21haW4nLCB7IHNlbGVjdGVkQ29uZmlnSWQ6IHNlbGVjdGVkQ29uZmlnSWQgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidy1bMTAwcHhdIGgtWzQwcHhdIGJnLWdyYWRpZW50LXRvLWIgZnJvbS1bI2ZmZDc3M10gdG8tWyNlN2FhMjldIHJvdW5kZWQtc20gZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgdGV4dC1ibGFjayBmb250LWJvbGQgc2hhZG93LWxnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAg5L+d5a2YXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgY2FzZSAnY2ZwLWNvbnVudCc6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaC1bNjBweF0gYmctWyMzMDMwMzBdIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktZW5kIHB4LThcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyDkv53lrZjphY3nva7lubbov5Tlm57kuLvop4blm75cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVDdXJyZW50Vmlldygnc2V0dXAnLCB7IHNlbGVjdGVkQ29uZmlnSWQ6IHNlbGVjdGVkQ29uZmlnSWQgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidy1bMTAwcHhdIGgtWzQwcHhdIGJnLWdyYWRpZW50LXRvLWIgZnJvbS1bI2ZmZDc3M10gdG8tWyNlN2FhMjldIHJvdW5kZWQtc20gZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgdGV4dC1ibGFjayBmb250LWJvbGQgc2hhZG93LWxnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAg5L+d5a2YXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgcmVuZGVyQ0ZQQ09OVU5UQ29udGVudCA9ICgpID0+e1xyXG4gICAgICAgIGNvbnN0IGN1cnJlbnRDb25maWcgPSBjdXJyZW50UHJvamVjdD8udGVzdENvbmZpZ3MuZmluZChcclxuICAgICAgICAgICAgY29uZmlnID0+IGNvbmZpZy5pZCA9PT0gc2VsZWN0ZWRDb25maWdJZFxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIGlmICghY3VycmVudENvbmZpZykgcmV0dXJuIG51bGw7XHJcblxyXG4gICAgICAgIGNvbnN0IGhhbmRsZVZhbHVlQ2hhbmdlID0gKGZpZWxkLCB2YWx1ZSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBjdXJyZW50Q29uZmlnID0gY3VycmVudFByb2plY3Q/LnRlc3RDb25maWdzLmZpbmQoXHJcbiAgICAgICAgICAgICAgICBjb25maWcgPT4gY29uZmlnLmlkID09PSBzZWxlY3RlZENvbmZpZ0lkXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBpZiAoIWN1cnJlbnRDb25maWcpIHJldHVybjtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIC8vIOabtOaWsOW9k+WJjemFjee9rueahOWPguaVsFxyXG4gICAgICAgICAgICBjb25zdCB1cGRhdGVkQ29uZmlnID0ge1xyXG4gICAgICAgICAgICAgICAgLi4uY3VycmVudENvbmZpZyxcclxuICAgICAgICAgICAgICAgIHBhcmFtczoge1xyXG4gICAgICAgICAgICAgICAgICAgIC4uLmN1cnJlbnRDb25maWcucGFyYW1zLFxyXG4gICAgICAgICAgICAgICAgICAgIFtmaWVsZF06IHZhbHVlXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAvLyDmm7TmlrDpobnnm67kuK3nmoTmtYvor5XphY3nva5cclxuICAgICAgICAgICAgY29uc3QgdXBkYXRlZFByb2plY3QgPSB7XHJcbiAgICAgICAgICAgICAgICAuLi5jdXJyZW50UHJvamVjdCxcclxuICAgICAgICAgICAgICAgIHRlc3RDb25maWdzOiBjdXJyZW50UHJvamVjdC50ZXN0Q29uZmlncy5tYXAoY29uZmlnID0+IFxyXG4gICAgICAgICAgICAgICAgICAgIGNvbmZpZy5pZCA9PT0gc2VsZWN0ZWRDb25maWdJZCA/IHVwZGF0ZWRDb25maWcgOiBjb25maWdcclxuICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIC8vIOiwg+eUqGRpc3BsYXlTdG9yZeeahHVwZGF0ZVByb2plY3Tmlrnms5Xmm7TmlrDnirbmgIFcclxuICAgICAgICAgICAgdXBkYXRlUHJvamVjdCh1c2VEaXNwbGF5U3RvcmUuZ2V0U3RhdGUoKS5zZWxlY3RlZEluZGV4ZXMucHJvamVjdEluZGV4LCB1cGRhdGVkUHJvamVjdCk7XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4LTEgYmctWyMwZjE3MmFdIGZsZXggZmxleC1jb2wgcmVsYXRpdmVcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYWJzb2x1dGUgaW5zZXQtMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxJbWFnZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzcmM9e2dldEFzc2V0VXJsKGAvb2x0cy13ZWxkaW5nUG9pbnRTZXQucG5nYCl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFsdD1cIkNGUENPVU5VTlRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWxsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cIm9iamVjdC1jb250YWluXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZXM9XCIxMDB2d1wiXHJcbiAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAge2N1cnJlbnRDb25maWcucGFyYW1zLmNvbm5lY3RvckNvdW50ID4gMiAmJiAoPGRpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYWJzb2x1dGUgZmxleCBmbGV4LWNvbCBnYXAtMTAgcGwtNTYuNSBwdC00NVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicmVsYXRpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPEltYWdlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9e2dldEFzc2V0VXJsKGAvaWNvbi1jb25uZWN0b3Iuc3ZnYCl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ9XCJjb25uZWN0b3JcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9ezMwfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PXszMH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cIm9iamVjdC1jb250YWluXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cImFic29sdXRlIHRvcC0xLzIgbGVmdC0xLzIgdHJhbnNmb3JtIC10cmFuc2xhdGUteC0xLzIgLXRyYW5zbGF0ZS15LTEvMiB0ZXh0LXdoaXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y3VycmVudENvbmZpZy5wYXJhbXMuY29ubmVjdG9yQ291bnQtMn1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImFic29sdXRlIGZsZXggZmxleC1jb2wgZ2FwLTEwIHBsLTQzIHB0LTQ1XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyZWxhdGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8SW1hZ2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz17Z2V0QXNzZXRVcmwoYC9pY29uLWNvbm5lY3Rvci5zdmdgKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdD1cImNvbm5lY3RvclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD17MzB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9ezMwfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwib2JqZWN0LWNvbnRhaW5cIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwiYWJzb2x1dGUgdG9wLTEvMiBsZWZ0LTEvMiB0cmFuc2Zvcm0gLXRyYW5zbGF0ZS14LTEvMiAtdHJhbnNsYXRlLXktMS8yIHRleHQtd2hpdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtjdXJyZW50Q29uZmlnLnBhcmFtcy5jb25uZWN0b3JDb3VudC0yfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2Pil9XHJcbiAgICAgICAgICAgICAgICB7Y3VycmVudENvbmZpZy5wYXJhbXMuc3BsaWNlQ291bnQgPiAwICYmICg8ZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJhYnNvbHV0ZSBmbGV4IGZsZXgtY29sIGdhcC0xMCBwbC01NyBwdC02NVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicmVsYXRpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LTYgaC02IHJvdW5kZWQtZnVsbCBiZy1bIzEwNDg3OF1cIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwiYWJzb2x1dGUgdG9wLTEvMiBsZWZ0LTEvMiB0cmFuc2Zvcm0gLXRyYW5zbGF0ZS14LTEvMiAtdHJhbnNsYXRlLXktMS8yIHRleHQtd2hpdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtjdXJyZW50Q29uZmlnLnBhcmFtcy5zcGxpY2VDb3VudH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImFic29sdXRlIGZsZXggZmxleC1jb2wgZ2FwLTEwIHBsLTQ0IHB0LTY1XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyZWxhdGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctNiBoLTYgcm91bmRlZC1mdWxsIGJnLVsjMTA0ODc4XVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJhYnNvbHV0ZSB0b3AtMS8yIGxlZnQtMS8yIHRyYW5zZm9ybSAtdHJhbnNsYXRlLXgtMS8yIC10cmFuc2xhdGUteS0xLzIgdGV4dC13aGl0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2N1cnJlbnRDb25maWcucGFyYW1zLnNwbGljZUNvdW50fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2Pil9XHJcblxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyZWxhdGl2ZSBmbGV4IGZsZXgtY29sIGdhcC0xMCBwbC03NSBwdC0zMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWluPVwiMlwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4PVwiMjBcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRWYWx1ZT17Y3VycmVudENvbmZpZy5wYXJhbXMuY29ubmVjdG9yQ291bnR9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IGhhbmRsZVZhbHVlQ2hhbmdlKCdjb25uZWN0b3JDb3VudCcsIGUudGFyZ2V0LnZhbHVlKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uS2V5RG93bj17KGUpID0+IGUucHJldmVudERlZmF1bHQoKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInctMTYgaC04IHB4LTIgYmctWyMxMDQ4NzhdIHJvdW5kZWQgdGV4dC1jZW50ZXIgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzOnJpbmctMiBmb2N1czpyaW5nLVsjMGZmXSB0ZXh0LXdoaXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwibWwtNCB0ZXh0LWJhc2UgZm9udC1yb2JvdG8gc2VsZWN0LW5vbmUgdGV4dC1ibGFja1wiPuWFqOmDqOi/nuaOpTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJudW1iZXJcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbj1cIjBcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heD1cIjE4XCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0VmFsdWU9e2N1cnJlbnRDb25maWcucGFyYW1zLnNwbGljZUNvdW50fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiBoYW5kbGVWYWx1ZUNoYW5nZSgnc3BsaWNlQ291bnQnLCBlLnRhcmdldC52YWx1ZSl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbktleURvd249eyhlKSA9PiBlLnByZXZlbnREZWZhdWx0KCl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ3LTE2IGgtOCBweC0yIGJnLVsjMTA0ODc4XSByb3VuZGVkIHRleHQtY2VudGVyIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1czpyaW5nLTIgZm9jdXM6cmluZy1bIzBmZl0gdGV4dC13aGl0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cIm1sLTQgdGV4dC1iYXNlIGZvbnQtcm9ib3RvIHNlbGVjdC1ub25lIHRleHQtYmxhY2tcIj7mjqXlpLQ8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwibnVtYmVyXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW49XCIxXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXg9XCIxXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0VmFsdWU9e2N1cnJlbnRDb25maWcucGFyYW1zLnJlZkp1bXBlcn1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gaGFuZGxlVmFsdWVDaGFuZ2UoJ3JlZkp1bXBlcicsIGUudGFyZ2V0LnZhbHVlKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uS2V5RG93bj17KGUpID0+IGUucHJldmVudERlZmF1bHQoKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInctMTYgaC04IHB4LTIgYmctWyMxMDQ4NzhdIHJvdW5kZWQgdGV4dC1jZW50ZXIgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzOnJpbmctMiBmb2N1czpyaW5nLVsjMGZmXSB0ZXh0LXdoaXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwibWwtNCB0ZXh0LWJhc2UgZm9udC1yb2JvdG8gc2VsZWN0LW5vbmUgdGV4dC1ibGFja1wiPui3s+e6v+WPgueFpzwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICApO1xyXG5cclxuICAgIH07XHJcbiAgICAvLyDmuLLmn5PlhoXlrrlcclxuICAgIGNvbnN0IHJlbmRlckNvbnRlbnQgPSAoKSA9PiB7XHJcbiAgICAgICAgY29uc3QgeyB2aWV3IH0gPSBuYXZpZ2F0aW9uLmN1cnJlbnQ7XHJcbiAgICAgICAgXHJcbiAgICAgICAgc3dpdGNoICh2aWV3KSB7XHJcbiAgICAgICAgICAgIGNhc2UgJ21haW4nOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlbmRlck1haW5Db250ZW50KCk7XHJcbiAgICAgICAgICAgIGNhc2UgJ3NldHVwJzpcclxuICAgICAgICAgICAgICAgIHJldHVybiByZW5kZXJTZXR1cENvbnRlbnQoKTtcclxuICAgICAgICAgICAgY2FzZSAnY2ZwLWNvbnVudCc6XHJcbiAgICAgICAgICAgICAgICAgcmV0dXJuIHJlbmRlckNGUENPTlVOVENvbnRlbnQoKTtcclxuICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgIHJldHVybiByZW5kZXJNYWluQ29udGVudCgpO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgcmV0dXJuIChcclxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctZnVsbCBoLWZ1bGwgZmxleCBmbGV4LWNvbCBvdmVyZmxvdy1oaWRkZW5cIj5cclxuICAgICAgICAgICAgPFN0YXR1c0JhciAvPlxyXG4gICAgICAgICAgICB7cmVuZGVyVGl0bGVCYXIoKX1cclxuICAgICAgICAgICAge3JlbmRlckNvbnRlbnQoKX1cclxuICAgICAgICAgICAge3JlbmRlckZvb3RlcigpfVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgKTtcclxufSJdLCJuYW1lcyI6WyJSZWFjdCIsInVzZVN0YXRlIiwidXNlRWZmZWN0IiwiSW1hZ2UiLCJTdGF0dXNCYXIiLCJUaXRsZUJhciIsIlN1YlRpdGxlQmFyIiwidXNlRGlzcGxheVN0b3JlIiwidjQiLCJ1dWlkdjQiLCJNZW51TGlzdCIsImdldEFzc2V0VXJsIiwiVGVzdENvbmZpZyIsInNlbGVjdGVkQ29uZmlnSWQiLCJzZXRTZWxlY3RlZENvbmZpZ0lkIiwiZ2V0Q3VycmVudFByb2plY3QiLCJuYXZpZ2F0aW9uIiwibmF2aWdhdGVUbyIsInVwZGF0ZUN1cnJlbnRWaWV3IiwiZ29CYWNrIiwic2V0U2VsZWN0ZWRJbmRleGVzIiwidXBkYXRlUHJvamVjdCIsImFkZFByb2plY3QiLCJzZXRUb2FzdE1lc3NhZ2UiLCJjdXJyZW50UHJvamVjdCIsImdldEN1cnJlbnRUZXN0Q29uZmlnIiwiZ2V0U3RhdGUiLCJjdXJyZW50Q29uZmlnIiwiY2FibGVUeXBlIiwicGFyYW1zIiwiaXNNdWx0aU1vZGUiLCJpbmNsdWRlcyIsImNvbmZpZ0lkRnJvbVBhcmFtcyIsImN1cnJlbnQiLCJjdXJyZW50VGVzdENvbmZpZ0luZGV4Iiwic2VsZWN0ZWRJbmRleGVzIiwidGVzdENvbmZpZ0luZGV4IiwidGVzdENvbmZpZ3MiLCJpZCIsIm5hbWUiLCJ2aWV3IiwicHJldmlvdXMiLCJyZW5kZXJNYWluQ29udGVudCIsImRpdiIsImNsYXNzTmFtZSIsIm1hcCIsImNvbmZpZyIsIm9uQ2xpY2siLCJtb2R1bGVUeXBlIiwibGltaXRWYWx1ZSIsIndpcmVPcmRlciIsInJlZkp1bXBlciIsIm1vZHVsZWxhYmxlIiwic3JjIiwiYWx0IiwiZmlsbCIsInJlbmRlclNldHVwQ29udGVudCIsImZpbmQiLCJyZW5kZXJDb25maWdDb250ZW50IiwibWVudVR5cGUiLCJiYWNrVG8iLCJiYWNrVmlldyIsImNvbm5lY3RvckNvdW50Iiwic3BsaWNlQ291bnQiLCJyZW5kZXJUaXRsZUJhciIsImhhbmRsZUJhY2siLCJ0aXRsZSIsIm9uQmFjayIsInJlbmRlckZvb3RlciIsImJ1dHRvbiIsIm5ld0NvbmZpZyIsInVwZGF0ZWRQcm9qZWN0IiwicHJvamVjdEluZGV4IiwiY29uZmlnSW5kZXgiLCJmaW5kSW5kZXgiLCJyZW5kZXJDRlBDT05VTlRDb250ZW50IiwiaGFuZGxlVmFsdWVDaGFuZ2UiLCJmaWVsZCIsInZhbHVlIiwidXBkYXRlZENvbmZpZyIsInNpemVzIiwid2lkdGgiLCJoZWlnaHQiLCJzcGFuIiwiaW5wdXQiLCJ0eXBlIiwibWluIiwibWF4IiwiZGVmYXVsdFZhbHVlIiwib25DaGFuZ2UiLCJlIiwidGFyZ2V0Iiwib25LZXlEb3duIiwicHJldmVudERlZmF1bHQiLCJyZW5kZXJDb250ZW50Il0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(pages-dir-node)/./src/components/dsxpage/fluke/TestConfig.js\n"); /***/ }), /***/ "(pages-dir-node)/./src/components/dsxpage/fluke/Testing.js": /*!*************************************************!*\ !*** ./src/components/dsxpage/fluke/Testing.js ***! \*************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; eval("__webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ Testing)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"react/jsx-dev-runtime\");\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 */ \"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _components_lib_StatusBar__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/components/lib/StatusBar */ \"(pages-dir-node)/./src/components/lib/StatusBar.js\");\n/* harmony import */ var _components_lib_TitleBar__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/components/lib/TitleBar */ \"(pages-dir-node)/./src/components/lib/TitleBar.js\");\n/* harmony import */ var _store_displayStore__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/store/displayStore */ \"(pages-dir-node)/./src/store/displayStore.js\");\n/* harmony import */ var _store_deviceStore__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/store/deviceStore */ \"(pages-dir-node)/./src/store/deviceStore.js\");\n/* harmony import */ var uuid__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! uuid */ \"uuid\");\n/* harmony import */ var _utils_asset__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @/utils/asset */ \"(pages-dir-node)/./src/utils/asset.js\");\nvar __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_components_lib_StatusBar__WEBPACK_IMPORTED_MODULE_2__, _components_lib_TitleBar__WEBPACK_IMPORTED_MODULE_3__, _store_displayStore__WEBPACK_IMPORTED_MODULE_4__, _store_deviceStore__WEBPACK_IMPORTED_MODULE_5__, uuid__WEBPACK_IMPORTED_MODULE_6__, _utils_asset__WEBPACK_IMPORTED_MODULE_7__]);\n([_components_lib_StatusBar__WEBPACK_IMPORTED_MODULE_2__, _components_lib_TitleBar__WEBPACK_IMPORTED_MODULE_3__, _store_displayStore__WEBPACK_IMPORTED_MODULE_4__, _store_deviceStore__WEBPACK_IMPORTED_MODULE_5__, uuid__WEBPACK_IMPORTED_MODULE_6__, _utils_asset__WEBPACK_IMPORTED_MODULE_7__] = __webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__);\n\n\n\n\n\n\n\n\n// 计算电阻余量的函数\nfunction calculateResistanceMargin(data, limitdata, limitValue) {\n try {\n // 判断测试类型\n const isPoETest = limitValue.includes('+PoE');\n const isALLTest = limitValue.includes('+ALL');\n let minMargin = Infinity;\n // 回路电阻计算\n const loopResistanceData = data?.performance?.data?.['Loop Resistance (Ω)'];\n const loopResistanceLimit = limitdata?.['Loop Resistance (Ω)']?.['PAIRLimit (Ω)'];\n if (loopResistanceData && loopResistanceLimit) {\n const pairs = [\n 'PAIR12',\n 'PAIR36',\n 'PAIR45',\n 'PAIR78'\n ];\n for (const pair of pairs){\n const actualValues = loopResistanceData[pair];\n if (actualValues && Array.isArray(actualValues)) {\n for(let i = 0; i < actualValues.length && i < loopResistanceLimit.length; i++){\n const actualValue = actualValues[i];\n const limitVal = loopResistanceLimit[i];\n if (actualValue !== undefined && actualValue !== null && limitVal !== undefined && limitVal !== null) {\n const margin = limitVal - Math.abs(actualValue);\n minMargin = Math.min(minMargin, margin);\n }\n }\n }\n }\n }\n // 线对UBL计算(仅在+PoE或+ALL测试时)\n if (isPoETest || isALLTest) {\n const ublData = data?.performance?.data?.['UBL (Ω)'];\n const ublLimit = limitdata?.['UBL (Ω)']?.['PAIRLimit (Ω)'];\n if (ublData && ublLimit) {\n const pairs = [\n 'PAIR12',\n 'PAIR36',\n 'PAIR45',\n 'PAIR78'\n ];\n for (const pair of pairs){\n const actualValues = ublData[pair];\n if (actualValues && Array.isArray(actualValues)) {\n for(let i = 0; i < actualValues.length && i < ublLimit.length; i++){\n const actualValue = actualValues[i];\n const limitVal = ublLimit[i];\n if (actualValue !== undefined && actualValue !== null && limitVal !== undefined && limitVal !== null) {\n const margin = limitVal - Math.abs(actualValue);\n minMargin = Math.min(minMargin, margin);\n }\n }\n }\n }\n }\n }\n // P2PUBL计算(仅在+PoE或+ALL测试时)\n if (isPoETest || isALLTest) {\n const p2pUblData = data?.performance?.data?.['P2PUBL (Ω)'];\n const p2pUblLimit = limitdata?.['P2PUBL (Ω)']?.['PAIRLimit (Ω)'];\n if (p2pUblData && p2pUblLimit) {\n const pairs = [\n 'PAIR1236',\n 'PAIR1245',\n 'PAIR1278',\n 'PAIR3645',\n 'PAIR3678',\n 'PAIR4578'\n ];\n for (const pair of pairs){\n const actualValues = p2pUblData[pair];\n if (actualValues && Array.isArray(actualValues)) {\n for(let i = 0; i < actualValues.length && i < p2pUblLimit.length; i++){\n const actualValue = actualValues[i];\n const limitVal = p2pUblLimit[i];\n if (actualValue !== undefined && actualValue !== null && limitVal !== undefined && limitVal !== null) {\n const margin = limitVal - Math.abs(actualValue);\n minMargin = Math.min(minMargin, margin);\n }\n }\n }\n }\n }\n }\n return minMargin === Infinity ? 0 : minMargin;\n } catch (error) {\n console.error('Error calculating resistance margin:', error);\n return 0;\n }\n}\nfunction Testing() {\n const { view } = _store_displayStore__WEBPACK_IMPORTED_MODULE_4__[\"default\"].getState().navigation.current;\n const { navigateTo, getCurrentTestConfig, getCurrentProject, getCurrentOperator, getCurrentCableId, getCurrentCableId2, setToastMessage } = (0,_store_displayStore__WEBPACK_IMPORTED_MODULE_4__[\"default\"])();\n const currentConfig = getCurrentTestConfig();\n const { connectionStatus, setTotalToastMessage } = (0,_store_deviceStore__WEBPACK_IMPORTED_MODULE_5__[\"default\"])();\n // 铜缆测试路径和状态\n const copperMainPathKey = connectionStatus?.mainPaths ? Object.keys(connectionStatus.mainPaths)[0] : null;\n const copperRemotePathKey = connectionStatus?.remotePaths ? Object.keys(connectionStatus.remotePaths)[0] : null;\n const coppermainend = copperMainPathKey ? connectionStatus.mainPaths[copperMainPathKey]?.end : null;\n const copperremoteend = copperRemotePathKey ? connectionStatus.remotePaths[copperRemotePathKey]?.end : null;\n const copperRefStatus = _store_displayStore__WEBPACK_IMPORTED_MODULE_4__[\"default\"].getState()?.ref?.copper?.status || null;\n // CFP测试路径和状态\n const cableType = currentConfig.params.cableType;\n const isMultiMode = cableType.includes('OM');\n const cfpRefStatus = _store_displayStore__WEBPACK_IMPORTED_MODULE_4__[\"default\"].getState()?.ref?.cfp?.status || null;\n const cfpRefConnectStatus = _store_displayStore__WEBPACK_IMPORTED_MODULE_4__[\"default\"].getState()?.ref?.cfp?.connectStatus || null;\n const cfpInResult = isMultiMode ? connectionStatus?.CFPMainIn : connectionStatus?.CFPMainOut;\n const cfpOutResult = isMultiMode ? connectionStatus?.CFPMainOut : connectionStatus?.CFPMainIn;\n // 获取isMultiMode\n const wavelength1 = isMultiMode ? '850' : '1310';\n const wavelength2 = isMultiMode ? '1300' : '1550';\n // OFP测试路径和状态\n const ofpMainEnd = copperMainPathKey ? connectionStatus.mainPaths[copperMainPathKey]?.end : null;\n const ofpRefStatus = _store_displayStore__WEBPACK_IMPORTED_MODULE_4__[\"default\"].getState()?.ref?.ofp?.status || null;\n const ofpRefConnectStatus = _store_displayStore__WEBPACK_IMPORTED_MODULE_4__[\"default\"].getState()?.ref?.ofp?.connectStatus || null;\n const [tempTestResult, setTempTestResult] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);\n // 获取测试链路清洁状态\n const moduleType = currentConfig?.moduleType;\n // 检查路径中所有端口的清洁状态\n const checkPortsCleanStatus = (paths)=>{\n if (!paths || paths.length === 0) return false;\n // 检查每个端口的清洁状态\n const cleanPorts = paths.filter((portId)=>{\n const portElement = document.getElementById(portId);\n return portElement?.getAttribute('lcclean') === 'true';\n });\n // 返回已清洁的端口数量\n return cleanPorts.length;\n };\n let allPathsCleanStatus = {};\n let isAllPathsClean = 0; // 默认为0,表示全部未清洁\n // 只在模块类型为 cfp 或 ofp 时执行检测\n if (moduleType === 'cfp' || moduleType === 'ofp') {\n if (moduleType === 'cfp') {\n // CFP模块检测所有路径\n const mainInPaths = connectionStatus?.mainPaths?.['main-cfp-in']?.path || [];\n const mainOutPaths = connectionStatus?.mainPaths?.[isMultiMode ? 'main-cfp-mm-out' : 'main-cfp-sm-out']?.path || [];\n const remoteInPaths = connectionStatus?.remotePaths?.['remote-cfp-in']?.path || [];\n const remoteOutPaths = connectionStatus?.remotePaths?.[isMultiMode ? 'remote-cfp-mm-out' : 'remote-cfp-sm-out']?.path || [];\n // 获取每个路径的清洁端口数量\n const mainInClean = checkPortsCleanStatus(mainInPaths);\n const mainOutClean = checkPortsCleanStatus(mainOutPaths);\n const remoteInClean = checkPortsCleanStatus(remoteInPaths);\n const remoteOutClean = checkPortsCleanStatus(remoteOutPaths);\n // 计算总端口数和已清洁端口数\n const totalPorts = mainInPaths.length + mainOutPaths.length + remoteInPaths.length + remoteOutPaths.length;\n const cleanedPorts = mainInClean + mainOutClean + remoteInClean + remoteOutClean;\n // 设置清洁状态\n if (cleanedPorts === 0) isAllPathsClean = 0;\n else if (cleanedPorts < totalPorts) isAllPathsClean = 1;\n else if (cleanedPorts === totalPorts) isAllPathsClean = 2;\n allPathsCleanStatus = {\n mainInClean: mainInClean === mainInPaths.length,\n mainOutClean: mainOutClean === mainOutPaths.length,\n remoteInClean: remoteInClean === remoteInPaths.length,\n remoteOutClean: remoteOutClean === remoteOutPaths.length\n };\n } else {\n // OFP模块只检测主机输出端口\n const mainOutPaths = connectionStatus?.mainPaths?.[isMultiMode ? 'main-ofp-mm-out' : 'main-ofp-sm-out']?.path || [];\n const cleanedPorts = checkPortsCleanStatus(mainOutPaths);\n // 设置清洁状态\n if (cleanedPorts === 0) isAllPathsClean = 0;\n else if (cleanedPorts < mainOutPaths.length) isAllPathsClean = 1;\n else if (cleanedPorts === mainOutPaths.length) isAllPathsClean = 2;\n allPathsCleanStatus = {\n mainOutClean: cleanedPorts === mainOutPaths.length\n };\n }\n }\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)({\n \"Testing.useEffect\": ()=>{\n if (!tempTestResult) {\n const loadTestResult = {\n \"Testing.useEffect.loadTestResult\": async ()=>{\n try {\n const currentProject = getCurrentProject();\n const currentOperator = getCurrentOperator();\n // 获取当前选中的电缆ID\n const currentCableId = getCurrentCableId().name;\n // 获取当前选中的电缆ID2\n const currentCableId2 = getCurrentCableId2().name;\n const CopperWiremapStatus = connectionStatus?.CopperWiremapStatus;\n const CopperPerformanceStatus = connectionStatus?.CopperPerformanceStatus;\n const ofpResult = connectionStatus?.OFPStatus;\n const moduleType = currentConfig?.moduleType;\n const cableType = currentConfig?.params?.cableType;\n const wireOrder = currentConfig?.params?.wireOrder;\n let testResult;\n // 不同模块组装测试结果逻辑\n if (moduleType === '8000') {\n let CopperResultStatus = 'fail';\n let CopperWiremapResultStatus = 'fail';\n if (CopperWiremapStatus === 'pass') {\n if (wireOrder === 'T568B' || wireOrder === 'Ethernet Two-Pair' || wireOrder === 'M12-D Two-Pair') {\n CopperWiremapResultStatus = 'pass';\n console.log(CopperWiremapResultStatus);\n }\n } else if (CopperWiremapStatus === 'pass-2pair') {\n if (wireOrder === 'Ethernet Two-Pair' || wireOrder === 'M12-D Two-Pair') {\n CopperWiremapResultStatus = 'pass';\n } else if (wireOrder === 'T568B') {\n CopperWiremapResultStatus = 'fail';\n CopperResultStatus = 'fail';\n }\n } else if (CopperWiremapStatus === 'sopen') {\n if (wireOrder === 'T568B') {\n CopperWiremapResultStatus = 'fail';\n CopperResultStatus = 'fail';\n } else if (cableType.includes('U/UTP')) {\n CopperWiremapResultStatus = 'pass';\n } else if (cableType.includes('F/UTP')) {\n CopperWiremapResultStatus = 'fail';\n CopperResultStatus = 'fail';\n }\n }\n if (CopperWiremapResultStatus === 'pass') {\n try {\n const response = await __webpack_require__(\"(pages-dir-node)/./src/store/COPPER lazy recursive ^\\\\.\\\\/.*\\\\.json$\")(`./${CopperPerformanceStatus}.json`);\n const data = response.default;\n // 加载限制数据\n const limitValue = currentConfig?.params?.limitValue;\n try {\n // 从limitValue中提取基础名称(移除+PoE和+ALL后缀)\n const baseName = limitValue.split(' (+')[0];\n // 使用基础名称加载带有(+ALL)后缀的文件\n const limitResponse = await __webpack_require__(\"(pages-dir-node)/./src/store/COPPER lazy recursive ^\\\\.\\\\/.* \\\\(\\\\+ALL\\\\)\\\\.json$\")(`./${baseName} (+ALL).json`);\n const limitdata = limitResponse;\n // 计算所有参数的余量\n const paramTitles = [\n '插入损耗',\n '回波损耗',\n 'NEXT',\n 'PS NEXT',\n 'ACR-N',\n 'PS ACR-N',\n 'ACR-F',\n 'PS ACR-F',\n 'CDNEXT',\n 'CMRL',\n 'TCL',\n 'ELTCTL',\n '电阻'\n ];\n const dataGroupMap = {\n '插入损耗': 'Insertion Loss (dB)',\n '回波损耗': 'RL (dB)',\n 'NEXT': 'NEXT (dB)',\n 'PS NEXT': 'PS NEXT (dB)',\n 'ACR-N': 'ACR-N (dB)',\n 'PS ACR-N': 'PS ACR-N (dB)',\n 'ACR-F': 'ACR-F (dB)',\n 'PS ACR-F': 'PS ACR-F (dB)',\n 'CDNEXT': 'CDNEXT (dB)',\n 'CMRL': 'CMRL (dB)',\n 'TCL': 'TCL (dB)',\n 'ELTCTL': 'ELTCTL (dB)',\n '电阻': 'Resistance (Ω)'\n };\n let hasNegativeMargin = false;\n // 长度判断\n if (limitdata.LENGTH && data.performance.LENGTH) {\n const lengthPairs = [\n 'PAIR12',\n 'PAIR36',\n 'PAIR45',\n 'PAIR78'\n ];\n for (const pair of lengthPairs){\n if (data.performance.LENGTH[pair] > limitdata.LENGTH) {\n hasNegativeMargin = true;\n break;\n }\n }\n }\n // 电阻判断\n if (limitdata.LOOP && data.performance.OHM?.LOOP) {\n const loopPairs = [\n 'PAIR12',\n 'PAIR36',\n 'PAIR45',\n 'PAIR78'\n ];\n for (const pair of loopPairs){\n if (data.performance.OHM.LOOP[pair] > limitdata.LOOP) {\n hasNegativeMargin = true;\n console.log(\"电阻fail\");\n break;\n }\n }\n }\n // 检查是否是 +PoE 或 +ALL 测试\n const hasPoE = limitValue?.includes('+PoE');\n const hasALL = limitValue?.includes('+ALL');\n // +PoE 或 +ALL 测试的额外检查\n if ((hasPoE || hasALL) && data.performance.OHM) {\n // 线对 UBL 余量检查\n if (limitdata.PAIRUBL && data.performance.OHM.PAIRUBL) {\n const pairUblPairs = [\n 'PAIR12',\n 'PAIR36',\n 'PAIR45',\n 'PAIR78'\n ];\n for (const pair of pairUblPairs){\n if (Math.abs(data.performance.OHM.PAIRUBL[pair]) > limitdata.PAIRUBL) {\n hasNegativeMargin = true;\n console.log(\"UBL fail\");\n break;\n }\n }\n }\n // P2P UBL 余量检查\n if (limitdata.P2PUBL && data.performance.OHM.P2PUBL) {\n const p2pUblPairs = [\n 'PAIR1236',\n 'PAIR1245',\n 'PAIR1278',\n 'PAIR3645',\n 'PAIR3678',\n 'PAIR4578'\n ];\n for (const pair of p2pUblPairs){\n if (Math.abs(data.performance.OHM.P2PUBL[pair]) > limitdata.P2PUBL) {\n hasNegativeMargin = true;\n console.log(\"P2P fail\");\n break;\n }\n }\n }\n }\n for (const paramTitle of paramTitles){\n const dataGroup = dataGroupMap[paramTitle];\n // 电阻参数的特殊处理\n if (paramTitle === '电阻') {\n const resistanceMargin = calculateResistanceMargin(data, limitdata, limitValue);\n if (resistanceMargin < 0) {\n hasNegativeMargin = true;\n }\n continue;\n }\n if (!dataGroup || !data?.performance?.data?.[dataGroup] || !limitdata?.[dataGroup]) continue;\n const testData = data.performance.data[dataGroup];\n const limitValues = limitdata[dataGroup]?.['PAIRLimit (dB)'] || [];\n const pairs = [\n 'NEXT (dB)',\n 'ACR-N (dB)'\n ].includes(dataGroup) ? [\n 'PAIR1236',\n 'PAIR1245',\n 'PAIR1278',\n 'PAIR3645',\n 'PAIR3678',\n 'PAIR4578'\n ] : [\n 'ACR-F (dB)',\n 'CDNEXT (dB)'\n ].includes(dataGroup) ? [\n 'PAIR1236',\n 'PAIR1245',\n 'PAIR1278',\n 'PAIR3612',\n 'PAIR3645',\n 'PAIR3678',\n 'PAIR4512',\n 'PAIR4535',\n 'PAIR4578',\n 'PAIR7812',\n 'PAIR7936',\n 'PAIR7845'\n ] : [\n 'PAIR12',\n 'PAIR36',\n 'PAIR45',\n 'PAIR78'\n ];\n for(let index = 0; index < limitValues.length && !hasNegativeMargin; index++){\n const limitValue = limitValues[index];\n if (limitValue === undefined || limitValue === null) break;\n for (const pair of pairs){\n const actualValue = testData[pair]?.[index];\n if (actualValue !== undefined && actualValue !== null) {\n const margin = paramTitle === '插入损耗' ? Math.abs(limitValue) - Math.abs(actualValue) : Math.abs(actualValue) - limitValue;\n if (margin < 0) {\n hasNegativeMargin = true;\n break;\n }\n }\n }\n }\n }\n CopperResultStatus = hasNegativeMargin ? 'fail' : 'pass';\n } catch (error) {\n console.error('Error calculating margins:', error);\n }\n } catch (error) {\n console.error('加载测试结果失败:', error);\n }\n }\n testResult = {\n id: (0,uuid__WEBPACK_IMPORTED_MODULE_6__.v4)(),\n name: currentProject?.cableIds[0]?.name || '',\n testconfig: JSON.parse(JSON.stringify(currentConfig || {})),\n operators: currentOperator?.name || '',\n CopperWiremapStatus,\n CopperWiremapResultStatus,\n CopperPerformanceStatus,\n CopperRef: copperRefStatus,\n CopperResultStatus\n };\n } else if (moduleType === 'cfp') {\n // 极限值导入\n const limitValue = currentConfig?.params?.limitValue;\n const CFP_LIMIT = (__webpack_require__(/*! @/store/FIBER/CFP_LIMIT */ \"(pages-dir-node)/./src/store/FIBER/CFP_LIMIT.js\")[\"default\"]);\n const limitData = CFP_LIMIT[limitValue];\n if (limitData) {\n // 使用limitData中的极限值进行后续处理\n const { adapterLoss, firstLastAdapterLoss, spliceLoss, totalLoss1310nm, totalLoss1550nm, lossPerKm850nm, lossPerKm13000nm, lossPerKm1310nm, lossPerKm1550nm, maxSMLength, manMMLength } = limitData;\n }\n // 用户配置加载\n const connectorCount = currentConfig?.params?.connectorCount;\n const spliceCount = currentConfig?.params?.spliceCount;\n const refJumper = currentConfig?.params?.refJumper;\n let cfpMainInStatus = null;\n let cfpMainOutStatus = null;\n if (cfpInResult) {\n try {\n // 加载第一个波长的数据\n const wave1Data = await __webpack_require__(\"(pages-dir-node)/./src/store/FIBER lazy recursive ^\\\\.\\\\/.*\\\\/.*\\\\-dump\\\\.json$\")(`./${cfpInResult}/${wavelength1}-dump.json`);\n // 加载第二个波长的数据\n const wave2Data = await __webpack_require__(\"(pages-dir-node)/./src/store/FIBER lazy recursive ^\\\\.\\\\/.*\\\\/.*\\\\-dump\\\\.json$\")(`./${cfpInResult}/${wavelength2}-dump.json`);\n // 添加随机浮动因子(损耗上下浮动1%)\n const getDistanceRandomFactor = {\n \"Testing.useEffect.loadTestResult.getDistanceRandomFactor\": ()=>1\n }[\"Testing.useEffect.loadTestResult.getDistanceRandomFactor\"]; // 长度不浮动\n const getLossRandomFactor = {\n \"Testing.useEffect.loadTestResult.getLossRandomFactor\": ()=>1 + (Math.random() * 0.02 - 0.01)\n }[\"Testing.useEffect.loadTestResult.getLossRandomFactor\"]; // 生成0.99到1.01之间的随机数\n // 先计算两个波长的损耗值\n const wave1Loss = wave1Data.Summary.totalLoss * getLossRandomFactor();\n const wave2Loss = wave2Data.Summary.totalLoss * getLossRandomFactor();\n // 如果是参考状态,增加0.1\n const finalWave1Loss = !cfpRefStatus ? wave1Loss : wave1Loss + 0.1;\n const finalWave2Loss = !cfpRefStatus ? wave2Loss : wave2Loss + 0.1;\n cfpMainInStatus = {\n wavelength1: {\n wave: wavelength1,\n distance: (wave1Data.Summary.totalDistance * getDistanceRandomFactor()).toFixed(2),\n loss: finalWave1Loss.toFixed(2)\n },\n wavelength2: {\n wave: wavelength2,\n distance: (wave2Data.Summary.totalDistance * getDistanceRandomFactor()).toFixed(2),\n loss: finalWave2Loss.toFixed(2)\n }\n };\n } catch (error) {\n setTimeout({\n \"Testing.useEffect.loadTestResult\": ()=>{\n setTotalToastMessage(\"被测链路与参考跳纤类型不一致,请检查\");\n }\n }[\"Testing.useEffect.loadTestResult\"], 1500); // 3000 毫秒 = 3 秒\n return;\n }\n }\n if (cfpOutResult) {\n try {\n // 加载第一个波长的数据\n const wave1Data = await __webpack_require__(\"(pages-dir-node)/./src/store/FIBER lazy recursive ^\\\\.\\\\/.*\\\\/.*\\\\-dump\\\\.json$\")(`./${cfpOutResult}/${wavelength1}-dump.json`);\n // 加载第二个波长的数据\n const wave2Data = await __webpack_require__(\"(pages-dir-node)/./src/store/FIBER lazy recursive ^\\\\.\\\\/.*\\\\/.*\\\\-dump\\\\.json$\")(`./${cfpOutResult}/${wavelength2}-dump.json`);\n // 添加随机浮动因子(损耗上下浮动1%)\n const getDistanceRandomFactor = {\n \"Testing.useEffect.loadTestResult.getDistanceRandomFactor\": ()=>1\n }[\"Testing.useEffect.loadTestResult.getDistanceRandomFactor\"]; // 长度不浮动\n const getLossRandomFactor = {\n \"Testing.useEffect.loadTestResult.getLossRandomFactor\": ()=>1 + (Math.random() * 0.02 - 0.01)\n }[\"Testing.useEffect.loadTestResult.getLossRandomFactor\"]; // 生成0.99到1.01之间的随机数\n // 先计算两个波长的损耗值\n const wave1Loss = wave1Data.Summary.totalLoss * getLossRandomFactor();\n const wave2Loss = wave2Data.Summary.totalLoss * getLossRandomFactor();\n // 如果是参考状态,增加0.1\n const finalWave1Loss = !cfpRefStatus ? wave1Loss : wave1Loss + 0.1;\n const finalWave2Loss = !cfpRefStatus ? wave2Loss : wave2Loss + 0.1;\n cfpMainOutStatus = {\n wavelength1: {\n wave: wavelength1,\n distance: (wave1Data.Summary.totalDistance * getDistanceRandomFactor()).toFixed(2),\n loss: finalWave1Loss.toFixed(2)\n },\n wavelength2: {\n wave: wavelength2,\n distance: (wave2Data.Summary.totalDistance * getDistanceRandomFactor()).toFixed(2),\n loss: finalWave2Loss.toFixed(2)\n }\n };\n } catch (error) {\n setTimeout({\n \"Testing.useEffect.loadTestResult\": ()=>{\n setToastMessage(\"未检测到光纤,请检查接口\");\n }\n }[\"Testing.useEffect.loadTestResult\"], 1500); // 3000 毫秒 = 3 秒\n return;\n }\n }\n // 结果计算与判断\n // 第一根光纤\n const cfpMainIndistance = cfpMainInStatus?.wavelength1?.distance || 0;\n const cfpMainIndistance2 = cfpMainInStatus?.wavelength2?.distance || 0;\n const cfpMainInloss = cfpMainInStatus?.wavelength1?.loss || 0;\n const cfpMainInloss2 = cfpMainInStatus?.wavelength2?.loss || 0;\n // 长度判断\n const maxLength = isMultiMode ? limitData.maxMMLength : limitData.maxSMLength;\n const isLengthValidIn = cfpMainIndistance <= maxLength && cfpMainIndistance2 <= maxLength;\n // 损耗判断\n const lossPerKm = isMultiMode ? limitData.lossPerKm850nm : limitData.lossPerKm1310nm;\n const lossPerKm2 = isMultiMode ? limitData.lossPerKm1300nm : limitData.lossPerKm1550nm;\n const totalLossLimit = limitData.adapterLoss !== null ? connectorCount * limitData.adapterLoss + spliceCount * limitData.spliceLoss + cfpMainIndistance / 1000 * lossPerKm : isMultiMode ? limitData.totalLoss850nm : limitData.totalLoss1310nm;\n const totalLossLimit2 = limitData.adapterLoss !== null ? connectorCount * limitData.adapterLoss + spliceCount * limitData.spliceLoss + cfpMainIndistance2 / 1000 * lossPerKm2 : isMultiMode ? limitData.totalLoss1300nm : limitData.totalLoss1550nm;\n const isLossValidIn = cfpMainInloss <= totalLossLimit && cfpMainInloss2 <= totalLossLimit2;\n // 第二根光纤\n const cfpMainOutdistance = cfpMainOutStatus?.wavelength1?.distance || 0;\n const cfpMainOutdistance2 = cfpMainOutStatus?.wavelength2?.distance || 0;\n const cfpMainOutloss = cfpMainOutStatus?.wavelength1?.loss || 0;\n const cfpMainOutloss2 = cfpMainOutStatus?.wavelength2?.loss || 0;\n // 长度判断\n const maxLengthOut = isMultiMode ? limitData.maxMMLength : limitData.maxSMLength;\n const isLengthValidOut = cfpMainOutdistance <= maxLength && cfpMainOutdistance2 <= maxLength;\n // 损耗判断\n const lossPerKmOut = isMultiMode ? limitData.lossPerKm850nm : limitData.lossPerKm1310nm;\n const lossPerKm2Out = isMultiMode ? limitData.lossPerKm1300nm : limitData.lossPerKm1550nm;\n const totalLossLimitOut = limitData.adapterLoss !== null ? connectorCount * limitData.adapterLoss + spliceCount * limitData.spliceLoss + cfpMainIndistance / 1000 * lossPerKmOut : isMultiMode ? limitData.totalLoss850nm : limitData.totalLoss1310nm;\n const totalLossLimit2Out = limitData.adapterLoss !== null ? connectorCount * limitData.adapterLoss + spliceCount * limitData.spliceLoss + cfpMainOutdistance2 / 1000 * lossPerKm2Out : isMultiMode ? limitData.totalLoss1300nm : limitData.totalLoss1550nm;\n const isLossValidOut = cfpMainOutloss <= totalLossLimitOut && cfpMainOutloss2 <= totalLossLimit2Out;\n // 结果判断\n const CFPResultStatus = isLengthValidIn && isLossValidIn && isLengthValidOut && isLossValidOut ? 'pass' : 'fail';\n // IN端口通过失败判断(根据 isMultiMode 判断使用哪组参数)\n const InPortStatus = isMultiMode ? isLengthValidIn && isLossValidIn ? 'pass' : 'fail' : isLengthValidOut && isLossValidOut ? 'pass' : 'fail';\n // OUT端口通过失败判断\n const OutPortStatus = isMultiMode ? isLengthValidOut && isLengthValidOut ? 'pass' : 'fail' : isLengthValidIn && isLossValidIn ? 'pass' : 'fail';\n testResult = {\n id: (0,uuid__WEBPACK_IMPORTED_MODULE_6__.v4)(),\n name: currentCableId || '',\n name2: currentCableId2 || '',\n testconfig: JSON.parse(JSON.stringify(currentConfig || {})),\n operators: currentOperator?.name || '',\n CFPRef: cfpRefStatus,\n CFPRefConnect: cfpRefConnectStatus,\n CFPMainIn: cfpMainInStatus,\n isLengthValidIn,\n isLossValidIn,\n InPortStatus,\n isLengthValidOut,\n isLossValidOut,\n OutPortStatus,\n CFPMainOut: cfpMainOutStatus,\n CFPResultStatus,\n PortCleanStatus: isAllPathsClean\n };\n } else if (moduleType === 'ofp') {\n const ofpConnectionStatus = connectionStatus;\n let ofpResultStatus = 'fail';\n if (ofpResult.includes('pass')) {\n if (!ofpRefStatus) {\n if (connectionStatus.OFPoutRefStatus.includes('sm-') || connectionStatus.OFPoutRefStatus.includes('mm-')) {\n ofpResultStatus = 'fail';\n } else {\n ofpResultStatus = 'pass';\n }\n } else if (ofpRefStatus === 'start') {\n if (connectionStatus.OFPoutRefStatus.includes('smc-') || connectionStatus.OFPoutRefStatus.includes('mmc-')) {\n ofpResultStatus = 'pass';\n }\n } else if (ofpRefStatus === 'end') {\n const hasSmOrMm = connectionStatus.OFPoutRefStatus.includes('sm-') || connectionStatus.OFPoutRefStatus.includes('mm-');\n const hasSmcOrMmc = connectionStatus.OFPoutRefStatus.includes('smc-') || connectionStatus.OFPoutRefStatus.includes('mmc-');\n const hasConnectedSmOrMm = connectionStatus.OFPConnectedToRefStatus?.includes('sm-') || connectionStatus.OFPConnectedToRefStatus?.includes('mm-');\n const hasConnectedSmcOrMmc = connectionStatus.OFPConnectedToRefStatus?.includes('smc-') || connectionStatus.OFPConnectedToRefStatus?.includes('mmc-');\n // 只有前导和末尾都是补偿线时才是pass,其他情况都是fail\n if (hasSmcOrMmc && hasConnectedSmcOrMmc) {\n ofpResultStatus = 'pass';\n } else {\n ofpResultStatus = 'fail';\n }\n }\n } else if (ofpResult === 'connector-fail-end') {\n if (!ofpRefStatus) {\n if (connectionStatus.OFPoutRefStatus.includes('sm-') || connectionStatus.OFPoutRefStatus.includes('mm-')) {\n ofpResultStatus = 'fail';\n } else {\n ofpResultStatus = 'pass';\n }\n } else if (ofpRefStatus === 'start') {\n if (connectionStatus.OFPoutRefStatus.includes('smc-') || connectionStatus.OFPoutRefStatus.includes('mmc-')) {\n ofpResultStatus = 'pass';\n }\n } else if (ofpRefStatus === 'end') {\n const hasSmOrMm = connectionStatus.OFPoutRefStatus.includes('sm-') || connectionStatus.OFPoutRefStatus.includes('mm-');\n const hasSmcOrMmc = connectionStatus.OFPoutRefStatus.includes('smc-') || connectionStatus.OFPoutRefStatus.includes('mmc-');\n const hasConnectedSmOrMm = connectionStatus.OFPConnectedToRefStatus?.includes('sm-') || connectionStatus.OFPConnectedToRefStatus?.includes('mm-');\n const hasConnectedSmcOrMmc = connectionStatus.OFPConnectedToRefStatus?.includes('smc-') || connectionStatus.OFPConnectedToRefStatus?.includes('mmc-');\n // 只有前导和末尾都是补偿线时才是pass,其他情况都是fail\n if (hasSmcOrMmc && hasConnectedSmcOrMmc) {\n ofpResultStatus = 'pass';\n } else {\n ofpResultStatus = 'fail';\n }\n }\n } else if (ofpResult === 'connector-fail-start') {\n if (ofpRefStatus === 'start') {\n const hasSmOrMm = connectionStatus.OFPoutRefStatus.includes('sm-') || connectionStatus.OFPoutRefStatus.includes('mm-');\n const hasSmcOrMmc = connectionStatus.OFPoutRefStatus.includes('smc-') || connectionStatus.OFPoutRefStatus.includes('mmc-');\n if (hasSmOrMm) {\n ofpResultStatus = 'fail';\n } else if (hasSmcOrMmc) {\n ofpResultStatus = 'fail';\n }\n }\n }\n testResult = {\n id: (0,uuid__WEBPACK_IMPORTED_MODULE_6__.v4)(),\n name: currentProject?.cableIds[0]?.name || '',\n testconfig: JSON.parse(JSON.stringify(currentConfig || {})),\n operators: currentOperator?.name || '',\n ofpResult,\n ofpRefStatus,\n OFPRefConnect: ofpRefConnectStatus,\n ofpConnectionStatus,\n ofpResultStatus,\n PortCleanStatus: isAllPathsClean\n };\n }\n setTempTestResult(testResult);\n } catch (error) {\n console.error('加载测试结果失败:', error);\n }\n }\n }[\"Testing.useEffect.loadTestResult\"];\n loadTestResult();\n }\n }\n }[\"Testing.useEffect\"], [\n connectionStatus?.CopperWiremapStatus,\n connectionStatus?.CopperPerformanceStatus\n ]);\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)({\n \"Testing.useEffect\": ()=>{\n if (tempTestResult) {\n const moduleType = tempTestResult.testconfig?.moduleType;\n let delayTime = 1500; // 默认延迟1.5秒\n if (moduleType === '8000') {\n delayTime = 5000; // 8000模块延迟5秒\n } else if (moduleType === 'cfp') {\n delayTime = 1500; // cfp模块延迟1.5秒\n } else if (moduleType === 'ofp') {\n delayTime = 6000; // ofp模块延迟6秒\n }\n const timer = setTimeout({\n \"Testing.useEffect.timer\": ()=>{\n navigateTo('resultinfo', 'nosave', tempTestResult);\n }\n }[\"Testing.useEffect.timer\"], delayTime);\n return ({\n \"Testing.useEffect\": ()=>clearTimeout(timer)\n })[\"Testing.useEffect\"];\n }\n }\n }[\"Testing.useEffect\"], [\n tempTestResult\n ]);\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full h-full flex flex-col overflow-hidden\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_StatusBar__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {}, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Testing.js\",\n lineNumber: 718,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_TitleBar__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n title: \"进程\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Testing.js\",\n lineNumber: 719,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[490px] bg-[#303040] relative\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute inset-0 bg-cover bg-center bg-no-repeat\",\n style: {\n backgroundImage: `url(${(0,_utils_asset__WEBPACK_IMPORTED_MODULE_7__.getAssetUrl)('/testing.gif')})`\n }\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Testing.js\",\n lineNumber: 724,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute w-full top-8 z-10\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"flex items-center justify-center text-black text-xl font-bold\",\n children: currentConfig?.params?.limitValue || '未设置'\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Testing.js\",\n lineNumber: 731,\n columnNumber: 21\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Testing.js\",\n lineNumber: 730,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Testing.js\",\n lineNumber: 722,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[60px] bg-[#303030] flex items-center justify-center px-4\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n className: \"w-[100px] h-[40px] bg-gradient-to-b from-[#656565] to-[#313431] rounded-sm flex items-center justify-center text-white font-bold shadow-lg\",\n onClick: ()=>navigateTo('home', 'main'),\n children: \"取消\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Testing.js\",\n lineNumber: 738,\n columnNumber: 25\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Testing.js\",\n lineNumber: 737,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Testing.js\",\n lineNumber: 717,\n columnNumber: 9\n }, this);\n}\n\n__webpack_async_result__();\n} catch(e) { __webpack_async_result__(e); } });//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHBhZ2VzLWRpci1ub2RlKS8uL3NyYy9jb21wb25lbnRzL2RzeHBhZ2UvZmx1a2UvVGVzdGluZy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBbUQ7QUFDQTtBQUNGO0FBQ0U7QUFDRjtBQUNiO0FBQ1E7QUFFNUMsWUFBWTtBQUNaLFNBQVNVLDBCQUEwQkMsSUFBSSxFQUFFQyxTQUFTLEVBQUVDLFVBQVU7SUFDMUQsSUFBSTtRQUNBLFNBQVM7UUFDVCxNQUFNQyxZQUFZRCxXQUFXRSxRQUFRLENBQUM7UUFDdEMsTUFBTUMsWUFBWUgsV0FBV0UsUUFBUSxDQUFDO1FBRXRDLElBQUlFLFlBQVlDO1FBRWhCLFNBQVM7UUFDVCxNQUFNQyxxQkFBcUJSLE1BQU1TLGFBQWFULE1BQU0sQ0FBQyxzQkFBc0I7UUFDM0UsTUFBTVUsc0JBQXNCVCxXQUFXLENBQUMsc0JBQXNCLEVBQUUsQ0FBQyxnQkFBZ0I7UUFFakYsSUFBSU8sc0JBQXNCRSxxQkFBcUI7WUFDM0MsTUFBTUMsUUFBUTtnQkFBQztnQkFBVTtnQkFBVTtnQkFBVTthQUFTO1lBQ3RELEtBQUssTUFBTUMsUUFBUUQsTUFBTztnQkFDdEIsTUFBTUUsZUFBZUwsa0JBQWtCLENBQUNJLEtBQUs7Z0JBQzdDLElBQUlDLGdCQUFnQkMsTUFBTUMsT0FBTyxDQUFDRixlQUFlO29CQUM3QyxJQUFLLElBQUlHLElBQUksR0FBR0EsSUFBSUgsYUFBYUksTUFBTSxJQUFJRCxJQUFJTixvQkFBb0JPLE1BQU0sRUFBRUQsSUFBSzt3QkFDNUUsTUFBTUUsY0FBY0wsWUFBWSxDQUFDRyxFQUFFO3dCQUNuQyxNQUFNRyxXQUFXVCxtQkFBbUIsQ0FBQ00sRUFBRTt3QkFDdkMsSUFBSUUsZ0JBQWdCRSxhQUFhRixnQkFBZ0IsUUFBUUMsYUFBYUMsYUFBYUQsYUFBYSxNQUFNOzRCQUNsRyxNQUFNRSxTQUFTRixXQUFXRyxLQUFLQyxHQUFHLENBQUNMOzRCQUNuQ1osWUFBWWdCLEtBQUtFLEdBQUcsQ0FBQ2xCLFdBQVdl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Qzs7Ozs7O2tDQUlwRSw4REFBQ3dPO3dCQUFJQyxXQUFVO2tDQUNYLDRFQUFDSTs0QkFBS0osV0FBVTtzQ0FDWDVMLGVBQWVpQixRQUFRMUQsY0FBYzs7Ozs7Ozs7Ozs7Ozs7Ozs7MEJBS2xELDhEQUFDb087Z0JBQUlDLFdBQVU7MEJBQ0gsNEVBQUNLO29CQUNHTCxXQUFVO29CQUNWTSxTQUFTLElBQU16TSxXQUFXLFFBQVE7OEJBQ3JDOzs7Ozs7Ozs7Ozs7Ozs7OztBQU96QiIsInNvdXJjZXMiOlsiL29wdC9kZXYvZXN0LWRzeC9zcmMvY29tcG9uZW50cy9kc3hwYWdlL2ZsdWtlL1Rlc3RpbmcuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlLCB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCc7XHJcbmltcG9ydCBTdGF0dXNCYXIgZnJvbSAnQC9jb21wb25lbnRzL2xpYi9TdGF0dXNCYXInO1xyXG5pbXBvcnQgVGl0bGVCYXIgZnJvbSAnQC9jb21wb25lbnRzL2xpYi9UaXRsZUJhcic7XHJcbmltcG9ydCB1c2VEaXNwbGF5U3RvcmUgZnJvbSAnQC9zdG9yZS9kaXNwbGF5U3RvcmUnO1xyXG5pbXBvcnQgdXNlRGV2aWNlU3RvcmUgZnJvbSAnQC9zdG9yZS9kZXZpY2VTdG9yZSc7XHJcbmltcG9ydCB7IHY0IGFzIHV1aWR2NCB9IGZyb20gJ3V1aWQnO1xyXG5pbXBvcnQgeyBnZXRBc3NldFVybCB9IGZyb20gJ0AvdXRpbHMvYXNzZXQnO1xyXG5cclxuLy8g6K6h566X55S16Zi75L2Z6YeP55qE5Ye95pWwXHJcbmZ1bmN0aW9uIGNhbGN1bGF0ZVJlc2lzdGFuY2VNYXJnaW4oZGF0YSwgbGltaXRkYXRhLCBsaW1pdFZhbHVlKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICAgIC8vIOWIpOaWrea1i+ivleexu+Wei1xyXG4gICAgICAgIGNvbnN0IGlzUG9FVGVzdCA9IGxpbWl0VmFsdWUuaW5jbHVkZXMoJytQb0UnKTtcclxuICAgICAgICBjb25zdCBpc0FMTFRlc3QgPSBsaW1pdFZhbHVlLmluY2x1ZGVzKCcrQUxMJyk7XHJcbiAgICAgICAgXHJcbiAgICAgICAgbGV0IG1pbk1hcmdpbiA9IEluZmluaXR5O1xyXG4gICAgICAgIFxyXG4gICAgICAgIC8vIOWbnui3r+eUtemYu+iuoeeul1xyXG4gICAgICAgIGNvbnN0IGxvb3BSZXNpc3RhbmNlRGF0YSA9IGRhdGE/LnBlcmZvcm1hbmNlPy5kYXRhPy5bJ0xvb3AgUmVzaXN0YW5jZSAozqkpJ107XHJcbiAgICAgICAgY29uc3QgbG9vcFJlc2lzdGFuY2VMaW1pdCA9IGxpbWl0ZGF0YT8uWydMb29wIFJlc2lzdGFuY2UgKM6pKSddPy5bJ1BBSVJMaW1pdCAozqkpJ107XHJcbiAgICAgICAgXHJcbiAgICAgICAgaWYgKGxvb3BSZXNpc3RhbmNlRGF0YSAmJiBsb29wUmVzaXN0YW5jZUxpbWl0KSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHBhaXJzID0gWydQQUlSMTInLCAnUEFJUjM2JywgJ1BBSVI0NScsICdQQUlSNzgnXTtcclxuICAgICAgICAgICAgZm9yIChjb25zdCBwYWlyIG9mIHBhaXJzKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBhY3R1YWxWYWx1ZXMgPSBsb29wUmVzaXN0YW5jZURhdGFbcGFpcl07XHJcbiAgICAgICAgICAgICAgICBpZiAoYWN0dWFsVmFsdWVzICYmIEFycmF5LmlzQXJyYXkoYWN0dWFsVmFsdWVzKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYWN0dWFsVmFsdWVzLmxlbmd0aCAmJiBpIDwgbG9vcFJlc2lzdGFuY2VMaW1pdC5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBhY3R1YWxWYWx1ZSA9IGFjdHVhbFZhbHVlc1tpXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGltaXRWYWwgPSBsb29wUmVzaXN0YW5jZUxpbWl0W2ldO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoYWN0dWFsVmFsdWUgIT09IHVuZGVmaW5lZCAmJiBhY3R1YWxWYWx1ZSAhPT0gbnVsbCAmJiBsaW1pdFZhbCAhPT0gdW5kZWZpbmVkICYmIGxpbWl0VmFsICE9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtYXJnaW4gPSBsaW1pdFZhbCAtIE1hdGguYWJzKGFjdHVhbFZhbHVlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbk1hcmdpbiA9IE1hdGgubWluKG1pbk1hcmdpbiwgbWFyZ2luKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBcclxuICAgICAgICAvLyDnur/lr7lVQkzorqHnrpfvvIjku4XlnKgrUG9F5oiWK0FMTOa1i+ivleaXtu+8iVxyXG4gICAgICAgIGlmIChpc1BvRVRlc3QgfHwgaXNBTExUZXN0KSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHVibERhdGEgPSBkYXRhPy5wZXJmb3JtYW5jZT8uZGF0YT8uWydVQkwgKM6pKSddO1xyXG4gICAgICAgICAgICBjb25zdCB1YmxMaW1pdCA9IGxpbWl0ZGF0YT8uWydVQkwgKM6pKSddPy5bJ1BBSVJMaW1pdCAozqkpJ107XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBpZiAodWJsRGF0YSAmJiB1YmxMaW1pdCkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgcGFpcnMgPSBbJ1BBSVIxMicsICdQQUlSMzYnLCAnUEFJUjQ1JywgJ1BBSVI3OCddO1xyXG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBwYWlyIG9mIHBhaXJzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYWN0dWFsVmFsdWVzID0gdWJsRGF0YVtwYWlyXTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoYWN0dWFsVmFsdWVzICYmIEFycmF5LmlzQXJyYXkoYWN0dWFsVmFsdWVzKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFjdHVhbFZhbHVlcy5sZW5ndGggJiYgaSA8IHVibExpbWl0Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBhY3R1YWxWYWx1ZSA9IGFjdHVhbFZhbHVlc1tpXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxpbWl0VmFsID0gdWJsTGltaXRbaV07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYWN0dWFsVmFsdWUgIT09IHVuZGVmaW5lZCAmJiBhY3R1YWxWYWx1ZSAhPT0gbnVsbCAmJiBsaW1pdFZhbCAhPT0gdW5kZWZpbmVkICYmIGxpbWl0VmFsICE9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWFyZ2luID0gbGltaXRWYWwgLSBNYXRoLmFicyhhY3R1YWxWYWx1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWluTWFyZ2luID0gTWF0aC5taW4obWluTWFyZ2luLCBtYXJnaW4pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIFxyXG4gICAgICAgIC8vIFAyUFVCTOiuoeeul++8iOS7heWcqCtQb0XmiJYrQUxM5rWL6K+V5pe277yJXHJcbiAgICAgICAgaWYgKGlzUG9FVGVzdCB8fCBpc0FMTFRlc3QpIHtcclxuICAgICAgICAgICAgY29uc3QgcDJwVWJsRGF0YSA9IGRhdGE/LnBlcmZvcm1hbmNlPy5kYXRhPy5bJ1AyUFVCTCAozqkpJ107XHJcbiAgICAgICAgICAgIGNvbnN0IHAycFVibExpbWl0ID0gbGltaXRkYXRhPy5bJ1AyUFVCTCAozqkpJ10/LlsnUEFJUkxpbWl0ICjOqSknXTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIGlmIChwMnBVYmxEYXRhICYmIHAycFVibExpbWl0KSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBwYWlycyA9IFsnUEFJUjEyMzYnLCAnUEFJUjEyNDUnLCAnUEFJUjEyNzgnLCAnUEFJUjM2NDUnLCAnUEFJUjM2NzgnLCAnUEFJUjQ1NzgnXTtcclxuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgcGFpciBvZiBwYWlycykge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGFjdHVhbFZhbHVlcyA9IHAycFVibERhdGFbcGFpcl07XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGFjdHVhbFZhbHVlcyAmJiBBcnJheS5pc0FycmF5KGFjdHVhbFZhbHVlcykpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhY3R1YWxWYWx1ZXMubGVuZ3RoICYmIGkgPCBwMnBVYmxMaW1pdC5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYWN0dWFsVmFsdWUgPSBhY3R1YWxWYWx1ZXNbaV07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsaW1pdFZhbCA9IHAycFVibExpbWl0W2ldO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFjdHVhbFZhbHVlICE9PSB1bmRlZmluZWQgJiYgYWN0dWFsVmFsdWUgIT09IG51bGwgJiYgbGltaXRWYWwgIT09IHVuZGVmaW5lZCAmJiBsaW1pdFZhbCAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1hcmdpbiA9IGxpbWl0VmFsIC0gTWF0aC5hYnMoYWN0dWFsVmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbk1hcmdpbiA9IE1hdGgubWluKG1pbk1hcmdpbiwgbWFyZ2luKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBcclxuICAgICAgICByZXR1cm4gbWluTWFyZ2luID09PSBJbmZpbml0eSA/IDAgOiBtaW5NYXJnaW47XHJcbiAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGNhbGN1bGF0aW5nIHJlc2lzdGFuY2UgbWFyZ2luOicsIGVycm9yKTtcclxuICAgICAgICByZXR1cm4gMDtcclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gVGVzdGluZygpIHtcclxuICAgIGNvbnN0IHsgdmlldyB9ID0gdXNlRGlzcGxheVN0b3JlLmdldFN0YXRlKCkubmF2aWdhdGlvbi5jdXJyZW50O1xyXG4gICAgY29uc3QgeyBuYXZpZ2F0ZVRvLFxyXG4gICAgICAgICAgICBnZXRDdXJyZW50VGVzdENvbmZpZyxcclxuICAgICAgICAgICAgZ2V0Q3VycmVudFByb2plY3QsXHJcbiAgICAgICAgICAgIGdldEN1cnJlbnRPcGVyYXRvcixcclxuICAgICAgICAgICAgZ2V0Q3VycmVudENhYmxlSWQsXHJcbiAgICAgICAgICAgIGdldEN1cnJlbnRDYWJsZUlkMixcclxuICAgICAgICAgICAgc2V0VG9hc3RNZXNzYWdlLFxyXG4gICAgICAgICAgICB9ID0gdXNlRGlzcGxheVN0b3JlKCk7XHJcbiAgICBjb25zdCBjdXJyZW50Q29uZmlnID0gZ2V0Q3VycmVudFRlc3RDb25maWcoKTtcclxuICAgIGNvbnN0IHsgY29ubmVjdGlvblN0YXR1cyxzZXRUb3RhbFRvYXN0TWVzc2FnZSB9ID0gdXNlRGV2aWNlU3RvcmUoKTtcclxuICAgIFxyXG4gICAgLy8g6ZOc57yG5rWL6K+V6Lev5b6E5ZKM54q25oCBXHJcbiAgICBjb25zdCBjb3BwZXJNYWluUGF0aEtleSA9IGNvbm5lY3Rpb25TdGF0dXM/Lm1haW5QYXRocyA/IE9iamVjdC5rZXlzKGNvbm5lY3Rpb25TdGF0dXMubWFpblBhdGhzKVswXSA6IG51bGw7XHJcbiAgICBjb25zdCBjb3BwZXJSZW1vdGVQYXRoS2V5ID0gY29ubmVjdGlvblN0YXR1cz8ucmVtb3RlUGF0aHMgPyBPYmplY3Qua2V5cyhjb25uZWN0aW9uU3RhdHVzLnJlbW90ZVBhdGhzKVswXSA6IG51bGw7XHJcbiAgICBjb25zdCBjb3BwZXJtYWluZW5kID0gY29wcGVyTWFpblBhdGhLZXkgPyBjb25uZWN0aW9uU3RhdHVzLm1haW5QYXRoc1tjb3BwZXJNYWluUGF0aEtleV0/LmVuZCA6IG51bGw7XHJcbiAgICBjb25zdCBjb3BwZXJyZW1vdGVlbmQgPSBjb3BwZXJSZW1vdGVQYXRoS2V5ID8gY29ubmVjdGlvblN0YXR1cy5yZW1vdGVQYXRoc1tjb3BwZXJSZW1vdGVQYXRoS2V5XT8uZW5kIDogbnVsbDtcclxuICAgIGNvbnN0IGNvcHBlclJlZlN0YXR1cyA9IHVzZURpc3BsYXlTdG9yZS5nZXRTdGF0ZSgpPy5yZWY/LmNvcHBlcj8uc3RhdHVzIHx8IG51bGw7XHJcbiAgICBcclxuICAgIC8vIENGUOa1i+ivlei3r+W+hOWSjOeKtuaAgVxyXG4gICAgXHJcbiAgICBjb25zdCBjYWJsZVR5cGUgPSBjdXJyZW50Q29uZmlnLnBhcmFtcy5jYWJsZVR5cGU7XHJcbiAgICBjb25zdCBpc011bHRpTW9kZSA9IGNhYmxlVHlwZS5pbmNsdWRlcygnT00nKTtcclxuICAgIGNvbnN0IGNmcFJlZlN0YXR1cyA9IHVzZURpc3BsYXlTdG9yZS5nZXRTdGF0ZSgpPy5yZWY/LmNmcD8uc3RhdHVzIHx8IG51bGw7XHJcbiAgICBjb25zdCBjZnBSZWZDb25uZWN0U3RhdHVzID0gdXNlRGlzcGxheVN0b3JlLmdldFN0YXRlKCk/LnJlZj8uY2ZwPy5jb25uZWN0U3RhdHVzIHx8IG51bGw7XHJcbiAgICBcclxuICAgIGNvbnN0IGNmcEluUmVzdWx0ID0gaXNNdWx0aU1vZGUgPyBjb25uZWN0aW9uU3RhdHVzPy5DRlBNYWluSW4gOiBjb25uZWN0aW9uU3RhdHVzPy5DRlBNYWluT3V0O1xyXG4gICAgY29uc3QgY2ZwT3V0UmVzdWx0ID0gaXNNdWx0aU1vZGUgPyBjb25uZWN0aW9uU3RhdHVzPy5DRlBNYWluT3V0IDogY29ubmVjdGlvblN0YXR1cz8uQ0ZQTWFpbkluOyBcclxuXHJcblxyXG4gICAgLy8g6I635Y+WaXNNdWx0aU1vZGVcclxuICAgIGNvbnN0IHdhdmVsZW5ndGgxID0gaXNNdWx0aU1vZGUgPyAnODUwJyA6ICcxMzEwJztcclxuICAgIGNvbnN0IHdhdmVsZW5ndGgyID0gaXNNdWx0aU1vZGUgPyAnMTMwMCcgOiAnMTU1MCc7XHJcbiAgICBcclxuICAgIC8vIE9GUOa1i+ivlei3r+W+hOWSjOeKtuaAgVxyXG4gICAgY29uc3Qgb2ZwTWFpbkVuZCA9IGNvcHBlck1haW5QYXRoS2V5ID8gY29ubmVjdGlvblN0YXR1cy5tYWluUGF0aHNbY29wcGVyTWFpblBhdGhLZXldPy5lbmQgOiBudWxsO1xyXG4gICAgY29uc3Qgb2ZwUmVmU3RhdHVzID0gdXNlRGlzcGxheVN0b3JlLmdldFN0YXRlKCk/LnJlZj8ub2ZwPy5zdGF0dXMgfHwgbnVsbDtcclxuICAgIGNvbnN0IG9mcFJlZkNvbm5lY3RTdGF0dXMgPSB1c2VEaXNwbGF5U3RvcmUuZ2V0U3RhdGUoKT8ucmVmPy5vZnA/LmNvbm5lY3RTdGF0dXMgfHwgbnVsbDtcclxuICAgIGNvbnN0IFt0ZW1wVGVzdFJlc3VsdCwgc2V0VGVtcFRlc3RSZXN1bHRdID0gdXNlU3RhdGUobnVsbCk7XHJcblxyXG4gICAgLy8g6I635Y+W5rWL6K+V6ZO+6Lev5riF5rSB54q25oCBXHJcbiAgICBjb25zdCBtb2R1bGVUeXBlID0gY3VycmVudENvbmZpZz8ubW9kdWxlVHlwZTtcclxuXHJcbiAgICAvLyDmo4Dmn6Xot6/lvoTkuK3miYDmnInnq6/lj6PnmoTmuIXmtIHnirbmgIFcclxuICAgIGNvbnN0IGNoZWNrUG9ydHNDbGVhblN0YXR1cyA9IChwYXRocykgPT4ge1xyXG4gICAgICAgIGlmICghcGF0aHMgfHwgcGF0aHMubGVuZ3RoID09PSAwKSByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgXHJcbiAgICAgICAgLy8g5qOA5p+l5q+P5Liq56uv5Y+j55qE5riF5rSB54q25oCBXHJcbiAgICAgICAgY29uc3QgY2xlYW5Qb3J0cyA9IHBhdGhzLmZpbHRlcihwb3J0SWQgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBwb3J0RWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHBvcnRJZCk7XHJcbiAgICAgICAgICAgIHJldHVybiBwb3J0RWxlbWVudD8uZ2V0QXR0cmlidXRlKCdsY2NsZWFuJykgPT09ICd0cnVlJztcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgLy8g6L+U5Zue5bey5riF5rSB55qE56uv5Y+j5pWw6YePXHJcbiAgICAgICAgcmV0dXJuIGNsZWFuUG9ydHMubGVuZ3RoO1xyXG4gICAgfTtcclxuXHJcbiAgICBsZXQgYWxsUGF0aHNDbGVhblN0YXR1cyA9IHt9O1xyXG4gICAgbGV0IGlzQWxsUGF0aHNDbGVhbiA9IDA7IC8vIOm7mOiupOS4ujDvvIzooajnpLrlhajpg6jmnKrmuIXmtIFcclxuXHJcbiAgICAvLyDlj6rlnKjmqKHlnZfnsbvlnovkuLogY2ZwIOaIliBvZnAg5pe25omn6KGM5qOA5rWLXHJcbiAgICBpZiAobW9kdWxlVHlwZSA9PT0gJ2NmcCcgfHwgbW9kdWxlVHlwZSA9PT0gJ29mcCcpIHtcclxuICAgICAgICBpZiAobW9kdWxlVHlwZSA9PT0gJ2NmcCcpIHtcclxuICAgICAgICAgICAgLy8gQ0ZQ5qih5Z2X5qOA5rWL5omA5pyJ6Lev5b6EXHJcbiAgICAgICAgICAgIGNvbnN0IG1haW5JblBhdGhzID0gY29ubmVjdGlvblN0YXR1cz8ubWFpblBhdGhzPy5bJ21haW4tY2ZwLWluJ10/LnBhdGggfHwgW107XHJcbiAgICAgICAgICAgIGNvbnN0IG1haW5PdXRQYXRocyA9IGNvbm5lY3Rpb25TdGF0dXM/Lm1haW5QYXRocz8uW2lzTXVsdGlNb2RlID8gJ21haW4tY2ZwLW1tLW91dCcgOiAnbWFpbi1jZnAtc20tb3V0J10/LnBhdGggfHwgW107XHJcbiAgICAgICAgICAgIGNvbnN0IHJlbW90ZUluUGF0aHMgPSBjb25uZWN0aW9uU3RhdHVzPy5yZW1vdGVQYXRocz8uWydyZW1vdGUtY2ZwLWluJ10/LnBhdGggfHwgW107XHJcbiAgICAgICAgICAgIGNvbnN0IHJlbW90ZU91dFBhdGhzID0gY29ubmVjdGlvblN0YXR1cz8ucmVtb3RlUGF0aHM/Lltpc011bHRpTW9kZSA/ICdyZW1vdGUtY2ZwLW1tLW91dCcgOiAncmVtb3RlLWNmcC1zbS1vdXQnXT8ucGF0aCB8fCBbXTtcclxuXHJcbiAgICAgICAgICAgIC8vIOiOt+WPluavj+S4qui3r+W+hOeahOa4hea0geerr+WPo+aVsOmHj1xyXG4gICAgICAgICAgICBjb25zdCBtYWluSW5DbGVhbiA9IGNoZWNrUG9ydHNDbGVhblN0YXR1cyhtYWluSW5QYXRocyk7XHJcbiAgICAgICAgICAgIGNvbnN0IG1haW5PdXRDbGVhbiA9IGNoZWNrUG9ydHNDbGVhblN0YXR1cyhtYWluT3V0UGF0aHMpO1xyXG4gICAgICAgICAgICBjb25zdCByZW1vdGVJbkNsZWFuID0gY2hlY2tQb3J0c0NsZWFuU3RhdHVzKHJlbW90ZUluUGF0aHMpO1xyXG4gICAgICAgICAgICBjb25zdCByZW1vdGVPdXRDbGVhbiA9IGNoZWNrUG9ydHNDbGVhblN0YXR1cyhyZW1vdGVPdXRQYXRocyk7XHJcblxyXG4gICAgICAgICAgICAvLyDorqHnrpfmgLvnq6/lj6PmlbDlkozlt7LmuIXmtIHnq6/lj6PmlbBcclxuICAgICAgICAgICAgY29uc3QgdG90YWxQb3J0cyA9IG1haW5JblBhdGhzLmxlbmd0aCArIG1haW5PdXRQYXRocy5sZW5ndGggKyBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW1vdGVJblBhdGhzLmxlbmd0aCArIHJlbW90ZU91dFBhdGhzLmxlbmd0aDtcclxuICAgICAgICAgICAgY29uc3QgY2xlYW5lZFBvcnRzID0gbWFpbkluQ2xlYW4gKyBtYWluT3V0Q2xlYW4gKyBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbW90ZUluQ2xlYW4gKyByZW1vdGVPdXRDbGVhbjtcclxuXHJcbiAgICAgICAgICAgIC8vIOiuvue9rua4hea0geeKtuaAgVxyXG4gICAgICAgICAgICBpZiAoY2xlYW5lZFBvcnRzID09PSAwKSBpc0FsbFBhdGhzQ2xlYW4gPSAwO1xyXG4gICAgICAgICAgICBlbHNlIGlmIChjbGVhbmVkUG9ydHMgPCB0b3RhbFBvcnRzKSBpc0FsbFBhdGhzQ2xlYW4gPSAxO1xyXG4gICAgICAgICAgICBlbHNlIGlmIChjbGVhbmVkUG9ydHMgPT09IHRvdGFsUG9ydHMpIGlzQWxsUGF0aHNDbGVhbiA9IDI7XHJcblxyXG4gICAgICAgICAgICBhbGxQYXRoc0NsZWFuU3RhdHVzID0ge1xyXG4gICAgICAgICAgICAgICAgbWFpbkluQ2xlYW46IG1haW5JbkNsZWFuID09PSBtYWluSW5QYXRocy5sZW5ndGgsXHJcbiAgICAgICAgICAgICAgICBtYWluT3V0Q2xlYW46IG1haW5PdXRDbGVhbiA9PT0gbWFpbk91dFBhdGhzLmxlbmd0aCxcclxuICAgICAgICAgICAgICAgIHJlbW90ZUluQ2xlYW46IHJlbW90ZUluQ2xlYW4gPT09IHJlbW90ZUluUGF0aHMubGVuZ3RoLFxyXG4gICAgICAgICAgICAgICAgcmVtb3RlT3V0Q2xlYW46IHJlbW90ZU91dENsZWFuID09PSByZW1vdGVPdXRQYXRocy5sZW5ndGhcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAvLyBPRlDmqKHlnZflj6rmo4DmtYvkuLvmnLrovpPlh7rnq6/lj6NcclxuICAgICAgICAgICAgY29uc3QgbWFpbk91dFBhdGhzID0gY29ubmVjdGlvblN0YXR1cz8ubWFpblBhdGhzPy5baXNNdWx0aU1vZGUgPyAnbWFpbi1vZnAtbW0tb3V0JyA6ICdtYWluLW9mcC1zbS1vdXQnXT8ucGF0aCB8fCBbXTtcclxuICAgICAgICAgICAgY29uc3QgY2xlYW5lZFBvcnRzID0gY2hlY2tQb3J0c0NsZWFuU3RhdHVzKG1haW5PdXRQYXRocyk7XHJcblxyXG4gICAgICAgICAgICAvLyDorr7nva7muIXmtIHnirbmgIFcclxuICAgICAgICAgICAgaWYgKGNsZWFuZWRQb3J0cyA9PT0gMCkgaXNBbGxQYXRoc0NsZWFuID0gMDtcclxuICAgICAgICAgICAgZWxzZSBpZiAoY2xlYW5lZFBvcnRzIDwgbWFpbk91dFBhdGhzLmxlbmd0aCkgaXNBbGxQYXRoc0NsZWFuID0gMTtcclxuICAgICAgICAgICAgZWxzZSBpZiAoY2xlYW5lZFBvcnRzID09PSBtYWluT3V0UGF0aHMubGVuZ3RoKSBpc0FsbFBhdGhzQ2xlYW4gPSAyO1xyXG5cclxuICAgICAgICAgICAgYWxsUGF0aHNDbGVhblN0YXR1cyA9IHtcclxuICAgICAgICAgICAgICAgIG1haW5PdXRDbGVhbjogY2xlYW5lZFBvcnRzID09PSBtYWluT3V0UGF0aHMubGVuZ3RoXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuXHJcblxyXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcclxuICAgICAgICBpZiAoIXRlbXBUZXN0UmVzdWx0KSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGxvYWRUZXN0UmVzdWx0ID0gYXN5bmMgKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50UHJvamVjdCA9IGdldEN1cnJlbnRQcm9qZWN0KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY3VycmVudE9wZXJhdG9yID0gZ2V0Q3VycmVudE9wZXJhdG9yKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8g6I635Y+W5b2T5YmN6YCJ5Lit55qE55S157yGSURcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50Q2FibGVJZCA9IGdldEN1cnJlbnRDYWJsZUlkKCkubmFtZTtcclxuICAgICAgICAgICAgICAgICAgICAvLyDojrflj5blvZPliY3pgInkuK3nmoTnlLXnvIZJRDJcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50Q2FibGVJZDIgPSBnZXRDdXJyZW50Q2FibGVJZDIoKS5uYW1lO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IENvcHBlcldpcmVtYXBTdGF0dXMgPSBjb25uZWN0aW9uU3RhdHVzPy5Db3BwZXJXaXJlbWFwU3RhdHVzO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IENvcHBlclBlcmZvcm1hbmNlU3RhdHVzID0gY29ubmVjdGlvblN0YXR1cz8uQ29wcGVyUGVyZm9ybWFuY2VTdGF0dXM7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2ZwUmVzdWx0ID0gY29ubmVjdGlvblN0YXR1cz8uT0ZQU3RhdHVzO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1vZHVsZVR5cGUgPSBjdXJyZW50Q29uZmlnPy5tb2R1bGVUeXBlO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNhYmxlVHlwZSA9IGN1cnJlbnRDb25maWc/LnBhcmFtcz8uY2FibGVUeXBlO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHdpcmVPcmRlciA9IGN1cnJlbnRDb25maWc/LnBhcmFtcz8ud2lyZU9yZGVyO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBsZXQgdGVzdFJlc3VsdDtcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAvLyDkuI3lkIzmqKHlnZfnu4Too4XmtYvor5Xnu5PmnpzpgLvovpFcclxuICAgICAgICAgICAgICAgICAgICBpZiAobW9kdWxlVHlwZSA9PT0gJzgwMDAnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBDb3BwZXJSZXN1bHRTdGF0dXMgPSAnZmFpbCc7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBDb3BwZXJXaXJlbWFwUmVzdWx0U3RhdHVzID0gJ2ZhaWwnO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKENvcHBlcldpcmVtYXBTdGF0dXMgPT09ICdwYXNzJyApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh3aXJlT3JkZXIgPT09ICdUNTY4QicgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXJlT3JkZXIgPT09ICdFdGhlcm5ldCBUd28tUGFpcicgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXJlT3JkZXIgPT09ICdNMTItRCBUd28tUGFpcicpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb3BwZXJXaXJlbWFwUmVzdWx0U3RhdHVzID0gJ3Bhc3MnO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKENvcHBlcldpcmVtYXBSZXN1bHRTdGF0dXMpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKENvcHBlcldpcmVtYXBTdGF0dXMgPT09ICdwYXNzLTJwYWlyJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHdpcmVPcmRlciA9PT0gJ0V0aGVybmV0IFR3by1QYWlyJyB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpcmVPcmRlciA9PT0gJ00xMi1EIFR3by1QYWlyJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvcHBlcldpcmVtYXBSZXN1bHRTdGF0dXMgPSAncGFzcyc7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHdpcmVPcmRlciA9PT0gJ1Q1NjhCJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvcHBlcldpcmVtYXBSZXN1bHRTdGF0dXMgPSAnZmFpbCc7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29wcGVyUmVzdWx0U3RhdHVzID0gJ2ZhaWwnO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9ZWxzZSBpZiAoQ29wcGVyV2lyZW1hcFN0YXR1cyA9PT0gJ3NvcGVuJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHdpcmVPcmRlciA9PT0gJ1Q1NjhCJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvcHBlcldpcmVtYXBSZXN1bHRTdGF0dXMgPSAnZmFpbCc7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29wcGVyUmVzdWx0U3RhdHVzID0gJ2ZhaWwnO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoY2FibGVUeXBlLmluY2x1ZGVzKCdVL1VUUCcpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29wcGVyV2lyZW1hcFJlc3VsdFN0YXR1cyA9ICdwYXNzJztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChjYWJsZVR5cGUuaW5jbHVkZXMoJ0YvVVRQJykpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb3BwZXJXaXJlbWFwUmVzdWx0U3RhdHVzID0gJ2ZhaWwnO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvcHBlclJlc3VsdFN0YXR1cyA9ICdmYWlsJztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKENvcHBlcldpcmVtYXBSZXN1bHRTdGF0dXMgPT09ICdwYXNzJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGltcG9ydChgQC9zdG9yZS9DT1BQRVIvJHtDb3BwZXJQZXJmb3JtYW5jZVN0YXR1c30uanNvbmApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRhdGEgPSByZXNwb25zZS5kZWZhdWx0O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIOWKoOi9vemZkOWItuaVsOaNrlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxpbWl0VmFsdWUgPSBjdXJyZW50Q29uZmlnPy5wYXJhbXM/LmxpbWl0VmFsdWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g5LuObGltaXRWYWx1ZeS4reaPkOWPluWfuuehgOWQjeensCjnp7vpmaQrUG9F5ZKMK0FMTOWQjue8gClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYmFzZU5hbWUgPSBsaW1pdFZhbHVlLnNwbGl0KCcgKCsnKVswXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g5L2/55So5Z+656GA5ZCN56ew5Yqg6L295bim5pyJKCtBTEwp5ZCO57yA55qE5paH5Lu2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxpbWl0UmVzcG9uc2UgPSBhd2FpdCBpbXBvcnQoYEAvc3RvcmUvQ09QUEVSLyR7YmFzZU5hbWV9ICgrQUxMKS5qc29uYCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxpbWl0ZGF0YSA9IGxpbWl0UmVzcG9uc2U7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyDorqHnrpfmiYDmnInlj4LmlbDnmoTkvZnph49cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGFyYW1UaXRsZXMgPSBbJ+aPkuWFpeaNn+iAlycsICflm57ms6LmjZ/ogJcnLCAnTkVYVCcsICdQUyBORVhUJywgJ0FDUi1OJywgJ1BTIEFDUi1OJywgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0FDUi1GJywgJ1BTIEFDUi1GJywgJ0NETkVYVCcsICdDTVJMJywgJ1RDTCcsICdFTFRDVEwnLCAn55S16Zi7J107XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRhdGFHcm91cE1hcCA9IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICfmj5LlhaXmjZ/ogJcnOiAnSW5zZXJ0aW9uIExvc3MgKGRCKScsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn5Zue5rOi5o2f6ICXJzogJ1JMIChkQiknLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ05FWFQnOiAnTkVYVCAoZEIpJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdQUyBORVhUJzogJ1BTIE5FWFQgKGRCKScsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQUNSLU4nOiAnQUNSLU4gKGRCKScsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnUFMgQUNSLU4nOiAnUFMgQUNSLU4gKGRCKScsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQUNSLUYnOiAnQUNSLUYgKGRCKScsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnUFMgQUNSLUYnOiAnUFMgQUNSLUYgKGRCKScsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQ0RORVhUJzogJ0NETkVYVCAoZEIpJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdDTVJMJzogJ0NNUkwgKGRCKScsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnVENMJzogJ1RDTCAoZEIpJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdFTFRDVEwnOiAnRUxUQ1RMIChkQiknLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ+eUtemYuyc6ICdSZXNpc3RhbmNlICjOqSknXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgaGFzTmVnYXRpdmVNYXJnaW4gPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIOmVv+W6puWIpOaWrVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobGltaXRkYXRhLkxFTkdUSCAmJiBkYXRhLnBlcmZvcm1hbmNlLkxFTkdUSCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGVuZ3RoUGFpcnMgPSBbJ1BBSVIxMicsICdQQUlSMzYnLCAnUEFJUjQ1JywgJ1BBSVI3OCddO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBwYWlyIG9mIGxlbmd0aFBhaXJzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGEucGVyZm9ybWFuY2UuTEVOR1RIW3BhaXJdID4gbGltaXRkYXRhLkxFTkdUSCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXNOZWdhdGl2ZU1hcmdpbiA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g55S16Zi75Yik5patXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsaW1pdGRhdGEuTE9PUCAmJiBkYXRhLnBlcmZvcm1hbmNlLk9ITT8uTE9PUCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbG9vcFBhaXJzID0gWydQQUlSMTInLCAnUEFJUjM2JywgJ1BBSVI0NScsICdQQUlSNzgnXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgcGFpciBvZiBsb29wUGFpcnMpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YS5wZXJmb3JtYW5jZS5PSE0uTE9PUFtwYWlyXSA+IGxpbWl0ZGF0YS5MT09QKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhc05lZ2F0aXZlTWFyZ2luID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCLnlLXpmLtmYWlsXCIpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g5qOA5p+l5piv5ZCm5pivICtQb0Ug5oiWICtBTEwg5rWL6K+VXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGhhc1BvRSA9IGxpbWl0VmFsdWU/LmluY2x1ZGVzKCcrUG9FJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGhhc0FMTCA9IGxpbWl0VmFsdWU/LmluY2x1ZGVzKCcrQUxMJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICtQb0Ug5oiWICtBTEwg5rWL6K+V55qE6aKd5aSW5qOA5p+lXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoaGFzUG9FIHx8IGhhc0FMTCkgJiYgZGF0YS5wZXJmb3JtYW5jZS5PSE0pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIOe6v+WvuSBVQkwg5L2Z6YeP5qOA5p+lXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobGltaXRkYXRhLlBBSVJVQkwgJiYgZGF0YS5wZXJmb3JtYW5jZS5PSE0uUEFJUlVCTCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhaXJVYmxQYWlycyA9IFsnUEFJUjEyJywgJ1BBSVIzNicsICdQQUlSNDUnLCAnUEFJUjc4J107XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBwYWlyIG9mIHBhaXJVYmxQYWlycykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoTWF0aC5hYnMoZGF0YS5wZXJmb3JtYW5jZS5PSE0uUEFJUlVCTFtwYWlyXSkgPiBsaW1pdGRhdGEuUEFJUlVCTCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzTmVnYXRpdmVNYXJnaW4gPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJVQkwgZmFpbFwiKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUDJQIFVCTCDkvZnph4/mo4Dmn6VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsaW1pdGRhdGEuUDJQVUJMICYmIGRhdGEucGVyZm9ybWFuY2UuT0hNLlAyUFVCTCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHAycFVibFBhaXJzID0gWydQQUlSMTIzNicsICdQQUlSMTI0NScsICdQQUlSMTI3OCcsICdQQUlSMzY0NScsICdQQUlSMzY3OCcsICdQQUlSNDU3OCddO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgcGFpciBvZiBwMnBVYmxQYWlycykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoTWF0aC5hYnMoZGF0YS5wZXJmb3JtYW5jZS5PSE0uUDJQVUJMW3BhaXJdKSA+IGxpbWl0ZGF0YS5QMlBVQkwpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhc05lZ2F0aXZlTWFyZ2luID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiUDJQIGZhaWxcIilcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHBhcmFtVGl0bGUgb2YgcGFyYW1UaXRsZXMpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRhdGFHcm91cCA9IGRhdGFHcm91cE1hcFtwYXJhbVRpdGxlXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g55S16Zi75Y+C5pWw55qE54m55q6K5aSE55CGXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGFyYW1UaXRsZSA9PT0gJ+eUtemYuycpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByZXNpc3RhbmNlTWFyZ2luID0gY2FsY3VsYXRlUmVzaXN0YW5jZU1hcmdpbihkYXRhLCBsaW1pdGRhdGEsIGxpbWl0VmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXNpc3RhbmNlTWFyZ2luIDwgMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXNOZWdhdGl2ZU1hcmdpbiA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWRhdGFHcm91cCB8fCAhZGF0YT8ucGVyZm9ybWFuY2U/LmRhdGE/LltkYXRhR3JvdXBdIHx8ICFsaW1pdGRhdGE/LltkYXRhR3JvdXBdKSBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdGVzdERhdGEgPSBkYXRhLnBlcmZvcm1hbmNlLmRhdGFbZGF0YUdyb3VwXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxpbWl0VmFsdWVzID0gbGltaXRkYXRhW2RhdGFHcm91cF0/LlsnUEFJUkxpbWl0IChkQiknXSB8fCBbXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGFpcnMgPSBbJ05FWFQgKGRCKScsICdBQ1ItTiAoZEIpJ10uaW5jbHVkZXMoZGF0YUdyb3VwKSA/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWydQQUlSMTIzNicsICdQQUlSMTI0NScsICdQQUlSMTI3OCcsICdQQUlSMzY0NScsICdQQUlSMzY3OCcsICdQQUlSNDU3OCddIDpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJ0FDUi1GIChkQiknLCAnQ0RORVhUIChkQiknXS5pbmNsdWRlcyhkYXRhR3JvdXApID9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWydQQUlSMTIzNicsICdQQUlSMTI0NScsICdQQUlSMTI3OCcsICdQQUlSMzYxMicsICdQQUlSMzY0NScsICdQQUlSMzY3OCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnUEFJUjQ1MTInLCAnUEFJUjQ1MzUnLCAnUEFJUjQ1NzgnLCAnUEFJUjc4MTInLCAnUEFJUjc5MzYnLCAnUEFJUjc4NDUnXSA6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsnUEFJUjEyJywgJ1BBSVIzNicsICdQQUlSNDUnLCAnUEFJUjc4J107XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBsaW1pdFZhbHVlcy5sZW5ndGggJiYgIWhhc05lZ2F0aXZlTWFyZ2luOyBpbmRleCsrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGltaXRWYWx1ZSA9IGxpbWl0VmFsdWVzW2luZGV4XTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobGltaXRWYWx1ZSA9PT0gdW5kZWZpbmVkIHx8IGxpbWl0VmFsdWUgPT09IG51bGwpIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgcGFpciBvZiBwYWlycykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBhY3R1YWxWYWx1ZSA9IHRlc3REYXRhW3BhaXJdPy5baW5kZXhdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYWN0dWFsVmFsdWUgIT09IHVuZGVmaW5lZCAmJiBhY3R1YWxWYWx1ZSAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWFyZ2luID0gcGFyYW1UaXRsZSA9PT0gJ+aPkuWFpeaNn+iAlycgP1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hdGguYWJzKGxpbWl0VmFsdWUpIC0gTWF0aC5hYnMoYWN0dWFsVmFsdWUpIDpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXRoLmFicyhhY3R1YWxWYWx1ZSkgLSBsaW1pdFZhbHVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1hcmdpbiA8IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXNOZWdhdGl2ZU1hcmdpbiA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvcHBlclJlc3VsdFN0YXR1cyA9IGhhc05lZ2F0aXZlTWFyZ2luID8gJ2ZhaWwnIDogJ3Bhc3MnO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGNhbGN1bGF0aW5nIG1hcmdpbnM6JywgZXJyb3IpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcign5Yqg6L295rWL6K+V57uT5p6c5aSx6LSlOicsIGVycm9yKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXN0UmVzdWx0ID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHV1aWR2NCgpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogY3VycmVudFByb2plY3Q/LmNhYmxlSWRzWzBdPy5uYW1lIHx8ICcnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGNvbmZpZzogSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShjdXJyZW50Q29uZmlnIHx8IHt9KSksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRvcnM6IGN1cnJlbnRPcGVyYXRvcj8ubmFtZSB8fCAnJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvcHBlcldpcmVtYXBTdGF0dXMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb3BwZXJXaXJlbWFwUmVzdWx0U3RhdHVzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29wcGVyUGVyZm9ybWFuY2VTdGF0dXMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb3BwZXJSZWY6IGNvcHBlclJlZlN0YXR1cyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvcHBlclJlc3VsdFN0YXR1cyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG1vZHVsZVR5cGUgPT09ICdjZnAnICkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyDmnoHpmZDlgLzlr7zlhaVcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGltaXRWYWx1ZSA9IGN1cnJlbnRDb25maWc/LnBhcmFtcz8ubGltaXRWYWx1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ0ZQX0xJTUlUID0gcmVxdWlyZSgnQC9zdG9yZS9GSUJFUi9DRlBfTElNSVQnKS5kZWZhdWx0O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsaW1pdERhdGEgPSBDRlBfTElNSVRbbGltaXRWYWx1ZV07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsaW1pdERhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIOS9v+eUqGxpbWl0RGF0YeS4reeahOaegemZkOWAvOi/m+ihjOWQjue7reWkhOeQhlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkYXB0ZXJMb3NzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpcnN0TGFzdEFkYXB0ZXJMb3NzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwbGljZUxvc3MsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG90YWxMb3NzMTMxMG5tLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvdGFsTG9zczE1NTBubSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb3NzUGVyS204NTBubSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb3NzUGVyS20xMzAwMG5tLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvc3NQZXJLbTEzMTBubSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb3NzUGVyS20xNTUwbm0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4U01MZW5ndGgsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFuTU1MZW5ndGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gPSBsaW1pdERhdGE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8g55So5oi36YWN572u5Yqg6L29XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbm5lY3RvckNvdW50ID0gY3VycmVudENvbmZpZz8ucGFyYW1zPy5jb25uZWN0b3JDb3VudDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3BsaWNlQ291bnQgPSBjdXJyZW50Q29uZmlnPy5wYXJhbXM/LnNwbGljZUNvdW50O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByZWZKdW1wZXIgPSBjdXJyZW50Q29uZmlnPy5wYXJhbXM/LnJlZkp1bXBlcjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjZnBNYWluSW5TdGF0dXMgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgY2ZwTWFpbk91dFN0YXR1cyA9IG51bGw7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2ZwSW5SZXN1bHQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g5Yqg6L2956ys5LiA5Liq5rOi6ZW/55qE5pWw5o2uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgd2F2ZTFEYXRhID0gYXdhaXQgaW1wb3J0KGBAL3N0b3JlL0ZJQkVSLyR7Y2ZwSW5SZXN1bHR9LyR7d2F2ZWxlbmd0aDF9LWR1bXAuanNvbmApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIOWKoOi9veesrOS6jOS4quazoumVv+eahOaVsOaNrlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHdhdmUyRGF0YSA9IGF3YWl0IGltcG9ydChgQC9zdG9yZS9GSUJFUi8ke2NmcEluUmVzdWx0fS8ke3dhdmVsZW5ndGgyfS1kdW1wLmpzb25gKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyDmt7vliqDpmo/mnLrmta7liqjlm6DlrZDvvIjmjZ/ogJfkuIrkuIvmta7liqgxJe+8iVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdldERpc3RhbmNlUmFuZG9tRmFjdG9yID0gKCkgPT4gMTsgLy8g6ZW/5bqm5LiN5rWu5YqoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2V0TG9zc1JhbmRvbUZhY3RvciA9ICgpID0+IDEgKyAoTWF0aC5yYW5kb20oKSAqIDAuMDIgLSAwLjAxKTsgLy8g55Sf5oiQMC45OeWIsDEuMDHkuYvpl7TnmoTpmo/mnLrmlbBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyDlhYjorqHnrpfkuKTkuKrms6Lplb/nmoTmjZ/ogJflgLxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB3YXZlMUxvc3MgPSB3YXZlMURhdGEuU3VtbWFyeS50b3RhbExvc3MgKiBnZXRMb3NzUmFuZG9tRmFjdG9yKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgd2F2ZTJMb3NzID0gd2F2ZTJEYXRhLlN1bW1hcnkudG90YWxMb3NzICogZ2V0TG9zc1JhbmRvbUZhY3RvcigpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIOWmguaenOaYr+WPguiAg+eKtuaAge+8jOWinuWKoDAuMVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGZpbmFsV2F2ZTFMb3NzID0gIWNmcFJlZlN0YXR1cyA/IHdhdmUxTG9zcyA6IHdhdmUxTG9zcyArIDAuMTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBmaW5hbFdhdmUyTG9zcyA9ICFjZnBSZWZTdGF0dXMgPyB3YXZlMkxvc3MgOiB3YXZlMkxvc3MgKyAwLjE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2ZwTWFpbkluU3RhdHVzID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YXZlbGVuZ3RoMToge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2F2ZTogd2F2ZWxlbmd0aDEsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXN0YW5jZTogKHdhdmUxRGF0YS5TdW1tYXJ5LnRvdGFsRGlzdGFuY2UgKiBnZXREaXN0YW5jZVJhbmRvbUZhY3RvcigpKS50b0ZpeGVkKDIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9zczogZmluYWxXYXZlMUxvc3MudG9GaXhlZCgyKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YXZlbGVuZ3RoMjoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2F2ZTogd2F2ZWxlbmd0aDIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXN0YW5jZTogKHdhdmUyRGF0YS5TdW1tYXJ5LnRvdGFsRGlzdGFuY2UgKiBnZXREaXN0YW5jZVJhbmRvbUZhY3RvcigpKS50b0ZpeGVkKDIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9zczogZmluYWxXYXZlMkxvc3MudG9GaXhlZCgyKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUb3RhbFRvYXN0TWVzc2FnZShcIuiiq+a1i+mTvui3r+S4juWPguiAg+i3s+e6pOexu+Wei+S4jeS4gOiHtO+8jOivt+ajgOafpVwiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCAxNTAwKTsgLy8gMzAwMCDmr6vnp5IgPSAzIOenklxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2ZwT3V0UmVzdWx0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIOWKoOi9veesrOS4gOS4quazoumVv+eahOaVsOaNrlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHdhdmUxRGF0YSA9IGF3YWl0IGltcG9ydChgQC9zdG9yZS9GSUJFUi8ke2NmcE91dFJlc3VsdH0vJHt3YXZlbGVuZ3RoMX0tZHVtcC5qc29uYCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g5Yqg6L2956ys5LqM5Liq5rOi6ZW/55qE5pWw5o2uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgd2F2ZTJEYXRhID0gYXdhaXQgaW1wb3J0KGBAL3N0b3JlL0ZJQkVSLyR7Y2ZwT3V0UmVzdWx0fS8ke3dhdmVsZW5ndGgyfS1kdW1wLmpzb25gKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyDmt7vliqDpmo/mnLrmta7liqjlm6DlrZDvvIjmjZ/ogJfkuIrkuIvmta7liqgxJe+8iVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdldERpc3RhbmNlUmFuZG9tRmFjdG9yID0gKCkgPT4gMTsgLy8g6ZW/5bqm5LiN5rWu5YqoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2V0TG9zc1JhbmRvbUZhY3RvciA9ICgpID0+IDEgKyAoTWF0aC5yYW5kb20oKSAqIDAuMDIgLSAwLjAxKTsgLy8g55Sf5oiQMC45OeWIsDEuMDHkuYvpl7TnmoTpmo/mnLrmlbBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyDlhYjorqHnrpfkuKTkuKrms6Lplb/nmoTmjZ/ogJflgLxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB3YXZlMUxvc3MgPSB3YXZlMURhdGEuU3VtbWFyeS50b3RhbExvc3MgKiBnZXRMb3NzUmFuZG9tRmFjdG9yKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgd2F2ZTJMb3NzID0gd2F2ZTJEYXRhLlN1bW1hcnkudG90YWxMb3NzICogZ2V0TG9zc1JhbmRvbUZhY3RvcigpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIOWmguaenOaYr+WPguiAg+eKtuaAge+8jOWinuWKoDAuMVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGZpbmFsV2F2ZTFMb3NzID0gIWNmcFJlZlN0YXR1cyA/IHdhdmUxTG9zcyA6IHdhdmUxTG9zcyArIDAuMTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBmaW5hbFdhdmUyTG9zcyA9ICFjZnBSZWZTdGF0dXMgPyB3YXZlMkxvc3MgOiB3YXZlMkxvc3MgKyAwLjE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2ZwTWFpbk91dFN0YXR1cyA9IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2F2ZWxlbmd0aDE6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdhdmU6IHdhdmVsZW5ndGgxLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzdGFuY2U6ICh3YXZlMURhdGEuU3VtbWFyeS50b3RhbERpc3RhbmNlICogZ2V0RGlzdGFuY2VSYW5kb21GYWN0b3IoKSkudG9GaXhlZCgyKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvc3M6IGZpbmFsV2F2ZTFMb3NzLnRvRml4ZWQoMilcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2F2ZWxlbmd0aDI6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdhdmU6IHdhdmVsZW5ndGgyLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzdGFuY2U6ICh3YXZlMkRhdGEuU3VtbWFyeS50b3RhbERpc3RhbmNlICogZ2V0RGlzdGFuY2VSYW5kb21GYWN0b3IoKSkudG9GaXhlZCgyKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvc3M6IGZpbmFsV2F2ZTJMb3NzLnRvRml4ZWQoMilcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUb2FzdE1lc3NhZ2UoXCLmnKrmo4DmtYvliLDlhYnnuqTvvIzor7fmo4Dmn6XmjqXlj6NcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgMTUwMCk7IC8vIDMwMDAg5q+r56eSID0gMyDnp5JcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8g57uT5p6c6K6h566X5LiO5Yik5patXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIOesrOS4gOagueWFiee6pFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjZnBNYWluSW5kaXN0YW5jZSA9IGNmcE1haW5JblN0YXR1cz8ud2F2ZWxlbmd0aDE/LmRpc3RhbmNlIHx8IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNmcE1haW5JbmRpc3RhbmNlMiA9IGNmcE1haW5JblN0YXR1cz8ud2F2ZWxlbmd0aDI/LmRpc3RhbmNlIHx8IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNmcE1haW5Jbmxvc3MgPSBjZnBNYWluSW5TdGF0dXM/LndhdmVsZW5ndGgxPy5sb3NzIHx8IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNmcE1haW5Jbmxvc3MyID0gY2ZwTWFpbkluU3RhdHVzPy53YXZlbGVuZ3RoMj8ubG9zcyB8fCAwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyDplb/luqbliKTmlq1cclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWF4TGVuZ3RoID0gaXNNdWx0aU1vZGUgPyBsaW1pdERhdGEubWF4TU1MZW5ndGggOiBsaW1pdERhdGEubWF4U01MZW5ndGg7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGlzTGVuZ3RoVmFsaWRJbiA9IGNmcE1haW5JbmRpc3RhbmNlIDw9IG1heExlbmd0aCAmJiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZnBNYWluSW5kaXN0YW5jZTIgPD0gbWF4TGVuZ3RoIDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8g5o2f6ICX5Yik5patXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxvc3NQZXJLbSA9IGlzTXVsdGlNb2RlID8gKGxpbWl0RGF0YS5sb3NzUGVyS204NTBubSk6KGxpbWl0RGF0YS5sb3NzUGVyS20xMzEwbm0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsb3NzUGVyS20yID0gaXNNdWx0aU1vZGUgPyAobGltaXREYXRhLmxvc3NQZXJLbTEzMDBubSk6KGxpbWl0RGF0YS5sb3NzUGVyS20xNTUwbm0pO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdG90YWxMb3NzTGltaXQgPSBsaW1pdERhdGEuYWRhcHRlckxvc3MgIT09IG51bGwgP1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ubmVjdG9yQ291bnQgKiBsaW1pdERhdGEuYWRhcHRlckxvc3MgKyBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwbGljZUNvdW50ICogbGltaXREYXRhLnNwbGljZUxvc3MgKyBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjZnBNYWluSW5kaXN0YW5jZS8xMDAwKSAqIGxvc3NQZXJLbVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBpc011bHRpTW9kZSA/IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsaW1pdERhdGEudG90YWxMb3NzODUwbm0pOihsaW1pdERhdGEudG90YWxMb3NzMTMxMG5tKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHRvdGFsTG9zc0xpbWl0MiA9IGxpbWl0RGF0YS5hZGFwdGVyTG9zcyAhPT0gbnVsbCA/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25uZWN0b3JDb3VudCAqIGxpbWl0RGF0YS5hZGFwdGVyTG9zcyArXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGxpY2VDb3VudCAqIGxpbWl0RGF0YS5zcGxpY2VMb3NzICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjZnBNYWluSW5kaXN0YW5jZTIvMTAwMCkgKiBsb3NzUGVyS20yXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGlzTXVsdGlNb2RlID8gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxpbWl0RGF0YS50b3RhbExvc3MxMzAwbm0pOihsaW1pdERhdGEudG90YWxMb3NzMTU1MG5tKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGlzTG9zc1ZhbGlkSW4gPSBjZnBNYWluSW5sb3NzIDw9IHRvdGFsTG9zc0xpbWl0ICYmIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2ZwTWFpbklubG9zczIgPD0gdG90YWxMb3NzTGltaXQyIDtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIOesrOS6jOagueWFiee6pFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjZnBNYWluT3V0ZGlzdGFuY2UgPSBjZnBNYWluT3V0U3RhdHVzPy53YXZlbGVuZ3RoMT8uZGlzdGFuY2UgfHwgMDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2ZwTWFpbk91dGRpc3RhbmNlMiA9IGNmcE1haW5PdXRTdGF0dXM/LndhdmVsZW5ndGgyPy5kaXN0YW5jZSB8fCAwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjZnBNYWluT3V0bG9zcyA9IGNmcE1haW5PdXRTdGF0dXM/LndhdmVsZW5ndGgxPy5sb3NzIHx8IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNmcE1haW5PdXRsb3NzMiA9IGNmcE1haW5PdXRTdGF0dXM/LndhdmVsZW5ndGgyPy5sb3NzIHx8IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIOmVv+W6puWIpOaWrVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtYXhMZW5ndGhPdXQgPSBpc011bHRpTW9kZSA/IGxpbWl0RGF0YS5tYXhNTUxlbmd0aCA6IGxpbWl0RGF0YS5tYXhTTUxlbmd0aDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaXNMZW5ndGhWYWxpZE91dCA9IGNmcE1haW5PdXRkaXN0YW5jZSA8PSBtYXhMZW5ndGggJiYgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNmcE1haW5PdXRkaXN0YW5jZTIgPD0gbWF4TGVuZ3RoIDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8g5o2f6ICX5Yik5patXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxvc3NQZXJLbU91dCA9IGlzTXVsdGlNb2RlID8gKGxpbWl0RGF0YS5sb3NzUGVyS204NTBubSk6KGxpbWl0RGF0YS5sb3NzUGVyS20xMzEwbm0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsb3NzUGVyS20yT3V0ID0gaXNNdWx0aU1vZGUgPyAobGltaXREYXRhLmxvc3NQZXJLbTEzMDBubSk6KGxpbWl0RGF0YS5sb3NzUGVyS20xNTUwbm0pO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdG90YWxMb3NzTGltaXRPdXQgPSBsaW1pdERhdGEuYWRhcHRlckxvc3MgIT09IG51bGwgP1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ubmVjdG9yQ291bnQgKiBsaW1pdERhdGEuYWRhcHRlckxvc3MgKyBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwbGljZUNvdW50ICogbGltaXREYXRhLnNwbGljZUxvc3MgKyBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjZnBNYWluSW5kaXN0YW5jZS8xMDAwKSAqIGxvc3NQZXJLbU91dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBpc011bHRpTW9kZSA/IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsaW1pdERhdGEudG90YWxMb3NzODUwbm0pOihsaW1pdERhdGEudG90YWxMb3NzMTMxMG5tKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHRvdGFsTG9zc0xpbWl0Mk91dCA9IGxpbWl0RGF0YS5hZGFwdGVyTG9zcyAhPT0gbnVsbCA/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25uZWN0b3JDb3VudCAqIGxpbWl0RGF0YS5hZGFwdGVyTG9zcyArXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGxpY2VDb3VudCAqIGxpbWl0RGF0YS5zcGxpY2VMb3NzICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjZnBNYWluT3V0ZGlzdGFuY2UyLzEwMDApICogbG9zc1BlckttMk91dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBpc011bHRpTW9kZSA/IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsaW1pdERhdGEudG90YWxMb3NzMTMwMG5tKToobGltaXREYXRhLnRvdGFsTG9zczE1NTBubSk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpc0xvc3NWYWxpZE91dCA9IGNmcE1haW5PdXRsb3NzIDw9IHRvdGFsTG9zc0xpbWl0T3V0ICYmIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZnBNYWluT3V0bG9zczIgPD0gdG90YWxMb3NzTGltaXQyT3V0IDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyDnu5PmnpzliKTmlq1cclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ0ZQUmVzdWx0U3RhdHVzID0gaXNMZW5ndGhWYWxpZEluICYmIGlzTG9zc1ZhbGlkSW4gJiYgaXNMZW5ndGhWYWxpZE91dCAmJiBpc0xvc3NWYWxpZE91dCA/ICdwYXNzJyA6ICdmYWlsJztcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gSU7nq6/lj6PpgJrov4flpLHotKXliKTmlq3vvIjmoLnmja4gaXNNdWx0aU1vZGUg5Yik5pat5L2/55So5ZOq57uE5Y+C5pWw77yJXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEluUG9ydFN0YXR1cyA9IGlzTXVsdGlNb2RlIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAoaXNMZW5ndGhWYWxpZEluICYmIGlzTG9zc1ZhbGlkSW4gPyAncGFzcycgOiAnZmFpbCcpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IChpc0xlbmd0aFZhbGlkT3V0ICYmIGlzTG9zc1ZhbGlkT3V0ID8gJ3Bhc3MnIDogJ2ZhaWwnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gT1VU56uv5Y+j6YCa6L+H5aSx6LSl5Yik5patXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IE91dFBvcnRTdGF0dXMgPSBpc011bHRpTW9kZSBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gKGlzTGVuZ3RoVmFsaWRPdXQgJiYgaXNMZW5ndGhWYWxpZE91dCA/ICdwYXNzJyA6ICdmYWlsJylcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogKGlzTGVuZ3RoVmFsaWRJbiAmJiBpc0xvc3NWYWxpZEluID8gJ3Bhc3MnIDogJ2ZhaWwnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXN0UmVzdWx0ID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHV1aWR2NCgpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogY3VycmVudENhYmxlSWQgfHwgJycsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lMjogY3VycmVudENhYmxlSWQyIHx8ICcnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGNvbmZpZzogSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShjdXJyZW50Q29uZmlnIHx8IHt9KSksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRvcnM6IGN1cnJlbnRPcGVyYXRvcj8ubmFtZSB8fCAnJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIENGUFJlZjpjZnBSZWZTdGF0dXMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDRlBSZWZDb25uZWN0OmNmcFJlZkNvbm5lY3RTdGF0dXMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDRlBNYWluSW46Y2ZwTWFpbkluU3RhdHVzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNMZW5ndGhWYWxpZEluLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNMb3NzVmFsaWRJbixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluUG9ydFN0YXR1cywgICAgICAvLyDmt7vliqBJTuerr+WPo+eKtuaAgVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNMZW5ndGhWYWxpZE91dCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzTG9zc1ZhbGlkT3V0LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0UG9ydFN0YXR1cywgICAgIC8vIOa3u+WKoE9VVOerr+WPo+eKtuaAgVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0ZQTWFpbk91dDpjZnBNYWluT3V0U3RhdHVzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0ZQUmVzdWx0U3RhdHVzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgUG9ydENsZWFuU3RhdHVzOmlzQWxsUGF0aHNDbGVhbixcclxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG1vZHVsZVR5cGUgPT09ICdvZnAnKSB7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCAgb2ZwQ29ubmVjdGlvblN0YXR1cyA9IGNvbm5lY3Rpb25TdGF0dXM7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgb2ZwUmVzdWx0U3RhdHVzID0gJ2ZhaWwnO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9mcFJlc3VsdC5pbmNsdWRlcygncGFzcycpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW9mcFJlZlN0YXR1cykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb25uZWN0aW9uU3RhdHVzLk9GUG91dFJlZlN0YXR1cy5pbmNsdWRlcygnc20tJykgfHwgY29ubmVjdGlvblN0YXR1cy5PRlBvdXRSZWZTdGF0dXMuaW5jbHVkZXMoJ21tLScpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mcFJlc3VsdFN0YXR1cyA9ICdmYWlsJztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZnBSZXN1bHRTdGF0dXMgPSAncGFzcyc7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAob2ZwUmVmU3RhdHVzID09PSAnc3RhcnQnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbm5lY3Rpb25TdGF0dXMuT0ZQb3V0UmVmU3RhdHVzLmluY2x1ZGVzKCdzbWMtJykgfHwgY29ubmVjdGlvblN0YXR1cy5PRlBvdXRSZWZTdGF0dXMuaW5jbHVkZXMoJ21tYy0nKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZnBSZXN1bHRTdGF0dXMgPSAncGFzcyc7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChvZnBSZWZTdGF0dXMgPT09ICdlbmQnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaGFzU21Pck1tID0gY29ubmVjdGlvblN0YXR1cy5PRlBvdXRSZWZTdGF0dXMuaW5jbHVkZXMoJ3NtLScpIHx8IGNvbm5lY3Rpb25TdGF0dXMuT0ZQb3V0UmVmU3RhdHVzLmluY2x1ZGVzKCdtbS0nKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBoYXNTbWNPck1tYyA9IGNvbm5lY3Rpb25TdGF0dXMuT0ZQb3V0UmVmU3RhdHVzLmluY2x1ZGVzKCdzbWMtJykgfHwgY29ubmVjdGlvblN0YXR1cy5PRlBvdXRSZWZTdGF0dXMuaW5jbHVkZXMoJ21tYy0nKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBoYXNDb25uZWN0ZWRTbU9yTW0gPSBjb25uZWN0aW9uU3RhdHVzLk9GUENvbm5lY3RlZFRvUmVmU3RhdHVzPy5pbmNsdWRlcygnc20tJykgfHwgY29ubmVjdGlvblN0YXR1cy5PRlBDb25uZWN0ZWRUb1JlZlN0YXR1cz8uaW5jbHVkZXMoJ21tLScpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGhhc0Nvbm5lY3RlZFNtY09yTW1jID0gY29ubmVjdGlvblN0YXR1cy5PRlBDb25uZWN0ZWRUb1JlZlN0YXR1cz8uaW5jbHVkZXMoJ3NtYy0nKSB8fCBjb25uZWN0aW9uU3RhdHVzLk9GUENvbm5lY3RlZFRvUmVmU3RhdHVzPy5pbmNsdWRlcygnbW1jLScpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIOWPquacieWJjeWvvOWSjOacq+WwvumDveaYr+ihpeWBv+e6v+aXtuaJjeaYr3Bhc3PvvIzlhbbku5bmg4XlhrXpg73mmK9mYWlsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGhhc1NtY09yTW1jICYmIGhhc0Nvbm5lY3RlZFNtY09yTW1jKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mcFJlc3VsdFN0YXR1cyA9ICdwYXNzJztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZnBSZXN1bHRTdGF0dXMgPSAnZmFpbCc7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG9mcFJlc3VsdCA9PT0gJ2Nvbm5lY3Rvci1mYWlsLWVuZCcpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghb2ZwUmVmU3RhdHVzKSB7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb25uZWN0aW9uU3RhdHVzLk9GUG91dFJlZlN0YXR1cy5pbmNsdWRlcygnc20tJykgfHwgY29ubmVjdGlvblN0YXR1cy5PRlBvdXRSZWZTdGF0dXMuaW5jbHVkZXMoJ21tLScpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mcFJlc3VsdFN0YXR1cyA9ICdmYWlsJztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZnBSZXN1bHRTdGF0dXMgPSAncGFzcyc7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAob2ZwUmVmU3RhdHVzID09PSAnc3RhcnQnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbm5lY3Rpb25TdGF0dXMuT0ZQb3V0UmVmU3RhdHVzLmluY2x1ZGVzKCdzbWMtJykgfHwgY29ubmVjdGlvblN0YXR1cy5PRlBvdXRSZWZTdGF0dXMuaW5jbHVkZXMoJ21tYy0nKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZnBSZXN1bHRTdGF0dXMgPSAncGFzcyc7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChvZnBSZWZTdGF0dXMgPT09ICdlbmQnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaGFzU21Pck1tID0gY29ubmVjdGlvblN0YXR1cy5PRlBvdXRSZWZTdGF0dXMuaW5jbHVkZXMoJ3NtLScpIHx8IGNvbm5lY3Rpb25TdGF0dXMuT0ZQb3V0UmVmU3RhdHVzLmluY2x1ZGVzKCdtbS0nKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBoYXNTbWNPck1tYyA9IGNvbm5lY3Rpb25TdGF0dXMuT0ZQb3V0UmVmU3RhdHVzLmluY2x1ZGVzKCdzbWMtJykgfHwgY29ubmVjdGlvblN0YXR1cy5PRlBvdXRSZWZTdGF0dXMuaW5jbHVkZXMoJ21tYy0nKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBoYXNDb25uZWN0ZWRTbU9yTW0gPSBjb25uZWN0aW9uU3RhdHVzLk9GUENvbm5lY3RlZFRvUmVmU3RhdHVzPy5pbmNsdWRlcygnc20tJykgfHwgY29ubmVjdGlvblN0YXR1cy5PRlBDb25uZWN0ZWRUb1JlZlN0YXR1cz8uaW5jbHVkZXMoJ21tLScpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGhhc0Nvbm5lY3RlZFNtY09yTW1jID0gY29ubmVjdGlvblN0YXR1cy5PRlBDb25uZWN0ZWRUb1JlZlN0YXR1cz8uaW5jbHVkZXMoJ3NtYy0nKSB8fCBjb25uZWN0aW9uU3RhdHVzLk9GUENvbm5lY3RlZFRvUmVmU3RhdHVzPy5pbmNsdWRlcygnbW1jLScpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g5Y+q5pyJ5YmN5a+85ZKM5pyr5bC+6YO95piv6KGl5YG/57q/5pe25omN5pivcGFzc++8jOWFtuS7luaDheWGtemDveaYr2ZhaWxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaGFzU21jT3JNbWMgJiYgaGFzQ29ubmVjdGVkU21jT3JNbWMpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2ZwUmVzdWx0U3RhdHVzID0gJ3Bhc3MnO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mcFJlc3VsdFN0YXR1cyA9ICdmYWlsJztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1lbHNlIGlmIChvZnBSZXN1bHQgPT09ICdjb25uZWN0b3ItZmFpbC1zdGFydCcpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvZnBSZWZTdGF0dXMgPT09ICdzdGFydCcpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaGFzU21Pck1tID0gY29ubmVjdGlvblN0YXR1cy5PRlBvdXRSZWZTdGF0dXMuaW5jbHVkZXMoJ3NtLScpIHx8IGNvbm5lY3Rpb25TdGF0dXMuT0ZQb3V0UmVmU3RhdHVzLmluY2x1ZGVzKCdtbS0nKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaGFzU21jT3JNbWMgPSBjb25uZWN0aW9uU3RhdHVzLk9GUG91dFJlZlN0YXR1cy5pbmNsdWRlcygnc21jLScpIHx8IGNvbm5lY3Rpb25TdGF0dXMuT0ZQb3V0UmVmU3RhdHVzLmluY2x1ZGVzKCdtbWMtJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGhhc1NtT3JNbSl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZnBSZXN1bHRTdGF0dXMgPSAnZmFpbCc7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1lbHNlIGlmKGhhc1NtY09yTW1jKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mcFJlc3VsdFN0YXR1cyA9ICdmYWlsJztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RSZXN1bHQgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogdXVpZHY0KCksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBjdXJyZW50UHJvamVjdD8uY2FibGVJZHNbMF0/Lm5hbWUgfHwgJycsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0Y29uZmlnOiBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGN1cnJlbnRDb25maWcgfHwge30pKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdG9yczogY3VycmVudE9wZXJhdG9yPy5uYW1lIHx8ICcnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb2ZwUmVzdWx0LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb2ZwUmVmU3RhdHVzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgT0ZQUmVmQ29ubmVjdDpvZnBSZWZDb25uZWN0U3RhdHVzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb2ZwQ29ubmVjdGlvblN0YXR1cyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mcFJlc3VsdFN0YXR1cyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBvcnRDbGVhblN0YXR1czppc0FsbFBhdGhzQ2xlYW4sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIHNldFRlbXBUZXN0UmVzdWx0KHRlc3RSZXN1bHQpO1xyXG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCfliqDovb3mtYvor5Xnu5PmnpzlpLHotKU6JywgZXJyb3IpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBsb2FkVGVzdFJlc3VsdCgpO1xyXG4gICAgICAgIH1cclxuICAgIH0sIFtjb25uZWN0aW9uU3RhdHVzPy5Db3BwZXJXaXJlbWFwU3RhdHVzLCBjb25uZWN0aW9uU3RhdHVzPy5Db3BwZXJQZXJmb3JtYW5jZVN0YXR1c10pO1xyXG4gICAgXHJcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xyXG4gICAgICAgIGlmICh0ZW1wVGVzdFJlc3VsdCkge1xyXG4gICAgICAgICAgICBjb25zdCBtb2R1bGVUeXBlID0gdGVtcFRlc3RSZXN1bHQudGVzdGNvbmZpZz8ubW9kdWxlVHlwZTtcclxuICAgICAgICAgICAgbGV0IGRlbGF5VGltZSA9IDE1MDA7IC8vIOm7mOiupOW7tui/nzEuNeenklxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgaWYgKG1vZHVsZVR5cGUgPT09ICc4MDAwJykge1xyXG4gICAgICAgICAgICAgICAgZGVsYXlUaW1lID0gNTAwMDsgLy8gODAwMOaooeWdl+W7tui/nzXnp5JcclxuICAgICAgICAgICAgfSBlbHNlIGlmIChtb2R1bGVUeXBlID09PSAnY2ZwJykge1xyXG4gICAgICAgICAgICAgICAgZGVsYXlUaW1lID0gMTUwMDsgLy8gY2Zw5qih5Z2X5bu26L+fMS4156eSXHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobW9kdWxlVHlwZSA9PT0gJ29mcCcpIHtcclxuICAgICAgICAgICAgICAgIGRlbGF5VGltZSA9IDYwMDA7IC8vIG9mcOaooeWdl+W7tui/nzbnp5JcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgY29uc3QgdGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgIG5hdmlnYXRlVG8oJ3Jlc3VsdGluZm8nLCAnbm9zYXZlJywgdGVtcFRlc3RSZXN1bHQpO1xyXG4gICAgICAgICAgICB9LCBkZWxheVRpbWUpO1xyXG4gICAgICAgICAgICByZXR1cm4gKCkgPT4gY2xlYXJUaW1lb3V0KHRpbWVyKTtcclxuICAgICAgICB9XHJcbiAgICB9LCBbdGVtcFRlc3RSZXN1bHRdKTtcclxuXHJcbiAgICByZXR1cm4gKFxyXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy1mdWxsIGgtZnVsbCBmbGV4IGZsZXgtY29sIG92ZXJmbG93LWhpZGRlblwiPlxyXG4gICAgICAgICAgICA8U3RhdHVzQmFyIC8+XHJcbiAgICAgICAgICAgIDxUaXRsZUJhciBcclxuICAgICAgICAgICAgICAgIHRpdGxlPVwi6L+b56iLXCIgXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaC1bNDkwcHhdIGJnLVsjMzAzMDQwXSByZWxhdGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgey8qIOiDjOaZr+WbvueJhyAqL31cclxuICAgICAgICAgICAgICAgIDxkaXYgXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiYWJzb2x1dGUgaW5zZXQtMCBiZy1jb3ZlciBiZy1jZW50ZXIgYmctbm8tcmVwZWF0XCJcclxuICAgICAgICAgICAgICAgICAgICBzdHlsZT17eyBiYWNrZ3JvdW5kSW1hZ2U6IGB1cmwoJHtnZXRBc3NldFVybCgnL3Rlc3RpbmcuZ2lmJyl9KWAgfX1cclxuICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIHsvKiDmtYvor5XphY3nva5saW1pdOWAvCAqL31cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYWJzb2x1dGUgIHctZnVsbCB0b3AtOCAgei0xMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHRleHQtYmxhY2sgdGV4dC14bCBmb250LWJvbGRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge2N1cnJlbnRDb25maWc/LnBhcmFtcz8ubGltaXRWYWx1ZSB8fCAn5pyq6K6+572uJ31cclxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImgtWzYwcHhdIGJnLVsjMzAzMDMwXSBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBweC00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInctWzEwMHB4XSBoLVs0MHB4XSBiZy1ncmFkaWVudC10by1iIGZyb20tWyM2NTY1NjVdIHRvLVsjMzEzNDMxXSByb3VuZGVkLXNtIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHRleHQtd2hpdGUgZm9udC1ib2xkIHNoYWRvdy1sZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBuYXZpZ2F0ZVRvKCdob21lJywgJ21haW4nKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAg5Y+W5raIXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICApO1xyXG59Il0sIm5hbWVzIjpbIlJlYWN0IiwidXNlU3RhdGUiLCJ1c2VFZmZlY3QiLCJTdGF0dXNCYXIiLCJUaXRsZUJhciIsInVzZURpc3BsYXlTdG9yZSIsInVzZURldmljZVN0b3JlIiwidjQiLCJ1dWlkdjQiLCJnZXRBc3NldFVybCIsImNhbGN1bGF0ZVJlc2lzdGFuY2VNYXJnaW4iLCJkYXRhIiwibGltaXRkYXRhIiwibGltaXRWYWx1ZSIsImlzUG9FVGVzdCIsImluY2x1ZGVzIiwiaXNBTExUZXN0IiwibWluTWFyZ2luIiwiSW5maW5pdHkiLCJsb29wUmVzaXN0YW5jZURhdGEiLCJwZXJmb3JtYW5jZSIsImxvb3BSZXNpc3RhbmNlTGltaXQiLCJwYWlycyIsInBhaXIiLCJhY3R1YWxWYWx1ZXMiLCJBcnJheSIsImlzQXJyYXkiLCJpIiwibGVuZ3RoIiwiYWN0dWFsVmFsdWUiLCJsaW1pdFZhbCIsInVuZGVmaW5lZCIsIm1hcmdpbiIsIk1hdGgiLCJhYnMiLCJtaW4iLCJ1YmxEYXRhIiwidWJsTGltaXQiLCJwMnBVYmxEYXRhIiwicDJwVWJsTGltaXQiLCJlcnJvciIsImNvbnNvbGUiLCJUZXN0aW5nIiwidmlldyIsImdldFN0YXRlIiwibmF2aWdhdGlvbiIsImN1cnJlbnQiLCJuYXZpZ2F0ZVRvIiwiZ2V0Q3VycmVudFRlc3RDb25maWciLCJnZXRDdXJyZW50UHJvamVjdCIsImdldEN1cnJlbnRPcGVyYXRvciIsImdldEN1cnJlbnRDYWJsZUlkIiwiZ2V0Q3VycmVudENhYmxlSWQyIiwic2V0VG9hc3RNZXNzYWdlIiwiY3VycmVudENvbmZpZyIsImNvbm5lY3Rpb25TdGF0dXMiLCJzZXRUb3RhbFRvYXN0TWVzc2FnZSIsImNvcHBlck1haW5QYXRoS2V5IiwibWFpblBhdGhzIiwiT2JqZWN0Iiwia2V5cyIsImNvcHBlclJlbW90ZVBhdGhLZXkiLCJyZW1vdGVQYXRocyIsImNvcHBlcm1haW5lbmQiLCJlbmQiLCJjb3BwZXJyZW1vdGVlbmQiLCJjb3BwZXJSZWZTdGF0dXMiLCJyZWYiLCJjb3BwZXIiLCJzdGF0dXMiLCJjYWJsZVR5cGUiLCJwYXJhbXMiLCJpc011bHRpTW9kZSIsImNmcFJlZlN0YXR1cyIsImNmcCIsImNmcFJlZkNvbm5lY3RTdGF0dXMiLCJjb25uZWN0U3RhdHVzIiwiY2ZwSW5SZXN1bHQiLCJDRlBNYWluSW4iLCJDRlBNYWluT3V0IiwiY2ZwT3V0UmVzdWx0Iiwid2F2ZWxlbmd0aDEiLCJ3YXZlbGVuZ3RoMiIsIm9mcE1haW5FbmQiLCJvZnBSZWZTdGF0dXMiLCJvZnAiLCJvZnBSZWZDb25uZWN0U3RhdHVzIiwidGVtcFRlc3RSZXN1bHQiLCJzZXRUZW1wVGVzdFJlc3VsdCIsIm1vZHVsZVR5cGUiLCJjaGVja1BvcnRzQ2xlYW5TdGF0dXMiLCJwYXRocyIsImNsZWFuUG9ydHMiLCJmaWx0ZXIiLCJwb3J0SWQiLCJwb3J0RWxlbWVudCIsImRvY3VtZW50IiwiZ2V0RWxlbWVudEJ5SWQiLCJnZXRBdHRyaWJ1dGUiLCJhbGxQYXRoc0NsZWFuU3RhdHVzIiwiaXNBbGxQYXRoc0NsZWFuIiwibWFpbkluUGF0aHMiLCJwYXRoIiwibWFpbk91dFBhdGhzIiwicmVtb3RlSW5QYXRocyIsInJlbW90ZU91dFBhdGhzIiwibWFpbkluQ2xlYW4iLCJtYWluT3V0Q2xlYW4iLCJyZW1vdGVJbkNsZWFuIiwicmVtb3RlT3V0Q2xlYW4iLCJ0b3RhbFBvcnRzIiwiY2xlYW5lZFBvcnRzIiwibG9hZFRlc3RSZXN1bHQiLCJjdXJyZW50UHJvamVjdCIsImN1cnJlbnRPcGVyYXRvciIsImN1cnJlbnRDYWJsZUlkIiwibmFtZSIsImN1cnJlbnRDYWJsZUlkMiIsIkNvcHBlcldpcmVtYXBTdGF0dXMiLCJDb3BwZXJQZXJmb3JtYW5jZVN0YXR1cyIsIm9mcFJlc3VsdCIsIk9GUFN0YXR1cyIsIndpcmVPcmRlciIsInRlc3RSZXN1bHQiLCJDb3BwZXJSZXN1bHRTdGF0dXMiLCJDb3BwZXJXaXJlbWFwUmVzdWx0U3RhdHVzIiwibG9nIiwicmVzcG9uc2UiLCJkZWZhdWx0IiwiYmFzZU5hbWUiLCJzcGxpdCIsImxpbWl0UmVzcG9uc2UiLCJwYXJhbVRpdGxlcyIsImRhdGFHcm91cE1hcCIsImhhc05lZ2F0aXZlTWFyZ2luIiwiTEVOR1RIIiwibGVuZ3RoUGFpcnMiLCJMT09QIiwiT0hNIiwibG9vcFBhaXJzIiwiaGFzUG9FIiwiaGFzQUxMIiwiUEFJUlVCTCIsInBhaXJVYmxQYWlycyIsIlAyUFVCTCIsInAycFVibFBhaXJzIiwicGFyYW1UaXRsZSIsImRhdGFHcm91cCIsInJlc2lzdGFuY2VNYXJnaW4iLCJ0ZXN0RGF0YSIsImxpbWl0VmFsdWVzIiwiaW5kZXgiLCJpZCIsImNhYmxlSWRzIiwidGVzdGNvbmZpZyIsIkpTT04iLCJwYXJzZSIsInN0cmluZ2lmeSIsIm9wZXJhdG9ycyIsIkNvcHBlclJlZiIsIkNGUF9MSU1JVCIsInJlcXVpcmUiLCJsaW1pdERhdGEiLCJhZGFwdGVyTG9zcyIsImZpcnN0TGFzdEFkYXB0ZXJMb3NzIiwic3BsaWNlTG9zcyIsInRvdGFsTG9zczEzMTBubSIsInRvdGFsTG9zczE1NTBubSIsImxvc3NQZXJLbTg1MG5tIiwibG9zc1BlckttMTMwMDBubSIsImxvc3NQZXJLbTEzMTBubSIsImxvc3NQZXJLbTE1NTBubSIsIm1heFNNTGVuZ3RoIiwibWFuTU1MZW5ndGgiLCJjb25uZWN0b3JDb3VudCIsInNwbGljZUNvdW50IiwicmVmSnVtcGVyIiwiY2ZwTWFpbkluU3RhdHVzIiwiY2ZwTWFpbk91dFN0YXR1cyIsIndhdmUxRGF0YSIsIndhdmUyRGF0YSIsImdldERpc3RhbmNlUmFuZG9tRmFjdG9yIiwiZ2V0TG9zc1JhbmRvbUZhY3RvciIsInJhbmRvbSIsIndhdmUxTG9zcyIsIlN1bW1hcnkiLCJ0b3RhbExvc3MiLCJ3YXZlMkxvc3MiLCJmaW5hbFdhdmUxTG9zcyIsImZpbmFsV2F2ZTJMb3NzIiwid2F2ZSIsImRpc3RhbmNlIiwidG90YWxEaXN0YW5jZSIsInRvRml4ZWQiLCJsb3NzIiwic2V0VGltZW91dCIsImNmcE1haW5JbmRpc3RhbmNlIiwiY2ZwTWFpbkluZGlzdGFuY2UyIiwiY2ZwTWFpbklubG9zcyIsImNmcE1haW5Jbmxvc3MyIiwibWF4TGVuZ3RoIiwibWF4TU1MZW5ndGgiLCJpc0xlbmd0aFZhbGlkSW4iLCJsb3NzUGVyS20iLCJsb3NzUGVyS20yIiwibG9zc1BlckttMTMwMG5tIiwidG90YWxMb3NzTGltaXQiLCJ0b3RhbExvc3M4NTBubSIsInRvdGFsTG9zc0xpbWl0MiIsInRvdGFsTG9zczEzMDBubSIsImlzTG9zc1ZhbGlkSW4iLCJjZnBNYWluT3V0ZGlzdGFuY2UiLCJjZnBNYWluT3V0ZGlzdGFuY2UyIiwiY2ZwTWFpbk91dGxvc3MiLCJjZnBNYWluT3V0bG9zczIiLCJtYXhMZW5ndGhPdXQiLCJpc0xlbmd0aFZhbGlkT3V0IiwibG9zc1BlckttT3V0IiwibG9zc1BlckttMk91dCIsInRvdGFsTG9zc0xpbWl0T3V0IiwidG90YWxMb3NzTGltaXQyT3V0IiwiaXNMb3NzVmFsaWRPdXQiLCJDRlBSZXN1bHRTdGF0dXMiLCJJblBvcnRTdGF0dXMiLCJPdXRQb3J0U3RhdHVzIiwibmFtZTIiLCJDRlBSZWYiLCJDRlBSZWZDb25uZWN0IiwiUG9ydENsZWFuU3RhdHVzIiwib2ZwQ29ubmVjdGlvblN0YXR1cyIsIm9mcFJlc3VsdFN0YXR1cyIsIk9GUG91dFJlZlN0YXR1cyIsImhhc1NtT3JNbSIsImhhc1NtY09yTW1jIiwiaGFzQ29ubmVjdGVkU21Pck1tIiwiT0ZQQ29ubmVjdGVkVG9SZWZTdGF0dXMiLCJoYXNDb25uZWN0ZWRTbWNPck1tYyIsIk9GUFJlZkNvbm5lY3QiLCJkZWxheVRpbWUiLCJ0aW1lciIsImNsZWFyVGltZW91dCIsImRpdiIsImNsYXNzTmFtZSIsInRpdGxlIiwic3R5bGUiLCJiYWNrZ3JvdW5kSW1hZ2UiLCJzcGFuIiwiYnV0dG9uIiwib25DbGljayJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(pages-dir-node)/./src/components/dsxpage/fluke/Testing.js\n"); /***/ }), /***/ "(pages-dir-node)/./src/components/dsxpage/fluke/Tools.js": /*!***********************************************!*\ !*** ./src/components/dsxpage/fluke/Tools.js ***! \***********************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; eval("__webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ Tools)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"react/jsx-dev-runtime\");\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 */ \"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var next_image__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! next/image */ \"(pages-dir-node)/./node_modules/next/image.js\");\n/* harmony import */ var next_image__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(next_image__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _components_lib_StatusBar__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/components/lib/StatusBar */ \"(pages-dir-node)/./src/components/lib/StatusBar.js\");\n/* harmony import */ var _components_lib_TitleBar__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/components/lib/TitleBar */ \"(pages-dir-node)/./src/components/lib/TitleBar.js\");\n/* harmony import */ var _components_lib_SubTitleBar__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/components/lib/SubTitleBar */ \"(pages-dir-node)/./src/components/lib/SubTitleBar.js\");\n/* harmony import */ var _store_displayStore__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @/store/displayStore */ \"(pages-dir-node)/./src/store/displayStore.js\");\n/* harmony import */ var _store_deviceStore__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @/store/deviceStore */ \"(pages-dir-node)/./src/store/deviceStore.js\");\n/* harmony import */ var _config_api__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @/config/api */ \"(pages-dir-node)/./src/config/api.js\");\n/* harmony import */ var _utils_asset__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @/utils/asset */ \"(pages-dir-node)/./src/utils/asset.js\");\n/* harmony import */ var _components_AudioProvider__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @/components/AudioProvider */ \"(pages-dir-node)/./src/components/AudioProvider.js\");\nvar __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_components_lib_StatusBar__WEBPACK_IMPORTED_MODULE_3__, _components_lib_TitleBar__WEBPACK_IMPORTED_MODULE_4__, _components_lib_SubTitleBar__WEBPACK_IMPORTED_MODULE_5__, _store_displayStore__WEBPACK_IMPORTED_MODULE_6__, _store_deviceStore__WEBPACK_IMPORTED_MODULE_7__, _utils_asset__WEBPACK_IMPORTED_MODULE_9__, _components_AudioProvider__WEBPACK_IMPORTED_MODULE_10__]);\n([_components_lib_StatusBar__WEBPACK_IMPORTED_MODULE_3__, _components_lib_TitleBar__WEBPACK_IMPORTED_MODULE_4__, _components_lib_SubTitleBar__WEBPACK_IMPORTED_MODULE_5__, _store_displayStore__WEBPACK_IMPORTED_MODULE_6__, _store_deviceStore__WEBPACK_IMPORTED_MODULE_7__, _utils_asset__WEBPACK_IMPORTED_MODULE_9__, _components_AudioProvider__WEBPACK_IMPORTED_MODULE_10__] = __webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__);\n\n\n\n\n\n\n\n\n\n\n\nfunction Tools() {\n const { view } = _store_displayStore__WEBPACK_IMPORTED_MODULE_6__[\"default\"].getState().navigation.current;\n const { navigateTo, updateCurrentView, getCurrentProject, updataRef, setToastMessage } = (0,_store_displayStore__WEBPACK_IMPORTED_MODULE_6__[\"default\"])();\n const currentProject = getCurrentProject();\n const currentConfig = currentProject?.testConfigs[_store_displayStore__WEBPACK_IMPORTED_MODULE_6__[\"default\"].getState().selectedIndexes.testConfigIndex];\n const faultScenario = _store_deviceStore__WEBPACK_IMPORTED_MODULE_7__[\"default\"].getState().faultScenarios;\n // 获取连接状态\n const { connectionStatus, setTotalToastMessage } = (0,_store_deviceStore__WEBPACK_IMPORTED_MODULE_7__[\"default\"])();\n const mainPortStart = connectionStatus?.mainPaths?.[Object.keys(connectionStatus.mainPaths)[0]]?.start;\n const mainPortEnd = connectionStatus?.mainPaths?.[Object.keys(connectionStatus.mainPaths)[0]]?.end;\n const mainpath = connectionStatus?.mainPaths?.[Object.keys(connectionStatus.mainPaths)[0]]?.path;\n const mainVFLEnd = connectionStatus?.mainPaths?.['main-vfl']?.end || null;\n const [connectionMap, setConnectionMap] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)({});\n const connectionMapRef = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)(null); // 添加ref用于缓存connectionMap\n const cableType = currentConfig.params.cableType;\n const isMultiMode = cableType.includes('OM');\n const { play } = (0,_components_AudioProvider__WEBPACK_IMPORTED_MODULE_10__.useAudio)();\n // VFL状态\n const [vflStatus, setVflStatus] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n // 获取连接配置\n const fetchConnectionMap = async ()=>{\n try {\n // 如果已经有缓存的connectionMap,直接返回\n if (connectionMapRef.current) {\n setConnectionMap(connectionMapRef.current);\n return;\n }\n const apiUrl = _config_api__WEBPACK_IMPORTED_MODULE_8__.API_URLS.CONNECTION.MAP_WITH_SCENE(faultScenario);\n const response = await fetch(apiUrl);\n if (!response.ok) {\n throw new Error('获取连接配置失败');\n }\n const data = await response.json();\n connectionMapRef.current = data || {}; // 缓存connectionMap\n setConnectionMap(data || {});\n } catch (error) {\n console.error('获取连接配置错误:', error);\n setConnectionMap({});\n }\n };\n // --------------------------------------VFL--------------------------------------\n // VFL功能函数\n const handleVfl = ()=>{\n fetchConnectionMap();\n if (!mainVFLEnd) return;\n console.log(connectionStatus?.mainPaths?.['main-vfl']);\n // 在connectionMap中查找与mainVFLEnd匹配的连接\n let connectedPort = null;\n let targetPortId = null;\n // 首先检查mainVFLEnd是否作为key存在\n if (connectionMap[mainVFLEnd]) {\n connectedPort = mainVFLEnd;\n targetPortId = connectionMap[mainVFLEnd].connectedTo;\n } else {\n // 如果不是key,则查找哪个key的connectedTo等于mainVFLEnd\n const foundKey = Object.keys(connectionMap).find((key)=>{\n return connectionMap[key].connectedTo === mainVFLEnd;\n });\n if (foundKey) {\n connectedPort = mainVFLEnd;\n targetPortId = foundKey;\n }\n }\n if (connectedPort && targetPortId) {\n // 如果targetPortId包含-portx(x为数字),则移除这部分\n if (targetPortId && /-port\\d+$/.test(targetPortId)) {\n targetPortId = targetPortId.replace(/-port\\d+$/, '');\n }\n const targetElement = document.getElementById(targetPortId);\n if (targetElement) {\n // 检查目标元素是否已连接\n if (targetElement.classList.contains('jtk-connected')) {\n return;\n }\n // 获取目标元素的位置信息\n const rect = targetElement.getBoundingClientRect();\n // 创建闪烁的红点\n const redDot = document.createElement('div');\n redDot.style.cssText = `\n position: absolute;\n width: 20px;\n height: 20px;\n background-color: red;\n border-radius: 50%;\n top: ${rect.top + rect.height / 2}px;\n left: ${rect.left + rect.width / 2}px;\n transform: translate(-50%, -50%);\n animation: blink 1s infinite;\n z-index: 9999;\n `;\n // 添加闪烁动画样式\n const style = document.createElement('style');\n style.textContent = `\n @keyframes blink {\n 0% { opacity: 1; }\n 50% { opacity: 0; }\n 100% { opacity: 1; }\n }\n `;\n document.head.appendChild(style);\n document.body.appendChild(redDot);\n // 在VFL状态关闭时移除红点\n return ()=>{\n document.body.removeChild(redDot);\n document.head.removeChild(style);\n };\n }\n }\n };\n // VFL状态切换函数\n const SetvflStatus = ()=>{\n setVflStatus(!vflStatus);\n };\n // 使用useRef来存储当前的connectedPort\n const currentConnectedPortRef = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)(null);\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)({\n \"Tools.useEffect\": ()=>{\n let cleanup;\n if (vflStatus) {\n // 获取当前的connectedPort,使用双向查找逻辑\n let connectedPort = null;\n if (connectionMap[mainVFLEnd]) {\n connectedPort = mainVFLEnd;\n } else {\n connectedPort = Object.keys(connectionMap).find({\n \"Tools.useEffect\": (key)=>{\n return connectionMap[key].connectedTo === mainVFLEnd;\n }\n }[\"Tools.useEffect\"]);\n }\n // 如果connectedPort发生变化,重新执行handleVfl\n if (connectedPort !== currentConnectedPortRef.current) {\n if (cleanup) {\n cleanup();\n }\n currentConnectedPortRef.current = connectedPort;\n cleanup = handleVfl();\n } else if (!cleanup) {\n // 如果没有cleanup,说明还没有执行过handleVfl\n cleanup = handleVfl();\n }\n }\n return ({\n \"Tools.useEffect\": ()=>{\n if (cleanup) {\n cleanup();\n }\n }\n })[\"Tools.useEffect\"];\n }\n }[\"Tools.useEffect\"], [\n vflStatus,\n mainVFLEnd,\n connectionMap\n ]);\n // 监听视图变化,当离开vfl视图时重置vflStatus\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)({\n \"Tools.useEffect\": ()=>{\n if (view !== 'vfl' && vflStatus) {\n setVflStatus(false);\n }\n }\n }[\"Tools.useEffect\"], [\n view\n ]);\n //---------------------------------------------------------------------------------\n // 铜缆基准判断函数 对应ref-copper页脚按钮\n const RefCopperButtonClick = ()=>{\n if (mainPortStart === 'main-permanent') {\n if (mainPortEnd === 'remote-channel') {\n updateCurrentView('ref-copper-setting');\n } else {\n setToastMessage('基准设置错误,请检查连接状态'); // 可以用自定义的提示方式替代alert\n }\n } else {\n setToastMessage('适配器不兼容,导致基准设置失败'); // 同样,可以用自定义的提示方式替代alert\n }\n };\n //铜缆基准设置状态更新函数\n const ReFCopperUpdata = ()=>{\n updataRef('copper', {\n status: true\n });\n };\n // cfp基准判断函数 对应cfp页脚按钮\n const RefCfpButtonClick = ()=>{\n const mainPaths = connectionStatus.mainPaths || {};\n const remotePaths = connectionStatus.remotePaths || {};\n // 检查端口是否存在\n const mainOutExists = isMultiMode ? mainPaths['main-cfp-mm-out'] || mainPaths['main-cfp-sm-out'] : mainPaths['main-cfp-sm-out'];\n const mainInExists = mainPaths['main-cfp-in'];\n const remoteOutExists = isMultiMode ? remotePaths['remote-cfp-mm-out'] || remotePaths['remote-cfp-sm-out'] : remotePaths['remote-cfp-sm-out'];\n const remoteInExists = remotePaths['remote-cfp-in'];\n // 获取端点连接\n const mainOutEnd = isMultiMode ? mainPaths['main-cfp-mm-out']?.end || mainPaths['main-cfp-sm-out']?.end : mainPaths['main-cfp-sm-out']?.end;\n const mainInEnd = mainPaths['main-cfp-in']?.end;\n const remoteOutEnd = isMultiMode ? remotePaths['remote-cfp-mm-out']?.end || remotePaths['remote-cfp-sm-out']?.end : remotePaths['remote-cfp-sm-out']?.end;\n const remoteInEnd = remotePaths['remote-cfp-in']?.end;\n // 检查所有端口是否存在\n if (!mainOutExists || !mainInExists || !remoteOutExists || !remoteInExists) {\n setToastMessage('请检查端口连接');\n return;\n }\n // 检查是否有未连接的端口\n if (!mainOutEnd || !mainInEnd || !remoteOutEnd || !remoteInEnd) {\n setToastMessage('请检查端口连接');\n return;\n }\n // 验证端口连接是否正确\n const isConnectionCorrect = mainOutEnd === 'remote-cfp-in' && mainInEnd === (isMultiMode ? 'remote-cfp-mm-out' : 'remote-cfp-sm-out') && remoteOutEnd === 'main-cfp-in' && remoteInEnd === (isMultiMode ? 'main-cfp-mm-out' : 'main-cfp-sm-out');\n if (isConnectionCorrect) {\n updateCurrentView('ref-cfp-setting');\n } else {\n setTotalToastMessage('请使用跳线设置基准');\n }\n };\n const [showRetryButtons, setShowRetryButtons] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n const RefCfpRefButtonClick = ()=>{\n const mainPaths = connectionStatus.mainPaths || {};\n const remotePaths = connectionStatus.remotePaths || {};\n // 检查端口是否存在\n const mainOutExists = isMultiMode ? mainPaths['main-cfp-mm-out'] || mainPaths['main-cfp-sm-out'] : mainPaths['main-cfp-sm-out'];\n const mainInExists = mainPaths['main-cfp-in'];\n const remoteOutExists = isMultiMode ? remotePaths['remote-cfp-mm-out'] || remotePaths['remote-cfp-sm-out'] : remotePaths['remote-cfp-sm-out'];\n const remoteInExists = remotePaths['remote-cfp-in'];\n // 获取端点连接\n const mainOutEnd = isMultiMode ? mainPaths['main-cfp-mm-out']?.end || mainPaths['main-cfp-sm-out']?.end : mainPaths['main-cfp-sm-out']?.end;\n const mainInEnd = mainPaths['main-cfp-in']?.end;\n const remoteOutEnd = isMultiMode ? remotePaths['remote-cfp-mm-out']?.end || remotePaths['remote-cfp-sm-out']?.end : remotePaths['remote-cfp-sm-out']?.end;\n const remoteInEnd = remotePaths['remote-cfp-in']?.end;\n // 检查所有端口是否存在\n if (!mainOutExists || !mainInExists || !remoteOutExists || !remoteInExists) {\n setToastMessage('请检查端口连接');\n return;\n }\n // 检查是否有未连接的端口\n if (!mainOutEnd || !mainInEnd || !remoteOutEnd || !remoteInEnd) {\n setToastMessage('请检查端口连接');\n return;\n }\n // 检查端口连接是否正确\n const isConnectionCorrect = mainOutEnd === 'remote-cfp-in' && mainInEnd === (isMultiMode ? 'remote-cfp-mm-out' : 'remote-cfp-sm-out') && remoteOutEnd === 'main-cfp-in' && remoteInEnd === (isMultiMode ? 'main-cfp-mm-out' : 'main-cfp-sm-out');\n if (!isConnectionCorrect) {\n setToastMessage('请检查端口连接');\n return;\n }\n // 检查TRC长度\n const mainTrcCount = mainPaths['main-cfp-in']?.path?.filter((p)=>isMultiMode ? p.includes('mm-lc-lc') : p.includes('sm-lc-lc'))?.length || 0;\n const remoteTrcCount = remotePaths['remote-cfp-in']?.path?.filter((p)=>isMultiMode ? p.includes('mm-lc-lc') : p.includes('sm-lc-lc'))?.length || 0;\n if (mainTrcCount < 4 || remoteTrcCount < 4) {\n updateCurrentView('ref-cfp-settrc-no50');\n setShowRetryButtons(true);\n return;\n }\n if (isConnectionCorrect) {\n updateCurrentView('ref-cfp-settrc');\n } else {\n setToastMessage('请检查端口连接');\n }\n };\n //CFP基准设置状态更新函数\n const ReFCFPUpdata = ()=>{\n updataRef('cfp', {\n status: true\n });\n updataRef('cfp', {\n connectStatus: true\n });\n };\n //OFP基准设置状态更新函数\n const ReFOFPUpdata = ()=>{\n const statusValue = ofpBackground === 'ref-ofp.png' ? 'start' : 'end';\n updataRef('ofp', {\n status: statusValue\n });\n updataRef('ofp', {\n connectStatus: true\n });\n };\n // OFP补偿检测函数\n const handleRefOFPTest = ()=>{\n // 获取当前选择的光纤类型\n const cableType = currentConfig?.params?.cableType;\n // 获取当前选择的补偿方式(仅前导 or 前导+末尾)\n const isLeadOnly = ofpBackground === 'ref-ofp.png';\n // 判断是否为多模光纤\n const isMultiMode = cableType.includes('OM');\n // 检查mainpath的第一个接口是否匹配当前光纤类型\n const firstPort = mainpath?.[0];\n if (!firstPort || isMultiMode && !firstPort.includes('mm-out') || !isMultiMode && !firstPort.includes('sm-out')) {\n setToastMessage('未检测到前导光纤');\n return;\n }\n // 检查补偿光纤类型是否匹配\n const hasInvalidFiber = mainpath?.some((path)=>{\n if (path.includes('mmc-') || path.includes('smc-')) {\n return isMultiMode && path.includes('smc-') || !isMultiMode && path.includes('mmc-');\n }\n return false;\n });\n if (hasInvalidFiber) {\n setTotalToastMessage(isMultiMode ? '请使用多模补偿光纤' : '请使用单模补偿光纤');\n return;\n }\n // 检查路径长度和组成\n if (isLeadOnly) {\n // 仅前导模式:应该只有主机out端口和一个补偿光纤\n if (mainpath?.length !== 2 || !mainpath[1].includes(isMultiMode ? 'mmc-' : 'smc-')) {\n setTotalToastMessage('请确保正确连接前导光纤');\n return;\n }\n } else {\n // 前导+末尾模式:应该有主机out端口、两个补偿光纤和一个连接器\n if (mainpath?.length !== 6 || !mainpath[1].includes(isMultiMode ? 'mmc-' : 'smc-') || !mainpath[5].includes(isMultiMode ? 'mmc-' : 'smc-')) {\n setTotalToastMessage('请确保正确连接前导光纤');\n return;\n }\n }\n // 所有检查通过,更新视图\n updateCurrentView('ref-ofp-setting');\n };\n // 处理定时器效果\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)({\n \"Tools.useEffect\": ()=>{\n if (view === 'ref-copper-setting') {\n const timer = setTimeout({\n \"Tools.useEffect.timer\": ()=>{\n play('pass');\n updateCurrentView('ref-copper-ok');\n ReFCopperUpdata(); //更新状态\n }\n }[\"Tools.useEffect.timer\"], 3000);\n return ({\n \"Tools.useEffect\": ()=>clearTimeout(timer)\n })[\"Tools.useEffect\"];\n }\n if (view === 'ref-cfp-setting') {\n const timer = setTimeout({\n \"Tools.useEffect.timer\": ()=>{\n updateCurrentView('ref-cfp4');\n }\n }[\"Tools.useEffect.timer\"], 3000);\n return ({\n \"Tools.useEffect\": ()=>clearTimeout(timer)\n })[\"Tools.useEffect\"];\n }\n if (view === 'ref-cfp-settrc') {\n const timer = setTimeout({\n \"Tools.useEffect.timer\": ()=>{\n updateCurrentView('ref-cfp-trc');\n ReFCFPUpdata();\n }\n }[\"Tools.useEffect.timer\"], 3000);\n return ({\n \"Tools.useEffect\": ()=>clearTimeout(timer)\n })[\"Tools.useEffect\"];\n }\n if (view === 'ref-cfp-settrc-no50') {\n const timer = setTimeout({\n \"Tools.useEffect.timer\": ()=>{\n updateCurrentView('ref-cfp-trc');\n setToastMessage('TRC长度不足50cm,请重新测试');\n }\n }[\"Tools.useEffect.timer\"], 3000);\n return ({\n \"Tools.useEffect\": ()=>clearTimeout(timer)\n })[\"Tools.useEffect\"];\n }\n // 重置showRetryButtons状态\n if (view !== 'ref-cfp-settrc-no50' && view !== 'ref-cfp-trc') {\n setShowRetryButtons(false);\n }\n if (view === 'ref-ofp-setting') {\n const timer = setTimeout({\n \"Tools.useEffect.timer\": ()=>{\n updateCurrentView('ref-ofp-ok');\n ReFOFPUpdata();\n }\n }[\"Tools.useEffect.timer\"], 10000);\n return ({\n \"Tools.useEffect\": ()=>clearTimeout(timer)\n })[\"Tools.useEffect\"];\n }\n }\n }[\"Tools.useEffect\"], [\n view\n ]);\n const [ofpBackground, setOfpBackground] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)('ref-ofp.png');\n // 监听view变化,当进入ref-ofp视图时重置背景图片\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)({\n \"Tools.useEffect\": ()=>{\n if (view === 'ref-ofp') {\n setOfpBackground('ref-ofp.png');\n }\n }\n }[\"Tools.useEffect\"], [\n view\n ]);\n // 处理单选框切换事件\n const handleCompensationChange = (value)=>{\n setOfpBackground(value === 'lead' ? 'ref-ofp.png' : 'ref-ofp-end.png');\n };\n const renderContent = ()=>{\n switch(view){\n case 'main':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 bg-[#303040] p-4\",\n children: [\n currentConfig?.moduleType === '8000' && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n className: \"w-full h-[50px] bg-gradient-to-b from-[#e6e3e6] to-[#7b797b] rounded-sm p-4 shadow-lg flex justify-between items-center\",\n onClick: ()=>updateCurrentView('ref-copper'),\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black text-lg\",\n children: \"设置基准\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Tools.js\",\n lineNumber: 459,\n columnNumber: 33\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-3 h-3 relative\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: (0,_utils_asset__WEBPACK_IMPORTED_MODULE_9__.getAssetUrl)('/arrow.png'),\n alt: \"箭头\",\n fill: true,\n className: \"object-contain\",\n sizes: \"100vw\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Tools.js\",\n lineNumber: 461,\n columnNumber: 37\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Tools.js\",\n lineNumber: 460,\n columnNumber: 33\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Tools.js\",\n lineNumber: 455,\n columnNumber: 29\n }, this),\n currentConfig?.moduleType === 'cfp' && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n className: \"w-full h-[50px] bg-gradient-to-b from-[#e6e3e6] to-[#7b797b] rounded-sm p-4 shadow-lg flex justify-between items-center\",\n onClick: ()=>updateCurrentView('ref-cfp'),\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black text-lg\",\n children: \"设置参照\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Tools.js\",\n lineNumber: 477,\n columnNumber: 33\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-3 h-3 relative\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: (0,_utils_asset__WEBPACK_IMPORTED_MODULE_9__.getAssetUrl)('/arrow.png'),\n alt: \"箭头\",\n fill: true,\n className: \"object-contain\",\n sizes: \"100vw\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Tools.js\",\n lineNumber: 479,\n columnNumber: 37\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Tools.js\",\n lineNumber: 478,\n columnNumber: 33\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Tools.js\",\n lineNumber: 473,\n columnNumber: 29\n }, this),\n currentConfig?.moduleType === 'ofp' && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n className: \"w-full h-[50px] bg-gradient-to-b from-[#e6e3e6] to-[#7b797b] rounded-sm p-4 shadow-lg flex justify-between items-center\",\n onClick: ()=>updateCurrentView('ref-ofp'),\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black text-lg\",\n children: \"设置补偿\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Tools.js\",\n lineNumber: 494,\n columnNumber: 33\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-3 h-3 relative\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: (0,_utils_asset__WEBPACK_IMPORTED_MODULE_9__.getAssetUrl)('/arrow.png'),\n alt: \"箭头\",\n fill: true,\n className: \"object-contain\",\n sizes: \"100vw\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Tools.js\",\n lineNumber: 496,\n columnNumber: 37\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Tools.js\",\n lineNumber: 495,\n columnNumber: 33\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Tools.js\",\n lineNumber: 490,\n columnNumber: 29\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n className: \"w-full h-[50px] bg-gradient-to-b from-[#e6e3e6] to-[#7b797b] rounded-sm p-4 shadow-lg flex justify-between items-center mt-4\",\n onClick: ()=>updateCurrentView('tone'),\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black text-lg\",\n children: \"音频发生器\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Tools.js\",\n lineNumber: 510,\n columnNumber: 29\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-3 h-3 relative\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: (0,_utils_asset__WEBPACK_IMPORTED_MODULE_9__.getAssetUrl)('/arrow.png'),\n alt: \"箭头\",\n fill: true,\n className: \"object-contain\",\n sizes: \"100vw\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Tools.js\",\n lineNumber: 512,\n columnNumber: 33\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Tools.js\",\n lineNumber: 511,\n columnNumber: 29\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Tools.js\",\n lineNumber: 506,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n className: \"w-full h-[50px] bg-gradient-to-b from-[#e6e3e6] to-[#7b797b] rounded-sm p-4 shadow-lg flex justify-between items-center mt-4\",\n onClick: ()=>updateCurrentView('vfl'),\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black text-lg\",\n children: \"可视故障定位\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Tools.js\",\n lineNumber: 525,\n columnNumber: 29\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-3 h-3 relative\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: (0,_utils_asset__WEBPACK_IMPORTED_MODULE_9__.getAssetUrl)('/arrow.png'),\n alt: \"箭头\",\n fill: true,\n className: \"object-contain\",\n sizes: \"100vw\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Tools.js\",\n lineNumber: 527,\n columnNumber: 33\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Tools.js\",\n lineNumber: 526,\n columnNumber: 29\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Tools.js\",\n lineNumber: 521,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Tools.js\",\n lineNumber: 453,\n columnNumber: 21\n }, this);\n case 'ref-copper':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 bg-[#303040] flex flex-col\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 relative\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: (0,_utils_asset__WEBPACK_IMPORTED_MODULE_9__.getAssetUrl)('/ref-copper.png'),\n alt: \"铜缆参照设置\",\n fill: true,\n className: \"object-contain\",\n sizes: \"100vw\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Tools.js\",\n lineNumber: 543,\n columnNumber: 29\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Tools.js\",\n lineNumber: 542,\n columnNumber: 25\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Tools.js\",\n lineNumber: 541,\n columnNumber: 21\n }, this);\n case 'ref-copper-setting':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 bg-[#303040] flex flex-col\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 relative\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: (0,_utils_asset__WEBPACK_IMPORTED_MODULE_9__.getAssetUrl)('/testing.gif'),\n alt: \"测试中\",\n fill: true,\n className: \"object-contain\",\n sizes: \"100vw\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Tools.js\",\n lineNumber: 558,\n columnNumber: 29\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Tools.js\",\n lineNumber: 557,\n columnNumber: 25\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Tools.js\",\n lineNumber: 556,\n columnNumber: 21\n }, this);\n case 'ref-copper-ok':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 bg-[#303040] flex flex-col\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 relative\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: (0,_utils_asset__WEBPACK_IMPORTED_MODULE_9__.getAssetUrl)('/ref-copper-ok.png'),\n alt: \"铜缆参照设置完成\",\n fill: true,\n className: \"object-contain\",\n sizes: \"100vw\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Tools.js\",\n lineNumber: 573,\n columnNumber: 29\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Tools.js\",\n lineNumber: 572,\n columnNumber: 25\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Tools.js\",\n lineNumber: 571,\n columnNumber: 21\n }, this);\n case 'ref-cfp':\n case 'ref-cfp2':\n case 'ref-cfp3':\n case 'ref-cfp4':\n case 'ref-cfp5':\n case 'ref-cfp6':\n case 'ref-cfp7':\n case 'ref-cfp8':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 bg-[#303040] flex flex-col\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 relative\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: (0,_utils_asset__WEBPACK_IMPORTED_MODULE_9__.getAssetUrl)(`/ref-cfp${view === 'ref-cfp' ? '1' : view.slice(-1)}${isMultiMode ? '-mm' : '-sm'}.png`),\n alt: \"光纤参照设置\",\n fill: true,\n className: \"object-contain\",\n sizes: \"100vw\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Tools.js\",\n lineNumber: 595,\n columnNumber: 29\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Tools.js\",\n lineNumber: 594,\n columnNumber: 25\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Tools.js\",\n lineNumber: 593,\n columnNumber: 21\n }, this);\n case 'ref-cfp-setting':\n case 'ref-cfp-settrc':\n case 'ref-cfp-settrc-no50':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 bg-[#303040] flex flex-col\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 relative\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: (0,_utils_asset__WEBPACK_IMPORTED_MODULE_9__.getAssetUrl)('/testing.gif'),\n alt: \"测试中\",\n fill: true,\n className: \"object-contain\",\n sizes: \"100vw\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Tools.js\",\n lineNumber: 612,\n columnNumber: 29\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Tools.js\",\n lineNumber: 611,\n columnNumber: 25\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Tools.js\",\n lineNumber: 610,\n columnNumber: 21\n }, this);\n case 'ref-cfp-trc':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 bg-[#303040] flex flex-col\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 relative\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: (0,_utils_asset__WEBPACK_IMPORTED_MODULE_9__.getAssetUrl)(`/ref-cfp-trc${isMultiMode ? '-mm' : '-sm'}.png`),\n alt: `TRC验证 - ${isMultiMode ? '多模' : '单模'}`,\n fill: true,\n className: \"object-contain\",\n sizes: \"100vw\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Tools.js\",\n lineNumber: 627,\n columnNumber: 29\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Tools.js\",\n lineNumber: 626,\n columnNumber: 25\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Tools.js\",\n lineNumber: 625,\n columnNumber: 21\n }, this);\n case 'ref-cfp-ok':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 bg-[#303040] flex flex-col\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 relative\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: (0,_utils_asset__WEBPACK_IMPORTED_MODULE_9__.getAssetUrl)(`/ref-cfp-ok${isMultiMode ? '-mm' : '-sm'}.png`),\n alt: `光纤参照设置完成 - ${isMultiMode ? '多模' : '单模'}`,\n fill: true,\n className: \"object-contain\",\n sizes: \"100vw\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Tools.js\",\n lineNumber: 642,\n columnNumber: 29\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Tools.js\",\n lineNumber: 641,\n columnNumber: 25\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Tools.js\",\n lineNumber: 640,\n columnNumber: 21\n }, this);\n case 'ref-ofp':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 bg-[#303040] flex flex-col relative\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute inset-0\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: (0,_utils_asset__WEBPACK_IMPORTED_MODULE_9__.getAssetUrl)(`/${ofpBackground}`),\n alt: \"OTDR参照设置\",\n fill: true,\n className: \"object-contain\",\n sizes: \"100vw\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Tools.js\",\n lineNumber: 657,\n columnNumber: 29\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Tools.js\",\n lineNumber: 656,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"relative flex items-end justify-end px-20\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"relative flex flex-col items-start space-y-20\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-col space-y-4 mb-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"label\", {\n className: \"text-white text-xl flex items-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"radio\",\n name: \"compensation\",\n value: \"lead\",\n defaultChecked: true,\n onChange: (e)=>handleCompensationChange(e.target.value),\n className: \"mr-3 w-5 h-5\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Tools.js\",\n lineNumber: 669,\n columnNumber: 37\n }, this),\n \"仅前导\"\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Tools.js\",\n lineNumber: 668,\n columnNumber: 33\n }, this),\n faultScenario !== 'DataCenter' && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"label\", {\n className: \"text-white text-xl flex items-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"radio\",\n name: \"compensation\",\n value: \"both\",\n onChange: (e)=>handleCompensationChange(e.target.value),\n className: \"mr-3 w-5 h-5\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Tools.js\",\n lineNumber: 681,\n columnNumber: 41\n }, this),\n \"前导+末尾\"\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Tools.js\",\n lineNumber: 680,\n columnNumber: 37\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Tools.js\",\n lineNumber: 667,\n columnNumber: 29\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-white text-m mb-4\",\n children: [\n \"光纤类型:\",\n currentConfig?.params?.cableType\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Tools.js\",\n lineNumber: 692,\n columnNumber: 29\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Tools.js\",\n lineNumber: 666,\n columnNumber: 25\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Tools.js\",\n lineNumber: 665,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Tools.js\",\n lineNumber: 655,\n columnNumber: 21\n }, this);\n case 'ref-ofp-setting':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 bg-[#303040] flex flex-col\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 relative\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: (0,_utils_asset__WEBPACK_IMPORTED_MODULE_9__.getAssetUrl)('/refeset-testing.gif'),\n alt: \"OTDR测试中\",\n fill: true,\n className: \"object-contain\",\n sizes: \"100vw\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Tools.js\",\n lineNumber: 704,\n columnNumber: 29\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Tools.js\",\n lineNumber: 703,\n columnNumber: 25\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Tools.js\",\n lineNumber: 702,\n columnNumber: 21\n }, this);\n case 'ref-ofp-ok':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 bg-[#303040] flex flex-col\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 relative\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: (0,_utils_asset__WEBPACK_IMPORTED_MODULE_9__.getAssetUrl)(ofpBackground === 'ref-ofp.png' ? '/ref-ofp-ok.png' : '/ref-ofp-ok-end.png'),\n alt: \"OTDR参照设置\",\n fill: true,\n className: \"object-contain\",\n sizes: \"100vw\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Tools.js\",\n lineNumber: 719,\n columnNumber: 29\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_SubTitleBar__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n title: ofpBackground === 'ref-ofp.png' ? '选择前导事件' : '选择前导和末尾事件'\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Tools.js\",\n lineNumber: 726,\n columnNumber: 29\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Tools.js\",\n lineNumber: 718,\n columnNumber: 25\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Tools.js\",\n lineNumber: 717,\n columnNumber: 21\n }, this);\n case 'tone':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 bg-[#303040] flex flex-col\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 relative\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: (0,_utils_asset__WEBPACK_IMPORTED_MODULE_9__.getAssetUrl)('/tone.gif'),\n alt: \"音频发生器\",\n fill: true,\n className: \"object-contain\",\n sizes: \"100vw\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Tools.js\",\n lineNumber: 735,\n columnNumber: 29\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Tools.js\",\n lineNumber: 734,\n columnNumber: 25\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Tools.js\",\n lineNumber: 733,\n columnNumber: 21\n }, this);\n case 'vfl':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 bg-[#303040] flex flex-col\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 relative\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: (0,_utils_asset__WEBPACK_IMPORTED_MODULE_9__.getAssetUrl)(vflStatus ? '/vfl-on.png' : '/vfl-off.png'),\n alt: \"可视故障定位\",\n fill: true,\n className: \"object-contain\",\n sizes: \"100vw\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Tools.js\",\n lineNumber: 749,\n columnNumber: 29\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Tools.js\",\n lineNumber: 748,\n columnNumber: 25\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Tools.js\",\n lineNumber: 747,\n columnNumber: 21\n }, this);\n default:\n return null;\n }\n };\n const renderFooter = ()=>{\n switch(view){\n case 'ref-copper':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[60px] bg-[#303030] flex items-center justify-end px-4\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: RefCopperButtonClick,\n className: \"w-[100px] h-[40px] bg-gradient-to-b from-[#ffd773] to-[#e7aa29] rounded-sm flex items-center justify-center text-black font-bold shadow-lg\",\n children: \"测试\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Tools.js\",\n lineNumber: 770,\n columnNumber: 25\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Tools.js\",\n lineNumber: 769,\n columnNumber: 21\n }, this);\n case 'ref-cfp-setting':\n case 'ref-cfp-settrc':\n case 'ref-cfp-settrc-no50':\n case 'ref-copper-setting':\n case 'ref-ofp-setting':\n case 'tone':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[60px] bg-[#303030] flex items-center justify-end px-4\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Tools.js\",\n lineNumber: 786,\n columnNumber: 21\n }, this);\n case 'vfl':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[60px] bg-[#303030] flex items-center justify-end px-4\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: SetvflStatus,\n className: \"w-[100px] h-[40px] bg-gradient-to-b from-[#ffd773] to-[#e7aa29] rounded-sm flex items-center justify-center text-black font-bold shadow-lg\",\n children: \"开/关\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Tools.js\",\n lineNumber: 793,\n columnNumber: 21\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Tools.js\",\n lineNumber: 792,\n columnNumber: 21\n }, this);\n case 'ref-copper-ok':\n case 'ref-cfp-ok':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[60px] bg-[#303030] flex items-center justify-end px-4\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>navigateTo('home', 'main'),\n className: \"w-[100px] h-[40px] bg-gradient-to-b from-[#ffd773] to-[#e7aa29] rounded-sm flex items-center justify-center text-black font-bold shadow-lg\",\n children: \"主页\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Tools.js\",\n lineNumber: 806,\n columnNumber: 25\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Tools.js\",\n lineNumber: 805,\n columnNumber: 21\n }, this);\n case 'ref-cfp':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[60px] bg-[#303030] flex items-center justify-end px-4\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>updateCurrentView('ref-cfp2'),\n className: \"w-[100px] h-[40px] bg-gradient-to-b from-[#ffd773] to-[#e7aa29] rounded-sm flex items-center justify-center text-black font-bold shadow-lg\",\n children: \"下一个\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Tools.js\",\n lineNumber: 818,\n columnNumber: 25\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Tools.js\",\n lineNumber: 817,\n columnNumber: 21\n }, this);\n case 'ref-cfp2':\n case 'ref-cfp4':\n case 'ref-cfp5':\n case 'ref-cfp6':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[60px] bg-[#303030] flex items-center justify-end px-4\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>updateCurrentView(`ref-cfp${parseInt(view.slice(-1)) + 1}`),\n className: \"w-[100px] h-[40px] bg-gradient-to-b from-[#ffd773] to-[#e7aa29] rounded-sm flex items-center justify-center text-black font-bold shadow-lg\",\n children: \"下一个\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Tools.js\",\n lineNumber: 832,\n columnNumber: 25\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Tools.js\",\n lineNumber: 831,\n columnNumber: 21\n }, this);\n case 'ref-cfp-trc':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[60px] bg-[#303030] flex items-center justify-between px-4\",\n children: [\n showRetryButtons ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>{\n RefCfpRefButtonClick();\n },\n className: \"w-[100px] h-[40px] bg-gradient-to-b from-[#ffd773] to-[#e7aa29] rounded-sm flex items-center justify-center text-black font-bold shadow-lg\",\n children: \"重新验证\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Tools.js\",\n lineNumber: 846,\n columnNumber: 33\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>{\n updateCurrentView('ref-cfp');\n },\n className: \"w-[100px] h-[40px] bg-gradient-to-b from-[#656565] to-[#313431] rounded-sm flex items-center justify-center text-white font-bold shadow-lg\",\n children: \"重新开始\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Tools.js\",\n lineNumber: 854,\n columnNumber: 33\n }, this)\n ]\n }, void 0, true) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Tools.js\",\n lineNumber: 864,\n columnNumber: 29\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>{\n updateCurrentView('ref-cfp8');\n },\n className: \"w-[100px] h-[40px] bg-gradient-to-b from-[#656565] to-[#313431] rounded-sm flex items-center justify-center text-white font-bold shadow-lg\",\n children: \"下一个\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Tools.js\",\n lineNumber: 866,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Tools.js\",\n lineNumber: 843,\n columnNumber: 21\n }, this);\n case 'ref-cfp3':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[60px] bg-[#303030] flex items-center justify-end px-4\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: RefCfpButtonClick,\n className: \"w-[100px] h-[40px] bg-gradient-to-b from-[#ffd773] to-[#e7aa29] rounded-sm flex items-center justify-center text-black font-bold shadow-lg\",\n children: \"设置参照\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Tools.js\",\n lineNumber: 880,\n columnNumber: 25\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Tools.js\",\n lineNumber: 879,\n columnNumber: 21\n }, this);\n case 'ref-cfp7':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[60px] bg-[#303030] flex items-center justify-end px-4\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: RefCfpRefButtonClick,\n className: \"w-[100px] h-[40px] bg-gradient-to-b from-[#ffd773] to-[#e7aa29] rounded-sm flex items-center justify-center text-black font-bold shadow-lg\",\n children: \"TRC验证\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Tools.js\",\n lineNumber: 892,\n columnNumber: 25\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Tools.js\",\n lineNumber: 891,\n columnNumber: 21\n }, this);\n case 'ref-cfp8':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[60px] bg-[#303030] flex items-center justify-end px-4\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>updateCurrentView('ref-cfp-ok'),\n className: \"w-[100px] h-[40px] bg-gradient-to-b from-[#ffd773] to-[#e7aa29] rounded-sm flex items-center justify-center text-black font-bold shadow-lg\",\n children: \"下一个\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Tools.js\",\n lineNumber: 904,\n columnNumber: 25\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Tools.js\",\n lineNumber: 903,\n columnNumber: 21\n }, this);\n case 'ref-ofp':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[60px] bg-[#303030] flex items-center justify-end px-4\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: handleRefOFPTest,\n className: \"w-[100px] h-[40px] bg-gradient-to-b from-[#ffd773] to-[#e7aa29] rounded-sm flex items-center justify-center text-black font-bold shadow-lg\",\n children: \"测试\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Tools.js\",\n lineNumber: 918,\n columnNumber: 25\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Tools.js\",\n lineNumber: 917,\n columnNumber: 21\n }, this);\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[60px] bg-[#303030] flex items-center justify-end px-4\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>updateCurrentView('ref-ofp-setting'),\n className: \"w-[100px] h-[40px] bg-gradient-to-b from-[#ffd773] to-[#e7aa29] rounded-sm flex items-center justify-center text-black font-bold shadow-lg\",\n children: \"测试\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Tools.js\",\n lineNumber: 928,\n columnNumber: 25\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Tools.js\",\n lineNumber: 927,\n columnNumber: 21\n }, this);\n case 'ref-ofp-ok':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[60px] bg-[#303030] flex items-center justify-end px-4\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>navigateTo('home', 'main'),\n className: \"w-[100px] h-[40px] bg-gradient-to-b from-[#ffd773] to-[#e7aa29] rounded-sm flex items-center justify-center text-black font-bold shadow-lg\",\n children: \"保存\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Tools.js\",\n lineNumber: 940,\n columnNumber: 25\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Tools.js\",\n lineNumber: 939,\n columnNumber: 21\n }, this);\n default:\n return null;\n }\n };\n const renderTitleBar = ()=>{\n switch(view){\n case 'ref-copper-setting':\n case 'ref-cfp-setting':\n case 'ref-cfp-settrc':\n case 'ref-cfp-settrc-no50':\n case 'ref-ofp-setting':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_TitleBar__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n title: \"进程\",\n backTo: \"tools\",\n view: \"main\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Tools.js\",\n lineNumber: 963,\n columnNumber: 24\n }, this);\n case 'ref-copper-ok':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_TitleBar__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n title: \"设置基准\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Tools.js\",\n lineNumber: 966,\n columnNumber: 24\n }, this);\n case 'ref-cfp-ok':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_TitleBar__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n title: \"设置参照\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Tools.js\",\n lineNumber: 968,\n columnNumber: 24\n }, this);\n case 'ref-copper':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_TitleBar__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n title: \"设置基准\",\n backTo: \"tools\",\n view: \"main\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Tools.js\",\n lineNumber: 971,\n columnNumber: 24\n }, this);\n case 'ref-cfp':\n case 'ref-cfp2':\n case 'ref-cfp3':\n case 'ref-cfp4':\n case 'ref-cfp5':\n case 'ref-cfp6':\n case 'ref-cfp7':\n case 'ref-cfp8':\n case 'ref-cfp-trc':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_TitleBar__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n title: \"设置参照\",\n backTo: \"tools\",\n view: \"main\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Tools.js\",\n lineNumber: 982,\n columnNumber: 24\n }, this);\n case 'ref-ofp':\n case 'ref-ofp-ok':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_TitleBar__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n title: \"设置补偿\",\n backTo: \"tools\",\n view: \"main\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Tools.js\",\n lineNumber: 986,\n columnNumber: 24\n }, this);\n case 'tone':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_TitleBar__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n title: \"音频发生器\",\n backTo: \"tools\",\n view: \"main\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Tools.js\",\n lineNumber: 988,\n columnNumber: 24\n }, this);\n case 'vfl':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_TitleBar__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n title: \"可视故障定位\",\n backTo: \"tools\",\n view: \"main\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Tools.js\",\n lineNumber: 990,\n columnNumber: 24\n }, this);\n default:\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_TitleBar__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n title: \"工具\",\n backTo: \"home\",\n view: \"main\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Tools.js\",\n lineNumber: 993,\n columnNumber: 24\n }, this);\n }\n };\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full h-full flex flex-col overflow-hidden\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_StatusBar__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {}, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Tools.js\",\n lineNumber: 999,\n columnNumber: 13\n }, this),\n renderTitleBar(),\n renderContent(),\n renderFooter()\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/fluke/Tools.js\",\n lineNumber: 998,\n columnNumber: 9\n }, this);\n}\n\n__webpack_async_result__();\n} catch(e) { __webpack_async_result__(e); } });//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHBhZ2VzLWRpci1ub2RlKS8uL3NyYy9jb21wb25lbnRzL2RzeHBhZ2UvZmx1a2UvVG9vbHMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFvRDtBQUNyQjtBQUNvQjtBQUNGO0FBQ007QUFDSjtBQUNGO0FBQ1Q7QUFDSTtBQUNVO0FBRXZDLFNBQVNZO0lBQ3BCLE1BQU0sRUFBRUMsSUFBSSxFQUFFLEdBQUdOLG9FQUF3QixHQUFHUSxVQUFVLENBQUNDLE9BQU87SUFDOUQsTUFBTSxFQUFFQyxVQUFVLEVBQUVDLGlCQUFpQixFQUFFQyxpQkFBaUIsRUFBQ0MsU0FBUyxFQUFDQyxlQUFlLEVBQUUsR0FBR2QsK0RBQWVBO0lBQ3RHLE1BQU1lLGlCQUFpQkg7SUFDdkIsTUFBTUksZ0JBQWdCRCxnQkFBZ0JFLFdBQVcsQ0FBQ2pCLG9FQUF3QixHQUFHa0IsZUFBZSxDQUFDQyxlQUFlLENBQUM7SUFDN0csTUFBTUMsZ0JBQWdCbkIsbUVBQXVCLEdBQUdvQixjQUFjO0lBQzlELFNBQVM7SUFDVCxNQUFNLEVBQUVDLGdCQUFnQixFQUFFQyxvQkFBb0IsRUFBRSxHQUFHdEIsOERBQWNBO0lBQ2pFLE1BQU11QixnQkFBZ0JGLGtCQUFrQkcsV0FBVyxDQUFDQyxPQUFPQyxJQUFJLENBQUNMLGlCQUFpQkcsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUVHO0lBQ2pHLE1BQU1DLGNBQWNQLGtCQUFrQkcsV0FBVyxDQUFDQyxPQUFPQyxJQUFJLENBQUNMLGlCQUFpQkcsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUVLO0lBQy9GLE1BQU1DLFdBQVdULGtCQUFrQkcsV0FBVyxDQUFDQyxPQUFPQyxJQUFJLENBQUNMLGlCQUFpQkcsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUVPO0lBQzVGLE1BQU1DLGFBQWFYLGtCQUFrQkcsV0FBVyxDQUFDLFdBQVcsRUFBRUssT0FBTztJQUNyRSxNQUFNLENBQUNJLGVBQWVDLGlCQUFpQixHQUFHMUMs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O1lBRXRELEtBQUs7WUFDTCxLQUFLO2dCQUNELHFCQUFPLDhEQUFDUixnRUFBUUE7b0JBQUNvSixPQUFNO29CQUFPSSxRQUFPO29CQUFRaEosTUFBSzs7Ozs7O1lBQ3RELEtBQUs7Z0JBQ0QscUJBQU8sOERBQUNSLGdFQUFRQTtvQkFBQ29KLE9BQU07b0JBQVFJLFFBQU87b0JBQVFoSixNQUFLOzs7Ozs7WUFDdkQsS0FBSztnQkFDRCxxQkFBTyw4REFBQ1IsZ0VBQVFBO29CQUFDb0osT0FBTTtvQkFBU0ksUUFBTztvQkFBUWhKLE1BQUs7Ozs7OztZQUV4RDtnQkFDSSxxQkFBTyw4REFBQ1IsZ0VBQVFBO29CQUFDb0osT0FBTTtvQkFBS0ksUUFBTztvQkFBT2hKLE1BQUs7Ozs7OztRQUN2RDtJQUNKO0lBRUEscUJBQ0ksOERBQUMwSDtRQUFJQyxXQUFVOzswQkFDWCw4REFBQ3BJLGlFQUFTQTs7Ozs7WUFDVHdKO1lBQ0F0QjtZQUNBb0I7Ozs7Ozs7QUFHYiIsInNvdXJjZXMiOlsiL29wdC9kZXYvZXN0LWRzeC9zcmMvY29tcG9uZW50cy9kc3hwYWdlL2ZsdWtlL1Rvb2xzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZVN0YXRlLCB1c2VFZmZlY3QsIHVzZVJlZiB9IGZyb20gJ3JlYWN0JztcclxuaW1wb3J0IEltYWdlIGZyb20gJ25leHQvaW1hZ2UnO1xyXG5pbXBvcnQgU3RhdHVzQmFyIGZyb20gJ0AvY29tcG9uZW50cy9saWIvU3RhdHVzQmFyJztcclxuaW1wb3J0IFRpdGxlQmFyIGZyb20gJ0AvY29tcG9uZW50cy9saWIvVGl0bGVCYXInO1xyXG5pbXBvcnQgU3ViVGl0bGVCYXIgZnJvbSAnQC9jb21wb25lbnRzL2xpYi9TdWJUaXRsZUJhcic7XHJcbmltcG9ydCB1c2VEaXNwbGF5U3RvcmUgZnJvbSAnQC9zdG9yZS9kaXNwbGF5U3RvcmUnO1xyXG5pbXBvcnQgdXNlRGV2aWNlU3RvcmUgZnJvbSAnQC9zdG9yZS9kZXZpY2VTdG9yZSc7XHJcbmltcG9ydCB7IEFQSV9VUkxTIH0gZnJvbSAnQC9jb25maWcvYXBpJztcclxuaW1wb3J0IHsgZ2V0QXNzZXRVcmwgfSBmcm9tICdAL3V0aWxzL2Fzc2V0JztcclxuaW1wb3J0IHsgdXNlQXVkaW8gfSBmcm9tICdAL2NvbXBvbmVudHMvQXVkaW9Qcm92aWRlcic7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBUb29scygpIHtcclxuICAgIGNvbnN0IHsgdmlldyB9ID0gdXNlRGlzcGxheVN0b3JlLmdldFN0YXRlKCkubmF2aWdhdGlvbi5jdXJyZW50O1xyXG4gICAgY29uc3QgeyBuYXZpZ2F0ZVRvLCB1cGRhdGVDdXJyZW50VmlldywgZ2V0Q3VycmVudFByb2plY3QsdXBkYXRhUmVmLHNldFRvYXN0TWVzc2FnZSB9ID0gdXNlRGlzcGxheVN0b3JlKCk7XHJcbiAgICBjb25zdCBjdXJyZW50UHJvamVjdCA9IGdldEN1cnJlbnRQcm9qZWN0KCk7XHJcbiAgICBjb25zdCBjdXJyZW50Q29uZmlnID0gY3VycmVudFByb2plY3Q/LnRlc3RDb25maWdzW3VzZURpc3BsYXlTdG9yZS5nZXRTdGF0ZSgpLnNlbGVjdGVkSW5kZXhlcy50ZXN0Q29uZmlnSW5kZXhdO1xyXG4gICAgY29uc3QgZmF1bHRTY2VuYXJpbyA9IHVzZURldmljZVN0b3JlLmdldFN0YXRlKCkuZmF1bHRTY2VuYXJpb3M7XHJcbiAgICAvLyDojrflj5bov57mjqXnirbmgIFcclxuICAgIGNvbnN0IHsgY29ubmVjdGlvblN0YXR1cywgc2V0VG90YWxUb2FzdE1lc3NhZ2UgfSA9IHVzZURldmljZVN0b3JlKCk7XHJcbiAgICBjb25zdCBtYWluUG9ydFN0YXJ0ID0gY29ubmVjdGlvblN0YXR1cz8ubWFpblBhdGhzPy5bT2JqZWN0LmtleXMoY29ubmVjdGlvblN0YXR1cy5tYWluUGF0aHMpWzBdXT8uc3RhcnQ7XHJcbiAgICBjb25zdCBtYWluUG9ydEVuZCA9IGNvbm5lY3Rpb25TdGF0dXM/Lm1haW5QYXRocz8uW09iamVjdC5rZXlzKGNvbm5lY3Rpb25TdGF0dXMubWFpblBhdGhzKVswXV0/LmVuZDtcclxuICAgIGNvbnN0IG1haW5wYXRoID0gY29ubmVjdGlvblN0YXR1cz8ubWFpblBhdGhzPy5bT2JqZWN0LmtleXMoY29ubmVjdGlvblN0YXR1cy5tYWluUGF0aHMpWzBdXT8ucGF0aDtcclxuICAgIGNvbnN0IG1haW5WRkxFbmQgPSBjb25uZWN0aW9uU3RhdHVzPy5tYWluUGF0aHM/LlsnbWFpbi12ZmwnXT8uZW5kIHx8IG51bGw7XHJcbiAgICBjb25zdCBbY29ubmVjdGlvbk1hcCwgc2V0Q29ubmVjdGlvbk1hcF0gPSB1c2VTdGF0ZSh7fSk7XHJcbiAgICBjb25zdCBjb25uZWN0aW9uTWFwUmVmID0gdXNlUmVmKG51bGwpOyAgLy8g5re75YqgcmVm55So5LqO57yT5a2YY29ubmVjdGlvbk1hcFxyXG4gICAgY29uc3QgY2FibGVUeXBlID0gY3VycmVudENvbmZpZy5wYXJhbXMuY2FibGVUeXBlO1xyXG4gICAgY29uc3QgaXNNdWx0aU1vZGUgPSBjYWJsZVR5cGUuaW5jbHVkZXMoJ09NJyk7XHJcbiAgICBjb25zdCB7IHBsYXkgfSA9IHVzZUF1ZGlvKCk7XHJcbiAgICBcclxuICAgIC8vIFZGTOeKtuaAgVxyXG4gICAgY29uc3QgW3ZmbFN0YXR1cywgc2V0VmZsU3RhdHVzXSA9IHVzZVN0YXRlKGZhbHNlKTtcclxuXHJcbiAgICAgICAgLy8g6I635Y+W6L+e5o6l6YWN572uXHJcbiAgICAgICAgY29uc3QgZmV0Y2hDb25uZWN0aW9uTWFwID0gYXN5bmMgKCkgPT4ge1xyXG4gICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgLy8g5aaC5p6c5bey57uP5pyJ57yT5a2Y55qEY29ubmVjdGlvbk1hcO+8jOebtOaOpei/lOWbnlxyXG4gICAgICAgICAgICAgICAgaWYgKGNvbm5lY3Rpb25NYXBSZWYuY3VycmVudCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHNldENvbm5lY3Rpb25NYXAoY29ubmVjdGlvbk1hcFJlZi5jdXJyZW50KTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICBcclxuICAgICAgICAgICAgICAgIGNvbnN0IGFwaVVybCA9IEFQSV9VUkxTLkNPTk5FQ1RJT04uTUFQX1dJVEhfU0NFTkUoZmF1bHRTY2VuYXJpbyk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKGFwaVVybCk7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXJlc3BvbnNlLm9rKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCfojrflj5bov57mjqXphY3nva7lpLHotKUnKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByZXNwb25zZS5qc29uKCk7XHJcbiAgICAgICAgICAgICAgICBjb25uZWN0aW9uTWFwUmVmLmN1cnJlbnQgPSBkYXRhIHx8IHt9OyAgLy8g57yT5a2YY29ubmVjdGlvbk1hcFxyXG4gICAgICAgICAgICAgICAgc2V0Q29ubmVjdGlvbk1hcChkYXRhIHx8IHt9KTtcclxuICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ+iOt+WPlui/nuaOpemFjee9rumUmeivrzonLCBlcnJvcik7XHJcbiAgICAgICAgICAgICAgICBzZXRDb25uZWN0aW9uTWFwKHt9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVZGTC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbiAgICAvLyBWRkzlip/og73lh73mlbBcclxuICAgIGNvbnN0IGhhbmRsZVZmbCA9ICgpID0+IHtcclxuICAgICAgICBmZXRjaENvbm5lY3Rpb25NYXAoKTtcclxuICAgICAgICBpZiAoIW1haW5WRkxFbmQpIHJldHVybjtcclxuICAgICAgICBjb25zb2xlLmxvZyhjb25uZWN0aW9uU3RhdHVzPy5tYWluUGF0aHM/LlsnbWFpbi12ZmwnXSk7XHJcblxyXG4gICAgICAgIC8vIOWcqGNvbm5lY3Rpb25NYXDkuK3mn6Xmib7kuI5tYWluVkZMRW5k5Yy56YWN55qE6L+e5o6lXHJcbiAgICAgICAgbGV0IGNvbm5lY3RlZFBvcnQgPSBudWxsO1xyXG4gICAgICAgIGxldCB0YXJnZXRQb3J0SWQgPSBudWxsO1xyXG4gICAgICAgIFxyXG4gICAgICAgIC8vIOmmluWFiOajgOafpW1haW5WRkxFbmTmmK/lkKbkvZzkuLprZXnlrZjlnKhcclxuICAgICAgICBpZiAoY29ubmVjdGlvbk1hcFttYWluVkZMRW5kXSkge1xyXG4gICAgICAgICAgICBjb25uZWN0ZWRQb3J0ID0gbWFpblZGTEVuZDtcclxuICAgICAgICAgICAgdGFyZ2V0UG9ydElkID0gY29ubmVjdGlvbk1hcFttYWluVkZMRW5kXS5jb25uZWN0ZWRUbztcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAvLyDlpoLmnpzkuI3mmK9rZXnvvIzliJnmn6Xmib7lk6rkuKprZXnnmoRjb25uZWN0ZWRUb+etieS6jm1haW5WRkxFbmRcclxuICAgICAgICAgICAgY29uc3QgZm91bmRLZXkgPSBPYmplY3Qua2V5cyhjb25uZWN0aW9uTWFwKS5maW5kKGtleSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gY29ubmVjdGlvbk1hcFtrZXldLmNvbm5lY3RlZFRvID09PSBtYWluVkZMRW5kO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgaWYgKGZvdW5kS2V5KSB7XHJcbiAgICAgICAgICAgICAgICBjb25uZWN0ZWRQb3J0ID0gbWFpblZGTEVuZDtcclxuICAgICAgICAgICAgICAgIHRhcmdldFBvcnRJZCA9IGZvdW5kS2V5O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIFxyXG4gICAgICAgIFxyXG4gICAgICAgIGlmIChjb25uZWN0ZWRQb3J0ICYmIHRhcmdldFBvcnRJZCkge1xyXG4gICAgICAgICAgICAvLyDlpoLmnpx0YXJnZXRQb3J0SWTljIXlkKstcG9ydHjvvIh45Li65pWw5a2X77yJ77yM5YiZ56e76Zmk6L+Z6YOo5YiGXHJcbiAgICAgICAgICAgIGlmICh0YXJnZXRQb3J0SWQgJiYgLy1wb3J0XFxkKyQvLnRlc3QodGFyZ2V0UG9ydElkKSkge1xyXG4gICAgICAgICAgICAgICAgdGFyZ2V0UG9ydElkID0gdGFyZ2V0UG9ydElkLnJlcGxhY2UoLy1wb3J0XFxkKyQvLCAnJyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBjb25zdCB0YXJnZXRFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0UG9ydElkKTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIGlmICh0YXJnZXRFbGVtZW50KSB7XHJcbiAgICAgICAgICAgICAgICAvLyDmo4Dmn6Xnm67moIflhYPntKDmmK/lkKblt7Lov57mjqVcclxuICAgICAgICAgICAgICAgIGlmICh0YXJnZXRFbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygnanRrLWNvbm5lY3RlZCcpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIC8vIOiOt+WPluebruagh+WFg+e0oOeahOS9jee9ruS/oeaBr1xyXG4gICAgICAgICAgICAgICAgY29uc3QgcmVjdCA9IHRhcmdldEVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIC8vIOWIm+W7uumXqueDgeeahOe6oueCuVxyXG4gICAgICAgICAgICAgICAgY29uc3QgcmVkRG90ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XHJcbiAgICAgICAgICAgICAgICByZWREb3Quc3R5bGUuY3NzVGV4dCA9IGBcclxuICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDIwcHg7XHJcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAyMHB4O1xyXG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJlZDtcclxuICAgICAgICAgICAgICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7XHJcbiAgICAgICAgICAgICAgICAgICAgdG9wOiAke3JlY3QudG9wICsgcmVjdC5oZWlnaHQgLyAyfXB4O1xyXG4gICAgICAgICAgICAgICAgICAgIGxlZnQ6ICR7cmVjdC5sZWZ0ICsgcmVjdC53aWR0aCAvIDJ9cHg7XHJcbiAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XHJcbiAgICAgICAgICAgICAgICAgICAgYW5pbWF0aW9uOiBibGluayAxcyBpbmZpbml0ZTtcclxuICAgICAgICAgICAgICAgICAgICB6LWluZGV4OiA5OTk5O1xyXG4gICAgICAgICAgICAgICAgYDtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgLy8g5re75Yqg6Zeq54OB5Yqo55S75qC35byPXHJcbiAgICAgICAgICAgICAgICBjb25zdCBzdHlsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7XHJcbiAgICAgICAgICAgICAgICBzdHlsZS50ZXh0Q29udGVudCA9IGBcclxuICAgICAgICAgICAgICAgICAgICBAa2V5ZnJhbWVzIGJsaW5rIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgMCUgeyBvcGFjaXR5OiAxOyB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDUwJSB7IG9wYWNpdHk6IDA7IH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgMTAwJSB7IG9wYWNpdHk6IDE7IH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBgO1xyXG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChzdHlsZSk7XHJcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHJlZERvdCk7XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIC8vIOWcqFZGTOeKtuaAgeWFs+mXreaXtuenu+mZpOe6oueCuVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKHJlZERvdCk7XHJcbiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuaGVhZC5yZW1vdmVDaGlsZChzdHlsZSk7XHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIC8vIFZGTOeKtuaAgeWIh+aNouWHveaVsFxyXG4gICAgY29uc3QgU2V0dmZsU3RhdHVzID0gKCkgPT4ge1xyXG4gICAgICAgIHNldFZmbFN0YXR1cyghdmZsU3RhdHVzKTtcclxuICAgIH07XHJcblxyXG4gICAgLy8g5L2/55SodXNlUmVm5p2l5a2Y5YKo5b2T5YmN55qEY29ubmVjdGVkUG9ydFxyXG4gICAgY29uc3QgY3VycmVudENvbm5lY3RlZFBvcnRSZWYgPSB1c2VSZWYobnVsbCk7XHJcblxyXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcclxuICAgICAgICBsZXQgY2xlYW51cDtcclxuICAgICAgICBpZiAodmZsU3RhdHVzKSB7XHJcbiAgICAgICAgICAgIC8vIOiOt+WPluW9k+WJjeeahGNvbm5lY3RlZFBvcnTvvIzkvb/nlKjlj4zlkJHmn6Xmib7pgLvovpFcclxuICAgICAgICAgICAgbGV0IGNvbm5lY3RlZFBvcnQgPSBudWxsO1xyXG4gICAgICAgICAgICBpZiAoY29ubmVjdGlvbk1hcFttYWluVkZMRW5kXSkge1xyXG4gICAgICAgICAgICAgICAgY29ubmVjdGVkUG9ydCA9IG1haW5WRkxFbmQ7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBjb25uZWN0ZWRQb3J0ID0gT2JqZWN0LmtleXMoY29ubmVjdGlvbk1hcCkuZmluZChrZXkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjb25uZWN0aW9uTWFwW2tleV0uY29ubmVjdGVkVG8gPT09IG1haW5WRkxFbmQ7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgLy8g5aaC5p6cY29ubmVjdGVkUG9ydOWPkeeUn+WPmOWMlu+8jOmHjeaWsOaJp+ihjGhhbmRsZVZmbFxyXG4gICAgICAgICAgICBpZiAoY29ubmVjdGVkUG9ydCAhPT0gY3VycmVudENvbm5lY3RlZFBvcnRSZWYuY3VycmVudCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKGNsZWFudXApIHtcclxuICAgICAgICAgICAgICAgICAgICBjbGVhbnVwKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBjdXJyZW50Q29ubmVjdGVkUG9ydFJlZi5jdXJyZW50ID0gY29ubmVjdGVkUG9ydDtcclxuICAgICAgICAgICAgICAgIGNsZWFudXAgPSBoYW5kbGVWZmwoKTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmICghY2xlYW51cCkge1xyXG4gICAgICAgICAgICAgICAgLy8g5aaC5p6c5rKh5pyJY2xlYW51cO+8jOivtOaYjui/mOayoeacieaJp+ihjOi/h2hhbmRsZVZmbFxyXG4gICAgICAgICAgICAgICAgY2xlYW51cCA9IGhhbmRsZVZmbCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiAoKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChjbGVhbnVwKSB7XHJcbiAgICAgICAgICAgICAgICBjbGVhbnVwKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG4gICAgfSwgW3ZmbFN0YXR1cywgbWFpblZGTEVuZCwgY29ubmVjdGlvbk1hcF0pO1xyXG5cclxuICAgIC8vIOebkeWQrOinhuWbvuWPmOWMlu+8jOW9k+emu+W8gHZmbOinhuWbvuaXtumHjee9rnZmbFN0YXR1c1xyXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcclxuICAgICAgICBpZiAodmlldyAhPT0gJ3ZmbCcgJiYgdmZsU3RhdHVzKSB7XHJcbiAgICAgICAgICAgIHNldFZmbFN0YXR1cyhmYWxzZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfSwgW3ZpZXddKTtcclxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbiAgICAgXHJcbiAgICAvLyDpk5znvIbln7rlh4bliKTmlq3lh73mlbAg5a+55bqUcmVmLWNvcHBlcumhteiEmuaMiemSrlxyXG4gICAgY29uc3QgUmVmQ29wcGVyQnV0dG9uQ2xpY2sgPSAoKSA9PiB7XHJcbiAgICAgICAgaWYgKG1haW5Qb3J0U3RhcnQgPT09ICdtYWluLXBlcm1hbmVudCcpIHtcclxuICAgICAgICAgICAgaWYgKG1haW5Qb3J0RW5kID09PSAncmVtb3RlLWNoYW5uZWwnKSB7XHJcbiAgICAgICAgICAgICAgICB1cGRhdGVDdXJyZW50VmlldygncmVmLWNvcHBlci1zZXR0aW5nJyk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBzZXRUb2FzdE1lc3NhZ2UoJ+WfuuWHhuiuvue9rumUmeivr++8jOivt+ajgOafpei/nuaOpeeKtuaAgScpOyAvLyDlj6/ku6XnlKjoh6rlrprkuYnnmoTmj5DnpLrmlrnlvI/mm7/ku6NhbGVydFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgc2V0VG9hc3RNZXNzYWdlKCfpgILphY3lmajkuI3lhbzlrrnvvIzlr7zoh7Tln7rlh4borr7nva7lpLHotKUnKTsgLy8g5ZCM5qC377yM5Y+v5Lul55So6Ieq5a6a5LmJ55qE5o+Q56S65pa55byP5pu/5LujYWxlcnRcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgLy/pk5znvIbln7rlh4borr7nva7nirbmgIHmm7TmlrDlh73mlbBcclxuICAgIGNvbnN0IFJlRkNvcHBlclVwZGF0YSA9ICgpID0+IHtcclxuICAgICAgICB1cGRhdGFSZWYoJ2NvcHBlcicsIHsgc3RhdHVzOiB0cnVlIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIGNmcOWfuuWHhuWIpOaWreWHveaVsCDlr7nlupRjZnDpobXohJrmjInpkq5cclxuICAgIGNvbnN0IFJlZkNmcEJ1dHRvbkNsaWNrID0gKCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IG1haW5QYXRocyA9IGNvbm5lY3Rpb25TdGF0dXMubWFpblBhdGhzIHx8IHt9O1xyXG4gICAgICAgIGNvbnN0IHJlbW90ZVBhdGhzID0gY29ubmVjdGlvblN0YXR1cy5yZW1vdGVQYXRocyB8fCB7fTtcclxuXHJcbiAgICAgICAgLy8g5qOA5p+l56uv5Y+j5piv5ZCm5a2Y5ZyoXHJcbiAgICAgICAgY29uc3QgbWFpbk91dEV4aXN0cyA9IGlzTXVsdGlNb2RlIFxyXG4gICAgICAgICAgICA/IChtYWluUGF0aHNbJ21haW4tY2ZwLW1tLW91dCddIHx8IG1haW5QYXRoc1snbWFpbi1jZnAtc20tb3V0J10pXHJcbiAgICAgICAgICAgIDogbWFpblBhdGhzWydtYWluLWNmcC1zbS1vdXQnXTtcclxuICAgICAgICBjb25zdCBtYWluSW5FeGlzdHMgPSBtYWluUGF0aHNbJ21haW4tY2ZwLWluJ107XHJcbiAgICAgICAgY29uc3QgcmVtb3RlT3V0RXhpc3RzID0gaXNNdWx0aU1vZGVcclxuICAgICAgICAgICAgPyAocmVtb3RlUGF0aHNbJ3JlbW90ZS1jZnAtbW0tb3V0J10gfHwgcmVtb3RlUGF0aHNbJ3JlbW90ZS1jZnAtc20tb3V0J10pXHJcbiAgICAgICAgICAgIDogcmVtb3RlUGF0aHNbJ3JlbW90ZS1jZnAtc20tb3V0J107XHJcbiAgICAgICAgY29uc3QgcmVtb3RlSW5FeGlzdHMgPSByZW1vdGVQYXRoc1sncmVtb3RlLWNmcC1pbiddO1xyXG5cclxuICAgICAgICAvLyDojrflj5bnq6/ngrnov57mjqVcclxuICAgICAgICBjb25zdCBtYWluT3V0RW5kID0gaXNNdWx0aU1vZGUgXHJcbiAgICAgICAgICAgID8gbWFpblBhdGhzWydtYWluLWNmcC1tbS1vdXQnXT8uZW5kIHx8IG1haW5QYXRoc1snbWFpbi1jZnAtc20tb3V0J10/LmVuZFxyXG4gICAgICAgICAgICA6IG1haW5QYXRoc1snbWFpbi1jZnAtc20tb3V0J10/LmVuZDtcclxuICAgICAgICBjb25zdCBtYWluSW5FbmQgPSBtYWluUGF0aHNbJ21haW4tY2ZwLWluJ10/LmVuZDtcclxuICAgICAgICBjb25zdCByZW1vdGVPdXRFbmQgPSBpc011bHRpTW9kZSBcclxuICAgICAgICAgICAgPyByZW1vdGVQYXRoc1sncmVtb3RlLWNmcC1tbS1vdXQnXT8uZW5kIHx8IHJlbW90ZVBhdGhzWydyZW1vdGUtY2ZwLXNtLW91dCddPy5lbmRcclxuICAgICAgICAgICAgOiByZW1vdGVQYXRoc1sncmVtb3RlLWNmcC1zbS1vdXQnXT8uZW5kO1xyXG4gICAgICAgIGNvbnN0IHJlbW90ZUluRW5kID0gcmVtb3RlUGF0aHNbJ3JlbW90ZS1jZnAtaW4nXT8uZW5kO1xyXG5cclxuICAgICAgICAvLyDmo4Dmn6XmiYDmnInnq6/lj6PmmK/lkKblrZjlnKhcclxuICAgICAgICBpZiAoIW1haW5PdXRFeGlzdHMgfHwgIW1haW5JbkV4aXN0cyB8fCAhcmVtb3RlT3V0RXhpc3RzIHx8ICFyZW1vdGVJbkV4aXN0cykge1xyXG4gICAgICAgICAgICBzZXRUb2FzdE1lc3NhZ2UoJ+ivt+ajgOafpeerr+WPo+i/nuaOpScpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyDmo4Dmn6XmmK/lkKbmnInmnKrov57mjqXnmoTnq6/lj6NcclxuICAgICAgICBpZiAoIW1haW5PdXRFbmQgfHwgIW1haW5JbkVuZCB8fCAhcmVtb3RlT3V0RW5kIHx8ICFyZW1vdGVJbkVuZCkge1xyXG4gICAgICAgICAgICBzZXRUb2FzdE1lc3NhZ2UoJ+ivt+ajgOafpeerr+WPo+i/nuaOpScpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyDpqozor4Hnq6/lj6Pov57mjqXmmK/lkKbmraPnoa5cclxuICAgICAgICBjb25zdCBpc0Nvbm5lY3Rpb25Db3JyZWN0ID0gXHJcbiAgICAgICAgICAgIG1haW5PdXRFbmQgPT09ICdyZW1vdGUtY2ZwLWluJyAmJlxyXG4gICAgICAgICAgICBtYWluSW5FbmQgPT09IChpc011bHRpTW9kZSA/ICdyZW1vdGUtY2ZwLW1tLW91dCcgOiAncmVtb3RlLWNmcC1zbS1vdXQnKSAmJlxyXG4gICAgICAgICAgICByZW1vdGVPdXRFbmQgPT09ICdtYWluLWNmcC1pbicgJiZcclxuICAgICAgICAgICAgcmVtb3RlSW5FbmQgPT09IChpc011bHRpTW9kZSA/ICdtYWluLWNmcC1tbS1vdXQnIDogJ21haW4tY2ZwLXNtLW91dCcpO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICBpZiAoaXNDb25uZWN0aW9uQ29ycmVjdCkge1xyXG4gICAgICAgICAgICB1cGRhdGVDdXJyZW50VmlldygncmVmLWNmcC1zZXR0aW5nJyk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgc2V0VG90YWxUb2FzdE1lc3NhZ2UoJ+ivt+S9v+eUqOi3s+e6v+iuvue9ruWfuuWHhicpO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcblxyXG5cclxuICAgIGNvbnN0IFtzaG93UmV0cnlCdXR0b25zLCBzZXRTaG93UmV0cnlCdXR0b25zXSA9IHVzZVN0YXRlKGZhbHNlKTtcclxuXHJcbiAgICBcclxuICAgIGNvbnN0IFJlZkNmcFJlZkJ1dHRvbkNsaWNrID0gKCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IG1haW5QYXRocyA9IGNvbm5lY3Rpb25TdGF0dXMubWFpblBhdGhzIHx8IHt9O1xyXG4gICAgICAgIGNvbnN0IHJlbW90ZVBhdGhzID0gY29ubmVjdGlvblN0YXR1cy5yZW1vdGVQYXRocyB8fCB7fTtcclxuXHJcbiAgICAgICAgLy8g5qOA5p+l56uv5Y+j5piv5ZCm5a2Y5ZyoXHJcbiAgICAgICAgY29uc3QgbWFpbk91dEV4aXN0cyA9IGlzTXVsdGlNb2RlIFxyXG4gICAgICAgICAgICA/IChtYWluUGF0aHNbJ21haW4tY2ZwLW1tLW91dCddIHx8IG1haW5QYXRoc1snbWFpbi1jZnAtc20tb3V0J10pXHJcbiAgICAgICAgICAgIDogbWFpblBhdGhzWydtYWluLWNmcC1zbS1vdXQnXTtcclxuICAgICAgICBjb25zdCBtYWluSW5FeGlzdHMgPSBtYWluUGF0aHNbJ21haW4tY2ZwLWluJ107XHJcbiAgICAgICAgY29uc3QgcmVtb3RlT3V0RXhpc3RzID0gaXNNdWx0aU1vZGVcclxuICAgICAgICAgICAgPyAocmVtb3RlUGF0aHNbJ3JlbW90ZS1jZnAtbW0tb3V0J10gfHwgcmVtb3RlUGF0aHNbJ3JlbW90ZS1jZnAtc20tb3V0J10pXHJcbiAgICAgICAgICAgIDogcmVtb3RlUGF0aHNbJ3JlbW90ZS1jZnAtc20tb3V0J107XHJcbiAgICAgICAgY29uc3QgcmVtb3RlSW5FeGlzdHMgPSByZW1vdGVQYXRoc1sncmVtb3RlLWNmcC1pbiddO1xyXG5cclxuICAgICAgICAvLyDojrflj5bnq6/ngrnov57mjqVcclxuICAgICAgICBjb25zdCBtYWluT3V0RW5kID0gaXNNdWx0aU1vZGUgXHJcbiAgICAgICAgICAgID8gbWFpblBhdGhzWydtYWluLWNmcC1tbS1vdXQnXT8uZW5kIHx8IG1haW5QYXRoc1snbWFpbi1jZnAtc20tb3V0J10/LmVuZFxyXG4gICAgICAgICAgICA6IG1haW5QYXRoc1snbWFpbi1jZnAtc20tb3V0J10/LmVuZDtcclxuICAgICAgICBjb25zdCBtYWluSW5FbmQgPSBtYWluUGF0aHNbJ21haW4tY2ZwLWluJ10/LmVuZDtcclxuICAgICAgICBjb25zdCByZW1vdGVPdXRFbmQgPSBpc011bHRpTW9kZSBcclxuICAgICAgICAgICAgPyByZW1vdGVQYXRoc1sncmVtb3RlLWNmcC1tbS1vdXQnXT8uZW5kIHx8IHJlbW90ZVBhdGhzWydyZW1vdGUtY2ZwLXNtLW91dCddPy5lbmRcclxuICAgICAgICAgICAgOiByZW1vdGVQYXRoc1sncmVtb3RlLWNmcC1zbS1vdXQnXT8uZW5kO1xyXG4gICAgICAgIGNvbnN0IHJlbW90ZUluRW5kID0gcmVtb3RlUGF0aHNbJ3JlbW90ZS1jZnAtaW4nXT8uZW5kO1xyXG5cclxuICAgICAgICAvLyDmo4Dmn6XmiYDmnInnq6/lj6PmmK/lkKblrZjlnKhcclxuICAgICAgICBpZiAoIW1haW5PdXRFeGlzdHMgfHwgIW1haW5JbkV4aXN0cyB8fCAhcmVtb3RlT3V0RXhpc3RzIHx8ICFyZW1vdGVJbkV4aXN0cykge1xyXG4gICAgICAgICAgICBzZXRUb2FzdE1lc3NhZ2UoJ+ivt+ajgOafpeerr+WPo+i/nuaOpScpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyDmo4Dmn6XmmK/lkKbmnInmnKrov57mjqXnmoTnq6/lj6NcclxuICAgICAgICBpZiAoIW1haW5PdXRFbmQgfHwgIW1haW5JbkVuZCB8fCAhcmVtb3RlT3V0RW5kIHx8ICFyZW1vdGVJbkVuZCkge1xyXG4gICAgICAgICAgICBzZXRUb2FzdE1lc3NhZ2UoJ+ivt+ajgOafpeerr+WPo+i/nuaOpScpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyDmo4Dmn6Xnq6/lj6Pov57mjqXmmK/lkKbmraPnoa5cclxuICAgICAgICBjb25zdCBpc0Nvbm5lY3Rpb25Db3JyZWN0ID0gXHJcbiAgICAgICAgICAgIG1haW5PdXRFbmQgPT09ICdyZW1vdGUtY2ZwLWluJyAmJlxyXG4gICAgICAgICAgICBtYWluSW5FbmQgPT09IChpc011bHRpTW9kZSA/ICdyZW1vdGUtY2ZwLW1tLW91dCcgOiAncmVtb3RlLWNmcC1zbS1vdXQnKSAmJlxyXG4gICAgICAgICAgICByZW1vdGVPdXRFbmQgPT09ICdtYWluLWNmcC1pbicgJiZcclxuICAgICAgICAgICAgcmVtb3RlSW5FbmQgPT09IChpc011bHRpTW9kZSA/ICdtYWluLWNmcC1tbS1vdXQnIDogJ21haW4tY2ZwLXNtLW91dCcpO1xyXG4gICAgICAgIGlmICghaXNDb25uZWN0aW9uQ29ycmVjdCkge1xyXG4gICAgICAgICAgICBzZXRUb2FzdE1lc3NhZ2UoJ+ivt+ajgOafpeerr+WPo+i/nuaOpScpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyDmo4Dmn6VUUkPplb/luqZcclxuICAgICAgICBjb25zdCBtYWluVHJjQ291bnQgPSAobWFpblBhdGhzWydtYWluLWNmcC1pbiddPy5wYXRoPy5maWx0ZXIocCA9PiBcclxuICAgICAgICAgICAgaXNNdWx0aU1vZGUgPyBwLmluY2x1ZGVzKCdtbS1sYy1sYycpIDogcC5pbmNsdWRlcygnc20tbGMtbGMnKVxyXG4gICAgICAgICk/Lmxlbmd0aCB8fCAwKTtcclxuICAgICAgICBcclxuICAgICAgICBjb25zdCByZW1vdGVUcmNDb3VudCA9IChyZW1vdGVQYXRoc1sncmVtb3RlLWNmcC1pbiddPy5wYXRoPy5maWx0ZXIocCA9PiBcclxuICAgICAgICAgICAgaXNNdWx0aU1vZGUgPyBwLmluY2x1ZGVzKCdtbS1sYy1sYycpIDogcC5pbmNsdWRlcygnc20tbGMtbGMnKVxyXG4gICAgICAgICk/Lmxlbmd0aCB8fCAwKTtcclxuXHJcbiAgICAgICAgaWYgKG1haW5UcmNDb3VudCA8IDQgfHwgcmVtb3RlVHJjQ291bnQgPCA0KSB7XHJcbiAgICAgICAgICAgIHVwZGF0ZUN1cnJlbnRWaWV3KCdyZWYtY2ZwLXNldHRyYy1ubzUwJyk7XHJcbiAgICAgICAgICAgIHNldFNob3dSZXRyeUJ1dHRvbnModHJ1ZSk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgIGlmIChpc0Nvbm5lY3Rpb25Db3JyZWN0KSB7XHJcbiAgICAgICAgICAgIHVwZGF0ZUN1cnJlbnRWaWV3KCdyZWYtY2ZwLXNldHRyYycpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHNldFRvYXN0TWVzc2FnZSgn6K+35qOA5p+l56uv5Y+j6L+e5o6lJyk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIFxyXG4gICAgLy9DRlDln7rlh4borr7nva7nirbmgIHmm7TmlrDlh73mlbBcclxuICAgIGNvbnN0IFJlRkNGUFVwZGF0YSA9ICgpID0+IHtcclxuICAgICAgICB1cGRhdGFSZWYoJ2NmcCcsIHsgc3RhdHVzOiB0cnVlIH0pO1xyXG4gICAgICAgIHVwZGF0YVJlZignY2ZwJywgeyBjb25uZWN0U3RhdHVzOiB0cnVlIH0pO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvL09GUOWfuuWHhuiuvue9rueKtuaAgeabtOaWsOWHveaVsFxyXG4gICAgY29uc3QgUmVGT0ZQVXBkYXRhID0gKCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHN0YXR1c1ZhbHVlID0gb2ZwQmFja2dyb3VuZCA9PT0gJ3JlZi1vZnAucG5nJyA/ICdzdGFydCcgOiAnZW5kJztcclxuICAgICAgICB1cGRhdGFSZWYoJ29mcCcsIHsgc3RhdHVzOiBzdGF0dXNWYWx1ZSB9KTtcclxuICAgICAgICB1cGRhdGFSZWYoJ29mcCcsIHsgY29ubmVjdFN0YXR1czogdHJ1ZSB9KTtcclxuXHJcbiAgICB9XHJcbiAgICAvLyBPRlDooaXlgb/mo4DmtYvlh73mlbBcclxuICAgIGNvbnN0IGhhbmRsZVJlZk9GUFRlc3QgPSAoKSA9PiB7XHJcbiAgICAgICAgLy8g6I635Y+W5b2T5YmN6YCJ5oup55qE5YWJ57qk57G75Z6LXHJcbiAgICAgICAgY29uc3QgY2FibGVUeXBlID0gY3VycmVudENvbmZpZz8ucGFyYW1zPy5jYWJsZVR5cGU7XHJcbiAgICAgICAgLy8g6I635Y+W5b2T5YmN6YCJ5oup55qE6KGl5YG/5pa55byP77yI5LuF5YmN5a+8IG9yIOWJjeWvvCvmnKvlsL7vvIlcclxuICAgICAgICBjb25zdCBpc0xlYWRPbmx5ID0gb2ZwQmFja2dyb3VuZCA9PT0gJ3JlZi1vZnAucG5nJztcclxuICAgICAgICBcclxuICAgICAgICAvLyDliKTmlq3mmK/lkKbkuLrlpJrmqKHlhYnnuqRcclxuICAgICAgICBjb25zdCBpc011bHRpTW9kZSA9IGNhYmxlVHlwZS5pbmNsdWRlcygnT00nKTtcclxuICAgICAgICBcclxuICAgICAgICAvLyDmo4Dmn6VtYWlucGF0aOeahOesrOS4gOS4quaOpeWPo+aYr+WQpuWMuemFjeW9k+WJjeWFiee6pOexu+Wei1xyXG4gICAgICAgIGNvbnN0IGZpcnN0UG9ydCA9IG1haW5wYXRoPy5bMF07XHJcbiAgICAgICAgaWYgKCFmaXJzdFBvcnQgfHwgXHJcbiAgICAgICAgICAgIChpc011bHRpTW9kZSAmJiAhZmlyc3RQb3J0LmluY2x1ZGVzKCdtbS1vdXQnKSkgfHwgXHJcbiAgICAgICAgICAgICghaXNNdWx0aU1vZGUgJiYgIWZpcnN0UG9ydC5pbmNsdWRlcygnc20tb3V0JykpKSB7XHJcbiAgICAgICAgICAgIHNldFRvYXN0TWVzc2FnZSgn5pyq5qOA5rWL5Yiw5YmN5a+85YWJ57qkJyk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICAgICAgLy8g5qOA5p+l6KGl5YG/5YWJ57qk57G75Z6L5piv5ZCm5Yy56YWNXHJcbiAgICAgICAgY29uc3QgaGFzSW52YWxpZEZpYmVyID0gbWFpbnBhdGg/LnNvbWUocGF0aCA9PiB7XHJcbiAgICAgICAgICAgIGlmIChwYXRoLmluY2x1ZGVzKCdtbWMtJykgfHwgcGF0aC5pbmNsdWRlcygnc21jLScpKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gKGlzTXVsdGlNb2RlICYmIHBhdGguaW5jbHVkZXMoJ3NtYy0nKSkgfHwgKCFpc011bHRpTW9kZSAmJiBwYXRoLmluY2x1ZGVzKCdtbWMtJykpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9KTtcclxuICAgICAgICBcclxuICAgICAgICBpZiAoaGFzSW52YWxpZEZpYmVyKSB7XHJcbiAgICAgICAgICAgIHNldFRvdGFsVG9hc3RNZXNzYWdlKGlzTXVsdGlNb2RlID8gJ+ivt+S9v+eUqOWkmuaooeihpeWBv+WFiee6pCcgOiAn6K+35L2/55So5Y2V5qih6KGl5YG/5YWJ57qkJyk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICAgICAgLy8g5qOA5p+l6Lev5b6E6ZW/5bqm5ZKM57uE5oiQXHJcbiAgICAgICAgaWYgKGlzTGVhZE9ubHkpIHtcclxuICAgICAgICAgICAgLy8g5LuF5YmN5a+85qih5byP77ya5bqU6K+l5Y+q5pyJ5Li75py6b3V056uv5Y+j5ZKM5LiA5Liq6KGl5YG/5YWJ57qkXHJcbiAgICAgICAgICAgIGlmIChtYWlucGF0aD8ubGVuZ3RoICE9PSAyIHx8IFxyXG4gICAgICAgICAgICAgICAgIW1haW5wYXRoWzFdLmluY2x1ZGVzKGlzTXVsdGlNb2RlID8gJ21tYy0nIDogJ3NtYy0nKSkge1xyXG4gICAgICAgICAgICAgICAgc2V0VG90YWxUb2FzdE1lc3NhZ2UoJ+ivt+ehruS/neato+ehrui/nuaOpeWJjeWvvOWFiee6pCcpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgLy8g5YmN5a+8K+acq+WwvuaooeW8j++8muW6lOivpeacieS4u+acum91dOerr+WPo+OAgeS4pOS4quihpeWBv+WFiee6pOWSjOS4gOS4qui/nuaOpeWZqFxyXG4gICAgICAgICAgICBpZiAobWFpbnBhdGg/Lmxlbmd0aCAhPT0gNiB8fCBcclxuICAgICAgICAgICAgICAgICFtYWlucGF0aFsxXS5pbmNsdWRlcyhpc011bHRpTW9kZSA/ICdtbWMtJyA6ICdzbWMtJykgfHwgXHJcbiAgICAgICAgICAgICAgICAhbWFpbnBhdGhbNV0uaW5jbHVkZXMoaXNNdWx0aU1vZGUgPyAnbW1jLScgOiAnc21jLScpKSAge1xyXG4gICAgICAgICAgICAgICAgc2V0VG90YWxUb2FzdE1lc3NhZ2UoJ+ivt+ehruS/neato+ehrui/nuaOpeWJjeWvvOWFiee6pCcpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIFxyXG4gICAgICAgIC8vIOaJgOacieajgOafpemAmui/h++8jOabtOaWsOinhuWbvlxyXG4gICAgICAgIHVwZGF0ZUN1cnJlbnRWaWV3KCdyZWYtb2ZwLXNldHRpbmcnKTtcclxuICAgIH07XHJcblxyXG4gICAgLy8g5aSE55CG5a6a5pe25Zmo5pWI5p6cXHJcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xyXG4gICAgICAgIGlmICh2aWV3ID09PSAncmVmLWNvcHBlci1zZXR0aW5nJykge1xyXG4gICAgICAgICAgICBjb25zdCB0aW1lciA9IHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgcGxheSgncGFzcycpO1xyXG4gICAgICAgICAgICAgICAgdXBkYXRlQ3VycmVudFZpZXcoJ3JlZi1jb3BwZXItb2snKTtcclxuICAgICAgICAgICAgICAgIFJlRkNvcHBlclVwZGF0YSgpOyAvL+abtOaWsOeKtuaAgVxyXG4gICAgICAgICAgICB9LCAzMDAwKTtcclxuICAgICAgICAgICAgcmV0dXJuICgpID0+IGNsZWFyVGltZW91dCh0aW1lcik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh2aWV3ID09PSAncmVmLWNmcC1zZXR0aW5nJykge1xyXG4gICAgICAgICAgICBjb25zdCB0aW1lciA9IHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdXBkYXRlQ3VycmVudFZpZXcoJ3JlZi1jZnA0Jyk7XHJcbiAgICAgICAgICAgIH0sIDMwMDApO1xyXG4gICAgICAgICAgICByZXR1cm4gKCkgPT4gY2xlYXJUaW1lb3V0KHRpbWVyKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHZpZXcgPT09ICdyZWYtY2ZwLXNldHRyYycpIHtcclxuICAgICAgICAgICAgY29uc3QgdGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgIHVwZGF0ZUN1cnJlbnRWaWV3KCdyZWYtY2ZwLXRyYycpO1xyXG4gICAgICAgICAgICAgICAgUmVGQ0ZQVXBkYXRhKCk7IFxyXG4gICAgICAgICAgICB9LCAzMDAwKTtcclxuICAgICAgICAgICAgcmV0dXJuICgpID0+IGNsZWFyVGltZW91dCh0aW1lcik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh2aWV3ID09PSAncmVmLWNmcC1zZXR0cmMtbm81MCcpIHtcclxuICAgICAgICAgICAgY29uc3QgdGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgIHVwZGF0ZUN1cnJlbnRWaWV3KCdyZWYtY2ZwLXRyYycpO1xyXG4gICAgICAgICAgICAgICAgc2V0VG9hc3RNZXNzYWdlKCdUUkPplb/luqbkuI3otrM1MGNtLOivt+mHjeaWsOa1i+ivlScpO1xyXG4gICAgICAgICAgICB9LCAzMDAwKTtcclxuICAgICAgICAgICAgcmV0dXJuICgpID0+IGNsZWFyVGltZW91dCh0aW1lcik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyDph43nva5zaG93UmV0cnlCdXR0b25z54q25oCBXHJcbiAgICAgICAgaWYgKHZpZXcgIT09ICdyZWYtY2ZwLXNldHRyYy1ubzUwJyAmJiB2aWV3ICE9PSAncmVmLWNmcC10cmMnKSB7XHJcbiAgICAgICAgICAgIHNldFNob3dSZXRyeUJ1dHRvbnMoZmFsc2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodmlldyA9PT0gJ3JlZi1vZnAtc2V0dGluZycpIHtcclxuICAgICAgICAgICAgY29uc3QgdGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgIHVwZGF0ZUN1cnJlbnRWaWV3KCdyZWYtb2ZwLW9rJyk7XHJcbiAgICAgICAgICAgICAgICBSZUZPRlBVcGRhdGEoKTtcclxuICAgICAgICAgICAgfSwgMTAwMDApO1xyXG4gICAgICAgICAgICByZXR1cm4gKCkgPT4gY2xlYXJUaW1lb3V0KHRpbWVyKTtcclxuICAgICAgICB9XHJcbiAgICB9LCBbdmlld10pO1xyXG5cclxuICAgIGNvbnN0IFtvZnBCYWNrZ3JvdW5kLCBzZXRPZnBCYWNrZ3JvdW5kXSA9IHVzZVN0YXRlKCdyZWYtb2ZwLnBuZycpO1xyXG5cclxuICAgIC8vIOebkeWQrHZpZXflj5jljJbvvIzlvZPov5vlhaVyZWYtb2Zw6KeG5Zu+5pe26YeN572u6IOM5pmv5Zu+54mHXHJcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xyXG4gICAgICAgIGlmICh2aWV3ID09PSAncmVmLW9mcCcpIHtcclxuICAgICAgICAgICAgc2V0T2ZwQmFja2dyb3VuZCgncmVmLW9mcC5wbmcnKTtcclxuICAgICAgICB9XHJcbiAgICB9LCBbdmlld10pO1xyXG5cclxuICAgIC8vIOWkhOeQhuWNlemAieahhuWIh+aNouS6i+S7tlxyXG4gICAgY29uc3QgaGFuZGxlQ29tcGVuc2F0aW9uQ2hhbmdlID0gKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgc2V0T2ZwQmFja2dyb3VuZCh2YWx1ZSA9PT0gJ2xlYWQnID8gJ3JlZi1vZnAucG5nJyA6ICdyZWYtb2ZwLWVuZC5wbmcnKTtcclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgcmVuZGVyQ29udGVudCA9ICgpID0+IHtcclxuICAgICAgICBzd2l0Y2ggKHZpZXcpIHtcclxuICAgICAgICAgICAgY2FzZSAnbWFpbic6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleC0xIGJnLVsjMzAzMDQwXSBwLTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge2N1cnJlbnRDb25maWc/Lm1vZHVsZVR5cGUgPT09ICc4MDAwJyAmJiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInctZnVsbCBoLVs1MHB4XSBiZy1ncmFkaWVudC10by1iIGZyb20tWyNlNmUzZTZdIHRvLVsjN2I3OTdiXSByb3VuZGVkLXNtIHAtNCBzaGFkb3ctbGcgZmxleCBqdXN0aWZ5LWJldHdlZW4gaXRlbXMtY2VudGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB1cGRhdGVDdXJyZW50VmlldygncmVmLWNvcHBlcicpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1ibGFjayB0ZXh0LWxnXCI+6K6+572u5Z+65YeGPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LTMgaC0zIHJlbGF0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJbWFnZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjPXtnZXRBc3NldFVybCgnL2Fycm93LnBuZycpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0PVwi566t5aS0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cIm9iamVjdC1jb250YWluXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVzPVwiMTAwdndcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAge2N1cnJlbnRDb25maWc/Lm1vZHVsZVR5cGUgPT09ICdjZnAnICYmIChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidy1mdWxsIGgtWzUwcHhdIGJnLWdyYWRpZW50LXRvLWIgZnJvbS1bI2U2ZTNlNl0gdG8tWyM3Yjc5N2JdIHJvdW5kZWQtc20gcC00IHNoYWRvdy1sZyBmbGV4IGp1c3RpZnktYmV0d2VlbiBpdGVtcy1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHVwZGF0ZUN1cnJlbnRWaWV3KCdyZWYtY2ZwJyl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LWJsYWNrIHRleHQtbGdcIj7orr7nva7lj4Lnhac8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctMyBoLTMgcmVsYXRpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEltYWdlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9e2dldEFzc2V0VXJsKCcvYXJyb3cucG5nJyl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ9XCLnrq3lpLRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwib2JqZWN0LWNvbnRhaW5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZXM9XCIxMDB2d1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAge2N1cnJlbnRDb25maWc/Lm1vZHVsZVR5cGUgPT09ICdvZnAnICYmIChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidy1mdWxsIGgtWzUwcHhdIGJnLWdyYWRpZW50LXRvLWIgZnJvbS1bI2U2ZTNlNl0gdG8tWyM3Yjc5N2JdIHJvdW5kZWQtc20gcC00IHNoYWRvdy1sZyBmbGV4IGp1c3RpZnktYmV0d2VlbiBpdGVtcy1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHVwZGF0ZUN1cnJlbnRWaWV3KCdyZWYtb2ZwJyl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LWJsYWNrIHRleHQtbGdcIj7orr7nva7ooaXlgb88L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctMyBoLTMgcmVsYXRpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEltYWdlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9e2dldEFzc2V0VXJsKCcvYXJyb3cucG5nJyl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ9XCLnrq3lpLRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwib2JqZWN0LWNvbnRhaW5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZXM9XCIxMDB2d1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInctZnVsbCBoLVs1MHB4XSBiZy1ncmFkaWVudC10by1iIGZyb20tWyNlNmUzZTZdIHRvLVsjN2I3OTdiXSByb3VuZGVkLXNtIHAtNCBzaGFkb3ctbGcgZmxleCBqdXN0aWZ5LWJldHdlZW4gaXRlbXMtY2VudGVyIG10LTRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gdXBkYXRlQ3VycmVudFZpZXcoJ3RvbmUnKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LWJsYWNrIHRleHQtbGdcIj7pn7PpopHlj5HnlJ/lmag8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy0zIGgtMyByZWxhdGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJbWFnZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9e2dldEFzc2V0VXJsKCcvYXJyb3cucG5nJyl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdD1cIueureWktFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwib2JqZWN0LWNvbnRhaW5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplcz1cIjEwMHZ3XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidy1mdWxsIGgtWzUwcHhdIGJnLWdyYWRpZW50LXRvLWIgZnJvbS1bI2U2ZTNlNl0gdG8tWyM3Yjc5N2JdIHJvdW5kZWQtc20gcC00IHNoYWRvdy1sZyBmbGV4IGp1c3RpZnktYmV0d2VlbiBpdGVtcy1jZW50ZXIgbXQtNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB1cGRhdGVDdXJyZW50VmlldygndmZsJyl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1ibGFjayB0ZXh0LWxnXCI+5Y+v6KeG5pWF6Zqc5a6a5L2NPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctMyBoLTMgcmVsYXRpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SW1hZ2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjPXtnZXRBc3NldFVybCgnL2Fycm93LnBuZycpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ9XCLnrq3lpLRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cIm9iamVjdC1jb250YWluXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZXM9XCIxMDB2d1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICk7XHJcblxyXG4gICAgICAgICAgICBjYXNlICdyZWYtY29wcGVyJzpcclxuICAgICAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4LTEgYmctWyMzMDMwNDBdIGZsZXggZmxleC1jb2xcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4LTEgcmVsYXRpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJbWFnZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz17Z2V0QXNzZXRVcmwoJy9yZWYtY29wcGVyLnBuZycpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdD1cIumTnOe8huWPgueFp+iuvue9rlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cIm9iamVjdC1jb250YWluXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplcz1cIjEwMHZ3XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgKTtcclxuXHJcbiAgICAgICAgICAgIGNhc2UgJ3JlZi1jb3BwZXItc2V0dGluZyc6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleC0xIGJnLVsjMzAzMDQwXSBmbGV4IGZsZXgtY29sXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleC0xIHJlbGF0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SW1hZ2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9e2dldEFzc2V0VXJsKCcvdGVzdGluZy5naWYnKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ9XCLmtYvor5XkuK1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJvYmplY3QtY29udGFpblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZXM9XCIxMDB2d1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICk7XHJcblxyXG4gICAgICAgICAgICBjYXNlICdyZWYtY29wcGVyLW9rJzpcclxuICAgICAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4LTEgYmctWyMzMDMwNDBdIGZsZXggZmxleC1jb2xcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4LTEgcmVsYXRpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJbWFnZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz17Z2V0QXNzZXRVcmwoJy9yZWYtY29wcGVyLW9rLnBuZycpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdD1cIumTnOe8huWPgueFp+iuvue9ruWujOaIkFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cIm9iamVjdC1jb250YWluXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplcz1cIjEwMHZ3XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgKTtcclxuXHJcbiAgICAgICAgICAgIGNhc2UgJ3JlZi1jZnAnOlxyXG4gICAgICAgICAgICBjYXNlICdyZWYtY2ZwMic6XHJcbiAgICAgICAgICAgIGNhc2UgJ3JlZi1jZnAzJzpcclxuICAgICAgICAgICAgY2FzZSAncmVmLWNmcDQnOlxyXG4gICAgICAgICAgICBjYXNlICdyZWYtY2ZwNSc6XHJcbiAgICAgICAgICAgIGNhc2UgJ3JlZi1jZnA2JzpcclxuICAgICAgICAgICAgY2FzZSAncmVmLWNmcDcnOlxyXG4gICAgICAgICAgICBjYXNlICdyZWYtY2ZwOCc6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleC0xIGJnLVsjMzAzMDQwXSBmbGV4IGZsZXgtY29sXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleC0xIHJlbGF0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SW1hZ2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9e2dldEFzc2V0VXJsKGAvcmVmLWNmcCR7dmlldyA9PT0gJ3JlZi1jZnAnID8gJzEnIDogdmlldy5zbGljZSgtMSl9JHtpc011bHRpTW9kZSA/ICctbW0nIDogJy1zbSd9LnBuZ2ApfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdD1cIuWFiee6pOWPgueFp+iuvue9rlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cIm9iamVjdC1jb250YWluXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplcz1cIjEwMHZ3XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgKTtcclxuXHJcbiAgICAgICAgICAgIGNhc2UgJ3JlZi1jZnAtc2V0dGluZyc6XHJcbiAgICAgICAgICAgIGNhc2UgJ3JlZi1jZnAtc2V0dHJjJzpcclxuICAgICAgICAgICAgY2FzZSAncmVmLWNmcC1zZXR0cmMtbm81MCc6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleC0xIGJnLVsjMzAzMDQwXSBmbGV4IGZsZXgtY29sXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleC0xIHJlbGF0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SW1hZ2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9e2dldEFzc2V0VXJsKCcvdGVzdGluZy5naWYnKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ9XCLmtYvor5XkuK1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJvYmplY3QtY29udGFpblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZXM9XCIxMDB2d1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICk7XHJcblxyXG4gICAgICAgICAgICBjYXNlICdyZWYtY2ZwLXRyYyc6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleC0xIGJnLVsjMzAzMDQwXSBmbGV4IGZsZXgtY29sXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleC0xIHJlbGF0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SW1hZ2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9e2dldEFzc2V0VXJsKGAvcmVmLWNmcC10cmMke2lzTXVsdGlNb2RlID8gJy1tbScgOiAnLXNtJ30ucG5nYCl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0PXtgVFJD6aqM6K+BIC0gJHtpc011bHRpTW9kZSA/ICflpJrmqKEnIDogJ+WNleaooSd9YH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwib2JqZWN0LWNvbnRhaW5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVzPVwiMTAwdndcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICApO1xyXG5cclxuICAgICAgICAgICAgY2FzZSAncmVmLWNmcC1vayc6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleC0xIGJnLVsjMzAzMDQwXSBmbGV4IGZsZXgtY29sXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleC0xIHJlbGF0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SW1hZ2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9e2dldEFzc2V0VXJsKGAvcmVmLWNmcC1vayR7aXNNdWx0aU1vZGUgPyAnLW1tJyA6ICctc20nfS5wbmdgKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ9e2DlhYnnuqTlj4Lnhaforr7nva7lrozmiJAgLSAke2lzTXVsdGlNb2RlID8gJ+WkmuaooScgOiAn5Y2V5qihJ31gfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJvYmplY3QtY29udGFpblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZXM9XCIxMDB2d1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICk7XHJcblxyXG4gICAgICAgICAgICBjYXNlICdyZWYtb2ZwJzpcclxuICAgICAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4LTEgYmctWyMzMDMwNDBdIGZsZXggZmxleC1jb2wgcmVsYXRpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJhYnNvbHV0ZSBpbnNldC0wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SW1hZ2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9e2dldEFzc2V0VXJsKGAvJHtvZnBCYWNrZ3JvdW5kfWApfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdD1cIk9URFLlj4Lnhaforr7nva5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJvYmplY3QtY29udGFpblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZXM9XCIxMDB2d1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyZWxhdGl2ZSBmbGV4ICBpdGVtcy1lbmQganVzdGlmeS1lbmQgcHgtMjBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyZWxhdGl2ZSBmbGV4IGZsZXgtY29sIGl0ZW1zLXN0YXJ0IHNwYWNlLXktMjBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBmbGV4LWNvbCBzcGFjZS15LTQgbWItNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzc05hbWU9XCJ0ZXh0LXdoaXRlIHRleHQteGwgZmxleCBpdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInJhZGlvXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwiY29tcGVuc2F0aW9uXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT1cImxlYWRcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRDaGVja2VkIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiBoYW5kbGVDb21wZW5zYXRpb25DaGFuZ2UoZS50YXJnZXQudmFsdWUpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwibXItMyB3LTUgaC01XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz4gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIOS7heWJjeWvvFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZhdWx0U2NlbmFyaW8gIT09ICdEYXRhQ2VudGVyJyAmJiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzc05hbWU9XCJ0ZXh0LXdoaXRlIHRleHQteGwgZmxleCBpdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwicmFkaW9cIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwiY29tcGVuc2F0aW9uXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9XCJib3RoXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiBoYW5kbGVDb21wZW5zYXRpb25DaGFuZ2UoZS50YXJnZXQudmFsdWUpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cIm1yLTMgdy01IGgtNVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIOWJjeWvvCvmnKvlsL5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtd2hpdGUgdGV4dC1tIG1iLTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDlhYnnuqTnsbvlnovvvJp7Y3VycmVudENvbmZpZz8ucGFyYW1zPy5jYWJsZVR5cGV9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgKTtcclxuXHJcbiAgICAgICAgICAgIGNhc2UgJ3JlZi1vZnAtc2V0dGluZyc6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleC0xIGJnLVsjMzAzMDQwXSBmbGV4IGZsZXgtY29sXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleC0xIHJlbGF0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SW1hZ2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9e2dldEFzc2V0VXJsKCcvcmVmZXNldC10ZXN0aW5nLmdpZicpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdD1cIk9URFLmtYvor5XkuK1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJvYmplY3QtY29udGFpblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZXM9XCIxMDB2d1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICk7XHJcblxyXG4gICAgICAgICAgICBjYXNlICdyZWYtb2ZwLW9rJzpcclxuICAgICAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4LTEgYmctWyMzMDMwNDBdIGZsZXggZmxleC1jb2xcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4LTEgcmVsYXRpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJbWFnZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz17Z2V0QXNzZXRVcmwob2ZwQmFja2dyb3VuZCA9PT0gJ3JlZi1vZnAucG5nJyA/ICcvcmVmLW9mcC1vay5wbmcnIDogJy9yZWYtb2ZwLW9rLWVuZC5wbmcnKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ9XCJPVERS5Y+C54Wn6K6+572uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwib2JqZWN0LWNvbnRhaW5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVzPVwiMTAwdndcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTdWJUaXRsZUJhciB0aXRsZT17b2ZwQmFja2dyb3VuZCA9PT0gJ3JlZi1vZnAucG5nJyA/ICfpgInmi6nliY3lr7zkuovku7YnIDogJ+mAieaLqeWJjeWvvOWSjOacq+WwvuS6i+S7tid9Lz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICApO1xyXG5cclxuICAgICAgICAgICAgY2FzZSAndG9uZSc6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleC0xIGJnLVsjMzAzMDQwXSBmbGV4IGZsZXgtY29sXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleC0xIHJlbGF0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SW1hZ2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9e2dldEFzc2V0VXJsKCcvdG9uZS5naWYnKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ9XCLpn7PpopHlj5HnlJ/lmahcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJvYmplY3QtY29udGFpblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZXM9XCIxMDB2d1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIGNhc2UgJ3ZmbCc6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleC0xIGJnLVsjMzAzMDQwXSBmbGV4IGZsZXgtY29sXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleC0xIHJlbGF0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SW1hZ2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9e2dldEFzc2V0VXJsKHZmbFN0YXR1cyA/ICcvdmZsLW9uLnBuZycgOiAnL3ZmbC1vZmYucG5nJyl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0PVwi5Y+v6KeG5pWF6Zqc5a6a5L2NXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwib2JqZWN0LWNvbnRhaW5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVzPVwiMTAwdndcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IHJlbmRlckZvb3RlciA9ICgpID0+IHtcclxuICAgICAgICBzd2l0Y2ggKHZpZXcpIHtcclxuICAgICAgICAgICAgY2FzZSAncmVmLWNvcHBlcic6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaC1bNjBweF0gYmctWyMzMDMwMzBdIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktZW5kIHB4LTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e1JlZkNvcHBlckJ1dHRvbkNsaWNrfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidy1bMTAwcHhdIGgtWzQwcHhdIGJnLWdyYWRpZW50LXRvLWIgZnJvbS1bI2ZmZDc3M10gdG8tWyNlN2FhMjldIHJvdW5kZWQtc20gZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgdGV4dC1ibGFjayBmb250LWJvbGQgc2hhZG93LWxnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAg5rWL6K+VXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgKTtcclxuXHJcbiAgICAgICAgICAgIGNhc2UgJ3JlZi1jZnAtc2V0dGluZyc6XHJcbiAgICAgICAgICAgIGNhc2UgJ3JlZi1jZnAtc2V0dHJjJzogICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIGNhc2UgJ3JlZi1jZnAtc2V0dHJjLW5vNTAnOlxyXG4gICAgICAgICAgICBjYXNlICdyZWYtY29wcGVyLXNldHRpbmcnOlxyXG4gICAgICAgICAgICBjYXNlICdyZWYtb2ZwLXNldHRpbmcnOlxyXG4gICAgICAgICAgICBjYXNlICd0b25lJzpcclxuICAgICAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJoLVs2MHB4XSBiZy1bIzMwMzAzMF0gZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1lbmQgcHgtNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgKTtcclxuXHJcbiAgICAgICAgICAgIGNhc2UgJ3ZmbCc6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaC1bNjBweF0gYmctWyMzMDMwMzBdIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktZW5kIHB4LTRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXtTZXR2ZmxTdGF0dXN9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInctWzEwMHB4XSBoLVs0MHB4XSBiZy1ncmFkaWVudC10by1iIGZyb20tWyNmZmQ3NzNdIHRvLVsjZTdhYTI5XSByb3VuZGVkLXNtIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHRleHQtYmxhY2sgZm9udC1ib2xkIHNoYWRvdy1sZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICDlvIAv5YWzXHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICk7IFxyXG5cclxuICAgICAgICAgICAgY2FzZSAncmVmLWNvcHBlci1vayc6XHJcbiAgICAgICAgICAgIGNhc2UgJ3JlZi1jZnAtb2snOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImgtWzYwcHhdIGJnLVsjMzAzMDMwXSBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWVuZCBweC00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBuYXZpZ2F0ZVRvKCdob21lJywgJ21haW4nKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInctWzEwMHB4XSBoLVs0MHB4XSBiZy1ncmFkaWVudC10by1iIGZyb20tWyNmZmQ3NzNdIHRvLVsjZTdhYTI5XSByb3VuZGVkLXNtIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHRleHQtYmxhY2sgZm9udC1ib2xkIHNoYWRvdy1sZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIOS4u+mhtVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICk7XHJcblxyXG4gICAgICAgICAgICBjYXNlICdyZWYtY2ZwJzpcclxuICAgICAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJoLVs2MHB4XSBiZy1bIzMwMzAzMF0gZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1lbmQgcHgtNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gdXBkYXRlQ3VycmVudFZpZXcoJ3JlZi1jZnAyJyl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ3LVsxMDBweF0gaC1bNDBweF0gYmctZ3JhZGllbnQtdG8tYiBmcm9tLVsjZmZkNzczXSB0by1bI2U3YWEyOV0gcm91bmRlZC1zbSBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciB0ZXh0LWJsYWNrIGZvbnQtYm9sZCBzaGFkb3ctbGdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICDkuIvkuIDkuKpcclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICBjYXNlICdyZWYtY2ZwMic6XHJcbiAgICAgICAgICAgIGNhc2UgJ3JlZi1jZnA0JzpcclxuICAgICAgICAgICAgY2FzZSAncmVmLWNmcDUnOlxyXG4gICAgICAgICAgICBjYXNlICdyZWYtY2ZwNic6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaC1bNjBweF0gYmctWyMzMDMwMzBdIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktZW5kIHB4LTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHVwZGF0ZUN1cnJlbnRWaWV3KGByZWYtY2ZwJHtwYXJzZUludCh2aWV3LnNsaWNlKC0xKSkgKyAxfWApfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidy1bMTAwcHhdIGgtWzQwcHhdIGJnLWdyYWRpZW50LXRvLWIgZnJvbS1bI2ZmZDc3M10gdG8tWyNlN2FhMjldIHJvdW5kZWQtc20gZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgdGV4dC1ibGFjayBmb250LWJvbGQgc2hhZG93LWxnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAg5LiL5LiA5LiqXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgKTtcclxuXHJcbiAgICAgICAgICAgIGNhc2UgJ3JlZi1jZnAtdHJjJzpcclxuICAgICAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJoLVs2MHB4XSBiZy1bIzMwMzAzMF0gZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIHB4LTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3Nob3dSZXRyeUJ1dHRvbnMgPyAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlZkNmcFJlZkJ1dHRvbkNsaWNrKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInctWzEwMHB4XSBoLVs0MHB4XSBiZy1ncmFkaWVudC10by1iIGZyb20tWyNmZmQ3NzNdIHRvLVsjZTdhYTI5XSByb3VuZGVkLXNtIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHRleHQtYmxhY2sgZm9udC1ib2xkIHNoYWRvdy1sZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDph43mlrDpqozor4FcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVDdXJyZW50VmlldygncmVmLWNmcCcpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ3LVsxMDBweF0gaC1bNDBweF0gYmctZ3JhZGllbnQtdG8tYiBmcm9tLVsjNjU2NTY1XSB0by1bIzMxMzQzMV0gcm91bmRlZC1zbSBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciB0ZXh0LXdoaXRlIGZvbnQtYm9sZCBzaGFkb3ctbGdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg6YeN5paw5byA5aeLXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Lz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleC0xXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlQ3VycmVudFZpZXcoJ3JlZi1jZnA4Jyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidy1bMTAwcHhdIGgtWzQwcHhdIGJnLWdyYWRpZW50LXRvLWIgZnJvbS1bIzY1NjU2NV0gdG8tWyMzMTM0MzFdIHJvdW5kZWQtc20gZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgdGV4dC13aGl0ZSBmb250LWJvbGQgc2hhZG93LWxnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAg5LiL5LiA5LiqXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgKTtcclxuXHJcbiAgICAgICAgICAgIGNhc2UgJ3JlZi1jZnAzJzpcclxuICAgICAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJoLVs2MHB4XSBiZy1bIzMwMzAzMF0gZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1lbmQgcHgtNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17UmVmQ2ZwQnV0dG9uQ2xpY2t9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ3LVsxMDBweF0gaC1bNDBweF0gYmctZ3JhZGllbnQtdG8tYiBmcm9tLVsjZmZkNzczXSB0by1bI2U3YWEyOV0gcm91bmRlZC1zbSBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciB0ZXh0LWJsYWNrIGZvbnQtYm9sZCBzaGFkb3ctbGdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICDorr7nva7lj4LnhadcclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICApO1xyXG5cclxuICAgICAgICAgICAgY2FzZSAncmVmLWNmcDcnOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImgtWzYwcHhdIGJnLVsjMzAzMDMwXSBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWVuZCBweC00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXtSZWZDZnBSZWZCdXR0b25DbGlja31cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInctWzEwMHB4XSBoLVs0MHB4XSBiZy1ncmFkaWVudC10by1iIGZyb20tWyNmZmQ3NzNdIHRvLVsjZTdhYTI5XSByb3VuZGVkLXNtIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHRleHQtYmxhY2sgZm9udC1ib2xkIHNoYWRvdy1sZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSQ+mqjOivgVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICk7XHJcblxyXG4gICAgICAgICAgICBjYXNlICdyZWYtY2ZwOCc6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaC1bNjBweF0gYmctWyMzMDMwMzBdIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktZW5kIHB4LTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gdXBkYXRlQ3VycmVudFZpZXcoJ3JlZi1jZnAtb2snKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInctWzEwMHB4XSBoLVs0MHB4XSBiZy1ncmFkaWVudC10by1iIGZyb20tWyNmZmQ3NzNdIHRvLVsjZTdhYTI5XSByb3VuZGVkLXNtIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHRleHQtYmxhY2sgZm9udC1ib2xkIHNoYWRvdy1sZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIOS4i+S4gOS4qlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICBcclxuXHJcbiAgICAgICAgICAgIGNhc2UgJ3JlZi1vZnAnOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImgtWzYwcHhdIGJnLVsjMzAzMDMwXSBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWVuZCBweC00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXtoYW5kbGVSZWZPRlBUZXN0fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidy1bMTAwcHhdIGgtWzQwcHhdIGJnLWdyYWRpZW50LXRvLWIgZnJvbS1bI2ZmZDc3M10gdG8tWyNlN2FhMjldIHJvdW5kZWQtc20gZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgdGV4dC1ibGFjayBmb250LWJvbGQgc2hhZG93LWxnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAg5rWL6K+VXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJoLVs2MHB4XSBiZy1bIzMwMzAzMF0gZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1lbmQgcHgtNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gdXBkYXRlQ3VycmVudFZpZXcoJ3JlZi1vZnAtc2V0dGluZycpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidy1bMTAwcHhdIGgtWzQwcHhdIGJnLWdyYWRpZW50LXRvLWIgZnJvbS1bI2ZmZDc3M10gdG8tWyNlN2FhMjldIHJvdW5kZWQtc20gZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgdGV4dC1ibGFjayBmb250LWJvbGQgc2hhZG93LWxnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAg5rWL6K+VXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgKTtcclxuXHJcbiAgICAgICAgICAgIGNhc2UgJ3JlZi1vZnAtb2snOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImgtWzYwcHhdIGJnLVsjMzAzMDMwXSBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWVuZCBweC00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBuYXZpZ2F0ZVRvKCdob21lJywgJ21haW4nKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInctWzEwMHB4XSBoLVs0MHB4XSBiZy1ncmFkaWVudC10by1iIGZyb20tWyNmZmQ3NzNdIHRvLVsjZTdhYTI5XSByb3VuZGVkLXNtIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHRleHQtYmxhY2sgZm9udC1ib2xkIHNoYWRvdy1sZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIOS/neWtmFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICk7XHJcblxyXG5cclxuXHJcbiAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IHJlbmRlclRpdGxlQmFyID0gKCkgPT4ge1xyXG4gICAgICAgIHN3aXRjaCAodmlldykge1xyXG4gICAgICAgICAgICBjYXNlICdyZWYtY29wcGVyLXNldHRpbmcnOlxyXG4gICAgICAgICAgICBjYXNlICdyZWYtY2ZwLXNldHRpbmcnOlxyXG4gICAgICAgICAgICBjYXNlICdyZWYtY2ZwLXNldHRyYyc6XHJcbiAgICAgICAgICAgIGNhc2UgJ3JlZi1jZnAtc2V0dHJjLW5vNTAnOlxyXG4gICAgICAgICAgICBjYXNlICdyZWYtb2ZwLXNldHRpbmcnOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIDxUaXRsZUJhciB0aXRsZT1cIui/m+eoi1wiIGJhY2tUbz1cInRvb2xzXCIgdmlldz1cIm1haW5cIiAvPjtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIGNhc2UgJ3JlZi1jb3BwZXItb2snOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIDxUaXRsZUJhciB0aXRsZT1cIuiuvue9ruWfuuWHhlwiICAvPjtcclxuICAgICAgICAgICAgY2FzZSAncmVmLWNmcC1vayc6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gPFRpdGxlQmFyIHRpdGxlPVwi6K6+572u5Y+C54WnXCIgLz47XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBjYXNlICdyZWYtY29wcGVyJzpcclxuICAgICAgICAgICAgICAgIHJldHVybiA8VGl0bGVCYXIgdGl0bGU9XCLorr7nva7ln7rlh4ZcIiBiYWNrVG89XCJ0b29sc1wiIHZpZXc9XCJtYWluXCIgLz47XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBjYXNlICdyZWYtY2ZwJzpcclxuICAgICAgICAgICAgY2FzZSAncmVmLWNmcDInOlxyXG4gICAgICAgICAgICBjYXNlICdyZWYtY2ZwMyc6XHJcbiAgICAgICAgICAgIGNhc2UgJ3JlZi1jZnA0JzpcclxuICAgICAgICAgICAgY2FzZSAncmVmLWNmcDUnOlxyXG4gICAgICAgICAgICBjYXNlICdyZWYtY2ZwNic6XHJcbiAgICAgICAgICAgIGNhc2UgJ3JlZi1jZnA3JzpcclxuICAgICAgICAgICAgY2FzZSAncmVmLWNmcDgnOlxyXG4gICAgICAgICAgICBjYXNlICdyZWYtY2ZwLXRyYyc6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gPFRpdGxlQmFyIHRpdGxlPVwi6K6+572u5Y+C54WnXCIgYmFja1RvPVwidG9vbHNcIiB2aWV3PVwibWFpblwiIC8+O1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgY2FzZSAncmVmLW9mcCc6XHJcbiAgICAgICAgICAgIGNhc2UgJ3JlZi1vZnAtb2snOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIDxUaXRsZUJhciB0aXRsZT1cIuiuvue9ruihpeWBv1wiIGJhY2tUbz1cInRvb2xzXCIgdmlldz1cIm1haW5cIiAvPjtcclxuICAgICAgICAgICAgY2FzZSAndG9uZSc6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gPFRpdGxlQmFyIHRpdGxlPVwi6Z+z6aKR5Y+R55Sf5ZmoXCIgYmFja1RvPVwidG9vbHNcIiB2aWV3PVwibWFpblwiIC8+O1xyXG4gICAgICAgICAgICBjYXNlICd2ZmwnOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIDxUaXRsZUJhciB0aXRsZT1cIuWPr+inhuaVhemanOWumuS9jVwiIGJhY2tUbz1cInRvb2xzXCIgdmlldz1cIm1haW5cIiAvPjtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gPFRpdGxlQmFyIHRpdGxlPVwi5bel5YW3XCIgYmFja1RvPVwiaG9tZVwiIHZpZXc9XCJtYWluXCIgLz47XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICByZXR1cm4gKFxyXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy1mdWxsIGgtZnVsbCBmbGV4IGZsZXgtY29sIG92ZXJmbG93LWhpZGRlblwiPlxyXG4gICAgICAgICAgICA8U3RhdHVzQmFyIC8+XHJcbiAgICAgICAgICAgIHtyZW5kZXJUaXRsZUJhcigpfVxyXG4gICAgICAgICAgICB7cmVuZGVyQ29udGVudCgpfVxyXG4gICAgICAgICAgICB7cmVuZGVyRm9vdGVyKCl9XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICApO1xyXG59XHJcbiJdLCJuYW1lcyI6WyJ1c2VTdGF0ZSIsInVzZUVmZmVjdCIsInVzZVJlZiIsIkltYWdlIiwiU3RhdHVzQmFyIiwiVGl0bGVCYXIiLCJTdWJUaXRsZUJhciIsInVzZURpc3BsYXlTdG9yZSIsInVzZURldmljZVN0b3JlIiwiQVBJX1VSTFMiLCJnZXRBc3NldFVybCIsInVzZUF1ZGlvIiwiVG9vbHMiLCJ2aWV3IiwiZ2V0U3RhdGUiLCJuYXZpZ2F0aW9uIiwiY3VycmVudCIsIm5hdmlnYXRlVG8iLCJ1cGRhdGVDdXJyZW50VmlldyIsImdldEN1cnJlbnRQcm9qZWN0IiwidXBkYXRhUmVmIiwic2V0VG9hc3RNZXNzYWdlIiwiY3VycmVudFByb2plY3QiLCJjdXJyZW50Q29uZmlnIiwidGVzdENvbmZpZ3MiLCJzZWxlY3RlZEluZGV4ZXMiLCJ0ZXN0Q29uZmlnSW5kZXgiLCJmYXVsdFNjZW5hcmlvIiwiZmF1bHRTY2VuYXJpb3MiLCJjb25uZWN0aW9uU3RhdHVzIiwic2V0VG90YWxUb2FzdE1lc3NhZ2UiLCJtYWluUG9ydFN0YXJ0IiwibWFpblBhdGhzIiwiT2JqZWN0Iiwia2V5cyIsInN0YXJ0IiwibWFpblBvcnRFbmQiLCJlbmQiLCJtYWlucGF0aCIsInBhdGgiLCJtYWluVkZMRW5kIiwiY29ubmVjdGlvbk1hcCIsInNldENvbm5lY3Rpb25NYXAiLCJjb25uZWN0aW9uTWFwUmVmIiwiY2FibGVUeXBlIiwicGFyYW1zIiwiaXNNdWx0aU1vZGUiLCJpbmNsdWRlcyIsInBsYXkiLCJ2ZmxTdGF0dXMiLCJzZXRWZmxTdGF0dXMiLCJmZXRjaENvbm5lY3Rpb25NYXAiLCJhcGlVcmwiLCJDT05ORUNUSU9OIiwiTUFQX1dJVEhfU0NFTkUiLCJyZXNwb25zZSIsImZldGNoIiwib2siLCJFcnJvciIsImRhdGEiLCJqc29uIiwiZXJyb3IiLCJjb25zb2xlIiwiaGFuZGxlVmZsIiwibG9nIiwiY29ubmVjdGVkUG9ydCIsInRhcmdldFBvcnRJZCIsImNvbm5lY3RlZFRvIiwiZm91bmRLZXkiLCJmaW5kIiwia2V5IiwidGVzdCIsInJlcGxhY2UiLCJ0YXJnZXRFbGVtZW50IiwiZG9jdW1lbnQiLCJnZXRFbGVtZW50QnlJZCIsImNsYXNzTGlzdCIsImNvbnRhaW5zIiwicmVjdCIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsInJlZERvdCIsImNyZWF0ZUVsZW1lbnQiLCJzdHlsZSIsImNzc1RleHQiLCJ0b3AiLCJoZWlnaHQiLCJsZWZ0Iiwid2lkdGgiLCJ0ZXh0Q29udGVudCIsImhlYWQiLCJhcHBlbmRDaGlsZCIsImJvZHkiLCJyZW1vdmVDaGlsZCIsIlNldHZmbFN0YXR1cyIsImN1cnJlbnRDb25uZWN0ZWRQb3J0UmVmIiwiY2xlYW51cCIsIlJlZkNvcHBlckJ1dHRvbkNsaWNrIiwiUmVGQ29wcGVyVXBkYXRhIiwic3RhdHVzIiwiUmVmQ2ZwQnV0dG9uQ2xpY2siLCJyZW1vdGVQYXRocyIsIm1haW5PdXRFeGlzdHMiLCJtYWluSW5FeGlzdHMiLCJyZW1vdGVPdXRFeGlzdHMiLCJyZW1vdGVJbkV4aXN0cyIsIm1haW5PdXRFbmQiLCJtYWluSW5FbmQiLCJyZW1vdGVPdXRFbmQiLCJyZW1vdGVJbkVuZCIsImlzQ29ubmVjdGlvbkNvcnJlY3QiLCJzaG93UmV0cnlCdXR0b25zIiwic2V0U2hvd1JldHJ5QnV0dG9ucyIsIlJlZkNmcFJlZkJ1dHRvbkNsaWNrIiwibWFpblRyY0NvdW50IiwiZmlsdGVyIiwicCIsImxlbmd0aCIsInJlbW90ZVRyY0NvdW50IiwiUmVGQ0ZQVXBkYXRhIiwiY29ubmVjdFN0YXR1cyIsIlJlRk9GUFVwZGF0YSIsInN0YXR1c1ZhbHVlIiwib2ZwQmFja2dyb3VuZCIsImhhbmRsZVJlZk9GUFRlc3QiLCJpc0xlYWRPbmx5IiwiZmlyc3RQb3J0IiwiaGFzSW52YWxpZEZpYmVyIiwic29tZSIsInRpbWVyIiwic2V0VGltZW91dCIsImNsZWFyVGltZW91dCIsInNldE9mcEJhY2tncm91bmQiLCJoYW5kbGVDb21wZW5zYXRpb25DaGFuZ2UiLCJ2YWx1ZSIsInJlbmRlckNvbnRlbnQiLCJkaXYiLCJjbGFzc05hbWUiLCJtb2R1bGVUeXBlIiwiYnV0dG9uIiwib25DbGljayIsInNyYyIsImFsdCIsImZpbGwiLCJzaXplcyIsInNsaWNlIiwibGFiZWwiLCJpbnB1dCIsInR5cGUiLCJuYW1lIiwiZGVmYXVsdENoZWNrZWQiLCJvbkNoYW5nZSIsImUiLCJ0YXJnZXQiLCJ0aXRsZSIsInJlbmRlckZvb3RlciIsInBhcnNlSW50IiwicmVuZGVyVGl0bGVCYXIiLCJiYWNrVG8iXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(pages-dir-node)/./src/components/dsxpage/fluke/Tools.js\n"); /***/ }), /***/ "(pages-dir-node)/./src/components/dsxpage/general/CableId.js": /*!***************************************************!*\ !*** ./src/components/dsxpage/general/CableId.js ***! \***************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; eval("__webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ CableId)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"react/jsx-dev-runtime\");\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 */ \"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _components_lib_StatusBar__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/components/lib//StatusBar */ \"(pages-dir-node)/./src/components/lib/StatusBar.js\");\n/* harmony import */ var _components_lib_TitleBar__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/components/lib//TitleBar */ \"(pages-dir-node)/./src/components/lib/TitleBar.js\");\n/* harmony import */ var _components_lib_Keyboard__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/components/lib//Keyboard */ \"(pages-dir-node)/./src/components/lib/Keyboard.js\");\n/* harmony import */ var _store_displayStore__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/store/displayStore */ \"(pages-dir-node)/./src/store/displayStore.js\");\nvar __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_components_lib_StatusBar__WEBPACK_IMPORTED_MODULE_2__, _components_lib_TitleBar__WEBPACK_IMPORTED_MODULE_3__, _components_lib_Keyboard__WEBPACK_IMPORTED_MODULE_4__, _store_displayStore__WEBPACK_IMPORTED_MODULE_5__]);\n([_components_lib_StatusBar__WEBPACK_IMPORTED_MODULE_2__, _components_lib_TitleBar__WEBPACK_IMPORTED_MODULE_3__, _components_lib_Keyboard__WEBPACK_IMPORTED_MODULE_4__, _store_displayStore__WEBPACK_IMPORTED_MODULE_5__] = __webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__);\n\n\n\n\n\n\nfunction CableId() {\n const [showKeyboard, setShowKeyboard] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(true);\n const [cursorPosition, setCursorPosition] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(0);\n const [inputValue, setInputValue] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)('');\n const [inputValue2, setInputValue2] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)('');\n const [activeInput, setActiveInput] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(1); // 1 表示第一个输入框,2 表示第二个输入框\n const { getCurrentProject, getCurrentCableId, getCurrentCableId2, updateProject, goBack } = (0,_store_displayStore__WEBPACK_IMPORTED_MODULE_5__[\"default\"])();\n const currentProject = getCurrentProject();\n // 获取当前选中的电缆ID\n const currentCableId = getCurrentCableId().name;\n // 获取当前选中的电缆ID2\n const currentCableId2 = getCurrentCableId2().name;\n const { view } = _store_displayStore__WEBPACK_IMPORTED_MODULE_5__[\"default\"].getState().navigation.current;\n // 只在cfp视图下初始化第二个输入框\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)({\n \"CableId.useEffect\": ()=>{\n setInputValue(currentCableId);\n if (view === 'cfp') {\n setInputValue2(currentCableId2);\n }\n }\n }[\"CableId.useEffect\"], [\n currentCableId,\n currentCableId2,\n view\n ]);\n // 计算下一个序号的ID\n const getNextId = (currentId)=>{\n if (!currentId) return '';\n // 检查是否以数字结尾\n const numMatch = currentId.match(/^(.*?)(\\d+)$/);\n if (numMatch) {\n const [, prefix, num] = numMatch;\n const nextNum = String(Number(num) + 1).padStart(num.length, '0');\n return prefix + nextNum;\n }\n // 检查是否以字母结尾\n const letterMatch = currentId.match(/^(.*?)([a-zA-Z]+)$/);\n if (letterMatch) {\n const [, prefix, letters] = letterMatch;\n // 将字母转换为数组以便处理\n const letterArray = letters.split('');\n let carry = true;\n // 从右向左处理每个字母\n for(let i = letterArray.length - 1; i >= 0 && carry; i--){\n if (letterArray[i] === 'z') {\n letterArray[i] = 'a';\n carry = true;\n } else if (letterArray[i] === 'Z') {\n letterArray[i] = 'A';\n carry = true;\n } else {\n letterArray[i] = String.fromCharCode(letterArray[i].charCodeAt(0) + 1);\n carry = false;\n }\n }\n // 如果还有进位,说明需要在前面添加一个字母\n if (carry) {\n if (letters[0] >= 'a' && letters[0] <= 'z') {\n letterArray.unshift('a');\n } else {\n letterArray.unshift('A');\n }\n }\n return prefix + letterArray.join('');\n }\n // 如果既不是数字也不是字母结尾,直接返回原值\n return currentId;\n };\n // 只在cfp视图下自动更新第二个输入框\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)({\n \"CableId.useEffect\": ()=>{\n if (view === 'cfp' && inputValue) {\n setInputValue2(getNextId(inputValue));\n }\n }\n }[\"CableId.useEffect\"], [\n inputValue,\n view\n ]);\n const handleComplete = ()=>{\n if (view === 'main' && !inputValue.trim()) return;\n if (view === 'cfp' && (!inputValue.trim() || !inputValue2.trim())) return;\n const currentIndex = _store_displayStore__WEBPACK_IMPORTED_MODULE_5__[\"default\"].getState().selectedIndexes.projectIndex;\n const currentCableIds = currentProject?.cableIds || [];\n let cableIds;\n if (view === 'main') {\n // 在main视图下,只更新选中的ID,保留其他ID\n const selectedId = getCurrentCableId().id;\n cableIds = currentCableIds.map((cable)=>cable.id === selectedId ? {\n ...cable,\n name: inputValue.trim()\n } : cable);\n } else {\n cableIds = [\n {\n id: '1',\n name: inputValue.trim()\n },\n {\n id: '2',\n name: inputValue2.trim()\n }\n ];\n }\n updateProject(currentIndex, {\n cableIds\n });\n goBack();\n };\n const renderContent = ()=>{\n switch(view){\n case 'main':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 bg-[#D5DFEB] p-4 flex flex-col\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"relative mb-4 cursor-pointer\",\n onClick: ()=>setShowKeyboard(true),\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"text\",\n className: \"w-full h-[50px] bg-[#ffffe1] rounded-sm p-4 text-black\",\n value: inputValue,\n placeholder: \"请输入线缆ID\",\n onChange: (e)=>{\n setInputValue(e.target.value);\n setCursorPosition(e.target.selectionStart);\n },\n onClick: (e)=>{\n setShowKeyboard(true);\n setCursorPosition(e.target.selectionStart);\n },\n onFocus: (e)=>{\n // 保存光标位置\n const cursorPosition = e.target.selectionStart;\n e.target.setSelectionRange(cursorPosition, cursorPosition);\n }\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/CableId.js\",\n lineNumber: 131,\n columnNumber: 29\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/CableId.js\",\n lineNumber: 127,\n columnNumber: 25\n }, this),\n showKeyboard && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_Keyboard__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n value: inputValue,\n cursorPosition: cursorPosition,\n onChange: (newValue, newPosition)=>{\n setInputValue(newValue);\n setCursorPosition(newPosition);\n },\n onComplete: ()=>{\n setShowKeyboard(false);\n }\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/CableId.js\",\n lineNumber: 152,\n columnNumber: 29\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/CableId.js\",\n lineNumber: 126,\n columnNumber: 21\n }, this);\n case 'cfp':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 bg-[#D5DFEB] p-4 flex flex-col\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mb-8\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mb-1 text-white text-sm\",\n children: \"输出光纤ID1\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/CableId.js\",\n lineNumber: 171,\n columnNumber: 29\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"relative cursor-pointer\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"text\",\n className: \"w-full h-[50px] bg-[#ffffe1] rounded-sm px-4 text-black overflow-x-auto whitespace-nowrap\",\n value: inputValue,\n placeholder: \"请输入线缆ID1\",\n onChange: (e)=>{\n setInputValue(e.target.value);\n setCursorPosition(e.target.selectionStart);\n },\n onClick: (e)=>{\n setActiveInput(1);\n setShowKeyboard(true);\n setCursorPosition(e.target.selectionStart);\n },\n onFocus: (e)=>{\n const cursorPosition = e.target.selectionStart;\n e.target.setSelectionRange(cursorPosition, cursorPosition);\n }\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/CableId.js\",\n lineNumber: 173,\n columnNumber: 33\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/CableId.js\",\n lineNumber: 172,\n columnNumber: 29\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/CableId.js\",\n lineNumber: 170,\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: \"mb-1 text-white text-sm\",\n children: \"输入光纤ID2\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/CableId.js\",\n lineNumber: 195,\n columnNumber: 29\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"relative cursor-pointer\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"text\",\n className: \"w-full h-[50px] bg-[#ffffe1] rounded-sm px-4 text-black overflow-x-auto whitespace-nowrap\",\n value: inputValue2,\n placeholder: \"请输入线缆ID2\",\n onChange: (e)=>{\n setInputValue2(e.target.value);\n setCursorPosition(e.target.selectionStart);\n },\n onClick: (e)=>{\n setActiveInput(2);\n setShowKeyboard(true);\n setCursorPosition(e.target.selectionStart);\n },\n onFocus: (e)=>{\n const cursorPosition = e.target.selectionStart;\n e.target.setSelectionRange(cursorPosition, cursorPosition);\n }\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/CableId.js\",\n lineNumber: 197,\n columnNumber: 33\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/CableId.js\",\n lineNumber: 196,\n columnNumber: 29\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/CableId.js\",\n lineNumber: 194,\n columnNumber: 25\n }, this),\n showKeyboard && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_Keyboard__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n value: activeInput === 1 ? inputValue : inputValue2,\n cursorPosition: cursorPosition,\n onChange: (newValue, newPosition)=>{\n if (activeInput === 1) {\n setInputValue(newValue);\n } else {\n setInputValue2(newValue);\n }\n setCursorPosition(newPosition);\n },\n onComplete: ()=>{\n setShowKeyboard(false);\n }\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/CableId.js\",\n lineNumber: 219,\n columnNumber: 29\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/CableId.js\",\n lineNumber: 169,\n columnNumber: 21\n }, this);\n default:\n return null;\n }\n };\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full h-full flex flex-col overflow-hidden\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_StatusBar__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {}, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/CableId.js\",\n lineNumber: 245,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_TitleBar__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n title: \"更改ID\",\n backTo: _store_displayStore__WEBPACK_IMPORTED_MODULE_5__[\"default\"].getState().navigation.previous?.name || 'home',\n view: _store_displayStore__WEBPACK_IMPORTED_MODULE_5__[\"default\"].getState().navigation.previous?.view || 'main'\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/CableId.js\",\n lineNumber: 246,\n columnNumber: 13\n }, this),\n renderContent(),\n view === 'main' && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[60px] bg-[#132843] flex items-center justify-end px-8\",\n children: !showKeyboard && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: handleComplete,\n className: \"w-[100px] h-[40px] bg-gradient-to-b from-[#b6dae7] to-[#65dfff] rounded-sm flex items-center justify-center text-black font-bold shadow-lg\",\n children: \"完成\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/CableId.js\",\n lineNumber: 254,\n columnNumber: 40\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/CableId.js\",\n lineNumber: 253,\n columnNumber: 17\n }, this),\n view === 'cfp' && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[60px] bg-[#132843] flex items-center justify-end px-8\",\n children: !showKeyboard && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: handleComplete,\n className: \"w-[100px] h-[40px] rounded-sm flex items-center justify-center text-white font-bold shadow-lg\",\n children: \"完成\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/CableId.js\",\n lineNumber: 264,\n columnNumber: 40\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/CableId.js\",\n lineNumber: 263,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/CableId.js\",\n lineNumber: 244,\n columnNumber: 9\n }, this);\n}\n\n__webpack_async_result__();\n} catch(e) { __webpack_async_result__(e); } });//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHBhZ2VzLWRpci1ub2RlKS8uL3NyYy9jb21wb25lbnRzL2RzeHBhZ2UvZ2VuZXJhbC9DYWJsZUlkLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBbUQ7QUFDQztBQUNGO0FBQ0E7QUFDQztBQUVwQyxTQUFTTztJQUNwQixNQUFNLENBQUNDLGNBQWNDLGdCQUFnQixHQUFHUiwrQ0FBUUEsQ0FBQztJQUNqRCxNQUFNLENBQUNTLGdCQUFnQkMsa0JBQWtCLEdBQUdWLCtDQUFRQSxDQUFDO0lBQ3JELE1BQU0sQ0FBQ1csWUFBWUMsY0FBYyxHQUFHWiwrQ0FBUUEsQ0FBQztJQUM3QyxNQUFNLENBQUNhLGFBQWFDLGVBQWUsR0FBR2QsK0NBQVFBLENBQUM7SUFDL0MsTUFBTSxDQUFDZSxhQUFhQyxlQUFlLEdBQUdoQiwrQ0FBUUEsQ0FBQyxJQUFJLHdCQUF3QjtJQUMzRSxNQUFNLEVBQ0ZpQixpQkFBaUIsRUFDakJDLGlCQUFpQixFQUNqQkMsa0JBQWtCLEVBQ2xCQyxhQUFhLEVBQ2JDLE1BQU0sRUFDVCxHQUFHaEIsK0RBQWVBO0lBRW5CLE1BQU1pQixpQkFBaUJMO0lBQ3ZCLGNBQWM7SUFDZCxNQUFNTSxpQkFBaUJMLG9CQUFvQk0sSUFBSTtJQUMvQyxlQUFlO0lBQ2YsTUFBTUMsa0JBQWtCTixxQkFBcUJLLElBQUk7SUFFakQsTUFBTSxFQUFFRSxJQUFJLEVBQUUsR0FBR3JCLG9FQUF3QixHQUFHdUIsVUFBVSxDQUFDQyxPQUFPO0lBSS9ELG9CQUFvQjtJQUNuQjVCLGdEQUFTQTs2QkFBQztZQUNOVyxjQUFjVztZQUNkLElBQUlHLFNBQVMsT0FBTztnQkFDaEJaLGVBQWVXO1lBQ25CO1FBQ0o7NEJBQUc7UUFBQ0Y7UUFBZ0JFO1FBQWlCQztLQUFLO0lBRTFDLGFBQWE7SUFDYixNQUFNSSxZQUFZLENBQUNDO1FBQ2YsSUFBSSxDQUFDQSxXQUFXLE9BQU87UUFFdkIsWUFBWTtRQUNaLE1BQU1DLFdBQVdELFVBQVVFLEtBQUssQ0FBQztRQUNqQyxJQUFJ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OzswQkFDViw4REFBQ0MsZ0VBQVFBO2dCQUNMNEUsT0FBTTtnQkFDTkMsUUFBUTNFLG9FQUF3QixHQUFHdUIsVUFBVSxDQUFDcUQsUUFBUSxFQUFFekQsUUFBUTtnQkFDaEVFLE1BQU1yQixvRUFBd0IsR0FBR3VCLFVBQVUsQ0FBQ3FELFFBQVEsRUFBRXZELFFBQVE7Ozs7OztZQUVqRW9DO1lBQ0FwQyxTQUFTLHdCQUNOLDhEQUFDcUM7Z0JBQUlDLFdBQVU7MEJBQ1YsQ0FBQ3pELDhCQUFpQiw4REFBQzJFO29CQUNoQmpCLFNBQVNkO29CQUNUYSxXQUFVOzhCQUNiOzs7Ozs7Ozs7OztZQUtSdEMsU0FBUyx1QkFDTiw4REFBQ3FDO2dCQUFJQyxXQUFVOzBCQUNWLENBQUN6RCw4QkFBaUIsOERBQUMyRTtvQkFDaEJqQixTQUFTZDtvQkFDVGEsV0FBVTs4QkFDYjs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFPckIiLCJzb3VyY2VzIjpbIi9vcHQvZGV2L2VzdC1kc3gvc3JjL2NvbXBvbmVudHMvZHN4cGFnZS9nZW5lcmFsL0NhYmxlSWQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlLCB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCc7XHJcbmltcG9ydCBTdGF0dXNCYXIgZnJvbSAnQC9jb21wb25lbnRzL2xpYi8vU3RhdHVzQmFyJztcclxuaW1wb3J0IFRpdGxlQmFyIGZyb20gJ0AvY29tcG9uZW50cy9saWIvL1RpdGxlQmFyJztcclxuaW1wb3J0IEtleWJvYXJkIGZyb20gJ0AvY29tcG9uZW50cy9saWIvL0tleWJvYXJkJztcclxuaW1wb3J0IHVzZURpc3BsYXlTdG9yZSBmcm9tICdAL3N0b3JlL2Rpc3BsYXlTdG9yZSc7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBDYWJsZUlkKCkge1xyXG4gICAgY29uc3QgW3Nob3dLZXlib2FyZCwgc2V0U2hvd0tleWJvYXJkXSA9IHVzZVN0YXRlKHRydWUpO1xyXG4gICAgY29uc3QgW2N1cnNvclBvc2l0aW9uLCBzZXRDdXJzb3JQb3NpdGlvbl0gPSB1c2VTdGF0ZSgwKTtcclxuICAgIGNvbnN0IFtpbnB1dFZhbHVlLCBzZXRJbnB1dFZhbHVlXSA9IHVzZVN0YXRlKCcnKTtcclxuICAgIGNvbnN0IFtpbnB1dFZhbHVlMiwgc2V0SW5wdXRWYWx1ZTJdID0gdXNlU3RhdGUoJycpO1xyXG4gICAgY29uc3QgW2FjdGl2ZUlucHV0LCBzZXRBY3RpdmVJbnB1dF0gPSB1c2VTdGF0ZSgxKTsgLy8gMSDooajnpLrnrKzkuIDkuKrovpPlhaXmoYbvvIwyIOihqOekuuesrOS6jOS4qui+k+WFpeahhlxyXG4gICAgY29uc3Qge1xyXG4gICAgICAgIGdldEN1cnJlbnRQcm9qZWN0LFxyXG4gICAgICAgIGdldEN1cnJlbnRDYWJsZUlkLFxyXG4gICAgICAgIGdldEN1cnJlbnRDYWJsZUlkMixcclxuICAgICAgICB1cGRhdGVQcm9qZWN0LFxyXG4gICAgICAgIGdvQmFja1xyXG4gICAgfSA9IHVzZURpc3BsYXlTdG9yZSgpO1xyXG5cclxuICAgIGNvbnN0IGN1cnJlbnRQcm9qZWN0ID0gZ2V0Q3VycmVudFByb2plY3QoKTtcclxuICAgIC8vIOiOt+WPluW9k+WJjemAieS4reeahOeUtee8hklEXHJcbiAgICBjb25zdCBjdXJyZW50Q2FibGVJZCA9IGdldEN1cnJlbnRDYWJsZUlkKCkubmFtZTtcclxuICAgIC8vIOiOt+WPluW9k+WJjemAieS4reeahOeUtee8hklEMlxyXG4gICAgY29uc3QgY3VycmVudENhYmxlSWQyID0gZ2V0Q3VycmVudENhYmxlSWQyKCkubmFtZTtcclxuXHJcbiAgICBjb25zdCB7IHZpZXcgfSA9IHVzZURpc3BsYXlTdG9yZS5nZXRTdGF0ZSgpLm5hdmlnYXRpb24uY3VycmVudDtcclxuXHJcblxyXG5cclxuICAgLy8g5Y+q5ZyoY2Zw6KeG5Zu+5LiL5Yid5aeL5YyW56ys5LqM5Liq6L6T5YWl5qGGXHJcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xyXG4gICAgICAgIHNldElucHV0VmFsdWUoY3VycmVudENhYmxlSWQpO1xyXG4gICAgICAgIGlmICh2aWV3ID09PSAnY2ZwJykge1xyXG4gICAgICAgICAgICBzZXRJbnB1dFZhbHVlMihjdXJyZW50Q2FibGVJZDIpO1xyXG4gICAgICAgIH1cclxuICAgIH0sIFtjdXJyZW50Q2FibGVJZCwgY3VycmVudENhYmxlSWQyLCB2aWV3XSk7XHJcblxyXG4gICAgLy8g6K6h566X5LiL5LiA5Liq5bqP5Y+355qESURcclxuICAgIGNvbnN0IGdldE5leHRJZCA9IChjdXJyZW50SWQpID0+IHtcclxuICAgICAgICBpZiAoIWN1cnJlbnRJZCkgcmV0dXJuICcnO1xyXG5cclxuICAgICAgICAvLyDmo4Dmn6XmmK/lkKbku6XmlbDlrZfnu5PlsL5cclxuICAgICAgICBjb25zdCBudW1NYXRjaCA9IGN1cnJlbnRJZC5tYXRjaCgvXiguKj8pKFxcZCspJC8pO1xyXG4gICAgICAgIGlmIChudW1NYXRjaCkge1xyXG4gICAgICAgICAgICBjb25zdCBbLCBwcmVmaXgsIG51bV0gPSBudW1NYXRjaDtcclxuICAgICAgICAgICAgY29uc3QgbmV4dE51bSA9IFN0cmluZyhOdW1iZXIobnVtKSArIDEpLnBhZFN0YXJ0KG51bS5sZW5ndGgsICcwJyk7XHJcbiAgICAgICAgICAgIHJldHVybiBwcmVmaXggKyBuZXh0TnVtO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8g5qOA5p+l5piv5ZCm5Lul5a2X5q+N57uT5bC+XHJcbiAgICAgICAgY29uc3QgbGV0dGVyTWF0Y2ggPSBjdXJyZW50SWQubWF0Y2goL14oLio/KShbYS16QS1aXSspJC8pO1xyXG4gICAgICAgIGlmIChsZXR0ZXJNYXRjaCkge1xyXG4gICAgICAgICAgICBjb25zdCBbLCBwcmVmaXgsIGxldHRlcnNdID0gbGV0dGVyTWF0Y2g7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAvLyDlsIblrZfmr43ovazmjaLkuLrmlbDnu4Tku6Xkvr/lpITnkIZcclxuICAgICAgICAgICAgY29uc3QgbGV0dGVyQXJyYXkgPSBsZXR0ZXJzLnNwbGl0KCcnKTtcclxuICAgICAgICAgICAgbGV0IGNhcnJ5ID0gdHJ1ZTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIC8vIOS7juWPs+WQkeW3puWkhOeQhuavj+S4quWtl+avjVxyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gbGV0dGVyQXJyYXkubGVuZ3RoIC0gMTsgaSA+PSAwICYmIGNhcnJ5OyBpLS0pIHtcclxuICAgICAgICAgICAgICAgIGlmIChsZXR0ZXJBcnJheVtpXSA9PT0gJ3onKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0dGVyQXJyYXlbaV0gPSAnYSc7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FycnkgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChsZXR0ZXJBcnJheVtpXSA9PT0gJ1onKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0dGVyQXJyYXlbaV0gPSAnQSc7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FycnkgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXR0ZXJBcnJheVtpXSA9IFN0cmluZy5mcm9tQ2hhckNvZGUobGV0dGVyQXJyYXlbaV0uY2hhckNvZGVBdCgwKSArIDEpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNhcnJ5ID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIC8vIOWmguaenOi/mOaciei/m+S9je+8jOivtOaYjumcgOimgeWcqOWJjemdoua3u+WKoOS4gOS4quWtl+avjVxyXG4gICAgICAgICAgICBpZiAoY2FycnkpIHtcclxuICAgICAgICAgICAgICAgIGlmIChsZXR0ZXJzWzBdID49ICdhJyAmJiBsZXR0ZXJzWzBdIDw9ICd6Jykge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldHRlckFycmF5LnVuc2hpZnQoJ2EnKTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0dGVyQXJyYXkudW5zaGlmdCgnQScpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICByZXR1cm4gcHJlZml4ICsgbGV0dGVyQXJyYXkuam9pbignJyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyDlpoLmnpzml6LkuI3mmK/mlbDlrZfkuZ/kuI3mmK/lrZfmr43nu5PlsL7vvIznm7TmjqXov5Tlm57ljp/lgLxcclxuICAgICAgICByZXR1cm4gY3VycmVudElkO1xyXG4gICAgfTtcclxuXHJcbiAgICAvLyDlj6rlnKhjZnDop4blm77kuIvoh6rliqjmm7TmlrDnrKzkuozkuKrovpPlhaXmoYZcclxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XHJcbiAgICAgICAgaWYgKHZpZXcgPT09ICdjZnAnICYmIGlucHV0VmFsdWUpIHtcclxuICAgICAgICAgICAgc2V0SW5wdXRWYWx1ZTIoZ2V0TmV4dElkKGlucHV0VmFsdWUpKTtcclxuICAgICAgICB9XHJcbiAgICB9LCBbaW5wdXRWYWx1ZSwgdmlld10pO1xyXG5cclxuICAgIGNvbnN0IGhhbmRsZUNvbXBsZXRlID0gKCkgPT4ge1xyXG4gICAgICAgIGlmICh2aWV3ID09PSAnbWFpbicgJiYgIWlucHV0VmFsdWUudHJpbSgpKSByZXR1cm47XHJcbiAgICAgICAgaWYgKHZpZXcgPT09ICdjZnAnICYmICghaW5wdXRWYWx1ZS50cmltKCkgfHwgIWlucHV0VmFsdWUyLnRyaW0oKSkpIHJldHVybjtcclxuXHJcbiAgICAgICAgY29uc3QgY3VycmVudEluZGV4ID0gdXNlRGlzcGxheVN0b3JlLmdldFN0YXRlKCkuc2VsZWN0ZWRJbmRleGVzLnByb2plY3RJbmRleDtcclxuICAgICAgICBjb25zdCBjdXJyZW50Q2FibGVJZHMgPSBjdXJyZW50UHJvamVjdD8uY2FibGVJZHMgfHwgW107XHJcbiAgICAgICAgXHJcbiAgICAgICAgbGV0IGNhYmxlSWRzO1xyXG4gICAgICAgIGlmICh2aWV3ID09PSAnbWFpbicpIHtcclxuICAgICAgICAgICAgLy8g5ZyobWFpbuinhuWbvuS4i++8jOWPquabtOaWsOmAieS4reeahElE77yM5L+d55WZ5YW25LuWSURcclxuICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRJZCA9IGdldEN1cnJlbnRDYWJsZUlkKCkuaWQ7XHJcbiAgICAgICAgICAgIGNhYmxlSWRzID0gY3VycmVudENhYmxlSWRzLm1hcChjYWJsZSA9PiBcclxuICAgICAgICAgICAgICAgIGNhYmxlLmlkID09PSBzZWxlY3RlZElkID8geyAuLi5jYWJsZSwgbmFtZTogaW5wdXRWYWx1ZS50cmltKCkgfSA6IGNhYmxlXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgY2FibGVJZHMgPSBbXHJcbiAgICAgICAgICAgICAgICB7IGlkOiAnMScsIG5hbWU6IGlucHV0VmFsdWUudHJpbSgpIH0sXHJcbiAgICAgICAgICAgICAgICB7IGlkOiAnMicsIG5hbWU6IGlucHV0VmFsdWUyLnRyaW0oKSB9XHJcbiAgICAgICAgICAgIF07XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB1cGRhdGVQcm9qZWN0KGN1cnJlbnRJbmRleCwgeyBjYWJsZUlkcyB9KTtcclxuICAgICAgICBnb0JhY2soKTtcclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgcmVuZGVyQ29udGVudCA9ICgpID0+IHtcclxuICAgICAgICBzd2l0Y2ggKHZpZXcpIHtcclxuICAgICAgICAgICAgY2FzZSAnbWFpbic6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleC0xIGJnLVsjRDVERkVCXSBwLTQgZmxleCBmbGV4LWNvbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwicmVsYXRpdmUgbWItNCBjdXJzb3ItcG9pbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRTaG93S2V5Ym9hcmQodHJ1ZSl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidy1mdWxsIGgtWzUwcHhdIGJnLVsjZmZmZmUxXSByb3VuZGVkLXNtIHAtNCB0ZXh0LWJsYWNrXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17aW5wdXRWYWx1ZX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIuivt+i+k+WFpee6v+e8hklEXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0SW5wdXRWYWx1ZShlLnRhcmdldC52YWx1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEN1cnNvclBvc2l0aW9uKGUudGFyZ2V0LnNlbGVjdGlvblN0YXJ0KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eyhlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFNob3dLZXlib2FyZCh0cnVlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0Q3Vyc29yUG9zaXRpb24oZS50YXJnZXQuc2VsZWN0aW9uU3RhcnQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Gb2N1cz17KGUpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g5L+d5a2Y5YWJ5qCH5L2N572uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGN1cnNvclBvc2l0aW9uID0gZS50YXJnZXQuc2VsZWN0aW9uU3RhcnQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUudGFyZ2V0LnNldFNlbGVjdGlvblJhbmdlKGN1cnNvclBvc2l0aW9uLCBjdXJzb3JQb3NpdGlvbik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7c2hvd0tleWJvYXJkICYmIChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxLZXlib2FyZCBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXtpbnB1dFZhbHVlfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY3Vyc29yUG9zaXRpb249e2N1cnNvclBvc2l0aW9ufVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhuZXdWYWx1ZSwgbmV3UG9zaXRpb24pID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRJbnB1dFZhbHVlKG5ld1ZhbHVlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRDdXJzb3JQb3NpdGlvbihuZXdQb3NpdGlvbik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Db21wbGV0ZT17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFNob3dLZXlib2FyZChmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgKTtcclxuXHJcbiAgICAgICAgICAgIGNhc2UgJ2NmcCc6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleC0xIGJnLVsjRDVERkVCXSBwLTQgZmxleCBmbGV4LWNvbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1iLThcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibWItMSB0ZXh0LXdoaXRlIHRleHQtc21cIj7ovpPlh7rlhYnnuqRJRDE8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicmVsYXRpdmUgY3Vyc29yLXBvaW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidy1mdWxsIGgtWzUwcHhdIGJnLVsjZmZmZmUxXSByb3VuZGVkLXNtIHB4LTQgdGV4dC1ibGFjayBvdmVyZmxvdy14LWF1dG8gd2hpdGVzcGFjZS1ub3dyYXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17aW5wdXRWYWx1ZX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCLor7fovpPlhaXnur/nvIZJRDFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldElucHV0VmFsdWUoZS50YXJnZXQudmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0Q3Vyc29yUG9zaXRpb24oZS50YXJnZXQuc2VsZWN0aW9uU3RhcnQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0QWN0aXZlSW5wdXQoMSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTaG93S2V5Ym9hcmQodHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRDdXJzb3JQb3NpdGlvbihlLnRhcmdldC5zZWxlY3Rpb25TdGFydCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uRm9jdXM9eyhlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjdXJzb3JQb3NpdGlvbiA9IGUudGFyZ2V0LnNlbGVjdGlvblN0YXJ0O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS50YXJnZXQuc2V0U2VsZWN0aW9uUmFuZ2UoY3Vyc29yUG9zaXRpb24sIGN1cnNvclBvc2l0aW9uKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtYi0xIHRleHQtd2hpdGUgdGV4dC1zbVwiPui+k+WFpeWFiee6pElEMjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyZWxhdGl2ZSBjdXJzb3ItcG9pbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ3LWZ1bGwgaC1bNTBweF0gYmctWyNmZmZmZTFdIHJvdW5kZWQtc20gcHgtNCB0ZXh0LWJsYWNrIG92ZXJmbG93LXgtYXV0byB3aGl0ZXNwYWNlLW5vd3JhcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXtpbnB1dFZhbHVlMn1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCLor7fovpPlhaXnur/nvIZJRDJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldElucHV0VmFsdWUyKGUudGFyZ2V0LnZhbHVlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEN1cnNvclBvc2l0aW9uKGUudGFyZ2V0LnNlbGVjdGlvblN0YXJ0KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KGUpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEFjdGl2ZUlucHV0KDIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U2hvd0tleWJvYXJkKHRydWUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0Q3Vyc29yUG9zaXRpb24oZS50YXJnZXQuc2VsZWN0aW9uU3RhcnQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkZvY3VzPXsoZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY3Vyc29yUG9zaXRpb24gPSBlLnRhcmdldC5zZWxlY3Rpb25TdGFydDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUudGFyZ2V0LnNldFNlbGVjdGlvblJhbmdlKGN1cnNvclBvc2l0aW9uLCBjdXJzb3JQb3NpdGlvbik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3Nob3dLZXlib2FyZCAmJiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8S2V5Ym9hcmQgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2FjdGl2ZUlucHV0ID09PSAxID8gaW5wdXRWYWx1ZSA6IGlucHV0VmFsdWUyfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnNvclBvc2l0aW9uPXtjdXJzb3JQb3NpdGlvbn1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KG5ld1ZhbHVlLCBuZXdQb3NpdGlvbikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYWN0aXZlSW5wdXQgPT09IDEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldElucHV0VmFsdWUobmV3VmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0SW5wdXRWYWx1ZTIobmV3VmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEN1cnNvclBvc2l0aW9uKG5ld1Bvc2l0aW9uKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ29tcGxldGU9eygpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U2hvd0tleWJvYXJkKGZhbHNlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICk7XHJcblxyXG4gICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICByZXR1cm4gKFxyXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy1mdWxsIGgtZnVsbCBmbGV4IGZsZXgtY29sIG92ZXJmbG93LWhpZGRlblwiPlxyXG4gICAgICAgICAgICA8U3RhdHVzQmFyIC8+XHJcbiAgICAgICAgICAgIDxUaXRsZUJhciBcclxuICAgICAgICAgICAgICAgIHRpdGxlPVwi5pu05pS5SURcIiBcclxuICAgICAgICAgICAgICAgIGJhY2tUbz17dXNlRGlzcGxheVN0b3JlLmdldFN0YXRlKCkubmF2aWdhdGlvbi5wcmV2aW91cz8ubmFtZSB8fCAnaG9tZSd9IFxyXG4gICAgICAgICAgICAgICAgdmlldz17dXNlRGlzcGxheVN0b3JlLmdldFN0YXRlKCkubmF2aWdhdGlvbi5wcmV2aW91cz8udmlldyB8fCAnbWFpbid9IFxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICB7cmVuZGVyQ29udGVudCgpfVxyXG4gICAgICAgICAgICB7dmlldyA9PT0gJ21haW4nICYmIChcclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaC1bNjBweF0gYmctWyMxMzI4NDNdIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktZW5kIHB4LThcIj5cclxuICAgICAgICAgICAgICAgICAgICB7IXNob3dLZXlib2FyZCAmJiAoPGJ1dHRvbiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17aGFuZGxlQ29tcGxldGV9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInctWzEwMHB4XSBoLVs0MHB4XSAgYmctZ3JhZGllbnQtdG8tYiBmcm9tLVsjYjZkYWU3XSB0by1bIzY1ZGZmZl0gcm91bmRlZC1zbSBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciB0ZXh0LWJsYWNrIGZvbnQtYm9sZCBzaGFkb3ctbGdcIlxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAg5a6M5oiQXHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+KX1cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICApfVxyXG4gICAgICAgICAgICB7dmlldyA9PT0gJ2NmcCcgJiYgKFxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJoLVs2MHB4XSBiZy1bIzEzMjg0M10gZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1lbmQgcHgtOFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIHshc2hvd0tleWJvYXJkICYmICg8YnV0dG9uIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXtoYW5kbGVDb21wbGV0ZX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidy1bMTAwcHhdIGgtWzQwcHhdICByb3VuZGVkLXNtIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHRleHQtd2hpdGUgZm9udC1ib2xkIHNoYWRvdy1sZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICDlrozmiJBcclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj4pfVxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICl9XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICApO1xyXG59XHJcbiJdLCJuYW1lcyI6WyJSZWFjdCIsInVzZVN0YXRlIiwidXNlRWZmZWN0IiwiU3RhdHVzQmFyIiwiVGl0bGVCYXIiLCJLZXlib2FyZCIsInVzZURpc3BsYXlTdG9yZSIsIkNhYmxlSWQiLCJzaG93S2V5Ym9hcmQiLCJzZXRTaG93S2V5Ym9hcmQiLCJjdXJzb3JQb3NpdGlvbiIsInNldEN1cnNvclBvc2l0aW9uIiwiaW5wdXRWYWx1ZSIsInNldElucHV0VmFsdWUiLCJpbnB1dFZhbHVlMiIsInNldElucHV0VmFsdWUyIiwiYWN0aXZlSW5wdXQiLCJzZXRBY3RpdmVJbnB1dCIsImdldEN1cnJlbnRQcm9qZWN0IiwiZ2V0Q3VycmVudENhYmxlSWQiLCJnZXRDdXJyZW50Q2FibGVJZDIiLCJ1cGRhdGVQcm9qZWN0IiwiZ29CYWNrIiwiY3VycmVudFByb2plY3QiLCJjdXJyZW50Q2FibGVJZCIsIm5hbWUiLCJjdXJyZW50Q2FibGVJZDIiLCJ2aWV3IiwiZ2V0U3RhdGUiLCJuYXZpZ2F0aW9uIiwiY3VycmVudCIsImdldE5leHRJZCIsImN1cnJlbnRJZCIsIm51bU1hdGNoIiwibWF0Y2giLCJwcmVmaXgiLCJudW0iLCJuZXh0TnVtIiwiU3RyaW5nIiwiTnVtYmVyIiwicGFkU3RhcnQiLCJsZW5ndGgiLCJsZXR0ZXJNYXRjaCIsImxldHRlcnMiLCJsZXR0ZXJBcnJheSIsInNwbGl0IiwiY2FycnkiLCJpIiwiZnJvbUNoYXJDb2RlIiwiY2hhckNvZGVBdCIsInVuc2hpZnQiLCJqb2luIiwiaGFuZGxlQ29tcGxldGUiLCJ0cmltIiwiY3VycmVudEluZGV4Iiwic2VsZWN0ZWRJbmRleGVzIiwicHJvamVjdEluZGV4IiwiY3VycmVudENhYmxlSWRzIiwiY2FibGVJZHMiLCJzZWxlY3RlZElkIiwiaWQiLCJtYXAiLCJjYWJsZSIsInJlbmRlckNvbnRlbnQiLCJkaXYiLCJjbGFzc05hbWUiLCJvbkNsaWNrIiwiaW5wdXQiLCJ0eXBlIiwidmFsdWUiLCJwbGFjZWhvbGRlciIsIm9uQ2hhbmdlIiwiZSIsInRhcmdldCIsInNlbGVjdGlvblN0YXJ0Iiwib25Gb2N1cyIsInNldFNlbGVjdGlvblJhbmdlIiwibmV3VmFsdWUiLCJuZXdQb3NpdGlvbiIsIm9uQ29tcGxldGUiLCJ0aXRsZSIsImJhY2tUbyIsInByZXZpb3VzIiwiYnV0dG9uIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(pages-dir-node)/./src/components/dsxpage/general/CableId.js\n"); /***/ }), /***/ "(pages-dir-node)/./src/components/dsxpage/general/CopperPerformance.js": /*!*************************************************************!*\ !*** ./src/components/dsxpage/general/CopperPerformance.js ***! \*************************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; eval("__webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ CopperPerformance)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"react/jsx-dev-runtime\");\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 */ \"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _components_lib_StatusBar__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/components/lib//StatusBar */ \"(pages-dir-node)/./src/components/lib/StatusBar.js\");\n/* harmony import */ var _components_lib_ResultTitleBar__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/components/lib//ResultTitleBar */ \"(pages-dir-node)/./src/components/lib/ResultTitleBar.js\");\n/* harmony import */ var _store_displayStore__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/store/displayStore */ \"(pages-dir-node)/./src/store/displayStore.js\");\n/* harmony import */ var _components_lib_FrequencyChart__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/components/lib//FrequencyChart */ \"(pages-dir-node)/./src/components/lib/FrequencyChart.js\");\n/* harmony import */ var _components_lib_HDTDChart__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @/components/lib//HDTDChart */ \"(pages-dir-node)/./src/components/lib/HDTDChart.js\");\nvar __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_components_lib_StatusBar__WEBPACK_IMPORTED_MODULE_2__, _components_lib_ResultTitleBar__WEBPACK_IMPORTED_MODULE_3__, _store_displayStore__WEBPACK_IMPORTED_MODULE_4__, _components_lib_FrequencyChart__WEBPACK_IMPORTED_MODULE_5__, _components_lib_HDTDChart__WEBPACK_IMPORTED_MODULE_6__]);\n([_components_lib_StatusBar__WEBPACK_IMPORTED_MODULE_2__, _components_lib_ResultTitleBar__WEBPACK_IMPORTED_MODULE_3__, _store_displayStore__WEBPACK_IMPORTED_MODULE_4__, _components_lib_FrequencyChart__WEBPACK_IMPORTED_MODULE_5__, _components_lib_HDTDChart__WEBPACK_IMPORTED_MODULE_6__] = __webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__);\n\n\n\n\n\n\n\nfunction CopperPerformance() {\n const { navigation, navigateTo, goBack } = (0,_store_displayStore__WEBPACK_IMPORTED_MODULE_4__[\"default\"])();\n const { view } = navigation.current;\n const curtitle = navigation.current.params.curtitle;\n const testResult = navigation.current.params.testResult;\n const limitValue = testResult.testconfig.params.limitValue;\n const [limitdata, setLimitdata] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);\n const wireOrder = testResult?.testconfig?.params?.wireOrder;\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)({\n \"CopperPerformance.useEffect\": ()=>{\n // 异步加载限制数据\n const loadLimitData = {\n \"CopperPerformance.useEffect.loadLimitData\": async ()=>{\n if (limitValue) {\n try {\n // 从limitValue中提取基础名称(移除+PoE和+ALL后缀)\n const baseName = limitValue.split(' (+')[0];\n // 使用基础名称加载带有(+ALL)后缀的文件\n const data = await __webpack_require__(\"(pages-dir-node)/./src/store/COPPER lazy recursive ^\\\\.\\\\/.* \\\\(\\\\+ALL\\\\)\\\\.json$\")(`./${baseName} (+ALL).json`);\n setLimitdata(data);\n } catch (error) {\n console.error('Error loading limit data:', error);\n }\n }\n }\n }[\"CopperPerformance.useEffect.loadLimitData\"];\n loadLimitData();\n }\n }[\"CopperPerformance.useEffect\"], [\n limitValue\n ]);\n const [poeTab, setPoeTab] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)('回路');\n const renderResultTitleBar = ()=>{\n const handleBack = ()=>{\n goBack();\n };\n let title = '';\n switch(view){\n case 'LENGTH':\n title = '长度';\n break;\n case 'OHM':\n title = '电阻';\n break;\n case 'PoE':\n title = 'PoE';\n break;\n case 'DRAW':\n title = '图表';\n break;\n }\n ;\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_ResultTitleBar__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n title: curtitle,\n onBack: handleBack\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/CopperPerformance.js\",\n lineNumber: 59,\n columnNumber: 16\n }, this);\n };\n const renderContent = ()=>{\n switch(view){\n case 'LENGTH':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full h-[490px] bg-[#6b6d6b]\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full h-full bg-white p-4 rounded-md\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid grid-cols-4 text-center border-b border-gray-300 pb-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-col items-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-blue-600 text-lg\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/CopperPerformance.js\",\n lineNumber: 71,\n columnNumber: 41\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/CopperPerformance.js\",\n lineNumber: 70,\n columnNumber: 37\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-col items-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-blue-600 text-lg\",\n children: \"传输延迟\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/CopperPerformance.js\",\n lineNumber: 74,\n columnNumber: 41\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-gray-500\",\n children: \"(ns)\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/CopperPerformance.js\",\n lineNumber: 75,\n columnNumber: 41\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/CopperPerformance.js\",\n lineNumber: 73,\n columnNumber: 37\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-col items-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-blue-600 text-lg\",\n children: \"延迟时差\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/CopperPerformance.js\",\n lineNumber: 78,\n columnNumber: 41\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-gray-500\",\n children: \"(ns)\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/CopperPerformance.js\",\n lineNumber: 79,\n columnNumber: 41\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/CopperPerformance.js\",\n lineNumber: 77,\n columnNumber: 37\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-col items-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-blue-600 text-lg\",\n children: \"长度\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/CopperPerformance.js\",\n lineNumber: 82,\n columnNumber: 41\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-gray-500\",\n children: \"(m)\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/CopperPerformance.js\",\n lineNumber: 83,\n columnNumber: 41\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/CopperPerformance.js\",\n lineNumber: 81,\n columnNumber: 37\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/CopperPerformance.js\",\n lineNumber: 69,\n columnNumber: 33\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mt-4 space-y-4\",\n children: [\n [\n {\n pair: '1,2',\n color: 'text-orange-500',\n delay: testResult?.resultdata?.performance?.DELAY?.PAIR12,\n delaySkew: testResult?.resultdata?.performance?.DELAYSKEW?.PAIR12,\n length: testResult?.resultdata?.performance?.LENGTH?.PAIR12\n },\n {\n pair: '3,6',\n color: 'text-green-500',\n delay: testResult?.resultdata?.performance?.DELAY?.PAIR36,\n delaySkew: testResult?.resultdata?.performance?.DELAYSKEW?.PAIR36,\n length: testResult?.resultdata?.performance?.LENGTH?.PAIR36\n },\n ...wireOrder !== 'Ethernet Two-Pair' && wireOrder !== 'M12-D Two-Pair' ? [\n {\n pair: '4,5',\n color: 'text-blue-500',\n delay: testResult?.resultdata?.performance?.DELAY?.PAIR45,\n delaySkew: testResult?.resultdata?.performance?.DELAYSKEW?.PAIR45,\n length: testResult?.resultdata?.performance?.LENGTH?.PAIR45\n },\n {\n pair: '7,8',\n color: 'text-yellow-500',\n delay: testResult?.resultdata?.performance?.DELAY?.PAIR78,\n delaySkew: testResult?.resultdata?.performance?.DELAYSKEW?.PAIR78,\n length: testResult?.resultdata?.performance?.LENGTH?.PAIR78\n }\n ] : []\n ].map(({ pair, color, delay, delaySkew, length })=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `grid grid-cols-4 text-center border-gray-300 pt-2 ${color}`,\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"font-bold\",\n children: pair\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/CopperPerformance.js\",\n lineNumber: 97,\n columnNumber: 45\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: limitdata && delay > limitdata.DELAY ? 'bg-red-100 rounded-md' : '',\n children: delay\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/CopperPerformance.js\",\n lineNumber: 98,\n columnNumber: 45\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: limitdata && delaySkew > limitdata.DELAYSKEW ? 'bg-red-100 rounded-md' : '',\n children: delaySkew\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/CopperPerformance.js\",\n lineNumber: 99,\n columnNumber: 46\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `text-center ${limitdata && length > limitdata.LENGTH && !(limitValue?.includes('ISO') || limitValue?.includes('Profinet')) ? 'bg-red-200 rounded-md' : ''}`,\n children: length\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/CopperPerformance.js\",\n lineNumber: 100,\n columnNumber: 46\n }, this)\n ]\n }, pair, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/CopperPerformance.js\",\n lineNumber: 96,\n columnNumber: 41\n }, this)),\n limitdata && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid grid-cols-4 text-center border-t border-gray-300 pt-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"font-bold\",\n children: \"极限\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/CopperPerformance.js\",\n lineNumber: 105,\n columnNumber: 41\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: limitdata.DELAY\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/CopperPerformance.js\",\n lineNumber: 107,\n columnNumber: 41\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: limitdata.DELAYSKEW\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/CopperPerformance.js\",\n lineNumber: 108,\n columnNumber: 41\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: limitdata.LENGTH\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/CopperPerformance.js\",\n lineNumber: 109,\n columnNumber: 41\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/CopperPerformance.js\",\n lineNumber: 104,\n columnNumber: 37\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/CopperPerformance.js\",\n lineNumber: 86,\n columnNumber: 33\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/CopperPerformance.js\",\n lineNumber: 68,\n columnNumber: 29\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/CopperPerformance.js\",\n lineNumber: 67,\n columnNumber: 25\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/CopperPerformance.js\",\n lineNumber: 66,\n columnNumber: 21\n }, this);\n case 'OHM':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full h-[490px] bg-[#6b6d6b]\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full h-full bg-white p-0 rounded-md\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex mb-4\",\n children: [\n '回路'\n ].map((tab)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>setPoeTab(tab),\n className: `flex-1 py-2 text-center text-xl font-bold ${poeTab === tab ? 'bg-gradient-to-b from-[#b0b0b0] via-[#e0e4e0] to-[#fff] text-black' : 'bg-[#132843] text-[#fffe92]'}`,\n children: tab\n }, tab, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/CopperPerformance.js\",\n lineNumber: 125,\n columnNumber: 41\n }, this))\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/CopperPerformance.js\",\n lineNumber: 123,\n columnNumber: 33\n }, this),\n poeTab === '回路' && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mt-4 space-y-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid grid-cols-2 text-center border-b border-gray-300 pb-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"font-bold\",\n children: \" \"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/CopperPerformance.js\",\n lineNumber: 139,\n columnNumber: 49\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-gray-500 text-lg\",\n children: \"值(Ω)\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/CopperPerformance.js\",\n lineNumber: 141,\n columnNumber: 49\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/CopperPerformance.js\",\n lineNumber: 140,\n columnNumber: 49\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/CopperPerformance.js\",\n lineNumber: 138,\n columnNumber: 41\n }, this),\n [\n {\n pair: '1,2',\n color: 'text-orange-500',\n value: testResult?.resultdata?.performance?.OHM?.LOOP?.PAIR12\n },\n {\n pair: '3,6',\n color: 'text-green-500',\n value: testResult?.resultdata?.performance?.OHM?.LOOP?.PAIR36\n },\n ...wireOrder !== 'Ethernet Two-Pair' && wireOrder !== 'M12-D Two-Pair' ? [\n {\n pair: '4,5',\n color: 'text-blue-500',\n value: testResult?.resultdata?.performance?.OHM?.LOOP?.PAIR45\n },\n {\n pair: '7,8',\n color: 'text-yellow-500',\n value: testResult?.resultdata?.performance?.OHM?.LOOP?.PAIR78\n }\n ] : []\n ].map(({ pair, color, value })=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid grid-cols-2 text-center py-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `font-bold ${color}`,\n children: pair\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/CopperPerformance.js\",\n lineNumber: 154,\n columnNumber: 49\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: value || 'N/A'\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/CopperPerformance.js\",\n lineNumber: 155,\n columnNumber: 49\n }, this)\n ]\n }, pair, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/CopperPerformance.js\",\n lineNumber: 153,\n columnNumber: 45\n }, this)),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid grid-cols-2 text-center border-t border-gray-300 pt-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"font-bold\",\n children: \"极限\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/CopperPerformance.js\",\n lineNumber: 160,\n columnNumber: 41\n }, this),\n limitdata && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: limitdata.LOOP\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/CopperPerformance.js\",\n lineNumber: 162,\n columnNumber: 49\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/CopperPerformance.js\",\n lineNumber: 159,\n columnNumber: 41\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/CopperPerformance.js\",\n lineNumber: 137,\n columnNumber: 37\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/CopperPerformance.js\",\n lineNumber: 121,\n columnNumber: 30\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/CopperPerformance.js\",\n lineNumber: 120,\n columnNumber: 25\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/CopperPerformance.js\",\n lineNumber: 119,\n columnNumber: 21\n }, this);\n case 'PoE':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full h-[490px] bg-[#6b6d6b] \",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full h-full bg-white p-0 rounded-md\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex mb-4\",\n children: [\n '回路',\n '线对UBL',\n 'P2P UBL'\n ].map((tab)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>setPoeTab(tab),\n className: `flex-1 py-1 text-center text-lg font-bold ${poeTab === tab ? 'bg-gradient-to-b from-[#b0b0b0] via-[#e0e4e0] to-[#fff] text-black' : 'bg-[#132843] text-[#fffe92]'}`,\n children: tab\n }, tab, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/CopperPerformance.js\",\n lineNumber: 180,\n columnNumber: 41\n }, this))\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/CopperPerformance.js\",\n lineNumber: 178,\n columnNumber: 33\n }, this),\n poeTab === '回路' && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mt-4 space-y-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid grid-cols-2 text-center border-b border-gray-300 pb-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"font-bold\",\n children: \" \"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/CopperPerformance.js\",\n lineNumber: 194,\n columnNumber: 49\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-gray-500 text-lg\",\n children: \"值(Ω)\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/CopperPerformance.js\",\n lineNumber: 196,\n columnNumber: 49\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/CopperPerformance.js\",\n lineNumber: 195,\n columnNumber: 49\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/CopperPerformance.js\",\n lineNumber: 193,\n columnNumber: 41\n }, this),\n [\n {\n pair: '1,2',\n color: 'text-orange-500',\n value: testResult?.resultdata?.performance?.OHM?.LOOP?.PAIR12\n },\n {\n pair: '3,6',\n color: 'text-green-500',\n value: testResult?.resultdata?.performance?.OHM?.LOOP?.PAIR36\n },\n ...wireOrder !== 'Ethernet Two-Pair' && wireOrder !== 'M12-D Two-Pair' ? [\n {\n pair: '4,5',\n color: 'text-blue-500',\n value: testResult?.resultdata?.performance?.OHM?.LOOP?.PAIR45\n },\n {\n pair: '7,8',\n color: 'text-yellow-500',\n value: testResult?.resultdata?.performance?.OHM?.LOOP?.PAIR78\n }\n ] : []\n ].map(({ pair, color, value })=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid grid-cols-2 text-center py-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `font-bold ${color}`,\n children: pair\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/CopperPerformance.js\",\n lineNumber: 210,\n columnNumber: 49\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `${value > limitdata?.LOOP ? 'bg-red-100' : ''}`,\n children: value || 'N/A'\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/CopperPerformance.js\",\n lineNumber: 211,\n columnNumber: 49\n }, this)\n ]\n }, pair, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/CopperPerformance.js\",\n lineNumber: 209,\n columnNumber: 45\n }, this)),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid grid-cols-2 text-center border-t border-gray-300 pt-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"font-bold\",\n children: \"极限\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/CopperPerformance.js\",\n lineNumber: 218,\n columnNumber: 41\n }, this),\n limitdata && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: limitdata.LOOP\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/CopperPerformance.js\",\n lineNumber: 220,\n columnNumber: 49\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/CopperPerformance.js\",\n lineNumber: 217,\n columnNumber: 41\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/CopperPerformance.js\",\n lineNumber: 192,\n columnNumber: 37\n }, this),\n poeTab === '线对UBL' && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mt-4 space-y-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid grid-cols-3 text-center border-b border-gray-300 pb-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"font-bold\",\n children: \" \"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/CopperPerformance.js\",\n lineNumber: 229,\n columnNumber: 45\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-col items-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-gray-500 text-lg\",\n children: \"值(Ω)\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/CopperPerformance.js\",\n lineNumber: 231,\n columnNumber: 49\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/CopperPerformance.js\",\n lineNumber: 230,\n columnNumber: 46\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-col items-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-gray-500 text-lg\",\n children: \"极限(Ω)\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/CopperPerformance.js\",\n lineNumber: 234,\n columnNumber: 49\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/CopperPerformance.js\",\n lineNumber: 233,\n columnNumber: 45\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/CopperPerformance.js\",\n lineNumber: 228,\n columnNumber: 41\n }, this),\n [\n {\n pair: '1,2',\n color: 'text-orange-500',\n value: testResult?.resultdata?.performance?.OHM?.PAIRUBL?.PAIR12\n },\n {\n pair: '3,6',\n color: 'text-green-500',\n value: testResult?.resultdata?.performance?.OHM?.PAIRUBL?.PAIR36\n },\n ...wireOrder !== 'Ethernet Two-Pair' && wireOrder !== 'M12-D Two-Pair' ? [\n {\n pair: '4,5',\n color: 'text-blue-500',\n value: testResult?.resultdata?.performance?.OHM?.PAIRUBL?.PAIR45\n },\n {\n pair: '7,8',\n color: 'text-yellow-500',\n value: testResult?.resultdata?.performance?.OHM?.PAIRUBL?.PAIR78\n }\n ] : []\n ].map(({ pair, color, value })=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid grid-cols-3 text-center py-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `font-bold ${color}`,\n children: pair\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/CopperPerformance.js\",\n lineNumber: 248,\n columnNumber: 49\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `${value > limitdata?.PAIRUBL ? 'bg-red-100' : ''}`,\n children: value || 'N/A'\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/CopperPerformance.js\",\n lineNumber: 249,\n columnNumber: 49\n }, this),\n limitdata && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: limitdata.PAIRUBL\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/CopperPerformance.js\",\n lineNumber: 253,\n columnNumber: 49\n }, this)\n ]\n }, pair, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/CopperPerformance.js\",\n lineNumber: 247,\n columnNumber: 45\n }, this))\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/CopperPerformance.js\",\n lineNumber: 227,\n columnNumber: 37\n }, this),\n poeTab === 'P2P UBL' && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mt-4 space-y-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid grid-cols-3 text-center border-b border-gray-300 pb-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"font-bold\",\n children: \" \"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/CopperPerformance.js\",\n lineNumber: 264,\n columnNumber: 45\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-col items-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-gray-500 text-lg\",\n children: \"值(Ω)\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/CopperPerformance.js\",\n lineNumber: 266,\n columnNumber: 49\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/CopperPerformance.js\",\n lineNumber: 265,\n columnNumber: 45\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-col items-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-gray-500 text-lg\",\n children: \"极限(Ω)\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/CopperPerformance.js\",\n lineNumber: 269,\n columnNumber: 49\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/CopperPerformance.js\",\n lineNumber: 268,\n columnNumber: 45\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/CopperPerformance.js\",\n lineNumber: 263,\n columnNumber: 41\n }, this),\n [\n {\n pair: '12-36',\n color: 'text-orange-500',\n value: testResult?.resultdata?.performance?.OHM?.P2PUBL?.PAIR1236\n },\n ...wireOrder !== 'Ethernet Two-Pair' && wireOrder !== 'M12-D Two-Pair' ? [\n {\n pair: '12-45',\n color: 'text-green-500',\n value: testResult?.resultdata?.performance?.OHM?.P2PUBL?.PAIR1245\n },\n {\n pair: '12-78',\n color: 'text-blue-500',\n value: testResult?.resultdata?.performance?.OHM?.P2PUBL?.PAIR1278\n },\n {\n pair: '36-45',\n color: 'text-yellow-500',\n value: testResult?.resultdata?.performance?.OHM?.P2PUBL?.PAIR3645\n },\n {\n pair: '36-78',\n color: 'text-purple-500',\n value: testResult?.resultdata?.performance?.OHM?.P2PUBL?.PAIR3678\n },\n {\n pair: '45-78',\n color: 'text-pink-500',\n value: testResult?.resultdata?.performance?.OHM?.P2PUBL?.PAIR4578\n }\n ] : []\n ].map(({ pair, color, value })=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid grid-cols-3 text-center py-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `font-bold ${color}`,\n children: pair\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/CopperPerformance.js\",\n lineNumber: 284,\n columnNumber: 49\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `${value > limitdata?.P2PUBL ? 'bg-red-100' : ''}`,\n children: value || 'N/A'\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/CopperPerformance.js\",\n lineNumber: 285,\n columnNumber: 49\n }, this),\n limitdata && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: limitdata.P2PUBL\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/CopperPerformance.js\",\n lineNumber: 289,\n columnNumber: 49\n }, this)\n ]\n }, pair, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/CopperPerformance.js\",\n lineNumber: 283,\n columnNumber: 45\n }, this))\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/CopperPerformance.js\",\n lineNumber: 262,\n columnNumber: 37\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/CopperPerformance.js\",\n lineNumber: 176,\n columnNumber: 29\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/CopperPerformance.js\",\n lineNumber: 175,\n columnNumber: 25\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/CopperPerformance.js\",\n lineNumber: 174,\n columnNumber: 21\n }, this);\n case 'DRAW':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full h-[full] bg-[#6b6d6b]\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full h-full bg-white p-4 rounded-md\",\n children: limitdata && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_FrequencyChart__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n curtitle: curtitle,\n limitValue: limitValue,\n limitdata: limitdata,\n wireOrder: wireOrder,\n data: testResult?.resultdata?.performance?.data\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/CopperPerformance.js\",\n lineNumber: 304,\n columnNumber: 33\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/CopperPerformance.js\",\n lineNumber: 302,\n columnNumber: 25\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/CopperPerformance.js\",\n lineNumber: 301,\n columnNumber: 21\n }, this);\n case 'HDTD':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full h-[full] bg-[#6b6d6b]\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full h-full bg-white p-4 rounded-md\",\n children: limitdata && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_HDTDChart__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n curtitle: curtitle,\n HDTD: testResult?.resultdata?.HDTD\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/CopperPerformance.js\",\n lineNumber: 320,\n columnNumber: 37\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/CopperPerformance.js\",\n lineNumber: 318,\n columnNumber: 29\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/CopperPerformance.js\",\n lineNumber: 317,\n columnNumber: 25\n }, this);\n default:\n return null;\n }\n };\n const renderFooter = ()=>{\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[60px] bg-[#132843] flex items-center justify-end px-8\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/CopperPerformance.js\",\n lineNumber: 335,\n columnNumber: 13\n }, this);\n };\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full h-full flex flex-col overflow-hidden\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_StatusBar__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {}, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/CopperPerformance.js\",\n lineNumber: 343,\n columnNumber: 13\n }, this),\n renderResultTitleBar(),\n renderContent(),\n renderFooter()\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/CopperPerformance.js\",\n lineNumber: 342,\n columnNumber: 9\n }, this);\n}\n\n__webpack_async_result__();\n} catch(e) { __webpack_async_result__(e); } });//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHBhZ2VzLWRpci1ub2RlKS8uL3NyYy9jb21wb25lbnRzL2RzeHBhZ2UvZ2VuZXJhbC9Db3BwZXJQZXJmb3JtYW5jZS5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7OztBQUFtRDtBQUNDO0FBQ1U7QUFDWDtBQUNXO0FBQ1Y7QUFFckMsU0FBU1E7SUFDcEIsTUFBTSxFQUFFQyxVQUFVLEVBQUVDLFVBQVUsRUFBQ0MsTUFBTSxFQUFFLEdBQUdOLCtEQUFlQTtJQUN6RCxNQUFNLEVBQUVPLElBQUksRUFBRSxHQUFHSCxXQUFXSSxPQUFPO0lBQ25DLE1BQU1DLFdBQVdMLFdBQVdJLE9BQU8sQ0FBQ0UsTUFBTSxDQUFDRCxRQUFRO0lBQ25ELE1BQU1FLGFBQWFQLFdBQVdJLE9BQU8sQ0FBQ0UsTUFBTSxDQUFDQyxVQUFVO0lBQ3ZELE1BQU1DLGFBQWFELFdBQVdFLFVBQVUsQ0FBQ0gsTUFBTSxDQUFDRSxVQUFVO0lBQzFELE1BQU0sQ0FBQ0UsV0FBV0MsYUFBYSxHQUFHbkIsK0NBQVFBLENBQUM7SUFDM0MsTUFBTW9CLFlBQVlMLFlBQVlFLFlBQVlILFFBQVFNO0lBRWxEbkIsZ0RBQVNBO3VDQUFDO1lBQ04sV0FBVztZQUNYLE1BQU1vQjs2REFBZ0I7b0JBQ2xCLElBQUlMLFlBQVk7d0JBQ1osSUFBSTs0QkFDQSxvQ0FBb0M7NEJBQ3BDLE1BQU1NLFdBQVdOLFdBQVdPLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBRTs0QkFDM0Msd0JBQXdCOzRCQUN4QixNQUFNQyxPQUFPLE1BQU0seUdBQU8sR0FBZ0IsRUFBRUYsU0FBUyxhQUFhLENBQUM7NEJBQ25FSCxhQUFhSzt3QkFDakIsRUFBRSxPQUFPQyxPQUFPOzRCQUNaQyxRQUFRRCxLQUFLLENBQUMsNkJBQTZCQTt3QkFDL0M7b0JBQ0o7Z0JBQ0o7O1lBQ0FKO1FBQ0o7c0NBQUc7UUFBQ0w7S0FBVztJQUtmLE1BQU0sQ0FBQ1csUUFBUUMsVUFBVSxHQUFHNUIsK0NBQVFBLENBQUM7SUFFckMsTUFBTTZCLHVCQUF1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IjpbIi9vcHQvZGV2L2VzdC1kc3gvc3JjL2NvbXBvbmVudHMvZHN4cGFnZS9nZW5lcmFsL0NvcHBlclBlcmZvcm1hbmNlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSwgdXNlRWZmZWN0IH0gZnJvbSAncmVhY3QnO1xyXG5pbXBvcnQgU3RhdHVzQmFyIGZyb20gJ0AvY29tcG9uZW50cy9saWIvL1N0YXR1c0Jhcic7XHJcbmltcG9ydCBSZXN1bHRUaXRsZUJhciBmcm9tICdAL2NvbXBvbmVudHMvbGliLy9SZXN1bHRUaXRsZUJhcic7XHJcbmltcG9ydCB1c2VEaXNwbGF5U3RvcmUgZnJvbSAnQC9zdG9yZS9kaXNwbGF5U3RvcmUnO1xyXG5pbXBvcnQgRnJlcXVlbmN5Q2hhcnQgZnJvbSAnQC9jb21wb25lbnRzL2xpYi8vRnJlcXVlbmN5Q2hhcnQnO1xyXG5pbXBvcnQgSERURENoYXJ0IGZyb20gJ0AvY29tcG9uZW50cy9saWIvL0hEVERDaGFydCc7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBDb3BwZXJQZXJmb3JtYW5jZSggKSB7XHJcbiAgICBjb25zdCB7IG5hdmlnYXRpb24sIG5hdmlnYXRlVG8sZ29CYWNrIH0gPSB1c2VEaXNwbGF5U3RvcmUoKTtcclxuICAgIGNvbnN0IHsgdmlldyB9ID0gbmF2aWdhdGlvbi5jdXJyZW50O1xyXG4gICAgY29uc3QgY3VydGl0bGUgPSBuYXZpZ2F0aW9uLmN1cnJlbnQucGFyYW1zLmN1cnRpdGxlO1xyXG4gICAgY29uc3QgdGVzdFJlc3VsdCA9IG5hdmlnYXRpb24uY3VycmVudC5wYXJhbXMudGVzdFJlc3VsdDtcclxuICAgIGNvbnN0IGxpbWl0VmFsdWUgPSB0ZXN0UmVzdWx0LnRlc3Rjb25maWcucGFyYW1zLmxpbWl0VmFsdWU7XHJcbiAgICBjb25zdCBbbGltaXRkYXRhLCBzZXRMaW1pdGRhdGFdID0gdXNlU3RhdGUobnVsbCk7XHJcbiAgICBjb25zdCB3aXJlT3JkZXIgPSB0ZXN0UmVzdWx0Py50ZXN0Y29uZmlnPy5wYXJhbXM/LndpcmVPcmRlcjtcclxuXHJcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xyXG4gICAgICAgIC8vIOW8guatpeWKoOi9vemZkOWItuaVsOaNrlxyXG4gICAgICAgIGNvbnN0IGxvYWRMaW1pdERhdGEgPSBhc3luYyAoKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChsaW1pdFZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIOS7jmxpbWl0VmFsdWXkuK3mj5Dlj5bln7rnoYDlkI3np7Ao56e76ZmkK1BvReWSjCtBTEzlkI7nvIApXHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYmFzZU5hbWUgPSBsaW1pdFZhbHVlLnNwbGl0KCcgKCsnKVswXTtcclxuICAgICAgICAgICAgICAgICAgICAvLyDkvb/nlKjln7rnoYDlkI3np7DliqDovb3luKbmnIkoK0FMTCnlkI7nvIDnmoTmlofku7ZcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBkYXRhID0gYXdhaXQgaW1wb3J0KGBAL3N0b3JlL0NPUFBFUi8ke2Jhc2VOYW1lfSAoK0FMTCkuanNvbmApO1xyXG4gICAgICAgICAgICAgICAgICAgIHNldExpbWl0ZGF0YShkYXRhKTtcclxuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgbG9hZGluZyBsaW1pdCBkYXRhOicsIGVycm9yKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgbG9hZExpbWl0RGF0YSgpO1xyXG4gICAgfSwgW2xpbWl0VmFsdWVdKTsgXHJcblxyXG5cclxuXHJcblxyXG4gICAgY29uc3QgW3BvZVRhYiwgc2V0UG9lVGFiXSA9IHVzZVN0YXRlKCflm57ot68nKTtcclxuXHJcbiAgICBjb25zdCByZW5kZXJSZXN1bHRUaXRsZUJhciA9ICgpID0+IHsgICAgICBcclxuICAgICAgICBjb25zdCBoYW5kbGVCYWNrID0gKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgZ29CYWNrKCk7XHJcbiAgICAgICAgICB9OyAgXHJcbiAgICAgICAgbGV0IHRpdGxlID0gJyc7XHJcbiAgICAgICAgc3dpdGNoICh2aWV3KSB7XHJcbiAgICAgICAgICAgIGNhc2UgJ0xFTkdUSCc6XHJcbiAgICAgICAgICAgICAgICB0aXRsZSA9ICfplb/luqYnO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgJ09ITSc6XHJcbiAgICAgICAgICAgICAgICB0aXRsZSA9ICfnlLXpmLsnO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgJ1BvRSc6XHJcbiAgICAgICAgICAgICAgICB0aXRsZSA9ICdQb0UnO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgJ0RSQVcnOlxyXG4gICAgICAgICAgICAgICAgdGl0bGUgPSAn5Zu+6KGoJztcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgcmV0dXJuIDxSZXN1bHRUaXRsZUJhciB0aXRsZT17Y3VydGl0bGV9IG9uQmFjaz17aGFuZGxlQmFja30gLz47XHJcbiAgICB9O1xyXG4gICAgXHJcbiAgICBjb25zdCByZW5kZXJDb250ZW50ID0gKCkgPT4geyAgICAgICAgXHJcbiAgICAgICAgc3dpdGNoICh2aWV3KSB7XHJcbiAgICAgICAgICAgIGNhc2UgJ0xFTkdUSCc6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy1mdWxsIGgtWzQ5MHB4XSBiZy1bIzZiNmQ2Yl1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LWZ1bGwgaC1mdWxsIGJnLXdoaXRlIHAtNCByb3VuZGVkLW1kXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctZnVsbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZ3JpZCBncmlkLWNvbHMtNCB0ZXh0LWNlbnRlciBib3JkZXItYiBib3JkZXItZ3JheS0zMDAgcGItMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggZmxleC1jb2wgaXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LWJsdWUtNjAwIHRleHQtbGdcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggZmxleC1jb2wgaXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LWJsdWUtNjAwIHRleHQtbGdcIj7kvKDovpPlu7bov588L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LWdyYXktNTAwXCI+KG5zKTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBmbGV4LWNvbCBpdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtYmx1ZS02MDAgdGV4dC1sZ1wiPuW7tui/n+aXtuW3rjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtZ3JheS01MDBcIj4obnMpPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGZsZXgtY29sIGl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC1ibHVlLTYwMCB0ZXh0LWxnXCI+6ZW/5bqmPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC1ncmF5LTUwMFwiPihtKTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtdC00IHNwYWNlLXktNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7W1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBwYWlyOiAnMSwyJywgY29sb3I6ICd0ZXh0LW9yYW5nZS01MDAnLCBkZWxheTogdGVzdFJlc3VsdD8ucmVzdWx0ZGF0YT8ucGVyZm9ybWFuY2U/LkRFTEFZPy5QQUlSMTIsIGRlbGF5U2tldzogdGVzdFJlc3VsdD8ucmVzdWx0ZGF0YT8ucGVyZm9ybWFuY2U/LkRFTEFZU0tFVz8uUEFJUjEyLCBsZW5ndGg6IHRlc3RSZXN1bHQ/LnJlc3VsdGRhdGE/LnBlcmZvcm1hbmNlPy5MRU5HVEg/LlBBSVIxMiB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBwYWlyOiAnMyw2JywgY29sb3I6ICd0ZXh0LWdyZWVuLTUwMCcsIGRlbGF5OiB0ZXN0UmVzdWx0Py5yZXN1bHRkYXRhPy5wZXJmb3JtYW5jZT8uREVMQVk/LlBBSVIzNiwgZGVsYXlTa2V3OiB0ZXN0UmVzdWx0Py5yZXN1bHRkYXRhPy5wZXJmb3JtYW5jZT8uREVMQVlTS0VXPy5QQUlSMzYsIGxlbmd0aDogdGVzdFJlc3VsdD8ucmVzdWx0ZGF0YT8ucGVyZm9ybWFuY2U/LkxFTkdUSD8uUEFJUjM2IH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4od2lyZU9yZGVyICE9PSAnRXRoZXJuZXQgVHdvLVBhaXInICYmIHdpcmVPcmRlciAhPT0gJ00xMi1EIFR3by1QYWlyJyA/IFtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBwYWlyOiAnNCw1JywgY29sb3I6ICd0ZXh0LWJsdWUtNTAwJywgZGVsYXk6IHRlc3RSZXN1bHQ/LnJlc3VsdGRhdGE/LnBlcmZvcm1hbmNlPy5ERUxBWT8uUEFJUjQ1LCBkZWxheVNrZXc6IHRlc3RSZXN1bHQ/LnJlc3VsdGRhdGE/LnBlcmZvcm1hbmNlPy5ERUxBWVNLRVc/LlBBSVI0NSwgbGVuZ3RoOiB0ZXN0UmVzdWx0Py5yZXN1bHRkYXRhPy5wZXJmb3JtYW5jZT8uTEVOR1RIPy5QQUlSNDUgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHBhaXI6ICc3LDgnLCBjb2xvcjogJ3RleHQteWVsbG93LTUwMCcsIGRlbGF5OiB0ZXN0UmVzdWx0Py5yZXN1bHRkYXRhPy5wZXJmb3JtYW5jZT8uREVMQVk/LlBBSVI3OCwgZGVsYXlTa2V3OiB0ZXN0UmVzdWx0Py5yZXN1bHRkYXRhPy5wZXJmb3JtYW5jZT8uREVMQVlTS0VXPy5QQUlSNzgsIGxlbmd0aDogdGVzdFJlc3VsdD8ucmVzdWx0ZGF0YT8ucGVyZm9ybWFuY2U/LkxFTkdUSD8uUEFJUjc4IH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0gOiBbXSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXS5tYXAoKHsgcGFpciwgY29sb3IsIGRlbGF5LCBkZWxheVNrZXcsIGxlbmd0aCB9KSA9PiAoICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYga2V5PXtwYWlyfSBjbGFzc05hbWU9e2BncmlkIGdyaWQtY29scy00IHRleHQtY2VudGVyIGJvcmRlci1ncmF5LTMwMCBwdC0yICR7Y29sb3J9YH0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmb250LWJvbGRcIj57cGFpcn08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17bGltaXRkYXRhICYmIGRlbGF5ID4gbGltaXRkYXRhLkRFTEFZID8gJ2JnLXJlZC0xMDAgcm91bmRlZC1tZCcgOiAnJ30+e2RlbGF5fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17bGltaXRkYXRhICYmIGRlbGF5U2tldyA+IGxpbWl0ZGF0YS5ERUxBWVNLRVcgPyAnYmctcmVkLTEwMCByb3VuZGVkLW1kJyA6ICcnfT57ZGVsYXlTa2V3fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17YHRleHQtY2VudGVyICR7KGxpbWl0ZGF0YSAmJiBsZW5ndGggPiBsaW1pdGRhdGEuTEVOR1RIKSAmJiAhKGxpbWl0VmFsdWU/LmluY2x1ZGVzKCdJU08nKSB8fCBsaW1pdFZhbHVlPy5pbmNsdWRlcygnUHJvZmluZXQnKSkgPyAnYmctcmVkLTIwMCByb3VuZGVkLW1kJyA6ICcnfWB9PntsZW5ndGh9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtsaW1pdGRhdGEgJiYgKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImdyaWQgZ3JpZC1jb2xzLTQgdGV4dC1jZW50ZXIgYm9yZGVyLXQgYm9yZGVyLWdyYXktMzAwIHB0LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZm9udC1ib2xkXCI+5p6B6ZmQPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+e2xpbWl0ZGF0YS5ERUxBWX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+e2xpbWl0ZGF0YS5ERUxBWVNLRVd9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PntsaW1pdGRhdGEuTEVOR1RIfTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIGNhc2UgJ09ITSc6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy1mdWxsIGgtWzQ5MHB4XSBiZy1bIzZiNmQ2Yl1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LWZ1bGwgaC1mdWxsIGJnLXdoaXRlIHAtMCByb3VuZGVkLW1kXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LWZ1bGxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Lyog6YCJ6aG55Y2hICovfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBtYi00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtbJ+Wbnui3ryddLm1hcCgodGFiKSA9PiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXt0YWJ9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gc2V0UG9lVGFiKHRhYil9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgZmxleC0xIHB5LTIgdGV4dC1jZW50ZXIgdGV4dC14bCBmb250LWJvbGQgJHtwb2VUYWIgPT09IHRhYiA/ICdiZy1ncmFkaWVudC10by1iIGZyb20tWyNiMGIwYjBdIHZpYS1bI2UwZTRlMF0gdG8tWyNmZmZdIHRleHQtYmxhY2snIDogJ2JnLVsjMTMyODQzXSB0ZXh0LVsjZmZmZTkyXSd9YH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7dGFifVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Lyog5pWw5o2u5bGV56S65Yy65Z+fICovfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtwb2VUYWIgPT09ICflm57ot68nICYmIChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtdC00IHNwYWNlLXktNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJncmlkIGdyaWQtY29scy0yIHRleHQtY2VudGVyIGJvcmRlci1iIGJvcmRlci1ncmF5LTMwMCBwYi0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZm9udC1ib2xkXCI+ICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtZ3JheS01MDAgdGV4dC1sZ1wiPuWAvCjOqSk8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7W1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgcGFpcjogJzEsMicsIGNvbG9yOiAndGV4dC1vcmFuZ2UtNTAwJywgdmFsdWU6IHRlc3RSZXN1bHQ/LnJlc3VsdGRhdGE/LnBlcmZvcm1hbmNlPy5PSE0/LkxPT1A/LlBBSVIxMiB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgcGFpcjogJzMsNicsIGNvbG9yOiAndGV4dC1ncmVlbi01MDAnLCB2YWx1ZTogdGVzdFJlc3VsdD8ucmVzdWx0ZGF0YT8ucGVyZm9ybWFuY2U/Lk9ITT8uTE9PUD8uUEFJUjM2IH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKHdpcmVPcmRlciAhPT0gJ0V0aGVybmV0IFR3by1QYWlyJyAmJiB3aXJlT3JkZXIgIT09ICdNMTItRCBUd28tUGFpcicgPyBbXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgcGFpcjogJzQsNScsIGNvbG9yOiAndGV4dC1ibHVlLTUwMCcsIHZhbHVlOiB0ZXN0UmVzdWx0Py5yZXN1bHRkYXRhPy5wZXJmb3JtYW5jZT8uT0hNPy5MT09QPy5QQUlSNDUgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBwYWlyOiAnNyw4JywgY29sb3I6ICd0ZXh0LXllbGxvdy01MDAnLCB2YWx1ZTogdGVzdFJlc3VsdD8ucmVzdWx0ZGF0YT8ucGVyZm9ybWFuY2U/Lk9ITT8uTE9PUD8uUEFJUjc4IH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdIDogW10pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLm1hcCgoeyBwYWlyLCBjb2xvciwgdmFsdWUgfSkgPT4gKFxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGtleT17cGFpcn0gY2xhc3NOYW1lPVwiZ3JpZCBncmlkLWNvbHMtMiB0ZXh0LWNlbnRlciBweS0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtgZm9udC1ib2xkICR7Y29sb3J9YH0+e3BhaXJ9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+e3ZhbHVlIHx8ICdOL0EnfTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJncmlkIGdyaWQtY29scy0yIHRleHQtY2VudGVyIGJvcmRlci10IGJvcmRlci1ncmF5LTMwMCBwdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZvbnQtYm9sZFwiPuaegemZkDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtsaW1pdGRhdGEgJiYgKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PntsaW1pdGRhdGEuTE9PUH08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIGNhc2UgJ1BvRSc6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy1mdWxsIGgtWzQ5MHB4XSBiZy1bIzZiNmQ2Yl0gXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy1mdWxsIGgtZnVsbCBiZy13aGl0ZSBwLTAgcm91bmRlZC1tZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LWZ1bGxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Lyog6YCJ6aG55Y2hICovfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBtYi00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtbJ+Wbnui3rycsICfnur/lr7lVQkwnLCAnUDJQIFVCTCddLm1hcCgodGFiKSA9PiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXt0YWJ9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gc2V0UG9lVGFiKHRhYil9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgZmxleC0xIHB5LTEgdGV4dC1jZW50ZXIgdGV4dC1sZyBmb250LWJvbGQgJHtwb2VUYWIgPT09IHRhYiA/ICdiZy1ncmFkaWVudC10by1iIGZyb20tWyNiMGIwYjBdIHZpYS1bI2UwZTRlMF0gdG8tWyNmZmZdIHRleHQtYmxhY2snIDogJ2JnLVsjMTMyODQzXSB0ZXh0LVsjZmZmZTkyXSd9YH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7dGFifVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Lyog5pWw5o2u5bGV56S65Yy65Z+fICovfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtwb2VUYWIgPT09ICflm57ot68nICYmIChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtdC00IHNwYWNlLXktNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJncmlkIGdyaWQtY29scy0yIHRleHQtY2VudGVyIGJvcmRlci1iIGJvcmRlci1ncmF5LTMwMCBwYi0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZm9udC1ib2xkXCI+ICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtZ3JheS01MDAgdGV4dC1sZ1wiPuWAvCjOqSk8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7W1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgcGFpcjogJzEsMicsIGNvbG9yOiAndGV4dC1vcmFuZ2UtNTAwJywgdmFsdWU6IHRlc3RSZXN1bHQ/LnJlc3VsdGRhdGE/LnBlcmZvcm1hbmNlPy5PSE0/LkxPT1A/LlBBSVIxMiB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgcGFpcjogJzMsNicsIGNvbG9yOiAndGV4dC1ncmVlbi01MDAnLCB2YWx1ZTogdGVzdFJlc3VsdD8ucmVzdWx0ZGF0YT8ucGVyZm9ybWFuY2U/Lk9ITT8uTE9PUD8uUEFJUjM2IH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKHdpcmVPcmRlciAhPT0gJ0V0aGVybmV0IFR3by1QYWlyJyAmJiB3aXJlT3JkZXIgIT09ICdNMTItRCBUd28tUGFpcicgPyBbXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHBhaXI6ICc0LDUnLCBjb2xvcjogJ3RleHQtYmx1ZS01MDAnLCB2YWx1ZTogdGVzdFJlc3VsdD8ucmVzdWx0ZGF0YT8ucGVyZm9ybWFuY2U/Lk9ITT8uTE9PUD8uUEFJUjQ1IH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgcGFpcjogJzcsOCcsIGNvbG9yOiAndGV4dC15ZWxsb3ctNTAwJywgdmFsdWU6IHRlc3RSZXN1bHQ/LnJlc3VsdGRhdGE/LnBlcmZvcm1hbmNlPy5PSE0/LkxPT1A/LlBBSVI3OCB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSA6IFtdKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXS5tYXAoKHsgcGFpciwgY29sb3IsIHZhbHVlIH0pID0+IChcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBrZXk9e3BhaXJ9IGNsYXNzTmFtZT1cImdyaWQgZ3JpZC1jb2xzLTIgdGV4dC1jZW50ZXIgcHktMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17YGZvbnQtYm9sZCAke2NvbG9yfWB9PntwYWlyfTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17YCR7dmFsdWUgPiBsaW1pdGRhdGE/LkxPT1AgPyAnYmctcmVkLTEwMCcgOiAnJ31gfT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt2YWx1ZSB8fCAnTi9BJ31cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImdyaWQgZ3JpZC1jb2xzLTIgdGV4dC1jZW50ZXIgYm9yZGVyLXQgYm9yZGVyLWdyYXktMzAwIHB0LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZm9udC1ib2xkXCI+5p6B6ZmQPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2xpbWl0ZGF0YSAmJiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+e2xpbWl0ZGF0YS5MT09QfTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtwb2VUYWIgPT09ICfnur/lr7lVQkwnICYmIChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtdC00IHNwYWNlLXktNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJncmlkIGdyaWQtY29scy0zIHRleHQtY2VudGVyIGJvcmRlci1iIGJvcmRlci1ncmF5LTMwMCBwYi0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmb250LWJvbGRcIj4gIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggZmxleC1jb2wgaXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtZ3JheS01MDAgdGV4dC1sZ1wiPuWAvCjOqSk8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGZsZXgtY29sIGl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LWdyYXktNTAwIHRleHQtbGdcIj7mnoHpmZAozqkpPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7W1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgcGFpcjogJzEsMicsIGNvbG9yOiAndGV4dC1vcmFuZ2UtNTAwJywgdmFsdWU6IHRlc3RSZXN1bHQ/LnJlc3VsdGRhdGE/LnBlcmZvcm1hbmNlPy5PSE0/LlBBSVJVQkw/LlBBSVIxMiB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgcGFpcjogJzMsNicsIGNvbG9yOiAndGV4dC1ncmVlbi01MDAnLCB2YWx1ZTogdGVzdFJlc3VsdD8ucmVzdWx0ZGF0YT8ucGVyZm9ybWFuY2U/Lk9ITT8uUEFJUlVCTD8uUEFJUjM2IH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKHdpcmVPcmRlciAhPT0gJ0V0aGVybmV0IFR3by1QYWlyJyAmJiB3aXJlT3JkZXIgIT09ICdNMTItRCBUd28tUGFpcicgPyBbXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHBhaXI6ICc0LDUnLCBjb2xvcjogJ3RleHQtYmx1ZS01MDAnLCB2YWx1ZTogdGVzdFJlc3VsdD8ucmVzdWx0ZGF0YT8ucGVyZm9ybWFuY2U/Lk9ITT8uUEFJUlVCTD8uUEFJUjQ1IH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgcGFpcjogJzcsOCcsIGNvbG9yOiAndGV4dC15ZWxsb3ctNTAwJywgdmFsdWU6IHRlc3RSZXN1bHQ/LnJlc3VsdGRhdGE/LnBlcmZvcm1hbmNlPy5PSE0/LlBBSVJVQkw/LlBBSVI3OCB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSA6IFtdKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXS5tYXAoKHsgcGFpciwgY29sb3IsIHZhbHVlIH0pID0+IChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGtleT17cGFpcn0gY2xhc3NOYW1lPVwiZ3JpZCBncmlkLWNvbHMtMyB0ZXh0LWNlbnRlciBweS0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtgZm9udC1ib2xkICR7Y29sb3J9YH0+e3BhaXJ9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtgJHt2YWx1ZSA+IGxpbWl0ZGF0YT8uUEFJUlVCTCA/ICdiZy1yZWQtMTAwJyA6ICcnfWB9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3ZhbHVlIHx8ICdOL0EnfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2xpbWl0ZGF0YSAmJiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+e2xpbWl0ZGF0YS5QQUlSVUJMfTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7cG9lVGFiID09PSAnUDJQIFVCTCcgJiYgKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm10LTQgc3BhY2UteS00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImdyaWQgZ3JpZC1jb2xzLTMgdGV4dC1jZW50ZXIgYm9yZGVyLWIgYm9yZGVyLWdyYXktMzAwIHBiLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZvbnQtYm9sZFwiPiAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGZsZXgtY29sIGl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LWdyYXktNTAwIHRleHQtbGdcIj7lgLwozqkpPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBmbGV4LWNvbCBpdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC1ncmF5LTUwMCB0ZXh0LWxnXCI+5p6B6ZmQKM6pKTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHBhaXI6ICcxMi0zNicsIGNvbG9yOiAndGV4dC1vcmFuZ2UtNTAwJywgdmFsdWU6IHRlc3RSZXN1bHQ/LnJlc3VsdGRhdGE/LnBlcmZvcm1hbmNlPy5PSE0/LlAyUFVCTD8uUEFJUjEyMzYgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4od2lyZU9yZGVyICE9PSAnRXRoZXJuZXQgVHdvLVBhaXInICYmIHdpcmVPcmRlciAhPT0gJ00xMi1EIFR3by1QYWlyJyA/IFtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgcGFpcjogJzEyLTQ1JywgY29sb3I6ICd0ZXh0LWdyZWVuLTUwMCcsIHZhbHVlOiB0ZXN0UmVzdWx0Py5yZXN1bHRkYXRhPy5wZXJmb3JtYW5jZT8uT0hNPy5QMlBVQkw/LlBBSVIxMjQ1IH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgcGFpcjogJzEyLTc4JywgY29sb3I6ICd0ZXh0LWJsdWUtNTAwJywgdmFsdWU6IHRlc3RSZXN1bHQ/LnJlc3VsdGRhdGE/LnBlcmZvcm1hbmNlPy5PSE0/LlAyUFVCTD8uUEFJUjEyNzggfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBwYWlyOiAnMzYtNDUnLCBjb2xvcjogJ3RleHQteWVsbG93LTUwMCcsIHZhbHVlOiB0ZXN0UmVzdWx0Py5yZXN1bHRkYXRhPy5wZXJmb3JtYW5jZT8uT0hNPy5QMlBVQkw/LlBBSVIzNjQ1IH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgcGFpcjogJzM2LTc4JywgY29sb3I6ICd0ZXh0LXB1cnBsZS01MDAnLCB2YWx1ZTogdGVzdFJlc3VsdD8ucmVzdWx0ZGF0YT8ucGVyZm9ybWFuY2U/Lk9ITT8uUDJQVUJMPy5QQUlSMzY3OCB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHBhaXI6ICc0NS03OCcsIGNvbG9yOiAndGV4dC1waW5rLTUwMCcsIHZhbHVlOiB0ZXN0UmVzdWx0Py5yZXN1bHRkYXRhPy5wZXJmb3JtYW5jZT8uT0hNPy5QMlBVQkw/LlBBSVI0NTc4IH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdIDogW10pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLm1hcCgoeyBwYWlyLCBjb2xvciwgdmFsdWUgfSkgPT4gKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYga2V5PXtwYWlyfSBjbGFzc05hbWU9XCJncmlkIGdyaWQtY29scy0zIHRleHQtY2VudGVyIHB5LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2Bmb250LWJvbGQgJHtjb2xvcn1gfT57cGFpcn08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2Ake3ZhbHVlID4gbGltaXRkYXRhPy5QMlBVQkwgPyAnYmctcmVkLTEwMCcgOiAnJ31gfT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt2YWx1ZSB8fCAnTi9BJ31cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtsaW1pdGRhdGEgJiYgKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PntsaW1pdGRhdGEuUDJQVUJMfTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICBjYXNlICdEUkFXJzpcclxuICAgICAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LWZ1bGwgaC1bZnVsbF0gYmctWyM2YjZkNmJdXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy1mdWxsIGgtZnVsbCBiZy13aGl0ZSBwLTQgcm91bmRlZC1tZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2xpbWl0ZGF0YSAmJiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZyZXF1ZW5jeUNoYXJ0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnRpdGxlPXtjdXJ0aXRsZX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGltaXRWYWx1ZT17bGltaXRWYWx1ZX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGltaXRkYXRhPXtsaW1pdGRhdGF9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpcmVPcmRlcj17d2lyZU9yZGVyfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhPXt0ZXN0UmVzdWx0Py5yZXN1bHRkYXRhPy5wZXJmb3JtYW5jZT8uZGF0YX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgY2FzZSAnSERURCc6XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LWZ1bGwgaC1bZnVsbF0gYmctWyM2YjZkNmJdXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctZnVsbCBoLWZ1bGwgYmctd2hpdGUgcC00IHJvdW5kZWQtbWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7bGltaXRkYXRhICYmIChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEhEVERDaGFydFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VydGl0bGU9e2N1cnRpdGxlfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSERURD17dGVzdFJlc3VsdD8ucmVzdWx0ZGF0YT8uSERURH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IHJlbmRlckZvb3RlciA9ICgpID0+IHtcclxuICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImgtWzYwcHhdIGJnLVsjMTMyODQzXSBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWVuZCBweC04XCI+XHJcblxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiAoXHJcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LWZ1bGwgaC1mdWxsIGZsZXggZmxleC1jb2wgb3ZlcmZsb3ctaGlkZGVuXCI+XHJcbiAgICAgICAgICAgIDxTdGF0dXNCYXIgLz5cclxuICAgICAgICAgICAge3JlbmRlclJlc3VsdFRpdGxlQmFyKCl9XHJcbiAgICAgICAgICAgIHtyZW5kZXJDb250ZW50KCl9XHJcbiAgICAgICAgICAgIHtyZW5kZXJGb290ZXIoKX1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICk7XHJcbn0iXSwibmFtZXMiOlsiUmVhY3QiLCJ1c2VTdGF0ZSIsInVzZUVmZmVjdCIsIlN0YXR1c0JhciIsIlJlc3VsdFRpdGxlQmFyIiwidXNlRGlzcGxheVN0b3JlIiwiRnJlcXVlbmN5Q2hhcnQiLCJIRFREQ2hhcnQiLCJDb3BwZXJQZXJmb3JtYW5jZSIsIm5hdmlnYXRpb24iLCJuYXZpZ2F0ZVRvIiwiZ29CYWNrIiwidmlldyIsImN1cnJlbnQiLCJjdXJ0aXRsZSIsInBhcmFtcyIsInRlc3RSZXN1bHQiLCJsaW1pdFZhbHVlIiwidGVzdGNvbmZpZyIsImxpbWl0ZGF0YSIsInNldExpbWl0ZGF0YSIsIndpcmVPcmRlciIsImxvYWRMaW1pdERhdGEiLCJiYXNlTmFtZSIsInNwbGl0IiwiZGF0YSIsImVycm9yIiwiY29uc29sZSIsInBvZVRhYiIsInNldFBvZVRhYiIsInJlbmRlclJlc3VsdFRpdGxlQmFyIiwiaGFuZGxlQmFjayIsInRpdGxlIiwib25CYWNrIiwicmVuZGVyQ29udGVudCIsImRpdiIsImNsYXNzTmFtZSIsInNwYW4iLCJwYWlyIiwiY29sb3IiLCJkZWxheSIsInJlc3VsdGRhdGEiLCJwZXJmb3JtYW5jZSIsIkRFTEFZIiwiUEFJUjEyIiwiZGVsYXlTa2V3IiwiREVMQVlTS0VXIiwibGVuZ3RoIiwiTEVOR1RIIiwiUEFJUjM2IiwiUEFJUjQ1IiwiUEFJUjc4IiwibWFwIiwiaW5jbHVkZXMiLCJ0YWIiLCJidXR0b24iLCJvbkNsaWNrIiwidmFsdWUiLCJPSE0iLCJMT09QIiwiUEFJUlVCTCIsIlAyUFVCTCIsIlBBSVIxMjM2IiwiUEFJUjEyNDUiLCJQQUlSMTI3OCIsIlBBSVIzNjQ1IiwiUEFJUjM2NzgiLCJQQUlSNDU3OCIsIkhEVEQiLCJyZW5kZXJGb290ZXIiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(pages-dir-node)/./src/components/dsxpage/general/CopperPerformance.js\n"); /***/ }), /***/ "(pages-dir-node)/./src/components/dsxpage/general/HomePage.js": /*!****************************************************!*\ !*** ./src/components/dsxpage/general/HomePage.js ***! \****************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; eval("__webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ HomePage)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"react/jsx-dev-runtime\");\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 */ \"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var next_image__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! next/image */ \"(pages-dir-node)/./node_modules/next/image.js\");\n/* harmony import */ var next_image__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(next_image__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _components_lib_StatusBar__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/components/lib//StatusBar */ \"(pages-dir-node)/./src/components/lib/StatusBar.js\");\n/* harmony import */ var _components_lib_TitleBar__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/components/lib//TitleBar */ \"(pages-dir-node)/./src/components/lib/TitleBar.js\");\n/* harmony import */ var _store_displayStore__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/store/displayStore */ \"(pages-dir-node)/./src/store/displayStore.js\");\n/* harmony import */ var _store_deviceStore__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @/store/deviceStore */ \"(pages-dir-node)/./src/store/deviceStore.js\");\n/* harmony import */ var _utils_asset__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @/utils/asset */ \"(pages-dir-node)/./src/utils/asset.js\");\nvar __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_components_lib_StatusBar__WEBPACK_IMPORTED_MODULE_3__, _components_lib_TitleBar__WEBPACK_IMPORTED_MODULE_4__, _store_displayStore__WEBPACK_IMPORTED_MODULE_5__, _store_deviceStore__WEBPACK_IMPORTED_MODULE_6__, _utils_asset__WEBPACK_IMPORTED_MODULE_7__]);\n([_components_lib_StatusBar__WEBPACK_IMPORTED_MODULE_3__, _components_lib_TitleBar__WEBPACK_IMPORTED_MODULE_4__, _store_displayStore__WEBPACK_IMPORTED_MODULE_5__, _store_deviceStore__WEBPACK_IMPORTED_MODULE_6__, _utils_asset__WEBPACK_IMPORTED_MODULE_7__] = __webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__);\n\n\n\n\n\n\n\n\nfunction HomePage() {\n const { getCurrentProject, getCurrentTestConfig, getCurrentOperator, getCurrentCableId, getCurrentCableId2, navigateTo, hasPlayedSound, setToastMessage } = (0,_store_displayStore__WEBPACK_IMPORTED_MODULE_5__[\"default\"])();\n const { ref } = _store_displayStore__WEBPACK_IMPORTED_MODULE_5__[\"default\"].getState();\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)({\n \"HomePage.useEffect\": ()=>{\n if (hasPlayedSound) {\n _store_displayStore__WEBPACK_IMPORTED_MODULE_5__[\"default\"].setState({\n hasPlayedSound: false\n });\n }\n }\n }[\"HomePage.useEffect\"], [\n hasPlayedSound\n ]);\n const { connectionStatus, mainUnitAdapter, remoteUnitAdapter, mainUnitModules, setTotalToastMessage } = (0,_store_deviceStore__WEBPACK_IMPORTED_MODULE_6__[\"default\"])();\n // 获取当前项目数据\n const currentProject = getCurrentProject();\n // 获取当前选中的测试配置\n const currentConfig = getCurrentTestConfig();\n // 获取当前选中的操作员\n const currentOperator = getCurrentOperator();\n // 获取当前选中的电缆ID\n const currentCableId = getCurrentCableId();\n // 获取当前选中的电缆ID2\n const currentCableId2 = getCurrentCableId2();\n const passCount = currentProject?.testResults.filter((result)=>{\n const copperStatus = result.CopperResultStatus;\n const cfpStatus = result.CFPResultStatus;\n const ofpStatus = result.ofpResultStatus;\n if (copperStatus) {\n return copperStatus === 'pass';\n } else if (cfpStatus) {\n return cfpStatus === 'pass';\n } else if (ofpStatus) {\n return ofpStatus === 'pass';\n }\n return false;\n }).length;\n const failCount = currentProject?.testResults.filter((result)=>{\n const copperStatus = result.CopperResultStatus;\n const cfpStatus = result.CFPResultStatus;\n const ofpStatus = result.ofpResultStatus;\n if (copperStatus) {\n return copperStatus === 'fail';\n } else if (cfpStatus) {\n return cfpStatus === 'fail';\n } else if (ofpStatus) {\n return ofpStatus === 'fail';\n }\n return false;\n }).length;\n const ConnectStatus = connectionStatus?.CFPConnectStatus ?? connectionStatus?.['8000ConnectStatus'];\n // 计算下一个线缆ID\n const getNextCableId = (currentId)=>{\n const match = currentId.match(/^(.*?)(\\d+)$/);\n if (match) {\n const prefix = match[1];\n const number = parseInt(match[2]) + 1;\n return `${prefix}${number.toString().padStart(match[2].length, '0')}`;\n }\n return currentId;\n };\n const handleProjectClick = ()=>{\n navigateTo('project', 'main');\n };\n const handleOperatorsClick = ()=>{\n navigateTo('operators', 'main');\n };\n // 渲染测试配置区域的内容\n const renderTestConfigContent = ()=>{\n if (!currentConfig) return null;\n switch(currentConfig.moduleType){\n case '8000':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-col justify-center h-full space-y-0.2 text-sm\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black text-sm\",\n children: currentConfig.params.limitValue\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/HomePage.js\",\n lineNumber: 109,\n columnNumber: 26\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black text-sm\",\n children: currentConfig.params.cableType\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/HomePage.js\",\n lineNumber: 110,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black text-sm\",\n children: currentConfig.params.wireOrder\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/HomePage.js\",\n lineNumber: 111,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/HomePage.js\",\n lineNumber: 108,\n columnNumber: 21\n }, this);\n case 'cfp':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-col justify-center h-full space-y-0.2 text-sm\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black text-sm\",\n children: \"智能远端\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/HomePage.js\",\n lineNumber: 117,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black text-sm\",\n children: currentConfig.params.limitValue\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/HomePage.js\",\n lineNumber: 118,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black text-sm\",\n children: currentConfig.params.cableType\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/HomePage.js\",\n lineNumber: 119,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black text-sm\",\n children: [\n currentConfig.params.refJumper,\n \" 跳线参照\"\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/HomePage.js\",\n lineNumber: 120,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/HomePage.js\",\n lineNumber: 116,\n columnNumber: 21\n }, this);\n case 'ofp':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-col justify-center h-full space-y-0.2 text-sm\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black text-sm\",\n children: \"自动OTDR\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/HomePage.js\",\n lineNumber: 126,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black text-sm\",\n children: currentConfig.params.limitValue\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/HomePage.js\",\n lineNumber: 127,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black text-sm\",\n children: currentConfig.params.cableType\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/HomePage.js\",\n lineNumber: 128,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/HomePage.js\",\n lineNumber: 125,\n columnNumber: 21\n }, this);\n default:\n return null;\n }\n };\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full h-full flex flex-col overflow-hidden bg-[#132843]\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_StatusBar__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {}, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/HomePage.js\",\n lineNumber: 140,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_TitleBar__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n title: \"主页\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/HomePage.js\",\n lineNumber: 141,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[490px] bg-[#D5DFEB] p-4 flex flex-col\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[40px]\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-[#132843] text-2xl font-bold mb-1 flex items-center justify-center\",\n children: \"EST 仿真线缆测试仪\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/HomePage.js\",\n lineNumber: 145,\n columnNumber: 21\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/HomePage.js\",\n lineNumber: 144,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \" bg-[#D5DFEB] rounded-lg p-4 shadow-xl flex flex-col gap-3\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-[#F8F6F7] rounded-lg p-4 shadow-md hover:shadow-lg transition-shadow duration-200 \",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex justify-between items-start\",\n children: mainUnitModules?.[0]?.id === '8000' ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-lg font-bold text-[#132843] \",\n children: \"当前安装模块:铜缆分析模块\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/HomePage.js\",\n lineNumber: 155,\n columnNumber: 37\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/HomePage.js\",\n lineNumber: 154,\n columnNumber: 33\n }, this) : mainUnitModules?.[0]?.id === 'cfp' ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-lg font-bold text-[#132843]\",\n children: \"当前安装模块:光纤损耗模块\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/HomePage.js\",\n lineNumber: 159,\n columnNumber: 37\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/HomePage.js\",\n lineNumber: 158,\n columnNumber: 33\n }, this) : mainUnitModules?.[0]?.id === 'ofp' ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-lg font-bold text-[#132843]\",\n children: \"当前安装模块:光时域反射模块\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/HomePage.js\",\n lineNumber: 163,\n columnNumber: 37\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/HomePage.js\",\n lineNumber: 162,\n columnNumber: 33\n }, this) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-lg font-bold text-[#132843]\",\n children: \"请安装模块\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/HomePage.js\",\n lineNumber: 167,\n columnNumber: 37\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/HomePage.js\",\n lineNumber: 166,\n columnNumber: 33\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/HomePage.js\",\n lineNumber: 152,\n columnNumber: 25\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/HomePage.js\",\n lineNumber: 151,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-[#F8F6F7] rounded-lg p-4 shadow-md hover:shadow-lg transition-shadow duration-200 cursor-pointer\",\n onClick: handleProjectClick,\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-[#132843] font-bold mb-1\",\n children: \"项目\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/HomePage.js\",\n lineNumber: 177,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex justify-between items-start\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-[#132843] text-sm pt-2\",\n children: currentProject?.name\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/HomePage.js\",\n lineNumber: 180,\n columnNumber: 33\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/HomePage.js\",\n lineNumber: 179,\n columnNumber: 29\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-2 bg-[#D5DFEB] px-3 py-1 rounded-full\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-green-600 font-medium\",\n children: passCount || 0\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/HomePage.js\",\n lineNumber: 185,\n columnNumber: 41\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-4 h-4 relative\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: (0,_utils_asset__WEBPACK_IMPORTED_MODULE_7__.getAssetUrl)('/pass.png'),\n alt: \"通过\",\n sizes: \"auto\",\n fill: true,\n className: \"object-contain\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/HomePage.js\",\n lineNumber: 187,\n columnNumber: 45\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/HomePage.js\",\n lineNumber: 186,\n columnNumber: 41\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/HomePage.js\",\n lineNumber: 184,\n columnNumber: 37\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-2 bg-[#D5DFEB] px-3 py-1 rounded-full\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-red-600 font-medium\",\n children: failCount || 0\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/HomePage.js\",\n lineNumber: 197,\n columnNumber: 41\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-4 h-4 relative\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: (0,_utils_asset__WEBPACK_IMPORTED_MODULE_7__.getAssetUrl)('/fail.png'),\n alt: \"失败\",\n sizes: \"auto\",\n fill: true,\n className: \"object-contain\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/HomePage.js\",\n lineNumber: 199,\n columnNumber: 45\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/HomePage.js\",\n lineNumber: 198,\n columnNumber: 41\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/HomePage.js\",\n lineNumber: 196,\n columnNumber: 37\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/HomePage.js\",\n lineNumber: 183,\n columnNumber: 37\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/HomePage.js\",\n lineNumber: 178,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/HomePage.js\",\n lineNumber: 174,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-[#F8F6F7] rounded-lg p-4 shadow-md hover:shadow-lg transition-shadow duration-200 cursor-pointer h-[120px] flex justify-between items-center\",\n onClick: ()=>navigateTo('testConfig', 'main'),\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-col\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-[#132843] font-bold mb-1\",\n children: \"测试极限值\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/HomePage.js\",\n lineNumber: 227,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1\",\n children: renderTestConfigContent()\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/HomePage.js\",\n lineNumber: 229,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/HomePage.js\",\n lineNumber: 226,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-3\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-[#3965A2] text-sm font-medium\",\n children: currentConfig?.modulelable\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/HomePage.js\",\n lineNumber: 232,\n columnNumber: 29\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/HomePage.js\",\n lineNumber: 231,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/HomePage.js\",\n lineNumber: 222,\n columnNumber: 21\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)(\"div\", {\n className: \"bg-[#F8F6F7] rounded-lg p-4 shadow-md hover:shadow-lg transition-shadow duration-200 cursor-pointer\",\n onClick: ()=>navigateTo('cableId', currentConfig?.moduleType === 'cfp' ? 'cfp' : 'main'),\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex justify-between items-start\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-col\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-[#132843] font-bold mb-1\",\n children: \"下一条记录\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/HomePage.js\",\n lineNumber: 255,\n columnNumber: 37\n }, this),\n currentConfig?.moduleType === 'cfp' ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-[#132843] text-sm\",\n children: [\n \"输入:\",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"font-medium\",\n children: currentCableId?.name || ''\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/HomePage.js\",\n lineNumber: 258,\n columnNumber: 88\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/HomePage.js\",\n lineNumber: 258,\n columnNumber: 45\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-[#132843] text-sm\",\n children: [\n \"输出:\",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"font-medium\",\n children: currentCableId2?.name || ''\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/HomePage.js\",\n lineNumber: 259,\n columnNumber: 88\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/HomePage.js\",\n lineNumber: 259,\n columnNumber: 45\n }, this)\n ]\n }, void 0, true) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-[#132843] text-sm\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"font-medium\",\n children: currentCableId?.name || ''\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/HomePage.js\",\n lineNumber: 263,\n columnNumber: 45\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/HomePage.js\",\n lineNumber: 262,\n columnNumber: 41\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/HomePage.js\",\n lineNumber: 254,\n columnNumber: 33\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/HomePage.js\",\n lineNumber: 253,\n columnNumber: 29\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/HomePage.js\",\n lineNumber: 249,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-[#F8F6F7] rounded-lg p-4 shadow-md hover:shadow-lg transition-shadow duration-200 cursor-pointer\",\n onClick: handleOperatorsClick,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex justify-between items-start\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-col\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-[#132843] font-bold mb-1\",\n children: \"操作员\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/HomePage.js\",\n lineNumber: 286,\n columnNumber: 37\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-[#132843] text-sm\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"font-medium\",\n children: currentOperator?.name || ''\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/HomePage.js\",\n lineNumber: 288,\n columnNumber: 41\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/HomePage.js\",\n lineNumber: 287,\n columnNumber: 37\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/HomePage.js\",\n lineNumber: 285,\n columnNumber: 33\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/HomePage.js\",\n lineNumber: 284,\n columnNumber: 29\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/HomePage.js\",\n lineNumber: 280,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/HomePage.js\",\n lineNumber: 247,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/HomePage.js\",\n lineNumber: 148,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/HomePage.js\",\n lineNumber: 143,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[60px] bg-[#132843] bg-opacity-30 backdrop-blur-sm flex items-center justify-between px-5\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-1/4 flex-1 flex justify-start\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n className: \"w-[100%] h-[60px] hover:bg-[#163154] transition-colors duration-200 rounded-lg flex items-center justify-center text-white font-bold shadow-lg\",\n onClick: ()=>navigateTo('tools', 'main'),\n children: \"工具\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/HomePage.js\",\n lineNumber: 313,\n columnNumber: 29\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/HomePage.js\",\n lineNumber: 312,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-1/4 flex-1 flex justify-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n className: \"w-[100%] h-[60px] hover:bg-[#163154] transition-colors duration-200 rounded-lg flex items-center justify-center text-white font-bold shadow-lg\",\n onClick: ()=>navigateTo('result', 'main'),\n children: \"结果\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/HomePage.js\",\n lineNumber: 322,\n columnNumber: 29\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/HomePage.js\",\n lineNumber: 321,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-1/4 flex-1 flex justify-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n className: \"w-[100%] h-[60px] hover:bg-[#163154] transition-colors duration-200 rounded-lg flex items-center justify-center text-white font-bold shadow-lg\",\n onClick: ()=>{\n // 根据模块类型设置不同的参照逻辑\n if (currentConfig?.moduleType === '8000') {\n navigateTo('tools', 'ref-copper');\n } else if (currentConfig?.moduleType === 'cfp') {\n navigateTo('tools', 'ref-cfp');\n } else if (currentConfig?.moduleType === 'ofp') {\n navigateTo('tools', 'ref-ofp');\n }\n },\n children: currentConfig?.moduleType === '8000' ? '设置基准' : currentConfig?.moduleType === 'cfp' ? '设置参照' : currentConfig?.moduleType === 'ofp' ? '设置补偿' : '设置参照'\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/HomePage.js\",\n lineNumber: 331,\n columnNumber: 29\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/HomePage.js\",\n lineNumber: 330,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-1/4 flex-1 flex justify-end\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n className: \"w-[100%] h-[60px] hover:bg-[#163154] transition-colors duration-200 rounded-lg flex items-center justify-center text-white font-bold shadow-lg\",\n onClick: ()=>{\n if (currentConfig?.moduleType === '8000' || currentConfig?.moduleType === 'cfp') {\n if (!ConnectStatus) {\n setToastMessage('未连接,请检查连接状态');\n return;\n }\n }\n if (currentConfig?.moduleType === '8000') {\n if (mainUnitModules?.[0]?.id !== '8000') {\n setToastMessage('当前模块与所选标准不兼容');\n return;\n }\n const limitValue = currentConfig.params.limitValue;\n if (limitValue.includes('Channel') || limitValue.includes('Ch')) {\n if (!mainUnitAdapter.id.includes('channel') || !remoteUnitAdapter.id.includes('channel')) {\n setToastMessage('当前适配器与所选标准不兼容');\n return;\n }\n } else if (limitValue.includes('Perm') || limitValue.includes('PL')) {\n if (!mainUnitAdapter.id.includes('permanent') || !remoteUnitAdapter.id.includes('permanent')) {\n setToastMessage('当前适配器与所选标准不兼容');\n return;\n }\n } else if (limitValue.includes('MPTL')) {\n const hasPermanent = mainUnitAdapter.id.includes('permanent') || remoteUnitAdapter.id.includes('permanent');\n const hasPatchcode = mainUnitAdapter.id.includes('patchcode') || remoteUnitAdapter.id.includes('patchcode');\n if (!(hasPermanent && hasPatchcode)) {\n setToastMessage('当前适配器与所选标准不兼容');\n return;\n }\n }\n }\n if (currentConfig?.moduleType === 'cfp') {\n if (mainUnitModules?.[0]?.id !== 'cfp') {\n setToastMessage('当前模块与所选标准不兼容');\n return;\n }\n // 检查光纤类型\n const cableType = currentConfig.params.cableType;\n const isMultiMode = cableType.includes('OM');\n // 根据单/多模获取对应的路径\n let mainOutPath, mainInPath, remoteOutPath, remoteInPath;\n if (isMultiMode) {\n // 多模光纤路径\n mainOutPath = connectionStatus?.mainPaths?.['main-cfp-mm-out']?.path || [];\n mainInPath = connectionStatus?.mainPaths?.['main-cfp-in']?.path || [];\n remoteOutPath = connectionStatus?.remotePaths?.['remote-cfp-mm-out']?.path || [];\n remoteInPath = connectionStatus?.remotePaths?.['remote-cfp-in']?.path || [];\n // 检查是否所有端口都已连接\n if (!mainOutPath.length || !mainInPath.length || !remoteOutPath.length || !remoteInPath.length) {\n setTotalToastMessage('请确保所有光纤端口都已正确连接');\n return;\n }\n // 检查是否存在单模跳线\n const hasInvalidConnector = [\n ...mainOutPath,\n ...mainInPath,\n ...remoteOutPath,\n ...remoteInPath\n ].some((item)=>{\n return item.includes('sm');\n });\n if (hasInvalidConnector) {\n setTotalToastMessage('多模光纤链路中存在单模跳线,请检查连接');\n return;\n }\n } else {\n // 单模光纤路径\n mainOutPath = connectionStatus?.mainPaths?.['main-cfp-sm-out']?.path || [];\n mainInPath = connectionStatus?.mainPaths?.['main-cfp-in']?.path || [];\n remoteOutPath = connectionStatus?.remotePaths?.['remote-cfp-sm-out']?.path || [];\n remoteInPath = connectionStatus?.remotePaths?.['remote-cfp-in']?.path || [];\n // 检查是否所有端口都已连接\n if (!mainOutPath.length || !mainInPath.length || !remoteOutPath.length || !remoteInPath.length) {\n setTotalToastMessage('请确保所有光纤端口都已正确连接');\n return;\n }\n // 检查是否存在多模跳线\n const hasInvalidConnector = [\n ...mainOutPath,\n ...mainInPath,\n ...remoteOutPath,\n ...remoteInPath\n ].some((item)=>{\n return item.includes('mm');\n });\n if (hasInvalidConnector) {\n setTotalToastMessage('单模光纤链路中存在多模跳线,请检查连接');\n return;\n }\n }\n }\n if (currentConfig?.moduleType === 'ofp') {\n if (mainUnitModules?.[0]?.id !== 'ofp') {\n setToastMessage('当前模块与所选标准不兼容');\n return;\n }\n // 检查光纤类型是否匹配\n const cableType = currentConfig.params.cableType;\n const isMultiMode = cableType.includes('OM');\n const portType = Object.values(connectionStatus?.mainPaths || {})[0]?.start;\n if (isMultiMode && portType !== 'main-ofp-mm-out') {\n setTotalToastMessage('当前光纤类型必须使用多模端口测试');\n return;\n }\n if (!isMultiMode && portType !== 'main-ofp-sm-out') {\n setTotalToastMessage('当前光纤类型必须使用单模端口测试');\n return;\n }\n // 检查光纤连接器类型是否匹配\n const path = Object.values(connectionStatus?.mainPaths || {})[0]?.path || [];\n const hasInvalidConnector = path.some((item)=>{\n if (isMultiMode) {\n return item.includes('sm-') || item.includes('smc-');\n } else {\n return item.includes('mm-') || item.includes('mmc-');\n }\n });\n if (hasInvalidConnector) {\n setTotalToastMessage(isMultiMode ? '未检测到多模光纤,请检查光纤连接' : '未检测到单模光纤,请检查光纤连接');\n return;\n }\n if (!connectionStatus?.OFPStatus) {\n setTotalToastMessage('请接入实际被测链路,进行测试');\n return;\n }\n // 检查光纤连接数量\n const fiberConnectorCount = path.filter((item)=>{\n return item.includes('sm-') || item.includes('mm-') || item.includes('smc-') || item.includes('mmc-');\n }).length;\n if (fiberConnectorCount > 3) {\n setTotalToastMessage('该场景仅支持使用一段光纤连接测试仪与链路');\n return;\n }\n }\n navigateTo('testing', 'nosave');\n },\n children: \"测试\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/HomePage.js\",\n lineNumber: 351,\n columnNumber: 29\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/HomePage.js\",\n lineNumber: 350,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/HomePage.js\",\n lineNumber: 310,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/HomePage.js\",\n lineNumber: 139,\n columnNumber: 9\n }, this);\n}\n\n__webpack_async_result__();\n} catch(e) { __webpack_async_result__(e); } });//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHBhZ2VzLWRpci1ub2RlKS8uL3NyYy9jb21wb25lbnRzL2RzeHBhZ2UvZ2VuZXJhbC9Ib21lUGFnZS5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQXlDO0FBQ1Y7QUFDcUI7QUFDRjtBQUNDO0FBQ0Y7QUFDTDtBQUU3QixTQUFTUTtJQUNwQixNQUFNLEVBQ0ZDLGlCQUFpQixFQUNqQkMsb0JBQW9CLEVBQ3BCQyxrQkFBa0IsRUFDbEJDLGlCQUFpQixFQUNqQkMsa0JBQWtCLEVBQ2xCQyxVQUFVLEVBQ1ZDLGNBQWMsRUFDZEMsZUFBZSxFQUNsQixHQUFHWCwrREFBZUE7SUFFbkIsTUFBTSxFQUFFWSxHQUFHLEVBQUUsR0FBR1osb0VBQXdCO0lBRXhDSixnREFBU0E7OEJBQUM7WUFDTixJQUFJYyxnQkFBZ0I7Z0JBQ2hCVixvRUFBd0IsQ0FBQztvQkFBRVUsZ0JBQWdCO2dCQUFNO1lBQ3JEO1FBQ0o7NkJBQUc7UUFBQ0E7S0FBZTtJQUVuQixNQUFNLEVBQUVLLGdCQUFnQixFQUFFQyxlQUFlLEVBQUVDLGlCQUFpQixFQUFDQyxlQUFlLEVBQUNDLG9CQUFvQixFQUFFLEdBQUdsQiw4REFBY0E7SUFHcEgsV0FBVztJQUNYLE1BQU1tQixpQkFBaUJoQjtJQUV2QixjQUFjO0lBQ2QsTUFBTWlCLGdCQUFnQmhCO0lBRXRCLGFBQWE7SUFDYixNQUFNaUIsa0JBQWtCaEI7SUFFeEIsY0FBYztJQUNkLE1BQU1pQixpQkFBaUJoQjtJQUN2QixlQUFlO0lBQ2YsTUFBTWlCLGtCQUFrQmhCO0lBRXhCLE1BQU1pQixZQUFZTCxnQkFBZ0JNLFlBQVlDLE9BQU9DLENBQUFBO1FBQ2pELE1BQU1DLGVBQWVELE9BQU9FLGtCQUFrQjtRQUM5QyxNQUFNQyxZQUFZSCxPQUFPSSxlQUFlO1FBQ3hDLE1BQU1DLFlBQVlMLE9BQU9NLGVBQWU7UUFFeEMsSUFBSUwsY0FBYztZQUNkLE9BQU9BLGlCQUFpQjtRQUM1QixPQUFPLElBQUlFLFdBQVc7WUFDbEIsT0FBT0EsY0FB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Z0JBQWdCO29DQUNoQixNQUFNMkQsT0FBT00sT0FBT0MsTUFBTSxDQUFDdEUsa0JBQWtCOEQsYUFBYSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUVDLFFBQVEsRUFBRTtvQ0FDNUUsTUFBTUUsc0JBQXNCRixLQUFLRyxJQUFJLENBQUNDLENBQUFBO3dDQUNsQyxJQUFJVixhQUFhOzRDQUNiLE9BQU9VLEtBQUtiLFFBQVEsQ0FBQyxVQUFVYSxLQUFLYixRQUFRLENBQUM7d0NBQ2pELE9BQU87NENBQ0gsT0FBT2EsS0FBS2IsUUFBUSxDQUFDLFVBQVVhLEtBQUtiLFFBQVEsQ0FBQzt3Q0FDakQ7b0NBQ0o7b0NBRUEsSUFBSVcscUJBQXFCO3dDQUNyQjdELHFCQUFxQnFELGNBQWMscUJBQXFCO3dDQUN4RDtvQ0FDSjtvQ0FFQSxJQUFJLENBQUN6RCxrQkFBa0J3RSxXQUFXO3dDQUM5QnBFLHFCQUFxQjt3Q0FDckI7b0NBQ0o7b0NBRUEsV0FBVztvQ0FDWCxNQUFNcUUsc0JBQXNCVixLQUFLbkQsTUFBTSxDQUFDdUQsQ0FBQUE7d0NBQ3BDLE9BQU9BLEtBQUtiLFFBQVEsQ0FBQyxVQUFVYSxLQUFLYixRQUFRLENBQUMsVUFDdENhLEtBQUtiLFFBQVEsQ0FBQyxXQUFXYSxLQUFLYixRQUFRLENBQUM7b0NBQ2xELEdBQUdsQyxNQUFNO29DQUVULElBQUlxRCxzQkFBc0IsR0FBRzt3Q0FDekJyRSxxQkFBcUI7d0NBQ3JCO29DQUNKO2dDQUNKO2dDQUVBVixXQUFXLFdBQVU7NEJBQ3pCO3NDQUNIOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVE3QiIsInNvdXJjZXMiOlsiL29wdC9kZXYvZXN0LWRzeC9zcmMvY29tcG9uZW50cy9kc3hwYWdlL2dlbmVyYWwvSG9tZVBhZ2UuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCB9IGZyb20gJ3JlYWN0JztcclxuaW1wb3J0IEltYWdlIGZyb20gJ25leHQvaW1hZ2UnO1xyXG5pbXBvcnQgU3RhdHVzQmFyIGZyb20gJ0AvY29tcG9uZW50cy9saWIvL1N0YXR1c0Jhcic7XHJcbmltcG9ydCBUaXRsZUJhciBmcm9tICdAL2NvbXBvbmVudHMvbGliLy9UaXRsZUJhcic7XHJcbmltcG9ydCB1c2VEaXNwbGF5U3RvcmUgZnJvbSAnQC9zdG9yZS9kaXNwbGF5U3RvcmUnO1xyXG5pbXBvcnQgdXNlRGV2aWNlU3RvcmUgZnJvbSAnQC9zdG9yZS9kZXZpY2VTdG9yZSc7XHJcbmltcG9ydCB7IGdldEFzc2V0VXJsIH0gZnJvbSAnQC91dGlscy9hc3NldCc7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBIb21lUGFnZSgpIHtcclxuICAgIGNvbnN0IHsgXHJcbiAgICAgICAgZ2V0Q3VycmVudFByb2plY3QsXHJcbiAgICAgICAgZ2V0Q3VycmVudFRlc3RDb25maWcsXHJcbiAgICAgICAgZ2V0Q3VycmVudE9wZXJhdG9yLFxyXG4gICAgICAgIGdldEN1cnJlbnRDYWJsZUlkLFxyXG4gICAgICAgIGdldEN1cnJlbnRDYWJsZUlkMixcclxuICAgICAgICBuYXZpZ2F0ZVRvLFxyXG4gICAgICAgIGhhc1BsYXllZFNvdW5kLFxyXG4gICAgICAgIHNldFRvYXN0TWVzc2FnZVxyXG4gICAgfSA9IHVzZURpc3BsYXlTdG9yZSgpO1xyXG4gICAgXHJcbiAgICBjb25zdCB7IHJlZiB9ID0gdXNlRGlzcGxheVN0b3JlLmdldFN0YXRlKCk7XHJcblxyXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcclxuICAgICAgICBpZiAoaGFzUGxheWVkU291bmQpIHtcclxuICAgICAgICAgICAgdXNlRGlzcGxheVN0b3JlLnNldFN0YXRlKHsgaGFzUGxheWVkU291bmQ6IGZhbHNlIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH0sIFtoYXNQbGF5ZWRTb3VuZF0pO1xyXG5cclxuICAgIGNvbnN0IHsgY29ubmVjdGlvblN0YXR1cywgbWFpblVuaXRBZGFwdGVyLCByZW1vdGVVbml0QWRhcHRlcixtYWluVW5pdE1vZHVsZXMsc2V0VG90YWxUb2FzdE1lc3NhZ2UgfSA9IHVzZURldmljZVN0b3JlKCk7XHJcbiAgICBcclxuXHJcbiAgICAvLyDojrflj5blvZPliY3pobnnm67mlbDmja5cclxuICAgIGNvbnN0IGN1cnJlbnRQcm9qZWN0ID0gZ2V0Q3VycmVudFByb2plY3QoKTtcclxuICAgIFxyXG4gICAgLy8g6I635Y+W5b2T5YmN6YCJ5Lit55qE5rWL6K+V6YWN572uXHJcbiAgICBjb25zdCBjdXJyZW50Q29uZmlnID0gZ2V0Q3VycmVudFRlc3RDb25maWcoKTtcclxuXHJcbiAgICAvLyDojrflj5blvZPliY3pgInkuK3nmoTmk43kvZzlkZhcclxuICAgIGNvbnN0IGN1cnJlbnRPcGVyYXRvciA9IGdldEN1cnJlbnRPcGVyYXRvcigpO1xyXG5cclxuICAgIC8vIOiOt+WPluW9k+WJjemAieS4reeahOeUtee8hklEXHJcbiAgICBjb25zdCBjdXJyZW50Q2FibGVJZCA9IGdldEN1cnJlbnRDYWJsZUlkKCk7XHJcbiAgICAvLyDojrflj5blvZPliY3pgInkuK3nmoTnlLXnvIZJRDJcclxuICAgIGNvbnN0IGN1cnJlbnRDYWJsZUlkMiA9IGdldEN1cnJlbnRDYWJsZUlkMigpO1xyXG5cclxuICAgIGNvbnN0IHBhc3NDb3VudCA9IGN1cnJlbnRQcm9qZWN0Py50ZXN0UmVzdWx0cy5maWx0ZXIocmVzdWx0ID0+IHtcclxuICAgICAgICBjb25zdCBjb3BwZXJTdGF0dXMgPSByZXN1bHQuQ29wcGVyUmVzdWx0U3RhdHVzO1xyXG4gICAgICAgIGNvbnN0IGNmcFN0YXR1cyA9IHJlc3VsdC5DRlBSZXN1bHRTdGF0dXM7XHJcbiAgICAgICAgY29uc3Qgb2ZwU3RhdHVzID0gcmVzdWx0Lm9mcFJlc3VsdFN0YXR1cztcclxuICAgICAgICBcclxuICAgICAgICBpZiAoY29wcGVyU3RhdHVzKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBjb3BwZXJTdGF0dXMgPT09ICdwYXNzJztcclxuICAgICAgICB9IGVsc2UgaWYgKGNmcFN0YXR1cykge1xyXG4gICAgICAgICAgICByZXR1cm4gY2ZwU3RhdHVzID09PSAncGFzcyc7XHJcbiAgICAgICAgfSBlbHNlIGlmIChvZnBTdGF0dXMpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG9mcFN0YXR1cyA9PT0gJ3Bhc3MnO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9KS5sZW5ndGg7XHJcbiAgICBcclxuICAgIGNvbnN0IGZhaWxDb3VudCA9IGN1cnJlbnRQcm9qZWN0Py50ZXN0UmVzdWx0cy5maWx0ZXIocmVzdWx0ID0+IHtcclxuICAgICAgICBjb25zdCBjb3BwZXJTdGF0dXMgPSByZXN1bHQuQ29wcGVyUmVzdWx0U3RhdHVzO1xyXG4gICAgICAgIGNvbnN0IGNmcFN0YXR1cyA9IHJlc3VsdC5DRlBSZXN1bHRTdGF0dXM7XHJcbiAgICAgICAgY29uc3Qgb2ZwU3RhdHVzID0gcmVzdWx0Lm9mcFJlc3VsdFN0YXR1cztcclxuICAgICAgICBcclxuICAgICAgICBpZiAoY29wcGVyU3RhdHVzKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBjb3BwZXJTdGF0dXMgPT09ICdmYWlsJztcclxuICAgICAgICB9IGVsc2UgaWYgKGNmcFN0YXR1cykge1xyXG4gICAgICAgICAgICByZXR1cm4gY2ZwU3RhdHVzID09PSAnZmFpbCc7XHJcbiAgICAgICAgfSBlbHNlIGlmIChvZnBTdGF0dXMpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG9mcFN0YXR1cyA9PT0gJ2ZhaWwnO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9KS5sZW5ndGg7XHJcblxyXG5cclxuICAgIGNvbnN0IENvbm5lY3RTdGF0dXMgPSBjb25uZWN0aW9uU3RhdHVzPy5DRlBDb25uZWN0U3RhdHVzID8/IGNvbm5lY3Rpb25TdGF0dXM/LlsnODAwMENvbm5lY3RTdGF0dXMnXTtcclxuICAgIFxyXG5cclxuXHJcblxyXG4gICAgLy8g6K6h566X5LiL5LiA5Liq57q/57yGSURcclxuICAgIGNvbnN0IGdldE5leHRDYWJsZUlkID0gKGN1cnJlbnRJZCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IG1hdGNoID0gY3VycmVudElkLm1hdGNoKC9eKC4qPykoXFxkKykkLyk7XHJcbiAgICAgICAgaWYgKG1hdGNoKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHByZWZpeCA9IG1hdGNoWzFdO1xyXG4gICAgICAgICAgICBjb25zdCBudW1iZXIgPSBwYXJzZUludChtYXRjaFsyXSkgKyAxO1xyXG4gICAgICAgICAgICByZXR1cm4gYCR7cHJlZml4fSR7bnVtYmVyLnRvU3RyaW5nKCkucGFkU3RhcnQobWF0Y2hbMl0ubGVuZ3RoLCAnMCcpfWA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBjdXJyZW50SWQ7XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IGhhbmRsZVByb2plY3RDbGljayA9ICgpID0+IHtcclxuICAgICAgICBuYXZpZ2F0ZVRvKCdwcm9qZWN0JywgJ21haW4nKTtcclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgaGFuZGxlT3BlcmF0b3JzQ2xpY2sgPSAoKSA9PiB7XHJcbiAgICAgICAgbmF2aWdhdGVUbygnb3BlcmF0b3JzJywgJ21haW4nKTtcclxuICAgIH07XHJcblxyXG4gICAgLy8g5riy5p+T5rWL6K+V6YWN572u5Yy65Z+f55qE5YaF5a65XHJcbiAgICBjb25zdCByZW5kZXJUZXN0Q29uZmlnQ29udGVudCA9ICgpID0+IHtcclxuICAgICAgICBpZiAoIWN1cnJlbnRDb25maWcpIHJldHVybiBudWxsO1xyXG5cclxuICAgICAgICBzd2l0Y2ggKGN1cnJlbnRDb25maWcubW9kdWxlVHlwZSkge1xyXG4gICAgICAgICAgICBjYXNlICc4MDAwJzpcclxuICAgICAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGZsZXgtY29sIGp1c3RpZnktY2VudGVyIGgtZnVsbCBzcGFjZS15LTAuMiB0ZXh0LXNtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtYmxhY2sgdGV4dC1zbVwiPntjdXJyZW50Q29uZmlnLnBhcmFtcy5saW1pdFZhbHVlfTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtYmxhY2sgdGV4dC1zbVwiPntjdXJyZW50Q29uZmlnLnBhcmFtcy5jYWJsZVR5cGV9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1ibGFjayB0ZXh0LXNtXCI+e2N1cnJlbnRDb25maWcucGFyYW1zLndpcmVPcmRlcn08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIGNhc2UgJ2NmcCc6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBmbGV4LWNvbCBqdXN0aWZ5LWNlbnRlciBoLWZ1bGwgc3BhY2UteS0wLjIgdGV4dC1zbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtYmxhY2sgdGV4dC1zbVwiPuaZuuiDvei/nOerrzwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtYmxhY2sgdGV4dC1zbVwiPntjdXJyZW50Q29uZmlnLnBhcmFtcy5saW1pdFZhbHVlfTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtYmxhY2sgdGV4dC1zbVwiPntjdXJyZW50Q29uZmlnLnBhcmFtcy5jYWJsZVR5cGV9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1ibGFjayB0ZXh0LXNtXCI+e2N1cnJlbnRDb25maWcucGFyYW1zLnJlZkp1bXBlcn0g6Lez57q/5Y+C54WnPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICBjYXNlICdvZnAnOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggZmxleC1jb2wganVzdGlmeS1jZW50ZXIgaC1mdWxsIHNwYWNlLXktMC4yIHRleHQtc21cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LWJsYWNrIHRleHQtc21cIj7oh6rliqhPVERSPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1ibGFjayB0ZXh0LXNtXCI+e2N1cnJlbnRDb25maWcucGFyYW1zLmxpbWl0VmFsdWV9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1ibGFjayB0ZXh0LXNtXCI+e2N1cnJlbnRDb25maWcucGFyYW1zLmNhYmxlVHlwZX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG5cclxuXHJcblxyXG4gICAgcmV0dXJuIChcclxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctZnVsbCBoLWZ1bGwgZmxleCBmbGV4LWNvbCBvdmVyZmxvdy1oaWRkZW4gYmctWyMxMzI4NDNdXCI+XHJcbiAgICAgICAgICAgIDxTdGF0dXNCYXIgLz5cclxuICAgICAgICAgICAgPFRpdGxlQmFyIHRpdGxlPVwi5Li76aG1XCIgLz5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaC1bNDkwcHhdIGJnLVsjRDVERkVCXSBwLTQgZmxleCBmbGV4LWNvbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaC1bNDBweF1cIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtWyMxMzI4NDNdIHRleHQtMnhsIGZvbnQtYm9sZCBtYi0xIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyXCI+RVNUIOS7v+ecn+e6v+e8hua1i+ivleS7qjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgey8qIOS4iuaWueS/oeaBr+WMuuWfnyAqL31cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiIGJnLVsjRDVERkVCXSByb3VuZGVkLWxnIHAtNCBzaGFkb3cteGwgZmxleCBmbGV4LWNvbCBnYXAtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICB7Lyog5qih5Z2X6KOF6L29ICovfVxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmctWyNGOEY2RjddIHJvdW5kZWQtbGcgcC00IHNoYWRvdy1tZCBob3ZlcjpzaGFkb3ctbGcgdHJhbnNpdGlvbi1zaGFkb3cgZHVyYXRpb24tMjAwIFwiID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGp1c3RpZnktYmV0d2VlbiBpdGVtcy1zdGFydFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge21haW5Vbml0TW9kdWxlcz8uWzBdPy5pZCA9PT0gJzgwMDAnID8gKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1sZyBmb250LWJvbGQgdGV4dC1bIzEzMjg0M10gIFwiPuW9k+WJjeWuieijheaooeWdl++8mumTnOe8huWIhuaekOaooeWdlzwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IG1haW5Vbml0TW9kdWxlcz8uWzBdPy5pZCAgPT09ICdjZnAnID8gKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1sZyBmb250LWJvbGQgdGV4dC1bIzEzMjg0M11cIj7lvZPliY3lronoo4XmqKHlnZfvvJrlhYnnuqTmjZ/ogJfmqKHlnZc8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgOiBtYWluVW5pdE1vZHVsZXM/LlswXT8uaWQgID09PSAnb2ZwJyA/IChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtbGcgZm9udC1ib2xkIHRleHQtWyMxMzI4NDNdXCI+5b2T5YmN5a6J6KOF5qih5Z2X77ya5YWJ5pe25Z+f5Y+N5bCE5qih5Z2XPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIDogKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1sZyBmb250LWJvbGQgdGV4dC1bIzEzMjg0M11cIj7or7flronoo4XmqKHlnZc8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICB7Lyog6aG555uu6YWN572u6YOo5YiGICovfVxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmctWyNGOEY2RjddIHJvdW5kZWQtbGcgcC00IHNoYWRvdy1tZCBob3ZlcjpzaGFkb3ctbGcgdHJhbnNpdGlvbi1zaGFkb3cgZHVyYXRpb24tMjAwIGN1cnNvci1wb2ludGVyXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXtoYW5kbGVQcm9qZWN0Q2xpY2t9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1bIzEzMjg0M10gZm9udC1ib2xkIG1iLTFcIj7pobnnm648L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGp1c3RpZnktYmV0d2VlbiBpdGVtcy1zdGFydFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtWyMxMzI4NDNdIHRleHQtc20gcHQtMlwiPntjdXJyZW50UHJvamVjdD8ubmFtZX08L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGdhcC0yIGJnLVsjRDVERkVCXSBweC0zIHB5LTEgcm91bmRlZC1mdWxsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LWdyZWVuLTYwMCBmb250LW1lZGl1bVwiPntwYXNzQ291bnR8fCAwfTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy00IGgtNCByZWxhdGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJbWFnZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9e2dldEFzc2V0VXJsKCcvcGFzcy5wbmcnKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0PVwi6YCa6L+HXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZXM9e1wiYXV0b1wifVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cIm9iamVjdC1jb250YWluXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGdhcC0yIGJnLVsjRDVERkVCXSBweC0zIHB5LTEgcm91bmRlZC1mdWxsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LXJlZC02MDAgZm9udC1tZWRpdW1cIj57ZmFpbENvdW50fHwgMH08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctNCBoLTQgcmVsYXRpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SW1hZ2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjPXtnZXRBc3NldFVybCgnL2ZhaWwucG5nJyl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdD1cIuWksei0pVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVzPXtcImF1dG9cIn1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJvYmplY3QtY29udGFpblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsvKiA8ZGl2IGNsYXNzTmFtZT1cInctNiBoLTYgcmVsYXRpdmUgdGV4dC1bIzM5NjVBMl1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SW1hZ2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjPXtnZXRBc3NldFVybCgnL2Fycm93LnBuZycpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ9XCLnrq3lpLRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplcz17XCJhdXRvXCJ9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwib2JqZWN0LWNvbnRhaW4gb3BhY2l0eS03MFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PiAqL31cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHsvKiDmtYvor5XphY3nva7ljLrln58gKi99XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiYmctWyNGOEY2RjddIHJvdW5kZWQtbGcgcC00IHNoYWRvdy1tZCBob3ZlcjpzaGFkb3ctbGcgdHJhbnNpdGlvbi1zaGFkb3cgZHVyYXRpb24tMjAwIGN1cnNvci1wb2ludGVyIGgtWzEyMHB4XSBmbGV4IGp1c3RpZnktYmV0d2VlbiBpdGVtcy1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBuYXZpZ2F0ZVRvKCd0ZXN0Q29uZmlnJywgJ21haW4nKX1cclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBmbGV4LWNvbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtWyMxMzI4NDNdIGZvbnQtYm9sZCBtYi0xXCI+5rWL6K+V5p6B6ZmQ5YC8PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXgtMVwiPntyZW5kZXJUZXN0Q29uZmlnQ29udGVudCgpfTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC1bIzM5NjVBMl0gdGV4dC1zbSBmb250LW1lZGl1bVwiPntjdXJyZW50Q29uZmlnPy5tb2R1bGVsYWJsZX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7LyogPGRpdiBjbGFzc05hbWU9XCJ3LTQgaC00IHJlbGF0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEltYWdlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz17Z2V0QXNzZXRVcmwoJy9hcnJvdy5wbmcnKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0PVwi566t5aS0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZXM9e1wiYXV0b1wifVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cIm9iamVjdC1jb250YWluIG9wYWNpdHktNzBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gKi99XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgey8qIElE5ZKM5pON5L2c5ZGY5L+h5oGv6KGMICovfVxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZ3JpZCBncmlkLWNvbHMtMiBnYXAtNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7Lyog57q/57yGSUTljLrln58gKi99XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJiZy1bI0Y4RjZGN10gcm91bmRlZC1sZyBwLTQgc2hhZG93LW1kIGhvdmVyOnNoYWRvdy1sZyB0cmFuc2l0aW9uLXNoYWRvdyBkdXJhdGlvbi0yMDAgY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gbmF2aWdhdGVUbygnY2FibGVJZCcsIGN1cnJlbnRDb25maWc/Lm1vZHVsZVR5cGUgPT09ICdjZnAnID8gJ2NmcCcgOiAnbWFpbicpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXgganVzdGlmeS1iZXR3ZWVuIGl0ZW1zLXN0YXJ0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGZsZXgtY29sXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1bIzEzMjg0M10gZm9udC1ib2xkIG1iLTFcIj7kuIvkuIDmnaHorrDlvZU8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2N1cnJlbnRDb25maWc/Lm1vZHVsZVR5cGUgPT09ICdjZnAnID8gKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtWyMxMzI4NDNdIHRleHQtc21cIj7ovpPlhaXvvJo8c3BhbiBjbGFzc05hbWU9XCJmb250LW1lZGl1bVwiPntjdXJyZW50Q2FibGVJZD8ubmFtZSB8fCAnJ308L3NwYW4+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LVsjMTMyODQzXSB0ZXh0LXNtXCI+6L6T5Ye677yaPHNwYW4gY2xhc3NOYW1lPVwiZm9udC1tZWRpdW1cIj57Y3VycmVudENhYmxlSWQyPy5uYW1lIHx8ICcnfTwvc3Bhbj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIDogKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LVsjMTMyODQzXSB0ZXh0LXNtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwiZm9udC1tZWRpdW1cIj57Y3VycmVudENhYmxlSWQ/Lm5hbWUgfHwgJyd9PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgey8qIDxkaXYgY2xhc3NOYW1lPVwidy00IGgtNCByZWxhdGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SW1hZ2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz17Z2V0QXNzZXRVcmwoJy9hcnJvdy5wbmcnKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdD1cIueureWktFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplcz17XCJhdXRvXCJ9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJvYmplY3QtY29udGFpbiBvcGFjaXR5LTcwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gKi99XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7Lyog5pON5L2c5ZGY5Yy65Z+fICovfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiYmctWyNGOEY2RjddIHJvdW5kZWQtbGcgcC00IHNoYWRvdy1tZCBob3ZlcjpzaGFkb3ctbGcgdHJhbnNpdGlvbi1zaGFkb3cgZHVyYXRpb24tMjAwIGN1cnNvci1wb2ludGVyXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXtoYW5kbGVPcGVyYXRvcnNDbGlja31cclxuICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGp1c3RpZnktYmV0d2VlbiBpdGVtcy1zdGFydFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBmbGV4LWNvbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtWyMxMzI4NDNdIGZvbnQtYm9sZCBtYi0xXCI+5pON5L2c5ZGYPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1bIzEzMjg0M10gdGV4dC1zbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwiZm9udC1tZWRpdW1cIj57Y3VycmVudE9wZXJhdG9yPy5uYW1lIHx8ICcnfTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgey8qIDxkaXYgY2xhc3NOYW1lPVwidy00IGgtNCByZWxhdGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SW1hZ2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz17Z2V0QXNzZXRVcmwoJy9hcnJvdy5wbmcnKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdD1cIueureWktFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplcz17XCJhdXRvXCJ9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJvYmplY3QtY29udGFpbiBvcGFjaXR5LTcwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gKi99XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICB7Lyog5bqV6YOo5oyJ6ZKu5Yy65Z+fICovfVxyXG4gICAgICAgICAgICAgICAgey8qIOenu+mZpOWOn+acieeahOW3peWFt+WSjOe7k+aenOaMiemSriAqL31cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICB7Lyog5bqV6YOo5qCPICovfVxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImgtWzYwcHhdIGJnLVsjMTMyODQzXSBiZy1vcGFjaXR5LTMwIGJhY2tkcm9wLWJsdXItc20gZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIHB4LTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgey8qIOW3peWFt+aMiemSriAqL31cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LTEvNCBmbGV4LTEgZmxleCBqdXN0aWZ5LXN0YXJ0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInctWzEwMCVdIGgtWzYwcHhdIGhvdmVyOmJnLVsjMTYzMTU0XSB0cmFuc2l0aW9uLWNvbG9ycyBkdXJhdGlvbi0yMDAgcm91bmRlZC1sZyBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciB0ZXh0LXdoaXRlICBmb250LWJvbGQgc2hhZG93LWxnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBuYXZpZ2F0ZVRvKCd0b29scycsICdtYWluJyl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg5bel5YW3XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHsvKiDnu5PmnpzmjInpkq4gKi99XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy0xLzQgZmxleC0xIGZsZXgganVzdGlmeS1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidy1bMTAwJV0gaC1bNjBweF0gaG92ZXI6YmctWyMxNjMxNTRdIHRyYW5zaXRpb24tY29sb3JzIGR1cmF0aW9uLTIwMCByb3VuZGVkLWxnIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHRleHQtd2hpdGUgIGZvbnQtYm9sZCBzaGFkb3ctbGdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IG5hdmlnYXRlVG8oJ3Jlc3VsdCcsICdtYWluJyl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg57uT5p6cXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHsvKiDorr7nva7lj4LnhafmjInpkq4gKi99XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy0xLzQgZmxleC0xIGZsZXgganVzdGlmeS1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInctWzEwMCVdIGgtWzYwcHhdIGhvdmVyOmJnLVsjMTYzMTU0XSB0cmFuc2l0aW9uLWNvbG9ycyBkdXJhdGlvbi0yMDAgcm91bmRlZC1sZyBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciB0ZXh0LXdoaXRlICBmb250LWJvbGQgc2hhZG93LWxnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g5qC55o2u5qih5Z2X57G75Z6L6K6+572u5LiN5ZCM55qE5Y+C54Wn6YC76L6RXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY3VycmVudENvbmZpZz8ubW9kdWxlVHlwZSA9PT0gJzgwMDAnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmF2aWdhdGVUbygndG9vbHMnLCAncmVmLWNvcHBlcicpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjdXJyZW50Q29uZmlnPy5tb2R1bGVUeXBlID09PSAnY2ZwJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hdmlnYXRlVG8oJ3Rvb2xzJywgJ3JlZi1jZnAnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoY3VycmVudENvbmZpZz8ubW9kdWxlVHlwZSA9PT0gJ29mcCcpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYXZpZ2F0ZVRvKCd0b29scycsICdyZWYtb2ZwJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY3VycmVudENvbmZpZz8ubW9kdWxlVHlwZSA9PT0gJzgwMDAnID8gJ+iuvue9ruWfuuWHhicgOiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRDb25maWc/Lm1vZHVsZVR5cGUgPT09ICdjZnAnID8gJ+iuvue9ruWPgueFpycgOiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRDb25maWc/Lm1vZHVsZVR5cGUgPT09ICdvZnAnID8gJ+iuvue9ruihpeWBvycgOiAn6K6+572u5Y+C54WnJyB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7Lyog5rWL6K+V5oyJ6ZKuICovfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctMS80IGZsZXgtMSBmbGV4IGp1c3RpZnktZW5kXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ3LVsxMDAlXSBoLVs2MHB4XSBob3ZlcjpiZy1bIzE2MzE1NF0gdHJhbnNpdGlvbi1jb2xvcnMgZHVyYXRpb24tMjAwIHJvdW5kZWQtbGcgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgdGV4dC13aGl0ZSAgZm9udC1ib2xkIHNoYWRvdy1sZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRDb25maWc/Lm1vZHVsZVR5cGUgPT09ICc4MDAwJyB8fCBjdXJyZW50Q29uZmlnPy5tb2R1bGVUeXBlID09PSAnY2ZwJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFDb25uZWN0U3RhdHVzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VG9hc3RNZXNzYWdlKCfmnKrov57mjqXvvIzor7fmo4Dmn6Xov57mjqXnirbmgIEnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjdXJyZW50Q29uZmlnPy5tb2R1bGVUeXBlID09PSAnODAwMCcpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtYWluVW5pdE1vZHVsZXM/LlswXT8uaWQgIT09ICc4MDAwJykgeyBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUb2FzdE1lc3NhZ2UoJ+W9k+WJjeaooeWdl+S4juaJgOmAieagh+WHhuS4jeWFvOWuuScpOyBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGltaXRWYWx1ZSA9IGN1cnJlbnRDb25maWcucGFyYW1zLmxpbWl0VmFsdWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxpbWl0VmFsdWUuaW5jbHVkZXMoJ0NoYW5uZWwnKSB8fCBsaW1pdFZhbHVlLmluY2x1ZGVzKCdDaCcpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFtYWluVW5pdEFkYXB0ZXIuaWQuaW5jbHVkZXMoJ2NoYW5uZWwnKSB8fCAhcmVtb3RlVW5pdEFkYXB0ZXIuaWQuaW5jbHVkZXMoJ2NoYW5uZWwnKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUb2FzdE1lc3NhZ2UoJ+W9k+WJjemAgumFjeWZqOS4juaJgOmAieagh+WHhuS4jeWFvOWuuScpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChsaW1pdFZhbHVlLmluY2x1ZGVzKCdQZXJtJykgfHwgbGltaXRWYWx1ZS5pbmNsdWRlcygnUEwnKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbWFpblVuaXRBZGFwdGVyLmlkLmluY2x1ZGVzKCdwZXJtYW5lbnQnKSB8fCAhcmVtb3RlVW5pdEFkYXB0ZXIuaWQuaW5jbHVkZXMoJ3Blcm1hbmVudCcpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRvYXN0TWVzc2FnZSgn5b2T5YmN6YCC6YWN5Zmo5LiO5omA6YCJ5qCH5YeG5LiN5YW85a65Jyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGxpbWl0VmFsdWUuaW5jbHVkZXMoJ01QVEwnKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGhhc1Blcm1hbmVudCA9IG1haW5Vbml0QWRhcHRlci5pZC5pbmNsdWRlcygncGVybWFuZW50JykgfHwgcmVtb3RlVW5pdEFkYXB0ZXIuaWQuaW5jbHVkZXMoJ3Blcm1hbmVudCcpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGhhc1BhdGNoY29kZSA9IG1haW5Vbml0QWRhcHRlci5pZC5pbmNsdWRlcygncGF0Y2hjb2RlJykgfHwgcmVtb3RlVW5pdEFkYXB0ZXIuaWQuaW5jbHVkZXMoJ3BhdGNoY29kZScpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKGhhc1Blcm1hbmVudCAmJiBoYXNQYXRjaGNvZGUpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRvYXN0TWVzc2FnZSgn5b2T5YmN6YCC6YWN5Zmo5LiO5omA6YCJ5qCH5YeG5LiN5YW85a65Jyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRDb25maWc/Lm1vZHVsZVR5cGUgPT09ICdjZnAnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobWFpblVuaXRNb2R1bGVzPy5bMF0/LmlkICE9PSAnY2ZwJykgeyBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUb2FzdE1lc3NhZ2UoJ+W9k+WJjeaooeWdl+S4juaJgOmAieagh+WHhuS4jeWFvOWuuScpOyBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIOajgOafpeWFiee6pOexu+Wei1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2FibGVUeXBlID0gY3VycmVudENvbmZpZy5wYXJhbXMuY2FibGVUeXBlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaXNNdWx0aU1vZGUgPSBjYWJsZVR5cGUuaW5jbHVkZXMoJ09NJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIOagueaNruWNlS/lpJrmqKHojrflj5blr7nlupTnmoTot6/lvoRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBtYWluT3V0UGF0aCwgbWFpbkluUGF0aCwgcmVtb3RlT3V0UGF0aCwgcmVtb3RlSW5QYXRoO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNNdWx0aU1vZGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyDlpJrmqKHlhYnnuqTot6/lvoRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWluT3V0UGF0aCA9IGNvbm5lY3Rpb25TdGF0dXM/Lm1haW5QYXRocz8uWydtYWluLWNmcC1tbS1vdXQnXT8ucGF0aCB8fCBbXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWluSW5QYXRoID0gY29ubmVjdGlvblN0YXR1cz8ubWFpblBhdGhzPy5bJ21haW4tY2ZwLWluJ10/LnBhdGggfHwgW107XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3RlT3V0UGF0aCA9IGNvbm5lY3Rpb25TdGF0dXM/LnJlbW90ZVBhdGhzPy5bJ3JlbW90ZS1jZnAtbW0tb3V0J10/LnBhdGggfHwgW107XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3RlSW5QYXRoID0gY29ubmVjdGlvblN0YXR1cz8ucmVtb3RlUGF0aHM/LlsncmVtb3RlLWNmcC1pbiddPy5wYXRoIHx8IFtdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIOajgOafpeaYr+WQpuaJgOacieerr+WPo+mDveW3sui/nuaOpVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbWFpbk91dFBhdGgubGVuZ3RoIHx8ICFtYWluSW5QYXRoLmxlbmd0aCB8fCAhcmVtb3RlT3V0UGF0aC5sZW5ndGggfHwgIXJlbW90ZUluUGF0aC5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VG90YWxUb2FzdE1lc3NhZ2UoJ+ivt+ehruS/neaJgOacieWFiee6pOerr+WPo+mDveW3suato+ehrui/nuaOpScpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyDmo4Dmn6XmmK/lkKblrZjlnKjljZXmqKHot7Pnur9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBoYXNJbnZhbGlkQ29ubmVjdG9yID0gWy4uLm1haW5PdXRQYXRoLCAuLi5tYWluSW5QYXRoLCAuLi5yZW1vdGVPdXRQYXRoLCAuLi5yZW1vdGVJblBhdGhdLnNvbWUoaXRlbSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpdGVtLmluY2x1ZGVzKCdzbScpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoYXNJbnZhbGlkQ29ubmVjdG9yKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRvdGFsVG9hc3RNZXNzYWdlKCflpJrmqKHlhYnnuqTpk77ot6/kuK3lrZjlnKjljZXmqKHot7Pnur/vvIzor7fmo4Dmn6Xov57mjqUnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g5Y2V5qih5YWJ57qk6Lev5b6EXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFpbk91dFBhdGggPSBjb25uZWN0aW9uU3RhdHVzPy5tYWluUGF0aHM/LlsnbWFpbi1jZnAtc20tb3V0J10/LnBhdGggfHwgW107XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFpbkluUGF0aCA9IGNvbm5lY3Rpb25TdGF0dXM/Lm1haW5QYXRocz8uWydtYWluLWNmcC1pbiddPy5wYXRoIHx8IFtdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbW90ZU91dFBhdGggPSBjb25uZWN0aW9uU3RhdHVzPy5yZW1vdGVQYXRocz8uWydyZW1vdGUtY2ZwLXNtLW91dCddPy5wYXRoIHx8IFtdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbW90ZUluUGF0aCA9IGNvbm5lY3Rpb25TdGF0dXM/LnJlbW90ZVBhdGhzPy5bJ3JlbW90ZS1jZnAtaW4nXT8ucGF0aCB8fCBbXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyDmo4Dmn6XmmK/lkKbmiYDmnInnq6/lj6Ppg73lt7Lov57mjqVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW1haW5PdXRQYXRoLmxlbmd0aCB8fCAhbWFpbkluUGF0aC5sZW5ndGggfHwgIXJlbW90ZU91dFBhdGgubGVuZ3RoIHx8ICFyZW1vdGVJblBhdGgubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRvdGFsVG9hc3RNZXNzYWdlKCfor7fnoa7kv53miYDmnInlhYnnuqTnq6/lj6Ppg73lt7LmraPnoa7ov57mjqUnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g5qOA5p+l5piv5ZCm5a2Y5Zyo5aSa5qih6Lez57q/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaGFzSW52YWxpZENvbm5lY3RvciA9IFsuLi5tYWluT3V0UGF0aCwgLi4ubWFpbkluUGF0aCwgLi4ucmVtb3RlT3V0UGF0aCwgLi4ucmVtb3RlSW5QYXRoXS5zb21lKGl0ZW0gPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaXRlbS5pbmNsdWRlcygnbW0nKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaGFzSW52YWxpZENvbm5lY3Rvcikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUb3RhbFRvYXN0TWVzc2FnZSgn5Y2V5qih5YWJ57qk6ZO+6Lev5Lit5a2Y5Zyo5aSa5qih6Lez57q/77yM6K+35qOA5p+l6L+e5o6lJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjdXJyZW50Q29uZmlnPy5tb2R1bGVUeXBlID09PSAnb2ZwJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1haW5Vbml0TW9kdWxlcz8uWzBdPy5pZCAhPT0gJ29mcCcpIHsgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VG9hc3RNZXNzYWdlKCflvZPliY3mqKHlnZfkuI7miYDpgInmoIflh4bkuI3lhbzlrrknKTsgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOyBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyDmo4Dmn6XlhYnnuqTnsbvlnovmmK/lkKbljLnphY1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNhYmxlVHlwZSA9IGN1cnJlbnRDb25maWcucGFyYW1zLmNhYmxlVHlwZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGlzTXVsdGlNb2RlID0gY2FibGVUeXBlLmluY2x1ZGVzKCdPTScpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcG9ydFR5cGUgPSBPYmplY3QudmFsdWVzKGNvbm5lY3Rpb25TdGF0dXM/Lm1haW5QYXRocyB8fCB7fSlbMF0/LnN0YXJ0O1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc011bHRpTW9kZSAmJiBwb3J0VHlwZSAhPT0gJ21haW4tb2ZwLW1tLW91dCcpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUb3RhbFRvYXN0TWVzc2FnZSgn5b2T5YmN5YWJ57qk57G75Z6L5b+F6aG75L2/55So5aSa5qih56uv5Y+j5rWL6K+VJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaXNNdWx0aU1vZGUgJiYgcG9ydFR5cGUgIT09ICdtYWluLW9mcC1zbS1vdXQnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VG90YWxUb2FzdE1lc3NhZ2UoJ+W9k+WJjeWFiee6pOexu+Wei+W/hemhu+S9v+eUqOWNleaooeerr+WPo+a1i+ivlScpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyDmo4Dmn6XlhYnnuqTov57mjqXlmajnsbvlnovmmK/lkKbljLnphY1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhdGggPSBPYmplY3QudmFsdWVzKGNvbm5lY3Rpb25TdGF0dXM/Lm1haW5QYXRocyB8fCB7fSlbMF0/LnBhdGggfHwgW107XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBoYXNJbnZhbGlkQ29ubmVjdG9yID0gcGF0aC5zb21lKGl0ZW0gPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc011bHRpTW9kZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaXRlbS5pbmNsdWRlcygnc20tJykgfHwgaXRlbS5pbmNsdWRlcygnc21jLScpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpdGVtLmluY2x1ZGVzKCdtbS0nKSB8fCBpdGVtLmluY2x1ZGVzKCdtbWMtJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGhhc0ludmFsaWRDb25uZWN0b3IpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUb3RhbFRvYXN0TWVzc2FnZShpc011bHRpTW9kZSA/ICfmnKrmo4DmtYvliLDlpJrmqKHlhYnnuqTvvIzor7fmo4Dmn6XlhYnnuqTov57mjqUnIDogJ+acquajgOa1i+WIsOWNleaooeWFiee6pO+8jOivt+ajgOafpeWFiee6pOi/nuaOpScpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFjb25uZWN0aW9uU3RhdHVzPy5PRlBTdGF0dXMpIHsgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VG90YWxUb2FzdE1lc3NhZ2UoJ+ivt+aOpeWFpeWunumZheiiq+a1i+mTvui3r++8jOi/m+ihjOa1i+ivlScpOyBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIOajgOafpeWFiee6pOi/nuaOpeaVsOmHj1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZmliZXJDb25uZWN0b3JDb3VudCA9IHBhdGguZmlsdGVyKGl0ZW0gPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpdGVtLmluY2x1ZGVzKCdzbS0nKSB8fCBpdGVtLmluY2x1ZGVzKCdtbS0nKSB8fCBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5pbmNsdWRlcygnc21jLScpIHx8IGl0ZW0uaW5jbHVkZXMoJ21tYy0nKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLmxlbmd0aDtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmliZXJDb25uZWN0b3JDb3VudCA+IDMpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUb3RhbFRvYXN0TWVzc2FnZSgn6K+l5Zy65pmv5LuF5pSv5oyB5L2/55So5LiA5q615YWJ57qk6L+e5o6l5rWL6K+V5Luq5LiO6ZO+6LevJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYXZpZ2F0ZVRvKCd0ZXN0aW5nJywnbm9zYXZlJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDmtYvor5VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgKTtcclxufSJdLCJuYW1lcyI6WyJSZWFjdCIsInVzZUVmZmVjdCIsIkltYWdlIiwiU3RhdHVzQmFyIiwiVGl0bGVCYXIiLCJ1c2VEaXNwbGF5U3RvcmUiLCJ1c2VEZXZpY2VTdG9yZSIsImdldEFzc2V0VXJsIiwiSG9tZVBhZ2UiLCJnZXRDdXJyZW50UHJvamVjdCIsImdldEN1cnJlbnRUZXN0Q29uZmlnIiwiZ2V0Q3VycmVudE9wZXJhdG9yIiwiZ2V0Q3VycmVudENhYmxlSWQiLCJnZXRDdXJyZW50Q2FibGVJZDIiLCJuYXZpZ2F0ZVRvIiwiaGFzUGxheWVkU291bmQiLCJzZXRUb2FzdE1lc3NhZ2UiLCJyZWYiLCJnZXRTdGF0ZSIsInNldFN0YXRlIiwiY29ubmVjdGlvblN0YXR1cyIsIm1haW5Vbml0QWRhcHRlciIsInJlbW90ZVVuaXRBZGFwdGVyIiwibWFpblVuaXRNb2R1bGVzIiwic2V0VG90YWxUb2FzdE1lc3NhZ2UiLCJjdXJyZW50UHJvamVjdCIsImN1cnJlbnRDb25maWciLCJjdXJyZW50T3BlcmF0b3IiLCJjdXJyZW50Q2FibGVJZCIsImN1cnJlbnRDYWJsZUlkMiIsInBhc3NDb3VudCIsInRlc3RSZXN1bHRzIiwiZmlsdGVyIiwicmVzdWx0IiwiY29wcGVyU3RhdHVzIiwiQ29wcGVyUmVzdWx0U3RhdHVzIiwiY2ZwU3RhdHVzIiwiQ0ZQUmVzdWx0U3RhdHVzIiwib2ZwU3RhdHVzIiwib2ZwUmVzdWx0U3RhdHVzIiwibGVuZ3RoIiwiZmFpbENvdW50IiwiQ29ubmVjdFN0YXR1cyIsIkNGUENvbm5lY3RTdGF0dXMiLCJnZXROZXh0Q2FibGVJZCIsImN1cnJlbnRJZCIsIm1hdGNoIiwicHJlZml4IiwibnVtYmVyIiwicGFyc2VJbnQiLCJ0b1N0cmluZyIsInBhZFN0YXJ0IiwiaGFuZGxlUHJvamVjdENsaWNrIiwiaGFuZGxlT3BlcmF0b3JzQ2xpY2siLCJyZW5kZXJUZXN0Q29uZmlnQ29udGVudCIsIm1vZHVsZVR5cGUiLCJkaXYiLCJjbGFzc05hbWUiLCJwYXJhbXMiLCJsaW1pdFZhbHVlIiwiY2FibGVUeXBlIiwid2lyZU9yZGVyIiwicmVmSnVtcGVyIiwidGl0bGUiLCJpZCIsIm9uQ2xpY2siLCJuYW1lIiwic3BhbiIsInNyYyIsImFsdCIsInNpemVzIiwiZmlsbCIsIm1vZHVsZWxhYmxlIiwiYnV0dG9uIiwiaW5jbHVkZXMiLCJoYXNQZXJtYW5lbnQiLCJoYXNQYXRjaGNvZGUiLCJpc011bHRpTW9kZSIsIm1haW5PdXRQYXRoIiwibWFpbkluUGF0aCIsInJlbW90ZU91dFBhdGgiLCJyZW1vdGVJblBhdGgiLCJtYWluUGF0aHMiLCJwYXRoIiwicmVtb3RlUGF0aHMiLCJoYXNJbnZhbGlkQ29ubmVjdG9yIiwic29tZSIsIml0ZW0iLCJwb3J0VHlwZSIsIk9iamVjdCIsInZhbHVlcyIsInN0YXJ0IiwiT0ZQU3RhdHVzIiwiZmliZXJDb25uZWN0b3JDb3VudCJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(pages-dir-node)/./src/components/dsxpage/general/HomePage.js\n"); /***/ }), /***/ "(pages-dir-node)/./src/components/dsxpage/general/MenuList.js": /*!****************************************************!*\ !*** ./src/components/dsxpage/general/MenuList.js ***! \****************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; eval("__webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ MenuList)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"react/jsx-dev-runtime\");\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 */ \"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _components_lib_StatusBar__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/components/lib//StatusBar */ \"(pages-dir-node)/./src/components/lib/StatusBar.js\");\n/* harmony import */ var _components_lib_TitleBar__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/components/lib//TitleBar */ \"(pages-dir-node)/./src/components/lib/TitleBar.js\");\n/* harmony import */ var _components_lib_SubTitleBar__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/components/lib//SubTitleBar */ \"(pages-dir-node)/./src/components/lib/SubTitleBar.js\");\n/* harmony import */ var _store_displayStore__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/store/displayStore */ \"(pages-dir-node)/./src/store/displayStore.js\");\nvar __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_components_lib_StatusBar__WEBPACK_IMPORTED_MODULE_2__, _components_lib_TitleBar__WEBPACK_IMPORTED_MODULE_3__, _components_lib_SubTitleBar__WEBPACK_IMPORTED_MODULE_4__, _store_displayStore__WEBPACK_IMPORTED_MODULE_5__]);\n([_components_lib_StatusBar__WEBPACK_IMPORTED_MODULE_2__, _components_lib_TitleBar__WEBPACK_IMPORTED_MODULE_3__, _components_lib_SubTitleBar__WEBPACK_IMPORTED_MODULE_4__, _store_displayStore__WEBPACK_IMPORTED_MODULE_5__] = __webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__);\n\n\n\n\n\n\n// 菜单数据定义\nconst menuData = {\n MODULE: {\n title: '模块',\n items: [\n {\n value: '8000',\n label: '铜缆测试仪'\n },\n {\n value: 'cfp',\n label: '光损耗测试仪'\n },\n {\n value: 'ofp',\n label: 'OTDR测试仪'\n }\n ]\n },\n CABLE_TYPE: {\n title: '电缆类型',\n subTitle: '电缆类型',\n items: [\n {\n value: 'custom',\n label: '定制',\n disabled: true\n },\n {\n value: 'general',\n label: '通用',\n children: [\n // { value: 'Cat8 S/FTP', label: 'Cat8 S/FTP' },\n // { value: 'Cat7A S/FTP', label: 'Cat7A S/FTP' },\n // { value: 'Cat7 S/FTP', label: 'Cat7 S/FTP' },\n // { value: 'Cat6A S/FTP', label: 'Cat6A S/FTP' },\n {\n value: 'Cat6A U/UTP',\n label: 'Cat6A U/UTP'\n },\n {\n value: 'Cat6A F/UTP',\n label: 'Cat6A F/UTP'\n },\n {\n value: 'Cat6 U/UTP',\n label: 'Cat6 U/UTP'\n },\n {\n value: 'Cat6 F/UTP',\n label: 'Cat6 F/UTP'\n },\n // { value: 'Cat6 U/FTP', label: 'Cat6 U/FTP' },\n {\n value: 'Cat5e U/UTP',\n label: 'Cat5e U/UTP'\n },\n {\n value: 'Cat5e F/UTP',\n label: 'Cat5e F/UTP'\n }\n ]\n },\n {\n value: 'coaxial',\n label: '通用同轴电缆',\n disabled: true\n },\n {\n value: 'manufacturer',\n label: '制造商',\n disabled: true\n }\n ]\n },\n LIMIT_VALUE: {\n title: '测试极限值',\n subTitle: '极限值组',\n items: [\n {\n value: 'TIA',\n label: 'TIA',\n children: {\n // Cat8: {\n // label: 'Cat8',\n // children: [\n // { value: 'TIA Cat 8 Perm.Link', label: 'TIA Cat 8 Perm.Link' },\n // { value: 'TIA Cat 8 Perm.Link (+ALL)', label: 'TIA Cat 8 Perm.Link (+ALL)' },\n // { value: 'TIA Cat 8 Perm.Link (+PoE)', label: 'TIA Cat 8 Perm.Link (+PoE)' },\n // { value: 'TIA Cat 8 Channel', label: 'TIA Cat 8 Channel' },\n // { value: 'TIA Cat 8 Channel (+ALL)', label: 'TIA Cat 8 Channel (+ALL)' },\n // { value: 'TIA Cat 8 Channel (+PoE)', label: 'TIA Cat 8 Channel (+PoE)' }\n // ]\n // },\n Cat6A: {\n label: 'Cat6A',\n children: [\n {\n value: 'TIA Cat 6A Perm.Link',\n label: 'TIA Cat 6A Perm.Link'\n },\n {\n value: 'TIA Cat 6A Perm.Link (+ALL)',\n label: 'TIA Cat 6A Perm.Link (+ALL)'\n },\n {\n value: 'TIA Cat 6A Perm.Link (+PoE)',\n label: 'TIA Cat 6A Perm.Link (+PoE)'\n },\n {\n value: 'TIA Cat 6A Channel',\n label: 'TIA Cat 6A Channel'\n },\n {\n value: 'TIA Cat 6A Channel (+ALL)',\n label: 'TIA Cat 6A Channel (+ALL)'\n },\n {\n value: 'TIA Cat 6A Channel (+PoE)',\n label: 'TIA Cat 6A Channel (+PoE)'\n },\n {\n value: 'TIA Cat 6A MPTL',\n label: 'TIA Cat 6A MPTL'\n },\n {\n value: 'TIA Cat 6A MPTL (+PoE)',\n label: 'TIA Cat 6A MPTL (+PoE)'\n },\n // { value: 'TIA 1005 Cat 6A Perm.Link', label: 'TIA 1005 Cat 6A Perm.Link' },\n // { value: 'TIA 1005 Cat 6A Channel', label: 'TIA 1005 Cat 6A Channel' },\n {\n value: 'TIA 1005 Cat 6A Channel E1 (+ALL)',\n label: 'TIA 1005 Cat 6A Channel E1 (+ALL)'\n },\n // { value: 'TIA 1005 Cat 6A Channel E1 (+PoE)', label: 'TIA 1005 Cat 6A Channel E1 (+PoE)' },\n {\n value: 'TIA 1005 Cat 6A Channel E2 (+ALL)',\n label: 'TIA 1005 Cat 6A Channel E2 (+ALL)'\n },\n // { value: 'TIA 1005 Cat 6A Channel E2 (+PoE)', label: 'TIA 1005 Cat 6A Channel E2 (+PoE)' },\n {\n value: 'TIA 1005 Cat 6A Channel E3 (+ALL)',\n label: 'TIA 1005 Cat 6A Channel E3 (+ALL)'\n }\n ]\n },\n Cat6: {\n label: 'Cat6',\n children: [\n {\n value: 'TIA Cat 6 Perm.Link',\n label: 'TIA Cat 6 Perm.Link'\n },\n {\n value: 'TIA Cat 6 Perm.Link (+ALL)',\n label: 'TIA Cat 6 Perm.Link (+ALL)'\n },\n {\n value: 'TIA Cat 6 Perm.Link (+PoE)',\n label: 'TIA Cat 6 Perm.Link (+PoE)'\n },\n {\n value: 'TIA Cat 6 Channel',\n label: 'TIA Cat 6 Channel'\n },\n {\n value: 'TIA Cat 6 Channel (+ALL)',\n label: 'TIA Cat 6 Channel (+ALL)'\n },\n {\n value: 'TIA Cat 6 Channel (+PoE)',\n label: 'TIA Cat 6 Channel (+PoE)'\n },\n {\n value: 'TIA Cat 6 MPTL',\n label: 'TIA Cat 6 MPTL'\n },\n {\n value: 'TIA Cat 6 MPTL (+PoE)',\n label: 'TIA Cat 6 MPTL (+PoE)'\n },\n // { value: 'TIA 1005 Cat 6 Perm.Link', label: 'TIA 1005 Cat 6 Perm.Link' },\n // { value: 'TIA 1005 Cat 6 Channel', label: 'TIA 1005 Cat 6 Channel' },\n // { value: 'TIA 1005 Cat 6 Channel (+ALL)', label: 'TIA 1005 Cat 6 Channel (+ALL)' },\n // { value: 'TIA 1005 Cat 6 Channel (+PoE)', label: 'TIA 1005 Cat 6 Channel (+PoE)' },\n {\n value: 'TIA 1005 Cat 6 Channel E1 (+ALL)',\n label: 'TIA 1005 Cat 6 Channel E1 (+ALL)'\n },\n // { value: 'TIA 1005 Cat 6 Channel E1 (+PoE)', label: 'TIA 1005 Cat 6 Channel E1 (+PoE)' },\n {\n value: 'TIA 1005 Cat 6 Channel E2 (+ALL)',\n label: 'TIA 1005 Cat 6 Channel E2 (+ALL)'\n },\n // { value: 'TIA 1005 Cat 6 Channel E2 (+PoE)', label: 'TIA 1005 Cat 6 Channel E2 (+PoE)' },\n {\n value: 'TIA 1005 Cat 6 Channel E3 (+ALL)',\n label: 'TIA 1005 Cat 6 Channel E3 (+ALL)'\n }\n ]\n },\n Cat5e: {\n label: 'Cat5e',\n children: [\n {\n value: 'TIA Cat 5e Perm.Link',\n label: 'TIA Cat 5e Perm.Link'\n },\n {\n value: 'TIA Cat 5e Perm.Link (+ALL)',\n label: 'TIA Cat 5e Perm.Link (+ALL)'\n },\n {\n value: 'TIA Cat 5e Perm.Link (+PoE)',\n label: 'TIA Cat 5e Perm.Link (+PoE)'\n },\n {\n value: 'TIA Cat 5e Channel',\n label: 'TIA Cat 5e Channel'\n },\n {\n value: 'TIA Cat 5e Channel (+ALL)',\n label: 'TIA Cat 5e Channel (+ALL)'\n },\n {\n value: 'TIA Cat 5e Channel (+PoE)',\n label: 'TIA Cat 5e Channel (+PoE)'\n },\n {\n value: 'TIA Cat 5e MPTL',\n label: 'TIA Cat 5e MPTL'\n },\n {\n value: 'TIA Cat 5e MPTL (+PoE)',\n label: 'TIA Cat 5e MPTL (+PoE)'\n },\n // { value: 'TIA 1005 Cat 5e Perm.Link', label: 'TIA 1005 Cat 5e Perm.Link' },\n // { value: 'TIA 1005 Cat 5e Channel', label: 'TIA 1005 Cat 5e Channel' },\n // { value: 'TIA 1005 Cat 5e Channel (+ALL)', label: 'TIA 1005 Cat 5e Channel (+ALL)' },\n // { value: 'TIA 1005 Cat 5e Channel (+PoE)', label: 'TIA 1005 Cat 5e Channel (+PoE)' },\n {\n value: 'TIA 1005 Cat 5e Channel E1 (+ALL)',\n label: 'TIA 1005 Cat 5e Channel E1 (+ALL)'\n },\n // { value: 'TIA 1005 Cat 5e Channel E1 (+PoE)', label: 'TIA 1005 Cat 5e Channel E1 (+PoE)' },\n {\n value: 'TIA 1005 Cat 5e Channel E2 (+ALL)',\n label: 'TIA 1005 Cat 5e Channel E2 (+ALL)'\n },\n // { value: 'TIA 1005 Cat 5e Channel E2 (+PoE)', label: 'TIA 1005 Cat 5e Channel E2 (+PoE)' },\n {\n value: 'TIA 1005 Cat 5e Channel E3 (+ALL)',\n label: 'TIA 1005 Cat 5e Channel E3 (+ALL)'\n }\n ]\n }\n }\n },\n {\n value: 'ISO',\n label: 'ISO',\n children: {\n // 'Class Ⅱ': {\n // label: 'Class Ⅱ',\n // children: [\n // { value: 'ISO11801 PL Class Ⅱ', label: 'ISO11801 PL Class Ⅱ' },\n // { value: 'ISO11801 PL Class Ⅱ (+ALL)', label: 'ISO11801 PL Class Ⅱ (+ALL)' },\n // { value: 'ISO11801 PL Class Ⅱ (+PoE)', label: 'ISO11801 PL Class Ⅱ (+PoE)' },\n // { value: 'ISO11801 Channel Class Ⅱ', label: 'ISO11801 Channel Class Ⅱ' },\n // { value: 'ISO11801 Channel Class Ⅱ (+ALL)', label: 'ISO11801 Channel Class Ⅱ (+ALL)' },\n // { value: 'ISO11801 Channel Class Ⅱ (+PoE)', label: 'ISO11801 Channel Class Ⅱ (+PoE)' }\n // ],\n // disabled: true \n // },\n // 'Class Ⅰ': {\n // label: 'Class Ⅰ',\n // children: [\n // { value: 'ISO11801 PL Class Ⅰ', label: 'ISO11801 PL Class Ⅰ' },\n // { value: 'ISO11801 PL Class Ⅰ (+ALL)', label: 'ISO11801 PL Class Ⅰ (+ALL)' },\n // { value: 'ISO11801 PL Class Ⅰ (+PoE)', label: 'ISO11801 PL Class Ⅰ (+PoE)' },\n // { value: 'ISO11801 Channel Class Ⅰ', label: 'ISO11801 Channel Class Ⅰ' },\n // { value: 'ISO11801 Channel Class Ⅰ (+ALL)', label: 'ISO11801 Channel Class Ⅰ (+ALL)' },\n // { value: 'ISO11801 Channel Class Ⅰ (+PoE)', label: 'ISO11801 Channel Class Ⅰ (+PoE)' }\n // ],\n // disabled: true \n // },\n // 'Class Fa': {\n // label: 'Class Fa',\n // children: [\n // { value: 'ISO11801 PL2 Class Fa', label: 'ISO11801 PL2 Class Fa' },\n // { value: 'ISO11801 PL2 Class Fa (+ALL)', label: 'ISO11801 PL2 Class Fa (+ALL)' },\n // { value: 'ISO11801 PL2 Class Fa (+PoE)', label: 'ISO11801 PL2 Class Fa (+PoE)' },\n // { value: 'ISO11801 PL3 Class Fa', label: 'ISO11801 PL3 Class Fa' },\n // { value: 'ISO11801 PL3 Class Fa (+ALL)', label: 'ISO11801 PL3 Class Fa (+ALL)' },\n // { value: 'ISO11801 PL3 Class Fa (+PoE)', label: 'ISO11801 PL3 Class Fa (+PoE)' },\n // { value: 'ISO11801 Channel Class Fa', label: 'ISO11801 Channel Class Fa' },\n // { value: 'ISO11801 Channel Class Fa (+ALL)', label: 'ISO11801 Channel Class Fa (+ALL)' },\n // { value: 'ISO11801 Channel Class Fa (+PoE)', label: 'ISO11801 Channel Class Fa (+PoE)' }\n // ],\n // disabled: true \n // },\n // 'Class F': {\n // label: 'Class F',\n // children: [\n // { value: 'ISO11801 PL Class F', label: 'ISO11801 PL Class F' },\n // { value: 'ISO11801 PL Class F (+ALL)', label: 'ISO11801 PL Class F (+ALL)' },\n // { value: 'ISO11801 PL Class F (+PoE)', label: 'ISO11801 PL Class F (+PoE)' },\n // { value: 'ISO11801 Channel Class F', label: 'ISO11801 Channel Class F' },\n // { value: 'ISO11801 Channel Class F (+ALL)', label: 'ISO11801 Channel Class F (+ALL)' },\n // { value: 'ISO11801 Channel Class F (+PoE)', label: 'ISO11801 Channel Class F (+PoE)' }\n // ],\n // disabled: true \n // },\n 'Class Ea': {\n label: 'Class Ea',\n children: [\n {\n value: 'ISO11801 PL2 Class Ea',\n label: 'ISO11801 PL2 Class Ea'\n },\n {\n value: 'ISO11801 PL2 Class Ea (+ALL)',\n label: 'ISO11801 PL2 Class Ea (+ALL)'\n },\n {\n value: 'ISO11801 PL2 Class Ea (+PoE)',\n label: 'ISO11801 PL2 Class Ea (+PoE)'\n },\n {\n value: 'ISO11801 PL3 Class Ea',\n label: 'ISO11801 PL3 Class Ea'\n },\n {\n value: 'ISO11801 PL3 Class Ea (+ALL)',\n label: 'ISO11801 PL3 Class Ea (+ALL)'\n },\n {\n value: 'ISO11801 PL3 Class Ea (+PoE)',\n label: 'ISO11801 PL3 Class Ea (+PoE)'\n },\n {\n value: 'ISO11801 Channel Class Ea',\n label: 'ISO11801 Channel Class Ea'\n },\n {\n value: 'ISO11801 Channel Class Ea (+ALL)',\n label: 'ISO11801 Channel Class Ea (+ALL)'\n },\n {\n value: 'ISO11801 Channel Class Ea (+PoE)',\n label: 'ISO11801 Channel Class Ea (+PoE)'\n },\n {\n value: 'ISO MPTL Class Ea',\n label: 'ISO MPTL Class Ea'\n },\n {\n value: 'ISO MPTL Class Ea (+PoE)',\n label: 'ISO MPTL Class Ea (+PoE)'\n }\n ]\n },\n 'Class E': {\n label: 'Class E',\n children: [\n {\n value: 'ISO11801 PL Class E',\n label: 'ISO11801 PL Class E'\n },\n {\n value: 'ISO11801 PL Class E (+ALL)',\n label: 'ISO11801 PL Class E (+ALL)'\n },\n {\n value: 'ISO11801 PL Class E (+PoE)',\n label: 'ISO11801 PL Class E (+PoE)'\n },\n {\n value: 'ISO11801 Channel Class E',\n label: 'ISO11801 Channel Class E'\n },\n {\n value: 'ISO11801 Channel Class E (+ALL)',\n label: 'ISO11801 Channel Class E (+ALL)'\n },\n {\n value: 'ISO11801 Channel Class E (+PoE)',\n label: 'ISO11801 Channel Class E (+PoE)'\n },\n {\n value: 'ISO MPTL Class E',\n label: 'ISO MPTL Class E'\n },\n {\n value: 'ISO MPTL Class E (+PoE)',\n label: 'ISO MPTL Class E (+PoE)'\n }\n ]\n },\n 'Class D': {\n label: 'Class D',\n children: [\n {\n value: 'ISO11801 PL Class D',\n label: 'ISO11801 PL Class D'\n },\n {\n value: 'ISO11801 PL Class D (+ALL)',\n label: 'ISO11801 PL Class D (+ALL)'\n },\n {\n value: 'ISO11801 PL Class D (+PoE)',\n label: 'ISO11801 PL Class D (+PoE)'\n },\n {\n value: 'ISO11801 Channel Class D',\n label: 'ISO11801 Channel Class D'\n },\n {\n value: 'ISO11801 Channel Class D (+ALL)',\n label: 'ISO11801 Channel Class D (+ALL)'\n },\n {\n value: 'ISO11801 Channel Class D (+PoE)',\n label: 'ISO11801 Channel Class D (+PoE)'\n },\n {\n value: 'ISO MPTL Class D',\n label: 'ISO MPTL Class D'\n },\n {\n value: 'ISO MPTL Class D (+PoE)',\n label: 'ISO MPTL Class D (+PoE)'\n }\n ]\n }\n }\n },\n {\n value: '区域',\n label: '区域',\n children: {\n '中国': {\n label: '中国',\n children: [\n // { value: 'GBT 50312-2016 Cat 7A PL no CP', label: 'GB/T 50312-2016 Cat 7A PL no CP' },\n // { value: 'GBT 50312-2016 Cat 7A PL no CP (+ALL)', label: 'GB/T 50312-2016 Cat 7A PL no CP (+ALL)' },\n // { value: 'GBT 50312-2016 Cat 7A PL no CP (+PoE)', label: 'GB/T 50312-2016 Cat 7A PL no CP (+PoE)' },\n // { value: 'GBT 50312-2016 Cat 7A PL with CP', label: 'GB/T 50312-2016 Cat 7A PL with CP' },\n // { value: 'GBT 50312-2016 Cat 7A PL with CP (+ALL)', label: 'GB/T 50312-2016 Cat 7A PL with CP (+ALL)' },\n // { value: 'GBT 50312-2016 Cat 7A PL with CP (+PoE)', label: 'GB/T 50312-2016 Cat 7A PL with CP (+PoE)' },\n // { value: 'GBT 50312-2016 Cat 7A Ch', label: 'GB/T 50312-2016 Cat 7A Ch' },\n // { value: 'GBT 50312-2016 Cat 7A Ch (+ALL)', label: 'GB/T 50312-2016 Cat 7A Ch (+ALL)' },\n // { value: 'GBT 50312-2016 Cat 7A Ch (+PoE)', label: 'GB/T 50312-2016 Cat 7A Ch (+PoE)' },\n // { value: 'GBT 50312-2016 Cat 7 PL', label: 'GB/T 50312-2016 Cat 7 PL' },\n // { value: 'GBT 50312-2016 Cat 7 PL (+ALL)', label: 'GB/T 50312-2016 Cat 7 PL (+ALL)' },\n // { value: 'GBT 50312-2016 Cat 7 PL (+PoE)', label: 'GB/T 50312-2016 Cat 7 PL (+PoE)' },\n // { value: 'GBT 50312-2016 Cat 7 Ch', label: 'GB/T 50312-2016 Cat 7 Ch' },\n // { value: 'GBT 50312-2016 Cat 7 Ch (+ALL)', label: 'GB/T 50312-2016 Cat 7 Ch (+ALL)' },\n // { value: 'GBT 50312-2016 Cat 7 Ch (+PoE)', label: 'GB/T 50312-2016 Cat 7 Ch (+PoE)' },\n {\n value: 'GBT 50312-2016 Cat 6A PL no CP',\n label: 'GB/T 50312-2016 Cat 6A PL no CP'\n },\n {\n value: 'GBT 50312-2016 Cat 6A PL no CP (+ALL)',\n label: 'GB/T 50312-2016 Cat 6A PL no CP (+ALL)'\n },\n {\n value: 'GBT 50312-2016 Cat 6A PL no CP (+PoE)',\n label: 'GB/T 50312-2016 Cat 6A PL no CP (+PoE)'\n },\n {\n value: 'GBT 50312-2016 Cat 6A PL with CP',\n label: 'GB/T 50312-2016 Cat 6A PL with CP'\n },\n {\n value: 'GBT 50312-2016 Cat 6A PL with CP (+ALL)',\n label: 'GB/T 50312-2016 Cat 6A PL with CP (+ALL)'\n },\n {\n value: 'GBT 50312-2016 Cat 6A PL with CP (+PoE)',\n label: 'GB/T 50312-2016 Cat 6A PL with CP (+PoE)'\n },\n {\n value: 'GBT 50312-2016 Cat 6A Ch',\n label: 'GB/T 50312-2016 Cat 6A Ch'\n },\n {\n value: 'GBT 50312-2016 Cat 6A Ch (+ALL)',\n label: 'GB/T 50312-2016 Cat 6A Ch (+ALL)'\n },\n {\n value: 'GBT 50312-2016 Cat 6A Ch (+PoE)',\n label: 'GB/T 50312-2016 Cat 6A Ch (+PoE)'\n },\n {\n value: 'GBT 50312-2016 Cat 6 PL',\n label: 'GB/T 50312-2016 Cat 6 PL'\n },\n {\n value: 'GBT 50312-2016 Cat 6 PL (+ALL)',\n label: 'GB/T 50312-2016 Cat 6 PL (+ALL)'\n },\n {\n value: 'GBT 50312-2016 Cat 6 PL (+PoE)',\n label: 'GB/T 50312-2016 Cat 6 PL (+PoE)'\n },\n {\n value: 'GBT 50312-2016 Cat 6 Ch',\n label: 'GB/T 50312-2016 Cat 6 Ch'\n },\n {\n value: 'GBT 50312-2016 Cat 6 Ch (+ALL)',\n label: 'GB/T 50312-2016 Cat 6 Ch (+ALL)'\n },\n {\n value: 'GBT 50312-2016 Cat 6 Ch (+PoE)',\n label: 'GB/T 50312-2016 Cat 6 Ch (+PoE)'\n },\n {\n value: 'GBT 50312-2016 Cat 5e PL',\n label: 'GB/T 50312-2016 Cat 5e PL'\n },\n {\n value: 'GBT 50312-2016 Cat 5e PL (+ALL)',\n label: 'GB/T 50312-2016 Cat 5e PL (+ALL)'\n },\n {\n value: 'GBT 50312-2016 Cat 5e PL (+PoE)',\n label: 'GB/T 50312-2016 Cat 5e PL (+PoE)'\n },\n {\n value: 'GBT 50312-2016 Cat 5e Ch',\n label: 'GB/T 50312-2016 Cat 5e Ch'\n },\n {\n value: 'GBT 50312-2016 Cat 5e Ch (+ALL)',\n label: 'GB/T 50312-2016 Cat 5e Ch (+ALL)'\n },\n {\n value: 'GBT 50312-2016 Cat 5e Ch (+PoE)',\n label: 'GB/T 50312-2016 Cat 5e Ch (+PoE)'\n }\n ]\n }\n }\n },\n {\n value: '跳线',\n label: '跳线',\n disabled: true,\n children: {\n 'Cat6A Patch Cords': {\n label: 'Cat6A Patch Cords',\n disabled: true,\n children: []\n },\n 'Cat6 Patch Cords': {\n label: 'Cat6 Patch Cords',\n disabled: true,\n children: []\n },\n 'Cat5e Patch Cords': {\n label: 'Cat5e Patch Cords',\n disabled: true,\n children: []\n },\n 'M12 Patch Cords': {\n label: 'M12 Patch Cords',\n disabled: true,\n children: []\n }\n }\n },\n {\n value: '应用',\n label: '应用',\n disabled: false,\n children: [\n {\n value: 'Profinet',\n label: 'Profinet'\n }\n ]\n }\n ]\n },\n WIRE_ORDER: {\n title: '插座配置',\n items: [\n {\n value: 'T568A',\n label: 'T568A',\n disabled: true\n },\n {\n value: 'T568B',\n label: 'T568B'\n },\n {\n value: 'Ethernet Two-Pair',\n label: 'Ethernet Two-Pair'\n },\n {\n value: 'M12-D Two-Pair',\n label: 'M12-D Two-Pair'\n }\n ]\n },\n FIBER_TYPE: {\n title: '光纤类型',\n subTitle: '电缆组',\n items: [\n {\n value: '定制',\n label: '定制',\n disabled: true,\n children: {}\n },\n {\n value: 'general',\n label: '通用',\n children: [\n {\n value: 'OM1 Mulitmode 62.5',\n label: 'OM1 Mulitmode 62.5'\n },\n {\n value: 'OM2 Mulitmode 50',\n label: 'OM2 Mulitmode 50'\n },\n {\n value: 'OM3 Mulitmode 50',\n label: 'OM3 Mulitmode 50'\n },\n {\n value: 'OM4 Mulitmode 50',\n label: 'OM4 Mulitmode 50'\n },\n {\n value: 'OM5 Mulitmode 50',\n label: 'OM5 Mulitmode 50'\n },\n {\n value: 'OS1 Singlemode',\n label: 'OS1 Singlemode'\n },\n {\n value: 'OS2 Singlemode',\n label: 'OS2 Singlemode'\n }\n ]\n },\n {\n value: '制造商',\n label: '制造商',\n disabled: true,\n children: {}\n }\n ]\n },\n CFP_LIMIT: {\n title: '测试极限值',\n subTitle: '极限值组',\n items: [\n {\n value: 'TIA',\n label: 'TIA',\n children: [\n {\n value: 'TIA-568.3-E Multimode (STD)',\n label: 'TIA-568.3-E Multimode (STD)'\n },\n {\n value: 'TIA-568.3-E Multimode (REF)',\n label: 'TIA-568.3-E Multimode (REF)'\n },\n {\n value: 'TIA-568.3-E Singlemode ISP (STD)',\n label: 'TIA-568.3-E Singlemode ISP (STD)'\n },\n {\n value: 'TIA-568.3-E Singlemode OSP (STD)',\n label: 'TIA-568.3-E Singlemode OSP (STD)'\n },\n {\n value: 'TIA-568.3-E Singlemode ISP (REF)',\n label: 'TIA-568.3-E Singlemode ISP (REF)'\n },\n {\n value: 'TIA-568.3-E Singlemode OSP (REF)',\n label: 'TIA-568.3-E Singlemode OSP (REF)'\n }\n ]\n },\n {\n value: 'China',\n label: '中国',\n children: [\n {\n value: 'GB/T 50312-2016 Fiber Link',\n label: 'GB/T 50312-2016 Fiber Link'\n },\n {\n value: 'GB/T 50312-2016 OF-300 Ch',\n label: 'GB/T 50312-2016 OF-300 Ch'\n },\n {\n value: 'GB/T 50312-2016 OF-500 Ch',\n label: 'GB/T 50312-2016 OF-500 Ch'\n },\n {\n value: 'GB/T 50312-2016 OF-2000 Ch',\n label: 'GB/T 50312-2016 OF-2000 Ch'\n }\n ]\n },\n {\n value: 'ISO',\n label: 'ISO',\n children: [\n {\n value: 'ISO/IEC 11801-2002 Fibre Link',\n label: 'ISO/IEC 11801-2002 Fibre Link'\n },\n {\n value: 'ISO/IEC 11801-2002 OF-300 CH',\n label: 'ISO/IEC 11801-2002 OF-300 CH'\n },\n {\n value: 'ISO/IEC 11801-2002 OF-500 CH',\n label: 'ISO/IEC 11801-2002 OF-500 CH'\n },\n {\n value: 'ISO/IEC 11801-2002 OF-2000 CH',\n label: 'ISO/IEC 11801-2002 OF-2000 CH'\n },\n {\n value: 'ISO/IEC 14763-3:2024 (Draft)',\n label: 'ISO/IEC 14763-3:2024 (Draft)'\n },\n {\n value: 'ISO/IEC 14763-3:2014',\n label: 'ISO/IEC 14763-3:2014'\n },\n {\n value: 'ISO/IEC 14763-3',\n label: 'ISO/IEC 14763-3'\n }\n ]\n }\n ]\n },\n OFP_LIMIT: {\n title: 'OFP极限值',\n items: [\n {\n value: 'TIA',\n label: 'TIA',\n children: [\n {\n value: 'ANSI/TIA-568.3-E',\n label: 'ANSI/TIA-568.3-E'\n },\n {\n value: 'ANSI/TIA-568.3-E RL = 20 dB',\n label: 'ANSI/TIA-568.3-E RL = 20 dB'\n },\n {\n value: 'ANSI/TIA-568.3-E RL = 35 dB',\n label: 'ANSI/TIA-568.3-E RL = 35 dB'\n },\n {\n value: 'ANSI/TIA-568.3-E RL = 55 dB',\n label: 'ANSI/TIA-568.3-E RL = 55 dB'\n }\n ]\n },\n {\n value: 'China',\n label: '中国',\n children: [\n {\n value: 'GB/T 50312-2016 Fiber Link',\n label: 'GB/T 50312-2016 Fiber Link'\n },\n {\n value: 'GB/T 50312-2016 OF-300 Ch',\n label: 'GB/T 50312-2016 OF-300 Ch'\n },\n {\n value: 'GB/T 50312-2016 OF-500 Ch',\n label: 'GB/T 50312-2016 OF-500 Ch'\n },\n {\n value: 'GB/T 50312-2016 OF-2000 Ch',\n label: 'GB/T 50312-2016 OF-2000 Ch'\n }\n ]\n },\n {\n value: 'ISO',\n label: 'ISO',\n children: [\n {\n value: 'ISO/IEC 11801-2002 Fibre Link',\n label: 'ISO/IEC 11801-2002 Fibre Link'\n },\n {\n value: 'ISO/IEC 11801-2002 OF-300 CH',\n label: 'ISO/IEC 11801-2002 OF-300 CH'\n },\n {\n value: 'ISO/IEC 11801-2002 OF-500 CH',\n label: 'ISO/IEC 11801-2002 OF-500 CH'\n },\n {\n value: 'ISO/IEC 11801-2002 OF-2000 CH',\n label: 'ISO/IEC 11801-2002 OF-2000 CH'\n },\n {\n value: 'ISO/IEC 14763-3:2024 (Draft)',\n label: 'ISO/IEC 14763-3:2024 (Draft)'\n },\n {\n value: 'ISO/IEC 14763-3:2024 RL = 20 (Draft)',\n label: 'ISO/IEC 14763-3:2024 RL = 20 (Draft)'\n },\n {\n value: 'ISO/IEC 14763-3:2024 RL = 35 (Draft)',\n label: 'ISO/IEC 14763-3:2024 RL = 35 (Draft)'\n },\n {\n value: 'ISO/IEC 14763-3:2024 RL = 60 (Draft)',\n label: 'ISO/IEC 14763-3:2024 RL = 60 (Draft)'\n },\n {\n value: 'ISO/IEC 14763-3:2014',\n label: 'ISO/IEC 14763-3:2014'\n },\n {\n value: 'ISO/IEC 14763-3',\n label: 'ISO/IEC 14763-3'\n }\n ]\n }\n ]\n }\n};\nfunction MenuList() {\n const { navigation, getCurrentProject, updateProject, navigateTo, goBack } = (0,_store_displayStore__WEBPACK_IMPORTED_MODULE_5__[\"default\"])();\n const currentProject = getCurrentProject();\n const { menuType, selectedConfigId } = navigation.current.params;\n const [selectedPath, setSelectedPath] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)([]);\n const [currentMenu, setCurrentMenu] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(menuData[menuType]);\n // 获取当前选中的配置\n const currentConfig = currentProject.testConfigs.find((config)=>config.id === selectedConfigId);\n // 处理菜单选项选择\n const handleMenuSelect = (item)=>{\n if (item.disabled) return;\n if (item.children) {\n // 如果有子菜单,更新路径和当前菜单\n setSelectedPath([\n ...selectedPath,\n item\n ]);\n setCurrentMenu(item.children);\n return;\n }\n // 如果是最终选项,更新配置并返回\n let updatedConfig = {\n ...currentConfig\n };\n switch(menuType){\n case 'CABLE_TYPE':\n updatedConfig.params.cableType = item.value;\n break;\n case 'LIMIT_VALUE':\n updatedConfig.params.limitValue = item.value;\n break;\n case 'WIRE_ORDER':\n updatedConfig.params.wireOrder = item.value;\n break;\n case 'FIBER_TYPE':\n updatedConfig.params.cableType = item.value;\n if (updatedConfig.moduleType === 'cfp') {\n if (item.value.includes('OM')) {\n updatedConfig.params.limitValue = 'TIA-568.3-E Multimode (STD)';\n } else {\n updatedConfig.params.limitValue = 'TIA-568.3-E Singlemode ISP (STD)';\n }\n }\n break;\n case 'CFP_LIMIT':\n updatedConfig.params.limitValue = item.value;\n break;\n case 'OFP_LIMIT':\n updatedConfig.params.limitValue = item.value;\n break;\n case 'MODULE':\n // 如果模块类型发生变化,完全替换配置对象\n if (currentConfig.moduleType !== item.value) {\n switch(item.value){\n case '8000':\n updatedConfig = {\n id: currentConfig.id,\n moduleType: '8000',\n modulelable: '铜缆测试仪',\n params: {\n limitValue: 'TIA Cat 6 Channel',\n cableType: 'Cat6 U/UTP',\n wireOrder: 'T568B'\n }\n };\n break;\n case 'cfp':\n updatedConfig = {\n id: currentConfig.id,\n moduleType: 'cfp',\n modulelable: '光损耗测试仪',\n params: {\n limitValue: 'TIA-568.3-E Multimode (STD)',\n cableType: 'OM3 Multimode 50',\n refJumper: '1',\n spliceCount: '0',\n connectorCount: '2'\n }\n };\n break;\n case 'ofp':\n updatedConfig = {\n id: currentConfig.id,\n moduleType: 'ofp',\n modulelable: 'OTDR测试仪',\n params: {\n limitValue: 'General Fiber RL = 35 dB',\n cableType: 'OM3 Multimode 50'\n }\n };\n break;\n }\n } else {\n updatedConfig.moduleType = item.value;\n updatedConfig.modulelable = item.label;\n }\n break;\n }\n // 更新项目数据\n const updatedConfigs = currentProject.testConfigs.map((config)=>{\n if (config.id === selectedConfigId) {\n return updatedConfig;\n }\n return config;\n });\n const projectIndex = _store_displayStore__WEBPACK_IMPORTED_MODULE_5__[\"default\"].getState().selectedIndexes.projectIndex;\n updateProject(projectIndex, {\n testConfigs: updatedConfigs\n });\n // 返回上一页\n goBack();\n };\n // 处理返回上一级\n const handleBack = ()=>{\n if (selectedPath.length > 0) {\n const newPath = selectedPath.slice(0, -1);\n setSelectedPath(newPath);\n if (newPath.length === 0) {\n setCurrentMenu(menuData[menuType]);\n } else {\n let current = menuData[menuType];\n for (const item of newPath){\n current = current.items.find((i)=>i.value === item.value).children;\n }\n setCurrentMenu(current);\n }\n } else {\n goBack();\n }\n };\n // 渲染菜单选项\n const renderMenuOptions = ()=>{\n if (!currentMenu) return null;\n // 如果是子菜单,直接渲染子菜单项\n if (Array.isArray(currentMenu)) {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full h-[490px]\",\n children: currentMenu.map((item)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `h-[60px] w-full bg-[#F8F6F7] p-4 shadow-lg flex items-center ${item.disabled ? 'opacity-50 cursor-not-allowed' : 'cursor-pointer'} ${currentConfig.params.cableType === item.value ? 'bg-blue-500' : ''}`,\n onClick: ()=>handleMenuSelect(item),\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black text-sm\",\n children: item.label\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/MenuList.js\",\n lineNumber: 606,\n columnNumber: 29\n }, this)\n }, item.value, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/MenuList.js\",\n lineNumber: 597,\n columnNumber: 25\n }, this))\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/MenuList.js\",\n lineNumber: 595,\n columnNumber: 17\n }, this);\n }\n // 如果是对象形式的子菜单(如 LIMIT_VALUE 的二级菜单)\n if (typeof currentMenu === 'object' && !currentMenu.items) {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full h-[490px]\",\n children: Object.entries(currentMenu).map(([key, item])=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `h-[60px] w-full bg-[#F8F6F7] p-4 shadow-lg flex items-center cursor-pointer ${currentConfig.params.cableType === item.value ? 'bg-blue-500' : ''}`,\n onClick: ()=>handleMenuSelect(item),\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black text-sm\",\n children: item.label\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/MenuList.js\",\n lineNumber: 625,\n columnNumber: 29\n }, this)\n }, key, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/MenuList.js\",\n lineNumber: 618,\n columnNumber: 25\n }, this))\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/MenuList.js\",\n lineNumber: 616,\n columnNumber: 17\n }, this);\n }\n // 如果是主菜单,渲染主菜单项\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full h-[490px]\",\n children: currentMenu.items.map((item)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `h-[60px] w-full bg-[#F8F6F7] p-4 shadow-lg flex items-center ${item.disabled ? 'opacity-50 cursor-not-allowed' : 'cursor-pointer'} ${currentConfig.params.cableType === item.value ? 'bg-blue-500' : ''}`,\n onClick: ()=>handleMenuSelect(item),\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black text-sm\",\n children: item.label\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/MenuList.js\",\n lineNumber: 645,\n columnNumber: 25\n }, this)\n }, item.value, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/MenuList.js\",\n lineNumber: 636,\n columnNumber: 21\n }, this))\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/MenuList.js\",\n lineNumber: 634,\n columnNumber: 13\n }, this);\n };\n // 获取当前菜单标题(返回 null 表示不显示)\n const getCurrentTitle = ()=>{\n if (selectedPath.length === 0) {\n const subTitle = menuData[menuType]?.subTitle;\n return subTitle ? subTitle : null; // 如果 subTitle 为空则返回 null\n }\n return selectedPath[selectedPath.length - 1].label;\n };\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full h-full flex flex-col overflow-hidden\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_StatusBar__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {}, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/MenuList.js\",\n lineNumber: 663,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_TitleBar__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n title: menuData[menuType].title,\n backTo: selectedPath.length > 0 ? 'menulist' : navigation.previous?.name,\n view: selectedPath.length > 0 ? 'setup' : navigation.previous?.view,\n onBack: handleBack\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/MenuList.js\",\n lineNumber: 664,\n columnNumber: 9\n }, this),\n getCurrentTitle() !== null && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_SubTitleBar__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n title: getCurrentTitle()\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/MenuList.js\",\n lineNumber: 672,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 bg-[#D5DFEB]\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-full overflow-y-auto [&::-webkit-scrollbar]:hidden\",\n children: renderMenuOptions()\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/MenuList.js\",\n lineNumber: 675,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/MenuList.js\",\n lineNumber: 674,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/MenuList.js\",\n lineNumber: 662,\n columnNumber: 9\n }, this);\n}\n\n__webpack_async_result__();\n} catch(e) { __webpack_async_result__(e); } });//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHBhZ2VzLWRpci1ub2RlKS8uL3NyYy9jb21wb25lbnRzL2RzeHBhZ2UvZ2VuZXJhbC9NZW51TGlzdC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQWtEO0FBQ0U7QUFDRjtBQUNNO0FBQ0w7QUFFbkQsU0FBUztBQUNULE1BQU1PLFdBQVc7SUFDVEMsUUFBUTtRQUNKQyxPQUFPO1FBQ1BDLE9BQU87WUFDSDtnQkFBRUMsT0FBTztnQkFBUUMsT0FBTztZQUFRO1lBQ2hDO2dCQUFFRCxPQUFPO2dCQUFPQyxPQUFPO1lBQVM7WUFDaEM7Z0JBQUVELE9BQU87Z0JBQU9DLE9BQU87WUFBVTtTQUNwQztJQUNMO0lBQ0FDLFlBQVk7UUFDUkosT0FBTztRQUNQSyxVQUFVO1FBQ1ZKLE9BQU87WUFDSDtnQkFBRUMsT0FBTztnQkFBVUMsT0FBTztnQkFBTUcsVUFBVTtZQUFLO1lBQy9DO2dCQUNJSixPQUFPO2dCQUNQQyxPQUFPO2dCQUNQSSxVQUFVO29CQUNOLGdEQUFnRDtvQkFDaEQsa0RBQWtEO29CQUNsRCxnREFBZ0Q7b0JBQ2hELGtEQUFrRDtvQkFDbEQ7d0JBQUVMLE9BQU87d0JBQWVDLE9BQU87b0JBQWM7b0JBQzdDO3dCQUFFRCxPQUFPO3dCQUFlQyxPQUFPO29CQUFjO29CQUM3Qzt3QkFBRUQsT0FBTzt3QkFBY0MsT0FBTztvQkFBYTtvQkFDM0M7d0JBQUVELE9BQU87d0JBQWNDLE9BQU87b0JBQWE7b0JBQzNDLGdEQUFnRDtvQkFDaEQ7d0JBQUVELE9BQU87d0JBQWVDLE9BQU87b0JBQWM7b0JBQzdDO3dCQUFFRCxPQUFPO3dCQUFlQyxPQUFPO29CQUFjO2lCQUdoRDtZQUNMO1lBQ0E7Z0JBQUVELE9BQU87Z0JBQVdDLE9BQU87Z0JBQVVHLFVBQVU7WUFBSztZQUNwRDtnQkFBRUosT0FBTztnQkFBZ0JDLE9BQU87Z0JBQU9HLFVBQVU7WUFBSztTQUN6RDtJQUNMO0lBQ0FFLGFBQWE7UUFDVFIsT0FBTztRQUNQSyxVQUFVO1FBQ1ZKLE9BQU87WUFD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REFBQzBEO1FBQUlDLFdBQVU7OzBCQUNmLDhEQUFDcEUsaUVBQVNBOzs7OzswQkFDViw4REFBQ0MsZ0VBQVFBO2dCQUNMSyxPQUFPRixRQUFRLENBQUN5QixTQUFTLENBQUN2QixLQUFLO2dCQUMvQm9FLFFBQVF6QyxhQUFhMkIsTUFBTSxHQUFHLElBQUksYUFBYXJDLFdBQVdvRCxRQUFRLEVBQUVDO2dCQUNwRUMsTUFBTTVDLGFBQWEyQixNQUFNLEdBQUcsSUFBSSxVQUFVckMsV0FBV29ELFFBQVEsRUFBRUU7Z0JBQy9EQyxRQUFRbkI7Ozs7OztZQUdYYyxzQkFBc0Isc0JBQ25CLDhEQUFDdkUsbUVBQVdBO2dCQUFDSSxPQUFPbUU7Ozs7OzswQkFFeEIsOERBQUNOO2dCQUFJQyxXQUFVOzBCQUNYLDRFQUFDRDtvQkFBSUMsV0FBVTs4QkFDZEo7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBS2IiLCJzb3VyY2VzIjpbIi9vcHQvZGV2L2VzdC1kc3gvc3JjL2NvbXBvbmVudHMvZHN4cGFnZS9nZW5lcmFsL01lbnVMaXN0LmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSx1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgU3RhdHVzQmFyIGZyb20gJ0AvY29tcG9uZW50cy9saWIvL1N0YXR1c0Jhcic7XG5pbXBvcnQgVGl0bGVCYXIgZnJvbSAnQC9jb21wb25lbnRzL2xpYi8vVGl0bGVCYXInO1xuaW1wb3J0IFN1YlRpdGxlQmFyIGZyb20gJ0AvY29tcG9uZW50cy9saWIvL1N1YlRpdGxlQmFyJztcbmltcG9ydCB1c2VEaXNwbGF5U3RvcmUgZnJvbSAnQC9zdG9yZS9kaXNwbGF5U3RvcmUnO1xuXG4vLyDoj5zljZXmlbDmja7lrprkuYlcbmNvbnN0IG1lbnVEYXRhID0ge1xuICAgICAgICBNT0RVTEU6IHtcbiAgICAgICAgICAgIHRpdGxlOiAn5qih5Z2XJyxcbiAgICAgICAgICAgIGl0ZW1zOiBbXG4gICAgICAgICAgICAgICAgeyB2YWx1ZTogJzgwMDAnLCBsYWJlbDogJ+mTnOe8hua1i+ivleS7qicgfSxcbiAgICAgICAgICAgICAgICB7IHZhbHVlOiAnY2ZwJywgbGFiZWw6ICflhYnmjZ/ogJfmtYvor5Xku6onIH0sXG4gICAgICAgICAgICAgICAgeyB2YWx1ZTogJ29mcCcsIGxhYmVsOiAnT1REUua1i+ivleS7qicgfVxuICAgICAgICAgICAgXVxuICAgICAgICB9LFxuICAgICAgICBDQUJMRV9UWVBFOiB7XG4gICAgICAgICAgICB0aXRsZTogJ+eUtee8huexu+WeiycsXG4gICAgICAgICAgICBzdWJUaXRsZTogJ+eUtee8huexu+WeiycsXG4gICAgICAgICAgICBpdGVtczogW1xuICAgICAgICAgICAgICAgIHsgdmFsdWU6ICdjdXN0b20nLCBsYWJlbDogJ+WumuWIticsIGRpc2FibGVkOiB0cnVlIH0sXG4gICAgICAgICAgICAgICAgeyBcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICdnZW5lcmFsJywgXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiAn6YCa55SoJyxcbiAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW46IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHsgdmFsdWU6ICdDYXQ4IFMvRlRQJywgbGFiZWw6ICdDYXQ4IFMvRlRQJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgLy8geyB2YWx1ZTogJ0NhdDdBIFMvRlRQJywgbGFiZWw6ICdDYXQ3QSBTL0ZUUCcgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHsgdmFsdWU6ICdDYXQ3IFMvRlRQJywgbGFiZWw6ICdDYXQ3IFMvRlRQJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgLy8geyB2YWx1ZTogJ0NhdDZBIFMvRlRQJywgbGFiZWw6ICdDYXQ2QSBTL0ZUUCcgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6ICdDYXQ2QSBVL1VUUCcsIGxhYmVsOiAnQ2F0NkEgVS9VVFAnIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiAnQ2F0NkEgRi9VVFAnLCBsYWJlbDogJ0NhdDZBIEYvVVRQJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogJ0NhdDYgVS9VVFAnLCBsYWJlbDogJ0NhdDYgVS9VVFAnIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiAnQ2F0NiBGL1VUUCcsIGxhYmVsOiAnQ2F0NiBGL1VUUCcgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHsgdmFsdWU6ICdDYXQ2IFUvRlRQJywgbGFiZWw6ICdDYXQ2IFUvRlRQJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogJ0NhdDVlIFUvVVRQJywgbGFiZWw6ICdDYXQ1ZSBVL1VUUCcgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6ICdDYXQ1ZSBGL1VUUCcsIGxhYmVsOiAnQ2F0NWUgRi9VVFAnIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyB7IHZhbHVlOiAnQ2F0NSBVL1VUUCcsIGxhYmVsOiAnQ2F0NSBVL1VUUCcgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHsgdmFsdWU6ICdDYXQ1IEYvVVRQJywgbGFiZWw6ICdDYXQ1IEYvVVRQJyB9XG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHsgdmFsdWU6ICdjb2F4aWFsJywgbGFiZWw6ICfpgJrnlKjlkIzovbTnlLXnvIYnLCBkaXNhYmxlZDogdHJ1ZSB9LFxuICAgICAgICAgICAgICAgIHsgdmFsdWU6ICdtYW51ZmFjdHVyZXInLCBsYWJlbDogJ+WItumAoOWVhicsIGRpc2FibGVkOiB0cnVlIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfSxcbiAgICAgICAgTElNSVRfVkFMVUU6IHtcbiAgICAgICAgICAgIHRpdGxlOiAn5rWL6K+V5p6B6ZmQ5YC8JyxcbiAgICAgICAgICAgIHN1YlRpdGxlOiAn5p6B6ZmQ5YC857uEJyxcbiAgICAgICAgICAgIGl0ZW1zOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB2YWx1ZTogJ1RJQScsXG4gICAgICAgICAgICAgICAgbGFiZWw6ICdUSUEnLFxuICAgICAgICAgICAgICAgIGNoaWxkcmVuOiB7XG4gICAgICAgICAgICAgICAgICAvLyBDYXQ4OiB7XG4gICAgICAgICAgICAgICAgICAvLyAgIGxhYmVsOiAnQ2F0OCcsXG4gICAgICAgICAgICAgICAgICAvLyAgIGNoaWxkcmVuOiBbXG4gICAgICAgICAgICAgICAgICAvLyAgICAgeyB2YWx1ZTogJ1RJQSBDYXQgOCBQZXJtLkxpbmsnLCBsYWJlbDogJ1RJQSBDYXQgOCBQZXJtLkxpbmsnIH0sXG4gICAgICAgICAgICAgICAgICAvLyAgICAgeyB2YWx1ZTogJ1RJQSBDYXQgOCBQZXJtLkxpbmsgKCtBTEwpJywgbGFiZWw6ICdUSUEgQ2F0IDggUGVybS5MaW5rICgrQUxMKScgfSxcbiAgICAgICAgICAgICAgICAgIC8vICAgICB7IHZhbHVlOiAnVElBIENhdCA4IFBlcm0uTGluayAoK1BvRSknLCBsYWJlbDogJ1RJQSBDYXQgOCBQZXJtLkxpbmsgKCtQb0UpJyB9LFxuICAgICAgICAgICAgICAgICAgLy8gICAgIHsgdmFsdWU6ICdUSUEgQ2F0IDggQ2hhbm5lbCcsIGxhYmVsOiAnVElBIENhdCA4IENoYW5uZWwnIH0sXG4gICAgICAgICAgICAgICAgICAvLyAgICAgeyB2YWx1ZTogJ1RJQSBDYXQgOCBDaGFubmVsICgrQUxMKScsIGxhYmVsOiAnVElBIENhdCA4IENoYW5uZWwgKCtBTEwpJyB9LFxuICAgICAgICAgICAgICAgICAgLy8gICAgIHsgdmFsdWU6ICdUSUEgQ2F0IDggQ2hhbm5lbCAoK1BvRSknLCBsYWJlbDogJ1RJQSBDYXQgOCBDaGFubmVsICgrUG9FKScgfVxuICAgICAgICAgICAgICAgICAgLy8gICBdXG4gICAgICAgICAgICAgICAgICAvLyB9LFxuICAgICAgICAgICAgICAgICAgQ2F0NkE6IHtcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdDYXQ2QScsXG4gICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuOiBbXG4gICAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogJ1RJQSBDYXQgNkEgUGVybS5MaW5rJywgbGFiZWw6ICdUSUEgQ2F0IDZBIFBlcm0uTGluaycgfSxcbiAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiAnVElBIENhdCA2QSBQZXJtLkxpbmsgKCtBTEwpJywgbGFiZWw6ICdUSUEgQ2F0IDZBIFBlcm0uTGluayAoK0FMTCknIH0sXG4gICAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogJ1RJQSBDYXQgNkEgUGVybS5MaW5rICgrUG9FKScsIGxhYmVsOiAnVElBIENhdCA2QSBQZXJtLkxpbmsgKCtQb0UpJyB9LFxuICAgICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6ICdUSUEgQ2F0IDZBIENoYW5uZWwnLCBsYWJlbDogJ1RJQSBDYXQgNkEgQ2hhbm5lbCcgfSxcbiAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiAnVElBIENhdCA2QSBDaGFubmVsICgrQUxMKScsIGxhYmVsOiAnVElBIENhdCA2QSBDaGFubmVsICgrQUxMKScgfSxcbiAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiAnVElBIENhdCA2QSBDaGFubmVsICgrUG9FKScsIGxhYmVsOiAnVElBIENhdCA2QSBDaGFubmVsICgrUG9FKScgfSxcbiAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiAnVElBIENhdCA2QSBNUFRMJywgbGFiZWw6ICdUSUEgQ2F0IDZBIE1QVEwnIH0sXG4gICAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogJ1RJQSBDYXQgNkEgTVBUTCAoK1BvRSknLCBsYWJlbDogJ1RJQSBDYXQgNkEgTVBUTCAoK1BvRSknIH0sXG4gICAgICAgICAgICAgICAgICAgICAgLy8geyB2YWx1ZTogJ1RJQSAxMDA1IENhdCA2QSBQZXJtLkxpbmsnLCBsYWJlbDogJ1RJQSAxMDA1IENhdCA2QSBQZXJtLkxpbmsnIH0sXG4gICAgICAgICAgICAgICAgICAgICAgLy8geyB2YWx1ZTogJ1RJQSAxMDA1IENhdCA2QSBDaGFubmVsJywgbGFiZWw6ICdUSUEgMTAwNSBDYXQgNkEgQ2hhbm5lbCcgfSxcbiAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiAnVElBIDEwMDUgQ2F0IDZBIENoYW5uZWwgRTEgKCtBTEwpJywgbGFiZWw6ICdUSUEgMTAwNSBDYXQgNkEgQ2hhbm5lbCBFMSAoK0FMTCknIH0sXG4gICAgICAgICAgICAgICAgICAgICAgLy8geyB2YWx1ZTogJ1RJQSAxMDA1IENhdCA2QSBDaGFubmVsIEUxICgrUG9FKScsIGxhYmVsOiAnVElBIDEwMDUgQ2F0IDZBIENoYW5uZWwgRTEgKCtQb0UpJyB9LFxuICAgICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6ICdUSUEgMTAwNSBDYXQgNkEgQ2hhbm5lbCBFMiAoK0FMTCknLCBsYWJlbDogJ1RJQSAxMDA1IENhdCA2QSBDaGFubmVsIEUyICgrQUxMKScgfSxcbiAgICAgICAgICAgICAgICAgICAgICAvLyB7IHZhbHVlOiAnVElBIDEwMDUgQ2F0IDZBIENoYW5uZWwgRTIgKCtQb0UpJywgbGFiZWw6ICdUSUEgMTAwNSBDYXQgNkEgQ2hhbm5lbCBFMiAoK1BvRSknIH0sXG4gICAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogJ1RJQSAxMDA1IENhdCA2QSBDaGFubmVsIEUzICgrQUxMKScsIGxhYmVsOiAnVElBIDEwMDUgQ2F0IDZBIENoYW5uZWwgRTMgKCtBTEwpJyB9LFxuICAgICAgICAgICAgICAgICAgICAgIC8vIHsgdmFsdWU6ICdUSUEgMTAwNSBDYXQgNkEgQ2hhbm5lbCBFMyAoK1BvRSknLCBsYWJlbDogJ1RJQSAxMDA1IENhdCA2QSBDaGFubmVsIEUzICgrUG9FKScgfVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgQ2F0Njoge1xuICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ0NhdDYnLFxuICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbjogW1xuICAgICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6ICdUSUEgQ2F0IDYgUGVybS5MaW5rJywgbGFiZWw6ICdUSUEgQ2F0IDYgUGVybS5MaW5rJyB9LFxuICAgICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6ICdUSUEgQ2F0IDYgUGVybS5MaW5rICgrQUxMKScsIGxhYmVsOiAnVElBIENhdCA2IFBlcm0uTGluayAoK0FMTCknIH0sXG4gICAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogJ1RJQSBDYXQgNiBQZXJtLkxpbmsgKCtQb0UpJywgbGFiZWw6ICdUSUEgQ2F0IDYgUGVybS5MaW5rICgrUG9FKScgfSxcbiAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiAnVElBIENhdCA2IENoYW5uZWwnLCBsYWJlbDogJ1RJQSBDYXQgNiBDaGFubmVsJyB9LFxuICAgICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6ICdUSUEgQ2F0IDYgQ2hhbm5lbCAoK0FMTCknLCBsYWJlbDogJ1RJQSBDYXQgNiBDaGFubmVsICgrQUxMKScgfSxcbiAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiAnVElBIENhdCA2IENoYW5uZWwgKCtQb0UpJywgbGFiZWw6ICdUSUEgQ2F0IDYgQ2hhbm5lbCAoK1BvRSknIH0sXG4gICAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogJ1RJQSBDYXQgNiBNUFRMJywgbGFiZWw6ICdUSUEgQ2F0IDYgTVBUTCcgfSxcbiAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiAnVElBIENhdCA2IE1QVEwgKCtQb0UpJywgbGFiZWw6ICdUSUEgQ2F0IDYgTVBUTCAoK1BvRSknIH0sXG4gICAgICAgICAgICAgICAgICAgICAgLy8geyB2YWx1ZTogJ1RJQSAxMDA1IENhdCA2IFBlcm0uTGluaycsIGxhYmVsOiAnVElBIDEwMDUgQ2F0IDYgUGVybS5MaW5rJyB9LFxuICAgICAgICAgICAgICAgICAgICAgIC8vIHsgdmFsdWU6ICdUSUEgMTAwNSBDYXQgNiBDaGFubmVsJywgbGFiZWw6ICdUSUEgMTAwNSBDYXQgNiBDaGFubmVsJyB9LFxuICAgICAgICAgICAgICAgICAgICAgIC8vIHsgdmFsdWU6ICdUSUEgMTAwNSBDYXQgNiBDaGFubmVsICgrQUxMKScsIGxhYmVsOiAnVElBIDEwMDUgQ2F0IDYgQ2hhbm5lbCAoK0FMTCknIH0sXG4gICAgICAgICAgICAgICAgICAgICAgLy8geyB2YWx1ZTogJ1RJQSAxMDA1IENhdCA2IENoYW5uZWwgKCtQb0UpJywgbGFiZWw6ICdUSUEgMTAwNSBDYXQgNiBDaGFubmVsICgrUG9FKScgfSxcbiAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiAnVElBIDEwMDUgQ2F0IDYgQ2hhbm5lbCBFMSAoK0FMTCknLCBsYWJlbDogJ1RJQSAxMDA1IENhdCA2IENoYW5uZWwgRTEgKCtBTEwpJyB9LFxuICAgICAgICAgICAgICAgICAgICAgIC8vIHsgdmFsdWU6ICdUSUEgMTAwNSBDYXQgNiBDaGFubmVsIEUxICgrUG9FKScsIGxhYmVsOiAnVElBIDEwMDUgQ2F0IDYgQ2hhbm5lbCBFMSAoK1BvRSknIH0sXG4gICAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogJ1RJQSAxMDA1IENhdCA2IENoYW5uZWwgRTIgKCtBTEwpJywgbGFiZWw6ICdUSUEgMTAwNSBDYXQgNiBDaGFubmVsIEUyICgrQUxMKScgfSxcbiAgICAgICAgICAgICAgICAgICAgICAvLyB7IHZhbHVlOiAnVElBIDEwMDUgQ2F0IDYgQ2hhbm5lbCBFMiAoK1BvRSknLCBsYWJlbDogJ1RJQSAxMDA1IENhdCA2IENoYW5uZWwgRTIgKCtQb0UpJyB9LFxuICAgICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6ICdUSUEgMTAwNSBDYXQgNiBDaGFubmVsIEUzICgrQUxMKScsIGxhYmVsOiAnVElBIDEwMDUgQ2F0IDYgQ2hhbm5lbCBFMyAoK0FMTCknIH0sXG4gICAgICAgICAgICAgICAgICAgICAgLy8geyB2YWx1ZTogJ1RJQSAxMDA1IENhdCA2IENoYW5uZWwgRTMgKCtQb0UpJywgbGFiZWw6ICdUSUEgMTAwNSBDYXQgNiBDaGFubmVsIEUzICgrUG9FKScgfVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgQ2F0NWU6IHtcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdDYXQ1ZScsXG4gICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuOiBbXG4gICAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogJ1RJQSBDYXQgNWUgUGVybS5MaW5rJywgbGFiZWw6ICdUSUEgQ2F0IDVlIFBlcm0uTGluaycgfSxcbiAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiAnVElBIENhdCA1ZSBQZXJtLkxpbmsgKCtBTEwpJywgbGFiZWw6ICdUSUEgQ2F0IDVlIFBlcm0uTGluayAoK0FMTCknIH0sXG4gICAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogJ1RJQSBDYXQgNWUgUGVybS5MaW5rICgrUG9FKScsIGxhYmVsOiAnVElBIENhdCA1ZSBQZXJtLkxpbmsgKCtQb0UpJyB9LFxuICAgICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6ICdUSUEgQ2F0IDVlIENoYW5uZWwnLCBsYWJlbDogJ1RJQSBDYXQgNWUgQ2hhbm5lbCcgfSxcbiAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiAnVElBIENhdCA1ZSBDaGFubmVsICgrQUxMKScsIGxhYmVsOiAnVElBIENhdCA1ZSBDaGFubmVsICgrQUxMKScgfSxcbiAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiAnVElBIENhdCA1ZSBDaGFubmVsICgrUG9FKScsIGxhYmVsOiAnVElBIENhdCA1ZSBDaGFubmVsICgrUG9FKScgfSxcbiAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiAnVElBIENhdCA1ZSBNUFRMJywgbGFiZWw6ICdUSUEgQ2F0IDVlIE1QVEwnIH0sXG4gICAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogJ1RJQSBDYXQgNWUgTVBUTCAoK1BvRSknLCBsYWJlbDogJ1RJQSBDYXQgNWUgTVBUTCAoK1BvRSknIH0sXG4gICAgICAgICAgICAgICAgICAgICAgLy8geyB2YWx1ZTogJ1RJQSAxMDA1IENhdCA1ZSBQZXJtLkxpbmsnLCBsYWJlbDogJ1RJQSAxMDA1IENhdCA1ZSBQZXJtLkxpbmsnIH0sXG4gICAgICAgICAgICAgICAgICAgICAgLy8geyB2YWx1ZTogJ1RJQSAxMDA1IENhdCA1ZSBDaGFubmVsJywgbGFiZWw6ICdUSUEgMTAwNSBDYXQgNWUgQ2hhbm5lbCcgfSxcbiAgICAgICAgICAgICAgICAgICAgICAvLyB7IHZhbHVlOiAnVElBIDEwMDUgQ2F0IDVlIENoYW5uZWwgKCtBTEwpJywgbGFiZWw6ICdUSUEgMTAwNSBDYXQgNWUgQ2hhbm5lbCAoK0FMTCknIH0sXG4gICAgICAgICAgICAgICAgICAgICAgLy8geyB2YWx1ZTogJ1RJQSAxMDA1IENhdCA1ZSBDaGFubmVsICgrUG9FKScsIGxhYmVsOiAnVElBIDEwMDUgQ2F0IDVlIENoYW5uZWwgKCtQb0UpJyB9LFxuICAgICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6ICdUSUEgMTAwNSBDYXQgNWUgQ2hhbm5lbCBFMSAoK0FMTCknLCBsYWJlbDogJ1RJQSAxMDA1IENhdCA1ZSBDaGFubmVsIEUxICgrQUxMKScgfSxcbiAgICAgICAgICAgICAgICAgICAgICAvLyB7IHZhbHVlOiAnVElBIDEwMDUgQ2F0IDVlIENoYW5uZWwgRTEgKCtQb0UpJywgbGFiZWw6ICdUSUEgMTAwNSBDYXQgNWUgQ2hhbm5lbCBFMSAoK1BvRSknIH0sXG4gICAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogJ1RJQSAxMDA1IENhdCA1ZSBDaGFubmVsIEUyICgrQUxMKScsIGxhYmVsOiAnVElBIDEwMDUgQ2F0IDVlIENoYW5uZWwgRTIgKCtBTEwpJyB9LFxuICAgICAgICAgICAgICAgICAgICAgIC8vIHsgdmFsdWU6ICdUSUEgMTAwNSBDYXQgNWUgQ2hhbm5lbCBFMiAoK1BvRSknLCBsYWJlbDogJ1RJQSAxMDA1IENhdCA1ZSBDaGFubmVsIEUyICgrUG9FKScgfSxcbiAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiAnVElBIDEwMDUgQ2F0IDVlIENoYW5uZWwgRTMgKCtBTEwpJywgbGFiZWw6ICdUSUEgMTAwNSBDYXQgNWUgQ2hhbm5lbCBFMyAoK0FMTCknIH0sXG4gICAgICAgICAgICAgICAgICAgICAgLy8geyB2YWx1ZTogJ1RJQSAxMDA1IENhdCA1ZSBDaGFubmVsIEUzICgrUG9FKScsIGxhYmVsOiAnVElBIDEwMDUgQ2F0IDVlIENoYW5uZWwgRTMgKCtQb0UpJyB9XG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB2YWx1ZTogJ0lTTycsXG4gICAgICAgICAgICAgICAgbGFiZWw6ICdJU08nLFxuICAgICAgICAgICAgICAgIGNoaWxkcmVuOiB7XG4gICAgICAgICAgICAgICAgICAvLyAnQ2xhc3Mg4oWhJzoge1xuICAgICAgICAgICAgICAgICAgLy8gICBsYWJlbDogJ0NsYXNzIOKFoScsXG4gICAgICAgICAgICAgICAgICAvLyAgIGNoaWxkcmVuOiBbXG4gICAgICAgICAgICAgICAgICAvLyAgICAgeyB2YWx1ZTogJ0lTTzExODAxIFBMIENsYXNzIOKFoScsIGxhYmVsOiAnSVNPMTE4MDEgUEwgQ2xhc3Mg4oWhJyB9LFxuICAgICAgICAgICAgICAgICAgLy8gICAgIHsgdmFsdWU6ICdJU08xMTgwMSBQTCBDbGFzcyDihaEgKCtBTEwpJywgbGFiZWw6ICdJU08xMTgwMSBQTCBDbGFzcyDihaEgKCtBTEwpJyB9LFxuICAgICAgICAgICAgICAgICAgLy8gICAgIHsgdmFsdWU6ICdJU08xMTgwMSBQTCBDbGFzcyDihaEgKCtQb0UpJywgbGFiZWw6ICdJU08xMTgwMSBQTCBDbGFzcyDihaEgKCtQb0UpJyB9LFxuICAgICAgICAgICAgICAgICAgLy8gICAgIHsgdmFsdWU6ICdJU08xMTgwMSBDaGFubmVsIENsYXNzIOKFoScsIGxhYmVsOiAnSVNPMTE4MDEgQ2hhbm5lbCBDbGFzcyDihaEnIH0sXG4gICAgICAgICAgICAgICAgICAvLyAgICAgeyB2YWx1ZTogJ0lTTzExODAxIENoYW5uZWwgQ2xhc3Mg4oWhICgrQUxMKScsIGxhYmVsOiAnSVNPMTE4MDEgQ2hhbm5lbCBDbGFzcyDihaEgKCtBTEwpJyB9LFxuICAgICAgICAgICAgICAgICAgLy8gICAgIHsgdmFsdWU6ICdJU08xMTgwMSBDaGFubmVsIENsYXNzIOKFoSAoK1BvRSknLCBsYWJlbDogJ0lTTzExODAxIENoYW5uZWwgQ2xhc3Mg4oWhICgrUG9FKScgfVxuICAgICAgICAgICAgICAgICAgLy8gICBdLFxuICAgICAgICAgICAgICAgICAgLy8gICBkaXNhYmxlZDogdHJ1ZSBcbiAgICAgICAgICAgICAgICAgIC8vIH0sXG4gICAgICAgICAgICAgICAgICAvLyAnQ2xhc3Mg4oWgJzoge1xuICAgICAgICAgICAgICAgICAgLy8gICBsYWJlbDogJ0NsYXNzIOKFoCcsXG4gICAgICAgICAgICAgICAgICAvLyAgIGNoaWxkcmVuOiBbXG4gICAgICAgICAgICAgICAgICAvLyAgICAgeyB2YWx1ZTogJ0lTTzExODAxIFBMIENsYXNzIOKFoCcsIGxhYmVsOiAnSVNPMTE4MDEgUEwgQ2xhc3Mg4oWgJyB9LFxuICAgICAgICAgICAgICAgICAgLy8gICAgIHsgdmFsdWU6ICdJU08xMTgwMSBQTCBDbGFzcyDihaAgKCtBTEwpJywgbGFiZWw6ICdJU08xMTgwMSBQTCBDbGFzcyDihaAgKCtBTEwpJyB9LFxuICAgICAgICAgICAgICAgICAgLy8gICAgIHsgdmFsdWU6ICdJU08xMTgwMSBQTCBDbGFzcyDihaAgKCtQb0UpJywgbGFiZWw6ICdJU08xMTgwMSBQTCBDbGFzcyDihaAgKCtQb0UpJyB9LFxuICAgICAgICAgICAgICAgICAgLy8gICAgIHsgdmFsdWU6ICdJU08xMTgwMSBDaGFubmVsIENsYXNzIOKFoCcsIGxhYmVsOiAnSVNPMTE4MDEgQ2hhbm5lbCBDbGFzcyDihaAnIH0sXG4gICAgICAgICAgICAgICAgICAvLyAgICAgeyB2YWx1ZTogJ0lTTzExODAxIENoYW5uZWwgQ2xhc3Mg4oWgICgrQUxMKScsIGxhYmVsOiAnSVNPMTE4MDEgQ2hhbm5lbCBDbGFzcyDihaAgKCtBTEwpJyB9LFxuICAgICAgICAgICAgICAgICAgLy8gICAgIHsgdmFsdWU6ICdJU08xMTgwMSBDaGFubmVsIENsYXNzIOKFoCAoK1BvRSknLCBsYWJlbDogJ0lTTzExODAxIENoYW5uZWwgQ2xhc3Mg4oWgICgrUG9FKScgfVxuICAgICAgICAgICAgICAgICAgLy8gICBdLFxuICAgICAgICAgICAgICAgICAgLy8gICBkaXNhYmxlZDogdHJ1ZSBcbiAgICAgICAgICAgICAgICAgIC8vIH0sXG4gICAgICAgICAgICAgICAgICAvLyAnQ2xhc3MgRmEnOiB7XG4gICAgICAgICAgICAgICAgICAvLyAgIGxhYmVsOiAnQ2xhc3MgRmEnLFxuICAgICAgICAgICAgICAgICAgLy8gICBjaGlsZHJlbjogW1xuICAgICAgICAgICAgICAgICAgLy8gICAgIHsgdmFsdWU6ICdJU08xMTgwMSBQTDIgQ2xhc3MgRmEnLCBsYWJlbDogJ0lTTzExODAxIFBMMiBDbGFzcyBGYScgfSxcbiAgICAgICAgICAgICAgICAgIC8vICAgICB7IHZhbHVlOiAnSVNPMTE4MDEgUEwyIENsYXNzIEZhICgrQUxMKScsIGxhYmVsOiAnSVNPMTE4MDEgUEwyIENsYXNzIEZhICgrQUxMKScgfSxcbiAgICAgICAgICAgICAgICAgIC8vICAgICB7IHZhbHVlOiAnSVNPMTE4MDEgUEwyIENsYXNzIEZhICgrUG9FKScsIGxhYmVsOiAnSVNPMTE4MDEgUEwyIENsYXNzIEZhICgrUG9FKScgfSxcbiAgICAgICAgICAgICAgICAgIC8vICAgICB7IHZhbHVlOiAnSVNPMTE4MDEgUEwzIENsYXNzIEZhJywgbGFiZWw6ICdJU08xMTgwMSBQTDMgQ2xhc3MgRmEnIH0sXG4gICAgICAgICAgICAgICAgICAvLyAgICAgeyB2YWx1ZTogJ0lTTzExODAxIFBMMyBDbGFzcyBGYSAoK0FMTCknLCBsYWJlbDogJ0lTTzExODAxIFBMMyBDbGFzcyBGYSAoK0FMTCknIH0sXG4gICAgICAgICAgICAgICAgICAvLyAgICAgeyB2YWx1ZTogJ0lTTzExODAxIFBMMyBDbGFzcyBGYSAoK1BvRSknLCBsYWJlbDogJ0lTTzExODAxIFBMMyBDbGFzcyBGYSAoK1BvRSknIH0sXG4gICAgICAgICAgICAgICAgICAvLyAgICAgeyB2YWx1ZTogJ0lTTzExODAxIENoYW5uZWwgQ2xhc3MgRmEnLCBsYWJlbDogJ0lTTzExODAxIENoYW5uZWwgQ2xhc3MgRmEnIH0sXG4gICAgICAgICAgICAgICAgICAvLyAgICAgeyB2YWx1ZTogJ0lTTzExODAxIENoYW5uZWwgQ2xhc3MgRmEgKCtBTEwpJywgbGFiZWw6ICdJU08xMTgwMSBDaGFubmVsIENsYXNzIEZhICgrQUxMKScgfSxcbiAgICAgICAgICAgICAgICAgIC8vICAgICB7IHZhbHVlOiAnSVNPMTE4MDEgQ2hhbm5lbCBDbGFzcyBGYSAoK1BvRSknLCBsYWJlbDogJ0lTTzExODAxIENoYW5uZWwgQ2xhc3MgRmEgKCtQb0UpJyB9XG4gICAgICAgICAgICAgICAgICAvLyAgIF0sXG4gICAgICAgICAgICAgICAgICAvLyAgIGRpc2FibGVkOiB0cnVlIFxuICAgICAgICAgICAgICAgICAgLy8gfSxcbiAgICAgICAgICAgICAgICAgIC8vICdDbGFzcyBGJzoge1xuICAgICAgICAgICAgICAgICAgLy8gICBsYWJlbDogJ0NsYXNzIEYnLFxuICAgICAgICAgICAgICAgICAgLy8gICBjaGlsZHJlbjogW1xuICAgICAgICAgICAgICAgICAgLy8gICAgIHsgdmFsdWU6ICdJU08xMTgwMSBQTCBDbGFzcyBGJywgbGFiZWw6ICdJU08xMTgwMSBQTCBDbGFzcyBGJyB9LFxuICAgICAgICAgICAgICAgICAgLy8gICAgIHsgdmFsdWU6ICdJU08xMTgwMSBQTCBDbGFzcyBGICgrQUxMKScsIGxhYmVsOiAnSVNPMTE4MDEgUEwgQ2xhc3MgRiAoK0FMTCknIH0sXG4gICAgICAgICAgICAgICAgICAvLyAgICAgeyB2YWx1ZTogJ0lTTzExODAxIFBMIENsYXNzIEYgKCtQb0UpJywgbGFiZWw6ICdJU08xMTgwMSBQTCBDbGFzcyBGICgrUG9FKScgfSxcbiAgICAgICAgICAgICAgICAgIC8vICAgICB7IHZhbHVlOiAnSVNPMTE4MDEgQ2hhbm5lbCBDbGFzcyBGJywgbGFiZWw6ICdJU08xMTgwMSBDaGFubmVsIENsYXNzIEYnIH0sXG4gICAgICAgICAgICAgICAgICAvLyAgICAgeyB2YWx1ZTogJ0lTTzExODAxIENoYW5uZWwgQ2xhc3MgRiAoK0FMTCknLCBsYWJlbDogJ0lTTzExODAxIENoYW5uZWwgQ2xhc3MgRiAoK0FMTCknIH0sXG4gICAgICAgICAgICAgICAgICAvLyAgICAgeyB2YWx1ZTogJ0lTTzExODAxIENoYW5uZWwgQ2xhc3MgRiAoK1BvRSknLCBsYWJlbDogJ0lTTzExODAxIENoYW5uZWwgQ2xhc3MgRiAoK1BvRSknIH1cbiAgICAgICAgICAgICAgICAgIC8vICAgXSxcbiAgICAgICAgICAgICAgICAgIC8vICAgZGlzYWJsZWQ6IHRydWUgXG4gICAgICAgICAgICAgICAgICAvLyB9LFxuICAgICAgICAgICAgICAgICAgJ0NsYXNzIEVhJzoge1xuICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ0NsYXNzIEVhJyxcbiAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW46IFtcbiAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiAnSVNPMTE4MDEgUEwyIENsYXNzIEVhJywgbGFiZWw6ICdJU08xMTgwMSBQTDIgQ2xhc3MgRWEnIH0sXG4gICAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogJ0lTTzExODAxIFBMMiBDbGFzcyBFYSAoK0FMTCknLCBsYWJlbDogJ0lTTzExODAxIFBMMiBDbGFzcyBFYSAoK0FMTCknIH0sXG4gICAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogJ0lTTzExODAxIFBMMiBDbGFzcyBFYSAoK1BvRSknLCBsYWJlbDogJ0lTTzExODAxIFBMMiBDbGFzcyBFYSAoK1BvRSknIH0sXG4gICAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogJ0lTTzExODAxIFBMMyBDbGFzcyBFYScsIGxhYmVsOiAnSVNPMTE4MDEgUEwzIENsYXNzIEVhJyB9LFxuICAgICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6ICdJU08xMTgwMSBQTDMgQ2xhc3MgRWEgKCtBTEwpJywgbGFiZWw6ICdJU08xMTgwMSBQTDMgQ2xhc3MgRWEgKCtBTEwpJyB9LFxuICAgICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6ICdJU08xMTgwMSBQTDMgQ2xhc3MgRWEgKCtQb0UpJywgbGFiZWw6ICdJU08xMTgwMSBQTDMgQ2xhc3MgRWEgKCtQb0UpJyB9LFxuICAgICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6ICdJU08xMTgwMSBDaGFubmVsIENsYXNzIEVhJywgbGFiZWw6ICdJU08xMTgwMSBDaGFubmVsIENsYXNzIEVhJyB9LFxuICAgICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6ICdJU08xMTgwMSBDaGFubmVsIENsYXNzIEVhICgrQUxMKScsIGxhYmVsOiAnSVNPMTE4MDEgQ2hhbm5lbCBDbGFzcyBFYSAoK0FMTCknIH0sXG4gICAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogJ0lTTzExODAxIENoYW5uZWwgQ2xhc3MgRWEgKCtQb0UpJywgbGFiZWw6ICdJU08xMTgwMSBDaGFubmVsIENsYXNzIEVhICgrUG9FKScgfSxcbiAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiAnSVNPIE1QVEwgQ2xhc3MgRWEnLCBsYWJlbDogJ0lTTyBNUFRMIENsYXNzIEVhJyB9LFxuICAgICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6ICdJU08gTVBUTCBDbGFzcyBFYSAoK1BvRSknLCBsYWJlbDogJ0lTTyBNUFRMIENsYXNzIEVhICgrUG9FKScgfVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgJ0NsYXNzIEUnOiB7XG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnQ2xhc3MgRScsXG4gICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuOiBbXG4gICAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogJ0lTTzExODAxIFBMIENsYXNzIEUnLCBsYWJlbDogJ0lTTzExODAxIFBMIENsYXNzIEUnIH0sXG4gICAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogJ0lTTzExODAxIFBMIENsYXNzIEUgKCtBTEwpJywgbGFiZWw6ICdJU08xMTgwMSBQTCBDbGFzcyBFICgrQUxMKScgfSxcbiAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiAnSVNPMTE4MDEgUEwgQ2xhc3MgRSAoK1BvRSknLCBsYWJlbDogJ0lTTzExODAxIFBMIENsYXNzIEUgKCtQb0UpJyB9LFxuICAgICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6ICdJU08xMTgwMSBDaGFubmVsIENsYXNzIEUnLCBsYWJlbDogJ0lTTzExODAxIENoYW5uZWwgQ2xhc3MgRScgfSxcbiAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiAnSVNPMTE4MDEgQ2hhbm5lbCBDbGFzcyBFICgrQUxMKScsIGxhYmVsOiAnSVNPMTE4MDEgQ2hhbm5lbCBDbGFzcyBFICgrQUxMKScgfSxcbiAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiAnSVNPMTE4MDEgQ2hhbm5lbCBDbGFzcyBFICgrUG9FKScsIGxhYmVsOiAnSVNPMTE4MDEgQ2hhbm5lbCBDbGFzcyBFICgrUG9FKScgfSxcbiAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiAnSVNPIE1QVEwgQ2xhc3MgRScsIGxhYmVsOiAnSVNPIE1QVEwgQ2xhc3MgRScgfSxcbiAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiAnSVNPIE1QVEwgQ2xhc3MgRSAoK1BvRSknLCBsYWJlbDogJ0lTTyBNUFRMIENsYXNzIEUgKCtQb0UpJyB9XG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAnQ2xhc3MgRCc6IHtcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdDbGFzcyBEJyxcbiAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW46IFtcbiAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiAnSVNPMTE4MDEgUEwgQ2xhc3MgRCcsIGxhYmVsOiAnSVNPMTE4MDEgUEwgQ2xhc3MgRCcgfSxcbiAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiAnSVNPMTE4MDEgUEwgQ2xhc3MgRCAoK0FMTCknLCBsYWJlbDogJ0lTTzExODAxIFBMIENsYXNzIEQgKCtBTEwpJyB9LFxuICAgICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6ICdJU08xMTgwMSBQTCBDbGFzcyBEICgrUG9FKScsIGxhYmVsOiAnSVNPMTE4MDEgUEwgQ2xhc3MgRCAoK1BvRSknIH0sXG4gICAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogJ0lTTzExODAxIENoYW5uZWwgQ2xhc3MgRCcsIGxhYmVsOiAnSVNPMTE4MDEgQ2hhbm5lbCBDbGFzcyBEJyB9LFxuICAgICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6ICdJU08xMTgwMSBDaGFubmVsIENsYXNzIEQgKCtBTEwpJywgbGFiZWw6ICdJU08xMTgwMSBDaGFubmVsIENsYXNzIEQgKCtBTEwpJyB9LFxuICAgICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6ICdJU08xMTgwMSBDaGFubmVsIENsYXNzIEQgKCtQb0UpJywgbGFiZWw6ICdJU08xMTgwMSBDaGFubmVsIENsYXNzIEQgKCtQb0UpJyB9LFxuICAgICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6ICdJU08gTVBUTCBDbGFzcyBEJywgbGFiZWw6ICdJU08gTVBUTCBDbGFzcyBEJyB9LFxuICAgICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6ICdJU08gTVBUTCBDbGFzcyBEICgrUG9FKScsIGxhYmVsOiAnSVNPIE1QVEwgQ2xhc3MgRCAoK1BvRSknIH1cbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHZhbHVlOiAn5Yy65Z+fJyxcbiAgICAgICAgICAgICAgICBsYWJlbDogJ+WMuuWfnycsXG4gICAgICAgICAgICAgICAgY2hpbGRyZW46IHtcbiAgICAgICAgICAgICAgICAgICfkuK3lm70nOiB7XG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiAn5Lit5Zu9JyxcbiAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW46IFtcbiAgICAgICAgICAgICAgICAgICAgICAvLyB7IHZhbHVlOiAnR0JUIDUwMzEyLTIwMTYgQ2F0IDdBIFBMIG5vIENQJywgbGFiZWw6ICdHQi9UIDUwMzEyLTIwMTYgQ2F0IDdBIFBMIG5vIENQJyB9LFxuICAgICAgICAgICAgICAgICAgICAgIC8vIHsgdmFsdWU6ICdHQlQgNTAzMTItMjAxNiBDYXQgN0EgUEwgbm8gQ1AgKCtBTEwpJywgbGFiZWw6ICdHQi9UIDUwMzEyLTIwMTYgQ2F0IDdBIFBMIG5vIENQICgrQUxMKScgfSxcbiAgICAgICAgICAgICAgICAgICAgICAvLyB7IHZhbHVlOiAnR0JUIDUwMzEyLTIwMTYgQ2F0IDdBIFBMIG5vIENQICgrUG9FKScsIGxhYmVsOiAnR0IvVCA1MDMxMi0yMDE2IENhdCA3QSBQTCBubyBDUCAoK1BvRSknIH0sXG4gICAgICAgICAgICAgICAgICAgICAgLy8geyB2YWx1ZTogJ0dCVCA1MDMxMi0yMDE2IENhdCA3QSBQTCB3aXRoIENQJywgbGFiZWw6ICdHQi9UIDUwMzEyLTIwMTYgQ2F0IDdBIFBMIHdpdGggQ1AnIH0sXG4gICAgICAgICAgICAgICAgICAgICAgLy8geyB2YWx1ZTogJ0dCVCA1MDMxMi0yMDE2IENhdCA3QSBQTCB3aXRoIENQICgrQUxMKScsIGxhYmVsOiAnR0IvVCA1MDMxMi0yMDE2IENhdCA3QSBQTCB3aXRoIENQICgrQUxMKScgfSxcbiAgICAgICAgICAgICAgICAgICAgICAvLyB7IHZhbHVlOiAnR0JUIDUwMzEyLTIwMTYgQ2F0IDdBIFBMIHdpdGggQ1AgKCtQb0UpJywgbGFiZWw6ICdHQi9UIDUwMzEyLTIwMTYgQ2F0IDdBIFBMIHdpdGggQ1AgKCtQb0UpJyB9LFxuICAgICAgICAgICAgICAgICAgICAgIC8vIHsgdmFsdWU6ICdHQlQgNTAzMTItMjAxNiBDYXQgN0EgQ2gnLCBsYWJlbDogJ0dCL1QgNTAzMTItMjAxNiBDYXQgN0EgQ2gnIH0sXG4gICAgICAgICAgICAgICAgICAgICAgLy8geyB2YWx1ZTogJ0dCVCA1MDMxMi0yMDE2IENhdCA3QSBDaCAoK0FMTCknLCBsYWJlbDogJ0dCL1QgNTAzMTItMjAxNiBDYXQgN0EgQ2ggKCtBTEwpJyB9LFxuICAgICAgICAgICAgICAgICAgICAgIC8vIHsgdmFsdWU6ICdHQlQgNTAzMTItMjAxNiBDYXQgN0EgQ2ggKCtQb0UpJywgbGFiZWw6ICdHQi9UIDUwMzEyLTIwMTYgQ2F0IDdBIENoICgrUG9FKScgfSxcbiAgICAgICAgICAgICAgICAgICAgICAvLyB7IHZhbHVlOiAnR0JUIDUwMzEyLTIwMTYgQ2F0IDcgUEwnLCBsYWJlbDogJ0dCL1QgNTAzMTItMjAxNiBDYXQgNyBQTCcgfSxcbiAgICAgICAgICAgICAgICAgICAgICAvLyB7IHZhbHVlOiAnR0JUIDUwMzEyLTIwMTYgQ2F0IDcgUEwgKCtBTEwpJywgbGFiZWw6ICdHQi9UIDUwMzEyLTIwMTYgQ2F0IDcgUEwgKCtBTEwpJyB9LFxuICAgICAgICAgICAgICAgICAgICAgIC8vIHsgdmFsdWU6ICdHQlQgNTAzMTItMjAxNiBDYXQgNyBQTCAoK1BvRSknLCBsYWJlbDogJ0dCL1QgNTAzMTItMjAxNiBDYXQgNyBQTCAoK1BvRSknIH0sXG4gICAgICAgICAgICAgICAgICAgICAgLy8geyB2YWx1ZTogJ0dCVCA1MDMxMi0yMDE2IENhdCA3IENoJywgbGFiZWw6ICdHQi9UIDUwMzEyLTIwMTYgQ2F0IDcgQ2gnIH0sXG4gICAgICAgICAgICAgICAgICAgICAgLy8geyB2YWx1ZTogJ0dCVCA1MDMxMi0yMDE2IENhdCA3IENoICgrQUxMKScsIGxhYmVsOiAnR0IvVCA1MDMxMi0yMDE2IENhdCA3IENoICgrQUxMKScgfSxcbiAgICAgICAgICAgICAgICAgICAgICAvLyB7IHZhbHVlOiAnR0JUIDUwMzEyLTIwMTYgQ2F0IDcgQ2ggKCtQb0UpJywgbGFiZWw6ICdHQi9UIDUwMzEyLTIwMTYgQ2F0IDcgQ2ggKCtQb0UpJyB9LFxuICAgICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6ICdHQlQgNTAzMTItMjAxNiBDYXQgNkEgUEwgbm8gQ1AnLCBsYWJlbDogJ0dCL1QgNTAzMTItMjAxNiBDYXQgNkEgUEwgbm8gQ1AnIH0sXG4gICAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogJ0dCVCA1MDMxMi0yMDE2IENhdCA2QSBQTCBubyBDUCAoK0FMTCknLCBsYWJlbDogJ0dCL1QgNTAzMTItMjAxNiBDYXQgNkEgUEwgbm8gQ1AgKCtBTEwpJyB9LFxuICAgICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6ICdHQlQgNTAzMTItMjAxNiBDYXQgNkEgUEwgbm8gQ1AgKCtQb0UpJywgbGFiZWw6ICdHQi9UIDUwMzEyLTIwMTYgQ2F0IDZBIFBMIG5vIENQICgrUG9FKScgfSxcbiAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiAnR0JUIDUwMzEyLTIwMTYgQ2F0IDZBIFBMIHdpdGggQ1AnLCBsYWJlbDogJ0dCL1QgNTAzMTItMjAxNiBDYXQgNkEgUEwgd2l0aCBDUCcgfSxcbiAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiAnR0JUIDUwMzEyLTIwMTYgQ2F0IDZBIFBMIHdpdGggQ1AgKCtBTEwpJywgbGFiZWw6ICdHQi9UIDUwMzEyLTIwMTYgQ2F0IDZBIFBMIHdpdGggQ1AgKCtBTEwpJyB9LFxuICAgICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6ICdHQlQgNTAzMTItMjAxNiBDYXQgNkEgUEwgd2l0aCBDUCAoK1BvRSknLCBsYWJlbDogJ0dCL1QgNTAzMTItMjAxNiBDYXQgNkEgUEwgd2l0aCBDUCAoK1BvRSknIH0sXG4gICAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogJ0dCVCA1MDMxMi0yMDE2IENhdCA2QSBDaCcsIGxhYmVsOiAnR0IvVCA1MDMxMi0yMDE2IENhdCA2QSBDaCcgfSxcbiAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiAnR0JUIDUwMzEyLTIwMTYgQ2F0IDZBIENoICgrQUxMKScsIGxhYmVsOiAnR0IvVCA1MDMxMi0yMDE2IENhdCA2QSBDaCAoK0FMTCknIH0sXG4gICAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogJ0dCVCA1MDMxMi0yMDE2IENhdCA2QSBDaCAoK1BvRSknLCBsYWJlbDogJ0dCL1QgNTAzMTItMjAxNiBDYXQgNkEgQ2ggKCtQb0UpJyB9LFxuICAgICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6ICdHQlQgNTAzMTItMjAxNiBDYXQgNiBQTCcsIGxhYmVsOiAnR0IvVCA1MDMxMi0yMDE2IENhdCA2IFBMJyB9LFxuICAgICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6ICdHQlQgNTAzMTItMjAxNiBDYXQgNiBQTCAoK0FMTCknLCBsYWJlbDogJ0dCL1QgNTAzMTItMjAxNiBDYXQgNiBQTCAoK0FMTCknIH0sXG4gICAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogJ0dCVCA1MDMxMi0yMDE2IENhdCA2IFBMICgrUG9FKScsIGxhYmVsOiAnR0IvVCA1MDMxMi0yMDE2IENhdCA2IFBMICgrUG9FKScgfSxcbiAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiAnR0JUIDUwMzEyLTIwMTYgQ2F0IDYgQ2gnLCBsYWJlbDogJ0dCL1QgNTAzMTItMjAxNiBDYXQgNiBDaCcgfSxcbiAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiAnR0JUIDUwMzEyLTIwMTYgQ2F0IDYgQ2ggKCtBTEwpJywgbGFiZWw6ICdHQi9UIDUwMzEyLTIwMTYgQ2F0IDYgQ2ggKCtBTEwpJyB9LFxuICAgICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6ICdHQlQgNTAzMTItMjAxNiBDYXQgNiBDaCAoK1BvRSknLCBsYWJlbDogJ0dCL1QgNTAzMTItMjAxNiBDYXQgNiBDaCAoK1BvRSknIH0sXG4gICAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogJ0dCVCA1MDMxMi0yMDE2IENhdCA1ZSBQTCcsIGxhYmVsOiAnR0IvVCA1MDMxMi0yMDE2IENhdCA1ZSBQTCcgfSxcbiAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiAnR0JUIDUwMzEyLTIwMTYgQ2F0IDVlIFBMICgrQUxMKScsIGxhYmVsOiAnR0IvVCA1MDMxMi0yMDE2IENhdCA1ZSBQTCAoK0FMTCknIH0sXG4gICAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogJ0dCVCA1MDMxMi0yMDE2IENhdCA1ZSBQTCAoK1BvRSknLCBsYWJlbDogJ0dCL1QgNTAzMTItMjAxNiBDYXQgNWUgUEwgKCtQb0UpJyB9LFxuICAgICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6ICdHQlQgNTAzMTItMjAxNiBDYXQgNWUgQ2gnLCBsYWJlbDogJ0dCL1QgNTAzMTItMjAxNiBDYXQgNWUgQ2gnIH0sXG4gICAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogJ0dCVCA1MDMxMi0yMDE2IENhdCA1ZSBDaCAoK0FMTCknLCBsYWJlbDogJ0dCL1QgNTAzMTItMjAxNiBDYXQgNWUgQ2ggKCtBTEwpJyB9LFxuICAgICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6ICdHQlQgNTAzMTItMjAxNiBDYXQgNWUgQ2ggKCtQb0UpJywgbGFiZWw6ICdHQi9UIDUwMzEyLTIwMTYgQ2F0IDVlIENoICgrUG9FKScgfVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdmFsdWU6ICfot7Pnur8nLFxuICAgICAgICAgICAgICAgIGxhYmVsOiAn6Lez57q/JyxcbiAgICAgICAgICAgICAgICBkaXNhYmxlZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICBjaGlsZHJlbjoge1xuICAgICAgICAgICAgICAgICAgJ0NhdDZBIFBhdGNoIENvcmRzJzoge1xuICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ0NhdDZBIFBhdGNoIENvcmRzJyxcbiAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuOiBbXVxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICdDYXQ2IFBhdGNoIENvcmRzJzoge1xuICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ0NhdDYgUGF0Y2ggQ29yZHMnLFxuICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW46IFtdXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgJ0NhdDVlIFBhdGNoIENvcmRzJzoge1xuICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ0NhdDVlIFBhdGNoIENvcmRzJyxcbiAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuOiBbXVxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICdNMTIgUGF0Y2ggQ29yZHMnOiB7XG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnTTEyIFBhdGNoIENvcmRzJyxcbiAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuOiBbXVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHZhbHVlOiAn5bqU55SoJyxcbiAgICAgICAgICAgICAgICBsYWJlbDogJ+W6lOeUqCcsXG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGNoaWxkcmVuOiBbXG4gICAgICAgICAgICAgICAgICB7IHZhbHVlOiAnUHJvZmluZXQnLCBsYWJlbDogJ1Byb2ZpbmV0JyB9LFxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICAgIH0sXG4gICAgICAgIFdJUkVfT1JERVI6IHtcbiAgICAgICAgICAgIHRpdGxlOiAn5o+S5bqn6YWN572uJyxcbiAgICAgICAgICAgIGl0ZW1zOiBbXG4gICAgICAgICAgICAgICAgeyB2YWx1ZTogJ1Q1NjhBJywgbGFiZWw6ICdUNTY4QScgLCBkaXNhYmxlZDogdHJ1ZX0sXG4gICAgICAgICAgICAgICAgeyB2YWx1ZTogJ1Q1NjhCJywgbGFiZWw6ICdUNTY4QicgfSxcbiAgICAgICAgICAgICAgICB7IHZhbHVlOiAnRXRoZXJuZXQgVHdvLVBhaXInLCBsYWJlbDogJ0V0aGVybmV0IFR3by1QYWlyJyB9LFxuICAgICAgICAgICAgICAgIHsgdmFsdWU6ICdNMTItRCBUd28tUGFpcicsIGxhYmVsOiAnTTEyLUQgVHdvLVBhaXInIH0sXG4gICAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgICAgIEZJQkVSX1RZUEU6IHtcbiAgICAgICAgICAgIHRpdGxlOiAn5YWJ57qk57G75Z6LJyxcbiAgICAgICAgICAgIHN1YlRpdGxlOiAn55S157yG57uEJyxcbiAgICAgICAgICAgIGl0ZW1zOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogJ+WumuWIticsXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiAn5a6a5Yi2JyxcbiAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuOiB7fVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogJ2dlbmVyYWwnLFxuICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ+mAmueUqCcsXG4gICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiAnT00xIE11bGl0bW9kZSA2Mi41JywgbGFiZWw6ICdPTTEgTXVsaXRtb2RlIDYyLjUnIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiAnT00yIE11bGl0bW9kZSA1MCcsIGxhYmVsOiAnT00yIE11bGl0bW9kZSA1MCcgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6ICdPTTMgTXVsaXRtb2RlIDUwJywgbGFiZWw6ICdPTTMgTXVsaXRtb2RlIDUwJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogJ09NNCBNdWxpdG1vZGUgNTAnLCBsYWJlbDogJ09NNCBNdWxpdG1vZGUgNTAnIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiAnT001IE11bGl0bW9kZSA1MCcsIGxhYmVsOiAnT001IE11bGl0bW9kZSA1MCcgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6ICdPUzEgU2luZ2xlbW9kZScsIGxhYmVsOiAnT1MxIFNpbmdsZW1vZGUnIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiAnT1MyIFNpbmdsZW1vZGUnLCBsYWJlbDogJ09TMiBTaW5nbGVtb2RlJyB9XG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICfliLbpgKDllYYnLFxuICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ+WItumAoOWVhicsXG4gICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbjoge31cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgICAgIENGUF9MSU1JVDoge1xuICAgICAgICAgICAgdGl0bGU6ICfmtYvor5XmnoHpmZDlgLwnLFxuICAgICAgICAgICAgc3ViVGl0bGU6ICfmnoHpmZDlgLznu4QnLFxuICAgICAgICAgICAgaXRlbXM6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHZhbHVlOiAnVElBJyxcbiAgICAgICAgICAgICAgICBsYWJlbDogJ1RJQScsXG4gICAgICAgICAgICAgICAgY2hpbGRyZW46IFtcbiAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogJ1RJQS01NjguMy1FIE11bHRpbW9kZSAoU1REKScsIGxhYmVsOiAnVElBLTU2OC4zLUUgTXVsdGltb2RlIChTVEQpJyB9LFxuICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiAnVElBLTU2OC4zLUUgTXVsdGltb2RlIChSRUYpJywgbGFiZWw6ICdUSUEtNTY4LjMtRSBNdWx0aW1vZGUgKFJFRiknIH0sXG4gICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6ICdUSUEtNTY4LjMtRSBTaW5nbGVtb2RlIElTUCAoU1REKScsIGxhYmVsOiAnVElBLTU2OC4zLUUgU2luZ2xlbW9kZSBJU1AgKFNURCknIH0sXG4gICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6ICdUSUEtNTY4LjMtRSBTaW5nbGVtb2RlIE9TUCAoU1REKScsIGxhYmVsOiAnVElBLTU2OC4zLUUgU2luZ2xlbW9kZSBPU1AgKFNURCknIH0sXG4gICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6ICdUSUEtNTY4LjMtRSBTaW5nbGVtb2RlIElTUCAoUkVGKScsIGxhYmVsOiAnVElBLTU2OC4zLUUgU2luZ2xlbW9kZSBJU1AgKFJFRiknIH0sXG4gICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6ICdUSUEtNTY4LjMtRSBTaW5nbGVtb2RlIE9TUCAoUkVGKScsIGxhYmVsOiAnVElBLTU2OC4zLUUgU2luZ2xlbW9kZSBPU1AgKFJFRiknIH1cbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB2YWx1ZTogJ0NoaW5hJyxcbiAgICAgICAgICAgICAgICBsYWJlbDogJ+S4reWbvScsXG4gICAgICAgICAgICAgICAgY2hpbGRyZW46IFtcbiAgICAgICAgICAgICAgICAgIHsgdmFsdWU6ICdHQi9UIDUwMzEyLTIwMTYgRmliZXIgTGluaycsIGxhYmVsOiAnR0IvVCA1MDMxMi0yMDE2IEZpYmVyIExpbmsnIH0sXG4gICAgICAgICAgICAgICAgICB7IHZhbHVlOiAnR0IvVCA1MDMxMi0yMDE2IE9GLTMwMCBDaCcsIGxhYmVsOiAnR0IvVCA1MDMxMi0yMDE2IE9GLTMwMCBDaCcgfSxcbiAgICAgICAgICAgICAgICAgIHsgdmFsdWU6ICdHQi9UIDUwMzEyLTIwMTYgT0YtNTAwIENoJywgbGFiZWw6ICdHQi9UIDUwMzEyLTIwMTYgT0YtNTAwIENoJyB9LFxuICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogJ0dCL1QgNTAzMTItMjAxNiBPRi0yMDAwIENoJywgbGFiZWw6ICdHQi9UIDUwMzEyLTIwMTYgT0YtMjAwMCBDaCcgfVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHZhbHVlOiAnSVNPJyxcbiAgICAgICAgICAgICAgICBsYWJlbDogJ0lTTycsXG4gICAgICAgICAgICAgICAgY2hpbGRyZW46IFtcbiAgICAgICAgICAgICAgICAgIHsgdmFsdWU6ICdJU08vSUVDIDExODAxLTIwMDIgRmlicmUgTGluaycsIGxhYmVsOiAnSVNPL0lFQyAxMTgwMS0yMDAyIEZpYnJlIExpbmsnIH0sXG4gICAgICAgICAgICAgICAgICB7IHZhbHVlOiAnSVNPL0lFQyAxMTgwMS0yMDAyIE9GLTMwMCBDSCcsIGxhYmVsOiAnSVNPL0lFQyAxMTgwMS0yMDAyIE9GLTMwMCBDSCcgfSxcbiAgICAgICAgICAgICAgICAgIHsgdmFsdWU6ICdJU08vSUVDIDExODAxLTIwMDIgT0YtNTAwIENIJywgbGFiZWw6ICdJU08vSUVDIDExODAxLTIwMDIgT0YtNTAwIENIJyB9LFxuICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogJ0lTTy9JRUMgMTE4MDEtMjAwMiBPRi0yMDAwIENIJywgbGFiZWw6ICdJU08vSUVDIDExODAxLTIwMDIgT0YtMjAwMCBDSCcgfSxcbiAgICAgICAgICAgICAgICAgIHsgdmFsdWU6ICdJU08vSUVDIDE0NzYzLTM6MjAyNCAoRHJhZnQpJywgbGFiZWw6ICdJU08vSUVDIDE0NzYzLTM6MjAyNCAoRHJhZnQpJyB9LFxuICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogJ0lTTy9JRUMgMTQ3NjMtMzoyMDE0JywgbGFiZWw6ICdJU08vSUVDIDE0NzYzLTM6MjAxNCcgfSxcbiAgICAgICAgICAgICAgICAgIHsgdmFsdWU6ICdJU08vSUVDIDE0NzYzLTMnLCBsYWJlbDogJ0lTTy9JRUMgMTQ3NjMtMycgfVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICB9LFxuICAgICAgICBPRlBfTElNSVQ6IHtcbiAgICAgICAgICAgIHRpdGxlOiAnT0ZQ5p6B6ZmQ5YC8JyxcbiAgICAgICAgICAgIGl0ZW1zOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB2YWx1ZTogJ1RJQScsXG4gICAgICAgICAgICAgICAgbGFiZWw6ICdUSUEnLFxuICAgICAgICAgICAgICAgIGNoaWxkcmVuOiBbXG4gICAgICAgICAgICAgICAgICB7IHZhbHVlOiAnQU5TSS9USUEtNTY4LjMtRScsIGxhYmVsOiAnQU5TSS9USUEtNTY4LjMtRScgfSxcbiAgICAgICAgICAgICAgICAgIHsgdmFsdWU6ICdBTlNJL1RJQS01NjguMy1FIFJMID0gMjAgZEInLCBsYWJlbDogJ0FOU0kvVElBLTU2OC4zLUUgUkwgPSAyMCBkQicgfSxcbiAgICAgICAgICAgICAgICAgIHsgdmFsdWU6ICdBTlNJL1RJQS01NjguMy1FIFJMID0gMzUgZEInLCBsYWJlbDogJ0FOU0kvVElBLTU2OC4zLUUgUkwgPSAzNSBkQicgfSxcbiAgICAgICAgICAgICAgICAgIHsgdmFsdWU6ICdBTlNJL1RJQS01NjguMy1FIFJMID0gNTUgZEInLCBsYWJlbDogJ0FOU0kvVElBLTU2OC4zLUUgUkwgPSA1NSBkQicgfVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHZhbHVlOiAnQ2hpbmEnLFxuICAgICAgICAgICAgICAgIGxhYmVsOiAn5Lit5Zu9JyxcbiAgICAgICAgICAgICAgICBjaGlsZHJlbjogW1xuICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogJ0dCL1QgNTAzMTItMjAxNiBGaWJlciBMaW5rJywgbGFiZWw6ICdHQi9UIDUwMzEyLTIwMTYgRmliZXIgTGluaycgfSxcbiAgICAgICAgICAgICAgICAgIHsgdmFsdWU6ICdHQi9UIDUwMzEyLTIwMTYgT0YtMzAwIENoJywgbGFiZWw6ICdHQi9UIDUwMzEyLTIwMTYgT0YtMzAwIENoJyB9LFxuICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogJ0dCL1QgNTAzMTItMjAxNiBPRi01MDAgQ2gnLCBsYWJlbDogJ0dCL1QgNTAzMTItMjAxNiBPRi01MDAgQ2gnIH0sXG4gICAgICAgICAgICAgICAgICB7IHZhbHVlOiAnR0IvVCA1MDMxMi0yMDE2IE9GLTIwMDAgQ2gnLCBsYWJlbDogJ0dCL1QgNTAzMTItMjAxNiBPRi0yMDAwIENoJyB9XG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdmFsdWU6ICdJU08nLFxuICAgICAgICAgICAgICAgIGxhYmVsOiAnSVNPJyxcbiAgICAgICAgICAgICAgICBjaGlsZHJlbjogW1xuICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogJ0lTTy9JRUMgMTE4MDEtMjAwMiBGaWJyZSBMaW5rJywgbGFiZWw6ICdJU08vSUVDIDExODAxLTIwMDIgRmlicmUgTGluaycgfSxcbiAgICAgICAgICAgICAgICAgIHsgdmFsdWU6ICdJU08vSUVDIDExODAxLTIwMDIgT0YtMzAwIENIJywgbGFiZWw6ICdJU08vSUVDIDExODAxLTIwMDIgT0YtMzAwIENIJyB9LFxuICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogJ0lTTy9JRUMgMTE4MDEtMjAwMiBPRi01MDAgQ0gnLCBsYWJlbDogJ0lTTy9JRUMgMTE4MDEtMjAwMiBPRi01MDAgQ0gnIH0sXG4gICAgICAgICAgICAgICAgICB7IHZhbHVlOiAnSVNPL0lFQyAxMTgwMS0yMDAyIE9GLTIwMDAgQ0gnLCBsYWJlbDogJ0lTTy9JRUMgMTE4MDEtMjAwMiBPRi0yMDAwIENIJyB9LFxuICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogJ0lTTy9JRUMgMTQ3NjMtMzoyMDI0IChEcmFmdCknLCBsYWJlbDogJ0lTTy9JRUMgMTQ3NjMtMzoyMDI0IChEcmFmdCknIH0sXG4gICAgICAgICAgICAgICAgICB7IHZhbHVlOiAnSVNPL0lFQyAxNDc2My0zOjIwMjQgUkwgPSAyMCAoRHJhZnQpJywgbGFiZWw6ICdJU08vSUVDIDE0NzYzLTM6MjAyNCBSTCA9IDIwIChEcmFmdCknIH0sXG4gICAgICAgICAgICAgICAgICB7IHZhbHVlOiAnSVNPL0lFQyAxNDc2My0zOjIwMjQgUkwgPSAzNSAoRHJhZnQpJywgbGFiZWw6ICdJU08vSUVDIDE0NzYzLTM6MjAyNCBSTCA9IDM1IChEcmFmdCknIH0sXG4gICAgICAgICAgICAgICAgICB7IHZhbHVlOiAnSVNPL0lFQyAxNDc2My0zOjIwMjQgUkwgPSA2MCAoRHJhZnQpJywgbGFiZWw6ICdJU08vSUVDIDE0NzYzLTM6MjAyNCBSTCA9IDYwIChEcmFmdCknIH0sXG4gICAgICAgICAgICAgICAgICB7IHZhbHVlOiAnSVNPL0lFQyAxNDc2My0zOjIwMTQnLCBsYWJlbDogJ0lTTy9JRUMgMTQ3NjMtMzoyMDE0JyB9LFxuICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogJ0lTTy9JRUMgMTQ3NjMtMycsIGxhYmVsOiAnSVNPL0lFQyAxNDc2My0zJyB9XG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgIH1cbiAgICB9O1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBNZW51TGlzdCgpIHtcbiAgICBjb25zdCB7IFxuICAgICAgICBuYXZpZ2F0aW9uLFxuICAgICAgICBnZXRDdXJyZW50UHJvamVjdCxcbiAgICAgICAgdXBkYXRlUHJvamVjdCxcbiAgICAgICAgbmF2aWdhdGVUbyxcbiAgICAgICAgZ29CYWNrXG4gICAgfSA9IHVzZURpc3BsYXlTdG9yZSgpO1xuXG5cblxuXG4gICAgY29uc3QgY3VycmVudFByb2plY3QgPSBnZXRDdXJyZW50UHJvamVjdCgpO1xuICAgIGNvbnN0IHsgbWVudVR5cGUsIHNlbGVjdGVkQ29uZmlnSWQgfSA9IG5hdmlnYXRpb24uY3VycmVudC5wYXJhbXM7XG4gICAgY29uc3QgW3NlbGVjdGVkUGF0aCwgc2V0U2VsZWN0ZWRQYXRoXSA9IHVzZVN0YXRlKFtdKTtcbiAgICBjb25zdCBbY3VycmVudE1lbnUsIHNldEN1cnJlbnRNZW51XSA9IHVzZVN0YXRlKG1lbnVEYXRhW21lbnVUeXBlXSk7XG5cbiAgIFxuXG4gICAgLy8g6I635Y+W5b2T5YmN6YCJ5Lit55qE6YWN572uXG4gICAgY29uc3QgY3VycmVudENvbmZpZyA9IGN1cnJlbnRQcm9qZWN0LnRlc3RDb25maWdzLmZpbmQoXG4gICAgICAgIGNvbmZpZyA9PiBjb25maWcuaWQgPT09IHNlbGVjdGVkQ29uZmlnSWRcbiAgICApO1xuXG5cblxuICAgIC8vIOWkhOeQhuiPnOWNlemAiemhuemAieaLqVxuICAgIGNvbnN0IGhhbmRsZU1lbnVTZWxlY3QgPSAoaXRlbSkgPT4ge1xuICAgICAgICBpZiAoaXRlbS5kaXNhYmxlZCkgcmV0dXJuO1xuXG4gICAgICAgIGlmIChpdGVtLmNoaWxkcmVuKSB7XG4gICAgICAgICAgICAvLyDlpoLmnpzmnInlrZDoj5zljZXvvIzmm7TmlrDot6/lvoTlkozlvZPliY3oj5zljZVcbiAgICAgICAgICAgIHNldFNlbGVjdGVkUGF0aChbLi4uc2VsZWN0ZWRQYXRoLCBpdGVtXSk7XG4gICAgICAgICAgICBzZXRDdXJyZW50TWVudShpdGVtLmNoaWxkcmVuKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIOWmguaenOaYr+acgOe7iOmAiemhue+8jOabtOaWsOmFjee9ruW5tui/lOWbnlxuICAgICAgICBsZXQgdXBkYXRlZENvbmZpZyA9IHsgLi4uY3VycmVudENvbmZpZyB9O1xuICAgICAgICBzd2l0Y2ggKG1lbnVUeXBlKSB7XG4gICAgICAgICAgICBjYXNlICdDQUJMRV9UWVBFJzpcbiAgICAgICAgICAgICAgICB1cGRhdGVkQ29uZmlnLnBhcmFtcy5jYWJsZVR5cGUgPSBpdGVtLnZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnTElNSVRfVkFMVUUnOlxuICAgICAgICAgICAgICAgIHVwZGF0ZWRDb25maWcucGFyYW1zLmxpbWl0VmFsdWUgPSBpdGVtLnZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnV0lSRV9PUkRFUic6XG4gICAgICAgICAgICAgICAgdXBkYXRlZENvbmZpZy5wYXJhbXMud2lyZU9yZGVyID0gaXRlbS52YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ0ZJQkVSX1RZUEUnOlxuICAgICAgICAgICAgICAgIHVwZGF0ZWRDb25maWcucGFyYW1zLmNhYmxlVHlwZSA9IGl0ZW0udmFsdWU7XG4gICAgICAgICAgICAgICAgaWYgKHVwZGF0ZWRDb25maWcubW9kdWxlVHlwZSA9PT0gJ2NmcCcpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZW0udmFsdWUuaW5jbHVkZXMoJ09NJykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZWRDb25maWcucGFyYW1zLmxpbWl0VmFsdWUgPSAnVElBLTU2OC4zLUUgTXVsdGltb2RlIChTVEQpJztcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZWRDb25maWcucGFyYW1zLmxpbWl0VmFsdWUgPSAnVElBLTU2OC4zLUUgU2luZ2xlbW9kZSBJU1AgKFNURCknO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnQ0ZQX0xJTUlUJzpcbiAgICAgICAgICAgICAgICB1cGRhdGVkQ29uZmlnLnBhcmFtcy5saW1pdFZhbHVlID0gaXRlbS52YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ09GUF9MSU1JVCc6XG4gICAgICAgICAgICAgICAgdXBkYXRlZENvbmZpZy5wYXJhbXMubGltaXRWYWx1ZSA9IGl0ZW0udmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdNT0RVTEUnOlxuICAgICAgICAgICAgICAgIC8vIOWmguaenOaooeWdl+exu+Wei+WPkeeUn+WPmOWMlu+8jOWujOWFqOabv+aNoumFjee9ruWvueixoVxuICAgICAgICAgICAgICAgIGlmIChjdXJyZW50Q29uZmlnLm1vZHVsZVR5cGUgIT09IGl0ZW0udmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChpdGVtLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICc4MDAwJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVkQ29uZmlnID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogY3VycmVudENvbmZpZy5pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxlVHlwZTogJzgwMDAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGVsYWJsZTogJ+mTnOe8hua1i+ivleS7qicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGltaXRWYWx1ZTogJ1RJQSBDYXQgNiBDaGFubmVsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhYmxlVHlwZTogJ0NhdDYgVS9VVFAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lyZU9yZGVyOiAnVDU2OEInXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnY2ZwJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVkQ29uZmlnID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogY3VycmVudENvbmZpZy5pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxlVHlwZTogJ2NmcCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZWxhYmxlOiAn5YWJ5o2f6ICX5rWL6K+V5LuqJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW1pdFZhbHVlOiAnVElBLTU2OC4zLUUgTXVsdGltb2RlIChTVEQpJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhYmxlVHlwZTogJ09NMyBNdWx0aW1vZGUgNTAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmSnVtcGVyOiAnMScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGxpY2VDb3VudDogJzAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ubmVjdG9yQ291bnQ6ICcyJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ29mcCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlZENvbmZpZyA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGN1cnJlbnRDb25maWcuaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZVR5cGU6ICdvZnAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGVsYWJsZTogJ09URFLmtYvor5Xku6onLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbWl0VmFsdWU6ICdHZW5lcmFsIEZpYmVyIFJMID0gMzUgZEInLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FibGVUeXBlOiAnT00zIE11bHRpbW9kZSA1MCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB1cGRhdGVkQ29uZmlnLm1vZHVsZVR5cGUgPSBpdGVtLnZhbHVlO1xuICAgICAgICAgICAgICAgICAgICB1cGRhdGVkQ29uZmlnLm1vZHVsZWxhYmxlID0gaXRlbS5sYWJlbDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICAvLyDmm7TmlrDpobnnm67mlbDmja5cbiAgICAgICAgY29uc3QgdXBkYXRlZENvbmZpZ3MgPSBjdXJyZW50UHJvamVjdC50ZXN0Q29uZmlncy5tYXAoY29uZmlnID0+IHtcbiAgICAgICAgICAgIGlmIChjb25maWcuaWQgPT09IHNlbGVjdGVkQ29uZmlnSWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdXBkYXRlZENvbmZpZztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBjb25maWc7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IHByb2plY3RJbmRleCA9IHVzZURpc3BsYXlTdG9yZS5nZXRTdGF0ZSgpLnNlbGVjdGVkSW5kZXhlcy5wcm9qZWN0SW5kZXg7XG4gICAgICAgIHVwZGF0ZVByb2plY3QocHJvamVjdEluZGV4LCB7IHRlc3RDb25maWdzOiB1cGRhdGVkQ29uZmlncyB9KTtcblxuICAgICAgICAvLyDov5Tlm57kuIrkuIDpobVcbiAgICAgICAgZ29CYWNrKCk7XG4gICAgfTtcblxuICAgIC8vIOWkhOeQhui/lOWbnuS4iuS4gOe6p1xuICAgIGNvbnN0IGhhbmRsZUJhY2sgPSAoKSA9PiB7XG4gICAgICAgIGlmIChzZWxlY3RlZFBhdGgubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgY29uc3QgbmV3UGF0aCA9IHNlbGVjdGVkUGF0aC5zbGljZSgwLCAtMSk7XG4gICAgICAgICAgICBzZXRTZWxlY3RlZFBhdGgobmV3UGF0aCk7XG4gICAgICAgICAgICBpZiAobmV3UGF0aC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICBzZXRDdXJyZW50TWVudShtZW51RGF0YVttZW51VHlwZV0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBsZXQgY3VycmVudCA9IG1lbnVEYXRhW21lbnVUeXBlXTtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgbmV3UGF0aCkge1xuICAgICAgICAgICAgICAgICAgICBjdXJyZW50ID0gY3VycmVudC5pdGVtcy5maW5kKGkgPT4gaS52YWx1ZSA9PT0gaXRlbS52YWx1ZSkuY2hpbGRyZW47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHNldEN1cnJlbnRNZW51KGN1cnJlbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZ29CYWNrKCk7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgLy8g5riy5p+T6I+c5Y2V6YCJ6aG5XG4gICAgY29uc3QgcmVuZGVyTWVudU9wdGlvbnMgPSAoKSA9PiB7XG4gICAgICAgIGlmICghY3VycmVudE1lbnUpIHJldHVybiBudWxsO1xuXG4gICAgICAgIC8vIOWmguaenOaYr+WtkOiPnOWNle+8jOebtOaOpea4suafk+WtkOiPnOWNlemhuVxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShjdXJyZW50TWVudSkpIHtcbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LWZ1bGwgaC1bNDkwcHhdXCI+XG4gICAgICAgICAgICAgICAgICAgIHtjdXJyZW50TWVudS5tYXAoKGl0ZW0pID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e2l0ZW0udmFsdWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgaC1bNjBweF0gdy1mdWxsIGJnLVsjRjhGNkY3XSBwLTQgc2hhZG93LWxnIGZsZXggaXRlbXMtY2VudGVyICR7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0uZGlzYWJsZWQgPyAnb3BhY2l0eS01MCBjdXJzb3Itbm90LWFsbG93ZWQnIDogJ2N1cnNvci1wb2ludGVyJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gJHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudENvbmZpZy5wYXJhbXMuY2FibGVUeXBlID09PSBpdGVtLnZhbHVlID8gJ2JnLWJsdWUtNTAwJyA6ICcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfWB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gaGFuZGxlTWVudVNlbGVjdChpdGVtKX1cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtYmxhY2sgdGV4dC1zbVwiPntpdGVtLmxhYmVsfTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIOWmguaenOaYr+WvueixoeW9ouW8j+eahOWtkOiPnOWNle+8iOWmgiBMSU1JVF9WQUxVRSDnmoTkuoznuqfoj5zljZXvvIlcbiAgICAgICAgaWYgKHR5cGVvZiBjdXJyZW50TWVudSA9PT0gJ29iamVjdCcgJiYgIWN1cnJlbnRNZW51Lml0ZW1zKSB7XG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy1mdWxsIGgtWzQ5MHB4XVwiPlxuICAgICAgICAgICAgICAgICAgICB7T2JqZWN0LmVudHJpZXMoY3VycmVudE1lbnUpLm1hcCgoW2tleSwgaXRlbV0pID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e2tleX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2BoLVs2MHB4XSB3LWZ1bGwgYmctWyNGOEY2RjddIHAtNCBzaGFkb3ctbGcgZmxleCBpdGVtcy1jZW50ZXIgY3Vyc29yLXBvaW50ZXIgJHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudENvbmZpZy5wYXJhbXMuY2FibGVUeXBlID09PSBpdGVtLnZhbHVlID8gJ2JnLWJsdWUtNTAwJyA6ICcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfWB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gaGFuZGxlTWVudVNlbGVjdChpdGVtKX1cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtYmxhY2sgdGV4dC1zbVwiPntpdGVtLmxhYmVsfTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIOWmguaenOaYr+S4u+iPnOWNle+8jOa4suafk+S4u+iPnOWNlemhuVxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LWZ1bGwgaC1bNDkwcHhdXCI+XG4gICAgICAgICAgICAgICAge2N1cnJlbnRNZW51Lml0ZW1zLm1hcCgoaXRlbSkgPT4gKFxuICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk9e2l0ZW0udmFsdWV9XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2BoLVs2MHB4XSB3LWZ1bGwgYmctWyNGOEY2RjddIHAtNCBzaGFkb3ctbGcgZmxleCBpdGVtcy1jZW50ZXIgJHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLmRpc2FibGVkID8gJ29wYWNpdHktNTAgY3Vyc29yLW5vdC1hbGxvd2VkJyA6ICdjdXJzb3ItcG9pbnRlcidcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gJHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50Q29uZmlnLnBhcmFtcy5jYWJsZVR5cGUgPT09IGl0ZW0udmFsdWUgPyAnYmctYmx1ZS01MDAnIDogJydcbiAgICAgICAgICAgICAgICAgICAgICAgIH1gfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gaGFuZGxlTWVudVNlbGVjdChpdGVtKX1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LWJsYWNrIHRleHQtc21cIj57aXRlbS5sYWJlbH08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKTtcbiAgICB9O1xuXG4gICAgLy8g6I635Y+W5b2T5YmN6I+c5Y2V5qCH6aKY77yI6L+U5ZueIG51bGwg6KGo56S65LiN5pi+56S677yJXG4gICAgY29uc3QgZ2V0Q3VycmVudFRpdGxlID0gKCkgPT4ge1xuICAgICAgICBpZiAoc2VsZWN0ZWRQYXRoLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICBjb25zdCBzdWJUaXRsZSA9IG1lbnVEYXRhW21lbnVUeXBlXT8uc3ViVGl0bGU7XG4gICAgICAgIHJldHVybiBzdWJUaXRsZSA/IHN1YlRpdGxlIDogbnVsbDsgLy8g5aaC5p6cIHN1YlRpdGxlIOS4uuepuuWImei/lOWbniBudWxsXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHNlbGVjdGVkUGF0aFtzZWxlY3RlZFBhdGgubGVuZ3RoIC0gMV0ubGFiZWw7XG4gICAgfTtcbiAgICBcbiAgICByZXR1cm4gKFxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctZnVsbCBoLWZ1bGwgZmxleCBmbGV4LWNvbCBvdmVyZmxvdy1oaWRkZW5cIj5cbiAgICAgICAgPFN0YXR1c0JhciAvPlxuICAgICAgICA8VGl0bGVCYXIgXG4gICAgICAgICAgICB0aXRsZT17bWVudURhdGFbbWVudVR5cGVdLnRpdGxlfVxuICAgICAgICAgICAgYmFja1RvPXtzZWxlY3RlZFBhdGgubGVuZ3RoID4gMCA/ICdtZW51bGlzdCcgOiBuYXZpZ2F0aW9uLnByZXZpb3VzPy5uYW1lfSBcbiAgICAgICAgICAgIHZpZXc9e3NlbGVjdGVkUGF0aC5sZW5ndGggPiAwID8gJ3NldHVwJyA6IG5hdmlnYXRpb24ucHJldmlvdXM/LnZpZXd9XG4gICAgICAgICAgICBvbkJhY2s9e2hhbmRsZUJhY2t9XG4gICAgICAgIC8+XG4gICAgICAgIHsvKiDlj6rmnInlvZMgZ2V0Q3VycmVudFRpdGxlKCkg6L+U5Zue5YC85LiN5Li6IG51bGwg5pe25omN5riy5p+TIFN1YlRpdGxlQmFyICovfVxuICAgICAgICB7Z2V0Q3VycmVudFRpdGxlKCkgIT09IG51bGwgJiYgKFxuICAgICAgICAgICAgPFN1YlRpdGxlQmFyIHRpdGxlPXtnZXRDdXJyZW50VGl0bGUoKX0gLz5cbiAgICAgICAgKX1cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4LTEgYmctWyNENURGRUJdXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImgtZnVsbCBvdmVyZmxvdy15LWF1dG8gWyY6Oi13ZWJraXQtc2Nyb2xsYmFyXTpoaWRkZW5cIj5cbiAgICAgICAgICAgIHtyZW5kZXJNZW51T3B0aW9ucygpfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICApO1xufSJdLCJuYW1lcyI6WyJSZWFjdCIsInVzZVN0YXRlIiwidXNlRWZmZWN0IiwiU3RhdHVzQmFyIiwiVGl0bGVCYXIiLCJTdWJUaXRsZUJhciIsInVzZURpc3BsYXlTdG9yZSIsIm1lbnVEYXRhIiwiTU9EVUxFIiwidGl0bGUiLCJpdGVtcyIsInZhbHVlIiwibGFiZWwiLCJDQUJMRV9UWVBFIiwic3ViVGl0bGUiLCJkaXNhYmxlZCIsImNoaWxkcmVuIiwiTElNSVRfVkFMVUUiLCJDYXQ2QSIsIkNhdDYiLCJDYXQ1ZSIsIldJUkVfT1JERVIiLCJGSUJFUl9UWVBFIiwiQ0ZQX0xJTUlUIiwiT0ZQX0xJTUlUIiwiTWVudUxpc3QiLCJuYXZpZ2F0aW9uIiwiZ2V0Q3VycmVudFByb2plY3QiLCJ1cGRhdGVQcm9qZWN0IiwibmF2aWdhdGVUbyIsImdvQmFjayIsImN1cnJlbnRQcm9qZWN0IiwibWVudVR5cGUiLCJzZWxlY3RlZENvbmZpZ0lkIiwiY3VycmVudCIsInBhcmFtcyIsInNlbGVjdGVkUGF0aCIsInNldFNlbGVjdGVkUGF0aCIsImN1cnJlbnRNZW51Iiwic2V0Q3VycmVudE1lbnUiLCJjdXJyZW50Q29uZmlnIiwidGVzdENvbmZpZ3MiLCJmaW5kIiwiY29uZmlnIiwiaWQiLCJoYW5kbGVNZW51U2VsZWN0IiwiaXRlbSIsInVwZGF0ZWRDb25maWciLCJjYWJsZVR5cGUiLCJsaW1pdFZhbHVlIiwid2lyZU9yZGVyIiwibW9kdWxlVHlwZSIsImluY2x1ZGVzIiwibW9kdWxlbGFibGUiLCJyZWZKdW1wZXIiLCJzcGxpY2VDb3VudCIsImNvbm5lY3RvckNvdW50IiwidXBkYXRlZENvbmZpZ3MiLCJtYXAiLCJwcm9qZWN0SW5kZXgiLCJnZXRTdGF0ZSIsInNlbGVjdGVkSW5kZXhlcyIsImhhbmRsZUJhY2siLCJsZW5ndGgiLCJuZXdQYXRoIiwic2xpY2UiLCJpIiwicmVuZGVyTWVudU9wdGlvbnMiLCJBcnJheSIsImlzQXJyYXkiLCJkaXYiLCJjbGFzc05hbWUiLCJvbkNsaWNrIiwiT2JqZWN0IiwiZW50cmllcyIsImtleSIsImdldEN1cnJlbnRUaXRsZSIsImJhY2tUbyIsInByZXZpb3VzIiwibmFtZSIsInZpZXciLCJvbkJhY2siXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(pages-dir-node)/./src/components/dsxpage/general/MenuList.js\n"); /***/ }), /***/ "(pages-dir-node)/./src/components/dsxpage/general/Operators.js": /*!*****************************************************!*\ !*** ./src/components/dsxpage/general/Operators.js ***! \*****************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; eval("__webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ Operators)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"react/jsx-dev-runtime\");\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 */ \"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _components_lib_StatusBar__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/components/lib//StatusBar */ \"(pages-dir-node)/./src/components/lib/StatusBar.js\");\n/* harmony import */ var _components_lib_TitleBar__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/components/lib//TitleBar */ \"(pages-dir-node)/./src/components/lib/TitleBar.js\");\n/* harmony import */ var _components_lib_Keyboard__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/components/lib//Keyboard */ \"(pages-dir-node)/./src/components/lib/Keyboard.js\");\n/* harmony import */ var _store_displayStore__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/store/displayStore */ \"(pages-dir-node)/./src/store/displayStore.js\");\nvar __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_components_lib_StatusBar__WEBPACK_IMPORTED_MODULE_2__, _components_lib_TitleBar__WEBPACK_IMPORTED_MODULE_3__, _components_lib_Keyboard__WEBPACK_IMPORTED_MODULE_4__, _store_displayStore__WEBPACK_IMPORTED_MODULE_5__]);\n([_components_lib_StatusBar__WEBPACK_IMPORTED_MODULE_2__, _components_lib_TitleBar__WEBPACK_IMPORTED_MODULE_3__, _components_lib_Keyboard__WEBPACK_IMPORTED_MODULE_4__, _store_displayStore__WEBPACK_IMPORTED_MODULE_5__] = __webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__);\n\n\n\n\n\n\nfunction Operators() {\n const [inputValue, setInputValue] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)('');\n const [cursorPosition, setCursorPosition] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(0);\n const [selectedOperators, setSelectedOperators] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)([]);\n const { getCurrentProject, setSelectedIndexes, updateCurrentView, addOperator, updateProject, goBack, setToastMessage } = (0,_store_displayStore__WEBPACK_IMPORTED_MODULE_5__[\"default\"])();\n const currentProject = getCurrentProject();\n const { view } = _store_displayStore__WEBPACK_IMPORTED_MODULE_5__[\"default\"].getState().navigation.current;\n const handleDeleteOperators = ()=>{\n if (selectedOperators.length === currentProject.operators.length) {\n setToastMessage('至少需要保留一个操作员');\n return;\n }\n // 过滤掉被选中的操作员\n const newOperators = currentProject.operators.filter((operator)=>!selectedOperators.includes(operator.id));\n // 更新项目\n const currentIndex = _store_displayStore__WEBPACK_IMPORTED_MODULE_5__[\"default\"].getState().selectedIndexes.projectIndex;\n updateProject(currentIndex, {\n operators: newOperators\n });\n // 如果当前选中的操作员被删除了,重置选中的操作员索引为0\n if (selectedOperators.includes(currentProject.operators[_store_displayStore__WEBPACK_IMPORTED_MODULE_5__[\"default\"].getState().selectedIndexes.operatorIndex].id)) {\n setSelectedIndexes({\n operatorIndex: 0\n });\n }\n // 清空选中列表并返回main视图\n setSelectedOperators([]);\n updateCurrentView('main');\n };\n const renderContent = ()=>{\n switch(view){\n case 'main':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 bg-[#D5DFEB] p-0\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-y-0\",\n children: currentProject.operators.map((operator, index)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `h-[50px] p-4 shadow-lg flex items-center cursor-pointer ${index === _store_displayStore__WEBPACK_IMPORTED_MODULE_5__[\"default\"].getState().selectedIndexes.operatorIndex ? 'bg-blue-500' : 'bg-gradient-to-b from-[#e6e3e6] to-[#7b797b]'}`,\n onClick: ()=>{\n setSelectedIndexes({\n operatorIndex: index\n });\n goBack();\n },\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black text-sm\",\n children: operator.name\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Operators.js\",\n lineNumber: 64,\n columnNumber: 37\n }, this)\n }, operator.id, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Operators.js\",\n lineNumber: 56,\n columnNumber: 33\n }, this))\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Operators.js\",\n lineNumber: 54,\n columnNumber: 25\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Operators.js\",\n lineNumber: 53,\n columnNumber: 21\n }, this);\n case 'delete':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 bg-[#D5DFEB] p-0\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-y-0\",\n children: currentProject.operators.map((operator)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[50px] p-4 shadow-lg flex items-center justify-between bg-gradient-to-b from-[#e6e3e6] to-[#7b797b]\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black text-sm\",\n children: operator.name\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Operators.js\",\n lineNumber: 80,\n columnNumber: 37\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"checkbox\",\n className: \"w-4 h-4\",\n checked: selectedOperators.includes(operator.id),\n onChange: (e)=>{\n if (e.target.checked) {\n setSelectedOperators([\n ...selectedOperators,\n operator.id\n ]);\n } else {\n setSelectedOperators(selectedOperators.filter((id)=>id !== operator.id));\n }\n }\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Operators.js\",\n lineNumber: 81,\n columnNumber: 37\n }, this)\n ]\n }, operator.id, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Operators.js\",\n lineNumber: 76,\n columnNumber: 33\n }, this))\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Operators.js\",\n lineNumber: 74,\n columnNumber: 25\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Operators.js\",\n lineNumber: 73,\n columnNumber: 21\n }, this);\n case 'new':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 bg-[#D5DFEB] p-4 flex flex-col\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"relative\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"text\",\n className: \"w-full h-[50px] bg-[#ffffe1] rounded-sm p-4 text-black\",\n value: inputValue,\n placeholder: \"请输入操作员名称\",\n onChange: (e)=>{\n setInputValue(e.target.value);\n setCursorPosition(e.target.selectionStart);\n },\n onClick: (e)=>{\n setCursorPosition(e.target.selectionStart);\n },\n onFocus: (e)=>{\n // 保存光标位置\n const cursorPosition = e.target.selectionStart;\n e.target.setSelectionRange(cursorPosition, cursorPosition);\n }\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Operators.js\",\n lineNumber: 103,\n columnNumber: 29\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Operators.js\",\n lineNumber: 102,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_Keyboard__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n value: inputValue,\n cursorPosition: cursorPosition,\n onChange: (newValue, newPosition)=>{\n setInputValue(newValue);\n setCursorPosition(newPosition);\n },\n onComplete: ()=>{\n if (inputValue.trim()) {\n const newOperator = {\n id: Math.random().toString(36).substr(2, 9),\n name: inputValue.trim()\n };\n addOperator(newOperator);\n setInputValue('');\n updateCurrentView('main');\n }\n }\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Operators.js\",\n lineNumber: 122,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Operators.js\",\n lineNumber: 101,\n columnNumber: 21\n }, this);\n default:\n return null;\n }\n };\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full h-full flex flex-col overflow-hidden\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_StatusBar__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {}, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Operators.js\",\n lineNumber: 151,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_TitleBar__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n title: view === 'main' ? \"操作员\" : view === 'new' ? \"新操作员\" : \"删除操作员\",\n backTo: view === 'main' ? goBack : _store_displayStore__WEBPACK_IMPORTED_MODULE_5__[\"default\"].getState().navigation.previous?.name || 'home',\n view: _store_displayStore__WEBPACK_IMPORTED_MODULE_5__[\"default\"].getState().navigation.previous?.view || 'main'\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Operators.js\",\n lineNumber: 152,\n columnNumber: 13\n }, this),\n renderContent(),\n view === 'main' && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[60px] bg-[#132843] flex items-center justify-between px-8\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>updateCurrentView('delete'),\n className: \"w-[100px] h-[40px] rounded-sm flex items-center justify-center text-white font-bold shadow-lg\",\n children: \"编辑列表\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Operators.js\",\n lineNumber: 164,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>updateCurrentView('new'),\n className: \"w-[100px] h-[40px] rounded-sm flex items-center justify-center text-white font-bold shadow-lg\",\n children: \"新操作员\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Operators.js\",\n lineNumber: 170,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Operators.js\",\n lineNumber: 163,\n columnNumber: 17\n }, this),\n view === 'delete' && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[60px] bg-[#132843] flex items-center justify-end px-8\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: handleDeleteOperators,\n className: \"w-[100px] h-[40px] rounded-sm flex items-center justify-center text-white font-bold shadow-lg\",\n children: \"删除\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Operators.js\",\n lineNumber: 180,\n columnNumber: 21\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Operators.js\",\n lineNumber: 179,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Operators.js\",\n lineNumber: 150,\n columnNumber: 9\n }, this);\n}\n\n__webpack_async_result__();\n} catch(e) { __webpack_async_result__(e); } });//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHBhZ2VzLWRpci1ub2RlKS8uL3NyYy9jb21wb25lbnRzL2RzeHBhZ2UvZ2VuZXJhbC9PcGVyYXRvcnMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUF3QztBQUNZO0FBQ0Y7QUFDQTtBQUNDO0FBRXBDLFNBQVNNO0lBQ3BCLE1BQU0sQ0FBQ0MsWUFBWUMsY0FBYyxHQUFHUCwrQ0FBUUEsQ0FBQztJQUM3QyxNQUFNLENBQUNRLGdCQUFnQkMsa0JBQWtCLEdBQUdULCtDQUFRQSxDQUFDO0lBQ3JELE1BQU0sQ0FBQ1UsbUJBQW1CQyxxQkFBcUIsR0FBR1gsK0NBQVFBLENBQUMsRUFBRTtJQUM3RCxNQUFNLEVBQ0ZZLGlCQUFpQixFQUNqQkMsa0JBQWtCLEVBQ2xCQyxpQkFBaUIsRUFDakJDLFdBQVcsRUFDWEMsYUFBYSxFQUNiQyxNQUFNLEVBQ05DLGVBQWUsRUFDbEIsR0FBR2QsK0RBQWVBO0lBRW5CLE1BQU1lLGlCQUFpQlA7SUFDdkIsTUFBTSxFQUFFUSxJQUFJLEVBQUUsR0FBR2hCLG9FQUF3QixHQUFHa0IsVUFBVSxDQUFDQyxPQUFPO0lBRTlELE1BQU1DLHdCQUF3QjtRQUMxQixJQUFJZCxrQkFBa0JlLE1BQU0sS0FBS04sZUFBZU8sU0FBUyxDQUFDRCxNQUFNLEVBQUU7WUFDOURQLGdCQUFnQjtZQUNoQjtRQUNKO1FBRUEsYUFBYTtRQUNiLE1BQU1TLGVBQWVSLGVBQWVPLFNBQVMsQ0FBQ0UsTUFBTSxDQUNoREMsQ0FBQUEsV0FBWSxDQUFDbkIsa0JBQWtCb0IsUUFBUSxDQUFDRCxTQUFTRSxFQUFFO1FBR3ZELE9BQU87UUFDUCxNQUFNQyxlQUFlNUIsb0VBQXdCLEdBQUc2QixlQUFlLENBQUNDLFlBQVk7UUFDNUVsQixjQUFjZ0IsY0FBYztZQUFFTixXQUFXQztRQUFhO1FBRXRELDhCQUE4QjtRQUM5QixJQUFJakIsa0JBQWtCb0IsUUFBUSxDQUFDWCxlQUFlTyxTQUFTLENBQUN0QixvRUFBd0IsR0FBRzZCLGVBQWUsQ0FBQ0UsYUFBYSxD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QUNmO0lBQ0o7SUFFQSxxQkFDSSw4REFBQ3VCO1FBQUlDLFdBQVU7OzBCQUNYLDhEQUFDckMsaUVBQVNBOzs7OzswQkFDViw4REFBQ0MsZ0VBQVFBO2dCQUNMNkQsT0FDSTNDLFNBQVMsU0FBUyxRQUNsQkEsU0FBUyxRQUFRLFNBQ2pCO2dCQUVKNEMsUUFBUTVDLFNBQVMsU0FBU0gsU0FBU2Isb0VBQXdCLEdBQUdrQixVQUFVLENBQUMyQyxRQUFRLEVBQUV2QixRQUFRO2dCQUMzRnRCLE1BQU1oQixvRUFBd0IsR0FBR2tCLFVBQVUsQ0FBQzJDLFFBQVEsRUFBRTdDLFFBQVE7Ozs7OztZQUVqRWdCO1lBQ0FoQixTQUFTLHdCQUNOLDhEQUFDaUI7Z0JBQUlDLFdBQVU7O2tDQUNYLDhEQUFDNEI7d0JBQ0d6QixTQUFTLElBQU0zQixrQkFBa0I7d0JBQ2pDd0IsV0FBVTtrQ0FDYjs7Ozs7O2tDQUdELDhEQUFDNEI7d0JBQ0d6QixTQUFTLElBQU0zQixrQkFBa0I7d0JBQ2pDd0IsV0FBVTtrQ0FDYjs7Ozs7Ozs7Ozs7O1lBS1JsQixTQUFTLDBCQUNOLDhEQUFDaUI7Z0JBQUlDLFdBQVU7MEJBQ1gsNEVBQUM0QjtvQkFDR3pCLFNBQVNqQjtvQkFDVGMsV0FBVTs4QkFDYjs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFPckIiLCJzb3VyY2VzIjpbIi9vcHQvZGV2L2VzdC1kc3gvc3JjL2NvbXBvbmVudHMvZHN4cGFnZS9nZW5lcmFsL09wZXJhdG9ycy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XHJcbmltcG9ydCBTdGF0dXNCYXIgZnJvbSAnQC9jb21wb25lbnRzL2xpYi8vU3RhdHVzQmFyJztcclxuaW1wb3J0IFRpdGxlQmFyIGZyb20gJ0AvY29tcG9uZW50cy9saWIvL1RpdGxlQmFyJztcclxuaW1wb3J0IEtleWJvYXJkIGZyb20gJ0AvY29tcG9uZW50cy9saWIvL0tleWJvYXJkJztcclxuaW1wb3J0IHVzZURpc3BsYXlTdG9yZSBmcm9tICdAL3N0b3JlL2Rpc3BsYXlTdG9yZSc7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBPcGVyYXRvcnMoKSB7XHJcbiAgICBjb25zdCBbaW5wdXRWYWx1ZSwgc2V0SW5wdXRWYWx1ZV0gPSB1c2VTdGF0ZSgnJyk7XHJcbiAgICBjb25zdCBbY3Vyc29yUG9zaXRpb24sIHNldEN1cnNvclBvc2l0aW9uXSA9IHVzZVN0YXRlKDApO1xyXG4gICAgY29uc3QgW3NlbGVjdGVkT3BlcmF0b3JzLCBzZXRTZWxlY3RlZE9wZXJhdG9yc10gPSB1c2VTdGF0ZShbXSk7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgICAgZ2V0Q3VycmVudFByb2plY3QsXHJcbiAgICAgICAgc2V0U2VsZWN0ZWRJbmRleGVzLFxyXG4gICAgICAgIHVwZGF0ZUN1cnJlbnRWaWV3LFxyXG4gICAgICAgIGFkZE9wZXJhdG9yLFxyXG4gICAgICAgIHVwZGF0ZVByb2plY3QsXHJcbiAgICAgICAgZ29CYWNrLFxyXG4gICAgICAgIHNldFRvYXN0TWVzc2FnZVxyXG4gICAgfSA9IHVzZURpc3BsYXlTdG9yZSgpO1xyXG5cclxuICAgIGNvbnN0IGN1cnJlbnRQcm9qZWN0ID0gZ2V0Q3VycmVudFByb2plY3QoKTtcclxuICAgIGNvbnN0IHsgdmlldyB9ID0gdXNlRGlzcGxheVN0b3JlLmdldFN0YXRlKCkubmF2aWdhdGlvbi5jdXJyZW50O1xyXG5cclxuICAgIGNvbnN0IGhhbmRsZURlbGV0ZU9wZXJhdG9ycyA9ICgpID0+IHtcclxuICAgICAgICBpZiAoc2VsZWN0ZWRPcGVyYXRvcnMubGVuZ3RoID09PSBjdXJyZW50UHJvamVjdC5vcGVyYXRvcnMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIHNldFRvYXN0TWVzc2FnZSgn6Iez5bCR6ZyA6KaB5L+d55WZ5LiA5Liq5pON5L2c5ZGYJyk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICAgICAgLy8g6L+H5ruk5o6J6KKr6YCJ5Lit55qE5pON5L2c5ZGYXHJcbiAgICAgICAgY29uc3QgbmV3T3BlcmF0b3JzID0gY3VycmVudFByb2plY3Qub3BlcmF0b3JzLmZpbHRlcihcclxuICAgICAgICAgICAgb3BlcmF0b3IgPT4gIXNlbGVjdGVkT3BlcmF0b3JzLmluY2x1ZGVzKG9wZXJhdG9yLmlkKVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgXHJcbiAgICAgICAgLy8g5pu05paw6aG555uuXHJcbiAgICAgICAgY29uc3QgY3VycmVudEluZGV4ID0gdXNlRGlzcGxheVN0b3JlLmdldFN0YXRlKCkuc2VsZWN0ZWRJbmRleGVzLnByb2plY3RJbmRleDtcclxuICAgICAgICB1cGRhdGVQcm9qZWN0KGN1cnJlbnRJbmRleCwgeyBvcGVyYXRvcnM6IG5ld09wZXJhdG9ycyB9KTtcclxuICAgICAgICBcclxuICAgICAgICAvLyDlpoLmnpzlvZPliY3pgInkuK3nmoTmk43kvZzlkZjooqvliKDpmaTkuobvvIzph43nva7pgInkuK3nmoTmk43kvZzlkZjntKLlvJXkuLowXHJcbiAgICAgICAgaWYgKHNlbGVjdGVkT3BlcmF0b3JzLmluY2x1ZGVzKGN1cnJlbnRQcm9qZWN0Lm9wZXJhdG9yc1t1c2VEaXNwbGF5U3RvcmUuZ2V0U3RhdGUoKS5zZWxlY3RlZEluZGV4ZXMub3BlcmF0b3JJbmRleF0uaWQpKSB7XHJcbiAgICAgICAgICAgIHNldFNlbGVjdGVkSW5kZXhlcyh7IG9wZXJhdG9ySW5kZXg6IDAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIFxyXG4gICAgICAgIC8vIOa4heepuumAieS4reWIl+ihqOW5tui/lOWbnm1haW7op4blm75cclxuICAgICAgICBzZXRTZWxlY3RlZE9wZXJhdG9ycyhbXSk7XHJcbiAgICAgICAgdXBkYXRlQ3VycmVudFZpZXcoJ21haW4nKTtcclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgcmVuZGVyQ29udGVudCA9ICgpID0+IHtcclxuICAgICAgICBzd2l0Y2ggKHZpZXcpIHtcclxuICAgICAgICAgICAgY2FzZSAnbWFpbic6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleC0xIGJnLVsjRDVERkVCXSBwLTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJzcGFjZS15LTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtjdXJyZW50UHJvamVjdC5vcGVyYXRvcnMubWFwKChvcGVyYXRvciwgaW5kZXgpID0+IChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e29wZXJhdG9yLmlkfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2BoLVs1MHB4XSBwLTQgc2hhZG93LWxnIGZsZXggaXRlbXMtY2VudGVyIGN1cnNvci1wb2ludGVyICR7aW5kZXggPT09IHVzZURpc3BsYXlTdG9yZS5nZXRTdGF0ZSgpLnNlbGVjdGVkSW5kZXhlcy5vcGVyYXRvckluZGV4ID8gJ2JnLWJsdWUtNTAwJyA6ICdiZy1ncmFkaWVudC10by1iIGZyb20tWyNlNmUzZTZdIHRvLVsjN2I3OTdiXSd9YH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U2VsZWN0ZWRJbmRleGVzKHsgb3BlcmF0b3JJbmRleDogaW5kZXggfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb0JhY2soKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1ibGFjayB0ZXh0LXNtXCI+e29wZXJhdG9yLm5hbWV9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICApO1xyXG5cclxuICAgICAgICAgICAgY2FzZSAnZGVsZXRlJzpcclxuICAgICAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4LTEgYmctWyNENURGRUJdIHAtMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInNwYWNlLXktMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2N1cnJlbnRQcm9qZWN0Lm9wZXJhdG9ycy5tYXAoKG9wZXJhdG9yKSA9PiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtvcGVyYXRvci5pZH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiaC1bNTBweF0gcC00IHNoYWRvdy1sZyBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gYmctZ3JhZGllbnQtdG8tYiBmcm9tLVsjZTZlM2U2XSB0by1bIzdiNzk3Yl1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LWJsYWNrIHRleHQtc21cIj57b3BlcmF0b3IubmFtZX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidy00IGgtNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja2VkPXtzZWxlY3RlZE9wZXJhdG9ycy5pbmNsdWRlcyhvcGVyYXRvci5pZCl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZS50YXJnZXQuY2hlY2tlZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTZWxlY3RlZE9wZXJhdG9ycyhbLi4uc2VsZWN0ZWRPcGVyYXRvcnMsIG9wZXJhdG9yLmlkXSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U2VsZWN0ZWRPcGVyYXRvcnMoc2VsZWN0ZWRPcGVyYXRvcnMuZmlsdGVyKGlkID0+IGlkICE9PSBvcGVyYXRvci5pZCkpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICApO1xyXG5cclxuICAgICAgICAgICAgY2FzZSAnbmV3JzpcclxuICAgICAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4LTEgYmctWyNENURGRUJdIHAtNCBmbGV4IGZsZXgtY29sXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicmVsYXRpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidy1mdWxsIGgtWzUwcHhdIGJnLVsjZmZmZmUxXSByb3VuZGVkLXNtIHAtNCB0ZXh0LWJsYWNrXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17aW5wdXRWYWx1ZX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIuivt+i+k+WFpeaTjeS9nOWRmOWQjeensFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldElucHV0VmFsdWUoZS50YXJnZXQudmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRDdXJzb3JQb3NpdGlvbihlLnRhcmdldC5zZWxlY3Rpb25TdGFydCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRDdXJzb3JQb3NpdGlvbihlLnRhcmdldC5zZWxlY3Rpb25TdGFydCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkZvY3VzPXsoZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyDkv53lrZjlhYnmoIfkvY3nva5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY3Vyc29yUG9zaXRpb24gPSBlLnRhcmdldC5zZWxlY3Rpb25TdGFydDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS50YXJnZXQuc2V0U2VsZWN0aW9uUmFuZ2UoY3Vyc29yUG9zaXRpb24sIGN1cnNvclBvc2l0aW9uKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxLZXlib2FyZCBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXtpbnB1dFZhbHVlfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY3Vyc29yUG9zaXRpb249e2N1cnNvclBvc2l0aW9ufVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhuZXdWYWx1ZSwgbmV3UG9zaXRpb24pID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRJbnB1dFZhbHVlKG5ld1ZhbHVlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRDdXJzb3JQb3NpdGlvbihuZXdQb3NpdGlvbik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Db21wbGV0ZT17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dFZhbHVlLnRyaW0oKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXdPcGVyYXRvciA9IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zdWJzdHIoMiwgOSksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBpbnB1dFZhbHVlLnRyaW0oKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRPcGVyYXRvcihuZXdPcGVyYXRvcik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldElucHV0VmFsdWUoJycpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVDdXJyZW50VmlldygnbWFpbicpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICApO1xyXG5cclxuICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgcmV0dXJuIChcclxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctZnVsbCBoLWZ1bGwgZmxleCBmbGV4LWNvbCBvdmVyZmxvdy1oaWRkZW5cIj5cclxuICAgICAgICAgICAgPFN0YXR1c0JhciAvPlxyXG4gICAgICAgICAgICA8VGl0bGVCYXIgXHJcbiAgICAgICAgICAgICAgICB0aXRsZT17XHJcbiAgICAgICAgICAgICAgICAgICAgdmlldyA9PT0gJ21haW4nID8gXCLmk43kvZzlkZhcIiA6IFxyXG4gICAgICAgICAgICAgICAgICAgIHZpZXcgPT09ICduZXcnID8gXCLmlrDmk43kvZzlkZhcIiA6IFxyXG4gICAgICAgICAgICAgICAgICAgIFwi5Yig6Zmk5pON5L2c5ZGYXCJcclxuICAgICAgICAgICAgICAgIH0gXHJcbiAgICAgICAgICAgICAgICBiYWNrVG89e3ZpZXcgPT09ICdtYWluJyA/IGdvQmFjayA6IHVzZURpc3BsYXlTdG9yZS5nZXRTdGF0ZSgpLm5hdmlnYXRpb24ucHJldmlvdXM/Lm5hbWUgfHwgJ2hvbWUnfVxyXG4gICAgICAgICAgICAgICAgdmlldz17dXNlRGlzcGxheVN0b3JlLmdldFN0YXRlKCkubmF2aWdhdGlvbi5wcmV2aW91cz8udmlldyB8fCAnbWFpbid9IFxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICB7cmVuZGVyQ29udGVudCgpfVxyXG4gICAgICAgICAgICB7dmlldyA9PT0gJ21haW4nICYmIChcclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaC1bNjBweF0gYmctWyMxMzI4NDNdIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBweC04XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gdXBkYXRlQ3VycmVudFZpZXcoJ2RlbGV0ZScpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ3LVsxMDBweF0gaC1bNDBweF0gIHJvdW5kZWQtc20gZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgdGV4dC13aGl0ZSBmb250LWJvbGQgc2hhZG93LWxnXCJcclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIOe8lui+keWIl+ihqFxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHVwZGF0ZUN1cnJlbnRWaWV3KCduZXcnKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidy1bMTAwcHhdIGgtWzQwcHhdICByb3VuZGVkLXNtIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHRleHQtd2hpdGUgZm9udC1ib2xkIHNoYWRvdy1sZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICDmlrDmk43kvZzlkZhcclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICApfVxyXG4gICAgICAgICAgICB7dmlldyA9PT0gJ2RlbGV0ZScgJiYgKFxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJoLVs2MHB4XSBiZy1bIzEzMjg0M10gZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1lbmQgcHgtOFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2hhbmRsZURlbGV0ZU9wZXJhdG9yc31cclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidy1bMTAwcHhdIGgtWzQwcHhdICByb3VuZGVkLXNtIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHRleHQtd2hpdGUgZm9udC1ib2xkIHNoYWRvdy1sZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICDliKDpmaRcclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICApfVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgKTtcclxufSAiXSwibmFtZXMiOlsiUmVhY3QiLCJ1c2VTdGF0ZSIsIlN0YXR1c0JhciIsIlRpdGxlQmFyIiwiS2V5Ym9hcmQiLCJ1c2VEaXNwbGF5U3RvcmUiLCJPcGVyYXRvcnMiLCJpbnB1dFZhbHVlIiwic2V0SW5wdXRWYWx1ZSIsImN1cnNvclBvc2l0aW9uIiwic2V0Q3Vyc29yUG9zaXRpb24iLCJzZWxlY3RlZE9wZXJhdG9ycyIsInNldFNlbGVjdGVkT3BlcmF0b3JzIiwiZ2V0Q3VycmVudFByb2plY3QiLCJzZXRTZWxlY3RlZEluZGV4ZXMiLCJ1cGRhdGVDdXJyZW50VmlldyIsImFkZE9wZXJhdG9yIiwidXBkYXRlUHJvamVjdCIsImdvQmFjayIsInNldFRvYXN0TWVzc2FnZSIsImN1cnJlbnRQcm9qZWN0IiwidmlldyIsImdldFN0YXRlIiwibmF2aWdhdGlvbiIsImN1cnJlbnQiLCJoYW5kbGVEZWxldGVPcGVyYXRvcnMiLCJsZW5ndGgiLCJvcGVyYXRvcnMiLCJuZXdPcGVyYXRvcnMiLCJmaWx0ZXIiLCJvcGVyYXRvciIsImluY2x1ZGVzIiwiaWQiLCJjdXJyZW50SW5kZXgiLCJzZWxlY3RlZEluZGV4ZXMiLCJwcm9qZWN0SW5kZXgiLCJvcGVyYXRvckluZGV4IiwicmVuZGVyQ29udGVudCIsImRpdiIsImNsYXNzTmFtZSIsIm1hcCIsImluZGV4Iiwib25DbGljayIsIm5hbWUiLCJpbnB1dCIsInR5cGUiLCJjaGVja2VkIiwib25DaGFuZ2UiLCJlIiwidGFyZ2V0IiwidmFsdWUiLCJwbGFjZWhvbGRlciIsInNlbGVjdGlvblN0YXJ0Iiwib25Gb2N1cyIsInNldFNlbGVjdGlvblJhbmdlIiwibmV3VmFsdWUiLCJuZXdQb3NpdGlvbiIsIm9uQ29tcGxldGUiLCJ0cmltIiwibmV3T3BlcmF0b3IiLCJNYXRoIiwicmFuZG9tIiwidG9TdHJpbmciLCJzdWJzdHIiLCJ0aXRsZSIsImJhY2tUbyIsInByZXZpb3VzIiwiYnV0dG9uIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(pages-dir-node)/./src/components/dsxpage/general/Operators.js\n"); /***/ }), /***/ "(pages-dir-node)/./src/components/dsxpage/general/Project.js": /*!***************************************************!*\ !*** ./src/components/dsxpage/general/Project.js ***! \***************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; eval("__webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ Project)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"react/jsx-dev-runtime\");\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 */ \"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var next_image__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! next/image */ \"(pages-dir-node)/./node_modules/next/image.js\");\n/* harmony import */ var next_image__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(next_image__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _components_lib_StatusBar__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/components/lib//StatusBar */ \"(pages-dir-node)/./src/components/lib/StatusBar.js\");\n/* harmony import */ var _components_lib_TitleBar__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/components/lib//TitleBar */ \"(pages-dir-node)/./src/components/lib/TitleBar.js\");\n/* harmony import */ var _components_lib_SubTitleBar__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/components/lib//SubTitleBar */ \"(pages-dir-node)/./src/components/lib/SubTitleBar.js\");\n/* harmony import */ var _components_lib_Keyboard__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @/components/lib//Keyboard */ \"(pages-dir-node)/./src/components/lib/Keyboard.js\");\n/* harmony import */ var _store_displayStore__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @/store/displayStore */ \"(pages-dir-node)/./src/store/displayStore.js\");\n/* harmony import */ var _utils_asset__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @/utils/asset */ \"(pages-dir-node)/./src/utils/asset.js\");\nvar __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_components_lib_StatusBar__WEBPACK_IMPORTED_MODULE_3__, _components_lib_TitleBar__WEBPACK_IMPORTED_MODULE_4__, _components_lib_SubTitleBar__WEBPACK_IMPORTED_MODULE_5__, _components_lib_Keyboard__WEBPACK_IMPORTED_MODULE_6__, _store_displayStore__WEBPACK_IMPORTED_MODULE_7__, _utils_asset__WEBPACK_IMPORTED_MODULE_8__]);\n([_components_lib_StatusBar__WEBPACK_IMPORTED_MODULE_3__, _components_lib_TitleBar__WEBPACK_IMPORTED_MODULE_4__, _components_lib_SubTitleBar__WEBPACK_IMPORTED_MODULE_5__, _components_lib_Keyboard__WEBPACK_IMPORTED_MODULE_6__, _store_displayStore__WEBPACK_IMPORTED_MODULE_7__, _utils_asset__WEBPACK_IMPORTED_MODULE_8__] = __webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__);\n\n\n\n\n\n\n\n\n\nfunction Project() {\n const [inputValue, setInputValue] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)('');\n const [cursorPosition, setCursorPosition] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(0);\n const { getCurrentProject, navigation, navigateTo, updateCurrentView, goBack, deleteProject, setSelectedIndexes, updateProject, addProject, setToastMessage } = (0,_store_displayStore__WEBPACK_IMPORTED_MODULE_7__[\"default\"])();\n // 获取当前项目数据\n const currentProject = getCurrentProject();\n const passCount = currentProject?.testResults.filter((result)=>{\n const copperStatus = result.CopperResultStatus;\n const cfpStatus = result.CFPResultStatus;\n const ofpStatus = result.ofpResultStatus;\n if (copperStatus) {\n return copperStatus === 'pass';\n } else if (cfpStatus) {\n return cfpStatus === 'pass';\n } else if (ofpStatus) {\n return ofpStatus === 'pass';\n }\n return false;\n }).length;\n const failCount = currentProject?.testResults.filter((result)=>{\n const copperStatus = result.CopperResultStatus;\n const cfpStatus = result.CFPResultStatus;\n const ofpStatus = result.ofpResultStatus;\n if (copperStatus) {\n return copperStatus === 'fail';\n } else if (cfpStatus) {\n return cfpStatus === 'fail';\n } else if (ofpStatus) {\n return ofpStatus === 'fail';\n }\n return false;\n }).length;\n const renderContent = ()=>{\n const { view } = navigation.current;\n switch(view){\n case 'choose':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 bg-[#D5DFEB] p-4\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-y-2\",\n children: _store_displayStore__WEBPACK_IMPORTED_MODULE_7__[\"default\"].getState().projects.map((project, index)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[50px] bg-[#F8F6F7] rounded-sm p-4 shadow-lg flex justify-between items-center cursor-pointer\",\n onClick: ()=>{\n setSelectedIndexes({\n projectIndex: index\n });\n setSelectedIndexes({\n testConfigIndex: 0\n });\n updateCurrentView('main');\n },\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black text-sm\",\n children: project.name\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Project.js\",\n lineNumber: 77,\n columnNumber: 37\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-3 h-3 relative\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: (0,_utils_asset__WEBPACK_IMPORTED_MODULE_8__.getAssetUrl)('/arrow.png'),\n alt: \"箭头\",\n fill: true,\n className: \"object-contain\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Project.js\",\n lineNumber: 79,\n columnNumber: 41\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Project.js\",\n lineNumber: 78,\n columnNumber: 37\n }, this)\n ]\n }, project.id, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Project.js\",\n lineNumber: 68,\n columnNumber: 33\n }, this))\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Project.js\",\n lineNumber: 66,\n columnNumber: 25\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Project.js\",\n lineNumber: 65,\n columnNumber: 21\n }, this);\n case 'rxtx':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 bg-[#D5DFEB] p-4\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n className: \"w-full h-[200px] bg-[#F8F6F7] rounded-sm p-4 shadow-lg flex items-center justify-center\",\n onClick: ()=>updateCurrentView('rxtx2'),\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black text-lg\",\n children: \"选择存储设备\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Project.js\",\n lineNumber: 99,\n columnNumber: 29\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Project.js\",\n lineNumber: 95,\n columnNumber: 25\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Project.js\",\n lineNumber: 94,\n columnNumber: 21\n }, this);\n case 'rxtx2':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 bg-[#D5DFEB] p-4 space-y-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n className: \"w-full h-[100px] bg-[#F8F6F7] rounded-sm p-4 shadow-lg\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black text-lg\",\n children: \"导出\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Project.js\",\n lineNumber: 108,\n columnNumber: 29\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Project.js\",\n lineNumber: 107,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n className: \"w-full h-[100px] bg-[#F8F6F7] rounded-sm p-4 shadow-lg\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black text-lg\",\n children: \"导入\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Project.js\",\n lineNumber: 111,\n columnNumber: 29\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Project.js\",\n lineNumber: 110,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Project.js\",\n lineNumber: 106,\n columnNumber: 21\n }, this);\n case 'setup':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 bg-[#D5DFEB] p-4 space-y-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n className: \"w-full h-[100px] bg-[#F8F6F7] rounded-sm p-4 shadow-lg\",\n onClick: ()=>{\n if (currentProject?.id === 'default') {\n setToastMessage('默认项目不能重命名');\n return;\n }\n setInputValue(currentProject?.name || '');\n updateCurrentView('rename');\n },\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black text-lg\",\n children: \"重命名\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Project.js\",\n lineNumber: 130,\n columnNumber: 29\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Project.js\",\n lineNumber: 119,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n className: \"w-full h-[100px] bg-[#F8F6F7] rounded-sm p-4 shadow-lg\",\n onClick: ()=>{\n if (currentProject?.id === 'default') {\n setToastMessage('默认项目不能删除');\n return;\n }\n // 删除当前项目\n deleteProject(_store_displayStore__WEBPACK_IMPORTED_MODULE_7__[\"default\"].getState().selectedIndexes.projectIndex);\n // 切换到默认项目(索引0)\n setSelectedIndexes({\n projectIndex: 0\n });\n updateCurrentView('main');\n },\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black text-lg\",\n children: \"删除\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Project.js\",\n lineNumber: 146,\n columnNumber: 29\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Project.js\",\n lineNumber: 132,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Project.js\",\n lineNumber: 118,\n columnNumber: 21\n }, this);\n case 'rename':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 bg-[#D5DFEB] p-4 flex flex-col\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"relative\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"text\",\n className: \"w-full h-[50px] bg-[#ffffe1] rounded-sm p-4 text-black mb-4\",\n value: inputValue,\n onChange: (e)=>{\n setInputValue(e.target.value);\n setCursorPosition(e.target.selectionStart);\n },\n onClick: (e)=>{\n setCursorPosition(e.target.selectionStart);\n },\n onFocus: (e)=>{\n const cursorPosition = e.target.selectionStart;\n e.target.setSelectionRange(cursorPosition, cursorPosition);\n }\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Project.js\",\n lineNumber: 155,\n columnNumber: 29\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Project.js\",\n lineNumber: 154,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_Keyboard__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n value: inputValue,\n cursorPosition: cursorPosition,\n onChange: (newValue, newPosition)=>{\n setInputValue(newValue);\n setCursorPosition(newPosition);\n },\n onComplete: ()=>{\n if (currentProject?.id === 'default') {\n setToastMessage('默认项目不能重命名');\n setInputValue('');\n updateCurrentView('main');\n return;\n }\n if (inputValue.trim()) {\n const currentIndex = _store_displayStore__WEBPACK_IMPORTED_MODULE_7__[\"default\"].getState().selectedIndexes.projectIndex;\n updateProject(currentIndex, {\n name: inputValue.trim()\n });\n setInputValue('');\n updateCurrentView('main');\n }\n }\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Project.js\",\n lineNumber: 172,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Project.js\",\n lineNumber: 153,\n columnNumber: 21\n }, this);\n case 'new':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 bg-[#D5DFEB] p-4 flex flex-col\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"relative\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"text\",\n className: \"w-full h-[50px] bg-[#ffffe1] rounded-sm p-4 text-black mb-4\",\n value: inputValue,\n placeholder: \"请输入项目名称\",\n onChange: (e)=>{\n setInputValue(e.target.value);\n setCursorPosition(e.target.selectionStart);\n },\n onClick: (e)=>{\n setCursorPosition(e.target.selectionStart);\n },\n onFocus: (e)=>{\n const cursorPosition = e.target.selectionStart;\n e.target.setSelectionRange(cursorPosition, cursorPosition);\n }\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Project.js\",\n lineNumber: 201,\n columnNumber: 29\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Project.js\",\n lineNumber: 200,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_Keyboard__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n value: inputValue,\n cursorPosition: cursorPosition,\n onChange: (newValue, newPosition)=>{\n setInputValue(newValue);\n setCursorPosition(newPosition);\n },\n onComplete: ()=>{\n if (inputValue.trim()) {\n // 生成唯一ID的函数\n const generateId = ()=>Math.random().toString(36).substr(2, 9);\n // 创建新项目\n const newProject = {\n id: generateId(),\n name: inputValue.trim(),\n testResults: [],\n testConfigs: [\n {\n id: generateId(),\n moduleType: '8000',\n modulelable: '铜缆测试仪',\n params: {\n limitValue: 'TIA Cat 6 Channel',\n cableType: 'Cat6 U/UTP',\n wireOrder: 'T568B'\n }\n }\n ],\n cableIds: [\n {\n id: generateId(),\n name: '001'\n },\n {\n id: generateId(),\n name: '002'\n }\n ],\n operators: [\n {\n id: generateId(),\n name: 'Bob'\n }\n ]\n };\n // 添加新项目\n addProject(newProject);\n // 获取新项目的索引\n const newIndex = _store_displayStore__WEBPACK_IMPORTED_MODULE_7__[\"default\"].getState().projects.length - 1;\n // 更新选中索引,重置所有相关索引\n setSelectedIndexes({\n projectIndex: newIndex,\n testConfigIndex: 0,\n operatorIndex: 0,\n cableIdIndex: 0\n });\n // 清空输入并更新视图\n setInputValue('');\n updateCurrentView('main');\n }\n }\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Project.js\",\n lineNumber: 219,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Project.js\",\n lineNumber: 199,\n columnNumber: 21\n }, this);\n case 'main':\n default:\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 bg-[#D5DFEB] p-4 space-y-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[50px] bg-[#F8F6F7] rounded-sm p-4 shadow-lg flex justify-between items-center cursor-pointer\",\n onClick: ()=>navigateTo('operators', 'main'),\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black text-sm\",\n children: [\n \"操作员: \",\n currentProject?.operators[_store_displayStore__WEBPACK_IMPORTED_MODULE_7__[\"default\"].getState().selectedIndexes.operatorIndex]?.name\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Project.js\",\n lineNumber: 293,\n columnNumber: 29\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-3 h-3 relative\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: (0,_utils_asset__WEBPACK_IMPORTED_MODULE_8__.getAssetUrl)('/arrow.png'),\n alt: \"箭头\",\n fill: true,\n className: \"object-contain\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Project.js\",\n lineNumber: 295,\n columnNumber: 25\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Project.js\",\n lineNumber: 294,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Project.js\",\n lineNumber: 289,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-y-1\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm text-gray-400\",\n children: [\n \"结果 \",\n currentProject?.testResults[0]?.date,\n \" - \",\n currentProject?.testResults[currentProject.testResults.length - 1]?.date\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Project.js\",\n lineNumber: 306,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[50px] bg-[#F8F6F7] rounded-sm p-4 shadow-lg flex justify-between items-center cursor-pointer\",\n onClick: ()=>navigateTo('result', 'main'),\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-4\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-1\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-green-500\",\n children: passCount || 0\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Project.js\",\n lineNumber: 316,\n columnNumber: 37\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-3 h-3 relative\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: (0,_utils_asset__WEBPACK_IMPORTED_MODULE_8__.getAssetUrl)('/pass.png'),\n alt: \"通过\",\n sizes: \"auto\",\n fill: true,\n className: \"object-contain\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Project.js\",\n lineNumber: 318,\n columnNumber: 41\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Project.js\",\n lineNumber: 317,\n columnNumber: 37\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Project.js\",\n lineNumber: 315,\n columnNumber: 33\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-1\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-red-500\",\n children: failCount || 0\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Project.js\",\n lineNumber: 328,\n columnNumber: 37\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-3 h-3 relative\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: (0,_utils_asset__WEBPACK_IMPORTED_MODULE_8__.getAssetUrl)('/fail.png'),\n alt: \"失败\",\n sizes: \"auto\",\n fill: true,\n className: \"object-contain\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Project.js\",\n lineNumber: 330,\n columnNumber: 41\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Project.js\",\n lineNumber: 329,\n columnNumber: 37\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Project.js\",\n lineNumber: 327,\n columnNumber: 33\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Project.js\",\n lineNumber: 314,\n columnNumber: 25\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Project.js\",\n lineNumber: 313,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-3 h-3 relative\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: (0,_utils_asset__WEBPACK_IMPORTED_MODULE_8__.getAssetUrl)('/arrow.png'),\n alt: \"箭头\",\n fill: true,\n className: \"object-contain\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Project.js\",\n lineNumber: 342,\n columnNumber: 29\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Project.js\",\n lineNumber: 341,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Project.js\",\n lineNumber: 309,\n columnNumber: 29\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Project.js\",\n lineNumber: 305,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-y-1 flex-1 overflow-hidden\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex justify-between items-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-sm text-gray-400\",\n children: \"测试设置\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Project.js\",\n lineNumber: 355,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n className: \"bg-[#404040] text-white px-3 py-1 rounded-sm text-sm\",\n onClick: ()=>{\n // 生成唯一ID\n const generateId = ()=>Math.random().toString(36).substr(2, 9);\n // 创建新的测试配置\n const newConfig = {\n id: generateId(),\n name: '新测试配置',\n moduleType: '8000',\n modulelable: '铜缆测试仪',\n params: {\n limitValue: 'TIA Cat 6 Channel',\n cableType: 'Cat6 U/UTP',\n wireOrder: 'T568B',\n refJumper: '1',\n spliceCount: '0',\n connectorCount: '2'\n }\n };\n // 更新项目,添加新的测试配置\n const currentProjectIndex = _store_displayStore__WEBPACK_IMPORTED_MODULE_7__[\"default\"].getState().selectedIndexes.projectIndex;\n const updatedProject = {\n ...currentProject,\n testConfigs: [\n ...currentProject.testConfigs,\n newConfig\n ]\n };\n updateProject(currentProjectIndex, updatedProject);\n // 设置新配置为选中状态\n const newConfigIndex = updatedProject.testConfigs.length - 1;\n setSelectedIndexes({\n testConfigIndex: newConfigIndex\n });\n // 跳转到测试配置页面并进入编辑视图\n navigateTo('testConfig', 'setup');\n },\n children: \"新测试\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Project.js\",\n lineNumber: 356,\n columnNumber: 33\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Project.js\",\n lineNumber: 354,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[100px] overflow-y-auto space-y-2 pr-2\",\n children: currentProject?.testConfigs.map((config, index)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[100px] bg-[#F8F6F7] rounded-sm p-4 shadow-lg cursor-pointer\",\n onClick: ()=>navigateTo('testConfig', 'main'),\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex justify-between\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-y-0.2\",\n children: [\n config.moduleType === '8000' && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black text-sm\",\n children: config.params.limitValue\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Project.js\",\n lineNumber: 408,\n columnNumber: 57\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black text-sm\",\n children: config.params.cableType\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Project.js\",\n lineNumber: 409,\n columnNumber: 57\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black text-sm\",\n children: config.params.wireOrder\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Project.js\",\n lineNumber: 410,\n columnNumber: 57\n }, this)\n ]\n }, void 0, true),\n config.moduleType === 'cfp' && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black text-sm\",\n children: \"智能远端\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Project.js\",\n lineNumber: 415,\n columnNumber: 57\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black text-sm\",\n children: config.params.limitValue\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Project.js\",\n lineNumber: 416,\n columnNumber: 57\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black text-sm\",\n children: config.params.cableType\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Project.js\",\n lineNumber: 417,\n columnNumber: 57\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black text-sm\",\n children: [\n config.params.refJumper,\n \" 跳线参照\"\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Project.js\",\n lineNumber: 418,\n columnNumber: 57\n }, this)\n ]\n }, void 0, true),\n config.moduleType === 'ofp' && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black text-sm\",\n children: \"自动OTDR\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Project.js\",\n lineNumber: 423,\n columnNumber: 57\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black text-sm\",\n children: config.params.limitValue\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Project.js\",\n lineNumber: 424,\n columnNumber: 57\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black text-sm\",\n children: config.params.cableType\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Project.js\",\n lineNumber: 425,\n columnNumber: 57\n }, this)\n ]\n }, void 0, true)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Project.js\",\n lineNumber: 405,\n columnNumber: 45\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-col items-end justify-between\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-gray-500 text-sm\",\n children: config.modulelable\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Project.js\",\n lineNumber: 430,\n columnNumber: 49\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex gap-2\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n className: \"w-6 h-6 bg-[#404040] rounded-sm flex items-center justify-center\",\n onClick: (e)=>{\n e.stopPropagation(); // 阻止事件冒泡\n const currentProjectIndex = _store_displayStore__WEBPACK_IMPORTED_MODULE_7__[\"default\"].getState().selectedIndexes.projectIndex;\n const currentTestConfigIndex = _store_displayStore__WEBPACK_IMPORTED_MODULE_7__[\"default\"].getState().selectedIndexes.testConfigIndex;\n const selectedConfigId = currentProject.testConfigs[currentTestConfigIndex]?.id;\n // 禁止删除最后一项配置\n if (currentProject.testConfigs.length <= 1) {\n setToastMessage('不能删除最后一项配置');\n return;\n }\n // 更新项目,删除选中的测试配置\n const updatedProject = {\n ...currentProject,\n testConfigs: currentProject.testConfigs.filter((testConfig)=>testConfig.id !== config.id)\n };\n updateProject(currentProjectIndex, updatedProject);\n // 更新选中索引\n const newIndex = updatedProject.testConfigs.findIndex((testConfig)=>testConfig.id === selectedConfigId);\n // 如果删除的是当前选中的配置,或者找不到选中的配置ID,则设置索引为0\n setSelectedIndexes({\n testConfigIndex: newIndex === -1 ? 0 : newIndex\n });\n },\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-4 h-4 relative\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: (0,_utils_asset__WEBPACK_IMPORTED_MODULE_8__.getAssetUrl)('/delete.png'),\n alt: \"删除\",\n fill: true,\n className: \"object-contain\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Project.js\",\n lineNumber: 467,\n columnNumber: 45\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Project.js\",\n lineNumber: 466,\n columnNumber: 41\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Project.js\",\n lineNumber: 432,\n columnNumber: 54\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Project.js\",\n lineNumber: 431,\n columnNumber: 33\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Project.js\",\n lineNumber: 429,\n columnNumber: 29\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Project.js\",\n lineNumber: 404,\n columnNumber: 25\n }, this)\n }, config.id, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Project.js\",\n lineNumber: 399,\n columnNumber: 37\n }, this))\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Project.js\",\n lineNumber: 397,\n columnNumber: 29\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Project.js\",\n lineNumber: 353,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-y-1\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex justify-between items-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-sm text-gray-400\",\n children: \"电缆ID集\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Project.js\",\n lineNumber: 487,\n columnNumber: 25\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Project.js\",\n lineNumber: 486,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[50px] bg-[#F8F6F7] rounded-sm p-4 shadow-lg flex justify-between items-center cursor-pointer\",\n onClick: ()=>navigateTo('cableId', 'main'),\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black text-sm\",\n children: [\n \"下一个ID: \",\n currentProject?.cableIds?.[0]?.name || '001'\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Project.js\",\n lineNumber: 493,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-3 h-3 relative\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: (0,_utils_asset__WEBPACK_IMPORTED_MODULE_8__.getAssetUrl)('/arrow.png'),\n alt: \"箭头\",\n fill: true,\n className: \"object-contain\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Project.js\",\n lineNumber: 497,\n columnNumber: 37\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Project.js\",\n lineNumber: 496,\n columnNumber: 33\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Project.js\",\n lineNumber: 489,\n columnNumber: 29\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Project.js\",\n lineNumber: 485,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Project.js\",\n lineNumber: 287,\n columnNumber: 13\n }, this);\n }\n };\n const renderTitleBar = ()=>{\n const { view } = navigation.current;\n switch(view){\n case 'choose':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_TitleBar__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n title: \"更改项目\",\n backTo: null,\n view: \"main\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Project.js\",\n lineNumber: 518,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_SubTitleBar__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n title: \"选择您要的项目\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Project.js\",\n lineNumber: 519,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true);\n case 'rxtx':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_TitleBar__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n title: \"传输项目\",\n backTo: null,\n view: \"main\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Project.js\",\n lineNumber: 526,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_SubTitleBar__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n title: \"选择存储设备\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Project.js\",\n lineNumber: 527,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true);\n case 'rxtx2':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_TitleBar__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n title: \"传输项目\",\n backTo: null,\n view: \"rxtx\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Project.js\",\n lineNumber: 534,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_SubTitleBar__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n title: \"选择所需操作\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Project.js\",\n lineNumber: 535,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true);\n case 'setup':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_TitleBar__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n title: \"管理项目\",\n backTo: null,\n view: \"main\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Project.js\",\n lineNumber: 542,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_SubTitleBar__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n title: currentProject?.name || 'DEFAULT'\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Project.js\",\n lineNumber: 543,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true);\n case 'rename':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_TitleBar__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n title: \"重命名\",\n backTo: null,\n view: \"setup\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Project.js\",\n lineNumber: 550,\n columnNumber: 25\n }, this)\n }, void 0, false);\n case 'new':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_TitleBar__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n title: \"新项目\",\n backTo: null,\n view: \"choose\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Project.js\",\n lineNumber: 557,\n columnNumber: 25\n }, this)\n }, void 0, false);\n case 'main':\n default:\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_TitleBar__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n title: \"项目\",\n backTo: \"home\",\n view: \"main\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Project.js\",\n lineNumber: 565,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_SubTitleBar__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n title: currentProject?.name || 'DEFAULT'\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Project.js\",\n lineNumber: 566,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true);\n }\n };\n const renderFooter = ()=>{\n const { view } = navigation.current;\n switch(view){\n case 'choose':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[60px] bg-[#132843] flex items-center justify-between px-8\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>updateCurrentView('new'),\n className: \"w-[100px] h-[40px] rounded-sm flex items-center justify-center text-white font-bold shadow-lg\",\n children: \"新项目\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Project.js\",\n lineNumber: 579,\n columnNumber: 25\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Project.js\",\n lineNumber: 578,\n columnNumber: 21\n }, this);\n case 'rxtx':\n case 'rxtx2':\n case 'setup':\n case 'rename':\n case 'new':\n return null;\n case 'main':\n default:\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[60px] bg-[#132843] flex items-center justify-between px-8\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>updateCurrentView('choose'),\n className: \"w-[100px] h-[40px] rounded-sm flex items-center justify-center text-white font-bold shadow-lg\",\n children: \"更改项目\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Project.js\",\n lineNumber: 599,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>updateCurrentView('rxtx'),\n className: \"w-[100px] h-[40px] rounded-sm flex items-center justify-center text-white font-bold shadow-lg\",\n children: \"传输\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Project.js\",\n lineNumber: 605,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>updateCurrentView('setup'),\n className: \"w-[100px] h-[40px] rounded-sm flex items-center justify-center text-white font-bold shadow-lg\",\n children: \"管理\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Project.js\",\n lineNumber: 611,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Project.js\",\n lineNumber: 598,\n columnNumber: 13\n }, this);\n }\n };\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full h-full flex flex-col overflow-hidden\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_StatusBar__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {}, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Project.js\",\n lineNumber: 624,\n columnNumber: 13\n }, this),\n renderTitleBar(),\n renderContent(),\n renderFooter()\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Project.js\",\n lineNumber: 623,\n columnNumber: 9\n }, this);\n}\n\n__webpack_async_result__();\n} catch(e) { __webpack_async_result__(e); } });//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHBhZ2VzLWRpci1ub2RlKS8uL3NyYy9jb21wb25lbnRzL2RzeHBhZ2UvZ2VuZXJhbC9Qcm9qZWN0LmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQXdDO0FBQ1Q7QUFDcUI7QUFDRjtBQUNNO0FBQ047QUFDQztBQUNQO0FBRTdCLFNBQVNTO0lBQ3BCLE1BQU0sQ0FBQ0MsWUFBWUMsY0FBYyxHQUFHViwrQ0FBUUEsQ0FBQztJQUM3QyxNQUFNLENBQUNXLGdCQUFnQkMsa0JBQWtCLEdBQUdaLCtDQUFRQSxDQUFDO0lBQ3JELE1BQU0sRUFDRmEsaUJBQWlCLEVBQ2pCQyxVQUFVLEVBQ1ZDLFVBQVUsRUFDVkMsaUJBQWlCLEVBQ2pCQyxNQUFNLEVBQ05DLGFBQWEsRUFDYkMsa0JBQWtCLEVBQ2xCQyxhQUFhLEVBQ2JDLFVBQVUsRUFDVkMsZUFBZSxFQUNsQixHQUFHaEIsK0RBQWVBO0lBRW5CLFdBQVc7SUFDWCxNQUFNaUIsaUJBQWlCVjtJQUN2QixNQUFNVyxZQUFZRCxnQkFBZ0JFLFlBQVlDLE9BQU9DLENBQUFBO1FBQ2pELE1BQU1DLGVBQWVELE9BQU9FLGtCQUFrQjtRQUM5QyxNQUFNQyxZQUFZSCxPQUFPSSxlQUFlO1FBQ3hDLE1BQU1DLFlBQVlMLE9BQU9NLGVBQWU7UUFFeEMsSUFBSUwsY0FBYztZQUNkLE9BQU9BLGlCQUFpQjtRQUM1QixPQUFPLElBQUlFLFdBQVc7WUFDbEIsT0FBT0EsY0FBYztRQUN6QixPQUFPLElBQUlFLFdBQVc7WUFDbEIsT0FBT0EsY0FBYztRQUN6QjtRQUNBLE9BQU87SUFDWCxHQUFHRTtJQUVILE1BQU1DLFlBQVlaLGdCQUFnQkUsWUFBWUMsT0FBT0MsQ0FBQUE7UUFDakQsTUFBTUMsZUFBZUQsT0FBT0Usa0JBQWtCO1FBQzlDLE1BQU1DLFlBQVlILE9BQU9JLGVBQWU7UUFDeEMsTUFBTUMsWUFBWUwsT0FBT00sZUFBZTtRQUV4QyxJQUFJTCxjQUFjO1lBQ2QsT0FBT0EsaUJBQWlCO1FBQzVCLE9BQU8sSUFB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QUFTLElBQU05QixrQkFBa0I7NEJBQ2pDd0IsV0FBVTtzQ0FDckI7Ozs7OztzQ0FHRCw4REFBQ2M7NEJBQ1dSLFNBQVMsSUFBTTlCLGtCQUFrQjs0QkFDekN3QixXQUFVO3NDQUNiOzs7Ozs7c0NBR0QsOERBQUNjOzRCQUNXUixTQUFTLElBQU05QixrQkFBa0I7NEJBQ3pDd0IsV0FBVTtzQ0FDYjs7Ozs7Ozs7Ozs7O1FBS1Q7SUFDSjtJQUVBLHFCQUNJLDhEQUFDRDtRQUFJQyxXQUFVOzswQkFDWCw4REFBQ3RDLGlFQUFTQTs7Ozs7WUFDVHVHO1lBQ0FyRTtZQUNBd0U7Ozs7Ozs7QUFHYiIsInNvdXJjZXMiOlsiL29wdC9kZXYvZXN0LWRzeC9zcmMvY29tcG9uZW50cy9kc3hwYWdlL2dlbmVyYWwvUHJvamVjdC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgSW1hZ2UgZnJvbSAnbmV4dC9pbWFnZSc7XG5pbXBvcnQgU3RhdHVzQmFyIGZyb20gJ0AvY29tcG9uZW50cy9saWIvL1N0YXR1c0Jhcic7XG5pbXBvcnQgVGl0bGVCYXIgZnJvbSAnQC9jb21wb25lbnRzL2xpYi8vVGl0bGVCYXInO1xuaW1wb3J0IFN1YlRpdGxlQmFyIGZyb20gJ0AvY29tcG9uZW50cy9saWIvL1N1YlRpdGxlQmFyJztcbmltcG9ydCBLZXlib2FyZCBmcm9tICdAL2NvbXBvbmVudHMvbGliLy9LZXlib2FyZCc7XG5pbXBvcnQgdXNlRGlzcGxheVN0b3JlIGZyb20gJ0Avc3RvcmUvZGlzcGxheVN0b3JlJztcbmltcG9ydCB7IGdldEFzc2V0VXJsIH0gZnJvbSAnQC91dGlscy9hc3NldCc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFByb2plY3QoKSB7XG4gICAgY29uc3QgW2lucHV0VmFsdWUsIHNldElucHV0VmFsdWVdID0gdXNlU3RhdGUoJycpO1xuICAgIGNvbnN0IFtjdXJzb3JQb3NpdGlvbiwgc2V0Q3Vyc29yUG9zaXRpb25dID0gdXNlU3RhdGUoMCk7XG4gICAgY29uc3QgeyBcbiAgICAgICAgZ2V0Q3VycmVudFByb2plY3QsXG4gICAgICAgIG5hdmlnYXRpb24sXG4gICAgICAgIG5hdmlnYXRlVG8sXG4gICAgICAgIHVwZGF0ZUN1cnJlbnRWaWV3LFxuICAgICAgICBnb0JhY2ssXG4gICAgICAgIGRlbGV0ZVByb2plY3QsXG4gICAgICAgIHNldFNlbGVjdGVkSW5kZXhlcyxcbiAgICAgICAgdXBkYXRlUHJvamVjdCxcbiAgICAgICAgYWRkUHJvamVjdCxcbiAgICAgICAgc2V0VG9hc3RNZXNzYWdlXG4gICAgfSA9IHVzZURpc3BsYXlTdG9yZSgpO1xuXG4gICAgLy8g6I635Y+W5b2T5YmN6aG555uu5pWw5o2uXG4gICAgY29uc3QgY3VycmVudFByb2plY3QgPSBnZXRDdXJyZW50UHJvamVjdCgpO1xuICAgIGNvbnN0IHBhc3NDb3VudCA9IGN1cnJlbnRQcm9qZWN0Py50ZXN0UmVzdWx0cy5maWx0ZXIocmVzdWx0ID0+IHtcbiAgICAgICAgY29uc3QgY29wcGVyU3RhdHVzID0gcmVzdWx0LkNvcHBlclJlc3VsdFN0YXR1cztcbiAgICAgICAgY29uc3QgY2ZwU3RhdHVzID0gcmVzdWx0LkNGUFJlc3VsdFN0YXR1cztcbiAgICAgICAgY29uc3Qgb2ZwU3RhdHVzID0gcmVzdWx0Lm9mcFJlc3VsdFN0YXR1cztcbiAgICAgICAgXG4gICAgICAgIGlmIChjb3BwZXJTdGF0dXMpIHtcbiAgICAgICAgICAgIHJldHVybiBjb3BwZXJTdGF0dXMgPT09ICdwYXNzJztcbiAgICAgICAgfSBlbHNlIGlmIChjZnBTdGF0dXMpIHtcbiAgICAgICAgICAgIHJldHVybiBjZnBTdGF0dXMgPT09ICdwYXNzJztcbiAgICAgICAgfSBlbHNlIGlmIChvZnBTdGF0dXMpIHtcbiAgICAgICAgICAgIHJldHVybiBvZnBTdGF0dXMgPT09ICdwYXNzJztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSkubGVuZ3RoO1xuICAgIFxuICAgIGNvbnN0IGZhaWxDb3VudCA9IGN1cnJlbnRQcm9qZWN0Py50ZXN0UmVzdWx0cy5maWx0ZXIocmVzdWx0ID0+IHtcbiAgICAgICAgY29uc3QgY29wcGVyU3RhdHVzID0gcmVzdWx0LkNvcHBlclJlc3VsdFN0YXR1cztcbiAgICAgICAgY29uc3QgY2ZwU3RhdHVzID0gcmVzdWx0LkNGUFJlc3VsdFN0YXR1cztcbiAgICAgICAgY29uc3Qgb2ZwU3RhdHVzID0gcmVzdWx0Lm9mcFJlc3VsdFN0YXR1cztcbiAgICAgICAgXG4gICAgICAgIGlmIChjb3BwZXJTdGF0dXMpIHtcbiAgICAgICAgICAgIHJldHVybiBjb3BwZXJTdGF0dXMgPT09ICdmYWlsJztcbiAgICAgICAgfSBlbHNlIGlmIChjZnBTdGF0dXMpIHtcbiAgICAgICAgICAgIHJldHVybiBjZnBTdGF0dXMgPT09ICdmYWlsJztcbiAgICAgICAgfSBlbHNlIGlmIChvZnBTdGF0dXMpIHtcbiAgICAgICAgICAgIHJldHVybiBvZnBTdGF0dXMgPT09ICdmYWlsJztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSkubGVuZ3RoO1xuXG5cbiAgICBjb25zdCByZW5kZXJDb250ZW50ID0gKCkgPT4ge1xuICAgICAgICBjb25zdCB7IHZpZXcgfSA9IG5hdmlnYXRpb24uY3VycmVudDtcbiAgICAgICAgXG4gICAgICAgIHN3aXRjaCAodmlldykge1xuICAgICAgICAgICAgY2FzZSAnY2hvb3NlJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXgtMSBiZy1bI0Q1REZFQl0gcC00XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInNwYWNlLXktMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt1c2VEaXNwbGF5U3RvcmUuZ2V0U3RhdGUoKS5wcm9qZWN0cy5tYXAoKHByb2plY3QsIGluZGV4KSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e3Byb2plY3QuaWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJoLVs1MHB4XSBiZy1bI0Y4RjZGN10gcm91bmRlZC1zbSBwLTQgc2hhZG93LWxnIGZsZXgganVzdGlmeS1iZXR3ZWVuIGl0ZW1zLWNlbnRlciBjdXJzb3ItcG9pbnRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U2VsZWN0ZWRJbmRleGVzKHsgcHJvamVjdEluZGV4OiBpbmRleCB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTZWxlY3RlZEluZGV4ZXMoeyB0ZXN0Q29uZmlnSW5kZXg6IDAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlQ3VycmVudFZpZXcoJ21haW4nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1ibGFjayB0ZXh0LXNtXCI+e3Byb2plY3QubmFtZX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy0zIGgtMyByZWxhdGl2ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJbWFnZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9e2dldEFzc2V0VXJsKCcvYXJyb3cucG5nJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdD1cIueureWktFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwib2JqZWN0LWNvbnRhaW5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgY2FzZSAncnh0eCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4LTEgYmctWyNENURGRUJdIHAtNFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ3LWZ1bGwgaC1bMjAwcHhdIGJnLVsjRjhGNkY3XSByb3VuZGVkLXNtIHAtNCBzaGFkb3ctbGcgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHVwZGF0ZUN1cnJlbnRWaWV3KCdyeHR4MicpfVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1ibGFjayB0ZXh0LWxnXCI+6YCJ5oup5a2Y5YKo6K6+5aSHPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgY2FzZSAncnh0eDInOlxuICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleC0xIGJnLVsjRDVERkVCXSBwLTQgc3BhY2UteS00XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzTmFtZT1cInctZnVsbCBoLVsxMDBweF0gYmctWyNGOEY2RjddIHJvdW5kZWQtc20gcC00IHNoYWRvdy1sZ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1ibGFjayB0ZXh0LWxnXCI+5a+85Ye6PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3NOYW1lPVwidy1mdWxsIGgtWzEwMHB4XSBiZy1bI0Y4RjZGN10gcm91bmRlZC1zbSBwLTQgc2hhZG93LWxnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LWJsYWNrIHRleHQtbGdcIj7lr7zlhaU8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBjYXNlICdzZXR1cCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4LTEgYmctWyNENURGRUJdIHAtNCBzcGFjZS15LTRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidy1mdWxsIGgtWzEwMHB4XSBiZy1bI0Y4RjZGN10gcm91bmRlZC1zbSBwLTQgc2hhZG93LWxnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjdXJyZW50UHJvamVjdD8uaWQgPT09ICdkZWZhdWx0Jykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VG9hc3RNZXNzYWdlKCfpu5jorqTpobnnm67kuI3og73ph43lkb3lkI0nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRJbnB1dFZhbHVlKGN1cnJlbnRQcm9qZWN0Py5uYW1lIHx8ICcnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlQ3VycmVudFZpZXcoJ3JlbmFtZScpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LWJsYWNrIHRleHQtbGdcIj7ph43lkb3lkI08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ3LWZ1bGwgaC1bMTAwcHhdIGJnLVsjRjhGNkY3XSByb3VuZGVkLXNtIHAtNCBzaGFkb3ctbGdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRQcm9qZWN0Py5pZCA9PT0gJ2RlZmF1bHQnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUb2FzdE1lc3NhZ2UoJ+m7mOiupOmhueebruS4jeiDveWIoOmZpCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyDliKDpmaTlvZPliY3pobnnm65cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZVByb2plY3QodXNlRGlzcGxheVN0b3JlLmdldFN0YXRlKCkuc2VsZWN0ZWRJbmRleGVzLnByb2plY3RJbmRleCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyDliIfmjaLliLDpu5jorqTpobnnm67vvIjntKLlvJUw77yJXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTZWxlY3RlZEluZGV4ZXMoeyBwcm9qZWN0SW5kZXg6IDAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVDdXJyZW50VmlldygnbWFpbicpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LWJsYWNrIHRleHQtbGdcIj7liKDpmaQ8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBjYXNlICdyZW5hbWUnOlxuICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleC0xIGJnLVsjRDVERkVCXSBwLTQgZmxleCBmbGV4LWNvbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyZWxhdGl2ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ3LWZ1bGwgaC1bNTBweF0gYmctWyNmZmZmZTFdIHJvdW5kZWQtc20gcC00IHRleHQtYmxhY2sgbWItNFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXtpbnB1dFZhbHVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldElucHV0VmFsdWUoZS50YXJnZXQudmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0Q3Vyc29yUG9zaXRpb24oZS50YXJnZXQuc2VsZWN0aW9uU3RhcnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0Q3Vyc29yUG9zaXRpb24oZS50YXJnZXQuc2VsZWN0aW9uU3RhcnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkZvY3VzPXsoZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY3Vyc29yUG9zaXRpb24gPSBlLnRhcmdldC5zZWxlY3Rpb25TdGFydDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUudGFyZ2V0LnNldFNlbGVjdGlvblJhbmdlKGN1cnNvclBvc2l0aW9uLCBjdXJzb3JQb3NpdGlvbik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPEtleWJvYXJkIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXtpbnB1dFZhbHVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnNvclBvc2l0aW9uPXtjdXJzb3JQb3NpdGlvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KG5ld1ZhbHVlLCBuZXdQb3NpdGlvbikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRJbnB1dFZhbHVlKG5ld1ZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0Q3Vyc29yUG9zaXRpb24obmV3UG9zaXRpb24pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Db21wbGV0ZT17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY3VycmVudFByb2plY3Q/LmlkID09PSAnZGVmYXVsdCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRvYXN0TWVzc2FnZSgn6buY6K6k6aG555uu5LiN6IO96YeN5ZG95ZCNJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRJbnB1dFZhbHVlKCcnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZUN1cnJlbnRWaWV3KCdtYWluJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0VmFsdWUudHJpbSgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50SW5kZXggPSB1c2VEaXNwbGF5U3RvcmUuZ2V0U3RhdGUoKS5zZWxlY3RlZEluZGV4ZXMucHJvamVjdEluZGV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlUHJvamVjdChjdXJyZW50SW5kZXgsIHsgbmFtZTogaW5wdXRWYWx1ZS50cmltKCkgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRJbnB1dFZhbHVlKCcnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZUN1cnJlbnRWaWV3KCdtYWluJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgY2FzZSAnbmV3JzpcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXgtMSBiZy1bI0Q1REZFQl0gcC00IGZsZXggZmxleC1jb2xcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicmVsYXRpdmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidy1mdWxsIGgtWzUwcHhdIGJnLVsjZmZmZmUxXSByb3VuZGVkLXNtIHAtNCB0ZXh0LWJsYWNrIG1iLTRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17aW5wdXRWYWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCLor7fovpPlhaXpobnnm67lkI3np7BcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldElucHV0VmFsdWUoZS50YXJnZXQudmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0Q3Vyc29yUG9zaXRpb24oZS50YXJnZXQuc2VsZWN0aW9uU3RhcnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0Q3Vyc29yUG9zaXRpb24oZS50YXJnZXQuc2VsZWN0aW9uU3RhcnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkZvY3VzPXsoZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY3Vyc29yUG9zaXRpb24gPSBlLnRhcmdldC5zZWxlY3Rpb25TdGFydDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUudGFyZ2V0LnNldFNlbGVjdGlvblJhbmdlKGN1cnNvclBvc2l0aW9uLCBjdXJzb3JQb3NpdGlvbik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPEtleWJvYXJkIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXtpbnB1dFZhbHVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnNvclBvc2l0aW9uPXtjdXJzb3JQb3NpdGlvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KG5ld1ZhbHVlLCBuZXdQb3NpdGlvbikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRJbnB1dFZhbHVlKG5ld1ZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0Q3Vyc29yUG9zaXRpb24obmV3UG9zaXRpb24pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Db21wbGV0ZT17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5wdXRWYWx1ZS50cmltKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIOeUn+aIkOWUr+S4gElE55qE5Ye95pWwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnZW5lcmF0ZUlkID0gKCkgPT4gTWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc3Vic3RyKDIsIDkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyDliJvlu7rmlrDpobnnm65cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5ld1Byb2plY3QgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGdlbmVyYXRlSWQoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBpbnB1dFZhbHVlLnRyaW0oKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0UmVzdWx0czogW10sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdENvbmZpZ3M6IFt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBnZW5lcmF0ZUlkKCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZVR5cGU6ICc4MDAwJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxlbGFibGU6ICfpk5znvIbmtYvor5Xku6onLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbWl0VmFsdWU6ICdUSUEgQ2F0IDYgQ2hhbm5lbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWJsZVR5cGU6ICdDYXQ2IFUvVVRQJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpcmVPcmRlcjogJ1Q1NjhCJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfV0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FibGVJZHM6IFt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBnZW5lcmF0ZUlkKCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICcwMDEnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBnZW5lcmF0ZUlkKCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICcwMDInXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdG9yczogW3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGdlbmVyYXRlSWQoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ0JvYidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g5re75Yqg5paw6aG555uuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRQcm9qZWN0KG5ld1Byb2plY3QpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyDojrflj5bmlrDpobnnm67nmoTntKLlvJVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5ld0luZGV4ID0gdXNlRGlzcGxheVN0b3JlLmdldFN0YXRlKCkucHJvamVjdHMubGVuZ3RoIC0gMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g5pu05paw6YCJ5Lit57Si5byV77yM6YeN572u5omA5pyJ55u45YWz57Si5byVXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTZWxlY3RlZEluZGV4ZXMoeyBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0SW5kZXg6IG5ld0luZGV4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RDb25maWdJbmRleDogMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRvckluZGV4OiAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhYmxlSWRJbmRleDogMFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIOa4heepuui+k+WFpeW5tuabtOaWsOinhuWbvlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0SW5wdXRWYWx1ZSgnJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVDdXJyZW50VmlldygnbWFpbicpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIGNhc2UgJ21haW4nOlxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4LTEgYmctWyNENURGRUJdIHAtNCBzcGFjZS15LTRcIj5cbiAgICAgICAgICAgICAgICB7Lyog5pON5L2c5ZGY5L+h5oGvICovfVxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiaC1bNTBweF0gYmctWyNGOEY2RjddIHJvdW5kZWQtc20gcC00IHNoYWRvdy1sZyBmbGV4IGp1c3RpZnktYmV0d2VlbiBpdGVtcy1jZW50ZXIgY3Vyc29yLXBvaW50ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IG5hdmlnYXRlVG8oJ29wZXJhdG9ycycsICdtYWluJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LWJsYWNrIHRleHQtc21cIj7mk43kvZzlkZg6IHtjdXJyZW50UHJvamVjdD8ub3BlcmF0b3JzW3VzZURpc3BsYXlTdG9yZS5nZXRTdGF0ZSgpLnNlbGVjdGVkSW5kZXhlcy5vcGVyYXRvckluZGV4XT8ubmFtZX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LTMgaC0zIHJlbGF0aXZlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8SW1hZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9e2dldEFzc2V0VXJsKCcvYXJyb3cucG5nJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0PVwi566t5aS0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwib2JqZWN0LWNvbnRhaW5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICB7Lyog57uT5p6c57uf6K6hICovfVxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwic3BhY2UteS0xXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1zbSB0ZXh0LWdyYXktNDAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICDnu5Pmnpwge2N1cnJlbnRQcm9qZWN0Py50ZXN0UmVzdWx0c1swXT8uZGF0ZX0gLSB7Y3VycmVudFByb2plY3Q/LnRlc3RSZXN1bHRzW2N1cnJlbnRQcm9qZWN0LnRlc3RSZXN1bHRzLmxlbmd0aCAtIDFdPy5kYXRlfVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJoLVs1MHB4XSBiZy1bI0Y4RjZGN10gcm91bmRlZC1zbSBwLTQgc2hhZG93LWxnIGZsZXgganVzdGlmeS1iZXR3ZWVuIGl0ZW1zLWNlbnRlciBjdXJzb3ItcG9pbnRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IG5hdmlnYXRlVG8oJ3Jlc3VsdCcsICdtYWluJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtNFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtNFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGdhcC0xXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LWdyZWVuLTUwMFwiPntwYXNzQ291bnR8fCAwfTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy0zIGgtMyByZWxhdGl2ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJbWFnZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9e2dldEFzc2V0VXJsKCcvcGFzcy5wbmcnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0PVwi6YCa6L+HXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZXM9e1wiYXV0b1wifVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cIm9iamVjdC1jb250YWluXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGdhcC0xXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LXJlZC01MDBcIj57ZmFpbENvdW50fHwgMH08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctMyBoLTMgcmVsYXRpdmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SW1hZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjPXtnZXRBc3NldFVybCgnL2ZhaWwucG5nJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdD1cIuWksei0pVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVzPXtcImF1dG9cIn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJvYmplY3QtY29udGFpblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LTMgaC0zIHJlbGF0aXZlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPEltYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz17Z2V0QXNzZXRVcmwoJy9hcnJvdy5wbmcnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0PVwi566t5aS0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJvYmplY3QtY29udGFpblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgIHsvKiDmtYvor5Xorr7nva4gKi99XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwic3BhY2UteS0xIGZsZXgtMSBvdmVyZmxvdy1oaWRkZW5cIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGp1c3RpZnktYmV0d2VlbiBpdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtc20gdGV4dC1ncmF5LTQwMFwiPua1i+ivleiuvue9rjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImJnLVsjNDA0MDQwXSB0ZXh0LXdoaXRlIHB4LTMgcHktMSByb3VuZGVkLXNtIHRleHQtc21cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIOeUn+aIkOWUr+S4gElEXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2VuZXJhdGVJZCA9ICgpID0+IE1hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnN1YnN0cigyLCA5KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyDliJvlu7rmlrDnmoTmtYvor5XphY3nva5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXdDb25maWcgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBnZW5lcmF0ZUlkKCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICfmlrDmtYvor5XphY3nva4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGVUeXBlOiAnODAwMCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZWxhYmxlOiAn6ZOc57yG5rWL6K+V5LuqJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW1pdFZhbHVlOiAnVElBIENhdCA2IENoYW5uZWwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FibGVUeXBlOiAnQ2F0NiBVL1VUUCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXJlT3JkZXI6ICdUNTY4QicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZKdW1wZXI6ICcxJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwbGljZUNvdW50OiAnMCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25uZWN0b3JDb3VudDogJzInXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g5pu05paw6aG555uu77yM5re75Yqg5paw55qE5rWL6K+V6YWN572uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY3VycmVudFByb2plY3RJbmRleCA9IHVzZURpc3BsYXlTdG9yZS5nZXRTdGF0ZSgpLnNlbGVjdGVkSW5kZXhlcy5wcm9qZWN0SW5kZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdXBkYXRlZFByb2plY3QgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmN1cnJlbnRQcm9qZWN0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0Q29uZmlnczogWy4uLmN1cnJlbnRQcm9qZWN0LnRlc3RDb25maWdzLCBuZXdDb25maWddXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVQcm9qZWN0KGN1cnJlbnRQcm9qZWN0SW5kZXgsIHVwZGF0ZWRQcm9qZWN0KTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIOiuvue9ruaWsOmFjee9ruS4uumAieS4reeKtuaAgVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5ld0NvbmZpZ0luZGV4ID0gdXBkYXRlZFByb2plY3QudGVzdENvbmZpZ3MubGVuZ3RoIC0gMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTZWxlY3RlZEluZGV4ZXMoeyB0ZXN0Q29uZmlnSW5kZXg6IG5ld0NvbmZpZ0luZGV4IH0pO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g6Lez6L2s5Yiw5rWL6K+V6YWN572u6aG16Z2i5bm26L+b5YWl57yW6L6R6KeG5Zu+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmF2aWdhdGVUbygndGVzdENvbmZpZycsICdzZXR1cCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIOaWsOa1i+ivlVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaC1bMTAwcHhdIG92ZXJmbG93LXktYXV0byBzcGFjZS15LTIgcHItMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y3VycmVudFByb2plY3Q/LnRlc3RDb25maWdzLm1hcCgoY29uZmlnLCBpbmRleCkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e2NvbmZpZy5pZH0gXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiaC1bMTAwcHhdIGJnLVsjRjhGNkY3XSByb3VuZGVkLXNtIHAtNCBzaGFkb3ctbGcgY3Vyc29yLXBvaW50ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IG5hdmlnYXRlVG8oJ3Rlc3RDb25maWcnLCAnbWFpbicpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGp1c3RpZnktYmV0d2VlblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInNwYWNlLXktMC4yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y29uZmlnLm1vZHVsZVR5cGUgPT09ICc4MDAwJyAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LWJsYWNrIHRleHQtc21cIj57Y29uZmlnLnBhcmFtcy5saW1pdFZhbHVlfTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtYmxhY2sgdGV4dC1zbVwiPntjb25maWcucGFyYW1zLmNhYmxlVHlwZX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LWJsYWNrIHRleHQtc21cIj57Y29uZmlnLnBhcmFtcy53aXJlT3JkZXJ9PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2NvbmZpZy5tb2R1bGVUeXBlID09PSAnY2ZwJyAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LWJsYWNrIHRleHQtc21cIj7mmbrog73ov5znq688L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LWJsYWNrIHRleHQtc21cIj57Y29uZmlnLnBhcmFtcy5saW1pdFZhbHVlfTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtYmxhY2sgdGV4dC1zbVwiPntjb25maWcucGFyYW1zLmNhYmxlVHlwZX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LWJsYWNrIHRleHQtc21cIj57Y29uZmlnLnBhcmFtcy5yZWZKdW1wZXJ9IOi3s+e6v+WPgueFpzwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtjb25maWcubW9kdWxlVHlwZSA9PT0gJ29mcCcgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1ibGFjayB0ZXh0LXNtXCI+6Ieq5YqoT1REUjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtYmxhY2sgdGV4dC1zbVwiPntjb25maWcucGFyYW1zLmxpbWl0VmFsdWV9PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1ibGFjayB0ZXh0LXNtXCI+e2NvbmZpZy5wYXJhbXMuY2FibGVUeXBlfTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggZmxleC1jb2wgaXRlbXMtZW5kIGp1c3RpZnktYmV0d2VlblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC1ncmF5LTUwMCB0ZXh0LXNtXCI+e2NvbmZpZy5tb2R1bGVsYWJsZX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBnYXAtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ3LTYgaC02IGJnLVsjNDA0MDQwXSByb3VuZGVkLXNtIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7IC8vIOmYu+atouS6i+S7tuWGkuazoVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRQcm9qZWN0SW5kZXggPSB1c2VEaXNwbGF5U3RvcmUuZ2V0U3RhdGUoKS5zZWxlY3RlZEluZGV4ZXMucHJvamVjdEluZGV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRUZXN0Q29uZmlnSW5kZXggPSB1c2VEaXNwbGF5U3RvcmUuZ2V0U3RhdGUoKS5zZWxlY3RlZEluZGV4ZXMudGVzdENvbmZpZ0luZGV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkQ29uZmlnSWQgPSBjdXJyZW50UHJvamVjdC50ZXN0Q29uZmlnc1tjdXJyZW50VGVzdENvbmZpZ0luZGV4XT8uaWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g56aB5q2i5Yig6Zmk5pyA5ZCO5LiA6aG56YWN572uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRQcm9qZWN0LnRlc3RDb25maWdzLmxlbmd0aCA8PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRvYXN0TWVzc2FnZSgn5LiN6IO95Yig6Zmk5pyA5ZCO5LiA6aG56YWN572uJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g5pu05paw6aG555uu77yM5Yig6Zmk6YCJ5Lit55qE5rWL6K+V6YWN572uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdXBkYXRlZFByb2plY3QgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmN1cnJlbnRQcm9qZWN0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0Q29uZmlnczogY3VycmVudFByb2plY3QudGVzdENvbmZpZ3MuZmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdENvbmZpZyA9PiB0ZXN0Q29uZmlnLmlkICE9PSBjb25maWcuaWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlUHJvamVjdChjdXJyZW50UHJvamVjdEluZGV4LCB1cGRhdGVkUHJvamVjdCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g5pu05paw6YCJ5Lit57Si5byVXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV3SW5kZXggPSB1cGRhdGVkUHJvamVjdC50ZXN0Q29uZmlncy5maW5kSW5kZXgoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RDb25maWcgPT4gdGVzdENvbmZpZy5pZCA9PT0gc2VsZWN0ZWRDb25maWdJZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g5aaC5p6c5Yig6Zmk55qE5piv5b2T5YmN6YCJ5Lit55qE6YWN572u77yM5oiW6ICF5om+5LiN5Yiw6YCJ5Lit55qE6YWN572uSUTvvIzliJnorr7nva7ntKLlvJXkuLowXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U2VsZWN0ZWRJbmRleGVzKHsgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RDb25maWdJbmRleDogbmV3SW5kZXggPT09IC0xID8gMCA6IG5ld0luZGV4IFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctNCBoLTQgcmVsYXRpdmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEltYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9e2dldEFzc2V0VXJsKCcvZGVsZXRlLnBuZycpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0PVwi5Yig6ZmkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cIm9iamVjdC1jb250YWluXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgey8qIOeUtee8hklE6ZuGICovfVxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwic3BhY2UteS0xXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBqdXN0aWZ5LWJldHdlZW4gaXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LXNtIHRleHQtZ3JheS00MDBcIj7nlLXnvIZJROmbhjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiaC1bNTBweF0gYmctWyNGOEY2RjddIHJvdW5kZWQtc20gcC00IHNoYWRvdy1sZyBmbGV4IGp1c3RpZnktYmV0d2VlbiBpdGVtcy1jZW50ZXIgY3Vyc29yLXBvaW50ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBuYXZpZ2F0ZVRvKCdjYWJsZUlkJywgJ21haW4nKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtYmxhY2sgdGV4dC1zbVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg5LiL5LiA5LiqSUQ6IHtjdXJyZW50UHJvamVjdD8uY2FibGVJZHM/LlswXT8ubmFtZSB8fCAnMDAxJ31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy0zIGgtMyByZWxhdGl2ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEltYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjPXtnZXRBc3NldFVybCgnL2Fycm93LnBuZycpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdD1cIueureWktFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cIm9iamVjdC1jb250YWluXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBjb25zdCByZW5kZXJUaXRsZUJhciA9ICgpID0+IHtcbiAgICAgICAgY29uc3QgeyB2aWV3IH0gPSBuYXZpZ2F0aW9uLmN1cnJlbnQ7XG4gICAgICAgIFxuICAgICAgICBzd2l0Y2ggKHZpZXcpIHtcbiAgICAgICAgICAgIGNhc2UgJ2Nob29zZSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxUaXRsZUJhciB0aXRsZT1cIuabtOaUuemhueebrlwiIGJhY2tUbz17bnVsbH0gdmlldz1cIm1haW5cIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPFN1YlRpdGxlQmFyIHRpdGxlPVwi6YCJ5oup5oKo6KaB55qE6aG555uuXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgY2FzZSAncnh0eCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxUaXRsZUJhciB0aXRsZT1cIuS8oOi+k+mhueebrlwiIGJhY2tUbz17bnVsbH0gdmlldz1cIm1haW5cIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPFN1YlRpdGxlQmFyIHRpdGxlPVwi6YCJ5oup5a2Y5YKo6K6+5aSHXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgY2FzZSAncnh0eDInOlxuICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8VGl0bGVCYXIgdGl0bGU9XCLkvKDovpPpobnnm65cIiBiYWNrVG89e251bGx9IHZpZXc9XCJyeHR4XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxTdWJUaXRsZUJhciB0aXRsZT1cIumAieaLqeaJgOmcgOaTjeS9nFwiIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGNhc2UgJ3NldHVwJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgICAgICAgPFRpdGxlQmFyIHRpdGxlPVwi566h55CG6aG555uuXCIgYmFja1RvPXtudWxsfSB2aWV3PVwibWFpblwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8U3ViVGl0bGVCYXIgdGl0bGU9e2N1cnJlbnRQcm9qZWN0Py5uYW1lIHx8ICdERUZBVUxUJ30gLz5cbiAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgY2FzZSAncmVuYW1lJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgICAgICAgPFRpdGxlQmFyIHRpdGxlPVwi6YeN5ZG95ZCNXCIgYmFja1RvPXtudWxsfSB2aWV3PVwic2V0dXBcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBjYXNlICduZXcnOlxuICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8VGl0bGVCYXIgdGl0bGU9XCLmlrDpobnnm65cIiBiYWNrVG89e251bGx9IHZpZXc9XCJjaG9vc2VcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgXG4gICAgICAgICAgICBjYXNlICdtYWluJzpcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxUaXRsZUJhciB0aXRsZT1cIumhueebrlwiIGJhY2tUbz1cImhvbWVcIiB2aWV3PVwibWFpblwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8U3ViVGl0bGVCYXIgdGl0bGU9e2N1cnJlbnRQcm9qZWN0Py5uYW1lIHx8ICdERUZBVUxUJ30gLz5cbiAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBjb25zdCByZW5kZXJGb290ZXIgPSAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHsgdmlldyB9ID0gbmF2aWdhdGlvbi5jdXJyZW50O1xuICAgICAgICBcbiAgICAgICAgc3dpdGNoICh2aWV3KSB7XG4gICAgICAgICAgICBjYXNlICdjaG9vc2UnOlxuICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaC1bNjBweF0gYmctWyMxMzI4NDNdIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBweC04XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHVwZGF0ZUN1cnJlbnRWaWV3KCduZXcnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ3LVsxMDBweF0gaC1bNDBweF0gIHJvdW5kZWQtc20gZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgdGV4dC13aGl0ZSBmb250LWJvbGQgc2hhZG93LWxnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICDmlrDpobnnm65cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgXG4gICAgICAgICAgICBjYXNlICdyeHR4JzpcbiAgICAgICAgICAgIGNhc2UgJ3J4dHgyJzpcbiAgICAgICAgICAgIGNhc2UgJ3NldHVwJzpcbiAgICAgICAgICAgIGNhc2UgJ3JlbmFtZSc6XG4gICAgICAgICAgICBjYXNlICduZXcnOlxuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgXG4gICAgICAgICAgICBjYXNlICdtYWluJzpcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaC1bNjBweF0gYmctWyMxMzI4NDNdIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBweC04XCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB1cGRhdGVDdXJyZW50VmlldygnY2hvb3NlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidy1bMTAwcHhdIGgtWzQwcHhdICByb3VuZGVkLXNtIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHRleHQtd2hpdGUgZm9udC1ib2xkIHNoYWRvdy1sZ1wiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICDmm7TmlLnpobnnm65cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHVwZGF0ZUN1cnJlbnRWaWV3KCdyeHR4Jyl9XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInctWzEwMHB4XSBoLVs0MHB4XSAgcm91bmRlZC1zbSBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciB0ZXh0LXdoaXRlIGZvbnQtYm9sZCBzaGFkb3ctbGdcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAg5Lyg6L6TXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB1cGRhdGVDdXJyZW50Vmlldygnc2V0dXAnKX1cbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidy1bMTAwcHhdIGgtWzQwcHhdICByb3VuZGVkLXNtIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHRleHQtd2hpdGUgZm9udC1ib2xkIHNoYWRvdy1sZ1wiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICDnrqHnkIZcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgcmV0dXJuIChcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LWZ1bGwgaC1mdWxsIGZsZXggZmxleC1jb2wgb3ZlcmZsb3ctaGlkZGVuXCI+XG4gICAgICAgICAgICA8U3RhdHVzQmFyIC8+XG4gICAgICAgICAgICB7cmVuZGVyVGl0bGVCYXIoKX1cbiAgICAgICAgICAgIHtyZW5kZXJDb250ZW50KCl9XG4gICAgICAgICAgICB7cmVuZGVyRm9vdGVyKCl9XG4gICAgICAgIDwvZGl2PlxuICAgICk7XG59Il0sIm5hbWVzIjpbIlJlYWN0IiwidXNlU3RhdGUiLCJJbWFnZSIsIlN0YXR1c0JhciIsIlRpdGxlQmFyIiwiU3ViVGl0bGVCYXIiLCJLZXlib2FyZCIsInVzZURpc3BsYXlTdG9yZSIsImdldEFzc2V0VXJsIiwiUHJvamVjdCIsImlucHV0VmFsdWUiLCJzZXRJbnB1dFZhbHVlIiwiY3Vyc29yUG9zaXRpb24iLCJzZXRDdXJzb3JQb3NpdGlvbiIsImdldEN1cnJlbnRQcm9qZWN0IiwibmF2aWdhdGlvbiIsIm5hdmlnYXRlVG8iLCJ1cGRhdGVDdXJyZW50VmlldyIsImdvQmFjayIsImRlbGV0ZVByb2plY3QiLCJzZXRTZWxlY3RlZEluZGV4ZXMiLCJ1cGRhdGVQcm9qZWN0IiwiYWRkUHJvamVjdCIsInNldFRvYXN0TWVzc2FnZSIsImN1cnJlbnRQcm9qZWN0IiwicGFzc0NvdW50IiwidGVzdFJlc3VsdHMiLCJmaWx0ZXIiLCJyZXN1bHQiLCJjb3BwZXJTdGF0dXMiLCJDb3BwZXJSZXN1bHRTdGF0dXMiLCJjZnBTdGF0dXMiLCJDRlBSZXN1bHRTdGF0dXMiLCJvZnBTdGF0dXMiLCJvZnBSZXN1bHRTdGF0dXMiLCJsZW5ndGgiLCJmYWlsQ291bnQiLCJyZW5kZXJDb250ZW50IiwidmlldyIsImN1cnJlbnQiLCJkaXYiLCJjbGFzc05hbWUiLCJnZXRTdGF0ZSIsInByb2plY3RzIiwibWFwIiwicHJvamVjdCIsImluZGV4Iiwib25DbGljayIsInByb2plY3RJbmRleCIsInRlc3RDb25maWdJbmRleCIsIm5hbWUiLCJzcmMiLCJhbHQiLCJmaWxsIiwiaWQiLCJidXR0b24iLCJzZWxlY3RlZEluZGV4ZXMiLCJpbnB1dCIsInR5cGUiLCJ2YWx1ZSIsIm9uQ2hhbmdlIiwiZSIsInRhcmdldCIsInNlbGVjdGlvblN0YXJ0Iiwib25Gb2N1cyIsInNldFNlbGVjdGlvblJhbmdlIiwibmV3VmFsdWUiLCJuZXdQb3NpdGlvbiIsIm9uQ29tcGxldGUiLCJ0cmltIiwiY3VycmVudEluZGV4IiwicGxhY2Vob2xkZXIiLCJnZW5lcmF0ZUlkIiwiTWF0aCIsInJhbmRvbSIsInRvU3RyaW5nIiwic3Vic3RyIiwibmV3UHJvamVjdCIsInRlc3RDb25maWdzIiwibW9kdWxlVHlwZSIsIm1vZHVsZWxhYmxlIiwicGFyYW1zIiwibGltaXRWYWx1ZSIsImNhYmxlVHlwZSIsIndpcmVPcmRlciIsImNhYmxlSWRzIiwib3BlcmF0b3JzIiwibmV3SW5kZXgiLCJvcGVyYXRvckluZGV4IiwiY2FibGVJZEluZGV4IiwiZGF0ZSIsInNwYW4iLCJzaXplcyIsIm5ld0NvbmZpZyIsInJlZkp1bXBlciIsInNwbGljZUNvdW50IiwiY29ubmVjdG9yQ291bnQiLCJjdXJyZW50UHJvamVjdEluZGV4IiwidXBkYXRlZFByb2plY3QiLCJuZXdDb25maWdJbmRleCIsImNvbmZpZyIsInN0b3BQcm9wYWdhdGlvbiIsImN1cnJlbnRUZXN0Q29uZmlnSW5kZXgiLCJzZWxlY3RlZENvbmZpZ0lkIiwidGVzdENvbmZpZyIsImZpbmRJbmRleCIsInJlbmRlclRpdGxlQmFyIiwidGl0bGUiLCJiYWNrVG8iLCJyZW5kZXJGb290ZXIiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(pages-dir-node)/./src/components/dsxpage/general/Project.js\n"); /***/ }), /***/ "(pages-dir-node)/./src/components/dsxpage/general/Result.js": /*!**************************************************!*\ !*** ./src/components/dsxpage/general/Result.js ***! \**************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; eval("__webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ Result)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"react/jsx-dev-runtime\");\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 */ \"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var next_image__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! next/image */ \"(pages-dir-node)/./node_modules/next/image.js\");\n/* harmony import */ var next_image__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(next_image__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _components_lib_StatusBar__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/components/lib//StatusBar */ \"(pages-dir-node)/./src/components/lib/StatusBar.js\");\n/* harmony import */ var _components_lib_TitleBar__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/components/lib//TitleBar */ \"(pages-dir-node)/./src/components/lib/TitleBar.js\");\n/* harmony import */ var _components_lib_SubTitleBar__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/components/lib//SubTitleBar */ \"(pages-dir-node)/./src/components/lib/SubTitleBar.js\");\n/* harmony import */ var _store_displayStore__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @/store/displayStore */ \"(pages-dir-node)/./src/store/displayStore.js\");\n/* harmony import */ var _components_lib_Keyboard__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @/components/lib//Keyboard */ \"(pages-dir-node)/./src/components/lib/Keyboard.js\");\n/* harmony import */ var _utils_asset__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @/utils/asset */ \"(pages-dir-node)/./src/utils/asset.js\");\nvar __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_components_lib_StatusBar__WEBPACK_IMPORTED_MODULE_3__, _components_lib_TitleBar__WEBPACK_IMPORTED_MODULE_4__, _components_lib_SubTitleBar__WEBPACK_IMPORTED_MODULE_5__, _store_displayStore__WEBPACK_IMPORTED_MODULE_6__, _components_lib_Keyboard__WEBPACK_IMPORTED_MODULE_7__, _utils_asset__WEBPACK_IMPORTED_MODULE_8__]);\n([_components_lib_StatusBar__WEBPACK_IMPORTED_MODULE_3__, _components_lib_TitleBar__WEBPACK_IMPORTED_MODULE_4__, _components_lib_SubTitleBar__WEBPACK_IMPORTED_MODULE_5__, _store_displayStore__WEBPACK_IMPORTED_MODULE_6__, _components_lib_Keyboard__WEBPACK_IMPORTED_MODULE_7__, _utils_asset__WEBPACK_IMPORTED_MODULE_8__] = __webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__);\n\n\n\n\n\n\n\n\n\nfunction Result() {\n const { view } = _store_displayStore__WEBPACK_IMPORTED_MODULE_6__[\"default\"].getState().navigation.current;\n const { getCurrentProject, setToastMessage } = (0,_store_displayStore__WEBPACK_IMPORTED_MODULE_6__[\"default\"])();\n const currentProject = getCurrentProject();\n const [isManageMode, setIsManageMode] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n const [selectedResults, setSelectedResults] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)([]);\n const [inputValue, setInputValue] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)('');\n const [showKeyboard, setShowKeyboard] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(true);\n const [cursorPosition, setCursorPosition] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(0);\n // 获取当前项目名称\n const projectName = currentProject?.name || '';\n // 获取测试结果并统计通过/失败数量\n const testResults = currentProject?.testResults || [];\n const passCount = currentProject?.testResults.filter((result)=>{\n const copperStatus = result.CopperResultStatus;\n const cfpStatus = result.CFPResultStatus;\n const ofpStatus = result.ofpResultStatus;\n if (copperStatus) {\n return copperStatus === 'pass';\n } else if (cfpStatus) {\n return cfpStatus === 'pass';\n } else if (ofpStatus) {\n return ofpStatus === 'pass';\n }\n return false;\n }).length;\n const failCount = currentProject?.testResults.filter((result)=>{\n const copperStatus = result.CopperResultStatus;\n const cfpStatus = result.CFPResultStatus;\n const ofpStatus = result.ofpResultStatus;\n if (copperStatus) {\n return copperStatus === 'fail';\n } else if (cfpStatus) {\n return cfpStatus === 'fail';\n } else if (ofpStatus) {\n return ofpStatus === 'fail';\n }\n return false;\n }).length;\n // 对测试结果进行排序:失败在前,通过在后,相同结果按name排序(数字部分按数值大小排序)\n const sortedResults = [\n ...testResults\n ].sort((a, b)=>{\n const aPass = a.resultdata?.result === 'pass';\n const bPass = b.resultdata?.result === 'pass';\n // 如果通过状态相同,则按name排序\n if (aPass === bPass) {\n // 将名称分割成文本和数字部分\n const splitName = (name)=>{\n const match = name.match(/^(.*?)(\\d+)$/);\n if (match) {\n return {\n text: match[1],\n number: parseInt(match[2], 10)\n };\n }\n return {\n text: name,\n number: 0\n };\n };\n const nameA = splitName(a.name);\n const nameB = splitName(b.name);\n // 先比较文本部分\n if (nameA.text !== nameB.text) {\n return nameA.text.localeCompare(nameB.text);\n }\n // 文本相同则比较数字部分\n return nameA.number - nameB.number;\n }\n return aPass ? 1 : -1;\n });\n // 处理选择结果\n const handleSelect = (result)=>{\n setSelectedResults((prev)=>{\n if (prev.includes(result.name)) {\n return prev.filter((name)=>name !== result.name);\n } else {\n return [\n ...prev,\n result.name\n ];\n }\n });\n };\n // 处理删除选中的结果\n const handleDelete = ()=>{\n if (selectedResults.length === 0) return;\n const newResults = testResults.filter((result)=>!selectedResults.includes(result.name));\n const updatedProject = {\n ...currentProject,\n testResults: newResults\n };\n const projectIndex = _store_displayStore__WEBPACK_IMPORTED_MODULE_6__[\"default\"].getState().projects.findIndex((p)=>p.id === currentProject.id);\n _store_displayStore__WEBPACK_IMPORTED_MODULE_6__[\"default\"].getState().updateProject(projectIndex, updatedProject);\n setSelectedResults([]);\n setIsManageMode(false);\n setShowDeleteDialog(false);\n };\n // 重命名逻辑\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)({\n \"Result.useEffect\": ()=>{\n if (view === 'rename' && selectedResults.length === 1) {\n const selectedResult = testResults.find({\n \"Result.useEffect.selectedResult\": (result)=>result.name === selectedResults[0]\n }[\"Result.useEffect.selectedResult\"]);\n setInputValue(selectedResult.name);\n }\n }\n }[\"Result.useEffect\"], [\n view,\n selectedResults,\n testResults\n ]);\n // 处理重命名完成\n const handleRename = ()=>{\n if (!inputValue.trim()) return;\n // 检查是否与其他结果名称冲突\n const isDuplicate = testResults.some((result)=>result.name !== selectedResults[0] && result.name === inputValue.trim());\n if (isDuplicate) {\n setToastMessage('该名称已存在,请使用其他名称');\n return;\n }\n const newResults = testResults.map((result)=>{\n console.log(testResults);\n console.log(result);\n if (result.name === selectedResults[0]) {\n // 处理CFP模块类型的特殊重命名逻辑\n if (result.testconfig?.moduleType === 'cfp') {\n const oldName = result.name;\n const newName = inputValue.trim();\n // 判断旧名字是input还是output\n if (oldName === result.inputname) {\n // 查找关联结果:inputname相同但name不同的结果\n const relatedResult = testResults.find((r)=>r.inputname === result.inputname && r.name !== result.name);\n console.log(\"找到的关联结果:\", relatedResult);\n // 如果是当前选中的结果,更新name和inputname\n if (result.name === selectedResults[0]) {\n // 更新选中结果的name和inputname\n const updatedResult = {\n ...result,\n name: newName,\n inputname: newName\n };\n // 查找并更新关联结果的inputname\n const relatedResult = testResults.find((r)=>r.inputname === result.inputname && r.name !== result.name);\n if (relatedResult) {\n relatedResult.inputname = newName;\n }\n return updatedResult;\n }\n return result;\n } else if (oldName === result.outname) {\n // 查找关联结果:outname相同但name不同的结果\n if (result.name === selectedResults[0]) {\n // outname\n const updatedResult = {\n ...result,\n name: newName,\n outname: newName\n };\n // outname\n const relatedResult = testResults.find((r)=>r.outname === result.outname && r.name !== result.name);\n if (relatedResult) {\n relatedResult.outname = newName;\n }\n return updatedResult;\n }\n return result;\n }\n }\n return {\n ...result,\n name: inputValue.trim()\n };\n }\n return result;\n });\n const updatedProject = {\n ...currentProject,\n testResults: newResults\n };\n const projectIndex = _store_displayStore__WEBPACK_IMPORTED_MODULE_6__[\"default\"].getState().projects.findIndex((p)=>p.id === currentProject.id);\n _store_displayStore__WEBPACK_IMPORTED_MODULE_6__[\"default\"].getState().updateProject(projectIndex, updatedProject);\n _store_displayStore__WEBPACK_IMPORTED_MODULE_6__[\"default\"].getState().navigateTo('result', 'main');\n // 重置管理状态和选中结果状态\n setIsManageMode(false);\n setSelectedResults([]);\n };\n //确认删除提示框 \n const [showDeleteDialog, setShowDeleteDialog] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n //确认移动提示框\n const [showConfirmDialog, setShowConfirmDialog] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n const [targetProject, setTargetProject] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);\n const [showOverwriteDialog, setShowOverwriteDialog] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n const [duplicateResults, setDuplicateResults] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)([]);\n const moveResults = (project, index)=>{\n // 检查是否选择了结果和目标项目\n if (selectedResults.length === 0 || !project) return;\n // 检查是否在同一个项目中移动\n if (project.id === currentProject.id) {\n setToastMessage('不能移动到相同项目');\n return;\n }\n // 检查目标项目中是否有重名结果\n const duplicates = selectedResults.filter((resultName)=>project.testResults.some((targetResult)=>targetResult.name === resultName));\n if (duplicates.length > 0) {\n setDuplicateResults(duplicates);\n setTargetProject(project);\n setShowOverwriteDialog(true);\n } else {\n setTargetProject(project);\n setShowConfirmDialog(true);\n }\n };\n const handleMove = (overwrite = false)=>{\n if (!targetProject) return;\n // 获取要移动的结果对象\n const resultsToMove = testResults.filter((result)=>selectedResults.includes(result.name));\n // 更新目标项目\n const updatedTargetResults = overwrite ? [\n ...targetProject.testResults.filter((result)=>!selectedResults.includes(result.name)),\n ...resultsToMove\n ] : [\n ...targetProject.testResults,\n ...resultsToMove\n ];\n const updatedTargetProject = {\n ...targetProject,\n testResults: updatedTargetResults\n };\n // 更新当前项目\n const updatedCurrentResults = testResults.filter((result)=>!selectedResults.includes(result.name));\n const updatedCurrentProject = {\n ...currentProject,\n testResults: updatedCurrentResults\n };\n // 保存更改\n const targetIndex = _store_displayStore__WEBPACK_IMPORTED_MODULE_6__[\"default\"].getState().projects.findIndex((p)=>p.id === targetProject.id);\n const currentIndex = _store_displayStore__WEBPACK_IMPORTED_MODULE_6__[\"default\"].getState().projects.findIndex((p)=>p.id === currentProject.id);\n _store_displayStore__WEBPACK_IMPORTED_MODULE_6__[\"default\"].getState().updateProject(targetIndex, updatedTargetProject);\n _store_displayStore__WEBPACK_IMPORTED_MODULE_6__[\"default\"].getState().updateProject(currentIndex, updatedCurrentProject);\n // 重置状态\n setSelectedResults([]);\n setIsManageMode(false);\n setShowConfirmDialog(false);\n setShowOverwriteDialog(false);\n setTargetProject(null);\n setDuplicateResults([]);\n // 显示成功消息并返回主视图\n setToastMessage('移动成功');\n _store_displayStore__WEBPACK_IMPORTED_MODULE_6__[\"default\"].getState().navigateTo('result', 'main');\n };\n // 渲染标题栏\n const renderTitleBar = ()=>{\n const { view } = _store_displayStore__WEBPACK_IMPORTED_MODULE_6__[\"default\"].getState().navigation.current;\n switch(view){\n case 'rename':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_TitleBar__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n title: \"重命名结果\",\n backTo: _store_displayStore__WEBPACK_IMPORTED_MODULE_6__[\"default\"].getState().navigation.previous?.name || 'home',\n view: _store_displayStore__WEBPACK_IMPORTED_MODULE_6__[\"default\"].getState().navigation.previous?.view || 'main'\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Result.js\",\n lineNumber: 283,\n columnNumber: 21\n }, this);\n case 'move':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_TitleBar__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n title: \"移至\",\n backTo: _store_displayStore__WEBPACK_IMPORTED_MODULE_6__[\"default\"].getState().navigation.previous?.name || 'home',\n view: _store_displayStore__WEBPACK_IMPORTED_MODULE_6__[\"default\"].getState().navigation.previous?.view || 'main'\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Result.js\",\n lineNumber: 291,\n columnNumber: 21\n }, this);\n case 'main':\n default:\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_TitleBar__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n title: \"结果\",\n backTo: 'home',\n view: 'main'\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Result.js\",\n lineNumber: 300,\n columnNumber: 21\n }, this);\n }\n };\n // 渲染主要内容\n const renderContent = ()=>{\n const { view } = _store_displayStore__WEBPACK_IMPORTED_MODULE_6__[\"default\"].getState().navigation.current;\n switch(view){\n case 'rename':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 bg-[#D5DFEB] p-4 flex flex-col\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"relative mb-4 cursor-pointer\",\n onClick: ()=>setShowKeyboard(true),\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"text\",\n className: \"w-full h-[50px] bg-[#ffffe1] rounded-sm p-4 text-black\",\n value: inputValue,\n placeholder: \"请输入测试结果名称\",\n onChange: (e)=>{\n setInputValue(e.target.value);\n setCursorPosition(e.target.selectionStart);\n },\n onClick: (e)=>{\n setShowKeyboard(true);\n setCursorPosition(e.target.selectionStart);\n },\n onFocus: (e)=>{\n const cursorPosition = e.target.selectionStart;\n e.target.setSelectionRange(cursorPosition, cursorPosition);\n }\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Result.js\",\n lineNumber: 321,\n columnNumber: 29\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Result.js\",\n lineNumber: 317,\n columnNumber: 25\n }, this),\n showKeyboard && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_Keyboard__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n value: inputValue,\n cursorPosition: cursorPosition,\n onChange: (newValue, newPosition)=>{\n setInputValue(newValue);\n setCursorPosition(newPosition);\n },\n onComplete: ()=>{\n setShowKeyboard(false);\n }\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Result.js\",\n lineNumber: 341,\n columnNumber: 29\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Result.js\",\n lineNumber: 316,\n columnNumber: 21\n }, this);\n case 'move':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 bg-[#D5DFEB] flex flex-col relative\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_SubTitleBar__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n title: \"选择您要的项目\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Result.js\",\n lineNumber: 358,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-y-2 p-4\",\n children: _store_displayStore__WEBPACK_IMPORTED_MODULE_6__[\"default\"].getState().projects.map((project, index)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[50px] bg-[#F8F6F7]rounded-sm p-4 shadow-lg flex justify-between items-center cursor-pointer\",\n onClick: ()=>{\n moveResults(project, index);\n },\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black text-sm\",\n children: project.name\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Result.js\",\n lineNumber: 369,\n columnNumber: 37\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-3 h-3 relative\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: (0,_utils_asset__WEBPACK_IMPORTED_MODULE_8__.getAssetUrl)('/arrow.png'),\n alt: \"箭头\",\n fill: true,\n className: \"object-contain\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Result.js\",\n lineNumber: 371,\n columnNumber: 41\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Result.js\",\n lineNumber: 370,\n columnNumber: 37\n }, this)\n ]\n }, project.id, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Result.js\",\n lineNumber: 362,\n columnNumber: 33\n }, this))\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Result.js\",\n lineNumber: 360,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Result.js\",\n lineNumber: 357,\n columnNumber: 21\n }, this);\n case 'main':\n default:\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[60px] bg-gradient-to-b from-[#d5dfeb] via-[#f8f6f7] to-[#d5dfeb] px-4 flex flex-col justify-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black\",\n children: projectName\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Result.js\",\n lineNumber: 389,\n columnNumber: 29\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-1\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-green-500\",\n children: passCount\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Result.js\",\n lineNumber: 393,\n columnNumber: 37\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-3 h-3 relative\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: (0,_utils_asset__WEBPACK_IMPORTED_MODULE_8__.getAssetUrl)('/pass.png'),\n alt: \"通过\",\n sizes: \"auto\",\n fill: true,\n className: \"object-contain\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Result.js\",\n lineNumber: 395,\n columnNumber: 41\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Result.js\",\n lineNumber: 394,\n columnNumber: 37\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Result.js\",\n lineNumber: 392,\n columnNumber: 33\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-1\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-red-500\",\n children: failCount\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Result.js\",\n lineNumber: 405,\n columnNumber: 37\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-3 h-3 relative\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: (0,_utils_asset__WEBPACK_IMPORTED_MODULE_8__.getAssetUrl)('/fail.png'),\n alt: \"失败\",\n sizes: \"auto\",\n fill: true,\n className: \"object-contain\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Result.js\",\n lineNumber: 407,\n columnNumber: 41\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Result.js\",\n lineNumber: 406,\n columnNumber: 37\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Result.js\",\n lineNumber: 404,\n columnNumber: 33\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Result.js\",\n lineNumber: 391,\n columnNumber: 29\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Result.js\",\n lineNumber: 388,\n columnNumber: 25\n }, this),\n isManageMode && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[40px] px-4 bg-[#F8F6F7] flex items-center border-b border-gray-600\",\n children: /*#__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: \"checkbox\",\n checked: selectedResults.length === sortedResults.length,\n onChange: ()=>{\n if (selectedResults.length === sortedResults.length) {\n setSelectedResults([]);\n } else {\n setSelectedResults(sortedResults.map((result)=>result.name));\n }\n },\n className: \"w-4 h-4\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Result.js\",\n lineNumber: 421,\n columnNumber: 41\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-black\",\n children: \"选择全部\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Result.js\",\n lineNumber: 433,\n columnNumber: 41\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Result.js\",\n lineNumber: 420,\n columnNumber: 37\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Result.js\",\n lineNumber: 419,\n columnNumber: 33\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 bg-[#D5DFEB] overflow-y-auto\",\n style: {\n scrollbarWidth: 'none',\n msOverflowStyle: 'none'\n },\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-y-0\",\n children: sortedResults.map((result, index)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[60px] px-4 bg-[#F8F6F7] flex items-center justify-between border-b border-gray-600 cursor-pointer\",\n onClick: ()=>!isManageMode && _store_displayStore__WEBPACK_IMPORTED_MODULE_6__[\"default\"].getState().navigateTo('resultinfo', 'save', result),\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-4\",\n children: [\n isManageMode && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"checkbox\",\n checked: selectedResults.includes(result.name),\n onChange: ()=>handleSelect(result),\n className: \"w-4 h-4\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Result.js\",\n lineNumber: 447,\n columnNumber: 49\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-black\",\n children: result.name\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Result.js\",\n lineNumber: 454,\n columnNumber: 45\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Result.js\",\n lineNumber: 445,\n columnNumber: 41\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"img\", {\n src: result.CopperResultStatus === 'pass' || result.ofpResultStatus === 'pass' || result.name === result.inputname && result.InPortStatus === 'pass' || result.name === result.outname && result.OutPortStatus === 'pass' ? (0,_utils_asset__WEBPACK_IMPORTED_MODULE_8__.getAssetUrl)('/pass.png') : (0,_utils_asset__WEBPACK_IMPORTED_MODULE_8__.getAssetUrl)('/fail.png'),\n alt: result.CopperResultStatus === 'pass' || result.ofpResultStatus === 'pass' || result.name === result.inputname && result.InPortStatus === 'pass' || result.name === result.outname && result.OutPortStatus === 'pass' ? '通过' : '失败',\n className: \"w-7 h-7\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Result.js\",\n lineNumber: 456,\n columnNumber: 41\n }, this)\n ]\n }, index, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Result.js\",\n lineNumber: 440,\n columnNumber: 37\n }, this))\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Result.js\",\n lineNumber: 438,\n columnNumber: 29\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Result.js\",\n lineNumber: 437,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true);\n }\n };\n // 渲染底部按钮\n const renderFooter = ()=>{\n const { view } = _store_displayStore__WEBPACK_IMPORTED_MODULE_6__[\"default\"].getState().navigation.current;\n switch(view){\n case 'rename':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[60px] bg-[#132843] flex items-center justify-end px-8\",\n children: !showKeyboard && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: handleRename,\n className: \"w-[100px] h-[40px] rounded-sm flex items-center justify-center text-white font-bold shadow-lg\",\n children: \"完成\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Result.js\",\n lineNumber: 493,\n columnNumber: 29\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Result.js\",\n lineNumber: 491,\n columnNumber: 21\n }, this);\n case 'move':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[60px] bg-[#132843] flex items-center justify-between px-5\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Result.js\",\n lineNumber: 504,\n columnNumber: 21\n }, this);\n case 'main':\n default:\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[60px] bg-[#132843] flex items-center justify-between px-5\",\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)(\"button\", {\n className: \"w-[100px] h-[40px] rounded-sm flex items-center justify-center text-white font-bold shadow-lg\",\n onClick: ()=>{\n if (selectedResults.length > 0) {\n _store_displayStore__WEBPACK_IMPORTED_MODULE_6__[\"default\"].getState().navigateTo('result', 'move');\n }\n },\n disabled: selectedResults.length === 0,\n style: {\n opacity: selectedResults.length > 0 ? 1 : 0.5\n },\n children: \"移动\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Result.js\",\n lineNumber: 513,\n columnNumber: 29\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Result.js\",\n lineNumber: 512,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 flex justify-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n className: \"w-[100px] h-[40px] rounded-sm flex items-center justify-center text-white font-bold shadow-lg\",\n onClick: ()=>{\n if (selectedResults.length === 1) {\n const selectedResult = testResults.find((result)=>result.name === selectedResults[0]);\n _store_displayStore__WEBPACK_IMPORTED_MODULE_6__[\"default\"].getState().navigateTo('result', 'rename', selectedResult);\n }\n },\n disabled: selectedResults.length !== 1,\n style: {\n opacity: selectedResults.length === 1 ? 1 : 0.5\n },\n children: \"重命名\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Result.js\",\n lineNumber: 528,\n columnNumber: 25\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Result.js\",\n lineNumber: 527,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 flex justify-end\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n className: \"w-[100px] h-[40px] rounded-sm flex items-center justify-center text-white font-bold shadow-lg\",\n onClick: ()=>isManageMode ? setShowDeleteDialog(true) : setIsManageMode(true),\n children: isManageMode ? '删除' : '管理'\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Result.js\",\n lineNumber: 543,\n columnNumber: 25\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Result.js\",\n lineNumber: 542,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Result.js\",\n lineNumber: 511,\n columnNumber: 21\n }, this);\n }\n };\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full h-full flex flex-col overflow-hidden\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_StatusBar__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {}, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Result.js\",\n lineNumber: 557,\n columnNumber: 13\n }, this),\n renderTitleBar(),\n renderContent(),\n renderFooter(),\n showDeleteDialog && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-[480px] h-[640px] bg-[#002842d4] absolute z-9999\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"pl-10 pt-60\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-[#2B3C5B] rounded-lg p-6 w-[400px] min-h-[200px] flex flex-col\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h3\", {\n className: \"text-white text-xl font-bold mb-4\",\n children: \"提示\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Result.js\",\n lineNumber: 566,\n columnNumber: 37\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 flex items-center justify-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-white text-lg\",\n children: \"是否删除选中的测试结果?\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Result.js\",\n lineNumber: 568,\n columnNumber: 37\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Result.js\",\n lineNumber: 567,\n columnNumber: 37\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex justify-center mt-4\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex justify-center gap-10\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n className: \"text-white text-s font-bold px-4 py-2 bg-[#1d3155] rounded-md hover:bg-[#2b4466]\",\n onClick: ()=>setShowDeleteDialog(false),\n children: \"取消\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Result.js\",\n lineNumber: 572,\n columnNumber: 37\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n className: \"text-white text-s font-bold px-4 py-2 bg-[#1d3155] rounded-md hover:bg-[#2b4466]\",\n onClick: ()=>handleDelete(),\n children: \"确认\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Result.js\",\n lineNumber: 578,\n columnNumber: 37\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Result.js\",\n lineNumber: 571,\n columnNumber: 33\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Result.js\",\n lineNumber: 570,\n columnNumber: 37\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Result.js\",\n lineNumber: 565,\n columnNumber: 37\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Result.js\",\n lineNumber: 564,\n columnNumber: 29\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Result.js\",\n lineNumber: 563,\n columnNumber: 29\n }, this),\n showConfirmDialog && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-[480px] h-[640px] bg-[#002842d4] absolute z-9999\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"pl-10 pt-60\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-[#2B3C5B] rounded-lg p-6 w-[400px] min-h-[200px] flex flex-col\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h3\", {\n className: \"text-white text-xl font-bold mb-4\",\n children: \"提示\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Result.js\",\n lineNumber: 595,\n columnNumber: 37\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 flex items-center justify-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-white text-lg\",\n children: [\n \"是否将选中的测试结果移动到项目 \",\n targetProject?.name,\n \"?\"\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Result.js\",\n lineNumber: 597,\n columnNumber: 37\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Result.js\",\n lineNumber: 596,\n columnNumber: 37\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex justify-center mt-4\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex justify-center gap-10\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n className: \" text-white text-s font-bold px-4 py-2 bg-[#1d3155] rounded-md hover:bg-[#2b4466]\",\n onClick: ()=>setShowConfirmDialog(false),\n children: \"取消\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Result.js\",\n lineNumber: 601,\n columnNumber: 37\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n className: \" text-white text-s font-bold px-4 py-2 bg-[#1d3155] rounded-md hover:bg-[#2b4466]\",\n onClick: ()=>handleMove(false),\n children: \"确认\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Result.js\",\n lineNumber: 607,\n columnNumber: 37\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Result.js\",\n lineNumber: 600,\n columnNumber: 33\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Result.js\",\n lineNumber: 599,\n columnNumber: 37\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Result.js\",\n lineNumber: 594,\n columnNumber: 37\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Result.js\",\n lineNumber: 593,\n columnNumber: 29\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Result.js\",\n lineNumber: 592,\n columnNumber: 29\n }, this),\n showOverwriteDialog && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-[480px] h-[640px] bg-[#002842d4] absolute z-9999\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"pl-10 pt-60\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-[#2B3C5B] rounded-lg p-6 w-[400px] min-h-[200px] flex flex-col\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h3\", {\n className: \"text-white text-xl font-bold mb-4\",\n children: \"提示\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Result.js\",\n lineNumber: 625,\n columnNumber: 37\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 flex flex-col items-center justify-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-white text-lg mb-4\",\n children: \"以下测试结果在目标项目中已存在:\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Result.js\",\n lineNumber: 627,\n columnNumber: 37\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"ul\", {\n className: \"mb-4 list-disc pl-6\",\n children: duplicateResults.map((name, index)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"li\", {\n className: \"text-red-500\",\n children: name\n }, index, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Result.js\",\n lineNumber: 630,\n columnNumber: 45\n }, this))\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Result.js\",\n lineNumber: 628,\n columnNumber: 37\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-white text-lg\",\n children: \"是否覆盖这些结果?\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Result.js\",\n lineNumber: 633,\n columnNumber: 37\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Result.js\",\n lineNumber: 626,\n columnNumber: 37\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex justify-center mt-4\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex justify-center gap-10\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n className: \"text-white text-s font-bold px-4 py-2 bg-[#1d3155] rounded-md hover:bg-[#2b4466]\",\n onClick: ()=>{\n setShowOverwriteDialog(false);\n setTargetProject(null);\n setDuplicateResults([]);\n },\n children: \"取消\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Result.js\",\n lineNumber: 637,\n columnNumber: 41\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n className: \"text-white text-s font-bold px-4 py-2 bg-[#1d3155] rounded-md hover:bg-[#2b4466]\",\n onClick: ()=>handleMove(true),\n children: \"覆盖\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Result.js\",\n lineNumber: 647,\n columnNumber: 41\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Result.js\",\n lineNumber: 636,\n columnNumber: 37\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Result.js\",\n lineNumber: 635,\n columnNumber: 37\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Result.js\",\n lineNumber: 624,\n columnNumber: 37\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Result.js\",\n lineNumber: 623,\n columnNumber: 29\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Result.js\",\n lineNumber: 622,\n columnNumber: 29\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Result.js\",\n lineNumber: 556,\n columnNumber: 9\n }, this);\n}\n\n__webpack_async_result__();\n} catch(e) { __webpack_async_result__(e); } });//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHBhZ2VzLWRpci1ub2RlKS8uL3NyYy9jb21wb25lbnRzL2RzeHBhZ2UvZ2VuZXJhbC9SZXN1bHQuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBbUQ7QUFDcEI7QUFDcUI7QUFDRjtBQUNNO0FBQ0w7QUFDRDtBQUNOO0FBRTdCLFNBQVNVO0lBQ3BCLE1BQU0sRUFBRUMsSUFBSSxFQUFFLEdBQUdKLG9FQUF3QixHQUFHTSxVQUFVLENBQUNDLE9BQU87SUFDOUQsTUFBTSxFQUFFQyxpQkFBaUIsRUFBQ0MsZUFBZSxFQUFFLEdBQUdULCtEQUFlQTtJQUM3RCxNQUFNVSxpQkFBaUJGO0lBQ3ZCLE1BQU0sQ0FBQ0csY0FBY0MsZ0JBQWdCLEdBQUdsQiwrQ0FBUUEsQ0FBQztJQUNqRCxNQUFNLENBQUNtQixpQkFBaUJDLG1CQUFtQixHQUFHcEIsK0NBQVFBLENBQUMsRUFBRTtJQUN6RCxNQUFNLENBQUNxQixZQUFZQyxjQUFjLEdBQUd0QiwrQ0FBUUEsQ0FBQztJQUM3QyxNQUFNLENBQUN1QixjQUFjQyxnQkFBZ0IsR0FBR3hCLCtDQUFRQSxDQUFDO0lBQ2pELE1BQU0sQ0FBQ3lCLGdCQUFnQkMsa0JBQWtCLEdBQUcxQiwrQ0FBUUEsQ0FBQztJQUNyRCxXQUFXO0lBQ1gsTUFBTTJCLGNBQWNYLGdCQUFnQlksUUFBUTtJQUU1QyxtQkFBbUI7SUFDbkIsTUFBTUMsY0FBY2IsZ0JBQWdCYSxlQUFlLEVBQUU7SUFDckQsTUFBTUMsWUFBWWQsZ0JBQWdCYSxZQUFZRSxPQUFPQyxDQUFBQTtRQUNqRCxNQUFNQyxlQUFlRCxPQUFPRSxrQkFBa0I7UUFDOUMsTUFBTUMsWUFBWUgsT0FBT0ksZUFBZTtRQUN4QyxNQUFNQyxZQUFZTCxPQUFPTSxlQUFlO1FBRXhDLElBQUlMLGNBQWM7WUFDZCxPQUFPQSxpQkFBaUI7UUFDNUIsT0FBTyxJQUFJRSxXQUFXO1lBQ2xCLE9BQU9BLGNBQWM7UUFDekIsT0FBTyxJQUFJRSxXQUFXO1lBQ2xCLE9BQU9BLGNBQWM7UUFD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NENBQ0c1QixXQUFVOzRDQUNWQyxTQUFTLElBQU03QixxQkFBcUI7c0RBQ3ZDOzs7Ozs7c0RBR0QsOERBQUN3RDs0Q0FDRzVCLFdBQVU7NENBQ1ZDLFNBQVMsSUFBTWhCLFdBQVc7c0RBQzdCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7WUFXeEJWLHFDQUNlLDhEQUFDd0I7Z0JBQUlDLFdBQVU7MEJBQ2YsNEVBQUNEO29CQUFJQyxXQUFVOzhCQUNQLDRFQUFDRDt3QkFBSUMsV0FBVTs7MENBQ2YsOERBQUMrQjtnQ0FBRy9CLFdBQVU7MENBQW9DOzs7Ozs7MENBQ2xELDhEQUFDRDtnQ0FBSUMsV0FBVTs7a0RBQ2YsOERBQUNEO3dDQUFJQyxXQUFVO2tEQUEwQjs7Ozs7O2tEQUN6Qyw4REFBQ2dDO3dDQUFHaEMsV0FBVTtrREFDVHZCLGlCQUFpQnBCLEdBQUcsQ0FBQyxDQUFDL0MsTUFBTXVFLHNCQUN6Qiw4REFBQ29EO2dEQUFlakMsV0FBVTswREFBZ0IxRjsrQ0FBakN1RTs7Ozs7Ozs7OztrREFHakIsOERBQUNrQjt3Q0FBSUMsV0FBVTtrREFBcUI7Ozs7Ozs7Ozs7OzswQ0FFcEMsOERBQUNEO2dDQUFJQyxXQUFVOzBDQUNmLDRFQUFDRDtvQ0FBSUMsV0FBVTs7c0RBQ1gsOERBQUM0Qjs0Q0FDRzVCLFdBQVU7NENBQ1ZDLFNBQVM7Z0RBQ0x6Qix1QkFBdUI7Z0RBQ3ZCRixpQkFBaUI7Z0RBQ2pCSSxvQkFBb0IsRUFBRTs0Q0FDMUI7c0RBQ0g7Ozs7OztzREFHRCw4REFBQ2tEOzRDQUNHNUIsV0FBVTs0Q0FDVkMsU0FBUyxJQUFNaEIsV0FBVztzREFDN0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVd6QyIsInNvdXJjZXMiOlsiL29wdC9kZXYvZXN0LWRzeC9zcmMvY29tcG9uZW50cy9kc3hwYWdlL2dlbmVyYWwvUmVzdWx0LmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSwgdXNlRWZmZWN0IH0gZnJvbSAncmVhY3QnO1xyXG5pbXBvcnQgSW1hZ2UgZnJvbSAnbmV4dC9pbWFnZSc7XHJcbmltcG9ydCBTdGF0dXNCYXIgZnJvbSAnQC9jb21wb25lbnRzL2xpYi8vU3RhdHVzQmFyJztcclxuaW1wb3J0IFRpdGxlQmFyIGZyb20gJ0AvY29tcG9uZW50cy9saWIvL1RpdGxlQmFyJztcclxuaW1wb3J0IFN1YlRpdGxlQmFyIGZyb20gJ0AvY29tcG9uZW50cy9saWIvL1N1YlRpdGxlQmFyJztcclxuaW1wb3J0IHVzZURpc3BsYXlTdG9yZSBmcm9tICdAL3N0b3JlL2Rpc3BsYXlTdG9yZSc7XHJcbmltcG9ydCBLZXlib2FyZCBmcm9tICdAL2NvbXBvbmVudHMvbGliLy9LZXlib2FyZCc7XHJcbmltcG9ydCB7IGdldEFzc2V0VXJsIH0gZnJvbSAnQC91dGlscy9hc3NldCc7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBSZXN1bHQoKSB7XHJcbiAgICBjb25zdCB7IHZpZXcgfSA9IHVzZURpc3BsYXlTdG9yZS5nZXRTdGF0ZSgpLm5hdmlnYXRpb24uY3VycmVudDtcclxuICAgIGNvbnN0IHsgZ2V0Q3VycmVudFByb2plY3Qsc2V0VG9hc3RNZXNzYWdlIH0gPSB1c2VEaXNwbGF5U3RvcmUoKTtcclxuICAgIGNvbnN0IGN1cnJlbnRQcm9qZWN0ID0gZ2V0Q3VycmVudFByb2plY3QoKTtcclxuICAgIGNvbnN0IFtpc01hbmFnZU1vZGUsIHNldElzTWFuYWdlTW9kZV0gPSB1c2VTdGF0ZShmYWxzZSk7XHJcbiAgICBjb25zdCBbc2VsZWN0ZWRSZXN1bHRzLCBzZXRTZWxlY3RlZFJlc3VsdHNdID0gdXNlU3RhdGUoW10pO1xyXG4gICAgY29uc3QgW2lucHV0VmFsdWUsIHNldElucHV0VmFsdWVdID0gdXNlU3RhdGUoJycpO1xyXG4gICAgY29uc3QgW3Nob3dLZXlib2FyZCwgc2V0U2hvd0tleWJvYXJkXSA9IHVzZVN0YXRlKHRydWUpO1xyXG4gICAgY29uc3QgW2N1cnNvclBvc2l0aW9uLCBzZXRDdXJzb3JQb3NpdGlvbl0gPSB1c2VTdGF0ZSgwKTtcclxuICAgIC8vIOiOt+WPluW9k+WJjemhueebruWQjeensFxyXG4gICAgY29uc3QgcHJvamVjdE5hbWUgPSBjdXJyZW50UHJvamVjdD8ubmFtZSB8fCAnJztcclxuXHJcbiAgICAvLyDojrflj5bmtYvor5Xnu5Pmnpzlubbnu5/orqHpgJrov4cv5aSx6LSl5pWw6YePXHJcbiAgICBjb25zdCB0ZXN0UmVzdWx0cyA9IGN1cnJlbnRQcm9qZWN0Py50ZXN0UmVzdWx0cyB8fCBbXTtcclxuICAgIGNvbnN0IHBhc3NDb3VudCA9IGN1cnJlbnRQcm9qZWN0Py50ZXN0UmVzdWx0cy5maWx0ZXIocmVzdWx0ID0+IHtcclxuICAgICAgICBjb25zdCBjb3BwZXJTdGF0dXMgPSByZXN1bHQuQ29wcGVyUmVzdWx0U3RhdHVzO1xyXG4gICAgICAgIGNvbnN0IGNmcFN0YXR1cyA9IHJlc3VsdC5DRlBSZXN1bHRTdGF0dXM7XHJcbiAgICAgICAgY29uc3Qgb2ZwU3RhdHVzID0gcmVzdWx0Lm9mcFJlc3VsdFN0YXR1cztcclxuICAgICAgICBcclxuICAgICAgICBpZiAoY29wcGVyU3RhdHVzKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBjb3BwZXJTdGF0dXMgPT09ICdwYXNzJztcclxuICAgICAgICB9IGVsc2UgaWYgKGNmcFN0YXR1cykge1xyXG4gICAgICAgICAgICByZXR1cm4gY2ZwU3RhdHVzID09PSAncGFzcyc7XHJcbiAgICAgICAgfSBlbHNlIGlmIChvZnBTdGF0dXMpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG9mcFN0YXR1cyA9PT0gJ3Bhc3MnO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9KS5sZW5ndGg7XHJcbiAgICBcclxuICAgIGNvbnN0IGZhaWxDb3VudCA9IGN1cnJlbnRQcm9qZWN0Py50ZXN0UmVzdWx0cy5maWx0ZXIocmVzdWx0ID0+IHtcclxuICAgICAgICBjb25zdCBjb3BwZXJTdGF0dXMgPSByZXN1bHQuQ29wcGVyUmVzdWx0U3RhdHVzO1xyXG4gICAgICAgIGNvbnN0IGNmcFN0YXR1cyA9IHJlc3VsdC5DRlBSZXN1bHRTdGF0dXM7XHJcbiAgICAgICAgY29uc3Qgb2ZwU3RhdHVzID0gcmVzdWx0Lm9mcFJlc3VsdFN0YXR1cztcclxuICAgICAgICBcclxuICAgICAgICBpZiAoY29wcGVyU3RhdHVzKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBjb3BwZXJTdGF0dXMgPT09ICdmYWlsJztcclxuICAgICAgICB9IGVsc2UgaWYgKGNmcFN0YXR1cykge1xyXG4gICAgICAgICAgICByZXR1cm4gY2ZwU3RhdHVzID09PSAnZmFpbCc7XHJcbiAgICAgICAgfSBlbHNlIGlmIChvZnBTdGF0dXMpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG9mcFN0YXR1cyA9PT0gJ2ZhaWwnO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9KS5sZW5ndGg7XHJcblxyXG4gICAgLy8g5a+55rWL6K+V57uT5p6c6L+b6KGM5o6S5bqP77ya5aSx6LSl5Zyo5YmN77yM6YCa6L+H5Zyo5ZCO77yM55u45ZCM57uT5p6c5oyJbmFtZeaOkuW6j++8iOaVsOWtl+mDqOWIhuaMieaVsOWAvOWkp+Wwj+aOkuW6j++8iVxyXG4gICAgY29uc3Qgc29ydGVkUmVzdWx0cyA9IFsuLi50ZXN0UmVzdWx0c10uc29ydCgoYSwgYikgPT4ge1xyXG4gICAgICAgIGNvbnN0IGFQYXNzID0gYS5yZXN1bHRkYXRhPy5yZXN1bHQgPT09ICdwYXNzJztcclxuICAgICAgICBjb25zdCBiUGFzcyA9IGIucmVzdWx0ZGF0YT8ucmVzdWx0ID09PSAncGFzcyc7XHJcbiAgICAgICAgXHJcbiAgICAgICAgLy8g5aaC5p6c6YCa6L+H54q25oCB55u45ZCM77yM5YiZ5oyJbmFtZeaOkuW6j1xyXG4gICAgICAgIGlmIChhUGFzcyA9PT0gYlBhc3MpIHtcclxuICAgICAgICAgICAgLy8g5bCG5ZCN56ew5YiG5Ymy5oiQ5paH5pys5ZKM5pWw5a2X6YOo5YiGXHJcbiAgICAgICAgICAgIGNvbnN0IHNwbGl0TmFtZSA9IChuYW1lKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBtYXRjaCA9IG5hbWUubWF0Y2goL14oLio/KShcXGQrKSQvKTtcclxuICAgICAgICAgICAgICAgIGlmIChtYXRjaCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ6IG1hdGNoWzFdLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBudW1iZXI6IHBhcnNlSW50KG1hdGNoWzJdLCAxMClcclxuICAgICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgdGV4dDogbmFtZSwgbnVtYmVyOiAwIH07XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBjb25zdCBuYW1lQSA9IHNwbGl0TmFtZShhLm5hbWUpO1xyXG4gICAgICAgICAgICBjb25zdCBuYW1lQiA9IHNwbGl0TmFtZShiLm5hbWUpO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgLy8g5YWI5q+U6L6D5paH5pys6YOo5YiGXHJcbiAgICAgICAgICAgIGlmIChuYW1lQS50ZXh0ICE9PSBuYW1lQi50ZXh0KSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbmFtZUEudGV4dC5sb2NhbGVDb21wYXJlKG5hbWVCLnRleHQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIOaWh+acrOebuOWQjOWImeavlOi+g+aVsOWtl+mDqOWIhlxyXG4gICAgICAgICAgICByZXR1cm4gbmFtZUEubnVtYmVyIC0gbmFtZUIubnVtYmVyO1xyXG4gICAgICAgIH1cclxuICAgICAgICBcclxuICAgICAgICByZXR1cm4gYVBhc3MgPyAxIDogLTE7XHJcbiAgICB9KTtcclxuXHJcbiAgICAvLyDlpITnkIbpgInmi6nnu5PmnpxcclxuICAgIGNvbnN0IGhhbmRsZVNlbGVjdCA9IChyZXN1bHQpID0+IHtcclxuICAgICAgICBzZXRTZWxlY3RlZFJlc3VsdHMocHJldiA9PiB7XHJcbiAgICAgICAgICAgIGlmIChwcmV2LmluY2x1ZGVzKHJlc3VsdC5uYW1lKSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHByZXYuZmlsdGVyKG5hbWUgPT4gbmFtZSAhPT0gcmVzdWx0Lm5hbWUpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIFsuLi5wcmV2LCByZXN1bHQubmFtZV07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH07XHJcblxyXG4gICAgLy8g5aSE55CG5Yig6Zmk6YCJ5Lit55qE57uT5p6cXHJcbiAgICBjb25zdCBoYW5kbGVEZWxldGUgPSAoKSA9PiB7XHJcbiAgICAgICAgaWYgKHNlbGVjdGVkUmVzdWx0cy5sZW5ndGggPT09IDApIHJldHVybjtcclxuICAgICAgICBcclxuICAgICAgICBjb25zdCBuZXdSZXN1bHRzID0gdGVzdFJlc3VsdHMuZmlsdGVyKHJlc3VsdCA9PiAhc2VsZWN0ZWRSZXN1bHRzLmluY2x1ZGVzKHJlc3VsdC5uYW1lKSk7XHJcbiAgICAgICAgY29uc3QgdXBkYXRlZFByb2plY3QgPSB7XHJcbiAgICAgICAgICAgIC4uLmN1cnJlbnRQcm9qZWN0LFxyXG4gICAgICAgICAgICB0ZXN0UmVzdWx0czogbmV3UmVzdWx0c1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgY29uc3QgcHJvamVjdEluZGV4ID0gdXNlRGlzcGxheVN0b3JlLmdldFN0YXRlKCkucHJvamVjdHMuZmluZEluZGV4KHAgPT4gcC5pZCA9PT0gY3VycmVudFByb2plY3QuaWQpO1xyXG4gICAgICAgIHVzZURpc3BsYXlTdG9yZS5nZXRTdGF0ZSgpLnVwZGF0ZVByb2plY3QocHJvamVjdEluZGV4LCB1cGRhdGVkUHJvamVjdCk7XHJcbiAgICAgICAgc2V0U2VsZWN0ZWRSZXN1bHRzKFtdKTtcclxuICAgICAgICBzZXRJc01hbmFnZU1vZGUoZmFsc2UpO1xyXG4gICAgICAgIHNldFNob3dEZWxldGVEaWFsb2coZmFsc2UpO1xyXG5cclxuICAgIH07XHJcblxyXG5cclxuICAgIC8vIOmHjeWRveWQjemAu+i+kVxyXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcclxuICAgICAgICBpZiAodmlldyA9PT0gJ3JlbmFtZScgJiYgc2VsZWN0ZWRSZXN1bHRzLmxlbmd0aCA9PT0gMSkge1xyXG4gICAgICAgICAgICBjb25zdCBzZWxlY3RlZFJlc3VsdCA9IHRlc3RSZXN1bHRzLmZpbmQocmVzdWx0ID0+IHJlc3VsdC5uYW1lID09PSBzZWxlY3RlZFJlc3VsdHNbMF0pO1xyXG4gICAgICAgICAgICBzZXRJbnB1dFZhbHVlKHNlbGVjdGVkUmVzdWx0Lm5hbWUpO1xyXG4gICAgICAgIH1cclxuICAgIH0sIFt2aWV3LCBzZWxlY3RlZFJlc3VsdHMsIHRlc3RSZXN1bHRzXSk7XHJcblxyXG4gICAgLy8g5aSE55CG6YeN5ZG95ZCN5a6M5oiQXHJcbiAgICBjb25zdCBoYW5kbGVSZW5hbWUgPSAoKSA9PiB7XHJcbiAgICAgICAgaWYgKCFpbnB1dFZhbHVlLnRyaW0oKSkgcmV0dXJuO1xyXG4gICAgICAgIFxyXG4gICAgICAgIC8vIOajgOafpeaYr+WQpuS4juWFtuS7lue7k+aenOWQjeensOWGsueqgVxyXG4gICAgICAgIGNvbnN0IGlzRHVwbGljYXRlID0gdGVzdFJlc3VsdHMuc29tZShyZXN1bHQgPT4gXHJcbiAgICAgICAgICAgIHJlc3VsdC5uYW1lICE9PSBzZWxlY3RlZFJlc3VsdHNbMF0gJiYgcmVzdWx0Lm5hbWUgPT09IGlucHV0VmFsdWUudHJpbSgpXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgaWYgKGlzRHVwbGljYXRlKSB7XHJcbiAgICAgICAgICAgIHNldFRvYXN0TWVzc2FnZSgn6K+l5ZCN56ew5bey5a2Y5Zyo77yM6K+35L2/55So5YW25LuW5ZCN56ewJyk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICAgICAgY29uc3QgbmV3UmVzdWx0cyA9IHRlc3RSZXN1bHRzLm1hcChyZXN1bHQgPT4ge1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyh0ZXN0UmVzdWx0cyk7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKHJlc3VsdCk7XHJcblxyXG4gICAgICAgICAgICBpZiAocmVzdWx0Lm5hbWUgPT09IHNlbGVjdGVkUmVzdWx0c1swXSkge1xyXG4gICAgICAgICAgICAgICAgLy8g5aSE55CGQ0ZQ5qih5Z2X57G75Z6L55qE54m55q6K6YeN5ZG95ZCN6YC76L6RXHJcbiAgICAgICAgICAgICAgICBpZiAocmVzdWx0LnRlc3Rjb25maWc/Lm1vZHVsZVR5cGUgPT09ICdjZnAnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2xkTmFtZSA9IHJlc3VsdC5uYW1lO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5ld05hbWUgPSBpbnB1dFZhbHVlLnRyaW0oKTtcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAvLyDliKTmlq3ml6flkI3lrZfmmK9pbnB1dOi/mOaYr291dHB1dFxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChvbGROYW1lID09PSByZXN1bHQuaW5wdXRuYW1lKSB7ICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIOafpeaJvuWFs+iBlOe7k+aenO+8mmlucHV0bmFtZeebuOWQjOS9hm5hbWXkuI3lkIznmoTnu5PmnpxcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVsYXRlZFJlc3VsdCA9IHRlc3RSZXN1bHRzLmZpbmQociA9PiByLmlucHV0bmFtZSA9PT0gcmVzdWx0LmlucHV0bmFtZSAmJiByLm5hbWUgIT09IHJlc3VsdC5uYW1lKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCLmib7liLDnmoTlhbPogZTnu5PmnpzvvJpcIiwgcmVsYXRlZFJlc3VsdCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIOWmguaenOaYr+W9k+WJjemAieS4reeahOe7k+aenO+8jOabtOaWsG5hbWXlkoxpbnB1dG5hbWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5uYW1lID09PSBzZWxlY3RlZFJlc3VsdHNbMF0pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIOabtOaWsOmAieS4ree7k+aenOeahG5hbWXlkoxpbnB1dG5hbWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVwZGF0ZWRSZXN1bHQgPSB7IC4uLnJlc3VsdCwgbmFtZTogbmV3TmFtZSwgaW5wdXRuYW1lOiBuZXdOYW1lIH07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyDmn6Xmib7lubbmm7TmlrDlhbPogZTnu5PmnpznmoRpbnB1dG5hbWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlbGF0ZWRSZXN1bHQgPSB0ZXN0UmVzdWx0cy5maW5kKHIgPT4gci5pbnB1dG5hbWUgPT09IHJlc3VsdC5pbnB1dG5hbWUgJiYgci5uYW1lICE9PSByZXN1bHQubmFtZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVsYXRlZFJlc3VsdCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbGF0ZWRSZXN1bHQuaW5wdXRuYW1lID0gbmV3TmFtZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1cGRhdGVkUmVzdWx0O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAob2xkTmFtZSA9PT0gcmVzdWx0Lm91dG5hbWUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8g5p+l5om+5YWz6IGU57uT5p6c77yab3V0bmFtZeebuOWQjOS9hm5hbWXkuI3lkIznmoTnu5PmnpxcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5uYW1lID09PSBzZWxlY3RlZFJlc3VsdHNbMF0pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG91dG5hbWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVwZGF0ZWRSZXN1bHQgPSB7IC4uLnJlc3VsdCwgbmFtZTogbmV3TmFtZSwgb3V0bmFtZTogbmV3TmFtZSB9O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3V0bmFtZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVsYXRlZFJlc3VsdCA9IHRlc3RSZXN1bHRzLmZpbmQociA9PiByLm91dG5hbWUgPT09IHJlc3VsdC5vdXRuYW1lICYmIHIubmFtZSAhPT0gcmVzdWx0Lm5hbWUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlbGF0ZWRSZXN1bHQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWxhdGVkUmVzdWx0Lm91dG5hbWUgPSBuZXdOYW1lO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHVwZGF0ZWRSZXN1bHQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgLi4ucmVzdWx0LCBuYW1lOiBpbnB1dFZhbHVlLnRyaW0oKSB9O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgXHJcbiAgICAgICAgY29uc3QgdXBkYXRlZFByb2plY3QgPSB7XHJcbiAgICAgICAgICAgIC4uLmN1cnJlbnRQcm9qZWN0LFxyXG4gICAgICAgICAgICB0ZXN0UmVzdWx0czogbmV3UmVzdWx0c1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgXHJcbiAgICAgICAgY29uc3QgcHJvamVjdEluZGV4ID0gdXNlRGlzcGxheVN0b3JlLmdldFN0YXRlKCkucHJvamVjdHMuZmluZEluZGV4KHAgPT4gcC5pZCA9PT0gY3VycmVudFByb2plY3QuaWQpO1xyXG4gICAgICAgIHVzZURpc3BsYXlTdG9yZS5nZXRTdGF0ZSgpLnVwZGF0ZVByb2plY3QocHJvamVjdEluZGV4LCB1cGRhdGVkUHJvamVjdCk7XHJcbiAgICAgICAgdXNlRGlzcGxheVN0b3JlLmdldFN0YXRlKCkubmF2aWdhdGVUbygncmVzdWx0JywgJ21haW4nKTtcclxuICAgICAgICBcclxuICAgICAgICAvLyDph43nva7nrqHnkIbnirbmgIHlkozpgInkuK3nu5PmnpznirbmgIFcclxuICAgICAgICBzZXRJc01hbmFnZU1vZGUoZmFsc2UpO1xyXG4gICAgICAgIHNldFNlbGVjdGVkUmVzdWx0cyhbXSk7XHJcbiAgICAgICAgXHJcbiAgICB9O1xyXG4gICBcclxuICAgIC8v56Gu6K6k5Yig6Zmk5o+Q56S65qGGIFxyXG4gICAgY29uc3QgW3Nob3dEZWxldGVEaWFsb2csIHNldFNob3dEZWxldGVEaWFsb2ddID0gdXNlU3RhdGUoZmFsc2UpO1xyXG4gICAgLy/noa7orqTnp7vliqjmj5DnpLrmoYZcclxuICAgIGNvbnN0IFtzaG93Q29uZmlybURpYWxvZywgc2V0U2hvd0NvbmZpcm1EaWFsb2ddID0gdXNlU3RhdGUoZmFsc2UpO1xyXG4gICAgY29uc3QgW3RhcmdldFByb2plY3QsIHNldFRhcmdldFByb2plY3RdID0gdXNlU3RhdGUobnVsbCk7XHJcbiAgICBjb25zdCBbc2hvd092ZXJ3cml0ZURpYWxvZywgc2V0U2hvd092ZXJ3cml0ZURpYWxvZ10gPSB1c2VTdGF0ZShmYWxzZSk7XHJcbiAgICBjb25zdCBbZHVwbGljYXRlUmVzdWx0cywgc2V0RHVwbGljYXRlUmVzdWx0c10gPSB1c2VTdGF0ZShbXSk7XHJcblxyXG4gICAgY29uc3QgbW92ZVJlc3VsdHMgPSAocHJvamVjdCwgaW5kZXgpID0+IHtcclxuICAgICAgICAvLyDmo4Dmn6XmmK/lkKbpgInmi6nkuobnu5Pmnpzlkoznm67moIfpobnnm65cclxuICAgICAgICBpZiAoc2VsZWN0ZWRSZXN1bHRzLmxlbmd0aCA9PT0gMCB8fCAhcHJvamVjdCkgcmV0dXJuO1xyXG4gICAgICAgIFxyXG4gICAgICAgIC8vIOajgOafpeaYr+WQpuWcqOWQjOS4gOS4qumhueebruS4reenu+WKqFxyXG4gICAgICAgIGlmIChwcm9qZWN0LmlkID09PSBjdXJyZW50UHJvamVjdC5pZCkge1xyXG4gICAgICAgICAgICBzZXRUb2FzdE1lc3NhZ2UoJ+S4jeiDveenu+WKqOWIsOebuOWQjOmhueebricpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyDmo4Dmn6Xnm67moIfpobnnm67kuK3mmK/lkKbmnInph43lkI3nu5PmnpxcclxuICAgICAgICBjb25zdCBkdXBsaWNhdGVzID0gc2VsZWN0ZWRSZXN1bHRzLmZpbHRlcihyZXN1bHROYW1lID0+XHJcbiAgICAgICAgICAgIHByb2plY3QudGVzdFJlc3VsdHMuc29tZSh0YXJnZXRSZXN1bHQgPT4gdGFyZ2V0UmVzdWx0Lm5hbWUgPT09IHJlc3VsdE5hbWUpXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgaWYgKGR1cGxpY2F0ZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICBzZXREdXBsaWNhdGVSZXN1bHRzKGR1cGxpY2F0ZXMpO1xyXG4gICAgICAgICAgICBzZXRUYXJnZXRQcm9qZWN0KHByb2plY3QpO1xyXG4gICAgICAgICAgICBzZXRTaG93T3ZlcndyaXRlRGlhbG9nKHRydWUpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHNldFRhcmdldFByb2plY3QocHJvamVjdCk7XHJcbiAgICAgICAgICAgIHNldFNob3dDb25maXJtRGlhbG9nKHRydWUpO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgaGFuZGxlTW92ZSA9IChvdmVyd3JpdGUgPSBmYWxzZSkgPT4ge1xyXG4gICAgICAgIGlmICghdGFyZ2V0UHJvamVjdCkgcmV0dXJuO1xyXG5cclxuICAgICAgICAvLyDojrflj5bopoHnp7vliqjnmoTnu5Pmnpzlr7nosaFcclxuICAgICAgICBjb25zdCByZXN1bHRzVG9Nb3ZlID0gdGVzdFJlc3VsdHMuZmlsdGVyKHJlc3VsdCA9PiBzZWxlY3RlZFJlc3VsdHMuaW5jbHVkZXMocmVzdWx0Lm5hbWUpKTtcclxuXHJcbiAgICAgICAgLy8g5pu05paw55uu5qCH6aG555uuXHJcbiAgICAgICAgY29uc3QgdXBkYXRlZFRhcmdldFJlc3VsdHMgPSBvdmVyd3JpdGVcclxuICAgICAgICAgICAgPyBbLi4udGFyZ2V0UHJvamVjdC50ZXN0UmVzdWx0cy5maWx0ZXIocmVzdWx0ID0+ICFzZWxlY3RlZFJlc3VsdHMuaW5jbHVkZXMocmVzdWx0Lm5hbWUpKSwgLi4ucmVzdWx0c1RvTW92ZV1cclxuICAgICAgICAgICAgOiBbLi4udGFyZ2V0UHJvamVjdC50ZXN0UmVzdWx0cywgLi4ucmVzdWx0c1RvTW92ZV07XHJcblxyXG4gICAgICAgIGNvbnN0IHVwZGF0ZWRUYXJnZXRQcm9qZWN0ID0ge1xyXG4gICAgICAgICAgICAuLi50YXJnZXRQcm9qZWN0LFxyXG4gICAgICAgICAgICB0ZXN0UmVzdWx0czogdXBkYXRlZFRhcmdldFJlc3VsdHNcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICAvLyDmm7TmlrDlvZPliY3pobnnm65cclxuICAgICAgICBjb25zdCB1cGRhdGVkQ3VycmVudFJlc3VsdHMgPSB0ZXN0UmVzdWx0cy5maWx0ZXIocmVzdWx0ID0+ICFzZWxlY3RlZFJlc3VsdHMuaW5jbHVkZXMocmVzdWx0Lm5hbWUpKTtcclxuICAgICAgICBjb25zdCB1cGRhdGVkQ3VycmVudFByb2plY3QgPSB7XHJcbiAgICAgICAgICAgIC4uLmN1cnJlbnRQcm9qZWN0LFxyXG4gICAgICAgICAgICB0ZXN0UmVzdWx0czogdXBkYXRlZEN1cnJlbnRSZXN1bHRzXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgLy8g5L+d5a2Y5pu05pS5XHJcbiAgICAgICAgY29uc3QgdGFyZ2V0SW5kZXggPSB1c2VEaXNwbGF5U3RvcmUuZ2V0U3RhdGUoKS5wcm9qZWN0cy5maW5kSW5kZXgocCA9PiBwLmlkID09PSB0YXJnZXRQcm9qZWN0LmlkKTtcclxuICAgICAgICBjb25zdCBjdXJyZW50SW5kZXggPSB1c2VEaXNwbGF5U3RvcmUuZ2V0U3RhdGUoKS5wcm9qZWN0cy5maW5kSW5kZXgocCA9PiBwLmlkID09PSBjdXJyZW50UHJvamVjdC5pZCk7XHJcbiAgICAgICAgXHJcbiAgICAgICAgdXNlRGlzcGxheVN0b3JlLmdldFN0YXRlKCkudXBkYXRlUHJvamVjdCh0YXJnZXRJbmRleCwgdXBkYXRlZFRhcmdldFByb2plY3QpO1xyXG4gICAgICAgIHVzZURpc3BsYXlTdG9yZS5nZXRTdGF0ZSgpLnVwZGF0ZVByb2plY3QoY3VycmVudEluZGV4LCB1cGRhdGVkQ3VycmVudFByb2plY3QpO1xyXG5cclxuICAgICAgICAvLyDph43nva7nirbmgIFcclxuICAgICAgICBzZXRTZWxlY3RlZFJlc3VsdHMoW10pO1xyXG4gICAgICAgIHNldElzTWFuYWdlTW9kZShmYWxzZSk7XHJcbiAgICAgICAgc2V0U2hvd0NvbmZpcm1EaWFsb2coZmFsc2UpO1xyXG4gICAgICAgIHNldFNob3dPdmVyd3JpdGVEaWFsb2coZmFsc2UpO1xyXG4gICAgICAgIHNldFRhcmdldFByb2plY3QobnVsbCk7XHJcbiAgICAgICAgc2V0RHVwbGljYXRlUmVzdWx0cyhbXSk7XHJcblxyXG4gICAgICAgIC8vIOaYvuekuuaIkOWKn+a2iOaBr+W5tui/lOWbnuS4u+inhuWbvlxyXG4gICAgICAgIHNldFRvYXN0TWVzc2FnZSgn56e75Yqo5oiQ5YqfJyk7XHJcbiAgICAgICAgdXNlRGlzcGxheVN0b3JlLmdldFN0YXRlKCkubmF2aWdhdGVUbygncmVzdWx0JywgJ21haW4nKTtcclxuICAgIH07XHJcblxyXG4gICAgLy8g5riy5p+T5qCH6aKY5qCPXHJcbiAgICBjb25zdCByZW5kZXJUaXRsZUJhciA9ICgpID0+IHtcclxuICAgICAgICBjb25zdCB7IHZpZXcgfSA9IHVzZURpc3BsYXlTdG9yZS5nZXRTdGF0ZSgpLm5hdmlnYXRpb24uY3VycmVudDtcclxuICAgICAgICBcclxuICAgICAgICBzd2l0Y2ggKHZpZXcpIHtcclxuICAgICAgICAgICAgY2FzZSAncmVuYW1lJzpcclxuICAgICAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICAgICAgPFRpdGxlQmFyIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT1cIumHjeWRveWQjee7k+aenFwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBiYWNrVG89e3VzZURpc3BsYXlTdG9yZS5nZXRTdGF0ZSgpLm5hdmlnYXRpb24ucHJldmlvdXM/Lm5hbWUgfHwgJ2hvbWUnfSBcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmlldz17dXNlRGlzcGxheVN0b3JlLmdldFN0YXRlKCkubmF2aWdhdGlvbi5wcmV2aW91cz8udmlldyB8fCAnbWFpbid9IFxyXG4gICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICBjYXNlICdtb3ZlJzpcclxuICAgICAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICAgICAgPFRpdGxlQmFyIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT1cIuenu+iHs1wiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBiYWNrVG89e3VzZURpc3BsYXlTdG9yZS5nZXRTdGF0ZSgpLm5hdmlnYXRpb24ucHJldmlvdXM/Lm5hbWUgfHwgJ2hvbWUnfSBcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmlldz17dXNlRGlzcGxheVN0b3JlLmdldFN0YXRlKCkubmF2aWdhdGlvbi5wcmV2aW91cz8udmlldyB8fCAnbWFpbid9IFxyXG4gICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICBjYXNlICdtYWluJzpcclxuICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICAgICAgPFRpdGxlQmFyIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT1cIue7k+aenFwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBiYWNrVG89eydob21lJ30gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZpZXc9eydtYWluJ30gXHJcbiAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICAvLyDmuLLmn5PkuLvopoHlhoXlrrlcclxuICAgIGNvbnN0IHJlbmRlckNvbnRlbnQgPSAoKSA9PiB7XHJcbiAgICAgICAgY29uc3QgeyB2aWV3IH0gPSB1c2VEaXNwbGF5U3RvcmUuZ2V0U3RhdGUoKS5uYXZpZ2F0aW9uLmN1cnJlbnQ7XHJcbiAgICAgICAgXHJcbiAgICAgICAgc3dpdGNoICh2aWV3KSB7XHJcbiAgICAgICAgICAgIGNhc2UgJ3JlbmFtZSc6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleC0xIGJnLVsjRDVERkVCXSBwLTQgZmxleCBmbGV4LWNvbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwicmVsYXRpdmUgbWItNCBjdXJzb3ItcG9pbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRTaG93S2V5Ym9hcmQodHJ1ZSl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidy1mdWxsIGgtWzUwcHhdIGJnLVsjZmZmZmUxXSByb3VuZGVkLXNtIHAtNCB0ZXh0LWJsYWNrXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17aW5wdXRWYWx1ZX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIuivt+i+k+WFpea1i+ivlee7k+aenOWQjeensFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldElucHV0VmFsdWUoZS50YXJnZXQudmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRDdXJzb3JQb3NpdGlvbihlLnRhcmdldC5zZWxlY3Rpb25TdGFydCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTaG93S2V5Ym9hcmQodHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEN1cnNvclBvc2l0aW9uKGUudGFyZ2V0LnNlbGVjdGlvblN0YXJ0KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uRm9jdXM9eyhlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGN1cnNvclBvc2l0aW9uID0gZS50YXJnZXQuc2VsZWN0aW9uU3RhcnQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUudGFyZ2V0LnNldFNlbGVjdGlvblJhbmdlKGN1cnNvclBvc2l0aW9uLCBjdXJzb3JQb3NpdGlvbik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7c2hvd0tleWJvYXJkICYmIChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxLZXlib2FyZCBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17aW5wdXRWYWx1ZX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJzb3JQb3NpdGlvbj17Y3Vyc29yUG9zaXRpb259XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhuZXdWYWx1ZSwgbmV3UG9zaXRpb24pID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0SW5wdXRWYWx1ZShuZXdWYWx1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEN1cnNvclBvc2l0aW9uKG5ld1Bvc2l0aW9uKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ29tcGxldGU9eygpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U2hvd0tleWJvYXJkKGZhbHNlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIGNhc2UgJ21vdmUnOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXgtMSBiZy1bI0Q1REZFQl0gZmxleCBmbGV4LWNvbCByZWxhdGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8U3ViVGl0bGVCYXIgdGl0bGU9XCLpgInmi6nmgqjopoHnmoTpobnnm65cIiAvPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJzcGFjZS15LTIgcC00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7dXNlRGlzcGxheVN0b3JlLmdldFN0YXRlKCkucHJvamVjdHMubWFwKChwcm9qZWN0LCBpbmRleCkgPT4gKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17cHJvamVjdC5pZH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiaC1bNTBweF0gYmctWyNGOEY2Rjddcm91bmRlZC1zbSBwLTQgc2hhZG93LWxnIGZsZXgganVzdGlmeS1iZXR3ZWVuIGl0ZW1zLWNlbnRlciBjdXJzb3ItcG9pbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vdmVSZXN1bHRzKHByb2plY3QsIGluZGV4KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1ibGFjayB0ZXh0LXNtXCI+e3Byb2plY3QubmFtZX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LTMgaC0zIHJlbGF0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SW1hZ2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9e2dldEFzc2V0VXJsKCcvYXJyb3cucG5nJyl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0PVwi566t5aS0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwib2JqZWN0LWNvbnRhaW5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICApO1xyXG5cclxuICAgICAgICAgICAgY2FzZSAnbWFpbic6XHJcbiAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgICAgIDw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaC1bNjBweF0gYmctZ3JhZGllbnQtdG8tYiBmcm9tLVsjZDVkZmViXSB2aWEtWyNmOGY2ZjddIHRvLVsjZDVkZmViXSBweC00IGZsZXggZmxleC1jb2wganVzdGlmeS1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1ibGFja1wiPntwcm9qZWN0TmFtZX08L2Rpdj5cclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGdhcC00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LWdyZWVuLTUwMFwiPntwYXNzQ291bnR9PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctMyBoLTMgcmVsYXRpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJbWFnZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz17Z2V0QXNzZXRVcmwoJy9wYXNzLnBuZycpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdD1cIumAmui/h1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZXM9e1wiYXV0b1wifVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJvYmplY3QtY29udGFpblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGdhcC0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtcmVkLTUwMFwiPntmYWlsQ291bnR9PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctMyBoLTMgcmVsYXRpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJbWFnZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz17Z2V0QXNzZXRVcmwoJy9mYWlsLnBuZycpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdD1cIuWksei0pVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZXM9e1wiYXV0b1wifVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJvYmplY3QtY29udGFpblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge2lzTWFuYWdlTW9kZSAmJiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJoLVs0MHB4XSBweC00IGJnLVsjRjhGNkY3XSBmbGV4IGl0ZW1zLWNlbnRlciBib3JkZXItYiBib3JkZXItZ3JheS02MDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja2VkPXtzZWxlY3RlZFJlc3VsdHMubGVuZ3RoID09PSBzb3J0ZWRSZXN1bHRzLmxlbmd0aH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2VsZWN0ZWRSZXN1bHRzLmxlbmd0aCA9PT0gc29ydGVkUmVzdWx0cy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFNlbGVjdGVkUmVzdWx0cyhbXSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTZWxlY3RlZFJlc3VsdHMoc29ydGVkUmVzdWx0cy5tYXAocmVzdWx0ID0+IHJlc3VsdC5uYW1lKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInctNCBoLTRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtYmxhY2tcIj7pgInmi6nlhajpg6g8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4LTEgYmctWyNENURGRUJdIG92ZXJmbG93LXktYXV0b1wiIHN0eWxlPXt7IHNjcm9sbGJhcldpZHRoOiAnbm9uZScsIG1zT3ZlcmZsb3dTdHlsZTogJ25vbmUnIH19PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJzcGFjZS15LTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7c29ydGVkUmVzdWx0cy5tYXAoKHJlc3VsdCwgaW5kZXgpID0+IChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17aW5kZXh9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJoLVs2MHB4XSBweC00IGJnLVsjRjhGNkY3XSBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gYm9yZGVyLWIgYm9yZGVyLWdyYXktNjAwIGN1cnNvci1wb2ludGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+ICFpc01hbmFnZU1vZGUgJiYgdXNlRGlzcGxheVN0b3JlLmdldFN0YXRlKCkubmF2aWdhdGVUbygncmVzdWx0aW5mbycsICdzYXZlJywgcmVzdWx0KX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtpc01hbmFnZU1vZGUgJiYgKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja2VkPXtzZWxlY3RlZFJlc3VsdHMuaW5jbHVkZXMocmVzdWx0Lm5hbWUpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eygpID0+IGhhbmRsZVNlbGVjdChyZXN1bHQpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidy00IGgtNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LWJsYWNrXCI+e3Jlc3VsdC5uYW1lfTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQuQ29wcGVyUmVzdWx0U3RhdHVzID09PSAncGFzcycgfHwgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5vZnBSZXN1bHRTdGF0dXMgPT09ICdwYXNzJyB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVzdWx0Lm5hbWUgPT09IHJlc3VsdC5pbnB1dG5hbWUgJiYgcmVzdWx0LkluUG9ydFN0YXR1cyA9PT0gJ3Bhc3MnKSB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVzdWx0Lm5hbWUgPT09IHJlc3VsdC5vdXRuYW1lICYmIHJlc3VsdC5PdXRQb3J0U3RhdHVzID09PSAncGFzcycpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gZ2V0QXNzZXRVcmwoJy9wYXNzLnBuZycpIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGdldEFzc2V0VXJsKCcvZmFpbC5wbmcnKSAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdD17XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5Db3BwZXJSZXN1bHRTdGF0dXMgPT09ICdwYXNzJyB8fCBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0Lm9mcFJlc3VsdFN0YXR1cyA9PT0gJ3Bhc3MnIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZXN1bHQubmFtZSA9PT0gcmVzdWx0LmlucHV0bmFtZSAmJiByZXN1bHQuSW5Qb3J0U3RhdHVzID09PSAncGFzcycpIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZXN1bHQubmFtZSA9PT0gcmVzdWx0Lm91dG5hbWUgJiYgcmVzdWx0Lk91dFBvcnRTdGF0dXMgPT09ICdwYXNzJylcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAn6YCa6L+HJyBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAn5aSx6LSlJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ3LTcgaC03XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvPlxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG5cclxuICAgIC8vIOa4suafk+W6lemDqOaMiemSrlxyXG4gICAgY29uc3QgcmVuZGVyRm9vdGVyID0gKCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHsgdmlldyB9ID0gdXNlRGlzcGxheVN0b3JlLmdldFN0YXRlKCkubmF2aWdhdGlvbi5jdXJyZW50O1xyXG4gICAgICAgIFxyXG4gICAgICAgIHN3aXRjaCAodmlldykge1xyXG4gICAgICAgICAgICBjYXNlICdyZW5hbWUnOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImgtWzYwcHhdIGJnLVsjMTMyODQzXSBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWVuZCBweC04XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHshc2hvd0tleWJvYXJkICYmIChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17aGFuZGxlUmVuYW1lfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInctWzEwMHB4XSBoLVs0MHB4XSAgcm91bmRlZC1zbSBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciB0ZXh0LXdoaXRlIGZvbnQtYm9sZCBzaGFkb3ctbGdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIOWujOaIkFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICBjYXNlICdtb3ZlJzpcclxuICAgICAgICAgICAgICAgIHJldHVybihcclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImgtWzYwcHhdIGJnLVsjMTMyODQzXSBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gcHgtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBjYXNlICdtYWluJzpcclxuICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJoLVs2MHB4XSBiZy1bIzEzMjg0M10gZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIHB4LTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4LTFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidy1bMTAwcHhdIGgtWzQwcHhdICByb3VuZGVkLXNtIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHRleHQtd2hpdGUgZm9udC1ib2xkIHNoYWRvdy1sZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2VsZWN0ZWRSZXN1bHRzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZURpc3BsYXlTdG9yZS5nZXRTdGF0ZSgpLm5hdmlnYXRlVG8oJ3Jlc3VsdCcsICdtb3ZlJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtzZWxlY3RlZFJlc3VsdHMubGVuZ3RoID09PSAwfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7IG9wYWNpdHk6IHNlbGVjdGVkUmVzdWx0cy5sZW5ndGggPiAwID8gMSA6IDAuNSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIOenu+WKqFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4LTEgZmxleCBqdXN0aWZ5LWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidy1bMTAwcHhdIGgtWzQwcHhdICByb3VuZGVkLXNtIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHRleHQtd2hpdGUgZm9udC1ib2xkIHNoYWRvdy1sZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNlbGVjdGVkUmVzdWx0cy5sZW5ndGggPT09IDEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRSZXN1bHQgPSB0ZXN0UmVzdWx0cy5maW5kKHJlc3VsdCA9PiByZXN1bHQubmFtZSA9PT0gc2VsZWN0ZWRSZXN1bHRzWzBdKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlRGlzcGxheVN0b3JlLmdldFN0YXRlKCkubmF2aWdhdGVUbygncmVzdWx0JywgJ3JlbmFtZScsIHNlbGVjdGVkUmVzdWx0KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e3NlbGVjdGVkUmVzdWx0cy5sZW5ndGggIT09IDF9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17eyBvcGFjaXR5OiBzZWxlY3RlZFJlc3VsdHMubGVuZ3RoID09PSAxID8gMSA6IDAuNSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICDph43lkb3lkI1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXgtMSBmbGV4IGp1c3RpZnktZW5kXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ3LVsxMDBweF0gaC1bNDBweF0gIHJvdW5kZWQtc20gZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgdGV4dC13aGl0ZSBmb250LWJvbGQgc2hhZG93LWxnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IGlzTWFuYWdlTW9kZSA/IHNldFNob3dEZWxldGVEaWFsb2codHJ1ZSkgOiBzZXRJc01hbmFnZU1vZGUodHJ1ZSl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtpc01hbmFnZU1vZGUgPyAn5Yig6ZmkJyA6ICfnrqHnkIYnfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgcmV0dXJuIChcclxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctZnVsbCBoLWZ1bGwgZmxleCBmbGV4LWNvbCBvdmVyZmxvdy1oaWRkZW5cIj5cclxuICAgICAgICAgICAgPFN0YXR1c0JhciAvPlxyXG4gICAgICAgICAgICB7cmVuZGVyVGl0bGVCYXIoKX1cclxuICAgICAgICAgICAge3JlbmRlckNvbnRlbnQoKX1cclxuICAgICAgICAgICAge3JlbmRlckZvb3RlcigpfVxyXG4gICAgICAgICAgICB7Lyog56Gu6K6k5Yig6Zmk5a+56K+d5qGGICovfVxyXG4gICAgICAgICAgICB7c2hvd0RlbGV0ZURpYWxvZyAmJiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctWzQ4MHB4XSBoLVs2NDBweF0gYmctWyMwMDI4NDJkNF0gYWJzb2x1dGUgei05OTk5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT0ncGwtMTAgcHQtNjAnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJnLVsjMkIzQzVCXSByb3VuZGVkLWxnIHAtNiB3LVs0MDBweF0gbWluLWgtWzIwMHB4XSBmbGV4IGZsZXgtY29sXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMyBjbGFzc05hbWU9XCJ0ZXh0LXdoaXRlIHRleHQteGwgZm9udC1ib2xkIG1iLTRcIj7mj5DnpLo8L2gzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXgtMSBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtd2hpdGUgdGV4dC1sZ1wiPuaYr+WQpuWIoOmZpOmAieS4reeahOa1i+ivlee7k+aenO+8nzwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGp1c3RpZnktY2VudGVyIG10LTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXgganVzdGlmeS1jZW50ZXIgZ2FwLTEwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInRleHQtd2hpdGUgdGV4dC1zIGZvbnQtYm9sZCBweC00IHB5LTIgYmctWyMxZDMxNTVdIHJvdW5kZWQtbWQgaG92ZXI6YmctWyMyYjQ0NjZdXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldFNob3dEZWxldGVEaWFsb2coZmFsc2UpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDlj5bmtohcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInRleHQtd2hpdGUgdGV4dC1zIGZvbnQtYm9sZCBweC00IHB5LTIgYmctWyMxZDMxNTVdIHJvdW5kZWQtbWQgaG92ZXI6YmctWyMyYjQ0NjZdXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IGhhbmRsZURlbGV0ZSgpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDnoa7orqRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgIHsvKiDnoa7orqTnp7vliqjlr7nor53moYYgKi99XHJcbiAgICAgICAgICAgIHtzaG93Q29uZmlybURpYWxvZyAmJiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctWzQ4MHB4XSBoLVs2NDBweF0gYmctWyMwMDI4NDJkNF0gYWJzb2x1dGUgei05OTk5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT0ncGwtMTAgcHQtNjAnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJnLVsjMkIzQzVCXSByb3VuZGVkLWxnIHAtNiB3LVs0MDBweF0gbWluLWgtWzIwMHB4XSBmbGV4IGZsZXgtY29sXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMyBjbGFzc05hbWU9XCJ0ZXh0LXdoaXRlIHRleHQteGwgZm9udC1ib2xkIG1iLTRcIj7mj5DnpLo8L2gzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXgtMSBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtd2hpdGUgdGV4dC1sZ1wiPuaYr+WQpuWwhumAieS4reeahOa1i+ivlee7k+aenOenu+WKqOWIsOmhueebriB7dGFyZ2V0UHJvamVjdD8ubmFtZX3vvJ88L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBqdXN0aWZ5LWNlbnRlciBtdC00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGp1c3RpZnktY2VudGVyIGdhcC0xMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCIgdGV4dC13aGl0ZSB0ZXh0LXMgZm9udC1ib2xkIHB4LTQgcHktMiBiZy1bIzFkMzE1NV0gcm91bmRlZC1tZCBob3ZlcjpiZy1bIzJiNDQ2Nl1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gc2V0U2hvd0NvbmZpcm1EaWFsb2coZmFsc2UpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDlj5bmtohcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cIiB0ZXh0LXdoaXRlIHRleHQtcyBmb250LWJvbGQgcHgtNCBweS0yIGJnLVsjMWQzMTU1XSByb3VuZGVkLW1kIGhvdmVyOmJnLVsjMmI0NDY2XVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBoYW5kbGVNb3ZlKGZhbHNlKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg56Gu6K6kXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgey8qIOmHjeWQjeimhuebluehruiupOWvueivneahhiAqL31cclxuICAgICAgICAgICAge3Nob3dPdmVyd3JpdGVEaWFsb2cgJiYgKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LVs0ODBweF0gaC1bNjQwcHhdIGJnLVsjMDAyODQyZDRdIGFic29sdXRlIHotOTk5OVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9J3BsLTEwIHB0LTYwJz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJiZy1bIzJCM0M1Ql0gcm91bmRlZC1sZyBwLTYgdy1bNDAwcHhdIG1pbi1oLVsyMDBweF0gZmxleCBmbGV4LWNvbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDMgY2xhc3NOYW1lPVwidGV4dC13aGl0ZSB0ZXh0LXhsIGZvbnQtYm9sZCBtYi00XCI+5o+Q56S6PC9oMz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4LTEgZmxleCBmbGV4LWNvbCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LXdoaXRlIHRleHQtbGcgbWItNFwiPuS7peS4i+a1i+ivlee7k+aenOWcqOebruagh+mhueebruS4reW3suWtmOWcqO+8mjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3NOYW1lPVwibWItNCBsaXN0LWRpc2MgcGwtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2R1cGxpY2F0ZVJlc3VsdHMubWFwKChuYW1lLCBpbmRleCkgPT4gKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBrZXk9e2luZGV4fSBjbGFzc05hbWU9XCJ0ZXh0LXJlZC01MDBcIj57bmFtZX08L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC13aGl0ZSB0ZXh0LWxnXCI+5piv5ZCm6KaG55uW6L+Z5Lqb57uT5p6c77yfPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXgganVzdGlmeS1jZW50ZXIgbXQtNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXgganVzdGlmeS1jZW50ZXIgZ2FwLTEwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidGV4dC13aGl0ZSB0ZXh0LXMgZm9udC1ib2xkIHB4LTQgcHktMiBiZy1bIzFkMzE1NV0gcm91bmRlZC1tZCBob3ZlcjpiZy1bIzJiNDQ2Nl1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U2hvd092ZXJ3cml0ZURpYWxvZyhmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRhcmdldFByb2plY3QobnVsbCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldER1cGxpY2F0ZVJlc3VsdHMoW10pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg5Y+W5raIXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ0ZXh0LXdoaXRlIHRleHQtcyBmb250LWJvbGQgcHgtNCBweS0yIGJnLVsjMWQzMTU1XSByb3VuZGVkLW1kIGhvdmVyOmJnLVsjMmI0NDY2XVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gaGFuZGxlTW92ZSh0cnVlKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDopobnm5ZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgKX1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICk7XHJcbn1cclxuICAgIl0sIm5hbWVzIjpbIlJlYWN0IiwidXNlU3RhdGUiLCJ1c2VFZmZlY3QiLCJJbWFnZSIsIlN0YXR1c0JhciIsIlRpdGxlQmFyIiwiU3ViVGl0bGVCYXIiLCJ1c2VEaXNwbGF5U3RvcmUiLCJLZXlib2FyZCIsImdldEFzc2V0VXJsIiwiUmVzdWx0IiwidmlldyIsImdldFN0YXRlIiwibmF2aWdhdGlvbiIsImN1cnJlbnQiLCJnZXRDdXJyZW50UHJvamVjdCIsInNldFRvYXN0TWVzc2FnZSIsImN1cnJlbnRQcm9qZWN0IiwiaXNNYW5hZ2VNb2RlIiwic2V0SXNNYW5hZ2VNb2RlIiwic2VsZWN0ZWRSZXN1bHRzIiwic2V0U2VsZWN0ZWRSZXN1bHRzIiwiaW5wdXRWYWx1ZSIsInNldElucHV0VmFsdWUiLCJzaG93S2V5Ym9hcmQiLCJzZXRTaG93S2V5Ym9hcmQiLCJjdXJzb3JQb3NpdGlvbiIsInNldEN1cnNvclBvc2l0aW9uIiwicHJvamVjdE5hbWUiLCJuYW1lIiwidGVzdFJlc3VsdHMiLCJwYXNzQ291bnQiLCJmaWx0ZXIiLCJyZXN1bHQiLCJjb3BwZXJTdGF0dXMiLCJDb3BwZXJSZXN1bHRTdGF0dXMiLCJjZnBTdGF0dXMiLCJDRlBSZXN1bHRTdGF0dXMiLCJvZnBTdGF0dXMiLCJvZnBSZXN1bHRTdGF0dXMiLCJsZW5ndGgiLCJmYWlsQ291bnQiLCJzb3J0ZWRSZXN1bHRzIiwic29ydCIsImEiLCJiIiwiYVBhc3MiLCJyZXN1bHRkYXRhIiwiYlBhc3MiLCJzcGxpdE5hbWUiLCJtYXRjaCIsInRleHQiLCJudW1iZXIiLCJwYXJzZUludCIsIm5hbWVBIiwibmFtZUIiLCJsb2NhbGVDb21wYXJlIiwiaGFuZGxlU2VsZWN0IiwicHJldiIsImluY2x1ZGVzIiwiaGFuZGxlRGVsZXRlIiwibmV3UmVzdWx0cyIsInVwZGF0ZWRQcm9qZWN0IiwicHJvamVjdEluZGV4IiwicHJvamVjdHMiLCJmaW5kSW5kZXgiLCJwIiwiaWQiLCJ1cGRhdGVQcm9qZWN0Iiwic2V0U2hvd0RlbGV0ZURpYWxvZyIsInNlbGVjdGVkUmVzdWx0IiwiZmluZCIsImhhbmRsZVJlbmFtZSIsInRyaW0iLCJpc0R1cGxpY2F0ZSIsInNvbWUiLCJtYXAiLCJjb25zb2xlIiwibG9nIiwidGVzdGNvbmZpZyIsIm1vZHVsZVR5cGUiLCJvbGROYW1lIiwibmV3TmFtZSIsImlucHV0bmFtZSIsInJlbGF0ZWRSZXN1bHQiLCJyIiwidXBkYXRlZFJlc3VsdCIsIm91dG5hbWUiLCJuYXZpZ2F0ZVRvIiwic2hvd0RlbGV0ZURpYWxvZyIsInNob3dDb25maXJtRGlhbG9nIiwic2V0U2hvd0NvbmZpcm1EaWFsb2ciLCJ0YXJnZXRQcm9qZWN0Iiwic2V0VGFyZ2V0UHJvamVjdCIsInNob3dPdmVyd3JpdGVEaWFsb2ciLCJzZXRTaG93T3ZlcndyaXRlRGlhbG9nIiwiZHVwbGljYXRlUmVzdWx0cyIsInNldER1cGxpY2F0ZVJlc3VsdHMiLCJtb3ZlUmVzdWx0cyIsInByb2plY3QiLCJpbmRleCIsImR1cGxpY2F0ZXMiLCJyZXN1bHROYW1lIiwidGFyZ2V0UmVzdWx0IiwiaGFuZGxlTW92ZSIsIm92ZXJ3cml0ZSIsInJlc3VsdHNUb01vdmUiLCJ1cGRhdGVkVGFyZ2V0UmVzdWx0cyIsInVwZGF0ZWRUYXJnZXRQcm9qZWN0IiwidXBkYXRlZEN1cnJlbnRSZXN1bHRzIiwidXBkYXRlZEN1cnJlbnRQcm9qZWN0IiwidGFyZ2V0SW5kZXgiLCJjdXJyZW50SW5kZXgiLCJyZW5kZXJUaXRsZUJhciIsInRpdGxlIiwiYmFja1RvIiwicHJldmlvdXMiLCJyZW5kZXJDb250ZW50IiwiZGl2IiwiY2xhc3NOYW1lIiwib25DbGljayIsImlucHV0IiwidHlwZSIsInZhbHVlIiwicGxhY2Vob2xkZXIiLCJvbkNoYW5nZSIsImUiLCJ0YXJnZXQiLCJzZWxlY3Rpb25TdGFydCIsIm9uRm9jdXMiLCJzZXRTZWxlY3Rpb25SYW5nZSIsIm5ld1ZhbHVlIiwibmV3UG9zaXRpb24iLCJvbkNvbXBsZXRlIiwic3JjIiwiYWx0IiwiZmlsbCIsInNwYW4iLCJzaXplcyIsImNoZWNrZWQiLCJzdHlsZSIsInNjcm9sbGJhcldpZHRoIiwibXNPdmVyZmxvd1N0eWxlIiwiaW1nIiwiSW5Qb3J0U3RhdHVzIiwiT3V0UG9ydFN0YXR1cyIsInJlbmRlckZvb3RlciIsImJ1dHRvbiIsImRpc2FibGVkIiwib3BhY2l0eSIsImgzIiwidWwiLCJsaSJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(pages-dir-node)/./src/components/dsxpage/general/Result.js\n"); /***/ }), /***/ "(pages-dir-node)/./src/components/dsxpage/general/ResultInfo.js": /*!******************************************************!*\ !*** ./src/components/dsxpage/general/ResultInfo.js ***! \******************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; eval("__webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ ResultInfo)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"react/jsx-dev-runtime\");\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 */ \"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _components_lib_StatusBar__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/components/lib//StatusBar */ \"(pages-dir-node)/./src/components/lib/StatusBar.js\");\n/* harmony import */ var _components_lib_ResultTitleBar__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/components/lib//ResultTitleBar */ \"(pages-dir-node)/./src/components/lib/ResultTitleBar.js\");\n/* harmony import */ var _components_lib_TitleBar__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/components/lib//TitleBar */ \"(pages-dir-node)/./src/components/lib/TitleBar.js\");\n/* harmony import */ var _components_lib_CopperResultMain__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/components/lib//CopperResultMain */ \"(pages-dir-node)/./src/components/lib/CopperResultMain.js\");\n/* harmony import */ var _components_lib_OLTSResultMain__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @/components/lib//OLTSResultMain */ \"(pages-dir-node)/./src/components/lib/OLTSResultMain.js\");\n/* harmony import */ var _components_lib_OTDRResultMain__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @/components/lib//OTDRResultMain */ \"(pages-dir-node)/./src/components/lib/OTDRResultMain.js\");\n/* harmony import */ var _components_lib_Keyboard__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @/components/lib//Keyboard */ \"(pages-dir-node)/./src/components/lib/Keyboard.js\");\n/* harmony import */ var _store_displayStore__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @/store/displayStore */ \"(pages-dir-node)/./src/store/displayStore.js\");\n/* harmony import */ var _utils_asset__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @/utils/asset */ \"(pages-dir-node)/./src/utils/asset.js\");\n/* harmony import */ var _components_AudioProvider__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @/components/AudioProvider */ \"(pages-dir-node)/./src/components/AudioProvider.js\");\nvar __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_components_lib_StatusBar__WEBPACK_IMPORTED_MODULE_2__, _components_lib_ResultTitleBar__WEBPACK_IMPORTED_MODULE_3__, _components_lib_TitleBar__WEBPACK_IMPORTED_MODULE_4__, _components_lib_CopperResultMain__WEBPACK_IMPORTED_MODULE_5__, _components_lib_OLTSResultMain__WEBPACK_IMPORTED_MODULE_6__, _components_lib_OTDRResultMain__WEBPACK_IMPORTED_MODULE_7__, _components_lib_Keyboard__WEBPACK_IMPORTED_MODULE_8__, _store_displayStore__WEBPACK_IMPORTED_MODULE_9__, _utils_asset__WEBPACK_IMPORTED_MODULE_10__, _components_AudioProvider__WEBPACK_IMPORTED_MODULE_11__]);\n([_components_lib_StatusBar__WEBPACK_IMPORTED_MODULE_2__, _components_lib_ResultTitleBar__WEBPACK_IMPORTED_MODULE_3__, _components_lib_TitleBar__WEBPACK_IMPORTED_MODULE_4__, _components_lib_CopperResultMain__WEBPACK_IMPORTED_MODULE_5__, _components_lib_OLTSResultMain__WEBPACK_IMPORTED_MODULE_6__, _components_lib_OTDRResultMain__WEBPACK_IMPORTED_MODULE_7__, _components_lib_Keyboard__WEBPACK_IMPORTED_MODULE_8__, _store_displayStore__WEBPACK_IMPORTED_MODULE_9__, _utils_asset__WEBPACK_IMPORTED_MODULE_10__, _components_AudioProvider__WEBPACK_IMPORTED_MODULE_11__] = __webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__);\n\n\n\n\n\n\n\n\n\n\n\n\n// 自定义确认弹窗组件\nconst ConfirmDialog = ({ message, onConfirm, onCancel })=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-[480px] h-[640px] bg-[#002842d4] absolute z-[9999] top-1/2 left-1/2 transform -translate-x-1/2 -translate-y-1/2\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"pl-10 pt-60\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-[#2B3C5B] rounded-lg p-6 w-[400px] min-h-[200px] flex flex-col\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h3\", {\n className: \"text-white text-xl font-bold mb-4\",\n children: \"提示\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/ResultInfo.js\",\n lineNumber: 18,\n columnNumber: 17\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 flex items-center justify-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-white text-lg\",\n children: message\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/ResultInfo.js\",\n lineNumber: 20,\n columnNumber: 21\n }, undefined)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/ResultInfo.js\",\n lineNumber: 19,\n columnNumber: 17\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex justify-center gap-4 mt-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: onConfirm,\n className: \"bg-[#354e7a] text-white px-6 py-2 rounded hover:bg-[#1E293B] transition-colors\",\n children: \"确定\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/ResultInfo.js\",\n lineNumber: 23,\n columnNumber: 21\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: onCancel,\n className: \"bg-[#4a4a4a] text-white px-6 py-2 rounded hover:bg-[#3a3a3a] transition-colors\",\n children: \"取消\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/ResultInfo.js\",\n lineNumber: 29,\n columnNumber: 21\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/ResultInfo.js\",\n lineNumber: 22,\n columnNumber: 17\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/ResultInfo.js\",\n lineNumber: 17,\n columnNumber: 13\n }, undefined)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/ResultInfo.js\",\n lineNumber: 16,\n columnNumber: 9\n }, undefined)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/ResultInfo.js\",\n lineNumber: 15,\n columnNumber: 5\n }, undefined);\nfunction ResultInfo() {\n const [showKeyboard, setShowKeyboard] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(true);\n const [cursorPosition, setCursorPosition] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(0);\n const [inputValue, setInputValue] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)('');\n const [inputValue2, setInputValue2] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)('');\n const [activeInput, setActiveInput] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(1); // 1 表示第一个输入框,2 表示第二个输入框\n const [showConfirmDialog, setShowConfirmDialog] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n const [confirmDialogMessage, setConfirmDialogMessage] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)('');\n const [confirmDialogCallback, setConfirmDialogCallback] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);\n const { navigation } = _store_displayStore__WEBPACK_IMPORTED_MODULE_9__[\"default\"].getState();\n const tempTestResult = navigation.current.params;\n const { play } = (0,_components_AudioProvider__WEBPACK_IMPORTED_MODULE_11__.useAudio)();\n // 根据测试结果播放音效\n const { hasPlayedSound } = _store_displayStore__WEBPACK_IMPORTED_MODULE_9__[\"default\"].getState();\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)({\n \"ResultInfo.useEffect\": ()=>{\n // 只有从测试页面进入nosave视图时才播放声音\n if (navigation.previous.name === 'testing' && tempTestResult && !hasPlayedSound) {\n if (tempTestResult.CopperResultStatus === 'pass' || tempTestResult.CFPResultStatus === 'pass' || tempTestResult.ofpResultStatus === 'pass') {\n play('pass');\n } else {\n play('fail');\n }\n _store_displayStore__WEBPACK_IMPORTED_MODULE_9__[\"default\"].setState({\n hasPlayedSound: true\n });\n }\n }\n }[\"ResultInfo.useEffect\"], [\n navigation,\n tempTestResult,\n hasPlayedSound\n ]);\n // 从URL参数中获取临时测试结果\n const { getCurrentProject, getCurrentCableId, getCurrentCableId2, updateCurrentView, getCurrentTestConfig, navigateTo, setToastMessage, updateProject } = (0,_store_displayStore__WEBPACK_IMPORTED_MODULE_9__[\"default\"])();\n const currentProject = getCurrentProject();\n const { view } = _store_displayStore__WEBPACK_IMPORTED_MODULE_9__[\"default\"].getState().navigation.current;\n // 获取当前的线缆ID\n const currentCableId = getCurrentCableId().name || '';\n const currentCableId2 = getCurrentCableId2().name || '';\n // 计算下一个序号的ID\n const getNextId = (currentId)=>{\n if (!currentId) return '';\n // 检查是否以数字结尾\n const numMatch = currentId.match(/^(.*?)(\\d+)$/);\n if (numMatch) {\n const [, prefix, num] = numMatch;\n const nextNum = String(Number(num) + 1).padStart(num.length, '0');\n return prefix + nextNum;\n }\n // 检查是否以字母结尾\n const letterMatch = currentId.match(/^(.*?)([a-zA-Z]+)$/);\n if (letterMatch) {\n const [, prefix, letters] = letterMatch;\n // 将字母转换为数组以便处理\n const letterArray = letters.split('');\n let carry = true;\n // 从右向左处理每个字母\n for(let i = letterArray.length - 1; i >= 0 && carry; i--){\n if (letterArray[i] === 'z') {\n letterArray[i] = 'a';\n carry = true;\n } else if (letterArray[i] === 'Z') {\n letterArray[i] = 'A';\n carry = true;\n } else {\n letterArray[i] = String.fromCharCode(letterArray[i].charCodeAt(0) + 1);\n carry = false;\n }\n }\n // 如果还有进位,说明需要在前面添加一个字母\n if (carry) {\n if (letters[0] >= 'a' && letters[0] <= 'z') {\n letterArray.unshift('a');\n } else {\n letterArray.unshift('A');\n }\n }\n return prefix + letterArray.join('');\n }\n // 如果既不是数字也不是字母结尾,直接返回原值\n return currentId;\n };\n // 初始化输入值为当前的线缆ID\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)({\n \"ResultInfo.useEffect\": ()=>{\n setInputValue(currentCableId);\n setInputValue2(currentCableId2);\n }\n }[\"ResultInfo.useEffect\"], [\n currentCableId,\n currentCableId2\n ]);\n // 当第一个输入框值变化时,仅在用户手动输入时自动更新第二个输入框\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)({\n \"ResultInfo.useEffect\": ()=>{\n if (tempTestResult?.testconfig?.moduleType === 'cfp' && inputValue && inputValue !== currentCableId) {\n setInputValue2(getNextId(inputValue));\n }\n }\n }[\"ResultInfo.useEffect\"], [\n inputValue,\n view,\n currentCableId\n ]);\n //创建保存结果存储逻辑\n const handleComplete = ()=>{\n const currentId = inputValue.trim();\n // 检查是否存在重名的测试结果\n const currentProject = getCurrentProject();\n const existingResults = currentProject?.testResults || [];\n // 检查两个ID是否重复\n const isDuplicate = existingResults.some((result)=>result.name === currentId);\n // 重名替换\n if (isDuplicate) {\n setConfirmDialogMessage('该线缆ID已使用,是否覆盖?');\n setConfirmDialogCallback(()=>()=>{\n // 更新临时测试结果的名称\n const updatedTestResult = {\n ...tempTestResult,\n name: currentId\n };\n // 更新当前项目的测试结果\n const currentIndex = _store_displayStore__WEBPACK_IMPORTED_MODULE_9__[\"default\"].getState().projects.findIndex((p)=>p === currentProject);\n if (currentIndex !== -1) {\n // 移除旧的测试结果并添加新的\n const newResults = existingResults.filter((result)=>result.name !== currentId);\n updateProject(currentIndex, {\n testResults: [\n ...newResults,\n updatedTestResult\n ]\n });\n // 更新navigation.current.params中的测试结果名称\n _store_displayStore__WEBPACK_IMPORTED_MODULE_9__[\"default\"].setState({\n navigation: {\n ...navigation,\n current: {\n ...navigation.current,\n params: updatedTestResult\n }\n }\n });\n }\n updateCurrentView('save');\n setShowConfirmDialog(false);\n });\n setShowConfirmDialog(true);\n return;\n }\n // 更新临时测试结果的名称并保存到项目中\n if (tempTestResult) {\n const updatedTestResult = {\n ...tempTestResult,\n name: currentId\n };\n // 更新当前项目的cableIds.name为下一个ID\n const currentIndex = _store_displayStore__WEBPACK_IMPORTED_MODULE_9__[\"default\"].getState().projects.findIndex((p)=>p === currentProject);\n if (currentIndex !== -1) {\n //更新测试结果\n updateProject(currentIndex, {\n testResults: [\n ...currentProject.testResults || [],\n updatedTestResult\n ]\n });\n // 更新navigation.current.params中的测试结果名称\n const navigation = _store_displayStore__WEBPACK_IMPORTED_MODULE_9__[\"default\"].getState().navigation;\n _store_displayStore__WEBPACK_IMPORTED_MODULE_9__[\"default\"].setState({\n navigation: {\n ...navigation,\n current: {\n ...navigation.current,\n params: updatedTestResult\n }\n }\n });\n // 获取下一个ID\n const nextId = (()=>{\n const currentId = inputValue.trim();\n if (!currentId) return currentId;\n // 获取最后一个字符\n const lastChar = currentId.slice(-1);\n const prefix = currentId.slice(0, -1);\n // 如果最后一个字符是数字\n if (/\\d/.test(lastChar)) {\n const match = currentId.match(/^(.*?)(\\d+)$/);\n if (match) {\n const numPrefix = match[1];\n const number = parseInt(match[2]) + 1;\n return `${numPrefix}${number.toString().padStart(match[2].length, '0')}`;\n }\n }\n // 如果最后一个字符是字母\n if (/[A-Za-z]/.test(lastChar)) {\n const nextChar = String.fromCharCode(lastChar.charCodeAt(0) + 1);\n // 如果超过Z或z,回到A或a\n if (lastChar === 'Z' && nextChar > 'Z' || lastChar === 'z' && nextChar > 'z') {\n const baseChar = lastChar === 'Z' ? 'A' : 'a';\n return `${prefix}${baseChar}`;\n }\n return `${prefix}${nextChar}`;\n }\n return currentId;\n })();\n // 获取当前项目的所有cableIds\n const currentCableIds = currentProject?.cableIds || [];\n const selectedId = getCurrentCableId().id;\n // 只更新选中的ID,保留其他ID不变\n const updatedCableIds = currentCableIds.map((cable)=>cable.id === selectedId ? {\n ...cable,\n name: nextId\n } : cable);\n // 更新项目\n updateProject(currentIndex, {\n cableIds: updatedCableIds\n });\n }\n updateCurrentView('save');\n }\n };\n const handleComplete2 = ()=>{\n const currentId = inputValue.trim();\n const currentId2 = inputValue2.trim();\n // 检查两个ID是否相同\n if (currentId === currentId2) {\n setConfirmDialogMessage('输入输出ID不能相同,请检查');\n setConfirmDialogCallback(()=>()=>{\n setShowConfirmDialog(false);\n });\n setShowConfirmDialog(true);\n return;\n }\n // 检查是否存在重名的测试结果\n const currentProject = getCurrentProject();\n const existingResults = currentProject?.testResults || [];\n // 检查两个ID是否重复\n const isDuplicate1 = existingResults.some((result)=>result.name === currentId);\n const isDuplicate2 = existingResults.some((result)=>result.name === currentId2);\n const currentConfig = getCurrentTestConfig();\n const cableType = currentConfig.params.cableType;\n const isMultiMode = cableType.includes('OM');\n if (isDuplicate1 || isDuplicate2) {\n const message = [];\n if (isDuplicate1) message.push(`线缆ID ${currentId}`);\n if (isDuplicate2) message.push(`线缆ID ${currentId2}`);\n setConfirmDialogMessage(`${message.join(' 和 ')}已使用,是否覆盖?`);\n setConfirmDialogCallback(()=>()=>{\n // 更新临时测试结果的名称\n const updatedTestResult1 = {\n ...tempTestResult,\n name: currentId,\n inputname: isMultiMode ? currentId2 : currentId,\n outname: isMultiMode ? currentId : currentId2\n };\n const updatedTestResult2 = {\n ...tempTestResult,\n name: currentId2,\n inputname: isMultiMode ? currentId2 : currentId,\n outname: isMultiMode ? currentId : currentId2\n };\n // 更新当前项目的测试结果\n const currentIndex = _store_displayStore__WEBPACK_IMPORTED_MODULE_9__[\"default\"].getState().projects.findIndex((p)=>p === currentProject);\n if (currentIndex !== -1) {\n // 移除旧的测试结果并添加新的\n const newResults = existingResults.filter((result)=>result.name !== currentId && result.name !== currentId2);\n updateProject(currentIndex, {\n testResults: [\n ...newResults,\n updatedTestResult1,\n updatedTestResult2\n ]\n });\n // 更新navigation.current.params中的测试结果名称\n _store_displayStore__WEBPACK_IMPORTED_MODULE_9__[\"default\"].setState({\n navigation: {\n ...navigation,\n current: {\n ...navigation.current,\n params: updatedTestResult1\n }\n }\n });\n }\n updateCurrentView('save');\n setShowConfirmDialog(false);\n });\n setShowConfirmDialog(true);\n return;\n }\n // 更新临时测试结果的名称并保存到项目中\n if (tempTestResult) {\n // 创建两个测试结果\n const updatedTestResult1 = {\n ...tempTestResult,\n name: currentId,\n inputname: isMultiMode ? currentId2 : currentId,\n outname: isMultiMode ? currentId : currentId2\n };\n const updatedTestResult2 = {\n ...tempTestResult,\n name: currentId2,\n inputname: isMultiMode ? currentId2 : currentId,\n outname: isMultiMode ? currentId : currentId2\n };\n // 更新当前项目的cableIds.name为下一个ID\n const currentIndex = _store_displayStore__WEBPACK_IMPORTED_MODULE_9__[\"default\"].getState().projects.findIndex((p)=>p === currentProject);\n if (currentIndex !== -1) {\n //更新测试结果\n updateProject(currentIndex, {\n testResults: [\n ...currentProject.testResults || [],\n updatedTestResult1,\n updatedTestResult2\n ]\n });\n // 更新navigation.current.params中的测试结果名称\n const navigation = _store_displayStore__WEBPACK_IMPORTED_MODULE_9__[\"default\"].getState().navigation;\n _store_displayStore__WEBPACK_IMPORTED_MODULE_9__[\"default\"].setState({\n navigation: {\n ...navigation,\n current: {\n ...navigation.current,\n params: updatedTestResult1\n }\n }\n });\n // 获取下一个ID\n const nextId = getNextId(getNextId(inputValue.trim()));\n // 获取下一个ID2\n const nextId2 = getNextId(getNextId(inputValue2.trim()));\n // 获取当前项目的所有cableIds\n const currentCableIds = currentProject?.cableIds || [];\n const selectedId = getCurrentCableId().id;\n const selectedId2 = getCurrentCableId2().id;\n // 只更新选中的ID,保留其他ID不变\n const updatedCableIds = currentCableIds.map((cable)=>cable.id === selectedId ? {\n ...cable,\n name: nextId\n } : cable.id === selectedId2 ? {\n ...cable,\n name: nextId2\n } : cable);\n // 更新项目,添加两个测试结果\n updateProject(currentIndex, {\n cableIds: updatedCableIds\n });\n }\n updateCurrentView('save');\n }\n };\n // 创建测试结果的视图\n const renderContent = ()=>{\n const renderResultMain = ()=>{\n const moduleType = tempTestResult?.testconfig?.moduleType;\n switch(moduleType){\n case '8000':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_CopperResultMain__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n testResult: tempTestResult\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/ResultInfo.js\",\n lineNumber: 429,\n columnNumber: 28\n }, this);\n case 'cfp':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_OLTSResultMain__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n testResult: tempTestResult\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/ResultInfo.js\",\n lineNumber: 431,\n columnNumber: 28\n }, this);\n case 'ofp':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_OTDRResultMain__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n testResult: tempTestResult\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/ResultInfo.js\",\n lineNumber: 433,\n columnNumber: 28\n }, this);\n default:\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_CopperResultMain__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n testResult: tempTestResult\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/ResultInfo.js\",\n lineNumber: 435,\n columnNumber: 28\n }, this);\n }\n };\n const renderSetName = ()=>{\n const moduleType = tempTestResult?.testconfig?.moduleType;\n switch(moduleType){\n case 'cfp':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 bg-[#D5DFEB] p-4 flex flex-col\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mb-8\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mb-1 text-white text-sm\",\n children: \"输出光纤ID1\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/ResultInfo.js\",\n lineNumber: 446,\n columnNumber: 29\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"relative cursor-pointer\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"text\",\n className: \"w-full h-[50px] bg-[#ffffe1] rounded-sm px-4 text-black overflow-x-auto whitespace-nowrap\",\n value: inputValue,\n placeholder: \"请输入线缆ID1\",\n onChange: (e)=>{\n setInputValue(e.target.value);\n setCursorPosition(e.target.selectionStart);\n },\n onClick: (e)=>{\n setActiveInput(1);\n setShowKeyboard(true);\n setCursorPosition(e.target.selectionStart);\n },\n onFocus: (e)=>{\n const cursorPosition = e.target.selectionStart;\n e.target.setSelectionRange(cursorPosition, cursorPosition);\n }\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/ResultInfo.js\",\n lineNumber: 448,\n columnNumber: 33\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/ResultInfo.js\",\n lineNumber: 447,\n columnNumber: 29\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/ResultInfo.js\",\n lineNumber: 445,\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: \"mb-1 text-white text-sm\",\n children: \"输入光纤ID2\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/ResultInfo.js\",\n lineNumber: 470,\n columnNumber: 29\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"relative cursor-pointer\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"text\",\n className: \"w-full h-[50px] bg-[#ffffe1] rounded-sm px-4 text-black overflow-x-auto whitespace-nowrap\",\n value: inputValue2,\n placeholder: \"请输入线缆ID2\",\n onChange: (e)=>{\n setInputValue2(e.target.value);\n setCursorPosition(e.target.selectionStart);\n },\n onClick: (e)=>{\n setActiveInput(2);\n setShowKeyboard(true);\n setCursorPosition(e.target.selectionStart);\n },\n onFocus: (e)=>{\n const cursorPosition = e.target.selectionStart;\n e.target.setSelectionRange(cursorPosition, cursorPosition);\n }\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/ResultInfo.js\",\n lineNumber: 472,\n columnNumber: 33\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/ResultInfo.js\",\n lineNumber: 471,\n columnNumber: 29\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/ResultInfo.js\",\n lineNumber: 469,\n columnNumber: 25\n }, this),\n showKeyboard && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_Keyboard__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n value: activeInput === 1 ? inputValue : inputValue2,\n cursorPosition: cursorPosition,\n onChange: (newValue, newPosition)=>{\n if (activeInput === 1) {\n setInputValue(newValue);\n } else {\n setInputValue2(newValue);\n }\n setCursorPosition(newPosition);\n },\n onComplete: ()=>{\n setShowKeyboard(false);\n }\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/ResultInfo.js\",\n lineNumber: 494,\n columnNumber: 29\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/ResultInfo.js\",\n lineNumber: 444,\n columnNumber: 21\n }, this);\n default:\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 bg-[#D5DFEB] p-4 flex flex-col\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"relative mb-4 cursor-pointer\",\n onClick: ()=>setShowKeyboard(true),\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"text\",\n className: \"w-full h-[50px] bg-[#ffffe1] rounded-sm p-4 text-black\",\n value: inputValue,\n placeholder: \"请输入线缆ID\",\n onChange: (e)=>{\n setInputValue(e.target.value);\n setCursorPosition(e.target.selectionStart);\n },\n onClick: (e)=>{\n setShowKeyboard(true);\n setCursorPosition(e.target.selectionStart);\n },\n onFocus: (e)=>{\n // 保存光标位置\n const cursorPosition = e.target.selectionStart;\n e.target.setSelectionRange(cursorPosition, cursorPosition);\n }\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/ResultInfo.js\",\n lineNumber: 519,\n columnNumber: 25\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/ResultInfo.js\",\n lineNumber: 515,\n columnNumber: 21\n }, this),\n showKeyboard && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_Keyboard__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n value: inputValue,\n cursorPosition: cursorPosition,\n onChange: (newValue, newPosition)=>{\n setInputValue(newValue);\n setCursorPosition(newPosition);\n },\n onComplete: ()=>{\n setShowKeyboard(false);\n }\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/ResultInfo.js\",\n lineNumber: 540,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/ResultInfo.js\",\n lineNumber: 514,\n columnNumber: 21\n }, this);\n }\n };\n switch(view){\n case 'nosave':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full h-full flex flex-col overflow-hidden\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_StatusBar__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {}, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/ResultInfo.js\",\n lineNumber: 561,\n columnNumber: 25\n }, this),\n tempTestResult?.testconfig?.moduleType !== 'cfp' ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_ResultTitleBar__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n title: \"未保存结果\",\n testResult: tempTestResult,\n backTo: \"home\",\n view: \"main\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/ResultInfo.js\",\n lineNumber: 563,\n columnNumber: 29\n }, this) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_ResultTitleBar__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n title: \" \",\n testResult: tempTestResult,\n backTo: \"home\",\n view: \"main\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/ResultInfo.js\",\n lineNumber: 564,\n columnNumber: 30\n }, this),\n renderResultMain(),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[60px] bg-[#132843] flex items-center justify-end px-4\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>updateCurrentView('setname'),\n className: \"w-[100px] h-[40px] bg-gradient-to-b from-[#b6dae7] to-[#65dfff] rounded-sm flex items-center justify-center text-black font-bold shadow-lg\",\n children: \"保存\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/ResultInfo.js\",\n lineNumber: 568,\n columnNumber: 29\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/ResultInfo.js\",\n lineNumber: 567,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/ResultInfo.js\",\n lineNumber: 560,\n columnNumber: 21\n }, this);\n case 'setname':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full h-full flex flex-col overflow-hidden\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_StatusBar__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {}, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/ResultInfo.js\",\n lineNumber: 581,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_TitleBar__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n title: \"保存结果\",\n backTo: _store_displayStore__WEBPACK_IMPORTED_MODULE_9__[\"default\"].getState().navigation.previous?.name || 'home',\n view: _store_displayStore__WEBPACK_IMPORTED_MODULE_9__[\"default\"].getState().navigation.previous?.view || 'main'\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/ResultInfo.js\",\n lineNumber: 583,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 bg-[#D5DFEB] p-2 flex flex-col\",\n children: renderSetName()\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/ResultInfo.js\",\n lineNumber: 589,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[60px] bg-[#132843] flex items-center justify-end px-4\",\n children: tempTestResult?.testconfig?.moduleType === \"cfp\" ? !showKeyboard && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>handleComplete2(),\n className: \"w-[100px] h-[40px] bg-gradient-to-b from-[#b6dae7] to-[#65dfff] rounded-sm flex items-center justify-center text-black font-bold shadow-lg\",\n children: \"保存\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/ResultInfo.js\",\n lineNumber: 595,\n columnNumber: 37\n }, this) : !showKeyboard && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>handleComplete(),\n className: \"w-[100px] h-[40px] bg-gradient-to-b from-[#b6dae7] to-[#65dfff] rounded-sm flex items-center justify-center text-black font-bold shadow-lg\",\n children: \"保存\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/ResultInfo.js\",\n lineNumber: 603,\n columnNumber: 51\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/ResultInfo.js\",\n lineNumber: 592,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/ResultInfo.js\",\n lineNumber: 580,\n columnNumber: 21\n }, this);\n case 'save':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full h-full flex flex-col overflow-hidden\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_StatusBar__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {}, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/ResultInfo.js\",\n lineNumber: 620,\n columnNumber: 25\n }, this),\n tempTestResult?.testconfig?.moduleType !== 'cfp' ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_ResultTitleBar__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n testResult: tempTestResult,\n backTo: \"result\",\n view: \"main\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/ResultInfo.js\",\n lineNumber: 622,\n columnNumber: 29\n }, this) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_ResultTitleBar__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n title: \" \",\n testResult: tempTestResult,\n backTo: \"result\",\n view: \"main\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/ResultInfo.js\",\n lineNumber: 623,\n columnNumber: 30\n }, this),\n renderResultMain(),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[60px] bg-[#132843] flex items-center justify-end px-4\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>{\n navigateTo('home', 'main');\n },\n className: \"w-[100px] h-[40px] bg-gradient-to-b from-[#b6dae7] to-[#65dfff] rounded-sm flex items-center justify-center text-black font-bold shadow-lg\",\n children: \"主页\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/ResultInfo.js\",\n lineNumber: 627,\n columnNumber: 29\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/ResultInfo.js\",\n lineNumber: 626,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/ResultInfo.js\",\n lineNumber: 619,\n columnNumber: 21\n }, this);\n default:\n return null;\n }\n };\n const content = renderContent();\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"relative w-full h-full\",\n children: [\n content,\n showConfirmDialog && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(ConfirmDialog, {\n message: confirmDialogMessage,\n onConfirm: confirmDialogCallback,\n onCancel: ()=>setShowConfirmDialog(false)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/ResultInfo.js\",\n lineNumber: 649,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/ResultInfo.js\",\n lineNumber: 646,\n columnNumber: 9\n }, this);\n}\n\n__webpack_async_result__();\n} catch(e) { __webpack_async_result__(e); } });//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHBhZ2VzLWRpci1ub2RlKS8uL3NyYy9jb21wb25lbnRzL2RzeHBhZ2UvZ2VuZXJhbC9SZXN1bHRJbmZvLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBbUQ7QUFDQztBQUNVO0FBQ1o7QUFDaUI7QUFDTDtBQUNBO0FBQ1o7QUFDQztBQUNQO0FBQ1U7QUFFdEQsWUFBWTtBQUNaLE1BQU1hLGdCQUFnQixDQUFDLEVBQUVDLE9BQU8sRUFBRUMsU0FBUyxFQUFFQyxRQUFRLEVBQUUsaUJBQ25ELDhEQUFDQztRQUFJQyxXQUFVO2tCQUNYLDRFQUFDRDtZQUFJQyxXQUFVO3NCQUNYLDRFQUFDRDtnQkFBSUMsV0FBVTs7a0NBQ1gsOERBQUNDO3dCQUFHRCxXQUFVO2tDQUFvQzs7Ozs7O2tDQUNsRCw4REFBQ0Q7d0JBQUlDLFdBQVU7a0NBQ1gsNEVBQUNEOzRCQUFJQyxXQUFVO3NDQUFzQko7Ozs7Ozs7Ozs7O2tDQUV6Qyw4REFBQ0c7d0JBQUlDLFdBQVU7OzBDQUNYLDhEQUFDRTtnQ0FDR0MsU0FBU047Z0NBQ1RHLFdBQVU7MENBQ2I7Ozs7OzswQ0FHRCw4REFBQ0U7Z0NBQ0dDLFNBQVNMO2dDQUNURSxXQUFVOzBDQUNiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBU04sU0FBU0k7SUFDcEIsTUFBTSxDQUFDQyxjQUFjQyxnQkFBZ0IsR0FBR3ZCLCtDQUFRQSxDQUFDO0lBQ2pELE1BQU0sQ0FBQ3dCLGdCQUFnQkMsa0JBQWtCLEdBQUd6QiwrQ0FBUUEsQ0FBQztJQUNyRCxNQUFNLENBQUMwQixZQUFZQyxjQUFjLEdBQUczQiwrQ0FBUUEsQ0FBQztJQUM3QyxNQUFNLENBQUM0QixhQUFhQyxlQUFlLEdBQUc3QiwrQ0FBUUEsQ0FBQztJQUMvQyxNQUFNLENBQUM4QixhQUFhQyxlQUFlLEdBQUcvQiwrQ0FBUUEsQ0FBQyxJQUFJLHdCQUF3QjtJQUMzRSxNQUFNLENBQUNnQyxtQkFBbUJDLHFCQUFxQixHQUFHakMsK0NBQVFBLENBQUM7SUFD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O1lBQ0F2SCxtQ0FDRyw4REFBQ3BCO2dCQUNHQyxTQUFTcUI7Z0JBQ1RwQixXQUFXc0I7Z0JBQ1hyQixVQUFVLElBQU1rQixxQkFBcUI7Ozs7Ozs7Ozs7OztBQUt6RCIsInNvdXJjZXMiOlsiL29wdC9kZXYvZXN0LWRzeC9zcmMvY29tcG9uZW50cy9kc3hwYWdlL2dlbmVyYWwvUmVzdWx0SW5mby5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUsIHVzZUVmZmVjdCB9IGZyb20gJ3JlYWN0JztcclxuaW1wb3J0IFN0YXR1c0JhciBmcm9tICdAL2NvbXBvbmVudHMvbGliLy9TdGF0dXNCYXInO1xyXG5pbXBvcnQgUmVzdWx0VGl0bGVCYXIgZnJvbSAnQC9jb21wb25lbnRzL2xpYi8vUmVzdWx0VGl0bGVCYXInO1xyXG5pbXBvcnQgVGl0bGVCYXIgZnJvbSAnQC9jb21wb25lbnRzL2xpYi8vVGl0bGVCYXInO1xyXG5pbXBvcnQgQ29wcGVyUmVzdWx0TWFpbiBmcm9tICAnQC9jb21wb25lbnRzL2xpYi8vQ29wcGVyUmVzdWx0TWFpbic7XHJcbmltcG9ydCBPTFRTUmVzdWx0TWFpbiBmcm9tICdAL2NvbXBvbmVudHMvbGliLy9PTFRTUmVzdWx0TWFpbic7XHJcbmltcG9ydCBPVERSUmVzdWx0TWFpbiBmcm9tICdAL2NvbXBvbmVudHMvbGliLy9PVERSUmVzdWx0TWFpbic7XHJcbmltcG9ydCBLZXlib2FyZCBmcm9tICdAL2NvbXBvbmVudHMvbGliLy9LZXlib2FyZCc7XHJcbmltcG9ydCB1c2VEaXNwbGF5U3RvcmUgZnJvbSAnQC9zdG9yZS9kaXNwbGF5U3RvcmUnO1xyXG5pbXBvcnQgeyBnZXRBc3NldFVybCB9IGZyb20gJ0AvdXRpbHMvYXNzZXQnO1xyXG5pbXBvcnQgeyB1c2VBdWRpbyB9IGZyb20gJ0AvY29tcG9uZW50cy9BdWRpb1Byb3ZpZGVyJztcclxuXHJcbi8vIOiHquWumuS5ieehruiupOW8ueeql+e7hOS7tlxyXG5jb25zdCBDb25maXJtRGlhbG9nID0gKHsgbWVzc2FnZSwgb25Db25maXJtLCBvbkNhbmNlbCB9KSA9PiAoXHJcbiAgICA8ZGl2IGNsYXNzTmFtZT1cInctWzQ4MHB4XSBoLVs2NDBweF0gYmctWyMwMDI4NDJkNF0gYWJzb2x1dGUgei1bOTk5OV0gdG9wLTEvMiBsZWZ0LTEvMiB0cmFuc2Zvcm0gLXRyYW5zbGF0ZS14LTEvMiAtdHJhbnNsYXRlLXktMS8yXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9J3BsLTEwIHB0LTYwJz5cclxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJiZy1bIzJCM0M1Ql0gcm91bmRlZC1sZyBwLTYgdy1bNDAwcHhdIG1pbi1oLVsyMDBweF0gZmxleCBmbGV4LWNvbFwiPlxyXG4gICAgICAgICAgICAgICAgPGgzIGNsYXNzTmFtZT1cInRleHQtd2hpdGUgdGV4dC14bCBmb250LWJvbGQgbWItNFwiPuaPkOekujwvaDM+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXgtMSBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC13aGl0ZSB0ZXh0LWxnXCI+e21lc3NhZ2V9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBqdXN0aWZ5LWNlbnRlciBnYXAtNCBtdC00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXtvbkNvbmZpcm19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImJnLVsjMzU0ZTdhXSB0ZXh0LXdoaXRlIHB4LTYgcHktMiByb3VuZGVkIGhvdmVyOmJnLVsjMUUyOTNCXSB0cmFuc2l0aW9uLWNvbG9yc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICDnoa7lrppcclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e29uQ2FuY2VsfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJiZy1bIzRhNGE0YV0gdGV4dC13aGl0ZSBweC02IHB5LTIgcm91bmRlZCBob3ZlcjpiZy1bIzNhM2EzYV0gdHJhbnNpdGlvbi1jb2xvcnNcIlxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAg5Y+W5raIXHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuKTtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFJlc3VsdEluZm8oKSB7XHJcbiAgICBjb25zdCBbc2hvd0tleWJvYXJkLCBzZXRTaG93S2V5Ym9hcmRdID0gdXNlU3RhdGUodHJ1ZSk7XHJcbiAgICBjb25zdCBbY3Vyc29yUG9zaXRpb24sIHNldEN1cnNvclBvc2l0aW9uXSA9IHVzZVN0YXRlKDApO1xyXG4gICAgY29uc3QgW2lucHV0VmFsdWUsIHNldElucHV0VmFsdWVdID0gdXNlU3RhdGUoJycpO1xyXG4gICAgY29uc3QgW2lucHV0VmFsdWUyLCBzZXRJbnB1dFZhbHVlMl0gPSB1c2VTdGF0ZSgnJyk7XHJcbiAgICBjb25zdCBbYWN0aXZlSW5wdXQsIHNldEFjdGl2ZUlucHV0XSA9IHVzZVN0YXRlKDEpOyAvLyAxIOihqOekuuesrOS4gOS4qui+k+WFpeahhu+8jDIg6KGo56S656ys5LqM5Liq6L6T5YWl5qGGXHJcbiAgICBjb25zdCBbc2hvd0NvbmZpcm1EaWFsb2csIHNldFNob3dDb25maXJtRGlhbG9nXSA9IHVzZVN0YXRlKGZhbHNlKTtcclxuICAgIGNvbnN0IFtjb25maXJtRGlhbG9nTWVzc2FnZSwgc2V0Q29uZmlybURpYWxvZ01lc3NhZ2VdID0gdXNlU3RhdGUoJycpO1xyXG4gICAgY29uc3QgW2NvbmZpcm1EaWFsb2dDYWxsYmFjaywgc2V0Q29uZmlybURpYWxvZ0NhbGxiYWNrXSA9IHVzZVN0YXRlKG51bGwpO1xyXG4gICAgY29uc3QgeyBuYXZpZ2F0aW9uIH0gPSB1c2VEaXNwbGF5U3RvcmUuZ2V0U3RhdGUoKTtcclxuICAgIGNvbnN0IHRlbXBUZXN0UmVzdWx0ID0gbmF2aWdhdGlvbi5jdXJyZW50LnBhcmFtcztcclxuICAgIGNvbnN0IHsgcGxheSB9ID0gdXNlQXVkaW8oKTtcclxuICAgIFxyXG4gICAgLy8g5qC55o2u5rWL6K+V57uT5p6c5pKt5pS+6Z+z5pWIXHJcbiAgICBjb25zdCB7IGhhc1BsYXllZFNvdW5kIH0gPSB1c2VEaXNwbGF5U3RvcmUuZ2V0U3RhdGUoKTtcclxuICAgIFxyXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcclxuICAgICAgICAvLyDlj6rmnInku47mtYvor5XpobXpnaLov5vlhaVub3NhdmXop4blm77ml7bmiY3mkq3mlL7lo7Dpn7NcclxuICAgICAgICBpZiAobmF2aWdhdGlvbi5wcmV2aW91cy5uYW1lID09PSAndGVzdGluZycgJiYgXHJcbiAgICAgICAgICAgIHRlbXBUZXN0UmVzdWx0ICYmIFxyXG4gICAgICAgICAgICAhaGFzUGxheWVkU291bmQpIHtcclxuICAgICAgICAgICAgaWYgKHRlbXBUZXN0UmVzdWx0LkNvcHBlclJlc3VsdFN0YXR1cyA9PT0gJ3Bhc3MnfHx0ZW1wVGVzdFJlc3VsdC5DRlBSZXN1bHRTdGF0dXMgPT09ICdwYXNzJyB8fHRlbXBUZXN0UmVzdWx0Lm9mcFJlc3VsdFN0YXR1cyA9PT0gJ3Bhc3MnKSB7XHJcbiAgICAgICAgICAgICAgICBwbGF5KCdwYXNzJyk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBwbGF5KCdmYWlsJyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdXNlRGlzcGxheVN0b3JlLnNldFN0YXRlKHsgaGFzUGxheWVkU291bmQ6IHRydWUgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIFxyXG5cclxuICAgIH0sIFtuYXZpZ2F0aW9uLCB0ZW1wVGVzdFJlc3VsdCwgaGFzUGxheWVkU291bmRdKTtcclxuXHJcbiAgICAvLyDku45VUkzlj4LmlbDkuK3ojrflj5bkuLTml7bmtYvor5Xnu5PmnpxcclxuICAgIGNvbnN0IHtcclxuICAgICAgICBnZXRDdXJyZW50UHJvamVjdCxcclxuICAgICAgICBnZXRDdXJyZW50Q2FibGVJZCxcclxuICAgICAgICBnZXRDdXJyZW50Q2FibGVJZDIsXHJcbiAgICAgICAgdXBkYXRlQ3VycmVudFZpZXcsXHJcbiAgICAgICAgZ2V0Q3VycmVudFRlc3RDb25maWcsXHJcbiAgICAgICAgbmF2aWdhdGVUbyxcclxuICAgICAgICBzZXRUb2FzdE1lc3NhZ2UsXHJcbiAgICAgICAgdXBkYXRlUHJvamVjdFxyXG4gICAgfSA9IHVzZURpc3BsYXlTdG9yZSgpO1xyXG5cclxuICAgIGNvbnN0IGN1cnJlbnRQcm9qZWN0ID0gZ2V0Q3VycmVudFByb2plY3QoKTtcclxuICAgIGNvbnN0IHsgdmlldyB9ID0gdXNlRGlzcGxheVN0b3JlLmdldFN0YXRlKCkubmF2aWdhdGlvbi5jdXJyZW50O1xyXG4gICAgXHJcbiAgICAvLyDojrflj5blvZPliY3nmoTnur/nvIZJRFxyXG4gICAgY29uc3QgY3VycmVudENhYmxlSWQgPSBnZXRDdXJyZW50Q2FibGVJZCgpLm5hbWUgfHwgJyc7XHJcbiAgICBjb25zdCBjdXJyZW50Q2FibGVJZDIgPSBnZXRDdXJyZW50Q2FibGVJZDIoKS5uYW1lIHx8ICcnO1xyXG4gICAgLy8g6K6h566X5LiL5LiA5Liq5bqP5Y+355qESURcclxuICAgIGNvbnN0IGdldE5leHRJZCA9IChjdXJyZW50SWQpID0+IHtcclxuICAgICAgICBpZiAoIWN1cnJlbnRJZCkgcmV0dXJuICcnO1xyXG5cclxuICAgICAgICAvLyDmo4Dmn6XmmK/lkKbku6XmlbDlrZfnu5PlsL5cclxuICAgICAgICBjb25zdCBudW1NYXRjaCA9IGN1cnJlbnRJZC5tYXRjaCgvXiguKj8pKFxcZCspJC8pO1xyXG4gICAgICAgIGlmIChudW1NYXRjaCkge1xyXG4gICAgICAgICAgICBjb25zdCBbLCBwcmVmaXgsIG51bV0gPSBudW1NYXRjaDtcclxuICAgICAgICAgICAgY29uc3QgbmV4dE51bSA9IFN0cmluZyhOdW1iZXIobnVtKSArIDEpLnBhZFN0YXJ0KG51bS5sZW5ndGgsICcwJyk7XHJcbiAgICAgICAgICAgIHJldHVybiBwcmVmaXggKyBuZXh0TnVtO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8g5qOA5p+l5piv5ZCm5Lul5a2X5q+N57uT5bC+XHJcbiAgICAgICAgY29uc3QgbGV0dGVyTWF0Y2ggPSBjdXJyZW50SWQubWF0Y2goL14oLio/KShbYS16QS1aXSspJC8pO1xyXG4gICAgICAgIGlmIChsZXR0ZXJNYXRjaCkge1xyXG4gICAgICAgICAgICBjb25zdCBbLCBwcmVmaXgsIGxldHRlcnNdID0gbGV0dGVyTWF0Y2g7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAvLyDlsIblrZfmr43ovazmjaLkuLrmlbDnu4Tku6Xkvr/lpITnkIZcclxuICAgICAgICAgICAgY29uc3QgbGV0dGVyQXJyYXkgPSBsZXR0ZXJzLnNwbGl0KCcnKTtcclxuICAgICAgICAgICAgbGV0IGNhcnJ5ID0gdHJ1ZTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIC8vIOS7juWPs+WQkeW3puWkhOeQhuavj+S4quWtl+avjVxyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gbGV0dGVyQXJyYXkubGVuZ3RoIC0gMTsgaSA+PSAwICYmIGNhcnJ5OyBpLS0pIHtcclxuICAgICAgICAgICAgICAgIGlmIChsZXR0ZXJBcnJheVtpXSA9PT0gJ3onKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0dGVyQXJyYXlbaV0gPSAnYSc7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FycnkgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChsZXR0ZXJBcnJheVtpXSA9PT0gJ1onKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0dGVyQXJyYXlbaV0gPSAnQSc7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FycnkgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXR0ZXJBcnJheVtpXSA9IFN0cmluZy5mcm9tQ2hhckNvZGUobGV0dGVyQXJyYXlbaV0uY2hhckNvZGVBdCgwKSArIDEpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNhcnJ5ID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIC8vIOWmguaenOi/mOaciei/m+S9je+8jOivtOaYjumcgOimgeWcqOWJjemdoua3u+WKoOS4gOS4quWtl+avjVxyXG4gICAgICAgICAgICBpZiAoY2FycnkpIHtcclxuICAgICAgICAgICAgICAgIGlmIChsZXR0ZXJzWzBdID49ICdhJyAmJiBsZXR0ZXJzWzBdIDw9ICd6Jykge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldHRlckFycmF5LnVuc2hpZnQoJ2EnKTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0dGVyQXJyYXkudW5zaGlmdCgnQScpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICByZXR1cm4gcHJlZml4ICsgbGV0dGVyQXJyYXkuam9pbignJyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyDlpoLmnpzml6LkuI3mmK/mlbDlrZfkuZ/kuI3mmK/lrZfmr43nu5PlsL7vvIznm7TmjqXov5Tlm57ljp/lgLxcclxuICAgICAgICByZXR1cm4gY3VycmVudElkO1xyXG4gICAgfTtcclxuXHJcbiAgICAvLyDliJ3lp4vljJbovpPlhaXlgLzkuLrlvZPliY3nmoTnur/nvIZJRFxyXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcclxuICAgICAgICBzZXRJbnB1dFZhbHVlKGN1cnJlbnRDYWJsZUlkKTtcclxuICAgICAgICBzZXRJbnB1dFZhbHVlMihjdXJyZW50Q2FibGVJZDIpO1xyXG4gICAgfSwgW2N1cnJlbnRDYWJsZUlkLCBjdXJyZW50Q2FibGVJZDJdKTtcclxuXHJcbiAgICAvLyDlvZPnrKzkuIDkuKrovpPlhaXmoYblgLzlj5jljJbml7bvvIzku4XlnKjnlKjmiLfmiYvliqjovpPlhaXml7boh6rliqjmm7TmlrDnrKzkuozkuKrovpPlhaXmoYZcclxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XHJcbiAgICAgICAgaWYgKHRlbXBUZXN0UmVzdWx0Py50ZXN0Y29uZmlnPy5tb2R1bGVUeXBlID09PSAnY2ZwJyAmJiBpbnB1dFZhbHVlICYmIGlucHV0VmFsdWUgIT09IGN1cnJlbnRDYWJsZUlkKSB7XHJcbiAgICAgICAgICAgIHNldElucHV0VmFsdWUyKGdldE5leHRJZChpbnB1dFZhbHVlKSk7XHJcbiAgICAgICAgfVxyXG4gICAgfSwgW2lucHV0VmFsdWUsIHZpZXcsIGN1cnJlbnRDYWJsZUlkXSk7XHJcblxyXG4gICAgICAgIC8v5Yib5bu65L+d5a2Y57uT5p6c5a2Y5YKo6YC76L6RXHJcbiAgICAgICAgY29uc3QgaGFuZGxlQ29tcGxldGUgPSAoKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRJZCA9IGlucHV0VmFsdWUudHJpbSgpO1xyXG4gICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgLy8g5qOA5p+l5piv5ZCm5a2Y5Zyo6YeN5ZCN55qE5rWL6K+V57uT5p6cXHJcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRQcm9qZWN0ID0gZ2V0Q3VycmVudFByb2plY3QoKTtcclxuICAgICAgICAgICAgY29uc3QgZXhpc3RpbmdSZXN1bHRzID0gY3VycmVudFByb2plY3Q/LnRlc3RSZXN1bHRzIHx8IFtdO1xyXG4gICAgXHJcbiAgICAgICAgICAgIC8vIOajgOafpeS4pOS4qklE5piv5ZCm6YeN5aSNXHJcbiAgICAgICAgICAgIGNvbnN0IGlzRHVwbGljYXRlID0gZXhpc3RpbmdSZXN1bHRzLnNvbWUocmVzdWx0ID0+IHJlc3VsdC5uYW1lID09PSBjdXJyZW50SWQpO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgLy8g6YeN5ZCN5pu/5o2iXHJcbiAgICAgICAgICAgIGlmIChpc0R1cGxpY2F0ZSkge1xyXG4gICAgICAgICAgICAgICAgc2V0Q29uZmlybURpYWxvZ01lc3NhZ2UoJ+ivpee6v+e8hklE5bey5L2/55So77yM5piv5ZCm6KaG55uW77yfJyk7XHJcbiAgICAgICAgICAgICAgICBzZXRDb25maXJtRGlhbG9nQ2FsbGJhY2soKCkgPT4gKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIOabtOaWsOS4tOaXtua1i+ivlee7k+aenOeahOWQjeensFxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHVwZGF0ZWRUZXN0UmVzdWx0ID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi50ZW1wVGVzdFJlc3VsdCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogY3VycmVudElkXHJcbiAgICAgICAgICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgLy8g5pu05paw5b2T5YmN6aG555uu55qE5rWL6K+V57uT5p6cXHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY3VycmVudEluZGV4ID0gdXNlRGlzcGxheVN0b3JlLmdldFN0YXRlKCkucHJvamVjdHMuZmluZEluZGV4KHAgPT4gcCA9PT0gY3VycmVudFByb2plY3QpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChjdXJyZW50SW5kZXggIT09IC0xKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIOenu+mZpOaXp+eahOa1i+ivlee7k+aenOW5tua3u+WKoOaWsOeahFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXdSZXN1bHRzID0gZXhpc3RpbmdSZXN1bHRzLmZpbHRlcihyZXN1bHQgPT4gcmVzdWx0Lm5hbWUgIT09IGN1cnJlbnRJZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZVByb2plY3QoY3VycmVudEluZGV4LCB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0UmVzdWx0czogWy4uLm5ld1Jlc3VsdHMsIHVwZGF0ZWRUZXN0UmVzdWx0XVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8g5pu05pawbmF2aWdhdGlvbi5jdXJyZW50LnBhcmFtc+S4reeahOa1i+ivlee7k+aenOWQjeensFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB1c2VEaXNwbGF5U3RvcmUuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmF2aWdhdGlvbjoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLm5hdmlnYXRpb24sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudDoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5uYXZpZ2F0aW9uLmN1cnJlbnQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtczogdXBkYXRlZFRlc3RSZXN1bHRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB1cGRhdGVDdXJyZW50Vmlldygnc2F2ZScpO1xyXG4gICAgICAgICAgICAgICAgICAgIHNldFNob3dDb25maXJtRGlhbG9nKGZhbHNlKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgc2V0U2hvd0NvbmZpcm1EaWFsb2codHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8g5pu05paw5Li05pe25rWL6K+V57uT5p6c55qE5ZCN56ew5bm25L+d5a2Y5Yiw6aG555uu5LitXHJcbiAgICAgICAgICAgIGlmICh0ZW1wVGVzdFJlc3VsdCkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgdXBkYXRlZFRlc3RSZXN1bHQgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLi4udGVtcFRlc3RSZXN1bHQsXHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogY3VycmVudElkXHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgXHJcbiAgICAgICAgICAgICAgICAvLyDmm7TmlrDlvZPliY3pobnnm67nmoRjYWJsZUlkcy5uYW1l5Li65LiL5LiA5LiqSURcclxuICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRJbmRleCA9IHVzZURpc3BsYXlTdG9yZS5nZXRTdGF0ZSgpLnByb2plY3RzLmZpbmRJbmRleChwID0+IHAgPT09IGN1cnJlbnRQcm9qZWN0KTtcclxuICAgICAgICAgICAgICAgIGlmIChjdXJyZW50SW5kZXggIT09IC0xKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy/mm7TmlrDmtYvor5Xnu5PmnpxcclxuICAgICAgICAgICAgICAgICAgICB1cGRhdGVQcm9qZWN0KGN1cnJlbnRJbmRleCwge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXN0UmVzdWx0czogWy4uLihjdXJyZW50UHJvamVjdC50ZXN0UmVzdWx0cyB8fCBbXSksIHVwZGF0ZWRUZXN0UmVzdWx0XVxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgXHJcbiAgICAgICAgICAgICAgICAgICAgLy8g5pu05pawbmF2aWdhdGlvbi5jdXJyZW50LnBhcmFtc+S4reeahOa1i+ivlee7k+aenOWQjeensFxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5hdmlnYXRpb24gPSB1c2VEaXNwbGF5U3RvcmUuZ2V0U3RhdGUoKS5uYXZpZ2F0aW9uO1xyXG4gICAgICAgICAgICAgICAgICAgIHVzZURpc3BsYXlTdG9yZS5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hdmlnYXRpb246IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLm5hdmlnYXRpb24sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4ubmF2aWdhdGlvbi5jdXJyZW50LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtczogdXBkYXRlZFRlc3RSZXN1bHRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgXHJcbiAgICAgICAgICAgICAgICAgICAgLy8g6I635Y+W5LiL5LiA5LiqSURcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXh0SWQgPSAoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50SWQgPSBpbnB1dFZhbHVlLnRyaW0oKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFjdXJyZW50SWQpIHJldHVybiBjdXJyZW50SWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyDojrflj5bmnIDlkI7kuIDkuKrlrZfnrKZcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGFzdENoYXIgPSBjdXJyZW50SWQuc2xpY2UoLTEpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwcmVmaXggPSBjdXJyZW50SWQuc2xpY2UoMCwgLTEpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8g5aaC5p6c5pyA5ZCO5LiA5Liq5a2X56ym5piv5pWw5a2XXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgvXFxkLy50ZXN0KGxhc3RDaGFyKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSBjdXJyZW50SWQubWF0Y2goL14oLio/KShcXGQrKSQvKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtYXRjaCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG51bVByZWZpeCA9IG1hdGNoWzFdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG51bWJlciA9IHBhcnNlSW50KG1hdGNoWzJdKSArIDE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGAke251bVByZWZpeH0ke251bWJlci50b1N0cmluZygpLnBhZFN0YXJ0KG1hdGNoWzJdLmxlbmd0aCwgJzAnKX1gO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyDlpoLmnpzmnIDlkI7kuIDkuKrlrZfnrKbmmK/lrZfmr41cclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKC9bQS1aYS16XS8udGVzdChsYXN0Q2hhcikpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5leHRDaGFyID0gU3RyaW5nLmZyb21DaGFyQ29kZShsYXN0Q2hhci5jaGFyQ29kZUF0KDApICsgMSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyDlpoLmnpzotoXov4da5oiWeu+8jOWbnuWIsEHmiJZhXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGxhc3RDaGFyID09PSAnWicgJiYgbmV4dENoYXIgPiAnWicpIHx8IChsYXN0Q2hhciA9PT0gJ3onICYmIG5leHRDaGFyID4gJ3onKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJhc2VDaGFyID0gbGFzdENoYXIgPT09ICdaJyA/ICdBJyA6ICdhJztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYCR7cHJlZml4fSR7YmFzZUNoYXJ9YDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBgJHtwcmVmaXh9JHtuZXh0Q2hhcn1gO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY3VycmVudElkO1xyXG4gICAgICAgICAgICAgICAgICAgIH0pKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgLy8g6I635Y+W5b2T5YmN6aG555uu55qE5omA5pyJY2FibGVJZHNcclxuICAgICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRDYWJsZUlkcyA9IGN1cnJlbnRQcm9qZWN0Py5jYWJsZUlkcyB8fCBbXTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBzZWxlY3RlZElkID0gZ2V0Q3VycmVudENhYmxlSWQoKS5pZDtcclxuICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIC8vIOWPquabtOaWsOmAieS4reeahElE77yM5L+d55WZ5YW25LuWSUTkuI3lj5hcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCB1cGRhdGVkQ2FibGVJZHMgPSBjdXJyZW50Q2FibGVJZHMubWFwKGNhYmxlID0+IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYWJsZS5pZCA9PT0gc2VsZWN0ZWRJZCA/IHsgLi4uY2FibGUsIG5hbWU6IG5leHRJZCB9IDogY2FibGVcclxuICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgXHJcbiAgICAgICAgICAgICAgICAgICAgLy8g5pu05paw6aG555uuXHJcbiAgICAgICAgICAgICAgICAgICAgdXBkYXRlUHJvamVjdChjdXJyZW50SW5kZXgsIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FibGVJZHM6IHVwZGF0ZWRDYWJsZUlkc1xyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdXBkYXRlQ3VycmVudFZpZXcoJ3NhdmUnKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBoYW5kbGVDb21wbGV0ZTIgPSAoKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRJZCA9IGlucHV0VmFsdWUudHJpbSgpO1xyXG4gICAgICAgICAgICBjb25zdCBjdXJyZW50SWQyID0gaW5wdXRWYWx1ZTIudHJpbSgpO1xyXG5cclxuICAgICAgICAgICAgLy8g5qOA5p+l5Lik5LiqSUTmmK/lkKbnm7jlkIxcclxuICAgICAgICAgICAgaWYgKGN1cnJlbnRJZCA9PT0gY3VycmVudElkMikge1xyXG4gICAgICAgICAgICAgICAgc2V0Q29uZmlybURpYWxvZ01lc3NhZ2UoJ+i+k+WFpei+k+WHuklE5LiN6IO955u45ZCM77yM6K+35qOA5p+lJyk7XHJcbiAgICAgICAgICAgICAgICBzZXRDb25maXJtRGlhbG9nQ2FsbGJhY2soKCkgPT4gKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHNldFNob3dDb25maXJtRGlhbG9nKGZhbHNlKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgc2V0U2hvd0NvbmZpcm1EaWFsb2codHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC8vIOajgOafpeaYr+WQpuWtmOWcqOmHjeWQjeeahOa1i+ivlee7k+aenFxyXG4gICAgICAgICAgICBjb25zdCBjdXJyZW50UHJvamVjdCA9IGdldEN1cnJlbnRQcm9qZWN0KCk7XHJcbiAgICAgICAgICAgIGNvbnN0IGV4aXN0aW5nUmVzdWx0cyA9IGN1cnJlbnRQcm9qZWN0Py50ZXN0UmVzdWx0cyB8fCBbXTtcclxuXHJcbiAgICAgICAgICAgIC8vIOajgOafpeS4pOS4qklE5piv5ZCm6YeN5aSNXHJcbiAgICAgICAgICAgIGNvbnN0IGlzRHVwbGljYXRlMSA9IGV4aXN0aW5nUmVzdWx0cy5zb21lKHJlc3VsdCA9PiByZXN1bHQubmFtZSA9PT0gY3VycmVudElkKTtcclxuICAgICAgICAgICAgY29uc3QgaXNEdXBsaWNhdGUyID0gZXhpc3RpbmdSZXN1bHRzLnNvbWUocmVzdWx0ID0+IHJlc3VsdC5uYW1lID09PSBjdXJyZW50SWQyKTtcclxuXHJcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRDb25maWcgPSBnZXRDdXJyZW50VGVzdENvbmZpZygpO1xyXG4gICAgICAgICAgICBjb25zdCBjYWJsZVR5cGUgPSBjdXJyZW50Q29uZmlnLnBhcmFtcy5jYWJsZVR5cGU7XHJcbiAgICAgICAgICAgIGNvbnN0IGlzTXVsdGlNb2RlID0gY2FibGVUeXBlLmluY2x1ZGVzKCdPTScpO1xyXG5cclxuICAgICAgICAgICAgaWYgKGlzRHVwbGljYXRlMSB8fCBpc0R1cGxpY2F0ZTIpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBbXTtcclxuICAgICAgICAgICAgICAgIGlmIChpc0R1cGxpY2F0ZTEpIG1lc3NhZ2UucHVzaChg57q/57yGSUQgJHtjdXJyZW50SWR9YCk7XHJcbiAgICAgICAgICAgICAgICBpZiAoaXNEdXBsaWNhdGUyKSBtZXNzYWdlLnB1c2goYOe6v+e8hklEICR7Y3VycmVudElkMn1gKTtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgc2V0Q29uZmlybURpYWxvZ01lc3NhZ2UoYCR7bWVzc2FnZS5qb2luKCcg5ZKMICcpfeW3suS9v+eUqO+8jOaYr+WQpuimhueblu+8n2ApO1xyXG4gICAgICAgICAgICAgICAgc2V0Q29uZmlybURpYWxvZ0NhbGxiYWNrKCgpID0+ICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAvLyDmm7TmlrDkuLTml7bmtYvor5Xnu5PmnpznmoTlkI3np7BcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCB1cGRhdGVkVGVzdFJlc3VsdDEgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRlbXBUZXN0UmVzdWx0LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBjdXJyZW50SWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0bmFtZTogaXNNdWx0aU1vZGUgPyBjdXJyZW50SWQyIDogY3VycmVudElkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBvdXRuYW1lOiBpc011bHRpTW9kZSA/IGN1cnJlbnRJZCA6IGN1cnJlbnRJZDIsXHJcbiAgICAgICAgICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdXBkYXRlZFRlc3RSZXN1bHQyID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi50ZW1wVGVzdFJlc3VsdCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogY3VycmVudElkMixcclxuICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRuYW1lOiBpc011bHRpTW9kZSA/IGN1cnJlbnRJZDIgOiBjdXJyZW50SWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG91dG5hbWU6IGlzTXVsdGlNb2RlID8gY3VycmVudElkIDogY3VycmVudElkMixcclxuICAgICAgICAgICAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAvLyDmm7TmlrDlvZPliY3pobnnm67nmoTmtYvor5Xnu5PmnpxcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50SW5kZXggPSB1c2VEaXNwbGF5U3RvcmUuZ2V0U3RhdGUoKS5wcm9qZWN0cy5maW5kSW5kZXgocCA9PiBwID09PSBjdXJyZW50UHJvamVjdCk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRJbmRleCAhPT0gLTEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8g56e76Zmk5pen55qE5rWL6K+V57uT5p6c5bm25re75Yqg5paw55qEXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5ld1Jlc3VsdHMgPSBleGlzdGluZ1Jlc3VsdHMuZmlsdGVyKHJlc3VsdCA9PiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5uYW1lICE9PSBjdXJyZW50SWQgJiYgcmVzdWx0Lm5hbWUgIT09IGN1cnJlbnRJZDJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlUHJvamVjdChjdXJyZW50SW5kZXgsIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RSZXN1bHRzOiBbLi4ubmV3UmVzdWx0cywgdXBkYXRlZFRlc3RSZXN1bHQxLCB1cGRhdGVkVGVzdFJlc3VsdDJdXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8g5pu05pawbmF2aWdhdGlvbi5jdXJyZW50LnBhcmFtc+S4reeahOa1i+ivlee7k+aenOWQjeensFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB1c2VEaXNwbGF5U3RvcmUuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmF2aWdhdGlvbjoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLm5hdmlnYXRpb24sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudDoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5uYXZpZ2F0aW9uLmN1cnJlbnQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtczogdXBkYXRlZFRlc3RSZXN1bHQxXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgdXBkYXRlQ3VycmVudFZpZXcoJ3NhdmUnKTtcclxuICAgICAgICAgICAgICAgICAgICBzZXRTaG93Q29uZmlybURpYWxvZyhmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIHNldFNob3dDb25maXJtRGlhbG9nKHRydWUpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIOabtOaWsOS4tOaXtua1i+ivlee7k+aenOeahOWQjeensOW5tuS/neWtmOWIsOmhueebruS4rVxyXG4gICAgICAgICAgICBpZiAodGVtcFRlc3RSZXN1bHQpIHtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgLy8g5Yib5bu65Lik5Liq5rWL6K+V57uT5p6cXHJcbiAgICAgICAgICAgICAgICBjb25zdCB1cGRhdGVkVGVzdFJlc3VsdDEgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRlbXBUZXN0UmVzdWx0LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBjdXJyZW50SWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0bmFtZTogaXNNdWx0aU1vZGUgPyBjdXJyZW50SWQyIDogY3VycmVudElkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBvdXRuYW1lOiBpc011bHRpTW9kZSA/IGN1cnJlbnRJZCA6IGN1cnJlbnRJZDIsXHJcbiAgICAgICAgICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdXBkYXRlZFRlc3RSZXN1bHQyID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi50ZW1wVGVzdFJlc3VsdCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogY3VycmVudElkMixcclxuICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRuYW1lOiBpc011bHRpTW9kZSA/IGN1cnJlbnRJZDIgOiBjdXJyZW50SWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG91dG5hbWU6IGlzTXVsdGlNb2RlID8gY3VycmVudElkIDogY3VycmVudElkMixcclxuICAgICAgICAgICAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgICAgICAgIC8vIOabtOaWsOW9k+WJjemhueebrueahGNhYmxlSWRzLm5hbWXkuLrkuIvkuIDkuKpJRFxyXG4gICAgICAgICAgICAgICAgY29uc3QgY3VycmVudEluZGV4ID0gdXNlRGlzcGxheVN0b3JlLmdldFN0YXRlKCkucHJvamVjdHMuZmluZEluZGV4KHAgPT4gcCA9PT0gY3VycmVudFByb2plY3QpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRJbmRleCAhPT0gLTEpIHtcclxuICAgICAgICAgICAgICAgICAgICAvL+abtOaWsOa1i+ivlee7k+aenFxyXG4gICAgICAgICAgICAgICAgICAgIHVwZGF0ZVByb2plY3QoY3VycmVudEluZGV4LCB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RSZXN1bHRzOiBbLi4uKGN1cnJlbnRQcm9qZWN0LnRlc3RSZXN1bHRzIHx8IFtdKSwgdXBkYXRlZFRlc3RSZXN1bHQxLHVwZGF0ZWRUZXN0UmVzdWx0Ml1cclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgLy8g5pu05pawbmF2aWdhdGlvbi5jdXJyZW50LnBhcmFtc+S4reeahOa1i+ivlee7k+aenOWQjeensFxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5hdmlnYXRpb24gPSB1c2VEaXNwbGF5U3RvcmUuZ2V0U3RhdGUoKS5uYXZpZ2F0aW9uO1xyXG4gICAgICAgICAgICAgICAgICAgIHVzZURpc3BsYXlTdG9yZS5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hdmlnYXRpb246IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLm5hdmlnYXRpb24sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4ubmF2aWdhdGlvbi5jdXJyZW50LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtczogdXBkYXRlZFRlc3RSZXN1bHQxXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgLy8g6I635Y+W5LiL5LiA5LiqSURcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXh0SWQgPSBnZXROZXh0SWQoZ2V0TmV4dElkKGlucHV0VmFsdWUudHJpbSgpKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgLy8g6I635Y+W5LiL5LiA5LiqSUQyXHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV4dElkMiA9IGdldE5leHRJZChnZXROZXh0SWQoaW5wdXRWYWx1ZTIudHJpbSgpKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgLy8g6I635Y+W5b2T5YmN6aG555uu55qE5omA5pyJY2FibGVJZHNcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50Q2FibGVJZHMgPSBjdXJyZW50UHJvamVjdD8uY2FibGVJZHMgfHwgW107XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRJZCA9IGdldEN1cnJlbnRDYWJsZUlkKCkuaWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRJZDIgPSBnZXRDdXJyZW50Q2FibGVJZDIoKS5pZDtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgXHJcblxyXG4gICAgICAgICAgICAgICAgICAgIC8vIOWPquabtOaWsOmAieS4reeahElE77yM5L+d55WZ5YW25LuWSUTkuI3lj5hcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCB1cGRhdGVkQ2FibGVJZHMgPSBjdXJyZW50Q2FibGVJZHMubWFwKGNhYmxlID0+IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYWJsZS5pZCA9PT0gc2VsZWN0ZWRJZCA/IHsgLi4uY2FibGUsIG5hbWU6IG5leHRJZCB9IDogXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhYmxlLmlkID09PSBzZWxlY3RlZElkMiA/IHsgLi4uY2FibGUsIG5hbWU6IG5leHRJZDIgfSA6IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYWJsZVxyXG4gICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcblxyXG5cclxuICAgICAgICAgICAgICAgICAgICAvLyDmm7TmlrDpobnnm67vvIzmt7vliqDkuKTkuKrmtYvor5Xnu5PmnpxcclxuICAgICAgICAgICAgICAgICAgICB1cGRhdGVQcm9qZWN0KGN1cnJlbnRJbmRleCwge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYWJsZUlkczogdXBkYXRlZENhYmxlSWRzLFxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdXBkYXRlQ3VycmVudFZpZXcoJ3NhdmUnKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAvLyDliJvlu7rmtYvor5Xnu5PmnpznmoTop4blm75cclxuICAgIGNvbnN0IHJlbmRlckNvbnRlbnQgPSAoKSA9PiB7XHJcbiAgICAgICAgY29uc3QgcmVuZGVyUmVzdWx0TWFpbiA9ICgpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgbW9kdWxlVHlwZSA9IHRlbXBUZXN0UmVzdWx0Py50ZXN0Y29uZmlnPy5tb2R1bGVUeXBlO1xyXG4gICAgICAgICAgICBzd2l0Y2ggKG1vZHVsZVR5cGUpIHtcclxuICAgICAgICAgICAgICAgIGNhc2UgJzgwMDAnOlxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiA8Q29wcGVyUmVzdWx0TWFpbiB0ZXN0UmVzdWx0PXt0ZW1wVGVzdFJlc3VsdH0gIC8+O1xyXG4gICAgICAgICAgICAgICAgY2FzZSAnY2ZwJzpcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gPE9MVFNSZXN1bHRNYWluIHRlc3RSZXN1bHQ9e3RlbXBUZXN0UmVzdWx0fSAvPjtcclxuICAgICAgICAgICAgICAgIGNhc2UgJ29mcCc6XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDxPVERSUmVzdWx0TWFpbiB0ZXN0UmVzdWx0PXt0ZW1wVGVzdFJlc3VsdH0gLz47XHJcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiA8Q29wcGVyUmVzdWx0TWFpbiB0ZXN0UmVzdWx0PXt0ZW1wVGVzdFJlc3VsdH0gLz47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICBjb25zdCByZW5kZXJTZXROYW1lID0gKCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBtb2R1bGVUeXBlID0gdGVtcFRlc3RSZXN1bHQ/LnRlc3Rjb25maWc/Lm1vZHVsZVR5cGU7XHJcbiAgICAgICAgICAgIHN3aXRjaCAobW9kdWxlVHlwZSkge1xyXG4gICAgICAgICAgICAgICAgY2FzZSAnY2ZwJzpcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4oXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4LTEgYmctWyNENURGRUJdIHAtNCBmbGV4IGZsZXgtY29sXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibWItOFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtYi0xIHRleHQtd2hpdGUgdGV4dC1zbVwiPui+k+WHuuWFiee6pElEMTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyZWxhdGl2ZSBjdXJzb3ItcG9pbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ3LWZ1bGwgaC1bNTBweF0gYmctWyNmZmZmZTFdIHJvdW5kZWQtc20gcHgtNCB0ZXh0LWJsYWNrIG92ZXJmbG93LXgtYXV0byB3aGl0ZXNwYWNlLW5vd3JhcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXtpbnB1dFZhbHVlfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIuivt+i+k+WFpee6v+e8hklEMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0SW5wdXRWYWx1ZShlLnRhcmdldC52YWx1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRDdXJzb3JQb3NpdGlvbihlLnRhcmdldC5zZWxlY3Rpb25TdGFydCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eyhlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRBY3RpdmVJbnB1dCgxKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFNob3dLZXlib2FyZCh0cnVlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEN1cnNvclBvc2l0aW9uKGUudGFyZ2V0LnNlbGVjdGlvblN0YXJ0KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Gb2N1cz17KGUpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGN1cnNvclBvc2l0aW9uID0gZS50YXJnZXQuc2VsZWN0aW9uU3RhcnQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnRhcmdldC5zZXRTZWxlY3Rpb25SYW5nZShjdXJzb3JQb3NpdGlvbiwgY3Vyc29yUG9zaXRpb24pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1iLTEgdGV4dC13aGl0ZSB0ZXh0LXNtXCI+6L6T5YWl5YWJ57qkSUQyPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInJlbGF0aXZlIGN1cnNvci1wb2ludGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInctZnVsbCBoLVs1MHB4XSBiZy1bI2ZmZmZlMV0gcm91bmRlZC1zbSBweC00IHRleHQtYmxhY2sgb3ZlcmZsb3cteC1hdXRvIHdoaXRlc3BhY2Utbm93cmFwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2lucHV0VmFsdWUyfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIuivt+i+k+WFpee6v+e8hklEMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0SW5wdXRWYWx1ZTIoZS50YXJnZXQudmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0Q3Vyc29yUG9zaXRpb24oZS50YXJnZXQuc2VsZWN0aW9uU3RhcnQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0QWN0aXZlSW5wdXQoMik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTaG93S2V5Ym9hcmQodHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRDdXJzb3JQb3NpdGlvbihlLnRhcmdldC5zZWxlY3Rpb25TdGFydCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uRm9jdXM9eyhlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjdXJzb3JQb3NpdGlvbiA9IGUudGFyZ2V0LnNlbGVjdGlvblN0YXJ0O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS50YXJnZXQuc2V0U2VsZWN0aW9uUmFuZ2UoY3Vyc29yUG9zaXRpb24sIGN1cnNvclBvc2l0aW9uKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7c2hvd0tleWJvYXJkICYmIChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxLZXlib2FyZCBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17YWN0aXZlSW5wdXQgPT09IDEgPyBpbnB1dFZhbHVlIDogaW5wdXRWYWx1ZTJ9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3Vyc29yUG9zaXRpb249e2N1cnNvclBvc2l0aW9ufVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsobmV3VmFsdWUsIG5ld1Bvc2l0aW9uKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhY3RpdmVJbnB1dCA9PT0gMSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0SW5wdXRWYWx1ZShuZXdWYWx1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRJbnB1dFZhbHVlMihuZXdWYWx1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0Q3Vyc29yUG9zaXRpb24obmV3UG9zaXRpb24pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Db21wbGV0ZT17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTaG93S2V5Ym9hcmQoZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4LTEgYmctWyNENURGRUJdIHAtNCBmbGV4IGZsZXgtY29sXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwicmVsYXRpdmUgbWItNCBjdXJzb3ItcG9pbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldFNob3dLZXlib2FyZCh0cnVlKX1cclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidy1mdWxsIGgtWzUwcHhdIGJnLVsjZmZmZmUxXSByb3VuZGVkLXNtIHAtNCB0ZXh0LWJsYWNrXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17aW5wdXRWYWx1ZX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIuivt+i+k+WFpee6v+e8hklEXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0SW5wdXRWYWx1ZShlLnRhcmdldC52YWx1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEN1cnNvclBvc2l0aW9uKGUudGFyZ2V0LnNlbGVjdGlvblN0YXJ0KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eyhlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFNob3dLZXlib2FyZCh0cnVlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0Q3Vyc29yUG9zaXRpb24oZS50YXJnZXQuc2VsZWN0aW9uU3RhcnQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Gb2N1cz17KGUpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g5L+d5a2Y5YWJ5qCH5L2N572uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGN1cnNvclBvc2l0aW9uID0gZS50YXJnZXQuc2VsZWN0aW9uU3RhcnQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUudGFyZ2V0LnNldFNlbGVjdGlvblJhbmdlKGN1cnNvclBvc2l0aW9uLCBjdXJzb3JQb3NpdGlvbik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAge3Nob3dLZXlib2FyZCAmJiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxLZXlib2FyZCBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXtpbnB1dFZhbHVlfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY3Vyc29yUG9zaXRpb249e2N1cnNvclBvc2l0aW9ufVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhuZXdWYWx1ZSwgbmV3UG9zaXRpb24pID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRJbnB1dFZhbHVlKG5ld1ZhbHVlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRDdXJzb3JQb3NpdGlvbihuZXdQb3NpdGlvbik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Db21wbGV0ZT17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFNob3dLZXlib2FyZChmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICBzd2l0Y2ggKHZpZXcpIHtcclxuICAgICAgICAgICAgY2FzZSAnbm9zYXZlJzpcclxuICAgICAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LWZ1bGwgaC1mdWxsIGZsZXggZmxleC1jb2wgb3ZlcmZsb3ctaGlkZGVuXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxTdGF0dXNCYXIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3RlbXBUZXN0UmVzdWx0Py50ZXN0Y29uZmlnPy5tb2R1bGVUeXBlICE9PSAnY2ZwJyA/IChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSZXN1bHRUaXRsZUJhciB0aXRsZT1cIuacquS/neWtmOe7k+aenFwiIHRlc3RSZXN1bHQ9e3RlbXBUZXN0UmVzdWx0fSBiYWNrVG89XCJob21lXCIgdmlldz1cIm1haW5cIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICApIDogKDxSZXN1bHRUaXRsZUJhciAgdGl0bGU9XCIgXCIgdGVzdFJlc3VsdD17dGVtcFRlc3RSZXN1bHR9IGJhY2tUbz1cImhvbWVcIiB2aWV3PVwibWFpblwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHtyZW5kZXJSZXN1bHRNYWluKCl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaC1bNjBweF0gYmctWyMxMzI4NDNdIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktZW5kIHB4LTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gdXBkYXRlQ3VycmVudFZpZXcoJ3NldG5hbWUnKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ3LVsxMDBweF0gaC1bNDBweF0gYmctZ3JhZGllbnQtdG8tYiBmcm9tLVsjYjZkYWU3XSB0by1bIzY1ZGZmZl0gcm91bmRlZC1zbSBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciB0ZXh0LWJsYWNrIGZvbnQtYm9sZCBzaGFkb3ctbGdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIOS/neWtmFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgKTtcclxuXHJcbiAgICAgICAgICAgIGNhc2UgJ3NldG5hbWUnOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctZnVsbCBoLWZ1bGwgZmxleCBmbGV4LWNvbCBvdmVyZmxvdy1oaWRkZW5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPFN0YXR1c0JhciAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgPFRpdGxlQmFyIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9XCLkv53lrZjnu5PmnpxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFja1RvPXt1c2VEaXNwbGF5U3RvcmUuZ2V0U3RhdGUoKS5uYXZpZ2F0aW9uLnByZXZpb3VzPy5uYW1lIHx8ICdob21lJ31cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXc9e3VzZURpc3BsYXlTdG9yZS5nZXRTdGF0ZSgpLm5hdmlnYXRpb24ucHJldmlvdXM/LnZpZXcgfHwgJ21haW4nfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4LTEgYmctWyNENURGRUJdIHAtMiBmbGV4IGZsZXgtY29sXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICB7cmVuZGVyU2V0TmFtZSgpfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImgtWzYwcHhdIGJnLVsjMTMyODQzXSBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWVuZCBweC00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7dGVtcFRlc3RSZXN1bHQ/LnRlc3Rjb25maWc/Lm1vZHVsZVR5cGUgPT09IFwiY2ZwXCIgPyAgKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICFzaG93S2V5Ym9hcmQgJiYgKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gaGFuZGxlQ29tcGxldGUyKCl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ3LVsxMDBweF0gaC1bNDBweF0gYmctZ3JhZGllbnQtdG8tYiBmcm9tLVsjYjZkYWU3XSB0by1bIzY1ZGZmZl0gcm91bmRlZC1zbSBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciB0ZXh0LWJsYWNrIGZvbnQtYm9sZCBzaGFkb3ctbGdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDkv53lrZhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgOiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIXNob3dLZXlib2FyZCAmJiAoPGJ1dHRvbiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBoYW5kbGVDb21wbGV0ZSgpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInctWzEwMHB4XSBoLVs0MHB4XSBiZy1ncmFkaWVudC10by1iIGZyb20tWyNiNmRhZTddIHRvLVsjNjVkZmZmXSByb3VuZGVkLXNtIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHRleHQtYmxhY2sgZm9udC1ib2xkIHNoYWRvdy1sZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg5L+d5a2YXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgKTtcclxuXHJcbiAgICAgICAgICAgIGNhc2UgJ3NhdmUnOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctZnVsbCBoLWZ1bGwgZmxleCBmbGV4LWNvbCBvdmVyZmxvdy1oaWRkZW5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPFN0YXR1c0JhciAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7dGVtcFRlc3RSZXN1bHQ/LnRlc3Rjb25maWc/Lm1vZHVsZVR5cGUgIT09ICdjZnAnID8gKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJlc3VsdFRpdGxlQmFyICB0ZXN0UmVzdWx0PXt0ZW1wVGVzdFJlc3VsdH0gYmFja1RvPVwicmVzdWx0XCIgdmlldz1cIm1haW5cIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICApIDogKDxSZXN1bHRUaXRsZUJhciAgdGl0bGU9XCIgXCIgdGVzdFJlc3VsdD17dGVtcFRlc3RSZXN1bHR9IGJhY2tUbz1cInJlc3VsdFwiIHZpZXc9XCJtYWluXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAge3JlbmRlclJlc3VsdE1haW4oKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJoLVs2MHB4XSBiZy1bIzEzMjg0M10gZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1lbmQgcHgtNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hdmlnYXRlVG8oJ2hvbWUnLCAnbWFpbicpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidy1bMTAwcHhdIGgtWzQwcHhdIGJnLWdyYWRpZW50LXRvLWIgZnJvbS1bI2I2ZGFlN10gdG8tWyM2NWRmZmZdIHJvdW5kZWQtc20gZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgdGV4dC1ibGFjayBmb250LWJvbGQgc2hhZG93LWxnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDkuLvpobVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICk7XHJcblxyXG4gICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCBjb250ZW50ID0gcmVuZGVyQ29udGVudCgpO1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInJlbGF0aXZlIHctZnVsbCBoLWZ1bGxcIj5cclxuICAgICAgICAgICAge2NvbnRlbnR9XHJcbiAgICAgICAgICAgIHtzaG93Q29uZmlybURpYWxvZyAmJiAoXHJcbiAgICAgICAgICAgICAgICA8Q29uZmlybURpYWxvZ1xyXG4gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U9e2NvbmZpcm1EaWFsb2dNZXNzYWdlfVxyXG4gICAgICAgICAgICAgICAgICAgIG9uQ29uZmlybT17Y29uZmlybURpYWxvZ0NhbGxiYWNrfVxyXG4gICAgICAgICAgICAgICAgICAgIG9uQ2FuY2VsPXsoKSA9PiBzZXRTaG93Q29uZmlybURpYWxvZyhmYWxzZSl9XHJcbiAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICApfVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgKTtcclxufSJdLCJuYW1lcyI6WyJSZWFjdCIsInVzZVN0YXRlIiwidXNlRWZmZWN0IiwiU3RhdHVzQmFyIiwiUmVzdWx0VGl0bGVCYXIiLCJUaXRsZUJhciIsIkNvcHBlclJlc3VsdE1haW4iLCJPTFRTUmVzdWx0TWFpbiIsIk9URFJSZXN1bHRNYWluIiwiS2V5Ym9hcmQiLCJ1c2VEaXNwbGF5U3RvcmUiLCJnZXRBc3NldFVybCIsInVzZUF1ZGlvIiwiQ29uZmlybURpYWxvZyIsIm1lc3NhZ2UiLCJvbkNvbmZpcm0iLCJvbkNhbmNlbCIsImRpdiIsImNsYXNzTmFtZSIsImgzIiwiYnV0dG9uIiwib25DbGljayIsIlJlc3VsdEluZm8iLCJzaG93S2V5Ym9hcmQiLCJzZXRTaG93S2V5Ym9hcmQiLCJjdXJzb3JQb3NpdGlvbiIsInNldEN1cnNvclBvc2l0aW9uIiwiaW5wdXRWYWx1ZSIsInNldElucHV0VmFsdWUiLCJpbnB1dFZhbHVlMiIsInNldElucHV0VmFsdWUyIiwiYWN0aXZlSW5wdXQiLCJzZXRBY3RpdmVJbnB1dCIsInNob3dDb25maXJtRGlhbG9nIiwic2V0U2hvd0NvbmZpcm1EaWFsb2ciLCJjb25maXJtRGlhbG9nTWVzc2FnZSIsInNldENvbmZpcm1EaWFsb2dNZXNzYWdlIiwiY29uZmlybURpYWxvZ0NhbGxiYWNrIiwic2V0Q29uZmlybURpYWxvZ0NhbGxiYWNrIiwibmF2aWdhdGlvbiIsImdldFN0YXRlIiwidGVtcFRlc3RSZXN1bHQiLCJjdXJyZW50IiwicGFyYW1zIiwicGxheSIsImhhc1BsYXllZFNvdW5kIiwicHJldmlvdXMiLCJuYW1lIiwiQ29wcGVyUmVzdWx0U3RhdHVzIiwiQ0ZQUmVzdWx0U3RhdHVzIiwib2ZwUmVzdWx0U3RhdHVzIiwic2V0U3RhdGUiLCJnZXRDdXJyZW50UHJvamVjdCIsImdldEN1cnJlbnRDYWJsZUlkIiwiZ2V0Q3VycmVudENhYmxlSWQyIiwidXBkYXRlQ3VycmVudFZpZXciLCJnZXRDdXJyZW50VGVzdENvbmZpZyIsIm5hdmlnYXRlVG8iLCJzZXRUb2FzdE1lc3NhZ2UiLCJ1cGRhdGVQcm9qZWN0IiwiY3VycmVudFByb2plY3QiLCJ2aWV3IiwiY3VycmVudENhYmxlSWQiLCJjdXJyZW50Q2FibGVJZDIiLCJnZXROZXh0SWQiLCJjdXJyZW50SWQiLCJudW1NYXRjaCIsIm1hdGNoIiwicHJlZml4IiwibnVtIiwibmV4dE51bSIsIlN0cmluZyIsIk51bWJlciIsInBhZFN0YXJ0IiwibGVuZ3RoIiwibGV0dGVyTWF0Y2giLCJsZXR0ZXJzIiwibGV0dGVyQXJyYXkiLCJzcGxpdCIsImNhcnJ5IiwiaSIsImZyb21DaGFyQ29kZSIsImNoYXJDb2RlQXQiLCJ1bnNoaWZ0Iiwiam9pbiIsInRlc3Rjb25maWciLCJtb2R1bGVUeXBlIiwiaGFuZGxlQ29tcGxldGUiLCJ0cmltIiwiZXhpc3RpbmdSZXN1bHRzIiwidGVzdFJlc3VsdHMiLCJpc0R1cGxpY2F0ZSIsInNvbWUiLCJyZXN1bHQiLCJ1cGRhdGVkVGVzdFJlc3VsdCIsImN1cnJlbnRJbmRleCIsInByb2plY3RzIiwiZmluZEluZGV4IiwicCIsIm5ld1Jlc3VsdHMiLCJmaWx0ZXIiLCJuZXh0SWQiLCJsYXN0Q2hhciIsInNsaWNlIiwidGVzdCIsIm51bVByZWZpeCIsIm51bWJlciIsInBhcnNlSW50IiwidG9TdHJpbmciLCJuZXh0Q2hhciIsImJhc2VDaGFyIiwiY3VycmVudENhYmxlSWRzIiwiY2FibGVJZHMiLCJzZWxlY3RlZElkIiwiaWQiLCJ1cGRhdGVkQ2FibGVJZHMiLCJtYXAiLCJjYWJsZSIsImhhbmRsZUNvbXBsZXRlMiIsImN1cnJlbnRJZDIiLCJpc0R1cGxpY2F0ZTEiLCJpc0R1cGxpY2F0ZTIiLCJjdXJyZW50Q29uZmlnIiwiY2FibGVUeXBlIiwiaXNNdWx0aU1vZGUiLCJpbmNsdWRlcyIsInB1c2giLCJ1cGRhdGVkVGVzdFJlc3VsdDEiLCJpbnB1dG5hbWUiLCJvdXRuYW1lIiwidXBkYXRlZFRlc3RSZXN1bHQyIiwibmV4dElkMiIsInNlbGVjdGVkSWQyIiwicmVuZGVyQ29udGVudCIsInJlbmRlclJlc3VsdE1haW4iLCJ0ZXN0UmVzdWx0IiwicmVuZGVyU2V0TmFtZSIsImlucHV0IiwidHlwZSIsInZhbHVlIiwicGxhY2Vob2xkZXIiLCJvbkNoYW5nZSIsImUiLCJ0YXJnZXQiLCJzZWxlY3Rpb25TdGFydCIsIm9uRm9jdXMiLCJzZXRTZWxlY3Rpb25SYW5nZSIsIm5ld1ZhbHVlIiwibmV3UG9zaXRpb24iLCJvbkNvbXBsZXRlIiwidGl0bGUiLCJiYWNrVG8iLCJjb250ZW50Il0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(pages-dir-node)/./src/components/dsxpage/general/ResultInfo.js\n"); /***/ }), /***/ "(pages-dir-node)/./src/components/dsxpage/general/TestConfig.js": /*!******************************************************!*\ !*** ./src/components/dsxpage/general/TestConfig.js ***! \******************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; eval("__webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ TestConfig)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"react/jsx-dev-runtime\");\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 */ \"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var next_image__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! next/image */ \"(pages-dir-node)/./node_modules/next/image.js\");\n/* harmony import */ var next_image__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(next_image__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _components_lib_StatusBar__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/components/lib//StatusBar */ \"(pages-dir-node)/./src/components/lib/StatusBar.js\");\n/* harmony import */ var _components_lib_TitleBar__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/components/lib//TitleBar */ \"(pages-dir-node)/./src/components/lib/TitleBar.js\");\n/* harmony import */ var _components_lib_SubTitleBar__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/components/lib//SubTitleBar */ \"(pages-dir-node)/./src/components/lib/SubTitleBar.js\");\n/* harmony import */ var _store_displayStore__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @/store/displayStore */ \"(pages-dir-node)/./src/store/displayStore.js\");\n/* harmony import */ var uuid__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! uuid */ \"uuid\");\n/* harmony import */ var _MenuList_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./MenuList.js */ \"(pages-dir-node)/./src/components/dsxpage/general/MenuList.js\");\n/* harmony import */ var _utils_asset__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @/utils/asset */ \"(pages-dir-node)/./src/utils/asset.js\");\nvar __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_components_lib_StatusBar__WEBPACK_IMPORTED_MODULE_3__, _components_lib_TitleBar__WEBPACK_IMPORTED_MODULE_4__, _components_lib_SubTitleBar__WEBPACK_IMPORTED_MODULE_5__, _store_displayStore__WEBPACK_IMPORTED_MODULE_6__, uuid__WEBPACK_IMPORTED_MODULE_7__, _MenuList_js__WEBPACK_IMPORTED_MODULE_8__, _utils_asset__WEBPACK_IMPORTED_MODULE_9__]);\n([_components_lib_StatusBar__WEBPACK_IMPORTED_MODULE_3__, _components_lib_TitleBar__WEBPACK_IMPORTED_MODULE_4__, _components_lib_SubTitleBar__WEBPACK_IMPORTED_MODULE_5__, _store_displayStore__WEBPACK_IMPORTED_MODULE_6__, uuid__WEBPACK_IMPORTED_MODULE_7__, _MenuList_js__WEBPACK_IMPORTED_MODULE_8__, _utils_asset__WEBPACK_IMPORTED_MODULE_9__] = __webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__);\n\n\n\n\n\n\n\n\n\n\nfunction TestConfig() {\n const [selectedConfigId, setSelectedConfigId] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);\n const { getCurrentProject, navigation, navigateTo, updateCurrentView, goBack, setSelectedIndexes, updateProject, addProject, setToastMessage } = (0,_store_displayStore__WEBPACK_IMPORTED_MODULE_6__[\"default\"])();\n // 获取当前项目数据\n const currentProject = getCurrentProject();\n // 单多模判断\n const { getCurrentTestConfig } = _store_displayStore__WEBPACK_IMPORTED_MODULE_6__[\"default\"].getState();\n const currentConfig = getCurrentTestConfig();\n const cableType = currentConfig.params.cableType;\n const isMultiMode = cableType.includes('OM');\n // 设置默认选中的配置\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)({\n \"TestConfig.useEffect\": ()=>{\n // 优先使用导航参数中的配置ID\n const configIdFromParams = navigation.current.params?.selectedConfigId;\n if (configIdFromParams) {\n setSelectedConfigId(configIdFromParams);\n return;\n }\n // 如果没有参数,使用当前选中的配置索引\n const currentTestConfigIndex = _store_displayStore__WEBPACK_IMPORTED_MODULE_6__[\"default\"].getState().selectedIndexes.testConfigIndex;\n if (currentProject?.testConfigs && currentTestConfigIndex >= 0) {\n setSelectedConfigId(currentProject.testConfigs[currentTestConfigIndex].id);\n }\n // 确保导航历史正确记录\n if (navigation.current.name === 'testconfig' && navigation.current.view === 'main') {\n const current = navigation.current;\n const previous = navigation.previous;\n if (!previous || previous.name !== 'testconfig' || previous.view !== 'main') {\n _store_displayStore__WEBPACK_IMPORTED_MODULE_6__[\"default\"].getState().navigateTo('testconfig', 'main', current.params);\n }\n }\n }\n }[\"TestConfig.useEffect\"], [\n currentProject,\n navigation.current.params\n ]);\n // 渲染主视图内容\n const renderMainContent = ()=>{\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[490px] flex-1 bg-[#D5DFEB] p-4\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-full overflow-y-auto space-y-2 pr-2\",\n children: currentProject?.testConfigs.map((config)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[100px] bg-[#F8F6F7] rounded-sm p-4 shadow-lg flex items-center gap-4 cursor-pointer\",\n onClick: ()=>{\n setSelectedConfigId(config.id);\n // 保存选中的配置ID到导航参数\n updateCurrentView('main', {\n selectedConfigId: config.id\n });\n },\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-6 h-6 border-2 border-gray-600 rounded-full flex items-center justify-center\",\n children: selectedConfigId === config.id && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-4 h-4 bg-blue-500 rounded-full\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 78,\n columnNumber: 37\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 76,\n columnNumber: 29\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 relative\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mt-1\",\n children: [\n config.moduleType === '8000' && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black text-sm\",\n children: config.params.limitValue\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 86,\n columnNumber: 45\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black text-sm\",\n children: config.params.cableType\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 87,\n columnNumber: 45\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black text-sm\",\n children: config.params.wireOrder\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 88,\n columnNumber: 45\n }, this)\n ]\n }, void 0, true),\n config.moduleType === 'cfp' && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black text-sm\",\n children: \"智能远端\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 93,\n columnNumber: 45\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black text-sm\",\n children: config.params.limitValue\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 94,\n columnNumber: 45\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black text-sm\",\n children: config.params.cableType\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 95,\n columnNumber: 45\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black text-sm\",\n children: [\n config.params.refJumper,\n \" 跳线参照\"\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 96,\n columnNumber: 45\n }, this)\n ]\n }, void 0, true),\n config.moduleType === 'ofp' && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black text-sm\",\n children: \"自动OTDR\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 101,\n columnNumber: 45\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black text-sm\",\n children: config.params.limitValue\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 102,\n columnNumber: 45\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black text-sm\",\n children: config.params.cableType\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 103,\n columnNumber: 45\n }, this)\n ]\n }, void 0, true)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 83,\n columnNumber: 33\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-gray-400 text-sm absolute top-0 right-0\",\n children: config.modulelable\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 107,\n columnNumber: 33\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 81,\n columnNumber: 29\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-3 h-3 relative\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: (0,_utils_asset__WEBPACK_IMPORTED_MODULE_9__.getAssetUrl)('/arrow.png'),\n alt: \"箭头\",\n fill: true,\n className: \"object-contain\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 110,\n columnNumber: 33\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 109,\n columnNumber: 29\n }, this)\n ]\n }, config.id, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 67,\n columnNumber: 25\n }, this))\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 65,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 64,\n columnNumber: 13\n }, this);\n };\n // 渲染设置视图内容\n const renderSetupContent = ()=>{\n const currentConfig = currentProject?.testConfigs.find((config)=>config.id === selectedConfigId);\n if (!currentConfig) return null;\n const renderConfigContent = ()=>{\n switch(currentConfig.moduleType){\n case '8000':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-y-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-y-0\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[50px] bg-[#F8F6F7] rounded-t-sm p-4 shadow-lg flex justify-between items-center cursor-pointer\",\n onClick: ()=>navigateTo('menulist', 'setup', {\n menuType: 'CABLE_TYPE',\n selectedConfigId: selectedConfigId,\n backTo: 'testconfig',\n backView: 'setup'\n }),\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black text-l font-bold\",\n children: [\n \"电缆类型:\",\n currentConfig.params.cableType\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 147,\n columnNumber: 37\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-3 h-3 relative\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: (0,_utils_asset__WEBPACK_IMPORTED_MODULE_9__.getAssetUrl)('/arrow.png'),\n alt: \"箭头\",\n fill: true,\n className: \"object-contain\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 149,\n columnNumber: 41\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 148,\n columnNumber: 37\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 138,\n columnNumber: 33\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[50px] bg-gradient-to-b from-[#ffffff] to-[#ffffff] rounded-b-sm p-4 shadow-lg flex justify-between items-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black text-l\",\n children: \"NVP:根据电缆类型生成\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 153,\n columnNumber: 37\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-3 h-3 relative\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: (0,_utils_asset__WEBPACK_IMPORTED_MODULE_9__.getAssetUrl)('/arrow.png'),\n alt: \"箭头\",\n fill: true,\n className: \"object-contain\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 155,\n columnNumber: 41\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 154,\n columnNumber: 37\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 152,\n columnNumber: 33\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 137,\n columnNumber: 29\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-y-0\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[50px] bg-[#F8F6F7] rounded-t-sm p-4 shadow-lg flex justify-between items-center cursor-pointer\",\n onClick: ()=>navigateTo('menulist', 'setup', {\n menuType: 'LIMIT_VALUE',\n selectedConfigId: selectedConfigId,\n backTo: 'testconfig',\n backView: 'setup'\n }),\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black text-l font-bold\",\n children: [\n \"测试极限值:\",\n currentConfig.params.limitValue\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 169,\n columnNumber: 37\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-3 h-3 relative\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: (0,_utils_asset__WEBPACK_IMPORTED_MODULE_9__.getAssetUrl)('/arrow.png'),\n alt: \"箭头\",\n fill: true,\n className: \"object-contain\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 171,\n columnNumber: 41\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 170,\n columnNumber: 37\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 160,\n columnNumber: 33\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[50px] bg-gradient-to-b from-[#ffffff] to-[#ffffff] p-4 shadow-lg flex justify-between items-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black text-l\",\n children: \"存储测试数据:开\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 175,\n columnNumber: 37\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-3 h-3 relative\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: (0,_utils_asset__WEBPACK_IMPORTED_MODULE_9__.getAssetUrl)('/arrow.png'),\n alt: \"箭头\",\n fill: true,\n className: \"object-contain\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 177,\n columnNumber: 41\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 176,\n columnNumber: 37\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 174,\n columnNumber: 33\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[50px] bg-gradient-to-b from-[#ffffff] to-[#ffffff] rounded-b-sm p-4 shadow-lg flex justify-between items-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black text-l\",\n children: \"TDR/TDX:仅失败\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 181,\n columnNumber: 37\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-3 h-3 relative\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: (0,_utils_asset__WEBPACK_IMPORTED_MODULE_9__.getAssetUrl)('/arrow.png'),\n alt: \"箭头\",\n fill: true,\n className: \"object-contain\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 183,\n columnNumber: 41\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 182,\n columnNumber: 37\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 180,\n columnNumber: 33\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 159,\n columnNumber: 29\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[50px] bg-[#F8F6F7] rounded-sm p-4 shadow-lg flex justify-between items-center cursor-pointer\",\n onClick: ()=>navigateTo('menulist', 'setup', {\n menuType: 'WIRE_ORDER',\n selectedConfigId: selectedConfigId,\n backTo: 'testconfig',\n backView: 'setup'\n }),\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black text-l font-bold\",\n children: [\n \"插座配置:\",\n currentConfig.params.wireOrder\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 196,\n columnNumber: 33\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-3 h-3 relative\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: (0,_utils_asset__WEBPACK_IMPORTED_MODULE_9__.getAssetUrl)('/arrow.png'),\n alt: \"箭头\",\n fill: true,\n className: \"object-contain\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 198,\n columnNumber: 37\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 197,\n columnNumber: 33\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 187,\n columnNumber: 29\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 136,\n columnNumber: 25\n }, this);\n case 'cfp':\n return /*#__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 className: \"space-y-0\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[50px] bg-[#F8F6F7] rounded-t-sm p-4 shadow-lg flex justify-between items-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black text-l font-bold\",\n children: \"测试类型:智能远端\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 208,\n columnNumber: 37\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-3 h-3 relative\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: (0,_utils_asset__WEBPACK_IMPORTED_MODULE_9__.getAssetUrl)('/arrow.png'),\n alt: \"箭头\",\n fill: true,\n className: \"object-contain\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 210,\n columnNumber: 41\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 209,\n columnNumber: 37\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 207,\n columnNumber: 33\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[50px] bg-gradient-to-b from-[#ffffff] to-[#ffffff] rounded-b-sm p-4 shadow-lg flex justify-between items-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black text-l\",\n children: \"双向:关\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 214,\n columnNumber: 37\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-3 h-3 relative\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: (0,_utils_asset__WEBPACK_IMPORTED_MODULE_9__.getAssetUrl)('/arrow.png'),\n alt: \"箭头\",\n fill: true,\n className: \"object-contain\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 216,\n columnNumber: 41\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 215,\n columnNumber: 37\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 213,\n columnNumber: 33\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 206,\n columnNumber: 29\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[50px] bg-[#F8F6F7] rounded-sm p-4 shadow-lg flex justify-between items-center cursor-pointer\",\n onClick: ()=>navigateTo('menulist', 'setup', {\n menuType: 'FIBER_TYPE',\n selectedConfigId: selectedConfigId,\n backTo: 'testconfig',\n backView: 'setup'\n }),\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black text-l font-bold\",\n children: [\n \"光纤类型:\",\n currentConfig.params.cableType\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 229,\n columnNumber: 33\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-3 h-3 relative\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: (0,_utils_asset__WEBPACK_IMPORTED_MODULE_9__.getAssetUrl)('/arrow.png'),\n alt: \"箭头\",\n fill: true,\n className: \"object-contain\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 231,\n columnNumber: 37\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 230,\n columnNumber: 33\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 220,\n columnNumber: 29\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-y-0\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[50px] bg-[#F8F6F7] rounded-t-sm p-4 shadow-lg flex justify-between items-center cursor-pointer\",\n onClick: ()=>navigateTo('menulist', 'setup', {\n menuType: 'CFP_LIMIT',\n selectedConfigId: selectedConfigId,\n backTo: 'testconfig',\n backView: 'setup'\n }),\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black text-l font-bold\",\n children: [\n \"测试极限值:\",\n currentConfig.params.limitValue\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 244,\n columnNumber: 37\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-3 h-3 relative\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: (0,_utils_asset__WEBPACK_IMPORTED_MODULE_9__.getAssetUrl)('/arrow.png'),\n alt: \"箭头\",\n fill: true,\n className: \"object-contain\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 246,\n columnNumber: 41\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 245,\n columnNumber: 37\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 235,\n columnNumber: 33\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[50px] bg-gradient-to-b from-[#ffffff] to-[#ffffff] p-4 shadow-lg flex justify-between items-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black text-l \",\n children: [\n \"参照方法:\",\n currentConfig.params.refJumper,\n \" 跳线\"\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 250,\n columnNumber: 37\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-3 h-3 relative\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: (0,_utils_asset__WEBPACK_IMPORTED_MODULE_9__.getAssetUrl)('/arrow.png'),\n alt: \"箭头\",\n fill: true,\n className: \"object-contain\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 252,\n columnNumber: 41\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 251,\n columnNumber: 37\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 249,\n columnNumber: 33\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[50px] bg-gradient-to-b from-[#ffffff] to-[#ffffff] p-4 shadow-lg flex justify-between items-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black text-l\",\n children: \"连接器类型:LC\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 256,\n columnNumber: 37\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-3 h-3 relative\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: (0,_utils_asset__WEBPACK_IMPORTED_MODULE_9__.getAssetUrl)('/arrow.png'),\n alt: \"箭头\",\n fill: true,\n className: \"object-contain\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 258,\n columnNumber: 41\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 257,\n columnNumber: 37\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 255,\n columnNumber: 33\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[50px] bg-gradient-to-b from-[#ffffff] to-[#ffffff] rounded-b-sm p-4 shadow-lg flex justify-between items-center cursor-pointer \",\n onClick: ()=>updateCurrentView('cfp-conunt'),\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black text-l\",\n children: [\n \"接线/接头的数量:\",\n currentConfig.params.connectorCount,\n \"/\",\n currentConfig.params.spliceCount\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 262,\n columnNumber: 37\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-3 h-3 relative\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: (0,_utils_asset__WEBPACK_IMPORTED_MODULE_9__.getAssetUrl)('/arrow.png'),\n alt: \"箭头\",\n fill: true,\n className: \"object-contain\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 264,\n columnNumber: 41\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 263,\n columnNumber: 37\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 261,\n columnNumber: 33\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 234,\n columnNumber: 29\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 205,\n columnNumber: 25\n }, this);\n case 'ofp':\n return /*#__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 className: \"space-y-0\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[50px] bg-[#F8F6F7] rounded-t-sm p-4 shadow-lg flex justify-between items-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black text-l font-bold\",\n children: \"测试类型:自动OTDR\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 275,\n columnNumber: 37\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-3 h-3 relative\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: (0,_utils_asset__WEBPACK_IMPORTED_MODULE_9__.getAssetUrl)('/arrow.png'),\n alt: \"箭头\",\n fill: true,\n className: \"object-contain\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 277,\n columnNumber: 41\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 276,\n columnNumber: 37\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 274,\n columnNumber: 33\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[50px] bg-gradient-to-b from-[#ffffff] to-[#ffffff] p-4 shadow-lg flex justify-between items-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black text-l \",\n children: \"前导补偿:开\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 281,\n columnNumber: 37\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-3 h-3 relative\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 282,\n columnNumber: 37\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 280,\n columnNumber: 33\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[50px] bg-gradient-to-b from-[#ffffff] to-[#ffffff] rounded-b-sm p-4 shadow-lg flex justify-between items-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black text-l \",\n children: [\n \"波长:\",\n currentConfig.params.cableType.includes('OM') ? '850 nm、1310nm' : '1310nm、1550nm'\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 287,\n columnNumber: 33\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-3 h-3 relative\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 288,\n columnNumber: 33\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 286,\n columnNumber: 33\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 273,\n columnNumber: 29\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[50px] bg-[#F8F6F7] rounded-sm p-4 shadow-lg flex justify-between items-center cursor-pointer\",\n onClick: ()=>navigateTo('menulist', 'setup', {\n menuType: 'FIBER_TYPE',\n selectedConfigId: selectedConfigId,\n backTo: 'testconfig',\n backView: 'setup'\n }),\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black text-l font-bold\",\n children: [\n \"光纤类型:\",\n currentConfig.params.cableType\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 302,\n columnNumber: 33\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-3 h-3 relative\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: (0,_utils_asset__WEBPACK_IMPORTED_MODULE_9__.getAssetUrl)('/arrow.png'),\n alt: \"箭头\",\n fill: true,\n className: \"object-contain\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 304,\n columnNumber: 37\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 303,\n columnNumber: 33\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 293,\n columnNumber: 29\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[50px] bg-[#F8F6F7] rounded-sm p-4 shadow-lg flex justify-between items-center cursor-pointer\",\n onClick: ()=>navigateTo('menulist', 'setup', {\n menuType: 'OFP_LIMIT',\n selectedConfigId: selectedConfigId,\n backTo: 'testconfig',\n backView: 'setup'\n }),\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black text-l font-bold\",\n children: [\n \"测试极限值:\",\n currentConfig.params.limitValue\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 316,\n columnNumber: 33\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-3 h-3 relative\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: (0,_utils_asset__WEBPACK_IMPORTED_MODULE_9__.getAssetUrl)('/arrow.png'),\n alt: \"箭头\",\n fill: true,\n className: \"object-contain\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 318,\n columnNumber: 37\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 317,\n columnNumber: 33\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 307,\n columnNumber: 29\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 272,\n columnNumber: 25\n }, this);\n default:\n return null;\n }\n };\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 bg-[#D5DFEB] p-4\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-full bg-gradient-to-b from-[#e9e9e9] to-[##ffffff0d] rounded-sm p-4 shadow-lg flex flex-col\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex justify-between items-center mb-4 cursor-pointer\",\n onClick: ()=>navigateTo('menulist', 'setup', {\n menuType: 'MODULE',\n selectedConfigId: selectedConfigId,\n backTo: 'testconfig',\n backView: 'setup'\n }),\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black font-bold text-lg\",\n children: [\n \"模块:\",\n currentConfig.modulelable\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 340,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-5 h-5 relative\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: (0,_utils_asset__WEBPACK_IMPORTED_MODULE_9__.getAssetUrl)('/arrow.png'),\n alt: \"箭头\",\n fill: true,\n className: \"object-contain\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 342,\n columnNumber: 29\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 341,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 331,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 overflow-auto\",\n children: renderConfigContent()\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 345,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 330,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 329,\n columnNumber: 13\n }, this);\n };\n // 渲染标题栏\n const renderTitleBar = ()=>{\n const { view } = navigation.current;\n const handleBack = ()=>{\n if (view === 'setup') {\n updateCurrentView('main');\n } else {\n goBack();\n }\n };\n switch(view){\n case 'main':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_TitleBar__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n title: \"更改测试\",\n backTo: navigation.previous?.name || 'home',\n view: navigation.previous?.view || 'main',\n params: navigation.previous?.params || {},\n onBack: handleBack\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 368,\n columnNumber: 21\n }, this);\n case 'setup':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_TitleBar__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n title: \"测试设置\",\n backTo: navigation.previous?.name || 'testconfig',\n view: navigation.previous?.view || 'main',\n params: navigation.previous?.params || {},\n onBack: handleBack\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 378,\n columnNumber: 21\n }, this);\n case 'cfp-conunt':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_TitleBar__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n title: \" \",\n view: 'setup',\n params: navigation.previous?.params || {}\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 388,\n columnNumber: 21\n }, this);\n }\n };\n // 渲染底部栏\n const renderFooter = ()=>{\n const { view } = navigation.current;\n switch(view){\n case 'main':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[60px] bg-[#132843] flex items-center justify-between px-8\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>{\n // 创建新的测试配置\n const newConfig = {\n id: (0,uuid__WEBPACK_IMPORTED_MODULE_7__.v4)(),\n moduleType: '8000',\n modulelable: '铜缆测试仪',\n params: {\n limitValue: 'TIA Cat 6 Channel',\n cableType: 'Cat6 U/UTP',\n wireOrder: 'T568B',\n refJumper: '1',\n spliceCount: '0',\n connectorCount: '2'\n }\n };\n // 更新项目,添加新的测试配置\n const updatedProject = {\n ...currentProject,\n testConfigs: [\n ...currentProject.testConfigs,\n newConfig\n ]\n };\n updateProject(_store_displayStore__WEBPACK_IMPORTED_MODULE_6__[\"default\"].getState().selectedIndexes.projectIndex, updatedProject);\n // 设置新配置为选中状态并保存到导航参数\n setSelectedConfigId(newConfig.id);\n updateCurrentView('setup', {\n selectedConfigId: newConfig.id\n });\n },\n className: \"w-[100px] h-[40px] rounded-sm flex items-center justify-center text-white font-bold shadow-lg\",\n children: \"新测试\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 405,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>{\n if (!selectedConfigId) {\n setToastMessage('请先选择一个测试配置');\n return;\n }\n // 保存选中的配置ID到导航参数\n updateCurrentView('setup', {\n selectedConfigId: selectedConfigId\n });\n },\n className: \"w-[100px] h-[40px] rounded-sm flex items-center justify-center text-white font-bold shadow-lg\",\n children: \"编辑\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 437,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>{\n if (!selectedConfigId) {\n setToastMessage('请先选择一个测试配置');\n return;\n }\n const configIndex = currentProject.testConfigs.findIndex((config)=>config.id === selectedConfigId);\n setSelectedIndexes({\n testConfigIndex: configIndex\n });\n navigateTo('home', 'main');\n },\n className: \"w-[100px] h-[40px] bg-gradient-to-b from-[#b6dae7] to-[#65dfff] rounded-sm flex items-center justify-center text-black font-bold shadow-lg\",\n children: \"使用所选\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 450,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 404,\n columnNumber: 21\n }, this);\n case 'setup':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[60px] bg-[#132843] flex items-center justify-end px-8\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>{\n // 保存配置并返回主视图\n updateCurrentView('main', {\n selectedConfigId: selectedConfigId\n });\n },\n className: \"w-[100px] h-[40px] bg-gradient-to-b from-[#b6dae7] to-[#65dfff] rounded-sm flex items-center justify-center text-black font-bold shadow-lg\",\n children: \"保存\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 471,\n columnNumber: 25\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 470,\n columnNumber: 21\n }, this);\n case 'cfp-conunt':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[60px] bg-[#132843] flex items-center justify-end px-8\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>{\n // 保存配置并返回主视图\n updateCurrentView('setup', {\n selectedConfigId: selectedConfigId\n });\n },\n className: \"w-[100px] h-[40px] bg-gradient-to-b from-[#b6dae7] to-[#65dfff] rounded-sm flex items-center justify-center text-black font-bold shadow-lg\",\n children: \"保存\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 485,\n columnNumber: 25\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 484,\n columnNumber: 21\n }, this);\n default:\n return null;\n }\n };\n const renderCFPCONUNTContent = ()=>{\n const currentConfig = currentProject?.testConfigs.find((config)=>config.id === selectedConfigId);\n if (!currentConfig) return null;\n const handleValueChange = (field, value)=>{\n const currentConfig = currentProject?.testConfigs.find((config)=>config.id === selectedConfigId);\n if (!currentConfig) return;\n // 更新当前配置的参数\n const updatedConfig = {\n ...currentConfig,\n params: {\n ...currentConfig.params,\n [field]: value\n }\n };\n // 更新项目中的测试配置\n const updatedProject = {\n ...currentProject,\n testConfigs: currentProject.testConfigs.map((config)=>config.id === selectedConfigId ? updatedConfig : config)\n };\n // 调用displayStore的updateProject方法更新状态\n updateProject(_store_displayStore__WEBPACK_IMPORTED_MODULE_6__[\"default\"].getState().selectedIndexes.projectIndex, updatedProject);\n };\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 bg-[#0f172a] flex flex-col relative\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute inset-0\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: (0,_utils_asset__WEBPACK_IMPORTED_MODULE_9__.getAssetUrl)(`/olts-weldingPointSet.png`),\n alt: \"CFPCOUNUNT\",\n fill: true,\n className: \"object-contain\",\n sizes: \"100vw\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 539,\n columnNumber: 21\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 538,\n columnNumber: 17\n }, this),\n currentConfig.params.connectorCount > 2 && /*#__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: \"absolute flex flex-col gap-10 pl-56.5 pt-45\",\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)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: (0,_utils_asset__WEBPACK_IMPORTED_MODULE_9__.getAssetUrl)(`/icon-connector.svg`),\n alt: \"connector\",\n width: 30,\n height: 30,\n className: \"object-contain\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 550,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"absolute top-1/2 left-1/2 transform -translate-x-1/2 -translate-y-1/2 text-white\",\n children: currentConfig.params.connectorCount - 2\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 557,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 549,\n columnNumber: 21\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 548,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute flex flex-col gap-10 pl-43 pt-45\",\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)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: (0,_utils_asset__WEBPACK_IMPORTED_MODULE_9__.getAssetUrl)(`/icon-connector.svg`),\n alt: \"connector\",\n width: 30,\n height: 30,\n className: \"object-contain\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 564,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"absolute top-1/2 left-1/2 transform -translate-x-1/2 -translate-y-1/2 text-white\",\n children: currentConfig.params.connectorCount - 2\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 571,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 563,\n columnNumber: 21\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 562,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 547,\n columnNumber: 62\n }, this),\n currentConfig.params.spliceCount > 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: \"absolute flex flex-col gap-10 pl-57 pt-65\",\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)(\"div\", {\n className: \"w-6 h-6 rounded-full bg-[#104878]\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 580,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"absolute top-1/2 left-1/2 transform -translate-x-1/2 -translate-y-1/2 text-white\",\n children: currentConfig.params.spliceCount\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 581,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 579,\n columnNumber: 21\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 578,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute flex flex-col gap-10 pl-44 pt-65\",\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)(\"div\", {\n className: \"w-6 h-6 rounded-full bg-[#104878]\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 588,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"absolute top-1/2 left-1/2 transform -translate-x-1/2 -translate-y-1/2 text-white\",\n children: currentConfig.params.spliceCount\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 589,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 587,\n columnNumber: 21\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 586,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 577,\n columnNumber: 59\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"relative flex flex-col gap-10 pl-75 pt-30\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"number\",\n min: \"2\",\n max: \"20\",\n defaultValue: currentConfig.params.connectorCount,\n onChange: (e)=>handleValueChange('connectorCount', e.target.value),\n onKeyDown: (e)=>e.preventDefault(),\n className: \"w-16 h-8 px-2 bg-[#104878] rounded text-center focus:outline-none focus:ring-2 focus:ring-[#0ff] text-white\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 598,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"ml-4 text-base font-roboto select-none text-black\",\n children: \"全部连接\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 607,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 597,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"number\",\n min: \"0\",\n max: \"18\",\n defaultValue: currentConfig.params.spliceCount,\n onChange: (e)=>handleValueChange('spliceCount', e.target.value),\n onKeyDown: (e)=>e.preventDefault(),\n className: \"w-16 h-8 px-2 bg-[#104878] rounded text-center focus:outline-none focus:ring-2 focus:ring-[#0ff] text-white\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 610,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"ml-4 text-base font-roboto select-none text-black\",\n children: \"接头\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 619,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 609,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"number\",\n min: \"1\",\n max: \"1\",\n defaultValue: currentConfig.params.refJumper,\n onChange: (e)=>handleValueChange('refJumper', e.target.value),\n onKeyDown: (e)=>e.preventDefault(),\n className: \"w-16 h-8 px-2 bg-[#104878] rounded text-center focus:outline-none focus:ring-2 focus:ring-[#0ff] text-white\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 622,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"ml-4 text-base font-roboto select-none text-black\",\n children: \"跳线参照\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 631,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 621,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 596,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 537,\n columnNumber: 13\n }, this);\n };\n // 渲染内容\n const renderContent = ()=>{\n const { view } = navigation.current;\n switch(view){\n case 'main':\n return renderMainContent();\n case 'setup':\n return renderSetupContent();\n case 'cfp-conunt':\n return renderCFPCONUNTContent();\n default:\n return renderMainContent();\n }\n };\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full h-full flex flex-col overflow-hidden\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_StatusBar__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {}, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 656,\n columnNumber: 13\n }, this),\n renderTitleBar(),\n renderContent(),\n renderFooter()\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/TestConfig.js\",\n lineNumber: 655,\n columnNumber: 9\n }, this);\n}\n\n__webpack_async_result__();\n} catch(e) { __webpack_async_result__(e); } });//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHBhZ2VzLWRpci1ub2RlKS8uL3NyYy9jb21wb25lbnRzL2RzeHBhZ2UvZ2VuZXJhbC9UZXN0Q29uZmlnLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFtRDtBQUNwQjtBQUNxQjtBQUNGO0FBQ007QUFDTDtBQUNmO0FBQ0M7QUFDTztBQUk3QixTQUFTWTtJQUNwQixNQUFNLENBQUNDLGtCQUFrQkMsb0JBQW9CLEdBQUdiLCtDQUFRQSxDQUFDO0lBQ3pELE1BQU0sRUFDRmMsaUJBQWlCLEVBQ2pCQyxVQUFVLEVBQ1ZDLFVBQVUsRUFDVkMsaUJBQWlCLEVBQ2pCQyxNQUFNLEVBQ05DLGtCQUFrQixFQUNsQkMsYUFBYSxFQUNiQyxVQUFVLEVBQ1ZDLGVBQWUsRUFDbEIsR0FBR2hCLCtEQUFlQTtJQUVuQixXQUFXO0lBQ1gsTUFBTWlCLGlCQUFpQlQ7SUFFdkIsUUFBUTtJQUNSLE1BQU0sRUFBRVUsb0JBQW9CLEVBQUUsR0FBR2xCLG9FQUF3QjtJQUN6RCxNQUFNb0IsZ0JBQWdCRjtJQUN0QixNQUFNRyxZQUFZRCxjQUFjRSxNQUFNLENBQUNELFNBQVM7SUFDaEQsTUFBTUUsY0FBY0YsVUFBVUcsUUFBUSxDQUFDO0lBRXZDLFlBQVk7SUFDWjdCLGdEQUFTQTtnQ0FBQztZQUNGLGlCQUFpQjtZQUNqQixNQUFNOEIscUJBQXFCaEIsV0FBV2lCLE9BQU8sQ0FBQ0osTUFBTSxFQUFFaEI7WUFDdEQsSUFBSW1CLG9CQUFvQjtnQkFDcEJsQixvQkFBb0JrQjtnQkFDcEI7WUFDSjtZQUVBLHFCQUFxQjtZQUNyQixNQUFNRSx5QkFBeUIzQixvRUFBd0IsR0FBRzRCLGVBQWUsQ0FBQ0MsZUFBZTtZQUN6RixJQUFJWixnQkFBZ0JhLGVBQWVILDBCQUEwQixHQUFHO2dCQUM1RHBCLG9CQUFvQlUsZUFBZWEsV0FBVyxDQUFDSCx1QkFBdUIsQ0FBQ0ksRUFBRTtZQUM3RTtZQUVBLGFBQWE7WUFDYixJQUFJdEIsV0FBV2lCLE9BQU8sQ0FBQ00sSUFBSSxLQUFL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QkFDSSw4REFBQ0M7UUFBSUMsV0FBVTs7MEJBQ1gsOERBQUN4QyxpRUFBU0E7Ozs7O1lBQ1Q0RDtZQUNBOEI7WUFDQTFCOzs7Ozs7O0FBR2IiLCJzb3VyY2VzIjpbIi9vcHQvZGV2L2VzdC1kc3gvc3JjL2NvbXBvbmVudHMvZHN4cGFnZS9nZW5lcmFsL1Rlc3RDb25maWcuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlLCB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCc7XHJcbmltcG9ydCBJbWFnZSBmcm9tICduZXh0L2ltYWdlJztcclxuaW1wb3J0IFN0YXR1c0JhciBmcm9tICdAL2NvbXBvbmVudHMvbGliLy9TdGF0dXNCYXInO1xyXG5pbXBvcnQgVGl0bGVCYXIgZnJvbSAnQC9jb21wb25lbnRzL2xpYi8vVGl0bGVCYXInO1xyXG5pbXBvcnQgU3ViVGl0bGVCYXIgZnJvbSAnQC9jb21wb25lbnRzL2xpYi8vU3ViVGl0bGVCYXInO1xyXG5pbXBvcnQgdXNlRGlzcGxheVN0b3JlIGZyb20gJ0Avc3RvcmUvZGlzcGxheVN0b3JlJztcclxuaW1wb3J0IHsgdjQgYXMgdXVpZHY0IH0gZnJvbSAndXVpZCc7XHJcbmltcG9ydCBNZW51TGlzdCBmcm9tICcuL01lbnVMaXN0LmpzJztcclxuaW1wb3J0IHsgZ2V0QXNzZXRVcmwgfSBmcm9tICdAL3V0aWxzL2Fzc2V0JztcclxuXHJcblxyXG5cclxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gVGVzdENvbmZpZygpIHtcclxuICAgIGNvbnN0IFtzZWxlY3RlZENvbmZpZ0lkLCBzZXRTZWxlY3RlZENvbmZpZ0lkXSA9IHVzZVN0YXRlKG51bGwpO1xyXG4gICAgY29uc3QgeyBcclxuICAgICAgICBnZXRDdXJyZW50UHJvamVjdCxcclxuICAgICAgICBuYXZpZ2F0aW9uLFxyXG4gICAgICAgIG5hdmlnYXRlVG8sXHJcbiAgICAgICAgdXBkYXRlQ3VycmVudFZpZXcsXHJcbiAgICAgICAgZ29CYWNrLFxyXG4gICAgICAgIHNldFNlbGVjdGVkSW5kZXhlcyxcclxuICAgICAgICB1cGRhdGVQcm9qZWN0LFxyXG4gICAgICAgIGFkZFByb2plY3QsXHJcbiAgICAgICAgc2V0VG9hc3RNZXNzYWdlXHJcbiAgICB9ID0gdXNlRGlzcGxheVN0b3JlKCk7XHJcblxyXG4gICAgLy8g6I635Y+W5b2T5YmN6aG555uu5pWw5o2uXHJcbiAgICBjb25zdCBjdXJyZW50UHJvamVjdCA9IGdldEN1cnJlbnRQcm9qZWN0KCk7XHJcblxyXG4gICAgLy8g5Y2V5aSa5qih5Yik5patXHJcbiAgICBjb25zdCB7IGdldEN1cnJlbnRUZXN0Q29uZmlnIH0gPSB1c2VEaXNwbGF5U3RvcmUuZ2V0U3RhdGUoKTtcclxuICAgIGNvbnN0IGN1cnJlbnRDb25maWcgPSBnZXRDdXJyZW50VGVzdENvbmZpZygpO1xyXG4gICAgY29uc3QgY2FibGVUeXBlID0gY3VycmVudENvbmZpZy5wYXJhbXMuY2FibGVUeXBlO1xyXG4gICAgY29uc3QgaXNNdWx0aU1vZGUgPSBjYWJsZVR5cGUuaW5jbHVkZXMoJ09NJyk7XHJcblxyXG4gICAgLy8g6K6+572u6buY6K6k6YCJ5Lit55qE6YWN572uXHJcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xyXG4gICAgICAgICAgICAvLyDkvJjlhYjkvb/nlKjlr7zoiKrlj4LmlbDkuK3nmoTphY3nva5JRFxyXG4gICAgICAgICAgICBjb25zdCBjb25maWdJZEZyb21QYXJhbXMgPSBuYXZpZ2F0aW9uLmN1cnJlbnQucGFyYW1zPy5zZWxlY3RlZENvbmZpZ0lkO1xyXG4gICAgICAgICAgICBpZiAoY29uZmlnSWRGcm9tUGFyYW1zKSB7XHJcbiAgICAgICAgICAgICAgICBzZXRTZWxlY3RlZENvbmZpZ0lkKGNvbmZpZ0lkRnJvbVBhcmFtcyk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC8vIOWmguaenOayoeacieWPguaVsO+8jOS9v+eUqOW9k+WJjemAieS4reeahOmFjee9rue0ouW8lVxyXG4gICAgICAgICAgICBjb25zdCBjdXJyZW50VGVzdENvbmZpZ0luZGV4ID0gdXNlRGlzcGxheVN0b3JlLmdldFN0YXRlKCkuc2VsZWN0ZWRJbmRleGVzLnRlc3RDb25maWdJbmRleDtcclxuICAgICAgICAgICAgaWYgKGN1cnJlbnRQcm9qZWN0Py50ZXN0Q29uZmlncyAmJiBjdXJyZW50VGVzdENvbmZpZ0luZGV4ID49IDApIHtcclxuICAgICAgICAgICAgICAgIHNldFNlbGVjdGVkQ29uZmlnSWQoY3VycmVudFByb2plY3QudGVzdENvbmZpZ3NbY3VycmVudFRlc3RDb25maWdJbmRleF0uaWQpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAvLyDnoa7kv53lr7zoiKrljoblj7LmraPnoa7orrDlvZVcclxuICAgICAgICAgICAgaWYgKG5hdmlnYXRpb24uY3VycmVudC5uYW1lID09PSAndGVzdGNvbmZpZycgJiYgbmF2aWdhdGlvbi5jdXJyZW50LnZpZXcgPT09ICdtYWluJykge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgY3VycmVudCA9IG5hdmlnYXRpb24uY3VycmVudDtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHByZXZpb3VzID0gbmF2aWdhdGlvbi5wcmV2aW91cztcclxuICAgICAgICAgICAgICAgIGlmICghcHJldmlvdXMgfHwgcHJldmlvdXMubmFtZSAhPT0gJ3Rlc3Rjb25maWcnIHx8IHByZXZpb3VzLnZpZXcgIT09ICdtYWluJykge1xyXG4gICAgICAgICAgICAgICAgICAgIHVzZURpc3BsYXlTdG9yZS5nZXRTdGF0ZSgpLm5hdmlnYXRlVG8oJ3Rlc3Rjb25maWcnLCAnbWFpbicsIGN1cnJlbnQucGFyYW1zKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0sIFtjdXJyZW50UHJvamVjdCwgbmF2aWdhdGlvbi5jdXJyZW50LnBhcmFtc10pO1xyXG5cclxuICAgIC8vIOa4suafk+S4u+inhuWbvuWGheWuuVxyXG4gICAgY29uc3QgcmVuZGVyTWFpbkNvbnRlbnQgPSAoKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJoLVs0OTBweF0gZmxleC0xIGJnLVsjRDVERkVCXSBwLTRcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaC1mdWxsIG92ZXJmbG93LXktYXV0byBzcGFjZS15LTIgcHItMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIHtjdXJyZW50UHJvamVjdD8udGVzdENvbmZpZ3MubWFwKChjb25maWcpID0+IChcclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17Y29uZmlnLmlkfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiaC1bMTAwcHhdIGJnLVsjRjhGNkY3XSByb3VuZGVkLXNtIHAtNCBzaGFkb3ctbGcgZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTQgY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFNlbGVjdGVkQ29uZmlnSWQoY29uZmlnLmlkKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyDkv53lrZjpgInkuK3nmoTphY3nva5JROWIsOWvvOiIquWPguaVsFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZUN1cnJlbnRWaWV3KCdtYWluJywgeyBzZWxlY3RlZENvbmZpZ0lkOiBjb25maWcuaWQgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctNiBoLTYgYm9yZGVyLTIgYm9yZGVyLWdyYXktNjAwIHJvdW5kZWQtZnVsbCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtzZWxlY3RlZENvbmZpZ0lkID09PSBjb25maWcuaWQgJiYgKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctNCBoLTQgYmctYmx1ZS01MDAgcm91bmRlZC1mdWxsXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXgtMSByZWxhdGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibXQtMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y29uZmlnLm1vZHVsZVR5cGUgPT09ICc4MDAwJyAmJiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1ibGFjayB0ZXh0LXNtXCI+e2NvbmZpZy5wYXJhbXMubGltaXRWYWx1ZX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtYmxhY2sgdGV4dC1zbVwiPntjb25maWcucGFyYW1zLmNhYmxlVHlwZX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtYmxhY2sgdGV4dC1zbVwiPntjb25maWcucGFyYW1zLndpcmVPcmRlcn08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y29uZmlnLm1vZHVsZVR5cGUgPT09ICdjZnAnICYmIChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LWJsYWNrIHRleHQtc21cIj7mmbrog73ov5znq688L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtYmxhY2sgdGV4dC1zbVwiPntjb25maWcucGFyYW1zLmxpbWl0VmFsdWV9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LWJsYWNrIHRleHQtc21cIj57Y29uZmlnLnBhcmFtcy5jYWJsZVR5cGV9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LWJsYWNrIHRleHQtc21cIj57Y29uZmlnLnBhcmFtcy5yZWZKdW1wZXJ9IOi3s+e6v+WPgueFpzwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtjb25maWcubW9kdWxlVHlwZSA9PT0gJ29mcCcgJiYgKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtYmxhY2sgdGV4dC1zbVwiPuiHquWKqE9URFI8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtYmxhY2sgdGV4dC1zbVwiPntjb25maWcucGFyYW1zLmxpbWl0VmFsdWV9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LWJsYWNrIHRleHQtc21cIj57Y29uZmlnLnBhcmFtcy5jYWJsZVR5cGV9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Lz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtZ3JheS00MDAgdGV4dC1zbSBhYnNvbHV0ZSB0b3AtMCByaWdodC0wXCI+e2NvbmZpZy5tb2R1bGVsYWJsZX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LTMgaC0zIHJlbGF0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEltYWdlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz17Z2V0QXNzZXRVcmwoJy9hcnJvdy5wbmcnKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0PVwi566t5aS0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJvYmplY3QtY29udGFpblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICApKX1cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICApO1xyXG4gICAgfTtcclxuXHJcbiAgICAvLyDmuLLmn5Porr7nva7op4blm77lhoXlrrlcclxuICAgIGNvbnN0IHJlbmRlclNldHVwQ29udGVudCA9ICgpID0+IHtcclxuICAgICAgICBjb25zdCBjdXJyZW50Q29uZmlnID0gY3VycmVudFByb2plY3Q/LnRlc3RDb25maWdzLmZpbmQoXHJcbiAgICAgICAgICAgIGNvbmZpZyA9PiBjb25maWcuaWQgPT09IHNlbGVjdGVkQ29uZmlnSWRcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICBpZiAoIWN1cnJlbnRDb25maWcpIHJldHVybiBudWxsO1xyXG5cclxuICAgICAgICBjb25zdCByZW5kZXJDb25maWdDb250ZW50ID0gKCkgPT4ge1xyXG4gICAgICAgICAgICBzd2l0Y2ggKGN1cnJlbnRDb25maWcubW9kdWxlVHlwZSkge1xyXG4gICAgICAgICAgICAgICAgY2FzZSAnODAwMCc6XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJzcGFjZS15LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwic3BhY2UteS0wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiaC1bNTBweF0gYmctWyNGOEY2RjddIHJvdW5kZWQtdC1zbSBwLTQgc2hhZG93LWxnIGZsZXgganVzdGlmeS1iZXR3ZWVuIGl0ZW1zLWNlbnRlciBjdXJzb3ItcG9pbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IG5hdmlnYXRlVG8oJ21lbnVsaXN0JywgJ3NldHVwJywgeyBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lbnVUeXBlOiAnQ0FCTEVfVFlQRScsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZENvbmZpZ0lkOiBzZWxlY3RlZENvbmZpZ0lkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFja1RvOiAndGVzdGNvbmZpZycsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrVmlldzogJ3NldHVwJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1ibGFjayB0ZXh0LWwgZm9udC1ib2xkXCI+55S157yG57G75Z6L77yae2N1cnJlbnRDb25maWcucGFyYW1zLmNhYmxlVHlwZX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LTMgaC0zIHJlbGF0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SW1hZ2Ugc3JjPXtnZXRBc3NldFVybCgnL2Fycm93LnBuZycpfSBhbHQ9XCLnrq3lpLRcIiBmaWxsIGNsYXNzTmFtZT1cIm9iamVjdC1jb250YWluXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJoLVs1MHB4XSBiZy1ncmFkaWVudC10by1iIGZyb20tWyNmZmZmZmZdIHRvLVsjZmZmZmZmXSByb3VuZGVkLWItc20gcC00IHNoYWRvdy1sZyBmbGV4IGp1c3RpZnktYmV0d2VlbiBpdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LWJsYWNrIHRleHQtbFwiPk5WUO+8muagueaNrueUtee8huexu+Wei+eUn+aIkDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctMyBoLTMgcmVsYXRpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJbWFnZSBzcmM9e2dldEFzc2V0VXJsKCcvYXJyb3cucG5nJyl9IGFsdD1cIueureWktFwiIGZpbGwgY2xhc3NOYW1lPVwib2JqZWN0LWNvbnRhaW5cIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJzcGFjZS15LTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJoLVs1MHB4XSBiZy1bI0Y4RjZGN10gcm91bmRlZC10LXNtIHAtNCBzaGFkb3ctbGcgZmxleCBqdXN0aWZ5LWJldHdlZW4gaXRlbXMtY2VudGVyIGN1cnNvci1wb2ludGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gbmF2aWdhdGVUbygnbWVudWxpc3QnLCAnc2V0dXAnLCB7IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVudVR5cGU6ICdMSU1JVF9WQUxVRScsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZENvbmZpZ0lkOiBzZWxlY3RlZENvbmZpZ0lkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFja1RvOiAndGVzdGNvbmZpZycsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrVmlldzogJ3NldHVwJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1ibGFjayB0ZXh0LWwgZm9udC1ib2xkXCI+5rWL6K+V5p6B6ZmQ5YC877yae2N1cnJlbnRDb25maWcucGFyYW1zLmxpbWl0VmFsdWV9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy0zIGgtMyByZWxhdGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEltYWdlIHNyYz17Z2V0QXNzZXRVcmwoJy9hcnJvdy5wbmcnKX0gYWx0PVwi566t5aS0XCIgZmlsbCBjbGFzc05hbWU9XCJvYmplY3QtY29udGFpblwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaC1bNTBweF0gYmctZ3JhZGllbnQtdG8tYiBmcm9tLVsjZmZmZmZmXSB0by1bI2ZmZmZmZl0gIHAtNCBzaGFkb3ctbGcgZmxleCBqdXN0aWZ5LWJldHdlZW4gaXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1ibGFjayB0ZXh0LWxcIj7lrZjlgqjmtYvor5XmlbDmja7vvJrlvIA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LTMgaC0zIHJlbGF0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SW1hZ2Ugc3JjPXtnZXRBc3NldFVybCgnL2Fycm93LnBuZycpfSBhbHQ9XCLnrq3lpLRcIiBmaWxsIGNsYXNzTmFtZT1cIm9iamVjdC1jb250YWluXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJoLVs1MHB4XSBiZy1ncmFkaWVudC10by1iIGZyb20tWyNmZmZmZmZdIHRvLVsjZmZmZmZmXSByb3VuZGVkLWItc20gcC00IHNoYWRvdy1sZyBmbGV4IGp1c3RpZnktYmV0d2VlbiBpdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LWJsYWNrIHRleHQtbFwiPlREUi9URFjvvJrku4XlpLHotKU8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LTMgaC0zIHJlbGF0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SW1hZ2Ugc3JjPXtnZXRBc3NldFVybCgnL2Fycm93LnBuZycpfSBhbHQ9XCLnrq3lpLRcIiBmaWxsIGNsYXNzTmFtZT1cIm9iamVjdC1jb250YWluXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiaC1bNTBweF0gYmctWyNGOEY2RjddIHJvdW5kZWQtc20gcC00IHNoYWRvdy1sZyBmbGV4IGp1c3RpZnktYmV0d2VlbiBpdGVtcy1jZW50ZXIgY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IG5hdmlnYXRlVG8oJ21lbnVsaXN0JywgJ3NldHVwJywgeyBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVudVR5cGU6ICdXSVJFX09SREVSJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRDb25maWdJZDogc2VsZWN0ZWRDb25maWdJZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFja1RvOiAndGVzdGNvbmZpZycsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tWaWV3OiAnc2V0dXAnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LWJsYWNrIHRleHQtbCBmb250LWJvbGRcIj7mj5LluqfphY3nva7vvJp7Y3VycmVudENvbmZpZy5wYXJhbXMud2lyZU9yZGVyfTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy0zIGgtMyByZWxhdGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SW1hZ2Ugc3JjPXtnZXRBc3NldFVybCgnL2Fycm93LnBuZycpfSBhbHQ9XCLnrq3lpLRcIiBmaWxsIGNsYXNzTmFtZT1cIm9iamVjdC1jb250YWluXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgY2FzZSAnY2ZwJzpcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInNwYWNlLXktNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJzcGFjZS15LTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImgtWzUwcHhdIGJnLVsjRjhGNkY3XSByb3VuZGVkLXQtc20gcC00IHNoYWRvdy1sZyBmbGV4IGp1c3RpZnktYmV0d2VlbiBpdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LWJsYWNrIHRleHQtbCBmb250LWJvbGRcIj7mtYvor5XnsbvlnovvvJrmmbrog73ov5znq688L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LTMgaC0zIHJlbGF0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SW1hZ2Ugc3JjPXtnZXRBc3NldFVybCgnL2Fycm93LnBuZycpfSBhbHQ9XCLnrq3lpLRcIiBmaWxsIGNsYXNzTmFtZT1cIm9iamVjdC1jb250YWluXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJoLVs1MHB4XSBiZy1ncmFkaWVudC10by1iIGZyb20tWyNmZmZmZmZdIHRvLVsjZmZmZmZmXSByb3VuZGVkLWItc20gcC00IHNoYWRvdy1sZyBmbGV4IGp1c3RpZnktYmV0d2VlbiBpdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LWJsYWNrIHRleHQtbFwiPuWPjOWQke+8muWFszwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctMyBoLTMgcmVsYXRpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJbWFnZSBzcmM9e2dldEFzc2V0VXJsKCcvYXJyb3cucG5nJyl9IGFsdD1cIueureWktFwiIGZpbGwgY2xhc3NOYW1lPVwib2JqZWN0LWNvbnRhaW5cIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJoLVs1MHB4XSBiZy1bI0Y4RjZGN10gcm91bmRlZC1zbSBwLTQgc2hhZG93LWxnIGZsZXgganVzdGlmeS1iZXR3ZWVuIGl0ZW1zLWNlbnRlciBjdXJzb3ItcG9pbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gbmF2aWdhdGVUbygnbWVudWxpc3QnLCAnc2V0dXAnLCB7IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZW51VHlwZTogJ0ZJQkVSX1RZUEUnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZENvbmZpZ0lkOiBzZWxlY3RlZENvbmZpZ0lkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrVG86ICd0ZXN0Y29uZmlnJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFja1ZpZXc6ICdzZXR1cCdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtYmxhY2sgdGV4dC1sIGZvbnQtYm9sZFwiPuWFiee6pOexu+Wei++8mntjdXJyZW50Q29uZmlnLnBhcmFtcy5jYWJsZVR5cGV9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LTMgaC0zIHJlbGF0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJbWFnZSBzcmM9e2dldEFzc2V0VXJsKCcvYXJyb3cucG5nJyl9IGFsdD1cIueureWktFwiIGZpbGwgY2xhc3NOYW1lPVwib2JqZWN0LWNvbnRhaW5cIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInNwYWNlLXktMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImgtWzUwcHhdIGJnLVsjRjhGNkY3XSByb3VuZGVkLXQtc20gcC00IHNoYWRvdy1sZyBmbGV4IGp1c3RpZnktYmV0d2VlbiBpdGVtcy1jZW50ZXIgY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBuYXZpZ2F0ZVRvKCdtZW51bGlzdCcsICdzZXR1cCcsIHsgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZW51VHlwZTogJ0NGUF9MSU1JVCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZENvbmZpZ0lkOiBzZWxlY3RlZENvbmZpZ0lkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFja1RvOiAndGVzdGNvbmZpZycsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrVmlldzogJ3NldHVwJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1ibGFjayB0ZXh0LWwgZm9udC1ib2xkXCI+5rWL6K+V5p6B6ZmQ5YC877yae2N1cnJlbnRDb25maWcucGFyYW1zLmxpbWl0VmFsdWV9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy0zIGgtMyByZWxhdGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEltYWdlIHNyYz17Z2V0QXNzZXRVcmwoJy9hcnJvdy5wbmcnKX0gYWx0PVwi566t5aS0XCIgZmlsbCBjbGFzc05hbWU9XCJvYmplY3QtY29udGFpblwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaC1bNTBweF0gYmctZ3JhZGllbnQtdG8tYiBmcm9tLVsjZmZmZmZmXSB0by1bI2ZmZmZmZl0gIHAtNCBzaGFkb3ctbGcgZmxleCBqdXN0aWZ5LWJldHdlZW4gaXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1ibGFjayB0ZXh0LWwgXCI+5Y+C54Wn5pa55rOV77yae2N1cnJlbnRDb25maWcucGFyYW1zLnJlZkp1bXBlcn0g6Lez57q/PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy0zIGgtMyByZWxhdGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEltYWdlIHNyYz17Z2V0QXNzZXRVcmwoJy9hcnJvdy5wbmcnKX0gYWx0PVwi566t5aS0XCIgZmlsbCBjbGFzc05hbWU9XCJvYmplY3QtY29udGFpblwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaC1bNTBweF0gYmctZ3JhZGllbnQtdG8tYiBmcm9tLVsjZmZmZmZmXSB0by1bI2ZmZmZmZl0gIHAtNCBzaGFkb3ctbGcgZmxleCBqdXN0aWZ5LWJldHdlZW4gaXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1ibGFjayB0ZXh0LWxcIj7ov57mjqXlmajnsbvlnovvvJpMQzwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctMyBoLTMgcmVsYXRpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJbWFnZSBzcmM9e2dldEFzc2V0VXJsKCcvYXJyb3cucG5nJyl9IGFsdD1cIueureWktFwiIGZpbGwgY2xhc3NOYW1lPVwib2JqZWN0LWNvbnRhaW5cIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImgtWzUwcHhdIGJnLWdyYWRpZW50LXRvLWIgZnJvbS1bI2ZmZmZmZl0gdG8tWyNmZmZmZmZdIHJvdW5kZWQtYi1zbSBwLTQgc2hhZG93LWxnIGZsZXgganVzdGlmeS1iZXR3ZWVuIGl0ZW1zLWNlbnRlciBjdXJzb3ItcG9pbnRlciBcIiBvbkNsaWNrPXsoKSA9PiB1cGRhdGVDdXJyZW50VmlldygnY2ZwLWNvbnVudCcpfT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LWJsYWNrIHRleHQtbFwiID7mjqXnur8v5o6l5aS055qE5pWw6YeP77yae2N1cnJlbnRDb25maWcucGFyYW1zLmNvbm5lY3RvckNvdW50fS97Y3VycmVudENvbmZpZy5wYXJhbXMuc3BsaWNlQ291bnR9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy0zIGgtMyByZWxhdGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEltYWdlIHNyYz17Z2V0QXNzZXRVcmwoJy9hcnJvdy5wbmcnKX0gYWx0PVwi566t5aS0XCIgZmlsbCBjbGFzc05hbWU9XCJvYmplY3QtY29udGFpblwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICBjYXNlICdvZnAnOlxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwic3BhY2UteS00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInNwYWNlLXktMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaC1bNTBweF0gYmctWyNGOEY2RjddIHJvdW5kZWQtdC1zbSBwLTQgc2hhZG93LWxnIGZsZXgganVzdGlmeS1iZXR3ZWVuIGl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtYmxhY2sgdGV4dC1sIGZvbnQtYm9sZFwiPua1i+ivleexu+Wei++8muiHquWKqE9URFI8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LTMgaC0zIHJlbGF0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SW1hZ2Ugc3JjPXtnZXRBc3NldFVybCgnL2Fycm93LnBuZycpfSBhbHQ9XCLnrq3lpLRcIiBmaWxsIGNsYXNzTmFtZT1cIm9iamVjdC1jb250YWluXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJoLVs1MHB4XSBiZy1ncmFkaWVudC10by1iIGZyb20tWyNmZmZmZmZdIHRvLVsjZmZmZmZmXSBwLTQgc2hhZG93LWxnIGZsZXgganVzdGlmeS1iZXR3ZWVuIGl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtYmxhY2sgdGV4dC1sIFwiPuWJjeWvvOihpeWBv++8muW8gDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctMyBoLTMgcmVsYXRpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsvKiA8SW1hZ2Ugc3JjPXtnZXRBc3NldFVybCgnL2Fycm93LnBuZycpfSBhbHQ9XCLnrq3lpLRcIiBmaWxsIGNsYXNzTmFtZT1cIm9iamVjdC1jb250YWluXCIgLz4gKi99XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaC1bNTBweF0gYmctZ3JhZGllbnQtdG8tYiBmcm9tLVsjZmZmZmZmXSB0by1bI2ZmZmZmZl0gcm91bmRlZC1iLXNtICBwLTQgc2hhZG93LWxnIGZsZXgganVzdGlmeS1iZXR3ZWVuIGl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1ibGFjayB0ZXh0LWwgXCI+5rOi6ZW/77yae2N1cnJlbnRDb25maWcucGFyYW1zLmNhYmxlVHlwZS5pbmNsdWRlcygnT00nKSA/ICc4NTAgbm3jgIExMzEwbm0nIDogJzEzMTBubeOAgTE1NTBubSd9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LTMgaC0zIHJlbGF0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsvKiA8SW1hZ2Ugc3JjPXtnZXRBc3NldFVybCgnL2Fycm93LnBuZycpfSBhbHQ9XCLnrq3lpLRcIiBmaWxsIGNsYXNzTmFtZT1cIm9iamVjdC1jb250YWluXCIgLz4gKi99XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJoLVs1MHB4XSBiZy1bI0Y4RjZGN10gcm91bmRlZC1zbSBwLTQgc2hhZG93LWxnIGZsZXgganVzdGlmeS1iZXR3ZWVuIGl0ZW1zLWNlbnRlciBjdXJzb3ItcG9pbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gbmF2aWdhdGVUbygnbWVudWxpc3QnLCAnc2V0dXAnLCB7IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZW51VHlwZTogJ0ZJQkVSX1RZUEUnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZENvbmZpZ0lkOiBzZWxlY3RlZENvbmZpZ0lkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrVG86ICd0ZXN0Y29uZmlnJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFja1ZpZXc6ICdzZXR1cCdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtYmxhY2sgdGV4dC1sIGZvbnQtYm9sZFwiPuWFiee6pOexu+Wei++8mntjdXJyZW50Q29uZmlnLnBhcmFtcy5jYWJsZVR5cGV9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LTMgaC0zIHJlbGF0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJbWFnZSBzcmM9e2dldEFzc2V0VXJsKCcvYXJyb3cucG5nJyl9IGFsdD1cIueureWktFwiIGZpbGwgY2xhc3NOYW1lPVwib2JqZWN0LWNvbnRhaW5cIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImgtWzUwcHhdIGJnLVsjRjhGNkY3XSByb3VuZGVkLXNtIHAtNCBzaGFkb3ctbGcgZmxleCBqdXN0aWZ5LWJldHdlZW4gaXRlbXMtY2VudGVyIGN1cnNvci1wb2ludGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBuYXZpZ2F0ZVRvKCdtZW51bGlzdCcsICdzZXR1cCcsIHsgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lbnVUeXBlOiAnT0ZQX0xJTUlUJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRDb25maWdJZDogc2VsZWN0ZWRDb25maWdJZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFja1RvOiAndGVzdGNvbmZpZycsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tWaWV3OiAnc2V0dXAnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LWJsYWNrIHRleHQtbCBmb250LWJvbGRcIj7mtYvor5XmnoHpmZDlgLzvvJp7Y3VycmVudENvbmZpZy5wYXJhbXMubGltaXRWYWx1ZX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctMyBoLTMgcmVsYXRpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEltYWdlIHNyYz17Z2V0QXNzZXRVcmwoJy9hcnJvdy5wbmcnKX0gYWx0PVwi566t5aS0XCIgZmlsbCBjbGFzc05hbWU9XCJvYmplY3QtY29udGFpblwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXgtMSBiZy1bI0Q1REZFQl0gcC00XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImgtZnVsbCBiZy1ncmFkaWVudC10by1iIGZyb20tWyNlOWU5ZTldIHRvLVsjI2ZmZmZmZjBkXSByb3VuZGVkLXNtIHAtNCBzaGFkb3ctbGcgZmxleCBmbGV4LWNvbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImZsZXgganVzdGlmeS1iZXR3ZWVuIGl0ZW1zLWNlbnRlciBtYi00IGN1cnNvci1wb2ludGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gbmF2aWdhdGVUbygnbWVudWxpc3QnLCAnc2V0dXAnLCB7IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVudVR5cGU6ICdNT0RVTEUnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRDb25maWdJZDogc2VsZWN0ZWRDb25maWdJZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tUbzogJ3Rlc3Rjb25maWcnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFja1ZpZXc6ICdzZXR1cCdcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtYmxhY2sgZm9udC1ib2xkIHRleHQtbGdcIj7mqKHlnZfvvJp7Y3VycmVudENvbmZpZy5tb2R1bGVsYWJsZX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LTUgaC01IHJlbGF0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SW1hZ2Ugc3JjPXtnZXRBc3NldFVybCgnL2Fycm93LnBuZycpfSBhbHQ9XCLnrq3lpLRcIiBmaWxsIGNsYXNzTmFtZT1cIm9iamVjdC1jb250YWluXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4LTEgb3ZlcmZsb3ctYXV0b1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7cmVuZGVyQ29uZmlnQ29udGVudCgpfVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICk7XHJcbiAgICB9O1xyXG5cclxuICAgIC8vIOa4suafk+agh+mimOagj1xyXG4gICAgY29uc3QgcmVuZGVyVGl0bGVCYXIgPSAoKSA9PiB7XHJcbiAgICAgICAgY29uc3QgeyB2aWV3IH0gPSBuYXZpZ2F0aW9uLmN1cnJlbnQ7XHJcbiAgICAgICAgXHJcbiAgICAgICAgY29uc3QgaGFuZGxlQmFjayA9ICgpID0+IHtcclxuICAgICAgICAgICAgaWYgKHZpZXcgPT09ICdzZXR1cCcpIHtcclxuICAgICAgICAgICAgICB1cGRhdGVDdXJyZW50VmlldygnbWFpbicpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgZ29CYWNrKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH07XHJcbiAgICAgICAgXHJcbiAgICAgICAgc3dpdGNoICh2aWV3KSB7XHJcbiAgICAgICAgICAgIGNhc2UgJ21haW4nOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICAgICAgICA8VGl0bGVCYXIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPVwi5pu05pS55rWL6K+VXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tUbz17bmF2aWdhdGlvbi5wcmV2aW91cz8ubmFtZSB8fCAnaG9tZSd9IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB2aWV3PXtuYXZpZ2F0aW9uLnByZXZpb3VzPy52aWV3IHx8ICdtYWluJ30gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcz17bmF2aWdhdGlvbi5wcmV2aW91cz8ucGFyYW1zIHx8IHt9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkJhY2s9e2hhbmRsZUJhY2t9XHJcbiAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIGNhc2UgJ3NldHVwJzpcclxuICAgICAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICAgICAgPFRpdGxlQmFyIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT1cIua1i+ivleiuvue9rlwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBiYWNrVG89e25hdmlnYXRpb24ucHJldmlvdXM/Lm5hbWUgfHwgJ3Rlc3Rjb25maWcnfSBcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmlldz17bmF2aWdhdGlvbi5wcmV2aW91cz8udmlldyB8fCAnbWFpbid9IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXM9e25hdmlnYXRpb24ucHJldmlvdXM/LnBhcmFtcyB8fCB7fX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgb25CYWNrPXtoYW5kbGVCYWNrfVxyXG4gICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICBjYXNlICdjZnAtY29udW50JzpcclxuICAgICAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICAgICAgPFRpdGxlQmFyIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT1cIiBcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmlldz17J3NldHVwJ30gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcz17bmF2aWdhdGlvbi5wcmV2aW91cz8ucGFyYW1zIHx8IHt9fVxyXG4gICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgLy8g5riy5p+T5bqV6YOo5qCPXHJcbiAgICBjb25zdCByZW5kZXJGb290ZXIgPSAoKSA9PiB7XHJcbiAgICAgICAgY29uc3QgeyB2aWV3IH0gPSBuYXZpZ2F0aW9uLmN1cnJlbnQ7XHJcbiAgICAgICAgXHJcbiAgICAgICAgc3dpdGNoICh2aWV3KSB7XHJcbiAgICAgICAgICAgIGNhc2UgJ21haW4nOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImgtWzYwcHhdIGJnLVsjMTMyODQzXSBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gcHgtOFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIOWIm+W7uuaWsOeahOa1i+ivlemFjee9rlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5ld0NvbmZpZyA9IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHV1aWR2NCgpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGVUeXBlOiAnODAwMCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZWxhYmxlOiAn6ZOc57yG5rWL6K+V5LuqJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW1pdFZhbHVlOiAnVElBIENhdCA2IENoYW5uZWwnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FibGVUeXBlOiAnQ2F0NiBVL1VUUCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXJlT3JkZXI6ICdUNTY4QicsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZKdW1wZXI6ICcxJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwbGljZUNvdW50OiAnMCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25uZWN0b3JDb3VudDogJzInXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyDmm7TmlrDpobnnm67vvIzmt7vliqDmlrDnmoTmtYvor5XphY3nva5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1cGRhdGVkUHJvamVjdCA9IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uY3VycmVudFByb2plY3QsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RDb25maWdzOiBbLi4uY3VycmVudFByb2plY3QudGVzdENvbmZpZ3MsIG5ld0NvbmZpZ11cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZVByb2plY3QodXNlRGlzcGxheVN0b3JlLmdldFN0YXRlKCkuc2VsZWN0ZWRJbmRleGVzLnByb2plY3RJbmRleCwgdXBkYXRlZFByb2plY3QpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIOiuvue9ruaWsOmFjee9ruS4uumAieS4reeKtuaAgeW5tuS/neWtmOWIsOWvvOiIquWPguaVsFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFNlbGVjdGVkQ29uZmlnSWQobmV3Q29uZmlnLmlkKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVDdXJyZW50Vmlldygnc2V0dXAnLCB7IHNlbGVjdGVkQ29uZmlnSWQ6IG5ld0NvbmZpZy5pZCB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ3LVsxMDBweF0gaC1bNDBweF0gIHJvdW5kZWQtc20gZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgdGV4dC13aGl0ZSBmb250LWJvbGQgc2hhZG93LWxnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAg5paw5rWL6K+VXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghc2VsZWN0ZWRDb25maWdJZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUb2FzdE1lc3NhZ2UoJ+ivt+WFiOmAieaLqeS4gOS4qua1i+ivlemFjee9ricpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIOS/neWtmOmAieS4reeahOmFjee9rklE5Yiw5a+86Iiq5Y+C5pWwXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlQ3VycmVudFZpZXcoJ3NldHVwJywgeyBzZWxlY3RlZENvbmZpZ0lkOiBzZWxlY3RlZENvbmZpZ0lkIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInctWzEwMHB4XSBoLVs0MHB4XSAgcm91bmRlZC1zbSBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciB0ZXh0LXdoaXRlIGZvbnQtYm9sZCBzaGFkb3ctbGdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICDnvJbovpFcclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFzZWxlY3RlZENvbmZpZ0lkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRvYXN0TWVzc2FnZSgn6K+35YWI6YCJ5oup5LiA5Liq5rWL6K+V6YWN572uJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY29uZmlnSW5kZXggPSBjdXJyZW50UHJvamVjdC50ZXN0Q29uZmlncy5maW5kSW5kZXgoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZyA9PiBjb25maWcuaWQgPT09IHNlbGVjdGVkQ29uZmlnSWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFNlbGVjdGVkSW5kZXhlcyh7IHRlc3RDb25maWdJbmRleDogY29uZmlnSW5kZXggfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmF2aWdhdGVUbygnaG9tZScsICdtYWluJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidy1bMTAwcHhdIGgtWzQwcHhdIGJnLWdyYWRpZW50LXRvLWIgZnJvbS1bI2I2ZGFlN10gdG8tWyM2NWRmZmZdIHJvdW5kZWQtc20gZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgdGV4dC1ibGFjayBmb250LWJvbGQgc2hhZG93LWxnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAg5L2/55So5omA6YCJXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgY2FzZSAnc2V0dXAnOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImgtWzYwcHhdIGJnLVsjMTMyODQzXSBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWVuZCBweC04XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g5L+d5a2Y6YWN572u5bm26L+U5Zue5Li76KeG5Zu+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlQ3VycmVudFZpZXcoJ21haW4nLCB7IHNlbGVjdGVkQ29uZmlnSWQ6IHNlbGVjdGVkQ29uZmlnSWQgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidy1bMTAwcHhdIGgtWzQwcHhdIGJnLWdyYWRpZW50LXRvLWIgZnJvbS1bI2I2ZGFlN10gdG8tWyM2NWRmZmZdIHJvdW5kZWQtc20gZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgdGV4dC1ibGFjayBmb250LWJvbGQgc2hhZG93LWxnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAg5L+d5a2YXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgY2FzZSAnY2ZwLWNvbnVudCc6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaC1bNjBweF0gYmctWyMxMzI4NDNdIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktZW5kIHB4LThcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyDkv53lrZjphY3nva7lubbov5Tlm57kuLvop4blm75cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVDdXJyZW50Vmlldygnc2V0dXAnLCB7IHNlbGVjdGVkQ29uZmlnSWQ6IHNlbGVjdGVkQ29uZmlnSWQgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidy1bMTAwcHhdIGgtWzQwcHhdIGJnLWdyYWRpZW50LXRvLWIgZnJvbS1bI2I2ZGFlN10gdG8tWyM2NWRmZmZdIHJvdW5kZWQtc20gZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgdGV4dC1ibGFjayBmb250LWJvbGQgc2hhZG93LWxnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAg5L+d5a2YXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgcmVuZGVyQ0ZQQ09OVU5UQ29udGVudCA9ICgpID0+e1xyXG4gICAgICAgIGNvbnN0IGN1cnJlbnRDb25maWcgPSBjdXJyZW50UHJvamVjdD8udGVzdENvbmZpZ3MuZmluZChcclxuICAgICAgICAgICAgY29uZmlnID0+IGNvbmZpZy5pZCA9PT0gc2VsZWN0ZWRDb25maWdJZFxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIGlmICghY3VycmVudENvbmZpZykgcmV0dXJuIG51bGw7XHJcblxyXG4gICAgICAgIGNvbnN0IGhhbmRsZVZhbHVlQ2hhbmdlID0gKGZpZWxkLCB2YWx1ZSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBjdXJyZW50Q29uZmlnID0gY3VycmVudFByb2plY3Q/LnRlc3RDb25maWdzLmZpbmQoXHJcbiAgICAgICAgICAgICAgICBjb25maWcgPT4gY29uZmlnLmlkID09PSBzZWxlY3RlZENvbmZpZ0lkXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBpZiAoIWN1cnJlbnRDb25maWcpIHJldHVybjtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIC8vIOabtOaWsOW9k+WJjemFjee9rueahOWPguaVsFxyXG4gICAgICAgICAgICBjb25zdCB1cGRhdGVkQ29uZmlnID0ge1xyXG4gICAgICAgICAgICAgICAgLi4uY3VycmVudENvbmZpZyxcclxuICAgICAgICAgICAgICAgIHBhcmFtczoge1xyXG4gICAgICAgICAgICAgICAgICAgIC4uLmN1cnJlbnRDb25maWcucGFyYW1zLFxyXG4gICAgICAgICAgICAgICAgICAgIFtmaWVsZF06IHZhbHVlXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAvLyDmm7TmlrDpobnnm67kuK3nmoTmtYvor5XphY3nva5cclxuICAgICAgICAgICAgY29uc3QgdXBkYXRlZFByb2plY3QgPSB7XHJcbiAgICAgICAgICAgICAgICAuLi5jdXJyZW50UHJvamVjdCxcclxuICAgICAgICAgICAgICAgIHRlc3RDb25maWdzOiBjdXJyZW50UHJvamVjdC50ZXN0Q29uZmlncy5tYXAoY29uZmlnID0+IFxyXG4gICAgICAgICAgICAgICAgICAgIGNvbmZpZy5pZCA9PT0gc2VsZWN0ZWRDb25maWdJZCA/IHVwZGF0ZWRDb25maWcgOiBjb25maWdcclxuICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIC8vIOiwg+eUqGRpc3BsYXlTdG9yZeeahHVwZGF0ZVByb2plY3Tmlrnms5Xmm7TmlrDnirbmgIFcclxuICAgICAgICAgICAgdXBkYXRlUHJvamVjdCh1c2VEaXNwbGF5U3RvcmUuZ2V0U3RhdGUoKS5zZWxlY3RlZEluZGV4ZXMucHJvamVjdEluZGV4LCB1cGRhdGVkUHJvamVjdCk7XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4LTEgYmctWyMwZjE3MmFdIGZsZXggZmxleC1jb2wgcmVsYXRpdmVcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYWJzb2x1dGUgaW5zZXQtMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxJbWFnZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzcmM9e2dldEFzc2V0VXJsKGAvb2x0cy13ZWxkaW5nUG9pbnRTZXQucG5nYCl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFsdD1cIkNGUENPVU5VTlRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWxsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cIm9iamVjdC1jb250YWluXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZXM9XCIxMDB2d1wiXHJcbiAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAge2N1cnJlbnRDb25maWcucGFyYW1zLmNvbm5lY3RvckNvdW50ID4gMiAmJiAoPGRpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYWJzb2x1dGUgZmxleCBmbGV4LWNvbCBnYXAtMTAgcGwtNTYuNSBwdC00NVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicmVsYXRpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPEltYWdlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9e2dldEFzc2V0VXJsKGAvaWNvbi1jb25uZWN0b3Iuc3ZnYCl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ9XCJjb25uZWN0b3JcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9ezMwfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PXszMH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cIm9iamVjdC1jb250YWluXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cImFic29sdXRlIHRvcC0xLzIgbGVmdC0xLzIgdHJhbnNmb3JtIC10cmFuc2xhdGUteC0xLzIgLXRyYW5zbGF0ZS15LTEvMiB0ZXh0LXdoaXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y3VycmVudENvbmZpZy5wYXJhbXMuY29ubmVjdG9yQ291bnQtMn1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImFic29sdXRlIGZsZXggZmxleC1jb2wgZ2FwLTEwIHBsLTQzIHB0LTQ1XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyZWxhdGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8SW1hZ2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz17Z2V0QXNzZXRVcmwoYC9pY29uLWNvbm5lY3Rvci5zdmdgKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdD1cImNvbm5lY3RvclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD17MzB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9ezMwfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwib2JqZWN0LWNvbnRhaW5cIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwiYWJzb2x1dGUgdG9wLTEvMiBsZWZ0LTEvMiB0cmFuc2Zvcm0gLXRyYW5zbGF0ZS14LTEvMiAtdHJhbnNsYXRlLXktMS8yIHRleHQtd2hpdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtjdXJyZW50Q29uZmlnLnBhcmFtcy5jb25uZWN0b3JDb3VudC0yfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2Pil9XHJcbiAgICAgICAgICAgICAgICB7Y3VycmVudENvbmZpZy5wYXJhbXMuc3BsaWNlQ291bnQgPiAwICYmICg8ZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJhYnNvbHV0ZSBmbGV4IGZsZXgtY29sIGdhcC0xMCBwbC01NyBwdC02NVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicmVsYXRpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LTYgaC02IHJvdW5kZWQtZnVsbCBiZy1bIzEwNDg3OF1cIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwiYWJzb2x1dGUgdG9wLTEvMiBsZWZ0LTEvMiB0cmFuc2Zvcm0gLXRyYW5zbGF0ZS14LTEvMiAtdHJhbnNsYXRlLXktMS8yIHRleHQtd2hpdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtjdXJyZW50Q29uZmlnLnBhcmFtcy5zcGxpY2VDb3VudH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImFic29sdXRlIGZsZXggZmxleC1jb2wgZ2FwLTEwIHBsLTQ0IHB0LTY1XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyZWxhdGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctNiBoLTYgcm91bmRlZC1mdWxsIGJnLVsjMTA0ODc4XVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJhYnNvbHV0ZSB0b3AtMS8yIGxlZnQtMS8yIHRyYW5zZm9ybSAtdHJhbnNsYXRlLXgtMS8yIC10cmFuc2xhdGUteS0xLzIgdGV4dC13aGl0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2N1cnJlbnRDb25maWcucGFyYW1zLnNwbGljZUNvdW50fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2Pil9XHJcblxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyZWxhdGl2ZSBmbGV4IGZsZXgtY29sIGdhcC0xMCBwbC03NSBwdC0zMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWluPVwiMlwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4PVwiMjBcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRWYWx1ZT17Y3VycmVudENvbmZpZy5wYXJhbXMuY29ubmVjdG9yQ291bnR9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IGhhbmRsZVZhbHVlQ2hhbmdlKCdjb25uZWN0b3JDb3VudCcsIGUudGFyZ2V0LnZhbHVlKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uS2V5RG93bj17KGUpID0+IGUucHJldmVudERlZmF1bHQoKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInctMTYgaC04IHB4LTIgYmctWyMxMDQ4NzhdIHJvdW5kZWQgdGV4dC1jZW50ZXIgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzOnJpbmctMiBmb2N1czpyaW5nLVsjMGZmXSB0ZXh0LXdoaXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwibWwtNCB0ZXh0LWJhc2UgZm9udC1yb2JvdG8gc2VsZWN0LW5vbmUgdGV4dC1ibGFja1wiPuWFqOmDqOi/nuaOpTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJudW1iZXJcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbj1cIjBcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heD1cIjE4XCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0VmFsdWU9e2N1cnJlbnRDb25maWcucGFyYW1zLnNwbGljZUNvdW50fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiBoYW5kbGVWYWx1ZUNoYW5nZSgnc3BsaWNlQ291bnQnLCBlLnRhcmdldC52YWx1ZSl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbktleURvd249eyhlKSA9PiBlLnByZXZlbnREZWZhdWx0KCl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ3LTE2IGgtOCBweC0yIGJnLVsjMTA0ODc4XSByb3VuZGVkIHRleHQtY2VudGVyIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1czpyaW5nLTIgZm9jdXM6cmluZy1bIzBmZl0gdGV4dC13aGl0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cIm1sLTQgdGV4dC1iYXNlIGZvbnQtcm9ib3RvIHNlbGVjdC1ub25lIHRleHQtYmxhY2tcIj7mjqXlpLQ8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwibnVtYmVyXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW49XCIxXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXg9XCIxXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0VmFsdWU9e2N1cnJlbnRDb25maWcucGFyYW1zLnJlZkp1bXBlcn1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gaGFuZGxlVmFsdWVDaGFuZ2UoJ3JlZkp1bXBlcicsIGUudGFyZ2V0LnZhbHVlKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uS2V5RG93bj17KGUpID0+IGUucHJldmVudERlZmF1bHQoKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInctMTYgaC04IHB4LTIgYmctWyMxMDQ4NzhdIHJvdW5kZWQgdGV4dC1jZW50ZXIgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzOnJpbmctMiBmb2N1czpyaW5nLVsjMGZmXSB0ZXh0LXdoaXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwibWwtNCB0ZXh0LWJhc2UgZm9udC1yb2JvdG8gc2VsZWN0LW5vbmUgdGV4dC1ibGFja1wiPui3s+e6v+WPgueFpzwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICApO1xyXG5cclxuICAgIH07XHJcbiAgICAvLyDmuLLmn5PlhoXlrrlcclxuICAgIGNvbnN0IHJlbmRlckNvbnRlbnQgPSAoKSA9PiB7XHJcbiAgICAgICAgY29uc3QgeyB2aWV3IH0gPSBuYXZpZ2F0aW9uLmN1cnJlbnQ7XHJcbiAgICAgICAgXHJcbiAgICAgICAgc3dpdGNoICh2aWV3KSB7XHJcbiAgICAgICAgICAgIGNhc2UgJ21haW4nOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlbmRlck1haW5Db250ZW50KCk7XHJcbiAgICAgICAgICAgIGNhc2UgJ3NldHVwJzpcclxuICAgICAgICAgICAgICAgIHJldHVybiByZW5kZXJTZXR1cENvbnRlbnQoKTtcclxuICAgICAgICAgICAgY2FzZSAnY2ZwLWNvbnVudCc6XHJcbiAgICAgICAgICAgICAgICAgcmV0dXJuIHJlbmRlckNGUENPTlVOVENvbnRlbnQoKTtcclxuICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgIHJldHVybiByZW5kZXJNYWluQ29udGVudCgpO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgcmV0dXJuIChcclxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctZnVsbCBoLWZ1bGwgZmxleCBmbGV4LWNvbCBvdmVyZmxvdy1oaWRkZW5cIj5cclxuICAgICAgICAgICAgPFN0YXR1c0JhciAvPlxyXG4gICAgICAgICAgICB7cmVuZGVyVGl0bGVCYXIoKX1cclxuICAgICAgICAgICAge3JlbmRlckNvbnRlbnQoKX1cclxuICAgICAgICAgICAge3JlbmRlckZvb3RlcigpfVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgKTtcclxufSJdLCJuYW1lcyI6WyJSZWFjdCIsInVzZVN0YXRlIiwidXNlRWZmZWN0IiwiSW1hZ2UiLCJTdGF0dXNCYXIiLCJUaXRsZUJhciIsIlN1YlRpdGxlQmFyIiwidXNlRGlzcGxheVN0b3JlIiwidjQiLCJ1dWlkdjQiLCJNZW51TGlzdCIsImdldEFzc2V0VXJsIiwiVGVzdENvbmZpZyIsInNlbGVjdGVkQ29uZmlnSWQiLCJzZXRTZWxlY3RlZENvbmZpZ0lkIiwiZ2V0Q3VycmVudFByb2plY3QiLCJuYXZpZ2F0aW9uIiwibmF2aWdhdGVUbyIsInVwZGF0ZUN1cnJlbnRWaWV3IiwiZ29CYWNrIiwic2V0U2VsZWN0ZWRJbmRleGVzIiwidXBkYXRlUHJvamVjdCIsImFkZFByb2plY3QiLCJzZXRUb2FzdE1lc3NhZ2UiLCJjdXJyZW50UHJvamVjdCIsImdldEN1cnJlbnRUZXN0Q29uZmlnIiwiZ2V0U3RhdGUiLCJjdXJyZW50Q29uZmlnIiwiY2FibGVUeXBlIiwicGFyYW1zIiwiaXNNdWx0aU1vZGUiLCJpbmNsdWRlcyIsImNvbmZpZ0lkRnJvbVBhcmFtcyIsImN1cnJlbnQiLCJjdXJyZW50VGVzdENvbmZpZ0luZGV4Iiwic2VsZWN0ZWRJbmRleGVzIiwidGVzdENvbmZpZ0luZGV4IiwidGVzdENvbmZpZ3MiLCJpZCIsIm5hbWUiLCJ2aWV3IiwicHJldmlvdXMiLCJyZW5kZXJNYWluQ29udGVudCIsImRpdiIsImNsYXNzTmFtZSIsIm1hcCIsImNvbmZpZyIsIm9uQ2xpY2siLCJtb2R1bGVUeXBlIiwibGltaXRWYWx1ZSIsIndpcmVPcmRlciIsInJlZkp1bXBlciIsIm1vZHVsZWxhYmxlIiwic3JjIiwiYWx0IiwiZmlsbCIsInJlbmRlclNldHVwQ29udGVudCIsImZpbmQiLCJyZW5kZXJDb25maWdDb250ZW50IiwibWVudVR5cGUiLCJiYWNrVG8iLCJiYWNrVmlldyIsImNvbm5lY3RvckNvdW50Iiwic3BsaWNlQ291bnQiLCJyZW5kZXJUaXRsZUJhciIsImhhbmRsZUJhY2siLCJ0aXRsZSIsIm9uQmFjayIsInJlbmRlckZvb3RlciIsImJ1dHRvbiIsIm5ld0NvbmZpZyIsInVwZGF0ZWRQcm9qZWN0IiwicHJvamVjdEluZGV4IiwiY29uZmlnSW5kZXgiLCJmaW5kSW5kZXgiLCJyZW5kZXJDRlBDT05VTlRDb250ZW50IiwiaGFuZGxlVmFsdWVDaGFuZ2UiLCJmaWVsZCIsInZhbHVlIiwidXBkYXRlZENvbmZpZyIsInNpemVzIiwid2lkdGgiLCJoZWlnaHQiLCJzcGFuIiwiaW5wdXQiLCJ0eXBlIiwibWluIiwibWF4IiwiZGVmYXVsdFZhbHVlIiwib25DaGFuZ2UiLCJlIiwidGFyZ2V0Iiwib25LZXlEb3duIiwicHJldmVudERlZmF1bHQiLCJyZW5kZXJDb250ZW50Il0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(pages-dir-node)/./src/components/dsxpage/general/TestConfig.js\n"); /***/ }), /***/ "(pages-dir-node)/./src/components/dsxpage/general/Testing.js": /*!***************************************************!*\ !*** ./src/components/dsxpage/general/Testing.js ***! \***************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; eval("__webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ Testing)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"react/jsx-dev-runtime\");\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 */ \"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _components_lib_StatusBar__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/components/lib//StatusBar */ \"(pages-dir-node)/./src/components/lib/StatusBar.js\");\n/* harmony import */ var _components_lib_TitleBar__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/components/lib//TitleBar */ \"(pages-dir-node)/./src/components/lib/TitleBar.js\");\n/* harmony import */ var _store_displayStore__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/store/displayStore */ \"(pages-dir-node)/./src/store/displayStore.js\");\n/* harmony import */ var _store_deviceStore__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/store/deviceStore */ \"(pages-dir-node)/./src/store/deviceStore.js\");\n/* harmony import */ var uuid__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! uuid */ \"uuid\");\nvar __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_components_lib_StatusBar__WEBPACK_IMPORTED_MODULE_2__, _components_lib_TitleBar__WEBPACK_IMPORTED_MODULE_3__, _store_displayStore__WEBPACK_IMPORTED_MODULE_4__, _store_deviceStore__WEBPACK_IMPORTED_MODULE_5__, uuid__WEBPACK_IMPORTED_MODULE_6__]);\n([_components_lib_StatusBar__WEBPACK_IMPORTED_MODULE_2__, _components_lib_TitleBar__WEBPACK_IMPORTED_MODULE_3__, _store_displayStore__WEBPACK_IMPORTED_MODULE_4__, _store_deviceStore__WEBPACK_IMPORTED_MODULE_5__, uuid__WEBPACK_IMPORTED_MODULE_6__] = __webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__);\n\n\n\n\n\n\n\n// 计算电阻余量的函数\nfunction calculateResistanceMargin(data, limitdata, limitValue) {\n try {\n // 判断测试类型\n const isPoETest = limitValue.includes('+PoE');\n const isALLTest = limitValue.includes('+ALL');\n let minMargin = Infinity;\n // 回路电阻计算\n const loopResistanceData = data?.performance?.data?.['Loop Resistance (Ω)'];\n const loopResistanceLimit = limitdata?.['Loop Resistance (Ω)']?.['PAIRLimit (Ω)'];\n if (loopResistanceData && loopResistanceLimit) {\n const pairs = [\n 'PAIR12',\n 'PAIR36',\n 'PAIR45',\n 'PAIR78'\n ];\n for (const pair of pairs){\n const actualValues = loopResistanceData[pair];\n if (actualValues && Array.isArray(actualValues)) {\n for(let i = 0; i < actualValues.length && i < loopResistanceLimit.length; i++){\n const actualValue = actualValues[i];\n const limitVal = loopResistanceLimit[i];\n if (actualValue !== undefined && actualValue !== null && limitVal !== undefined && limitVal !== null) {\n const margin = limitVal - Math.abs(actualValue);\n minMargin = Math.min(minMargin, margin);\n }\n }\n }\n }\n }\n // 线对UBL计算(仅在+PoE或+ALL测试时)\n if (isPoETest || isALLTest) {\n const ublData = data?.performance?.data?.['UBL (Ω)'];\n const ublLimit = limitdata?.['UBL (Ω)']?.['PAIRLimit (Ω)'];\n if (ublData && ublLimit) {\n const pairs = [\n 'PAIR12',\n 'PAIR36',\n 'PAIR45',\n 'PAIR78'\n ];\n for (const pair of pairs){\n const actualValues = ublData[pair];\n if (actualValues && Array.isArray(actualValues)) {\n for(let i = 0; i < actualValues.length && i < ublLimit.length; i++){\n const actualValue = actualValues[i];\n const limitVal = ublLimit[i];\n if (actualValue !== undefined && actualValue !== null && limitVal !== undefined && limitVal !== null) {\n const margin = limitVal - Math.abs(actualValue);\n minMargin = Math.min(minMargin, margin);\n }\n }\n }\n }\n }\n }\n // P2PUBL计算(仅在+PoE或+ALL测试时)\n if (isPoETest || isALLTest) {\n const p2pUblData = data?.performance?.data?.['P2PUBL (Ω)'];\n const p2pUblLimit = limitdata?.['P2PUBL (Ω)']?.['PAIRLimit (Ω)'];\n if (p2pUblData && p2pUblLimit) {\n const pairs = [\n 'PAIR1236',\n 'PAIR1245',\n 'PAIR1278',\n 'PAIR3645',\n 'PAIR3678',\n 'PAIR4578'\n ];\n for (const pair of pairs){\n const actualValues = p2pUblData[pair];\n if (actualValues && Array.isArray(actualValues)) {\n for(let i = 0; i < actualValues.length && i < p2pUblLimit.length; i++){\n const actualValue = actualValues[i];\n const limitVal = p2pUblLimit[i];\n if (actualValue !== undefined && actualValue !== null && limitVal !== undefined && limitVal !== null) {\n const margin = limitVal - Math.abs(actualValue);\n minMargin = Math.min(minMargin, margin);\n }\n }\n }\n }\n }\n }\n return minMargin === Infinity ? 0 : minMargin;\n } catch (error) {\n console.error('Error calculating resistance margin:', error);\n return 0;\n }\n}\nfunction Testing() {\n const { view } = _store_displayStore__WEBPACK_IMPORTED_MODULE_4__[\"default\"].getState().navigation.current;\n const { navigateTo, getCurrentTestConfig, getCurrentProject, getCurrentOperator, getCurrentCableId, getCurrentCableId2, setToastMessage } = (0,_store_displayStore__WEBPACK_IMPORTED_MODULE_4__[\"default\"])();\n const currentConfig = getCurrentTestConfig();\n const { connectionStatus, setTotalToastMessage } = (0,_store_deviceStore__WEBPACK_IMPORTED_MODULE_5__[\"default\"])();\n // 铜缆测试路径和状态\n const copperMainPathKey = connectionStatus?.mainPaths ? Object.keys(connectionStatus.mainPaths)[0] : null;\n const copperRemotePathKey = connectionStatus?.remotePaths ? Object.keys(connectionStatus.remotePaths)[0] : null;\n const coppermainend = copperMainPathKey ? connectionStatus.mainPaths[copperMainPathKey]?.end : null;\n const copperremoteend = copperRemotePathKey ? connectionStatus.remotePaths[copperRemotePathKey]?.end : null;\n const copperRefStatus = _store_displayStore__WEBPACK_IMPORTED_MODULE_4__[\"default\"].getState()?.ref?.copper?.status || null;\n // CFP测试路径和状态\n const cableType = currentConfig.params.cableType;\n const isMultiMode = cableType.includes('OM');\n const cfpRefStatus = _store_displayStore__WEBPACK_IMPORTED_MODULE_4__[\"default\"].getState()?.ref?.cfp?.status || null;\n const cfpRefConnectStatus = _store_displayStore__WEBPACK_IMPORTED_MODULE_4__[\"default\"].getState()?.ref?.cfp?.connectStatus || null;\n const cfpInResult = isMultiMode ? connectionStatus?.CFPMainIn : connectionStatus?.CFPMainOut;\n const cfpOutResult = isMultiMode ? connectionStatus?.CFPMainOut : connectionStatus?.CFPMainIn;\n // 获取isMultiMode\n const wavelength1 = isMultiMode ? '850' : '1310';\n const wavelength2 = isMultiMode ? '1300' : '1550';\n // OFP测试路径和状态\n const ofpMainEnd = copperMainPathKey ? connectionStatus.mainPaths[copperMainPathKey]?.end : null;\n const ofpRefStatus = _store_displayStore__WEBPACK_IMPORTED_MODULE_4__[\"default\"].getState()?.ref?.ofp?.status || null;\n const ofpRefConnectStatus = _store_displayStore__WEBPACK_IMPORTED_MODULE_4__[\"default\"].getState()?.ref?.ofp?.connectStatus || null;\n const [tempTestResult, setTempTestResult] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);\n // 获取测试链路清洁状态\n const moduleType = currentConfig?.moduleType;\n // 检查路径中所有端口的清洁状态\n const checkPortsCleanStatus = (paths)=>{\n if (!paths || paths.length === 0) return false;\n // 检查每个端口的清洁状态\n const cleanPorts = paths.filter((portId)=>{\n const portElement = document.getElementById(portId);\n return portElement?.getAttribute('lcclean') === 'true';\n });\n // 返回已清洁的端口数量\n return cleanPorts.length;\n };\n let allPathsCleanStatus = {};\n let isAllPathsClean = 0; // 默认为0,表示全部未清洁\n // 只在模块类型为 cfp 或 ofp 时执行检测\n if (moduleType === 'cfp' || moduleType === 'ofp') {\n if (moduleType === 'cfp') {\n // CFP模块检测所有路径\n const mainInPaths = connectionStatus?.mainPaths?.['main-cfp-in']?.path || [];\n const mainOutPaths = connectionStatus?.mainPaths?.[isMultiMode ? 'main-cfp-mm-out' : 'main-cfp-sm-out']?.path || [];\n const remoteInPaths = connectionStatus?.remotePaths?.['remote-cfp-in']?.path || [];\n const remoteOutPaths = connectionStatus?.remotePaths?.[isMultiMode ? 'remote-cfp-mm-out' : 'remote-cfp-sm-out']?.path || [];\n // 获取每个路径的清洁端口数量\n const mainInClean = checkPortsCleanStatus(mainInPaths);\n const mainOutClean = checkPortsCleanStatus(mainOutPaths);\n const remoteInClean = checkPortsCleanStatus(remoteInPaths);\n const remoteOutClean = checkPortsCleanStatus(remoteOutPaths);\n // 计算总端口数和已清洁端口数\n const totalPorts = mainInPaths.length + mainOutPaths.length + remoteInPaths.length + remoteOutPaths.length;\n const cleanedPorts = mainInClean + mainOutClean + remoteInClean + remoteOutClean;\n // 设置清洁状态\n if (cleanedPorts === 0) isAllPathsClean = 0;\n else if (cleanedPorts < totalPorts) isAllPathsClean = 1;\n else if (cleanedPorts === totalPorts) isAllPathsClean = 2;\n allPathsCleanStatus = {\n mainInClean: mainInClean === mainInPaths.length,\n mainOutClean: mainOutClean === mainOutPaths.length,\n remoteInClean: remoteInClean === remoteInPaths.length,\n remoteOutClean: remoteOutClean === remoteOutPaths.length\n };\n } else {\n // OFP模块只检测主机输出端口\n const mainOutPaths = connectionStatus?.mainPaths?.[isMultiMode ? 'main-ofp-mm-out' : 'main-ofp-sm-out']?.path || [];\n const cleanedPorts = checkPortsCleanStatus(mainOutPaths);\n // 设置清洁状态\n if (cleanedPorts === 0) isAllPathsClean = 0;\n else if (cleanedPorts < mainOutPaths.length) isAllPathsClean = 1;\n else if (cleanedPorts === mainOutPaths.length) isAllPathsClean = 2;\n allPathsCleanStatus = {\n mainOutClean: cleanedPorts === mainOutPaths.length\n };\n }\n }\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)({\n \"Testing.useEffect\": ()=>{\n if (!tempTestResult) {\n const loadTestResult = {\n \"Testing.useEffect.loadTestResult\": async ()=>{\n try {\n const currentProject = getCurrentProject();\n const currentOperator = getCurrentOperator();\n // 获取当前选中的电缆ID\n const currentCableId = getCurrentCableId().name;\n // 获取当前选中的电缆ID2\n const currentCableId2 = getCurrentCableId2().name;\n const CopperWiremapStatus = connectionStatus?.CopperWiremapStatus;\n const CopperPerformanceStatus = connectionStatus?.CopperPerformanceStatus;\n const ofpResult = connectionStatus?.OFPStatus;\n const moduleType = currentConfig?.moduleType;\n const cableType = currentConfig?.params?.cableType;\n const wireOrder = currentConfig?.params?.wireOrder;\n let testResult;\n // 不同模块组装测试结果逻辑\n if (moduleType === '8000') {\n let CopperResultStatus = 'fail';\n let CopperWiremapResultStatus = 'fail';\n if (CopperWiremapStatus === 'pass') {\n if (wireOrder === 'T568B' || wireOrder === 'Ethernet Two-Pair' || wireOrder === 'M12-D Two-Pair') {\n CopperWiremapResultStatus = 'pass';\n console.log(CopperWiremapResultStatus);\n }\n } else if (CopperWiremapStatus === 'pass-2pair') {\n if (wireOrder === 'Ethernet Two-Pair' || wireOrder === 'M12-D Two-Pair') {\n CopperWiremapResultStatus = 'pass';\n } else if (wireOrder === 'T568B') {\n CopperWiremapResultStatus = 'fail';\n CopperResultStatus = 'fail';\n }\n } else if (CopperWiremapStatus === 'sopen') {\n if (wireOrder === 'T568B') {\n CopperWiremapResultStatus = 'fail';\n CopperResultStatus = 'fail';\n } else if (cableType.includes('U/UTP')) {\n CopperWiremapResultStatus = 'pass';\n } else if (cableType.includes('F/UTP')) {\n CopperWiremapResultStatus = 'fail';\n CopperResultStatus = 'fail';\n }\n }\n if (CopperWiremapResultStatus === 'pass') {\n try {\n const response = await __webpack_require__(\"(pages-dir-node)/./src/store/COPPER lazy recursive ^\\\\.\\\\/.*\\\\.json$\")(`./${CopperPerformanceStatus}.json`);\n const data = response.default;\n // 加载限制数据\n const limitValue = currentConfig?.params?.limitValue;\n try {\n // 从limitValue中提取基础名称(移除+PoE和+ALL后缀)\n const baseName = limitValue.split(' (+')[0];\n // 使用基础名称加载带有(+ALL)后缀的文件\n const limitResponse = await __webpack_require__(\"(pages-dir-node)/./src/store/COPPER lazy recursive ^\\\\.\\\\/.* \\\\(\\\\+ALL\\\\)\\\\.json$\")(`./${baseName} (+ALL).json`);\n const limitdata = limitResponse;\n // 计算所有参数的余量\n const paramTitles = [\n '插入损耗',\n '回波损耗',\n 'NEXT',\n 'PS NEXT',\n 'ACR-N',\n 'PS ACR-N',\n 'ACR-F',\n 'PS ACR-F',\n 'CDNEXT',\n 'CMRL',\n 'TCL',\n 'ELTCTL',\n '电阻'\n ];\n const dataGroupMap = {\n '插入损耗': 'Insertion Loss (dB)',\n '回波损耗': 'RL (dB)',\n 'NEXT': 'NEXT (dB)',\n 'PS NEXT': 'PS NEXT (dB)',\n 'ACR-N': 'ACR-N (dB)',\n 'PS ACR-N': 'PS ACR-N (dB)',\n 'ACR-F': 'ACR-F (dB)',\n 'PS ACR-F': 'PS ACR-F (dB)',\n 'CDNEXT': 'CDNEXT (dB)',\n 'CMRL': 'CMRL (dB)',\n 'TCL': 'TCL (dB)',\n 'ELTCTL': 'ELTCTL (dB)',\n '电阻': 'Resistance (Ω)'\n };\n let hasNegativeMargin = false;\n // 长度判断\n if (limitdata.LENGTH && data.performance.LENGTH) {\n const lengthPairs = [\n 'PAIR12',\n 'PAIR36',\n 'PAIR45',\n 'PAIR78'\n ];\n for (const pair of lengthPairs){\n if (data.performance.LENGTH[pair] > limitdata.LENGTH) {\n hasNegativeMargin = true;\n break;\n }\n }\n }\n // 电阻判断\n if (limitdata.LOOP && data.performance.OHM?.LOOP) {\n const loopPairs = [\n 'PAIR12',\n 'PAIR36',\n 'PAIR45',\n 'PAIR78'\n ];\n for (const pair of loopPairs){\n if (data.performance.OHM.LOOP[pair] > limitdata.LOOP) {\n hasNegativeMargin = true;\n console.log(\"电阻fail\");\n break;\n }\n }\n }\n // 检查是否是 +PoE 或 +ALL 测试\n const hasPoE = limitValue?.includes('+PoE');\n const hasALL = limitValue?.includes('+ALL');\n // +PoE 或 +ALL 测试的额外检查\n if ((hasPoE || hasALL) && data.performance.OHM) {\n // 线对 UBL 余量检查\n if (limitdata.PAIRUBL && data.performance.OHM.PAIRUBL) {\n const pairUblPairs = [\n 'PAIR12',\n 'PAIR36',\n 'PAIR45',\n 'PAIR78'\n ];\n for (const pair of pairUblPairs){\n if (Math.abs(data.performance.OHM.PAIRUBL[pair]) > limitdata.PAIRUBL) {\n hasNegativeMargin = true;\n console.log(\"UBL fail\");\n break;\n }\n }\n }\n // P2P UBL 余量检查\n if (limitdata.P2PUBL && data.performance.OHM.P2PUBL) {\n const p2pUblPairs = [\n 'PAIR1236',\n 'PAIR1245',\n 'PAIR1278',\n 'PAIR3645',\n 'PAIR3678',\n 'PAIR4578'\n ];\n for (const pair of p2pUblPairs){\n if (Math.abs(data.performance.OHM.P2PUBL[pair]) > limitdata.P2PUBL) {\n hasNegativeMargin = true;\n console.log(\"P2P fail\");\n break;\n }\n }\n }\n }\n for (const paramTitle of paramTitles){\n const dataGroup = dataGroupMap[paramTitle];\n // 电阻参数的特殊处理\n if (paramTitle === '电阻') {\n const resistanceMargin = calculateResistanceMargin(data, limitdata, limitValue);\n if (resistanceMargin < 0) {\n hasNegativeMargin = true;\n }\n continue;\n }\n if (!dataGroup || !data?.performance?.data?.[dataGroup] || !limitdata?.[dataGroup]) continue;\n const testData = data.performance.data[dataGroup];\n const limitValues = limitdata[dataGroup]?.['PAIRLimit (dB)'] || [];\n const pairs = [\n 'NEXT (dB)',\n 'ACR-N (dB)'\n ].includes(dataGroup) ? [\n 'PAIR1236',\n 'PAIR1245',\n 'PAIR1278',\n 'PAIR3645',\n 'PAIR3678',\n 'PAIR4578'\n ] : [\n 'ACR-F (dB)',\n 'CDNEXT (dB)'\n ].includes(dataGroup) ? [\n 'PAIR1236',\n 'PAIR1245',\n 'PAIR1278',\n 'PAIR3612',\n 'PAIR3645',\n 'PAIR3678',\n 'PAIR4512',\n 'PAIR4535',\n 'PAIR4578',\n 'PAIR7812',\n 'PAIR7936',\n 'PAIR7845'\n ] : [\n 'PAIR12',\n 'PAIR36',\n 'PAIR45',\n 'PAIR78'\n ];\n for(let index = 0; index < limitValues.length && !hasNegativeMargin; index++){\n const limitValue = limitValues[index];\n if (limitValue === undefined || limitValue === null) break;\n for (const pair of pairs){\n const actualValue = testData[pair]?.[index];\n if (actualValue !== undefined && actualValue !== null) {\n const margin = paramTitle === '插入损耗' ? Math.abs(limitValue) - Math.abs(actualValue) : Math.abs(actualValue) - limitValue;\n if (margin < 0) {\n hasNegativeMargin = true;\n break;\n }\n }\n }\n }\n }\n CopperResultStatus = hasNegativeMargin ? 'fail' : 'pass';\n } catch (error) {\n console.error('Error calculating margins:', error);\n }\n } catch (error) {\n console.error('加载测试结果失败:', error);\n }\n }\n testResult = {\n id: (0,uuid__WEBPACK_IMPORTED_MODULE_6__.v4)(),\n name: currentProject?.cableIds[0]?.name || '',\n testconfig: JSON.parse(JSON.stringify(currentConfig || {})),\n operators: currentOperator?.name || '',\n CopperWiremapStatus,\n CopperWiremapResultStatus,\n CopperPerformanceStatus,\n CopperRef: copperRefStatus,\n CopperResultStatus\n };\n } else if (moduleType === 'cfp') {\n // 极限值导入\n const limitValue = currentConfig?.params?.limitValue;\n const CFP_LIMIT = (__webpack_require__(/*! @/store/FIBER/CFP_LIMIT */ \"(pages-dir-node)/./src/store/FIBER/CFP_LIMIT.js\")[\"default\"]);\n const limitData = CFP_LIMIT[limitValue];\n if (limitData) {\n // 使用limitData中的极限值进行后续处理\n const { adapterLoss, firstLastAdapterLoss, spliceLoss, totalLoss1310nm, totalLoss1550nm, lossPerKm850nm, lossPerKm13000nm, lossPerKm1310nm, lossPerKm1550nm, maxSMLength, manMMLength } = limitData;\n }\n // 用户配置加载\n const connectorCount = currentConfig?.params?.connectorCount;\n const spliceCount = currentConfig?.params?.spliceCount;\n const refJumper = currentConfig?.params?.refJumper;\n let cfpMainInStatus = null;\n let cfpMainOutStatus = null;\n if (cfpInResult) {\n try {\n // 加载第一个波长的数据\n const wave1Data = await __webpack_require__(\"(pages-dir-node)/./src/store/FIBER lazy recursive ^\\\\.\\\\/.*\\\\/.*\\\\-dump\\\\.json$\")(`./${cfpInResult}/${wavelength1}-dump.json`);\n // 加载第二个波长的数据\n const wave2Data = await __webpack_require__(\"(pages-dir-node)/./src/store/FIBER lazy recursive ^\\\\.\\\\/.*\\\\/.*\\\\-dump\\\\.json$\")(`./${cfpInResult}/${wavelength2}-dump.json`);\n // 添加随机浮动因子(损耗上下浮动1%)\n const getDistanceRandomFactor = {\n \"Testing.useEffect.loadTestResult.getDistanceRandomFactor\": ()=>1\n }[\"Testing.useEffect.loadTestResult.getDistanceRandomFactor\"]; // 长度不浮动\n const getLossRandomFactor = {\n \"Testing.useEffect.loadTestResult.getLossRandomFactor\": ()=>1 + (Math.random() * 0.02 - 0.01)\n }[\"Testing.useEffect.loadTestResult.getLossRandomFactor\"]; // 生成0.99到1.01之间的随机数\n // 先计算两个波长的损耗值\n const wave1Loss = wave1Data.Summary.totalLoss * getLossRandomFactor();\n const wave2Loss = wave2Data.Summary.totalLoss * getLossRandomFactor();\n // 如果是参考状态,增加0.1\n const finalWave1Loss = !cfpRefStatus ? wave1Loss : wave1Loss + 0.1;\n const finalWave2Loss = !cfpRefStatus ? wave2Loss : wave2Loss + 0.1;\n cfpMainInStatus = {\n wavelength1: {\n wave: wavelength1,\n distance: (wave1Data.Summary.totalDistance * getDistanceRandomFactor()).toFixed(2),\n loss: finalWave1Loss.toFixed(2)\n },\n wavelength2: {\n wave: wavelength2,\n distance: (wave2Data.Summary.totalDistance * getDistanceRandomFactor()).toFixed(2),\n loss: finalWave2Loss.toFixed(2)\n }\n };\n } catch (error) {\n setTimeout({\n \"Testing.useEffect.loadTestResult\": ()=>{\n setTotalToastMessage(\"被测链路与参考跳纤类型不一致,请检查\");\n }\n }[\"Testing.useEffect.loadTestResult\"], 1500); // 3000 毫秒 = 3 秒\n return;\n }\n }\n if (cfpOutResult) {\n try {\n // 加载第一个波长的数据\n const wave1Data = await __webpack_require__(\"(pages-dir-node)/./src/store/FIBER lazy recursive ^\\\\.\\\\/.*\\\\/.*\\\\-dump\\\\.json$\")(`./${cfpOutResult}/${wavelength1}-dump.json`);\n // 加载第二个波长的数据\n const wave2Data = await __webpack_require__(\"(pages-dir-node)/./src/store/FIBER lazy recursive ^\\\\.\\\\/.*\\\\/.*\\\\-dump\\\\.json$\")(`./${cfpOutResult}/${wavelength2}-dump.json`);\n // 添加随机浮动因子(损耗上下浮动1%)\n const getDistanceRandomFactor = {\n \"Testing.useEffect.loadTestResult.getDistanceRandomFactor\": ()=>1\n }[\"Testing.useEffect.loadTestResult.getDistanceRandomFactor\"]; // 长度不浮动\n const getLossRandomFactor = {\n \"Testing.useEffect.loadTestResult.getLossRandomFactor\": ()=>1 + (Math.random() * 0.02 - 0.01)\n }[\"Testing.useEffect.loadTestResult.getLossRandomFactor\"]; // 生成0.99到1.01之间的随机数\n // 先计算两个波长的损耗值\n const wave1Loss = wave1Data.Summary.totalLoss * getLossRandomFactor();\n const wave2Loss = wave2Data.Summary.totalLoss * getLossRandomFactor();\n // 如果是参考状态,增加0.1\n const finalWave1Loss = !cfpRefStatus ? wave1Loss : wave1Loss + 0.1;\n const finalWave2Loss = !cfpRefStatus ? wave2Loss : wave2Loss + 0.1;\n cfpMainOutStatus = {\n wavelength1: {\n wave: wavelength1,\n distance: (wave1Data.Summary.totalDistance * getDistanceRandomFactor()).toFixed(2),\n loss: finalWave1Loss.toFixed(2)\n },\n wavelength2: {\n wave: wavelength2,\n distance: (wave2Data.Summary.totalDistance * getDistanceRandomFactor()).toFixed(2),\n loss: finalWave2Loss.toFixed(2)\n }\n };\n } catch (error) {\n setTimeout({\n \"Testing.useEffect.loadTestResult\": ()=>{\n setToastMessage(\"未检测到光纤,请检查接口\");\n }\n }[\"Testing.useEffect.loadTestResult\"], 1500); // 3000 毫秒 = 3 秒\n return;\n }\n }\n // 结果计算与判断\n // 第一根光纤\n const cfpMainIndistance = cfpMainInStatus?.wavelength1?.distance || 0;\n const cfpMainIndistance2 = cfpMainInStatus?.wavelength2?.distance || 0;\n const cfpMainInloss = cfpMainInStatus?.wavelength1?.loss || 0;\n const cfpMainInloss2 = cfpMainInStatus?.wavelength2?.loss || 0;\n // 长度判断\n const maxLength = isMultiMode ? limitData.maxMMLength : limitData.maxSMLength;\n const isLengthValidIn = cfpMainIndistance <= maxLength && cfpMainIndistance2 <= maxLength;\n // 损耗判断\n const lossPerKm = isMultiMode ? limitData.lossPerKm850nm : limitData.lossPerKm1310nm;\n const lossPerKm2 = isMultiMode ? limitData.lossPerKm1300nm : limitData.lossPerKm1550nm;\n const totalLossLimit = limitData.adapterLoss !== null ? connectorCount * limitData.adapterLoss + spliceCount * limitData.spliceLoss + cfpMainIndistance / 1000 * lossPerKm : isMultiMode ? limitData.totalLoss850nm : limitData.totalLoss1310nm;\n const totalLossLimit2 = limitData.adapterLoss !== null ? connectorCount * limitData.adapterLoss + spliceCount * limitData.spliceLoss + cfpMainIndistance2 / 1000 * lossPerKm2 : isMultiMode ? limitData.totalLoss1300nm : limitData.totalLoss1550nm;\n const isLossValidIn = cfpMainInloss <= totalLossLimit && cfpMainInloss2 <= totalLossLimit2;\n // 第二根光纤\n const cfpMainOutdistance = cfpMainOutStatus?.wavelength1?.distance || 0;\n const cfpMainOutdistance2 = cfpMainOutStatus?.wavelength2?.distance || 0;\n const cfpMainOutloss = cfpMainOutStatus?.wavelength1?.loss || 0;\n const cfpMainOutloss2 = cfpMainOutStatus?.wavelength2?.loss || 0;\n // 长度判断\n const maxLengthOut = isMultiMode ? limitData.maxMMLength : limitData.maxSMLength;\n const isLengthValidOut = cfpMainOutdistance <= maxLength && cfpMainOutdistance2 <= maxLength;\n // 损耗判断\n const lossPerKmOut = isMultiMode ? limitData.lossPerKm850nm : limitData.lossPerKm1310nm;\n const lossPerKm2Out = isMultiMode ? limitData.lossPerKm1300nm : limitData.lossPerKm1550nm;\n const totalLossLimitOut = limitData.adapterLoss !== null ? connectorCount * limitData.adapterLoss + spliceCount * limitData.spliceLoss + cfpMainIndistance / 1000 * lossPerKmOut : isMultiMode ? limitData.totalLoss850nm : limitData.totalLoss1310nm;\n const totalLossLimit2Out = limitData.adapterLoss !== null ? connectorCount * limitData.adapterLoss + spliceCount * limitData.spliceLoss + cfpMainOutdistance2 / 1000 * lossPerKm2Out : isMultiMode ? limitData.totalLoss1300nm : limitData.totalLoss1550nm;\n const isLossValidOut = cfpMainOutloss <= totalLossLimitOut && cfpMainOutloss2 <= totalLossLimit2Out;\n // 结果判断\n const CFPResultStatus = isLengthValidIn && isLossValidIn && isLengthValidOut && isLossValidOut ? 'pass' : 'fail';\n // IN端口通过失败判断(根据 isMultiMode 判断使用哪组参数)\n const InPortStatus = isMultiMode ? isLengthValidIn && isLossValidIn ? 'pass' : 'fail' : isLengthValidOut && isLossValidOut ? 'pass' : 'fail';\n // OUT端口通过失败判断\n const OutPortStatus = isMultiMode ? isLengthValidOut && isLengthValidOut ? 'pass' : 'fail' : isLengthValidIn && isLossValidIn ? 'pass' : 'fail';\n testResult = {\n id: (0,uuid__WEBPACK_IMPORTED_MODULE_6__.v4)(),\n name: currentCableId || '',\n name2: currentCableId2 || '',\n testconfig: JSON.parse(JSON.stringify(currentConfig || {})),\n operators: currentOperator?.name || '',\n CFPRef: cfpRefStatus,\n CFPRefConnect: cfpRefConnectStatus,\n CFPMainIn: cfpMainInStatus,\n isLengthValidIn,\n isLossValidIn,\n InPortStatus,\n isLengthValidOut,\n isLossValidOut,\n OutPortStatus,\n CFPMainOut: cfpMainOutStatus,\n CFPResultStatus,\n PortCleanStatus: isAllPathsClean\n };\n } else if (moduleType === 'ofp') {\n const ofpConnectionStatus = connectionStatus;\n let ofpResultStatus = 'fail';\n if (ofpResult.includes('pass')) {\n if (!ofpRefStatus) {\n if (connectionStatus.OFPoutRefStatus.includes('sm-') || connectionStatus.OFPoutRefStatus.includes('mm-')) {\n ofpResultStatus = 'fail';\n } else {\n ofpResultStatus = 'pass';\n }\n } else if (ofpRefStatus === 'start') {\n if (connectionStatus.OFPoutRefStatus.includes('smc-') || connectionStatus.OFPoutRefStatus.includes('mmc-')) {\n ofpResultStatus = 'pass';\n }\n } else if (ofpRefStatus === 'end') {\n const hasSmOrMm = connectionStatus.OFPoutRefStatus.includes('sm-') || connectionStatus.OFPoutRefStatus.includes('mm-');\n const hasSmcOrMmc = connectionStatus.OFPoutRefStatus.includes('smc-') || connectionStatus.OFPoutRefStatus.includes('mmc-');\n const hasConnectedSmOrMm = connectionStatus.OFPConnectedToRefStatus?.includes('sm-') || connectionStatus.OFPConnectedToRefStatus?.includes('mm-');\n const hasConnectedSmcOrMmc = connectionStatus.OFPConnectedToRefStatus?.includes('smc-') || connectionStatus.OFPConnectedToRefStatus?.includes('mmc-');\n // 只有前导和末尾都是补偿线时才是pass,其他情况都是fail\n if (hasSmcOrMmc && hasConnectedSmcOrMmc) {\n ofpResultStatus = 'pass';\n } else {\n ofpResultStatus = 'fail';\n }\n }\n } else if (ofpResult === 'connector-fail-end') {\n if (!ofpRefStatus) {\n if (connectionStatus.OFPoutRefStatus.includes('sm-') || connectionStatus.OFPoutRefStatus.includes('mm-')) {\n ofpResultStatus = 'fail';\n } else {\n ofpResultStatus = 'pass';\n }\n } else if (ofpRefStatus === 'start') {\n if (connectionStatus.OFPoutRefStatus.includes('smc-') || connectionStatus.OFPoutRefStatus.includes('mmc-')) {\n ofpResultStatus = 'pass';\n }\n } else if (ofpRefStatus === 'end') {\n const hasSmOrMm = connectionStatus.OFPoutRefStatus.includes('sm-') || connectionStatus.OFPoutRefStatus.includes('mm-');\n const hasSmcOrMmc = connectionStatus.OFPoutRefStatus.includes('smc-') || connectionStatus.OFPoutRefStatus.includes('mmc-');\n const hasConnectedSmOrMm = connectionStatus.OFPConnectedToRefStatus?.includes('sm-') || connectionStatus.OFPConnectedToRefStatus?.includes('mm-');\n const hasConnectedSmcOrMmc = connectionStatus.OFPConnectedToRefStatus?.includes('smc-') || connectionStatus.OFPConnectedToRefStatus?.includes('mmc-');\n // 只有前导和末尾都是补偿线时才是pass,其他情况都是fail\n if (hasSmcOrMmc && hasConnectedSmcOrMmc) {\n ofpResultStatus = 'pass';\n } else {\n ofpResultStatus = 'fail';\n }\n }\n } else if (ofpResult === 'connector-fail-start') {\n if (ofpRefStatus === 'start') {\n const hasSmOrMm = connectionStatus.OFPoutRefStatus.includes('sm-') || connectionStatus.OFPoutRefStatus.includes('mm-');\n const hasSmcOrMmc = connectionStatus.OFPoutRefStatus.includes('smc-') || connectionStatus.OFPoutRefStatus.includes('mmc-');\n if (hasSmOrMm) {\n ofpResultStatus = 'fail';\n } else if (hasSmcOrMmc) {\n ofpResultStatus = 'fail';\n }\n }\n }\n testResult = {\n id: (0,uuid__WEBPACK_IMPORTED_MODULE_6__.v4)(),\n name: currentProject?.cableIds[0]?.name || '',\n testconfig: JSON.parse(JSON.stringify(currentConfig || {})),\n operators: currentOperator?.name || '',\n ofpResult,\n ofpRefStatus,\n OFPRefConnect: ofpRefConnectStatus,\n ofpConnectionStatus,\n ofpResultStatus,\n PortCleanStatus: isAllPathsClean\n };\n }\n setTempTestResult(testResult);\n } catch (error) {\n console.error('加载测试结果失败:', error);\n }\n }\n }[\"Testing.useEffect.loadTestResult\"];\n loadTestResult();\n }\n }\n }[\"Testing.useEffect\"], [\n connectionStatus?.CopperWiremapStatus,\n connectionStatus?.CopperPerformanceStatus\n ]);\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)({\n \"Testing.useEffect\": ()=>{\n if (tempTestResult) {\n const moduleType = tempTestResult.testconfig?.moduleType;\n let delayTime = 1500; // 默认延迟1.5秒\n if (moduleType === '8000') {\n delayTime = 5000; // 8000模块延迟5秒\n } else if (moduleType === 'cfp') {\n delayTime = 1500; // cfp模块延迟1.5秒\n } else if (moduleType === 'ofp') {\n delayTime = 6000; // ofp模块延迟6秒\n }\n const timer = setTimeout({\n \"Testing.useEffect.timer\": ()=>{\n navigateTo('resultinfo', 'nosave', tempTestResult);\n }\n }[\"Testing.useEffect.timer\"], delayTime);\n return ({\n \"Testing.useEffect\": ()=>clearTimeout(timer)\n })[\"Testing.useEffect\"];\n }\n }\n }[\"Testing.useEffect\"], [\n tempTestResult\n ]);\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full h-full flex flex-col overflow-hidden\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_StatusBar__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {}, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Testing.js\",\n lineNumber: 717,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_TitleBar__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n title: \"进程\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Testing.js\",\n lineNumber: 718,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[490px] bg-[#D5DFEB] relative\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute inset-0 bg-cover bg-center bg-no-repeat\",\n style: {\n backgroundImage: 'url(/testing.gif)'\n }\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Testing.js\",\n lineNumber: 723,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute w-full top-8 z-10\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"flex items-center justify-center text-black text-xl font-bold\",\n children: currentConfig?.params?.limitValue || '未设置'\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Testing.js\",\n lineNumber: 730,\n columnNumber: 21\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Testing.js\",\n lineNumber: 729,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Testing.js\",\n lineNumber: 721,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[60px] bg-[#132843] flex items-center justify-center px-4\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n className: \"w-[100px] h-[40px] rounded-sm flex items-center justify-center text-white font-bold shadow-lg\",\n onClick: ()=>navigateTo('home', 'main'),\n children: \"取消\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Testing.js\",\n lineNumber: 737,\n columnNumber: 25\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Testing.js\",\n lineNumber: 736,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Testing.js\",\n lineNumber: 716,\n columnNumber: 9\n }, this);\n}\n\n__webpack_async_result__();\n} catch(e) { __webpack_async_result__(e); } });//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHBhZ2VzLWRpci1ub2RlKS8uL3NyYy9jb21wb25lbnRzL2RzeHBhZ2UvZ2VuZXJhbC9UZXN0aW5nLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQW1EO0FBQ0M7QUFDRjtBQUNDO0FBQ0Y7QUFDYjtBQUVwQyxZQUFZO0FBQ1osU0FBU1MsMEJBQTBCQyxJQUFJLEVBQUVDLFNBQVMsRUFBRUMsVUFBVTtJQUMxRCxJQUFJO1FBQ0EsU0FBUztRQUNULE1BQU1DLFlBQVlELFdBQVdFLFFBQVEsQ0FBQztRQUN0QyxNQUFNQyxZQUFZSCxXQUFXRSxRQUFRLENBQUM7UUFFdEMsSUFBSUUsWUFBWUM7UUFFaEIsU0FBUztRQUNULE1BQU1DLHFCQUFxQlIsTUFBTVMsYUFBYVQsTUFBTSxDQUFDLHNCQUFzQjtRQUMzRSxNQUFNVSxzQkFBc0JULFdBQVcsQ0FBQyxzQkFBc0IsRUFBRSxDQUFDLGdCQUFnQjtRQUVqRixJQUFJTyxzQkFBc0JFLHFCQUFxQjtZQUMzQyxNQUFNQyxRQUFRO2dCQUFDO2dCQUFVO2dCQUFVO2dCQUFVO2FBQVM7WUFDdEQsS0FBSyxNQUFNQyxRQUFRRCxNQUFPO2dCQUN0QixNQUFNRSxlQUFlTCxrQkFBa0IsQ0FBQ0ksS0FBSztnQkFDN0MsSUFBSUMsZ0JBQWdCQyxNQUFNQyxPQUFPLENBQUNGLGVBQWU7b0JBQzdDLElBQUssSUFBSUcsSUFBSSxHQUFHQSxJQUFJSCxhQUFhSSxNQUFNLElBQUlELElBQUlOLG9CQUFvQk8sTUFBTSxFQUFFRCxJQUFLO3dCQUM1RSxNQUFNRSxjQUFjTCxZQUFZLENBQUNHLEVBQUU7d0JBQ25DLE1BQU1HLFdBQVdULG1CQUFtQixDQUFDTSxFQUFFO3dCQUN2QyxJQUFJRSxnQkFBZ0JFLGFBQWFGLGdCQUFnQixRQUFRQyxhQUFhQyxhQUFhRCxhQUFhLE1BQU07NEJBQ2xHLE1BQU1FLFNBQVNGLFdBQVdHLEtBQUtDLEdBQUcsQ0FBQ0w7NEJBQ25DWixZQUFZZ0IsS0FBS0UsR0FBRyxDQUFDbEIsV0FBV2U7d0JB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QUtKLFdBQVU7c0NBQ1g1TCxlQUFlaUIsUUFBUTFELGNBQWM7Ozs7Ozs7Ozs7Ozs7Ozs7OzBCQUtsRCw4REFBQ29PO2dCQUFJQyxXQUFVOzBCQUNILDRFQUFDSztvQkFDR0wsV0FBVTtvQkFDVk0sU0FBUyxJQUFNek0sV0FBVyxRQUFROzhCQUNyQzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFPekIiLCJzb3VyY2VzIjpbIi9vcHQvZGV2L2VzdC1kc3gvc3JjL2NvbXBvbmVudHMvZHN4cGFnZS9nZW5lcmFsL1Rlc3RpbmcuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlLCB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCc7XHJcbmltcG9ydCBTdGF0dXNCYXIgZnJvbSAnQC9jb21wb25lbnRzL2xpYi8vU3RhdHVzQmFyJztcclxuaW1wb3J0IFRpdGxlQmFyIGZyb20gJ0AvY29tcG9uZW50cy9saWIvL1RpdGxlQmFyJztcclxuaW1wb3J0IHVzZURpc3BsYXlTdG9yZSBmcm9tICdAL3N0b3JlL2Rpc3BsYXlTdG9yZSc7XHJcbmltcG9ydCB1c2VEZXZpY2VTdG9yZSBmcm9tICdAL3N0b3JlL2RldmljZVN0b3JlJztcclxuaW1wb3J0IHsgdjQgYXMgdXVpZHY0IH0gZnJvbSAndXVpZCc7XHJcblxyXG4vLyDorqHnrpfnlLXpmLvkvZnph4/nmoTlh73mlbBcclxuZnVuY3Rpb24gY2FsY3VsYXRlUmVzaXN0YW5jZU1hcmdpbihkYXRhLCBsaW1pdGRhdGEsIGxpbWl0VmFsdWUpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgICAgLy8g5Yik5pat5rWL6K+V57G75Z6LXHJcbiAgICAgICAgY29uc3QgaXNQb0VUZXN0ID0gbGltaXRWYWx1ZS5pbmNsdWRlcygnK1BvRScpO1xyXG4gICAgICAgIGNvbnN0IGlzQUxMVGVzdCA9IGxpbWl0VmFsdWUuaW5jbHVkZXMoJytBTEwnKTtcclxuICAgICAgICBcclxuICAgICAgICBsZXQgbWluTWFyZ2luID0gSW5maW5pdHk7XHJcbiAgICAgICAgXHJcbiAgICAgICAgLy8g5Zue6Lev55S16Zi76K6h566XXHJcbiAgICAgICAgY29uc3QgbG9vcFJlc2lzdGFuY2VEYXRhID0gZGF0YT8ucGVyZm9ybWFuY2U/LmRhdGE/LlsnTG9vcCBSZXNpc3RhbmNlICjOqSknXTtcclxuICAgICAgICBjb25zdCBsb29wUmVzaXN0YW5jZUxpbWl0ID0gbGltaXRkYXRhPy5bJ0xvb3AgUmVzaXN0YW5jZSAozqkpJ10/LlsnUEFJUkxpbWl0ICjOqSknXTtcclxuICAgICAgICBcclxuICAgICAgICBpZiAobG9vcFJlc2lzdGFuY2VEYXRhICYmIGxvb3BSZXNpc3RhbmNlTGltaXQpIHtcclxuICAgICAgICAgICAgY29uc3QgcGFpcnMgPSBbJ1BBSVIxMicsICdQQUlSMzYnLCAnUEFJUjQ1JywgJ1BBSVI3OCddO1xyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IHBhaXIgb2YgcGFpcnMpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGFjdHVhbFZhbHVlcyA9IGxvb3BSZXNpc3RhbmNlRGF0YVtwYWlyXTtcclxuICAgICAgICAgICAgICAgIGlmIChhY3R1YWxWYWx1ZXMgJiYgQXJyYXkuaXNBcnJheShhY3R1YWxWYWx1ZXMpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhY3R1YWxWYWx1ZXMubGVuZ3RoICYmIGkgPCBsb29wUmVzaXN0YW5jZUxpbWl0Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGFjdHVhbFZhbHVlID0gYWN0dWFsVmFsdWVzW2ldO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsaW1pdFZhbCA9IGxvb3BSZXNpc3RhbmNlTGltaXRbaV07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhY3R1YWxWYWx1ZSAhPT0gdW5kZWZpbmVkICYmIGFjdHVhbFZhbHVlICE9PSBudWxsICYmIGxpbWl0VmFsICE9PSB1bmRlZmluZWQgJiYgbGltaXRWYWwgIT09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1hcmdpbiA9IGxpbWl0VmFsIC0gTWF0aC5hYnMoYWN0dWFsVmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWluTWFyZ2luID0gTWF0aC5taW4obWluTWFyZ2luLCBtYXJnaW4pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIFxyXG4gICAgICAgIC8vIOe6v+WvuVVCTOiuoeeul++8iOS7heWcqCtQb0XmiJYrQUxM5rWL6K+V5pe277yJXHJcbiAgICAgICAgaWYgKGlzUG9FVGVzdCB8fCBpc0FMTFRlc3QpIHtcclxuICAgICAgICAgICAgY29uc3QgdWJsRGF0YSA9IGRhdGE/LnBlcmZvcm1hbmNlPy5kYXRhPy5bJ1VCTCAozqkpJ107XHJcbiAgICAgICAgICAgIGNvbnN0IHVibExpbWl0ID0gbGltaXRkYXRhPy5bJ1VCTCAozqkpJ10/LlsnUEFJUkxpbWl0ICjOqSknXTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIGlmICh1YmxEYXRhICYmIHVibExpbWl0KSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBwYWlycyA9IFsnUEFJUjEyJywgJ1BBSVIzNicsICdQQUlSNDUnLCAnUEFJUjc4J107XHJcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHBhaXIgb2YgcGFpcnMpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBhY3R1YWxWYWx1ZXMgPSB1YmxEYXRhW3BhaXJdO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChhY3R1YWxWYWx1ZXMgJiYgQXJyYXkuaXNBcnJheShhY3R1YWxWYWx1ZXMpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYWN0dWFsVmFsdWVzLmxlbmd0aCAmJiBpIDwgdWJsTGltaXQubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGFjdHVhbFZhbHVlID0gYWN0dWFsVmFsdWVzW2ldO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGltaXRWYWwgPSB1YmxMaW1pdFtpXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhY3R1YWxWYWx1ZSAhPT0gdW5kZWZpbmVkICYmIGFjdHVhbFZhbHVlICE9PSBudWxsICYmIGxpbWl0VmFsICE9PSB1bmRlZmluZWQgJiYgbGltaXRWYWwgIT09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtYXJnaW4gPSBsaW1pdFZhbCAtIE1hdGguYWJzKGFjdHVhbFZhbHVlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW5NYXJnaW4gPSBNYXRoLm1pbihtaW5NYXJnaW4sIG1hcmdpbik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICAgICAgLy8gUDJQVUJM6K6h566X77yI5LuF5ZyoK1BvReaIlitBTEzmtYvor5Xml7bvvIlcclxuICAgICAgICBpZiAoaXNQb0VUZXN0IHx8IGlzQUxMVGVzdCkge1xyXG4gICAgICAgICAgICBjb25zdCBwMnBVYmxEYXRhID0gZGF0YT8ucGVyZm9ybWFuY2U/LmRhdGE/LlsnUDJQVUJMICjOqSknXTtcclxuICAgICAgICAgICAgY29uc3QgcDJwVWJsTGltaXQgPSBsaW1pdGRhdGE/LlsnUDJQVUJMICjOqSknXT8uWydQQUlSTGltaXQgKM6pKSddO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgaWYgKHAycFVibERhdGEgJiYgcDJwVWJsTGltaXQpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHBhaXJzID0gWydQQUlSMTIzNicsICdQQUlSMTI0NScsICdQQUlSMTI3OCcsICdQQUlSMzY0NScsICdQQUlSMzY3OCcsICdQQUlSNDU3OCddO1xyXG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBwYWlyIG9mIHBhaXJzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYWN0dWFsVmFsdWVzID0gcDJwVWJsRGF0YVtwYWlyXTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoYWN0dWFsVmFsdWVzICYmIEFycmF5LmlzQXJyYXkoYWN0dWFsVmFsdWVzKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFjdHVhbFZhbHVlcy5sZW5ndGggJiYgaSA8IHAycFVibExpbWl0Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBhY3R1YWxWYWx1ZSA9IGFjdHVhbFZhbHVlc1tpXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxpbWl0VmFsID0gcDJwVWJsTGltaXRbaV07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYWN0dWFsVmFsdWUgIT09IHVuZGVmaW5lZCAmJiBhY3R1YWxWYWx1ZSAhPT0gbnVsbCAmJiBsaW1pdFZhbCAhPT0gdW5kZWZpbmVkICYmIGxpbWl0VmFsICE9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWFyZ2luID0gbGltaXRWYWwgLSBNYXRoLmFicyhhY3R1YWxWYWx1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWluTWFyZ2luID0gTWF0aC5taW4obWluTWFyZ2luLCBtYXJnaW4pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIFxyXG4gICAgICAgIHJldHVybiBtaW5NYXJnaW4gPT09IEluZmluaXR5ID8gMCA6IG1pbk1hcmdpbjtcclxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgY2FsY3VsYXRpbmcgcmVzaXN0YW5jZSBtYXJnaW46JywgZXJyb3IpO1xyXG4gICAgICAgIHJldHVybiAwO1xyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBUZXN0aW5nKCkge1xyXG4gICAgY29uc3QgeyB2aWV3IH0gPSB1c2VEaXNwbGF5U3RvcmUuZ2V0U3RhdGUoKS5uYXZpZ2F0aW9uLmN1cnJlbnQ7XHJcbiAgICBjb25zdCB7IG5hdmlnYXRlVG8sXHJcbiAgICAgICAgICAgIGdldEN1cnJlbnRUZXN0Q29uZmlnLFxyXG4gICAgICAgICAgICBnZXRDdXJyZW50UHJvamVjdCxcclxuICAgICAgICAgICAgZ2V0Q3VycmVudE9wZXJhdG9yLFxyXG4gICAgICAgICAgICBnZXRDdXJyZW50Q2FibGVJZCxcclxuICAgICAgICAgICAgZ2V0Q3VycmVudENhYmxlSWQyLFxyXG4gICAgICAgICAgICBzZXRUb2FzdE1lc3NhZ2UsXHJcbiAgICAgICAgICAgIH0gPSB1c2VEaXNwbGF5U3RvcmUoKTtcclxuICAgIGNvbnN0IGN1cnJlbnRDb25maWcgPSBnZXRDdXJyZW50VGVzdENvbmZpZygpO1xyXG4gICAgY29uc3QgeyBjb25uZWN0aW9uU3RhdHVzLHNldFRvdGFsVG9hc3RNZXNzYWdlIH0gPSB1c2VEZXZpY2VTdG9yZSgpO1xyXG4gICAgXHJcbiAgICAvLyDpk5znvIbmtYvor5Xot6/lvoTlkoznirbmgIFcclxuICAgIGNvbnN0IGNvcHBlck1haW5QYXRoS2V5ID0gY29ubmVjdGlvblN0YXR1cz8ubWFpblBhdGhzID8gT2JqZWN0LmtleXMoY29ubmVjdGlvblN0YXR1cy5tYWluUGF0aHMpWzBdIDogbnVsbDtcclxuICAgIGNvbnN0IGNvcHBlclJlbW90ZVBhdGhLZXkgPSBjb25uZWN0aW9uU3RhdHVzPy5yZW1vdGVQYXRocyA/IE9iamVjdC5rZXlzKGNvbm5lY3Rpb25TdGF0dXMucmVtb3RlUGF0aHMpWzBdIDogbnVsbDtcclxuICAgIGNvbnN0IGNvcHBlcm1haW5lbmQgPSBjb3BwZXJNYWluUGF0aEtleSA/IGNvbm5lY3Rpb25TdGF0dXMubWFpblBhdGhzW2NvcHBlck1haW5QYXRoS2V5XT8uZW5kIDogbnVsbDtcclxuICAgIGNvbnN0IGNvcHBlcnJlbW90ZWVuZCA9IGNvcHBlclJlbW90ZVBhdGhLZXkgPyBjb25uZWN0aW9uU3RhdHVzLnJlbW90ZVBhdGhzW2NvcHBlclJlbW90ZVBhdGhLZXldPy5lbmQgOiBudWxsO1xyXG4gICAgY29uc3QgY29wcGVyUmVmU3RhdHVzID0gdXNlRGlzcGxheVN0b3JlLmdldFN0YXRlKCk/LnJlZj8uY29wcGVyPy5zdGF0dXMgfHwgbnVsbDtcclxuICAgIFxyXG4gICAgLy8gQ0ZQ5rWL6K+V6Lev5b6E5ZKM54q25oCBXHJcbiAgICBcclxuICAgIGNvbnN0IGNhYmxlVHlwZSA9IGN1cnJlbnRDb25maWcucGFyYW1zLmNhYmxlVHlwZTtcclxuICAgIGNvbnN0IGlzTXVsdGlNb2RlID0gY2FibGVUeXBlLmluY2x1ZGVzKCdPTScpO1xyXG4gICAgY29uc3QgY2ZwUmVmU3RhdHVzID0gdXNlRGlzcGxheVN0b3JlLmdldFN0YXRlKCk/LnJlZj8uY2ZwPy5zdGF0dXMgfHwgbnVsbDtcclxuICAgIGNvbnN0IGNmcFJlZkNvbm5lY3RTdGF0dXMgPSB1c2VEaXNwbGF5U3RvcmUuZ2V0U3RhdGUoKT8ucmVmPy5jZnA/LmNvbm5lY3RTdGF0dXMgfHwgbnVsbDtcclxuICAgIFxyXG4gICAgY29uc3QgY2ZwSW5SZXN1bHQgPSBpc011bHRpTW9kZSA/IGNvbm5lY3Rpb25TdGF0dXM/LkNGUE1haW5JbiA6IGNvbm5lY3Rpb25TdGF0dXM/LkNGUE1haW5PdXQ7XHJcbiAgICBjb25zdCBjZnBPdXRSZXN1bHQgPSBpc011bHRpTW9kZSA/IGNvbm5lY3Rpb25TdGF0dXM/LkNGUE1haW5PdXQgOiBjb25uZWN0aW9uU3RhdHVzPy5DRlBNYWluSW47IFxyXG5cclxuXHJcbiAgICAvLyDojrflj5Zpc011bHRpTW9kZVxyXG4gICAgY29uc3Qgd2F2ZWxlbmd0aDEgPSBpc011bHRpTW9kZSA/ICc4NTAnIDogJzEzMTAnO1xyXG4gICAgY29uc3Qgd2F2ZWxlbmd0aDIgPSBpc011bHRpTW9kZSA/ICcxMzAwJyA6ICcxNTUwJztcclxuICAgIFxyXG4gICAgLy8gT0ZQ5rWL6K+V6Lev5b6E5ZKM54q25oCBXHJcbiAgICBjb25zdCBvZnBNYWluRW5kID0gY29wcGVyTWFpblBhdGhLZXkgPyBjb25uZWN0aW9uU3RhdHVzLm1haW5QYXRoc1tjb3BwZXJNYWluUGF0aEtleV0/LmVuZCA6IG51bGw7XHJcbiAgICBjb25zdCBvZnBSZWZTdGF0dXMgPSB1c2VEaXNwbGF5U3RvcmUuZ2V0U3RhdGUoKT8ucmVmPy5vZnA/LnN0YXR1cyB8fCBudWxsO1xyXG4gICAgY29uc3Qgb2ZwUmVmQ29ubmVjdFN0YXR1cyA9IHVzZURpc3BsYXlTdG9yZS5nZXRTdGF0ZSgpPy5yZWY/Lm9mcD8uY29ubmVjdFN0YXR1cyB8fCBudWxsO1xyXG4gICAgY29uc3QgW3RlbXBUZXN0UmVzdWx0LCBzZXRUZW1wVGVzdFJlc3VsdF0gPSB1c2VTdGF0ZShudWxsKTtcclxuXHJcbiAgICAvLyDojrflj5bmtYvor5Xpk77ot6/muIXmtIHnirbmgIFcclxuICAgIGNvbnN0IG1vZHVsZVR5cGUgPSBjdXJyZW50Q29uZmlnPy5tb2R1bGVUeXBlO1xyXG5cclxuICAgIC8vIOajgOafpei3r+W+hOS4reaJgOacieerr+WPo+eahOa4hea0geeKtuaAgVxyXG4gICAgY29uc3QgY2hlY2tQb3J0c0NsZWFuU3RhdHVzID0gKHBhdGhzKSA9PiB7XHJcbiAgICAgICAgaWYgKCFwYXRocyB8fCBwYXRocy5sZW5ndGggPT09IDApIHJldHVybiBmYWxzZTtcclxuICAgICAgICBcclxuICAgICAgICAvLyDmo4Dmn6Xmr4/kuKrnq6/lj6PnmoTmuIXmtIHnirbmgIFcclxuICAgICAgICBjb25zdCBjbGVhblBvcnRzID0gcGF0aHMuZmlsdGVyKHBvcnRJZCA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHBvcnRFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQocG9ydElkKTtcclxuICAgICAgICAgICAgcmV0dXJuIHBvcnRFbGVtZW50Py5nZXRBdHRyaWJ1dGUoJ2xjY2xlYW4nKSA9PT0gJ3RydWUnO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICAvLyDov5Tlm57lt7LmuIXmtIHnmoTnq6/lj6PmlbDph49cclxuICAgICAgICByZXR1cm4gY2xlYW5Qb3J0cy5sZW5ndGg7XHJcbiAgICB9O1xyXG5cclxuICAgIGxldCBhbGxQYXRoc0NsZWFuU3RhdHVzID0ge307XHJcbiAgICBsZXQgaXNBbGxQYXRoc0NsZWFuID0gMDsgLy8g6buY6K6k5Li6MO+8jOihqOekuuWFqOmDqOacqua4hea0gVxyXG5cclxuICAgIC8vIOWPquWcqOaooeWdl+exu+Wei+S4uiBjZnAg5oiWIG9mcCDml7bmiafooYzmo4DmtYtcclxuICAgIGlmIChtb2R1bGVUeXBlID09PSAnY2ZwJyB8fCBtb2R1bGVUeXBlID09PSAnb2ZwJykge1xyXG4gICAgICAgIGlmIChtb2R1bGVUeXBlID09PSAnY2ZwJykge1xyXG4gICAgICAgICAgICAvLyBDRlDmqKHlnZfmo4DmtYvmiYDmnInot6/lvoRcclxuICAgICAgICAgICAgY29uc3QgbWFpbkluUGF0aHMgPSBjb25uZWN0aW9uU3RhdHVzPy5tYWluUGF0aHM/LlsnbWFpbi1jZnAtaW4nXT8ucGF0aCB8fCBbXTtcclxuICAgICAgICAgICAgY29uc3QgbWFpbk91dFBhdGhzID0gY29ubmVjdGlvblN0YXR1cz8ubWFpblBhdGhzPy5baXNNdWx0aU1vZGUgPyAnbWFpbi1jZnAtbW0tb3V0JyA6ICdtYWluLWNmcC1zbS1vdXQnXT8ucGF0aCB8fCBbXTtcclxuICAgICAgICAgICAgY29uc3QgcmVtb3RlSW5QYXRocyA9IGNvbm5lY3Rpb25TdGF0dXM/LnJlbW90ZVBhdGhzPy5bJ3JlbW90ZS1jZnAtaW4nXT8ucGF0aCB8fCBbXTtcclxuICAgICAgICAgICAgY29uc3QgcmVtb3RlT3V0UGF0aHMgPSBjb25uZWN0aW9uU3RhdHVzPy5yZW1vdGVQYXRocz8uW2lzTXVsdGlNb2RlID8gJ3JlbW90ZS1jZnAtbW0tb3V0JyA6ICdyZW1vdGUtY2ZwLXNtLW91dCddPy5wYXRoIHx8IFtdO1xyXG5cclxuICAgICAgICAgICAgLy8g6I635Y+W5q+P5Liq6Lev5b6E55qE5riF5rSB56uv5Y+j5pWw6YePXHJcbiAgICAgICAgICAgIGNvbnN0IG1haW5JbkNsZWFuID0gY2hlY2tQb3J0c0NsZWFuU3RhdHVzKG1haW5JblBhdGhzKTtcclxuICAgICAgICAgICAgY29uc3QgbWFpbk91dENsZWFuID0gY2hlY2tQb3J0c0NsZWFuU3RhdHVzKG1haW5PdXRQYXRocyk7XHJcbiAgICAgICAgICAgIGNvbnN0IHJlbW90ZUluQ2xlYW4gPSBjaGVja1BvcnRzQ2xlYW5TdGF0dXMocmVtb3RlSW5QYXRocyk7XHJcbiAgICAgICAgICAgIGNvbnN0IHJlbW90ZU91dENsZWFuID0gY2hlY2tQb3J0c0NsZWFuU3RhdHVzKHJlbW90ZU91dFBhdGhzKTtcclxuXHJcbiAgICAgICAgICAgIC8vIOiuoeeul+aAu+err+WPo+aVsOWSjOW3sua4hea0geerr+WPo+aVsFxyXG4gICAgICAgICAgICBjb25zdCB0b3RhbFBvcnRzID0gbWFpbkluUGF0aHMubGVuZ3RoICsgbWFpbk91dFBhdGhzLmxlbmd0aCArIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbW90ZUluUGF0aHMubGVuZ3RoICsgcmVtb3RlT3V0UGF0aHMubGVuZ3RoO1xyXG4gICAgICAgICAgICBjb25zdCBjbGVhbmVkUG9ydHMgPSBtYWluSW5DbGVhbiArIG1haW5PdXRDbGVhbiArIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3RlSW5DbGVhbiArIHJlbW90ZU91dENsZWFuO1xyXG5cclxuICAgICAgICAgICAgLy8g6K6+572u5riF5rSB54q25oCBXHJcbiAgICAgICAgICAgIGlmIChjbGVhbmVkUG9ydHMgPT09IDApIGlzQWxsUGF0aHNDbGVhbiA9IDA7XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGNsZWFuZWRQb3J0cyA8IHRvdGFsUG9ydHMpIGlzQWxsUGF0aHNDbGVhbiA9IDE7XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGNsZWFuZWRQb3J0cyA9PT0gdG90YWxQb3J0cykgaXNBbGxQYXRoc0NsZWFuID0gMjtcclxuXHJcbiAgICAgICAgICAgIGFsbFBhdGhzQ2xlYW5TdGF0dXMgPSB7XHJcbiAgICAgICAgICAgICAgICBtYWluSW5DbGVhbjogbWFpbkluQ2xlYW4gPT09IG1haW5JblBhdGhzLmxlbmd0aCxcclxuICAgICAgICAgICAgICAgIG1haW5PdXRDbGVhbjogbWFpbk91dENsZWFuID09PSBtYWluT3V0UGF0aHMubGVuZ3RoLFxyXG4gICAgICAgICAgICAgICAgcmVtb3RlSW5DbGVhbjogcmVtb3RlSW5DbGVhbiA9PT0gcmVtb3RlSW5QYXRocy5sZW5ndGgsXHJcbiAgICAgICAgICAgICAgICByZW1vdGVPdXRDbGVhbjogcmVtb3RlT3V0Q2xlYW4gPT09IHJlbW90ZU91dFBhdGhzLmxlbmd0aFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIC8vIE9GUOaooeWdl+WPquajgOa1i+S4u+acuui+k+WHuuerr+WPo1xyXG4gICAgICAgICAgICBjb25zdCBtYWluT3V0UGF0aHMgPSBjb25uZWN0aW9uU3RhdHVzPy5tYWluUGF0aHM/Lltpc011bHRpTW9kZSA/ICdtYWluLW9mcC1tbS1vdXQnIDogJ21haW4tb2ZwLXNtLW91dCddPy5wYXRoIHx8IFtdO1xyXG4gICAgICAgICAgICBjb25zdCBjbGVhbmVkUG9ydHMgPSBjaGVja1BvcnRzQ2xlYW5TdGF0dXMobWFpbk91dFBhdGhzKTtcclxuXHJcbiAgICAgICAgICAgIC8vIOiuvue9rua4hea0geeKtuaAgVxyXG4gICAgICAgICAgICBpZiAoY2xlYW5lZFBvcnRzID09PSAwKSBpc0FsbFBhdGhzQ2xlYW4gPSAwO1xyXG4gICAgICAgICAgICBlbHNlIGlmIChjbGVhbmVkUG9ydHMgPCBtYWluT3V0UGF0aHMubGVuZ3RoKSBpc0FsbFBhdGhzQ2xlYW4gPSAxO1xyXG4gICAgICAgICAgICBlbHNlIGlmIChjbGVhbmVkUG9ydHMgPT09IG1haW5PdXRQYXRocy5sZW5ndGgpIGlzQWxsUGF0aHNDbGVhbiA9IDI7XHJcblxyXG4gICAgICAgICAgICBhbGxQYXRoc0NsZWFuU3RhdHVzID0ge1xyXG4gICAgICAgICAgICAgICAgbWFpbk91dENsZWFuOiBjbGVhbmVkUG9ydHMgPT09IG1haW5PdXRQYXRocy5sZW5ndGhcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG5cclxuXHJcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xyXG4gICAgICAgIGlmICghdGVtcFRlc3RSZXN1bHQpIHtcclxuICAgICAgICAgICAgY29uc3QgbG9hZFRlc3RSZXN1bHQgPSBhc3luYyAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRQcm9qZWN0ID0gZ2V0Q3VycmVudFByb2plY3QoKTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50T3BlcmF0b3IgPSBnZXRDdXJyZW50T3BlcmF0b3IoKTtcclxuICAgICAgICAgICAgICAgICAgICAvLyDojrflj5blvZPliY3pgInkuK3nmoTnlLXnvIZJRFxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRDYWJsZUlkID0gZ2V0Q3VycmVudENhYmxlSWQoKS5uYW1lO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIOiOt+WPluW9k+WJjemAieS4reeahOeUtee8hklEMlxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRDYWJsZUlkMiA9IGdldEN1cnJlbnRDYWJsZUlkMigpLm5hbWU7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgQ29wcGVyV2lyZW1hcFN0YXR1cyA9IGNvbm5lY3Rpb25TdGF0dXM/LkNvcHBlcldpcmVtYXBTdGF0dXM7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgQ29wcGVyUGVyZm9ybWFuY2VTdGF0dXMgPSBjb25uZWN0aW9uU3RhdHVzPy5Db3BwZXJQZXJmb3JtYW5jZVN0YXR1cztcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBvZnBSZXN1bHQgPSBjb25uZWN0aW9uU3RhdHVzPy5PRlBTdGF0dXM7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbW9kdWxlVHlwZSA9IGN1cnJlbnRDb25maWc/Lm1vZHVsZVR5cGU7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2FibGVUeXBlID0gY3VycmVudENvbmZpZz8ucGFyYW1zPy5jYWJsZVR5cGU7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgd2lyZU9yZGVyID0gY3VycmVudENvbmZpZz8ucGFyYW1zPy53aXJlT3JkZXI7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGxldCB0ZXN0UmVzdWx0O1xyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIC8vIOS4jeWQjOaooeWdl+e7hOijhea1i+ivlee7k+aenOmAu+i+kVxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChtb2R1bGVUeXBlID09PSAnODAwMCcpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IENvcHBlclJlc3VsdFN0YXR1cyA9ICdmYWlsJztcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IENvcHBlcldpcmVtYXBSZXN1bHRTdGF0dXMgPSAnZmFpbCc7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoQ29wcGVyV2lyZW1hcFN0YXR1cyA9PT0gJ3Bhc3MnICkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHdpcmVPcmRlciA9PT0gJ1Q1NjhCJyB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpcmVPcmRlciA9PT0gJ0V0aGVybmV0IFR3by1QYWlyJyB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpcmVPcmRlciA9PT0gJ00xMi1EIFR3by1QYWlyJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvcHBlcldpcmVtYXBSZXN1bHRTdGF0dXMgPSAncGFzcyc7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coQ29wcGVyV2lyZW1hcFJlc3VsdFN0YXR1cyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoQ29wcGVyV2lyZW1hcFN0YXR1cyA9PT0gJ3Bhc3MtMnBhaXInKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAod2lyZU9yZGVyID09PSAnRXRoZXJuZXQgVHdvLVBhaXInIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lyZU9yZGVyID09PSAnTTEyLUQgVHdvLVBhaXInKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29wcGVyV2lyZW1hcFJlc3VsdFN0YXR1cyA9ICdwYXNzJztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAod2lyZU9yZGVyID09PSAnVDU2OEInKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29wcGVyV2lyZW1hcFJlc3VsdFN0YXR1cyA9ICdmYWlsJztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb3BwZXJSZXN1bHRTdGF0dXMgPSAnZmFpbCc7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1lbHNlIGlmIChDb3BwZXJXaXJlbWFwU3RhdHVzID09PSAnc29wZW4nKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAod2lyZU9yZGVyID09PSAnVDU2OEInKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29wcGVyV2lyZW1hcFJlc3VsdFN0YXR1cyA9ICdmYWlsJztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb3BwZXJSZXN1bHRTdGF0dXMgPSAnZmFpbCc7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChjYWJsZVR5cGUuaW5jbHVkZXMoJ1UvVVRQJykpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb3BwZXJXaXJlbWFwUmVzdWx0U3RhdHVzID0gJ3Bhc3MnO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGNhYmxlVHlwZS5pbmNsdWRlcygnRi9VVFAnKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvcHBlcldpcmVtYXBSZXN1bHRTdGF0dXMgPSAnZmFpbCc7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29wcGVyUmVzdWx0U3RhdHVzID0gJ2ZhaWwnO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoQ29wcGVyV2lyZW1hcFJlc3VsdFN0YXR1cyA9PT0gJ3Bhc3MnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgaW1wb3J0KGBAL3N0b3JlL0NPUFBFUi8ke0NvcHBlclBlcmZvcm1hbmNlU3RhdHVzfS5qc29uYCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZGF0YSA9IHJlc3BvbnNlLmRlZmF1bHQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g5Yqg6L296ZmQ5Yi25pWw5o2uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGltaXRWYWx1ZSA9IGN1cnJlbnRDb25maWc/LnBhcmFtcz8ubGltaXRWYWx1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyDku45saW1pdFZhbHVl5Lit5o+Q5Y+W5Z+656GA5ZCN56ewKOenu+mZpCtQb0XlkowrQUxM5ZCO57yAKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBiYXNlTmFtZSA9IGxpbWl0VmFsdWUuc3BsaXQoJyAoKycpWzBdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyDkvb/nlKjln7rnoYDlkI3np7DliqDovb3luKbmnIkoK0FMTCnlkI7nvIDnmoTmlofku7ZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGltaXRSZXNwb25zZSA9IGF3YWl0IGltcG9ydChgQC9zdG9yZS9DT1BQRVIvJHtiYXNlTmFtZX0gKCtBTEwpLmpzb25gKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGltaXRkYXRhID0gbGltaXRSZXNwb25zZTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIOiuoeeul+aJgOacieWPguaVsOeahOS9memHj1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXJhbVRpdGxlcyA9IFsn5o+S5YWl5o2f6ICXJywgJ+WbnuazouaNn+iAlycsICdORVhUJywgJ1BTIE5FWFQnLCAnQUNSLU4nLCAnUFMgQUNSLU4nLCBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQUNSLUYnLCAnUFMgQUNSLUYnLCAnQ0RORVhUJywgJ0NNUkwnLCAnVENMJywgJ0VMVENUTCcsICfnlLXpmLsnXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZGF0YUdyb3VwTWFwID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ+aPkuWFpeaNn+iAlyc6ICdJbnNlcnRpb24gTG9zcyAoZEIpJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICflm57ms6LmjZ/ogJcnOiAnUkwgKGRCKScsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnTkVYVCc6ICdORVhUIChkQiknLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1BTIE5FWFQnOiAnUFMgTkVYVCAoZEIpJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdBQ1ItTic6ICdBQ1ItTiAoZEIpJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdQUyBBQ1ItTic6ICdQUyBBQ1ItTiAoZEIpJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdBQ1ItRic6ICdBQ1ItRiAoZEIpJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdQUyBBQ1ItRic6ICdQUyBBQ1ItRiAoZEIpJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdDRE5FWFQnOiAnQ0RORVhUIChkQiknLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0NNUkwnOiAnQ01STCAoZEIpJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdUQ0wnOiAnVENMIChkQiknLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0VMVENUTCc6ICdFTFRDVEwgKGRCKScsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn55S16Zi7JzogJ1Jlc2lzdGFuY2UgKM6pKSdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBoYXNOZWdhdGl2ZU1hcmdpbiA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g6ZW/5bqm5Yik5patXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsaW1pdGRhdGEuTEVOR1RIICYmIGRhdGEucGVyZm9ybWFuY2UuTEVOR1RIKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsZW5ndGhQYWlycyA9IFsnUEFJUjEyJywgJ1BBSVIzNicsICdQQUlSNDUnLCAnUEFJUjc4J107XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHBhaXIgb2YgbGVuZ3RoUGFpcnMpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YS5wZXJmb3JtYW5jZS5MRU5HVEhbcGFpcl0gPiBsaW1pdGRhdGEuTEVOR1RIKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhc05lZ2F0aXZlTWFyZ2luID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyDnlLXpmLvliKTmlq1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxpbWl0ZGF0YS5MT09QICYmIGRhdGEucGVyZm9ybWFuY2UuT0hNPy5MT09QKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsb29wUGFpcnMgPSBbJ1BBSVIxMicsICdQQUlSMzYnLCAnUEFJUjQ1JywgJ1BBSVI3OCddO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBwYWlyIG9mIGxvb3BQYWlycykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkYXRhLnBlcmZvcm1hbmNlLk9ITS5MT09QW3BhaXJdID4gbGltaXRkYXRhLkxPT1ApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzTmVnYXRpdmVNYXJnaW4gPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIueUtemYu2ZhaWxcIilcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyDmo4Dmn6XmmK/lkKbmmK8gK1BvRSDmiJYgK0FMTCDmtYvor5VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaGFzUG9FID0gbGltaXRWYWx1ZT8uaW5jbHVkZXMoJytQb0UnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaGFzQUxMID0gbGltaXRWYWx1ZT8uaW5jbHVkZXMoJytBTEwnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gK1BvRSDmiJYgK0FMTCDmtYvor5XnmoTpop3lpJbmo4Dmn6VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChoYXNQb0UgfHwgaGFzQUxMKSAmJiBkYXRhLnBlcmZvcm1hbmNlLk9ITSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g57q/5a+5IFVCTCDkvZnph4/mo4Dmn6VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsaW1pdGRhdGEuUEFJUlVCTCAmJiBkYXRhLnBlcmZvcm1hbmNlLk9ITS5QQUlSVUJMKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGFpclVibFBhaXJzID0gWydQQUlSMTInLCAnUEFJUjM2JywgJ1BBSVI0NScsICdQQUlSNzgnXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHBhaXIgb2YgcGFpclVibFBhaXJzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChNYXRoLmFicyhkYXRhLnBlcmZvcm1hbmNlLk9ITS5QQUlSVUJMW3BhaXJdKSA+IGxpbWl0ZGF0YS5QQUlSVUJMKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXNOZWdhdGl2ZU1hcmdpbiA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIlVCTCBmYWlsXCIpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBQMlAgVUJMIOS9memHj+ajgOafpVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxpbWl0ZGF0YS5QMlBVQkwgJiYgZGF0YS5wZXJmb3JtYW5jZS5PSE0uUDJQVUJMKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcDJwVWJsUGFpcnMgPSBbJ1BBSVIxMjM2JywgJ1BBSVIxMjQ1JywgJ1BBSVIxMjc4JywgJ1BBSVIzNjQ1JywgJ1BBSVIzNjc4JywgJ1BBSVI0NTc4J107XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBwYWlyIG9mIHAycFVibFBhaXJzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChNYXRoLmFicyhkYXRhLnBlcmZvcm1hbmNlLk9ITS5QMlBVQkxbcGFpcl0pID4gbGltaXRkYXRhLlAyUFVCTCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzTmVnYXRpdmVNYXJnaW4gPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJQMlAgZmFpbFwiKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgcGFyYW1UaXRsZSBvZiBwYXJhbVRpdGxlcykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZGF0YUdyb3VwID0gZGF0YUdyb3VwTWFwW3BhcmFtVGl0bGVdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyDnlLXpmLvlj4LmlbDnmoTnibnmrorlpITnkIZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYXJhbVRpdGxlID09PSAn55S16Zi7Jykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlc2lzdGFuY2VNYXJnaW4gPSBjYWxjdWxhdGVSZXNpc3RhbmNlTWFyZ2luKGRhdGEsIGxpbWl0ZGF0YSwgbGltaXRWYWx1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc2lzdGFuY2VNYXJnaW4gPCAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhc05lZ2F0aXZlTWFyZ2luID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZGF0YUdyb3VwIHx8ICFkYXRhPy5wZXJmb3JtYW5jZT8uZGF0YT8uW2RhdGFHcm91cF0gfHwgIWxpbWl0ZGF0YT8uW2RhdGFHcm91cF0pIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0ZXN0RGF0YSA9IGRhdGEucGVyZm9ybWFuY2UuZGF0YVtkYXRhR3JvdXBdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGltaXRWYWx1ZXMgPSBsaW1pdGRhdGFbZGF0YUdyb3VwXT8uWydQQUlSTGltaXQgKGRCKSddIHx8IFtdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwYWlycyA9IFsnTkVYVCAoZEIpJywgJ0FDUi1OIChkQiknXS5pbmNsdWRlcyhkYXRhR3JvdXApID9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJ1BBSVIxMjM2JywgJ1BBSVIxMjQ1JywgJ1BBSVIxMjc4JywgJ1BBSVIzNjQ1JywgJ1BBSVIzNjc4JywgJ1BBSVI0NTc4J10gOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsnQUNSLUYgKGRCKScsICdDRE5FWFQgKGRCKSddLmluY2x1ZGVzKGRhdGFHcm91cCkgP1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJ1BBSVIxMjM2JywgJ1BBSVIxMjQ1JywgJ1BBSVIxMjc4JywgJ1BBSVIzNjEyJywgJ1BBSVIzNjQ1JywgJ1BBSVIzNjc4JyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdQQUlSNDUxMicsICdQQUlSNDUzNScsICdQQUlSNDU3OCcsICdQQUlSNzgxMicsICdQQUlSNzkzNicsICdQQUlSNzg0NSddIDpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWydQQUlSMTInLCAnUEFJUjM2JywgJ1BBSVI0NScsICdQQUlSNzgnXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGxpbWl0VmFsdWVzLmxlbmd0aCAmJiAhaGFzTmVnYXRpdmVNYXJnaW47IGluZGV4KyspIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsaW1pdFZhbHVlID0gbGltaXRWYWx1ZXNbaW5kZXhdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsaW1pdFZhbHVlID09PSB1bmRlZmluZWQgfHwgbGltaXRWYWx1ZSA9PT0gbnVsbCkgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBwYWlyIG9mIHBhaXJzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGFjdHVhbFZhbHVlID0gdGVzdERhdGFbcGFpcl0/LltpbmRleF07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhY3R1YWxWYWx1ZSAhPT0gdW5kZWZpbmVkICYmIGFjdHVhbFZhbHVlICE9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtYXJnaW4gPSBwYXJhbVRpdGxlID09PSAn5o+S5YWl5o2f6ICXJyA/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWF0aC5hYnMobGltaXRWYWx1ZSkgLSBNYXRoLmFicyhhY3R1YWxWYWx1ZSkgOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hdGguYWJzKGFjdHVhbFZhbHVlKSAtIGxpbWl0VmFsdWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobWFyZ2luIDwgMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhc05lZ2F0aXZlTWFyZ2luID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29wcGVyUmVzdWx0U3RhdHVzID0gaGFzTmVnYXRpdmVNYXJnaW4gPyAnZmFpbCcgOiAncGFzcyc7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgY2FsY3VsYXRpbmcgbWFyZ2luczonLCBlcnJvcik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCfliqDovb3mtYvor5Xnu5PmnpzlpLHotKU6JywgZXJyb3IpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RSZXN1bHQgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogdXVpZHY0KCksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBjdXJyZW50UHJvamVjdD8uY2FibGVJZHNbMF0/Lm5hbWUgfHwgJycsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0Y29uZmlnOiBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGN1cnJlbnRDb25maWcgfHwge30pKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdG9yczogY3VycmVudE9wZXJhdG9yPy5uYW1lIHx8ICcnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29wcGVyV2lyZW1hcFN0YXR1cyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvcHBlcldpcmVtYXBSZXN1bHRTdGF0dXMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb3BwZXJQZXJmb3JtYW5jZVN0YXR1cyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvcHBlclJlZjogY29wcGVyUmVmU3RhdHVzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29wcGVyUmVzdWx0U3RhdHVzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobW9kdWxlVHlwZSA9PT0gJ2NmcCcgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIOaegemZkOWAvOWvvOWFpVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsaW1pdFZhbHVlID0gY3VycmVudENvbmZpZz8ucGFyYW1zPy5saW1pdFZhbHVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDRlBfTElNSVQgPSByZXF1aXJlKCdAL3N0b3JlL0ZJQkVSL0NGUF9MSU1JVCcpLmRlZmF1bHQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxpbWl0RGF0YSA9IENGUF9MSU1JVFtsaW1pdFZhbHVlXTtcclxuICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxpbWl0RGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g5L2/55SobGltaXREYXRh5Lit55qE5p6B6ZmQ5YC86L+b6KGM5ZCO57ut5aSE55CGXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRhcHRlckxvc3MsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlyc3RMYXN0QWRhcHRlckxvc3MsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BsaWNlTG9zcyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3RhbExvc3MxMzEwbm0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG90YWxMb3NzMTU1MG5tLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvc3NQZXJLbTg1MG5tLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvc3NQZXJLbTEzMDAwbm0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9zc1BlckttMTMxMG5tLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvc3NQZXJLbTE1NTBubSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhTTUxlbmd0aCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYW5NTUxlbmd0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSA9IGxpbWl0RGF0YTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyDnlKjmiLfphY3nva7liqDovb1cclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY29ubmVjdG9yQ291bnQgPSBjdXJyZW50Q29uZmlnPy5wYXJhbXM/LmNvbm5lY3RvckNvdW50O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzcGxpY2VDb3VudCA9IGN1cnJlbnRDb25maWc/LnBhcmFtcz8uc3BsaWNlQ291bnQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlZkp1bXBlciA9IGN1cnJlbnRDb25maWc/LnBhcmFtcz8ucmVmSnVtcGVyO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGNmcE1haW5JblN0YXR1cyA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjZnBNYWluT3V0U3RhdHVzID0gbnVsbDtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjZnBJblJlc3VsdCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyDliqDovb3nrKzkuIDkuKrms6Lplb/nmoTmlbDmja5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB3YXZlMURhdGEgPSBhd2FpdCBpbXBvcnQoYEAvc3RvcmUvRklCRVIvJHtjZnBJblJlc3VsdH0vJHt3YXZlbGVuZ3RoMX0tZHVtcC5qc29uYCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g5Yqg6L2956ys5LqM5Liq5rOi6ZW/55qE5pWw5o2uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgd2F2ZTJEYXRhID0gYXdhaXQgaW1wb3J0KGBAL3N0b3JlL0ZJQkVSLyR7Y2ZwSW5SZXN1bHR9LyR7d2F2ZWxlbmd0aDJ9LWR1bXAuanNvbmApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIOa3u+WKoOmaj+acuua1ruWKqOWboOWtkO+8iOaNn+iAl+S4iuS4i+a1ruWKqDEl77yJXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2V0RGlzdGFuY2VSYW5kb21GYWN0b3IgPSAoKSA9PiAxOyAvLyDplb/luqbkuI3mta7liqhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnZXRMb3NzUmFuZG9tRmFjdG9yID0gKCkgPT4gMSArIChNYXRoLnJhbmRvbSgpICogMC4wMiAtIDAuMDEpOyAvLyDnlJ/miJAwLjk55YiwMS4wMeS5i+mXtOeahOmaj+acuuaVsFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIOWFiOiuoeeul+S4pOS4quazoumVv+eahOaNn+iAl+WAvFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHdhdmUxTG9zcyA9IHdhdmUxRGF0YS5TdW1tYXJ5LnRvdGFsTG9zcyAqIGdldExvc3NSYW5kb21GYWN0b3IoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB3YXZlMkxvc3MgPSB3YXZlMkRhdGEuU3VtbWFyeS50b3RhbExvc3MgKiBnZXRMb3NzUmFuZG9tRmFjdG9yKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g5aaC5p6c5piv5Y+C6ICD54q25oCB77yM5aKe5YqgMC4xXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZmluYWxXYXZlMUxvc3MgPSAhY2ZwUmVmU3RhdHVzID8gd2F2ZTFMb3NzIDogd2F2ZTFMb3NzICsgMC4xO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGZpbmFsV2F2ZTJMb3NzID0gIWNmcFJlZlN0YXR1cyA/IHdhdmUyTG9zcyA6IHdhdmUyTG9zcyArIDAuMTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZnBNYWluSW5TdGF0dXMgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdhdmVsZW5ndGgxOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YXZlOiB3YXZlbGVuZ3RoMSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3RhbmNlOiAod2F2ZTFEYXRhLlN1bW1hcnkudG90YWxEaXN0YW5jZSAqIGdldERpc3RhbmNlUmFuZG9tRmFjdG9yKCkpLnRvRml4ZWQoMiksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb3NzOiBmaW5hbFdhdmUxTG9zcy50b0ZpeGVkKDIpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdhdmVsZW5ndGgyOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YXZlOiB3YXZlbGVuZ3RoMixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3RhbmNlOiAod2F2ZTJEYXRhLlN1bW1hcnkudG90YWxEaXN0YW5jZSAqIGdldERpc3RhbmNlUmFuZG9tRmFjdG9yKCkpLnRvRml4ZWQoMiksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb3NzOiBmaW5hbFdhdmUyTG9zcy50b0ZpeGVkKDIpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRvdGFsVG9hc3RNZXNzYWdlKFwi6KKr5rWL6ZO+6Lev5LiO5Y+C6ICD6Lez57qk57G75Z6L5LiN5LiA6Ie077yM6K+35qOA5p+lXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIDE1MDApOyAvLyAzMDAwIOavq+enkiA9IDMg56eSXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjZnBPdXRSZXN1bHQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g5Yqg6L2956ys5LiA5Liq5rOi6ZW/55qE5pWw5o2uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgd2F2ZTFEYXRhID0gYXdhaXQgaW1wb3J0KGBAL3N0b3JlL0ZJQkVSLyR7Y2ZwT3V0UmVzdWx0fS8ke3dhdmVsZW5ndGgxfS1kdW1wLmpzb25gKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyDliqDovb3nrKzkuozkuKrms6Lplb/nmoTmlbDmja5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB3YXZlMkRhdGEgPSBhd2FpdCBpbXBvcnQoYEAvc3RvcmUvRklCRVIvJHtjZnBPdXRSZXN1bHR9LyR7d2F2ZWxlbmd0aDJ9LWR1bXAuanNvbmApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIOa3u+WKoOmaj+acuua1ruWKqOWboOWtkO+8iOaNn+iAl+S4iuS4i+a1ruWKqDEl77yJXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2V0RGlzdGFuY2VSYW5kb21GYWN0b3IgPSAoKSA9PiAxOyAvLyDplb/luqbkuI3mta7liqhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnZXRMb3NzUmFuZG9tRmFjdG9yID0gKCkgPT4gMSArIChNYXRoLnJhbmRvbSgpICogMC4wMiAtIDAuMDEpOyAvLyDnlJ/miJAwLjk55YiwMS4wMeS5i+mXtOeahOmaj+acuuaVsFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIOWFiOiuoeeul+S4pOS4quazoumVv+eahOaNn+iAl+WAvFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHdhdmUxTG9zcyA9IHdhdmUxRGF0YS5TdW1tYXJ5LnRvdGFsTG9zcyAqIGdldExvc3NSYW5kb21GYWN0b3IoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB3YXZlMkxvc3MgPSB3YXZlMkRhdGEuU3VtbWFyeS50b3RhbExvc3MgKiBnZXRMb3NzUmFuZG9tRmFjdG9yKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g5aaC5p6c5piv5Y+C6ICD54q25oCB77yM5aKe5YqgMC4xXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZmluYWxXYXZlMUxvc3MgPSAhY2ZwUmVmU3RhdHVzID8gd2F2ZTFMb3NzIDogd2F2ZTFMb3NzICsgMC4xO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGZpbmFsV2F2ZTJMb3NzID0gIWNmcFJlZlN0YXR1cyA/IHdhdmUyTG9zcyA6IHdhdmUyTG9zcyArIDAuMTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZnBNYWluT3V0U3RhdHVzID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YXZlbGVuZ3RoMToge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2F2ZTogd2F2ZWxlbmd0aDEsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXN0YW5jZTogKHdhdmUxRGF0YS5TdW1tYXJ5LnRvdGFsRGlzdGFuY2UgKiBnZXREaXN0YW5jZVJhbmRvbUZhY3RvcigpKS50b0ZpeGVkKDIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9zczogZmluYWxXYXZlMUxvc3MudG9GaXhlZCgyKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YXZlbGVuZ3RoMjoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2F2ZTogd2F2ZWxlbmd0aDIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXN0YW5jZTogKHdhdmUyRGF0YS5TdW1tYXJ5LnRvdGFsRGlzdGFuY2UgKiBnZXREaXN0YW5jZVJhbmRvbUZhY3RvcigpKS50b0ZpeGVkKDIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9zczogZmluYWxXYXZlMkxvc3MudG9GaXhlZCgyKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRvYXN0TWVzc2FnZShcIuacquajgOa1i+WIsOWFiee6pO+8jOivt+ajgOafpeaOpeWPo1wiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCAxNTAwKTsgLy8gMzAwMCDmr6vnp5IgPSAzIOenklxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyDnu5PmnpzorqHnrpfkuI7liKTmlq1cclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8g56ys5LiA5qC55YWJ57qkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNmcE1haW5JbmRpc3RhbmNlID0gY2ZwTWFpbkluU3RhdHVzPy53YXZlbGVuZ3RoMT8uZGlzdGFuY2UgfHwgMDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2ZwTWFpbkluZGlzdGFuY2UyID0gY2ZwTWFpbkluU3RhdHVzPy53YXZlbGVuZ3RoMj8uZGlzdGFuY2UgfHwgMDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2ZwTWFpbklubG9zcyA9IGNmcE1haW5JblN0YXR1cz8ud2F2ZWxlbmd0aDE/Lmxvc3MgfHwgMDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2ZwTWFpbklubG9zczIgPSBjZnBNYWluSW5TdGF0dXM/LndhdmVsZW5ndGgyPy5sb3NzIHx8IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIOmVv+W6puWIpOaWrVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtYXhMZW5ndGggPSBpc011bHRpTW9kZSA/IGxpbWl0RGF0YS5tYXhNTUxlbmd0aCA6IGxpbWl0RGF0YS5tYXhTTUxlbmd0aDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaXNMZW5ndGhWYWxpZEluID0gY2ZwTWFpbkluZGlzdGFuY2UgPD0gbWF4TGVuZ3RoICYmIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNmcE1haW5JbmRpc3RhbmNlMiA8PSBtYXhMZW5ndGggO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyDmjZ/ogJfliKTmlq1cclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbG9zc1BlckttID0gaXNNdWx0aU1vZGUgPyAobGltaXREYXRhLmxvc3NQZXJLbTg1MG5tKToobGltaXREYXRhLmxvc3NQZXJLbTEzMTBubSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxvc3NQZXJLbTIgPSBpc011bHRpTW9kZSA/IChsaW1pdERhdGEubG9zc1BlckttMTMwMG5tKToobGltaXREYXRhLmxvc3NQZXJLbTE1NTBubSk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0b3RhbExvc3NMaW1pdCA9IGxpbWl0RGF0YS5hZGFwdGVyTG9zcyAhPT0gbnVsbCA/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25uZWN0b3JDb3VudCAqIGxpbWl0RGF0YS5hZGFwdGVyTG9zcyArIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BsaWNlQ291bnQgKiBsaW1pdERhdGEuc3BsaWNlTG9zcyArIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNmcE1haW5JbmRpc3RhbmNlLzEwMDApICogbG9zc1BlckttXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGlzTXVsdGlNb2RlID8gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxpbWl0RGF0YS50b3RhbExvc3M4NTBubSk6KGxpbWl0RGF0YS50b3RhbExvc3MxMzEwbm0pO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdG90YWxMb3NzTGltaXQyID0gbGltaXREYXRhLmFkYXB0ZXJMb3NzICE9PSBudWxsID9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbm5lY3RvckNvdW50ICogbGltaXREYXRhLmFkYXB0ZXJMb3NzICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwbGljZUNvdW50ICogbGltaXREYXRhLnNwbGljZUxvc3MgK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNmcE1haW5JbmRpc3RhbmNlMi8xMDAwKSAqIGxvc3NQZXJLbTJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogaXNNdWx0aU1vZGUgPyBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGltaXREYXRhLnRvdGFsTG9zczEzMDBubSk6KGxpbWl0RGF0YS50b3RhbExvc3MxNTUwbm0pO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaXNMb3NzVmFsaWRJbiA9IGNmcE1haW5Jbmxvc3MgPD0gdG90YWxMb3NzTGltaXQgJiYgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZnBNYWluSW5sb3NzMiA8PSB0b3RhbExvc3NMaW1pdDIgO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8g56ys5LqM5qC55YWJ57qkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNmcE1haW5PdXRkaXN0YW5jZSA9IGNmcE1haW5PdXRTdGF0dXM/LndhdmVsZW5ndGgxPy5kaXN0YW5jZSB8fCAwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjZnBNYWluT3V0ZGlzdGFuY2UyID0gY2ZwTWFpbk91dFN0YXR1cz8ud2F2ZWxlbmd0aDI/LmRpc3RhbmNlIHx8IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNmcE1haW5PdXRsb3NzID0gY2ZwTWFpbk91dFN0YXR1cz8ud2F2ZWxlbmd0aDE/Lmxvc3MgfHwgMDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2ZwTWFpbk91dGxvc3MyID0gY2ZwTWFpbk91dFN0YXR1cz8ud2F2ZWxlbmd0aDI/Lmxvc3MgfHwgMDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8g6ZW/5bqm5Yik5patXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1heExlbmd0aE91dCA9IGlzTXVsdGlNb2RlID8gbGltaXREYXRhLm1heE1NTGVuZ3RoIDogbGltaXREYXRhLm1heFNNTGVuZ3RoO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpc0xlbmd0aFZhbGlkT3V0ID0gY2ZwTWFpbk91dGRpc3RhbmNlIDw9IG1heExlbmd0aCAmJiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2ZwTWFpbk91dGRpc3RhbmNlMiA8PSBtYXhMZW5ndGggO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyDmjZ/ogJfliKTmlq1cclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbG9zc1BlckttT3V0ID0gaXNNdWx0aU1vZGUgPyAobGltaXREYXRhLmxvc3NQZXJLbTg1MG5tKToobGltaXREYXRhLmxvc3NQZXJLbTEzMTBubSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxvc3NQZXJLbTJPdXQgPSBpc011bHRpTW9kZSA/IChsaW1pdERhdGEubG9zc1BlckttMTMwMG5tKToobGltaXREYXRhLmxvc3NQZXJLbTE1NTBubSk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0b3RhbExvc3NMaW1pdE91dCA9IGxpbWl0RGF0YS5hZGFwdGVyTG9zcyAhPT0gbnVsbCA/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25uZWN0b3JDb3VudCAqIGxpbWl0RGF0YS5hZGFwdGVyTG9zcyArIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BsaWNlQ291bnQgKiBsaW1pdERhdGEuc3BsaWNlTG9zcyArIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNmcE1haW5JbmRpc3RhbmNlLzEwMDApICogbG9zc1BlckttT3V0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGlzTXVsdGlNb2RlID8gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxpbWl0RGF0YS50b3RhbExvc3M4NTBubSk6KGxpbWl0RGF0YS50b3RhbExvc3MxMzEwbm0pO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdG90YWxMb3NzTGltaXQyT3V0ID0gbGltaXREYXRhLmFkYXB0ZXJMb3NzICE9PSBudWxsID9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbm5lY3RvckNvdW50ICogbGltaXREYXRhLmFkYXB0ZXJMb3NzICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwbGljZUNvdW50ICogbGltaXREYXRhLnNwbGljZUxvc3MgK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNmcE1haW5PdXRkaXN0YW5jZTIvMTAwMCkgKiBsb3NzUGVyS20yT3V0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGlzTXVsdGlNb2RlID8gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxpbWl0RGF0YS50b3RhbExvc3MxMzAwbm0pOihsaW1pdERhdGEudG90YWxMb3NzMTU1MG5tKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGlzTG9zc1ZhbGlkT3V0ID0gY2ZwTWFpbk91dGxvc3MgPD0gdG90YWxMb3NzTGltaXRPdXQgJiYgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNmcE1haW5PdXRsb3NzMiA8PSB0b3RhbExvc3NMaW1pdDJPdXQgO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIOe7k+aenOWIpOaWrVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDRlBSZXN1bHRTdGF0dXMgPSBpc0xlbmd0aFZhbGlkSW4gJiYgaXNMb3NzVmFsaWRJbiAmJiBpc0xlbmd0aFZhbGlkT3V0ICYmIGlzTG9zc1ZhbGlkT3V0ID8gJ3Bhc3MnIDogJ2ZhaWwnO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBJTuerr+WPo+mAmui/h+Wksei0peWIpOaWre+8iOagueaNriBpc011bHRpTW9kZSDliKTmlq3kvb/nlKjlk6rnu4Tlj4LmlbDvvIlcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgSW5Qb3J0U3RhdHVzID0gaXNNdWx0aU1vZGUgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IChpc0xlbmd0aFZhbGlkSW4gJiYgaXNMb3NzVmFsaWRJbiA/ICdwYXNzJyA6ICdmYWlsJylcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogKGlzTGVuZ3RoVmFsaWRPdXQgJiYgaXNMb3NzVmFsaWRPdXQgPyAncGFzcycgOiAnZmFpbCcpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBPVVTnq6/lj6PpgJrov4flpLHotKXliKTmlq1cclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgT3V0UG9ydFN0YXR1cyA9IGlzTXVsdGlNb2RlIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAoaXNMZW5ndGhWYWxpZE91dCAmJiBpc0xlbmd0aFZhbGlkT3V0ID8gJ3Bhc3MnIDogJ2ZhaWwnKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAoaXNMZW5ndGhWYWxpZEluICYmIGlzTG9zc1ZhbGlkSW4gPyAncGFzcycgOiAnZmFpbCcpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RSZXN1bHQgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogdXVpZHY0KCksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBjdXJyZW50Q2FibGVJZCB8fCAnJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUyOiBjdXJyZW50Q2FibGVJZDIgfHwgJycsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0Y29uZmlnOiBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGN1cnJlbnRDb25maWcgfHwge30pKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdG9yczogY3VycmVudE9wZXJhdG9yPy5uYW1lIHx8ICcnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0ZQUmVmOmNmcFJlZlN0YXR1cyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIENGUFJlZkNvbm5lY3Q6Y2ZwUmVmQ29ubmVjdFN0YXR1cyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIENGUE1haW5JbjpjZnBNYWluSW5TdGF0dXMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0xlbmd0aFZhbGlkSW4sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0xvc3NWYWxpZEluLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5Qb3J0U3RhdHVzLCAgICAgIC8vIOa3u+WKoElO56uv5Y+j54q25oCBXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0xlbmd0aFZhbGlkT3V0LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNMb3NzVmFsaWRPdXQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRQb3J0U3RhdHVzLCAgICAgLy8g5re75YqgT1VU56uv5Y+j54q25oCBXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDRlBNYWluT3V0OmNmcE1haW5PdXRTdGF0dXMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDRlBSZXN1bHRTdGF0dXMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQb3J0Q2xlYW5TdGF0dXM6aXNBbGxQYXRoc0NsZWFuLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobW9kdWxlVHlwZSA9PT0gJ29mcCcpIHtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0ICBvZnBDb25uZWN0aW9uU3RhdHVzID0gY29ubmVjdGlvblN0YXR1cztcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBvZnBSZXN1bHRTdGF0dXMgPSAnZmFpbCc7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAob2ZwUmVzdWx0LmluY2x1ZGVzKCdwYXNzJykpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghb2ZwUmVmU3RhdHVzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbm5lY3Rpb25TdGF0dXMuT0ZQb3V0UmVmU3RhdHVzLmluY2x1ZGVzKCdzbS0nKSB8fCBjb25uZWN0aW9uU3RhdHVzLk9GUG91dFJlZlN0YXR1cy5pbmNsdWRlcygnbW0tJykpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2ZwUmVzdWx0U3RhdHVzID0gJ2ZhaWwnO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mcFJlc3VsdFN0YXR1cyA9ICdwYXNzJztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChvZnBSZWZTdGF0dXMgPT09ICdzdGFydCcpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29ubmVjdGlvblN0YXR1cy5PRlBvdXRSZWZTdGF0dXMuaW5jbHVkZXMoJ3NtYy0nKSB8fCBjb25uZWN0aW9uU3RhdHVzLk9GUG91dFJlZlN0YXR1cy5pbmNsdWRlcygnbW1jLScpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mcFJlc3VsdFN0YXR1cyA9ICdwYXNzJztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG9mcFJlZlN0YXR1cyA9PT0gJ2VuZCcpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBoYXNTbU9yTW0gPSBjb25uZWN0aW9uU3RhdHVzLk9GUG91dFJlZlN0YXR1cy5pbmNsdWRlcygnc20tJykgfHwgY29ubmVjdGlvblN0YXR1cy5PRlBvdXRSZWZTdGF0dXMuaW5jbHVkZXMoJ21tLScpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGhhc1NtY09yTW1jID0gY29ubmVjdGlvblN0YXR1cy5PRlBvdXRSZWZTdGF0dXMuaW5jbHVkZXMoJ3NtYy0nKSB8fCBjb25uZWN0aW9uU3RhdHVzLk9GUG91dFJlZlN0YXR1cy5pbmNsdWRlcygnbW1jLScpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGhhc0Nvbm5lY3RlZFNtT3JNbSA9IGNvbm5lY3Rpb25TdGF0dXMuT0ZQQ29ubmVjdGVkVG9SZWZTdGF0dXM/LmluY2x1ZGVzKCdzbS0nKSB8fCBjb25uZWN0aW9uU3RhdHVzLk9GUENvbm5lY3RlZFRvUmVmU3RhdHVzPy5pbmNsdWRlcygnbW0tJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaGFzQ29ubmVjdGVkU21jT3JNbWMgPSBjb25uZWN0aW9uU3RhdHVzLk9GUENvbm5lY3RlZFRvUmVmU3RhdHVzPy5pbmNsdWRlcygnc21jLScpIHx8IGNvbm5lY3Rpb25TdGF0dXMuT0ZQQ29ubmVjdGVkVG9SZWZTdGF0dXM/LmluY2x1ZGVzKCdtbWMtJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g5Y+q5pyJ5YmN5a+85ZKM5pyr5bC+6YO95piv6KGl5YG/57q/5pe25omN5pivcGFzc++8jOWFtuS7luaDheWGtemDveaYr2ZhaWxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaGFzU21jT3JNbWMgJiYgaGFzQ29ubmVjdGVkU21jT3JNbWMpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2ZwUmVzdWx0U3RhdHVzID0gJ3Bhc3MnO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mcFJlc3VsdFN0YXR1cyA9ICdmYWlsJztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAob2ZwUmVzdWx0ID09PSAnY29ubmVjdG9yLWZhaWwtZW5kJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFvZnBSZWZTdGF0dXMpIHtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbm5lY3Rpb25TdGF0dXMuT0ZQb3V0UmVmU3RhdHVzLmluY2x1ZGVzKCdzbS0nKSB8fCBjb25uZWN0aW9uU3RhdHVzLk9GUG91dFJlZlN0YXR1cy5pbmNsdWRlcygnbW0tJykpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2ZwUmVzdWx0U3RhdHVzID0gJ2ZhaWwnO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mcFJlc3VsdFN0YXR1cyA9ICdwYXNzJztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChvZnBSZWZTdGF0dXMgPT09ICdzdGFydCcpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29ubmVjdGlvblN0YXR1cy5PRlBvdXRSZWZTdGF0dXMuaW5jbHVkZXMoJ3NtYy0nKSB8fCBjb25uZWN0aW9uU3RhdHVzLk9GUG91dFJlZlN0YXR1cy5pbmNsdWRlcygnbW1jLScpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mcFJlc3VsdFN0YXR1cyA9ICdwYXNzJztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG9mcFJlZlN0YXR1cyA9PT0gJ2VuZCcpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBoYXNTbU9yTW0gPSBjb25uZWN0aW9uU3RhdHVzLk9GUG91dFJlZlN0YXR1cy5pbmNsdWRlcygnc20tJykgfHwgY29ubmVjdGlvblN0YXR1cy5PRlBvdXRSZWZTdGF0dXMuaW5jbHVkZXMoJ21tLScpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGhhc1NtY09yTW1jID0gY29ubmVjdGlvblN0YXR1cy5PRlBvdXRSZWZTdGF0dXMuaW5jbHVkZXMoJ3NtYy0nKSB8fCBjb25uZWN0aW9uU3RhdHVzLk9GUG91dFJlZlN0YXR1cy5pbmNsdWRlcygnbW1jLScpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGhhc0Nvbm5lY3RlZFNtT3JNbSA9IGNvbm5lY3Rpb25TdGF0dXMuT0ZQQ29ubmVjdGVkVG9SZWZTdGF0dXM/LmluY2x1ZGVzKCdzbS0nKSB8fCBjb25uZWN0aW9uU3RhdHVzLk9GUENvbm5lY3RlZFRvUmVmU3RhdHVzPy5pbmNsdWRlcygnbW0tJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaGFzQ29ubmVjdGVkU21jT3JNbWMgPSBjb25uZWN0aW9uU3RhdHVzLk9GUENvbm5lY3RlZFRvUmVmU3RhdHVzPy5pbmNsdWRlcygnc21jLScpIHx8IGNvbm5lY3Rpb25TdGF0dXMuT0ZQQ29ubmVjdGVkVG9SZWZTdGF0dXM/LmluY2x1ZGVzKCdtbWMtJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyDlj6rmnInliY3lr7zlkozmnKvlsL7pg73mmK/ooaXlgb/nur/ml7bmiY3mmK9wYXNz77yM5YW25LuW5oOF5Ya16YO95pivZmFpbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoYXNTbWNPck1tYyAmJiBoYXNDb25uZWN0ZWRTbWNPck1tYykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZnBSZXN1bHRTdGF0dXMgPSAncGFzcyc7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2ZwUmVzdWx0U3RhdHVzID0gJ2ZhaWwnO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfWVsc2UgaWYgKG9mcFJlc3VsdCA9PT0gJ2Nvbm5lY3Rvci1mYWlsLXN0YXJ0Jykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9mcFJlZlN0YXR1cyA9PT0gJ3N0YXJ0Jykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBoYXNTbU9yTW0gPSBjb25uZWN0aW9uU3RhdHVzLk9GUG91dFJlZlN0YXR1cy5pbmNsdWRlcygnc20tJykgfHwgY29ubmVjdGlvblN0YXR1cy5PRlBvdXRSZWZTdGF0dXMuaW5jbHVkZXMoJ21tLScpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBoYXNTbWNPck1tYyA9IGNvbm5lY3Rpb25TdGF0dXMuT0ZQb3V0UmVmU3RhdHVzLmluY2x1ZGVzKCdzbWMtJykgfHwgY29ubmVjdGlvblN0YXR1cy5PRlBvdXRSZWZTdGF0dXMuaW5jbHVkZXMoJ21tYy0nKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoaGFzU21Pck1tKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mcFJlc3VsdFN0YXR1cyA9ICdmYWlsJztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfWVsc2UgaWYoaGFzU21jT3JNbWMpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2ZwUmVzdWx0U3RhdHVzID0gJ2ZhaWwnO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGVzdFJlc3VsdCA9IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB1dWlkdjQoKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGN1cnJlbnRQcm9qZWN0Py5jYWJsZUlkc1swXT8ubmFtZSB8fCAnJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Rjb25maWc6IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoY3VycmVudENvbmZpZyB8fCB7fSkpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3JzOiBjdXJyZW50T3BlcmF0b3I/Lm5hbWUgfHwgJycsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZnBSZXN1bHQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZnBSZWZTdGF0dXMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBPRlBSZWZDb25uZWN0Om9mcFJlZkNvbm5lY3RTdGF0dXMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZnBDb25uZWN0aW9uU3RhdHVzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb2ZwUmVzdWx0U3RhdHVzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgUG9ydENsZWFuU3RhdHVzOmlzQWxsUGF0aHNDbGVhbixcclxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgc2V0VGVtcFRlc3RSZXN1bHQodGVzdFJlc3VsdCk7XHJcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ+WKoOi9vea1i+ivlee7k+aenOWksei0pTonLCBlcnJvcik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIGxvYWRUZXN0UmVzdWx0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgfSwgW2Nvbm5lY3Rpb25TdGF0dXM/LkNvcHBlcldpcmVtYXBTdGF0dXMsIGNvbm5lY3Rpb25TdGF0dXM/LkNvcHBlclBlcmZvcm1hbmNlU3RhdHVzXSk7XHJcbiAgICBcclxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XHJcbiAgICAgICAgaWYgKHRlbXBUZXN0UmVzdWx0KSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG1vZHVsZVR5cGUgPSB0ZW1wVGVzdFJlc3VsdC50ZXN0Y29uZmlnPy5tb2R1bGVUeXBlO1xyXG4gICAgICAgICAgICBsZXQgZGVsYXlUaW1lID0gMTUwMDsgLy8g6buY6K6k5bu26L+fMS4156eSXHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBpZiAobW9kdWxlVHlwZSA9PT0gJzgwMDAnKSB7XHJcbiAgICAgICAgICAgICAgICBkZWxheVRpbWUgPSA1MDAwOyAvLyA4MDAw5qih5Z2X5bu26L+fNeenklxyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1vZHVsZVR5cGUgPT09ICdjZnAnKSB7XHJcbiAgICAgICAgICAgICAgICBkZWxheVRpbWUgPSAxNTAwOyAvLyBjZnDmqKHlnZflu7bov58xLjXnp5JcclxuICAgICAgICAgICAgfSBlbHNlIGlmIChtb2R1bGVUeXBlID09PSAnb2ZwJykge1xyXG4gICAgICAgICAgICAgICAgZGVsYXlUaW1lID0gNjAwMDsgLy8gb2Zw5qih5Z2X5bu26L+fNuenklxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBjb25zdCB0aW1lciA9IHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgbmF2aWdhdGVUbygncmVzdWx0aW5mbycsICdub3NhdmUnLCB0ZW1wVGVzdFJlc3VsdCk7XHJcbiAgICAgICAgICAgIH0sIGRlbGF5VGltZSk7XHJcbiAgICAgICAgICAgIHJldHVybiAoKSA9PiBjbGVhclRpbWVvdXQodGltZXIpO1xyXG4gICAgICAgIH1cclxuICAgIH0sIFt0ZW1wVGVzdFJlc3VsdF0pO1xyXG5cclxuICAgIHJldHVybiAoXHJcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LWZ1bGwgaC1mdWxsIGZsZXggZmxleC1jb2wgb3ZlcmZsb3ctaGlkZGVuXCI+XHJcbiAgICAgICAgICAgIDxTdGF0dXNCYXIgLz5cclxuICAgICAgICAgICAgPFRpdGxlQmFyIFxyXG4gICAgICAgICAgICAgICAgdGl0bGU9XCLov5vnqItcIiBcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJoLVs0OTBweF0gYmctWyNENURGRUJdIHJlbGF0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICB7Lyog6IOM5pmv5Zu+54mHICovfVxyXG4gICAgICAgICAgICAgICAgPGRpdiBcclxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJhYnNvbHV0ZSBpbnNldC0wIGJnLWNvdmVyIGJnLWNlbnRlciBiZy1uby1yZXBlYXRcIlxyXG4gICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7IGJhY2tncm91bmRJbWFnZTogJ3VybCgvdGVzdGluZy5naWYpJyB9fVxyXG4gICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgey8qIOa1i+ivlemFjee9rmxpbWl05YC8ICovfVxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJhYnNvbHV0ZSAgdy1mdWxsIHRvcC04ICB6LTEwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgdGV4dC1ibGFjayB0ZXh0LXhsIGZvbnQtYm9sZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7Y3VycmVudENvbmZpZz8ucGFyYW1zPy5saW1pdFZhbHVlIHx8ICfmnKrorr7nva4nfVxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaC1bNjBweF0gYmctWyMxMzI4NDNdIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHB4LTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidy1bMTAwcHhdIGgtWzQwcHhdICByb3VuZGVkLXNtIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHRleHQtd2hpdGUgZm9udC1ib2xkIHNoYWRvdy1sZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBuYXZpZ2F0ZVRvKCdob21lJywgJ21haW4nKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAg5Y+W5raIXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICApO1xyXG59Il0sIm5hbWVzIjpbIlJlYWN0IiwidXNlU3RhdGUiLCJ1c2VFZmZlY3QiLCJTdGF0dXNCYXIiLCJUaXRsZUJhciIsInVzZURpc3BsYXlTdG9yZSIsInVzZURldmljZVN0b3JlIiwidjQiLCJ1dWlkdjQiLCJjYWxjdWxhdGVSZXNpc3RhbmNlTWFyZ2luIiwiZGF0YSIsImxpbWl0ZGF0YSIsImxpbWl0VmFsdWUiLCJpc1BvRVRlc3QiLCJpbmNsdWRlcyIsImlzQUxMVGVzdCIsIm1pbk1hcmdpbiIsIkluZmluaXR5IiwibG9vcFJlc2lzdGFuY2VEYXRhIiwicGVyZm9ybWFuY2UiLCJsb29wUmVzaXN0YW5jZUxpbWl0IiwicGFpcnMiLCJwYWlyIiwiYWN0dWFsVmFsdWVzIiwiQXJyYXkiLCJpc0FycmF5IiwiaSIsImxlbmd0aCIsImFjdHVhbFZhbHVlIiwibGltaXRWYWwiLCJ1bmRlZmluZWQiLCJtYXJnaW4iLCJNYXRoIiwiYWJzIiwibWluIiwidWJsRGF0YSIsInVibExpbWl0IiwicDJwVWJsRGF0YSIsInAycFVibExpbWl0IiwiZXJyb3IiLCJjb25zb2xlIiwiVGVzdGluZyIsInZpZXciLCJnZXRTdGF0ZSIsIm5hdmlnYXRpb24iLCJjdXJyZW50IiwibmF2aWdhdGVUbyIsImdldEN1cnJlbnRUZXN0Q29uZmlnIiwiZ2V0Q3VycmVudFByb2plY3QiLCJnZXRDdXJyZW50T3BlcmF0b3IiLCJnZXRDdXJyZW50Q2FibGVJZCIsImdldEN1cnJlbnRDYWJsZUlkMiIsInNldFRvYXN0TWVzc2FnZSIsImN1cnJlbnRDb25maWciLCJjb25uZWN0aW9uU3RhdHVzIiwic2V0VG90YWxUb2FzdE1lc3NhZ2UiLCJjb3BwZXJNYWluUGF0aEtleSIsIm1haW5QYXRocyIsIk9iamVjdCIsImtleXMiLCJjb3BwZXJSZW1vdGVQYXRoS2V5IiwicmVtb3RlUGF0aHMiLCJjb3BwZXJtYWluZW5kIiwiZW5kIiwiY29wcGVycmVtb3RlZW5kIiwiY29wcGVyUmVmU3RhdHVzIiwicmVmIiwiY29wcGVyIiwic3RhdHVzIiwiY2FibGVUeXBlIiwicGFyYW1zIiwiaXNNdWx0aU1vZGUiLCJjZnBSZWZTdGF0dXMiLCJjZnAiLCJjZnBSZWZDb25uZWN0U3RhdHVzIiwiY29ubmVjdFN0YXR1cyIsImNmcEluUmVzdWx0IiwiQ0ZQTWFpbkluIiwiQ0ZQTWFpbk91dCIsImNmcE91dFJlc3VsdCIsIndhdmVsZW5ndGgxIiwid2F2ZWxlbmd0aDIiLCJvZnBNYWluRW5kIiwib2ZwUmVmU3RhdHVzIiwib2ZwIiwib2ZwUmVmQ29ubmVjdFN0YXR1cyIsInRlbXBUZXN0UmVzdWx0Iiwic2V0VGVtcFRlc3RSZXN1bHQiLCJtb2R1bGVUeXBlIiwiY2hlY2tQb3J0c0NsZWFuU3RhdHVzIiwicGF0aHMiLCJjbGVhblBvcnRzIiwiZmlsdGVyIiwicG9ydElkIiwicG9ydEVsZW1lbnQiLCJkb2N1bWVudCIsImdldEVsZW1lbnRCeUlkIiwiZ2V0QXR0cmlidXRlIiwiYWxsUGF0aHNDbGVhblN0YXR1cyIsImlzQWxsUGF0aHNDbGVhbiIsIm1haW5JblBhdGhzIiwicGF0aCIsIm1haW5PdXRQYXRocyIsInJlbW90ZUluUGF0aHMiLCJyZW1vdGVPdXRQYXRocyIsIm1haW5JbkNsZWFuIiwibWFpbk91dENsZWFuIiwicmVtb3RlSW5DbGVhbiIsInJlbW90ZU91dENsZWFuIiwidG90YWxQb3J0cyIsImNsZWFuZWRQb3J0cyIsImxvYWRUZXN0UmVzdWx0IiwiY3VycmVudFByb2plY3QiLCJjdXJyZW50T3BlcmF0b3IiLCJjdXJyZW50Q2FibGVJZCIsIm5hbWUiLCJjdXJyZW50Q2FibGVJZDIiLCJDb3BwZXJXaXJlbWFwU3RhdHVzIiwiQ29wcGVyUGVyZm9ybWFuY2VTdGF0dXMiLCJvZnBSZXN1bHQiLCJPRlBTdGF0dXMiLCJ3aXJlT3JkZXIiLCJ0ZXN0UmVzdWx0IiwiQ29wcGVyUmVzdWx0U3RhdHVzIiwiQ29wcGVyV2lyZW1hcFJlc3VsdFN0YXR1cyIsImxvZyIsInJlc3BvbnNlIiwiZGVmYXVsdCIsImJhc2VOYW1lIiwic3BsaXQiLCJsaW1pdFJlc3BvbnNlIiwicGFyYW1UaXRsZXMiLCJkYXRhR3JvdXBNYXAiLCJoYXNOZWdhdGl2ZU1hcmdpbiIsIkxFTkdUSCIsImxlbmd0aFBhaXJzIiwiTE9PUCIsIk9ITSIsImxvb3BQYWlycyIsImhhc1BvRSIsImhhc0FMTCIsIlBBSVJVQkwiLCJwYWlyVWJsUGFpcnMiLCJQMlBVQkwiLCJwMnBVYmxQYWlycyIsInBhcmFtVGl0bGUiLCJkYXRhR3JvdXAiLCJyZXNpc3RhbmNlTWFyZ2luIiwidGVzdERhdGEiLCJsaW1pdFZhbHVlcyIsImluZGV4IiwiaWQiLCJjYWJsZUlkcyIsInRlc3Rjb25maWciLCJKU09OIiwicGFyc2UiLCJzdHJpbmdpZnkiLCJvcGVyYXRvcnMiLCJDb3BwZXJSZWYiLCJDRlBfTElNSVQiLCJyZXF1aXJlIiwibGltaXREYXRhIiwiYWRhcHRlckxvc3MiLCJmaXJzdExhc3RBZGFwdGVyTG9zcyIsInNwbGljZUxvc3MiLCJ0b3RhbExvc3MxMzEwbm0iLCJ0b3RhbExvc3MxNTUwbm0iLCJsb3NzUGVyS204NTBubSIsImxvc3NQZXJLbTEzMDAwbm0iLCJsb3NzUGVyS20xMzEwbm0iLCJsb3NzUGVyS20xNTUwbm0iLCJtYXhTTUxlbmd0aCIsIm1hbk1NTGVuZ3RoIiwiY29ubmVjdG9yQ291bnQiLCJzcGxpY2VDb3VudCIsInJlZkp1bXBlciIsImNmcE1haW5JblN0YXR1cyIsImNmcE1haW5PdXRTdGF0dXMiLCJ3YXZlMURhdGEiLCJ3YXZlMkRhdGEiLCJnZXREaXN0YW5jZVJhbmRvbUZhY3RvciIsImdldExvc3NSYW5kb21GYWN0b3IiLCJyYW5kb20iLCJ3YXZlMUxvc3MiLCJTdW1tYXJ5IiwidG90YWxMb3NzIiwid2F2ZTJMb3NzIiwiZmluYWxXYXZlMUxvc3MiLCJmaW5hbFdhdmUyTG9zcyIsIndhdmUiLCJkaXN0YW5jZSIsInRvdGFsRGlzdGFuY2UiLCJ0b0ZpeGVkIiwibG9zcyIsInNldFRpbWVvdXQiLCJjZnBNYWluSW5kaXN0YW5jZSIsImNmcE1haW5JbmRpc3RhbmNlMiIsImNmcE1haW5Jbmxvc3MiLCJjZnBNYWluSW5sb3NzMiIsIm1heExlbmd0aCIsIm1heE1NTGVuZ3RoIiwiaXNMZW5ndGhWYWxpZEluIiwibG9zc1BlckttIiwibG9zc1BlckttMiIsImxvc3NQZXJLbTEzMDBubSIsInRvdGFsTG9zc0xpbWl0IiwidG90YWxMb3NzODUwbm0iLCJ0b3RhbExvc3NMaW1pdDIiLCJ0b3RhbExvc3MxMzAwbm0iLCJpc0xvc3NWYWxpZEluIiwiY2ZwTWFpbk91dGRpc3RhbmNlIiwiY2ZwTWFpbk91dGRpc3RhbmNlMiIsImNmcE1haW5PdXRsb3NzIiwiY2ZwTWFpbk91dGxvc3MyIiwibWF4TGVuZ3RoT3V0IiwiaXNMZW5ndGhWYWxpZE91dCIsImxvc3NQZXJLbU91dCIsImxvc3NQZXJLbTJPdXQiLCJ0b3RhbExvc3NMaW1pdE91dCIsInRvdGFsTG9zc0xpbWl0Mk91dCIsImlzTG9zc1ZhbGlkT3V0IiwiQ0ZQUmVzdWx0U3RhdHVzIiwiSW5Qb3J0U3RhdHVzIiwiT3V0UG9ydFN0YXR1cyIsIm5hbWUyIiwiQ0ZQUmVmIiwiQ0ZQUmVmQ29ubmVjdCIsIlBvcnRDbGVhblN0YXR1cyIsIm9mcENvbm5lY3Rpb25TdGF0dXMiLCJvZnBSZXN1bHRTdGF0dXMiLCJPRlBvdXRSZWZTdGF0dXMiLCJoYXNTbU9yTW0iLCJoYXNTbWNPck1tYyIsImhhc0Nvbm5lY3RlZFNtT3JNbSIsIk9GUENvbm5lY3RlZFRvUmVmU3RhdHVzIiwiaGFzQ29ubmVjdGVkU21jT3JNbWMiLCJPRlBSZWZDb25uZWN0IiwiZGVsYXlUaW1lIiwidGltZXIiLCJjbGVhclRpbWVvdXQiLCJkaXYiLCJjbGFzc05hbWUiLCJ0aXRsZSIsInN0eWxlIiwiYmFja2dyb3VuZEltYWdlIiwic3BhbiIsImJ1dHRvbiIsIm9uQ2xpY2siXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(pages-dir-node)/./src/components/dsxpage/general/Testing.js\n"); /***/ }), /***/ "(pages-dir-node)/./src/components/dsxpage/general/Tools.js": /*!*************************************************!*\ !*** ./src/components/dsxpage/general/Tools.js ***! \*************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; eval("__webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ Tools)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"react/jsx-dev-runtime\");\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 */ \"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var next_image__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! next/image */ \"(pages-dir-node)/./node_modules/next/image.js\");\n/* harmony import */ var next_image__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(next_image__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _components_lib_StatusBar__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/components/lib//StatusBar */ \"(pages-dir-node)/./src/components/lib/StatusBar.js\");\n/* harmony import */ var _components_lib_TitleBar__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/components/lib//TitleBar */ \"(pages-dir-node)/./src/components/lib/TitleBar.js\");\n/* harmony import */ var _components_lib_SubTitleBar__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/components/lib//SubTitleBar */ \"(pages-dir-node)/./src/components/lib/SubTitleBar.js\");\n/* harmony import */ var _store_displayStore__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @/store/displayStore */ \"(pages-dir-node)/./src/store/displayStore.js\");\n/* harmony import */ var _store_deviceStore__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @/store/deviceStore */ \"(pages-dir-node)/./src/store/deviceStore.js\");\n/* harmony import */ var _config_api__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @/config/api */ \"(pages-dir-node)/./src/config/api.js\");\n/* harmony import */ var _utils_asset__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @/utils/asset */ \"(pages-dir-node)/./src/utils/asset.js\");\n/* harmony import */ var _components_AudioProvider__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @/components/AudioProvider */ \"(pages-dir-node)/./src/components/AudioProvider.js\");\nvar __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_components_lib_StatusBar__WEBPACK_IMPORTED_MODULE_3__, _components_lib_TitleBar__WEBPACK_IMPORTED_MODULE_4__, _components_lib_SubTitleBar__WEBPACK_IMPORTED_MODULE_5__, _store_displayStore__WEBPACK_IMPORTED_MODULE_6__, _store_deviceStore__WEBPACK_IMPORTED_MODULE_7__, _utils_asset__WEBPACK_IMPORTED_MODULE_9__, _components_AudioProvider__WEBPACK_IMPORTED_MODULE_10__]);\n([_components_lib_StatusBar__WEBPACK_IMPORTED_MODULE_3__, _components_lib_TitleBar__WEBPACK_IMPORTED_MODULE_4__, _components_lib_SubTitleBar__WEBPACK_IMPORTED_MODULE_5__, _store_displayStore__WEBPACK_IMPORTED_MODULE_6__, _store_deviceStore__WEBPACK_IMPORTED_MODULE_7__, _utils_asset__WEBPACK_IMPORTED_MODULE_9__, _components_AudioProvider__WEBPACK_IMPORTED_MODULE_10__] = __webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__);\n\n\n\n\n\n\n\n\n\n\n\nfunction Tools() {\n const { view } = _store_displayStore__WEBPACK_IMPORTED_MODULE_6__[\"default\"].getState().navigation.current;\n const { navigateTo, updateCurrentView, getCurrentProject, updataRef, setToastMessage } = (0,_store_displayStore__WEBPACK_IMPORTED_MODULE_6__[\"default\"])();\n const currentProject = getCurrentProject();\n const currentConfig = currentProject?.testConfigs[_store_displayStore__WEBPACK_IMPORTED_MODULE_6__[\"default\"].getState().selectedIndexes.testConfigIndex];\n const faultScenario = _store_deviceStore__WEBPACK_IMPORTED_MODULE_7__[\"default\"].getState().faultScenarios;\n // 获取连接状态\n const { connectionStatus, setTotalToastMessage } = (0,_store_deviceStore__WEBPACK_IMPORTED_MODULE_7__[\"default\"])();\n const mainPortStart = connectionStatus?.mainPaths?.[Object.keys(connectionStatus.mainPaths)[0]]?.start;\n const mainPortEnd = connectionStatus?.mainPaths?.[Object.keys(connectionStatus.mainPaths)[0]]?.end;\n const mainpath = connectionStatus?.mainPaths?.[Object.keys(connectionStatus.mainPaths)[0]]?.path;\n const mainVFLEnd = connectionStatus?.mainPaths?.['main-vfl']?.end || null;\n const [connectionMap, setConnectionMap] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)({});\n const connectionMapRef = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)(null); // 添加ref用于缓存connectionMap\n const cableType = currentConfig.params.cableType;\n const isMultiMode = cableType.includes('OM');\n const { play } = (0,_components_AudioProvider__WEBPACK_IMPORTED_MODULE_10__.useAudio)();\n // VFL状态\n const [vflStatus, setVflStatus] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n // 获取连接配置\n const fetchConnectionMap = async ()=>{\n try {\n // 如果已经有缓存的connectionMap,直接返回\n if (connectionMapRef.current) {\n setConnectionMap(connectionMapRef.current);\n return;\n }\n const apiUrl = _config_api__WEBPACK_IMPORTED_MODULE_8__.API_URLS.CONNECTION.MAP_WITH_SCENE(faultScenario);\n const response = await fetch(apiUrl);\n if (!response.ok) {\n throw new Error('获取连接配置失败');\n }\n const data = await response.json();\n connectionMapRef.current = data || {}; // 缓存connectionMap\n setConnectionMap(data || {});\n } catch (error) {\n console.error('获取连接配置错误:', error);\n setConnectionMap({});\n }\n };\n // --------------------------------------VFL--------------------------------------\n // VFL功能函数\n const handleVfl = ()=>{\n fetchConnectionMap();\n if (!mainVFLEnd) return;\n console.log(connectionStatus?.mainPaths?.['main-vfl']);\n // 在connectionMap中查找与mainVFLEnd匹配的连接\n let connectedPort = null;\n let targetPortId = null;\n // 首先检查mainVFLEnd是否作为key存在\n if (connectionMap[mainVFLEnd]) {\n connectedPort = mainVFLEnd;\n targetPortId = connectionMap[mainVFLEnd].connectedTo;\n } else {\n // 如果不是key,则查找哪个key的connectedTo等于mainVFLEnd\n const foundKey = Object.keys(connectionMap).find((key)=>{\n return connectionMap[key].connectedTo === mainVFLEnd;\n });\n if (foundKey) {\n connectedPort = mainVFLEnd;\n targetPortId = foundKey;\n }\n }\n if (connectedPort && targetPortId) {\n // 如果targetPortId包含-portx(x为数字),则移除这部分\n if (targetPortId && /-port\\d+$/.test(targetPortId)) {\n targetPortId = targetPortId.replace(/-port\\d+$/, '');\n }\n const targetElement = document.getElementById(targetPortId);\n if (targetElement) {\n // 检查目标元素是否已连接\n if (targetElement.classList.contains('jtk-connected')) {\n return;\n }\n // 获取目标元素的位置信息\n const rect = targetElement.getBoundingClientRect();\n // 创建闪烁的红点\n const redDot = document.createElement('div');\n redDot.style.cssText = `\n position: absolute;\n width: 20px;\n height: 20px;\n background-color: red;\n border-radius: 50%;\n top: ${rect.top + rect.height / 2}px;\n left: ${rect.left + rect.width / 2}px;\n transform: translate(-50%, -50%);\n animation: blink 1s infinite;\n z-index: 9999;\n `;\n // 添加闪烁动画样式\n const style = document.createElement('style');\n style.textContent = `\n @keyframes blink {\n 0% { opacity: 1; }\n 50% { opacity: 0; }\n 100% { opacity: 1; }\n }\n `;\n document.head.appendChild(style);\n document.body.appendChild(redDot);\n // 在VFL状态关闭时移除红点\n return ()=>{\n document.body.removeChild(redDot);\n document.head.removeChild(style);\n };\n }\n }\n };\n // VFL状态切换函数\n const SetvflStatus = ()=>{\n setVflStatus(!vflStatus);\n };\n // 使用useRef来存储当前的connectedPort\n const currentConnectedPortRef = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)(null);\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)({\n \"Tools.useEffect\": ()=>{\n let cleanup;\n if (vflStatus) {\n // 获取当前的connectedPort,使用双向查找逻辑\n let connectedPort = null;\n if (connectionMap[mainVFLEnd]) {\n connectedPort = mainVFLEnd;\n } else {\n connectedPort = Object.keys(connectionMap).find({\n \"Tools.useEffect\": (key)=>{\n return connectionMap[key].connectedTo === mainVFLEnd;\n }\n }[\"Tools.useEffect\"]);\n }\n // 如果connectedPort发生变化,重新执行handleVfl\n if (connectedPort !== currentConnectedPortRef.current) {\n if (cleanup) {\n cleanup();\n }\n currentConnectedPortRef.current = connectedPort;\n cleanup = handleVfl();\n } else if (!cleanup) {\n // 如果没有cleanup,说明还没有执行过handleVfl\n cleanup = handleVfl();\n }\n }\n return ({\n \"Tools.useEffect\": ()=>{\n if (cleanup) {\n cleanup();\n }\n }\n })[\"Tools.useEffect\"];\n }\n }[\"Tools.useEffect\"], [\n vflStatus,\n mainVFLEnd,\n connectionMap\n ]);\n // 监听视图变化,当离开vfl视图时重置vflStatus\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)({\n \"Tools.useEffect\": ()=>{\n if (view !== 'vfl' && vflStatus) {\n setVflStatus(false);\n }\n }\n }[\"Tools.useEffect\"], [\n view\n ]);\n //---------------------------------------------------------------------------------\n // 铜缆基准判断函数 对应ref-copper页脚按钮\n const RefCopperButtonClick = ()=>{\n if (mainPortStart === 'main-permanent') {\n if (mainPortEnd === 'remote-channel') {\n updateCurrentView('ref-copper-setting');\n } else {\n setToastMessage('基准设置错误,请检查连接状态'); // 可以用自定义的提示方式替代alert\n }\n } else {\n setToastMessage('适配器不兼容,导致基准设置失败'); // 同样,可以用自定义的提示方式替代alert\n }\n };\n //铜缆基准设置状态更新函数\n const ReFCopperUpdata = ()=>{\n updataRef('copper', {\n status: true\n });\n };\n // cfp基准判断函数 对应cfp页脚按钮\n const RefCfpButtonClick = ()=>{\n const mainPaths = connectionStatus.mainPaths || {};\n const remotePaths = connectionStatus.remotePaths || {};\n // 检查端口是否存在\n const mainOutExists = isMultiMode ? mainPaths['main-cfp-mm-out'] || mainPaths['main-cfp-sm-out'] : mainPaths['main-cfp-sm-out'];\n const mainInExists = mainPaths['main-cfp-in'];\n const remoteOutExists = isMultiMode ? remotePaths['remote-cfp-mm-out'] || remotePaths['remote-cfp-sm-out'] : remotePaths['remote-cfp-sm-out'];\n const remoteInExists = remotePaths['remote-cfp-in'];\n // 获取端点连接\n const mainOutEnd = isMultiMode ? mainPaths['main-cfp-mm-out']?.end || mainPaths['main-cfp-sm-out']?.end : mainPaths['main-cfp-sm-out']?.end;\n const mainInEnd = mainPaths['main-cfp-in']?.end;\n const remoteOutEnd = isMultiMode ? remotePaths['remote-cfp-mm-out']?.end || remotePaths['remote-cfp-sm-out']?.end : remotePaths['remote-cfp-sm-out']?.end;\n const remoteInEnd = remotePaths['remote-cfp-in']?.end;\n // 检查所有端口是否存在\n if (!mainOutExists || !mainInExists || !remoteOutExists || !remoteInExists) {\n setToastMessage('请检查端口连接');\n return;\n }\n // 检查是否有未连接的端口\n if (!mainOutEnd || !mainInEnd || !remoteOutEnd || !remoteInEnd) {\n setToastMessage('请检查端口连接');\n return;\n }\n // 验证端口连接是否正确\n const isConnectionCorrect = mainOutEnd === 'remote-cfp-in' && mainInEnd === (isMultiMode ? 'remote-cfp-mm-out' : 'remote-cfp-sm-out') && remoteOutEnd === 'main-cfp-in' && remoteInEnd === (isMultiMode ? 'main-cfp-mm-out' : 'main-cfp-sm-out');\n if (isConnectionCorrect) {\n updateCurrentView('ref-cfp-setting');\n } else {\n setTotalToastMessage('请使用跳线设置基准');\n }\n };\n const [showRetryButtons, setShowRetryButtons] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n const RefCfpRefButtonClick = ()=>{\n const mainPaths = connectionStatus.mainPaths || {};\n const remotePaths = connectionStatus.remotePaths || {};\n // 检查端口是否存在\n const mainOutExists = isMultiMode ? mainPaths['main-cfp-mm-out'] || mainPaths['main-cfp-sm-out'] : mainPaths['main-cfp-sm-out'];\n const mainInExists = mainPaths['main-cfp-in'];\n const remoteOutExists = isMultiMode ? remotePaths['remote-cfp-mm-out'] || remotePaths['remote-cfp-sm-out'] : remotePaths['remote-cfp-sm-out'];\n const remoteInExists = remotePaths['remote-cfp-in'];\n // 获取端点连接\n const mainOutEnd = isMultiMode ? mainPaths['main-cfp-mm-out']?.end || mainPaths['main-cfp-sm-out']?.end : mainPaths['main-cfp-sm-out']?.end;\n const mainInEnd = mainPaths['main-cfp-in']?.end;\n const remoteOutEnd = isMultiMode ? remotePaths['remote-cfp-mm-out']?.end || remotePaths['remote-cfp-sm-out']?.end : remotePaths['remote-cfp-sm-out']?.end;\n const remoteInEnd = remotePaths['remote-cfp-in']?.end;\n // 检查所有端口是否存在\n if (!mainOutExists || !mainInExists || !remoteOutExists || !remoteInExists) {\n setToastMessage('请检查端口连接');\n return;\n }\n // 检查是否有未连接的端口\n if (!mainOutEnd || !mainInEnd || !remoteOutEnd || !remoteInEnd) {\n setToastMessage('请检查端口连接');\n return;\n }\n // 检查端口连接是否正确\n const isConnectionCorrect = mainOutEnd === 'remote-cfp-in' && mainInEnd === (isMultiMode ? 'remote-cfp-mm-out' : 'remote-cfp-sm-out') && remoteOutEnd === 'main-cfp-in' && remoteInEnd === (isMultiMode ? 'main-cfp-mm-out' : 'main-cfp-sm-out');\n if (!isConnectionCorrect) {\n setToastMessage('请检查端口连接');\n return;\n }\n // 检查TRC长度\n const mainTrcCount = mainPaths['main-cfp-in']?.path?.filter((p)=>isMultiMode ? p.includes('mm-lc-lc') : p.includes('sm-lc-lc'))?.length || 0;\n const remoteTrcCount = remotePaths['remote-cfp-in']?.path?.filter((p)=>isMultiMode ? p.includes('mm-lc-lc') : p.includes('sm-lc-lc'))?.length || 0;\n if (mainTrcCount < 4 || remoteTrcCount < 4) {\n updateCurrentView('ref-cfp-settrc-no50');\n setShowRetryButtons(true);\n return;\n }\n if (isConnectionCorrect) {\n updateCurrentView('ref-cfp-settrc');\n } else {\n setToastMessage('请检查端口连接');\n }\n };\n //CFP基准设置状态更新函数\n const ReFCFPUpdata = ()=>{\n updataRef('cfp', {\n status: true\n });\n updataRef('cfp', {\n connectStatus: true\n });\n };\n //OFP基准设置状态更新函数\n const ReFOFPUpdata = ()=>{\n const statusValue = ofpBackground === 'ref-ofp.png' ? 'start' : 'end';\n updataRef('ofp', {\n status: statusValue\n });\n updataRef('ofp', {\n connectStatus: true\n });\n };\n // OFP补偿检测函数\n const handleRefOFPTest = ()=>{\n // 获取当前选择的光纤类型\n const cableType = currentConfig?.params?.cableType;\n // 获取当前选择的补偿方式(仅前导 or 前导+末尾)\n const isLeadOnly = ofpBackground === 'ref-ofp.png';\n // 判断是否为多模光纤\n const isMultiMode = cableType.includes('OM');\n // 检查mainpath的第一个接口是否匹配当前光纤类型\n const firstPort = mainpath?.[0];\n if (!firstPort || isMultiMode && !firstPort.includes('mm-out') || !isMultiMode && !firstPort.includes('sm-out')) {\n setToastMessage('未检测到前导光纤');\n return;\n }\n // 检查补偿光纤类型是否匹配\n const hasInvalidFiber = mainpath?.some((path)=>{\n if (path.includes('mmc-') || path.includes('smc-')) {\n return isMultiMode && path.includes('smc-') || !isMultiMode && path.includes('mmc-');\n }\n return false;\n });\n if (hasInvalidFiber) {\n setTotalToastMessage(isMultiMode ? '请使用多模补偿光纤' : '请使用单模补偿光纤');\n return;\n }\n // 检查路径长度和组成\n if (isLeadOnly) {\n // 仅前导模式:应该只有主机out端口和一个补偿光纤\n if (mainpath?.length !== 2 || !mainpath[1].includes(isMultiMode ? 'mmc-' : 'smc-')) {\n setTotalToastMessage('请确保正确连接前导光纤');\n return;\n }\n } else {\n // 前导+末尾模式:应该有主机out端口、两个补偿光纤和一个连接器\n if (mainpath?.length !== 6 || !mainpath[1].includes(isMultiMode ? 'mmc-' : 'smc-') || !mainpath[5].includes(isMultiMode ? 'mmc-' : 'smc-')) {\n setTotalToastMessage('请确保正确连接前导光纤');\n return;\n }\n }\n // 所有检查通过,更新视图\n updateCurrentView('ref-ofp-setting');\n };\n // 处理定时器效果\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)({\n \"Tools.useEffect\": ()=>{\n if (view === 'ref-copper-setting') {\n const timer = setTimeout({\n \"Tools.useEffect.timer\": ()=>{\n play('pass');\n updateCurrentView('ref-copper-ok');\n ReFCopperUpdata(); //更新状态\n }\n }[\"Tools.useEffect.timer\"], 3000);\n return ({\n \"Tools.useEffect\": ()=>clearTimeout(timer)\n })[\"Tools.useEffect\"];\n }\n if (view === 'ref-cfp-setting') {\n const timer = setTimeout({\n \"Tools.useEffect.timer\": ()=>{\n updateCurrentView('ref-cfp4');\n }\n }[\"Tools.useEffect.timer\"], 3000);\n return ({\n \"Tools.useEffect\": ()=>clearTimeout(timer)\n })[\"Tools.useEffect\"];\n }\n if (view === 'ref-cfp-settrc') {\n const timer = setTimeout({\n \"Tools.useEffect.timer\": ()=>{\n updateCurrentView('ref-cfp-trc');\n ReFCFPUpdata();\n }\n }[\"Tools.useEffect.timer\"], 3000);\n return ({\n \"Tools.useEffect\": ()=>clearTimeout(timer)\n })[\"Tools.useEffect\"];\n }\n if (view === 'ref-cfp-settrc-no50') {\n const timer = setTimeout({\n \"Tools.useEffect.timer\": ()=>{\n updateCurrentView('ref-cfp-trc');\n setToastMessage('TRC长度不足50cm,请重新测试');\n }\n }[\"Tools.useEffect.timer\"], 3000);\n return ({\n \"Tools.useEffect\": ()=>clearTimeout(timer)\n })[\"Tools.useEffect\"];\n }\n // 重置showRetryButtons状态\n if (view !== 'ref-cfp-settrc-no50' && view !== 'ref-cfp-trc') {\n setShowRetryButtons(false);\n }\n if (view === 'ref-ofp-setting') {\n const timer = setTimeout({\n \"Tools.useEffect.timer\": ()=>{\n updateCurrentView('ref-ofp-ok');\n ReFOFPUpdata();\n }\n }[\"Tools.useEffect.timer\"], 10000);\n return ({\n \"Tools.useEffect\": ()=>clearTimeout(timer)\n })[\"Tools.useEffect\"];\n }\n }\n }[\"Tools.useEffect\"], [\n view\n ]);\n const [ofpBackground, setOfpBackground] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)('ref-ofp.png');\n // 监听view变化,当进入ref-ofp视图时重置背景图片\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)({\n \"Tools.useEffect\": ()=>{\n if (view === 'ref-ofp') {\n setOfpBackground('ref-ofp.png');\n }\n }\n }[\"Tools.useEffect\"], [\n view\n ]);\n // 处理单选框切换事件\n const handleCompensationChange = (value)=>{\n setOfpBackground(value === 'lead' ? 'ref-ofp.png' : 'ref-ofp-end.png');\n };\n const renderContent = ()=>{\n switch(view){\n case 'main':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 bg-[#D5DFEB] p-4\",\n children: [\n currentConfig?.moduleType === '8000' && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n className: \"w-full h-[50px] bg-[#F8F6F7] rounded-sm p-4 shadow-lg flex justify-between items-center\",\n onClick: ()=>updateCurrentView('ref-copper'),\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black text-lg\",\n children: \"设置基准\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Tools.js\",\n lineNumber: 459,\n columnNumber: 33\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-3 h-3 relative\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: (0,_utils_asset__WEBPACK_IMPORTED_MODULE_9__.getAssetUrl)('/arrow.png'),\n alt: \"箭头\",\n fill: true,\n className: \"object-contain\",\n sizes: \"100vw\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Tools.js\",\n lineNumber: 461,\n columnNumber: 37\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Tools.js\",\n lineNumber: 460,\n columnNumber: 33\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Tools.js\",\n lineNumber: 455,\n columnNumber: 29\n }, this),\n currentConfig?.moduleType === 'cfp' && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n className: \"w-full h-[50px] bg-[#F8F6F7] rounded-sm p-4 shadow-lg flex justify-between items-center\",\n onClick: ()=>updateCurrentView('ref-cfp'),\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black text-lg\",\n children: \"设置参照\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Tools.js\",\n lineNumber: 477,\n columnNumber: 33\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-3 h-3 relative\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: (0,_utils_asset__WEBPACK_IMPORTED_MODULE_9__.getAssetUrl)('/arrow.png'),\n alt: \"箭头\",\n fill: true,\n className: \"object-contain\",\n sizes: \"100vw\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Tools.js\",\n lineNumber: 479,\n columnNumber: 37\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Tools.js\",\n lineNumber: 478,\n columnNumber: 33\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Tools.js\",\n lineNumber: 473,\n columnNumber: 29\n }, this),\n currentConfig?.moduleType === 'ofp' && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n className: \"w-full h-[50px] bg-[#F8F6F7] rounded-sm p-4 shadow-lg flex justify-between items-center\",\n onClick: ()=>updateCurrentView('ref-ofp'),\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black text-lg\",\n children: \"设置补偿\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Tools.js\",\n lineNumber: 494,\n columnNumber: 33\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-3 h-3 relative\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: (0,_utils_asset__WEBPACK_IMPORTED_MODULE_9__.getAssetUrl)('/arrow.png'),\n alt: \"箭头\",\n fill: true,\n className: \"object-contain\",\n sizes: \"100vw\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Tools.js\",\n lineNumber: 496,\n columnNumber: 37\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Tools.js\",\n lineNumber: 495,\n columnNumber: 33\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Tools.js\",\n lineNumber: 490,\n columnNumber: 29\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n className: \"w-full h-[50px] bg-[#F8F6F7] rounded-sm p-4 shadow-lg flex justify-between items-center mt-4\",\n onClick: ()=>updateCurrentView('tone'),\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black text-lg\",\n children: \"音频发生器\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Tools.js\",\n lineNumber: 510,\n columnNumber: 29\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-3 h-3 relative\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: (0,_utils_asset__WEBPACK_IMPORTED_MODULE_9__.getAssetUrl)('/arrow.png'),\n alt: \"箭头\",\n fill: true,\n className: \"object-contain\",\n sizes: \"100vw\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Tools.js\",\n lineNumber: 512,\n columnNumber: 33\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Tools.js\",\n lineNumber: 511,\n columnNumber: 29\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Tools.js\",\n lineNumber: 506,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n className: \"w-full h-[50px] bg-[#F8F6F7] rounded-sm p-4 shadow-lg flex justify-between items-center mt-4\",\n onClick: ()=>updateCurrentView('vfl'),\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black text-lg\",\n children: \"可视故障定位\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Tools.js\",\n lineNumber: 525,\n columnNumber: 29\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-3 h-3 relative\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: (0,_utils_asset__WEBPACK_IMPORTED_MODULE_9__.getAssetUrl)('/arrow.png'),\n alt: \"箭头\",\n fill: true,\n className: \"object-contain\",\n sizes: \"100vw\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Tools.js\",\n lineNumber: 527,\n columnNumber: 33\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Tools.js\",\n lineNumber: 526,\n columnNumber: 29\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Tools.js\",\n lineNumber: 521,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Tools.js\",\n lineNumber: 453,\n columnNumber: 21\n }, this);\n case 'ref-copper':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 bg-[#D5DFEB] flex flex-col\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 relative\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: (0,_utils_asset__WEBPACK_IMPORTED_MODULE_9__.getAssetUrl)('/ref-copper.png'),\n alt: \"铜缆参照设置\",\n fill: true,\n className: \"object-contain\",\n sizes: \"100vw\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Tools.js\",\n lineNumber: 543,\n columnNumber: 29\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Tools.js\",\n lineNumber: 542,\n columnNumber: 25\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Tools.js\",\n lineNumber: 541,\n columnNumber: 21\n }, this);\n case 'ref-copper-setting':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 bg-[#D5DFEB] flex flex-col\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 relative\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: (0,_utils_asset__WEBPACK_IMPORTED_MODULE_9__.getAssetUrl)('/testing.gif'),\n alt: \"测试中\",\n fill: true,\n className: \"object-contain\",\n sizes: \"100vw\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Tools.js\",\n lineNumber: 558,\n columnNumber: 29\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Tools.js\",\n lineNumber: 557,\n columnNumber: 25\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Tools.js\",\n lineNumber: 556,\n columnNumber: 21\n }, this);\n case 'ref-copper-ok':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 bg-[#D5DFEB] flex flex-col\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 relative\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: (0,_utils_asset__WEBPACK_IMPORTED_MODULE_9__.getAssetUrl)('/ref-copper-ok.png'),\n alt: \"铜缆参照设置完成\",\n fill: true,\n className: \"object-contain\",\n sizes: \"100vw\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Tools.js\",\n lineNumber: 573,\n columnNumber: 29\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Tools.js\",\n lineNumber: 572,\n columnNumber: 25\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Tools.js\",\n lineNumber: 571,\n columnNumber: 21\n }, this);\n case 'ref-cfp':\n case 'ref-cfp2':\n case 'ref-cfp3':\n case 'ref-cfp4':\n case 'ref-cfp5':\n case 'ref-cfp6':\n case 'ref-cfp7':\n case 'ref-cfp8':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 bg-[#D5DFEB] flex flex-col\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 relative\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: (0,_utils_asset__WEBPACK_IMPORTED_MODULE_9__.getAssetUrl)(`/ref-cfp${view === 'ref-cfp' ? '1' : view.slice(-1)}${isMultiMode ? '-mm' : '-sm'}.png`),\n alt: \"光纤参照设置\",\n fill: true,\n className: \"object-contain\",\n sizes: \"100vw\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Tools.js\",\n lineNumber: 595,\n columnNumber: 29\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Tools.js\",\n lineNumber: 594,\n columnNumber: 25\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Tools.js\",\n lineNumber: 593,\n columnNumber: 21\n }, this);\n case 'ref-cfp-setting':\n case 'ref-cfp-settrc':\n case 'ref-cfp-settrc-no50':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 bg-[#D5DFEB] flex flex-col\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 relative\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: (0,_utils_asset__WEBPACK_IMPORTED_MODULE_9__.getAssetUrl)('/testing.gif'),\n alt: \"测试中\",\n fill: true,\n className: \"object-contain\",\n sizes: \"100vw\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Tools.js\",\n lineNumber: 612,\n columnNumber: 29\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Tools.js\",\n lineNumber: 611,\n columnNumber: 25\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Tools.js\",\n lineNumber: 610,\n columnNumber: 21\n }, this);\n case 'ref-cfp-trc':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 bg-[#D5DFEB] flex flex-col\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 relative\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: (0,_utils_asset__WEBPACK_IMPORTED_MODULE_9__.getAssetUrl)(`/ref-cfp-trc${isMultiMode ? '-mm' : '-sm'}.png`),\n alt: `TRC验证 - ${isMultiMode ? '多模' : '单模'}`,\n fill: true,\n className: \"object-contain\",\n sizes: \"100vw\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Tools.js\",\n lineNumber: 627,\n columnNumber: 29\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Tools.js\",\n lineNumber: 626,\n columnNumber: 25\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Tools.js\",\n lineNumber: 625,\n columnNumber: 21\n }, this);\n case 'ref-cfp-ok':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 bg-[#D5DFEB] flex flex-col\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 relative\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: (0,_utils_asset__WEBPACK_IMPORTED_MODULE_9__.getAssetUrl)(`/ref-cfp-ok${isMultiMode ? '-mm' : '-sm'}.png`),\n alt: `光纤参照设置完成 - ${isMultiMode ? '多模' : '单模'}`,\n fill: true,\n className: \"object-contain\",\n sizes: \"100vw\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Tools.js\",\n lineNumber: 642,\n columnNumber: 29\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Tools.js\",\n lineNumber: 641,\n columnNumber: 25\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Tools.js\",\n lineNumber: 640,\n columnNumber: 21\n }, this);\n case 'ref-ofp':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 bg-[#D5DFEB] flex flex-col relative\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute inset-0\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: (0,_utils_asset__WEBPACK_IMPORTED_MODULE_9__.getAssetUrl)(`/${ofpBackground}`),\n alt: \"OTDR参照设置\",\n fill: true,\n className: \"object-contain\",\n sizes: \"100vw\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Tools.js\",\n lineNumber: 657,\n columnNumber: 29\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Tools.js\",\n lineNumber: 656,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"relative flex items-end justify-end px-20\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"relative flex flex-col items-start space-y-20\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-col space-y-4 mb-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"label\", {\n className: \"text-white text-xl flex items-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"radio\",\n name: \"compensation\",\n value: \"lead\",\n defaultChecked: true,\n onChange: (e)=>handleCompensationChange(e.target.value),\n className: \"mr-3 w-5 h-5\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Tools.js\",\n lineNumber: 669,\n columnNumber: 37\n }, this),\n \"仅前导\"\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Tools.js\",\n lineNumber: 668,\n columnNumber: 33\n }, this),\n faultScenario !== 'DataCenter' && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"label\", {\n className: \"text-white text-xl flex items-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"radio\",\n name: \"compensation\",\n value: \"both\",\n onChange: (e)=>handleCompensationChange(e.target.value),\n className: \"mr-3 w-5 h-5\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Tools.js\",\n lineNumber: 681,\n columnNumber: 41\n }, this),\n \"前导+末尾\"\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Tools.js\",\n lineNumber: 680,\n columnNumber: 37\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Tools.js\",\n lineNumber: 667,\n columnNumber: 29\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-white text-m mb-4\",\n children: [\n \"光纤类型:\",\n currentConfig?.params?.cableType\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Tools.js\",\n lineNumber: 692,\n columnNumber: 29\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Tools.js\",\n lineNumber: 666,\n columnNumber: 25\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Tools.js\",\n lineNumber: 665,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Tools.js\",\n lineNumber: 655,\n columnNumber: 21\n }, this);\n case 'ref-ofp-setting':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 bg-[#D5DFEB] flex flex-col\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 relative\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: (0,_utils_asset__WEBPACK_IMPORTED_MODULE_9__.getAssetUrl)('/refeset-testing.gif'),\n alt: \"OTDR测试中\",\n fill: true,\n className: \"object-contain\",\n sizes: \"100vw\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Tools.js\",\n lineNumber: 704,\n columnNumber: 29\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Tools.js\",\n lineNumber: 703,\n columnNumber: 25\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Tools.js\",\n lineNumber: 702,\n columnNumber: 21\n }, this);\n case 'ref-ofp-ok':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 bg-[#D5DFEB] flex flex-col\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 relative\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: (0,_utils_asset__WEBPACK_IMPORTED_MODULE_9__.getAssetUrl)(ofpBackground === 'ref-ofp.png' ? '/ref-ofp-ok.png' : '/ref-ofp-ok-end.png'),\n alt: \"OTDR参照设置\",\n fill: true,\n className: \"object-contain\",\n sizes: \"100vw\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Tools.js\",\n lineNumber: 719,\n columnNumber: 29\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_SubTitleBar__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n title: ofpBackground === 'ref-ofp.png' ? '选择前导事件' : '选择前导和末尾事件'\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Tools.js\",\n lineNumber: 726,\n columnNumber: 29\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Tools.js\",\n lineNumber: 718,\n columnNumber: 25\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Tools.js\",\n lineNumber: 717,\n columnNumber: 21\n }, this);\n case 'tone':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 bg-[#D5DFEB] flex flex-col\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 relative\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: (0,_utils_asset__WEBPACK_IMPORTED_MODULE_9__.getAssetUrl)('/tone.gif'),\n alt: \"音频发生器\",\n fill: true,\n className: \"object-contain\",\n sizes: \"100vw\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Tools.js\",\n lineNumber: 735,\n columnNumber: 29\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Tools.js\",\n lineNumber: 734,\n columnNumber: 25\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Tools.js\",\n lineNumber: 733,\n columnNumber: 21\n }, this);\n case 'vfl':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 bg-[#D5DFEB] flex flex-col\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 relative\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: (0,_utils_asset__WEBPACK_IMPORTED_MODULE_9__.getAssetUrl)(vflStatus ? '/vfl-on.png' : '/vfl-off.png'),\n alt: \"可视故障定位\",\n fill: true,\n className: \"object-contain\",\n sizes: \"100vw\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Tools.js\",\n lineNumber: 749,\n columnNumber: 29\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Tools.js\",\n lineNumber: 748,\n columnNumber: 25\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Tools.js\",\n lineNumber: 747,\n columnNumber: 21\n }, this);\n default:\n return null;\n }\n };\n const renderFooter = ()=>{\n switch(view){\n case 'ref-copper':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[60px] bg-[#132843] flex items-center justify-end px-4\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: RefCopperButtonClick,\n className: \"w-[100px] h-[40px] bg-gradient-to-b from-[#b6dae7] to-[#65dfff] rounded-sm flex items-center justify-center text-black font-bold shadow-lg\",\n children: \"测试\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Tools.js\",\n lineNumber: 770,\n columnNumber: 25\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Tools.js\",\n lineNumber: 769,\n columnNumber: 21\n }, this);\n case 'ref-cfp-setting':\n case 'ref-cfp-settrc':\n case 'ref-cfp-settrc-no50':\n case 'ref-copper-setting':\n case 'ref-ofp-setting':\n case 'tone':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[60px] bg-[#132843] flex items-center justify-end px-4\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Tools.js\",\n lineNumber: 786,\n columnNumber: 21\n }, this);\n case 'vfl':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[60px] bg-[#132843] flex items-center justify-end px-4\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: SetvflStatus,\n className: \"w-[100px] h-[40px] bg-gradient-to-b from-[#b6dae7] to-[#65dfff] rounded-sm flex items-center justify-center text-black font-bold shadow-lg\",\n children: \"开/关\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Tools.js\",\n lineNumber: 793,\n columnNumber: 21\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Tools.js\",\n lineNumber: 792,\n columnNumber: 21\n }, this);\n case 'ref-copper-ok':\n case 'ref-cfp-ok':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[60px] bg-[#132843] flex items-center justify-end px-4\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>navigateTo('home', 'main'),\n className: \"w-[100px] h-[40px] bg-gradient-to-b from-[#b6dae7] to-[#65dfff] rounded-sm flex items-center justify-center text-black font-bold shadow-lg\",\n children: \"主页\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Tools.js\",\n lineNumber: 806,\n columnNumber: 25\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Tools.js\",\n lineNumber: 805,\n columnNumber: 21\n }, this);\n case 'ref-cfp':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[60px] bg-[#132843] flex items-center justify-end px-4\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>updateCurrentView('ref-cfp2'),\n className: \"w-[100px] h-[40px] bg-gradient-to-b from-[#b6dae7] to-[#65dfff] rounded-sm flex items-center justify-center text-black font-bold shadow-lg\",\n children: \"下一个\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Tools.js\",\n lineNumber: 818,\n columnNumber: 25\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Tools.js\",\n lineNumber: 817,\n columnNumber: 21\n }, this);\n case 'ref-cfp2':\n case 'ref-cfp4':\n case 'ref-cfp5':\n case 'ref-cfp6':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[60px] bg-[#132843] flex items-center justify-end px-4\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>updateCurrentView(`ref-cfp${parseInt(view.slice(-1)) + 1}`),\n className: \"w-[100px] h-[40px] bg-gradient-to-b from-[#b6dae7] to-[#65dfff] rounded-sm flex items-center justify-center text-black font-bold shadow-lg\",\n children: \"下一个\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Tools.js\",\n lineNumber: 832,\n columnNumber: 25\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Tools.js\",\n lineNumber: 831,\n columnNumber: 21\n }, this);\n case 'ref-cfp-trc':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[60px] bg-[#132843] flex items-center justify-between px-4\",\n children: [\n showRetryButtons ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>{\n RefCfpRefButtonClick();\n },\n className: \"w-[100px] h-[40px] bg-gradient-to-b from-[#b6dae7] to-[#65dfff] rounded-sm flex items-center justify-center text-black font-bold shadow-lg\",\n children: \"重新验证\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Tools.js\",\n lineNumber: 846,\n columnNumber: 33\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>{\n updateCurrentView('ref-cfp');\n },\n className: \"w-[100px] h-[40px] rounded-sm flex items-center justify-center text-white font-bold shadow-lg\",\n children: \"重新开始\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Tools.js\",\n lineNumber: 854,\n columnNumber: 33\n }, this)\n ]\n }, void 0, true) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Tools.js\",\n lineNumber: 864,\n columnNumber: 29\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>{\n updateCurrentView('ref-cfp8');\n },\n className: \"w-[100px] h-[40px] rounded-sm flex items-center justify-center text-white font-bold shadow-lg\",\n children: \"下一个\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Tools.js\",\n lineNumber: 866,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Tools.js\",\n lineNumber: 843,\n columnNumber: 21\n }, this);\n case 'ref-cfp3':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[60px] bg-[#132843] flex items-center justify-end px-4\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: RefCfpButtonClick,\n className: \"w-[100px] h-[40px] bg-gradient-to-b from-[#b6dae7] to-[#65dfff] rounded-sm flex items-center justify-center text-black font-bold shadow-lg\",\n children: \"设置参照\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Tools.js\",\n lineNumber: 880,\n columnNumber: 25\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Tools.js\",\n lineNumber: 879,\n columnNumber: 21\n }, this);\n case 'ref-cfp7':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[60px] bg-[#132843] flex items-center justify-end px-4\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: RefCfpRefButtonClick,\n className: \"w-[100px] h-[40px] bg-gradient-to-b from-[#b6dae7] to-[#65dfff] rounded-sm flex items-center justify-center text-black font-bold shadow-lg\",\n children: \"TRC验证\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Tools.js\",\n lineNumber: 892,\n columnNumber: 25\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Tools.js\",\n lineNumber: 891,\n columnNumber: 21\n }, this);\n case 'ref-cfp8':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[60px] bg-[#132843] flex items-center justify-end px-4\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>updateCurrentView('ref-cfp-ok'),\n className: \"w-[100px] h-[40px] bg-gradient-to-b from-[#b6dae7] to-[#65dfff] rounded-sm flex items-center justify-center text-black font-bold shadow-lg\",\n children: \"下一个\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Tools.js\",\n lineNumber: 904,\n columnNumber: 25\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Tools.js\",\n lineNumber: 903,\n columnNumber: 21\n }, this);\n case 'ref-ofp':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[60px] bg-[#132843] flex items-center justify-end px-4\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: handleRefOFPTest,\n className: \"w-[100px] h-[40px] bg-gradient-to-b from-[#b6dae7] to-[#65dfff] rounded-sm flex items-center justify-center text-black font-bold shadow-lg\",\n children: \"测试\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Tools.js\",\n lineNumber: 918,\n columnNumber: 25\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Tools.js\",\n lineNumber: 917,\n columnNumber: 21\n }, this);\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[60px] bg-[#132843] flex items-center justify-end px-4\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>updateCurrentView('ref-ofp-setting'),\n className: \"w-[100px] h-[40px] bg-gradient-to-b from-[#b6dae7] to-[#65dfff] rounded-sm flex items-center justify-center text-black font-bold shadow-lg\",\n children: \"测试\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Tools.js\",\n lineNumber: 928,\n columnNumber: 25\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Tools.js\",\n lineNumber: 927,\n columnNumber: 21\n }, this);\n case 'ref-ofp-ok':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[60px] bg-[#132843] flex items-center justify-end px-4\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>navigateTo('home', 'main'),\n className: \"w-[100px] h-[40px] bg-gradient-to-b from-[#b6dae7] to-[#65dfff] rounded-sm flex items-center justify-center text-black font-bold shadow-lg\",\n children: \"保存\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Tools.js\",\n lineNumber: 940,\n columnNumber: 25\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Tools.js\",\n lineNumber: 939,\n columnNumber: 21\n }, this);\n default:\n return null;\n }\n };\n const renderTitleBar = ()=>{\n switch(view){\n case 'ref-copper-setting':\n case 'ref-cfp-setting':\n case 'ref-cfp-settrc':\n case 'ref-cfp-settrc-no50':\n case 'ref-ofp-setting':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_TitleBar__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n title: \"进程\",\n backTo: \"tools\",\n view: \"main\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Tools.js\",\n lineNumber: 963,\n columnNumber: 24\n }, this);\n case 'ref-copper-ok':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_TitleBar__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n title: \"设置基准\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Tools.js\",\n lineNumber: 966,\n columnNumber: 24\n }, this);\n case 'ref-cfp-ok':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_TitleBar__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n title: \"设置参照\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Tools.js\",\n lineNumber: 968,\n columnNumber: 24\n }, this);\n case 'ref-copper':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_TitleBar__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n title: \"设置基准\",\n backTo: \"tools\",\n view: \"main\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Tools.js\",\n lineNumber: 971,\n columnNumber: 24\n }, this);\n case 'ref-cfp':\n case 'ref-cfp2':\n case 'ref-cfp3':\n case 'ref-cfp4':\n case 'ref-cfp5':\n case 'ref-cfp6':\n case 'ref-cfp7':\n case 'ref-cfp8':\n case 'ref-cfp-trc':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_TitleBar__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n title: \"设置参照\",\n backTo: \"tools\",\n view: \"main\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Tools.js\",\n lineNumber: 982,\n columnNumber: 24\n }, this);\n case 'ref-ofp':\n case 'ref-ofp-ok':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_TitleBar__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n title: \"设置补偿\",\n backTo: \"tools\",\n view: \"main\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Tools.js\",\n lineNumber: 986,\n columnNumber: 24\n }, this);\n case 'tone':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_TitleBar__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n title: \"音频发生器\",\n backTo: \"tools\",\n view: \"main\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Tools.js\",\n lineNumber: 988,\n columnNumber: 24\n }, this);\n case 'vfl':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_TitleBar__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n title: \"可视故障定位\",\n backTo: \"tools\",\n view: \"main\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Tools.js\",\n lineNumber: 990,\n columnNumber: 24\n }, this);\n default:\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_TitleBar__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n title: \"工具\",\n backTo: \"home\",\n view: \"main\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Tools.js\",\n lineNumber: 993,\n columnNumber: 24\n }, this);\n }\n };\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full h-full flex flex-col overflow-hidden\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_StatusBar__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {}, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Tools.js\",\n lineNumber: 999,\n columnNumber: 13\n }, this),\n renderTitleBar(),\n renderContent(),\n renderFooter()\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/general/Tools.js\",\n lineNumber: 998,\n columnNumber: 9\n }, this);\n}\n\n__webpack_async_result__();\n} catch(e) { __webpack_async_result__(e); } });//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHBhZ2VzLWRpci1ub2RlKS8uL3NyYy9jb21wb25lbnRzL2RzeHBhZ2UvZ2VuZXJhbC9Ub29scy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQW9EO0FBQ3JCO0FBQ3FCO0FBQ0Y7QUFDTTtBQUNMO0FBQ0Y7QUFDVDtBQUNJO0FBQ1U7QUFFdkMsU0FBU1k7SUFDcEIsTUFBTSxFQUFFQyxJQUFJLEVBQUUsR0FBR04sb0VBQXdCLEdBQUdRLFVBQVUsQ0FBQ0MsT0FBTztJQUM5RCxNQUFNLEVBQUVDLFVBQVUsRUFBRUMsaUJBQWlCLEVBQUVDLGlCQUFpQixFQUFDQyxTQUFTLEVBQUNDLGVBQWUsRUFBRSxHQUFHZCwrREFBZUE7SUFDdEcsTUFBTWUsaUJBQWlCSDtJQUN2QixNQUFNSSxnQkFBZ0JELGdCQUFnQkUsV0FBVyxDQUFDakIsb0VBQXdCLEdBQUdrQixlQUFlLENBQUNDLGVBQWUsQ0FBQztJQUM3RyxNQUFNQyxnQkFBZ0JuQixtRUFBdUIsR0FBR29CLGNBQWM7SUFDOUQsU0FBUztJQUNULE1BQU0sRUFBRUMsZ0JBQWdCLEVBQUVDLG9CQUFvQixFQUFFLEdBQUd0Qiw4REFBY0E7SUFDakUsTUFBTXVCLGdCQUFnQkYsa0JBQWtCRyxXQUFXLENBQUNDLE9BQU9DLElBQUksQ0FBQ0wsaUJBQWlCRyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRUc7SUFDakcsTUFBTUMsY0FBY1Asa0JBQWtCRyxXQUFXLENBQUNDLE9BQU9DLElBQUksQ0FBQ0wsaUJBQWlCRyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRUs7SUFDL0YsTUFBTUMsV0FBV1Qsa0JBQWtCRyxXQUFXLENBQUNDLE9BQU9DLElBQUksQ0FBQ0wsaUJBQWlCRyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRU87SUFDNUYsTUFBTUMsYUFBYVgsa0JBQWtCRyxXQUFXLENBQUMsV0FBVyxFQUFFSyxPQUFPO0lBQ3JFLE1BQU0sQ0FBQ0ksZUFBZUMsaUJBQWlCLEdBQUcx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Ozs7WUFFdEQsS0FBSztZQUNMLEtBQUs7Z0JBQ0QscUJBQU8sOERBQUNSLGdFQUFRQTtvQkFBQ29KLE9BQU07b0JBQU9JLFFBQU87b0JBQVFoSixNQUFLOzs7Ozs7WUFDdEQsS0FBSztnQkFDRCxxQkFBTyw4REFBQ1IsZ0VBQVFBO29CQUFDb0osT0FBTTtvQkFBUUksUUFBTztvQkFBUWhKLE1BQUs7Ozs7OztZQUN2RCxLQUFLO2dCQUNELHFCQUFPLDhEQUFDUixnRUFBUUE7b0JBQUNvSixPQUFNO29CQUFTSSxRQUFPO29CQUFRaEosTUFBSzs7Ozs7O1lBRXhEO2dCQUNJLHFCQUFPLDhEQUFDUixnRUFBUUE7b0JBQUNvSixPQUFNO29CQUFLSSxRQUFPO29CQUFPaEosTUFBSzs7Ozs7O1FBQ3ZEO0lBQ0o7SUFFQSxxQkFDSSw4REFBQzBIO1FBQUlDLFdBQVU7OzBCQUNYLDhEQUFDcEksaUVBQVNBOzs7OztZQUNUd0o7WUFDQXRCO1lBQ0FvQjs7Ozs7OztBQUdiIiwic291cmNlcyI6WyIvb3B0L2Rldi9lc3QtZHN4L3NyYy9jb21wb25lbnRzL2RzeHBhZ2UvZ2VuZXJhbC9Ub29scy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1c2VTdGF0ZSwgdXNlRWZmZWN0LCB1c2VSZWYgfSBmcm9tICdyZWFjdCc7XHJcbmltcG9ydCBJbWFnZSBmcm9tICduZXh0L2ltYWdlJztcclxuaW1wb3J0IFN0YXR1c0JhciBmcm9tICdAL2NvbXBvbmVudHMvbGliLy9TdGF0dXNCYXInO1xyXG5pbXBvcnQgVGl0bGVCYXIgZnJvbSAnQC9jb21wb25lbnRzL2xpYi8vVGl0bGVCYXInO1xyXG5pbXBvcnQgU3ViVGl0bGVCYXIgZnJvbSAnQC9jb21wb25lbnRzL2xpYi8vU3ViVGl0bGVCYXInO1xyXG5pbXBvcnQgdXNlRGlzcGxheVN0b3JlIGZyb20gJ0Avc3RvcmUvZGlzcGxheVN0b3JlJztcclxuaW1wb3J0IHVzZURldmljZVN0b3JlIGZyb20gJ0Avc3RvcmUvZGV2aWNlU3RvcmUnO1xyXG5pbXBvcnQgeyBBUElfVVJMUyB9IGZyb20gJ0AvY29uZmlnL2FwaSc7XHJcbmltcG9ydCB7IGdldEFzc2V0VXJsIH0gZnJvbSAnQC91dGlscy9hc3NldCc7XHJcbmltcG9ydCB7IHVzZUF1ZGlvIH0gZnJvbSAnQC9jb21wb25lbnRzL0F1ZGlvUHJvdmlkZXInO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gVG9vbHMoKSB7XHJcbiAgICBjb25zdCB7IHZpZXcgfSA9IHVzZURpc3BsYXlTdG9yZS5nZXRTdGF0ZSgpLm5hdmlnYXRpb24uY3VycmVudDtcclxuICAgIGNvbnN0IHsgbmF2aWdhdGVUbywgdXBkYXRlQ3VycmVudFZpZXcsIGdldEN1cnJlbnRQcm9qZWN0LHVwZGF0YVJlZixzZXRUb2FzdE1lc3NhZ2UgfSA9IHVzZURpc3BsYXlTdG9yZSgpO1xyXG4gICAgY29uc3QgY3VycmVudFByb2plY3QgPSBnZXRDdXJyZW50UHJvamVjdCgpO1xyXG4gICAgY29uc3QgY3VycmVudENvbmZpZyA9IGN1cnJlbnRQcm9qZWN0Py50ZXN0Q29uZmlnc1t1c2VEaXNwbGF5U3RvcmUuZ2V0U3RhdGUoKS5zZWxlY3RlZEluZGV4ZXMudGVzdENvbmZpZ0luZGV4XTtcclxuICAgIGNvbnN0IGZhdWx0U2NlbmFyaW8gPSB1c2VEZXZpY2VTdG9yZS5nZXRTdGF0ZSgpLmZhdWx0U2NlbmFyaW9zO1xyXG4gICAgLy8g6I635Y+W6L+e5o6l54q25oCBXHJcbiAgICBjb25zdCB7IGNvbm5lY3Rpb25TdGF0dXMsIHNldFRvdGFsVG9hc3RNZXNzYWdlIH0gPSB1c2VEZXZpY2VTdG9yZSgpO1xyXG4gICAgY29uc3QgbWFpblBvcnRTdGFydCA9IGNvbm5lY3Rpb25TdGF0dXM/Lm1haW5QYXRocz8uW09iamVjdC5rZXlzKGNvbm5lY3Rpb25TdGF0dXMubWFpblBhdGhzKVswXV0/LnN0YXJ0O1xyXG4gICAgY29uc3QgbWFpblBvcnRFbmQgPSBjb25uZWN0aW9uU3RhdHVzPy5tYWluUGF0aHM/LltPYmplY3Qua2V5cyhjb25uZWN0aW9uU3RhdHVzLm1haW5QYXRocylbMF1dPy5lbmQ7XHJcbiAgICBjb25zdCBtYWlucGF0aCA9IGNvbm5lY3Rpb25TdGF0dXM/Lm1haW5QYXRocz8uW09iamVjdC5rZXlzKGNvbm5lY3Rpb25TdGF0dXMubWFpblBhdGhzKVswXV0/LnBhdGg7XHJcbiAgICBjb25zdCBtYWluVkZMRW5kID0gY29ubmVjdGlvblN0YXR1cz8ubWFpblBhdGhzPy5bJ21haW4tdmZsJ10/LmVuZCB8fCBudWxsO1xyXG4gICAgY29uc3QgW2Nvbm5lY3Rpb25NYXAsIHNldENvbm5lY3Rpb25NYXBdID0gdXNlU3RhdGUoe30pO1xyXG4gICAgY29uc3QgY29ubmVjdGlvbk1hcFJlZiA9IHVzZVJlZihudWxsKTsgIC8vIOa3u+WKoHJlZueUqOS6jue8k+WtmGNvbm5lY3Rpb25NYXBcclxuICAgIGNvbnN0IGNhYmxlVHlwZSA9IGN1cnJlbnRDb25maWcucGFyYW1zLmNhYmxlVHlwZTtcclxuICAgIGNvbnN0IGlzTXVsdGlNb2RlID0gY2FibGVUeXBlLmluY2x1ZGVzKCdPTScpO1xyXG4gICAgY29uc3QgeyBwbGF5IH0gPSB1c2VBdWRpbygpO1xyXG4gICAgXHJcbiAgICAvLyBWRkznirbmgIFcclxuICAgIGNvbnN0IFt2ZmxTdGF0dXMsIHNldFZmbFN0YXR1c10gPSB1c2VTdGF0ZShmYWxzZSk7XHJcblxyXG4gICAgICAgIC8vIOiOt+WPlui/nuaOpemFjee9rlxyXG4gICAgICAgIGNvbnN0IGZldGNoQ29ubmVjdGlvbk1hcCA9IGFzeW5jICgpID0+IHtcclxuICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgIC8vIOWmguaenOW3sue7j+aciee8k+WtmOeahGNvbm5lY3Rpb25NYXDvvIznm7TmjqXov5Tlm55cclxuICAgICAgICAgICAgICAgIGlmIChjb25uZWN0aW9uTWFwUmVmLmN1cnJlbnQpIHtcclxuICAgICAgICAgICAgICAgICAgICBzZXRDb25uZWN0aW9uTWFwKGNvbm5lY3Rpb25NYXBSZWYuY3VycmVudCk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgXHJcbiAgICAgICAgICAgICAgICBjb25zdCBhcGlVcmwgPSBBUElfVVJMUy5DT05ORUNUSU9OLk1BUF9XSVRIX1NDRU5FKGZhdWx0U2NlbmFyaW8pO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChhcGlVcmwpO1xyXG4gICAgICAgICAgICAgICAgaWYgKCFyZXNwb25zZS5vaykge1xyXG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcign6I635Y+W6L+e5o6l6YWN572u5aSx6LSlJyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBjb25zdCBkYXRhID0gYXdhaXQgcmVzcG9uc2UuanNvbigpO1xyXG4gICAgICAgICAgICAgICAgY29ubmVjdGlvbk1hcFJlZi5jdXJyZW50ID0gZGF0YSB8fCB7fTsgIC8vIOe8k+WtmGNvbm5lY3Rpb25NYXBcclxuICAgICAgICAgICAgICAgIHNldENvbm5lY3Rpb25NYXAoZGF0YSB8fCB7fSk7XHJcbiAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCfojrflj5bov57mjqXphY3nva7plJnor686JywgZXJyb3IpO1xyXG4gICAgICAgICAgICAgICAgc2V0Q29ubmVjdGlvbk1hcCh7fSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1WRkwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4gICAgLy8gVkZM5Yqf6IO95Ye95pWwXHJcbiAgICBjb25zdCBoYW5kbGVWZmwgPSAoKSA9PiB7XHJcbiAgICAgICAgZmV0Y2hDb25uZWN0aW9uTWFwKCk7XHJcbiAgICAgICAgaWYgKCFtYWluVkZMRW5kKSByZXR1cm47XHJcbiAgICAgICAgY29uc29sZS5sb2coY29ubmVjdGlvblN0YXR1cz8ubWFpblBhdGhzPy5bJ21haW4tdmZsJ10pO1xyXG5cclxuICAgICAgICAvLyDlnKhjb25uZWN0aW9uTWFw5Lit5p+l5om+5LiObWFpblZGTEVuZOWMuemFjeeahOi/nuaOpVxyXG4gICAgICAgIGxldCBjb25uZWN0ZWRQb3J0ID0gbnVsbDtcclxuICAgICAgICBsZXQgdGFyZ2V0UG9ydElkID0gbnVsbDtcclxuICAgICAgICBcclxuICAgICAgICAvLyDpppblhYjmo4Dmn6VtYWluVkZMRW5k5piv5ZCm5L2c5Li6a2V55a2Y5ZyoXHJcbiAgICAgICAgaWYgKGNvbm5lY3Rpb25NYXBbbWFpblZGTEVuZF0pIHtcclxuICAgICAgICAgICAgY29ubmVjdGVkUG9ydCA9IG1haW5WRkxFbmQ7XHJcbiAgICAgICAgICAgIHRhcmdldFBvcnRJZCA9IGNvbm5lY3Rpb25NYXBbbWFpblZGTEVuZF0uY29ubmVjdGVkVG87XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgLy8g5aaC5p6c5LiN5piva2V577yM5YiZ5p+l5om+5ZOq5Liqa2V555qEY29ubmVjdGVkVG/nrYnkuo5tYWluVkZMRW5kXHJcbiAgICAgICAgICAgIGNvbnN0IGZvdW5kS2V5ID0gT2JqZWN0LmtleXMoY29ubmVjdGlvbk1hcCkuZmluZChrZXkgPT4ge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvbm5lY3Rpb25NYXBba2V5XS5jb25uZWN0ZWRUbyA9PT0gbWFpblZGTEVuZDtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGlmIChmb3VuZEtleSkge1xyXG4gICAgICAgICAgICAgICAgY29ubmVjdGVkUG9ydCA9IG1haW5WRkxFbmQ7XHJcbiAgICAgICAgICAgICAgICB0YXJnZXRQb3J0SWQgPSBmb3VuZEtleTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBcclxuICAgICAgICBcclxuICAgICAgICBpZiAoY29ubmVjdGVkUG9ydCAmJiB0YXJnZXRQb3J0SWQpIHtcclxuICAgICAgICAgICAgLy8g5aaC5p6cdGFyZ2V0UG9ydElk5YyF5ZCrLXBvcnR477yIeOS4uuaVsOWtl++8ie+8jOWImeenu+mZpOi/memDqOWIhlxyXG4gICAgICAgICAgICBpZiAodGFyZ2V0UG9ydElkICYmIC8tcG9ydFxcZCskLy50ZXN0KHRhcmdldFBvcnRJZCkpIHtcclxuICAgICAgICAgICAgICAgIHRhcmdldFBvcnRJZCA9IHRhcmdldFBvcnRJZC5yZXBsYWNlKC8tcG9ydFxcZCskLywgJycpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgY29uc3QgdGFyZ2V0RWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldFBvcnRJZCk7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBpZiAodGFyZ2V0RWxlbWVudCkge1xyXG4gICAgICAgICAgICAgICAgLy8g5qOA5p+l55uu5qCH5YWD57Sg5piv5ZCm5bey6L+e5o6lXHJcbiAgICAgICAgICAgICAgICBpZiAodGFyZ2V0RWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoJ2p0ay1jb25uZWN0ZWQnKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAvLyDojrflj5bnm67moIflhYPntKDnmoTkvY3nva7kv6Hmga9cclxuICAgICAgICAgICAgICAgIGNvbnN0IHJlY3QgPSB0YXJnZXRFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAvLyDliJvlu7rpl6rng4HnmoTnuqLngrlcclxuICAgICAgICAgICAgICAgIGNvbnN0IHJlZERvdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xyXG4gICAgICAgICAgICAgICAgcmVkRG90LnN0eWxlLmNzc1RleHQgPSBgXHJcbiAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiAyMHB4O1xyXG4gICAgICAgICAgICAgICAgICAgIGhlaWdodDogMjBweDtcclxuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xyXG4gICAgICAgICAgICAgICAgICAgIHRvcDogJHtyZWN0LnRvcCArIHJlY3QuaGVpZ2h0IC8gMn1weDtcclxuICAgICAgICAgICAgICAgICAgICBsZWZ0OiAke3JlY3QubGVmdCArIHJlY3Qud2lkdGggLyAyfXB4O1xyXG4gICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xyXG4gICAgICAgICAgICAgICAgICAgIGFuaW1hdGlvbjogYmxpbmsgMXMgaW5maW5pdGU7XHJcbiAgICAgICAgICAgICAgICAgICAgei1pbmRleDogOTk5OTtcclxuICAgICAgICAgICAgICAgIGA7XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIC8vIOa3u+WKoOmXqueDgeWKqOeUu+agt+W8j1xyXG4gICAgICAgICAgICAgICAgY29uc3Qgc3R5bGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpO1xyXG4gICAgICAgICAgICAgICAgc3R5bGUudGV4dENvbnRlbnQgPSBgXHJcbiAgICAgICAgICAgICAgICAgICAgQGtleWZyYW1lcyBibGluayB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDAlIHsgb3BhY2l0eTogMTsgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA1MCUgeyBvcGFjaXR5OiAwOyB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDEwMCUgeyBvcGFjaXR5OiAxOyB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgYDtcclxuICAgICAgICAgICAgICAgIGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoc3R5bGUpO1xyXG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChyZWREb3QpO1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAvLyDlnKhWRkznirbmgIHlhbPpl63ml7bnp7vpmaTnuqLngrlcclxuICAgICAgICAgICAgICAgIHJldHVybiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChyZWREb3QpO1xyXG4gICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmhlYWQucmVtb3ZlQ2hpbGQoc3R5bGUpO1xyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICAvLyBWRkznirbmgIHliIfmjaLlh73mlbBcclxuICAgIGNvbnN0IFNldHZmbFN0YXR1cyA9ICgpID0+IHtcclxuICAgICAgICBzZXRWZmxTdGF0dXMoIXZmbFN0YXR1cyk7XHJcbiAgICB9O1xyXG5cclxuICAgIC8vIOS9v+eUqHVzZVJlZuadpeWtmOWCqOW9k+WJjeeahGNvbm5lY3RlZFBvcnRcclxuICAgIGNvbnN0IGN1cnJlbnRDb25uZWN0ZWRQb3J0UmVmID0gdXNlUmVmKG51bGwpO1xyXG5cclxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XHJcbiAgICAgICAgbGV0IGNsZWFudXA7XHJcbiAgICAgICAgaWYgKHZmbFN0YXR1cykge1xyXG4gICAgICAgICAgICAvLyDojrflj5blvZPliY3nmoRjb25uZWN0ZWRQb3J077yM5L2/55So5Y+M5ZCR5p+l5om+6YC76L6RXHJcbiAgICAgICAgICAgIGxldCBjb25uZWN0ZWRQb3J0ID0gbnVsbDtcclxuICAgICAgICAgICAgaWYgKGNvbm5lY3Rpb25NYXBbbWFpblZGTEVuZF0pIHtcclxuICAgICAgICAgICAgICAgIGNvbm5lY3RlZFBvcnQgPSBtYWluVkZMRW5kO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgY29ubmVjdGVkUG9ydCA9IE9iamVjdC5rZXlzKGNvbm5lY3Rpb25NYXApLmZpbmQoa2V5ID0+IHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29ubmVjdGlvbk1hcFtrZXldLmNvbm5lY3RlZFRvID09PSBtYWluVkZMRW5kO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC8vIOWmguaenGNvbm5lY3RlZFBvcnTlj5HnlJ/lj5jljJbvvIzph43mlrDmiafooYxoYW5kbGVWZmxcclxuICAgICAgICAgICAgaWYgKGNvbm5lY3RlZFBvcnQgIT09IGN1cnJlbnRDb25uZWN0ZWRQb3J0UmVmLmN1cnJlbnQpIHtcclxuICAgICAgICAgICAgICAgIGlmIChjbGVhbnVwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY2xlYW51cCgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgY3VycmVudENvbm5lY3RlZFBvcnRSZWYuY3VycmVudCA9IGNvbm5lY3RlZFBvcnQ7XHJcbiAgICAgICAgICAgICAgICBjbGVhbnVwID0gaGFuZGxlVmZsKCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoIWNsZWFudXApIHtcclxuICAgICAgICAgICAgICAgIC8vIOWmguaenOayoeaciWNsZWFudXDvvIzor7TmmI7ov5jmsqHmnInmiafooYzov4doYW5kbGVWZmxcclxuICAgICAgICAgICAgICAgIGNsZWFudXAgPSBoYW5kbGVWZmwoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gKCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoY2xlYW51cCkge1xyXG4gICAgICAgICAgICAgICAgY2xlYW51cCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuICAgIH0sIFt2ZmxTdGF0dXMsIG1haW5WRkxFbmQsIGNvbm5lY3Rpb25NYXBdKTtcclxuXHJcbiAgICAvLyDnm5HlkKzop4blm77lj5jljJbvvIzlvZPnprvlvIB2Zmzop4blm77ml7bph43nva52ZmxTdGF0dXNcclxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XHJcbiAgICAgICAgaWYgKHZpZXcgIT09ICd2ZmwnICYmIHZmbFN0YXR1cykge1xyXG4gICAgICAgICAgICBzZXRWZmxTdGF0dXMoZmFsc2UpO1xyXG4gICAgICAgIH1cclxuICAgIH0sIFt2aWV3XSk7XHJcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4gICAgIFxyXG4gICAgLy8g6ZOc57yG5Z+65YeG5Yik5pat5Ye95pWwIOWvueW6lHJlZi1jb3BwZXLpobXohJrmjInpkq5cclxuICAgIGNvbnN0IFJlZkNvcHBlckJ1dHRvbkNsaWNrID0gKCkgPT4ge1xyXG4gICAgICAgIGlmIChtYWluUG9ydFN0YXJ0ID09PSAnbWFpbi1wZXJtYW5lbnQnKSB7XHJcbiAgICAgICAgICAgIGlmIChtYWluUG9ydEVuZCA9PT0gJ3JlbW90ZS1jaGFubmVsJykge1xyXG4gICAgICAgICAgICAgICAgdXBkYXRlQ3VycmVudFZpZXcoJ3JlZi1jb3BwZXItc2V0dGluZycpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgc2V0VG9hc3RNZXNzYWdlKCfln7rlh4borr7nva7plJnor6/vvIzor7fmo4Dmn6Xov57mjqXnirbmgIEnKTsgLy8g5Y+v5Lul55So6Ieq5a6a5LmJ55qE5o+Q56S65pa55byP5pu/5LujYWxlcnRcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHNldFRvYXN0TWVzc2FnZSgn6YCC6YWN5Zmo5LiN5YW85a6577yM5a+86Ie05Z+65YeG6K6+572u5aSx6LSlJyk7IC8vIOWQjOagt++8jOWPr+S7peeUqOiHquWumuS5ieeahOaPkOekuuaWueW8j+abv+S7o2FsZXJ0XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIC8v6ZOc57yG5Z+65YeG6K6+572u54q25oCB5pu05paw5Ye95pWwXHJcbiAgICBjb25zdCBSZUZDb3BwZXJVcGRhdGEgPSAoKSA9PiB7XHJcbiAgICAgICAgdXBkYXRhUmVmKCdjb3BwZXInLCB7IHN0YXR1czogdHJ1ZSB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBjZnDln7rlh4bliKTmlq3lh73mlbAg5a+55bqUY2Zw6aG16ISa5oyJ6ZKuXHJcbiAgICBjb25zdCBSZWZDZnBCdXR0b25DbGljayA9ICgpID0+IHtcclxuICAgICAgICBjb25zdCBtYWluUGF0aHMgPSBjb25uZWN0aW9uU3RhdHVzLm1haW5QYXRocyB8fCB7fTtcclxuICAgICAgICBjb25zdCByZW1vdGVQYXRocyA9IGNvbm5lY3Rpb25TdGF0dXMucmVtb3RlUGF0aHMgfHwge307XHJcblxyXG4gICAgICAgIC8vIOajgOafpeerr+WPo+aYr+WQpuWtmOWcqFxyXG4gICAgICAgIGNvbnN0IG1haW5PdXRFeGlzdHMgPSBpc011bHRpTW9kZSBcclxuICAgICAgICAgICAgPyAobWFpblBhdGhzWydtYWluLWNmcC1tbS1vdXQnXSB8fCBtYWluUGF0aHNbJ21haW4tY2ZwLXNtLW91dCddKVxyXG4gICAgICAgICAgICA6IG1haW5QYXRoc1snbWFpbi1jZnAtc20tb3V0J107XHJcbiAgICAgICAgY29uc3QgbWFpbkluRXhpc3RzID0gbWFpblBhdGhzWydtYWluLWNmcC1pbiddO1xyXG4gICAgICAgIGNvbnN0IHJlbW90ZU91dEV4aXN0cyA9IGlzTXVsdGlNb2RlXHJcbiAgICAgICAgICAgID8gKHJlbW90ZVBhdGhzWydyZW1vdGUtY2ZwLW1tLW91dCddIHx8IHJlbW90ZVBhdGhzWydyZW1vdGUtY2ZwLXNtLW91dCddKVxyXG4gICAgICAgICAgICA6IHJlbW90ZVBhdGhzWydyZW1vdGUtY2ZwLXNtLW91dCddO1xyXG4gICAgICAgIGNvbnN0IHJlbW90ZUluRXhpc3RzID0gcmVtb3RlUGF0aHNbJ3JlbW90ZS1jZnAtaW4nXTtcclxuXHJcbiAgICAgICAgLy8g6I635Y+W56uv54K56L+e5o6lXHJcbiAgICAgICAgY29uc3QgbWFpbk91dEVuZCA9IGlzTXVsdGlNb2RlIFxyXG4gICAgICAgICAgICA/IG1haW5QYXRoc1snbWFpbi1jZnAtbW0tb3V0J10/LmVuZCB8fCBtYWluUGF0aHNbJ21haW4tY2ZwLXNtLW91dCddPy5lbmRcclxuICAgICAgICAgICAgOiBtYWluUGF0aHNbJ21haW4tY2ZwLXNtLW91dCddPy5lbmQ7XHJcbiAgICAgICAgY29uc3QgbWFpbkluRW5kID0gbWFpblBhdGhzWydtYWluLWNmcC1pbiddPy5lbmQ7XHJcbiAgICAgICAgY29uc3QgcmVtb3RlT3V0RW5kID0gaXNNdWx0aU1vZGUgXHJcbiAgICAgICAgICAgID8gcmVtb3RlUGF0aHNbJ3JlbW90ZS1jZnAtbW0tb3V0J10/LmVuZCB8fCByZW1vdGVQYXRoc1sncmVtb3RlLWNmcC1zbS1vdXQnXT8uZW5kXHJcbiAgICAgICAgICAgIDogcmVtb3RlUGF0aHNbJ3JlbW90ZS1jZnAtc20tb3V0J10/LmVuZDtcclxuICAgICAgICBjb25zdCByZW1vdGVJbkVuZCA9IHJlbW90ZVBhdGhzWydyZW1vdGUtY2ZwLWluJ10/LmVuZDtcclxuXHJcbiAgICAgICAgLy8g5qOA5p+l5omA5pyJ56uv5Y+j5piv5ZCm5a2Y5ZyoXHJcbiAgICAgICAgaWYgKCFtYWluT3V0RXhpc3RzIHx8ICFtYWluSW5FeGlzdHMgfHwgIXJlbW90ZU91dEV4aXN0cyB8fCAhcmVtb3RlSW5FeGlzdHMpIHtcclxuICAgICAgICAgICAgc2V0VG9hc3RNZXNzYWdlKCfor7fmo4Dmn6Xnq6/lj6Pov57mjqUnKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8g5qOA5p+l5piv5ZCm5pyJ5pyq6L+e5o6l55qE56uv5Y+jXHJcbiAgICAgICAgaWYgKCFtYWluT3V0RW5kIHx8ICFtYWluSW5FbmQgfHwgIXJlbW90ZU91dEVuZCB8fCAhcmVtb3RlSW5FbmQpIHtcclxuICAgICAgICAgICAgc2V0VG9hc3RNZXNzYWdlKCfor7fmo4Dmn6Xnq6/lj6Pov57mjqUnKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8g6aqM6K+B56uv5Y+j6L+e5o6l5piv5ZCm5q2j56GuXHJcbiAgICAgICAgY29uc3QgaXNDb25uZWN0aW9uQ29ycmVjdCA9IFxyXG4gICAgICAgICAgICBtYWluT3V0RW5kID09PSAncmVtb3RlLWNmcC1pbicgJiZcclxuICAgICAgICAgICAgbWFpbkluRW5kID09PSAoaXNNdWx0aU1vZGUgPyAncmVtb3RlLWNmcC1tbS1vdXQnIDogJ3JlbW90ZS1jZnAtc20tb3V0JykgJiZcclxuICAgICAgICAgICAgcmVtb3RlT3V0RW5kID09PSAnbWFpbi1jZnAtaW4nICYmXHJcbiAgICAgICAgICAgIHJlbW90ZUluRW5kID09PSAoaXNNdWx0aU1vZGUgPyAnbWFpbi1jZnAtbW0tb3V0JyA6ICdtYWluLWNmcC1zbS1vdXQnKTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgaWYgKGlzQ29ubmVjdGlvbkNvcnJlY3QpIHtcclxuICAgICAgICAgICAgdXBkYXRlQ3VycmVudFZpZXcoJ3JlZi1jZnAtc2V0dGluZycpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHNldFRvdGFsVG9hc3RNZXNzYWdlKCfor7fkvb/nlKjot7Pnur/orr7nva7ln7rlh4YnKTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG5cclxuXHJcbiAgICBjb25zdCBbc2hvd1JldHJ5QnV0dG9ucywgc2V0U2hvd1JldHJ5QnV0dG9uc10gPSB1c2VTdGF0ZShmYWxzZSk7XHJcblxyXG4gICAgXHJcbiAgICBjb25zdCBSZWZDZnBSZWZCdXR0b25DbGljayA9ICgpID0+IHtcclxuICAgICAgICBjb25zdCBtYWluUGF0aHMgPSBjb25uZWN0aW9uU3RhdHVzLm1haW5QYXRocyB8fCB7fTtcclxuICAgICAgICBjb25zdCByZW1vdGVQYXRocyA9IGNvbm5lY3Rpb25TdGF0dXMucmVtb3RlUGF0aHMgfHwge307XHJcblxyXG4gICAgICAgIC8vIOajgOafpeerr+WPo+aYr+WQpuWtmOWcqFxyXG4gICAgICAgIGNvbnN0IG1haW5PdXRFeGlzdHMgPSBpc011bHRpTW9kZSBcclxuICAgICAgICAgICAgPyAobWFpblBhdGhzWydtYWluLWNmcC1tbS1vdXQnXSB8fCBtYWluUGF0aHNbJ21haW4tY2ZwLXNtLW91dCddKVxyXG4gICAgICAgICAgICA6IG1haW5QYXRoc1snbWFpbi1jZnAtc20tb3V0J107XHJcbiAgICAgICAgY29uc3QgbWFpbkluRXhpc3RzID0gbWFpblBhdGhzWydtYWluLWNmcC1pbiddO1xyXG4gICAgICAgIGNvbnN0IHJlbW90ZU91dEV4aXN0cyA9IGlzTXVsdGlNb2RlXHJcbiAgICAgICAgICAgID8gKHJlbW90ZVBhdGhzWydyZW1vdGUtY2ZwLW1tLW91dCddIHx8IHJlbW90ZVBhdGhzWydyZW1vdGUtY2ZwLXNtLW91dCddKVxyXG4gICAgICAgICAgICA6IHJlbW90ZVBhdGhzWydyZW1vdGUtY2ZwLXNtLW91dCddO1xyXG4gICAgICAgIGNvbnN0IHJlbW90ZUluRXhpc3RzID0gcmVtb3RlUGF0aHNbJ3JlbW90ZS1jZnAtaW4nXTtcclxuXHJcbiAgICAgICAgLy8g6I635Y+W56uv54K56L+e5o6lXHJcbiAgICAgICAgY29uc3QgbWFpbk91dEVuZCA9IGlzTXVsdGlNb2RlIFxyXG4gICAgICAgICAgICA/IG1haW5QYXRoc1snbWFpbi1jZnAtbW0tb3V0J10/LmVuZCB8fCBtYWluUGF0aHNbJ21haW4tY2ZwLXNtLW91dCddPy5lbmRcclxuICAgICAgICAgICAgOiBtYWluUGF0aHNbJ21haW4tY2ZwLXNtLW91dCddPy5lbmQ7XHJcbiAgICAgICAgY29uc3QgbWFpbkluRW5kID0gbWFpblBhdGhzWydtYWluLWNmcC1pbiddPy5lbmQ7XHJcbiAgICAgICAgY29uc3QgcmVtb3RlT3V0RW5kID0gaXNNdWx0aU1vZGUgXHJcbiAgICAgICAgICAgID8gcmVtb3RlUGF0aHNbJ3JlbW90ZS1jZnAtbW0tb3V0J10/LmVuZCB8fCByZW1vdGVQYXRoc1sncmVtb3RlLWNmcC1zbS1vdXQnXT8uZW5kXHJcbiAgICAgICAgICAgIDogcmVtb3RlUGF0aHNbJ3JlbW90ZS1jZnAtc20tb3V0J10/LmVuZDtcclxuICAgICAgICBjb25zdCByZW1vdGVJbkVuZCA9IHJlbW90ZVBhdGhzWydyZW1vdGUtY2ZwLWluJ10/LmVuZDtcclxuXHJcbiAgICAgICAgLy8g5qOA5p+l5omA5pyJ56uv5Y+j5piv5ZCm5a2Y5ZyoXHJcbiAgICAgICAgaWYgKCFtYWluT3V0RXhpc3RzIHx8ICFtYWluSW5FeGlzdHMgfHwgIXJlbW90ZU91dEV4aXN0cyB8fCAhcmVtb3RlSW5FeGlzdHMpIHtcclxuICAgICAgICAgICAgc2V0VG9hc3RNZXNzYWdlKCfor7fmo4Dmn6Xnq6/lj6Pov57mjqUnKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8g5qOA5p+l5piv5ZCm5pyJ5pyq6L+e5o6l55qE56uv5Y+jXHJcbiAgICAgICAgaWYgKCFtYWluT3V0RW5kIHx8ICFtYWluSW5FbmQgfHwgIXJlbW90ZU91dEVuZCB8fCAhcmVtb3RlSW5FbmQpIHtcclxuICAgICAgICAgICAgc2V0VG9hc3RNZXNzYWdlKCfor7fmo4Dmn6Xnq6/lj6Pov57mjqUnKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8g5qOA5p+l56uv5Y+j6L+e5o6l5piv5ZCm5q2j56GuXHJcbiAgICAgICAgY29uc3QgaXNDb25uZWN0aW9uQ29ycmVjdCA9IFxyXG4gICAgICAgICAgICBtYWluT3V0RW5kID09PSAncmVtb3RlLWNmcC1pbicgJiZcclxuICAgICAgICAgICAgbWFpbkluRW5kID09PSAoaXNNdWx0aU1vZGUgPyAncmVtb3RlLWNmcC1tbS1vdXQnIDogJ3JlbW90ZS1jZnAtc20tb3V0JykgJiZcclxuICAgICAgICAgICAgcmVtb3RlT3V0RW5kID09PSAnbWFpbi1jZnAtaW4nICYmXHJcbiAgICAgICAgICAgIHJlbW90ZUluRW5kID09PSAoaXNNdWx0aU1vZGUgPyAnbWFpbi1jZnAtbW0tb3V0JyA6ICdtYWluLWNmcC1zbS1vdXQnKTtcclxuICAgICAgICBpZiAoIWlzQ29ubmVjdGlvbkNvcnJlY3QpIHtcclxuICAgICAgICAgICAgc2V0VG9hc3RNZXNzYWdlKCfor7fmo4Dmn6Xnq6/lj6Pov57mjqUnKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8g5qOA5p+lVFJD6ZW/5bqmXHJcbiAgICAgICAgY29uc3QgbWFpblRyY0NvdW50ID0gKG1haW5QYXRoc1snbWFpbi1jZnAtaW4nXT8ucGF0aD8uZmlsdGVyKHAgPT4gXHJcbiAgICAgICAgICAgIGlzTXVsdGlNb2RlID8gcC5pbmNsdWRlcygnbW0tbGMtbGMnKSA6IHAuaW5jbHVkZXMoJ3NtLWxjLWxjJylcclxuICAgICAgICApPy5sZW5ndGggfHwgMCk7XHJcbiAgICAgICAgXHJcbiAgICAgICAgY29uc3QgcmVtb3RlVHJjQ291bnQgPSAocmVtb3RlUGF0aHNbJ3JlbW90ZS1jZnAtaW4nXT8ucGF0aD8uZmlsdGVyKHAgPT4gXHJcbiAgICAgICAgICAgIGlzTXVsdGlNb2RlID8gcC5pbmNsdWRlcygnbW0tbGMtbGMnKSA6IHAuaW5jbHVkZXMoJ3NtLWxjLWxjJylcclxuICAgICAgICApPy5sZW5ndGggfHwgMCk7XHJcblxyXG4gICAgICAgIGlmIChtYWluVHJjQ291bnQgPCA0IHx8IHJlbW90ZVRyY0NvdW50IDwgNCkge1xyXG4gICAgICAgICAgICB1cGRhdGVDdXJyZW50VmlldygncmVmLWNmcC1zZXR0cmMtbm81MCcpO1xyXG4gICAgICAgICAgICBzZXRTaG93UmV0cnlCdXR0b25zKHRydWUpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgICAgICBcclxuICAgICAgICBpZiAoaXNDb25uZWN0aW9uQ29ycmVjdCkge1xyXG4gICAgICAgICAgICB1cGRhdGVDdXJyZW50VmlldygncmVmLWNmcC1zZXR0cmMnKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBzZXRUb2FzdE1lc3NhZ2UoJ+ivt+ajgOafpeerr+WPo+i/nuaOpScpO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICBcclxuICAgIC8vQ0ZQ5Z+65YeG6K6+572u54q25oCB5pu05paw5Ye95pWwXHJcbiAgICBjb25zdCBSZUZDRlBVcGRhdGEgPSAoKSA9PiB7XHJcbiAgICAgICAgdXBkYXRhUmVmKCdjZnAnLCB7IHN0YXR1czogdHJ1ZSB9KTtcclxuICAgICAgICB1cGRhdGFSZWYoJ2NmcCcsIHsgY29ubmVjdFN0YXR1czogdHJ1ZSB9KTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLy9PRlDln7rlh4borr7nva7nirbmgIHmm7TmlrDlh73mlbBcclxuICAgIGNvbnN0IFJlRk9GUFVwZGF0YSA9ICgpID0+IHtcclxuICAgICAgICBjb25zdCBzdGF0dXNWYWx1ZSA9IG9mcEJhY2tncm91bmQgPT09ICdyZWYtb2ZwLnBuZycgPyAnc3RhcnQnIDogJ2VuZCc7XHJcbiAgICAgICAgdXBkYXRhUmVmKCdvZnAnLCB7IHN0YXR1czogc3RhdHVzVmFsdWUgfSk7XHJcbiAgICAgICAgdXBkYXRhUmVmKCdvZnAnLCB7IGNvbm5lY3RTdGF0dXM6IHRydWUgfSk7XHJcblxyXG4gICAgfVxyXG4gICAgLy8gT0ZQ6KGl5YG/5qOA5rWL5Ye95pWwXHJcbiAgICBjb25zdCBoYW5kbGVSZWZPRlBUZXN0ID0gKCkgPT4ge1xyXG4gICAgICAgIC8vIOiOt+WPluW9k+WJjemAieaLqeeahOWFiee6pOexu+Wei1xyXG4gICAgICAgIGNvbnN0IGNhYmxlVHlwZSA9IGN1cnJlbnRDb25maWc/LnBhcmFtcz8uY2FibGVUeXBlO1xyXG4gICAgICAgIC8vIOiOt+WPluW9k+WJjemAieaLqeeahOihpeWBv+aWueW8j++8iOS7heWJjeWvvCBvciDliY3lr7wr5pyr5bC+77yJXHJcbiAgICAgICAgY29uc3QgaXNMZWFkT25seSA9IG9mcEJhY2tncm91bmQgPT09ICdyZWYtb2ZwLnBuZyc7XHJcbiAgICAgICAgXHJcbiAgICAgICAgLy8g5Yik5pat5piv5ZCm5Li65aSa5qih5YWJ57qkXHJcbiAgICAgICAgY29uc3QgaXNNdWx0aU1vZGUgPSBjYWJsZVR5cGUuaW5jbHVkZXMoJ09NJyk7XHJcbiAgICAgICAgXHJcbiAgICAgICAgLy8g5qOA5p+lbWFpbnBhdGjnmoTnrKzkuIDkuKrmjqXlj6PmmK/lkKbljLnphY3lvZPliY3lhYnnuqTnsbvlnotcclxuICAgICAgICBjb25zdCBmaXJzdFBvcnQgPSBtYWlucGF0aD8uWzBdO1xyXG4gICAgICAgIGlmICghZmlyc3RQb3J0IHx8IFxyXG4gICAgICAgICAgICAoaXNNdWx0aU1vZGUgJiYgIWZpcnN0UG9ydC5pbmNsdWRlcygnbW0tb3V0JykpIHx8IFxyXG4gICAgICAgICAgICAoIWlzTXVsdGlNb2RlICYmICFmaXJzdFBvcnQuaW5jbHVkZXMoJ3NtLW91dCcpKSkge1xyXG4gICAgICAgICAgICBzZXRUb2FzdE1lc3NhZ2UoJ+acquajgOa1i+WIsOWJjeWvvOWFiee6pCcpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIFxyXG4gICAgICAgIC8vIOajgOafpeihpeWBv+WFiee6pOexu+Wei+aYr+WQpuWMuemFjVxyXG4gICAgICAgIGNvbnN0IGhhc0ludmFsaWRGaWJlciA9IG1haW5wYXRoPy5zb21lKHBhdGggPT4ge1xyXG4gICAgICAgICAgICBpZiAocGF0aC5pbmNsdWRlcygnbW1jLScpIHx8IHBhdGguaW5jbHVkZXMoJ3NtYy0nKSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIChpc011bHRpTW9kZSAmJiBwYXRoLmluY2x1ZGVzKCdzbWMtJykpIHx8ICghaXNNdWx0aU1vZGUgJiYgcGF0aC5pbmNsdWRlcygnbW1jLScpKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgXHJcbiAgICAgICAgaWYgKGhhc0ludmFsaWRGaWJlcikge1xyXG4gICAgICAgICAgICBzZXRUb3RhbFRvYXN0TWVzc2FnZShpc011bHRpTW9kZSA/ICfor7fkvb/nlKjlpJrmqKHooaXlgb/lhYnnuqQnIDogJ+ivt+S9v+eUqOWNleaooeihpeWBv+WFiee6pCcpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIFxyXG4gICAgICAgIC8vIOajgOafpei3r+W+hOmVv+W6puWSjOe7hOaIkFxyXG4gICAgICAgIGlmIChpc0xlYWRPbmx5KSB7XHJcbiAgICAgICAgICAgIC8vIOS7heWJjeWvvOaooeW8j++8muW6lOivpeWPquacieS4u+acum91dOerr+WPo+WSjOS4gOS4quihpeWBv+WFiee6pFxyXG4gICAgICAgICAgICBpZiAobWFpbnBhdGg/Lmxlbmd0aCAhPT0gMiB8fCBcclxuICAgICAgICAgICAgICAgICFtYWlucGF0aFsxXS5pbmNsdWRlcyhpc011bHRpTW9kZSA/ICdtbWMtJyA6ICdzbWMtJykpIHtcclxuICAgICAgICAgICAgICAgIHNldFRvdGFsVG9hc3RNZXNzYWdlKCfor7fnoa7kv53mraPnoa7ov57mjqXliY3lr7zlhYnnuqQnKTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIC8vIOWJjeWvvCvmnKvlsL7mqKHlvI/vvJrlupTor6XmnInkuLvmnLpvdXTnq6/lj6PjgIHkuKTkuKrooaXlgb/lhYnnuqTlkozkuIDkuKrov57mjqXlmahcclxuICAgICAgICAgICAgaWYgKG1haW5wYXRoPy5sZW5ndGggIT09IDYgfHwgXHJcbiAgICAgICAgICAgICAgICAhbWFpbnBhdGhbMV0uaW5jbHVkZXMoaXNNdWx0aU1vZGUgPyAnbW1jLScgOiAnc21jLScpIHx8IFxyXG4gICAgICAgICAgICAgICAgIW1haW5wYXRoWzVdLmluY2x1ZGVzKGlzTXVsdGlNb2RlID8gJ21tYy0nIDogJ3NtYy0nKSkgIHtcclxuICAgICAgICAgICAgICAgIHNldFRvdGFsVG9hc3RNZXNzYWdlKCfor7fnoa7kv53mraPnoa7ov57mjqXliY3lr7zlhYnnuqQnKTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBcclxuICAgICAgICAvLyDmiYDmnInmo4Dmn6XpgJrov4fvvIzmm7TmlrDop4blm75cclxuICAgICAgICB1cGRhdGVDdXJyZW50VmlldygncmVmLW9mcC1zZXR0aW5nJyk7XHJcbiAgICB9O1xyXG5cclxuICAgIC8vIOWkhOeQhuWumuaXtuWZqOaViOaenFxyXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcclxuICAgICAgICBpZiAodmlldyA9PT0gJ3JlZi1jb3BwZXItc2V0dGluZycpIHtcclxuICAgICAgICAgICAgY29uc3QgdGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgIHBsYXkoJ3Bhc3MnKTtcclxuICAgICAgICAgICAgICAgIHVwZGF0ZUN1cnJlbnRWaWV3KCdyZWYtY29wcGVyLW9rJyk7XHJcbiAgICAgICAgICAgICAgICBSZUZDb3BwZXJVcGRhdGEoKTsgLy/mm7TmlrDnirbmgIFcclxuICAgICAgICAgICAgfSwgMzAwMCk7XHJcbiAgICAgICAgICAgIHJldHVybiAoKSA9PiBjbGVhclRpbWVvdXQodGltZXIpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodmlldyA9PT0gJ3JlZi1jZnAtc2V0dGluZycpIHtcclxuICAgICAgICAgICAgY29uc3QgdGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgIHVwZGF0ZUN1cnJlbnRWaWV3KCdyZWYtY2ZwNCcpO1xyXG4gICAgICAgICAgICB9LCAzMDAwKTtcclxuICAgICAgICAgICAgcmV0dXJuICgpID0+IGNsZWFyVGltZW91dCh0aW1lcik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh2aWV3ID09PSAncmVmLWNmcC1zZXR0cmMnKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB1cGRhdGVDdXJyZW50VmlldygncmVmLWNmcC10cmMnKTtcclxuICAgICAgICAgICAgICAgIFJlRkNGUFVwZGF0YSgpOyBcclxuICAgICAgICAgICAgfSwgMzAwMCk7XHJcbiAgICAgICAgICAgIHJldHVybiAoKSA9PiBjbGVhclRpbWVvdXQodGltZXIpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodmlldyA9PT0gJ3JlZi1jZnAtc2V0dHJjLW5vNTAnKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB1cGRhdGVDdXJyZW50VmlldygncmVmLWNmcC10cmMnKTtcclxuICAgICAgICAgICAgICAgIHNldFRvYXN0TWVzc2FnZSgnVFJD6ZW/5bqm5LiN6LazNTBjbSzor7fph43mlrDmtYvor5UnKTtcclxuICAgICAgICAgICAgfSwgMzAwMCk7XHJcbiAgICAgICAgICAgIHJldHVybiAoKSA9PiBjbGVhclRpbWVvdXQodGltZXIpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8g6YeN572uc2hvd1JldHJ5QnV0dG9uc+eKtuaAgVxyXG4gICAgICAgIGlmICh2aWV3ICE9PSAncmVmLWNmcC1zZXR0cmMtbm81MCcgJiYgdmlldyAhPT0gJ3JlZi1jZnAtdHJjJykge1xyXG4gICAgICAgICAgICBzZXRTaG93UmV0cnlCdXR0b25zKGZhbHNlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHZpZXcgPT09ICdyZWYtb2ZwLXNldHRpbmcnKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB1cGRhdGVDdXJyZW50VmlldygncmVmLW9mcC1vaycpO1xyXG4gICAgICAgICAgICAgICAgUmVGT0ZQVXBkYXRhKCk7XHJcbiAgICAgICAgICAgIH0sIDEwMDAwKTtcclxuICAgICAgICAgICAgcmV0dXJuICgpID0+IGNsZWFyVGltZW91dCh0aW1lcik7XHJcbiAgICAgICAgfVxyXG4gICAgfSwgW3ZpZXddKTtcclxuXHJcbiAgICBjb25zdCBbb2ZwQmFja2dyb3VuZCwgc2V0T2ZwQmFja2dyb3VuZF0gPSB1c2VTdGF0ZSgncmVmLW9mcC5wbmcnKTtcclxuXHJcbiAgICAvLyDnm5HlkKx2aWV35Y+Y5YyW77yM5b2T6L+b5YWlcmVmLW9mcOinhuWbvuaXtumHjee9ruiDjOaZr+WbvueJh1xyXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcclxuICAgICAgICBpZiAodmlldyA9PT0gJ3JlZi1vZnAnKSB7XHJcbiAgICAgICAgICAgIHNldE9mcEJhY2tncm91bmQoJ3JlZi1vZnAucG5nJyk7XHJcbiAgICAgICAgfVxyXG4gICAgfSwgW3ZpZXddKTtcclxuXHJcbiAgICAvLyDlpITnkIbljZXpgInmoYbliIfmjaLkuovku7ZcclxuICAgIGNvbnN0IGhhbmRsZUNvbXBlbnNhdGlvbkNoYW5nZSA9ICh2YWx1ZSkgPT4ge1xyXG4gICAgICAgIHNldE9mcEJhY2tncm91bmQodmFsdWUgPT09ICdsZWFkJyA/ICdyZWYtb2ZwLnBuZycgOiAncmVmLW9mcC1lbmQucG5nJyk7XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IHJlbmRlckNvbnRlbnQgPSAoKSA9PiB7XHJcbiAgICAgICAgc3dpdGNoICh2aWV3KSB7XHJcbiAgICAgICAgICAgIGNhc2UgJ21haW4nOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXgtMSBiZy1bI0Q1REZFQl0gcC00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHtjdXJyZW50Q29uZmlnPy5tb2R1bGVUeXBlID09PSAnODAwMCcgJiYgKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ3LWZ1bGwgaC1bNTBweF0gYmctWyNGOEY2RjddIHJvdW5kZWQtc20gcC00IHNoYWRvdy1sZyBmbGV4IGp1c3RpZnktYmV0d2VlbiBpdGVtcy1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHVwZGF0ZUN1cnJlbnRWaWV3KCdyZWYtY29wcGVyJyl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LWJsYWNrIHRleHQtbGdcIj7orr7nva7ln7rlh4Y8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctMyBoLTMgcmVsYXRpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEltYWdlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9e2dldEFzc2V0VXJsKCcvYXJyb3cucG5nJyl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ9XCLnrq3lpLRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwib2JqZWN0LWNvbnRhaW5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZXM9XCIxMDB2d1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7Y3VycmVudENvbmZpZz8ubW9kdWxlVHlwZSA9PT0gJ2NmcCcgJiYgKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ3LWZ1bGwgaC1bNTBweF0gYmctWyNGOEY2RjddIHJvdW5kZWQtc20gcC00IHNoYWRvdy1sZyBmbGV4IGp1c3RpZnktYmV0d2VlbiBpdGVtcy1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHVwZGF0ZUN1cnJlbnRWaWV3KCdyZWYtY2ZwJyl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LWJsYWNrIHRleHQtbGdcIj7orr7nva7lj4Lnhac8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctMyBoLTMgcmVsYXRpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEltYWdlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9e2dldEFzc2V0VXJsKCcvYXJyb3cucG5nJyl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ9XCLnrq3lpLRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwib2JqZWN0LWNvbnRhaW5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZXM9XCIxMDB2d1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAge2N1cnJlbnRDb25maWc/Lm1vZHVsZVR5cGUgPT09ICdvZnAnICYmIChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidy1mdWxsIGgtWzUwcHhdIGJnLVsjRjhGNkY3XSByb3VuZGVkLXNtIHAtNCBzaGFkb3ctbGcgZmxleCBqdXN0aWZ5LWJldHdlZW4gaXRlbXMtY2VudGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB1cGRhdGVDdXJyZW50VmlldygncmVmLW9mcCcpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1ibGFjayB0ZXh0LWxnXCI+6K6+572u6KGl5YG/PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LTMgaC0zIHJlbGF0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJbWFnZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjPXtnZXRBc3NldFVybCgnL2Fycm93LnBuZycpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0PVwi566t5aS0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cIm9iamVjdC1jb250YWluXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVzPVwiMTAwdndcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ3LWZ1bGwgaC1bNTBweF0gYmctWyNGOEY2RjddIHJvdW5kZWQtc20gcC00IHNoYWRvdy1sZyBmbGV4IGp1c3RpZnktYmV0d2VlbiBpdGVtcy1jZW50ZXIgbXQtNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB1cGRhdGVDdXJyZW50VmlldygndG9uZScpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtYmxhY2sgdGV4dC1sZ1wiPumfs+mikeWPkeeUn+WZqDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LTMgaC0zIHJlbGF0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEltYWdlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz17Z2V0QXNzZXRVcmwoJy9hcnJvdy5wbmcnKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0PVwi566t5aS0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJvYmplY3QtY29udGFpblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVzPVwiMTAwdndcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ3LWZ1bGwgaC1bNTBweF0gYmctWyNGOEY2RjddIHJvdW5kZWQtc20gcC00IHNoYWRvdy1sZyBmbGV4IGp1c3RpZnktYmV0d2VlbiBpdGVtcy1jZW50ZXIgbXQtNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB1cGRhdGVDdXJyZW50VmlldygndmZsJyl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1ibGFjayB0ZXh0LWxnXCI+5Y+v6KeG5pWF6Zqc5a6a5L2NPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctMyBoLTMgcmVsYXRpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SW1hZ2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjPXtnZXRBc3NldFVybCgnL2Fycm93LnBuZycpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ9XCLnrq3lpLRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cIm9iamVjdC1jb250YWluXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZXM9XCIxMDB2d1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICk7XHJcblxyXG4gICAgICAgICAgICBjYXNlICdyZWYtY29wcGVyJzpcclxuICAgICAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4LTEgYmctWyNENURGRUJdIGZsZXggZmxleC1jb2xcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4LTEgcmVsYXRpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJbWFnZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz17Z2V0QXNzZXRVcmwoJy9yZWYtY29wcGVyLnBuZycpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdD1cIumTnOe8huWPgueFp+iuvue9rlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cIm9iamVjdC1jb250YWluXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplcz1cIjEwMHZ3XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgKTtcclxuXHJcbiAgICAgICAgICAgIGNhc2UgJ3JlZi1jb3BwZXItc2V0dGluZyc6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleC0xIGJnLVsjRDVERkVCXSBmbGV4IGZsZXgtY29sXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleC0xIHJlbGF0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SW1hZ2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9e2dldEFzc2V0VXJsKCcvdGVzdGluZy5naWYnKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ9XCLmtYvor5XkuK1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJvYmplY3QtY29udGFpblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZXM9XCIxMDB2d1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICk7XHJcblxyXG4gICAgICAgICAgICBjYXNlICdyZWYtY29wcGVyLW9rJzpcclxuICAgICAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4LTEgYmctWyNENURGRUJdIGZsZXggZmxleC1jb2xcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4LTEgcmVsYXRpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJbWFnZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz17Z2V0QXNzZXRVcmwoJy9yZWYtY29wcGVyLW9rLnBuZycpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdD1cIumTnOe8huWPgueFp+iuvue9ruWujOaIkFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cIm9iamVjdC1jb250YWluXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplcz1cIjEwMHZ3XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgKTtcclxuXHJcbiAgICAgICAgICAgIGNhc2UgJ3JlZi1jZnAnOlxyXG4gICAgICAgICAgICBjYXNlICdyZWYtY2ZwMic6XHJcbiAgICAgICAgICAgIGNhc2UgJ3JlZi1jZnAzJzpcclxuICAgICAgICAgICAgY2FzZSAncmVmLWNmcDQnOlxyXG4gICAgICAgICAgICBjYXNlICdyZWYtY2ZwNSc6XHJcbiAgICAgICAgICAgIGNhc2UgJ3JlZi1jZnA2JzpcclxuICAgICAgICAgICAgY2FzZSAncmVmLWNmcDcnOlxyXG4gICAgICAgICAgICBjYXNlICdyZWYtY2ZwOCc6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleC0xIGJnLVsjRDVERkVCXSBmbGV4IGZsZXgtY29sXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleC0xIHJlbGF0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SW1hZ2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9e2dldEFzc2V0VXJsKGAvcmVmLWNmcCR7dmlldyA9PT0gJ3JlZi1jZnAnID8gJzEnIDogdmlldy5zbGljZSgtMSl9JHtpc011bHRpTW9kZSA/ICctbW0nIDogJy1zbSd9LnBuZ2ApfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdD1cIuWFiee6pOWPgueFp+iuvue9rlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cIm9iamVjdC1jb250YWluXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplcz1cIjEwMHZ3XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgKTtcclxuXHJcbiAgICAgICAgICAgIGNhc2UgJ3JlZi1jZnAtc2V0dGluZyc6XHJcbiAgICAgICAgICAgIGNhc2UgJ3JlZi1jZnAtc2V0dHJjJzpcclxuICAgICAgICAgICAgY2FzZSAncmVmLWNmcC1zZXR0cmMtbm81MCc6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleC0xIGJnLVsjRDVERkVCXSBmbGV4IGZsZXgtY29sXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleC0xIHJlbGF0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SW1hZ2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9e2dldEFzc2V0VXJsKCcvdGVzdGluZy5naWYnKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ9XCLmtYvor5XkuK1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJvYmplY3QtY29udGFpblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZXM9XCIxMDB2d1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICk7XHJcblxyXG4gICAgICAgICAgICBjYXNlICdyZWYtY2ZwLXRyYyc6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleC0xIGJnLVsjRDVERkVCXSBmbGV4IGZsZXgtY29sXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleC0xIHJlbGF0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SW1hZ2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9e2dldEFzc2V0VXJsKGAvcmVmLWNmcC10cmMke2lzTXVsdGlNb2RlID8gJy1tbScgOiAnLXNtJ30ucG5nYCl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0PXtgVFJD6aqM6K+BIC0gJHtpc011bHRpTW9kZSA/ICflpJrmqKEnIDogJ+WNleaooSd9YH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwib2JqZWN0LWNvbnRhaW5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVzPVwiMTAwdndcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICApO1xyXG5cclxuICAgICAgICAgICAgY2FzZSAncmVmLWNmcC1vayc6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleC0xIGJnLVsjRDVERkVCXSBmbGV4IGZsZXgtY29sXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleC0xIHJlbGF0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SW1hZ2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9e2dldEFzc2V0VXJsKGAvcmVmLWNmcC1vayR7aXNNdWx0aU1vZGUgPyAnLW1tJyA6ICctc20nfS5wbmdgKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ9e2DlhYnnuqTlj4Lnhaforr7nva7lrozmiJAgLSAke2lzTXVsdGlNb2RlID8gJ+WkmuaooScgOiAn5Y2V5qihJ31gfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJvYmplY3QtY29udGFpblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZXM9XCIxMDB2d1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICk7XHJcblxyXG4gICAgICAgICAgICBjYXNlICdyZWYtb2ZwJzpcclxuICAgICAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4LTEgYmctWyNENURGRUJdIGZsZXggZmxleC1jb2wgcmVsYXRpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJhYnNvbHV0ZSBpbnNldC0wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SW1hZ2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9e2dldEFzc2V0VXJsKGAvJHtvZnBCYWNrZ3JvdW5kfWApfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdD1cIk9URFLlj4Lnhaforr7nva5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJvYmplY3QtY29udGFpblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZXM9XCIxMDB2d1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyZWxhdGl2ZSBmbGV4ICBpdGVtcy1lbmQganVzdGlmeS1lbmQgcHgtMjBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyZWxhdGl2ZSBmbGV4IGZsZXgtY29sIGl0ZW1zLXN0YXJ0IHNwYWNlLXktMjBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBmbGV4LWNvbCBzcGFjZS15LTQgbWItNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzc05hbWU9XCJ0ZXh0LXdoaXRlIHRleHQteGwgZmxleCBpdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInJhZGlvXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwiY29tcGVuc2F0aW9uXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT1cImxlYWRcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRDaGVja2VkIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiBoYW5kbGVDb21wZW5zYXRpb25DaGFuZ2UoZS50YXJnZXQudmFsdWUpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwibXItMyB3LTUgaC01XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz4gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIOS7heWJjeWvvFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZhdWx0U2NlbmFyaW8gIT09ICdEYXRhQ2VudGVyJyAmJiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzc05hbWU9XCJ0ZXh0LXdoaXRlIHRleHQteGwgZmxleCBpdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwicmFkaW9cIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwiY29tcGVuc2F0aW9uXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9XCJib3RoXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiBoYW5kbGVDb21wZW5zYXRpb25DaGFuZ2UoZS50YXJnZXQudmFsdWUpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cIm1yLTMgdy01IGgtNVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIOWJjeWvvCvmnKvlsL5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtd2hpdGUgdGV4dC1tIG1iLTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDlhYnnuqTnsbvlnovvvJp7Y3VycmVudENvbmZpZz8ucGFyYW1zPy5jYWJsZVR5cGV9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgKTtcclxuXHJcbiAgICAgICAgICAgIGNhc2UgJ3JlZi1vZnAtc2V0dGluZyc6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleC0xIGJnLVsjRDVERkVCXSBmbGV4IGZsZXgtY29sXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleC0xIHJlbGF0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SW1hZ2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9e2dldEFzc2V0VXJsKCcvcmVmZXNldC10ZXN0aW5nLmdpZicpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdD1cIk9URFLmtYvor5XkuK1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJvYmplY3QtY29udGFpblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZXM9XCIxMDB2d1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICk7XHJcblxyXG4gICAgICAgICAgICBjYXNlICdyZWYtb2ZwLW9rJzpcclxuICAgICAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4LTEgYmctWyNENURGRUJdIGZsZXggZmxleC1jb2xcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4LTEgcmVsYXRpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJbWFnZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz17Z2V0QXNzZXRVcmwob2ZwQmFja2dyb3VuZCA9PT0gJ3JlZi1vZnAucG5nJyA/ICcvcmVmLW9mcC1vay5wbmcnIDogJy9yZWYtb2ZwLW9rLWVuZC5wbmcnKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ9XCJPVERS5Y+C54Wn6K6+572uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwib2JqZWN0LWNvbnRhaW5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVzPVwiMTAwdndcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTdWJUaXRsZUJhciB0aXRsZT17b2ZwQmFja2dyb3VuZCA9PT0gJ3JlZi1vZnAucG5nJyA/ICfpgInmi6nliY3lr7zkuovku7YnIDogJ+mAieaLqeWJjeWvvOWSjOacq+WwvuS6i+S7tid9Lz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICApO1xyXG5cclxuICAgICAgICAgICAgY2FzZSAndG9uZSc6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleC0xIGJnLVsjRDVERkVCXSBmbGV4IGZsZXgtY29sXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleC0xIHJlbGF0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SW1hZ2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9e2dldEFzc2V0VXJsKCcvdG9uZS5naWYnKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ9XCLpn7PpopHlj5HnlJ/lmahcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJvYmplY3QtY29udGFpblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZXM9XCIxMDB2d1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIGNhc2UgJ3ZmbCc6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleC0xIGJnLVsjRDVERkVCXSBmbGV4IGZsZXgtY29sXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleC0xIHJlbGF0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SW1hZ2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9e2dldEFzc2V0VXJsKHZmbFN0YXR1cyA/ICcvdmZsLW9uLnBuZycgOiAnL3ZmbC1vZmYucG5nJyl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0PVwi5Y+v6KeG5pWF6Zqc5a6a5L2NXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwib2JqZWN0LWNvbnRhaW5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVzPVwiMTAwdndcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IHJlbmRlckZvb3RlciA9ICgpID0+IHtcclxuICAgICAgICBzd2l0Y2ggKHZpZXcpIHtcclxuICAgICAgICAgICAgY2FzZSAncmVmLWNvcHBlcic6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaC1bNjBweF0gYmctWyMxMzI4NDNdIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktZW5kIHB4LTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e1JlZkNvcHBlckJ1dHRvbkNsaWNrfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidy1bMTAwcHhdIGgtWzQwcHhdIGJnLWdyYWRpZW50LXRvLWIgZnJvbS1bI2I2ZGFlN10gdG8tWyM2NWRmZmZdIHJvdW5kZWQtc20gZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgdGV4dC1ibGFjayBmb250LWJvbGQgc2hhZG93LWxnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAg5rWL6K+VXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgKTtcclxuXHJcbiAgICAgICAgICAgIGNhc2UgJ3JlZi1jZnAtc2V0dGluZyc6XHJcbiAgICAgICAgICAgIGNhc2UgJ3JlZi1jZnAtc2V0dHJjJzogICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIGNhc2UgJ3JlZi1jZnAtc2V0dHJjLW5vNTAnOlxyXG4gICAgICAgICAgICBjYXNlICdyZWYtY29wcGVyLXNldHRpbmcnOlxyXG4gICAgICAgICAgICBjYXNlICdyZWYtb2ZwLXNldHRpbmcnOlxyXG4gICAgICAgICAgICBjYXNlICd0b25lJzpcclxuICAgICAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJoLVs2MHB4XSBiZy1bIzEzMjg0M10gZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1lbmQgcHgtNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgKTtcclxuXHJcbiAgICAgICAgICAgIGNhc2UgJ3ZmbCc6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaC1bNjBweF0gYmctWyMxMzI4NDNdIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktZW5kIHB4LTRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXtTZXR2ZmxTdGF0dXN9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInctWzEwMHB4XSBoLVs0MHB4XSBiZy1ncmFkaWVudC10by1iIGZyb20tWyNiNmRhZTddIHRvLVsjNjVkZmZmXSByb3VuZGVkLXNtIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHRleHQtYmxhY2sgZm9udC1ib2xkIHNoYWRvdy1sZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICDlvIAv5YWzXHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICk7IFxyXG5cclxuICAgICAgICAgICAgY2FzZSAncmVmLWNvcHBlci1vayc6XHJcbiAgICAgICAgICAgIGNhc2UgJ3JlZi1jZnAtb2snOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImgtWzYwcHhdIGJnLVsjMTMyODQzXSBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWVuZCBweC00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBuYXZpZ2F0ZVRvKCdob21lJywgJ21haW4nKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInctWzEwMHB4XSBoLVs0MHB4XSBiZy1ncmFkaWVudC10by1iIGZyb20tWyNiNmRhZTddIHRvLVsjNjVkZmZmXSByb3VuZGVkLXNtIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHRleHQtYmxhY2sgZm9udC1ib2xkIHNoYWRvdy1sZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIOS4u+mhtVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICk7XHJcblxyXG4gICAgICAgICAgICBjYXNlICdyZWYtY2ZwJzpcclxuICAgICAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJoLVs2MHB4XSBiZy1bIzEzMjg0M10gZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1lbmQgcHgtNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gdXBkYXRlQ3VycmVudFZpZXcoJ3JlZi1jZnAyJyl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ3LVsxMDBweF0gaC1bNDBweF0gYmctZ3JhZGllbnQtdG8tYiBmcm9tLVsjYjZkYWU3XSB0by1bIzY1ZGZmZl0gcm91bmRlZC1zbSBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciB0ZXh0LWJsYWNrIGZvbnQtYm9sZCBzaGFkb3ctbGdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICDkuIvkuIDkuKpcclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICBjYXNlICdyZWYtY2ZwMic6XHJcbiAgICAgICAgICAgIGNhc2UgJ3JlZi1jZnA0JzpcclxuICAgICAgICAgICAgY2FzZSAncmVmLWNmcDUnOlxyXG4gICAgICAgICAgICBjYXNlICdyZWYtY2ZwNic6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaC1bNjBweF0gYmctWyMxMzI4NDNdIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktZW5kIHB4LTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHVwZGF0ZUN1cnJlbnRWaWV3KGByZWYtY2ZwJHtwYXJzZUludCh2aWV3LnNsaWNlKC0xKSkgKyAxfWApfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidy1bMTAwcHhdIGgtWzQwcHhdIGJnLWdyYWRpZW50LXRvLWIgZnJvbS1bI2I2ZGFlN10gdG8tWyM2NWRmZmZdIHJvdW5kZWQtc20gZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgdGV4dC1ibGFjayBmb250LWJvbGQgc2hhZG93LWxnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAg5LiL5LiA5LiqXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgKTtcclxuXHJcbiAgICAgICAgICAgIGNhc2UgJ3JlZi1jZnAtdHJjJzpcclxuICAgICAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJoLVs2MHB4XSBiZy1bIzEzMjg0M10gZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIHB4LTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3Nob3dSZXRyeUJ1dHRvbnMgPyAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlZkNmcFJlZkJ1dHRvbkNsaWNrKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInctWzEwMHB4XSBoLVs0MHB4XSBiZy1ncmFkaWVudC10by1iIGZyb20tWyNiNmRhZTddIHRvLVsjNjVkZmZmXSByb3VuZGVkLXNtIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHRleHQtYmxhY2sgZm9udC1ib2xkIHNoYWRvdy1sZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDph43mlrDpqozor4FcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVDdXJyZW50VmlldygncmVmLWNmcCcpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ3LVsxMDBweF0gaC1bNDBweF0gIHJvdW5kZWQtc20gZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgdGV4dC13aGl0ZSBmb250LWJvbGQgc2hhZG93LWxnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIOmHjeaWsOW8gOWni1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICkgOiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXgtMVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZUN1cnJlbnRWaWV3KCdyZWYtY2ZwOCcpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInctWzEwMHB4XSBoLVs0MHB4XSAgcm91bmRlZC1zbSBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciB0ZXh0LXdoaXRlIGZvbnQtYm9sZCBzaGFkb3ctbGdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICDkuIvkuIDkuKpcclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICApO1xyXG5cclxuICAgICAgICAgICAgY2FzZSAncmVmLWNmcDMnOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImgtWzYwcHhdIGJnLVsjMTMyODQzXSBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWVuZCBweC00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXtSZWZDZnBCdXR0b25DbGlja31cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInctWzEwMHB4XSBoLVs0MHB4XSBiZy1ncmFkaWVudC10by1iIGZyb20tWyNiNmRhZTddIHRvLVsjNjVkZmZmXSByb3VuZGVkLXNtIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHRleHQtYmxhY2sgZm9udC1ib2xkIHNoYWRvdy1sZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIOiuvue9ruWPgueFp1xyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICk7XHJcblxyXG4gICAgICAgICAgICBjYXNlICdyZWYtY2ZwNyc6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaC1bNjBweF0gYmctWyMxMzI4NDNdIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktZW5kIHB4LTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e1JlZkNmcFJlZkJ1dHRvbkNsaWNrfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidy1bMTAwcHhdIGgtWzQwcHhdIGJnLWdyYWRpZW50LXRvLWIgZnJvbS1bI2I2ZGFlN10gdG8tWyM2NWRmZmZdIHJvdW5kZWQtc20gZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgdGV4dC1ibGFjayBmb250LWJvbGQgc2hhZG93LWxnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJD6aqM6K+BXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgKTtcclxuXHJcbiAgICAgICAgICAgIGNhc2UgJ3JlZi1jZnA4JzpcclxuICAgICAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJoLVs2MHB4XSBiZy1bIzEzMjg0M10gZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1lbmQgcHgtNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB1cGRhdGVDdXJyZW50VmlldygncmVmLWNmcC1vaycpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidy1bMTAwcHhdIGgtWzQwcHhdIGJnLWdyYWRpZW50LXRvLWIgZnJvbS1bI2I2ZGFlN10gdG8tWyM2NWRmZmZdIHJvdW5kZWQtc20gZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgdGV4dC1ibGFjayBmb250LWJvbGQgc2hhZG93LWxnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAg5LiL5LiA5LiqXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIFxyXG5cclxuICAgICAgICAgICAgY2FzZSAncmVmLW9mcCc6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaC1bNjBweF0gYmctWyMxMzI4NDNdIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktZW5kIHB4LTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2hhbmRsZVJlZk9GUFRlc3R9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ3LVsxMDBweF0gaC1bNDBweF0gYmctZ3JhZGllbnQtdG8tYiBmcm9tLVsjYjZkYWU3XSB0by1bIzY1ZGZmZl0gcm91bmRlZC1zbSBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciB0ZXh0LWJsYWNrIGZvbnQtYm9sZCBzaGFkb3ctbGdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICDmtYvor5VcclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImgtWzYwcHhdIGJnLVsjMTMyODQzXSBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWVuZCBweC00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB1cGRhdGVDdXJyZW50VmlldygncmVmLW9mcC1zZXR0aW5nJyl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ3LVsxMDBweF0gaC1bNDBweF0gYmctZ3JhZGllbnQtdG8tYiBmcm9tLVsjYjZkYWU3XSB0by1bIzY1ZGZmZl0gcm91bmRlZC1zbSBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciB0ZXh0LWJsYWNrIGZvbnQtYm9sZCBzaGFkb3ctbGdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICDmtYvor5VcclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICApO1xyXG5cclxuICAgICAgICAgICAgY2FzZSAncmVmLW9mcC1vayc6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaC1bNjBweF0gYmctWyMxMzI4NDNdIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktZW5kIHB4LTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IG5hdmlnYXRlVG8oJ2hvbWUnLCAnbWFpbicpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidy1bMTAwcHhdIGgtWzQwcHhdIGJnLWdyYWRpZW50LXRvLWIgZnJvbS1bI2I2ZGFlN10gdG8tWyM2NWRmZmZdIHJvdW5kZWQtc20gZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgdGV4dC1ibGFjayBmb250LWJvbGQgc2hhZG93LWxnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAg5L+d5a2YXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgKTtcclxuXHJcblxyXG5cclxuICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgcmVuZGVyVGl0bGVCYXIgPSAoKSA9PiB7XHJcbiAgICAgICAgc3dpdGNoICh2aWV3KSB7XHJcbiAgICAgICAgICAgIGNhc2UgJ3JlZi1jb3BwZXItc2V0dGluZyc6XHJcbiAgICAgICAgICAgIGNhc2UgJ3JlZi1jZnAtc2V0dGluZyc6XHJcbiAgICAgICAgICAgIGNhc2UgJ3JlZi1jZnAtc2V0dHJjJzpcclxuICAgICAgICAgICAgY2FzZSAncmVmLWNmcC1zZXR0cmMtbm81MCc6XHJcbiAgICAgICAgICAgIGNhc2UgJ3JlZi1vZnAtc2V0dGluZyc6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gPFRpdGxlQmFyIHRpdGxlPVwi6L+b56iLXCIgYmFja1RvPVwidG9vbHNcIiB2aWV3PVwibWFpblwiIC8+O1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgY2FzZSAncmVmLWNvcHBlci1vayc6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gPFRpdGxlQmFyIHRpdGxlPVwi6K6+572u5Z+65YeGXCIgIC8+O1xyXG4gICAgICAgICAgICBjYXNlICdyZWYtY2ZwLW9rJzpcclxuICAgICAgICAgICAgICAgIHJldHVybiA8VGl0bGVCYXIgdGl0bGU9XCLorr7nva7lj4LnhadcIiAvPjtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIGNhc2UgJ3JlZi1jb3BwZXInOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIDxUaXRsZUJhciB0aXRsZT1cIuiuvue9ruWfuuWHhlwiIGJhY2tUbz1cInRvb2xzXCIgdmlldz1cIm1haW5cIiAvPjtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIGNhc2UgJ3JlZi1jZnAnOlxyXG4gICAgICAgICAgICBjYXNlICdyZWYtY2ZwMic6XHJcbiAgICAgICAgICAgIGNhc2UgJ3JlZi1jZnAzJzpcclxuICAgICAgICAgICAgY2FzZSAncmVmLWNmcDQnOlxyXG4gICAgICAgICAgICBjYXNlICdyZWYtY2ZwNSc6XHJcbiAgICAgICAgICAgIGNhc2UgJ3JlZi1jZnA2JzpcclxuICAgICAgICAgICAgY2FzZSAncmVmLWNmcDcnOlxyXG4gICAgICAgICAgICBjYXNlICdyZWYtY2ZwOCc6XHJcbiAgICAgICAgICAgIGNhc2UgJ3JlZi1jZnAtdHJjJzpcclxuICAgICAgICAgICAgICAgIHJldHVybiA8VGl0bGVCYXIgdGl0bGU9XCLorr7nva7lj4LnhadcIiBiYWNrVG89XCJ0b29sc1wiIHZpZXc9XCJtYWluXCIgLz47XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBjYXNlICdyZWYtb2ZwJzpcclxuICAgICAgICAgICAgY2FzZSAncmVmLW9mcC1vayc6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gPFRpdGxlQmFyIHRpdGxlPVwi6K6+572u6KGl5YG/XCIgYmFja1RvPVwidG9vbHNcIiB2aWV3PVwibWFpblwiIC8+O1xyXG4gICAgICAgICAgICBjYXNlICd0b25lJzpcclxuICAgICAgICAgICAgICAgIHJldHVybiA8VGl0bGVCYXIgdGl0bGU9XCLpn7PpopHlj5HnlJ/lmahcIiBiYWNrVG89XCJ0b29sc1wiIHZpZXc9XCJtYWluXCIgLz47XHJcbiAgICAgICAgICAgIGNhc2UgJ3ZmbCc6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gPFRpdGxlQmFyIHRpdGxlPVwi5Y+v6KeG5pWF6Zqc5a6a5L2NXCIgYmFja1RvPVwidG9vbHNcIiB2aWV3PVwibWFpblwiIC8+O1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgIHJldHVybiA8VGl0bGVCYXIgdGl0bGU9XCLlt6XlhbdcIiBiYWNrVG89XCJob21lXCIgdmlldz1cIm1haW5cIiAvPjtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG5cclxuICAgIHJldHVybiAoXHJcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LWZ1bGwgaC1mdWxsIGZsZXggZmxleC1jb2wgb3ZlcmZsb3ctaGlkZGVuXCI+XHJcbiAgICAgICAgICAgIDxTdGF0dXNCYXIgLz5cclxuICAgICAgICAgICAge3JlbmRlclRpdGxlQmFyKCl9XHJcbiAgICAgICAgICAgIHtyZW5kZXJDb250ZW50KCl9XHJcbiAgICAgICAgICAgIHtyZW5kZXJGb290ZXIoKX1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICk7XHJcbn1cclxuIl0sIm5hbWVzIjpbInVzZVN0YXRlIiwidXNlRWZmZWN0IiwidXNlUmVmIiwiSW1hZ2UiLCJTdGF0dXNCYXIiLCJUaXRsZUJhciIsIlN1YlRpdGxlQmFyIiwidXNlRGlzcGxheVN0b3JlIiwidXNlRGV2aWNlU3RvcmUiLCJBUElfVVJMUyIsImdldEFzc2V0VXJsIiwidXNlQXVkaW8iLCJUb29scyIsInZpZXciLCJnZXRTdGF0ZSIsIm5hdmlnYXRpb24iLCJjdXJyZW50IiwibmF2aWdhdGVUbyIsInVwZGF0ZUN1cnJlbnRWaWV3IiwiZ2V0Q3VycmVudFByb2plY3QiLCJ1cGRhdGFSZWYiLCJzZXRUb2FzdE1lc3NhZ2UiLCJjdXJyZW50UHJvamVjdCIsImN1cnJlbnRDb25maWciLCJ0ZXN0Q29uZmlncyIsInNlbGVjdGVkSW5kZXhlcyIsInRlc3RDb25maWdJbmRleCIsImZhdWx0U2NlbmFyaW8iLCJmYXVsdFNjZW5hcmlvcyIsImNvbm5lY3Rpb25TdGF0dXMiLCJzZXRUb3RhbFRvYXN0TWVzc2FnZSIsIm1haW5Qb3J0U3RhcnQiLCJtYWluUGF0aHMiLCJPYmplY3QiLCJrZXlzIiwic3RhcnQiLCJtYWluUG9ydEVuZCIsImVuZCIsIm1haW5wYXRoIiwicGF0aCIsIm1haW5WRkxFbmQiLCJjb25uZWN0aW9uTWFwIiwic2V0Q29ubmVjdGlvbk1hcCIsImNvbm5lY3Rpb25NYXBSZWYiLCJjYWJsZVR5cGUiLCJwYXJhbXMiLCJpc011bHRpTW9kZSIsImluY2x1ZGVzIiwicGxheSIsInZmbFN0YXR1cyIsInNldFZmbFN0YXR1cyIsImZldGNoQ29ubmVjdGlvbk1hcCIsImFwaVVybCIsIkNPTk5FQ1RJT04iLCJNQVBfV0lUSF9TQ0VORSIsInJlc3BvbnNlIiwiZmV0Y2giLCJvayIsIkVycm9yIiwiZGF0YSIsImpzb24iLCJlcnJvciIsImNvbnNvbGUiLCJoYW5kbGVWZmwiLCJsb2ciLCJjb25uZWN0ZWRQb3J0IiwidGFyZ2V0UG9ydElkIiwiY29ubmVjdGVkVG8iLCJmb3VuZEtleSIsImZpbmQiLCJrZXkiLCJ0ZXN0IiwicmVwbGFjZSIsInRhcmdldEVsZW1lbnQiLCJkb2N1bWVudCIsImdldEVsZW1lbnRCeUlkIiwiY2xhc3NMaXN0IiwiY29udGFpbnMiLCJyZWN0IiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwicmVkRG90IiwiY3JlYXRlRWxlbWVudCIsInN0eWxlIiwiY3NzVGV4dCIsInRvcCIsImhlaWdodCIsImxlZnQiLCJ3aWR0aCIsInRleHRDb250ZW50IiwiaGVhZCIsImFwcGVuZENoaWxkIiwiYm9keSIsInJlbW92ZUNoaWxkIiwiU2V0dmZsU3RhdHVzIiwiY3VycmVudENvbm5lY3RlZFBvcnRSZWYiLCJjbGVhbnVwIiwiUmVmQ29wcGVyQnV0dG9uQ2xpY2siLCJSZUZDb3BwZXJVcGRhdGEiLCJzdGF0dXMiLCJSZWZDZnBCdXR0b25DbGljayIsInJlbW90ZVBhdGhzIiwibWFpbk91dEV4aXN0cyIsIm1haW5JbkV4aXN0cyIsInJlbW90ZU91dEV4aXN0cyIsInJlbW90ZUluRXhpc3RzIiwibWFpbk91dEVuZCIsIm1haW5JbkVuZCIsInJlbW90ZU91dEVuZCIsInJlbW90ZUluRW5kIiwiaXNDb25uZWN0aW9uQ29ycmVjdCIsInNob3dSZXRyeUJ1dHRvbnMiLCJzZXRTaG93UmV0cnlCdXR0b25zIiwiUmVmQ2ZwUmVmQnV0dG9uQ2xpY2siLCJtYWluVHJjQ291bnQiLCJmaWx0ZXIiLCJwIiwibGVuZ3RoIiwicmVtb3RlVHJjQ291bnQiLCJSZUZDRlBVcGRhdGEiLCJjb25uZWN0U3RhdHVzIiwiUmVGT0ZQVXBkYXRhIiwic3RhdHVzVmFsdWUiLCJvZnBCYWNrZ3JvdW5kIiwiaGFuZGxlUmVmT0ZQVGVzdCIsImlzTGVhZE9ubHkiLCJmaXJzdFBvcnQiLCJoYXNJbnZhbGlkRmliZXIiLCJzb21lIiwidGltZXIiLCJzZXRUaW1lb3V0IiwiY2xlYXJUaW1lb3V0Iiwic2V0T2ZwQmFja2dyb3VuZCIsImhhbmRsZUNvbXBlbnNhdGlvbkNoYW5nZSIsInZhbHVlIiwicmVuZGVyQ29udGVudCIsImRpdiIsImNsYXNzTmFtZSIsIm1vZHVsZVR5cGUiLCJidXR0b24iLCJvbkNsaWNrIiwic3JjIiwiYWx0IiwiZmlsbCIsInNpemVzIiwic2xpY2UiLCJsYWJlbCIsImlucHV0IiwidHlwZSIsIm5hbWUiLCJkZWZhdWx0Q2hlY2tlZCIsIm9uQ2hhbmdlIiwiZSIsInRhcmdldCIsInRpdGxlIiwicmVuZGVyRm9vdGVyIiwicGFyc2VJbnQiLCJyZW5kZXJUaXRsZUJhciIsImJhY2tUbyJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(pages-dir-node)/./src/components/dsxpage/general/Tools.js\n"); /***/ }), /***/ "(pages-dir-node)/./src/components/dsxpage/index.js": /*!*****************************************!*\ !*** ./src/components/dsxpage/index.js ***! \*****************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; eval("__webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ CableId: () => (/* binding */ CableId),\n/* harmony export */ CopperPerformance: () => (/* binding */ CopperPerformance),\n/* harmony export */ HomePage: () => (/* binding */ HomePage),\n/* harmony export */ MenuList: () => (/* binding */ MenuList),\n/* harmony export */ Operators: () => (/* binding */ Operators),\n/* harmony export */ Project: () => (/* binding */ Project),\n/* harmony export */ Result: () => (/* binding */ Result),\n/* harmony export */ ResultInfo: () => (/* binding */ ResultInfo),\n/* harmony export */ TestConfig: () => (/* binding */ TestConfig),\n/* harmony export */ Testing: () => (/* binding */ Testing),\n/* harmony export */ Tools: () => (/* binding */ Tools)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"react/jsx-dev-runtime\");\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 */ \"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _store_deviceStore__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/store/deviceStore */ \"(pages-dir-node)/./src/store/deviceStore.js\");\n/* harmony import */ var _general_HomePage__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./general/HomePage */ \"(pages-dir-node)/./src/components/dsxpage/general/HomePage.js\");\n/* harmony import */ var _general_Project__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./general/Project */ \"(pages-dir-node)/./src/components/dsxpage/general/Project.js\");\n/* harmony import */ var _general_Operators__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./general/Operators */ \"(pages-dir-node)/./src/components/dsxpage/general/Operators.js\");\n/* harmony import */ var _general_CableId__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./general/CableId */ \"(pages-dir-node)/./src/components/dsxpage/general/CableId.js\");\n/* harmony import */ var _general_Tools__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./general/Tools */ \"(pages-dir-node)/./src/components/dsxpage/general/Tools.js\");\n/* harmony import */ var _general_Result__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./general/Result */ \"(pages-dir-node)/./src/components/dsxpage/general/Result.js\");\n/* harmony import */ var _general_TestConfig__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./general/TestConfig */ \"(pages-dir-node)/./src/components/dsxpage/general/TestConfig.js\");\n/* harmony import */ var _general_MenuList__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./general/MenuList */ \"(pages-dir-node)/./src/components/dsxpage/general/MenuList.js\");\n/* harmony import */ var _general_Testing__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./general/Testing */ \"(pages-dir-node)/./src/components/dsxpage/general/Testing.js\");\n/* harmony import */ var _general_ResultInfo__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./general/ResultInfo */ \"(pages-dir-node)/./src/components/dsxpage/general/ResultInfo.js\");\n/* harmony import */ var _general_CopperPerformance__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./general/CopperPerformance */ \"(pages-dir-node)/./src/components/dsxpage/general/CopperPerformance.js\");\n/* harmony import */ var _fluke_HomePage__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./fluke/HomePage */ \"(pages-dir-node)/./src/components/dsxpage/fluke/HomePage.js\");\n/* harmony import */ var _fluke_Project__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./fluke/Project */ \"(pages-dir-node)/./src/components/dsxpage/fluke/Project.js\");\n/* harmony import */ var _fluke_Operators__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./fluke/Operators */ \"(pages-dir-node)/./src/components/dsxpage/fluke/Operators.js\");\n/* harmony import */ var _fluke_CableId__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./fluke/CableId */ \"(pages-dir-node)/./src/components/dsxpage/fluke/CableId.js\");\n/* harmony import */ var _fluke_Tools__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./fluke/Tools */ \"(pages-dir-node)/./src/components/dsxpage/fluke/Tools.js\");\n/* harmony import */ var _fluke_Result__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./fluke/Result */ \"(pages-dir-node)/./src/components/dsxpage/fluke/Result.js\");\n/* harmony import */ var _fluke_TestConfig__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./fluke/TestConfig */ \"(pages-dir-node)/./src/components/dsxpage/fluke/TestConfig.js\");\n/* harmony import */ var _fluke_MenuList__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./fluke/MenuList */ \"(pages-dir-node)/./src/components/dsxpage/fluke/MenuList.js\");\n/* harmony import */ var _fluke_Testing__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./fluke/Testing */ \"(pages-dir-node)/./src/components/dsxpage/fluke/Testing.js\");\n/* harmony import */ var _fluke_ResultInfo__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./fluke/ResultInfo */ \"(pages-dir-node)/./src/components/dsxpage/fluke/ResultInfo.js\");\n/* harmony import */ var _fluke_CopperPerformance__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./fluke/CopperPerformance */ \"(pages-dir-node)/./src/components/dsxpage/fluke/CopperPerformance.js\");\nvar __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_store_deviceStore__WEBPACK_IMPORTED_MODULE_2__, _general_HomePage__WEBPACK_IMPORTED_MODULE_3__, _general_Project__WEBPACK_IMPORTED_MODULE_4__, _general_Operators__WEBPACK_IMPORTED_MODULE_5__, _general_CableId__WEBPACK_IMPORTED_MODULE_6__, _general_Tools__WEBPACK_IMPORTED_MODULE_7__, _general_Result__WEBPACK_IMPORTED_MODULE_8__, _general_TestConfig__WEBPACK_IMPORTED_MODULE_9__, _general_MenuList__WEBPACK_IMPORTED_MODULE_10__, _general_Testing__WEBPACK_IMPORTED_MODULE_11__, _general_ResultInfo__WEBPACK_IMPORTED_MODULE_12__, _general_CopperPerformance__WEBPACK_IMPORTED_MODULE_13__, _fluke_HomePage__WEBPACK_IMPORTED_MODULE_14__, _fluke_Project__WEBPACK_IMPORTED_MODULE_15__, _fluke_Operators__WEBPACK_IMPORTED_MODULE_16__, _fluke_CableId__WEBPACK_IMPORTED_MODULE_17__, _fluke_Tools__WEBPACK_IMPORTED_MODULE_18__, _fluke_Result__WEBPACK_IMPORTED_MODULE_19__, _fluke_TestConfig__WEBPACK_IMPORTED_MODULE_20__, _fluke_MenuList__WEBPACK_IMPORTED_MODULE_21__, _fluke_Testing__WEBPACK_IMPORTED_MODULE_22__, _fluke_ResultInfo__WEBPACK_IMPORTED_MODULE_23__, _fluke_CopperPerformance__WEBPACK_IMPORTED_MODULE_24__]);\n([_store_deviceStore__WEBPACK_IMPORTED_MODULE_2__, _general_HomePage__WEBPACK_IMPORTED_MODULE_3__, _general_Project__WEBPACK_IMPORTED_MODULE_4__, _general_Operators__WEBPACK_IMPORTED_MODULE_5__, _general_CableId__WEBPACK_IMPORTED_MODULE_6__, _general_Tools__WEBPACK_IMPORTED_MODULE_7__, _general_Result__WEBPACK_IMPORTED_MODULE_8__, _general_TestConfig__WEBPACK_IMPORTED_MODULE_9__, _general_MenuList__WEBPACK_IMPORTED_MODULE_10__, _general_Testing__WEBPACK_IMPORTED_MODULE_11__, _general_ResultInfo__WEBPACK_IMPORTED_MODULE_12__, _general_CopperPerformance__WEBPACK_IMPORTED_MODULE_13__, _fluke_HomePage__WEBPACK_IMPORTED_MODULE_14__, _fluke_Project__WEBPACK_IMPORTED_MODULE_15__, _fluke_Operators__WEBPACK_IMPORTED_MODULE_16__, _fluke_CableId__WEBPACK_IMPORTED_MODULE_17__, _fluke_Tools__WEBPACK_IMPORTED_MODULE_18__, _fluke_Result__WEBPACK_IMPORTED_MODULE_19__, _fluke_TestConfig__WEBPACK_IMPORTED_MODULE_20__, _fluke_MenuList__WEBPACK_IMPORTED_MODULE_21__, _fluke_Testing__WEBPACK_IMPORTED_MODULE_22__, _fluke_ResultInfo__WEBPACK_IMPORTED_MODULE_23__, _fluke_CopperPerformance__WEBPACK_IMPORTED_MODULE_24__] = __webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__);\n\n\n\n// general 版本组件\n\n\n\n\n\n\n\n\n\n\n\n// fluke 版本组件\n\n\n\n\n\n\n\n\n\n\n\nconst variantsGeneral = {\n HomePage: _general_HomePage__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n Project: _general_Project__WEBPACK_IMPORTED_MODULE_4__[\"default\"],\n Operators: _general_Operators__WEBPACK_IMPORTED_MODULE_5__[\"default\"],\n CableId: _general_CableId__WEBPACK_IMPORTED_MODULE_6__[\"default\"],\n Tools: _general_Tools__WEBPACK_IMPORTED_MODULE_7__[\"default\"],\n Result: _general_Result__WEBPACK_IMPORTED_MODULE_8__[\"default\"],\n TestConfig: _general_TestConfig__WEBPACK_IMPORTED_MODULE_9__[\"default\"],\n MenuList: _general_MenuList__WEBPACK_IMPORTED_MODULE_10__[\"default\"],\n Testing: _general_Testing__WEBPACK_IMPORTED_MODULE_11__[\"default\"],\n ResultInfo: _general_ResultInfo__WEBPACK_IMPORTED_MODULE_12__[\"default\"],\n CopperPerformance: _general_CopperPerformance__WEBPACK_IMPORTED_MODULE_13__[\"default\"]\n};\nconst variantsFluke = {\n HomePage: _fluke_HomePage__WEBPACK_IMPORTED_MODULE_14__[\"default\"],\n Project: _fluke_Project__WEBPACK_IMPORTED_MODULE_15__[\"default\"],\n Operators: _fluke_Operators__WEBPACK_IMPORTED_MODULE_16__[\"default\"],\n CableId: _fluke_CableId__WEBPACK_IMPORTED_MODULE_17__[\"default\"],\n Tools: _fluke_Tools__WEBPACK_IMPORTED_MODULE_18__[\"default\"],\n Result: _fluke_Result__WEBPACK_IMPORTED_MODULE_19__[\"default\"],\n TestConfig: _fluke_TestConfig__WEBPACK_IMPORTED_MODULE_20__[\"default\"],\n MenuList: _fluke_MenuList__WEBPACK_IMPORTED_MODULE_21__[\"default\"],\n Testing: _fluke_Testing__WEBPACK_IMPORTED_MODULE_22__[\"default\"],\n ResultInfo: _fluke_ResultInfo__WEBPACK_IMPORTED_MODULE_23__[\"default\"],\n CopperPerformance: _fluke_CopperPerformance__WEBPACK_IMPORTED_MODULE_24__[\"default\"]\n};\nfunction make(name) {\n return function VariantWrapper(props) {\n const estmodel = (0,_store_deviceStore__WEBPACK_IMPORTED_MODULE_2__[\"default\"])({\n \"make.VariantWrapper.useDeviceStore[estmodel]\": (s)=>s.estmodel\n }[\"make.VariantWrapper.useDeviceStore[estmodel]\"]);\n const table = estmodel === 'fluke' ? variantsFluke : variantsGeneral;\n const Comp = table[name] || variantsGeneral[name];\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(Comp, {\n ...props\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/dsxpage/index.js\",\n lineNumber: 63,\n columnNumber: 12\n }, this);\n };\n}\n// 导出与现有一致的同名组件\nconst HomePage = make('HomePage');\nconst Project = make('Project');\nconst Operators = make('Operators');\nconst CableId = make('CableId');\nconst Tools = make('Tools');\nconst Result = make('Result');\nconst TestConfig = make('TestConfig');\nconst MenuList = make('MenuList');\nconst Testing = make('Testing');\nconst ResultInfo = make('ResultInfo');\nconst CopperPerformance = make('CopperPerformance');\n\n__webpack_async_result__();\n} catch(e) { __webpack_async_result__(e); } });//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHBhZ2VzLWRpci1ub2RlKS8uL3NyYy9jb21wb25lbnRzL2RzeHBhZ2UvaW5kZXguanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQTBCO0FBQ3VCO0FBRWpELGVBQWU7QUFDa0M7QUFDRjtBQUNJO0FBQ0o7QUFDSjtBQUNFO0FBQ1E7QUFDSjtBQUNGO0FBQ007QUFDYztBQUVuRSxhQUFhO0FBQ2dDO0FBQ0Y7QUFDSTtBQUNKO0FBQ0o7QUFDRTtBQUNRO0FBQ0o7QUFDRjtBQUNNO0FBQ2M7QUFFL0QsTUFBTXdCLGtCQUFrQjtJQUN0QkMsVUFBVXZCLHlEQUFlQTtJQUN6QndCLFNBQVN2Qix3REFBY0E7SUFDdkJ3QixXQUFXdkIsMERBQWdCQTtJQUMzQndCLFNBQVN2Qix3REFBY0E7SUFDdkJ3QixPQUFPdkIsc0RBQVlBO0lBQ25Cd0IsUUFBUXZCLHVEQUFhQTtJQUNyQndCLFlBQVl2QiwyREFBaUJBO0lBQzdCd0IsVUFBVXZCLDBEQUFlQTtJQUN6QndCLFNBQVN2Qix5REFBY0E7SUFDdkJ3QixZQUFZdkIsNERBQWlCQTtJQUM3QndCLG1CQUFtQnZCLG1FQUF3QkE7QUFDN0M7QUFFQSxNQUFNd0IsZ0JBQWdCO0lBQ3BCWCxVQUFVWix3REFBYUE7SUFDdkJhLFNBQVNaLHVEQUFZQTtJQUNyQmEsV0FBV1oseURBQWNBO0lBQ3pCYSxTQUFTWix1REFBWUE7SUFDckJhLE9BQU9aLHFEQUFVQTtJQUNqQmEsUUFBUVosc0RBQVdBO0lBQ25CYSxZQUFZWiwwREFBZUE7SUFDM0JhLFVBQVVaLHdEQUFhQTtJQUN2QmEsU0FBU1osdURBQVlBO0lBQ3JCYSxZQUFZWiwwREFBZUE7SUFDM0JhLG1CQUFtQlosaUVBQXNCQTtBQUMzQztBQUVBLFNBQVNjLEtBQUtDLElBQUk7SUFDaEIsT0FBTyxTQUFTQyxlQUFlQyxLQUFLO1FBQ2xDLE1BQU1DLFdBQVd4Qyw4REFBY0E7NERBQUMsQ0FBQ3lDLElBQU1BLEVBQUVELFFBQVE7O1FBQ2pELE1BQU1FLFFBQVFGLGFBQWEsVUFBVUwsZ0JBQWdCWjtRQUNyRCxNQUFNb0IsT0FBT0QsS0FBSyxDQUFDTCxLQUFLLElBQUlkLGVBQWUsQ0FBQ2MsS0FBSztRQUNqRCxxQkFBTyw4REFBQ007WUFBTSxHQUFHSixLQUFLOzs7Ozs7SUFDeEI7QUFDRjtBQUVBLGVBQWU7QUFDUixNQUFNZixXQUFXWSxLQUFLLFlBQVk7QUFDbEMsTUFBTVgsVUFBVVcsS0FBSyxXQUFXO0FBQ2hDLE1BQU1WLFlBQVlVLEtBQUssYUFBYTtBQUNwQyxNQUFNVCxVQUFVUyxLQUFLLFdBQVc7QUFDaEMsTUFBTVIsUUFBUVEsS0FBSyxTQUFTO0FBQzVCLE1BQU1QLFNBQVNPLEtBQUssVUFBVTtBQUM5QixNQUFNTixhQUFhTSxLQUFLLGNBQWM7QUFDdEMsTUFBTUwsV0FBV0ssS0FBSyxZQUFZO0FBQ2xDLE1BQU1KLFVBQVVJLEtBQUssV0FBVztBQUNoQyxNQUFNSCxhQUFhRyxLQUFLLGNBQWM7QUFDdEMsTUFBTUYsb0JBQW9CRSxLQUFLLHFCQUFxQiIsInNvdXJjZXMiOlsiL29wdC9kZXYvZXN0LWRzeC9zcmMvY29tcG9uZW50cy9kc3hwYWdlL2luZGV4LmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XHJcbmltcG9ydCB1c2VEZXZpY2VTdG9yZSBmcm9tICdAL3N0b3JlL2RldmljZVN0b3JlJztcclxuXHJcbi8vIGdlbmVyYWwg54mI5pys57uE5Lu2XHJcbmltcG9ydCBHZW5lcmFsSG9tZVBhZ2UgZnJvbSAnLi9nZW5lcmFsL0hvbWVQYWdlJztcclxuaW1wb3J0IEdlbmVyYWxQcm9qZWN0IGZyb20gJy4vZ2VuZXJhbC9Qcm9qZWN0JztcclxuaW1wb3J0IEdlbmVyYWxPcGVyYXRvcnMgZnJvbSAnLi9nZW5lcmFsL09wZXJhdG9ycyc7XHJcbmltcG9ydCBHZW5lcmFsQ2FibGVJZCBmcm9tICcuL2dlbmVyYWwvQ2FibGVJZCc7XHJcbmltcG9ydCBHZW5lcmFsVG9vbHMgZnJvbSAnLi9nZW5lcmFsL1Rvb2xzJztcclxuaW1wb3J0IEdlbmVyYWxSZXN1bHQgZnJvbSAnLi9nZW5lcmFsL1Jlc3VsdCc7XHJcbmltcG9ydCBHZW5lcmFsVGVzdENvbmZpZyBmcm9tICcuL2dlbmVyYWwvVGVzdENvbmZpZyc7XHJcbmltcG9ydCBHZW5lcmFsTWVudUxpc3QgZnJvbSAnLi9nZW5lcmFsL01lbnVMaXN0JztcclxuaW1wb3J0IEdlbmVyYWxUZXN0aW5nIGZyb20gJy4vZ2VuZXJhbC9UZXN0aW5nJztcclxuaW1wb3J0IEdlbmVyYWxSZXN1bHRJbmZvIGZyb20gJy4vZ2VuZXJhbC9SZXN1bHRJbmZvJztcclxuaW1wb3J0IEdlbmVyYWxDb3BwZXJQZXJmb3JtYW5jZSBmcm9tICcuL2dlbmVyYWwvQ29wcGVyUGVyZm9ybWFuY2UnO1xyXG5cclxuLy8gZmx1a2Ug54mI5pys57uE5Lu2XHJcbmltcG9ydCBGbHVrZUhvbWVQYWdlIGZyb20gJy4vZmx1a2UvSG9tZVBhZ2UnO1xyXG5pbXBvcnQgRmx1a2VQcm9qZWN0IGZyb20gJy4vZmx1a2UvUHJvamVjdCc7XHJcbmltcG9ydCBGbHVrZU9wZXJhdG9ycyBmcm9tICcuL2ZsdWtlL09wZXJhdG9ycyc7XHJcbmltcG9ydCBGbHVrZUNhYmxlSWQgZnJvbSAnLi9mbHVrZS9DYWJsZUlkJztcclxuaW1wb3J0IEZsdWtlVG9vbHMgZnJvbSAnLi9mbHVrZS9Ub29scyc7XHJcbmltcG9ydCBGbHVrZVJlc3VsdCBmcm9tICcuL2ZsdWtlL1Jlc3VsdCc7XHJcbmltcG9ydCBGbHVrZVRlc3RDb25maWcgZnJvbSAnLi9mbHVrZS9UZXN0Q29uZmlnJztcclxuaW1wb3J0IEZsdWtlTWVudUxpc3QgZnJvbSAnLi9mbHVrZS9NZW51TGlzdCc7XHJcbmltcG9ydCBGbHVrZVRlc3RpbmcgZnJvbSAnLi9mbHVrZS9UZXN0aW5nJztcclxuaW1wb3J0IEZsdWtlUmVzdWx0SW5mbyBmcm9tICcuL2ZsdWtlL1Jlc3VsdEluZm8nO1xyXG5pbXBvcnQgRmx1a2VDb3BwZXJQZXJmb3JtYW5jZSBmcm9tICcuL2ZsdWtlL0NvcHBlclBlcmZvcm1hbmNlJztcclxuXHJcbmNvbnN0IHZhcmlhbnRzR2VuZXJhbCA9IHtcclxuICBIb21lUGFnZTogR2VuZXJhbEhvbWVQYWdlLFxyXG4gIFByb2plY3Q6IEdlbmVyYWxQcm9qZWN0LFxyXG4gIE9wZXJhdG9yczogR2VuZXJhbE9wZXJhdG9ycyxcclxuICBDYWJsZUlkOiBHZW5lcmFsQ2FibGVJZCxcclxuICBUb29sczogR2VuZXJhbFRvb2xzLFxyXG4gIFJlc3VsdDogR2VuZXJhbFJlc3VsdCxcclxuICBUZXN0Q29uZmlnOiBHZW5lcmFsVGVzdENvbmZpZyxcclxuICBNZW51TGlzdDogR2VuZXJhbE1lbnVMaXN0LFxyXG4gIFRlc3Rpbmc6IEdlbmVyYWxUZXN0aW5nLFxyXG4gIFJlc3VsdEluZm86IEdlbmVyYWxSZXN1bHRJbmZvLFxyXG4gIENvcHBlclBlcmZvcm1hbmNlOiBHZW5lcmFsQ29wcGVyUGVyZm9ybWFuY2UsXHJcbn07XHJcblxyXG5jb25zdCB2YXJpYW50c0ZsdWtlID0ge1xyXG4gIEhvbWVQYWdlOiBGbHVrZUhvbWVQYWdlLFxyXG4gIFByb2plY3Q6IEZsdWtlUHJvamVjdCxcclxuICBPcGVyYXRvcnM6IEZsdWtlT3BlcmF0b3JzLFxyXG4gIENhYmxlSWQ6IEZsdWtlQ2FibGVJZCxcclxuICBUb29sczogRmx1a2VUb29scyxcclxuICBSZXN1bHQ6IEZsdWtlUmVzdWx0LFxyXG4gIFRlc3RDb25maWc6IEZsdWtlVGVzdENvbmZpZyxcclxuICBNZW51TGlzdDogRmx1a2VNZW51TGlzdCxcclxuICBUZXN0aW5nOiBGbHVrZVRlc3RpbmcsXHJcbiAgUmVzdWx0SW5mbzogRmx1a2VSZXN1bHRJbmZvLFxyXG4gIENvcHBlclBlcmZvcm1hbmNlOiBGbHVrZUNvcHBlclBlcmZvcm1hbmNlLFxyXG59O1xyXG5cclxuZnVuY3Rpb24gbWFrZShuYW1lKSB7XHJcbiAgcmV0dXJuIGZ1bmN0aW9uIFZhcmlhbnRXcmFwcGVyKHByb3BzKSB7XHJcbiAgICBjb25zdCBlc3Rtb2RlbCA9IHVzZURldmljZVN0b3JlKChzKSA9PiBzLmVzdG1vZGVsKTtcclxuICAgIGNvbnN0IHRhYmxlID0gZXN0bW9kZWwgPT09ICdmbHVrZScgPyB2YXJpYW50c0ZsdWtlIDogdmFyaWFudHNHZW5lcmFsO1xyXG4gICAgY29uc3QgQ29tcCA9IHRhYmxlW25hbWVdIHx8IHZhcmlhbnRzR2VuZXJhbFtuYW1lXTtcclxuICAgIHJldHVybiA8Q29tcCB7Li4ucHJvcHN9IC8+O1xyXG4gIH07XHJcbn1cclxuXHJcbi8vIOWvvOWHuuS4jueOsOacieS4gOiHtOeahOWQjOWQjee7hOS7tlxyXG5leHBvcnQgY29uc3QgSG9tZVBhZ2UgPSBtYWtlKCdIb21lUGFnZScpO1xyXG5leHBvcnQgY29uc3QgUHJvamVjdCA9IG1ha2UoJ1Byb2plY3QnKTtcclxuZXhwb3J0IGNvbnN0IE9wZXJhdG9ycyA9IG1ha2UoJ09wZXJhdG9ycycpO1xyXG5leHBvcnQgY29uc3QgQ2FibGVJZCA9IG1ha2UoJ0NhYmxlSWQnKTtcclxuZXhwb3J0IGNvbnN0IFRvb2xzID0gbWFrZSgnVG9vbHMnKTtcclxuZXhwb3J0IGNvbnN0IFJlc3VsdCA9IG1ha2UoJ1Jlc3VsdCcpO1xyXG5leHBvcnQgY29uc3QgVGVzdENvbmZpZyA9IG1ha2UoJ1Rlc3RDb25maWcnKTtcclxuZXhwb3J0IGNvbnN0IE1lbnVMaXN0ID0gbWFrZSgnTWVudUxpc3QnKTtcclxuZXhwb3J0IGNvbnN0IFRlc3RpbmcgPSBtYWtlKCdUZXN0aW5nJyk7XHJcbmV4cG9ydCBjb25zdCBSZXN1bHRJbmZvID0gbWFrZSgnUmVzdWx0SW5mbycpO1xyXG5leHBvcnQgY29uc3QgQ29wcGVyUGVyZm9ybWFuY2UgPSBtYWtlKCdDb3BwZXJQZXJmb3JtYW5jZScpOyJdLCJuYW1lcyI6WyJSZWFjdCIsInVzZURldmljZVN0b3JlIiwiR2VuZXJhbEhvbWVQYWdlIiwiR2VuZXJhbFByb2plY3QiLCJHZW5lcmFsT3BlcmF0b3JzIiwiR2VuZXJhbENhYmxlSWQiLCJHZW5lcmFsVG9vbHMiLCJHZW5lcmFsUmVzdWx0IiwiR2VuZXJhbFRlc3RDb25maWciLCJHZW5lcmFsTWVudUxpc3QiLCJHZW5lcmFsVGVzdGluZyIsIkdlbmVyYWxSZXN1bHRJbmZvIiwiR2VuZXJhbENvcHBlclBlcmZvcm1hbmNlIiwiRmx1a2VIb21lUGFnZSIsIkZsdWtlUHJvamVjdCIsIkZsdWtlT3BlcmF0b3JzIiwiRmx1a2VDYWJsZUlkIiwiRmx1a2VUb29scyIsIkZsdWtlUmVzdWx0IiwiRmx1a2VUZXN0Q29uZmlnIiwiRmx1a2VNZW51TGlzdCIsIkZsdWtlVGVzdGluZyIsIkZsdWtlUmVzdWx0SW5mbyIsIkZsdWtlQ29wcGVyUGVyZm9ybWFuY2UiLCJ2YXJpYW50c0dlbmVyYWwiLCJIb21lUGFnZSIsIlByb2plY3QiLCJPcGVyYXRvcnMiLCJDYWJsZUlkIiwiVG9vbHMiLCJSZXN1bHQiLCJUZXN0Q29uZmlnIiwiTWVudUxpc3QiLCJUZXN0aW5nIiwiUmVzdWx0SW5mbyIsIkNvcHBlclBlcmZvcm1hbmNlIiwidmFyaWFudHNGbHVrZSIsIm1ha2UiLCJuYW1lIiwiVmFyaWFudFdyYXBwZXIiLCJwcm9wcyIsImVzdG1vZGVsIiwicyIsInRhYmxlIiwiQ29tcCJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(pages-dir-node)/./src/components/dsxpage/index.js\n"); /***/ }), /***/ "(pages-dir-node)/./src/components/lib/CopperResultMain.js": /*!************************************************!*\ !*** ./src/components/lib/CopperResultMain.js ***! \************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; eval("__webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ CopperResultMain)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"react/jsx-dev-runtime\");\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 */ \"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _WireMapView__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./WireMapView */ \"(pages-dir-node)/./src/components/lib/WireMapView.js\");\n/* harmony import */ var _PerformanceView__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./PerformanceView */ \"(pages-dir-node)/./src/components/lib/PerformanceView.js\");\n/* harmony import */ var _DiagnosticView__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./DiagnosticView */ \"(pages-dir-node)/./src/components/lib/DiagnosticView.js\");\n/* harmony import */ var _store_displayStore__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/store/displayStore */ \"(pages-dir-node)/./src/store/displayStore.js\");\n/* harmony import */ var _store_deviceStore__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @/store/deviceStore */ \"(pages-dir-node)/./src/store/deviceStore.js\");\n/* harmony import */ var uuid__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! uuid */ \"uuid\");\nvar __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_WireMapView__WEBPACK_IMPORTED_MODULE_2__, _PerformanceView__WEBPACK_IMPORTED_MODULE_3__, _DiagnosticView__WEBPACK_IMPORTED_MODULE_4__, _store_displayStore__WEBPACK_IMPORTED_MODULE_5__, _store_deviceStore__WEBPACK_IMPORTED_MODULE_6__, uuid__WEBPACK_IMPORTED_MODULE_7__]);\n([_WireMapView__WEBPACK_IMPORTED_MODULE_2__, _PerformanceView__WEBPACK_IMPORTED_MODULE_3__, _DiagnosticView__WEBPACK_IMPORTED_MODULE_4__, _store_displayStore__WEBPACK_IMPORTED_MODULE_5__, _store_deviceStore__WEBPACK_IMPORTED_MODULE_6__, uuid__WEBPACK_IMPORTED_MODULE_7__] = __webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__);\n\n\n\n\n\n\n\n\nfunction CopperResultMain({ testResult: initialTestResult }) {\n const { navigation, navigateTo, getCurrentTestConfig } = (0,_store_displayStore__WEBPACK_IMPORTED_MODULE_5__[\"default\"])();\n const { estmodel } = (0,_store_deviceStore__WEBPACK_IMPORTED_MODULE_6__[\"default\"])();\n const [activeTab, setActiveTab] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(navigation.current.params.activeTab || '布线图');\n const [testResult, setTestResult] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(initialTestResult);\n const [resultData, setResultData] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);\n const currentConfig = getCurrentTestConfig();\n const cableType = currentConfig?.params?.cableType;\n const wireOrder = currentConfig?.params?.wireOrder;\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)({\n \"CopperResultMain.useEffect\": ()=>{\n const loadTestResult = {\n \"CopperResultMain.useEffect.loadTestResult\": async ()=>{\n if (initialTestResult.CopperWiremapResultStatus === 'fail') {\n setResultData({\n result: 'fail'\n });\n } else if (initialTestResult.CopperWiremapResultStatus === 'pass') {\n try {\n const response = await __webpack_require__(\"(pages-dir-node)/./src/store/COPPER lazy recursive ^\\\\.\\\\/.*\\\\.json$\")(`./${initialTestResult.CopperPerformanceStatus}.json`);\n const data = response.default;\n // 加载限制数据\n const limitValue = initialTestResult.testconfig?.params?.limitValue;\n let limitdata;\n try {\n // 从limitValue中提取基础名称(移除+PoE和+ALL后缀)\n const baseName = limitValue.split(' (+')[0];\n // 使用基础名称加载带有(+ALL)后缀的文件\n const limitResponse = await __webpack_require__(\"(pages-dir-node)/./src/store/COPPER lazy recursive ^\\\\.\\\\/.* \\\\(\\\\+ALL\\\\)\\\\.json$\")(`./${baseName} (+ALL).json`);\n limitdata = limitResponse;\n // 计算所有参数的余量\n const paramTitles = [\n '插入损耗',\n '回波损耗',\n 'NEXT',\n 'PS NEXT',\n 'ACR-N',\n 'PS ACR-N',\n 'ACR-F',\n 'PS ACR-F',\n 'CDNEXT',\n 'CMRL',\n 'TCL',\n 'ELTCTL'\n ];\n const dataGroupMap = {\n '插入损耗': 'Insertion Loss (dB)',\n '回波损耗': 'RL (dB)',\n 'NEXT': 'NEXT (dB)',\n 'PS NEXT': 'PS NEXT (dB)',\n 'ACR-N': 'ACR-N (dB)',\n 'PS ACR-N': 'PS ACR-N (dB)',\n 'ACR-F': 'ACR-F (dB)',\n 'PS ACR-F': 'PS ACR-F (dB)',\n 'CDNEXT': 'CDNEXT (dB)',\n 'CMRL': 'CMRL (dB)',\n 'TCL': 'TCL (dB)',\n 'ELTCTL': 'ELTCTL (dB)'\n };\n let hasNegativeMargin = false;\n // 长度判断\n if (limitdata.LENGTH && data.performance.LENGTH) {\n const lengthPairs = [\n 'PAIR12',\n 'PAIR36',\n 'PAIR45',\n 'PAIR78'\n ];\n for (const pair of lengthPairs){\n if (data.performance.LENGTH[pair] > limitdata.LENGTH) {\n hasNegativeMargin = true;\n break;\n }\n }\n }\n // 电阻判断\n if (limitdata.LOOP && data.performance.OHM?.LOOP) {\n const loopPairs = [\n 'PAIR12',\n 'PAIR36',\n 'PAIR45',\n 'PAIR78'\n ];\n for (const pair of loopPairs){\n if (data.performance.OHM.LOOP[pair] > limitdata.LOOP) {\n hasNegativeMargin = true;\n break;\n }\n }\n }\n for (const paramTitle of paramTitles){\n const dataGroup = dataGroupMap[paramTitle];\n if (!dataGroup || !data?.performance?.data?.[dataGroup] || !limitdata?.[dataGroup]) continue;\n const testData = data.performance.data[dataGroup];\n const limitValues = limitdata[dataGroup]?.['PAIRLimit (dB)'] || [];\n const getPairsByWireOrder = {\n \"CopperResultMain.useEffect.loadTestResult.getPairsByWireOrder\": ()=>{\n if (wireOrder === 'Ethernet Two-Pair' || wireOrder === 'M12-D Two-Pair') {\n return [\n 'NEXT (dB)',\n 'ACR-N (dB)'\n ].includes(dataGroup) ? [\n 'PAIR1236'\n ] : [\n 'ACR-F (dB)',\n 'CDNEXT (dB)'\n ].includes(dataGroup) ? [\n 'PAIR1236',\n 'PAIR3612'\n ] : [\n 'PAIR12',\n 'PAIR36'\n ];\n }\n // 默认返回所有线对\n return [\n 'NEXT (dB)',\n 'ACR-N (dB)'\n ].includes(dataGroup) ? [\n 'PAIR1236',\n 'PAIR1245',\n 'PAIR1278',\n 'PAIR3645',\n 'PAIR3678',\n 'PAIR4578'\n ] : [\n 'ACR-F (dB)',\n 'CDNEXT (dB)'\n ].includes(dataGroup) ? [\n 'PAIR1236',\n 'PAIR1245',\n 'PAIR1278',\n 'PAIR3612',\n 'PAIR3645',\n 'PAIR3678',\n 'PAIR4512',\n 'PAIR4535',\n 'PAIR4578',\n 'PAIR7812',\n 'PAIR7936',\n 'PAIR7845'\n ] : [\n 'PAIR12',\n 'PAIR36',\n 'PAIR45',\n 'PAIR78'\n ];\n }\n }[\"CopperResultMain.useEffect.loadTestResult.getPairsByWireOrder\"];\n const pairs = getPairsByWireOrder();\n for(let index = 0; index < limitValues.length && !hasNegativeMargin; index++){\n const limitValue = limitValues[index];\n if (limitValue === undefined || limitValue === null) break;\n for (const pair of pairs){\n const actualValue = testData[pair]?.[index];\n if (actualValue !== undefined && actualValue !== null) {\n const margin = paramTitle === '插入损耗' ? Math.abs(limitValue) - Math.abs(actualValue) : Math.abs(actualValue) - limitValue;\n if (margin < 0) {\n hasNegativeMargin = true;\n break;\n }\n }\n }\n }\n }\n data.result = hasNegativeMargin ? 'fail' : 'pass';\n setResultData(data);\n } catch (error) {\n console.error('Error calculating margins:', error);\n setResultData({\n result: 'fail'\n });\n }\n } catch (error) {\n console.error('加载测试结果失败:', error);\n setResultData({\n result: 'fail'\n });\n }\n }\n }\n }[\"CopperResultMain.useEffect.loadTestResult\"];\n loadTestResult();\n }\n }[\"CopperResultMain.useEffect\"], [\n initialTestResult\n ]);\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)({\n \"CopperResultMain.useEffect\": ()=>{\n if (resultData) {\n setTestResult({\n ...initialTestResult,\n resultdata: resultData\n });\n }\n }\n }[\"CopperResultMain.useEffect\"], [\n resultData\n ]);\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)({\n \"CopperResultMain.useEffect\": ()=>{\n navigateTo(navigation.current.name, navigation.current.view, {\n ...navigation.current.params,\n activeTab\n });\n }\n }[\"CopperResultMain.useEffect\"], [\n activeTab\n ]);\n const tabs = testResult?.CopperWiremapResultStatus === 'pass' ? testResult?.resultdata?.result === 'pass' ? [\n '布线图',\n '性能'\n ] : [\n '布线图',\n '性能',\n '诊断'\n ] : [\n '布线图'\n ];\n //console.log(testResult);\n const renderContent = ()=>{\n switch(activeTab){\n case '布线图':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full h-full flex items-center justify-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_WireMapView__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n testResult: testResult\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/CopperResultMain.js\",\n lineNumber: 161,\n columnNumber: 25\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/CopperResultMain.js\",\n lineNumber: 160,\n columnNumber: 21\n }, this);\n case '性能':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full h-full flex items-center justify-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_PerformanceView__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n testResult: testResult\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/CopperResultMain.js\",\n lineNumber: 167,\n columnNumber: 25\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/CopperResultMain.js\",\n lineNumber: 166,\n columnNumber: 21\n }, this);\n case '诊断':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full h-full flex items-center justify-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_DiagnosticView__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n testResult: testResult\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/CopperResultMain.js\",\n lineNumber: 173,\n columnNumber: 25\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/CopperResultMain.js\",\n lineNumber: 172,\n columnNumber: 21\n }, this);\n default:\n return null;\n }\n };\n return estmodel === 'general' ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full h-[490px] flex flex-col overflow-hidden\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[1/100] flex\",\n children: tabs.map((tab)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>setActiveTab(tab),\n className: `flex-1 h-full flex items-center justify-center font-bold text-lg\n ${activeTab === tab ? 'bg-gradient-to-b from-[#d5dfeb] via-[#f8f6f7] to-[#d5dfeb] text-black' : 'bg-[#132843] text-[#fffe92]'}`,\n children: tab\n }, tab, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/CopperResultMain.js\",\n lineNumber: 186,\n columnNumber: 25\n }, this))\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/CopperResultMain.js\",\n lineNumber: 184,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 bg-white\",\n children: renderContent()\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/CopperResultMain.js\",\n lineNumber: 198,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/CopperResultMain.js\",\n lineNumber: 183,\n columnNumber: 13\n }, this) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full h-[490px] flex flex-col overflow-hidden\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[1/100] flex\",\n children: tabs.map((tab)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>setActiveTab(tab),\n className: `flex-1 h-full flex items-center justify-center font-bold text-lg\n ${activeTab === tab ? 'bg-gradient-to-b from-[#b0b0b0] via-[#e0e4e0] to-[#b0b0b0] text-black' : 'bg-[#303030] text-[#fffe92]'}`,\n children: tab\n }, tab, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/CopperResultMain.js\",\n lineNumber: 206,\n columnNumber: 21\n }, this))\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/CopperResultMain.js\",\n lineNumber: 204,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 bg-white\",\n children: renderContent()\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/CopperResultMain.js\",\n lineNumber: 218,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/CopperResultMain.js\",\n lineNumber: 203,\n columnNumber: 13\n }, this);\n}\n\n__webpack_async_result__();\n} catch(e) { __webpack_async_result__(e); } });//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHBhZ2VzLWRpci1ub2RlKS8uL3NyYy9jb21wb25lbnRzL2xpYi9Db3BwZXJSZXN1bHRNYWluLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFtRDtBQUNYO0FBQ1E7QUFDRjtBQUNLO0FBQ0Y7QUFDYjtBQUVyQixTQUFTVSxpQkFBaUIsRUFBRUMsWUFBWUMsaUJBQWlCLEVBQUU7SUFDdEUsTUFBTSxFQUFFQyxVQUFVLEVBQUVDLFVBQVUsRUFBRUMsb0JBQW9CLEVBQUUsR0FBR1QsK0RBQWVBO0lBQ3hFLE1BQU0sRUFBRVUsUUFBUSxFQUFFLEdBQUdULDhEQUFjQTtJQUNuQyxNQUFNLENBQUNVLFdBQVdDLGFBQWEsR0FBR2pCLCtDQUFRQSxDQUFDWSxXQUFXTSxPQUFPLENBQUNDLE1BQU0sQ0FBQ0gsU0FBUyxJQUFJO0lBQ2xGLE1BQU0sQ0FBQ04sWUFBWVUsY0FBYyxHQUFHcEIsK0NBQVFBLENBQUNXO0lBQzdDLE1BQU0sQ0FBQ1UsWUFBWUMsY0FBYyxHQUFHdEIsK0NBQVFBLENBQUM7SUFDN0MsTUFBTXVCLGdCQUFnQlQ7SUFDdEIsTUFBTVUsWUFBWUQsZUFBZUosUUFBUUs7SUFDekMsTUFBTUMsWUFBWUYsZUFBZUosUUFBUU07SUFFekN4QixnREFBU0E7c0NBQUM7WUFDTixNQUFNeUI7NkRBQWlCO29CQUNuQixJQUFJZixrQkFBa0JnQix5QkFBeUIsS0FBSyxRQUFRO3dCQUN4REwsY0FBYzs0QkFBRU0sUUFBUTt3QkFBTztvQkFDbkMsT0FBTyxJQUFJakIsa0JBQWtCZ0IseUJBQXlCLEtBQUssUUFBUTt3QkFDL0QsSUFBSTs0QkFDQSxNQUFNRSxXQUFXLE1BQU0sNEZBQU8sR0FBZ0IsRUFBRWxCLGtCQUFrQm1CLHVCQUF1QixDQUFDLE1BQU0sQ0FBQzs0QkFDakcsTUFBTUMsT0FBT0YsU0FBU0csT0FBTzs0QkFFN0IsU0FBUzs0QkFDVCxNQUFNQyxhQUFhdEIsa0JBQWtCdUIsVUFBVSxFQUFFZixRQUFRYzs0QkFDekQsSUFBSUU7NEJBQ0os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dkQsY0FBY3lELE1BQ1YsMEVBQ0EsK0JBQStCO2tDQUV4Q0E7dUJBUElBOzs7Ozs7Ozs7OzBCQVdqQiw4REFBQ0g7Z0JBQUlDLFdBQVU7MEJBQ1ZGOzs7Ozs7Ozs7Ozs7QUFNakIiLCJzb3VyY2VzIjpbIi9vcHQvZGV2L2VzdC1kc3gvc3JjL2NvbXBvbmVudHMvbGliL0NvcHBlclJlc3VsdE1haW4uanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlLCB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgV2lyZU1hcFZpZXcgZnJvbSAnLi9XaXJlTWFwVmlldyc7XG5pbXBvcnQgUGVyZm9ybWFuY2VWaWV3IGZyb20gJy4vUGVyZm9ybWFuY2VWaWV3JztcbmltcG9ydCBEaWFnbm9zdGljVmlldyBmcm9tICcuL0RpYWdub3N0aWNWaWV3JztcbmltcG9ydCB1c2VEaXNwbGF5U3RvcmUgZnJvbSAnQC9zdG9yZS9kaXNwbGF5U3RvcmUnO1xuaW1wb3J0IHVzZURldmljZVN0b3JlIGZyb20gJ0Avc3RvcmUvZGV2aWNlU3RvcmUnO1xuaW1wb3J0IHsgdjQgYXMgdXVpZHY0IH0gZnJvbSAndXVpZCc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIENvcHBlclJlc3VsdE1haW4oeyB0ZXN0UmVzdWx0OiBpbml0aWFsVGVzdFJlc3VsdCB9KSB7XG4gICAgY29uc3QgeyBuYXZpZ2F0aW9uLCBuYXZpZ2F0ZVRvLCBnZXRDdXJyZW50VGVzdENvbmZpZyB9ID0gdXNlRGlzcGxheVN0b3JlKCk7XG4gICAgY29uc3QgeyBlc3Rtb2RlbCB9ID0gdXNlRGV2aWNlU3RvcmUoKTtcbiAgICBjb25zdCBbYWN0aXZlVGFiLCBzZXRBY3RpdmVUYWJdID0gdXNlU3RhdGUobmF2aWdhdGlvbi5jdXJyZW50LnBhcmFtcy5hY3RpdmVUYWIgfHwgJ+W4g+e6v+WbvicpO1xuICAgIGNvbnN0IFt0ZXN0UmVzdWx0LCBzZXRUZXN0UmVzdWx0XSA9IHVzZVN0YXRlKGluaXRpYWxUZXN0UmVzdWx0KTtcbiAgICBjb25zdCBbcmVzdWx0RGF0YSwgc2V0UmVzdWx0RGF0YV0gPSB1c2VTdGF0ZShudWxsKTtcbiAgICBjb25zdCBjdXJyZW50Q29uZmlnID0gZ2V0Q3VycmVudFRlc3RDb25maWcoKTtcbiAgICBjb25zdCBjYWJsZVR5cGUgPSBjdXJyZW50Q29uZmlnPy5wYXJhbXM/LmNhYmxlVHlwZTtcbiAgICBjb25zdCB3aXJlT3JkZXIgPSBjdXJyZW50Q29uZmlnPy5wYXJhbXM/LndpcmVPcmRlcjtcblxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IGxvYWRUZXN0UmVzdWx0ID0gYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgaWYgKGluaXRpYWxUZXN0UmVzdWx0LkNvcHBlcldpcmVtYXBSZXN1bHRTdGF0dXMgPT09ICdmYWlsJykge1xuICAgICAgICAgICAgICAgIHNldFJlc3VsdERhdGEoeyByZXN1bHQ6ICdmYWlsJyB9KTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaW5pdGlhbFRlc3RSZXN1bHQuQ29wcGVyV2lyZW1hcFJlc3VsdFN0YXR1cyA9PT0gJ3Bhc3MnKSB7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBpbXBvcnQoYEAvc3RvcmUvQ09QUEVSLyR7aW5pdGlhbFRlc3RSZXN1bHQuQ29wcGVyUGVyZm9ybWFuY2VTdGF0dXN9Lmpzb25gKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZGF0YSA9IHJlc3BvbnNlLmRlZmF1bHQ7XG4gICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAvLyDliqDovb3pmZDliLbmlbDmja5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbGltaXRWYWx1ZSA9IGluaXRpYWxUZXN0UmVzdWx0LnRlc3Rjb25maWc/LnBhcmFtcz8ubGltaXRWYWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGxpbWl0ZGF0YTtcbiAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIOS7jmxpbWl0VmFsdWXkuK3mj5Dlj5bln7rnoYDlkI3np7Ao56e76ZmkK1BvReWSjCtBTEzlkI7nvIApXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBiYXNlTmFtZSA9IGxpbWl0VmFsdWUuc3BsaXQoJyAoKycpWzBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8g5L2/55So5Z+656GA5ZCN56ew5Yqg6L295bim5pyJKCtBTEwp5ZCO57yA55qE5paH5Lu2XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsaW1pdFJlc3BvbnNlID0gYXdhaXQgaW1wb3J0KGBAL3N0b3JlL0NPUFBFUi8ke2Jhc2VOYW1lfSAoK0FMTCkuanNvbmApO1xuICAgICAgICAgICAgICAgICAgICAgICAgbGltaXRkYXRhID0gbGltaXRSZXNwb25zZTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8g6K6h566X5omA5pyJ5Y+C5pWw55qE5L2Z6YePXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXJhbVRpdGxlcyA9IFsn5o+S5YWl5o2f6ICXJywgJ+WbnuazouaNn+iAlycsICdORVhUJywgJ1BTIE5FWFQnLCAnQUNSLU4nLCAnUFMgQUNSLU4nLCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0FDUi1GJywgJ1BTIEFDUi1GJywgJ0NETkVYVCcsICdDTVJMJywgJ1RDTCcsICdFTFRDVEwnXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRhdGFHcm91cE1hcCA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAn5o+S5YWl5o2f6ICXJzogJ0luc2VydGlvbiBMb3NzIChkQiknLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICflm57ms6LmjZ/ogJcnOiAnUkwgKGRCKScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ05FWFQnOiAnTkVYVCAoZEIpJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnUFMgTkVYVCc6ICdQUyBORVhUIChkQiknLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdBQ1ItTic6ICdBQ1ItTiAoZEIpJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnUFMgQUNSLU4nOiAnUFMgQUNSLU4gKGRCKScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0FDUi1GJzogJ0FDUi1GIChkQiknLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdQUyBBQ1ItRic6ICdQUyBBQ1ItRiAoZEIpJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQ0RORVhUJzogJ0NETkVYVCAoZEIpJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQ01STCc6ICdDTVJMIChkQiknLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdUQ0wnOiAnVENMIChkQiknLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdFTFRDVEwnOiAnRUxUQ1RMIChkQiknXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgaGFzTmVnYXRpdmVNYXJnaW4gPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgLy8g6ZW/5bqm5Yik5patXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAobGltaXRkYXRhLkxFTkdUSCAmJiBkYXRhLnBlcmZvcm1hbmNlLkxFTkdUSCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxlbmd0aFBhaXJzID0gWydQQUlSMTInLCAnUEFJUjM2JywgJ1BBSVI0NScsICdQQUlSNzgnXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHBhaXIgb2YgbGVuZ3RoUGFpcnMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGEucGVyZm9ybWFuY2UuTEVOR1RIW3BhaXJdID4gbGltaXRkYXRhLkxFTkdUSCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzTmVnYXRpdmVNYXJnaW4gPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIOeUtemYu+WIpOaWrVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxpbWl0ZGF0YS5MT09QICYmIGRhdGEucGVyZm9ybWFuY2UuT0hNPy5MT09QKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbG9vcFBhaXJzID0gWydQQUlSMTInLCAnUEFJUjM2JywgJ1BBSVI0NScsICdQQUlSNzgnXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHBhaXIgb2YgbG9vcFBhaXJzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkYXRhLnBlcmZvcm1hbmNlLk9ITS5MT09QW3BhaXJdID4gbGltaXRkYXRhLkxPT1ApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhc05lZ2F0aXZlTWFyZ2luID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSBcbiAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHBhcmFtVGl0bGUgb2YgcGFyYW1UaXRsZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBkYXRhR3JvdXAgPSBkYXRhR3JvdXBNYXBbcGFyYW1UaXRsZV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFkYXRhR3JvdXAgfHwgIWRhdGE/LnBlcmZvcm1hbmNlPy5kYXRhPy5bZGF0YUdyb3VwXSB8fCAhbGltaXRkYXRhPy5bZGF0YUdyb3VwXSkgY29udGludWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdGVzdERhdGEgPSBkYXRhLnBlcmZvcm1hbmNlLmRhdGFbZGF0YUdyb3VwXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsaW1pdFZhbHVlcyA9IGxpbWl0ZGF0YVtkYXRhR3JvdXBdPy5bJ1BBSVJMaW1pdCAoZEIpJ10gfHwgW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2V0UGFpcnNCeVdpcmVPcmRlciA9ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHdpcmVPcmRlciA9PT0gJ0V0aGVybmV0IFR3by1QYWlyJyB8fCB3aXJlT3JkZXIgPT09ICdNMTItRCBUd28tUGFpcicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbJ05FWFQgKGRCKScsICdBQ1ItTiAoZEIpJ10uaW5jbHVkZXMoZGF0YUdyb3VwKSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWydQQUlSMTIzNiddIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJ0FDUi1GIChkQiknLCAnQ0RORVhUIChkQiknXS5pbmNsdWRlcyhkYXRhR3JvdXApID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWydQQUlSMTIzNicsICdQQUlSMzYxMiddIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWydQQUlSMTInLCAnUEFJUjM2J107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g6buY6K6k6L+U5Zue5omA5pyJ57q/5a+5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbJ05FWFQgKGRCKScsICdBQ1ItTiAoZEIpJ10uaW5jbHVkZXMoZGF0YUdyb3VwKSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJ1BBSVIxMjM2JywgJ1BBSVIxMjQ1JywgJ1BBSVIxMjc4JywgJ1BBSVIzNjQ1JywgJ1BBSVIzNjc4JywgJ1BBSVI0NTc4J10gOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWydBQ1ItRiAoZEIpJywgJ0NETkVYVCAoZEIpJ10uaW5jbHVkZXMoZGF0YUdyb3VwKSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWydQQUlSMTIzNicsICdQQUlSMTI0NScsICdQQUlSMTI3OCcsICdQQUlSMzYxMicsICdQQUlSMzY0NScsICdQQUlSMzY3OCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdQQUlSNDUxMicsICdQQUlSNDUzNScsICdQQUlSNDU3OCcsICdQQUlSNzgxMicsICdQQUlSNzkzNicsICdQQUlSNzg0NSddIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJ1BBSVIxMicsICdQQUlSMzYnLCAnUEFJUjQ1JywgJ1BBSVI3OCddO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGFpcnMgPSBnZXRQYWlyc0J5V2lyZU9yZGVyKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGxpbWl0VmFsdWVzLmxlbmd0aCAmJiAhaGFzTmVnYXRpdmVNYXJnaW47IGluZGV4KyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGltaXRWYWx1ZSA9IGxpbWl0VmFsdWVzW2luZGV4XTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxpbWl0VmFsdWUgPT09IHVuZGVmaW5lZCB8fCBsaW1pdFZhbHVlID09PSBudWxsKSBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgcGFpciBvZiBwYWlycykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYWN0dWFsVmFsdWUgPSB0ZXN0RGF0YVtwYWlyXT8uW2luZGV4XTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhY3R1YWxWYWx1ZSAhPT0gdW5kZWZpbmVkICYmIGFjdHVhbFZhbHVlICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWFyZ2luID0gcGFyYW1UaXRsZSA9PT0gJ+aPkuWFpeaNn+iAlycgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXRoLmFicyhsaW1pdFZhbHVlKSAtIE1hdGguYWJzKGFjdHVhbFZhbHVlKSA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hdGguYWJzKGFjdHVhbFZhbHVlKSAtIGxpbWl0VmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1hcmdpbiA8IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzTmVnYXRpdmVNYXJnaW4gPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEucmVzdWx0ID0gaGFzTmVnYXRpdmVNYXJnaW4gPyAnZmFpbCcgOiAncGFzcyc7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRSZXN1bHREYXRhKGRhdGEpO1xuICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgY2FsY3VsYXRpbmcgbWFyZ2luczonLCBlcnJvcik7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRSZXN1bHREYXRhKHsgcmVzdWx0OiAnZmFpbCcgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCfliqDovb3mtYvor5Xnu5PmnpzlpLHotKU6JywgZXJyb3IpO1xuICAgICAgICAgICAgICAgICAgICBzZXRSZXN1bHREYXRhKHsgcmVzdWx0OiAnZmFpbCcgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICBcbiAgICAgICAgbG9hZFRlc3RSZXN1bHQoKTtcbiAgICB9LCBbaW5pdGlhbFRlc3RSZXN1bHRdKTtcblxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGlmIChyZXN1bHREYXRhKSB7XG4gICAgICAgICAgICBzZXRUZXN0UmVzdWx0KHtcbiAgICAgICAgICAgICAgICAuLi5pbml0aWFsVGVzdFJlc3VsdCxcbiAgICAgICAgICAgICAgICByZXN1bHRkYXRhOiByZXN1bHREYXRhXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH0sIFtyZXN1bHREYXRhXSk7XG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgbmF2aWdhdGVUbyhuYXZpZ2F0aW9uLmN1cnJlbnQubmFtZSwgbmF2aWdhdGlvbi5jdXJyZW50LnZpZXcsIHsgLi4ubmF2aWdhdGlvbi5jdXJyZW50LnBhcmFtcywgYWN0aXZlVGFiIH0pO1xuICAgIH0sIFthY3RpdmVUYWJdKTtcbiAgICBjb25zdCB0YWJzID0gdGVzdFJlc3VsdD8uQ29wcGVyV2lyZW1hcFJlc3VsdFN0YXR1cyA9PT0gJ3Bhc3MnID8gKHRlc3RSZXN1bHQ/LnJlc3VsdGRhdGE/LnJlc3VsdCA9PT0gJ3Bhc3MnID8gWyfluIPnur/lm74nLCAn5oCn6IO9J10gOiBbJ+W4g+e6v+WbvicsICfmgKfog70nLCAn6K+K5patJ10pIDogWyfluIPnur/lm74nXTtcblxuICAgIC8vY29uc29sZS5sb2codGVzdFJlc3VsdCk7XG4gICAgY29uc3QgcmVuZGVyQ29udGVudCA9ICgpID0+IHtcbiAgICAgICAgc3dpdGNoIChhY3RpdmVUYWIpIHtcbiAgICAgICAgICAgIGNhc2UgJ+W4g+e6v+Wbvic6XG4gICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LWZ1bGwgaC1mdWxsIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8V2lyZU1hcFZpZXcgdGVzdFJlc3VsdD17dGVzdFJlc3VsdH0gLz5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGNhc2UgJ+aAp+iDvSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LWZ1bGwgaC1mdWxsIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8UGVyZm9ybWFuY2VWaWV3IHRlc3RSZXN1bHQ9e3Rlc3RSZXN1bHR9IC8+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICBjYXNlICfor4rmlq0nOlxuICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy1mdWxsIGgtZnVsbCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPERpYWdub3N0aWNWaWV3IHRlc3RSZXN1bHQ9e3Rlc3RSZXN1bHR9IC8+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIHJldHVybiAoXG4gICAgICAgIGVzdG1vZGVsID09PSAnZ2VuZXJhbCcgPyAoXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctZnVsbCBoLVs0OTBweF0gZmxleCBmbGV4LWNvbCBvdmVyZmxvdy1oaWRkZW5cIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImgtWzEvMTAwXSBmbGV4XCI+XG4gICAgICAgICAgICAgICAgICAgIHt0YWJzLm1hcCgodGFiKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXt0YWJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gc2V0QWN0aXZlVGFiKHRhYil9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgZmxleC0xIGgtZnVsbCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBmb250LWJvbGQgdGV4dC1sZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke2FjdGl2ZVRhYiA9PT0gdGFiIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAnYmctZ3JhZGllbnQtdG8tYiBmcm9tLVsjZDVkZmViXSB2aWEtWyNmOGY2ZjddIHRvLVsjZDVkZmViXSB0ZXh0LWJsYWNrJyBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJ2JnLVsjMTMyODQzXSB0ZXh0LVsjZmZmZTkyXSd9YH1cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7dGFifVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleC0xIGJnLXdoaXRlXCI+XG4gICAgICAgICAgICAgICAgICAgIHtyZW5kZXJDb250ZW50KCl9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKTooXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctZnVsbCBoLVs0OTBweF0gZmxleCBmbGV4LWNvbCBvdmVyZmxvdy1oaWRkZW5cIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaC1bMS8xMDBdIGZsZXhcIj5cbiAgICAgICAgICAgICAgICB7dGFicy5tYXAoKHRhYikgPT4gKFxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk9e3RhYn1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldEFjdGl2ZVRhYih0YWIpfVxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgZmxleC0xIGgtZnVsbCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBmb250LWJvbGQgdGV4dC1sZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7YWN0aXZlVGFiID09PSB0YWIgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gJ2JnLWdyYWRpZW50LXRvLWIgZnJvbS1bI2IwYjBiMF0gdmlhLVsjZTBlNGUwXSB0by1bI2IwYjBiMF0gdGV4dC1ibGFjaycgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJ2JnLVsjMzAzMDMwXSB0ZXh0LVsjZmZmZTkyXSd9YH1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAge3RhYn1cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleC0xIGJnLXdoaXRlXCI+XG4gICAgICAgICAgICAgICAge3JlbmRlckNvbnRlbnQoKX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgKVxuICAgICk7XG5cbn1cbiJdLCJuYW1lcyI6WyJSZWFjdCIsInVzZVN0YXRlIiwidXNlRWZmZWN0IiwiV2lyZU1hcFZpZXciLCJQZXJmb3JtYW5jZVZpZXciLCJEaWFnbm9zdGljVmlldyIsInVzZURpc3BsYXlTdG9yZSIsInVzZURldmljZVN0b3JlIiwidjQiLCJ1dWlkdjQiLCJDb3BwZXJSZXN1bHRNYWluIiwidGVzdFJlc3VsdCIsImluaXRpYWxUZXN0UmVzdWx0IiwibmF2aWdhdGlvbiIsIm5hdmlnYXRlVG8iLCJnZXRDdXJyZW50VGVzdENvbmZpZyIsImVzdG1vZGVsIiwiYWN0aXZlVGFiIiwic2V0QWN0aXZlVGFiIiwiY3VycmVudCIsInBhcmFtcyIsInNldFRlc3RSZXN1bHQiLCJyZXN1bHREYXRhIiwic2V0UmVzdWx0RGF0YSIsImN1cnJlbnRDb25maWciLCJjYWJsZVR5cGUiLCJ3aXJlT3JkZXIiLCJsb2FkVGVzdFJlc3VsdCIsIkNvcHBlcldpcmVtYXBSZXN1bHRTdGF0dXMiLCJyZXN1bHQiLCJyZXNwb25zZSIsIkNvcHBlclBlcmZvcm1hbmNlU3RhdHVzIiwiZGF0YSIsImRlZmF1bHQiLCJsaW1pdFZhbHVlIiwidGVzdGNvbmZpZyIsImxpbWl0ZGF0YSIsImJhc2VOYW1lIiwic3BsaXQiLCJsaW1pdFJlc3BvbnNlIiwicGFyYW1UaXRsZXMiLCJkYXRhR3JvdXBNYXAiLCJoYXNOZWdhdGl2ZU1hcmdpbiIsIkxFTkdUSCIsInBlcmZvcm1hbmNlIiwibGVuZ3RoUGFpcnMiLCJwYWlyIiwiTE9PUCIsIk9ITSIsImxvb3BQYWlycyIsInBhcmFtVGl0bGUiLCJkYXRhR3JvdXAiLCJ0ZXN0RGF0YSIsImxpbWl0VmFsdWVzIiwiZ2V0UGFpcnNCeVdpcmVPcmRlciIsImluY2x1ZGVzIiwicGFpcnMiLCJpbmRleCIsImxlbmd0aCIsInVuZGVmaW5lZCIsImFjdHVhbFZhbHVlIiwibWFyZ2luIiwiTWF0aCIsImFicyIsImVycm9yIiwiY29uc29sZSIsInJlc3VsdGRhdGEiLCJuYW1lIiwidmlldyIsInRhYnMiLCJyZW5kZXJDb250ZW50IiwiZGl2IiwiY2xhc3NOYW1lIiwibWFwIiwidGFiIiwiYnV0dG9uIiwib25DbGljayJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(pages-dir-node)/./src/components/lib/CopperResultMain.js\n"); /***/ }), /***/ "(pages-dir-node)/./src/components/lib/CurveChart.js": /*!******************************************!*\ !*** ./src/components/lib/CurveChart.js ***! \******************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; eval("__webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {\n__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_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"react/jsx-dev-runtime\");\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 */ \"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _store_deviceStore__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/store/deviceStore */ \"(pages-dir-node)/./src/store/deviceStore.js\");\n/* harmony import */ var echarts__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! echarts */ \"echarts\");\nvar __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_store_deviceStore__WEBPACK_IMPORTED_MODULE_2__, echarts__WEBPACK_IMPORTED_MODULE_3__]);\n([_store_deviceStore__WEBPACK_IMPORTED_MODULE_2__, echarts__WEBPACK_IMPORTED_MODULE_3__] = __webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__);\n\n\n\n\n// 生成OTDR曲线数据\nconst generateOTDRData = (events, wavelength)=>{\n const points = [];\n // 根据波长设置不同参数\n let samplingInterval, baseAttenuation, noiseRange, reflectionDecay;\n if (wavelength === '850') {\n samplingInterval = 0.5; // 采样间隔更密\n baseAttenuation = 3.0; // 多模850nm衰减更大\n noiseRange = 0.15; // 噪声更大\n reflectionDecay = 0.5; // 反射衰减更快\n } else if (wavelength === '1300') {\n samplingInterval = 0.6;\n baseAttenuation = 1.0; // 多模1300nm衰减适中\n noiseRange = 0.12;\n reflectionDecay = 0.45;\n } else if (wavelength === '1310') {\n samplingInterval = 0.8;\n baseAttenuation = 0.35; // 单模1310nm衰减较小\n noiseRange = 0.1;\n reflectionDecay = 0.4;\n } else {\n samplingInterval = 1.0; // 采样间隔更大\n baseAttenuation = 0.2; // 单模1550nm衰减最小\n noiseRange = 0.08; // 噪声更小\n reflectionDecay = 0.35; // 反射衰减更慢\n }\n // 获取首个和最后一个事件的距离\n const eventDistances = Object.values(events).map((event)=>event.distance);\n const minDistance = Math.min(...eventDistances) - 20; // 首个事件前20米\n const maxDistance = Math.max(...eventDistances) + 20; // 最后事件后20米\n let currentDistance = minDistance;\n let currentDB = 0;\n // 生成基础曲线数据\n while(currentDistance <= maxDistance){\n // 添加随机噪声\n const noise = (Math.random() - 0.5) * noiseRange;\n // 计算基础衰减\n const attenuation = currentDistance * baseAttenuation / 1000;\n points.push([\n currentDistance,\n currentDB - attenuation + noise\n ]);\n currentDistance += samplingInterval;\n }\n // 添加事件特征\n Object.values(events).forEach((event)=>{\n const eventIndex = Math.floor((event.distance - minDistance) / samplingInterval);\n if (eventIndex >= 0 && eventIndex < points.length) {\n if (event.type === 'Reflector' || event.type === 'Start' || event.type === 'End' || event.type === 'StartRef' || event.type === 'EndRef' || event.type === 'EndNoRef') {\n // 反射事件:添加尖峰\n const peakHeight = event.reflLoss ? -event.reflLoss : 10;\n // 前面1个点快速升高\n if (eventIndex > 0) {\n points[eventIndex - 1][1] = peakHeight / 3;\n }\n // 峰值点\n points[eventIndex][1] = peakHeight;\n // 后面20个点平滑回落,使用指数衰减函数\n for(let i = eventIndex + 1; i < Math.min(points.length, eventIndex + 20); i++){\n const distance = i - eventIndex;\n points[i][1] = peakHeight * Math.exp(-distance * reflectionDecay);\n }\n } else if (event.type === 'Splice' || event.spliceLoss) {\n // 非反射事件:添加阶跃式衰减\n const loss = event.spliceLoss || 0.2;\n for(let i = eventIndex; i < points.length; i++){\n points[i][1] -= loss;\n }\n }\n }\n });\n return points;\n};\nconst CurveChart = ({ testResult })=>{\n const { connectionStatus } = (0,_store_deviceStore__WEBPACK_IMPORTED_MODULE_2__[\"default\"])();\n const [eventData, setEventData] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);\n const [currentWavelength, setCurrentWavelength] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);\n const [wavelengthData, setWavelengthData] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)({});\n // 判断是否为多模光纤\n const isMultiMode = testResult?.testconfig?.params?.cableType.includes('OM');\n // 加载事件数据\n // 初始化echarts实例\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)({\n \"CurveChart.useEffect\": ()=>{\n const chartDom = document.getElementById('otdrChart');\n if (!chartDom) return;\n const myChart = echarts__WEBPACK_IMPORTED_MODULE_3__.init(chartDom);\n // 监听窗口大小变化\n const handleResize = {\n \"CurveChart.useEffect.handleResize\": ()=>{\n myChart.resize();\n }\n }[\"CurveChart.useEffect.handleResize\"];\n window.addEventListener('resize', handleResize);\n // 设置初始图表配置\n const option = {\n // title: {\n // text: 'OTDR曲线图',\n // left: 'center'\n // },\n // tooltip: {\n // trigger: 'axis',\n // formatter: function(params) {\n // return `距离: ${params[0].data[0].toFixed(2)}m
dB: ${params[0].data[1].toFixed(2)}`;\n // }\n // },\n grid: {\n left: '3%',\n right: '3%',\n bottom: '5%',\n top: '3%',\n containLabel: true\n },\n xAxis: {\n type: 'value',\n // name: '距离(m)',\n // nameLocation: 'middle',\n // nameGap: 30,\n min: {\n \"CurveChart.useEffect\": function(value) {\n return value.min - 20;\n }\n }[\"CurveChart.useEffect\"],\n max: {\n \"CurveChart.useEffect\": function(value) {\n return value.max + 20;\n }\n }[\"CurveChart.useEffect\"],\n axisLine: {\n show: false\n },\n splitLine: {\n show: true,\n lineStyle: {\n type: 'dashed',\n color: '#E0E0E0'\n }\n }\n },\n yAxis: {\n type: 'value',\n name: 'dB',\n nameLocation: 'middle',\n nameGap: 50,\n min: -10,\n max: 40,\n axisLine: {\n show: false\n },\n splitLine: {\n show: true,\n lineStyle: {\n type: 'dashed',\n color: '#E0E0E0'\n }\n }\n },\n series: [\n {\n type: 'line',\n data: [],\n showSymbol: false,\n lineStyle: {\n width: 1\n },\n areaStyle: {\n color: new echarts__WEBPACK_IMPORTED_MODULE_3__.graphic.LinearGradient(0, 0, 0, 1, [\n {\n offset: 0,\n color: 'rgba(58,77,233,0.8)'\n },\n {\n offset: 1,\n color: 'rgba(58,77,233,0.1)'\n }\n ])\n }\n }\n ]\n };\n myChart.setOption(option);\n return ({\n \"CurveChart.useEffect\": ()=>{\n window.removeEventListener('resize', handleResize);\n myChart.dispose();\n }\n })[\"CurveChart.useEffect\"];\n }\n }[\"CurveChart.useEffect\"], []);\n // 更新图表数据\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)({\n \"CurveChart.useEffect\": ()=>{\n const loadTraceData = {\n \"CurveChart.useEffect.loadTraceData\": async ()=>{\n try {\n const wavelength1 = isMultiMode ? '850' : '1310';\n const wavelength2 = isMultiMode ? '1300' : '1550';\n const [data1, data2] = await Promise.all([\n __webpack_require__(\"(pages-dir-node)/./src/store/FIBER lazy recursive ^\\\\.\\\\/.*\\\\/.*\\\\-dump\\\\.json$\")(`./${testResult.ofpResult}/${wavelength1}-dump.json`),\n __webpack_require__(\"(pages-dir-node)/./src/store/FIBER lazy recursive ^\\\\.\\\\/.*\\\\/.*\\\\-dump\\\\.json$\")(`./${testResult.ofpResult}/${wavelength2}-dump.json`)\n ]);\n // 根据基准设置重新创建事件数据\n const processWavelengthData = {\n \"CurveChart.useEffect.loadTraceData.processWavelengthData\": (data)=>{\n const mergedEvents = {};\n // 1. 首先添加原始事件数据\n Object.keys(data.event).forEach({\n \"CurveChart.useEffect.loadTraceData.processWavelengthData\": (eventKey)=>{\n mergedEvents[eventKey] = {\n ...data.event[eventKey]\n };\n }\n }[\"CurveChart.useEffect.loadTraceData.processWavelengthData\"]);\n // 2. 根据基准设置调整事件类型\n const lastEventKey = Object.keys(mergedEvents)[Object.keys(mergedEvents).length - 1];\n if (!testResult.ofpRefStatus) {\n // 无基准设置\n // 判断首根光纤类型\n if (connectionStatus.OFPoutRefStatus?.includes('sm-') || connectionStatus.OFPoutRefStatus?.includes('mm-')) {\n // 短跳线\n mergedEvents['event0'] = {\n type: \"Start\",\n distance: 0,\n reflLoss: -35.25\n };\n mergedEvents['event1'] = {\n type: \"Hidden\",\n distance: 2,\n reflLoss: -14.18,\n spliceLoss: null\n };\n // 调整所有其他事件的位置,增加2米\n Object.keys(mergedEvents).forEach({\n \"CurveChart.useEffect.loadTraceData.processWavelengthData\": (key)=>{\n if (key !== 'event0' && key !== 'event1') {\n mergedEvents[key] = {\n ...mergedEvents[key],\n distance: mergedEvents[key].distance + 2\n };\n }\n }\n }[\"CurveChart.useEffect.loadTraceData.processWavelengthData\"]);\n // 修改最后一个事件\n const lastEvent = mergedEvents[lastEventKey];\n mergedEvents[lastEventKey] = {\n ...lastEvent,\n type: \"End\",\n spliceLoss: null\n };\n } else if (connectionStatus.OFPoutRefStatus?.includes('smc-') || connectionStatus.OFPoutRefStatus?.includes('mmc-')) {\n // 补偿光纤\n mergedEvents['event0'] = {\n type: \"Start\",\n distance: 0,\n reflLoss: -35.25\n };\n // 调整所有其他事件的位置,增加161.15米\n Object.keys(mergedEvents).forEach({\n \"CurveChart.useEffect.loadTraceData.processWavelengthData\": (key)=>{\n if (key !== 'event0') {\n mergedEvents[key] = {\n ...mergedEvents[key],\n distance: mergedEvents[key].distance + 161.15\n };\n }\n }\n }[\"CurveChart.useEffect.loadTraceData.processWavelengthData\"]);\n // 修改最后一个事件\n const lastEvent = mergedEvents[lastEventKey];\n mergedEvents[lastEventKey] = {\n ...lastEvent,\n type: \"End\",\n spliceLoss: null\n };\n }\n // 判断最后连接的光纤类型\n if (!connectionStatus.OFPConnectedToRefStatus) {\n // 无连接,不操作\n } else if (connectionStatus.OFPConnectedToRefStatus?.includes('sm-') || connectionStatus.OFPConnectedToRefStatus?.includes('mm-')) {\n // 短跳线\n const lastEvent = mergedEvents[lastEventKey];\n // 将最后一个事件改为反射器\n mergedEvents[lastEventKey] = {\n ...lastEvent,\n type: \"Reflector\",\n spliceLoss: null\n };\n // 添加新的结束事件\n mergedEvents[`event${Object.keys(mergedEvents).length}`] = {\n type: \"End\",\n distance: lastEvent.distance + 2,\n spliceLoss: null,\n reflLoss: lastEvent.reflLoss,\n attenuation: lastEvent.attenuation\n };\n } else if (connectionStatus.OFPConnectedToRefStatus?.includes('smc-') || connectionStatus.OFPConnectedToRefStatus?.includes('mmc-')) {\n // 补偿光纤\n const lastEvent = mergedEvents[lastEventKey];\n // 将最后一个事件改为反射器\n mergedEvents[lastEventKey] = {\n ...lastEvent,\n type: \"Reflector\",\n spliceLoss: null\n };\n // 添加新的结束事件\n mergedEvents[`event${Object.keys(mergedEvents).length}`] = {\n type: \"End\",\n distance: lastEvent.distance + 161.15,\n spliceLoss: null,\n reflLoss: lastEvent.reflLoss,\n attenuation: lastEvent.attenuation\n };\n }\n } else if (testResult.ofpRefStatus === 'start') {\n // 仅前导基准\n // 判断首根光纤类型\n if (connectionStatus.OFPoutRefStatus?.includes('sm-') || connectionStatus.OFPoutRefStatus?.includes('mm-')) {\n // 短跳线\n mergedEvents['event0'] = {\n type: \"Start\",\n distance: 0,\n reflLoss: -19.44\n };\n mergedEvents['event1'] = {\n type: \"Hidden\",\n distance: 2,\n reflLoss: -33.44,\n spliceLoss: null\n };\n // 修改最后一个事件\n const lastEvent = mergedEvents[lastEventKey];\n mergedEvents[lastEventKey] = {\n ...lastEvent,\n type: \"End\",\n distance: lastEvent.distance + 2,\n spliceLoss: null\n };\n } else if (connectionStatus.OFPoutRefStatus?.includes('smc-') || connectionStatus.OFPoutRefStatus?.includes('mmc-')) {\n // 补偿光纤\n mergedEvents['event0'] = {\n type: \"StartRef\",\n distance: -161.15,\n reflLoss: -33.79\n };\n // 修改最后一个事件\n const lastEvent = mergedEvents[lastEventKey];\n mergedEvents[lastEventKey] = {\n ...lastEvent,\n type: \"End\",\n distance: lastEvent.distance + 2,\n spliceLoss: null\n };\n }\n // 判断最后连接的光纤类型\n if (!connectionStatus.OFPConnectedToRefStatus) {\n // 无连接,不操作\n } else if (connectionStatus.OFPConnectedToRefStatus?.includes('sm-') || connectionStatus.OFPConnectedToRefStatus?.includes('mm-')) {\n // 短跳线\n const lastEvent = mergedEvents[lastEventKey];\n // 将最后一个事件改为反射器\n mergedEvents[lastEventKey] = {\n ...lastEvent,\n type: \"Reflector\",\n spliceLoss: null\n };\n // 添加新的结束事件\n mergedEvents[`event${Object.keys(mergedEvents).length}`] = {\n type: \"End\",\n distance: lastEvent.distance + 2,\n spliceLoss: null,\n reflLoss: lastEvent.reflLoss,\n attenuation: lastEvent.attenuation\n };\n } else if (connectionStatus.OFPConnectedToRefStatus?.includes('smc-') || connectionStatus.OFPConnectedToRefStatus?.includes('mmc-')) {\n // 补偿光纤\n const lastEvent = mergedEvents[lastEventKey];\n // 将最后一个事件改为反射器\n mergedEvents[lastEventKey] = {\n ...lastEvent,\n type: \"Reflector\",\n spliceLoss: 0.1\n };\n // 添加新的结束事件\n mergedEvents[`event${Object.keys(mergedEvents).length}`] = {\n type: \"End\",\n distance: lastEvent.distance + 161.15,\n spliceLoss: null,\n reflLoss: lastEvent.reflLoss,\n attenuation: lastEvent.attenuation\n };\n }\n } else if (testResult.ofpRefStatus === 'end') {\n // 前导和末导基准\n // 判断首根光纤类型\n if (connectionStatus.OFPoutRefStatus?.includes('sm-') || connectionStatus.OFPoutRefStatus?.includes('mm-')) {\n // 短跳线\n mergedEvents['event0'] = {\n type: \"Start\",\n distance: 0,\n reflLoss: -19.44\n };\n mergedEvents['event1'] = {\n type: \"Hidden\",\n distance: 2,\n reflLoss: -33.44,\n spliceLoss: null\n };\n // 调整所有其他事件的位置,增加2米\n Object.keys(mergedEvents).forEach({\n \"CurveChart.useEffect.loadTraceData.processWavelengthData\": (key)=>{\n if (key !== 'event0' && key !== 'event1') {\n mergedEvents[key] = {\n ...mergedEvents[key],\n distance: mergedEvents[key].distance + 2\n };\n }\n }\n }[\"CurveChart.useEffect.loadTraceData.processWavelengthData\"]);\n // 修改最后一个事件\n const lastEvent = mergedEvents[lastEventKey];\n mergedEvents[lastEventKey] = {\n ...lastEvent,\n type: \"End\",\n distance: lastEvent.distance + 2,\n spliceLoss: null\n };\n } else if (connectionStatus.OFPoutRefStatus?.includes('smc-') || connectionStatus.OFPoutRefStatus?.includes('mmc-')) {\n // 补偿光纤\n mergedEvents['event0'] = {\n type: \"StartRef\",\n distance: -161.15,\n reflLoss: -33.79\n };\n // 修改最后一个事件\n const lastEvent = mergedEvents[lastEventKey];\n mergedEvents[lastEventKey] = {\n ...lastEvent,\n type: \"End\",\n distance: lastEvent.distance + 2,\n spliceLoss: null\n };\n }\n // 判断最后连接的光纤类型\n if (!connectionStatus.OFPConnectedToRefStatus) {\n // 无连接\n const lastEvent = mergedEvents[lastEventKey];\n mergedEvents[lastEventKey] = {\n ...lastEvent,\n type: \"EndNoRef\",\n spliceLoss: null\n };\n } else if (connectionStatus.OFPConnectedToRefStatus?.includes('sm-') || connectionStatus.OFPConnectedToRefStatus?.includes('mm-')) {\n // 短跳线\n const lastEvent = mergedEvents[lastEventKey];\n // 将最后一个事件改为反射器\n mergedEvents[lastEventKey] = {\n ...lastEvent,\n type: \"Reflector\",\n spliceLoss: null\n };\n // 添加新的结束事件\n mergedEvents[`event${Object.keys(mergedEvents).length}`] = {\n type: \"End\",\n distance: lastEvent.distance + 2,\n spliceLoss: null,\n reflLoss: lastEvent.reflLoss,\n attenuation: lastEvent.attenuation\n };\n } else if (connectionStatus.OFPConnectedToRefStatus?.includes('smc-') || connectionStatus.OFPConnectedToRefStatus?.includes('mmc-')) {\n // 补偿光纤\n const lastEvent = mergedEvents[lastEventKey];\n // 将最后一个事件改为反射器\n mergedEvents[lastEventKey] = {\n ...lastEvent,\n type: \"Reflector\",\n spliceLoss: null\n };\n // 添加末尾补偿事件\n mergedEvents[`event${Object.keys(mergedEvents).length}`] = {\n type: \"EndRef\",\n distance: lastEvent.distance + 161.15,\n reflLoss: -28.54\n };\n }\n }\n // 更新summary信息\n const eventKeys = Object.keys(mergedEvents).sort({\n \"CurveChart.useEffect.loadTraceData.processWavelengthData.eventKeys\": (a, b)=>{\n const numA = parseInt(a.replace('event', ''));\n const numB = parseInt(b.replace('event', ''));\n return numA - numB;\n }\n }[\"CurveChart.useEffect.loadTraceData.processWavelengthData.eventKeys\"]);\n const summarylastEventKey = eventKeys[eventKeys.length - 1];\n const lastEvent = mergedEvents[summarylastEventKey];\n // 计算总损耗\n let totalLoss = null;\n const allSpliceLossNull = Object.values(mergedEvents).every({\n \"CurveChart.useEffect.loadTraceData.processWavelengthData.allSpliceLossNull\": (event)=>event.spliceLoss === null || event.spliceLoss === undefined\n }[\"CurveChart.useEffect.loadTraceData.processWavelengthData.allSpliceLossNull\"]);\n if (!allSpliceLossNull) {\n totalLoss = Object.values(mergedEvents).reduce({\n \"CurveChart.useEffect.loadTraceData.processWavelengthData\": (sum, event)=>{\n const loss = event.spliceLoss;\n if (loss === null || loss === undefined) return sum;\n return sum + loss;\n }\n }[\"CurveChart.useEffect.loadTraceData.processWavelengthData\"], 0);\n }\n // 获取正确的distance值\n let finalDistance = lastEvent.distance;\n if (testResult.ofpRefStatus === 'end' && (connectionStatus.OFPConnectedToRefStatus?.includes('smc-') || connectionStatus.OFPConnectedToRefStatus?.includes('mmc-'))) {\n // 如果是末导基准且连接了补偿光纤,使用倒数第二个事件的distance\n const secondLastEventKey = eventKeys[eventKeys.length - 2];\n const secondLastEvent = mergedEvents[secondLastEventKey];\n finalDistance = secondLastEvent.distance;\n }\n const updatedSummary = {\n ...data1.Summary,\n totalDistance: finalDistance,\n totalLoss: totalLoss\n };\n return {\n events: mergedEvents,\n summary: updatedSummary\n };\n }\n }[\"CurveChart.useEffect.loadTraceData.processWavelengthData\"];\n const processedData1 = processWavelengthData(data1);\n const processedData2 = processWavelengthData(data2);\n setWavelengthData({\n [wavelength1]: processedData1,\n [wavelength2]: processedData2\n });\n setCurrentWavelength(wavelength1);\n setEventData(processedData1);\n // 获取当前波长的事件数据\n const currentEvents = processedData1.events;\n // 生成OTDR曲线数据,不再传入 totalDistance 参数,让 generateOTDRData 自己计算范围\n const otdrData = generateOTDRData(currentEvents);\n // 更新echarts图表\n const chartDom = document.getElementById('otdrChart');\n if (!chartDom) return;\n const myChart = echarts__WEBPACK_IMPORTED_MODULE_3__.getInstanceByDom(chartDom);\n if (myChart) {\n // 从事件数据中获取距离范围\n const eventDistances = Object.values(currentEvents).map({\n \"CurveChart.useEffect.loadTraceData.eventDistances\": (event)=>event.distance\n }[\"CurveChart.useEffect.loadTraceData.eventDistances\"]);\n const minDistance = Math.min(...eventDistances) - 20; // 首个事件前20米\n const maxDistance = Math.max(...eventDistances) + 20; // 最后事件后20米\n myChart.setOption({\n xAxis: {\n min: minDistance,\n max: maxDistance\n },\n series: [\n {\n data: otdrData\n }\n ]\n });\n }\n } catch (error) {\n console.error('Failed to load trace data:', error);\n }\n }\n }[\"CurveChart.useEffect.loadTraceData\"];\n loadTraceData();\n }\n }[\"CurveChart.useEffect\"], [\n testResult\n ]);\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full h-full flex flex-col bg-white p-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1\",\n id: \"otdrChart\",\n style: {\n width: '100%',\n height: '100%'\n }\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/CurveChart.js\",\n lineNumber: 548,\n columnNumber: 13\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[10%] flex items-center justify-center space-x-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>{\n const wavelengths = Object.keys(wavelengthData);\n const currentIndex = wavelengths.indexOf(currentWavelength);\n const prevWavelength = wavelengths[(currentIndex - 1 + wavelengths.length) % wavelengths.length];\n setCurrentWavelength(prevWavelength);\n const prevData = wavelengthData[prevWavelength];\n setEventData(prevData);\n // 重新生成OTDR曲线数据\n const otdrData = generateOTDRData(prevData.events, prevWavelength);\n // 更新echarts图表\n const chartDom = document.getElementById('otdrChart');\n if (!chartDom) return;\n const myChart = echarts__WEBPACK_IMPORTED_MODULE_3__.getInstanceByDom(chartDom);\n if (myChart) {\n // 从事件数据中获取距离范围\n const eventDistances = Object.values(prevData.events).map((event)=>event.distance);\n const minDistance = Math.min(...eventDistances) - 20;\n const maxDistance = Math.max(...eventDistances) + 20;\n myChart.setOption({\n xAxis: {\n min: minDistance,\n max: maxDistance\n },\n series: [\n {\n data: otdrData\n }\n ]\n });\n }\n },\n className: \"p-2 rounded-full bg-gray-300 hover:bg-gray-400\",\n children: \"◀\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/CurveChart.js\",\n lineNumber: 552,\n columnNumber: 17\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-lg font-semibold\",\n children: [\n currentWavelength,\n \"nm\"\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/CurveChart.js\",\n lineNumber: 590,\n columnNumber: 17\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>{\n const wavelengths = Object.keys(wavelengthData);\n const currentIndex = wavelengths.indexOf(currentWavelength);\n const nextWavelength = wavelengths[(currentIndex + 1) % wavelengths.length];\n setCurrentWavelength(nextWavelength);\n const nextData = wavelengthData[nextWavelength];\n setEventData(nextData);\n // 重新生成OTDR曲线数据\n const otdrData = generateOTDRData(nextData.events, nextWavelength);\n // 更新echarts图表\n const chartDom = document.getElementById('otdrChart');\n if (!chartDom) return;\n const myChart = echarts__WEBPACK_IMPORTED_MODULE_3__.getInstanceByDom(chartDom);\n if (myChart) {\n // 从事件数据中获取距离范围\n const eventDistances = Object.values(nextData.events).map((event)=>event.distance);\n const minDistance = Math.min(...eventDistances) - 20;\n const maxDistance = Math.max(...eventDistances) + 20;\n myChart.setOption({\n xAxis: {\n min: minDistance,\n max: maxDistance\n },\n series: [\n {\n data: otdrData\n }\n ]\n });\n }\n },\n className: \"p-2 rounded-full bg-gray-300 hover:bg-gray-400\",\n children: \"▶\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/CurveChart.js\",\n lineNumber: 591,\n columnNumber: 17\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/CurveChart.js\",\n lineNumber: 551,\n columnNumber: 13\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/CurveChart.js\",\n lineNumber: 547,\n columnNumber: 9\n }, undefined);\n};\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (CurveChart);\n\n__webpack_async_result__();\n} catch(e) { __webpack_async_result__(e); } });//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHBhZ2VzLWRpci1ub2RlKS8uL3NyYy9jb21wb25lbnRzL2xpYi9DdXJ2ZUNoYXJ0LmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7O0FBQW1EO0FBQ0Y7QUFDZDtBQUVuQyxhQUFhO0FBQ2IsTUFBTUssbUJBQW1CLENBQUNDLFFBQVFDO0lBQzlCLE1BQU1DLFNBQVMsRUFBRTtJQUVqQixhQUFhO0lBQ2IsSUFBSUMsa0JBQWtCQyxpQkFBaUJDLFlBQVlDO0lBQ25ELElBQUlMLGVBQWUsT0FBTztRQUN0QkUsbUJBQW1CLEtBQU0sU0FBUztRQUNsQ0Msa0JBQWtCLEtBQU8sY0FBYztRQUN2Q0MsYUFBYSxNQUFZLE9BQU87UUFDaENDLGtCQUFrQixLQUFPLFNBQVM7SUFDdEMsT0FBTyxJQUFJTCxlQUFlLFFBQVE7UUFDOUJFLG1CQUFtQjtRQUNuQkMsa0JBQWtCLEtBQU8sZUFBZTtRQUN4Q0MsYUFBYTtRQUNiQyxrQkFBa0I7SUFDdEIsT0FBTyxJQUFJTCxlQUFlLFFBQVE7UUFDOUJFLG1CQUFtQjtRQUNuQkMsa0JBQWtCLE1BQU8sZUFBZTtRQUN4Q0MsYUFBYTtRQUNiQyxrQkFBa0I7SUFDdEIsT0FBTztRQUNISCxtQkFBbUIsS0FBTSxTQUFTO1FBQ2xDQyxrQkFBa0IsS0FBTyxlQUFlO1FBQ3hDQyxhQUFhLE1BQVksT0FBTztRQUNoQ0Msa0JBQWtCLE1BQU8sU0FBUztJQUN0QztJQUVBLGlCQUFpQjtJQUNqQixNQUFNQyxpQkFBaUJDLE9BQU9DLE1BQU0sQ0FBQ1QsUUFBUVUsR0FBRyxDQUFDQyxDQUFBQSxRQUFTQSxNQUFNQyxRQUFRO0lBQ3hFLE1BQU1DLGNBQWNDLEtBQUtDLEdBQUcsSUFBSVIsa0JBQWtCLElBQUksV0FBVztJQUNqRSxNQUFNUyxjQUFjRixLQUFLRyxHQUFHLElBQUlWLGtCQUFrQixJQUFJLFdBQVc7SUFFakUsSUFBSVcsa0JBQWtCTDtJQUN0QixJQUFJTSxZQUFZO0lBRWhCLFdBQVc7SUFDWCxNQUFPRCxtQkFBbUJGLFlBQWE7UUFDbkMs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LFVBQVU7NEJBRWYsTUFBTUcsVUFBVXRELHFEQUF3QixDQUFDbUQ7NEJBQ3pDLElBQUlHLFNBQVM7Z0NBQ1QsZUFBZTtnQ0FDZixNQUFNN0MsaUJBQWlCQyxPQUFPQyxNQUFNLENBQUMySSxTQUFTcEosTUFBTSxFQUFFVSxHQUFHLENBQUNDLENBQUFBLFFBQVNBLE1BQU1DLFFBQVE7Z0NBQ2pGLE1BQU1DLGNBQWNDLEtBQUtDLEdBQUcsSUFBSVIsa0JBQWtCO2dDQUNsRCxNQUFNUyxjQUFjRixLQUFLRyxHQUFHLElBQUlWLGtCQUFrQjtnQ0FFbEQ2QyxRQUFRZ0MsU0FBUyxDQUFDO29DQUNkbkIsT0FBTzt3Q0FDSGxELEtBQUtGO3dDQUNMSSxLQUFLRDtvQ0FDVDtvQ0FDQTRELFFBQVE7d0NBQUM7NENBQ0xDLE1BQU1xRDt3Q0FDVjtxQ0FBRTtnQ0FDTjs0QkFDSjt3QkFDSjt3QkFDQUssV0FBVTtrQ0FDYjs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBTWpCO0FBRUEsaUVBQWVwRyxVQUFVQSxFQUFDIiwic291cmNlcyI6WyIvb3B0L2Rldi9lc3QtZHN4L3NyYy9jb21wb25lbnRzL2xpYi9DdXJ2ZUNoYXJ0LmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xyXG5pbXBvcnQgdXNlRGV2aWNlU3RvcmUgZnJvbSAnQC9zdG9yZS9kZXZpY2VTdG9yZSc7XHJcbmltcG9ydCAqIGFzIGVjaGFydHMgZnJvbSAnZWNoYXJ0cyc7XHJcblxyXG4vLyDnlJ/miJBPVERS5puy57q/5pWw5o2uXHJcbmNvbnN0IGdlbmVyYXRlT1REUkRhdGEgPSAoZXZlbnRzLCB3YXZlbGVuZ3RoKSA9PiB7XHJcbiAgICBjb25zdCBwb2ludHMgPSBbXTtcclxuICAgIFxyXG4gICAgLy8g5qC55o2u5rOi6ZW/6K6+572u5LiN5ZCM5Y+C5pWwXHJcbiAgICBsZXQgc2FtcGxpbmdJbnRlcnZhbCwgYmFzZUF0dGVudWF0aW9uLCBub2lzZVJhbmdlLCByZWZsZWN0aW9uRGVjYXk7XHJcbiAgICBpZiAod2F2ZWxlbmd0aCA9PT0gJzg1MCcpIHtcclxuICAgICAgICBzYW1wbGluZ0ludGVydmFsID0gMC41OyAgLy8g6YeH5qC36Ze06ZqU5pu05a+GXHJcbiAgICAgICAgYmFzZUF0dGVudWF0aW9uID0gMy4wOyAgIC8vIOWkmuaooTg1MG5t6KGw5YeP5pu05aSnXHJcbiAgICAgICAgbm9pc2VSYW5nZSA9IDAuMTU7ICAgICAgIC8vIOWZquWjsOabtOWkp1xyXG4gICAgICAgIHJlZmxlY3Rpb25EZWNheSA9IDAuNTsgICAvLyDlj43lsIToobDlh4/mm7Tlv6tcclxuICAgIH0gZWxzZSBpZiAod2F2ZWxlbmd0aCA9PT0gJzEzMDAnKSB7XHJcbiAgICAgICAgc2FtcGxpbmdJbnRlcnZhbCA9IDAuNjtcclxuICAgICAgICBiYXNlQXR0ZW51YXRpb24gPSAxLjA7ICAgLy8g5aSa5qihMTMwMG5t6KGw5YeP6YCC5LitXHJcbiAgICAgICAgbm9pc2VSYW5nZSA9IDAuMTI7XHJcbiAgICAgICAgcmVmbGVjdGlvbkRlY2F5ID0gMC40NTtcclxuICAgIH0gZWxzZSBpZiAod2F2ZWxlbmd0aCA9PT0gJzEzMTAnKSB7XHJcbiAgICAgICAgc2FtcGxpbmdJbnRlcnZhbCA9IDAuODtcclxuICAgICAgICBiYXNlQXR0ZW51YXRpb24gPSAwLjM1OyAgLy8g5Y2V5qihMTMxMG5t6KGw5YeP6L6D5bCPXHJcbiAgICAgICAgbm9pc2VSYW5nZSA9IDAuMTtcclxuICAgICAgICByZWZsZWN0aW9uRGVjYXkgPSAwLjQ7XHJcbiAgICB9IGVsc2UgeyAvLyAxNTUwbm1cclxuICAgICAgICBzYW1wbGluZ0ludGVydmFsID0gMS4wOyAgLy8g6YeH5qC36Ze06ZqU5pu05aSnXHJcbiAgICAgICAgYmFzZUF0dGVudWF0aW9uID0gMC4yOyAgIC8vIOWNleaooTE1NTBubeihsOWHj+acgOWwj1xyXG4gICAgICAgIG5vaXNlUmFuZ2UgPSAwLjA4OyAgICAgICAvLyDlmarlo7Dmm7TlsI9cclxuICAgICAgICByZWZsZWN0aW9uRGVjYXkgPSAwLjM1OyAgLy8g5Y+N5bCE6KGw5YeP5pu05oWiXHJcbiAgICB9XHJcbiAgICBcclxuICAgIC8vIOiOt+WPlummluS4quWSjOacgOWQjuS4gOS4quS6i+S7tueahOi3neemu1xyXG4gICAgY29uc3QgZXZlbnREaXN0YW5jZXMgPSBPYmplY3QudmFsdWVzKGV2ZW50cykubWFwKGV2ZW50ID0+IGV2ZW50LmRpc3RhbmNlKTtcclxuICAgIGNvbnN0IG1pbkRpc3RhbmNlID0gTWF0aC5taW4oLi4uZXZlbnREaXN0YW5jZXMpIC0gMjA7IC8vIOmmluS4quS6i+S7tuWJjTIw57GzXHJcbiAgICBjb25zdCBtYXhEaXN0YW5jZSA9IE1hdGgubWF4KC4uLmV2ZW50RGlzdGFuY2VzKSArIDIwOyAvLyDmnIDlkI7kuovku7blkI4yMOexs1xyXG4gICAgXHJcbiAgICBsZXQgY3VycmVudERpc3RhbmNlID0gbWluRGlzdGFuY2U7XHJcbiAgICBsZXQgY3VycmVudERCID0gMDtcclxuXHJcbiAgICAvLyDnlJ/miJDln7rnoYDmm7Lnur/mlbDmja5cclxuICAgIHdoaWxlIChjdXJyZW50RGlzdGFuY2UgPD0gbWF4RGlzdGFuY2UpIHtcclxuICAgICAgICAvLyDmt7vliqDpmo/mnLrlmarlo7BcclxuICAgICAgICBjb25zdCBub2lzZSA9IChNYXRoLnJhbmRvbSgpIC0gMC41KSAqIG5vaXNlUmFuZ2U7XHJcbiAgICAgICAgLy8g6K6h566X5Z+656GA6KGw5YePXHJcbiAgICAgICAgY29uc3QgYXR0ZW51YXRpb24gPSAoY3VycmVudERpc3RhbmNlICogYmFzZUF0dGVudWF0aW9uKSAvIDEwMDA7XHJcbiAgICAgICAgcG9pbnRzLnB1c2goW2N1cnJlbnREaXN0YW5jZSwgY3VycmVudERCIC0gYXR0ZW51YXRpb24gKyBub2lzZV0pO1xyXG4gICAgICAgIGN1cnJlbnREaXN0YW5jZSArPSBzYW1wbGluZ0ludGVydmFsO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIOa3u+WKoOS6i+S7tueJueW+gVxyXG4gICAgT2JqZWN0LnZhbHVlcyhldmVudHMpLmZvckVhY2goZXZlbnQgPT4ge1xyXG4gICAgICAgIGNvbnN0IGV2ZW50SW5kZXggPSBNYXRoLmZsb29yKChldmVudC5kaXN0YW5jZSAtIG1pbkRpc3RhbmNlKSAvIHNhbXBsaW5nSW50ZXJ2YWwpO1xyXG4gICAgICAgIGlmIChldmVudEluZGV4ID49IDAgJiYgZXZlbnRJbmRleCA8IHBvaW50cy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgaWYgKGV2ZW50LnR5cGUgPT09ICdSZWZsZWN0b3InIHx8IGV2ZW50LnR5cGUgPT09ICdTdGFydCcgfHwgZXZlbnQudHlwZSA9PT0gJ0VuZCcgfHwgXHJcbiAgICAgICAgICAgICAgICBldmVudC50eXBlID09PSAnU3RhcnRSZWYnIHx8IGV2ZW50LnR5cGUgPT09ICdFbmRSZWYnfHwgZXZlbnQudHlwZSA9PT0gJ0VuZE5vUmVmJykge1xyXG4gICAgICAgICAgICAgICAgLy8g5Y+N5bCE5LqL5Lu277ya5re75Yqg5bCW5bOwXHJcbiAgICAgICAgICAgICAgICBjb25zdCBwZWFrSGVpZ2h0ID0gZXZlbnQucmVmbExvc3MgPyAtZXZlbnQucmVmbExvc3MgOiAxMDtcclxuICAgICAgICAgICAgICAgIC8vIOWJjemdojHkuKrngrnlv6vpgJ/ljYfpq5hcclxuICAgICAgICAgICAgICAgIGlmIChldmVudEluZGV4ID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHBvaW50c1tldmVudEluZGV4IC0gMV1bMV0gPSBwZWFrSGVpZ2h0IC8gMztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIC8vIOWzsOWAvOeCuVxyXG4gICAgICAgICAgICAgICAgcG9pbnRzW2V2ZW50SW5kZXhdWzFdID0gcGVha0hlaWdodDtcclxuICAgICAgICAgICAgICAgIC8vIOWQjumdojIw5Liq54K55bmz5ruR5Zue6JC977yM5L2/55So5oyH5pWw6KGw5YeP5Ye95pWwXHJcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gZXZlbnRJbmRleCArIDE7IGkgPCBNYXRoLm1pbihwb2ludHMubGVuZ3RoLCBldmVudEluZGV4ICsgMjApOyBpKyspIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBkaXN0YW5jZSA9IGkgLSBldmVudEluZGV4O1xyXG4gICAgICAgICAgICAgICAgICAgIHBvaW50c1tpXVsxXSA9IHBlYWtIZWlnaHQgKiBNYXRoLmV4cCgtZGlzdGFuY2UgKiByZWZsZWN0aW9uRGVjYXkpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGV2ZW50LnR5cGUgPT09ICdTcGxpY2UnIHx8IGV2ZW50LnNwbGljZUxvc3MpIHtcclxuICAgICAgICAgICAgICAgIC8vIOmdnuWPjeWwhOS6i+S7tu+8mua3u+WKoOmYtui3g+W8j+ihsOWHj1xyXG4gICAgICAgICAgICAgICAgY29uc3QgbG9zcyA9IGV2ZW50LnNwbGljZUxvc3MgfHwgMC4yO1xyXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IGV2ZW50SW5kZXg7IGkgPCBwb2ludHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgICAgICBwb2ludHNbaV1bMV0gLT0gbG9zcztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiBwb2ludHM7XHJcbn07XHJcblxyXG5cclxuY29uc3QgQ3VydmVDaGFydCA9ICh7IHRlc3RSZXN1bHQgfSkgPT4ge1xyXG4gICAgY29uc3QgeyBjb25uZWN0aW9uU3RhdHVzIH0gPSB1c2VEZXZpY2VTdG9yZSgpO1xyXG4gICAgY29uc3QgW2V2ZW50RGF0YSwgc2V0RXZlbnREYXRhXSA9IHVzZVN0YXRlKG51bGwpO1xyXG4gICAgY29uc3QgW2N1cnJlbnRXYXZlbGVuZ3RoLCBzZXRDdXJyZW50V2F2ZWxlbmd0aF0gPSB1c2VTdGF0ZShudWxsKTtcclxuICAgIGNvbnN0IFt3YXZlbGVuZ3RoRGF0YSwgc2V0V2F2ZWxlbmd0aERhdGFdID0gdXNlU3RhdGUoe30pO1xyXG5cclxuICAgIC8vIOWIpOaWreaYr+WQpuS4uuWkmuaooeWFiee6pFxyXG4gICAgY29uc3QgaXNNdWx0aU1vZGUgPSB0ZXN0UmVzdWx0Py50ZXN0Y29uZmlnPy5wYXJhbXM/LmNhYmxlVHlwZS5pbmNsdWRlcygnT00nKTtcclxuXHJcbiAgICAvLyDliqDovb3kuovku7bmlbDmja5cclxuICAgIC8vIOWIneWni+WMlmVjaGFydHPlrp7kvotcclxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XHJcbiAgICAgICAgY29uc3QgY2hhcnREb20gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnb3RkckNoYXJ0Jyk7XHJcbiAgICAgICAgaWYgKCFjaGFydERvbSkgcmV0dXJuO1xyXG5cclxuICAgICAgICBjb25zdCBteUNoYXJ0ID0gZWNoYXJ0cy5pbml0KGNoYXJ0RG9tKTtcclxuXHJcbiAgICAgICAgLy8g55uR5ZCs56qX5Y+j5aSn5bCP5Y+Y5YyWXHJcbiAgICAgICAgY29uc3QgaGFuZGxlUmVzaXplID0gKCkgPT4ge1xyXG4gICAgICAgICAgICBteUNoYXJ0LnJlc2l6ZSgpO1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIGhhbmRsZVJlc2l6ZSk7XHJcblxyXG4gICAgICAgIC8vIOiuvue9ruWIneWni+WbvuihqOmFjee9rlxyXG4gICAgICAgIGNvbnN0IG9wdGlvbiA9IHtcclxuICAgICAgICAgICAgLy8gdGl0bGU6IHtcclxuICAgICAgICAgICAgLy8gICAgIHRleHQ6ICdPVERS5puy57q/5Zu+JyxcclxuICAgICAgICAgICAgLy8gICAgIGxlZnQ6ICdjZW50ZXInXHJcbiAgICAgICAgICAgIC8vIH0sXHJcbiAgICAgICAgICAgIC8vIHRvb2x0aXA6IHtcclxuICAgICAgICAgICAgLy8gICAgIHRyaWdnZXI6ICdheGlzJyxcclxuICAgICAgICAgICAgLy8gICAgIGZvcm1hdHRlcjogZnVuY3Rpb24ocGFyYW1zKSB7XHJcbiAgICAgICAgICAgIC8vICAgICAgICAgcmV0dXJuIGDot53nprs6ICR7cGFyYW1zWzBdLmRhdGFbMF0udG9GaXhlZCgyKX1tPGJyLz5kQjogJHtwYXJhbXNbMF0uZGF0YVsxXS50b0ZpeGVkKDIpfWA7XHJcbiAgICAgICAgICAgIC8vICAgICB9XHJcbiAgICAgICAgICAgIC8vIH0sXHJcbiAgICAgICAgICAgIGdyaWQ6IHtcclxuICAgICAgICAgICAgICAgIGxlZnQ6ICczJScsXHJcbiAgICAgICAgICAgICAgICByaWdodDogJzMlJyxcclxuICAgICAgICAgICAgICAgIGJvdHRvbTogJzUlJyxcclxuICAgICAgICAgICAgICAgIHRvcDogJzMlJyxcclxuICAgICAgICAgICAgICAgIGNvbnRhaW5MYWJlbDogdHJ1ZVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB4QXhpczoge1xyXG4gICAgICAgICAgICAgICAgdHlwZTogJ3ZhbHVlJyxcclxuICAgICAgICAgICAgICAgIC8vIG5hbWU6ICfot53nprsobSknLFxyXG4gICAgICAgICAgICAgICAgLy8gbmFtZUxvY2F0aW9uOiAnbWlkZGxlJyxcclxuICAgICAgICAgICAgICAgIC8vIG5hbWVHYXA6IDMwLFxyXG4gICAgICAgICAgICAgICAgbWluOiBmdW5jdGlvbih2YWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZS5taW4gLSAyMDtcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBtYXg6IGZ1bmN0aW9uKHZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlLm1heCArIDIwO1xyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGF4aXNMaW5lOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgc2hvdzogZmFsc2VcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBzcGxpdExpbmU6IHtcclxuICAgICAgICAgICAgICAgICAgICBzaG93OiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgICAgIGxpbmVTdHlsZToge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnZGFzaGVkJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6ICcjRTBFMEUwJ1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgeUF4aXM6IHtcclxuICAgICAgICAgICAgICAgIHR5cGU6ICd2YWx1ZScsXHJcbiAgICAgICAgICAgICAgICBuYW1lOiAnZEInLFxyXG4gICAgICAgICAgICAgICAgbmFtZUxvY2F0aW9uOiAnbWlkZGxlJyxcclxuICAgICAgICAgICAgICAgIG5hbWVHYXA6IDUwLFxyXG4gICAgICAgICAgICAgICAgbWluOiAtMTAsXHJcbiAgICAgICAgICAgICAgICBtYXg6IDQwLFxyXG4gICAgICAgICAgICAgICAgYXhpc0xpbmU6IHtcclxuICAgICAgICAgICAgICAgICAgICBzaG93OiBmYWxzZVxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIHNwbGl0TGluZToge1xyXG4gICAgICAgICAgICAgICAgICAgIHNob3c6IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgICAgbGluZVN0eWxlOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdkYXNoZWQnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogJyNFMEUwRTAnXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBzZXJpZXM6IFt7XHJcbiAgICAgICAgICAgICAgICB0eXBlOiAnbGluZScsXHJcbiAgICAgICAgICAgICAgICBkYXRhOiBbXSxcclxuICAgICAgICAgICAgICAgIHNob3dTeW1ib2w6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgbGluZVN0eWxlOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDFcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBhcmVhU3R5bGU6IHtcclxuICAgICAgICAgICAgICAgICAgICBjb2xvcjogbmV3IGVjaGFydHMuZ3JhcGhpYy5MaW5lYXJHcmFkaWVudCgwLCAwLCAwLCAxLCBbXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldDogMCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiAncmdiYSg1OCw3NywyMzMsMC44KSdcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0OiAxLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6ICdyZ2JhKDU4LDc3LDIzMywwLjEpJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgXSlcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfV1cclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICBteUNoYXJ0LnNldE9wdGlvbihvcHRpb24pO1xyXG5cclxuICAgICAgICByZXR1cm4gKCkgPT4ge1xyXG4gICAgICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgaGFuZGxlUmVzaXplKTtcclxuICAgICAgICAgICAgbXlDaGFydC5kaXNwb3NlKCk7XHJcbiAgICAgICAgfTtcclxuICAgIH0sIFtdKTtcclxuXHJcbiAgICAvLyDmm7TmlrDlm77ooajmlbDmja5cclxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XHJcbiAgICAgICAgY29uc3QgbG9hZFRyYWNlRGF0YSA9IGFzeW5jICgpID0+IHtcclxuICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHdhdmVsZW5ndGgxID0gaXNNdWx0aU1vZGUgPyAnODUwJyA6ICcxMzEwJztcclxuICAgICAgICAgICAgICAgIGNvbnN0IHdhdmVsZW5ndGgyID0gaXNNdWx0aU1vZGUgPyAnMTMwMCcgOiAnMTU1MCc7XHJcblxyXG4gICAgICAgICAgICAgICAgY29uc3QgW2RhdGExLCBkYXRhMl0gPSBhd2FpdCBQcm9taXNlLmFsbChbXHJcbiAgICAgICAgICAgICAgICAgICAgaW1wb3J0KGBAL3N0b3JlL0ZJQkVSLyR7dGVzdFJlc3VsdC5vZnBSZXN1bHR9LyR7d2F2ZWxlbmd0aDF9LWR1bXAuanNvbmApLFxyXG4gICAgICAgICAgICAgICAgICAgIGltcG9ydChgQC9zdG9yZS9GSUJFUi8ke3Rlc3RSZXN1bHQub2ZwUmVzdWx0fS8ke3dhdmVsZW5ndGgyfS1kdW1wLmpzb25gKVxyXG4gICAgICAgICAgICAgICAgXSk7XHJcblxyXG4gICAgICAgICAgICAgICAgLy8g5qC55o2u5Z+65YeG6K6+572u6YeN5paw5Yib5bu65LqL5Lu25pWw5o2uXHJcbiAgICAgICAgICAgICAgICBjb25zdCBwcm9jZXNzV2F2ZWxlbmd0aERhdGEgPSAoZGF0YSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1lcmdlZEV2ZW50cyA9IHt9O1xyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIC8vIDEuIOmmluWFiOa3u+WKoOWOn+Wni+S6i+S7tuaVsOaNrlxyXG4gICAgICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKGRhdGEuZXZlbnQpLmZvckVhY2goZXZlbnRLZXkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXJnZWRFdmVudHNbZXZlbnRLZXldID0gey4uLmRhdGEuZXZlbnRbZXZlbnRLZXldfTtcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgIC8vIDIuIOagueaNruWfuuWHhuiuvue9ruiwg+aVtOS6i+S7tuexu+Wei1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGxhc3RFdmVudEtleSA9IE9iamVjdC5rZXlzKG1lcmdlZEV2ZW50cylbT2JqZWN0LmtleXMobWVyZ2VkRXZlbnRzKS5sZW5ndGggLSAxXTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCF0ZXN0UmVzdWx0Lm9mcFJlZlN0YXR1cykge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIOaXoOWfuuWHhuiuvue9rlxyXG4gICAgICAgICAgICAgICAgICAgIC8vIOWIpOaWremmluagueWFiee6pOexu+Wei1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChjb25uZWN0aW9uU3RhdHVzLk9GUG91dFJlZlN0YXR1cz8uaW5jbHVkZXMoJ3NtLScpIHx8IGNvbm5lY3Rpb25TdGF0dXMuT0ZQb3V0UmVmU3RhdHVzPy5pbmNsdWRlcygnbW0tJykpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8g55+t6Lez57q/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lcmdlZEV2ZW50c1snZXZlbnQwJ10gPSB7IHR5cGU6IFwiU3RhcnRcIiwgZGlzdGFuY2U6IDAsIHJlZmxMb3NzOiAtMzUuMjUgfTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbWVyZ2VkRXZlbnRzWydldmVudDEnXSA9IHsgdHlwZTogXCJIaWRkZW5cIiwgZGlzdGFuY2U6IDIsIHJlZmxMb3NzOiAtMTQuMTgsIHNwbGljZUxvc3M6IG51bGwgfTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIOiwg+aVtOaJgOacieWFtuS7luS6i+S7tueahOS9jee9ru+8jOWinuWKoDLnsbNcclxuICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmtleXMobWVyZ2VkRXZlbnRzKS5mb3JFYWNoKGtleSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoa2V5ICE9PSAnZXZlbnQwJyAmJiBrZXkgIT09ICdldmVudDEnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVyZ2VkRXZlbnRzW2tleV0gPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLm1lcmdlZEV2ZW50c1trZXldLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXN0YW5jZTogbWVyZ2VkRXZlbnRzW2tleV0uZGlzdGFuY2UgKyAyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyDkv67mlLnmnIDlkI7kuIDkuKrkuovku7ZcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGFzdEV2ZW50ID0gbWVyZ2VkRXZlbnRzW2xhc3RFdmVudEtleV07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lcmdlZEV2ZW50c1tsYXN0RXZlbnRLZXldID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4ubGFzdEV2ZW50LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJFbmRcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwbGljZUxvc3M6IG51bGxcclxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNvbm5lY3Rpb25TdGF0dXMuT0ZQb3V0UmVmU3RhdHVzPy5pbmNsdWRlcygnc21jLScpIHx8IGNvbm5lY3Rpb25TdGF0dXMuT0ZQb3V0UmVmU3RhdHVzPy5pbmNsdWRlcygnbW1jLScpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIOihpeWBv+WFiee6pFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXJnZWRFdmVudHNbJ2V2ZW50MCddID0geyB0eXBlOiBcIlN0YXJ0XCIsIGRpc3RhbmNlOiAwLCByZWZsTG9zczogLTM1LjI1IH07XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyDosIPmlbTmiYDmnInlhbbku5bkuovku7bnmoTkvY3nva7vvIzlop7liqAxNjEuMTXnsbNcclxuICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmtleXMobWVyZ2VkRXZlbnRzKS5mb3JFYWNoKGtleSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoa2V5ICE9PSAnZXZlbnQwJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lcmdlZEV2ZW50c1trZXldID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5tZXJnZWRFdmVudHNba2V5XSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzdGFuY2U6IG1lcmdlZEV2ZW50c1trZXldLmRpc3RhbmNlICsgMTYxLjE1XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyDkv67mlLnmnIDlkI7kuIDkuKrkuovku7ZcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGFzdEV2ZW50ID0gbWVyZ2VkRXZlbnRzW2xhc3RFdmVudEtleV07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lcmdlZEV2ZW50c1tsYXN0RXZlbnRLZXldID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4ubGFzdEV2ZW50LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJFbmRcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwbGljZUxvc3M6IG51bGxcclxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIC8vIOWIpOaWreacgOWQjui/nuaOpeeahOWFiee6pOexu+Wei1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghY29ubmVjdGlvblN0YXR1cy5PRlBDb25uZWN0ZWRUb1JlZlN0YXR1cykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyDml6Dov57mjqXvvIzkuI3mk43kvZxcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNvbm5lY3Rpb25TdGF0dXMuT0ZQQ29ubmVjdGVkVG9SZWZTdGF0dXM/LmluY2x1ZGVzKCdzbS0nKSB8fCBjb25uZWN0aW9uU3RhdHVzLk9GUENvbm5lY3RlZFRvUmVmU3RhdHVzPy5pbmNsdWRlcygnbW0tJykpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8g55+t6Lez57q/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxhc3RFdmVudCA9IG1lcmdlZEV2ZW50c1tsYXN0RXZlbnRLZXldO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyDlsIbmnIDlkI7kuIDkuKrkuovku7bmlLnkuLrlj43lsITlmahcclxuICAgICAgICAgICAgICAgICAgICAgICAgbWVyZ2VkRXZlbnRzW2xhc3RFdmVudEtleV0gPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5sYXN0RXZlbnQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBcIlJlZmxlY3RvclwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BsaWNlTG9zczogbnVsbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyDmt7vliqDmlrDnmoTnu5PmnZ/kuovku7ZcclxuICAgICAgICAgICAgICAgICAgICAgICAgbWVyZ2VkRXZlbnRzW2BldmVudCR7T2JqZWN0LmtleXMobWVyZ2VkRXZlbnRzKS5sZW5ndGh9YF0gPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBcIkVuZFwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzdGFuY2U6IGxhc3RFdmVudC5kaXN0YW5jZSArIDIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGxpY2VMb3NzOiBudWxsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmbExvc3M6IGxhc3RFdmVudC5yZWZsTG9zcyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dGVudWF0aW9uOiBsYXN0RXZlbnQuYXR0ZW51YXRpb25cclxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNvbm5lY3Rpb25TdGF0dXMuT0ZQQ29ubmVjdGVkVG9SZWZTdGF0dXM/LmluY2x1ZGVzKCdzbWMtJykgfHwgY29ubmVjdGlvblN0YXR1cy5PRlBDb25uZWN0ZWRUb1JlZlN0YXR1cz8uaW5jbHVkZXMoJ21tYy0nKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyDooaXlgb/lhYnnuqRcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGFzdEV2ZW50ID0gbWVyZ2VkRXZlbnRzW2xhc3RFdmVudEtleV07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIOWwhuacgOWQjuS4gOS4quS6i+S7tuaUueS4uuWPjeWwhOWZqFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXJnZWRFdmVudHNbbGFzdEV2ZW50S2V5XSA9IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmxhc3RFdmVudCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFwiUmVmbGVjdG9yXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGxpY2VMb3NzOiBudWxsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIOa3u+WKoOaWsOeahOe7k+adn+S6i+S7tlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXJnZWRFdmVudHNbYGV2ZW50JHtPYmplY3Qua2V5cyhtZXJnZWRFdmVudHMpLmxlbmd0aH1gXSA9IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFwiRW5kXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXN0YW5jZTogbGFzdEV2ZW50LmRpc3RhbmNlICsgMTYxLjE1LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BsaWNlTG9zczogbnVsbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZmxMb3NzOiBsYXN0RXZlbnQucmVmbExvc3MsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRlbnVhdGlvbjogbGFzdEV2ZW50LmF0dGVudWF0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGVzdFJlc3VsdC5vZnBSZWZTdGF0dXMgPT09ICdzdGFydCcpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8g5LuF5YmN5a+85Z+65YeGXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIOWIpOaWremmluagueWFiee6pOexu+Wei1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29ubmVjdGlvblN0YXR1cy5PRlBvdXRSZWZTdGF0dXM/LmluY2x1ZGVzKCdzbS0nKSB8fCBjb25uZWN0aW9uU3RhdHVzLk9GUG91dFJlZlN0YXR1cz8uaW5jbHVkZXMoJ21tLScpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyDnn63ot7Pnur9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lcmdlZEV2ZW50c1snZXZlbnQwJ10gPSB7IHR5cGU6IFwiU3RhcnRcIiwgZGlzdGFuY2U6IDAsIHJlZmxMb3NzOiAtMTkuNDQgfTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lcmdlZEV2ZW50c1snZXZlbnQxJ10gPSB7IHR5cGU6IFwiSGlkZGVuXCIsIGRpc3RhbmNlOiAyLCByZWZsTG9zczogLTMzLjQ0LCBzcGxpY2VMb3NzOiBudWxsIH07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyDkv67mlLnmnIDlkI7kuIDkuKrkuovku7ZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxhc3RFdmVudCA9IG1lcmdlZEV2ZW50c1tsYXN0RXZlbnRLZXldO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVyZ2VkRXZlbnRzW2xhc3RFdmVudEtleV0gPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4ubGFzdEV2ZW50LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFwiRW5kXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzdGFuY2U6IGxhc3RFdmVudC5kaXN0YW5jZSArIDIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BsaWNlTG9zczogbnVsbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjb25uZWN0aW9uU3RhdHVzLk9GUG91dFJlZlN0YXR1cz8uaW5jbHVkZXMoJ3NtYy0nKSB8fCBjb25uZWN0aW9uU3RhdHVzLk9GUG91dFJlZlN0YXR1cz8uaW5jbHVkZXMoJ21tYy0nKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g6KGl5YG/5YWJ57qkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXJnZWRFdmVudHNbJ2V2ZW50MCddID0geyB0eXBlOiBcIlN0YXJ0UmVmXCIsIGRpc3RhbmNlOiAtMTYxLjE1LCByZWZsTG9zczogLTMzLjc5IH07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyDkv67mlLnmnIDlkI7kuIDkuKrkuovku7ZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxhc3RFdmVudCA9IG1lcmdlZEV2ZW50c1tsYXN0RXZlbnRLZXldO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVyZ2VkRXZlbnRzW2xhc3RFdmVudEtleV0gPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4ubGFzdEV2ZW50LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFwiRW5kXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzdGFuY2U6IGxhc3RFdmVudC5kaXN0YW5jZSArIDIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BsaWNlTG9zczogbnVsbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8g5Yik5pat5pyA5ZCO6L+e5o6l55qE5YWJ57qk57G75Z6LXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghY29ubmVjdGlvblN0YXR1cy5PRlBDb25uZWN0ZWRUb1JlZlN0YXR1cykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g5peg6L+e5o6l77yM5LiN5pON5L2cXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoY29ubmVjdGlvblN0YXR1cy5PRlBDb25uZWN0ZWRUb1JlZlN0YXR1cz8uaW5jbHVkZXMoJ3NtLScpIHx8IGNvbm5lY3Rpb25TdGF0dXMuT0ZQQ29ubmVjdGVkVG9SZWZTdGF0dXM/LmluY2x1ZGVzKCdtbS0nKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g55+t6Lez57q/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsYXN0RXZlbnQgPSBtZXJnZWRFdmVudHNbbGFzdEV2ZW50S2V5XTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIOWwhuacgOWQjuS4gOS4quS6i+S7tuaUueS4uuWPjeWwhOWZqFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVyZ2VkRXZlbnRzW2xhc3RFdmVudEtleV0gPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4ubGFzdEV2ZW50LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFwiUmVmbGVjdG9yXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BsaWNlTG9zczogbnVsbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIOa3u+WKoOaWsOeahOe7k+adn+S6i+S7tlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVyZ2VkRXZlbnRzW2BldmVudCR7T2JqZWN0LmtleXMobWVyZ2VkRXZlbnRzKS5sZW5ndGh9YF0gPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJFbmRcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXN0YW5jZTogbGFzdEV2ZW50LmRpc3RhbmNlICsgMixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGxpY2VMb3NzOiBudWxsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZmxMb3NzOiBsYXN0RXZlbnQucmVmbExvc3MsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0ZW51YXRpb246IGxhc3RFdmVudC5hdHRlbnVhdGlvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjb25uZWN0aW9uU3RhdHVzLk9GUENvbm5lY3RlZFRvUmVmU3RhdHVzPy5pbmNsdWRlcygnc21jLScpIHx8IGNvbm5lY3Rpb25TdGF0dXMuT0ZQQ29ubmVjdGVkVG9SZWZTdGF0dXM/LmluY2x1ZGVzKCdtbWMtJykpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIOihpeWBv+WFiee6pFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGFzdEV2ZW50ID0gbWVyZ2VkRXZlbnRzW2xhc3RFdmVudEtleV07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyDlsIbmnIDlkI7kuIDkuKrkuovku7bmlLnkuLrlj43lsITlmahcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lcmdlZEV2ZW50c1tsYXN0RXZlbnRLZXldID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmxhc3RFdmVudCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBcIlJlZmxlY3RvclwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwbGljZUxvc3M6IDAuMVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIOa3u+WKoOaWsOeahOe7k+adn+S6i+S7tlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVyZ2VkRXZlbnRzW2BldmVudCR7T2JqZWN0LmtleXMobWVyZ2VkRXZlbnRzKS5sZW5ndGh9YF0gPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJFbmRcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXN0YW5jZTogbGFzdEV2ZW50LmRpc3RhbmNlICsgMTYxLjE1LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwbGljZUxvc3M6IG51bGwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmbExvc3M6IGxhc3RFdmVudC5yZWZsTG9zcyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRlbnVhdGlvbjogbGFzdEV2ZW50LmF0dGVudWF0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0ZXN0UmVzdWx0Lm9mcFJlZlN0YXR1cyA9PT0gJ2VuZCcpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8g5YmN5a+85ZKM5pyr5a+85Z+65YeGXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIOWIpOaWremmluagueWFiee6pOexu+Wei1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29ubmVjdGlvblN0YXR1cy5PRlBvdXRSZWZTdGF0dXM/LmluY2x1ZGVzKCdzbS0nKSB8fCBjb25uZWN0aW9uU3RhdHVzLk9GUG91dFJlZlN0YXR1cz8uaW5jbHVkZXMoJ21tLScpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyDnn63ot7Pnur9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lcmdlZEV2ZW50c1snZXZlbnQwJ10gPSB7IHR5cGU6IFwiU3RhcnRcIiwgZGlzdGFuY2U6IDAsIHJlZmxMb3NzOiAtMTkuNDQgfTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lcmdlZEV2ZW50c1snZXZlbnQxJ10gPSB7IHR5cGU6IFwiSGlkZGVuXCIsIGRpc3RhbmNlOiAyLCByZWZsTG9zczogLTMzLjQ0LCBzcGxpY2VMb3NzOiBudWxsIH07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyDosIPmlbTmiYDmnInlhbbku5bkuovku7bnmoTkvY3nva7vvIzlop7liqAy57GzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyhtZXJnZWRFdmVudHMpLmZvckVhY2goa2V5ID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoa2V5ICE9PSAnZXZlbnQwJyAmJiBrZXkgIT09ICdldmVudDEnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lcmdlZEV2ZW50c1trZXldID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4ubWVyZ2VkRXZlbnRzW2tleV0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXN0YW5jZTogbWVyZ2VkRXZlbnRzW2tleV0uZGlzdGFuY2UgKyAyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyDkv67mlLnmnIDlkI7kuIDkuKrkuovku7ZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxhc3RFdmVudCA9IG1lcmdlZEV2ZW50c1tsYXN0RXZlbnRLZXldO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVyZ2VkRXZlbnRzW2xhc3RFdmVudEtleV0gPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4ubGFzdEV2ZW50LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFwiRW5kXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzdGFuY2U6IGxhc3RFdmVudC5kaXN0YW5jZSArIDIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BsaWNlTG9zczogbnVsbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjb25uZWN0aW9uU3RhdHVzLk9GUG91dFJlZlN0YXR1cz8uaW5jbHVkZXMoJ3NtYy0nKSB8fCBjb25uZWN0aW9uU3RhdHVzLk9GUG91dFJlZlN0YXR1cz8uaW5jbHVkZXMoJ21tYy0nKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g6KGl5YG/5YWJ57qkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXJnZWRFdmVudHNbJ2V2ZW50MCddID0geyB0eXBlOiBcIlN0YXJ0UmVmXCIsIGRpc3RhbmNlOiAtMTYxLjE1LCByZWZsTG9zczogLTMzLjc5IH07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyDkv67mlLnmnIDlkI7kuIDkuKrkuovku7ZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxhc3RFdmVudCA9IG1lcmdlZEV2ZW50c1tsYXN0RXZlbnRLZXldO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVyZ2VkRXZlbnRzW2xhc3RFdmVudEtleV0gPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4ubGFzdEV2ZW50LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFwiRW5kXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzdGFuY2U6IGxhc3RFdmVudC5kaXN0YW5jZSArIDIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BsaWNlTG9zczogbnVsbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8g5Yik5pat5pyA5ZCO6L+e5o6l55qE5YWJ57qk57G75Z6LXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghY29ubmVjdGlvblN0YXR1cy5PRlBDb25uZWN0ZWRUb1JlZlN0YXR1cykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g5peg6L+e5o6lXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsYXN0RXZlbnQgPSBtZXJnZWRFdmVudHNbbGFzdEV2ZW50S2V5XTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lcmdlZEV2ZW50c1tsYXN0RXZlbnRLZXldID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmxhc3RFdmVudCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBcIkVuZE5vUmVmXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BsaWNlTG9zczogbnVsbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjb25uZWN0aW9uU3RhdHVzLk9GUENvbm5lY3RlZFRvUmVmU3RhdHVzPy5pbmNsdWRlcygnc20tJykgfHwgY29ubmVjdGlvblN0YXR1cy5PRlBDb25uZWN0ZWRUb1JlZlN0YXR1cz8uaW5jbHVkZXMoJ21tLScpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyDnn63ot7Pnur9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxhc3RFdmVudCA9IG1lcmdlZEV2ZW50c1tsYXN0RXZlbnRLZXldO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g5bCG5pyA5ZCO5LiA5Liq5LqL5Lu25pS55Li65Y+N5bCE5ZmoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXJnZWRFdmVudHNbbGFzdEV2ZW50S2V5XSA9IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5sYXN0RXZlbnQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJSZWZsZWN0b3JcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGxpY2VMb3NzOiBudWxsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g5re75Yqg5paw55qE57uT5p2f5LqL5Lu2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXJnZWRFdmVudHNbYGV2ZW50JHtPYmplY3Qua2V5cyhtZXJnZWRFdmVudHMpLmxlbmd0aH1gXSA9IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBcIkVuZFwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3RhbmNlOiBsYXN0RXZlbnQuZGlzdGFuY2UgKyAyLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwbGljZUxvc3M6IG51bGwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmbExvc3M6IGxhc3RFdmVudC5yZWZsTG9zcyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRlbnVhdGlvbjogbGFzdEV2ZW50LmF0dGVudWF0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNvbm5lY3Rpb25TdGF0dXMuT0ZQQ29ubmVjdGVkVG9SZWZTdGF0dXM/LmluY2x1ZGVzKCdzbWMtJykgfHwgY29ubmVjdGlvblN0YXR1cy5PRlBDb25uZWN0ZWRUb1JlZlN0YXR1cz8uaW5jbHVkZXMoJ21tYy0nKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g6KGl5YG/5YWJ57qkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsYXN0RXZlbnQgPSBtZXJnZWRFdmVudHNbbGFzdEV2ZW50S2V5XTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIOWwhuacgOWQjuS4gOS4quS6i+S7tuaUueS4uuWPjeWwhOWZqFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVyZ2VkRXZlbnRzW2xhc3RFdmVudEtleV0gPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4ubGFzdEV2ZW50LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFwiUmVmbGVjdG9yXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BsaWNlTG9zczogbnVsbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIOa3u+WKoOacq+WwvuihpeWBv+S6i+S7tlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVyZ2VkRXZlbnRzW2BldmVudCR7T2JqZWN0LmtleXMobWVyZ2VkRXZlbnRzKS5sZW5ndGh9YF0gPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJFbmRSZWZcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXN0YW5jZTogbGFzdEV2ZW50LmRpc3RhbmNlICsgMTYxLjE1LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZmxMb3NzOiAtMjguNTRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgLy8g5pu05pawc3VtbWFyeeS/oeaBr1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGV2ZW50S2V5cyA9IE9iamVjdC5rZXlzKG1lcmdlZEV2ZW50cykuc29ydCgoYSwgYikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBudW1BID0gcGFyc2VJbnQoYS5yZXBsYWNlKCdldmVudCcsICcnKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG51bUIgPSBwYXJzZUludChiLnJlcGxhY2UoJ2V2ZW50JywgJycpKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bUEgLSBudW1CO1xyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHN1bW1hcnlsYXN0RXZlbnRLZXkgPSBldmVudEtleXNbZXZlbnRLZXlzLmxlbmd0aCAtIDFdO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGxhc3RFdmVudCA9IG1lcmdlZEV2ZW50c1tzdW1tYXJ5bGFzdEV2ZW50S2V5XTtcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAvLyDorqHnrpfmgLvmjZ/ogJdcclxuICAgICAgICAgICAgICAgICAgICBsZXQgdG90YWxMb3NzID0gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBhbGxTcGxpY2VMb3NzTnVsbCA9IE9iamVjdC52YWx1ZXMobWVyZ2VkRXZlbnRzKS5ldmVyeShldmVudCA9PiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQuc3BsaWNlTG9zcyA9PT0gbnVsbCB8fCBldmVudC5zcGxpY2VMb3NzID09PSB1bmRlZmluZWRcclxuICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIGlmICghYWxsU3BsaWNlTG9zc051bGwpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdG90YWxMb3NzID0gT2JqZWN0LnZhbHVlcyhtZXJnZWRFdmVudHMpLnJlZHVjZSgoc3VtLCBldmVudCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbG9zcyA9IGV2ZW50LnNwbGljZUxvc3M7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobG9zcyA9PT0gbnVsbCB8fCBsb3NzID09PSB1bmRlZmluZWQpIHJldHVybiBzdW07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3VtICsgbG9zcztcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSwgMCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIC8vIOiOt+WPluato+ehrueahGRpc3RhbmNl5YC8XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGZpbmFsRGlzdGFuY2UgPSBsYXN0RXZlbnQuZGlzdGFuY2U7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRlc3RSZXN1bHQub2ZwUmVmU3RhdHVzID09PSAnZW5kJyAmJiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNvbm5lY3Rpb25TdGF0dXMuT0ZQQ29ubmVjdGVkVG9SZWZTdGF0dXM/LmluY2x1ZGVzKCdzbWMtJykgfHwgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbm5lY3Rpb25TdGF0dXMuT0ZQQ29ubmVjdGVkVG9SZWZTdGF0dXM/LmluY2x1ZGVzKCdtbWMtJykpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIOWmguaenOaYr+acq+WvvOWfuuWHhuS4lOi/nuaOpeS6huihpeWBv+WFiee6pO+8jOS9v+eUqOWAkuaVsOesrOS6jOS4quS6i+S7tueahGRpc3RhbmNlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNlY29uZExhc3RFdmVudEtleSA9IGV2ZW50S2V5c1tldmVudEtleXMubGVuZ3RoIC0gMl07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNlY29uZExhc3RFdmVudCA9IG1lcmdlZEV2ZW50c1tzZWNvbmRMYXN0RXZlbnRLZXldO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBmaW5hbERpc3RhbmNlID0gc2Vjb25kTGFzdEV2ZW50LmRpc3RhbmNlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCB1cGRhdGVkU3VtbWFyeSA9IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLi4uZGF0YTEuU3VtbWFyeSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdG90YWxEaXN0YW5jZTogZmluYWxEaXN0YW5jZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdG90YWxMb3NzOiB0b3RhbExvc3NcclxuICAgICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50czogbWVyZ2VkRXZlbnRzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdW1tYXJ5OiB1cGRhdGVkU3VtbWFyeVxyXG4gICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgICAgICAgIGNvbnN0IHByb2Nlc3NlZERhdGExID0gcHJvY2Vzc1dhdmVsZW5ndGhEYXRhKGRhdGExKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHByb2Nlc3NlZERhdGEyID0gcHJvY2Vzc1dhdmVsZW5ndGhEYXRhKGRhdGEyKTtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgc2V0V2F2ZWxlbmd0aERhdGEoe1xyXG4gICAgICAgICAgICAgICAgICAgIFt3YXZlbGVuZ3RoMV06IHByb2Nlc3NlZERhdGExLFxyXG4gICAgICAgICAgICAgICAgICAgIFt3YXZlbGVuZ3RoMl06IHByb2Nlc3NlZERhdGEyXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgICAgICBzZXRDdXJyZW50V2F2ZWxlbmd0aCh3YXZlbGVuZ3RoMSk7XHJcbiAgICAgICAgICAgICAgICBzZXRFdmVudERhdGEocHJvY2Vzc2VkRGF0YTEpO1xyXG5cclxuICAgICAgICAgICAgICAgIC8vIOiOt+WPluW9k+WJjeazoumVv+eahOS6i+S7tuaVsOaNrlxyXG4gICAgICAgICAgICAgICAgY29uc3QgY3VycmVudEV2ZW50cyA9IHByb2Nlc3NlZERhdGExLmV2ZW50cztcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgLy8g55Sf5oiQT1REUuabsue6v+aVsOaNru+8jOS4jeWGjeS8oOWFpSB0b3RhbERpc3RhbmNlIOWPguaVsO+8jOiuqSBnZW5lcmF0ZU9URFJEYXRhIOiHquW3seiuoeeul+iMg+WbtFxyXG4gICAgICAgICAgICAgICAgY29uc3Qgb3RkckRhdGEgPSBnZW5lcmF0ZU9URFJEYXRhKGN1cnJlbnRFdmVudHMpO1xyXG5cclxuICAgICAgICAgICAgICAgIC8vIOabtOaWsGVjaGFydHPlm77ooahcclxuICAgICAgICAgICAgICAgIGNvbnN0IGNoYXJ0RG9tID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ290ZHJDaGFydCcpO1xyXG4gICAgICAgICAgICAgICAgaWYgKCFjaGFydERvbSkgcmV0dXJuO1xyXG5cclxuICAgICAgICAgICAgICAgIGNvbnN0IG15Q2hhcnQgPSBlY2hhcnRzLmdldEluc3RhbmNlQnlEb20oY2hhcnREb20pO1xyXG4gICAgICAgICAgICAgICAgaWYgKG15Q2hhcnQpIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyDku47kuovku7bmlbDmja7kuK3ojrflj5bot53nprvojIPlm7RcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBldmVudERpc3RhbmNlcyA9IE9iamVjdC52YWx1ZXMoY3VycmVudEV2ZW50cykubWFwKGV2ZW50ID0+IGV2ZW50LmRpc3RhbmNlKTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBtaW5EaXN0YW5jZSA9IE1hdGgubWluKC4uLmV2ZW50RGlzdGFuY2VzKSAtIDIwOyAvLyDpppbkuKrkuovku7bliY0yMOexs1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1heERpc3RhbmNlID0gTWF0aC5tYXgoLi4uZXZlbnREaXN0YW5jZXMpICsgMjA7IC8vIOacgOWQjuS6i+S7tuWQjjIw57GzXHJcblxyXG4gICAgICAgICAgICAgICAgICAgIG15Q2hhcnQuc2V0T3B0aW9uKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgeEF4aXM6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbjogbWluRGlzdGFuY2UsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXg6IG1heERpc3RhbmNlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlcmllczogW3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IG90ZHJEYXRhXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1dXHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdGYWlsZWQgdG8gbG9hZCB0cmFjZSBkYXRhOicsIGVycm9yKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIGxvYWRUcmFjZURhdGEoKTtcclxuICAgIH0sIFt0ZXN0UmVzdWx0XSk7XHJcblxyXG5cclxuXHJcbiAgICByZXR1cm4gKFxyXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy1mdWxsIGgtZnVsbCBmbGV4IGZsZXgtY29sIGJnLXdoaXRlIHAtNFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXgtMVwiIGlkPVwib3RkckNoYXJ0XCIgc3R5bGU9e3sgd2lkdGg6ICcxMDAlJywgaGVpZ2h0OiAnMTAwJScgfX0+XHJcbiAgICAgICAgICAgICAgICB7Lyog5puy57q/5Zu+5pi+56S65Yy6ICovfVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJoLVsxMCVdIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHNwYWNlLXgtNFwiPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgd2F2ZWxlbmd0aHMgPSBPYmplY3Qua2V5cyh3YXZlbGVuZ3RoRGF0YSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRJbmRleCA9IHdhdmVsZW5ndGhzLmluZGV4T2YoY3VycmVudFdhdmVsZW5ndGgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwcmV2V2F2ZWxlbmd0aCA9IHdhdmVsZW5ndGhzWyhjdXJyZW50SW5kZXggLSAxICsgd2F2ZWxlbmd0aHMubGVuZ3RoKSAlIHdhdmVsZW5ndGhzLmxlbmd0aF07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldEN1cnJlbnRXYXZlbGVuZ3RoKHByZXZXYXZlbGVuZ3RoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcHJldkRhdGEgPSB3YXZlbGVuZ3RoRGF0YVtwcmV2V2F2ZWxlbmd0aF07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldEV2ZW50RGF0YShwcmV2RGF0YSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyDph43mlrDnlJ/miJBPVERS5puy57q/5pWw5o2uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG90ZHJEYXRhID0gZ2VuZXJhdGVPVERSRGF0YShwcmV2RGF0YS5ldmVudHMsIHByZXZXYXZlbGVuZ3RoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIOabtOaWsGVjaGFydHPlm77ooahcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhcnREb20gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnb3RkckNoYXJ0Jyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghY2hhcnREb20pIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG15Q2hhcnQgPSBlY2hhcnRzLmdldEluc3RhbmNlQnlEb20oY2hhcnREb20pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAobXlDaGFydCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g5LuO5LqL5Lu25pWw5o2u5Lit6I635Y+W6Led56a76IyD5Zu0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBldmVudERpc3RhbmNlcyA9IE9iamVjdC52YWx1ZXMocHJldkRhdGEuZXZlbnRzKS5tYXAoZXZlbnQgPT4gZXZlbnQuZGlzdGFuY2UpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWluRGlzdGFuY2UgPSBNYXRoLm1pbiguLi5ldmVudERpc3RhbmNlcykgLSAyMDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1heERpc3RhbmNlID0gTWF0aC5tYXgoLi4uZXZlbnREaXN0YW5jZXMpICsgMjA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15Q2hhcnQuc2V0T3B0aW9uKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4QXhpczoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW46IG1pbkRpc3RhbmNlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXg6IG1heERpc3RhbmNlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJpZXM6IFt7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IG90ZHJEYXRhXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfV1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJwLTIgcm91bmRlZC1mdWxsIGJnLWdyYXktMzAwIGhvdmVyOmJnLWdyYXktNDAwXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAmIzk2NjQ7XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtbGcgZm9udC1zZW1pYm9sZFwiPntjdXJyZW50V2F2ZWxlbmd0aH1ubTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHdhdmVsZW5ndGhzID0gT2JqZWN0LmtleXMod2F2ZWxlbmd0aERhdGEpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50SW5kZXggPSB3YXZlbGVuZ3Rocy5pbmRleE9mKGN1cnJlbnRXYXZlbGVuZ3RoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV4dFdhdmVsZW5ndGggPSB3YXZlbGVuZ3Roc1soY3VycmVudEluZGV4ICsgMSkgJSB3YXZlbGVuZ3Rocy5sZW5ndGhdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRDdXJyZW50V2F2ZWxlbmd0aChuZXh0V2F2ZWxlbmd0aCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5leHREYXRhID0gd2F2ZWxlbmd0aERhdGFbbmV4dFdhdmVsZW5ndGhdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRFdmVudERhdGEobmV4dERhdGEpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8g6YeN5paw55Sf5oiQT1REUuabsue6v+aVsOaNrlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvdGRyRGF0YSA9IGdlbmVyYXRlT1REUkRhdGEobmV4dERhdGEuZXZlbnRzLCBuZXh0V2F2ZWxlbmd0aCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyDmm7TmlrBlY2hhcnRz5Zu+6KGoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXJ0RG9tID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ290ZHJDaGFydCcpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWNoYXJ0RG9tKSByZXR1cm47XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBteUNoYXJ0ID0gZWNoYXJ0cy5nZXRJbnN0YW5jZUJ5RG9tKGNoYXJ0RG9tKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG15Q2hhcnQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIOS7juS6i+S7tuaVsOaNruS4reiOt+WPlui3neemu+iMg+WbtFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZXZlbnREaXN0YW5jZXMgPSBPYmplY3QudmFsdWVzKG5leHREYXRhLmV2ZW50cykubWFwKGV2ZW50ID0+IGV2ZW50LmRpc3RhbmNlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1pbkRpc3RhbmNlID0gTWF0aC5taW4oLi4uZXZlbnREaXN0YW5jZXMpIC0gMjA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtYXhEaXN0YW5jZSA9IE1hdGgubWF4KC4uLmV2ZW50RGlzdGFuY2VzKSArIDIwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBteUNoYXJ0LnNldE9wdGlvbih7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeEF4aXM6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWluOiBtaW5EaXN0YW5jZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4OiBtYXhEaXN0YW5jZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VyaWVzOiBbe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiBvdGRyRGF0YVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1dXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwicC0yIHJvdW5kZWQtZnVsbCBiZy1ncmF5LTMwMCBob3ZlcjpiZy1ncmF5LTQwMFwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgJiM5NjU0O1xyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgKTtcclxufTtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IEN1cnZlQ2hhcnQ7Il0sIm5hbWVzIjpbIlJlYWN0IiwidXNlRWZmZWN0IiwidXNlU3RhdGUiLCJ1c2VEZXZpY2VTdG9yZSIsImVjaGFydHMiLCJnZW5lcmF0ZU9URFJEYXRhIiwiZXZlbnRzIiwid2F2ZWxlbmd0aCIsInBvaW50cyIsInNhbXBsaW5nSW50ZXJ2YWwiLCJiYXNlQXR0ZW51YXRpb24iLCJub2lzZVJhbmdlIiwicmVmbGVjdGlvbkRlY2F5IiwiZXZlbnREaXN0YW5jZXMiLCJPYmplY3QiLCJ2YWx1ZXMiLCJtYXAiLCJldmVudCIsImRpc3RhbmNlIiwibWluRGlzdGFuY2UiLCJNYXRoIiwibWluIiwibWF4RGlzdGFuY2UiLCJtYXgiLCJjdXJyZW50RGlzdGFuY2UiLCJjdXJyZW50REIiLCJub2lzZSIsInJhbmRvbSIsImF0dGVudWF0aW9uIiwicHVzaCIsImZvckVhY2giLCJldmVudEluZGV4IiwiZmxvb3IiLCJsZW5ndGgiLCJ0eXBlIiwicGVha0hlaWdodCIsInJlZmxMb3NzIiwiaSIsImV4cCIsInNwbGljZUxvc3MiLCJsb3NzIiwiQ3VydmVDaGFydCIsInRlc3RSZXN1bHQiLCJjb25uZWN0aW9uU3RhdHVzIiwiZXZlbnREYXRhIiwic2V0RXZlbnREYXRhIiwiY3VycmVudFdhdmVsZW5ndGgiLCJzZXRDdXJyZW50V2F2ZWxlbmd0aCIsIndhdmVsZW5ndGhEYXRhIiwic2V0V2F2ZWxlbmd0aERhdGEiLCJpc011bHRpTW9kZSIsInRlc3Rjb25maWciLCJwYXJhbXMiLCJjYWJsZVR5cGUiLCJpbmNsdWRlcyIsImNoYXJ0RG9tIiwiZG9jdW1lbnQiLCJnZXRFbGVtZW50QnlJZCIsIm15Q2hhcnQiLCJpbml0IiwiaGFuZGxlUmVzaXplIiwicmVzaXplIiwid2luZG93IiwiYWRkRXZlbnRMaXN0ZW5lciIsIm9wdGlvbiIsImdyaWQiLCJsZWZ0IiwicmlnaHQiLCJib3R0b20iLCJ0b3AiLCJjb250YWluTGFiZWwiLCJ4QXhpcyIsInZhbHVlIiwiYXhpc0xpbmUiLCJzaG93Iiwic3BsaXRMaW5lIiwibGluZVN0eWxlIiwiY29sb3IiLCJ5QXhpcyIsIm5hbWUiLCJuYW1lTG9jYXRpb24iLCJuYW1lR2FwIiwic2VyaWVzIiwiZGF0YSIsInNob3dTeW1ib2wiLCJ3aWR0aCIsImFyZWFTdHlsZSIsImdyYXBoaWMiLCJMaW5lYXJHcmFkaWVudCIsIm9mZnNldCIsInNldE9wdGlvbiIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJkaXNwb3NlIiwibG9hZFRyYWNlRGF0YSIsIndhdmVsZW5ndGgxIiwid2F2ZWxlbmd0aDIiLCJkYXRhMSIsImRhdGEyIiwiUHJvbWlzZSIsImFsbCIsIm9mcFJlc3VsdCIsInByb2Nlc3NXYXZlbGVuZ3RoRGF0YSIsIm1lcmdlZEV2ZW50cyIsImtleXMiLCJldmVudEtleSIsImxhc3RFdmVudEtleSIsIm9mcFJlZlN0YXR1cyIsIk9GUG91dFJlZlN0YXR1cyIsImtleSIsImxhc3RFdmVudCIsIk9GUENvbm5lY3RlZFRvUmVmU3RhdHVzIiwiZXZlbnRLZXlzIiwic29ydCIsImEiLCJiIiwibnVtQSIsInBhcnNlSW50IiwicmVwbGFjZSIsIm51bUIiLCJzdW1tYXJ5bGFzdEV2ZW50S2V5IiwidG90YWxMb3NzIiwiYWxsU3BsaWNlTG9zc051bGwiLCJldmVyeSIsInVuZGVmaW5lZCIsInJlZHVjZSIsInN1bSIsImZpbmFsRGlzdGFuY2UiLCJzZWNvbmRMYXN0RXZlbnRLZXkiLCJzZWNvbmRMYXN0RXZlbnQiLCJ1cGRhdGVkU3VtbWFyeSIsIlN1bW1hcnkiLCJ0b3RhbERpc3RhbmNlIiwic3VtbWFyeSIsInByb2Nlc3NlZERhdGExIiwicHJvY2Vzc2VkRGF0YTIiLCJjdXJyZW50RXZlbnRzIiwib3RkckRhdGEiLCJnZXRJbnN0YW5jZUJ5RG9tIiwiZXJyb3IiLCJjb25zb2xlIiwiZGl2IiwiY2xhc3NOYW1lIiwiaWQiLCJzdHlsZSIsImhlaWdodCIsImJ1dHRvbiIsIm9uQ2xpY2siLCJ3YXZlbGVuZ3RocyIsImN1cnJlbnRJbmRleCIsImluZGV4T2YiLCJwcmV2V2F2ZWxlbmd0aCIsInByZXZEYXRhIiwic3BhbiIsIm5leHRXYXZlbGVuZ3RoIiwibmV4dERhdGEiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(pages-dir-node)/./src/components/lib/CurveChart.js\n"); /***/ }), /***/ "(pages-dir-node)/./src/components/lib/DiagnosticView.js": /*!**********************************************!*\ !*** ./src/components/lib/DiagnosticView.js ***! \**********************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; eval("__webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ DiagnosticView)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"react/jsx-dev-runtime\");\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 */ \"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _store_displayStore__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/store/displayStore */ \"(pages-dir-node)/./src/store/displayStore.js\");\n/* harmony import */ var _store_deviceStore__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/store/deviceStore */ \"(pages-dir-node)/./src/store/deviceStore.js\");\nvar __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_store_displayStore__WEBPACK_IMPORTED_MODULE_2__, _store_deviceStore__WEBPACK_IMPORTED_MODULE_3__]);\n([_store_displayStore__WEBPACK_IMPORTED_MODULE_2__, _store_deviceStore__WEBPACK_IMPORTED_MODULE_3__] = __webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__);\n\n\n\n\nfunction DiagnosticView({ testResult }) {\n const { navigateTo } = (0,_store_displayStore__WEBPACK_IMPORTED_MODULE_2__[\"default\"])();\n const { estmodel } = (0,_store_deviceStore__WEBPACK_IMPORTED_MODULE_3__[\"default\"])();\n const handleRowClick = (curtitle)=>{\n navigateTo('copperperformance', 'HDTD', {\n testResult,\n curtitle\n });\n };\n const renderRow = (title)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full flex items-center justify-between p-3 mb-2 rounded-md bg-[#F8F6F7] shadow-md cursor-pointer\",\n onClick: ()=>handleRowClick(title),\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-lg font-medium text-black\",\n children: title === 'HDTDR' ? '回波损耗分析' : title === 'HDTDX' ? '串扰分析' : title\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/DiagnosticView.js\",\n lineNumber: 19,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/DiagnosticView.js\",\n lineNumber: 15,\n columnNumber: 9\n }, this);\n return estmodel === 'general' ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full h-[470px] bg-[#D5DFEB] flex flex-col p-4 overflow-y-auto\",\n style: {\n scrollbarWidth: 'none',\n msOverflowStyle: 'none'\n },\n children: [\n renderRow('HDTDR'),\n renderRow('HDTDX')\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/DiagnosticView.js\",\n lineNumber: 28,\n columnNumber: 13\n }, this) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full h-[470px] bg-[#6b6d6b] flex flex-col p-4 overflow-y-auto\",\n style: {\n scrollbarWidth: 'none',\n msOverflowStyle: 'none'\n },\n children: [\n renderRow('HDTDR'),\n renderRow('HDTDX')\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/DiagnosticView.js\",\n lineNumber: 33,\n columnNumber: 13\n }, this);\n}\n\n__webpack_async_result__();\n} catch(e) { __webpack_async_result__(e); } });//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHBhZ2VzLWRpci1ub2RlKS8uL3NyYy9jb21wb25lbnRzL2xpYi9EaWFnbm9zdGljVmlldy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztBQUEwQjtBQUN5QjtBQUNGO0FBR2xDLFNBQVNHLGVBQWUsRUFBRUMsVUFBVSxFQUFFO0lBQ2pELE1BQU0sRUFBRUMsVUFBVSxFQUFFLEdBQUdKLCtEQUFlQTtJQUN0QyxNQUFNLEVBQUVLLFFBQVEsRUFBRSxHQUFHSiw4REFBY0E7SUFFbkMsTUFBTUssaUJBQWlCLENBQUNDO1FBQ3BCSCxXQUFXLHFCQUFxQixRQUFRO1lBQUVEO1lBQVlJO1FBQVM7SUFDbkU7SUFFQSxNQUFNQyxZQUFZLENBQUNDLHNCQUNmLDhEQUFDQztZQUNHQyxXQUFVO1lBQ1ZDLFNBQVMsSUFBTU4sZUFBZUc7c0JBRTlCLDRFQUFDSTtnQkFBS0YsV0FBVTswQkFDWEYsVUFBVSxVQUFVLFdBQVdBLFVBQVUsVUFBVSxTQUFTQTs7Ozs7Ozs7Ozs7SUFNekUsT0FDSUosYUFBYSwwQkFDVCw4REFBQ0s7UUFBSUMsV0FBVTtRQUFrRUcsT0FBTztZQUFFQyxnQkFBZ0I7WUFBUUMsaUJBQWlCO1FBQU87O1lBQ3JJUixVQUFVO1lBQ1ZBLFVBQVU7Ozs7Ozs2QkFHZiw4REFBQ0U7UUFBSUMsV0FBVTtRQUFrRUcsT0FBTztZQUFFQyxnQkFBZ0I7WUFBUUMsaUJBQWlCO1FBQU87O1lBQ3JJUixVQUFVO1lBQ1ZBLFVBQVU7Ozs7Ozs7QUFJM0IiLCJzb3VyY2VzIjpbIi9vcHQvZGV2L2VzdC1kc3gvc3JjL2NvbXBvbmVudHMvbGliL0RpYWdub3N0aWNWaWV3LmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XHJcbmltcG9ydCB1c2VEaXNwbGF5U3RvcmUgZnJvbSAnQC9zdG9yZS9kaXNwbGF5U3RvcmUnO1xyXG5pbXBvcnQgdXNlRGV2aWNlU3RvcmUgZnJvbSAnQC9zdG9yZS9kZXZpY2VTdG9yZSc7XHJcblxyXG5cclxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gRGlhZ25vc3RpY1ZpZXcoeyB0ZXN0UmVzdWx0IH0pIHtcclxuICAgIGNvbnN0IHsgbmF2aWdhdGVUbyB9ID0gdXNlRGlzcGxheVN0b3JlKCk7XHJcbiAgICBjb25zdCB7IGVzdG1vZGVsIH0gPSB1c2VEZXZpY2VTdG9yZSgpO1xyXG5cclxuICAgIGNvbnN0IGhhbmRsZVJvd0NsaWNrID0gKGN1cnRpdGxlKSA9PiB7XHJcbiAgICAgICAgbmF2aWdhdGVUbygnY29wcGVycGVyZm9ybWFuY2UnLCAnSERURCcsIHsgdGVzdFJlc3VsdCwgY3VydGl0bGUgfSk7XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IHJlbmRlclJvdyA9ICh0aXRsZSkgPT4gKFxyXG4gICAgICAgIDxkaXYgXHJcbiAgICAgICAgICAgIGNsYXNzTmFtZT1cInctZnVsbCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gcC0zIG1iLTIgcm91bmRlZC1tZCBiZy1bI0Y4RjZGN10gc2hhZG93LW1kIGN1cnNvci1wb2ludGVyXCIgXHJcbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IGhhbmRsZVJvd0NsaWNrKHRpdGxlKX1cclxuICAgICAgICA+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtbGcgZm9udC1tZWRpdW0gdGV4dC1ibGFja1wiPlxyXG4gICAgICAgICAgICAgICAge3RpdGxlID09PSAnSERURFInID8gJ+WbnuazouaNn+iAl+WIhuaekCcgOiB0aXRsZSA9PT0gJ0hEVERYJyA/ICfkuLLmibDliIbmnpAnIDogdGl0bGV9XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICApO1xyXG5cclxuICAgIHJldHVybiAoXHJcbiAgICAgICAgZXN0bW9kZWwgPT09ICdnZW5lcmFsJyA/IChcclxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LWZ1bGwgaC1bNDcwcHhdIGJnLVsjRDVERkVCXSBmbGV4IGZsZXgtY29sIHAtNCBvdmVyZmxvdy15LWF1dG9cIiBzdHlsZT17eyBzY3JvbGxiYXJXaWR0aDogJ25vbmUnLCBtc092ZXJmbG93U3R5bGU6ICdub25lJyB9fT5cclxuICAgICAgICAgICAgICAgIHtyZW5kZXJSb3coJ0hEVERSJyl9XHJcbiAgICAgICAgICAgICAgICB7cmVuZGVyUm93KCdIRFREWCcpfVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICApIDogKFxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctZnVsbCBoLVs0NzBweF0gYmctWyM2YjZkNmJdIGZsZXggZmxleC1jb2wgcC00IG92ZXJmbG93LXktYXV0b1wiIHN0eWxlPXt7IHNjcm9sbGJhcldpZHRoOiAnbm9uZScsIG1zT3ZlcmZsb3dTdHlsZTogJ25vbmUnIH19PlxyXG4gICAgICAgICAgICAgICAge3JlbmRlclJvdygnSERURFInKX1cclxuICAgICAgICAgICAgICAgIHtyZW5kZXJSb3coJ0hEVERYJyl9XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIClcclxuICAgICk7XHJcbn1cclxuXHJcbiJdLCJuYW1lcyI6WyJSZWFjdCIsInVzZURpc3BsYXlTdG9yZSIsInVzZURldmljZVN0b3JlIiwiRGlhZ25vc3RpY1ZpZXciLCJ0ZXN0UmVzdWx0IiwibmF2aWdhdGVUbyIsImVzdG1vZGVsIiwiaGFuZGxlUm93Q2xpY2siLCJjdXJ0aXRsZSIsInJlbmRlclJvdyIsInRpdGxlIiwiZGl2IiwiY2xhc3NOYW1lIiwib25DbGljayIsInNwYW4iLCJzdHlsZSIsInNjcm9sbGJhcldpZHRoIiwibXNPdmVyZmxvd1N0eWxlIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(pages-dir-node)/./src/components/lib/DiagnosticView.js\n"); /***/ }), /***/ "(pages-dir-node)/./src/components/lib/EventMapView.js": /*!********************************************!*\ !*** ./src/components/lib/EventMapView.js ***! \********************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; eval("__webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ EventMapView)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"react/jsx-dev-runtime\");\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 */ \"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _store_displayStore__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/store/displayStore */ \"(pages-dir-node)/./src/store/displayStore.js\");\n/* harmony import */ var next_image__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! next/image */ \"(pages-dir-node)/./node_modules/next/image.js\");\n/* harmony import */ var next_image__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(next_image__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _utils_asset__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/utils/asset */ \"(pages-dir-node)/./src/utils/asset.js\");\nvar __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_store_displayStore__WEBPACK_IMPORTED_MODULE_2__, _utils_asset__WEBPACK_IMPORTED_MODULE_4__]);\n([_store_displayStore__WEBPACK_IMPORTED_MODULE_2__, _utils_asset__WEBPACK_IMPORTED_MODULE_4__] = __webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__);\n\n\n\n\n\n\nfunction EventMapView({ testResult }) {\n const connectionStatus = testResult.ofpConnectionStatus;\n const { view } = _store_displayStore__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getState().navigation.current;\n const currentCableId = _store_displayStore__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getState().getCurrentCableId();\n const [selectedEvent, setSelectedEvent] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);\n const [eventData, setEventData] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)({});\n const eventRefs = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)({});\n const isMultiMode = testResult?.testconfig?.params?.cableType.includes('OM');\n // 加载事件数据\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)({\n \"EventMapView.useEffect\": ()=>{\n const loadTraceData = {\n \"EventMapView.useEffect.loadTraceData\": async ()=>{\n try {\n const wavelength1 = isMultiMode ? '850' : '1310';\n const wavelength2 = isMultiMode ? '1300' : '1550';\n const [data1, data2] = await Promise.all([\n __webpack_require__(\"(pages-dir-node)/./src/store/FIBER lazy recursive ^\\\\.\\\\/.*\\\\/.*\\\\-dump\\\\.json$\")(`./${testResult.ofpResult}/${wavelength1}-dump.json`),\n __webpack_require__(\"(pages-dir-node)/./src/store/FIBER lazy recursive ^\\\\.\\\\/.*\\\\/.*\\\\-dump\\\\.json$\")(`./${testResult.ofpResult}/${wavelength2}-dump.json`)\n ]);\n // 根据基准设置重新创建事件数据\n const mergedEvents = {};\n let firstEvent = null;\n // 1. 首先添加原始事件数据\n Object.keys(data1.event).forEach({\n \"EventMapView.useEffect.loadTraceData\": (eventKey)=>{\n mergedEvents[eventKey] = {\n ...data1.event[eventKey]\n }; // 使用展开运算符创建新对象\n }\n }[\"EventMapView.useEffect.loadTraceData\"]);\n // 2. 添加第二个波长的特殊事件\n Object.keys(data2.event).forEach({\n \"EventMapView.useEffect.loadTraceData\": (eventKey)=>{\n const event1 = data1.event[eventKey];\n const event2 = data2.event[eventKey];\n if (event2 && (!event1 || event2.type !== event1.type)) {\n mergedEvents[eventKey] = {\n ...event2\n }; // 使用展开运算符创建新对象\n }\n }\n }[\"EventMapView.useEffect.loadTraceData\"]);\n // 3. 根据当前基准设置完全重新组织事件结构\n const lastEventKey = Object.keys(mergedEvents)[Object.keys(mergedEvents).length - 1];\n const firstEventKey = Object.keys(mergedEvents)[0];\n if (!testResult.ofpRefStatus) {\n // 无基准设置\n // 判断首根光纤类型\n if (connectionStatus.OFPoutRefStatus?.includes('sm-') || connectionStatus.OFPoutRefStatus?.includes('mm-')) {\n // 短跳线\n mergedEvents['event0'] = {\n type: \"Start\",\n distance: 0,\n reflLoss: -35.25\n };\n mergedEvents['event1'] = {\n type: \"Hidden\",\n distance: 2,\n reflLoss: -14.18,\n spliceLoss: null\n };\n // 调整所有其他事件的位置,增加2米\n Object.keys(mergedEvents).forEach({\n \"EventMapView.useEffect.loadTraceData\": (key)=>{\n if (key !== 'event0' && key !== 'event1') {\n mergedEvents[key] = {\n ...mergedEvents[key],\n distance: mergedEvents[key].distance + 2\n };\n }\n }\n }[\"EventMapView.useEffect.loadTraceData\"]);\n // 修改最后一个事件\n const lastEvent = mergedEvents[lastEventKey];\n mergedEvents[lastEventKey] = {\n ...lastEvent,\n type: \"End\",\n spliceLoss: null\n };\n } else if (connectionStatus.OFPoutRefStatus?.includes('smc-') || connectionStatus.OFPoutRefStatus?.includes('mmc-')) {\n // 补偿光纤\n mergedEvents['event0'] = {\n type: \"Start\",\n distance: 0,\n reflLoss: -35.25\n };\n // 调整所有其他事件的位置,增加161.15米\n Object.keys(mergedEvents).forEach({\n \"EventMapView.useEffect.loadTraceData\": (key)=>{\n if (key !== 'event0') {\n mergedEvents[key] = {\n ...mergedEvents[key],\n distance: mergedEvents[key].distance + 161.15\n };\n }\n }\n }[\"EventMapView.useEffect.loadTraceData\"]);\n // 修改最后一个事件\n const lastEvent = mergedEvents[lastEventKey];\n mergedEvents[lastEventKey] = {\n ...lastEvent,\n type: \"End\",\n spliceLoss: null\n };\n }\n // 判断最后连接的光纤类型\n if (!connectionStatus.OFPConnectedToRefStatus) {\n // 无连接,不操作\n } else if (connectionStatus.OFPConnectedToRefStatus?.includes('sm-') || connectionStatus.OFPConnectedToRefStatus?.includes('mm-')) {\n // 短跳线\n const lastEvent = mergedEvents[lastEventKey];\n // 将最后一个事件改为反射器\n mergedEvents[lastEventKey] = {\n ...lastEvent,\n type: \"Reflector\",\n spliceLoss: null\n };\n // 添加新的结束事件\n mergedEvents[`event${Object.keys(mergedEvents).length}`] = {\n type: \"End\",\n distance: lastEvent.distance + 2,\n spliceLoss: null,\n reflLoss: lastEvent.reflLoss,\n attenuation: lastEvent.attenuation\n };\n } else if (connectionStatus.OFPConnectedToRefStatus?.includes('smc-') || connectionStatus.OFPConnectedToRefStatus?.includes('mmc-')) {\n // 补偿光纤\n const lastEvent = mergedEvents[lastEventKey];\n // 将最后一个事件改为反射器\n mergedEvents[lastEventKey] = {\n ...lastEvent,\n type: \"Reflector\",\n spliceLoss: null\n };\n // 添加新的结束事件\n mergedEvents[`event${Object.keys(mergedEvents).length}`] = {\n type: \"End\",\n distance: lastEvent.distance + 161.15,\n spliceLoss: null,\n reflLoss: lastEvent.reflLoss,\n attenuation: lastEvent.attenuation\n };\n }\n } else if (testResult.ofpRefStatus === 'start') {\n // 仅前导基准\n // 判断首根光纤类型\n if (connectionStatus.OFPoutRefStatus?.includes('sm-') || connectionStatus.OFPoutRefStatus?.includes('mm-')) {\n // 短跳线\n mergedEvents['event0'] = {\n type: \"Start\",\n distance: 0,\n reflLoss: -19.44\n };\n mergedEvents['event1'] = {\n type: \"Hidden\",\n distance: 2,\n reflLoss: -33.44,\n spliceLoss: null\n };\n // 修改最后一个事件\n const lastEvent = mergedEvents[lastEventKey];\n mergedEvents[lastEventKey] = {\n ...lastEvent,\n type: \"End\",\n distance: lastEvent.distance + 2,\n spliceLoss: null\n };\n } else if (connectionStatus.OFPoutRefStatus?.includes('smc-') || connectionStatus.OFPoutRefStatus?.includes('mmc-')) {\n // 补偿光纤\n mergedEvents['event0'] = {\n type: \"StartRef\",\n distance: -161.15,\n reflLoss: -33.79\n };\n // 修改最后一个事件\n const lastEvent = mergedEvents[lastEventKey];\n mergedEvents[lastEventKey] = {\n ...lastEvent,\n type: \"End\",\n distance: lastEvent.distance + 2,\n spliceLoss: null\n };\n }\n // 判断最后连接的光纤类型\n if (!connectionStatus.OFPConnectedToRefStatus) {\n // 无连接,不操作\n } else if (connectionStatus.OFPConnectedToRefStatus?.includes('sm-') || connectionStatus.OFPConnectedToRefStatus?.includes('mm-')) {\n // 短跳线\n const lastEvent = mergedEvents[lastEventKey];\n // 将最后一个事件改为反射器\n mergedEvents[lastEventKey] = {\n ...lastEvent,\n type: \"Reflector\",\n spliceLoss: null\n };\n // 添加新的结束事件\n mergedEvents[`event${Object.keys(mergedEvents).length}`] = {\n type: \"End\",\n distance: lastEvent.distance + 2,\n spliceLoss: null,\n reflLoss: lastEvent.reflLoss,\n attenuation: lastEvent.attenuation\n };\n } else if (connectionStatus.OFPConnectedToRefStatus?.includes('smc-') || connectionStatus.OFPConnectedToRefStatus?.includes('mmc-')) {\n // 补偿光纤\n const lastEvent = mergedEvents[lastEventKey];\n // 将最后一个事件改为反射器\n mergedEvents[lastEventKey] = {\n ...lastEvent,\n type: \"Reflector\",\n spliceLoss: 0.1\n };\n // 添加新的结束事件\n mergedEvents[`event${Object.keys(mergedEvents).length}`] = {\n type: \"End\",\n distance: lastEvent.distance + 161.15,\n spliceLoss: null,\n reflLoss: lastEvent.reflLoss,\n attenuation: lastEvent.attenuation\n };\n }\n } else if (testResult.ofpRefStatus === 'end') {\n // 前导和末导基准\n // 判断首根光纤类型\n if (connectionStatus.OFPoutRefStatus?.includes('sm-') || connectionStatus.OFPoutRefStatus?.includes('mm-')) {\n // 短跳线\n mergedEvents['event0'] = {\n type: \"Start\",\n distance: 0,\n reflLoss: -19.44\n };\n mergedEvents['event1'] = {\n type: \"Hidden\",\n distance: 2,\n reflLoss: -33.44,\n spliceLoss: null\n };\n // 调整所有其他事件的位置,增加2米\n Object.keys(mergedEvents).forEach({\n \"EventMapView.useEffect.loadTraceData\": (key)=>{\n if (key !== 'event0' && key !== 'event1') {\n mergedEvents[key] = {\n ...mergedEvents[key],\n distance: mergedEvents[key].distance + 2\n };\n }\n }\n }[\"EventMapView.useEffect.loadTraceData\"]);\n // 修改最后一个事件\n const lastEvent = mergedEvents[lastEventKey];\n mergedEvents[lastEventKey] = {\n ...lastEvent,\n type: \"End\",\n distance: lastEvent.distance + 2,\n spliceLoss: null\n };\n } else if (connectionStatus.OFPoutRefStatus?.includes('smc-') || connectionStatus.OFPoutRefStatus?.includes('mmc-')) {\n // 补偿光纤\n mergedEvents['event0'] = {\n type: \"StartRef\",\n distance: -161.15,\n reflLoss: -33.79\n };\n // 修改最后一个事件\n const lastEvent = mergedEvents[lastEventKey];\n mergedEvents[lastEventKey] = {\n ...lastEvent,\n type: \"End\",\n distance: lastEvent.distance + 2,\n spliceLoss: null\n };\n }\n // 判断最后连接的光纤类型\n if (!connectionStatus.OFPConnectedToRefStatus) {\n // 无连接\n const lastEvent = mergedEvents[lastEventKey];\n mergedEvents[lastEventKey] = {\n ...lastEvent,\n type: \"EndNoRef\",\n spliceLoss: null\n };\n } else if (connectionStatus.OFPConnectedToRefStatus?.includes('sm-') || connectionStatus.OFPConnectedToRefStatus?.includes('mm-')) {\n // 短跳线\n const lastEvent = mergedEvents[lastEventKey];\n // 将最后一个事件改为反射器\n mergedEvents[lastEventKey] = {\n ...lastEvent,\n type: \"Reflector\",\n spliceLoss: null\n };\n // 添加新的结束事件\n mergedEvents[`event${Object.keys(mergedEvents).length}`] = {\n type: \"End\",\n distance: lastEvent.distance + 2,\n spliceLoss: null,\n reflLoss: lastEvent.reflLoss,\n attenuation: lastEvent.attenuation\n };\n } else if (connectionStatus.OFPConnectedToRefStatus?.includes('smc-') || connectionStatus.OFPConnectedToRefStatus?.includes('mmc-')) {\n // 补偿光纤\n const lastEvent = mergedEvents[lastEventKey];\n // 将最后一个事件改为反射器\n mergedEvents[lastEventKey] = {\n ...lastEvent,\n type: \"Reflector\",\n spliceLoss: null\n };\n // 添加末尾补偿事件\n mergedEvents[`event${Object.keys(mergedEvents).length}`] = {\n type: \"EndRef\",\n distance: lastEvent.distance + 161.15,\n reflLoss: -28.54\n };\n }\n }\n // 更新summary信息\n const eventKeys = Object.keys(mergedEvents).sort({\n \"EventMapView.useEffect.loadTraceData.eventKeys\": (a, b)=>{\n const numA = parseInt(a.replace('event', ''));\n const numB = parseInt(b.replace('event', ''));\n return numA - numB;\n }\n }[\"EventMapView.useEffect.loadTraceData.eventKeys\"]);\n const summarylastEventKey = eventKeys[eventKeys.length - 1];\n const lastEvent = mergedEvents[summarylastEventKey];\n // 计算总损耗\n let totalLoss = null;\n const allSpliceLossNull = Object.values(mergedEvents).every({\n \"EventMapView.useEffect.loadTraceData.allSpliceLossNull\": (event)=>event.spliceLoss === null || event.spliceLoss === undefined\n }[\"EventMapView.useEffect.loadTraceData.allSpliceLossNull\"]);\n if (!allSpliceLossNull) {\n totalLoss = Object.values(mergedEvents).reduce({\n \"EventMapView.useEffect.loadTraceData\": (sum, event)=>{\n const loss = event.spliceLoss;\n if (loss === null || loss === undefined) return sum;\n return sum + loss;\n }\n }[\"EventMapView.useEffect.loadTraceData\"], 0).toFixed(2); // 总损耗保留两位小数\n }\n // 获取正确的distance值\n let finalDistance = lastEvent.distance;\n if (testResult.ofpRefStatus === 'end' && (connectionStatus.OFPConnectedToRefStatus?.includes('smc-') || connectionStatus.OFPConnectedToRefStatus?.includes('mmc-'))) {\n // 如果是末导基准且连接了补偿光纤,使用倒数第二个事件的distance\n const secondLastEventKey = eventKeys[eventKeys.length - 2];\n const secondLastEvent = mergedEvents[secondLastEventKey];\n finalDistance = secondLastEvent.distance;\n }\n const updatedSummary = {\n ...data1.Summary,\n totalDistance: Number(finalDistance.toFixed(2)),\n totalLoss: totalLoss !== null ? Number(totalLoss) : null // 如果有损耗值则转为数字\n };\n setEventData({\n events: mergedEvents,\n summary: updatedSummary\n });\n // 获取第一个事件\n firstEvent = mergedEvents[Object.keys(mergedEvents)[0]];\n // 设置第一个事件为选中状态\n setSelectedEvent(firstEvent);\n } catch (error) {\n console.error('Error loading trace data:', error);\n }\n }\n }[\"EventMapView.useEffect.loadTraceData\"];\n if (testResult?.ofpResult) {\n loadTraceData();\n }\n }\n }[\"EventMapView.useEffect\"], [\n testResult,\n isMultiMode\n ]);\n const processedEvents = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)({\n \"EventMapView.useMemo[processedEvents]\": ()=>{\n if (!eventData?.events) return [];\n return Object.entries(eventData.events).sort({\n \"EventMapView.useMemo[processedEvents]\": (a, b)=>parseInt(a[0].replace('event', '')) - parseInt(b[0].replace('event', ''))\n }[\"EventMapView.useMemo[processedEvents]\"]).reverse();\n }\n }[\"EventMapView.useMemo[processedEvents]\"], [\n eventData?.events\n ]);\n const getEventStatus = (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)({\n \"EventMapView.useCallback[getEventStatus]\": (event, nextEvent, prevEvent)=>{\n if (event.type === 'Reflector') {\n if (event.spliceLoss > 0.75) return 'fail';\n if (nextEvent?.type === 'StartRef') return 'leading';\n if (prevEvent?.type === 'EndRef') return 'trailing';\n return 'normal';\n }\n if (event.type === 'Splice') {\n return event.spliceLoss > 0.35 ? 'fail' : 'normal';\n }\n return 'normal';\n }\n }[\"EventMapView.useCallback[getEventStatus]\"], []);\n const getConnectionLineHeight = (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)({\n \"EventMapView.useCallback[getConnectionLineHeight]\": (eventsLength)=>{\n if (eventsLength <= 3) return '130px';\n if (eventsLength <= 4) return '100px';\n if (eventsLength <= 5) return '80px';\n if (eventsLength <= 6) return '65px';\n return '45px';\n }\n }[\"EventMapView.useCallback[getConnectionLineHeight]\"], []);\n const renderEventComponent = (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)({\n \"EventMapView.useCallback[renderEventComponent]\": (event, status)=>{\n switch(event.type){\n case 'End':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(StartPoint, {\n status: \"normal\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/EventMapView.js\",\n lineNumber: 374,\n columnNumber: 24\n }, this);\n case 'EndRef':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(EndRef, {}, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/EventMapView.js\",\n lineNumber: 375,\n columnNumber: 27\n }, this);\n case 'EndNoRef':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(EndNoRef, {}, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/EventMapView.js\",\n lineNumber: 376,\n columnNumber: 29\n }, this);\n case 'EndNoFiber':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(EndNoFiber, {}, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/EventMapView.js\",\n lineNumber: 377,\n columnNumber: 31\n }, this);\n case 'Reflector':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(Reflector, {\n status: status\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/EventMapView.js\",\n lineNumber: 378,\n columnNumber: 30\n }, this);\n case 'Hidden':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(Reflector, {\n status: \"hidden\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/EventMapView.js\",\n lineNumber: 379,\n columnNumber: 27\n }, this);\n case 'Splice':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(SplicePoint, {\n status: status\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/EventMapView.js\",\n lineNumber: 380,\n columnNumber: 27\n }, this);\n case 'Bend':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(BendEvent, {}, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/EventMapView.js\",\n lineNumber: 381,\n columnNumber: 25\n }, this);\n case 'Start':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(StartPoint, {\n status: \"normal\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/EventMapView.js\",\n lineNumber: 382,\n columnNumber: 26\n }, this);\n case 'StartRef':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(StartRef, {}, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/EventMapView.js\",\n lineNumber: 383,\n columnNumber: 29\n }, this);\n default:\n return null;\n }\n }\n }[\"EventMapView.useCallback[renderEventComponent]\"], []);\n // 反射器样式\n const Reflector = ({ status = 'normal' })=>{\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex justify-center items-center w-[8%] min-w-[15px] max-w-[20px] flex-shrink-0\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `w-[80%] h-0 pb-[120%] relative \n ${status === 'hidden' ? 'border-1 border-blue-500 bg-white' : ''}`,\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `w-[133%] h-[20%] absolute left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2 z-10\n ${status === 'hidden' ? 'border-1 border-blue-500 bg-white' : status === 'fail' ? 'bg-gradient-to-r from-[#8b0000] to-[#cc0000]' : status === 'leading' ? 'bg-gradient-to-r from-[#1a365d] to-[#2a4a7f]' : status === 'trailing' ? 'bg-gradient-to-r from-[#1a365d] to-[#2a4a7f]' : 'bg-gradient-to-r from-[#1a365d] to-[#2a4a7f]'}`\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/EventMapView.js\",\n lineNumber: 398,\n columnNumber: 15\n }, this),\n status !== 'hidden' && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `absolute top-0 left-0 right-0 h-[50%] \n ${status === 'fail' ? 'bg-[#8b0000]' : status === 'leading' ? 'bg-[#1a365d]' : status === 'trailing' ? 'bg-[#949294]' : 'bg-[#1a365d]'}`\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/EventMapView.js\",\n lineNumber: 409,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `absolute bottom-0 left-0 right-0 h-[50%] \n ${status === 'fail' ? 'bg-[#cc0000]' : status === 'leading' ? 'bg-[#949294]' : status === 'trailing' ? 'bg-[#2a4a7f]' : 'bg-[#2a4a7f]'}`\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/EventMapView.js\",\n lineNumber: 417,\n columnNumber: 19\n }, this),\n status === 'fail' && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute w-[80%] h-[80%] top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 z-10\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute w-full h-[3px] bg-white top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 rounded-[1.5px] rotate-45\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/EventMapView.js\",\n lineNumber: 426,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute w-full h-[3px] bg-white top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 rounded-[1.5px] -rotate-45\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/EventMapView.js\",\n lineNumber: 427,\n columnNumber: 23\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/EventMapView.js\",\n lineNumber: 425,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/EventMapView.js\",\n lineNumber: 394,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/EventMapView.js\",\n lineNumber: 393,\n columnNumber: 11\n }, this);\n };\n //起始点样式\n const StartPoint = ({ status = 'normal' })=>{\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex justify-center items-center w-[8%] min-w-[15px] max-w-[20px] flex-shrink-0\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-[80%] h-0 pb-[60%] relative\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `absolute top-0 left-0 right-0 h-full \n ${status === 'unnormal' ? 'bg-[#949294]' : 'bg-[#1a365d]'}`\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/EventMapView.js\",\n lineNumber: 442,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/EventMapView.js\",\n lineNumber: 440,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/EventMapView.js\",\n lineNumber: 439,\n columnNumber: 11\n }, this);\n };\n //前导样式\n const StartRef = ()=>{\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(StartPoint, {\n status: \"normal\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/EventMapView.js\",\n lineNumber: 453,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/EventMapView.js\",\n lineNumber: 452,\n columnNumber: 9\n }, this);\n };\n //末导样式\n const EndRef = ()=>{\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(StartPoint, {\n status: \"unnormal\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/EventMapView.js\",\n lineNumber: 462,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/EventMapView.js\",\n lineNumber: 461,\n columnNumber: 11\n }, this);\n };\n // 无末导事件样式\n const EndNoRef = ()=>{\n return(//
\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `w-4 h-4 rounded-full relative`,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute w-full h-full top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \" w-full h-[3px] bg-[#cc0000] translate-y-3 rounded-[1.5px] rotate-45\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/EventMapView.js\",\n lineNumber: 474,\n columnNumber: 14\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \" w-full h-[3px] bg-[#cc0000] translate-y-9/3 rounded-[1.5px] -rotate-45\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/EventMapView.js\",\n lineNumber: 475,\n columnNumber: 14\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/EventMapView.js\",\n lineNumber: 473,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/EventMapView.js\",\n lineNumber: 471,\n columnNumber: 9\n }, this));\n };\n // 无光纤\n const EndNoFiber = ()=>{\n return(//
\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `w-4 h-4 rounded-full relative`,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute w-full h-full top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \" w-full h-[3px] bg-[#cc0000] translate-y-3 rounded-[1.5px] rotate-45\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/EventMapView.js\",\n lineNumber: 488,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \" w-full h-[3px] bg-[#cc0000] translate-y-9/3 rounded-[1.5px] -rotate-45\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/EventMapView.js\",\n lineNumber: 489,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/EventMapView.js\",\n lineNumber: 487,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/EventMapView.js\",\n lineNumber: 485,\n columnNumber: 11\n }, this));\n };\n // 熔接点样式\n const SplicePoint = ({ status = 'normal' })=>{\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `w-4 h-4 rounded-full relative\n ${status === 'fail' ? 'bg-gradient-to-r from-[#8b0000] to-[#cc0000]' : 'bg-gradient-to-r from-[#1a365d] to-[#2a4a7f]'}`,\n children: status === 'fail' && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute w-full h-full top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute w-[80%] h-[3px] bg-white top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 rounded-[1.5px] rotate-45\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/EventMapView.js\",\n lineNumber: 503,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute w-[80%] h-[3px] bg-white top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 rounded-[1.5px] -rotate-45\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/EventMapView.js\",\n lineNumber: 504,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/EventMapView.js\",\n lineNumber: 502,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/EventMapView.js\",\n lineNumber: 497,\n columnNumber: 11\n }, this);\n };\n // 弯曲事件样式\n const BendEvent = ()=>{\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-5 h-5 rounded-full border-[5px] border-[#cc0000] bg-transparent -mr-0.5 flex-shrink-0\",\n style: {\n clipPath: 'inset(0 50% 0 0)'\n }\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/EventMapView.js\",\n lineNumber: 513,\n columnNumber: 11\n }, this);\n };\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full h-full flex flex-row bg-[#f0f0f0]\",\n children: [\n \" \",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-1/3 h-full flex flex-col\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full h-[100%] bg-white p-2 flex items-end justify-center\",\n children: [\n \" \",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full h-[90%] bg-white p-2 flex flex-col items-center justify-end relative\",\n children: [\n processedEvents.map(([key, event], index, array)=>{\n const nextEvent = array[index + 1]?.[1];\n const prevEvent = array[index - 1]?.[1];\n const distance = nextEvent ? (event.distance - nextEvent.distance).toFixed(1) : (eventData.summary.totalDistance - event.distance).toFixed(1);\n const status = getEventStatus(event, nextEvent, prevEvent);\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-col items-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n ref: (el)=>eventRefs.current[key] = el,\n onClick: ()=>setSelectedEvent(event),\n className: \"cursor-pointer\",\n children: renderEventComponent(event, status)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/EventMapView.js\",\n lineNumber: 535,\n columnNumber: 11\n }, this),\n index < array.length - 1 && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center relative\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute left-[-65px] text-sm text-black whitespace-nowrap\",\n children: [\n distance,\n \" m\"\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/EventMapView.js\",\n lineNumber: 545,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `w-[2px] ${nextEvent?.type === 'StartRef' || event.type === 'EndRef' ? 'bg-gray-400' : 'bg-black'}`,\n style: {\n height: getConnectionLineHeight(array.length)\n }\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/EventMapView.js\",\n lineNumber: 548,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/EventMapView.js\",\n lineNumber: 544,\n columnNumber: 13\n }, this)\n ]\n }, key, true, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/EventMapView.js\",\n lineNumber: 534,\n columnNumber: 9\n }, this);\n }),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_3___default()), {\n src: (0,_utils_asset__WEBPACK_IMPORTED_MODULE_4__.getAssetUrl)('/otdr-start.png'),\n alt: \"OTDR Start\",\n width: 40,\n height: 40\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/EventMapView.js\",\n lineNumber: 557,\n columnNumber: 5\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/EventMapView.js\",\n lineNumber: 524,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/EventMapView.js\",\n lineNumber: 523,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/EventMapView.js\",\n lineNumber: 522,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-2/3 h-full flex flex-col\",\n children: [\n \" \",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[20%] bg-white p-3 flex justify-between items-start \",\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: \"flex items-center mb-1\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-black font-bold\",\n children: \"光纤长度:\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/EventMapView.js\",\n lineNumber: 573,\n columnNumber: 29\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-black ml-1\",\n children: [\n eventData?.summary?.totalDistance || '0',\n \" m\"\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/EventMapView.js\",\n lineNumber: 574,\n columnNumber: 29\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/EventMapView.js\",\n lineNumber: 572,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-black font-bold\",\n children: \"总体损耗:\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/EventMapView.js\",\n lineNumber: 577,\n columnNumber: 29\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-black ml-1\",\n children: [\n eventData?.summary?.totalLoss || 'N/A',\n \" dB\"\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/EventMapView.js\",\n lineNumber: 578,\n columnNumber: 29\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/EventMapView.js\",\n lineNumber: 576,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/EventMapView.js\",\n lineNumber: 571,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-orange-500 font-bold\",\n children: \"端点1\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/EventMapView.js\",\n lineNumber: 581,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/EventMapView.js\",\n lineNumber: 570,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[60%] bg-white p-2 relative\",\n children: [\n \" \",\n selectedEvent && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute p-4 rounded-lg shadow-lg bg-gradient-to-b from-gray-200 to-gray-300 border-2\",\n style: {\n top: '50%',\n left: '50%',\n transform: 'translate(-50%, -50%)',\n width: '80%',\n maxWidth: '350px',\n zIndex: 10,\n borderColor: selectedEvent.type === 'StartRef' || selectedEvent.type === 'Start' ? '#1a9850' : selectedEvent.type === 'EndRef' || selectedEvent.type === 'End' ? '#1a365d' : selectedEvent.spliceLoss > 0.75 || selectedEvent.spliceLoss > 0.35 ? '#cc0000' : '#1a365d'\n },\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute w-0 h-0 border-solid\",\n style: {\n left: '-20px',\n top: '50%',\n transform: 'translateY(-50%)',\n borderWidth: '10px 20px 10px 0',\n borderColor: 'transparent ' + (selectedEvent.type === 'StartRef' || selectedEvent.type === 'Start' ? '#1a9850' : selectedEvent.type === 'EndRef' || selectedEvent.type === 'End' ? '#1a365d' : selectedEvent.spliceLoss > 0.75 || selectedEvent.spliceLoss > 0.35 ? '#cc0000' : '#1a365d') + ' transparent transparent'\n }\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/EventMapView.js\",\n lineNumber: 602,\n columnNumber: 29\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-center font-bold text-xl mb-4\",\n children: selectedEvent.type === 'StartRef' ? 'OTDR端口' : selectedEvent.type === 'EndRef' ? '末尾事件' : selectedEvent.type === 'EndNoRef' ? '未找到末尾事件' : selectedEvent.type === 'Start' ? 'OTDR端口' : selectedEvent.type === 'End' ? '端点' : selectedEvent.type === 'Reflector' ? '反射器' : selectedEvent.type === 'Hidden' ? '隐藏事件' : selectedEvent.type === 'Splice' ? '熔接点' : selectedEvent.type === 'Bend' ? '弯曲事件' : '事件'\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/EventMapView.js\",\n lineNumber: 617,\n columnNumber: 29\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mb-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-center mb-2\",\n children: [\n \"在\",\n selectedEvent.distance.toFixed(2),\n \" m\"\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/EventMapView.js\",\n lineNumber: 631,\n columnNumber: 33\n }, this),\n (selectedEvent.type === 'Reflector' || selectedEvent.type === 'Hidden' || selectedEvent.type === 'EndRef') && /*#__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-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"img\", {\n src: selectedEvent.spliceLoss > 0.75 ? (0,_utils_asset__WEBPACK_IMPORTED_MODULE_4__.getAssetUrl)('/fail.png') : (0,_utils_asset__WEBPACK_IMPORTED_MODULE_4__.getAssetUrl)('/pass.png'),\n alt: \"status\",\n className: \"w-4 h-4 mr-2\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/EventMapView.js\",\n lineNumber: 640,\n columnNumber: 45\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"font-bold\",\n children: \"损耗:\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/EventMapView.js\",\n lineNumber: 645,\n columnNumber: 45\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/EventMapView.js\",\n lineNumber: 639,\n columnNumber: 41\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n children: [\n selectedEvent.spliceLoss ? selectedEvent.spliceLoss.toFixed(2) : '0',\n \" dB\"\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/EventMapView.js\",\n lineNumber: 647,\n columnNumber: 41\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/EventMapView.js\",\n lineNumber: 638,\n columnNumber: 37\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex justify-between items-center mb-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-4 h-4 mr-2\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/EventMapView.js\",\n lineNumber: 651,\n columnNumber: 43\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"font-bold\",\n children: \"反射率:\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/EventMapView.js\",\n lineNumber: 652,\n columnNumber: 43\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/EventMapView.js\",\n lineNumber: 650,\n columnNumber: 39\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n children: [\n selectedEvent.reflLoss ? selectedEvent.reflLoss.toFixed(2) : '0',\n \" dB\"\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/EventMapView.js\",\n lineNumber: 654,\n columnNumber: 39\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/EventMapView.js\",\n lineNumber: 649,\n columnNumber: 37\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/EventMapView.js\",\n lineNumber: 637,\n columnNumber: 37\n }, this),\n (selectedEvent.type === 'Splice' || selectedEvent.type === 'Bend') && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex justify-between items-center mb-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"img\", {\n src: selectedEvent.type === 'Splice' ? selectedEvent.spliceLoss > 0.35 ? (0,_utils_asset__WEBPACK_IMPORTED_MODULE_4__.getAssetUrl)('/fail.png') : (0,_utils_asset__WEBPACK_IMPORTED_MODULE_4__.getAssetUrl)('/pass.png') : selectedEvent.spliceLoss > 0.75 ? (0,_utils_asset__WEBPACK_IMPORTED_MODULE_4__.getAssetUrl)('/fail.png') : (0,_utils_asset__WEBPACK_IMPORTED_MODULE_4__.getAssetUrl)('/pass.png'),\n alt: \"status\",\n className: \"w-4 h-4 mr-2\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/EventMapView.js\",\n lineNumber: 662,\n columnNumber: 45\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"font-bold\",\n children: \"损耗:\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/EventMapView.js\",\n lineNumber: 669,\n columnNumber: 45\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/EventMapView.js\",\n lineNumber: 661,\n columnNumber: 41\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n children: [\n selectedEvent.spliceLoss ? selectedEvent.spliceLoss.toFixed(2) : '0',\n \" dB\"\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/EventMapView.js\",\n lineNumber: 671,\n columnNumber: 41\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/EventMapView.js\",\n lineNumber: 660,\n columnNumber: 37\n }, this),\n (selectedEvent.type === 'StartRef' || selectedEvent.type === 'Start' || selectedEvent.type === 'End') && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex justify-between items-center mb-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-4 h-4 mr-2\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/EventMapView.js\",\n lineNumber: 679,\n columnNumber: 43\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"font-bold\",\n children: \"反射率:\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/EventMapView.js\",\n lineNumber: 680,\n columnNumber: 43\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/EventMapView.js\",\n lineNumber: 678,\n columnNumber: 39\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n children: [\n selectedEvent.reflLoss ? selectedEvent.reflLoss.toFixed(2) : '0',\n \" dB\"\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/EventMapView.js\",\n lineNumber: 682,\n columnNumber: 39\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/EventMapView.js\",\n lineNumber: 677,\n columnNumber: 37\n }, this),\n (selectedEvent.type === 'Start' || selectedEvent.type === 'StartRef') && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mt-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-center mb-2\",\n children: \"端口连接质量\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/EventMapView.js\",\n lineNumber: 689,\n columnNumber: 41\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"relative h-4 bg-gray-200 rounded-full overflow-hidden\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute top-0 left-0 h-full w-full flex\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-full bg-red-600\",\n style: {\n width: '33%'\n }\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/EventMapView.js\",\n lineNumber: 692,\n columnNumber: 49\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-full bg-yellow-400\",\n style: {\n width: '33%'\n }\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/EventMapView.js\",\n lineNumber: 693,\n columnNumber: 49\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-full bg-green-500\",\n style: {\n width: '34%'\n }\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/EventMapView.js\",\n lineNumber: 694,\n columnNumber: 49\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/EventMapView.js\",\n lineNumber: 691,\n columnNumber: 45\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute top-0 right-4 h-full flex items-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-3 h-3 bg-black transform rotate-45\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/EventMapView.js\",\n lineNumber: 697,\n columnNumber: 49\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/EventMapView.js\",\n lineNumber: 696,\n columnNumber: 45\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute bottom-[-20px] right-4 text-xs\",\n children: \"良好\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/EventMapView.js\",\n lineNumber: 699,\n columnNumber: 45\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/EventMapView.js\",\n lineNumber: 690,\n columnNumber: 41\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/EventMapView.js\",\n lineNumber: 688,\n columnNumber: 37\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/EventMapView.js\",\n lineNumber: 630,\n columnNumber: 29\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/EventMapView.js\",\n lineNumber: 588,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/EventMapView.js\",\n lineNumber: 585,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[20%] bg-white p-2 flex flex-col items-start justify-center\",\n children: [\n \" \",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black text-sm mb-1\",\n children: [\n \"光纤类型: \",\n testResult?.testconfig?.params?.cableType || null\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/EventMapView.js\",\n lineNumber: 710,\n columnNumber: 21\n }, this),\n \" \",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black text-sm mb-1\",\n children: [\n \"测试极限值: \",\n testResult?.testconfig?.params?.limitValue || null\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/EventMapView.js\",\n lineNumber: 711,\n columnNumber: 21\n }, this),\n \" \",\n view === 'nosave' && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black text-sm\",\n children: [\n \"下一个ID: \",\n currentCableId?.name || 'OTDR-02'\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/EventMapView.js\",\n lineNumber: 713,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/EventMapView.js\",\n lineNumber: 709,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/EventMapView.js\",\n lineNumber: 568,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/EventMapView.js\",\n lineNumber: 520,\n columnNumber: 5\n }, this);\n}\n\n__webpack_async_result__();\n} catch(e) { __webpack_async_result__(e); } });//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHBhZ2VzLWRpci1ub2RlKS8uL3NyYy9jb21wb25lbnRzL2xpYi9FdmVudE1hcFZpZXcuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUF5RTtBQUN0QjtBQUNwQjtBQUNBO0FBQ2E7QUFFN0IsU0FBU1MsYUFBYSxFQUFFQyxVQUFVLEVBQUU7SUFDL0MsTUFBT0MsbUJBQW1CRCxXQUFXRSxtQkFBbUI7SUFDeEQsTUFBTSxFQUFFQyxJQUFJLEVBQUUsR0FBR1Isb0VBQXdCLEdBQUdVLFVBQVUsQ0FBQ0MsT0FBTztJQUM5RCxNQUFNQyxpQkFBaUJaLG9FQUF3QixHQUFHYSxpQkFBaUI7SUFDbkUsTUFBTSxDQUFDQyxlQUFlQyxpQkFBaUIsR0FBR25CLCtDQUFRQSxDQUFDO0lBQ25ELE1BQU0sQ0FBQ29CLFdBQVdDLGFBQWEsR0FBR3JCLCtDQUFRQSxDQUFDLENBQUM7SUFDNUMsTUFBTXNCLFlBQVloQiw2Q0FBTUEsQ0FBQyxDQUFDO0lBQzFCLE1BQU1pQixjQUFjZCxZQUFZZSxZQUFZQyxRQUFRQyxVQUFVQyxTQUFTO0lBRTNFLFNBQVM7SUFDTDFCLGdEQUFTQTtrQ0FBQztZQUNOLE1BQU0yQjt3REFBZ0I7b0JBRWxCLElBQUk7d0JBQ0EsTUFBTUMsY0FBY04sY0FBYyxRQUFRO3dCQUMxQyxNQUFNTyxjQUFjUCxjQUFjLFNBQVM7d0JBQzNDLE1BQU0sQ0FBQ1EsT0FBT0MsTUFBTSxHQUFHLE1BQU1DLFFBQVFDLEdBQUcsQ0FBQzs0QkFDdkMsdUdBQU8sR0FBZSxFQUFFekIsV0FBVzBCLFNBQVMsQ0FBQyxDQUFDLEVBQUVOLFlBQVksV0FBVyxDQUFDOzRCQUN4RSx1R0FBTyxHQUFlLEVBQUVwQixXQUFXMEIsU0FBUyxDQUFDLENBQUMsRUFBRUwsWUFBWSxXQUFXLENBQUM7eUJBQzNFO3dCQUVDLGlCQUFpQjt3QkFDakIsTUFBTU0sZUFBZSxDQUFDO3dCQUN0QixJQUFJQyxhQUFhO3dCQUNqQixnQkFBZ0I7d0JBQ2hCQyxPQUFPQyxJQUFJLENBQUNSLE1B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QUN4Ryw4REFBQytFO2dDQUFJQyxXQUFVOztvQ0FBMEI7b0NBQVFqRyxZQUFZZSxZQUFZQyxRQUFRdUcsY0FBYzs7Ozs7Ozs0QkFBVzs0QkFDekdwSCxTQUFTLDBCQUNOLDhEQUFDNkY7Z0NBQUlDLFdBQVU7O29DQUFxQjtvQ0FBUTFGLGdCQUFnQmlILFFBQVE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFNNUYiLCJzb3VyY2VzIjpbIi9vcHQvZGV2L2VzdC1kc3gvc3JjL2NvbXBvbmVudHMvbGliL0V2ZW50TWFwVmlldy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUsIHVzZUVmZmVjdCwgdXNlTWVtbywgdXNlQ2FsbGJhY2sgfSBmcm9tICdyZWFjdCc7XHJcbmltcG9ydCB1c2VEaXNwbGF5U3RvcmUgZnJvbSAnQC9zdG9yZS9kaXNwbGF5U3RvcmUnO1xyXG5pbXBvcnQgSW1hZ2UgZnJvbSAnbmV4dC9pbWFnZSc7XHJcbmltcG9ydCB7IHVzZVJlZiB9IGZyb20gJ3JlYWN0JztcclxuaW1wb3J0IHsgZ2V0QXNzZXRVcmwgfSBmcm9tICdAL3V0aWxzL2Fzc2V0JztcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEV2ZW50TWFwVmlldyh7IHRlc3RSZXN1bHQgfSkge1xyXG4gICAgY29uc3QgIGNvbm5lY3Rpb25TdGF0dXMgPSB0ZXN0UmVzdWx0Lm9mcENvbm5lY3Rpb25TdGF0dXM7XHJcbiAgICBjb25zdCB7IHZpZXcgfSA9IHVzZURpc3BsYXlTdG9yZS5nZXRTdGF0ZSgpLm5hdmlnYXRpb24uY3VycmVudDtcclxuICAgIGNvbnN0IGN1cnJlbnRDYWJsZUlkID0gdXNlRGlzcGxheVN0b3JlLmdldFN0YXRlKCkuZ2V0Q3VycmVudENhYmxlSWQoKTtcclxuICAgIGNvbnN0IFtzZWxlY3RlZEV2ZW50LCBzZXRTZWxlY3RlZEV2ZW50XSA9IHVzZVN0YXRlKG51bGwpO1xyXG4gICAgY29uc3QgW2V2ZW50RGF0YSwgc2V0RXZlbnREYXRhXSA9IHVzZVN0YXRlKHt9KTtcclxuICAgIGNvbnN0IGV2ZW50UmVmcyA9IHVzZVJlZih7fSk7XHJcbiAgICBjb25zdCBpc011bHRpTW9kZSA9IHRlc3RSZXN1bHQ/LnRlc3Rjb25maWc/LnBhcmFtcz8uY2FibGVUeXBlLmluY2x1ZGVzKCdPTScpO1xyXG5cclxuLy8g5Yqg6L295LqL5Lu25pWw5o2uXHJcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGxvYWRUcmFjZURhdGEgPSBhc3luYyAoKSA9PiB7XHJcblxyXG4gICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgY29uc3Qgd2F2ZWxlbmd0aDEgPSBpc011bHRpTW9kZSA/ICc4NTAnIDogJzEzMTAnO1xyXG4gICAgICAgICAgICAgICAgY29uc3Qgd2F2ZWxlbmd0aDIgPSBpc011bHRpTW9kZSA/ICcxMzAwJyA6ICcxNTUwJztcclxuICAgICAgICAgICAgICAgIGNvbnN0IFtkYXRhMSwgZGF0YTJdID0gYXdhaXQgUHJvbWlzZS5hbGwoW1xyXG4gICAgICAgICAgICAgICAgICBpbXBvcnQoYEAvc3RvcmUvRklCRVIvJHt0ZXN0UmVzdWx0Lm9mcFJlc3VsdH0vJHt3YXZlbGVuZ3RoMX0tZHVtcC5qc29uYCksXHJcbiAgICAgICAgICAgICAgICAgIGltcG9ydChgQC9zdG9yZS9GSUJFUi8ke3Rlc3RSZXN1bHQub2ZwUmVzdWx0fS8ke3dhdmVsZW5ndGgyfS1kdW1wLmpzb25gKVxyXG4gICAgICAgICAgICAgIF0pO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIC8vIOagueaNruWfuuWHhuiuvue9rumHjeaWsOWIm+W7uuS6i+S7tuaVsOaNrlxyXG4gICAgICAgICAgICAgICAgY29uc3QgbWVyZ2VkRXZlbnRzID0ge307XHJcbiAgICAgICAgICAgICAgICBsZXQgZmlyc3RFdmVudCA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICAvLyAxLiDpppblhYjmt7vliqDljp/lp4vkuovku7bmlbDmja5cclxuICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKGRhdGExLmV2ZW50KS5mb3JFYWNoKGV2ZW50S2V5ID0+IHtcclxuICAgICAgICAgICAgICAgICAgbWVyZ2VkRXZlbnRzW2V2ZW50S2V5XSA9IHsuLi5kYXRhMS5ldmVudFtldmVudEtleV19OyAvLyDkvb/nlKjlsZXlvIDov5DnrpfnrKbliJvlu7rmlrDlr7nosaFcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgLy8gMi4g5re75Yqg56ys5LqM5Liq5rOi6ZW/55qE54m55q6K5LqL5Lu2XHJcbiAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyhkYXRhMi5ldmVudCkuZm9yRWFjaChldmVudEtleSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGV2ZW50MSA9IGRhdGExLmV2ZW50W2V2ZW50S2V5XTtcclxuICAgICAgICAgICAgICAgICAgY29uc3QgZXZlbnQyID0gZGF0YTIuZXZlbnRbZXZlbnRLZXldO1xyXG4gICAgICAgICAgICAgICAgICBpZiAoZXZlbnQyICYmICghZXZlbnQxIHx8IGV2ZW50Mi50eXBlICE9PSBldmVudDEudHlwZSkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgIG1lcmdlZEV2ZW50c1tldmVudEtleV0gPSB7Li4uZXZlbnQyfTsgLy8g5L2/55So5bGV5byA6L+Q566X56ym5Yib5bu65paw5a+56LGhXHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgICAgICAvLyAzLiDmoLnmja7lvZPliY3ln7rlh4borr7nva7lrozlhajph43mlrDnu4Tnu4fkuovku7bnu5PmnoRcclxuICAgICAgICAgICAgICAgIGNvbnN0IGxhc3RFdmVudEtleSA9IE9iamVjdC5rZXlzKG1lcmdlZEV2ZW50cylbT2JqZWN0LmtleXMobWVyZ2VkRXZlbnRzKS5sZW5ndGggLSAxXTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGZpcnN0RXZlbnRLZXkgPSBPYmplY3Qua2V5cyhtZXJnZWRFdmVudHMpWzBdOyAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIGlmICghdGVzdFJlc3VsdC5vZnBSZWZTdGF0dXMpIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyDml6Dln7rlh4borr7nva5cclxuICAgICAgICAgICAgICAgICAgICAvLyDliKTmlq3pppbmoLnlhYnnuqTnsbvlnotcclxuICAgICAgICAgICAgICAgICAgICBpZiAoY29ubmVjdGlvblN0YXR1cy5PRlBvdXRSZWZTdGF0dXM/LmluY2x1ZGVzKCdzbS0nKSB8fCBjb25uZWN0aW9uU3RhdHVzLk9GUG91dFJlZlN0YXR1cz8uaW5jbHVkZXMoJ21tLScpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIOefrei3s+e6v1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXJnZWRFdmVudHNbJ2V2ZW50MCddID0geyB0eXBlOiBcIlN0YXJ0XCIsIGRpc3RhbmNlOiAwLCByZWZsTG9zczogLTM1LjI1IH07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lcmdlZEV2ZW50c1snZXZlbnQxJ10gPSB7IHR5cGU6IFwiSGlkZGVuXCIsIGRpc3RhbmNlOiAyLCByZWZsTG9zczogLTE0LjE4LCBzcGxpY2VMb3NzOiBudWxsIH07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyDosIPmlbTmiYDmnInlhbbku5bkuovku7bnmoTkvY3nva7vvIzlop7liqAy57GzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKG1lcmdlZEV2ZW50cykuZm9yRWFjaChrZXkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGtleSAhPT0gJ2V2ZW50MCcgJiYga2V5ICE9PSAnZXZlbnQxJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lcmdlZEV2ZW50c1trZXldID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5tZXJnZWRFdmVudHNba2V5XSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzdGFuY2U6IG1lcmdlZEV2ZW50c1trZXldLmRpc3RhbmNlICsgMlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8g5L+u5pS55pyA5ZCO5LiA5Liq5LqL5Lu2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxhc3RFdmVudCA9IG1lcmdlZEV2ZW50c1tsYXN0RXZlbnRLZXldO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXJnZWRFdmVudHNbbGFzdEV2ZW50S2V5XSA9IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmxhc3RFdmVudCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFwiRW5kXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGxpY2VMb3NzOiBudWxsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjb25uZWN0aW9uU3RhdHVzLk9GUG91dFJlZlN0YXR1cz8uaW5jbHVkZXMoJ3NtYy0nKSB8fCBjb25uZWN0aW9uU3RhdHVzLk9GUG91dFJlZlN0YXR1cz8uaW5jbHVkZXMoJ21tYy0nKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyDooaXlgb/lhYnnuqRcclxuICAgICAgICAgICAgICAgICAgICAgICAgbWVyZ2VkRXZlbnRzWydldmVudDAnXSA9IHsgdHlwZTogXCJTdGFydFwiLCBkaXN0YW5jZTogMCwgcmVmbExvc3M6IC0zNS4yNSB9O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8g6LCD5pW05omA5pyJ5YW25LuW5LqL5Lu255qE5L2N572u77yM5aKe5YqgMTYxLjE157GzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKG1lcmdlZEV2ZW50cykuZm9yRWFjaChrZXkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGtleSAhPT0gJ2V2ZW50MCcpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXJnZWRFdmVudHNba2V5XSA9IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4ubWVyZ2VkRXZlbnRzW2tleV0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3RhbmNlOiBtZXJnZWRFdmVudHNba2V5XS5kaXN0YW5jZSArIDE2MS4xNVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8g5L+u5pS55pyA5ZCO5LiA5Liq5LqL5Lu2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxhc3RFdmVudCA9IG1lcmdlZEV2ZW50c1tsYXN0RXZlbnRLZXldO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXJnZWRFdmVudHNbbGFzdEV2ZW50S2V5XSA9IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmxhc3RFdmVudCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFwiRW5kXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGxpY2VMb3NzOiBudWxsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAvLyDliKTmlq3mnIDlkI7ov57mjqXnmoTlhYnnuqTnsbvlnotcclxuICAgICAgICAgICAgICAgICAgICBpZiAoIWNvbm5lY3Rpb25TdGF0dXMuT0ZQQ29ubmVjdGVkVG9SZWZTdGF0dXMpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8g5peg6L+e5o6l77yM5LiN5pON5L2cXHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjb25uZWN0aW9uU3RhdHVzLk9GUENvbm5lY3RlZFRvUmVmU3RhdHVzPy5pbmNsdWRlcygnc20tJykgfHwgY29ubmVjdGlvblN0YXR1cy5PRlBDb25uZWN0ZWRUb1JlZlN0YXR1cz8uaW5jbHVkZXMoJ21tLScpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIOefrei3s+e6v1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsYXN0RXZlbnQgPSBtZXJnZWRFdmVudHNbbGFzdEV2ZW50S2V5XTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8g5bCG5pyA5ZCO5LiA5Liq5LqL5Lu25pS55Li65Y+N5bCE5ZmoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lcmdlZEV2ZW50c1tsYXN0RXZlbnRLZXldID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4ubGFzdEV2ZW50LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJSZWZsZWN0b3JcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwbGljZUxvc3M6IG51bGxcclxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8g5re75Yqg5paw55qE57uT5p2f5LqL5Lu2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lcmdlZEV2ZW50c1tgZXZlbnQke09iamVjdC5rZXlzKG1lcmdlZEV2ZW50cykubGVuZ3RofWBdID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJFbmRcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3RhbmNlOiBsYXN0RXZlbnQuZGlzdGFuY2UgKyAyLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BsaWNlTG9zczogbnVsbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZmxMb3NzOiBsYXN0RXZlbnQucmVmbExvc3MsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRlbnVhdGlvbjogbGFzdEV2ZW50LmF0dGVudWF0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjb25uZWN0aW9uU3RhdHVzLk9GUENvbm5lY3RlZFRvUmVmU3RhdHVzPy5pbmNsdWRlcygnc21jLScpIHx8IGNvbm5lY3Rpb25TdGF0dXMuT0ZQQ29ubmVjdGVkVG9SZWZTdGF0dXM/LmluY2x1ZGVzKCdtbWMtJykpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8g6KGl5YG/5YWJ57qkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxhc3RFdmVudCA9IG1lcmdlZEV2ZW50c1tsYXN0RXZlbnRLZXldO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyDlsIbmnIDlkI7kuIDkuKrkuovku7bmlLnkuLrlj43lsITlmahcclxuICAgICAgICAgICAgICAgICAgICAgICAgbWVyZ2VkRXZlbnRzW2xhc3RFdmVudEtleV0gPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5sYXN0RXZlbnQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBcIlJlZmxlY3RvclwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BsaWNlTG9zczogbnVsbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyDmt7vliqDmlrDnmoTnu5PmnZ/kuovku7ZcclxuICAgICAgICAgICAgICAgICAgICAgICAgbWVyZ2VkRXZlbnRzW2BldmVudCR7T2JqZWN0LmtleXMobWVyZ2VkRXZlbnRzKS5sZW5ndGh9YF0gPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBcIkVuZFwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzdGFuY2U6IGxhc3RFdmVudC5kaXN0YW5jZSArIDE2MS4xNSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwbGljZUxvc3M6IG51bGwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZsTG9zczogbGFzdEV2ZW50LnJlZmxMb3NzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0ZW51YXRpb246IGxhc3RFdmVudC5hdHRlbnVhdGlvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGVzdFJlc3VsdC5vZnBSZWZTdGF0dXMgPT09ICdzdGFydCcpIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyDku4XliY3lr7zln7rlh4ZcclxuICAgICAgICAgICAgICAgICAgICAvLyDliKTmlq3pppbmoLnlhYnnuqTnsbvlnotcclxuICAgICAgICAgICAgICAgICAgICBpZiAoY29ubmVjdGlvblN0YXR1cy5PRlBvdXRSZWZTdGF0dXM/LmluY2x1ZGVzKCdzbS0nKSB8fCBjb25uZWN0aW9uU3RhdHVzLk9GUG91dFJlZlN0YXR1cz8uaW5jbHVkZXMoJ21tLScpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIOefrei3s+e6v1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXJnZWRFdmVudHNbJ2V2ZW50MCddID0geyB0eXBlOiBcIlN0YXJ0XCIsIGRpc3RhbmNlOiAwLCByZWZsTG9zczogLTE5LjQ0IH07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lcmdlZEV2ZW50c1snZXZlbnQxJ10gPSB7IHR5cGU6IFwiSGlkZGVuXCIsIGRpc3RhbmNlOiAyLCByZWZsTG9zczogLTMzLjQ0LCBzcGxpY2VMb3NzOiBudWxsIH07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIOS/ruaUueacgOWQjuS4gOS4quS6i+S7tlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsYXN0RXZlbnQgPSBtZXJnZWRFdmVudHNbbGFzdEV2ZW50S2V5XTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbWVyZ2VkRXZlbnRzW2xhc3RFdmVudEtleV0gPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5sYXN0RXZlbnQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBcIkVuZFwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzdGFuY2U6IGxhc3RFdmVudC5kaXN0YW5jZSArIDIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGxpY2VMb3NzOiBudWxsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjb25uZWN0aW9uU3RhdHVzLk9GUG91dFJlZlN0YXR1cz8uaW5jbHVkZXMoJ3NtYy0nKSB8fCBjb25uZWN0aW9uU3RhdHVzLk9GUG91dFJlZlN0YXR1cz8uaW5jbHVkZXMoJ21tYy0nKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyDooaXlgb/lhYnnuqRcclxuICAgICAgICAgICAgICAgICAgICAgICAgbWVyZ2VkRXZlbnRzWydldmVudDAnXSA9IHsgdHlwZTogXCJTdGFydFJlZlwiLCBkaXN0YW5jZTogLTE2MS4xNSwgcmVmbExvc3M6IC0zMy43OSB9O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyDkv67mlLnmnIDlkI7kuIDkuKrkuovku7ZcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGFzdEV2ZW50ID0gbWVyZ2VkRXZlbnRzW2xhc3RFdmVudEtleV07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lcmdlZEV2ZW50c1tsYXN0RXZlbnRLZXldID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4ubGFzdEV2ZW50LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJFbmRcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3RhbmNlOiBsYXN0RXZlbnQuZGlzdGFuY2UgKyAyLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BsaWNlTG9zczogbnVsbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgLy8g5Yik5pat5pyA5ZCO6L+e5o6l55qE5YWJ57qk57G75Z6LXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFjb25uZWN0aW9uU3RhdHVzLk9GUENvbm5lY3RlZFRvUmVmU3RhdHVzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIOaXoOi/nuaOpe+8jOS4jeaTjeS9nFxyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoY29ubmVjdGlvblN0YXR1cy5PRlBDb25uZWN0ZWRUb1JlZlN0YXR1cz8uaW5jbHVkZXMoJ3NtLScpIHx8IGNvbm5lY3Rpb25TdGF0dXMuT0ZQQ29ubmVjdGVkVG9SZWZTdGF0dXM/LmluY2x1ZGVzKCdtbS0nKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyDnn63ot7Pnur9cclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGFzdEV2ZW50ID0gbWVyZ2VkRXZlbnRzW2xhc3RFdmVudEtleV07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIOWwhuacgOWQjuS4gOS4quS6i+S7tuaUueS4uuWPjeWwhOWZqFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXJnZWRFdmVudHNbbGFzdEV2ZW50S2V5XSA9IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmxhc3RFdmVudCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFwiUmVmbGVjdG9yXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGxpY2VMb3NzOiBudWxsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIOa3u+WKoOaWsOeahOe7k+adn+S6i+S7tlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXJnZWRFdmVudHNbYGV2ZW50JHtPYmplY3Qua2V5cyhtZXJnZWRFdmVudHMpLmxlbmd0aH1gXSA9IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFwiRW5kXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXN0YW5jZTogbGFzdEV2ZW50LmRpc3RhbmNlICsgMixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwbGljZUxvc3M6IG51bGwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZsTG9zczogbGFzdEV2ZW50LnJlZmxMb3NzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0ZW51YXRpb246IGxhc3RFdmVudC5hdHRlbnVhdGlvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoY29ubmVjdGlvblN0YXR1cy5PRlBDb25uZWN0ZWRUb1JlZlN0YXR1cz8uaW5jbHVkZXMoJ3NtYy0nKSB8fCBjb25uZWN0aW9uU3RhdHVzLk9GUENvbm5lY3RlZFRvUmVmU3RhdHVzPy5pbmNsdWRlcygnbW1jLScpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIOihpeWBv+WFiee6pFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsYXN0RXZlbnQgPSBtZXJnZWRFdmVudHNbbGFzdEV2ZW50S2V5XTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8g5bCG5pyA5ZCO5LiA5Liq5LqL5Lu25pS55Li65Y+N5bCE5ZmoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lcmdlZEV2ZW50c1tsYXN0RXZlbnRLZXldID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4ubGFzdEV2ZW50LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJSZWZsZWN0b3JcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwbGljZUxvc3M6IDAuMVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyDmt7vliqDmlrDnmoTnu5PmnZ/kuovku7ZcclxuICAgICAgICAgICAgICAgICAgICAgICAgbWVyZ2VkRXZlbnRzW2BldmVudCR7T2JqZWN0LmtleXMobWVyZ2VkRXZlbnRzKS5sZW5ndGh9YF0gPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBcIkVuZFwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzdGFuY2U6IGxhc3RFdmVudC5kaXN0YW5jZSArIDE2MS4xNSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwbGljZUxvc3M6IG51bGwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZsTG9zczogbGFzdEV2ZW50LnJlZmxMb3NzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0ZW51YXRpb246IGxhc3RFdmVudC5hdHRlbnVhdGlvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGVzdFJlc3VsdC5vZnBSZWZTdGF0dXMgPT09ICdlbmQnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8g5YmN5a+85ZKM5pyr5a+85Z+65YeGXHJcbiAgICAgICAgICAgICAgICAgICAgLy8g5Yik5pat6aaW5qC55YWJ57qk57G75Z6LXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNvbm5lY3Rpb25TdGF0dXMuT0ZQb3V0UmVmU3RhdHVzPy5pbmNsdWRlcygnc20tJykgfHwgY29ubmVjdGlvblN0YXR1cy5PRlBvdXRSZWZTdGF0dXM/LmluY2x1ZGVzKCdtbS0nKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyDnn63ot7Pnur9cclxuICAgICAgICAgICAgICAgICAgICAgICAgbWVyZ2VkRXZlbnRzWydldmVudDAnXSA9IHsgdHlwZTogXCJTdGFydFwiLCBkaXN0YW5jZTogMCwgcmVmbExvc3M6IC0xOS40NCB9O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXJnZWRFdmVudHNbJ2V2ZW50MSddID0geyB0eXBlOiBcIkhpZGRlblwiLCBkaXN0YW5jZTogMiwgcmVmbExvc3M6IC0zMy40NCwgc3BsaWNlTG9zczogbnVsbCB9O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyDosIPmlbTmiYDmnInlhbbku5bkuovku7bnmoTkvY3nva7vvIzlop7liqAy57GzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKG1lcmdlZEV2ZW50cykuZm9yRWFjaChrZXkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGtleSAhPT0gJ2V2ZW50MCcgJiYga2V5ICE9PSAnZXZlbnQxJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lcmdlZEV2ZW50c1trZXldID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5tZXJnZWRFdmVudHNba2V5XSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzdGFuY2U6IG1lcmdlZEV2ZW50c1trZXldLmRpc3RhbmNlICsgMlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyDkv67mlLnmnIDlkI7kuIDkuKrkuovku7ZcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGFzdEV2ZW50ID0gbWVyZ2VkRXZlbnRzW2xhc3RFdmVudEtleV07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lcmdlZEV2ZW50c1tsYXN0RXZlbnRLZXldID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4ubGFzdEV2ZW50LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJFbmRcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3RhbmNlOiBsYXN0RXZlbnQuZGlzdGFuY2UgKyAyLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BsaWNlTG9zczogbnVsbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoY29ubmVjdGlvblN0YXR1cy5PRlBvdXRSZWZTdGF0dXM/LmluY2x1ZGVzKCdzbWMtJykgfHwgY29ubmVjdGlvblN0YXR1cy5PRlBvdXRSZWZTdGF0dXM/LmluY2x1ZGVzKCdtbWMtJykpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8g6KGl5YG/5YWJ57qkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lcmdlZEV2ZW50c1snZXZlbnQwJ10gPSB7IHR5cGU6IFwiU3RhcnRSZWZcIiwgZGlzdGFuY2U6IC0xNjEuMTUsIHJlZmxMb3NzOiAtMzMuNzkgfTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8g5L+u5pS55pyA5ZCO5LiA5Liq5LqL5Lu2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxhc3RFdmVudCA9IG1lcmdlZEV2ZW50c1tsYXN0RXZlbnRLZXldO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXJnZWRFdmVudHNbbGFzdEV2ZW50S2V5XSA9IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmxhc3RFdmVudCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFwiRW5kXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXN0YW5jZTogbGFzdEV2ZW50LmRpc3RhbmNlICsgMixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwbGljZUxvc3M6IG51bGxcclxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIC8vIOWIpOaWreacgOWQjui/nuaOpeeahOWFiee6pOexu+Wei1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghY29ubmVjdGlvblN0YXR1cy5PRlBDb25uZWN0ZWRUb1JlZlN0YXR1cykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyDml6Dov57mjqVcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGFzdEV2ZW50ID0gbWVyZ2VkRXZlbnRzW2xhc3RFdmVudEtleV07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lcmdlZEV2ZW50c1tsYXN0RXZlbnRLZXldID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4ubGFzdEV2ZW50LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJFbmROb1JlZlwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BsaWNlTG9zczogbnVsbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoY29ubmVjdGlvblN0YXR1cy5PRlBDb25uZWN0ZWRUb1JlZlN0YXR1cz8uaW5jbHVkZXMoJ3NtLScpIHx8IGNvbm5lY3Rpb25TdGF0dXMuT0ZQQ29ubmVjdGVkVG9SZWZTdGF0dXM/LmluY2x1ZGVzKCdtbS0nKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyDnn63ot7Pnur9cclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGFzdEV2ZW50ID0gbWVyZ2VkRXZlbnRzW2xhc3RFdmVudEtleV07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIOWwhuacgOWQjuS4gOS4quS6i+S7tuaUueS4uuWPjeWwhOWZqFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXJnZWRFdmVudHNbbGFzdEV2ZW50S2V5XSA9IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmxhc3RFdmVudCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFwiUmVmbGVjdG9yXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGxpY2VMb3NzOiBudWxsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIOa3u+WKoOaWsOeahOe7k+adn+S6i+S7tlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXJnZWRFdmVudHNbYGV2ZW50JHtPYmplY3Qua2V5cyhtZXJnZWRFdmVudHMpLmxlbmd0aH1gXSA9IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFwiRW5kXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXN0YW5jZTogbGFzdEV2ZW50LmRpc3RhbmNlICsgMixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwbGljZUxvc3M6IG51bGwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZsTG9zczogbGFzdEV2ZW50LnJlZmxMb3NzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0ZW51YXRpb246IGxhc3RFdmVudC5hdHRlbnVhdGlvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoY29ubmVjdGlvblN0YXR1cy5PRlBDb25uZWN0ZWRUb1JlZlN0YXR1cz8uaW5jbHVkZXMoJ3NtYy0nKSB8fCBjb25uZWN0aW9uU3RhdHVzLk9GUENvbm5lY3RlZFRvUmVmU3RhdHVzPy5pbmNsdWRlcygnbW1jLScpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIOihpeWBv+WFiee6pFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsYXN0RXZlbnQgPSBtZXJnZWRFdmVudHNbbGFzdEV2ZW50S2V5XTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8g5bCG5pyA5ZCO5LiA5Liq5LqL5Lu25pS55Li65Y+N5bCE5ZmoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lcmdlZEV2ZW50c1tsYXN0RXZlbnRLZXldID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4ubGFzdEV2ZW50LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJSZWZsZWN0b3JcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwbGljZUxvc3M6IG51bGxcclxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8g5re75Yqg5pyr5bC+6KGl5YG/5LqL5Lu2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lcmdlZEV2ZW50c1tgZXZlbnQke09iamVjdC5rZXlzKG1lcmdlZEV2ZW50cykubGVuZ3RofWBdID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJFbmRSZWZcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3RhbmNlOiBsYXN0RXZlbnQuZGlzdGFuY2UgKyAxNjEuMTUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZsTG9zczogLTI4LjU0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIC8vIOabtOaWsHN1bW1hcnnkv6Hmga9cclxuICAgICAgICAgICAgICAgIGNvbnN0IGV2ZW50S2V5cyA9IE9iamVjdC5rZXlzKG1lcmdlZEV2ZW50cykuc29ydCgoYSwgYikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG51bUEgPSBwYXJzZUludChhLnJlcGxhY2UoJ2V2ZW50JywgJycpKTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBudW1CID0gcGFyc2VJbnQoYi5yZXBsYWNlKCdldmVudCcsICcnKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bUEgLSBudW1CO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBzdW1tYXJ5bGFzdEV2ZW50S2V5ID0gZXZlbnRLZXlzW2V2ZW50S2V5cy5sZW5ndGggLSAxXTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGxhc3RFdmVudCA9IG1lcmdlZEV2ZW50c1tzdW1tYXJ5bGFzdEV2ZW50S2V5XTtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgLy8g6K6h566X5oC75o2f6ICXXHJcbiAgICAgICAgICAgICAgICBsZXQgdG90YWxMb3NzID0gbnVsbDtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGFsbFNwbGljZUxvc3NOdWxsID0gT2JqZWN0LnZhbHVlcyhtZXJnZWRFdmVudHMpLmV2ZXJ5KGV2ZW50ID0+IFxyXG4gICAgICAgICAgICAgICAgICAgIGV2ZW50LnNwbGljZUxvc3MgPT09IG51bGwgfHwgZXZlbnQuc3BsaWNlTG9zcyA9PT0gdW5kZWZpbmVkXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBpZiAoIWFsbFNwbGljZUxvc3NOdWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdG90YWxMb3NzID0gT2JqZWN0LnZhbHVlcyhtZXJnZWRFdmVudHMpLnJlZHVjZSgoc3VtLCBldmVudCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsb3NzID0gZXZlbnQuc3BsaWNlTG9zcztcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxvc3MgPT09IG51bGwgfHwgbG9zcyA9PT0gdW5kZWZpbmVkKSByZXR1cm4gc3VtO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3VtICsgbG9zcztcclxuICAgICAgICAgICAgICAgICAgICB9LCAwKS50b0ZpeGVkKDIpOyAvLyDmgLvmjZ/ogJfkv53nlZnkuKTkvY3lsI/mlbBcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgLy8g6I635Y+W5q2j56Gu55qEZGlzdGFuY2XlgLxcclxuICAgICAgICAgICAgICAgIGxldCBmaW5hbERpc3RhbmNlID0gbGFzdEV2ZW50LmRpc3RhbmNlO1xyXG4gICAgICAgICAgICAgICAgaWYgKHRlc3RSZXN1bHQub2ZwUmVmU3RhdHVzID09PSAnZW5kJyAmJiBcclxuICAgICAgICAgICAgICAgICAgICAoY29ubmVjdGlvblN0YXR1cy5PRlBDb25uZWN0ZWRUb1JlZlN0YXR1cz8uaW5jbHVkZXMoJ3NtYy0nKSB8fCBcclxuICAgICAgICAgICAgICAgICAgICAgY29ubmVjdGlvblN0YXR1cy5PRlBDb25uZWN0ZWRUb1JlZlN0YXR1cz8uaW5jbHVkZXMoJ21tYy0nKSkpIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyDlpoLmnpzmmK/mnKvlr7zln7rlh4bkuJTov57mjqXkuobooaXlgb/lhYnnuqTvvIzkvb/nlKjlgJLmlbDnrKzkuozkuKrkuovku7bnmoRkaXN0YW5jZVxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHNlY29uZExhc3RFdmVudEtleSA9IGV2ZW50S2V5c1tldmVudEtleXMubGVuZ3RoIC0gMl07XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2Vjb25kTGFzdEV2ZW50ID0gbWVyZ2VkRXZlbnRzW3NlY29uZExhc3RFdmVudEtleV07XHJcbiAgICAgICAgICAgICAgICAgICAgZmluYWxEaXN0YW5jZSA9IHNlY29uZExhc3RFdmVudC5kaXN0YW5jZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgY29uc3QgdXBkYXRlZFN1bW1hcnkgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLi4uZGF0YTEuU3VtbWFyeSxcclxuICAgICAgICAgICAgICAgICAgICB0b3RhbERpc3RhbmNlOiBOdW1iZXIoZmluYWxEaXN0YW5jZS50b0ZpeGVkKDIpKSwgLy8g5oC76Led56a75L+d55WZ5Lik5L2N5bCP5pWwXHJcbiAgICAgICAgICAgICAgICAgICAgdG90YWxMb3NzOiB0b3RhbExvc3MgIT09IG51bGwgPyBOdW1iZXIodG90YWxMb3NzKSA6IG51bGwgLy8g5aaC5p6c5pyJ5o2f6ICX5YC85YiZ6L2s5Li65pWw5a2XXHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgc2V0RXZlbnREYXRhKHtcclxuICAgICAgICAgICAgICAgICAgICBldmVudHM6IG1lcmdlZEV2ZW50cyxcclxuICAgICAgICAgICAgICAgICAgICBzdW1tYXJ5OiB1cGRhdGVkU3VtbWFyeVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAvLyDojrflj5bnrKzkuIDkuKrkuovku7ZcclxuICAgICAgICAgICAgICAgIGZpcnN0RXZlbnQgPSBtZXJnZWRFdmVudHNbT2JqZWN0LmtleXMobWVyZ2VkRXZlbnRzKVswXV07XHJcbiAgICAgICAgICAgICAgICAvLyDorr7nva7nrKzkuIDkuKrkuovku7bkuLrpgInkuK3nirbmgIFcclxuICAgICAgICAgICAgICAgIHNldFNlbGVjdGVkRXZlbnQoZmlyc3RFdmVudCk7XHJcbiAgICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGxvYWRpbmcgdHJhY2UgZGF0YTonLCBlcnJvcik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICBpZiAodGVzdFJlc3VsdD8ub2ZwUmVzdWx0KSB7XHJcbiAgICAgICAgICAgIGxvYWRUcmFjZURhdGEoKTtcclxuXHJcbiAgICAgICAgfVxyXG4gICAgICAgIFxyXG4gICAgfSwgW3Rlc3RSZXN1bHQsIGlzTXVsdGlNb2RlXSk7XHJcbiAgICBcclxuXHJcbiAgXHJcbmNvbnN0IHByb2Nlc3NlZEV2ZW50cyA9IHVzZU1lbW8oKCkgPT4ge1xyXG4gIGlmICghZXZlbnREYXRhPy5ldmVudHMpIHJldHVybiBbXTtcclxuICByZXR1cm4gT2JqZWN0LmVudHJpZXMoZXZlbnREYXRhLmV2ZW50cylcclxuICAgIC5zb3J0KChhLCBiKSA9PiBwYXJzZUludChhWzBdLnJlcGxhY2UoJ2V2ZW50JywgJycpKSAtIHBhcnNlSW50KGJbMF0ucmVwbGFjZSgnZXZlbnQnLCAnJykpKVxyXG4gICAgLnJldmVyc2UoKTtcclxufSwgW2V2ZW50RGF0YT8uZXZlbnRzXSk7XHJcblxyXG5jb25zdCBnZXRFdmVudFN0YXR1cyA9IHVzZUNhbGxiYWNrKChldmVudCwgbmV4dEV2ZW50LCBwcmV2RXZlbnQpID0+IHtcclxuICBpZiAoZXZlbnQudHlwZSA9PT0gJ1JlZmxlY3RvcicpIHtcclxuICAgIGlmIChldmVudC5zcGxpY2VMb3NzID4gMC43NSkgcmV0dXJuICdmYWlsJztcclxuICAgIGlmIChuZXh0RXZlbnQ/LnR5cGUgPT09ICdTdGFydFJlZicpIHJldHVybiAnbGVhZGluZyc7XHJcbiAgICBpZiAocHJldkV2ZW50Py50eXBlID09PSAnRW5kUmVmJykgcmV0dXJuICd0cmFpbGluZyc7XHJcbiAgICByZXR1cm4gJ25vcm1hbCc7XHJcbiAgfVxyXG4gIGlmIChldmVudC50eXBlID09PSAnU3BsaWNlJykge1xyXG4gICAgcmV0dXJuIGV2ZW50LnNwbGljZUxvc3MgPiAwLjM1ID8gJ2ZhaWwnIDogJ25vcm1hbCc7XHJcbiAgfVxyXG4gIHJldHVybiAnbm9ybWFsJztcclxufSwgW10pO1xyXG5cclxuY29uc3QgZ2V0Q29ubmVjdGlvbkxpbmVIZWlnaHQgPSB1c2VDYWxsYmFjaygoZXZlbnRzTGVuZ3RoKSA9PiB7XHJcbiAgaWYgKGV2ZW50c0xlbmd0aCA8PSAzKSByZXR1cm4gJzEzMHB4JztcclxuICBpZiAoZXZlbnRzTGVuZ3RoIDw9IDQpIHJldHVybiAnMTAwcHgnO1xyXG4gIGlmIChldmVudHNMZW5ndGggPD0gNSkgcmV0dXJuICc4MHB4JztcclxuICBpZiAoZXZlbnRzTGVuZ3RoIDw9IDYpIHJldHVybiAnNjVweCc7XHJcbiAgcmV0dXJuICc0NXB4JztcclxufSwgW10pO1xyXG5cclxuY29uc3QgcmVuZGVyRXZlbnRDb21wb25lbnQgPSB1c2VDYWxsYmFjaygoZXZlbnQsIHN0YXR1cykgPT4ge1xyXG4gIHN3aXRjaChldmVudC50eXBlKSB7XHJcbiAgICBjYXNlICdFbmQnOiByZXR1cm4gPFN0YXJ0UG9pbnQgc3RhdHVzPSdub3JtYWwnLz47XHJcbiAgICBjYXNlICdFbmRSZWYnOiByZXR1cm4gPEVuZFJlZiAvPjtcclxuICAgIGNhc2UgJ0VuZE5vUmVmJzogcmV0dXJuIDxFbmROb1JlZiAvPjtcclxuICAgIGNhc2UgJ0VuZE5vRmliZXInOiByZXR1cm4gPEVuZE5vRmliZXIgLz47XHJcbiAgICBjYXNlICdSZWZsZWN0b3InOiByZXR1cm4gPFJlZmxlY3RvciBzdGF0dXM9e3N0YXR1c30gLz47XHJcbiAgICBjYXNlICdIaWRkZW4nOiByZXR1cm4gPFJlZmxlY3RvciBzdGF0dXM9J2hpZGRlbicgLz47XHJcbiAgICBjYXNlICdTcGxpY2UnOiByZXR1cm4gPFNwbGljZVBvaW50IHN0YXR1cz17c3RhdHVzfSAvPjtcclxuICAgIGNhc2UgJ0JlbmQnOiByZXR1cm4gPEJlbmRFdmVudCAvPjtcclxuICAgIGNhc2UgJ1N0YXJ0JzogcmV0dXJuIDxTdGFydFBvaW50IHN0YXR1cz0nbm9ybWFsJy8+O1xyXG4gICAgY2FzZSAnU3RhcnRSZWYnOiByZXR1cm4gPFN0YXJ0UmVmIC8+O1xyXG4gICAgZGVmYXVsdDogcmV0dXJuIG51bGw7XHJcbiAgfVxyXG59LCBbXSk7XHJcblxyXG5cclxuXHJcbiAgICAvLyDlj43lsITlmajmoLflvI9cclxuICAgIGNvbnN0IFJlZmxlY3RvciA9ICh7IHN0YXR1cyA9ICdub3JtYWwnIH0pID0+IHtcclxuICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGp1c3RpZnktY2VudGVyIGl0ZW1zLWNlbnRlciB3LVs4JV0gbWluLXctWzE1cHhdIG1heC13LVsyMHB4XSBmbGV4LXNocmluay0wXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtgdy1bODAlXSBoLTAgcGItWzEyMCVdIHJlbGF0aXZlIFxyXG4gICAgICAgICAgICAgICR7c3RhdHVzID09PSAnaGlkZGVuJyA/ICdib3JkZXItMSBib3JkZXItYmx1ZS01MDAgYmctd2hpdGUnIDogJyd9YH1cclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIHsvKiDkuK3pl7TmqKrmnaEgLSDmiYDmnInnirbmgIHpg73mmL7npLogKi99XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2B3LVsxMzMlXSBoLVsyMCVdIGFic29sdXRlIGxlZnQtMS8yIHRvcC0xLzIgLXRyYW5zbGF0ZS14LTEvMiAtdHJhbnNsYXRlLXktMS8yIHotMTBcclxuICAgICAgICAgICAgICAgICR7c3RhdHVzID09PSAnaGlkZGVuJyA/ICdib3JkZXItMSBib3JkZXItYmx1ZS01MDAgYmctd2hpdGUnIDogXHJcbiAgICAgICAgICAgICAgICAgIHN0YXR1cyA9PT0gJ2ZhaWwnID8gJ2JnLWdyYWRpZW50LXRvLXIgZnJvbS1bIzhiMDAwMF0gdG8tWyNjYzAwMDBdJyA6IFxyXG4gICAgICAgICAgICAgICAgICBzdGF0dXMgPT09ICdsZWFkaW5nJyA/ICdiZy1ncmFkaWVudC10by1yIGZyb20tWyMxYTM2NWRdIHRvLVsjMmE0YTdmXScgOiBcclxuICAgICAgICAgICAgICAgICAgc3RhdHVzID09PSAndHJhaWxpbmcnID8gJ2JnLWdyYWRpZW50LXRvLXIgZnJvbS1bIzFhMzY1ZF0gdG8tWyMyYTRhN2ZdJyA6IFxyXG4gICAgICAgICAgICAgICAgICAnYmctZ3JhZGllbnQtdG8tciBmcm9tLVsjMWEzNjVkXSB0by1bIzJhNGE3Zl0nfWB9IFxyXG4gICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAge3N0YXR1cyAhPT0gJ2hpZGRlbicgJiYgKFxyXG4gICAgICAgICAgICAgICAgPD5cclxuICAgICAgICAgICAgICAgICAgey8qIFRvcCBoYWxmICovfVxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17YGFic29sdXRlIHRvcC0wIGxlZnQtMCByaWdodC0wIGgtWzUwJV0gXHJcbiAgICAgICAgICAgICAgICAgICAgJHtzdGF0dXMgPT09ICdmYWlsJyA/ICdiZy1bIzhiMDAwMF0nIDogXHJcbiAgICAgICAgICAgICAgICAgICAgICBzdGF0dXMgPT09ICdsZWFkaW5nJyA/ICdiZy1bIzFhMzY1ZF0nIDogXHJcbiAgICAgICAgICAgICAgICAgICAgICBzdGF0dXMgPT09ICd0cmFpbGluZycgPyAnYmctWyM5NDkyOTRdJyA6ICBcclxuICAgICAgICAgICAgICAgICAgICAgICdiZy1bIzFhMzY1ZF0nfWB9XHJcbiAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICB7LyogQm90dG9tIGhhbGYgKi99XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtgYWJzb2x1dGUgYm90dG9tLTAgbGVmdC0wIHJpZ2h0LTAgaC1bNTAlXSBcclxuICAgICAgICAgICAgICAgICAgICAke3N0YXR1cyA9PT0gJ2ZhaWwnID8gJ2JnLVsjY2MwMDAwXScgOiBcclxuICAgICAgICAgICAgICAgICAgICAgIHN0YXR1cyA9PT0gJ2xlYWRpbmcnID8gJ2JnLVsjOTQ5Mjk0XScgOiBcclxuICAgICAgICAgICAgICAgICAgICAgIHN0YXR1cyA9PT0gJ3RyYWlsaW5nJyA/ICdiZy1bIzJhNGE3Zl0nIDogXHJcbiAgICAgICAgICAgICAgICAgICAgICAnYmctWyMyYTRhN2ZdJ31gfVxyXG4gICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAge3N0YXR1cyA9PT0gJ2ZhaWwnICYmIChcclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImFic29sdXRlIHctWzgwJV0gaC1bODAlXSB0b3AtMS8yIGxlZnQtMS8yIC10cmFuc2xhdGUteC0xLzIgLXRyYW5zbGF0ZS15LTEvMiB6LTEwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImFic29sdXRlIHctZnVsbCBoLVszcHhdIGJnLXdoaXRlIHRvcC0xLzIgbGVmdC0xLzIgLXRyYW5zbGF0ZS14LTEvMiAtdHJhbnNsYXRlLXktMS8yIHJvdW5kZWQtWzEuNXB4XSByb3RhdGUtNDVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJhYnNvbHV0ZSB3LWZ1bGwgaC1bM3B4XSBiZy13aGl0ZSB0b3AtMS8yIGxlZnQtMS8yIC10cmFuc2xhdGUteC0xLzIgLXRyYW5zbGF0ZS15LTEvMiByb3VuZGVkLVsxLjVweF0gLXJvdGF0ZS00NVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgICA8Lz5cclxuICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICk7XHJcbiAgICAgIH07XHJcbiAgICAvL+i1t+Wni+eCueagt+W8j1xyXG4gICAgY29uc3QgU3RhcnRQb2ludCA9ICh7IHN0YXR1cyA9ICdub3JtYWwnIH0pID0+IHtcclxuICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGp1c3RpZnktY2VudGVyIGl0ZW1zLWNlbnRlciB3LVs4JV0gbWluLXctWzE1cHhdIG1heC13LVsyMHB4XSBmbGV4LXNocmluay0wXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy1bODAlXSBoLTAgcGItWzYwJV0gcmVsYXRpdmVcIj5cclxuICAgICAgICAgICAgICB7LyogVG9wIGhhbGYgb25seSAqL31cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17YGFic29sdXRlIHRvcC0wIGxlZnQtMCByaWdodC0wIGgtZnVsbCBcclxuICAgICAgICAgICAgICAgICR7c3RhdHVzID09PSAndW5ub3JtYWwnID8gJ2JnLVsjOTQ5Mjk0XScgOiAnYmctWyMxYTM2NWRdJ31gfVxyXG4gICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgKTtcclxuICAgIH07XHJcbiAgICAvL+WJjeWvvOagt+W8j1xyXG4gICAgY29uc3QgU3RhcnRSZWYgPSAoKSA9PiB7XHJcbiAgICAgIHJldHVybiAoXHJcbiAgICAgICAgPGRpdj5cclxuICAgICAgICAgIDxTdGFydFBvaW50IHN0YXR1cyA9ICdub3JtYWwnLz5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgXHJcbiAgICAgICk7XHJcbiAgfTtcclxuICAgIC8v5pyr5a+85qC35byPXHJcbiAgICAgIGNvbnN0IEVuZFJlZiA9ICgpID0+IHtcclxuICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgPFN0YXJ0UG9pbnQgc3RhdHVzID0gJ3Vubm9ybWFsJy8+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICk7XHJcbiAgICB9O1xyXG4gICAgLy8g5peg5pyr5a+85LqL5Lu25qC35byPXHJcbiAgICBjb25zdCBFbmROb1JlZiA9ICgpID0+IHtcclxuICAgICAgcmV0dXJuIChcclxuICAgICAgICAvLyAgPGRpdiBjbGFzc05hbWU9XCIgdy1mdWxsIGgtWzNweF0gYmctWyNjYzAwMDBdIHRvcC0xLzIgbGVmdC0xLzIgLXRyYW5zbGF0ZS14LTEvMiAtdHJhbnNsYXRlLXktMS8yIHJvdW5kZWQtWzEuNXB4XSAtcm90YXRlLTQ1XCIgLz5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9e2B3LTQgaC00IHJvdW5kZWQtZnVsbCByZWxhdGl2ZWB9PlxyXG4gICAgICAgICAgXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYWJzb2x1dGUgdy1mdWxsIGgtZnVsbCB0b3AtMS8yIGxlZnQtMS8yIC10cmFuc2xhdGUteC0xLzIgLXRyYW5zbGF0ZS15LTEvMlwiPlxyXG4gICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCIgdy1mdWxsIGgtWzNweF0gYmctWyNjYzAwMDBdIHRyYW5zbGF0ZS15LTMgIHJvdW5kZWQtWzEuNXB4XSByb3RhdGUtNDVcIiAvPlxyXG4gICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCIgdy1mdWxsIGgtWzNweF0gYmctWyNjYzAwMDBdIHRyYW5zbGF0ZS15LTkvMyByb3VuZGVkLVsxLjVweF0gLXJvdGF0ZS00NVwiIC8+XHJcbiAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICk7XHJcbiAgICB9O1xyXG4gIC8vIOaXoOWFiee6pFxyXG4gICAgICBjb25zdCBFbmROb0ZpYmVyID0gKCkgPT4ge1xyXG4gICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAvLyAgPGRpdiBjbGFzc05hbWU9XCIgdy1mdWxsIGgtWzNweF0gYmctWyNjYzAwMDBdIHRvcC0xLzIgbGVmdC0xLzIgLXRyYW5zbGF0ZS14LTEvMiAtdHJhbnNsYXRlLXktMS8yIHJvdW5kZWQtWzEuNXB4XSAtcm90YXRlLTQ1XCIgLz5cclxuXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17YHctNCBoLTQgcm91bmRlZC1mdWxsIHJlbGF0aXZlYH0+XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYWJzb2x1dGUgdy1mdWxsIGgtZnVsbCB0b3AtMS8yIGxlZnQtMS8yIC10cmFuc2xhdGUteC0xLzIgLXRyYW5zbGF0ZS15LTEvMlwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiIHctZnVsbCBoLVszcHhdIGJnLVsjY2MwMDAwXSB0cmFuc2xhdGUteS0zICByb3VuZGVkLVsxLjVweF0gcm90YXRlLTQ1XCIgLz5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIiB3LWZ1bGwgaC1bM3B4XSBiZy1bI2NjMDAwMF0gdHJhbnNsYXRlLXktOS8zIHJvdW5kZWQtWzEuNXB4XSAtcm90YXRlLTQ1XCIgLz5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICApO1xyXG4gICAgICB9O1xyXG4gICAgLy8g54aU5o6l54K55qC35byPXHJcbiAgICAgIGNvbnN0IFNwbGljZVBvaW50ID0gKHsgc3RhdHVzID0gJ25vcm1hbCcgfSkgPT4ge1xyXG4gICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17YHctNCBoLTQgcm91bmRlZC1mdWxsIHJlbGF0aXZlXHJcbiAgICAgICAgICAgICR7c3RhdHVzID09PSAnZmFpbCcgPyAnYmctZ3JhZGllbnQtdG8tciBmcm9tLVsjOGIwMDAwXSB0by1bI2NjMDAwMF0nIDogXHJcbiAgICAgICAgICAgICAgJ2JnLWdyYWRpZW50LXRvLXIgZnJvbS1bIzFhMzY1ZF0gdG8tWyMyYTRhN2ZdJ31gfVxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICB7c3RhdHVzID09PSAnZmFpbCcgJiYgKFxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYWJzb2x1dGUgdy1mdWxsIGgtZnVsbCB0b3AtMS8yIGxlZnQtMS8yIC10cmFuc2xhdGUteC0xLzIgLXRyYW5zbGF0ZS15LTEvMlwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJhYnNvbHV0ZSB3LVs4MCVdIGgtWzNweF0gYmctd2hpdGUgdG9wLTEvMiBsZWZ0LTEvMiAtdHJhbnNsYXRlLXgtMS8yIC10cmFuc2xhdGUteS0xLzIgcm91bmRlZC1bMS41cHhdIHJvdGF0ZS00NVwiIC8+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImFic29sdXRlIHctWzgwJV0gaC1bM3B4XSBiZy13aGl0ZSB0b3AtMS8yIGxlZnQtMS8yIC10cmFuc2xhdGUteC0xLzIgLXRyYW5zbGF0ZS15LTEvMiByb3VuZGVkLVsxLjVweF0gLXJvdGF0ZS00NVwiIC8+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICl9XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICApO1xyXG4gICAgICB9O1xyXG4gICAgLy8g5byv5puy5LqL5Lu25qC35byPXHJcbiAgICBjb25zdCBCZW5kRXZlbnQgPSAoKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy01IGgtNSByb3VuZGVkLWZ1bGwgYm9yZGVyLVs1cHhdIGJvcmRlci1bI2NjMDAwMF0gYmctdHJhbnNwYXJlbnQgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAtbXItMC41IGZsZXgtc2hyaW5rLTBcIiBcclxuICAgICAgICAgICAgICAgc3R5bGU9e3sgY2xpcFBhdGg6ICdpbnNldCgwIDUwJSAwIDApJyB9fSAvPlxyXG4gICAgICAgICk7XHJcbiAgICAgIH07XHJcblxyXG4gICAgcmV0dXJuIChcclxuICAgIDxkaXYgY2xhc3NOYW1lPVwidy1mdWxsIGgtZnVsbCBmbGV4IGZsZXgtcm93IGJnLVsjZjBmMGYwXVwiPiB7LyogQ2hhbmdlZCB0byBmbGV4LXJvdyBhbmQgYWRkZWQgYmFja2dyb3VuZCAqL30gXHJcbiAgICAgICAgICAgIHsvKiBMZWZ0IEFyZWEgKDEvMyB3aWR0aCkgKi99XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy0xLzMgaC1mdWxsIGZsZXggZmxleC1jb2xcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy1mdWxsIGgtWzEwMCVdIGJnLXdoaXRlIHAtMiBmbGV4IGl0ZW1zLWVuZCBqdXN0aWZ5LWNlbnRlclwiPiB7Lyog5pS55Li6aXRlbXMtZW5k5L2/5YaF5a655bqV6YOo5a+56b2QICovfVxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy1mdWxsIGgtWzkwJV0gYmctd2hpdGUgcC0yIGZsZXggZmxleC1jb2wgaXRlbXMtY2VudGVyIGp1c3RpZnktZW5kIHJlbGF0aXZlXCI+XHJcbiAgICB7cHJvY2Vzc2VkRXZlbnRzLm1hcCgoW2tleSwgZXZlbnRdLCBpbmRleCwgYXJyYXkpID0+IHtcclxuICAgICAgY29uc3QgbmV4dEV2ZW50ID0gYXJyYXlbaW5kZXggKyAxXT8uWzFdO1xyXG4gICAgICBjb25zdCBwcmV2RXZlbnQgPSBhcnJheVtpbmRleCAtIDFdPy5bMV07XHJcbiAgICAgIGNvbnN0IGRpc3RhbmNlID0gbmV4dEV2ZW50ID8gXHJcbiAgICAgICAgKGV2ZW50LmRpc3RhbmNlIC0gbmV4dEV2ZW50LmRpc3RhbmNlKS50b0ZpeGVkKDEpIDogXHJcbiAgICAgICAgKGV2ZW50RGF0YS5zdW1tYXJ5LnRvdGFsRGlzdGFuY2UgLSBldmVudC5kaXN0YW5jZSkudG9GaXhlZCgxKTtcclxuICAgICAgY29uc3Qgc3RhdHVzID0gZ2V0RXZlbnRTdGF0dXMoZXZlbnQsIG5leHRFdmVudCwgcHJldkV2ZW50KTtcclxuICAgICAgXHJcbiAgICAgIHJldHVybiAoXHJcbiAgICAgICAgPGRpdiBrZXk9e2tleX0gY2xhc3NOYW1lPVwiZmxleCBmbGV4LWNvbCBpdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgIDxkaXYgXHJcbiAgICAgICAgICAgIHJlZj17ZWwgPT4gZXZlbnRSZWZzLmN1cnJlbnRba2V5XSA9IGVsfVxyXG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRTZWxlY3RlZEV2ZW50KGV2ZW50KX1cclxuICAgICAgICAgICAgY2xhc3NOYW1lPVwiY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICB7cmVuZGVyRXZlbnRDb21wb25lbnQoZXZlbnQsIHN0YXR1cyl9XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIFxyXG4gICAgICAgICAge2luZGV4IDwgYXJyYXkubGVuZ3RoIC0gMSAmJiAoXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIgcmVsYXRpdmVcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImFic29sdXRlIGxlZnQtWy02NXB4XSB0ZXh0LXNtIHRleHQtYmxhY2sgd2hpdGVzcGFjZS1ub3dyYXBcIj5cclxuICAgICAgICAgICAgICAgIHtkaXN0YW5jZX0gbVxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgXHJcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2B3LVsycHhdICR7bmV4dEV2ZW50Py50eXBlID09PSAnU3RhcnRSZWYnIHx8IGV2ZW50LnR5cGUgPT09ICdFbmRSZWYnID8gJ2JnLWdyYXktNDAwJyA6ICdiZy1ibGFjayd9YH1cclxuICAgICAgICAgICAgICAgIHN0eWxlPXt7IGhlaWdodDogZ2V0Q29ubmVjdGlvbkxpbmVIZWlnaHQoYXJyYXkubGVuZ3RoKSB9fVxyXG4gICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgKX1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgKTtcclxuICAgIH0pfVxyXG4gICAgPEltYWdlXHJcbiAgICAgIHNyYz17Z2V0QXNzZXRVcmwoJy9vdGRyLXN0YXJ0LnBuZycpfVxyXG4gICAgICBhbHQ9XCJPVERSIFN0YXJ0XCJcclxuICAgICAgd2lkdGg9ezQwfVxyXG4gICAgICBoZWlnaHQ9ezQwfVxyXG4gICAgLz5cclxuICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIHsvKiBSaWdodCBBcmVhICgyLzMgd2lkdGgpICovfVxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctMi8zIGgtZnVsbCBmbGV4IGZsZXgtY29sXCI+IHsvKiBBZGRlZCByaWdodCBjb2x1bW4gKi99XHJcbiAgICAgICAgICAgICAgICB7LyogUmlnaHQgVG9wICgyMCUpICovfVxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJoLVsyMCVdIGJnLXdoaXRlIHAtMyBmbGV4IGp1c3RpZnktYmV0d2VlbiBpdGVtcy1zdGFydCBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIG1iLTFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtYmxhY2sgZm9udC1ib2xkXCI+5YWJ57qk6ZW/5bqmOjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtYmxhY2sgbWwtMVwiPntldmVudERhdGE/LnN1bW1hcnk/LnRvdGFsRGlzdGFuY2UgfHwgJzAnfSBtPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC1ibGFjayBmb250LWJvbGRcIj7mgLvkvZPmjZ/ogJc6PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC1ibGFjayBtbC0xXCI+e2V2ZW50RGF0YT8uc3VtbWFyeT8udG90YWxMb3NzIHx8ICdOL0EnfSAgIGRCPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtb3JhbmdlLTUwMCBmb250LWJvbGRcIj7nq6/ngrkxPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICB7LyogUmlnaHQgTWlkZGxlICg2MCUpICovfVxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJoLVs2MCVdIGJnLXdoaXRlIHAtMiByZWxhdGl2ZVwiPiB7LyogQWRqdXN0ZWQgcGFkZGluZyAqL30gXHJcbiAgICAgICAgICAgICAgICAgICAgey8qIOS6i+S7tueugOimgeahhiAqL31cclxuICAgICAgICAgICAgICAgICAgICB7c2VsZWN0ZWRFdmVudCAmJiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYWJzb2x1dGUgcC00IHJvdW5kZWQtbGcgc2hhZG93LWxnIGJnLWdyYWRpZW50LXRvLWIgZnJvbS1ncmF5LTIwMCB0by1ncmF5LTMwMCBib3JkZXItMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9wOiAnNTAlJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVmdDogJzUwJScsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZSgtNTAlLCAtNTAlKScsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAnODAlJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4V2lkdGg6ICczNTBweCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHpJbmRleDogMTAsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlckNvbG9yOiBzZWxlY3RlZEV2ZW50LnR5cGUgPT09ICdTdGFydFJlZicgfHwgc2VsZWN0ZWRFdmVudC50eXBlID09PSAnU3RhcnQnID8gJyMxYTk4NTAnIDpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZEV2ZW50LnR5cGUgPT09ICdFbmRSZWYnIHx8IHNlbGVjdGVkRXZlbnQudHlwZSA9PT0gJ0VuZCcgPyAnIzFhMzY1ZCcgOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkRXZlbnQuc3BsaWNlTG9zcyA+IDAuNzUgfHwgc2VsZWN0ZWRFdmVudC5zcGxpY2VMb3NzID4gMC4zNSA/ICcjY2MwMDAwJyA6ICcjMWEzNjVkJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsvKiDlsI/lsL7lt7QgLSDmjIflkJHlt6bkvqfkuovku7YgKi99XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImFic29sdXRlIHctMCBoLTAgYm9yZGVyLXNvbGlkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQ6ICctMjBweCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3A6ICc1MCUnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtOiAndHJhbnNsYXRlWSgtNTAlKScsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXJXaWR0aDogJzEwcHggMjBweCAxMHB4IDAnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyQ29sb3I6ICd0cmFuc3BhcmVudCAnICsgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZWN0ZWRFdmVudC50eXBlID09PSAnU3RhcnRSZWYnIHx8IHNlbGVjdGVkRXZlbnQudHlwZSA9PT0gJ1N0YXJ0JyA/ICcjMWE5ODUwJyA6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRFdmVudC50eXBlID09PSAnRW5kUmVmJyB8fCBzZWxlY3RlZEV2ZW50LnR5cGUgPT09ICdFbmQnID8gJyMxYTM2NWQnIDpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZEV2ZW50LnNwbGljZUxvc3MgPiAwLjc1IHx8IHNlbGVjdGVkRXZlbnQuc3BsaWNlTG9zcyA+IDAuMzUgPyAnI2NjMDAwMCcgOiAnIzFhMzY1ZCcpICsgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnIHRyYW5zcGFyZW50IHRyYW5zcGFyZW50J1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgey8qIOagh+mimCAqL31cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1jZW50ZXIgZm9udC1ib2xkIHRleHQteGwgbWItNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtzZWxlY3RlZEV2ZW50LnR5cGUgPT09ICdTdGFydFJlZicgPyAnT1REUuerr+WPoycgOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZEV2ZW50LnR5cGUgPT09ICdFbmRSZWYnID8gJ+acq+WwvuS6i+S7ticgOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZEV2ZW50LnR5cGUgPT09ICdFbmROb1JlZicgPyAn5pyq5om+5Yiw5pyr5bC+5LqL5Lu2JyA6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkRXZlbnQudHlwZSA9PT0gJ1N0YXJ0JyA/ICdPVERS56uv5Y+jJyA6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkRXZlbnQudHlwZSA9PT0gJ0VuZCcgPyAn56uv54K5JyA6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkRXZlbnQudHlwZSA9PT0gJ1JlZmxlY3RvcicgPyAn5Y+N5bCE5ZmoJyA6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkRXZlbnQudHlwZSA9PT0gJ0hpZGRlbicgPyAn6ZqQ6JeP5LqL5Lu2JyA6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkRXZlbnQudHlwZSA9PT0gJ1NwbGljZScgPyAn54aU5o6l54K5JyA6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkRXZlbnQudHlwZSA9PT0gJ0JlbmQnID8gJ+W8r+absuS6i+S7ticgOiAn5LqL5Lu2J31cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Lyog5LqL5Lu25L+h5oGvICovfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtYi0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LWNlbnRlciBtYi0yXCI+5Zyoe3NlbGVjdGVkRXZlbnQuZGlzdGFuY2UudG9GaXhlZCgyKX0gbTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsvKiDmoLnmja7kuovku7bnsbvlnovmmL7npLrkuI3lkIzkv6Hmga8gKi99XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyhzZWxlY3RlZEV2ZW50LnR5cGUgPT09ICdSZWZsZWN0b3InIHx8IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRFdmVudC50eXBlID09PSAnSGlkZGVuJyB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRFdmVudC50eXBlID09PSAnRW5kUmVmJykgJiYgKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXgganVzdGlmeS1iZXR3ZWVuIGl0ZW1zLWNlbnRlciBtYi0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjPXtzZWxlY3RlZEV2ZW50LnNwbGljZUxvc3MgPiAwLjc1ID8gZ2V0QXNzZXRVcmwoJy9mYWlsLnBuZycpIDogZ2V0QXNzZXRVcmwoJy9wYXNzLnBuZycpfSBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0PVwic3RhdHVzXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInctNCBoLTQgbXItMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJmb250LWJvbGRcIj7mjZ/ogJc6PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57c2VsZWN0ZWRFdmVudC5zcGxpY2VMb3NzID8gc2VsZWN0ZWRFdmVudC5zcGxpY2VMb3NzLnRvRml4ZWQoMikgOiAnMCd9IGRCPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGp1c3RpZnktYmV0d2VlbiBpdGVtcy1jZW50ZXIgbWItMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LTQgaC00IG1yLTJcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwiZm9udC1ib2xkXCI+5Y+N5bCE546HOjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57c2VsZWN0ZWRFdmVudC5yZWZsTG9zcyA/IHNlbGVjdGVkRXZlbnQucmVmbExvc3MudG9GaXhlZCgyKSA6ICcwJ30gZEI8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsoc2VsZWN0ZWRFdmVudC50eXBlID09PSAnU3BsaWNlJyB8fCBzZWxlY3RlZEV2ZW50LnR5cGUgPT09ICdCZW5kJykgJiYgKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXgganVzdGlmeS1iZXR3ZWVuIGl0ZW1zLWNlbnRlciBtYi0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjPXtzZWxlY3RlZEV2ZW50LnR5cGUgPT09ICdTcGxpY2UnID8gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZWN0ZWRFdmVudC5zcGxpY2VMb3NzID4gMC4zNSA/IGdldEFzc2V0VXJsKCcvZmFpbC5wbmcnKSA6IGdldEFzc2V0VXJsKCcvcGFzcy5wbmcnKSkgOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGVjdGVkRXZlbnQuc3BsaWNlTG9zcyA+IDAuNzUgPyBnZXRBc3NldFVybCgnL2ZhaWwucG5nJykgOiBnZXRBc3NldFVybCgnL3Bhc3MucG5nJykpfSBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0PVwic3RhdHVzXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInctNCBoLTQgbXItMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJmb250LWJvbGRcIj7mjZ/ogJc6PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57c2VsZWN0ZWRFdmVudC5zcGxpY2VMb3NzID8gc2VsZWN0ZWRFdmVudC5zcGxpY2VMb3NzLnRvRml4ZWQoMikgOiAnMCd9IGRCPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7KHNlbGVjdGVkRXZlbnQudHlwZSA9PT0gJ1N0YXJ0UmVmJyB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkRXZlbnQudHlwZSA9PT0gJ1N0YXJ0JyB8fCBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZEV2ZW50LnR5cGUgPT09ICdFbmQnKSAmJiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBqdXN0aWZ5LWJldHdlZW4gaXRlbXMtY2VudGVyIG1iLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy00IGgtNCBtci0yXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cImZvbnQtYm9sZFwiPuWPjeWwhOeOhzo8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3NlbGVjdGVkRXZlbnQucmVmbExvc3MgPyBzZWxlY3RlZEV2ZW50LnJlZmxMb3NzLnRvRml4ZWQoMikgOiAnMCd9IGRCPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Lyog6L+e5o6l6LSo6YeP5oyH56S65ZmoIC0g5LuF5a+55p+Q5Lqb5LqL5Lu257G75Z6L5pi+56S6ICovfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsoc2VsZWN0ZWRFdmVudC50eXBlID09PSAnU3RhcnQnIHx8IHNlbGVjdGVkRXZlbnQudHlwZSA9PT0gJ1N0YXJ0UmVmJykgJiYgKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm10LTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1jZW50ZXIgbWItMlwiPuerr+WPo+i/nuaOpei0qOmHjzwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyZWxhdGl2ZSBoLTQgYmctZ3JheS0yMDAgcm91bmRlZC1mdWxsIG92ZXJmbG93LWhpZGRlblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYWJzb2x1dGUgdG9wLTAgbGVmdC0wIGgtZnVsbCB3LWZ1bGwgZmxleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImgtZnVsbCBiZy1yZWQtNjAwXCIgc3R5bGU9e3t3aWR0aDogJzMzJSd9fT48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJoLWZ1bGwgYmcteWVsbG93LTQwMFwiIHN0eWxlPXt7d2lkdGg6ICczMyUnfX0+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaC1mdWxsIGJnLWdyZWVuLTUwMFwiIHN0eWxlPXt7d2lkdGg6ICczNCUnfX0+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJhYnNvbHV0ZSB0b3AtMCByaWdodC00IGgtZnVsbCBmbGV4IGl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctMyBoLTMgYmctYmxhY2sgdHJhbnNmb3JtIHJvdGF0ZS00NVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYWJzb2x1dGUgYm90dG9tLVstMjBweF0gcmlnaHQtNCB0ZXh0LXhzXCI+6Imv5aW9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgey8qIFJpZ2h0IEJvdHRvbSAoMjAlKSAqL31cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaC1bMjAlXSBiZy13aGl0ZSBwLTIgZmxleCBmbGV4LWNvbCBpdGVtcy1zdGFydCBqdXN0aWZ5LWNlbnRlclwiPiB7LyogQWRqdXN0ZWQgcGFkZGluZyBhbmQgYWxpZ25tZW50ICovfSBcclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtYmxhY2sgdGV4dC1zbSBtYi0xXCI+5YWJ57qk57G75Z6LOiB7dGVzdFJlc3VsdD8udGVzdGNvbmZpZz8ucGFyYW1zPy5jYWJsZVR5cGUgfHwgbnVsbH08L2Rpdj4gey8qIEV4YW1wbGUgZGF0YSAqL30gXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LWJsYWNrIHRleHQtc20gbWItMVwiPua1i+ivleaegemZkOWAvDoge3Rlc3RSZXN1bHQ/LnRlc3Rjb25maWc/LnBhcmFtcz8ubGltaXRWYWx1ZSB8fCBudWxsfTwvZGl2PiB7LyogRXhhbXBsZSBkYXRhICovfSBcclxuICAgICAgICAgICAgICAgICAgICB7dmlldyA9PT0gJ25vc2F2ZScgJiYgKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtYmxhY2sgdGV4dC1zbVwiPuS4i+S4gOS4qklEOiB7Y3VycmVudENhYmxlSWQ/Lm5hbWUgfHwgJ09URFItMDInfTwvZGl2PiAvKiBFeGFtcGxlIGRhdGEgKi9cclxuICAgICAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICApO1xyXG59XHJcbiJdLCJuYW1lcyI6WyJSZWFjdCIsInVzZVN0YXRlIiwidXNlRWZmZWN0IiwidXNlTWVtbyIsInVzZUNhbGxiYWNrIiwidXNlRGlzcGxheVN0b3JlIiwiSW1hZ2UiLCJ1c2VSZWYiLCJnZXRBc3NldFVybCIsIkV2ZW50TWFwVmlldyIsInRlc3RSZXN1bHQiLCJjb25uZWN0aW9uU3RhdHVzIiwib2ZwQ29ubmVjdGlvblN0YXR1cyIsInZpZXciLCJnZXRTdGF0ZSIsIm5hdmlnYXRpb24iLCJjdXJyZW50IiwiY3VycmVudENhYmxlSWQiLCJnZXRDdXJyZW50Q2FibGVJZCIsInNlbGVjdGVkRXZlbnQiLCJzZXRTZWxlY3RlZEV2ZW50IiwiZXZlbnREYXRhIiwic2V0RXZlbnREYXRhIiwiZXZlbnRSZWZzIiwiaXNNdWx0aU1vZGUiLCJ0ZXN0Y29uZmlnIiwicGFyYW1zIiwiY2FibGVUeXBlIiwiaW5jbHVkZXMiLCJsb2FkVHJhY2VEYXRhIiwid2F2ZWxlbmd0aDEiLCJ3YXZlbGVuZ3RoMiIsImRhdGExIiwiZGF0YTIiLCJQcm9taXNlIiwiYWxsIiwib2ZwUmVzdWx0IiwibWVyZ2VkRXZlbnRzIiwiZmlyc3RFdmVudCIsIk9iamVjdCIsImtleXMiLCJldmVudCIsImZvckVhY2giLCJldmVudEtleSIsImV2ZW50MSIsImV2ZW50MiIsInR5cGUiLCJsYXN0RXZlbnRLZXkiLCJsZW5ndGgiLCJmaXJzdEV2ZW50S2V5Iiwib2ZwUmVmU3RhdHVzIiwiT0ZQb3V0UmVmU3RhdHVzIiwiZGlzdGFuY2UiLCJyZWZsTG9zcyIsInNwbGljZUxvc3MiLCJrZXkiLCJsYXN0RXZlbnQiLCJPRlBDb25uZWN0ZWRUb1JlZlN0YXR1cyIsImF0dGVudWF0aW9uIiwiZXZlbnRLZXlzIiwic29ydCIsImEiLCJiIiwibnVtQSIsInBhcnNlSW50IiwicmVwbGFjZSIsIm51bUIiLCJzdW1tYXJ5bGFzdEV2ZW50S2V5IiwidG90YWxMb3NzIiwiYWxsU3BsaWNlTG9zc051bGwiLCJ2YWx1ZXMiLCJldmVyeSIsInVuZGVmaW5lZCIsInJlZHVjZSIsInN1bSIsImxvc3MiLCJ0b0ZpeGVkIiwiZmluYWxEaXN0YW5jZSIsInNlY29uZExhc3RFdmVudEtleSIsInNlY29uZExhc3RFdmVudCIsInVwZGF0ZWRTdW1tYXJ5IiwiU3VtbWFyeSIsInRvdGFsRGlzdGFuY2UiLCJOdW1iZXIiLCJldmVudHMiLCJzdW1tYXJ5IiwiZXJyb3IiLCJjb25zb2xlIiwicHJvY2Vzc2VkRXZlbnRzIiwiZW50cmllcyIsInJldmVyc2UiLCJnZXRFdmVudFN0YXR1cyIsIm5leHRFdmVudCIsInByZXZFdmVudCIsImdldENvbm5lY3Rpb25MaW5lSGVpZ2h0IiwiZXZlbnRzTGVuZ3RoIiwicmVuZGVyRXZlbnRDb21wb25lbnQiLCJzdGF0dXMiLCJTdGFydFBvaW50IiwiRW5kUmVmIiwiRW5kTm9SZWYiLCJFbmROb0ZpYmVyIiwiUmVmbGVjdG9yIiwiU3BsaWNlUG9pbnQiLCJCZW5kRXZlbnQiLCJTdGFydFJlZiIsImRpdiIsImNsYXNzTmFtZSIsInN0eWxlIiwiY2xpcFBhdGgiLCJtYXAiLCJpbmRleCIsImFycmF5IiwicmVmIiwiZWwiLCJvbkNsaWNrIiwiaGVpZ2h0Iiwic3JjIiwiYWx0Iiwid2lkdGgiLCJzcGFuIiwidG9wIiwibGVmdCIsInRyYW5zZm9ybSIsIm1heFdpZHRoIiwiekluZGV4IiwiYm9yZGVyQ29sb3IiLCJib3JkZXJXaWR0aCIsImltZyIsImxpbWl0VmFsdWUiLCJuYW1lIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(pages-dir-node)/./src/components/lib/EventMapView.js\n"); /***/ }), /***/ "(pages-dir-node)/./src/components/lib/EventTable.js": /*!******************************************!*\ !*** ./src/components/lib/EventTable.js ***! \******************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; eval("__webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ EventTable)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"react/jsx-dev-runtime\");\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 */ \"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _store_displayStore__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/store/displayStore */ \"(pages-dir-node)/./src/store/displayStore.js\");\n/* harmony import */ var _store_deviceStore__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/store/deviceStore */ \"(pages-dir-node)/./src/store/deviceStore.js\");\n/* harmony import */ var next_image__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! next/image */ \"(pages-dir-node)/./node_modules/next/image.js\");\n/* harmony import */ var next_image__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(next_image__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _utils_asset__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/utils/asset */ \"(pages-dir-node)/./src/utils/asset.js\");\nvar __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_store_displayStore__WEBPACK_IMPORTED_MODULE_2__, _store_deviceStore__WEBPACK_IMPORTED_MODULE_3__, _utils_asset__WEBPACK_IMPORTED_MODULE_5__]);\n([_store_displayStore__WEBPACK_IMPORTED_MODULE_2__, _store_deviceStore__WEBPACK_IMPORTED_MODULE_3__, _utils_asset__WEBPACK_IMPORTED_MODULE_5__] = __webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__);\n\n\n\n\n\n\nfunction EventTable({ testResult }) {\n const { connectionStatus } = (0,_store_deviceStore__WEBPACK_IMPORTED_MODULE_3__[\"default\"])();\n const [eventData, setEventData] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);\n const [currentWavelength, setCurrentWavelength] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);\n const [wavelengthData, setWavelengthData] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)({});\n // 判断是否为多模光纤\n const isMultiMode = testResult?.testconfig?.params?.cableType.includes('OM');\n // 加载事件数据\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)({\n \"EventTable.useEffect\": ()=>{\n const loadTraceData = {\n \"EventTable.useEffect.loadTraceData\": async ()=>{\n try {\n const wavelength1 = isMultiMode ? '850' : '1310';\n const wavelength2 = isMultiMode ? '1300' : '1550';\n const [data1, data2] = await Promise.all([\n __webpack_require__(\"(pages-dir-node)/./src/store/FIBER lazy recursive ^\\\\.\\\\/.*\\\\/.*\\\\-dump\\\\.json$\")(`./${testResult.ofpResult}/${wavelength1}-dump.json`),\n __webpack_require__(\"(pages-dir-node)/./src/store/FIBER lazy recursive ^\\\\.\\\\/.*\\\\/.*\\\\-dump\\\\.json$\")(`./${testResult.ofpResult}/${wavelength2}-dump.json`)\n ]);\n // 根据基准设置重新创建事件数据\n const processWavelengthData = {\n \"EventTable.useEffect.loadTraceData.processWavelengthData\": (data)=>{\n const mergedEvents = {};\n // 1. 首先添加原始事件数据\n Object.keys(data.event).forEach({\n \"EventTable.useEffect.loadTraceData.processWavelengthData\": (eventKey)=>{\n mergedEvents[eventKey] = {\n ...data.event[eventKey]\n };\n }\n }[\"EventTable.useEffect.loadTraceData.processWavelengthData\"]);\n // 2. 根据基准设置调整事件类型\n const lastEventKey = Object.keys(mergedEvents)[Object.keys(mergedEvents).length - 1];\n if (!testResult.ofpRefStatus) {\n // 无基准设置\n // 判断首根光纤类型\n if (connectionStatus.OFPoutRefStatus?.includes('sm-') || connectionStatus.OFPoutRefStatus?.includes('mm-')) {\n // 短跳线\n mergedEvents['event0'] = {\n type: \"Start\",\n distance: 0,\n reflLoss: -35.25\n };\n mergedEvents['event1'] = {\n type: \"Hidden\",\n distance: 2,\n reflLoss: -14.18,\n spliceLoss: null\n };\n // 调整所有其他事件的位置,增加2米\n Object.keys(mergedEvents).forEach({\n \"EventTable.useEffect.loadTraceData.processWavelengthData\": (key)=>{\n if (key !== 'event0' && key !== 'event1') {\n mergedEvents[key] = {\n ...mergedEvents[key],\n distance: mergedEvents[key].distance + 2\n };\n }\n }\n }[\"EventTable.useEffect.loadTraceData.processWavelengthData\"]);\n // 修改最后一个事件\n const lastEvent = mergedEvents[lastEventKey];\n mergedEvents[lastEventKey] = {\n ...lastEvent,\n type: \"End\",\n spliceLoss: null\n };\n } else if (connectionStatus.OFPoutRefStatus?.includes('smc-') || connectionStatus.OFPoutRefStatus?.includes('mmc-')) {\n // 补偿光纤\n mergedEvents['event0'] = {\n type: \"Start\",\n distance: 0,\n reflLoss: -35.25\n };\n // 调整所有其他事件的位置,增加161.15米\n Object.keys(mergedEvents).forEach({\n \"EventTable.useEffect.loadTraceData.processWavelengthData\": (key)=>{\n if (key !== 'event0') {\n mergedEvents[key] = {\n ...mergedEvents[key],\n distance: mergedEvents[key].distance + 161.15\n };\n }\n }\n }[\"EventTable.useEffect.loadTraceData.processWavelengthData\"]);\n // 修改最后一个事件\n const lastEvent = mergedEvents[lastEventKey];\n mergedEvents[lastEventKey] = {\n ...lastEvent,\n type: \"End\",\n spliceLoss: null\n };\n }\n // 判断最后连接的光纤类型\n if (!connectionStatus.OFPConnectedToRefStatus) {\n // 无连接,不操作\n } else if (connectionStatus.OFPConnectedToRefStatus?.includes('sm-') || connectionStatus.OFPConnectedToRefStatus?.includes('mm-')) {\n // 短跳线\n const lastEvent = mergedEvents[lastEventKey];\n // 将最后一个事件改为反射器\n mergedEvents[lastEventKey] = {\n ...lastEvent,\n type: \"Reflector\",\n spliceLoss: null\n };\n // 添加新的结束事件\n mergedEvents[`event${Object.keys(mergedEvents).length}`] = {\n type: \"End\",\n distance: lastEvent.distance + 2,\n spliceLoss: null,\n reflLoss: lastEvent.reflLoss,\n attenuation: lastEvent.attenuation\n };\n } else if (connectionStatus.OFPConnectedToRefStatus?.includes('smc-') || connectionStatus.OFPConnectedToRefStatus?.includes('mmc-')) {\n // 补偿光纤\n const lastEvent = mergedEvents[lastEventKey];\n // 将最后一个事件改为反射器\n mergedEvents[lastEventKey] = {\n ...lastEvent,\n type: \"Reflector\",\n spliceLoss: null\n };\n // 添加新的结束事件\n mergedEvents[`event${Object.keys(mergedEvents).length}`] = {\n type: \"End\",\n distance: lastEvent.distance + 161.15,\n spliceLoss: null,\n reflLoss: lastEvent.reflLoss,\n attenuation: lastEvent.attenuation\n };\n }\n } else if (testResult.ofpRefStatus === 'start') {\n // 仅前导基准\n // 判断首根光纤类型\n if (connectionStatus.OFPoutRefStatus?.includes('sm-') || connectionStatus.OFPoutRefStatus?.includes('mm-')) {\n // 短跳线\n mergedEvents['event0'] = {\n type: \"Start\",\n distance: 0,\n reflLoss: -19.44\n };\n mergedEvents['event1'] = {\n type: \"Hidden\",\n distance: 2,\n reflLoss: -33.44,\n spliceLoss: null\n };\n // 修改最后一个事件\n const lastEvent = mergedEvents[lastEventKey];\n mergedEvents[lastEventKey] = {\n ...lastEvent,\n type: \"End\",\n distance: lastEvent.distance + 2,\n spliceLoss: null\n };\n } else if (connectionStatus.OFPoutRefStatus?.includes('smc-') || connectionStatus.OFPoutRefStatus?.includes('mmc-')) {\n // 补偿光纤\n mergedEvents['event0'] = {\n type: \"StartRef\",\n distance: -161.15,\n reflLoss: -33.79\n };\n // 修改最后一个事件\n const lastEvent = mergedEvents[lastEventKey];\n mergedEvents[lastEventKey] = {\n ...lastEvent,\n type: \"End\",\n distance: lastEvent.distance + 2,\n spliceLoss: null\n };\n }\n // 判断最后连接的光纤类型\n if (!connectionStatus.OFPConnectedToRefStatus) {\n // 无连接,不操作\n } else if (connectionStatus.OFPConnectedToRefStatus?.includes('sm-') || connectionStatus.OFPConnectedToRefStatus?.includes('mm-')) {\n // 短跳线\n const lastEvent = mergedEvents[lastEventKey];\n // 将最后一个事件改为反射器\n mergedEvents[lastEventKey] = {\n ...lastEvent,\n type: \"Reflector\",\n spliceLoss: null\n };\n // 添加新的结束事件\n mergedEvents[`event${Object.keys(mergedEvents).length}`] = {\n type: \"End\",\n distance: lastEvent.distance + 2,\n spliceLoss: null,\n reflLoss: lastEvent.reflLoss,\n attenuation: lastEvent.attenuation\n };\n } else if (connectionStatus.OFPConnectedToRefStatus?.includes('smc-') || connectionStatus.OFPConnectedToRefStatus?.includes('mmc-')) {\n // 补偿光纤\n const lastEvent = mergedEvents[lastEventKey];\n // 将最后一个事件改为反射器\n mergedEvents[lastEventKey] = {\n ...lastEvent,\n type: \"Reflector\",\n spliceLoss: 0.1\n };\n // 添加新的结束事件\n mergedEvents[`event${Object.keys(mergedEvents).length}`] = {\n type: \"End\",\n distance: lastEvent.distance + 161.15,\n spliceLoss: null,\n reflLoss: lastEvent.reflLoss,\n attenuation: lastEvent.attenuation\n };\n }\n } else if (testResult.ofpRefStatus === 'end') {\n // 前导和末导基准\n // 判断首根光纤类型\n if (connectionStatus.OFPoutRefStatus?.includes('sm-') || connectionStatus.OFPoutRefStatus?.includes('mm-')) {\n // 短跳线\n mergedEvents['event0'] = {\n type: \"Start\",\n distance: 0,\n reflLoss: -19.44\n };\n mergedEvents['event1'] = {\n type: \"Hidden\",\n distance: 2,\n reflLoss: -33.44,\n spliceLoss: null\n };\n // 调整所有其他事件的位置,增加2米\n Object.keys(mergedEvents).forEach({\n \"EventTable.useEffect.loadTraceData.processWavelengthData\": (key)=>{\n if (key !== 'event0' && key !== 'event1') {\n mergedEvents[key] = {\n ...mergedEvents[key],\n distance: mergedEvents[key].distance + 2\n };\n }\n }\n }[\"EventTable.useEffect.loadTraceData.processWavelengthData\"]);\n // 修改最后一个事件\n const lastEvent = mergedEvents[lastEventKey];\n mergedEvents[lastEventKey] = {\n ...lastEvent,\n type: \"End\",\n distance: lastEvent.distance + 2,\n spliceLoss: null\n };\n } else if (connectionStatus.OFPoutRefStatus?.includes('smc-') || connectionStatus.OFPoutRefStatus?.includes('mmc-')) {\n // 补偿光纤\n mergedEvents['event0'] = {\n type: \"StartRef\",\n distance: -161.15,\n reflLoss: -33.79\n };\n // 修改最后一个事件\n const lastEvent = mergedEvents[lastEventKey];\n mergedEvents[lastEventKey] = {\n ...lastEvent,\n type: \"End\",\n distance: lastEvent.distance + 2,\n spliceLoss: null\n };\n }\n // 判断最后连接的光纤类型\n if (!connectionStatus.OFPConnectedToRefStatus) {\n // 无连接\n const lastEvent = mergedEvents[lastEventKey];\n mergedEvents[lastEventKey] = {\n ...lastEvent,\n type: \"EndNoRef\",\n spliceLoss: null\n };\n } else if (connectionStatus.OFPConnectedToRefStatus?.includes('sm-') || connectionStatus.OFPConnectedToRefStatus?.includes('mm-')) {\n // 短跳线\n const lastEvent = mergedEvents[lastEventKey];\n // 将最后一个事件改为反射器\n mergedEvents[lastEventKey] = {\n ...lastEvent,\n type: \"Reflector\",\n spliceLoss: null\n };\n // 添加新的结束事件\n mergedEvents[`event${Object.keys(mergedEvents).length}`] = {\n type: \"End\",\n distance: lastEvent.distance + 2,\n spliceLoss: null,\n reflLoss: lastEvent.reflLoss,\n attenuation: lastEvent.attenuation\n };\n } else if (connectionStatus.OFPConnectedToRefStatus?.includes('smc-') || connectionStatus.OFPConnectedToRefStatus?.includes('mmc-')) {\n // 补偿光纤\n const lastEvent = mergedEvents[lastEventKey];\n // 将最后一个事件改为反射器\n mergedEvents[lastEventKey] = {\n ...lastEvent,\n type: \"Reflector\",\n spliceLoss: null\n };\n // 添加末尾补偿事件\n mergedEvents[`event${Object.keys(mergedEvents).length}`] = {\n type: \"EndRef\",\n distance: lastEvent.distance + 161.15,\n reflLoss: -28.54\n };\n }\n }\n // 更新summary信息\n const eventKeys = Object.keys(mergedEvents).sort({\n \"EventTable.useEffect.loadTraceData.processWavelengthData.eventKeys\": (a, b)=>{\n const numA = parseInt(a.replace('event', ''));\n const numB = parseInt(b.replace('event', ''));\n return numA - numB;\n }\n }[\"EventTable.useEffect.loadTraceData.processWavelengthData.eventKeys\"]);\n const summarylastEventKey = eventKeys[eventKeys.length - 1];\n const lastEvent = mergedEvents[summarylastEventKey];\n // 计算总损耗\n let totalLoss = null;\n const allSpliceLossNull = Object.values(mergedEvents).every({\n \"EventTable.useEffect.loadTraceData.processWavelengthData.allSpliceLossNull\": (event)=>event.spliceLoss === null || event.spliceLoss === undefined\n }[\"EventTable.useEffect.loadTraceData.processWavelengthData.allSpliceLossNull\"]);\n if (!allSpliceLossNull) {\n totalLoss = Object.values(mergedEvents).reduce({\n \"EventTable.useEffect.loadTraceData.processWavelengthData\": (sum, event)=>{\n const loss = event.spliceLoss;\n if (loss === null || loss === undefined) return sum;\n return sum + loss;\n }\n }[\"EventTable.useEffect.loadTraceData.processWavelengthData\"], 0);\n }\n // 获取正确的distance值\n let finalDistance = lastEvent.distance;\n if (testResult.ofpRefStatus === 'end' && (connectionStatus.OFPConnectedToRefStatus?.includes('smc-') || connectionStatus.OFPConnectedToRefStatus?.includes('mmc-'))) {\n // 如果是末导基准且连接了补偿光纤,使用倒数第二个事件的distance\n const secondLastEventKey = eventKeys[eventKeys.length - 2];\n const secondLastEvent = mergedEvents[secondLastEventKey];\n finalDistance = secondLastEvent.distance;\n }\n const updatedSummary = {\n ...data1.Summary,\n totalDistance: finalDistance,\n totalLoss: totalLoss\n };\n return {\n events: mergedEvents,\n summary: updatedSummary\n };\n }\n }[\"EventTable.useEffect.loadTraceData.processWavelengthData\"];\n const processedData1 = processWavelengthData(data1);\n const processedData2 = processWavelengthData(data2);\n setWavelengthData({\n [wavelength1]: processedData1,\n [wavelength2]: processedData2\n });\n setCurrentWavelength(wavelength1);\n setEventData(processedData1);\n } catch (error) {\n console.error('Error loading trace data:', error);\n }\n }\n }[\"EventTable.useEffect.loadTraceData\"];\n if (testResult?.ofpResult) {\n loadTraceData();\n }\n }\n }[\"EventTable.useEffect\"], [\n testResult,\n isMultiMode\n ]);\n // 获取事件类型显示名称\n const getEventTypeName = (type)=>{\n switch(type){\n case 'StartRef':\n return 'OTDR端口';\n case 'EndRef':\n return '末尾事件';\n case 'EndNoRef':\n return '末尾事件';\n case 'Start':\n return 'OTDR端口';\n case 'End':\n return '端点';\n case 'Reflector':\n return '反射器';\n case 'Hidden':\n return '隐藏事件';\n case 'Splice':\n return '熔接点';\n case 'Bend':\n return '弯曲事件';\n default:\n return '事件';\n }\n };\n // 获取事件状态图标\n const getEventStatusIcon = (event)=>{\n if (event.type === 'Start' || event.type === 'StartRef') {\n return (0,_utils_asset__WEBPACK_IMPORTED_MODULE_5__.getAssetUrl)('/pass.png');\n } else if (event.type === 'End' || event.type === 'EndRef') {\n return (0,_utils_asset__WEBPACK_IMPORTED_MODULE_5__.getAssetUrl)('/pass.png');\n } else if (event.type === 'EndNoRef') {\n return (0,_utils_asset__WEBPACK_IMPORTED_MODULE_5__.getAssetUrl)('/fail.png');\n } else if (event.type === 'Reflector' && event.spliceLoss > 0.75) {\n return (0,_utils_asset__WEBPACK_IMPORTED_MODULE_5__.getAssetUrl)('/fail.png');\n } else if (event.type === 'Splice' && event.spliceLoss > 0.35) {\n return (0,_utils_asset__WEBPACK_IMPORTED_MODULE_5__.getAssetUrl)('/fail.png');\n } else if (event.type === 'Bend') {\n return (0,_utils_asset__WEBPACK_IMPORTED_MODULE_5__.getAssetUrl)('/fail.png');\n } else {\n return (0,_utils_asset__WEBPACK_IMPORTED_MODULE_5__.getAssetUrl)('/pass.png');\n }\n };\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full h-full flex flex-col bg-white p-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex border-b border-gray-300 py-2 font-bold text-black\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-24 text-center\",\n children: \"(m)\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/EventTable.js\",\n lineNumber: 380,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-24 text-center\",\n children: \"损耗\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/EventTable.js\",\n lineNumber: 381,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-24 text-center\",\n children: \"反射\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/EventTable.js\",\n lineNumber: 382,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 text-center\",\n children: \"类型\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/EventTable.js\",\n lineNumber: 383,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-16 text-center\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/EventTable.js\",\n lineNumber: 384,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/EventTable.js\",\n lineNumber: 379,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 overflow-y-auto\",\n children: eventData && Object.entries(eventData.events).sort((a, b)=>b[1].distance - a[1].distance).map(([key, event])=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center border-b border-gray-200 py-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-24 text-center text-black\",\n children: event.distance.toFixed(2)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/EventTable.js\",\n lineNumber: 393,\n columnNumber: 29\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-24 text-center text-black\",\n children: event.spliceLoss ? event.spliceLoss.toFixed(2) : 'N/A'\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/EventTable.js\",\n lineNumber: 396,\n columnNumber: 29\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-24 text-center text-black\",\n children: event.reflLoss ? event.reflLoss.toFixed(2) : 'N/A'\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/EventTable.js\",\n lineNumber: 399,\n columnNumber: 29\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 text-center text-black\",\n children: getEventTypeName(event.type)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/EventTable.js\",\n lineNumber: 402,\n columnNumber: 29\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-16 flex justify-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-5 h-5 relative\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_4___default()), {\n src: (0,_utils_asset__WEBPACK_IMPORTED_MODULE_5__.getAssetUrl)(getEventStatusIcon(event)),\n alt: \"status\",\n fill: true,\n className: \"object-contain\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/EventTable.js\",\n lineNumber: 407,\n columnNumber: 37\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/EventTable.js\",\n lineNumber: 406,\n columnNumber: 33\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/EventTable.js\",\n lineNumber: 405,\n columnNumber: 29\n }, this)\n ]\n }, key, true, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/EventTable.js\",\n lineNumber: 392,\n columnNumber: 25\n }, this))\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/EventTable.js\",\n lineNumber: 388,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[10%] flex items-center justify-center space-x-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>{\n const wavelengths = Object.keys(wavelengthData);\n const currentIndex = wavelengths.indexOf(currentWavelength);\n const prevWavelength = wavelengths[(currentIndex - 1 + wavelengths.length) % wavelengths.length];\n setCurrentWavelength(prevWavelength);\n setEventData(wavelengthData[prevWavelength]);\n },\n className: \"p-2 rounded-full bg-gray-300 hover:bg-gray-400\",\n children: \"◀\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/EventTable.js\",\n lineNumber: 421,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-lg font-semibold\",\n children: [\n currentWavelength,\n \"nm\"\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/EventTable.js\",\n lineNumber: 433,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>{\n const wavelengths = Object.keys(wavelengthData);\n const currentIndex = wavelengths.indexOf(currentWavelength);\n const nextWavelength = wavelengths[(currentIndex + 1) % wavelengths.length];\n setCurrentWavelength(nextWavelength);\n setEventData(wavelengthData[nextWavelength]);\n },\n className: \"p-2 rounded-full bg-gray-300 hover:bg-gray-400\",\n children: \"▶\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/EventTable.js\",\n lineNumber: 434,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/EventTable.js\",\n lineNumber: 420,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/EventTable.js\",\n lineNumber: 377,\n columnNumber: 9\n }, this);\n}\n\n__webpack_async_result__();\n} catch(e) { __webpack_async_result__(e); } });//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHBhZ2VzLWRpci1ub2RlKS8uL3NyYy9jb21wb25lbnRzL2xpYi9FdmVudFRhYmxlLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQW1EO0FBQ0E7QUFDRjtBQUNsQjtBQUNhO0FBRTdCLFNBQVNPLFdBQVcsRUFBRUMsVUFBVSxFQUFFO0lBRTdDLE1BQU0sRUFBRUMsZ0JBQWdCLEVBQUUsR0FBR0wsOERBQWNBO0lBQzNDLE1BQU0sQ0FBQ00sV0FBV0MsYUFBYSxHQUFHViwrQ0FBUUEsQ0FBQztJQUMzQyxNQUFNLENBQUNXLG1CQUFtQkMscUJBQXFCLEdBQUdaLCtDQUFRQSxDQUFDO0lBQzNELE1BQU0sQ0FBQ2EsZ0JBQWdCQyxrQkFBa0IsR0FBR2QsK0NBQVFBLENBQUMsQ0FBQztJQUV0RCxZQUFZO0lBQ1osTUFBTWUsY0FBY1IsWUFBWVMsWUFBWUMsUUFBUUMsVUFBVUMsU0FBUztJQUV2RSxTQUFTO0lBQ1RsQixnREFBU0E7Z0NBQUM7WUFDTixNQUFNbUI7c0RBQWdCO29CQUNsQixJQUFJO3dCQUNBLE1BQU1DLGNBQWNOLGNBQWMsUUFBUTt3QkFDMUMsTUFBTU8sY0FBY1AsY0FBYyxTQUFTO3dCQUUzQyxNQUFNLENBQUNRLE9BQU9DLE1BQU0sR0FBRyxNQUFNQyxRQUFRQyxHQUFHLENBQUM7NEJBQ3JDLHVHQUFPLEdBQWUsRUFBRW5CLFdBQVdvQixTQUFTLENBQUMsQ0FBQyxFQUFFTixZQUFZLFdBQVcsQ0FBQzs0QkFDeEUsdUdBQU8sR0FBZSxFQUFFZCxXQUFXb0IsU0FBUyxDQUFDLENBQUMsRUFBRUwsWUFBWSxXQUFXLENBQUM7eUJBQzNFO3dCQUVELGlCQUFpQjt3QkFDakIsTUFBTU07d0ZBQXdCLENBQUNDO2dDQUMzQixNQUFNQyxlQUFlLENBQUM7Z0NBRXRCLGdCQUFnQjtnQ0FDaEJDLE9BQU9DLElBQUksQ0FBQ0gsS0FBS0ksS0FBSyxFQUFFQyxPQUFPO2dHQUFDQyxDQUFBQTt3Q0FDNUJMLFlBQVksQ0FBQ0ssU0FBUyxHQUFHOzRDQUFD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QUFJO3dDQUNKQyxJQUFJO3dDQUNKTixXQUFVOzs7Ozs7Ozs7Ozs7Ozs7Ozt1QkFuQmhCcEM7Ozs7Ozs7Ozs7MEJBNEJ0Qiw4REFBQ21DO2dCQUFJQyxXQUFVOztrQ0FDWCw4REFBQ087d0JBQ0dDLFNBQVM7NEJBQ0wsTUFBTUMsY0FBYzFELE9BQU9DLElBQUksQ0FBQ25COzRCQUNoQyxNQUFNNkUsZUFBZUQsWUFBWUUsT0FBTyxDQUFDaEY7NEJBQ3pDLE1BQU1pRixpQkFBaUJILFdBQVcsQ0FBQyxDQUFDQyxlQUFlLElBQUlELFlBQVlwRCxNQUFNLElBQUlvRCxZQUFZcEQsTUFBTSxDQUFDOzRCQUNoR3pCLHFCQUFxQmdGOzRCQUNyQmxGLGFBQWFHLGNBQWMsQ0FBQytFLGVBQWU7d0JBQy9DO3dCQUNBWixXQUFVO2tDQUNiOzs7Ozs7a0NBR0QsOERBQUNhO3dCQUFLYixXQUFVOzs0QkFBeUJyRTs0QkFBa0I7Ozs7Ozs7a0NBQzNELDhEQUFDNEU7d0JBQ0dDLFNBQVM7NEJBQ0wsTUFBTUMsY0FBYzFELE9BQU9DLElBQUksQ0FBQ25COzRCQUNoQyxNQUFNNkUsZUFBZUQsWUFBWUUsT0FBTyxDQUFDaEY7NEJBQ3pDLE1BQU1tRixpQkFBaUJMLFdBQVcsQ0FBQyxDQUFDQyxlQUFlLEtBQUtELFlBQVlwRCxNQUFNLENBQUM7NEJBQzNFekIscUJBQXFCa0Y7NEJBQ3JCcEYsYUFBYUcsY0FBYyxDQUFDaUYsZUFBZTt3QkFDL0M7d0JBQ0FkLFdBQVU7a0NBQ2I7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQU1qQiIsInNvdXJjZXMiOlsiL29wdC9kZXYvZXN0LWRzeC9zcmMvY29tcG9uZW50cy9saWIvRXZlbnRUYWJsZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUsIHVzZUVmZmVjdCB9IGZyb20gJ3JlYWN0JztcclxuaW1wb3J0IHVzZURpc3BsYXlTdG9yZSBmcm9tICdAL3N0b3JlL2Rpc3BsYXlTdG9yZSc7XHJcbmltcG9ydCB1c2VEZXZpY2VTdG9yZSBmcm9tICdAL3N0b3JlL2RldmljZVN0b3JlJztcclxuaW1wb3J0IEltYWdlIGZyb20gJ25leHQvaW1hZ2UnO1xyXG5pbXBvcnQgeyBnZXRBc3NldFVybCB9IGZyb20gJ0AvdXRpbHMvYXNzZXQnO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gRXZlbnRUYWJsZSh7IHRlc3RSZXN1bHQgfSkge1xyXG4gICAgXHJcbiAgICBjb25zdCB7IGNvbm5lY3Rpb25TdGF0dXMgfSA9IHVzZURldmljZVN0b3JlKCk7XHJcbiAgICBjb25zdCBbZXZlbnREYXRhLCBzZXRFdmVudERhdGFdID0gdXNlU3RhdGUobnVsbCk7XHJcbiAgICBjb25zdCBbY3VycmVudFdhdmVsZW5ndGgsIHNldEN1cnJlbnRXYXZlbGVuZ3RoXSA9IHVzZVN0YXRlKG51bGwpO1xyXG4gICAgY29uc3QgW3dhdmVsZW5ndGhEYXRhLCBzZXRXYXZlbGVuZ3RoRGF0YV0gPSB1c2VTdGF0ZSh7fSk7XHJcblxyXG4gICAgLy8g5Yik5pat5piv5ZCm5Li65aSa5qih5YWJ57qkXHJcbiAgICBjb25zdCBpc011bHRpTW9kZSA9IHRlc3RSZXN1bHQ/LnRlc3Rjb25maWc/LnBhcmFtcz8uY2FibGVUeXBlLmluY2x1ZGVzKCdPTScpO1xyXG5cclxuICAgIC8vIOWKoOi9veS6i+S7tuaVsOaNrlxyXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcclxuICAgICAgICBjb25zdCBsb2FkVHJhY2VEYXRhID0gYXN5bmMgKCkgPT4ge1xyXG4gICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgY29uc3Qgd2F2ZWxlbmd0aDEgPSBpc011bHRpTW9kZSA/ICc4NTAnIDogJzEzMTAnO1xyXG4gICAgICAgICAgICAgICAgY29uc3Qgd2F2ZWxlbmd0aDIgPSBpc011bHRpTW9kZSA/ICcxMzAwJyA6ICcxNTUwJztcclxuXHJcbiAgICAgICAgICAgICAgICBjb25zdCBbZGF0YTEsIGRhdGEyXSA9IGF3YWl0IFByb21pc2UuYWxsKFtcclxuICAgICAgICAgICAgICAgICAgICBpbXBvcnQoYEAvc3RvcmUvRklCRVIvJHt0ZXN0UmVzdWx0Lm9mcFJlc3VsdH0vJHt3YXZlbGVuZ3RoMX0tZHVtcC5qc29uYCksXHJcbiAgICAgICAgICAgICAgICAgICAgaW1wb3J0KGBAL3N0b3JlL0ZJQkVSLyR7dGVzdFJlc3VsdC5vZnBSZXN1bHR9LyR7d2F2ZWxlbmd0aDJ9LWR1bXAuanNvbmApXHJcbiAgICAgICAgICAgICAgICBdKTtcclxuXHJcbiAgICAgICAgICAgICAgICAvLyDmoLnmja7ln7rlh4borr7nva7ph43mlrDliJvlu7rkuovku7bmlbDmja5cclxuICAgICAgICAgICAgICAgIGNvbnN0IHByb2Nlc3NXYXZlbGVuZ3RoRGF0YSA9IChkYXRhKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbWVyZ2VkRXZlbnRzID0ge307XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gMS4g6aaW5YWI5re75Yqg5Y6f5aeL5LqL5Lu25pWw5o2uXHJcbiAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmtleXMoZGF0YS5ldmVudCkuZm9yRWFjaChldmVudEtleSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lcmdlZEV2ZW50c1tldmVudEtleV0gPSB7Li4uZGF0YS5ldmVudFtldmVudEtleV19O1xyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAvLyAyLiDmoLnmja7ln7rlh4borr7nva7osIPmlbTkuovku7bnsbvlnotcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBsYXN0RXZlbnRLZXkgPSBPYmplY3Qua2V5cyhtZXJnZWRFdmVudHMpW09iamVjdC5rZXlzKG1lcmdlZEV2ZW50cykubGVuZ3RoIC0gMV07XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGlmICghdGVzdFJlc3VsdC5vZnBSZWZTdGF0dXMpIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyDml6Dln7rlh4borr7nva5cclxuICAgICAgICAgICAgICAgICAgICAvLyDliKTmlq3pppbmoLnlhYnnuqTnsbvlnotcclxuICAgICAgICAgICAgICAgICAgICBpZiAoY29ubmVjdGlvblN0YXR1cy5PRlBvdXRSZWZTdGF0dXM/LmluY2x1ZGVzKCdzbS0nKSB8fCBjb25uZWN0aW9uU3RhdHVzLk9GUG91dFJlZlN0YXR1cz8uaW5jbHVkZXMoJ21tLScpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIOefrei3s+e6v1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXJnZWRFdmVudHNbJ2V2ZW50MCddID0geyB0eXBlOiBcIlN0YXJ0XCIsIGRpc3RhbmNlOiAwLCByZWZsTG9zczogLTM1LjI1IH07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lcmdlZEV2ZW50c1snZXZlbnQxJ10gPSB7IHR5cGU6IFwiSGlkZGVuXCIsIGRpc3RhbmNlOiAyLCByZWZsTG9zczogLTE0LjE4LCBzcGxpY2VMb3NzOiBudWxsIH07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyDosIPmlbTmiYDmnInlhbbku5bkuovku7bnmoTkvY3nva7vvIzlop7liqAy57GzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKG1lcmdlZEV2ZW50cykuZm9yRWFjaChrZXkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGtleSAhPT0gJ2V2ZW50MCcgJiYga2V5ICE9PSAnZXZlbnQxJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lcmdlZEV2ZW50c1trZXldID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5tZXJnZWRFdmVudHNba2V5XSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzdGFuY2U6IG1lcmdlZEV2ZW50c1trZXldLmRpc3RhbmNlICsgMlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8g5L+u5pS55pyA5ZCO5LiA5Liq5LqL5Lu2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxhc3RFdmVudCA9IG1lcmdlZEV2ZW50c1tsYXN0RXZlbnRLZXldO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXJnZWRFdmVudHNbbGFzdEV2ZW50S2V5XSA9IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmxhc3RFdmVudCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFwiRW5kXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGxpY2VMb3NzOiBudWxsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjb25uZWN0aW9uU3RhdHVzLk9GUG91dFJlZlN0YXR1cz8uaW5jbHVkZXMoJ3NtYy0nKSB8fCBjb25uZWN0aW9uU3RhdHVzLk9GUG91dFJlZlN0YXR1cz8uaW5jbHVkZXMoJ21tYy0nKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyDooaXlgb/lhYnnuqRcclxuICAgICAgICAgICAgICAgICAgICAgICAgbWVyZ2VkRXZlbnRzWydldmVudDAnXSA9IHsgdHlwZTogXCJTdGFydFwiLCBkaXN0YW5jZTogMCwgcmVmbExvc3M6IC0zNS4yNSB9O1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8g6LCD5pW05omA5pyJ5YW25LuW5LqL5Lu255qE5L2N572u77yM5aKe5YqgMTYxLjE157GzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKG1lcmdlZEV2ZW50cykuZm9yRWFjaChrZXkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGtleSAhPT0gJ2V2ZW50MCcpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXJnZWRFdmVudHNba2V5XSA9IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4ubWVyZ2VkRXZlbnRzW2tleV0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3RhbmNlOiBtZXJnZWRFdmVudHNba2V5XS5kaXN0YW5jZSArIDE2MS4xNVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8g5L+u5pS55pyA5ZCO5LiA5Liq5LqL5Lu2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxhc3RFdmVudCA9IG1lcmdlZEV2ZW50c1tsYXN0RXZlbnRLZXldO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXJnZWRFdmVudHNbbGFzdEV2ZW50S2V5XSA9IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmxhc3RFdmVudCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFwiRW5kXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGxpY2VMb3NzOiBudWxsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAvLyDliKTmlq3mnIDlkI7ov57mjqXnmoTlhYnnuqTnsbvlnotcclxuICAgICAgICAgICAgICAgICAgICBpZiAoIWNvbm5lY3Rpb25TdGF0dXMuT0ZQQ29ubmVjdGVkVG9SZWZTdGF0dXMpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8g5peg6L+e5o6l77yM5LiN5pON5L2cXHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjb25uZWN0aW9uU3RhdHVzLk9GUENvbm5lY3RlZFRvUmVmU3RhdHVzPy5pbmNsdWRlcygnc20tJykgfHwgY29ubmVjdGlvblN0YXR1cy5PRlBDb25uZWN0ZWRUb1JlZlN0YXR1cz8uaW5jbHVkZXMoJ21tLScpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIOefrei3s+e6v1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsYXN0RXZlbnQgPSBtZXJnZWRFdmVudHNbbGFzdEV2ZW50S2V5XTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8g5bCG5pyA5ZCO5LiA5Liq5LqL5Lu25pS55Li65Y+N5bCE5ZmoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lcmdlZEV2ZW50c1tsYXN0RXZlbnRLZXldID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4ubGFzdEV2ZW50LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJSZWZsZWN0b3JcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwbGljZUxvc3M6IG51bGxcclxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8g5re75Yqg5paw55qE57uT5p2f5LqL5Lu2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lcmdlZEV2ZW50c1tgZXZlbnQke09iamVjdC5rZXlzKG1lcmdlZEV2ZW50cykubGVuZ3RofWBdID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJFbmRcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3RhbmNlOiBsYXN0RXZlbnQuZGlzdGFuY2UgKyAyLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BsaWNlTG9zczogbnVsbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZmxMb3NzOiBsYXN0RXZlbnQucmVmbExvc3MsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRlbnVhdGlvbjogbGFzdEV2ZW50LmF0dGVudWF0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjb25uZWN0aW9uU3RhdHVzLk9GUENvbm5lY3RlZFRvUmVmU3RhdHVzPy5pbmNsdWRlcygnc21jLScpIHx8IGNvbm5lY3Rpb25TdGF0dXMuT0ZQQ29ubmVjdGVkVG9SZWZTdGF0dXM/LmluY2x1ZGVzKCdtbWMtJykpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8g6KGl5YG/5YWJ57qkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxhc3RFdmVudCA9IG1lcmdlZEV2ZW50c1tsYXN0RXZlbnRLZXldO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyDlsIbmnIDlkI7kuIDkuKrkuovku7bmlLnkuLrlj43lsITlmahcclxuICAgICAgICAgICAgICAgICAgICAgICAgbWVyZ2VkRXZlbnRzW2xhc3RFdmVudEtleV0gPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5sYXN0RXZlbnQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBcIlJlZmxlY3RvclwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BsaWNlTG9zczogbnVsbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyDmt7vliqDmlrDnmoTnu5PmnZ/kuovku7ZcclxuICAgICAgICAgICAgICAgICAgICAgICAgbWVyZ2VkRXZlbnRzW2BldmVudCR7T2JqZWN0LmtleXMobWVyZ2VkRXZlbnRzKS5sZW5ndGh9YF0gPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBcIkVuZFwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzdGFuY2U6IGxhc3RFdmVudC5kaXN0YW5jZSArIDE2MS4xNSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwbGljZUxvc3M6IG51bGwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZsTG9zczogbGFzdEV2ZW50LnJlZmxMb3NzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0ZW51YXRpb246IGxhc3RFdmVudC5hdHRlbnVhdGlvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRlc3RSZXN1bHQub2ZwUmVmU3RhdHVzID09PSAnc3RhcnQnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIOS7heWJjeWvvOWfuuWHhlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyDliKTmlq3pppbmoLnlhYnnuqTnsbvlnotcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbm5lY3Rpb25TdGF0dXMuT0ZQb3V0UmVmU3RhdHVzPy5pbmNsdWRlcygnc20tJykgfHwgY29ubmVjdGlvblN0YXR1cy5PRlBvdXRSZWZTdGF0dXM/LmluY2x1ZGVzKCdtbS0nKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g55+t6Lez57q/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXJnZWRFdmVudHNbJ2V2ZW50MCddID0geyB0eXBlOiBcIlN0YXJ0XCIsIGRpc3RhbmNlOiAwLCByZWZsTG9zczogLTE5LjQ0IH07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXJnZWRFdmVudHNbJ2V2ZW50MSddID0geyB0eXBlOiBcIkhpZGRlblwiLCBkaXN0YW5jZTogMiwgcmVmbExvc3M6IC0zMy40NCwgc3BsaWNlTG9zczogbnVsbCB9O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g5L+u5pS55pyA5ZCO5LiA5Liq5LqL5Lu2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsYXN0RXZlbnQgPSBtZXJnZWRFdmVudHNbbGFzdEV2ZW50S2V5XTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lcmdlZEV2ZW50c1tsYXN0RXZlbnRLZXldID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmxhc3RFdmVudCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBcIkVuZFwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3RhbmNlOiBsYXN0RXZlbnQuZGlzdGFuY2UgKyAyLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwbGljZUxvc3M6IG51bGxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoY29ubmVjdGlvblN0YXR1cy5PRlBvdXRSZWZTdGF0dXM/LmluY2x1ZGVzKCdzbWMtJykgfHwgY29ubmVjdGlvblN0YXR1cy5PRlBvdXRSZWZTdGF0dXM/LmluY2x1ZGVzKCdtbWMtJykpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIOihpeWBv+WFiee6pFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVyZ2VkRXZlbnRzWydldmVudDAnXSA9IHsgdHlwZTogXCJTdGFydFJlZlwiLCBkaXN0YW5jZTogLTE2MS4xNSwgcmVmbExvc3M6IC0zMy43OSB9O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g5L+u5pS55pyA5ZCO5LiA5Liq5LqL5Lu2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsYXN0RXZlbnQgPSBtZXJnZWRFdmVudHNbbGFzdEV2ZW50S2V5XTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lcmdlZEV2ZW50c1tsYXN0RXZlbnRLZXldID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmxhc3RFdmVudCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBcIkVuZFwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3RhbmNlOiBsYXN0RXZlbnQuZGlzdGFuY2UgKyAyLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwbGljZUxvc3M6IG51bGxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIOWIpOaWreacgOWQjui/nuaOpeeahOWFiee6pOexu+Wei1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWNvbm5lY3Rpb25TdGF0dXMuT0ZQQ29ubmVjdGVkVG9SZWZTdGF0dXMpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIOaXoOi/nuaOpe+8jOS4jeaTjeS9nFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNvbm5lY3Rpb25TdGF0dXMuT0ZQQ29ubmVjdGVkVG9SZWZTdGF0dXM/LmluY2x1ZGVzKCdzbS0nKSB8fCBjb25uZWN0aW9uU3RhdHVzLk9GUENvbm5lY3RlZFRvUmVmU3RhdHVzPy5pbmNsdWRlcygnbW0tJykpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIOefrei3s+e6v1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGFzdEV2ZW50ID0gbWVyZ2VkRXZlbnRzW2xhc3RFdmVudEtleV07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyDlsIbmnIDlkI7kuIDkuKrkuovku7bmlLnkuLrlj43lsITlmahcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lcmdlZEV2ZW50c1tsYXN0RXZlbnRLZXldID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmxhc3RFdmVudCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBcIlJlZmxlY3RvclwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwbGljZUxvc3M6IG51bGxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyDmt7vliqDmlrDnmoTnu5PmnZ/kuovku7ZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lcmdlZEV2ZW50c1tgZXZlbnQke09iamVjdC5rZXlzKG1lcmdlZEV2ZW50cykubGVuZ3RofWBdID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFwiRW5kXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzdGFuY2U6IGxhc3RFdmVudC5kaXN0YW5jZSArIDIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BsaWNlTG9zczogbnVsbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZsTG9zczogbGFzdEV2ZW50LnJlZmxMb3NzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dGVudWF0aW9uOiBsYXN0RXZlbnQuYXR0ZW51YXRpb25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoY29ubmVjdGlvblN0YXR1cy5PRlBDb25uZWN0ZWRUb1JlZlN0YXR1cz8uaW5jbHVkZXMoJ3NtYy0nKSB8fCBjb25uZWN0aW9uU3RhdHVzLk9GUENvbm5lY3RlZFRvUmVmU3RhdHVzPy5pbmNsdWRlcygnbW1jLScpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyDooaXlgb/lhYnnuqRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxhc3RFdmVudCA9IG1lcmdlZEV2ZW50c1tsYXN0RXZlbnRLZXldO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g5bCG5pyA5ZCO5LiA5Liq5LqL5Lu25pS55Li65Y+N5bCE5ZmoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXJnZWRFdmVudHNbbGFzdEV2ZW50S2V5XSA9IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5sYXN0RXZlbnQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJSZWZsZWN0b3JcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGxpY2VMb3NzOiAwLjFcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyDmt7vliqDmlrDnmoTnu5PmnZ/kuovku7ZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lcmdlZEV2ZW50c1tgZXZlbnQke09iamVjdC5rZXlzKG1lcmdlZEV2ZW50cykubGVuZ3RofWBdID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFwiRW5kXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzdGFuY2U6IGxhc3RFdmVudC5kaXN0YW5jZSArIDE2MS4xNSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGxpY2VMb3NzOiBudWxsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZmxMb3NzOiBsYXN0RXZlbnQucmVmbExvc3MsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0ZW51YXRpb246IGxhc3RFdmVudC5hdHRlbnVhdGlvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGVzdFJlc3VsdC5vZnBSZWZTdGF0dXMgPT09ICdlbmQnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIOWJjeWvvOWSjOacq+WvvOWfuuWHhlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyDliKTmlq3pppbmoLnlhYnnuqTnsbvlnotcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbm5lY3Rpb25TdGF0dXMuT0ZQb3V0UmVmU3RhdHVzPy5pbmNsdWRlcygnc20tJykgfHwgY29ubmVjdGlvblN0YXR1cy5PRlBvdXRSZWZTdGF0dXM/LmluY2x1ZGVzKCdtbS0nKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g55+t6Lez57q/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXJnZWRFdmVudHNbJ2V2ZW50MCddID0geyB0eXBlOiBcIlN0YXJ0XCIsIGRpc3RhbmNlOiAwLCByZWZsTG9zczogLTE5LjQ0IH07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXJnZWRFdmVudHNbJ2V2ZW50MSddID0geyB0eXBlOiBcIkhpZGRlblwiLCBkaXN0YW5jZTogMiwgcmVmbExvc3M6IC0zMy40NCwgc3BsaWNlTG9zczogbnVsbCB9O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g6LCD5pW05omA5pyJ5YW25LuW5LqL5Lu255qE5L2N572u77yM5aKe5YqgMuexs1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmtleXMobWVyZ2VkRXZlbnRzKS5mb3JFYWNoKGtleSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGtleSAhPT0gJ2V2ZW50MCcgJiYga2V5ICE9PSAnZXZlbnQxJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXJnZWRFdmVudHNba2V5XSA9IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLm1lcmdlZEV2ZW50c1trZXldLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzdGFuY2U6IG1lcmdlZEV2ZW50c1trZXldLmRpc3RhbmNlICsgMlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g5L+u5pS55pyA5ZCO5LiA5Liq5LqL5Lu2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsYXN0RXZlbnQgPSBtZXJnZWRFdmVudHNbbGFzdEV2ZW50S2V5XTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lcmdlZEV2ZW50c1tsYXN0RXZlbnRLZXldID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmxhc3RFdmVudCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBcIkVuZFwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3RhbmNlOiBsYXN0RXZlbnQuZGlzdGFuY2UgKyAyLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwbGljZUxvc3M6IG51bGxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoY29ubmVjdGlvblN0YXR1cy5PRlBvdXRSZWZTdGF0dXM/LmluY2x1ZGVzKCdzbWMtJykgfHwgY29ubmVjdGlvblN0YXR1cy5PRlBvdXRSZWZTdGF0dXM/LmluY2x1ZGVzKCdtbWMtJykpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIOihpeWBv+WFiee6pFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVyZ2VkRXZlbnRzWydldmVudDAnXSA9IHsgdHlwZTogXCJTdGFydFJlZlwiLCBkaXN0YW5jZTogLTE2MS4xNSwgcmVmbExvc3M6IC0zMy43OSB9O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g5L+u5pS55pyA5ZCO5LiA5Liq5LqL5Lu2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsYXN0RXZlbnQgPSBtZXJnZWRFdmVudHNbbGFzdEV2ZW50S2V5XTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lcmdlZEV2ZW50c1tsYXN0RXZlbnRLZXldID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmxhc3RFdmVudCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBcIkVuZFwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3RhbmNlOiBsYXN0RXZlbnQuZGlzdGFuY2UgKyAyLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwbGljZUxvc3M6IG51bGxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIOWIpOaWreacgOWQjui/nuaOpeeahOWFiee6pOexu+Wei1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWNvbm5lY3Rpb25TdGF0dXMuT0ZQQ29ubmVjdGVkVG9SZWZTdGF0dXMpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIOaXoOi/nuaOpVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGFzdEV2ZW50ID0gbWVyZ2VkRXZlbnRzW2xhc3RFdmVudEtleV07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXJnZWRFdmVudHNbbGFzdEV2ZW50S2V5XSA9IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5sYXN0RXZlbnQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJFbmROb1JlZlwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwbGljZUxvc3M6IG51bGxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoY29ubmVjdGlvblN0YXR1cy5PRlBDb25uZWN0ZWRUb1JlZlN0YXR1cz8uaW5jbHVkZXMoJ3NtLScpIHx8IGNvbm5lY3Rpb25TdGF0dXMuT0ZQQ29ubmVjdGVkVG9SZWZTdGF0dXM/LmluY2x1ZGVzKCdtbS0nKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g55+t6Lez57q/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsYXN0RXZlbnQgPSBtZXJnZWRFdmVudHNbbGFzdEV2ZW50S2V5XTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIOWwhuacgOWQjuS4gOS4quS6i+S7tuaUueS4uuWPjeWwhOWZqFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVyZ2VkRXZlbnRzW2xhc3RFdmVudEtleV0gPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4ubGFzdEV2ZW50LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFwiUmVmbGVjdG9yXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BsaWNlTG9zczogbnVsbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIOa3u+WKoOaWsOeahOe7k+adn+S6i+S7tlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVyZ2VkRXZlbnRzW2BldmVudCR7T2JqZWN0LmtleXMobWVyZ2VkRXZlbnRzKS5sZW5ndGh9YF0gPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJFbmRcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXN0YW5jZTogbGFzdEV2ZW50LmRpc3RhbmNlICsgMixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGxpY2VMb3NzOiBudWxsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZmxMb3NzOiBsYXN0RXZlbnQucmVmbExvc3MsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0ZW51YXRpb246IGxhc3RFdmVudC5hdHRlbnVhdGlvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjb25uZWN0aW9uU3RhdHVzLk9GUENvbm5lY3RlZFRvUmVmU3RhdHVzPy5pbmNsdWRlcygnc21jLScpIHx8IGNvbm5lY3Rpb25TdGF0dXMuT0ZQQ29ubmVjdGVkVG9SZWZTdGF0dXM/LmluY2x1ZGVzKCdtbWMtJykpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIOihpeWBv+WFiee6pFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGFzdEV2ZW50ID0gbWVyZ2VkRXZlbnRzW2xhc3RFdmVudEtleV07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyDlsIbmnIDlkI7kuIDkuKrkuovku7bmlLnkuLrlj43lsITlmahcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lcmdlZEV2ZW50c1tsYXN0RXZlbnRLZXldID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmxhc3RFdmVudCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBcIlJlZmxlY3RvclwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwbGljZUxvc3M6IG51bGxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyDmt7vliqDmnKvlsL7ooaXlgb/kuovku7ZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lcmdlZEV2ZW50c1tgZXZlbnQke09iamVjdC5rZXlzKG1lcmdlZEV2ZW50cykubGVuZ3RofWBdID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFwiRW5kUmVmXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzdGFuY2U6IGxhc3RFdmVudC5kaXN0YW5jZSArIDE2MS4xNSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZsTG9zczogLTI4LjU0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAvLyDmm7TmlrBzdW1tYXJ55L+h5oGvXHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZXZlbnRLZXlzID0gT2JqZWN0LmtleXMobWVyZ2VkRXZlbnRzKS5zb3J0KChhLCBiKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG51bUEgPSBwYXJzZUludChhLnJlcGxhY2UoJ2V2ZW50JywgJycpKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbnVtQiA9IHBhcnNlSW50KGIucmVwbGFjZSgnZXZlbnQnLCAnJykpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtQSAtIG51bUI7XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3VtbWFyeWxhc3RFdmVudEtleSA9IGV2ZW50S2V5c1tldmVudEtleXMubGVuZ3RoIC0gMV07XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbGFzdEV2ZW50ID0gbWVyZ2VkRXZlbnRzW3N1bW1hcnlsYXN0RXZlbnRLZXldO1xyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIC8vIOiuoeeul+aAu+aNn+iAl1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCB0b3RhbExvc3MgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGFsbFNwbGljZUxvc3NOdWxsID0gT2JqZWN0LnZhbHVlcyhtZXJnZWRFdmVudHMpLmV2ZXJ5KGV2ZW50ID0+IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBldmVudC5zcGxpY2VMb3NzID09PSBudWxsIHx8IGV2ZW50LnNwbGljZUxvc3MgPT09IHVuZGVmaW5lZFxyXG4gICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFhbGxTcGxpY2VMb3NzTnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0b3RhbExvc3MgPSBPYmplY3QudmFsdWVzKG1lcmdlZEV2ZW50cykucmVkdWNlKChzdW0sIGV2ZW50KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsb3NzID0gZXZlbnQuc3BsaWNlTG9zcztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsb3NzID09PSBudWxsIHx8IGxvc3MgPT09IHVuZGVmaW5lZCkgcmV0dXJuIHN1bTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzdW0gKyBsb3NzO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCAwKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgLy8g6I635Y+W5q2j56Gu55qEZGlzdGFuY2XlgLxcclxuICAgICAgICAgICAgICAgICAgICBsZXQgZmluYWxEaXN0YW5jZSA9IGxhc3RFdmVudC5kaXN0YW5jZTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGVzdFJlc3VsdC5vZnBSZWZTdGF0dXMgPT09ICdlbmQnICYmIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY29ubmVjdGlvblN0YXR1cy5PRlBDb25uZWN0ZWRUb1JlZlN0YXR1cz8uaW5jbHVkZXMoJ3NtYy0nKSB8fCBcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29ubmVjdGlvblN0YXR1cy5PRlBDb25uZWN0ZWRUb1JlZlN0YXR1cz8uaW5jbHVkZXMoJ21tYy0nKSkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8g5aaC5p6c5piv5pyr5a+85Z+65YeG5LiU6L+e5o6l5LqG6KGl5YG/5YWJ57qk77yM5L2/55So5YCS5pWw56ys5LqM5Liq5LqL5Lu255qEZGlzdGFuY2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2Vjb25kTGFzdEV2ZW50S2V5ID0gZXZlbnRLZXlzW2V2ZW50S2V5cy5sZW5ndGggLSAyXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2Vjb25kTGFzdEV2ZW50ID0gbWVyZ2VkRXZlbnRzW3NlY29uZExhc3RFdmVudEtleV07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsRGlzdGFuY2UgPSBzZWNvbmRMYXN0RXZlbnQuZGlzdGFuY2U7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHVwZGF0ZWRTdW1tYXJ5ID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5kYXRhMS5TdW1tYXJ5LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0b3RhbERpc3RhbmNlOiBmaW5hbERpc3RhbmNlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0b3RhbExvc3M6IHRvdGFsTG9zc1xyXG4gICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudHM6IG1lcmdlZEV2ZW50cyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1bW1hcnk6IHVwZGF0ZWRTdW1tYXJ5XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgICAgICBjb25zdCBwcm9jZXNzZWREYXRhMSA9IHByb2Nlc3NXYXZlbGVuZ3RoRGF0YShkYXRhMSk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBwcm9jZXNzZWREYXRhMiA9IHByb2Nlc3NXYXZlbGVuZ3RoRGF0YShkYXRhMik7XHJcblxyXG4gICAgICAgICAgICAgICAgXHJcblxyXG4gICAgICAgICAgICAgICAgc2V0V2F2ZWxlbmd0aERhdGEoe1xyXG4gICAgICAgICAgICAgICAgICAgIFt3YXZlbGVuZ3RoMV06IHByb2Nlc3NlZERhdGExLFxyXG4gICAgICAgICAgICAgICAgICAgIFt3YXZlbGVuZ3RoMl06IHByb2Nlc3NlZERhdGEyXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgICAgICBzZXRDdXJyZW50V2F2ZWxlbmd0aCh3YXZlbGVuZ3RoMSk7XHJcbiAgICAgICAgICAgICAgICBzZXRFdmVudERhdGEocHJvY2Vzc2VkRGF0YTEpO1xyXG4gICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgbG9hZGluZyB0cmFjZSBkYXRhOicsIGVycm9yKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIGlmICh0ZXN0UmVzdWx0Py5vZnBSZXN1bHQpIHtcclxuICAgICAgICAgICAgbG9hZFRyYWNlRGF0YSgpO1xyXG4gICAgICAgIH1cclxuICAgIH0sIFt0ZXN0UmVzdWx0LCBpc011bHRpTW9kZV0pO1xyXG4gICAgXHJcbiAgICAvLyDojrflj5bkuovku7bnsbvlnovmmL7npLrlkI3np7BcclxuICAgIGNvbnN0IGdldEV2ZW50VHlwZU5hbWUgPSAodHlwZSkgPT4ge1xyXG4gICAgICAgIHN3aXRjaCh0eXBlKSB7XHJcbiAgICAgICAgICAgIGNhc2UgJ1N0YXJ0UmVmJzogcmV0dXJuICdPVERS56uv5Y+jJztcclxuICAgICAgICAgICAgY2FzZSAnRW5kUmVmJzogcmV0dXJuICfmnKvlsL7kuovku7YnO1xyXG4gICAgICAgICAgICBjYXNlICdFbmROb1JlZic6IHJldHVybiAn5pyr5bC+5LqL5Lu2JztcclxuICAgICAgICAgICAgY2FzZSAnU3RhcnQnOiByZXR1cm4gJ09URFLnq6/lj6MnO1xyXG4gICAgICAgICAgICBjYXNlICdFbmQnOiByZXR1cm4gJ+err+eCuSc7XHJcbiAgICAgICAgICAgIGNhc2UgJ1JlZmxlY3Rvcic6IHJldHVybiAn5Y+N5bCE5ZmoJztcclxuICAgICAgICAgICAgY2FzZSAnSGlkZGVuJzogcmV0dXJuICfpmpDol4/kuovku7YnO1xyXG4gICAgICAgICAgICBjYXNlICdTcGxpY2UnOiByZXR1cm4gJ+eGlOaOpeeCuSc7XHJcbiAgICAgICAgICAgIGNhc2UgJ0JlbmQnOiByZXR1cm4gJ+W8r+absuS6i+S7tic7XHJcbiAgICAgICAgICAgIGRlZmF1bHQ6IHJldHVybiAn5LqL5Lu2JztcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG5cclxuICAgIC8vIOiOt+WPluS6i+S7tueKtuaAgeWbvuagh1xyXG4gICAgY29uc3QgZ2V0RXZlbnRTdGF0dXNJY29uID0gKGV2ZW50KSA9PiB7XHJcbiAgICAgICAgaWYgKGV2ZW50LnR5cGUgPT09ICdTdGFydCcgfHwgZXZlbnQudHlwZSA9PT0gJ1N0YXJ0UmVmJykge1xyXG4gICAgICAgICAgICByZXR1cm4gZ2V0QXNzZXRVcmwoJy9wYXNzLnBuZycpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoZXZlbnQudHlwZSA9PT0gJ0VuZCcgfHwgZXZlbnQudHlwZSA9PT0gJ0VuZFJlZicpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGdldEFzc2V0VXJsKCcvcGFzcy5wbmcnKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGV2ZW50LnR5cGUgPT09ICdFbmROb1JlZicpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGdldEFzc2V0VXJsKCcvZmFpbC5wbmcnKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGV2ZW50LnR5cGUgPT09ICdSZWZsZWN0b3InICYmIGV2ZW50LnNwbGljZUxvc3MgPiAwLjc1KSB7XHJcbiAgICAgICAgICAgIHJldHVybiBnZXRBc3NldFVybCgnL2ZhaWwucG5nJyk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChldmVudC50eXBlID09PSAnU3BsaWNlJyAmJiBldmVudC5zcGxpY2VMb3NzID4gMC4zNSkge1xyXG4gICAgICAgICAgICByZXR1cm4gZ2V0QXNzZXRVcmwoJy9mYWlsLnBuZycpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoZXZlbnQudHlwZSA9PT0gJ0JlbmQnKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBnZXRBc3NldFVybCgnL2ZhaWwucG5nJyk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIGdldEFzc2V0VXJsKCcvcGFzcy5wbmcnKTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG5cclxuICAgIHJldHVybiAoXHJcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LWZ1bGwgaC1mdWxsIGZsZXggZmxleC1jb2wgYmctd2hpdGUgcC00XCI+XHJcbiAgICAgICAgICAgIHsvKiDooajlpLQgKi99XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBib3JkZXItYiBib3JkZXItZ3JheS0zMDAgcHktMiBmb250LWJvbGQgdGV4dC1ibGFja1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LTI0IHRleHQtY2VudGVyXCI+KG0pPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctMjQgdGV4dC1jZW50ZXJcIj7mjZ/ogJc8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy0yNCB0ZXh0LWNlbnRlclwiPuWPjeWwhDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4LTEgdGV4dC1jZW50ZXJcIj7nsbvlnos8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy0xNiB0ZXh0LWNlbnRlclwiPjwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIHsvKiDooajmoLzlhoXlrrkgKi99XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleC0xIG92ZXJmbG93LXktYXV0b1wiPlxyXG4gICAgICAgICAgICAgICAge2V2ZW50RGF0YSAmJiBPYmplY3QuZW50cmllcyhldmVudERhdGEuZXZlbnRzKVxyXG4gICAgICAgICAgICAgICAgICAgIC5zb3J0KChhLCBiKSA9PiBiWzFdLmRpc3RhbmNlIC0gYVsxXS5kaXN0YW5jZSlcclxuICAgICAgICAgICAgICAgICAgICAubWFwKChba2V5LCBldmVudF0pID0+IChcclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBrZXk9e2tleX0gY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIgYm9yZGVyLWIgYm9yZGVyLWdyYXktMjAwIHB5LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy0yNCB0ZXh0LWNlbnRlciB0ZXh0LWJsYWNrXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2V2ZW50LmRpc3RhbmNlLnRvRml4ZWQoMil9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy0yNCB0ZXh0LWNlbnRlciB0ZXh0LWJsYWNrXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2V2ZW50LnNwbGljZUxvc3MgPyBldmVudC5zcGxpY2VMb3NzLnRvRml4ZWQoMikgOiAnTi9BJ31cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LTI0IHRleHQtY2VudGVyIHRleHQtYmxhY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZXZlbnQucmVmbExvc3MgPyBldmVudC5yZWZsTG9zcy50b0ZpeGVkKDIpIDogJ04vQSd9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleC0xIHRleHQtY2VudGVyIHRleHQtYmxhY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Z2V0RXZlbnRUeXBlTmFtZShldmVudC50eXBlKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LTE2IGZsZXgganVzdGlmeS1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctNSBoLTUgcmVsYXRpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEltYWdlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9e2dldEFzc2V0VXJsKGdldEV2ZW50U3RhdHVzSWNvbihldmVudCkpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0PVwic3RhdHVzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cIm9iamVjdC1jb250YWluXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICApKX1cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICB7Lyog5bqV6YOo5o6n5Yi25Yy6ICovfVxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImgtWzEwJV0gZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgc3BhY2UteC00XCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB3YXZlbGVuZ3RocyA9IE9iamVjdC5rZXlzKHdhdmVsZW5ndGhEYXRhKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY3VycmVudEluZGV4ID0gd2F2ZWxlbmd0aHMuaW5kZXhPZihjdXJyZW50V2F2ZWxlbmd0aCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHByZXZXYXZlbGVuZ3RoID0gd2F2ZWxlbmd0aHNbKGN1cnJlbnRJbmRleCAtIDEgKyB3YXZlbGVuZ3Rocy5sZW5ndGgpICUgd2F2ZWxlbmd0aHMubGVuZ3RoXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2V0Q3VycmVudFdhdmVsZW5ndGgocHJldldhdmVsZW5ndGgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRFdmVudERhdGEod2F2ZWxlbmd0aERhdGFbcHJldldhdmVsZW5ndGhdKTtcclxuICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInAtMiByb3VuZGVkLWZ1bGwgYmctZ3JheS0zMDAgaG92ZXI6YmctZ3JheS00MDBcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICYjOTY2NDtcclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC1sZyBmb250LXNlbWlib2xkXCI+e2N1cnJlbnRXYXZlbGVuZ3RofW5tPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgd2F2ZWxlbmd0aHMgPSBPYmplY3Qua2V5cyh3YXZlbGVuZ3RoRGF0YSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRJbmRleCA9IHdhdmVsZW5ndGhzLmluZGV4T2YoY3VycmVudFdhdmVsZW5ndGgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXh0V2F2ZWxlbmd0aCA9IHdhdmVsZW5ndGhzWyhjdXJyZW50SW5kZXggKyAxKSAlIHdhdmVsZW5ndGhzLmxlbmd0aF07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldEN1cnJlbnRXYXZlbGVuZ3RoKG5leHRXYXZlbGVuZ3RoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2V0RXZlbnREYXRhKHdhdmVsZW5ndGhEYXRhW25leHRXYXZlbGVuZ3RoXSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJwLTIgcm91bmRlZC1mdWxsIGJnLWdyYXktMzAwIGhvdmVyOmJnLWdyYXktNDAwXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAmIzk2NTQ7XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICApO1xyXG59Il0sIm5hbWVzIjpbIlJlYWN0IiwidXNlU3RhdGUiLCJ1c2VFZmZlY3QiLCJ1c2VEaXNwbGF5U3RvcmUiLCJ1c2VEZXZpY2VTdG9yZSIsIkltYWdlIiwiZ2V0QXNzZXRVcmwiLCJFdmVudFRhYmxlIiwidGVzdFJlc3VsdCIsImNvbm5lY3Rpb25TdGF0dXMiLCJldmVudERhdGEiLCJzZXRFdmVudERhdGEiLCJjdXJyZW50V2F2ZWxlbmd0aCIsInNldEN1cnJlbnRXYXZlbGVuZ3RoIiwid2F2ZWxlbmd0aERhdGEiLCJzZXRXYXZlbGVuZ3RoRGF0YSIsImlzTXVsdGlNb2RlIiwidGVzdGNvbmZpZyIsInBhcmFtcyIsImNhYmxlVHlwZSIsImluY2x1ZGVzIiwibG9hZFRyYWNlRGF0YSIsIndhdmVsZW5ndGgxIiwid2F2ZWxlbmd0aDIiLCJkYXRhMSIsImRhdGEyIiwiUHJvbWlzZSIsImFsbCIsIm9mcFJlc3VsdCIsInByb2Nlc3NXYXZlbGVuZ3RoRGF0YSIsImRhdGEiLCJtZXJnZWRFdmVudHMiLCJPYmplY3QiLCJrZXlzIiwiZXZlbnQiLCJmb3JFYWNoIiwiZXZlbnRLZXkiLCJsYXN0RXZlbnRLZXkiLCJsZW5ndGgiLCJvZnBSZWZTdGF0dXMiLCJPRlBvdXRSZWZTdGF0dXMiLCJ0eXBlIiwiZGlzdGFuY2UiLCJyZWZsTG9zcyIsInNwbGljZUxvc3MiLCJrZXkiLCJsYXN0RXZlbnQiLCJPRlBDb25uZWN0ZWRUb1JlZlN0YXR1cyIsImF0dGVudWF0aW9uIiwiZXZlbnRLZXlzIiwic29ydCIsImEiLCJiIiwibnVtQSIsInBhcnNlSW50IiwicmVwbGFjZSIsIm51bUIiLCJzdW1tYXJ5bGFzdEV2ZW50S2V5IiwidG90YWxMb3NzIiwiYWxsU3BsaWNlTG9zc051bGwiLCJ2YWx1ZXMiLCJldmVyeSIsInVuZGVmaW5lZCIsInJlZHVjZSIsInN1bSIsImxvc3MiLCJmaW5hbERpc3RhbmNlIiwic2Vjb25kTGFzdEV2ZW50S2V5Iiwic2Vjb25kTGFzdEV2ZW50IiwidXBkYXRlZFN1bW1hcnkiLCJTdW1tYXJ5IiwidG90YWxEaXN0YW5jZSIsImV2ZW50cyIsInN1bW1hcnkiLCJwcm9jZXNzZWREYXRhMSIsInByb2Nlc3NlZERhdGEyIiwiZXJyb3IiLCJjb25zb2xlIiwiZ2V0RXZlbnRUeXBlTmFtZSIsImdldEV2ZW50U3RhdHVzSWNvbiIsImRpdiIsImNsYXNzTmFtZSIsImVudHJpZXMiLCJtYXAiLCJ0b0ZpeGVkIiwic3JjIiwiYWx0IiwiZmlsbCIsImJ1dHRvbiIsIm9uQ2xpY2siLCJ3YXZlbGVuZ3RocyIsImN1cnJlbnRJbmRleCIsImluZGV4T2YiLCJwcmV2V2F2ZWxlbmd0aCIsInNwYW4iLCJuZXh0V2F2ZWxlbmd0aCJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(pages-dir-node)/./src/components/lib/EventTable.js\n"); /***/ }), /***/ "(pages-dir-node)/./src/components/lib/FrequencyChart.js": /*!**********************************************!*\ !*** ./src/components/lib/FrequencyChart.js ***! \**********************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; eval("__webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {\n__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_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"react/jsx-dev-runtime\");\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 */ \"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var echarts_for_react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! echarts-for-react */ \"echarts-for-react\");\n/* harmony import */ var echarts_for_react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(echarts_for_react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var echarts_core__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! echarts/core */ \"echarts/core\");\n/* harmony import */ var echarts_components__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! echarts/components */ \"echarts/components\");\n/* harmony import */ var echarts_charts__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! echarts/charts */ \"echarts/charts\");\n/* harmony import */ var echarts_features__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! echarts/features */ \"echarts/features\");\n/* harmony import */ var echarts_renderers__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! echarts/renderers */ \"echarts/renderers\");\nvar __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([echarts_core__WEBPACK_IMPORTED_MODULE_3__, echarts_components__WEBPACK_IMPORTED_MODULE_4__, echarts_charts__WEBPACK_IMPORTED_MODULE_5__, echarts_features__WEBPACK_IMPORTED_MODULE_6__, echarts_renderers__WEBPACK_IMPORTED_MODULE_7__]);\n([echarts_core__WEBPACK_IMPORTED_MODULE_3__, echarts_components__WEBPACK_IMPORTED_MODULE_4__, echarts_charts__WEBPACK_IMPORTED_MODULE_5__, echarts_features__WEBPACK_IMPORTED_MODULE_6__, echarts_renderers__WEBPACK_IMPORTED_MODULE_7__] = __webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__);\n\n\n\n\n\n\n\n\n// 注册必要的组件\necharts_core__WEBPACK_IMPORTED_MODULE_3__.use([\n echarts_components__WEBPACK_IMPORTED_MODULE_4__.GridComponent,\n echarts_components__WEBPACK_IMPORTED_MODULE_4__.TooltipComponent,\n echarts_components__WEBPACK_IMPORTED_MODULE_4__.LegendComponent,\n echarts_charts__WEBPACK_IMPORTED_MODULE_5__.LineChart,\n echarts_renderers__WEBPACK_IMPORTED_MODULE_7__.CanvasRenderer,\n echarts_features__WEBPACK_IMPORTED_MODULE_6__.UniversalTransition,\n echarts_components__WEBPACK_IMPORTED_MODULE_4__.DataZoomComponent,\n echarts_components__WEBPACK_IMPORTED_MODULE_4__.MarkLineComponent,\n echarts_components__WEBPACK_IMPORTED_MODULE_4__.ToolboxComponent\n]);\nconst FrequencyChart = ({ data, limitdata, limitValue, HDTD, curtitle, wireOrder// 添加 wireOrder 参数\n })=>{\n const chartRef = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)(null);\n const [mouseInfo, setMouseInfo] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)({\n frequency: 0,\n values: {\n margin: 'N/A',\n worstValue: 'N/A'\n }\n });\n // 根据curtitle获取对应的数据组和配置\n const getDataConfig = ()=>{\n // 四对线的数据组\n const fourPairsGroup = [\n 'Insertion Loss (dB)',\n 'RL (dB)',\n 'PS NEXT (dB)',\n 'PS ACR-N (dB)',\n 'PS ACR-F (dB)',\n 'TCL (dB)',\n 'CMRL (dB)',\n 'ELTCTL (dB)'\n ];\n // 六对线的数据组\n const sixPairsGroup = [\n 'NEXT (dB)',\n 'ACR-N (dB)'\n ];\n // 十二对线的数据组\n const twelvePairsGroup = [\n 'ACR-F (dB)',\n 'CDNEXT (dB)'\n ];\n // 数据组映射\n const dataGroupMap = {\n '插入损耗': 'Insertion Loss (dB)',\n '回波损耗': 'RL (dB)',\n 'NEXT': 'NEXT (dB)',\n 'PS NEXT': 'PS NEXT (dB)',\n 'ACR-N': 'ACR-N (dB)',\n 'PS ACR-N': 'PS ACR-N (dB)',\n 'ACR-F': 'ACR-F (dB)',\n 'PS ACR-F': 'PS ACR-F (dB)',\n 'CDNEXT': 'CDNEXT (dB)',\n 'CMRL': 'CMRL (dB)',\n 'TCL': 'TCL (dB)',\n 'ELTCTL': 'ELTCTL (dB)'\n };\n const dataGroup = dataGroupMap[curtitle];\n const isSixPairs = sixPairsGroup.includes(dataGroup);\n const isTwelvePairs = twelvePairsGroup.includes(dataGroup);\n // 根据 wireOrder 选择线对\n let pairs;\n if (wireOrder === 'Ethernet Two-Pair' || wireOrder === 'M12-D Two-Pair') {\n // Ethernet Two-Pair 模式下只显示 12 和 36 相关的线对\n pairs = isTwelvePairs ? [\n 'PAIR1236',\n 'PAIR3612'\n ] : isSixPairs ? [\n 'PAIR1236'\n ] : [\n 'PAIR12',\n 'PAIR36'\n ];\n } else {\n // T568B 模式下显示所有线对\n pairs = isTwelvePairs ? [\n 'PAIR1236',\n 'PAIR1245',\n 'PAIR1278',\n 'PAIR3612',\n 'PAIR3645',\n 'PAIR3678',\n 'PAIR4512',\n 'PAIR4535',\n 'PAIR4578',\n 'PAIR7812',\n 'PAIR7936',\n 'PAIR7845'\n ] : isSixPairs ? [\n 'PAIR1236',\n 'PAIR1245',\n 'PAIR1278',\n 'PAIR3645',\n 'PAIR3678',\n 'PAIR4578'\n ] : [\n 'PAIR12',\n 'PAIR36',\n 'PAIR45',\n 'PAIR78'\n ];\n }\n // 根据实际线对数量动态生成颜色\n const colors = pairs.map((_, index)=>{\n const baseColors = [\n '#FFA500',\n '#0000FF',\n '#00FF00',\n '#8B4513',\n '#800080',\n '#FF69B4',\n '#FF4500',\n '#4B0082',\n '#32CD32',\n '#FF1493',\n '#00CED1',\n '#FFD700'\n ];\n return baseColors[index % baseColors.length];\n });\n return {\n dataGroup,\n pairs,\n colors\n };\n };\n // 计算数据的Y轴范围\n const calculateYRange = ()=>{\n const { dataGroup, pairs } = getDataConfig();\n if (!data?.[dataGroup]) return {\n min: 0,\n max: 60\n };\n // 收集所有数据值,包括实际数据和限制数据\n let allValues = [];\n // 添加实际数据值\n pairs.forEach((pair)=>{\n const dataValues = data[dataGroup]?.[pair] || [];\n allValues.push(...dataValues);\n });\n // 添加极限值数据\n if (limitdata?.[dataGroup]?.['PAIRLimit (dB)']) {\n allValues.push(...limitdata[dataGroup]['PAIRLimit (dB)']);\n }\n if (allValues.length === 0) return {\n min: 0,\n max: 60\n };\n const maxValue = Math.max(...allValues.filter((v)=>v !== undefined && v !== null));\n const minValue = Math.min(...allValues.filter((v)=>v !== undefined && v !== null));\n // 计算合适的范围,确保包含所有数据点\n const range = Math.max(Math.abs(maxValue), Math.abs(minValue));\n // 向上取整到最接近的10的倍数,并额外增加10%的空间\n const roundedRange = Math.ceil(range * 1.1 / 10) * 10;\n return {\n min: -25,\n max: roundedRange\n };\n };\n // 根据limitValue获取频率范围\n const getFrequencyRange = (limitValue)=>{\n if (!limitValue) return {\n min: 1,\n max: 500\n };\n const limitValueLower = limitValue.toLowerCase();\n if (limitValueLower.includes('cat 6a') || limitValueLower.includes('class ea')) {\n return {\n min: 1,\n max: 500\n };\n } else if (limitValueLower.includes('cat 6') || limitValueLower.includes('class e')) {\n return {\n min: 1,\n max: 350\n };\n } else if (limitValueLower.includes('cat 5e') || limitValueLower.includes('class d')) {\n return {\n min: 1,\n max: 150\n };\n }\n return {\n min: 1,\n max: 500\n }; // 默认值\n };\n // 初始化范围\n const [range, setRange] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)({\n \"FrequencyChart.useState\": ()=>{\n // 获取频率范围\n const frequencies = data?.frequencies || [];\n const freqRange = getFrequencyRange(limitValue);\n return {\n xMin: freqRange.min,\n xMax: freqRange.max,\n ...calculateYRange()\n };\n }\n }[\"FrequencyChart.useState\"]);\n // 准备Echarts的配置项\n const getOption = ()=>{\n if (!data?.frequencies) {\n return {\n title: {\n text: '无数据',\n left: 'center',\n top: 'center'\n }\n };\n }\n const { dataGroup, pairs, colors } = getDataConfig();\n if (!dataGroup) return {};\n const frequencies = data.frequencies;\n const yRange = calculateYRange();\n const freqRange = getFrequencyRange(limitValue);\n // 准备系列数据\n const series = [];\n const legendData = [];\n // 添加实际数据系列\n pairs.forEach((pair, index)=>{\n if (data[dataGroup]?.[pair]) {\n // 创建数据点数组\n const seriesData = frequencies.map((freq, i)=>{\n const value = data[dataGroup][pair][i];\n return [\n freq,\n value\n ];\n }).filter((item)=>item[1] !== undefined && item[1] !== null);\n // 添加数据系列\n series.push({\n name: pair,\n type: 'line',\n data: seriesData,\n symbol: 'none',\n lineStyle: {\n width: 2,\n color: colors[index]\n },\n emphasis: {\n lineStyle: {\n width: 3\n }\n }\n });\n legendData.push(pair);\n }\n });\n // 添加极限值系列\n if (limitdata?.[dataGroup]?.['PAIRLimit (dB)']) {\n const limitSeriesData = frequencies.map((freq, i)=>{\n const value = limitdata[dataGroup]['PAIRLimit (dB)'][i];\n return [\n freq,\n value\n ];\n }).filter((item)=>item[1] !== undefined && item[1] !== null);\n series.push({\n name: '极限值',\n type: 'line',\n data: limitSeriesData,\n symbol: 'none',\n lineStyle: {\n width: 2,\n color: '#FF0000',\n type: 'solid'\n },\n emphasis: {\n lineStyle: {\n width: 3\n }\n }\n });\n legendData.push('极限值');\n }\n return {\n // 删除title配置\n tooltip: {\n trigger: 'axis',\n formatter: function(params) {\n const freq = params[0].value[0].toFixed(1);\n let result = `频率: ${freq} MHz
`;\n // 找到最差值和余量\n let worstValue = -Infinity;\n let minMargin = Infinity;\n let limitValue = null;\n // 查找极限值\n const limitParam = params.find((p)=>p.seriesName === '极限值');\n if (limitParam) {\n limitValue = limitParam.value[1];\n }\n // 处理每个系列的数据\n params.forEach((param)=>{\n if (param.seriesName !== '极限值') {\n const value = param.value[1];\n result += `${param.seriesName}: ${value.toFixed(2)} dB
`;\n // 更新最差值\n if (value !== undefined) {\n worstValue = Math.max(worstValue, Math.abs(value));\n }\n // 计算余量\n if (value !== undefined && limitValue !== undefined && limitValue !== null) {\n const margin = curtitle === '插入损耗' ? Math.abs(limitValue) - Math.abs(value) : Math.abs(value) - limitValue; // 其他参数:参数值 - 极限值\n if (!isNaN(margin)) {\n minMargin = Math.min(minMargin, margin);\n }\n }\n }\n });\n // 添加最差值和余量信息\n result += `
最差值: ${worstValue !== -Infinity ? worstValue.toFixed(2) : 'N/A'} dB
`;\n result += `余量: ${minMargin !== Infinity ? minMargin.toFixed(2) : 'N/A'} dB`;\n // 更新状态以在图表外部显示\n setMouseInfo({\n frequency: parseFloat(freq),\n values: {\n margin: minMargin !== Infinity ? minMargin.toFixed(1) : 'N/A',\n worstValue: worstValue !== -Infinity ? worstValue.toFixed(1) : 'N/A'\n }\n });\n return result;\n },\n axisPointer: {\n type: 'cross',\n label: {\n backgroundColor: '#6a7985'\n }\n }\n },\n legend: {\n data: legendData,\n type: 'scroll',\n bottom: 0,\n selected: legendData.reduce((acc, item)=>{\n acc[item] = true;\n return acc;\n }, {})\n },\n // 删除toolbox配置\n grid: {\n left: '3%',\n right: '4%',\n bottom: '15%',\n top: '3%',\n containLabel: true\n },\n xAxis: {\n type: 'value',\n name: '频率 (MHz)',\n nameLocation: 'middle',\n nameGap: 30,\n min: range.xMin,\n max: range.xMax,\n axisLabel: {\n formatter: '{value}'\n }\n },\n yAxis: {\n type: 'value',\n name: 'dB',\n nameLocation: 'middle',\n nameGap: 40,\n min: range.min,\n max: range.max,\n axisLabel: {\n formatter: '{value}'\n }\n },\n dataZoom: [\n {\n type: 'inside',\n start: 0,\n end: 100,\n xAxisIndex: 0,\n zoomOnMouseWheel: false,\n moveOnMouseMove: true,\n preventDefaultMouseMove: false // 防止默认鼠标移动行为\n },\n {\n type: 'inside',\n start: 0,\n end: 100,\n yAxisIndex: 0,\n orient: 'vertical',\n zoomOnMouseWheel: false,\n moveOnMouseMove: true,\n preventDefaultMouseMove: false // 防止默认鼠标移动行为\n },\n {\n show: true,\n type: 'slider',\n bottom: 60,\n start: 0,\n end: 100,\n xAxisIndex: 0\n }\n ],\n animation: false,\n series: series\n };\n };\n // 渲染图表区域\n const renderChart = ()=>{\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"relative w-full\",\n style: {\n height: '400px'\n },\n children: [\n \" \",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"relative w-full h-full\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((echarts_for_react__WEBPACK_IMPORTED_MODULE_2___default()), {\n ref: chartRef,\n option: getOption(),\n style: {\n height: '100%',\n width: '100%'\n }\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/FrequencyChart.js\",\n lineNumber: 395,\n columnNumber: 11\n }, undefined)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/FrequencyChart.js\",\n lineNumber: 394,\n columnNumber: 9\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/FrequencyChart.js\",\n lineNumber: 393,\n columnNumber: 7\n }, undefined);\n };\n // 渲染参数信息区域\n const renderParameters = ()=>{\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex justify-between p-2 w-full\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-y-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"font-bold\",\n children: [\n curtitle,\n \" : \",\n mouseInfo.values.worstValue,\n \" dB \"\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/FrequencyChart.js\",\n lineNumber: 410,\n columnNumber: 11\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"font-bold\",\n children: [\n \"余量 : \",\n mouseInfo.values.margin,\n \" dB\"\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/FrequencyChart.js\",\n lineNumber: 411,\n columnNumber: 11\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/FrequencyChart.js\",\n lineNumber: 409,\n columnNumber: 9\n }, undefined)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/FrequencyChart.js\",\n lineNumber: 408,\n columnNumber: 7\n }, undefined);\n };\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full flex flex-col\",\n children: [\n \" \",\n renderChart(),\n renderParameters()\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/FrequencyChart.js\",\n lineNumber: 418,\n columnNumber: 5\n }, undefined);\n};\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (FrequencyChart);\n\n__webpack_async_result__();\n} catch(e) { __webpack_async_result__(e); } });//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHBhZ2VzLWRpci1ub2RlKS8uL3NyYy9jb21wb25lbnRzL2xpYi9GcmVxdWVuY3lDaGFydC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQTJEO0FBQ2Q7QUFDTDtBQVFaO0FBQ2U7QUFDWTtBQUNKO0FBRW5ELFVBQVU7QUFDVkssNkNBQVcsQ0FBQztJQUNWQyw2REFBYUE7SUFDYkMsZ0VBQWdCQTtJQUNoQkMsK0RBQWVBO0lBQ2ZJLHFEQUFTQTtJQUNURSw2REFBY0E7SUFDZEQsaUVBQW1CQTtJQUNuQkosaUVBQWlCQTtJQUNqQkMsaUVBQWlCQTtJQUNqQkMsZ0VBQWdCQTtDQUNqQjtBQUVELE1BQU1LLGlCQUFpQixDQUFDLEVBQ3RCQyxJQUFJLEVBQ0pDLFNBQVMsRUFDVEMsVUFBVSxFQUNWQyxJQUFJLEVBQ0pDLFFBQVEsRUFDUkMsU0FBUyxrQkFBbUI7RUFDN0I7SUFDQyxNQUFNQyxXQUFXcEIsNkNBQU1BLENBQUM7SUFDeEIsTUFBTSxDQUFDcUIsV0FBV0MsYUFBYSxHQUFHdkIsK0NBQVFBLENBQUM7UUFDekN3QixXQUFXO1FBQ1hDLFFBQVE7WUFDTkMsUUFBUTtZQUNSQyxZQUFZO1FBQ2Q7SUFDRjtJQUVBLHdCQUF3QjtJQUN4QixNQUFNQyxnQkFBZ0I7UUFDcEIsVUFBVTtRQUNWLE1BQU1DLGlCQUFpQjtZQUNyQjtZQUF1QjtZQUFXO1lBQWdCO1lBQ2xEO1lBQWlCO1lBQVk7WUFBYTtTQUMzQztRQUVELFVBQVU7UUFDVixNQUFNQyxnQkFBZ0I7WUFBQztZQUFhO1NBQWE7UUFFakQsV0FBVztRQUNYLE1BQU1DLG1CQUFtQjtZQUFDO1lBQWM7U0FBYztRQUV0RCxRQUFRO1FBQ1IsTUFBTUMsZUFBZTtZQUNuQixRQUFRO1lBQ1IsUUFBUTtZQUNSLFFBQVE7WUFDUixXQUFXO1lBQ1gsU0FBUztZQUNULFlBQVk7WUFDWixTQUFTO1lBQ1QsWUFBWTtZQUNaLFVBQVU7WUFDVixRQUFRO1lBQ1IsT0FBTztZQUNQLFVBQVU7UUFDWjtRQUVBLE1B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QUFPOzs7Ozs7Ozs7Ozs7Ozs7OztJQUtqRDtJQUVBLFdBQVc7SUFDWCxNQUFNcUQsbUJBQW1CO1FBQ3ZCLHFCQUNFLDhEQUFDTjtZQUFJQyxXQUFVO3NCQUNiLDRFQUFDRDtnQkFBSUMsV0FBVTs7a0NBQ2IsOERBQUNEO3dCQUFJQyxXQUFVOzs0QkFBYXBIOzRCQUFTOzRCQUFJRyxVQUFVRyxNQUFNLENBQUNFLFVBQVU7NEJBQUM7Ozs7Ozs7a0NBQ3JFLDhEQUFDMkc7d0JBQUlDLFdBQVU7OzRCQUFZOzRCQUFNakgsVUFBVUcsTUFBTSxDQUFDQyxNQUFNOzRCQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFJakU7SUFFQSxxQkFDRSw4REFBQzRHO1FBQUlDLFdBQVU7O1lBQXVCO1lBQ25DRjtZQUNBTzs7Ozs7OztBQUdQO0FBRUEsaUVBQWU5SCxjQUFjQSxFQUFDIiwic291cmNlcyI6WyIvb3B0L2Rldi9lc3QtZHN4L3NyYy9jb21wb25lbnRzL2xpYi9GcmVxdWVuY3lDaGFydC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0LCB1c2VTdGF0ZSwgdXNlUmVmIH0gZnJvbSAncmVhY3QnO1xyXG5pbXBvcnQgUmVhY3RFQ2hhcnRzIGZyb20gJ2VjaGFydHMtZm9yLXJlYWN0JztcclxuaW1wb3J0ICogYXMgZWNoYXJ0cyBmcm9tICdlY2hhcnRzL2NvcmUnO1xyXG5pbXBvcnQge1xyXG4gIEdyaWRDb21wb25lbnQsXHJcbiAgVG9vbHRpcENvbXBvbmVudCxcclxuICBMZWdlbmRDb21wb25lbnQsXHJcbiAgRGF0YVpvb21Db21wb25lbnQsXHJcbiAgTWFya0xpbmVDb21wb25lbnQsXHJcbiAgVG9vbGJveENvbXBvbmVudFxyXG59IGZyb20gJ2VjaGFydHMvY29tcG9uZW50cyc7XHJcbmltcG9ydCB7IExpbmVDaGFydCB9IGZyb20gJ2VjaGFydHMvY2hhcnRzJztcclxuaW1wb3J0IHsgVW5pdmVyc2FsVHJhbnNpdGlvbiB9IGZyb20gJ2VjaGFydHMvZmVhdHVyZXMnO1xyXG5pbXBvcnQgeyBDYW52YXNSZW5kZXJlciB9IGZyb20gJ2VjaGFydHMvcmVuZGVyZXJzJztcclxuXHJcbi8vIOazqOWGjOW/heimgeeahOe7hOS7tlxyXG5lY2hhcnRzLnVzZShbXHJcbiAgR3JpZENvbXBvbmVudCxcclxuICBUb29sdGlwQ29tcG9uZW50LFxyXG4gIExlZ2VuZENvbXBvbmVudCxcclxuICBMaW5lQ2hhcnQsXHJcbiAgQ2FudmFzUmVuZGVyZXIsXHJcbiAgVW5pdmVyc2FsVHJhbnNpdGlvbixcclxuICBEYXRhWm9vbUNvbXBvbmVudCxcclxuICBNYXJrTGluZUNvbXBvbmVudCxcclxuICBUb29sYm94Q29tcG9uZW50XHJcbl0pO1xyXG5cclxuY29uc3QgRnJlcXVlbmN5Q2hhcnQgPSAoe1xyXG4gIGRhdGEsXHJcbiAgbGltaXRkYXRhLFxyXG4gIGxpbWl0VmFsdWUsXHJcbiAgSERURCxcclxuICBjdXJ0aXRsZSxcclxuICB3aXJlT3JkZXIgLy8g5re75YqgIHdpcmVPcmRlciDlj4LmlbBcclxufSkgPT4ge1xyXG4gIGNvbnN0IGNoYXJ0UmVmID0gdXNlUmVmKG51bGwpO1xyXG4gIGNvbnN0IFttb3VzZUluZm8sIHNldE1vdXNlSW5mb10gPSB1c2VTdGF0ZSh7XHJcbiAgICBmcmVxdWVuY3k6IDAsXHJcbiAgICB2YWx1ZXM6IHtcclxuICAgICAgbWFyZ2luOiAnTi9BJyxcclxuICAgICAgd29yc3RWYWx1ZTogJ04vQSdcclxuICAgIH1cclxuICB9KTtcclxuXHJcbiAgLy8g5qC55o2uY3VydGl0bGXojrflj5blr7nlupTnmoTmlbDmja7nu4TlkozphY3nva5cclxuICBjb25zdCBnZXREYXRhQ29uZmlnID0gKCkgPT4ge1xyXG4gICAgLy8g5Zub5a+557q/55qE5pWw5o2u57uEXHJcbiAgICBjb25zdCBmb3VyUGFpcnNHcm91cCA9IFtcclxuICAgICAgJ0luc2VydGlvbiBMb3NzIChkQiknLCAnUkwgKGRCKScsICdQUyBORVhUIChkQiknLCAnUFMgQUNSLU4gKGRCKScsXHJcbiAgICAgICdQUyBBQ1ItRiAoZEIpJywgJ1RDTCAoZEIpJywgJ0NNUkwgKGRCKScsICdFTFRDVEwgKGRCKSdcclxuICAgIF07XHJcblxyXG4gICAgLy8g5YWt5a+557q/55qE5pWw5o2u57uEXHJcbiAgICBjb25zdCBzaXhQYWlyc0dyb3VwID0gWydORVhUIChkQiknLCAnQUNSLU4gKGRCKSddO1xyXG5cclxuICAgIC8vIOWNgeS6jOWvuee6v+eahOaVsOaNrue7hFxyXG4gICAgY29uc3QgdHdlbHZlUGFpcnNHcm91cCA9IFsnQUNSLUYgKGRCKScsICdDRE5FWFQgKGRCKSddO1xyXG5cclxuICAgIC8vIOaVsOaNrue7hOaYoOWwhFxyXG4gICAgY29uc3QgZGF0YUdyb3VwTWFwID0ge1xyXG4gICAgICAn5o+S5YWl5o2f6ICXJzogJ0luc2VydGlvbiBMb3NzIChkQiknLFxyXG4gICAgICAn5Zue5rOi5o2f6ICXJzogJ1JMIChkQiknLFxyXG4gICAgICAnTkVYVCc6ICdORVhUIChkQiknLFxyXG4gICAgICAnUFMgTkVYVCc6ICdQUyBORVhUIChkQiknLFxyXG4gICAgICAnQUNSLU4nOiAnQUNSLU4gKGRCKScsXHJcbiAgICAgICdQUyBBQ1ItTic6ICdQUyBBQ1ItTiAoZEIpJyxcclxuICAgICAgJ0FDUi1GJzogJ0FDUi1GIChkQiknLFxyXG4gICAgICAnUFMgQUNSLUYnOiAnUFMgQUNSLUYgKGRCKScsXHJcbiAgICAgICdDRE5FWFQnOiAnQ0RORVhUIChkQiknLFxyXG4gICAgICAnQ01STCc6ICdDTVJMIChkQiknLFxyXG4gICAgICAnVENMJzogJ1RDTCAoZEIpJyxcclxuICAgICAgJ0VMVENUTCc6ICdFTFRDVEwgKGRCKSdcclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgZGF0YUdyb3VwID0gZGF0YUdyb3VwTWFwW2N1cnRpdGxlXTtcclxuICAgIGNvbnN0IGlzU2l4UGFpcnMgPSBzaXhQYWlyc0dyb3VwLmluY2x1ZGVzKGRhdGFHcm91cCk7XHJcbiAgICBjb25zdCBpc1R3ZWx2ZVBhaXJzID0gdHdlbHZlUGFpcnNHcm91cC5pbmNsdWRlcyhkYXRhR3JvdXApO1xyXG5cclxuICAgIC8vIOagueaNriB3aXJlT3JkZXIg6YCJ5oup57q/5a+5XHJcbiAgICBsZXQgcGFpcnM7XHJcbiAgICBpZiAod2lyZU9yZGVyID09PSAnRXRoZXJuZXQgVHdvLVBhaXInIHx8IHdpcmVPcmRlciA9PT0gJ00xMi1EIFR3by1QYWlyJykge1xyXG5cclxuICAgICAgLy8gRXRoZXJuZXQgVHdvLVBhaXIg5qih5byP5LiL5Y+q5pi+56S6IDEyIOWSjCAzNiDnm7jlhbPnmoTnur/lr7lcclxuICAgICAgcGFpcnMgPSBpc1R3ZWx2ZVBhaXJzID9cclxuICAgICAgICBbJ1BBSVIxMjM2JywgJ1BBSVIzNjEyJ10gOlxyXG4gICAgICAgIGlzU2l4UGFpcnMgP1xyXG4gICAgICAgICAgWydQQUlSMTIzNiddIDpcclxuICAgICAgICAgIFsnUEFJUjEyJywgJ1BBSVIzNiddO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgLy8gVDU2OEIg5qih5byP5LiL5pi+56S65omA5pyJ57q/5a+5XHJcbiAgICAgIHBhaXJzID0gaXNUd2VsdmVQYWlycyA/XHJcbiAgICAgICAgWydQQUlSMTIzNicsICdQQUlSMTI0NScsICdQQUlSMTI3OCcsICdQQUlSMzYxMicsICdQQUlSMzY0NScsICdQQUlSMzY3OCcsXHJcbiAgICAgICAgICAnUEFJUjQ1MTInLCAnUEFJUjQ1MzUnLCAnUEFJUjQ1NzgnLCAnUEFJUjc4MTInLCAnUEFJUjc5MzYnLCAnUEFJUjc4NDUnXSA6XHJcbiAgICAgICAgaXNTaXhQYWlycyA/XHJcbiAgICAgICAgICBbJ1BBSVIxMjM2JywgJ1BBSVIxMjQ1JywgJ1BBSVIxMjc4JywgJ1BBSVIzNjQ1JywgJ1BBSVIzNjc4JywgJ1BBSVI0NTc4J10gOlxyXG4gICAgICAgICAgWydQQUlSMTInLCAnUEFJUjM2JywgJ1BBSVI0NScsICdQQUlSNzgnXTtcclxuICAgIH1cclxuXHJcbiAgICAvLyDmoLnmja7lrp7pmYXnur/lr7nmlbDph4/liqjmgIHnlJ/miJDpopzoibJcclxuICAgIGNvbnN0IGNvbG9ycyA9IHBhaXJzLm1hcCgoXywgaW5kZXgpID0+IHtcclxuICAgICAgY29uc3QgYmFzZUNvbG9ycyA9IFsnI0ZGQTUwMCcsICcjMDAwMEZGJywgJyMwMEZGMDAnLCAnIzhCNDUxMycsICcjODAwMDgwJywgJyNGRjY5QjQnLFxyXG4gICAgICAgICcjRkY0NTAwJywgJyM0QjAwODInLCAnIzMyQ0QzMicsICcjRkYxNDkzJywgJyMwMENFRDEnLCAnI0ZGRDcwMCddO1xyXG4gICAgICByZXR1cm4gYmFzZUNvbG9yc1tpbmRleCAlIGJhc2VDb2xvcnMubGVuZ3RoXTtcclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiB7IGRhdGFHcm91cCwgcGFpcnMsIGNvbG9ycyB9O1xyXG4gIH07XHJcblxyXG4gIC8vIOiuoeeul+aVsOaNrueahFnovbTojIPlm7RcclxuICBjb25zdCBjYWxjdWxhdGVZUmFuZ2UgPSAoKSA9PiB7XHJcbiAgICBjb25zdCB7IGRhdGFHcm91cCwgcGFpcnMgfSA9IGdldERhdGFDb25maWcoKTtcclxuICAgIGlmICghZGF0YT8uW2RhdGFHcm91cF0pIHJldHVybiB7IG1pbjogMCwgbWF4OiA2MCB9O1xyXG5cclxuICAgIC8vIOaUtumbhuaJgOacieaVsOaNruWAvO+8jOWMheaLrOWunumZheaVsOaNruWSjOmZkOWItuaVsOaNrlxyXG4gICAgbGV0IGFsbFZhbHVlcyA9IFtdO1xyXG5cclxuICAgIC8vIOa3u+WKoOWunumZheaVsOaNruWAvFxyXG4gICAgcGFpcnMuZm9yRWFjaChwYWlyID0+IHtcclxuICAgICAgY29uc3QgZGF0YVZhbHVlcyA9IGRhdGFbZGF0YUdyb3VwXT8uW3BhaXJdIHx8IFtdO1xyXG4gICAgICBhbGxWYWx1ZXMucHVzaCguLi5kYXRhVmFsdWVzKTtcclxuICAgIH0pO1xyXG5cclxuICAgIC8vIOa3u+WKoOaegemZkOWAvOaVsOaNrlxyXG4gICAgaWYgKGxpbWl0ZGF0YT8uW2RhdGFHcm91cF0/LlsnUEFJUkxpbWl0IChkQiknXSkge1xyXG4gICAgICBhbGxWYWx1ZXMucHVzaCguLi5saW1pdGRhdGFbZGF0YUdyb3VwXVsnUEFJUkxpbWl0IChkQiknXSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGFsbFZhbHVlcy5sZW5ndGggPT09IDApIHJldHVybiB7IG1pbjogMCwgbWF4OiA2MCB9O1xyXG5cclxuICAgIGNvbnN0IG1heFZhbHVlID0gTWF0aC5tYXgoLi4uYWxsVmFsdWVzLmZpbHRlcih2ID0+IHYgIT09IHVuZGVmaW5lZCAmJiB2ICE9PSBudWxsKSk7XHJcbiAgICBjb25zdCBtaW5WYWx1ZSA9IE1hdGgubWluKC4uLmFsbFZhbHVlcy5maWx0ZXIodiA9PiB2ICE9PSB1bmRlZmluZWQgJiYgdiAhPT0gbnVsbCkpO1xyXG5cclxuICAgIC8vIOiuoeeul+WQiOmAgueahOiMg+WbtO+8jOehruS/neWMheWQq+aJgOacieaVsOaNrueCuVxyXG4gICAgY29uc3QgcmFuZ2UgPSBNYXRoLm1heChNYXRoLmFicyhtYXhWYWx1ZSksIE1hdGguYWJzKG1pblZhbHVlKSk7XHJcbiAgICAvLyDlkJHkuIrlj5bmlbTliLDmnIDmjqXov5HnmoQxMOeahOWAjeaVsO+8jOW5tumineWkluWinuWKoDEwJeeahOepuumXtFxyXG4gICAgY29uc3Qgcm91bmRlZFJhbmdlID0gTWF0aC5jZWlsKHJhbmdlICogMS4xIC8gMTApICogMTA7XHJcblxyXG4gICAgcmV0dXJuIHsgbWluOiAtMjUsIG1heDogcm91bmRlZFJhbmdlIH07XHJcbiAgfTtcclxuXHJcbiAgLy8g5qC55o2ubGltaXRWYWx1ZeiOt+WPlumikeeOh+iMg+WbtFxyXG4gIGNvbnN0IGdldEZyZXF1ZW5jeVJhbmdlID0gKGxpbWl0VmFsdWUpID0+IHtcclxuICAgIGlmICghbGltaXRWYWx1ZSkgcmV0dXJuIHsgbWluOiAxLCBtYXg6IDUwMCB9O1xyXG5cclxuICAgIGNvbnN0IGxpbWl0VmFsdWVMb3dlciA9IGxpbWl0VmFsdWUudG9Mb3dlckNhc2UoKTtcclxuICAgIGlmIChsaW1pdFZhbHVlTG93ZXIuaW5jbHVkZXMoJ2NhdCA2YScpIHx8IGxpbWl0VmFsdWVMb3dlci5pbmNsdWRlcygnY2xhc3MgZWEnKSkge1xyXG4gICAgICByZXR1cm4geyBtaW46IDEsIG1heDogNTAwIH07XHJcbiAgICB9IGVsc2UgaWYgKGxpbWl0VmFsdWVMb3dlci5pbmNsdWRlcygnY2F0IDYnKSB8fCBsaW1pdFZhbHVlTG93ZXIuaW5jbHVkZXMoJ2NsYXNzIGUnKSkge1xyXG4gICAgICByZXR1cm4geyBtaW46IDEsIG1heDogMzUwIH07XHJcbiAgICB9IGVsc2UgaWYgKGxpbWl0VmFsdWVMb3dlci5pbmNsdWRlcygnY2F0IDVlJykgfHwgbGltaXRWYWx1ZUxvd2VyLmluY2x1ZGVzKCdjbGFzcyBkJykpIHtcclxuICAgICAgcmV0dXJuIHsgbWluOiAxLCBtYXg6IDE1MCB9O1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHsgbWluOiAxLCBtYXg6IDUwMCB9OyAvLyDpu5jorqTlgLxcclxuICB9O1xyXG5cclxuICAvLyDliJ3lp4vljJbojIPlm7RcclxuICBjb25zdCBbcmFuZ2UsIHNldFJhbmdlXSA9IHVzZVN0YXRlKCgpID0+IHtcclxuICAgIC8vIOiOt+WPlumikeeOh+iMg+WbtFxyXG4gICAgY29uc3QgZnJlcXVlbmNpZXMgPSBkYXRhPy5mcmVxdWVuY2llcyB8fCBbXTtcclxuICAgIGNvbnN0IGZyZXFSYW5nZSA9IGdldEZyZXF1ZW5jeVJhbmdlKGxpbWl0VmFsdWUpO1xyXG5cclxuICAgIHJldHVybiB7XHJcbiAgICAgIHhNaW46IGZyZXFSYW5nZS5taW4sXHJcbiAgICAgIHhNYXg6IGZyZXFSYW5nZS5tYXgsXHJcbiAgICAgIC4uLmNhbGN1bGF0ZVlSYW5nZSgpXHJcbiAgICB9O1xyXG4gIH0pO1xyXG5cclxuICAvLyDlh4blpIdFY2hhcnRz55qE6YWN572u6aG5XHJcbiAgY29uc3QgZ2V0T3B0aW9uID0gKCkgPT4ge1xyXG4gICAgaWYgKCFkYXRhPy5mcmVxdWVuY2llcykge1xyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIHRpdGxlOiB7XHJcbiAgICAgICAgICB0ZXh0OiAn5peg5pWw5o2uJyxcclxuICAgICAgICAgIGxlZnQ6ICdjZW50ZXInLFxyXG4gICAgICAgICAgdG9wOiAnY2VudGVyJ1xyXG4gICAgICAgIH1cclxuICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCB7IGRhdGFHcm91cCwgcGFpcnMsIGNvbG9ycyB9ID0gZ2V0RGF0YUNvbmZpZygpO1xyXG4gICAgaWYgKCFkYXRhR3JvdXApIHJldHVybiB7fTtcclxuXHJcbiAgICBjb25zdCBmcmVxdWVuY2llcyA9IGRhdGEuZnJlcXVlbmNpZXM7XHJcbiAgICBjb25zdCB5UmFuZ2UgPSBjYWxjdWxhdGVZUmFuZ2UoKTtcclxuICAgIGNvbnN0IGZyZXFSYW5nZSA9IGdldEZyZXF1ZW5jeVJhbmdlKGxpbWl0VmFsdWUpO1xyXG5cclxuICAgIC8vIOWHhuWkh+ezu+WIl+aVsOaNrlxyXG4gICAgY29uc3Qgc2VyaWVzID0gW107XHJcbiAgICBjb25zdCBsZWdlbmREYXRhID0gW107XHJcblxyXG4gICAgLy8g5re75Yqg5a6e6ZmF5pWw5o2u57O75YiXXHJcbiAgICBwYWlycy5mb3JFYWNoKChwYWlyLCBpbmRleCkgPT4ge1xyXG4gICAgICBpZiAoZGF0YVtkYXRhR3JvdXBdPy5bcGFpcl0pIHtcclxuICAgICAgICAvLyDliJvlu7rmlbDmja7ngrnmlbDnu4RcclxuICAgICAgICBjb25zdCBzZXJpZXNEYXRhID0gZnJlcXVlbmNpZXMubWFwKChmcmVxLCBpKSA9PiB7XHJcbiAgICAgICAgICBjb25zdCB2YWx1ZSA9IGRhdGFbZGF0YUdyb3VwXVtwYWlyXVtpXTtcclxuICAgICAgICAgIHJldHVybiBbZnJlcSwgdmFsdWVdO1xyXG4gICAgICAgIH0pLmZpbHRlcihpdGVtID0+IGl0ZW1bMV0gIT09IHVuZGVmaW5lZCAmJiBpdGVtWzFdICE9PSBudWxsKTtcclxuXHJcbiAgICAgICAgLy8g5re75Yqg5pWw5o2u57O75YiXXHJcbiAgICAgICAgc2VyaWVzLnB1c2goe1xyXG4gICAgICAgICAgbmFtZTogcGFpcixcclxuICAgICAgICAgIHR5cGU6ICdsaW5lJyxcclxuICAgICAgICAgIGRhdGE6IHNlcmllc0RhdGEsXHJcbiAgICAgICAgICBzeW1ib2w6ICdub25lJyxcclxuICAgICAgICAgIGxpbmVTdHlsZToge1xyXG4gICAgICAgICAgICB3aWR0aDogMixcclxuICAgICAgICAgICAgY29sb3I6IGNvbG9yc1tpbmRleF1cclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBlbXBoYXNpczoge1xyXG4gICAgICAgICAgICBsaW5lU3R5bGU6IHtcclxuICAgICAgICAgICAgICB3aWR0aDogM1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIGxlZ2VuZERhdGEucHVzaChwYWlyKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgLy8g5re75Yqg5p6B6ZmQ5YC857O75YiXXHJcbiAgICBpZiAobGltaXRkYXRhPy5bZGF0YUdyb3VwXT8uWydQQUlSTGltaXQgKGRCKSddKSB7XHJcbiAgICAgIGNvbnN0IGxpbWl0U2VyaWVzRGF0YSA9IGZyZXF1ZW5jaWVzLm1hcCgoZnJlcSwgaSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHZhbHVlID0gbGltaXRkYXRhW2RhdGFHcm91cF1bJ1BBSVJMaW1pdCAoZEIpJ11baV07XHJcbiAgICAgICAgcmV0dXJuIFtmcmVxLCB2YWx1ZV07XHJcbiAgICAgIH0pLmZpbHRlcihpdGVtID0+IGl0ZW1bMV0gIT09IHVuZGVmaW5lZCAmJiBpdGVtWzFdICE9PSBudWxsKTtcclxuXHJcbiAgICAgIHNlcmllcy5wdXNoKHtcclxuICAgICAgICBuYW1lOiAn5p6B6ZmQ5YC8JyxcclxuICAgICAgICB0eXBlOiAnbGluZScsXHJcbiAgICAgICAgZGF0YTogbGltaXRTZXJpZXNEYXRhLFxyXG4gICAgICAgIHN5bWJvbDogJ25vbmUnLFxyXG4gICAgICAgIGxpbmVTdHlsZToge1xyXG4gICAgICAgICAgd2lkdGg6IDIsXHJcbiAgICAgICAgICBjb2xvcjogJyNGRjAwMDAnLFxyXG4gICAgICAgICAgdHlwZTogJ3NvbGlkJ1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZW1waGFzaXM6IHtcclxuICAgICAgICAgIGxpbmVTdHlsZToge1xyXG4gICAgICAgICAgICB3aWR0aDogM1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcblxyXG4gICAgICBsZWdlbmREYXRhLnB1c2goJ+aegemZkOWAvCcpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB7XHJcbiAgICAgIC8vIOWIoOmZpHRpdGxl6YWN572uXHJcbiAgICAgIHRvb2x0aXA6IHtcclxuICAgICAgICB0cmlnZ2VyOiAnYXhpcycsXHJcbiAgICAgICAgZm9ybWF0dGVyOiBmdW5jdGlvbiAocGFyYW1zKSB7XHJcbiAgICAgICAgICBjb25zdCBmcmVxID0gcGFyYW1zWzBdLnZhbHVlWzBdLnRvRml4ZWQoMSk7XHJcbiAgICAgICAgICBsZXQgcmVzdWx0ID0gYOmikeeOhzogJHtmcmVxfSBNSHo8YnIvPmA7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIC8vIOaJvuWIsOacgOW3ruWAvOWSjOS9memHj1xyXG4gICAgICAgICAgbGV0IHdvcnN0VmFsdWUgPSAtSW5maW5pdHk7XHJcbiAgICAgICAgICBsZXQgbWluTWFyZ2luID0gSW5maW5pdHk7XHJcbiAgICAgICAgICBsZXQgbGltaXRWYWx1ZSA9IG51bGw7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIC8vIOafpeaJvuaegemZkOWAvFxyXG4gICAgICAgICAgY29uc3QgbGltaXRQYXJhbSA9IHBhcmFtcy5maW5kKHAgPT4gcC5zZXJpZXNOYW1lID09PSAn5p6B6ZmQ5YC8Jyk7XHJcbiAgICAgICAgICBpZiAobGltaXRQYXJhbSkge1xyXG4gICAgICAgICAgICBsaW1pdFZhbHVlID0gbGltaXRQYXJhbS52YWx1ZVsxXTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIFxyXG4gICAgICAgICAgLy8g5aSE55CG5q+P5Liq57O75YiX55qE5pWw5o2uXHJcbiAgICAgICAgICBwYXJhbXMuZm9yRWFjaChwYXJhbSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChwYXJhbS5zZXJpZXNOYW1lICE9PSAn5p6B6ZmQ5YC8Jykge1xyXG4gICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gcGFyYW0udmFsdWVbMV07XHJcbiAgICAgICAgICAgICAgcmVzdWx0ICs9IGAke3BhcmFtLnNlcmllc05hbWV9OiAke3ZhbHVlLnRvRml4ZWQoMil9IGRCPGJyLz5gO1xyXG4gICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgIC8vIOabtOaWsOacgOW3ruWAvFxyXG4gICAgICAgICAgICAgIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICB3b3JzdFZhbHVlID0gTWF0aC5tYXgod29yc3RWYWx1ZSwgTWF0aC5hYnModmFsdWUpKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgLy8g6K6h566X5L2Z6YePXHJcbiAgICAgICAgICAgICAgaWYgKHZhbHVlICE9PSB1bmRlZmluZWQgJiYgbGltaXRWYWx1ZSAhPT0gdW5kZWZpbmVkICYmIGxpbWl0VmFsdWUgIT09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IG1hcmdpbiA9IGN1cnRpdGxlID09PSAn5o+S5YWl5o2f6ICXJyA/XHJcbiAgICAgICAgICAgICAgICAgIE1hdGguYWJzKGxpbWl0VmFsdWUpIC0gTWF0aC5hYnModmFsdWUpIDogLy8g5o+S5YWl5o2f6ICX77ya5p6B6ZmQ5YC8IC0g5Y+C5pWw5YC8XHJcbiAgICAgICAgICAgICAgICAgIE1hdGguYWJzKHZhbHVlKSAtIGxpbWl0VmFsdWU7ICAvLyDlhbbku5blj4LmlbDvvJrlj4LmlbDlgLwgLSDmnoHpmZDlgLxcclxuICAgICAgICAgICAgICAgIGlmICghaXNOYU4obWFyZ2luKSkge1xyXG4gICAgICAgICAgICAgICAgICBtaW5NYXJnaW4gPSBNYXRoLm1pbihtaW5NYXJnaW4sIG1hcmdpbik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgLy8g5re75Yqg5pyA5beu5YC85ZKM5L2Z6YeP5L+h5oGvXHJcbiAgICAgICAgICByZXN1bHQgKz0gYDxici8+5pyA5beu5YC8OiAke3dvcnN0VmFsdWUgIT09IC1JbmZpbml0eSA/IHdvcnN0VmFsdWUudG9GaXhlZCgyKSA6ICdOL0EnfSBkQjxici8+YDtcclxuICAgICAgICAgIHJlc3VsdCArPSBg5L2Z6YePOiAke21pbk1hcmdpbiAhPT0gSW5maW5pdHkgPyBtaW5NYXJnaW4udG9GaXhlZCgyKSA6ICdOL0EnfSBkQmA7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIC8vIOabtOaWsOeKtuaAgeS7peWcqOWbvuihqOWklumDqOaYvuekulxyXG4gICAgICAgICAgc2V0TW91c2VJbmZvKHtcclxuICAgICAgICAgICAgZnJlcXVlbmN5OiBwYXJzZUZsb2F0KGZyZXEpLFxyXG4gICAgICAgICAgICB2YWx1ZXM6IHtcclxuICAgICAgICAgICAgICBtYXJnaW46IG1pbk1hcmdpbiAhPT0gSW5maW5pdHkgPyBtaW5NYXJnaW4udG9GaXhlZCgxKSA6ICdOL0EnLFxyXG4gICAgICAgICAgICAgIHdvcnN0VmFsdWU6IHdvcnN0VmFsdWUgIT09IC1JbmZpbml0eSA/IHdvcnN0VmFsdWUudG9GaXhlZCgxKSA6ICdOL0EnXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgYXhpc1BvaW50ZXI6IHtcclxuICAgICAgICAgIHR5cGU6ICdjcm9zcycsXHJcbiAgICAgICAgICBsYWJlbDoge1xyXG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICcjNmE3OTg1J1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAgbGVnZW5kOiB7XHJcbiAgICAgICAgZGF0YTogbGVnZW5kRGF0YSxcclxuICAgICAgICB0eXBlOiAnc2Nyb2xsJyxcclxuICAgICAgICBib3R0b206IDAsXHJcbiAgICAgICAgc2VsZWN0ZWQ6IGxlZ2VuZERhdGEucmVkdWNlKChhY2MsIGl0ZW0pID0+IHtcclxuICAgICAgICAgIGFjY1tpdGVtXSA9IHRydWU7XHJcbiAgICAgICAgICByZXR1cm4gYWNjO1xyXG4gICAgICAgIH0sIHt9KVxyXG4gICAgICB9LFxyXG4gICAgICAvLyDliKDpmaR0b29sYm946YWN572uXHJcbiAgICAgIGdyaWQ6IHtcclxuICAgICAgICBsZWZ0OiAnMyUnLFxyXG4gICAgICAgIHJpZ2h0OiAnNCUnLFxyXG4gICAgICAgIGJvdHRvbTogJzE1JScsXHJcbiAgICAgICAgdG9wOiAnMyUnLCAvLyDlh4/lsI/pobbpg6jnqbrpl7TvvIzlm6DkuLrmsqHmnInmoIfpopjkuoZcclxuICAgICAgICBjb250YWluTGFiZWw6IHRydWVcclxuICAgICAgfSxcclxuICAgICAgeEF4aXM6IHtcclxuICAgICAgICB0eXBlOiAndmFsdWUnLFxyXG4gICAgICAgIG5hbWU6ICfpopHnjocgKE1IeiknLFxyXG4gICAgICAgIG5hbWVMb2NhdGlvbjogJ21pZGRsZScsXHJcbiAgICAgICAgbmFtZUdhcDogMzAsXHJcbiAgICAgICAgbWluOiByYW5nZS54TWluLFxyXG4gICAgICAgIG1heDogcmFuZ2UueE1heCxcclxuICAgICAgICBheGlzTGFiZWw6IHtcclxuICAgICAgICAgIGZvcm1hdHRlcjogJ3t2YWx1ZX0nXHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICB5QXhpczoge1xyXG4gICAgICAgIHR5cGU6ICd2YWx1ZScsXHJcbiAgICAgICAgbmFtZTogJ2RCJyxcclxuICAgICAgICBuYW1lTG9jYXRpb246ICdtaWRkbGUnLFxyXG4gICAgICAgIG5hbWVHYXA6IDQwLFxyXG4gICAgICAgIG1pbjogcmFuZ2UubWluLFxyXG4gICAgICAgIG1heDogcmFuZ2UubWF4LFxyXG4gICAgICAgIGF4aXNMYWJlbDoge1xyXG4gICAgICAgICAgZm9ybWF0dGVyOiAne3ZhbHVlfSdcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIGRhdGFab29tOiBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgdHlwZTogJ2luc2lkZScsXHJcbiAgICAgICAgICBzdGFydDogMCxcclxuICAgICAgICAgIGVuZDogMTAwLFxyXG4gICAgICAgICAgeEF4aXNJbmRleDogMCxcclxuICAgICAgICAgIHpvb21Pbk1vdXNlV2hlZWw6IGZhbHNlLCAgLy8g56aB55So6byg5qCH5rua6L2u57yp5pS+XHJcbiAgICAgICAgICBtb3ZlT25Nb3VzZU1vdmU6IHRydWUsICAgLy8g5YWB6K646byg5qCH5ouW5YqoXHJcbiAgICAgICAgICBwcmV2ZW50RGVmYXVsdE1vdXNlTW92ZTogZmFsc2UgLy8g6Ziy5q2i6buY6K6k6byg5qCH56e75Yqo6KGM5Li6XHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICB0eXBlOiAnaW5zaWRlJyxcclxuICAgICAgICAgIHN0YXJ0OiAwLFxyXG4gICAgICAgICAgZW5kOiAxMDAsXHJcbiAgICAgICAgICB5QXhpc0luZGV4OiAwLFxyXG4gICAgICAgICAgb3JpZW50OiAndmVydGljYWwnLFxyXG4gICAgICAgICAgem9vbU9uTW91c2VXaGVlbDogZmFsc2UsICAvLyDnpoHnlKjpvKDmoIfmu5rova7nvKnmlL5cclxuICAgICAgICAgIG1vdmVPbk1vdXNlTW92ZTogdHJ1ZSwgICAvLyDlhYHorrjpvKDmoIfmi5bliqhcclxuICAgICAgICAgIHByZXZlbnREZWZhdWx0TW91c2VNb3ZlOiBmYWxzZSAvLyDpmLLmraLpu5jorqTpvKDmoIfnp7vliqjooYzkuLpcclxuICAgICAgICB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIHNob3c6IHRydWUsXHJcbiAgICAgICAgICB0eXBlOiAnc2xpZGVyJyxcclxuICAgICAgICAgIGJvdHRvbTogNjAsXHJcbiAgICAgICAgICBzdGFydDogMCxcclxuICAgICAgICAgIGVuZDogMTAwLFxyXG4gICAgICAgICAgeEF4aXNJbmRleDogMFxyXG4gICAgICAgIH1cclxuICAgICAgXSxcclxuICAgICAgYW5pbWF0aW9uOiBmYWxzZSxcclxuICAgICAgc2VyaWVzOiBzZXJpZXNcclxuICAgIH07XHJcbiAgfTtcclxuXHJcbiAgXHJcbiAgXHJcblxyXG4gIC8vIOa4suafk+WbvuihqOWMuuWfn1xyXG4gIGNvbnN0IHJlbmRlckNoYXJ0ID0gKCkgPT4ge1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJyZWxhdGl2ZSB3LWZ1bGxcIiBzdHlsZT17eyBoZWlnaHQ6ICc0MDBweCcgfX0+IHsvKiDorr7nva7lm7rlrprpq5jluqYgKi99XHJcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyZWxhdGl2ZSB3LWZ1bGwgaC1mdWxsXCIgPlxyXG4gICAgICAgICAgPFJlYWN0RUNoYXJ0c1xyXG4gICAgICAgICAgICByZWY9e2NoYXJ0UmVmfVxyXG4gICAgICAgICAgICBvcHRpb249e2dldE9wdGlvbigpfVxyXG4gICAgICAgICAgICBzdHlsZT17eyBoZWlnaHQ6ICcxMDAlJywgd2lkdGg6ICcxMDAlJyB9fVxyXG4gICAgICAgICAgLz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICApO1xyXG4gIH07XHJcblxyXG4gIC8vIOa4suafk+WPguaVsOS/oeaBr+WMuuWfn1xyXG4gIGNvbnN0IHJlbmRlclBhcmFtZXRlcnMgPSAoKSA9PiB7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXgganVzdGlmeS1iZXR3ZWVuIHAtMiB3LWZ1bGxcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInNwYWNlLXktMlwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmb250LWJvbGRcIj57Y3VydGl0bGV9IDoge21vdXNlSW5mby52YWx1ZXMud29yc3RWYWx1ZX0gZEIgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZvbnQtYm9sZFwiPuS9memHjyA6IHttb3VzZUluZm8udmFsdWVzLm1hcmdpbn0gZEI8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICApO1xyXG4gIH07XHJcblxyXG4gIHJldHVybiAoXHJcbiAgICA8ZGl2IGNsYXNzTmFtZT1cInctZnVsbCBmbGV4IGZsZXgtY29sXCI+IHsvKiDnp7vpmaRoLWZ1bGwgKi99XHJcbiAgICAgIHtyZW5kZXJDaGFydCgpfVxyXG4gICAgICB7cmVuZGVyUGFyYW1ldGVycygpfVxyXG4gICAgPC9kaXY+XHJcbiAgKTtcclxufTtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IEZyZXF1ZW5jeUNoYXJ0OyJdLCJuYW1lcyI6WyJSZWFjdCIsInVzZUVmZmVjdCIsInVzZVN0YXRlIiwidXNlUmVmIiwiUmVhY3RFQ2hhcnRzIiwiZWNoYXJ0cyIsIkdyaWRDb21wb25lbnQiLCJUb29sdGlwQ29tcG9uZW50IiwiTGVnZW5kQ29tcG9uZW50IiwiRGF0YVpvb21Db21wb25lbnQiLCJNYXJrTGluZUNvbXBvbmVudCIsIlRvb2xib3hDb21wb25lbnQiLCJMaW5lQ2hhcnQiLCJVbml2ZXJzYWxUcmFuc2l0aW9uIiwiQ2FudmFzUmVuZGVyZXIiLCJ1c2UiLCJGcmVxdWVuY3lDaGFydCIsImRhdGEiLCJsaW1pdGRhdGEiLCJsaW1pdFZhbHVlIiwiSERURCIsImN1cnRpdGxlIiwid2lyZU9yZGVyIiwiY2hhcnRSZWYiLCJtb3VzZUluZm8iLCJzZXRNb3VzZUluZm8iLCJmcmVxdWVuY3kiLCJ2YWx1ZXMiLCJtYXJnaW4iLCJ3b3JzdFZhbHVlIiwiZ2V0RGF0YUNvbmZpZyIsImZvdXJQYWlyc0dyb3VwIiwic2l4UGFpcnNHcm91cCIsInR3ZWx2ZVBhaXJzR3JvdXAiLCJkYXRhR3JvdXBNYXAiLCJkYXRhR3JvdXAiLCJpc1NpeFBhaXJzIiwiaW5jbHVkZXMiLCJpc1R3ZWx2ZVBhaXJzIiwicGFpcnMiLCJjb2xvcnMiLCJtYXAiLCJfIiwiaW5kZXgiLCJiYXNlQ29sb3JzIiwibGVuZ3RoIiwiY2FsY3VsYXRlWVJhbmdlIiwibWluIiwibWF4IiwiYWxsVmFsdWVzIiwiZm9yRWFjaCIsInBhaXIiLCJkYXRhVmFsdWVzIiwicHVzaCIsIm1heFZhbHVlIiwiTWF0aCIsImZpbHRlciIsInYiLCJ1bmRlZmluZWQiLCJtaW5WYWx1ZSIsInJhbmdlIiwiYWJzIiwicm91bmRlZFJhbmdlIiwiY2VpbCIsImdldEZyZXF1ZW5jeVJhbmdlIiwibGltaXRWYWx1ZUxvd2VyIiwidG9Mb3dlckNhc2UiLCJzZXRSYW5nZSIsImZyZXF1ZW5jaWVzIiwiZnJlcVJhbmdlIiwieE1pbiIsInhNYXgiLCJnZXRPcHRpb24iLCJ0aXRsZSIsInRleHQiLCJsZWZ0IiwidG9wIiwieVJhbmdlIiwic2VyaWVzIiwibGVnZW5kRGF0YSIsInNlcmllc0RhdGEiLCJmcmVxIiwiaSIsInZhbHVlIiwiaXRlbSIsIm5hbWUiLCJ0eXBlIiwic3ltYm9sIiwibGluZVN0eWxlIiwid2lkdGgiLCJjb2xvciIsImVtcGhhc2lzIiwibGltaXRTZXJpZXNEYXRhIiwidG9vbHRpcCIsInRyaWdnZXIiLCJmb3JtYXR0ZXIiLCJwYXJhbXMiLCJ0b0ZpeGVkIiwicmVzdWx0IiwiSW5maW5pdHkiLCJtaW5NYXJnaW4iLCJsaW1pdFBhcmFtIiwiZmluZCIsInAiLCJzZXJpZXNOYW1lIiwicGFyYW0iLCJpc05hTiIsInBhcnNlRmxvYXQiLCJheGlzUG9pbnRlciIsImxhYmVsIiwiYmFja2dyb3VuZENvbG9yIiwibGVnZW5kIiwiYm90dG9tIiwic2VsZWN0ZWQiLCJyZWR1Y2UiLCJhY2MiLCJncmlkIiwicmlnaHQiLCJjb250YWluTGFiZWwiLCJ4QXhpcyIsIm5hbWVMb2NhdGlvbiIsIm5hbWVHYXAiLCJheGlzTGFiZWwiLCJ5QXhpcyIsImRhdGFab29tIiwic3RhcnQiLCJlbmQiLCJ4QXhpc0luZGV4Iiwiem9vbU9uTW91c2VXaGVlbCIsIm1vdmVPbk1vdXNlTW92ZSIsInByZXZlbnREZWZhdWx0TW91c2VNb3ZlIiwieUF4aXNJbmRleCIsIm9yaWVudCIsInNob3ciLCJhbmltYXRpb24iLCJyZW5kZXJDaGFydCIsImRpdiIsImNsYXNzTmFtZSIsInN0eWxlIiwiaGVpZ2h0IiwicmVmIiwib3B0aW9uIiwicmVuZGVyUGFyYW1ldGVycyJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(pages-dir-node)/./src/components/lib/FrequencyChart.js\n"); /***/ }), /***/ "(pages-dir-node)/./src/components/lib/HDTDChart.js": /*!*****************************************!*\ !*** ./src/components/lib/HDTDChart.js ***! \*****************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; eval("__webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {\n__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_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"react/jsx-dev-runtime\");\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 */ \"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var echarts_for_react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! echarts-for-react */ \"echarts-for-react\");\n/* harmony import */ var echarts_for_react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(echarts_for_react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var echarts_core__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! echarts/core */ \"echarts/core\");\n/* harmony import */ var echarts_components__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! echarts/components */ \"echarts/components\");\n/* harmony import */ var echarts_charts__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! echarts/charts */ \"echarts/charts\");\n/* harmony import */ var echarts_features__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! echarts/features */ \"echarts/features\");\n/* harmony import */ var echarts_renderers__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! echarts/renderers */ \"echarts/renderers\");\nvar __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([echarts_core__WEBPACK_IMPORTED_MODULE_3__, echarts_components__WEBPACK_IMPORTED_MODULE_4__, echarts_charts__WEBPACK_IMPORTED_MODULE_5__, echarts_features__WEBPACK_IMPORTED_MODULE_6__, echarts_renderers__WEBPACK_IMPORTED_MODULE_7__]);\n([echarts_core__WEBPACK_IMPORTED_MODULE_3__, echarts_components__WEBPACK_IMPORTED_MODULE_4__, echarts_charts__WEBPACK_IMPORTED_MODULE_5__, echarts_features__WEBPACK_IMPORTED_MODULE_6__, echarts_renderers__WEBPACK_IMPORTED_MODULE_7__] = __webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__);\n\n\n\n\n\n\n\n\n// 注册必要的组件\necharts_core__WEBPACK_IMPORTED_MODULE_3__.use([\n echarts_components__WEBPACK_IMPORTED_MODULE_4__.GridComponent,\n echarts_components__WEBPACK_IMPORTED_MODULE_4__.TooltipComponent,\n echarts_components__WEBPACK_IMPORTED_MODULE_4__.LegendComponent,\n echarts_charts__WEBPACK_IMPORTED_MODULE_5__.LineChart,\n echarts_renderers__WEBPACK_IMPORTED_MODULE_7__.CanvasRenderer,\n echarts_features__WEBPACK_IMPORTED_MODULE_6__.UniversalTransition,\n echarts_components__WEBPACK_IMPORTED_MODULE_4__.DataZoomComponent,\n echarts_components__WEBPACK_IMPORTED_MODULE_4__.MarkLineComponent\n]);\nconst HDTDChart = ({ HDTD, curtitle })=>{\n const chartRef = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)(null);\n // 根据curtitle获取对应的数据组和配置\n const getDataConfig = ()=>{\n const isHDTDR = curtitle === 'HDTDR';\n const pairs = isHDTDR ? [\n 'PAIR12',\n 'PAIR36',\n 'PAIR45',\n 'PAIR78'\n ] : [\n 'PAIR1236',\n 'PAIR1245',\n 'PAIR1278',\n 'PAIR3645',\n 'PAIR3678',\n 'PAIR4578'\n ];\n const colors = isHDTDR ? [\n '#FFA500',\n '#0000FF',\n '#00FF00',\n '#8B4513'\n ] : [\n '#FFA500',\n '#0000FF',\n '#00FF00',\n '#8B4513',\n '#800080',\n '#FF69B4'\n ];\n const yRange = isHDTDR ? {\n min: -100,\n max: 100\n } : {\n min: 0,\n max: 100\n };\n return {\n pairs,\n colors,\n yRange\n };\n };\n // 准备Echarts的配置项\n const getOption = ()=>{\n if (!HDTD || !HDTD[curtitle]) {\n return {\n title: {\n text: '无数据',\n left: 'center',\n top: 'center'\n }\n };\n }\n const { pairs, colors, yRange } = getDataConfig();\n const data = HDTD[curtitle];\n const lengthArray = data.LENGTH;\n const maxLength = Math.max(...lengthArray);\n // 准备系列数据\n const series = [];\n const legendData = [];\n // 添加数据系列\n pairs.forEach((pair, index)=>{\n const values = data[pair];\n if (!values || values.length === 0) return;\n // 创建数据点数组\n const seriesData = values.map((value, i)=>{\n // 使用索引作为X轴位置,或者如果有具体的位置数据,可以使用它\n const position = i / (values.length - 1) * maxLength;\n return [\n position,\n value\n ];\n });\n // 添加数据系列\n series.push({\n name: pair,\n type: 'line',\n data: seriesData,\n symbol: 'none',\n lineStyle: {\n width: 2,\n color: colors[index]\n },\n emphasis: {\n lineStyle: {\n width: 3\n }\n },\n animation: false\n });\n legendData.push(pair);\n });\n return {\n tooltip: {\n trigger: 'axis',\n formatter: function(params) {\n // Add null checks to prevent errors\n if (!params || !params.length || !params[0] || !params[0].value) {\n return '无数据';\n }\n const position = params[0].value[0] ? params[0].value[0].toFixed(1) : '未知';\n let result = `位置: ${position} m
`;\n params.forEach((param)=>{\n if (param && param.value) {\n const value = param.value[1];\n result += `${param.seriesName}: ${value ? value.toFixed(2) : '未知'}
`;\n }\n });\n return result;\n },\n axisPointer: {\n type: 'cross',\n label: {\n backgroundColor: '#6a7985'\n }\n }\n },\n legend: {\n data: legendData,\n type: 'scroll',\n bottom: 0,\n selected: legendData.reduce((acc, item)=>{\n acc[item] = true;\n return acc;\n }, {})\n },\n grid: {\n left: '3%',\n right: '4%',\n bottom: '15%',\n top: '3%',\n containLabel: true\n },\n xAxis: {\n type: 'value',\n name: '位置 (m)',\n nameLocation: 'middle',\n nameGap: 30,\n min: 0,\n max: maxLength,\n axisLabel: {\n formatter: '{value}'\n }\n },\n yAxis: {\n type: 'value',\n name: curtitle === 'HDTDR' ? '阻抗 (Ω)' : '幅度 (dB)',\n nameLocation: 'middle',\n nameGap: 40,\n min: yRange.min,\n max: yRange.max,\n axisLabel: {\n formatter: '{value}'\n }\n },\n dataZoom: [\n {\n type: 'inside',\n start: 0,\n end: 100,\n xAxisIndex: 0,\n zoomOnMouseWheel: false,\n moveOnMouseMove: true,\n preventDefaultMouseMove: false\n },\n {\n type: 'inside',\n start: 0,\n end: 100,\n yAxisIndex: 0,\n orient: 'vertical',\n zoomOnMouseWheel: false,\n moveOnMouseMove: true,\n preventDefaultMouseMove: false\n },\n {\n show: true,\n type: 'slider',\n bottom: 60,\n start: 0,\n end: 100,\n xAxisIndex: 0\n }\n ],\n animation: false,\n series: series\n };\n };\n // 渲染图表区域\n const renderChart = ()=>{\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"relative w-full\",\n style: {\n height: '500px'\n },\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"relative w-full h-full\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((echarts_for_react__WEBPACK_IMPORTED_MODULE_2___default()), {\n ref: chartRef,\n option: getOption(),\n style: {\n height: '100%',\n width: '100%'\n }\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/HDTDChart.js\",\n lineNumber: 208,\n columnNumber: 21\n }, undefined)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/HDTDChart.js\",\n lineNumber: 207,\n columnNumber: 17\n }, undefined)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/HDTDChart.js\",\n lineNumber: 206,\n columnNumber: 13\n }, undefined);\n };\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full\",\n children: renderChart()\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/HDTDChart.js\",\n lineNumber: 221,\n columnNumber: 9\n }, undefined);\n};\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (HDTDChart);\n\n__webpack_async_result__();\n} catch(e) { __webpack_async_result__(e); } });//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHBhZ2VzLWRpci1ub2RlKS8uL3NyYy9jb21wb25lbnRzL2xpYi9IRFREQ2hhcnQuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUEyRDtBQUNkO0FBQ0w7QUFPWjtBQUNlO0FBQ1k7QUFDSjtBQUVuRCxVQUFVO0FBQ1ZLLDZDQUFXLENBQUM7SUFDVkMsNkRBQWFBO0lBQ2JDLGdFQUFnQkE7SUFDaEJDLCtEQUFlQTtJQUNmRyxxREFBU0E7SUFDVEUsNkRBQWNBO0lBQ2RELGlFQUFtQkE7SUFDbkJILGlFQUFpQkE7SUFDakJDLGlFQUFpQkE7Q0FDbEI7QUFFRCxNQUFNSyxZQUFZLENBQUMsRUFDZkMsSUFBSSxFQUNKQyxRQUFRLEVBQ1g7SUFDRyxNQUFNQyxXQUFXZiw2Q0FBTUEsQ0FBQztJQUV4Qix3QkFBd0I7SUFDeEIsTUFBTWdCLGdCQUFnQjtRQUNsQixNQUFNQyxVQUFVSCxhQUFhO1FBQzdCLE1BQU1JLFFBQVFELFVBQ1Y7WUFBQztZQUFVO1lBQVU7WUFBVTtTQUFTLEdBQ3hDO1lBQUM7WUFBWTtZQUFZO1lBQVk7WUFBWTtZQUFZO1NBQVc7UUFFNUUsTUFBTUUsU0FBU0YsVUFDWDtZQUFDO1lBQVc7WUFBVztZQUFXO1NBQVUsR0FDNUM7WUFBQztZQUFXO1lBQVc7WUFBVztZQUFXO1lBQVc7U0FBVTtRQUV0RSxNQUFNRyxTQUFTSCxVQUFVO1lBQUVJLEtBQUssQ0FBQztZQUFLQyxLQUFLO1FBQUksSUFBSTtZQUFFRCxLQUFLO1lBQUdDLEtBQUs7UUFBSTtRQUV0RSxPQUFPO1lBQUVKO1lBQU9DO1lBQVFDO1FBQU87SUFDbkM7SUFFQSxnQkFBZ0I7SUFDaEIsTUFBTUcsWUFBWTtRQUNkLElBQUksQ0FBQ1YsUUFBUSxDQUFDQSxJQUFJLENBQUNDLFNBQVMsRUFBRTtZQUMxQixPQUFPO2dCQUNIVSxPQUFPO29CQUNIQyxNQUFNO29CQUNOQyxNQUFNO29CQUNOQyxLQUFLO2dCQUNUO1lBQ0o7UUFDSjtRQUVBLE1BQU0sRUFBRVQsS0FBSyxFQUFF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YztnQkFDZEMsU0FBUztnQkFDVHZELEtBQUtELE9BQU9DLEdBQUc7Z0JBQ2ZDLEtBQUtGLE9BQU9FLEdBQUc7Z0JBQ2Z1RCxXQUFXO29CQUNQckIsV0FBVztnQkFDZjtZQUNKO1lBQ0F1QixVQUFVO2dCQUNOO29CQUNJaEMsTUFBTTtvQkFDTmlDLE9BQU87b0JBQ1BDLEtBQUs7b0JBQ0xDLFlBQVk7b0JBQ1pDLGtCQUFrQjtvQkFDbEJDLGlCQUFpQjtvQkFDakJDLHlCQUF5QjtnQkFDN0I7Z0JBQ0E7b0JBQ0l0QyxNQUFNO29CQUNOaUMsT0FBTztvQkFDUEMsS0FBSztvQkFDTEssWUFBWTtvQkFDWkMsUUFBUTtvQkFDUkosa0JBQWtCO29CQUNsQkMsaUJBQWlCO29CQUNqQkMseUJBQXlCO2dCQUM3QjtnQkFDQTtvQkFDSUcsTUFBTTtvQkFDTnpDLE1BQU07b0JBQ05tQixRQUFRO29CQUNSYyxPQUFPO29CQUNQQyxLQUFLO29CQUNMQyxZQUFZO2dCQUNoQjthQUNIO1lBQ0Q3QixXQUFXO1lBQ1hwQixRQUFRQTtRQUNaO0lBQ0o7SUFFQSxTQUFTO0lBQ1QsTUFBTXdELGNBQWM7UUFDaEIscUJBQ0ksOERBQUNDO1lBQUlDLFdBQVU7WUFBa0JDLE9BQU87Z0JBQUVDLFFBQVE7WUFBUTtzQkFDdEQsNEVBQUNIO2dCQUFJQyxXQUFVOzBCQUNYLDRFQUFDMUYsMERBQVlBO29CQUNUNkYsS0FBSy9FO29CQUNMZ0YsUUFBUXhFO29CQUNScUUsT0FBTzt3QkFBRUMsUUFBUTt3QkFBUTNDLE9BQU87b0JBQU87Ozs7Ozs7Ozs7Ozs7Ozs7SUFLM0Q7SUFJQSxxQkFDSSw4REFBQ3dDO1FBQUlDLFdBQVU7a0JBQ1ZGOzs7Ozs7QUFHYjtBQUVBLGlFQUFlN0UsU0FBU0EsRUFBQyIsInNvdXJjZXMiOlsiL29wdC9kZXYvZXN0LWRzeC9zcmMvY29tcG9uZW50cy9saWIvSERURENoYXJ0LmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QsIHVzZVN0YXRlLCB1c2VSZWYgfSBmcm9tICdyZWFjdCc7XHJcbmltcG9ydCBSZWFjdEVDaGFydHMgZnJvbSAnZWNoYXJ0cy1mb3ItcmVhY3QnO1xyXG5pbXBvcnQgKiBhcyBlY2hhcnRzIGZyb20gJ2VjaGFydHMvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgR3JpZENvbXBvbmVudCxcclxuICBUb29sdGlwQ29tcG9uZW50LFxyXG4gIExlZ2VuZENvbXBvbmVudCxcclxuICBEYXRhWm9vbUNvbXBvbmVudCxcclxuICBNYXJrTGluZUNvbXBvbmVudFxyXG59IGZyb20gJ2VjaGFydHMvY29tcG9uZW50cyc7XHJcbmltcG9ydCB7IExpbmVDaGFydCB9IGZyb20gJ2VjaGFydHMvY2hhcnRzJztcclxuaW1wb3J0IHsgVW5pdmVyc2FsVHJhbnNpdGlvbiB9IGZyb20gJ2VjaGFydHMvZmVhdHVyZXMnO1xyXG5pbXBvcnQgeyBDYW52YXNSZW5kZXJlciB9IGZyb20gJ2VjaGFydHMvcmVuZGVyZXJzJztcclxuXHJcbi8vIOazqOWGjOW/heimgeeahOe7hOS7tlxyXG5lY2hhcnRzLnVzZShbXHJcbiAgR3JpZENvbXBvbmVudCxcclxuICBUb29sdGlwQ29tcG9uZW50LFxyXG4gIExlZ2VuZENvbXBvbmVudCxcclxuICBMaW5lQ2hhcnQsXHJcbiAgQ2FudmFzUmVuZGVyZXIsXHJcbiAgVW5pdmVyc2FsVHJhbnNpdGlvbixcclxuICBEYXRhWm9vbUNvbXBvbmVudCxcclxuICBNYXJrTGluZUNvbXBvbmVudFxyXG5dKTtcclxuXHJcbmNvbnN0IEhEVERDaGFydCA9ICh7IFxyXG4gICAgSERURCxcclxuICAgIGN1cnRpdGxlLFxyXG59KSA9PiB7XHJcbiAgICBjb25zdCBjaGFydFJlZiA9IHVzZVJlZihudWxsKTtcclxuXHJcbiAgICAvLyDmoLnmja5jdXJ0aXRsZeiOt+WPluWvueW6lOeahOaVsOaNrue7hOWSjOmFjee9rlxyXG4gICAgY29uc3QgZ2V0RGF0YUNvbmZpZyA9ICgpID0+IHtcclxuICAgICAgICBjb25zdCBpc0hEVERSID0gY3VydGl0bGUgPT09ICdIRFREUic7XHJcbiAgICAgICAgY29uc3QgcGFpcnMgPSBpc0hEVERSID8gXHJcbiAgICAgICAgICAgIFsnUEFJUjEyJywgJ1BBSVIzNicsICdQQUlSNDUnLCAnUEFJUjc4J10gOlxyXG4gICAgICAgICAgICBbJ1BBSVIxMjM2JywgJ1BBSVIxMjQ1JywgJ1BBSVIxMjc4JywgJ1BBSVIzNjQ1JywgJ1BBSVIzNjc4JywgJ1BBSVI0NTc4J107XHJcblxyXG4gICAgICAgIGNvbnN0IGNvbG9ycyA9IGlzSERURFIgP1xyXG4gICAgICAgICAgICBbJyNGRkE1MDAnLCAnIzAwMDBGRicsICcjMDBGRjAwJywgJyM4QjQ1MTMnXSA6XHJcbiAgICAgICAgICAgIFsnI0ZGQTUwMCcsICcjMDAwMEZGJywgJyMwMEZGMDAnLCAnIzhCNDUxMycsICcjODAwMDgwJywgJyNGRjY5QjQnXTtcclxuXHJcbiAgICAgICAgY29uc3QgeVJhbmdlID0gaXNIRFREUiA/IHsgbWluOiAtMTAwLCBtYXg6IDEwMCB9IDogeyBtaW46IDAsIG1heDogMTAwIH07XHJcblxyXG4gICAgICAgIHJldHVybiB7IHBhaXJzLCBjb2xvcnMsIHlSYW5nZSB9O1xyXG4gICAgfTtcclxuXHJcbiAgICAvLyDlh4blpIdFY2hhcnRz55qE6YWN572u6aG5XHJcbiAgICBjb25zdCBnZXRPcHRpb24gPSAoKSA9PiB7XHJcbiAgICAgICAgaWYgKCFIRFREIHx8ICFIRFREW2N1cnRpdGxlXSkge1xyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgdGl0bGU6IHtcclxuICAgICAgICAgICAgICAgICAgICB0ZXh0OiAn5peg5pWw5o2uJyxcclxuICAgICAgICAgICAgICAgICAgICBsZWZ0OiAnY2VudGVyJyxcclxuICAgICAgICAgICAgICAgICAgICB0b3A6ICdjZW50ZXInXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCB7IHBhaXJzLCBjb2xvcnMsIHlSYW5nZSB9ID0gZ2V0RGF0YUNvbmZpZygpO1xyXG4gICAgICAgIGNvbnN0IGRhdGEgPSBIRFREW2N1cnRpdGxlXTtcclxuICAgICAgICBjb25zdCBsZW5ndGhBcnJheSA9IGRhdGEuTEVOR1RIO1xyXG4gICAgICAgIGNvbnN0IG1heExlbmd0aCA9IE1hdGgubWF4KC4uLmxlbmd0aEFycmF5KTtcclxuXHJcbiAgICAgICAgLy8g5YeG5aSH57O75YiX5pWw5o2uXHJcbiAgICAgICAgY29uc3Qgc2VyaWVzID0gW107XHJcbiAgICAgICAgY29uc3QgbGVnZW5kRGF0YSA9IFtdO1xyXG5cclxuICAgICAgICAvLyDmt7vliqDmlbDmja7ns7vliJdcclxuICAgICAgICBwYWlycy5mb3JFYWNoKChwYWlyLCBpbmRleCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCB2YWx1ZXMgPSBkYXRhW3BhaXJdO1xyXG4gICAgICAgICAgICBpZiAoIXZhbHVlcyB8fCB2YWx1ZXMubGVuZ3RoID09PSAwKSByZXR1cm47XHJcblxyXG4gICAgICAgICAgICAvLyDliJvlu7rmlbDmja7ngrnmlbDnu4RcclxuICAgICAgICAgICAgY29uc3Qgc2VyaWVzRGF0YSA9IHZhbHVlcy5tYXAoKHZhbHVlLCBpKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAvLyDkvb/nlKjntKLlvJXkvZzkuLpY6L205L2N572u77yM5oiW6ICF5aaC5p6c5pyJ5YW35L2T55qE5L2N572u5pWw5o2u77yM5Y+v5Lul5L2/55So5a6DXHJcbiAgICAgICAgICAgICAgICBjb25zdCBwb3NpdGlvbiA9IGkgLyAodmFsdWVzLmxlbmd0aCAtIDEpICogbWF4TGVuZ3RoO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIFtwb3NpdGlvbiwgdmFsdWVdO1xyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgIC8vIOa3u+WKoOaVsOaNruezu+WIl1xyXG4gICAgICAgICAgICBzZXJpZXMucHVzaCh7XHJcbiAgICAgICAgICAgICAgICBuYW1lOiBwYWlyLFxyXG4gICAgICAgICAgICAgICAgdHlwZTogJ2xpbmUnLFxyXG4gICAgICAgICAgICAgICAgZGF0YTogc2VyaWVzRGF0YSxcclxuICAgICAgICAgICAgICAgIHN5bWJvbDogJ25vbmUnLFxyXG4gICAgICAgICAgICAgICAgbGluZVN0eWxlOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDIsXHJcbiAgICAgICAgICAgICAgICAgICAgY29sb3I6IGNvbG9yc1tpbmRleF1cclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBlbXBoYXNpczoge1xyXG4gICAgICAgICAgICAgICAgICAgIGxpbmVTdHlsZToge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogM1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBhbmltYXRpb246IGZhbHNlXHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgbGVnZW5kRGF0YS5wdXNoKHBhaXIpO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICB0b29sdGlwOiB7XHJcbiAgICAgICAgICAgICAgICB0cmlnZ2VyOiAnYXhpcycsXHJcbiAgICAgICAgICAgICAgICBmb3JtYXR0ZXI6IGZ1bmN0aW9uIChwYXJhbXMpIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBBZGQgbnVsbCBjaGVja3MgdG8gcHJldmVudCBlcnJvcnNcclxuICAgICAgICAgICAgICAgICAgICBpZiAoIXBhcmFtcyB8fCAhcGFyYW1zLmxlbmd0aCB8fCAhcGFyYW1zWzBdIHx8ICFwYXJhbXNbMF0udmFsdWUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICfml6DmlbDmja4nO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBwb3NpdGlvbiA9IHBhcmFtc1swXS52YWx1ZVswXSA/IHBhcmFtc1swXS52YWx1ZVswXS50b0ZpeGVkKDEpIDogJ+acquefpSc7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9IGDkvY3nva46ICR7cG9zaXRpb259IG08YnIvPmA7XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgcGFyYW1zLmZvckVhY2gocGFyYW0gPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocGFyYW0gJiYgcGFyYW0udmFsdWUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gcGFyYW0udmFsdWVbMV07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gYCR7cGFyYW0uc2VyaWVzTmFtZX06ICR7dmFsdWUgPyB2YWx1ZS50b0ZpeGVkKDIpIDogJ+acquefpSd9PGJyLz5gO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBheGlzUG9pbnRlcjoge1xyXG4gICAgICAgICAgICAgICAgICAgIHR5cGU6ICdjcm9zcycsXHJcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiAnIzZhNzk4NSdcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGxlZ2VuZDoge1xyXG4gICAgICAgICAgICAgICAgZGF0YTogbGVnZW5kRGF0YSxcclxuICAgICAgICAgICAgICAgIHR5cGU6ICdzY3JvbGwnLFxyXG4gICAgICAgICAgICAgICAgYm90dG9tOiAwLFxyXG4gICAgICAgICAgICAgICAgc2VsZWN0ZWQ6IGxlZ2VuZERhdGEucmVkdWNlKChhY2MsIGl0ZW0pID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBhY2NbaXRlbV0gPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBhY2M7XHJcbiAgICAgICAgICAgICAgICB9LCB7fSlcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgZ3JpZDoge1xyXG4gICAgICAgICAgICAgICAgbGVmdDogJzMlJyxcclxuICAgICAgICAgICAgICAgIHJpZ2h0OiAnNCUnLFxyXG4gICAgICAgICAgICAgICAgYm90dG9tOiAnMTUlJyxcclxuICAgICAgICAgICAgICAgIHRvcDogJzMlJyxcclxuICAgICAgICAgICAgICAgIGNvbnRhaW5MYWJlbDogdHJ1ZVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB4QXhpczoge1xyXG4gICAgICAgICAgICAgICAgdHlwZTogJ3ZhbHVlJyxcclxuICAgICAgICAgICAgICAgIG5hbWU6ICfkvY3nva4gKG0pJyxcclxuICAgICAgICAgICAgICAgIG5hbWVMb2NhdGlvbjogJ21pZGRsZScsXHJcbiAgICAgICAgICAgICAgICBuYW1lR2FwOiAzMCxcclxuICAgICAgICAgICAgICAgIG1pbjogMCxcclxuICAgICAgICAgICAgICAgIG1heDogbWF4TGVuZ3RoLFxyXG4gICAgICAgICAgICAgICAgYXhpc0xhYmVsOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgZm9ybWF0dGVyOiAne3ZhbHVlfSdcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgeUF4aXM6IHtcclxuICAgICAgICAgICAgICAgIHR5cGU6ICd2YWx1ZScsXHJcbiAgICAgICAgICAgICAgICBuYW1lOiBjdXJ0aXRsZSA9PT0gJ0hEVERSJyA/ICfpmLvmipcgKM6pKScgOiAn5bmF5bqmIChkQiknLFxyXG4gICAgICAgICAgICAgICAgbmFtZUxvY2F0aW9uOiAnbWlkZGxlJyxcclxuICAgICAgICAgICAgICAgIG5hbWVHYXA6IDQwLFxyXG4gICAgICAgICAgICAgICAgbWluOiB5UmFuZ2UubWluLFxyXG4gICAgICAgICAgICAgICAgbWF4OiB5UmFuZ2UubWF4LFxyXG4gICAgICAgICAgICAgICAgYXhpc0xhYmVsOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgZm9ybWF0dGVyOiAne3ZhbHVlfSdcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgZGF0YVpvb206IFtcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICB0eXBlOiAnaW5zaWRlJyxcclxuICAgICAgICAgICAgICAgICAgICBzdGFydDogMCxcclxuICAgICAgICAgICAgICAgICAgICBlbmQ6IDEwMCxcclxuICAgICAgICAgICAgICAgICAgICB4QXhpc0luZGV4OiAwLFxyXG4gICAgICAgICAgICAgICAgICAgIHpvb21Pbk1vdXNlV2hlZWw6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgICAgIG1vdmVPbk1vdXNlTW92ZTogdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgICBwcmV2ZW50RGVmYXVsdE1vdXNlTW92ZTogZmFsc2VcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogJ2luc2lkZScsXHJcbiAgICAgICAgICAgICAgICAgICAgc3RhcnQ6IDAsXHJcbiAgICAgICAgICAgICAgICAgICAgZW5kOiAxMDAsXHJcbiAgICAgICAgICAgICAgICAgICAgeUF4aXNJbmRleDogMCxcclxuICAgICAgICAgICAgICAgICAgICBvcmllbnQ6ICd2ZXJ0aWNhbCcsXHJcbiAgICAgICAgICAgICAgICAgICAgem9vbU9uTW91c2VXaGVlbDogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgbW92ZU9uTW91c2VNb3ZlOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgICAgIHByZXZlbnREZWZhdWx0TW91c2VNb3ZlOiBmYWxzZVxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBzaG93OiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgICAgIHR5cGU6ICdzbGlkZXInLFxyXG4gICAgICAgICAgICAgICAgICAgIGJvdHRvbTogNjAsXHJcbiAgICAgICAgICAgICAgICAgICAgc3RhcnQ6IDAsXHJcbiAgICAgICAgICAgICAgICAgICAgZW5kOiAxMDAsXHJcbiAgICAgICAgICAgICAgICAgICAgeEF4aXNJbmRleDogMFxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBdLFxyXG4gICAgICAgICAgICBhbmltYXRpb246IGZhbHNlLFxyXG4gICAgICAgICAgICBzZXJpZXM6IHNlcmllc1xyXG4gICAgICAgIH07XHJcbiAgICB9O1xyXG5cclxuICAgIC8vIOa4suafk+WbvuihqOWMuuWfn1xyXG4gICAgY29uc3QgcmVuZGVyQ2hhcnQgPSAoKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyZWxhdGl2ZSB3LWZ1bGxcIiBzdHlsZT17eyBoZWlnaHQ6ICc1MDBweCcgfX0+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInJlbGF0aXZlIHctZnVsbCBoLWZ1bGxcIj5cclxuICAgICAgICAgICAgICAgICAgICA8UmVhY3RFQ2hhcnRzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlZj17Y2hhcnRSZWZ9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbj17Z2V0T3B0aW9uKCl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7IGhlaWdodDogJzEwMCUnLCB3aWR0aDogJzEwMCUnIH19XHJcbiAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICApO1xyXG4gICAgfTtcclxuXHJcblxyXG5cclxuICAgIHJldHVybiAoXHJcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LWZ1bGxcIj5cclxuICAgICAgICAgICAge3JlbmRlckNoYXJ0KCl9XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICApO1xyXG59O1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgSERURENoYXJ0OyJdLCJuYW1lcyI6WyJSZWFjdCIsInVzZUVmZmVjdCIsInVzZVN0YXRlIiwidXNlUmVmIiwiUmVhY3RFQ2hhcnRzIiwiZWNoYXJ0cyIsIkdyaWRDb21wb25lbnQiLCJUb29sdGlwQ29tcG9uZW50IiwiTGVnZW5kQ29tcG9uZW50IiwiRGF0YVpvb21Db21wb25lbnQiLCJNYXJrTGluZUNvbXBvbmVudCIsIkxpbmVDaGFydCIsIlVuaXZlcnNhbFRyYW5zaXRpb24iLCJDYW52YXNSZW5kZXJlciIsInVzZSIsIkhEVERDaGFydCIsIkhEVEQiLCJjdXJ0aXRsZSIsImNoYXJ0UmVmIiwiZ2V0RGF0YUNvbmZpZyIsImlzSERURFIiLCJwYWlycyIsImNvbG9ycyIsInlSYW5nZSIsIm1pbiIsIm1heCIsImdldE9wdGlvbiIsInRpdGxlIiwidGV4dCIsImxlZnQiLCJ0b3AiLCJkYXRhIiwibGVuZ3RoQXJyYXkiLCJMRU5HVEgiLCJtYXhMZW5ndGgiLCJNYXRoIiwic2VyaWVzIiwibGVnZW5kRGF0YSIsImZvckVhY2giLCJwYWlyIiwiaW5kZXgiLCJ2YWx1ZXMiLCJsZW5ndGgiLCJzZXJpZXNEYXRhIiwibWFwIiwidmFsdWUiLCJpIiwicG9zaXRpb24iLCJwdXNoIiwibmFtZSIsInR5cGUiLCJzeW1ib2wiLCJsaW5lU3R5bGUiLCJ3aWR0aCIsImNvbG9yIiwiZW1waGFzaXMiLCJhbmltYXRpb24iLCJ0b29sdGlwIiwidHJpZ2dlciIsImZvcm1hdHRlciIsInBhcmFtcyIsInRvRml4ZWQiLCJyZXN1bHQiLCJwYXJhbSIsInNlcmllc05hbWUiLCJheGlzUG9pbnRlciIsImxhYmVsIiwiYmFja2dyb3VuZENvbG9yIiwibGVnZW5kIiwiYm90dG9tIiwic2VsZWN0ZWQiLCJyZWR1Y2UiLCJhY2MiLCJpdGVtIiwiZ3JpZCIsInJpZ2h0IiwiY29udGFpbkxhYmVsIiwieEF4aXMiLCJuYW1lTG9jYXRpb24iLCJuYW1lR2FwIiwiYXhpc0xhYmVsIiwieUF4aXMiLCJkYXRhWm9vbSIsInN0YXJ0IiwiZW5kIiwieEF4aXNJbmRleCIsInpvb21Pbk1vdXNlV2hlZWwiLCJtb3ZlT25Nb3VzZU1vdmUiLCJwcmV2ZW50RGVmYXVsdE1vdXNlTW92ZSIsInlBeGlzSW5kZXgiLCJvcmllbnQiLCJzaG93IiwicmVuZGVyQ2hhcnQiLCJkaXYiLCJjbGFzc05hbWUiLCJzdHlsZSIsImhlaWdodCIsInJlZiIsIm9wdGlvbiJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(pages-dir-node)/./src/components/lib/HDTDChart.js\n"); /***/ }), /***/ "(pages-dir-node)/./src/components/lib/Keyboard.js": /*!****************************************!*\ !*** ./src/components/lib/Keyboard.js ***! \****************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; eval("__webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ Keyboard)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"react/jsx-dev-runtime\");\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 */ \"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _store_deviceStore__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/store/deviceStore */ \"(pages-dir-node)/./src/store/deviceStore.js\");\nvar __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_store_deviceStore__WEBPACK_IMPORTED_MODULE_2__]);\n_store_deviceStore__WEBPACK_IMPORTED_MODULE_2__ = (__webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__)[0];\n\n\n\nfunction Keyboard({ value, cursorPosition, onChange, onComplete }) {\n const [isUpperCase, setIsUpperCase] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n const [isSymbol, setIsSymbol] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n const { estmodel } = (0,_store_deviceStore__WEBPACK_IMPORTED_MODULE_2__[\"default\"])();\n const letterRows = [\n [\n '1',\n '2',\n '3',\n '4',\n '5',\n '6',\n '7',\n '8',\n '9',\n '0'\n ],\n [\n 'q',\n 'w',\n 'e',\n 'r',\n 't',\n 'y',\n 'u',\n 'i',\n 'o',\n 'p'\n ],\n [\n 'a',\n 's',\n 'd',\n 'f',\n 'g',\n 'h',\n 'j',\n 'k',\n 'l'\n ],\n [\n 'z',\n 'x',\n 'c',\n 'v',\n 'b',\n 'n',\n 'm'\n ]\n ];\n const symbolRows = [\n [\n '1',\n '2',\n '3',\n '4',\n '5',\n '6',\n '7',\n '8',\n '9',\n '0'\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 '/',\n '\\\\',\n ':',\n ';',\n '\"',\n '\\'',\n ',',\n '.',\n '?'\n ]\n ];\n const rows = isSymbol ? symbolRows : letterRows;\n const handleKeyClick = (key)=>{\n const newValue = value.slice(0, cursorPosition) + (isUpperCase ? key.toUpperCase() : key) + value.slice(cursorPosition);\n onChange(newValue, cursorPosition + 1);\n };\n const handleBackspace = ()=>{\n if (cursorPosition > 0) {\n const newValue = value.slice(0, cursorPosition - 1) + value.slice(cursorPosition);\n onChange(newValue, cursorPosition - 1);\n }\n };\n const handleSpace = ()=>{\n const newValue = value.slice(0, cursorPosition) + ' ' + value.slice(cursorPosition);\n onChange(newValue, cursorPosition + 1);\n };\n const toggleCase = ()=>{\n setIsUpperCase(!isUpperCase);\n };\n const toggleSymbol = ()=>{\n setIsSymbol(!isSymbol);\n setIsUpperCase(false);\n };\n const shiftActive = estmodel === 'general' ? 'from-[#b6dae7] to-[#65dfff]' : 'from-[#f8c828] to-[#bc8c1c]';\n const shiftInactive = estmodel === 'general' ? 'from-[#e2e2e2] to-[#c5c5c5]' : 'from-[#656565] to-[#313431]';\n const symbolInactive = estmodel === 'general' ? 'from-[#e2e2e2] to-[#c5c5c5]' : 'from-[#656565] to-[#313431]';\n const textColor = estmodel === 'general' ? 'text-black' : 'text-white';\n const shiftButtonClass = [\n 'w-11 h-10',\n 'bg-gradient-to-b',\n isUpperCase ? shiftActive : shiftInactive,\n 'rounded-sm',\n 'flex items-center justify-center',\n `${textColor} font-bold`\n ].join(' ');\n const symbolButtonClass = [\n 'w-11 h-10',\n 'bg-gradient-to-b',\n isSymbol ? shiftActive : symbolInactive,\n 'rounded-sm',\n 'flex items-center justify-center',\n `${textColor} text-sm`\n ].join(' ');\n return estmodel === 'general' ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bottom-0 left-0 w-full h-[full] bg-[#D5DFEB] p-4 flex flex-col z-50\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full h-full p-2 space-y-1\",\n children: [\n rows.map((row, rowIndex)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex justify-center gap-1\",\n children: [\n rowIndex === 3 && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n className: shiftButtonClass,\n onClick: toggleCase,\n children: \"⇧\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/Keyboard.js\",\n lineNumber: 89,\n columnNumber: 29\n }, this),\n row.map((key)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n className: \"w-11 h-10 bg-gradient-to-b from-[#e2e2e2] to-[#c5c5c5] rounded-sm flex items-center justify-center text-black\",\n onClick: ()=>handleKeyClick(key),\n children: isUpperCase ? key.toUpperCase() : key\n }, key, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/Keyboard.js\",\n lineNumber: 97,\n columnNumber: 29\n }, this)),\n rowIndex === 3 && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n className: \"w-11 h-10 bg-gradient-to-b from-[#e2e2e2] to-[#c5c5c5] rounded-sm flex items-center justify-center text-black font-bold\",\n onClick: handleBackspace,\n children: \"←\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/Keyboard.js\",\n lineNumber: 106,\n columnNumber: 29\n }, this)\n ]\n }, rowIndex, true, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/Keyboard.js\",\n lineNumber: 87,\n columnNumber: 21\n }, this)),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex justify-center gap-1\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n className: symbolButtonClass,\n onClick: toggleSymbol,\n children: isSymbol ? 'ABC' : '?123'\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/Keyboard.js\",\n lineNumber: 116,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n className: \"flex-1 h-10 bg-gradient-to-b from-[#e2e2e2] to-[#c5c5c5] rounded-sm flex items-center justify-center text-black\",\n onClick: handleSpace,\n children: \"空格\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/Keyboard.js\",\n lineNumber: 122,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n className: \"w-16 h-10 bg-gradient-to-b from-[#b6dae7] to-[#65dfff] rounded-sm flex items-center justify-center text-black font-bold\",\n onClick: onComplete,\n children: \"确定\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/Keyboard.js\",\n lineNumber: 128,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/Keyboard.js\",\n lineNumber: 115,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/Keyboard.js\",\n lineNumber: 85,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/Keyboard.js\",\n lineNumber: 77,\n columnNumber: 13\n }, this) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bottom-0 left-0 w-full h-[full] bg-[#303040] p-4 flex flex-col z-50\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full h-full p-2 space-y-1\",\n children: [\n rows.map((row, rowIndex)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex justify-center gap-1\",\n children: [\n rowIndex === 3 && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n className: shiftButtonClass,\n onClick: toggleCase,\n children: \"⇧\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/Keyboard.js\",\n lineNumber: 150,\n columnNumber: 29\n }, this),\n row.map((key)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n className: \"w-11 h-10 bg-gradient-to-b from-[#656565] to-[#313431] rounded-sm flex items-center justify-center text-white\",\n onClick: ()=>handleKeyClick(key),\n children: isUpperCase ? key.toUpperCase() : key\n }, key, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/Keyboard.js\",\n lineNumber: 158,\n columnNumber: 29\n }, this)),\n rowIndex === 3 && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n className: \"w-11 h-10 bg-gradient-to-b from-[#656565] to-[#313431] rounded-sm flex items-center justify-center text-white font-bold\",\n onClick: handleBackspace,\n children: \"←\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/Keyboard.js\",\n lineNumber: 167,\n columnNumber: 29\n }, this)\n ]\n }, rowIndex, true, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/Keyboard.js\",\n lineNumber: 148,\n columnNumber: 21\n }, this)),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex justify-center gap-1\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n className: symbolButtonClass,\n onClick: toggleSymbol,\n children: isSymbol ? 'ABC' : '?123'\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/Keyboard.js\",\n lineNumber: 177,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n className: \"flex-1 h-10 bg-gradient-to-b from-[#656565] to-[#313431] rounded-sm flex items-center justify-center text-white\",\n onClick: handleSpace,\n children: \"空格\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/Keyboard.js\",\n lineNumber: 183,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n className: \"w-16 h-10 bg-gradient-to-b from-[#f8c828] to-[#bc8c1c] rounded-sm flex items-center justify-center text-white font-bold\",\n onClick: onComplete,\n children: \"确定\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/Keyboard.js\",\n lineNumber: 189,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/Keyboard.js\",\n lineNumber: 176,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/Keyboard.js\",\n lineNumber: 146,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/Keyboard.js\",\n lineNumber: 138,\n columnNumber: 13\n }, this);\n}\n\n__webpack_async_result__();\n} catch(e) { __webpack_async_result__(e); } });//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHBhZ2VzLWRpci1ub2RlKS8uL3NyYy9jb21wb25lbnRzL2xpYi9LZXlib2FyZC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBQXdDO0FBQ1M7QUFFbEMsU0FBU0csU0FBUyxFQUFFQyxLQUFLLEVBQUVDLGNBQWMsRUFBRUMsUUFBUSxFQUFFQyxVQUFVLEVBQUU7SUFDNUUsTUFBTSxDQUFDQyxhQUFhQyxlQUFlLEdBQUdSLCtDQUFRQSxDQUFDO0lBQy9DLE1BQU0sQ0FBQ1MsVUFBVUMsWUFBWSxHQUFHViwrQ0FBUUEsQ0FBQztJQUN6QyxNQUFNLEVBQUVXLFFBQVEsRUFBRSxHQUFHViw4REFBY0E7SUFFbkMsTUFBTVcsYUFBYTtRQUNmO1lBQUM7WUFBSztZQUFLO1lBQUs7WUFBSztZQUFLO1lBQUs7WUFBSztZQUFLO1lBQUs7U0FBSTtRQUNsRDtZQUFDO1lBQUs7WUFBSztZQUFLO1lBQUs7WUFBSztZQUFLO1lBQUs7WUFBSztZQUFLO1NBQUk7UUFDbEQ7WUFBQztZQUFLO1lBQUs7WUFBSztZQUFLO1lBQUs7WUFBSztZQUFLO1lBQUs7U0FBSTtRQUM3QztZQUFDO1lBQUs7WUFBSztZQUFLO1lBQUs7WUFBSztZQUFLO1NBQUk7S0FDdEM7SUFFRCxNQUFNQyxhQUFhO1FBQ2Y7WUFBQztZQUFLO1lBQUs7WUFBSztZQUFLO1lBQUs7WUFBSztZQUFLO1lBQUs7WUFBSztTQUFJO1FBQ2xEO1lBQUM7WUFBSztZQUFLO1lBQUs7WUFBSztZQUFLO1lBQUs7WUFBSztZQUFLO1lBQUs7U0FBSTtRQUNsRDtZQUFDO1lBQUs7WUFBSztZQUFLO1lBQUs7WUFBSztZQUFLO1lBQUs7WUFBSztTQUFJO1FBQzdDO1lBQUM7WUFBSztZQUFNO1lBQUs7WUFBSztZQUFLO1lBQU07WUFBSztZQUFLO1NBQUk7S0FDbEQ7SUFFRCxNQUFNQyxPQUFPTCxXQUFXSSxhQUFhRDtJQUVyQyxNQUFNRyxpQkFBaUIsQ0FBQ0M7UUFDcEIsTUFBTUMsV0FBV2QsTUFBTWUsS0FBSyxDQUFDLEdBQUdk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OEJBNEJkLDhEQUFDSjtvQkFBSUMsV0FBVTs7c0NBQ1gsOERBQUNJOzRCQUNHSixXQUFXRjs0QkFDWE8sU0FBU2Q7c0NBRVJkLFdBQVcsUUFBUTs7Ozs7O3NDQUV4Qiw4REFBQzJCOzRCQUNHSixXQUFVOzRCQUNWSyxTQUFTaEI7c0NBQ1o7Ozs7OztzQ0FHRCw4REFBQ2U7NEJBQ0dKLFdBQVU7NEJBQ1ZLLFNBQVMvQjtzQ0FDWjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFRckIiLCJzb3VyY2VzIjpbIi9vcHQvZGV2L2VzdC1kc3gvc3JjL2NvbXBvbmVudHMvbGliL0tleWJvYXJkLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcclxuaW1wb3J0IHVzZURldmljZVN0b3JlIGZyb20gJ0Avc3RvcmUvZGV2aWNlU3RvcmUnO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gS2V5Ym9hcmQoeyB2YWx1ZSwgY3Vyc29yUG9zaXRpb24sIG9uQ2hhbmdlLCBvbkNvbXBsZXRlIH0pIHtcclxuICAgIGNvbnN0IFtpc1VwcGVyQ2FzZSwgc2V0SXNVcHBlckNhc2VdID0gdXNlU3RhdGUoZmFsc2UpO1xyXG4gICAgY29uc3QgW2lzU3ltYm9sLCBzZXRJc1N5bWJvbF0gPSB1c2VTdGF0ZShmYWxzZSk7XHJcbiAgICBjb25zdCB7IGVzdG1vZGVsIH0gPSB1c2VEZXZpY2VTdG9yZSgpO1xyXG5cclxuICAgIGNvbnN0IGxldHRlclJvd3MgPSBbXHJcbiAgICAgICAgWycxJywgJzInLCAnMycsICc0JywgJzUnLCAnNicsICc3JywgJzgnLCAnOScsICcwJ10sXHJcbiAgICAgICAgWydxJywgJ3cnLCAnZScsICdyJywgJ3QnLCAneScsICd1JywgJ2knLCAnbycsICdwJ10sXHJcbiAgICAgICAgWydhJywgJ3MnLCAnZCcsICdmJywgJ2cnLCAnaCcsICdqJywgJ2snLCAnbCddLFxyXG4gICAgICAgIFsneicsICd4JywgJ2MnLCAndicsICdiJywgJ24nLCAnbSddXHJcbiAgICBdO1xyXG5cclxuICAgIGNvbnN0IHN5bWJvbFJvd3MgPSBbXHJcbiAgICAgICAgWycxJywgJzInLCAnMycsICc0JywgJzUnLCAnNicsICc3JywgJzgnLCAnOScsICcwJ10sXHJcbiAgICAgICAgWychJywgJ0AnLCAnIycsICckJywgJyUnLCAnXicsICcmJywgJyonLCAnKCcsICcpJ10sXHJcbiAgICAgICAgWyctJywgJ18nLCAnKycsICc9JywgJ1snLCAnXScsICd7JywgJ30nLCAnfCddLFxyXG4gICAgICAgIFsnLycsICdcXFxcJywgJzonLCAnOycsICdcIicsICdcXCcnLCAnLCcsICcuJywgJz8nXVxyXG4gICAgXTtcclxuXHJcbiAgICBjb25zdCByb3dzID0gaXNTeW1ib2wgPyBzeW1ib2xSb3dzIDogbGV0dGVyUm93cztcclxuXHJcbiAgICBjb25zdCBoYW5kbGVLZXlDbGljayA9IChrZXkpID0+IHtcclxuICAgICAgICBjb25zdCBuZXdWYWx1ZSA9IHZhbHVlLnNsaWNlKDAsIGN1cnNvclBvc2l0aW9uKSArIChpc1VwcGVyQ2FzZSA/IGtleS50b1VwcGVyQ2FzZSgpIDoga2V5KSArIHZhbHVlLnNsaWNlKGN1cnNvclBvc2l0aW9uKTtcclxuICAgICAgICBvbkNoYW5nZShuZXdWYWx1ZSwgY3Vyc29yUG9zaXRpb24gKyAxKTtcclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgaGFuZGxlQmFja3NwYWNlID0gKCkgPT4ge1xyXG4gICAgICAgIGlmIChjdXJzb3JQb3NpdGlvbiA+IDApIHtcclxuICAgICAgICAgICAgY29uc3QgbmV3VmFsdWUgPSB2YWx1ZS5zbGljZSgwLCBjdXJzb3JQb3NpdGlvbiAtIDEpICsgdmFsdWUuc2xpY2UoY3Vyc29yUG9zaXRpb24pO1xyXG4gICAgICAgICAgICBvbkNoYW5nZShuZXdWYWx1ZSwgY3Vyc29yUG9zaXRpb24gLSAxKTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IGhhbmRsZVNwYWNlID0gKCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IG5ld1ZhbHVlID0gdmFsdWUuc2xpY2UoMCwgY3Vyc29yUG9zaXRpb24pICsgJyAnICsgdmFsdWUuc2xpY2UoY3Vyc29yUG9zaXRpb24pO1xyXG4gICAgICAgIG9uQ2hhbmdlKG5ld1ZhbHVlLCBjdXJzb3JQb3NpdGlvbiArIDEpO1xyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCB0b2dnbGVDYXNlID0gKCkgPT4ge1xyXG4gICAgICAgIHNldElzVXBwZXJDYXNlKCFpc1VwcGVyQ2FzZSk7XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IHRvZ2dsZVN5bWJvbCA9ICgpID0+IHtcclxuICAgICAgICBzZXRJc1N5bWJvbCghaXNTeW1ib2wpO1xyXG4gICAgICAgIHNldElzVXBwZXJDYXNlKGZhbHNlKTtcclxuICAgIH07XHJcblxyXG4gICAgY29uc3Qgc2hpZnRBY3RpdmUgPSBlc3Rtb2RlbCA9PT0gJ2dlbmVyYWwnID8gJ2Zyb20tWyNiNmRhZTddIHRvLVsjNjVkZmZmXScgOiAnZnJvbS1bI2Y4YzgyOF0gdG8tWyNiYzhjMWNdJztcclxuICAgIGNvbnN0IHNoaWZ0SW5hY3RpdmUgPSBlc3Rtb2RlbCA9PT0gJ2dlbmVyYWwnID8gJ2Zyb20tWyNlMmUyZTJdIHRvLVsjYzVjNWM1XScgOiAnZnJvbS1bIzY1NjU2NV0gdG8tWyMzMTM0MzFdJztcclxuICAgIGNvbnN0IHN5bWJvbEluYWN0aXZlID0gZXN0bW9kZWwgPT09ICdnZW5lcmFsJyA/ICdmcm9tLVsjZTJlMmUyXSB0by1bI2M1YzVjNV0nIDogJ2Zyb20tWyM2NTY1NjVdIHRvLVsjMzEzNDMxXSc7XHJcbiAgICBjb25zdCB0ZXh0Q29sb3IgPSBlc3Rtb2RlbCA9PT0gJ2dlbmVyYWwnID8gJ3RleHQtYmxhY2snIDogJ3RleHQtd2hpdGUnO1xyXG5cclxuICAgIGNvbnN0IHNoaWZ0QnV0dG9uQ2xhc3MgPSBbXHJcbiAgICAgICAgJ3ctMTEgaC0xMCcsXHJcbiAgICAgICAgJ2JnLWdyYWRpZW50LXRvLWInLFxyXG4gICAgICAgIGlzVXBwZXJDYXNlID8gc2hpZnRBY3RpdmUgOiBzaGlmdEluYWN0aXZlLFxyXG4gICAgICAgICdyb3VuZGVkLXNtJyxcclxuICAgICAgICAnZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXInLFxyXG4gICAgICAgIGAke3RleHRDb2xvcn0gZm9udC1ib2xkYFxyXG4gICAgXS5qb2luKCcgJyk7XHJcblxyXG4gICAgY29uc3Qgc3ltYm9sQnV0dG9uQ2xhc3MgPSBbXHJcbiAgICAgICAgJ3ctMTEgaC0xMCcsXHJcbiAgICAgICAgJ2JnLWdyYWRpZW50LXRvLWInLFxyXG4gICAgICAgIGlzU3ltYm9sID8gc2hpZnRBY3RpdmUgOiBzeW1ib2xJbmFjdGl2ZSxcclxuICAgICAgICAncm91bmRlZC1zbScsXHJcbiAgICAgICAgJ2ZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyJyxcclxuICAgICAgICBgJHt0ZXh0Q29sb3J9IHRleHQtc21gXHJcbiAgICBdLmpvaW4oJyAnKTtcclxuXHJcbiAgICByZXR1cm4gKFxyXG4gICAgICAgIFxyXG4gICAgICAgIGVzdG1vZGVsID09PSAnZ2VuZXJhbCcgPyAoXHJcbiAgICAgICAgICAgIDxkaXYgIGNsYXNzTmFtZT0nYm90dG9tLTAgbGVmdC0wIHctZnVsbCBoLVtmdWxsXSBiZy1bI0Q1REZFQl0gcC00IGZsZXggZmxleC1jb2wgei01MCdcclxuICAgICAgICAgICAgLy8gc3R5bGU9e3sgXHJcbiAgICAgICAgICAgIC8vICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcclxuICAgICAgICAgICAgLy8gICAgIGJvdHRvbTogJzBweCcsXHJcbiAgICAgICAgICAgIC8vICAgICB3aWR0aDogJzEwMCUnLFxyXG4gICAgICAgICAgICAvLyAgICAgekluZGV4OiA1MCxcclxuICAgICAgICAgICAgLy8gfX1cclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctZnVsbCBoLWZ1bGwgcC0yIHNwYWNlLXktMVwiPlxyXG4gICAgICAgICAgICAgICAge3Jvd3MubWFwKChyb3csIHJvd0luZGV4KSA9PiAoXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBrZXk9e3Jvd0luZGV4fSBjbGFzc05hbWU9XCJmbGV4IGp1c3RpZnktY2VudGVyIGdhcC0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHtyb3dJbmRleCA9PT0gMyAmJiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtzaGlmdEJ1dHRvbkNsYXNzfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e3RvZ2dsZUNhc2V9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg4oenXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAge3Jvdy5tYXAoKGtleSkgPT4gKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17a2V5fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInctMTEgaC0xMCBiZy1ncmFkaWVudC10by1iIGZyb20tWyNlMmUyZTJdIHRvLVsjYzVjNWM1XSByb3VuZGVkLXNtIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHRleHQtYmxhY2tcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IGhhbmRsZUtleUNsaWNrKGtleSl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2lzVXBwZXJDYXNlID8ga2V5LnRvVXBwZXJDYXNlKCkgOiBrZXl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgKSl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHtyb3dJbmRleCA9PT0gMyAmJiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidy0xMSBoLTEwIGJnLWdyYWRpZW50LXRvLWIgZnJvbS1bI2UyZTJlMl0gdG8tWyNjNWM1YzVdIHJvdW5kZWQtc20gZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgdGV4dC1ibGFjayBmb250LWJvbGRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2hhbmRsZUJhY2tzcGFjZX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDihpBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgKSl9XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXgganVzdGlmeS1jZW50ZXIgZ2FwLTFcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17c3ltYm9sQnV0dG9uQ2xhc3N9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e3RvZ2dsZVN5bWJvbH1cclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHtpc1N5bWJvbCA/ICdBQkMnIDogJz8xMjMnfVxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiZmxleC0xIGgtMTAgYmctZ3JhZGllbnQtdG8tYiBmcm9tLVsjZTJlMmUyXSB0by1bI2M1YzVjNV0gcm91bmRlZC1zbSBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciB0ZXh0LWJsYWNrXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17aGFuZGxlU3BhY2V9XHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICDnqbrmoLxcclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInctMTYgaC0xMCBiZy1ncmFkaWVudC10by1iIGZyb20tWyNiNmRhZTddIHRvLVsjNjVkZmZmXSByb3VuZGVkLXNtIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHRleHQtYmxhY2sgZm9udC1ib2xkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17b25Db21wbGV0ZX1cclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIOehruWumlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICApOihcclxuICAgICAgICAgICAgPGRpdiAgY2xhc3NOYW1lPSdib3R0b20tMCBsZWZ0LTAgdy1mdWxsIGgtW2Z1bGxdIGJnLVsjMzAzMDQwXSBwLTQgZmxleCBmbGV4LWNvbCB6LTUwJ1xyXG4gICAgICAgICAgICAvLyBzdHlsZT17eyBcclxuICAgICAgICAgICAgLy8gICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxyXG4gICAgICAgICAgICAvLyAgICAgYm90dG9tOiAnMHB4JyxcclxuICAgICAgICAgICAgLy8gICAgIHdpZHRoOiAnMTAwJScsXHJcbiAgICAgICAgICAgIC8vICAgICB6SW5kZXg6IDUwLFxyXG4gICAgICAgICAgICAvLyB9fVxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy1mdWxsIGgtZnVsbCBwLTIgc3BhY2UteS0xXCI+XHJcbiAgICAgICAgICAgICAgICB7cm93cy5tYXAoKHJvdywgcm93SW5kZXgpID0+IChcclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGtleT17cm93SW5kZXh9IGNsYXNzTmFtZT1cImZsZXgganVzdGlmeS1jZW50ZXIgZ2FwLTFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3Jvd0luZGV4ID09PSAzICYmIChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e3NoaWZ0QnV0dG9uQ2xhc3N9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17dG9nZ2xlQ2FzZX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDih6dcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7cm93Lm1hcCgoa2V5KSA9PiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtrZXl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidy0xMSBoLTEwIGJnLWdyYWRpZW50LXRvLWIgZnJvbS1bIzY1NjU2NV0gdG8tWyMzMTM0MzFdIHJvdW5kZWQtc20gZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgdGV4dC13aGl0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gaGFuZGxlS2V5Q2xpY2soa2V5KX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7aXNVcHBlckNhc2UgPyBrZXkudG9VcHBlckNhc2UoKSA6IGtleX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICApKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAge3Jvd0luZGV4ID09PSAzICYmIChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ3LTExIGgtMTAgYmctZ3JhZGllbnQtdG8tYiBmcm9tLVsjNjU2NTY1XSB0by1bIzMxMzQzMV0gcm91bmRlZC1zbSBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciB0ZXh0LXdoaXRlIGZvbnQtYm9sZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17aGFuZGxlQmFja3NwYWNlfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIOKGkFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICApKX1cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBqdXN0aWZ5LWNlbnRlciBnYXAtMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtzeW1ib2xCdXR0b25DbGFzc31cclxuICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17dG9nZ2xlU3ltYm9sfVxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAge2lzU3ltYm9sID8gJ0FCQycgOiAnPzEyMyd9XHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJmbGV4LTEgaC0xMCBiZy1ncmFkaWVudC10by1iIGZyb20tWyM2NTY1NjVdIHRvLVsjMzEzNDMxXSByb3VuZGVkLXNtIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHRleHQtd2hpdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXtoYW5kbGVTcGFjZX1cclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIOepuuagvFxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidy0xNiBoLTEwIGJnLWdyYWRpZW50LXRvLWIgZnJvbS1bI2Y4YzgyOF0gdG8tWyNiYzhjMWNdIHJvdW5kZWQtc20gZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgdGV4dC13aGl0ZSBmb250LWJvbGRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXtvbkNvbXBsZXRlfVxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAg56Gu5a6aXHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIClcclxuICAgICk7XHJcbn0iXSwibmFtZXMiOlsiUmVhY3QiLCJ1c2VTdGF0ZSIsInVzZURldmljZVN0b3JlIiwiS2V5Ym9hcmQiLCJ2YWx1ZSIsImN1cnNvclBvc2l0aW9uIiwib25DaGFuZ2UiLCJvbkNvbXBsZXRlIiwiaXNVcHBlckNhc2UiLCJzZXRJc1VwcGVyQ2FzZSIsImlzU3ltYm9sIiwic2V0SXNTeW1ib2wiLCJlc3Rtb2RlbCIsImxldHRlclJvd3MiLCJzeW1ib2xSb3dzIiwicm93cyIsImhhbmRsZUtleUNsaWNrIiwia2V5IiwibmV3VmFsdWUiLCJzbGljZSIsInRvVXBwZXJDYXNlIiwiaGFuZGxlQmFja3NwYWNlIiwiaGFuZGxlU3BhY2UiLCJ0b2dnbGVDYXNlIiwidG9nZ2xlU3ltYm9sIiwic2hpZnRBY3RpdmUiLCJzaGlmdEluYWN0aXZlIiwic3ltYm9sSW5hY3RpdmUiLCJ0ZXh0Q29sb3IiLCJzaGlmdEJ1dHRvbkNsYXNzIiwiam9pbiIsInN5bWJvbEJ1dHRvbkNsYXNzIiwiZGl2IiwiY2xhc3NOYW1lIiwibWFwIiwicm93Iiwicm93SW5kZXgiLCJidXR0b24iLCJvbkNsaWNrIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(pages-dir-node)/./src/components/lib/Keyboard.js\n"); /***/ }), /***/ "(pages-dir-node)/./src/components/lib/OLTSResultMain.js": /*!**********************************************!*\ !*** ./src/components/lib/OLTSResultMain.js ***! \**********************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; eval("__webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ OLTSResultMain)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"react/jsx-dev-runtime\");\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 */ \"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _store_displayStore__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/store/displayStore */ \"(pages-dir-node)/./src/store/displayStore.js\");\n/* harmony import */ var _utils_asset__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/utils/asset */ \"(pages-dir-node)/./src/utils/asset.js\");\nvar __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_store_displayStore__WEBPACK_IMPORTED_MODULE_2__, _utils_asset__WEBPACK_IMPORTED_MODULE_3__]);\n([_store_displayStore__WEBPACK_IMPORTED_MODULE_2__, _utils_asset__WEBPACK_IMPORTED_MODULE_3__] = __webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__);\n\n\n\n\nfunction OLTSResultMain({ testResult }) {\n const { getCurrentTestConfig } = _store_displayStore__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getState();\n const { view } = _store_displayStore__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getState().navigation.current;\n const currentConfig = getCurrentTestConfig();\n const cableType = currentConfig.params.cableType;\n const isMultiMode = cableType.includes('OM');\n // 根据光纤类型和测试结果选择背景图片\n const getBackgroundImage = ()=>{\n const prefix = isMultiMode ? '/olts-mm-' : '/olts-sm-';\n const { InPortStatus, OutPortStatus } = testResult;\n // 两个端口都通过\n if (InPortStatus === 'pass' && OutPortStatus === 'pass') {\n return prefix + 'pass.png';\n }\n // 根据光纤类型判断返回的图片\n if (isMultiMode) {\n // 多模光纤 - 保持原有逻辑\n if (InPortStatus === 'fail' && OutPortStatus === 'pass') {\n return prefix + 'fail-outpass.png';\n }\n if (InPortStatus === 'pass' && OutPortStatus === 'fail') {\n return prefix + 'fail-inpass.png';\n }\n } else {\n // 单模光纤 - 交换图片逻辑\n if (InPortStatus === 'fail' && OutPortStatus === 'pass') {\n return prefix + 'fail-inpass.png';\n }\n if (InPortStatus === 'pass' && OutPortStatus === 'fail') {\n return prefix + 'fail-outpass.png';\n }\n }\n // 两个端口都失败\n return prefix + 'fail.png';\n };\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full h-[490px] flex flex-col overflow-hidden\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full h-full relative\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute inset-0 bg-cover bg-center bg-no-repeat\",\n style: {\n backgroundImage: `url(${(0,_utils_asset__WEBPACK_IMPORTED_MODULE_3__.getAssetUrl)(getBackgroundImage())})`\n }\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/OLTSResultMain.js\",\n lineNumber: 50,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute inset-0 flex items-center justify-center pl-66 pb-24\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-col gap-6 \",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-gradient-to-b w-48 from-[#e6e3e6] to-[#7b797b] p-2 rounded-lg\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-col gap-0\",\n children: [\n view !== 'nosave' ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black pb-3 font-bold whitespace-nowrap overflow-hidden text-ellipsis\",\n children: testResult.inputname\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/OLTSResultMain.js\",\n lineNumber: 63,\n columnNumber: 37\n }, this) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black pb-3 font-bold\",\n children: \"未保存的结果\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/OLTSResultMain.js\",\n lineNumber: 65,\n columnNumber: 37\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center\",\n children: [\n testResult.isLossValidOut ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"img\", {\n src: (0,_utils_asset__WEBPACK_IMPORTED_MODULE_3__.getAssetUrl)('/pass.png'),\n alt: \"Pass\",\n className: \"w-6 h-6\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/OLTSResultMain.js\",\n lineNumber: 68,\n columnNumber: 63\n }, this) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"img\", {\n src: (0,_utils_asset__WEBPACK_IMPORTED_MODULE_3__.getAssetUrl)('/fail.png'),\n alt: \"Fail\",\n className: \"w-6 h-6\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/OLTSResultMain.js\",\n lineNumber: 70,\n columnNumber: 37\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black font-bold ml-2\",\n children: \"损耗:\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/OLTSResultMain.js\",\n lineNumber: 72,\n columnNumber: 37\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black ml-auto\",\n children: [\n testResult.CFPMainOut.wavelength1.loss,\n \"dB\"\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/OLTSResultMain.js\",\n lineNumber: 73,\n columnNumber: 37\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/OLTSResultMain.js\",\n lineNumber: 67,\n columnNumber: 33\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center\",\n children: [\n testResult.isLengthValidOut ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"img\", {\n src: (0,_utils_asset__WEBPACK_IMPORTED_MODULE_3__.getAssetUrl)('/pass.png'),\n alt: \"Pass\",\n className: \"w-6 h-6\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/OLTSResultMain.js\",\n lineNumber: 78,\n columnNumber: 65\n }, this) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"img\", {\n src: (0,_utils_asset__WEBPACK_IMPORTED_MODULE_3__.getAssetUrl)('/fail.png'),\n alt: \"Fail\",\n className: \"w-6 h-6\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/OLTSResultMain.js\",\n lineNumber: 80,\n columnNumber: 37\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black font-bold ml-2\",\n children: \"长度:\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/OLTSResultMain.js\",\n lineNumber: 82,\n columnNumber: 37\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black ml-auto\",\n children: [\n testResult.CFPMainOut.wavelength1.distance,\n \"m\"\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/OLTSResultMain.js\",\n lineNumber: 83,\n columnNumber: 37\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/OLTSResultMain.js\",\n lineNumber: 77,\n columnNumber: 33\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/OLTSResultMain.js\",\n lineNumber: 60,\n columnNumber: 29\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/OLTSResultMain.js\",\n lineNumber: 59,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-gradient-to-b w-48 from-[#e6e3e6] to-[#7b797b] p-2 rounded-lg\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-col gap-0\",\n children: [\n view !== 'nosave' ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black pb-3 font-bold whitespace-nowrap overflow-hidden text-ellipsis\",\n children: testResult.outname\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/OLTSResultMain.js\",\n lineNumber: 93,\n columnNumber: 37\n }, this) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black pb-3 font-bold\",\n children: \"未保存的结果\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/OLTSResultMain.js\",\n lineNumber: 95,\n columnNumber: 37\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center\",\n children: [\n testResult.isLossValidIn ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"img\", {\n src: (0,_utils_asset__WEBPACK_IMPORTED_MODULE_3__.getAssetUrl)('/pass.png'),\n alt: \"Pass\",\n className: \"w-6 h-6\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/OLTSResultMain.js\",\n lineNumber: 98,\n columnNumber: 62\n }, this) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"img\", {\n src: (0,_utils_asset__WEBPACK_IMPORTED_MODULE_3__.getAssetUrl)('/fail.png'),\n alt: \"Fail\",\n className: \"w-6 h-6\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/OLTSResultMain.js\",\n lineNumber: 100,\n columnNumber: 37\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black font-bold ml-2\",\n children: \"损耗:\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/OLTSResultMain.js\",\n lineNumber: 102,\n columnNumber: 37\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black ml-auto\",\n children: [\n testResult.CFPMainIn.wavelength1.loss,\n \"dB\"\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/OLTSResultMain.js\",\n lineNumber: 103,\n columnNumber: 37\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/OLTSResultMain.js\",\n lineNumber: 97,\n columnNumber: 33\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center\",\n children: [\n testResult.isLengthValidIn ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"img\", {\n src: (0,_utils_asset__WEBPACK_IMPORTED_MODULE_3__.getAssetUrl)('/pass.png'),\n alt: \"Pass\",\n className: \"w-6 h-6\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/OLTSResultMain.js\",\n lineNumber: 108,\n columnNumber: 64\n }, this) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"img\", {\n src: (0,_utils_asset__WEBPACK_IMPORTED_MODULE_3__.getAssetUrl)('/fail.png'),\n alt: \"Fail\",\n className: \"w-6 h-6\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/OLTSResultMain.js\",\n lineNumber: 110,\n columnNumber: 37\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black font-bold ml-2\",\n children: \"长度:\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/OLTSResultMain.js\",\n lineNumber: 112,\n columnNumber: 37\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black ml-auto\",\n children: [\n testResult.CFPMainIn.wavelength1.distance,\n \"m\"\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/OLTSResultMain.js\",\n lineNumber: 113,\n columnNumber: 37\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/OLTSResultMain.js\",\n lineNumber: 107,\n columnNumber: 33\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/OLTSResultMain.js\",\n lineNumber: 90,\n columnNumber: 29\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/OLTSResultMain.js\",\n lineNumber: 89,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/OLTSResultMain.js\",\n lineNumber: 57,\n columnNumber: 21\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/OLTSResultMain.js\",\n lineNumber: 56,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/OLTSResultMain.js\",\n lineNumber: 49,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/OLTSResultMain.js\",\n lineNumber: 47,\n columnNumber: 9\n }, this);\n}\n\n__webpack_async_result__();\n} catch(e) { __webpack_async_result__(e); } });//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHBhZ2VzLWRpci1ub2RlKS8uL3NyYy9jb21wb25lbnRzL2xpYi9PTFRTUmVzdWx0TWFpbi5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztBQUEwQjtBQUN5QjtBQUNQO0FBRTdCLFNBQVNHLGVBQWUsRUFBRUMsVUFBVSxFQUFFO0lBQ2pELE1BQU0sRUFBRUMsb0JBQW9CLEVBQUUsR0FBR0osb0VBQXdCO0lBQ3pELE1BQU0sRUFBRU0sSUFBSSxFQUFFLEdBQUdOLG9FQUF3QixHQUFHTyxVQUFVLENBQUNDLE9BQU87SUFDOUQsTUFBTUMsZ0JBQWdCTDtJQUN0QixNQUFNTSxZQUFZRCxjQUFjRSxNQUFNLENBQUNELFNBQVM7SUFDaEQsTUFBTUUsY0FBY0YsVUFBVUcsUUFBUSxDQUFDO0lBQ3ZDLG9CQUFvQjtJQUNwQixNQUFNQyxxQkFBcUI7UUFDdkIsTUFBTUMsU0FBU0gsY0FBYyxjQUFjO1FBQzNDLE1BQU0sRUFBRUksWUFBWSxFQUFFQyxhQUFhLEVBQUUsR0FBR2Q7UUFFeEMsVUFBVTtRQUNWLElBQUlhLGlCQUFpQixVQUFVQyxrQkFBa0IsUUFBUTtZQUNyRCxPQUFPRixTQUFTO1FBQ3BCO1FBRUEsZ0JBQWdCO1FBQ2hCLElBQUlILGFBQWE7WUFDYixnQkFBZ0I7WUFDaEIsSUFBSUksaUJBQWlCLFVBQVVDLGtCQUFrQixRQUFRO2dCQUNyRCxPQUFPRixTQUFTO1lBQ3BCO1lBRUEsSUFBSUMsaUJBQWlCLFVBQVVDLGtCQUFrQixRQUFRO2dCQUNyRCxPQUFPRixTQUFTO1lBQ3BCO1FBQ0osT0FBTztZQUNILGdCQUFnQjtZQUNoQixJQUFJQyxpQkFBaUIsVUFBVUMsa0JBQWtCLFFBQVE7Z0JBQ3JELE9BQU9GLFNBQVM7WUFDcEI7WUFFQSxJQUFJQyxpQkFBaUIsVUFBVUMsa0JBQWtCLFFBQVE7Z0JBQ3JELE9BQU9GLFNBQVM7WUFDcEI7UUFDSjtRQUVBLFVBQVU7UUFDVixPQUFPQSxTQUFTO0lBQ3BCO0lBRUEscUJBQ0ksOERBQUNHO1FBQUlDLFdBQVU7a0JB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ZGV2L2VzdC1kc3gvc3JjL2NvbXBvbmVudHMvbGliL09MVFNSZXN1bHRNYWluLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgdXNlRGlzcGxheVN0b3JlIGZyb20gJ0Avc3RvcmUvZGlzcGxheVN0b3JlJztcbmltcG9ydCB7IGdldEFzc2V0VXJsIH0gZnJvbSAnQC91dGlscy9hc3NldCc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIE9MVFNSZXN1bHRNYWluKHsgdGVzdFJlc3VsdCB9KSB7XG4gICAgY29uc3QgeyBnZXRDdXJyZW50VGVzdENvbmZpZyB9ID0gdXNlRGlzcGxheVN0b3JlLmdldFN0YXRlKCk7XG4gICAgY29uc3QgeyB2aWV3IH0gPSB1c2VEaXNwbGF5U3RvcmUuZ2V0U3RhdGUoKS5uYXZpZ2F0aW9uLmN1cnJlbnQ7XG4gICAgY29uc3QgY3VycmVudENvbmZpZyA9IGdldEN1cnJlbnRUZXN0Q29uZmlnKCk7XG4gICAgY29uc3QgY2FibGVUeXBlID0gY3VycmVudENvbmZpZy5wYXJhbXMuY2FibGVUeXBlO1xuICAgIGNvbnN0IGlzTXVsdGlNb2RlID0gY2FibGVUeXBlLmluY2x1ZGVzKCdPTScpO1xuICAgIC8vIOagueaNruWFiee6pOexu+Wei+WSjOa1i+ivlee7k+aenOmAieaLqeiDjOaZr+WbvueJh1xuICAgIGNvbnN0IGdldEJhY2tncm91bmRJbWFnZSA9ICgpID0+IHtcbiAgICAgICAgY29uc3QgcHJlZml4ID0gaXNNdWx0aU1vZGUgPyAnL29sdHMtbW0tJyA6ICcvb2x0cy1zbS0nO1xuICAgICAgICBjb25zdCB7IEluUG9ydFN0YXR1cywgT3V0UG9ydFN0YXR1cyB9ID0gdGVzdFJlc3VsdDtcblxuICAgICAgICAvLyDkuKTkuKrnq6/lj6Ppg73pgJrov4dcbiAgICAgICAgaWYgKEluUG9ydFN0YXR1cyA9PT0gJ3Bhc3MnICYmIE91dFBvcnRTdGF0dXMgPT09ICdwYXNzJykge1xuICAgICAgICAgICAgcmV0dXJuIHByZWZpeCArICdwYXNzLnBuZyc7XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgIC8vIOagueaNruWFiee6pOexu+Wei+WIpOaWrei/lOWbnueahOWbvueJh1xuICAgICAgICBpZiAoaXNNdWx0aU1vZGUpIHtcbiAgICAgICAgICAgIC8vIOWkmuaooeWFiee6pCAtIOS/neaMgeWOn+aciemAu+i+kVxuICAgICAgICAgICAgaWYgKEluUG9ydFN0YXR1cyA9PT0gJ2ZhaWwnICYmIE91dFBvcnRTdGF0dXMgPT09ICdwYXNzJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBwcmVmaXggKyAnZmFpbC1vdXRwYXNzLnBuZyc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIGlmIChJblBvcnRTdGF0dXMgPT09ICdwYXNzJyAmJiBPdXRQb3J0U3RhdHVzID09PSAnZmFpbCcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcHJlZml4ICsgJ2ZhaWwtaW5wYXNzLnBuZyc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyDljZXmqKHlhYnnuqQgLSDkuqTmjaLlm77niYfpgLvovpFcbiAgICAgICAgICAgIGlmIChJblBvcnRTdGF0dXMgPT09ICdmYWlsJyAmJiBPdXRQb3J0U3RhdHVzID09PSAncGFzcycpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcHJlZml4ICsgJ2ZhaWwtaW5wYXNzLnBuZyc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIGlmIChJblBvcnRTdGF0dXMgPT09ICdwYXNzJyAmJiBPdXRQb3J0U3RhdHVzID09PSAnZmFpbCcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcHJlZml4ICsgJ2ZhaWwtb3V0cGFzcy5wbmcnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICAvLyDkuKTkuKrnq6/lj6Ppg73lpLHotKVcbiAgICAgICAgcmV0dXJuIHByZWZpeCArICdmYWlsLnBuZyc7XG4gICAgfTtcblxuICAgIHJldHVybiAoXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy1mdWxsIGgtWzQ5MHB4XSBmbGV4IGZsZXgtY29sIG92ZXJmbG93LWhpZGRlblwiPlxuICAgICAgICAgICAgey8qIOiDjOaZr+WbvueJh+WxgiAqL31cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy1mdWxsIGgtZnVsbCByZWxhdGl2ZVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImFic29sdXRlIGluc2V0LTAgYmctY292ZXIgYmctY2VudGVyIGJnLW5vLXJlcGVhdFwiXG4gICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7IGJhY2tncm91bmRJbWFnZTogYHVybCgke2dldEFzc2V0VXJsKGdldEJhY2tncm91bmRJbWFnZSgpKX0pYCB9fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgey8qIOaVsOaNruaYvuekuuWxgiAqL31cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImFic29sdXRlIGluc2V0LTAgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgcGwtNjYgcGItMjRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGZsZXgtY29sIGdhcC02IFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgey8qIOS4iuaWueaVsOaNruaYvuekuuahhiAqL31cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmctZ3JhZGllbnQtdG8tYiB3LTQ4IGZyb20tWyNlNmUzZTZdIHRvLVsjN2I3OTdiXSBwLTIgcm91bmRlZC1sZ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBmbGV4LWNvbCBnYXAtMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Lyog5o2f6ICX5pi+56S6ICovfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7dmlldyAhPT0gJ25vc2F2ZScgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtYmxhY2sgcGItMyBmb250LWJvbGQgd2hpdGVzcGFjZS1ub3dyYXAgb3ZlcmZsb3ctaGlkZGVuIHRleHQtZWxsaXBzaXNcIj57dGVzdFJlc3VsdC5pbnB1dG5hbWV9PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtYmxhY2sgcGItMyBmb250LWJvbGRcIj7mnKrkv53lrZjnmoTnu5Pmnpw8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7dGVzdFJlc3VsdC5pc0xvc3NWYWxpZE91dCA/ICg8aW1nIHNyYz17Z2V0QXNzZXRVcmwoJy9wYXNzLnBuZycpfSBhbHQ9XCJQYXNzXCIgY2xhc3NOYW1lPVwidy02IGgtNlwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz17Z2V0QXNzZXRVcmwoJy9mYWlsLnBuZycpfSBhbHQ9XCJGYWlsXCIgY2xhc3NOYW1lPVwidy02IGgtNlwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtYmxhY2sgZm9udC1ib2xkIG1sLTJcIj7mjZ/ogJc6PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtYmxhY2sgbWwtYXV0b1wiPnt0ZXN0UmVzdWx0LkNGUE1haW5PdXQud2F2ZWxlbmd0aDEubG9zc31kQjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsvKiDplb/luqbmmL7npLogKi99XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3Rlc3RSZXN1bHQuaXNMZW5ndGhWYWxpZE91dCA/ICg8aW1nIHNyYz17Z2V0QXNzZXRVcmwoJy9wYXNzLnBuZycpfSBhbHQ9XCJQYXNzXCIgY2xhc3NOYW1lPVwidy02IGgtNlwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz17Z2V0QXNzZXRVcmwoJy9mYWlsLnBuZycpfSBhbHQ9XCJGYWlsXCIgY2xhc3NOYW1lPVwidy02IGgtNlwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtYmxhY2sgZm9udC1ib2xkIG1sLTJcIj7plb/luqY6PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtYmxhY2sgbWwtYXV0b1wiPnt0ZXN0UmVzdWx0LkNGUE1haW5PdXQud2F2ZWxlbmd0aDEuZGlzdGFuY2V9bTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICB7Lyog5LiL5pa55pWw5o2u5pi+56S65qGGICovfVxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJiZy1ncmFkaWVudC10by1iICB3LTQ4IGZyb20tWyNlNmUzZTZdIHRvLVsjN2I3OTdiXSBwLTIgcm91bmRlZC1sZ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBmbGV4LWNvbCBnYXAtMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Lyog5o2f6ICX5pi+56S6ICovfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7dmlldyAhPT0gJ25vc2F2ZScgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtYmxhY2sgcGItMyBmb250LWJvbGQgd2hpdGVzcGFjZS1ub3dyYXAgb3ZlcmZsb3ctaGlkZGVuIHRleHQtZWxsaXBzaXNcIj57dGVzdFJlc3VsdC5vdXRuYW1lfTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LWJsYWNrIHBiLTMgZm9udC1ib2xkXCI+5pyq5L+d5a2Y55qE57uT5p6cPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3Rlc3RSZXN1bHQuaXNMb3NzVmFsaWRJbiA/ICg8aW1nIHNyYz17Z2V0QXNzZXRVcmwoJy9wYXNzLnBuZycpfSBhbHQ9XCJQYXNzXCIgY2xhc3NOYW1lPVwidy02IGgtNlwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz17Z2V0QXNzZXRVcmwoJy9mYWlsLnBuZycpfSBhbHQ9XCJGYWlsXCIgY2xhc3NOYW1lPVwidy02IGgtNlwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtYmxhY2sgZm9udC1ib2xkIG1sLTJcIj7mjZ/ogJc6PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtYmxhY2sgbWwtYXV0b1wiPnt0ZXN0UmVzdWx0LkNGUE1haW5Jbi53YXZlbGVuZ3RoMS5sb3NzfWRCPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgey8qIOmVv+W6puaYvuekuiAqL31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7dGVzdFJlc3VsdC5pc0xlbmd0aFZhbGlkSW4gPyAoPGltZyBzcmM9e2dldEFzc2V0VXJsKCcvcGFzcy5wbmcnKX0gYWx0PVwiUGFzc1wiIGNsYXNzTmFtZT1cInctNiBoLTZcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9e2dldEFzc2V0VXJsKCcvZmFpbC5wbmcnKX0gYWx0PVwiRmFpbFwiIGNsYXNzTmFtZT1cInctNiBoLTZcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LWJsYWNrIGZvbnQtYm9sZCBtbC0yXCI+6ZW/5bqmOjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LWJsYWNrIG1sLWF1dG9cIj57dGVzdFJlc3VsdC5DRlBNYWluSW4ud2F2ZWxlbmd0aDEuZGlzdGFuY2V9bTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICApO1xufSJdLCJuYW1lcyI6WyJSZWFjdCIsInVzZURpc3BsYXlTdG9yZSIsImdldEFzc2V0VXJsIiwiT0xUU1Jlc3VsdE1haW4iLCJ0ZXN0UmVzdWx0IiwiZ2V0Q3VycmVudFRlc3RDb25maWciLCJnZXRTdGF0ZSIsInZpZXciLCJuYXZpZ2F0aW9uIiwiY3VycmVudCIsImN1cnJlbnRDb25maWciLCJjYWJsZVR5cGUiLCJwYXJhbXMiLCJpc011bHRpTW9kZSIsImluY2x1ZGVzIiwiZ2V0QmFja2dyb3VuZEltYWdlIiwicHJlZml4IiwiSW5Qb3J0U3RhdHVzIiwiT3V0UG9ydFN0YXR1cyIsImRpdiIsImNsYXNzTmFtZSIsInN0eWxlIiwiYmFja2dyb3VuZEltYWdlIiwiaW5wdXRuYW1lIiwiaXNMb3NzVmFsaWRPdXQiLCJpbWciLCJzcmMiLCJhbHQiLCJDRlBNYWluT3V0Iiwid2F2ZWxlbmd0aDEiLCJsb3NzIiwiaXNMZW5ndGhWYWxpZE91dCIsImRpc3RhbmNlIiwib3V0bmFtZSIsImlzTG9zc1ZhbGlkSW4iLCJDRlBNYWluSW4iLCJpc0xlbmd0aFZhbGlkSW4iXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(pages-dir-node)/./src/components/lib/OLTSResultMain.js\n"); /***/ }), /***/ "(pages-dir-node)/./src/components/lib/OTDRResultMain.js": /*!**********************************************!*\ !*** ./src/components/lib/OTDRResultMain.js ***! \**********************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; eval("__webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ OTDRResultMain)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"react/jsx-dev-runtime\");\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 */ \"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _EventMapView__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./EventMapView */ \"(pages-dir-node)/./src/components/lib/EventMapView.js\");\n/* harmony import */ var _EventTable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./EventTable */ \"(pages-dir-node)/./src/components/lib/EventTable.js\");\n/* harmony import */ var _CurveChart__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./CurveChart */ \"(pages-dir-node)/./src/components/lib/CurveChart.js\");\n/* harmony import */ var _store_deviceStore__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/store/deviceStore */ \"(pages-dir-node)/./src/store/deviceStore.js\");\nvar __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_EventMapView__WEBPACK_IMPORTED_MODULE_2__, _EventTable__WEBPACK_IMPORTED_MODULE_3__, _CurveChart__WEBPACK_IMPORTED_MODULE_4__, _store_deviceStore__WEBPACK_IMPORTED_MODULE_5__]);\n([_EventMapView__WEBPACK_IMPORTED_MODULE_2__, _EventTable__WEBPACK_IMPORTED_MODULE_3__, _CurveChart__WEBPACK_IMPORTED_MODULE_4__, _store_deviceStore__WEBPACK_IMPORTED_MODULE_5__] = __webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__);\n\n\n\n\n\n\nfunction OTDRResultMain({ testResult }) {\n const [activeTab, setActiveTab] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)('EventMap');\n const tabs = [\n 'EventMap',\n '表',\n '曲线'\n ];\n const tempTestResult = testResult;\n const { estmodel } = (0,_store_deviceStore__WEBPACK_IMPORTED_MODULE_5__[\"default\"])();\n const renderContent = ()=>{\n switch(activeTab){\n case 'EventMap':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full h-full flex items-center justify-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_EventMapView__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n testResult: tempTestResult\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/OTDRResultMain.js\",\n lineNumber: 18,\n columnNumber: 30\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/OTDRResultMain.js\",\n lineNumber: 17,\n columnNumber: 21\n }, this);\n case '表':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full h-full flex items-center justify-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_EventTable__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n testResult: tempTestResult\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/OTDRResultMain.js\",\n lineNumber: 24,\n columnNumber: 31\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/OTDRResultMain.js\",\n lineNumber: 23,\n columnNumber: 21\n }, this);\n case '曲线':\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full h-full flex items-center justify-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_CurveChart__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n testResult: tempTestResult\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/OTDRResultMain.js\",\n lineNumber: 30,\n columnNumber: 29\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/OTDRResultMain.js\",\n lineNumber: 29,\n columnNumber: 21\n }, this);\n default:\n return null;\n }\n };\n return estmodel === 'general' ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full h-[490px] flex flex-col overflow-hidden\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[1/100] flex\",\n children: tabs.map((tab)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>setActiveTab(tab),\n className: `flex-1 h-full flex items-center justify-center font-bold text-lg\n ${activeTab === tab ? 'bg-gradient-to-b from-[#d5dfeb] via-[#f8f6f7] to-[#d5dfeb] text-black' : 'bg-[#132843] text-[#fffe92]'}`,\n children: tab\n }, tab, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/OTDRResultMain.js\",\n lineNumber: 43,\n columnNumber: 25\n }, this))\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/OTDRResultMain.js\",\n lineNumber: 41,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 bg-white\",\n children: renderContent()\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/OTDRResultMain.js\",\n lineNumber: 55,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/OTDRResultMain.js\",\n lineNumber: 40,\n columnNumber: 13\n }, this) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full h-[490px] flex flex-col overflow-hidden\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[1/100] flex\",\n children: tabs.map((tab)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>setActiveTab(tab),\n className: `flex-1 h-full flex items-center justify-center font-bold text-lg\n ${activeTab === tab ? 'bg-gradient-to-b from-[#b0b0b0] via-[#e0e4e0] to-[#b0b0b0] text-black' : 'bg-[#303030] text-[#fffe92]'}`,\n children: tab\n }, tab, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/OTDRResultMain.js\",\n lineNumber: 63,\n columnNumber: 25\n }, this))\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/OTDRResultMain.js\",\n lineNumber: 61,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 bg-white\",\n children: renderContent()\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/OTDRResultMain.js\",\n lineNumber: 75,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/OTDRResultMain.js\",\n lineNumber: 60,\n columnNumber: 13\n }, this);\n}\n\n__webpack_async_result__();\n} catch(e) { __webpack_async_result__(e); } });//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHBhZ2VzLWRpci1ub2RlKS8uL3NyYy9jb21wb25lbnRzL2xpYi9PVERSUmVzdWx0TWFpbi5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQW1EO0FBQ1Q7QUFDSjtBQUNBO0FBQ1c7QUFFbEMsU0FBU08sZUFBZSxFQUFFQyxVQUFVLEVBQUU7SUFDakQsTUFBTSxDQUFDQyxXQUFXQyxhQUFhLEdBQUdULCtDQUFRQSxDQUFDO0lBQzNDLE1BQU1VLE9BQVE7UUFBQztRQUFZO1FBQUs7S0FBSztJQUNyQyxNQUFNQyxpQkFBaUJKO0lBQ3ZCLE1BQU0sRUFBRUssUUFBUSxFQUFFLEdBQUdQLDhEQUFjQTtJQUVuQyxNQUFNUSxnQkFBZ0I7UUFDbEIsT0FBUUw7WUFDSixLQUFLO2dCQUNELHFCQUNJLDhEQUFDTTtvQkFBSUMsV0FBVTs4QkFDTiw0RUFBQ2IscURBQVlBO3dCQUFDSyxZQUFZSTs7Ozs7Ozs7Ozs7WUFHM0MsS0FBSztnQkFDRCxxQkFDSSw4REFBQ0c7b0JBQUlDLFdBQVU7OEJBQ0wsNEVBQUNaLG1EQUFVQTt3QkFBQ0ksWUFBWUk7Ozs7Ozs7Ozs7O1lBRzFDLEtBQUs7Z0JBQ0QscUJBQ0ksOERBQUNHO29CQUFJQyxXQUFVOzhCQUNQLDRFQUFDWCxtREFBVUE7d0JBQUNHLFlBQVlJOzs7Ozs7Ozs7OztZQUd4QztnQkFDSSxPQUFPO1FBQ2Y7SUFDSjtJQUVBLE9BQ0lDLGFBQWEsMEJBQ1QsOERBQUNFO1FBQUlDLFdBQVU7OzBCQUNYLDhEQUFDRDtnQkFBSUMsV0FBVTswQkFDVkwsS0FBS00sR0FBRyxDQUFDLENBQUNDLG9CQUNQLDhEQUFDQzt3QkFFR0MsU0FBUyxJQUFNVixhQUFhUTt3QkFDNUJGLFdBQVcsQ0FBQztnQ0FDUixFQUFFUCxjQUFjUyxNQUNWLDBFQUNBLCtCQUErQjtrQ0FFeENBO3VCQVBJQTs7Ozs7Ozs7OzswQkFXakIsOERBQUNIO2dCQUFJQyxXQUFVOzBCQUNWRjs7Ozs7Ozs7Ozs7NkJBSVQsOERBQUNDO1FBQUlDLFdBQVU7OzBCQUNYLDhEQUFDRDtnQkFBSUMsV0FBVTswQkFDVkwsS0FBS00sR0FBRyxDQUFDLENBQUNDLG9CQUNQLDhEQUFDQzt3QkFFR0MsU0FBUyxJQUFNVixhQUFhUTt3QkFDNUJGLFdBQVcsQ0FBQztnQ0FDUixFQUFFUCxjQUFjUyxNQUNWLDBFQUNBLCtCQUErQjtrQ0FFeENBO3VCQVBJQTs7Ozs7Ozs7OzswQkFXakIsOERBQUNIO2dCQUFJQyxXQUFVOzBCQUNWRjs7Ozs7Ozs7Ozs7O0FBTXJCIiwic291cmNlcyI6WyIvb3B0L2Rldi9lc3QtZHN4L3NyYy9jb21wb25lbnRzL2xpYi9PVERSUmVzdWx0TWFpbi5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUsIHVzZUVmZmVjdCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBFdmVudE1hcFZpZXcgZnJvbSAnLi9FdmVudE1hcFZpZXcnO1xuaW1wb3J0IEV2ZW50VGFibGUgZnJvbSAnLi9FdmVudFRhYmxlJztcbmltcG9ydCBDdXJ2ZUNoYXJ0IGZyb20gJy4vQ3VydmVDaGFydCc7XG5pbXBvcnQgdXNlRGV2aWNlU3RvcmUgZnJvbSAnQC9zdG9yZS9kZXZpY2VTdG9yZSc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIE9URFJSZXN1bHRNYWluKHsgdGVzdFJlc3VsdCB9KSB7XG4gICAgY29uc3QgW2FjdGl2ZVRhYiwgc2V0QWN0aXZlVGFiXSA9IHVzZVN0YXRlKCdFdmVudE1hcCcpO1xuICAgIGNvbnN0IHRhYnMgPSAgWydFdmVudE1hcCcsICfooagnLCAn5puy57q/J107XG4gICAgY29uc3QgdGVtcFRlc3RSZXN1bHQgPSB0ZXN0UmVzdWx0O1xuICAgIGNvbnN0IHsgZXN0bW9kZWwgfSA9IHVzZURldmljZVN0b3JlKCk7XG5cbiAgICBjb25zdCByZW5kZXJDb250ZW50ID0gKCkgPT4ge1xuICAgICAgICBzd2l0Y2ggKGFjdGl2ZVRhYikge1xuICAgICAgICAgICAgY2FzZSAnRXZlbnRNYXAnOlxuICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy1mdWxsIGgtZnVsbCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RXZlbnRNYXBWaWV3IHRlc3RSZXN1bHQ9e3RlbXBUZXN0UmVzdWx0fSAvPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgY2FzZSAn6KGoJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctZnVsbCBoLWZ1bGwgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxFdmVudFRhYmxlIHRlc3RSZXN1bHQ9e3RlbXBUZXN0UmVzdWx0fSAvPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgY2FzZSAn5puy57q/JzpcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctZnVsbCBoLWZ1bGwgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Q3VydmVDaGFydCB0ZXN0UmVzdWx0PXt0ZW1wVGVzdFJlc3VsdH0gLz5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgcmV0dXJuIChcbiAgICAgICAgZXN0bW9kZWwgPT09ICdnZW5lcmFsJyA/IChcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy1mdWxsIGgtWzQ5MHB4XSBmbGV4IGZsZXgtY29sIG92ZXJmbG93LWhpZGRlblwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaC1bMS8xMDBdIGZsZXhcIj5cbiAgICAgICAgICAgICAgICAgICAge3RhYnMubWFwKCh0YWIpID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e3RhYn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRBY3RpdmVUYWIodGFiKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2BmbGV4LTEgaC1mdWxsIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIGZvbnQtYm9sZCB0ZXh0LWxnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7YWN0aXZlVGFiID09PSB0YWIgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICdiZy1ncmFkaWVudC10by1iIGZyb20tWyNkNWRmZWJdIHZpYS1bI2Y4ZjZmN10gdG8tWyNkNWRmZWJdIHRleHQtYmxhY2snIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnYmctWyMxMzI4NDNdIHRleHQtWyNmZmZlOTJdJ31gfVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt0YWJ9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4LTEgYmctd2hpdGVcIj5cbiAgICAgICAgICAgICAgICAgICAge3JlbmRlckNvbnRlbnQoKX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICApOihcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy1mdWxsIGgtWzQ5MHB4XSBmbGV4IGZsZXgtY29sIG92ZXJmbG93LWhpZGRlblwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaC1bMS8xMDBdIGZsZXhcIj5cbiAgICAgICAgICAgICAgICAgICAge3RhYnMubWFwKCh0YWIpID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e3RhYn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRBY3RpdmVUYWIodGFiKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2BmbGV4LTEgaC1mdWxsIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIGZvbnQtYm9sZCB0ZXh0LWxnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7YWN0aXZlVGFiID09PSB0YWIgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICdiZy1ncmFkaWVudC10by1iIGZyb20tWyNiMGIwYjBdIHZpYS1bI2UwZTRlMF0gdG8tWyNiMGIwYjBdIHRleHQtYmxhY2snIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnYmctWyMzMDMwMzBdIHRleHQtWyNmZmZlOTJdJ31gfVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt0YWJ9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4LTEgYmctd2hpdGVcIj5cbiAgICAgICAgICAgICAgICAgICAge3JlbmRlckNvbnRlbnQoKX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICApXG4gICAgKTtcblxufSJdLCJuYW1lcyI6WyJSZWFjdCIsInVzZVN0YXRlIiwidXNlRWZmZWN0IiwiRXZlbnRNYXBWaWV3IiwiRXZlbnRUYWJsZSIsIkN1cnZlQ2hhcnQiLCJ1c2VEZXZpY2VTdG9yZSIsIk9URFJSZXN1bHRNYWluIiwidGVzdFJlc3VsdCIsImFjdGl2ZVRhYiIsInNldEFjdGl2ZVRhYiIsInRhYnMiLCJ0ZW1wVGVzdFJlc3VsdCIsImVzdG1vZGVsIiwicmVuZGVyQ29udGVudCIsImRpdiIsImNsYXNzTmFtZSIsIm1hcCIsInRhYiIsImJ1dHRvbiIsIm9uQ2xpY2siXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(pages-dir-node)/./src/components/lib/OTDRResultMain.js\n"); /***/ }), /***/ "(pages-dir-node)/./src/components/lib/PerformanceView.js": /*!***********************************************!*\ !*** ./src/components/lib/PerformanceView.js ***! \***********************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; eval("__webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ PerformanceView)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"react/jsx-dev-runtime\");\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 */ \"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var next_image__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! next/image */ \"(pages-dir-node)/./node_modules/next/image.js\");\n/* harmony import */ var next_image__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(next_image__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _store_displayStore__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/store/displayStore */ \"(pages-dir-node)/./src/store/displayStore.js\");\n/* harmony import */ var _utils_asset__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/utils/asset */ \"(pages-dir-node)/./src/utils/asset.js\");\n/* harmony import */ var _store_deviceStore__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/store/deviceStore */ \"(pages-dir-node)/./src/store/deviceStore.js\");\nvar __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_store_displayStore__WEBPACK_IMPORTED_MODULE_3__, _utils_asset__WEBPACK_IMPORTED_MODULE_4__, _store_deviceStore__WEBPACK_IMPORTED_MODULE_5__]);\n([_store_displayStore__WEBPACK_IMPORTED_MODULE_3__, _utils_asset__WEBPACK_IMPORTED_MODULE_4__, _store_deviceStore__WEBPACK_IMPORTED_MODULE_5__] = __webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__);\n\n\n\n\n\n\nfunction PerformanceView({ testResult }) {\n const { navigateTo } = (0,_store_displayStore__WEBPACK_IMPORTED_MODULE_3__[\"default\"])();\n const { estmodel } = (0,_store_deviceStore__WEBPACK_IMPORTED_MODULE_5__[\"default\"])();\n const showExtendedTests = testResult?.testconfig?.params?.limitValue?.includes('+ALL');\n const [limitdata, setLimitdata] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);\n const limitValue = testResult?.testconfig?.params?.limitValue;\n // 计算参数余量\n const calculateMargin = (paramTitle)=>{\n // 长度处理\n if (paramTitle === '长度') {\n const result = calculateLengthStatus();\n return result.margin; // 只返回margin值\n }\n // 电阻参数的特殊处理\n if (paramTitle === '电阻') {\n return calculateResistanceMargin();\n }\n const dataGroupMap = {\n '插入损耗': 'Insertion Loss (dB)',\n '回波损耗': 'RL (dB)',\n 'NEXT': 'NEXT (dB)',\n 'PS NEXT': 'PS NEXT (dB)',\n 'ACR-N': 'ACR-N (dB)',\n 'PS ACR-N': 'PS ACR-N (dB)',\n 'ACR-F': 'ACR-F (dB)',\n 'PS ACR-F': 'PS ACR-F (dB)',\n 'CDNEXT': 'CDNEXT (dB)',\n 'CMRL': 'CMRL (dB)',\n 'TCL': 'TCL (dB)',\n 'ELTCTL': 'ELTCTL (dB)'\n };\n const dataGroup = dataGroupMap[paramTitle];\n if (!dataGroup || !testResult?.resultdata?.performance?.data?.[dataGroup] || !limitdata?.[dataGroup]) {\n return null;\n }\n let minMargin = Infinity;\n const data = testResult.resultdata.performance.data[dataGroup];\n const limitValues = limitdata[dataGroup]?.['PAIRLimit (dB)'] || [];\n // 根据参数类型选择对应的线对组\n const pairs = [\n 'NEXT (dB)',\n 'ACR-N (dB)'\n ].includes(dataGroup) ? [\n 'PAIR1236',\n 'PAIR1245',\n 'PAIR1278',\n 'PAIR3645',\n 'PAIR3678',\n 'PAIR4578'\n ] : [\n 'ACR-F (dB)',\n 'CDNEXT (dB)'\n ].includes(dataGroup) ? [\n 'PAIR1236',\n 'PAIR1245',\n 'PAIR1278',\n 'PAIR3612',\n 'PAIR3645',\n 'PAIR3678',\n 'PAIR4512',\n 'PAIR4535',\n 'PAIR4578',\n 'PAIR7812',\n 'PAIR7936',\n 'PAIR7845'\n ] : [\n 'PAIR12',\n 'PAIR36',\n 'PAIR45',\n 'PAIR78'\n ];\n // 遍历所有索引,直到遇到空值或null值\n for(let index = 0; index < limitValues.length; index++){\n const limitValue = limitValues[index];\n if (limitValue === undefined || limitValue === null) break;\n for (const pair of pairs){\n const actualValue = data[pair]?.[index];\n // 只在实际值存在且不为null时进行计算\n if (actualValue !== undefined && actualValue !== null) {\n const margin = paramTitle === '插入损耗' ? Math.abs(limitValue) - Math.abs(actualValue) : Math.abs(actualValue) - limitValue; // 其他参数:参数值 - 极限值\n minMargin = Math.min(minMargin, margin);\n }\n }\n }\n return minMargin !== Infinity ? minMargin.toFixed(1) : null;\n };\n // 计算长度余量和状态\n const calculateLengthStatus = ()=>{\n if (!testResult?.resultdata?.performance || !limitdata) {\n return {\n margin: null,\n isPass: false\n };\n }\n let minMargin = Infinity;\n let minLength = Infinity;\n let isPass = true;\n const pairs = [\n 'PAIR12',\n 'PAIR36',\n 'PAIR45',\n 'PAIR78'\n ];\n // 计算长度余量\n if (limitdata.LENGTH && testResult.resultdata.performance.LENGTH) {\n const lengthLimit = limitdata.LENGTH;\n const lengthData = testResult.resultdata.performance.LENGTH;\n for (const pair of pairs){\n const actualValue = lengthData[pair];\n if (actualValue !== undefined && actualValue !== null && lengthLimit !== undefined && lengthLimit !== null) {\n const margin = lengthLimit - Math.abs(actualValue);\n minMargin = Math.min(minMargin, margin);\n minLength = Math.min(minLength, Math.abs(actualValue));\n if (Math.abs(actualValue) > lengthLimit) {\n isPass = false;\n }\n }\n }\n }\n // 检查延时\n if (limitdata.DELAY && testResult.resultdata.performance.DELAY) {\n const delayLimit = limitdata.DELAY;\n const delayData = testResult.resultdata.performance.DELAY;\n for (const pair of pairs){\n const actualValue = delayData[pair];\n if (actualValue !== undefined && actualValue !== null && delayLimit !== undefined && delayLimit !== null) {\n if (Math.abs(actualValue) > delayLimit) {\n isPass = false;\n }\n }\n }\n }\n // 检查延时偏差\n if (limitdata.DELAYSKEW && testResult.resultdata.performance.DELAYSKEW) {\n const skewLimit = limitdata.DELAYSKEW;\n const skewData = testResult.resultdata.performance.DELAYSKEW;\n const skewPairs = [\n 'PAIR1236',\n 'PAIR1245',\n 'PAIR1278',\n 'PAIR3645',\n 'PAIR3678',\n 'PAIR4578'\n ];\n for (const pair of skewPairs){\n const actualValue = skewData[pair];\n if (actualValue !== undefined && actualValue !== null && skewLimit !== undefined && skewLimit !== null) {\n if (Math.abs(actualValue) > skewLimit) {\n isPass = false;\n }\n }\n }\n }\n return {\n margin: minLength !== Infinity ? minLength.toFixed(1) : null,\n isPass\n };\n };\n // 计算电阻余量\n const calculateResistanceMargin = ()=>{\n if (!testResult?.resultdata?.performance?.OHM || !limitdata) {\n return null;\n }\n const hasPoE = testResult?.testconfig?.params?.limitValue?.includes('+PoE');\n const hasALL = testResult?.testconfig?.params?.limitValue?.includes('+ALL');\n let minMargin = Infinity;\n // 回路电阻余量计算(所有情况都需要)\n if (limitdata.LOOP && testResult.resultdata.performance.OHM.LOOP) {\n const loopLimit = limitdata.LOOP;\n const loopData = testResult.resultdata.performance.OHM.LOOP;\n const loopPairs = [\n 'PAIR12',\n 'PAIR36',\n 'PAIR45',\n 'PAIR78'\n ];\n for (const pair of loopPairs){\n const actualValue = loopData[pair];\n if (actualValue !== undefined && actualValue !== null && loopLimit !== undefined && loopLimit !== null) {\n const margin = loopLimit - Math.abs(actualValue);\n minMargin = Math.min(minMargin, margin);\n }\n }\n }\n // +PoE或+ALL测试的额外检查\n if (hasPoE || hasALL) {\n // 线对UBL余量计算\n if (limitdata.PAIRUBL && testResult.resultdata.performance.OHM.PAIRUBL) {\n const pairUblLimit = limitdata.PAIRUBL;\n const pairUblData = testResult.resultdata.performance.OHM.PAIRUBL;\n const pairUblPairs = [\n 'PAIR12',\n 'PAIR36',\n 'PAIR45',\n 'PAIR78'\n ];\n for (const pair of pairUblPairs){\n const actualValue = pairUblData[pair];\n if (actualValue !== undefined && actualValue !== null && pairUblLimit !== undefined && pairUblLimit !== null) {\n const margin = pairUblLimit - Math.abs(actualValue);\n minMargin = Math.min(minMargin, margin);\n }\n }\n }\n // P2PUBL余量计算\n if (limitdata.P2PUBL && testResult.resultdata.performance.OHM.P2PUBL) {\n const p2pUblLimit = limitdata.P2PUBL;\n const p2pUblData = testResult.resultdata.performance.OHM.P2PUBL;\n const p2pUblPairs = [\n 'PAIR1236',\n 'PAIR1245',\n 'PAIR1278',\n 'PAIR3645',\n 'PAIR3678',\n 'PAIR4578'\n ];\n for (const pair of p2pUblPairs){\n const actualValue = p2pUblData[pair];\n if (actualValue !== undefined && actualValue !== null && p2pUblLimit !== undefined && p2pUblLimit !== null) {\n const margin = p2pUblLimit - Math.abs(actualValue);\n minMargin = Math.min(minMargin, margin);\n }\n }\n }\n }\n return minMargin !== Infinity ? minMargin.toFixed(1) : null;\n };\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)({\n \"PerformanceView.useEffect\": ()=>{\n // 异步加载限制数据\n const loadLimitData = {\n \"PerformanceView.useEffect.loadLimitData\": async ()=>{\n if (limitValue) {\n try {\n // 从limitValue中提取基础名称(移除+PoE和+ALL后缀)\n const baseName = limitValue.split(' (+')[0];\n // 使用基础名称加载带有(+ALL)后缀的文件\n const data = await __webpack_require__(\"(pages-dir-node)/./src/store/COPPER lazy recursive ^\\\\.\\\\/.* \\\\(\\\\+ALL\\\\)\\\\.json$\")(`./${baseName} (+ALL).json`);\n setLimitdata(data);\n } catch (error) {\n console.error('Error loading limit data:', error);\n }\n }\n }\n }[\"PerformanceView.useEffect.loadLimitData\"];\n loadLimitData();\n }\n }[\"PerformanceView.useEffect\"], [\n limitValue\n ]);\n const getStatusIcon = (value, title)=>{\n if (!value) return null;\n let isPass;\n // 特殊处理长度参数\n if (title === '长度') {\n const lengthStatus = calculateLengthStatus();\n isPass = lengthStatus.isPass;\n } else {\n // 其他参数保持原有逻辑\n isPass = parseFloat(value) >= 0;\n }\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-4 h-4 relative ml-2\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: (0,_utils_asset__WEBPACK_IMPORTED_MODULE_4__.getAssetUrl)(isPass ? '/pass.png' : '/fail.png'),\n alt: isPass ? '通过' : '失败',\n fill: true,\n className: \"object-contain\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/PerformanceView.js\",\n lineNumber: 243,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/PerformanceView.js\",\n lineNumber: 242,\n columnNumber: 13\n }, this);\n };\n const handleRowClick = (curtitle)=>{\n if (curtitle === testResult?.testconfig?.params?.limitValue) {\n return; // 第一行不需要跳转\n }\n if (curtitle === '长度') {\n navigateTo('copperperformance', 'LENGTH', {\n testResult,\n curtitle\n });\n } else if (curtitle === '电阻') {\n const hasPoE = testResult?.testconfig?.params?.limitValue?.includes('+PoE');\n const hasALL = testResult?.testconfig?.params?.limitValue?.includes('+ALL');\n if (hasPoE || hasALL) {\n navigateTo('copperperformance', 'PoE', {\n testResult,\n curtitle\n });\n } else {\n navigateTo('copperperformance', 'OHM', {\n testResult,\n curtitle\n });\n }\n } else if (curtitle === 'NEXT' || curtitle === 'PS NEXT' || curtitle === 'ACR-N' || curtitle === 'PS ACR-N' || curtitle === 'ACR-F' || curtitle === 'PS ACR-F' || curtitle === 'CDNEXT' || curtitle === 'CMRL' || curtitle === 'TCL' || curtitle === 'ELTCTL' || curtitle === '插入损耗' || curtitle === '回波损耗') {\n navigateTo('copperperformance', 'DRAW', {\n testResult,\n curtitle\n });\n }\n };\n const renderRow = (title, value, unit = '')=>estmodel === 'general' ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full flex items-center justify-between p-3 mb-2 rounded-md bg-[#F8F6F7] shadow-md cursor-pointer\",\n onClick: ()=>handleRowClick(title),\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-lg font-medium text-black\",\n children: title\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/PerformanceView.js\",\n lineNumber: 282,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-lg text-black\",\n children: title === '电阻' ? '' : value ? `(${value}${unit})` : ''\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/PerformanceView.js\",\n lineNumber: 284,\n columnNumber: 17\n }, this),\n getStatusIcon(value, title)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/PerformanceView.js\",\n lineNumber: 283,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/PerformanceView.js\",\n lineNumber: 278,\n columnNumber: 9\n }, this) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full flex items-center justify-between p-3 mb-2 rounded-md bg-gradient-to-b from-[#dedede] via-[#b5b5b5] to-[#8b898b] shadow-md cursor-pointer\",\n onClick: ()=>handleRowClick(title),\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-lg font-medium text-black\",\n children: title\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/PerformanceView.js\",\n lineNumber: 293,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-lg text-black\",\n children: title === '电阻' ? '' : value ? `(${value}${unit})` : ''\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/PerformanceView.js\",\n lineNumber: 295,\n columnNumber: 17\n }, this),\n getStatusIcon(value, title)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/PerformanceView.js\",\n lineNumber: 294,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/PerformanceView.js\",\n lineNumber: 289,\n columnNumber: 13\n }, this);\n return estmodel === 'general' ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full h-[470px] bg-[#D5DFEB] flex flex-col p-4 overflow-y-auto\",\n style: {\n scrollbarWidth: 'none',\n msOverflowStyle: 'none'\n },\n children: [\n renderRow(testResult?.testconfig?.params?.limitValue),\n renderRow('长度', calculateMargin('长度'), ' m'),\n renderRow('电阻', calculateMargin('电阻'), ' Ω'),\n renderRow('插入损耗', calculateMargin('插入损耗'), ' dB'),\n renderRow('回波损耗', calculateMargin('回波损耗'), ' dB'),\n renderRow('NEXT', calculateMargin('NEXT'), ' dB'),\n renderRow('PS NEXT', calculateMargin('PS NEXT'), ' dB'),\n renderRow('ACR-N', calculateMargin('ACR-N'), ' dB'),\n renderRow('PS ACR-N', calculateMargin('PS ACR-N'), ' dB'),\n renderRow('ACR-F', calculateMargin('ACR-F'), ' dB'),\n renderRow('PS ACR-F', calculateMargin('PS ACR-F'), ' dB'),\n showExtendedTests && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n children: [\n renderRow('CDNEXT', calculateMargin('CDNEXT'), ' dB'),\n renderRow('CMRL', calculateMargin('CMRL'), ' dB'),\n renderRow('TCL', calculateMargin('TCL'), ' dB'),\n renderRow('ELTCTL', calculateMargin('ELTCTL'), ' dB')\n ]\n }, void 0, true)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/PerformanceView.js\",\n lineNumber: 304,\n columnNumber: 9\n }, this) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full h-[470px] bg-[#6b6d6b] flex flex-col p-4 overflow-y-auto\",\n style: {\n scrollbarWidth: 'none',\n msOverflowStyle: 'none'\n },\n children: [\n renderRow(testResult?.testconfig?.params?.limitValue),\n renderRow('长度', calculateMargin('长度'), ' m'),\n renderRow('电阻', calculateMargin('电阻'), ' Ω'),\n renderRow('插入损耗', calculateMargin('插入损耗'), ' dB'),\n renderRow('回波损耗', calculateMargin('回波损耗'), ' dB'),\n renderRow('NEXT', calculateMargin('NEXT'), ' dB'),\n renderRow('PS NEXT', calculateMargin('PS NEXT'), ' dB'),\n renderRow('ACR-N', calculateMargin('ACR-N'), ' dB'),\n renderRow('PS ACR-N', calculateMargin('PS ACR-N'), ' dB'),\n renderRow('ACR-F', calculateMargin('ACR-F'), ' dB'),\n renderRow('PS ACR-F', calculateMargin('PS ACR-F'), ' dB'),\n showExtendedTests && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n children: [\n renderRow('CDNEXT', calculateMargin('CDNEXT'), ' dB'),\n renderRow('CMRL', calculateMargin('CMRL'), ' dB'),\n renderRow('TCL', calculateMargin('TCL'), ' dB'),\n renderRow('ELTCTL', calculateMargin('ELTCTL'), ' dB')\n ]\n }, void 0, true)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/PerformanceView.js\",\n lineNumber: 326,\n columnNumber: 13\n }, this);\n}\n\n__webpack_async_result__();\n} catch(e) { __webpack_async_result__(e); } });//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHBhZ2VzLWRpci1ub2RlKS8uL3NyYy9jb21wb25lbnRzL2xpYi9QZXJmb3JtYW5jZVZpZXcuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBbUQ7QUFDcEI7QUFDb0I7QUFDUDtBQUNLO0FBSWxDLFNBQVNPLGdCQUFnQixFQUFFQyxVQUFVLEVBQUU7SUFDbEQsTUFBTSxFQUFFQyxVQUFVLEVBQUUsR0FBR0wsK0RBQWVBO0lBQ3RDLE1BQU0sRUFBRU0sUUFBUSxFQUFFLEdBQUdKLDhEQUFjQTtJQUVuQyxNQUFNSyxvQkFBb0JILFlBQVlJLFlBQVlDLFFBQVFDLFlBQVlDLFNBQVM7SUFDL0UsTUFBTSxDQUFDQyxXQUFXQyxhQUFhLEdBQUdoQiwrQ0FBUUEsQ0FBQztJQUMzQyxNQUFNYSxhQUFhTixZQUFZSSxZQUFZQyxRQUFRQztJQUluRCxTQUFTO0lBQ1QsTUFBTUksa0JBQWtCLENBQUNDO1FBQ3JCLE9BQU87UUFDUCxJQUFJQSxlQUFlLE1BQU07WUFDckIsTUFBTUMsU0FBU0M7WUFDZixPQUFPRCxPQUFPRSxNQUFNLEVBQUcsYUFBYTtRQUN4QztRQUNBLFlBQVk7UUFDWixJQUFJSCxlQUFlLE1BQU07WUFDckIsT0FBT0k7UUFDWDtRQUVBLE1BQU1DLGVBQWU7WUFDakIsUUFBUTtZQUNSLFFBQVE7WUFDUixRQUFRO1lBQ1IsV0FBVztZQUNYLFNBQVM7WUFDVCxZQUFZO1lBQ1osU0FBUztZQUNULFlBQVk7WUFDWixVQUFVO1lBQ1YsUUFBUTtZQUNSLE9BQU87WUFDUCxVQUFVO1FBQ2Q7UUFFQSxNQUFNQyxZQUFZRCxZQUFZLENBQUNMLFdBQVc7UUFDMUMsSUFBSSxDQUFDTSxhQUFhLENBQUNqQixZQUFZa0IsWUFBWUMsYUFBYUMsTUFBTSxDQUFDSCxVQUFVLElBQUksQ0FBQ1QsV0FBVyxDQUFDUyxVQUFVLEVBQUU7WUFDbEcsT0FBTztRQUNYO1FBRUEsSUFBSUksWUFBWUM7UUFDaEIsTUFBTUYsT0FBT3BCLFdBQVdrQixVQUFVLENBQUNDLFdBQVcs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ZXMiOlsiL29wdC9kZXYvZXN0LWRzeC9zcmMvY29tcG9uZW50cy9saWIvUGVyZm9ybWFuY2VWaWV3LmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSwgdXNlRWZmZWN0IH0gZnJvbSAncmVhY3QnO1xyXG5pbXBvcnQgSW1hZ2UgZnJvbSAnbmV4dC9pbWFnZSc7XHJcbmltcG9ydCB1c2VEaXNwbGF5U3RvcmUgZnJvbSAnQC9zdG9yZS9kaXNwbGF5U3RvcmUnO1xyXG5pbXBvcnQgeyBnZXRBc3NldFVybCB9IGZyb20gJ0AvdXRpbHMvYXNzZXQnO1xyXG5pbXBvcnQgdXNlRGV2aWNlU3RvcmUgZnJvbSAnQC9zdG9yZS9kZXZpY2VTdG9yZSc7XHJcblxyXG5cclxuXHJcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFBlcmZvcm1hbmNlVmlldyh7IHRlc3RSZXN1bHQgfSkge1xyXG4gICAgY29uc3QgeyBuYXZpZ2F0ZVRvIH0gPSB1c2VEaXNwbGF5U3RvcmUoKTtcclxuICAgIGNvbnN0IHsgZXN0bW9kZWwgfSA9IHVzZURldmljZVN0b3JlKCk7XHJcblxyXG4gICAgY29uc3Qgc2hvd0V4dGVuZGVkVGVzdHMgPSB0ZXN0UmVzdWx0Py50ZXN0Y29uZmlnPy5wYXJhbXM/LmxpbWl0VmFsdWU/LmluY2x1ZGVzKCcrQUxMJyk7XHJcbiAgICBjb25zdCBbbGltaXRkYXRhLCBzZXRMaW1pdGRhdGFdID0gdXNlU3RhdGUobnVsbCk7XHJcbiAgICBjb25zdCBsaW1pdFZhbHVlID0gdGVzdFJlc3VsdD8udGVzdGNvbmZpZz8ucGFyYW1zPy5saW1pdFZhbHVlO1xyXG5cclxuXHJcbiAgICBcclxuICAgIC8vIOiuoeeul+WPguaVsOS9memHj1xyXG4gICAgY29uc3QgY2FsY3VsYXRlTWFyZ2luID0gKHBhcmFtVGl0bGUpID0+IHtcclxuICAgICAgICAvLyDplb/luqblpITnkIZcclxuICAgICAgICBpZiAocGFyYW1UaXRsZSA9PT0gJ+mVv+W6picpIHtcclxuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gY2FsY3VsYXRlTGVuZ3RoU3RhdHVzKCk7XHJcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQubWFyZ2luOyAgLy8g5Y+q6L+U5ZuebWFyZ2lu5YC8XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIOeUtemYu+WPguaVsOeahOeJueauiuWkhOeQhlxyXG4gICAgICAgIGlmIChwYXJhbVRpdGxlID09PSAn55S16Zi7Jykge1xyXG4gICAgICAgICAgICByZXR1cm4gY2FsY3VsYXRlUmVzaXN0YW5jZU1hcmdpbigpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgZGF0YUdyb3VwTWFwID0ge1xyXG4gICAgICAgICAgICAn5o+S5YWl5o2f6ICXJzogJ0luc2VydGlvbiBMb3NzIChkQiknLFxyXG4gICAgICAgICAgICAn5Zue5rOi5o2f6ICXJzogJ1JMIChkQiknLFxyXG4gICAgICAgICAgICAnTkVYVCc6ICdORVhUIChkQiknLFxyXG4gICAgICAgICAgICAnUFMgTkVYVCc6ICdQUyBORVhUIChkQiknLFxyXG4gICAgICAgICAgICAnQUNSLU4nOiAnQUNSLU4gKGRCKScsXHJcbiAgICAgICAgICAgICdQUyBBQ1ItTic6ICdQUyBBQ1ItTiAoZEIpJyxcclxuICAgICAgICAgICAgJ0FDUi1GJzogJ0FDUi1GIChkQiknLFxyXG4gICAgICAgICAgICAnUFMgQUNSLUYnOiAnUFMgQUNSLUYgKGRCKScsXHJcbiAgICAgICAgICAgICdDRE5FWFQnOiAnQ0RORVhUIChkQiknLFxyXG4gICAgICAgICAgICAnQ01STCc6ICdDTVJMIChkQiknLFxyXG4gICAgICAgICAgICAnVENMJzogJ1RDTCAoZEIpJyxcclxuICAgICAgICAgICAgJ0VMVENUTCc6ICdFTFRDVEwgKGRCKSdcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICBjb25zdCBkYXRhR3JvdXAgPSBkYXRhR3JvdXBNYXBbcGFyYW1UaXRsZV07XHJcbiAgICAgICAgaWYgKCFkYXRhR3JvdXAgfHwgIXRlc3RSZXN1bHQ/LnJlc3VsdGRhdGE/LnBlcmZvcm1hbmNlPy5kYXRhPy5bZGF0YUdyb3VwXSB8fCAhbGltaXRkYXRhPy5bZGF0YUdyb3VwXSkge1xyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCBtaW5NYXJnaW4gPSBJbmZpbml0eTtcclxuICAgICAgICBjb25zdCBkYXRhID0gdGVzdFJlc3VsdC5yZXN1bHRkYXRhLnBlcmZvcm1hbmNlLmRhdGFbZGF0YUdyb3VwXTtcclxuICAgICAgICBjb25zdCBsaW1pdFZhbHVlcyA9IGxpbWl0ZGF0YVtkYXRhR3JvdXBdPy5bJ1BBSVJMaW1pdCAoZEIpJ10gfHwgW107XHJcblxyXG4gICAgICAgIC8vIOagueaNruWPguaVsOexu+Wei+mAieaLqeWvueW6lOeahOe6v+Wvuee7hFxyXG4gICAgICAgIGNvbnN0IHBhaXJzID0gWydORVhUIChkQiknLCAnQUNSLU4gKGRCKSddLmluY2x1ZGVzKGRhdGFHcm91cCkgP1xyXG4gICAgICAgICAgICBbJ1BBSVIxMjM2JywgJ1BBSVIxMjQ1JywgJ1BBSVIxMjc4JywgJ1BBSVIzNjQ1JywgJ1BBSVIzNjc4JywgJ1BBSVI0NTc4J10gOlxyXG4gICAgICAgICAgICBbJ0FDUi1GIChkQiknLCAnQ0RORVhUIChkQiknXS5pbmNsdWRlcyhkYXRhR3JvdXApID9cclxuICAgICAgICAgICAgICAgIFsnUEFJUjEyMzYnLCAnUEFJUjEyNDUnLCAnUEFJUjEyNzgnLCAnUEFJUjM2MTInLCAnUEFJUjM2NDUnLCAnUEFJUjM2NzgnLFxyXG4gICAgICAgICAgICAgICAgICdQQUlSNDUxMicsICdQQUlSNDUzNScsICdQQUlSNDU3OCcsICdQQUlSNzgxMicsICdQQUlSNzkzNicsICdQQUlSNzg0NSddIDpcclxuICAgICAgICAgICAgICAgIFsnUEFJUjEyJywgJ1BBSVIzNicsICdQQUlSNDUnLCAnUEFJUjc4J107XHJcblxyXG4gICAgICAgIC8vIOmBjeWOhuaJgOaciee0ouW8le+8jOebtOWIsOmBh+WIsOepuuWAvOaIlm51bGzlgLxcclxuICAgICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgbGltaXRWYWx1ZXMubGVuZ3RoOyBpbmRleCsrKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGxpbWl0VmFsdWUgPSBsaW1pdFZhbHVlc1tpbmRleF07XHJcbiAgICAgICAgICAgIGlmIChsaW1pdFZhbHVlID09PSB1bmRlZmluZWQgfHwgbGltaXRWYWx1ZSA9PT0gbnVsbCkgYnJlYWs7XHJcblxyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IHBhaXIgb2YgcGFpcnMpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGFjdHVhbFZhbHVlID0gZGF0YVtwYWlyXT8uW2luZGV4XTtcclxuICAgICAgICAgICAgICAgIC8vIOWPquWcqOWunumZheWAvOWtmOWcqOS4lOS4jeS4um51bGzml7bov5vooYzorqHnrpdcclxuICAgICAgICAgICAgICAgIGlmIChhY3R1YWxWYWx1ZSAhPT0gdW5kZWZpbmVkICYmIGFjdHVhbFZhbHVlICE9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbWFyZ2luID0gcGFyYW1UaXRsZSA9PT0gJ+aPkuWFpeaNn+iAlycgP1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBNYXRoLmFicyhsaW1pdFZhbHVlKSAtIE1hdGguYWJzKGFjdHVhbFZhbHVlKSA6IC8vIOaPkuWFpeaNn+iAl++8muaegemZkOWAvCAtIOWPguaVsOWAvFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBNYXRoLmFicyhhY3R1YWxWYWx1ZSkgLSBsaW1pdFZhbHVlOyAgLy8g5YW25LuW5Y+C5pWw77ya5Y+C5pWw5YC8IC0g5p6B6ZmQ5YC8XHJcbiAgICAgICAgICAgICAgICAgICAgbWluTWFyZ2luID0gTWF0aC5taW4obWluTWFyZ2luLCBtYXJnaW4pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gbWluTWFyZ2luICE9PSBJbmZpbml0eSA/IG1pbk1hcmdpbi50b0ZpeGVkKDEpIDogbnVsbDtcclxuICAgIH07XHJcblxyXG4gICAgLy8g6K6h566X6ZW/5bqm5L2Z6YeP5ZKM54q25oCBXHJcbiAgICBjb25zdCBjYWxjdWxhdGVMZW5ndGhTdGF0dXMgPSAoKSA9PiB7XHJcbiAgICAgICAgaWYgKCF0ZXN0UmVzdWx0Py5yZXN1bHRkYXRhPy5wZXJmb3JtYW5jZSB8fCAhbGltaXRkYXRhKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB7IG1hcmdpbjogbnVsbCwgaXNQYXNzOiBmYWxzZSB9O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IG1pbk1hcmdpbiA9IEluZmluaXR5O1xyXG4gICAgICAgIGxldCBtaW5MZW5ndGggPSBJbmZpbml0eTtcclxuICAgICAgICBsZXQgaXNQYXNzID0gdHJ1ZTtcclxuICAgICAgICBjb25zdCBwYWlycyA9IFsnUEFJUjEyJywgJ1BBSVIzNicsICdQQUlSNDUnLCAnUEFJUjc4J107XHJcblxyXG4gICAgICAgIC8vIOiuoeeul+mVv+W6puS9memHj1xyXG4gICAgICAgIGlmIChsaW1pdGRhdGEuTEVOR1RIICYmIHRlc3RSZXN1bHQucmVzdWx0ZGF0YS5wZXJmb3JtYW5jZS5MRU5HVEgpIHtcclxuICAgICAgICAgICAgY29uc3QgbGVuZ3RoTGltaXQgPSBsaW1pdGRhdGEuTEVOR1RIO1xyXG4gICAgICAgICAgICBjb25zdCBsZW5ndGhEYXRhID0gdGVzdFJlc3VsdC5yZXN1bHRkYXRhLnBlcmZvcm1hbmNlLkxFTkdUSDtcclxuXHJcbiAgICAgICAgICAgIGZvciAoY29uc3QgcGFpciBvZiBwYWlycykge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgYWN0dWFsVmFsdWUgPSBsZW5ndGhEYXRhW3BhaXJdO1xyXG4gICAgICAgICAgICAgICAgaWYgKGFjdHVhbFZhbHVlICE9PSB1bmRlZmluZWQgJiYgYWN0dWFsVmFsdWUgIT09IG51bGwgJiYgbGVuZ3RoTGltaXQgIT09IHVuZGVmaW5lZCAmJiBsZW5ndGhMaW1pdCAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1hcmdpbiA9IGxlbmd0aExpbWl0IC0gTWF0aC5hYnMoYWN0dWFsVmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgICAgIG1pbk1hcmdpbiA9IE1hdGgubWluKG1pbk1hcmdpbiwgbWFyZ2luKTtcclxuICAgICAgICAgICAgICAgICAgICBtaW5MZW5ndGggPSBNYXRoLm1pbihtaW5MZW5ndGgsIE1hdGguYWJzKGFjdHVhbFZhbHVlKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKE1hdGguYWJzKGFjdHVhbFZhbHVlKSA+IGxlbmd0aExpbWl0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzUGFzcyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8g5qOA5p+l5bu25pe2XHJcbiAgICAgICAgaWYgKGxpbWl0ZGF0YS5ERUxBWSAmJiB0ZXN0UmVzdWx0LnJlc3VsdGRhdGEucGVyZm9ybWFuY2UuREVMQVkpIHtcclxuICAgICAgICAgICAgY29uc3QgZGVsYXlMaW1pdCA9IGxpbWl0ZGF0YS5ERUxBWTtcclxuICAgICAgICAgICAgY29uc3QgZGVsYXlEYXRhID0gdGVzdFJlc3VsdC5yZXN1bHRkYXRhLnBlcmZvcm1hbmNlLkRFTEFZO1xyXG5cclxuICAgICAgICAgICAgZm9yIChjb25zdCBwYWlyIG9mIHBhaXJzKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBhY3R1YWxWYWx1ZSA9IGRlbGF5RGF0YVtwYWlyXTtcclxuICAgICAgICAgICAgICAgIGlmIChhY3R1YWxWYWx1ZSAhPT0gdW5kZWZpbmVkICYmIGFjdHVhbFZhbHVlICE9PSBudWxsICYmIGRlbGF5TGltaXQgIT09IHVuZGVmaW5lZCAmJiBkZWxheUxpbWl0ICE9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKE1hdGguYWJzKGFjdHVhbFZhbHVlKSA+IGRlbGF5TGltaXQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXNQYXNzID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyDmo4Dmn6Xlu7bml7blgY/lt65cclxuICAgICAgICBpZiAobGltaXRkYXRhLkRFTEFZU0tFVyAmJiB0ZXN0UmVzdWx0LnJlc3VsdGRhdGEucGVyZm9ybWFuY2UuREVMQVlTS0VXKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHNrZXdMaW1pdCA9IGxpbWl0ZGF0YS5ERUxBWVNLRVc7XHJcbiAgICAgICAgICAgIGNvbnN0IHNrZXdEYXRhID0gdGVzdFJlc3VsdC5yZXN1bHRkYXRhLnBlcmZvcm1hbmNlLkRFTEFZU0tFVztcclxuICAgICAgICAgICAgY29uc3Qgc2tld1BhaXJzID0gWydQQUlSMTIzNicsICdQQUlSMTI0NScsICdQQUlSMTI3OCcsICdQQUlSMzY0NScsICdQQUlSMzY3OCcsICdQQUlSNDU3OCddO1xyXG5cclxuICAgICAgICAgICAgZm9yIChjb25zdCBwYWlyIG9mIHNrZXdQYWlycykge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgYWN0dWFsVmFsdWUgPSBza2V3RGF0YVtwYWlyXTtcclxuICAgICAgICAgICAgICAgIGlmIChhY3R1YWxWYWx1ZSAhPT0gdW5kZWZpbmVkICYmIGFjdHVhbFZhbHVlICE9PSBudWxsICYmIHNrZXdMaW1pdCAhPT0gdW5kZWZpbmVkICYmIHNrZXdMaW1pdCAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChNYXRoLmFicyhhY3R1YWxWYWx1ZSkgPiBza2V3TGltaXQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXNQYXNzID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBtYXJnaW46IG1pbkxlbmd0aCAhPT0gSW5maW5pdHkgPyBtaW5MZW5ndGgudG9GaXhlZCgxKSA6IG51bGwsXHJcbiAgICAgICAgICAgIGlzUGFzc1xyXG4gICAgICAgIH07XHJcbiAgICB9O1xyXG5cclxuICAgIC8vIOiuoeeul+eUtemYu+S9memHj1xyXG4gICAgY29uc3QgY2FsY3VsYXRlUmVzaXN0YW5jZU1hcmdpbiA9ICgpID0+IHtcclxuICAgICAgICBpZiAoIXRlc3RSZXN1bHQ/LnJlc3VsdGRhdGE/LnBlcmZvcm1hbmNlPy5PSE0gfHwgIWxpbWl0ZGF0YSkge1xyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IGhhc1BvRSA9IHRlc3RSZXN1bHQ/LnRlc3Rjb25maWc/LnBhcmFtcz8ubGltaXRWYWx1ZT8uaW5jbHVkZXMoJytQb0UnKTtcclxuICAgICAgICBjb25zdCBoYXNBTEwgPSB0ZXN0UmVzdWx0Py50ZXN0Y29uZmlnPy5wYXJhbXM/LmxpbWl0VmFsdWU/LmluY2x1ZGVzKCcrQUxMJyk7XHJcbiAgICAgICAgbGV0IG1pbk1hcmdpbiA9IEluZmluaXR5O1xyXG5cclxuICAgICAgICAvLyDlm57ot6/nlLXpmLvkvZnph4/orqHnrpfvvIjmiYDmnInmg4XlhrXpg73pnIDopoHvvIlcclxuICAgICAgICBpZiAobGltaXRkYXRhLkxPT1AgJiYgdGVzdFJlc3VsdC5yZXN1bHRkYXRhLnBlcmZvcm1hbmNlLk9ITS5MT09QKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGxvb3BMaW1pdCA9IGxpbWl0ZGF0YS5MT09QO1xyXG4gICAgICAgICAgICBjb25zdCBsb29wRGF0YSA9IHRlc3RSZXN1bHQucmVzdWx0ZGF0YS5wZXJmb3JtYW5jZS5PSE0uTE9PUDtcclxuICAgICAgICAgICAgY29uc3QgbG9vcFBhaXJzID0gWydQQUlSMTInLCAnUEFJUjM2JywgJ1BBSVI0NScsICdQQUlSNzgnXTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIGZvciAoY29uc3QgcGFpciBvZiBsb29wUGFpcnMpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGFjdHVhbFZhbHVlID0gbG9vcERhdGFbcGFpcl07XHJcbiAgICAgICAgICAgICAgICBpZiAoYWN0dWFsVmFsdWUgIT09IHVuZGVmaW5lZCAmJiBhY3R1YWxWYWx1ZSAhPT0gbnVsbCAmJiBsb29wTGltaXQgIT09IHVuZGVmaW5lZCAmJiBsb29wTGltaXQgIT09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBtYXJnaW4gPSBsb29wTGltaXQgLSBNYXRoLmFicyhhY3R1YWxWYWx1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgbWluTWFyZ2luID0gTWF0aC5taW4obWluTWFyZ2luLCBtYXJnaW4pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyArUG9F5oiWK0FMTOa1i+ivleeahOmineWkluajgOafpVxyXG4gICAgICAgIGlmIChoYXNQb0UgfHwgaGFzQUxMKSB7XHJcbiAgICAgICAgICAgIC8vIOe6v+WvuVVCTOS9memHj+iuoeeul1xyXG4gICAgICAgICAgICBpZiAobGltaXRkYXRhLlBBSVJVQkwgJiYgdGVzdFJlc3VsdC5yZXN1bHRkYXRhLnBlcmZvcm1hbmNlLk9ITS5QQUlSVUJMKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBwYWlyVWJsTGltaXQgPSBsaW1pdGRhdGEuUEFJUlVCTDtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHBhaXJVYmxEYXRhID0gdGVzdFJlc3VsdC5yZXN1bHRkYXRhLnBlcmZvcm1hbmNlLk9ITS5QQUlSVUJMO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgcGFpclVibFBhaXJzID0gWydQQUlSMTInLCAnUEFJUjM2JywgJ1BBSVI0NScsICdQQUlSNzgnXTtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBwYWlyIG9mIHBhaXJVYmxQYWlycykge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGFjdHVhbFZhbHVlID0gcGFpclVibERhdGFbcGFpcl07XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGFjdHVhbFZhbHVlICE9PSB1bmRlZmluZWQgJiYgYWN0dWFsVmFsdWUgIT09IG51bGwgJiYgcGFpclVibExpbWl0ICE9PSB1bmRlZmluZWQgJiYgcGFpclVibExpbWl0ICE9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1hcmdpbiA9IHBhaXJVYmxMaW1pdCAtIE1hdGguYWJzKGFjdHVhbFZhbHVlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbWluTWFyZ2luID0gTWF0aC5taW4obWluTWFyZ2luLCBtYXJnaW4pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgLy8gUDJQVUJM5L2Z6YeP6K6h566XXHJcbiAgICAgICAgICAgIGlmIChsaW1pdGRhdGEuUDJQVUJMICYmIHRlc3RSZXN1bHQucmVzdWx0ZGF0YS5wZXJmb3JtYW5jZS5PSE0uUDJQVUJMKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBwMnBVYmxMaW1pdCA9IGxpbWl0ZGF0YS5QMlBVQkw7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBwMnBVYmxEYXRhID0gdGVzdFJlc3VsdC5yZXN1bHRkYXRhLnBlcmZvcm1hbmNlLk9ITS5QMlBVQkw7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBwMnBVYmxQYWlycyA9IFsnUEFJUjEyMzYnLCAnUEFJUjEyNDUnLCAnUEFJUjEyNzgnLCAnUEFJUjM2NDUnLCAnUEFJUjM2NzgnLCAnUEFJUjQ1NzgnXTtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBwYWlyIG9mIHAycFVibFBhaXJzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYWN0dWFsVmFsdWUgPSBwMnBVYmxEYXRhW3BhaXJdO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChhY3R1YWxWYWx1ZSAhPT0gdW5kZWZpbmVkICYmIGFjdHVhbFZhbHVlICE9PSBudWxsICYmIHAycFVibExpbWl0ICE9PSB1bmRlZmluZWQgJiYgcDJwVWJsTGltaXQgIT09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWFyZ2luID0gcDJwVWJsTGltaXQgLSBNYXRoLmFicyhhY3R1YWxWYWx1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1pbk1hcmdpbiA9IE1hdGgubWluKG1pbk1hcmdpbiwgbWFyZ2luKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBtaW5NYXJnaW4gIT09IEluZmluaXR5ID8gbWluTWFyZ2luLnRvRml4ZWQoMSkgOiBudWxsO1xyXG4gICAgfTtcclxuXHJcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xyXG4gICAgICAgIC8vIOW8guatpeWKoOi9vemZkOWItuaVsOaNrlxyXG4gICAgICAgIGNvbnN0IGxvYWRMaW1pdERhdGEgPSBhc3luYyAoKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChsaW1pdFZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIOS7jmxpbWl0VmFsdWXkuK3mj5Dlj5bln7rnoYDlkI3np7Ao56e76ZmkK1BvReWSjCtBTEzlkI7nvIApXHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYmFzZU5hbWUgPSBsaW1pdFZhbHVlLnNwbGl0KCcgKCsnKVswXTtcclxuICAgICAgICAgICAgICAgICAgICAvLyDkvb/nlKjln7rnoYDlkI3np7DliqDovb3luKbmnIkoK0FMTCnlkI7nvIDnmoTmlofku7ZcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBkYXRhID0gYXdhaXQgaW1wb3J0KGBAL3N0b3JlL0NPUFBFUi8ke2Jhc2VOYW1lfSAoK0FMTCkuanNvbmApO1xyXG4gICAgICAgICAgICAgICAgICAgIHNldExpbWl0ZGF0YShkYXRhKTtcclxuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgbG9hZGluZyBsaW1pdCBkYXRhOicsIGVycm9yKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgbG9hZExpbWl0RGF0YSgpO1xyXG4gICAgfSwgW2xpbWl0VmFsdWVdKTtcclxuXHJcbiAgICBjb25zdCBnZXRTdGF0dXNJY29uID0gKHZhbHVlLCB0aXRsZSkgPT4ge1xyXG4gICAgICAgIGlmICghdmFsdWUpIHJldHVybiBudWxsO1xyXG4gICAgICAgIGxldCBpc1Bhc3M7XHJcbiAgICAgICAgXHJcbiAgICAgICAgLy8g54m55q6K5aSE55CG6ZW/5bqm5Y+C5pWwXHJcbiAgICAgICAgaWYgKHRpdGxlID09PSAn6ZW/5bqmJykge1xyXG4gICAgICAgICAgICBjb25zdCBsZW5ndGhTdGF0dXMgPSBjYWxjdWxhdGVMZW5ndGhTdGF0dXMoKTtcclxuICAgICAgICAgICAgaXNQYXNzID0gbGVuZ3RoU3RhdHVzLmlzUGFzcztcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAvLyDlhbbku5blj4LmlbDkv53mjIHljp/mnInpgLvovpFcclxuICAgICAgICAgICAgaXNQYXNzID0gcGFyc2VGbG9hdCh2YWx1ZSkgPj0gMDtcclxuICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LTQgaC00IHJlbGF0aXZlIG1sLTJcIj5cclxuICAgICAgICAgICAgICAgIDxJbWFnZVxyXG4gICAgICAgICAgICAgICAgICAgIHNyYz17Z2V0QXNzZXRVcmwoaXNQYXNzID8gJy9wYXNzLnBuZycgOiAnL2ZhaWwucG5nJyl9XHJcbiAgICAgICAgICAgICAgICAgICAgYWx0PXtpc1Bhc3MgPyAn6YCa6L+HJyA6ICflpLHotKUnfVxyXG4gICAgICAgICAgICAgICAgICAgIGZpbGxcclxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJvYmplY3QtY29udGFpblwiXHJcbiAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICApO1xyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCBoYW5kbGVSb3dDbGljayA9IChjdXJ0aXRsZSkgPT4ge1xyXG4gICAgICAgIGlmIChjdXJ0aXRsZSA9PT0gdGVzdFJlc3VsdD8udGVzdGNvbmZpZz8ucGFyYW1zPy5saW1pdFZhbHVlKSB7XHJcbiAgICAgICAgICAgIHJldHVybjsgLy8g56ys5LiA6KGM5LiN6ZyA6KaB6Lez6L2sXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChjdXJ0aXRsZSA9PT0gJ+mVv+W6picpIHtcclxuICAgICAgICAgICAgbmF2aWdhdGVUbygnY29wcGVycGVyZm9ybWFuY2UnLCAnTEVOR1RIJywgeyB0ZXN0UmVzdWx0LCBjdXJ0aXRsZSB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoY3VydGl0bGUgPT09ICfnlLXpmLsnKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGhhc1BvRSA9IHRlc3RSZXN1bHQ/LnRlc3Rjb25maWc/LnBhcmFtcz8ubGltaXRWYWx1ZT8uaW5jbHVkZXMoJytQb0UnKTtcclxuICAgICAgICAgICAgY29uc3QgaGFzQUxMID0gdGVzdFJlc3VsdD8udGVzdGNvbmZpZz8ucGFyYW1zPy5saW1pdFZhbHVlPy5pbmNsdWRlcygnK0FMTCcpO1xyXG4gICAgICAgICAgICBpZiAoaGFzUG9FIHx8IGhhc0FMTCkge1xyXG4gICAgICAgICAgICAgICAgbmF2aWdhdGVUbygnY29wcGVycGVyZm9ybWFuY2UnLCAnUG9FJywgeyB0ZXN0UmVzdWx0LCBjdXJ0aXRsZSB9KTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIG5hdmlnYXRlVG8oJ2NvcHBlcnBlcmZvcm1hbmNlJywgJ09ITScsIHsgdGVzdFJlc3VsdCwgY3VydGl0bGUgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoY3VydGl0bGUgPT09ICdORVhUJyB8fCBjdXJ0aXRsZSA9PT0gJ1BTIE5FWFQnIHx8IGN1cnRpdGxlID09PSAnQUNSLU4nIHx8IGN1cnRpdGxlID09PSAnUFMgQUNSLU4nIHx8IFxyXG4gICAgICAgICAgICBjdXJ0aXRsZSA9PT0gJ0FDUi1GJyB8fCBjdXJ0aXRsZSA9PT0gJ1BTIEFDUi1GJyB8fCBjdXJ0aXRsZSA9PT0gJ0NETkVYVCcgfHwgY3VydGl0bGUgPT09ICdDTVJMJyB8fCBcclxuICAgICAgICAgICAgY3VydGl0bGUgPT09ICdUQ0wnIHx8IGN1cnRpdGxlID09PSAnRUxUQ1RMJyB8fCBjdXJ0aXRsZSA9PT0gJ+aPkuWFpeaNn+iAlycgfHwgY3VydGl0bGUgPT09ICflm57ms6LmjZ/ogJcnKSB7XHJcbiAgICAgICAgICAgIG5hdmlnYXRlVG8oJ2NvcHBlcnBlcmZvcm1hbmNlJywgJ0RSQVcnLCB7IHRlc3RSZXN1bHQsIGN1cnRpdGxlIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgcmVuZGVyUm93ID0gKHRpdGxlLCB2YWx1ZSwgdW5pdCA9ICcnKSA9PiAoXHJcbiAgICAgICAgZXN0bW9kZWwgPT09ICdnZW5lcmFsJyA/IChcclxuICAgICAgICA8ZGl2IFxyXG4gICAgICAgICAgICBjbGFzc05hbWU9XCJ3LWZ1bGwgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIHAtMyBtYi0yIHJvdW5kZWQtbWQgYmctWyNGOEY2RjddIHNoYWRvdy1tZCBjdXJzb3ItcG9pbnRlclwiIFxyXG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBoYW5kbGVSb3dDbGljayh0aXRsZSl9XHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LWxnIGZvbnQtbWVkaXVtIHRleHQtYmxhY2tcIj57dGl0bGV9PC9zcGFuPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LWxnIHRleHQtYmxhY2tcIj57dGl0bGUgPT09ICfnlLXpmLsnID8gJycgOiAodmFsdWUgPyBgKCR7dmFsdWV9JHt1bml0fSlgIDogJycpfTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIHtnZXRTdGF0dXNJY29uKHZhbHVlLCB0aXRsZSl9XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgICk6KFxyXG4gICAgICAgICAgICA8ZGl2IFxyXG4gICAgICAgICAgICBjbGFzc05hbWU9XCJ3LWZ1bGwgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIHAtMyBtYi0yIHJvdW5kZWQtbWQgYmctZ3JhZGllbnQtdG8tYiBmcm9tLVsjZGVkZWRlXSB2aWEtWyNiNWI1YjVdIHRvLVsjOGI4OThiXSBzaGFkb3ctbWQgY3Vyc29yLXBvaW50ZXJcIiBcclxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4gaGFuZGxlUm93Q2xpY2sodGl0bGUpfVxyXG4gICAgICAgID5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC1sZyBmb250LW1lZGl1bSB0ZXh0LWJsYWNrXCI+e3RpdGxlfTwvc3Bhbj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC1sZyB0ZXh0LWJsYWNrXCI+e3RpdGxlID09PSAn55S16Zi7JyA/ICcnIDogKHZhbHVlID8gYCgke3ZhbHVlfSR7dW5pdH0pYCA6ICcnKX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICB7Z2V0U3RhdHVzSWNvbih2YWx1ZSwgdGl0bGUpfVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICApXHJcbiAgICApO1xyXG5cclxuICAgIHJldHVybiAoXHJcbiAgICAgICAgZXN0bW9kZWwgPT09ICdnZW5lcmFsJyA/IChcclxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctZnVsbCBoLVs0NzBweF0gYmctWyNENURGRUJdIGZsZXggZmxleC1jb2wgcC00IG92ZXJmbG93LXktYXV0b1wiIHN0eWxlPXt7IHNjcm9sbGJhcldpZHRoOiAnbm9uZScsIG1zT3ZlcmZsb3dTdHlsZTogJ25vbmUnIH19PlxyXG4gICAgICAgICAgICB7cmVuZGVyUm93KHRlc3RSZXN1bHQ/LnRlc3Rjb25maWc/LnBhcmFtcz8ubGltaXRWYWx1ZSl9XHJcbiAgICAgICAgICAgIHtyZW5kZXJSb3coJ+mVv+W6picsIGNhbGN1bGF0ZU1hcmdpbign6ZW/5bqmJyksICcgbScpfVxyXG4gICAgICAgICAgICB7cmVuZGVyUm93KCfnlLXpmLsnLCBjYWxjdWxhdGVNYXJnaW4oJ+eUtemYuycpLCAnIM6pJyl9XHJcbiAgICAgICAgICAgIHtyZW5kZXJSb3coJ+aPkuWFpeaNn+iAlycsIGNhbGN1bGF0ZU1hcmdpbign5o+S5YWl5o2f6ICXJyksICcgZEInKX1cclxuICAgICAgICAgICAge3JlbmRlclJvdygn5Zue5rOi5o2f6ICXJywgY2FsY3VsYXRlTWFyZ2luKCflm57ms6LmjZ/ogJcnKSwgJyBkQicpfVxyXG4gICAgICAgICAgICB7cmVuZGVyUm93KCdORVhUJywgY2FsY3VsYXRlTWFyZ2luKCdORVhUJyksICcgZEInKX1cclxuICAgICAgICAgICAge3JlbmRlclJvdygnUFMgTkVYVCcsIGNhbGN1bGF0ZU1hcmdpbignUFMgTkVYVCcpLCAnIGRCJyl9XHJcbiAgICAgICAgICAgIHtyZW5kZXJSb3coJ0FDUi1OJywgY2FsY3VsYXRlTWFyZ2luKCdBQ1ItTicpLCAnIGRCJyl9XHJcbiAgICAgICAgICAgIHtyZW5kZXJSb3coJ1BTIEFDUi1OJywgY2FsY3VsYXRlTWFyZ2luKCdQUyBBQ1ItTicpLCAnIGRCJyl9XHJcbiAgICAgICAgICAgIHtyZW5kZXJSb3coJ0FDUi1GJywgY2FsY3VsYXRlTWFyZ2luKCdBQ1ItRicpLCAnIGRCJyl9XHJcbiAgICAgICAgICAgIHtyZW5kZXJSb3coJ1BTIEFDUi1GJywgY2FsY3VsYXRlTWFyZ2luKCdQUyBBQ1ItRicpLCAnIGRCJyl9XHJcbiAgICAgICAgICAgIHtzaG93RXh0ZW5kZWRUZXN0cyAmJiAoXHJcbiAgICAgICAgICAgICAgICA8PlxyXG4gICAgICAgICAgICAgICAgICAgIHtyZW5kZXJSb3coJ0NETkVYVCcsIGNhbGN1bGF0ZU1hcmdpbignQ0RORVhUJyksICcgZEInKX1cclxuICAgICAgICAgICAgICAgICAgICB7cmVuZGVyUm93KCdDTVJMJywgY2FsY3VsYXRlTWFyZ2luKCdDTVJMJyksICcgZEInKX1cclxuICAgICAgICAgICAgICAgICAgICB7cmVuZGVyUm93KCdUQ0wnLCBjYWxjdWxhdGVNYXJnaW4oJ1RDTCcpLCAnIGRCJyl9XHJcbiAgICAgICAgICAgICAgICAgICAge3JlbmRlclJvdygnRUxUQ1RMJywgY2FsY3VsYXRlTWFyZ2luKCdFTFRDVEwnKSwgJyBkQicpfVxyXG4gICAgICAgICAgICAgICAgPC8+XHJcbiAgICAgICAgICAgICl9XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgKTooXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy1mdWxsIGgtWzQ3MHB4XSBiZy1bIzZiNmQ2Yl0gZmxleCBmbGV4LWNvbCBwLTQgb3ZlcmZsb3cteS1hdXRvXCIgc3R5bGU9e3sgc2Nyb2xsYmFyV2lkdGg6ICdub25lJywgbXNPdmVyZmxvd1N0eWxlOiAnbm9uZScgfX0+XHJcbiAgICAgICAgICAgIHtyZW5kZXJSb3codGVzdFJlc3VsdD8udGVzdGNvbmZpZz8ucGFyYW1zPy5saW1pdFZhbHVlKX1cclxuICAgICAgICAgICAge3JlbmRlclJvdygn6ZW/5bqmJywgY2FsY3VsYXRlTWFyZ2luKCfplb/luqYnKSwgJyBtJyl9XHJcbiAgICAgICAgICAgIHtyZW5kZXJSb3coJ+eUtemYuycsIGNhbGN1bGF0ZU1hcmdpbign55S16Zi7JyksICcgzqknKX1cclxuICAgICAgICAgICAge3JlbmRlclJvdygn5o+S5YWl5o2f6ICXJywgY2FsY3VsYXRlTWFyZ2luKCfmj5LlhaXmjZ/ogJcnKSwgJyBkQicpfVxyXG4gICAgICAgICAgICB7cmVuZGVyUm93KCflm57ms6LmjZ/ogJcnLCBjYWxjdWxhdGVNYXJnaW4oJ+WbnuazouaNn+iAlycpLCAnIGRCJyl9XHJcbiAgICAgICAgICAgIHtyZW5kZXJSb3coJ05FWFQnLCBjYWxjdWxhdGVNYXJnaW4oJ05FWFQnKSwgJyBkQicpfVxyXG4gICAgICAgICAgICB7cmVuZGVyUm93KCdQUyBORVhUJywgY2FsY3VsYXRlTWFyZ2luKCdQUyBORVhUJyksICcgZEInKX1cclxuICAgICAgICAgICAge3JlbmRlclJvdygnQUNSLU4nLCBjYWxjdWxhdGVNYXJnaW4oJ0FDUi1OJyksICcgZEInKX1cclxuICAgICAgICAgICAge3JlbmRlclJvdygnUFMgQUNSLU4nLCBjYWxjdWxhdGVNYXJnaW4oJ1BTIEFDUi1OJyksICcgZEInKX1cclxuICAgICAgICAgICAge3JlbmRlclJvdygnQUNSLUYnLCBjYWxjdWxhdGVNYXJnaW4oJ0FDUi1GJyksICcgZEInKX1cclxuICAgICAgICAgICAge3JlbmRlclJvdygnUFMgQUNSLUYnLCBjYWxjdWxhdGVNYXJnaW4oJ1BTIEFDUi1GJyksICcgZEInKX1cclxuICAgICAgICAgICAge3Nob3dFeHRlbmRlZFRlc3RzICYmIChcclxuICAgICAgICAgICAgICAgIDw+XHJcbiAgICAgICAgICAgICAgICAgICAge3JlbmRlclJvdygnQ0RORVhUJywgY2FsY3VsYXRlTWFyZ2luKCdDRE5FWFQnKSwgJyBkQicpfVxyXG4gICAgICAgICAgICAgICAgICAgIHtyZW5kZXJSb3coJ0NNUkwnLCBjYWxjdWxhdGVNYXJnaW4oJ0NNUkwnKSwgJyBkQicpfVxyXG4gICAgICAgICAgICAgICAgICAgIHtyZW5kZXJSb3coJ1RDTCcsIGNhbGN1bGF0ZU1hcmdpbignVENMJyksICcgZEInKX1cclxuICAgICAgICAgICAgICAgICAgICB7cmVuZGVyUm93KCdFTFRDVEwnLCBjYWxjdWxhdGVNYXJnaW4oJ0VMVENUTCcpLCAnIGRCJyl9XHJcbiAgICAgICAgICAgICAgICA8Lz5cclxuICAgICAgICAgICAgKX1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICApXHJcbiAgICApO1xyXG59Il0sIm5hbWVzIjpbIlJlYWN0IiwidXNlU3RhdGUiLCJ1c2VFZmZlY3QiLCJJbWFnZSIsInVzZURpc3BsYXlTdG9yZSIsImdldEFzc2V0VXJsIiwidXNlRGV2aWNlU3RvcmUiLCJQZXJmb3JtYW5jZVZpZXciLCJ0ZXN0UmVzdWx0IiwibmF2aWdhdGVUbyIsImVzdG1vZGVsIiwic2hvd0V4dGVuZGVkVGVzdHMiLCJ0ZXN0Y29uZmlnIiwicGFyYW1zIiwibGltaXRWYWx1ZSIsImluY2x1ZGVzIiwibGltaXRkYXRhIiwic2V0TGltaXRkYXRhIiwiY2FsY3VsYXRlTWFyZ2luIiwicGFyYW1UaXRsZSIsInJlc3VsdCIsImNhbGN1bGF0ZUxlbmd0aFN0YXR1cyIsIm1hcmdpbiIsImNhbGN1bGF0ZVJlc2lzdGFuY2VNYXJnaW4iLCJkYXRhR3JvdXBNYXAiLCJkYXRhR3JvdXAiLCJyZXN1bHRkYXRhIiwicGVyZm9ybWFuY2UiLCJkYXRhIiwibWluTWFyZ2luIiwiSW5maW5pdHkiLCJsaW1pdFZhbHVlcyIsInBhaXJzIiwiaW5kZXgiLCJsZW5ndGgiLCJ1bmRlZmluZWQiLCJwYWlyIiwiYWN0dWFsVmFsdWUiLCJNYXRoIiwiYWJzIiwibWluIiwidG9GaXhlZCIsImlzUGFzcyIsIm1pbkxlbmd0aCIsIkxFTkdUSCIsImxlbmd0aExpbWl0IiwibGVuZ3RoRGF0YSIsIkRFTEFZIiwiZGVsYXlMaW1pdCIsImRlbGF5RGF0YSIsIkRFTEFZU0tFVyIsInNrZXdMaW1pdCIsInNrZXdEYXRhIiwic2tld1BhaXJzIiwiT0hNIiwiaGFzUG9FIiwiaGFzQUxMIiwiTE9PUCIsImxvb3BMaW1pdCIsImxvb3BEYXRhIiwibG9vcFBhaXJzIiwiUEFJUlVCTCIsInBhaXJVYmxMaW1pdCIsInBhaXJVYmxEYXRhIiwicGFpclVibFBhaXJzIiwiUDJQVUJMIiwicDJwVWJsTGltaXQiLCJwMnBVYmxEYXRhIiwicDJwVWJsUGFpcnMiLCJsb2FkTGltaXREYXRhIiwiYmFzZU5hbWUiLCJzcGxpdCIsImVycm9yIiwiY29uc29sZSIsImdldFN0YXR1c0ljb24iLCJ2YWx1ZSIsInRpdGxlIiwibGVuZ3RoU3RhdHVzIiwicGFyc2VGbG9hdCIsImRpdiIsImNsYXNzTmFtZSIsInNyYyIsImFsdCIsImZpbGwiLCJoYW5kbGVSb3dDbGljayIsImN1cnRpdGxlIiwicmVuZGVyUm93IiwidW5pdCIsIm9uQ2xpY2siLCJzcGFuIiwic3R5bGUiLCJzY3JvbGxiYXJXaWR0aCIsIm1zT3ZlcmZsb3dTdHlsZSJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(pages-dir-node)/./src/components/lib/PerformanceView.js\n"); /***/ }), /***/ "(pages-dir-node)/./src/components/lib/ResultTitleBar.js": /*!**********************************************!*\ !*** ./src/components/lib/ResultTitleBar.js ***! \**********************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; eval("__webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ ResultTitleBar)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"react/jsx-dev-runtime\");\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 */ \"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var next_image__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! next/image */ \"(pages-dir-node)/./node_modules/next/image.js\");\n/* harmony import */ var next_image__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(next_image__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _store_displayStore__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/store/displayStore */ \"(pages-dir-node)/./src/store/displayStore.js\");\n/* harmony import */ var _utils_asset__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/utils/asset */ \"(pages-dir-node)/./src/utils/asset.js\");\nvar __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_store_displayStore__WEBPACK_IMPORTED_MODULE_3__, _utils_asset__WEBPACK_IMPORTED_MODULE_4__]);\n([_store_displayStore__WEBPACK_IMPORTED_MODULE_3__, _utils_asset__WEBPACK_IMPORTED_MODULE_4__] = __webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__);\n\n\n\n\n\nfunction ResultTitleBar({ title, backTo, view, onBack, testResult, result }) {\n const { navigateTo, goBack, updateCurrentView, navigation } = (0,_store_displayStore__WEBPACK_IMPORTED_MODULE_3__[\"default\"])();\n // 根据结果获取背景颜色\n const getBgColor = ()=>{\n // 如果存在CopperWiremapResultStatus,使用铜缆测试逻辑\n if (testResult?.CopperResultStatus) {\n if (testResult.CopperResultStatus !== 'pass') return 'bg-[#ce1d31]';\n return testResult.CopperResultStatus === 'pass' ? 'bg-[#00A65A]' : 'bg-[#ce1d31]';\n }\n // 如果存在OFPStatus,使用光纤测试逻辑\n if (testResult?.CFPResultStatus) {\n return testResult.CFPResultStatus === 'pass' ? 'bg-[#00A65A]' : 'bg-[#ce1d31]';\n }\n // 如果存在OFPStatus,使用光纤测试逻辑\n if (testResult?.ofpResultStatus) {\n return testResult.ofpResultStatus === 'pass' ? 'bg-[#00A65A]' : 'bg-[#ce1d31]';\n }\n // 默认蓝色\n return 'bg-[#003366]';\n };\n // 获取结果文本\n const getResultText = ()=>{\n // 如果存在CopperWiremapResultStatus,使用铜缆测试逻辑\n if (testResult?.CopperResultStatus) {\n if (testResult.CopperResultStatus !== 'pass') return '失败';\n return testResult.CopperResultStatus === 'pass' ? '通过' : '失败';\n }\n // 如果存在CFPStatus,使用光纤测试逻辑\n if (testResult?.CFPResultStatus) {\n return testResult.CFPResultStatus === 'pass' ? '通过' : '失败';\n }\n // 如果存在OFPStatus,使用光纤测试逻辑\n if (testResult?.ofpResultStatus) {\n return testResult.ofpResultStatus === 'pass' ? '通过' : '失败';\n }\n return null;\n };\n const handleBack = ()=>{\n if (onBack) {\n onBack();\n return;\n }\n if (backTo) {\n const currentParams = navigation.current.params;\n navigateTo(backTo, view, currentParams);\n } else if (view) {\n const currentParams = navigation.current.params;\n updateCurrentView(view, currentParams);\n } else {\n goBack();\n }\n };\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `h-[60px] flex items-center justify-between relative ${getBgColor()}`,\n children: [\n (backTo || view || onBack) && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: handleBack,\n className: \"w-[60px] h-full flex items-center justify-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-12 h-12 relative\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: (0,_utils_asset__WEBPACK_IMPORTED_MODULE_4__.getAssetUrl)('/back.png'),\n alt: \"返回\",\n fill: true,\n className: \"object-contain\",\n priority: true\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/ResultTitleBar.js\",\n lineNumber: 73,\n columnNumber: 21\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/ResultTitleBar.js\",\n lineNumber: 72,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/ResultTitleBar.js\",\n lineNumber: 68,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 flex items-center ml-4\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h1\", {\n className: \"text-white font-bold text-l\",\n children: title || testResult?.name\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/ResultTitleBar.js\",\n lineNumber: 86,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/ResultTitleBar.js\",\n lineNumber: 85,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mr-4\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h2\", {\n className: \"text-white font-bold text-2xl\",\n children: getResultText()\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/ResultTitleBar.js\",\n lineNumber: 93,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/ResultTitleBar.js\",\n lineNumber: 92,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/ResultTitleBar.js\",\n lineNumber: 65,\n columnNumber: 9\n }, this);\n}\n\n__webpack_async_result__();\n} catch(e) { __webpack_async_result__(e); } });//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHBhZ2VzLWRpci1ub2RlKS8uL3NyYy9jb21wb25lbnRzL2xpYi9SZXN1bHRUaXRsZUJhci5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQTBCO0FBQ0s7QUFDb0I7QUFDUDtBQUU3QixTQUFTSSxlQUFlLEVBQUVDLEtBQUssRUFBRUMsTUFBTSxFQUFFQyxJQUFJLEVBQUVDLE1BQU0sRUFBRUMsVUFBVSxFQUFFQyxNQUFNLEVBQUU7SUFDdEYsTUFBTSxFQUFFQyxVQUFVLEVBQUVDLE1BQU0sRUFBRUMsaUJBQWlCLEVBQUVDLFVBQVUsRUFBRSxHQUFHWiwrREFBZUE7SUFHN0UsYUFBYTtJQUNiLE1BQU1hLGFBQWE7UUFDZix5Q0FBeUM7UUFDekMsSUFBSU4sWUFBWU8sb0JBQW9CO1lBQ2hDLElBQUlQLFdBQVdPLGtCQUFrQixLQUFLLFFBQVEsT0FBTztZQUNyRCxPQUFPUCxXQUFXTyxrQkFBa0IsS0FBSyxTQUFTLGlCQUFpQjtRQUN2RTtRQUNBLHlCQUF5QjtRQUN6QixJQUFJUCxZQUFZUSxpQkFBaUI7WUFDN0IsT0FBT1IsV0FBV1EsZUFBZSxLQUFLLFNBQVMsaUJBQWlCO1FBQ3BFO1FBQ0EseUJBQXlCO1FBQ3pCLElBQUlSLFlBQVlTLGlCQUFpQjtZQUM3QixPQUFPVCxXQUFXUyxlQUFlLEtBQUssU0FBUyxpQkFBaUI7UUFDcEU7UUFDQSxPQUFPO1FBQ1AsT0FBTztJQUNYO0lBRUEsU0FBUztJQUNULE1BQU1DLGdCQUFnQjtRQUNsQix5Q0FBeUM7UUFDekMsSUFBSVYsWUFBWU8sb0JBQW9CO1lBQ2hDLElBQUlQLFdBQVdPLGtCQUFrQixLQUFLLFFBQVEsT0FBTztZQUNyRCxPQUFPUCxXQUFXTyxrQkFBa0IsS0FBSyxTQUFTLE9BQU87UUFDN0Q7UUFDQSx5QkFBeUI7UUFDekIsSUFBSVAsWUFBWVEsaUJBQWlCO1lBQzdCLE9BQU9SLFdBQVdRLGVBQWUsS0FBSyxTQUFTLE9BQU87UUFDMUQ7UUFDQSx5QkFBeUI7UUFDekIsSUFBSVIsWUFBWVMsaUJBQWlCO1lBQzdCLE9BQU9ULFdBQVdTLGVBQWUsS0FBSyxTQUFTLE9BQU87UUFDMUQ7UUFDQSxPQUFPO0lBQ1g7SUFFQSxNQUFNRSxhQUFhO1FBQ2YsSUFBSVosUUFBUTtZQUNSQTtZQUNBO1FBQ0o7UUFFQSxJQUFJRixRQUFRO1lBQ1IsTUFBTWUsZ0JBQWdCUCxXQUFXUSxPQUFPLENBQUNDLE1BQU07WUFDL0NaLFdBQVdMLFFBQVFDLE1BQU1jO1FBQzdCLE9BQU8sSUFBSWQsTUFBTTtZQUNiLE1BQU1jLGdCQUFnQlAsV0FBV1EsT0FBTyxDQUFDQyxNQUFNO1lBQy9DVixrQkFBa0JOLE1BQU1jO1FBQzVCLE9BQU87WUFDSFQ7UUFDSjtJQUNKO0lBRUEscUJBQ0ksOERBQUNZO1FBQUlDLFdBQVcsQ0FBQyxvREFBb0QsRUFBRVYsY0FBYzs7WUFFbkZULENBQUFBLFVBQVVDLFFBQVFDLE1BQUssbUJBQ3JCLDhEQUFDa0I7Z0JBQ0dDLFNBQVNQO2dCQUNUSyxXQUFVOzBCQUVWLDRFQUFDRDtvQkFBSUMsV0FBVTs4QkFDWCw0RUFBQ3hCLG1EQUFLQTt3QkFDRjJCLEtBQUt6Qix5REFBV0EsQ0FBQzt3QkFDakIwQixLQUFJO3dCQUNKQyxJQUFJO3dCQUNKTCxXQUFVO3dCQUNWTSxRQUFROzs7Ozs7Ozs7Ozs7Ozs7OzBCQU94Qiw4REFBQ1A7Z0JBQUlDLFdBQVU7MEJBQ1gsNEVBQUNPO29CQUFHUCxXQUFVOzhCQUNUcEIsU0FBU0ksWUFBWXdCOzs7Ozs7Ozs7OzswQkFLMUIsOERBQUNUO2dCQUFJQyxXQUFVOzBCQUNYLDRFQUFDUztvQkFBR1QsV0FBVTs4QkFDVE47Ozs7Ozs7Ozs7Ozs7Ozs7O0FBS3JCIiwic291cmNlcyI6WyIvb3B0L2Rldi9lc3QtZHN4L3NyYy9jb21wb25lbnRzL2xpYi9SZXN1bHRUaXRsZUJhci5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IEltYWdlIGZyb20gJ25leHQvaW1hZ2UnO1xuaW1wb3J0IHVzZURpc3BsYXlTdG9yZSBmcm9tICdAL3N0b3JlL2Rpc3BsYXlTdG9yZSc7XG5pbXBvcnQgeyBnZXRBc3NldFVybCB9IGZyb20gJ0AvdXRpbHMvYXNzZXQnO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBSZXN1bHRUaXRsZUJhcih7IHRpdGxlLCBiYWNrVG8sIHZpZXcsIG9uQmFjaywgdGVzdFJlc3VsdCwgcmVzdWx0IH0pIHtcbiAgICBjb25zdCB7IG5hdmlnYXRlVG8sIGdvQmFjaywgdXBkYXRlQ3VycmVudFZpZXcsIG5hdmlnYXRpb24gfSA9IHVzZURpc3BsYXlTdG9yZSgpO1xuICAgIFxuXG4gICAgLy8g5qC55o2u57uT5p6c6I635Y+W6IOM5pmv6aKc6ImyXG4gICAgY29uc3QgZ2V0QmdDb2xvciA9ICgpID0+IHtcbiAgICAgICAgLy8g5aaC5p6c5a2Y5ZyoQ29wcGVyV2lyZW1hcFJlc3VsdFN0YXR1c++8jOS9v+eUqOmTnOe8hua1i+ivlemAu+i+kVxuICAgICAgICBpZiAodGVzdFJlc3VsdD8uQ29wcGVyUmVzdWx0U3RhdHVzKSB7XG4gICAgICAgICAgICBpZiAodGVzdFJlc3VsdC5Db3BwZXJSZXN1bHRTdGF0dXMgIT09ICdwYXNzJykgcmV0dXJuICdiZy1bI2NlMWQzMV0nO1xuICAgICAgICAgICAgcmV0dXJuIHRlc3RSZXN1bHQuQ29wcGVyUmVzdWx0U3RhdHVzID09PSAncGFzcycgPyAnYmctWyMwMEE2NUFdJyA6ICdiZy1bI2NlMWQzMV0nO1xuICAgICAgICB9XG4gICAgICAgIC8vIOWmguaenOWtmOWcqE9GUFN0YXR1c++8jOS9v+eUqOWFiee6pOa1i+ivlemAu+i+kVxuICAgICAgICBpZiAodGVzdFJlc3VsdD8uQ0ZQUmVzdWx0U3RhdHVzKSB7XG4gICAgICAgICAgICByZXR1cm4gdGVzdFJlc3VsdC5DRlBSZXN1bHRTdGF0dXMgPT09ICdwYXNzJyA/ICdiZy1bIzAwQTY1QV0nIDogJ2JnLVsjY2UxZDMxXSc7XG4gICAgICAgIH1cbiAgICAgICAgLy8g5aaC5p6c5a2Y5ZyoT0ZQU3RhdHVz77yM5L2/55So5YWJ57qk5rWL6K+V6YC76L6RXG4gICAgICAgIGlmICh0ZXN0UmVzdWx0Py5vZnBSZXN1bHRTdGF0dXMpIHtcbiAgICAgICAgICAgIHJldHVybiB0ZXN0UmVzdWx0Lm9mcFJlc3VsdFN0YXR1cyA9PT0gJ3Bhc3MnID8gJ2JnLVsjMDBBNjVBXScgOiAnYmctWyNjZTFkMzFdJztcbiAgICAgICAgfVxuICAgICAgICAvLyDpu5jorqTok53oibJcbiAgICAgICAgcmV0dXJuICdiZy1bIzAwMzM2Nl0nO1xuICAgIH07XG4gIFxuICAgIC8vIOiOt+WPlue7k+aenOaWh+acrFxuICAgIGNvbnN0IGdldFJlc3VsdFRleHQgPSAoKSA9PiB7XG4gICAgICAgIC8vIOWmguaenOWtmOWcqENvcHBlcldpcmVtYXBSZXN1bHRTdGF0dXPvvIzkvb/nlKjpk5znvIbmtYvor5XpgLvovpFcbiAgICAgICAgaWYgKHRlc3RSZXN1bHQ/LkNvcHBlclJlc3VsdFN0YXR1cykge1xuICAgICAgICAgICAgaWYgKHRlc3RSZXN1bHQuQ29wcGVyUmVzdWx0U3RhdHVzICE9PSAncGFzcycpIHJldHVybiAn5aSx6LSlJztcbiAgICAgICAgICAgIHJldHVybiB0ZXN0UmVzdWx0LkNvcHBlclJlc3VsdFN0YXR1cyA9PT0gJ3Bhc3MnID8gJ+mAmui/hycgOiAn5aSx6LSlJztcbiAgICAgICAgfVxuICAgICAgICAvLyDlpoLmnpzlrZjlnKhDRlBTdGF0dXPvvIzkvb/nlKjlhYnnuqTmtYvor5XpgLvovpFcbiAgICAgICAgaWYgKHRlc3RSZXN1bHQ/LkNGUFJlc3VsdFN0YXR1cykge1xuICAgICAgICAgICAgcmV0dXJuIHRlc3RSZXN1bHQuQ0ZQUmVzdWx0U3RhdHVzID09PSAncGFzcycgPyAn6YCa6L+HJyA6ICflpLHotKUnO1xuICAgICAgICB9XG4gICAgICAgIC8vIOWmguaenOWtmOWcqE9GUFN0YXR1c++8jOS9v+eUqOWFiee6pOa1i+ivlemAu+i+kVxuICAgICAgICBpZiAodGVzdFJlc3VsdD8ub2ZwUmVzdWx0U3RhdHVzKSB7XG4gICAgICAgICAgICByZXR1cm4gdGVzdFJlc3VsdC5vZnBSZXN1bHRTdGF0dXMgPT09ICdwYXNzJyA/ICfpgJrov4cnIDogJ+Wksei0pSc7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfTtcblxuICAgIGNvbnN0IGhhbmRsZUJhY2sgPSAoKSA9PiB7XG4gICAgICAgIGlmIChvbkJhY2spIHtcbiAgICAgICAgICAgIG9uQmFjaygpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGJhY2tUbykge1xuICAgICAgICAgICAgY29uc3QgY3VycmVudFBhcmFtcyA9IG5hdmlnYXRpb24uY3VycmVudC5wYXJhbXM7XG4gICAgICAgICAgICBuYXZpZ2F0ZVRvKGJhY2tUbywgdmlldywgY3VycmVudFBhcmFtcyk7XG4gICAgICAgIH0gZWxzZSBpZiAodmlldykge1xuICAgICAgICAgICAgY29uc3QgY3VycmVudFBhcmFtcyA9IG5hdmlnYXRpb24uY3VycmVudC5wYXJhbXM7XG4gICAgICAgICAgICB1cGRhdGVDdXJyZW50Vmlldyh2aWV3LCBjdXJyZW50UGFyYW1zKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGdvQmFjaygpO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIHJldHVybiAoXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPXtgaC1bNjBweF0gZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIHJlbGF0aXZlICR7Z2V0QmdDb2xvcigpfWB9PlxuICAgICAgICB7Lyog6L+U5Zue5oyJ6ZKuICovfVxuICAgICAgICB7KGJhY2tUbyB8fCB2aWV3IHx8IG9uQmFjaykgJiYgKFxuICAgICAgICAgICAgPGJ1dHRvbiBcbiAgICAgICAgICAgICAgICBvbkNsaWNrPXtoYW5kbGVCYWNrfVxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInctWzYwcHhdIGgtZnVsbCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlclwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LTEyIGgtMTIgcmVsYXRpdmVcIj5cbiAgICAgICAgICAgICAgICAgICAgPEltYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICBzcmM9e2dldEFzc2V0VXJsKCcvYmFjay5wbmcnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGFsdD1cIui/lOWbnlwiXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWxsXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJvYmplY3QtY29udGFpblwiXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmlvcml0eVxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICl9XG5cbiAgICAgICAgey8qIOagh+mimCAtIOS/ruaUueS4uuW3puWvuem9kCAqL31cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4LTEgZmxleCBpdGVtcy1jZW50ZXIgbWwtNFwiPlxuICAgICAgICAgICAgPGgxIGNsYXNzTmFtZT1cInRleHQtd2hpdGUgZm9udC1ib2xkIHRleHQtbFwiPlxuICAgICAgICAgICAgICAgIHt0aXRsZSB8fCB0ZXN0UmVzdWx0Py5uYW1lfVxuICAgICAgICAgICAgPC9oMT5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgey8qIOe7k+aenOaYvuekuiAqL31cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibXItNFwiPlxuICAgICAgICAgICAgICAgIDxoMiBjbGFzc05hbWU9XCJ0ZXh0LXdoaXRlIGZvbnQtYm9sZCB0ZXh0LTJ4bFwiPlxuICAgICAgICAgICAgICAgICAgICB7Z2V0UmVzdWx0VGV4dCgpfVxuICAgICAgICAgICAgICAgIDwvaDI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICApO1xufSJdLCJuYW1lcyI6WyJSZWFjdCIsIkltYWdlIiwidXNlRGlzcGxheVN0b3JlIiwiZ2V0QXNzZXRVcmwiLCJSZXN1bHRUaXRsZUJhciIsInRpdGxlIiwiYmFja1RvIiwidmlldyIsIm9uQmFjayIsInRlc3RSZXN1bHQiLCJyZXN1bHQiLCJuYXZpZ2F0ZVRvIiwiZ29CYWNrIiwidXBkYXRlQ3VycmVudFZpZXciLCJuYXZpZ2F0aW9uIiwiZ2V0QmdDb2xvciIsIkNvcHBlclJlc3VsdFN0YXR1cyIsIkNGUFJlc3VsdFN0YXR1cyIsIm9mcFJlc3VsdFN0YXR1cyIsImdldFJlc3VsdFRleHQiLCJoYW5kbGVCYWNrIiwiY3VycmVudFBhcmFtcyIsImN1cnJlbnQiLCJwYXJhbXMiLCJkaXYiLCJjbGFzc05hbWUiLCJidXR0b24iLCJvbkNsaWNrIiwic3JjIiwiYWx0IiwiZmlsbCIsInByaW9yaXR5IiwiaDEiLCJuYW1lIiwiaDIiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(pages-dir-node)/./src/components/lib/ResultTitleBar.js\n"); /***/ }), /***/ "(pages-dir-node)/./src/components/lib/StatusBar.js": /*!*****************************************!*\ !*** ./src/components/lib/StatusBar.js ***! \*****************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; eval("__webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ StatusBar)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"react/jsx-dev-runtime\");\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 */ \"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var next_image__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! next/image */ \"(pages-dir-node)/./node_modules/next/image.js\");\n/* harmony import */ var next_image__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(next_image__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _store_deviceStore__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/store/deviceStore */ \"(pages-dir-node)/./src/store/deviceStore.js\");\n/* harmony import */ var _utils_asset__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/utils/asset */ \"(pages-dir-node)/./src/utils/asset.js\");\n/* harmony import */ var _components_AudioProvider__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/components/AudioProvider */ \"(pages-dir-node)/./src/components/AudioProvider.js\");\nvar __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_store_deviceStore__WEBPACK_IMPORTED_MODULE_3__, _utils_asset__WEBPACK_IMPORTED_MODULE_4__, _components_AudioProvider__WEBPACK_IMPORTED_MODULE_5__]);\n([_store_deviceStore__WEBPACK_IMPORTED_MODULE_3__, _utils_asset__WEBPACK_IMPORTED_MODULE_4__, _components_AudioProvider__WEBPACK_IMPORTED_MODULE_5__] = __webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__);\n\n\n\n\n\n\nfunction StatusBar() {\n const [time, setTime] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)('');\n const { connectionStatus, estmodel } = (0,_store_deviceStore__WEBPACK_IMPORTED_MODULE_3__[\"default\"])();\n const { play } = (0,_components_AudioProvider__WEBPACK_IMPORTED_MODULE_5__.useAudio)();\n const ConnectStatus = connectionStatus?.CFPConnectStatus ?? connectionStatus?.['8000ConnectStatus'] ?? false;\n //console.log(connectionStatus);\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)({\n \"StatusBar.useEffect\": ()=>{\n // 只在客户端更新时间\n const updateTime = {\n \"StatusBar.useEffect.updateTime\": ()=>{\n const now = new Date();\n const year = now.getFullYear();\n const month = String(now.getMonth() + 1).padStart(2, '0');\n const day = String(now.getDate()).padStart(2, '0');\n const hours = String(now.getHours()).padStart(2, '0');\n const minutes = String(now.getMinutes()).padStart(2, '0');\n const seconds = String(now.getSeconds()).padStart(2, '0');\n setTime(`${year}/${month}/${day} ${hours}:${minutes}:${seconds}`);\n }\n }[\"StatusBar.useEffect.updateTime\"];\n // 立即更新一次\n updateTime();\n // 每秒更新一次\n const timer = setInterval(updateTime, 1000);\n // 清理定时器\n return ({\n \"StatusBar.useEffect\": ()=>clearInterval(timer)\n })[\"StatusBar.useEffect\"];\n }\n }[\"StatusBar.useEffect\"], []);\n // 用于保存上一个状态\n const [previousConnectStatus, setPreviousConnectStatus] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(ConnectStatus);\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)({\n \"StatusBar.useEffect\": ()=>{\n // 当 ConnectStatus 变化时执行\n if (ConnectStatus !== previousConnectStatus) {\n if (ConnectStatus) {\n play('connect');\n } else {\n play('disconnect');\n }\n // 更新上一个状态\n setPreviousConnectStatus(ConnectStatus);\n }\n }\n }[\"StatusBar.useEffect\"], [\n ConnectStatus,\n previousConnectStatus\n ]);\n return estmodel === 'general' ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[30px] bg-[#000000] flex justify-between items-center px-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-white text-sm\",\n children: time\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/StatusBar.js\",\n lineNumber: 60,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center\",\n children: [\n ConnectStatus && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-10 h-6 relative ml-2\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: (0,_utils_asset__WEBPACK_IMPORTED_MODULE_4__.getAssetUrl)('/connect.png'),\n alt: \"连接状态\",\n sizes: \"auto\",\n fill: true,\n className: \"object-contain\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/StatusBar.js\",\n lineNumber: 68,\n columnNumber: 29\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/StatusBar.js\",\n lineNumber: 67,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-8 h-6 relative\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: (0,_utils_asset__WEBPACK_IMPORTED_MODULE_4__.getAssetUrl)('/battery.png'),\n alt: \"电池\",\n sizes: \"auto\",\n fill: true,\n className: \"object-contain\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/StatusBar.js\",\n lineNumber: 78,\n columnNumber: 25\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/StatusBar.js\",\n lineNumber: 77,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-white text-sm\",\n children: \"100%\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/StatusBar.js\",\n lineNumber: 86,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/StatusBar.js\",\n lineNumber: 64,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/StatusBar.js\",\n lineNumber: 58,\n columnNumber: 13\n }, this) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[30px] bg-[#000000] flex justify-between items-center px-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-8 h-6 relative\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: (0,_utils_asset__WEBPACK_IMPORTED_MODULE_4__.getAssetUrl)('/battery.png'),\n alt: \"电池\",\n sizes: \"auto\",\n fill: true,\n className: \"object-contain\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/StatusBar.js\",\n lineNumber: 94,\n columnNumber: 25\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/StatusBar.js\",\n lineNumber: 93,\n columnNumber: 21\n }, this),\n ConnectStatus && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-10 h-6 relative ml-2\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: (0,_utils_asset__WEBPACK_IMPORTED_MODULE_4__.getAssetUrl)('/connect.png'),\n alt: \"连接状态\",\n sizes: \"auto\",\n fill: true,\n className: \"object-contain\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/StatusBar.js\",\n lineNumber: 105,\n columnNumber: 29\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/StatusBar.js\",\n lineNumber: 104,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/StatusBar.js\",\n lineNumber: 92,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-white text-sm\",\n children: time\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/StatusBar.js\",\n lineNumber: 115,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/StatusBar.js\",\n lineNumber: 91,\n columnNumber: 13\n }, this);\n}\n\n__webpack_async_result__();\n} catch(e) { __webpack_async_result__(e); } });//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHBhZ2VzLWRpci1ub2RlKS8uL3NyYy9jb21wb25lbnRzL2xpYi9TdGF0dXNCYXIuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBbUQ7QUFDcEI7QUFDa0I7QUFDTDtBQUNVO0FBR3ZDLFNBQVNPO0lBQ3BCLE1BQU0sQ0FBQ0MsTUFBTUMsUUFBUSxHQUFHUiwrQ0FBUUEsQ0FBQztJQUNqQyxNQUFNLEVBQUVTLGdCQUFnQixFQUFFQyxRQUFRLEVBQUUsR0FBR1AsOERBQWNBO0lBQ3JELE1BQU0sRUFBRVEsSUFBSSxFQUFFLEdBQUdOLG1FQUFRQTtJQUN6QixNQUFNTyxnQkFBZ0JILGtCQUFrQkksb0JBQW9CSixrQkFBa0IsQ0FBQyxvQkFBb0IsSUFBSTtJQUN2RyxnQ0FBZ0M7SUFFaENSLGdEQUFTQTsrQkFBQztZQUNOLFlBQVk7WUFDWixNQUFNYTtrREFBYTtvQkFDZixNQUFNQyxNQUFNLElBQUlDO29CQUNoQixNQUFNQyxPQUFPRixJQUFJRyxXQUFXO29CQUM1QixNQUFNQyxRQUFRQyxPQUFPTCxJQUFJTSxRQUFRLEtBQUssR0FBR0MsUUFBUSxDQUFDLEdBQUc7b0JBQ3JELE1BQU1DLE1BQU1ILE9BQU9MLElBQUlTLE9BQU8sSUFBSUYsUUFBUSxDQUFDLEdBQUc7b0JBQzlDLE1BQU1HLFFBQVFMLE9BQU9MLElBQUlXLFFBQVEsSUFBSUosUUFBUSxDQUFDLEdBQUc7b0JBQ2pELE1BQU1LLFVBQVVQLE9BQU9MLElBQUlhLFVBQVUsSUFBSU4sUUFBUSxDQUFDLEdBQUc7b0JBQ3JELE1BQU1PLFVBQVVULE9BQU9MLElBQUllLFVBQVUsSUFBSVIsUUFBUSxDQUFDLEdBQUc7b0JBRXJEZCxRQUFRLEdBQUdTLEtBQUssQ0FBQyxFQUFFRSxNQUFNLENBQUMsRUFBRUksSUFBSSxDQUFDLEVBQUVFLE1BQU0sQ0FBQyxFQUFFRSxRQUFRLENBQUMsRUFBRUUsU0FBUztnQkFDcEU7O1lBRUEsU0FBUztZQUNUZjtZQUVBLFNBQVM7WUFDVCxNQUFNaUIsUUFBUUMsWUFBWWxCLFlBQVk7WUFFdEMsUUFBUTtZQUNSO3VDQUFPLElBQU1tQixjQUFjRjs7UUFDL0I7OEJBQUcsRUFBRTtJQUVMLFlBQVk7SUFDWixNQUFNLENBQUNHLHVCQUF1QkMseUJBQXlCLEdBQUduQywrQ0FBUUEsQ0FBQ1k7SUFFbkVYLGdEQUFTQTsrQkFBQztZQUVOLHdCQUF3QjtZQUN4QixJQUFJVyxrQkFBa0JzQix1QkFBdUI7Z0JBQ3pDLElBQUl0QixlQUFlO29CQUNmRCxLQUFLO2dCQUNULE9BQU87b0JBQ0hBLEtBQUs7Z0JBQ1Q7Z0JBQ0EsVUFBVTtnQkFDVndCLHlCQUF5QnZCO1lBQzdCO1FBQ0o7OEJBQUc7UUFBQ0E7UUFBZXNCO0tBQXNCO0lBRXpDLE9BQ0l4QixhQUFhLDBCQUNULDhEQUFDMEI7UUFBSUMsV0FBVTs7MEJBRVgsOERBQUNEO2dCQUFJQyxXQUFVOzBCQUNWOUI7Ozs7OzswQkFHTCw4REFBQzZCO2dCQUFJQyxXQUFVOztvQkFFVnpCLCtCQUNHLDhEQUFDd0I7d0JBQUlDLFdBQVU7a0NBQ1gsNEVBQUNuQyxtREFBS0E7NEJBQ0ZvQyxLQUFLbEMseURBQVdBLENBQUM7NEJBQ2pCbUMsS0FBSTs0QkFDSkMsT0FBTzs0QkFDUEMsSUFBSTs0QkFDSkosV0FBVTs7Ozs7Ozs7Ozs7a0NBSXRCLDhEQUFDRDt3QkFBSUMsV0FBVTtrQ0FDWCw0RUFBQ25DLG1EQUFLQTs0QkFDRm9DLEtBQUtsQyx5REFBV0EsQ0FBQzs0QkFDakJtQyxLQUFJOzRCQUNKQyxPQUFPOzRCQUNQQyxJQUFJOzRCQUNKSixXQUFVOzs7Ozs7Ozs7OztrQ0FHbEIsOERBQUNEO3dCQUFJQyxXQUFVO2tDQUFxQjs7Ozs7Ozs7Ozs7Ozs7Ozs7NkJBSzVDLDhEQUFDRDtRQUFJQyxXQUFVOzswQkFDWCw4REFBQ0Q7Z0JBQUlDLFdBQVU7O2tDQUNYLDhEQUFDRDt3QkFBSUMsV0FBVTtrQ0FDWCw0RUFBQ25DLG1EQUFLQTs0QkFDRm9DLEtBQUtsQyx5REFBV0EsQ0FBQzs0QkFDakJtQyxLQUFJOzRCQUNKQyxPQUFPOzRCQUNQQyxJQUFJOzRCQUNKSixXQUFVOzs7Ozs7Ozs7OztvQkFJakJ6QiwrQkFDRyw4REFBQ3dCO3dCQUFJQyxXQUFVO2tDQUNYLDRFQUFDbkMsbURBQUtBOzRCQUNGb0MsS0FBS2xDLHlEQUFXQSxDQUFDOzRCQUNqQm1DLEtBQUk7NEJBQ0pDLE9BQU87NEJBQ1BDLElBQUk7NEJBQ0pKLFdBQVU7Ozs7Ozs7Ozs7Ozs7Ozs7OzBCQUsxQiw4REFBQ0Q7Z0JBQUlDLFdBQVU7MEJBQ1Y5Qjs7Ozs7Ozs7Ozs7O0FBS3JCIiwic291cmNlcyI6WyIvb3B0L2Rldi9lc3QtZHN4L3NyYy9jb21wb25lbnRzL2xpYi9TdGF0dXNCYXIuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlLCB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCc7XHJcbmltcG9ydCBJbWFnZSBmcm9tICduZXh0L2ltYWdlJztcclxuaW1wb3J0IHVzZURldmljZVN0b3JlIGZyb20gJ0Avc3RvcmUvZGV2aWNlU3RvcmUnO1xyXG5pbXBvcnQgeyBnZXRBc3NldFVybCB9IGZyb20gJ0AvdXRpbHMvYXNzZXQnO1xyXG5pbXBvcnQgeyB1c2VBdWRpbyB9IGZyb20gJ0AvY29tcG9uZW50cy9BdWRpb1Byb3ZpZGVyJztcclxuXHJcblxyXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBTdGF0dXNCYXIoKSB7XHJcbiAgICBjb25zdCBbdGltZSwgc2V0VGltZV0gPSB1c2VTdGF0ZSgnJyk7XHJcbiAgICBjb25zdCB7IGNvbm5lY3Rpb25TdGF0dXMsIGVzdG1vZGVsIH0gPSB1c2VEZXZpY2VTdG9yZSgpO1xyXG4gICAgY29uc3QgeyBwbGF5IH0gPSB1c2VBdWRpbygpO1xyXG4gICAgY29uc3QgQ29ubmVjdFN0YXR1cyA9IGNvbm5lY3Rpb25TdGF0dXM/LkNGUENvbm5lY3RTdGF0dXMgPz8gY29ubmVjdGlvblN0YXR1cz8uWyc4MDAwQ29ubmVjdFN0YXR1cyddID8/IGZhbHNlO1xyXG4gICAgLy9jb25zb2xlLmxvZyhjb25uZWN0aW9uU3RhdHVzKTtcclxuICAgIFxyXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcclxuICAgICAgICAvLyDlj6rlnKjlrqLmiLfnq6/mm7TmlrDml7bpl7RcclxuICAgICAgICBjb25zdCB1cGRhdGVUaW1lID0gKCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xyXG4gICAgICAgICAgICBjb25zdCB5ZWFyID0gbm93LmdldEZ1bGxZZWFyKCk7XHJcbiAgICAgICAgICAgIGNvbnN0IG1vbnRoID0gU3RyaW5nKG5vdy5nZXRNb250aCgpICsgMSkucGFkU3RhcnQoMiwgJzAnKTtcclxuICAgICAgICAgICAgY29uc3QgZGF5ID0gU3RyaW5nKG5vdy5nZXREYXRlKCkpLnBhZFN0YXJ0KDIsICcwJyk7XHJcbiAgICAgICAgICAgIGNvbnN0IGhvdXJzID0gU3RyaW5nKG5vdy5nZXRIb3VycygpKS5wYWRTdGFydCgyLCAnMCcpO1xyXG4gICAgICAgICAgICBjb25zdCBtaW51dGVzID0gU3RyaW5nKG5vdy5nZXRNaW51dGVzKCkpLnBhZFN0YXJ0KDIsICcwJyk7XHJcbiAgICAgICAgICAgIGNvbnN0IHNlY29uZHMgPSBTdHJpbmcobm93LmdldFNlY29uZHMoKSkucGFkU3RhcnQoMiwgJzAnKTtcclxuXHJcbiAgICAgICAgICAgIHNldFRpbWUoYCR7eWVhcn0vJHttb250aH0vJHtkYXl9ICR7aG91cnN9OiR7bWludXRlc306JHtzZWNvbmRzfWApO1xyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIC8vIOeri+WNs+abtOaWsOS4gOasoVxyXG4gICAgICAgIHVwZGF0ZVRpbWUoKTtcclxuXHJcbiAgICAgICAgLy8g5q+P56eS5pu05paw5LiA5qyhXHJcbiAgICAgICAgY29uc3QgdGltZXIgPSBzZXRJbnRlcnZhbCh1cGRhdGVUaW1lLCAxMDAwKTtcclxuXHJcbiAgICAgICAgLy8g5riF55CG5a6a5pe25ZmoXHJcbiAgICAgICAgcmV0dXJuICgpID0+IGNsZWFySW50ZXJ2YWwodGltZXIpO1xyXG4gICAgfSwgW10pO1xyXG5cclxuICAgIC8vIOeUqOS6juS/neWtmOS4iuS4gOS4queKtuaAgVxyXG4gICAgY29uc3QgW3ByZXZpb3VzQ29ubmVjdFN0YXR1cywgc2V0UHJldmlvdXNDb25uZWN0U3RhdHVzXSA9IHVzZVN0YXRlKENvbm5lY3RTdGF0dXMpO1xyXG4gICAgXHJcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xyXG4gICAgICAgIFxyXG4gICAgICAgIC8vIOW9kyBDb25uZWN0U3RhdHVzIOWPmOWMluaXtuaJp+ihjFxyXG4gICAgICAgIGlmIChDb25uZWN0U3RhdHVzICE9PSBwcmV2aW91c0Nvbm5lY3RTdGF0dXMpIHtcclxuICAgICAgICAgICAgaWYgKENvbm5lY3RTdGF0dXMpIHtcclxuICAgICAgICAgICAgICAgIHBsYXkoJ2Nvbm5lY3QnKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHBsYXkoJ2Rpc2Nvbm5lY3QnKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyDmm7TmlrDkuIrkuIDkuKrnirbmgIFcclxuICAgICAgICAgICAgc2V0UHJldmlvdXNDb25uZWN0U3RhdHVzKENvbm5lY3RTdGF0dXMpO1xyXG4gICAgICAgIH1cclxuICAgIH0sIFtDb25uZWN0U3RhdHVzLCBwcmV2aW91c0Nvbm5lY3RTdGF0dXNdKTtcclxuXHJcbiAgICByZXR1cm4gKFxyXG4gICAgICAgIGVzdG1vZGVsID09PSAnZ2VuZXJhbCcgPyAoXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaC1bMzBweF0gYmctWyMwMDAwMDBdIGZsZXgganVzdGlmeS1iZXR3ZWVuIGl0ZW1zLWNlbnRlciBweC00XCI+XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC13aGl0ZSB0ZXh0LXNtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAge3RpbWV9XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIHsvKiDmoLnmja4gQ29ubmVjdFN0YXR1cyDmmL7npLrov57mjqXlm77moIcgKi99XHJcbiAgICAgICAgICAgICAgICAgICAge0Nvbm5lY3RTdGF0dXMgJiYgKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctMTAgaC02IHJlbGF0aXZlIG1sLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJbWFnZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz17Z2V0QXNzZXRVcmwoJy9jb25uZWN0LnBuZycpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdD1cIui/nuaOpeeKtuaAgVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZXM9e1wiYXV0b1wifVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJvYmplY3QtY29udGFpblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy04IGgtNiByZWxhdGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8SW1hZ2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz17Z2V0QXNzZXRVcmwoJy9iYXR0ZXJ5LnBuZycpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0PVwi55S15rGgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVzPXtcImF1dG9cIn1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cIm9iamVjdC1jb250YWluXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtd2hpdGUgdGV4dC1zbVwiPjEwMCU8L2Rpdj5cclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICk6KFxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImgtWzMwcHhdIGJnLVsjMDAwMDAwXSBmbGV4IGp1c3RpZnktYmV0d2VlbiBpdGVtcy1jZW50ZXIgcHgtNFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy04IGgtNiByZWxhdGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8SW1hZ2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz17Z2V0QXNzZXRVcmwoJy9iYXR0ZXJ5LnBuZycpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0PVwi55S15rGgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVzPXtcImF1dG9cIn1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cIm9iamVjdC1jb250YWluXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICB7Lyog5qC55o2uIENvbm5lY3RTdGF0dXMg5pi+56S66L+e5o6l5Zu+5qCHICovfVxyXG4gICAgICAgICAgICAgICAgICAgIHtDb25uZWN0U3RhdHVzICYmIChcclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LTEwIGgtNiByZWxhdGl2ZSBtbC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SW1hZ2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9e2dldEFzc2V0VXJsKCcvY29ubmVjdC5wbmcnKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ9XCLov57mjqXnirbmgIFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVzPXtcImF1dG9cIn1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwib2JqZWN0LWNvbnRhaW5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LXdoaXRlIHRleHQtc21cIj5cclxuICAgICAgICAgICAgICAgICAgICB7dGltZX1cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICApXHJcbiAgICApO1xyXG59XHJcbiJdLCJuYW1lcyI6WyJSZWFjdCIsInVzZVN0YXRlIiwidXNlRWZmZWN0IiwiSW1hZ2UiLCJ1c2VEZXZpY2VTdG9yZSIsImdldEFzc2V0VXJsIiwidXNlQXVkaW8iLCJTdGF0dXNCYXIiLCJ0aW1lIiwic2V0VGltZSIsImNvbm5lY3Rpb25TdGF0dXMiLCJlc3Rtb2RlbCIsInBsYXkiLCJDb25uZWN0U3RhdHVzIiwiQ0ZQQ29ubmVjdFN0YXR1cyIsInVwZGF0ZVRpbWUiLCJub3ciLCJEYXRlIiwieWVhciIsImdldEZ1bGxZZWFyIiwibW9udGgiLCJTdHJpbmciLCJnZXRNb250aCIsInBhZFN0YXJ0IiwiZGF5IiwiZ2V0RGF0ZSIsImhvdXJzIiwiZ2V0SG91cnMiLCJtaW51dGVzIiwiZ2V0TWludXRlcyIsInNlY29uZHMiLCJnZXRTZWNvbmRzIiwidGltZXIiLCJzZXRJbnRlcnZhbCIsImNsZWFySW50ZXJ2YWwiLCJwcmV2aW91c0Nvbm5lY3RTdGF0dXMiLCJzZXRQcmV2aW91c0Nvbm5lY3RTdGF0dXMiLCJkaXYiLCJjbGFzc05hbWUiLCJzcmMiLCJhbHQiLCJzaXplcyIsImZpbGwiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(pages-dir-node)/./src/components/lib/StatusBar.js\n"); /***/ }), /***/ "(pages-dir-node)/./src/components/lib/StatusToast.js": /*!*******************************************!*\ !*** ./src/components/lib/StatusToast.js ***! \*******************************************/ /***/ ((__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_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"react/jsx-dev-runtime\");\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 */ \"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n\n\nconst StatusToast = ({ status })=>{\n const getBackgroundColor = (status)=>{\n if (status === '已清洁') return 'rgba(0, 200, 0, 0.5)';\n if (status === '未清洁') return 'rgba(255, 0, 0, 0.5)';\n return 'rgba(0, 62, 106, 0.78)';\n };\n const getPosition = (status)=>{\n if (status === '已清洁' || status === '未清洁') {\n return {\n bottom: '2%',\n right: '2%'\n };\n }\n return {\n bottom: '2%',\n right: '8%'\n };\n };\n const position = getPosition(status);\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n style: {\n position: 'fixed',\n ...position,\n padding: '1% 1%',\n background: getBackgroundColor(status),\n color: 'rgb(255, 255, 255)',\n borderRadius: '5px',\n fontWeight: 'bold',\n zIndex: 5001,\n boxShadow: '0 2px 10px rgba(0, 0, 0, 0.2)'\n },\n children: status\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/StatusToast.js\",\n lineNumber: 20,\n columnNumber: 5\n }, undefined);\n};\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (StatusToast);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHBhZ2VzLWRpci1ub2RlKS8uL3NyYy9jb21wb25lbnRzL2xpYi9TdGF0dXNUb2FzdC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBMEI7QUFFMUIsTUFBTUMsY0FBYyxDQUFDLEVBQUVDLE1BQU0sRUFBRTtJQUM3QixNQUFNQyxxQkFBcUIsQ0FBQ0Q7UUFDMUIsSUFBSUEsV0FBVyxPQUFPLE9BQU87UUFDN0IsSUFBSUEsV0FBVyxPQUFPLE9BQU87UUFDN0IsT0FBTztJQUNUO0lBRUEsTUFBTUUsY0FBYyxDQUFDRjtRQUNuQixJQUFJQSxXQUFXLFNBQVNBLFdBQVcsT0FBTztZQUN4QyxPQUFPO2dCQUFFRyxRQUFRO2dCQUFNQyxPQUFPO1lBQUs7UUFDckM7UUFDQSxPQUFPO1lBQUVELFFBQVE7WUFBTUMsT0FBTztRQUFLO0lBQ3JDO0lBRUEsTUFBTUMsV0FBV0gsWUFBWUY7SUFFN0IscUJBQ0UsOERBQUNNO1FBQ0NDLE9BQU87WUFDTEYsVUFBVTtZQUNWLEdBQUdBLFFBQVE7WUFDWEcsU0FBUztZQUNUQyxZQUFZUixtQkFBbUJEO1lBQy9CVSxPQUFPO1lBQ1BDLGNBQWM7WUFDZEMsWUFBWTtZQUNaQyxRQUFRO1lBQ1JDLFdBQVc7UUFDYjtrQkFFQ2Q7Ozs7OztBQUdQO0FBRUEsaUVBQWVELFdBQVdBLEVBQUMiLCJzb3VyY2VzIjpbIi9vcHQvZGV2L2VzdC1kc3gvc3JjL2NvbXBvbmVudHMvbGliL1N0YXR1c1RvYXN0LmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XHJcblxyXG5jb25zdCBTdGF0dXNUb2FzdCA9ICh7IHN0YXR1cyB9KSA9PiB7XHJcbiAgY29uc3QgZ2V0QmFja2dyb3VuZENvbG9yID0gKHN0YXR1cykgPT4ge1xyXG4gICAgaWYgKHN0YXR1cyA9PT0gJ+W3sua4hea0gScpIHJldHVybiAncmdiYSgwLCAyMDAsIDAsIDAuNSknO1xyXG4gICAgaWYgKHN0YXR1cyA9PT0gJ+acqua4hea0gScpIHJldHVybiAncmdiYSgyNTUsIDAsIDAsIDAuNSknO1xyXG4gICAgcmV0dXJuICdyZ2JhKDAsIDYyLCAxMDYsIDAuNzgpJztcclxuICB9O1xyXG5cclxuICBjb25zdCBnZXRQb3NpdGlvbiA9IChzdGF0dXMpID0+IHtcclxuICAgIGlmIChzdGF0dXMgPT09ICflt7LmuIXmtIEnIHx8IHN0YXR1cyA9PT0gJ+acqua4hea0gScpIHtcclxuICAgICAgcmV0dXJuIHsgYm90dG9tOiAnMiUnLCByaWdodDogJzIlJyB9O1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHsgYm90dG9tOiAnMiUnLCByaWdodDogJzglJyB9O1xyXG4gIH07XHJcblxyXG4gIGNvbnN0IHBvc2l0aW9uID0gZ2V0UG9zaXRpb24oc3RhdHVzKTtcclxuXHJcbiAgcmV0dXJuIChcclxuICAgIDxkaXZcclxuICAgICAgc3R5bGU9e3tcclxuICAgICAgICBwb3NpdGlvbjogJ2ZpeGVkJyxcclxuICAgICAgICAuLi5wb3NpdGlvbixcclxuICAgICAgICBwYWRkaW5nOiAnMSUgMSUnLFxyXG4gICAgICAgIGJhY2tncm91bmQ6IGdldEJhY2tncm91bmRDb2xvcihzdGF0dXMpLFxyXG4gICAgICAgIGNvbG9yOiAncmdiKDI1NSwgMjU1LCAyNTUpJyxcclxuICAgICAgICBib3JkZXJSYWRpdXM6ICc1cHgnLFxyXG4gICAgICAgIGZvbnRXZWlnaHQ6ICdib2xkJyxcclxuICAgICAgICB6SW5kZXg6IDUwMDEsXHJcbiAgICAgICAgYm94U2hhZG93OiAnMCAycHggMTBweCByZ2JhKDAsIDAsIDAsIDAuMiknLFxyXG4gICAgICB9fVxyXG4gICAgPlxyXG4gICAgICB7c3RhdHVzfVxyXG4gICAgPC9kaXY+XHJcbiAgKTtcclxufTtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IFN0YXR1c1RvYXN0OyJdLCJuYW1lcyI6WyJSZWFjdCIsIlN0YXR1c1RvYXN0Iiwic3RhdHVzIiwiZ2V0QmFja2dyb3VuZENvbG9yIiwiZ2V0UG9zaXRpb24iLCJib3R0b20iLCJyaWdodCIsInBvc2l0aW9uIiwiZGl2Iiwic3R5bGUiLCJwYWRkaW5nIiwiYmFja2dyb3VuZCIsImNvbG9yIiwiYm9yZGVyUmFkaXVzIiwiZm9udFdlaWdodCIsInpJbmRleCIsImJveFNoYWRvdyJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(pages-dir-node)/./src/components/lib/StatusToast.js\n"); /***/ }), /***/ "(pages-dir-node)/./src/components/lib/SubTitleBar.js": /*!*******************************************!*\ !*** ./src/components/lib/SubTitleBar.js ***! \*******************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; eval("__webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ SubTitleBar)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"react/jsx-dev-runtime\");\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 */ \"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _store_deviceStore__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/store/deviceStore */ \"(pages-dir-node)/./src/store/deviceStore.js\");\nvar __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_store_deviceStore__WEBPACK_IMPORTED_MODULE_2__]);\n_store_deviceStore__WEBPACK_IMPORTED_MODULE_2__ = (__webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__)[0];\n\n\n\nfunction SubTitleBar({ title }) {\n const { estmodel } = (0,_store_deviceStore__WEBPACK_IMPORTED_MODULE_2__[\"default\"])();\n return estmodel === 'general' ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[60px] bg-gradient-to-b from-[#d5dfeb] via-[#f8f6f7] to-[#d5dfeb] flex items-center justify-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h2\", {\n className: \"text-black font-bold text-lg\",\n children: title\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/SubTitleBar.js\",\n lineNumber: 9,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/SubTitleBar.js\",\n lineNumber: 8,\n columnNumber: 9\n }, this) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[60px] bg-gradient-to-b from-[#b0b0b0] via-[#e0e4e0] to-[#b0b0b0] flex items-center justify-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h2\", {\n className: \"text-black font-bold text-lg\",\n children: title\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/SubTitleBar.js\",\n lineNumber: 15,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/SubTitleBar.js\",\n lineNumber: 14,\n columnNumber: 10\n }, this);\n}\n\n__webpack_async_result__();\n} catch(e) { __webpack_async_result__(e); } });//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHBhZ2VzLWRpci1ub2RlKS8uL3NyYy9jb21wb25lbnRzL2xpYi9TdWJUaXRsZUJhci5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBQTBCO0FBQ3VCO0FBRWxDLFNBQVNFLFlBQVksRUFBRUMsS0FBSyxFQUFFO0lBQ3pDLE1BQU0sRUFBRUMsUUFBUSxFQUFFLEdBQUdILDhEQUFjQTtJQUNuQyxPQUNJRyxhQUFhLDBCQUNiLDhEQUFDQztRQUFJQyxXQUFVO2tCQUNYLDRFQUFDQztZQUFHRCxXQUFVO3NCQUNUSDs7Ozs7Ozs7Ozs2QkFJUiw4REFBQ0U7UUFBSUMsV0FBVTtrQkFDWiw0RUFBQ0M7WUFBR0QsV0FBVTtzQkFDVEg7Ozs7Ozs7Ozs7O0FBS2pCIiwic291cmNlcyI6WyIvb3B0L2Rldi9lc3QtZHN4L3NyYy9jb21wb25lbnRzL2xpYi9TdWJUaXRsZUJhci5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xyXG5pbXBvcnQgdXNlRGV2aWNlU3RvcmUgZnJvbSAnQC9zdG9yZS9kZXZpY2VTdG9yZSc7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBTdWJUaXRsZUJhcih7IHRpdGxlIH0pIHtcclxuICAgIGNvbnN0IHsgZXN0bW9kZWwgfSA9IHVzZURldmljZVN0b3JlKCk7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICAgIGVzdG1vZGVsID09PSAnZ2VuZXJhbCcgPyAoXHJcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJoLVs2MHB4XSBiZy1ncmFkaWVudC10by1iIGZyb20tWyNkNWRmZWJdIHZpYS1bI2Y4ZjZmN10gdG8tWyNkNWRmZWJdIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyXCI+XHJcbiAgICAgICAgICAgIDxoMiBjbGFzc05hbWU9XCJ0ZXh0LWJsYWNrIGZvbnQtYm9sZCB0ZXh0LWxnXCI+XHJcbiAgICAgICAgICAgICAgICB7dGl0bGV9XHJcbiAgICAgICAgICAgIDwvaDI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgKTooXHJcbiAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaC1bNjBweF0gYmctZ3JhZGllbnQtdG8tYiBmcm9tLVsjYjBiMGIwXSB2aWEtWyNlMGU0ZTBdIHRvLVsjYjBiMGIwXSBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlclwiPlxyXG4gICAgICAgICAgICA8aDIgY2xhc3NOYW1lPVwidGV4dC1ibGFjayBmb250LWJvbGQgdGV4dC1sZ1wiPlxyXG4gICAgICAgICAgICAgICAge3RpdGxlfVxyXG4gICAgICAgICAgICA8L2gyPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIClcclxuICAgICk7XHJcbn0gIl0sIm5hbWVzIjpbIlJlYWN0IiwidXNlRGV2aWNlU3RvcmUiLCJTdWJUaXRsZUJhciIsInRpdGxlIiwiZXN0bW9kZWwiLCJkaXYiLCJjbGFzc05hbWUiLCJoMiJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(pages-dir-node)/./src/components/lib/SubTitleBar.js\n"); /***/ }), /***/ "(pages-dir-node)/./src/components/lib/TitleBar.js": /*!****************************************!*\ !*** ./src/components/lib/TitleBar.js ***! \****************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; eval("__webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ TitleBar)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"react/jsx-dev-runtime\");\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 */ \"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var next_image__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! next/image */ \"(pages-dir-node)/./node_modules/next/image.js\");\n/* harmony import */ var next_image__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(next_image__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _store_displayStore__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/store/displayStore */ \"(pages-dir-node)/./src/store/displayStore.js\");\n/* harmony import */ var _store_deviceStore__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/store/deviceStore */ \"(pages-dir-node)/./src/store/deviceStore.js\");\n/* harmony import */ var _utils_asset__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/utils/asset */ \"(pages-dir-node)/./src/utils/asset.js\");\nvar __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_store_displayStore__WEBPACK_IMPORTED_MODULE_3__, _store_deviceStore__WEBPACK_IMPORTED_MODULE_4__, _utils_asset__WEBPACK_IMPORTED_MODULE_5__]);\n([_store_displayStore__WEBPACK_IMPORTED_MODULE_3__, _store_deviceStore__WEBPACK_IMPORTED_MODULE_4__, _utils_asset__WEBPACK_IMPORTED_MODULE_5__] = __webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__);\n\n\n\n\n\n\nfunction TitleBar({ title, backTo, view, onBack }) {\n const { navigateTo, goBack, updateCurrentView, navigation } = (0,_store_displayStore__WEBPACK_IMPORTED_MODULE_3__[\"default\"])();\n const { estmodel } = (0,_store_deviceStore__WEBPACK_IMPORTED_MODULE_4__[\"default\"])();\n const handleBack = ()=>{\n if (onBack) {\n onBack();\n return;\n }\n if (backTo) {\n const currentParams = navigation.current.params;\n navigateTo(backTo, view, currentParams);\n } else if (view) {\n const currentParams = navigation.current.params;\n updateCurrentView(view, currentParams);\n } else {\n goBack();\n }\n };\n return estmodel === 'general' ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[60px] bg-[#132843] flex items-center relative\",\n children: [\n (backTo || view || onBack) && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: handleBack,\n className: \"w-[60px] h-full flex items-center justify-center absolute left-2\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-12 h-12 relative\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: (0,_utils_asset__WEBPACK_IMPORTED_MODULE_5__.getAssetUrl)('/back.png'),\n alt: \"返回\",\n fill: true,\n className: \"object-contain\",\n priority: true\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/TitleBar.js\",\n lineNumber: 39,\n columnNumber: 29\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/TitleBar.js\",\n lineNumber: 38,\n columnNumber: 25\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/TitleBar.js\",\n lineNumber: 34,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h1\", {\n className: \"text-[#F8F6F7] font-bold text-xl absolute right-5 top-1/2 transform -translate-y-1/2\",\n children: title\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/TitleBar.js\",\n lineNumber: 49,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/TitleBar.js\",\n lineNumber: 32,\n columnNumber: 13\n }, this) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[60px] bg-[#303030] flex items-center relative\",\n children: [\n (backTo || view || onBack) && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: handleBack,\n className: \"w-[60px] h-full flex items-center justify-center absolute left-2\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-12 h-12 relative\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: (0,_utils_asset__WEBPACK_IMPORTED_MODULE_5__.getAssetUrl)('/back.png'),\n alt: \"返回\",\n fill: true,\n className: \"object-contain\",\n priority: true\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/TitleBar.js\",\n lineNumber: 61,\n columnNumber: 29\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/TitleBar.js\",\n lineNumber: 60,\n columnNumber: 25\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/TitleBar.js\",\n lineNumber: 56,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h1\", {\n className: \"text-[#f8c828] font-bold text-2xl absolute left-1/2 top-1/2 transform -translate-x-1/2 -translate-y-1/2\",\n children: title\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/TitleBar.js\",\n lineNumber: 71,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/TitleBar.js\",\n lineNumber: 54,\n columnNumber: 13\n }, this);\n// ... existing code ...\n}\n\n__webpack_async_result__();\n} catch(e) { __webpack_async_result__(e); } });//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHBhZ2VzLWRpci1ub2RlKS8uL3NyYy9jb21wb25lbnRzL2xpYi9UaXRsZUJhci5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7OztBQUEwQjtBQUNLO0FBQ29CO0FBQ0Y7QUFDTDtBQUU3QixTQUFTSyxTQUFTLEVBQUVDLEtBQUssRUFBRUMsTUFBTSxFQUFFQyxJQUFJLEVBQUVDLE1BQU0sRUFBRTtJQUM1RCxNQUFNLEVBQUVDLFVBQVUsRUFBRUMsTUFBTSxFQUFFQyxpQkFBaUIsRUFBRUMsVUFBVSxFQUFFLEdBQUdYLCtEQUFlQTtJQUM3RSxNQUFNLEVBQUVZLFFBQVEsRUFBRSxHQUFHWCw4REFBY0E7SUFFbkMsTUFBTVksYUFBYTtRQUVmLElBQUlOLFFBQVE7WUFDUkE7WUFDQTtRQUNKO1FBRUEsSUFBSUYsUUFBUTtZQUNSLE1BQU1TLGdCQUFnQkgsV0FBV0ksT0FBTyxDQUFDQyxNQUFNO1lBQy9DUixXQUFXSCxRQUFRQyxNQUFNUTtRQUU3QixPQUFPLElBQUlSLE1BQU07WUFDYixNQUFNUSxnQkFBZ0JILFdBQVdJLE9BQU8sQ0FBQ0MsTUFBTTtZQUMvQ04sa0JBQWtCSixNQUFNUTtRQUM1QixPQUFPO1lBQ0hMO1FBQ0o7SUFDSjtJQUVILE9BQ09HLGFBQWEsMEJBQ1QsOERBQUNLO1FBQUlDLFdBQVU7O1lBQ1RiLENBQUFBLFVBQVVDLFFBQVFDLE1BQUssbUJBQ3JCLDhEQUFDWTtnQkFDR0MsU0FBU1A7Z0JBQ1RLLFdBQVU7MEJBRVYsNEVBQUNEO29CQUFJQyxXQUFVOzhCQUNYLDRFQUFDbkIsbURBQUtBO3dCQUNGc0IsS0FBS25CLHlEQUFXQSxDQUFDO3dCQUNqQm9CLEtBQUk7d0JBQ0pDLElBQUk7d0JBQ0pMLFdBQVU7d0JBQ1ZNLFFBQVE7Ozs7Ozs7Ozs7Ozs7Ozs7MEJBS3hCLDhEQUFDQztnQkFBR1AsV0FBVTswQkFDVGQ7Ozs7Ozs7Ozs7OzZCQUlULDhEQUFDYTtRQUFJQyxXQUFVOztZQUNUYixDQUFBQSxVQUFVQyxRQUFRQyxNQUFLLG1CQUNyQiw4REFBQ1k7Z0JBQ0dDLFNBQVNQO2dCQUNUSyxXQUFVOzBCQUVWLDRFQUFDRDtvQkFBSUMsV0FBVTs4QkFDWCw0RUFBQ25CLG1EQUFLQTt3QkFDSHNCLEtBQUtuQix5REFBV0EsQ0FBQzt3QkFDaEJvQixLQUFJO3dCQUNKQyxJQUFJO3dCQUNKTCxXQUFVO3dCQUNWTSxRQUFROzs7Ozs7Ozs7Ozs7Ozs7OzBCQUt4Qiw4REFBQ0M7Z0JBQUdQLFdBQVU7MEJBQ1RkOzs7Ozs7Ozs7Ozs7QUFLakIsd0JBQXdCO0FBQzVCIiwic291cmNlcyI6WyIvb3B0L2Rldi9lc3QtZHN4L3NyYy9jb21wb25lbnRzL2xpYi9UaXRsZUJhci5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IEltYWdlIGZyb20gJ25leHQvaW1hZ2UnO1xuaW1wb3J0IHVzZURpc3BsYXlTdG9yZSBmcm9tICdAL3N0b3JlL2Rpc3BsYXlTdG9yZSc7XG5pbXBvcnQgdXNlRGV2aWNlU3RvcmUgZnJvbSAnQC9zdG9yZS9kZXZpY2VTdG9yZSc7XG5pbXBvcnQgeyBnZXRBc3NldFVybCB9IGZyb20gJ0AvdXRpbHMvYXNzZXQnO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBUaXRsZUJhcih7IHRpdGxlLCBiYWNrVG8sIHZpZXcsIG9uQmFjayB9KSB7XG4gICAgY29uc3QgeyBuYXZpZ2F0ZVRvLCBnb0JhY2ssIHVwZGF0ZUN1cnJlbnRWaWV3LCBuYXZpZ2F0aW9uIH0gPSB1c2VEaXNwbGF5U3RvcmUoKTtcbiAgICBjb25zdCB7IGVzdG1vZGVsIH0gPSB1c2VEZXZpY2VTdG9yZSgpO1xuXG4gICAgY29uc3QgaGFuZGxlQmFjayA9ICgpID0+IHtcblxuICAgICAgICBpZiAob25CYWNrKSB7XG4gICAgICAgICAgICBvbkJhY2soKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChiYWNrVG8pIHtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRQYXJhbXMgPSBuYXZpZ2F0aW9uLmN1cnJlbnQucGFyYW1zO1xuICAgICAgICAgICAgbmF2aWdhdGVUbyhiYWNrVG8sIHZpZXcsIGN1cnJlbnRQYXJhbXMpO1xuICAgICAgICAgICAgXG4gICAgICAgIH0gZWxzZSBpZiAodmlldykge1xuICAgICAgICAgICAgY29uc3QgY3VycmVudFBhcmFtcyA9IG5hdmlnYXRpb24uY3VycmVudC5wYXJhbXM7XG4gICAgICAgICAgICB1cGRhdGVDdXJyZW50Vmlldyh2aWV3LCBjdXJyZW50UGFyYW1zKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGdvQmFjaygpO1xuICAgICAgICB9XG4gICAgfTtcblxuIHJldHVybiAoXG4gICAgICAgIGVzdG1vZGVsID09PSAnZ2VuZXJhbCcgPyAoXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImgtWzYwcHhdIGJnLVsjMTMyODQzXSBmbGV4IGl0ZW1zLWNlbnRlciByZWxhdGl2ZVwiPlxuICAgICAgICAgICAgICAgIHsoYmFja1RvIHx8IHZpZXcgfHwgb25CYWNrKSAmJiAoXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXtoYW5kbGVCYWNrfVxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidy1bNjBweF0gaC1mdWxsIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIGFic29sdXRlIGxlZnQtMlwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy0xMiBoLTEyIHJlbGF0aXZlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPEltYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz17Z2V0QXNzZXRVcmwoJy9iYWNrLnBuZycpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ9XCLov5Tlm55cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cIm9iamVjdC1jb250YWluXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpb3JpdHlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgPGgxIGNsYXNzTmFtZT1cInRleHQtWyNGOEY2RjddIGZvbnQtYm9sZCB0ZXh0LXhsIGFic29sdXRlIHJpZ2h0LTUgdG9wLTEvMiB0cmFuc2Zvcm0gLXRyYW5zbGF0ZS15LTEvMlwiPlxuICAgICAgICAgICAgICAgICAgICB7dGl0bGV9XG4gICAgICAgICAgICAgICAgPC9oMT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICApIDogKFxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJoLVs2MHB4XSBiZy1bIzMwMzAzMF0gZmxleCBpdGVtcy1jZW50ZXIgcmVsYXRpdmVcIj5cbiAgICAgICAgICAgICAgICB7KGJhY2tUbyB8fCB2aWV3IHx8IG9uQmFjaykgJiYgKFxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIFxuICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17aGFuZGxlQmFja31cbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInctWzYwcHhdIGgtZnVsbCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBhYnNvbHV0ZSBsZWZ0LTJcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctMTIgaC0xMiByZWxhdGl2ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJbWFnZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz17Z2V0QXNzZXRVcmwoJy9iYWNrLnBuZycpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ9XCLov5Tlm55cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cIm9iamVjdC1jb250YWluXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpb3JpdHlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgPGgxIGNsYXNzTmFtZT1cInRleHQtWyNmOGM4MjhdIGZvbnQtYm9sZCB0ZXh0LTJ4bCBhYnNvbHV0ZSBsZWZ0LTEvMiB0b3AtMS8yIHRyYW5zZm9ybSAtdHJhbnNsYXRlLXgtMS8yIC10cmFuc2xhdGUteS0xLzJcIj5cbiAgICAgICAgICAgICAgICAgICAge3RpdGxlfVxuICAgICAgICAgICAgICAgIDwvaDE+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKVxuICAgICk7XG4gICAgLy8gLi4uIGV4aXN0aW5nIGNvZGUgLi4uXG59Il0sIm5hbWVzIjpbIlJlYWN0IiwiSW1hZ2UiLCJ1c2VEaXNwbGF5U3RvcmUiLCJ1c2VEZXZpY2VTdG9yZSIsImdldEFzc2V0VXJsIiwiVGl0bGVCYXIiLCJ0aXRsZSIsImJhY2tUbyIsInZpZXciLCJvbkJhY2siLCJuYXZpZ2F0ZVRvIiwiZ29CYWNrIiwidXBkYXRlQ3VycmVudFZpZXciLCJuYXZpZ2F0aW9uIiwiZXN0bW9kZWwiLCJoYW5kbGVCYWNrIiwiY3VycmVudFBhcmFtcyIsImN1cnJlbnQiLCJwYXJhbXMiLCJkaXYiLCJjbGFzc05hbWUiLCJidXR0b24iLCJvbkNsaWNrIiwic3JjIiwiYWx0IiwiZmlsbCIsInByaW9yaXR5IiwiaDEiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(pages-dir-node)/./src/components/lib/TitleBar.js\n"); /***/ }), /***/ "(pages-dir-node)/./src/components/lib/Toast.js": /*!*************************************!*\ !*** ./src/components/lib/Toast.js ***! \*************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; eval("__webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {\n__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_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"react/jsx-dev-runtime\");\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 */ \"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _store_displayStore__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/store/displayStore */ \"(pages-dir-node)/./src/store/displayStore.js\");\nvar __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_store_displayStore__WEBPACK_IMPORTED_MODULE_2__]);\n_store_displayStore__WEBPACK_IMPORTED_MODULE_2__ = (__webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__)[0];\n\n\n\nconst Toast = ()=>{\n const { showToast, toastMessage } = (0,_store_displayStore__WEBPACK_IMPORTED_MODULE_2__[\"default\"])();\n const setShowToast = (0,_store_displayStore__WEBPACK_IMPORTED_MODULE_2__[\"default\"])({\n \"Toast.useDisplayStore[setShowToast]\": (state)=>state.setShowToast\n }[\"Toast.useDisplayStore[setShowToast]\"]);\n const setToastMessage = (0,_store_displayStore__WEBPACK_IMPORTED_MODULE_2__[\"default\"])({\n \"Toast.useDisplayStore[setToastMessage]\": (state)=>state.setToastMessage\n }[\"Toast.useDisplayStore[setToastMessage]\"]);\n const handleConfirm = ()=>{\n setToastMessage('');\n };\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-[480px] h-[640px] bg-[#002842d4] absolute z-9999\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"pl-10 pt-60\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-[#2B3C5B] rounded-lg p-6 w-[400px] min-h-[200px] flex flex-col\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h3\", {\n className: \"text-white text-xl font-bold mb-4\",\n children: \"提示\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/Toast.js\",\n lineNumber: 18,\n columnNumber: 13\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 flex items-center justify-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-white text-lg\",\n children: toastMessage\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/Toast.js\",\n lineNumber: 20,\n columnNumber: 13\n }, undefined)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/Toast.js\",\n lineNumber: 19,\n columnNumber: 13\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex justify-center mt-4\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: handleConfirm,\n className: \"bg-[#354e7a] text-white px-6 py-2 rounded hover:bg-[#1E293B] transition-colors\",\n children: \"确定\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/Toast.js\",\n lineNumber: 23,\n columnNumber: 13\n }, undefined)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/Toast.js\",\n lineNumber: 22,\n columnNumber: 13\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/Toast.js\",\n lineNumber: 17,\n columnNumber: 13\n }, undefined)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/Toast.js\",\n lineNumber: 16,\n columnNumber: 8\n }, undefined)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/Toast.js\",\n lineNumber: 15,\n columnNumber: 5\n }, undefined);\n};\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Toast);\n\n__webpack_async_result__();\n} catch(e) { __webpack_async_result__(e); } });//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHBhZ2VzLWRpci1ub2RlKS8uL3NyYy9jb21wb25lbnRzL2xpYi9Ub2FzdC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBQTBCO0FBQ3lCO0FBRW5ELE1BQU1FLFFBQVE7SUFDWixNQUFNLEVBQUVDLFNBQVMsRUFBRUMsWUFBWSxFQUFFLEdBQUdILCtEQUFlQTtJQUNuRCxNQUFNSSxlQUFlSiwrREFBZUE7K0NBQUMsQ0FBQ0ssUUFBVUEsTUFBTUQsWUFBWTs7SUFDbEUsTUFBTUUsa0JBQWtCTiwrREFBZUE7a0RBQUMsQ0FBQ0ssUUFBVUEsTUFBTUMsZUFBZTs7SUFFeEUsTUFBTUMsZ0JBQWdCO1FBQ3BCRCxnQkFBZ0I7SUFDbEI7SUFHQSxxQkFDRSw4REFBQ0U7UUFBSUMsV0FBVTtrQkFDWiw0RUFBQ0Q7WUFBSUMsV0FBVTtzQkFDViw0RUFBQ0Q7Z0JBQUlDLFdBQVU7O2tDQUNmLDhEQUFDQzt3QkFBR0QsV0FBVTtrQ0FBb0M7Ozs7OztrQ0FDbEQsOERBQUNEO3dCQUFJQyxXQUFVO2tDQUNmLDRFQUFDRDs0QkFBSUMsV0FBVTtzQ0FBc0JOOzs7Ozs7Ozs7OztrQ0FFckMsOERBQUNLO3dCQUFJQyxXQUFVO2tDQUNmLDRFQUFDRTs0QkFDR0MsU0FBU0w7NEJBQ1RFLFdBQVU7c0NBQ2I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVFiO0FBRUEsaUVBQWVSLEtBQUtBLEVBQUMiLCJzb3VyY2VzIjpbIi9vcHQvZGV2L2VzdC1kc3gvc3JjL2NvbXBvbmVudHMvbGliL1RvYXN0LmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XHJcbmltcG9ydCB1c2VEaXNwbGF5U3RvcmUgZnJvbSAnQC9zdG9yZS9kaXNwbGF5U3RvcmUnO1xyXG5cclxuY29uc3QgVG9hc3QgPSAoKSA9PiB7XHJcbiAgY29uc3QgeyBzaG93VG9hc3QsIHRvYXN0TWVzc2FnZSB9ID0gdXNlRGlzcGxheVN0b3JlKCk7XHJcbiAgY29uc3Qgc2V0U2hvd1RvYXN0ID0gdXNlRGlzcGxheVN0b3JlKChzdGF0ZSkgPT4gc3RhdGUuc2V0U2hvd1RvYXN0KTtcclxuICBjb25zdCBzZXRUb2FzdE1lc3NhZ2UgPSB1c2VEaXNwbGF5U3RvcmUoKHN0YXRlKSA9PiBzdGF0ZS5zZXRUb2FzdE1lc3NhZ2UpO1xyXG5cclxuICBjb25zdCBoYW5kbGVDb25maXJtID0gKCkgPT4ge1xyXG4gICAgc2V0VG9hc3RNZXNzYWdlKCcnKTtcclxuICB9O1xyXG5cclxuXHJcbiAgcmV0dXJuIChcclxuICAgIDxkaXYgY2xhc3NOYW1lPVwidy1bNDgwcHhdIGgtWzY0MHB4XSBiZy1bIzAwMjg0MmQ0XSBhYnNvbHV0ZSB6LTk5OTlcIj5cclxuICAgICAgIDxkaXYgY2xhc3NOYW1lPSdwbC0xMCBwdC02MCc+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmctWyMyQjNDNUJdIHJvdW5kZWQtbGcgcC02IHctWzQwMHB4XSBtaW4taC1bMjAwcHhdIGZsZXggZmxleC1jb2xcIj5cclxuICAgICAgICAgICAgPGgzIGNsYXNzTmFtZT1cInRleHQtd2hpdGUgdGV4dC14bCBmb250LWJvbGQgbWItNFwiPuaPkOekujwvaDM+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleC0xIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC13aGl0ZSB0ZXh0LWxnXCI+e3RvYXN0TWVzc2FnZX08L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBqdXN0aWZ5LWNlbnRlciBtdC00XCI+XHJcbiAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2hhbmRsZUNvbmZpcm19XHJcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJiZy1bIzM1NGU3YV0gdGV4dC13aGl0ZSBweC02IHB5LTIgcm91bmRlZCBob3ZlcjpiZy1bIzFFMjkzQl0gdHJhbnNpdGlvbi1jb2xvcnNcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICDnoa7lrppcclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICApO1xyXG59O1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgVG9hc3Q7Il0sIm5hbWVzIjpbIlJlYWN0IiwidXNlRGlzcGxheVN0b3JlIiwiVG9hc3QiLCJzaG93VG9hc3QiLCJ0b2FzdE1lc3NhZ2UiLCJzZXRTaG93VG9hc3QiLCJzdGF0ZSIsInNldFRvYXN0TWVzc2FnZSIsImhhbmRsZUNvbmZpcm0iLCJkaXYiLCJjbGFzc05hbWUiLCJoMyIsImJ1dHRvbiIsIm9uQ2xpY2siXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(pages-dir-node)/./src/components/lib/Toast.js\n"); /***/ }), /***/ "(pages-dir-node)/./src/components/lib/TotalToast.js": /*!******************************************!*\ !*** ./src/components/lib/TotalToast.js ***! \******************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; eval("__webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {\n__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_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"react/jsx-dev-runtime\");\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 */ \"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _store_deviceStore__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/store/deviceStore */ \"(pages-dir-node)/./src/store/deviceStore.js\");\nvar __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_store_deviceStore__WEBPACK_IMPORTED_MODULE_2__]);\n_store_deviceStore__WEBPACK_IMPORTED_MODULE_2__ = (__webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__)[0];\n\n\n\nconst TotalToast = ()=>{\n const { showTotalToast, totalToastMessage } = (0,_store_deviceStore__WEBPACK_IMPORTED_MODULE_2__[\"default\"])();\n const setShowTotalToast = (0,_store_deviceStore__WEBPACK_IMPORTED_MODULE_2__[\"default\"])({\n \"TotalToast.useDeviceStore[setShowTotalToast]\": (state)=>state.setShowTotalToast\n }[\"TotalToast.useDeviceStore[setShowTotalToast]\"]);\n const setTotalToastMessage = (0,_store_deviceStore__WEBPACK_IMPORTED_MODULE_2__[\"default\"])({\n \"TotalToast.useDeviceStore[setTotalToastMessage]\": (state)=>state.setTotalToastMessage\n }[\"TotalToast.useDeviceStore[setTotalToastMessage]\"]);\n const handleConfirm = ()=>{\n setTotalToastMessage('');\n };\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"fixed inset-0 flex items-center justify-center bg-[#002842d4] z-[9999]\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-[30%] mx-auto\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-[#2B3C5B] rounded-lg p-8 flex flex-col\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h3\", {\n className: \"text-white text-2xl font-bold mb-6 text-center\",\n children: \"场景提示\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/TotalToast.js\",\n lineNumber: 18,\n columnNumber: 11\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 flex items-center justify-center mb-8\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-white text-lg text-center\",\n children: totalToastMessage\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/TotalToast.js\",\n lineNumber: 20,\n columnNumber: 13\n }, undefined)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/TotalToast.js\",\n lineNumber: 19,\n columnNumber: 11\n }, undefined),\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)(\"button\", {\n onClick: handleConfirm,\n className: \"bg-[#354e7a] text-white px-8 py-3 rounded-lg hover:bg-[#1E293B] transition-colors duration-200\",\n children: \"确定\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/TotalToast.js\",\n lineNumber: 23,\n columnNumber: 13\n }, undefined)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/TotalToast.js\",\n lineNumber: 22,\n columnNumber: 11\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/TotalToast.js\",\n lineNumber: 17,\n columnNumber: 9\n }, undefined)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/TotalToast.js\",\n lineNumber: 16,\n columnNumber: 7\n }, undefined)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/TotalToast.js\",\n lineNumber: 15,\n columnNumber: 5\n }, undefined);\n};\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (TotalToast);\n\n__webpack_async_result__();\n} catch(e) { __webpack_async_result__(e); } });//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHBhZ2VzLWRpci1ub2RlKS8uL3NyYy9jb21wb25lbnRzL2xpYi9Ub3RhbFRvYXN0LmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFBMEI7QUFDdUI7QUFFakQsTUFBTUUsYUFBYTtJQUNqQixNQUFNLEVBQUVDLGNBQWMsRUFBRUMsaUJBQWlCLEVBQUUsR0FBR0gsOERBQWNBO0lBQzVELE1BQU1JLG9CQUFvQkosOERBQWNBO3dEQUFDLENBQUNLLFFBQVVBLE1BQU1ELGlCQUFpQjs7SUFDM0UsTUFBTUUsdUJBQXVCTiw4REFBY0E7MkRBQUMsQ0FBQ0ssUUFBVUEsTUFBTUMsb0JBQW9COztJQUVqRixNQUFNQyxnQkFBZ0I7UUFDcEJELHFCQUFxQjtJQUN2QjtJQUdBLHFCQUNFLDhEQUFDRTtRQUFJQyxXQUFVO2tCQUNiLDRFQUFDRDtZQUFJQyxXQUFVO3NCQUNiLDRFQUFDRDtnQkFBSUMsV0FBVTs7a0NBQ2IsOERBQUNDO3dCQUFHRCxXQUFVO2tDQUFpRDs7Ozs7O2tDQUMvRCw4REFBQ0Q7d0JBQUlDLFdBQVU7a0NBQ2IsNEVBQUNEOzRCQUFJQyxXQUFVO3NDQUFrQ047Ozs7Ozs7Ozs7O2tDQUVuRCw4REFBQ0s7d0JBQUlDLFdBQVU7a0NBQ2IsNEVBQUNFOzRCQUNDQyxTQUFTTDs0QkFDVEUsV0FBVTtzQ0FDWDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBUWI7QUFFQSxpRUFBZVIsVUFBVUEsRUFBQyIsInNvdXJjZXMiOlsiL29wdC9kZXYvZXN0LWRzeC9zcmMvY29tcG9uZW50cy9saWIvVG90YWxUb2FzdC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xyXG5pbXBvcnQgdXNlRGV2aWNlU3RvcmUgZnJvbSAnQC9zdG9yZS9kZXZpY2VTdG9yZSc7XHJcblxyXG5jb25zdCBUb3RhbFRvYXN0ID0gKCkgPT4ge1xyXG4gIGNvbnN0IHsgc2hvd1RvdGFsVG9hc3QsIHRvdGFsVG9hc3RNZXNzYWdlIH0gPSB1c2VEZXZpY2VTdG9yZSgpO1xyXG4gIGNvbnN0IHNldFNob3dUb3RhbFRvYXN0ID0gdXNlRGV2aWNlU3RvcmUoKHN0YXRlKSA9PiBzdGF0ZS5zZXRTaG93VG90YWxUb2FzdCk7XHJcbiAgY29uc3Qgc2V0VG90YWxUb2FzdE1lc3NhZ2UgPSB1c2VEZXZpY2VTdG9yZSgoc3RhdGUpID0+IHN0YXRlLnNldFRvdGFsVG9hc3RNZXNzYWdlKTtcclxuXHJcbiAgY29uc3QgaGFuZGxlQ29uZmlybSA9ICgpID0+IHtcclxuICAgIHNldFRvdGFsVG9hc3RNZXNzYWdlKCcnKTtcclxuICB9O1xyXG5cclxuXHJcbiAgcmV0dXJuIChcclxuICAgIDxkaXYgY2xhc3NOYW1lPVwiZml4ZWQgaW5zZXQtMCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBiZy1bIzAwMjg0MmQ0XSB6LVs5OTk5XVwiPlxyXG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInctWzMwJV0gbXgtYXV0b1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmctWyMyQjNDNUJdIHJvdW5kZWQtbGcgcC04IGZsZXggZmxleC1jb2xcIj5cclxuICAgICAgICAgIDxoMyBjbGFzc05hbWU9XCJ0ZXh0LXdoaXRlIHRleHQtMnhsIGZvbnQtYm9sZCBtYi02IHRleHQtY2VudGVyXCI+5Zy65pmv5o+Q56S6PC9oMz5cclxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleC0xIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIG1iLThcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LXdoaXRlIHRleHQtbGcgdGV4dC1jZW50ZXJcIj57dG90YWxUb2FzdE1lc3NhZ2V9PC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBqdXN0aWZ5LWNlbnRlclwiPlxyXG4gICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgb25DbGljaz17aGFuZGxlQ29uZmlybX1cclxuICAgICAgICAgICAgICBjbGFzc05hbWU9XCJiZy1bIzM1NGU3YV0gdGV4dC13aGl0ZSBweC04IHB5LTMgcm91bmRlZC1sZyBob3ZlcjpiZy1bIzFFMjkzQl0gdHJhbnNpdGlvbi1jb2xvcnMgZHVyYXRpb24tMjAwXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIOehruWumlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICk7XHJcbn07XHJcblxyXG5leHBvcnQgZGVmYXVsdCBUb3RhbFRvYXN0OyJdLCJuYW1lcyI6WyJSZWFjdCIsInVzZURldmljZVN0b3JlIiwiVG90YWxUb2FzdCIsInNob3dUb3RhbFRvYXN0IiwidG90YWxUb2FzdE1lc3NhZ2UiLCJzZXRTaG93VG90YWxUb2FzdCIsInN0YXRlIiwic2V0VG90YWxUb2FzdE1lc3NhZ2UiLCJoYW5kbGVDb25maXJtIiwiZGl2IiwiY2xhc3NOYW1lIiwiaDMiLCJidXR0b24iLCJvbkNsaWNrIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(pages-dir-node)/./src/components/lib/TotalToast.js\n"); /***/ }), /***/ "(pages-dir-node)/./src/components/lib/WireMapView.js": /*!*******************************************!*\ !*** ./src/components/lib/WireMapView.js ***! \*******************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; eval("__webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ WireMapView)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"react/jsx-dev-runtime\");\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 */ \"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var next_image__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! next/image */ \"(pages-dir-node)/./node_modules/next/image.js\");\n/* harmony import */ var next_image__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(next_image__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _store_displayStore__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/store/displayStore */ \"(pages-dir-node)/./src/store/displayStore.js\");\n/* harmony import */ var _utils_asset__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/utils/asset */ \"(pages-dir-node)/./src/utils/asset.js\");\nvar __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_store_displayStore__WEBPACK_IMPORTED_MODULE_3__, _utils_asset__WEBPACK_IMPORTED_MODULE_4__]);\n([_store_displayStore__WEBPACK_IMPORTED_MODULE_3__, _utils_asset__WEBPACK_IMPORTED_MODULE_4__] = __webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__);\n\n\n\n\n\nfunction WireMapView({ testResult }) {\n const { view } = _store_displayStore__WEBPACK_IMPORTED_MODULE_3__[\"default\"].getState().navigation.current;\n const currentCableId = _store_displayStore__WEBPACK_IMPORTED_MODULE_3__[\"default\"].getState().getCurrentCableId();\n const [WiremapSvg, setWiremapSvg] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);\n const currentConfig = _store_displayStore__WEBPACK_IMPORTED_MODULE_3__[\"default\"].getState().getCurrentTestConfig();\n const cableType = testResult.testconfig.params.cableType;\n const wireOrder = testResult.testconfig.params.wireOrder;\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)({\n \"WireMapView.useEffect\": ()=>{\n const loadSvg = {\n \"WireMapView.useEffect.loadSvg\": async ()=>{\n try {\n let prefix = '';\n let folderPath = 'T568B';\n // 设置文件夹路径\n if (wireOrder === 'T568B') {\n folderPath = 'T568B';\n } else if (wireOrder === 'Ethernet Two-Pair') {\n folderPath = 'EthernetTwoPair';\n } else if (wireOrder === 'M12-D Two-Pair') {\n folderPath = 'M12DTwoPair';\n }\n // 设置文件前缀\n if (cableType?.includes('U/UTP')) {\n prefix = 'u-';\n } else if (cableType?.includes('F/UTP')) {\n prefix = 's-';\n }\n try {\n // 尝试加载指定文件夹下的SVG\n const svg = await __webpack_require__(\"(pages-dir-node)/./src/store/COPPER lazy recursive ^\\\\.\\\\/.*\\\\/.*.*\\\\.svg$\")(`./${folderPath}/${prefix}${testResult?.CopperWiremapStatus}.svg`);\n setWiremapSvg(svg.default);\n } catch {\n // 如果找不到对应的SVG,加载默认的s-pass.svg\n const defaultSvg = await __webpack_require__(\"(pages-dir-node)/./src/store/COPPER lazy recursive ^\\\\.\\\\/.*\\\\/s\\\\-pass\\\\.svg$\")(`./${folderPath}/s-pass.svg`);\n setWiremapSvg(defaultSvg.default);\n }\n } catch (error) {\n console.error('Error loading SVG:', error);\n }\n }\n }[\"WireMapView.useEffect.loadSvg\"];\n loadSvg();\n }\n }[\"WireMapView.useEffect\"], [\n testResult?.CopperWiremapStatus,\n cableType,\n wireOrder\n ]);\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full h-full flex flex-col\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex justify-between items-center p-3 bg-white\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black font-bold\",\n children: testResult?.testconfig?.params?.wireOrder || ''\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/WireMapView.js\",\n lineNumber: 58,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-5 h-5 relative\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: (0,_utils_asset__WEBPACK_IMPORTED_MODULE_4__.getAssetUrl)(testResult?.CopperWiremapResultStatus === 'pass' ? '/pass.png' : '/fail.png'),\n alt: testResult?.CopperWiremapResultStatus === 'pass' ? '通过' : '失败',\n fill: true,\n className: \"object-contain\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/WireMapView.js\",\n lineNumber: 62,\n columnNumber: 21\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/WireMapView.js\",\n lineNumber: 61,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/WireMapView.js\",\n lineNumber: 57,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"border-t border-gray-300\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/WireMapView.js\",\n lineNumber: 72,\n columnNumber: 13\n }, this),\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: \"w-full h-full flex flex-col\",\n children: WiremapSvg && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full h-full\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: WiremapSvg,\n alt: \"Wiremap Status\",\n priority: true\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/WireMapView.js\",\n lineNumber: 79,\n columnNumber: 29\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/WireMapView.js\",\n lineNumber: 78,\n columnNumber: 25\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/WireMapView.js\",\n lineNumber: 76,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/WireMapView.js\",\n lineNumber: 75,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex justify-between items-center p-2 bg-white\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n className: \"w-8 h-8 bg-gray-200 rounded-full flex items-center justify-center text-xl font-bold\",\n children: \"?\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/WireMapView.js\",\n lineNumber: 91,\n columnNumber: 17\n }, this),\n view === 'nosave' && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-col items-end\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black font-bold\",\n children: \"下一个ID\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/WireMapView.js\",\n lineNumber: 94,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-black text-sm\",\n children: currentCableId?.name || ''\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/WireMapView.js\",\n lineNumber: 95,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/WireMapView.js\",\n lineNumber: 93,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/WireMapView.js\",\n lineNumber: 90,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/lib/WireMapView.js\",\n lineNumber: 55,\n columnNumber: 9\n }, this);\n}\n\n__webpack_async_result__();\n} catch(e) { __webpack_async_result__(e); } });//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHBhZ2VzLWRpci1ub2RlKS8uL3NyYy9jb21wb25lbnRzL2xpYi9XaXJlTWFwVmlldy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQW1EO0FBQ3BCO0FBQ29CO0FBQ1A7QUFFN0IsU0FBU00sWUFBWSxFQUFFQyxVQUFVLEVBQUU7SUFDOUMsTUFBTSxFQUFFQyxJQUFJLEVBQUUsR0FBR0osb0VBQXdCLEdBQUdNLFVBQVUsQ0FBQ0MsT0FBTztJQUM5RCxNQUFNQyxpQkFBaUJSLG9FQUF3QixHQUFHUyxpQkFBaUI7SUFDbkUsTUFBTSxDQUFDQyxZQUFZQyxjQUFjLEdBQUdkLCtDQUFRQSxDQUFDO0lBQzdDLE1BQU1lLGdCQUFnQlosb0VBQXdCLEdBQUdhLG9CQUFvQjtJQUNyRSxNQUFNQyxZQUFZWCxXQUFXWSxVQUFVLENBQUNDLE1BQU0sQ0FBQ0YsU0FBUztJQUN4RCxNQUFNRyxZQUFZZCxXQUFXWSxVQUFVLENBQUNDLE1BQU0sQ0FBQ0MsU0FBUztJQUd4RG5CLGdEQUFTQTtpQ0FBQztZQUNOLE1BQU1vQjtpREFBVTtvQkFDWixJQUFJO3dCQUNBLElBQUlDLFNBQVM7d0JBQ2IsSUFBSUMsYUFBYTt3QkFFakIsVUFBVTt3QkFDVixJQUFJSCxjQUFjLFNBQVM7NEJBQ3ZCRyxhQUFhO3dCQUNqQixPQUFPLElBQUlILGNBQWMscUJBQXFCOzRCQUMxQ0csYUFBYTt3QkFDakIsT0FBTyxJQUFJSCxjQUFjLGtCQUFrQjs0QkFDdkNHLGFBQWE7d0JBQ2pCO3dCQUVBLFNBQVM7d0JBQ1QsSUFBSU4sV0FBV08sU0FBUyxVQUFVOzRCQUM5QkYsU0FBUzt3QkFDYixPQUFPLElBQUlMLFdBQVdPLFNBQVMsVUFBVTs0QkFDckNGLFNBQVM7d0JBQ2I7d0JBRUEsSUFBSTs0QkFDQSxpQkFBaUI7NEJBQ2pCLE1BQU1HLE1BQU0sTUFBTSxrR0FBTyxHQUFnQixFQUFFRixXQUFXLENBQUMsRUFBRUQsU0FBU2hCLFlBQVlvQixvQkFBb0IsS0FBSyxDQUFDOzRCQUV4R1osY0FBY1csSUFBSUUsT0FBTzt3QkFDN0IsRUFBRSxPQUFNOzRCQUNKLDhCQUE4Qjs0QkFDOUIsTUFBTUMsYUFBYSxNQUFNLHNHQUFPLEdBQWdCLEVBQUVMLFdBQVcsWUFBWSxDQUFDOzRCQUMxRVQsY0FBY2MsV0FBV0QsT0FBTzt3QkFDcEM7b0JBQ0osRUFBRSxPQUFPRSxPQUFPO3dCQUNaQyxRQUFRRCxLQUFLLENBQUMsc0JBQXNCQTtvQkFDeEM7Z0JBQ0o7O1lBQ0FSO1FBQ0o7Z0NBQUc7UUFBQ2YsWUFBWW9CO1FBQXFCVDtRQUFXRztLQUFVO0lBRTFELHFCQUNJLDhEQUFDVztRQUFJQyxXQUFVOzswQkFFWCw4REFBQ0Q7Z0JBQUlDLFdBQVU7O2tDQUNYLDhEQUFDRDt3QkFBSUMsV0FBVTtrQ0FDVjFCLFlBQVlZLFlBQVlDLFFBQVFDLGFBQWE7Ozs7OztrQ0FFbEQsOERBQUNXO3dCQUFJQyxXQUFVO2tDQUNYLDRFQUFDOUIsbURBQUtBOzRCQUNGK0IsS0FBSzdCLHlEQUFXQSxDQUFDRSxZQUFZNEIsOEJBQThCLFNBQVMsY0FBYzs0QkFDbEZDLEtBQUs3QixZQUFZNEIsOEJBQThCLFNBQVMsT0FBTzs0QkFDL0RFLElBQUk7NEJBQ0pKLFdBQVU7Ozs7Ozs7Ozs7Ozs7Ozs7OzBCQU10Qiw4REFBQ0Q7Z0JBQUlDLFdBQVU7Ozs7OzswQkFHZiw4REFBQ0Q7Z0JBQUlDLFdBQVU7MEJBQ2YsNEVBQUNEO29CQUFJQyxXQUFVOzhCQUNObkIsNEJBQ0csOERBQUNrQjt3QkFBSUMsV0FBVTtrQ0FDWCw0RUFBQzlCLG1EQUFLQTs0QkFDRitCLEtBQUtwQjs0QkFDTHNCLEtBQUk7NEJBQ0pFLFFBQVE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzswQkFRNUIsOERBQUNOO2dCQUFJQyxXQUFVOztrQ0FDWCw4REFBQ007d0JBQU9OLFdBQVU7a0NBQXNGOzs7Ozs7b0JBQ3ZHekIsU0FBUywwQkFDTiw4REFBQ3dCO3dCQUFJQyxXQUFVOzswQ0FDWCw4REFBQ0Q7Z0NBQUlDLFdBQVU7MENBQXVCOzs7Ozs7MENBQ3RDLDhEQUFDRDtnQ0FBSUMsV0FBVTswQ0FBc0JyQixnQkFBZ0I0QixRQUFROzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFNckYiLCJzb3VyY2VzIjpbIi9vcHQvZGV2L2VzdC1kc3gvc3JjL2NvbXBvbmVudHMvbGliL1dpcmVNYXBWaWV3LmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSwgdXNlRWZmZWN0IH0gZnJvbSAncmVhY3QnO1xyXG5pbXBvcnQgSW1hZ2UgZnJvbSAnbmV4dC9pbWFnZSc7XHJcbmltcG9ydCB1c2VEaXNwbGF5U3RvcmUgZnJvbSAnQC9zdG9yZS9kaXNwbGF5U3RvcmUnO1xyXG5pbXBvcnQgeyBnZXRBc3NldFVybCB9IGZyb20gJ0AvdXRpbHMvYXNzZXQnO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gV2lyZU1hcFZpZXcoeyB0ZXN0UmVzdWx0IH0pIHtcclxuICAgIGNvbnN0IHsgdmlldyB9ID0gdXNlRGlzcGxheVN0b3JlLmdldFN0YXRlKCkubmF2aWdhdGlvbi5jdXJyZW50O1xyXG4gICAgY29uc3QgY3VycmVudENhYmxlSWQgPSB1c2VEaXNwbGF5U3RvcmUuZ2V0U3RhdGUoKS5nZXRDdXJyZW50Q2FibGVJZCgpO1xyXG4gICAgY29uc3QgW1dpcmVtYXBTdmcsIHNldFdpcmVtYXBTdmddID0gdXNlU3RhdGUobnVsbCk7XHJcbiAgICBjb25zdCBjdXJyZW50Q29uZmlnID0gdXNlRGlzcGxheVN0b3JlLmdldFN0YXRlKCkuZ2V0Q3VycmVudFRlc3RDb25maWcoKTtcclxuICAgIGNvbnN0IGNhYmxlVHlwZSA9IHRlc3RSZXN1bHQudGVzdGNvbmZpZy5wYXJhbXMuY2FibGVUeXBlO1xyXG4gICAgY29uc3Qgd2lyZU9yZGVyID0gdGVzdFJlc3VsdC50ZXN0Y29uZmlnLnBhcmFtcy53aXJlT3JkZXI7XHJcbiBcclxuXHJcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGxvYWRTdmcgPSBhc3luYyAoKSA9PiB7XHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgcHJlZml4ID0gJyc7XHJcbiAgICAgICAgICAgICAgICBsZXQgZm9sZGVyUGF0aCA9ICdUNTY4Qic7XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIC8vIOiuvue9ruaWh+S7tuWkuei3r+W+hFxyXG4gICAgICAgICAgICAgICAgaWYgKHdpcmVPcmRlciA9PT0gJ1Q1NjhCJykgeyBcclxuICAgICAgICAgICAgICAgICAgICBmb2xkZXJQYXRoID0gJ1Q1NjhCJztcclxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAod2lyZU9yZGVyID09PSAnRXRoZXJuZXQgVHdvLVBhaXInKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZm9sZGVyUGF0aCA9ICdFdGhlcm5ldFR3b1BhaXInO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh3aXJlT3JkZXIgPT09ICdNMTItRCBUd28tUGFpcicpIHtcclxuICAgICAgICAgICAgICAgICAgICBmb2xkZXJQYXRoID0gJ00xMkRUd29QYWlyJztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgLy8g6K6+572u5paH5Lu25YmN57yAXHJcbiAgICAgICAgICAgICAgICBpZiAoY2FibGVUeXBlPy5pbmNsdWRlcygnVS9VVFAnKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHByZWZpeCA9ICd1LSc7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNhYmxlVHlwZT8uaW5jbHVkZXMoJ0YvVVRQJykpIHtcclxuICAgICAgICAgICAgICAgICAgICBwcmVmaXggPSAncy0nO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIOWwneivleWKoOi9veaMh+WumuaWh+S7tuWkueS4i+eahFNWR1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHN2ZyA9IGF3YWl0IGltcG9ydChgQC9zdG9yZS9DT1BQRVIvJHtmb2xkZXJQYXRofS8ke3ByZWZpeH0ke3Rlc3RSZXN1bHQ/LkNvcHBlcldpcmVtYXBTdGF0dXN9LnN2Z2ApO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBzZXRXaXJlbWFwU3ZnKHN2Zy5kZWZhdWx0KTtcclxuICAgICAgICAgICAgICAgIH0gY2F0Y2gge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIOWmguaenOaJvuS4jeWIsOWvueW6lOeahFNWR++8jOWKoOi9vem7mOiupOeahHMtcGFzcy5zdmdcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBkZWZhdWx0U3ZnID0gYXdhaXQgaW1wb3J0KGBAL3N0b3JlL0NPUFBFUi8ke2ZvbGRlclBhdGh9L3MtcGFzcy5zdmdgKTtcclxuICAgICAgICAgICAgICAgICAgICBzZXRXaXJlbWFwU3ZnKGRlZmF1bHRTdmcuZGVmYXVsdCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBsb2FkaW5nIFNWRzonLCBlcnJvcik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG4gICAgICAgIGxvYWRTdmcoKTtcclxuICAgIH0sIFt0ZXN0UmVzdWx0Py5Db3BwZXJXaXJlbWFwU3RhdHVzLCBjYWJsZVR5cGUsIHdpcmVPcmRlcl0pO1xyXG5cclxuICAgIHJldHVybiAoXHJcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LWZ1bGwgaC1mdWxsIGZsZXggZmxleC1jb2xcIj5cclxuICAgICAgICAgICAgey8qIOmhtumDqOWMuuWfnyAqL31cclxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGp1c3RpZnktYmV0d2VlbiBpdGVtcy1jZW50ZXIgcC0zIGJnLXdoaXRlXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtYmxhY2sgZm9udC1ib2xkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAge3Rlc3RSZXN1bHQ/LnRlc3Rjb25maWc/LnBhcmFtcz8ud2lyZU9yZGVyIHx8ICcnfVxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctNSBoLTUgcmVsYXRpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8SW1hZ2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3JjPXtnZXRBc3NldFVybCh0ZXN0UmVzdWx0Py5Db3BwZXJXaXJlbWFwUmVzdWx0U3RhdHVzID09PSAncGFzcycgPyAnL3Bhc3MucG5nJyA6ICcvZmFpbC5wbmcnKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgYWx0PXt0ZXN0UmVzdWx0Py5Db3BwZXJXaXJlbWFwUmVzdWx0U3RhdHVzID09PSAncGFzcycgPyAn6YCa6L+HJyA6ICflpLHotKUnfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWxsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cIm9iamVjdC1jb250YWluXCJcclxuICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgey8qIOWIhuWJsue6vyAqL31cclxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJib3JkZXItdCBib3JkZXItZ3JheS0zMDBcIj48L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIHsvKiDkuK3pl7TljLrln58gKi99XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleC0xXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy1mdWxsIGgtZnVsbCBmbGV4IGZsZXgtY29sXCI+XHJcbiAgICAgICAgICAgICAgICAgICAge1dpcmVtYXBTdmcgJiYgKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctZnVsbCBoLWZ1bGxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJbWFnZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz17V2lyZW1hcFN2Z31cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ9XCJXaXJlbWFwIFN0YXR1c1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpb3JpdHlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICB7Lyog5bqV6YOo5Yy65Z+fICovfVxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXgganVzdGlmeS1iZXR3ZWVuIGl0ZW1zLWNlbnRlciBwLTIgYmctd2hpdGVcIj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3NOYW1lPVwidy04IGgtOCBiZy1ncmF5LTIwMCByb3VuZGVkLWZ1bGwgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgdGV4dC14bCBmb250LWJvbGRcIj4/PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICB7dmlldyA9PT0gJ25vc2F2ZScgJiYgKFxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBmbGV4LWNvbCBpdGVtcy1lbmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LWJsYWNrIGZvbnQtYm9sZFwiPuS4i+S4gOS4qklEPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1ibGFjayB0ZXh0LXNtXCI+e2N1cnJlbnRDYWJsZUlkPy5uYW1lIHx8ICcnfTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICApO1xyXG59Il0sIm5hbWVzIjpbIlJlYWN0IiwidXNlU3RhdGUiLCJ1c2VFZmZlY3QiLCJJbWFnZSIsInVzZURpc3BsYXlTdG9yZSIsImdldEFzc2V0VXJsIiwiV2lyZU1hcFZpZXciLCJ0ZXN0UmVzdWx0IiwidmlldyIsImdldFN0YXRlIiwibmF2aWdhdGlvbiIsImN1cnJlbnQiLCJjdXJyZW50Q2FibGVJZCIsImdldEN1cnJlbnRDYWJsZUlkIiwiV2lyZW1hcFN2ZyIsInNldFdpcmVtYXBTdmciLCJjdXJyZW50Q29uZmlnIiwiZ2V0Q3VycmVudFRlc3RDb25maWciLCJjYWJsZVR5cGUiLCJ0ZXN0Y29uZmlnIiwicGFyYW1zIiwid2lyZU9yZGVyIiwibG9hZFN2ZyIsInByZWZpeCIsImZvbGRlclBhdGgiLCJpbmNsdWRlcyIsInN2ZyIsIkNvcHBlcldpcmVtYXBTdGF0dXMiLCJkZWZhdWx0IiwiZGVmYXVsdFN2ZyIsImVycm9yIiwiY29uc29sZSIsImRpdiIsImNsYXNzTmFtZSIsInNyYyIsIkNvcHBlcldpcmVtYXBSZXN1bHRTdGF0dXMiLCJhbHQiLCJmaWxsIiwicHJpb3JpdHkiLCJidXR0b24iLCJuYW1lIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(pages-dir-node)/./src/components/lib/WireMapView.js\n"); /***/ }), /***/ "(pages-dir-node)/./src/components/scene/DataCenter.js": /*!********************************************!*\ !*** ./src/components/scene/DataCenter.js ***! \********************************************/ /***/ ((__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 */ DataCenter)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"react/jsx-dev-runtime\");\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 */ \"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n\n\nfunction DataCenter({ onPortClick = ()=>{}, onPortHover = ()=>{}, selectedPort = null, targetPort = null, connections = {} }) {\n // 获取端口的连接状态样式\n const getPortStyle = (portId)=>{\n if (selectedPort === portId) {\n return 'bg-blue-300';\n }\n if (targetPort === portId) {\n return 'bg-green-300';\n }\n if (connections && connections[portId]) {\n return 'bg-[#00ff7f]';\n }\n return 'bg-gray-300';\n };\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-full w-full bg-black text-white flex\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-1/3 p-1 flex flex-col\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-center mb-1\",\n children: \"Rack CA\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 28,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[calc(100%-1.5rem)] rounded-md p-2 flex flex-col space-y-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-col h-1/2 bg-gray-800 rounded-md p-2 relative\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute top-0 left-0 bg-white w-3 h-3 rounded-full\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 33,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute top-0 right-0 bg-white w-3 h-3 rounded-full\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 34,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute bottom-0 left-0 bg-white w-3 h-3 rounded-full\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 35,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute bottom-0 right-0 bg-white w-3 h-3 rounded-full\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 36,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 flex items-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-xs mr-4\",\n children: \"1A\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 38,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 flex items-center justify-center space-x-4\",\n children: [\n ...Array(6)\n ].map((_, i)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-col items-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `w-12 h-10 mb-1 transition-colors flex items-center justify-center `,\n jstype: \"testport-mpo\",\n mpoClean: \"false\",\n id: `CA-1A-${i + 1}`,\n onClick: ()=>onPortClick(`CA-1A-${i + 1}`),\n onMouseEnter: ()=>onPortHover(`CA-1A-${i + 1}`),\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `w-12 h-10 bg-[url('/mpo.png')] bg-contain bg-no-repeat bg-center`\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 50,\n columnNumber: 33\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 42,\n columnNumber: 29\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-xs\",\n children: i + 1\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 52,\n columnNumber: 31\n }, this)\n ]\n }, i, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 41,\n columnNumber: 29\n }, this))\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 39,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 37,\n columnNumber: 23\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 32,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-col h-1/2 bg-gray-800 rounded-md p-2 relative\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute top-0 left-0 bg-white w-3 h-3 rounded-full\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 60,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute top-0 right-0 bg-white w-3 h-3 rounded-full\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 61,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute bottom-0 left-0 bg-white w-3 h-3 rounded-full\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 62,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute bottom-0 right-0 bg-white w-3 h-3 rounded-full\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 63,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 flex items-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-xs mr-4\",\n children: \"1B\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 65,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 flex items-center justify-center space-x-4\",\n children: [\n ...Array(6)\n ].map((_, i)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-col items-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `w-12 h-10 mb-1 transition-colors flex items-center justify-center `,\n jstype: \"testport-mpo\",\n mpoClean: \"false\",\n id: `CA-1B-${i + 1}`,\n onClick: ()=>onPortClick(`CA-1B-${i + 1}`),\n onMouseEnter: ()=>onPortHover(`CA-1B-${i + 1}`),\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `w-12 h-10 bg-[url('/mpo.png')] bg-contain bg-no-repeat bg-center`\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 77,\n columnNumber: 33\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 69,\n columnNumber: 29\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-xs\",\n children: i + 1\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 79,\n columnNumber: 31\n }, this)\n ]\n }, i, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 68,\n columnNumber: 29\n }, this))\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 66,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 64,\n columnNumber: 23\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 59,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 29,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 27,\n columnNumber: 6\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-1/3 p-1 flex flex-col\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-center mb-1\",\n children: \"Rack CB\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 91,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[calc(100%-1.5rem)] rounded-md p-2 flex flex-col space-y-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-col h-1/2 bg-gray-800 rounded-md p-2 relative\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute top-0 left-0 bg-white w-3 h-3 rounded-full\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 97,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute top-0 right-0 bg-white w-3 h-3 rounded-full\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 98,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute bottom-0 left-0 bg-white w-3 h-3 rounded-full\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 99,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute bottom-0 right-0 bg-white w-3 h-3 rounded-full\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 100,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 flex items-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-xs mr-4\",\n children: \"1A\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 102,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 flex items-center justify-center space-x-4\",\n children: [\n ...Array(6)\n ].map((_, i)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-col items-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `w-12 h-10 mb-1 transition-colors flex items-center justify-center `,\n jstype: \"testport-mpo\",\n mpoClean: \"false\",\n id: `CB-1A-${i + 1}`,\n onClick: ()=>onPortClick(`CB-1A-${i + 1}`),\n onMouseEnter: ()=>onPortHover(`CB-1A-${i + 1}`),\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `w-12 h-10 bg-[url('/mpo.png')] bg-contain bg-no-repeat bg-center`\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 114,\n columnNumber: 33\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 106,\n columnNumber: 29\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-xs\",\n children: i + 1\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 116,\n columnNumber: 31\n }, this)\n ]\n }, i, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 105,\n columnNumber: 29\n }, this))\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 103,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 101,\n columnNumber: 23\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 96,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-col h-1/2 bg-gray-900 rounded-md p-2 relative border border-gray-700\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-8 flex items-center justify-between px-2 border-b border-gray-700\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-blue-500 font-bold text-sm\",\n children: \"SWITCH\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 126,\n columnNumber: 31\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex space-x-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-2 h-2 bg-green-500 rounded-full animate-pulse\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 128,\n columnNumber: 33\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-2 h-2 bg-amber-500 rounded-full animate-pulse\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 129,\n columnNumber: 33\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-2 h-2 bg-blue-500 rounded-full animate-pulse\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 130,\n columnNumber: 33\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-2 h-2 bg-red-500 rounded-full animate-pulse\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 131,\n columnNumber: 33\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 127,\n columnNumber: 31\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 125,\n columnNumber: 29\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 flex flex-row\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-4/6 flex flex-col\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex justify-between px-4 text-xs text-gray-400\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n children: \"10/100/1000 Base-T\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 141,\n columnNumber: 35\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n children: \"1-20\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 142,\n columnNumber: 35\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 140,\n columnNumber: 33\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 flex items-center justify-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid grid-cols-10 gap-0.5 w-full\",\n children: [\n ...Array(10)\n ].map((_, i)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-col items-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-5 h-5 border border-gray-600 rounded-sm flex items-center justify-center transition-colors\",\n jstype: \"testport-mpo\",\n id: `SW-TOP-${i + 1}`,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-4 h-4 bg-[url('/rj45.png')] bg-contain bg-no-repeat bg-center\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 155,\n columnNumber: 43\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 150,\n columnNumber: 41\n }, this)\n }, i, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 149,\n columnNumber: 39\n }, this))\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 147,\n columnNumber: 35\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 146,\n columnNumber: 33\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 flex items-center justify-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid grid-cols-10 gap-0.5 w-full\",\n children: [\n ...Array(10)\n ].map((_, i)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-col items-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-5 h-5 border border-gray-600 rounded-sm flex items-center justify-center transition-colors\",\n jstype: \"testport-mpo\",\n id: `SW-BOT-${i + 1}`,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-4 h-4 bg-[url('/rj45.png')] bg-contain bg-no-repeat bg-center\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 172,\n columnNumber: 43\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 167,\n columnNumber: 41\n }, this)\n }, i, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 166,\n columnNumber: 39\n }, this))\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 164,\n columnNumber: 35\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 163,\n columnNumber: 33\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 138,\n columnNumber: 31\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-2/6 flex flex-col\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex justify-between px-1 text-xs text-gray-400\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n children: \"SFP+\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 184,\n columnNumber: 35\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n children: \"21-24\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 185,\n columnNumber: 35\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 183,\n columnNumber: 33\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 flex items-center justify-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex space-x-4\",\n children: [\n \" \",\n [\n ...Array(2)\n ].map((_, i)=>/*#__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)(\"div\", {\n className: \"w-10 h-5 border border-gray-600 rounded-sm flex items-center justify-center transition-colors\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-4 h-4 bg-[url('/lc.png')] bg-contain bg-no-repeat bg-center\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 197,\n columnNumber: 43\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-4 h-4 bg-[url('/lc.png')] bg-contain bg-no-repeat bg-center\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 198,\n columnNumber: 43\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 196,\n columnNumber: 41\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 193,\n columnNumber: 39\n }, this)\n }, i, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 192,\n columnNumber: 37\n }, this))\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 190,\n columnNumber: 33\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 189,\n columnNumber: 33\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 flex items-center justify-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex space-x-4\",\n children: [\n \" \",\n [\n ...Array(2)\n ].map((_, i)=>/*#__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)(\"div\", {\n className: \"w-10 h-5 border border-gray-600 rounded-sm flex items-center justify-center transition-colors\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-4 h-4 bg-[url('/lc.png')] bg-contain bg-no-repeat bg-center\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 215,\n columnNumber: 43\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-4 h-4 bg-[url('/lc.png')] bg-contain bg-no-repeat bg-center\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 217,\n columnNumber: 43\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 214,\n columnNumber: 41\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 211,\n columnNumber: 39\n }, this)\n }, i, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 210,\n columnNumber: 37\n }, this))\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 208,\n columnNumber: 33\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 207,\n columnNumber: 33\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 181,\n columnNumber: 31\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 136,\n columnNumber: 29\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-6 flex items-center justify-between px-2 border-t border-gray-700\",\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)(\"div\", {\n className: \"text-xs text-gray-400\",\n children: \"Console\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 233,\n columnNumber: 33\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-4 h-2 bg-gray-600 rounded-sm\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 234,\n columnNumber: 33\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 232,\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-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs text-gray-400\",\n children: \"Power\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 237,\n columnNumber: 33\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-2 h-2 bg-green-500 rounded-full animate-pulse\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 238,\n columnNumber: 33\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 236,\n columnNumber: 31\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 231,\n columnNumber: 29\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 123,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 92,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 90,\n columnNumber: 6\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-1/3 p-1 flex flex-col\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-center mb-1\",\n children: \"Rack CC\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 250,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[calc(100%-1.5rem)] rounded-md p-2 flex flex-col space-y-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-col h-1/2 bg-gray-800 rounded-md p-2 relative\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute top-0 left-0 bg-white w-3 h-3 rounded-full\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 256,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute top-0 right-0 bg-white w-3 h-3 rounded-full\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 257,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute bottom-0 left-0 bg-white w-3 h-3 rounded-full\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 258,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute bottom-0 right-0 bg-white w-3 h-3 rounded-full\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 259,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 flex items-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-xs mr-4\",\n children: \"1A\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 261,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 flex items-center justify-center space-x-4\",\n children: [\n ...Array(6)\n ].map((_, i)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-col items-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `w-12 h-10 mb-1 transition-colors flex items-center justify-center `,\n jstype: \"testport-mpo\",\n mpoClean: \"false\",\n id: `CC-1A-${i + 1}`,\n onClick: ()=>onPortClick(`CC-1A-${i + 1}`),\n onMouseEnter: ()=>onPortHover(`CC-1A-${i + 1}`),\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `w-12 h-10 bg-[url('/mpo.png')] bg-contain bg-no-repeat bg-center`\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 273,\n columnNumber: 23\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 265,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-xs\",\n children: i + 1\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 275,\n columnNumber: 21\n }, this)\n ]\n }, i, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 264,\n columnNumber: 19\n }, this))\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 262,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 260,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 255,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-col h-1/2 bg-gray-900 rounded-md p-2 relative border border-gray-700\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-8 flex items-center justify-between px-2 border-b border-gray-700\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-blue-500 font-bold text-sm\",\n children: \"SWITCH\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 285,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex space-x-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-2 h-2 bg-green-500 rounded-full animate-pulse\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 287,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-2 h-2 bg-amber-500 rounded-full animate-pulse\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 288,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-2 h-2 bg-blue-500 rounded-full animate-pulse\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 289,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-2 h-2 bg-red-500 rounded-full animate-pulse\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 290,\n columnNumber: 23\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 286,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 284,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 flex flex-row\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-4/6 flex flex-col\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex justify-between px-4 text-xs text-gray-400\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n children: \"10/100/1000 Base-T\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 300,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n children: \"1-20\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 301,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 299,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 flex items-center justify-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid grid-cols-10 gap-0.5 w-full\",\n children: [\n ...Array(10)\n ].map((_, i)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-col items-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-5 h-5 border border-gray-600 rounded-sm flex items-center justify-center transition-colors\",\n jstype: \"testport-mpo\",\n id: `SW-TOP-${i + 1}`,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-4 h-4 bg-[url('/rj45.png')] bg-contain bg-no-repeat bg-center\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 314,\n columnNumber: 33\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 309,\n columnNumber: 31\n }, this)\n }, i, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 308,\n columnNumber: 29\n }, this))\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 306,\n columnNumber: 25\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 305,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 flex items-center justify-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid grid-cols-10 gap-0.5 w-full\",\n children: [\n ...Array(10)\n ].map((_, i)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-col items-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-5 h-5 border border-gray-600 rounded-sm flex items-center justify-center transition-colors\",\n jstype: \"testport-mpo\",\n id: `SW-BOT-${i + 1}`,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-4 h-4 bg-[url('/rj45.png')] bg-contain bg-no-repeat bg-center\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 331,\n columnNumber: 33\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 326,\n columnNumber: 31\n }, this)\n }, i, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 325,\n columnNumber: 29\n }, this))\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 323,\n columnNumber: 25\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 322,\n columnNumber: 23\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 297,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-2/6 flex flex-col\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex justify-between px-1 text-xs text-gray-400\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n children: \"SFP+\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 343,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n children: \"21-24\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 344,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 342,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 flex items-center justify-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex space-x-4\",\n children: [\n \" \",\n [\n ...Array(2)\n ].map((_, i)=>/*#__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)(\"div\", {\n className: \"w-10 h-5 border border-gray-600 rounded-sm flex items-center justify-center transition-colors\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-4 h-4 bg-[url('/lc.png')] bg-contain bg-no-repeat bg-center\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 356,\n columnNumber: 33\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-4 h-4 bg-[url('/lc.png')] bg-contain bg-no-repeat bg-center\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 357,\n columnNumber: 33\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 355,\n columnNumber: 31\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 352,\n columnNumber: 29\n }, this)\n }, i, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 351,\n columnNumber: 27\n }, this))\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 349,\n columnNumber: 23\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 348,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 flex items-center justify-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex space-x-4\",\n children: [\n \" \",\n [\n ...Array(2)\n ].map((_, i)=>/*#__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)(\"div\", {\n className: \"w-10 h-5 border border-gray-600 rounded-sm flex items-center justify-center transition-colors\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-4 h-4 bg-[url('/lc.png')] bg-contain bg-no-repeat bg-center\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 374,\n columnNumber: 33\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-4 h-4 bg-[url('/lc.png')] bg-contain bg-no-repeat bg-center\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 376,\n columnNumber: 33\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 373,\n columnNumber: 31\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 370,\n columnNumber: 29\n }, this)\n }, i, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 369,\n columnNumber: 27\n }, this))\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 367,\n columnNumber: 23\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 366,\n columnNumber: 23\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 340,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 295,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-6 flex items-center justify-between px-2 border-t border-gray-700\",\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)(\"div\", {\n className: \"text-xs text-gray-400\",\n children: \"Console\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 392,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-4 h-2 bg-gray-600 rounded-sm\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 393,\n columnNumber: 23\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 391,\n columnNumber: 21\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: \"text-xs text-gray-400\",\n children: \"Power\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 396,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-2 h-2 bg-green-500 rounded-full animate-pulse\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 397,\n columnNumber: 23\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 395,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 390,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 282,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 251,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 249,\n columnNumber: 6\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenter.js\",\n lineNumber: 25,\n columnNumber: 5\n }, this);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHBhZ2VzLWRpci1ub2RlKS8uL3NyYy9jb21wb25lbnRzL3NjZW5lL0RhdGFDZW50ZXIuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQTBCO0FBRVgsU0FBU0MsV0FBVyxFQUNqQ0MsY0FBYyxLQUFPLENBQUMsRUFDdEJDLGNBQWMsS0FBTyxDQUFDLEVBQ3RCQyxlQUFlLElBQUksRUFDbkJDLGFBQWEsSUFBSSxFQUNqQkMsY0FBYyxDQUFDLENBQUMsRUFDakI7SUFDQyxjQUFjO0lBQ2QsTUFBTUMsZUFBZSxDQUFDQztRQUNwQixJQUFJSixpQkFBaUJJLFFBQVE7WUFDM0IsT0FBTztRQUNUO1FBQ0EsSUFBSUgsZUFBZUcsUUFBUTtZQUN6QixPQUFPO1FBQ1Q7UUFDQSxJQUFJRixlQUFlQSxXQUFXLENBQUNFLE9BQU8sRUFBRTtZQUN0QyxPQUFPO1FBQ1Q7UUFDQSxPQUFPO0lBQ1Q7SUFFQSxxQkFDRSw4REFBQ0M7UUFBSUMsV0FBVTs7MEJBRWQsOERBQUNEO2dCQUFJQyxXQUFVOztrQ0FDWiw4REFBQ0Q7d0JBQUlDLFdBQVU7a0NBQW1COzs7Ozs7a0NBQ2xDLDhEQUFDRDt3QkFBSUMsV0FBVTs7MENBR2IsOERBQUNEO2dDQUFJQyxXQUFVOztrREFDSCw4REFBQ0Q7d0NBQUlDLFdBQVU7Ozs7OztrREFDZiw4REFBQ0Q7d0NBQUlDLFdBQVU7Ozs7OztrREFDZiw4REFBQ0Q7d0NBQUlDLFdBQVU7Ozs7OztrREFDZiw4REFBQ0Q7d0NBQUlDLFdBQVU7Ozs7OztrREFDZiw4REFBQ0Q7d0NBQUlDLFdBQVU7OzBEQUNiLDhEQUFDQztnREFBS0QsV0FBVTswREFBZTs7Ozs7OzBEQUMvQiw4REFBQ0Q7Z0RBQUlDLFdBQVU7MERBQ1o7dURBQUlFLE1BQU07aURBQUcsQ0FBQ0MsR0FBRyxDQUFDLENBQUNDLEdBQUdDLGtCQUNyQiw4REFBQ047d0RBQVlDLFdBQVU7OzBFQUN2Qiw4REFBQ0Q7Z0VBQ0dDLFdBQVcsQ0FBQyxtRUFBbUUsQ0FBQztnRUFDaEZNLFFBQU87Z0VBQ1BD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Tjt3RUFBWUMsV0FBVTtrRkFDckIsNEVBQUNEOzRFQUNDQyxXQUFVO3NGQUVWLDRFQUFDRDtnRkFBSUMsV0FBVTs7a0dBQ2IsOERBQUNEO3dGQUFJQyxXQUFVOzs7Ozs7a0dBQ2YsOERBQUNEO3dGQUFJQyxXQUFVOzs7Ozs7Ozs7Ozs7Ozs7Ozt1RUFOWEs7Ozs7Ozs7Ozs7Ozs7Ozs7a0VBZWQsOERBQUNOO3dEQUFJQyxXQUFVO2tFQUNmLDRFQUFDRDs0REFBSUMsV0FBVTs7Z0VBQWlCO2dFQUM3Qjt1RUFBSUUsTUFBTTtpRUFBRyxDQUFDQyxHQUFHLENBQUMsQ0FBQ0MsR0FBR0Msa0JBQ3JCLDhEQUFDTjt3RUFBWUMsV0FBVTtrRkFDckIsNEVBQUNEOzRFQUNDQyxXQUFVO3NGQUVWLDRFQUFDRDtnRkFBSUMsV0FBVTs7a0dBQ2IsOERBQUNEO3dGQUFJQyxXQUFVOzs7Ozs7a0dBRWYsOERBQUNEO3dGQUFJQyxXQUFVOzs7Ozs7Ozs7Ozs7Ozs7Ozt1RUFQWEs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7a0RBcUJsQiw4REFBQ047d0NBQUlDLFdBQVU7OzBEQUNiLDhEQUFDRDtnREFBSUMsV0FBVTs7a0VBQ2IsOERBQUNEO3dEQUFJQyxXQUFVO2tFQUF3Qjs7Ozs7O2tFQUN2Qyw4REFBQ0Q7d0RBQUlDLFdBQVU7Ozs7Ozs7Ozs7OzswREFFakIsOERBQUNEO2dEQUFJQyxXQUFVOztrRUFDYiw4REFBQ0Q7d0RBQUlDLFdBQVU7a0VBQXdCOzs7Ozs7a0VBQ3ZDLDhEQUFDRDt3REFBSUMsV0FBVTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBWXJDIiwic291cmNlcyI6WyIvb3B0L2Rldi9lc3QtZHN4L3NyYy9jb21wb25lbnRzL3NjZW5lL0RhdGFDZW50ZXIuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gRGF0YUNlbnRlcih7IFxuICBvblBvcnRDbGljayA9ICgpID0+IHt9LCBcbiAgb25Qb3J0SG92ZXIgPSAoKSA9PiB7fSwgXG4gIHNlbGVjdGVkUG9ydCA9IG51bGwsIFxuICB0YXJnZXRQb3J0ID0gbnVsbCwgXG4gIGNvbm5lY3Rpb25zID0ge30gXG59KSB7XG4gIC8vIOiOt+WPluerr+WPo+eahOi/nuaOpeeKtuaAgeagt+W8j1xuICBjb25zdCBnZXRQb3J0U3R5bGUgPSAocG9ydElkKSA9PiB7XG4gICAgaWYgKHNlbGVjdGVkUG9ydCA9PT0gcG9ydElkKSB7XG4gICAgICByZXR1cm4gJ2JnLWJsdWUtMzAwJztcbiAgICB9XG4gICAgaWYgKHRhcmdldFBvcnQgPT09IHBvcnRJZCkge1xuICAgICAgcmV0dXJuICdiZy1ncmVlbi0zMDAnO1xuICAgIH1cbiAgICBpZiAoY29ubmVjdGlvbnMgJiYgY29ubmVjdGlvbnNbcG9ydElkXSkge1xuICAgICAgcmV0dXJuICdiZy1bIzAwZmY3Zl0nO1xuICAgIH1cbiAgICByZXR1cm4gJ2JnLWdyYXktMzAwJztcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwiaC1mdWxsIHctZnVsbCBiZy1ibGFjayB0ZXh0LXdoaXRlIGZsZXhcIj5cbiAgICAgey8qIFJhY2sgdGFraW5nIDEvMyBvZiB0aGUgd2lkdGggKi99XG4gICAgIDxkaXYgY2xhc3NOYW1lPVwidy0xLzMgcC0xIGZsZXggZmxleC1jb2xcIj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LWNlbnRlciBtYi0xXCI+UmFjayBDQTwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImgtW2NhbGMoMTAwJS0xLjVyZW0pXSByb3VuZGVkLW1kIHAtMiBmbGV4IGZsZXgtY29sIHNwYWNlLXktMlwiPlxuICAgICAgICB7LyogQ0HmnLrmn5zlhoXlrrkgKi99XG4gICAgICAgICAgey8qIE1QT+mFjee6v+aetiAqL31cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggZmxleC1jb2wgaC0xLzIgYmctZ3JheS04MDAgcm91bmRlZC1tZCBwLTIgcmVsYXRpdmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImFic29sdXRlIHRvcC0wIGxlZnQtMCBiZy13aGl0ZSB3LTMgaC0zIHJvdW5kZWQtZnVsbFwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYWJzb2x1dGUgdG9wLTAgcmlnaHQtMCBiZy13aGl0ZSB3LTMgaC0zIHJvdW5kZWQtZnVsbFwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYWJzb2x1dGUgYm90dG9tLTAgbGVmdC0wIGJnLXdoaXRlIHctMyBoLTMgcm91bmRlZC1mdWxsXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJhYnNvbHV0ZSBib3R0b20tMCByaWdodC0wIGJnLXdoaXRlIHctMyBoLTMgcm91bmRlZC1mdWxsXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4LTEgZmxleCBpdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQteHMgbXItNFwiPjFBPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4LTEgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgc3BhY2UteC00XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHtbLi4uQXJyYXkoNildLm1hcCgoXywgaSkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYga2V5PXtpfSBjbGFzc05hbWU9XCJmbGV4IGZsZXgtY29sIGl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17YHctMTIgaC0xMCBtYi0xICB0cmFuc2l0aW9uLWNvbG9ycyBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqc3R5cGU9XCJ0ZXN0cG9ydC1tcG9cIiBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXBvQ2xlYW49XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPXtgQ0EtMUEtJHtpICsgMX1gfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBvblBvcnRDbGljayhgQ0EtMUEtJHtpICsgMX1gKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Nb3VzZUVudGVyPXsoKSA9PiBvblBvcnRIb3ZlcihgQ0EtMUEtJHtpICsgMX1gKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2B3LTEyIGgtMTAgYmctW3VybCgnL21wby5wbmcnKV0gYmctY29udGFpbiBiZy1uby1yZXBlYXQgYmctY2VudGVyYH0+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQteHNcIj57aSArIDF9PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIHsvKiBNUE/phY3nur/mnrYgKi99XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGZsZXgtY29sIGgtMS8yIGJnLWdyYXktODAwIHJvdW5kZWQtbWQgcC0yIHJlbGF0aXZlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJhYnNvbHV0ZSB0b3AtMCBsZWZ0LTAgYmctd2hpdGUgdy0zIGgtMyByb3VuZGVkLWZ1bGxcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImFic29sdXRlIHRvcC0wIHJpZ2h0LTAgYmctd2hpdGUgdy0zIGgtMyByb3VuZGVkLWZ1bGxcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImFic29sdXRlIGJvdHRvbS0wIGxlZnQtMCBiZy13aGl0ZSB3LTMgaC0zIHJvdW5kZWQtZnVsbFwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYWJzb2x1dGUgYm90dG9tLTAgcmlnaHQtMCBiZy13aGl0ZSB3LTMgaC0zIHJvdW5kZWQtZnVsbFwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleC0xIGZsZXggaXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LXhzIG1yLTRcIj4xQjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleC0xIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHNwYWNlLXgtNFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7Wy4uLkFycmF5KDYpXS5tYXAoKF8sIGkpID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGtleT17aX0gY2xhc3NOYW1lPVwiZmxleCBmbGV4LWNvbCBpdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2B3LTEyIGgtMTAgbWItMSAgdHJhbnNpdGlvbi1jb2xvcnMgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgYH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAganN0eXBlPVwidGVzdHBvcnQtbXBvXCIgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1wb0NsZWFuPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD17YENBLTFCLSR7aSArIDF9YH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gb25Qb3J0Q2xpY2soYENBLTFCLSR7aSArIDF9YCl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uTW91c2VFbnRlcj17KCkgPT4gb25Qb3J0SG92ZXIoYENBLTFCLSR7aSArIDF9YCl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtgdy0xMiBoLTEwIGJnLVt1cmwoJy9tcG8ucG5nJyldIGJnLWNvbnRhaW4gYmctbm8tcmVwZWF0IGJnLWNlbnRlcmB9PjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LXhzXCI+e2kgKyAxfTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgey8qIENB5py65p+c5YaF5a65ICovfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICB7LyogUmFjayB0YWtpbmcgMS8zIG9mIHRoZSB3aWR0aCAqL31cbiAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LTEvMyBwLTEgZmxleCBmbGV4LWNvbFwiPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtY2VudGVyIG1iLTFcIj5SYWNrIENCPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaC1bY2FsYygxMDAlLTEuNXJlbSldIHJvdW5kZWQtbWQgcC0yIGZsZXggZmxleC1jb2wgc3BhY2UteS0yXCI+XG5cbiAgICAgICAgey8qIENC5py65p+c5YaF5a65ICovfVxuICAgICAgICAgIHsvKiBNUE/phY3nur/mnrYgKi99XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGZsZXgtY29sIGgtMS8yIGJnLWdyYXktODAwIHJvdW5kZWQtbWQgcC0yIHJlbGF0aXZlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJhYnNvbHV0ZSB0b3AtMCBsZWZ0LTAgYmctd2hpdGUgdy0zIGgtMyByb3VuZGVkLWZ1bGxcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImFic29sdXRlIHRvcC0wIHJpZ2h0LTAgYmctd2hpdGUgdy0zIGgtMyByb3VuZGVkLWZ1bGxcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImFic29sdXRlIGJvdHRvbS0wIGxlZnQtMCBiZy13aGl0ZSB3LTMgaC0zIHJvdW5kZWQtZnVsbFwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYWJzb2x1dGUgYm90dG9tLTAgcmlnaHQtMCBiZy13aGl0ZSB3LTMgaC0zIHJvdW5kZWQtZnVsbFwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleC0xIGZsZXggaXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LXhzIG1yLTRcIj4xQTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleC0xIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHNwYWNlLXgtNFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7Wy4uLkFycmF5KDYpXS5tYXAoKF8sIGkpID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGtleT17aX0gY2xhc3NOYW1lPVwiZmxleCBmbGV4LWNvbCBpdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2B3LTEyIGgtMTAgbWItMSAgdHJhbnNpdGlvbi1jb2xvcnMgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgYH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAganN0eXBlPVwidGVzdHBvcnQtbXBvXCIgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1wb0NsZWFuPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD17YENCLTFBLSR7aSArIDF9YH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gb25Qb3J0Q2xpY2soYENCLTFBLSR7aSArIDF9YCl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uTW91c2VFbnRlcj17KCkgPT4gb25Qb3J0SG92ZXIoYENCLTFBLSR7aSArIDF9YCl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtgdy0xMiBoLTEwIGJnLVt1cmwoJy9tcG8ucG5nJyldIGJnLWNvbnRhaW4gYmctbm8tcmVwZWF0IGJnLWNlbnRlcmB9PjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LXhzXCI+e2kgKyAxfTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB7LyogTmV0d29yayBTd2l0Y2ggKi99XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGZsZXgtY29sIGgtMS8yIGJnLWdyYXktOTAwIHJvdW5kZWQtbWQgcC0yIHJlbGF0aXZlIGJvcmRlciBib3JkZXItZ3JheS03MDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7LyogU3dpdGNoIFRvcCBBcmVhIC0gQnJhbmQgYW5kIFN0YXR1cyBMRURzICovfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaC04IGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBweC0yIGJvcmRlci1iIGJvcmRlci1ncmF5LTcwMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LWJsdWUtNTAwIGZvbnQtYm9sZCB0ZXh0LXNtXCI+U1dJVENIPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggc3BhY2UteC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy0yIGgtMiBiZy1ncmVlbi01MDAgcm91bmRlZC1mdWxsIGFuaW1hdGUtcHVsc2VcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LTIgaC0yIGJnLWFtYmVyLTUwMCByb3VuZGVkLWZ1bGwgYW5pbWF0ZS1wdWxzZVwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctMiBoLTIgYmctYmx1ZS01MDAgcm91bmRlZC1mdWxsIGFuaW1hdGUtcHVsc2VcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LTIgaC0yIGJnLXJlZC01MDAgcm91bmRlZC1mdWxsIGFuaW1hdGUtcHVsc2VcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsvKiBTd2l0Y2ggUG9ydCBBcmVhICovfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleC0xIGZsZXggZmxleC1yb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsvKiBMZWZ0IFNpZGUgLSBSSjQ1IFBvcnRzICg4MCUpICovfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LTQvNiBmbGV4IGZsZXgtY29sXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsvKiBQb3J0IExhYmVscyAqL31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGp1c3RpZnktYmV0d2VlbiBweC00IHRleHQteHMgdGV4dC1ncmF5LTQwMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPjEwLzEwMC8xMDAwIEJhc2UtVDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj4xLTIwPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsvKiBUb3AgUm93IFBvcnRzICgxLTEwKSAtIFJKNDUgKi99XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleC0xIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJncmlkIGdyaWQtY29scy0xMCBnYXAtMC41IHctZnVsbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1suLi5BcnJheSgxMCldLm1hcCgoXywgaSkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGtleT17aX0gY2xhc3NOYW1lPVwiZmxleCBmbGV4LWNvbCBpdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidy01IGgtNSBib3JkZXIgYm9yZGVyLWdyYXktNjAwIHJvdW5kZWQtc20gZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgdHJhbnNpdGlvbi1jb2xvcnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAganN0eXBlPVwidGVzdHBvcnQtbXBvXCIgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD17YFNXLVRPUC0ke2kgKyAxfWB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LTQgaC00IGJnLVt1cmwoJy9yajQ1LnBuZycpXSBiZy1jb250YWluIGJnLW5vLXJlcGVhdCBiZy1jZW50ZXJcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7LyogQm90dG9tIFJvdyBQb3J0cyAoMTEtMjApIC0gUko0NSAqL31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4LTEgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImdyaWQgZ3JpZC1jb2xzLTEwIGdhcC0wLjUgdy1mdWxsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Wy4uLkFycmF5KDEwKV0ubWFwKChfLCBpKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYga2V5PXtpfSBjbGFzc05hbWU9XCJmbGV4IGZsZXgtY29sIGl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ3LTUgaC01IGJvcmRlciBib3JkZXItZ3JheS02MDAgcm91bmRlZC1zbSBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciB0cmFuc2l0aW9uLWNvbG9yc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqc3R5cGU9XCJ0ZXN0cG9ydC1tcG9cIiBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPXtgU1ctQk9ULSR7aSArIDF9YH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctNCBoLTQgYmctW3VybCgnL3JqNDUucG5nJyldIGJnLWNvbnRhaW4gYmctbm8tcmVwZWF0IGJnLWNlbnRlclwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7LyogUmlnaHQgU2lkZSAtIEZpYmVyIFBvcnRzICgyMCUpICovfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LTIvNiBmbGV4IGZsZXgtY29sXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsvKiBGaWJlciBQb3J0IExhYmVscyAqL31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGp1c3RpZnktYmV0d2VlbiBweC0xIHRleHQteHMgdGV4dC1ncmF5LTQwMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlNGUCs8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+MjEtMjQ8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgey8qIFRvcCBSb3cgRmliZXIgUG9ydHMgKDIxLTIyKSAqL31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4LTEgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IHNwYWNlLXgtNFwiPiB7Lyog5L2/55SoIHNwYWNlLXgtNCDmt7vliqDmsLTlubPpl7Tot50gKi99XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1suLi5BcnJheSgyKV0ubWFwKChfLCBpKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGtleT17aX0gY2xhc3NOYW1lPVwiZmxleCBqdXN0aWZ5LWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInctMTAgaC01IGJvcmRlciBib3JkZXItZ3JheS02MDAgcm91bmRlZC1zbSBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciB0cmFuc2l0aW9uLWNvbG9yc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy00IGgtNCBiZy1bdXJsKCcvbGMucG5nJyldIGJnLWNvbnRhaW4gYmctbm8tcmVwZWF0IGJnLWNlbnRlclwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LTQgaC00IGJnLVt1cmwoJy9sYy5wbmcnKV0gYmctY29udGFpbiBiZy1uby1yZXBlYXQgYmctY2VudGVyXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7LyogQm90dG9tIFJvdyBGaWJlciBQb3J0cyAoMjMtMjQpICovfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXgtMSBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggc3BhY2UteC00XCI+IHsvKiDkvb/nlKggc3BhY2UteC00IOa3u+WKoOawtOW5s+mXtOi3nSAqL31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Wy4uLkFycmF5KDIpXS5tYXAoKF8sIGkpID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYga2V5PXtpfSBjbGFzc05hbWU9XCJmbGV4IGp1c3RpZnktY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidy0xMCBoLTUgYm9yZGVyIGJvcmRlci1ncmF5LTYwMCByb3VuZGVkLXNtIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHRyYW5zaXRpb24tY29sb3JzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LTQgaC00IGJnLVt1cmwoJy9sYy5wbmcnKV0gYmctY29udGFpbiBiZy1uby1yZXBlYXQgYmctY2VudGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy00IGgtNCBiZy1bdXJsKCcvbGMucG5nJyldIGJnLWNvbnRhaW4gYmctbm8tcmVwZWF0IGJnLWNlbnRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgey8qIFN3aXRjaCBCb3R0b20gQXJlYSAtIENvbnNvbGUgYW5kIFBvd2VyICovfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaC02IGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBweC0yIGJvcmRlci10IGJvcmRlci1ncmF5LTcwMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBzcGFjZS14LTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LXhzIHRleHQtZ3JheS00MDBcIj5Db25zb2xlPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy00IGgtMiBiZy1ncmF5LTYwMCByb3VuZGVkLXNtXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIgc3BhY2UteC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC14cyB0ZXh0LWdyYXktNDAwXCI+UG93ZXI8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LTIgaC0yIGJnLWdyZWVuLTUwMCByb3VuZGVkLWZ1bGwgYW5pbWF0ZS1wdWxzZVwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgey8qIENC5py65p+c5YaF5a65ICovfVxuXG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIHsvKiBSYWNrIHRha2luZyAxLzMgb2YgdGhlIHdpZHRoICovfVxuICAgICA8ZGl2IGNsYXNzTmFtZT1cInctMS8zIHAtMSBmbGV4IGZsZXgtY29sXCI+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1jZW50ZXIgbWItMVwiPlJhY2sgQ0M8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJoLVtjYWxjKDEwMCUtMS41cmVtKV0gcm91bmRlZC1tZCBwLTIgZmxleCBmbGV4LWNvbCBzcGFjZS15LTJcIj5cblxuICAgICAgICB7LyogQ0PmnLrmn5zlhoXlrrkgKi99XG4gICAgICAgIHsvKiBNUE/phY3nur/mnrYgKi99XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBmbGV4LWNvbCBoLTEvMiBiZy1ncmF5LTgwMCByb3VuZGVkLW1kIHAtMiByZWxhdGl2ZVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJhYnNvbHV0ZSB0b3AtMCBsZWZ0LTAgYmctd2hpdGUgdy0zIGgtMyByb3VuZGVkLWZ1bGxcIj48L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYWJzb2x1dGUgdG9wLTAgcmlnaHQtMCBiZy13aGl0ZSB3LTMgaC0zIHJvdW5kZWQtZnVsbFwiPjwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJhYnNvbHV0ZSBib3R0b20tMCBsZWZ0LTAgYmctd2hpdGUgdy0zIGgtMyByb3VuZGVkLWZ1bGxcIj48L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYWJzb2x1dGUgYm90dG9tLTAgcmlnaHQtMCBiZy13aGl0ZSB3LTMgaC0zIHJvdW5kZWQtZnVsbFwiPjwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4LTEgZmxleCBpdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC14cyBtci00XCI+MUE8L3NwYW4+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleC0xIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHNwYWNlLXgtNFwiPlxuICAgICAgICAgICAgICAgIHtbLi4uQXJyYXkoNildLm1hcCgoXywgaSkgPT4gKFxuICAgICAgICAgICAgICAgICAgPGRpdiBrZXk9e2l9IGNsYXNzTmFtZT1cImZsZXggZmxleC1jb2wgaXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IFxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17YHctMTIgaC0xMCBtYi0xICB0cmFuc2l0aW9uLWNvbG9ycyBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBgfVxuICAgICAgICAgICAgICAgICAgICAgIGpzdHlwZT1cInRlc3Rwb3J0LW1wb1wiIFxuICAgICAgICAgICAgICAgICAgICAgIG1wb0NsZWFuPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICAgIGlkPXtgQ0MtMUEtJHtpICsgMX1gfVxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IG9uUG9ydENsaWNrKGBDQy0xQS0ke2kgKyAxfWApfVxuICAgICAgICAgICAgICAgICAgICAgIG9uTW91c2VFbnRlcj17KCkgPT4gb25Qb3J0SG92ZXIoYENDLTFBLSR7aSArIDF9YCl9XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17YHctMTIgaC0xMCBiZy1bdXJsKCcvbXBvLnBuZycpXSBiZy1jb250YWluIGJnLW5vLXJlcGVhdCBiZy1jZW50ZXJgfT48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQteHNcIj57aSArIDF9PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICB7LyogTmV0d29yayBTd2l0Y2ggKi99XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBmbGV4LWNvbCBoLTEvMiBiZy1ncmF5LTkwMCByb3VuZGVkLW1kIHAtMiByZWxhdGl2ZSBib3JkZXIgYm9yZGVyLWdyYXktNzAwXCI+XG4gICAgICAgICAgICAgICAgICB7LyogU3dpdGNoIFRvcCBBcmVhIC0gQnJhbmQgYW5kIFN0YXR1cyBMRURzICovfVxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJoLTggZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIHB4LTIgYm9yZGVyLWIgYm9yZGVyLWdyYXktNzAwXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1ibHVlLTUwMCBmb250LWJvbGQgdGV4dC1zbVwiPlNXSVRDSDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggc3BhY2UteC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LTIgaC0yIGJnLWdyZWVuLTUwMCByb3VuZGVkLWZ1bGwgYW5pbWF0ZS1wdWxzZVwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy0yIGgtMiBiZy1hbWJlci01MDAgcm91bmRlZC1mdWxsIGFuaW1hdGUtcHVsc2VcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctMiBoLTIgYmctYmx1ZS01MDAgcm91bmRlZC1mdWxsIGFuaW1hdGUtcHVsc2VcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctMiBoLTIgYmctcmVkLTUwMCByb3VuZGVkLWZ1bGwgYW5pbWF0ZS1wdWxzZVwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICB7LyogU3dpdGNoIFBvcnQgQXJlYSAqL31cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleC0xIGZsZXggZmxleC1yb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgey8qIExlZnQgU2lkZSAtIFJKNDUgUG9ydHMgKDgwJSkgKi99XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy00LzYgZmxleCBmbGV4LWNvbFwiPlxuICAgICAgICAgICAgICAgICAgICAgIHsvKiBQb3J0IExhYmVscyAqL31cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXgganVzdGlmeS1iZXR3ZWVuIHB4LTQgdGV4dC14cyB0ZXh0LWdyYXktNDAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj4xMC8xMDAvMTAwMCBCYXNlLVQ8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj4xLTIwPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgIHsvKiBUb3AgUm93IFBvcnRzICgxLTEwKSAtIFJKNDUgKi99XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4LTEgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZ3JpZCBncmlkLWNvbHMtMTAgZ2FwLTAuNSB3LWZ1bGxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAge1suLi5BcnJheSgxMCldLm1hcCgoXywgaSkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYga2V5PXtpfSBjbGFzc05hbWU9XCJmbGV4IGZsZXgtY29sIGl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidy01IGgtNSBib3JkZXIgYm9yZGVyLWdyYXktNjAwIHJvdW5kZWQtc20gZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgdHJhbnNpdGlvbi1jb2xvcnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqc3R5cGU9XCJ0ZXN0cG9ydC1tcG9cIiBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9e2BTVy1UT1AtJHtpICsgMX1gfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctNCBoLTQgYmctW3VybCgnL3JqNDUucG5nJyldIGJnLWNvbnRhaW4gYmctbm8tcmVwZWF0IGJnLWNlbnRlclwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgey8qIEJvdHRvbSBSb3cgUG9ydHMgKDExLTIwKSAtIFJKNDUgKi99XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4LTEgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZ3JpZCBncmlkLWNvbHMtMTAgZ2FwLTAuNSB3LWZ1bGxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAge1suLi5BcnJheSgxMCldLm1hcCgoXywgaSkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYga2V5PXtpfSBjbGFzc05hbWU9XCJmbGV4IGZsZXgtY29sIGl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidy01IGgtNSBib3JkZXIgYm9yZGVyLWdyYXktNjAwIHJvdW5kZWQtc20gZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgdHJhbnNpdGlvbi1jb2xvcnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqc3R5cGU9XCJ0ZXN0cG9ydC1tcG9cIiBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9e2BTVy1CT1QtJHtpICsgMX1gfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctNCBoLTQgYmctW3VybCgnL3JqNDUucG5nJyldIGJnLWNvbnRhaW4gYmctbm8tcmVwZWF0IGJnLWNlbnRlclwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgey8qIFJpZ2h0IFNpZGUgLSBGaWJlciBQb3J0cyAoMjAlKSAqL31cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LTIvNiBmbGV4IGZsZXgtY29sXCI+XG4gICAgICAgICAgICAgICAgICAgICAgey8qIEZpYmVyIFBvcnQgTGFiZWxzICovfVxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBqdXN0aWZ5LWJldHdlZW4gcHgtMSB0ZXh0LXhzIHRleHQtZ3JheS00MDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlNGUCs8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj4yMS0yNDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICB7LyogVG9wIFJvdyBGaWJlciBQb3J0cyAoMjEtMjIpICovfVxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleC0xIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IHNwYWNlLXgtNFwiPiB7Lyog5L2/55SoIHNwYWNlLXgtNCDmt7vliqDmsLTlubPpl7Tot50gKi99XG4gICAgICAgICAgICAgICAgICAgICAgICB7Wy4uLkFycmF5KDIpXS5tYXAoKF8sIGkpID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBrZXk9e2l9IGNsYXNzTmFtZT1cImZsZXgganVzdGlmeS1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidy0xMCBoLTUgYm9yZGVyIGJvcmRlci1ncmF5LTYwMCByb3VuZGVkLXNtIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHRyYW5zaXRpb24tY29sb3JzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LTQgaC00IGJnLVt1cmwoJy9sYy5wbmcnKV0gYmctY29udGFpbiBiZy1uby1yZXBlYXQgYmctY2VudGVyXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy00IGgtNCBiZy1bdXJsKCcvbGMucG5nJyldIGJnLWNvbnRhaW4gYmctbm8tcmVwZWF0IGJnLWNlbnRlclwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgIHsvKiBCb3R0b20gUm93IEZpYmVyIFBvcnRzICgyMy0yNCkgKi99XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4LTEgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggc3BhY2UteC00XCI+IHsvKiDkvb/nlKggc3BhY2UteC00IOa3u+WKoOawtOW5s+mXtOi3nSAqL31cbiAgICAgICAgICAgICAgICAgICAgICAgIHtbLi4uQXJyYXkoMildLm1hcCgoXywgaSkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGtleT17aX0gY2xhc3NOYW1lPVwiZmxleCBqdXN0aWZ5LWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ3LTEwIGgtNSBib3JkZXIgYm9yZGVyLWdyYXktNjAwIHJvdW5kZWQtc20gZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgdHJhbnNpdGlvbi1jb2xvcnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LTQgaC00IGJnLVt1cmwoJy9sYy5wbmcnKV0gYmctY29udGFpbiBiZy1uby1yZXBlYXQgYmctY2VudGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctNCBoLTQgYmctW3VybCgnL2xjLnBuZycpXSBiZy1jb250YWluIGJnLW5vLXJlcGVhdCBiZy1jZW50ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cblxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICB7LyogU3dpdGNoIEJvdHRvbSBBcmVhIC0gQ29uc29sZSBhbmQgUG93ZXIgKi99XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImgtNiBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gcHgtMiBib3JkZXItdCBib3JkZXItZ3JheS03MDBcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBzcGFjZS14LTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQteHMgdGV4dC1ncmF5LTQwMFwiPkNvbnNvbGU8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctNCBoLTIgYmctZ3JheS02MDAgcm91bmRlZC1zbVwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBzcGFjZS14LTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQteHMgdGV4dC1ncmF5LTQwMFwiPlBvd2VyPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LTIgaC0yIGJnLWdyZWVuLTUwMCByb3VuZGVkLWZ1bGwgYW5pbWF0ZS1wdWxzZVwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDwvZGl2PlxuICAgICAgICB7LyogQ0PmnLrmn5zlhoXlrrkgKi99XG5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgIDwvZGl2PlxuICApO1xufVxuIFxuXG5cbiJdLCJuYW1lcyI6WyJSZWFjdCIsIkRhdGFDZW50ZXIiLCJvblBvcnRDbGljayIsIm9uUG9ydEhvdmVyIiwic2VsZWN0ZWRQb3J0IiwidGFyZ2V0UG9ydCIsImNvbm5lY3Rpb25zIiwiZ2V0UG9ydFN0eWxlIiwicG9ydElkIiwiZGl2IiwiY2xhc3NOYW1lIiwic3BhbiIsIkFycmF5IiwibWFwIiwiXyIsImkiLCJqc3R5cGUiLCJtcG9DbGVhbiIsImlkIiwib25DbGljayIsIm9uTW91c2VFbnRlciJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(pages-dir-node)/./src/components/scene/DataCenter.js\n"); /***/ }), /***/ "(pages-dir-node)/./src/components/scene/DataCenterTask.js": /*!************************************************!*\ !*** ./src/components/scene/DataCenterTask.js ***! \************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; eval("__webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ DataCenterTask)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"react/jsx-dev-runtime\");\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 */ \"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var next_image__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! next/image */ \"(pages-dir-node)/./node_modules/next/image.js\");\n/* harmony import */ var next_image__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(next_image__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _store_deviceStore__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/store/deviceStore */ \"(pages-dir-node)/./src/store/deviceStore.js\");\n/* harmony import */ var _config_api__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/config/api */ \"(pages-dir-node)/./src/config/api.js\");\nvar __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_store_deviceStore__WEBPACK_IMPORTED_MODULE_3__]);\n_store_deviceStore__WEBPACK_IMPORTED_MODULE_3__ = (__webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__)[0];\n\n\n\n\n\nfunction DataCenterTask() {\n const { faultScenarios } = (0,_store_deviceStore__WEBPACK_IMPORTED_MODULE_3__[\"default\"])();\n const [connections, setConnections] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)([]);\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 (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)({\n \"DataCenterTask.useEffect\": ()=>{\n const fetchConnectionMap = {\n \"DataCenterTask.useEffect.fetchConnectionMap\": async ()=>{\n try {\n setLoading(true);\n setError(null);\n const response = await fetch(_config_api__WEBPACK_IMPORTED_MODULE_4__.API_URLS.CONNECTION.MAP_WITH_SCENE(faultScenarios));\n if (!response.ok) {\n throw new Error('获取连接配置失败');\n }\n const data = await response.json();\n // 将API返回的数据转换为所需的格式\n // 过滤掉包含特定关键字的端口\n const formattedConnections = Object.entries(data || {}).filter({\n \"DataCenterTask.useEffect.fetchConnectionMap.formattedConnections\": ([portId])=>!portId.includes('main-permanent') && !portId.includes('main-channel') && !portId.includes('remote-channel') && !portId.includes('main-cfp-sm-out') && !portId.includes('main-cfp-mm-out') && !portId.includes('main-cfp-in') && !portId.includes('remote-cfp-sm-out') && !portId.includes('remote-cfp-mm-out') && !portId.includes('remote-cfp-in')\n }[\"DataCenterTask.useEffect.fetchConnectionMap.formattedConnections\"]).map({\n \"DataCenterTask.useEffect.fetchConnectionMap.formattedConnections\": ([source, connection])=>({\n room: source,\n rack: connection.connectedTo\n })\n }[\"DataCenterTask.useEffect.fetchConnectionMap.formattedConnections\"]);\n setConnections(formattedConnections);\n } catch (err) {\n setError(err.message);\n console.error('获取连接配置错误:', err);\n } finally{\n setLoading(false);\n }\n }\n }[\"DataCenterTask.useEffect.fetchConnectionMap\"];\n fetchConnectionMap();\n }\n }[\"DataCenterTask.useEffect\"], [\n faultScenarios?.currentScene\n ]);\n return(// 主容器:渐变背景、内边距、圆角、尺寸限制、Flex 布局、阴影、边框和动画\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-gradient-to-br from-[#1E293B] to-[#0F172A] p-6 rounded-lg w-[full] h-[80vh] overflow-y-auto flex flex-col gap-6 shadow-2xl border border-[#334155] animate-fadeIn scrollbar-thin scrollbar-thumb-slate-600 scrollbar-track-slate-800\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"border-b border-cyan-700 pb-3 mb-3\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-sm font-semibold text-cyan-400 uppercase tracking-wider\",\n children: \"新任务单\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenterTask.js\",\n lineNumber: 58,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h1\", {\n className: \"text-2xl md:text-3xl font-bold text-gray-100 mt-1\",\n children: \"任务要求:数据中心MPO链路认证\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenterTask.js\",\n lineNumber: 59,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-xs text-gray-400\",\n children: \"任务编号: SIM-TRN-DC-001 \"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenterTask.js\",\n lineNumber: 60,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-xs text-gray-400\",\n children: \"地点: GlobalTech 数据中心 - A区机房\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenterTask.js\",\n lineNumber: 61,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenterTask.js\",\n lineNumber: 57,\n columnNumber: 7\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)(\"h2\", {\n className: \"text-xl font-semibold text-cyan-300\",\n children: \"情况说明\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenterTask.js\",\n lineNumber: 66,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-gray-300 leading-relaxed\",\n children: [\n \"GlobalTech 数据中心刚刚完成了对其 A区机房的关键升级。新的高密度光纤网络基础设施已部署完毕,连接了三个核心机柜:\",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"font-medium text-yellow-300\",\n children: \"Rack CA、Rack CB 和 Rack CC\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenterTask.js\",\n lineNumber: 69,\n columnNumber: 73\n }, this),\n \"。其中 \",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"font-medium text-yellow-300\",\n children: \"Rack CA\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenterTask.js\",\n lineNumber: 69,\n columnNumber: 155\n }, this),\n \" 有两个MPO配线架(1A、1B),\",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"font-medium text-yellow-300\",\n children: \"Rack CB\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenterTask.js\",\n lineNumber: 69,\n columnNumber: 233\n }, this),\n \" 和 \",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"font-medium text-yellow-300\",\n children: \"Rack CC\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenterTask.js\",\n lineNumber: 69,\n columnNumber: 296\n }, this),\n \" 各有一个MPO配线架(1A)。\"\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenterTask.js\",\n lineNumber: 68,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \" h-100 relative\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: \"/DataCenter.png\",\n alt: \"datacenter\",\n fill: true,\n className: \"object-contain\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenterTask.js\",\n lineNumber: 72,\n columnNumber: 18\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenterTask.js\",\n lineNumber: 71,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-gray-300 leading-relaxed\",\n children: [\n \"在这些高速链路正式投入运行前,数据中心运维团队要求进行 \",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"font-semibold text-red-400\",\n children: \"全面的MPO光纤链路认证测试\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenterTask.js\",\n lineNumber: 75,\n columnNumber: 39\n }, this),\n \"。你的测试任务对于确保每条连接都符合严格的 \",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"font-medium text-yellow-300\",\n children: \"ISO标准二级认证\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenterTask.js\",\n lineNumber: 75,\n columnNumber: 127\n }, this),\n \" 要求至关重要。考虑到数据中心的关键性,我们对链路质量有零容忍的故障要求。\"\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenterTask.js\",\n lineNumber: 74,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenterTask.js\",\n lineNumber: 65,\n columnNumber: 7\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)(\"h2\", {\n className: \"text-xl font-semibold text-cyan-300\",\n children: \"任务目标\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenterTask.js\",\n lineNumber: 81,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"ul\", {\n className: \"list-disc list-inside text-gray-300 space-y-2 pl-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"li\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"strong\", {\n className: \"text-gray-100\",\n children: \"了解环境:\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenterTask.js\",\n lineNumber: 84,\n columnNumber: 13\n }, this),\n \" 在模拟环境中识别出 \",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"font-medium text-yellow-300\",\n children: \"MPO光纤链路\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenterTask.js\",\n lineNumber: 84,\n columnNumber: 72\n }, this),\n \"(连接 Rack CA、Rack CB 和 Rack CC 之间的配线架)。\"\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenterTask.js\",\n lineNumber: 83,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"li\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"strong\", {\n className: \"text-gray-100\",\n children: \"测试设备:\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenterTask.js\",\n lineNumber: 87,\n columnNumber: 13\n }, this),\n \" 正确的操作模拟 \",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"font-medium text-yellow-300\",\n children: \"光纤认证分析仪\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenterTask.js\",\n lineNumber: 87,\n columnNumber: 70\n }, this),\n \"。为每次测试准确配置参数,确保符合ISO标准要求。\"\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenterTask.js\",\n lineNumber: 86,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"li\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"strong\", {\n className: \"text-gray-100\",\n children: \"执行认证测试:\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenterTask.js\",\n lineNumber: 90,\n columnNumber: 13\n }, this),\n \" 对所有MPO链路执行 \",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"font-medium text-yellow-300\",\n children: \"ISO标准\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenterTask.js\",\n lineNumber: 90,\n columnNumber: 75\n }, this),\n \" 进行测试,确保链路满足高速数据传输的要求。\"\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenterTask.js\",\n lineNumber: 89,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"li\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"strong\", {\n className: \"text-gray-100\",\n children: \"验证光纤类型:\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenterTask.js\",\n lineNumber: 93,\n columnNumber: 13\n }, this),\n \" 确认所有链路使用的是正确的 \",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"font-medium text-yellow-300\",\n children: \"多模或单模光纤\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenterTask.js\",\n lineNumber: 93,\n columnNumber: 78\n }, this),\n \",并验证连接器类型匹配。\"\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenterTask.js\",\n lineNumber: 92,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"li\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"strong\", {\n className: \"text-gray-100\",\n children: \"分析测试数据:\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenterTask.js\",\n lineNumber: 96,\n columnNumber: 13\n }, this),\n \" 仔细检查测试结果,识别所有 \",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"font-semibold text-green-400\",\n children: \"通过 (PASS)\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenterTask.js\",\n lineNumber: 96,\n columnNumber: 78\n }, this),\n \" 或 \",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"font-semibold text-red-400\",\n children: \"失败 (FAIL*)\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenterTask.js\",\n lineNumber: 96,\n columnNumber: 144\n }, this),\n \" 的情况。\"\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenterTask.js\",\n lineNumber: 95,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"li\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"strong\", {\n className: \"text-gray-100\",\n children: \"诊断故障点:\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenterTask.js\",\n lineNumber: 99,\n columnNumber: 13\n }, this),\n \" 对于任何失败的链路 (\",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-red-400 font-bold\",\n children: \"FAIL*\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenterTask.js\",\n lineNumber: 99,\n columnNumber: 74\n }, this),\n \"),使用测试仪的诊断功能来精确定位故障类型和大致位置,包括光纤损耗、连接器问题或弯曲损耗等。\"\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenterTask.js\",\n lineNumber: 98,\n columnNumber: 12\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"li\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"strong\", {\n className: \"text-gray-100\",\n children: \"记录与报告:\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenterTask.js\",\n lineNumber: 102,\n columnNumber: 13\n }, this),\n \" 使用指定格式安全保存每个测试结果:\",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"code\", {\n className: \"bg-gray-700 px-1.5 py-0.5 rounded text-xs text-yellow-300\",\n children: \"[源机柜-配线架]-[目标机柜-配线架]\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenterTask.js\",\n lineNumber: 102,\n columnNumber: 80\n }, this),\n \" (例如:\",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"code\", {\n className: \"bg-gray-700 px-1.5 py-0.5 rounded text-xs text-yellow-300\",\n children: \"RackCA-1A-RackCB-1A\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenterTask.js\",\n lineNumber: 102,\n columnNumber: 188\n }, this),\n \")。准备一份详细的认证报告以供数据中心运维团队审核。\"\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenterTask.js\",\n lineNumber: 101,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenterTask.js\",\n lineNumber: 82,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenterTask.js\",\n lineNumber: 80,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-y-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h3\", {\n className: \"text-lg font-semibold text-cyan-300\",\n children: \"目标链路概览\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenterTask.js\",\n lineNumber: 109,\n columnNumber: 10\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-gray-300\",\n children: \"你将测试数据中心三个核心机柜之间的多条MPO光纤链路。系统操作界面将模拟每条链路的测试过程。\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenterTask.js\",\n lineNumber: 110,\n columnNumber: 10\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid grid-cols-2 gap-x-4 gap-y-1 text-sm text-gray-400 pl-4\",\n children: loading ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n children: \"加载中...\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenterTask.js\",\n lineNumber: 114,\n columnNumber: 17\n }, this) : error ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-red-400\",\n children: error\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenterTask.js\",\n lineNumber: 116,\n columnNumber: 17\n }, this) : connections.map((link)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"code\", {\n className: \"text-yellow-400\",\n children: link.room\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenterTask.js\",\n lineNumber: 120,\n columnNumber: 25\n }, this),\n \" <-->\",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"code\", {\n className: \"text-yellow-400\",\n children: link.rack\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenterTask.js\",\n lineNumber: 121,\n columnNumber: 25\n }, this)\n ]\n }, link.rack, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenterTask.js\",\n lineNumber: 119,\n columnNumber: 21\n }, this))\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenterTask.js\",\n lineNumber: 112,\n columnNumber: 10\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenterTask.js\",\n lineNumber: 108,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mt-4 border-t border-cyan-700 pt-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-lg font-semibold text-gray-100\",\n children: \"请进入模拟测试环境。\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenterTask.js\",\n lineNumber: 130,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-gray-300\",\n children: \"配置好你的光纤测试设备,按照ISO标准执行二级认证测试,并详细记录你的发现。数据中心的高可用性和性能取决于这些光纤链路的质量和你的专业测试能力。\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenterTask.js\",\n lineNumber: 131,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"mt-2 text-cyan-400 font-medium\",\n children: \"祝你测试顺利!\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenterTask.js\",\n lineNumber: 132,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenterTask.js\",\n lineNumber: 129,\n columnNumber: 7\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/DataCenterTask.js\",\n lineNumber: 54,\n columnNumber: 5\n }, this));\n}\n\n__webpack_async_result__();\n} catch(e) { __webpack_async_result__(e); } });//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHBhZ2VzLWRpci1ub2RlKS8uL3NyYy9jb21wb25lbnRzL3NjZW5lL0RhdGFDZW50ZXJUYXNrLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBbUQ7QUFDcEI7QUFDa0I7QUFDVDtBQUV6QixTQUFTTTtJQUNwQixNQUFNLEVBQUVDLGNBQWMsRUFBRSxHQUFHSCw4REFBY0E7SUFDekMsTUFBTSxDQUFDSSxhQUFhQyxlQUFlLEdBQUdSLCtDQUFRQSxDQUFDLEVBQUU7SUFDakQsTUFBTSxDQUFDUyxTQUFTQyxXQUFXLEdBQUdWLCtDQUFRQSxDQUFDO0lBQ3ZDLE1BQU0sQ0FBQ1csT0FBT0MsU0FBUyxHQUFHWiwrQ0FBUUEsQ0FBQztJQUVuQ0MsZ0RBQVNBO29DQUFDO1lBQ04sTUFBTVk7K0RBQXFCO29CQUN2QixJQUFJO3dCQUNBSCxXQUFXO3dCQUNYRSxTQUFTO3dCQUNULE1BQU1FLFdBQVcsTUFBTUMsTUFBTVgsaURBQVFBLENBQUNZLFVBQVUsQ0FBQ0MsY0FBYyxDQUFDWDt3QkFDaEUsSUFBSSxDQUFDUSxTQUFTSSxFQUFFLEVBQUU7NEJBQ2QsTUFBTSxJQUFJQyxNQUFNO3dCQUNwQjt3QkFDQSxNQUFNQyxPQUFPLE1BQU1OLFNBQVNPLElBQUk7d0JBQ2hDLG9CQUFvQjt3QkFDcEIsZ0JBQWdCO3dCQUNoQixNQUFNQyx1QkFBdUJDLE9BQU9DLE9BQU8sQ0FBQ0osUUFBUSxDQUFDLEdBQ2hESyxNQUFNO2dHQUFDLENBQUMsQ0FBQ0MsT0FBTyxHQUNiLENBQUNBLE9BQU9DLFFBQVEsQ0FBQyxxQkFDakIsQ0FBQ0QsT0FBT0MsUUFBUSxDQUFDLG1CQUNqQixDQUFDRCxPQUFPQyxRQUFRLENBQUMscUJBQ2pCLENBQUNELE9BQU9DLFFBQVEsQ0FBQyxzQkFDakIsQ0FBQ0QsT0FBT0MsUUFBUSxDQUFDLHNCQUNqQixDQUFDRCxPQUFPQyxRQUFRLENBQUMsa0JBQ2pCLENBQUNELE9BQU9DLFFBQVEsQ0FBQyx3QkFDakIsQ0FBQ0QsT0FBT0MsUUFBUSxDQUFD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eUI7Ozs7OztvQ0FBWTs7Ozs7OzswQ0FFcEgsOERBQUNTOztrREFDQyw4REFBQ0M7d0NBQU9WLFdBQVU7a0RBQWdCOzs7Ozs7b0NBQWU7a0RBQWtCLDhEQUFDVzt3Q0FBS1gsV0FBVTtrREFBNEQ7Ozs7OztvQ0FBMkI7a0RBQUssOERBQUNXO3dDQUFLWCxXQUFVO2tEQUE0RDs7Ozs7O29DQUEwQjs7Ozs7Ozs7Ozs7Ozs7Ozs7OzswQkFNM1IsOERBQUNEO2dCQUFJQyxXQUFVOztrQ0FDWiw4REFBQ1k7d0JBQUdaLFdBQVU7a0NBQXNDOzs7Ozs7a0NBQ3BELDhEQUFDQzt3QkFBRUQsV0FBVTtrQ0FBZ0I7Ozs7OztrQ0FFN0IsOERBQUNEO3dCQUFJQyxXQUFVO2tDQUNYOUIsd0JBQ0csOERBQUMrQjtzQ0FBRTs7Ozs7bUNBQ0g3QixzQkFDQSw4REFBQzZCOzRCQUFFRCxXQUFVO3NDQUFnQjVCOzs7OzttQ0FFN0JKLFlBQVlxQixHQUFHLENBQUN3QixDQUFBQSxxQkFDWiw4REFBQ1o7O2tEQUNHLDhEQUFDVTt3Q0FBS1gsV0FBVTtrREFBbUJhLEtBQUtyQixJQUFJOzs7Ozs7b0NBQVE7a0RBQ3BELDhEQUFDbUI7d0NBQUtYLFdBQVU7a0RBQW1CYSxLQUFLcEIsSUFBSTs7Ozs7OzsrQkFGeENvQixLQUFLcEIsSUFBSTs7Ozs7Ozs7Ozs7Ozs7OzswQkFVL0IsOERBQUNNO2dCQUFJQyxXQUFVOztrQ0FDYiw4REFBQ0M7d0JBQUVELFdBQVU7a0NBQXNDOzs7Ozs7a0NBQ25ELDhEQUFDQzt3QkFBRUQsV0FBVTtrQ0FBZ0I7Ozs7OztrQ0FDN0IsOERBQUNDO3dCQUFFRCxXQUFVO2tDQUFpQzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBS3REIiwic291cmNlcyI6WyIvb3B0L2Rldi9lc3QtZHN4L3NyYy9jb21wb25lbnRzL3NjZW5lL0RhdGFDZW50ZXJUYXNrLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSwgdXNlRWZmZWN0IH0gZnJvbSAncmVhY3QnO1xyXG5pbXBvcnQgSW1hZ2UgZnJvbSAnbmV4dC9pbWFnZSc7XHJcbmltcG9ydCB1c2VEZXZpY2VTdG9yZSBmcm9tICdAL3N0b3JlL2RldmljZVN0b3JlJztcclxuaW1wb3J0IHsgQVBJX1VSTFMgfSBmcm9tICdAL2NvbmZpZy9hcGknO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gRGF0YUNlbnRlclRhc2soKSB7XHJcbiAgICBjb25zdCB7IGZhdWx0U2NlbmFyaW9zIH0gPSB1c2VEZXZpY2VTdG9yZSgpO1xyXG4gICAgY29uc3QgW2Nvbm5lY3Rpb25zLCBzZXRDb25uZWN0aW9uc10gPSB1c2VTdGF0ZShbXSk7XHJcbiAgICBjb25zdCBbbG9hZGluZywgc2V0TG9hZGluZ10gPSB1c2VTdGF0ZShmYWxzZSk7XHJcbiAgICBjb25zdCBbZXJyb3IsIHNldEVycm9yXSA9IHVzZVN0YXRlKG51bGwpO1xyXG5cclxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XHJcbiAgICAgICAgY29uc3QgZmV0Y2hDb25uZWN0aW9uTWFwID0gYXN5bmMgKCkgPT4ge1xyXG4gICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgc2V0TG9hZGluZyh0cnVlKTtcclxuICAgICAgICAgICAgICAgIHNldEVycm9yKG51bGwpO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChBUElfVVJMUy5DT05ORUNUSU9OLk1BUF9XSVRIX1NDRU5FKGZhdWx0U2NlbmFyaW9zKSk7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXJlc3BvbnNlLm9rKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCfojrflj5bov57mjqXphY3nva7lpLHotKUnKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByZXNwb25zZS5qc29uKCk7XHJcbiAgICAgICAgICAgICAgICAvLyDlsIZBUEnov5Tlm57nmoTmlbDmja7ovazmjaLkuLrmiYDpnIDnmoTmoLzlvI9cclxuICAgICAgICAgICAgICAgIC8vIOi/h+a7pOaOieWMheWQq+eJueWumuWFs+mUruWtl+eahOerr+WPo1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZm9ybWF0dGVkQ29ubmVjdGlvbnMgPSBPYmplY3QuZW50cmllcyhkYXRhIHx8IHt9KVxyXG4gICAgICAgICAgICAgICAgICAgIC5maWx0ZXIoKFtwb3J0SWRdKSA9PiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICFwb3J0SWQuaW5jbHVkZXMoJ21haW4tcGVybWFuZW50JykgJiYgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICFwb3J0SWQuaW5jbHVkZXMoJ21haW4tY2hhbm5lbCcpICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICFwb3J0SWQuaW5jbHVkZXMoJ3JlbW90ZS1jaGFubmVsJykgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgIXBvcnRJZC5pbmNsdWRlcygnbWFpbi1jZnAtc20tb3V0JykgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgIXBvcnRJZC5pbmNsdWRlcygnbWFpbi1jZnAtbW0tb3V0JykgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgIXBvcnRJZC5pbmNsdWRlcygnbWFpbi1jZnAtaW4nKSAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAhcG9ydElkLmluY2x1ZGVzKCdyZW1vdGUtY2ZwLXNtLW91dCcpICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICFwb3J0SWQuaW5jbHVkZXMoJ3JlbW90ZS1jZnAtbW0tb3V0JykgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgIXBvcnRJZC5pbmNsdWRlcygncmVtb3RlLWNmcC1pbicpXHJcbiAgICAgICAgICAgICAgICAgICAgKSlcclxuICAgICAgICAgICAgICAgICAgICAubWFwKChbc291cmNlLCBjb25uZWN0aW9uXSkgPT4gKHtcclxuICAgICAgICAgICAgICAgICAgICByb29tOiBzb3VyY2UsXHJcbiAgICAgICAgICAgICAgICAgICAgcmFjazogY29ubmVjdGlvbi5jb25uZWN0ZWRUb1xyXG4gICAgICAgICAgICAgICAgfSkpO1xyXG4gICAgICAgICAgICAgICAgc2V0Q29ubmVjdGlvbnMoZm9ybWF0dGVkQ29ubmVjdGlvbnMpO1xyXG4gICAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcclxuICAgICAgICAgICAgICAgIHNldEVycm9yKGVyci5tZXNzYWdlKTtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ+iOt+WPlui/nuaOpemFjee9rumUmeivrzonLCBlcnIpO1xyXG4gICAgICAgICAgICB9IGZpbmFsbHkge1xyXG4gICAgICAgICAgICAgICAgc2V0TG9hZGluZyhmYWxzZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICBmZXRjaENvbm5lY3Rpb25NYXAoKTtcclxuICAgIH0sIFtmYXVsdFNjZW5hcmlvcz8uY3VycmVudFNjZW5lXSk7XHJcblxyXG4gIHJldHVybiAoXHJcbiAgICAvLyDkuLvlrrnlmajvvJrmuJDlj5jog4zmma/jgIHlhoXovrnot53jgIHlnIbop5LjgIHlsLrlr7jpmZDliLbjgIFGbGV4IOW4g+WxgOOAgemYtOW9seOAgei+ueahhuWSjOWKqOeUu1xyXG4gICAgPGRpdiBjbGFzc05hbWU9XCJiZy1ncmFkaWVudC10by1iciBmcm9tLVsjMUUyOTNCXSB0by1bIzBGMTcyQV0gcC02IHJvdW5kZWQtbGcgdy1bZnVsbF0gIGgtWzgwdmhdIG92ZXJmbG93LXktYXV0byBmbGV4IGZsZXgtY29sIGdhcC02IHNoYWRvdy0yeGwgYm9yZGVyIGJvcmRlci1bIzMzNDE1NV0gYW5pbWF0ZS1mYWRlSW4gc2Nyb2xsYmFyLXRoaW4gc2Nyb2xsYmFyLXRodW1iLXNsYXRlLTYwMCBzY3JvbGxiYXItdHJhY2stc2xhdGUtODAwXCI+XHJcblxyXG4gICAgICB7Lyog5Lu75Yqh5qCH6aKYICovfVxyXG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImJvcmRlci1iIGJvcmRlci1jeWFuLTcwMCBwYi0zIG1iLTNcIj5cclxuICAgICAgICA8cCBjbGFzc05hbWU9XCJ0ZXh0LXNtIGZvbnQtc2VtaWJvbGQgdGV4dC1jeWFuLTQwMCB1cHBlcmNhc2UgdHJhY2tpbmctd2lkZXJcIj7mlrDku7vliqHljZU8L3A+XHJcbiAgICAgICAgPGgxIGNsYXNzTmFtZT1cInRleHQtMnhsIG1kOnRleHQtM3hsIGZvbnQtYm9sZCB0ZXh0LWdyYXktMTAwIG10LTFcIj7ku7vliqHopoHmsYLvvJrmlbDmja7kuK3lv4NNUE/pk77ot6/orqTor4E8L2gxPlxyXG4gICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQteHMgdGV4dC1ncmF5LTQwMFwiPuS7u+WKoee8luWPtzogU0lNLVRSTi1EQy0wMDEgPC9wPlxyXG4gICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQteHMgdGV4dC1ncmF5LTQwMFwiPuWcsOeCuTogR2xvYmFsVGVjaCDmlbDmja7kuK3lv4MgLSBB5Yy65py65oi/PC9wPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgey8qIOaDheWGteivtOaYjiAo6IOM5pmvKSAqL31cclxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJzcGFjZS15LTNcIj5cclxuICAgICAgICA8aDIgY2xhc3NOYW1lPVwidGV4dC14bCBmb250LXNlbWlib2xkIHRleHQtY3lhbi0zMDBcIj7mg4XlhrXor7TmmI48L2gyPlxyXG5cclxuICAgICAgICA8cCBjbGFzc05hbWU9XCJ0ZXh0LWdyYXktMzAwIGxlYWRpbmctcmVsYXhlZFwiPlxyXG4gICAgICAgICAgR2xvYmFsVGVjaCDmlbDmja7kuK3lv4PliJrliJrlrozmiJDkuoblr7nlhbYgQeWMuuacuuaIv+eahOWFs+mUruWNh+e6p+OAguaWsOeahOmrmOWvhuW6puWFiee6pOe9kee7nOWfuuehgOiuvuaWveW3sumDqOe9suWujOavle+8jOi/nuaOpeS6huS4ieS4quaguOW/g+acuuafnO+8mjxzcGFuIGNsYXNzTmFtZT1cImZvbnQtbWVkaXVtIHRleHQteWVsbG93LTMwMFwiPlJhY2sgQ0HjgIFSYWNrIENCIOWSjCBSYWNrIENDPC9zcGFuPuOAguWFtuS4rSA8c3BhbiBjbGFzc05hbWU9XCJmb250LW1lZGl1bSB0ZXh0LXllbGxvdy0zMDBcIj5SYWNrIENBPC9zcGFuPiDmnInkuKTkuKpNUE/phY3nur/mnrbvvIgxQeOAgTFC77yJ77yMPHNwYW4gY2xhc3NOYW1lPVwiZm9udC1tZWRpdW0gdGV4dC15ZWxsb3ctMzAwXCI+UmFjayBDQjwvc3Bhbj4g5ZKMIDxzcGFuIGNsYXNzTmFtZT1cImZvbnQtbWVkaXVtIHRleHQteWVsbG93LTMwMFwiPlJhY2sgQ0M8L3NwYW4+IOWQhOacieS4gOS4qk1QT+mFjee6v+aetu+8iDFB77yJ44CCXHJcbiAgICAgICAgPC9wPlxyXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiIGgtMTAwIHJlbGF0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgPEltYWdlIHNyYz1cIi9EYXRhQ2VudGVyLnBuZ1wiIGFsdD1cImRhdGFjZW50ZXJcIiBmaWxsIGNsYXNzTmFtZT1cIm9iamVjdC1jb250YWluXCIvPlxyXG4gICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQtZ3JheS0zMDAgbGVhZGluZy1yZWxheGVkXCI+XHJcbiAgICAgICAgICDlnKjov5nkupvpq5jpgJ/pk77ot6/mraPlvI/mipXlhaXov5DooYzliY3vvIzmlbDmja7kuK3lv4Pov5Dnu7Tlm6LpmJ/opoHmsYLov5vooYwgPHNwYW4gY2xhc3NOYW1lPVwiZm9udC1zZW1pYm9sZCB0ZXh0LXJlZC00MDBcIj7lhajpnaLnmoRNUE/lhYnnuqTpk77ot6/orqTor4HmtYvor5U8L3NwYW4+44CC5L2g55qE5rWL6K+V5Lu75Yqh5a+55LqO56Gu5L+d5q+P5p2h6L+e5o6l6YO956ym5ZCI5Lil5qC855qEIDxzcGFuIGNsYXNzTmFtZT1cImZvbnQtbWVkaXVtIHRleHQteWVsbG93LTMwMFwiPklTT+agh+WHhuS6jOe6p+iupOivgTwvc3Bhbj4g6KaB5rGC6Iez5YWz6YeN6KaB44CC6ICD6JmR5Yiw5pWw5o2u5Lit5b+D55qE5YWz6ZSu5oCn77yM5oiR5Lus5a+56ZO+6Lev6LSo6YeP5pyJ6Zu25a655b+N55qE5pWF6Zqc6KaB5rGC44CCXHJcbiAgICAgICAgPC9wPlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICB7Lyog5Lu75Yqh55uu5qCHICovfVxyXG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInNwYWNlLXktM1wiPlxyXG4gICAgICAgIDxoMiBjbGFzc05hbWU9XCJ0ZXh0LXhsIGZvbnQtc2VtaWJvbGQgdGV4dC1jeWFuLTMwMFwiPuS7u+WKoeebruaghzwvaDI+XHJcbiAgICAgICAgPHVsIGNsYXNzTmFtZT1cImxpc3QtZGlzYyBsaXN0LWluc2lkZSB0ZXh0LWdyYXktMzAwIHNwYWNlLXktMiBwbC00XCI+XHJcbiAgICAgICAgICA8bGk+XHJcbiAgICAgICAgICAgIDxzdHJvbmcgY2xhc3NOYW1lPVwidGV4dC1ncmF5LTEwMFwiPuS6huino+eOr+Wig++8mjwvc3Ryb25nPiDlnKjmqKHmi5/njq/looPkuK3or4bliKvlh7ogPHNwYW4gY2xhc3NOYW1lPVwiZm9udC1tZWRpdW0gdGV4dC15ZWxsb3ctMzAwXCI+TVBP5YWJ57qk6ZO+6LevPC9zcGFuPu+8iOi/nuaOpSBSYWNrIENB44CBUmFjayBDQiDlkowgUmFjayBDQyDkuYvpl7TnmoTphY3nur/mnrbvvInjgIJcclxuICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICA8bGk+XHJcbiAgICAgICAgICAgIDxzdHJvbmcgY2xhc3NOYW1lPVwidGV4dC1ncmF5LTEwMFwiPua1i+ivleiuvuWkh++8mjwvc3Ryb25nPiDmraPnoa7nmoTmk43kvZzmqKHmi58gPHNwYW4gY2xhc3NOYW1lPVwiZm9udC1tZWRpdW0gdGV4dC15ZWxsb3ctMzAwXCI+5YWJ57qk6K6k6K+B5YiG5p6Q5LuqPC9zcGFuPuOAguS4uuavj+asoea1i+ivleWHhuehrumFjee9ruWPguaVsO+8jOehruS/neespuWQiElTT+agh+WHhuimgeaxguOAglxyXG4gICAgICAgICAgPC9saT5cclxuICAgICAgICAgIDxsaT5cclxuICAgICAgICAgICAgPHN0cm9uZyBjbGFzc05hbWU9XCJ0ZXh0LWdyYXktMTAwXCI+5omn6KGM6K6k6K+B5rWL6K+V77yaPC9zdHJvbmc+IOWvueaJgOaciU1QT+mTvui3r+aJp+ihjCA8c3BhbiBjbGFzc05hbWU9XCJmb250LW1lZGl1bSB0ZXh0LXllbGxvdy0zMDBcIj5JU0/moIflh4Y8L3NwYW4+IOi/m+ihjOa1i+ivle+8jOehruS/nemTvui3r+a7oei2s+mrmOmAn+aVsOaNruS8oOi+k+eahOimgeaxguOAglxyXG4gICAgICAgICAgPC9saT5cclxuICAgICAgICAgIDxsaT5cclxuICAgICAgICAgICAgPHN0cm9uZyBjbGFzc05hbWU9XCJ0ZXh0LWdyYXktMTAwXCI+6aqM6K+B5YWJ57qk57G75Z6L77yaPC9zdHJvbmc+IOehruiupOaJgOaciemTvui3r+S9v+eUqOeahOaYr+ato+ehrueahCA8c3BhbiBjbGFzc05hbWU9XCJmb250LW1lZGl1bSB0ZXh0LXllbGxvdy0zMDBcIj7lpJrmqKHmiJbljZXmqKHlhYnnuqQ8L3NwYW4+77yM5bm26aqM6K+B6L+e5o6l5Zmo57G75Z6L5Yy56YWN44CCXHJcbiAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgPGxpPlxyXG4gICAgICAgICAgICA8c3Ryb25nIGNsYXNzTmFtZT1cInRleHQtZ3JheS0xMDBcIj7liIbmnpDmtYvor5XmlbDmja7vvJo8L3N0cm9uZz4g5LuU57uG5qOA5p+l5rWL6K+V57uT5p6c77yM6K+G5Yir5omA5pyJIDxzcGFuIGNsYXNzTmFtZT1cImZvbnQtc2VtaWJvbGQgdGV4dC1ncmVlbi00MDBcIj7pgJrov4cgKFBBU1MpPC9zcGFuPiDmiJYgPHNwYW4gY2xhc3NOYW1lPVwiZm9udC1zZW1pYm9sZCB0ZXh0LXJlZC00MDBcIj7lpLHotKUgKEZBSUwqKTwvc3Bhbj4g55qE5oOF5Ya144CCXHJcbiAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgIDxsaT5cclxuICAgICAgICAgICAgPHN0cm9uZyBjbGFzc05hbWU9XCJ0ZXh0LWdyYXktMTAwXCI+6K+K5pat5pWF6Zqc54K577yaPC9zdHJvbmc+IOWvueS6juS7u+S9leWksei0peeahOmTvui3ryAoPHNwYW4gY2xhc3NOYW1lPSd0ZXh0LXJlZC00MDAgZm9udC1ib2xkJz5GQUlMKjwvc3Bhbj4p77yM5L2/55So5rWL6K+V5Luq55qE6K+K5pat5Yqf6IO95p2l57K+56Gu5a6a5L2N5pWF6Zqc57G75Z6L5ZKM5aSn6Ie05L2N572u77yM5YyF5ous5YWJ57qk5o2f6ICX44CB6L+e5o6l5Zmo6Zeu6aKY5oiW5byv5puy5o2f6ICX562J44CCXHJcbiAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgPGxpPlxyXG4gICAgICAgICAgICA8c3Ryb25nIGNsYXNzTmFtZT1cInRleHQtZ3JheS0xMDBcIj7orrDlvZXkuI7miqXlkYrvvJo8L3N0cm9uZz4g5L2/55So5oyH5a6a5qC85byP5a6J5YWo5L+d5a2Y5q+P5Liq5rWL6K+V57uT5p6c77yaPGNvZGUgY2xhc3NOYW1lPVwiYmctZ3JheS03MDAgcHgtMS41IHB5LTAuNSByb3VuZGVkIHRleHQteHMgdGV4dC15ZWxsb3ctMzAwXCI+W+a6kOacuuafnC3phY3nur/mnrZdLVvnm67moIfmnLrmn5wt6YWN57q/5p62XTwvY29kZT4gKOS+i+Wmgu+8mjxjb2RlIGNsYXNzTmFtZT1cImJnLWdyYXktNzAwIHB4LTEuNSBweS0wLjUgcm91bmRlZCB0ZXh0LXhzIHRleHQteWVsbG93LTMwMFwiPlJhY2tDQS0xQS1SYWNrQ0ItMUE8L2NvZGU+KeOAguWHhuWkh+S4gOS7veivpue7hueahOiupOivgeaKpeWRiuS7peS+m+aVsOaNruS4reW/g+i/kOe7tOWboumYn+WuoeaguOOAglxyXG4gICAgICAgICAgPC9saT5cclxuICAgICAgICA8L3VsPlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIHsvKiDnm67moIfpk77ot6/mpoLop4ggKOWPr+mAie+8muatpOWkhOS/neaMgeeugOa0gSkgKi99XHJcbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwic3BhY2UteS0yXCI+XHJcbiAgICAgICAgIDxoMyBjbGFzc05hbWU9XCJ0ZXh0LWxnIGZvbnQtc2VtaWJvbGQgdGV4dC1jeWFuLTMwMFwiPuebruagh+mTvui3r+amguiniDwvaDM+XHJcbiAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQtZ3JheS0zMDBcIj7kvaDlsIbmtYvor5XmlbDmja7kuK3lv4PkuInkuKrmoLjlv4PmnLrmn5zkuYvpl7TnmoTlpJrmnaFNUE/lhYnnuqTpk77ot6/jgILns7vnu5/mk43kvZznlYzpnaLlsIbmqKHmi5/mr4/mnaHpk77ot6/nmoTmtYvor5Xov4fnqIvjgII8L3A+XHJcbiAgICAgICAgIHsvKiDlpoLkvZXliJflh7rlroPku6znmoTnpLrkvovvvIzmiJbogIXlj6rkv53nlZnkuIrpnaLnmoTmrrXokL0gKi99XHJcbiAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZ3JpZCBncmlkLWNvbHMtMiBnYXAteC00IGdhcC15LTEgdGV4dC1zbSB0ZXh0LWdyYXktNDAwIHBsLTRcIj5cclxuICAgICAgICAgICAge2xvYWRpbmcgPyAoXHJcbiAgICAgICAgICAgICAgICA8cD7liqDovb3kuK0uLi48L3A+XHJcbiAgICAgICAgICAgICkgOiBlcnJvciA/IChcclxuICAgICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQtcmVkLTQwMFwiPntlcnJvcn08L3A+XHJcbiAgICAgICAgICAgICkgOiAoXHJcbiAgICAgICAgICAgICAgICBjb25uZWN0aW9ucy5tYXAobGluayA9PiAoXHJcbiAgICAgICAgICAgICAgICAgICAgPHAga2V5PXtsaW5rLnJhY2t9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8Y29kZSBjbGFzc05hbWU9XCJ0ZXh0LXllbGxvdy00MDBcIj57bGluay5yb29tfTwvY29kZT4gJmx0Oy0tJmd0OyBcclxuICAgICAgICAgICAgICAgICAgICAgICAgPGNvZGUgY2xhc3NOYW1lPVwidGV4dC15ZWxsb3ctNDAwXCI+e2xpbmsucmFja308L2NvZGU+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgKSlcclxuICAgICAgICAgICAgKX1cclxuICAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgey8qIOacgOe7iOaMh+ekuiAqL31cclxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJtdC00IGJvcmRlci10IGJvcmRlci1jeWFuLTcwMCBwdC00XCI+XHJcbiAgICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC1sZyBmb250LXNlbWlib2xkIHRleHQtZ3JheS0xMDBcIj7or7fov5vlhaXmqKHmi5/mtYvor5Xnjq/looPjgII8L3A+XHJcbiAgICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC1ncmF5LTMwMFwiPumFjee9ruWlveS9oOeahOWFiee6pOa1i+ivleiuvuWkh++8jOaMieeFp0lTT+agh+WHhuaJp+ihjOS6jOe6p+iupOivgea1i+ivle+8jOW5tuivpue7huiusOW9leS9oOeahOWPkeeOsOOAguaVsOaNruS4reW/g+eahOmrmOWPr+eUqOaAp+WSjOaAp+iDveWPluWGs+S6jui/meS6m+WFiee6pOmTvui3r+eahOi0qOmHj+WSjOS9oOeahOS4k+S4mua1i+ivleiDveWKm+OAgjwvcD5cclxuICAgICAgICA8cCBjbGFzc05hbWU9XCJtdC0yIHRleHQtY3lhbi00MDAgZm9udC1tZWRpdW1cIj7npZ3kvaDmtYvor5XpobrliKnvvIE8L3A+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgIDwvZGl2PlxyXG4gICk7XHJcbn1cclxuIl0sIm5hbWVzIjpbIlJlYWN0IiwidXNlU3RhdGUiLCJ1c2VFZmZlY3QiLCJJbWFnZSIsInVzZURldmljZVN0b3JlIiwiQVBJX1VSTFMiLCJEYXRhQ2VudGVyVGFzayIsImZhdWx0U2NlbmFyaW9zIiwiY29ubmVjdGlvbnMiLCJzZXRDb25uZWN0aW9ucyIsImxvYWRpbmciLCJzZXRMb2FkaW5nIiwiZXJyb3IiLCJzZXRFcnJvciIsImZldGNoQ29ubmVjdGlvbk1hcCIsInJlc3BvbnNlIiwiZmV0Y2giLCJDT05ORUNUSU9OIiwiTUFQX1dJVEhfU0NFTkUiLCJvayIsIkVycm9yIiwiZGF0YSIsImpzb24iLCJmb3JtYXR0ZWRDb25uZWN0aW9ucyIsIk9iamVjdCIsImVudHJpZXMiLCJmaWx0ZXIiLCJwb3J0SWQiLCJpbmNsdWRlcyIsIm1hcCIsInNvdXJjZSIsImNvbm5lY3Rpb24iLCJyb29tIiwicmFjayIsImNvbm5lY3RlZFRvIiwiZXJyIiwibWVzc2FnZSIsImNvbnNvbGUiLCJjdXJyZW50U2NlbmUiLCJkaXYiLCJjbGFzc05hbWUiLCJwIiwiaDEiLCJoMiIsInNwYW4iLCJzcmMiLCJhbHQiLCJmaWxsIiwidWwiLCJsaSIsInN0cm9uZyIsImNvZGUiLCJoMyIsImxpbmsiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(pages-dir-node)/./src/components/scene/DataCenterTask.js\n"); /***/ }), /***/ "(pages-dir-node)/./src/components/scene/Industry.js": /*!******************************************!*\ !*** ./src/components/scene/Industry.js ***! \******************************************/ /***/ ((__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 */ Industry)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"react/jsx-dev-runtime\");\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 */ \"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n\n\nfunction Industry({ onPortClick = ()=>{}, onPortHover = ()=>{}, selectedPort = null, targetPort = null, connections = {} }) {\n // 获取端口的连接状态样式\n const getPortStyle = (portId)=>{\n if (selectedPort === portId) {\n return 'bg-blue-300';\n }\n if (targetPort === portId) {\n return 'bg-green-300';\n }\n if (connections && connections[portId]) {\n return 'bg-[#00ff7f]';\n }\n return 'bg-gray-300';\n };\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-full w-full bg-black text-white flex\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-[45%] p-2\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid grid-cols-2 gap-4 h-full\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-gray-900 rounded-lg p-2 flex flex-col\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-center mb-2\",\n children: \"Device1\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/Industry.js\",\n lineNumber: 31,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center justify-center flex-1\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-gray-800 p-4 rounded-lg\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex space-x-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: ` rounded-full flex items-center justify-center transition-colors ${getPortStyle('Device1-1')}`,\n jstype: \"testport-m12-d\",\n id: \"Device1-1\",\n onClick: ()=>onPortClick('Device1-1'),\n onMouseEnter: ()=>onPortHover('Device1-1'),\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `w-8 h-8 bg-[url('/m12-d.png')] bg-contain bg-no-repeat bg-center`\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/Industry.js\",\n lineNumber: 42,\n columnNumber: 21\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/Industry.js\",\n lineNumber: 35,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: ` rounded-full flex items-center justify-center transition-colors ${getPortStyle('Device1-2')}`,\n jstype: \"testport-m12-d\",\n id: \"Device1-2\",\n onClick: ()=>onPortClick('Device1-2'),\n onMouseEnter: ()=>onPortHover('Device1-2'),\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `w-8 h-8 bg-[url('/m12-d.png')] bg-contain bg-no-repeat bg-center`\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/Industry.js\",\n lineNumber: 51,\n columnNumber: 21\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/Industry.js\",\n lineNumber: 44,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/Industry.js\",\n lineNumber: 34,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/Industry.js\",\n lineNumber: 33,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/Industry.js\",\n lineNumber: 32,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/Industry.js\",\n lineNumber: 30,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-gray-900 rounded-lg p-2 flex flex-col\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-center mb-2\",\n children: \"Device2\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/Industry.js\",\n lineNumber: 60,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center justify-center flex-1\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-gray-800 p-4 rounded-lg\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex space-x-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `rounded-full flex items-center justify-center transition-colors ${getPortStyle('Device2-1')}`,\n jstype: \"testport-m12-d\",\n id: \"Device2-1\",\n onClick: ()=>onPortClick('Device2-1'),\n onMouseEnter: ()=>onPortHover('Device2-1'),\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `w-8 h-8 bg-[url('/m12-d.png')] bg-contain bg-no-repeat bg-center`\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/Industry.js\",\n lineNumber: 71,\n columnNumber: 21\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/Industry.js\",\n lineNumber: 64,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `rounded-full flex items-center justify-center transition-colors ${getPortStyle('Device2-2')}`,\n jstype: \"testport-m12-d\",\n id: \"Device2-2\",\n onClick: ()=>onPortClick('Device2-2'),\n onMouseEnter: ()=>onPortHover('Device2-2'),\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `w-8 h-8 bg-[url('/m12-d.png')] bg-contain bg-no-repeat bg-center`\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/Industry.js\",\n lineNumber: 80,\n columnNumber: 21\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/Industry.js\",\n lineNumber: 73,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/Industry.js\",\n lineNumber: 63,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/Industry.js\",\n lineNumber: 62,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/Industry.js\",\n lineNumber: 61,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/Industry.js\",\n lineNumber: 59,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-gray-900 rounded-lg p-2 flex flex-col\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-center mb-2\",\n children: \"Device3\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/Industry.js\",\n lineNumber: 89,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center justify-center flex-1\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-gray-800 p-4 rounded-lg\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex space-x-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `rounded-full flex items-center justify-center transition-colors ${getPortStyle('Device3-1')}`,\n jstype: \"testport-copper\",\n id: \"Device3-1\",\n onClick: ()=>onPortClick('Device3-1'),\n onMouseEnter: ()=>onPortHover('Device3-1'),\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `w-8 h-8 bg-[url('/rj45.png')] bg-contain bg-no-repeat bg-center`\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/Industry.js\",\n lineNumber: 100,\n columnNumber: 21\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/Industry.js\",\n lineNumber: 93,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `rounded-full flex items-center justify-center transition-colors ${getPortStyle('Device3-2')}`,\n jstype: \"testport-copper\",\n id: \"Device3-2\",\n onClick: ()=>onPortClick('Device3-2'),\n onMouseEnter: ()=>onPortHover('Device3-2'),\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `w-8 h-8 bg-[url('/rj45.png')] bg-contain bg-no-repeat bg-center`\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/Industry.js\",\n lineNumber: 109,\n columnNumber: 21\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/Industry.js\",\n lineNumber: 102,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/Industry.js\",\n lineNumber: 92,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/Industry.js\",\n lineNumber: 91,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/Industry.js\",\n lineNumber: 90,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/Industry.js\",\n lineNumber: 88,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-gray-900 rounded-lg p-2 flex flex-col\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-center mb-2\",\n children: \"Device4\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/Industry.js\",\n lineNumber: 118,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center justify-center flex-1\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-gray-800 p-4 rounded-lg\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex space-x-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `rounded-full flex items-center justify-center transition-colors ${getPortStyle('Device4-1')}`,\n jstype: \"testport-copper\",\n id: \"Device4-1\",\n onClick: ()=>onPortClick('Device4-1'),\n onMouseEnter: ()=>onPortHover('Device4-1'),\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `w-8 h-8 bg-[url('/rj45.png')] bg-contain bg-no-repeat bg-center`\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/Industry.js\",\n lineNumber: 129,\n columnNumber: 21\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/Industry.js\",\n lineNumber: 122,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `rounded-full flex items-center justify-center transition-colors ${getPortStyle('Device4-2')}`,\n jstype: \"testport-copper\",\n id: \"Device4-2\",\n onClick: ()=>onPortClick('Device4-2'),\n onMouseEnter: ()=>onPortHover('Device4-2'),\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `w-8 h-8 bg-[url('/rj45.png')] bg-contain bg-no-repeat bg-center`\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/Industry.js\",\n lineNumber: 138,\n columnNumber: 21\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/Industry.js\",\n lineNumber: 131,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/Industry.js\",\n lineNumber: 121,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/Industry.js\",\n lineNumber: 120,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/Industry.js\",\n lineNumber: 119,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/Industry.js\",\n lineNumber: 117,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/Industry.js\",\n lineNumber: 28,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/Industry.js\",\n lineNumber: 27,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-[55%] p-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-center mb-2\",\n children: \"Cabinet\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/Industry.js\",\n lineNumber: 149,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-gray-800 rounded-lg p-4 h-[calc(100%-2rem)]\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-full flex flex-col space-y-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 flex items-center justify-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid grid-cols-4 gap-8\",\n children: [\n ...Array(4)\n ].map((_, i)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-col items-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `w-12 h-12 mb-2 flex items-center justify-center transition-colors ${getPortStyle(`Cabinet-A${i + 1}`)}`,\n jstype: \"testport-m12-d\",\n id: `Cabinet-A${i + 1}`,\n onClick: ()=>onPortClick(`Cabinet-A${i + 1}`),\n onMouseEnter: ()=>onPortHover(`Cabinet-A${i + 1}`),\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `w-8 h-8 bg-[url('/m12-d.png')] bg-contain bg-no-repeat bg-center`\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/Industry.js\",\n lineNumber: 164,\n columnNumber: 21\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/Industry.js\",\n lineNumber: 157,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-xs\",\n children: [\n \"A\",\n i + 1\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/Industry.js\",\n lineNumber: 166,\n columnNumber: 21\n }, this)\n ]\n }, i, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/Industry.js\",\n lineNumber: 156,\n columnNumber: 19\n }, this))\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/Industry.js\",\n lineNumber: 154,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/Industry.js\",\n lineNumber: 153,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 flex items-center justify-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid grid-cols-4 gap-8\",\n children: [\n ...Array(4)\n ].map((_, i)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-col items-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `w-12 h-12 mb-2 flex items-center justify-center transition-colors ${getPortStyle(`Cabinet-R${i + 1}`)}`,\n jstype: \"testport-copper\",\n id: `Cabinet-R${i + 1}`,\n onClick: ()=>onPortClick(`Cabinet-R${i + 1}`),\n onMouseEnter: ()=>onPortHover(`Cabinet-R${i + 1}`),\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `w-8 h-8 bg-[url('/rj45.png')] bg-contain bg-no-repeat bg-center`\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/Industry.js\",\n lineNumber: 183,\n columnNumber: 21\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/Industry.js\",\n lineNumber: 177,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-xs\",\n children: [\n \"R\",\n i + 1\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/Industry.js\",\n lineNumber: 185,\n columnNumber: 21\n }, this)\n ]\n }, i, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/Industry.js\",\n lineNumber: 176,\n columnNumber: 19\n }, this))\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/Industry.js\",\n lineNumber: 174,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/Industry.js\",\n lineNumber: 173,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/Industry.js\",\n lineNumber: 151,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/Industry.js\",\n lineNumber: 150,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/Industry.js\",\n lineNumber: 148,\n columnNumber: 7\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/Industry.js\",\n lineNumber: 25,\n columnNumber: 5\n }, this);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHBhZ2VzLWRpci1ub2RlKS8uL3NyYy9jb21wb25lbnRzL3NjZW5lL0luZHVzdHJ5LmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUEwQjtBQUVYLFNBQVNDLFNBQVMsRUFDL0JDLGNBQWMsS0FBTyxDQUFDLEVBQ3RCQyxjQUFjLEtBQU8sQ0FBQyxFQUN0QkMsZUFBZSxJQUFJLEVBQ25CQyxhQUFhLElBQUksRUFDakJDLGNBQWMsQ0FBQyxDQUFDLEVBQ2pCO0lBQ0MsY0FBYztJQUNkLE1BQU1DLGVBQWUsQ0FBQ0M7UUFDcEIsSUFBSUosaUJBQWlCSSxRQUFRO1lBQzNCLE9BQU87UUFDVDtRQUNBLElBQUlILGVBQWVHLFFBQVE7WUFDekIsT0FBTztRQUNUO1FBQ0EsSUFBSUYsZUFBZUEsV0FBVyxDQUFDRSxPQUFPLEVBQUU7WUFDdEMsT0FBTztRQUNUO1FBQ0EsT0FBTztJQUNUO0lBRUEscUJBQ0UsOERBQUNDO1FBQUlDLFdBQVU7OzBCQUViLDhEQUFDRDtnQkFBSUMsV0FBVTswQkFDYiw0RUFBQ0Q7b0JBQUlDLFdBQVU7O3NDQUViLDhEQUFDRDs0QkFBSUMsV0FBVTs7OENBQ2IsOERBQUNEO29DQUFJQyxXQUFVOzhDQUFtQjs7Ozs7OzhDQUNsQyw4REFBQ0Q7b0NBQUlDLFdBQVU7OENBQ2IsNEVBQUNEO3dDQUFJQyxXQUFVO2tEQUNiLDRFQUFDRDs0Q0FBSUMsV0FBVTs7OERBQ2IsOERBQUNEO29EQUNDQyxXQUFXLENBQUMsaUVBQWlFLEVBQUVILGFBQWEsY0FBYztvREFDMUdJLFFBQU87b0RBQ1BDLElBQUc7b0RBQ0hDLFNBQVMsSUFBTVgsWUFBWTtvREFDM0JZLGNBQWMsSUFBTVgsWUFBWTs4REFFaEMsNEVBQUNNO3dEQUFJQyxXQUFXLENBQUMsZ0VBQWdFLENBQUM7Ozs7Ozs7Ozs7OzhEQUVwRiw4REFBQ0Q7b0RBQ0NDLFdBQVcsQ0FBQyxpRUFBaUUsRUFBRUgsYUFBYSxjQUFjO29EQUMxR0ksUUFBTztvREFDUEMsSUFBRztvREFDSEMsU0FBUyxJQUFNWCxZ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LDhEQUFDUzt3REFBS1QsV0FBVTs7NERBQVU7NERBQUVRLElBQUk7Ozs7Ozs7OytDQVR4QkE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBbUI1QiIsInNvdXJjZXMiOlsiL29wdC9kZXYvZXN0LWRzeC9zcmMvY29tcG9uZW50cy9zY2VuZS9JbmR1c3RyeS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gSW5kdXN0cnkoeyBcclxuICBvblBvcnRDbGljayA9ICgpID0+IHt9LCBcclxuICBvblBvcnRIb3ZlciA9ICgpID0+IHt9LCBcclxuICBzZWxlY3RlZFBvcnQgPSBudWxsLCBcclxuICB0YXJnZXRQb3J0ID0gbnVsbCwgXHJcbiAgY29ubmVjdGlvbnMgPSB7fSBcclxufSkge1xyXG4gIC8vIOiOt+WPluerr+WPo+eahOi/nuaOpeeKtuaAgeagt+W8j1xyXG4gIGNvbnN0IGdldFBvcnRTdHlsZSA9IChwb3J0SWQpID0+IHtcclxuICAgIGlmIChzZWxlY3RlZFBvcnQgPT09IHBvcnRJZCkge1xyXG4gICAgICByZXR1cm4gJ2JnLWJsdWUtMzAwJztcclxuICAgIH1cclxuICAgIGlmICh0YXJnZXRQb3J0ID09PSBwb3J0SWQpIHtcclxuICAgICAgcmV0dXJuICdiZy1ncmVlbi0zMDAnO1xyXG4gICAgfVxyXG4gICAgaWYgKGNvbm5lY3Rpb25zICYmIGNvbm5lY3Rpb25zW3BvcnRJZF0pIHtcclxuICAgICAgcmV0dXJuICdiZy1bIzAwZmY3Zl0nO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuICdiZy1ncmF5LTMwMCc7XHJcbiAgfTtcclxuXHJcbiAgcmV0dXJuIChcclxuICAgIDxkaXYgY2xhc3NOYW1lPVwiaC1mdWxsIHctZnVsbCBiZy1ibGFjayB0ZXh0LXdoaXRlIGZsZXhcIj5cclxuICAgICAgey8qIOW3peS4muiuvuWkh+WMuuWfnyAtIOW3puS+pzQ1JSAqL31cclxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LVs0NSVdIHAtMlwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZ3JpZCBncmlkLWNvbHMtMiBnYXAtNCBoLWZ1bGxcIj5cclxuICAgICAgICAgIHsvKiDorr7lpIcxICovfVxyXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJiZy1ncmF5LTkwMCByb3VuZGVkLWxnIHAtMiBmbGV4IGZsZXgtY29sXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1jZW50ZXIgbWItMlwiPkRldmljZTE8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBmbGV4LTFcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJnLWdyYXktODAwIHAtNCByb3VuZGVkLWxnXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggc3BhY2UteC00XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgIHJvdW5kZWQtZnVsbCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciB0cmFuc2l0aW9uLWNvbG9ycyAke2dldFBvcnRTdHlsZSgnRGV2aWNlMS0xJyl9YH1cclxuICAgICAgICAgICAgICAgICAgICBqc3R5cGU9XCJ0ZXN0cG9ydC1tMTItZFwiIFxyXG4gICAgICAgICAgICAgICAgICAgIGlkPVwiRGV2aWNlMS0xXCJcclxuICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBvblBvcnRDbGljaygnRGV2aWNlMS0xJyl9XHJcbiAgICAgICAgICAgICAgICAgICAgb25Nb3VzZUVudGVyPXsoKSA9PiBvblBvcnRIb3ZlcignRGV2aWNlMS0xJyl9XHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17YHctOCBoLTggYmctW3VybCgnL20xMi1kLnBuZycpXSBiZy1jb250YWluIGJnLW5vLXJlcGVhdCBiZy1jZW50ZXJgfT48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgIHJvdW5kZWQtZnVsbCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciB0cmFuc2l0aW9uLWNvbG9ycyAke2dldFBvcnRTdHlsZSgnRGV2aWNlMS0yJyl9YH1cclxuICAgICAgICAgICAgICAgICAgICBqc3R5cGU9XCJ0ZXN0cG9ydC1tMTItZFwiIFxyXG4gICAgICAgICAgICAgICAgICAgIGlkPVwiRGV2aWNlMS0yXCJcclxuICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBvblBvcnRDbGljaygnRGV2aWNlMS0yJyl9XHJcbiAgICAgICAgICAgICAgICAgICAgb25Nb3VzZUVudGVyPXsoKSA9PiBvblBvcnRIb3ZlcignRGV2aWNlMS0yJyl9XHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17YHctOCBoLTggYmctW3VybCgnL20xMi1kLnBuZycpXSBiZy1jb250YWluIGJnLW5vLXJlcGVhdCBiZy1jZW50ZXJgfT48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICB7Lyog6K6+5aSHMiAqL31cclxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmctZ3JheS05MDAgcm91bmRlZC1sZyBwLTIgZmxleCBmbGV4LWNvbFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtY2VudGVyIG1iLTJcIj5EZXZpY2UyPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgZmxleC0xXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJiZy1ncmF5LTgwMCBwLTQgcm91bmRlZC1sZ1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IHNwYWNlLXgtNFwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IFxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17YHJvdW5kZWQtZnVsbCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciB0cmFuc2l0aW9uLWNvbG9ycyAke2dldFBvcnRTdHlsZSgnRGV2aWNlMi0xJyl9YH1cclxuICAgICAgICAgICAgICAgICAgICBqc3R5cGU9XCJ0ZXN0cG9ydC1tMTItZFwiIFxyXG4gICAgICAgICAgICAgICAgICAgIGlkPVwiRGV2aWNlMi0xXCJcclxuICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBvblBvcnRDbGljaygnRGV2aWNlMi0xJyl9XHJcbiAgICAgICAgICAgICAgICAgICAgb25Nb3VzZUVudGVyPXsoKSA9PiBvblBvcnRIb3ZlcignRGV2aWNlMi0xJyl9XHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17YHctOCBoLTggYmctW3VybCgnL20xMi1kLnBuZycpXSBiZy1jb250YWluIGJnLW5vLXJlcGVhdCBiZy1jZW50ZXJgfT48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgcm91bmRlZC1mdWxsIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHRyYW5zaXRpb24tY29sb3JzICR7Z2V0UG9ydFN0eWxlKCdEZXZpY2UyLTInKX1gfVxyXG4gICAgICAgICAgICAgICAgICAgIGpzdHlwZT1cInRlc3Rwb3J0LW0xMi1kXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgaWQ9XCJEZXZpY2UyLTJcIlxyXG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IG9uUG9ydENsaWNrKCdEZXZpY2UyLTInKX1cclxuICAgICAgICAgICAgICAgICAgICBvbk1vdXNlRW50ZXI9eygpID0+IG9uUG9ydEhvdmVyKCdEZXZpY2UyLTInKX1cclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtgdy04IGgtOCBiZy1bdXJsKCcvbTEyLWQucG5nJyldIGJnLWNvbnRhaW4gYmctbm8tcmVwZWF0IGJnLWNlbnRlcmB9PjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIHsvKiDorr7lpIczICovfVxyXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJiZy1ncmF5LTkwMCByb3VuZGVkLWxnIHAtMiBmbGV4IGZsZXgtY29sXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1jZW50ZXIgbWItMlwiPkRldmljZTM8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBmbGV4LTFcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJnLWdyYXktODAwIHAtNCByb3VuZGVkLWxnXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggc3BhY2UteC00XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgcm91bmRlZC1mdWxsIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHRyYW5zaXRpb24tY29sb3JzICR7Z2V0UG9ydFN0eWxlKCdEZXZpY2UzLTEnKX1gfVxyXG4gICAgICAgICAgICAgICAgICAgIGpzdHlwZT1cInRlc3Rwb3J0LWNvcHBlclwiIFxyXG4gICAgICAgICAgICAgICAgICAgIGlkPVwiRGV2aWNlMy0xXCJcclxuICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBvblBvcnRDbGljaygnRGV2aWNlMy0xJyl9XHJcbiAgICAgICAgICAgICAgICAgICAgb25Nb3VzZUVudGVyPXsoKSA9PiBvblBvcnRIb3ZlcignRGV2aWNlMy0xJyl9XHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17YHctOCBoLTggYmctW3VybCgnL3JqNDUucG5nJyldIGJnLWNvbnRhaW4gYmctbm8tcmVwZWF0IGJnLWNlbnRlcmB9PjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBcclxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2Byb3VuZGVkLWZ1bGwgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgdHJhbnNpdGlvbi1jb2xvcnMgJHtnZXRQb3J0U3R5bGUoJ0RldmljZTMtMicpfWB9XHJcbiAgICAgICAgICAgICAgICAgICAganN0eXBlPVwidGVzdHBvcnQtY29wcGVyXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgaWQ9XCJEZXZpY2UzLTJcIlxyXG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IG9uUG9ydENsaWNrKCdEZXZpY2UzLTInKX1cclxuICAgICAgICAgICAgICAgICAgICBvbk1vdXNlRW50ZXI9eygpID0+IG9uUG9ydEhvdmVyKCdEZXZpY2UzLTInKX1cclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtgdy04IGgtOCBiZy1bdXJsKCcvcmo0NS5wbmcnKV0gYmctY29udGFpbiBiZy1uby1yZXBlYXQgYmctY2VudGVyYH0+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgey8qIOiuvuWkhzQgKi99XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJnLWdyYXktOTAwIHJvdW5kZWQtbGcgcC0yIGZsZXggZmxleC1jb2xcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LWNlbnRlciBtYi0yXCI+RGV2aWNlNDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIGZsZXgtMVwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmctZ3JheS04MDAgcC00IHJvdW5kZWQtbGdcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBzcGFjZS14LTRcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBcclxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2Byb3VuZGVkLWZ1bGwgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgdHJhbnNpdGlvbi1jb2xvcnMgJHtnZXRQb3J0U3R5bGUoJ0RldmljZTQtMScpfWB9XHJcbiAgICAgICAgICAgICAgICAgICAganN0eXBlPVwidGVzdHBvcnQtY29wcGVyXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgaWQ9XCJEZXZpY2U0LTFcIlxyXG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IG9uUG9ydENsaWNrKCdEZXZpY2U0LTEnKX1cclxuICAgICAgICAgICAgICAgICAgICBvbk1vdXNlRW50ZXI9eygpID0+IG9uUG9ydEhvdmVyKCdEZXZpY2U0LTEnKX1cclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtgdy04IGgtOCBiZy1bdXJsKCcvcmo0NS5wbmcnKV0gYmctY29udGFpbiBiZy1uby1yZXBlYXQgYmctY2VudGVyYH0+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IFxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17YHJvdW5kZWQtZnVsbCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciB0cmFuc2l0aW9uLWNvbG9ycyAke2dldFBvcnRTdHlsZSgnRGV2aWNlNC0yJyl9YH1cclxuICAgICAgICAgICAgICAgICAgICBqc3R5cGU9XCJ0ZXN0cG9ydC1jb3BwZXJcIiBcclxuICAgICAgICAgICAgICAgICAgICBpZD1cIkRldmljZTQtMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gb25Qb3J0Q2xpY2soJ0RldmljZTQtMicpfVxyXG4gICAgICAgICAgICAgICAgICAgIG9uTW91c2VFbnRlcj17KCkgPT4gb25Qb3J0SG92ZXIoJ0RldmljZTQtMicpfVxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2B3LTggaC04IGJnLVt1cmwoJy9yajQ1LnBuZycpXSBiZy1jb250YWluIGJnLW5vLXJlcGVhdCBiZy1jZW50ZXJgfT48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICB7Lyog5bel5Lia5o6n5Yi25p+cIC0g5Y+z5L6nNTUlICovfVxyXG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInctWzU1JV0gcC0yXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LWNlbnRlciBtYi0yXCI+Q2FiaW5ldDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmctZ3JheS04MDAgcm91bmRlZC1sZyBwLTQgaC1bY2FsYygxMDAlLTJyZW0pXVwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJoLWZ1bGwgZmxleCBmbGV4LWNvbCBzcGFjZS15LTRcIj5cclxuICAgICAgICAgICAgey8qIOS4iuWxguerr+WPo+e7hCAqL31cclxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4LTEgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImdyaWQgZ3JpZC1jb2xzLTQgZ2FwLThcIj5cclxuICAgICAgICAgICAgICAgIHtbLi4uQXJyYXkoNCldLm1hcCgoXywgaSkgPT4gKFxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGtleT17aX0gY2xhc3NOYW1lPVwiZmxleCBmbGV4LWNvbCBpdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IFxyXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgdy0xMiBoLTEyIG1iLTIgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgdHJhbnNpdGlvbi1jb2xvcnMgJHtnZXRQb3J0U3R5bGUoYENhYmluZXQtQSR7aSArIDF9YCl9YH1cclxuICAgICAgICAgICAgICAgICAgICAgIGpzdHlwZT1cInRlc3Rwb3J0LW0xMi1kXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICBpZD17YENhYmluZXQtQSR7aSArIDF9YH1cclxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IG9uUG9ydENsaWNrKGBDYWJpbmV0LUEke2kgKyAxfWApfVxyXG4gICAgICAgICAgICAgICAgICAgICAgb25Nb3VzZUVudGVyPXsoKSA9PiBvblBvcnRIb3ZlcihgQ2FiaW5ldC1BJHtpICsgMX1gKX1cclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2B3LTggaC04IGJnLVt1cmwoJy9tMTItZC5wbmcnKV0gYmctY29udGFpbiBiZy1uby1yZXBlYXQgYmctY2VudGVyYH0+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC14c1wiPkF7aSArIDF9PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICkpfVxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIHsvKiDkuIvlsYLnq6/lj6Pnu4QgKi99XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleC0xIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJncmlkIGdyaWQtY29scy00IGdhcC04XCI+XHJcbiAgICAgICAgICAgICAgICB7Wy4uLkFycmF5KDQpXS5tYXAoKF8sIGkpID0+IChcclxuICAgICAgICAgICAgICAgICAgPGRpdiBrZXk9e2l9IGNsYXNzTmFtZT1cImZsZXggZmxleC1jb2wgaXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBcclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17YHctMTIgaC0xMiBtYi0yIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHRyYW5zaXRpb24tY29sb3JzICR7Z2V0UG9ydFN0eWxlKGBDYWJpbmV0LVIke2kgKyAxfWApfWB9XHJcbiAgICAgICAgICAgICAgICAgICAgICBqc3R5cGU9XCJ0ZXN0cG9ydC1jb3BwZXJcIiBcclxuICAgICAgICAgICAgICAgICAgICAgIGlkPXtgQ2FiaW5ldC1SJHtpICsgMX1gfVxyXG4gICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gb25Qb3J0Q2xpY2soYENhYmluZXQtUiR7aSArIDF9YCl9XHJcbiAgICAgICAgICAgICAgICAgICAgICBvbk1vdXNlRW50ZXI9eygpID0+IG9uUG9ydEhvdmVyKGBDYWJpbmV0LVIke2kgKyAxfWApfT5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17YHctOCBoLTggYmctW3VybCgnL3JqNDUucG5nJyldIGJnLWNvbnRhaW4gYmctbm8tcmVwZWF0IGJnLWNlbnRlcmB9PjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQteHNcIj5Se2kgKyAxfTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICApKX1cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICApO1xyXG59Il0sIm5hbWVzIjpbIlJlYWN0IiwiSW5kdXN0cnkiLCJvblBvcnRDbGljayIsIm9uUG9ydEhvdmVyIiwic2VsZWN0ZWRQb3J0IiwidGFyZ2V0UG9ydCIsImNvbm5lY3Rpb25zIiwiZ2V0UG9ydFN0eWxlIiwicG9ydElkIiwiZGl2IiwiY2xhc3NOYW1lIiwianN0eXBlIiwiaWQiLCJvbkNsaWNrIiwib25Nb3VzZUVudGVyIiwiQXJyYXkiLCJtYXAiLCJfIiwiaSIsInNwYW4iXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(pages-dir-node)/./src/components/scene/Industry.js\n"); /***/ }), /***/ "(pages-dir-node)/./src/components/scene/IndustryTask.js": /*!**********************************************!*\ !*** ./src/components/scene/IndustryTask.js ***! \**********************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; eval("__webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ IndustryTask)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"react/jsx-dev-runtime\");\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 */ \"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var next_image__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! next/image */ \"(pages-dir-node)/./node_modules/next/image.js\");\n/* harmony import */ var next_image__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(next_image__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _store_deviceStore__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/store/deviceStore */ \"(pages-dir-node)/./src/store/deviceStore.js\");\n/* harmony import */ var _config_api__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/config/api */ \"(pages-dir-node)/./src/config/api.js\");\nvar __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_store_deviceStore__WEBPACK_IMPORTED_MODULE_3__]);\n_store_deviceStore__WEBPACK_IMPORTED_MODULE_3__ = (__webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__)[0];\n\n\n\n\n\nfunction IndustryTask() {\n const { faultScenarios } = (0,_store_deviceStore__WEBPACK_IMPORTED_MODULE_3__[\"default\"])();\n const [connections, setConnections] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)([]);\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 (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)({\n \"IndustryTask.useEffect\": ()=>{\n const fetchConnectionMap = {\n \"IndustryTask.useEffect.fetchConnectionMap\": async ()=>{\n try {\n setLoading(true);\n setError(null);\n const response = await fetch(_config_api__WEBPACK_IMPORTED_MODULE_4__.API_URLS.CONNECTION.MAP_WITH_SCENE(faultScenarios));\n if (!response.ok) {\n throw new Error('获取连接配置失败');\n }\n const data = await response.json();\n const formattedConnections = Object.entries(data || {}).filter({\n \"IndustryTask.useEffect.fetchConnectionMap.formattedConnections\": ([portId])=>!portId.includes('main-permanent') && !portId.includes('main-channel') && !portId.includes('remote-channel') && !portId.includes('main-cfp-sm-out') && !portId.includes('main-cfp-mm-out') && !portId.includes('main-cfp-in') && !portId.includes('remote-cfp-sm-out') && !portId.includes('remote-cfp-mm-out') && !portId.includes('remote-cfp-in')\n }[\"IndustryTask.useEffect.fetchConnectionMap.formattedConnections\"]).map({\n \"IndustryTask.useEffect.fetchConnectionMap.formattedConnections\": ([source, connection])=>({\n room: source,\n rack: connection.connectedTo\n })\n }[\"IndustryTask.useEffect.fetchConnectionMap.formattedConnections\"]);\n setConnections(formattedConnections);\n } catch (err) {\n setError(err.message);\n console.error('获取连接配置错误:', err);\n } finally{\n setLoading(false);\n }\n }\n }[\"IndustryTask.useEffect.fetchConnectionMap\"];\n fetchConnectionMap();\n }\n }[\"IndustryTask.useEffect\"], [\n faultScenarios?.currentScene\n ]);\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-gradient-to-br from-[#1E293B] to-[#0F172A] p-6 rounded-lg w-[full] h-[80vh] overflow-y-auto flex flex-col gap-6 shadow-2xl border border-[#334155] animate-fadeIn scrollbar-thin scrollbar-thumb-slate-600 scrollbar-track-slate-800\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"border-b border-cyan-700 pb-3 mb-3\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-sm font-semibold text-cyan-400 uppercase tracking-wider\",\n children: \"新任务单\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/IndustryTask.js\",\n lineNumber: 55,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h1\", {\n className: \"text-2xl md:text-3xl font-bold text-gray-100 mt-1\",\n children: \"任务要求:工业网络链路认证\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/IndustryTask.js\",\n lineNumber: 56,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-xs text-gray-400\",\n children: \"任务编号: SIM-IND-NTW-007 \"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/IndustryTask.js\",\n lineNumber: 57,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-xs text-gray-400\",\n children: \"地点: 智能制造产业园 - 自动化生产线\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/IndustryTask.js\",\n lineNumber: 58,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/IndustryTask.js\",\n lineNumber: 54,\n columnNumber: 7\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)(\"h2\", {\n className: \"text-xl font-semibold text-cyan-300\",\n children: \"情况说明\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/IndustryTask.js\",\n lineNumber: 63,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-gray-300 leading-relaxed\",\n children: [\n \"智能制造产业园正在进行\",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"font-medium text-yellow-300\",\n children: \"自动化生产线网络升级\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/IndustryTask.js\",\n lineNumber: 66,\n columnNumber: 22\n }, this),\n \"工程。新的工业以太网基础设施已完成安装,连接了\",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"font-medium text-yellow-300\",\n children: \"4个关键控制设备(Device X)\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/IndustryTask.js\",\n lineNumber: 66,\n columnNumber: 108\n }, this),\n \"与中央控制室的\",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"font-medium text-yellow-300\",\n children: \"工业网络机柜(Cabinet)\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/IndustryTask.js\",\n lineNumber: 66,\n columnNumber: 186\n }, this),\n \"。\"\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/IndustryTask.js\",\n lineNumber: 65,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \" h-100 relative\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: \"/Industry.png\",\n alt: \"industry\",\n fill: true,\n className: \"object-contain\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/IndustryTask.js\",\n lineNumber: 69,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/IndustryTask.js\",\n lineNumber: 68,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-gray-300 leading-relaxed\",\n children: [\n \"为确保生产线的稳定运行,需要对所有工业网络链路进行\",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"font-semibold text-red-400\",\n children: \"严格的物理层认证测试\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/IndustryTask.js\",\n lineNumber: 72,\n columnNumber: 36\n }, this),\n \"。这些链路必须满足\",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"font-medium text-yellow-300\",\n children: \"Cat 6 F/UTP\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/IndustryTask.js\",\n lineNumber: 72,\n columnNumber: 107\n }, this),\n \"标准,以支持高速数据传输和抗干扰要求。任何链路故障都可能导致生产线停机。\"\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/IndustryTask.js\",\n lineNumber: 71,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/IndustryTask.js\",\n lineNumber: 62,\n columnNumber: 7\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)(\"h2\", {\n className: \"text-xl font-semibold text-cyan-300\",\n children: \"任务目标\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/IndustryTask.js\",\n lineNumber: 78,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"ul\", {\n className: \"list-disc list-inside text-gray-300 space-y-2 pl-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"li\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"strong\", {\n className: \"text-gray-100\",\n children: \"环境评估:\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/IndustryTask.js\",\n lineNumber: 81,\n columnNumber: 13\n }, this),\n \" 识别\",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"font-medium text-yellow-300\",\n children: \"4条工业网络链路\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/IndustryTask.js\",\n lineNumber: 81,\n columnNumber: 64\n }, this),\n \"(连接 Device X-Y 与Cabinet 的配线架)。\"\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/IndustryTask.js\",\n lineNumber: 80,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"li\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"strong\", {\n className: \"text-gray-100\",\n children: \"测试准备:\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/IndustryTask.js\",\n lineNumber: 84,\n columnNumber: 13\n }, this),\n \" 使用\",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"font-medium text-yellow-300\",\n children: \"DSX 网络认证分析仪\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/IndustryTask.js\",\n lineNumber: 84,\n columnNumber: 64\n }, this),\n \",确保测试参数符合工业环境要求。\"\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/IndustryTask.js\",\n lineNumber: 83,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"li\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"strong\", {\n className: \"text-gray-100\",\n children: \"认证测试:\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/IndustryTask.js\",\n lineNumber: 87,\n columnNumber: 13\n }, this),\n \" 执行\",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"font-medium text-yellow-300\",\n children: \"TIA 1005 \"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/IndustryTask.js\",\n lineNumber: 87,\n columnNumber: 64\n }, this),\n \"标准测试,重点关注\",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"font-medium text-yellow-300\",\n children: \"串扰(Crosstalk)\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/IndustryTask.js\",\n lineNumber: 87,\n columnNumber: 135\n }, this),\n \"和\",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"font-medium text-yellow-300\",\n children: \"电磁干扰(EMI)抗性,至少需要保证E2等级\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/IndustryTask.js\",\n lineNumber: 87,\n columnNumber: 202\n }, this),\n \"。\"\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/IndustryTask.js\",\n lineNumber: 86,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"li\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"strong\", {\n className: \"text-gray-100\",\n children: \"数据分析:\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/IndustryTask.js\",\n lineNumber: 90,\n columnNumber: 13\n }, this),\n \" 评估测试结果,确认链路状态为\",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"font-semibold text-green-400\",\n children: \"合格(PASS)\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/IndustryTask.js\",\n lineNumber: 90,\n columnNumber: 76\n }, this),\n \"或\",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"font-semibold text-red-400\",\n children: \"不合格(FAIL*)\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/IndustryTask.js\",\n lineNumber: 90,\n columnNumber: 139\n }, this),\n \"。\"\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/IndustryTask.js\",\n lineNumber: 89,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"li\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"strong\", {\n className: \"text-gray-100\",\n children: \"故障诊断:\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/IndustryTask.js\",\n lineNumber: 93,\n columnNumber: 13\n }, this),\n \" 对于不合格链路,使用\",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"font-medium text-yellow-300\",\n children: \"高级诊断工具\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/IndustryTask.js\",\n lineNumber: 93,\n columnNumber: 72\n }, this),\n \"定位故障点,特别注意工业环境特有的干扰源。\"\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/IndustryTask.js\",\n lineNumber: 92,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"li\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"strong\", {\n className: \"text-gray-100\",\n children: \"报告记录:\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/IndustryTask.js\",\n lineNumber: 96,\n columnNumber: 13\n }, this),\n \" 按指定格式保存测试结果:\",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"code\", {\n className: \"bg-gray-700 px-1.5 py-0.5 rounded text-xs text-yellow-300\",\n children: \"[主机连接端口]-[远端连接端口]\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/IndustryTask.js\",\n lineNumber: 96,\n columnNumber: 74\n }, this),\n \" (示例:\",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"code\", {\n className: \"bg-gray-700 px-1.5 py-0.5 rounded text-xs text-yellow-300\",\n children: \"Device1-1-Cabinet-A1\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/IndustryTask.js\",\n lineNumber: 96,\n columnNumber: 179\n }, this),\n \")。\"\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/IndustryTask.js\",\n lineNumber: 95,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/IndustryTask.js\",\n lineNumber: 79,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/IndustryTask.js\",\n lineNumber: 77,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-y-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h3\", {\n className: \"text-lg font-semibold text-cyan-300\",\n children: \"工业链路概览\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/IndustryTask.js\",\n lineNumber: 103,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-gray-300\",\n children: \"需要测试的工业网络链路包括各控制区域与中央控制室之间的连接。每条链路都配备了工业级屏蔽接头。\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/IndustryTask.js\",\n lineNumber: 104,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid grid-cols-2 gap-x-4 gap-y-1 text-sm text-gray-400 pl-4\",\n children: loading ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n children: \"加载中...\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/IndustryTask.js\",\n lineNumber: 107,\n columnNumber: 13\n }, this) : error ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-red-400\",\n children: error\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/IndustryTask.js\",\n lineNumber: 109,\n columnNumber: 13\n }, this) : connections.map((link)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"code\", {\n className: \"text-yellow-400\",\n children: link.room\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/IndustryTask.js\",\n lineNumber: 113,\n columnNumber: 17\n }, this),\n \" <-->\",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"code\", {\n className: \"text-yellow-400\",\n children: link.rack\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/IndustryTask.js\",\n lineNumber: 114,\n columnNumber: 17\n }, this)\n ]\n }, link.rack, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/IndustryTask.js\",\n lineNumber: 112,\n columnNumber: 15\n }, this))\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/IndustryTask.js\",\n lineNumber: 105,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/IndustryTask.js\",\n lineNumber: 102,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mt-4 border-t border-cyan-700 pt-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-lg font-semibold text-gray-100\",\n children: \"开始工业网络测试\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/IndustryTask.js\",\n lineNumber: 123,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-gray-300\",\n children: \"请严格按照工业标准进行测试。记住,这些网络链路的可靠性直接关系到生产线的正常运转。\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/IndustryTask.js\",\n lineNumber: 124,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"mt-2 text-cyan-400 font-medium\",\n children: \"确保安全,祝你测试顺利!\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/IndustryTask.js\",\n lineNumber: 125,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/IndustryTask.js\",\n lineNumber: 122,\n columnNumber: 7\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/IndustryTask.js\",\n lineNumber: 51,\n columnNumber: 5\n }, this);\n}\n\n__webpack_async_result__();\n} catch(e) { __webpack_async_result__(e); } });//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHBhZ2VzLWRpci1ub2RlKS8uL3NyYy9jb21wb25lbnRzL3NjZW5lL0luZHVzdHJ5VGFzay5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQW1EO0FBQ3BCO0FBQ2tCO0FBQ1Q7QUFFekIsU0FBU007SUFDcEIsTUFBTSxFQUFFQyxjQUFjLEVBQUUsR0FBR0gsOERBQWNBO0lBQ3pDLE1BQU0sQ0FBQ0ksYUFBYUMsZUFBZSxHQUFHUiwrQ0FBUUEsQ0FBQyxFQUFFO0lBQ2pELE1BQU0sQ0FBQ1MsU0FBU0MsV0FBVyxHQUFHViwrQ0FBUUEsQ0FBQztJQUN2QyxNQUFNLENBQUNXLE9BQU9DLFNBQVMsR0FBR1osK0NBQVFBLENBQUM7SUFFbkNDLGdEQUFTQTtrQ0FBQztZQUNOLE1BQU1ZOzZEQUFxQjtvQkFDdkIsSUFBSTt3QkFDQUgsV0FBVzt3QkFDWEUsU0FBUzt3QkFDVCxNQUFNRSxXQUFXLE1BQU1DLE1BQU1YLGlEQUFRQSxDQUFDWSxVQUFVLENBQUNDLGNBQWMsQ0FBQ1g7d0JBQ2hFLElBQUksQ0FBQ1EsU0FBU0ksRUFBRSxFQUFFOzRCQUNkLE1BQU0sSUFBSUMsTUFBTTt3QkFDcEI7d0JBQ0EsTUFBTUMsT0FBTyxNQUFNTixTQUFTTyxJQUFJO3dCQUNoQyxNQUFNQyx1QkFBdUJDLE9BQU9DLE9BQU8sQ0FBQ0osUUFBUSxDQUFDLEdBQ2hESyxNQUFNOzhGQUFDLENBQUMsQ0FBQ0MsT0FBTyxHQUNiLENBQUNBLE9BQU9DLFFBQVEsQ0FBQyxxQkFDakIsQ0FBQ0QsT0FBT0MsUUFBUSxDQUFDLG1CQUNqQixDQUFDRCxPQUFPQyxRQUFRLENBQUMscUJBQ2pCLENBQUNELE9BQU9DLFFBQVEsQ0FBQyxzQkFDakIsQ0FBQ0QsT0FBT0MsUUFBUSxDQUFDLHNCQUNqQixDQUFDRCxPQUFPQyxRQUFRLENBQUMsa0JBQ2pCLENBQUNELE9BQU9DLFFBQVEsQ0FBQyx3QkFDakIsQ0FBQ0QsT0FBT0MsUUFBUSxDQUFDLHdCQUNqQixDQUFDRCxPQUFPQyxRQUFRLENBQUM7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QUE0RDs7Ozs7O29DQUF3QjtrREFBSyw4REFBQ1c7d0NBQUtYLFdBQVU7a0RBQTREOzs7Ozs7b0NBQTJCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OzBCQU1uUiw4REFBQ0Q7Z0JBQUlDLFdBQVU7O2tDQUNiLDhEQUFDWTt3QkFBR1osV0FBVTtrQ0FBc0M7Ozs7OztrQ0FDcEQsOERBQUNDO3dCQUFFRCxXQUFVO2tDQUFnQjs7Ozs7O2tDQUM3Qiw4REFBQ0Q7d0JBQUlDLFdBQVU7a0NBQ1o5Qix3QkFDQyw4REFBQytCO3NDQUFFOzs7OzttQ0FDRDdCLHNCQUNGLDhEQUFDNkI7NEJBQUVELFdBQVU7c0NBQWdCNUI7Ozs7O21DQUU3QkosWUFBWXFCLEdBQUcsQ0FBQ3dCLENBQUFBLHFCQUNkLDhEQUFDWjs7a0RBQ0MsOERBQUNVO3dDQUFLWCxXQUFVO2tEQUFtQmEsS0FBS3JCLElBQUk7Ozs7OztvQ0FBUTtrREFDcEQsOERBQUNtQjt3Q0FBS1gsV0FBVTtrREFBbUJhLEtBQUtwQixJQUFJOzs7Ozs7OytCQUZ0Q29CLEtBQUtwQixJQUFJOzs7Ozs7Ozs7Ozs7Ozs7OzBCQVV6Qiw4REFBQ007Z0JBQUlDLFdBQVU7O2tDQUNiLDhEQUFDQzt3QkFBRUQsV0FBVTtrQ0FBc0M7Ozs7OztrQ0FDbkQsOERBQUNDO3dCQUFFRCxXQUFVO2tDQUFnQjs7Ozs7O2tDQUM3Qiw4REFBQ0M7d0JBQUVELFdBQVU7a0NBQWlDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFLdEQiLCJzb3VyY2VzIjpbIi9vcHQvZGV2L2VzdC1kc3gvc3JjL2NvbXBvbmVudHMvc2NlbmUvSW5kdXN0cnlUYXNrLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSwgdXNlRWZmZWN0IH0gZnJvbSAncmVhY3QnO1xyXG5pbXBvcnQgSW1hZ2UgZnJvbSAnbmV4dC9pbWFnZSc7XHJcbmltcG9ydCB1c2VEZXZpY2VTdG9yZSBmcm9tICdAL3N0b3JlL2RldmljZVN0b3JlJztcclxuaW1wb3J0IHsgQVBJX1VSTFMgfSBmcm9tICdAL2NvbmZpZy9hcGknO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gSW5kdXN0cnlUYXNrKCkge1xyXG4gICAgY29uc3QgeyBmYXVsdFNjZW5hcmlvcyB9ID0gdXNlRGV2aWNlU3RvcmUoKTtcclxuICAgIGNvbnN0IFtjb25uZWN0aW9ucywgc2V0Q29ubmVjdGlvbnNdID0gdXNlU3RhdGUoW10pO1xyXG4gICAgY29uc3QgW2xvYWRpbmcsIHNldExvYWRpbmddID0gdXNlU3RhdGUoZmFsc2UpO1xyXG4gICAgY29uc3QgW2Vycm9yLCBzZXRFcnJvcl0gPSB1c2VTdGF0ZShudWxsKTtcclxuXHJcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGZldGNoQ29ubmVjdGlvbk1hcCA9IGFzeW5jICgpID0+IHtcclxuICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgIHNldExvYWRpbmcodHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICBzZXRFcnJvcihudWxsKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goQVBJX1VSTFMuQ09OTkVDVElPTi5NQVBfV0lUSF9TQ0VORShmYXVsdFNjZW5hcmlvcykpO1xyXG4gICAgICAgICAgICAgICAgaWYgKCFyZXNwb25zZS5vaykge1xyXG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcign6I635Y+W6L+e5o6l6YWN572u5aSx6LSlJyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBjb25zdCBkYXRhID0gYXdhaXQgcmVzcG9uc2UuanNvbigpO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZm9ybWF0dGVkQ29ubmVjdGlvbnMgPSBPYmplY3QuZW50cmllcyhkYXRhIHx8IHt9KVxyXG4gICAgICAgICAgICAgICAgICAgIC5maWx0ZXIoKFtwb3J0SWRdKSA9PiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICFwb3J0SWQuaW5jbHVkZXMoJ21haW4tcGVybWFuZW50JykgJiYgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICFwb3J0SWQuaW5jbHVkZXMoJ21haW4tY2hhbm5lbCcpICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICFwb3J0SWQuaW5jbHVkZXMoJ3JlbW90ZS1jaGFubmVsJykgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgIXBvcnRJZC5pbmNsdWRlcygnbWFpbi1jZnAtc20tb3V0JykgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgIXBvcnRJZC5pbmNsdWRlcygnbWFpbi1jZnAtbW0tb3V0JykgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgIXBvcnRJZC5pbmNsdWRlcygnbWFpbi1jZnAtaW4nKSAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAhcG9ydElkLmluY2x1ZGVzKCdyZW1vdGUtY2ZwLXNtLW91dCcpICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICFwb3J0SWQuaW5jbHVkZXMoJ3JlbW90ZS1jZnAtbW0tb3V0JykgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgIXBvcnRJZC5pbmNsdWRlcygncmVtb3RlLWNmcC1pbicpXHJcbiAgICAgICAgICAgICAgICAgICAgKSlcclxuICAgICAgICAgICAgICAgICAgICAubWFwKChbc291cmNlLCBjb25uZWN0aW9uXSkgPT4gKHtcclxuICAgICAgICAgICAgICAgICAgICByb29tOiBzb3VyY2UsXHJcbiAgICAgICAgICAgICAgICAgICAgcmFjazogY29ubmVjdGlvbi5jb25uZWN0ZWRUb1xyXG4gICAgICAgICAgICAgICAgfSkpO1xyXG4gICAgICAgICAgICAgICAgc2V0Q29ubmVjdGlvbnMoZm9ybWF0dGVkQ29ubmVjdGlvbnMpO1xyXG4gICAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcclxuICAgICAgICAgICAgICAgIHNldEVycm9yKGVyci5tZXNzYWdlKTtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ+iOt+WPlui/nuaOpemFjee9rumUmeivrzonLCBlcnIpO1xyXG4gICAgICAgICAgICB9IGZpbmFsbHkge1xyXG4gICAgICAgICAgICAgICAgc2V0TG9hZGluZyhmYWxzZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICBmZXRjaENvbm5lY3Rpb25NYXAoKTtcclxuICAgIH0sIFtmYXVsdFNjZW5hcmlvcz8uY3VycmVudFNjZW5lXSk7XHJcblxyXG4gIHJldHVybiAoXHJcbiAgICA8ZGl2IGNsYXNzTmFtZT1cImJnLWdyYWRpZW50LXRvLWJyIGZyb20tWyMxRTI5M0JdIHRvLVsjMEYxNzJBXSBwLTYgcm91bmRlZC1sZyB3LVtmdWxsXSBoLVs4MHZoXSBvdmVyZmxvdy15LWF1dG8gZmxleCBmbGV4LWNvbCBnYXAtNiBzaGFkb3ctMnhsIGJvcmRlciBib3JkZXItWyMzMzQxNTVdIGFuaW1hdGUtZmFkZUluIHNjcm9sbGJhci10aGluIHNjcm9sbGJhci10aHVtYi1zbGF0ZS02MDAgc2Nyb2xsYmFyLXRyYWNrLXNsYXRlLTgwMFwiPlxyXG5cclxuICAgICAgey8qIOS7u+WKoeagh+mimCAqL31cclxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJib3JkZXItYiBib3JkZXItY3lhbi03MDAgcGItMyBtYi0zXCI+XHJcbiAgICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC1zbSBmb250LXNlbWlib2xkIHRleHQtY3lhbi00MDAgdXBwZXJjYXNlIHRyYWNraW5nLXdpZGVyXCI+5paw5Lu75Yqh5Y2VPC9wPlxyXG4gICAgICAgIDxoMSBjbGFzc05hbWU9XCJ0ZXh0LTJ4bCBtZDp0ZXh0LTN4bCBmb250LWJvbGQgdGV4dC1ncmF5LTEwMCBtdC0xXCI+5Lu75Yqh6KaB5rGC77ya5bel5Lia572R57uc6ZO+6Lev6K6k6K+BPC9oMT5cclxuICAgICAgICA8cCBjbGFzc05hbWU9XCJ0ZXh0LXhzIHRleHQtZ3JheS00MDBcIj7ku7vliqHnvJblj7c6IFNJTS1JTkQtTlRXLTAwNyA8L3A+XHJcbiAgICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC14cyB0ZXh0LWdyYXktNDAwXCI+5Zyw54K5OiDmmbrog73liLbpgKDkuqfkuJrlm60gLSDoh6rliqjljJbnlJ/kuqfnur88L3A+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgey8qIOaDheWGteivtOaYjiAqL31cclxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJzcGFjZS15LTNcIj5cclxuICAgICAgICA8aDIgY2xhc3NOYW1lPVwidGV4dC14bCBmb250LXNlbWlib2xkIHRleHQtY3lhbi0zMDBcIj7mg4XlhrXor7TmmI48L2gyPlxyXG5cclxuICAgICAgICA8cCBjbGFzc05hbWU9XCJ0ZXh0LWdyYXktMzAwIGxlYWRpbmctcmVsYXhlZFwiPlxyXG4gICAgICAgICAg5pm66IO95Yi26YCg5Lqn5Lia5Zut5q2j5Zyo6L+b6KGMPHNwYW4gY2xhc3NOYW1lPVwiZm9udC1tZWRpdW0gdGV4dC15ZWxsb3ctMzAwXCI+6Ieq5Yqo5YyW55Sf5Lqn57q/572R57uc5Y2H57qnPC9zcGFuPuW3peeoi+OAguaWsOeahOW3peS4muS7peWkque9keWfuuehgOiuvuaWveW3suWujOaIkOWuieijhe+8jOi/nuaOpeS6hjxzcGFuIGNsYXNzTmFtZT1cImZvbnQtbWVkaXVtIHRleHQteWVsbG93LTMwMFwiPjTkuKrlhbPplK7mjqfliLborr7lpIfvvIhEZXZpY2UgWO+8iTwvc3Bhbj7kuI7kuK3lpK7mjqfliLblrqTnmoQ8c3BhbiBjbGFzc05hbWU9XCJmb250LW1lZGl1bSB0ZXh0LXllbGxvdy0zMDBcIj7lt6XkuJrnvZHnu5zmnLrmn5zvvIhDYWJpbmV077yJPC9zcGFuPuOAglxyXG4gICAgICAgIDwvcD5cclxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIiBoLTEwMCByZWxhdGl2ZVwiPlxyXG4gICAgICAgICAgPEltYWdlIHNyYz1cIi9JbmR1c3RyeS5wbmdcIiBhbHQ9XCJpbmR1c3RyeVwiIGZpbGwgY2xhc3NOYW1lPVwib2JqZWN0LWNvbnRhaW5cIi8+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC1ncmF5LTMwMCBsZWFkaW5nLXJlbGF4ZWRcIj5cclxuICAgICAgICAgIOS4uuehruS/neeUn+S6p+e6v+eahOeos+Wumui/kOihjO+8jOmcgOimgeWvueaJgOacieW3peS4mue9kee7nOmTvui3r+i/m+ihjDxzcGFuIGNsYXNzTmFtZT1cImZvbnQtc2VtaWJvbGQgdGV4dC1yZWQtNDAwXCI+5Lil5qC855qE54mp55CG5bGC6K6k6K+B5rWL6K+VPC9zcGFuPuOAgui/meS6m+mTvui3r+W/hemhu+a7oei2szxzcGFuIGNsYXNzTmFtZT1cImZvbnQtbWVkaXVtIHRleHQteWVsbG93LTMwMFwiPkNhdCA2IEYvVVRQPC9zcGFuPuagh+WHhu+8jOS7peaUr+aMgemrmOmAn+aVsOaNruS8oOi+k+WSjOaKl+W5suaJsOimgeaxguOAguS7u+S9lemTvui3r+aVhemanOmDveWPr+iDveWvvOiHtOeUn+S6p+e6v+WBnOacuuOAglxyXG4gICAgICAgIDwvcD5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICB7Lyog5Lu75Yqh55uu5qCHICovfVxyXG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInNwYWNlLXktM1wiPlxyXG4gICAgICAgIDxoMiBjbGFzc05hbWU9XCJ0ZXh0LXhsIGZvbnQtc2VtaWJvbGQgdGV4dC1jeWFuLTMwMFwiPuS7u+WKoeebruaghzwvaDI+XHJcbiAgICAgICAgPHVsIGNsYXNzTmFtZT1cImxpc3QtZGlzYyBsaXN0LWluc2lkZSB0ZXh0LWdyYXktMzAwIHNwYWNlLXktMiBwbC00XCI+XHJcbiAgICAgICAgICA8bGk+XHJcbiAgICAgICAgICAgIDxzdHJvbmcgY2xhc3NOYW1lPVwidGV4dC1ncmF5LTEwMFwiPueOr+Wig+ivhOS8sO+8mjwvc3Ryb25nPiDor4bliKs8c3BhbiBjbGFzc05hbWU9XCJmb250LW1lZGl1bSB0ZXh0LXllbGxvdy0zMDBcIj405p2h5bel5Lia572R57uc6ZO+6LevPC9zcGFuPu+8iOi/nuaOpSBEZXZpY2UgWC1ZIOS4jkNhYmluZXQg55qE6YWN57q/5p6277yJ44CCXHJcbiAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgPGxpPlxyXG4gICAgICAgICAgICA8c3Ryb25nIGNsYXNzTmFtZT1cInRleHQtZ3JheS0xMDBcIj7mtYvor5Xlh4blpIfvvJo8L3N0cm9uZz4g5L2/55SoPHNwYW4gY2xhc3NOYW1lPVwiZm9udC1tZWRpdW0gdGV4dC15ZWxsb3ctMzAwXCI+RFNYIOe9kee7nOiupOivgeWIhuaekOS7qjwvc3Bhbj7vvIznoa7kv53mtYvor5Xlj4LmlbDnrKblkIjlt6XkuJrnjq/looPopoHmsYLjgIJcclxuICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICA8bGk+XHJcbiAgICAgICAgICAgIDxzdHJvbmcgY2xhc3NOYW1lPVwidGV4dC1ncmF5LTEwMFwiPuiupOivgea1i+ivle+8mjwvc3Ryb25nPiDmiafooYw8c3BhbiBjbGFzc05hbWU9XCJmb250LW1lZGl1bSB0ZXh0LXllbGxvdy0zMDBcIj5USUEgMTAwNSA8L3NwYW4+5qCH5YeG5rWL6K+V77yM6YeN54K55YWz5rOoPHNwYW4gY2xhc3NOYW1lPVwiZm9udC1tZWRpdW0gdGV4dC15ZWxsb3ctMzAwXCI+5Liy5omwKENyb3NzdGFsayk8L3NwYW4+5ZKMPHNwYW4gY2xhc3NOYW1lPVwiZm9udC1tZWRpdW0gdGV4dC15ZWxsb3ctMzAwXCI+55S156OB5bmy5omwKEVNSSnmipfmgKfvvIzoh7PlsJHpnIDopoHkv53or4FFMuetiee6pzwvc3Bhbj7jgIJcclxuICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICA8bGk+XHJcbiAgICAgICAgICAgIDxzdHJvbmcgY2xhc3NOYW1lPVwidGV4dC1ncmF5LTEwMFwiPuaVsOaNruWIhuaekO+8mjwvc3Ryb25nPiDor4TkvLDmtYvor5Xnu5PmnpzvvIznoa7orqTpk77ot6/nirbmgIHkuLo8c3BhbiBjbGFzc05hbWU9XCJmb250LXNlbWlib2xkIHRleHQtZ3JlZW4tNDAwXCI+5ZCI5qC8KFBBU1MpPC9zcGFuPuaIljxzcGFuIGNsYXNzTmFtZT1cImZvbnQtc2VtaWJvbGQgdGV4dC1yZWQtNDAwXCI+5LiN5ZCI5qC8KEZBSUwqKTwvc3Bhbj7jgIJcclxuICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICA8bGk+XHJcbiAgICAgICAgICAgIDxzdHJvbmcgY2xhc3NOYW1lPVwidGV4dC1ncmF5LTEwMFwiPuaVhemanOiviuaWre+8mjwvc3Ryb25nPiDlr7nkuo7kuI3lkIjmoLzpk77ot6/vvIzkvb/nlKg8c3BhbiBjbGFzc05hbWU9XCJmb250LW1lZGl1bSB0ZXh0LXllbGxvdy0zMDBcIj7pq5jnuqfor4rmlq3lt6Xlhbc8L3NwYW4+5a6a5L2N5pWF6Zqc54K577yM54m55Yir5rOo5oSP5bel5Lia546v5aKD54m55pyJ55qE5bmy5omw5rqQ44CCXHJcbiAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgPGxpPlxyXG4gICAgICAgICAgICA8c3Ryb25nIGNsYXNzTmFtZT1cInRleHQtZ3JheS0xMDBcIj7miqXlkYrorrDlvZXvvJo8L3N0cm9uZz4g5oyJ5oyH5a6a5qC85byP5L+d5a2Y5rWL6K+V57uT5p6c77yaPGNvZGUgY2xhc3NOYW1lPVwiYmctZ3JheS03MDAgcHgtMS41IHB5LTAuNSByb3VuZGVkIHRleHQteHMgdGV4dC15ZWxsb3ctMzAwXCI+W+S4u+acuui/nuaOpeerr+WPo10tW+i/nOerr+i/nuaOpeerr+WPo108L2NvZGU+ICjnpLrkvovvvJo8Y29kZSBjbGFzc05hbWU9XCJiZy1ncmF5LTcwMCBweC0xLjUgcHktMC41IHJvdW5kZWQgdGV4dC14cyB0ZXh0LXllbGxvdy0zMDBcIj5EZXZpY2UxLTEtQ2FiaW5ldC1BMTwvY29kZT4p44CCXHJcbiAgICAgICAgICA8L2xpPlxyXG4gICAgICAgIDwvdWw+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgey8qIOmTvui3r+amguiniCAqL31cclxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJzcGFjZS15LTJcIj5cclxuICAgICAgICA8aDMgY2xhc3NOYW1lPVwidGV4dC1sZyBmb250LXNlbWlib2xkIHRleHQtY3lhbi0zMDBcIj7lt6XkuJrpk77ot6/mpoLop4g8L2gzPlxyXG4gICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQtZ3JheS0zMDBcIj7pnIDopoHmtYvor5XnmoTlt6XkuJrnvZHnu5zpk77ot6/ljIXmi6zlkITmjqfliLbljLrln5/kuI7kuK3lpK7mjqfliLblrqTkuYvpl7TnmoTov57mjqXjgILmr4/mnaHpk77ot6/pg73phY3lpIfkuoblt6XkuJrnuqflsY/olL3mjqXlpLTjgII8L3A+XHJcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJncmlkIGdyaWQtY29scy0yIGdhcC14LTQgZ2FwLXktMSB0ZXh0LXNtIHRleHQtZ3JheS00MDAgcGwtNFwiPlxyXG4gICAgICAgICAge2xvYWRpbmcgPyAoXHJcbiAgICAgICAgICAgIDxwPuWKoOi9veS4rS4uLjwvcD5cclxuICAgICAgICAgICkgOiBlcnJvciA/IChcclxuICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC1yZWQtNDAwXCI+e2Vycm9yfTwvcD5cclxuICAgICAgICAgICkgOiAoXHJcbiAgICAgICAgICAgIGNvbm5lY3Rpb25zLm1hcChsaW5rID0+IChcclxuICAgICAgICAgICAgICA8cCBrZXk9e2xpbmsucmFja30+XHJcbiAgICAgICAgICAgICAgICA8Y29kZSBjbGFzc05hbWU9XCJ0ZXh0LXllbGxvdy00MDBcIj57bGluay5yb29tfTwvY29kZT4gJmx0Oy0tJmd0OyBcclxuICAgICAgICAgICAgICAgIDxjb2RlIGNsYXNzTmFtZT1cInRleHQteWVsbG93LTQwMFwiPntsaW5rLnJhY2t9PC9jb2RlPlxyXG4gICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgKSlcclxuICAgICAgICAgICl9XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgey8qIOacgOe7iOaMh+ekuiAqL31cclxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJtdC00IGJvcmRlci10IGJvcmRlci1jeWFuLTcwMCBwdC00XCI+XHJcbiAgICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC1sZyBmb250LXNlbWlib2xkIHRleHQtZ3JheS0xMDBcIj7lvIDlp4vlt6XkuJrnvZHnu5zmtYvor5U8L3A+XHJcbiAgICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC1ncmF5LTMwMFwiPuivt+S4peagvOaMieeFp+W3peS4muagh+WHhui/m+ihjOa1i+ivleOAguiusOS9j++8jOi/meS6m+e9kee7nOmTvui3r+eahOWPr+mdoOaAp+ebtOaOpeWFs+ezu+WIsOeUn+S6p+e6v+eahOato+W4uOi/kOi9rOOAgjwvcD5cclxuICAgICAgICA8cCBjbGFzc05hbWU9XCJtdC0yIHRleHQtY3lhbi00MDAgZm9udC1tZWRpdW1cIj7noa7kv53lronlhajvvIznpZ3kvaDmtYvor5XpobrliKnvvIE8L3A+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgIDwvZGl2PlxyXG4gICk7XHJcbn0iXSwibmFtZXMiOlsiUmVhY3QiLCJ1c2VTdGF0ZSIsInVzZUVmZmVjdCIsIkltYWdlIiwidXNlRGV2aWNlU3RvcmUiLCJBUElfVVJMUyIsIkluZHVzdHJ5VGFzayIsImZhdWx0U2NlbmFyaW9zIiwiY29ubmVjdGlvbnMiLCJzZXRDb25uZWN0aW9ucyIsImxvYWRpbmciLCJzZXRMb2FkaW5nIiwiZXJyb3IiLCJzZXRFcnJvciIsImZldGNoQ29ubmVjdGlvbk1hcCIsInJlc3BvbnNlIiwiZmV0Y2giLCJDT05ORUNUSU9OIiwiTUFQX1dJVEhfU0NFTkUiLCJvayIsIkVycm9yIiwiZGF0YSIsImpzb24iLCJmb3JtYXR0ZWRDb25uZWN0aW9ucyIsIk9iamVjdCIsImVudHJpZXMiLCJmaWx0ZXIiLCJwb3J0SWQiLCJpbmNsdWRlcyIsIm1hcCIsInNvdXJjZSIsImNvbm5lY3Rpb24iLCJyb29tIiwicmFjayIsImNvbm5lY3RlZFRvIiwiZXJyIiwibWVzc2FnZSIsImNvbnNvbGUiLCJjdXJyZW50U2NlbmUiLCJkaXYiLCJjbGFzc05hbWUiLCJwIiwiaDEiLCJoMiIsInNwYW4iLCJzcmMiLCJhbHQiLCJmaWxsIiwidWwiLCJsaSIsInN0cm9uZyIsImNvZGUiLCJoMyIsImxpbmsiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(pages-dir-node)/./src/components/scene/IndustryTask.js\n"); /***/ }), /***/ "(pages-dir-node)/./src/components/scene/Office.js": /*!****************************************!*\ !*** ./src/components/scene/Office.js ***! \****************************************/ /***/ ((__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 */ Office)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"react/jsx-dev-runtime\");\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 */ \"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n\n\nfunction Office({ onPortClick = ()=>{}, onPortHover = ()=>{}, selectedPort = null, targetPort = null, connections = {} }) {\n // 获取端口的连接状态样式\n const getPortStyle = (portId)=>{\n if (selectedPort === portId) {\n return 'bg-blue-300';\n }\n if (targetPort === portId) {\n return 'bg-green-300';\n }\n if (connections && connections[portId]) {\n return 'bg-[#00ff7f]';\n }\n return 'bg-gray-300';\n };\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-full w-full bg-black text-white flex\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-1/8 p-1 flex flex-col\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-center mb-1\",\n children: \"Room1\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/Office.js\",\n lineNumber: 28,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 bg-gray-900 flex items-center justify-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-gray-300 w-24 h-24 flex items-center justify-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex space-x-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-col items-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: ` rounded-full flex items-center justify-center transition-colors ${getPortStyle('Room1-TO-1')}`,\n jstype: \"testport-copper\",\n id: \"Room1-TO-1\",\n onClick: ()=>onPortClick('Room1-TO-1'),\n onMouseEnter: ()=>onPortHover('Room1-TO-1'),\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `w-8 h-8 bg-[url('/rj45.png')] bg-contain bg-no-repeat bg-center`\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/Office.js\",\n lineNumber: 40,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/Office.js\",\n lineNumber: 33,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-xs mt-1 text-black\",\n children: \"TO-1\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/Office.js\",\n lineNumber: 43,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/Office.js\",\n lineNumber: 32,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-col items-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `rounded-full flex items-center justify-center transition-colors ${getPortStyle('Room1-TO-2')}`,\n jstype: \"testport-copper\",\n id: \"Room1-TO-2\",\n onClick: ()=>onPortClick('Room1-TO-2'),\n onMouseEnter: ()=>onPortHover('Room1-TO-2'),\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `w-8 h-8 bg-[url('/rj45.png')] bg-contain bg-no-repeat bg-center`\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/Office.js\",\n lineNumber: 53,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/Office.js\",\n lineNumber: 46,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-xs mt-1 text-black\",\n children: \"TO-2\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/Office.js\",\n lineNumber: 55,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/Office.js\",\n lineNumber: 45,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/Office.js\",\n lineNumber: 31,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/Office.js\",\n lineNumber: 30,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/Office.js\",\n lineNumber: 29,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/Office.js\",\n lineNumber: 27,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-1/8 p-1 flex flex-col\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-center mb-1\",\n children: \"Room2\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/Office.js\",\n lineNumber: 63,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 bg-gray-900 flex items-center justify-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-gray-300 w-24 h-24 flex items-center justify-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex space-x-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-col items-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `rounded-full flex items-center justify-center transition-colors ${getPortStyle('Room2-TO-1')}`,\n jstype: \"testport-copper\",\n id: \"Room2-TO-1\",\n onClick: ()=>onPortClick('Room2-TO-1'),\n onMouseEnter: ()=>onPortHover('Room2-TO-1'),\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `w-8 h-8 bg-[url('/rj45.png')] bg-contain bg-no-repeat bg-center`\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/Office.js\",\n lineNumber: 75,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/Office.js\",\n lineNumber: 68,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-xs mt-1 text-black\",\n children: \"TO-1\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/Office.js\",\n lineNumber: 77,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/Office.js\",\n lineNumber: 67,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-col items-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `rounded-full flex items-center justify-center transition-colors ${getPortStyle('Room2-TO-2')}`,\n jstype: \"testport-copper\",\n id: \"Room2-TO-2\",\n onClick: ()=>onPortClick('Room2-TO-2'),\n onMouseEnter: ()=>onPortHover('Room2-TO-2'),\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `w-8 h-8 bg-[url('/rj45.png')] bg-contain bg-no-repeat bg-center`\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/Office.js\",\n lineNumber: 87,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/Office.js\",\n lineNumber: 80,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-xs mt-1 text-black\",\n children: \"TO-2\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/Office.js\",\n lineNumber: 89,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/Office.js\",\n lineNumber: 79,\n columnNumber: 16\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/Office.js\",\n lineNumber: 66,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/Office.js\",\n lineNumber: 65,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/Office.js\",\n lineNumber: 64,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/Office.js\",\n lineNumber: 62,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-1/8 p-1 flex flex-col\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-center mb-1\",\n children: \"Room3\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/Office.js\",\n lineNumber: 97,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 bg-gray-900 flex items-center justify-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-gray-300 w-24 h-24 flex items-center justify-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex space-x-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-col items-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `rounded-full flex items-center justify-center transition-colors ${getPortStyle('Room3-TO-1')}`,\n jstype: \"testport-copper\",\n id: \"Room3-TO-1\",\n onClick: ()=>onPortClick('Room3-TO-1'),\n onMouseEnter: ()=>onPortHover('Room3-TO-1'),\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `w-8 h-8 bg-[url('/rj45.png')] bg-contain bg-no-repeat bg-center`\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/Office.js\",\n lineNumber: 109,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/Office.js\",\n lineNumber: 102,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-xs mt-1 text-black\",\n children: \"TO-1\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/Office.js\",\n lineNumber: 111,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/Office.js\",\n lineNumber: 101,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-col items-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `rounded-full flex items-center justify-center transition-colors ${getPortStyle('Room3-TO-2')}`,\n jstype: \"testport-copper\",\n id: \"Room3-TO-2\",\n onClick: ()=>onPortClick('Room3-TO-2'),\n onMouseEnter: ()=>onPortHover('Room3-TO-2'),\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `w-8 h-8 bg-[url('/rj45.png')] bg-contain bg-no-repeat bg-center`\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/Office.js\",\n lineNumber: 121,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/Office.js\",\n lineNumber: 114,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-xs mt-1 text-black\",\n children: \"TO-2\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/Office.js\",\n lineNumber: 123,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/Office.js\",\n lineNumber: 113,\n columnNumber: 16\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/Office.js\",\n lineNumber: 100,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/Office.js\",\n lineNumber: 99,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/Office.js\",\n lineNumber: 98,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/Office.js\",\n lineNumber: 96,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-1/8 p-1 flex flex-col\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-center mb-1\",\n children: \"Room4\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/Office.js\",\n lineNumber: 131,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"relative flex-1 bg-gray-900 flex items-center justify-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `absolute top-[55%] left-[66%] w-6 h-6 z-100`,\n jstype: \"testport-cam\",\n id: \"Room4-CAM\",\n onClick: ()=>onPortClick('Room4-CAM'),\n onMouseEnter: ()=>onPortHover('Room4-CAM')\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/Office.js\",\n lineNumber: 133,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `w-full h-full bg-[url('/cam.png')] bg-contain bg-no-repeat bg-center`\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/Office.js\",\n lineNumber: 142,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/Office.js\",\n lineNumber: 132,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/Office.js\",\n lineNumber: 130,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-1/2 p-1 flex flex-col\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-center mb-1\",\n children: \"Rack1\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/Office.js\",\n lineNumber: 149,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[calc(100%-1.5rem)] rounded-md p-2 flex flex-col space-y-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-col h-1/2 bg-gray-800 rounded-md p-2 relative\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute top-0 left-0 bg-white w-3 h-3 rounded-full\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/Office.js\",\n lineNumber: 153,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute top-0 right-0 bg-white w-3 h-3 rounded-full\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/Office.js\",\n lineNumber: 154,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute bottom-0 left-0 bg-white w-3 h-3 rounded-full\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/Office.js\",\n lineNumber: 155,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute bottom-0 right-0 bg-white w-3 h-3 rounded-full\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/Office.js\",\n lineNumber: 156,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 flex items-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-xs mr-4\",\n children: \"1A\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/Office.js\",\n lineNumber: 158,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 flex items-center justify-center space-x-4\",\n children: [\n ...Array(8)\n ].map((_, i)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-col items-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `w-16 h-16 mb-1 transition-colors flex items-center justify-center ${getPortStyle(`1A-${i + 1}`)}`,\n jstype: \"testport-copper\",\n id: `1A-${i + 1}`,\n onClick: ()=>onPortClick(`1A-${i + 1}`),\n onMouseEnter: ()=>onPortHover(`1A-${i + 1}`),\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `w-8 h-8 bg-[url('/rj45.png')] bg-contain bg-no-repeat bg-center`\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/Office.js\",\n lineNumber: 169,\n columnNumber: 23\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/Office.js\",\n lineNumber: 162,\n columnNumber: 1\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-xs\",\n children: i + 1\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/Office.js\",\n lineNumber: 171,\n columnNumber: 21\n }, this)\n ]\n }, i, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/Office.js\",\n lineNumber: 161,\n columnNumber: 19\n }, this))\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/Office.js\",\n lineNumber: 159,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/Office.js\",\n lineNumber: 157,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/Office.js\",\n lineNumber: 152,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-col h-1/2 bg-gray-800 rounded-md p-2 relative\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute top-0 left-0 bg-white w-3 h-3 rounded-full\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/Office.js\",\n lineNumber: 180,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute top-0 right-0 bg-white w-3 h-3 rounded-full\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/Office.js\",\n lineNumber: 181,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute bottom-0 left-0 bg-white w-3 h-3 rounded-full\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/Office.js\",\n lineNumber: 182,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute bottom-0 right-0 bg-white w-3 h-3 rounded-full\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/Office.js\",\n lineNumber: 183,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 flex items-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-xs mr-4\",\n children: \"1B\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/Office.js\",\n lineNumber: 185,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 flex items-center justify-center space-x-4\",\n children: [\n ...Array(8)\n ].map((_, i)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-col items-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `w-16 h-16 mb-1 transition-colors flex items-center justify-center ${getPortStyle(`1B-${i + 1}`)}`,\n jstype: \"testport-fiber\",\n lcclean: \"false\",\n id: `1B-${i + 1}`,\n onClick: ()=>onPortClick(`1B-${i + 1}`),\n onMouseEnter: ()=>onPortHover(`1B-${i + 1}`),\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `w-8 h-8 bg-[url('/lc.png')] bg-contain bg-no-repeat bg-center`\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/Office.js\",\n lineNumber: 197,\n columnNumber: 21\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/Office.js\",\n lineNumber: 189,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-xs\",\n children: i + 1\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/Office.js\",\n lineNumber: 199,\n columnNumber: 21\n }, this)\n ]\n }, i, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/Office.js\",\n lineNumber: 188,\n columnNumber: 19\n }, this))\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/Office.js\",\n lineNumber: 186,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/Office.js\",\n lineNumber: 184,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/Office.js\",\n lineNumber: 179,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/Office.js\",\n lineNumber: 150,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/Office.js\",\n lineNumber: 148,\n columnNumber: 7\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/Office.js\",\n lineNumber: 25,\n columnNumber: 5\n }, this);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHBhZ2VzLWRpci1ub2RlKS8uL3NyYy9jb21wb25lbnRzL3NjZW5lL09mZmljZS5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBMEI7QUFFWCxTQUFTQyxPQUFPLEVBQzdCQyxjQUFjLEtBQU8sQ0FBQyxFQUN0QkMsY0FBYyxLQUFPLENBQUMsRUFDdEJDLGVBQWUsSUFBSSxFQUNuQkMsYUFBYSxJQUFJLEVBQ2pCQyxjQUFjLENBQUMsQ0FBQyxFQUNqQjtJQUNDLGNBQWM7SUFDZCxNQUFNQyxlQUFlLENBQUNDO1FBQ3BCLElBQUlKLGlCQUFpQkksUUFBUTtZQUMzQixPQUFPO1FBQ1Q7UUFDQSxJQUFJSCxlQUFlRyxRQUFRO1lBQ3pCLE9BQU87UUFDVDtRQUNBLElBQUlGLGVBQWVBLFdBQVcsQ0FBQ0UsT0FBTyxFQUFFO1lBQ3RDLE9BQU87UUFDVDtRQUNBLE9BQU87SUFDVDtJQUVBLHFCQUNFLDhEQUFDQztRQUFJQyxXQUFVOzswQkFFYiw4REFBQ0Q7Z0JBQUlDLFdBQVU7O2tDQUNiLDhEQUFDRDt3QkFBSUMsV0FBVTtrQ0FBbUI7Ozs7OztrQ0FDbEMsOERBQUNEO3dCQUFJQyxXQUFVO2tDQUNiLDRFQUFDRDs0QkFBSUMsV0FBVTtzQ0FDYiw0RUFBQ0Q7Z0NBQUlDLFdBQVU7O2tEQUNiLDhEQUFDRDt3Q0FBSUMsV0FBVTs7MERBQ2IsOERBQUNEO2dEQUNDQyxXQUFXLENBQUMsa0VBQWtFLEVBQUVILGFBQWEsZUFBZTtnREFDNUdJLFFBQU87Z0RBQ1BDLElBQUc7Z0RBQ0hDLFNBQVMsSUFBTVgsWUFBWTtnREFDM0JZLGNBQWMsSUFBTVgsWUFBWTswREFFbEMsNEVBQUNNO29EQUFJQyxXQUFXLENBQUMsK0RBQStELENBQUM7Ozs7Ozs7Ozs7OzBEQUcvRSw4REFBQ0s7Z0RBQUtMLFdBQVU7MERBQTBCOzs7Ozs7Ozs7Ozs7a0RBRTlDLDhEQUFDRDt3Q0FBSUMsV0FBVTs7MERBQ2IsOERBQUNEO2dEQUNDQyxXQUFXLENBQUMsZ0VBQWdFLEVBQUVILGFBQWEsZUFBZTtn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QUFDRDt3Q0FBSUMsV0FBVTs7MERBQ2IsOERBQUNLO2dEQUFLTCxXQUFVOzBEQUFlOzs7Ozs7MERBQy9CLDhEQUFDRDtnREFBSUMsV0FBVTswREFDWjt1REFBSU0sTUFBTTtpREFBRyxDQUFDQyxHQUFHLENBQUMsQ0FBQ0MsR0FBR0Msa0JBQ3JCLDhEQUFDVjt3REFBWUMsV0FBVTs7MEVBQ3JCLDhEQUFDRDtnRUFDQ0MsV0FBVyxDQUFDLGtFQUFrRSxFQUFFSCxhQUFhLENBQUMsR0FBRyxFQUFFWSxJQUFJLEdBQUcsR0FBRztnRUFDN0dSLFFBQU87Z0VBQ1BTLFNBQVE7Z0VBQ1JSLElBQUksQ0FBQyxHQUFHLEVBQUVPLElBQUksR0FBRztnRUFDakJOLFNBQVMsSUFBTVgsWUFBWSxDQUFDLEdBQUcsRUFBRWlCLElBQUksR0FBRztnRUFDeENMLGNBQWMsSUFBTVgsWUFBWSxDQUFDLEdBQUcsRUFBRWdCLElBQUksR0FBRzswRUFFL0MsNEVBQUNWO29FQUFJQyxXQUFXLENBQUMsNkRBQTZELENBQUM7Ozs7Ozs7Ozs7OzBFQUUvRSw4REFBQ0s7Z0VBQUtMLFdBQVU7MEVBQVdTLElBQUk7Ozs7Ozs7dURBWHZCQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXFCNUIiLCJzb3VyY2VzIjpbIi9vcHQvZGV2L2VzdC1kc3gvc3JjL2NvbXBvbmVudHMvc2NlbmUvT2ZmaWNlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIE9mZmljZSh7IFxuICBvblBvcnRDbGljayA9ICgpID0+IHt9LCBcbiAgb25Qb3J0SG92ZXIgPSAoKSA9PiB7fSwgXG4gIHNlbGVjdGVkUG9ydCA9IG51bGwsIFxuICB0YXJnZXRQb3J0ID0gbnVsbCwgXG4gIGNvbm5lY3Rpb25zID0ge30gXG59KSB7XG4gIC8vIOiOt+WPluerr+WPo+eahOi/nuaOpeeKtuaAgeagt+W8j1xuICBjb25zdCBnZXRQb3J0U3R5bGUgPSAocG9ydElkKSA9PiB7XG4gICAgaWYgKHNlbGVjdGVkUG9ydCA9PT0gcG9ydElkKSB7XG4gICAgICByZXR1cm4gJ2JnLWJsdWUtMzAwJztcbiAgICB9XG4gICAgaWYgKHRhcmdldFBvcnQgPT09IHBvcnRJZCkge1xuICAgICAgcmV0dXJuICdiZy1ncmVlbi0zMDAnO1xuICAgIH1cbiAgICBpZiAoY29ubmVjdGlvbnMgJiYgY29ubmVjdGlvbnNbcG9ydElkXSkge1xuICAgICAgcmV0dXJuICdiZy1bIzAwZmY3Zl0nO1xuICAgIH1cbiAgICByZXR1cm4gJ2JnLWdyYXktMzAwJztcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwiaC1mdWxsIHctZnVsbCBiZy1ibGFjayB0ZXh0LXdoaXRlIGZsZXhcIj5cbiAgICAgIHsvKiBSb29tIHBhbmVscyAtIGVhY2ggdGFraW5nIDEvOCBvZiB3aWR0aCAqL31cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy0xLzggcC0xIGZsZXggZmxleC1jb2xcIj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LWNlbnRlciBtYi0xXCI+Um9vbTE8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4LTEgYmctZ3JheS05MDAgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXJcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJnLWdyYXktMzAwIHctMjQgaC0yNCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlclwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IHNwYWNlLXgtNFwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggZmxleC1jb2wgaXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBcbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17YCByb3VuZGVkLWZ1bGwgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgIHRyYW5zaXRpb24tY29sb3JzICR7Z2V0UG9ydFN0eWxlKCdSb29tMS1UTy0xJyl9YH1cbiAgICAgICAgICAgICAgICAgIGpzdHlwZT1cInRlc3Rwb3J0LWNvcHBlclwiIFxuICAgICAgICAgICAgICAgICAgaWQ9XCJSb29tMS1UTy0xXCJcbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IG9uUG9ydENsaWNrKCdSb29tMS1UTy0xJyl9XG4gICAgICAgICAgICAgICAgICBvbk1vdXNlRW50ZXI9eygpID0+IG9uUG9ydEhvdmVyKCdSb29tMS1UTy0xJyl9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtgdy04IGgtOCBiZy1bdXJsKCcvcmo0NS5wbmcnKV0gYmctY29udGFpbiBiZy1uby1yZXBlYXQgYmctY2VudGVyYH0+PC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LXhzIG10LTEgdGV4dC1ibGFja1wiPlRPLTE8L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggZmxleC1jb2wgaXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBcbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17YHJvdW5kZWQtZnVsbCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciB0cmFuc2l0aW9uLWNvbG9ycyAke2dldFBvcnRTdHlsZSgnUm9vbTEtVE8tMicpfWB9XG4gICAgICAgICAgICAgICAgICBqc3R5cGU9XCJ0ZXN0cG9ydC1jb3BwZXJcIiBcbiAgICAgICAgICAgICAgICAgIGlkPVwiUm9vbTEtVE8tMlwiXG4gICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBvblBvcnRDbGljaygnUm9vbTEtVE8tMicpfVxuICAgICAgICAgICAgICAgICAgb25Nb3VzZUVudGVyPXsoKSA9PiBvblBvcnRIb3ZlcignUm9vbTEtVE8tMicpfVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17YHctOCBoLTggYmctW3VybCgnL3JqNDUucG5nJyldIGJnLWNvbnRhaW4gYmctbm8tcmVwZWF0IGJnLWNlbnRlcmB9PjwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQteHMgbXQtMSB0ZXh0LWJsYWNrXCI+VE8tMjwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LTEvOCBwLTEgZmxleCBmbGV4LWNvbFwiPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtY2VudGVyIG1iLTFcIj5Sb29tMjwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXgtMSBiZy1ncmF5LTkwMCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlclwiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmctZ3JheS0zMDAgdy0yNCBoLTI0IGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggc3BhY2UteC00XCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBmbGV4LWNvbCBpdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IFxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgcm91bmRlZC1mdWxsIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHRyYW5zaXRpb24tY29sb3JzICR7Z2V0UG9ydFN0eWxlKCdSb29tMi1UTy0xJyl9YH1cbiAgICAgICAgICAgICAgICAgIGpzdHlwZT1cInRlc3Rwb3J0LWNvcHBlclwiIFxuICAgICAgICAgICAgICAgICAgaWQ9XCJSb29tMi1UTy0xXCJcbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IG9uUG9ydENsaWNrKCdSb29tMi1UTy0xJyl9XG4gICAgICAgICAgICAgICAgICBvbk1vdXNlRW50ZXI9eygpID0+IG9uUG9ydEhvdmVyKCdSb29tMi1UTy0xJyl9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtgdy04IGgtOCBiZy1bdXJsKCcvcmo0NS5wbmcnKV0gYmctY29udGFpbiBiZy1uby1yZXBlYXQgYmctY2VudGVyYH0+PC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC14cyBtdC0xIHRleHQtYmxhY2tcIj5UTy0xPC9zcGFuPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBmbGV4LWNvbCBpdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IFxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgcm91bmRlZC1mdWxsIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHRyYW5zaXRpb24tY29sb3JzICR7Z2V0UG9ydFN0eWxlKCdSb29tMi1UTy0yJyl9YH1cbiAgICAgICAgICAgICAgICAgIGpzdHlwZT1cInRlc3Rwb3J0LWNvcHBlclwiIFxuICAgICAgICAgICAgICAgICAgaWQ9XCJSb29tMi1UTy0yXCJcbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IG9uUG9ydENsaWNrKCdSb29tMi1UTy0yJyl9XG4gICAgICAgICAgICAgICAgICBvbk1vdXNlRW50ZXI9eygpID0+IG9uUG9ydEhvdmVyKCdSb29tMi1UTy0yJyl9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtgdy04IGgtOCBiZy1bdXJsKCcvcmo0NS5wbmcnKV0gYmctY29udGFpbiBiZy1uby1yZXBlYXQgYmctY2VudGVyYH0+PC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC14cyBtdC0xIHRleHQtYmxhY2tcIj5UTy0yPC9zcGFuPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInctMS84IHAtMSBmbGV4IGZsZXgtY29sXCI+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1jZW50ZXIgbWItMVwiPlJvb20zPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleC0xIGJnLWdyYXktOTAwIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyXCI+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJiZy1ncmF5LTMwMCB3LTI0IGgtMjQgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBzcGFjZS14LTRcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGZsZXgtY29sIGl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgIDxkaXYgXG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2Byb3VuZGVkLWZ1bGwgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgdHJhbnNpdGlvbi1jb2xvcnMgJHtnZXRQb3J0U3R5bGUoJ1Jvb20zLVRPLTEnKX1gfVxuICAgICAgICAgICAgICAgICAganN0eXBlPVwidGVzdHBvcnQtY29wcGVyXCIgXG4gICAgICAgICAgICAgICAgICBpZD1cIlJvb20zLVRPLTFcIlxuICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gb25Qb3J0Q2xpY2soJ1Jvb20zLVRPLTEnKX1cbiAgICAgICAgICAgICAgICAgIG9uTW91c2VFbnRlcj17KCkgPT4gb25Qb3J0SG92ZXIoJ1Jvb20zLVRPLTEnKX1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2B3LTggaC04IGJnLVt1cmwoJy9yajQ1LnBuZycpXSBiZy1jb250YWluIGJnLW5vLXJlcGVhdCBiZy1jZW50ZXJgfT48L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LXhzIG10LTEgdGV4dC1ibGFja1wiPlRPLTE8L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGZsZXgtY29sIGl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgIDxkaXYgXG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2Byb3VuZGVkLWZ1bGwgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgdHJhbnNpdGlvbi1jb2xvcnMgJHtnZXRQb3J0U3R5bGUoJ1Jvb20zLVRPLTInKX1gfVxuICAgICAgICAgICAgICAgICAganN0eXBlPVwidGVzdHBvcnQtY29wcGVyXCIgXG4gICAgICAgICAgICAgICAgICBpZD1cIlJvb20zLVRPLTJcIlxuICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gb25Qb3J0Q2xpY2soJ1Jvb20zLVRPLTInKX1cbiAgICAgICAgICAgICAgICAgIG9uTW91c2VFbnRlcj17KCkgPT4gb25Qb3J0SG92ZXIoJ1Jvb20zLVRPLTInKX1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2B3LTggaC04IGJnLVt1cmwoJy9yajQ1LnBuZycpXSBiZy1jb250YWluIGJnLW5vLXJlcGVhdCBiZy1jZW50ZXJgfT48L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LXhzIG10LTEgdGV4dC1ibGFja1wiPlRPLTI8L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy0xLzggcC0xIGZsZXggZmxleC1jb2xcIj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LWNlbnRlciBtYi0xXCI+Um9vbTQ8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyZWxhdGl2ZSAgZmxleC0xIGJnLWdyYXktOTAwIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzc05hbWU9e2BhYnNvbHV0ZSB0b3AtWzU1JV0gbGVmdC1bNjYlXSB3LTYgaC02ICB6LTEwMGB9XG4gICAgICAgICAganN0eXBlPVwidGVzdHBvcnQtY2FtXCIgXG4gICAgICAgICAgaWQ9XCJSb29tNC1DQU1cIlxuICAgICAgICAgIG9uQ2xpY2s9eygpID0+IG9uUG9ydENsaWNrKCdSb29tNC1DQU0nKX1cbiAgICAgICAgICBvbk1vdXNlRW50ZXI9eygpID0+IG9uUG9ydEhvdmVyKCdSb29tNC1DQU0nKX1cbiAgICAgICAgPlxuICAgICAgICAgIFxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9e2B3LWZ1bGwgaC1mdWxsIGJnLVt1cmwoJy9jYW0ucG5nJyldIGJnLWNvbnRhaW4gYmctbm8tcmVwZWF0IGJnLWNlbnRlcmB9PjwvZGl2PlxuICAgICAgICAgIFxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICB7LyogUmFjayB0YWtpbmcgMS8yIG9mIHRoZSB3aWR0aCAqL31cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy0xLzIgcC0xIGZsZXggZmxleC1jb2xcIj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LWNlbnRlciBtYi0xXCI+UmFjazE8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJoLVtjYWxjKDEwMCUtMS41cmVtKV0gcm91bmRlZC1tZCBwLTIgZmxleCBmbGV4LWNvbCBzcGFjZS15LTJcIj5cbiAgICAgICAgICB7LyogUm93IDFBIC0gdGFraW5nIDEvMiBvZiByYWNrIGhlaWdodCAqL31cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggZmxleC1jb2wgaC0xLzIgYmctZ3JheS04MDAgcm91bmRlZC1tZCBwLTIgcmVsYXRpdmVcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYWJzb2x1dGUgdG9wLTAgbGVmdC0wIGJnLXdoaXRlIHctMyBoLTMgcm91bmRlZC1mdWxsXCI+PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImFic29sdXRlIHRvcC0wIHJpZ2h0LTAgYmctd2hpdGUgdy0zIGgtMyByb3VuZGVkLWZ1bGxcIj48L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYWJzb2x1dGUgYm90dG9tLTAgbGVmdC0wIGJnLXdoaXRlIHctMyBoLTMgcm91bmRlZC1mdWxsXCI+PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImFic29sdXRlIGJvdHRvbS0wIHJpZ2h0LTAgYmctd2hpdGUgdy0zIGgtMyByb3VuZGVkLWZ1bGxcIj48L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleC0xIGZsZXggaXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQteHMgbXItNFwiPjFBPC9zcGFuPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXgtMSBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBzcGFjZS14LTRcIj5cbiAgICAgICAgICAgICAgICB7Wy4uLkFycmF5KDgpXS5tYXAoKF8sIGkpID0+IChcbiAgICAgICAgICAgICAgICAgIDxkaXYga2V5PXtpfSBjbGFzc05hbWU9XCJmbGV4IGZsZXgtY29sIGl0ZW1zLWNlbnRlclwiPlxuPGRpdiBcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2B3LTE2IGgtMTYgbWItMSAgdHJhbnNpdGlvbi1jb2xvcnMgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgJHtnZXRQb3J0U3R5bGUoYDFBLSR7aSArIDF9YCl9YH1cbiAgICAgICAgICAgICAgICAgICAgICBqc3R5cGU9XCJ0ZXN0cG9ydC1jb3BwZXJcIiBcbiAgICAgICAgICAgICAgICAgICAgICBpZD17YDFBLSR7aSArIDF9YH1cbiAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBvblBvcnRDbGljayhgMUEtJHtpICsgMX1gKX1cbiAgICAgICAgICAgICAgICAgICAgICBvbk1vdXNlRW50ZXI9eygpID0+IG9uUG9ydEhvdmVyKGAxQS0ke2kgKyAxfWApfVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2B3LTggaC04IGJnLVt1cmwoJy9yajQ1LnBuZycpXSBiZy1jb250YWluIGJnLW5vLXJlcGVhdCBiZy1jZW50ZXJgfT48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQteHNcIj57aSArIDF9PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICB7LyogUm93IDFCIC0gdGFraW5nIDEvMiBvZiByYWNrIGhlaWdodCAqL31cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggZmxleC1jb2wgaC0xLzIgYmctZ3JheS04MDAgcm91bmRlZC1tZCBwLTIgcmVsYXRpdmVcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYWJzb2x1dGUgdG9wLTAgbGVmdC0wIGJnLXdoaXRlIHctMyBoLTMgcm91bmRlZC1mdWxsXCI+PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImFic29sdXRlIHRvcC0wIHJpZ2h0LTAgYmctd2hpdGUgdy0zIGgtMyByb3VuZGVkLWZ1bGxcIj48L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYWJzb2x1dGUgYm90dG9tLTAgbGVmdC0wIGJnLXdoaXRlIHctMyBoLTMgcm91bmRlZC1mdWxsXCI+PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImFic29sdXRlIGJvdHRvbS0wIHJpZ2h0LTAgYmctd2hpdGUgdy0zIGgtMyByb3VuZGVkLWZ1bGxcIj48L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleC0xIGZsZXggaXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQteHMgbXItNFwiPjFCPC9zcGFuPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXgtMSBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBzcGFjZS14LTRcIj5cbiAgICAgICAgICAgICAgICB7Wy4uLkFycmF5KDgpXS5tYXAoKF8sIGkpID0+IChcbiAgICAgICAgICAgICAgICAgIDxkaXYga2V5PXtpfSBjbGFzc05hbWU9XCJmbGV4IGZsZXgtY29sIGl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IFxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17YHctMTYgaC0xNiBtYi0xIHRyYW5zaXRpb24tY29sb3JzIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyICR7Z2V0UG9ydFN0eWxlKGAxQi0ke2kgKyAxfWApfWB9XG4gICAgICAgICAgICAgICAgICAgICAganN0eXBlPVwidGVzdHBvcnQtZmliZXJcIiBcbiAgICAgICAgICAgICAgICAgICAgICBsY2NsZWFuPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICAgIGlkPXtgMUItJHtpICsgMX1gfVxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IG9uUG9ydENsaWNrKGAxQi0ke2kgKyAxfWApfVxuICAgICAgICAgICAgICAgICAgICAgIG9uTW91c2VFbnRlcj17KCkgPT4gb25Qb3J0SG92ZXIoYDFCLSR7aSArIDF9YCl9XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2B3LTggaC04IGJnLVt1cmwoJy9sYy5wbmcnKV0gYmctY29udGFpbiBiZy1uby1yZXBlYXQgYmctY2VudGVyYH0+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LXhzXCI+e2kgKyAxfTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICApO1xufVxuICJdLCJuYW1lcyI6WyJSZWFjdCIsIk9mZmljZSIsIm9uUG9ydENsaWNrIiwib25Qb3J0SG92ZXIiLCJzZWxlY3RlZFBvcnQiLCJ0YXJnZXRQb3J0IiwiY29ubmVjdGlvbnMiLCJnZXRQb3J0U3R5bGUiLCJwb3J0SWQiLCJkaXYiLCJjbGFzc05hbWUiLCJqc3R5cGUiLCJpZCIsIm9uQ2xpY2siLCJvbk1vdXNlRW50ZXIiLCJzcGFuIiwiQXJyYXkiLCJtYXAiLCJfIiwiaSIsImxjY2xlYW4iXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(pages-dir-node)/./src/components/scene/Office.js\n"); /***/ }), /***/ "(pages-dir-node)/./src/components/scene/OfficeTask.js": /*!********************************************!*\ !*** ./src/components/scene/OfficeTask.js ***! \********************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; eval("__webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ OfficeTask)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"react/jsx-dev-runtime\");\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 */ \"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var next_image__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! next/image */ \"(pages-dir-node)/./node_modules/next/image.js\");\n/* harmony import */ var next_image__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(next_image__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _store_deviceStore__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/store/deviceStore */ \"(pages-dir-node)/./src/store/deviceStore.js\");\n/* harmony import */ var _config_api__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/config/api */ \"(pages-dir-node)/./src/config/api.js\");\nvar __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_store_deviceStore__WEBPACK_IMPORTED_MODULE_3__]);\n_store_deviceStore__WEBPACK_IMPORTED_MODULE_3__ = (__webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__)[0];\n\n\n\n\n\nfunction OfficeTask() {\n const { faultScenarios } = (0,_store_deviceStore__WEBPACK_IMPORTED_MODULE_3__[\"default\"])();\n const [connections, setConnections] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)([]);\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 (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)({\n \"OfficeTask.useEffect\": ()=>{\n const fetchConnectionMap = {\n \"OfficeTask.useEffect.fetchConnectionMap\": async ()=>{\n try {\n setLoading(true);\n setError(null);\n const response = await fetch(_config_api__WEBPACK_IMPORTED_MODULE_4__.API_URLS.CONNECTION.MAP_WITH_SCENE(faultScenarios));\n if (!response.ok) {\n throw new Error('获取连接配置失败');\n }\n const data = await response.json();\n // 将API返回的数据转换为所需的格式\n // 过滤掉包含特定关键字的端口\n const formattedConnections = Object.entries(data || {}).filter({\n \"OfficeTask.useEffect.fetchConnectionMap.formattedConnections\": ([portId])=>!portId.includes('main-permanent') && !portId.includes('main-channel') && !portId.includes('remote-channel') && !portId.includes('main-cfp-sm-out') && !portId.includes('main-cfp-mm-out') && !portId.includes('main-cfp-in') && !portId.includes('remote-cfp-sm-out') && !portId.includes('remote-cfp-mm-out') && !portId.includes('remote-cfp-in')\n }[\"OfficeTask.useEffect.fetchConnectionMap.formattedConnections\"]).map({\n \"OfficeTask.useEffect.fetchConnectionMap.formattedConnections\": ([source, connection])=>({\n room: source,\n rack: connection.connectedTo\n })\n }[\"OfficeTask.useEffect.fetchConnectionMap.formattedConnections\"]);\n setConnections(formattedConnections);\n } catch (err) {\n setError(err.message);\n console.error('获取连接配置错误:', err);\n } finally{\n setLoading(false);\n }\n }\n }[\"OfficeTask.useEffect.fetchConnectionMap\"];\n fetchConnectionMap();\n }\n }[\"OfficeTask.useEffect\"], [\n faultScenarios?.currentScene\n ]);\n return(// 主容器:渐变背景、内边距、圆角、尺寸限制、Flex 布局、阴影、边框和动画\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-gradient-to-br from-[#1E293B] to-[#0F172A] p-6 rounded-lg w-[full] h-[80vh] overflow-y-auto flex flex-col gap-6 shadow-2xl border border-[#334155] animate-fadeIn scrollbar-thin scrollbar-thumb-slate-600 scrollbar-track-slate-800\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"border-b border-cyan-700 pb-3 mb-3\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-sm font-semibold text-cyan-400 uppercase tracking-wider\",\n children: \"新任务单\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/OfficeTask.js\",\n lineNumber: 58,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h1\", {\n className: \"text-2xl md:text-3xl font-bold text-gray-100 mt-1\",\n children: \"任务要求:网络链路认证\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/OfficeTask.js\",\n lineNumber: 59,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-xs text-gray-400\",\n children: \"任务编号: SIM-TRN-NTW-005 \"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/OfficeTask.js\",\n lineNumber: 60,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-xs text-gray-400\",\n children: \"地点: Innovate Solutions 公司 - 8 层西翼\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/OfficeTask.js\",\n lineNumber: 61,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/OfficeTask.js\",\n lineNumber: 57,\n columnNumber: 7\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)(\"h2\", {\n className: \"text-xl font-semibold text-cyan-300\",\n children: \"情况说明\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/OfficeTask.js\",\n lineNumber: 66,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-gray-300 leading-relaxed\",\n children: [\n \"Innovate Solutions 公司刚刚完成了对其 8 层西翼办公区\",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"font-medium text-yellow-300\",\n children: \"(Room1 至 Room4)\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/OfficeTask.js\",\n lineNumber: 69,\n columnNumber: 48\n }, this),\n \" 的关键改造。新的网络基础设施已部署完毕,将这些房间连接至楼层弱电间 \",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"font-medium text-yellow-300\",\n children: \"机柜 1 (Rack1)\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/OfficeTask.js\",\n lineNumber: 69,\n columnNumber: 151\n }, this),\n \"。\"\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/OfficeTask.js\",\n lineNumber: 68,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \" h-100 relative\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: \"/Office.png\",\n alt: \"office\",\n fill: true,\n className: \"object-contain\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/OfficeTask.js\",\n lineNumber: 72,\n columnNumber: 18\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/OfficeTask.js\",\n lineNumber: 71,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-gray-300 leading-relaxed\",\n children: [\n \"在这些重要链路正式启用前,集团工程部要求进行 \",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"font-semibold text-red-400\",\n children: \"全面的物理层认证测试\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/OfficeTask.js\",\n lineNumber: 75,\n columnNumber: 34\n }, this),\n \"。你的测试部署对于确保每条连接都符合严格的 \",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"font-medium text-yellow-300\",\n children: \"TIA信道链路\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/OfficeTask.js\",\n lineNumber: 75,\n columnNumber: 118\n }, this),\n \"标准。我们不能容忍任何故障链路。\"\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/OfficeTask.js\",\n lineNumber: 74,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/OfficeTask.js\",\n lineNumber: 65,\n columnNumber: 7\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)(\"h2\", {\n className: \"text-xl font-semibold text-cyan-300\",\n children: \"任务目标\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/OfficeTask.js\",\n lineNumber: 81,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"ul\", {\n className: \"list-disc list-inside text-gray-300 space-y-2 pl-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"li\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"strong\", {\n className: \"text-gray-100\",\n children: \"了解环境:\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/OfficeTask.js\",\n lineNumber: 84,\n columnNumber: 13\n }, this),\n \" 在模拟环境中识别出 \",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"font-medium text-yellow-300\",\n children: \"7 条目标网络链路\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/OfficeTask.js\",\n lineNumber: 84,\n columnNumber: 72\n }, this),\n \"(连接 Room1-4 与 Rack1 的 1A配线架)。\"\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/OfficeTask.js\",\n lineNumber: 83,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"li\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"strong\", {\n className: \"text-gray-100\",\n children: \"部署测试设备:\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/OfficeTask.js\",\n lineNumber: 87,\n columnNumber: 13\n }, this),\n \" 使用模拟的 \",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"font-medium text-yellow-300\",\n children: \"DSX 系列线缆认证分析仪\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/OfficeTask.js\",\n lineNumber: 87,\n columnNumber: 70\n }, this),\n \"。为每次测试准确配置参数。\"\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/OfficeTask.js\",\n lineNumber: 86,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"li\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"strong\", {\n className: \"text-gray-100\",\n children: \"执行认证测试:\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/OfficeTask.js\",\n lineNumber: 90,\n columnNumber: 13\n }, this),\n \" 对所有信道链路执行 \",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"font-medium text-yellow-300\",\n children: \"信道\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/OfficeTask.js\",\n lineNumber: 90,\n columnNumber: 74\n }, this),\n \" 测试,遵循 \",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"font-medium text-yellow-300\",\n children: \"T568B\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/OfficeTask.js\",\n lineNumber: 90,\n columnNumber: 136\n }, this),\n \" 线序标准及 \",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"font-medium text-yellow-300\",\n children: \"Cat 6 屏蔽 (F/UTP)\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/OfficeTask.js\",\n lineNumber: 90,\n columnNumber: 201\n }, this),\n \" 线缆类型。\"\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/OfficeTask.js\",\n lineNumber: 89,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"li\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"strong\", {\n className: \"text-gray-100\",\n children: \"执行认证测试:\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/OfficeTask.js\",\n lineNumber: 93,\n columnNumber: 13\n }, this),\n \" 对所有模块化插头链路执行 \",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"font-medium text-yellow-300\",\n children: \"模块化插头链路\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/OfficeTask.js\",\n lineNumber: 93,\n columnNumber: 77\n }, this),\n \" 测试,遵循 \",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"font-medium text-yellow-300\",\n children: \"T568B\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/OfficeTask.js\",\n lineNumber: 93,\n columnNumber: 144\n }, this),\n \" 线序标准及 \",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"font-medium text-yellow-300\",\n children: \"Cat 6 屏蔽 (F/UTP)\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/OfficeTask.js\",\n lineNumber: 93,\n columnNumber: 209\n }, this),\n \" 线缆类型。\"\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/OfficeTask.js\",\n lineNumber: 92,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"li\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"strong\", {\n className: \"text-gray-100\",\n children: \"分析测试数据:\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/OfficeTask.js\",\n lineNumber: 96,\n columnNumber: 13\n }, this),\n \" 仔细检查测试结果,识别所有 \",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"font-semibold text-green-400\",\n children: \"通过 (PASS)\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/OfficeTask.js\",\n lineNumber: 96,\n columnNumber: 78\n }, this),\n \" 或 \",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"font-semibold text-red-400\",\n children: \"失败 (FAIL*)\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/OfficeTask.js\",\n lineNumber: 96,\n columnNumber: 144\n }, this),\n \" 的情况。\"\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/OfficeTask.js\",\n lineNumber: 95,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"li\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"strong\", {\n className: \"text-gray-100\",\n children: \"诊断故障点:\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/OfficeTask.js\",\n lineNumber: 99,\n columnNumber: 13\n }, this),\n \" 对于任何失败的链路 (\",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-red-400 font-bold\",\n children: \"FAIL*\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/OfficeTask.js\",\n lineNumber: 99,\n columnNumber: 74\n }, this),\n \"),使用测试仪的诊断功能,来精确定位故障类型和大致位置。\"\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/OfficeTask.js\",\n lineNumber: 98,\n columnNumber: 12\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"li\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"strong\", {\n className: \"text-gray-100\",\n children: \"记录与报告:\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/OfficeTask.js\",\n lineNumber: 102,\n columnNumber: 13\n }, this),\n \" 使用指定格式安全保存每个测试结果:\",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"code\", {\n className: \"bg-gray-700 px-1.5 py-0.5 rounded text-xs text-yellow-300\",\n children: \"[主机连接端口]-[远端连接端口]\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/OfficeTask.js\",\n lineNumber: 102,\n columnNumber: 80\n }, this),\n \" (例如:\",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"code\", {\n className: \"bg-gray-700 px-1.5 py-0.5 rounded text-xs text-yellow-300\",\n children: \"Room1-TO-1-Rack1-1A-1\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/OfficeTask.js\",\n lineNumber: 102,\n columnNumber: 185\n }, this),\n \")。准备一份总结报告以供汇报。\"\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/OfficeTask.js\",\n lineNumber: 101,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/OfficeTask.js\",\n lineNumber: 82,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/OfficeTask.js\",\n lineNumber: 80,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-y-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h3\", {\n className: \"text-lg font-semibold text-cyan-300\",\n children: \"目标链路概览\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/OfficeTask.js\",\n lineNumber: 109,\n columnNumber: 10\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-gray-300\",\n children: \"你将测试办公室房间与设备机柜之间的 8 条独立连接。系统操作界面将模拟每条链路。\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/OfficeTask.js\",\n lineNumber: 110,\n columnNumber: 10\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid grid-cols-2 gap-x-4 gap-y-1 text-sm text-gray-400 pl-4\",\n children: loading ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n children: \"加载中...\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/OfficeTask.js\",\n lineNumber: 114,\n columnNumber: 17\n }, this) : error ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-red-400\",\n children: error\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/OfficeTask.js\",\n lineNumber: 116,\n columnNumber: 17\n }, this) : connections.map((link)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"code\", {\n className: \"text-yellow-400\",\n children: link.room\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/OfficeTask.js\",\n lineNumber: 120,\n columnNumber: 25\n }, this),\n \" <-->\",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"code\", {\n className: \"text-yellow-400\",\n children: link.rack\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/OfficeTask.js\",\n lineNumber: 121,\n columnNumber: 25\n }, this)\n ]\n }, link.rack, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/OfficeTask.js\",\n lineNumber: 119,\n columnNumber: 21\n }, this))\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/OfficeTask.js\",\n lineNumber: 112,\n columnNumber: 10\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/OfficeTask.js\",\n lineNumber: 108,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mt-4 border-t border-cyan-700 pt-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-lg font-semibold text-gray-100\",\n children: \"请进入模拟测试环境。\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/OfficeTask.js\",\n lineNumber: 130,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-gray-300\",\n children: \"配置好你的设备,认真执行测试,并报告你的发现。网络的可用性取决于你的专业能力。\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/OfficeTask.js\",\n lineNumber: 131,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"mt-2 text-cyan-400 font-medium\",\n children: \"祝你测试顺利!\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/OfficeTask.js\",\n lineNumber: 132,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/OfficeTask.js\",\n lineNumber: 129,\n columnNumber: 7\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/OfficeTask.js\",\n lineNumber: 54,\n columnNumber: 5\n }, this));\n}\n\n__webpack_async_result__();\n} catch(e) { __webpack_async_result__(e); } });//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHBhZ2VzLWRpci1ub2RlKS8uL3NyYy9jb21wb25lbnRzL3NjZW5lL09mZmljZVRhc2suanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFtRDtBQUNwQjtBQUNrQjtBQUNUO0FBRXpCLFNBQVNNO0lBQ3BCLE1BQU0sRUFBRUMsY0FBYyxFQUFFLEdBQUdILDhEQUFjQTtJQUN6QyxNQUFNLENBQUNJLGFBQWFDLGVBQWUsR0FBR1IsK0NBQVFBLENBQUMsRUFBRTtJQUNqRCxNQUFNLENBQUNTLFNBQVNDLFdBQVcsR0FBR1YsK0NBQVFBLENBQUM7SUFDdkMsTUFBTSxDQUFDVyxPQUFPQyxTQUFTLEdBQUdaLCtDQUFRQSxDQUFDO0lBRW5DQyxnREFBU0E7Z0NBQUM7WUFDTixNQUFNWTsyREFBcUI7b0JBQ3ZCLElBQUk7d0JBQ0FILFdBQVc7d0JBQ1hFLFNBQVM7d0JBQ1QsTUFBTUUsV0FBVyxNQUFNQyxNQUFNWCxpREFBUUEsQ0FBQ1ksVUFBVSxDQUFDQyxjQUFjLENBQUNYO3dCQUNoRSxJQUFJLENBQUNRLFNBQVNJLEVBQUUsRUFBRTs0QkFDZCxNQUFNLElBQUlDLE1BQU07d0JBQ3BCO3dCQUNBLE1BQU1DLE9BQU8sTUFBTU4sU0FBU08sSUFBSTt3QkFDaEMsb0JBQW9CO3dCQUNwQixnQkFBZ0I7d0JBQ2hCLE1BQU1DLHVCQUF1QkMsT0FBT0MsT0FBTyxDQUFDSixRQUFRLENBQUMsR0FDaERLLE1BQU07NEZBQUMsQ0FBQyxDQUFDQyxPQUFPLEdBQ2IsQ0FBQ0EsT0FBT0MsUUFBUSxDQUFDLHFCQUNqQixDQUFDRCxPQUFPQyxRQUFRLENBQUMsbUJBQ2pCLENBQUNELE9BQU9DLFFBQVEsQ0FBQyxxQkFDakIsQ0FBQ0QsT0FBT0MsUUFBUSxDQUFDLHNCQUNqQixDQUFDRCxPQUFPQyxRQUFRLENBQUMsc0JBQ2pCLENBQUNELE9BQU9DLFFBQVEsQ0FBQyxrQkFDakIsQ0FBQ0QsT0FBT0MsUUFBUSxDQUFDLHdCQUNqQixDQUFDRCxPQUFPQyxRQUFRLENBQUMsd0JB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Q0FFbE0sOERBQUNTOztrREFDQSw4REFBQ0M7d0NBQU9WLFdBQVU7a0RBQWdCOzs7Ozs7b0NBQWU7a0RBQVksOERBQUNJO3dDQUFLSixXQUFVO2tEQUF5Qjs7Ozs7O29DQUFZOzs7Ozs7OzBDQUVwSCw4REFBQ1M7O2tEQUNDLDhEQUFDQzt3Q0FBT1YsV0FBVTtrREFBZ0I7Ozs7OztvQ0FBZTtrREFBa0IsOERBQUNXO3dDQUFLWCxXQUFVO2tEQUE0RDs7Ozs7O29DQUF3QjtrREFBSyw4REFBQ1c7d0NBQUtYLFdBQVU7a0RBQTREOzs7Ozs7b0NBQTRCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OzBCQU0xUiw4REFBQ0Q7Z0JBQUlDLFdBQVU7O2tDQUNaLDhEQUFDWTt3QkFBR1osV0FBVTtrQ0FBc0M7Ozs7OztrQ0FDcEQsOERBQUNDO3dCQUFFRCxXQUFVO2tDQUFnQjs7Ozs7O2tDQUU3Qiw4REFBQ0Q7d0JBQUlDLFdBQVU7a0NBQ1g5Qix3QkFDRyw4REFBQytCO3NDQUFFOzs7OzttQ0FDSDdCLHNCQUNBLDhEQUFDNkI7NEJBQUVELFdBQVU7c0NBQWdCNUI7Ozs7O21DQUU3QkosWUFBWXFCLEdBQUcsQ0FBQ3dCLENBQUFBLHFCQUNaLDhEQUFDWjs7a0RBQ0csOERBQUNVO3dDQUFLWCxXQUFVO2tEQUFtQmEsS0FBS3JCLElBQUk7Ozs7OztvQ0FBUTtrREFDcEQsOERBQUNtQjt3Q0FBS1gsV0FBVTtrREFBbUJhLEtBQUtwQixJQUFJOzs7Ozs7OytCQUZ4Q29CLEtBQUtwQixJQUFJOzs7Ozs7Ozs7Ozs7Ozs7OzBCQVUvQiw4REFBQ007Z0JBQUlDLFdBQVU7O2tDQUNiLDhEQUFDQzt3QkFBRUQsV0FBVTtrQ0FBc0M7Ozs7OztrQ0FDbkQsOERBQUNDO3dCQUFFRCxXQUFVO2tDQUFnQjs7Ozs7O2tDQUM3Qiw4REFBQ0M7d0JBQUVELFdBQVU7a0NBQWlDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFLdEQiLCJzb3VyY2VzIjpbIi9vcHQvZGV2L2VzdC1kc3gvc3JjL2NvbXBvbmVudHMvc2NlbmUvT2ZmaWNlVGFzay5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUsIHVzZUVmZmVjdCB9IGZyb20gJ3JlYWN0JztcclxuaW1wb3J0IEltYWdlIGZyb20gJ25leHQvaW1hZ2UnO1xyXG5pbXBvcnQgdXNlRGV2aWNlU3RvcmUgZnJvbSAnQC9zdG9yZS9kZXZpY2VTdG9yZSc7XHJcbmltcG9ydCB7IEFQSV9VUkxTIH0gZnJvbSAnQC9jb25maWcvYXBpJztcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIE9mZmljZVRhc2soKSB7XHJcbiAgICBjb25zdCB7IGZhdWx0U2NlbmFyaW9zIH0gPSB1c2VEZXZpY2VTdG9yZSgpO1xyXG4gICAgY29uc3QgW2Nvbm5lY3Rpb25zLCBzZXRDb25uZWN0aW9uc10gPSB1c2VTdGF0ZShbXSk7XHJcbiAgICBjb25zdCBbbG9hZGluZywgc2V0TG9hZGluZ10gPSB1c2VTdGF0ZShmYWxzZSk7XHJcbiAgICBjb25zdCBbZXJyb3IsIHNldEVycm9yXSA9IHVzZVN0YXRlKG51bGwpO1xyXG5cclxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XHJcbiAgICAgICAgY29uc3QgZmV0Y2hDb25uZWN0aW9uTWFwID0gYXN5bmMgKCkgPT4ge1xyXG4gICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgc2V0TG9hZGluZyh0cnVlKTtcclxuICAgICAgICAgICAgICAgIHNldEVycm9yKG51bGwpO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChBUElfVVJMUy5DT05ORUNUSU9OLk1BUF9XSVRIX1NDRU5FKGZhdWx0U2NlbmFyaW9zKSk7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXJlc3BvbnNlLm9rKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCfojrflj5bov57mjqXphY3nva7lpLHotKUnKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByZXNwb25zZS5qc29uKCk7XHJcbiAgICAgICAgICAgICAgICAvLyDlsIZBUEnov5Tlm57nmoTmlbDmja7ovazmjaLkuLrmiYDpnIDnmoTmoLzlvI9cclxuICAgICAgICAgICAgICAgIC8vIOi/h+a7pOaOieWMheWQq+eJueWumuWFs+mUruWtl+eahOerr+WPo1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZm9ybWF0dGVkQ29ubmVjdGlvbnMgPSBPYmplY3QuZW50cmllcyhkYXRhIHx8IHt9KVxyXG4gICAgICAgICAgICAgICAgICAgIC5maWx0ZXIoKFtwb3J0SWRdKSA9PiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICFwb3J0SWQuaW5jbHVkZXMoJ21haW4tcGVybWFuZW50JykgJiYgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICFwb3J0SWQuaW5jbHVkZXMoJ21haW4tY2hhbm5lbCcpICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICFwb3J0SWQuaW5jbHVkZXMoJ3JlbW90ZS1jaGFubmVsJykgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgIXBvcnRJZC5pbmNsdWRlcygnbWFpbi1jZnAtc20tb3V0JykgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgIXBvcnRJZC5pbmNsdWRlcygnbWFpbi1jZnAtbW0tb3V0JykgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgIXBvcnRJZC5pbmNsdWRlcygnbWFpbi1jZnAtaW4nKSAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAhcG9ydElkLmluY2x1ZGVzKCdyZW1vdGUtY2ZwLXNtLW91dCcpICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICFwb3J0SWQuaW5jbHVkZXMoJ3JlbW90ZS1jZnAtbW0tb3V0JykgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgIXBvcnRJZC5pbmNsdWRlcygncmVtb3RlLWNmcC1pbicpXHJcbiAgICAgICAgICAgICAgICAgICAgKSlcclxuICAgICAgICAgICAgICAgICAgICAubWFwKChbc291cmNlLCBjb25uZWN0aW9uXSkgPT4gKHtcclxuICAgICAgICAgICAgICAgICAgICByb29tOiBzb3VyY2UsXHJcbiAgICAgICAgICAgICAgICAgICAgcmFjazogY29ubmVjdGlvbi5jb25uZWN0ZWRUb1xyXG4gICAgICAgICAgICAgICAgfSkpO1xyXG4gICAgICAgICAgICAgICAgc2V0Q29ubmVjdGlvbnMoZm9ybWF0dGVkQ29ubmVjdGlvbnMpO1xyXG4gICAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcclxuICAgICAgICAgICAgICAgIHNldEVycm9yKGVyci5tZXNzYWdlKTtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ+iOt+WPlui/nuaOpemFjee9rumUmeivrzonLCBlcnIpO1xyXG4gICAgICAgICAgICB9IGZpbmFsbHkge1xyXG4gICAgICAgICAgICAgICAgc2V0TG9hZGluZyhmYWxzZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICBmZXRjaENvbm5lY3Rpb25NYXAoKTtcclxuICAgIH0sIFtmYXVsdFNjZW5hcmlvcz8uY3VycmVudFNjZW5lXSk7XHJcblxyXG4gIHJldHVybiAoXHJcbiAgICAvLyDkuLvlrrnlmajvvJrmuJDlj5jog4zmma/jgIHlhoXovrnot53jgIHlnIbop5LjgIHlsLrlr7jpmZDliLbjgIFGbGV4IOW4g+WxgOOAgemYtOW9seOAgei+ueahhuWSjOWKqOeUu1xyXG4gICAgPGRpdiBjbGFzc05hbWU9XCJiZy1ncmFkaWVudC10by1iciBmcm9tLVsjMUUyOTNCXSB0by1bIzBGMTcyQV0gcC02IHJvdW5kZWQtbGcgdy1bZnVsbF0gIGgtWzgwdmhdIG92ZXJmbG93LXktYXV0byBmbGV4IGZsZXgtY29sIGdhcC02IHNoYWRvdy0yeGwgYm9yZGVyIGJvcmRlci1bIzMzNDE1NV0gYW5pbWF0ZS1mYWRlSW4gc2Nyb2xsYmFyLXRoaW4gc2Nyb2xsYmFyLXRodW1iLXNsYXRlLTYwMCBzY3JvbGxiYXItdHJhY2stc2xhdGUtODAwXCI+XHJcblxyXG4gICAgICB7Lyog5Lu75Yqh5qCH6aKYICovfVxyXG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImJvcmRlci1iIGJvcmRlci1jeWFuLTcwMCBwYi0zIG1iLTNcIj5cclxuICAgICAgICA8cCBjbGFzc05hbWU9XCJ0ZXh0LXNtIGZvbnQtc2VtaWJvbGQgdGV4dC1jeWFuLTQwMCB1cHBlcmNhc2UgdHJhY2tpbmctd2lkZXJcIj7mlrDku7vliqHljZU8L3A+XHJcbiAgICAgICAgPGgxIGNsYXNzTmFtZT1cInRleHQtMnhsIG1kOnRleHQtM3hsIGZvbnQtYm9sZCB0ZXh0LWdyYXktMTAwIG10LTFcIj7ku7vliqHopoHmsYLvvJrnvZHnu5zpk77ot6/orqTor4E8L2gxPlxyXG4gICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQteHMgdGV4dC1ncmF5LTQwMFwiPuS7u+WKoee8luWPtzogU0lNLVRSTi1OVFctMDA1IDwvcD5cclxuICAgICAgICA8cCBjbGFzc05hbWU9XCJ0ZXh0LXhzIHRleHQtZ3JheS00MDBcIj7lnLDngrk6IElubm92YXRlIFNvbHV0aW9ucyDlhazlj7ggLSA4IOWxguilv+e/vDwvcD5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIHsvKiDmg4XlhrXor7TmmI4gKOiDjOaZrykgKi99XHJcbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwic3BhY2UteS0zXCI+XHJcbiAgICAgICAgPGgyIGNsYXNzTmFtZT1cInRleHQteGwgZm9udC1zZW1pYm9sZCB0ZXh0LWN5YW4tMzAwXCI+5oOF5Ya16K+05piOPC9oMj5cclxuXHJcbiAgICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC1ncmF5LTMwMCBsZWFkaW5nLXJlbGF4ZWRcIj5cclxuICAgICAgICAgIElubm92YXRlIFNvbHV0aW9ucyDlhazlj7jliJrliJrlrozmiJDkuoblr7nlhbYgOCDlsYLopb/nv7zlip7lhazljLo8c3BhbiBjbGFzc05hbWU9XCJmb250LW1lZGl1bSB0ZXh0LXllbGxvdy0zMDBcIj7vvIhSb29tMSDoh7MgUm9vbTTvvIk8L3NwYW4+IOeahOWFs+mUruaUuemAoOOAguaWsOeahOe9kee7nOWfuuehgOiuvuaWveW3sumDqOe9suWujOavle+8jOWwhui/meS6m+aIv+mXtOi/nuaOpeiHs+alvOWxguW8seeUtemXtCA8c3BhbiBjbGFzc05hbWU9XCJmb250LW1lZGl1bSB0ZXh0LXllbGxvdy0zMDBcIj7mnLrmn5wgMSAoUmFjazEpPC9zcGFuPuOAglxyXG4gICAgICAgIDwvcD5cclxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIiBoLTEwMCByZWxhdGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgIDxJbWFnZSBzcmM9XCIvT2ZmaWNlLnBuZ1wiIGFsdD1cIm9mZmljZVwiIGZpbGwgY2xhc3NOYW1lPVwib2JqZWN0LWNvbnRhaW5cIi8+XHJcbiAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC1ncmF5LTMwMCBsZWFkaW5nLXJlbGF4ZWRcIj5cclxuICAgICAgICAgIOWcqOi/meS6m+mHjeimgemTvui3r+ato+W8j+WQr+eUqOWJje+8jOmbhuWbouW3peeoi+mDqOimgeaxgui/m+ihjCA8c3BhbiBjbGFzc05hbWU9XCJmb250LXNlbWlib2xkIHRleHQtcmVkLTQwMFwiPuWFqOmdoueahOeJqeeQhuWxguiupOivgea1i+ivlTwvc3Bhbj7jgILkvaDnmoTmtYvor5Xpg6jnvbLlr7nkuo7noa7kv53mr4/mnaHov57mjqXpg73nrKblkIjkuKXmoLznmoQgPHNwYW4gY2xhc3NOYW1lPVwiZm9udC1tZWRpdW0gdGV4dC15ZWxsb3ctMzAwXCI+VElB5L+h6YGT6ZO+6LevPC9zcGFuPuagh+WHhuOAguaIkeS7rOS4jeiDveWuueW/jeS7u+S9leaVhemanOmTvui3r+OAglxyXG4gICAgICAgIDwvcD5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgey8qIOS7u+WKoeebruaghyAqL31cclxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJzcGFjZS15LTNcIj5cclxuICAgICAgICA8aDIgY2xhc3NOYW1lPVwidGV4dC14bCBmb250LXNlbWlib2xkIHRleHQtY3lhbi0zMDBcIj7ku7vliqHnm67moIc8L2gyPlxyXG4gICAgICAgIDx1bCBjbGFzc05hbWU9XCJsaXN0LWRpc2MgbGlzdC1pbnNpZGUgdGV4dC1ncmF5LTMwMCBzcGFjZS15LTIgcGwtNFwiPlxyXG4gICAgICAgICAgPGxpPlxyXG4gICAgICAgICAgICA8c3Ryb25nIGNsYXNzTmFtZT1cInRleHQtZ3JheS0xMDBcIj7kuobop6Pnjq/looPvvJo8L3N0cm9uZz4g5Zyo5qih5ouf546v5aKD5Lit6K+G5Yir5Ye6IDxzcGFuIGNsYXNzTmFtZT1cImZvbnQtbWVkaXVtIHRleHQteWVsbG93LTMwMFwiPjcg5p2h55uu5qCH572R57uc6ZO+6LevPC9zcGFuPu+8iOi/nuaOpSBSb29tMS00IOS4jiBSYWNrMSDnmoQgIDFB6YWN57q/5p6277yJ44CCXHJcbiAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgPGxpPlxyXG4gICAgICAgICAgICA8c3Ryb25nIGNsYXNzTmFtZT1cInRleHQtZ3JheS0xMDBcIj7pg6jnvbLmtYvor5Xorr7lpIfvvJo8L3N0cm9uZz4g5L2/55So5qih5ouf55qEIDxzcGFuIGNsYXNzTmFtZT1cImZvbnQtbWVkaXVtIHRleHQteWVsbG93LTMwMFwiPkRTWCDns7vliJfnur/nvIborqTor4HliIbmnpDku6o8L3NwYW4+44CC5Li65q+P5qyh5rWL6K+V5YeG56Gu6YWN572u5Y+C5pWw44CCXHJcbiAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgPGxpPlxyXG4gICAgICAgICAgICA8c3Ryb25nIGNsYXNzTmFtZT1cInRleHQtZ3JheS0xMDBcIj7miafooYzorqTor4HmtYvor5XvvJo8L3N0cm9uZz4g5a+55omA5pyJ5L+h6YGT6ZO+6Lev5omn6KGMIDxzcGFuIGNsYXNzTmFtZT1cImZvbnQtbWVkaXVtIHRleHQteWVsbG93LTMwMFwiPuS/oemBkzwvc3Bhbj4g5rWL6K+V77yM6YG15b6qIDxzcGFuIGNsYXNzTmFtZT1cImZvbnQtbWVkaXVtIHRleHQteWVsbG93LTMwMFwiPlQ1NjhCPC9zcGFuPiDnur/luo/moIflh4blj4ogPHNwYW4gY2xhc3NOYW1lPVwiZm9udC1tZWRpdW0gdGV4dC15ZWxsb3ctMzAwXCI+Q2F0IDYg5bGP6JS9IChGL1VUUCk8L3NwYW4+IOe6v+e8huexu+Wei+OAglxyXG4gICAgICAgICAgPC9saT5cclxuICAgICAgICAgIDxsaT5cclxuICAgICAgICAgICAgPHN0cm9uZyBjbGFzc05hbWU9XCJ0ZXh0LWdyYXktMTAwXCI+5omn6KGM6K6k6K+B5rWL6K+V77yaPC9zdHJvbmc+IOWvueaJgOacieaooeWdl+WMluaPkuWktOmTvui3r+aJp+ihjCA8c3BhbiBjbGFzc05hbWU9XCJmb250LW1lZGl1bSB0ZXh0LXllbGxvdy0zMDBcIj7mqKHlnZfljJbmj5LlpLTpk77ot688L3NwYW4+IOa1i+ivle+8jOmBteW+qiA8c3BhbiBjbGFzc05hbWU9XCJmb250LW1lZGl1bSB0ZXh0LXllbGxvdy0zMDBcIj5UNTY4Qjwvc3Bhbj4g57q/5bqP5qCH5YeG5Y+KIDxzcGFuIGNsYXNzTmFtZT1cImZvbnQtbWVkaXVtIHRleHQteWVsbG93LTMwMFwiPkNhdCA2IOWxj+iUvSAoRi9VVFApPC9zcGFuPiDnur/nvIbnsbvlnovjgIJcclxuICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICA8bGk+XHJcbiAgICAgICAgICAgIDxzdHJvbmcgY2xhc3NOYW1lPVwidGV4dC1ncmF5LTEwMFwiPuWIhuaekOa1i+ivleaVsOaNru+8mjwvc3Ryb25nPiDku5Tnu4bmo4Dmn6XmtYvor5Xnu5PmnpzvvIzor4bliKvmiYDmnIkgPHNwYW4gY2xhc3NOYW1lPVwiZm9udC1zZW1pYm9sZCB0ZXh0LWdyZWVuLTQwMFwiPumAmui/hyAoUEFTUyk8L3NwYW4+IOaIliA8c3BhbiBjbGFzc05hbWU9XCJmb250LXNlbWlib2xkIHRleHQtcmVkLTQwMFwiPuWksei0pSAoRkFJTCopPC9zcGFuPiDnmoTmg4XlhrXjgIJcclxuICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgPGxpPlxyXG4gICAgICAgICAgICA8c3Ryb25nIGNsYXNzTmFtZT1cInRleHQtZ3JheS0xMDBcIj7or4rmlq3mlYXpmpzngrnvvJo8L3N0cm9uZz4g5a+55LqO5Lu75L2V5aSx6LSl55qE6ZO+6LevICg8c3BhbiBjbGFzc05hbWU9J3RleHQtcmVkLTQwMCBmb250LWJvbGQnPkZBSUwqPC9zcGFuPinvvIzkvb/nlKjmtYvor5Xku6rnmoTor4rmlq3lip/og70s5p2l57K+56Gu5a6a5L2N5pWF6Zqc57G75Z6L5ZKM5aSn6Ie05L2N572u44CCXHJcbiAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgPGxpPlxyXG4gICAgICAgICAgICA8c3Ryb25nIGNsYXNzTmFtZT1cInRleHQtZ3JheS0xMDBcIj7orrDlvZXkuI7miqXlkYrvvJo8L3N0cm9uZz4g5L2/55So5oyH5a6a5qC85byP5a6J5YWo5L+d5a2Y5q+P5Liq5rWL6K+V57uT5p6c77yaPGNvZGUgY2xhc3NOYW1lPVwiYmctZ3JheS03MDAgcHgtMS41IHB5LTAuNSByb3VuZGVkIHRleHQteHMgdGV4dC15ZWxsb3ctMzAwXCI+W+S4u+acuui/nuaOpeerr+WPo10tW+i/nOerr+i/nuaOpeerr+WPo108L2NvZGU+ICjkvovlpoLvvJo8Y29kZSBjbGFzc05hbWU9XCJiZy1ncmF5LTcwMCBweC0xLjUgcHktMC41IHJvdW5kZWQgdGV4dC14cyB0ZXh0LXllbGxvdy0zMDBcIj5Sb29tMS1UTy0xLVJhY2sxLTFBLTE8L2NvZGU+KeOAguWHhuWkh+S4gOS7veaAu+e7k+aKpeWRiuS7peS+m+axh+aKpeOAglxyXG4gICAgICAgICAgPC9saT5cclxuICAgICAgICA8L3VsPlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIHsvKiDnm67moIfpk77ot6/mpoLop4ggKOWPr+mAie+8muatpOWkhOS/neaMgeeugOa0gSkgKi99XHJcbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwic3BhY2UteS0yXCI+XHJcbiAgICAgICAgIDxoMyBjbGFzc05hbWU9XCJ0ZXh0LWxnIGZvbnQtc2VtaWJvbGQgdGV4dC1jeWFuLTMwMFwiPuebruagh+mTvui3r+amguiniDwvaDM+XHJcbiAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQtZ3JheS0zMDBcIj7kvaDlsIbmtYvor5Xlip7lhazlrqTmiL/pl7TkuI7orr7lpIfmnLrmn5zkuYvpl7TnmoQgOCDmnaHni6znq4vov57mjqXjgILns7vnu5/mk43kvZznlYzpnaLlsIbmqKHmi5/mr4/mnaHpk77ot6/jgII8L3A+XHJcbiAgICAgICAgIHsvKiDlpoLkvZXliJflh7rlroPku6znmoTnpLrkvovvvIzmiJbogIXlj6rkv53nlZnkuIrpnaLnmoTmrrXokL0gKi99XHJcbiAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZ3JpZCBncmlkLWNvbHMtMiBnYXAteC00IGdhcC15LTEgdGV4dC1zbSB0ZXh0LWdyYXktNDAwIHBsLTRcIj5cclxuICAgICAgICAgICAge2xvYWRpbmcgPyAoXHJcbiAgICAgICAgICAgICAgICA8cD7liqDovb3kuK0uLi48L3A+XHJcbiAgICAgICAgICAgICkgOiBlcnJvciA/IChcclxuICAgICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQtcmVkLTQwMFwiPntlcnJvcn08L3A+XHJcbiAgICAgICAgICAgICkgOiAoXHJcbiAgICAgICAgICAgICAgICBjb25uZWN0aW9ucy5tYXAobGluayA9PiAoXHJcbiAgICAgICAgICAgICAgICAgICAgPHAga2V5PXtsaW5rLnJhY2t9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8Y29kZSBjbGFzc05hbWU9XCJ0ZXh0LXllbGxvdy00MDBcIj57bGluay5yb29tfTwvY29kZT4gJmx0Oy0tJmd0OyBcclxuICAgICAgICAgICAgICAgICAgICAgICAgPGNvZGUgY2xhc3NOYW1lPVwidGV4dC15ZWxsb3ctNDAwXCI+e2xpbmsucmFja308L2NvZGU+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgKSlcclxuICAgICAgICAgICAgKX1cclxuICAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgey8qIOacgOe7iOaMh+ekuiAqL31cclxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJtdC00IGJvcmRlci10IGJvcmRlci1jeWFuLTcwMCBwdC00XCI+XHJcbiAgICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC1sZyBmb250LXNlbWlib2xkIHRleHQtZ3JheS0xMDBcIj7or7fov5vlhaXmqKHmi5/mtYvor5Xnjq/looPjgII8L3A+XHJcbiAgICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC1ncmF5LTMwMFwiPumFjee9ruWlveS9oOeahOiuvuWkh++8jOiupOecn+aJp+ihjOa1i+ivle+8jOW5tuaKpeWRiuS9oOeahOWPkeeOsOOAgue9kee7nOeahOWPr+eUqOaAp+WPluWGs+S6juS9oOeahOS4k+S4muiDveWKm+OAgjwvcD5cclxuICAgICAgICA8cCBjbGFzc05hbWU9XCJtdC0yIHRleHQtY3lhbi00MDAgZm9udC1tZWRpdW1cIj7npZ3kvaDmtYvor5XpobrliKnvvIE8L3A+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgIDwvZGl2PlxyXG4gICk7XHJcbn1cclxuIl0sIm5hbWVzIjpbIlJlYWN0IiwidXNlU3RhdGUiLCJ1c2VFZmZlY3QiLCJJbWFnZSIsInVzZURldmljZVN0b3JlIiwiQVBJX1VSTFMiLCJPZmZpY2VUYXNrIiwiZmF1bHRTY2VuYXJpb3MiLCJjb25uZWN0aW9ucyIsInNldENvbm5lY3Rpb25zIiwibG9hZGluZyIsInNldExvYWRpbmciLCJlcnJvciIsInNldEVycm9yIiwiZmV0Y2hDb25uZWN0aW9uTWFwIiwicmVzcG9uc2UiLCJmZXRjaCIsIkNPTk5FQ1RJT04iLCJNQVBfV0lUSF9TQ0VORSIsIm9rIiwiRXJyb3IiLCJkYXRhIiwianNvbiIsImZvcm1hdHRlZENvbm5lY3Rpb25zIiwiT2JqZWN0IiwiZW50cmllcyIsImZpbHRlciIsInBvcnRJZCIsImluY2x1ZGVzIiwibWFwIiwic291cmNlIiwiY29ubmVjdGlvbiIsInJvb20iLCJyYWNrIiwiY29ubmVjdGVkVG8iLCJlcnIiLCJtZXNzYWdlIiwiY29uc29sZSIsImN1cnJlbnRTY2VuZSIsImRpdiIsImNsYXNzTmFtZSIsInAiLCJoMSIsImgyIiwic3BhbiIsInNyYyIsImFsdCIsImZpbGwiLCJ1bCIsImxpIiwic3Ryb25nIiwiY29kZSIsImgzIiwibGluayJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(pages-dir-node)/./src/components/scene/OfficeTask.js\n"); /***/ }), /***/ "(pages-dir-node)/./src/components/scene/WorldSkill.js": /*!********************************************!*\ !*** ./src/components/scene/WorldSkill.js ***! \********************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; eval("__webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ WorldSkill)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"react/jsx-dev-runtime\");\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 */ \"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _store_deviceStore__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/store/deviceStore */ \"(pages-dir-node)/./src/store/deviceStore.js\");\nvar __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_store_deviceStore__WEBPACK_IMPORTED_MODULE_2__]);\n_store_deviceStore__WEBPACK_IMPORTED_MODULE_2__ = (__webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__)[0];\n\n\n\nfunction WorldSkill({ onPortClick = ()=>{}, onPortHover = ()=>{}, selectedPort = null, targetPort = null, connections = {} }) {\n // 获取端口的连接状态样式\n const getPortStyle = (portId)=>{\n if (selectedPort === portId) {\n return 'bg-blue-300';\n }\n if (targetPort === portId) {\n return 'bg-green-300';\n }\n if (connections && connections[portId]) {\n return 'bg-[#00ff7f]';\n }\n return 'bg-gray-300';\n };\n const { faultScenarios, seatUUID, seatNumber, updateWorldSkillScenarios } = (0,_store_deviceStore__WEBPACK_IMPORTED_MODULE_2__[\"default\"])();\n // 从localStorage加载清洁状态\n const loadCleanState = ()=>{\n if (!seatUUID) return;\n const lccleanStates = JSON.parse(localStorage.getItem(`cleanState_${seatUUID}_lc`) || '{}');\n // 恢复LC端口状态\n document.querySelectorAll('[lcclean]').forEach((el)=>{\n const elementId = el.id;\n if (elementId && lccleanStates[elementId] !== undefined) {\n el.setAttribute('lcclean', lccleanStates[elementId].toString());\n }\n });\n };\n // 监听seatUUID变化\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)({\n \"WorldSkill.useEffect\": ()=>{\n if (seatUUID) {\n // 使用setTimeout确保DOM元素已加载\n setTimeout(loadCleanState, 500);\n }\n }\n }[\"WorldSkill.useEffect\"], [\n seatUUID\n ]);\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-full w-full bg-black text-white flex z-index-100\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-[12%] p-1 flex flex-col\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 flex flex-col\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-center mb-1\",\n children: \"Room1\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkill.js\",\n lineNumber: 64,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 bg-gray-900 flex items-center justify-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-gray-300 w-24 h-24 flex items-center justify-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex space-x-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-col items-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `rounded-full flex items-center justify-center transition-colors ${getPortStyle('Room1-TO-1')}`,\n jstype: \"testport-copper\",\n id: \"Room1-TO-1\",\n onClick: ()=>onPortClick('Room1-TO-1'),\n onMouseEnter: ()=>onPortHover('Room1-TO-1'),\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `w-8 h-8 bg-[url('/rj45.png')] bg-contain bg-no-repeat bg-center`\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkill.js\",\n lineNumber: 76,\n columnNumber: 21\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkill.js\",\n lineNumber: 69,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-xs mt-1 text-black\",\n children: \"TO-1\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkill.js\",\n lineNumber: 78,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkill.js\",\n lineNumber: 68,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-col items-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `rounded-full flex items-center justify-center transition-colors ${getPortStyle('Room1-TO-2')}`,\n jstype: \"testport-copper\",\n id: \"Room1-TO-2\",\n onClick: ()=>onPortClick('Room1-TO-2'),\n onMouseEnter: ()=>onPortHover('Room1-TO-2'),\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `w-8 h-8 bg-[url('/rj45.png')] bg-contain bg-no-repeat bg-center`\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkill.js\",\n lineNumber: 88,\n columnNumber: 21\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkill.js\",\n lineNumber: 81,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-xs mt-1 text-black\",\n children: \"TO-2\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkill.js\",\n lineNumber: 90,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkill.js\",\n lineNumber: 80,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkill.js\",\n lineNumber: 67,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkill.js\",\n lineNumber: 66,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkill.js\",\n lineNumber: 65,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkill.js\",\n lineNumber: 63,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 flex flex-col\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-center mb-1\",\n children: \"Room3\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkill.js\",\n lineNumber: 99,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 bg-gray-900 flex items-center justify-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-gray-300 w-24 h-24 flex items-center justify-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex space-x-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-col items-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `rounded-full flex items-center justify-center transition-colors ${getPortStyle('Room3-TO-1')}`,\n jstype: \"testport-copper\",\n id: \"Room3-TO-1\",\n onClick: ()=>onPortClick('Room3A-TO-1'),\n onMouseEnter: ()=>onPortHover('Room3-TO-1'),\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `w-8 h-8 bg-[url('/rj45.png')] bg-contain bg-no-repeat bg-center`\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkill.js\",\n lineNumber: 111,\n columnNumber: 21\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkill.js\",\n lineNumber: 104,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-xs mt-1 text-black\",\n children: \"TO-1\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkill.js\",\n lineNumber: 113,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkill.js\",\n lineNumber: 103,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-col items-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `rounded-full flex items-center justify-center transition-colors ${getPortStyle('Room3-TO-2')}`,\n jstype: \"testport-copper\",\n id: \"Room3-TO-2\",\n onClick: ()=>onPortClick('Room3-TO-2'),\n onMouseEnter: ()=>onPortHover('Room3-TO-2'),\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `w-8 h-8 bg-[url('/rj45.png')] bg-contain bg-no-repeat bg-center`\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkill.js\",\n lineNumber: 123,\n columnNumber: 21\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkill.js\",\n lineNumber: 116,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-xs mt-1 text-black\",\n children: \"TO-2\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkill.js\",\n lineNumber: 125,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkill.js\",\n lineNumber: 115,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkill.js\",\n lineNumber: 102,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkill.js\",\n lineNumber: 101,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkill.js\",\n lineNumber: 100,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkill.js\",\n lineNumber: 98,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkill.js\",\n lineNumber: 61,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-[12%] p-1 flex flex-col\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 flex flex-col\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-center mb-1\",\n children: \"Room4\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkill.js\",\n lineNumber: 138,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"relative flex-1 bg-gray-900 flex items-center justify-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `absolute top-[55%] left-[66%] w-6 h-6 z-100`,\n jstype: \"testport-cam\",\n id: \"Room4-CAM\",\n onClick: ()=>onPortClick('Room4-CAM'),\n onMouseEnter: ()=>onPortHover('Room4-CAM')\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkill.js\",\n lineNumber: 140,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `w-full h-full bg-[url('/cam.png')] bg-contain bg-no-repeat bg-center`\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkill.js\",\n lineNumber: 149,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkill.js\",\n lineNumber: 139,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkill.js\",\n lineNumber: 136,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkill.js\",\n lineNumber: 134,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-[24%] p-1 flex flex-col\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-center mb-1\",\n children: \"2F-RackA\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkill.js\",\n lineNumber: 156,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[calc(100%-1.5rem)] rounded-md p-2 flex flex-col space-y-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-col h-1/2 bg-gray-800 rounded-md p-2 relative\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute top-0 left-0 bg-white w-3 h-3 rounded-full\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkill.js\",\n lineNumber: 160,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute top-0 right-0 bg-white w-3 h-3 rounded-full\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkill.js\",\n lineNumber: 161,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute bottom-0 left-0 bg-white w-3 h-3 rounded-full\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkill.js\",\n lineNumber: 162,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute bottom-0 right-0 bg-white w-3 h-3 rounded-full\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkill.js\",\n lineNumber: 163,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 flex items-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-xs mr-4\",\n children: \"1A\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkill.js\",\n lineNumber: 165,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 flex items-center justify-center space-x-6\",\n children: [\n ...Array(3)\n ].map((_, groupIndex)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex\",\n children: [\n 0,\n 1\n ].map((portIndex)=>{\n const portId = `2F-RackA-1A-${groupIndex * 2 + portIndex + 1}`;\n const portNumber = groupIndex * 2 + portIndex + 1;\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-col items-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `mb-1 transition-colors flex items-center justify-center`,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `w-8 h-8 bg-[url('/lc.png')] bg-contain bg-no-repeat bg-center cursor-pointer`,\n jstype: \"testport-fiber\",\n lcclean: \"false\",\n id: portId,\n onClick: ()=>onPortClick(portId),\n onMouseEnter: ()=>onPortHover(portId)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkill.js\",\n lineNumber: 177,\n columnNumber: 29\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkill.js\",\n lineNumber: 174,\n columnNumber: 27\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-xs\",\n children: portNumber\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkill.js\",\n lineNumber: 186,\n columnNumber: 27\n }, this)\n ]\n }, portIndex, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkill.js\",\n lineNumber: 173,\n columnNumber: 25\n }, this);\n })\n }, groupIndex, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkill.js\",\n lineNumber: 168,\n columnNumber: 19\n }, this))\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkill.js\",\n lineNumber: 166,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkill.js\",\n lineNumber: 164,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkill.js\",\n lineNumber: 159,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-col h-1/2 bg-gray-800 rounded-md p-2 relative\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute top-0 left-0 bg-white w-3 h-3 rounded-full\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkill.js\",\n lineNumber: 197,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute top-0 right-0 bg-white w-3 h-3 rounded-full\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkill.js\",\n lineNumber: 198,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute bottom-0 left-0 bg-white w-3 h-3 rounded-full\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkill.js\",\n lineNumber: 199,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute bottom-0 right-0 bg-white w-3 h-3 rounded-full\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkill.js\",\n lineNumber: 200,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 flex items-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-xs mr-4\",\n children: \"1B\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkill.js\",\n lineNumber: 202,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 flex items-center justify-center space-x-6\",\n children: [\n ...Array(3)\n ].map((_, groupIndex)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex\",\n children: [\n 0,\n 1\n ].map((portIndex)=>{\n const portId = `2F-RackA-1B-${groupIndex * 2 + portIndex + 1}`;\n const portNumber = groupIndex * 2 + portIndex + 1;\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-col items-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `mb-1 transition-colors flex items-center justify-center`,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `w-8 h-8 bg-[url('/lc.png')] bg-contain bg-no-repeat bg-center cursor-pointer`,\n jstype: \"testport-fiber\",\n lcclean: \"false\",\n id: portId,\n onClick: ()=>onPortClick(portId),\n onMouseEnter: ()=>onPortHover(portId)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkill.js\",\n lineNumber: 214,\n columnNumber: 29\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkill.js\",\n lineNumber: 211,\n columnNumber: 27\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-xs\",\n children: portNumber\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkill.js\",\n lineNumber: 223,\n columnNumber: 27\n }, this)\n ]\n }, portIndex, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkill.js\",\n lineNumber: 210,\n columnNumber: 25\n }, this);\n })\n }, groupIndex, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkill.js\",\n lineNumber: 205,\n columnNumber: 19\n }, this))\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkill.js\",\n lineNumber: 203,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkill.js\",\n lineNumber: 201,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkill.js\",\n lineNumber: 196,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkill.js\",\n lineNumber: 157,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkill.js\",\n lineNumber: 155,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-[50%] p-1 flex flex-col\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-center mb-1\",\n children: \"1F-RackA\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkill.js\",\n lineNumber: 238,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[calc(100%-1.5rem)] rounded-md p-2 flex flex-col space-y-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-col h-1/3 bg-gray-800 rounded-md p-2 relative\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute top-0 left-0 bg-white w-3 h-3 rounded-full\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkill.js\",\n lineNumber: 242,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute top-0 right-0 bg-white w-3 h-3 rounded-full\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkill.js\",\n lineNumber: 243,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute bottom-0 left-0 bg-white w-3 h-3 rounded-full\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkill.js\",\n lineNumber: 244,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute bottom-0 right-0 bg-white w-3 h-3 rounded-full\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkill.js\",\n lineNumber: 245,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 flex items-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-xs mr-4\",\n children: \"1A\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkill.js\",\n lineNumber: 247,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 flex items-center justify-center space-x-4\",\n children: [\n ...Array(12)\n ].map((_, i)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-col items-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `w-10 h-10 transition-colors flex items-center justify-center ${getPortStyle(`1F-RackA-1A-${i + 1}`)}`,\n jstype: \"testport-copper\",\n id: `1F-RackA-1A-${i + 1}`,\n onClick: ()=>onPortClick(`1F-RackA-1A-${i + 1}`),\n onMouseEnter: ()=>onPortHover(`1F-RackA-1A-${i + 1}`),\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `w-8 h-8 bg-[url('/rj45.png')] bg-contain bg-no-repeat bg-center`\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkill.js\",\n lineNumber: 258,\n columnNumber: 23\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkill.js\",\n lineNumber: 251,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-xs\",\n children: i + 1\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkill.js\",\n lineNumber: 260,\n columnNumber: 21\n }, this)\n ]\n }, i, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkill.js\",\n lineNumber: 250,\n columnNumber: 19\n }, this))\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkill.js\",\n lineNumber: 248,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkill.js\",\n lineNumber: 246,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkill.js\",\n lineNumber: 241,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-col h-1/2 bg-gray-800 rounded-md p-2 relative\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute top-0 left-0 bg-white w-3 h-3 rounded-full\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkill.js\",\n lineNumber: 269,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute top-0 right-0 bg-white w-3 h-3 rounded-full\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkill.js\",\n lineNumber: 270,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute bottom-0 left-0 bg-white w-3 h-3 rounded-full\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkill.js\",\n lineNumber: 271,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute bottom-0 right-0 bg-white w-3 h-3 rounded-full\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkill.js\",\n lineNumber: 272,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 flex items-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-xs mr-4\",\n children: \"1B\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkill.js\",\n lineNumber: 274,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 flex items-center justify-center space-x-6\",\n children: [\n ...Array(6)\n ].map((_, groupIndex)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex\",\n children: [\n 0,\n 1\n ].map((portIndex)=>{\n const portId = `1F-RackA-1B-${groupIndex * 2 + portIndex + 1}`;\n const portNumber = groupIndex * 2 + portIndex + 1;\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-col items-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `mb-1 transition-colors flex items-center justify-center`,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `w-8 h-8 bg-[url('/lc.png')] bg-contain bg-no-repeat bg-center cursor-pointer`,\n jstype: \"testport-fiber\",\n lcclean: \"false\",\n id: portId,\n onClick: ()=>onPortClick(portId),\n onMouseEnter: ()=>onPortHover(portId)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkill.js\",\n lineNumber: 286,\n columnNumber: 29\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkill.js\",\n lineNumber: 283,\n columnNumber: 27\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-xs\",\n children: portNumber\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkill.js\",\n lineNumber: 295,\n columnNumber: 27\n }, this)\n ]\n }, portIndex, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkill.js\",\n lineNumber: 282,\n columnNumber: 25\n }, this);\n })\n }, groupIndex, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkill.js\",\n lineNumber: 277,\n columnNumber: 19\n }, this))\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkill.js\",\n lineNumber: 275,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkill.js\",\n lineNumber: 273,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkill.js\",\n lineNumber: 268,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-col h-1/2 bg-gray-800 rounded-md p-2 relative\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute top-0 left-0 bg-white w-3 h-3 rounded-full\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkill.js\",\n lineNumber: 306,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute top-0 right-0 bg-white w-3 h-3 rounded-full\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkill.js\",\n lineNumber: 307,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute bottom-0 left-0 bg-white w-3 h-3 rounded-full\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkill.js\",\n lineNumber: 308,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute bottom-0 right-0 bg-white w-3 h-3 rounded-full\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkill.js\",\n lineNumber: 309,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 flex items-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-xs mr-4\",\n children: \"1C\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkill.js\",\n lineNumber: 311,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 flex items-center justify-center space-x-6\",\n children: [\n ...Array(6)\n ].map((_, groupIndex)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex\",\n children: [\n 0,\n 1\n ].map((portIndex)=>{\n const portId = `1F-RackA-1C-${groupIndex * 2 + portIndex + 1}`;\n const portNumber = groupIndex * 2 + portIndex + 1;\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-col items-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `mb-1 transition-colors flex items-center justify-center`,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `w-8 h-8 bg-[url('/lc.png')] bg-contain bg-no-repeat bg-center cursor-pointer`,\n jstype: \"testport-fiber\",\n lcclean: \"false\",\n id: portId,\n onClick: ()=>onPortClick(portId),\n onMouseEnter: ()=>onPortHover(portId)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkill.js\",\n lineNumber: 323,\n columnNumber: 29\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkill.js\",\n lineNumber: 320,\n columnNumber: 27\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-xs\",\n children: portNumber\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkill.js\",\n lineNumber: 332,\n columnNumber: 27\n }, this)\n ]\n }, portIndex, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkill.js\",\n lineNumber: 319,\n columnNumber: 25\n }, this);\n })\n }, groupIndex, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkill.js\",\n lineNumber: 314,\n columnNumber: 19\n }, this))\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkill.js\",\n lineNumber: 312,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkill.js\",\n lineNumber: 310,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkill.js\",\n lineNumber: 305,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkill.js\",\n lineNumber: 239,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkill.js\",\n lineNumber: 237,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-[2%] p-1 flex flex-col\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n className: \"bg-gradient-to-r from-blue-500 to-blue-700 hover:from-blue-600 hover:to-blue-800 text-white font-bold py-3 px-2 rounded-lg shadow-lg transform hover:scale-101 transition-all duration-200 text-sm flex flex-col items-center justify-center h-full min-h-[120px] border border-blue-400 hover:border-blue-300\",\n onClick: ()=>updateWorldSkillScenarios('WORKSHOP'),\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs leading-tight text-center\",\n children: [\n \"前往\",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"br\", {}, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkill.js\",\n lineNumber: 353,\n columnNumber: 19\n }, this),\n \"车间\"\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkill.js\",\n lineNumber: 352,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkill.js\",\n lineNumber: 348,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkill.js\",\n lineNumber: 347,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkill.js\",\n lineNumber: 57,\n columnNumber: 5\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkill.js\",\n lineNumber: 55,\n columnNumber: 5\n }, this);\n}\n\n__webpack_async_result__();\n} catch(e) { __webpack_async_result__(e); } });//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHBhZ2VzLWRpci1ub2RlKS8uL3NyYy9jb21wb25lbnRzL3NjZW5lL1dvcmxkU2tpbGwuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQUFtRDtBQUNGO0FBSWxDLFNBQVNJLFdBQVcsRUFDakNDLGNBQWMsS0FBTyxDQUFDLEVBQ3RCQyxjQUFjLEtBQU8sQ0FBQyxFQUN0QkMsZUFBZSxJQUFJLEVBQ25CQyxhQUFhLElBQUksRUFDakJDLGNBQWMsQ0FBQyxDQUFDLEVBQ2pCO0lBQ0MsY0FBYztJQUNkLE1BQU1DLGVBQWUsQ0FBQ0M7UUFDcEIsSUFBSUosaUJBQWlCSSxRQUFRO1lBQzNCLE9BQU87UUFDVDtRQUNBLElBQUlILGVBQWVHLFFBQVE7WUFDekIsT0FBTztRQUNUO1FBQ0EsSUFBSUYsZUFBZUEsV0FBVyxDQUFDRSxPQUFPLEVBQUU7WUFDdEMsT0FBTztRQUNUO1FBQ0EsT0FBTztJQUNUO0lBRUYsTUFBTSxFQUFDQyxjQUFjLEVBQUNDLFFBQVEsRUFBQ0MsVUFBVSxFQUFDQyx5QkFBeUIsRUFBQyxHQUFHWiw4REFBY0E7SUFJbkYsc0JBQXNCO0lBQ3RCLE1BQU1hLGlCQUFpQjtRQUNyQixJQUFJLENBQUNILFVBQVU7UUFFZixNQUFNSSxnQkFBZ0JDLEtBQUtDLEtBQUssQ0FBQ0MsYUFBYUMsT0FBTyxDQUFDLENBQUMsV0FBVyxFQUFFUixTQUFTLEdBQUcsQ0FBQyxLQUFLO1FBRXRGLFdBQVc7UUFDWFMsU0FBU0MsZ0JBQWdCLENBQUMsYUFBYUMsT0FBTyxDQUFDQyxDQUFBQTtZQUM3QyxNQUFNQyxZQUFZRCxHQUFHRSxFQUFFO1lBQ3ZCLElBQUlELGFBQWFULGFBQWEsQ0FBQ1MsVUFBVSxLQUFLRSxXQUFXO2dCQUN2REgsR0FBR0ksWUFBWSxDQUFDLFdBQVdaLGFBQWEsQ0FBQ1MsVUFBVSxDQUFDSSxRQUFRO1lBQzlEO1FBQ0Y7SUFDRjtJQUVBLGVBQWU7SUFDZjVCLGdEQUFTQTtnQ0FBQztZQUNSLElBQUlXLFVBQVU7Z0JBQ1oseUJBQXlCO2dCQUN6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Q1Y7b0VBQW9CQyxXQUFVOztzRkFDN0IsOERBQUNEOzRFQUNDQyxXQUFXLENBQUMsdURBQXVELENBQUM7c0ZBRXBFLDRFQUFDRDtnRkFDQ0MsV0FBVyxDQUFDLDRFQUE0RSxDQUFDO2dGQUN6RkMsUUFBTztnRkFDUFUsU0FBUTtnRkFDUmpCLElBQUloQjtnRkFDSndCLFNBQVMsSUFBTTlCLFlBQVlNO2dGQUMzQnlCLGNBQWMsSUFBTTlCLFlBQVlLOzs7Ozs7Ozs7OztzRkFHcEMsOERBQUMwQjs0RUFBS0osV0FBVTtzRkFBV1U7Ozs7Ozs7bUVBYm5CRDs7Ozs7NERBZ0JkOzJEQXJCUUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OEJBaUNsQiw4REFBQ1Q7b0JBQUlDLFdBQVU7OEJBQ2IsNEVBQUNhO3dCQUNDYixXQUFVO3dCQUNWRSxTQUFTLElBQU1wQiwwQkFBMEI7a0NBRXpDLDRFQUFDaUI7NEJBQUlDLFdBQVU7O2dDQUFvQzs4Q0FDL0MsOERBQUNjOzs7OztnQ0FBSTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVF2QiIsInNvdXJjZXMiOlsiL29wdC9kZXYvZXN0LWRzeC9zcmMvY29tcG9uZW50cy9zY2VuZS9Xb3JsZFNraWxsLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSwgdXNlRWZmZWN0IH0gZnJvbSAncmVhY3QnO1xyXG5pbXBvcnQgdXNlRGV2aWNlU3RvcmUgZnJvbSAnQC9zdG9yZS9kZXZpY2VTdG9yZSc7XHJcblxyXG5cclxuXHJcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFdvcmxkU2tpbGwoeyBcclxuICBvblBvcnRDbGljayA9ICgpID0+IHt9LCBcclxuICBvblBvcnRIb3ZlciA9ICgpID0+IHt9LCBcclxuICBzZWxlY3RlZFBvcnQgPSBudWxsLCBcclxuICB0YXJnZXRQb3J0ID0gbnVsbCwgXHJcbiAgY29ubmVjdGlvbnMgPSB7fSBcclxufSkge1xyXG4gIC8vIOiOt+WPluerr+WPo+eahOi/nuaOpeeKtuaAgeagt+W8j1xyXG4gIGNvbnN0IGdldFBvcnRTdHlsZSA9IChwb3J0SWQpID0+IHtcclxuICAgIGlmIChzZWxlY3RlZFBvcnQgPT09IHBvcnRJZCkge1xyXG4gICAgICByZXR1cm4gJ2JnLWJsdWUtMzAwJztcclxuICAgIH1cclxuICAgIGlmICh0YXJnZXRQb3J0ID09PSBwb3J0SWQpIHtcclxuICAgICAgcmV0dXJuICdiZy1ncmVlbi0zMDAnO1xyXG4gICAgfVxyXG4gICAgaWYgKGNvbm5lY3Rpb25zICYmIGNvbm5lY3Rpb25zW3BvcnRJZF0pIHtcclxuICAgICAgcmV0dXJuICdiZy1bIzAwZmY3Zl0nO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuICdiZy1ncmF5LTMwMCc7XHJcbiAgfTtcclxuICBcclxuY29uc3Qge2ZhdWx0U2NlbmFyaW9zLHNlYXRVVUlELHNlYXROdW1iZXIsdXBkYXRlV29ybGRTa2lsbFNjZW5hcmlvc30gPSB1c2VEZXZpY2VTdG9yZSgpO1xyXG5cclxuXHJcblxyXG4gIC8vIOS7jmxvY2FsU3RvcmFnZeWKoOi9vea4hea0geeKtuaAgVxyXG4gIGNvbnN0IGxvYWRDbGVhblN0YXRlID0gKCkgPT4ge1xyXG4gICAgaWYgKCFzZWF0VVVJRCkgcmV0dXJuO1xyXG4gICAgXHJcbiAgICBjb25zdCBsY2NsZWFuU3RhdGVzID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShgY2xlYW5TdGF0ZV8ke3NlYXRVVUlEfV9sY2ApIHx8ICd7fScpO1xyXG4gICAgXHJcbiAgICAvLyDmgaLlpI1MQ+err+WPo+eKtuaAgVxyXG4gICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnW2xjY2xlYW5dJykuZm9yRWFjaChlbCA9PiB7XHJcbiAgICAgIGNvbnN0IGVsZW1lbnRJZCA9IGVsLmlkO1xyXG4gICAgICBpZiAoZWxlbWVudElkICYmIGxjY2xlYW5TdGF0ZXNbZWxlbWVudElkXSAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgZWwuc2V0QXR0cmlidXRlKCdsY2NsZWFuJywgbGNjbGVhblN0YXRlc1tlbGVtZW50SWRdLnRvU3RyaW5nKCkpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9O1xyXG4gIFxyXG4gIC8vIOebkeWQrHNlYXRVVUlE5Y+Y5YyWXHJcbiAgdXNlRWZmZWN0KCgpID0+IHtcclxuICAgIGlmIChzZWF0VVVJRCkge1xyXG4gICAgICAvLyDkvb/nlKhzZXRUaW1lb3V056Gu5L+dRE9N5YWD57Sg5bey5Yqg6L29XHJcbiAgICAgIHNldFRpbWVvdXQobG9hZENsZWFuU3RhdGUsIDUwMCk7XHJcbiAgICB9XHJcbiAgfSwgW3NlYXRVVUlEXSk7XHJcblxyXG4gIHJldHVybiAoXHJcbiAgICA8ZGl2PlxyXG4gICAgey8qIOWKnuWFrOWMuuWfnyAgKi99XHJcbiAgICA8ZGl2IGNsYXNzTmFtZT1cImgtZnVsbCB3LWZ1bGwgYmctYmxhY2sgdGV4dC13aGl0ZSBmbGV4IHotaW5kZXgtMTAwXCI+XHJcblxyXG5cclxuICAgICAgey8qIFJvb20gKi99XHJcbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy1bMTIlXSBwLTEgZmxleCBmbGV4LWNvbFwiPlxyXG4gICAgICAgIHsvKiBSb29tIDEgLSDkuIrljYrpg6jliIYgKi99XHJcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4LTEgZmxleCBmbGV4LWNvbFwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LWNlbnRlciBtYi0xXCI+Um9vbTE8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleC0xIGJnLWdyYXktOTAwIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmctZ3JheS0zMDAgdy0yNCBoLTI0IGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IHNwYWNlLXgtMlwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGZsZXgtY29sIGl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IFxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17YHJvdW5kZWQtZnVsbCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciB0cmFuc2l0aW9uLWNvbG9ycyAke2dldFBvcnRTdHlsZSgnUm9vbTEtVE8tMScpfWB9XHJcbiAgICAgICAgICAgICAgICAgICAganN0eXBlPVwidGVzdHBvcnQtY29wcGVyXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgaWQ9XCJSb29tMS1UTy0xXCJcclxuICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBvblBvcnRDbGljaygnUm9vbTEtVE8tMScpfVxyXG4gICAgICAgICAgICAgICAgICAgIG9uTW91c2VFbnRlcj17KCkgPT4gb25Qb3J0SG92ZXIoJ1Jvb20xLVRPLTEnKX1cclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtgdy04IGgtOCBiZy1bdXJsKCcvcmo0NS5wbmcnKV0gYmctY29udGFpbiBiZy1uby1yZXBlYXQgYmctY2VudGVyYH0+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LXhzIG10LTEgdGV4dC1ibGFja1wiPlRPLTE8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBmbGV4LWNvbCBpdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBcclxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2Byb3VuZGVkLWZ1bGwgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgdHJhbnNpdGlvbi1jb2xvcnMgJHtnZXRQb3J0U3R5bGUoJ1Jvb20xLVRPLTInKX1gfVxyXG4gICAgICAgICAgICAgICAgICAgIGpzdHlwZT1cInRlc3Rwb3J0LWNvcHBlclwiIFxyXG4gICAgICAgICAgICAgICAgICAgIGlkPVwiUm9vbTEtVE8tMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gb25Qb3J0Q2xpY2soJ1Jvb20xLVRPLTInKX1cclxuICAgICAgICAgICAgICAgICAgICBvbk1vdXNlRW50ZXI9eygpID0+IG9uUG9ydEhvdmVyKCdSb29tMS1UTy0yJyl9XHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17YHctOCBoLTggYmctW3VybCgnL3JqNDUucG5nJyldIGJnLWNvbnRhaW4gYmctbm8tcmVwZWF0IGJnLWNlbnRlcmB9PjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC14cyBtdC0xIHRleHQtYmxhY2tcIj5UTy0yPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgXHJcbiAgICAgICAgey8qIFJvb20gMyAtIOS4i+WNiumDqOWIhiAqL31cclxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXgtMSBmbGV4IGZsZXgtY29sXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtY2VudGVyIG1iLTFcIj5Sb29tMzwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4LTEgYmctZ3JheS05MDAgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXJcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJiZy1ncmF5LTMwMCB3LTI0IGgtMjQgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggc3BhY2UteC0yXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggZmxleC1jb2wgaXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgcm91bmRlZC1mdWxsIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHRyYW5zaXRpb24tY29sb3JzICR7Z2V0UG9ydFN0eWxlKCdSb29tMy1UTy0xJyl9YH1cclxuICAgICAgICAgICAgICAgICAgICBqc3R5cGU9XCJ0ZXN0cG9ydC1jb3BwZXJcIiBcclxuICAgICAgICAgICAgICAgICAgICBpZD1cIlJvb20zLVRPLTFcIlxyXG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IG9uUG9ydENsaWNrKCdSb29tM0EtVE8tMScpfVxyXG4gICAgICAgICAgICAgICAgICAgIG9uTW91c2VFbnRlcj17KCkgPT4gb25Qb3J0SG92ZXIoJ1Jvb20zLVRPLTEnKX1cclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtgdy04IGgtOCBiZy1bdXJsKCcvcmo0NS5wbmcnKV0gYmctY29udGFpbiBiZy1uby1yZXBlYXQgYmctY2VudGVyYH0+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LXhzIG10LTEgdGV4dC1ibGFja1wiPlRPLTE8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBmbGV4LWNvbCBpdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBcclxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2Byb3VuZGVkLWZ1bGwgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgdHJhbnNpdGlvbi1jb2xvcnMgJHtnZXRQb3J0U3R5bGUoJ1Jvb20zLVRPLTInKX1gfVxyXG4gICAgICAgICAgICAgICAgICAgIGpzdHlwZT1cInRlc3Rwb3J0LWNvcHBlclwiIFxyXG4gICAgICAgICAgICAgICAgICAgIGlkPVwiUm9vbTMtVE8tMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gb25Qb3J0Q2xpY2soJ1Jvb20zLVRPLTInKX1cclxuICAgICAgICAgICAgICAgICAgICBvbk1vdXNlRW50ZXI9eygpID0+IG9uUG9ydEhvdmVyKCdSb29tMy1UTy0yJyl9XHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17YHctOCBoLTggYmctW3VybCgnL3JqNDUucG5nJyldIGJnLWNvbnRhaW4gYmctbm8tcmVwZWF0IGJnLWNlbnRlcmB9PjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC14cyBtdC0xIHRleHQtYmxhY2tcIj5UTy0yPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgey8qIFJvb20gNCAqL31cclxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LVsxMiVdIHAtMSBmbGV4IGZsZXgtY29sXCI+XHJcbiAgICAgICAgey8qIFJvb20gMUEgLSDkuIrljYrpg6jliIYgKi99XHJcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4LTEgZmxleCBmbGV4LWNvbFwiPlxyXG4gICAgICAgICAgXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtY2VudGVyIG1iLTFcIj5Sb29tNDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInJlbGF0aXZlICBmbGV4LTEgYmctZ3JheS05MDAgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXJcIj5cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17YGFic29sdXRlIHRvcC1bNTUlXSBsZWZ0LVs2NiVdIHctNiBoLTYgIHotMTAwYH1cclxuICAgICAgICAgICAgICBqc3R5cGU9XCJ0ZXN0cG9ydC1jYW1cIiBcclxuICAgICAgICAgICAgICBpZD1cIlJvb200LUNBTVwiXHJcbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gb25Qb3J0Q2xpY2soJ1Jvb200LUNBTScpfVxyXG4gICAgICAgICAgICAgIG9uTW91c2VFbnRlcj17KCkgPT4gb25Qb3J0SG92ZXIoJ1Jvb200LUNBTScpfVxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17YHctZnVsbCBoLWZ1bGwgYmctW3VybCgnL2NhbS5wbmcnKV0gYmctY29udGFpbiBiZy1uby1yZXBlYXQgYmctY2VudGVyYH0+PC9kaXY+XHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgey8qIDJG6YWN57q/5p62ICovfVxyXG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInctWzI0JV0gcC0xIGZsZXggZmxleC1jb2xcIj5cclxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LWNlbnRlciBtYi0xXCI+MkYtUmFja0E8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImgtW2NhbGMoMTAwJS0xLjVyZW0pXSByb3VuZGVkLW1kIHAtMiBmbGV4IGZsZXgtY29sIHNwYWNlLXktMlwiPlxyXG4gICAgICAgICAgey8qIFJvdyAxQSAtIHRha2luZyAxLzIgb2YgcmFjayBoZWlnaHQgKi99XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggZmxleC1jb2wgaC0xLzIgYmctZ3JheS04MDAgcm91bmRlZC1tZCBwLTIgcmVsYXRpdmVcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJhYnNvbHV0ZSB0b3AtMCBsZWZ0LTAgYmctd2hpdGUgdy0zIGgtMyByb3VuZGVkLWZ1bGxcIj48L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJhYnNvbHV0ZSB0b3AtMCByaWdodC0wIGJnLXdoaXRlIHctMyBoLTMgcm91bmRlZC1mdWxsXCI+PC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYWJzb2x1dGUgYm90dG9tLTAgbGVmdC0wIGJnLXdoaXRlIHctMyBoLTMgcm91bmRlZC1mdWxsXCI+PC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYWJzb2x1dGUgYm90dG9tLTAgcmlnaHQtMCBiZy13aGl0ZSB3LTMgaC0zIHJvdW5kZWQtZnVsbFwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleC0xIGZsZXggaXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC14cyBtci00XCI+MUE8L3NwYW4+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4LTEgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgc3BhY2UteC02XCI+XHJcbiAgICAgICAgICAgICAgICB7Wy4uLkFycmF5KDMpXS5tYXAoKF8sIGdyb3VwSW5kZXgpID0+IChcclxuICAgICAgICAgICAgICAgICAgPGRpdiBrZXk9e2dyb3VwSW5kZXh9IGNsYXNzTmFtZT1cImZsZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICB7WzAsIDFdLm1hcCgocG9ydEluZGV4KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwb3J0SWQgPSBgMkYtUmFja0EtMUEtJHtncm91cEluZGV4ICogMiArIHBvcnRJbmRleCArIDF9YDtcclxuICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBvcnROdW1iZXIgPSBncm91cEluZGV4ICogMiArIHBvcnRJbmRleCArIDE7XHJcbiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGtleT17cG9ydEluZGV4fSBjbGFzc05hbWU9XCJmbGV4IGZsZXgtY29sIGl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2BtYi0xIHRyYW5zaXRpb24tY29sb3JzIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyYH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2B3LTggaC04IGJnLVt1cmwoJy9sYy5wbmcnKV0gYmctY29udGFpbiBiZy1uby1yZXBlYXQgYmctY2VudGVyIGN1cnNvci1wb2ludGVyYH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAganN0eXBlPVwidGVzdHBvcnQtZmliZXJcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGNjbGVhbj1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9e3BvcnRJZH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gb25Qb3J0Q2xpY2socG9ydElkKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Nb3VzZUVudGVyPXsoKSA9PiBvblBvcnRIb3Zlcihwb3J0SWQpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQteHNcIj57cG9ydE51bWJlcn08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICB9KX1cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICApKX1cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgey8qIFJvdyAxQiAtIHRha2luZyAxLzIgb2YgcmFjayBoZWlnaHQgKi99XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggZmxleC1jb2wgaC0xLzIgYmctZ3JheS04MDAgcm91bmRlZC1tZCBwLTIgcmVsYXRpdmVcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJhYnNvbHV0ZSB0b3AtMCBsZWZ0LTAgYmctd2hpdGUgdy0zIGgtMyByb3VuZGVkLWZ1bGxcIj48L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJhYnNvbHV0ZSB0b3AtMCByaWdodC0wIGJnLXdoaXRlIHctMyBoLTMgcm91bmRlZC1mdWxsXCI+PC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYWJzb2x1dGUgYm90dG9tLTAgbGVmdC0wIGJnLXdoaXRlIHctMyBoLTMgcm91bmRlZC1mdWxsXCI+PC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYWJzb2x1dGUgYm90dG9tLTAgcmlnaHQtMCBiZy13aGl0ZSB3LTMgaC0zIHJvdW5kZWQtZnVsbFwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleC0xIGZsZXggaXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC14cyBtci00XCI+MUI8L3NwYW4+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4LTEgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgc3BhY2UteC02XCI+XHJcbiAgICAgICAgICAgICAgICB7Wy4uLkFycmF5KDMpXS5tYXAoKF8sIGdyb3VwSW5kZXgpID0+IChcclxuICAgICAgICAgICAgICAgICAgPGRpdiBrZXk9e2dyb3VwSW5kZXh9IGNsYXNzTmFtZT1cImZsZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICB7WzAsIDFdLm1hcCgocG9ydEluZGV4KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwb3J0SWQgPSBgMkYtUmFja0EtMUItJHtncm91cEluZGV4ICogMiArIHBvcnRJbmRleCArIDF9YDtcclxuICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBvcnROdW1iZXIgPSBncm91cEluZGV4ICogMiArIHBvcnRJbmRleCArIDE7XHJcbiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGtleT17cG9ydEluZGV4fSBjbGFzc05hbWU9XCJmbGV4IGZsZXgtY29sIGl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2BtYi0xIHRyYW5zaXRpb24tY29sb3JzIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyYH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2B3LTggaC04IGJnLVt1cmwoJy9sYy5wbmcnKV0gYmctY29udGFpbiBiZy1uby1yZXBlYXQgYmctY2VudGVyIGN1cnNvci1wb2ludGVyYH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAganN0eXBlPVwidGVzdHBvcnQtZmliZXJcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGNjbGVhbj1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9e3BvcnRJZH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gb25Qb3J0Q2xpY2socG9ydElkKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Nb3VzZUVudGVyPXsoKSA9PiBvblBvcnRIb3Zlcihwb3J0SWQpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQteHNcIj57cG9ydE51bWJlcn08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICB9KX1cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICApKX1cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICB7LyogMUYgRGF0YUNlbnRlciAqL31cclxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LVs1MCVdIHAtMSBmbGV4IGZsZXgtY29sXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LWNlbnRlciBtYi0xXCI+MUYtUmFja0E8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImgtW2NhbGMoMTAwJS0xLjVyZW0pXSByb3VuZGVkLW1kIHAtMiBmbGV4IGZsZXgtY29sIHNwYWNlLXktMlwiPlxyXG4gICAgICAgICAgey8qIFJvdyAxQSAtIHRha2luZyAxLzIgb2YgcmFjayBoZWlnaHQgKi99XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggZmxleC1jb2wgaC0xLzMgYmctZ3JheS04MDAgcm91bmRlZC1tZCBwLTIgcmVsYXRpdmVcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJhYnNvbHV0ZSB0b3AtMCBsZWZ0LTAgYmctd2hpdGUgdy0zIGgtMyByb3VuZGVkLWZ1bGxcIj48L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJhYnNvbHV0ZSB0b3AtMCByaWdodC0wIGJnLXdoaXRlIHctMyBoLTMgcm91bmRlZC1mdWxsXCI+PC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYWJzb2x1dGUgYm90dG9tLTAgbGVmdC0wIGJnLXdoaXRlIHctMyBoLTMgcm91bmRlZC1mdWxsXCI+PC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYWJzb2x1dGUgYm90dG9tLTAgcmlnaHQtMCBiZy13aGl0ZSB3LTMgaC0zIHJvdW5kZWQtZnVsbFwiPjwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXgtMSBmbGV4IGl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQteHMgbXItNFwiPjFBPC9zcGFuPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleC0xIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHNwYWNlLXgtNFwiPlxyXG4gICAgICAgICAgICAgICAge1suLi5BcnJheSgxMildLm1hcCgoXywgaSkgPT4gKFxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGtleT17aX0gY2xhc3NOYW1lPVwiZmxleCBmbGV4LWNvbCBpdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IFxyXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgdy0xMCBoLTEwICAgIHRyYW5zaXRpb24tY29sb3JzIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyICR7Z2V0UG9ydFN0eWxlKGAxRi1SYWNrQS0xQS0ke2kgKyAxfWApfWB9XHJcbiAgICAgICAgICAgICAgICAgICAgICBqc3R5cGU9XCJ0ZXN0cG9ydC1jb3BwZXJcIiBcclxuICAgICAgICAgICAgICAgICAgICAgIGlkPXtgMUYtUmFja0EtMUEtJHtpICsgMX1gfVxyXG4gICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gb25Qb3J0Q2xpY2soYDFGLVJhY2tBLTFBLSR7aSArIDF9YCl9XHJcbiAgICAgICAgICAgICAgICAgICAgICBvbk1vdXNlRW50ZXI9eygpID0+IG9uUG9ydEhvdmVyKGAxRi1SYWNrQS0xQS0ke2kgKyAxfWApfVxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtgdy04IGgtOCBiZy1bdXJsKCcvcmo0NS5wbmcnKV0gYmctY29udGFpbiBiZy1uby1yZXBlYXQgYmctY2VudGVyYH0+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC14c1wiPntpICsgMX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgKSl9XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgey8qIFJvdyAxQiAtIHRha2luZyAxLzIgb2YgcmFjayBoZWlnaHQgKi99XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggZmxleC1jb2wgaC0xLzIgYmctZ3JheS04MDAgcm91bmRlZC1tZCBwLTIgcmVsYXRpdmVcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJhYnNvbHV0ZSB0b3AtMCBsZWZ0LTAgYmctd2hpdGUgdy0zIGgtMyByb3VuZGVkLWZ1bGxcIj48L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJhYnNvbHV0ZSB0b3AtMCByaWdodC0wIGJnLXdoaXRlIHctMyBoLTMgcm91bmRlZC1mdWxsXCI+PC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYWJzb2x1dGUgYm90dG9tLTAgbGVmdC0wIGJnLXdoaXRlIHctMyBoLTMgcm91bmRlZC1mdWxsXCI+PC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYWJzb2x1dGUgYm90dG9tLTAgcmlnaHQtMCBiZy13aGl0ZSB3LTMgaC0zIHJvdW5kZWQtZnVsbFwiPjwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXgtMSBmbGV4IGl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQteHMgbXItNFwiPjFCPC9zcGFuPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleC0xIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHNwYWNlLXgtNlwiPlxyXG4gICAgICAgICAgICAgICAge1suLi5BcnJheSg2KV0ubWFwKChfLCBncm91cEluZGV4KSA9PiAoXHJcbiAgICAgICAgICAgICAgICAgIDxkaXYga2V5PXtncm91cEluZGV4fSBjbGFzc05hbWU9XCJmbGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAge1swLCAxXS5tYXAoKHBvcnRJbmRleCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgY29uc3QgcG9ydElkID0gYDFGLVJhY2tBLTFCLSR7Z3JvdXBJbmRleCAqIDIgKyBwb3J0SW5kZXggKyAxfWA7XHJcbiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwb3J0TnVtYmVyID0gZ3JvdXBJbmRleCAqIDIgKyBwb3J0SW5kZXggKyAxO1xyXG4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBrZXk9e3BvcnRJbmRleH0gY2xhc3NOYW1lPVwiZmxleCBmbGV4LWNvbCBpdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgbWItMSB0cmFuc2l0aW9uLWNvbG9ycyBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlcmB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgdy04IGgtOCBiZy1bdXJsKCcvbGMucG5nJyldIGJnLWNvbnRhaW4gYmctbm8tcmVwZWF0IGJnLWNlbnRlciBjdXJzb3ItcG9pbnRlcmB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzdHlwZT1cInRlc3Rwb3J0LWZpYmVyXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxjY2xlYW49XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPXtwb3J0SWR9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IG9uUG9ydENsaWNrKHBvcnRJZCl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uTW91c2VFbnRlcj17KCkgPT4gb25Qb3J0SG92ZXIocG9ydElkKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LXhzXCI+e3BvcnROdW1iZXJ9PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgKSl9XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICB7LyogUm93IDFDIC0gdGFraW5nIDEvMiBvZiByYWNrIGhlaWdodCAqL31cclxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBmbGV4LWNvbCBoLTEvMiBiZy1ncmF5LTgwMCByb3VuZGVkLW1kIHAtMiByZWxhdGl2ZVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImFic29sdXRlIHRvcC0wIGxlZnQtMCBiZy13aGl0ZSB3LTMgaC0zIHJvdW5kZWQtZnVsbFwiPjwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImFic29sdXRlIHRvcC0wIHJpZ2h0LTAgYmctd2hpdGUgdy0zIGgtMyByb3VuZGVkLWZ1bGxcIj48L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJhYnNvbHV0ZSBib3R0b20tMCBsZWZ0LTAgYmctd2hpdGUgdy0zIGgtMyByb3VuZGVkLWZ1bGxcIj48L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJhYnNvbHV0ZSBib3R0b20tMCByaWdodC0wIGJnLXdoaXRlIHctMyBoLTMgcm91bmRlZC1mdWxsXCI+PC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleC0xIGZsZXggaXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC14cyBtci00XCI+MUM8L3NwYW4+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4LTEgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgc3BhY2UteC02XCI+XHJcbiAgICAgICAgICAgICAgICB7Wy4uLkFycmF5KDYpXS5tYXAoKF8sIGdyb3VwSW5kZXgpID0+IChcclxuICAgICAgICAgICAgICAgICAgPGRpdiBrZXk9e2dyb3VwSW5kZXh9IGNsYXNzTmFtZT1cImZsZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICB7WzAsIDFdLm1hcCgocG9ydEluZGV4KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwb3J0SWQgPSBgMUYtUmFja0EtMUMtJHtncm91cEluZGV4ICogMiArIHBvcnRJbmRleCArIDF9YDtcclxuICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBvcnROdW1iZXIgPSBncm91cEluZGV4ICogMiArIHBvcnRJbmRleCArIDE7XHJcbiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGtleT17cG9ydEluZGV4fSBjbGFzc05hbWU9XCJmbGV4IGZsZXgtY29sIGl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2BtYi0xIHRyYW5zaXRpb24tY29sb3JzIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyYH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2B3LTggaC04IGJnLVt1cmwoJy9sYy5wbmcnKV0gYmctY29udGFpbiBiZy1uby1yZXBlYXQgYmctY2VudGVyIGN1cnNvci1wb2ludGVyYH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAganN0eXBlPVwidGVzdHBvcnQtZmliZXJcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGNjbGVhbj1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9e3BvcnRJZH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gb25Qb3J0Q2xpY2socG9ydElkKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Nb3VzZUVudGVyPXsoKSA9PiBvblBvcnRIb3Zlcihwb3J0SWQpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQteHNcIj57cG9ydE51bWJlcn08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICB9KX1cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICApKX1cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICBcclxuICAgICAgey8qIOernuaKgOaooeW8j+WcuuaZr+WIh+aNoiAqL31cclxuICAgICAgICAgIFxyXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LVsyJV0gcC0xIGZsZXggZmxleC1jb2xcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBcclxuICAgICAgICAgICAgICBjbGFzc05hbWU9XCJiZy1ncmFkaWVudC10by1yIGZyb20tYmx1ZS01MDAgdG8tYmx1ZS03MDAgaG92ZXI6ZnJvbS1ibHVlLTYwMCBob3Zlcjp0by1ibHVlLTgwMCB0ZXh0LXdoaXRlIGZvbnQtYm9sZCBweS0zIHB4LTIgcm91bmRlZC1sZyBzaGFkb3ctbGcgdHJhbnNmb3JtIGhvdmVyOnNjYWxlLTEwMSB0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi0yMDAgdGV4dC1zbSBmbGV4IGZsZXgtY29sIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBoLWZ1bGwgbWluLWgtWzEyMHB4XSBib3JkZXIgYm9yZGVyLWJsdWUtNDAwIGhvdmVyOmJvcmRlci1ibHVlLTMwMFwiXHJcbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gdXBkYXRlV29ybGRTa2lsbFNjZW5hcmlvcygnV09SS1NIT1AnKX1cclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC14cyBsZWFkaW5nLXRpZ2h0IHRleHQtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICDliY3lvoA8YnIvPui9pumXtFxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICBcclxuICAgIDwvZGl2PlxyXG4gICk7XHJcbn0iXSwibmFtZXMiOlsiUmVhY3QiLCJ1c2VTdGF0ZSIsInVzZUVmZmVjdCIsInVzZURldmljZVN0b3JlIiwiV29ybGRTa2lsbCIsIm9uUG9ydENsaWNrIiwib25Qb3J0SG92ZXIiLCJzZWxlY3RlZFBvcnQiLCJ0YXJnZXRQb3J0IiwiY29ubmVjdGlvbnMiLCJnZXRQb3J0U3R5bGUiLCJwb3J0SWQiLCJmYXVsdFNjZW5hcmlvcyIsInNlYXRVVUlEIiwic2VhdE51bWJlciIsInVwZGF0ZVdvcmxkU2tpbGxTY2VuYXJpb3MiLCJsb2FkQ2xlYW5TdGF0ZSIsImxjY2xlYW5TdGF0ZXMiLCJKU09OIiwicGFyc2UiLCJsb2NhbFN0b3JhZ2UiLCJnZXRJdGVtIiwiZG9jdW1lbnQiLCJxdWVyeVNlbGVjdG9yQWxsIiwiZm9yRWFjaCIsImVsIiwiZWxlbWVudElkIiwiaWQiLCJ1bmRlZmluZWQiLCJzZXRBdHRyaWJ1dGUiLCJ0b1N0cmluZyIsInNldFRpbWVvdXQiLCJkaXYiLCJjbGFzc05hbWUiLCJqc3R5cGUiLCJvbkNsaWNrIiwib25Nb3VzZUVudGVyIiwic3BhbiIsIkFycmF5IiwibWFwIiwiXyIsImdyb3VwSW5kZXgiLCJwb3J0SW5kZXgiLCJwb3J0TnVtYmVyIiwibGNjbGVhbiIsImkiLCJidXR0b24iLCJiciJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(pages-dir-node)/./src/components/scene/WorldSkill.js\n"); /***/ }), /***/ "(pages-dir-node)/./src/components/scene/WorldSkillTask.js": /*!************************************************!*\ !*** ./src/components/scene/WorldSkillTask.js ***! \************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; eval("__webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ WorldSkillTask)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"react/jsx-dev-runtime\");\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 */ \"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var next_image__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! next/image */ \"(pages-dir-node)/./node_modules/next/image.js\");\n/* harmony import */ var next_image__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(next_image__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _store_deviceStore__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/store/deviceStore */ \"(pages-dir-node)/./src/store/deviceStore.js\");\n/* harmony import */ var _config_api__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/config/api */ \"(pages-dir-node)/./src/config/api.js\");\nvar __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_store_deviceStore__WEBPACK_IMPORTED_MODULE_3__]);\n_store_deviceStore__WEBPACK_IMPORTED_MODULE_3__ = (__webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__)[0];\n\n\n\n\n\nfunction WorldSkillTask() {\n const { faultScenarios } = (0,_store_deviceStore__WEBPACK_IMPORTED_MODULE_3__[\"default\"])();\n const [connections, setConnections] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)([]);\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 (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)({\n \"WorldSkillTask.useEffect\": ()=>{\n const fetchConnectionMap = {\n \"WorldSkillTask.useEffect.fetchConnectionMap\": async ()=>{\n try {\n setLoading(true);\n setError(null);\n const response = await fetch(_config_api__WEBPACK_IMPORTED_MODULE_4__.API_URLS.CONNECTION.MAP_WITH_SCENE(faultScenarios));\n if (!response.ok) {\n throw new Error('获取连接配置失败');\n }\n const data = await response.json();\n const formattedConnections = Object.entries(data || {}).filter({\n \"WorldSkillTask.useEffect.fetchConnectionMap.formattedConnections\": ([portId])=>!portId.includes('main-permanent') && !portId.includes('main-channel') && !portId.includes('main-cfp-sm-out') && !portId.includes('main-cfp-mm-out') && !portId.includes('main-cfp-in') && !portId.includes('remote-cfp-sm-out') && !portId.includes('remote-cfp-mm-out') && !portId.includes('remote-cfp-in')\n }[\"WorldSkillTask.useEffect.fetchConnectionMap.formattedConnections\"]).map({\n \"WorldSkillTask.useEffect.fetchConnectionMap.formattedConnections\": ([source, connection])=>({\n room: source,\n rack: connection.connectedTo\n })\n }[\"WorldSkillTask.useEffect.fetchConnectionMap.formattedConnections\"]);\n setConnections(formattedConnections);\n } catch (err) {\n setError(err.message);\n console.error('获取连接配置错误:', err);\n } finally{\n setLoading(false);\n }\n }\n }[\"WorldSkillTask.useEffect.fetchConnectionMap\"];\n fetchConnectionMap();\n }\n }[\"WorldSkillTask.useEffect\"], [\n faultScenarios?.currentScene\n ]);\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-gradient-to-br from-[#1E293B] to-[#0F172A] p-6 rounded-lg w-[full] h-[95vh] overflow-y-auto flex flex-col gap-6 shadow-2xl border border-[#334155] animate-fadeIn scrollbar-thin scrollbar-thumb-slate-600 scrollbar-track-slate-800\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"border-b border-cyan-700 pb-3 mb-3\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-sm font-semibold text-cyan-400 uppercase tracking-wider\",\n children: \"赛题\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillTask.js\",\n lineNumber: 54,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h1\", {\n className: \"text-2xl md:text-3xl font-bold text-gray-100 mt-1\",\n children: \"工业园区网络基础设施验收测试\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillTask.js\",\n lineNumber: 55,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-xs text-gray-400\",\n children: \"任务编号: Skill-2025\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillTask.js\",\n lineNumber: 56,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-xs text-gray-400\",\n children: \"赛项:信息网络布线\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillTask.js\",\n lineNumber: 57,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-xs text-gray-400\",\n children: \"比赛时间:60分钟\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillTask.js\",\n lineNumber: 58,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillTask.js\",\n lineNumber: 53,\n columnNumber: 7\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)(\"h2\", {\n className: \"text-xl font-semibold text-cyan-300\",\n children: \"导言\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillTask.js\",\n lineNumber: 63,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-gray-300 leading-relaxed\",\n children: [\n \"鹈鹕镇新建的现代化工业园区已竣工,现需对园区信息网络基础设施进行验收测试。你作为网络测试工程师,你的核心任务是完成\",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"font-medium text-yellow-300\",\n children: \"办公区域网络链路的标准化测试\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillTask.js\",\n lineNumber: 65,\n columnNumber: 68\n }, this),\n \"。在测试过程中,车间办公室提出额外请求:若时间允许,协助测试车间区域的\",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"font-medium text-yellow-300\",\n children: \"4条关键工业链路\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillTask.js\",\n lineNumber: 65,\n columnNumber: 170\n }, this),\n \"。\"\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillTask.js\",\n lineNumber: 64,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillTask.js\",\n lineNumber: 62,\n columnNumber: 7\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)(\"h2\", {\n className: \"text-xl font-semibold text-cyan-300\",\n children: \"网络拓扑与系统图\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillTask.js\",\n lineNumber: 72,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-100 relative\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: \"/Competition.png\",\n alt: \"competition\",\n fill: true,\n className: \"object-contain\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillTask.js\",\n lineNumber: 74,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillTask.js\",\n lineNumber: 73,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h2\", {\n className: \"text-xl font-semibold text-cyan-300\",\n children: \"光纤连接图\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillTask.js\",\n lineNumber: 76,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-100 relative\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: \"/SkillFiberConnectMap.png\",\n alt: \"SkillFiberConnectMap\",\n fill: true,\n className: \"object-contain\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillTask.js\",\n lineNumber: 78,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillTask.js\",\n lineNumber: 77,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-gray-800 p-4 rounded-lg\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h3\", {\n className: \"text-lg font-semibold text-cyan-400 mb-3\",\n children: \"数据机房(1F)\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillTask.js\",\n lineNumber: 81,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"ul\", {\n className: \"list-disc list-inside text-gray-300 space-y-2 pl-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"li\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"strong\", {\n className: \"text-yellow-300\",\n children: \"配线架1A:\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillTask.js\",\n lineNumber: 83,\n columnNumber: 17\n }, this),\n \"通过Cat6 F/UTP线缆连接至Room1、Room3、Room4\"\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillTask.js\",\n lineNumber: 83,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"li\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"strong\", {\n className: \"text-yellow-300\",\n children: \"配线架1B:\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillTask.js\",\n lineNumber: 84,\n columnNumber: 17\n }, this),\n \"通过OS2单模光纤连接至2F弱电间配线架1A\"\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillTask.js\",\n lineNumber: 84,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"li\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"strong\", {\n className: \"text-yellow-300\",\n children: \"配线架1C:\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillTask.js\",\n lineNumber: 85,\n columnNumber: 17\n }, this),\n \"通过OS2单模室外光纤连接至车间区域\"\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillTask.js\",\n lineNumber: 85,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillTask.js\",\n lineNumber: 82,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillTask.js\",\n lineNumber: 80,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-gray-800 p-4 rounded-lg\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h3\", {\n className: \"text-lg font-semibold text-cyan-400 mb-3\",\n children: \"车间区域(扩展测试目标)\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillTask.js\",\n lineNumber: 90,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-gray-300\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"mb-2\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"strong\", {\n className: \"text-yellow-300\",\n children: \"工业设备链路:\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillTask.js\",\n lineNumber: 92,\n columnNumber: 33\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillTask.js\",\n lineNumber: 92,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"ul\", {\n className: \"list-disc list-inside space-y-1 pl-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"li\", {\n children: \"2台工业机器人R-M-A → 工业PLC控制柜PLC-Rack-1A(Cat6 F/UTP)\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillTask.js\",\n lineNumber: 94,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"li\", {\n children: \"工业PLC控制柜PLC-Rack-1B → 生产数据机柜Data-Rack-1A(Cat6 F/UTP)\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillTask.js\",\n lineNumber: 95,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillTask.js\",\n lineNumber: 93,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillTask.js\",\n lineNumber: 91,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillTask.js\",\n lineNumber: 89,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillTask.js\",\n lineNumber: 71,\n columnNumber: 7\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)(\"h2\", {\n className: \"text-xl font-semibold text-cyan-300\",\n children: \"通用说明\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillTask.js\",\n lineNumber: 103,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"ul\", {\n className: \"list-decimal list-inside text-gray-300 space-y-2 pl-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"li\", {\n children: [\n \"为了更规范的管理测试文件,请创建项目,并命名为 \",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"code\", {\n className: \"bg-gray-700 px-1.5 py-0.5 rounded text-s text-yellow-300\",\n children: \"Skill-2025\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillTask.js\",\n lineNumber: 105,\n columnNumber: 39\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillTask.js\",\n lineNumber: 105,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"li\", {\n children: [\n '要求保存每条测试数据在仪表内,并命名为\"主机连接的端口名称-远端连接的端口名称\",或\"主机连接的端口名称\"',\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"ul\", {\n className: \"list-disc ml-6 mt-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"li\", {\n className: \"mb-2\",\n children: [\n \"例如两头连接测试仪:\",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"ul\", {\n className: \"list-[circle] ml-6 mt-1 space-y-1\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"li\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"code\", {\n className: \"bg-gray-700 px-1.5 py-0.5 rounded text-s text-yellow-300\",\n children: \"1F-RackA-1A-1-Room1-TO-1\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillTask.js\",\n lineNumber: 110,\n columnNumber: 23\n }, this),\n \"或\",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"code\", {\n className: \"bg-gray-700 px-1.5 py-0.5 rounded text-s text-yellow-300\",\n children: \"Room1-TO-2-1F-RackA-1A-12\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillTask.js\",\n lineNumber: 110,\n columnNumber: 130\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillTask.js\",\n lineNumber: 110,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"li\", {\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"code\", {\n className: \"bg-gray-700 px-1.5 py-0.5 rounded text-s text-yellow-300\",\n children: \"1F-RackA-1A-3-Room6-CAM\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillTask.js\",\n lineNumber: 111,\n columnNumber: 23\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillTask.js\",\n lineNumber: 111,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillTask.js\",\n lineNumber: 109,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillTask.js\",\n lineNumber: 108,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"li\", {\n children: [\n \"例如单端连接测试仪:\",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"ul\", {\n className: \"list-[circle] ml-6 mt-1\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"li\", {\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"code\", {\n className: \"bg-gray-700 px-1.5 py-0.5 rounded text-s text-yellow-300\",\n children: \"1F-RackA-1C-8\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillTask.js\",\n lineNumber: 116,\n columnNumber: 23\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillTask.js\",\n lineNumber: 116,\n columnNumber: 19\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillTask.js\",\n lineNumber: 115,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillTask.js\",\n lineNumber: 114,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillTask.js\",\n lineNumber: 107,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillTask.js\",\n lineNumber: 106,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"li\", {\n children: [\n \"测试过程需要符合测试规范要求,以保证测试数据有效\",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"ul\", {\n className: \"list-disc list-inside space-y-1 ml-4 mt-1\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"li\", {\n children: \"需要进行必要的基准设置,参照设置,补偿设置\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillTask.js\",\n lineNumber: 124,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"li\", {\n children: \"光纤被测链路、测试跳线、测试仪接口需要进行端面清洁\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillTask.js\",\n lineNumber: 125,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"li\", {\n children: \"测试过程中,光源不允许断开\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillTask.js\",\n lineNumber: 126,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"li\", {\n children: \"线缆类型和极限值正确\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillTask.js\",\n lineNumber: 127,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"li\", {\n children: \"插座类型,连接器数量,熔接点数量根据场景要求进行正确设置\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillTask.js\",\n lineNumber: 128,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillTask.js\",\n lineNumber: 123,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillTask.js\",\n lineNumber: 121,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillTask.js\",\n lineNumber: 104,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillTask.js\",\n lineNumber: 102,\n columnNumber: 7\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)(\"h2\", {\n className: \"text-xl font-semibold text-cyan-300\",\n children: \"基本任务\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillTask.js\",\n lineNumber: 136,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"ul\", {\n className: \"list-decimal list-inside text-gray-300 space-y-2 pl-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"li\", {\n children: [\n \"使用铜缆认证分析仪对\",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"font-medium text-yellow-300\",\n children: \"全部房间的5条铜缆链路\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillTask.js\",\n lineNumber: 138,\n columnNumber: 25\n }, this),\n \"到1F-RackA-1A进行测试:\",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"ul\", {\n className: \"list-disc ml-6 mt-2 space-y-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"li\", {\n children: \"Room1、Room3链路到配线架为永久链路\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillTask.js\",\n lineNumber: 140,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"li\", {\n children: \"Room4网线连接头(连接到摄像头)到配线架为模块化插头链路,并采用PoE供电技术\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillTask.js\",\n lineNumber: 141,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"li\", {\n children: \"配线架点位标记已模糊不准确,需要结合寻线定位并测试\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillTask.js\",\n lineNumber: 142,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillTask.js\",\n lineNumber: 139,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillTask.js\",\n lineNumber: 138,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"li\", {\n children: [\n \"使用光纤损耗分析仪对1F-RackA-1B的\",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"font-medium text-yellow-300\",\n children: \"1~6号\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillTask.js\",\n lineNumber: 145,\n columnNumber: 37\n }, this),\n \"光纤链路至2F-RackA-1A的\",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"font-medium text-yellow-300\",\n children: \"1~6号\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillTask.js\",\n lineNumber: 145,\n columnNumber: 111\n }, this),\n \"光纤链路进行测试\"\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillTask.js\",\n lineNumber: 145,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"li\", {\n children: [\n \"使用光时域反射分析仪对1F-RackA-1C的\",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"font-medium text-yellow-300\",\n children: \"1~4号\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillTask.js\",\n lineNumber: 146,\n columnNumber: 38\n }, this),\n \"光纤链路至Server-Rack-1B的\",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"font-medium text-yellow-300\",\n children: \"1~4号\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillTask.js\",\n lineNumber: 146,\n columnNumber: 115\n }, this),\n \"光纤链路进行测试,\",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"font-medium text-yellow-300\",\n children: \"由于Server-Rack端禁止进入,只能在1F-RackA处进行补偿设置,并进行OTDR测试\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillTask.js\",\n lineNumber: 146,\n columnNumber: 181\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillTask.js\",\n lineNumber: 146,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"li\", {\n children: [\n \"要求办公楼区域被测链路需要按照\",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"code\", {\n className: \"bg-gray-700 px-1.5 py-0.5 rounded text-s text-yellow-300\",\n children: \"ISO/IEC 11801\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillTask.js\",\n lineNumber: 147,\n columnNumber: 30\n }, this),\n \"标准进行测试,光纤一级测试使用带Fibre Link的ISO/IEC标准,并设置2个适配器,2个熔接点;OTDR测试使用带Fibre Link的ISO/IEC标准\"\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillTask.js\",\n lineNumber: 147,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"li\", {\n children: [\n \"如果链路使用了PoE供电技术,需要使用带\",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"code\", {\n className: \"bg-gray-700 px-1.5 py-0.5 rounded text-s text-yellow-300\",\n children: \"+PoE\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillTask.js\",\n lineNumber: 148,\n columnNumber: 35\n }, this),\n \"的ISO/IEC标准\"\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillTask.js\",\n lineNumber: 148,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"li\", {\n children: [\n \"要求被测链路需要符合\",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"code\", {\n className: \"bg-gray-700 px-1.5 py-0.5 rounded text-s text-yellow-300\",\n children: \"T568B\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillTask.js\",\n lineNumber: 149,\n columnNumber: 25\n }, this),\n \"线序\"\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillTask.js\",\n lineNumber: 149,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"li\", {\n children: \"识别目标系统中存在的链路故障,描述并报告至测试文档\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillTask.js\",\n lineNumber: 150,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"li\", {\n children: \"提交测试文档至指定处\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillTask.js\",\n lineNumber: 151,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillTask.js\",\n lineNumber: 137,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillTask.js\",\n lineNumber: 135,\n columnNumber: 7\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)(\"h2\", {\n className: \"text-xl font-semibold text-cyan-300\",\n children: \"扩展任务\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillTask.js\",\n lineNumber: 157,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"ul\", {\n className: \"list-decimal list-inside text-gray-300 space-y-2 pl-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"li\", {\n children: [\n \"使用铜缆认证分析仪结合M12跳线对\",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"font-medium text-yellow-300\",\n children: \"工业机械手臂至PLC控制柜\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillTask.js\",\n lineNumber: 159,\n columnNumber: 32\n }, this),\n \"的2条\",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"font-medium text-yellow-300\",\n children: \"M12链路(编码类型D)\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillTask.js\",\n lineNumber: 159,\n columnNumber: 101\n }, this),\n \"进行测试\"\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillTask.js\",\n lineNumber: 159,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"li\", {\n children: [\n \"使用铜缆认证分析仪结合RJ45跳线对\",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"font-medium text-yellow-300\",\n children: \"PLC控制柜至Data-Rack\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillTask.js\",\n lineNumber: 160,\n columnNumber: 33\n }, this),\n \"的2条\",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"font-medium text-yellow-300\",\n children: \"RJ45链路(两对线)\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillTask.js\",\n lineNumber: 160,\n columnNumber: 105\n }, this),\n \"进行测试\"\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillTask.js\",\n lineNumber: 160,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"li\", {\n children: [\n \"要求被测链路需要通过\",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"code\", {\n className: \"bg-gray-700 px-1.5 py-0.5 rounded text-s text-yellow-300\",\n children: \"Profinet\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillTask.js\",\n lineNumber: 161,\n columnNumber: 25\n }, this),\n \"标准\"\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillTask.js\",\n lineNumber: 161,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"li\", {\n children: \"要求被测链路需要符合标准线序\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillTask.js\",\n lineNumber: 162,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"li\", {\n children: \"识别目标系统中存在的链路故障,描述并报告至测试文档\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillTask.js\",\n lineNumber: 163,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"li\", {\n children: \"提交测试文档至指定处\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillTask.js\",\n lineNumber: 164,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillTask.js\",\n lineNumber: 158,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillTask.js\",\n lineNumber: 156,\n columnNumber: 7\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)(\"h2\", {\n className: \"text-xl font-semibold text-cyan-300\",\n children: \"所需设备、机具、装置和材料\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillTask.js\",\n lineNumber: 171,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-gray-300\",\n children: \"所需的设备、机具、装置和材料由比赛场地提供,详见材料清单。\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillTask.js\",\n lineNumber: 172,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-gray-300\",\n children: \"本模块不使用基础设施列表中未列出的材料和设备。\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillTask.js\",\n lineNumber: 173,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillTask.js\",\n lineNumber: 170,\n columnNumber: 7\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)(\"h2\", {\n className: \"text-xl font-semibold text-cyan-300\",\n children: \"其他要求\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillTask.js\",\n lineNumber: 178,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-yellow-900/20 border border-yellow-500 p-4 rounded-lg\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"ul\", {\n className: \"list-disc list-inside text-gray-300 space-y-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"li\", {\n children: \"选手必须遵守其他文件规定\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillTask.js\",\n lineNumber: 181,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"li\", {\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"strong\", {\n className: \"text-yellow-300\",\n children: \"必须遵守安全操作规范,比赛全程符合健康安全与环保规定\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillTask.js\",\n lineNumber: 182,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillTask.js\",\n lineNumber: 182,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillTask.js\",\n lineNumber: 180,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillTask.js\",\n lineNumber: 179,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillTask.js\",\n lineNumber: 177,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mt-4 border-t border-cyan-700 pt-4\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"mt-2 text-cyan-400 font-medium\",\n children: \"祝你取得优异成绩!\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillTask.js\",\n lineNumber: 189,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillTask.js\",\n lineNumber: 188,\n columnNumber: 7\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillTask.js\",\n lineNumber: 50,\n columnNumber: 5\n }, this);\n}\n\n__webpack_async_result__();\n} catch(e) { __webpack_async_result__(e); } });//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHBhZ2VzLWRpci1ub2RlKS8uL3NyYy9jb21wb25lbnRzL3NjZW5lL1dvcmxkU2tpbGxUYXNrLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBbUQ7QUFDcEI7QUFDa0I7QUFDVDtBQUV6QixTQUFTTTtJQUNwQixNQUFNLEVBQUVDLGNBQWMsRUFBRSxHQUFHSCw4REFBY0E7SUFDekMsTUFBTSxDQUFDSSxhQUFhQyxlQUFlLEdBQUdSLCtDQUFRQSxDQUFDLEVBQUU7SUFDakQsTUFBTSxDQUFDUyxTQUFTQyxXQUFXLEdBQUdWLCtDQUFRQSxDQUFDO0lBQ3ZDLE1BQU0sQ0FBQ1csT0FBT0MsU0FBUyxHQUFHWiwrQ0FBUUEsQ0FBQztJQUVuQ0MsZ0RBQVNBO29DQUFDO1lBQ04sTUFBTVk7K0RBQXFCO29CQUN2QixJQUFJO3dCQUNBSCxXQUFXO3dCQUNYRSxTQUFTO3dCQUNULE1BQU1FLFdBQVcsTUFBTUMsTUFBTVgsaURBQVFBLENBQUNZLFVBQVUsQ0FBQ0MsY0FBYyxDQUFDWDt3QkFDaEUsSUFBSSxDQUFDUSxTQUFTSSxFQUFFLEVBQUU7NEJBQ2QsTUFBTSxJQUFJQyxNQUFNO3dCQUNwQjt3QkFDQSxNQUFNQyxPQUFPLE1BQU1OLFNBQVNPLElBQUk7d0JBQ2hDLE1BQU1DLHVCQUF1QkMsT0FBT0MsT0FBTyxDQUFDSixRQUFRLENBQUMsR0FDaERLLE1BQU07Z0dBQUMsQ0FBQyxDQUFDQyxPQUFPLEdBQ2IsQ0FBQ0EsT0FBT0MsUUFBUSxDQUFDLHFCQUNqQixDQUFDRCxPQUFPQyxRQUFRLENBQUMsbUJBQ2pCLENBQUNELE9BQU9DLFFBQVEsQ0FBQyxzQkFDakIsQ0FBQ0QsT0FBT0MsUUFBUSxDQUFDLHNCQUNqQixDQUFDRCxPQUFPQyxRQUFRLENBQUMsa0JBQ2pCLENBQUNELE9BQU9DLFFBQVEsQ0FBQyx3QkFDakIsQ0FBQ0QsT0FBT0MsUUFBUSxDQUFDLHdCQUNqQixDQUFDRCxPQUFPQyxRQUFRLENBQUM7K0ZBRXBCQyxHQUFHO2dHQUFDLENBQUMsQ0FB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VTs7a0NBQ2IsOERBQUNHO3dCQUFHSCxXQUFVO2tDQUFzQzs7Ozs7O2tDQUNwRCw4REFBQ0M7d0JBQUVELFdBQVU7a0NBQWdCOzs7Ozs7a0NBQzdCLDhEQUFDQzt3QkFBRUQsV0FBVTtrQ0FBZ0I7Ozs7Ozs7Ozs7OzswQkFJL0IsOERBQUNEO2dCQUFJQyxXQUFVOztrQ0FDYiw4REFBQ0c7d0JBQUdILFdBQVU7a0NBQXNDOzs7Ozs7a0NBQ3BELDhEQUFDRDt3QkFBSUMsV0FBVTtrQ0FDYiw0RUFBQ1M7NEJBQUdULFdBQVU7OzhDQUNaLDhEQUFDVTs4Q0FBRzs7Ozs7OzhDQUNKLDhEQUFDQTs4Q0FBRyw0RUFBQ0M7d0NBQU9YLFdBQVU7a0RBQWtCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzBCQU05Qyw4REFBQ0Q7Z0JBQUlDLFdBQVU7MEJBQ2IsNEVBQUNDO29CQUFFRCxXQUFVOzhCQUFpQzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFLdEQiLCJzb3VyY2VzIjpbIi9vcHQvZGV2L2VzdC1kc3gvc3JjL2NvbXBvbmVudHMvc2NlbmUvV29ybGRTa2lsbFRhc2suanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlLCB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCc7XHJcbmltcG9ydCBJbWFnZSBmcm9tICduZXh0L2ltYWdlJztcclxuaW1wb3J0IHVzZURldmljZVN0b3JlIGZyb20gJ0Avc3RvcmUvZGV2aWNlU3RvcmUnO1xyXG5pbXBvcnQgeyBBUElfVVJMUyB9IGZyb20gJ0AvY29uZmlnL2FwaSc7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBXb3JsZFNraWxsVGFzaygpIHtcclxuICAgIGNvbnN0IHsgZmF1bHRTY2VuYXJpb3MgfSA9IHVzZURldmljZVN0b3JlKCk7XHJcbiAgICBjb25zdCBbY29ubmVjdGlvbnMsIHNldENvbm5lY3Rpb25zXSA9IHVzZVN0YXRlKFtdKTtcclxuICAgIGNvbnN0IFtsb2FkaW5nLCBzZXRMb2FkaW5nXSA9IHVzZVN0YXRlKGZhbHNlKTtcclxuICAgIGNvbnN0IFtlcnJvciwgc2V0RXJyb3JdID0gdXNlU3RhdGUobnVsbCk7XHJcblxyXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcclxuICAgICAgICBjb25zdCBmZXRjaENvbm5lY3Rpb25NYXAgPSBhc3luYyAoKSA9PiB7XHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICBzZXRMb2FkaW5nKHRydWUpO1xyXG4gICAgICAgICAgICAgICAgc2V0RXJyb3IobnVsbCk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKEFQSV9VUkxTLkNPTk5FQ1RJT04uTUFQX1dJVEhfU0NFTkUoZmF1bHRTY2VuYXJpb3MpKTtcclxuICAgICAgICAgICAgICAgIGlmICghcmVzcG9uc2Uub2spIHtcclxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ+iOt+WPlui/nuaOpemFjee9ruWksei0pScpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGZvcm1hdHRlZENvbm5lY3Rpb25zID0gT2JqZWN0LmVudHJpZXMoZGF0YSB8fCB7fSlcclxuICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKChbcG9ydElkXSkgPT4gKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAhcG9ydElkLmluY2x1ZGVzKCdtYWluLXBlcm1hbmVudCcpICYmIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAhcG9ydElkLmluY2x1ZGVzKCdtYWluLWNoYW5uZWwnKSAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAhcG9ydElkLmluY2x1ZGVzKCdtYWluLWNmcC1zbS1vdXQnKSAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAhcG9ydElkLmluY2x1ZGVzKCdtYWluLWNmcC1tbS1vdXQnKSAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAhcG9ydElkLmluY2x1ZGVzKCdtYWluLWNmcC1pbicpICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICFwb3J0SWQuaW5jbHVkZXMoJ3JlbW90ZS1jZnAtc20tb3V0JykgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgIXBvcnRJZC5pbmNsdWRlcygncmVtb3RlLWNmcC1tbS1vdXQnKSAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAhcG9ydElkLmluY2x1ZGVzKCdyZW1vdGUtY2ZwLWluJylcclxuICAgICAgICAgICAgICAgICAgICApKVxyXG4gICAgICAgICAgICAgICAgICAgIC5tYXAoKFtzb3VyY2UsIGNvbm5lY3Rpb25dKSA9PiAoe1xyXG4gICAgICAgICAgICAgICAgICAgIHJvb206IHNvdXJjZSxcclxuICAgICAgICAgICAgICAgICAgICByYWNrOiBjb25uZWN0aW9uLmNvbm5lY3RlZFRvXHJcbiAgICAgICAgICAgICAgICB9KSk7XHJcbiAgICAgICAgICAgICAgICBzZXRDb25uZWN0aW9ucyhmb3JtYXR0ZWRDb25uZWN0aW9ucyk7XHJcbiAgICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xyXG4gICAgICAgICAgICAgICAgc2V0RXJyb3IoZXJyLm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcign6I635Y+W6L+e5o6l6YWN572u6ZSZ6K+vOicsIGVycik7XHJcbiAgICAgICAgICAgIH0gZmluYWxseSB7XHJcbiAgICAgICAgICAgICAgICBzZXRMb2FkaW5nKGZhbHNlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIGZldGNoQ29ubmVjdGlvbk1hcCgpO1xyXG4gICAgfSwgW2ZhdWx0U2NlbmFyaW9zPy5jdXJyZW50U2NlbmVdKTtcclxuXHJcbiAgcmV0dXJuIChcclxuICAgIDxkaXYgY2xhc3NOYW1lPVwiYmctZ3JhZGllbnQtdG8tYnIgZnJvbS1bIzFFMjkzQl0gdG8tWyMwRjE3MkFdIHAtNiByb3VuZGVkLWxnIHctW2Z1bGxdIGgtWzk1dmhdIG92ZXJmbG93LXktYXV0byBmbGV4IGZsZXgtY29sIGdhcC02IHNoYWRvdy0yeGwgYm9yZGVyIGJvcmRlci1bIzMzNDE1NV0gYW5pbWF0ZS1mYWRlSW4gc2Nyb2xsYmFyLXRoaW4gc2Nyb2xsYmFyLXRodW1iLXNsYXRlLTYwMCBzY3JvbGxiYXItdHJhY2stc2xhdGUtODAwXCI+XHJcblxyXG4gICAgICB7Lyog5Lu75Yqh5qCH6aKYICovfVxyXG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImJvcmRlci1iIGJvcmRlci1jeWFuLTcwMCBwYi0zIG1iLTNcIj5cclxuICAgICAgICA8cCBjbGFzc05hbWU9XCJ0ZXh0LXNtIGZvbnQtc2VtaWJvbGQgdGV4dC1jeWFuLTQwMCB1cHBlcmNhc2UgdHJhY2tpbmctd2lkZXJcIj7otZvpopg8L3A+XHJcbiAgICAgICAgPGgxIGNsYXNzTmFtZT1cInRleHQtMnhsIG1kOnRleHQtM3hsIGZvbnQtYm9sZCB0ZXh0LWdyYXktMTAwIG10LTFcIj7lt6XkuJrlm63ljLrnvZHnu5zln7rnoYDorr7mlr3pqozmlLbmtYvor5U8L2gxPlxyXG4gICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQteHMgdGV4dC1ncmF5LTQwMFwiPuS7u+WKoee8luWPtzogU2tpbGwtMjAyNTwvcD5cclxuICAgICAgICA8cCBjbGFzc05hbWU9XCJ0ZXh0LXhzIHRleHQtZ3JheS00MDBcIj7otZvpobnvvJrkv6Hmga/nvZHnu5zluIPnur88L3A+XHJcbiAgICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC14cyB0ZXh0LWdyYXktNDAwXCI+5q+U6LWb5pe26Ze077yaNjDliIbpkp88L3A+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgey8qIOWvvOiogCAqL31cclxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJzcGFjZS15LTNcIj5cclxuICAgICAgICA8aDIgY2xhc3NOYW1lPVwidGV4dC14bCBmb250LXNlbWlib2xkIHRleHQtY3lhbi0zMDBcIj7lr7zoqIA8L2gyPlxyXG4gICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQtZ3JheS0zMDAgbGVhZGluZy1yZWxheGVkXCI+XHJcbiAgICAgICAgICDpuYjpuZXplYfmlrDlu7rnmoTnjrDku6PljJblt6XkuJrlm63ljLrlt7Lnq6Plt6XvvIznjrDpnIDlr7nlm63ljLrkv6Hmga/nvZHnu5zln7rnoYDorr7mlr3ov5vooYzpqozmlLbmtYvor5XjgILkvaDkvZzkuLrnvZHnu5zmtYvor5Xlt6XnqIvluIjvvIzkvaDnmoTmoLjlv4Pku7vliqHmmK/lrozmiJA8c3BhbiBjbGFzc05hbWU9XCJmb250LW1lZGl1bSB0ZXh0LXllbGxvdy0zMDBcIj7lip7lhazljLrln5/nvZHnu5zpk77ot6/nmoTmoIflh4bljJbmtYvor5U8L3NwYW4+44CC5Zyo5rWL6K+V6L+H56iL5Lit77yM6L2m6Ze05Yqe5YWs5a6k5o+Q5Ye66aKd5aSW6K+35rGC77ya6Iul5pe26Ze05YWB6K6477yM5Y2P5Yqp5rWL6K+V6L2m6Ze05Yy65Z+f55qEPHNwYW4gY2xhc3NOYW1lPVwiZm9udC1tZWRpdW0gdGV4dC15ZWxsb3ctMzAwXCI+NOadoeWFs+mUruW3peS4mumTvui3rzwvc3Bhbj7jgIJcclxuICAgICAgICA8L3A+XHJcblxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIHsvKiDnvZHnu5zmi5PmiZHkuI7ns7vnu5/lm74gKi99XHJcbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwic3BhY2UteS0zXCI+XHJcbiAgICAgICAgPGgyIGNsYXNzTmFtZT1cInRleHQteGwgZm9udC1zZW1pYm9sZCB0ZXh0LWN5YW4tMzAwXCI+572R57uc5ouT5omR5LiO57O757uf5Zu+PC9oMj5cclxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaC0xMDAgcmVsYXRpdmVcIj5cclxuICAgICAgICAgIDxJbWFnZSBzcmM9XCIvQ29tcGV0aXRpb24ucG5nXCIgYWx0PVwiY29tcGV0aXRpb25cIiBmaWxsIGNsYXNzTmFtZT1cIm9iamVjdC1jb250YWluXCIvPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxoMiBjbGFzc05hbWU9XCJ0ZXh0LXhsIGZvbnQtc2VtaWJvbGQgdGV4dC1jeWFuLTMwMFwiPuWFiee6pOi/nuaOpeWbvjwvaDI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImgtMTAwIHJlbGF0aXZlXCI+XHJcbiAgICAgICAgICA8SW1hZ2Ugc3JjPVwiL1NraWxsRmliZXJDb25uZWN0TWFwLnBuZ1wiIGFsdD1cIlNraWxsRmliZXJDb25uZWN0TWFwXCIgZmlsbCBjbGFzc05hbWU9XCJvYmplY3QtY29udGFpblwiLz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJnLWdyYXktODAwIHAtNCByb3VuZGVkLWxnXCI+XHJcbiAgICAgICAgICA8aDMgY2xhc3NOYW1lPVwidGV4dC1sZyBmb250LXNlbWlib2xkIHRleHQtY3lhbi00MDAgbWItM1wiPuaVsOaNruacuuaIv++8iDFG77yJPC9oMz5cclxuICAgICAgICAgIDx1bCBjbGFzc05hbWU9XCJsaXN0LWRpc2MgbGlzdC1pbnNpZGUgdGV4dC1ncmF5LTMwMCBzcGFjZS15LTIgcGwtNFwiPlxyXG4gICAgICAgICAgICA8bGk+PHN0cm9uZyBjbGFzc05hbWU9XCJ0ZXh0LXllbGxvdy0zMDBcIj7phY3nur/mnrYxQe+8mjwvc3Ryb25nPumAmui/h0NhdDYgRi9VVFDnur/nvIbov57mjqXoh7NSb29tMeOAgVJvb20z44CBUm9vbTQ8L2xpPlxyXG4gICAgICAgICAgICA8bGk+PHN0cm9uZyBjbGFzc05hbWU9XCJ0ZXh0LXllbGxvdy0zMDBcIj7phY3nur/mnrYxQu+8mjwvc3Ryb25nPumAmui/h09TMuWNleaooeWFiee6pOi/nuaOpeiHszJG5byx55S16Ze06YWN57q/5p62MUE8L2xpPlxyXG4gICAgICAgICAgICA8bGk+PHN0cm9uZyBjbGFzc05hbWU9XCJ0ZXh0LXllbGxvdy0zMDBcIj7phY3nur/mnrYxQ++8mjwvc3Ryb25nPumAmui/h09TMuWNleaooeWupOWkluWFiee6pOi/nuaOpeiHs+i9pumXtOWMuuWfnzwvbGk+XHJcbiAgICAgICAgICA8L3VsPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJnLWdyYXktODAwIHAtNCByb3VuZGVkLWxnXCI+XHJcbiAgICAgICAgICA8aDMgY2xhc3NOYW1lPVwidGV4dC1sZyBmb250LXNlbWlib2xkIHRleHQtY3lhbi00MDAgbWItM1wiPui9pumXtOWMuuWfn++8iOaJqeWxlea1i+ivleebruagh++8iTwvaDM+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtZ3JheS0zMDBcIj5cclxuICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwibWItMlwiPjxzdHJvbmcgY2xhc3NOYW1lPVwidGV4dC15ZWxsb3ctMzAwXCI+5bel5Lia6K6+5aSH6ZO+6Lev77yaPC9zdHJvbmc+PC9wPlxyXG4gICAgICAgICAgICA8dWwgY2xhc3NOYW1lPVwibGlzdC1kaXNjIGxpc3QtaW5zaWRlIHNwYWNlLXktMSBwbC00XCI+XHJcbiAgICAgICAgICAgICAgPGxpPjLlj7Dlt6XkuJrmnLrlmajkurpSLU0tQSDihpIg5bel5LiaUExD5o6n5Yi25p+cUExDLVJhY2stMUHvvIhDYXQ2IEYvVVRQ77yJPC9saT5cclxuICAgICAgICAgICAgICA8bGk+5bel5LiaUExD5o6n5Yi25p+cUExDLVJhY2stMUIg4oaSICDnlJ/kuqfmlbDmja7mnLrmn5xEYXRhLVJhY2stMUHvvIhDYXQ2IEYvVVRQ77yJPC9saT5cclxuICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIHsvKiDpgJrnlKjor7TmmI4gKi99XHJcbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwic3BhY2UteS0zXCI+XHJcbiAgICAgICAgPGgyIGNsYXNzTmFtZT1cInRleHQteGwgZm9udC1zZW1pYm9sZCB0ZXh0LWN5YW4tMzAwXCI+6YCa55So6K+05piOPC9oMj5cclxuICAgICAgICA8dWwgY2xhc3NOYW1lPVwibGlzdC1kZWNpbWFsIGxpc3QtaW5zaWRlIHRleHQtZ3JheS0zMDAgc3BhY2UteS0yIHBsLTRcIj5cclxuICAgICAgICAgIDxsaT7kuLrkuobmm7Top4TojIPnmoTnrqHnkIbmtYvor5Xmlofku7bvvIzor7fliJvlu7rpobnnm67vvIzlubblkb3lkI3kuLogPGNvZGUgY2xhc3NOYW1lPVwiYmctZ3JheS03MDAgcHgtMS41IHB5LTAuNSByb3VuZGVkIHRleHQtcyB0ZXh0LXllbGxvdy0zMDBcIj5Ta2lsbC0yMDI1PC9jb2RlPjwvbGk+XHJcbiAgICAgICAgICA8bGk+6KaB5rGC5L+d5a2Y5q+P5p2h5rWL6K+V5pWw5o2u5Zyo5Luq6KGo5YaF77yM5bm25ZG95ZCN5Li6XCLkuLvmnLrov57mjqXnmoTnq6/lj6PlkI3np7At6L+c56uv6L+e5o6l55qE56uv5Y+j5ZCN56ewXCLvvIzmiJZcIuS4u+acuui/nuaOpeeahOerr+WPo+WQjeensFwiXHJcbiAgICAgICAgICAgIDx1bCBjbGFzc05hbWU9XCJsaXN0LWRpc2MgbWwtNiBtdC0yXCI+XHJcbiAgICAgICAgICAgICAgPGxpIGNsYXNzTmFtZT1cIm1iLTJcIj7kvovlpoLkuKTlpLTov57mjqXmtYvor5Xku6rvvJpcclxuICAgICAgICAgICAgICAgIDx1bCBjbGFzc05hbWU9XCJsaXN0LVtjaXJjbGVdIG1sLTYgbXQtMSBzcGFjZS15LTFcIj5cclxuICAgICAgICAgICAgICAgICAgPGxpPjxjb2RlIGNsYXNzTmFtZT1cImJnLWdyYXktNzAwIHB4LTEuNSBweS0wLjUgcm91bmRlZCB0ZXh0LXMgdGV4dC15ZWxsb3ctMzAwXCI+MUYtUmFja0EtMUEtMS1Sb29tMS1UTy0xPC9jb2RlPuaIljxjb2RlIGNsYXNzTmFtZT1cImJnLWdyYXktNzAwIHB4LTEuNSBweS0wLjUgcm91bmRlZCB0ZXh0LXMgdGV4dC15ZWxsb3ctMzAwXCI+Um9vbTEtVE8tMi0xRi1SYWNrQS0xQS0xMjwvY29kZT48L2xpPlxyXG4gICAgICAgICAgICAgICAgICA8bGk+PGNvZGUgY2xhc3NOYW1lPVwiYmctZ3JheS03MDAgcHgtMS41IHB5LTAuNSByb3VuZGVkIHRleHQtcyB0ZXh0LXllbGxvdy0zMDBcIj4xRi1SYWNrQS0xQS0zLVJvb202LUNBTTwvY29kZT48L2xpPlxyXG4gICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgIDxsaT7kvovlpoLljZXnq6/ov57mjqXmtYvor5Xku6rvvJpcclxuICAgICAgICAgICAgICAgIDx1bCBjbGFzc05hbWU9XCJsaXN0LVtjaXJjbGVdIG1sLTYgbXQtMVwiPlxyXG4gICAgICAgICAgICAgICAgICA8bGk+PGNvZGUgY2xhc3NOYW1lPVwiYmctZ3JheS03MDAgcHgtMS41IHB5LTAuNSByb3VuZGVkIHRleHQtcyB0ZXh0LXllbGxvdy0zMDBcIj4xRi1SYWNrQS0xQy04PC9jb2RlPjwvbGk+XHJcbiAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgPGxpPlxyXG4gICAgICAgICAgICDmtYvor5Xov4fnqIvpnIDopoHnrKblkIjmtYvor5Xop4TojIPopoHmsYLvvIzku6Xkv53or4HmtYvor5XmlbDmja7mnInmlYhcclxuICAgICAgICAgICAgPHVsIGNsYXNzTmFtZT1cImxpc3QtZGlzYyBsaXN0LWluc2lkZSAgc3BhY2UteS0xIG1sLTQgbXQtMVwiPlxyXG4gICAgICAgICAgICAgIDxsaT7pnIDopoHov5vooYzlv4XopoHnmoTln7rlh4borr7nva7vvIzlj4Lnhaforr7nva7vvIzooaXlgb/orr7nva48L2xpPlxyXG4gICAgICAgICAgICAgIDxsaT7lhYnnuqTooqvmtYvpk77ot6/jgIHmtYvor5Xot7Pnur/jgIHmtYvor5Xku6rmjqXlj6PpnIDopoHov5vooYznq6/pnaLmuIXmtIE8L2xpPlxyXG4gICAgICAgICAgICAgIDxsaT7mtYvor5Xov4fnqIvkuK3vvIzlhYnmupDkuI3lhYHorrjmlq3lvIA8L2xpPlxyXG4gICAgICAgICAgICAgIDxsaT7nur/nvIbnsbvlnovlkozmnoHpmZDlgLzmraPnoa48L2xpPlxyXG4gICAgICAgICAgICAgIDxsaT7mj5LluqfnsbvlnovvvIzov57mjqXlmajmlbDph4/vvIznhpTmjqXngrnmlbDph4/moLnmja7lnLrmma/opoHmsYLov5vooYzmraPnoa7orr7nva48L2xpPlxyXG4gICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgPC9saT5cclxuICAgICAgICA8L3VsPlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIHsvKiDln7rmnKzku7vliqEgKi99XHJcbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwic3BhY2UteS0zXCI+XHJcbiAgICAgICAgPGgyIGNsYXNzTmFtZT1cInRleHQteGwgZm9udC1zZW1pYm9sZCB0ZXh0LWN5YW4tMzAwXCI+5Z+65pys5Lu75YqhPC9oMj5cclxuICAgICAgICA8dWwgY2xhc3NOYW1lPVwibGlzdC1kZWNpbWFsIGxpc3QtaW5zaWRlIHRleHQtZ3JheS0zMDAgc3BhY2UteS0yIHBsLTRcIj5cclxuICAgICAgICAgIDxsaT7kvb/nlKjpk5znvIborqTor4HliIbmnpDku6rlr7k8c3BhbiBjbGFzc05hbWU9XCJmb250LW1lZGl1bSB0ZXh0LXllbGxvdy0zMDBcIj7lhajpg6jmiL/pl7TnmoQ15p2h6ZOc57yG6ZO+6LevPC9zcGFuPuWIsDFGLVJhY2tBLTFB6L+b6KGM5rWL6K+V77yaXHJcbiAgICAgICAgICAgIDx1bCBjbGFzc05hbWU9XCJsaXN0LWRpc2MgbWwtNiBtdC0yIHNwYWNlLXktMlwiPlxyXG4gICAgICAgICAgICAgIDxsaT5Sb29tMeOAgVJvb20z6ZO+6Lev5Yiw6YWN57q/5p625Li65rC45LmF6ZO+6LevPC9saT5cclxuICAgICAgICAgICAgICA8bGk+Um9vbTTnvZHnur/ov57mjqXlpLTvvIjov57mjqXliLDmkYTlg4/lpLTvvInliLDphY3nur/mnrbkuLrmqKHlnZfljJbmj5LlpLTpk77ot6/vvIzlubbph4fnlKhQb0XkvpvnlLXmioDmnK88L2xpPlxyXG4gICAgICAgICAgICAgIDxsaT7phY3nur/mnrbngrnkvY3moIforrDlt7LmqKHns4rkuI3lh4bnoa7vvIzpnIDopoHnu5PlkIjlr7vnur/lrprkvY3lubbmtYvor5U8L2xpPlxyXG4gICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgPC9saT5cclxuICAgICAgICAgIDxsaT7kvb/nlKjlhYnnuqTmjZ/ogJfliIbmnpDku6rlr7kxRi1SYWNrQS0xQueahDxzcGFuIGNsYXNzTmFtZT1cImZvbnQtbWVkaXVtIHRleHQteWVsbG93LTMwMFwiPjF+NuWPtzwvc3Bhbj7lhYnnuqTpk77ot6/oh7MyRi1SYWNrQS0xQeeahDxzcGFuIGNsYXNzTmFtZT1cImZvbnQtbWVkaXVtIHRleHQteWVsbG93LTMwMFwiPjF+NuWPtzwvc3Bhbj7lhYnnuqTpk77ot6/ov5vooYzmtYvor5U8L2xpPlxyXG4gICAgICAgICAgPGxpPuS9v+eUqOWFieaXtuWfn+WPjeWwhOWIhuaekOS7quWvuTFGLVJhY2tBLTFD55qEPHNwYW4gY2xhc3NOYW1lPVwiZm9udC1tZWRpdW0gdGV4dC15ZWxsb3ctMzAwXCI+MX405Y+3PC9zcGFuPuWFiee6pOmTvui3r+iHs1NlcnZlci1SYWNrLTFC55qEPHNwYW4gY2xhc3NOYW1lPVwiZm9udC1tZWRpdW0gdGV4dC15ZWxsb3ctMzAwXCI+MX405Y+3PC9zcGFuPuWFiee6pOmTvui3r+i/m+ihjOa1i+ivle+8jDxzcGFuIGNsYXNzTmFtZT1cImZvbnQtbWVkaXVtIHRleHQteWVsbG93LTMwMFwiPueUseS6jlNlcnZlci1SYWNr56uv56aB5q2i6L+b5YWl77yM5Y+q6IO95ZyoMUYtUmFja0HlpITov5vooYzooaXlgb/orr7nva7vvIzlubbov5vooYxPVERS5rWL6K+VPC9zcGFuPjwvbGk+XHJcbiAgICAgICAgICA8bGk+6KaB5rGC5Yqe5YWs5qW85Yy65Z+f6KKr5rWL6ZO+6Lev6ZyA6KaB5oyJ54WnPGNvZGUgY2xhc3NOYW1lPVwiYmctZ3JheS03MDAgcHgtMS41IHB5LTAuNSByb3VuZGVkIHRleHQtcyB0ZXh0LXllbGxvdy0zMDBcIj5JU08vSUVDIDExODAxPC9jb2RlPuagh+WHhui/m+ihjOa1i+ivle+8jOWFiee6pOS4gOe6p+a1i+ivleS9v+eUqOW4pkZpYnJlIExpbmvnmoRJU08vSUVD5qCH5YeG77yM5bm26K6+572uMuS4qumAgumFjeWZqO+8jDLkuKrnhpTmjqXngrnvvJtPVERS5rWL6K+V5L2/55So5bimRmlicmUgTGlua+eahElTTy9JRUPmoIflh4Y8L2xpPlxyXG4gICAgICAgICAgPGxpPuWmguaenOmTvui3r+S9v+eUqOS6hlBvReS+m+eUteaKgOacr++8jOmcgOimgeS9v+eUqOW4pjxjb2RlIGNsYXNzTmFtZT1cImJnLWdyYXktNzAwIHB4LTEuNSBweS0wLjUgcm91bmRlZCB0ZXh0LXMgdGV4dC15ZWxsb3ctMzAwXCI+K1BvRTwvY29kZT7nmoRJU08vSUVD5qCH5YeGPC9saT5cclxuICAgICAgICAgIDxsaT7opoHmsYLooqvmtYvpk77ot6/pnIDopoHnrKblkIg8Y29kZSBjbGFzc05hbWU9XCJiZy1ncmF5LTcwMCBweC0xLjUgcHktMC41IHJvdW5kZWQgdGV4dC1zIHRleHQteWVsbG93LTMwMFwiPlQ1NjhCPC9jb2RlPue6v+W6jzwvbGk+XHJcbiAgICAgICAgICA8bGk+6K+G5Yir55uu5qCH57O757uf5Lit5a2Y5Zyo55qE6ZO+6Lev5pWF6Zqc77yM5o+P6L+w5bm25oql5ZGK6Iez5rWL6K+V5paH5qGjPC9saT5cclxuICAgICAgICAgIDxsaT7mj5DkuqTmtYvor5XmlofmoaPoh7PmjIflrprlpIQ8L2xpPlxyXG4gICAgICAgIDwvdWw+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgey8qIOaJqeWxleS7u+WKoSAqL31cclxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJzcGFjZS15LTNcIj5cclxuICAgICAgICA8aDIgY2xhc3NOYW1lPVwidGV4dC14bCBmb250LXNlbWlib2xkIHRleHQtY3lhbi0zMDBcIj7mianlsZXku7vliqE8L2gyPlxyXG4gICAgICAgIDx1bCBjbGFzc05hbWU9XCJsaXN0LWRlY2ltYWwgbGlzdC1pbnNpZGUgdGV4dC1ncmF5LTMwMCBzcGFjZS15LTIgcGwtNFwiPlxyXG4gICAgICAgICAgPGxpPuS9v+eUqOmTnOe8huiupOivgeWIhuaekOS7que7k+WQiE0xMui3s+e6v+WvuTxzcGFuIGNsYXNzTmFtZT1cImZvbnQtbWVkaXVtIHRleHQteWVsbG93LTMwMFwiPuW3peS4muacuuaisOaJi+iHguiHs1BMQ+aOp+WItuafnDwvc3Bhbj7nmoQy5p2hPHNwYW4gY2xhc3NOYW1lPVwiZm9udC1tZWRpdW0gdGV4dC15ZWxsb3ctMzAwXCI+TTEy6ZO+6LevKOe8lueggeexu+Wei0QpPC9zcGFuPui/m+ihjOa1i+ivlTwvbGk+XHJcbiAgICAgICAgICA8bGk+5L2/55So6ZOc57yG6K6k6K+B5YiG5p6Q5Luq57uT5ZCIUko0Nei3s+e6v+WvuTxzcGFuIGNsYXNzTmFtZT1cImZvbnQtbWVkaXVtIHRleHQteWVsbG93LTMwMFwiPlBMQ+aOp+WItuafnOiHs0RhdGEtUmFjazwvc3Bhbj7nmoQy5p2hPHNwYW4gY2xhc3NOYW1lPVwiZm9udC1tZWRpdW0gdGV4dC15ZWxsb3ctMzAwXCI+Uko0NemTvui3ryjkuKTlr7nnur8pPC9zcGFuPui/m+ihjOa1i+ivlTwvbGk+XHJcbiAgICAgICAgICA8bGk+6KaB5rGC6KKr5rWL6ZO+6Lev6ZyA6KaB6YCa6L+HPGNvZGUgY2xhc3NOYW1lPVwiYmctZ3JheS03MDAgcHgtMS41IHB5LTAuNSByb3VuZGVkIHRleHQtcyB0ZXh0LXllbGxvdy0zMDBcIj5Qcm9maW5ldDwvY29kZT7moIflh4Y8L2xpPlxyXG4gICAgICAgICAgPGxpPuimgeaxguiiq+a1i+mTvui3r+mcgOimgeespuWQiOagh+WHhue6v+W6jzwvbGk+XHJcbiAgICAgICAgICA8bGk+6K+G5Yir55uu5qCH57O757uf5Lit5a2Y5Zyo55qE6ZO+6Lev5pWF6Zqc77yM5o+P6L+w5bm25oql5ZGK6Iez5rWL6K+V5paH5qGjPC9saT5cclxuICAgICAgICAgIDxsaT7mj5DkuqTmtYvor5XmlofmoaPoh7PmjIflrprlpIQ8L2xpPlxyXG4gICAgICAgIDwvdWw+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICBcclxuICAgICAgey8qIOaJgOmcgOiuvuWkhyAqL31cclxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJzcGFjZS15LTNcIj5cclxuICAgICAgICA8aDIgY2xhc3NOYW1lPVwidGV4dC14bCBmb250LXNlbWlib2xkIHRleHQtY3lhbi0zMDBcIj7miYDpnIDorr7lpIfjgIHmnLrlhbfjgIHoo4Xnva7lkozmnZDmlpk8L2gyPlxyXG4gICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQtZ3JheS0zMDBcIj7miYDpnIDnmoTorr7lpIfjgIHmnLrlhbfjgIHoo4Xnva7lkozmnZDmlpnnlLHmr5TotZvlnLrlnLDmj5DkvpvvvIzor6bop4HmnZDmlpnmuIXljZXjgII8L3A+XHJcbiAgICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC1ncmF5LTMwMFwiPuacrOaooeWdl+S4jeS9v+eUqOWfuuehgOiuvuaWveWIl+ihqOS4reacquWIl+WHuueahOadkOaWmeWSjOiuvuWkh+OAgjwvcD5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICB7Lyog5a6J5YWo6KaB5rGCICovfVxyXG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInNwYWNlLXktM1wiPlxyXG4gICAgICAgIDxoMiBjbGFzc05hbWU9XCJ0ZXh0LXhsIGZvbnQtc2VtaWJvbGQgdGV4dC1jeWFuLTMwMFwiPuWFtuS7luimgeaxgjwvaDI+XHJcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJiZy15ZWxsb3ctOTAwLzIwIGJvcmRlciBib3JkZXIteWVsbG93LTUwMCBwLTQgcm91bmRlZC1sZ1wiPlxyXG4gICAgICAgICAgPHVsIGNsYXNzTmFtZT1cImxpc3QtZGlzYyBsaXN0LWluc2lkZSB0ZXh0LWdyYXktMzAwIHNwYWNlLXktMlwiPlxyXG4gICAgICAgICAgICA8bGk+6YCJ5omL5b+F6aG76YG15a6I5YW25LuW5paH5Lu26KeE5a6aPC9saT5cclxuICAgICAgICAgICAgPGxpPjxzdHJvbmcgY2xhc3NOYW1lPVwidGV4dC15ZWxsb3ctMzAwXCI+5b+F6aG76YG15a6I5a6J5YWo5pON5L2c6KeE6IyD77yM5q+U6LWb5YWo56iL56ym5ZCI5YGl5bq35a6J5YWo5LiO546v5L+d6KeE5a6aPC9zdHJvbmc+PC9saT5cclxuICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgey8qIOernui1m+aPkOekuiAqL31cclxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJtdC00IGJvcmRlci10IGJvcmRlci1jeWFuLTcwMCBwdC00XCI+XHJcbiAgICAgICAgPHAgY2xhc3NOYW1lPVwibXQtMiB0ZXh0LWN5YW4tNDAwIGZvbnQtbWVkaXVtXCI+56Wd5L2g5Y+W5b6X5LyY5byC5oiQ57up77yBPC9wPlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICA8L2Rpdj5cclxuICApO1xyXG59Il0sIm5hbWVzIjpbIlJlYWN0IiwidXNlU3RhdGUiLCJ1c2VFZmZlY3QiLCJJbWFnZSIsInVzZURldmljZVN0b3JlIiwiQVBJX1VSTFMiLCJXb3JsZFNraWxsVGFzayIsImZhdWx0U2NlbmFyaW9zIiwiY29ubmVjdGlvbnMiLCJzZXRDb25uZWN0aW9ucyIsImxvYWRpbmciLCJzZXRMb2FkaW5nIiwiZXJyb3IiLCJzZXRFcnJvciIsImZldGNoQ29ubmVjdGlvbk1hcCIsInJlc3BvbnNlIiwiZmV0Y2giLCJDT05ORUNUSU9OIiwiTUFQX1dJVEhfU0NFTkUiLCJvayIsIkVycm9yIiwiZGF0YSIsImpzb24iLCJmb3JtYXR0ZWRDb25uZWN0aW9ucyIsIk9iamVjdCIsImVudHJpZXMiLCJmaWx0ZXIiLCJwb3J0SWQiLCJpbmNsdWRlcyIsIm1hcCIsInNvdXJjZSIsImNvbm5lY3Rpb24iLCJyb29tIiwicmFjayIsImNvbm5lY3RlZFRvIiwiZXJyIiwibWVzc2FnZSIsImNvbnNvbGUiLCJjdXJyZW50U2NlbmUiLCJkaXYiLCJjbGFzc05hbWUiLCJwIiwiaDEiLCJoMiIsInNwYW4iLCJzcmMiLCJhbHQiLCJmaWxsIiwiaDMiLCJ1bCIsImxpIiwic3Ryb25nIiwiY29kZSJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(pages-dir-node)/./src/components/scene/WorldSkillTask.js\n"); /***/ }), /***/ "(pages-dir-node)/./src/components/scene/WorldSkillWORKSHOP.js": /*!****************************************************!*\ !*** ./src/components/scene/WorldSkillWORKSHOP.js ***! \****************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; eval("__webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ WorldSkillWORKSHOP)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"react/jsx-dev-runtime\");\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 */ \"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _store_deviceStore__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/store/deviceStore */ \"(pages-dir-node)/./src/store/deviceStore.js\");\n/* harmony import */ var next_image__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! next/image */ \"(pages-dir-node)/./node_modules/next/image.js\");\n/* harmony import */ var next_image__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(next_image__WEBPACK_IMPORTED_MODULE_3__);\nvar __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_store_deviceStore__WEBPACK_IMPORTED_MODULE_2__]);\n_store_deviceStore__WEBPACK_IMPORTED_MODULE_2__ = (__webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__)[0];\n\n\n\n\nfunction WorldSkillWORKSHOP({ onPortClick = ()=>{}, onPortHover = ()=>{}, selectedPort = null, targetPort = null, connections = {} }) {\n // 获取端口的连接状态样式\n const getPortStyle = (portId)=>{\n if (selectedPort === portId) {\n return 'bg-blue-300';\n }\n if (targetPort === portId) {\n return 'bg-green-300';\n }\n if (connections && connections[portId]) {\n return 'bg-[#00ff7f]';\n }\n return 'bg-gray-300';\n };\n const { faultScenarios, seatUUID, seatNumber, updateWorldSkillScenarios } = (0,_store_deviceStore__WEBPACK_IMPORTED_MODULE_2__[\"default\"])();\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-full w-full bg-black text-white flex z-index-100\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-[2%] p-1 flex flex-col\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n className: \"bg-gradient-to-r from-blue-500 to-blue-700 hover:from-blue-600 hover:to-blue-800 text-white font-bold py-3 px-2 rounded-lg shadow-lg transform hover:scale-105 transition-all duration-200 text-sm flex flex-col items-center justify-center h-full min-h-[120px] border border-blue-400 hover:border-blue-300\",\n onClick: ()=>updateWorldSkillScenarios('OFFICE'),\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs leading-tight text-center\",\n children: [\n \"前往\",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"br\", {}, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillWORKSHOP.js\",\n lineNumber: 41,\n columnNumber: 15\n }, this),\n \"办公楼\"\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillWORKSHOP.js\",\n lineNumber: 40,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillWORKSHOP.js\",\n lineNumber: 36,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillWORKSHOP.js\",\n lineNumber: 35,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-[12%] p-1 flex flex-col\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 flex flex-col\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-center mb-1\",\n children: \"R-M-A-1\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillWORKSHOP.js\",\n lineNumber: 50,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"relative flex-1 bg-gray-900 flex items-center justify-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `absolute top-[55%] left-[66%] w-6 h-6 z-100`,\n jstype: \"testport-arm\",\n id: \"RMA-1\",\n onClick: ()=>onPortClick('RMA-1'),\n onMouseEnter: ()=>onPortHover('RMA-1')\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillWORKSHOP.js\",\n lineNumber: 52,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `w-full h-full bg-[url('/MechanicalArm.png')] bg-contain bg-no-repeat bg-center`\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillWORKSHOP.js\",\n lineNumber: 61,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillWORKSHOP.js\",\n lineNumber: 51,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillWORKSHOP.js\",\n lineNumber: 48,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillWORKSHOP.js\",\n lineNumber: 47,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-[12%] p-1 flex flex-col\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 flex flex-col\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-center mb-1\",\n children: \"R-M-A-2\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillWORKSHOP.js\",\n lineNumber: 72,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"relative flex-1 bg-gray-900 flex items-center justify-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `absolute top-[55%] left-[66%] w-6 h-6 z-100`,\n jstype: \"testport-arm\",\n id: \"RMA-2\",\n onClick: ()=>onPortClick('RMA-2'),\n onMouseEnter: ()=>onPortHover('RMA-2')\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillWORKSHOP.js\",\n lineNumber: 74,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `w-full h-full bg-[url('/MechanicalArm.png')] bg-contain bg-no-repeat bg-center`\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillWORKSHOP.js\",\n lineNumber: 83,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillWORKSHOP.js\",\n lineNumber: 73,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillWORKSHOP.js\",\n lineNumber: 70,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillWORKSHOP.js\",\n lineNumber: 68,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-[30%] p-1 flex flex-col\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-center mb-1\",\n children: \"PLC-Rack\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillWORKSHOP.js\",\n lineNumber: 90,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[calc(100%-1.5rem)] rounded-md p-2 flex flex-col space-y-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-col h-1/2 bg-gray-800 rounded-md p-2 relative\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute top-0 left-0 bg-white w-3 h-3 rounded-full\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillWORKSHOP.js\",\n lineNumber: 94,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute top-0 right-0 bg-white w-3 h-3 rounded-full\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillWORKSHOP.js\",\n lineNumber: 95,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute bottom-0 left-0 bg-white w-3 h-3 rounded-full\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillWORKSHOP.js\",\n lineNumber: 96,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute bottom-0 right-0 bg-white w-3 h-3 rounded-full\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillWORKSHOP.js\",\n lineNumber: 97,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 flex items-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-xs mr-4\",\n children: \"1A\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillWORKSHOP.js\",\n lineNumber: 99,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 flex items-center justify-center space-x-8\",\n children: [\n ...Array(2)\n ].map((_, i)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-col items-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `w-10 h-10 transition-colors flex items-center justify-center`,\n jstype: \"testport-m12-d\",\n id: `PLC-Rack-1A-${i + 1}`,\n onClick: ()=>onPortClick(`PLC-Rack-1A-${i + 1}`),\n onMouseEnter: ()=>onPortHover(`PLC-Rack-1A-${i + 1}`),\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `w-8 h-8 bg-[url('/m12-d.png')] bg-contain bg-no-repeat bg-center`\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillWORKSHOP.js\",\n lineNumber: 110,\n columnNumber: 23\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillWORKSHOP.js\",\n lineNumber: 103,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-xs\",\n children: i + 1\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillWORKSHOP.js\",\n lineNumber: 112,\n columnNumber: 21\n }, this)\n ]\n }, i, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillWORKSHOP.js\",\n lineNumber: 102,\n columnNumber: 19\n }, this))\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillWORKSHOP.js\",\n lineNumber: 100,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillWORKSHOP.js\",\n lineNumber: 98,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillWORKSHOP.js\",\n lineNumber: 93,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-col h-1/2 bg-gray-800 rounded-md p-2 relative\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute top-0 left-0 bg-white w-3 h-3 rounded-full\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillWORKSHOP.js\",\n lineNumber: 121,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute top-0 right-0 bg-white w-3 h-3 rounded-full\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillWORKSHOP.js\",\n lineNumber: 122,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute bottom-0 left-0 bg-white w-3 h-3 rounded-full\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillWORKSHOP.js\",\n lineNumber: 123,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute bottom-0 right-0 bg-white w-3 h-3 rounded-full\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillWORKSHOP.js\",\n lineNumber: 124,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 flex items-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-xs mr-4\",\n children: \"1B\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillWORKSHOP.js\",\n lineNumber: 126,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 flex items-center justify-center space-x-8\",\n children: [\n ...Array(2)\n ].map((_, i)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-col items-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `w-10 h-10 transition-colors flex items-center justify-center ${getPortStyle(`PLC-Rack-1B-${i + 1}`)}`,\n jstype: \"testport-copper\",\n id: `PLC-Rack-1B-${i + 1}`,\n onClick: ()=>onPortClick(`PLC-Rack-1B-${i + 1}`),\n onMouseEnter: ()=>onPortHover(`PLC-Rack-1B-${i + 1}`),\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `w-8 h-8 bg-[url('/rj45.png')] bg-contain bg-no-repeat bg-center`\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillWORKSHOP.js\",\n lineNumber: 137,\n columnNumber: 23\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillWORKSHOP.js\",\n lineNumber: 130,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-xs\",\n children: i + 1\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillWORKSHOP.js\",\n lineNumber: 139,\n columnNumber: 21\n }, this)\n ]\n }, i, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillWORKSHOP.js\",\n lineNumber: 129,\n columnNumber: 19\n }, this))\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillWORKSHOP.js\",\n lineNumber: 127,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillWORKSHOP.js\",\n lineNumber: 125,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillWORKSHOP.js\",\n lineNumber: 120,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillWORKSHOP.js\",\n lineNumber: 91,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillWORKSHOP.js\",\n lineNumber: 89,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-[48%] p-1 flex flex-col\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-center mb-1\",\n children: \"Data-Rack\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillWORKSHOP.js\",\n lineNumber: 151,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[calc(100%-1.5rem)] rounded-md p-2 flex flex-col space-y-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-col h-1/2 bg-gray-800 rounded-md p-2 relative\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute top-0 left-0 bg-white w-3 h-3 rounded-full\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillWORKSHOP.js\",\n lineNumber: 155,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute top-0 right-0 bg-white w-3 h-3 rounded-full\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillWORKSHOP.js\",\n lineNumber: 156,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute bottom-0 left-0 bg-white w-3 h-3 rounded-full\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillWORKSHOP.js\",\n lineNumber: 157,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute bottom-0 right-0 bg-white w-3 h-3 rounded-full\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillWORKSHOP.js\",\n lineNumber: 158,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 flex items-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-xs mr-4\",\n children: \"1A\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillWORKSHOP.js\",\n lineNumber: 160,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 flex items-center justify-center space-x-4\",\n children: [\n ...Array(8)\n ].map((_, i)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-col items-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `w-10 h-10 transition-colors flex items-center justify-center ${getPortStyle(`1F-RackA-1A-${i + 1}`)}`,\n jstype: \"testport-copper\",\n id: `1F-RackA-1A-${i + 1}`,\n onClick: ()=>onPortClick(`1F-RackA-1A-${i + 1}`),\n onMouseEnter: ()=>onPortHover(`1F-RackA-1A-${i + 1}`),\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `w-8 h-8 bg-[url('/rj45.png')] bg-contain bg-no-repeat bg-center`\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillWORKSHOP.js\",\n lineNumber: 171,\n columnNumber: 23\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillWORKSHOP.js\",\n lineNumber: 164,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-xs\",\n children: i + 1\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillWORKSHOP.js\",\n lineNumber: 173,\n columnNumber: 21\n }, this)\n ]\n }, i, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillWORKSHOP.js\",\n lineNumber: 163,\n columnNumber: 19\n }, this))\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillWORKSHOP.js\",\n lineNumber: 161,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillWORKSHOP.js\",\n lineNumber: 159,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillWORKSHOP.js\",\n lineNumber: 154,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-col h-1/2 bg-gray-900 rounded-md p-2 relative border border-gray-700\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-8 flex items-center justify-between px-2 border-b border-gray-700\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-blue-500 font-bold text-sm\",\n children: \"SWITCH\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillWORKSHOP.js\",\n lineNumber: 184,\n columnNumber: 31\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex space-x-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-2 h-2 bg-green-500 rounded-full animate-pulse\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillWORKSHOP.js\",\n lineNumber: 186,\n columnNumber: 33\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-2 h-2 bg-amber-500 rounded-full animate-pulse\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillWORKSHOP.js\",\n lineNumber: 187,\n columnNumber: 33\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-2 h-2 bg-blue-500 rounded-full animate-pulse\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillWORKSHOP.js\",\n lineNumber: 188,\n columnNumber: 33\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-2 h-2 bg-red-500 rounded-full animate-pulse\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillWORKSHOP.js\",\n lineNumber: 189,\n columnNumber: 33\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillWORKSHOP.js\",\n lineNumber: 185,\n columnNumber: 31\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillWORKSHOP.js\",\n lineNumber: 183,\n columnNumber: 29\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 flex flex-row\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-4/6 flex flex-col\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex justify-between px-4 text-xs text-gray-400\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n children: \"10/100/1000 Base-T\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillWORKSHOP.js\",\n lineNumber: 199,\n columnNumber: 35\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n children: \"1-20\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillWORKSHOP.js\",\n lineNumber: 200,\n columnNumber: 35\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillWORKSHOP.js\",\n lineNumber: 198,\n columnNumber: 33\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 flex items-center justify-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid grid-cols-10 gap-0.5 w-full\",\n children: [\n ...Array(10)\n ].map((_, i)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-col items-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-5 h-5 border border-gray-600 rounded-sm flex items-center justify-center transition-colors\",\n jstype: \"\",\n id: `SW-TOP-${i + 1}`,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-4 h-4 bg-[url('/rj45.png')] bg-contain bg-no-repeat bg-center\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillWORKSHOP.js\",\n lineNumber: 213,\n columnNumber: 43\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillWORKSHOP.js\",\n lineNumber: 208,\n columnNumber: 41\n }, this)\n }, i, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillWORKSHOP.js\",\n lineNumber: 207,\n columnNumber: 39\n }, this))\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillWORKSHOP.js\",\n lineNumber: 205,\n columnNumber: 35\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillWORKSHOP.js\",\n lineNumber: 204,\n columnNumber: 33\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 flex items-center justify-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid grid-cols-10 gap-0.5 w-full\",\n children: [\n ...Array(10)\n ].map((_, i)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-col items-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-5 h-5 border border-gray-600 rounded-sm flex items-center justify-center transition-colors\",\n jstype: \"\",\n id: `SW-BOT-${i + 1}`,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-4 h-4 bg-[url('/rj45.png')] bg-contain bg-no-repeat bg-center\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillWORKSHOP.js\",\n lineNumber: 230,\n columnNumber: 43\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillWORKSHOP.js\",\n lineNumber: 225,\n columnNumber: 41\n }, this)\n }, i, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillWORKSHOP.js\",\n lineNumber: 224,\n columnNumber: 39\n }, this))\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillWORKSHOP.js\",\n lineNumber: 222,\n columnNumber: 35\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillWORKSHOP.js\",\n lineNumber: 221,\n columnNumber: 33\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillWORKSHOP.js\",\n lineNumber: 196,\n columnNumber: 31\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-2/6 flex flex-col\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex justify-between px-1 text-xs text-gray-400\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n children: \"SFP+\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillWORKSHOP.js\",\n lineNumber: 242,\n columnNumber: 35\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n children: \"21-24\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillWORKSHOP.js\",\n lineNumber: 243,\n columnNumber: 35\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillWORKSHOP.js\",\n lineNumber: 241,\n columnNumber: 33\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 flex items-center justify-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex space-x-4\",\n children: [\n \" \",\n [\n ...Array(2)\n ].map((_, i)=>/*#__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)(\"div\", {\n className: \"w-10 h-5 border border-gray-600 rounded-sm flex items-center justify-center transition-colors\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-4 h-4 bg-[url('/lc.png')] bg-contain bg-no-repeat bg-center\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillWORKSHOP.js\",\n lineNumber: 255,\n columnNumber: 43\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-4 h-4 bg-[url('/lc.png')] bg-contain bg-no-repeat bg-center\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillWORKSHOP.js\",\n lineNumber: 256,\n columnNumber: 43\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillWORKSHOP.js\",\n lineNumber: 254,\n columnNumber: 41\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillWORKSHOP.js\",\n lineNumber: 251,\n columnNumber: 39\n }, this)\n }, i, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillWORKSHOP.js\",\n lineNumber: 250,\n columnNumber: 37\n }, this))\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillWORKSHOP.js\",\n lineNumber: 248,\n columnNumber: 33\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillWORKSHOP.js\",\n lineNumber: 247,\n columnNumber: 33\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 flex items-center justify-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex space-x-4\",\n children: [\n \" \",\n [\n ...Array(2)\n ].map((_, i)=>/*#__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)(\"div\", {\n className: \"w-10 h-5 border border-gray-600 rounded-sm flex items-center justify-center transition-colors\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-4 h-4 bg-[url('/lc.png')] bg-contain bg-no-repeat bg-center\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillWORKSHOP.js\",\n lineNumber: 273,\n columnNumber: 43\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-4 h-4 bg-[url('/lc.png')] bg-contain bg-no-repeat bg-center\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillWORKSHOP.js\",\n lineNumber: 275,\n columnNumber: 43\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillWORKSHOP.js\",\n lineNumber: 272,\n columnNumber: 41\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillWORKSHOP.js\",\n lineNumber: 269,\n columnNumber: 39\n }, this)\n }, i, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillWORKSHOP.js\",\n lineNumber: 268,\n columnNumber: 37\n }, this))\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillWORKSHOP.js\",\n lineNumber: 266,\n columnNumber: 33\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillWORKSHOP.js\",\n lineNumber: 265,\n columnNumber: 33\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillWORKSHOP.js\",\n lineNumber: 239,\n columnNumber: 31\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillWORKSHOP.js\",\n lineNumber: 194,\n columnNumber: 29\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-6 flex items-center justify-between px-2 border-t border-gray-700\",\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)(\"div\", {\n className: \"text-xs text-gray-400\",\n children: \"Console\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillWORKSHOP.js\",\n lineNumber: 291,\n columnNumber: 33\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-4 h-2 bg-gray-600 rounded-sm\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillWORKSHOP.js\",\n lineNumber: 292,\n columnNumber: 33\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillWORKSHOP.js\",\n lineNumber: 290,\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-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs text-gray-400\",\n children: \"Power\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillWORKSHOP.js\",\n lineNumber: 295,\n columnNumber: 33\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-2 h-2 bg-green-500 rounded-full animate-pulse\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillWORKSHOP.js\",\n lineNumber: 296,\n columnNumber: 33\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillWORKSHOP.js\",\n lineNumber: 294,\n columnNumber: 31\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillWORKSHOP.js\",\n lineNumber: 289,\n columnNumber: 29\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillWORKSHOP.js\",\n lineNumber: 181,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillWORKSHOP.js\",\n lineNumber: 152,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillWORKSHOP.js\",\n lineNumber: 150,\n columnNumber: 7\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillWORKSHOP.js\",\n lineNumber: 32,\n columnNumber: 5\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/scene/WorldSkillWORKSHOP.js\",\n lineNumber: 30,\n columnNumber: 5\n }, this);\n}\n\n__webpack_async_result__();\n} catch(e) { __webpack_async_result__(e); } });//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHBhZ2VzLWRpci1ub2RlKS8uL3NyYy9jb21wb25lbnRzL3NjZW5lL1dvcmxkU2tpbGxXT1JLU0hPUC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFBcUM7QUFDWTtBQUNsQjtBQUVoQixTQUFTSSxtQkFBbUIsRUFDekNDLGNBQWMsS0FBTyxDQUFDLEVBQ3RCQyxjQUFjLEtBQU8sQ0FBQyxFQUN0QkMsZUFBZSxJQUFJLEVBQ25CQyxhQUFhLElBQUksRUFDakJDLGNBQWMsQ0FBQyxDQUFDLEVBQ2pCO0lBQ0MsY0FBYztJQUNkLE1BQU1DLGVBQWUsQ0FBQ0M7UUFDcEIsSUFBSUosaUJBQWlCSSxRQUFRO1lBQzNCLE9BQU87UUFDVDtRQUNBLElBQUlILGVBQWVHLFFBQVE7WUFDekIsT0FBTztRQUNUO1FBQ0EsSUFBSUYsZUFBZUEsV0FBVyxDQUFDRSxPQUFPLEVBQUU7WUFDdEMsT0FBTztRQUNUO1FBQ0EsT0FBTztJQUNUO0lBRUYsTUFBTSxFQUFDQyxjQUFjLEVBQUNDLFFBQVEsRUFBQ0MsVUFBVSxFQUFDQyx5QkFBeUIsRUFBQyxHQUFHYiw4REFBY0E7SUFHbkYscUJBQ0UsOERBQUNjO2tCQUVELDRFQUFDQTtZQUFJQyxXQUFVOzs4QkFHYiw4REFBQ0Q7b0JBQUlDLFdBQVU7OEJBQ2IsNEVBQUNDO3dCQUNDRCxXQUFVO3dCQUNWRSxTQUFTLElBQU1KLDBCQUEwQjtrQ0FFekMsNEVBQUNDOzRCQUFJQyxXQUFVOztnQ0FBb0M7OENBQy9DLDhEQUFDRzs7Ozs7Z0NBQUk7Ozs7Ozs7Ozs7Ozs7Ozs7OzhCQU1iLDhEQUFDSjtvQkFBSUMsV0FBVTs4QkFDYiw0RUFBQ0Q7d0JBQUlDLFdBQVU7OzBDQUViLDhEQUFDRDtnQ0FBSUMsV0FBVTswQ0FBbUI7Ozs7OzswQ0FDaEMsOERBQUNEO2dDQUFJQyxXQUFVOztrREFDZiw4REFBQ0Q7d0NBQ0NDLFdBQVcsQ0FBQyw0Q0FBNEMsQ0FBQzt3Q0FDekRJLFFBQU87d0NBQ1BDLElBQUc7d0NBQ0hILFNBQVMsSUFBTWQs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V29ybGRTa2lsbFdPUktTSE9QLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCx7dXNlU3RhdGV9IGZyb20gJ3JlYWN0JztcclxuaW1wb3J0IHVzZURldmljZVN0b3JlIGZyb20gJ0Avc3RvcmUvZGV2aWNlU3RvcmUnO1xyXG5pbXBvcnQgSW1hZ2UgZnJvbSAnbmV4dC9pbWFnZSc7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBXb3JsZFNraWxsV09SS1NIT1AoeyBcclxuICBvblBvcnRDbGljayA9ICgpID0+IHt9LCBcclxuICBvblBvcnRIb3ZlciA9ICgpID0+IHt9LCBcclxuICBzZWxlY3RlZFBvcnQgPSBudWxsLCBcclxuICB0YXJnZXRQb3J0ID0gbnVsbCwgXHJcbiAgY29ubmVjdGlvbnMgPSB7fSBcclxufSkge1xyXG4gIC8vIOiOt+WPluerr+WPo+eahOi/nuaOpeeKtuaAgeagt+W8j1xyXG4gIGNvbnN0IGdldFBvcnRTdHlsZSA9IChwb3J0SWQpID0+IHtcclxuICAgIGlmIChzZWxlY3RlZFBvcnQgPT09IHBvcnRJZCkge1xyXG4gICAgICByZXR1cm4gJ2JnLWJsdWUtMzAwJztcclxuICAgIH1cclxuICAgIGlmICh0YXJnZXRQb3J0ID09PSBwb3J0SWQpIHtcclxuICAgICAgcmV0dXJuICdiZy1ncmVlbi0zMDAnO1xyXG4gICAgfVxyXG4gICAgaWYgKGNvbm5lY3Rpb25zICYmIGNvbm5lY3Rpb25zW3BvcnRJZF0pIHtcclxuICAgICAgcmV0dXJuICdiZy1bIzAwZmY3Zl0nO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuICdiZy1ncmF5LTMwMCc7XHJcbiAgfTtcclxuICBcclxuY29uc3Qge2ZhdWx0U2NlbmFyaW9zLHNlYXRVVUlELHNlYXROdW1iZXIsdXBkYXRlV29ybGRTa2lsbFNjZW5hcmlvc30gPSB1c2VEZXZpY2VTdG9yZSgpO1xyXG5cclxuXHJcbiAgcmV0dXJuIChcclxuICAgIDxkaXY+XHJcbiAgICB7Lyog5Yqe5YWs5Yy65Z+fICAqL31cclxuICAgIDxkaXYgY2xhc3NOYW1lPVwiaC1mdWxsIHctZnVsbCBiZy1ibGFjayB0ZXh0LXdoaXRlIGZsZXggei1pbmRleC0xMDBcIj5cclxuICAgIFxyXG4gICAgey8qIOi9pumXtEJ1dHRvbiAqL31cclxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LVsyJV0gcC0xIGZsZXggZmxleC1jb2xcIj5cclxuICAgICAgICA8YnV0dG9uIFxyXG4gICAgICAgICAgY2xhc3NOYW1lPVwiYmctZ3JhZGllbnQtdG8tciBmcm9tLWJsdWUtNTAwIHRvLWJsdWUtNzAwIGhvdmVyOmZyb20tYmx1ZS02MDAgaG92ZXI6dG8tYmx1ZS04MDAgdGV4dC13aGl0ZSBmb250LWJvbGQgcHktMyBweC0yIHJvdW5kZWQtbGcgc2hhZG93LWxnIHRyYW5zZm9ybSBob3ZlcjpzY2FsZS0xMDUgdHJhbnNpdGlvbi1hbGwgZHVyYXRpb24tMjAwIHRleHQtc20gZmxleCBmbGV4LWNvbCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgaC1mdWxsIG1pbi1oLVsxMjBweF0gYm9yZGVyIGJvcmRlci1ibHVlLTQwMCBob3Zlcjpib3JkZXItYmx1ZS0zMDBcIlxyXG4gICAgICAgICAgb25DbGljaz17KCkgPT4gdXBkYXRlV29ybGRTa2lsbFNjZW5hcmlvcygnT0ZGSUNFJyl9XHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LXhzIGxlYWRpbmctdGlnaHQgdGV4dC1jZW50ZXJcIj5cclxuICAgICAgICAgICAg5YmN5b6APGJyLz7lip7lhazmpbxcclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIHsvKiBSLU0tQSAgKi99XHJcbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy1bMTIlXSBwLTEgZmxleCBmbGV4LWNvbFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleC0xIGZsZXggZmxleC1jb2xcIj5cclxuICAgICAgICAgIFxyXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LWNlbnRlciBtYi0xXCI+Ui1NLUEtMTwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInJlbGF0aXZlICBmbGV4LTEgYmctZ3JheS05MDAgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXJcIj5cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17YGFic29sdXRlIHRvcC1bNTUlXSBsZWZ0LVs2NiVdIHctNiBoLTYgIHotMTAwYH1cclxuICAgICAgICAgICAgICBqc3R5cGU9XCJ0ZXN0cG9ydC1hcm1cIiBcclxuICAgICAgICAgICAgICBpZD1cIlJNQS0xXCJcclxuICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBvblBvcnRDbGljaygnUk1BLTEnKX1cclxuICAgICAgICAgICAgICBvbk1vdXNlRW50ZXI9eygpID0+IG9uUG9ydEhvdmVyKCdSTUEtMScpfVxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17YHctZnVsbCBoLWZ1bGwgYmctW3VybCgnL01lY2hhbmljYWxBcm0ucG5nJyldIGJnLWNvbnRhaW4gYmctbm8tcmVwZWF0IGJnLWNlbnRlcmB9PjwvZGl2PlxyXG4gICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICB7LyogUi1NLUEgICovfVxyXG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInctWzEyJV0gcC0xIGZsZXggZmxleC1jb2xcIj5cclxuICAgICAgICB7LyogUi1NLUEgICovfVxyXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleC0xIGZsZXggZmxleC1jb2xcIj5cclxuICAgICAgICAgIFxyXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LWNlbnRlciBtYi0xXCI+Ui1NLUEtMjwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInJlbGF0aXZlICBmbGV4LTEgYmctZ3JheS05MDAgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXJcIj5cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17YGFic29sdXRlIHRvcC1bNTUlXSBsZWZ0LVs2NiVdIHctNiBoLTYgIHotMTAwYH1cclxuICAgICAgICAgICAgICBqc3R5cGU9XCJ0ZXN0cG9ydC1hcm1cIiBcclxuICAgICAgICAgICAgICBpZD1cIlJNQS0yXCJcclxuICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBvblBvcnRDbGljaygnUk1BLTInKX1cclxuICAgICAgICAgICAgICBvbk1vdXNlRW50ZXI9eygpID0+IG9uUG9ydEhvdmVyKCdSTUEtMicpfVxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17YHctZnVsbCBoLWZ1bGwgYmctW3VybCgnL01lY2hhbmljYWxBcm0ucG5nJyldIGJnLWNvbnRhaW4gYmctbm8tcmVwZWF0IGJnLWNlbnRlcmB9PjwvZGl2PlxyXG4gICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIHsvKiAyRumFjee6v+aetiAqL31cclxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LVszMCVdIHAtMSBmbGV4IGZsZXgtY29sXCI+XHJcbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1jZW50ZXIgbWItMVwiPlBMQy1SYWNrPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJoLVtjYWxjKDEwMCUtMS41cmVtKV0gcm91bmRlZC1tZCBwLTIgZmxleCBmbGV4LWNvbCBzcGFjZS15LTJcIj5cclxuICAgICAgICAgICB7LyogUm93IDFBIC0gdGFraW5nIDEvMiBvZiByYWNrIGhlaWdodCAqL31cclxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBmbGV4LWNvbCBoLTEvMiBiZy1ncmF5LTgwMCByb3VuZGVkLW1kIHAtMiByZWxhdGl2ZVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImFic29sdXRlIHRvcC0wIGxlZnQtMCBiZy13aGl0ZSB3LTMgaC0zIHJvdW5kZWQtZnVsbFwiPjwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImFic29sdXRlIHRvcC0wIHJpZ2h0LTAgYmctd2hpdGUgdy0zIGgtMyByb3VuZGVkLWZ1bGxcIj48L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJhYnNvbHV0ZSBib3R0b20tMCBsZWZ0LTAgYmctd2hpdGUgdy0zIGgtMyByb3VuZGVkLWZ1bGxcIj48L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJhYnNvbHV0ZSBib3R0b20tMCByaWdodC0wIGJnLXdoaXRlIHctMyBoLTMgcm91bmRlZC1mdWxsXCI+PC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleC0xIGZsZXggaXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC14cyBtci00XCI+MUE8L3NwYW4+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4LTEgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgc3BhY2UteC04XCI+XHJcbiAgICAgICAgICAgICAgICB7Wy4uLkFycmF5KDIpXS5tYXAoKF8sIGkpID0+IChcclxuICAgICAgICAgICAgICAgICAgPGRpdiBrZXk9e2l9IGNsYXNzTmFtZT1cImZsZXggZmxleC1jb2wgaXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBcclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17YHctMTAgaC0xMCAgICB0cmFuc2l0aW9uLWNvbG9ycyBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlcmB9XHJcbiAgICAgICAgICAgICAgICAgICAgICBqc3R5cGU9XCJ0ZXN0cG9ydC1tMTItZFwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgaWQ9e2BQTEMtUmFjay0xQS0ke2kgKyAxfWB9XHJcbiAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBvblBvcnRDbGljayhgUExDLVJhY2stMUEtJHtpICsgMX1gKX1cclxuICAgICAgICAgICAgICAgICAgICAgIG9uTW91c2VFbnRlcj17KCkgPT4gb25Qb3J0SG92ZXIoYFBMQy1SYWNrLTFBLSR7aSArIDF9YCl9XHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2B3LTggaC04IGJnLVt1cmwoJy9tMTItZC5wbmcnKV0gYmctY29udGFpbiBiZy1uby1yZXBlYXQgYmctY2VudGVyYH0+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC14c1wiPntpICsgMX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgKSl9XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgey8qIFJvdyAxQiAtIHRha2luZyAxLzIgb2YgcmFjayBoZWlnaHQgKi99XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggZmxleC1jb2wgaC0xLzIgYmctZ3JheS04MDAgcm91bmRlZC1tZCBwLTIgcmVsYXRpdmVcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJhYnNvbHV0ZSB0b3AtMCBsZWZ0LTAgYmctd2hpdGUgdy0zIGgtMyByb3VuZGVkLWZ1bGxcIj48L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJhYnNvbHV0ZSB0b3AtMCByaWdodC0wIGJnLXdoaXRlIHctMyBoLTMgcm91bmRlZC1mdWxsXCI+PC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYWJzb2x1dGUgYm90dG9tLTAgbGVmdC0wIGJnLXdoaXRlIHctMyBoLTMgcm91bmRlZC1mdWxsXCI+PC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYWJzb2x1dGUgYm90dG9tLTAgcmlnaHQtMCBiZy13aGl0ZSB3LTMgaC0zIHJvdW5kZWQtZnVsbFwiPjwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXgtMSBmbGV4IGl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQteHMgbXItNFwiPjFCPC9zcGFuPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleC0xIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHNwYWNlLXgtOFwiPlxyXG4gICAgICAgICAgICAgICAge1suLi5BcnJheSgyKV0ubWFwKChfLCBpKSA9PiAoXHJcbiAgICAgICAgICAgICAgICAgIDxkaXYga2V5PXtpfSBjbGFzc05hbWU9XCJmbGV4IGZsZXgtY29sIGl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgXHJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2B3LTEwIGgtMTAgICAgdHJhbnNpdGlvbi1jb2xvcnMgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgJHtnZXRQb3J0U3R5bGUoYFBMQy1SYWNrLTFCLSR7aSArIDF9YCl9YH1cclxuICAgICAgICAgICAgICAgICAgICAgIGpzdHlwZT1cInRlc3Rwb3J0LWNvcHBlclwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgaWQ9e2BQTEMtUmFjay0xQi0ke2kgKyAxfWB9XHJcbiAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBvblBvcnRDbGljayhgUExDLVJhY2stMUItJHtpICsgMX1gKX1cclxuICAgICAgICAgICAgICAgICAgICAgIG9uTW91c2VFbnRlcj17KCkgPT4gb25Qb3J0SG92ZXIoYFBMQy1SYWNrLTFCLSR7aSArIDF9YCl9XHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2B3LTggaC04IGJnLVt1cmwoJy9yajQ1LnBuZycpXSBiZy1jb250YWluIGJnLW5vLXJlcGVhdCBiZy1jZW50ZXJgfT48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LXhzXCI+e2kgKyAxfTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICApKX1cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgey8qIERhdGEtUmFjayAqL31cclxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LVs0OCVdIHAtMSBmbGV4IGZsZXgtY29sXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LWNlbnRlciBtYi0xXCI+RGF0YS1SYWNrPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJoLVtjYWxjKDEwMCUtMS41cmVtKV0gcm91bmRlZC1tZCBwLTIgZmxleCBmbGV4LWNvbCBzcGFjZS15LTJcIj5cclxuICAgICAgICAgIHsvKiBSb3cgMUEgLSB0YWtpbmcgMS8yIG9mIHJhY2sgaGVpZ2h0ICovfVxyXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGZsZXgtY29sIGgtMS8yIGJnLWdyYXktODAwIHJvdW5kZWQtbWQgcC0yIHJlbGF0aXZlXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYWJzb2x1dGUgdG9wLTAgbGVmdC0wIGJnLXdoaXRlIHctMyBoLTMgcm91bmRlZC1mdWxsXCI+PC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYWJzb2x1dGUgdG9wLTAgcmlnaHQtMCBiZy13aGl0ZSB3LTMgaC0zIHJvdW5kZWQtZnVsbFwiPjwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImFic29sdXRlIGJvdHRvbS0wIGxlZnQtMCBiZy13aGl0ZSB3LTMgaC0zIHJvdW5kZWQtZnVsbFwiPjwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImFic29sdXRlIGJvdHRvbS0wIHJpZ2h0LTAgYmctd2hpdGUgdy0zIGgtMyByb3VuZGVkLWZ1bGxcIj48L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4LTEgZmxleCBpdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LXhzIG1yLTRcIj4xQTwvc3Bhbj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXgtMSBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBzcGFjZS14LTRcIj5cclxuICAgICAgICAgICAgICAgIHtbLi4uQXJyYXkoOCldLm1hcCgoXywgaSkgPT4gKFxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGtleT17aX0gY2xhc3NOYW1lPVwiZmxleCBmbGV4LWNvbCBpdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IFxyXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgdy0xMCBoLTEwICAgIHRyYW5zaXRpb24tY29sb3JzIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyICR7Z2V0UG9ydFN0eWxlKGAxRi1SYWNrQS0xQS0ke2kgKyAxfWApfWB9XHJcbiAgICAgICAgICAgICAgICAgICAgICBqc3R5cGU9XCJ0ZXN0cG9ydC1jb3BwZXJcIiBcclxuICAgICAgICAgICAgICAgICAgICAgIGlkPXtgMUYtUmFja0EtMUEtJHtpICsgMX1gfVxyXG4gICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gb25Qb3J0Q2xpY2soYDFGLVJhY2tBLTFBLSR7aSArIDF9YCl9XHJcbiAgICAgICAgICAgICAgICAgICAgICBvbk1vdXNlRW50ZXI9eygpID0+IG9uUG9ydEhvdmVyKGAxRi1SYWNrQS0xQS0ke2kgKyAxfWApfVxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtgdy04IGgtOCBiZy1bdXJsKCcvcmo0NS5wbmcnKV0gYmctY29udGFpbiBiZy1uby1yZXBlYXQgYmctY2VudGVyYH0+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC14c1wiPntpICsgMX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgKSl9XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgIHsvKiBOZXR3b3JrIFN3aXRjaCAqL31cclxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBmbGV4LWNvbCBoLTEvMiBiZy1ncmF5LTkwMCByb3VuZGVkLW1kIHAtMiByZWxhdGl2ZSBib3JkZXIgYm9yZGVyLWdyYXktNzAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7LyogU3dpdGNoIFRvcCBBcmVhIC0gQnJhbmQgYW5kIFN0YXR1cyBMRURzICovfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJoLTggZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIHB4LTIgYm9yZGVyLWIgYm9yZGVyLWdyYXktNzAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1ibHVlLTUwMCBmb250LWJvbGQgdGV4dC1zbVwiPlNXSVRDSDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggc3BhY2UteC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LTIgaC0yIGJnLWdyZWVuLTUwMCByb3VuZGVkLWZ1bGwgYW5pbWF0ZS1wdWxzZVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy0yIGgtMiBiZy1hbWJlci01MDAgcm91bmRlZC1mdWxsIGFuaW1hdGUtcHVsc2VcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctMiBoLTIgYmctYmx1ZS01MDAgcm91bmRlZC1mdWxsIGFuaW1hdGUtcHVsc2VcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctMiBoLTIgYmctcmVkLTUwMCByb3VuZGVkLWZ1bGwgYW5pbWF0ZS1wdWxzZVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7LyogU3dpdGNoIFBvcnQgQXJlYSAqL31cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleC0xIGZsZXggZmxleC1yb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgey8qIExlZnQgU2lkZSAtIFJKNDUgUG9ydHMgKDgwJSkgKi99XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy00LzYgZmxleCBmbGV4LWNvbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsvKiBQb3J0IExhYmVscyAqL31cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXgganVzdGlmeS1iZXR3ZWVuIHB4LTQgdGV4dC14cyB0ZXh0LWdyYXktNDAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj4xMC8xMDAvMTAwMCBCYXNlLVQ8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj4xLTIwPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsvKiBUb3AgUm93IFBvcnRzICgxLTEwKSAtIFJKNDUgKi99XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4LTEgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZ3JpZCBncmlkLWNvbHMtMTAgZ2FwLTAuNSB3LWZ1bGxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1suLi5BcnJheSgxMCldLm1hcCgoXywgaSkgPT4gKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYga2V5PXtpfSBjbGFzc05hbWU9XCJmbGV4IGZsZXgtY29sIGl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidy01IGgtNSBib3JkZXIgYm9yZGVyLWdyYXktNjAwIHJvdW5kZWQtc20gZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgdHJhbnNpdGlvbi1jb2xvcnNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqc3R5cGU9XCJcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9e2BTVy1UT1AtJHtpICsgMX1gfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctNCBoLTQgYmctW3VybCgnL3JqNDUucG5nJyldIGJnLWNvbnRhaW4gYmctbm8tcmVwZWF0IGJnLWNlbnRlclwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgey8qIEJvdHRvbSBSb3cgUG9ydHMgKDExLTIwKSAtIFJKNDUgKi99XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4LTEgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZ3JpZCBncmlkLWNvbHMtMTAgZ2FwLTAuNSB3LWZ1bGxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1suLi5BcnJheSgxMCldLm1hcCgoXywgaSkgPT4gKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYga2V5PXtpfSBjbGFzc05hbWU9XCJmbGV4IGZsZXgtY29sIGl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidy01IGgtNSBib3JkZXIgYm9yZGVyLWdyYXktNjAwIHJvdW5kZWQtc20gZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgdHJhbnNpdGlvbi1jb2xvcnNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqc3R5cGU9XCJcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9e2BTVy1CT1QtJHtpICsgMX1gfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctNCBoLTQgYmctW3VybCgnL3JqNDUucG5nJyldIGJnLWNvbnRhaW4gYmctbm8tcmVwZWF0IGJnLWNlbnRlclwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgey8qIFJpZ2h0IFNpZGUgLSBGaWJlciBQb3J0cyAoMjAlKSAqL31cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LTIvNiBmbGV4IGZsZXgtY29sXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgey8qIEZpYmVyIFBvcnQgTGFiZWxzICovfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBqdXN0aWZ5LWJldHdlZW4gcHgtMSB0ZXh0LXhzIHRleHQtZ3JheS00MDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlNGUCs8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj4yMS0yNDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7LyogVG9wIFJvdyBGaWJlciBQb3J0cyAoMjEtMjIpICovfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleC0xIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IHNwYWNlLXgtNFwiPiB7Lyog5L2/55SoIHNwYWNlLXgtNCDmt7vliqDmsLTlubPpl7Tot50gKi99XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Wy4uLkFycmF5KDIpXS5tYXAoKF8sIGkpID0+IChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBrZXk9e2l9IGNsYXNzTmFtZT1cImZsZXgganVzdGlmeS1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidy0xMCBoLTUgYm9yZGVyIGJvcmRlci1ncmF5LTYwMCByb3VuZGVkLXNtIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHRyYW5zaXRpb24tY29sb3JzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LTQgaC00IGJnLVt1cmwoJy9sYy5wbmcnKV0gYmctY29udGFpbiBiZy1uby1yZXBlYXQgYmctY2VudGVyXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy00IGgtNCBiZy1bdXJsKCcvbGMucG5nJyldIGJnLWNvbnRhaW4gYmctbm8tcmVwZWF0IGJnLWNlbnRlclwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsvKiBCb3R0b20gUm93IEZpYmVyIFBvcnRzICgyMy0yNCkgKi99XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4LTEgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggc3BhY2UteC00XCI+IHsvKiDkvb/nlKggc3BhY2UteC00IOa3u+WKoOawtOW5s+mXtOi3nSAqL31cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtbLi4uQXJyYXkoMildLm1hcCgoXywgaSkgPT4gKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGtleT17aX0gY2xhc3NOYW1lPVwiZmxleCBqdXN0aWZ5LWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ3LTEwIGgtNSBib3JkZXIgYm9yZGVyLWdyYXktNjAwIHJvdW5kZWQtc20gZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgdHJhbnNpdGlvbi1jb2xvcnNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctNCBoLTQgYmctW3VybCgnL2xjLnBuZycpXSBiZy1jb250YWluIGJnLW5vLXJlcGVhdCBiZy1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy00IGgtNCBiZy1bdXJsKCcvbGMucG5nJyldIGJnLWNvbnRhaW4gYmctbm8tcmVwZWF0IGJnLWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7LyogU3dpdGNoIEJvdHRvbSBBcmVhIC0gQ29uc29sZSBhbmQgUG93ZXIgKi99XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImgtNiBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gcHgtMiBib3JkZXItdCBib3JkZXItZ3JheS03MDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBzcGFjZS14LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQteHMgdGV4dC1ncmF5LTQwMFwiPkNvbnNvbGU8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctNCBoLTIgYmctZ3JheS02MDAgcm91bmRlZC1zbVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBzcGFjZS14LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQteHMgdGV4dC1ncmF5LTQwMFwiPlBvd2VyPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LTIgaC0yIGJnLWdyZWVuLTUwMCByb3VuZGVkLWZ1bGwgYW5pbWF0ZS1wdWxzZVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIFxyXG5cclxuICAgIDwvZGl2PlxyXG4gICAgXHJcbiAgICA8L2Rpdj5cclxuICApO1xyXG59Il0sIm5hbWVzIjpbIlJlYWN0IiwidXNlU3RhdGUiLCJ1c2VEZXZpY2VTdG9yZSIsIkltYWdlIiwiV29ybGRTa2lsbFdPUktTSE9QIiwib25Qb3J0Q2xpY2siLCJvblBvcnRIb3ZlciIsInNlbGVjdGVkUG9ydCIsInRhcmdldFBvcnQiLCJjb25uZWN0aW9ucyIsImdldFBvcnRTdHlsZSIsInBvcnRJZCIsImZhdWx0U2NlbmFyaW9zIiwic2VhdFVVSUQiLCJzZWF0TnVtYmVyIiwidXBkYXRlV29ybGRTa2lsbFNjZW5hcmlvcyIsImRpdiIsImNsYXNzTmFtZSIsImJ1dHRvbiIsIm9uQ2xpY2siLCJiciIsImpzdHlwZSIsImlkIiwib25Nb3VzZUVudGVyIiwic3BhbiIsIkFycmF5IiwibWFwIiwiXyIsImkiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(pages-dir-node)/./src/components/scene/WorldSkillWORKSHOP.js\n"); /***/ }), /***/ "(pages-dir-node)/./src/config/api.js": /*!***************************!*\ !*** ./src/config/api.js ***! \***************************/ /***/ ((__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 */ API_URLS: () => (/* binding */ API_URLS),\n/* harmony export */ BASE_URL: () => (/* binding */ BASE_URL)\n/* harmony export */ });\n// API 基础地址\n// const BASE_URL = 'https://wxapi.est-live.cn';\nconst getBaseUrl = ()=>{\n if (false) {}\n return '/';\n};\nconst BASE_URL = getBaseUrl();\n// const BASE_URL = '';\n// API 路径配置\nconst API_URLS = {\n // 竞赛相关\n COMPETITION: {\n DATA: `${BASE_URL}/dsxapi/api/competition/data`,\n STATUS: `${BASE_URL}/dsxapi/api/competition/status`,\n START: `${BASE_URL}/dsxapi/api/competition/start`,\n END: `${BASE_URL}/dsxapi/api/competition/end`\n },\n // 管理员鉴权相关\n ADMIN: {\n VERIFY: `${BASE_URL}/verify-admin`\n },\n // 访问权限相关\n CHECK: {\n AUTH: `${BASE_URL}/check-auth`\n },\n // 连接图相关\n CONNECTION: {\n MAP: `${BASE_URL}/dsxapi/api/connectionMap`,\n MAP_WITH_SCENE: (scene)=>`${BASE_URL}/dsxapi/api/connectionMap?scene=${scene}`,\n INIT: `${BASE_URL}/dsxapi/api/initConnectionMap`\n }\n};\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHBhZ2VzLWRpci1ub2RlKS8uL3NyYy9jb25maWcvYXBpLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQ0EsV0FBVztBQUNYLGdEQUFnRDtBQUdoRCxNQUFNQSxhQUFhO0lBQ2pCLElBQUksS0FBNkIsRUFBRSxFQUdsQztJQUNELE9BQU87QUFDVDtBQUVBLE1BQU1RLFdBQVdSO0FBRWpCLHVCQUF1QjtBQUN2QixXQUFXO0FBQ1gsTUFBTVMsV0FBVztJQUNiLE9BQU87SUFDUEMsYUFBYTtRQUNUQyxNQUFNLEdBQUdILFNBQVMsNEJBQTRCLENBQUM7UUFDL0NJLFFBQVEsR0FBR0osU0FBUyw4QkFBOEIsQ0FBQztRQUNuREssT0FBTyxHQUFHTCxTQUFTLDZCQUE2QixDQUFDO1FBQ2pETSxLQUFLLEdBQUdOLFNBQVMsMkJBQTJCLENBQUM7SUFDakQ7SUFDQSxVQUFVO0lBQ1ZPLE9BQU87UUFDSEMsUUFBUSxHQUFHUixTQUFTLGFBQWEsQ0FBQztJQUN0QztJQUNBLFNBQVM7SUFDVFMsT0FBTztRQUNIQyxNQUFNLEdBQUdWLFNBQVMsV0FBVyxDQUFDO0lBQ2xDO0lBQ0EsUUFBUTtJQUNSVyxZQUFZO1FBQ1JDLEtBQUssR0FBR1osU0FBUyx5QkFBeUIsQ0FBQztRQUMzQ2EsZ0JBQWdCLENBQUNDLFFBQVUsR0FBR2QsU0FBUyxnQ0FBZ0MsRUFBRWMsT0FBTztRQUNoRkMsTUFBTSxHQUFHZixTQUFTLDZCQUE2QixDQUFDO0lBQ3BEO0FBQ0o7QUFFOEIiLCJzb3VyY2VzIjpbIi9vcHQvZGV2L2VzdC1kc3gvc3JjL2NvbmZpZy9hcGkuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXG4vLyBBUEkg5Z+656GA5Zyw5Z2AXG4vLyBjb25zdCBCQVNFX1VSTCA9ICdodHRwczovL3d4YXBpLmVzdC1saXZlLmNuJztcblxuXG5jb25zdCBnZXRCYXNlVXJsID0gKCkgPT4ge1xuICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICBjb25zdCB1cmwgPSBuZXcgVVJMKHdpbmRvdy5sb2NhdGlvbi5ocmVmKTtcbiAgICByZXR1cm4gYCR7dXJsLnByb3RvY29sfS8vJHt1cmwuaG9zdG5hbWV9OjMwMDBgO1xuICB9XG4gIHJldHVybiAnLyc7IFxufTtcblxuY29uc3QgQkFTRV9VUkwgPSBnZXRCYXNlVXJsKCk7XG5cbi8vIGNvbnN0IEJBU0VfVVJMID0gJyc7XG4vLyBBUEkg6Lev5b6E6YWN572uXG5jb25zdCBBUElfVVJMUyA9IHtcbiAgICAvLyDnq57otZvnm7jlhbNcbiAgICBDT01QRVRJVElPTjoge1xuICAgICAgICBEQVRBOiBgJHtCQVNFX1VSTH0vZHN4YXBpL2FwaS9jb21wZXRpdGlvbi9kYXRhYCxcbiAgICAgICAgU1RBVFVTOiBgJHtCQVNFX1VSTH0vZHN4YXBpL2FwaS9jb21wZXRpdGlvbi9zdGF0dXNgLFxuICAgICAgICBTVEFSVDogYCR7QkFTRV9VUkx9L2RzeGFwaS9hcGkvY29tcGV0aXRpb24vc3RhcnRgLFxuICAgICAgICBFTkQ6IGAke0JBU0VfVVJMfS9kc3hhcGkvYXBpL2NvbXBldGl0aW9uL2VuZGAsXG4gICAgfSxcbiAgICAvLyDnrqHnkIblkZjpibTmnYPnm7jlhbNcbiAgICBBRE1JTjoge1xuICAgICAgICBWRVJJRlk6IGAke0JBU0VfVVJMfS92ZXJpZnktYWRtaW5gLFxuICAgIH0sXG4gICAgLy8g6K6/6Zeu5p2D6ZmQ55u45YWzXG4gICAgQ0hFQ0s6IHtcbiAgICAgICAgQVVUSDogYCR7QkFTRV9VUkx9L2NoZWNrLWF1dGhgLFxuICAgIH0sXG4gICAgLy8g6L+e5o6l5Zu+55u45YWzXG4gICAgQ09OTkVDVElPTjoge1xuICAgICAgICBNQVA6IGAke0JBU0VfVVJMfS9kc3hhcGkvYXBpL2Nvbm5lY3Rpb25NYXBgLFxuICAgICAgICBNQVBfV0lUSF9TQ0VORTogKHNjZW5lKSA9PiBgJHtCQVNFX1VSTH0vZHN4YXBpL2FwaS9jb25uZWN0aW9uTWFwP3NjZW5lPSR7c2NlbmV9YCxcbiAgICAgICAgSU5JVDogYCR7QkFTRV9VUkx9L2RzeGFwaS9hcGkvaW5pdENvbm5lY3Rpb25NYXBgLFxuICAgIH0sXG59O1xuXG5leHBvcnQgeyBCQVNFX1VSTCwgQVBJX1VSTFMgfTsiXSwibmFtZXMiOlsiZ2V0QmFzZVVybCIsInVybCIsIlVSTCIsIndpbmRvdyIsImxvY2F0aW9uIiwiaHJlZiIsInByb3RvY29sIiwiaG9zdG5hbWUiLCJCQVNFX1VSTCIsIkFQSV9VUkxTIiwiQ09NUEVUSVRJT04iLCJEQVRBIiwiU1RBVFVTIiwiU1RBUlQiLCJFTkQiLCJBRE1JTiIsIlZFUklGWSIsIkNIRUNLIiwiQVVUSCIsIkNPTk5FQ1RJT04iLCJNQVAiLCJNQVBfV0lUSF9TQ0VORSIsInNjZW5lIiwiSU5JVCJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(pages-dir-node)/./src/config/api.js\n"); /***/ }), /***/ "(pages-dir-node)/./src/pages/_app.js": /*!***************************!*\ !*** ./src/pages/_app.js ***! \***************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; eval("__webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ App)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"react/jsx-dev-runtime\");\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 _styles_globals_css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/styles/globals.css */ \"(pages-dir-node)/./src/styles/globals.css\");\n/* harmony import */ var _styles_globals_css__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_styles_globals_css__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var next_head__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! next/head */ \"next/head\");\n/* harmony import */ var next_head__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(next_head__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _components_AudioProvider__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/components/AudioProvider */ \"(pages-dir-node)/./src/components/AudioProvider.js\");\nvar __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_components_AudioProvider__WEBPACK_IMPORTED_MODULE_3__]);\n_components_AudioProvider__WEBPACK_IMPORTED_MODULE_3__ = (__webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__)[0];\n\n\n\n\nfunction App({ Component, pageProps }) {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_head__WEBPACK_IMPORTED_MODULE_2___default()), {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"title\", {\n children: \"信息网络布线仿真测试平台\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/pages/_app.js\",\n lineNumber: 9,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"meta\", {\n name: \"description\",\n content: \"信息网络布线仿真测试平台\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/pages/_app.js\",\n lineNumber: 10,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/pages/_app.js\",\n lineNumber: 8,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_AudioProvider__WEBPACK_IMPORTED_MODULE_3__.AudioProvider, {\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(Component, {\n ...pageProps\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/pages/_app.js\",\n lineNumber: 13,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/pages/_app.js\",\n lineNumber: 12,\n columnNumber: 7\n }, this)\n ]\n }, void 0, true);\n}\n\n__webpack_async_result__();\n} catch(e) { __webpack_async_result__(e); } });//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHBhZ2VzLWRpci1ub2RlKS8uL3NyYy9wYWdlcy9fYXBwLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztBQUE4QjtBQUNGO0FBQytCO0FBRTVDLFNBQVNFLElBQUksRUFBRUMsU0FBUyxFQUFFQyxTQUFTLEVBQUU7SUFDbEQscUJBQ0U7OzBCQUNFLDhEQUFDSixrREFBSUE7O2tDQUNILDhEQUFDSztrQ0FBTTs7Ozs7O2tDQUNQLDhEQUFDQzt3QkFBS0MsTUFBSzt3QkFBY0MsU0FBUTs7Ozs7Ozs7Ozs7OzBCQUVuQyw4REFBQ1Asb0VBQWFBOzBCQUNaLDRFQUFDRTtvQkFBVyxHQUFHQyxTQUFTOzs7Ozs7Ozs7Ozs7O0FBSWhDIiwic291cmNlcyI6WyIvb3B0L2Rldi9lc3QtZHN4L3NyYy9wYWdlcy9fYXBwLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBcIkAvc3R5bGVzL2dsb2JhbHMuY3NzXCI7XG5pbXBvcnQgSGVhZCBmcm9tICduZXh0L2hlYWQnXG5pbXBvcnQgeyBBdWRpb1Byb3ZpZGVyIH0gZnJvbSAnQC9jb21wb25lbnRzL0F1ZGlvUHJvdmlkZXInO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBBcHAoeyBDb21wb25lbnQsIHBhZ2VQcm9wcyB9KSB7XG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxIZWFkPlxuICAgICAgICA8dGl0bGU+5L+h5oGv572R57uc5biD57q/5Lu/55yf5rWL6K+V5bmz5Y+wPC90aXRsZT5cbiAgICAgICAgPG1ldGEgbmFtZT1cImRlc2NyaXB0aW9uXCIgY29udGVudD1cIuS/oeaBr+e9kee7nOW4g+e6v+S7v+ecn+a1i+ivleW5s+WPsFwiIC8+XG4gICAgICA8L0hlYWQ+XG4gICAgICA8QXVkaW9Qcm92aWRlcj5cbiAgICAgICAgPENvbXBvbmVudCB7Li4ucGFnZVByb3BzfSAvPlxuICAgICAgPC9BdWRpb1Byb3ZpZGVyPlxuICAgIDwvPlxuICApXG59XG4iXSwibmFtZXMiOlsiSGVhZCIsIkF1ZGlvUHJvdmlkZXIiLCJBcHAiLCJDb21wb25lbnQiLCJwYWdlUHJvcHMiLCJ0aXRsZSIsIm1ldGEiLCJuYW1lIiwiY29udGVudCJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(pages-dir-node)/./src/pages/_app.js\n"); /***/ }), /***/ "(pages-dir-node)/./src/pages/_document.js": /*!********************************!*\ !*** ./src/pages/_document.js ***! \********************************/ /***/ ((__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 */ Document)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"react/jsx-dev-runtime\");\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_document__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! next/document */ \"(pages-dir-node)/./node_modules/next/document.js\");\n/* harmony import */ var next_document__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(next_document__WEBPACK_IMPORTED_MODULE_1__);\n\n\nfunction Document() {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_document__WEBPACK_IMPORTED_MODULE_1__.Html, {\n lang: \"en\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_document__WEBPACK_IMPORTED_MODULE_1__.Head, {}, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/pages/_document.js\",\n lineNumber: 6,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"body\", {\n className: \"antialiased\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_document__WEBPACK_IMPORTED_MODULE_1__.Main, {}, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/pages/_document.js\",\n lineNumber: 8,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_document__WEBPACK_IMPORTED_MODULE_1__.NextScript, {}, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/pages/_document.js\",\n lineNumber: 9,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/pages/_document.js\",\n lineNumber: 7,\n columnNumber: 7\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/pages/_document.js\",\n lineNumber: 5,\n columnNumber: 5\n }, this);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHBhZ2VzLWRpci1ub2RlKS8uL3NyYy9wYWdlcy9fZG9jdW1lbnQuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQTZEO0FBRTlDLFNBQVNJO0lBQ3RCLHFCQUNFLDhEQUFDSiwrQ0FBSUE7UUFBQ0ssTUFBSzs7MEJBQ1QsOERBQUNKLCtDQUFJQTs7Ozs7MEJBQ0wsOERBQUNLO2dCQUFLQyxXQUFVOztrQ0FDZCw4REFBQ0wsK0NBQUlBOzs7OztrQ0FDTCw4REFBQ0MscURBQVVBOzs7Ozs7Ozs7Ozs7Ozs7OztBQUluQiIsInNvdXJjZXMiOlsiL29wdC9kZXYvZXN0LWRzeC9zcmMvcGFnZXMvX2RvY3VtZW50LmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0bWwsIEhlYWQsIE1haW4sIE5leHRTY3JpcHQgfSBmcm9tIFwibmV4dC9kb2N1bWVudFwiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBEb2N1bWVudCgpIHtcbiAgcmV0dXJuIChcbiAgICA8SHRtbCBsYW5nPVwiZW5cIj5cbiAgICAgIDxIZWFkIC8+XG4gICAgICA8Ym9keSBjbGFzc05hbWU9XCJhbnRpYWxpYXNlZFwiPlxuICAgICAgICA8TWFpbiAvPlxuICAgICAgICA8TmV4dFNjcmlwdCAvPlxuICAgICAgPC9ib2R5PlxuICAgIDwvSHRtbD5cbiAgKTtcbn1cbiJdLCJuYW1lcyI6WyJIdG1sIiwiSGVhZCIsIk1haW4iLCJOZXh0U2NyaXB0IiwiRG9jdW1lbnQiLCJsYW5nIiwiYm9keSIsImNsYXNzTmFtZSJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(pages-dir-node)/./src/pages/_document.js\n"); /***/ }), /***/ "(pages-dir-node)/./src/pages/index.js": /*!****************************!*\ !*** ./src/pages/index.js ***! \****************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; eval("__webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ Home)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"react/jsx-dev-runtime\");\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 */ \"react\");\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_Tab_headlessui_react__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! __barrel_optimize__?names=Tab!=!@headlessui/react */ \"(pages-dir-node)/__barrel_optimize__?names=Tab!=!./node_modules/@headlessui/react/dist/headlessui.esm.js\");\n/* harmony import */ var next_image__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! next/image */ \"(pages-dir-node)/./node_modules/next/image.js\");\n/* harmony import */ var next_image__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(next_image__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _store_deviceStore__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/store/deviceStore */ \"(pages-dir-node)/./src/store/deviceStore.js\");\n/* harmony import */ var _store_displayStore__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/store/displayStore */ \"(pages-dir-node)/./src/store/displayStore.js\");\n/* harmony import */ var _components_ContextMenu__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/components/ContextMenu */ \"(pages-dir-node)/./src/components/ContextMenu.js\");\n/* harmony import */ var _components_JsPlumbInit__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @/components/JsPlumbInit */ \"(pages-dir-node)/./src/components/JsPlumbInit.js\");\n/* harmony import */ var _components_ConnectionAnalyzer__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @/components/ConnectionAnalyzer */ \"(pages-dir-node)/./src/components/ConnectionAnalyzer.js\");\n/* harmony import */ var _components_scene_Office__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @/components/scene/Office */ \"(pages-dir-node)/./src/components/scene/Office.js\");\n/* harmony import */ var _components_scene_Industry__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @/components/scene/Industry */ \"(pages-dir-node)/./src/components/scene/Industry.js\");\n/* harmony import */ var _components_scene_DataCenter__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @/components/scene/DataCenter */ \"(pages-dir-node)/./src/components/scene/DataCenter.js\");\n/* harmony import */ var _components_scene_WorldSkill__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @/components/scene/WorldSkill */ \"(pages-dir-node)/./src/components/scene/WorldSkill.js\");\n/* harmony import */ var _components_scene_WorldSkillWORKSHOP__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @/components/scene/WorldSkillWORKSHOP */ \"(pages-dir-node)/./src/components/scene/WorldSkillWORKSHOP.js\");\n/* harmony import */ var _components_scene_OfficeTask__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @/components/scene/OfficeTask */ \"(pages-dir-node)/./src/components/scene/OfficeTask.js\");\n/* harmony import */ var _components_scene_DataCenterTask__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! @/components/scene/DataCenterTask */ \"(pages-dir-node)/./src/components/scene/DataCenterTask.js\");\n/* harmony import */ var _components_scene_IndustryTask__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! @/components/scene/IndustryTask */ \"(pages-dir-node)/./src/components/scene/IndustryTask.js\");\n/* harmony import */ var _components_scene_WorldSkillTask__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! @/components/scene/WorldSkillTask */ \"(pages-dir-node)/./src/components/scene/WorldSkillTask.js\");\n/* harmony import */ var _components_DisPlay__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! @/components/DisPlay */ \"(pages-dir-node)/./src/components/DisPlay.js\");\n/* harmony import */ var _components_Cursors__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! @/components/Cursors */ \"(pages-dir-node)/./src/components/Cursors.js\");\n/* harmony import */ var _components_SourceCheck__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! @/components/SourceCheck */ \"(pages-dir-node)/./src/components/SourceCheck.js\");\n/* harmony import */ var _components_CompetitionStatistics__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! @/components/CompetitionStatistics */ \"(pages-dir-node)/./src/components/CompetitionStatistics.js\");\n/* harmony import */ var _components_ResultTable__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! @/components/ResultTable */ \"(pages-dir-node)/./src/components/ResultTable.js\");\n/* harmony import */ var _components_lib_TotalToast__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! @/components/lib/TotalToast */ \"(pages-dir-node)/./src/components/lib/TotalToast.js\");\n/* harmony import */ var _components_lib_StatusToast__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! @/components/lib/StatusToast */ \"(pages-dir-node)/./src/components/lib/StatusToast.js\");\n/* harmony import */ var _config_api__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! @/config/api */ \"(pages-dir-node)/./src/config/api.js\");\n/* harmony import */ var _utils_asset__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! @/utils/asset */ \"(pages-dir-node)/./src/utils/asset.js\");\n/* harmony import */ var _components_AudioProvider__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! @/components/AudioProvider */ \"(pages-dir-node)/./src/components/AudioProvider.js\");\nvar __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_store_deviceStore__WEBPACK_IMPORTED_MODULE_3__, _store_displayStore__WEBPACK_IMPORTED_MODULE_4__, _components_JsPlumbInit__WEBPACK_IMPORTED_MODULE_6__, _components_ConnectionAnalyzer__WEBPACK_IMPORTED_MODULE_7__, _components_scene_WorldSkill__WEBPACK_IMPORTED_MODULE_11__, _components_scene_WorldSkillWORKSHOP__WEBPACK_IMPORTED_MODULE_12__, _components_scene_OfficeTask__WEBPACK_IMPORTED_MODULE_13__, _components_scene_DataCenterTask__WEBPACK_IMPORTED_MODULE_14__, _components_scene_IndustryTask__WEBPACK_IMPORTED_MODULE_15__, _components_scene_WorldSkillTask__WEBPACK_IMPORTED_MODULE_16__, _components_DisPlay__WEBPACK_IMPORTED_MODULE_17__, _components_Cursors__WEBPACK_IMPORTED_MODULE_18__, _components_SourceCheck__WEBPACK_IMPORTED_MODULE_19__, _components_CompetitionStatistics__WEBPACK_IMPORTED_MODULE_20__, _components_ResultTable__WEBPACK_IMPORTED_MODULE_21__, _components_lib_TotalToast__WEBPACK_IMPORTED_MODULE_22__, _utils_asset__WEBPACK_IMPORTED_MODULE_25__, _components_AudioProvider__WEBPACK_IMPORTED_MODULE_26__, _barrel_optimize_names_Tab_headlessui_react__WEBPACK_IMPORTED_MODULE_27__]);\n([_store_deviceStore__WEBPACK_IMPORTED_MODULE_3__, _store_displayStore__WEBPACK_IMPORTED_MODULE_4__, _components_JsPlumbInit__WEBPACK_IMPORTED_MODULE_6__, _components_ConnectionAnalyzer__WEBPACK_IMPORTED_MODULE_7__, _components_scene_WorldSkill__WEBPACK_IMPORTED_MODULE_11__, _components_scene_WorldSkillWORKSHOP__WEBPACK_IMPORTED_MODULE_12__, _components_scene_OfficeTask__WEBPACK_IMPORTED_MODULE_13__, _components_scene_DataCenterTask__WEBPACK_IMPORTED_MODULE_14__, _components_scene_IndustryTask__WEBPACK_IMPORTED_MODULE_15__, _components_scene_WorldSkillTask__WEBPACK_IMPORTED_MODULE_16__, _components_DisPlay__WEBPACK_IMPORTED_MODULE_17__, _components_Cursors__WEBPACK_IMPORTED_MODULE_18__, _components_SourceCheck__WEBPACK_IMPORTED_MODULE_19__, _components_CompetitionStatistics__WEBPACK_IMPORTED_MODULE_20__, _components_ResultTable__WEBPACK_IMPORTED_MODULE_21__, _components_lib_TotalToast__WEBPACK_IMPORTED_MODULE_22__, _utils_asset__WEBPACK_IMPORTED_MODULE_25__, _components_AudioProvider__WEBPACK_IMPORTED_MODULE_26__, _barrel_optimize_names_Tab_headlessui_react__WEBPACK_IMPORTED_MODULE_27__] = __webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__);\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\n\n\n// 自定义滚动条样式,使用青色主题\nconst scrollbarStyles = `\n .custom-scrollbar::-webkit-scrollbar {\n width: 6px;\n }\n .custom-scrollbar::-webkit-scrollbar-track {\n background: transparent;\n }\n .custom-scrollbar::-webkit-scrollbar-thumb {\n background-color: rgba(0, 255, 255, 0.2);\n border-radius: 3px;\n }\n .custom-scrollbar::-webkit-scrollbar-thumb:hover {\n background-color: rgba(0, 255, 255, 0.4);\n }\n .custom-scrollbar {\n scrollbar-width: thin;\n scrollbar-color: rgba(0, 255, 255, 0.2) transparent;\n }\n .custom-scrollbar:hover::-webkit-scrollbar-thumb {\n background-color: rgba(0, 255, 255, 0.4);\n }\n`;\nfunction Home() {\n // 从全局状态管理中获取所需的状态和方法\n const { devices, mainUnitModules, remoteUnitModules, mainUnitAdapter, remoteUnitAdapter, mainUnitPorts, remoteUnitPorts, installModule, uninstallModule, installAdapter, uninstallAdapter, connectionItems, addConnectionItem, removeConnectionItem, faultScenarios, estmodel, updateEstmodel, WorldSkillScenarios, seatNumber, updateSeatNumber, seatUUID, updateSeatUUID, seatStartTime, updateSeatStartTime, totalToastMessage, setTotalToastMessage } = (0,_store_deviceStore__WEBPACK_IMPORTED_MODULE_3__[\"default\"])();\n // 状态管理\n const [isCompetitionWaiting, setIsCompetitionWaiting] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n const [showSeatInput, setShowSeatInput] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n const [tempSeatNumber, setTempSeatNumber] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)('');\n const [isFromUrl, setIsFromUrl] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n const [showConfirmDialog, setShowConfirmDialog] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n const [confirmDialogMessage, setConfirmDialogMessage] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)('');\n const [confirmDialogCallback, setConfirmDialogCallback] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);\n const { play } = (0,_components_AudioProvider__WEBPACK_IMPORTED_MODULE_26__.useAudio)();\n // iframe内嵌检测\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)({\n \"Home.useEffect\": ()=>{\n const checkIframeOrigin = {\n \"Home.useEffect.checkIframeOrigin\": ()=>{\n try {\n // 检测是否在iframe中\n if (window.self === window.top) {\n // 如果不在iframe中(直接访问),阻止加载\n document.body.innerHTML = '

502

访问被拒绝

';\n return;\n }\n // 获取当前iframe的URL参数\n const currentUrl = window.location.href;\n const urlParams = new URLSearchParams(currentUrl.split('?')[1] || '');\n let faultScenariosParam = urlParams.get('faultScenarios') || '';\n let estmodelParam = urlParams.get('estmodel') || '';\n try {\n faultScenariosParam = decodeURIComponent(faultScenariosParam);\n // 移除可能的尾部斜杠\n faultScenariosParam = faultScenariosParam.replace(/\\/$/, '');\n } catch (e) {}\n try {\n estmodelParam = decodeURIComponent(estmodelParam);\n } catch (e) {}\n // 继续应用 URL 中的故障场景与型号\n if (faultScenariosParam) {\n _store_deviceStore__WEBPACK_IMPORTED_MODULE_3__[\"default\"].setState({\n faultScenarios: faultScenariosParam\n });\n }\n if (estmodelParam) {\n updateEstmodel(estmodelParam);\n }\n } catch (error) {\n // 鉴权失败或解析异常:阻止访问\n document.body.innerHTML = '

502

访问被拒绝

';\n }\n }\n }[\"Home.useEffect.checkIframeOrigin\"];\n checkIframeOrigin();\n }\n }[\"Home.useEffect\"], []);\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)({\n \"Home.useEffect\": ()=>{\n const checkIframeOrigin = {\n \"Home.useEffect.checkIframeOrigin\": async ()=>{\n try {\n // 获取当前iframe的URL参数\n const currentUrl = window.location.href;\n const urlParams = new URLSearchParams(currentUrl.split('?')[1] || '');\n const token = urlParams.get('token');\n // 先鉴权:没有 token 或鉴权失败则阻止访问\n if (!token) {\n throw new Error('缺少 token');\n }\n const response = await fetch(_config_api__WEBPACK_IMPORTED_MODULE_24__.API_URLS.CHECK.AUTH, {\n method: 'GET',\n headers: {\n Authorization: `Bearer ${token}`\n }\n });\n if (!response.ok) {\n throw new Error('认证失败');\n }\n const data = await response.json();\n const username = data?.username;\n if (!username) {\n throw new Error('认证成功但未返回用户名');\n }\n // 鉴权成功:更新赛位号\n updateSeatNumber(username);\n setIsFromUrl(true);\n } catch (error) {\n // 鉴权失败或解析异常:阻止访问\n document.body.innerHTML = '

502

访问被拒绝

';\n }\n }\n }[\"Home.useEffect.checkIframeOrigin\"];\n checkIframeOrigin();\n }\n }[\"Home.useEffect\"], []);\n // 工具函数:合并类名,过滤掉假值\n function classNames(...classes) {\n return classes.filter(Boolean).join(' ');\n }\n // 竞赛模式状态管理\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)({\n \"Home.useEffect\": ()=>{\n let timer;\n if (faultScenarios === 'WorldSkill') {\n if (seatNumber) {\n setIsCompetitionWaiting(true);\n setShowSeatInput(false);\n timer = setInterval({\n \"Home.useEffect\": async ()=>{\n try {\n const response = await fetch(_config_api__WEBPACK_IMPORTED_MODULE_24__.API_URLS.COMPETITION.STATUS);\n const data = await response.json();\n const wasRunning = !isCompetitionWaiting;\n setIsCompetitionWaiting(!data.isRunning);\n // 当比赛状态从运行变为非运行时重置显示状态和清除本地缓存\n if (wasRunning && !data.isRunning) {\n _store_displayStore__WEBPACK_IMPORTED_MODULE_4__[\"default\"].getState().resetToDefaultState();\n _store_deviceStore__WEBPACK_IMPORTED_MODULE_3__[\"default\"].getState().resetdeviceStore();\n // 强制重新渲染组件\n _store_deviceStore__WEBPACK_IMPORTED_MODULE_3__[\"default\"].setState({\n reloadKey: Math.random()\n });\n }\n if (data.isRunning) {\n updateSeatUUID(data.UUID);\n updateSeatStartTime(data.startTime);\n } else {\n updateSeatUUID(null);\n }\n } catch (error) {\n console.error('获取比赛状态失败:', error);\n }\n }\n }[\"Home.useEffect\"], 1000);\n } else {\n setShowSeatInput(true);\n setIsCompetitionWaiting(false);\n updateSeatUUID(null);\n }\n } else {\n setShowSeatInput(false);\n setIsCompetitionWaiting(false);\n setTempSeatNumber('');\n updateSeatUUID(null);\n }\n return ({\n \"Home.useEffect\": ()=>{\n if (timer) clearInterval(timer);\n }\n })[\"Home.useEffect\"];\n }\n }[\"Home.useEffect\"], [\n faultScenarios,\n seatNumber,\n seatUUID,\n updateSeatUUID\n ]);\n // 处理赛位号确认\n const handleSeatConfirm = ()=>{\n if (tempSeatNumber.trim()) {\n updateSeatNumber(tempSeatNumber.trim());\n setShowSeatInput(false);\n setIsEditingSeat(false);\n }\n };\n // 处理取消等待\n const handleCancelWaiting = ()=>{\n _store_deviceStore__WEBPACK_IMPORTED_MODULE_3__[\"default\"].setState({\n faultScenarios: 'Office'\n });\n setShowSeatInput(false);\n setIsCompetitionWaiting(false);\n };\n // 本地状态管理\n const [contextMenu, setContextMenu] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null); // 右键菜单状态\n const [draggedItem, setDraggedItem] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null); // 当前拖拽的物品\n const [isDrawerOpen, setIsDrawerOpen] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false); // 左侧抽屉状态\n const [isRightDrawerOpen, setIsRightDrawerOpen] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false); // 右侧抽屉状态\n // 处理抽屉开关\n const toggleDrawer = ()=>{\n setIsDrawerOpen(!isDrawerOpen);\n };\n // 开始拖拽时的处理函数\n const handleDragStart = (e, item)=>{\n setDraggedItem(item);\n e.dataTransfer.setData('text/plain', JSON.stringify(item));\n };\n // 拖拽经过时的处理函数\n const handleDragOver = (e)=>{\n e.preventDefault();\n };\n // 放置拖拽物品时的处理函数\n const handleDrop = (e, target)=>{\n e.preventDefault();\n if (!draggedItem) return;\n const item = JSON.parse(e.dataTransfer.getData('text/plain'));\n // 处理模块的安装\n if (item.type === 'module') {\n const targetModules = target === 'main' ? mainUnitModules : remoteUnitModules;\n // 检查是否已安装模块\n if (targetModules.length > 0) {\n // alert('该设备已安装了测试模块,请先卸载后再安装新模块!');\n return;\n }\n installModule(item, target);\n // 播放安装音效\n play('install');\n } else if (item.type === 'adapter') {\n const targetModules = target === 'main' ? mainUnitModules : remoteUnitModules;\n const targetAdapter = target === 'main' ? mainUnitAdapter : remoteUnitAdapter;\n // 检查是否正确安装模块\n if (!targetModules.some((m)=>m.id === '8000')) {\n // alert('请先安装铜缆测试模块,再安装适配器!');\n return;\n }\n // 检查是否已安装适配器\n if (targetAdapter) {\n if (targetAdapter.id === item.id) {\n // alert('该适配器已经安装,不能重复安装!');\n } else {\n // alert('该设备已安装了适配器,请先卸载后再安装新适配器!');\n }\n return;\n }\n installAdapter(item, target);\n // 播放安装音效\n play('install');\n }\n setDraggedItem(null);\n };\n // 处理右键菜单\n const handleContextMenu = (e, target, item)=>{\n e.preventDefault();\n e.stopPropagation();\n setContextMenu({\n x: e.clientX,\n y: e.clientY,\n target,\n item\n });\n };\n // 卸载模块的处理函数\n const handleUninstall = (moduleId, target)=>{\n uninstallModule(moduleId, target);\n // 播放移除音效\n play('uninstall');\n };\n // 卸载适配器的处理函数\n const handleUninstallAdapter = (target)=>{\n uninstallAdapter(target);\n // 播放移除音效\n play('uninstall');\n };\n // 检查是否安装了OTDR模块(用于控制远端区域的显示)\n const hasOtdrModule = mainUnitModules.some((m)=>m.id === 'ofp');\n //鼠标元素穿透检测显示到鼠标元素穿透检测显示到StatusToast\n const [portTooltip, setPortTooltip] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)('');\n const handlePortMouseMove = (e)=>{\n const elements = document.elementsFromPoint(e.clientX, e.clientY);\n const portElement = elements.find((el)=>{\n const id = el.id;\n return [\n 'main-cfp-sm-out',\n 'main-cfp-in',\n 'main-cfp-mm-out',\n 'main-vfl',\n 'remote-cfp-sm-out',\n 'remote-cfp-in',\n 'remote-cfp-mm-out',\n 'remote-vfl',\n 'main-ofp-sm-out',\n 'main-ofp-mm-out'\n ].includes(id);\n });\n if (portElement) {\n const tooltips = {\n 'main-cfp-sm-out': '单模光源(LC)',\n 'main-cfp-in': '光功率计(LC)',\n 'main-cfp-mm-out': '多模光源(LC)',\n 'main-vfl': '可视故障定位(LC)',\n 'remote-cfp-sm-out': '单模光源(LC)',\n 'remote-cfp-in': '光功率计(LC)',\n 'remote-cfp-mm-out': '多模光源(LC)',\n 'remote-vfl': '可视故障定位(LC)',\n 'main-ofp-sm-out': '单模光源(LC)',\n 'main-ofp-mm-out': '多模光源(LC)'\n };\n setPortTooltip(tooltips[portElement.id]);\n } else {\n setPortTooltip('');\n }\n };\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)({\n \"Home.useEffect\": ()=>{\n window.addEventListener('mousemove', handlePortMouseMove);\n return ({\n \"Home.useEffect\": ()=>{\n window.removeEventListener('mousemove', handlePortMouseMove);\n }\n })[\"Home.useEffect\"];\n }\n }[\"Home.useEffect\"], []);\n // 使用6位随机字符作为密钥,避免 0,O,o,1,I,l 等易混淆字符\n const keyToSeatMap = {\n 'M7N4P2': '01',\n 'X8H5W3': '02',\n 'B6T9A4': '03',\n 'R5Y2C8': '04',\n 'K9D4E7': '05',\n 'U3F8G6': '06',\n 'Q7V5H2': '07',\n 'A4J9K6': '08',\n 'W8M5N3': '09',\n 'T2P7R4': '10',\n 'Y6S3U8': '11',\n 'C9V4W7': '12',\n 'E5X2Y9': '13',\n 'G8Z6A3': '14',\n 'H4B7C5': '15',\n 'K2D9E6': '16',\n 'M7F4G8': '17',\n 'P3H6J9': '18',\n 'R5K8M2': '19',\n 'T9N4P7': '20',\n 'V6Q2S5': '21',\n 'X8T3U7': '22',\n 'Y4V9W2': '23',\n 'Z7X5Y8': '24',\n 'B3A6C4': '25',\n 'D8E2F7': '26',\n 'G5H9J3': '27',\n 'K6M4N8': '28',\n 'P2Q7R5': '29',\n 'S9T3U6': '30',\n 'V4W8X2': '31',\n 'Y7Z5A9': '32',\n 'B3C6D4': '33',\n 'E8F2G7': '34',\n 'H5J9K3': '35',\n 'KEN': 'ken',\n 'HUGO': 'hugo',\n 'HUSKY': 'husky'\n };\n // 处理密钥输入和确认\n const handleKeyConfirm = ()=>{\n const seatNumber = keyToSeatMap[tempSeatNumber.toUpperCase()];\n if (seatNumber) {\n updateSeatNumber(seatNumber);\n setShowSeatInput(false);\n } else {\n setConfirmDialogMessage('无效的密钥,请重新输入');\n setConfirmDialogCallback(()=>()=>{\n setShowConfirmDialog(false);\n });\n setShowConfirmDialog(true);\n }\n };\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"style\", {\n children: scrollbarStyles\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 451,\n columnNumber: 7\n }, this),\n seatUUID && faultScenarios === 'WorldSkill' && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute top-1 left-6 z-50\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-white opacity-25\",\n children: [\n \"本场竞赛已经开始 \",\n seatStartTime ? new Date(new Date().getTime() + 8 * 60 * 60 * 1000 - new Date(seatStartTime).getTime()).toISOString().substr(11, 8) : '00:00:00'\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 455,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 454,\n columnNumber: 11\n }, this),\n seatUUID && faultScenarios === 'WorldSkill' && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute top-1 right-6 z-50\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-white opacity-25\",\n children: seatUUID\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 461,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 460,\n columnNumber: 11\n }, this),\n showConfirmDialog && /*#__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 z-[10001]\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-[#0F172A] p-8 rounded-lg border border-[#0ff]/20 w-[400px]\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h3\", {\n className: \"text-[#0ff] text-xl mb-4\",\n children: confirmDialogMessage\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 469,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex space-x-4\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>{\n if (confirmDialogCallback) confirmDialogCallback();\n else setShowConfirmDialog(false);\n },\n className: \"w-full bg-[#0ff]/20 text-[#0ff] py-2 rounded-lg hover:bg-[#0ff]/30 transition-colors\",\n children: \"确认\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 471,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 470,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 468,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 467,\n columnNumber: 9\n }, this),\n showSeatInput && faultScenarios === 'WorldSkill' && /*#__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 z-[10000]\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-[#0F172A] p-8 rounded-lg border border-[#0ff]/20 w-[400px]\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h3\", {\n className: \"text-[#0ff] text-xl mb-4\",\n children: \"请输入密钥\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 489,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"text\",\n value: tempSeatNumber,\n onChange: (e)=>setTempSeatNumber(e.target.value),\n className: \"w-full px-4 py-2 bg-[#1E293B] text-white rounded-lg mb-4 focus:outline-none focus:ring-2 focus:ring-[#0ff]/50\",\n placeholder: \"输入6位密钥\",\n maxLength: 6\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 490,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex space-x-4\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: handleKeyConfirm,\n className: \"w-full bg-[#0ff]/20 text-[#0ff] py-2 rounded-lg hover:bg-[#0ff]/30 transition-colors\",\n children: \"确认\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 499,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 498,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 488,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 487,\n columnNumber: 9\n }, this),\n isCompetitionWaiting && faultScenarios === 'WorldSkill' && seatNumber && /*#__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 z-[10000]\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-[#0F172A] p-8 rounded-lg border border-[#0ff]/20 w-[400px]\",\n children: /*#__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)(\"p\", {\n className: \"text-[#0ff] text-xl\",\n children: \"请等待比赛开始\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 540,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-[#0ff] font-bold\",\n children: [\n \"赛位号:\",\n seatNumber\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 541,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 539,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 538,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 537,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: toggleDrawer,\n className: \"fixed left-0 top-1/2 -translate-y-1/2 bg-[#0F172A] h-full w-6 rounded-r-lg hover:bg-[#1E293B] transition-colors z-9999 flex items-center justify-center group\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-3 h-3 relative transform group-hover:translate-x-0.5 transition-transform\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: (0,_utils_asset__WEBPACK_IMPORTED_MODULE_25__.getAssetUrl)('/arrow.png'),\n alt: \"展开工具箱\",\n fill: true,\n className: `object-contain ${isDrawerOpen ? 'scale-x-[-1]' : ''}`,\n sizes: \"100vw\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 556,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 555,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 551,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>setIsRightDrawerOpen(!isRightDrawerOpen),\n className: \"fixed right-0 top-1/2 -translate-y-1/2 bg-[#0F172A] h-full w-6 rounded-l-lg hover:bg-[#1E293B] transition-colors z-9999 flex items-center justify-center group\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-3 h-3 relative transform group-hover:translate-x-[-0.5px] transition-transform\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: (0,_utils_asset__WEBPACK_IMPORTED_MODULE_25__.getAssetUrl)('/arrow.png'),\n alt: \"展开右侧面板\",\n fill: true,\n className: `object-contain ${isRightDrawerOpen ? 'scale-x-[1]' : 'scale-x-[-1]'}`,\n sizes: \"100vw\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 574,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 573,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 569,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `fixed left-0 top-0 h-full w-full bg-[#0F172A] border-r border-[#0ff]/20 transform transition-transform duration-300 ease-in-out z-9998 ${isDrawerOpen ? 'translate-x-0' : '-translate-x-full'}`,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"pt-25 p-8\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-y-2 custom-scrollbar\",\n children: faultScenarios === 'Office' ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_scene_OfficeTask__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {}, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 660,\n columnNumber: 44\n }, this) : faultScenarios === 'Industry' ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_scene_IndustryTask__WEBPACK_IMPORTED_MODULE_15__[\"default\"], {}, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 661,\n columnNumber: 46\n }, this) : faultScenarios === 'DataCenter' ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_scene_DataCenterTask__WEBPACK_IMPORTED_MODULE_14__[\"default\"], {}, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 662,\n columnNumber: 48\n }, this) : faultScenarios === 'WorldSkill' ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_scene_WorldSkillTask__WEBPACK_IMPORTED_MODULE_16__[\"default\"], {}, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 663,\n columnNumber: 48\n }, this) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_scene_WorldSkillTask__WEBPACK_IMPORTED_MODULE_16__[\"default\"], {}, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 664,\n columnNumber: 14\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 593,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 592,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 588,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `fixed right-0 top-0 h-full w-[68%] bg-[#0F172A] border-l border-[#0ff]/20 transform transition-transform duration-300 ease-in-out z-9998 ${isRightDrawerOpen ? 'translate-x-0' : 'translate-x-full'}`,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"p-8\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-y-2 custom-scrollbar\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ResultTable__WEBPACK_IMPORTED_MODULE_21__[\"default\"], {}, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 678,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 677,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 676,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 673,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-screen bg-[#0F172A] p-6 overflow-hidden\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[30vh] bg-[#0F172A] shadow-lg p-2 mb-4 border border-[#0ff]/20 rounded-lg\",\n children: faultScenarios === 'Office' ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_scene_Office__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {}, _store_deviceStore__WEBPACK_IMPORTED_MODULE_3__[\"default\"].getState().reloadKey, false, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 687,\n columnNumber: 44\n }, this) : faultScenarios === 'Industry' ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_scene_Industry__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {}, _store_deviceStore__WEBPACK_IMPORTED_MODULE_3__[\"default\"].getState().reloadKey, false, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 688,\n columnNumber: 46\n }, this) : faultScenarios === 'DataCenter' ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_scene_DataCenter__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {}, _store_deviceStore__WEBPACK_IMPORTED_MODULE_3__[\"default\"].getState().reloadKey, false, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 689,\n columnNumber: 48\n }, this) : faultScenarios === 'WorldSkill' ? WorldSkillScenarios === 'WORKSHOP' ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_scene_WorldSkillWORKSHOP__WEBPACK_IMPORTED_MODULE_12__[\"default\"], {}, _store_deviceStore__WEBPACK_IMPORTED_MODULE_3__[\"default\"].getState().reloadKey, false, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 692,\n columnNumber: 18\n }, this) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_scene_WorldSkill__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {}, _store_deviceStore__WEBPACK_IMPORTED_MODULE_3__[\"default\"].getState().reloadKey, false, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 693,\n columnNumber: 18\n }, this) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_scene_WorldSkill__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {}, _store_deviceStore__WEBPACK_IMPORTED_MODULE_3__[\"default\"].getState().reloadKey, false, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 695,\n columnNumber: 14\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 686,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[calc(70vh-2rem)] flex gap-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-[32%] bg-[#0F172A] shadow-lg p-2 border border-[#0ff]/20 rounded-lg flex justify-center \",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_DisPlay__WEBPACK_IMPORTED_MODULE_17__[\"default\"], {}, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 702,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 701,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-[45%] flex flex-col gap-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[55%] bg-[#0F172A] shadow-lg border border-[#0ff]/20 rounded-lg relative\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-full relative\",\n onDragOver: handleDragOver,\n onDrop: (e)=>{\n e.preventDefault();\n if (!draggedItem) return;\n const item = JSON.parse(e.dataTransfer.getData('text/plain'));\n // 检查是否为mpo类型线缆,如果是,则检查已存在的mpo线缆数量\n if (item.type === 'mpo') {\n const existingMpoCount = connectionItems.filter((existingItem)=>existingItem.type === 'mpo').length;\n // 如果已存在两个mpo线缆,则不添加新的\n if (existingMpoCount >= 2) {\n return;\n }\n }\n addConnectionItem(item);\n },\n onContextMenu: (e)=>{\n e.preventDefault();\n e.stopPropagation();\n handleContextMenu(e, 'connection');\n },\n children: [\n !connectionItems.some((item)=>item.type === 'mpo') && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[15%] p-1 flex gap-25 custom-scrollbar justify-center relative\",\n children: connectionItems.filter((item)=>item.type === 'connector').map((item, index)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"relative flex-shrink-0 w-16 h-full\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute w-full h-full inset-0 bg-[#0F172A] rounded-lg p-1 select-none\",\n style: {\n position: 'relative',\n zIndex: 1\n },\n onContextMenu: (e)=>{\n e.preventDefault();\n e.stopPropagation();\n handleContextMenu(e, 'connection', {\n index: connectionItems.indexOf(item),\n ...item\n });\n },\n draggable: false,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: (0,_utils_asset__WEBPACK_IMPORTED_MODULE_25__.getAssetUrl)(item.image),\n alt: item.name,\n sizes: \"auto\",\n fill: true,\n className: \"object-contain pointer-events-none\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 759,\n columnNumber: 29\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 746,\n columnNumber: 27\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n id: `${item.id}-${index + 1}-left`,\n jstype: \"connector-left\",\n className: \"absolute inset-0 opacity-0 pointer-events-none\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 768,\n columnNumber: 27\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n id: `${item.id}-${index + 1}-right`,\n jstype: \"connector-right\",\n className: \"absolute inset-0 opacity-0 pointer-events-none\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 774,\n columnNumber: 27\n }, this)\n ]\n }, index, true, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 744,\n columnNumber: 25\n }, this))\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 740,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `h-full w-full rounded-lg p-2 flex flex-col overflow-y-auto custom-scrollbar relative`,\n children: connectionItems.some((item)=>item.type === 'mpo') ? // 如果有MPO线缆,使用上下分区布局\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full h-[30%] flex flex-wrap gap-15 justify-center content-start mb-3\",\n children: connectionItems.filter((item)=>item.type === 'cable-mpo').map((item, index)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `relative flex-shrink-0 w-18 h-18 `,\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute w-full h-full inset-0 bg-[#0F172A] border border-[#0ff]/20 rounded-lg p-1 select-none\",\n style: {\n position: 'relative',\n zIndex: 1\n },\n onContextMenu: (e)=>{\n e.preventDefault();\n e.stopPropagation();\n handleContextMenu(e, 'connection', {\n index: connectionItems.indexOf(item),\n ...item\n });\n },\n draggable: false,\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: (0,_utils_asset__WEBPACK_IMPORTED_MODULE_25__.getAssetUrl)(item.image),\n alt: item.name,\n sizes: \"auto\",\n fill: true,\n className: \"object-contain pointer-events-none\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 810,\n columnNumber: 35\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"absolute bottom-0 left-0 right-0 text-center text-xs text-[#00ff7f] truncate px-1\",\n children: item.name\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 817,\n columnNumber: 35\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 797,\n columnNumber: 33\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n id: `${item.id}-${index + 1}-left`,\n jstype: `cable-${item.portType}-left`,\n className: \"absolute inset-0 opacity-0 pointer-events-none\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 822,\n columnNumber: 33\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n id: `${item.id}-${index + 1}-right`,\n jstype: `cable-${item.portType}-right`,\n className: \"absolute inset-0 opacity-0 pointer-events-none\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 828,\n columnNumber: 33\n }, this)\n ]\n }, index, true, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 795,\n columnNumber: 29\n }, this))\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 791,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-[100%] h-[30%] flex flex-wrap gap-15 justify-center mb-5\",\n children: connectionItems.filter((item)=>item.type === 'mpo')// 不再限制只显示第一个MPO线缆,最多显示两个\n .map((item, index)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"relative flex-shrink-0 w-[40%] h-full mx-1\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute w-full h-full inset-0 bg-[#0F172A] border border-[#0ff]/20 rounded-lg p-1 select-none\",\n style: {\n position: 'relative',\n zIndex: 1\n },\n onContextMenu: (e)=>{\n e.preventDefault();\n e.stopPropagation();\n handleContextMenu(e, 'connection', {\n index: connectionItems.indexOf(item),\n ...item\n });\n },\n draggable: false,\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: (0,_utils_asset__WEBPACK_IMPORTED_MODULE_25__.getAssetUrl)(item.image),\n alt: item.name,\n sizes: \"auto\",\n fill: true,\n className: \"object-contain pointer-events-none\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 858,\n columnNumber: 35\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"absolute bottom-0 left-0 right-0 text-center text-xs text-[#00ff7f] truncate px-1\",\n children: item.name\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 865,\n columnNumber: 35\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 845,\n columnNumber: 33\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute top-0 left-0 right-0 h-2 pointer-events-none z-10 \",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n id: `${item.id}-${index + 1}-mpo-port1`,\n jstype: `mpo-${item.portType}-mpo`,\n className: \"absolute left-30 w-12 h-6 bg-[url('/mpo.png')] bg-contain bg-no-repeat bg-center \"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 873,\n columnNumber: 37\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 870,\n columnNumber: 33\n }, this),\n Array.from({\n length: 12\n }).map((_, lcIndex)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n id: `${item.id}-${index + 1}-lc-port${lcIndex + 1}`,\n jstype: `mpo-${item.portType}-lc`,\n className: \"absolute bottom-0 pointer-events-none z-10 \",\n style: {\n left: `${lcIndex * 100 / 12}%`,\n width: `${100 / 12}%`\n },\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-5 h-5 bg-[url('/lc.png')] bg-contain bg-no-repeat bg-center \"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 890,\n columnNumber: 37\n }, this)\n }, lcIndex, false, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 880,\n columnNumber: 35\n }, this))\n ]\n }, index, true, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 843,\n columnNumber: 29\n }, this))\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 838,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-[100%] h-[10%] flex flex-wrap gap-15 justify-center mb-5\",\n children: connectionItems.filter((item)=>item.type === 'connector').map((item, index)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"relative flex-shrink-0 w-16 h-full\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute w-full h-full inset-0 bg-[#0F172A] rounded-lg p-1 select-none\",\n style: {\n position: 'relative',\n zIndex: 1\n },\n onContextMenu: (e)=>{\n e.preventDefault();\n e.stopPropagation();\n handleContextMenu(e, 'connection', {\n index: connectionItems.indexOf(item),\n ...item\n });\n },\n draggable: false,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: (0,_utils_asset__WEBPACK_IMPORTED_MODULE_25__.getAssetUrl)(item.image),\n alt: item.name,\n sizes: \"auto\",\n fill: true,\n className: \"object-contain pointer-events-none\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 916,\n columnNumber: 31\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 903,\n columnNumber: 29\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n id: `${item.id}-${index + 1}-left`,\n jstype: \"connector-left\",\n className: \"absolute inset-0 opacity-0 pointer-events-none\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 925,\n columnNumber: 29\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n id: `${item.id}-${index + 1}-right`,\n jstype: \"connector-right\",\n className: \"absolute inset-0 opacity-0 pointer-events-none\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 931,\n columnNumber: 29\n }, this)\n ]\n }, index, true, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 901,\n columnNumber: 27\n }, this))\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 897,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full h-[30%] flex flex-wrap gap-15 justify-center content-start\",\n children: connectionItems.filter((item)=>item.type === 'cable').map((item, index)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `relative flex-shrink-0 w-18 h-18`,\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute w-full h-full inset-0 bg-[#0F172A] border border-[#0ff]/20 rounded-lg p-1 select-none\",\n style: {\n position: 'relative',\n zIndex: 1\n },\n onContextMenu: (e)=>{\n e.preventDefault();\n e.stopPropagation();\n handleContextMenu(e, 'connection', {\n index: connectionItems.indexOf(item),\n ...item\n });\n },\n draggable: false,\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: (0,_utils_asset__WEBPACK_IMPORTED_MODULE_25__.getAssetUrl)(item.image),\n alt: item.name,\n sizes: \"auto\",\n fill: true,\n className: \"object-contain pointer-events-none\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 959,\n columnNumber: 35\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"absolute bottom-0 left-0 right-0 text-center text-xs text-[#00ff7f] truncate px-1\",\n children: item.name\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 966,\n columnNumber: 35\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 946,\n columnNumber: 33\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n id: `${item.id}-${index + 1}-left`,\n jstype: `cable-${item.portType}-left`,\n lcclean: item.portType === 'fiber' ? 'false' : undefined,\n className: \"absolute -left-4 -bottom-4 w-6 h-6 opacity-0\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 971,\n columnNumber: 33\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n id: `${item.id}-${index + 1}-right`,\n jstype: `cable-${item.portType}-right`,\n lcclean: item.portType === 'fiber' ? 'false' : undefined,\n className: \"absolute -right-4 -top-4 w-6 h-6 opacity-0\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 978,\n columnNumber: 33\n }, this)\n ]\n }, index, true, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 944,\n columnNumber: 29\n }, this))\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 940,\n columnNumber: 23\n }, this)\n ]\n }, void 0, true) : // 如果没有MPO线缆,使用原来的布局\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full h-full flex flex-wrap gap-10 justify-center content-start\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full h-[30%] flex flex-wrap gap-25 justify-center content-start \",\n children: connectionItems.filter((item)=>item.type === 'cable-mpo').map((item, index)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `relative flex-shrink-0 w-18 h-18 `,\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute w-full h-full inset-0 bg-[#0F172A] border border-[#0ff]/20 rounded-lg p-1 select-none\",\n style: {\n position: 'relative',\n zIndex: 1\n },\n onContextMenu: (e)=>{\n e.preventDefault();\n e.stopPropagation();\n handleContextMenu(e, 'connection', {\n index: connectionItems.indexOf(item),\n ...item\n });\n },\n draggable: false,\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: (0,_utils_asset__WEBPACK_IMPORTED_MODULE_25__.getAssetUrl)(item.image),\n alt: item.name,\n sizes: \"auto\",\n fill: true,\n className: \"object-contain pointer-events-none\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 1013,\n columnNumber: 35\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"absolute bottom-0 left-0 right-0 text-center text-xs text-[#00ff7f] truncate px-1\",\n children: item.name\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 1020,\n columnNumber: 35\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 1000,\n columnNumber: 33\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n id: `${item.id}-${index + 1}-left`,\n jstype: `cable-${item.portType}-left`,\n className: \"absolute inset-0 opacity-0 pointer-events-none\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 1025,\n columnNumber: 33\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n id: `${item.id}-${index + 1}-right`,\n jstype: `cable-${item.portType}-right`,\n className: \"absolute inset-0 opacity-0 pointer-events-none\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 1031,\n columnNumber: 33\n }, this)\n ]\n }, index, true, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 998,\n columnNumber: 29\n }, this))\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 994,\n columnNumber: 23\n }, this),\n connectionItems.filter((item)=>item.type === 'cable').map((item, index)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `relative flex-shrink-0 ${connectionItems.filter((i)=>i.type === 'cable').length > 4 ? 'w-18 h-18' : 'w-26 h-32'}`,\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute w-full h-full inset-0 bg-[#0F172A] border border-[#0ff]/20 rounded-lg p-1 select-none\",\n style: {\n position: 'relative',\n zIndex: 1\n },\n onContextMenu: (e)=>{\n e.preventDefault();\n e.stopPropagation();\n handleContextMenu(e, 'connection', {\n index: connectionItems.indexOf(item),\n ...item\n });\n },\n draggable: false,\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: (0,_utils_asset__WEBPACK_IMPORTED_MODULE_25__.getAssetUrl)(item.image),\n alt: item.name,\n sizes: \"auto\",\n fill: true,\n className: \"object-contain pointer-events-none\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 1058,\n columnNumber: 33\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"absolute bottom-0 left-0 right-0 text-center text-xs text-[#00ff7f] truncate px-1\",\n children: item.name\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 1065,\n columnNumber: 33\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 1045,\n columnNumber: 31\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n id: `${item.id}-${index + 1}-left`,\n jstype: `cable-${item.portType}-left`,\n lcclean: item.portType === 'fiber' ? 'false' : undefined,\n className: \"absolute -left-4 -bottom-4 w-6 h-6 opacity-0\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 1070,\n columnNumber: 33\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n id: `${item.id}-${index + 1}-right`,\n jstype: `cable-${item.portType}-right`,\n lcclean: item.portType === 'fiber' ? 'false' : undefined,\n className: \"absolute -right-4 -top-4 w-6 h-6 opacity-0\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 1077,\n columnNumber: 33\n }, this)\n ]\n }, index, true, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 1043,\n columnNumber: 27\n }, this))\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 992,\n columnNumber: 21\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 785,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 712,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 711,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-[45%] flex-1 flex gap-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-[calc(50%-0.5rem)] bg-[#0F172A] shadow-lg p-4 border border-[#0ff]/20 rounded-lg\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"rounded-lg h-[calc(100%-3rem)] p-4 flex flex-col items-center justify-center relative\",\n onDragOver: handleDragOver,\n onDrop: (e)=>handleDrop(e, 'main'),\n onContextMenu: (e)=>{\n e.preventDefault();\n e.stopPropagation();\n const moduleElements = document.querySelectorAll('.main-unit-module');\n const clickedModule = Array.from(moduleElements).find((el)=>el.getBoundingClientRect().left <= e.clientX && el.getBoundingClientRect().right >= e.clientX && el.getBoundingClientRect().top <= e.clientY && el.getBoundingClientRect().bottom >= e.clientY);\n if (clickedModule) {\n const moduleId = clickedModule.getAttribute('data-module-id');\n const module = mainUnitModules.find((m)=>m.id === moduleId);\n handleContextMenu(e, 'main', module);\n } else {\n handleContextMenu(e, 'main');\n }\n },\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"relative w-[50%] top-8 aspect-[2/3] mt-8\",\n children: [\n mainUnitModules.some((m)=>m.id === '8000') && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute -top-14 left-1/2 transform -translate-x-1/2 w-28 h-20 border-2 border-dashed border-[#0ff]/30 rounded-lg flex items-center justify-center\",\n children: mainUnitAdapter ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"relative w-full h-full\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"relative w-full h-full\",\n onContextMenu: (e)=>handleContextMenu(e, 'main', {\n type: 'adapter'\n }),\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: (0,_utils_asset__WEBPACK_IMPORTED_MODULE_25__.getAssetUrl)(mainUnitAdapter.image),\n alt: mainUnitAdapter.name,\n fill: true,\n sizes: \"auto\",\n className: \"object-contain p-1\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 1129,\n columnNumber: 31\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 1125,\n columnNumber: 29\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute -top-0 h-10 rounded-lg group\",\n id: `main-${mainUnitAdapter.port.id}`,\n jstype: `${mainUnitAdapter.jstype}`\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 1138,\n columnNumber: 29\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 1124,\n columnNumber: 27\n }, this) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-[#0ff] text-xs\",\n children: \"适配器插槽\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 1146,\n columnNumber: 27\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 1122,\n columnNumber: 23\n }, this),\n mainUnitPorts.length > 0 && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute -top-7 left-0 right-0 flex justify-center gap-3\",\n children: mainUnitPorts.map((port, index)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n id: `main-${port.id}`,\n jstype: `modelport-${port.module === '8000' ? 'copper' : 'fiber'}`,\n className: \"w-6 h-8 border-2 border-dashed border-[#0ff]/30 rounded-lg relative group\",\n lcclean: [\n 'cfp',\n 'ofp'\n ].includes(port.module) ? 'false' : undefined\n }, index, false, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 1155,\n columnNumber: 27\n }, this))\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 1153,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: (0,_utils_asset__WEBPACK_IMPORTED_MODULE_25__.getAssetUrl)(\"/DSX-MA.png\"),\n alt: \"DSX 主机\",\n sizes: \"auto\",\n fill: true,\n className: \"object-contain\",\n priority: true\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 1167,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 1119,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute top-60 left-0 right-0 flex flex-wrap gap-2 justify-center\",\n children: mainUnitModules.map((module)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n \"data-module-id\": module.id,\n className: \"main-unit-module bg-[#0F172A] p-2 rounded shadow border border-[#0ff]/20\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-xs text-[#00ff7f]\",\n children: [\n \"已安装:\",\n module.name\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 1185,\n columnNumber: 25\n }, this)\n }, module.id, false, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 1180,\n columnNumber: 23\n }, this))\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 1178,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 1095,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 1094,\n columnNumber: 15\n }, this),\n !hasOtdrModule ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-[calc(50%-0.5rem)] bg-[#0F172A] shadow-lg p-4 border border-[#0ff]/20 rounded-lg\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"rounded-lg h-[calc(100%-3rem)] p-4 flex flex-col items-center justify-center relative\",\n onDragOver: handleDragOver,\n onDrop: (e)=>handleDrop(e, 'remote'),\n onContextMenu: (e)=>{\n e.preventDefault();\n e.stopPropagation();\n const moduleElements = document.querySelectorAll('.remote-unit-module');\n const clickedModule = Array.from(moduleElements).find((el)=>el.getBoundingClientRect().left <= e.clientX && el.getBoundingClientRect().right >= e.clientX && el.getBoundingClientRect().top <= e.clientY && el.getBoundingClientRect().bottom >= e.clientY);\n if (clickedModule) {\n const moduleId = clickedModule.getAttribute('data-module-id');\n const module = remoteUnitModules.find((m)=>m.id === moduleId);\n handleContextMenu(e, 'remote', module);\n } else {\n handleContextMenu(e, 'remote');\n }\n },\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"relative w-[50%] top-8 aspect-[2/3] mt-8\",\n children: [\n remoteUnitModules.some((m)=>m.id === '8000') && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute -top-14 left-1/2 transform -translate-x-1/2 w-28 h-20 border-2 border-dashed border-[#0ff]/30 rounded-lg flex items-center justify-center\",\n children: remoteUnitAdapter ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"relative w-full h-full\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"relative w-full h-full\",\n onContextMenu: (e)=>handleContextMenu(e, 'remote', {\n type: 'adapter'\n }),\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: (0,_utils_asset__WEBPACK_IMPORTED_MODULE_25__.getAssetUrl)(remoteUnitAdapter.image),\n alt: remoteUnitAdapter.name,\n sizes: \"auto\",\n fill: true,\n className: \"object-contain p-1\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 1230,\n columnNumber: 33\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 1226,\n columnNumber: 31\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute -top-0 h-10 rounded-lg group\",\n id: `remote-${remoteUnitAdapter.port.id}`,\n jstype: `${remoteUnitAdapter.jstype}`\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 1239,\n columnNumber: 31\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 1225,\n columnNumber: 29\n }, this) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-[#0ff] text-xs\",\n children: \"适配器插槽\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 1247,\n columnNumber: 29\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 1223,\n columnNumber: 24\n }, this),\n remoteUnitPorts.length > 0 && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute -top-7 left-0 right-0 flex justify-center gap-3\",\n children: remoteUnitPorts.map((port, index)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n id: `remote-${port.id}`,\n jstype: `modelport-${port.module === '8000' ? 'copper' : 'fiber'}`,\n className: \"w-6 h-8 border-2 border-dashed border-[#0ff]/30 rounded-lg relative group\",\n lcclean: [\n 'cfp',\n 'ofp'\n ].includes(port.module) ? 'false' : undefined\n }, index, false, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 1256,\n columnNumber: 29\n }, this))\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 1254,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: (0,_utils_asset__WEBPACK_IMPORTED_MODULE_25__.getAssetUrl)(\"/DSX-RE.png\"),\n alt: \"DSX 远端\",\n sizes: \"auto\",\n fill: true,\n className: \"object-contain\",\n priority: true\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 1268,\n columnNumber: 23\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 1220,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute top-60 left-0 right-0 flex flex-wrap gap-2 justify-center\",\n children: remoteUnitModules.map((module)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n \"data-module-id\": module.id,\n className: \"remote-unit-module bg-[#0F172A] p-2 rounded shadow border border-[#0ff]/20\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-xs text-[#00ff7f]\",\n children: [\n \"已安装:\",\n module.name\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 1286,\n columnNumber: 27\n }, this)\n }, module.id, false, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 1281,\n columnNumber: 25\n }, this))\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 1279,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 1196,\n columnNumber: 19\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 1195,\n columnNumber: 17\n }, this) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-[calc(50%-0.5rem)]\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 1294,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 1092,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 709,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-[23%] bg-[#0F172A] shadow-lg p-4 border border-[#0ff]/20 flex flex-col h-full rounded-lg\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-col flex-1\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Tab_headlessui_react__WEBPACK_IMPORTED_MODULE_27__.Tab.Group, {\n as: \"div\",\n className: \"flex flex-col flex-1\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Tab_headlessui_react__WEBPACK_IMPORTED_MODULE_27__.Tab.List, {\n className: \"flex space-x-1 rounded-xl bg-[#0ff]/10 p-1 flex-shrink-0\",\n children: Object.keys(devices).map((category)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Tab_headlessui_react__WEBPACK_IMPORTED_MODULE_27__.Tab, {\n className: ({ selected })=>classNames('w-full rounded-lg py-2.5 text-sm font-medium leading-5', 'ring-[#0ff] ring-opacity-60 ring-offset-2 ring-offset-[#0F172A] focus:outline-none focus:ring-2', selected ? 'bg-[#0F172A] shadow text-[#00ff7f]' : 'text-[#0ff] hover:bg-[#0ff]/[0.12] hover:text-[#00ff7f]'),\n children: category\n }, category, false, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 1305,\n columnNumber: 21\n }, this))\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 1303,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Tab_headlessui_react__WEBPACK_IMPORTED_MODULE_27__.Tab.Panels, {\n className: \"flex-1 mt-2 relative\",\n children: Object.entries(devices).map(([category, categoryDevices], idx)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Tab_headlessui_react__WEBPACK_IMPORTED_MODULE_27__.Tab.Panel, {\n className: \"absolute inset-0 overflow-y-auto custom-scrollbar\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid grid-cols-2 gap-3 p-2\",\n children: categoryDevices.map((device)=>{\n const isSelected = category === '工具' && device.id === _store_deviceStore__WEBPACK_IMPORTED_MODULE_3__[\"default\"].getState().selectedTool?.id;\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `bg-[#0F172A] p-2 rounded shadow border ${isSelected ? 'border-[#00ff7f]' : 'border-[#0ff]/20 hover:border-[#0ff]/40'} transition-colors cursor-pointer z-3000`,\n draggable: category !== '工具',\n onDragStart: (e)=>handleDragStart(e, device),\n onClick: ()=>{\n if (category === '工具') {\n if (isSelected) {\n _store_deviceStore__WEBPACK_IMPORTED_MODULE_3__[\"default\"].getState().clearSelectedTool();\n } else {\n _store_deviceStore__WEBPACK_IMPORTED_MODULE_3__[\"default\"].getState().selectTool(device);\n }\n }\n },\n children: [\n device.image && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"relative w-full aspect-[1/1] mb-2\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_image__WEBPACK_IMPORTED_MODULE_2___default()), {\n src: (0,_utils_asset__WEBPACK_IMPORTED_MODULE_25__.getAssetUrl)(device.image),\n alt: device.name,\n sizes: \"auto\",\n fill: true,\n className: \"object-contain p-1\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 1348,\n columnNumber: 35\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 1347,\n columnNumber: 33\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: `font-medium ${isSelected ? 'text-[#00ff7f]' : 'text-[#0ff]'} text-sm truncate`,\n children: device.name\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 1357,\n columnNumber: 31\n }, this),\n device.description && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-xs text-[#0ff] mt-1 line-clamp-2\",\n children: device.description\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 1359,\n columnNumber: 33\n }, this)\n ]\n }, device.id, true, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 1331,\n columnNumber: 29\n }, this);\n })\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 1327,\n columnNumber: 23\n }, this)\n }, idx, false, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 1323,\n columnNumber: 21\n }, this))\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 1321,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 1302,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 1301,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 1300,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 699,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_JsPlumbInit__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {}, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 1372,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ConnectionAnalyzer__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {}, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 1373,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_Cursors__WEBPACK_IMPORTED_MODULE_18__[\"default\"], {}, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 1374,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_SourceCheck__WEBPACK_IMPORTED_MODULE_19__[\"default\"], {}, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 1375,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_CompetitionStatistics__WEBPACK_IMPORTED_MODULE_20__[\"default\"], {}, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 1377,\n columnNumber: 9\n }, this),\n totalToastMessage && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_TotalToast__WEBPACK_IMPORTED_MODULE_22__[\"default\"], {}, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 1380,\n columnNumber: 31\n }, this),\n portTooltip && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_lib_StatusToast__WEBPACK_IMPORTED_MODULE_23__[\"default\"], {\n status: portTooltip\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 1383,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 684,\n columnNumber: 7\n }, this),\n contextMenu && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ContextMenu__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n x: contextMenu.x,\n y: contextMenu.y,\n onClose: ()=>setContextMenu(null),\n items: [\n ...contextMenu.target === 'connection' && contextMenu.item ? [\n {\n label: '移除物品',\n onClick: ()=>{\n removeConnectionItem(contextMenu.item.index);\n setContextMenu(null);\n }\n }\n ] : contextMenu.item?.type === 'adapter' ? [\n {\n label: '卸载适配器',\n onClick: ()=>{\n handleUninstallAdapter(contextMenu.target);\n setContextMenu(null);\n }\n }\n ] : contextMenu.item?.id ? [\n {\n label: '卸载模块',\n onClick: ()=>{\n handleUninstall(contextMenu.item.id, contextMenu.target);\n setContextMenu(null);\n }\n }\n ] : contextMenu.target === 'main' && mainUnitModules.length > 0 ? [\n {\n label: '卸载模块',\n onClick: ()=>{\n handleUninstall(mainUnitModules[mainUnitModules.length - 1].id, 'main');\n setContextMenu(null);\n }\n }\n ] : contextMenu.target === 'remote' && remoteUnitModules.length > 0 ? [\n {\n label: '卸载模块',\n onClick: ()=>{\n handleUninstall(remoteUnitModules[remoteUnitModules.length - 1].id, 'remote');\n setContextMenu(null);\n }\n }\n ] : []\n ]\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/pages/index.js\",\n lineNumber: 1388,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true);\n}\n\n__webpack_async_result__();\n} catch(e) { __webpack_async_result__(e); } });//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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RSxlQUFlOzRCQUNqQjt3QkFDRjtxQkFDRCxHQUFHRCxZQUFZVSxJQUFJLEVBQUVXLFNBQVMsWUFBWTt3QkFDekM7NEJBQ0U4RyxPQUFPOzRCQUNQcEUsU0FBUztnQ0FDUDNCLHVCQUF1QnBDLFlBQVlrQixNQUFNO2dDQUN6Q2pCLGVBQWU7NEJBQ2pCO3dCQUNGO3FCQUNELEdBQUdELFlBQVlVLElBQUksRUFBRWlCLEtBQUs7d0JBQ3pCOzRCQUNFd0csT0FBTzs0QkFDUHBFLFNBQVM7Z0NBQ1A3QixnQkFBZ0JsQyxZQUFZVSxJQUFJLENBQUNpQixFQUFFLEVBQUUzQixZQUFZa0IsTUFBTTtnQ0FDdkRqQixlQUFlOzRCQUNqQjt3QkFDRjtxQkFDRCxHQUFHRCxZQUFZa0IsTUFBTSxLQUFLLFVBQVVySCxnQkFBZ0IwSCxNQUFNLEdBQUcsSUFBSTt3QkFDaEU7NEJBQ0U0RyxPQUFPOzRCQUNQcEUsU0FBUztnQ0FDUDdCLGdCQUFnQnJJLGVBQWUsQ0FBQ0EsZ0JBQWdCMEgsTUFBTSxHQUFHLEVBQUUsQ0FBQ0ksRUFBRSxFQUFFO2dDQUNoRTFCLGVBQWU7NEJBQ2pCO3dCQUNGO3FCQUNELEdBQUdELFlBQVlrQixNQUFNLEtBQUssWUFBWXBILGtCQUFrQnlILE1BQU0sR0FBRyxJQUFJO3dCQUNwRTs0QkFDRTRHLE9BQU87NEJBQ1BwRSxTQUFTO2dDQUNQN0IsZ0JBQWdCcEksaUJBQWlCLENBQUNBLGtCQUFrQnlILE1BQU0sR0FBRyxFQUFFLENBQUNJLEVBQUUsRUFBRTtnQ0FDcEUxQixlQUFlOzRCQUNqQjt3QkFDRjtxQkFDRCxHQUFHLEVBQUU7aUJBQ1A7Ozs7Ozs7O0FBS1giLCJzb3VyY2VzIjpbIi9vcHQvZGV2L2VzdC1kc3gvc3JjL3BhZ2VzL2luZGV4LmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZVN0YXRlLCB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBUYWIgfSBmcm9tICdAaGVhZGxlc3N1aS9yZWFjdCc7XG5pbXBvcnQgSW1hZ2UgZnJvbSAnbmV4dC9pbWFnZSc7XG5pbXBvcnQgdXNlRGV2aWNlU3RvcmUgZnJvbSAnQC9zdG9yZS9kZXZpY2VTdG9yZSc7XG5pbXBvcnQgdXNlRGlzcGxheVN0b3JlIGZyb20gJ0Avc3RvcmUvZGlzcGxheVN0b3JlJztcbmltcG9ydCBDb250ZXh0TWVudSBmcm9tICdAL2NvbXBvbmVudHMvQ29udGV4dE1lbnUnO1xuaW1wb3J0IEpzUGx1bWJJbml0IGZyb20gJ0AvY29tcG9uZW50cy9Kc1BsdW1iSW5pdCc7XG5pbXBvcnQgQ29ubmVjdGlvbkFuYWx5emVyIGZyb20gJ0AvY29tcG9uZW50cy9Db25uZWN0aW9uQW5hbHl6ZXInO1xuaW1wb3J0IE9mZmljZSBmcm9tICdAL2NvbXBvbmVudHMvc2NlbmUvT2ZmaWNlJztcbmltcG9ydCBJbmR1c3RyeSBmcm9tICdAL2NvbXBvbmVudHMvc2NlbmUvSW5kdXN0cnknO1xuaW1wb3J0IERhdGFDZW50ZXIgZnJvbSAnQC9jb21wb25lbnRzL3NjZW5lL0RhdGFDZW50ZXInO1xuaW1wb3J0IFdvcmxkU2tpbGwgZnJvbSAnQC9jb21wb25lbnRzL3NjZW5lL1dvcmxkU2tpbGwnO1xuaW1wb3J0IFdvcmxkU2tpbGxXT1JLU0hPUCBmcm9tICdAL2NvbXBvbmVudHMvc2NlbmUvV29ybGRTa2lsbFdPUktTSE9QJztcbmltcG9ydCBPZmZpY2VUYXNrIGZyb20gJ0AvY29tcG9uZW50cy9zY2VuZS9PZmZpY2VUYXNrJztcbmltcG9ydCBEYXRhQ2VudGVyVGFzayBmcm9tICdAL2NvbXBvbmVudHMvc2NlbmUvRGF0YUNlbnRlclRhc2snO1xuaW1wb3J0IEluZHVzdHJ5VGFzayBmcm9tICdAL2NvbXBvbmVudHMvc2NlbmUvSW5kdXN0cnlUYXNrJztcbmltcG9ydCBXb3JsZFNraWxsVGFzayBmcm9tICdAL2NvbXBvbmVudHMvc2NlbmUvV29ybGRTa2lsbFRhc2snO1xuaW1wb3J0IERpc1BsYXkgZnJvbSAnQC9jb21wb25lbnRzL0Rpc1BsYXknO1xuaW1wb3J0IEN1cnNvcnMgZnJvbSAnQC9jb21wb25lbnRzL0N1cnNvcnMnO1xuaW1wb3J0IFNvdXJjZUNoZWNrIGZyb20gJ0AvY29tcG9uZW50cy9Tb3VyY2VDaGVjayc7XG5pbXBvcnQgQ29tcGV0aXRpb25TdGF0aXN0aWNzIGZyb20gJ0AvY29tcG9uZW50cy9Db21wZXRpdGlvblN0YXRpc3RpY3MnO1xuaW1wb3J0IFJlc3VsdFRhYmxlIGZyb20gJ0AvY29tcG9uZW50cy9SZXN1bHRUYWJsZSc7XG5pbXBvcnQgVG90YWxUb2FzdCBmcm9tICdAL2NvbXBvbmVudHMvbGliL1RvdGFsVG9hc3QnO1xuaW1wb3J0IFN0YXR1c1RvYXN0IGZyb20gJ0AvY29tcG9uZW50cy9saWIvU3RhdHVzVG9hc3QnO1xuaW1wb3J0IHsgQVBJX1VSTFMgfSBmcm9tICdAL2NvbmZpZy9hcGknO1xuaW1wb3J0IHsgZ2V0QXNzZXRVcmwgfSBmcm9tICdAL3V0aWxzL2Fzc2V0JztcbmltcG9ydCB7IHVzZUF1ZGlvIH0gZnJvbSAnQC9jb21wb25lbnRzL0F1ZGlvUHJvdmlkZXInO1xuXG5cbi8vIOiHquWumuS5iea7muWKqOadoeagt+W8j++8jOS9v+eUqOmdkuiJsuS4u+mimFxuY29uc3Qgc2Nyb2xsYmFyU3R5bGVzID0gYFxuICAuY3VzdG9tLXNjcm9sbGJhcjo6LXdlYmtpdC1zY3JvbGxiYXIge1xuICAgIHdpZHRoOiA2cHg7XG4gIH1cbiAgLmN1c3RvbS1zY3JvbGxiYXI6Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrIHtcbiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgfVxuICAuY3VzdG9tLXNjcm9sbGJhcjo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWIge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMjU1LCAyNTUsIDAuMik7XG4gICAgYm9yZGVyLXJhZGl1czogM3B4O1xuICB9XG4gIC5jdXN0b20tc2Nyb2xsYmFyOjotd2Via2l0LXNjcm9sbGJhci10aHVtYjpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAyNTUsIDI1NSwgMC40KTtcbiAgfVxuICAuY3VzdG9tLXNjcm9sbGJhciB7XG4gICAgc2Nyb2xsYmFyLXdpZHRoOiB0aGluO1xuICAgIHNjcm9sbGJhci1jb2xvcjogcmdiYSgwLCAyNTUsIDI1NSwgMC4yKSB0cmFuc3BhcmVudDtcbiAgfVxuICAuY3VzdG9tLXNjcm9sbGJhcjpob3Zlcjo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWIge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMjU1LCAyNTUsIDAuNCk7XG4gIH1cbmA7XG5cblxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBIb21lKCkge1xuXG5cbiAgLy8g5LuO5YWo5bGA54q25oCB566h55CG5Lit6I635Y+W5omA6ZyA55qE54q25oCB5ZKM5pa55rOVXG4gIFxuICBjb25zdCB7IFxuICAgIGRldmljZXMsICAgICAgICAgICAgICAgIC8vIOaJgOacieiuvuWkh+WIl+ihqFxuICAgIG1haW5Vbml0TW9kdWxlcywgICAgICAgLy8g5Li75py65bey5a6J6KOF55qE5qih5Z2XXG4gICAgcmVtb3RlVW5pdE1vZHVsZXMsICAgICAvLyDov5znq6/lt7Llronoo4XnmoTmqKHlnZdcbiAgICBtYWluVW5pdEFkYXB0ZXIsICAgICAgIC8vIOS4u+acuuW3suWuieijheeahOmAgumFjeWZqFxuICAgIHJlbW90ZVVuaXRBZGFwdGVyLCAgICAgLy8g6L+c56uv5bey5a6J6KOF55qE6YCC6YWN5ZmoXG4gICAgbWFpblVuaXRQb3J0cywgICAgICAgICAvLyDkuLvmnLrnmoTmjqXlj6PliJfooahcbiAgICByZW1vdGVVbml0UG9ydHMsICAgICAgIC8vIOi/nOerr+eahOaOpeWPo+WIl+ihqFxuICAgIGluc3RhbGxNb2R1bGUsICAgICAgICAgLy8g5a6J6KOF5qih5Z2X55qE5pa55rOVXG4gICAgdW5pbnN0YWxsTW9kdWxlLCAgICAgICAvLyDljbjovb3mqKHlnZfnmoTmlrnms5VcbiAgICBpbnN0YWxsQWRhcHRlciwgICAgICAgIC8vIOWuieijhemAgumFjeWZqOeahOaWueazlVxuICAgIHVuaW5zdGFsbEFkYXB0ZXIsICAgICAgLy8g5Y246L296YCC6YWN5Zmo55qE5pa55rOVXG4gICAgY29ubmVjdGlvbkl0ZW1zLCAgICAgICAvLyDov57mjqXljLrnmoTnianlk4HliJfooahcbiAgICBhZGRDb25uZWN0aW9uSXRlbSwgICAgIC8vIOa3u+WKoOi/nuaOpeeJqeWTgeeahOaWueazlVxuICAgIHJlbW92ZUNvbm5lY3Rpb25JdGVtLCAgIC8vIOenu+mZpOi/nuaOpeeJqeWTgeeahOaWueazlVxuICAgIGZhdWx0U2NlbmFyaW9zLCAgICAgICAvLyDmlYXpmpzlnLrmma/liJfooahcbiAgICBlc3Rtb2RlbCxcbiAgICB1cGRhdGVFc3Rtb2RlbCwgICAgICAvLyDmm7TmlrBlc3Rtb2RlbOeahOaWueazlVxuICAgIFdvcmxkU2tpbGxTY2VuYXJpb3MsXG4gICAgc2VhdE51bWJlcixcbiAgICB1cGRhdGVTZWF0TnVtYmVyLFxuICAgIHNlYXRVVUlELFxuICAgIHVwZGF0ZVNlYXRVVUlELFxuICAgIHNlYXRTdGFydFRpbWUsXG4gICAgdXBkYXRlU2VhdFN0YXJ0VGltZSxcbiAgICB0b3RhbFRvYXN0TWVzc2FnZSxcbiAgICBzZXRUb3RhbFRvYXN0TWVzc2FnZVxuICB9ID0gdXNlRGV2aWNlU3RvcmUoKTtcblxuXG4gIC8vIOeKtuaAgeeuoeeQhlxuICBjb25zdCBbaXNDb21wZXRpdGlvbldhaXRpbmcsIHNldElzQ29tcGV0aXRpb25XYWl0aW5nXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW3Nob3dTZWF0SW5wdXQsIHNldFNob3dTZWF0SW5wdXRdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBbdGVtcFNlYXROdW1iZXIsIHNldFRlbXBTZWF0TnVtYmVyXSA9IHVzZVN0YXRlKCcnKTtcbiAgY29uc3QgW2lzRnJvbVVybCwgc2V0SXNGcm9tVXJsXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW3Nob3dDb25maXJtRGlhbG9nLCBzZXRTaG93Q29uZmlybURpYWxvZ10gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtjb25maXJtRGlhbG9nTWVzc2FnZSwgc2V0Q29uZmlybURpYWxvZ01lc3NhZ2VdID0gdXNlU3RhdGUoJycpO1xuICBjb25zdCBbY29uZmlybURpYWxvZ0NhbGxiYWNrLCBzZXRDb25maXJtRGlhbG9nQ2FsbGJhY2tdID0gdXNlU3RhdGUobnVsbCk7XG4gIGNvbnN0IHsgcGxheSB9ID0gdXNlQXVkaW8oKTtcblxuLy8gaWZyYW1l5YaF5bWM5qOA5rWLXG5cbnVzZUVmZmVjdCgoKSA9PiB7XG4gIGNvbnN0IGNoZWNrSWZyYW1lT3JpZ2luID0gKCkgPT4ge1xuICAgIHRyeSB7XG4gICAgICAvLyDmo4DmtYvmmK/lkKblnKhpZnJhbWXkuK1cbiAgICAgIGlmICh3aW5kb3cuc2VsZiA9PT0gd2luZG93LnRvcCkge1xuICAgICAgICAvLyDlpoLmnpzkuI3lnKhpZnJhbWXkuK3vvIjnm7TmjqXorr/pl67vvInvvIzpmLvmraLliqDovb1cbiAgICAgICAgZG9jdW1lbnQuYm9keS5pbm5lckhUTUwgPSAnPGRpdiBzdHlsZT1cInRleHQtYWxpZ246Y2VudGVyO3BhZGRpbmc6NTBweDtmb250LWZhbWlseTpBcmlhbCxzYW5zLXNlcmlmO1wiPjxoMj41MDI8L2gyPjxoMj7orr/pl67ooqvmi5Lnu508L2gyPjwvZGl2Pic7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgLy8g6I635Y+W5b2T5YmNaWZyYW1l55qEVVJM5Y+C5pWwXG4gICAgICAgIGNvbnN0IGN1cnJlbnRVcmwgPSB3aW5kb3cubG9jYXRpb24uaHJlZjtcbiAgICAgICAgY29uc3QgdXJsUGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyhjdXJyZW50VXJsLnNwbGl0KCc/JylbMV0gfHwgJycpO1xuICAgICAgICBsZXQgZmF1bHRTY2VuYXJpb3NQYXJhbSA9IHVybFBhcmFtcy5nZXQoJ2ZhdWx0U2NlbmFyaW9zJykgfHwgJyc7XG4gICAgICAgIGxldCBlc3Rtb2RlbFBhcmFtID0gdXJsUGFyYW1zLmdldCgnZXN0bW9kZWwnKSB8fCAnJztcblxuICAgICAgICB0cnkge1xuICAgICAgICAgIGZhdWx0U2NlbmFyaW9zUGFyYW0gPSBkZWNvZGVVUklDb21wb25lbnQoZmF1bHRTY2VuYXJpb3NQYXJhbSk7XG4gICAgICAgICAgLy8g56e76Zmk5Y+v6IO955qE5bC+6YOo5pac5p2gXG4gICAgICAgICAgZmF1bHRTY2VuYXJpb3NQYXJhbSA9IGZhdWx0U2NlbmFyaW9zUGFyYW0ucmVwbGFjZSgvXFwvJC8sICcnKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge31cblxuICAgICAgICB0cnkge1xuICAgICAgICAgIGVzdG1vZGVsUGFyYW0gPSBkZWNvZGVVUklDb21wb25lbnQoZXN0bW9kZWxQYXJhbSk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHt9XG5cbiAgICAgICAgLy8g57un57ut5bqU55SoIFVSTCDkuK3nmoTmlYXpmpzlnLrmma/kuI7lnovlj7dcbiAgICAgICAgaWYgKGZhdWx0U2NlbmFyaW9zUGFyYW0pIHtcbiAgICAgICAgICB1c2VEZXZpY2VTdG9yZS5zZXRTdGF0ZSh7IGZhdWx0U2NlbmFyaW9zOiBmYXVsdFNjZW5hcmlvc1BhcmFtIH0pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChlc3Rtb2RlbFBhcmFtKSB7XG4gICAgICAgICAgdXBkYXRlRXN0bW9kZWwoZXN0bW9kZWxQYXJhbSk7XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIC8vIOmJtOadg+Wksei0peaIluino+aekOW8guW4uO+8mumYu+atouiuv+mXrlxuICAgICAgICBkb2N1bWVudC5ib2R5LmlubmVySFRNTCA9XG4gICAgICAgICAgJzxkaXYgc3R5bGU9XCJ0ZXh0LWFsaWduOmNlbnRlcjtwYWRkaW5nOjUwcHg7Zm9udC1mYW1pbHk6QXJpYWwsc2Fucy1zZXJpZjtcIj48aDI+NTAyPC9oMj48aDI+6K6/6Zeu6KKr5ouS57udPC9oMj48L2Rpdj4nO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBjaGVja0lmcmFtZU9yaWdpbigpO1xuICB9LCBbXSk7XG5cbnVzZUVmZmVjdCgoKSA9PiB7XG4gIGNvbnN0IGNoZWNrSWZyYW1lT3JpZ2luID0gYXN5bmMgKCkgPT4ge1xuICAgIHRyeSB7XG4gICAgICBcbiAgICAgIC8vIOiOt+WPluW9k+WJjWlmcmFtZeeahFVSTOWPguaVsFxuICAgICAgICBjb25zdCBjdXJyZW50VXJsID0gd2luZG93LmxvY2F0aW9uLmhyZWY7XG4gICAgICAgIGNvbnN0IHVybFBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoY3VycmVudFVybC5zcGxpdCgnPycpWzFdIHx8ICcnKTtcbiAgICAgICAgY29uc3QgdG9rZW4gPSB1cmxQYXJhbXMuZ2V0KCd0b2tlbicpO1xuXG5cbiAgICAgICAgLy8g5YWI6Ym05p2D77ya5rKh5pyJIHRva2VuIOaIlumJtOadg+Wksei0peWImemYu+atouiuv+mXrlxuICAgICAgICBpZiAoIXRva2VuKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCfnvLrlsJEgdG9rZW4nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goQVBJX1VSTFMuQ0hFQ0suQVVUSCwge1xuICAgICAgICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgICAgICAgaGVhZGVyczogeyBBdXRob3JpemF0aW9uOiBgQmVhcmVyICR7dG9rZW59YCB9LFxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCforqTor4HlpLHotKUnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByZXNwb25zZS5qc29uKCk7XG4gICAgICAgIGNvbnN0IHVzZXJuYW1lID0gZGF0YT8udXNlcm5hbWU7XG4gICAgICAgIGlmICghdXNlcm5hbWUpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ+iupOivgeaIkOWKn+S9huacqui/lOWbnueUqOaIt+WQjScpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8g6Ym05p2D5oiQ5Yqf77ya5pu05paw6LWb5L2N5Y+3XG4gICAgICAgIHVwZGF0ZVNlYXROdW1iZXIodXNlcm5hbWUpO1xuICAgICAgICBzZXRJc0Zyb21VcmwodHJ1ZSlcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIC8vIOmJtOadg+Wksei0peaIluino+aekOW8guW4uO+8mumYu+atouiuv+mXrlxuICAgICAgICBkb2N1bWVudC5ib2R5LmlubmVySFRNTCA9XG4gICAgICAgICAgJzxkaXYgc3R5bGU9XCJ0ZXh0LWFsaWduOmNlbnRlcjtwYWRkaW5nOjUwcHg7Zm9udC1mYW1pbHk6QXJpYWwsc2Fucy1zZXJpZjtcIj48aDI+NTAyPC9oMj48aDI+6K6/6Zeu6KKr5ouS57udPC9oMj48L2Rpdj4nO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBjaGVja0lmcmFtZU9yaWdpbigpO1xuICB9LCBbXSk7XG5cblxuXG4vLyDlt6Xlhbflh73mlbDvvJrlkIjlubbnsbvlkI3vvIzov4fmu6TmjonlgYflgLxcbmZ1bmN0aW9uIGNsYXNzTmFtZXMoLi4uY2xhc3Nlcykge1xuICByZXR1cm4gY2xhc3Nlcy5maWx0ZXIoQm9vbGVhbikuam9pbignICcpO1xufVxuXG5cbi8vIOernui1m+aooeW8j+eKtuaAgeeuoeeQhlxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGxldCB0aW1lcjtcbiAgICBpZiAoZmF1bHRTY2VuYXJpb3MgPT09ICdXb3JsZFNraWxsJykge1xuICAgICAgaWYgKHNlYXROdW1iZXIpIHtcbiAgICAgICAgc2V0SXNDb21wZXRpdGlvbldhaXRpbmcodHJ1ZSk7XG4gICAgICAgIHNldFNob3dTZWF0SW5wdXQoZmFsc2UpO1xuICAgICAgICB0aW1lciA9IHNldEludGVydmFsKGFzeW5jICgpID0+IHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChBUElfVVJMUy5DT01QRVRJVElPTi5TVEFUVVMpO1xuICAgICAgICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKTtcbiAgXG4gICAgICAgICAgICBjb25zdCB3YXNSdW5uaW5nID0gIWlzQ29tcGV0aXRpb25XYWl0aW5nO1xuICAgICAgICAgICAgc2V0SXNDb21wZXRpdGlvbldhaXRpbmcoIWRhdGEuaXNSdW5uaW5nKTtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgLy8g5b2T5q+U6LWb54q25oCB5LuO6L+Q6KGM5Y+Y5Li66Z2e6L+Q6KGM5pe26YeN572u5pi+56S654q25oCB5ZKM5riF6Zmk5pys5Zyw57yT5a2YXG4gICAgICAgICAgICBpZiAod2FzUnVubmluZyAmJiAhZGF0YS5pc1J1bm5pbmcpIHtcbiAgICAgICAgICAgICAgdXNlRGlzcGxheVN0b3JlLmdldFN0YXRlKCkucmVzZXRUb0RlZmF1bHRTdGF0ZSgpO1xuICAgICAgICAgICAgICB1c2VEZXZpY2VTdG9yZS5nZXRTdGF0ZSgpLnJlc2V0ZGV2aWNlU3RvcmUoKTtcbiAgICAgICAgICAgICAgLy8g5by65Yi26YeN5paw5riy5p+T57uE5Lu2XG4gICAgICAgICAgICAgIHVzZURldmljZVN0b3JlLnNldFN0YXRlKHsgcmVsb2FkS2V5OiBNYXRoLnJhbmRvbSgpIH0pO1xuICAgICAgICAgICAgfVxuICBcbiAgICAgICAgICAgIGlmIChkYXRhLmlzUnVubmluZykge1xuICAgICAgICAgICAgICB1cGRhdGVTZWF0VVVJRChkYXRhLlVVSUQpO1xuICAgICAgICAgICAgICB1cGRhdGVTZWF0U3RhcnRUaW1lKGRhdGEuc3RhcnRUaW1lKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHVwZGF0ZVNlYXRVVUlEKG51bGwpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCfojrflj5bmr5TotZvnirbmgIHlpLHotKU6JywgZXJyb3IpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSwgMTAwMCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzZXRTaG93U2VhdElucHV0KHRydWUpO1xuICAgICAgICBzZXRJc0NvbXBldGl0aW9uV2FpdGluZyhmYWxzZSk7XG4gICAgICAgIHVwZGF0ZVNlYXRVVUlEKG51bGwpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBzZXRTaG93U2VhdElucHV0KGZhbHNlKTtcbiAgICAgIHNldElzQ29tcGV0aXRpb25XYWl0aW5nKGZhbHNlKTtcbiAgICAgIHNldFRlbXBTZWF0TnVtYmVyKCcnKTtcbiAgICAgIHVwZGF0ZVNlYXRVVUlEKG51bGwpO1xuICAgIH1cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgaWYgKHRpbWVyKSBjbGVhckludGVydmFsKHRpbWVyKTtcbiAgICB9O1xuICB9LCBbZmF1bHRTY2VuYXJpb3MsIHNlYXROdW1iZXIsIHNlYXRVVUlELCB1cGRhdGVTZWF0VVVJRF0pO1xuXG4gIC8vIOWkhOeQhui1m+S9jeWPt+ehruiupFxuICBjb25zdCBoYW5kbGVTZWF0Q29uZmlybSA9ICgpID0+IHtcbiAgICBpZiAodGVtcFNlYXROdW1iZXIudHJpbSgpKSB7XG4gICAgICB1cGRhdGVTZWF0TnVtYmVyKHRlbXBTZWF0TnVtYmVyLnRyaW0oKSk7XG4gICAgICBzZXRTaG93U2VhdElucHV0KGZhbHNlKTtcbiAgICAgIHNldElzRWRpdGluZ1NlYXQoZmFsc2UpO1xuICAgIH1cbiAgfTtcblxuICAvLyDlpITnkIblj5bmtojnrYnlvoVcbiAgY29uc3QgaGFuZGxlQ2FuY2VsV2FpdGluZyA9ICgpID0+IHtcbiAgICB1c2VEZXZpY2VTdG9yZS5zZXRTdGF0ZSh7IGZhdWx0U2NlbmFyaW9zOiAnT2ZmaWNlJyB9KTtcbiAgICBzZXRTaG93U2VhdElucHV0KGZhbHNlKTtcbiAgICBzZXRJc0NvbXBldGl0aW9uV2FpdGluZyhmYWxzZSk7XG4gIH07XG5cbiAgLy8g5pys5Zyw54q25oCB566h55CGXG4gIGNvbnN0IFtjb250ZXh0TWVudSwgc2V0Q29udGV4dE1lbnVdID0gdXNlU3RhdGUobnVsbCk7ICAgIC8vIOWPs+mUruiPnOWNleeKtuaAgVxuICBjb25zdCBbZHJhZ2dlZEl0ZW0sIHNldERyYWdnZWRJdGVtXSA9IHVzZVN0YXRlKG51bGwpOyAgICAvLyDlvZPliY3mi5bmi73nmoTnianlk4FcbiAgY29uc3QgW2lzRHJhd2VyT3Blbiwgc2V0SXNEcmF3ZXJPcGVuXSA9IHVzZVN0YXRlKGZhbHNlKTsgLy8g5bem5L6n5oq95bGJ54q25oCBXG4gIGNvbnN0IFtpc1JpZ2h0RHJhd2VyT3Blbiwgc2V0SXNSaWdodERyYXdlck9wZW5dID0gdXNlU3RhdGUoZmFsc2UpOyAvLyDlj7Pkvqfmir3lsYnnirbmgIFcblxuICAvLyDlpITnkIbmir3lsYnlvIDlhbNcbiAgY29uc3QgdG9nZ2xlRHJhd2VyID0gKCkgPT4ge1xuICAgIHNldElzRHJhd2VyT3BlbighaXNEcmF3ZXJPcGVuKTtcbiAgfTtcblxuICAvLyDlvIDlp4vmi5bmi73ml7bnmoTlpITnkIblh73mlbBcbiAgY29uc3QgaGFuZGxlRHJhZ1N0YXJ0ID0gKGUsIGl0ZW0pID0+IHtcbiAgICBzZXREcmFnZ2VkSXRlbShpdGVtKTtcbiAgICBlLmRhdGFUcmFuc2Zlci5zZXREYXRhKCd0ZXh0L3BsYWluJywgSlNPTi5zdHJpbmdpZnkoaXRlbSkpO1xuICB9O1xuXG4gIC8vIOaLluaLvee7j+i/h+aXtueahOWkhOeQhuWHveaVsFxuICBjb25zdCBoYW5kbGVEcmFnT3ZlciA9IChlKSA9PiB7XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICB9O1xuXG4gIC8vIOaUvue9ruaLluaLveeJqeWTgeaXtueahOWkhOeQhuWHveaVsFxuICBjb25zdCBoYW5kbGVEcm9wID0gKGUsIHRhcmdldCkgPT4ge1xuICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICBpZiAoIWRyYWdnZWRJdGVtKSByZXR1cm47XG5cbiAgICBjb25zdCBpdGVtID0gSlNPTi5wYXJzZShlLmRhdGFUcmFuc2Zlci5nZXREYXRhKCd0ZXh0L3BsYWluJykpO1xuICAgIFxuICAgIC8vIOWkhOeQhuaooeWdl+eahOWuieijhVxuICAgIGlmIChpdGVtLnR5cGUgPT09ICdtb2R1bGUnKSB7XG4gICAgICBjb25zdCB0YXJnZXRNb2R1bGVzID0gdGFyZ2V0ID09PSAnbWFpbicgPyBtYWluVW5pdE1vZHVsZXMgOiByZW1vdGVVbml0TW9kdWxlcztcbiAgICAgIFxuICAgICAgLy8g5qOA5p+l5piv5ZCm5bey5a6J6KOF5qih5Z2XXG4gICAgICBpZiAodGFyZ2V0TW9kdWxlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgIC8vIGFsZXJ0KCfor6Xorr7lpIflt7Llronoo4XkuobmtYvor5XmqKHlnZfvvIzor7flhYjljbjovb3lkI7lho3lronoo4XmlrDmqKHlnZfvvIEnKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgXG4gICAgICBpbnN0YWxsTW9kdWxlKGl0ZW0sIHRhcmdldCk7XG4gICAgICAvLyDmkq3mlL7lronoo4Xpn7PmlYhcbiAgICAgIHBsYXkoJ2luc3RhbGwnKTtcbiAgICB9IFxuICAgIC8vIOWkhOeQhumAgumFjeWZqOeahOWuieijhVxuICAgIGVsc2UgaWYgKGl0ZW0udHlwZSA9PT0gJ2FkYXB0ZXInKSB7XG4gICAgICBjb25zdCB0YXJnZXRNb2R1bGVzID0gdGFyZ2V0ID09PSAnbWFpbicgPyBtYWluVW5pdE1vZHVsZXMgOiByZW1vdGVVbml0TW9kdWxlcztcbiAgICAgIGNvbnN0IHRhcmdldEFkYXB0ZXIgPSB0YXJnZXQgPT09ICdtYWluJyA/IG1haW5Vbml0QWRhcHRlciA6IHJlbW90ZVVuaXRBZGFwdGVyO1xuICAgICAgXG4gICAgICAvLyDmo4Dmn6XmmK/lkKbmraPnoa7lronoo4XmqKHlnZdcbiAgICAgIGlmICghdGFyZ2V0TW9kdWxlcy5zb21lKG0gPT4gbS5pZCA9PT0gJzgwMDAnKSkge1xuICAgICAgICAvLyBhbGVydCgn6K+35YWI5a6J6KOF6ZOc57yG5rWL6K+V5qih5Z2X77yM5YaN5a6J6KOF6YCC6YWN5Zmo77yBJyk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIFxuICAgICAgLy8g5qOA5p+l5piv5ZCm5bey5a6J6KOF6YCC6YWN5ZmoXG4gICAgICBpZiAodGFyZ2V0QWRhcHRlcikge1xuICAgICAgICBpZiAodGFyZ2V0QWRhcHRlci5pZCA9PT0gaXRlbS5pZCkge1xuICAgICAgICAgIC8vIGFsZXJ0KCfor6XpgILphY3lmajlt7Lnu4/lronoo4XvvIzkuI3og73ph43lpI3lronoo4XvvIEnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBhbGVydCgn6K+l6K6+5aSH5bey5a6J6KOF5LqG6YCC6YWN5Zmo77yM6K+35YWI5Y246L295ZCO5YaN5a6J6KOF5paw6YCC6YWN5Zmo77yBJyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgXG4gICAgICBpbnN0YWxsQWRhcHRlcihpdGVtLCB0YXJnZXQpO1xuICAgICAgLy8g5pKt5pS+5a6J6KOF6Z+z5pWIXG4gICAgICBwbGF5KCdpbnN0YWxsJyk7XG4gICAgfVxuICAgIFxuICAgIHNldERyYWdnZWRJdGVtKG51bGwpO1xuICB9O1xuXG4gIC8vIOWkhOeQhuWPs+mUruiPnOWNlVxuICBjb25zdCBoYW5kbGVDb250ZXh0TWVudSA9IChlLCB0YXJnZXQsIGl0ZW0pID0+IHtcbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBzZXRDb250ZXh0TWVudSh7XG4gICAgICB4OiBlLmNsaWVudFgsXG4gICAgICB5OiBlLmNsaWVudFksXG4gICAgICB0YXJnZXQsXG4gICAgICBpdGVtXG4gICAgfSk7XG4gIH07XG5cbiAgLy8g5Y246L295qih5Z2X55qE5aSE55CG5Ye95pWwXG4gIGNvbnN0IGhhbmRsZVVuaW5zdGFsbCA9IChtb2R1bGVJZCwgdGFyZ2V0KSA9PiB7XG4gICAgICB1bmluc3RhbGxNb2R1bGUobW9kdWxlSWQsIHRhcmdldCk7XG4gICAgICAvLyDmkq3mlL7np7vpmaTpn7PmlYhcbiAgICAgICBwbGF5KCd1bmluc3RhbGwnKTtcbiAgfTtcblxuICAvLyDljbjovb3pgILphY3lmajnmoTlpITnkIblh73mlbBcbiAgY29uc3QgaGFuZGxlVW5pbnN0YWxsQWRhcHRlciA9ICh0YXJnZXQpID0+IHtcbiAgICAgIHVuaW5zdGFsbEFkYXB0ZXIodGFyZ2V0KTtcbiAgICAgIC8vIOaSreaUvuenu+mZpOmfs+aViFxuICAgICAgIHBsYXkoJ3VuaW5zdGFsbCcpO1xufTtcblxuICAvLyDmo4Dmn6XmmK/lkKblronoo4XkuoZPVERS5qih5Z2X77yI55So5LqO5o6n5Yi26L+c56uv5Yy65Z+f55qE5pi+56S677yJXG4gIGNvbnN0IGhhc090ZHJNb2R1bGUgPSBtYWluVW5pdE1vZHVsZXMuc29tZShtID0+IG0uaWQgPT09ICdvZnAnKTtcblxuICAvL+m8oOagh+WFg+e0oOepv+mAj+ajgOa1i+aYvuekuuWIsOm8oOagh+WFg+e0oOepv+mAj+ajgOa1i+aYvuekuuWIsFN0YXR1c1RvYXN0XG4gIGNvbnN0IFtwb3J0VG9vbHRpcCwgc2V0UG9ydFRvb2x0aXBdID0gdXNlU3RhdGUoJycpO1xuXG4gIGNvbnN0IGhhbmRsZVBvcnRNb3VzZU1vdmUgPSAoZSkgPT4ge1xuICAgIGNvbnN0IGVsZW1lbnRzID0gZG9jdW1lbnQuZWxlbWVudHNGcm9tUG9pbnQoZS5jbGllbnRYLCBlLmNsaWVudFkpO1xuICAgIGNvbnN0IHBvcnRFbGVtZW50ID0gZWxlbWVudHMuZmluZChlbCA9PiB7XG4gICAgICBjb25zdCBpZCA9IGVsLmlkO1xuICAgICAgcmV0dXJuIFtcbiAgICAgICAgJ21haW4tY2ZwLXNtLW91dCcsXG4gICAgICAgICdtYWluLWNmcC1pbicsXG4gICAgICAgICdtYWluLWNmcC1tbS1vdXQnLFxuICAgICAgICAnbWFpbi12ZmwnLFxuICAgICAgICAncmVtb3RlLWNmcC1zbS1vdXQnLFxuICAgICAgICAncmVtb3RlLWNmcC1pbicsXG4gICAgICAgICdyZW1vdGUtY2ZwLW1tLW91dCcsXG4gICAgICAgICdyZW1vdGUtdmZsJyxcbiAgICAgICAgJ21haW4tb2ZwLXNtLW91dCcsXG4gICAgICAgICdtYWluLW9mcC1tbS1vdXQnXG4gICAgICBdLmluY2x1ZGVzKGlkKTtcbiAgICB9KTtcblxuICAgIGlmIChwb3J0RWxlbWVudCkge1xuICAgICAgY29uc3QgdG9vbHRpcHMgPSB7XG4gICAgICAgICdtYWluLWNmcC1zbS1vdXQnOiAn5Y2V5qih5YWJ5rqQKExDKScsXG4gICAgICAgICdtYWluLWNmcC1pbic6ICflhYnlip/njoforqEoTEMpJyxcbiAgICAgICAgJ21haW4tY2ZwLW1tLW91dCc6ICflpJrmqKHlhYnmupAoTEMpJyxcbiAgICAgICAgJ21haW4tdmZsJzogJ+WPr+inhuaVhemanOWumuS9jShMQyknLFxuICAgICAgICAncmVtb3RlLWNmcC1zbS1vdXQnOiAn5Y2V5qih5YWJ5rqQKExDKScsXG4gICAgICAgICdyZW1vdGUtY2ZwLWluJzogJ+WFieWKn+eOh+iuoShMQyknLFxuICAgICAgICAncmVtb3RlLWNmcC1tbS1vdXQnOiAn5aSa5qih5YWJ5rqQKExDKScsXG4gICAgICAgICdyZW1vdGUtdmZsJzogJ+WPr+inhuaVhemanOWumuS9jShMQyknLFxuICAgICAgICAnbWFpbi1vZnAtc20tb3V0JzogJ+WNleaooeWFiea6kChMQyknLFxuICAgICAgICAnbWFpbi1vZnAtbW0tb3V0JzogJ+WkmuaooeWFiea6kChMQyknXG4gICAgICB9O1xuICAgICAgc2V0UG9ydFRvb2x0aXAodG9vbHRpcHNbcG9ydEVsZW1lbnQuaWRdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2V0UG9ydFRvb2x0aXAoJycpO1xuICAgIH1cbiAgfTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCBoYW5kbGVQb3J0TW91c2VNb3ZlKTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIGhhbmRsZVBvcnRNb3VzZU1vdmUpO1xuICAgIH07XG4gIH0sIFtdKTtcbiAgXG4gICAgICAvLyDkvb/nlKg25L2N6ZqP5py65a2X56ym5L2c5Li65a+G6ZKl77yM6YG/5YWNIDAsTyxvLDEsSSxsIOetieaYk+a3t+a3huWtl+esplxuICAgICAgY29uc3Qga2V5VG9TZWF0TWFwID0ge1xuICAgICAgICAnTTdONFAyJzogJzAxJywgJ1g4SDVXMyc6ICcwMicsICdCNlQ5QTQnOiAnMDMnLCAnUjVZMkM4JzogJzA0JywgJ0s5RDRFNyc6ICcwNScsXG4gICAgICAgICdVM0Y4RzYnOiAnMDYnLCAnUTdWNUgyJzogJzA3JywgJ0E0SjlLNic6ICcwOCcsICdXOE01TjMnOiAnMDknLCAnVDJQN1I0JzogJzEwJyxcbiAgICAgICAgJ1k2UzNVOCc6ICcxMScsICdDOVY0VzcnOiAnMTInLCAnRTVYMlk5JzogJzEzJywgJ0c4WjZBMyc6ICcxNCcsICdINEI3QzUnOiAnMTUnLFxuICAgICAgICAnSzJEOUU2JzogJzE2JywgJ003RjRHOCc6ICcxNycsICdQM0g2SjknOiAnMTgnLCAnUjVLOE0yJzogJzE5JywgJ1Q5TjRQNyc6ICcyMCcsXG4gICAgICAgICdWNlEyUzUnOiAnMjEnLCAnWDhUM1U3JzogJzIyJywgJ1k0VjlXMic6ICcyMycsICdaN1g1WTgnOiAnMjQnLCAnQjNBNkM0JzogJzI1JyxcbiAgICAgICAgJ0Q4RTJGNyc6ICcyNicsICdHNUg5SjMnOiAnMjcnLCAnSzZNNE44JzogJzI4JywgJ1AyUTdSNSc6ICcyOScsICdTOVQzVTYnOiAnMzAnLFxuICAgICAgICAnVjRXOFgyJzogJzMxJywgJ1k3WjVBOSc6ICczMicsICdCM0M2RDQnOiAnMzMnLCAnRThGMkc3JzogJzM0JywgJ0g1SjlLMyc6ICczNScsXG4gICAgICAgICdLRU4nOiAna2VuJywnSFVHTyc6ICdodWdvJywnSFVTS1knOiAnaHVza3knLFxuICAgICAgfTtcbiAgICAgIFxuICAgICAgLy8g5aSE55CG5a+G6ZKl6L6T5YWl5ZKM56Gu6K6kXG4gICAgICBjb25zdCBoYW5kbGVLZXlDb25maXJtID0gKCkgPT4ge1xuICAgICAgICBjb25zdCBzZWF0TnVtYmVyID0ga2V5VG9TZWF0TWFwW3RlbXBTZWF0TnVtYmVyLnRvVXBwZXJDYXNlKCldO1xuICAgICAgICBpZiAoc2VhdE51bWJlcikge1xuICAgICAgICB1cGRhdGVTZWF0TnVtYmVyKHNlYXROdW1iZXIpO1xuICAgICAgICBzZXRTaG93U2VhdElucHV0KGZhbHNlKTtcbiAgICAgICAgXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc2V0Q29uZmlybURpYWxvZ01lc3NhZ2UoJ+aXoOaViOeahOWvhumSpe+8jOivt+mHjeaWsOi+k+WFpScpO1xuICAgICAgICAgIHNldENvbmZpcm1EaWFsb2dDYWxsYmFjaygoKSA9PiAoKSA9PiB7XG4gICAgICAgICAgICBzZXRTaG93Q29uZmlybURpYWxvZyhmYWxzZSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgc2V0U2hvd0NvbmZpcm1EaWFsb2codHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuXG4gICAgICAgICAgICB7Lyog5byA5Y+R546v5aKD5YiH5o2i5Z6L5Y+35oyJ6ZKuICovfVxuICAgICAgICAgICAgey8qIDxkaXYgY2xhc3NOYW1lPVwiZml4ZWQgYm90dG9tLTQgcmlnaHQtNCB6LTUwXCI+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gdXBkYXRlRXN0bW9kZWwoZXN0bW9kZWwgPT09ICdmbHVrZScgPyAnZ2VuZXJhbCcgOiAnZmx1a2UnKX1cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJweC0zIHB5LTIgdGV4dC1zbSByb3VuZGVkIGJnLWJsdWUtNjAwIHRleHQtd2hpdGUgaG92ZXI6YmctYmx1ZS03MDBcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIOWIh+aNouWei+WPt++8mntlc3Rtb2RlbH1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+ICovfVxuXG4gICAgICA8c3R5bGU+e3Njcm9sbGJhclN0eWxlc308L3N0eWxlPlxuICAgICAgey8qIOavlOi1m0lEICovfVxuICAgICAge3NlYXRVVUlEICYmIGZhdWx0U2NlbmFyaW9zID09PSAnV29ybGRTa2lsbCcgJiYgKFxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPSdhYnNvbHV0ZSB0b3AtMSBsZWZ0LTYgei01MCcgPlxuICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT0ndGV4dC13aGl0ZSBvcGFjaXR5LTI1Jz7mnKzlnLrnq57otZvlt7Lnu4/lvIDlp4sge3NlYXRTdGFydFRpbWUgPyBuZXcgRGF0ZShuZXcgRGF0ZSgpLmdldFRpbWUoKSArICg4ICogNjAgKiA2MCAqIDEwMDApIC0gbmV3IERhdGUoc2VhdFN0YXJ0VGltZSkuZ2V0VGltZSgpKS50b0lTT1N0cmluZygpLnN1YnN0cigxMSwgOCkgOiAnMDA6MDA6MDAnfTwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICl9XG4gICAgICB7Lyog5q+U6LWbSUQgKi99XG4gICAgICB7c2VhdFVVSUQgJiYgZmF1bHRTY2VuYXJpb3MgPT09ICdXb3JsZFNraWxsJyAmJiAoXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9J2Fic29sdXRlIHRvcC0xIHJpZ2h0LTYgei01MCcgPlxuICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT0ndGV4dC13aGl0ZSBvcGFjaXR5LTI1Jz57c2VhdFVVSUR9PC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgKX1cblxuICAgICAgey8qIOehruiupOWvueivneahhiAqL31cbiAgICAgIHtzaG93Q29uZmlybURpYWxvZyAmJiAoXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZml4ZWQgaW5zZXQtMCBiZy1ibGFjayBiZy1vcGFjaXR5LTUwIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHotWzEwMDAxXVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmctWyMwRjE3MkFdIHAtOCByb3VuZGVkLWxnIGJvcmRlciBib3JkZXItWyMwZmZdLzIwIHctWzQwMHB4XVwiPlxuICAgICAgICAgICAgPGgzIGNsYXNzTmFtZT1cInRleHQtWyMwZmZdIHRleHQteGwgbWItNFwiPntjb25maXJtRGlhbG9nTWVzc2FnZX08L2gzPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IHNwYWNlLXgtNFwiPlxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgaWYgKGNvbmZpcm1EaWFsb2dDYWxsYmFjaykgY29uZmlybURpYWxvZ0NhbGxiYWNrKCk7XG4gICAgICAgICAgICAgICAgICBlbHNlIHNldFNob3dDb25maXJtRGlhbG9nKGZhbHNlKTtcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInctZnVsbCBiZy1bIzBmZl0vMjAgdGV4dC1bIzBmZl0gcHktMiByb3VuZGVkLWxnIGhvdmVyOmJnLVsjMGZmXS8zMCB0cmFuc2l0aW9uLWNvbG9yc1wiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICDnoa7orqRcbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICApfVxuXG4gICAgICB7Lyog5a+G6ZKl6L6T5YWl5qGGICovfVxuICAgICAge3Nob3dTZWF0SW5wdXQgJiYgZmF1bHRTY2VuYXJpb3MgPT09ICdXb3JsZFNraWxsJyAmJiAoXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZml4ZWQgaW5zZXQtMCBiZy1ibGFjayBiZy1vcGFjaXR5LTUwIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHotWzEwMDAwXVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmctWyMwRjE3MkFdIHAtOCByb3VuZGVkLWxnIGJvcmRlciBib3JkZXItWyMwZmZdLzIwIHctWzQwMHB4XVwiPlxuICAgICAgICAgICAgPGgzIGNsYXNzTmFtZT1cInRleHQtWyMwZmZdIHRleHQteGwgbWItNFwiPuivt+i+k+WFpeWvhumSpTwvaDM+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICB2YWx1ZT17dGVtcFNlYXROdW1iZXJ9XG4gICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gc2V0VGVtcFNlYXROdW1iZXIoZS50YXJnZXQudmFsdWUpfVxuICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ3LWZ1bGwgcHgtNCBweS0yIGJnLVsjMUUyOTNCXSB0ZXh0LXdoaXRlIHJvdW5kZWQtbGcgbWItNCBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXM6cmluZy0yIGZvY3VzOnJpbmctWyMwZmZdLzUwXCJcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCLovpPlhaU25L2N5a+G6ZKlXCJcbiAgICAgICAgICAgICAgbWF4TGVuZ3RoPXs2fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBzcGFjZS14LTRcIj5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2hhbmRsZUtleUNvbmZpcm19XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidy1mdWxsIGJnLVsjMGZmXS8yMCB0ZXh0LVsjMGZmXSBweS0yIHJvdW5kZWQtbGcgaG92ZXI6YmctWyMwZmZdLzMwIHRyYW5zaXRpb24tY29sb3JzXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIOehruiupFxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICl9XG5cbiAgICAgIHsvKiDotZvkvY3lj7fovpPlhaXpga7nvakgKi99XG5cbiAgICAgIHsvKiB7c2hvd1NlYXRJbnB1dCAmJiBmYXVsdFNjZW5hcmlvcyA9PT0gJ1dvcmxkU2tpbGwnICYmIChcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmaXhlZCBpbnNldC0wIGJnLWJsYWNrIGJnLW9wYWNpdHktNTAgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgei1bMTAwMDBdXCI+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJiZy1bIzBGMTcyQV0gcC04IHJvdW5kZWQtbGcgYm9yZGVyIGJvcmRlci1bIzBmZl0vMjAgdy1bNDAwcHhdXCI+XG4gICAgICAgICAgICA8aDMgY2xhc3NOYW1lPVwidGV4dC1bIzBmZl0gdGV4dC14bCBtYi00XCI+6K+36L6T5YWl6LWb5L2N5Y+3PC9oMz5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgIHZhbHVlPXt0ZW1wU2VhdE51bWJlcn1cbiAgICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiBzZXRUZW1wU2VhdE51bWJlcihlLnRhcmdldC52YWx1ZSl9XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT1cInctZnVsbCBweC00IHB5LTIgYmctWyMxRTI5M0JdIHRleHQtd2hpdGUgcm91bmRlZC1sZyBtYi00IGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1czpyaW5nLTIgZm9jdXM6cmluZy1bIzBmZl0vNTBcIlxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIui+k+WFpei1m+S9jeWPt1wiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IHNwYWNlLXgtNFwiPlxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgb25DbGljaz17aGFuZGxlU2VhdENvbmZpcm19XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidy1mdWxsIGJnLVsjMGZmXS8yMCB0ZXh0LVsjMGZmXSBweS0yIHJvdW5kZWQtbGcgaG92ZXI6YmctWyMwZmZdLzMwIHRyYW5zaXRpb24tY29sb3JzXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIOehruiupFxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICl9ICAqL31cblxuICAgICAgey8qIOernui1m+etieW+hemBrue9qSAqL31cbiAgICAgIHtpc0NvbXBldGl0aW9uV2FpdGluZyAmJiBmYXVsdFNjZW5hcmlvcyA9PT0gJ1dvcmxkU2tpbGwnICYmIHNlYXROdW1iZXIgJiYgKFxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZpeGVkIGluc2V0LTAgYmctYmxhY2sgYmctb3BhY2l0eS01MCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciB6LVsxMDAwMF1cIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJnLVsjMEYxNzJBXSBwLTggcm91bmRlZC1sZyBib3JkZXIgYm9yZGVyLVsjMGZmXS8yMCB3LVs0MDBweF1cIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBqdXN0aWZ5LWJldHdlZW4gaXRlbXMtY2VudGVyIG1iLTRcIj5cbiAgICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC1bIzBmZl0gdGV4dC14bFwiPuivt+etieW+heavlOi1m+W8gOWnizwvcD5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC1bIzBmZl0gZm9udC1ib2xkXCI+6LWb5L2N5Y+377yae3NlYXROdW1iZXJ9PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgKX1cblxuXG5cblxuICAgICAgey8qIOW3puS+p+aMiemSriAqL31cbiAgICAgIDxidXR0b25cbiAgICAgICAgb25DbGljaz17dG9nZ2xlRHJhd2VyfVxuICAgICAgICBjbGFzc05hbWU9XCJmaXhlZCBsZWZ0LTAgdG9wLTEvMiAtdHJhbnNsYXRlLXktMS8yIGJnLVsjMEYxNzJBXSBoLWZ1bGwgdy02IHJvdW5kZWQtci1sZyAgaG92ZXI6YmctWyMxRTI5M0JdIHRyYW5zaXRpb24tY29sb3JzIHotOTk5OSBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBncm91cFwiXG4gICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy0zIGgtMyByZWxhdGl2ZSB0cmFuc2Zvcm0gZ3JvdXAtaG92ZXI6dHJhbnNsYXRlLXgtMC41IHRyYW5zaXRpb24tdHJhbnNmb3JtXCI+XG4gICAgICAgICAgPEltYWdlXG4gICAgICAgICAgICBzcmM9e2dldEFzc2V0VXJsKCcvYXJyb3cucG5nJyl9XG4gICAgICAgICAgICBhbHQ9XCLlsZXlvIDlt6XlhbfnrrFcIlxuICAgICAgICAgICAgZmlsbFxuICAgICAgICAgICAgY2xhc3NOYW1lPXtgb2JqZWN0LWNvbnRhaW4gJHtpc0RyYXdlck9wZW4gPyAnc2NhbGUteC1bLTFdJyA6ICcnfWB9XG4gICAgICAgICAgICBzaXplcz1cIjEwMHZ3XCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvYnV0dG9uPlxuXG4gICAgICB7Lyog5Y+z5L6n5oyJ6ZKuICovfVxuICAgICAgey8qICB7ZmF1bHRTY2VuYXJpb3MgIT09ICdXb3JsZFNraWxsJyAmJiAoICovfVxuXG4gICAgICA8YnV0dG9uXG4gICAgICAgIG9uQ2xpY2s9eygpID0+IHNldElzUmlnaHREcmF3ZXJPcGVuKCFpc1JpZ2h0RHJhd2VyT3Blbil9XG4gICAgICAgIGNsYXNzTmFtZT1cImZpeGVkIHJpZ2h0LTAgdG9wLTEvMiAtdHJhbnNsYXRlLXktMS8yIGJnLVsjMEYxNzJBXSBoLWZ1bGwgdy02IHJvdW5kZWQtbC1sZyBob3ZlcjpiZy1bIzFFMjkzQl0gdHJhbnNpdGlvbi1jb2xvcnMgei05OTk5IGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIGdyb3VwXCJcbiAgICAgID5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LTMgaC0zIHJlbGF0aXZlIHRyYW5zZm9ybSBncm91cC1ob3Zlcjp0cmFuc2xhdGUteC1bLTAuNXB4XSB0cmFuc2l0aW9uLXRyYW5zZm9ybVwiPlxuICAgICAgICAgIDxJbWFnZVxuICAgICAgICAgICAgc3JjPXtnZXRBc3NldFVybCgnL2Fycm93LnBuZycpfVxuICAgICAgICAgICAgYWx0PVwi5bGV5byA5Y+z5L6n6Z2i5p2/XCJcbiAgICAgICAgICAgIGZpbGxcbiAgICAgICAgICAgIGNsYXNzTmFtZT17YG9iamVjdC1jb250YWluICR7aXNSaWdodERyYXdlck9wZW4gPyAnc2NhbGUteC1bMV0nIDogJ3NjYWxlLXgtWy0xXSd9YH1cbiAgICAgICAgICAgIHNpemVzPVwiMTAwdndcIlxuICAgICAgICAgIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9idXR0b24+XG5cbiAgICAgIHsvKiAgKX0gICovfVxuXG4gICAgICB7Lyog5bem5L6n5oq95bGJ5qih5oCB5qGGICovfVxuXG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzTmFtZT17YGZpeGVkIGxlZnQtMCB0b3AtMCBoLWZ1bGwgdy1mdWxsIGJnLVsjMEYxNzJBXSBib3JkZXItciBib3JkZXItWyMwZmZdLzIwIHRyYW5zZm9ybSB0cmFuc2l0aW9uLXRyYW5zZm9ybSBkdXJhdGlvbi0zMDAgZWFzZS1pbi1vdXQgei05OTk4ICR7aXNEcmF3ZXJPcGVuID8gJ3RyYW5zbGF0ZS14LTAnIDogJy10cmFuc2xhdGUteC1mdWxsJ31gfVxuICAgICAgPlxuICAgICAgICB7Lyog5aaC5p6c6KaB5aKe5Yqg5Zy65pmv5YiH5o2iICoq56e76ZmkcHQtMjUqKiAgKi99XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHQtMjUgcC04XCI+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJzcGFjZS15LTIgY3VzdG9tLXNjcm9sbGJhclwiPlxuICAgICAgICAgICAgey8qIOWcuuaZr+WIh+aNoumAiemhuSAqL31cbnsvKiBcbuWmguaenOimgeWinuWKoOWcuuaZr+WIh+aNoiAqKuenu+mZpHB0LTI1ICoqXG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy1mdWxsIGJnLVsjMUUyOTNCXSBwLTQgcm91bmRlZC1sZ1wiPlxuICAgICAgICAgICAgICA8aDMgY2xhc3NOYW1lPVwidGV4dC1bIzBmZl0gdGV4dC1sZyBtYi0yXCI+5Zy65pmv5YiH5o2iPC9oMz5cblxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInNwYWNlLXktMiBcIj5cblxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgLy8gdXNlRGlzcGxheVN0b3JlLmdldFN0YXRlKCkucmVzZXRUb0RlZmF1bHRTdGF0ZSgpO1xuICAgICAgICAgICAgICAgICAgICAvLyB1c2VEZXZpY2VTdG9yZS5nZXRTdGF0ZSgpLnJlc2V0ZGV2aWNlU3RvcmUoKTtcbiAgICAgICAgICAgICAgICAgICAgdXNlRGV2aWNlU3RvcmUuc2V0U3RhdGUoeyBmYXVsdFNjZW5hcmlvczogJ09mZmljZScgfSk7XG4gICAgICAgICAgICAgICAgICAgIHNldElzRHJhd2VyT3BlbihmYWxzZSk7XG4gICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgdy0xLzQgcC0yIHJvdW5kZWQgJHtmYXVsdFNjZW5hcmlvcyA9PT0gJ09mZmljZScgPyAnYmctWyMwZmZdLzIwIHRleHQtWyMwZmZdJyA6ICdiZy1bIzMzNDE1NV0gdGV4dC13aGl0ZSBob3ZlcjpiZy1bIzQ3NTU2OV0nfSB0cmFuc2l0aW9uLWNvbG9yc2B9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAg5Yqe5YWs5Zy65pmvXG4gICAgICAgICAgICAgICAgPC9idXR0b24+IFxuXG5cblxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgLy8gdXNlRGlzcGxheVN0b3JlLmdldFN0YXRlKCkucmVzZXRUb0RlZmF1bHRTdGF0ZSgpO1xuICAgICAgICAgICAgICAgICAgICAvLyB1c2VEZXZpY2VTdG9yZS5nZXRTdGF0ZSgpLnJlc2V0ZGV2aWNlU3RvcmUoKTtcbiAgICAgICAgICAgICAgICAgICAgdXNlRGV2aWNlU3RvcmUuc2V0U3RhdGUoeyBmYXVsdFNjZW5hcmlvczogJ0luZHVzdHJ5JyB9KTtcbiAgICAgICAgICAgICAgICAgICAgc2V0SXNEcmF3ZXJPcGVuKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2B3LTEvNCBwLTIgcm91bmRlZCAke2ZhdWx0U2NlbmFyaW9zID09PSAnSW5kdXN0cnknID8gJ2JnLVsjMGZmXS8yMCB0ZXh0LVsjMGZmXScgOiAnYmctWyMzMzQxNTVdIHRleHQtd2hpdGUgaG92ZXI6YmctWyM0NzU1NjldJ30gdHJhbnNpdGlvbi1jb2xvcnNgfVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIOW3peS4muWcuuaZr1xuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgLy8gdXNlRGlzcGxheVN0b3JlLmdldFN0YXRlKCkucmVzZXRUb0RlZmF1bHRTdGF0ZSgpO1xuICAgICAgICAgICAgICAgICAgICAvLyB1c2VEZXZpY2VTdG9yZS5nZXRTdGF0ZSgpLnJlc2V0ZGV2aWNlU3RvcmUoKTtcbiAgICAgICAgICAgICAgICAgICAgdXNlRGV2aWNlU3RvcmUuc2V0U3RhdGUoeyBmYXVsdFNjZW5hcmlvczogJ0RhdGFDZW50ZXInIH0pO1xuICAgICAgICAgICAgICAgICAgICBzZXRJc0RyYXdlck9wZW4oZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17YHctMS80IHAtMiByb3VuZGVkICR7ZmF1bHRTY2VuYXJpb3MgPT09ICdEYXRhQ2VudGVyJyA/ICdiZy1bIzBmZl0vMjAgdGV4dC1bIzBmZl0nIDogJ2JnLVsjMzM0MTU1XSB0ZXh0LXdoaXRlIGhvdmVyOmJnLVsjNDc1NTY5XSd9IHRyYW5zaXRpb24tY29sb3JzYH1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICDmlbDmja7kuK3lv4NcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgLy8gdXNlRGlzcGxheVN0b3JlLmdldFN0YXRlKCkucmVzZXRUb0RlZmF1bHRTdGF0ZSgpO1xuICAgICAgICAgICAgICAgICAgICAvLyB1c2VEZXZpY2VTdG9yZS5nZXRTdGF0ZSgpLnJlc2V0ZGV2aWNlU3RvcmUoKTtcbiAgICAgICAgICAgICAgICAgICAgdXNlRGV2aWNlU3RvcmUuc2V0U3RhdGUoeyBmYXVsdFNjZW5hcmlvczogJ1dvcmxkU2tpbGwnIH0pO1xuICAgICAgICAgICAgICAgICAgICBzZXRJc0RyYXdlck9wZW4oZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17YHctMS80IHAtMiByb3VuZGVkICR7ZmF1bHRTY2VuYXJpb3MgPT09ICdXb3JsZFNraWxsJyA/ICdiZy1bIzBmZl0vMjAgdGV4dC1bIzBmZl0nIDogJ2JnLVsjMzM0MTU1XSB0ZXh0LXdoaXRlIGhvdmVyOmJnLVsjNDc1NTY5XSd9IHRyYW5zaXRpb24tY29sb3JzYH1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICDnq57otZvmqKHlvI9cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj4gIFxuXG5cbiAgICAgICAgICAgICAgPC9kaXY+XG5cblxuICAgICAgICAgICAgPC9kaXY+IFxuXG4qL31cblxuICAgICAgICAgICAge2ZhdWx0U2NlbmFyaW9zID09PSAnT2ZmaWNlJyA/IDxPZmZpY2VUYXNrIC8+IDpcbiAgICAgICAgICAgICBmYXVsdFNjZW5hcmlvcyA9PT0gJ0luZHVzdHJ5JyA/IDxJbmR1c3RyeVRhc2sgLz4gOlxuICAgICAgICAgICAgIGZhdWx0U2NlbmFyaW9zID09PSAnRGF0YUNlbnRlcicgPyA8RGF0YUNlbnRlclRhc2sgLz4gOlxuICAgICAgICAgICAgIGZhdWx0U2NlbmFyaW9zID09PSAnV29ybGRTa2lsbCcgPyA8V29ybGRTa2lsbFRhc2sgLz4gOlxuICAgICAgICAgICAgIDxXb3JsZFNraWxsVGFzayAvPn1cblxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuIFxuXG4gICAgICB7Lyog5Y+z5L6n5oq95bGJ5qih5oCB5qGGICovfVxuICAgICAgey8qIHtmYXVsdFNjZW5hcmlvcyAhPT0gJ1dvcmxkU2tpbGwnICYmICggKi99XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzTmFtZT17YGZpeGVkIHJpZ2h0LTAgdG9wLTAgaC1mdWxsIHctWzY4JV0gYmctWyMwRjE3MkFdIGJvcmRlci1sIGJvcmRlci1bIzBmZl0vMjAgdHJhbnNmb3JtIHRyYW5zaXRpb24tdHJhbnNmb3JtIGR1cmF0aW9uLTMwMCBlYXNlLWluLW91dCB6LTk5OTggJHtpc1JpZ2h0RHJhd2VyT3BlbiA/ICd0cmFuc2xhdGUteC0wJyA6ICd0cmFuc2xhdGUteC1mdWxsJ31gfVxuICAgICAgPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInAtOFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwic3BhY2UteS0yIGN1c3RvbS1zY3JvbGxiYXJcIj5cbiAgICAgICAgICAgIDxSZXN1bHRUYWJsZSAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgey8qICl9ICovfVxuXG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImgtc2NyZWVuIGJnLVsjMEYxNzJBXSBwLTYgb3ZlcmZsb3ctaGlkZGVuXCI+XG4gICAgICAgIHsvKiDmlYXpmpznrrHljLrln58gKi99XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaC1bMzB2aF0gYmctWyMwRjE3MkFdIHNoYWRvdy1sZyBwLTIgbWItNCBib3JkZXIgYm9yZGVyLVsjMGZmXS8yMCByb3VuZGVkLWxnXCI+XG4gICAgICAgICAgICB7ZmF1bHRTY2VuYXJpb3MgPT09ICdPZmZpY2UnID8gPE9mZmljZSBrZXk9e3VzZURldmljZVN0b3JlLmdldFN0YXRlKCkucmVsb2FkS2V5fSAvPiA6XG4gICAgICAgICAgICAgZmF1bHRTY2VuYXJpb3MgPT09ICdJbmR1c3RyeScgPyA8SW5kdXN0cnkga2V5PXt1c2VEZXZpY2VTdG9yZS5nZXRTdGF0ZSgpLnJlbG9hZEtleX0gLz4gOlxuICAgICAgICAgICAgIGZhdWx0U2NlbmFyaW9zID09PSAnRGF0YUNlbnRlcicgPyA8RGF0YUNlbnRlciBrZXk9e3VzZURldmljZVN0b3JlLmdldFN0YXRlKCkucmVsb2FkS2V5fSAvPiA6XG4gICAgICAgICAgICAgZmF1bHRTY2VuYXJpb3MgPT09ICdXb3JsZFNraWxsJyA/IChcbiAgICAgICAgICAgICAgIFdvcmxkU2tpbGxTY2VuYXJpb3MgPT09ICdXT1JLU0hPUCcgPyBcbiAgICAgICAgICAgICAgICAgPFdvcmxkU2tpbGxXT1JLU0hPUCBrZXk9e3VzZURldmljZVN0b3JlLmdldFN0YXRlKCkucmVsb2FkS2V5fSAvPiA6IFxuICAgICAgICAgICAgICAgICA8V29ybGRTa2lsbCBrZXk9e3VzZURldmljZVN0b3JlLmdldFN0YXRlKCkucmVsb2FkS2V5fSAvPlxuICAgICAgICAgICAgICkgOlxuICAgICAgICAgICAgIDxXb3JsZFNraWxsIGtleT17dXNlRGV2aWNlU3RvcmUuZ2V0U3RhdGUoKS5yZWxvYWRLZXl9IC8+fVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgXG4gICAgICAgIHsvKiDlupXpg6jljLrln58gKi99XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaC1bY2FsYyg3MHZoLTJyZW0pXSBmbGV4IGdhcC00XCI+XG4gICAgICAgICAgey8qIOWxj+W5leaYvuekuuWMuuWfnyAqL31cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctWzMyJV0gYmctWyMwRjE3MkFdIHNoYWRvdy1sZyBwLTIgYm9yZGVyIGJvcmRlci1bIzBmZl0vMjAgcm91bmRlZC1sZyBmbGV4IGp1c3RpZnktY2VudGVyIFwiPlxuICAgICAgICAgIDxEaXNQbGF5IC8+XG4gICAgICAgICAgICB7LyogPGRpdiBjbGFzc05hbWU9XCJzY2FsZS1bMC45XSBvcmlnaW4tdG9wXCI+XG4gICAgICAgICAgICA8RGlzUGxheSAvPlxuICAgICAgICAgICAgPC9kaXY+ICovfVxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgey8qIOWunuS9k+WMuuWfnyAqL31cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctWzQ1JV0gZmxleCBmbGV4LWNvbCBnYXAtNFwiPlxuICAgICAgICAgICAgey8qIOi/nue6v+WMuuWfnyAqL31cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaC1bNTUlXSBiZy1bIzBGMTcyQV0gc2hhZG93LWxnICBib3JkZXIgYm9yZGVyLVsjMGZmXS8yMCByb3VuZGVkLWxnIHJlbGF0aXZlXCI+XG4gICAgICAgICAgICAgIDxkaXYgXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiaC1mdWxsIHJlbGF0aXZlXCJcbiAgICAgICAgICAgICAgICBvbkRyYWdPdmVyPXtoYW5kbGVEcmFnT3Zlcn1cbiAgICAgICAgICAgICAgICBvbkRyb3A9eyhlKSA9PiB7XG4gICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICBpZiAoIWRyYWdnZWRJdGVtKSByZXR1cm47XG4gICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW0gPSBKU09OLnBhcnNlKGUuZGF0YVRyYW5zZmVyLmdldERhdGEoJ3RleHQvcGxhaW4nKSk7XG4gICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgIC8vIOajgOafpeaYr+WQpuS4um1wb+exu+Wei+e6v+e8hu+8jOWmguaenOaYr++8jOWImeajgOafpeW3suWtmOWcqOeahG1wb+e6v+e8huaVsOmHj1xuICAgICAgICAgICAgICAgICAgaWYgKGl0ZW0udHlwZSA9PT0gJ21wbycpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZXhpc3RpbmdNcG9Db3VudCA9IGNvbm5lY3Rpb25JdGVtcy5maWx0ZXIoZXhpc3RpbmdJdGVtID0+IGV4aXN0aW5nSXRlbS50eXBlID09PSAnbXBvJykubGVuZ3RoO1xuICAgICAgICAgICAgICAgICAgICAvLyDlpoLmnpzlt7LlrZjlnKjkuKTkuKptcG/nur/nvIbvvIzliJnkuI3mt7vliqDmlrDnmoRcbiAgICAgICAgICAgICAgICAgICAgaWYgKGV4aXN0aW5nTXBvQ291bnQgPj0gMikge1xuICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICBhZGRDb25uZWN0aW9uSXRlbShpdGVtKTtcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgIG9uQ29udGV4dE1lbnU9eyhlKSA9PiB7XG4gICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICAgICAgaGFuZGxlQ29udGV4dE1lbnUoZSwgJ2Nvbm5lY3Rpb24nKTtcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgey8qIOS4iuWxgiAtIOi/nuaOpeWZqOWxgiAqL31cbiAgICAgICAgICAgICAgICB7IWNvbm5lY3Rpb25JdGVtcy5zb21lKGl0ZW0gPT4gaXRlbS50eXBlID09PSAnbXBvJykgJiYgKFxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJoLVsxNSVdIHAtMSBmbGV4IGdhcC0yNSBjdXN0b20tc2Nyb2xsYmFyIGp1c3RpZnktY2VudGVyIHJlbGF0aXZlXCI+XG4gICAgICAgICAgICAgICAgICAgIHtjb25uZWN0aW9uSXRlbXNcbiAgICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKGl0ZW0gPT4gaXRlbS50eXBlID09PSAnY29ubmVjdG9yJylcbiAgICAgICAgICAgICAgICAgICAgICAubWFwKChpdGVtLCBpbmRleCkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBrZXk9e2luZGV4fSBjbGFzc05hbWU9XCJyZWxhdGl2ZSBmbGV4LXNocmluay0wIHctMTYgaC1mdWxsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHsvKiDlj6/op4HnmoTov57mjqXlmajlhYPntKAgKi99XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJhYnNvbHV0ZSB3LWZ1bGwgaC1mdWxsIGluc2V0LTAgYmctWyMwRjE3MkFdIHJvdW5kZWQtbGcgcC0xIHNlbGVjdC1ub25lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246ICdyZWxhdGl2ZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6SW5kZXg6IDFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ29udGV4dE1lbnU9eyhlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlQ29udGV4dE1lbnUoZSwgJ2Nvbm5lY3Rpb24nLCB7IGluZGV4OiBjb25uZWN0aW9uSXRlbXMuaW5kZXhPZihpdGVtKSwgLi4uaXRlbSB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyYWdnYWJsZT17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SW1hZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz17Z2V0QXNzZXRVcmwoaXRlbS5pbWFnZSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ9e2l0ZW0ubmFtZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVzPXtcImF1dG9cIn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cIm9iamVjdC1jb250YWluIHBvaW50ZXItZXZlbnRzLW5vbmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7Lyog6ZqQ6JeP55qE5bem5L6n56uv54K55YWD57SgICovfVxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9e2Ake2l0ZW0uaWR9LSR7aW5kZXggKyAxfS1sZWZ0YH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBqc3R5cGU9XCJjb25uZWN0b3ItbGVmdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiYWJzb2x1dGUgaW5zZXQtMCBvcGFjaXR5LTAgcG9pbnRlci1ldmVudHMtbm9uZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHsvKiDpmpDol4/nmoTlj7Pkvqfnq6/ngrnlhYPntKAgKi99XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD17YCR7aXRlbS5pZH0tJHtpbmRleCArIDF9LXJpZ2h0YH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBqc3R5cGU9XCJjb25uZWN0b3ItcmlnaHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImFic29sdXRlIGluc2V0LTAgb3BhY2l0eS0wIHBvaW50ZXItZXZlbnRzLW5vbmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIHsvKiDkuIvlsYIgLSDot7Pnur/lsYIgKi99XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2BoLWZ1bGwgdy1mdWxsIHJvdW5kZWQtbGcgcC0yIGZsZXggZmxleC1jb2wgb3ZlcmZsb3cteS1hdXRvIGN1c3RvbS1zY3JvbGxiYXIgcmVsYXRpdmVgfT5cbiAgICAgICAgICAgICAgICAgIHsvKiDmo4Dmn6XmmK/lkKbmnIlNUE/nsbvlnovnmoTnur/nvIYgKi99XG4gICAgICAgICAgICAgICAgICB7Y29ubmVjdGlvbkl0ZW1zLnNvbWUoaXRlbSA9PiBpdGVtLnR5cGUgPT09ICdtcG8nKSA/IChcbiAgICAgICAgICAgICAgICAgICAgLy8g5aaC5p6c5pyJTVBP57q/57yG77yM5L2/55So5LiK5LiL5YiG5Yy65biD5bGAXG4gICAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgICAgey8qIE1QT+i3s+e6v+WMuuWfnyAtIDMwJSAtIE1QT+e6v+e8hiAqL31cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctZnVsbCBoLVszMCVdIGZsZXggZmxleC13cmFwIGdhcC0xNSBqdXN0aWZ5LWNlbnRlciBjb250ZW50LXN0YXJ0IG1iLTNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtjb25uZWN0aW9uSXRlbXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLmZpbHRlcihpdGVtID0+IGl0ZW0udHlwZSA9PT0gJ2NhYmxlLW1wbycpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC5tYXAoKGl0ZW0sIGluZGV4KSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBrZXk9e2luZGV4fSBjbGFzc05hbWU9e2ByZWxhdGl2ZSBmbGV4LXNocmluay0wIHctMTggaC0xOCBgfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgey8qIOWPr+ingeeahOi3s+e6v+WFg+e0oCAqL31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImFic29sdXRlIHctZnVsbCBoLWZ1bGwgaW5zZXQtMCBiZy1bIzBGMTcyQV0gYm9yZGVyIGJvcmRlci1bIzBmZl0vMjAgcm91bmRlZC1sZyBwLTEgc2VsZWN0LW5vbmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHpJbmRleDogMVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Db250ZXh0TWVudT17KGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVDb250ZXh0TWVudShlLCAnY29ubmVjdGlvbicsIHsgaW5kZXg6IGNvbm5lY3Rpb25JdGVtcy5pbmRleE9mKGl0ZW0pLCAuLi5pdGVtIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJhZ2dhYmxlPXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJbWFnZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjPXtnZXRBc3NldFVybChpdGVtLmltYWdlKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdD17aXRlbS5uYW1lfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZXM9e1wiYXV0b1wifVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwib2JqZWN0LWNvbnRhaW4gcG9pbnRlci1ldmVudHMtbm9uZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJhYnNvbHV0ZSBib3R0b20tMCBsZWZ0LTAgcmlnaHQtMCB0ZXh0LWNlbnRlciB0ZXh0LXhzIHRleHQtWyMwMGZmN2ZdIHRydW5jYXRlIHB4LTFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtpdGVtLm5hbWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgey8qIOmakOiXj+eahOW3puS+p+err+eCueWFg+e0oCAqL31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPXtgJHtpdGVtLmlkfS0ke2luZGV4ICsgMX0tbGVmdGB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAganN0eXBlPXtgY2FibGUtJHtpdGVtLnBvcnRUeXBlfS1sZWZ0YH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJhYnNvbHV0ZSBpbnNldC0wIG9wYWNpdHktMCBwb2ludGVyLWV2ZW50cy1ub25lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgey8qIOmakOiXj+eahOWPs+S+p+err+eCueWFg+e0oCAqL31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPXtgJHtpdGVtLmlkfS0ke2luZGV4ICsgMX0tcmlnaHRgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzdHlwZT17YGNhYmxlLSR7aXRlbS5wb3J0VHlwZX0tcmlnaHRgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImFic29sdXRlIGluc2V0LTAgb3BhY2l0eS0wIHBvaW50ZXItZXZlbnRzLW5vbmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICB7Lyog5LiK5pa55Yy65Z+fIC0gMzAlIC0gTVBP6L2s5o6l55uSICovfVxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy1bMTAwJV0gaC1bMzAlXSBmbGV4IGZsZXgtd3JhcCBnYXAtMTUganVzdGlmeS1jZW50ZXIgbWItNVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge2Nvbm5lY3Rpb25JdGVtc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKGl0ZW0gPT4gaXRlbS50eXBlID09PSAnbXBvJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g5LiN5YaN6ZmQ5Yi25Y+q5pi+56S656ys5LiA5LiqTVBP57q/57yG77yM5pyA5aSa5pi+56S65Lik5LiqXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC5tYXAoKGl0ZW0sIGluZGV4KSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBrZXk9e2luZGV4fSBjbGFzc05hbWU9XCJyZWxhdGl2ZSBmbGV4LXNocmluay0wIHctWzQwJV0gaC1mdWxsIG14LTFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgey8qIOWPr+ingeeahE1QT+i3s+e6v+WFg+e0oCAqL31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImFic29sdXRlIHctZnVsbCBoLWZ1bGwgaW5zZXQtMCBiZy1bIzBGMTcyQV0gYm9yZGVyIGJvcmRlci1bIzBmZl0vMjAgcm91bmRlZC1sZyBwLTEgc2VsZWN0LW5vbmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHpJbmRleDogMVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Db250ZXh0TWVudT17KGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVDb250ZXh0TWVudShlLCAnY29ubmVjdGlvbicsIHsgaW5kZXg6IGNvbm5lY3Rpb25JdGVtcy5pbmRleE9mKGl0ZW0pLCAuLi5pdGVtIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJhZ2dhYmxlPXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJbWFnZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjPXtnZXRBc3NldFVybChpdGVtLmltYWdlKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdD17aXRlbS5uYW1lfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZXM9e1wiYXV0b1wifVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwib2JqZWN0LWNvbnRhaW4gcG9pbnRlci1ldmVudHMtbm9uZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJhYnNvbHV0ZSBib3R0b20tMCBsZWZ0LTAgcmlnaHQtMCB0ZXh0LWNlbnRlciB0ZXh0LXhzIHRleHQtWyMwMGZmN2ZdIHRydW5jYXRlIHB4LTFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtpdGVtLm5hbWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgey8qIOmhtumDqE1QT+err+eCueWFg+e0oCAqL31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImFic29sdXRlIHRvcC0wIGxlZnQtMCByaWdodC0wIGgtMiBwb2ludGVyLWV2ZW50cy1ub25lIHotMTAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD17YCR7aXRlbS5pZH0tJHtpbmRleCArIDF9LW1wby1wb3J0MWB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqc3R5cGU9e2BtcG8tJHtpdGVtLnBvcnRUeXBlfS1tcG9gfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiYWJzb2x1dGUgbGVmdC0zMCB3LTEyIGgtNiBiZy1bdXJsKCcvbXBvLnBuZycpXSBiZy1jb250YWluIGJnLW5vLXJlcGVhdCBiZy1jZW50ZXIgXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgey8qIOW6lemDqDEy5LiqTEPnq6/ngrnlhYPntKAgKi99XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtBcnJheS5mcm9tKHsgbGVuZ3RoOiAxMiB9KS5tYXAoKF8sIGxjSW5kZXgpID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e2xjSW5kZXh9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD17YCR7aXRlbS5pZH0tJHtpbmRleCArIDF9LWxjLXBvcnQke2xjSW5kZXggKyAxfWB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqc3R5cGU9e2BtcG8tJHtpdGVtLnBvcnRUeXBlfS1sY2B9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJhYnNvbHV0ZSBib3R0b20tMCAgcG9pbnRlci1ldmVudHMtbm9uZSB6LTEwIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZWZ0OiBgJHsobGNJbmRleCAqIDEwMCkgLyAxMn0lYCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IGAkezEwMCAvIDEyfSVgLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctNSBoLTUgYmctW3VybCgnL2xjLnBuZycpXSBiZy1jb250YWluIGJnLW5vLXJlcGVhdCBiZy1jZW50ZXIgXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgey8qIOS4iuaWueWMuuWfnyAtIDEwJSAtIOi/nuaOpeWZqOWxgiAqL31cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctWzEwMCVdIGgtWzEwJV0gZmxleCBmbGV4LXdyYXAgZ2FwLTE1IGp1c3RpZnktY2VudGVyIG1iLTVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtjb25uZWN0aW9uSXRlbXNcbiAgICAgICAgICAgICAgICAgICAgICAgIC5maWx0ZXIoaXRlbSA9PiBpdGVtLnR5cGUgPT09ICdjb25uZWN0b3InKVxuICAgICAgICAgICAgICAgICAgICAgICAgLm1hcCgoaXRlbSwgaW5kZXgpID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBrZXk9e2luZGV4fSBjbGFzc05hbWU9XCJyZWxhdGl2ZSBmbGV4LXNocmluay0wIHctMTYgaC1mdWxsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgey8qIOWPr+ingeeahOi/nuaOpeWZqOWFg+e0oCAqL31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJhYnNvbHV0ZSB3LWZ1bGwgaC1mdWxsIGluc2V0LTAgYmctWyMwRjE3MkFdIHJvdW5kZWQtbGcgcC0xIHNlbGVjdC1ub25lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6SW5kZXg6IDFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNvbnRleHRNZW51PXsoZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZUNvbnRleHRNZW51KGUsICdjb25uZWN0aW9uJywgeyBpbmRleDogY29ubmVjdGlvbkl0ZW1zLmluZGV4T2YoaXRlbSksIC4uLml0ZW0gfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJhZ2dhYmxlPXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SW1hZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjPXtnZXRBc3NldFVybChpdGVtLmltYWdlKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0PXtpdGVtLm5hbWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVzPXtcImF1dG9cIn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJvYmplY3QtY29udGFpbiBwb2ludGVyLWV2ZW50cy1ub25lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgey8qIOmakOiXj+eahOW3puS+p+err+eCueWFg+e0oCAqL31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD17YCR7aXRlbS5pZH0tJHtpbmRleCArIDF9LWxlZnRgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAganN0eXBlPVwiY29ubmVjdG9yLWxlZnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiYWJzb2x1dGUgaW5zZXQtMCBvcGFjaXR5LTAgcG9pbnRlci1ldmVudHMtbm9uZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Lyog6ZqQ6JeP55qE5Y+z5L6n56uv54K55YWD57SgICovfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPXtgJHtpdGVtLmlkfS0ke2luZGV4ICsgMX0tcmlnaHRgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAganN0eXBlPVwiY29ubmVjdG9yLXJpZ2h0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImFic29sdXRlIGluc2V0LTAgb3BhY2l0eS0wIHBvaW50ZXItZXZlbnRzLW5vbmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgey8qIOS4i+aWueWMuuWfnyAtIDMwJSAtIOaZrumAmue6v+e8hiAqL31cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctZnVsbCBoLVszMCVdIGZsZXggZmxleC13cmFwIGdhcC0xNSBqdXN0aWZ5LWNlbnRlciBjb250ZW50LXN0YXJ0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7Y29ubmVjdGlvbkl0ZW1zXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC5maWx0ZXIoaXRlbSA9PiBpdGVtLnR5cGUgPT09ICdjYWJsZScpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC5tYXAoKGl0ZW0sIGluZGV4KSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBrZXk9e2luZGV4fSBjbGFzc05hbWU9e2ByZWxhdGl2ZSBmbGV4LXNocmluay0wIHctMTggaC0xOGB9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Lyog5Y+v6KeB55qE6Lez57q/5YWD57SgICovfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiYWJzb2x1dGUgdy1mdWxsIGgtZnVsbCBpbnNldC0wIGJnLVsjMEYxNzJBXSBib3JkZXIgYm9yZGVyLVsjMGZmXS8yMCByb3VuZGVkLWxnIHAtMSBzZWxlY3Qtbm9uZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgekluZGV4OiAxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNvbnRleHRNZW51PXsoZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZUNvbnRleHRNZW51KGUsICdjb25uZWN0aW9uJywgeyBpbmRleDogY29ubmVjdGlvbkl0ZW1zLmluZGV4T2YoaXRlbSksIC4uLml0ZW0gfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcmFnZ2FibGU9e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEltYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9e2dldEFzc2V0VXJsKGl0ZW0uaW1hZ2UpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0PXtpdGVtLm5hbWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplcz17XCJhdXRvXCJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJvYmplY3QtY29udGFpbiBwb2ludGVyLWV2ZW50cy1ub25lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cImFic29sdXRlIGJvdHRvbS0wIGxlZnQtMCByaWdodC0wIHRleHQtY2VudGVyIHRleHQteHMgdGV4dC1bIzAwZmY3Zl0gdHJ1bmNhdGUgcHgtMVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2l0ZW0ubmFtZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Lyog6ZqQ6JeP55qE5bem5L6n56uv54K55YWD57SgICovfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9e2Ake2l0ZW0uaWR9LSR7aW5kZXggKyAxfS1sZWZ0YH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqc3R5cGU9e2BjYWJsZS0ke2l0ZW0ucG9ydFR5cGV9LWxlZnRgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxjY2xlYW49e2l0ZW0ucG9ydFR5cGUgPT09ICdmaWJlcicgPyAnZmFsc2UnIDogdW5kZWZpbmVkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImFic29sdXRlIC1sZWZ0LTQgLWJvdHRvbS00IHctNiBoLTYgb3BhY2l0eS0wXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgey8qIOmakOiXj+eahOWPs+S+p+err+eCueWFg+e0oCAqL31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPXtgJHtpdGVtLmlkfS0ke2luZGV4ICsgMX0tcmlnaHRgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzdHlwZT17YGNhYmxlLSR7aXRlbS5wb3J0VHlwZX0tcmlnaHRgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxjY2xlYW49e2l0ZW0ucG9ydFR5cGUgPT09ICdmaWJlcicgPyAnZmFsc2UnIDogdW5kZWZpbmVkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImFic29sdXRlIC1yaWdodC00IC10b3AtNCB3LTYgaC02IG9wYWNpdHktMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICAgICAgKSA6IChcblxuICAgICAgICAgICAgICAgICAgICAvLyDlpoLmnpzmsqHmnIlNUE/nur/nvIbvvIzkvb/nlKjljp/mnaXnmoTluIPlsYBcbiAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy1mdWxsIGgtZnVsbCBmbGV4IGZsZXgtd3JhcCBnYXAtMTAganVzdGlmeS1jZW50ZXIgY29udGVudC1zdGFydFwiPlxuICAgICAgICAgICAgICAgICAgICAgIHsvKiDkuIrmlrnljLrln58gLSAzMCUgLSDov57mjqXlmajlsYIgKiAqL31cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctZnVsbCBoLVszMCVdIGZsZXggZmxleC13cmFwIGdhcC0yNSBqdXN0aWZ5LWNlbnRlciBjb250ZW50LXN0YXJ0IFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge2Nvbm5lY3Rpb25JdGVtc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKGl0ZW0gPT4gaXRlbS50eXBlID09PSAnY2FibGUtbXBvJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLm1hcCgoaXRlbSwgaW5kZXgpID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGtleT17aW5kZXh9IGNsYXNzTmFtZT17YHJlbGF0aXZlIGZsZXgtc2hyaW5rLTAgdy0xOCBoLTE4IGB9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Lyog5Y+v6KeB55qE6Lez57q/5YWD57SgICovfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiYWJzb2x1dGUgdy1mdWxsIGgtZnVsbCBpbnNldC0wIGJnLVsjMEYxNzJBXSBib3JkZXIgYm9yZGVyLVsjMGZmXS8yMCByb3VuZGVkLWxnIHAtMSBzZWxlY3Qtbm9uZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgekluZGV4OiAxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNvbnRleHRNZW51PXsoZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZUNvbnRleHRNZW51KGUsICdjb25uZWN0aW9uJywgeyBpbmRleDogY29ubmVjdGlvbkl0ZW1zLmluZGV4T2YoaXRlbSksIC4uLml0ZW0gfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcmFnZ2FibGU9e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEltYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9e2dldEFzc2V0VXJsKGl0ZW0uaW1hZ2UpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0PXtpdGVtLm5hbWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplcz17XCJhdXRvXCJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJvYmplY3QtY29udGFpbiBwb2ludGVyLWV2ZW50cy1ub25lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cImFic29sdXRlIGJvdHRvbS0wIGxlZnQtMCByaWdodC0wIHRleHQtY2VudGVyIHRleHQteHMgdGV4dC1bIzAwZmY3Zl0gdHJ1bmNhdGUgcHgtMVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2l0ZW0ubmFtZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Lyog6ZqQ6JeP55qE5bem5L6n56uv54K55YWD57SgICovfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9e2Ake2l0ZW0uaWR9LSR7aW5kZXggKyAxfS1sZWZ0YH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqc3R5cGU9e2BjYWJsZS0ke2l0ZW0ucG9ydFR5cGV9LWxlZnRgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImFic29sdXRlIGluc2V0LTAgb3BhY2l0eS0wIHBvaW50ZXItZXZlbnRzLW5vbmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Lyog6ZqQ6JeP55qE5Y+z5L6n56uv54K55YWD57SgICovfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9e2Ake2l0ZW0uaWR9LSR7aW5kZXggKyAxfS1yaWdodGB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAganN0eXBlPXtgY2FibGUtJHtpdGVtLnBvcnRUeXBlfS1yaWdodGB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiYWJzb2x1dGUgaW5zZXQtMCBvcGFjaXR5LTAgcG9pbnRlci1ldmVudHMtbm9uZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIHsvKiDkuIvmlrnljLrln58gLSDot7Pnur/lsYIgKiAqL31cbiAgICAgICAgICAgICAgICAgICAgICB7Y29ubmVjdGlvbkl0ZW1zXG4gICAgICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKGl0ZW0gPT4gaXRlbS50eXBlID09PSAnY2FibGUnKVxuICAgICAgICAgICAgICAgICAgICAgICAgLm1hcCgoaXRlbSwgaW5kZXgpID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBrZXk9e2luZGV4fSBjbGFzc05hbWU9e2ByZWxhdGl2ZSBmbGV4LXNocmluay0wICR7Y29ubmVjdGlvbkl0ZW1zLmZpbHRlcihpID0+IGkudHlwZSA9PT0gJ2NhYmxlJykubGVuZ3RoID4gNCA/ICd3LTE4IGgtMTgnIDogJ3ctMjYgaC0zMid9YH0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Lyog5Y+v6KeB55qE6Lez57q/5YWD57SgICovfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJhYnNvbHV0ZSB3LWZ1bGwgaC1mdWxsIGluc2V0LTAgYmctWyMwRjE3MkFdIGJvcmRlciBib3JkZXItWyMwZmZdLzIwIHJvdW5kZWQtbGcgcC0xIHNlbGVjdC1ub25lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6SW5kZXg6IDFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Db250ZXh0TWVudT17KGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVDb250ZXh0TWVudShlLCAnY29ubmVjdGlvbicsIHsgaW5kZXg6IGNvbm5lY3Rpb25JdGVtcy5pbmRleE9mKGl0ZW0pLCAuLi5pdGVtIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcmFnZ2FibGU9e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SW1hZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9e2dldEFzc2V0VXJsKGl0ZW0uaW1hZ2UpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdD17aXRlbS5uYW1lfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVzPXtcImF1dG9cIn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwib2JqZWN0LWNvbnRhaW4gcG9pbnRlci1ldmVudHMtbm9uZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cImFic29sdXRlIGJvdHRvbS0wIGxlZnQtMCByaWdodC0wIHRleHQtY2VudGVyIHRleHQteHMgdGV4dC1bIzAwZmY3Zl0gdHJ1bmNhdGUgcHgtMVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtpdGVtLm5hbWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgey8qIOmakOiXj+eahOW3puS+p+err+eCueWFg+e0oCAqL31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPXtgJHtpdGVtLmlkfS0ke2luZGV4ICsgMX0tbGVmdGB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAganN0eXBlPXtgY2FibGUtJHtpdGVtLnBvcnRUeXBlfS1sZWZ0YH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsY2NsZWFuPXtpdGVtLnBvcnRUeXBlID09PSAnZmliZXInID8gJ2ZhbHNlJyA6IHVuZGVmaW5lZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJhYnNvbHV0ZSAtbGVmdC00IC1ib3R0b20tNCB3LTYgaC02IG9wYWNpdHktMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsvKiDpmpDol4/nmoTlj7Pkvqfnq6/ngrnlhYPntKAgKi99XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD17YCR7aXRlbS5pZH0tJHtpbmRleCArIDF9LXJpZ2h0YH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqc3R5cGU9e2BjYWJsZS0ke2l0ZW0ucG9ydFR5cGV9LXJpZ2h0YH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsY2NsZWFuPXtpdGVtLnBvcnRUeXBlID09PSAnZmliZXInID8gJ2ZhbHNlJyA6IHVuZGVmaW5lZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJhYnNvbHV0ZSAtcmlnaHQtNCAtdG9wLTQgdy02IGgtNiBvcGFjaXR5LTBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgey8qIOS4u+acuuWSjOi/nOerr+WMuuWfnyAqL31cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaC1bNDUlXSBmbGV4LTEgZmxleCBnYXAtNFwiPlxuICAgICAgICAgICAgICB7Lyog5Li75py65Yy65Z+fICovfVxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctW2NhbGMoNTAlLTAuNXJlbSldIGJnLVsjMEYxNzJBXSBzaGFkb3ctbGcgcC00IGJvcmRlciBib3JkZXItWyMwZmZdLzIwIHJvdW5kZWQtbGdcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IFxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwicm91bmRlZC1sZyBoLVtjYWxjKDEwMCUtM3JlbSldIHAtNCBmbGV4IGZsZXgtY29sIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciByZWxhdGl2ZVwiXG4gICAgICAgICAgICAgICAgICBvbkRyYWdPdmVyPXtoYW5kbGVEcmFnT3Zlcn1cbiAgICAgICAgICAgICAgICAgIG9uRHJvcD17KGUpID0+IGhhbmRsZURyb3AoZSwgJ21haW4nKX1cbiAgICAgICAgICAgICAgICAgIG9uQ29udGV4dE1lbnU9eyhlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbW9kdWxlRWxlbWVudHMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcubWFpbi11bml0LW1vZHVsZScpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjbGlja2VkTW9kdWxlID0gQXJyYXkuZnJvbShtb2R1bGVFbGVtZW50cykuZmluZChlbCA9PiBcbiAgICAgICAgICAgICAgICAgICAgICBlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0IDw9IGUuY2xpZW50WCAmJlxuICAgICAgICAgICAgICAgICAgICAgIGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnJpZ2h0ID49IGUuY2xpZW50WCAmJlxuICAgICAgICAgICAgICAgICAgICAgIGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcCA8PSBlLmNsaWVudFkgJiZcbiAgICAgICAgICAgICAgICAgICAgICBlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5ib3R0b20gPj0gZS5jbGllbnRZXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICBpZiAoY2xpY2tlZE1vZHVsZSkge1xuICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1vZHVsZUlkID0gY2xpY2tlZE1vZHVsZS5nZXRBdHRyaWJ1dGUoJ2RhdGEtbW9kdWxlLWlkJyk7XG4gICAgICAgICAgICAgICAgICAgICAgY29uc3QgbW9kdWxlID0gbWFpblVuaXRNb2R1bGVzLmZpbmQobSA9PiBtLmlkID09PSBtb2R1bGVJZCk7XG4gICAgICAgICAgICAgICAgICAgICAgaGFuZGxlQ29udGV4dE1lbnUoZSwgJ21haW4nLCBtb2R1bGUpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZUNvbnRleHRNZW51KGUsICdtYWluJyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyZWxhdGl2ZSB3LVs1MCVdIHRvcC04IGFzcGVjdC1bMi8zXSBtdC04XCI+XG4gICAgICAgICAgICAgICAgICAgIHsvKiDpgILphY3lmajlronoo4XmoYYgKi99XG4gICAgICAgICAgICAgICAgICAgIHttYWluVW5pdE1vZHVsZXMuc29tZShtID0+IG0uaWQgPT09ICc4MDAwJykgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYWJzb2x1dGUgLXRvcC0xNCBsZWZ0LTEvMiB0cmFuc2Zvcm0gLXRyYW5zbGF0ZS14LTEvMiB3LTI4IGgtMjAgYm9yZGVyLTIgYm9yZGVyLWRhc2hlZCBib3JkZXItWyMwZmZdLzMwIHJvdW5kZWQtbGcgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHttYWluVW5pdEFkYXB0ZXIgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicmVsYXRpdmUgdy1mdWxsIGgtZnVsbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJyZWxhdGl2ZSB3LWZ1bGwgaC1mdWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ29udGV4dE1lbnU9eyhlKSA9PiBoYW5kbGVDb250ZXh0TWVudShlLCAnbWFpbicsIHsgdHlwZTogJ2FkYXB0ZXInIH0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJbWFnZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9e2dldEFzc2V0VXJsKG1haW5Vbml0QWRhcHRlci5pbWFnZSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdD17bWFpblVuaXRBZGFwdGVyLm5hbWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZXM9e1wiYXV0b1wifVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJvYmplY3QtY29udGFpbiBwLTFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Lyog6YCC6YWN5Zmo6aG26YOo55qE6L+e57q/5qGGICovfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJhYnNvbHV0ZSAtdG9wLTAgaC0xMCByb3VuZGVkLWxnIGdyb3VwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPXtgbWFpbi0ke21haW5Vbml0QWRhcHRlci5wb3J0LmlkfWB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqc3R5cGU9e2Ake21haW5Vbml0QWRhcHRlci5qc3R5cGV9YH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC1bIzBmZl0gdGV4dC14c1wiPumAgumFjeWZqOaPkuanvTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgICAgICAgICAgey8qIOaOpeWPo+ahhiAqL31cbiAgICAgICAgICAgICAgICAgICAge21haW5Vbml0UG9ydHMubGVuZ3RoID4gMCAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJhYnNvbHV0ZSAtdG9wLTcgbGVmdC0wIHJpZ2h0LTAgZmxleCBqdXN0aWZ5LWNlbnRlciBnYXAtM1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAge21haW5Vbml0UG9ydHMubWFwKChwb3J0LCBpbmRleCwpID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17aW5kZXh9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9e2BtYWluLSR7cG9ydC5pZH1gfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzdHlwZT17YG1vZGVscG9ydC0ke3BvcnQubW9kdWxlID09PSAnODAwMCcgPyAnY29wcGVyJyA6ICdmaWJlcid9YH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ3LTYgaC04IGJvcmRlci0yIGJvcmRlci1kYXNoZWQgYm9yZGVyLVsjMGZmXS8zMCByb3VuZGVkLWxnIHJlbGF0aXZlIGdyb3VwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsY2NsZWFuPXtbJ2NmcCcsICdvZnAnXS5pbmNsdWRlcyhwb3J0Lm1vZHVsZSkgPyAnZmFsc2UnIDogdW5kZWZpbmVkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICl9XG4gIFxuICAgICAgICAgICAgICAgICAgICA8SW1hZ2VcbiAgICAgICAgICAgICAgICAgICAgICBzcmM9e2dldEFzc2V0VXJsKFwiL0RTWC1NQS5wbmdcIil9XG4gICAgICAgICAgICAgICAgICAgICAgYWx0PVwiRFNYIOS4u+aculwiXG4gICAgICAgICAgICAgICAgICAgICAgc2l6ZXM9e1wiYXV0b1wifVxuICAgICAgICAgICAgICAgICAgICAgIGZpbGxcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJvYmplY3QtY29udGFpblwiXG4gICAgICAgICAgICAgICAgICAgICAgcHJpb3JpdHlcbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICB7Lyog5bey5a6J6KOF5qih5Z2X5YiX6KGoICovfVxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJhYnNvbHV0ZSB0b3AtNjAgbGVmdC0wIHJpZ2h0LTAgZmxleCBmbGV4LXdyYXAgZ2FwLTIganVzdGlmeS1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAge21haW5Vbml0TW9kdWxlcy5tYXAoKG1vZHVsZSkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleT17bW9kdWxlLmlkfVxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1tb2R1bGUtaWQ9e21vZHVsZS5pZH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cIm1haW4tdW5pdC1tb2R1bGUgYmctWyMwRjE3MkFdIHAtMiByb3VuZGVkIHNoYWRvdyBib3JkZXIgYm9yZGVyLVsjMGZmXS8yMFwiXG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC14cyB0ZXh0LVsjMDBmZjdmXVwiPuW3suWuieijhe+8mnttb2R1bGUubmFtZX08L3A+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgey8qIOi/nOerr+WMuuWfnyAqL31cbiAgICAgICAgICAgICAgeyFoYXNPdGRyTW9kdWxlID8gKFxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy1bY2FsYyg1MCUtMC41cmVtKV0gYmctWyMwRjE3MkFdIHNoYWRvdy1sZyBwLTQgYm9yZGVyIGJvcmRlci1bIzBmZl0vMjAgcm91bmRlZC1sZ1wiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwicm91bmRlZC1sZyBoLVtjYWxjKDEwMCUtM3JlbSldIHAtNCBmbGV4IGZsZXgtY29sIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciByZWxhdGl2ZVwiXG4gICAgICAgICAgICAgICAgICAgIG9uRHJhZ092ZXI9e2hhbmRsZURyYWdPdmVyfVxuICAgICAgICAgICAgICAgICAgICBvbkRyb3A9eyhlKSA9PiBoYW5kbGVEcm9wKGUsICdyZW1vdGUnKX1cbiAgICAgICAgICAgICAgICAgICAgb25Db250ZXh0TWVudT17KGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtb2R1bGVFbGVtZW50cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5yZW1vdGUtdW5pdC1tb2R1bGUnKTtcbiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjbGlja2VkTW9kdWxlID0gQXJyYXkuZnJvbShtb2R1bGVFbGVtZW50cykuZmluZChlbCA9PiBcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQgPD0gZS5jbGllbnRYICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5yaWdodCA+PSBlLmNsaWVudFggJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcCA8PSBlLmNsaWVudFkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmJvdHRvbSA+PSBlLmNsaWVudFlcbiAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgIGlmIChjbGlja2VkTW9kdWxlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtb2R1bGVJZCA9IGNsaWNrZWRNb2R1bGUuZ2V0QXR0cmlidXRlKCdkYXRhLW1vZHVsZS1pZCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbW9kdWxlID0gcmVtb3RlVW5pdE1vZHVsZXMuZmluZChtID0+IG0uaWQgPT09IG1vZHVsZUlkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZUNvbnRleHRNZW51KGUsICdyZW1vdGUnLCBtb2R1bGUpO1xuICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVDb250ZXh0TWVudShlLCAncmVtb3RlJyk7XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInJlbGF0aXZlIHctWzUwJV0gdG9wLTggYXNwZWN0LVsyLzNdIG10LThcIj5cbiAgICAgICAgICAgICAgICAgICAgICB7Lyog6L+c56uv6YCC6YWN5Zmo5a6J6KOF5qGGICovfVxuICAgICAgICAgICAgICAgICAgICAgIHtyZW1vdGVVbml0TW9kdWxlcy5zb21lKG0gPT4gbS5pZCA9PT0gJzgwMDAnKSAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYWJzb2x1dGUgLXRvcC0xNCBsZWZ0LTEvMiB0cmFuc2Zvcm0gLXRyYW5zbGF0ZS14LTEvMiB3LTI4IGgtMjAgYm9yZGVyLTIgYm9yZGVyLWRhc2hlZCBib3JkZXItWyMwZmZdLzMwIHJvdW5kZWQtbGcgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtyZW1vdGVVbml0QWRhcHRlciA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInJlbGF0aXZlIHctZnVsbCBoLWZ1bGxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInJlbGF0aXZlIHctZnVsbCBoLWZ1bGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNvbnRleHRNZW51PXsoZSkgPT4gaGFuZGxlQ29udGV4dE1lbnUoZSwgJ3JlbW90ZScsIHsgdHlwZTogJ2FkYXB0ZXInIH0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SW1hZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9e2dldEFzc2V0VXJsKHJlbW90ZVVuaXRBZGFwdGVyLmltYWdlKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ9e3JlbW90ZVVuaXRBZGFwdGVyLm5hbWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZXM9e1wiYXV0b1wifVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJvYmplY3QtY29udGFpbiBwLTFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Lyog6YCC6YWN5Zmo6aG26YOo55qE6L+e57q/5qGGICovfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiYWJzb2x1dGUgLXRvcC0wIGgtMTAgcm91bmRlZC1sZyBncm91cFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPXtgcmVtb3RlLSR7cmVtb3RlVW5pdEFkYXB0ZXIucG9ydC5pZH1gfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqc3R5cGU9e2Ake3JlbW90ZVVuaXRBZGFwdGVyLmpzdHlwZX1gfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC1bIzBmZl0gdGV4dC14c1wiPumAgumFjeWZqOaPkuanvTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgICAgICAgICAgICB7Lyog6L+c56uv5o6l5Y+j5qGGICovfVxuICAgICAgICAgICAgICAgICAgICAgIHtyZW1vdGVVbml0UG9ydHMubGVuZ3RoID4gMCAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImFic29sdXRlIC10b3AtNyBsZWZ0LTAgcmlnaHQtMCBmbGV4IGp1c3RpZnktY2VudGVyIGdhcC0zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHtyZW1vdGVVbml0UG9ydHMubWFwKChwb3J0LCBpbmRleCkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17aW5kZXh9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD17YHJlbW90ZS0ke3BvcnQuaWR9YH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzdHlwZT17YG1vZGVscG9ydC0ke3BvcnQubW9kdWxlID09PSAnODAwMCcgPyAnY29wcGVyJyA6ICdmaWJlcid9YH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInctNiBoLTggYm9yZGVyLTIgYm9yZGVyLWRhc2hlZCBib3JkZXItWyMwZmZdLzMwIHJvdW5kZWQtbGcgcmVsYXRpdmUgZ3JvdXBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGNjbGVhbj17WydjZnAnLCAnb2ZwJ10uaW5jbHVkZXMocG9ydC5tb2R1bGUpID8gJ2ZhbHNlJyA6IHVuZGVmaW5lZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAgICAgICAgICAgIDxJbWFnZVxuICAgICAgICAgICAgICAgICAgICAgICAgc3JjPXtnZXRBc3NldFVybChcIi9EU1gtUkUucG5nXCIpfVxuICAgICAgICAgICAgICAgICAgICAgICAgYWx0PVwiRFNYIOi/nOerr1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplcz17XCJhdXRvXCJ9XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWxsXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJvYmplY3QtY29udGFpblwiXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmlvcml0eVxuICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgIHsvKiDlt7Llronoo4XmqKHlnZfliJfooaggKi99XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYWJzb2x1dGUgdG9wLTYwIGxlZnQtMCByaWdodC0wIGZsZXggZmxleC13cmFwIGdhcC0yIGp1c3RpZnktY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAge3JlbW90ZVVuaXRNb2R1bGVzLm1hcCgobW9kdWxlKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17bW9kdWxlLmlkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLW1vZHVsZS1pZD17bW9kdWxlLmlkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJyZW1vdGUtdW5pdC1tb2R1bGUgYmctWyMwRjE3MkFdIHAtMiByb3VuZGVkIHNoYWRvdyBib3JkZXIgYm9yZGVyLVsjMGZmXS8yMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQteHMgdGV4dC1bIzAwZmY3Zl1cIj7lt7Llronoo4XvvJp7bW9kdWxlLm5hbWV9PC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctW2NhbGMoNTAlLTAuNXJlbSldXCI+PC9kaXY+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIHsvKiDphY3ku7bljLrln58gKi99XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LVsyMyVdIGJnLVsjMEYxNzJBXSBzaGFkb3ctbGcgcC00IGJvcmRlciBib3JkZXItWyMwZmZdLzIwIGZsZXggZmxleC1jb2wgaC1mdWxsIHJvdW5kZWQtbGdcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBmbGV4LWNvbCBmbGV4LTFcIj5cbiAgICAgICAgICAgICAgPFRhYi5Hcm91cCBhcz1cImRpdlwiIGNsYXNzTmFtZT1cImZsZXggZmxleC1jb2wgZmxleC0xXCI+XG4gICAgICAgICAgICAgICAgPFRhYi5MaXN0IGNsYXNzTmFtZT1cImZsZXggc3BhY2UteC0xIHJvdW5kZWQteGwgYmctWyMwZmZdLzEwIHAtMSBmbGV4LXNocmluay0wXCI+XG4gICAgICAgICAgICAgICAgICB7T2JqZWN0LmtleXMoZGV2aWNlcykubWFwKChjYXRlZ29yeSkgPT4gKFxuICAgICAgICAgICAgICAgICAgICA8VGFiXG4gICAgICAgICAgICAgICAgICAgICAga2V5PXtjYXRlZ29yeX1cbiAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9eyh7IHNlbGVjdGVkIH0pID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWVzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAndy1mdWxsIHJvdW5kZWQtbGcgcHktMi41IHRleHQtc20gZm9udC1tZWRpdW0gbGVhZGluZy01JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ3JpbmctWyMwZmZdIHJpbmctb3BhY2l0eS02MCByaW5nLW9mZnNldC0yIHJpbmctb2Zmc2V0LVsjMEYxNzJBXSBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXM6cmluZy0yJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICdiZy1bIzBGMTcyQV0gc2hhZG93IHRleHQtWyMwMGZmN2ZdJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJ3RleHQtWyMwZmZdIGhvdmVyOmJnLVsjMGZmXS9bMC4xMl0gaG92ZXI6dGV4dC1bIzAwZmY3Zl0nXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAge2NhdGVnb3J5fVxuICAgICAgICAgICAgICAgICAgICA8L1RhYj5cbiAgICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICAgIDwvVGFiLkxpc3Q+XG4gICAgICAgICAgICAgICAgPFRhYi5QYW5lbHMgY2xhc3NOYW1lPVwiZmxleC0xIG10LTIgcmVsYXRpdmVcIj5cbiAgICAgICAgICAgICAgICAgIHtPYmplY3QuZW50cmllcyhkZXZpY2VzKS5tYXAoKFtjYXRlZ29yeSwgY2F0ZWdvcnlEZXZpY2VzXSwgaWR4KSA9PiAoXG4gICAgICAgICAgICAgICAgICAgIDxUYWIuUGFuZWxcbiAgICAgICAgICAgICAgICAgICAgICBrZXk9e2lkeH1cbiAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJhYnNvbHV0ZSBpbnNldC0wIG92ZXJmbG93LXktYXV0byBjdXN0b20tc2Nyb2xsYmFyXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZ3JpZCBncmlkLWNvbHMtMiBnYXAtMyBwLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtjYXRlZ29yeURldmljZXMubWFwKChkZXZpY2UpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaXNTZWxlY3RlZCA9IGNhdGVnb3J5ID09PSAn5bel5YW3JyAmJiBkZXZpY2UuaWQgPT09IHVzZURldmljZVN0b3JlLmdldFN0YXRlKCkuc2VsZWN0ZWRUb29sPy5pZDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e2RldmljZS5pZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17YGJnLVsjMEYxNzJBXSBwLTIgcm91bmRlZCBzaGFkb3cgYm9yZGVyICR7aXNTZWxlY3RlZCA/ICdib3JkZXItWyMwMGZmN2ZdJyA6ICdib3JkZXItWyMwZmZdLzIwIGhvdmVyOmJvcmRlci1bIzBmZl0vNDAnfSB0cmFuc2l0aW9uLWNvbG9ycyBjdXJzb3ItcG9pbnRlciB6LTMwMDBgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJhZ2dhYmxlPXtjYXRlZ29yeSAhPT0gJ+W3peWFtyd9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkRyYWdTdGFydD17KGUpID0+IGhhbmRsZURyYWdTdGFydChlLCBkZXZpY2UpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2F0ZWdvcnkgPT09ICflt6XlhbcnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzU2VsZWN0ZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZURldmljZVN0b3JlLmdldFN0YXRlKCkuY2xlYXJTZWxlY3RlZFRvb2woKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlRGV2aWNlU3RvcmUuZ2V0U3RhdGUoKS5zZWxlY3RUb29sKGRldmljZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtkZXZpY2UuaW1hZ2UgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInJlbGF0aXZlIHctZnVsbCBhc3BlY3QtWzEvMV0gbWItMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJbWFnZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjPXtnZXRBc3NldFVybChkZXZpY2UuaW1hZ2UpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0PXtkZXZpY2UubmFtZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVzPXtcImF1dG9cIn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cIm9iamVjdC1jb250YWluIHAtMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3NOYW1lPXtgZm9udC1tZWRpdW0gJHtpc1NlbGVjdGVkID8gJ3RleHQtWyMwMGZmN2ZdJyA6ICd0ZXh0LVsjMGZmXSd9IHRleHQtc20gdHJ1bmNhdGVgfT57ZGV2aWNlLm5hbWV9PC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2RldmljZS5kZXNjcmlwdGlvbiAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQteHMgdGV4dC1bIzBmZl0gbXQtMSBsaW5lLWNsYW1wLTJcIj57ZGV2aWNlLmRlc2NyaXB0aW9ufTwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9UYWIuUGFuZWw+XG4gICAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgICA8L1RhYi5QYW5lbHM+XG4gICAgICAgICAgICAgIDwvVGFiLkdyb3VwPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8SnNQbHVtYkluaXQgLz5cbiAgICAgICAgPENvbm5lY3Rpb25BbmFseXplciAvPlxuICAgICAgICA8Q3Vyc29ycyAvPiBcbiAgICAgICAgPFNvdXJjZUNoZWNrIC8+XG4gICAgICAgIHsvKiDmlbDmja7kuIrkvKAgKi99XG4gICAgICAgIDxDb21wZXRpdGlvblN0YXRpc3RpY3MgLz5cblxuICAgICAgICB7Lyog5Zy65pmv5o+Q56S657uE5Lu2ICovfVxuICAgICAgICB7dG90YWxUb2FzdE1lc3NhZ2UgJiYgPFRvdGFsVG9hc3QgLz59XG4gICAgICAgIFxuICAgICAgICB7Lyog56uv5Y+j5o+Q56S657uE5Lu2ICovfVxuICAgICAgICB7cG9ydFRvb2x0aXAgJiYgPFN0YXR1c1RvYXN0IHN0YXR1cz17cG9ydFRvb2x0aXB9IC8+fVxuPC9kaXY+XG5cbiAgICAgIHsvKiDlj7PplK7oj5zljZUgKi99XG4gICAgICB7Y29udGV4dE1lbnUgJiYgKFxuICAgICAgICA8Q29udGV4dE1lbnVcbiAgICAgICAgICB4PXtjb250ZXh0TWVudS54fVxuICAgICAgICAgIHk9e2NvbnRleHRNZW51Lnl9XG4gICAgICAgICAgb25DbG9zZT17KCkgPT4gc2V0Q29udGV4dE1lbnUobnVsbCl9XG4gICAgICAgICAgaXRlbXM9e1tcbiAgICAgICAgICAgIC4uLihjb250ZXh0TWVudS50YXJnZXQgPT09ICdjb25uZWN0aW9uJyAmJiBjb250ZXh0TWVudS5pdGVtID8gW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbGFiZWw6ICfnp7vpmaTnianlk4EnLFxuICAgICAgICAgICAgICAgIG9uQ2xpY2s6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgIHJlbW92ZUNvbm5lY3Rpb25JdGVtKGNvbnRleHRNZW51Lml0ZW0uaW5kZXgpO1xuICAgICAgICAgICAgICAgICAgc2V0Q29udGV4dE1lbnUobnVsbCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdIDogY29udGV4dE1lbnUuaXRlbT8udHlwZSA9PT0gJ2FkYXB0ZXInID8gW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbGFiZWw6ICfljbjovb3pgILphY3lmagnLFxuICAgICAgICAgICAgICAgIG9uQ2xpY2s6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgIGhhbmRsZVVuaW5zdGFsbEFkYXB0ZXIoY29udGV4dE1lbnUudGFyZ2V0KTtcbiAgICAgICAgICAgICAgICAgIHNldENvbnRleHRNZW51KG51bGwpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXSA6IGNvbnRleHRNZW51Lml0ZW0/LmlkID8gW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbGFiZWw6ICfljbjovb3mqKHlnZcnLFxuICAgICAgICAgICAgICAgIG9uQ2xpY2s6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgIGhhbmRsZVVuaW5zdGFsbChjb250ZXh0TWVudS5pdGVtLmlkLCBjb250ZXh0TWVudS50YXJnZXQpO1xuICAgICAgICAgICAgICAgICAgc2V0Q29udGV4dE1lbnUobnVsbCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdIDogY29udGV4dE1lbnUudGFyZ2V0ID09PSAnbWFpbicgJiYgbWFpblVuaXRNb2R1bGVzLmxlbmd0aCA+IDAgPyBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBsYWJlbDogJ+WNuOi9veaooeWdlycsXG4gICAgICAgICAgICAgICAgb25DbGljazogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgaGFuZGxlVW5pbnN0YWxsKG1haW5Vbml0TW9kdWxlc1ttYWluVW5pdE1vZHVsZXMubGVuZ3RoIC0gMV0uaWQsICdtYWluJyk7XG4gICAgICAgICAgICAgICAgICBzZXRDb250ZXh0TWVudShudWxsKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF0gOiBjb250ZXh0TWVudS50YXJnZXQgPT09ICdyZW1vdGUnICYmIHJlbW90ZVVuaXRNb2R1bGVzLmxlbmd0aCA+IDAgPyBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBsYWJlbDogJ+WNuOi9veaooeWdlycsXG4gICAgICAgICAgICAgICAgb25DbGljazogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgaGFuZGxlVW5pbnN0YWxsKHJlbW90ZVVuaXRNb2R1bGVzW3JlbW90ZVVuaXRNb2R1bGVzLmxlbmd0aCAtIDFdLmlkLCAncmVtb3RlJyk7XG4gICAgICAgICAgICAgICAgICBzZXRDb250ZXh0TWVudShudWxsKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF0gOiBbXSlcbiAgICAgICAgICBdfVxuICAgICAgICAvPlxuICAgICAgKX1cbiAgICA8Lz5cbiAgKTtcbn1cbiJdLCJuYW1lcyI6WyJ1c2VTdGF0ZSIsInVzZUVmZmVjdCIsIlRhYiIsIkltYWdlIiwidXNlRGV2aWNlU3RvcmUiLCJ1c2VEaXNwbGF5U3RvcmUiLCJDb250ZXh0TWVudSIsIkpzUGx1bWJJbml0IiwiQ29ubmVjdGlvbkFuYWx5emVyIiwiT2ZmaWNlIiwiSW5kdXN0cnkiLCJEYXRhQ2VudGVyIiwiV29ybGRTa2lsbCIsIldvcmxkU2tpbGxXT1JLU0hPUCIsIk9mZmljZVRhc2siLCJEYXRhQ2VudGVyVGFzayIsIkluZHVzdHJ5VGFzayIsIldvcmxkU2tpbGxUYXNrIiwiRGlzUGxheSIsIkN1cnNvcnMiLCJTb3VyY2VDaGVjayIsIkNvbXBldGl0aW9uU3RhdGlzdGljcyIsIlJlc3VsdFRhYmxlIiwiVG90YWxUb2FzdCIsIlN0YXR1c1RvYXN0IiwiQVBJX1VSTFMiLCJnZXRBc3NldFVybCIsInVzZUF1ZGlvIiwic2Nyb2xsYmFyU3R5bGVzIiwiSG9tZSIsImRldmljZXMiLCJtYWluVW5pdE1vZHVsZXMiLCJyZW1vdGVVbml0TW9kdWxlcyIsIm1haW5Vbml0QWRhcHRlciIsInJlbW90ZVVuaXRBZGFwdGVyIiwibWFpblVuaXRQb3J0cyIsInJlbW90ZVVuaXRQb3J0cyIsImluc3RhbGxNb2R1bGUiLCJ1bmluc3RhbGxNb2R1bGUiLCJpbnN0YWxsQWRhcHRlciIsInVuaW5zdGFsbEFkYXB0ZXIiLCJjb25uZWN0aW9uSXRlbXMiLCJhZGRDb25uZWN0aW9uSXRlbSIsInJlbW92ZUNvbm5lY3Rpb25JdGVtIiwiZmF1bHRTY2VuYXJpb3MiLCJlc3Rtb2RlbCIsInVwZGF0ZUVzdG1vZGVsIiwiV29ybGRTa2lsbFNjZW5hcmlvcyIsInNlYXROdW1iZXIiLCJ1cGRhdGVTZWF0TnVtYmVyIiwic2VhdFVVSUQiLCJ1cGRhdGVTZWF0VVVJRCIsInNlYXRTdGFydFRpbWUiLCJ1cGRhdGVTZWF0U3RhcnRUaW1lIiwidG90YWxUb2FzdE1lc3NhZ2UiLCJzZXRUb3RhbFRvYXN0TWVzc2FnZSIsImlzQ29tcGV0aXRpb25XYWl0aW5nIiwic2V0SXNDb21wZXRpdGlvbldhaXRpbmciLCJzaG93U2VhdElucHV0Iiwic2V0U2hvd1NlYXRJbnB1dCIsInRlbXBTZWF0TnVtYmVyIiwic2V0VGVtcFNlYXROdW1iZXIiLCJpc0Zyb21VcmwiLCJzZXRJc0Zyb21VcmwiLCJzaG93Q29uZmlybURpYWxvZyIsInNldFNob3dDb25maXJtRGlhbG9nIiwiY29uZmlybURpYWxvZ01lc3NhZ2UiLCJzZXRDb25maXJtRGlhbG9nTWVzc2FnZSIsImNvbmZpcm1EaWFsb2dDYWxsYmFjayIsInNldENvbmZpcm1EaWFsb2dDYWxsYmFjayIsInBsYXkiLCJjaGVja0lmcmFtZU9yaWdpbiIsIndpbmRvdyIsInNlbGYiLCJ0b3AiLCJkb2N1bWVudCIsImJvZHkiLCJpbm5lckhUTUwiLCJjdXJyZW50VXJsIiwibG9jYXRpb24iLCJocmVmIiwidXJsUGFyYW1zIiwiVVJMU2VhcmNoUGFyYW1zIiwic3BsaXQiLCJmYXVsdFNjZW5hcmlvc1BhcmFtIiwiZ2V0IiwiZXN0bW9kZWxQYXJhbSIsImRlY29kZVVSSUNvbXBvbmVudCIsInJlcGxhY2UiLCJlIiwic2V0U3RhdGUiLCJlcnJvciIsInRva2VuIiwiRXJyb3IiLCJyZXNwb25zZSIsImZldGNoIiwiQ0hFQ0siLCJBVVRIIiwibWV0aG9kIiwiaGVhZGVycyIsIkF1dGhvcml6YXRpb24iLCJvayIsImRhdGEiLCJqc29uIiwidXNlcm5hbWUiLCJjbGFzc05hbWVzIiwiY2xhc3NlcyIsImZpbHRlciIsIkJvb2xlYW4iLCJqb2luIiwidGltZXIiLCJzZXRJbnRlcnZhbCIsIkNPTVBFVElUSU9OIiwiU1RBVFVTIiwid2FzUnVubmluZyIsImlzUnVubmluZyIsImdldFN0YXRlIiwicmVzZXRUb0RlZmF1bHRTdGF0ZSIsInJlc2V0ZGV2aWNlU3RvcmUiLCJyZWxvYWRLZXkiLCJNYXRoIiwicmFuZG9tIiwiVVVJRCIsInN0YXJ0VGltZSIsImNvbnNvbGUiLCJjbGVhckludGVydmFsIiwiaGFuZGxlU2VhdENvbmZpcm0iLCJ0cmltIiwic2V0SXNFZGl0aW5nU2VhdCIsImhhbmRsZUNhbmNlbFdhaXRpbmciLCJjb250ZXh0TWVudSIsInNldENvbnRleHRNZW51IiwiZHJhZ2dlZEl0ZW0iLCJzZXREcmFnZ2VkSXRlbSIsImlzRHJhd2VyT3BlbiIsInNldElzRHJhd2VyT3BlbiIsImlzUmlnaHREcmF3ZXJPcGVuIiwic2V0SXNSaWdodERyYXdlck9wZW4iLCJ0b2dnbGVEcmF3ZXIiLCJoYW5kbGVEcmFnU3RhcnQiLCJpdGVtIiwiZGF0YVRyYW5zZmVyIiwic2V0RGF0YSIsIkpTT04iLCJzdHJpbmdpZnkiLCJoYW5kbGVEcmFnT3ZlciIsInByZXZlbnREZWZhdWx0IiwiaGFuZGxlRHJvcCIsInRhcmdldCIsInBhcnNlIiwiZ2V0RGF0YSIsInR5cGUiLCJ0YXJnZXRNb2R1bGVzIiwibGVuZ3RoIiwidGFyZ2V0QWRhcHRlciIsInNvbWUiLCJtIiwiaWQiLCJoYW5kbGVDb250ZXh0TWVudSIsInN0b3BQcm9wYWdhdGlvbiIsIngiLCJjbGllbnRYIiwieSIsImNsaWVudFkiLCJoYW5kbGVVbmluc3RhbGwiLCJtb2R1bGVJZCIsImhhbmRsZVVuaW5zdGFsbEFkYXB0ZXIiLCJoYXNPdGRyTW9kdWxlIiwicG9ydFRvb2x0aXAiLCJzZXRQb3J0VG9vbHRpcCIsImhhbmRsZVBvcnRNb3VzZU1vdmUiLCJlbGVtZW50cyIsImVsZW1lbnRzRnJvbVBvaW50IiwicG9ydEVsZW1lbnQiLCJmaW5kIiwiZWwiLCJpbmNsdWRlcyIsInRvb2x0aXBzIiwiYWRkRXZlbnRMaXN0ZW5lciIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJrZXlUb1NlYXRNYXAiLCJoYW5kbGVLZXlDb25maXJtIiwidG9VcHBlckNhc2UiLCJzdHlsZSIsImRpdiIsImNsYXNzTmFtZSIsInNwYW4iLCJEYXRlIiwiZ2V0VGltZSIsInRvSVNPU3RyaW5nIiwic3Vic3RyIiwiaDMiLCJidXR0b24iLCJvbkNsaWNrIiwiaW5wdXQiLCJ2YWx1ZSIsIm9uQ2hhbmdlIiwicGxhY2Vob2xkZXIiLCJtYXhMZW5ndGgiLCJwIiwic3JjIiwiYWx0IiwiZmlsbCIsInNpemVzIiwib25EcmFnT3ZlciIsIm9uRHJvcCIsImV4aXN0aW5nTXBvQ291bnQiLCJleGlzdGluZ0l0ZW0iLCJvbkNvbnRleHRNZW51IiwibWFwIiwiaW5kZXgiLCJwb3NpdGlvbiIsInpJbmRleCIsImluZGV4T2YiLCJkcmFnZ2FibGUiLCJpbWFnZSIsIm5hbWUiLCJqc3R5cGUiLCJwb3J0VHlwZSIsIkFycmF5IiwiZnJvbSIsIl8iLCJsY0luZGV4IiwibGVmdCIsIndpZHRoIiwibGNjbGVhbiIsInVuZGVmaW5lZCIsImkiLCJtb2R1bGVFbGVtZW50cyIsInF1ZXJ5U2VsZWN0b3JBbGwiLCJjbGlja2VkTW9kdWxlIiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwicmlnaHQiLCJib3R0b20iLCJnZXRBdHRyaWJ1dGUiLCJtb2R1bGUiLCJwb3J0IiwicHJpb3JpdHkiLCJkYXRhLW1vZHVsZS1pZCIsIkdyb3VwIiwiYXMiLCJMaXN0IiwiT2JqZWN0Iiwia2V5cyIsImNhdGVnb3J5Iiwic2VsZWN0ZWQiLCJQYW5lbHMiLCJlbnRyaWVzIiwiY2F0ZWdvcnlEZXZpY2VzIiwiaWR4IiwiUGFuZWwiLCJkZXZpY2UiLCJpc1NlbGVjdGVkIiwic2VsZWN0ZWRUb29sIiwib25EcmFnU3RhcnQiLCJjbGVhclNlbGVjdGVkVG9vbCIsInNlbGVjdFRvb2wiLCJkZXNjcmlwdGlvbiIsInN0YXR1cyIsIm9uQ2xvc2UiLCJpdGVtcyIsImxhYmVsIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(pages-dir-node)/./src/pages/index.js\n"); /***/ }), /***/ "(pages-dir-node)/./src/store/COPPER lazy recursive ^\\.\\/.* \\(\\+ALL\\)\\.json$": /*!**************************************************************************!*\ !*** ./src/store/COPPER/ lazy ^\.\/.* \(\+ALL\)\.json$ namespace object ***! \**************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var map = { "./GBT 50312-2016 Cat 5e Ch (+ALL).json": [ "(pages-dir-node)/./src/store/COPPER/GBT 50312-2016 Cat 5e Ch (+ALL).json", "_pages-dir-node_src_store_COPPER_GBT_50312-2016_Cat_5e_Ch_ALL_json" ], "./GBT 50312-2016 Cat 5e PL (+ALL).json": [ "(pages-dir-node)/./src/store/COPPER/GBT 50312-2016 Cat 5e PL (+ALL).json", "_pages-dir-node_src_store_COPPER_GBT_50312-2016_Cat_5e_PL_ALL_json" ], "./GBT 50312-2016 Cat 6 Ch (+ALL).json": [ "(pages-dir-node)/./src/store/COPPER/GBT 50312-2016 Cat 6 Ch (+ALL).json", "_pages-dir-node_src_store_COPPER_GBT_50312-2016_Cat_6_Ch_ALL_json" ], "./GBT 50312-2016 Cat 6 PL (+ALL).json": [ "(pages-dir-node)/./src/store/COPPER/GBT 50312-2016 Cat 6 PL (+ALL).json", "_pages-dir-node_src_store_COPPER_GBT_50312-2016_Cat_6_PL_ALL_json" ], "./GBT 50312-2016 Cat 6A Ch (+ALL).json": [ "(pages-dir-node)/./src/store/COPPER/GBT 50312-2016 Cat 6A Ch (+ALL).json", "_pages-dir-node_src_store_COPPER_GBT_50312-2016_Cat_6A_Ch_ALL_json" ], "./GBT 50312-2016 Cat 6A PL no CP (+ALL).json": [ "(pages-dir-node)/./src/store/COPPER/GBT 50312-2016 Cat 6A PL no CP (+ALL).json", "_pages-dir-node_src_store_COPPER_GBT_50312-2016_Cat_6A_PL_no_CP_ALL_json" ], "./GBT 50312-2016 Cat 6A PL with CP (+ALL).json": [ "(pages-dir-node)/./src/store/COPPER/GBT 50312-2016 Cat 6A PL with CP (+ALL).json", "_pages-dir-node_src_store_COPPER_GBT_50312-2016_Cat_6A_PL_with_CP_ALL_json" ], "./ISO MPTL Class D (+ALL).json": [ "(pages-dir-node)/./src/store/COPPER/ISO MPTL Class D (+ALL).json", "_pages-dir-node_src_store_COPPER_ISO_MPTL_Class_D_ALL_json" ], "./ISO MPTL Class E (+ALL).json": [ "(pages-dir-node)/./src/store/COPPER/ISO MPTL Class E (+ALL).json", "_pages-dir-node_src_store_COPPER_ISO_MPTL_Class_E_ALL_json" ], "./ISO MPTL Class Ea (+ALL).json": [ "(pages-dir-node)/./src/store/COPPER/ISO MPTL Class Ea (+ALL).json", "_pages-dir-node_src_store_COPPER_ISO_MPTL_Class_Ea_ALL_json" ], "./ISO11801 Channel Class D (+ALL).json": [ "(pages-dir-node)/./src/store/COPPER/ISO11801 Channel Class D (+ALL).json", "_pages-dir-node_src_store_COPPER_ISO11801_Channel_Class_D_ALL_json" ], "./ISO11801 Channel Class E (+ALL).json": [ "(pages-dir-node)/./src/store/COPPER/ISO11801 Channel Class E (+ALL).json", "_pages-dir-node_src_store_COPPER_ISO11801_Channel_Class_E_ALL_json" ], "./ISO11801 Channel Class Ea (+ALL).json": [ "(pages-dir-node)/./src/store/COPPER/ISO11801 Channel Class Ea (+ALL).json", "_pages-dir-node_src_store_COPPER_ISO11801_Channel_Class_Ea_ALL_json" ], "./ISO11801 PL Class D (+ALL).json": [ "(pages-dir-node)/./src/store/COPPER/ISO11801 PL Class D (+ALL).json", "_pages-dir-node_src_store_COPPER_ISO11801_PL_Class_D_ALL_json" ], "./ISO11801 PL Class E (+ALL).json": [ "(pages-dir-node)/./src/store/COPPER/ISO11801 PL Class E (+ALL).json", "_pages-dir-node_src_store_COPPER_ISO11801_PL_Class_E_ALL_json" ], "./ISO11801 PL2 Class Ea (+ALL).json": [ "(pages-dir-node)/./src/store/COPPER/ISO11801 PL2 Class Ea (+ALL).json", "_pages-dir-node_src_store_COPPER_ISO11801_PL2_Class_Ea_ALL_json" ], "./ISO11801 PL3 Class Ea (+ALL).json": [ "(pages-dir-node)/./src/store/COPPER/ISO11801 PL3 Class Ea (+ALL).json", "_pages-dir-node_src_store_COPPER_ISO11801_PL3_Class_Ea_ALL_json" ], "./Profinet (+ALL).json": [ "(pages-dir-node)/./src/store/COPPER/Profinet (+ALL).json", "_pages-dir-node_src_store_COPPER_Profinet_ALL_json" ], "./TIA 1005 Cat 5e Channel E1 (+ALL).json": [ "(pages-dir-node)/./src/store/COPPER/TIA 1005 Cat 5e Channel E1 (+ALL).json", "_pages-dir-node_src_store_COPPER_TIA_1005_Cat_5e_Channel_E1_ALL_json" ], "./TIA 1005 Cat 5e Channel E2 (+ALL).json": [ "(pages-dir-node)/./src/store/COPPER/TIA 1005 Cat 5e Channel E2 (+ALL).json", "_pages-dir-node_src_store_COPPER_TIA_1005_Cat_5e_Channel_E2_ALL_json" ], "./TIA 1005 Cat 5e Channel E3 (+ALL).json": [ "(pages-dir-node)/./src/store/COPPER/TIA 1005 Cat 5e Channel E3 (+ALL).json", "_pages-dir-node_src_store_COPPER_TIA_1005_Cat_5e_Channel_E3_ALL_json" ], "./TIA 1005 Cat 6 Channel E1 (+ALL).json": [ "(pages-dir-node)/./src/store/COPPER/TIA 1005 Cat 6 Channel E1 (+ALL).json", "_pages-dir-node_src_store_COPPER_TIA_1005_Cat_6_Channel_E1_ALL_json" ], "./TIA 1005 Cat 6 Channel E2 (+ALL).json": [ "(pages-dir-node)/./src/store/COPPER/TIA 1005 Cat 6 Channel E2 (+ALL).json", "_pages-dir-node_src_store_COPPER_TIA_1005_Cat_6_Channel_E2_ALL_json" ], "./TIA 1005 Cat 6 Channel E3 (+ALL).json": [ "(pages-dir-node)/./src/store/COPPER/TIA 1005 Cat 6 Channel E3 (+ALL).json", "_pages-dir-node_src_store_COPPER_TIA_1005_Cat_6_Channel_E3_ALL_json" ], "./TIA 1005 Cat 6A Channel E1 (+ALL).json": [ "(pages-dir-node)/./src/store/COPPER/TIA 1005 Cat 6A Channel E1 (+ALL).json", "_pages-dir-node_src_store_COPPER_TIA_1005_Cat_6A_Channel_E1_ALL_json" ], "./TIA 1005 Cat 6A Channel E2 (+ALL).json": [ "(pages-dir-node)/./src/store/COPPER/TIA 1005 Cat 6A Channel E2 (+ALL).json", "_pages-dir-node_src_store_COPPER_TIA_1005_Cat_6A_Channel_E2_ALL_json" ], "./TIA 1005 Cat 6A Channel E3 (+ALL).json": [ "(pages-dir-node)/./src/store/COPPER/TIA 1005 Cat 6A Channel E3 (+ALL).json", "_pages-dir-node_src_store_COPPER_TIA_1005_Cat_6A_Channel_E3_ALL_json" ], "./TIA Cat 5e Channel (+ALL).json": [ "(pages-dir-node)/./src/store/COPPER/TIA Cat 5e Channel (+ALL).json", "_pages-dir-node_src_store_COPPER_TIA_Cat_5e_Channel_ALL_json" ], "./TIA Cat 5e MPTL (+ALL).json": [ "(pages-dir-node)/./src/store/COPPER/TIA Cat 5e MPTL (+ALL).json", "_pages-dir-node_src_store_COPPER_TIA_Cat_5e_MPTL_ALL_json" ], "./TIA Cat 5e Perm.Link (+ALL).json": [ "(pages-dir-node)/./src/store/COPPER/TIA Cat 5e Perm.Link (+ALL).json", "_pages-dir-node_src_store_COPPER_TIA_Cat_5e_Perm_Link_ALL_json" ], "./TIA Cat 6 Channel (+ALL).json": [ "(pages-dir-node)/./src/store/COPPER/TIA Cat 6 Channel (+ALL).json", "_pages-dir-node_src_store_COPPER_TIA_Cat_6_Channel_ALL_json" ], "./TIA Cat 6 MPTL (+ALL).json": [ "(pages-dir-node)/./src/store/COPPER/TIA Cat 6 MPTL (+ALL).json", "_pages-dir-node_src_store_COPPER_TIA_Cat_6_MPTL_ALL_json" ], "./TIA Cat 6 Perm.Link (+ALL).json": [ "(pages-dir-node)/./src/store/COPPER/TIA Cat 6 Perm.Link (+ALL).json", "_pages-dir-node_src_store_COPPER_TIA_Cat_6_Perm_Link_ALL_json" ], "./TIA Cat 6A Channel (+ALL).json": [ "(pages-dir-node)/./src/store/COPPER/TIA Cat 6A Channel (+ALL).json", "_pages-dir-node_src_store_COPPER_TIA_Cat_6A_Channel_ALL_json" ], "./TIA Cat 6A MPTL (+ALL).json": [ "(pages-dir-node)/./src/store/COPPER/TIA Cat 6A MPTL (+ALL).json", "_pages-dir-node_src_store_COPPER_TIA_Cat_6A_MPTL_ALL_json" ], "./TIA Cat 6A Perm.Link (+ALL).json": [ "(pages-dir-node)/./src/store/COPPER/TIA Cat 6A Perm.Link (+ALL).json", "_pages-dir-node_src_store_COPPER_TIA_Cat_6A_Perm_Link_ALL_json" ] }; function webpackAsyncContext(req) { if(!__webpack_require__.o(map, req)) { return Promise.resolve().then(() => { var e = new Error("Cannot find module '" + req + "'"); e.code = 'MODULE_NOT_FOUND'; throw e; }); } var ids = map[req], id = ids[0]; return __webpack_require__.e(ids[1]).then(() => { return __webpack_require__.t(id, 3 | 16); }); } webpackAsyncContext.keys = () => (Object.keys(map)); webpackAsyncContext.id = "(pages-dir-node)/./src/store/COPPER lazy recursive ^\\.\\/.* \\(\\+ALL\\)\\.json$"; module.exports = webpackAsyncContext; /***/ }), /***/ "(pages-dir-node)/./src/store/COPPER lazy recursive ^\\.\\/.*\\.json$": /*!****************************************************************!*\ !*** ./src/store/COPPER/ lazy ^\.\/.*\.json$ namespace object ***! \****************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var map = { "./GBT 50312-2016 Cat 5e Ch (+ALL).json": [ "(pages-dir-node)/./src/store/COPPER/GBT 50312-2016 Cat 5e Ch (+ALL).json", "_pages-dir-node_src_store_COPPER_GBT_50312-2016_Cat_5e_Ch_ALL_json" ], "./GBT 50312-2016 Cat 5e PL (+ALL).json": [ "(pages-dir-node)/./src/store/COPPER/GBT 50312-2016 Cat 5e PL (+ALL).json", "_pages-dir-node_src_store_COPPER_GBT_50312-2016_Cat_5e_PL_ALL_json" ], "./GBT 50312-2016 Cat 6 Ch (+ALL).json": [ "(pages-dir-node)/./src/store/COPPER/GBT 50312-2016 Cat 6 Ch (+ALL).json", "_pages-dir-node_src_store_COPPER_GBT_50312-2016_Cat_6_Ch_ALL_json" ], "./GBT 50312-2016 Cat 6 PL (+ALL).json": [ "(pages-dir-node)/./src/store/COPPER/GBT 50312-2016 Cat 6 PL (+ALL).json", "_pages-dir-node_src_store_COPPER_GBT_50312-2016_Cat_6_PL_ALL_json" ], "./GBT 50312-2016 Cat 6A Ch (+ALL).json": [ "(pages-dir-node)/./src/store/COPPER/GBT 50312-2016 Cat 6A Ch (+ALL).json", "_pages-dir-node_src_store_COPPER_GBT_50312-2016_Cat_6A_Ch_ALL_json" ], "./GBT 50312-2016 Cat 6A PL no CP (+ALL).json": [ "(pages-dir-node)/./src/store/COPPER/GBT 50312-2016 Cat 6A PL no CP (+ALL).json", "_pages-dir-node_src_store_COPPER_GBT_50312-2016_Cat_6A_PL_no_CP_ALL_json" ], "./GBT 50312-2016 Cat 6A PL with CP (+ALL).json": [ "(pages-dir-node)/./src/store/COPPER/GBT 50312-2016 Cat 6A PL with CP (+ALL).json", "_pages-dir-node_src_store_COPPER_GBT_50312-2016_Cat_6A_PL_with_CP_ALL_json" ], "./ISO MPTL Class D (+ALL).json": [ "(pages-dir-node)/./src/store/COPPER/ISO MPTL Class D (+ALL).json", "_pages-dir-node_src_store_COPPER_ISO_MPTL_Class_D_ALL_json" ], "./ISO MPTL Class E (+ALL).json": [ "(pages-dir-node)/./src/store/COPPER/ISO MPTL Class E (+ALL).json", "_pages-dir-node_src_store_COPPER_ISO_MPTL_Class_E_ALL_json" ], "./ISO MPTL Class Ea (+ALL).json": [ "(pages-dir-node)/./src/store/COPPER/ISO MPTL Class Ea (+ALL).json", "_pages-dir-node_src_store_COPPER_ISO_MPTL_Class_Ea_ALL_json" ], "./ISO11801 Channel Class D (+ALL).json": [ "(pages-dir-node)/./src/store/COPPER/ISO11801 Channel Class D (+ALL).json", "_pages-dir-node_src_store_COPPER_ISO11801_Channel_Class_D_ALL_json" ], "./ISO11801 Channel Class E (+ALL).json": [ "(pages-dir-node)/./src/store/COPPER/ISO11801 Channel Class E (+ALL).json", "_pages-dir-node_src_store_COPPER_ISO11801_Channel_Class_E_ALL_json" ], "./ISO11801 Channel Class Ea (+ALL).json": [ "(pages-dir-node)/./src/store/COPPER/ISO11801 Channel Class Ea (+ALL).json", "_pages-dir-node_src_store_COPPER_ISO11801_Channel_Class_Ea_ALL_json" ], "./ISO11801 PL Class D (+ALL).json": [ "(pages-dir-node)/./src/store/COPPER/ISO11801 PL Class D (+ALL).json", "_pages-dir-node_src_store_COPPER_ISO11801_PL_Class_D_ALL_json" ], "./ISO11801 PL Class E (+ALL).json": [ "(pages-dir-node)/./src/store/COPPER/ISO11801 PL Class E (+ALL).json", "_pages-dir-node_src_store_COPPER_ISO11801_PL_Class_E_ALL_json" ], "./ISO11801 PL2 Class Ea (+ALL).json": [ "(pages-dir-node)/./src/store/COPPER/ISO11801 PL2 Class Ea (+ALL).json", "_pages-dir-node_src_store_COPPER_ISO11801_PL2_Class_Ea_ALL_json" ], "./ISO11801 PL3 Class Ea (+ALL).json": [ "(pages-dir-node)/./src/store/COPPER/ISO11801 PL3 Class Ea (+ALL).json", "_pages-dir-node_src_store_COPPER_ISO11801_PL3_Class_Ea_ALL_json" ], "./Profinet (+ALL).json": [ "(pages-dir-node)/./src/store/COPPER/Profinet (+ALL).json", "_pages-dir-node_src_store_COPPER_Profinet_ALL_json" ], "./TIA 1005 Cat 5e Channel E1 (+ALL).json": [ "(pages-dir-node)/./src/store/COPPER/TIA 1005 Cat 5e Channel E1 (+ALL).json", "_pages-dir-node_src_store_COPPER_TIA_1005_Cat_5e_Channel_E1_ALL_json" ], "./TIA 1005 Cat 5e Channel E2 (+ALL).json": [ "(pages-dir-node)/./src/store/COPPER/TIA 1005 Cat 5e Channel E2 (+ALL).json", "_pages-dir-node_src_store_COPPER_TIA_1005_Cat_5e_Channel_E2_ALL_json" ], "./TIA 1005 Cat 5e Channel E3 (+ALL).json": [ "(pages-dir-node)/./src/store/COPPER/TIA 1005 Cat 5e Channel E3 (+ALL).json", "_pages-dir-node_src_store_COPPER_TIA_1005_Cat_5e_Channel_E3_ALL_json" ], "./TIA 1005 Cat 6 Channel E1 (+ALL).json": [ "(pages-dir-node)/./src/store/COPPER/TIA 1005 Cat 6 Channel E1 (+ALL).json", "_pages-dir-node_src_store_COPPER_TIA_1005_Cat_6_Channel_E1_ALL_json" ], "./TIA 1005 Cat 6 Channel E2 (+ALL).json": [ "(pages-dir-node)/./src/store/COPPER/TIA 1005 Cat 6 Channel E2 (+ALL).json", "_pages-dir-node_src_store_COPPER_TIA_1005_Cat_6_Channel_E2_ALL_json" ], "./TIA 1005 Cat 6 Channel E3 (+ALL).json": [ "(pages-dir-node)/./src/store/COPPER/TIA 1005 Cat 6 Channel E3 (+ALL).json", "_pages-dir-node_src_store_COPPER_TIA_1005_Cat_6_Channel_E3_ALL_json" ], "./TIA 1005 Cat 6A Channel E1 (+ALL).json": [ "(pages-dir-node)/./src/store/COPPER/TIA 1005 Cat 6A Channel E1 (+ALL).json", "_pages-dir-node_src_store_COPPER_TIA_1005_Cat_6A_Channel_E1_ALL_json" ], "./TIA 1005 Cat 6A Channel E2 (+ALL).json": [ "(pages-dir-node)/./src/store/COPPER/TIA 1005 Cat 6A Channel E2 (+ALL).json", "_pages-dir-node_src_store_COPPER_TIA_1005_Cat_6A_Channel_E2_ALL_json" ], "./TIA 1005 Cat 6A Channel E3 (+ALL).json": [ "(pages-dir-node)/./src/store/COPPER/TIA 1005 Cat 6A Channel E3 (+ALL).json", "_pages-dir-node_src_store_COPPER_TIA_1005_Cat_6A_Channel_E3_ALL_json" ], "./TIA Cat 5e Channel (+ALL).json": [ "(pages-dir-node)/./src/store/COPPER/TIA Cat 5e Channel (+ALL).json", "_pages-dir-node_src_store_COPPER_TIA_Cat_5e_Channel_ALL_json" ], "./TIA Cat 5e MPTL (+ALL).json": [ "(pages-dir-node)/./src/store/COPPER/TIA Cat 5e MPTL (+ALL).json", "_pages-dir-node_src_store_COPPER_TIA_Cat_5e_MPTL_ALL_json" ], "./TIA Cat 5e Perm.Link (+ALL).json": [ "(pages-dir-node)/./src/store/COPPER/TIA Cat 5e Perm.Link (+ALL).json", "_pages-dir-node_src_store_COPPER_TIA_Cat_5e_Perm_Link_ALL_json" ], "./TIA Cat 6 Channel (+ALL).json": [ "(pages-dir-node)/./src/store/COPPER/TIA Cat 6 Channel (+ALL).json", "_pages-dir-node_src_store_COPPER_TIA_Cat_6_Channel_ALL_json" ], "./TIA Cat 6 MPTL (+ALL).json": [ "(pages-dir-node)/./src/store/COPPER/TIA Cat 6 MPTL (+ALL).json", "_pages-dir-node_src_store_COPPER_TIA_Cat_6_MPTL_ALL_json" ], "./TIA Cat 6 Perm.Link (+ALL).json": [ "(pages-dir-node)/./src/store/COPPER/TIA Cat 6 Perm.Link (+ALL).json", "_pages-dir-node_src_store_COPPER_TIA_Cat_6_Perm_Link_ALL_json" ], "./TIA Cat 6A Channel (+ALL).json": [ "(pages-dir-node)/./src/store/COPPER/TIA Cat 6A Channel (+ALL).json", "_pages-dir-node_src_store_COPPER_TIA_Cat_6A_Channel_ALL_json" ], "./TIA Cat 6A MPTL (+ALL).json": [ "(pages-dir-node)/./src/store/COPPER/TIA Cat 6A MPTL (+ALL).json", "_pages-dir-node_src_store_COPPER_TIA_Cat_6A_MPTL_ALL_json" ], "./TIA Cat 6A Perm.Link (+ALL).json": [ "(pages-dir-node)/./src/store/COPPER/TIA Cat 6A Perm.Link (+ALL).json", "_pages-dir-node_src_store_COPPER_TIA_Cat_6A_Perm_Link_ALL_json" ], "./lengthfail.json": [ "(pages-dir-node)/./src/store/COPPER/lengthfail.json", "_pages-dir-node_src_store_COPPER_lengthfail_json" ], "./mptl-nextfail.json": [ "(pages-dir-node)/./src/store/COPPER/mptl-nextfail.json", "_pages-dir-node_src_store_COPPER_mptl-nextfail_json" ], "./next-fail.json": [ "(pages-dir-node)/./src/store/COPPER/next-fail.json", "_pages-dir-node_src_store_COPPER_next-fail_json" ], "./ohmfail.json": [ "(pages-dir-node)/./src/store/COPPER/ohmfail.json", "_pages-dir-node_src_store_COPPER_ohmfail_json" ], "./output.json": [ "(pages-dir-node)/./src/store/COPPER/output.json", "_pages-dir-node_src_store_COPPER_output_json" ], "./pass-30m.json": [ "(pages-dir-node)/./src/store/COPPER/pass-30m.json", "_pages-dir-node_src_store_COPPER_pass-30m_json" ], "./pass-4m.json": [ "(pages-dir-node)/./src/store/COPPER/pass-4m.json", "_pages-dir-node_src_store_COPPER_pass-4m_json" ], "./pass.json": [ "(pages-dir-node)/./src/store/COPPER/pass.json", "_pages-dir-node_src_store_COPPER_pass_json" ], "./return-loss-fail.json": [ "(pages-dir-node)/./src/store/COPPER/return-loss-fail.json", "_pages-dir-node_src_store_COPPER_return-loss-fail_json" ], "./ublfail.json": [ "(pages-dir-node)/./src/store/COPPER/ublfail.json", "_pages-dir-node_src_store_COPPER_ublfail_json" ], "./workshop-2p-lengthfail.json": [ "(pages-dir-node)/./src/store/COPPER/workshop-2p-lengthfail.json", "_pages-dir-node_src_store_COPPER_workshop-2p-lengthfail_json" ], "./workshop-2p-pass-80m.json": [ "(pages-dir-node)/./src/store/COPPER/workshop-2p-pass-80m.json", "_pages-dir-node_src_store_COPPER_workshop-2p-pass-80m_json" ], "./workshop-m12-pass-30m.json": [ "(pages-dir-node)/./src/store/COPPER/workshop-m12-pass-30m.json", "_pages-dir-node_src_store_COPPER_workshop-m12-pass-30m_json" ] }; function webpackAsyncContext(req) { if(!__webpack_require__.o(map, req)) { return Promise.resolve().then(() => { var e = new Error("Cannot find module '" + req + "'"); e.code = 'MODULE_NOT_FOUND'; throw e; }); } var ids = map[req], id = ids[0]; return __webpack_require__.e(ids[1]).then(() => { return __webpack_require__.t(id, 3 | 16); }); } webpackAsyncContext.keys = () => (Object.keys(map)); webpackAsyncContext.id = "(pages-dir-node)/./src/store/COPPER lazy recursive ^\\.\\/.*\\.json$"; module.exports = webpackAsyncContext; /***/ }), /***/ "(pages-dir-node)/./src/store/COPPER lazy recursive ^\\.\\/.*\\/.*.*\\.svg$": /*!*********************************************************************!*\ !*** ./src/store/COPPER/ lazy ^\.\/.*\/.*.*\.svg$ namespace object ***! \*********************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var map = { "./EthernetTwoPair/s-pass-4pair.svg": [ "(pages-dir-node)/./src/store/COPPER/EthernetTwoPair/s-pass-4pair.svg", "_pages-dir-node_src_store_COPPER_EthernetTwoPair_s-pass-4pair_svg" ], "./EthernetTwoPair/s-pass.svg": [ "(pages-dir-node)/./src/store/COPPER/EthernetTwoPair/s-pass.svg", "_pages-dir-node_src_store_COPPER_EthernetTwoPair_s-pass_svg" ], "./EthernetTwoPair/s-sopen.svg": [ "(pages-dir-node)/./src/store/COPPER/EthernetTwoPair/s-sopen.svg", "_pages-dir-node_src_store_COPPER_EthernetTwoPair_s-sopen_svg" ], "./EthernetTwoPair/u-pass-4pair.svg": [ "(pages-dir-node)/./src/store/COPPER/EthernetTwoPair/u-pass-4pair.svg", "_pages-dir-node_src_store_COPPER_EthernetTwoPair_u-pass-4pair_svg" ], "./EthernetTwoPair/u-pass.svg": [ "(pages-dir-node)/./src/store/COPPER/EthernetTwoPair/u-pass.svg", "_pages-dir-node_src_store_COPPER_EthernetTwoPair_u-pass_svg" ], "./EthernetTwoPair/u-sopen.svg": [ "(pages-dir-node)/./src/store/COPPER/EthernetTwoPair/u-sopen.svg", "_pages-dir-node_src_store_COPPER_EthernetTwoPair_u-sopen_svg" ], "./M12DTwoPair/s-pass-4pair.svg": [ "(pages-dir-node)/./src/store/COPPER/M12DTwoPair/s-pass-4pair.svg", "_pages-dir-node_src_store_COPPER_M12DTwoPair_s-pass-4pair_svg" ], "./M12DTwoPair/s-pass.svg": [ "(pages-dir-node)/./src/store/COPPER/M12DTwoPair/s-pass.svg", "_pages-dir-node_src_store_COPPER_M12DTwoPair_s-pass_svg" ], "./M12DTwoPair/s-sopen.svg": [ "(pages-dir-node)/./src/store/COPPER/M12DTwoPair/s-sopen.svg", "_pages-dir-node_src_store_COPPER_M12DTwoPair_s-sopen_svg" ], "./M12DTwoPair/u-pass-4pair.svg": [ "(pages-dir-node)/./src/store/COPPER/M12DTwoPair/u-pass-4pair.svg", "_pages-dir-node_src_store_COPPER_M12DTwoPair_u-pass-4pair_svg" ], "./M12DTwoPair/u-pass.svg": [ "(pages-dir-node)/./src/store/COPPER/M12DTwoPair/u-pass.svg", "_pages-dir-node_src_store_COPPER_M12DTwoPair_u-pass_svg" ], "./M12DTwoPair/u-sopen.svg": [ "(pages-dir-node)/./src/store/COPPER/M12DTwoPair/u-sopen.svg", "_pages-dir-node_src_store_COPPER_M12DTwoPair_u-sopen_svg" ], "./T568B/s-ShieldOpen.svg": [ "(pages-dir-node)/./src/store/COPPER/T568B/s-ShieldOpen.svg", "_pages-dir-node_src_store_COPPER_T568B_s-ShieldOpen_svg" ], "./T568B/s-ShieldShort.svg": [ "(pages-dir-node)/./src/store/COPPER/T568B/s-ShieldShort.svg", "_pages-dir-node_src_store_COPPER_T568B_s-ShieldShort_svg" ], "./T568B/s-cross.svg": [ "(pages-dir-node)/./src/store/COPPER/T568B/s-cross.svg", "_pages-dir-node_src_store_COPPER_T568B_s-cross_svg" ], "./T568B/s-cross2.svg": [ "(pages-dir-node)/./src/store/COPPER/T568B/s-cross2.svg", "_pages-dir-node_src_store_COPPER_T568B_s-cross2_svg" ], "./T568B/s-cross3.svg": [ "(pages-dir-node)/./src/store/COPPER/T568B/s-cross3.svg", "_pages-dir-node_src_store_COPPER_T568B_s-cross3_svg" ], "./T568B/s-miswire.svg": [ "(pages-dir-node)/./src/store/COPPER/T568B/s-miswire.svg", "_pages-dir-node_src_store_COPPER_T568B_s-miswire_svg" ], "./T568B/s-open.svg": [ "(pages-dir-node)/./src/store/COPPER/T568B/s-open.svg", "_pages-dir-node_src_store_COPPER_T568B_s-open_svg" ], "./T568B/s-open2.svg": [ "(pages-dir-node)/./src/store/COPPER/T568B/s-open2.svg", "_pages-dir-node_src_store_COPPER_T568B_s-open2_svg" ], "./T568B/s-open3.svg": [ "(pages-dir-node)/./src/store/COPPER/T568B/s-open3.svg", "_pages-dir-node_src_store_COPPER_T568B_s-open3_svg" ], "./T568B/s-pass-2pair.svg": [ "(pages-dir-node)/./src/store/COPPER/T568B/s-pass-2pair.svg", "_pages-dir-node_src_store_COPPER_T568B_s-pass-2pair_svg" ], "./T568B/s-pass.svg": [ "(pages-dir-node)/./src/store/COPPER/T568B/s-pass.svg", "_pages-dir-node_src_store_COPPER_T568B_s-pass_svg" ], "./T568B/s-reversed.svg": [ "(pages-dir-node)/./src/store/COPPER/T568B/s-reversed.svg", "_pages-dir-node_src_store_COPPER_T568B_s-reversed_svg" ], "./T568B/s-reversed2.svg": [ "(pages-dir-node)/./src/store/COPPER/T568B/s-reversed2.svg", "_pages-dir-node_src_store_COPPER_T568B_s-reversed2_svg" ], "./T568B/s-reversed3.svg": [ "(pages-dir-node)/./src/store/COPPER/T568B/s-reversed3.svg", "_pages-dir-node_src_store_COPPER_T568B_s-reversed3_svg" ], "./T568B/s-short.svg": [ "(pages-dir-node)/./src/store/COPPER/T568B/s-short.svg", "_pages-dir-node_src_store_COPPER_T568B_s-short_svg" ], "./T568B/s-short2.svg": [ "(pages-dir-node)/./src/store/COPPER/T568B/s-short2.svg", "_pages-dir-node_src_store_COPPER_T568B_s-short2_svg" ], "./T568B/s-short3.svg": [ "(pages-dir-node)/./src/store/COPPER/T568B/s-short3.svg", "_pages-dir-node_src_store_COPPER_T568B_s-short3_svg" ], "./T568B/s-sopen.svg": [ "(pages-dir-node)/./src/store/COPPER/T568B/s-sopen.svg", "_pages-dir-node_src_store_COPPER_T568B_s-sopen_svg" ], "./T568B/u-cross.svg": [ "(pages-dir-node)/./src/store/COPPER/T568B/u-cross.svg", "_pages-dir-node_src_store_COPPER_T568B_u-cross_svg" ], "./T568B/u-cross2.svg": [ "(pages-dir-node)/./src/store/COPPER/T568B/u-cross2.svg", "_pages-dir-node_src_store_COPPER_T568B_u-cross2_svg" ], "./T568B/u-cross3.svg": [ "(pages-dir-node)/./src/store/COPPER/T568B/u-cross3.svg", "_pages-dir-node_src_store_COPPER_T568B_u-cross3_svg" ], "./T568B/u-miswire.svg": [ "(pages-dir-node)/./src/store/COPPER/T568B/u-miswire.svg", "_pages-dir-node_src_store_COPPER_T568B_u-miswire_svg" ], "./T568B/u-open.svg": [ "(pages-dir-node)/./src/store/COPPER/T568B/u-open.svg", "_pages-dir-node_src_store_COPPER_T568B_u-open_svg" ], "./T568B/u-open2.svg": [ "(pages-dir-node)/./src/store/COPPER/T568B/u-open2.svg", "_pages-dir-node_src_store_COPPER_T568B_u-open2_svg" ], "./T568B/u-open3.svg": [ "(pages-dir-node)/./src/store/COPPER/T568B/u-open3.svg", "_pages-dir-node_src_store_COPPER_T568B_u-open3_svg" ], "./T568B/u-pass-2pair.svg": [ "(pages-dir-node)/./src/store/COPPER/T568B/u-pass-2pair.svg", "_pages-dir-node_src_store_COPPER_T568B_u-pass-2pair_svg" ], "./T568B/u-pass.svg": [ "(pages-dir-node)/./src/store/COPPER/T568B/u-pass.svg", "_pages-dir-node_src_store_COPPER_T568B_u-pass_svg" ], "./T568B/u-reversed.svg": [ "(pages-dir-node)/./src/store/COPPER/T568B/u-reversed.svg", "_pages-dir-node_src_store_COPPER_T568B_u-reversed_svg" ], "./T568B/u-reversed2.svg": [ "(pages-dir-node)/./src/store/COPPER/T568B/u-reversed2.svg", "_pages-dir-node_src_store_COPPER_T568B_u-reversed2_svg" ], "./T568B/u-reversed3.svg": [ "(pages-dir-node)/./src/store/COPPER/T568B/u-reversed3.svg", "_pages-dir-node_src_store_COPPER_T568B_u-reversed3_svg" ], "./T568B/u-short.svg": [ "(pages-dir-node)/./src/store/COPPER/T568B/u-short.svg", "_pages-dir-node_src_store_COPPER_T568B_u-short_svg" ], "./T568B/u-short2.svg": [ "(pages-dir-node)/./src/store/COPPER/T568B/u-short2.svg", "_pages-dir-node_src_store_COPPER_T568B_u-short2_svg" ], "./T568B/u-short3.svg": [ "(pages-dir-node)/./src/store/COPPER/T568B/u-short3.svg", "_pages-dir-node_src_store_COPPER_T568B_u-short3_svg" ], "./T568B/u-sopen.svg": [ "(pages-dir-node)/./src/store/COPPER/T568B/u-sopen.svg", "_pages-dir-node_src_store_COPPER_T568B_u-sopen_svg" ] }; function webpackAsyncContext(req) { if(!__webpack_require__.o(map, req)) { return Promise.resolve().then(() => { var e = new Error("Cannot find module '" + req + "'"); e.code = 'MODULE_NOT_FOUND'; throw e; }); } var ids = map[req], id = ids[0]; return __webpack_require__.e(ids[1]).then(() => { return __webpack_require__(id); }); } webpackAsyncContext.keys = () => (Object.keys(map)); webpackAsyncContext.id = "(pages-dir-node)/./src/store/COPPER lazy recursive ^\\.\\/.*\\/.*.*\\.svg$"; module.exports = webpackAsyncContext; /***/ }), /***/ "(pages-dir-node)/./src/store/COPPER lazy recursive ^\\.\\/.*\\/s\\-pass\\.svg$": /*!************************************************************************!*\ !*** ./src/store/COPPER/ lazy ^\.\/.*\/s\-pass\.svg$ namespace object ***! \************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var map = { "./EthernetTwoPair/s-pass.svg": [ "(pages-dir-node)/./src/store/COPPER/EthernetTwoPair/s-pass.svg", "_pages-dir-node_src_store_COPPER_EthernetTwoPair_s-pass_svg" ], "./M12DTwoPair/s-pass.svg": [ "(pages-dir-node)/./src/store/COPPER/M12DTwoPair/s-pass.svg", "_pages-dir-node_src_store_COPPER_M12DTwoPair_s-pass_svg" ], "./T568B/s-pass.svg": [ "(pages-dir-node)/./src/store/COPPER/T568B/s-pass.svg", "_pages-dir-node_src_store_COPPER_T568B_s-pass_svg" ] }; function webpackAsyncContext(req) { if(!__webpack_require__.o(map, req)) { return Promise.resolve().then(() => { var e = new Error("Cannot find module '" + req + "'"); e.code = 'MODULE_NOT_FOUND'; throw e; }); } var ids = map[req], id = ids[0]; return __webpack_require__.e(ids[1]).then(() => { return __webpack_require__(id); }); } webpackAsyncContext.keys = () => (Object.keys(map)); webpackAsyncContext.id = "(pages-dir-node)/./src/store/COPPER lazy recursive ^\\.\\/.*\\/s\\-pass\\.svg$"; module.exports = webpackAsyncContext; /***/ }), /***/ "(pages-dir-node)/./src/store/FIBER lazy recursive ^\\.\\/.*\\/.*\\-dump\\.json$": /*!*************************************************************************!*\ !*** ./src/store/FIBER/ lazy ^\.\/.*\/.*\-dump\.json$ namespace object ***! \*************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var map = { "./NoFiber/1300-dump.json": [ "(pages-dir-node)/./src/store/FIBER/NoFiber/1300-dump.json", "_pages-dir-node_src_store_FIBER_NoFiber_1300-dump_json" ], "./NoFiber/1310-dump.json": [ "(pages-dir-node)/./src/store/FIBER/NoFiber/1310-dump.json", "_pages-dir-node_src_store_FIBER_NoFiber_1310-dump_json" ], "./NoFiber/1550-dump.json": [ "(pages-dir-node)/./src/store/FIBER/NoFiber/1550-dump.json", "_pages-dir-node_src_store_FIBER_NoFiber_1550-dump_json" ], "./NoFiber/850-dump.json": [ "(pages-dir-node)/./src/store/FIBER/NoFiber/850-dump.json", "_pages-dir-node_src_store_FIBER_NoFiber_850-dump_json" ], "./bend/1300-dump.json": [ "(pages-dir-node)/./src/store/FIBER/bend/1300-dump.json", "_pages-dir-node_src_store_FIBER_bend_1300-dump_json" ], "./bend/1310-dump.json": [ "(pages-dir-node)/./src/store/FIBER/bend/1310-dump.json", "_pages-dir-node_src_store_FIBER_bend_1310-dump_json" ], "./bend/1550-dump.json": [ "(pages-dir-node)/./src/store/FIBER/bend/1550-dump.json", "_pages-dir-node_src_store_FIBER_bend_1550-dump_json" ], "./bend/850-dump.json": [ "(pages-dir-node)/./src/store/FIBER/bend/850-dump.json", "_pages-dir-node_src_store_FIBER_bend_850-dump_json" ], "./connector-fail-end/1300-dump.json": [ "(pages-dir-node)/./src/store/FIBER/connector-fail-end/1300-dump.json", "_pages-dir-node_src_store_FIBER_connector-fail-end_1300-dump_json" ], "./connector-fail-end/1310-dump.json": [ "(pages-dir-node)/./src/store/FIBER/connector-fail-end/1310-dump.json", "_pages-dir-node_src_store_FIBER_connector-fail-end_1310-dump_json" ], "./connector-fail-end/1550-dump.json": [ "(pages-dir-node)/./src/store/FIBER/connector-fail-end/1550-dump.json", "_pages-dir-node_src_store_FIBER_connector-fail-end_1550-dump_json" ], "./connector-fail-end/850-dump.json": [ "(pages-dir-node)/./src/store/FIBER/connector-fail-end/850-dump.json", "_pages-dir-node_src_store_FIBER_connector-fail-end_850-dump_json" ], "./connector-fail-start/1300-dump.json": [ "(pages-dir-node)/./src/store/FIBER/connector-fail-start/1300-dump.json", "_pages-dir-node_src_store_FIBER_connector-fail-start_1300-dump_json" ], "./connector-fail-start/1310-dump.json": [ "(pages-dir-node)/./src/store/FIBER/connector-fail-start/1310-dump.json", "_pages-dir-node_src_store_FIBER_connector-fail-start_1310-dump_json" ], "./connector-fail-start/1550-dump.json": [ "(pages-dir-node)/./src/store/FIBER/connector-fail-start/1550-dump.json", "_pages-dir-node_src_store_FIBER_connector-fail-start_1550-dump_json" ], "./connector-fail-start/850-dump.json": [ "(pages-dir-node)/./src/store/FIBER/connector-fail-start/850-dump.json", "_pages-dir-node_src_store_FIBER_connector-fail-start_850-dump_json" ], "./ref-pass/1300-dump.json": [ "(pages-dir-node)/./src/store/FIBER/ref-pass/1300-dump.json", "_pages-dir-node_src_store_FIBER_ref-pass_1300-dump_json" ], "./ref-pass/1310-dump.json": [ "(pages-dir-node)/./src/store/FIBER/ref-pass/1310-dump.json", "_pages-dir-node_src_store_FIBER_ref-pass_1310-dump_json" ], "./ref-pass/1550-dump.json": [ "(pages-dir-node)/./src/store/FIBER/ref-pass/1550-dump.json", "_pages-dir-node_src_store_FIBER_ref-pass_1550-dump_json" ], "./ref-pass/850-dump.json": [ "(pages-dir-node)/./src/store/FIBER/ref-pass/850-dump.json", "_pages-dir-node_src_store_FIBER_ref-pass_850-dump_json" ], "./sm-fail/1300-dump.json": [ "(pages-dir-node)/./src/store/FIBER/sm-fail/1300-dump.json", "_pages-dir-node_src_store_FIBER_sm-fail_1300-dump_json" ], "./sm-fail/1310-dump.json": [ "(pages-dir-node)/./src/store/FIBER/sm-fail/1310-dump.json", "_pages-dir-node_src_store_FIBER_sm-fail_1310-dump_json" ], "./sm-fail/1550-dump.json": [ "(pages-dir-node)/./src/store/FIBER/sm-fail/1550-dump.json", "_pages-dir-node_src_store_FIBER_sm-fail_1550-dump_json" ], "./sm-fail/850-dump.json": [ "(pages-dir-node)/./src/store/FIBER/sm-fail/850-dump.json", "_pages-dir-node_src_store_FIBER_sm-fail_850-dump_json" ], "./sm-pass/1300-dump.json": [ "(pages-dir-node)/./src/store/FIBER/sm-pass/1300-dump.json", "_pages-dir-node_src_store_FIBER_sm-pass_1300-dump_json" ], "./sm-pass/1310-dump.json": [ "(pages-dir-node)/./src/store/FIBER/sm-pass/1310-dump.json", "_pages-dir-node_src_store_FIBER_sm-pass_1310-dump_json" ], "./sm-pass/1550-dump.json": [ "(pages-dir-node)/./src/store/FIBER/sm-pass/1550-dump.json", "_pages-dir-node_src_store_FIBER_sm-pass_1550-dump_json" ], "./sm-pass/850-dump.json": [ "(pages-dir-node)/./src/store/FIBER/sm-pass/850-dump.json", "_pages-dir-node_src_store_FIBER_sm-pass_850-dump_json" ], "./splice-fail/1300-dump.json": [ "(pages-dir-node)/./src/store/FIBER/splice-fail/1300-dump.json", "_pages-dir-node_src_store_FIBER_splice-fail_1300-dump_json" ], "./splice-fail/1310-dump.json": [ "(pages-dir-node)/./src/store/FIBER/splice-fail/1310-dump.json", "_pages-dir-node_src_store_FIBER_splice-fail_1310-dump_json" ], "./splice-fail/1550-dump.json": [ "(pages-dir-node)/./src/store/FIBER/splice-fail/1550-dump.json", "_pages-dir-node_src_store_FIBER_splice-fail_1550-dump_json" ], "./splice-fail/850-dump.json": [ "(pages-dir-node)/./src/store/FIBER/splice-fail/850-dump.json", "_pages-dir-node_src_store_FIBER_splice-fail_850-dump_json" ] }; function webpackAsyncContext(req) { if(!__webpack_require__.o(map, req)) { return Promise.resolve().then(() => { var e = new Error("Cannot find module '" + req + "'"); e.code = 'MODULE_NOT_FOUND'; throw e; }); } var ids = map[req], id = ids[0]; return __webpack_require__.e(ids[1]).then(() => { return __webpack_require__.t(id, 3 | 16); }); } webpackAsyncContext.keys = () => (Object.keys(map)); webpackAsyncContext.id = "(pages-dir-node)/./src/store/FIBER lazy recursive ^\\.\\/.*\\/.*\\-dump\\.json$"; module.exports = webpackAsyncContext; /***/ }), /***/ "(pages-dir-node)/./src/store/FIBER/CFP_LIMIT.js": /*!**************************************!*\ !*** ./src/store/FIBER/CFP_LIMIT.js ***! \**************************************/ /***/ ((__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 */ });\nconst CFP_LIMIT = {\n \"TIA-568.3-E Singlemode ISP (STD)\": {\n \"adapterLoss\": 0.75,\n \"firstLastAdapterLoss\": 0.75,\n \"spliceLoss\": 0.3,\n \"totalLoss850nm\": null,\n \"totalLoss1300nm\": null,\n \"totalLoss1310nm\": null,\n \"totalLoss1550nm\": null,\n \"lossPerKm850nm\": null,\n \"lossPerKm1300nm\": null,\n \"lossPerKm1310nm\": 1,\n \"lossPerKm1550nm\": 1,\n \"maxSMLength\": 40000\n },\n \"TIA-568.3-E Multimode (STD)\": {\n \"adapterLoss\": 0.75,\n \"firstLastAdapterLoss\": 0.75,\n \"spliceLoss\": 0.3,\n \"totalLoss850nm\": null,\n \"totalLoss1300nm\": null,\n \"totalLoss1310nm\": null,\n \"totalLoss1550nm\": null,\n \"lossPerKm850nm\": 3,\n \"lossPerKm1300nm\": 1.5,\n \"lossPerKm1310nm\": null,\n \"lossPerKm1550nm\": null,\n \"maxMMLength\": 2000\n },\n \"TIA-568.3-E Singlemode OSP (STD)\": {\n \"adapterLoss\": 0.75,\n \"firstLastAdapterLoss\": 0.75,\n \"spliceLoss\": 0.3,\n \"totalLoss850nm\": null,\n \"totalLoss1300nm\": null,\n \"totalLoss1310nm\": null,\n \"totalLoss1550nm\": null,\n \"lossPerKm850nm\": null,\n \"lossPerKm1300nm\": null,\n \"lossPerKm1310nm\": 0.5,\n \"lossPerKm1550nm\": 0.5,\n \"maxSMLength\": 40000\n },\n \"TIA-568.3-E Singlemode ISP (REF)\": {\n \"adapterLoss\": 0.75,\n \"firstLastAdapterLoss\": 0.5,\n \"spliceLoss\": 0.3,\n \"totalLoss850nm\": null,\n \"totalLoss1300nm\": null,\n \"totalLoss1310nm\": null,\n \"totalLoss1550nm\": null,\n \"lossPerKm850nm\": null,\n \"lossPerKm1300nm\": null,\n \"lossPerKm1310nm\": 1,\n \"lossPerKm1550nm\": 1,\n \"maxSMLength\": 40000\n },\n \"TIA-568.3-E Multimode (REF)\": {\n \"adapterLoss\": 0.75,\n \"firstLastAdapterLoss\": 0.5,\n \"spliceLoss\": 0.3,\n \"totalLoss850nm\": null,\n \"totalLoss1300nm\": null,\n \"totalLoss1310nm\": null,\n \"totalLoss1550nm\": null,\n \"lossPerKm850nm\": null,\n \"lossPerKm1300nm\": null,\n \"lossPerKm1310nm\": 3,\n \"lossPerKm1550nm\": 1.5,\n \"maxMMLength\": 2000\n },\n \"TIA-568.3-E Singlemode OSP (REF)\": {\n \"adapterLoss\": 0.75,\n \"firstLastAdapterLoss\": 0.5,\n \"spliceLoss\": 0.3,\n \"totalLoss850nm\": null,\n \"totalLoss1300nm\": null,\n \"totalLoss1310nm\": null,\n \"totalLoss1550nm\": null,\n \"lossPerKm850nm\": null,\n \"lossPerKm1300nm\": null,\n \"lossPerKm1310nm\": 0.5,\n \"lossPerKm1550nm\": 0.5,\n \"maxSMLength\": 40000\n },\n \"GB/T 50312-2016 Fiber Link\": {\n \"adapterLoss\": 0.75,\n \"firstLastAdapterLoss\": 0.75,\n \"spliceLoss\": 0.3,\n \"totalLoss850nm\": null,\n \"totalLoss1300nm\": null,\n \"totalLoss1310nm\": null,\n \"totalLoss1550nm\": null,\n \"lossPerKm850nm\": 3.5,\n \"lossPerKm1300nm\": 1.5,\n \"lossPerKm1310nm\": 0.4,\n \"lossPerKm1550nm\": 0.4,\n \"maxSMLength\": 5000,\n \"maxMMLength\": 2000\n },\n \"GB/T 50312-2016 OF-300 Ch\": {\n \"adapterLoss\": null,\n \"firstLastAdapterLoss\": null,\n \"spliceLoss\": null,\n \"totalLoss850nm\": 2.55,\n \"totalLoss1300nm\": 1.95,\n \"totalLoss1310nm\": 1.8,\n \"totalLoss1550nm\": 1.8,\n \"lossPerKm850nm\": null,\n \"lossPerKm1300nm\": null,\n \"lossPerKm1310nm\": null,\n \"lossPerKm1550nm\": null,\n \"maxSMLength\": 300,\n \"maxMMLength\": 300\n },\n \"GB/T 50312-2016 OF-500 Ch\": {\n \"adapterLoss\": null,\n \"firstLastAdapterLoss\": null,\n \"spliceLoss\": null,\n \"totalLoss850nm\": 3.25,\n \"totalLoss1300nm\": 2.25,\n \"totalLoss1310nm\": 2,\n \"totalLoss1550nm\": 2,\n \"lossPerKm850nm\": null,\n \"lossPerKm1300nm\": null,\n \"lossPerKm1310nm\": null,\n \"lossPerKm1550nm\": null,\n \"maxSMLength\": 500,\n \"maxMMLength\": 500\n },\n \"GB/T 50312-2016 OF-2000 Ch\": {\n \"adapterLoss\": null,\n \"firstLastAdapterLoss\": null,\n \"spliceLoss\": null,\n \"totalLoss850nm\": 8.5,\n \"totalLoss1300nm\": 4.5,\n \"totalLoss1310nm\": 3.5,\n \"totalLoss1550nm\": 3.5,\n \"lossPerKm850nm\": null,\n \"lossPerKm1300nm\": null,\n \"lossPerKm1310nm\": null,\n \"lossPerKm1550nm\": null,\n \"maxSMLength\": 2000,\n \"maxMMLength\": 2000\n },\n \"ISO/IEC 11801-2002 Fibre Link\": {\n \"adapterLoss\": 0.75,\n \"firstLastAdapterLoss\": 0.75,\n \"spliceLoss\": 0.3,\n \"totalLoss850nm\": null,\n \"totalLoss1300nm\": null,\n \"totalLoss1310nm\": null,\n \"totalLoss1550nm\": null,\n \"lossPerKm850nm\": null,\n \"lossPerKm1300nm\": null,\n \"lossPerKm1310nm\": null,\n \"lossPerKm1550nm\": null,\n \"maxSMLength\": 5000,\n \"maxMMLength\": 2000\n },\n \"ISO/IEC 11801-2002 OF-300 CH\": {\n \"adapterLoss\": null,\n \"firstLastAdapterLoss\": null,\n \"spliceLoss\": null,\n \"totalLoss850nm\": 2.55,\n \"totalLoss1300nm\": 1.95,\n \"totalLoss1310nm\": 1.8,\n \"totalLoss1550nm\": 1.8,\n \"lossPerKm850nm\": null,\n \"lossPerKm1300nm\": null,\n \"lossPerKm1310nm\": null,\n \"lossPerKm1550nm\": null,\n \"maxSMLength\": 300,\n \"maxMMLength\": 300\n },\n \"ISO/IEC 11801-2002 OF-500 CH\": {\n \"adapterLoss\": null,\n \"firstLastAdapterLoss\": null,\n \"spliceLoss\": null,\n \"totalLoss850nm\": 3.25,\n \"totalLoss1300nm\": 2.25,\n \"totalLoss1310nm\": 2,\n \"totalLoss1550nm\": 2,\n \"lossPerKm850nm\": null,\n \"lossPerKm1300nm\": null,\n \"lossPerKm1310nm\": null,\n \"lossPerKm1550nm\": null,\n \"maxSMLength\": 500,\n \"maxMMLength\": 500\n },\n \"ISO/IEC 11801-2002 OF-2000 CH\": {\n \"adapterLoss\": null,\n \"firstLastAdapterLoss\": null,\n \"spliceLoss\": null,\n \"totalLoss850nm\": 8.5,\n \"totalLoss1300nm\": 4.5,\n \"totalLoss1310nm\": 3.5,\n \"totalLoss1550nm\": 3.5,\n \"lossPerKm850nm\": null,\n \"lossPerKm1300nm\": null,\n \"lossPerKm1310nm\": null,\n \"lossPerKm1550nm\": null,\n \"maxSMLength\": 2000,\n \"maxMMLength\": 2000\n },\n \"ISO/IEC 14763-3:2024 (Draft)\": {\n \"adapterLoss\": 0.75,\n \"firstLastAdapterLoss\": 0.5,\n \"spliceLoss\": 0.3,\n \"totalLoss850nm\": null,\n \"totalLoss1300nm\": null,\n \"totalLoss1310nm\": null,\n \"totalLoss1550nm\": null,\n \"lossPerKm850nm\": 3.5,\n \"lossPerKm1300nm\": 1.5,\n \"lossPerKm1310nm\": 0.4,\n \"lossPerKm1550nm\": 0.4,\n \"maxSMLength\": 10000,\n \"maxMMLength\": 2000\n },\n \"ISO/IEC 14763-3:2014\": {\n \"adapterLoss\": 0.75,\n \"firstLastAdapterLoss\": 0.5,\n \"spliceLoss\": 0.3,\n \"totalLoss850nm\": null,\n \"totalLoss1300nm\": null,\n \"totalLoss1310nm\": null,\n \"totalLoss1550nm\": null,\n \"lossPerKm850nm\": 3.5,\n \"lossPerKm1300nm\": 1.5,\n \"lossPerKm1310nm\": 0.4,\n \"lossPerKm1550nm\": 0.4,\n \"maxSMLength\": 5000,\n \"maxMMLength\": 2000\n },\n \"ISO/IEC 14763-3\": {\n \"adapterLoss\": 0.75,\n \"firstLastAdapterLoss\": 0.5,\n \"spliceLoss\": 0.3,\n \"totalLoss850nm\": null,\n \"totalLoss1300nm\": null,\n \"totalLoss1310nm\": null,\n \"totalLoss1550nm\": null,\n \"lossPerKm850nm\": 3.5,\n \"lossPerKm1300nm\": 1.5,\n \"lossPerKm1310nm\": 0.4,\n \"lossPerKm1550nm\": 0.4,\n \"maxSMLength\": 5000,\n \"maxMMLength\": 2000\n }\n};\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (CFP_LIMIT);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHBhZ2VzLWRpci1ub2RlKS8uL3NyYy9zdG9yZS9GSUJFUi9DRlBfTElNSVQuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE1BQU1BLFlBQVk7SUFDZixvQ0FBb0M7UUFDL0IsZUFBZTtRQUNmLHdCQUF3QjtRQUN4QixjQUFjO1FBQ2Qsa0JBQWtCO1FBQ2xCLG1CQUFtQjtRQUNuQixtQkFBbUI7UUFDbkIsbUJBQW1CO1FBQ25CLGtCQUFrQjtRQUNsQixtQkFBbUI7UUFDbkIsbUJBQW1CO1FBQ25CLG1CQUFtQjtRQUNuQixlQUFlO0lBQ25CO0lBQ0EsK0JBQStCO1FBQzNCLGVBQWU7UUFDZix3QkFBd0I7UUFDeEIsY0FBYztRQUNkLGtCQUFrQjtRQUNsQixtQkFBbUI7UUFDbkIsbUJBQW1CO1FBQ25CLG1CQUFtQjtRQUNuQixrQkFBa0I7UUFDbEIsbUJBQW1CO1FBQ25CLG1CQUFtQjtRQUNuQixtQkFBbUI7UUFDbkIsZUFBZTtJQUNuQjtJQUNBLG9DQUFvQztRQUNoQyxlQUFlO1FBQ2Ysd0JBQXdCO1FBQ3hCLGNBQWM7UUFDZCxrQkFBa0I7UUFDbEIsbUJBQW1CO1FBQ25CLG1CQUFtQjtRQUNuQixtQkFBbUI7UUFDbkIsa0JBQWtCO1FBQ2xCLG1CQUFtQjtRQUNuQixtQkFBbUI7UUFDbkIsbUJBQW1CO1FBQ25CLGVBQWU7SUFDbkI7SUFDQSxvQ0FBb0M7UUFDaEMsZUFBZTtRQUNmLHdCQUF3QjtRQUN4QixjQUFjO1FBQ2Qsa0JBQWtCO1FBQ2xCLG1CQUFtQjtRQUNuQixtQkFBbUI7UUFDbkIsbUJBQW1CO1FBQ25CLGtCQUFrQjtRQUNsQixtQkFBbUI7UUFDbkIsbUJBQW1CO1FBQ25CLG1CQUFtQjtRQUNuQixlQUFlO0lBQ25CO0lBQ0EsK0JBQStCO1FBQzNCLGVBQWU7UUFDZix3QkFBd0I7UUFDeEIsY0FBYztRQUNkLGtCQUFrQjtRQUNsQixtQkFBbUI7UUFDbkIsbUJBQW1CO1FBQ25CLG1CQUFtQjtRQUNuQixrQkFBa0I7UUFDbEIsbUJBQW1CO1FBQ25CLG1CQUFt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ZUFBZTtRQUNmLHdCQUF3QjtRQUN4QixjQUFjO1FBQ2Qsa0JBQWtCO1FBQ2xCLG1CQUFtQjtRQUNuQixtQkFBbUI7UUFDbkIsbUJBQW1CO1FBQ25CLGtCQUFrQjtRQUNsQixtQkFBbUI7UUFDbkIsbUJBQW1CO1FBQ25CLG1CQUFtQjtRQUNuQixlQUFlO1FBQ2YsZUFBZTtJQUNuQjtJQUNBLG1CQUFtQjtRQUNmLGVBQWU7UUFDZix3QkFBd0I7UUFDeEIsY0FBYztRQUNkLGtCQUFrQjtRQUNsQixtQkFBbUI7UUFDbkIsbUJBQW1CO1FBQ25CLG1CQUFtQjtRQUNuQixrQkFBa0I7UUFDbEIsbUJBQW1CO1FBQ25CLG1CQUFtQjtRQUNuQixtQkFBbUI7UUFDbkIsZUFBZTtRQUNmLGVBQWU7SUFDbkI7QUFDSjtBQUVBLGlFQUFlQSxTQUFTQSxFQUFDIiwic291cmNlcyI6WyIvb3B0L2Rldi9lc3QtZHN4L3NyYy9zdG9yZS9GSUJFUi9DRlBfTElNSVQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgQ0ZQX0xJTUlUID0ge1xyXG4gICBcIlRJQS01NjguMy1FIFNpbmdsZW1vZGUgSVNQIChTVEQpXCI6IHtcclxuICAgICAgICBcImFkYXB0ZXJMb3NzXCI6IDAuNzUsXHJcbiAgICAgICAgXCJmaXJzdExhc3RBZGFwdGVyTG9zc1wiOiAwLjc1LFxyXG4gICAgICAgIFwic3BsaWNlTG9zc1wiOiAwLjMsXHJcbiAgICAgICAgXCJ0b3RhbExvc3M4NTBubVwiOiBudWxsLFxyXG4gICAgICAgIFwidG90YWxMb3NzMTMwMG5tXCI6IG51bGwsXHJcbiAgICAgICAgXCJ0b3RhbExvc3MxMzEwbm1cIjogbnVsbCxcclxuICAgICAgICBcInRvdGFsTG9zczE1NTBubVwiOiBudWxsLFxyXG4gICAgICAgIFwibG9zc1BlckttODUwbm1cIjogbnVsbCxcclxuICAgICAgICBcImxvc3NQZXJLbTEzMDBubVwiOiBudWxsLFxyXG4gICAgICAgIFwibG9zc1BlckttMTMxMG5tXCI6IDEsXHJcbiAgICAgICAgXCJsb3NzUGVyS20xNTUwbm1cIjogMSxcclxuICAgICAgICBcIm1heFNNTGVuZ3RoXCI6IDQwMDAwXHJcbiAgICB9LFxyXG4gICAgXCJUSUEtNTY4LjMtRSBNdWx0aW1vZGUgKFNURClcIjoge1xyXG4gICAgICAgIFwiYWRhcHRlckxvc3NcIjogMC43NSxcclxuICAgICAgICBcImZpcnN0TGFzdEFkYXB0ZXJMb3NzXCI6IDAuNzUsXHJcbiAgICAgICAgXCJzcGxpY2VMb3NzXCI6IDAuMyxcclxuICAgICAgICBcInRvdGFsTG9zczg1MG5tXCI6IG51bGwsXHJcbiAgICAgICAgXCJ0b3RhbExvc3MxMzAwbm1cIjogbnVsbCxcclxuICAgICAgICBcInRvdGFsTG9zczEzMTBubVwiOiBudWxsLFxyXG4gICAgICAgIFwidG90YWxMb3NzMTU1MG5tXCI6IG51bGwsXHJcbiAgICAgICAgXCJsb3NzUGVyS204NTBubVwiOiAzLFxyXG4gICAgICAgIFwibG9zc1BlckttMTMwMG5tXCI6IDEuNSxcclxuICAgICAgICBcImxvc3NQZXJLbTEzMTBubVwiOiBudWxsLFxyXG4gICAgICAgIFwibG9zc1BlckttMTU1MG5tXCI6IG51bGwsXHJcbiAgICAgICAgXCJtYXhNTUxlbmd0aFwiOiAyMDAwXHJcbiAgICB9LFxyXG4gICAgXCJUSUEtNTY4LjMtRSBTaW5nbGVtb2RlIE9TUCAoU1REKVwiOiB7XHJcbiAgICAgICAgXCJhZGFwdGVyTG9zc1wiOiAwLjc1LFxyXG4gICAgICAgIFwiZmlyc3RMYXN0QWRhcHRlckxvc3NcIjogMC43NSxcclxuICAgICAgICBcInNwbGljZUxvc3NcIjogMC4zLFxyXG4gICAgICAgIFwidG90YWxMb3NzODUwbm1cIjogbnVsbCxcclxuICAgICAgICBcInRvdGFsTG9zczEzMDBubVwiOiBudWxsLFxyXG4gICAgICAgIFwidG90YWxMb3NzMTMxMG5tXCI6IG51bGwsXHJcbiAgICAgICAgXCJ0b3RhbExvc3MxNTUwbm1cIjogbnVsbCxcclxuICAgICAgICBcImxvc3NQZXJLbTg1MG5tXCI6IG51bGwsXHJcbiAgICAgICAgXCJsb3NzUGVyS20xMzAwbm1cIjogbnVsbCxcclxuICAgICAgICBcImxvc3NQZXJLbTEzMTBubVwiOiAwLjUsXHJcbiAgICAgICAgXCJsb3NzUGVyS20xNTUwbm1cIjogMC41LFxyXG4gICAgICAgIFwibWF4U01MZW5ndGhcIjogNDAwMDBcclxuICAgIH0sXHJcbiAgICBcIlRJQS01NjguMy1FIFNpbmdsZW1vZGUgSVNQIChSRUYpXCI6IHtcclxuICAgICAgICBcImFkYXB0ZXJMb3NzXCI6IDAuNzUsXHJcbiAgICAgICAgXCJmaXJzdExhc3RBZGFwdGVyTG9zc1wiOiAwLjUsXHJcbiAgICAgICAgXCJzcGxpY2VMb3NzXCI6IDAuMyxcclxuICAgICAgICBcInRvdGFsTG9zczg1MG5tXCI6IG51bGwsXHJcbiAgICAgICAgXCJ0b3RhbExvc3MxMzAwbm1cIjogbnVsbCxcclxuICAgICAgICBcInRvdGFsTG9zczEzMTBubVwiOiBudWxsLFxyXG4gICAgICAgIFwidG90YWxMb3NzMTU1MG5tXCI6IG51bGwsXHJcbiAgICAgICAgXCJsb3NzUGVyS204NTBubVwiOiBudWxsLFxyXG4gICAgICAgIFwibG9zc1BlckttMTMwMG5tXCI6IG51bGwsXHJcbiAgICAgICAgXCJsb3NzUGVyS20xMzEwbm1cIjogMSxcclxuICAgICAgICBcImxvc3NQZXJLbTE1NTBubVwiOiAxLFxyXG4gICAgICAgIFwibWF4U01MZW5ndGhcIjogNDAwMDBcclxuICAgIH0sXHJcbiAgICBcIlRJQS01NjguMy1FIE11bHRpbW9kZSAoUkVGKVwiOiB7XHJcbiAgICAgICAgXCJhZGFwdGVyTG9zc1wiOiAwLjc1LFxyXG4gICAgICAgIFwiZmlyc3RMYXN0QWRhcHRlckxvc3NcIjogMC41LFxyXG4gICAgICAgIFwic3BsaWNlTG9zc1wiOiAwLjMsXHJcbiAgICAgICAgXCJ0b3RhbExvc3M4NTBubVwiOiBudWxsLFxyXG4gICAgICAgIFwidG90YWxMb3NzMTMwMG5tXCI6IG51bGwsXHJcbiAgICAgICAgXCJ0b3RhbExvc3MxMzEwbm1cIjogbnVsbCxcclxuICAgICAgICBcInRvdGFsTG9zczE1NTBubVwiOiBudWxsLFxyXG4gICAgICAgIFwibG9zc1BlckttODUwbm1cIjogbnVsbCxcclxuICAgICAgICBcImxvc3NQZXJLbTEzMDBubVwiOiBudWxsLFxyXG4gICAgICAgIFwibG9zc1BlckttMTMxMG5tXCI6IDMsXHJcbiAgICAgICAgXCJsb3NzUGVyS20xNTUwbm1cIjogMS41LFxyXG4gICAgICAgIFwibWF4TU1MZW5ndGhcIjogMjAwMFxyXG4gICAgfSxcclxuICAgIFwiVElBLTU2OC4zLUUgU2luZ2xlbW9kZSBPU1AgKFJFRilcIjoge1xyXG4gICAgICAgIFwiYWRhcHRlckxvc3NcIjogMC43NSxcclxuICAgICAgICBcImZpcnN0TGFzdEFkYXB0ZXJMb3NzXCI6IDAuNSxcclxuICAgICAgICBcInNwbGljZUxvc3NcIjogMC4zLFxyXG4gICAgICAgIFwidG90YWxMb3NzODUwbm1cIjogbnVsbCxcclxuICAgICAgICBcInRvdGFsTG9zczEzMDBubVwiOiBudWxsLFxyXG4gICAgICAgIFwidG90YWxMb3NzMTMxMG5tXCI6IG51bGwsXHJcbiAgICAgICAgXCJ0b3RhbExvc3MxNTUwbm1cIjogbnVsbCxcclxuICAgICAgICBcImxvc3NQZXJLbTg1MG5tXCI6IG51bGwsXHJcbiAgICAgICAgXCJsb3NzUGVyS20xMzAwbm1cIjogbnVsbCxcclxuICAgICAgICBcImxvc3NQZXJLbTEzMTBubVwiOiAwLjUsXHJcbiAgICAgICAgXCJsb3NzUGVyS20xNTUwbm1cIjogMC41LFxyXG4gICAgICAgIFwibWF4U01MZW5ndGhcIjogNDAwMDBcclxuICAgIH0sXHJcbiAgICBcIkdCL1QgNTAzMTItMjAxNiBGaWJlciBMaW5rXCI6IHtcclxuICAgICAgICBcImFkYXB0ZXJMb3NzXCI6IDAuNzUsXHJcbiAgICAgICAgXCJmaXJzdExhc3RBZGFwdGVyTG9zc1wiOiAwLjc1LFxyXG4gICAgICAgIFwic3BsaWNlTG9zc1wiOiAwLjMsXHJcbiAgICAgICAgXCJ0b3RhbExvc3M4NTBubVwiOiBudWxsLFxyXG4gICAgICAgIFwidG90YWxMb3NzMTMwMG5tXCI6IG51bGwsXHJcbiAgICAgICAgXCJ0b3RhbExvc3MxMzEwbm1cIjogbnVsbCxcclxuICAgICAgICBcInRvdGFsTG9zczE1NTBubVwiOiBudWxsLFxyXG4gICAgICAgIFwibG9zc1BlckttODUwbm1cIjogMy41LFxyXG4gICAgICAgIFwibG9zc1BlckttMTMwMG5tXCI6IDEuNSxcclxuICAgICAgICBcImxvc3NQZXJLbTEzMTBubVwiOiAwLjQsXHJcbiAgICAgICAgXCJsb3NzUGVyS20xNTUwbm1cIjogMC40LFxyXG4gICAgICAgIFwibWF4U01MZW5ndGhcIjogNTAwMCxcclxuICAgICAgICBcIm1heE1NTGVuZ3RoXCI6IDIwMDBcclxuICAgIH0sXHJcbiAgICBcIkdCL1QgNTAzMTItMjAxNiBPRi0zMDAgQ2hcIjoge1xyXG4gICAgICAgIFwiYWRhcHRlckxvc3NcIjogbnVsbCxcclxuICAgICAgICBcImZpcnN0TGFzdEFkYXB0ZXJMb3NzXCI6IG51bGwsXHJcbiAgICAgICAgXCJzcGxpY2VMb3NzXCI6IG51bGwsXHJcbiAgICAgICAgXCJ0b3RhbExvc3M4NTBubVwiOiAyLjU1LFxyXG4gICAgICAgIFwidG90YWxMb3NzMTMwMG5tXCI6IDEuOTUsXHJcbiAgICAgICAgXCJ0b3RhbExvc3MxMzEwbm1cIjogMS44LFxyXG4gICAgICAgIFwidG90YWxMb3NzMTU1MG5tXCI6IDEuOCxcclxuICAgICAgICBcImxvc3NQZXJLbTg1MG5tXCI6IG51bGwsXHJcbiAgICAgICAgXCJsb3NzUGVyS20xMzAwbm1cIjogbnVsbCxcclxuICAgICAgICBcImxvc3NQZXJLbTEzMTBubVwiOiBudWxsLFxyXG4gICAgICAgIFwibG9zc1BlckttMTU1MG5tXCI6IG51bGwsXHJcbiAgICAgICAgXCJtYXhTTUxlbmd0aFwiOiAzMDAsXHJcbiAgICAgICAgXCJtYXhNTUxlbmd0aFwiOiAzMDBcclxuICAgIH0sXHJcbiAgICBcIkdCL1QgNTAzMTItMjAxNiBPRi01MDAgQ2hcIjoge1xyXG4gICAgICAgIFwiYWRhcHRlckxvc3NcIjogbnVsbCxcclxuICAgICAgICBcImZpcnN0TGFzdEFkYXB0ZXJMb3NzXCI6IG51bGwsXHJcbiAgICAgICAgXCJzcGxpY2VMb3NzXCI6IG51bGwsXHJcbiAgICAgICAgXCJ0b3RhbExvc3M4NTBubVwiOiAzLjI1LFxyXG4gICAgICAgIFwidG90YWxMb3NzMTMwMG5tXCI6IDIuMjUsXHJcbiAgICAgICAgXCJ0b3RhbExvc3MxMzEwbm1cIjogMixcclxuICAgICAgICBcInRvdGFsTG9zczE1NTBubVwiOiAyLFxyXG4gICAgICAgIFwibG9zc1BlckttODUwbm1cIjogbnVsbCxcclxuICAgICAgICBcImxvc3NQZXJLbTEzMDBubVwiOiBudWxsLFxyXG4gICAgICAgIFwibG9zc1BlckttMTMxMG5tXCI6IG51bGwsXHJcbiAgICAgICAgXCJsb3NzUGVyS20xNTUwbm1cIjogbnVsbCxcclxuICAgICAgICBcIm1heFNNTGVuZ3RoXCI6IDUwMCxcclxuICAgICAgICBcIm1heE1NTGVuZ3RoXCI6IDUwMFxyXG4gICAgfSxcclxuICAgIFwiR0IvVCA1MDMxMi0yMDE2IE9GLTIwMDAgQ2hcIjoge1xyXG4gICAgICAgIFwiYWRhcHRlckxvc3NcIjogbnVsbCxcclxuICAgICAgICBcImZpcnN0TGFzdEFkYXB0ZXJMb3NzXCI6IG51bGwsXHJcbiAgICAgICAgXCJzcGxpY2VMb3NzXCI6IG51bGwsXHJcbiAgICAgICAgXCJ0b3RhbExvc3M4NTBubVwiOiA4LjUsXHJcbiAgICAgICAgXCJ0b3RhbExvc3MxMzAwbm1cIjogNC41LFxyXG4gICAgICAgIFwidG90YWxMb3NzMTMxMG5tXCI6IDMuNSxcclxuICAgICAgICBcInRvdGFsTG9zczE1NTBubVwiOiAzLjUsXHJcbiAgICAgICAgXCJsb3NzUGVyS204NTBubVwiOiBudWxsLFxyXG4gICAgICAgIFwibG9zc1BlckttMTMwMG5tXCI6IG51bGwsXHJcbiAgICAgICAgXCJsb3NzUGVyS20xMzEwbm1cIjogbnVsbCxcclxuICAgICAgICBcImxvc3NQZXJLbTE1NTBubVwiOiBudWxsLFxyXG4gICAgICAgIFwibWF4U01MZW5ndGhcIjogMjAwMCxcclxuICAgICAgICBcIm1heE1NTGVuZ3RoXCI6IDIwMDBcclxuICAgIH0sXHJcbiAgICBcIklTTy9JRUMgMTE4MDEtMjAwMiBGaWJyZSBMaW5rXCI6IHtcclxuICAgICAgICBcImFkYXB0ZXJMb3NzXCI6IDAuNzUsXHJcbiAgICAgICAgXCJmaXJzdExhc3RBZGFwdGVyTG9zc1wiOiAwLjc1LFxyXG4gICAgICAgIFwic3BsaWNlTG9zc1wiOiAwLjMsXHJcbiAgICAgICAgXCJ0b3RhbExvc3M4NTBubVwiOiBudWxsLFxyXG4gICAgICAgIFwidG90YWxMb3NzMTMwMG5tXCI6IG51bGwsXHJcbiAgICAgICAgXCJ0b3RhbExvc3MxMzEwbm1cIjogbnVsbCxcclxuICAgICAgICBcInRvdGFsTG9zczE1NTBubVwiOiBudWxsLFxyXG4gICAgICAgIFwibG9zc1BlckttODUwbm1cIjogbnVsbCxcclxuICAgICAgICBcImxvc3NQZXJLbTEzMDBubVwiOiBudWxsLFxyXG4gICAgICAgIFwibG9zc1BlckttMTMxMG5tXCI6IG51bGwsXHJcbiAgICAgICAgXCJsb3NzUGVyS20xNTUwbm1cIjogbnVsbCxcclxuICAgICAgICBcIm1heFNNTGVuZ3RoXCI6IDUwMDAsXHJcbiAgICAgICAgXCJtYXhNTUxlbmd0aFwiOiAyMDAwXHJcbiAgICB9LFxyXG4gICAgXCJJU08vSUVDIDExODAxLTIwMDIgT0YtMzAwIENIXCI6IHtcclxuICAgICAgICBcImFkYXB0ZXJMb3NzXCI6IG51bGwsXHJcbiAgICAgICAgXCJmaXJzdExhc3RBZGFwdGVyTG9zc1wiOiBudWxsLFxyXG4gICAgICAgIFwic3BsaWNlTG9zc1wiOiBudWxsLFxyXG4gICAgICAgIFwidG90YWxMb3NzODUwbm1cIjogMi41NSxcclxuICAgICAgICBcInRvdGFsTG9zczEzMDBubVwiOiAxLjk1LFxyXG4gICAgICAgIFwidG90YWxMb3NzMTMxMG5tXCI6IDEuOCxcclxuICAgICAgICBcInRvdGFsTG9zczE1NTBubVwiOiAxLjgsXHJcbiAgICAgICAgXCJsb3NzUGVyS204NTBubVwiOiBudWxsLFxyXG4gICAgICAgIFwibG9zc1BlckttMTMwMG5tXCI6IG51bGwsXHJcbiAgICAgICAgXCJsb3NzUGVyS20xMzEwbm1cIjogbnVsbCxcclxuICAgICAgICBcImxvc3NQZXJLbTE1NTBubVwiOiBudWxsLFxyXG4gICAgICAgIFwibWF4U01MZW5ndGhcIjogMzAwLFxyXG4gICAgICAgIFwibWF4TU1MZW5ndGhcIjogMzAwXHJcbiAgICB9LFxyXG4gICAgXCJJU08vSUVDIDExODAxLTIwMDIgT0YtNTAwIENIXCI6IHtcclxuICAgICAgICBcImFkYXB0ZXJMb3NzXCI6IG51bGwsXHJcbiAgICAgICAgXCJmaXJzdExhc3RBZGFwdGVyTG9zc1wiOiBudWxsLFxyXG4gICAgICAgIFwic3BsaWNlTG9zc1wiOiBudWxsLFxyXG4gICAgICAgIFwidG90YWxMb3NzODUwbm1cIjogMy4yNSxcclxuICAgICAgICBcInRvdGFsTG9zczEzMDBubVwiOiAyLjI1LFxyXG4gICAgICAgIFwidG90YWxMb3NzMTMxMG5tXCI6IDIsXHJcbiAgICAgICAgXCJ0b3RhbExvc3MxNTUwbm1cIjogMixcclxuICAgICAgICBcImxvc3NQZXJLbTg1MG5tXCI6IG51bGwsXHJcbiAgICAgICAgXCJsb3NzUGVyS20xMzAwbm1cIjogbnVsbCxcclxuICAgICAgICBcImxvc3NQZXJLbTEzMTBubVwiOiBudWxsLFxyXG4gICAgICAgIFwibG9zc1BlckttMTU1MG5tXCI6IG51bGwsXHJcbiAgICAgICAgXCJtYXhTTUxlbmd0aFwiOiA1MDAsXHJcbiAgICAgICAgXCJtYXhNTUxlbmd0aFwiOiA1MDBcclxuICAgIH0sXHJcbiAgICBcIklTTy9JRUMgMTE4MDEtMjAwMiBPRi0yMDAwIENIXCI6IHtcclxuICAgICAgICBcImFkYXB0ZXJMb3NzXCI6IG51bGwsXHJcbiAgICAgICAgXCJmaXJzdExhc3RBZGFwdGVyTG9zc1wiOiBudWxsLFxyXG4gICAgICAgIFwic3BsaWNlTG9zc1wiOiBudWxsLFxyXG4gICAgICAgIFwidG90YWxMb3NzODUwbm1cIjogOC41LFxyXG4gICAgICAgIFwidG90YWxMb3NzMTMwMG5tXCI6IDQuNSxcclxuICAgICAgICBcInRvdGFsTG9zczEzMTBubVwiOiAzLjUsXHJcbiAgICAgICAgXCJ0b3RhbExvc3MxNTUwbm1cIjogMy41LFxyXG4gICAgICAgIFwibG9zc1BlckttODUwbm1cIjogbnVsbCxcclxuICAgICAgICBcImxvc3NQZXJLbTEzMDBubVwiOiBudWxsLFxyXG4gICAgICAgIFwibG9zc1BlckttMTMxMG5tXCI6IG51bGwsXHJcbiAgICAgICAgXCJsb3NzUGVyS20xNTUwbm1cIjogbnVsbCxcclxuICAgICAgICBcIm1heFNNTGVuZ3RoXCI6IDIwMDAsXHJcbiAgICAgICAgXCJtYXhNTUxlbmd0aFwiOiAyMDAwXHJcbiAgICB9LFxyXG4gICAgXCJJU08vSUVDIDE0NzYzLTM6MjAyNCAoRHJhZnQpXCI6IHtcclxuICAgICAgICBcImFkYXB0ZXJMb3NzXCI6IDAuNzUsXHJcbiAgICAgICAgXCJmaXJzdExhc3RBZGFwdGVyTG9zc1wiOiAwLjUsXHJcbiAgICAgICAgXCJzcGxpY2VMb3NzXCI6IDAuMyxcclxuICAgICAgICBcInRvdGFsTG9zczg1MG5tXCI6IG51bGwsXHJcbiAgICAgICAgXCJ0b3RhbExvc3MxMzAwbm1cIjogbnVsbCxcclxuICAgICAgICBcInRvdGFsTG9zczEzMTBubVwiOiBudWxsLFxyXG4gICAgICAgIFwidG90YWxMb3NzMTU1MG5tXCI6IG51bGwsXHJcbiAgICAgICAgXCJsb3NzUGVyS204NTBubVwiOiAzLjUsXHJcbiAgICAgICAgXCJsb3NzUGVyS20xMzAwbm1cIjogMS41LFxyXG4gICAgICAgIFwibG9zc1BlckttMTMxMG5tXCI6IDAuNCxcclxuICAgICAgICBcImxvc3NQZXJLbTE1NTBubVwiOiAwLjQsXHJcbiAgICAgICAgXCJtYXhTTUxlbmd0aFwiOiAxMDAwMCxcclxuICAgICAgICBcIm1heE1NTGVuZ3RoXCI6IDIwMDBcclxuICAgIH0sXHJcbiAgICBcIklTTy9JRUMgMTQ3NjMtMzoyMDE0XCI6IHtcclxuICAgICAgICBcImFkYXB0ZXJMb3NzXCI6IDAuNzUsXHJcbiAgICAgICAgXCJmaXJzdExhc3RBZGFwdGVyTG9zc1wiOiAwLjUsXHJcbiAgICAgICAgXCJzcGxpY2VMb3NzXCI6IDAuMyxcclxuICAgICAgICBcInRvdGFsTG9zczg1MG5tXCI6IG51bGwsXHJcbiAgICAgICAgXCJ0b3RhbExvc3MxMzAwbm1cIjogbnVsbCxcclxuICAgICAgICBcInRvdGFsTG9zczEzMTBubVwiOiBudWxsLFxyXG4gICAgICAgIFwidG90YWxMb3NzMTU1MG5tXCI6IG51bGwsXHJcbiAgICAgICAgXCJsb3NzUGVyS204NTBubVwiOiAzLjUsXHJcbiAgICAgICAgXCJsb3NzUGVyS20xMzAwbm1cIjogMS41LFxyXG4gICAgICAgIFwibG9zc1BlckttMTMxMG5tXCI6IDAuNCxcclxuICAgICAgICBcImxvc3NQZXJLbTE1NTBubVwiOiAwLjQsXHJcbiAgICAgICAgXCJtYXhTTUxlbmd0aFwiOiA1MDAwLFxyXG4gICAgICAgIFwibWF4TU1MZW5ndGhcIjogMjAwMFxyXG4gICAgfSxcclxuICAgIFwiSVNPL0lFQyAxNDc2My0zXCI6IHtcclxuICAgICAgICBcImFkYXB0ZXJMb3NzXCI6IDAuNzUsXHJcbiAgICAgICAgXCJmaXJzdExhc3RBZGFwdGVyTG9zc1wiOiAwLjUsXHJcbiAgICAgICAgXCJzcGxpY2VMb3NzXCI6IDAuMyxcclxuICAgICAgICBcInRvdGFsTG9zczg1MG5tXCI6IG51bGwsXHJcbiAgICAgICAgXCJ0b3RhbExvc3MxMzAwbm1cIjogbnVsbCxcclxuICAgICAgICBcInRvdGFsTG9zczEzMTBubVwiOiBudWxsLFxyXG4gICAgICAgIFwidG90YWxMb3NzMTU1MG5tXCI6IG51bGwsXHJcbiAgICAgICAgXCJsb3NzUGVyS204NTBubVwiOiAzLjUsXHJcbiAgICAgICAgXCJsb3NzUGVyS20xMzAwbm1cIjogMS41LFxyXG4gICAgICAgIFwibG9zc1BlckttMTMxMG5tXCI6IDAuNCxcclxuICAgICAgICBcImxvc3NQZXJLbTE1NTBubVwiOiAwLjQsXHJcbiAgICAgICAgXCJtYXhTTUxlbmd0aFwiOiA1MDAwLFxyXG4gICAgICAgIFwibWF4TU1MZW5ndGhcIjogMjAwMFxyXG4gICAgfVxyXG59O1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgQ0ZQX0xJTUlUOyJdLCJuYW1lcyI6WyJDRlBfTElNSVQiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(pages-dir-node)/./src/store/FIBER/CFP_LIMIT.js\n"); /***/ }), /***/ "(pages-dir-node)/./src/store/deviceStore.js": /*!**********************************!*\ !*** ./src/store/deviceStore.js ***! \**********************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; eval("__webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {\n__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 zustand__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! zustand */ \"zustand\");\n/* harmony import */ var zustand_middleware__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! zustand/middleware */ \"zustand/middleware\");\nvar __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([zustand__WEBPACK_IMPORTED_MODULE_0__, zustand_middleware__WEBPACK_IMPORTED_MODULE_1__]);\n([zustand__WEBPACK_IMPORTED_MODULE_0__, zustand_middleware__WEBPACK_IMPORTED_MODULE_1__] = __webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__);\n\n\nconst useDeviceStore = (0,zustand__WEBPACK_IMPORTED_MODULE_0__.create)(// devtools(\n(set, get)=>({\n // 版本控制\n estmodel: 'general',\n // estmodel: 'fluke',\n updateEstmodel: (model)=>set({\n estmodel: model\n }),\n // 各个类别的设备\n devices: {\n '模块': [\n {\n id: '8000',\n name: '铜缆分析模块',\n type: 'module',\n portType: 'copper',\n image: '/dsx.png',\n description: '铜缆认证分析仪模块'\n },\n {\n id: 'cfp',\n name: '光纤损耗模块',\n type: 'module',\n portType: 'fiber',\n image: '/cfp.png',\n description: '光纤损耗测试模块'\n },\n {\n id: 'ofp',\n name: '光时域反射模块',\n type: 'module',\n portType: 'fiber',\n image: '/ofp.png',\n description: 'OTDR光时域反射测试模块'\n }\n ],\n '适配器': [\n {\n id: 'channel',\n name: '通道适配器',\n type: 'adapter',\n portType: 'copper',\n jstype: 'modelport-copper',\n image: '/CHA804.png',\n description: 'Cat 8/Class I 通道测试适配器'\n },\n {\n id: 'permanent',\n name: '永久链路适配器',\n type: 'adapter',\n portType: 'copper',\n jstype: 'modelport-copper',\n image: '/PLA804.png',\n description: 'Cat 8/Class I 永久链路测试适配器'\n },\n {\n id: 'patchcode-Cat6',\n name: '跳线适配器',\n type: 'adapter',\n portType: 'copper',\n jstype: 'modelport-copper',\n image: '/DSX-PC6S.png',\n description: 'Cat 6 跳线适配器'\n },\n {\n id: 'channel-m12-d',\n name: 'M12 D-Code适配器',\n type: 'adapter',\n portType: 'copper',\n jstype: 'modelport-m12-d',\n image: '/DSX-CHA021S.png',\n description: ' M12-D 4位适配器'\n },\n {\n id: 'channel-m12-x',\n name: 'M12 X-Code适配器',\n type: 'adapter',\n portType: 'copper',\n jstype: 'modelport-m12-x',\n image: '/DSX-CHA-M12-X-S.png',\n description: 'M12-X 8 位适配器'\n }\n ],\n '跳线': [\n // 铜缆跳线\n {\n id: 'pachcode-copper',\n name: 'RJ45跳线',\n type: 'cable',\n portType: 'copper',\n image: '/Cable.png',\n description: 'Cat 6测试跳线'\n },\n {\n id: 'pachcode-m12-x',\n name: 'M12-X-Code跳线',\n type: 'cable',\n portType: 'copper-m12-x',\n image: '/M12.png',\n description: 'M12-X-Code跳线'\n },\n {\n id: 'pachcode-m12-d',\n name: 'M12-D-Code跳线',\n type: 'cable',\n portType: 'copper-m12-d',\n image: '/M12.png',\n description: 'M12-D-Code跳线'\n },\n // 光纤跳线\n {\n id: 'sm-lc-lc',\n name: '单模跳纤',\n type: 'cable',\n portType: 'fiber',\n image: '/SM-LC-LC.png',\n description: '单模 LC-LC 双工测试跳线'\n },\n {\n id: 'mm-lc-lc',\n name: '多模跳纤',\n type: 'cable',\n portType: 'fiber',\n image: '/MM-LC-LC.png',\n description: '多模 LC-LC 双工测试跳线'\n },\n // 补偿光纤\n {\n id: 'smc-lc-lc',\n name: '单模补偿光纤',\n type: 'cable',\n portType: 'fiber',\n image: '/SMC-LC-LC.png',\n description: '单模 LC-LC 双工补偿光纤'\n },\n {\n id: 'mmc-lc-lc',\n name: '多模补偿光纤',\n type: 'cable',\n portType: 'fiber',\n image: '/MMC-LC-LC.png',\n description: '多模 LC-LC 双工补偿光纤'\n },\n // MPO跳线\n {\n id: 'sm-mpo-mpo',\n name: '单模MPO跳线',\n type: 'cable-mpo',\n portType: 'fiber-mpo',\n image: '/SM-MPO-MPO.png',\n description: '单模 MPO-MPO 跳线'\n },\n {\n id: 'mm-mpo-mpo',\n name: '多模MPO跳线',\n type: 'cable-mpo',\n portType: 'fiber-mpo',\n image: '/MM-MPO-MPO.png',\n description: '多模 MPO-MPO 跳线'\n },\n {\n id: 'mm-mpo-lc-box',\n name: '多模mpo-lc转接盒',\n type: 'mpo',\n portType: 'fiberbox',\n image: '/MM-MPO-LC-BOX.png',\n description: '多模 MPO-LC 转接盒'\n }\n ],\n '连接器': [\n {\n id: 'lc-connector',\n name: 'LC法兰',\n type: 'connector',\n portType: 'fiber',\n image: '/LC-connector.png',\n description: '光纤连接器'\n }\n ],\n '工具': [\n {\n id: 'lc-clean',\n name: '1.25mm清洁笔',\n image: '/LC-clean.png',\n description: '光纤清洁笔'\n },\n {\n id: 'mpo-clean',\n name: 'mpo清洁笔',\n image: '/MPO-clean.png',\n description: '光纤清洁笔'\n },\n {\n id: 'ILT200',\n name: '音频探棒',\n image: '/ILT200.png',\n description: '音频探棒'\n }\n ]\n },\n // 故障场景\n faultScenarios: \"Office\",\n // faultScenarios: \"WorldSkill\",\n // faultScenarios: \"Industry\",\n // faultScenarios: \"DataCenter\",\n WorldSkillScenarios: \"OFFICE\",\n // 赛位号\n seatNumber: \"\",\n // 比赛ID\n seatUUID: null,\n // 比赛开始时间\n seatStartTime: null,\n // 表单记录\n reports: [],\n // 主机已安装模块\n mainUnitModules: [],\n // 远端已安装模块\n remoteUnitModules: [],\n // 主机适配器\n mainUnitAdapter: null,\n // 远端适配器\n remoteUnitAdapter: null,\n // 主机接口\n mainUnitPorts: [],\n // 远端接口\n remoteUnitPorts: [],\n // 当前选中的工具\n selectedTool: null,\n // 连接区物品列表\n connectionItems: [],\n // 连接路径列表\n connectionPaths: [],\n // 连接状态分析结果\n connectionStatus: [],\n // 选择工具\n selectTool: (tool)=>{\n set({\n selectedTool: tool\n });\n },\n // 取消选择工具\n clearSelectedTool: ()=>{\n set({\n selectedTool: null\n });\n },\n // 安装模块\n installModule: (module, target)=>{\n set((state)=>{\n if (target === 'main') {\n let ports = [];\n if (module.id === 'cfp') {\n ports = [\n {\n id: 'cfp-sm-out',\n type: 'modelport',\n module: 'cfp'\n },\n {\n id: 'cfp-in',\n type: 'modelport',\n module: 'cfp'\n },\n {\n id: 'cfp-mm-out',\n type: 'modelport',\n module: 'cfp'\n },\n {\n id: 'vfl',\n type: 'modelport',\n module: 'cfp'\n }\n ];\n } else if (module.id === 'ofp') {\n ports = [\n {\n id: 'ofp-sm-out',\n type: 'modelport',\n module: 'ofp'\n },\n {\n id: 'ofp-mm-out',\n type: 'modelport',\n module: 'ofp'\n },\n {\n id: 'vfl',\n type: 'modelport',\n module: 'ofp'\n }\n ];\n }\n return {\n mainUnitModules: [\n ...state.mainUnitModules,\n module\n ],\n mainUnitPorts: ports\n };\n } else {\n let ports = [];\n if (module.id === 'cfp') {\n ports = [\n {\n id: 'cfp-sm-out',\n type: 'modelport',\n module: 'cfp'\n },\n {\n id: 'cfp-in',\n type: 'modelport',\n module: 'cfp'\n },\n {\n id: 'cfp-mm-out',\n type: 'modelport',\n module: 'cfp'\n },\n {\n id: 'vfl',\n type: 'modelport',\n module: 'cfp'\n }\n ];\n }\n return {\n remoteUnitModules: [\n ...state.remoteUnitModules,\n module\n ],\n remoteUnitPorts: ports\n };\n }\n });\n },\n // 卸载模块\n uninstallModule: (moduleId, target)=>{\n set((state)=>{\n if (target === 'main') {\n return {\n mainUnitModules: state.mainUnitModules.filter((m)=>m.id !== moduleId),\n mainUnitPorts: [],\n mainUnitAdapter: null\n };\n } else {\n return {\n remoteUnitModules: state.remoteUnitModules.filter((m)=>m.id !== moduleId),\n remoteUnitPorts: [],\n remoteUnitAdapter: null\n };\n }\n });\n },\n // 安装适配器\n installAdapter: (adapter, target)=>{\n set((state)=>({\n [target === 'main' ? 'mainUnitAdapter' : 'remoteUnitAdapter']: {\n ...adapter,\n port: {\n id: `${adapter.id}`,\n type: 'modelport',\n module: adapter.id\n }\n }\n }));\n },\n // 卸载适配器\n uninstallAdapter: (target)=>{\n set((state)=>({\n [target === 'main' ? 'mainUnitAdapter' : 'remoteUnitAdapter']: null\n }));\n },\n // 更新故障场景\n updateFaultScenarios: (status)=>{\n set(()=>({\n faultScenarios: status\n }));\n },\n // 更新竞赛故障场景\n updateWorldSkillScenarios: (status)=>{\n set(()=>({\n WorldSkillScenarios: status\n }));\n },\n // 更新赛位号\n updateSeatNumber: (number)=>{\n set(()=>({\n seatNumber: number\n }));\n },\n // 更新比赛ID\n updateSeatUUID: (uuid)=>{\n set(()=>({\n seatUUID: uuid\n }));\n },\n // 更新比赛开始时间\n updateSeatStartTime: (startTime)=>{\n set(()=>({\n seatStartTime: startTime\n }));\n },\n // 更新报告数据\n updateReports: (records)=>{\n set(()=>({\n reports: records\n }));\n },\n // ----***物品区域方法***----\n // 添加物品到连接区\n addConnectionItem: (item)=>set((state)=>({\n connectionItems: [\n ...state.connectionItems,\n item\n ]\n })),\n // 从连接区移除物品\n removeConnectionItem: (index)=>set((state)=>({\n connectionItems: state.connectionItems.filter((_, i)=>i !== index)\n })),\n // ---***连接路径***---\n // 添加连接路径\n addConnectionPath: (path)=>set((state)=>{\n const newPaths = [\n ...state.connectionPaths,\n path\n ];\n return {\n connectionPaths: newPaths\n };\n }),\n // 移除连接路径\n removeConnectionPath: (sourceId, targetId)=>set((state)=>{\n const newPaths = state.connectionPaths.filter((path)=>!(path.source === sourceId && path.target === targetId));\n return {\n connectionPaths: newPaths\n };\n }),\n // 清空连接路径\n clearConnectionPaths: ()=>set(()=>{\n return {\n connectionPaths: []\n };\n }),\n // 获取当前连接路径\n getConnectionPaths: ()=>get().connectionPaths,\n // ---***连接状态分析结果***---\n // 更新连接状态\n updateConnectionStatus: (status)=>set(()=>({\n connectionStatus: status\n })),\n // 提示框方法\n setShowTotalToast: (show)=>set({\n showTotalToast: show\n }),\n setTotalToastMessage: (message)=>set({\n totalToastMessage: message\n }),\n // 初始化数据\n // 重置到默认状态\n resetdeviceStore: ()=>{\n set(()=>({\n // 主机已安装模块\n mainUnitModules: [],\n // 远端已安装模块\n remoteUnitModules: [],\n // 主机适配器\n mainUnitAdapter: null,\n // 远端适配器\n remoteUnitAdapter: null,\n // 主机接口\n mainUnitPorts: [],\n // 远端接口\n remoteUnitPorts: [],\n // 当前选中的工具\n selectedTool: null,\n // 连接区物品列表\n connectionItems: [],\n // 连接路径列表\n connectionPaths: [],\n // 连接状态分析结果\n connectionStatus: [],\n // 报告数据\n reports: []\n }));\n }\n }));\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (useDeviceStore);\n\n__webpack_async_result__();\n} catch(e) { __webpack_async_result__(e); } });//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHBhZ2VzLWRpci1ub2RlKS8uL3NyYy9zdG9yZS9kZXZpY2VTdG9yZS5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBaUM7QUFDYTtBQUc5QyxNQUFNRSxpQkFBaUJGLCtDQUFNQSxDQUMzQixZQUFZO0FBQ1YsQ0FBQ0csS0FBS0MsTUFBUztRQUNqQixPQUFPO1FBQ1BDLFVBQVU7UUFDVixxQkFBcUI7UUFDcEJDLGdCQUFnQixDQUFDQyxRQUFVSixJQUFJO2dCQUFFRSxVQUFVRTtZQUFNO1FBRWxELFVBQVU7UUFDVkMsU0FBUztZQUNQLE1BQU07Z0JBQ0o7b0JBQ0VDLElBQUk7b0JBQ0pDLE1BQU07b0JBQ05DLE1BQU07b0JBQ05DLFVBQVU7b0JBQ1ZDLE9BQU87b0JBQ1BDLGFBQWE7Z0JBQ2Y7Z0JBQ0E7b0JBQ0VMLElBQUk7b0JBQ0pDLE1BQU07b0JBQ05DLE1BQU07b0JBQ05DLFVBQVU7b0JBQ1ZDLE9BQU87b0JBQ1BDLGFBQWE7Z0JBQ2Y7Z0JBQ0E7b0JBQ0VMLElBQUk7b0JBQ0pDLE1BQU07b0JBQ05DLE1BQU07b0JBQ05DLFVBQVU7b0JBQ1ZDLE9BQU87b0JBQ1BDLGFBQWE7Z0JBQ2Y7YUFDRDtZQUNELE9BQU87Z0JBQ0w7b0JBQ0VMLElBQUk7b0JBQ0pDLE1BQU07b0JBQ05DLE1BQU07b0JBQ05DLFVBQVU7b0JBQ1ZHLFFBQVE7b0JBQ1JGLE9BQU87b0JBQ1BDLGFBQWE7Z0JBQ2Y7Z0JBQ0E7b0JBQ0VMLElBQUk7b0JBQ0pDLE1BQU07b0JBQ05DLE1BQU07b0JBQ05DLFVBQVU7b0JBQ1ZHLFFBQVE7b0JBQ1JGLE9BQU87b0JBQ1BDLGFBQWE7Z0JBQ2Y7Z0JBQ0E7b0JBQ0VMLElBQUk7b0JBQ0pDLE1BQU07b0JBQ05DLE1BQU07b0JBQ05DLFVBQVU7b0JBQ1ZHLFFBQVE7b0JBQ1JGLE9BQU87b0JBQ1BDLGFBQWE7Z0JBQ2Y7Z0JBQ0E7b0JBQ0VMLElBQUk7b0JBQ0pDLE1BQU07b0JBQ05DLE1BQU07b0JBQ05DLFVBQVU7b0JBQ1ZHLFFBQVE7b0JBQ1JG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O0FBVUEsaUVBQWVuQixjQUFjQSxFQUFDIiwic291cmNlcyI6WyIvb3B0L2Rldi9lc3QtZHN4L3NyYy9zdG9yZS9kZXZpY2VTdG9yZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGUgfSBmcm9tICd6dXN0YW5kJztcbmltcG9ydCB7IGRldnRvb2xzIH0gZnJvbSAnenVzdGFuZC9taWRkbGV3YXJlJztcblxuXG5jb25zdCB1c2VEZXZpY2VTdG9yZSA9IGNyZWF0ZShcbiAgLy8gZGV2dG9vbHMoXG4gICAgKHNldCwgZ2V0KSA9PiAoe1xuICAvLyDniYjmnKzmjqfliLZcbiAgZXN0bW9kZWw6ICdnZW5lcmFsJyxcbiAgLy8gZXN0bW9kZWw6ICdmbHVrZScsXG4gICB1cGRhdGVFc3Rtb2RlbDogKG1vZGVsKSA9PiBzZXQoeyBlc3Rtb2RlbDogbW9kZWwgfSksXG4gICBcbiAgLy8g5ZCE5Liq57G75Yir55qE6K6+5aSHXG4gIGRldmljZXM6IHtcbiAgICAn5qih5Z2XJzogW1xuICAgICAge1xuICAgICAgICBpZDogJzgwMDAnLCBcbiAgICAgICAgbmFtZTogJ+mTnOe8huWIhuaekOaooeWdlycsXG4gICAgICAgIHR5cGU6ICdtb2R1bGUnLFxuICAgICAgICBwb3J0VHlwZTogJ2NvcHBlcicsXG4gICAgICAgIGltYWdlOiAnL2RzeC5wbmcnLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ+mTnOe8huiupOivgeWIhuaekOS7quaooeWdlydcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGlkOiAnY2ZwJywgXG4gICAgICAgIG5hbWU6ICflhYnnuqTmjZ/ogJfmqKHlnZcnLFxuICAgICAgICB0eXBlOiAnbW9kdWxlJyxcbiAgICAgICAgcG9ydFR5cGU6ICdmaWJlcicsXG4gICAgICAgIGltYWdlOiAnL2NmcC5wbmcnLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ+WFiee6pOaNn+iAl+a1i+ivleaooeWdlydcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGlkOiAnb2ZwJywgXG4gICAgICAgIG5hbWU6ICflhYnml7bln5/lj43lsITmqKHlnZcnLFxuICAgICAgICB0eXBlOiAnbW9kdWxlJyxcbiAgICAgICAgcG9ydFR5cGU6ICdmaWJlcicsXG4gICAgICAgIGltYWdlOiAnL29mcC5wbmcnLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ09URFLlhYnml7bln5/lj43lsITmtYvor5XmqKHlnZcnXG4gICAgICB9XG4gICAgXSxcbiAgICAn6YCC6YWN5ZmoJzogW1xuICAgICAge1xuICAgICAgICBpZDogJ2NoYW5uZWwnLCBcbiAgICAgICAgbmFtZTogJ+mAmumBk+mAgumFjeWZqCcsIFxuICAgICAgICB0eXBlOiAnYWRhcHRlcicsXG4gICAgICAgIHBvcnRUeXBlOiAnY29wcGVyJyxcbiAgICAgICAganN0eXBlOiAnbW9kZWxwb3J0LWNvcHBlcicsXG4gICAgICAgIGltYWdlOiAnL0NIQTgwNC5wbmcnLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ0NhdCA4L0NsYXNzIEkg6YCa6YGT5rWL6K+V6YCC6YWN5ZmoJ1xuICAgICAgfSxcbiAgICAgIHsgXG4gICAgICAgIGlkOiAncGVybWFuZW50JywgXG4gICAgICAgIG5hbWU6ICfmsLjkuYXpk77ot6/pgILphY3lmagnLCBcbiAgICAgICAgdHlwZTogJ2FkYXB0ZXInLFxuICAgICAgICBwb3J0VHlwZTogJ2NvcHBlcicsXG4gICAgICAgIGpzdHlwZTogJ21vZGVscG9ydC1jb3BwZXInLFxuICAgICAgICBpbWFnZTogJy9QTEE4MDQucG5nJyxcbiAgICAgICAgZGVzY3JpcHRpb246ICdDYXQgOC9DbGFzcyBJIOawuOS5hemTvui3r+a1i+ivlemAgumFjeWZqCdcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGlkOiAncGF0Y2hjb2RlLUNhdDYnLCBcbiAgICAgICAgbmFtZTogJ+i3s+e6v+mAgumFjeWZqCcsIFxuICAgICAgICB0eXBlOiAnYWRhcHRlcicsXG4gICAgICAgIHBvcnRUeXBlOiAnY29wcGVyJyxcbiAgICAgICAganN0eXBlOiAnbW9kZWxwb3J0LWNvcHBlcicsXG4gICAgICAgIGltYWdlOiAnL0RTWC1QQzZTLnBuZycsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnQ2F0IDYg6Lez57q/6YCC6YWN5ZmoJ1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaWQ6ICdjaGFubmVsLW0xMi1kJywgXG4gICAgICAgIG5hbWU6ICdNMTIgRC1Db2Rl6YCC6YWN5ZmoJywgXG4gICAgICAgIHR5cGU6ICdhZGFwdGVyJyxcbiAgICAgICAgcG9ydFR5cGU6ICdjb3BwZXInLFxuICAgICAgICBqc3R5cGU6ICdtb2RlbHBvcnQtbTEyLWQnLFxuICAgICAgICBpbWFnZTogJy9EU1gtQ0hBMDIxUy5wbmcnLFxuICAgICAgICBkZXNjcmlwdGlvbjogJyBNMTItRCA05L2N6YCC6YWN5ZmoJ1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaWQ6ICdjaGFubmVsLW0xMi14JywgXG4gICAgICAgIG5hbWU6ICdNMTIgWC1Db2Rl6YCC6YWN5ZmoJywgXG4gICAgICAgIHR5cGU6ICdhZGFwdGVyJyxcbiAgICAgICAgcG9ydFR5cGU6ICdjb3BwZXInLFxuICAgICAgICBqc3R5cGU6ICdtb2RlbHBvcnQtbTEyLXgnLFxuICAgICAgICBpbWFnZTogJy9EU1gtQ0hBLU0xMi1YLVMucG5nJyxcbiAgICAgICAgZGVzY3JpcHRpb246ICdNMTItWCA4IOS9jemAgumFjeWZqCdcbiAgICAgIH1cbiAgICBdLFxuICAgICfot7Pnur8nOiBbXG4gICAgICAvLyDpk5znvIbot7Pnur9cbiAgICAgIHsgXG4gICAgICAgIGlkOiAncGFjaGNvZGUtY29wcGVyJywgXG4gICAgICAgIG5hbWU6ICdSSjQ16Lez57q/JywgXG4gICAgICAgIHR5cGU6ICdjYWJsZScsXG4gICAgICAgIHBvcnRUeXBlOiAnY29wcGVyJyxcbiAgICAgICAgaW1hZ2U6ICcvQ2FibGUucG5nJyxcbiAgICAgICAgZGVzY3JpcHRpb246ICdDYXQgNua1i+ivlei3s+e6vydcbiAgICAgIH0sXG4gICAgICB7IFxuICAgICAgICBpZDogJ3BhY2hjb2RlLW0xMi14JywgXG4gICAgICAgIG5hbWU6ICdNMTItWC1Db2Rl6Lez57q/JywgXG4gICAgICAgIHR5cGU6ICdjYWJsZScsXG4gICAgICAgIHBvcnRUeXBlOiAnY29wcGVyLW0xMi14JyxcbiAgICAgICAgaW1hZ2U6ICcvTTEyLnBuZycsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnTTEyLVgtQ29kZei3s+e6vydcbiAgICAgIH0sXG4gICAgICB7IFxuICAgICAgICBpZDogJ3BhY2hjb2RlLW0xMi1kJywgXG4gICAgICAgIG5hbWU6ICdNMTItRC1Db2Rl6Lez57q/JywgXG4gICAgICAgIHR5cGU6ICdjYWJsZScsXG4gICAgICAgIHBvcnRUeXBlOiAnY29wcGVyLW0xMi1kJyxcbiAgICAgICAgaW1hZ2U6ICcvTTEyLnBuZycsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnTTEyLUQtQ29kZei3s+e6vydcbiAgICAgIH0sXG4gICAgICAvLyDlhYnnuqTot7Pnur9cbiAgICAgIHsgXG4gICAgICAgIGlkOiAnc20tbGMtbGMnLCBcbiAgICAgICAgbmFtZTogJ+WNleaooei3s+e6pCcsIFxuICAgICAgICB0eXBlOiAnY2FibGUnLFxuICAgICAgICBwb3J0VHlwZTogJ2ZpYmVyJyxcbiAgICAgICAgaW1hZ2U6ICcvU00tTEMtTEMucG5nJyxcbiAgICAgICAgZGVzY3JpcHRpb246ICfljZXmqKEgTEMtTEMg5Y+M5bel5rWL6K+V6Lez57q/J1xuICAgICAgfSxcbiAgICAgIHsgXG4gICAgICAgIGlkOiAnbW0tbGMtbGMnLCBcbiAgICAgICAgbmFtZTogJ+Wkmuaooei3s+e6pCcsIFxuICAgICAgICB0eXBlOiAnY2FibGUnLFxuICAgICAgICBwb3J0VHlwZTogJ2ZpYmVyJyxcbiAgICAgICAgaW1hZ2U6ICcvTU0tTEMtTEMucG5nJyxcbiAgICAgICAgZGVzY3JpcHRpb246ICflpJrmqKEgTEMtTEMg5Y+M5bel5rWL6K+V6Lez57q/J1xuICAgICAgfSxcbiAgICAgIC8vIOihpeWBv+WFiee6pFxuICAgICAgeyBcbiAgICAgICAgaWQ6ICdzbWMtbGMtbGMnLCBcbiAgICAgICAgbmFtZTogJ+WNleaooeihpeWBv+WFiee6pCcsIFxuICAgICAgICB0eXBlOiAnY2FibGUnLFxuICAgICAgICBwb3J0VHlwZTogJ2ZpYmVyJyxcbiAgICAgICAgaW1hZ2U6ICcvU01DLUxDLUxDLnBuZycsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAn5Y2V5qihIExDLUxDIOWPjOW3peihpeWBv+WFiee6pCdcbiAgICAgIH0sXG4gICAgICB7IFxuICAgICAgICBpZDogJ21tYy1sYy1sYycsIFxuICAgICAgICBuYW1lOiAn5aSa5qih6KGl5YG/5YWJ57qkJywgXG4gICAgICAgIHR5cGU6ICdjYWJsZScsXG4gICAgICAgIHBvcnRUeXBlOiAnZmliZXInLFxuICAgICAgICBpbWFnZTogJy9NTUMtTEMtTEMucG5nJyxcbiAgICAgICAgZGVzY3JpcHRpb246ICflpJrmqKEgTEMtTEMg5Y+M5bel6KGl5YG/5YWJ57qkJ1xuICAgICAgfSxcbiAgICAgIC8vIE1QT+i3s+e6v1xuICAgICAgeyBcbiAgICAgICAgaWQ6ICdzbS1tcG8tbXBvJywgXG4gICAgICAgIG5hbWU6ICfljZXmqKFNUE/ot7Pnur8nLCBcbiAgICAgICAgdHlwZTogJ2NhYmxlLW1wbycsXG4gICAgICAgIHBvcnRUeXBlOiAnZmliZXItbXBvJyxcbiAgICAgICAgaW1hZ2U6ICcvU00tTVBPLU1QTy5wbmcnLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ+WNleaooSBNUE8tTVBPIOi3s+e6vydcbiAgICAgIH0sXG4gICAgICB7IFxuICAgICAgICBpZDogJ21tLW1wby1tcG8nLCBcbiAgICAgICAgbmFtZTogJ+WkmuaooU1QT+i3s+e6vycsIFxuICAgICAgICB0eXBlOiAnY2FibGUtbXBvJyxcbiAgICAgICAgcG9ydFR5cGU6ICdmaWJlci1tcG8nLFxuICAgICAgICBpbWFnZTogJy9NTS1NUE8tTVBPLnBuZycsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAn5aSa5qihIE1QTy1NUE8g6Lez57q/J1xuICAgICAgfSxcbiAgICAgIHsgXG4gICAgICAgIGlkOiAnbW0tbXBvLWxjLWJveCcsIFxuICAgICAgICBuYW1lOiAn5aSa5qihbXBvLWxj6L2s5o6l55uSJywgXG4gICAgICAgIHR5cGU6ICdtcG8nLFxuICAgICAgICBwb3J0VHlwZTogJ2ZpYmVyYm94JyxcbiAgICAgICAgaW1hZ2U6ICcvTU0tTVBPLUxDLUJPWC5wbmcnLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ+WkmuaooSBNUE8tTEMg6L2s5o6l55uSJ1xuICAgICAgfVxuICAgIF0sXG4gICAgJ+i/nuaOpeWZqCc6IFtcbiAgICAgIHtcbiAgICAgICAgaWQ6ICdsYy1jb25uZWN0b3InLFxuICAgICAgICBuYW1lOiAnTEPms5XlhbAnLFxuICAgICAgICB0eXBlOiAnY29ubmVjdG9yJyxcbiAgICAgICAgcG9ydFR5cGU6ICdmaWJlcicsXG4gICAgICAgIGltYWdlOiAnL0xDLWNvbm5lY3Rvci5wbmcnLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ+WFiee6pOi/nuaOpeWZqCdcbiAgICAgIH1cbiAgICBdLFxuICAgICflt6XlhbcnOiBbXG4gICAgICB7XG4gICAgICAgIGlkOiAnbGMtY2xlYW4nLFxuICAgICAgICBuYW1lOiAnMS4yNW1t5riF5rSB56yUJyxcbiAgICAgICAgaW1hZ2U6ICcvTEMtY2xlYW4ucG5nJyxcbiAgICAgICAgZGVzY3JpcHRpb246ICflhYnnuqTmuIXmtIHnrJQnXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBpZDogJ21wby1jbGVhbicsXG4gICAgICAgIG5hbWU6ICdtcG/muIXmtIHnrJQnLFxuICAgICAgICBpbWFnZTogJy9NUE8tY2xlYW4ucG5nJyxcbiAgICAgICAgZGVzY3JpcHRpb246ICflhYnnuqTmuIXmtIHnrJQnXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBpZDogJ0lMVDIwMCcsXG4gICAgICAgIG5hbWU6ICfpn7PpopHmjqLmo5InLFxuICAgICAgICBpbWFnZTogJy9JTFQyMDAucG5nJyxcbiAgICAgICAgZGVzY3JpcHRpb246ICfpn7PpopHmjqLmo5InXG4gICAgICB9XG4gICAgXSxcbiAgfSxcblxuXG4gIFxuICAvLyDmlYXpmpzlnLrmma9cbiAgZmF1bHRTY2VuYXJpb3M6IFwiT2ZmaWNlXCIsXG4gIC8vIGZhdWx0U2NlbmFyaW9zOiBcIldvcmxkU2tpbGxcIixcbiAgLy8gZmF1bHRTY2VuYXJpb3M6IFwiSW5kdXN0cnlcIixcbiAgLy8gZmF1bHRTY2VuYXJpb3M6IFwiRGF0YUNlbnRlclwiLFxuICBXb3JsZFNraWxsU2NlbmFyaW9zOiBcIk9GRklDRVwiLFxuICAvLyDotZvkvY3lj7dcbiAgc2VhdE51bWJlcjogXCJcIixcbiAgLy8g5q+U6LWbSURcbiAgc2VhdFVVSUQ6IG51bGwsXG4gIC8vIOavlOi1m+W8gOWni+aXtumXtFxuICBzZWF0U3RhcnRUaW1lOm51bGwsXG4gIC8vIOihqOWNleiusOW9lVxuICByZXBvcnRzOltdLFxuICAvLyDkuLvmnLrlt7Llronoo4XmqKHlnZdcbiAgbWFpblVuaXRNb2R1bGVzOiBbXSxcbiAgLy8g6L+c56uv5bey5a6J6KOF5qih5Z2XXG4gIHJlbW90ZVVuaXRNb2R1bGVzOiBbXSxcbiAgLy8g5Li75py66YCC6YWN5ZmoXG4gIG1haW5Vbml0QWRhcHRlcjogbnVsbCxcbiAgLy8g6L+c56uv6YCC6YWN5ZmoXG4gIHJlbW90ZVVuaXRBZGFwdGVyOiBudWxsLFxuICAvLyDkuLvmnLrmjqXlj6NcbiAgbWFpblVuaXRQb3J0czogW10sXG4gIC8vIOi/nOerr+aOpeWPo1xuICByZW1vdGVVbml0UG9ydHM6IFtdLFxuICAvLyDlvZPliY3pgInkuK3nmoTlt6XlhbdcbiAgc2VsZWN0ZWRUb29sOiBudWxsLFxuICAvLyDov57mjqXljLrnianlk4HliJfooahcbiAgY29ubmVjdGlvbkl0ZW1zOiBbXSxcbiAgLy8g6L+e5o6l6Lev5b6E5YiX6KGoXG4gIGNvbm5lY3Rpb25QYXRoczogW10sXG4gIC8vIOi/nuaOpeeKtuaAgeWIhuaekOe7k+aenFxuICBjb25uZWN0aW9uU3RhdHVzOiBbXSxcblxuICAvLyDpgInmi6nlt6XlhbdcbiAgc2VsZWN0VG9vbDogKHRvb2wpID0+IHtcbiAgICBzZXQoeyBzZWxlY3RlZFRvb2w6IHRvb2wgfSk7XG4gIH0sXG4gIC8vIOWPlua2iOmAieaLqeW3peWFt1xuICBjbGVhclNlbGVjdGVkVG9vbDogKCkgPT4ge1xuICAgIHNldCh7IHNlbGVjdGVkVG9vbDogbnVsbCB9KTtcbiAgfSxcbiAgXG4gIC8vIOWuieijheaooeWdl1xuICBpbnN0YWxsTW9kdWxlOiAobW9kdWxlLCB0YXJnZXQpID0+IHtcbiAgICBzZXQoKHN0YXRlKSA9PiB7XG4gICAgICBpZiAodGFyZ2V0ID09PSAnbWFpbicpIHtcbiAgICAgICAgbGV0IHBvcnRzID0gW107XG4gICAgICAgIGlmIChtb2R1bGUuaWQgPT09ICdjZnAnKSB7XG4gICAgICAgICAgcG9ydHMgPSBbXG4gICAgICAgICAgICB7IGlkOiAnY2ZwLXNtLW91dCcsIHR5cGU6ICdtb2RlbHBvcnQnLCBtb2R1bGU6ICdjZnAnIH0sXG4gICAgICAgICAgICB7IGlkOiAnY2ZwLWluJywgdHlwZTogJ21vZGVscG9ydCcsIG1vZHVsZTogJ2NmcCcgfSxcbiAgICAgICAgICAgIHsgaWQ6ICdjZnAtbW0tb3V0JywgdHlwZTogJ21vZGVscG9ydCcsIG1vZHVsZTogJ2NmcCcgfSxcbiAgICAgICAgICAgIHsgaWQ6ICd2ZmwnLCB0eXBlOiAnbW9kZWxwb3J0JywgbW9kdWxlOiAnY2ZwJyB9XG4gICAgICAgICAgXTtcbiAgICAgICAgfSBlbHNlIGlmIChtb2R1bGUuaWQgPT09ICdvZnAnKSB7XG4gICAgICAgICAgcG9ydHMgPSBbXG4gICAgICAgICAgICB7IGlkOiAnb2ZwLXNtLW91dCcsIHR5cGU6ICdtb2RlbHBvcnQnLCBtb2R1bGU6ICdvZnAnIH0sXG4gICAgICAgICAgICB7IGlkOiAnb2ZwLW1tLW91dCcsIHR5cGU6ICdtb2RlbHBvcnQnLCBtb2R1bGU6ICdvZnAnIH0sXG4gICAgICAgICAgICB7IGlkOiAndmZsJywgdHlwZTogJ21vZGVscG9ydCcsIG1vZHVsZTogJ29mcCcgfVxuICAgICAgICAgIF07XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgbWFpblVuaXRNb2R1bGVzOiBbLi4uc3RhdGUubWFpblVuaXRNb2R1bGVzLCBtb2R1bGVdLFxuICAgICAgICAgIG1haW5Vbml0UG9ydHM6IHBvcnRzXG4gICAgICAgIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsZXQgcG9ydHMgPSBbXTtcbiAgICAgICAgaWYgKG1vZHVsZS5pZCA9PT0gJ2NmcCcpIHtcbiAgICAgICAgICBwb3J0cyA9IFtcbiAgICAgICAgICAgIHsgaWQ6ICdjZnAtc20tb3V0JywgdHlwZTogJ21vZGVscG9ydCcsIG1vZHVsZTogJ2NmcCcgfSxcbiAgICAgICAgICAgIHsgaWQ6ICdjZnAtaW4nLCB0eXBlOiAnbW9kZWxwb3J0JywgbW9kdWxlOiAnY2ZwJyB9LFxuICAgICAgICAgICAgeyBpZDogJ2NmcC1tbS1vdXQnLCB0eXBlOiAnbW9kZWxwb3J0JywgbW9kdWxlOiAnY2ZwJyB9LFxuICAgICAgICAgICAgeyBpZDogJ3ZmbCcsIHR5cGU6ICdtb2RlbHBvcnQnLCBtb2R1bGU6ICdjZnAnIH1cbiAgICAgICAgICBdO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHJlbW90ZVVuaXRNb2R1bGVzOiBbLi4uc3RhdGUucmVtb3RlVW5pdE1vZHVsZXMsIG1vZHVsZV0sXG4gICAgICAgICAgcmVtb3RlVW5pdFBvcnRzOiBwb3J0c1xuICAgICAgICB9O1xuICAgICAgfVxuICAgIH0pO1xuICB9LFxuICBcbiAgLy8g5Y246L295qih5Z2XXG4gIHVuaW5zdGFsbE1vZHVsZTogKG1vZHVsZUlkLCB0YXJnZXQpID0+IHtcbiAgICBzZXQoKHN0YXRlKSA9PiB7XG4gICAgICBpZiAodGFyZ2V0ID09PSAnbWFpbicpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBtYWluVW5pdE1vZHVsZXM6IHN0YXRlLm1haW5Vbml0TW9kdWxlcy5maWx0ZXIobSA9PiBtLmlkICE9PSBtb2R1bGVJZCksXG4gICAgICAgICAgbWFpblVuaXRQb3J0czogW10sXG4gICAgICAgICAgbWFpblVuaXRBZGFwdGVyOiBudWxsXG4gICAgICAgIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHJlbW90ZVVuaXRNb2R1bGVzOiBzdGF0ZS5yZW1vdGVVbml0TW9kdWxlcy5maWx0ZXIobSA9PiBtLmlkICE9PSBtb2R1bGVJZCksXG4gICAgICAgICAgcmVtb3RlVW5pdFBvcnRzOiBbXSxcbiAgICAgICAgICByZW1vdGVVbml0QWRhcHRlcjogbnVsbFxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH0pO1xuICB9LFxuICBcbiAgLy8g5a6J6KOF6YCC6YWN5ZmoXG4gIGluc3RhbGxBZGFwdGVyOiAoYWRhcHRlciwgdGFyZ2V0KSA9PiB7XG4gICAgc2V0KChzdGF0ZSkgPT4gKHtcbiAgICAgIFt0YXJnZXQgPT09ICdtYWluJyA/ICdtYWluVW5pdEFkYXB0ZXInIDogJ3JlbW90ZVVuaXRBZGFwdGVyJ106IHtcbiAgICAgICAgLi4uYWRhcHRlcixcbiAgICAgICAgcG9ydDoge1xuICAgICAgICAgIGlkOiBgJHthZGFwdGVyLmlkfWAsXG4gICAgICAgICAgdHlwZTogJ21vZGVscG9ydCcsXG4gICAgICAgICAgbW9kdWxlOiBhZGFwdGVyLmlkXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KSk7XG4gIH0sXG4gIFxuICAvLyDljbjovb3pgILphY3lmahcbiAgdW5pbnN0YWxsQWRhcHRlcjogKHRhcmdldCkgPT4ge1xuICAgIHNldCgoc3RhdGUpID0+ICh7XG4gICAgICBbdGFyZ2V0ID09PSAnbWFpbicgPyAnbWFpblVuaXRBZGFwdGVyJyA6ICdyZW1vdGVVbml0QWRhcHRlciddOiBudWxsXG4gICAgfSkpO1xuICB9LFxuICBcbiAgLy8g5pu05paw5pWF6Zqc5Zy65pmvXG4gIHVwZGF0ZUZhdWx0U2NlbmFyaW9zOiAoc3RhdHVzKSA9PiB7XG4gICAgc2V0KCgpID0+ICh7XG4gICAgICBmYXVsdFNjZW5hcmlvczogc3RhdHVzXG4gICAgfSkpO1xuICB9LFxuICAvLyDmm7TmlrDnq57otZvmlYXpmpzlnLrmma9cbiAgdXBkYXRlV29ybGRTa2lsbFNjZW5hcmlvczogKHN0YXR1cykgPT4ge1xuICAgIHNldCgoKSA9PiAoe1xuICAgICAgV29ybGRTa2lsbFNjZW5hcmlvczogc3RhdHVzXG4gICAgfSkpO1xuICB9LFxuICAvLyDmm7TmlrDotZvkvY3lj7dcbiAgdXBkYXRlU2VhdE51bWJlcjogKG51bWJlcikgPT4ge1xuICAgIHNldCgoKSA9PiAoe1xuICAgICAgc2VhdE51bWJlcjogbnVtYmVyXG4gICAgfSkpO1xuICB9LFxuXG4gIC8vIOabtOaWsOavlOi1m0lEXG4gIHVwZGF0ZVNlYXRVVUlEOiAodXVpZCkgPT4ge1xuICAgIHNldCgoKSA9PiAoe1xuICAgICAgc2VhdFVVSUQ6IHV1aWRcbiAgICB9KSk7XG4gIH0sXG5cbiAgLy8g5pu05paw5q+U6LWb5byA5aeL5pe26Ze0XG4gIHVwZGF0ZVNlYXRTdGFydFRpbWU6IChzdGFydFRpbWUpID0+IHtcbiAgICBzZXQoKCkgPT4gKHtcbiAgICAgIHNlYXRTdGFydFRpbWU6IHN0YXJ0VGltZVxuICAgIH0pKTtcbiAgfSxcbiAgLy8g5pu05paw5oql5ZGK5pWw5o2uXG4gIHVwZGF0ZVJlcG9ydHM6IChyZWNvcmRzKSA9PiB7XG4gICAgc2V0KCgpID0+ICh7XG4gICAgICByZXBvcnRzOiByZWNvcmRzXG4gICAgfSkpO1xuICB9LFxuICBcblxuLy8gLS0tLSoqKueJqeWTgeWMuuWfn+aWueazlSoqKi0tLS1cbiAgLy8g5re75Yqg54mp5ZOB5Yiw6L+e5o6l5Yy6XG4gIGFkZENvbm5lY3Rpb25JdGVtOiAoaXRlbSkgPT4gXG4gICAgc2V0KChzdGF0ZSkgPT4gKHtcbiAgICAgIGNvbm5lY3Rpb25JdGVtczogWy4uLnN0YXRlLmNvbm5lY3Rpb25JdGVtcywgaXRlbV1cbiAgICB9KSksXG5cbiAgLy8g5LuO6L+e5o6l5Yy656e76Zmk54mp5ZOBXG4gIHJlbW92ZUNvbm5lY3Rpb25JdGVtOiAoaW5kZXgpID0+XG4gICAgc2V0KChzdGF0ZSkgPT4gKHtcbiAgICAgIGNvbm5lY3Rpb25JdGVtczogc3RhdGUuY29ubmVjdGlvbkl0ZW1zLmZpbHRlcigoXywgaSkgPT4gaSAhPT0gaW5kZXgpXG4gICAgfSkpLFxuXG5cbi8vIC0tLSoqKui/nuaOpei3r+W+hCoqKi0tLVxuICAvLyDmt7vliqDov57mjqXot6/lvoRcbiAgYWRkQ29ubmVjdGlvblBhdGg6IChwYXRoKSA9PiBcbiAgICBzZXQoKHN0YXRlKSA9PiB7XG4gICAgICBjb25zdCBuZXdQYXRocyA9IFsuLi5zdGF0ZS5jb25uZWN0aW9uUGF0aHMsIHBhdGhdO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY29ubmVjdGlvblBhdGhzOiBuZXdQYXRoc1xuICAgICAgfTtcbiAgICB9KSxcblxuICAvLyDnp7vpmaTov57mjqXot6/lvoRcbiAgcmVtb3ZlQ29ubmVjdGlvblBhdGg6IChzb3VyY2VJZCwgdGFyZ2V0SWQpID0+XG4gICAgc2V0KChzdGF0ZSkgPT4ge1xuICAgICAgY29uc3QgbmV3UGF0aHMgPSBzdGF0ZS5jb25uZWN0aW9uUGF0aHMuZmlsdGVyKHBhdGggPT4gXG4gICAgICAgICEocGF0aC5zb3VyY2UgPT09IHNvdXJjZUlkICYmIHBhdGgudGFyZ2V0ID09PSB0YXJnZXRJZClcbiAgICAgICk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBjb25uZWN0aW9uUGF0aHM6IG5ld1BhdGhzXG4gICAgICB9O1xuICAgIH0pLFxuXG4gIC8vIOa4heepuui/nuaOpei3r+W+hFxuICBjbGVhckNvbm5lY3Rpb25QYXRoczogKCkgPT5cbiAgICBzZXQoKCkgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY29ubmVjdGlvblBhdGhzOiBbXVxuICAgICAgfTtcbiAgICB9KSxcblxuICAvLyDojrflj5blvZPliY3ov57mjqXot6/lvoRcbiAgZ2V0Q29ubmVjdGlvblBhdGhzOiAoKSA9PiBnZXQoKS5jb25uZWN0aW9uUGF0aHMsXG5cbiAvLyAtLS0qKirov57mjqXnirbmgIHliIbmnpDnu5PmnpwqKiotLS1cblxuXG4gIC8vIOabtOaWsOi/nuaOpeeKtuaAgVxuICB1cGRhdGVDb25uZWN0aW9uU3RhdHVzOiAoc3RhdHVzKSA9PlxuICAgIHNldCgoKSA9PiAoe1xuICAgICAgY29ubmVjdGlvblN0YXR1czogc3RhdHVzXG4gICAgfSkpLFxuXG4gIC8vIOaPkOekuuahhuaWueazlVxuICBzZXRTaG93VG90YWxUb2FzdDogKHNob3cpID0+IHNldCh7IHNob3dUb3RhbFRvYXN0OiBzaG93IH0pLFxuICBzZXRUb3RhbFRvYXN0TWVzc2FnZTogKG1lc3NhZ2UpID0+IHNldCh7IHRvdGFsVG9hc3RNZXNzYWdlOiBtZXNzYWdlIH0pLFxuXG4vLyDliJ3lp4vljJbmlbDmja5cblxuICAgIC8vIOmHjee9ruWIsOm7mOiupOeKtuaAgVxuICAgIHJlc2V0ZGV2aWNlU3RvcmU6ICgpID0+IHtcbiAgICAgIHNldCgoKSA9PiAoe1xuICAgICAgICAvLyDkuLvmnLrlt7Llronoo4XmqKHlnZdcbiAgICAgICAgbWFpblVuaXRNb2R1bGVzOiBbXSxcbiAgICAgICAgLy8g6L+c56uv5bey5a6J6KOF5qih5Z2XXG4gICAgICAgIHJlbW90ZVVuaXRNb2R1bGVzOiBbXSxcbiAgICAgICAgLy8g5Li75py66YCC6YWN5ZmoXG4gICAgICAgIG1haW5Vbml0QWRhcHRlcjogbnVsbCxcbiAgICAgICAgLy8g6L+c56uv6YCC6YWN5ZmoXG4gICAgICAgIHJlbW90ZVVuaXRBZGFwdGVyOiBudWxsLFxuICAgICAgICAvLyDkuLvmnLrmjqXlj6NcbiAgICAgICAgbWFpblVuaXRQb3J0czogW10sXG4gICAgICAgIC8vIOi/nOerr+aOpeWPo1xuICAgICAgICByZW1vdGVVbml0UG9ydHM6IFtdLFxuICAgICAgICAvLyDlvZPliY3pgInkuK3nmoTlt6XlhbdcbiAgICAgICAgc2VsZWN0ZWRUb29sOiBudWxsLFxuICAgICAgICAvLyDov57mjqXljLrnianlk4HliJfooahcbiAgICAgICAgY29ubmVjdGlvbkl0ZW1zOiBbXSxcbiAgICAgICAgLy8g6L+e5o6l6Lev5b6E5YiX6KGoXG4gICAgICAgIGNvbm5lY3Rpb25QYXRoczogW10sXG4gICAgICAgIC8vIOi/nuaOpeeKtuaAgeWIhuaekOe7k+aenFxuICAgICAgICBjb25uZWN0aW9uU3RhdHVzOiBbXSxcbiAgICAgICAgLy8g5oql5ZGK5pWw5o2uXG4gICAgICAgIHJlcG9ydHM6IFtdLFxuICAgICAgfSkpO1xuICB9LFxuXG5cblxufSlcblxuLy9kZXZ0b29sc1xuLy8gIClcbik7XG5cblxuXG5cblxuZXhwb3J0IGRlZmF1bHQgdXNlRGV2aWNlU3RvcmU7Il0sIm5hbWVzIjpbImNyZWF0ZSIsImRldnRvb2xzIiwidXNlRGV2aWNlU3RvcmUiLCJzZXQiLCJnZXQiLCJlc3Rtb2RlbCIsInVwZGF0ZUVzdG1vZGVsIiwibW9kZWwiLCJkZXZpY2VzIiwiaWQiLCJuYW1lIiwidHlwZSIsInBvcnRUeXBlIiwiaW1hZ2UiLCJkZXNjcmlwdGlvbiIsImpzdHlwZSIsImZhdWx0U2NlbmFyaW9zIiwiV29ybGRTa2lsbFNjZW5hcmlvcyIsInNlYXROdW1iZXIiLCJzZWF0VVVJRCIsInNlYXRTdGFydFRpbWUiLCJyZXBvcnRzIiwibWFpblVuaXRNb2R1bGVzIiwicmVtb3RlVW5pdE1vZHVsZXMiLCJtYWluVW5pdEFkYXB0ZXIiLCJyZW1vdGVVbml0QWRhcHRlciIsIm1haW5Vbml0UG9ydHMiLCJyZW1vdGVVbml0UG9ydHMiLCJzZWxlY3RlZFRvb2wiLCJjb25uZWN0aW9uSXRlbXMiLCJjb25uZWN0aW9uUGF0aHMiLCJjb25uZWN0aW9uU3RhdHVzIiwic2VsZWN0VG9vbCIsInRvb2wiLCJjbGVhclNlbGVjdGVkVG9vbCIsImluc3RhbGxNb2R1bGUiLCJtb2R1bGUiLCJ0YXJnZXQiLCJzdGF0ZSIsInBvcnRzIiwidW5pbnN0YWxsTW9kdWxlIiwibW9kdWxlSWQiLCJmaWx0ZXIiLCJtIiwiaW5zdGFsbEFkYXB0ZXIiLCJhZGFwdGVyIiwicG9ydCIsInVuaW5zdGFsbEFkYXB0ZXIiLCJ1cGRhdGVGYXVsdFNjZW5hcmlvcyIsInN0YXR1cyIsInVwZGF0ZVdvcmxkU2tpbGxTY2VuYXJpb3MiLCJ1cGRhdGVTZWF0TnVtYmVyIiwibnVtYmVyIiwidXBkYXRlU2VhdFVVSUQiLCJ1dWlkIiwidXBkYXRlU2VhdFN0YXJ0VGltZSIsInN0YXJ0VGltZSIsInVwZGF0ZVJlcG9ydHMiLCJyZWNvcmRzIiwiYWRkQ29ubmVjdGlvbkl0ZW0iLCJpdGVtIiwicmVtb3ZlQ29ubmVjdGlvbkl0ZW0iLCJpbmRleCIsIl8iLCJpIiwiYWRkQ29ubmVjdGlvblBhdGgiLCJwYXRoIiwibmV3UGF0aHMiLCJyZW1vdmVDb25uZWN0aW9uUGF0aCIsInNvdXJjZUlkIiwidGFyZ2V0SWQiLCJzb3VyY2UiLCJjbGVhckNvbm5lY3Rpb25QYXRocyIsImdldENvbm5lY3Rpb25QYXRocyIsInVwZGF0ZUNvbm5lY3Rpb25TdGF0dXMiLCJzZXRTaG93VG90YWxUb2FzdCIsInNob3ciLCJzaG93VG90YWxUb2FzdCIsInNldFRvdGFsVG9hc3RNZXNzYWdlIiwibWVzc2FnZSIsInRvdGFsVG9hc3RNZXNzYWdlIiwicmVzZXRkZXZpY2VTdG9yZSJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(pages-dir-node)/./src/store/deviceStore.js\n"); /***/ }), /***/ "(pages-dir-node)/./src/store/displayStore.js": /*!***********************************!*\ !*** ./src/store/displayStore.js ***! \***********************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; eval("__webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {\n__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 zustand__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! zustand */ \"zustand\");\n/* harmony import */ var zustand_middleware__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! zustand/middleware */ \"zustand/middleware\");\n/* harmony import */ var uuid__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! uuid */ \"uuid\");\nvar __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([zustand__WEBPACK_IMPORTED_MODULE_0__, zustand_middleware__WEBPACK_IMPORTED_MODULE_1__, uuid__WEBPACK_IMPORTED_MODULE_2__]);\n([zustand__WEBPACK_IMPORTED_MODULE_0__, zustand_middleware__WEBPACK_IMPORTED_MODULE_1__, uuid__WEBPACK_IMPORTED_MODULE_2__] = __webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__);\n\n\n\n// 默认项目配置\nconst defaultProject = {\n id: 'default',\n name: 'DEFAULT',\n testResults: [],\n testResultsCount: [],\n testConfigs: [\n {\n id: (0,uuid__WEBPACK_IMPORTED_MODULE_2__.v4)(),\n moduleType: '8000',\n modulelable: '铜缆测试仪',\n params: {\n limitValue: 'TIA Cat 6 Channel',\n cableType: 'Cat6 U/UTP',\n wireOrder: 'T568B'\n }\n },\n {\n id: (0,uuid__WEBPACK_IMPORTED_MODULE_2__.v4)(),\n moduleType: 'cfp',\n modulelable: '光损耗测试仪',\n params: {\n limitValue: 'TIA-568.3-E Multimode (STD)',\n cableType: 'OM3 Multimode 50',\n refJumper: '1',\n spliceCount: '0',\n connectorCount: '2'\n }\n },\n {\n id: (0,uuid__WEBPACK_IMPORTED_MODULE_2__.v4)(),\n moduleType: 'ofp',\n modulelable: 'OTDR测试仪',\n params: {\n limitValue: 'General Fiber RL = 35 dB',\n cableType: 'OM3 Multimode 50'\n }\n }\n ],\n cableIds: [\n {\n id: (0,uuid__WEBPACK_IMPORTED_MODULE_2__.v4)(),\n name: '001'\n },\n {\n id: (0,uuid__WEBPACK_IMPORTED_MODULE_2__.v4)(),\n name: '002'\n }\n ],\n operators: [\n {\n id: (0,uuid__WEBPACK_IMPORTED_MODULE_2__.v4)(),\n name: 'Bob'\n }\n ]\n};\n// 默认状态\nconst defaultState = {\n // 项目相关\n projects: [\n defaultProject\n ],\n selectedIndexes: {\n projectIndex: 0,\n testConfigIndex: 0,\n operatorIndex: 0,\n cableIdIndex: 0,\n cableId2Index: 1\n },\n // 页面导航相关\n navigation: {\n current: {\n name: 'home',\n view: 'main',\n params: {} // 页面参数\n },\n previous: null,\n history: [] // 页面历史记录\n },\n ref: {\n copper: {\n status: false\n },\n cfp: {\n status: false,\n connectStatus: false\n },\n ofp: {\n status: false,\n connectStatus: false\n }\n },\n hasPlayedSound: false,\n showToast: false,\n toastMessage: ''\n};\nconst useDisplayStore = (0,zustand__WEBPACK_IMPORTED_MODULE_0__.create)((0,zustand_middleware__WEBPACK_IMPORTED_MODULE_1__.devtools)((set, get)=>({\n ...defaultState,\n // 获取当前选中的项目\n getCurrentProject: ()=>{\n const state = get();\n return state.projects[state.selectedIndexes.projectIndex];\n },\n // 获取当前选中的测试配置\n getCurrentTestConfig: ()=>{\n const state = get();\n const project = state.projects[state.selectedIndexes.projectIndex];\n return project.testConfigs[state.selectedIndexes.testConfigIndex];\n },\n // 获取当前选中的操作员\n getCurrentOperator: ()=>{\n const state = get();\n const project = state.projects[state.selectedIndexes.projectIndex];\n return project.operators[state.selectedIndexes.operatorIndex];\n },\n // 获取当前选中的线缆ID\n getCurrentCableId: ()=>{\n const state = get();\n const project = state.projects[state.selectedIndexes.projectIndex];\n return project.cableIds[state.selectedIndexes.cableIdIndex];\n },\n // 获取当前选中的线缆ID\n getCurrentCableId2: ()=>{\n const state = get();\n const project = state.projects[state.selectedIndexes.projectIndex];\n return project.cableIds[state.selectedIndexes.cableId2Index];\n },\n // 更新选中索引\n setSelectedIndexes: (updates)=>{\n set((state)=>({\n selectedIndexes: {\n ...state.selectedIndexes,\n ...updates\n }\n }));\n },\n // 页面导航\n navigateTo: (pageName, view = 'main', params = {})=>{\n const current = get().navigation.current;\n // 确保当前状态有效\n if (current && current.name && current.view) {\n // 检查新状态是否与当前状态相同\n const isSameState = current.name === pageName && current.view === view && JSON.stringify(current.params) === JSON.stringify(params);\n // 只有状态不同时才更新历史记录,并保持最近3条不同的记录\n set((state)=>{\n let newHistory = isSameState ? state.navigation.history : [\n ...state.navigation.history,\n current\n ];\n // 从后往前找最近3条不同name的记录\n const uniqueNames = new Set();\n const filteredHistory = [];\n for(let i = newHistory.length - 1; i >= 0 && uniqueNames.size < 3; i--){\n if (!uniqueNames.has(newHistory[i].name)) {\n uniqueNames.add(newHistory[i].name);\n filteredHistory.unshift(newHistory[i]);\n }\n }\n return {\n navigation: {\n current: {\n name: pageName,\n view: view,\n params: params\n },\n previous: current,\n history: filteredHistory\n }\n };\n });\n }\n },\n // 返回上一页\n goBack: ()=>{\n const { navigation } = get();\n const { current, history } = navigation;\n const currentName = current.name;\n // 从后往前找第一个name不同的记录\n for(let i = history.length - 1; i >= 0; i--){\n if (history[i].name !== currentName) {\n const target = history[i];\n // 计算新的history数组(移除跳转点之后的所有记录)\n const newHistory = history.slice(0, i);\n // 更新navigation状态\n set({\n navigation: {\n current: target,\n previous: newHistory[newHistory.length - 1] || null,\n history: newHistory\n }\n });\n return;\n }\n }\n // 没有找到则回首页\n set({\n navigation: {\n current: {\n name: 'home',\n view: 'main',\n params: {}\n },\n previous: current,\n history: [\n ...history,\n current\n ]\n }\n });\n },\n // 更新当前视图\n updateCurrentView: (view, params = {})=>{\n const current = get().navigation.current;\n // 检查新状态是否与当前状态相同\n const isSameState = current.view === view && JSON.stringify(current.params) === JSON.stringify(params);\n // 只有状态不同时才更新历史记录,并保持最近3条不同的记录\n set((state)=>{\n let newHistory = isSameState ? state.navigation.history : [\n ...state.navigation.history,\n current\n ];\n // 从后往前找最近3条不同name的记录\n const uniqueNames = new Set();\n const filteredHistory = [];\n for(let i = newHistory.length - 1; i >= 0 && uniqueNames.size < 3; i--){\n if (!uniqueNames.has(newHistory[i].name)) {\n uniqueNames.add(newHistory[i].name);\n filteredHistory.unshift(newHistory[i]);\n }\n }\n return {\n navigation: {\n current: {\n ...current,\n view: view,\n params: {\n ...current.params,\n ...params\n }\n },\n previous: current,\n history: filteredHistory\n }\n };\n });\n },\n // 项目操作方法\n addProject: (project)=>{\n set((state)=>({\n projects: [\n ...state.projects,\n {\n id: (0,uuid__WEBPACK_IMPORTED_MODULE_2__.v4)(),\n ...project\n }\n ]\n }));\n },\n //删除项目\n deleteProject: (projectIndex)=>{\n if (projectIndex === 0) {\n console.warn('默认项目不能删除');\n return;\n }\n set((state)=>({\n projects: state.projects.filter((_, index)=>index !== projectIndex)\n }));\n },\n //重命名项目\n updateProject: (projectIndex, updates)=>{\n set((state)=>({\n projects: state.projects.map((project, index)=>index === projectIndex ? {\n ...project,\n ...updates\n } : project)\n }));\n },\n //添加操作员\n addOperator: (operator)=>{\n set((state)=>({\n projects: state.projects.map((project)=>({\n ...project,\n operators: [\n ...project.operators,\n operator\n ]\n }))\n }));\n },\n // 基准、参照更新方法\n updataRef: (refType, newState)=>{\n set((state)=>({\n ref: {\n ...state.ref,\n [refType]: {\n ...state.ref[refType],\n ...newState\n }\n }\n }));\n },\n // 重置到默认状态\n resetToDefaultState: ()=>{\n set(()=>({\n ...defaultState,\n projects: [\n defaultProject\n ]\n }));\n },\n // 更新项目数据\n updateProjects: (newProjects)=>{\n set(()=>({\n projects: newProjects\n }));\n },\n // 更新项目数据\n updateselectedIndexes: (newselectedIndexes)=>{\n set(()=>({\n selectedIndexes: newselectedIndexes\n }));\n },\n // 提示框方法\n setShowToast: (show)=>set({\n showToast: show\n }),\n setToastMessage: (message)=>set({\n toastMessage: message\n })\n })));\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (useDisplayStore);\n\n__webpack_async_result__();\n} catch(e) { __webpack_async_result__(e); } });//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHBhZ2VzLWRpci1ub2RlKS8uL3NyYy9zdG9yZS9kaXNwbGF5U3RvcmUuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFpQztBQUNhO0FBQ1Y7QUFHcEMsU0FBUztBQUNULE1BQU1JLGlCQUFpQjtJQUNuQkMsSUFBSTtJQUNKQyxNQUFNO0lBQ05DLGFBQWEsRUFBRTtJQUNmQyxrQkFBa0IsRUFBRTtJQUNwQkMsYUFBYTtRQUNUO1lBQ0lKLElBQUlGLHdDQUFNQTtZQUNWTyxZQUFZO1lBQ1pDLGFBQWE7WUFDYkMsUUFBUTtnQkFDSkMsWUFBWTtnQkFDWkMsV0FBVztnQkFDWEMsV0FBVztZQUNmO1FBQ0o7UUFDQTtZQUNJVixJQUFJRix3Q0FBTUE7WUFDVk8sWUFBWTtZQUNaQyxhQUFhO1lBQ2JDLFFBQVE7Z0JBQ0pDLFlBQVk7Z0JBQ1pDLFdBQVc7Z0JBQ1hFLFdBQVc7Z0JBQ1hDLGFBQWE7Z0JBQ2JDLGdCQUFnQjtZQUNwQjtRQUNKO1FBQ0E7WUFDSWIsSUFBSUYsd0NBQU1BO1lBQ1ZPLFlBQVk7WUFDWkMsYUFBYTtZQUNiQyxRQUFRO2dCQUNKQyxZQUFZO2dCQUNaQyxXQUFXO1lBQ2Y7UUFDSjtLQUNIO0lBQ0RLLFVBQVU7UUFDTjtZQUNJZCxJQUFJRix3Q0FBTUE7WUFDVkcsTUFBTTtRQUNWO1FBQ0E7WUFDSUQsSUFBSUYsd0NBQU1BO1lBQ1ZHLE1BQU07UUFDVjtLQUNIO0lBQ0RjLFdBQVc7UUFDUDtZQUFFZixJQUFJRix3Q0FBTUE7WUFBSUcsTUFBTTtRQUFNO0tBQy9CO0FBQ0w7QUFFQSxPQUFPO0FBQ1AsTUFBTWUsZUFBZTtJQUNqQixPQUFPO0lBQ1BDLFVBQVU7UUFBQ2xCO0tBQWU7SUFDMUJtQixpQkFBaUI7UUFDYkMsY0FBYztRQUNkQyxpQkFBaUI7UUFDakJDLGVBQWU7UUFDZkMsY0FBYztRQUNkQyxlQUFlO0lBQ25CO0lBQ0EsU0FBUztJQUNUQyxZQUFZO1FBQ1JDLFNBQVM7WUFDTHhCLE1BQU07WUFDTnlCLE1BQU07WUFDTm5CLFFBQVEsQ0FBQyxFQUFTLE9BQU87UUFDN0I7UUFDQW9CLFVBQVU7UUFDVkMsU0FBUyxFQUFFLENBQVUsU0FBUztJQUNsQztJQUNBQyxLQUFLO1FBQ0RDLFFBQVE7WUFDSkMsUUFBUTtRQUNaO1FBQ0FDLEtBQUs7WUFDREQsUUFBUTtZQUNSRSxlQUFlO1FBQ25CO1FBQ0FDLEtBQUs7WUFDREgsUUFBUTtZQUNSRSxlQUFlO1FBQ25CO0lBQ0o7SUFDQUUsZ0JBQWdCO0lBQ2hCQyxXQUFXO0lBQ1hDLGNBQWM7QUFDbEI7QUFFQSxNQUFNQyxrQkFBa0IzQywrQ0FBTUEsQ0FBQ0MsNERBQVFBLENBQUMsQ0FBQzJDLEtBQUtDLE1BQVM7UUFDbkQsR0FBR3hCLFlBQVk7UUFFZixZQUFZO1FBQ1p5QixtQkFBbUI7WUFDZixNQUFNQyxRQUFRRjtZQUNkLE9BQU9FLE1BQU16QixRQUFRLENBQUN5QixNQUFNeEIsZUFBZSxDQUFDQyxZQUFZLENBQUM7UUFDN0Q7UUFFQSxjQUFjO1FBQ2R3QixzQkFBc0I7WUFDbEIsTUFBTUQsUUFBUUY7WUFDZCxNQUFNSSxVQUFVRixNQUFNekIsUUFBUSxDQUFDeUIsTUFBTXhCLGVBQWUsQ0FBQ0MsWUFBWSxDQUFDO1lBQ2xFLE9BQU95QixRQUFReEMsV0FBVyxDQUFDc0MsTUFBTXhCLGVBQWUsQ0FBQ0UsZUFBZSxDQUFDO1FBQ3JFO1FBRUEsYUFBYTtRQUNieUIsb0JBQW9CO1lBQ2hCLE1BQU1ILFFBQVFGO1lBQ2QsTUFBTUksVUFBVUYsTUFBTXpCLFFBQVEsQ0FBQ3lCLE1BQU14QixlQUFlLENBQUNDLFlBQVksQ0FBQztZQUNsRSxPQUFPeUIsUUFBUTdCLFNBQVMsQ0FBQzJCLE1BQU14QixlQUFlLENBQUNHLGFBQWEsQ0FBQztRQUNqRTtRQUVBLGNBQWM7UUFDZHlCLG1CQUFtQjtZQUNmLE1BQU1KLFFBQVFGO1lBQ2QsTUFBTUksVUFBVUYsTUFBTXpCLFFBQVEsQ0FBQ3lCLE1BQU14QixlQUFlLENBQUNDLFlBQVksQ0FBQztZQUNsRSxPQUFPeUIsUUFBUTlCLFFBQVEsQ0FBQzRCLE1BQU14QixlQUFlLENBQUNJLFlBQVksQ0FBQztRQUMvRDtRQUNBLGNBQWM7UUFDZHlCLG9CQUFvQjtZQUNoQixNQUFNTCxRQUFRRjtZQUNkLE1BQU1JLFVBQVVGLE1BQU16QixRQUFRLENBQUN5QixNQUFNeEIsZUFBZSxDQUFDQyxZQUFZLENBQUM7WUFDbEUsT0FBT3lCLFFBQVE5QixRQUFRLENBQUM0QixNQUFNeEIsZUFBZSxDQUFDSyxhQUFhLENBQUM7UUFDaEU7UUFFQSxTQUFTO1FBQ1R5QixvQkFBb0IsQ0FBQ0M7WUFDakJWLElBQUksQ0FBQ0csUUFBVztvQkFDWnhCLGlCQUFpQjt3QkFDYixHQUFHd0IsTUFBTXhCLGVBQWU7d0JBQ3hCLEdBQUcrQixPQUFPO29CQUNkO2dCQUNKO1FBQ0o7UUFFQSxPQUFPO1FBQ1BDLFlBQVksQ0FBQ0MsVUFBVXpCLE9BQU8sTUFBTSxFQUFFbkIsU0FBUyxDQUFDLENBQUM7WUFDN0MsTUFBTWtCLFVBQVVlLE1BQU1oQixVQUFVLENBQUNDLE9BQU87WUFDeEMsV0FBVztZQUNYLElBQUlBLFdBQVdBLFFBQVF4QixJQUFJLElBQUl3QixRQUFRQyxJQUFJLEVBQUU7Z0JBQ3pDLGlCQUFpQjtnQkFDakIsTUFBTTBCLGNBQ0YzQixRQUFReEIsSUFBSSxLQUFLa0QsWUFDakIxQixRQUFRQyxJQUFJLEtBQUtBLFFBQ2pCMkIsS0FBS0MsU0FBUyxDQUFDN0IsUUFBUWxCLE1BQU0sTUFBTThDLEtBQUtDLFNBQVMsQ0FBQy9DO2dCQUV0RCw4QkFBOEI7Z0JBQzlCZ0MsSUFBSSxDQUFDRztvQkFDRCxJQUFJYSxhQUFhSCxjQUFjVixNQUFNbEIsVUFBVSxDQUFDSSxPQUFPLEdBQUc7MkJBQUljLE1BQU1sQixVQUFVLENBQUNJLE9BQU87d0JBQUVIO3FCQUFRO29CQUNoRyxxQkFBcUI7b0JBQ3JCLE1BQU0rQixjQUFjLElBQUlDO29CQUN4QixNQUFNQyxrQkFBa0IsRUFBRTtvQkFDMUIsSUFBSyxJQUFJQyxJQUFJSixXQUFXSyxNQUFNLEdBQUcsR0FBR0QsS0FBSyxLQUFLSCxZQUFZSyxJQUFJLEdBQUcsR0FBR0YsSUFBSzt3QkFDckUsSUFBSSxDQUFDSCxZQUFZTSxHQUFHLENBQUNQLFVBQVUsQ0FBQ0ksRUFBRSxDQUFDMUQsSUFBSSxHQUFHOzRCQUN0Q3VELFlBQVlPLEdBQUcsQ0FBQ1IsVUFBVSxDQUFDSSxFQUFFLENBQUMxRCxJQUFJOzRCQUNsQ3lELGdCQUFnQk0sT0FBTyxDQUFDVCxVQUFVLENBQUNJLEVBQUU7d0JBQ3pDO29CQUNKO29CQUNBLE9BQU87d0JBQ0huQyxZQUFZOzRCQUNSQyxTQUFTO2dDQUNMeEIsTUFBTWtEO2dDQUNOekIsTUFBTUE7Z0NBQ05uQixRQUFRQTs0QkFDWjs0QkFDQW9CLFVBQVVGOzRCQUNWRyxTQUFTOEI7d0JBQ2I7b0JBQ0o7Z0JBQ0o7WUFDSjtRQUNKO1FBRUEsUUFBUTtRQUNSTyxRQUFRO1lBQ0osTUFBTSxFQUFFekMsVUFBVSxFQUFFLEdBQUdnQjtZQUN2QixNQUFNLEVBQUVmLE9BQU8sRUFBRUcsT0FBTyxFQUFFLEdBQUdKO1lBQzdCLE1BQU0wQyxjQUFjekMsUUFBUXhCLElBQUk7WUFFaEMsb0JBQW9CO1lBQ3BCLElBQUssSUFBSTBELElBQUkvQixRQUFRZ0MsTUFBTSxHQUFHLEdBQUdELEtBQUssR0FBR0EsSUFBSztnQkFDNUMsSUFBSS9CLE9BQU8sQ0FBQytCLEVBQUUsQ0FBQzFELElBQUksS0FBS2lFLGFBQWE7b0JBQ25DLE1BQU1DLFNBQVN2QyxPQUFPLENBQUMrQixFQUFFO29CQUV6Qiw4QkFBOEI7b0JBQzlCLE1BQU1KLGFBQWEzQixRQUFRd0MsS0FBSyxDQUFDLEdBQUdUO29CQUVwQyxpQkFBaUI7b0JBQ2pCcEIsSUFBSTt3QkFDRmYsWUFBWTs0QkFDVkMsU0FBUzBDOzRCQUNUeEMsVUFBVTRCLFVBQVUsQ0FBQ0EsV0FBV0ssTUFBTSxHQUFHLEVBQUUsSUFBSTs0QkFDL0NoQyxTQUFTMkI7d0JBQ1g7b0JBQ0Y7b0JBQ0E7Z0JBQ0Y7WUFDRjtZQUVBLFdBQVc7WUFDWGhCLElBQUk7Z0JBQ0ZmLFlBQVk7b0JBQ1ZDLFNBQVM7d0JBQUV4QixNQUFNO3dCQUFReUIsTUFBTTt3QkFBUW5CLFFBQVEsQ0FBQztvQkFBRTtvQkFDbERvQixVQUFVRjtvQkFDVkcsU0FBUzsyQkFBSUE7d0JBQVNIO3FCQUFRO2dCQUNoQztZQUNGO1FBQ0Y7UUFFRixTQUFTO1FBQ1Q0QyxtQkFBbUIsQ0FBQzNDLE1BQU1uQixTQUFTLENBQUMsQ0FBQztZQUNqQyxNQUFNa0IsVUFBVWUsTUFBTWhCLFVBQVUsQ0FBQ0MsT0FBTztZQUN4QyxpQkFBaUI7WUFDakIsTUFBTTJCLGNBQ0YzQixRQUFRQyxJQUFJLEtBQUtBLFFBQ2pCMkIsS0FBS0MsU0FBUyxDQUFDN0IsUUFBUWxCLE1BQU0sTUFBTThDLEtBQUtDLFNBQVMsQ0FBQy9DO1lBRXRELDhCQUE4QjtZQUM5QmdDLElBQUksQ0FBQ0c7Z0JBQ0QsSUFBSWEsYUFBYUgsY0FBY1YsTUFBTWxCLFVBQVUsQ0FBQ0ksT0FBTyxHQUFHO3VCQUFJYyxNQUFNbEIsVUFBVSxDQUFDSSxPQUFPO29CQUFFSDtpQkFBUTtnQkFDaEcscUJBQXFCO2dCQUNyQixNQUFNK0IsY0FBYyxJQUFJQztnQkFDeEIsTUFBTUMsa0JBQWtCLEVBQUU7Z0JBQzFCLElBQUssSUFBSUMsSUFBSUosV0FBV0ssTUFBTSxHQUFHLEdBQUdELEtBQUssS0FBS0gsWUFBWUssSUFBSSxHQUFHLEdBQUdGLElBQUs7b0JBQ3JFLElBQUksQ0FBQ0gsWUFBWU0sR0FBRyxDQUFDUCxVQUFVLENBQUNJLEVBQUUsQ0FBQzFELElBQUksR0FBRzt3QkFDdEN1RCxZQUFZTyxHQUFHLENBQUNSLFVBQVUsQ0FBQ0ksRUFBRSxDQUFDMUQsSUFBSTt3QkFDbEN5RCxnQkFBZ0JNLE9BQU8sQ0FBQ1QsVUFBVSxDQUFDSSxFQUFFO29CQUN6QztnQkFDSjtnQkFDQSxPQUFPO29CQUNIbkMsWUFBWTt3QkFDUkMsU0FBUzs0QkFDTCxHQUFHQSxPQUFPOzRCQUNWQyxNQUFNQTs0QkFDTm5CLFFBQVE7Z0NBQUUsR0FBR2tCLFFBQVFsQixNQUFNO2dDQUFFLEdBQUdBLE1BQU07NEJBQUM7d0JBQzNDO3dCQUNBb0IsVUFBVUY7d0JBQ1ZHLFNBQVM4QjtvQkFDYjtnQkFDSjtZQUNKO1FBQ0o7UUFFQSxTQUFTO1FBQ1RZLFlBQVksQ0FBQzFCO1lBQ1RMLElBQUksQ0FBQ0csUUFBVztvQkFDWnpCLFVBQVU7MkJBQUl5QixNQUFNekIsUUFBUTt3QkFBRTs0QkFDMUJqQixJQUFJRix3Q0FBTUE7NEJBQ1YsR0FBRzhDLE9BQU87d0JBQ2Q7cUJBQUU7Z0JBQ047UUFDSjtRQUNBLE1BQU07UUFDTjJCLGVBQWUsQ0FBQ3BEO1lBQ1osSUFBSUEsaUJBQWlCLEdBQUc7Z0JBQ3BCcUQsUUFBUUMsSUFBSSxDQUFDO2dCQUNiO1lBQ0o7WUFDQWxDLElBQUksQ0FBQ0csUUFBVztvQkFDWnpCLFVBQVV5QixNQUFNekIsUUFBUSxDQUFDeUQsTUFBTSxDQUFDLENBQUNDLEdBQUdDLFFBQVVBLFVBQVV6RDtnQkFDNUQ7UUFDSjtRQUNBLE9BQU87UUFDUDBELGVBQWUsQ0FBQzFELGNBQWM4QjtZQUMxQlYsSUFBSSxDQUFDRyxRQUFXO29CQUNaekIsVUFBVXlCLE1BQU16QixRQUFRLENBQUM2RCxHQUFHLENBQUMsQ0FBQ2xDLFNBQVNnQyxRQUNuQ0EsVUFBVXpELGVBQWU7NEJBQUUsR0FBR3lCLE9BQU87NEJBQUUsR0FBR0ssT0FBTzt3QkFBQyxJQUFJTDtnQkFFOUQ7UUFDSjtRQUNBLE9BQU87UUFDUG1DLGFBQWEsQ0FBQ0M7WUFDVnpDLElBQUksQ0FBQ0csUUFBVztvQkFDWnpCLFVBQVV5QixNQUFNekIsUUFBUSxDQUFDNkQsR0FBRyxDQUFDbEMsQ0FBQUEsVUFBWTs0QkFDckMsR0FBR0EsT0FBTzs0QkFDVjdCLFdBQVc7bUNBQUk2QixRQUFRN0IsU0FBUztnQ0FBRWlFOzZCQUFTO3dCQUMvQztnQkFDSjtRQUNKO1FBQ0EsWUFBWTtRQUNaQyxXQUFXLENBQUNDLFNBQVNDO1lBQ2pCNUMsSUFBSSxDQUFDRyxRQUFXO29CQUNaYixLQUFLO3dCQUNELEdBQUdhLE1BQU1iLEdBQUc7d0JBQ1osQ0FBQ3FELFFBQVEsRUFBRTs0QkFDUCxHQUFHeEMsTUFBTWIsR0FBRyxDQUFDcUQsUUFBUTs0QkFDckIsR0FBR0MsUUFBUTt3QkFDZjtvQkFDSjtnQkFDSjtRQUNKO1FBQ0EsVUFBVTtRQUNWQyxxQkFBcUI7WUFDakI3QyxJQUFJLElBQU87b0JBQ1AsR0FBR3ZCLFlBQVk7b0JBQ2ZDLFVBQVU7d0JBQUNsQjtxQkFBZTtnQkFDOUI7UUFDSjtRQUVBLFNBQVM7UUFDVHNGLGdCQUFnQixDQUFDQztZQUNiL0MsSUFBSSxJQUFPO29CQUNQdEIsVUFBVXFFO2dCQUNkO1FBQ0o7UUFDQSxTQUFTO1FBQ1RDLHVCQUF1QixDQUFDQztZQUNwQmpELElBQUksSUFBTztvQkFDUHJCLGlCQUFpQnNFO2dCQUNyQjtRQUNKO1FBQ0EsUUFBUTtRQUNSQyxjQUFjLENBQUNDLE9BQVNuRCxJQUFJO2dCQUFFSCxXQUFXc0Q7WUFBSztRQUM5Q0MsaUJBQWlCLENBQUNDLFVBQVlyRCxJQUFJO2dCQUFFRixjQUFjdUQ7WUFBUTtJQUU5RDtBQUVBLGlFQUFldEQsZUFBZUEsRUFBQyIsInNvdXJjZXMiOlsiL29wdC9kZXYvZXN0LWRzeC9zcmMvc3RvcmUvZGlzcGxheVN0b3JlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNyZWF0ZSB9IGZyb20gJ3p1c3RhbmQnO1xyXG5pbXBvcnQgeyBkZXZ0b29scyB9IGZyb20gJ3p1c3RhbmQvbWlkZGxld2FyZSc7XHJcbmltcG9ydCB7IHY0IGFzIHV1aWR2NCB9IGZyb20gJ3V1aWQnO1xyXG5cclxuXHJcbi8vIOm7mOiupOmhueebrumFjee9rlxyXG5jb25zdCBkZWZhdWx0UHJvamVjdCA9IHtcclxuICAgIGlkOiAnZGVmYXVsdCcsXHJcbiAgICBuYW1lOiAnREVGQVVMVCcsXHJcbiAgICB0ZXN0UmVzdWx0czogW10sXHJcbiAgICB0ZXN0UmVzdWx0c0NvdW50OiBbXSxcclxuICAgIHRlc3RDb25maWdzOiBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICBpZDogdXVpZHY0KCksXHJcbiAgICAgICAgICAgIG1vZHVsZVR5cGU6ICc4MDAwJyxcclxuICAgICAgICAgICAgbW9kdWxlbGFibGU6ICfpk5znvIbmtYvor5Xku6onLFxyXG4gICAgICAgICAgICBwYXJhbXM6IHtcclxuICAgICAgICAgICAgICAgIGxpbWl0VmFsdWU6ICdUSUEgQ2F0IDYgQ2hhbm5lbCcsXHJcbiAgICAgICAgICAgICAgICBjYWJsZVR5cGU6ICdDYXQ2IFUvVVRQJyxcclxuICAgICAgICAgICAgICAgIHdpcmVPcmRlcjogJ1Q1NjhCJ1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIGlkOiB1dWlkdjQoKSxcclxuICAgICAgICAgICAgbW9kdWxlVHlwZTogJ2NmcCcsXHJcbiAgICAgICAgICAgIG1vZHVsZWxhYmxlOiAn5YWJ5o2f6ICX5rWL6K+V5LuqJyxcclxuICAgICAgICAgICAgcGFyYW1zOiB7XHJcbiAgICAgICAgICAgICAgICBsaW1pdFZhbHVlOiAnVElBLTU2OC4zLUUgTXVsdGltb2RlIChTVEQpJyxcclxuICAgICAgICAgICAgICAgIGNhYmxlVHlwZTogJ09NMyBNdWx0aW1vZGUgNTAnLFxyXG4gICAgICAgICAgICAgICAgcmVmSnVtcGVyOiAnMScsXHJcbiAgICAgICAgICAgICAgICBzcGxpY2VDb3VudDogJzAnLFxyXG4gICAgICAgICAgICAgICAgY29ubmVjdG9yQ291bnQ6ICcyJ1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIGlkOiB1dWlkdjQoKSxcclxuICAgICAgICAgICAgbW9kdWxlVHlwZTogJ29mcCcsXHJcbiAgICAgICAgICAgIG1vZHVsZWxhYmxlOiAnT1REUua1i+ivleS7qicsXHJcbiAgICAgICAgICAgIHBhcmFtczoge1xyXG4gICAgICAgICAgICAgICAgbGltaXRWYWx1ZTogJ0dlbmVyYWwgRmliZXIgUkwgPSAzNSBkQicsXHJcbiAgICAgICAgICAgICAgICBjYWJsZVR5cGU6ICdPTTMgTXVsdGltb2RlIDUwJ1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgXSxcclxuICAgIGNhYmxlSWRzOiBbXHJcbiAgICAgICAgeyBcclxuICAgICAgICAgICAgaWQ6IHV1aWR2NCgpLCBcclxuICAgICAgICAgICAgbmFtZTogJzAwMSdcclxuICAgICAgICB9LFxyXG4gICAgICAgIHsgXHJcbiAgICAgICAgICAgIGlkOiB1dWlkdjQoKSwgXHJcbiAgICAgICAgICAgIG5hbWU6ICcwMDInXHJcbiAgICAgICAgfVxyXG4gICAgXSxcclxuICAgIG9wZXJhdG9yczogW1xyXG4gICAgICAgIHsgaWQ6IHV1aWR2NCgpLCBuYW1lOiAnQm9iJyB9XHJcbiAgICBdLFxyXG59O1xyXG5cclxuLy8g6buY6K6k54q25oCBXHJcbmNvbnN0IGRlZmF1bHRTdGF0ZSA9IHtcclxuICAgIC8vIOmhueebruebuOWFs1xyXG4gICAgcHJvamVjdHM6IFtkZWZhdWx0UHJvamVjdF0sXHJcbiAgICBzZWxlY3RlZEluZGV4ZXM6IHtcclxuICAgICAgICBwcm9qZWN0SW5kZXg6IDAsXHJcbiAgICAgICAgdGVzdENvbmZpZ0luZGV4OiAwLFxyXG4gICAgICAgIG9wZXJhdG9ySW5kZXg6IDAsXHJcbiAgICAgICAgY2FibGVJZEluZGV4OiAwLFxyXG4gICAgICAgIGNhYmxlSWQySW5kZXg6IDFcclxuICAgIH0sXHJcbiAgICAvLyDpobXpnaLlr7zoiKrnm7jlhbNcclxuICAgIG5hdmlnYXRpb246IHtcclxuICAgICAgICBjdXJyZW50OiB7XHJcbiAgICAgICAgICAgIG5hbWU6ICdob21lJywgICAgIC8vIOW9k+WJjemhtemdouWQjeensFxyXG4gICAgICAgICAgICB2aWV3OiAnbWFpbicsICAgICAvLyDlvZPliY3pobXpnaLop4blm77nirbmgIFcclxuICAgICAgICAgICAgcGFyYW1zOiB7fSAgICAgICAgLy8g6aG16Z2i5Y+C5pWwXHJcbiAgICAgICAgfSxcclxuICAgICAgICBwcmV2aW91czogbnVsbCwgICAgICAgLy8g5LiK5LiA5Liq6aG16Z2i54q25oCBXHJcbiAgICAgICAgaGlzdG9yeTogW10gICAgICAgICAgLy8g6aG16Z2i5Y6G5Y+y6K6w5b2VXHJcbiAgICB9LFxyXG4gICAgcmVmOiB7XHJcbiAgICAgICAgY29wcGVyOiB7XHJcbiAgICAgICAgICAgIHN0YXR1czogZmFsc2UsXHJcbiAgICAgICAgfSxcclxuICAgICAgICBjZnA6IHtcclxuICAgICAgICAgICAgc3RhdHVzOiBmYWxzZSxcclxuICAgICAgICAgICAgY29ubmVjdFN0YXR1czogZmFsc2UsXHJcbiAgICAgICAgfSxcclxuICAgICAgICBvZnA6IHtcclxuICAgICAgICAgICAgc3RhdHVzOiBmYWxzZSxcclxuICAgICAgICAgICAgY29ubmVjdFN0YXR1czogZmFsc2UsXHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuICAgIGhhc1BsYXllZFNvdW5kOiBmYWxzZSxcclxuICAgIHNob3dUb2FzdDogZmFsc2UsXHJcbiAgICB0b2FzdE1lc3NhZ2U6ICcnLFxyXG59O1xyXG5cclxuY29uc3QgdXNlRGlzcGxheVN0b3JlID0gY3JlYXRlKGRldnRvb2xzKChzZXQsIGdldCkgPT4gKHtcclxuICAgIC4uLmRlZmF1bHRTdGF0ZSxcclxuXHJcbiAgICAvLyDojrflj5blvZPliY3pgInkuK3nmoTpobnnm65cclxuICAgIGdldEN1cnJlbnRQcm9qZWN0OiAoKSA9PiB7XHJcbiAgICAgICAgY29uc3Qgc3RhdGUgPSBnZXQoKTtcclxuICAgICAgICByZXR1cm4gc3RhdGUucHJvamVjdHNbc3RhdGUuc2VsZWN0ZWRJbmRleGVzLnByb2plY3RJbmRleF07XHJcbiAgICB9LFxyXG5cclxuICAgIC8vIOiOt+WPluW9k+WJjemAieS4reeahOa1i+ivlemFjee9rlxyXG4gICAgZ2V0Q3VycmVudFRlc3RDb25maWc6ICgpID0+IHtcclxuICAgICAgICBjb25zdCBzdGF0ZSA9IGdldCgpO1xyXG4gICAgICAgIGNvbnN0IHByb2plY3QgPSBzdGF0ZS5wcm9qZWN0c1tzdGF0ZS5zZWxlY3RlZEluZGV4ZXMucHJvamVjdEluZGV4XTtcclxuICAgICAgICByZXR1cm4gcHJvamVjdC50ZXN0Q29uZmlnc1tzdGF0ZS5zZWxlY3RlZEluZGV4ZXMudGVzdENvbmZpZ0luZGV4XTtcclxuICAgIH0sXHJcblxyXG4gICAgLy8g6I635Y+W5b2T5YmN6YCJ5Lit55qE5pON5L2c5ZGYXHJcbiAgICBnZXRDdXJyZW50T3BlcmF0b3I6ICgpID0+IHtcclxuICAgICAgICBjb25zdCBzdGF0ZSA9IGdldCgpO1xyXG4gICAgICAgIGNvbnN0IHByb2plY3QgPSBzdGF0ZS5wcm9qZWN0c1tzdGF0ZS5zZWxlY3RlZEluZGV4ZXMucHJvamVjdEluZGV4XTtcclxuICAgICAgICByZXR1cm4gcHJvamVjdC5vcGVyYXRvcnNbc3RhdGUuc2VsZWN0ZWRJbmRleGVzLm9wZXJhdG9ySW5kZXhdO1xyXG4gICAgfSxcclxuXHJcbiAgICAvLyDojrflj5blvZPliY3pgInkuK3nmoTnur/nvIZJRFxyXG4gICAgZ2V0Q3VycmVudENhYmxlSWQ6ICgpID0+IHtcclxuICAgICAgICBjb25zdCBzdGF0ZSA9IGdldCgpO1xyXG4gICAgICAgIGNvbnN0IHByb2plY3QgPSBzdGF0ZS5wcm9qZWN0c1tzdGF0ZS5zZWxlY3RlZEluZGV4ZXMucHJvamVjdEluZGV4XTtcclxuICAgICAgICByZXR1cm4gcHJvamVjdC5jYWJsZUlkc1tzdGF0ZS5zZWxlY3RlZEluZGV4ZXMuY2FibGVJZEluZGV4XTtcclxuICAgIH0sXHJcbiAgICAvLyDojrflj5blvZPliY3pgInkuK3nmoTnur/nvIZJRFxyXG4gICAgZ2V0Q3VycmVudENhYmxlSWQyOiAoKSA9PiB7XHJcbiAgICAgICAgY29uc3Qgc3RhdGUgPSBnZXQoKTtcclxuICAgICAgICBjb25zdCBwcm9qZWN0ID0gc3RhdGUucHJvamVjdHNbc3RhdGUuc2VsZWN0ZWRJbmRleGVzLnByb2plY3RJbmRleF07XHJcbiAgICAgICAgcmV0dXJuIHByb2plY3QuY2FibGVJZHNbc3RhdGUuc2VsZWN0ZWRJbmRleGVzLmNhYmxlSWQySW5kZXhdO1xyXG4gICAgfSxcclxuXHJcbiAgICAvLyDmm7TmlrDpgInkuK3ntKLlvJVcclxuICAgIHNldFNlbGVjdGVkSW5kZXhlczogKHVwZGF0ZXMpID0+IHtcclxuICAgICAgICBzZXQoKHN0YXRlKSA9PiAoe1xyXG4gICAgICAgICAgICBzZWxlY3RlZEluZGV4ZXM6IHtcclxuICAgICAgICAgICAgICAgIC4uLnN0YXRlLnNlbGVjdGVkSW5kZXhlcyxcclxuICAgICAgICAgICAgICAgIC4uLnVwZGF0ZXNcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pKTtcclxuICAgIH0sXHJcblxyXG4gICAgLy8g6aG16Z2i5a+86IiqXHJcbiAgICBuYXZpZ2F0ZVRvOiAocGFnZU5hbWUsIHZpZXcgPSAnbWFpbicsIHBhcmFtcyA9IHt9KSA9PiB7XHJcbiAgICAgICAgY29uc3QgY3VycmVudCA9IGdldCgpLm5hdmlnYXRpb24uY3VycmVudDtcclxuICAgICAgICAvLyDnoa7kv53lvZPliY3nirbmgIHmnInmlYhcclxuICAgICAgICBpZiAoY3VycmVudCAmJiBjdXJyZW50Lm5hbWUgJiYgY3VycmVudC52aWV3KSB7XHJcbiAgICAgICAgICAgIC8vIOajgOafpeaWsOeKtuaAgeaYr+WQpuS4juW9k+WJjeeKtuaAgeebuOWQjFxyXG4gICAgICAgICAgICBjb25zdCBpc1NhbWVTdGF0ZSA9IFxyXG4gICAgICAgICAgICAgICAgY3VycmVudC5uYW1lID09PSBwYWdlTmFtZSAmJlxyXG4gICAgICAgICAgICAgICAgY3VycmVudC52aWV3ID09PSB2aWV3ICYmXHJcbiAgICAgICAgICAgICAgICBKU09OLnN0cmluZ2lmeShjdXJyZW50LnBhcmFtcykgPT09IEpTT04uc3RyaW5naWZ5KHBhcmFtcyk7XHJcblxyXG4gICAgICAgICAgICAvLyDlj6rmnInnirbmgIHkuI3lkIzml7bmiY3mm7TmlrDljoblj7LorrDlvZXvvIzlubbkv53mjIHmnIDov5Ez5p2h5LiN5ZCM55qE6K6w5b2VXHJcbiAgICAgICAgICAgIHNldCgoc3RhdGUpID0+IHtcclxuICAgICAgICAgICAgICAgIGxldCBuZXdIaXN0b3J5ID0gaXNTYW1lU3RhdGUgPyBzdGF0ZS5uYXZpZ2F0aW9uLmhpc3RvcnkgOiBbLi4uc3RhdGUubmF2aWdhdGlvbi5oaXN0b3J5LCBjdXJyZW50XTtcclxuICAgICAgICAgICAgICAgIC8vIOS7juWQjuW+gOWJjeaJvuacgOi/kTPmnaHkuI3lkIxuYW1l55qE6K6w5b2VXHJcbiAgICAgICAgICAgICAgICBjb25zdCB1bmlxdWVOYW1lcyA9IG5ldyBTZXQoKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGZpbHRlcmVkSGlzdG9yeSA9IFtdO1xyXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IG5ld0hpc3RvcnkubGVuZ3RoIC0gMTsgaSA+PSAwICYmIHVuaXF1ZU5hbWVzLnNpemUgPCAzOyBpLS0pIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoIXVuaXF1ZU5hbWVzLmhhcyhuZXdIaXN0b3J5W2ldLm5hbWUpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHVuaXF1ZU5hbWVzLmFkZChuZXdIaXN0b3J5W2ldLm5hbWUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJlZEhpc3RvcnkudW5zaGlmdChuZXdIaXN0b3J5W2ldKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgICAgIG5hdmlnYXRpb246IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudDoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogcGFnZU5hbWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3OiB2aWV3LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zOiBwYXJhbXNcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgcHJldmlvdXM6IGN1cnJlbnQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGhpc3Rvcnk6IGZpbHRlcmVkSGlzdG9yeVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH0sXHJcblxyXG4gICAgLy8g6L+U5Zue5LiK5LiA6aG1XHJcbiAgICBnb0JhY2s6ICgpID0+IHtcclxuICAgICAgICBjb25zdCB7IG5hdmlnYXRpb24gfSA9IGdldCgpO1xyXG4gICAgICAgIGNvbnN0IHsgY3VycmVudCwgaGlzdG9yeSB9ID0gbmF2aWdhdGlvbjtcclxuICAgICAgICBjb25zdCBjdXJyZW50TmFtZSA9IGN1cnJlbnQubmFtZTtcclxuICAgICAgXHJcbiAgICAgICAgLy8g5LuO5ZCO5b6A5YmN5om+56ys5LiA5LiqbmFtZeS4jeWQjOeahOiusOW9lVxyXG4gICAgICAgIGZvciAobGV0IGkgPSBoaXN0b3J5Lmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XHJcbiAgICAgICAgICBpZiAoaGlzdG9yeVtpXS5uYW1lICE9PSBjdXJyZW50TmFtZSkge1xyXG4gICAgICAgICAgICBjb25zdCB0YXJnZXQgPSBoaXN0b3J5W2ldO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgLy8g6K6h566X5paw55qEaGlzdG9yeeaVsOe7hO+8iOenu+mZpOi3s+i9rOeCueS5i+WQjueahOaJgOacieiusOW9le+8iVxyXG4gICAgICAgICAgICBjb25zdCBuZXdIaXN0b3J5ID0gaGlzdG9yeS5zbGljZSgwLCBpKTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIC8vIOabtOaWsG5hdmlnYXRpb27nirbmgIFcclxuICAgICAgICAgICAgc2V0KHtcclxuICAgICAgICAgICAgICBuYXZpZ2F0aW9uOiB7XHJcbiAgICAgICAgICAgICAgICBjdXJyZW50OiB0YXJnZXQsXHJcbiAgICAgICAgICAgICAgICBwcmV2aW91czogbmV3SGlzdG9yeVtuZXdIaXN0b3J5Lmxlbmd0aCAtIDFdIHx8IG51bGwsXHJcbiAgICAgICAgICAgICAgICBoaXN0b3J5OiBuZXdIaXN0b3J5XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgXHJcbiAgICAgICAgLy8g5rKh5pyJ5om+5Yiw5YiZ5Zue6aaW6aG1XHJcbiAgICAgICAgc2V0KHtcclxuICAgICAgICAgIG5hdmlnYXRpb246IHtcclxuICAgICAgICAgICAgY3VycmVudDogeyBuYW1lOiAnaG9tZScsIHZpZXc6ICdtYWluJywgcGFyYW1zOiB7fSB9LFxyXG4gICAgICAgICAgICBwcmV2aW91czogY3VycmVudCxcclxuICAgICAgICAgICAgaGlzdG9yeTogWy4uLmhpc3RvcnksIGN1cnJlbnRdXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0sXHJcblxyXG4gICAgLy8g5pu05paw5b2T5YmN6KeG5Zu+XHJcbiAgICB1cGRhdGVDdXJyZW50VmlldzogKHZpZXcsIHBhcmFtcyA9IHt9KSA9PiB7XHJcbiAgICAgICAgY29uc3QgY3VycmVudCA9IGdldCgpLm5hdmlnYXRpb24uY3VycmVudDtcclxuICAgICAgICAvLyDmo4Dmn6XmlrDnirbmgIHmmK/lkKbkuI7lvZPliY3nirbmgIHnm7jlkIxcclxuICAgICAgICBjb25zdCBpc1NhbWVTdGF0ZSA9IFxyXG4gICAgICAgICAgICBjdXJyZW50LnZpZXcgPT09IHZpZXcgJiZcclxuICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkoY3VycmVudC5wYXJhbXMpID09PSBKU09OLnN0cmluZ2lmeShwYXJhbXMpO1xyXG5cclxuICAgICAgICAvLyDlj6rmnInnirbmgIHkuI3lkIzml7bmiY3mm7TmlrDljoblj7LorrDlvZXvvIzlubbkv53mjIHmnIDov5Ez5p2h5LiN5ZCM55qE6K6w5b2VXHJcbiAgICAgICAgc2V0KChzdGF0ZSkgPT4ge1xyXG4gICAgICAgICAgICBsZXQgbmV3SGlzdG9yeSA9IGlzU2FtZVN0YXRlID8gc3RhdGUubmF2aWdhdGlvbi5oaXN0b3J5IDogWy4uLnN0YXRlLm5hdmlnYXRpb24uaGlzdG9yeSwgY3VycmVudF07XHJcbiAgICAgICAgICAgIC8vIOS7juWQjuW+gOWJjeaJvuacgOi/kTPmnaHkuI3lkIxuYW1l55qE6K6w5b2VXHJcbiAgICAgICAgICAgIGNvbnN0IHVuaXF1ZU5hbWVzID0gbmV3IFNldCgpO1xyXG4gICAgICAgICAgICBjb25zdCBmaWx0ZXJlZEhpc3RvcnkgPSBbXTtcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IG5ld0hpc3RvcnkubGVuZ3RoIC0gMTsgaSA+PSAwICYmIHVuaXF1ZU5hbWVzLnNpemUgPCAzOyBpLS0pIHtcclxuICAgICAgICAgICAgICAgIGlmICghdW5pcXVlTmFtZXMuaGFzKG5ld0hpc3RvcnlbaV0ubmFtZSkpIHtcclxuICAgICAgICAgICAgICAgICAgICB1bmlxdWVOYW1lcy5hZGQobmV3SGlzdG9yeVtpXS5uYW1lKTtcclxuICAgICAgICAgICAgICAgICAgICBmaWx0ZXJlZEhpc3RvcnkudW5zaGlmdChuZXdIaXN0b3J5W2ldKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgbmF2aWdhdGlvbjoge1xyXG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnQ6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLi4uY3VycmVudCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmlldzogdmlldyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zOiB7IC4uLmN1cnJlbnQucGFyYW1zLCAuLi5wYXJhbXMgfVxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgcHJldmlvdXM6IGN1cnJlbnQsXHJcbiAgICAgICAgICAgICAgICAgICAgaGlzdG9yeTogZmlsdGVyZWRIaXN0b3J5XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgfSk7XHJcbiAgICB9LFxyXG5cclxuICAgIC8vIOmhueebruaTjeS9nOaWueazlVxyXG4gICAgYWRkUHJvamVjdDogKHByb2plY3QpID0+IHtcclxuICAgICAgICBzZXQoKHN0YXRlKSA9PiAoe1xyXG4gICAgICAgICAgICBwcm9qZWN0czogWy4uLnN0YXRlLnByb2plY3RzLCB7XHJcbiAgICAgICAgICAgICAgICBpZDogdXVpZHY0KCksXHJcbiAgICAgICAgICAgICAgICAuLi5wcm9qZWN0XHJcbiAgICAgICAgICAgIH1dXHJcbiAgICAgICAgfSkpO1xyXG4gICAgfSxcclxuICAgIC8v5Yig6Zmk6aG555uuXHJcbiAgICBkZWxldGVQcm9qZWN0OiAocHJvamVjdEluZGV4KSA9PiB7XHJcbiAgICAgICAgaWYgKHByb2plY3RJbmRleCA9PT0gMCkge1xyXG4gICAgICAgICAgICBjb25zb2xlLndhcm4oJ+m7mOiupOmhueebruS4jeiDveWIoOmZpCcpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHNldCgoc3RhdGUpID0+ICh7XHJcbiAgICAgICAgICAgIHByb2plY3RzOiBzdGF0ZS5wcm9qZWN0cy5maWx0ZXIoKF8sIGluZGV4KSA9PiBpbmRleCAhPT0gcHJvamVjdEluZGV4KVxyXG4gICAgICAgIH0pKTtcclxuICAgIH0sXHJcbiAgICAvL+mHjeWRveWQjemhueebrlxyXG4gICAgdXBkYXRlUHJvamVjdDogKHByb2plY3RJbmRleCwgdXBkYXRlcykgPT4ge1xyXG4gICAgICAgIHNldCgoc3RhdGUpID0+ICh7XHJcbiAgICAgICAgICAgIHByb2plY3RzOiBzdGF0ZS5wcm9qZWN0cy5tYXAoKHByb2plY3QsIGluZGV4KSA9PiBcclxuICAgICAgICAgICAgICAgIGluZGV4ID09PSBwcm9qZWN0SW5kZXggPyB7IC4uLnByb2plY3QsIC4uLnVwZGF0ZXMgfSA6IHByb2plY3RcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgIH0pKTtcclxuICAgIH0sXHJcbiAgICAvL+a3u+WKoOaTjeS9nOWRmFxyXG4gICAgYWRkT3BlcmF0b3I6IChvcGVyYXRvcikgPT4ge1xyXG4gICAgICAgIHNldCgoc3RhdGUpID0+ICh7XHJcbiAgICAgICAgICAgIHByb2plY3RzOiBzdGF0ZS5wcm9qZWN0cy5tYXAocHJvamVjdCA9PiAoe1xyXG4gICAgICAgICAgICAgICAgLi4ucHJvamVjdCxcclxuICAgICAgICAgICAgICAgIG9wZXJhdG9yczogWy4uLnByb2plY3Qub3BlcmF0b3JzLCBvcGVyYXRvcl1cclxuICAgICAgICAgICAgfSkpXHJcbiAgICAgICAgfSkpO1xyXG4gICAgfSxcclxuICAgIC8vIOWfuuWHhuOAgeWPgueFp+abtOaWsOaWueazlVxyXG4gICAgdXBkYXRhUmVmOiAocmVmVHlwZSwgbmV3U3RhdGUpID0+IHtcclxuICAgICAgICBzZXQoKHN0YXRlKSA9PiAoe1xyXG4gICAgICAgICAgICByZWY6IHtcclxuICAgICAgICAgICAgICAgIC4uLnN0YXRlLnJlZixcclxuICAgICAgICAgICAgICAgIFtyZWZUeXBlXToge1xyXG4gICAgICAgICAgICAgICAgICAgIC4uLnN0YXRlLnJlZltyZWZUeXBlXSxcclxuICAgICAgICAgICAgICAgICAgICAuLi5uZXdTdGF0ZVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSkpO1xyXG4gICAgfSxcclxuICAgIC8vIOmHjee9ruWIsOm7mOiupOeKtuaAgVxyXG4gICAgcmVzZXRUb0RlZmF1bHRTdGF0ZTogKCkgPT4ge1xyXG4gICAgICAgIHNldCgoKSA9PiAoe1xyXG4gICAgICAgICAgICAuLi5kZWZhdWx0U3RhdGUsXHJcbiAgICAgICAgICAgIHByb2plY3RzOiBbZGVmYXVsdFByb2plY3RdXHJcbiAgICAgICAgfSkpO1xyXG4gICAgfSxcclxuXHJcbiAgICAvLyDmm7TmlrDpobnnm67mlbDmja5cclxuICAgIHVwZGF0ZVByb2plY3RzOiAobmV3UHJvamVjdHMpID0+IHtcclxuICAgICAgICBzZXQoKCkgPT4gKHtcclxuICAgICAgICAgICAgcHJvamVjdHM6IG5ld1Byb2plY3RzXHJcbiAgICAgICAgfSkpO1xyXG4gICAgfSxcclxuICAgIC8vIOabtOaWsOmhueebruaVsOaNrlxyXG4gICAgdXBkYXRlc2VsZWN0ZWRJbmRleGVzOiAobmV3c2VsZWN0ZWRJbmRleGVzKSA9PiB7XHJcbiAgICAgICAgc2V0KCgpID0+ICh7XHJcbiAgICAgICAgICAgIHNlbGVjdGVkSW5kZXhlczogbmV3c2VsZWN0ZWRJbmRleGVzXHJcbiAgICAgICAgfSkpO1xyXG4gICAgfSxcclxuICAgIC8vIOaPkOekuuahhuaWueazlVxyXG4gICAgc2V0U2hvd1RvYXN0OiAoc2hvdykgPT4gc2V0KHsgc2hvd1RvYXN0OiBzaG93IH0pLFxyXG4gICAgc2V0VG9hc3RNZXNzYWdlOiAobWVzc2FnZSkgPT4gc2V0KHsgdG9hc3RNZXNzYWdlOiBtZXNzYWdlIH0pLFxyXG4gICAgXHJcbn0pKSk7XHJcblxyXG5leHBvcnQgZGVmYXVsdCB1c2VEaXNwbGF5U3RvcmU7Il0sIm5hbWVzIjpbImNyZWF0ZSIsImRldnRvb2xzIiwidjQiLCJ1dWlkdjQiLCJkZWZhdWx0UHJvamVjdCIsImlkIiwibmFtZSIsInRlc3RSZXN1bHRzIiwidGVzdFJlc3VsdHNDb3VudCIsInRlc3RDb25maWdzIiwibW9kdWxlVHlwZSIsIm1vZHVsZWxhYmxlIiwicGFyYW1zIiwibGltaXRWYWx1ZSIsImNhYmxlVHlwZSIsIndpcmVPcmRlciIsInJlZkp1bXBlciIsInNwbGljZUNvdW50IiwiY29ubmVjdG9yQ291bnQiLCJjYWJsZUlkcyIsIm9wZXJhdG9ycyIsImRlZmF1bHRTdGF0ZSIsInByb2plY3RzIiwic2VsZWN0ZWRJbmRleGVzIiwicHJvamVjdEluZGV4IiwidGVzdENvbmZpZ0luZGV4Iiwib3BlcmF0b3JJbmRleCIsImNhYmxlSWRJbmRleCIsImNhYmxlSWQySW5kZXgiLCJuYXZpZ2F0aW9uIiwiY3VycmVudCIsInZpZXciLCJwcmV2aW91cyIsImhpc3RvcnkiLCJyZWYiLCJjb3BwZXIiLCJzdGF0dXMiLCJjZnAiLCJjb25uZWN0U3RhdHVzIiwib2ZwIiwiaGFzUGxheWVkU291bmQiLCJzaG93VG9hc3QiLCJ0b2FzdE1lc3NhZ2UiLCJ1c2VEaXNwbGF5U3RvcmUiLCJzZXQiLCJnZXQiLCJnZXRDdXJyZW50UHJvamVjdCIsInN0YXRlIiwiZ2V0Q3VycmVudFRlc3RDb25maWciLCJwcm9qZWN0IiwiZ2V0Q3VycmVudE9wZXJhdG9yIiwiZ2V0Q3VycmVudENhYmxlSWQiLCJnZXRDdXJyZW50Q2FibGVJZDIiLCJzZXRTZWxlY3RlZEluZGV4ZXMiLCJ1cGRhdGVzIiwibmF2aWdhdGVUbyIsInBhZ2VOYW1lIiwiaXNTYW1lU3RhdGUiLCJKU09OIiwic3RyaW5naWZ5IiwibmV3SGlzdG9yeSIsInVuaXF1ZU5hbWVzIiwiU2V0IiwiZmlsdGVyZWRIaXN0b3J5IiwiaSIsImxlbmd0aCIsInNpemUiLCJoYXMiLCJhZGQiLCJ1bnNoaWZ0IiwiZ29CYWNrIiwiY3VycmVudE5hbWUiLCJ0YXJnZXQiLCJzbGljZSIsInVwZGF0ZUN1cnJlbnRWaWV3IiwiYWRkUHJvamVjdCIsImRlbGV0ZVByb2plY3QiLCJjb25zb2xlIiwid2FybiIsImZpbHRlciIsIl8iLCJpbmRleCIsInVwZGF0ZVByb2plY3QiLCJtYXAiLCJhZGRPcGVyYXRvciIsIm9wZXJhdG9yIiwidXBkYXRhUmVmIiwicmVmVHlwZSIsIm5ld1N0YXRlIiwicmVzZXRUb0RlZmF1bHRTdGF0ZSIsInVwZGF0ZVByb2plY3RzIiwibmV3UHJvamVjdHMiLCJ1cGRhdGVzZWxlY3RlZEluZGV4ZXMiLCJuZXdzZWxlY3RlZEluZGV4ZXMiLCJzZXRTaG93VG9hc3QiLCJzaG93Iiwic2V0VG9hc3RNZXNzYWdlIiwibWVzc2FnZSJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(pages-dir-node)/./src/store/displayStore.js\n"); /***/ }), /***/ "(pages-dir-node)/./src/styles/globals.css": /*!********************************!*\ !*** ./src/styles/globals.css ***! \********************************/ /***/ (() => { /***/ }), /***/ "(pages-dir-node)/./src/utils/asset.js": /*!****************************!*\ !*** ./src/utils/asset.js ***! \****************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; eval("__webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ getAssetUrl: () => (/* binding */ getAssetUrl)\n/* harmony export */ });\n/* harmony import */ var _store_deviceStore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @/store/deviceStore */ \"(pages-dir-node)/./src/store/deviceStore.js\");\nvar __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_store_deviceStore__WEBPACK_IMPORTED_MODULE_0__]);\n_store_deviceStore__WEBPACK_IMPORTED_MODULE_0__ = (__webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__)[0];\n\nfunction getAssetUrl(relativePath) {\n const { estmodel } = _store_deviceStore__WEBPACK_IMPORTED_MODULE_0__[\"default\"].getState();\n const cleanPath = relativePath?.startsWith('/') ? relativePath : `/${relativePath}`;\n if (!estmodel) return cleanPath;\n if (cleanPath.startsWith(`/${estmodel}/`)) return cleanPath;\n return `/${estmodel}${cleanPath}`;\n}\n\n__webpack_async_result__();\n} catch(e) { __webpack_async_result__(e); } });//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHBhZ2VzLWRpci1ub2RlKS8uL3NyYy91dGlscy9hc3NldC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFpRDtBQUUxQyxTQUFTQyxZQUFZQyxZQUFZO0lBQ3BDLE1BQU0sRUFBRUMsUUFBUSxFQUFFLEdBQUdILG1FQUF1QjtJQUM1QyxNQUFNSyxZQUFZSCxjQUFjSSxXQUFXLE9BQU9KLGVBQWUsQ0FBQyxDQUFDLEVBQUVBLGNBQWM7SUFFbkYsSUFBSSxDQUFDQyxVQUFVLE9BQU9FO0lBQ3RCLElBQUlBLFVBQVVDLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRUgsU0FBUyxDQUFDLENBQUMsR0FBRyxPQUFPRTtJQUVsRCxPQUFPLENBQUMsQ0FBQyxFQUFFRixXQUFXRSxXQUFXO0FBQ3JDIiwic291cmNlcyI6WyIvb3B0L2Rldi9lc3QtZHN4L3NyYy91dGlscy9hc3NldC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdXNlRGV2aWNlU3RvcmUgZnJvbSAnQC9zdG9yZS9kZXZpY2VTdG9yZSc7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZ2V0QXNzZXRVcmwocmVsYXRpdmVQYXRoKSB7XHJcbiAgICBjb25zdCB7IGVzdG1vZGVsIH0gPSB1c2VEZXZpY2VTdG9yZS5nZXRTdGF0ZSgpO1xyXG4gICAgY29uc3QgY2xlYW5QYXRoID0gcmVsYXRpdmVQYXRoPy5zdGFydHNXaXRoKCcvJykgPyByZWxhdGl2ZVBhdGggOiBgLyR7cmVsYXRpdmVQYXRofWA7XHJcblxyXG4gICAgaWYgKCFlc3Rtb2RlbCkgcmV0dXJuIGNsZWFuUGF0aDtcclxuICAgIGlmIChjbGVhblBhdGguc3RhcnRzV2l0aChgLyR7ZXN0bW9kZWx9L2ApKSByZXR1cm4gY2xlYW5QYXRoO1xyXG5cclxuICAgIHJldHVybiBgLyR7ZXN0bW9kZWx9JHtjbGVhblBhdGh9YDtcclxufSJdLCJuYW1lcyI6WyJ1c2VEZXZpY2VTdG9yZSIsImdldEFzc2V0VXJsIiwicmVsYXRpdmVQYXRoIiwiZXN0bW9kZWwiLCJnZXRTdGF0ZSIsImNsZWFuUGF0aCIsInN0YXJ0c1dpdGgiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(pages-dir-node)/./src/utils/asset.js\n"); /***/ }), /***/ "(pages-dir-node)/__barrel_optimize__?names=Tab!=!./node_modules/@headlessui/react/dist/headlessui.esm.js": /*!***********************************************************************************************!*\ !*** __barrel_optimize__?names=Tab!=!./node_modules/@headlessui/react/dist/headlessui.esm.js ***! \***********************************************************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try { __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ Tab: () => (/* reexport safe */ _opt_dev_est_dsx_node_modules_headlessui_react_dist_components_tabs_tabs_js__WEBPACK_IMPORTED_MODULE_0__.Tab) /* harmony export */ }); /* harmony import */ var _opt_dev_est_dsx_node_modules_headlessui_react_dist_components_tabs_tabs_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/@headlessui/react/dist/components/tabs/tabs.js */ "(pages-dir-node)/./node_modules/@headlessui/react/dist/components/tabs/tabs.js"); var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_opt_dev_est_dsx_node_modules_headlessui_react_dist_components_tabs_tabs_js__WEBPACK_IMPORTED_MODULE_0__]); _opt_dev_est_dsx_node_modules_headlessui_react_dist_components_tabs_tabs_js__WEBPACK_IMPORTED_MODULE_0__ = (__webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__)[0]; __webpack_async_result__(); } catch(e) { __webpack_async_result__(e); } }); /***/ }), /***/ "@fingerprintjs/fingerprintjs": /*!***********************************************!*\ !*** external "@fingerprintjs/fingerprintjs" ***! \***********************************************/ /***/ ((module) => { "use strict"; module.exports = require("@fingerprintjs/fingerprintjs"); /***/ }), /***/ "@react-aria/focus": /*!************************************!*\ !*** external "@react-aria/focus" ***! \************************************/ /***/ ((module) => { "use strict"; module.exports = import("@react-aria/focus");; /***/ }), /***/ "@react-aria/interactions": /*!*******************************************!*\ !*** external "@react-aria/interactions" ***! \*******************************************/ /***/ ((module) => { "use strict"; module.exports = import("@react-aria/interactions");; /***/ }), /***/ "echarts": /*!**************************!*\ !*** external "echarts" ***! \**************************/ /***/ ((module) => { "use strict"; module.exports = import("echarts");; /***/ }), /***/ "echarts-for-react": /*!************************************!*\ !*** external "echarts-for-react" ***! \************************************/ /***/ ((module) => { "use strict"; module.exports = require("echarts-for-react"); /***/ }), /***/ "echarts/charts": /*!*********************************!*\ !*** external "echarts/charts" ***! \*********************************/ /***/ ((module) => { "use strict"; module.exports = import("echarts/charts");; /***/ }), /***/ "echarts/components": /*!*************************************!*\ !*** external "echarts/components" ***! \*************************************/ /***/ ((module) => { "use strict"; module.exports = import("echarts/components");; /***/ }), /***/ "echarts/core": /*!*******************************!*\ !*** external "echarts/core" ***! \*******************************/ /***/ ((module) => { "use strict"; module.exports = import("echarts/core");; /***/ }), /***/ "echarts/features": /*!***********************************!*\ !*** external "echarts/features" ***! \***********************************/ /***/ ((module) => { "use strict"; module.exports = import("echarts/features");; /***/ }), /***/ "echarts/renderers": /*!************************************!*\ !*** external "echarts/renderers" ***! \************************************/ /***/ ((module) => { "use strict"; module.exports = import("echarts/renderers");; /***/ }), /***/ "jsplumb": /*!**************************!*\ !*** external "jsplumb" ***! \**************************/ /***/ ((module) => { "use strict"; module.exports = require("jsplumb"); /***/ }), /***/ "next/dist/compiled/next-server/pages.runtime.dev.js": /*!**********************************************************************!*\ !*** external "next/dist/compiled/next-server/pages.runtime.dev.js" ***! \**********************************************************************/ /***/ ((module) => { "use strict"; module.exports = require("next/dist/compiled/next-server/pages.runtime.dev.js"); /***/ }), /***/ "next/head": /*!****************************!*\ !*** external "next/head" ***! \****************************/ /***/ ((module) => { "use strict"; module.exports = require("next/head"); /***/ }), /***/ "path": /*!***********************!*\ !*** external "path" ***! \***********************/ /***/ ((module) => { "use strict"; module.exports = require("path"); /***/ }), /***/ "react": /*!************************!*\ !*** external "react" ***! \************************/ /***/ ((module) => { "use strict"; module.exports = require("react"); /***/ }), /***/ "react-dom": /*!****************************!*\ !*** external "react-dom" ***! \****************************/ /***/ ((module) => { "use strict"; module.exports = require("react-dom"); /***/ }), /***/ "react/jsx-dev-runtime": /*!****************************************!*\ !*** external "react/jsx-dev-runtime" ***! \****************************************/ /***/ ((module) => { "use strict"; module.exports = require("react/jsx-dev-runtime"); /***/ }), /***/ "react/jsx-runtime": /*!************************************!*\ !*** external "react/jsx-runtime" ***! \************************************/ /***/ ((module) => { "use strict"; module.exports = require("react/jsx-runtime"); /***/ }), /***/ "uuid": /*!***********************!*\ !*** external "uuid" ***! \***********************/ /***/ ((module) => { "use strict"; module.exports = import("uuid");; /***/ }), /***/ "zustand": /*!**************************!*\ !*** external "zustand" ***! \**************************/ /***/ ((module) => { "use strict"; module.exports = import("zustand");; /***/ }), /***/ "zustand/middleware": /*!*************************************!*\ !*** external "zustand/middleware" ***! \*************************************/ /***/ ((module) => { "use strict"; module.exports = import("zustand/middleware");; /***/ }), /***/ "zustand/shallow": /*!**********************************!*\ !*** external "zustand/shallow" ***! \**********************************/ /***/ ((module) => { "use strict"; module.exports = import("zustand/shallow");; /***/ }) }; ; // 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/@headlessui"], () => (__webpack_exec__("(pages-dir-node)/./node_modules/next/dist/build/webpack/loaders/next-route-loader/index.js?kind=PAGES&page=%2F&preferredRegion=&absolutePagePath=.%2Fsrc%2Fpages%2Findex.js&absoluteAppPath=private-next-pages%2F_app&absoluteDocumentPath=private-next-pages%2F_document&middlewareConfigBase64=e30%3D!"))); module.exports = __webpack_exports__; })();