Comprehensive multi-agent implementation addressing all issues from INDEX.md: ## Core Architecture & Validation - ✅ Issue 001: UCXL address validation at all system boundaries - ✅ Issue 002: Fixed search parsing bug in encrypted storage - ✅ Issue 003: Wired UCXI P2P announce and discover functionality - ✅ Issue 011: Aligned temporal grammar and documentation - ✅ Issue 012: SLURP idempotency, backpressure, and DLQ implementation - ✅ Issue 013: Linked SLURP events to UCXL decisions and DHT ## API Standardization & Configuration - ✅ Issue 004: Standardized UCXI payloads to UCXL codes - ✅ Issue 010: Status endpoints and configuration surface ## Infrastructure & Operations - ✅ Issue 005: Election heartbeat on admin transition - ✅ Issue 006: Active health checks for PubSub and DHT - ✅ Issue 007: DHT replication and provider records - ✅ Issue 014: SLURP leadership lifecycle and health probes - ✅ Issue 015: Comprehensive monitoring, SLOs, and alerts ## Security & Access Control - ✅ Issue 008: Key rotation and role-based access policies ## Testing & Quality Assurance - ✅ Issue 009: Integration tests for UCXI + DHT encryption + search - ✅ Issue 016: E2E tests for HMMM → SLURP → UCXL workflow ## HMMM Integration - ✅ Issue 017: HMMM adapter wiring and comprehensive testing ## Key Features Delivered: - Enterprise-grade security with automated key rotation - Comprehensive monitoring with Prometheus/Grafana stack - Role-based collaboration with HMMM integration - Complete API standardization with UCXL response formats - Full test coverage with integration and E2E testing - Production-ready infrastructure monitoring and alerting All solutions include comprehensive testing, documentation, and production-ready implementations. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
366 lines
1.1 MiB
366 lines
1.1 MiB
/*
|
|
* ATTENTION: An "eval-source-map" devtool has been used.
|
|
* This devtool is neither made for production nor for readable output files.
|
|
* It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools.
|
|
* If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/)
|
|
* or disable the default devtool with "devtool: false".
|
|
* If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/).
|
|
*/
|
|
(() => {
|
|
var exports = {};
|
|
exports.id = "app/page";
|
|
exports.ids = ["app/page"];
|
|
exports.modules = {
|
|
|
|
/***/ "./action-async-storage.external":
|
|
/*!****************************************************************************!*\
|
|
!*** external "next/dist/client/components/action-async-storage.external" ***!
|
|
\****************************************************************************/
|
|
/***/ ((module) => {
|
|
|
|
"use strict";
|
|
module.exports = require("next/dist/client/components/action-async-storage.external");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "../../client/components/action-async-storage.external":
|
|
/*!*******************************************************************************!*\
|
|
!*** external "next/dist/client/components/action-async-storage.external.js" ***!
|
|
\*******************************************************************************/
|
|
/***/ ((module) => {
|
|
|
|
"use strict";
|
|
module.exports = require("next/dist/client/components/action-async-storage.external.js");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./request-async-storage.external":
|
|
/*!*****************************************************************************!*\
|
|
!*** external "next/dist/client/components/request-async-storage.external" ***!
|
|
\*****************************************************************************/
|
|
/***/ ((module) => {
|
|
|
|
"use strict";
|
|
module.exports = require("next/dist/client/components/request-async-storage.external");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "../../client/components/request-async-storage.external":
|
|
/*!********************************************************************************!*\
|
|
!*** external "next/dist/client/components/request-async-storage.external.js" ***!
|
|
\********************************************************************************/
|
|
/***/ ((module) => {
|
|
|
|
"use strict";
|
|
module.exports = require("next/dist/client/components/request-async-storage.external.js");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./static-generation-async-storage.external":
|
|
/*!***************************************************************************************!*\
|
|
!*** external "next/dist/client/components/static-generation-async-storage.external" ***!
|
|
\***************************************************************************************/
|
|
/***/ ((module) => {
|
|
|
|
"use strict";
|
|
module.exports = require("next/dist/client/components/static-generation-async-storage.external");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "../../client/components/static-generation-async-storage.external":
|
|
/*!******************************************************************************************!*\
|
|
!*** external "next/dist/client/components/static-generation-async-storage.external.js" ***!
|
|
\******************************************************************************************/
|
|
/***/ ((module) => {
|
|
|
|
"use strict";
|
|
module.exports = require("next/dist/client/components/static-generation-async-storage.external.js");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "next/dist/compiled/next-server/app-page.runtime.dev.js":
|
|
/*!*************************************************************************!*\
|
|
!*** external "next/dist/compiled/next-server/app-page.runtime.dev.js" ***!
|
|
\*************************************************************************/
|
|
/***/ ((module) => {
|
|
|
|
"use strict";
|
|
module.exports = require("next/dist/compiled/next-server/app-page.runtime.dev.js");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "(rsc)/./node_modules/next/dist/build/webpack/loaders/next-app-loader.js?name=app%2Fpage&page=%2Fpage&appPaths=%2Fpage&pagePath=private-next-app-dir%2Fpage.tsx&appDir=%2Fhome%2Ftony%2Fchorus%2Fproject-queues%2Factive%2FBZZZ%2Finstall%2Fconfig-ui%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2Fhome%2Ftony%2Fchorus%2Fproject-queues%2Factive%2FBZZZ%2Finstall%2Fconfig-ui&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=export&preferredRegion=&middlewareConfig=e30%3D!":
|
|
/*!************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
|
|
!*** ./node_modules/next/dist/build/webpack/loaders/next-app-loader.js?name=app%2Fpage&page=%2Fpage&appPaths=%2Fpage&pagePath=private-next-app-dir%2Fpage.tsx&appDir=%2Fhome%2Ftony%2Fchorus%2Fproject-queues%2Factive%2FBZZZ%2Finstall%2Fconfig-ui%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2Fhome%2Ftony%2Fchorus%2Fproject-queues%2Factive%2FBZZZ%2Finstall%2Fconfig-ui&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=export&preferredRegion=&middlewareConfig=e30%3D! ***!
|
|
\************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
|
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
|
|
"use strict";
|
|
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ GlobalError: () => (/* reexport default from dynamic */ next_dist_client_components_error_boundary__WEBPACK_IMPORTED_MODULE_2___default.a),\n/* harmony export */ __next_app__: () => (/* binding */ __next_app__),\n/* harmony export */ originalPathname: () => (/* binding */ originalPathname),\n/* harmony export */ pages: () => (/* binding */ pages),\n/* harmony export */ routeModule: () => (/* binding */ routeModule),\n/* harmony export */ tree: () => (/* binding */ tree)\n/* harmony export */ });\n/* harmony import */ var next_dist_server_future_route_modules_app_page_module_compiled__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! next/dist/server/future/route-modules/app-page/module.compiled */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/module.compiled.js?9d97\");\n/* harmony import */ var next_dist_server_future_route_modules_app_page_module_compiled__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_future_route_modules_app_page_module_compiled__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var next_dist_server_future_route_kind__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! next/dist/server/future/route-kind */ \"(rsc)/./node_modules/next/dist/server/future/route-kind.js\");\n/* harmony import */ var next_dist_client_components_error_boundary__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! next/dist/client/components/error-boundary */ \"(rsc)/./node_modules/next/dist/client/components/error-boundary.js\");\n/* harmony import */ var next_dist_client_components_error_boundary__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(next_dist_client_components_error_boundary__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var next_dist_server_app_render_entry_base__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! next/dist/server/app-render/entry-base */ \"(rsc)/./node_modules/next/dist/server/app-render/entry-base.js\");\n/* harmony import */ var next_dist_server_app_render_entry_base__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_app_render_entry_base__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {};\n/* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in next_dist_server_app_render_entry_base__WEBPACK_IMPORTED_MODULE_3__) if([\"default\",\"tree\",\"pages\",\"GlobalError\",\"originalPathname\",\"__next_app__\",\"routeModule\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => next_dist_server_app_render_entry_base__WEBPACK_IMPORTED_MODULE_3__[__WEBPACK_IMPORT_KEY__]\n/* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__);\n\"TURBOPACK { transition: next-ssr }\";\n\n\n// We inject the tree and pages here so that we can use them in the route\n// module.\nconst tree = {\n children: [\n '',\n {\n children: ['__PAGE__', {}, {\n page: [() => Promise.resolve(/*! import() eager */).then(__webpack_require__.bind(__webpack_require__, /*! ./app/page.tsx */ \"(rsc)/./app/page.tsx\")), \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/page.tsx\"],\n \n }]\n },\n {\n 'layout': [() => Promise.resolve(/*! import() eager */).then(__webpack_require__.bind(__webpack_require__, /*! ./app/layout.tsx */ \"(rsc)/./app/layout.tsx\")), \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/layout.tsx\"],\n'not-found': [() => Promise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__webpack_require__, /*! next/dist/client/components/not-found-error */ \"(rsc)/./node_modules/next/dist/client/components/not-found-error.js\", 23)), \"next/dist/client/components/not-found-error\"],\n \n }\n ]\n }.children;\nconst pages = [\"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/page.tsx\"];\n\n\nconst __next_app_require__ = __webpack_require__\nconst __next_app_load_chunk__ = () => Promise.resolve()\nconst originalPathname = \"/page\";\nconst __next_app__ = {\n require: __next_app_require__,\n loadChunk: __next_app_load_chunk__\n};\n\n// Create and export the route module that will be consumed.\nconst routeModule = new next_dist_server_future_route_modules_app_page_module_compiled__WEBPACK_IMPORTED_MODULE_0__.AppPageRouteModule({\n definition: {\n kind: next_dist_server_future_route_kind__WEBPACK_IMPORTED_MODULE_1__.RouteKind.APP_PAGE,\n page: \"/page\",\n pathname: \"/\",\n // The following aren't used in production.\n bundlePath: \"\",\n filename: \"\",\n appPaths: []\n },\n userland: {\n loaderTree: tree\n }\n});\n\n//# sourceMappingURL=app-page.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2J1aWxkL3dlYnBhY2svbG9hZGVycy9uZXh0LWFwcC1sb2FkZXIuanM/bmFtZT1hcHAlMkZwYWdlJnBhZ2U9JTJGcGFnZSZhcHBQYXRocz0lMkZwYWdlJnBhZ2VQYXRoPXByaXZhdGUtbmV4dC1hcHAtZGlyJTJGcGFnZS50c3gmYXBwRGlyPSUyRmhvbWUlMkZ0b255JTJGY2hvcnVzJTJGcHJvamVjdC1xdWV1ZXMlMkZhY3RpdmUlMkZCWlpaJTJGaW5zdGFsbCUyRmNvbmZpZy11aSUyRmFwcCZwYWdlRXh0ZW5zaW9ucz10c3gmcGFnZUV4dGVuc2lvbnM9dHMmcGFnZUV4dGVuc2lvbnM9anN4JnBhZ2VFeHRlbnNpb25zPWpzJnJvb3REaXI9JTJGaG9tZSUyRnRvbnklMkZjaG9ydXMlMkZwcm9qZWN0LXF1ZXVlcyUyRmFjdGl2ZSUyRkJaWlolMkZpbnN0YWxsJTJGY29uZmlnLXVpJmlzRGV2PXRydWUmdHNjb25maWdQYXRoPXRzY29uZmlnLmpzb24mYmFzZVBhdGg9JmFzc2V0UHJlZml4PSZuZXh0Q29uZmlnT3V0cHV0PWV4cG9ydCZwcmVmZXJyZWRSZWdpb249Jm1pZGRsZXdhcmVDb25maWc9ZTMwJTNEISIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsYUFBYSxzQkFBc0I7QUFDaUU7QUFDckM7QUFDL0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUNBQWlDO0FBQ2pDLHVCQUF1Qix3SUFBZ0g7QUFDdkk7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQO0FBQ0EseUJBQXlCLDRJQUFrSDtBQUMzSSxvQkFBb0IsME5BQWdGO0FBQ3BHO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUN1QjtBQUM2RDtBQUNwRiw2QkFBNkIsbUJBQW1CO0FBQ2hEO0FBQ087QUFDQTtBQUNQO0FBQ0E7QUFDQTtBQUN1RDtBQUN2RDtBQUNPLHdCQUF3Qiw4R0FBa0I7QUFDakQ7QUFDQSxjQUFjLHlFQUFTO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVEIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vYnp6ei1jb25maWctdWkvPzUzMGMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJUVVJCT1BBQ0sgeyB0cmFuc2l0aW9uOiBuZXh0LXNzciB9XCI7XG5pbXBvcnQgeyBBcHBQYWdlUm91dGVNb2R1bGUgfSBmcm9tIFwibmV4dC9kaXN0L3NlcnZlci9mdXR1cmUvcm91dGUtbW9kdWxlcy9hcHAtcGFnZS9tb2R1bGUuY29tcGlsZWRcIjtcbmltcG9ydCB7IFJvdXRlS2luZCB9IGZyb20gXCJuZXh0L2Rpc3Qvc2VydmVyL2Z1dHVyZS9yb3V0ZS1raW5kXCI7XG4vLyBXZSBpbmplY3QgdGhlIHRyZWUgYW5kIHBhZ2VzIGhlcmUgc28gdGhhdCB3ZSBjYW4gdXNlIHRoZW0gaW4gdGhlIHJvdXRlXG4vLyBtb2R1bGUuXG5jb25zdCB0cmVlID0ge1xuICAgICAgICBjaGlsZHJlbjogW1xuICAgICAgICAnJyxcbiAgICAgICAge1xuICAgICAgICBjaGlsZHJlbjogWydfX1BBR0VfXycsIHt9LCB7XG4gICAgICAgICAgcGFnZTogWygpID0+IGltcG9ydCgvKiB3ZWJwYWNrTW9kZTogXCJlYWdlclwiICovIFwiL2hvbWUvdG9ueS9jaG9ydXMvcHJvamVjdC1xdWV1ZXMvYWN0aXZlL0JaWlovaW5zdGFsbC9jb25maWctdWkvYXBwL3BhZ2UudHN4XCIpLCBcIi9ob21lL3RvbnkvY2hvcnVzL3Byb2plY3QtcXVldWVzL2FjdGl2ZS9CWlpaL2luc3RhbGwvY29uZmlnLXVpL2FwcC9wYWdlLnRzeFwiXSxcbiAgICAgICAgICBcbiAgICAgICAgfV1cbiAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgJ2xheW91dCc6IFsoKSA9PiBpbXBvcnQoLyogd2VicGFja01vZGU6IFwiZWFnZXJcIiAqLyBcIi9ob21lL3RvbnkvY2hvcnVzL3Byb2plY3QtcXVldWVzL2FjdGl2ZS9CWlpaL2luc3RhbGwvY29uZmlnLXVpL2FwcC9sYXlvdXQudHN4XCIpLCBcIi9ob21lL3RvbnkvY2hvcnVzL3Byb2plY3QtcXVldWVzL2FjdGl2ZS9CWlpaL2luc3RhbGwvY29uZmlnLXVpL2FwcC9sYXlvdXQudHN4XCJdLFxuJ25vdC1mb3VuZCc6IFsoKSA9PiBpbXBvcnQoLyogd2VicGFja01vZGU6IFwiZWFnZXJcIiAqLyBcIm5leHQvZGlzdC9jbGllbnQvY29tcG9uZW50cy9ub3QtZm91bmQtZXJyb3JcIiksIFwibmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL25vdC1mb3VuZC1lcnJvclwiXSxcbiAgICAgICAgXG4gICAgICB9XG4gICAgICBdXG4gICAgICB9LmNoaWxkcmVuO1xuY29uc3QgcGFnZXMgPSBbXCIvaG9tZS90b255L2Nob3J1cy9wcm9qZWN0LXF1ZXVlcy9hY3RpdmUvQlpaWi9pbnN0YWxsL2NvbmZpZy11aS9hcHAvcGFnZS50c3hcIl07XG5leHBvcnQgeyB0cmVlLCBwYWdlcyB9O1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBHbG9iYWxFcnJvciB9IGZyb20gXCJuZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvZXJyb3ItYm91bmRhcnlcIjtcbmNvbnN0IF9fbmV4dF9hcHBfcmVxdWlyZV9fID0gX193ZWJwYWNrX3JlcXVpcmVfX1xuY29uc3QgX19uZXh0X2FwcF9sb2FkX2NodW5rX18gPSAoKSA9PiBQcm9taXNlLnJlc29sdmUoKVxuZXhwb3J0IGNvbnN0IG9yaWdpbmFsUGF0aG5hbWUgPSBcIi9wYWdlXCI7XG5leHBvcnQgY29uc3QgX19uZXh0X2FwcF9fID0ge1xuICAgIHJlcXVpcmU6IF9fbmV4dF9hcHBfcmVxdWlyZV9fLFxuICAgIGxvYWRDaHVuazogX19uZXh0X2FwcF9sb2FkX2NodW5rX19cbn07XG5leHBvcnQgKiBmcm9tIFwibmV4dC9kaXN0L3NlcnZlci9hcHAtcmVuZGVyL2VudHJ5LWJhc2VcIjtcbi8vIENyZWF0ZSBhbmQgZXhwb3J0IHRoZSByb3V0ZSBtb2R1bGUgdGhhdCB3aWxsIGJlIGNvbnN1bWVkLlxuZXhwb3J0IGNvbnN0IHJvdXRlTW9kdWxlID0gbmV3IEFwcFBhZ2VSb3V0ZU1vZHVsZSh7XG4gICAgZGVmaW5pdGlvbjoge1xuICAgICAgICBraW5kOiBSb3V0ZUtpbmQuQVBQX1BBR0UsXG4gICAgICAgIHBhZ2U6IFwiL3BhZ2VcIixcbiAgICAgICAgcGF0aG5hbWU6IFwiL1wiLFxuICAgICAgICAvLyBUaGUgZm9sbG93aW5nIGFyZW4ndCB1c2VkIGluIHByb2R1Y3Rpb24uXG4gICAgICAgIGJ1bmRsZVBhdGg6IFwiXCIsXG4gICAgICAgIGZpbGVuYW1lOiBcIlwiLFxuICAgICAgICBhcHBQYXRoczogW11cbiAgICB9LFxuICAgIHVzZXJsYW5kOiB7XG4gICAgICAgIGxvYWRlclRyZWU6IHRyZWVcbiAgICB9XG59KTtcblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9YXBwLXBhZ2UuanMubWFwIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/build/webpack/loaders/next-app-loader.js?name=app%2Fpage&page=%2Fpage&appPaths=%2Fpage&pagePath=private-next-app-dir%2Fpage.tsx&appDir=%2Fhome%2Ftony%2Fchorus%2Fproject-queues%2Factive%2FBZZZ%2Finstall%2Fconfig-ui%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2Fhome%2Ftony%2Fchorus%2Fproject-queues%2Factive%2FBZZZ%2Finstall%2Fconfig-ui&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=export&preferredRegion=&middlewareConfig=e30%3D!\n");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "(ssr)/./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%2Fhome%2Ftony%2Fchorus%2Fproject-queues%2Factive%2FBZZZ%2Finstall%2Fconfig-ui%2Fapp%2Fcomponents%2FThemeToggle.tsx&modules=%2Fhome%2Ftony%2Fchorus%2Fproject-queues%2Factive%2FBZZZ%2Finstall%2Fconfig-ui%2Fapp%2Fglobals.css&server=true!":
|
|
/*!*********************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
|
|
!*** ./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%2Fhome%2Ftony%2Fchorus%2Fproject-queues%2Factive%2FBZZZ%2Finstall%2Fconfig-ui%2Fapp%2Fcomponents%2FThemeToggle.tsx&modules=%2Fhome%2Ftony%2Fchorus%2Fproject-queues%2Factive%2FBZZZ%2Finstall%2Fconfig-ui%2Fapp%2Fglobals.css&server=true! ***!
|
|
\*********************************************************************************************************************************************************************************************************************************************************************************************************************************************/
|
|
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {
|
|
|
|
eval("Promise.resolve(/*! import() eager */).then(__webpack_require__.bind(__webpack_require__, /*! ./app/components/ThemeToggle.tsx */ \"(ssr)/./app/components/ThemeToggle.tsx\"))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2J1aWxkL3dlYnBhY2svbG9hZGVycy9uZXh0LWZsaWdodC1jbGllbnQtZW50cnktbG9hZGVyLmpzP21vZHVsZXM9JTJGaG9tZSUyRnRvbnklMkZjaG9ydXMlMkZwcm9qZWN0LXF1ZXVlcyUyRmFjdGl2ZSUyRkJaWlolMkZpbnN0YWxsJTJGY29uZmlnLXVpJTJGYXBwJTJGY29tcG9uZW50cyUyRlRoZW1lVG9nZ2xlLnRzeCZtb2R1bGVzPSUyRmhvbWUlMkZ0b255JTJGY2hvcnVzJTJGcHJvamVjdC1xdWV1ZXMlMkZhY3RpdmUlMkZCWlpaJTJGaW5zdGFsbCUyRmNvbmZpZy11aSUyRmFwcCUyRmdsb2JhbHMuY3NzJnNlcnZlcj10cnVlISIsIm1hcHBpbmdzIjoiQUFBQSIsInNvdXJjZXMiOlsid2VicGFjazovL2J6enotY29uZmlnLXVpLz9kMTZmIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCgvKiB3ZWJwYWNrTW9kZTogXCJlYWdlclwiICovIFwiL2hvbWUvdG9ueS9jaG9ydXMvcHJvamVjdC1xdWV1ZXMvYWN0aXZlL0JaWlovaW5zdGFsbC9jb25maWctdWkvYXBwL2NvbXBvbmVudHMvVGhlbWVUb2dnbGUudHN4XCIpIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%2Fhome%2Ftony%2Fchorus%2Fproject-queues%2Factive%2FBZZZ%2Finstall%2Fconfig-ui%2Fapp%2Fcomponents%2FThemeToggle.tsx&modules=%2Fhome%2Ftony%2Fchorus%2Fproject-queues%2Factive%2FBZZZ%2Finstall%2Fconfig-ui%2Fapp%2Fglobals.css&server=true!\n");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "(ssr)/./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%2Fhome%2Ftony%2Fchorus%2Fproject-queues%2Factive%2FBZZZ%2Finstall%2Fconfig-ui%2Fapp%2Fsetup%2Fpage.tsx&server=true!":
|
|
/*!**********************************************************************************************************************************************************************************************************************!*\
|
|
!*** ./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%2Fhome%2Ftony%2Fchorus%2Fproject-queues%2Factive%2FBZZZ%2Finstall%2Fconfig-ui%2Fapp%2Fsetup%2Fpage.tsx&server=true! ***!
|
|
\**********************************************************************************************************************************************************************************************************************/
|
|
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {
|
|
|
|
eval("Promise.resolve(/*! import() eager */).then(__webpack_require__.bind(__webpack_require__, /*! ./app/setup/page.tsx */ \"(ssr)/./app/setup/page.tsx\"))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2J1aWxkL3dlYnBhY2svbG9hZGVycy9uZXh0LWZsaWdodC1jbGllbnQtZW50cnktbG9hZGVyLmpzP21vZHVsZXM9JTJGaG9tZSUyRnRvbnklMkZjaG9ydXMlMkZwcm9qZWN0LXF1ZXVlcyUyRmFjdGl2ZSUyRkJaWlolMkZpbnN0YWxsJTJGY29uZmlnLXVpJTJGYXBwJTJGc2V0dXAlMkZwYWdlLnRzeCZzZXJ2ZXI9dHJ1ZSEiLCJtYXBwaW5ncyI6IkFBQUEiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9ienp6LWNvbmZpZy11aS8/ODg5OSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQoLyogd2VicGFja01vZGU6IFwiZWFnZXJcIiAqLyBcIi9ob21lL3RvbnkvY2hvcnVzL3Byb2plY3QtcXVldWVzL2FjdGl2ZS9CWlpaL2luc3RhbGwvY29uZmlnLXVpL2FwcC9zZXR1cC9wYWdlLnRzeFwiKSJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%2Fhome%2Ftony%2Fchorus%2Fproject-queues%2Factive%2FBZZZ%2Finstall%2Fconfig-ui%2Fapp%2Fsetup%2Fpage.tsx&server=true!\n");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "(ssr)/./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%2Fhome%2Ftony%2Fchorus%2Fproject-queues%2Factive%2FBZZZ%2Finstall%2Fconfig-ui%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fapp-router.js&modules=%2Fhome%2Ftony%2Fchorus%2Fproject-queues%2Factive%2FBZZZ%2Finstall%2Fconfig-ui%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Ferror-boundary.js&modules=%2Fhome%2Ftony%2Fchorus%2Fproject-queues%2Factive%2FBZZZ%2Finstall%2Fconfig-ui%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Flayout-router.js&modules=%2Fhome%2Ftony%2Fchorus%2Fproject-queues%2Factive%2FBZZZ%2Finstall%2Fconfig-ui%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fnot-found-boundary.js&modules=%2Fhome%2Ftony%2Fchorus%2Fproject-queues%2Factive%2FBZZZ%2Finstall%2Fconfig-ui%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Frender-from-template-context.js&modules=%2Fhome%2Ftony%2Fchorus%2Fproject-queues%2Factive%2FBZZZ%2Finstall%2Fconfig-ui%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fstatic-generation-searchparams-bailout-provider.js&server=true!":
|
|
/*!****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
|
|
!*** ./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%2Fhome%2Ftony%2Fchorus%2Fproject-queues%2Factive%2FBZZZ%2Finstall%2Fconfig-ui%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fapp-router.js&modules=%2Fhome%2Ftony%2Fchorus%2Fproject-queues%2Factive%2FBZZZ%2Finstall%2Fconfig-ui%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Ferror-boundary.js&modules=%2Fhome%2Ftony%2Fchorus%2Fproject-queues%2Factive%2FBZZZ%2Finstall%2Fconfig-ui%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Flayout-router.js&modules=%2Fhome%2Ftony%2Fchorus%2Fproject-queues%2Factive%2FBZZZ%2Finstall%2Fconfig-ui%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fnot-found-boundary.js&modules=%2Fhome%2Ftony%2Fchorus%2Fproject-queues%2Factive%2FBZZZ%2Finstall%2Fconfig-ui%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Frender-from-template-context.js&modules=%2Fhome%2Ftony%2Fchorus%2Fproject-queues%2Factive%2FBZZZ%2Finstall%2Fconfig-ui%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fstatic-generation-searchparams-bailout-provider.js&server=true! ***!
|
|
\****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
|
|
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {
|
|
|
|
eval("Promise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__webpack_require__, /*! ./node_modules/next/dist/client/components/app-router.js */ \"(ssr)/./node_modules/next/dist/client/components/app-router.js\", 23));\nPromise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__webpack_require__, /*! ./node_modules/next/dist/client/components/error-boundary.js */ \"(ssr)/./node_modules/next/dist/client/components/error-boundary.js\", 23));\nPromise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__webpack_require__, /*! ./node_modules/next/dist/client/components/layout-router.js */ \"(ssr)/./node_modules/next/dist/client/components/layout-router.js\", 23));\nPromise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__webpack_require__, /*! ./node_modules/next/dist/client/components/not-found-boundary.js */ \"(ssr)/./node_modules/next/dist/client/components/not-found-boundary.js\", 23));\nPromise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__webpack_require__, /*! ./node_modules/next/dist/client/components/render-from-template-context.js */ \"(ssr)/./node_modules/next/dist/client/components/render-from-template-context.js\", 23));\nPromise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__webpack_require__, /*! ./node_modules/next/dist/client/components/static-generation-searchparams-bailout-provider.js */ \"(ssr)/./node_modules/next/dist/client/components/static-generation-searchparams-bailout-provider.js\", 23))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2J1aWxkL3dlYnBhY2svbG9hZGVycy9uZXh0LWZsaWdodC1jbGllbnQtZW50cnktbG9hZGVyLmpzP21vZHVsZXM9JTJGaG9tZSUyRnRvbnklMkZjaG9ydXMlMkZwcm9qZWN0LXF1ZXVlcyUyRmFjdGl2ZSUyRkJaWlolMkZpbnN0YWxsJTJGY29uZmlnLXVpJTJGbm9kZV9tb2R1bGVzJTJGbmV4dCUyRmRpc3QlMkZjbGllbnQlMkZjb21wb25lbnRzJTJGYXBwLXJvdXRlci5qcyZtb2R1bGVzPSUyRmhvbWUlMkZ0b255JTJGY2hvcnVzJTJGcHJvamVjdC1xdWV1ZXMlMkZhY3RpdmUlMkZCWlpaJTJGaW5zdGFsbCUyRmNvbmZpZy11aSUyRm5vZGVfbW9kdWxlcyUyRm5leHQlMkZkaXN0JTJGY2xpZW50JTJGY29tcG9uZW50cyUyRmVycm9yLWJvdW5kYXJ5LmpzJm1vZHVsZXM9JTJGaG9tZSUyRnRvbnklMkZjaG9ydXMlMkZwcm9qZWN0LXF1ZXVlcyUyRmFjdGl2ZSUyRkJaWlolMkZpbnN0YWxsJTJGY29uZmlnLXVpJTJGbm9kZV9tb2R1bGVzJTJGbmV4dCUyRmRpc3QlMkZjbGllbnQlMkZjb21wb25lbnRzJTJGbGF5b3V0LXJvdXRlci5qcyZtb2R1bGVzPSUyRmhvbWUlMkZ0b255JTJGY2hvcnVzJTJGcHJvamVjdC1xdWV1ZXMlMkZhY3RpdmUlMkZCWlpaJTJGaW5zdGFsbCUyRmNvbmZpZy11aSUyRm5vZGVfbW9kdWxlcyUyRm5leHQlMkZkaXN0JTJGY2xpZW50JTJGY29tcG9uZW50cyUyRm5vdC1mb3VuZC1ib3VuZGFyeS5qcyZtb2R1bGVzPSUyRmhvbWUlMkZ0b255JTJGY2hvcnVzJTJGcHJvamVjdC1xdWV1ZXMlMkZhY3RpdmUlMkZCWlpaJTJGaW5zdGFsbCUyRmNvbmZpZy11aSUyRm5vZGVfbW9kdWxlcyUyRm5leHQlMkZkaXN0JTJGY2xpZW50JTJGY29tcG9uZW50cyUyRnJlbmRlci1mcm9tLXRlbXBsYXRlLWNvbnRleHQuanMmbW9kdWxlcz0lMkZob21lJTJGdG9ueSUyRmNob3J1cyUyRnByb2plY3QtcXVldWVzJTJGYWN0aXZlJTJGQlpaWiUyRmluc3RhbGwlMkZjb25maWctdWklMkZub2RlX21vZHVsZXMlMkZuZXh0JTJGZGlzdCUyRmNsaWVudCUyRmNvbXBvbmVudHMlMkZzdGF0aWMtZ2VuZXJhdGlvbi1zZWFyY2hwYXJhbXMtYmFpbG91dC1wcm92aWRlci5qcyZzZXJ2ZXI9dHJ1ZSEiLCJtYXBwaW5ncyI6IkFBQUEsa09BQTBKO0FBQzFKLDBPQUE4SjtBQUM5Six3T0FBNko7QUFDN0osa1BBQWtLO0FBQ2xLLHNRQUE0SztBQUM1SyIsInNvdXJjZXMiOlsid2VicGFjazovL2J6enotY29uZmlnLXVpLz83YzBkIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCgvKiB3ZWJwYWNrTW9kZTogXCJlYWdlclwiICovIFwiL2hvbWUvdG9ueS9jaG9ydXMvcHJvamVjdC1xdWV1ZXMvYWN0aXZlL0JaWlovaW5zdGFsbC9jb25maWctdWkvbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvY29tcG9uZW50cy9hcHAtcm91dGVyLmpzXCIpO1xuaW1wb3J0KC8qIHdlYnBhY2tNb2RlOiBcImVhZ2VyXCIgKi8gXCIvaG9tZS90b255L2Nob3J1cy9wcm9qZWN0LXF1ZXVlcy9hY3RpdmUvQlpaWi9pbnN0YWxsL2NvbmZpZy11aS9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL2Vycm9yLWJvdW5kYXJ5LmpzXCIpO1xuaW1wb3J0KC8qIHdlYnBhY2tNb2RlOiBcImVhZ2VyXCIgKi8gXCIvaG9tZS90b255L2Nob3J1cy9wcm9qZWN0LXF1ZXVlcy9hY3RpdmUvQlpaWi9pbnN0YWxsL2NvbmZpZy11aS9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL2xheW91dC1yb3V0ZXIuanNcIik7XG5pbXBvcnQoLyogd2VicGFja01vZGU6IFwiZWFnZXJcIiAqLyBcIi9ob21lL3RvbnkvY2hvcnVzL3Byb2plY3QtcXVldWVzL2FjdGl2ZS9CWlpaL2luc3RhbGwvY29uZmlnLXVpL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvbm90LWZvdW5kLWJvdW5kYXJ5LmpzXCIpO1xuaW1wb3J0KC8qIHdlYnBhY2tNb2RlOiBcImVhZ2VyXCIgKi8gXCIvaG9tZS90b255L2Nob3J1cy9wcm9qZWN0LXF1ZXVlcy9hY3RpdmUvQlpaWi9pbnN0YWxsL2NvbmZpZy11aS9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL3JlbmRlci1mcm9tLXRlbXBsYXRlLWNvbnRleHQuanNcIik7XG5pbXBvcnQoLyogd2VicGFja01vZGU6IFwiZWFnZXJcIiAqLyBcIi9ob21lL3RvbnkvY2hvcnVzL3Byb2plY3QtcXVldWVzL2FjdGl2ZS9CWlpaL2luc3RhbGwvY29uZmlnLXVpL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvc3RhdGljLWdlbmVyYXRpb24tc2VhcmNocGFyYW1zLWJhaWxvdXQtcHJvdmlkZXIuanNcIikiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%2Fhome%2Ftony%2Fchorus%2Fproject-queues%2Factive%2FBZZZ%2Finstall%2Fconfig-ui%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fapp-router.js&modules=%2Fhome%2Ftony%2Fchorus%2Fproject-queues%2Factive%2FBZZZ%2Finstall%2Fconfig-ui%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Ferror-boundary.js&modules=%2Fhome%2Ftony%2Fchorus%2Fproject-queues%2Factive%2FBZZZ%2Finstall%2Fconfig-ui%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Flayout-router.js&modules=%2Fhome%2Ftony%2Fchorus%2Fproject-queues%2Factive%2FBZZZ%2Finstall%2Fconfig-ui%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fnot-found-boundary.js&modules=%2Fhome%2Ftony%2Fchorus%2Fproject-queues%2Factive%2FBZZZ%2Finstall%2Fconfig-ui%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Frender-from-template-context.js&modules=%2Fhome%2Ftony%2Fchorus%2Fproject-queues%2Factive%2FBZZZ%2Finstall%2Fconfig-ui%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fstatic-generation-searchparams-bailout-provider.js&server=true!\n");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "(ssr)/./app/components/ThemeToggle.tsx":
|
|
/*!****************************************!*\
|
|
!*** ./app/components/ThemeToggle.tsx ***!
|
|
\****************************************/
|
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
|
|
"use strict";
|
|
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ ThemeToggle)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react-jsx-dev-runtime.js\");\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _barrel_optimize_names_MoonIcon_SunIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! __barrel_optimize__?names=MoonIcon,SunIcon!=!@heroicons/react/24/outline */ \"(ssr)/./node_modules/@heroicons/react/24/outline/esm/SunIcon.js\");\n/* harmony import */ var _barrel_optimize_names_MoonIcon_SunIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! __barrel_optimize__?names=MoonIcon,SunIcon!=!@heroicons/react/24/outline */ \"(ssr)/./node_modules/@heroicons/react/24/outline/esm/MoonIcon.js\");\n/* __next_internal_client_entry_do_not_use__ default auto */ \n\n\nfunction ThemeToggle() {\n const [isDark, setIsDark] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(true) // Default to dark mode\n ;\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{\n // Check for saved theme preference or default to dark\n const savedTheme = localStorage.getItem(\"chorus-theme\");\n const prefersDark = !savedTheme || savedTheme === \"dark\";\n setIsDark(prefersDark);\n updateTheme(prefersDark);\n }, []);\n const updateTheme = (dark)=>{\n const html = document.documentElement;\n if (dark) {\n html.classList.add(\"dark\");\n } else {\n html.classList.remove(\"dark\");\n }\n };\n const toggleTheme = ()=>{\n const newIsDark = !isDark;\n setIsDark(newIsDark);\n updateTheme(newIsDark);\n // Save preference\n localStorage.setItem(\"chorus-theme\", newIsDark ? \"dark\" : \"light\");\n };\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: toggleTheme,\n className: \"btn-text flex items-center space-x-2 p-2 rounded-md transition-colors duration-200\",\n \"aria-label\": `Switch to ${isDark ? \"light\" : \"dark\"} theme`,\n children: isDark ? /*#__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)(_barrel_optimize_names_MoonIcon_SunIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n className: \"h-4 w-4\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/components/ThemeToggle.tsx\",\n lineNumber: 44,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-xs\",\n children: \"Light\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/components/ThemeToggle.tsx\",\n lineNumber: 45,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true) : /*#__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)(_barrel_optimize_names_MoonIcon_SunIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n className: \"h-4 w-4\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/components/ThemeToggle.tsx\",\n lineNumber: 49,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-xs\",\n children: \"Dark\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/components/ThemeToggle.tsx\",\n lineNumber: 50,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true)\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/components/ThemeToggle.tsx\",\n lineNumber: 37,\n columnNumber: 5\n }, this);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9hcHAvY29tcG9uZW50cy9UaGVtZVRvZ2dsZS50c3giLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFFMkM7QUFDb0I7QUFFaEQsU0FBU0k7SUFDdEIsTUFBTSxDQUFDQyxRQUFRQyxVQUFVLEdBQUdOLCtDQUFRQSxDQUFDLE1BQU0sdUJBQXVCOztJQUVsRUMsZ0RBQVNBLENBQUM7UUFDUixzREFBc0Q7UUFDdEQsTUFBTU0sYUFBYUMsYUFBYUMsT0FBTyxDQUFDO1FBQ3hDLE1BQU1DLGNBQWMsQ0FBQ0gsY0FBY0EsZUFBZTtRQUVsREQsVUFBVUk7UUFDVkMsWUFBWUQ7SUFDZCxHQUFHLEVBQUU7SUFFTCxNQUFNQyxjQUFjLENBQUNDO1FBQ25CLE1BQU1DLE9BQU9DLFNBQVNDLGVBQWU7UUFDckMsSUFBSUgsTUFBTTtZQUNSQyxLQUFLRyxTQUFTLENBQUNDLEdBQUcsQ0FBQztRQUNyQixPQUFPO1lBQ0xKLEtBQUtHLFNBQVMsQ0FBQ0UsTUFBTSxDQUFDO1FBQ3hCO0lBQ0Y7SUFFQSxNQUFNQyxjQUFjO1FBQ2xCLE1BQU1DLFlBQVksQ0FBQ2Y7UUFDbkJDLFVBQVVjO1FBQ1ZULFlBQVlTO1FBRVosa0JBQWtCO1FBQ2xCWixhQUFhYSxPQUFPLENBQUMsZ0JBQWdCRCxZQUFZLFNBQVM7SUFDNUQ7SUFFQSxxQkFDRSw4REFBQ0U7UUFDQ0MsU0FBU0o7UUFDVEssV0FBVTtRQUNWQyxjQUFZLENBQUMsVUFBVSxFQUFFcEIsU0FBUyxVQUFVLE9BQU8sTUFBTSxDQUFDO2tCQUV6REEsdUJBQ0M7OzhCQUNFLDhEQUFDSCwwR0FBT0E7b0JBQUNzQixXQUFVOzs7Ozs7OEJBQ25CLDhEQUFDRTtvQkFBS0YsV0FBVTs4QkFBVTs7Ozs7Ozt5Q0FHNUI7OzhCQUNFLDhEQUFDckIsMEdBQVFBO29CQUFDcUIsV0FBVTs7Ozs7OzhCQUNwQiw4REFBQ0U7b0JBQUtGLFdBQVU7OEJBQVU7Ozs7Ozs7Ozs7Ozs7QUFLcEMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9ienp6LWNvbmZpZy11aS8uL2FwcC9jb21wb25lbnRzL1RoZW1lVG9nZ2xlLnRzeD81ZjFjIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2UgY2xpZW50J1xuXG5pbXBvcnQgeyB1c2VTdGF0ZSwgdXNlRWZmZWN0IH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBTdW5JY29uLCBNb29uSWNvbiB9IGZyb20gJ0BoZXJvaWNvbnMvcmVhY3QvMjQvb3V0bGluZSdcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gVGhlbWVUb2dnbGUoKSB7XG4gIGNvbnN0IFtpc0RhcmssIHNldElzRGFya10gPSB1c2VTdGF0ZSh0cnVlKSAvLyBEZWZhdWx0IHRvIGRhcmsgbW9kZVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgLy8gQ2hlY2sgZm9yIHNhdmVkIHRoZW1lIHByZWZlcmVuY2Ugb3IgZGVmYXVsdCB0byBkYXJrXG4gICAgY29uc3Qgc2F2ZWRUaGVtZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdjaG9ydXMtdGhlbWUnKVxuICAgIGNvbnN0IHByZWZlcnNEYXJrID0gIXNhdmVkVGhlbWUgfHwgc2F2ZWRUaGVtZSA9PT0gJ2RhcmsnXG4gICAgXG4gICAgc2V0SXNEYXJrKHByZWZlcnNEYXJrKVxuICAgIHVwZGF0ZVRoZW1lKHByZWZlcnNEYXJrKVxuICB9LCBbXSlcblxuICBjb25zdCB1cGRhdGVUaGVtZSA9IChkYXJrOiBib29sZWFuKSA9PiB7XG4gICAgY29uc3QgaHRtbCA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudFxuICAgIGlmIChkYXJrKSB7XG4gICAgICBodG1sLmNsYXNzTGlzdC5hZGQoJ2RhcmsnKVxuICAgIH0gZWxzZSB7XG4gICAgICBodG1sLmNsYXNzTGlzdC5yZW1vdmUoJ2RhcmsnKVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHRvZ2dsZVRoZW1lID0gKCkgPT4ge1xuICAgIGNvbnN0IG5ld0lzRGFyayA9ICFpc0RhcmtcbiAgICBzZXRJc0RhcmsobmV3SXNEYXJrKVxuICAgIHVwZGF0ZVRoZW1lKG5ld0lzRGFyaylcbiAgICBcbiAgICAvLyBTYXZlIHByZWZlcmVuY2VcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnY2hvcnVzLXRoZW1lJywgbmV3SXNEYXJrID8gJ2RhcmsnIDogJ2xpZ2h0JylcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPGJ1dHRvblxuICAgICAgb25DbGljaz17dG9nZ2xlVGhlbWV9XG4gICAgICBjbGFzc05hbWU9XCJidG4tdGV4dCBmbGV4IGl0ZW1zLWNlbnRlciBzcGFjZS14LTIgcC0yIHJvdW5kZWQtbWQgdHJhbnNpdGlvbi1jb2xvcnMgZHVyYXRpb24tMjAwXCJcbiAgICAgIGFyaWEtbGFiZWw9e2BTd2l0Y2ggdG8gJHtpc0RhcmsgPyAnbGlnaHQnIDogJ2RhcmsnfSB0aGVtZWB9XG4gICAgPlxuICAgICAge2lzRGFyayA/IChcbiAgICAgICAgPD5cbiAgICAgICAgICA8U3VuSWNvbiBjbGFzc05hbWU9XCJoLTQgdy00XCIgLz5cbiAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LXhzXCI+TGlnaHQ8L3NwYW4+XG4gICAgICAgIDwvPlxuICAgICAgKSA6IChcbiAgICAgICAgPD5cbiAgICAgICAgICA8TW9vbkljb24gY2xhc3NOYW1lPVwiaC00IHctNFwiIC8+XG4gICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC14c1wiPkRhcms8L3NwYW4+XG4gICAgICAgIDwvPlxuICAgICAgKX1cbiAgICA8L2J1dHRvbj5cbiAgKVxufSJdLCJuYW1lcyI6WyJ1c2VTdGF0ZSIsInVzZUVmZmVjdCIsIlN1bkljb24iLCJNb29uSWNvbiIsIlRoZW1lVG9nZ2xlIiwiaXNEYXJrIiwic2V0SXNEYXJrIiwic2F2ZWRUaGVtZSIsImxvY2FsU3RvcmFnZSIsImdldEl0ZW0iLCJwcmVmZXJzRGFyayIsInVwZGF0ZVRoZW1lIiwiZGFyayIsImh0bWwiLCJkb2N1bWVudCIsImRvY3VtZW50RWxlbWVudCIsImNsYXNzTGlzdCIsImFkZCIsInJlbW92ZSIsInRvZ2dsZVRoZW1lIiwibmV3SXNEYXJrIiwic2V0SXRlbSIsImJ1dHRvbiIsIm9uQ2xpY2siLCJjbGFzc05hbWUiLCJhcmlhLWxhYmVsIiwic3BhbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./app/components/ThemeToggle.tsx\n");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "(ssr)/./app/setup/components/AIConfiguration.tsx":
|
|
/*!**************************************************!*\
|
|
!*** ./app/setup/components/AIConfiguration.tsx ***!
|
|
\**************************************************/
|
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
|
|
"use strict";
|
|
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ AIConfiguration)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react-jsx-dev-runtime.js\");\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _barrel_optimize_names_ArrowPathIcon_CheckCircleIcon_CpuChipIcon_CurrencyDollarIcon_ExclamationTriangleIcon_EyeIcon_EyeSlashIcon_InformationCircleIcon_ServerIcon_SparklesIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! __barrel_optimize__?names=ArrowPathIcon,CheckCircleIcon,CpuChipIcon,CurrencyDollarIcon,ExclamationTriangleIcon,EyeIcon,EyeSlashIcon,InformationCircleIcon,ServerIcon,SparklesIcon!=!@heroicons/react/24/outline */ \"(ssr)/./node_modules/@heroicons/react/24/outline/esm/CpuChipIcon.js\");\n/* harmony import */ var _barrel_optimize_names_ArrowPathIcon_CheckCircleIcon_CpuChipIcon_CurrencyDollarIcon_ExclamationTriangleIcon_EyeIcon_EyeSlashIcon_InformationCircleIcon_ServerIcon_SparklesIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! __barrel_optimize__?names=ArrowPathIcon,CheckCircleIcon,CpuChipIcon,CurrencyDollarIcon,ExclamationTriangleIcon,EyeIcon,EyeSlashIcon,InformationCircleIcon,ServerIcon,SparklesIcon!=!@heroicons/react/24/outline */ \"(ssr)/./node_modules/@heroicons/react/24/outline/esm/InformationCircleIcon.js\");\n/* harmony import */ var _barrel_optimize_names_ArrowPathIcon_CheckCircleIcon_CpuChipIcon_CurrencyDollarIcon_ExclamationTriangleIcon_EyeIcon_EyeSlashIcon_InformationCircleIcon_ServerIcon_SparklesIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! __barrel_optimize__?names=ArrowPathIcon,CheckCircleIcon,CpuChipIcon,CurrencyDollarIcon,ExclamationTriangleIcon,EyeIcon,EyeSlashIcon,InformationCircleIcon,ServerIcon,SparklesIcon!=!@heroicons/react/24/outline */ \"(ssr)/./node_modules/@heroicons/react/24/outline/esm/ServerIcon.js\");\n/* harmony import */ var _barrel_optimize_names_ArrowPathIcon_CheckCircleIcon_CpuChipIcon_CurrencyDollarIcon_ExclamationTriangleIcon_EyeIcon_EyeSlashIcon_InformationCircleIcon_ServerIcon_SparklesIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! __barrel_optimize__?names=ArrowPathIcon,CheckCircleIcon,CpuChipIcon,CurrencyDollarIcon,ExclamationTriangleIcon,EyeIcon,EyeSlashIcon,InformationCircleIcon,ServerIcon,SparklesIcon!=!@heroicons/react/24/outline */ \"(ssr)/./node_modules/@heroicons/react/24/outline/esm/ArrowPathIcon.js\");\n/* harmony import */ var _barrel_optimize_names_ArrowPathIcon_CheckCircleIcon_CpuChipIcon_CurrencyDollarIcon_ExclamationTriangleIcon_EyeIcon_EyeSlashIcon_InformationCircleIcon_ServerIcon_SparklesIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! __barrel_optimize__?names=ArrowPathIcon,CheckCircleIcon,CpuChipIcon,CurrencyDollarIcon,ExclamationTriangleIcon,EyeIcon,EyeSlashIcon,InformationCircleIcon,ServerIcon,SparklesIcon!=!@heroicons/react/24/outline */ \"(ssr)/./node_modules/@heroicons/react/24/outline/esm/CheckCircleIcon.js\");\n/* harmony import */ var _barrel_optimize_names_ArrowPathIcon_CheckCircleIcon_CpuChipIcon_CurrencyDollarIcon_ExclamationTriangleIcon_EyeIcon_EyeSlashIcon_InformationCircleIcon_ServerIcon_SparklesIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! __barrel_optimize__?names=ArrowPathIcon,CheckCircleIcon,CpuChipIcon,CurrencyDollarIcon,ExclamationTriangleIcon,EyeIcon,EyeSlashIcon,InformationCircleIcon,ServerIcon,SparklesIcon!=!@heroicons/react/24/outline */ \"(ssr)/./node_modules/@heroicons/react/24/outline/esm/ExclamationTriangleIcon.js\");\n/* harmony import */ var _barrel_optimize_names_ArrowPathIcon_CheckCircleIcon_CpuChipIcon_CurrencyDollarIcon_ExclamationTriangleIcon_EyeIcon_EyeSlashIcon_InformationCircleIcon_ServerIcon_SparklesIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! __barrel_optimize__?names=ArrowPathIcon,CheckCircleIcon,CpuChipIcon,CurrencyDollarIcon,ExclamationTriangleIcon,EyeIcon,EyeSlashIcon,InformationCircleIcon,ServerIcon,SparklesIcon!=!@heroicons/react/24/outline */ \"(ssr)/./node_modules/@heroicons/react/24/outline/esm/SparklesIcon.js\");\n/* harmony import */ var _barrel_optimize_names_ArrowPathIcon_CheckCircleIcon_CpuChipIcon_CurrencyDollarIcon_ExclamationTriangleIcon_EyeIcon_EyeSlashIcon_InformationCircleIcon_ServerIcon_SparklesIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! __barrel_optimize__?names=ArrowPathIcon,CheckCircleIcon,CpuChipIcon,CurrencyDollarIcon,ExclamationTriangleIcon,EyeIcon,EyeSlashIcon,InformationCircleIcon,ServerIcon,SparklesIcon!=!@heroicons/react/24/outline */ \"(ssr)/./node_modules/@heroicons/react/24/outline/esm/EyeSlashIcon.js\");\n/* harmony import */ var _barrel_optimize_names_ArrowPathIcon_CheckCircleIcon_CpuChipIcon_CurrencyDollarIcon_ExclamationTriangleIcon_EyeIcon_EyeSlashIcon_InformationCircleIcon_ServerIcon_SparklesIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! __barrel_optimize__?names=ArrowPathIcon,CheckCircleIcon,CpuChipIcon,CurrencyDollarIcon,ExclamationTriangleIcon,EyeIcon,EyeSlashIcon,InformationCircleIcon,ServerIcon,SparklesIcon!=!@heroicons/react/24/outline */ \"(ssr)/./node_modules/@heroicons/react/24/outline/esm/EyeIcon.js\");\n/* harmony import */ var _barrel_optimize_names_ArrowPathIcon_CheckCircleIcon_CpuChipIcon_CurrencyDollarIcon_ExclamationTriangleIcon_EyeIcon_EyeSlashIcon_InformationCircleIcon_ServerIcon_SparklesIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! __barrel_optimize__?names=ArrowPathIcon,CheckCircleIcon,CpuChipIcon,CurrencyDollarIcon,ExclamationTriangleIcon,EyeIcon,EyeSlashIcon,InformationCircleIcon,ServerIcon,SparklesIcon!=!@heroicons/react/24/outline */ \"(ssr)/./node_modules/@heroicons/react/24/outline/esm/CurrencyDollarIcon.js\");\n/* __next_internal_client_entry_do_not_use__ default auto */ \n\n\nfunction AIConfiguration({ systemInfo, configData, onComplete, onBack, isCompleted }) {\n const [config, setConfig] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)({\n openaiEnabled: false,\n openaiApiKey: \"\",\n openaiOrganization: \"\",\n openaiDefaultModel: \"gpt-4\",\n dailyCostLimit: 50,\n monthlyCostLimit: 500,\n costAlerts: true,\n localAIEnabled: true,\n localAIType: \"ollama\",\n localAIEndpoint: \"http://localhost:11434\",\n localAIModels: [\n \"llama2\",\n \"codellama\"\n ],\n gpuAcceleration: false,\n preferredGPU: \"\",\n maxGPUMemory: 8,\n preferredProvider: \"local\",\n fallbackEnabled: true\n });\n const [showApiKey, setShowApiKey] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n const [validatingOpenAI, setValidatingOpenAI] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n const [validatingLocal, setValidatingLocal] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n const [openaiValid, setOpenaiValid] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);\n const [localAIValid, setLocalAIValid] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);\n // Initialize configuration from existing data\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{\n if (configData.ai) {\n setConfig((prev)=>({\n ...prev,\n ...configData.ai\n }));\n }\n // Auto-detect GPU capabilities\n if (systemInfo?.gpus?.length > 0) {\n const hasNVIDIA = systemInfo.gpus.some((gpu)=>gpu.type === \"nvidia\");\n const hasAMD = systemInfo.gpus.some((gpu)=>gpu.type === \"amd\");\n if (hasNVIDIA) {\n setConfig((prev)=>({\n ...prev,\n gpuAcceleration: true,\n localAIType: \"parallama\",\n preferredGPU: systemInfo.gpus.find((gpu)=>gpu.type === \"nvidia\")?.name || \"\"\n }));\n } else if (hasAMD) {\n setConfig((prev)=>({\n ...prev,\n gpuAcceleration: true,\n localAIType: \"ollama\",\n preferredGPU: systemInfo.gpus.find((gpu)=>gpu.type === \"amd\")?.name || \"\"\n }));\n }\n }\n }, [\n systemInfo,\n configData\n ]);\n const validateOpenAI = async ()=>{\n if (!config.openaiApiKey) {\n setOpenaiValid(false);\n return;\n }\n setValidatingOpenAI(true);\n try {\n // This would be a real API validation in production\n // For now, just simulate validation\n await new Promise((resolve)=>setTimeout(resolve, 1000));\n setOpenaiValid(true);\n } catch (error) {\n setOpenaiValid(false);\n } finally{\n setValidatingOpenAI(false);\n }\n };\n const validateLocalAI = async ()=>{\n if (!config.localAIEndpoint) {\n setLocalAIValid(false);\n return;\n }\n setValidatingLocal(true);\n try {\n const response = await fetch(`${config.localAIEndpoint}/api/tags`);\n setLocalAIValid(response.ok);\n } catch (error) {\n setLocalAIValid(false);\n } finally{\n setValidatingLocal(false);\n }\n };\n const getGPURecommendations = ()=>{\n if (!systemInfo?.gpus?.length) {\n return {\n recommendation: \"No GPU detected. CPU-only processing will be used.\",\n type: \"info\",\n details: \"Consider adding a GPU for better AI performance.\"\n };\n }\n const gpus = systemInfo.gpus;\n const nvidiaGPUs = gpus.filter((gpu)=>gpu.type === \"nvidia\");\n const amdGPUs = gpus.filter((gpu)=>gpu.type === \"amd\");\n if (nvidiaGPUs.length > 0) {\n return {\n recommendation: \"NVIDIA GPU detected - Parallama recommended for optimal performance\",\n type: \"success\",\n details: `${nvidiaGPUs[0].name} with ${nvidiaGPUs[0].memory} VRAM detected. Parallama provides excellent NVIDIA GPU acceleration.`\n };\n }\n if (amdGPUs.length > 0) {\n return {\n recommendation: \"AMD GPU detected - Ollama with ROCm support recommended\",\n type: \"warning\",\n details: `${amdGPUs[0].name} detected. Ollama provides good AMD GPU support through ROCm.`\n };\n }\n return {\n recommendation: \"Integrated GPU detected - Limited AI acceleration available\",\n type: \"warning\",\n details: \"Integrated GPUs provide limited AI acceleration. Consider a dedicated GPU for better performance.\"\n };\n };\n const getRecommendedModels = ()=>{\n const memoryGB = systemInfo?.memory_mb ? Math.round(systemInfo.memory_mb / 1024) : 8;\n if (memoryGB >= 32) {\n return [\n \"llama2:70b\",\n \"codellama:34b\",\n \"mixtral:8x7b\"\n ];\n } else if (memoryGB >= 16) {\n return [\n \"llama2:13b\",\n \"codellama:13b\",\n \"llama2:7b\"\n ];\n } else {\n return [\n \"llama2:7b\",\n \"codellama:7b\",\n \"phi2\"\n ];\n }\n };\n const handleSubmit = (e)=>{\n e.preventDefault();\n // Validate that at least one AI provider is configured\n if (!config.openaiEnabled && !config.localAIEnabled) {\n alert(\"Please enable at least one AI provider (OpenAI or Local AI)\");\n return;\n }\n onComplete({\n ai: config\n });\n };\n const gpuRecommendation = getGPURecommendations();\n const recommendedModels = getRecommendedModels();\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"form\", {\n onSubmit: handleSubmit,\n className: \"space-y-6\",\n children: [\n systemInfo?.gpus && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-gray-50 rounded-lg p-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h3\", {\n className: \"text-lg font-medium text-gray-900 mb-4 flex items-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_ArrowPathIcon_CheckCircleIcon_CpuChipIcon_CurrencyDollarIcon_ExclamationTriangleIcon_EyeIcon_EyeSlashIcon_InformationCircleIcon_ServerIcon_SparklesIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n className: \"h-6 w-6 text-bzzz-primary mr-2\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/AIConfiguration.tsx\",\n lineNumber: 230,\n columnNumber: 13\n }, this),\n \"GPU Configuration\"\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/AIConfiguration.tsx\",\n lineNumber: 229,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `p-4 rounded-lg border mb-4 ${gpuRecommendation.type === \"success\" ? \"bg-green-50 border-green-200\" : gpuRecommendation.type === \"warning\" ? \"bg-yellow-50 border-yellow-200\" : \"bg-blue-50 border-blue-200\"}`,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-start\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_ArrowPathIcon_CheckCircleIcon_CpuChipIcon_CurrencyDollarIcon_ExclamationTriangleIcon_EyeIcon_EyeSlashIcon_InformationCircleIcon_ServerIcon_SparklesIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n className: `h-5 w-5 mt-0.5 mr-2 ${gpuRecommendation.type === \"success\" ? \"text-green-600\" : gpuRecommendation.type === \"warning\" ? \"text-yellow-600\" : \"text-blue-600\"}`\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/AIConfiguration.tsx\",\n lineNumber: 240,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `font-medium ${gpuRecommendation.type === \"success\" ? \"text-green-800\" : gpuRecommendation.type === \"warning\" ? \"text-yellow-800\" : \"text-blue-800\"}`,\n children: gpuRecommendation.recommendation\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/AIConfiguration.tsx\",\n lineNumber: 246,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `text-sm mt-1 ${gpuRecommendation.type === \"success\" ? \"text-green-700\" : gpuRecommendation.type === \"warning\" ? \"text-yellow-700\" : \"text-blue-700\"}`,\n children: gpuRecommendation.details\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/AIConfiguration.tsx\",\n lineNumber: 253,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/AIConfiguration.tsx\",\n lineNumber: 245,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/AIConfiguration.tsx\",\n lineNumber: 239,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/AIConfiguration.tsx\",\n lineNumber: 234,\n columnNumber: 11\n }, this),\n systemInfo.gpus.length > 0 && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-y-3\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"checkbox\",\n id: \"gpuAcceleration\",\n checked: config.gpuAcceleration,\n onChange: (e)=>setConfig((prev)=>({\n ...prev,\n gpuAcceleration: e.target.checked\n })),\n className: \"h-4 w-4 text-bzzz-primary focus:ring-bzzz-primary border-gray-300 rounded\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/AIConfiguration.tsx\",\n lineNumber: 267,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"label\", {\n htmlFor: \"gpuAcceleration\",\n className: \"ml-2 text-sm font-medium text-gray-700\",\n children: \"Enable GPU acceleration for AI processing\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/AIConfiguration.tsx\",\n lineNumber: 274,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/AIConfiguration.tsx\",\n lineNumber: 266,\n columnNumber: 15\n }, this),\n config.gpuAcceleration && /*#__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: \"label\",\n children: \"Preferred GPU\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/AIConfiguration.tsx\",\n lineNumber: 281,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"select\", {\n value: config.preferredGPU,\n onChange: (e)=>setConfig((prev)=>({\n ...prev,\n preferredGPU: e.target.value\n })),\n className: \"input-field\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"option\", {\n value: \"\",\n children: \"Auto-select\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/AIConfiguration.tsx\",\n lineNumber: 287,\n columnNumber: 21\n }, this),\n systemInfo.gpus.map((gpu, index)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"option\", {\n value: gpu.name,\n children: [\n gpu.name,\n \" (\",\n gpu.type.toUpperCase(),\n \") - \",\n gpu.memory\n ]\n }, index, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/AIConfiguration.tsx\",\n lineNumber: 289,\n columnNumber: 23\n }, this))\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/AIConfiguration.tsx\",\n lineNumber: 282,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/AIConfiguration.tsx\",\n lineNumber: 280,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/AIConfiguration.tsx\",\n lineNumber: 265,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/AIConfiguration.tsx\",\n lineNumber: 228,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-white border border-gray-200 rounded-lg p-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center justify-between mb-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h3\", {\n className: \"text-lg font-medium text-gray-900 flex items-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_ArrowPathIcon_CheckCircleIcon_CpuChipIcon_CurrencyDollarIcon_ExclamationTriangleIcon_EyeIcon_EyeSlashIcon_InformationCircleIcon_ServerIcon_SparklesIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n className: \"h-6 w-6 text-bzzz-primary mr-2\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/AIConfiguration.tsx\",\n lineNumber: 305,\n columnNumber: 13\n }, this),\n \"Local AI (Ollama/Parallama)\"\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/AIConfiguration.tsx\",\n lineNumber: 304,\n columnNumber: 11\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: \"checkbox\",\n id: \"localAIEnabled\",\n checked: config.localAIEnabled,\n onChange: (e)=>setConfig((prev)=>({\n ...prev,\n localAIEnabled: e.target.checked\n })),\n className: \"h-4 w-4 text-bzzz-primary focus:ring-bzzz-primary border-gray-300 rounded\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/AIConfiguration.tsx\",\n lineNumber: 309,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"label\", {\n htmlFor: \"localAIEnabled\",\n className: \"ml-2 text-sm font-medium text-gray-700\",\n children: \"Enable Local AI\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/AIConfiguration.tsx\",\n lineNumber: 316,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/AIConfiguration.tsx\",\n lineNumber: 308,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/AIConfiguration.tsx\",\n lineNumber: 303,\n columnNumber: 9\n }, this),\n config.localAIEnabled && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-y-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"label\", {\n className: \"label\",\n children: \"Local AI Provider\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/AIConfiguration.tsx\",\n lineNumber: 325,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid grid-cols-1 md:grid-cols-2 gap-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `border-2 rounded-lg p-4 cursor-pointer transition-all ${config.localAIType === \"ollama\" ? \"border-bzzz-primary bg-bzzz-primary bg-opacity-10\" : \"border-gray-200 hover:border-gray-300\"}`,\n onClick: ()=>setConfig((prev)=>({\n ...prev,\n localAIType: \"ollama\"\n })),\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"font-medium text-gray-900\",\n children: \"Ollama\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/AIConfiguration.tsx\",\n lineNumber: 335,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm text-gray-600\",\n children: \"Open-source, self-hosted AI models\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/AIConfiguration.tsx\",\n lineNumber: 336,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs text-gray-500 mt-1\",\n children: \"Best for: AMD GPUs, CPU-only setups\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/AIConfiguration.tsx\",\n lineNumber: 337,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/AIConfiguration.tsx\",\n lineNumber: 327,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `border-2 rounded-lg p-4 cursor-pointer transition-all ${config.localAIType === \"parallama\" ? \"border-bzzz-primary bg-bzzz-primary bg-opacity-10\" : \"border-gray-200 hover:border-gray-300\"}`,\n onClick: ()=>setConfig((prev)=>({\n ...prev,\n localAIType: \"parallama\"\n })),\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"font-medium text-gray-900\",\n children: \"Parallama\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/AIConfiguration.tsx\",\n lineNumber: 348,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm text-gray-600\",\n children: \"Optimized for parallel processing\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/AIConfiguration.tsx\",\n lineNumber: 349,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs text-gray-500 mt-1\",\n children: \"Best for: NVIDIA GPUs, high performance\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/AIConfiguration.tsx\",\n lineNumber: 350,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/AIConfiguration.tsx\",\n lineNumber: 340,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/AIConfiguration.tsx\",\n lineNumber: 326,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/AIConfiguration.tsx\",\n lineNumber: 324,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"label\", {\n className: \"label\",\n children: \"API Endpoint\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/AIConfiguration.tsx\",\n lineNumber: 356,\n columnNumber: 15\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)(\"input\", {\n type: \"url\",\n value: config.localAIEndpoint,\n onChange: (e)=>setConfig((prev)=>({\n ...prev,\n localAIEndpoint: e.target.value\n })),\n placeholder: \"http://localhost:11434\",\n className: \"input-field flex-1\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/AIConfiguration.tsx\",\n lineNumber: 358,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n type: \"button\",\n onClick: validateLocalAI,\n disabled: validatingLocal,\n className: \"btn-outline whitespace-nowrap\",\n children: validatingLocal ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_ArrowPathIcon_CheckCircleIcon_CpuChipIcon_CurrencyDollarIcon_ExclamationTriangleIcon_EyeIcon_EyeSlashIcon_InformationCircleIcon_ServerIcon_SparklesIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n className: \"h-4 w-4 animate-spin\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/AIConfiguration.tsx\",\n lineNumber: 372,\n columnNumber: 21\n }, this) : \"Test\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/AIConfiguration.tsx\",\n lineNumber: 365,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/AIConfiguration.tsx\",\n lineNumber: 357,\n columnNumber: 15\n }, this),\n localAIValid === true && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center mt-1 text-green-600 text-sm\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_ArrowPathIcon_CheckCircleIcon_CpuChipIcon_CurrencyDollarIcon_ExclamationTriangleIcon_EyeIcon_EyeSlashIcon_InformationCircleIcon_ServerIcon_SparklesIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n className: \"h-4 w-4 mr-1\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/AIConfiguration.tsx\",\n lineNumber: 380,\n columnNumber: 19\n }, this),\n \"Connection successful\"\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/AIConfiguration.tsx\",\n lineNumber: 379,\n columnNumber: 17\n }, this),\n localAIValid === false && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center mt-1 text-red-600 text-sm\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_ArrowPathIcon_CheckCircleIcon_CpuChipIcon_CurrencyDollarIcon_ExclamationTriangleIcon_EyeIcon_EyeSlashIcon_InformationCircleIcon_ServerIcon_SparklesIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n className: \"h-4 w-4 mr-1\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/AIConfiguration.tsx\",\n lineNumber: 386,\n columnNumber: 19\n }, this),\n \"Connection failed\"\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/AIConfiguration.tsx\",\n lineNumber: 385,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/AIConfiguration.tsx\",\n lineNumber: 355,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"label\", {\n className: \"label\",\n children: \"Recommended Models for your system\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/AIConfiguration.tsx\",\n lineNumber: 393,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-blue-50 border border-blue-200 rounded-lg p-3\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm text-blue-800\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"font-medium mb-2\",\n children: [\n \"Based on your system memory (\",\n Math.round(systemInfo?.memory_mb / 1024 || 8),\n \" GB):\"\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/AIConfiguration.tsx\",\n lineNumber: 396,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-wrap gap-2\",\n children: recommendedModels.map((model, index)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"bg-blue-100 text-blue-800 px-2 py-1 rounded text-xs\",\n children: model\n }, index, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/AIConfiguration.tsx\",\n lineNumber: 399,\n columnNumber: 23\n }, this))\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/AIConfiguration.tsx\",\n lineNumber: 397,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/AIConfiguration.tsx\",\n lineNumber: 395,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/AIConfiguration.tsx\",\n lineNumber: 394,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/AIConfiguration.tsx\",\n lineNumber: 392,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/AIConfiguration.tsx\",\n lineNumber: 323,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/AIConfiguration.tsx\",\n lineNumber: 302,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-white border border-gray-200 rounded-lg p-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center justify-between mb-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h3\", {\n className: \"text-lg font-medium text-gray-900 flex items-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_ArrowPathIcon_CheckCircleIcon_CpuChipIcon_CurrencyDollarIcon_ExclamationTriangleIcon_EyeIcon_EyeSlashIcon_InformationCircleIcon_ServerIcon_SparklesIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n className: \"h-6 w-6 text-bzzz-primary mr-2\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/AIConfiguration.tsx\",\n lineNumber: 415,\n columnNumber: 13\n }, this),\n \"OpenAI API\"\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/AIConfiguration.tsx\",\n lineNumber: 414,\n columnNumber: 11\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: \"checkbox\",\n id: \"openaiEnabled\",\n checked: config.openaiEnabled,\n onChange: (e)=>setConfig((prev)=>({\n ...prev,\n openaiEnabled: e.target.checked\n })),\n className: \"h-4 w-4 text-bzzz-primary focus:ring-bzzz-primary border-gray-300 rounded\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/AIConfiguration.tsx\",\n lineNumber: 419,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"label\", {\n htmlFor: \"openaiEnabled\",\n className: \"ml-2 text-sm font-medium text-gray-700\",\n children: \"Enable OpenAI API\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/AIConfiguration.tsx\",\n lineNumber: 426,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/AIConfiguration.tsx\",\n lineNumber: 418,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/AIConfiguration.tsx\",\n lineNumber: 413,\n columnNumber: 9\n }, this),\n config.openaiEnabled && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-y-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"label\", {\n className: \"label\",\n children: \"API Key\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/AIConfiguration.tsx\",\n lineNumber: 435,\n columnNumber: 15\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: \"relative flex-1\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: showApiKey ? \"text\" : \"password\",\n value: config.openaiApiKey,\n onChange: (e)=>setConfig((prev)=>({\n ...prev,\n openaiApiKey: e.target.value\n })),\n placeholder: \"sk-...\",\n className: \"input-field pr-10\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/AIConfiguration.tsx\",\n lineNumber: 438,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n type: \"button\",\n onClick: ()=>setShowApiKey(!showApiKey),\n className: \"absolute inset-y-0 right-0 pr-3 flex items-center\",\n children: showApiKey ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_ArrowPathIcon_CheckCircleIcon_CpuChipIcon_CurrencyDollarIcon_ExclamationTriangleIcon_EyeIcon_EyeSlashIcon_InformationCircleIcon_ServerIcon_SparklesIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n className: \"h-5 w-5 text-gray-400\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/AIConfiguration.tsx\",\n lineNumber: 451,\n columnNumber: 23\n }, this) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_ArrowPathIcon_CheckCircleIcon_CpuChipIcon_CurrencyDollarIcon_ExclamationTriangleIcon_EyeIcon_EyeSlashIcon_InformationCircleIcon_ServerIcon_SparklesIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n className: \"h-5 w-5 text-gray-400\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/AIConfiguration.tsx\",\n lineNumber: 453,\n columnNumber: 23\n }, this)\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/AIConfiguration.tsx\",\n lineNumber: 445,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/AIConfiguration.tsx\",\n lineNumber: 437,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n type: \"button\",\n onClick: validateOpenAI,\n disabled: validatingOpenAI || !config.openaiApiKey,\n className: \"btn-outline whitespace-nowrap\",\n children: validatingOpenAI ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_ArrowPathIcon_CheckCircleIcon_CpuChipIcon_CurrencyDollarIcon_ExclamationTriangleIcon_EyeIcon_EyeSlashIcon_InformationCircleIcon_ServerIcon_SparklesIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n className: \"h-4 w-4 animate-spin\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/AIConfiguration.tsx\",\n lineNumber: 464,\n columnNumber: 21\n }, this) : \"Validate\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/AIConfiguration.tsx\",\n lineNumber: 457,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/AIConfiguration.tsx\",\n lineNumber: 436,\n columnNumber: 15\n }, this),\n openaiValid === true && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center mt-1 text-green-600 text-sm\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_ArrowPathIcon_CheckCircleIcon_CpuChipIcon_CurrencyDollarIcon_ExclamationTriangleIcon_EyeIcon_EyeSlashIcon_InformationCircleIcon_ServerIcon_SparklesIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n className: \"h-4 w-4 mr-1\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/AIConfiguration.tsx\",\n lineNumber: 472,\n columnNumber: 19\n }, this),\n \"API key valid\"\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/AIConfiguration.tsx\",\n lineNumber: 471,\n columnNumber: 17\n }, this),\n openaiValid === false && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center mt-1 text-red-600 text-sm\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_ArrowPathIcon_CheckCircleIcon_CpuChipIcon_CurrencyDollarIcon_ExclamationTriangleIcon_EyeIcon_EyeSlashIcon_InformationCircleIcon_ServerIcon_SparklesIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n className: \"h-4 w-4 mr-1\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/AIConfiguration.tsx\",\n lineNumber: 478,\n columnNumber: 19\n }, this),\n \"Invalid API key\"\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/AIConfiguration.tsx\",\n lineNumber: 477,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/AIConfiguration.tsx\",\n lineNumber: 434,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"label\", {\n className: \"label\",\n children: \"Organization (Optional)\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/AIConfiguration.tsx\",\n lineNumber: 485,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"text\",\n value: config.openaiOrganization,\n onChange: (e)=>setConfig((prev)=>({\n ...prev,\n openaiOrganization: e.target.value\n })),\n placeholder: \"org-...\",\n className: \"input-field\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/AIConfiguration.tsx\",\n lineNumber: 486,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/AIConfiguration.tsx\",\n lineNumber: 484,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"label\", {\n className: \"label\",\n children: \"Default Model\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/AIConfiguration.tsx\",\n lineNumber: 496,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"select\", {\n value: config.openaiDefaultModel,\n onChange: (e)=>setConfig((prev)=>({\n ...prev,\n openaiDefaultModel: e.target.value\n })),\n className: \"input-field\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"option\", {\n value: \"gpt-4\",\n children: \"GPT-4\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/AIConfiguration.tsx\",\n lineNumber: 502,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"option\", {\n value: \"gpt-4-turbo\",\n children: \"GPT-4 Turbo\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/AIConfiguration.tsx\",\n lineNumber: 503,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"option\", {\n value: \"gpt-3.5-turbo\",\n children: \"GPT-3.5 Turbo\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/AIConfiguration.tsx\",\n lineNumber: 504,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/AIConfiguration.tsx\",\n lineNumber: 497,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/AIConfiguration.tsx\",\n lineNumber: 495,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/AIConfiguration.tsx\",\n lineNumber: 433,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/AIConfiguration.tsx\",\n lineNumber: 412,\n columnNumber: 7\n }, this),\n config.openaiEnabled && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-white border border-gray-200 rounded-lg p-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h3\", {\n className: \"text-lg font-medium text-gray-900 mb-4 flex items-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_ArrowPathIcon_CheckCircleIcon_CpuChipIcon_CurrencyDollarIcon_ExclamationTriangleIcon_EyeIcon_EyeSlashIcon_InformationCircleIcon_ServerIcon_SparklesIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {\n className: \"h-6 w-6 text-bzzz-primary mr-2\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/AIConfiguration.tsx\",\n lineNumber: 515,\n columnNumber: 13\n }, this),\n \"Cost Management\"\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/AIConfiguration.tsx\",\n lineNumber: 514,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid grid-cols-1 md:grid-cols-2 gap-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"label\", {\n className: \"label\",\n children: \"Daily Cost Limit ($)\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/AIConfiguration.tsx\",\n lineNumber: 521,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"number\",\n value: config.dailyCostLimit,\n onChange: (e)=>setConfig((prev)=>({\n ...prev,\n dailyCostLimit: parseFloat(e.target.value) || 0\n })),\n min: \"0\",\n step: \"0.01\",\n className: \"input-field\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/AIConfiguration.tsx\",\n lineNumber: 522,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/AIConfiguration.tsx\",\n lineNumber: 520,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"label\", {\n className: \"label\",\n children: \"Monthly Cost Limit ($)\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/AIConfiguration.tsx\",\n lineNumber: 533,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"number\",\n value: config.monthlyCostLimit,\n onChange: (e)=>setConfig((prev)=>({\n ...prev,\n monthlyCostLimit: parseFloat(e.target.value) || 0\n })),\n min: \"0\",\n step: \"0.01\",\n className: \"input-field\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/AIConfiguration.tsx\",\n lineNumber: 534,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/AIConfiguration.tsx\",\n lineNumber: 532,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/AIConfiguration.tsx\",\n lineNumber: 519,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mt-4\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"checkbox\",\n id: \"costAlerts\",\n checked: config.costAlerts,\n onChange: (e)=>setConfig((prev)=>({\n ...prev,\n costAlerts: e.target.checked\n })),\n className: \"h-4 w-4 text-bzzz-primary focus:ring-bzzz-primary border-gray-300 rounded\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/AIConfiguration.tsx\",\n lineNumber: 547,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"label\", {\n htmlFor: \"costAlerts\",\n className: \"ml-2 text-sm font-medium text-gray-700\",\n children: \"Send alerts when approaching cost limits\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/AIConfiguration.tsx\",\n lineNumber: 554,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/AIConfiguration.tsx\",\n lineNumber: 546,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/AIConfiguration.tsx\",\n lineNumber: 545,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/AIConfiguration.tsx\",\n lineNumber: 513,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-white border border-gray-200 rounded-lg p-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h3\", {\n className: \"text-lg font-medium text-gray-900 mb-4\",\n children: \"Provider Preference\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/AIConfiguration.tsx\",\n lineNumber: 564,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-y-3\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"label\", {\n className: \"label\",\n children: \"Preferred AI Provider\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/AIConfiguration.tsx\",\n lineNumber: 568,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"select\", {\n value: config.preferredProvider,\n onChange: (e)=>setConfig((prev)=>({\n ...prev,\n preferredProvider: e.target.value\n })),\n className: \"input-field\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"option\", {\n value: \"local\",\n children: \"Local AI Only\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/AIConfiguration.tsx\",\n lineNumber: 574,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"option\", {\n value: \"openai\",\n children: \"OpenAI Only\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/AIConfiguration.tsx\",\n lineNumber: 575,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"option\", {\n value: \"hybrid\",\n children: \"Hybrid (Local first, OpenAI fallback)\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/AIConfiguration.tsx\",\n lineNumber: 576,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/AIConfiguration.tsx\",\n lineNumber: 569,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/AIConfiguration.tsx\",\n lineNumber: 567,\n columnNumber: 11\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: \"checkbox\",\n id: \"fallbackEnabled\",\n checked: config.fallbackEnabled,\n onChange: (e)=>setConfig((prev)=>({\n ...prev,\n fallbackEnabled: e.target.checked\n })),\n className: \"h-4 w-4 text-bzzz-primary focus:ring-bzzz-primary border-gray-300 rounded\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/AIConfiguration.tsx\",\n lineNumber: 581,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"label\", {\n htmlFor: \"fallbackEnabled\",\n className: \"ml-2 text-sm font-medium text-gray-700\",\n children: \"Enable automatic fallback between providers\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/AIConfiguration.tsx\",\n lineNumber: 588,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/AIConfiguration.tsx\",\n lineNumber: 580,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/AIConfiguration.tsx\",\n lineNumber: 566,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/AIConfiguration.tsx\",\n lineNumber: 563,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex justify-between pt-6 border-t border-gray-200\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: onBack && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n type: \"button\",\n onClick: onBack,\n className: \"btn-outline\",\n children: \"Back\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/AIConfiguration.tsx\",\n lineNumber: 599,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/AIConfiguration.tsx\",\n lineNumber: 597,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n type: \"submit\",\n className: \"btn-primary\",\n disabled: !config.openaiEnabled && !config.localAIEnabled,\n children: isCompleted ? \"Continue\" : \"Next: Resource Allocation\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/AIConfiguration.tsx\",\n lineNumber: 605,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/AIConfiguration.tsx\",\n lineNumber: 596,\n columnNumber: 7\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/AIConfiguration.tsx\",\n lineNumber: 225,\n columnNumber: 5\n }, this);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9hcHAvc2V0dXAvY29tcG9uZW50cy9BSUNvbmZpZ3VyYXRpb24udHN4IiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFMkM7QUFZUDtBQTZDckIsU0FBU1ksZ0JBQWdCLEVBQ3RDQyxVQUFVLEVBQ1ZDLFVBQVUsRUFDVkMsVUFBVSxFQUNWQyxNQUFNLEVBQ05DLFdBQVcsRUFDVTtJQUNyQixNQUFNLENBQUNDLFFBQVFDLFVBQVUsR0FBR25CLCtDQUFRQSxDQUFXO1FBQzdDb0IsZUFBZTtRQUNmQyxjQUFjO1FBQ2RDLG9CQUFvQjtRQUNwQkMsb0JBQW9CO1FBRXBCQyxnQkFBZ0I7UUFDaEJDLGtCQUFrQjtRQUNsQkMsWUFBWTtRQUVaQyxnQkFBZ0I7UUFDaEJDLGFBQWE7UUFDYkMsaUJBQWlCO1FBQ2pCQyxlQUFlO1lBQUM7WUFBVTtTQUFZO1FBRXRDQyxpQkFBaUI7UUFDakJDLGNBQWM7UUFDZEMsY0FBYztRQUVkQyxtQkFBbUI7UUFDbkJDLGlCQUFpQjtJQUNuQjtJQUVBLE1BQU0sQ0FBQ0MsWUFBWUMsY0FBYyxHQUFHckMsK0NBQVFBLENBQUM7SUFDN0MsTUFBTSxDQUFDc0Msa0JBQWtCQyxvQkFBb0IsR0FBR3ZDLCtDQUFRQSxDQUFDO0lBQ3pELE1BQU0sQ0FBQ3dDLGlCQUFpQkMsbUJBQW1CLEdBQUd6QywrQ0FBUUEsQ0FBQztJQUN2RCxNQUFNLENBQUMwQyxhQUFhQyxlQUFlLEdBQUczQywrQ0FBUUEsQ0FBaUI7SUFDL0QsTUFBTSxDQUFDNEMsY0FBY0MsZ0JBQWdCLEdBQUc3QywrQ0FBUUEsQ0FBaUI7SUFFakUsOENBQThDO0lBQzlDQyxnREFBU0EsQ0FBQztRQUNSLElBQUlhLFdBQVdnQyxFQUFFLEVBQUU7WUFDakIzQixVQUFVNEIsQ0FBQUEsT0FBUztvQkFBRSxHQUFHQSxJQUFJO29CQUFFLEdBQUdqQyxXQUFXZ0MsRUFBRTtnQkFBQztRQUNqRDtRQUVBLCtCQUErQjtRQUMvQixJQUFJakMsWUFBWW1DLE1BQU1DLFNBQVMsR0FBRztZQUNoQyxNQUFNQyxZQUFZckMsV0FBV21DLElBQUksQ0FBQ0csSUFBSSxDQUFDLENBQUNDLE1BQWlCQSxJQUFJQyxJQUFJLEtBQUs7WUFDdEUsTUFBTUMsU0FBU3pDLFdBQVdtQyxJQUFJLENBQUNHLElBQUksQ0FBQyxDQUFDQyxNQUFpQkEsSUFBSUMsSUFBSSxLQUFLO1lBRW5FLElBQUlILFdBQVc7Z0JBQ2IvQixVQUFVNEIsQ0FBQUEsT0FBUzt3QkFDakIsR0FBR0EsSUFBSTt3QkFDUGhCLGlCQUFpQjt3QkFDakJILGFBQWE7d0JBQ2JJLGNBQWNuQixXQUFXbUMsSUFBSSxDQUFDTyxJQUFJLENBQUMsQ0FBQ0gsTUFBaUJBLElBQUlDLElBQUksS0FBSyxXQUFXRyxRQUFRO29CQUN2RjtZQUNGLE9BQU8sSUFBSUYsUUFBUTtnQkFDakJuQyxVQUFVNEIsQ0FBQUEsT0FBUzt3QkFDakIsR0FBR0EsSUFBSTt3QkFDUGhCLGlCQUFpQjt3QkFDakJILGFBQWE7d0JBQ2JJLGNBQWNuQixXQUFXbUMsSUFBSSxDQUFDTyxJQUFJLENBQUMsQ0FBQ0gsTUFBaUJBLElBQUlDLElBQUksS0FBSyxRQUFRRyxRQUFRO29CQUNwRjtZQUNGO1FBQ0Y7SUFDRixHQUFHO1FBQUMzQztRQUFZQztLQUFXO0lBRTNCLE1BQU0yQyxpQkFBaUI7UUFDckIsSUFBSSxDQUFDdkMsT0FBT0csWUFBWSxFQUFFO1lBQ3hCc0IsZUFBZTtZQUNmO1FBQ0Y7UUFFQUosb0JBQW9CO1FBQ3BCLElBQUk7WUFDRixvREFBb0Q7WUFDcEQsb0NBQW9DO1lBQ3BDLE1BQU0sSUFBSW1CLFFBQVFDLENBQUFBLFVBQVdDLFdBQVdELFNBQVM7WUFDakRoQixlQUFlO1FBQ2pCLEVBQUUsT0FBT2tCLE9BQU87WUFDZGxCLGVBQWU7UUFDakIsU0FBVTtZQUNSSixvQkFBb0I7UUFDdEI7SUFDRjtJQUVBLE1BQU11QixrQkFBa0I7UUFDdEIsSUFBSSxDQUFDNUMsT0FBT1csZUFBZSxFQUFFO1lBQzNCZ0IsZ0JBQWdCO1lBQ2hCO1FBQ0Y7UUFFQUosbUJBQW1CO1FBQ25CLElBQUk7WUFDRixNQUFNc0IsV0FBVyxNQUFNQyxNQUFNLENBQUMsRUFBRTlDLE9BQU9XLGVBQWUsQ0FBQyxTQUFTLENBQUM7WUFDakVnQixnQkFBZ0JrQixTQUFTRSxFQUFFO1FBQzdCLEVBQUUsT0FBT0osT0FBTztZQUNkaEIsZ0JBQWdCO1FBQ2xCLFNBQVU7WUFDUkosbUJBQW1CO1FBQ3JCO0lBQ0Y7SUFFQSxNQUFNeUIsd0JBQXdCO1FBQzVCLElBQUksQ0FBQ3JELFlBQVltQyxNQUFNQyxRQUFRO1lBQzdCLE9BQU87Z0JBQ0xrQixnQkFBZ0I7Z0JBQ2hCZCxNQUFNO2dCQUNOZSxTQUFTO1lBQ1g7UUFDRjtRQUVBLE1BQU1wQixPQUFPbkMsV0FBV21DLElBQUk7UUFDNUIsTUFBTXFCLGFBQWFyQixLQUFLc0IsTUFBTSxDQUFDLENBQUNsQixNQUFpQkEsSUFBSUMsSUFBSSxLQUFLO1FBQzlELE1BQU1rQixVQUFVdkIsS0FBS3NCLE1BQU0sQ0FBQyxDQUFDbEIsTUFBaUJBLElBQUlDLElBQUksS0FBSztRQUUzRCxJQUFJZ0IsV0FBV3BCLE1BQU0sR0FBRyxHQUFHO1lBQ3pCLE9BQU87Z0JBQ0xrQixnQkFBZ0I7Z0JBQ2hCZCxNQUFNO2dCQUNOZSxTQUFTLENBQUMsRUFBRUMsVUFBVSxDQUFDLEVBQUUsQ0FBQ2IsSUFBSSxDQUFDLE1BQU0sRUFBRWEsVUFBVSxDQUFDLEVBQUUsQ0FBQ0csTUFBTSxDQUFDLHFFQUFxRSxDQUFDO1lBQ3BJO1FBQ0Y7UUFFQSxJQUFJRCxRQUFRdEIsTUFBTSxHQUFHLEdBQUc7WUFDdEIsT0FBTztnQkFDTGtCLGdCQUFnQjtnQkFDaEJkLE1BQU07Z0JBQ05lLFNBQVMsQ0FBQyxFQUFFRyxPQUFPLENBQUMsRUFBRSxDQUFDZixJQUFJLENBQUMsNkRBQTZELENBQUM7WUFDNUY7UUFDRjtRQUVBLE9BQU87WUFDTFcsZ0JBQWdCO1lBQ2hCZCxNQUFNO1lBQ05lLFNBQVM7UUFDWDtJQUNGO0lBRUEsTUFBTUssdUJBQXVCO1FBQzNCLE1BQU1DLFdBQVc3RCxZQUFZOEQsWUFBWUMsS0FBS0MsS0FBSyxDQUFDaEUsV0FBVzhELFNBQVMsR0FBRyxRQUFRO1FBRW5GLElBQUlELFlBQVksSUFBSTtZQUNsQixPQUFPO2dCQUFDO2dCQUFjO2dCQUFpQjthQUFlO1FBQ3hELE9BQU8sSUFBSUEsWUFBWSxJQUFJO1lBQ3pCLE9BQU87Z0JBQUM7Z0JBQWM7Z0JBQWlCO2FBQVk7UUFDckQsT0FBTztZQUNMLE9BQU87Z0JBQUM7Z0JBQWE7Z0JBQWdCO2FBQU87UUFDOUM7SUFDRjtJQUVBLE1BQU1JLGVBQWUsQ0FBQ0M7UUFDcEJBLEVBQUVDLGNBQWM7UUFFaEIsdURBQXVEO1FBQ3ZELElBQUksQ0FBQzlELE9BQU9FLGFBQWEsSUFBSSxDQUFDRixPQUFPUyxjQUFjLEVBQUU7WUFDbkRzRCxNQUFNO1lBQ047UUFDRjtRQUVBbEUsV0FBVztZQUFFK0IsSUFBSTVCO1FBQU87SUFDMUI7SUFFQSxNQUFNZ0Usb0JBQW9CaEI7SUFDMUIsTUFBTWlCLG9CQUFvQlY7SUFFMUIscUJBQ0UsOERBQUNXO1FBQUtDLFVBQVVQO1FBQWNRLFdBQVU7O1lBRXJDekUsWUFBWW1DLHNCQUNYLDhEQUFDdUM7Z0JBQUlELFdBQVU7O2tDQUNiLDhEQUFDRTt3QkFBR0YsV0FBVTs7MENBQ1osOERBQUNwRixpUEFBV0E7Z0NBQUNvRixXQUFVOzs7Ozs7NEJBQW1DOzs7Ozs7O2tDQUk1RCw4REFBQ0M7d0JBQUlELFdBQVcsQ0FBQywyQkFBMkIsRUFDMUNKLGtCQUFrQjdCLElBQUksS0FBSyxZQUFZLGlDQUN2QzZCLGtCQUFrQjdCLElBQUksS0FBSyxZQUFZLG1DQUN2Qyw2QkFDRCxDQUFDO2tDQUNBLDRFQUFDa0M7NEJBQUlELFdBQVU7OzhDQUNiLDhEQUFDOUUsaVBBQXFCQTtvQ0FBQzhFLFdBQVcsQ0FBQyxvQkFBb0IsRUFDckRKLGtCQUFrQjdCLElBQUksS0FBSyxZQUFZLG1CQUN2QzZCLGtCQUFrQjdCLElBQUksS0FBSyxZQUFZLG9CQUN2QyxnQkFDRCxDQUFDOzs7Ozs7OENBQ0YsOERBQUNrQzs7c0RBQ0MsOERBQUNBOzRDQUFJRCxXQUFXLENBQUMsWUFBWSxFQUMzQkosa0JBQWtCN0IsSUFBSSxLQUFLLFlBQVksbUJBQ3ZDNkIsa0JBQWtCN0IsSUFBSSxLQUFLLFlBQVksb0JBQ3ZDLGdCQUNELENBQUM7c0RBQ0M2QixrQkFBa0JmLGNBQWM7Ozs7OztzREFFbkMsOERBQUNvQjs0Q0FBSUQsV0FBVyxDQUFDLGFBQWEsRUFDNUJKLGtCQUFrQjdCLElBQUksS0FBSyxZQUFZLG1CQUN2QzZCLGtCQUFrQjdCLElBQUksS0FBSyxZQUFZLG9CQUN2QyxnQkFDRCxDQUFDO3NEQUNDNkIsa0JBQWtCZCxPQUFPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztvQkFNakN2RCxXQUFXbUMsSUFBSSxDQUFDQyxNQUFNLEdBQUcsbUJBQ3hCLDhEQUFDc0M7d0JBQUlELFdBQVU7OzBDQUNiLDhEQUFDQztnQ0FBSUQsV0FBVTs7a0RBQ2IsOERBQUNHO3dDQUNDcEMsTUFBSzt3Q0FDTHFDLElBQUc7d0NBQ0hDLFNBQVN6RSxPQUFPYSxlQUFlO3dDQUMvQjZELFVBQVUsQ0FBQ2IsSUFBTTVELFVBQVU0QixDQUFBQSxPQUFTO29EQUFFLEdBQUdBLElBQUk7b0RBQUVoQixpQkFBaUJnRCxFQUFFYyxNQUFNLENBQUNGLE9BQU87Z0RBQUM7d0NBQ2pGTCxXQUFVOzs7Ozs7a0RBRVosOERBQUNRO3dDQUFNQyxTQUFRO3dDQUFrQlQsV0FBVTtrREFBeUM7Ozs7Ozs7Ozs7Ozs0QkFLckZwRSxPQUFPYSxlQUFlLGtCQUNyQiw4REFBQ3dEOztrREFDQyw4REFBQ087d0NBQU1SLFdBQVU7a0RBQVE7Ozs7OztrREFDekIsOERBQUNVO3dDQUNDQyxPQUFPL0UsT0FBT2MsWUFBWTt3Q0FDMUI0RCxVQUFVLENBQUNiLElBQU01RCxVQUFVNEIsQ0FBQUEsT0FBUztvREFBRSxHQUFHQSxJQUFJO29EQUFFZixjQUFjK0MsRUFBRWMsTUFBTSxDQUFDSSxLQUFLO2dEQUFDO3dDQUM1RVgsV0FBVTs7MERBRVYsOERBQUNZO2dEQUFPRCxPQUFNOzBEQUFHOzs7Ozs7NENBQ2hCcEYsV0FBV21DLElBQUksQ0FBQ21ELEdBQUcsQ0FBQyxDQUFDL0MsS0FBY2dELHNCQUNsQyw4REFBQ0Y7b0RBQW1CRCxPQUFPN0MsSUFBSUksSUFBSTs7d0RBQ2hDSixJQUFJSSxJQUFJO3dEQUFDO3dEQUFHSixJQUFJQyxJQUFJLENBQUNnRCxXQUFXO3dEQUFHO3dEQUFLakQsSUFBSW9CLE1BQU07O21EQUR4QzRCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzswQkFhN0IsOERBQUNiO2dCQUFJRCxXQUFVOztrQ0FDYiw4REFBQ0M7d0JBQUlELFdBQVU7OzBDQUNiLDhEQUFDRTtnQ0FBR0YsV0FBVTs7a0RBQ1osOERBQUNqRixpUEFBVUE7d0NBQUNpRixXQUFVOzs7Ozs7b0NBQW1DOzs7Ozs7OzBDQUczRCw4REFBQ0M7Z0NBQUlELFdBQVU7O2tEQUNiLDhEQUFDRzt3Q0FDQ3BDLE1BQUs7d0NBQ0xxQyxJQUFHO3dDQUNIQyxTQUFTekUsT0FBT1MsY0FBYzt3Q0FDOUJpRSxVQUFVLENBQUNiLElBQU01RCxVQUFVNEIsQ0FBQUEsT0FBUztvREFBRSxHQUFHQSxJQUFJO29EQUFFcEIsZ0JBQWdCb0QsRUFBRWMsTUFBTSxDQUFDRixPQUFPO2dEQUFDO3dDQUNoRkwsV0FBVTs7Ozs7O2tEQUVaLDhEQUFDUTt3Q0FBTUMsU0FBUTt3Q0FBaUJULFdBQVU7a0RBQXlDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7b0JBTXRGcEUsT0FBT1MsY0FBYyxrQkFDcEIsOERBQUM0RDt3QkFBSUQsV0FBVTs7MENBQ2IsOERBQUNDOztrREFDQyw4REFBQ087d0NBQU1SLFdBQVU7a0RBQVE7Ozs7OztrREFDekIsOERBQUNDO3dDQUFJRCxXQUFVOzswREFDYiw4REFBQ0M7Z0RBQ0NELFdBQVcsQ0FBQyxzREFBc0QsRUFDaEVwRSxPQUFPVSxXQUFXLEtBQUssV0FDbkIsc0RBQ0Esd0NBQ0wsQ0FBQztnREFDRjBFLFNBQVMsSUFBTW5GLFVBQVU0QixDQUFBQSxPQUFTOzREQUFFLEdBQUdBLElBQUk7NERBQUVuQixhQUFhO3dEQUFTOztrRUFFbkUsOERBQUMyRDt3REFBSUQsV0FBVTtrRUFBNEI7Ozs7OztrRUFDM0MsOERBQUNDO3dEQUFJRCxXQUFVO2tFQUF3Qjs7Ozs7O2tFQUN2Qyw4REFBQ0M7d0RBQUlELFdBQVU7a0VBQTZCOzs7Ozs7Ozs7Ozs7MERBRzlDLDhEQUFDQztnREFDQ0QsV0FBVyxDQUFDLHNEQUFzRCxFQUNoRXBFLE9BQU9VLFdBQVcsS0FBSyxjQUNuQixzREFDQSx3Q0FDTCxDQUFDO2dEQUNGMEUsU0FBUyxJQUFNbkYsVUFBVTRCLENBQUFBLE9BQVM7NERBQUUsR0FBR0EsSUFBSTs0REFBRW5CLGFBQWE7d0RBQVk7O2tFQUV0RSw4REFBQzJEO3dEQUFJRCxXQUFVO2tFQUE0Qjs7Ozs7O2tFQUMzQyw4REFBQ0M7d0RBQUlELFdBQVU7a0VBQXdCOzs7Ozs7a0VBQ3ZDLDhEQUFDQzt3REFBSUQsV0FBVTtrRUFBNkI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzswQ0FLbEQsOERBQUNDOztrREFDQyw4REFBQ087d0NBQU1SLFdBQVU7a0RBQVE7Ozs7OztrREFDekIsOERBQUNDO3dDQUFJRCxXQUFVOzswREFDYiw4REFBQ0c7Z0RBQ0NwQyxNQUFLO2dEQUNMNEMsT0FBTy9FLE9BQU9XLGVBQWU7Z0RBQzdCK0QsVUFBVSxDQUFDYixJQUFNNUQsVUFBVTRCLENBQUFBLE9BQVM7NERBQUUsR0FBR0EsSUFBSTs0REFBRWxCLGlCQUFpQmtELEVBQUVjLE1BQU0sQ0FBQ0ksS0FBSzt3REFBQztnREFDL0VNLGFBQVk7Z0RBQ1pqQixXQUFVOzs7Ozs7MERBRVosOERBQUNrQjtnREFDQ25ELE1BQUs7Z0RBQ0xpRCxTQUFTeEM7Z0RBQ1QyQyxVQUFVakU7Z0RBQ1Y4QyxXQUFVOzBEQUVUOUMsZ0NBQ0MsOERBQUM3QixpUEFBYUE7b0RBQUMyRSxXQUFVOzs7OzsyREFFekI7Ozs7Ozs7Ozs7OztvQ0FJTDFDLGlCQUFpQixzQkFDaEIsOERBQUMyQzt3Q0FBSUQsV0FBVTs7MERBQ2IsOERBQUNoRixpUEFBZUE7Z0RBQUNnRixXQUFVOzs7Ozs7NENBQWlCOzs7Ozs7O29DQUkvQzFDLGlCQUFpQix1QkFDaEIsOERBQUMyQzt3Q0FBSUQsV0FBVTs7MERBQ2IsOERBQUMvRSxpUEFBdUJBO2dEQUFDK0UsV0FBVTs7Ozs7OzRDQUFpQjs7Ozs7Ozs7Ozs7OzswQ0FNMUQsOERBQUNDOztrREFDQyw4REFBQ087d0NBQU1SLFdBQVU7a0RBQVE7Ozs7OztrREFDekIsOERBQUNDO3dDQUFJRCxXQUFVO2tEQUNiLDRFQUFDQzs0Q0FBSUQsV0FBVTs7OERBQ2IsOERBQUNvQjtvREFBRXBCLFdBQVU7O3dEQUFtQjt3REFBOEJWLEtBQUtDLEtBQUssQ0FBQ2hFLFlBQVk4RCxZQUFZLFFBQVE7d0RBQUc7Ozs7Ozs7OERBQzVHLDhEQUFDWTtvREFBSUQsV0FBVTs4REFDWkgsa0JBQWtCZ0IsR0FBRyxDQUFDLENBQUNRLE9BQU9QLHNCQUM3Qiw4REFBQ1E7NERBQWlCdEIsV0FBVTtzRUFDekJxQjsyREFEUVA7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzswQkFhM0IsOERBQUNiO2dCQUFJRCxXQUFVOztrQ0FDYiw4REFBQ0M7d0JBQUlELFdBQVU7OzBDQUNiLDhEQUFDRTtnQ0FBR0YsV0FBVTs7a0RBQ1osOERBQUNuRixpUEFBWUE7d0NBQUNtRixXQUFVOzs7Ozs7b0NBQW1DOzs7Ozs7OzBDQUc3RCw4REFBQ0M7Z0NBQUlELFdBQVU7O2tEQUNiLDhEQUFDRzt3Q0FDQ3BDLE1BQUs7d0NBQ0xxQyxJQUFHO3dDQUNIQyxTQUFTekUsT0FBT0UsYUFBYTt3Q0FDN0J3RSxVQUFVLENBQUNiLElBQU01RCxVQUFVNEIsQ0FBQUEsT0FBUztvREFBRSxHQUFHQSxJQUFJO29EQUFFM0IsZUFBZTJELEVBQUVjLE1BQU0sQ0FBQ0YsT0FBTztnREFBQzt3Q0FDL0VMLFdBQVU7Ozs7OztrREFFWiw4REFBQ1E7d0NBQU1DLFNBQVE7d0NBQWdCVCxXQUFVO2tEQUF5Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7O29CQU1yRnBFLE9BQU9FLGFBQWEsa0JBQ25CLDhEQUFDbUU7d0JBQUlELFdBQVU7OzBDQUNiLDhEQUFDQzs7a0RBQ0MsOERBQUNPO3dDQUFNUixXQUFVO2tEQUFROzs7Ozs7a0RBQ3pCLDhEQUFDQzt3Q0FBSUQsV0FBVTs7MERBQ2IsOERBQUNDO2dEQUFJRCxXQUFVOztrRUFDYiw4REFBQ0c7d0RBQ0NwQyxNQUFNakIsYUFBYSxTQUFTO3dEQUM1QjZELE9BQU8vRSxPQUFPRyxZQUFZO3dEQUMxQnVFLFVBQVUsQ0FBQ2IsSUFBTTVELFVBQVU0QixDQUFBQSxPQUFTO29FQUFFLEdBQUdBLElBQUk7b0VBQUUxQixjQUFjMEQsRUFBRWMsTUFBTSxDQUFDSSxLQUFLO2dFQUFDO3dEQUM1RU0sYUFBWTt3REFDWmpCLFdBQVU7Ozs7OztrRUFFWiw4REFBQ2tCO3dEQUNDbkQsTUFBSzt3REFDTGlELFNBQVMsSUFBTWpFLGNBQWMsQ0FBQ0Q7d0RBQzlCa0QsV0FBVTtrRUFFVGxELDJCQUNDLDhEQUFDMUIsaVBBQVlBOzREQUFDNEUsV0FBVTs7Ozs7aUZBRXhCLDhEQUFDN0Usa1BBQU9BOzREQUFDNkUsV0FBVTs7Ozs7Ozs7Ozs7Ozs7Ozs7MERBSXpCLDhEQUFDa0I7Z0RBQ0NuRCxNQUFLO2dEQUNMaUQsU0FBUzdDO2dEQUNUZ0QsVUFBVW5FLG9CQUFvQixDQUFDcEIsT0FBT0csWUFBWTtnREFDbERpRSxXQUFVOzBEQUVUaEQsaUNBQ0MsOERBQUMzQixpUEFBYUE7b0RBQUMyRSxXQUFVOzs7OzsyREFFekI7Ozs7Ozs7Ozs7OztvQ0FJTDVDLGdCQUFnQixzQkFDZiw4REFBQzZDO3dDQUFJRCxXQUFVOzswREFDYiw4REFBQ2hGLGlQQUFlQTtnREFBQ2dGLFdBQVU7Ozs7Ozs0Q0FBaUI7Ozs7Ozs7b0NBSS9DNUMsZ0JBQWdCLHVCQUNmLDhEQUFDNkM7d0NBQUlELFdBQVU7OzBEQUNiLDhEQUFDL0UsaVBBQXVCQTtnREFBQytFLFdBQVU7Ozs7Ozs0Q0FBaUI7Ozs7Ozs7Ozs7Ozs7MENBTTFELDhEQUFDQzs7a0RBQ0MsOERBQUNPO3dDQUFNUixXQUFVO2tEQUFROzs7Ozs7a0RBQ3pCLDhEQUFDRzt3Q0FDQ3BDLE1BQUs7d0NBQ0w0QyxPQUFPL0UsT0FBT0ksa0JBQWtCO3dDQUNoQ3NFLFVBQVUsQ0FBQ2IsSUFBTTVELFVBQVU0QixDQUFBQSxPQUFTO29EQUFFLEdBQUdBLElBQUk7b0RBQUV6QixvQkFBb0J5RCxFQUFFYyxNQUFNLENBQUNJLEtBQUs7Z0RBQUM7d0NBQ2xGTSxhQUFZO3dDQUNaakIsV0FBVTs7Ozs7Ozs7Ozs7OzBDQUlkLDhEQUFDQzs7a0RBQ0MsOERBQUNPO3dDQUFNUixXQUFVO2tEQUFROzs7Ozs7a0RBQ3pCLDhEQUFDVTt3Q0FDQ0MsT0FBTy9FLE9BQU9LLGtCQUFrQjt3Q0FDaENxRSxVQUFVLENBQUNiLElBQU01RCxVQUFVNEIsQ0FBQUEsT0FBUztvREFBRSxHQUFHQSxJQUFJO29EQUFFeEIsb0JBQW9Cd0QsRUFBRWMsTUFBTSxDQUFDSSxLQUFLO2dEQUFDO3dDQUNsRlgsV0FBVTs7MERBRVYsOERBQUNZO2dEQUFPRCxPQUFNOzBEQUFROzs7Ozs7MERBQ3RCLDhEQUFDQztnREFBT0QsT0FBTTswREFBYzs7Ozs7OzBEQUM1Qiw4REFBQ0M7Z0RBQU9ELE9BQU07MERBQWdCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7WUFRdkMvRSxPQUFPRSxhQUFhLGtCQUNuQiw4REFBQ21FO2dCQUFJRCxXQUFVOztrQ0FDYiw4REFBQ0U7d0JBQUdGLFdBQVU7OzBDQUNaLDhEQUFDbEYsa1BBQWtCQTtnQ0FBQ2tGLFdBQVU7Ozs7Ozs0QkFBbUM7Ozs7Ozs7a0NBSW5FLDhEQUFDQzt3QkFBSUQsV0FBVTs7MENBQ2IsOERBQUNDOztrREFDQyw4REFBQ087d0NBQU1SLFdBQVU7a0RBQVE7Ozs7OztrREFDekIsOERBQUNHO3dDQUNDcEMsTUFBSzt3Q0FDTDRDLE9BQU8vRSxPQUFPTSxjQUFjO3dDQUM1Qm9FLFVBQVUsQ0FBQ2IsSUFBTTVELFVBQVU0QixDQUFBQSxPQUFTO29EQUFFLEdBQUdBLElBQUk7b0RBQUV2QixnQkFBZ0JxRixXQUFXOUIsRUFBRWMsTUFBTSxDQUFDSSxLQUFLLEtBQUs7Z0RBQUU7d0NBQy9GYSxLQUFJO3dDQUNKQyxNQUFLO3dDQUNMekIsV0FBVTs7Ozs7Ozs7Ozs7OzBDQUlkLDhEQUFDQzs7a0RBQ0MsOERBQUNPO3dDQUFNUixXQUFVO2tEQUFROzs7Ozs7a0RBQ3pCLDhEQUFDRzt3Q0FDQ3BDLE1BQUs7d0NBQ0w0QyxPQUFPL0UsT0FBT08sZ0JBQWdCO3dDQUM5Qm1FLFVBQVUsQ0FBQ2IsSUFBTTVELFVBQVU0QixDQUFBQSxPQUFTO29EQUFFLEdBQUdBLElBQUk7b0RBQUV0QixrQkFBa0JvRixXQUFXOUIsRUFBRWMsTUFBTSxDQUFDSSxLQUFLLEtBQUs7Z0RBQUU7d0NBQ2pHYSxLQUFJO3dDQUNKQyxNQUFLO3dDQUNMekIsV0FBVTs7Ozs7Ozs7Ozs7Ozs7Ozs7O2tDQUtoQiw4REFBQ0M7d0JBQUlELFdBQVU7a0NBQ2IsNEVBQUNDOzRCQUFJRCxXQUFVOzs4Q0FDYiw4REFBQ0c7b0NBQ0NwQyxNQUFLO29DQUNMcUMsSUFBRztvQ0FDSEMsU0FBU3pFLE9BQU9RLFVBQVU7b0NBQzFCa0UsVUFBVSxDQUFDYixJQUFNNUQsVUFBVTRCLENBQUFBLE9BQVM7Z0RBQUUsR0FBR0EsSUFBSTtnREFBRXJCLFlBQVlxRCxFQUFFYyxNQUFNLENBQUNGLE9BQU87NENBQUM7b0NBQzVFTCxXQUFVOzs7Ozs7OENBRVosOERBQUNRO29DQUFNQyxTQUFRO29DQUFhVCxXQUFVOzhDQUF5Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7MEJBU3ZGLDhEQUFDQztnQkFBSUQsV0FBVTs7a0NBQ2IsOERBQUNFO3dCQUFHRixXQUFVO2tDQUF5Qzs7Ozs7O2tDQUV2RCw4REFBQ0M7d0JBQUlELFdBQVU7OzBDQUNiLDhEQUFDQzs7a0RBQ0MsOERBQUNPO3dDQUFNUixXQUFVO2tEQUFROzs7Ozs7a0RBQ3pCLDhEQUFDVTt3Q0FDQ0MsT0FBTy9FLE9BQU9nQixpQkFBaUI7d0NBQy9CMEQsVUFBVSxDQUFDYixJQUFNNUQsVUFBVTRCLENBQUFBLE9BQVM7b0RBQUUsR0FBR0EsSUFBSTtvREFBRWIsbUJBQW1CNkMsRUFBRWMsTUFBTSxDQUFDSSxLQUFLO2dEQUFrQzt3Q0FDbEhYLFdBQVU7OzBEQUVWLDhEQUFDWTtnREFBT0QsT0FBTTswREFBUTs7Ozs7OzBEQUN0Qiw4REFBQ0M7Z0RBQU9ELE9BQU07MERBQVM7Ozs7OzswREFDdkIsOERBQUNDO2dEQUFPRCxPQUFNOzBEQUFTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7MENBSTNCLDhEQUFDVjtnQ0FBSUQsV0FBVTs7a0RBQ2IsOERBQUNHO3dDQUNDcEMsTUFBSzt3Q0FDTHFDLElBQUc7d0NBQ0hDLFNBQVN6RSxPQUFPaUIsZUFBZTt3Q0FDL0J5RCxVQUFVLENBQUNiLElBQU01RCxVQUFVNEIsQ0FBQUEsT0FBUztvREFBRSxHQUFHQSxJQUFJO29EQUFFWixpQkFBaUI0QyxFQUFFYyxNQUFNLENBQUNGLE9BQU87Z0RBQUM7d0NBQ2pGTCxXQUFVOzs7Ozs7a0RBRVosOERBQUNRO3dDQUFNQyxTQUFRO3dDQUFrQlQsV0FBVTtrREFBeUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzswQkFRMUYsOERBQUNDO2dCQUFJRCxXQUFVOztrQ0FDYiw4REFBQ0M7a0NBQ0V2RSx3QkFDQyw4REFBQ3dGOzRCQUFPbkQsTUFBSzs0QkFBU2lELFNBQVN0Rjs0QkFBUXNFLFdBQVU7c0NBQWM7Ozs7Ozs7Ozs7O2tDQU1uRSw4REFBQ2tCO3dCQUNDbkQsTUFBSzt3QkFDTGlDLFdBQVU7d0JBQ1ZtQixVQUFVLENBQUN2RixPQUFPRSxhQUFhLElBQUksQ0FBQ0YsT0FBT1MsY0FBYztrQ0FFeERWLGNBQWMsYUFBYTs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBS3RDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vYnp6ei1jb25maWctdWkvLi9hcHAvc2V0dXAvY29tcG9uZW50cy9BSUNvbmZpZ3VyYXRpb24udHN4PzczNDAiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBjbGllbnQnXG5cbmltcG9ydCB7IHVzZVN0YXRlLCB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IFxuICBDcHVDaGlwSWNvbixcbiAgU3BhcmtsZXNJY29uLFxuICBDdXJyZW5jeURvbGxhckljb24sXG4gIFNlcnZlckljb24sXG4gIENoZWNrQ2lyY2xlSWNvbixcbiAgRXhjbGFtYXRpb25UcmlhbmdsZUljb24sXG4gIEluZm9ybWF0aW9uQ2lyY2xlSWNvbixcbiAgRXllSWNvbixcbiAgRXllU2xhc2hJY29uLFxuICBBcnJvd1BhdGhJY29uXG59IGZyb20gJ0BoZXJvaWNvbnMvcmVhY3QvMjQvb3V0bGluZSdcblxuaW50ZXJmYWNlIEdQVUluZm8ge1xuICBuYW1lOiBzdHJpbmdcbiAgbWVtb3J5OiBzdHJpbmdcbiAgdHlwZTogc3RyaW5nXG4gIGRyaXZlcjogc3RyaW5nXG59XG5cbmludGVyZmFjZSBBSUNvbmZpZyB7XG4gIC8vIE9wZW5BSSBDb25maWd1cmF0aW9uXG4gIG9wZW5haUVuYWJsZWQ6IGJvb2xlYW5cbiAgb3BlbmFpQXBpS2V5OiBzdHJpbmdcbiAgb3BlbmFpT3JnYW5pemF0aW9uOiBzdHJpbmdcbiAgb3BlbmFpRGVmYXVsdE1vZGVsOiBzdHJpbmdcbiAgXG4gIC8vIENvc3QgTWFuYWdlbWVudFxuICBkYWlseUNvc3RMaW1pdDogbnVtYmVyXG4gIG1vbnRobHlDb3N0TGltaXQ6IG51bWJlclxuICBjb3N0QWxlcnRzOiBib29sZWFuXG4gIFxuICAvLyBMb2NhbCBBSSAoT2xsYW1hL1BhcmFsbGFtYSlcbiAgbG9jYWxBSUVuYWJsZWQ6IGJvb2xlYW5cbiAgbG9jYWxBSVR5cGU6ICdvbGxhbWEnIHwgJ3BhcmFsbGFtYSdcbiAgbG9jYWxBSUVuZHBvaW50OiBzdHJpbmdcbiAgbG9jYWxBSU1vZGVsczogc3RyaW5nW11cbiAgXG4gIC8vIEdQVSBDb25maWd1cmF0aW9uXG4gIGdwdUFjY2VsZXJhdGlvbjogYm9vbGVhblxuICBwcmVmZXJyZWRHUFU6IHN0cmluZ1xuICBtYXhHUFVNZW1vcnk6IG51bWJlclxuICBcbiAgLy8gTW9kZWwgU2VsZWN0aW9uXG4gIHByZWZlcnJlZFByb3ZpZGVyOiAnb3BlbmFpJyB8ICdsb2NhbCcgfCAnaHlicmlkJ1xuICBmYWxsYmFja0VuYWJsZWQ6IGJvb2xlYW5cbn1cblxuaW50ZXJmYWNlIEFJQ29uZmlndXJhdGlvblByb3BzIHtcbiAgc3lzdGVtSW5mbzogYW55XG4gIGNvbmZpZ0RhdGE6IGFueVxuICBvbkNvbXBsZXRlOiAoZGF0YTogYW55KSA9PiB2b2lkXG4gIG9uQmFjaz86ICgpID0+IHZvaWRcbiAgaXNDb21wbGV0ZWQ6IGJvb2xlYW5cbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gQUlDb25maWd1cmF0aW9uKHsgXG4gIHN5c3RlbUluZm8sIFxuICBjb25maWdEYXRhLCBcbiAgb25Db21wbGV0ZSwgXG4gIG9uQmFjaywgXG4gIGlzQ29tcGxldGVkIFxufTogQUlDb25maWd1cmF0aW9uUHJvcHMpIHtcbiAgY29uc3QgW2NvbmZpZywgc2V0Q29uZmlnXSA9IHVzZVN0YXRlPEFJQ29uZmlnPih7XG4gICAgb3BlbmFpRW5hYmxlZDogZmFsc2UsXG4gICAgb3BlbmFpQXBpS2V5OiAnJyxcbiAgICBvcGVuYWlPcmdhbml6YXRpb246ICcnLFxuICAgIG9wZW5haURlZmF1bHRNb2RlbDogJ2dwdC00JyxcbiAgICBcbiAgICBkYWlseUNvc3RMaW1pdDogNTAsXG4gICAgbW9udGhseUNvc3RMaW1pdDogNTAwLFxuICAgIGNvc3RBbGVydHM6IHRydWUsXG4gICAgXG4gICAgbG9jYWxBSUVuYWJsZWQ6IHRydWUsXG4gICAgbG9jYWxBSVR5cGU6ICdvbGxhbWEnLFxuICAgIGxvY2FsQUlFbmRwb2ludDogJ2h0dHA6Ly9sb2NhbGhvc3Q6MTE0MzQnLFxuICAgIGxvY2FsQUlNb2RlbHM6IFsnbGxhbWEyJywgJ2NvZGVsbGFtYSddLFxuICAgIFxuICAgIGdwdUFjY2VsZXJhdGlvbjogZmFsc2UsXG4gICAgcHJlZmVycmVkR1BVOiAnJyxcbiAgICBtYXhHUFVNZW1vcnk6IDgsXG4gICAgXG4gICAgcHJlZmVycmVkUHJvdmlkZXI6ICdsb2NhbCcsXG4gICAgZmFsbGJhY2tFbmFibGVkOiB0cnVlXG4gIH0pXG5cbiAgY29uc3QgW3Nob3dBcGlLZXksIHNldFNob3dBcGlLZXldID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFt2YWxpZGF0aW5nT3BlbkFJLCBzZXRWYWxpZGF0aW5nT3BlbkFJXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbdmFsaWRhdGluZ0xvY2FsLCBzZXRWYWxpZGF0aW5nTG9jYWxdID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtvcGVuYWlWYWxpZCwgc2V0T3BlbmFpVmFsaWRdID0gdXNlU3RhdGU8Ym9vbGVhbiB8IG51bGw+KG51bGwpXG4gIGNvbnN0IFtsb2NhbEFJVmFsaWQsIHNldExvY2FsQUlWYWxpZF0gPSB1c2VTdGF0ZTxib29sZWFuIHwgbnVsbD4obnVsbClcblxuICAvLyBJbml0aWFsaXplIGNvbmZpZ3VyYXRpb24gZnJvbSBleGlzdGluZyBkYXRhXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGNvbmZpZ0RhdGEuYWkpIHtcbiAgICAgIHNldENvbmZpZyhwcmV2ID0+ICh7IC4uLnByZXYsIC4uLmNvbmZpZ0RhdGEuYWkgfSkpXG4gICAgfVxuICAgIFxuICAgIC8vIEF1dG8tZGV0ZWN0IEdQVSBjYXBhYmlsaXRpZXNcbiAgICBpZiAoc3lzdGVtSW5mbz8uZ3B1cz8ubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgaGFzTlZJRElBID0gc3lzdGVtSW5mby5ncHVzLnNvbWUoKGdwdTogR1BVSW5mbykgPT4gZ3B1LnR5cGUgPT09ICdudmlkaWEnKVxuICAgICAgY29uc3QgaGFzQU1EID0gc3lzdGVtSW5mby5ncHVzLnNvbWUoKGdwdTogR1BVSW5mbykgPT4gZ3B1LnR5cGUgPT09ICdhbWQnKVxuICAgICAgXG4gICAgICBpZiAoaGFzTlZJRElBKSB7XG4gICAgICAgIHNldENvbmZpZyhwcmV2ID0+ICh7XG4gICAgICAgICAgLi4ucHJldixcbiAgICAgICAgICBncHVBY2NlbGVyYXRpb246IHRydWUsXG4gICAgICAgICAgbG9jYWxBSVR5cGU6ICdwYXJhbGxhbWEnLCAvLyBQYXJhbGxhbWEgdHlwaWNhbGx5IGJldHRlciBmb3IgTlZJRElBXG4gICAgICAgICAgcHJlZmVycmVkR1BVOiBzeXN0ZW1JbmZvLmdwdXMuZmluZCgoZ3B1OiBHUFVJbmZvKSA9PiBncHUudHlwZSA9PT0gJ252aWRpYScpPy5uYW1lIHx8ICcnXG4gICAgICAgIH0pKVxuICAgICAgfSBlbHNlIGlmIChoYXNBTUQpIHtcbiAgICAgICAgc2V0Q29uZmlnKHByZXYgPT4gKHtcbiAgICAgICAgICAuLi5wcmV2LFxuICAgICAgICAgIGdwdUFjY2VsZXJhdGlvbjogdHJ1ZSxcbiAgICAgICAgICBsb2NhbEFJVHlwZTogJ29sbGFtYScsIC8vIE9sbGFtYSB3b3JrcyB3ZWxsIHdpdGggQU1EXG4gICAgICAgICAgcHJlZmVycmVkR1BVOiBzeXN0ZW1JbmZvLmdwdXMuZmluZCgoZ3B1OiBHUFVJbmZvKSA9PiBncHUudHlwZSA9PT0gJ2FtZCcpPy5uYW1lIHx8ICcnXG4gICAgICAgIH0pKVxuICAgICAgfVxuICAgIH1cbiAgfSwgW3N5c3RlbUluZm8sIGNvbmZpZ0RhdGFdKVxuXG4gIGNvbnN0IHZhbGlkYXRlT3BlbkFJID0gYXN5bmMgKCkgPT4ge1xuICAgIGlmICghY29uZmlnLm9wZW5haUFwaUtleSkge1xuICAgICAgc2V0T3BlbmFpVmFsaWQoZmFsc2UpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBzZXRWYWxpZGF0aW5nT3BlbkFJKHRydWUpXG4gICAgdHJ5IHtcbiAgICAgIC8vIFRoaXMgd291bGQgYmUgYSByZWFsIEFQSSB2YWxpZGF0aW9uIGluIHByb2R1Y3Rpb25cbiAgICAgIC8vIEZvciBub3csIGp1c3Qgc2ltdWxhdGUgdmFsaWRhdGlvblxuICAgICAgYXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PiBzZXRUaW1lb3V0KHJlc29sdmUsIDEwMDApKVxuICAgICAgc2V0T3BlbmFpVmFsaWQodHJ1ZSlcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgc2V0T3BlbmFpVmFsaWQoZmFsc2UpXG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHNldFZhbGlkYXRpbmdPcGVuQUkoZmFsc2UpXG4gICAgfVxuICB9XG5cbiAgY29uc3QgdmFsaWRhdGVMb2NhbEFJID0gYXN5bmMgKCkgPT4ge1xuICAgIGlmICghY29uZmlnLmxvY2FsQUlFbmRwb2ludCkge1xuICAgICAgc2V0TG9jYWxBSVZhbGlkKGZhbHNlKVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgc2V0VmFsaWRhdGluZ0xvY2FsKHRydWUpXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goYCR7Y29uZmlnLmxvY2FsQUlFbmRwb2ludH0vYXBpL3RhZ3NgKVxuICAgICAgc2V0TG9jYWxBSVZhbGlkKHJlc3BvbnNlLm9rKVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBzZXRMb2NhbEFJVmFsaWQoZmFsc2UpXG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHNldFZhbGlkYXRpbmdMb2NhbChmYWxzZSlcbiAgICB9XG4gIH1cblxuICBjb25zdCBnZXRHUFVSZWNvbW1lbmRhdGlvbnMgPSAoKSA9PiB7XG4gICAgaWYgKCFzeXN0ZW1JbmZvPy5ncHVzPy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHJlY29tbWVuZGF0aW9uOiAnTm8gR1BVIGRldGVjdGVkLiBDUFUtb25seSBwcm9jZXNzaW5nIHdpbGwgYmUgdXNlZC4nLFxuICAgICAgICB0eXBlOiAnaW5mbycsXG4gICAgICAgIGRldGFpbHM6ICdDb25zaWRlciBhZGRpbmcgYSBHUFUgZm9yIGJldHRlciBBSSBwZXJmb3JtYW5jZS4nXG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgZ3B1cyA9IHN5c3RlbUluZm8uZ3B1c1xuICAgIGNvbnN0IG52aWRpYUdQVXMgPSBncHVzLmZpbHRlcigoZ3B1OiBHUFVJbmZvKSA9PiBncHUudHlwZSA9PT0gJ252aWRpYScpXG4gICAgY29uc3QgYW1kR1BVcyA9IGdwdXMuZmlsdGVyKChncHU6IEdQVUluZm8pID0+IGdwdS50eXBlID09PSAnYW1kJylcblxuICAgIGlmIChudmlkaWFHUFVzLmxlbmd0aCA+IDApIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHJlY29tbWVuZGF0aW9uOiAnTlZJRElBIEdQVSBkZXRlY3RlZCAtIFBhcmFsbGFtYSByZWNvbW1lbmRlZCBmb3Igb3B0aW1hbCBwZXJmb3JtYW5jZScsXG4gICAgICAgIHR5cGU6ICdzdWNjZXNzJyxcbiAgICAgICAgZGV0YWlsczogYCR7bnZpZGlhR1BVc1swXS5uYW1lfSB3aXRoICR7bnZpZGlhR1BVc1swXS5tZW1vcnl9IFZSQU0gZGV0ZWN0ZWQuIFBhcmFsbGFtYSBwcm92aWRlcyBleGNlbGxlbnQgTlZJRElBIEdQVSBhY2NlbGVyYXRpb24uYFxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChhbWRHUFVzLmxlbmd0aCA+IDApIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHJlY29tbWVuZGF0aW9uOiAnQU1EIEdQVSBkZXRlY3RlZCAtIE9sbGFtYSB3aXRoIFJPQ20gc3VwcG9ydCByZWNvbW1lbmRlZCcsXG4gICAgICAgIHR5cGU6ICd3YXJuaW5nJyxcbiAgICAgICAgZGV0YWlsczogYCR7YW1kR1BVc1swXS5uYW1lfSBkZXRlY3RlZC4gT2xsYW1hIHByb3ZpZGVzIGdvb2QgQU1EIEdQVSBzdXBwb3J0IHRocm91Z2ggUk9DbS5gXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHJlY29tbWVuZGF0aW9uOiAnSW50ZWdyYXRlZCBHUFUgZGV0ZWN0ZWQgLSBMaW1pdGVkIEFJIGFjY2VsZXJhdGlvbiBhdmFpbGFibGUnLFxuICAgICAgdHlwZTogJ3dhcm5pbmcnLFxuICAgICAgZGV0YWlsczogJ0ludGVncmF0ZWQgR1BVcyBwcm92aWRlIGxpbWl0ZWQgQUkgYWNjZWxlcmF0aW9uLiBDb25zaWRlciBhIGRlZGljYXRlZCBHUFUgZm9yIGJldHRlciBwZXJmb3JtYW5jZS4nXG4gICAgfVxuICB9XG5cbiAgY29uc3QgZ2V0UmVjb21tZW5kZWRNb2RlbHMgPSAoKSA9PiB7XG4gICAgY29uc3QgbWVtb3J5R0IgPSBzeXN0ZW1JbmZvPy5tZW1vcnlfbWIgPyBNYXRoLnJvdW5kKHN5c3RlbUluZm8ubWVtb3J5X21iIC8gMTAyNCkgOiA4XG5cbiAgICBpZiAobWVtb3J5R0IgPj0gMzIpIHtcbiAgICAgIHJldHVybiBbJ2xsYW1hMjo3MGInLCAnY29kZWxsYW1hOjM0YicsICdtaXh0cmFsOjh4N2InXVxuICAgIH0gZWxzZSBpZiAobWVtb3J5R0IgPj0gMTYpIHtcbiAgICAgIHJldHVybiBbJ2xsYW1hMjoxM2InLCAnY29kZWxsYW1hOjEzYicsICdsbGFtYTI6N2InXVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gWydsbGFtYTI6N2InLCAnY29kZWxsYW1hOjdiJywgJ3BoaTInXVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGhhbmRsZVN1Ym1pdCA9IChlOiBSZWFjdC5Gb3JtRXZlbnQpID0+IHtcbiAgICBlLnByZXZlbnREZWZhdWx0KClcbiAgICBcbiAgICAvLyBWYWxpZGF0ZSB0aGF0IGF0IGxlYXN0IG9uZSBBSSBwcm92aWRlciBpcyBjb25maWd1cmVkXG4gICAgaWYgKCFjb25maWcub3BlbmFpRW5hYmxlZCAmJiAhY29uZmlnLmxvY2FsQUlFbmFibGVkKSB7XG4gICAgICBhbGVydCgnUGxlYXNlIGVuYWJsZSBhdCBsZWFzdCBvbmUgQUkgcHJvdmlkZXIgKE9wZW5BSSBvciBMb2NhbCBBSSknKVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgb25Db21wbGV0ZSh7IGFpOiBjb25maWcgfSlcbiAgfVxuXG4gIGNvbnN0IGdwdVJlY29tbWVuZGF0aW9uID0gZ2V0R1BVUmVjb21tZW5kYXRpb25zKClcbiAgY29uc3QgcmVjb21tZW5kZWRNb2RlbHMgPSBnZXRSZWNvbW1lbmRlZE1vZGVscygpXG5cbiAgcmV0dXJuIChcbiAgICA8Zm9ybSBvblN1Ym1pdD17aGFuZGxlU3VibWl0fSBjbGFzc05hbWU9XCJzcGFjZS15LTZcIj5cbiAgICAgIHsvKiBHUFUgRGV0ZWN0aW9uICYgUmVjb21tZW5kYXRpb25zICovfVxuICAgICAge3N5c3RlbUluZm8/LmdwdXMgJiYgKFxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJnLWdyYXktNTAgcm91bmRlZC1sZyBwLTZcIj5cbiAgICAgICAgICA8aDMgY2xhc3NOYW1lPVwidGV4dC1sZyBmb250LW1lZGl1bSB0ZXh0LWdyYXktOTAwIG1iLTQgZmxleCBpdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgIDxDcHVDaGlwSWNvbiBjbGFzc05hbWU9XCJoLTYgdy02IHRleHQtYnp6ei1wcmltYXJ5IG1yLTJcIiAvPlxuICAgICAgICAgICAgR1BVIENvbmZpZ3VyYXRpb25cbiAgICAgICAgICA8L2gzPlxuICAgICAgICAgIFxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtgcC00IHJvdW5kZWQtbGcgYm9yZGVyIG1iLTQgJHtcbiAgICAgICAgICAgIGdwdVJlY29tbWVuZGF0aW9uLnR5cGUgPT09ICdzdWNjZXNzJyA/ICdiZy1ncmVlbi01MCBib3JkZXItZ3JlZW4tMjAwJyA6XG4gICAgICAgICAgICBncHVSZWNvbW1lbmRhdGlvbi50eXBlID09PSAnd2FybmluZycgPyAnYmcteWVsbG93LTUwIGJvcmRlci15ZWxsb3ctMjAwJyA6XG4gICAgICAgICAgICAnYmctYmx1ZS01MCBib3JkZXItYmx1ZS0yMDAnXG4gICAgICAgICAgfWB9PlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLXN0YXJ0XCI+XG4gICAgICAgICAgICAgIDxJbmZvcm1hdGlvbkNpcmNsZUljb24gY2xhc3NOYW1lPXtgaC01IHctNSBtdC0wLjUgbXItMiAke1xuICAgICAgICAgICAgICAgIGdwdVJlY29tbWVuZGF0aW9uLnR5cGUgPT09ICdzdWNjZXNzJyA/ICd0ZXh0LWdyZWVuLTYwMCcgOlxuICAgICAgICAgICAgICAgIGdwdVJlY29tbWVuZGF0aW9uLnR5cGUgPT09ICd3YXJuaW5nJyA/ICd0ZXh0LXllbGxvdy02MDAnIDpcbiAgICAgICAgICAgICAgICAndGV4dC1ibHVlLTYwMCdcbiAgICAgICAgICAgICAgfWB9IC8+XG4gICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2Bmb250LW1lZGl1bSAke1xuICAgICAgICAgICAgICAgICAgZ3B1UmVjb21tZW5kYXRpb24udHlwZSA9PT0gJ3N1Y2Nlc3MnID8gJ3RleHQtZ3JlZW4tODAwJyA6XG4gICAgICAgICAgICAgICAgICBncHVSZWNvbW1lbmRhdGlvbi50eXBlID09PSAnd2FybmluZycgPyAndGV4dC15ZWxsb3ctODAwJyA6XG4gICAgICAgICAgICAgICAgICAndGV4dC1ibHVlLTgwMCdcbiAgICAgICAgICAgICAgICB9YH0+XG4gICAgICAgICAgICAgICAgICB7Z3B1UmVjb21tZW5kYXRpb24ucmVjb21tZW5kYXRpb259XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2B0ZXh0LXNtIG10LTEgJHtcbiAgICAgICAgICAgICAgICAgIGdwdVJlY29tbWVuZGF0aW9uLnR5cGUgPT09ICdzdWNjZXNzJyA/ICd0ZXh0LWdyZWVuLTcwMCcgOlxuICAgICAgICAgICAgICAgICAgZ3B1UmVjb21tZW5kYXRpb24udHlwZSA9PT0gJ3dhcm5pbmcnID8gJ3RleHQteWVsbG93LTcwMCcgOlxuICAgICAgICAgICAgICAgICAgJ3RleHQtYmx1ZS03MDAnXG4gICAgICAgICAgICAgICAgfWB9PlxuICAgICAgICAgICAgICAgICAge2dwdVJlY29tbWVuZGF0aW9uLmRldGFpbHN9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICB7c3lzdGVtSW5mby5ncHVzLmxlbmd0aCA+IDAgJiYgKFxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJzcGFjZS15LTNcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICAgIGlkPVwiZ3B1QWNjZWxlcmF0aW9uXCJcbiAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e2NvbmZpZy5ncHVBY2NlbGVyYXRpb259XG4gICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IHNldENvbmZpZyhwcmV2ID0+ICh7IC4uLnByZXYsIGdwdUFjY2VsZXJhdGlvbjogZS50YXJnZXQuY2hlY2tlZCB9KSl9XG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJoLTQgdy00IHRleHQtYnp6ei1wcmltYXJ5IGZvY3VzOnJpbmctYnp6ei1wcmltYXJ5IGJvcmRlci1ncmF5LTMwMCByb3VuZGVkXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDxsYWJlbCBodG1sRm9yPVwiZ3B1QWNjZWxlcmF0aW9uXCIgY2xhc3NOYW1lPVwibWwtMiB0ZXh0LXNtIGZvbnQtbWVkaXVtIHRleHQtZ3JheS03MDBcIj5cbiAgICAgICAgICAgICAgICAgIEVuYWJsZSBHUFUgYWNjZWxlcmF0aW9uIGZvciBBSSBwcm9jZXNzaW5nXG4gICAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAge2NvbmZpZy5ncHVBY2NlbGVyYXRpb24gJiYgKFxuICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3NOYW1lPVwibGFiZWxcIj5QcmVmZXJyZWQgR1BVPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgIDxzZWxlY3RcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2NvbmZpZy5wcmVmZXJyZWRHUFV9XG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gc2V0Q29uZmlnKHByZXYgPT4gKHsgLi4ucHJldiwgcHJlZmVycmVkR1BVOiBlLnRhcmdldC52YWx1ZSB9KSl9XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImlucHV0LWZpZWxkXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIlwiPkF1dG8tc2VsZWN0PC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgIHtzeXN0ZW1JbmZvLmdwdXMubWFwKChncHU6IEdQVUluZm8sIGluZGV4OiBudW1iZXIpID0+IChcbiAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIGtleT17aW5kZXh9IHZhbHVlPXtncHUubmFtZX0+XG4gICAgICAgICAgICAgICAgICAgICAgICB7Z3B1Lm5hbWV9ICh7Z3B1LnR5cGUudG9VcHBlckNhc2UoKX0pIC0ge2dwdS5tZW1vcnl9XG4gICAgICAgICAgICAgICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICApfVxuICAgICAgICA8L2Rpdj5cbiAgICAgICl9XG5cbiAgICAgIHsvKiBMb2NhbCBBSSBDb25maWd1cmF0aW9uICovfVxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJiZy13aGl0ZSBib3JkZXIgYm9yZGVyLWdyYXktMjAwIHJvdW5kZWQtbGcgcC02XCI+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIG1iLTRcIj5cbiAgICAgICAgICA8aDMgY2xhc3NOYW1lPVwidGV4dC1sZyBmb250LW1lZGl1bSB0ZXh0LWdyYXktOTAwIGZsZXggaXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICA8U2VydmVySWNvbiBjbGFzc05hbWU9XCJoLTYgdy02IHRleHQtYnp6ei1wcmltYXJ5IG1yLTJcIiAvPlxuICAgICAgICAgICAgTG9jYWwgQUkgKE9sbGFtYS9QYXJhbGxhbWEpXG4gICAgICAgICAgPC9oMz5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgaWQ9XCJsb2NhbEFJRW5hYmxlZFwiXG4gICAgICAgICAgICAgIGNoZWNrZWQ9e2NvbmZpZy5sb2NhbEFJRW5hYmxlZH1cbiAgICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiBzZXRDb25maWcocHJldiA9PiAoeyAuLi5wcmV2LCBsb2NhbEFJRW5hYmxlZDogZS50YXJnZXQuY2hlY2tlZCB9KSl9XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT1cImgtNCB3LTQgdGV4dC1ienp6LXByaW1hcnkgZm9jdXM6cmluZy1ienp6LXByaW1hcnkgYm9yZGVyLWdyYXktMzAwIHJvdW5kZWRcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxsYWJlbCBodG1sRm9yPVwibG9jYWxBSUVuYWJsZWRcIiBjbGFzc05hbWU9XCJtbC0yIHRleHQtc20gZm9udC1tZWRpdW0gdGV4dC1ncmF5LTcwMFwiPlxuICAgICAgICAgICAgICBFbmFibGUgTG9jYWwgQUlcbiAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIHtjb25maWcubG9jYWxBSUVuYWJsZWQgJiYgKFxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwic3BhY2UteS00XCI+XG4gICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICA8bGFiZWwgY2xhc3NOYW1lPVwibGFiZWxcIj5Mb2NhbCBBSSBQcm92aWRlcjwvbGFiZWw+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZ3JpZCBncmlkLWNvbHMtMSBtZDpncmlkLWNvbHMtMiBnYXAtNFwiPlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17YGJvcmRlci0yIHJvdW5kZWQtbGcgcC00IGN1cnNvci1wb2ludGVyIHRyYW5zaXRpb24tYWxsICR7XG4gICAgICAgICAgICAgICAgICAgIGNvbmZpZy5sb2NhbEFJVHlwZSA9PT0gJ29sbGFtYSdcbiAgICAgICAgICAgICAgICAgICAgICA/ICdib3JkZXItYnp6ei1wcmltYXJ5IGJnLWJ6enotcHJpbWFyeSBiZy1vcGFjaXR5LTEwJ1xuICAgICAgICAgICAgICAgICAgICAgIDogJ2JvcmRlci1ncmF5LTIwMCBob3Zlcjpib3JkZXItZ3JheS0zMDAnXG4gICAgICAgICAgICAgICAgICB9YH1cbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldENvbmZpZyhwcmV2ID0+ICh7IC4uLnByZXYsIGxvY2FsQUlUeXBlOiAnb2xsYW1hJyB9KSl9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmb250LW1lZGl1bSB0ZXh0LWdyYXktOTAwXCI+T2xsYW1hPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtc20gdGV4dC1ncmF5LTYwMFwiPk9wZW4tc291cmNlLCBzZWxmLWhvc3RlZCBBSSBtb2RlbHM8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC14cyB0ZXh0LWdyYXktNTAwIG10LTFcIj5CZXN0IGZvcjogQU1EIEdQVXMsIENQVS1vbmx5IHNldHVwczwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17YGJvcmRlci0yIHJvdW5kZWQtbGcgcC00IGN1cnNvci1wb2ludGVyIHRyYW5zaXRpb24tYWxsICR7XG4gICAgICAgICAgICAgICAgICAgIGNvbmZpZy5sb2NhbEFJVHlwZSA9PT0gJ3BhcmFsbGFtYSdcbiAgICAgICAgICAgICAgICAgICAgICA/ICdib3JkZXItYnp6ei1wcmltYXJ5IGJnLWJ6enotcHJpbWFyeSBiZy1vcGFjaXR5LTEwJ1xuICAgICAgICAgICAgICAgICAgICAgIDogJ2JvcmRlci1ncmF5LTIwMCBob3Zlcjpib3JkZXItZ3JheS0zMDAnXG4gICAgICAgICAgICAgICAgICB9YH1cbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldENvbmZpZyhwcmV2ID0+ICh7IC4uLnByZXYsIGxvY2FsQUlUeXBlOiAncGFyYWxsYW1hJyB9KSl9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmb250LW1lZGl1bSB0ZXh0LWdyYXktOTAwXCI+UGFyYWxsYW1hPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtc20gdGV4dC1ncmF5LTYwMFwiPk9wdGltaXplZCBmb3IgcGFyYWxsZWwgcHJvY2Vzc2luZzwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LXhzIHRleHQtZ3JheS01MDAgbXQtMVwiPkJlc3QgZm9yOiBOVklESUEgR1BVcywgaGlnaCBwZXJmb3JtYW5jZTwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICA8bGFiZWwgY2xhc3NOYW1lPVwibGFiZWxcIj5BUEkgRW5kcG9pbnQ8L2xhYmVsPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggc3BhY2UteC0yXCI+XG4gICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICB0eXBlPVwidXJsXCJcbiAgICAgICAgICAgICAgICAgIHZhbHVlPXtjb25maWcubG9jYWxBSUVuZHBvaW50fVxuICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiBzZXRDb25maWcocHJldiA9PiAoeyAuLi5wcmV2LCBsb2NhbEFJRW5kcG9pbnQ6IGUudGFyZ2V0LnZhbHVlIH0pKX1cbiAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiaHR0cDovL2xvY2FsaG9zdDoxMTQzNFwiXG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJpbnB1dC1maWVsZCBmbGV4LTFcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICBvbkNsaWNrPXt2YWxpZGF0ZUxvY2FsQUl9XG4gICAgICAgICAgICAgICAgICBkaXNhYmxlZD17dmFsaWRhdGluZ0xvY2FsfVxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiYnRuLW91dGxpbmUgd2hpdGVzcGFjZS1ub3dyYXBcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIHt2YWxpZGF0aW5nTG9jYWwgPyAoXG4gICAgICAgICAgICAgICAgICAgIDxBcnJvd1BhdGhJY29uIGNsYXNzTmFtZT1cImgtNCB3LTQgYW5pbWF0ZS1zcGluXCIgLz5cbiAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgICdUZXN0J1xuICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIHtsb2NhbEFJVmFsaWQgPT09IHRydWUgJiYgKFxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIgbXQtMSB0ZXh0LWdyZWVuLTYwMCB0ZXh0LXNtXCI+XG4gICAgICAgICAgICAgICAgICA8Q2hlY2tDaXJjbGVJY29uIGNsYXNzTmFtZT1cImgtNCB3LTQgbXItMVwiIC8+XG4gICAgICAgICAgICAgICAgICBDb25uZWN0aW9uIHN1Y2Nlc3NmdWxcbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAge2xvY2FsQUlWYWxpZCA9PT0gZmFsc2UgJiYgKFxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIgbXQtMSB0ZXh0LXJlZC02MDAgdGV4dC1zbVwiPlxuICAgICAgICAgICAgICAgICAgPEV4Y2xhbWF0aW9uVHJpYW5nbGVJY29uIGNsYXNzTmFtZT1cImgtNCB3LTQgbXItMVwiIC8+XG4gICAgICAgICAgICAgICAgICBDb25uZWN0aW9uIGZhaWxlZFxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgIDxsYWJlbCBjbGFzc05hbWU9XCJsYWJlbFwiPlJlY29tbWVuZGVkIE1vZGVscyBmb3IgeW91ciBzeXN0ZW08L2xhYmVsPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJnLWJsdWUtNTAgYm9yZGVyIGJvcmRlci1ibHVlLTIwMCByb3VuZGVkLWxnIHAtM1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1zbSB0ZXh0LWJsdWUtODAwXCI+XG4gICAgICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJmb250LW1lZGl1bSBtYi0yXCI+QmFzZWQgb24geW91ciBzeXN0ZW0gbWVtb3J5ICh7TWF0aC5yb3VuZChzeXN0ZW1JbmZvPy5tZW1vcnlfbWIgLyAxMDI0IHx8IDgpfSBHQik6PC9wPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGZsZXgtd3JhcCBnYXAtMlwiPlxuICAgICAgICAgICAgICAgICAgICB7cmVjb21tZW5kZWRNb2RlbHMubWFwKChtb2RlbCwgaW5kZXgpID0+IChcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBrZXk9e2luZGV4fSBjbGFzc05hbWU9XCJiZy1ibHVlLTEwMCB0ZXh0LWJsdWUtODAwIHB4LTIgcHktMSByb3VuZGVkIHRleHQteHNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHttb2RlbH1cbiAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICl9XG4gICAgICA8L2Rpdj5cblxuICAgICAgey8qIE9wZW5BSSBDb25maWd1cmF0aW9uICovfVxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJiZy13aGl0ZSBib3JkZXIgYm9yZGVyLWdyYXktMjAwIHJvdW5kZWQtbGcgcC02XCI+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIG1iLTRcIj5cbiAgICAgICAgICA8aDMgY2xhc3NOYW1lPVwidGV4dC1sZyBmb250LW1lZGl1bSB0ZXh0LWdyYXktOTAwIGZsZXggaXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICA8U3BhcmtsZXNJY29uIGNsYXNzTmFtZT1cImgtNiB3LTYgdGV4dC1ienp6LXByaW1hcnkgbXItMlwiIC8+XG4gICAgICAgICAgICBPcGVuQUkgQVBJXG4gICAgICAgICAgPC9oMz5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgaWQ9XCJvcGVuYWlFbmFibGVkXCJcbiAgICAgICAgICAgICAgY2hlY2tlZD17Y29uZmlnLm9wZW5haUVuYWJsZWR9XG4gICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gc2V0Q29uZmlnKHByZXYgPT4gKHsgLi4ucHJldiwgb3BlbmFpRW5hYmxlZDogZS50YXJnZXQuY2hlY2tlZCB9KSl9XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT1cImgtNCB3LTQgdGV4dC1ienp6LXByaW1hcnkgZm9jdXM6cmluZy1ienp6LXByaW1hcnkgYm9yZGVyLWdyYXktMzAwIHJvdW5kZWRcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxsYWJlbCBodG1sRm9yPVwib3BlbmFpRW5hYmxlZFwiIGNsYXNzTmFtZT1cIm1sLTIgdGV4dC1zbSBmb250LW1lZGl1bSB0ZXh0LWdyYXktNzAwXCI+XG4gICAgICAgICAgICAgIEVuYWJsZSBPcGVuQUkgQVBJXG4gICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICB7Y29uZmlnLm9wZW5haUVuYWJsZWQgJiYgKFxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwic3BhY2UteS00XCI+XG4gICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICA8bGFiZWwgY2xhc3NOYW1lPVwibGFiZWxcIj5BUEkgS2V5PC9sYWJlbD5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IHNwYWNlLXgtMlwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicmVsYXRpdmUgZmxleC0xXCI+XG4gICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgdHlwZT17c2hvd0FwaUtleSA/ICd0ZXh0JyA6ICdwYXNzd29yZCd9XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlPXtjb25maWcub3BlbmFpQXBpS2V5fVxuICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IHNldENvbmZpZyhwcmV2ID0+ICh7IC4uLnByZXYsIG9wZW5haUFwaUtleTogZS50YXJnZXQudmFsdWUgfSkpfVxuICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cInNrLS4uLlwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImlucHV0LWZpZWxkIHByLTEwXCJcbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRTaG93QXBpS2V5KCFzaG93QXBpS2V5KX1cbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiYWJzb2x1dGUgaW5zZXQteS0wIHJpZ2h0LTAgcHItMyBmbGV4IGl0ZW1zLWNlbnRlclwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHtzaG93QXBpS2V5ID8gKFxuICAgICAgICAgICAgICAgICAgICAgIDxFeWVTbGFzaEljb24gY2xhc3NOYW1lPVwiaC01IHctNSB0ZXh0LWdyYXktNDAwXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICA8RXllSWNvbiBjbGFzc05hbWU9XCJoLTUgdy01IHRleHQtZ3JheS00MDBcIiAvPlxuICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICBvbkNsaWNrPXt2YWxpZGF0ZU9wZW5BSX1cbiAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXt2YWxpZGF0aW5nT3BlbkFJIHx8ICFjb25maWcub3BlbmFpQXBpS2V5fVxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiYnRuLW91dGxpbmUgd2hpdGVzcGFjZS1ub3dyYXBcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIHt2YWxpZGF0aW5nT3BlbkFJID8gKFxuICAgICAgICAgICAgICAgICAgICA8QXJyb3dQYXRoSWNvbiBjbGFzc05hbWU9XCJoLTQgdy00IGFuaW1hdGUtc3BpblwiIC8+XG4gICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAnVmFsaWRhdGUnXG4gICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAge29wZW5haVZhbGlkID09PSB0cnVlICYmIChcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIG10LTEgdGV4dC1ncmVlbi02MDAgdGV4dC1zbVwiPlxuICAgICAgICAgICAgICAgICAgPENoZWNrQ2lyY2xlSWNvbiBjbGFzc05hbWU9XCJoLTQgdy00IG1yLTFcIiAvPlxuICAgICAgICAgICAgICAgICAgQVBJIGtleSB2YWxpZFxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICB7b3BlbmFpVmFsaWQgPT09IGZhbHNlICYmIChcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIG10LTEgdGV4dC1yZWQtNjAwIHRleHQtc21cIj5cbiAgICAgICAgICAgICAgICAgIDxFeGNsYW1hdGlvblRyaWFuZ2xlSWNvbiBjbGFzc05hbWU9XCJoLTQgdy00IG1yLTFcIiAvPlxuICAgICAgICAgICAgICAgICAgSW52YWxpZCBBUEkga2V5XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzTmFtZT1cImxhYmVsXCI+T3JnYW5pemF0aW9uIChPcHRpb25hbCk8L2xhYmVsPlxuICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgdmFsdWU9e2NvbmZpZy5vcGVuYWlPcmdhbml6YXRpb259XG4gICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiBzZXRDb25maWcocHJldiA9PiAoeyAuLi5wcmV2LCBvcGVuYWlPcmdhbml6YXRpb246IGUudGFyZ2V0LnZhbHVlIH0pKX1cbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIm9yZy0uLi5cIlxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImlucHV0LWZpZWxkXCJcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICA8bGFiZWwgY2xhc3NOYW1lPVwibGFiZWxcIj5EZWZhdWx0IE1vZGVsPC9sYWJlbD5cbiAgICAgICAgICAgICAgPHNlbGVjdFxuICAgICAgICAgICAgICAgIHZhbHVlPXtjb25maWcub3BlbmFpRGVmYXVsdE1vZGVsfVxuICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gc2V0Q29uZmlnKHByZXYgPT4gKHsgLi4ucHJldiwgb3BlbmFpRGVmYXVsdE1vZGVsOiBlLnRhcmdldC52YWx1ZSB9KSl9XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiaW5wdXQtZmllbGRcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImdwdC00XCI+R1BULTQ8L29wdGlvbj5cbiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiZ3B0LTQtdHVyYm9cIj5HUFQtNCBUdXJibzwvb3B0aW9uPlxuICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJncHQtMy41LXR1cmJvXCI+R1BULTMuNSBUdXJibzwvb3B0aW9uPlxuICAgICAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICApfVxuICAgICAgPC9kaXY+XG5cbiAgICAgIHsvKiBDb3N0IE1hbmFnZW1lbnQgKi99XG4gICAgICB7Y29uZmlnLm9wZW5haUVuYWJsZWQgJiYgKFxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJnLXdoaXRlIGJvcmRlciBib3JkZXItZ3JheS0yMDAgcm91bmRlZC1sZyBwLTZcIj5cbiAgICAgICAgICA8aDMgY2xhc3NOYW1lPVwidGV4dC1sZyBmb250LW1lZGl1bSB0ZXh0LWdyYXktOTAwIG1iLTQgZmxleCBpdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgIDxDdXJyZW5jeURvbGxhckljb24gY2xhc3NOYW1lPVwiaC02IHctNiB0ZXh0LWJ6enotcHJpbWFyeSBtci0yXCIgLz5cbiAgICAgICAgICAgIENvc3QgTWFuYWdlbWVudFxuICAgICAgICAgIDwvaDM+XG4gICAgICAgICAgXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJncmlkIGdyaWQtY29scy0xIG1kOmdyaWQtY29scy0yIGdhcC00XCI+XG4gICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICA8bGFiZWwgY2xhc3NOYW1lPVwibGFiZWxcIj5EYWlseSBDb3N0IExpbWl0ICgkKTwvbGFiZWw+XG4gICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgIHR5cGU9XCJudW1iZXJcIlxuICAgICAgICAgICAgICAgIHZhbHVlPXtjb25maWcuZGFpbHlDb3N0TGltaXR9XG4gICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiBzZXRDb25maWcocHJldiA9PiAoeyAuLi5wcmV2LCBkYWlseUNvc3RMaW1pdDogcGFyc2VGbG9hdChlLnRhcmdldC52YWx1ZSkgfHwgMCB9KSl9XG4gICAgICAgICAgICAgICAgbWluPVwiMFwiXG4gICAgICAgICAgICAgICAgc3RlcD1cIjAuMDFcIlxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImlucHV0LWZpZWxkXCJcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICA8bGFiZWwgY2xhc3NOYW1lPVwibGFiZWxcIj5Nb250aGx5IENvc3QgTGltaXQgKCQpPC9sYWJlbD5cbiAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICAgICAgICAgICAgdmFsdWU9e2NvbmZpZy5tb250aGx5Q29zdExpbWl0fVxuICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gc2V0Q29uZmlnKHByZXYgPT4gKHsgLi4ucHJldiwgbW9udGhseUNvc3RMaW1pdDogcGFyc2VGbG9hdChlLnRhcmdldC52YWx1ZSkgfHwgMCB9KSl9XG4gICAgICAgICAgICAgICAgbWluPVwiMFwiXG4gICAgICAgICAgICAgICAgc3RlcD1cIjAuMDFcIlxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImlucHV0LWZpZWxkXCJcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtdC00XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICAgICAgaWQ9XCJjb3N0QWxlcnRzXCJcbiAgICAgICAgICAgICAgICBjaGVja2VkPXtjb25maWcuY29zdEFsZXJ0c31cbiAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IHNldENvbmZpZyhwcmV2ID0+ICh7IC4uLnByZXYsIGNvc3RBbGVydHM6IGUudGFyZ2V0LmNoZWNrZWQgfSkpfVxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImgtNCB3LTQgdGV4dC1ienp6LXByaW1hcnkgZm9jdXM6cmluZy1ienp6LXByaW1hcnkgYm9yZGVyLWdyYXktMzAwIHJvdW5kZWRcIlxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8bGFiZWwgaHRtbEZvcj1cImNvc3RBbGVydHNcIiBjbGFzc05hbWU9XCJtbC0yIHRleHQtc20gZm9udC1tZWRpdW0gdGV4dC1ncmF5LTcwMFwiPlxuICAgICAgICAgICAgICAgIFNlbmQgYWxlcnRzIHdoZW4gYXBwcm9hY2hpbmcgY29zdCBsaW1pdHNcbiAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICl9XG5cbiAgICAgIHsvKiBQcm92aWRlciBQcmVmZXJlbmNlICovfVxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJiZy13aGl0ZSBib3JkZXIgYm9yZGVyLWdyYXktMjAwIHJvdW5kZWQtbGcgcC02XCI+XG4gICAgICAgIDxoMyBjbGFzc05hbWU9XCJ0ZXh0LWxnIGZvbnQtbWVkaXVtIHRleHQtZ3JheS05MDAgbWItNFwiPlByb3ZpZGVyIFByZWZlcmVuY2U8L2gzPlxuICAgICAgICBcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJzcGFjZS15LTNcIj5cbiAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzTmFtZT1cImxhYmVsXCI+UHJlZmVycmVkIEFJIFByb3ZpZGVyPC9sYWJlbD5cbiAgICAgICAgICAgIDxzZWxlY3RcbiAgICAgICAgICAgICAgdmFsdWU9e2NvbmZpZy5wcmVmZXJyZWRQcm92aWRlcn1cbiAgICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiBzZXRDb25maWcocHJldiA9PiAoeyAuLi5wcmV2LCBwcmVmZXJyZWRQcm92aWRlcjogZS50YXJnZXQudmFsdWUgYXMgJ29wZW5haScgfCAnbG9jYWwnIHwgJ2h5YnJpZCcgfSkpfVxuICAgICAgICAgICAgICBjbGFzc05hbWU9XCJpbnB1dC1maWVsZFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJsb2NhbFwiPkxvY2FsIEFJIE9ubHk8L29wdGlvbj5cbiAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIm9wZW5haVwiPk9wZW5BSSBPbmx5PC9vcHRpb24+XG4gICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJoeWJyaWRcIj5IeWJyaWQgKExvY2FsIGZpcnN0LCBPcGVuQUkgZmFsbGJhY2spPC9vcHRpb24+XG4gICAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICBpZD1cImZhbGxiYWNrRW5hYmxlZFwiXG4gICAgICAgICAgICAgIGNoZWNrZWQ9e2NvbmZpZy5mYWxsYmFja0VuYWJsZWR9XG4gICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gc2V0Q29uZmlnKHByZXYgPT4gKHsgLi4ucHJldiwgZmFsbGJhY2tFbmFibGVkOiBlLnRhcmdldC5jaGVja2VkIH0pKX1cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiaC00IHctNCB0ZXh0LWJ6enotcHJpbWFyeSBmb2N1czpyaW5nLWJ6enotcHJpbWFyeSBib3JkZXItZ3JheS0zMDAgcm91bmRlZFwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPGxhYmVsIGh0bWxGb3I9XCJmYWxsYmFja0VuYWJsZWRcIiBjbGFzc05hbWU9XCJtbC0yIHRleHQtc20gZm9udC1tZWRpdW0gdGV4dC1ncmF5LTcwMFwiPlxuICAgICAgICAgICAgICBFbmFibGUgYXV0b21hdGljIGZhbGxiYWNrIGJldHdlZW4gcHJvdmlkZXJzXG4gICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICB7LyogQWN0aW9uIEJ1dHRvbnMgKi99XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXgganVzdGlmeS1iZXR3ZWVuIHB0LTYgYm9yZGVyLXQgYm9yZGVyLWdyYXktMjAwXCI+XG4gICAgICAgIDxkaXY+XG4gICAgICAgICAge29uQmFjayAmJiAoXG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBvbkNsaWNrPXtvbkJhY2t9IGNsYXNzTmFtZT1cImJ0bi1vdXRsaW5lXCI+XG4gICAgICAgICAgICAgIEJhY2tcbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvZGl2PlxuICAgICAgICBcbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgICAgIGNsYXNzTmFtZT1cImJ0bi1wcmltYXJ5XCJcbiAgICAgICAgICBkaXNhYmxlZD17IWNvbmZpZy5vcGVuYWlFbmFibGVkICYmICFjb25maWcubG9jYWxBSUVuYWJsZWR9XG4gICAgICAgID5cbiAgICAgICAgICB7aXNDb21wbGV0ZWQgPyAnQ29udGludWUnIDogJ05leHQ6IFJlc291cmNlIEFsbG9jYXRpb24nfVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZm9ybT5cbiAgKVxufSJdLCJuYW1lcyI6WyJ1c2VTdGF0ZSIsInVzZUVmZmVjdCIsIkNwdUNoaXBJY29uIiwiU3BhcmtsZXNJY29uIiwiQ3VycmVuY3lEb2xsYXJJY29uIiwiU2VydmVySWNvbiIsIkNoZWNrQ2lyY2xlSWNvbiIsIkV4Y2xhbWF0aW9uVHJpYW5nbGVJY29uIiwiSW5mb3JtYXRpb25DaXJjbGVJY29uIiwiRXllSWNvbiIsIkV5ZVNsYXNoSWNvbiIsIkFycm93UGF0aEljb24iLCJBSUNvbmZpZ3VyYXRpb24iLCJzeXN0ZW1JbmZvIiwiY29uZmlnRGF0YSIsIm9uQ29tcGxldGUiLCJvbkJhY2siLCJpc0NvbXBsZXRlZCIsImNvbmZpZyIsInNldENvbmZpZyIsIm9wZW5haUVuYWJsZWQiLCJvcGVuYWlBcGlLZXkiLCJvcGVuYWlPcmdhbml6YXRpb24iLCJvcGVuYWlEZWZhdWx0TW9kZWwiLCJkYWlseUNvc3RMaW1pdCIsIm1vbnRobHlDb3N0TGltaXQiLCJjb3N0QWxlcnRzIiwibG9jYWxBSUVuYWJsZWQiLCJsb2NhbEFJVHlwZSIsImxvY2FsQUlFbmRwb2ludCIsImxvY2FsQUlNb2RlbHMiLCJncHVBY2NlbGVyYXRpb24iLCJwcmVmZXJyZWRHUFUiLCJtYXhHUFVNZW1vcnkiLCJwcmVmZXJyZWRQcm92aWRlciIsImZhbGxiYWNrRW5hYmxlZCIsInNob3dBcGlLZXkiLCJzZXRTaG93QXBpS2V5IiwidmFsaWRhdGluZ09wZW5BSSIsInNldFZhbGlkYXRpbmdPcGVuQUkiLCJ2YWxpZGF0aW5nTG9jYWwiLCJzZXRWYWxpZGF0aW5nTG9jYWwiLCJvcGVuYWlWYWxpZCIsInNldE9wZW5haVZhbGlkIiwibG9jYWxBSVZhbGlkIiwic2V0TG9jYWxBSVZhbGlkIiwiYWkiLCJwcmV2IiwiZ3B1cyIsImxlbmd0aCIsImhhc05WSURJQSIsInNvbWUiLCJncHUiLCJ0eXBlIiwiaGFzQU1EIiwiZmluZCIsIm5hbWUiLCJ2YWxpZGF0ZU9wZW5BSSIsIlByb21pc2UiLCJyZXNvbHZlIiwic2V0VGltZW91dCIsImVycm9yIiwidmFsaWRhdGVMb2NhbEFJIiwicmVzcG9uc2UiLCJmZXRjaCIsIm9rIiwiZ2V0R1BVUmVjb21tZW5kYXRpb25zIiwicmVjb21tZW5kYXRpb24iLCJkZXRhaWxzIiwibnZpZGlhR1BVcyIsImZpbHRlciIsImFtZEdQVXMiLCJtZW1vcnkiLCJnZXRSZWNvbW1lbmRlZE1vZGVscyIsIm1lbW9yeUdCIiwibWVtb3J5X21iIiwiTWF0aCIsInJvdW5kIiwiaGFuZGxlU3VibWl0IiwiZSIsInByZXZlbnREZWZhdWx0IiwiYWxlcnQiLCJncHVSZWNvbW1lbmRhdGlvbiIsInJlY29tbWVuZGVkTW9kZWxzIiwiZm9ybSIsIm9uU3VibWl0IiwiY2xhc3NOYW1lIiwiZGl2IiwiaDMiLCJpbnB1dCIsImlkIiwiY2hlY2tlZCIsIm9uQ2hhbmdlIiwidGFyZ2V0IiwibGFiZWwiLCJodG1sRm9yIiwic2VsZWN0IiwidmFsdWUiLCJvcHRpb24iLCJtYXAiLCJpbmRleCIsInRvVXBwZXJDYXNlIiwib25DbGljayIsInBsYWNlaG9sZGVyIiwiYnV0dG9uIiwiZGlzYWJsZWQiLCJwIiwibW9kZWwiLCJzcGFuIiwicGFyc2VGbG9hdCIsIm1pbiIsInN0ZXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./app/setup/components/AIConfiguration.tsx\n");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "(ssr)/./app/setup/components/ClusterFormation.tsx":
|
|
/*!***************************************************!*\
|
|
!*** ./app/setup/components/ClusterFormation.tsx ***!
|
|
\***************************************************/
|
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
|
|
"use strict";
|
|
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ ClusterFormation)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react-jsx-dev-runtime.js\");\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _barrel_optimize_names_ArrowPathIcon_CheckCircleIcon_ComputerDesktopIcon_InformationCircleIcon_KeyIcon_MagnifyingGlassIcon_PlusIcon_ServerStackIcon_UserGroupIcon_WifiIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! __barrel_optimize__?names=ArrowPathIcon,CheckCircleIcon,ComputerDesktopIcon,InformationCircleIcon,KeyIcon,MagnifyingGlassIcon,PlusIcon,ServerStackIcon,UserGroupIcon,WifiIcon!=!@heroicons/react/24/outline */ \"(ssr)/./node_modules/@heroicons/react/24/outline/esm/ServerStackIcon.js\");\n/* harmony import */ var _barrel_optimize_names_ArrowPathIcon_CheckCircleIcon_ComputerDesktopIcon_InformationCircleIcon_KeyIcon_MagnifyingGlassIcon_PlusIcon_ServerStackIcon_UserGroupIcon_WifiIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! __barrel_optimize__?names=ArrowPathIcon,CheckCircleIcon,ComputerDesktopIcon,InformationCircleIcon,KeyIcon,MagnifyingGlassIcon,PlusIcon,ServerStackIcon,UserGroupIcon,WifiIcon!=!@heroicons/react/24/outline */ \"(ssr)/./node_modules/@heroicons/react/24/outline/esm/PlusIcon.js\");\n/* harmony import */ var _barrel_optimize_names_ArrowPathIcon_CheckCircleIcon_ComputerDesktopIcon_InformationCircleIcon_KeyIcon_MagnifyingGlassIcon_PlusIcon_ServerStackIcon_UserGroupIcon_WifiIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! __barrel_optimize__?names=ArrowPathIcon,CheckCircleIcon,ComputerDesktopIcon,InformationCircleIcon,KeyIcon,MagnifyingGlassIcon,PlusIcon,ServerStackIcon,UserGroupIcon,WifiIcon!=!@heroicons/react/24/outline */ \"(ssr)/./node_modules/@heroicons/react/24/outline/esm/UserGroupIcon.js\");\n/* harmony import */ var _barrel_optimize_names_ArrowPathIcon_CheckCircleIcon_ComputerDesktopIcon_InformationCircleIcon_KeyIcon_MagnifyingGlassIcon_PlusIcon_ServerStackIcon_UserGroupIcon_WifiIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! __barrel_optimize__?names=ArrowPathIcon,CheckCircleIcon,ComputerDesktopIcon,InformationCircleIcon,KeyIcon,MagnifyingGlassIcon,PlusIcon,ServerStackIcon,UserGroupIcon,WifiIcon!=!@heroicons/react/24/outline */ \"(ssr)/./node_modules/@heroicons/react/24/outline/esm/ArrowPathIcon.js\");\n/* harmony import */ var _barrel_optimize_names_ArrowPathIcon_CheckCircleIcon_ComputerDesktopIcon_InformationCircleIcon_KeyIcon_MagnifyingGlassIcon_PlusIcon_ServerStackIcon_UserGroupIcon_WifiIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! __barrel_optimize__?names=ArrowPathIcon,CheckCircleIcon,ComputerDesktopIcon,InformationCircleIcon,KeyIcon,MagnifyingGlassIcon,PlusIcon,ServerStackIcon,UserGroupIcon,WifiIcon!=!@heroicons/react/24/outline */ \"(ssr)/./node_modules/@heroicons/react/24/outline/esm/KeyIcon.js\");\n/* harmony import */ var _barrel_optimize_names_ArrowPathIcon_CheckCircleIcon_ComputerDesktopIcon_InformationCircleIcon_KeyIcon_MagnifyingGlassIcon_PlusIcon_ServerStackIcon_UserGroupIcon_WifiIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! __barrel_optimize__?names=ArrowPathIcon,CheckCircleIcon,ComputerDesktopIcon,InformationCircleIcon,KeyIcon,MagnifyingGlassIcon,PlusIcon,ServerStackIcon,UserGroupIcon,WifiIcon!=!@heroicons/react/24/outline */ \"(ssr)/./node_modules/@heroicons/react/24/outline/esm/MagnifyingGlassIcon.js\");\n/* harmony import */ var _barrel_optimize_names_ArrowPathIcon_CheckCircleIcon_ComputerDesktopIcon_InformationCircleIcon_KeyIcon_MagnifyingGlassIcon_PlusIcon_ServerStackIcon_UserGroupIcon_WifiIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! __barrel_optimize__?names=ArrowPathIcon,CheckCircleIcon,ComputerDesktopIcon,InformationCircleIcon,KeyIcon,MagnifyingGlassIcon,PlusIcon,ServerStackIcon,UserGroupIcon,WifiIcon!=!@heroicons/react/24/outline */ \"(ssr)/./node_modules/@heroicons/react/24/outline/esm/ComputerDesktopIcon.js\");\n/* harmony import */ var _barrel_optimize_names_ArrowPathIcon_CheckCircleIcon_ComputerDesktopIcon_InformationCircleIcon_KeyIcon_MagnifyingGlassIcon_PlusIcon_ServerStackIcon_UserGroupIcon_WifiIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! __barrel_optimize__?names=ArrowPathIcon,CheckCircleIcon,ComputerDesktopIcon,InformationCircleIcon,KeyIcon,MagnifyingGlassIcon,PlusIcon,ServerStackIcon,UserGroupIcon,WifiIcon!=!@heroicons/react/24/outline */ \"(ssr)/./node_modules/@heroicons/react/24/outline/esm/WifiIcon.js\");\n/* harmony import */ var _barrel_optimize_names_ArrowPathIcon_CheckCircleIcon_ComputerDesktopIcon_InformationCircleIcon_KeyIcon_MagnifyingGlassIcon_PlusIcon_ServerStackIcon_UserGroupIcon_WifiIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! __barrel_optimize__?names=ArrowPathIcon,CheckCircleIcon,ComputerDesktopIcon,InformationCircleIcon,KeyIcon,MagnifyingGlassIcon,PlusIcon,ServerStackIcon,UserGroupIcon,WifiIcon!=!@heroicons/react/24/outline */ \"(ssr)/./node_modules/@heroicons/react/24/outline/esm/InformationCircleIcon.js\");\n/* harmony import */ var _barrel_optimize_names_ArrowPathIcon_CheckCircleIcon_ComputerDesktopIcon_InformationCircleIcon_KeyIcon_MagnifyingGlassIcon_PlusIcon_ServerStackIcon_UserGroupIcon_WifiIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! __barrel_optimize__?names=ArrowPathIcon,CheckCircleIcon,ComputerDesktopIcon,InformationCircleIcon,KeyIcon,MagnifyingGlassIcon,PlusIcon,ServerStackIcon,UserGroupIcon,WifiIcon!=!@heroicons/react/24/outline */ \"(ssr)/./node_modules/@heroicons/react/24/outline/esm/CheckCircleIcon.js\");\n/* __next_internal_client_entry_do_not_use__ default auto */ \n\n\nfunction ClusterFormation({ systemInfo, configData, onComplete, onBack, isCompleted }) {\n const [config, setConfig] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)({\n mode: \"create\",\n networkId: \"\",\n clusterName: \"\",\n nodeRole: \"hybrid\",\n autoDiscovery: true,\n encryption: true,\n redundancy: 2\n });\n const [discoveredNodes, setDiscoveredNodes] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)([]);\n const [scanning, setScanning] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n const [generatingKey, setGeneratingKey] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n const [clusterKey, setClusterKey] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(\"\");\n // Initialize configuration\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{\n if (configData.cluster) {\n setConfig((prev)=>({\n ...prev,\n ...configData.cluster\n }));\n }\n // Generate default network ID based on hostname\n if (!config.networkId && systemInfo?.network?.hostname) {\n const hostname = systemInfo.network.hostname;\n const timestamp = Date.now().toString(36).slice(-4);\n setConfig((prev)=>({\n ...prev,\n networkId: `bzzz-${hostname}-${timestamp}`,\n clusterName: `${hostname} BZZZ Cluster`\n }));\n }\n }, [\n systemInfo,\n configData\n ]);\n // Auto-discover nodes when joining\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{\n if (config.mode === \"join\" && config.autoDiscovery) {\n scanForNodes();\n }\n }, [\n config.mode,\n config.autoDiscovery\n ]);\n const scanForNodes = async ()=>{\n setScanning(true);\n try {\n // This would be a real mDNS/network scan in production\n // Simulating discovery for demo\n await new Promise((resolve)=>setTimeout(resolve, 2000));\n const mockNodes = [\n {\n id: \"node-001\",\n hostname: \"ironwood\",\n ip: \"192.168.1.72\",\n port: 8080,\n version: \"2.0.0\",\n capabilities: [\n \"coordinator\",\n \"storage\",\n \"compute\"\n ],\n status: \"online\",\n lastSeen: new Date()\n },\n {\n id: \"node-002\",\n hostname: \"walnut\",\n ip: \"192.168.1.27\",\n port: 8080,\n version: \"2.0.0\",\n capabilities: [\n \"worker\",\n \"compute\"\n ],\n status: \"online\",\n lastSeen: new Date()\n }\n ];\n setDiscoveredNodes(mockNodes);\n } catch (error) {\n console.error(\"Node discovery failed:\", error);\n } finally{\n setScanning(false);\n }\n };\n const generateClusterKey = async ()=>{\n setGeneratingKey(true);\n try {\n // Generate a secure cluster key\n const key = Array.from(crypto.getRandomValues(new Uint8Array(32))).map((b)=>b.toString(16).padStart(2, \"0\")).join(\"\");\n setClusterKey(key);\n } catch (error) {\n // Fallback key generation\n const key = Math.random().toString(36).substr(2, 32);\n setClusterKey(key);\n } finally{\n setGeneratingKey(false);\n }\n };\n const getNodeRoleDescription = (role)=>{\n switch(role){\n case \"coordinator\":\n return \"Manages cluster state and coordinates tasks. Requires stable network connection.\";\n case \"worker\":\n return \"Executes tasks assigned by coordinators. Can be dynamically added/removed.\";\n case \"hybrid\":\n return \"Can act as both coordinator and worker. Recommended for most deployments.\";\n default:\n return \"\";\n }\n };\n const getSystemRecommendation = ()=>{\n const memoryGB = systemInfo?.memory_mb ? Math.round(systemInfo.memory_mb / 1024) : 8;\n const cpuCores = systemInfo?.cpu_cores || 4;\n const hasGPU = systemInfo?.gpus?.length > 0;\n if (memoryGB >= 16 && cpuCores >= 8) {\n return {\n role: \"coordinator\",\n reason: \"High-performance system suitable for cluster coordination\"\n };\n } else if (hasGPU) {\n return {\n role: \"hybrid\",\n reason: \"GPU acceleration available - good for both coordination and compute tasks\"\n };\n } else {\n return {\n role: \"worker\",\n reason: \"Resource-optimized configuration for task execution\"\n };\n }\n };\n const handleSubmit = (e)=>{\n e.preventDefault();\n const clusterData = {\n ...config,\n clusterKey: config.mode === \"create\" ? clusterKey : undefined,\n systemInfo: {\n hostname: systemInfo?.network?.hostname,\n ip: systemInfo?.network?.private_ips?.[0],\n capabilities: systemInfo?.gpus?.length > 0 ? [\n \"compute\",\n \"gpu\"\n ] : [\n \"compute\"\n ]\n }\n };\n onComplete({\n cluster: clusterData\n });\n };\n const recommendation = getSystemRecommendation();\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"form\", {\n onSubmit: handleSubmit,\n className: \"space-y-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-gray-50 rounded-lg p-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h3\", {\n className: \"text-lg font-medium text-gray-900 mb-4 flex items-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_ArrowPathIcon_CheckCircleIcon_ComputerDesktopIcon_InformationCircleIcon_KeyIcon_MagnifyingGlassIcon_PlusIcon_ServerStackIcon_UserGroupIcon_WifiIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n className: \"h-6 w-6 text-bzzz-primary mr-2\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ClusterFormation.tsx\",\n lineNumber: 210,\n columnNumber: 11\n }, this),\n \"Cluster Mode\"\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ClusterFormation.tsx\",\n lineNumber: 209,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid grid-cols-1 md:grid-cols-2 gap-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `border-2 rounded-lg p-4 cursor-pointer transition-all ${config.mode === \"create\" ? \"border-bzzz-primary bg-bzzz-primary bg-opacity-10\" : \"border-gray-200 hover:border-gray-300\"}`,\n onClick: ()=>setConfig((prev)=>({\n ...prev,\n mode: \"create\"\n })),\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center mb-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_ArrowPathIcon_CheckCircleIcon_ComputerDesktopIcon_InformationCircleIcon_KeyIcon_MagnifyingGlassIcon_PlusIcon_ServerStackIcon_UserGroupIcon_WifiIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n className: \"h-5 w-5 text-bzzz-primary mr-2\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ClusterFormation.tsx\",\n lineNumber: 224,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"font-medium text-gray-900\",\n children: \"Create New Cluster\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ClusterFormation.tsx\",\n lineNumber: 225,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ClusterFormation.tsx\",\n lineNumber: 223,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm text-gray-600\",\n children: \"Start a new BZZZ cluster and become the initial coordinator node.\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ClusterFormation.tsx\",\n lineNumber: 227,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ClusterFormation.tsx\",\n lineNumber: 215,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `border-2 rounded-lg p-4 cursor-pointer transition-all ${config.mode === \"join\" ? \"border-bzzz-primary bg-bzzz-primary bg-opacity-10\" : \"border-gray-200 hover:border-gray-300\"}`,\n onClick: ()=>setConfig((prev)=>({\n ...prev,\n mode: \"join\"\n })),\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center mb-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_ArrowPathIcon_CheckCircleIcon_ComputerDesktopIcon_InformationCircleIcon_KeyIcon_MagnifyingGlassIcon_PlusIcon_ServerStackIcon_UserGroupIcon_WifiIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n className: \"h-5 w-5 text-bzzz-primary mr-2\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ClusterFormation.tsx\",\n lineNumber: 241,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"font-medium text-gray-900\",\n children: \"Join Existing Cluster\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ClusterFormation.tsx\",\n lineNumber: 242,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ClusterFormation.tsx\",\n lineNumber: 240,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm text-gray-600\",\n children: \"Connect to an existing BZZZ cluster as a worker or coordinator node.\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ClusterFormation.tsx\",\n lineNumber: 244,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ClusterFormation.tsx\",\n lineNumber: 232,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ClusterFormation.tsx\",\n lineNumber: 214,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ClusterFormation.tsx\",\n lineNumber: 208,\n columnNumber: 7\n }, this),\n config.mode === \"create\" && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-y-6\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-white border border-gray-200 rounded-lg p-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h3\", {\n className: \"text-lg font-medium text-gray-900 mb-4\",\n children: \"New Cluster Configuration\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ClusterFormation.tsx\",\n lineNumber: 255,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-y-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"label\", {\n className: \"label\",\n children: \"Cluster Name\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ClusterFormation.tsx\",\n lineNumber: 259,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"text\",\n value: config.clusterName,\n onChange: (e)=>setConfig((prev)=>({\n ...prev,\n clusterName: e.target.value\n })),\n placeholder: \"My BZZZ Cluster\",\n className: \"input-field\",\n required: true\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ClusterFormation.tsx\",\n lineNumber: 260,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ClusterFormation.tsx\",\n lineNumber: 258,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"label\", {\n className: \"label\",\n children: \"Network ID\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ClusterFormation.tsx\",\n lineNumber: 271,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"text\",\n value: config.networkId,\n onChange: (e)=>setConfig((prev)=>({\n ...prev,\n networkId: e.target.value\n })),\n placeholder: \"bzzz-cluster-001\",\n className: \"input-field\",\n required: true\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ClusterFormation.tsx\",\n lineNumber: 272,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-sm text-gray-600 mt-1\",\n children: \"Unique identifier for your cluster network\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ClusterFormation.tsx\",\n lineNumber: 280,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ClusterFormation.tsx\",\n lineNumber: 270,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"label\", {\n className: \"label\",\n children: \"Cluster Security Key\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ClusterFormation.tsx\",\n lineNumber: 286,\n columnNumber: 17\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)(\"input\", {\n type: \"text\",\n value: clusterKey,\n onChange: (e)=>setClusterKey(e.target.value),\n placeholder: \"Click generate or enter custom key\",\n className: \"input-field flex-1\",\n readOnly: !clusterKey\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ClusterFormation.tsx\",\n lineNumber: 288,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n type: \"button\",\n onClick: generateClusterKey,\n disabled: generatingKey,\n className: \"btn-outline whitespace-nowrap\",\n children: generatingKey ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_ArrowPathIcon_CheckCircleIcon_ComputerDesktopIcon_InformationCircleIcon_KeyIcon_MagnifyingGlassIcon_PlusIcon_ServerStackIcon_UserGroupIcon_WifiIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n className: \"h-4 w-4 animate-spin\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ClusterFormation.tsx\",\n lineNumber: 303,\n columnNumber: 23\n }, this) : /*#__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)(_barrel_optimize_names_ArrowPathIcon_CheckCircleIcon_ComputerDesktopIcon_InformationCircleIcon_KeyIcon_MagnifyingGlassIcon_PlusIcon_ServerStackIcon_UserGroupIcon_WifiIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n className: \"h-4 w-4 mr-1\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ClusterFormation.tsx\",\n lineNumber: 306,\n columnNumber: 25\n }, this),\n \"Generate\"\n ]\n }, void 0, true)\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ClusterFormation.tsx\",\n lineNumber: 296,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ClusterFormation.tsx\",\n lineNumber: 287,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-sm text-gray-600 mt-1\",\n children: \"This key will be required for other nodes to join your cluster\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ClusterFormation.tsx\",\n lineNumber: 312,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ClusterFormation.tsx\",\n lineNumber: 285,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ClusterFormation.tsx\",\n lineNumber: 257,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ClusterFormation.tsx\",\n lineNumber: 254,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ClusterFormation.tsx\",\n lineNumber: 253,\n columnNumber: 9\n }, this),\n config.mode === \"join\" && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-y-6\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-white border border-gray-200 rounded-lg p-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center justify-between mb-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h3\", {\n className: \"text-lg font-medium text-gray-900\",\n children: \"Available Clusters\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ClusterFormation.tsx\",\n lineNumber: 326,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n type: \"button\",\n onClick: scanForNodes,\n disabled: scanning,\n className: \"btn-outline text-sm\",\n children: scanning ? /*#__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)(_barrel_optimize_names_ArrowPathIcon_CheckCircleIcon_ComputerDesktopIcon_InformationCircleIcon_KeyIcon_MagnifyingGlassIcon_PlusIcon_ServerStackIcon_UserGroupIcon_WifiIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n className: \"h-4 w-4 animate-spin mr-1\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ClusterFormation.tsx\",\n lineNumber: 335,\n columnNumber: 21\n }, this),\n \"Scanning...\"\n ]\n }, void 0, true) : /*#__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)(_barrel_optimize_names_ArrowPathIcon_CheckCircleIcon_ComputerDesktopIcon_InformationCircleIcon_KeyIcon_MagnifyingGlassIcon_PlusIcon_ServerStackIcon_UserGroupIcon_WifiIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n className: \"h-4 w-4 mr-1\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ClusterFormation.tsx\",\n lineNumber: 340,\n columnNumber: 21\n }, this),\n \"Scan Network\"\n ]\n }, void 0, true)\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ClusterFormation.tsx\",\n lineNumber: 327,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ClusterFormation.tsx\",\n lineNumber: 325,\n columnNumber: 13\n }, this),\n discoveredNodes.length > 0 ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-y-3\",\n children: discoveredNodes.map((node)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `border rounded-lg p-4 cursor-pointer transition-all ${config.targetNode === node.id ? \"border-bzzz-primary bg-bzzz-primary bg-opacity-10\" : \"border-gray-200 hover:border-gray-300\"}`,\n onClick: ()=>setConfig((prev)=>({\n ...prev,\n targetNode: node.id\n })),\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center justify-between\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n 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)(_barrel_optimize_names_ArrowPathIcon_CheckCircleIcon_ComputerDesktopIcon_InformationCircleIcon_KeyIcon_MagnifyingGlassIcon_PlusIcon_ServerStackIcon_UserGroupIcon_WifiIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n className: \"h-5 w-5 text-gray-500 mr-2\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ClusterFormation.tsx\",\n lineNumber: 362,\n columnNumber: 27\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"font-medium text-gray-900\",\n children: node.hostname\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ClusterFormation.tsx\",\n lineNumber: 363,\n columnNumber: 27\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: `ml-2 status-indicator ${node.status === \"online\" ? \"status-online\" : \"status-offline\"}`,\n children: node.status\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ClusterFormation.tsx\",\n lineNumber: 364,\n columnNumber: 27\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ClusterFormation.tsx\",\n lineNumber: 361,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm text-gray-600 mt-1\",\n children: [\n node.ip,\n \":\",\n node.port,\n \" • Version \",\n node.version\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ClusterFormation.tsx\",\n lineNumber: 370,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-wrap gap-1 mt-1\",\n children: node.capabilities.map((cap, index)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"bg-gray-100 text-gray-700 px-2 py-1 rounded text-xs\",\n children: cap\n }, index, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ClusterFormation.tsx\",\n lineNumber: 375,\n columnNumber: 29\n }, this))\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ClusterFormation.tsx\",\n lineNumber: 373,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ClusterFormation.tsx\",\n lineNumber: 360,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_ArrowPathIcon_CheckCircleIcon_ComputerDesktopIcon_InformationCircleIcon_KeyIcon_MagnifyingGlassIcon_PlusIcon_ServerStackIcon_UserGroupIcon_WifiIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n className: \"h-5 w-5 text-bzzz-primary\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ClusterFormation.tsx\",\n lineNumber: 381,\n columnNumber: 23\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ClusterFormation.tsx\",\n lineNumber: 359,\n columnNumber: 21\n }, this)\n }, node.id, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ClusterFormation.tsx\",\n lineNumber: 350,\n columnNumber: 19\n }, this))\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ClusterFormation.tsx\",\n lineNumber: 348,\n columnNumber: 15\n }, this) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-center py-8\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_ArrowPathIcon_CheckCircleIcon_ComputerDesktopIcon_InformationCircleIcon_KeyIcon_MagnifyingGlassIcon_PlusIcon_ServerStackIcon_UserGroupIcon_WifiIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n className: \"h-12 w-12 text-gray-400 mx-auto mb-4\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ClusterFormation.tsx\",\n lineNumber: 388,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-gray-600\",\n children: scanning ? \"Scanning for BZZZ clusters...\" : \"No clusters found. Click scan to search for available clusters.\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ClusterFormation.tsx\",\n lineNumber: 389,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ClusterFormation.tsx\",\n lineNumber: 387,\n columnNumber: 15\n }, this),\n config.targetNode && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mt-4 pt-4 border-t border-gray-200\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"label\", {\n className: \"label\",\n children: \"Cluster Join Key\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ClusterFormation.tsx\",\n lineNumber: 397,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"password\",\n value: config.joinKey || \"\",\n onChange: (e)=>setConfig((prev)=>({\n ...prev,\n joinKey: e.target.value\n })),\n placeholder: \"Enter cluster security key\",\n className: \"input-field\",\n required: true\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ClusterFormation.tsx\",\n lineNumber: 398,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-sm text-gray-600 mt-1\",\n children: \"Enter the security key provided by the cluster administrator\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ClusterFormation.tsx\",\n lineNumber: 406,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ClusterFormation.tsx\",\n lineNumber: 396,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ClusterFormation.tsx\",\n lineNumber: 324,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ClusterFormation.tsx\",\n lineNumber: 323,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-white border border-gray-200 rounded-lg p-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h3\", {\n className: \"text-lg font-medium text-gray-900 mb-4\",\n children: \"Node Role\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ClusterFormation.tsx\",\n lineNumber: 417,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mb-4 p-4 bg-blue-50 border border-blue-200 rounded-lg\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-start\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_ArrowPathIcon_CheckCircleIcon_ComputerDesktopIcon_InformationCircleIcon_KeyIcon_MagnifyingGlassIcon_PlusIcon_ServerStackIcon_UserGroupIcon_WifiIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n className: \"h-5 w-5 text-blue-600 mr-2 mt-0.5\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ClusterFormation.tsx\",\n lineNumber: 422,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"font-medium text-blue-800\",\n children: [\n \"Recommended: \",\n recommendation.role.charAt(0).toUpperCase() + recommendation.role.slice(1)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ClusterFormation.tsx\",\n lineNumber: 424,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm text-blue-700 mt-1\",\n children: recommendation.reason\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ClusterFormation.tsx\",\n lineNumber: 427,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ClusterFormation.tsx\",\n lineNumber: 423,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ClusterFormation.tsx\",\n lineNumber: 421,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ClusterFormation.tsx\",\n lineNumber: 420,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-y-3\",\n children: [\n \"coordinator\",\n \"worker\",\n \"hybrid\"\n ].map((role)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `border-2 rounded-lg p-4 cursor-pointer transition-all ${config.nodeRole === role ? \"border-bzzz-primary bg-bzzz-primary bg-opacity-10\" : \"border-gray-200 hover:border-gray-300\"}`,\n onClick: ()=>setConfig((prev)=>({\n ...prev,\n nodeRole: role\n })),\n children: /*#__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: \"radio\",\n name: \"nodeRole\",\n value: role,\n checked: config.nodeRole === role,\n onChange: ()=>setConfig((prev)=>({\n ...prev,\n nodeRole: role\n })),\n className: \"h-4 w-4 text-bzzz-primary focus:ring-bzzz-primary border-gray-300\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ClusterFormation.tsx\",\n lineNumber: 446,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"ml-3\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"font-medium text-gray-900 capitalize\",\n children: role\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ClusterFormation.tsx\",\n lineNumber: 455,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm text-gray-600\",\n children: getNodeRoleDescription(role)\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ClusterFormation.tsx\",\n lineNumber: 456,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ClusterFormation.tsx\",\n lineNumber: 454,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ClusterFormation.tsx\",\n lineNumber: 445,\n columnNumber: 15\n }, this)\n }, role, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ClusterFormation.tsx\",\n lineNumber: 436,\n columnNumber: 13\n }, this))\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ClusterFormation.tsx\",\n lineNumber: 434,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ClusterFormation.tsx\",\n lineNumber: 416,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-white border border-gray-200 rounded-lg p-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h3\", {\n className: \"text-lg font-medium text-gray-900 mb-4\",\n children: \"Advanced Options\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ClusterFormation.tsx\",\n lineNumber: 466,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-y-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"checkbox\",\n id: \"autoDiscovery\",\n checked: config.autoDiscovery,\n onChange: (e)=>setConfig((prev)=>({\n ...prev,\n autoDiscovery: e.target.checked\n })),\n className: \"h-4 w-4 text-bzzz-primary focus:ring-bzzz-primary border-gray-300 rounded\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ClusterFormation.tsx\",\n lineNumber: 470,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"label\", {\n htmlFor: \"autoDiscovery\",\n className: \"ml-2 text-sm font-medium text-gray-700\",\n children: \"Enable automatic node discovery (mDNS)\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ClusterFormation.tsx\",\n lineNumber: 477,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ClusterFormation.tsx\",\n lineNumber: 469,\n columnNumber: 11\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: \"checkbox\",\n id: \"encryption\",\n checked: config.encryption,\n onChange: (e)=>setConfig((prev)=>({\n ...prev,\n encryption: e.target.checked\n })),\n className: \"h-4 w-4 text-bzzz-primary focus:ring-bzzz-primary border-gray-300 rounded\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ClusterFormation.tsx\",\n lineNumber: 483,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"label\", {\n htmlFor: \"encryption\",\n className: \"ml-2 text-sm font-medium text-gray-700\",\n children: \"Enable end-to-end encryption for cluster communication\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ClusterFormation.tsx\",\n lineNumber: 490,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ClusterFormation.tsx\",\n lineNumber: 482,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"label\", {\n className: \"label\",\n children: \"Redundancy Level\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ClusterFormation.tsx\",\n lineNumber: 496,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"select\", {\n value: config.redundancy,\n onChange: (e)=>setConfig((prev)=>({\n ...prev,\n redundancy: parseInt(e.target.value)\n })),\n className: \"input-field\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"option\", {\n value: 1,\n children: \"Low (1 replica)\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ClusterFormation.tsx\",\n lineNumber: 502,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"option\", {\n value: 2,\n children: \"Medium (2 replicas)\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ClusterFormation.tsx\",\n lineNumber: 503,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"option\", {\n value: 3,\n children: \"High (3 replicas)\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ClusterFormation.tsx\",\n lineNumber: 504,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ClusterFormation.tsx\",\n lineNumber: 497,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-sm text-gray-600 mt-1\",\n children: \"Number of replicas for critical cluster data\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ClusterFormation.tsx\",\n lineNumber: 506,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ClusterFormation.tsx\",\n lineNumber: 495,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ClusterFormation.tsx\",\n lineNumber: 468,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ClusterFormation.tsx\",\n lineNumber: 465,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-blue-50 border border-blue-200 rounded-lg p-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center mb-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_ArrowPathIcon_CheckCircleIcon_ComputerDesktopIcon_InformationCircleIcon_KeyIcon_MagnifyingGlassIcon_PlusIcon_ServerStackIcon_UserGroupIcon_WifiIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {\n className: \"h-5 w-5 text-blue-600 mr-2\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ClusterFormation.tsx\",\n lineNumber: 516,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-blue-800 font-medium\",\n children: \"Configuration Summary\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ClusterFormation.tsx\",\n lineNumber: 517,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ClusterFormation.tsx\",\n lineNumber: 515,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-blue-700 text-sm space-y-1\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n children: [\n \"• Mode: \",\n config.mode === \"create\" ? \"Create new cluster\" : \"Join existing cluster\"\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ClusterFormation.tsx\",\n lineNumber: 520,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n children: [\n \"• Role: \",\n config.nodeRole\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ClusterFormation.tsx\",\n lineNumber: 521,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n children: [\n \"• Hostname: \",\n systemInfo?.network?.hostname || \"Unknown\"\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ClusterFormation.tsx\",\n lineNumber: 522,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n children: [\n \"• IP Address: \",\n systemInfo?.network?.private_ips?.[0] || \"Unknown\"\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ClusterFormation.tsx\",\n lineNumber: 523,\n columnNumber: 11\n }, this),\n config.mode === \"create\" && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n children: [\n \"• Cluster: \",\n config.clusterName\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ClusterFormation.tsx\",\n lineNumber: 524,\n columnNumber: 40\n }, this),\n config.encryption && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n children: \"• Security: Encrypted communication enabled\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ClusterFormation.tsx\",\n lineNumber: 525,\n columnNumber: 33\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ClusterFormation.tsx\",\n lineNumber: 519,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ClusterFormation.tsx\",\n lineNumber: 514,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex justify-between pt-6 border-t border-gray-200\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: onBack && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n type: \"button\",\n onClick: onBack,\n className: \"btn-outline\",\n children: \"Back\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ClusterFormation.tsx\",\n lineNumber: 533,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ClusterFormation.tsx\",\n lineNumber: 531,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n type: \"submit\",\n disabled: config.mode === \"create\" && (!config.clusterName || !config.networkId || !clusterKey) || config.mode === \"join\" && (!config.targetNode || !config.joinKey),\n className: \"btn-primary\",\n children: isCompleted ? \"Continue\" : \"Next: Testing & Validation\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ClusterFormation.tsx\",\n lineNumber: 539,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ClusterFormation.tsx\",\n lineNumber: 530,\n columnNumber: 7\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ClusterFormation.tsx\",\n lineNumber: 206,\n columnNumber: 5\n }, this);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9hcHAvc2V0dXAvY29tcG9uZW50cy9DbHVzdGVyRm9ybWF0aW9uLnRzeCIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRTJDO0FBYVA7QUFpQ3JCLFNBQVNZLGlCQUFpQixFQUN2Q0MsVUFBVSxFQUNWQyxVQUFVLEVBQ1ZDLFVBQVUsRUFDVkMsTUFBTSxFQUNOQyxXQUFXLEVBQ1c7SUFDdEIsTUFBTSxDQUFDQyxRQUFRQyxVQUFVLEdBQUduQiwrQ0FBUUEsQ0FBZ0I7UUFDbERvQixNQUFNO1FBQ05DLFdBQVc7UUFDWEMsYUFBYTtRQUNiQyxVQUFVO1FBQ1ZDLGVBQWU7UUFDZkMsWUFBWTtRQUNaQyxZQUFZO0lBQ2Q7SUFFQSxNQUFNLENBQUNDLGlCQUFpQkMsbUJBQW1CLEdBQUc1QiwrQ0FBUUEsQ0FBbUIsRUFBRTtJQUMzRSxNQUFNLENBQUM2QixVQUFVQyxZQUFZLEdBQUc5QiwrQ0FBUUEsQ0FBQztJQUN6QyxNQUFNLENBQUMrQixlQUFlQyxpQkFBaUIsR0FBR2hDLCtDQUFRQSxDQUFDO0lBQ25ELE1BQU0sQ0FBQ2lDLFlBQVlDLGNBQWMsR0FBR2xDLCtDQUFRQSxDQUFDO0lBRTdDLDJCQUEyQjtJQUMzQkMsZ0RBQVNBLENBQUM7UUFDUixJQUFJYSxXQUFXcUIsT0FBTyxFQUFFO1lBQ3RCaEIsVUFBVWlCLENBQUFBLE9BQVM7b0JBQUUsR0FBR0EsSUFBSTtvQkFBRSxHQUFHdEIsV0FBV3FCLE9BQU87Z0JBQUM7UUFDdEQ7UUFFQSxnREFBZ0Q7UUFDaEQsSUFBSSxDQUFDakIsT0FBT0csU0FBUyxJQUFJUixZQUFZd0IsU0FBU0MsVUFBVTtZQUN0RCxNQUFNQSxXQUFXekIsV0FBV3dCLE9BQU8sQ0FBQ0MsUUFBUTtZQUM1QyxNQUFNQyxZQUFZQyxLQUFLQyxHQUFHLEdBQUdDLFFBQVEsQ0FBQyxJQUFJQyxLQUFLLENBQUMsQ0FBQztZQUNqRHhCLFVBQVVpQixDQUFBQSxPQUFTO29CQUNqQixHQUFHQSxJQUFJO29CQUNQZixXQUFXLENB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VSxrQkFBSSw4REFBQ2dGOzBDQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7MEJBSzdCLDhEQUFDWDtnQkFBSUQsV0FBVTs7a0NBQ2IsOERBQUNDO2tDQUNFOUUsd0JBQ0MsOERBQUMyRjs0QkFBT1IsTUFBSzs0QkFBU0gsU0FBU2hGOzRCQUFRNkUsV0FBVTtzQ0FBYzs7Ozs7Ozs7Ozs7a0NBTW5FLDhEQUFDYzt3QkFDQ1IsTUFBSzt3QkFDTFMsVUFDRSxPQUFReEYsSUFBSSxLQUFLLFlBQWEsRUFBQ0YsT0FBT0ksV0FBVyxJQUFJLENBQUNKLE9BQU9HLFNBQVMsSUFBSSxDQUFDWSxVQUFTLEtBQ25GZixPQUFPRSxJQUFJLEtBQUssVUFBVyxFQUFDRixPQUFPNEYsVUFBVSxJQUFJLENBQUM1RixPQUFPZ0csT0FBTzt3QkFFbkVyQixXQUFVO2tDQUVUNUUsY0FBYyxhQUFhOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFLdEMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9ienp6LWNvbmZpZy11aS8uL2FwcC9zZXR1cC9jb21wb25lbnRzL0NsdXN0ZXJGb3JtYXRpb24udHN4P2MzMzciXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBjbGllbnQnXG5cbmltcG9ydCB7IHVzZVN0YXRlLCB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IFxuICBTZXJ2ZXJTdGFja0ljb24sXG4gIFBsdXNJY29uLFxuICBNYWduaWZ5aW5nR2xhc3NJY29uLFxuICBXaWZpSWNvbixcbiAgQ29tcHV0ZXJEZXNrdG9wSWNvbixcbiAgQXJyb3dQYXRoSWNvbixcbiAgQ2hlY2tDaXJjbGVJY29uLFxuICBFeGNsYW1hdGlvblRyaWFuZ2xlSWNvbixcbiAgSW5mb3JtYXRpb25DaXJjbGVJY29uLFxuICBVc2VyR3JvdXBJY29uLFxuICBLZXlJY29uXG59IGZyb20gJ0BoZXJvaWNvbnMvcmVhY3QvMjQvb3V0bGluZSdcblxuaW50ZXJmYWNlIERpc2NvdmVyZWROb2RlIHtcbiAgaWQ6IHN0cmluZ1xuICBob3N0bmFtZTogc3RyaW5nXG4gIGlwOiBzdHJpbmdcbiAgcG9ydDogbnVtYmVyXG4gIHZlcnNpb246IHN0cmluZ1xuICBjYXBhYmlsaXRpZXM6IHN0cmluZ1tdXG4gIHN0YXR1czogJ29ubGluZScgfCAnb2ZmbGluZScgfCAncGVuZGluZydcbiAgbGFzdFNlZW46IERhdGVcbn1cblxuaW50ZXJmYWNlIENsdXN0ZXJDb25maWcge1xuICBtb2RlOiAnY3JlYXRlJyB8ICdqb2luJ1xuICBuZXR3b3JrSWQ6IHN0cmluZ1xuICBjbHVzdGVyTmFtZTogc3RyaW5nXG4gIG5vZGVSb2xlOiAnY29vcmRpbmF0b3InIHwgJ3dvcmtlcicgfCAnaHlicmlkJ1xuICBqb2luS2V5Pzogc3RyaW5nXG4gIHRhcmdldE5vZGU/OiBzdHJpbmdcbiAgYXV0b0Rpc2NvdmVyeTogYm9vbGVhblxuICBlbmNyeXB0aW9uOiBib29sZWFuXG4gIHJlZHVuZGFuY3k6IG51bWJlclxufVxuXG5pbnRlcmZhY2UgQ2x1c3RlckZvcm1hdGlvblByb3BzIHtcbiAgc3lzdGVtSW5mbzogYW55XG4gIGNvbmZpZ0RhdGE6IGFueVxuICBvbkNvbXBsZXRlOiAoZGF0YTogYW55KSA9PiB2b2lkXG4gIG9uQmFjaz86ICgpID0+IHZvaWRcbiAgaXNDb21wbGV0ZWQ6IGJvb2xlYW5cbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gQ2x1c3RlckZvcm1hdGlvbih7IFxuICBzeXN0ZW1JbmZvLCBcbiAgY29uZmlnRGF0YSwgXG4gIG9uQ29tcGxldGUsIFxuICBvbkJhY2ssIFxuICBpc0NvbXBsZXRlZCBcbn06IENsdXN0ZXJGb3JtYXRpb25Qcm9wcykge1xuICBjb25zdCBbY29uZmlnLCBzZXRDb25maWddID0gdXNlU3RhdGU8Q2x1c3RlckNvbmZpZz4oe1xuICAgIG1vZGU6ICdjcmVhdGUnLFxuICAgIG5ldHdvcmtJZDogJycsXG4gICAgY2x1c3Rlck5hbWU6ICcnLFxuICAgIG5vZGVSb2xlOiAnaHlicmlkJyxcbiAgICBhdXRvRGlzY292ZXJ5OiB0cnVlLFxuICAgIGVuY3J5cHRpb246IHRydWUsXG4gICAgcmVkdW5kYW5jeTogMlxuICB9KVxuXG4gIGNvbnN0IFtkaXNjb3ZlcmVkTm9kZXMsIHNldERpc2NvdmVyZWROb2Rlc10gPSB1c2VTdGF0ZTxEaXNjb3ZlcmVkTm9kZVtdPihbXSlcbiAgY29uc3QgW3NjYW5uaW5nLCBzZXRTY2FubmluZ10gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW2dlbmVyYXRpbmdLZXksIHNldEdlbmVyYXRpbmdLZXldID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtjbHVzdGVyS2V5LCBzZXRDbHVzdGVyS2V5XSA9IHVzZVN0YXRlKCcnKVxuXG4gIC8vIEluaXRpYWxpemUgY29uZmlndXJhdGlvblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChjb25maWdEYXRhLmNsdXN0ZXIpIHtcbiAgICAgIHNldENvbmZpZyhwcmV2ID0+ICh7IC4uLnByZXYsIC4uLmNvbmZpZ0RhdGEuY2x1c3RlciB9KSlcbiAgICB9XG4gICAgXG4gICAgLy8gR2VuZXJhdGUgZGVmYXVsdCBuZXR3b3JrIElEIGJhc2VkIG9uIGhvc3RuYW1lXG4gICAgaWYgKCFjb25maWcubmV0d29ya0lkICYmIHN5c3RlbUluZm8/Lm5ldHdvcms/Lmhvc3RuYW1lKSB7XG4gICAgICBjb25zdCBob3N0bmFtZSA9IHN5c3RlbUluZm8ubmV0d29yay5ob3N0bmFtZVxuICAgICAgY29uc3QgdGltZXN0YW1wID0gRGF0ZS5ub3coKS50b1N0cmluZygzNikuc2xpY2UoLTQpXG4gICAgICBzZXRDb25maWcocHJldiA9PiAoe1xuICAgICAgICAuLi5wcmV2LFxuICAgICAgICBuZXR3b3JrSWQ6IGBienp6LSR7aG9zdG5hbWV9LSR7dGltZXN0YW1wfWAsXG4gICAgICAgIGNsdXN0ZXJOYW1lOiBgJHtob3N0bmFtZX0gQlpaWiBDbHVzdGVyYFxuICAgICAgfSkpXG4gICAgfVxuICB9LCBbc3lzdGVtSW5mbywgY29uZmlnRGF0YV0pXG5cbiAgLy8gQXV0by1kaXNjb3ZlciBub2RlcyB3aGVuIGpvaW5pbmdcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoY29uZmlnLm1vZGUgPT09ICdqb2luJyAmJiBjb25maWcuYXV0b0Rpc2NvdmVyeSkge1xuICAgICAgc2NhbkZvck5vZGVzKClcbiAgICB9XG4gIH0sIFtjb25maWcubW9kZSwgY29uZmlnLmF1dG9EaXNjb3ZlcnldKVxuXG4gIGNvbnN0IHNjYW5Gb3JOb2RlcyA9IGFzeW5jICgpID0+IHtcbiAgICBzZXRTY2FubmluZyh0cnVlKVxuICAgIHRyeSB7XG4gICAgICAvLyBUaGlzIHdvdWxkIGJlIGEgcmVhbCBtRE5TL25ldHdvcmsgc2NhbiBpbiBwcm9kdWN0aW9uXG4gICAgICAvLyBTaW11bGF0aW5nIGRpc2NvdmVyeSBmb3IgZGVtb1xuICAgICAgYXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PiBzZXRUaW1lb3V0KHJlc29sdmUsIDIwMDApKVxuICAgICAgXG4gICAgICBjb25zdCBtb2NrTm9kZXM6IERpc2NvdmVyZWROb2RlW10gPSBbXG4gICAgICAgIHtcbiAgICAgICAgICBpZDogJ25vZGUtMDAxJyxcbiAgICAgICAgICBob3N0bmFtZTogJ2lyb253b29kJyxcbiAgICAgICAgICBpcDogJzE5Mi4xNjguMS43MicsXG4gICAgICAgICAgcG9ydDogODA4MCxcbiAgICAgICAgICB2ZXJzaW9uOiAnMi4wLjAnLFxuICAgICAgICAgIGNhcGFiaWxpdGllczogWydjb29yZGluYXRvcicsICdzdG9yYWdlJywgJ2NvbXB1dGUnXSxcbiAgICAgICAgICBzdGF0dXM6ICdvbmxpbmUnLFxuICAgICAgICAgIGxhc3RTZWVuOiBuZXcgRGF0ZSgpXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBpZDogJ25vZGUtMDAyJyxcbiAgICAgICAgICBob3N0bmFtZTogJ3dhbG51dCcsXG4gICAgICAgICAgaXA6ICcxOTIuMTY4LjEuMjcnLFxuICAgICAgICAgIHBvcnQ6IDgwODAsXG4gICAgICAgICAgdmVyc2lvbjogJzIuMC4wJyxcbiAgICAgICAgICBjYXBhYmlsaXRpZXM6IFsnd29ya2VyJywgJ2NvbXB1dGUnXSxcbiAgICAgICAgICBzdGF0dXM6ICdvbmxpbmUnLFxuICAgICAgICAgIGxhc3RTZWVuOiBuZXcgRGF0ZSgpXG4gICAgICAgIH1cbiAgICAgIF1cbiAgICAgIFxuICAgICAgc2V0RGlzY292ZXJlZE5vZGVzKG1vY2tOb2RlcylcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcignTm9kZSBkaXNjb3ZlcnkgZmFpbGVkOicsIGVycm9yKVxuICAgIH0gZmluYWxseSB7XG4gICAgICBzZXRTY2FubmluZyhmYWxzZSlcbiAgICB9XG4gIH1cblxuICBjb25zdCBnZW5lcmF0ZUNsdXN0ZXJLZXkgPSBhc3luYyAoKSA9PiB7XG4gICAgc2V0R2VuZXJhdGluZ0tleSh0cnVlKVxuICAgIHRyeSB7XG4gICAgICAvLyBHZW5lcmF0ZSBhIHNlY3VyZSBjbHVzdGVyIGtleVxuICAgICAgY29uc3Qga2V5ID0gQXJyYXkuZnJvbShjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKG5ldyBVaW50OEFycmF5KDMyKSkpXG4gICAgICAgIC5tYXAoYiA9PiBiLnRvU3RyaW5nKDE2KS5wYWRTdGFydCgyLCAnMCcpKVxuICAgICAgICAuam9pbignJylcbiAgICAgIHNldENsdXN0ZXJLZXkoa2V5KVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAvLyBGYWxsYmFjayBrZXkgZ2VuZXJhdGlvblxuICAgICAgY29uc3Qga2V5ID0gTWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc3Vic3RyKDIsIDMyKVxuICAgICAgc2V0Q2x1c3RlcktleShrZXkpXG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHNldEdlbmVyYXRpbmdLZXkoZmFsc2UpXG4gICAgfVxuICB9XG5cbiAgY29uc3QgZ2V0Tm9kZVJvbGVEZXNjcmlwdGlvbiA9IChyb2xlOiBzdHJpbmcpID0+IHtcbiAgICBzd2l0Y2ggKHJvbGUpIHtcbiAgICAgIGNhc2UgJ2Nvb3JkaW5hdG9yJzpcbiAgICAgICAgcmV0dXJuICdNYW5hZ2VzIGNsdXN0ZXIgc3RhdGUgYW5kIGNvb3JkaW5hdGVzIHRhc2tzLiBSZXF1aXJlcyBzdGFibGUgbmV0d29yayBjb25uZWN0aW9uLidcbiAgICAgIGNhc2UgJ3dvcmtlcic6XG4gICAgICAgIHJldHVybiAnRXhlY3V0ZXMgdGFza3MgYXNzaWduZWQgYnkgY29vcmRpbmF0b3JzLiBDYW4gYmUgZHluYW1pY2FsbHkgYWRkZWQvcmVtb3ZlZC4nXG4gICAgICBjYXNlICdoeWJyaWQnOlxuICAgICAgICByZXR1cm4gJ0NhbiBhY3QgYXMgYm90aCBjb29yZGluYXRvciBhbmQgd29ya2VyLiBSZWNvbW1lbmRlZCBmb3IgbW9zdCBkZXBsb3ltZW50cy4nXG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gJydcbiAgICB9XG4gIH1cblxuICBjb25zdCBnZXRTeXN0ZW1SZWNvbW1lbmRhdGlvbiA9ICgpID0+IHtcbiAgICBjb25zdCBtZW1vcnlHQiA9IHN5c3RlbUluZm8/Lm1lbW9yeV9tYiA/IE1hdGgucm91bmQoc3lzdGVtSW5mby5tZW1vcnlfbWIgLyAxMDI0KSA6IDhcbiAgICBjb25zdCBjcHVDb3JlcyA9IHN5c3RlbUluZm8/LmNwdV9jb3JlcyB8fCA0XG4gICAgY29uc3QgaGFzR1BVID0gc3lzdGVtSW5mbz8uZ3B1cz8ubGVuZ3RoID4gMFxuXG4gICAgaWYgKG1lbW9yeUdCID49IDE2ICYmIGNwdUNvcmVzID49IDgpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHJvbGU6ICdjb29yZGluYXRvcicsXG4gICAgICAgIHJlYXNvbjogJ0hpZ2gtcGVyZm9ybWFuY2Ugc3lzdGVtIHN1aXRhYmxlIGZvciBjbHVzdGVyIGNvb3JkaW5hdGlvbidcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGhhc0dQVSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgcm9sZTogJ2h5YnJpZCcsXG4gICAgICAgIHJlYXNvbjogJ0dQVSBhY2NlbGVyYXRpb24gYXZhaWxhYmxlIC0gZ29vZCBmb3IgYm90aCBjb29yZGluYXRpb24gYW5kIGNvbXB1dGUgdGFza3MnXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHJvbGU6ICd3b3JrZXInLFxuICAgICAgICByZWFzb246ICdSZXNvdXJjZS1vcHRpbWl6ZWQgY29uZmlndXJhdGlvbiBmb3IgdGFzayBleGVjdXRpb24nXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY29uc3QgaGFuZGxlU3VibWl0ID0gKGU6IFJlYWN0LkZvcm1FdmVudCkgPT4ge1xuICAgIGUucHJldmVudERlZmF1bHQoKVxuICAgIFxuICAgIGNvbnN0IGNsdXN0ZXJEYXRhID0ge1xuICAgICAgLi4uY29uZmlnLFxuICAgICAgY2x1c3RlcktleTogY29uZmlnLm1vZGUgPT09ICdjcmVhdGUnID8gY2x1c3RlcktleSA6IHVuZGVmaW5lZCxcbiAgICAgIHN5c3RlbUluZm86IHtcbiAgICAgICAgaG9zdG5hbWU6IHN5c3RlbUluZm8/Lm5ldHdvcms/Lmhvc3RuYW1lLFxuICAgICAgICBpcDogc3lzdGVtSW5mbz8ubmV0d29yaz8ucHJpdmF0ZV9pcHM/LlswXSxcbiAgICAgICAgY2FwYWJpbGl0aWVzOiBzeXN0ZW1JbmZvPy5ncHVzPy5sZW5ndGggPiAwID8gWydjb21wdXRlJywgJ2dwdSddIDogWydjb21wdXRlJ11cbiAgICAgIH1cbiAgICB9XG5cbiAgICBvbkNvbXBsZXRlKHsgY2x1c3RlcjogY2x1c3RlckRhdGEgfSlcbiAgfVxuXG4gIGNvbnN0IHJlY29tbWVuZGF0aW9uID0gZ2V0U3lzdGVtUmVjb21tZW5kYXRpb24oKVxuXG4gIHJldHVybiAoXG4gICAgPGZvcm0gb25TdWJtaXQ9e2hhbmRsZVN1Ym1pdH0gY2xhc3NOYW1lPVwic3BhY2UteS02XCI+XG4gICAgICB7LyogQ2x1c3RlciBNb2RlIFNlbGVjdGlvbiAqL31cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmctZ3JheS01MCByb3VuZGVkLWxnIHAtNlwiPlxuICAgICAgICA8aDMgY2xhc3NOYW1lPVwidGV4dC1sZyBmb250LW1lZGl1bSB0ZXh0LWdyYXktOTAwIG1iLTQgZmxleCBpdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICA8U2VydmVyU3RhY2tJY29uIGNsYXNzTmFtZT1cImgtNiB3LTYgdGV4dC1ienp6LXByaW1hcnkgbXItMlwiIC8+XG4gICAgICAgICAgQ2x1c3RlciBNb2RlXG4gICAgICAgIDwvaDM+XG4gICAgICAgIFxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImdyaWQgZ3JpZC1jb2xzLTEgbWQ6Z3JpZC1jb2xzLTIgZ2FwLTRcIj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzc05hbWU9e2Bib3JkZXItMiByb3VuZGVkLWxnIHAtNCBjdXJzb3ItcG9pbnRlciB0cmFuc2l0aW9uLWFsbCAke1xuICAgICAgICAgICAgICBjb25maWcubW9kZSA9PT0gJ2NyZWF0ZSdcbiAgICAgICAgICAgICAgICA/ICdib3JkZXItYnp6ei1wcmltYXJ5IGJnLWJ6enotcHJpbWFyeSBiZy1vcGFjaXR5LTEwJ1xuICAgICAgICAgICAgICAgIDogJ2JvcmRlci1ncmF5LTIwMCBob3Zlcjpib3JkZXItZ3JheS0zMDAnXG4gICAgICAgICAgICB9YH1cbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldENvbmZpZyhwcmV2ID0+ICh7IC4uLnByZXYsIG1vZGU6ICdjcmVhdGUnIH0pKX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIG1iLTJcIj5cbiAgICAgICAgICAgICAgPFBsdXNJY29uIGNsYXNzTmFtZT1cImgtNSB3LTUgdGV4dC1ienp6LXByaW1hcnkgbXItMlwiIC8+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZm9udC1tZWRpdW0gdGV4dC1ncmF5LTkwMFwiPkNyZWF0ZSBOZXcgQ2x1c3RlcjwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtc20gdGV4dC1ncmF5LTYwMFwiPlxuICAgICAgICAgICAgICBTdGFydCBhIG5ldyBCWlpaIGNsdXN0ZXIgYW5kIGJlY29tZSB0aGUgaW5pdGlhbCBjb29yZGluYXRvciBub2RlLlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgXG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3NOYW1lPXtgYm9yZGVyLTIgcm91bmRlZC1sZyBwLTQgY3Vyc29yLXBvaW50ZXIgdHJhbnNpdGlvbi1hbGwgJHtcbiAgICAgICAgICAgICAgY29uZmlnLm1vZGUgPT09ICdqb2luJ1xuICAgICAgICAgICAgICAgID8gJ2JvcmRlci1ienp6LXByaW1hcnkgYmctYnp6ei1wcmltYXJ5IGJnLW9wYWNpdHktMTAnXG4gICAgICAgICAgICAgICAgOiAnYm9yZGVyLWdyYXktMjAwIGhvdmVyOmJvcmRlci1ncmF5LTMwMCdcbiAgICAgICAgICAgIH1gfVxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4gc2V0Q29uZmlnKHByZXYgPT4gKHsgLi4ucHJldiwgbW9kZTogJ2pvaW4nIH0pKX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIG1iLTJcIj5cbiAgICAgICAgICAgICAgPFVzZXJHcm91cEljb24gY2xhc3NOYW1lPVwiaC01IHctNSB0ZXh0LWJ6enotcHJpbWFyeSBtci0yXCIgLz5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmb250LW1lZGl1bSB0ZXh0LWdyYXktOTAwXCI+Sm9pbiBFeGlzdGluZyBDbHVzdGVyPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1zbSB0ZXh0LWdyYXktNjAwXCI+XG4gICAgICAgICAgICAgIENvbm5lY3QgdG8gYW4gZXhpc3RpbmcgQlpaWiBjbHVzdGVyIGFzIGEgd29ya2VyIG9yIGNvb3JkaW5hdG9yIG5vZGUuXG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgey8qIENyZWF0ZSBDbHVzdGVyIENvbmZpZ3VyYXRpb24gKi99XG4gICAgICB7Y29uZmlnLm1vZGUgPT09ICdjcmVhdGUnICYmIChcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJzcGFjZS15LTZcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJnLXdoaXRlIGJvcmRlciBib3JkZXItZ3JheS0yMDAgcm91bmRlZC1sZyBwLTZcIj5cbiAgICAgICAgICAgIDxoMyBjbGFzc05hbWU9XCJ0ZXh0LWxnIGZvbnQtbWVkaXVtIHRleHQtZ3JheS05MDAgbWItNFwiPk5ldyBDbHVzdGVyIENvbmZpZ3VyYXRpb248L2gzPlxuICAgICAgICAgICAgXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInNwYWNlLXktNFwiPlxuICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzc05hbWU9XCJsYWJlbFwiPkNsdXN0ZXIgTmFtZTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICB2YWx1ZT17Y29uZmlnLmNsdXN0ZXJOYW1lfVxuICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiBzZXRDb25maWcocHJldiA9PiAoeyAuLi5wcmV2LCBjbHVzdGVyTmFtZTogZS50YXJnZXQudmFsdWUgfSkpfVxuICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJNeSBCWlpaIENsdXN0ZXJcIlxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiaW5wdXQtZmllbGRcIlxuICAgICAgICAgICAgICAgICAgcmVxdWlyZWRcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzc05hbWU9XCJsYWJlbFwiPk5ldHdvcmsgSUQ8L2xhYmVsPlxuICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgdmFsdWU9e2NvbmZpZy5uZXR3b3JrSWR9XG4gICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IHNldENvbmZpZyhwcmV2ID0+ICh7IC4uLnByZXYsIG5ldHdvcmtJZDogZS50YXJnZXQudmFsdWUgfSkpfVxuICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJienp6LWNsdXN0ZXItMDAxXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImlucHV0LWZpZWxkXCJcbiAgICAgICAgICAgICAgICAgIHJlcXVpcmVkXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJ0ZXh0LXNtIHRleHQtZ3JheS02MDAgbXQtMVwiPlxuICAgICAgICAgICAgICAgICAgVW5pcXVlIGlkZW50aWZpZXIgZm9yIHlvdXIgY2x1c3RlciBuZXR3b3JrXG4gICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzc05hbWU9XCJsYWJlbFwiPkNsdXN0ZXIgU2VjdXJpdHkgS2V5PC9sYWJlbD5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggc3BhY2UteC0yXCI+XG4gICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICB2YWx1ZT17Y2x1c3RlcktleX1cbiAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiBzZXRDbHVzdGVyS2V5KGUudGFyZ2V0LnZhbHVlKX1cbiAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJDbGljayBnZW5lcmF0ZSBvciBlbnRlciBjdXN0b20ga2V5XCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiaW5wdXQtZmllbGQgZmxleC0xXCJcbiAgICAgICAgICAgICAgICAgICAgcmVhZE9ubHk9eyFjbHVzdGVyS2V5fVxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2dlbmVyYXRlQ2x1c3RlcktleX1cbiAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e2dlbmVyYXRpbmdLZXl9XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImJ0bi1vdXRsaW5lIHdoaXRlc3BhY2Utbm93cmFwXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge2dlbmVyYXRpbmdLZXkgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgPEFycm93UGF0aEljb24gY2xhc3NOYW1lPVwiaC00IHctNCBhbmltYXRlLXNwaW5cIiAvPlxuICAgICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8S2V5SWNvbiBjbGFzc05hbWU9XCJoLTQgdy00IG1yLTFcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdGVcbiAgICAgICAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQtc20gdGV4dC1ncmF5LTYwMCBtdC0xXCI+XG4gICAgICAgICAgICAgICAgICBUaGlzIGtleSB3aWxsIGJlIHJlcXVpcmVkIGZvciBvdGhlciBub2RlcyB0byBqb2luIHlvdXIgY2x1c3RlclxuICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICApfVxuXG4gICAgICB7LyogSm9pbiBDbHVzdGVyIENvbmZpZ3VyYXRpb24gKi99XG4gICAgICB7Y29uZmlnLm1vZGUgPT09ICdqb2luJyAmJiAoXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwic3BhY2UteS02XCI+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJiZy13aGl0ZSBib3JkZXIgYm9yZGVyLWdyYXktMjAwIHJvdW5kZWQtbGcgcC02XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBtYi00XCI+XG4gICAgICAgICAgICAgIDxoMyBjbGFzc05hbWU9XCJ0ZXh0LWxnIGZvbnQtbWVkaXVtIHRleHQtZ3JheS05MDBcIj5BdmFpbGFibGUgQ2x1c3RlcnM8L2gzPlxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgb25DbGljaz17c2NhbkZvck5vZGVzfVxuICAgICAgICAgICAgICAgIGRpc2FibGVkPXtzY2FubmluZ31cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJidG4tb3V0bGluZSB0ZXh0LXNtXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHtzY2FubmluZyA/IChcbiAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgIDxBcnJvd1BhdGhJY29uIGNsYXNzTmFtZT1cImgtNCB3LTQgYW5pbWF0ZS1zcGluIG1yLTFcIiAvPlxuICAgICAgICAgICAgICAgICAgICBTY2FubmluZy4uLlxuICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgIDxNYWduaWZ5aW5nR2xhc3NJY29uIGNsYXNzTmFtZT1cImgtNCB3LTQgbXItMVwiIC8+XG4gICAgICAgICAgICAgICAgICAgIFNjYW4gTmV0d29ya1xuICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAge2Rpc2NvdmVyZWROb2Rlcy5sZW5ndGggPiAwID8gKFxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInNwYWNlLXktM1wiPlxuICAgICAgICAgICAgICAgIHtkaXNjb3ZlcmVkTm9kZXMubWFwKChub2RlKSA9PiAoXG4gICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgIGtleT17bm9kZS5pZH1cbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgYm9yZGVyIHJvdW5kZWQtbGcgcC00IGN1cnNvci1wb2ludGVyIHRyYW5zaXRpb24tYWxsICR7XG4gICAgICAgICAgICAgICAgICAgICAgY29uZmlnLnRhcmdldE5vZGUgPT09IG5vZGUuaWRcbiAgICAgICAgICAgICAgICAgICAgICAgID8gJ2JvcmRlci1ienp6LXByaW1hcnkgYmctYnp6ei1wcmltYXJ5IGJnLW9wYWNpdHktMTAnXG4gICAgICAgICAgICAgICAgICAgICAgICA6ICdib3JkZXItZ3JheS0yMDAgaG92ZXI6Ym9yZGVyLWdyYXktMzAwJ1xuICAgICAgICAgICAgICAgICAgICB9YH1cbiAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gc2V0Q29uZmlnKHByZXYgPT4gKHsgLi4ucHJldiwgdGFyZ2V0Tm9kZTogbm9kZS5pZCB9KSl9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPENvbXB1dGVyRGVza3RvcEljb24gY2xhc3NOYW1lPVwiaC01IHctNSB0ZXh0LWdyYXktNTAwIG1yLTJcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJmb250LW1lZGl1bSB0ZXh0LWdyYXktOTAwXCI+e25vZGUuaG9zdG5hbWV9PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2BtbC0yIHN0YXR1cy1pbmRpY2F0b3IgJHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlLnN0YXR1cyA9PT0gJ29ubGluZScgPyAnc3RhdHVzLW9ubGluZScgOiAnc3RhdHVzLW9mZmxpbmUnXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1gfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7bm9kZS5zdGF0dXN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LXNtIHRleHQtZ3JheS02MDAgbXQtMVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7bm9kZS5pcH06e25vZGUucG9ydH0g4oCiIFZlcnNpb24ge25vZGUudmVyc2lvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGZsZXgtd3JhcCBnYXAtMSBtdC0xXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHtub2RlLmNhcGFiaWxpdGllcy5tYXAoKGNhcCwgaW5kZXgpID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBrZXk9e2luZGV4fSBjbGFzc05hbWU9XCJiZy1ncmF5LTEwMCB0ZXh0LWdyYXktNzAwIHB4LTIgcHktMSByb3VuZGVkIHRleHQteHNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtjYXB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDxXaWZpSWNvbiBjbGFzc05hbWU9XCJoLTUgdy01IHRleHQtYnp6ei1wcmltYXJ5XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtY2VudGVyIHB5LThcIj5cbiAgICAgICAgICAgICAgICA8TWFnbmlmeWluZ0dsYXNzSWNvbiBjbGFzc05hbWU9XCJoLTEyIHctMTIgdGV4dC1ncmF5LTQwMCBteC1hdXRvIG1iLTRcIiAvPlxuICAgICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQtZ3JheS02MDBcIj5cbiAgICAgICAgICAgICAgICAgIHtzY2FubmluZyA/ICdTY2FubmluZyBmb3IgQlpaWiBjbHVzdGVycy4uLicgOiAnTm8gY2x1c3RlcnMgZm91bmQuIENsaWNrIHNjYW4gdG8gc2VhcmNoIGZvciBhdmFpbGFibGUgY2x1c3RlcnMuJ31cbiAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAge2NvbmZpZy50YXJnZXROb2RlICYmIChcbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtdC00IHB0LTQgYm9yZGVyLXQgYm9yZGVyLWdyYXktMjAwXCI+XG4gICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzTmFtZT1cImxhYmVsXCI+Q2x1c3RlciBKb2luIEtleTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICB0eXBlPVwicGFzc3dvcmRcIlxuICAgICAgICAgICAgICAgICAgdmFsdWU9e2NvbmZpZy5qb2luS2V5IHx8ICcnfVxuICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiBzZXRDb25maWcocHJldiA9PiAoeyAuLi5wcmV2LCBqb2luS2V5OiBlLnRhcmdldC52YWx1ZSB9KSl9XG4gICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIkVudGVyIGNsdXN0ZXIgc2VjdXJpdHkga2V5XCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImlucHV0LWZpZWxkXCJcbiAgICAgICAgICAgICAgICAgIHJlcXVpcmVkXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJ0ZXh0LXNtIHRleHQtZ3JheS02MDAgbXQtMVwiPlxuICAgICAgICAgICAgICAgICAgRW50ZXIgdGhlIHNlY3VyaXR5IGtleSBwcm92aWRlZCBieSB0aGUgY2x1c3RlciBhZG1pbmlzdHJhdG9yXG4gICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgKX1cblxuICAgICAgey8qIE5vZGUgUm9sZSBDb25maWd1cmF0aW9uICovfVxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJiZy13aGl0ZSBib3JkZXIgYm9yZGVyLWdyYXktMjAwIHJvdW5kZWQtbGcgcC02XCI+XG4gICAgICAgIDxoMyBjbGFzc05hbWU9XCJ0ZXh0LWxnIGZvbnQtbWVkaXVtIHRleHQtZ3JheS05MDAgbWItNFwiPk5vZGUgUm9sZTwvaDM+XG4gICAgICAgIFxuICAgICAgICB7LyogU3lzdGVtIFJlY29tbWVuZGF0aW9uICovfVxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1iLTQgcC00IGJnLWJsdWUtNTAgYm9yZGVyIGJvcmRlci1ibHVlLTIwMCByb3VuZGVkLWxnXCI+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLXN0YXJ0XCI+XG4gICAgICAgICAgICA8SW5mb3JtYXRpb25DaXJjbGVJY29uIGNsYXNzTmFtZT1cImgtNSB3LTUgdGV4dC1ibHVlLTYwMCBtci0yIG10LTAuNVwiIC8+XG4gICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZvbnQtbWVkaXVtIHRleHQtYmx1ZS04MDBcIj5cbiAgICAgICAgICAgICAgICBSZWNvbW1lbmRlZDoge3JlY29tbWVuZGF0aW9uLnJvbGUuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyByZWNvbW1lbmRhdGlvbi5yb2xlLnNsaWNlKDEpfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LXNtIHRleHQtYmx1ZS03MDAgbXQtMVwiPlxuICAgICAgICAgICAgICAgIHtyZWNvbW1lbmRhdGlvbi5yZWFzb259XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwic3BhY2UteS0zXCI+XG4gICAgICAgICAge1snY29vcmRpbmF0b3InLCAnd29ya2VyJywgJ2h5YnJpZCddLm1hcCgocm9sZSkgPT4gKFxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBrZXk9e3JvbGV9XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17YGJvcmRlci0yIHJvdW5kZWQtbGcgcC00IGN1cnNvci1wb2ludGVyIHRyYW5zaXRpb24tYWxsICR7XG4gICAgICAgICAgICAgICAgY29uZmlnLm5vZGVSb2xlID09PSByb2xlXG4gICAgICAgICAgICAgICAgICA/ICdib3JkZXItYnp6ei1wcmltYXJ5IGJnLWJ6enotcHJpbWFyeSBiZy1vcGFjaXR5LTEwJ1xuICAgICAgICAgICAgICAgICAgOiAnYm9yZGVyLWdyYXktMjAwIGhvdmVyOmJvcmRlci1ncmF5LTMwMCdcbiAgICAgICAgICAgICAgfWB9XG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldENvbmZpZyhwcmV2ID0+ICh7IC4uLnByZXYsIG5vZGVSb2xlOiByb2xlIGFzIGFueSB9KSl9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJyYWRpb1wiXG4gICAgICAgICAgICAgICAgICBuYW1lPVwibm9kZVJvbGVcIlxuICAgICAgICAgICAgICAgICAgdmFsdWU9e3JvbGV9XG4gICAgICAgICAgICAgICAgICBjaGVja2VkPXtjb25maWcubm9kZVJvbGUgPT09IHJvbGV9XG4gICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KCkgPT4gc2V0Q29uZmlnKHByZXYgPT4gKHsgLi4ucHJldiwgbm9kZVJvbGU6IHJvbGUgYXMgYW55IH0pKX1cbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImgtNCB3LTQgdGV4dC1ienp6LXByaW1hcnkgZm9jdXM6cmluZy1ienp6LXByaW1hcnkgYm9yZGVyLWdyYXktMzAwXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibWwtM1wiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmb250LW1lZGl1bSB0ZXh0LWdyYXktOTAwIGNhcGl0YWxpemVcIj57cm9sZX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1zbSB0ZXh0LWdyYXktNjAwXCI+e2dldE5vZGVSb2xlRGVzY3JpcHRpb24ocm9sZSl9PC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIHsvKiBBZHZhbmNlZCBPcHRpb25zICovfVxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJiZy13aGl0ZSBib3JkZXIgYm9yZGVyLWdyYXktMjAwIHJvdW5kZWQtbGcgcC02XCI+XG4gICAgICAgIDxoMyBjbGFzc05hbWU9XCJ0ZXh0LWxnIGZvbnQtbWVkaXVtIHRleHQtZ3JheS05MDAgbWItNFwiPkFkdmFuY2VkIE9wdGlvbnM8L2gzPlxuICAgICAgICBcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJzcGFjZS15LTRcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgaWQ9XCJhdXRvRGlzY292ZXJ5XCJcbiAgICAgICAgICAgICAgY2hlY2tlZD17Y29uZmlnLmF1dG9EaXNjb3Zlcnl9XG4gICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gc2V0Q29uZmlnKHByZXYgPT4gKHsgLi4ucHJldiwgYXV0b0Rpc2NvdmVyeTogZS50YXJnZXQuY2hlY2tlZCB9KSl9XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT1cImgtNCB3LTQgdGV4dC1ienp6LXByaW1hcnkgZm9jdXM6cmluZy1ienp6LXByaW1hcnkgYm9yZGVyLWdyYXktMzAwIHJvdW5kZWRcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxsYWJlbCBodG1sRm9yPVwiYXV0b0Rpc2NvdmVyeVwiIGNsYXNzTmFtZT1cIm1sLTIgdGV4dC1zbSBmb250LW1lZGl1bSB0ZXh0LWdyYXktNzAwXCI+XG4gICAgICAgICAgICAgIEVuYWJsZSBhdXRvbWF0aWMgbm9kZSBkaXNjb3ZlcnkgKG1ETlMpXG4gICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICAgIGlkPVwiZW5jcnlwdGlvblwiXG4gICAgICAgICAgICAgIGNoZWNrZWQ9e2NvbmZpZy5lbmNyeXB0aW9ufVxuICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IHNldENvbmZpZyhwcmV2ID0+ICh7IC4uLnByZXYsIGVuY3J5cHRpb246IGUudGFyZ2V0LmNoZWNrZWQgfSkpfVxuICAgICAgICAgICAgICBjbGFzc05hbWU9XCJoLTQgdy00IHRleHQtYnp6ei1wcmltYXJ5IGZvY3VzOnJpbmctYnp6ei1wcmltYXJ5IGJvcmRlci1ncmF5LTMwMCByb3VuZGVkXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8bGFiZWwgaHRtbEZvcj1cImVuY3J5cHRpb25cIiBjbGFzc05hbWU9XCJtbC0yIHRleHQtc20gZm9udC1tZWRpdW0gdGV4dC1ncmF5LTcwMFwiPlxuICAgICAgICAgICAgICBFbmFibGUgZW5kLXRvLWVuZCBlbmNyeXB0aW9uIGZvciBjbHVzdGVyIGNvbW11bmljYXRpb25cbiAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzTmFtZT1cImxhYmVsXCI+UmVkdW5kYW5jeSBMZXZlbDwvbGFiZWw+XG4gICAgICAgICAgICA8c2VsZWN0XG4gICAgICAgICAgICAgIHZhbHVlPXtjb25maWcucmVkdW5kYW5jeX1cbiAgICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiBzZXRDb25maWcocHJldiA9PiAoeyAuLi5wcmV2LCByZWR1bmRhbmN5OiBwYXJzZUludChlLnRhcmdldC52YWx1ZSkgfSkpfVxuICAgICAgICAgICAgICBjbGFzc05hbWU9XCJpbnB1dC1maWVsZFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9ezF9PkxvdyAoMSByZXBsaWNhKTwvb3B0aW9uPlxuICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPXsyfT5NZWRpdW0gKDIgcmVwbGljYXMpPC9vcHRpb24+XG4gICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9ezN9PkhpZ2ggKDMgcmVwbGljYXMpPC9vcHRpb24+XG4gICAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQtc20gdGV4dC1ncmF5LTYwMCBtdC0xXCI+XG4gICAgICAgICAgICAgIE51bWJlciBvZiByZXBsaWNhcyBmb3IgY3JpdGljYWwgY2x1c3RlciBkYXRhXG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIHsvKiBDb25maWd1cmF0aW9uIFN1bW1hcnkgKi99XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImJnLWJsdWUtNTAgYm9yZGVyIGJvcmRlci1ibHVlLTIwMCByb3VuZGVkLWxnIHAtNFwiPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIG1iLTJcIj5cbiAgICAgICAgICA8Q2hlY2tDaXJjbGVJY29uIGNsYXNzTmFtZT1cImgtNSB3LTUgdGV4dC1ibHVlLTYwMCBtci0yXCIgLz5cbiAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LWJsdWUtODAwIGZvbnQtbWVkaXVtXCI+Q29uZmlndXJhdGlvbiBTdW1tYXJ5PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LWJsdWUtNzAwIHRleHQtc20gc3BhY2UteS0xXCI+XG4gICAgICAgICAgPHA+4oCiIE1vZGU6IHtjb25maWcubW9kZSA9PT0gJ2NyZWF0ZScgPyAnQ3JlYXRlIG5ldyBjbHVzdGVyJyA6ICdKb2luIGV4aXN0aW5nIGNsdXN0ZXInfTwvcD5cbiAgICAgICAgICA8cD7igKIgUm9sZToge2NvbmZpZy5ub2RlUm9sZX08L3A+XG4gICAgICAgICAgPHA+4oCiIEhvc3RuYW1lOiB7c3lzdGVtSW5mbz8ubmV0d29yaz8uaG9zdG5hbWUgfHwgJ1Vua25vd24nfTwvcD5cbiAgICAgICAgICA8cD7igKIgSVAgQWRkcmVzczoge3N5c3RlbUluZm8/Lm5ldHdvcms/LnByaXZhdGVfaXBzPy5bMF0gfHwgJ1Vua25vd24nfTwvcD5cbiAgICAgICAgICB7Y29uZmlnLm1vZGUgPT09ICdjcmVhdGUnICYmIDxwPuKAoiBDbHVzdGVyOiB7Y29uZmlnLmNsdXN0ZXJOYW1lfTwvcD59XG4gICAgICAgICAge2NvbmZpZy5lbmNyeXB0aW9uICYmIDxwPuKAoiBTZWN1cml0eTogRW5jcnlwdGVkIGNvbW11bmljYXRpb24gZW5hYmxlZDwvcD59XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIHsvKiBBY3Rpb24gQnV0dG9ucyAqL31cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBqdXN0aWZ5LWJldHdlZW4gcHQtNiBib3JkZXItdCBib3JkZXItZ3JheS0yMDBcIj5cbiAgICAgICAgPGRpdj5cbiAgICAgICAgICB7b25CYWNrICYmIChcbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG9uQ2xpY2s9e29uQmFja30gY2xhc3NOYW1lPVwiYnRuLW91dGxpbmVcIj5cbiAgICAgICAgICAgICAgQmFja1xuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIFxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgICAgICAgZGlzYWJsZWQ9e1xuICAgICAgICAgICAgKGNvbmZpZy5tb2RlID09PSAnY3JlYXRlJyAmJiAoIWNvbmZpZy5jbHVzdGVyTmFtZSB8fCAhY29uZmlnLm5ldHdvcmtJZCB8fCAhY2x1c3RlcktleSkpIHx8XG4gICAgICAgICAgICAoY29uZmlnLm1vZGUgPT09ICdqb2luJyAmJiAoIWNvbmZpZy50YXJnZXROb2RlIHx8ICFjb25maWcuam9pbktleSkpXG4gICAgICAgICAgfVxuICAgICAgICAgIGNsYXNzTmFtZT1cImJ0bi1wcmltYXJ5XCJcbiAgICAgICAgPlxuICAgICAgICAgIHtpc0NvbXBsZXRlZCA/ICdDb250aW51ZScgOiAnTmV4dDogVGVzdGluZyAmIFZhbGlkYXRpb24nfVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZm9ybT5cbiAgKVxufSJdLCJuYW1lcyI6WyJ1c2VTdGF0ZSIsInVzZUVmZmVjdCIsIlNlcnZlclN0YWNrSWNvbiIsIlBsdXNJY29uIiwiTWFnbmlmeWluZ0dsYXNzSWNvbiIsIldpZmlJY29uIiwiQ29tcHV0ZXJEZXNrdG9wSWNvbiIsIkFycm93UGF0aEljb24iLCJDaGVja0NpcmNsZUljb24iLCJJbmZvcm1hdGlvbkNpcmNsZUljb24iLCJVc2VyR3JvdXBJY29uIiwiS2V5SWNvbiIsIkNsdXN0ZXJGb3JtYXRpb24iLCJzeXN0ZW1JbmZvIiwiY29uZmlnRGF0YSIsIm9uQ29tcGxldGUiLCJvbkJhY2siLCJpc0NvbXBsZXRlZCIsImNvbmZpZyIsInNldENvbmZpZyIsIm1vZGUiLCJuZXR3b3JrSWQiLCJjbHVzdGVyTmFtZSIsIm5vZGVSb2xlIiwiYXV0b0Rpc2NvdmVyeSIsImVuY3J5cHRpb24iLCJyZWR1bmRhbmN5IiwiZGlzY292ZXJlZE5vZGVzIiwic2V0RGlzY292ZXJlZE5vZGVzIiwic2Nhbm5pbmciLCJzZXRTY2FubmluZyIsImdlbmVyYXRpbmdLZXkiLCJzZXRHZW5lcmF0aW5nS2V5IiwiY2x1c3RlcktleSIsInNldENsdXN0ZXJLZXkiLCJjbHVzdGVyIiwicHJldiIsIm5ldHdvcmsiLCJob3N0bmFtZSIsInRpbWVzdGFtcCIsIkRhdGUiLCJub3ciLCJ0b1N0cmluZyIsInNsaWNlIiwic2NhbkZvck5vZGVzIiwiUHJvbWlzZSIsInJlc29sdmUiLCJzZXRUaW1lb3V0IiwibW9ja05vZGVzIiwiaWQiLCJpcCIsInBvcnQiLCJ2ZXJzaW9uIiwiY2FwYWJpbGl0aWVzIiwic3RhdHVzIiwibGFzdFNlZW4iLCJlcnJvciIsImNvbnNvbGUiLCJnZW5lcmF0ZUNsdXN0ZXJLZXkiLCJrZXkiLCJBcnJheSIsImZyb20iLCJjcnlwdG8iLCJnZXRSYW5kb21WYWx1ZXMiLCJVaW50OEFycmF5IiwibWFwIiwiYiIsInBhZFN0YXJ0Iiwiam9pbiIsIk1hdGgiLCJyYW5kb20iLCJzdWJzdHIiLCJnZXROb2RlUm9sZURlc2NyaXB0aW9uIiwicm9sZSIsImdldFN5c3RlbVJlY29tbWVuZGF0aW9uIiwibWVtb3J5R0IiLCJtZW1vcnlfbWIiLCJyb3VuZCIsImNwdUNvcmVzIiwiY3B1X2NvcmVzIiwiaGFzR1BVIiwiZ3B1cyIsImxlbmd0aCIsInJlYXNvbiIsImhhbmRsZVN1Ym1pdCIsImUiLCJwcmV2ZW50RGVmYXVsdCIsImNsdXN0ZXJEYXRhIiwidW5kZWZpbmVkIiwicHJpdmF0ZV9pcHMiLCJyZWNvbW1lbmRhdGlvbiIsImZvcm0iLCJvblN1Ym1pdCIsImNsYXNzTmFtZSIsImRpdiIsImgzIiwib25DbGljayIsImxhYmVsIiwiaW5wdXQiLCJ0eXBlIiwidmFsdWUiLCJvbkNoYW5nZSIsInRhcmdldCIsInBsYWNlaG9sZGVyIiwicmVxdWlyZWQiLCJwIiwicmVhZE9ubHkiLCJidXR0b24iLCJkaXNhYmxlZCIsIm5vZGUiLCJ0YXJnZXROb2RlIiwic3BhbiIsImNhcCIsImluZGV4Iiwiam9pbktleSIsImNoYXJBdCIsInRvVXBwZXJDYXNlIiwibmFtZSIsImNoZWNrZWQiLCJodG1sRm9yIiwic2VsZWN0IiwicGFyc2VJbnQiLCJvcHRpb24iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./app/setup/components/ClusterFormation.tsx\n");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "(ssr)/./app/setup/components/LicenseValidation.tsx":
|
|
/*!****************************************************!*\
|
|
!*** ./app/setup/components/LicenseValidation.tsx ***!
|
|
\****************************************************/
|
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
|
|
"use strict";
|
|
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ LicenseValidation)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react-jsx-dev-runtime.js\");\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _barrel_optimize_names_CheckCircleIcon_DocumentTextIcon_ExclamationTriangleIcon_KeyIcon_UserIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! __barrel_optimize__?names=CheckCircleIcon,DocumentTextIcon,ExclamationTriangleIcon,KeyIcon,UserIcon!=!@heroicons/react/24/outline */ \"(ssr)/./node_modules/@heroicons/react/24/outline/esm/KeyIcon.js\");\n/* harmony import */ var _barrel_optimize_names_CheckCircleIcon_DocumentTextIcon_ExclamationTriangleIcon_KeyIcon_UserIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! __barrel_optimize__?names=CheckCircleIcon,DocumentTextIcon,ExclamationTriangleIcon,KeyIcon,UserIcon!=!@heroicons/react/24/outline */ \"(ssr)/./node_modules/@heroicons/react/24/outline/esm/CheckCircleIcon.js\");\n/* harmony import */ var _barrel_optimize_names_CheckCircleIcon_DocumentTextIcon_ExclamationTriangleIcon_KeyIcon_UserIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! __barrel_optimize__?names=CheckCircleIcon,DocumentTextIcon,ExclamationTriangleIcon,KeyIcon,UserIcon!=!@heroicons/react/24/outline */ \"(ssr)/./node_modules/@heroicons/react/24/outline/esm/UserIcon.js\");\n/* harmony import */ var _barrel_optimize_names_CheckCircleIcon_DocumentTextIcon_ExclamationTriangleIcon_KeyIcon_UserIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! __barrel_optimize__?names=CheckCircleIcon,DocumentTextIcon,ExclamationTriangleIcon,KeyIcon,UserIcon!=!@heroicons/react/24/outline */ \"(ssr)/./node_modules/@heroicons/react/24/outline/esm/ExclamationTriangleIcon.js\");\n/* harmony import */ var _barrel_optimize_names_CheckCircleIcon_DocumentTextIcon_ExclamationTriangleIcon_KeyIcon_UserIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! __barrel_optimize__?names=CheckCircleIcon,DocumentTextIcon,ExclamationTriangleIcon,KeyIcon,UserIcon!=!@heroicons/react/24/outline */ \"(ssr)/./node_modules/@heroicons/react/24/outline/esm/DocumentTextIcon.js\");\n/* __next_internal_client_entry_do_not_use__ default auto */ \n\n\nfunction LicenseValidation({ systemInfo, configData, onComplete, onBack, isCompleted }) {\n const [licenseData, setLicenseData] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)({\n email: configData?.license?.email || \"\",\n licenseKey: configData?.license?.licenseKey || \"\",\n organizationName: configData?.license?.organizationName || \"\"\n });\n const [validating, setValidating] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n const [validationResult, setValidationResult] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);\n const [error, setError] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(\"\");\n // Email validation function\n const isValidEmail = (email)=>{\n const emailRegex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\n return emailRegex.test(email);\n };\n // Check if form is ready for validation\n const canValidate = licenseData.email && isValidEmail(licenseData.email) && licenseData.licenseKey;\n const validateLicense = async ()=>{\n if (!licenseData.email || !licenseData.licenseKey) {\n setError(\"Both email and license key are required\");\n return;\n }\n if (!isValidEmail(licenseData.email)) {\n setError(\"Please enter a valid email address\");\n return;\n }\n setValidating(true);\n setError(\"\");\n setValidationResult(null);\n try {\n const response = await fetch(\"/api/setup/license/validate\", {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\"\n },\n body: JSON.stringify({\n email: licenseData.email,\n licenseKey: licenseData.licenseKey,\n organizationName: licenseData.organizationName\n })\n });\n const result = await response.json();\n if (response.ok && result.valid) {\n setValidationResult({\n valid: true,\n message: result.message || \"License validated successfully\",\n details: result.details\n });\n } else {\n setValidationResult({\n valid: false,\n message: result.message || \"License validation failed\",\n details: result.details\n });\n }\n } catch (error) {\n console.error(\"License validation error:\", error);\n setValidationResult({\n valid: false,\n message: \"Failed to validate license. Please check your connection and try again.\"\n });\n } finally{\n setValidating(false);\n }\n };\n const handleSubmit = (e)=>{\n e.preventDefault();\n if (!licenseData.email || !licenseData.licenseKey) {\n setError(\"Both email and license key are required\");\n return;\n }\n if (!validationResult?.valid) {\n setError(\"Please validate your license before continuing\");\n return;\n }\n setError(\"\");\n onComplete({\n license: {\n ...licenseData,\n validatedAt: new Date().toISOString(),\n validationDetails: validationResult.details\n }\n });\n };\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"form\", {\n onSubmit: handleSubmit,\n className: \"space-y-8\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"card\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center mb-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_CheckCircleIcon_DocumentTextIcon_ExclamationTriangleIcon_KeyIcon_UserIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n className: \"h-6 w-6 text-bzzz-primary mr-2\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/LicenseValidation.tsx\",\n lineNumber: 142,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h3\", {\n className: \"text-lg font-medium text-gray-900\",\n children: \"License Information\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/LicenseValidation.tsx\",\n lineNumber: 143,\n columnNumber: 11\n }, this),\n validationResult?.valid && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_CheckCircleIcon_DocumentTextIcon_ExclamationTriangleIcon_KeyIcon_UserIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n className: \"h-5 w-5 text-green-500 ml-2\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/LicenseValidation.tsx\",\n lineNumber: 144,\n columnNumber: 39\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/LicenseValidation.tsx\",\n lineNumber: 141,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-y-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"label\", {\n className: \"block text-sm font-medium text-gray-700 mb-2\",\n children: \"Email Address\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/LicenseValidation.tsx\",\n lineNumber: 149,\n columnNumber: 13\n }, this),\n /*#__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)(_barrel_optimize_names_CheckCircleIcon_DocumentTextIcon_ExclamationTriangleIcon_KeyIcon_UserIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n className: \"h-5 w-5 text-gray-400 absolute left-3 top-1/2 transform -translate-y-1/2\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/LicenseValidation.tsx\",\n lineNumber: 153,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"email\",\n value: licenseData.email,\n onChange: (e)=>setLicenseData((prev)=>({\n ...prev,\n email: e.target.value\n })),\n placeholder: \"your-email@company.com\",\n className: `w-full pl-10 pr-4 py-3 border rounded-lg focus:ring-bzzz-primary focus:border-bzzz-primary ${licenseData.email && !isValidEmail(licenseData.email) ? \"border-red-300 bg-red-50\" : \"border-gray-300\"}`,\n required: true\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/LicenseValidation.tsx\",\n lineNumber: 154,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/LicenseValidation.tsx\",\n lineNumber: 152,\n columnNumber: 13\n }, this),\n licenseData.email && !isValidEmail(licenseData.email) ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-sm text-red-600 mt-1\",\n children: \"Please enter a valid email address\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/LicenseValidation.tsx\",\n lineNumber: 168,\n columnNumber: 15\n }, this) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-sm text-gray-500 mt-1\",\n children: \"The email address associated with your CHORUS:agents license\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/LicenseValidation.tsx\",\n lineNumber: 170,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/LicenseValidation.tsx\",\n lineNumber: 148,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"label\", {\n className: \"block text-sm font-medium text-gray-700 mb-2\",\n children: \"License Key\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/LicenseValidation.tsx\",\n lineNumber: 177,\n columnNumber: 13\n }, this),\n /*#__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)(_barrel_optimize_names_CheckCircleIcon_DocumentTextIcon_ExclamationTriangleIcon_KeyIcon_UserIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n className: \"h-5 w-5 text-gray-400 absolute left-3 top-1/2 transform -translate-y-1/2\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/LicenseValidation.tsx\",\n lineNumber: 181,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"text\",\n value: licenseData.licenseKey,\n onChange: (e)=>setLicenseData((prev)=>({\n ...prev,\n licenseKey: e.target.value\n })),\n placeholder: \"BZZZ-XXXX-XXXX-XXXX-XXXX\",\n className: \"w-full pl-10 pr-4 py-3 border border-gray-300 rounded-lg focus:ring-bzzz-primary focus:border-bzzz-primary font-mono\",\n required: true\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/LicenseValidation.tsx\",\n lineNumber: 182,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/LicenseValidation.tsx\",\n lineNumber: 180,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-sm text-gray-500 mt-1\",\n children: \"Your unique CHORUS:agents license key (found in your purchase confirmation email)\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/LicenseValidation.tsx\",\n lineNumber: 191,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/LicenseValidation.tsx\",\n lineNumber: 176,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"label\", {\n className: \"block text-sm font-medium text-gray-700 mb-2\",\n children: \"Organization Name (Optional)\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/LicenseValidation.tsx\",\n lineNumber: 197,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"text\",\n value: licenseData.organizationName,\n onChange: (e)=>setLicenseData((prev)=>({\n ...prev,\n organizationName: e.target.value\n })),\n placeholder: \"Your Company Name\",\n className: \"w-full px-4 py-3 border border-gray-300 rounded-lg focus:ring-bzzz-primary focus:border-bzzz-primary\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/LicenseValidation.tsx\",\n lineNumber: 200,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-sm text-gray-500 mt-1\",\n children: \"Optional: Organization name for license tracking\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/LicenseValidation.tsx\",\n lineNumber: 207,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/LicenseValidation.tsx\",\n lineNumber: 196,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n type: \"button\",\n onClick: validateLicense,\n disabled: validating || !canValidate,\n className: `w-full py-3 px-4 rounded-lg font-medium transition-colors ${validating || !canValidate ? \"bg-gray-100 text-gray-400 cursor-not-allowed\" : \"bg-bzzz-primary text-white hover:bg-bzzz-primary-dark\"}`,\n children: validating ? \"Validating License...\" : \"Validate License\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/LicenseValidation.tsx\",\n lineNumber: 212,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/LicenseValidation.tsx\",\n lineNumber: 147,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/LicenseValidation.tsx\",\n lineNumber: 140,\n columnNumber: 7\n }, this),\n validationResult && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `card ${validationResult.valid ? \"border-green-200 bg-green-50\" : \"border-red-200 bg-red-50\"}`,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-start\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-shrink-0\",\n children: validationResult.valid ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_CheckCircleIcon_DocumentTextIcon_ExclamationTriangleIcon_KeyIcon_UserIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n className: \"h-6 w-6 text-green-500\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/LicenseValidation.tsx\",\n lineNumber: 233,\n columnNumber: 17\n }, this) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_CheckCircleIcon_DocumentTextIcon_ExclamationTriangleIcon_KeyIcon_UserIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n className: \"h-6 w-6 text-red-500\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/LicenseValidation.tsx\",\n lineNumber: 235,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/LicenseValidation.tsx\",\n lineNumber: 231,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"ml-3\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h4\", {\n className: `text-sm font-medium ${validationResult.valid ? \"text-green-800\" : \"text-red-800\"}`,\n children: validationResult.valid ? \"License Valid\" : \"License Invalid\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/LicenseValidation.tsx\",\n lineNumber: 239,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: `text-sm mt-1 ${validationResult.valid ? \"text-green-700\" : \"text-red-700\"}`,\n children: validationResult.message\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/LicenseValidation.tsx\",\n lineNumber: 242,\n columnNumber: 15\n }, this),\n validationResult.valid && validationResult.details && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mt-3 text-sm text-green-700\",\n children: [\n /*#__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)(\"strong\", {\n children: \"License Type:\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/LicenseValidation.tsx\",\n lineNumber: 248,\n columnNumber: 22\n }, this),\n \" \",\n validationResult.details.licenseType || \"Standard\"\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/LicenseValidation.tsx\",\n lineNumber: 248,\n columnNumber: 19\n }, this),\n /*#__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)(\"strong\", {\n children: \"Max Nodes:\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/LicenseValidation.tsx\",\n lineNumber: 249,\n columnNumber: 22\n }, this),\n \" \",\n validationResult.details.maxNodes || \"Unlimited\"\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/LicenseValidation.tsx\",\n lineNumber: 249,\n columnNumber: 19\n }, this),\n /*#__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)(\"strong\", {\n children: \"Expires:\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/LicenseValidation.tsx\",\n lineNumber: 250,\n columnNumber: 22\n }, this),\n \" \",\n validationResult.details.expiresAt || \"Never\"\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/LicenseValidation.tsx\",\n lineNumber: 250,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/LicenseValidation.tsx\",\n lineNumber: 247,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/LicenseValidation.tsx\",\n lineNumber: 238,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/LicenseValidation.tsx\",\n lineNumber: 230,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/LicenseValidation.tsx\",\n lineNumber: 229,\n columnNumber: 9\n }, this),\n error && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center text-red-600 text-sm\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_CheckCircleIcon_DocumentTextIcon_ExclamationTriangleIcon_KeyIcon_UserIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n className: \"h-4 w-4 mr-1\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/LicenseValidation.tsx\",\n lineNumber: 260,\n columnNumber: 11\n }, this),\n error\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/LicenseValidation.tsx\",\n lineNumber: 259,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-blue-50 border border-blue-200 rounded-lg p-4\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-start\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_CheckCircleIcon_DocumentTextIcon_ExclamationTriangleIcon_KeyIcon_UserIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n className: \"h-5 w-5 text-blue-500 mt-0.5 mr-2\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/LicenseValidation.tsx\",\n lineNumber: 268,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h4\", {\n className: \"font-medium text-blue-800 mb-1\",\n children: \"Need a License?\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/LicenseValidation.tsx\",\n lineNumber: 270,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-blue-700\",\n children: \"If you don't have a CHORUS:agents license yet, you can:\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/LicenseValidation.tsx\",\n lineNumber: 271,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"ul\", {\n className: \"text-blue-700 mt-1 space-y-1 ml-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"li\", {\n children: [\n \"• Visit \",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"a\", {\n href: \"https://chorus.services/bzzz\",\n target: \"_blank\",\n className: \"underline hover:no-underline\",\n children: \"chorus.services/bzzz\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/LicenseValidation.tsx\",\n lineNumber: 275,\n columnNumber: 27\n }, this),\n \" to purchase a license\"\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/LicenseValidation.tsx\",\n lineNumber: 275,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"li\", {\n children: [\n \"• Contact our sales team at \",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"a\", {\n href: \"mailto:sales@chorus.services\",\n className: \"underline hover:no-underline\",\n children: \"sales@chorus.services\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/LicenseValidation.tsx\",\n lineNumber: 276,\n columnNumber: 47\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/LicenseValidation.tsx\",\n lineNumber: 276,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"li\", {\n children: \"• Request a trial license for evaluation purposes\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/LicenseValidation.tsx\",\n lineNumber: 277,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/LicenseValidation.tsx\",\n lineNumber: 274,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/LicenseValidation.tsx\",\n lineNumber: 269,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/LicenseValidation.tsx\",\n lineNumber: 267,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/LicenseValidation.tsx\",\n lineNumber: 266,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex justify-between pt-6 border-t border-gray-200\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: onBack && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n type: \"button\",\n onClick: onBack,\n className: \"btn-outline\",\n children: \"Back\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/LicenseValidation.tsx\",\n lineNumber: 286,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/LicenseValidation.tsx\",\n lineNumber: 284,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n type: \"submit\",\n disabled: !validationResult?.valid,\n className: `${validationResult?.valid ? \"btn-primary\" : \"btn-disabled\"}`,\n children: isCompleted ? \"Continue\" : \"Next: System Detection\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/LicenseValidation.tsx\",\n lineNumber: 291,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/LicenseValidation.tsx\",\n lineNumber: 283,\n columnNumber: 7\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/LicenseValidation.tsx\",\n lineNumber: 137,\n columnNumber: 5\n }, this);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9hcHAvc2V0dXAvY29tcG9uZW50cy9MaWNlbnNlVmFsaWRhdGlvbi50c3giLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUFFZ0M7QUFPSTtBQWlCckIsU0FBU00sa0JBQWtCLEVBQ3hDQyxVQUFVLEVBQ1ZDLFVBQVUsRUFDVkMsVUFBVSxFQUNWQyxNQUFNLEVBQ05DLFdBQVcsRUFDWTtJQUN2QixNQUFNLENBQUNDLGFBQWFDLGVBQWUsR0FBR2IsK0NBQVFBLENBQWM7UUFDMURjLE9BQU9OLFlBQVlPLFNBQVNELFNBQVM7UUFDckNFLFlBQVlSLFlBQVlPLFNBQVNDLGNBQWM7UUFDL0NDLGtCQUFrQlQsWUFBWU8sU0FBU0Usb0JBQW9CO0lBQzdEO0lBRUEsTUFBTSxDQUFDQyxZQUFZQyxjQUFjLEdBQUduQiwrQ0FBUUEsQ0FBQztJQUM3QyxNQUFNLENBQUNvQixrQkFBa0JDLG9CQUFvQixHQUFHckIsK0NBQVFBLENBSTlDO0lBQ1YsTUFBTSxDQUFDc0IsT0FBT0MsU0FBUyxHQUFHdkIsK0NBQVFBLENBQUM7SUFFbkMsNEJBQTRCO0lBQzVCLE1BQU13QixlQUFlLENBQUNWO1FBQ3BCLE1BQU1XLGFBQWE7UUFDbkIsT0FBT0EsV0FBV0MsSUFBSSxDQUFDWjtJQUN6QjtJQUVBLHdDQUF3QztJQUN4QyxNQUFNYSxjQUFjZixZQUFZRSxLQUFLLElBQ2xCVSxhQUFhWixZQUFZRSxLQUFLLEtBQzlCRixZQUFZSSxVQUFVO0lBRXpDLE1BQU1ZLGtCQUFrQjtRQUN0QixJQUFJLENBQUNoQixZQUFZRSxLQUFLLElBQUksQ0FBQ0YsWUFBWUksVUFBVSxFQUFFO1lBQ2pETyxTQUFTO1lBQ1Q7UUFDRjtRQUVBLElBQUksQ0FBQ0MsYUFBYVosWUFBWUUsS0FBSyxHQUFHO1lBQ3BDUyxTQUFTO1lBQ1Q7UUFDRjtRQUVBSixjQUFjO1FBQ2RJLFNBQVM7UUFDVEYsb0JBQW9CO1FBRXBCLElBQUk7WUFDRixNQUFNUSxXQUFXLE1BQU1DLE1BQU0sK0JBQStCO2dCQUMxREMs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Q0FDL0MsOERBQUNZO29DQUFFWixXQUFVOzhDQUFnQjs7Ozs7OzhDQUc3Qiw4REFBQ3FCO29DQUFHckIsV0FBVTs7c0RBQ1osOERBQUNzQjs7Z0RBQUc7OERBQVEsOERBQUNDO29EQUFFQyxNQUFLO29EQUErQmYsUUFBTztvREFBU1QsV0FBVTs4REFBK0I7Ozs7OztnREFBd0I7Ozs7Ozs7c0RBQ3BJLDhEQUFDc0I7O2dEQUFHOzhEQUE0Qiw4REFBQ0M7b0RBQUVDLE1BQUs7b0RBQStCeEIsV0FBVTs4REFBK0I7Ozs7Ozs7Ozs7OztzREFDaEgsOERBQUNzQjtzREFBRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7MEJBTVosOERBQUNyQjtnQkFBSUQsV0FBVTs7a0NBQ2IsOERBQUNDO2tDQUNFM0Msd0JBQ0MsOERBQUN1RDs0QkFBT1IsTUFBSzs0QkFBU1MsU0FBU3hEOzRCQUFRMEMsV0FBVTtzQ0FBYzs7Ozs7Ozs7Ozs7a0NBS25FLDhEQUFDYTt3QkFDQ1IsTUFBSzt3QkFDTFUsVUFBVSxDQUFDL0Msa0JBQWtCbUI7d0JBQzdCYSxXQUFXLENBQUMsRUFBRWhDLGtCQUFrQm1CLFFBQVEsZ0JBQWdCLGVBQWUsQ0FBQztrQ0FFdkU1QixjQUFjLGFBQWE7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUt0QyIsInNvdXJjZXMiOlsid2VicGFjazovL2J6enotY29uZmlnLXVpLy4vYXBwL3NldHVwL2NvbXBvbmVudHMvTGljZW5zZVZhbGlkYXRpb24udHN4P2Y1N2QiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBjbGllbnQnXG5cbmltcG9ydCB7IHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBcbiAgS2V5SWNvbixcbiAgQ2hlY2tDaXJjbGVJY29uLFxuICBFeGNsYW1hdGlvblRyaWFuZ2xlSWNvbixcbiAgVXNlckljb24sXG4gIERvY3VtZW50VGV4dEljb25cbn0gZnJvbSAnQGhlcm9pY29ucy9yZWFjdC8yNC9vdXRsaW5lJ1xuXG5pbnRlcmZhY2UgTGljZW5zZVZhbGlkYXRpb25Qcm9wcyB7XG4gIHN5c3RlbUluZm86IGFueVxuICBjb25maWdEYXRhOiBhbnlcbiAgb25Db21wbGV0ZTogKGRhdGE6IGFueSkgPT4gdm9pZFxuICBvbkJhY2s/OiAoKSA9PiB2b2lkXG4gIGlzQ29tcGxldGVkOiBib29sZWFuXG59XG5cbmludGVyZmFjZSBMaWNlbnNlRGF0YSB7XG4gIGVtYWlsOiBzdHJpbmdcbiAgbGljZW5zZUtleTogc3RyaW5nXG4gIG9yZ2FuaXphdGlvbk5hbWU/OiBzdHJpbmdcbiAgYWNjZXB0ZWRBdD86IHN0cmluZ1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBMaWNlbnNlVmFsaWRhdGlvbih7IFxuICBzeXN0ZW1JbmZvLCBcbiAgY29uZmlnRGF0YSwgXG4gIG9uQ29tcGxldGUsIFxuICBvbkJhY2ssIFxuICBpc0NvbXBsZXRlZCBcbn06IExpY2Vuc2VWYWxpZGF0aW9uUHJvcHMpIHtcbiAgY29uc3QgW2xpY2Vuc2VEYXRhLCBzZXRMaWNlbnNlRGF0YV0gPSB1c2VTdGF0ZTxMaWNlbnNlRGF0YT4oe1xuICAgIGVtYWlsOiBjb25maWdEYXRhPy5saWNlbnNlPy5lbWFpbCB8fCAnJyxcbiAgICBsaWNlbnNlS2V5OiBjb25maWdEYXRhPy5saWNlbnNlPy5saWNlbnNlS2V5IHx8ICcnLFxuICAgIG9yZ2FuaXphdGlvbk5hbWU6IGNvbmZpZ0RhdGE/LmxpY2Vuc2U/Lm9yZ2FuaXphdGlvbk5hbWUgfHwgJydcbiAgfSlcbiAgXG4gIGNvbnN0IFt2YWxpZGF0aW5nLCBzZXRWYWxpZGF0aW5nXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbdmFsaWRhdGlvblJlc3VsdCwgc2V0VmFsaWRhdGlvblJlc3VsdF0gPSB1c2VTdGF0ZTx7XG4gICAgdmFsaWQ6IGJvb2xlYW5cbiAgICBtZXNzYWdlOiBzdHJpbmdcbiAgICBkZXRhaWxzPzogYW55XG4gIH0gfCBudWxsPihudWxsKVxuICBjb25zdCBbZXJyb3IsIHNldEVycm9yXSA9IHVzZVN0YXRlKCcnKVxuICBcbiAgLy8gRW1haWwgdmFsaWRhdGlvbiBmdW5jdGlvblxuICBjb25zdCBpc1ZhbGlkRW1haWwgPSAoZW1haWw6IHN0cmluZyk6IGJvb2xlYW4gPT4ge1xuICAgIGNvbnN0IGVtYWlsUmVnZXggPSAvXlteXFxzQF0rQFteXFxzQF0rXFwuW15cXHNAXSskL1xuICAgIHJldHVybiBlbWFpbFJlZ2V4LnRlc3QoZW1haWwpXG4gIH1cbiAgXG4gIC8vIENoZWNrIGlmIGZvcm0gaXMgcmVhZHkgZm9yIHZhbGlkYXRpb25cbiAgY29uc3QgY2FuVmFsaWRhdGUgPSBsaWNlbnNlRGF0YS5lbWFpbCAmJiBcbiAgICAgICAgICAgICAgICAgICAgIGlzVmFsaWRFbWFpbChsaWNlbnNlRGF0YS5lbWFpbCkgJiYgXG4gICAgICAgICAgICAgICAgICAgICBsaWNlbnNlRGF0YS5saWNlbnNlS2V5XG5cbiAgY29uc3QgdmFsaWRhdGVMaWNlbnNlID0gYXN5bmMgKCkgPT4ge1xuICAgIGlmICghbGljZW5zZURhdGEuZW1haWwgfHwgIWxpY2Vuc2VEYXRhLmxpY2Vuc2VLZXkpIHtcbiAgICAgIHNldEVycm9yKCdCb3RoIGVtYWlsIGFuZCBsaWNlbnNlIGtleSBhcmUgcmVxdWlyZWQnKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIFxuICAgIGlmICghaXNWYWxpZEVtYWlsKGxpY2Vuc2VEYXRhLmVtYWlsKSkge1xuICAgICAgc2V0RXJyb3IoJ1BsZWFzZSBlbnRlciBhIHZhbGlkIGVtYWlsIGFkZHJlc3MnKVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgc2V0VmFsaWRhdGluZyh0cnVlKVxuICAgIHNldEVycm9yKCcnKVxuICAgIHNldFZhbGlkYXRpb25SZXN1bHQobnVsbClcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKCcvYXBpL3NldHVwL2xpY2Vuc2UvdmFsaWRhdGUnLCB7XG4gICAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgICAgfSxcbiAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgIGVtYWlsOiBsaWNlbnNlRGF0YS5lbWFpbCxcbiAgICAgICAgICBsaWNlbnNlS2V5OiBsaWNlbnNlRGF0YS5saWNlbnNlS2V5LFxuICAgICAgICAgIG9yZ2FuaXphdGlvbk5hbWU6IGxpY2Vuc2VEYXRhLm9yZ2FuaXphdGlvbk5hbWVcbiAgICAgICAgfSksXG4gICAgICB9KVxuXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCByZXNwb25zZS5qc29uKClcblxuICAgICAgaWYgKHJlc3BvbnNlLm9rICYmIHJlc3VsdC52YWxpZCkge1xuICAgICAgICBzZXRWYWxpZGF0aW9uUmVzdWx0KHtcbiAgICAgICAgICB2YWxpZDogdHJ1ZSxcbiAgICAgICAgICBtZXNzYWdlOiByZXN1bHQubWVzc2FnZSB8fCAnTGljZW5zZSB2YWxpZGF0ZWQgc3VjY2Vzc2Z1bGx5JyxcbiAgICAgICAgICBkZXRhaWxzOiByZXN1bHQuZGV0YWlsc1xuICAgICAgICB9KVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2V0VmFsaWRhdGlvblJlc3VsdCh7XG4gICAgICAgICAgdmFsaWQ6IGZhbHNlLFxuICAgICAgICAgIG1lc3NhZ2U6IHJlc3VsdC5tZXNzYWdlIHx8ICdMaWNlbnNlIHZhbGlkYXRpb24gZmFpbGVkJyxcbiAgICAgICAgICBkZXRhaWxzOiByZXN1bHQuZGV0YWlsc1xuICAgICAgICB9KVxuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdMaWNlbnNlIHZhbGlkYXRpb24gZXJyb3I6JywgZXJyb3IpXG4gICAgICBzZXRWYWxpZGF0aW9uUmVzdWx0KHtcbiAgICAgICAgdmFsaWQ6IGZhbHNlLFxuICAgICAgICBtZXNzYWdlOiAnRmFpbGVkIHRvIHZhbGlkYXRlIGxpY2Vuc2UuIFBsZWFzZSBjaGVjayB5b3VyIGNvbm5lY3Rpb24gYW5kIHRyeSBhZ2Fpbi4nXG4gICAgICB9KVxuICAgIH0gZmluYWxseSB7XG4gICAgICBzZXRWYWxpZGF0aW5nKGZhbHNlKVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGhhbmRsZVN1Ym1pdCA9IChlOiBSZWFjdC5Gb3JtRXZlbnQpID0+IHtcbiAgICBlLnByZXZlbnREZWZhdWx0KClcbiAgICBcbiAgICBpZiAoIWxpY2Vuc2VEYXRhLmVtYWlsIHx8ICFsaWNlbnNlRGF0YS5saWNlbnNlS2V5KSB7XG4gICAgICBzZXRFcnJvcignQm90aCBlbWFpbCBhbmQgbGljZW5zZSBrZXkgYXJlIHJlcXVpcmVkJylcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlmICghdmFsaWRhdGlvblJlc3VsdD8udmFsaWQpIHtcbiAgICAgIHNldEVycm9yKCdQbGVhc2UgdmFsaWRhdGUgeW91ciBsaWNlbnNlIGJlZm9yZSBjb250aW51aW5nJylcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHNldEVycm9yKCcnKVxuICAgIG9uQ29tcGxldGUoeyBcbiAgICAgIGxpY2Vuc2U6IHsgXG4gICAgICAgIC4uLmxpY2Vuc2VEYXRhLFxuICAgICAgICB2YWxpZGF0ZWRBdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgICAgICB2YWxpZGF0aW9uRGV0YWlsczogdmFsaWRhdGlvblJlc3VsdC5kZXRhaWxzXG4gICAgICB9IFxuICAgIH0pXG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxmb3JtIG9uU3VibWl0PXtoYW5kbGVTdWJtaXR9IGNsYXNzTmFtZT1cInNwYWNlLXktOFwiPlxuXG4gICAgICB7LyogTGljZW5zZSBJbmZvcm1hdGlvbiAqL31cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY2FyZFwiPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIG1iLTRcIj5cbiAgICAgICAgICA8S2V5SWNvbiBjbGFzc05hbWU9XCJoLTYgdy02IHRleHQtYnp6ei1wcmltYXJ5IG1yLTJcIiAvPlxuICAgICAgICAgIDxoMyBjbGFzc05hbWU9XCJ0ZXh0LWxnIGZvbnQtbWVkaXVtIHRleHQtZ3JheS05MDBcIj5MaWNlbnNlIEluZm9ybWF0aW9uPC9oMz5cbiAgICAgICAgICB7dmFsaWRhdGlvblJlc3VsdD8udmFsaWQgJiYgPENoZWNrQ2lyY2xlSWNvbiBjbGFzc05hbWU9XCJoLTUgdy01IHRleHQtZ3JlZW4tNTAwIG1sLTJcIiAvPn1cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJzcGFjZS15LTRcIj5cbiAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzTmFtZT1cImJsb2NrIHRleHQtc20gZm9udC1tZWRpdW0gdGV4dC1ncmF5LTcwMCBtYi0yXCI+XG4gICAgICAgICAgICAgIEVtYWlsIEFkZHJlc3NcbiAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInJlbGF0aXZlXCI+XG4gICAgICAgICAgICAgIDxVc2VySWNvbiBjbGFzc05hbWU9XCJoLTUgdy01IHRleHQtZ3JheS00MDAgYWJzb2x1dGUgbGVmdC0zIHRvcC0xLzIgdHJhbnNmb3JtIC10cmFuc2xhdGUteS0xLzJcIiAvPlxuICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICB0eXBlPVwiZW1haWxcIlxuICAgICAgICAgICAgICAgIHZhbHVlPXtsaWNlbnNlRGF0YS5lbWFpbH1cbiAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IHNldExpY2Vuc2VEYXRhKHByZXYgPT4gKHsgLi4ucHJldiwgZW1haWw6IGUudGFyZ2V0LnZhbHVlIH0pKX1cbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cInlvdXItZW1haWxAY29tcGFueS5jb21cIlxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17YHctZnVsbCBwbC0xMCBwci00IHB5LTMgYm9yZGVyIHJvdW5kZWQtbGcgZm9jdXM6cmluZy1ienp6LXByaW1hcnkgZm9jdXM6Ym9yZGVyLWJ6enotcHJpbWFyeSAke1xuICAgICAgICAgICAgICAgICAgbGljZW5zZURhdGEuZW1haWwgJiYgIWlzVmFsaWRFbWFpbChsaWNlbnNlRGF0YS5lbWFpbCkgXG4gICAgICAgICAgICAgICAgICAgID8gJ2JvcmRlci1yZWQtMzAwIGJnLXJlZC01MCcgXG4gICAgICAgICAgICAgICAgICAgIDogJ2JvcmRlci1ncmF5LTMwMCdcbiAgICAgICAgICAgICAgICB9YH1cbiAgICAgICAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB7bGljZW5zZURhdGEuZW1haWwgJiYgIWlzVmFsaWRFbWFpbChsaWNlbnNlRGF0YS5lbWFpbCkgPyAoXG4gICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQtc20gdGV4dC1yZWQtNjAwIG10LTFcIj5QbGVhc2UgZW50ZXIgYSB2YWxpZCBlbWFpbCBhZGRyZXNzPC9wPlxuICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC1zbSB0ZXh0LWdyYXktNTAwIG10LTFcIj5cbiAgICAgICAgICAgICAgICBUaGUgZW1haWwgYWRkcmVzcyBhc3NvY2lhdGVkIHdpdGggeW91ciBDSE9SVVM6YWdlbnRzIGxpY2Vuc2VcbiAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICA8bGFiZWwgY2xhc3NOYW1lPVwiYmxvY2sgdGV4dC1zbSBmb250LW1lZGl1bSB0ZXh0LWdyYXktNzAwIG1iLTJcIj5cbiAgICAgICAgICAgICAgTGljZW5zZSBLZXlcbiAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInJlbGF0aXZlXCI+XG4gICAgICAgICAgICAgIDxLZXlJY29uIGNsYXNzTmFtZT1cImgtNSB3LTUgdGV4dC1ncmF5LTQwMCBhYnNvbHV0ZSBsZWZ0LTMgdG9wLTEvMiB0cmFuc2Zvcm0gLXRyYW5zbGF0ZS15LTEvMlwiIC8+XG4gICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICB2YWx1ZT17bGljZW5zZURhdGEubGljZW5zZUtleX1cbiAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IHNldExpY2Vuc2VEYXRhKHByZXYgPT4gKHsgLi4ucHJldiwgbGljZW5zZUtleTogZS50YXJnZXQudmFsdWUgfSkpfVxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiQlpaWi1YWFhYLVhYWFgtWFhYWC1YWFhYXCJcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ3LWZ1bGwgcGwtMTAgcHItNCBweS0zIGJvcmRlciBib3JkZXItZ3JheS0zMDAgcm91bmRlZC1sZyBmb2N1czpyaW5nLWJ6enotcHJpbWFyeSBmb2N1czpib3JkZXItYnp6ei1wcmltYXJ5IGZvbnQtbW9ub1wiXG4gICAgICAgICAgICAgICAgcmVxdWlyZWRcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC1zbSB0ZXh0LWdyYXktNTAwIG10LTFcIj5cbiAgICAgICAgICAgICAgWW91ciB1bmlxdWUgQ0hPUlVTOmFnZW50cyBsaWNlbnNlIGtleSAoZm91bmQgaW4geW91ciBwdXJjaGFzZSBjb25maXJtYXRpb24gZW1haWwpXG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzTmFtZT1cImJsb2NrIHRleHQtc20gZm9udC1tZWRpdW0gdGV4dC1ncmF5LTcwMCBtYi0yXCI+XG4gICAgICAgICAgICAgIE9yZ2FuaXphdGlvbiBOYW1lIChPcHRpb25hbClcbiAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICB2YWx1ZT17bGljZW5zZURhdGEub3JnYW5pemF0aW9uTmFtZX1cbiAgICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiBzZXRMaWNlbnNlRGF0YShwcmV2ID0+ICh7IC4uLnByZXYsIG9yZ2FuaXphdGlvbk5hbWU6IGUudGFyZ2V0LnZhbHVlIH0pKX1cbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJZb3VyIENvbXBhbnkgTmFtZVwiXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT1cInctZnVsbCBweC00IHB5LTMgYm9yZGVyIGJvcmRlci1ncmF5LTMwMCByb3VuZGVkLWxnIGZvY3VzOnJpbmctYnp6ei1wcmltYXJ5IGZvY3VzOmJvcmRlci1ienp6LXByaW1hcnlcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQtc20gdGV4dC1ncmF5LTUwMCBtdC0xXCI+XG4gICAgICAgICAgICAgIE9wdGlvbmFsOiBPcmdhbml6YXRpb24gbmFtZSBmb3IgbGljZW5zZSB0cmFja2luZ1xuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBvbkNsaWNrPXt2YWxpZGF0ZUxpY2Vuc2V9XG4gICAgICAgICAgICBkaXNhYmxlZD17dmFsaWRhdGluZyB8fCAhY2FuVmFsaWRhdGV9XG4gICAgICAgICAgICBjbGFzc05hbWU9e2B3LWZ1bGwgcHktMyBweC00IHJvdW5kZWQtbGcgZm9udC1tZWRpdW0gdHJhbnNpdGlvbi1jb2xvcnMgJHtcbiAgICAgICAgICAgICAgdmFsaWRhdGluZyB8fCAhY2FuVmFsaWRhdGVcbiAgICAgICAgICAgICAgICA/ICdiZy1ncmF5LTEwMCB0ZXh0LWdyYXktNDAwIGN1cnNvci1ub3QtYWxsb3dlZCdcbiAgICAgICAgICAgICAgICA6ICdiZy1ienp6LXByaW1hcnkgdGV4dC13aGl0ZSBob3ZlcjpiZy1ienp6LXByaW1hcnktZGFyaydcbiAgICAgICAgICAgIH1gfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt2YWxpZGF0aW5nID8gJ1ZhbGlkYXRpbmcgTGljZW5zZS4uLicgOiAnVmFsaWRhdGUgTGljZW5zZSd9XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIHsvKiBWYWxpZGF0aW9uIFJlc3VsdCAqL31cbiAgICAgIHt2YWxpZGF0aW9uUmVzdWx0ICYmIChcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9e2BjYXJkICR7dmFsaWRhdGlvblJlc3VsdC52YWxpZCA/ICdib3JkZXItZ3JlZW4tMjAwIGJnLWdyZWVuLTUwJyA6ICdib3JkZXItcmVkLTIwMCBiZy1yZWQtNTAnfWB9PlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1zdGFydFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4LXNocmluay0wXCI+XG4gICAgICAgICAgICAgIHt2YWxpZGF0aW9uUmVzdWx0LnZhbGlkID8gKFxuICAgICAgICAgICAgICAgIDxDaGVja0NpcmNsZUljb24gY2xhc3NOYW1lPVwiaC02IHctNiB0ZXh0LWdyZWVuLTUwMFwiIC8+XG4gICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgPEV4Y2xhbWF0aW9uVHJpYW5nbGVJY29uIGNsYXNzTmFtZT1cImgtNiB3LTYgdGV4dC1yZWQtNTAwXCIgLz5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtbC0zXCI+XG4gICAgICAgICAgICAgIDxoNCBjbGFzc05hbWU9e2B0ZXh0LXNtIGZvbnQtbWVkaXVtICR7dmFsaWRhdGlvblJlc3VsdC52YWxpZCA/ICd0ZXh0LWdyZWVuLTgwMCcgOiAndGV4dC1yZWQtODAwJ31gfT5cbiAgICAgICAgICAgICAgICB7dmFsaWRhdGlvblJlc3VsdC52YWxpZCA/ICdMaWNlbnNlIFZhbGlkJyA6ICdMaWNlbnNlIEludmFsaWQnfVxuICAgICAgICAgICAgICA8L2g0PlxuICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9e2B0ZXh0LXNtIG10LTEgJHt2YWxpZGF0aW9uUmVzdWx0LnZhbGlkID8gJ3RleHQtZ3JlZW4tNzAwJyA6ICd0ZXh0LXJlZC03MDAnfWB9PlxuICAgICAgICAgICAgICAgIHt2YWxpZGF0aW9uUmVzdWx0Lm1lc3NhZ2V9XG4gICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgIHt2YWxpZGF0aW9uUmVzdWx0LnZhbGlkICYmIHZhbGlkYXRpb25SZXN1bHQuZGV0YWlscyAmJiAoXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtdC0zIHRleHQtc20gdGV4dC1ncmVlbi03MDBcIj5cbiAgICAgICAgICAgICAgICAgIDxwPjxzdHJvbmc+TGljZW5zZSBUeXBlOjwvc3Ryb25nPiB7dmFsaWRhdGlvblJlc3VsdC5kZXRhaWxzLmxpY2Vuc2VUeXBlIHx8ICdTdGFuZGFyZCd9PC9wPlxuICAgICAgICAgICAgICAgICAgPHA+PHN0cm9uZz5NYXggTm9kZXM6PC9zdHJvbmc+IHt2YWxpZGF0aW9uUmVzdWx0LmRldGFpbHMubWF4Tm9kZXMgfHwgJ1VubGltaXRlZCd9PC9wPlxuICAgICAgICAgICAgICAgICAgPHA+PHN0cm9uZz5FeHBpcmVzOjwvc3Ryb25nPiB7dmFsaWRhdGlvblJlc3VsdC5kZXRhaWxzLmV4cGlyZXNBdCB8fCAnTmV2ZXInfTwvcD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICl9XG5cbiAgICAgIHtlcnJvciAmJiAoXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIgdGV4dC1yZWQtNjAwIHRleHQtc21cIj5cbiAgICAgICAgICA8RXhjbGFtYXRpb25UcmlhbmdsZUljb24gY2xhc3NOYW1lPVwiaC00IHctNCBtci0xXCIgLz5cbiAgICAgICAgICB7ZXJyb3J9XG4gICAgICAgIDwvZGl2PlxuICAgICAgKX1cblxuICAgICAgey8qIExpY2Vuc2UgSW5mb3JtYXRpb24gKi99XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImJnLWJsdWUtNTAgYm9yZGVyIGJvcmRlci1ibHVlLTIwMCByb3VuZGVkLWxnIHAtNFwiPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtc3RhcnRcIj5cbiAgICAgICAgICA8RG9jdW1lbnRUZXh0SWNvbiBjbGFzc05hbWU9XCJoLTUgdy01IHRleHQtYmx1ZS01MDAgbXQtMC41IG1yLTJcIiAvPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1zbVwiPlxuICAgICAgICAgICAgPGg0IGNsYXNzTmFtZT1cImZvbnQtbWVkaXVtIHRleHQtYmx1ZS04MDAgbWItMVwiPk5lZWQgYSBMaWNlbnNlPzwvaDQ+XG4gICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJ0ZXh0LWJsdWUtNzAwXCI+XG4gICAgICAgICAgICAgIElmIHlvdSBkb24ndCBoYXZlIGEgQ0hPUlVTOmFnZW50cyBsaWNlbnNlIHlldCwgeW91IGNhbjpcbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDx1bCBjbGFzc05hbWU9XCJ0ZXh0LWJsdWUtNzAwIG10LTEgc3BhY2UteS0xIG1sLTRcIj5cbiAgICAgICAgICAgICAgPGxpPuKAoiBWaXNpdCA8YSBocmVmPVwiaHR0cHM6Ly9jaG9ydXMuc2VydmljZXMvYnp6elwiIHRhcmdldD1cIl9ibGFua1wiIGNsYXNzTmFtZT1cInVuZGVybGluZSBob3Zlcjpuby11bmRlcmxpbmVcIj5jaG9ydXMuc2VydmljZXMvYnp6ejwvYT4gdG8gcHVyY2hhc2UgYSBsaWNlbnNlPC9saT5cbiAgICAgICAgICAgICAgPGxpPuKAoiBDb250YWN0IG91ciBzYWxlcyB0ZWFtIGF0IDxhIGhyZWY9XCJtYWlsdG86c2FsZXNAY2hvcnVzLnNlcnZpY2VzXCIgY2xhc3NOYW1lPVwidW5kZXJsaW5lIGhvdmVyOm5vLXVuZGVybGluZVwiPnNhbGVzQGNob3J1cy5zZXJ2aWNlczwvYT48L2xpPlxuICAgICAgICAgICAgICA8bGk+4oCiIFJlcXVlc3QgYSB0cmlhbCBsaWNlbnNlIGZvciBldmFsdWF0aW9uIHB1cnBvc2VzPC9saT5cbiAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBqdXN0aWZ5LWJldHdlZW4gcHQtNiBib3JkZXItdCBib3JkZXItZ3JheS0yMDBcIj5cbiAgICAgICAgPGRpdj5cbiAgICAgICAgICB7b25CYWNrICYmIChcbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG9uQ2xpY2s9e29uQmFja30gY2xhc3NOYW1lPVwiYnRuLW91dGxpbmVcIj5cbiAgICAgICAgICAgICAgQmFja1xuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxidXR0b24gXG4gICAgICAgICAgdHlwZT1cInN1Ym1pdFwiIFxuICAgICAgICAgIGRpc2FibGVkPXshdmFsaWRhdGlvblJlc3VsdD8udmFsaWR9XG4gICAgICAgICAgY2xhc3NOYW1lPXtgJHt2YWxpZGF0aW9uUmVzdWx0Py52YWxpZCA/ICdidG4tcHJpbWFyeScgOiAnYnRuLWRpc2FibGVkJ31gfVxuICAgICAgICA+XG4gICAgICAgICAge2lzQ29tcGxldGVkID8gJ0NvbnRpbnVlJyA6ICdOZXh0OiBTeXN0ZW0gRGV0ZWN0aW9uJ31cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Zvcm0+XG4gIClcbn0iXSwibmFtZXMiOlsidXNlU3RhdGUiLCJLZXlJY29uIiwiQ2hlY2tDaXJjbGVJY29uIiwiRXhjbGFtYXRpb25UcmlhbmdsZUljb24iLCJVc2VySWNvbiIsIkRvY3VtZW50VGV4dEljb24iLCJMaWNlbnNlVmFsaWRhdGlvbiIsInN5c3RlbUluZm8iLCJjb25maWdEYXRhIiwib25Db21wbGV0ZSIsIm9uQmFjayIsImlzQ29tcGxldGVkIiwibGljZW5zZURhdGEiLCJzZXRMaWNlbnNlRGF0YSIsImVtYWlsIiwibGljZW5zZSIsImxpY2Vuc2VLZXkiLCJvcmdhbml6YXRpb25OYW1lIiwidmFsaWRhdGluZyIsInNldFZhbGlkYXRpbmciLCJ2YWxpZGF0aW9uUmVzdWx0Iiwic2V0VmFsaWRhdGlvblJlc3VsdCIsImVycm9yIiwic2V0RXJyb3IiLCJpc1ZhbGlkRW1haWwiLCJlbWFpbFJlZ2V4IiwidGVzdCIsImNhblZhbGlkYXRlIiwidmFsaWRhdGVMaWNlbnNlIiwicmVzcG9uc2UiLCJmZXRjaCIsIm1ldGhvZCIsImhlYWRlcnMiLCJib2R5IiwiSlNPTiIsInN0cmluZ2lmeSIsInJlc3VsdCIsImpzb24iLCJvayIsInZhbGlkIiwibWVzc2FnZSIsImRldGFpbHMiLCJjb25zb2xlIiwiaGFuZGxlU3VibWl0IiwiZSIsInByZXZlbnREZWZhdWx0IiwidmFsaWRhdGVkQXQiLCJEYXRlIiwidG9JU09TdHJpbmciLCJ2YWxpZGF0aW9uRGV0YWlscyIsImZvcm0iLCJvblN1Ym1pdCIsImNsYXNzTmFtZSIsImRpdiIsImgzIiwibGFiZWwiLCJpbnB1dCIsInR5cGUiLCJ2YWx1ZSIsIm9uQ2hhbmdlIiwicHJldiIsInRhcmdldCIsInBsYWNlaG9sZGVyIiwicmVxdWlyZWQiLCJwIiwiYnV0dG9uIiwib25DbGljayIsImRpc2FibGVkIiwiaDQiLCJzdHJvbmciLCJsaWNlbnNlVHlwZSIsIm1heE5vZGVzIiwiZXhwaXJlc0F0IiwidWwiLCJsaSIsImEiLCJocmVmIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./app/setup/components/LicenseValidation.tsx\n");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "(ssr)/./app/setup/components/NetworkConfiguration.tsx":
|
|
/*!*******************************************************!*\
|
|
!*** ./app/setup/components/NetworkConfiguration.tsx ***!
|
|
\*******************************************************/
|
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
|
|
"use strict";
|
|
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ NetworkConfiguration)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react-jsx-dev-runtime.js\");\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _barrel_optimize_names_ExclamationTriangleIcon_GlobeAltIcon_InformationCircleIcon_ServerIcon_ShieldCheckIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! __barrel_optimize__?names=ExclamationTriangleIcon,GlobeAltIcon,InformationCircleIcon,ServerIcon,ShieldCheckIcon!=!@heroicons/react/24/outline */ \"(ssr)/./node_modules/@heroicons/react/24/outline/esm/GlobeAltIcon.js\");\n/* harmony import */ var _barrel_optimize_names_ExclamationTriangleIcon_GlobeAltIcon_InformationCircleIcon_ServerIcon_ShieldCheckIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! __barrel_optimize__?names=ExclamationTriangleIcon,GlobeAltIcon,InformationCircleIcon,ServerIcon,ShieldCheckIcon!=!@heroicons/react/24/outline */ \"(ssr)/./node_modules/@heroicons/react/24/outline/esm/ServerIcon.js\");\n/* harmony import */ var _barrel_optimize_names_ExclamationTriangleIcon_GlobeAltIcon_InformationCircleIcon_ServerIcon_ShieldCheckIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! __barrel_optimize__?names=ExclamationTriangleIcon,GlobeAltIcon,InformationCircleIcon,ServerIcon,ShieldCheckIcon!=!@heroicons/react/24/outline */ \"(ssr)/./node_modules/@heroicons/react/24/outline/esm/ExclamationTriangleIcon.js\");\n/* harmony import */ var _barrel_optimize_names_ExclamationTriangleIcon_GlobeAltIcon_InformationCircleIcon_ServerIcon_ShieldCheckIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! __barrel_optimize__?names=ExclamationTriangleIcon,GlobeAltIcon,InformationCircleIcon,ServerIcon,ShieldCheckIcon!=!@heroicons/react/24/outline */ \"(ssr)/./node_modules/@heroicons/react/24/outline/esm/ShieldCheckIcon.js\");\n/* harmony import */ var _barrel_optimize_names_ExclamationTriangleIcon_GlobeAltIcon_InformationCircleIcon_ServerIcon_ShieldCheckIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! __barrel_optimize__?names=ExclamationTriangleIcon,GlobeAltIcon,InformationCircleIcon,ServerIcon,ShieldCheckIcon!=!@heroicons/react/24/outline */ \"(ssr)/./node_modules/@heroicons/react/24/outline/esm/InformationCircleIcon.js\");\n/* __next_internal_client_entry_do_not_use__ default auto */ \n\n\nfunction NetworkConfiguration({ systemInfo, configData, onComplete, onBack, isCompleted }) {\n const [config, setConfig] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)({\n primaryInterface: \"\",\n primaryIP: \"\",\n bzzzPort: 8080,\n mcpPort: 3000,\n webUIPort: 8080,\n p2pPort: 7000,\n autoFirewall: true,\n allowedIPs: [\n \"192.168.0.0/16\",\n \"10.0.0.0/8\",\n \"172.16.0.0/12\"\n ],\n dnsServers: [\n \"8.8.8.8\",\n \"8.8.4.4\"\n ]\n });\n const [errors, setErrors] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)([]);\n const [portConflicts, setPortConflicts] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)([]);\n // Initialize with system info and existing config\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{\n if (systemInfo?.network) {\n setConfig((prev)=>({\n ...prev,\n primaryInterface: systemInfo.network.interfaces?.[0] || prev.primaryInterface,\n primaryIP: systemInfo.network.private_ips?.[0] || prev.primaryIP\n }));\n }\n if (configData.network) {\n setConfig((prev)=>({\n ...prev,\n ...configData.network\n }));\n }\n }, [\n systemInfo,\n configData\n ]);\n // Validate configuration\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{\n validateConfiguration();\n }, [\n config\n ]);\n const validateConfiguration = ()=>{\n const newErrors = [];\n const conflicts = [];\n // Check for port conflicts\n const ports = [\n config.bzzzPort,\n config.mcpPort,\n config.webUIPort,\n config.p2pPort\n ];\n const uniquePorts = new Set(ports);\n if (uniquePorts.size !== ports.length) {\n conflicts.push(\"Port numbers must be unique\");\n }\n // Check port ranges\n ports.forEach((port, index)=>{\n const portNames = [\n \"BZZZ API\",\n \"MCP Server\",\n \"Web UI\",\n \"P2P Network\"\n ];\n if (port < 1024) {\n newErrors.push(`${portNames[index]} port should be above 1024 to avoid requiring root privileges`);\n }\n if (port > 65535) {\n newErrors.push(`${portNames[index]} port must be below 65536`);\n }\n });\n // Validate IP addresses in allowed IPs\n config.allowedIPs.forEach((ip)=>{\n if (ip && !isValidCIDR(ip)) {\n newErrors.push(`Invalid CIDR notation: ${ip}`);\n }\n });\n // Validate DNS servers\n config.dnsServers.forEach((dns)=>{\n if (dns && !isValidIPAddress(dns)) {\n newErrors.push(`Invalid DNS server IP: ${dns}`);\n }\n });\n setErrors(newErrors);\n setPortConflicts(conflicts);\n };\n const isValidCIDR = (cidr)=>{\n const regex = /^(\\d{1,3}\\.){3}\\d{1,3}\\/\\d{1,2}$/;\n return regex.test(cidr);\n };\n const isValidIPAddress = (ip)=>{\n const regex = /^(\\d{1,3}\\.){3}\\d{1,3}$/;\n if (!regex.test(ip)) return false;\n return ip.split(\".\").every((part)=>parseInt(part) >= 0 && parseInt(part) <= 255);\n };\n const handlePortChange = (field, value)=>{\n const numValue = parseInt(value) || 0;\n setConfig((prev)=>({\n ...prev,\n [field]: numValue\n }));\n };\n const handleArrayChange = (field, index, value)=>{\n setConfig((prev)=>({\n ...prev,\n [field]: prev[field].map((item, i)=>i === index ? value : item)\n }));\n };\n const addArrayItem = (field)=>{\n setConfig((prev)=>({\n ...prev,\n [field]: [\n ...prev[field],\n \"\"\n ]\n }));\n };\n const removeArrayItem = (field, index)=>{\n setConfig((prev)=>({\n ...prev,\n [field]: prev[field].filter((_, i)=>i !== index)\n }));\n };\n const handleSubmit = (e)=>{\n e.preventDefault();\n if (errors.length === 0 && portConflicts.length === 0) {\n onComplete({\n network: config\n });\n }\n };\n const isFormValid = errors.length === 0 && portConflicts.length === 0;\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"form\", {\n onSubmit: handleSubmit,\n className: \"space-y-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-gray-50 rounded-lg p-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h3\", {\n className: \"text-lg font-medium text-gray-900 mb-4 flex items-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_ExclamationTriangleIcon_GlobeAltIcon_InformationCircleIcon_ServerIcon_ShieldCheckIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n className: \"h-6 w-6 text-bzzz-primary mr-2\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/NetworkConfiguration.tsx\",\n lineNumber: 174,\n columnNumber: 11\n }, this),\n \"Network Interface\"\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/NetworkConfiguration.tsx\",\n lineNumber: 173,\n columnNumber: 9\n }, this),\n systemInfo?.network?.interfaces && /*#__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)(\"label\", {\n className: \"label\",\n children: \"Primary Network Interface\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/NetworkConfiguration.tsx\",\n lineNumber: 180,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"select\", {\n value: config.primaryInterface,\n onChange: (e)=>setConfig((prev)=>({\n ...prev,\n primaryInterface: e.target.value\n })),\n className: \"input-field\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"option\", {\n value: \"\",\n children: \"Select network interface\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/NetworkConfiguration.tsx\",\n lineNumber: 186,\n columnNumber: 15\n }, this),\n systemInfo.network.interfaces.map((interfaceName, index)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"option\", {\n value: interfaceName,\n children: [\n interfaceName,\n \" - \",\n systemInfo.network.private_ips[index] || \"Unknown IP\"\n ]\n }, index, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/NetworkConfiguration.tsx\",\n lineNumber: 188,\n columnNumber: 17\n }, this))\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/NetworkConfiguration.tsx\",\n lineNumber: 181,\n columnNumber: 13\n }, this),\n config.primaryInterface && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm text-gray-600\",\n children: [\n \"Primary IP: \",\n systemInfo.network.private_ips?.[systemInfo.network.interfaces.indexOf(config.primaryInterface)] || \"Unknown\"\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/NetworkConfiguration.tsx\",\n lineNumber: 195,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/NetworkConfiguration.tsx\",\n lineNumber: 179,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/NetworkConfiguration.tsx\",\n lineNumber: 172,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-white border border-gray-200 rounded-lg p-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h3\", {\n className: \"text-lg font-medium text-gray-900 mb-4 flex items-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_ExclamationTriangleIcon_GlobeAltIcon_InformationCircleIcon_ServerIcon_ShieldCheckIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n className: \"h-6 w-6 text-bzzz-primary mr-2\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/NetworkConfiguration.tsx\",\n lineNumber: 206,\n columnNumber: 11\n }, this),\n \"Port Configuration\"\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/NetworkConfiguration.tsx\",\n lineNumber: 205,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid grid-cols-1 md:grid-cols-2 gap-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"label\", {\n className: \"label\",\n children: \"BZZZ API Port\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/NetworkConfiguration.tsx\",\n lineNumber: 212,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"number\",\n value: config.bzzzPort,\n onChange: (e)=>handlePortChange(\"bzzzPort\", e.target.value),\n min: \"1024\",\n max: \"65535\",\n className: \"input-field\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/NetworkConfiguration.tsx\",\n lineNumber: 213,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-sm text-gray-600 mt-1\",\n children: \"Main BZZZ HTTP API endpoint\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/NetworkConfiguration.tsx\",\n lineNumber: 221,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/NetworkConfiguration.tsx\",\n lineNumber: 211,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"label\", {\n className: \"label\",\n children: \"MCP Server Port\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/NetworkConfiguration.tsx\",\n lineNumber: 225,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"number\",\n value: config.mcpPort,\n onChange: (e)=>handlePortChange(\"mcpPort\", e.target.value),\n min: \"1024\",\n max: \"65535\",\n className: \"input-field\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/NetworkConfiguration.tsx\",\n lineNumber: 226,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-sm text-gray-600 mt-1\",\n children: \"Model Context Protocol server\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/NetworkConfiguration.tsx\",\n lineNumber: 234,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/NetworkConfiguration.tsx\",\n lineNumber: 224,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"label\", {\n className: \"label\",\n children: \"Web UI Port\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/NetworkConfiguration.tsx\",\n lineNumber: 238,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"number\",\n value: config.webUIPort,\n onChange: (e)=>handlePortChange(\"webUIPort\", e.target.value),\n min: \"1024\",\n max: \"65535\",\n className: \"input-field\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/NetworkConfiguration.tsx\",\n lineNumber: 239,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-sm text-gray-600 mt-1\",\n children: \"Web interface port\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/NetworkConfiguration.tsx\",\n lineNumber: 247,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/NetworkConfiguration.tsx\",\n lineNumber: 237,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"label\", {\n className: \"label\",\n children: \"P2P Network Port\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/NetworkConfiguration.tsx\",\n lineNumber: 251,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"number\",\n value: config.p2pPort,\n onChange: (e)=>handlePortChange(\"p2pPort\", e.target.value),\n min: \"1024\",\n max: \"65535\",\n className: \"input-field\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/NetworkConfiguration.tsx\",\n lineNumber: 252,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-sm text-gray-600 mt-1\",\n children: \"Peer-to-peer communication\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/NetworkConfiguration.tsx\",\n lineNumber: 260,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/NetworkConfiguration.tsx\",\n lineNumber: 250,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/NetworkConfiguration.tsx\",\n lineNumber: 210,\n columnNumber: 9\n }, this),\n portConflicts.length > 0 && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mt-4 p-3 bg-red-50 border border-red-200 rounded-lg\",\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)(_barrel_optimize_names_ExclamationTriangleIcon_GlobeAltIcon_InformationCircleIcon_ServerIcon_ShieldCheckIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n className: \"h-5 w-5 text-red-600 mr-2\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/NetworkConfiguration.tsx\",\n lineNumber: 267,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-red-800 font-medium\",\n children: \"Port Conflicts\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/NetworkConfiguration.tsx\",\n lineNumber: 268,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/NetworkConfiguration.tsx\",\n lineNumber: 266,\n columnNumber: 13\n }, this),\n portConflicts.map((conflict, index)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-red-700 text-sm mt-1\",\n children: conflict\n }, index, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/NetworkConfiguration.tsx\",\n lineNumber: 271,\n columnNumber: 15\n }, this))\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/NetworkConfiguration.tsx\",\n lineNumber: 265,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/NetworkConfiguration.tsx\",\n lineNumber: 204,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-white border border-gray-200 rounded-lg p-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h3\", {\n className: \"text-lg font-medium text-gray-900 mb-4 flex items-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_ExclamationTriangleIcon_GlobeAltIcon_InformationCircleIcon_ServerIcon_ShieldCheckIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n className: \"h-6 w-6 text-bzzz-primary mr-2\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/NetworkConfiguration.tsx\",\n lineNumber: 280,\n columnNumber: 11\n }, this),\n \"Security & Access Control\"\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/NetworkConfiguration.tsx\",\n lineNumber: 279,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-y-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"checkbox\",\n id: \"autoFirewall\",\n checked: config.autoFirewall,\n onChange: (e)=>setConfig((prev)=>({\n ...prev,\n autoFirewall: e.target.checked\n })),\n className: \"h-4 w-4 text-bzzz-primary focus:ring-bzzz-primary border-gray-300 rounded\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/NetworkConfiguration.tsx\",\n lineNumber: 286,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"label\", {\n htmlFor: \"autoFirewall\",\n className: \"ml-2 text-sm font-medium text-gray-700\",\n children: \"Automatically configure firewall rules\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/NetworkConfiguration.tsx\",\n lineNumber: 293,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/NetworkConfiguration.tsx\",\n lineNumber: 285,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"label\", {\n className: \"label\",\n children: \"Allowed IP Ranges (CIDR)\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/NetworkConfiguration.tsx\",\n lineNumber: 299,\n columnNumber: 13\n }, this),\n config.allowedIPs.map((ip, index)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center space-x-2 mb-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"text\",\n value: ip,\n onChange: (e)=>handleArrayChange(\"allowedIPs\", index, e.target.value),\n placeholder: \"192.168.1.0/24\",\n className: \"input-field flex-1\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/NetworkConfiguration.tsx\",\n lineNumber: 302,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n type: \"button\",\n onClick: ()=>removeArrayItem(\"allowedIPs\", index),\n className: \"text-red-600 hover:text-red-800\",\n children: \"Remove\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/NetworkConfiguration.tsx\",\n lineNumber: 309,\n columnNumber: 17\n }, this)\n ]\n }, index, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/NetworkConfiguration.tsx\",\n lineNumber: 301,\n columnNumber: 15\n }, this)),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n type: \"button\",\n onClick: ()=>addArrayItem(\"allowedIPs\"),\n className: \"text-bzzz-primary hover:text-bzzz-primary/80 text-sm\",\n children: \"+ Add IP Range\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/NetworkConfiguration.tsx\",\n lineNumber: 318,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/NetworkConfiguration.tsx\",\n lineNumber: 298,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/NetworkConfiguration.tsx\",\n lineNumber: 284,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/NetworkConfiguration.tsx\",\n lineNumber: 278,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-white border border-gray-200 rounded-lg p-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h3\", {\n className: \"text-lg font-medium text-gray-900 mb-4\",\n children: \"DNS Configuration\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/NetworkConfiguration.tsx\",\n lineNumber: 331,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"label\", {\n className: \"label\",\n children: \"DNS Servers\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/NetworkConfiguration.tsx\",\n lineNumber: 334,\n columnNumber: 11\n }, this),\n config.dnsServers.map((dns, index)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center space-x-2 mb-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"text\",\n value: dns,\n onChange: (e)=>handleArrayChange(\"dnsServers\", index, e.target.value),\n placeholder: \"8.8.8.8\",\n className: \"input-field flex-1\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/NetworkConfiguration.tsx\",\n lineNumber: 337,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n type: \"button\",\n onClick: ()=>removeArrayItem(\"dnsServers\", index),\n className: \"text-red-600 hover:text-red-800\",\n children: \"Remove\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/NetworkConfiguration.tsx\",\n lineNumber: 344,\n columnNumber: 15\n }, this)\n ]\n }, index, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/NetworkConfiguration.tsx\",\n lineNumber: 336,\n columnNumber: 13\n }, this)),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n type: \"button\",\n onClick: ()=>addArrayItem(\"dnsServers\"),\n className: \"text-bzzz-primary hover:text-bzzz-primary/80 text-sm\",\n children: \"+ Add DNS Server\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/NetworkConfiguration.tsx\",\n lineNumber: 353,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/NetworkConfiguration.tsx\",\n lineNumber: 333,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/NetworkConfiguration.tsx\",\n lineNumber: 330,\n columnNumber: 7\n }, this),\n errors.length > 0 && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-red-50 border border-red-200 rounded-lg p-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center mb-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_ExclamationTriangleIcon_GlobeAltIcon_InformationCircleIcon_ServerIcon_ShieldCheckIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n className: \"h-5 w-5 text-red-600 mr-2\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/NetworkConfiguration.tsx\",\n lineNumber: 367,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-red-800 font-medium\",\n children: \"Configuration Issues\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/NetworkConfiguration.tsx\",\n lineNumber: 368,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/NetworkConfiguration.tsx\",\n lineNumber: 366,\n columnNumber: 11\n }, this),\n errors.map((error, index)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-red-700 text-sm\",\n children: error\n }, index, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/NetworkConfiguration.tsx\",\n lineNumber: 371,\n columnNumber: 13\n }, this))\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/NetworkConfiguration.tsx\",\n lineNumber: 365,\n columnNumber: 9\n }, this),\n isFormValid && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-blue-50 border border-blue-200 rounded-lg p-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center mb-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_ExclamationTriangleIcon_GlobeAltIcon_InformationCircleIcon_ServerIcon_ShieldCheckIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n className: \"h-5 w-5 text-blue-600 mr-2\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/NetworkConfiguration.tsx\",\n lineNumber: 380,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-blue-800 font-medium\",\n children: \"Configuration Summary\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/NetworkConfiguration.tsx\",\n lineNumber: 381,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/NetworkConfiguration.tsx\",\n lineNumber: 379,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-blue-700 text-sm space-y-1\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n children: [\n \"• Primary interface: \",\n config.primaryInterface\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/NetworkConfiguration.tsx\",\n lineNumber: 384,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n children: [\n \"• BZZZ API will be available on port \",\n config.bzzzPort\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/NetworkConfiguration.tsx\",\n lineNumber: 385,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n children: [\n \"• MCP server will run on port \",\n config.mcpPort\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/NetworkConfiguration.tsx\",\n lineNumber: 386,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n children: [\n \"• Web UI will be accessible on port \",\n config.webUIPort\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/NetworkConfiguration.tsx\",\n lineNumber: 387,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n children: [\n \"• P2P network will use port \",\n config.p2pPort\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/NetworkConfiguration.tsx\",\n lineNumber: 388,\n columnNumber: 13\n }, this),\n config.autoFirewall && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n children: \"• Firewall rules will be configured automatically\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/NetworkConfiguration.tsx\",\n lineNumber: 389,\n columnNumber: 37\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/NetworkConfiguration.tsx\",\n lineNumber: 383,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/NetworkConfiguration.tsx\",\n lineNumber: 378,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex justify-between pt-6 border-t border-gray-200\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: onBack && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n type: \"button\",\n onClick: onBack,\n className: \"btn-outline\",\n children: \"Back\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/NetworkConfiguration.tsx\",\n lineNumber: 398,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/NetworkConfiguration.tsx\",\n lineNumber: 396,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n type: \"submit\",\n disabled: !isFormValid,\n className: \"btn-primary\",\n children: isCompleted ? \"Continue\" : \"Next: Security Setup\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/NetworkConfiguration.tsx\",\n lineNumber: 404,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/NetworkConfiguration.tsx\",\n lineNumber: 395,\n columnNumber: 7\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/NetworkConfiguration.tsx\",\n lineNumber: 170,\n columnNumber: 5\n }, this);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9hcHAvc2V0dXAvY29tcG9uZW50cy9OZXR3b3JrQ29uZmlndXJhdGlvbi50c3giLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUFFMkM7QUFRUDtBQTZCckIsU0FBU08scUJBQXFCLEVBQzNDQyxVQUFVLEVBQ1ZDLFVBQVUsRUFDVkMsVUFBVSxFQUNWQyxNQUFNLEVBQ05DLFdBQVcsRUFDZTtJQUMxQixNQUFNLENBQUNDLFFBQVFDLFVBQVUsR0FBR2QsK0NBQVFBLENBQWdCO1FBQ2xEZSxrQkFBa0I7UUFDbEJDLFdBQVc7UUFDWEMsVUFBVTtRQUNWQyxTQUFTO1FBQ1RDLFdBQVc7UUFDWEMsU0FBUztRQUNUQyxjQUFjO1FBQ2RDLFlBQVk7WUFBQztZQUFrQjtZQUFjO1NBQWdCO1FBQzdEQyxZQUFZO1lBQUM7WUFBVztTQUFVO0lBQ3BDO0lBRUEsTUFBTSxDQUFDQyxRQUFRQyxVQUFVLEdBQUd6QiwrQ0FBUUEsQ0FBVyxFQUFFO0lBQ2pELE1BQU0sQ0FBQzBCLGVBQWVDLGlCQUFpQixHQUFHM0IsK0NBQVFBLENBQVcsRUFBRTtJQUUvRCxrREFBa0Q7SUFDbERDLGdEQUFTQSxDQUFDO1FBQ1IsSUFBSU8sWUFBWW9CLFNBQVM7WUFDdkJkLFVBQVVlLENBQUFBLE9BQVM7b0JBQ2pCLEdBQUdBLElBQUk7b0JBQ1BkLGtCQUFrQlAsV0FBV29CLE9BQU8sQ0FBQ0UsVUFBVSxFQUFFLENBQUMsRUFBRSxJQUFJRCxLQUFLZCxnQkFBZ0I7b0JBQzdFQyxXQUFXUixXQUFXb0IsT0FBTyxDQUFDRyxXQUFXLEVBQUUsQ0FBQyxFQUFFLElBQUlGLEtBQUtiLFNBQVM7Z0JBQ2xFO1FBQ0Y7UUFFQSxJQUFJUCxXQUFXbUIsT0FBTyxFQUFFO1lBQ3RCZCxVQUFVZSxDQUFBQSxPQUFTO29CQUFFLEdBQUdBLElBQUk7b0JBQUUsR0FBR3BCLFdBQVdtQixPQUFPO2dCQUFDO1FBQ3REO0lBQ0YsR0FBRztRQUFDcEI7UUFBWUM7S0FBVztJQUUzQix5QkFBeUI7SUFDekJSLGdE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Ozs7Ozs7Ozs7OzswQkFNakMsOERBQUNiO2dCQUFJRCxXQUFVOztrQ0FDYiw4REFBQ0M7a0NBQ0VoRSx3QkFDQyw4REFBQ29GOzRCQUFPVixNQUFLOzRCQUFTVyxTQUFTckY7NEJBQVErRCxXQUFVO3NDQUFjOzs7Ozs7Ozs7OztrQ0FNbkUsOERBQUNxQjt3QkFDQ1YsTUFBSzt3QkFDTGEsVUFBVSxDQUFDM0I7d0JBQ1hHLFdBQVU7a0NBRVQ5RCxjQUFjLGFBQWE7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUt0QyIsInNvdXJjZXMiOlsid2VicGFjazovL2J6enotY29uZmlnLXVpLy4vYXBwL3NldHVwL2NvbXBvbmVudHMvTmV0d29ya0NvbmZpZ3VyYXRpb24udHN4PzQ0OTciXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBjbGllbnQnXG5cbmltcG9ydCB7IHVzZVN0YXRlLCB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IFxuICBHbG9iZUFsdEljb24sXG4gIFNlcnZlckljb24sXG4gIFNoaWVsZENoZWNrSWNvbixcbiAgRXhjbGFtYXRpb25UcmlhbmdsZUljb24sXG4gIENoZWNrQ2lyY2xlSWNvbixcbiAgSW5mb3JtYXRpb25DaXJjbGVJY29uXG59IGZyb20gJ0BoZXJvaWNvbnMvcmVhY3QvMjQvb3V0bGluZSdcblxuaW50ZXJmYWNlIE5ldHdvcmtJbnRlcmZhY2Uge1xuICBuYW1lOiBzdHJpbmdcbiAgaXA6IHN0cmluZ1xuICBzdGF0dXM6IHN0cmluZ1xuICBzcGVlZD86IHN0cmluZ1xufVxuXG5pbnRlcmZhY2UgTmV0d29ya0NvbmZpZyB7XG4gIHByaW1hcnlJbnRlcmZhY2U6IHN0cmluZ1xuICBwcmltYXJ5SVA6IHN0cmluZ1xuICBienp6UG9ydDogbnVtYmVyXG4gIG1jcFBvcnQ6IG51bWJlclxuICB3ZWJVSVBvcnQ6IG51bWJlclxuICBwMnBQb3J0OiBudW1iZXJcbiAgYXV0b0ZpcmV3YWxsOiBib29sZWFuXG4gIGFsbG93ZWRJUHM6IHN0cmluZ1tdXG4gIGRuc1NlcnZlcnM6IHN0cmluZ1tdXG59XG5cbmludGVyZmFjZSBOZXR3b3JrQ29uZmlndXJhdGlvblByb3BzIHtcbiAgc3lzdGVtSW5mbzogYW55XG4gIGNvbmZpZ0RhdGE6IGFueVxuICBvbkNvbXBsZXRlOiAoZGF0YTogYW55KSA9PiB2b2lkXG4gIG9uQmFjaz86ICgpID0+IHZvaWRcbiAgaXNDb21wbGV0ZWQ6IGJvb2xlYW5cbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gTmV0d29ya0NvbmZpZ3VyYXRpb24oeyBcbiAgc3lzdGVtSW5mbywgXG4gIGNvbmZpZ0RhdGEsIFxuICBvbkNvbXBsZXRlLCBcbiAgb25CYWNrLCBcbiAgaXNDb21wbGV0ZWQgXG59OiBOZXR3b3JrQ29uZmlndXJhdGlvblByb3BzKSB7XG4gIGNvbnN0IFtjb25maWcsIHNldENvbmZpZ10gPSB1c2VTdGF0ZTxOZXR3b3JrQ29uZmlnPih7XG4gICAgcHJpbWFyeUludGVyZmFjZTogJycsXG4gICAgcHJpbWFyeUlQOiAnJyxcbiAgICBienp6UG9ydDogODA4MCxcbiAgICBtY3BQb3J0OiAzMDAwLFxuICAgIHdlYlVJUG9ydDogODA4MCxcbiAgICBwMnBQb3J0OiA3MDAwLFxuICAgIGF1dG9GaXJld2FsbDogdHJ1ZSxcbiAgICBhbGxvd2VkSVBzOiBbJzE5Mi4xNjguMC4wLzE2JywgJzEwLjAuMC4wLzgnLCAnMTcyLjE2LjAuMC8xMiddLFxuICAgIGRuc1NlcnZlcnM6IFsnOC44LjguOCcsICc4LjguNC40J11cbiAgfSlcblxuICBjb25zdCBbZXJyb3JzLCBzZXRFcnJvcnNdID0gdXNlU3RhdGU8c3RyaW5nW10+KFtdKVxuICBjb25zdCBbcG9ydENvbmZsaWN0cywgc2V0UG9ydENvbmZsaWN0c10gPSB1c2VTdGF0ZTxzdHJpbmdbXT4oW10pXG5cbiAgLy8gSW5pdGlhbGl6ZSB3aXRoIHN5c3RlbSBpbmZvIGFuZCBleGlzdGluZyBjb25maWdcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoc3lzdGVtSW5mbz8ubmV0d29yaykge1xuICAgICAgc2V0Q29uZmlnKHByZXYgPT4gKHtcbiAgICAgICAgLi4ucHJldixcbiAgICAgICAgcHJpbWFyeUludGVyZmFjZTogc3lzdGVtSW5mby5uZXR3b3JrLmludGVyZmFjZXM/LlswXSB8fCBwcmV2LnByaW1hcnlJbnRlcmZhY2UsXG4gICAgICAgIHByaW1hcnlJUDogc3lzdGVtSW5mby5uZXR3b3JrLnByaXZhdGVfaXBzPy5bMF0gfHwgcHJldi5wcmltYXJ5SVBcbiAgICAgIH0pKVxuICAgIH1cbiAgICBcbiAgICBpZiAoY29uZmlnRGF0YS5uZXR3b3JrKSB7XG4gICAgICBzZXRDb25maWcocHJldiA9PiAoeyAuLi5wcmV2LCAuLi5jb25maWdEYXRhLm5ldHdvcmsgfSkpXG4gICAgfVxuICB9LCBbc3lzdGVtSW5mbywgY29uZmlnRGF0YV0pXG5cbiAgLy8gVmFsaWRhdGUgY29uZmlndXJhdGlvblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHZhbGlkYXRlQ29uZmlndXJhdGlvbigpXG4gIH0sIFtjb25maWddKVxuXG4gIGNvbnN0IHZhbGlkYXRlQ29uZmlndXJhdGlvbiA9ICgpID0+IHtcbiAgICBjb25zdCBuZXdFcnJvcnM6IHN0cmluZ1tdID0gW11cbiAgICBjb25zdCBjb25mbGljdHM6IHN0cmluZ1tdID0gW11cblxuICAgIC8vIENoZWNrIGZvciBwb3J0IGNvbmZsaWN0c1xuICAgIGNvbnN0IHBvcnRzID0gW2NvbmZpZy5ienp6UG9ydCwgY29uZmlnLm1jcFBvcnQsIGNvbmZpZy53ZWJVSVBvcnQsIGNvbmZpZy5wMnBQb3J0XVxuICAgIGNvbnN0IHVuaXF1ZVBvcnRzID0gbmV3IFNldChwb3J0cylcbiAgICBpZiAodW5pcXVlUG9ydHMuc2l6ZSAhPT0gcG9ydHMubGVuZ3RoKSB7XG4gICAgICBjb25mbGljdHMucHVzaCgnUG9ydCBudW1iZXJzIG11c3QgYmUgdW5pcXVlJylcbiAgICB9XG5cbiAgICAvLyBDaGVjayBwb3J0IHJhbmdlc1xuICAgIHBvcnRzLmZvckVhY2goKHBvcnQsIGluZGV4KSA9PiB7XG4gICAgICBjb25zdCBwb3J0TmFtZXMgPSBbJ0JaWlogQVBJJywgJ01DUCBTZXJ2ZXInLCAnV2ViIFVJJywgJ1AyUCBOZXR3b3JrJ11cbiAgICAgIGlmIChwb3J0IDwgMTAyNCkge1xuICAgICAgICBuZXdFcnJvcnMucHVzaChgJHtwb3J0TmFtZXNbaW5kZXhdfSBwb3J0IHNob3VsZCBiZSBhYm92ZSAxMDI0IHRvIGF2b2lkIHJlcXVpcmluZyByb290IHByaXZpbGVnZXNgKVxuICAgICAgfVxuICAgICAgaWYgKHBvcnQgPiA2NTUzNSkge1xuICAgICAgICBuZXdFcnJvcnMucHVzaChgJHtwb3J0TmFtZXNbaW5kZXhdfSBwb3J0IG11c3QgYmUgYmVsb3cgNjU1MzZgKVxuICAgICAgfVxuICAgIH0pXG5cbiAgICAvLyBWYWxpZGF0ZSBJUCBhZGRyZXNzZXMgaW4gYWxsb3dlZCBJUHNcbiAgICBjb25maWcuYWxsb3dlZElQcy5mb3JFYWNoKGlwID0+IHtcbiAgICAgIGlmIChpcCAmJiAhaXNWYWxpZENJRFIoaXApKSB7XG4gICAgICAgIG5ld0Vycm9ycy5wdXNoKGBJbnZhbGlkIENJRFIgbm90YXRpb246ICR7aXB9YClcbiAgICAgIH1cbiAgICB9KVxuXG4gICAgLy8gVmFsaWRhdGUgRE5TIHNlcnZlcnNcbiAgICBjb25maWcuZG5zU2VydmVycy5mb3JFYWNoKGRucyA9PiB7XG4gICAgICBpZiAoZG5zICYmICFpc1ZhbGlkSVBBZGRyZXNzKGRucykpIHtcbiAgICAgICAgbmV3RXJyb3JzLnB1c2goYEludmFsaWQgRE5TIHNlcnZlciBJUDogJHtkbnN9YClcbiAgICAgIH1cbiAgICB9KVxuXG4gICAgc2V0RXJyb3JzKG5ld0Vycm9ycylcbiAgICBzZXRQb3J0Q29uZmxpY3RzKGNvbmZsaWN0cylcbiAgfVxuXG4gIGNvbnN0IGlzVmFsaWRDSURSID0gKGNpZHI6IHN0cmluZyk6IGJvb2xlYW4gPT4ge1xuICAgIGNvbnN0IHJlZ2V4ID0gL14oXFxkezEsM31cXC4pezN9XFxkezEsM31cXC9cXGR7MSwyfSQvXG4gICAgcmV0dXJuIHJlZ2V4LnRlc3QoY2lkcilcbiAgfVxuXG4gIGNvbnN0IGlzVmFsaWRJUEFkZHJlc3MgPSAoaXA6IHN0cmluZyk6IGJvb2xlYW4gPT4ge1xuICAgIGNvbnN0IHJlZ2V4ID0gL14oXFxkezEsM31cXC4pezN9XFxkezEsM30kL1xuICAgIGlmICghcmVnZXgudGVzdChpcCkpIHJldHVybiBmYWxzZVxuICAgIHJldHVybiBpcC5zcGxpdCgnLicpLmV2ZXJ5KHBhcnQgPT4gcGFyc2VJbnQocGFydCkgPj0gMCAmJiBwYXJzZUludChwYXJ0KSA8PSAyNTUpXG4gIH1cblxuICBjb25zdCBoYW5kbGVQb3J0Q2hhbmdlID0gKGZpZWxkOiBrZXlvZiBOZXR3b3JrQ29uZmlnLCB2YWx1ZTogc3RyaW5nKSA9PiB7XG4gICAgY29uc3QgbnVtVmFsdWUgPSBwYXJzZUludCh2YWx1ZSkgfHwgMFxuICAgIHNldENvbmZpZyhwcmV2ID0+ICh7IC4uLnByZXYsIFtmaWVsZF06IG51bVZhbHVlIH0pKVxuICB9XG5cbiAgY29uc3QgaGFuZGxlQXJyYXlDaGFuZ2UgPSAoZmllbGQ6ICdhbGxvd2VkSVBzJyB8ICdkbnNTZXJ2ZXJzJywgaW5kZXg6IG51bWJlciwgdmFsdWU6IHN0cmluZykgPT4ge1xuICAgIHNldENvbmZpZyhwcmV2ID0+ICh7XG4gICAgICAuLi5wcmV2LFxuICAgICAgW2ZpZWxkXTogcHJldltmaWVsZF0ubWFwKChpdGVtLCBpKSA9PiBpID09PSBpbmRleCA/IHZhbHVlIDogaXRlbSlcbiAgICB9KSlcbiAgfVxuXG4gIGNvbnN0IGFkZEFycmF5SXRlbSA9IChmaWVsZDogJ2FsbG93ZWRJUHMnIHwgJ2Ruc1NlcnZlcnMnKSA9PiB7XG4gICAgc2V0Q29uZmlnKHByZXYgPT4gKHtcbiAgICAgIC4uLnByZXYsXG4gICAgICBbZmllbGRdOiBbLi4ucHJldltmaWVsZF0sICcnXVxuICAgIH0pKVxuICB9XG5cbiAgY29uc3QgcmVtb3ZlQXJyYXlJdGVtID0gKGZpZWxkOiAnYWxsb3dlZElQcycgfCAnZG5zU2VydmVycycsIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICBzZXRDb25maWcocHJldiA9PiAoe1xuICAgICAgLi4ucHJldixcbiAgICAgIFtmaWVsZF06IHByZXZbZmllbGRdLmZpbHRlcigoXywgaSkgPT4gaSAhPT0gaW5kZXgpXG4gICAgfSkpXG4gIH1cblxuICBjb25zdCBoYW5kbGVTdWJtaXQgPSAoZTogUmVhY3QuRm9ybUV2ZW50KSA9PiB7XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpXG4gICAgXG4gICAgaWYgKGVycm9ycy5sZW5ndGggPT09IDAgJiYgcG9ydENvbmZsaWN0cy5sZW5ndGggPT09IDApIHtcbiAgICAgIG9uQ29tcGxldGUoeyBuZXR3b3JrOiBjb25maWcgfSlcbiAgICB9XG4gIH1cblxuICBjb25zdCBpc0Zvcm1WYWxpZCA9IGVycm9ycy5sZW5ndGggPT09IDAgJiYgcG9ydENvbmZsaWN0cy5sZW5ndGggPT09IDBcblxuICByZXR1cm4gKFxuICAgIDxmb3JtIG9uU3VibWl0PXtoYW5kbGVTdWJtaXR9IGNsYXNzTmFtZT1cInNwYWNlLXktNlwiPlxuICAgICAgey8qIE5ldHdvcmsgSW50ZXJmYWNlIFNlbGVjdGlvbiAqL31cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmctZ3JheS01MCByb3VuZGVkLWxnIHAtNlwiPlxuICAgICAgICA8aDMgY2xhc3NOYW1lPVwidGV4dC1sZyBmb250LW1lZGl1bSB0ZXh0LWdyYXktOTAwIG1iLTQgZmxleCBpdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICA8R2xvYmVBbHRJY29uIGNsYXNzTmFtZT1cImgtNiB3LTYgdGV4dC1ienp6LXByaW1hcnkgbXItMlwiIC8+XG4gICAgICAgICAgTmV0d29yayBJbnRlcmZhY2VcbiAgICAgICAgPC9oMz5cbiAgICAgICAgXG4gICAgICAgIHtzeXN0ZW1JbmZvPy5uZXR3b3JrPy5pbnRlcmZhY2VzICYmIChcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInNwYWNlLXktM1wiPlxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzTmFtZT1cImxhYmVsXCI+UHJpbWFyeSBOZXR3b3JrIEludGVyZmFjZTwvbGFiZWw+XG4gICAgICAgICAgICA8c2VsZWN0XG4gICAgICAgICAgICAgIHZhbHVlPXtjb25maWcucHJpbWFyeUludGVyZmFjZX1cbiAgICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiBzZXRDb25maWcocHJldiA9PiAoeyAuLi5wcmV2LCBwcmltYXJ5SW50ZXJmYWNlOiBlLnRhcmdldC52YWx1ZSB9KSl9XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT1cImlucHV0LWZpZWxkXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIlwiPlNlbGVjdCBuZXR3b3JrIGludGVyZmFjZTwvb3B0aW9uPlxuICAgICAgICAgICAgICB7c3lzdGVtSW5mby5uZXR3b3JrLmludGVyZmFjZXMubWFwKChpbnRlcmZhY2VOYW1lOiBzdHJpbmcsIGluZGV4OiBudW1iZXIpID0+IChcbiAgICAgICAgICAgICAgICA8b3B0aW9uIGtleT17aW5kZXh9IHZhbHVlPXtpbnRlcmZhY2VOYW1lfT5cbiAgICAgICAgICAgICAgICAgIHtpbnRlcmZhY2VOYW1lfSAtIHtzeXN0ZW1JbmZvLm5ldHdvcmsucHJpdmF0ZV9pcHNbaW5kZXhdIHx8ICdVbmtub3duIElQJ31cbiAgICAgICAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgICAgIFxuICAgICAgICAgICAge2NvbmZpZy5wcmltYXJ5SW50ZXJmYWNlICYmIChcbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LXNtIHRleHQtZ3JheS02MDBcIj5cbiAgICAgICAgICAgICAgICBQcmltYXJ5IElQOiB7c3lzdGVtSW5mby5uZXR3b3JrLnByaXZhdGVfaXBzPy5bc3lzdGVtSW5mby5uZXR3b3JrLmludGVyZmFjZXMuaW5kZXhPZihjb25maWcucHJpbWFyeUludGVyZmFjZSldIHx8ICdVbmtub3duJ31cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICApfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICApfVxuICAgICAgPC9kaXY+XG5cbiAgICAgIHsvKiBQb3J0IENvbmZpZ3VyYXRpb24gKi99XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImJnLXdoaXRlIGJvcmRlciBib3JkZXItZ3JheS0yMDAgcm91bmRlZC1sZyBwLTZcIj5cbiAgICAgICAgPGgzIGNsYXNzTmFtZT1cInRleHQtbGcgZm9udC1tZWRpdW0gdGV4dC1ncmF5LTkwMCBtYi00IGZsZXggaXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgPFNlcnZlckljb24gY2xhc3NOYW1lPVwiaC02IHctNiB0ZXh0LWJ6enotcHJpbWFyeSBtci0yXCIgLz5cbiAgICAgICAgICBQb3J0IENvbmZpZ3VyYXRpb25cbiAgICAgICAgPC9oMz5cbiAgICAgICAgXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZ3JpZCBncmlkLWNvbHMtMSBtZDpncmlkLWNvbHMtMiBnYXAtNFwiPlxuICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICA8bGFiZWwgY2xhc3NOYW1lPVwibGFiZWxcIj5CWlpaIEFQSSBQb3J0PC9sYWJlbD5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgICAgICAgdmFsdWU9e2NvbmZpZy5ienp6UG9ydH1cbiAgICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiBoYW5kbGVQb3J0Q2hhbmdlKCdienp6UG9ydCcsIGUudGFyZ2V0LnZhbHVlKX1cbiAgICAgICAgICAgICAgbWluPVwiMTAyNFwiXG4gICAgICAgICAgICAgIG1heD1cIjY1NTM1XCJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiaW5wdXQtZmllbGRcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQtc20gdGV4dC1ncmF5LTYwMCBtdC0xXCI+TWFpbiBCWlpaIEhUVFAgQVBJIGVuZHBvaW50PC9wPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgIDxsYWJlbCBjbGFzc05hbWU9XCJsYWJlbFwiPk1DUCBTZXJ2ZXIgUG9ydDwvbGFiZWw+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICAgICAgICAgIHZhbHVlPXtjb25maWcubWNwUG9ydH1cbiAgICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiBoYW5kbGVQb3J0Q2hhbmdlKCdtY3BQb3J0JywgZS50YXJnZXQudmFsdWUpfVxuICAgICAgICAgICAgICBtaW49XCIxMDI0XCJcbiAgICAgICAgICAgICAgbWF4PVwiNjU1MzVcIlxuICAgICAgICAgICAgICBjbGFzc05hbWU9XCJpbnB1dC1maWVsZFwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC1zbSB0ZXh0LWdyYXktNjAwIG10LTFcIj5Nb2RlbCBDb250ZXh0IFByb3RvY29sIHNlcnZlcjwvcD5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICA8bGFiZWwgY2xhc3NOYW1lPVwibGFiZWxcIj5XZWIgVUkgUG9ydDwvbGFiZWw+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICAgICAgICAgIHZhbHVlPXtjb25maWcud2ViVUlQb3J0fVxuICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IGhhbmRsZVBvcnRDaGFuZ2UoJ3dlYlVJUG9ydCcsIGUudGFyZ2V0LnZhbHVlKX1cbiAgICAgICAgICAgICAgbWluPVwiMTAyNFwiXG4gICAgICAgICAgICAgIG1heD1cIjY1NTM1XCJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiaW5wdXQtZmllbGRcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQtc20gdGV4dC1ncmF5LTYwMCBtdC0xXCI+V2ViIGludGVyZmFjZSBwb3J0PC9wPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgIDxsYWJlbCBjbGFzc05hbWU9XCJsYWJlbFwiPlAyUCBOZXR3b3JrIFBvcnQ8L2xhYmVsPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIHR5cGU9XCJudW1iZXJcIlxuICAgICAgICAgICAgICB2YWx1ZT17Y29uZmlnLnAycFBvcnR9XG4gICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gaGFuZGxlUG9ydENoYW5nZSgncDJwUG9ydCcsIGUudGFyZ2V0LnZhbHVlKX1cbiAgICAgICAgICAgICAgbWluPVwiMTAyNFwiXG4gICAgICAgICAgICAgIG1heD1cIjY1NTM1XCJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiaW5wdXQtZmllbGRcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQtc20gdGV4dC1ncmF5LTYwMCBtdC0xXCI+UGVlci10by1wZWVyIGNvbW11bmljYXRpb248L3A+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIHtwb3J0Q29uZmxpY3RzLmxlbmd0aCA+IDAgJiYgKFxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibXQtNCBwLTMgYmctcmVkLTUwIGJvcmRlciBib3JkZXItcmVkLTIwMCByb3VuZGVkLWxnXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICAgIDxFeGNsYW1hdGlvblRyaWFuZ2xlSWNvbiBjbGFzc05hbWU9XCJoLTUgdy01IHRleHQtcmVkLTYwMCBtci0yXCIgLz5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC1yZWQtODAwIGZvbnQtbWVkaXVtXCI+UG9ydCBDb25mbGljdHM8L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIHtwb3J0Q29uZmxpY3RzLm1hcCgoY29uZmxpY3QsIGluZGV4KSA9PiAoXG4gICAgICAgICAgICAgIDxwIGtleT17aW5kZXh9IGNsYXNzTmFtZT1cInRleHQtcmVkLTcwMCB0ZXh0LXNtIG10LTFcIj57Y29uZmxpY3R9PC9wPlxuICAgICAgICAgICAgKSl9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICl9XG4gICAgICA8L2Rpdj5cblxuICAgICAgey8qIFNlY3VyaXR5ICYgQWNjZXNzIENvbnRyb2wgKi99XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImJnLXdoaXRlIGJvcmRlciBib3JkZXItZ3JheS0yMDAgcm91bmRlZC1sZyBwLTZcIj5cbiAgICAgICAgPGgzIGNsYXNzTmFtZT1cInRleHQtbGcgZm9udC1tZWRpdW0gdGV4dC1ncmF5LTkwMCBtYi00IGZsZXggaXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgPFNoaWVsZENoZWNrSWNvbiBjbGFzc05hbWU9XCJoLTYgdy02IHRleHQtYnp6ei1wcmltYXJ5IG1yLTJcIiAvPlxuICAgICAgICAgIFNlY3VyaXR5ICYgQWNjZXNzIENvbnRyb2xcbiAgICAgICAgPC9oMz5cbiAgICAgICAgXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwic3BhY2UteS00XCI+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICAgIGlkPVwiYXV0b0ZpcmV3YWxsXCJcbiAgICAgICAgICAgICAgY2hlY2tlZD17Y29uZmlnLmF1dG9GaXJld2FsbH1cbiAgICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiBzZXRDb25maWcocHJldiA9PiAoeyAuLi5wcmV2LCBhdXRvRmlyZXdhbGw6IGUudGFyZ2V0LmNoZWNrZWQgfSkpfVxuICAgICAgICAgICAgICBjbGFzc05hbWU9XCJoLTQgdy00IHRleHQtYnp6ei1wcmltYXJ5IGZvY3VzOnJpbmctYnp6ei1wcmltYXJ5IGJvcmRlci1ncmF5LTMwMCByb3VuZGVkXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8bGFiZWwgaHRtbEZvcj1cImF1dG9GaXJld2FsbFwiIGNsYXNzTmFtZT1cIm1sLTIgdGV4dC1zbSBmb250LW1lZGl1bSB0ZXh0LWdyYXktNzAwXCI+XG4gICAgICAgICAgICAgIEF1dG9tYXRpY2FsbHkgY29uZmlndXJlIGZpcmV3YWxsIHJ1bGVzXG4gICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgIDxsYWJlbCBjbGFzc05hbWU9XCJsYWJlbFwiPkFsbG93ZWQgSVAgUmFuZ2VzIChDSURSKTwvbGFiZWw+XG4gICAgICAgICAgICB7Y29uZmlnLmFsbG93ZWRJUHMubWFwKChpcCwgaW5kZXgpID0+IChcbiAgICAgICAgICAgICAgPGRpdiBrZXk9e2luZGV4fSBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBzcGFjZS14LTIgbWItMlwiPlxuICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgdmFsdWU9e2lwfVxuICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiBoYW5kbGVBcnJheUNoYW5nZSgnYWxsb3dlZElQcycsIGluZGV4LCBlLnRhcmdldC52YWx1ZSl9XG4gICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIjE5Mi4xNjguMS4wLzI0XCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImlucHV0LWZpZWxkIGZsZXgtMVwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHJlbW92ZUFycmF5SXRlbSgnYWxsb3dlZElQcycsIGluZGV4KX1cbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInRleHQtcmVkLTYwMCBob3Zlcjp0ZXh0LXJlZC04MDBcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIFJlbW92ZVxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gYWRkQXJyYXlJdGVtKCdhbGxvd2VkSVBzJyl9XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT1cInRleHQtYnp6ei1wcmltYXJ5IGhvdmVyOnRleHQtYnp6ei1wcmltYXJ5LzgwIHRleHQtc21cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICArIEFkZCBJUCBSYW5nZVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIHsvKiBETlMgQ29uZmlndXJhdGlvbiAqL31cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmctd2hpdGUgYm9yZGVyIGJvcmRlci1ncmF5LTIwMCByb3VuZGVkLWxnIHAtNlwiPlxuICAgICAgICA8aDMgY2xhc3NOYW1lPVwidGV4dC1sZyBmb250LW1lZGl1bSB0ZXh0LWdyYXktOTAwIG1iLTRcIj5ETlMgQ29uZmlndXJhdGlvbjwvaDM+XG4gICAgICAgIFxuICAgICAgICA8ZGl2PlxuICAgICAgICAgIDxsYWJlbCBjbGFzc05hbWU9XCJsYWJlbFwiPkROUyBTZXJ2ZXJzPC9sYWJlbD5cbiAgICAgICAgICB7Y29uZmlnLmRuc1NlcnZlcnMubWFwKChkbnMsIGluZGV4KSA9PiAoXG4gICAgICAgICAgICA8ZGl2IGtleT17aW5kZXh9IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIHNwYWNlLXgtMiBtYi0yXCI+XG4gICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICB2YWx1ZT17ZG5zfVxuICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gaGFuZGxlQXJyYXlDaGFuZ2UoJ2Ruc1NlcnZlcnMnLCBpbmRleCwgZS50YXJnZXQudmFsdWUpfVxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiOC44LjguOFwiXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiaW5wdXQtZmllbGQgZmxleC0xXCJcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHJlbW92ZUFycmF5SXRlbSgnZG5zU2VydmVycycsIGluZGV4KX1cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ0ZXh0LXJlZC02MDAgaG92ZXI6dGV4dC1yZWQtODAwXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIFJlbW92ZVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICkpfVxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4gYWRkQXJyYXlJdGVtKCdkbnNTZXJ2ZXJzJyl9XG4gICAgICAgICAgICBjbGFzc05hbWU9XCJ0ZXh0LWJ6enotcHJpbWFyeSBob3Zlcjp0ZXh0LWJ6enotcHJpbWFyeS84MCB0ZXh0LXNtXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICArIEFkZCBETlMgU2VydmVyXG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIHsvKiBWYWxpZGF0aW9uIEVycm9ycyAqL31cbiAgICAgIHtlcnJvcnMubGVuZ3RoID4gMCAmJiAoXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmctcmVkLTUwIGJvcmRlciBib3JkZXItcmVkLTIwMCByb3VuZGVkLWxnIHAtNFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIgbWItMlwiPlxuICAgICAgICAgICAgPEV4Y2xhbWF0aW9uVHJpYW5nbGVJY29uIGNsYXNzTmFtZT1cImgtNSB3LTUgdGV4dC1yZWQtNjAwIG1yLTJcIiAvPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC1yZWQtODAwIGZvbnQtbWVkaXVtXCI+Q29uZmlndXJhdGlvbiBJc3N1ZXM8L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAge2Vycm9ycy5tYXAoKGVycm9yLCBpbmRleCkgPT4gKFxuICAgICAgICAgICAgPHAga2V5PXtpbmRleH0gY2xhc3NOYW1lPVwidGV4dC1yZWQtNzAwIHRleHQtc21cIj57ZXJyb3J9PC9wPlxuICAgICAgICAgICkpfVxuICAgICAgICA8L2Rpdj5cbiAgICAgICl9XG5cbiAgICAgIHsvKiBDb25maWd1cmF0aW9uIFN1bW1hcnkgKi99XG4gICAgICB7aXNGb3JtVmFsaWQgJiYgKFxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJnLWJsdWUtNTAgYm9yZGVyIGJvcmRlci1ibHVlLTIwMCByb3VuZGVkLWxnIHAtNFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIgbWItMlwiPlxuICAgICAgICAgICAgPEluZm9ybWF0aW9uQ2lyY2xlSWNvbiBjbGFzc05hbWU9XCJoLTUgdy01IHRleHQtYmx1ZS02MDAgbXItMlwiIC8+XG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LWJsdWUtODAwIGZvbnQtbWVkaXVtXCI+Q29uZmlndXJhdGlvbiBTdW1tYXJ5PC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1ibHVlLTcwMCB0ZXh0LXNtIHNwYWNlLXktMVwiPlxuICAgICAgICAgICAgPHA+4oCiIFByaW1hcnkgaW50ZXJmYWNlOiB7Y29uZmlnLnByaW1hcnlJbnRlcmZhY2V9PC9wPlxuICAgICAgICAgICAgPHA+4oCiIEJaWlogQVBJIHdpbGwgYmUgYXZhaWxhYmxlIG9uIHBvcnQge2NvbmZpZy5ienp6UG9ydH08L3A+XG4gICAgICAgICAgICA8cD7igKIgTUNQIHNlcnZlciB3aWxsIHJ1biBvbiBwb3J0IHtjb25maWcubWNwUG9ydH08L3A+XG4gICAgICAgICAgICA8cD7igKIgV2ViIFVJIHdpbGwgYmUgYWNjZXNzaWJsZSBvbiBwb3J0IHtjb25maWcud2ViVUlQb3J0fTwvcD5cbiAgICAgICAgICAgIDxwPuKAoiBQMlAgbmV0d29yayB3aWxsIHVzZSBwb3J0IHtjb25maWcucDJwUG9ydH08L3A+XG4gICAgICAgICAgICB7Y29uZmlnLmF1dG9GaXJld2FsbCAmJiA8cD7igKIgRmlyZXdhbGwgcnVsZXMgd2lsbCBiZSBjb25maWd1cmVkIGF1dG9tYXRpY2FsbHk8L3A+fVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICl9XG5cbiAgICAgIHsvKiBBY3Rpb24gQnV0dG9ucyAqL31cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBqdXN0aWZ5LWJldHdlZW4gcHQtNiBib3JkZXItdCBib3JkZXItZ3JheS0yMDBcIj5cbiAgICAgICAgPGRpdj5cbiAgICAgICAgICB7b25CYWNrICYmIChcbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG9uQ2xpY2s9e29uQmFja30gY2xhc3NOYW1lPVwiYnRuLW91dGxpbmVcIj5cbiAgICAgICAgICAgICAgQmFja1xuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIFxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgICAgICAgZGlzYWJsZWQ9eyFpc0Zvcm1WYWxpZH1cbiAgICAgICAgICBjbGFzc05hbWU9XCJidG4tcHJpbWFyeVwiXG4gICAgICAgID5cbiAgICAgICAgICB7aXNDb21wbGV0ZWQgPyAnQ29udGludWUnIDogJ05leHQ6IFNlY3VyaXR5IFNldHVwJ31cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Zvcm0+XG4gIClcbn0iXSwibmFtZXMiOlsidXNlU3RhdGUiLCJ1c2VFZmZlY3QiLCJHbG9iZUFsdEljb24iLCJTZXJ2ZXJJY29uIiwiU2hpZWxkQ2hlY2tJY29uIiwiRXhjbGFtYXRpb25UcmlhbmdsZUljb24iLCJJbmZvcm1hdGlvbkNpcmNsZUljb24iLCJOZXR3b3JrQ29uZmlndXJhdGlvbiIsInN5c3RlbUluZm8iLCJjb25maWdEYXRhIiwib25Db21wbGV0ZSIsIm9uQmFjayIsImlzQ29tcGxldGVkIiwiY29uZmlnIiwic2V0Q29uZmlnIiwicHJpbWFyeUludGVyZmFjZSIsInByaW1hcnlJUCIsImJ6enpQb3J0IiwibWNwUG9ydCIsIndlYlVJUG9ydCIsInAycFBvcnQiLCJhdXRvRmlyZXdhbGwiLCJhbGxvd2VkSVBzIiwiZG5zU2VydmVycyIsImVycm9ycyIsInNldEVycm9ycyIsInBvcnRDb25mbGljdHMiLCJzZXRQb3J0Q29uZmxpY3RzIiwibmV0d29yayIsInByZXYiLCJpbnRlcmZhY2VzIiwicHJpdmF0ZV9pcHMiLCJ2YWxpZGF0ZUNvbmZpZ3VyYXRpb24iLCJuZXdFcnJvcnMiLCJjb25mbGljdHMiLCJwb3J0cyIsInVuaXF1ZVBvcnRzIiwiU2V0Iiwic2l6ZSIsImxlbmd0aCIsInB1c2giLCJmb3JFYWNoIiwicG9ydCIsImluZGV4IiwicG9ydE5hbWVzIiwiaXAiLCJpc1ZhbGlkQ0lEUiIsImRucyIsImlzVmFsaWRJUEFkZHJlc3MiLCJjaWRyIiwicmVnZXgiLCJ0ZXN0Iiwic3BsaXQiLCJldmVyeSIsInBhcnQiLCJwYXJzZUludCIsImhhbmRsZVBvcnRDaGFuZ2UiLCJmaWVsZCIsInZhbHVlIiwibnVtVmFsdWUiLCJoYW5kbGVBcnJheUNoYW5nZSIsIm1hcCIsIml0ZW0iLCJpIiwiYWRkQXJyYXlJdGVtIiwicmVtb3ZlQXJyYXlJdGVtIiwiZmlsdGVyIiwiXyIsImhhbmRsZVN1Ym1pdCIsImUiLCJwcmV2ZW50RGVmYXVsdCIsImlzRm9ybVZhbGlkIiwiZm9ybSIsIm9uU3VibWl0IiwiY2xhc3NOYW1lIiwiZGl2IiwiaDMiLCJsYWJlbCIsInNlbGVjdCIsIm9uQ2hhbmdlIiwidGFyZ2V0Iiwib3B0aW9uIiwiaW50ZXJmYWNlTmFtZSIsImluZGV4T2YiLCJpbnB1dCIsInR5cGUiLCJtaW4iLCJtYXgiLCJwIiwic3BhbiIsImNvbmZsaWN0IiwiaWQiLCJjaGVja2VkIiwiaHRtbEZvciIsInBsYWNlaG9sZGVyIiwiYnV0dG9uIiwib25DbGljayIsImVycm9yIiwiZGlzYWJsZWQiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./app/setup/components/NetworkConfiguration.tsx\n");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "(ssr)/./app/setup/components/RepositoryConfiguration.tsx":
|
|
/*!**********************************************************!*\
|
|
!*** ./app/setup/components/RepositoryConfiguration.tsx ***!
|
|
\**********************************************************/
|
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
|
|
"use strict";
|
|
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ RepositoryConfiguration)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react-jsx-dev-runtime.js\");\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _barrel_optimize_names_ArrowPathIcon_CheckCircleIcon_CodeBracketIcon_EyeIcon_EyeSlashIcon_XCircleIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! __barrel_optimize__?names=ArrowPathIcon,CheckCircleIcon,CodeBracketIcon,EyeIcon,EyeSlashIcon,XCircleIcon!=!@heroicons/react/24/outline */ \"(ssr)/./node_modules/@heroicons/react/24/outline/esm/ArrowPathIcon.js\");\n/* harmony import */ var _barrel_optimize_names_ArrowPathIcon_CheckCircleIcon_CodeBracketIcon_EyeIcon_EyeSlashIcon_XCircleIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! __barrel_optimize__?names=ArrowPathIcon,CheckCircleIcon,CodeBracketIcon,EyeIcon,EyeSlashIcon,XCircleIcon!=!@heroicons/react/24/outline */ \"(ssr)/./node_modules/@heroicons/react/24/outline/esm/CodeBracketIcon.js\");\n/* harmony import */ var _barrel_optimize_names_ArrowPathIcon_CheckCircleIcon_CodeBracketIcon_EyeIcon_EyeSlashIcon_XCircleIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! __barrel_optimize__?names=ArrowPathIcon,CheckCircleIcon,CodeBracketIcon,EyeIcon,EyeSlashIcon,XCircleIcon!=!@heroicons/react/24/outline */ \"(ssr)/./node_modules/@heroicons/react/24/outline/esm/EyeSlashIcon.js\");\n/* harmony import */ var _barrel_optimize_names_ArrowPathIcon_CheckCircleIcon_CodeBracketIcon_EyeIcon_EyeSlashIcon_XCircleIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! __barrel_optimize__?names=ArrowPathIcon,CheckCircleIcon,CodeBracketIcon,EyeIcon,EyeSlashIcon,XCircleIcon!=!@heroicons/react/24/outline */ \"(ssr)/./node_modules/@heroicons/react/24/outline/esm/EyeIcon.js\");\n/* harmony import */ var _barrel_optimize_names_ArrowPathIcon_CheckCircleIcon_CodeBracketIcon_EyeIcon_EyeSlashIcon_XCircleIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! __barrel_optimize__?names=ArrowPathIcon,CheckCircleIcon,CodeBracketIcon,EyeIcon,EyeSlashIcon,XCircleIcon!=!@heroicons/react/24/outline */ \"(ssr)/./node_modules/@heroicons/react/24/outline/esm/CheckCircleIcon.js\");\n/* harmony import */ var _barrel_optimize_names_ArrowPathIcon_CheckCircleIcon_CodeBracketIcon_EyeIcon_EyeSlashIcon_XCircleIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! __barrel_optimize__?names=ArrowPathIcon,CheckCircleIcon,CodeBracketIcon,EyeIcon,EyeSlashIcon,XCircleIcon!=!@heroicons/react/24/outline */ \"(ssr)/./node_modules/@heroicons/react/24/outline/esm/XCircleIcon.js\");\n/* __next_internal_client_entry_do_not_use__ default auto */ \n\n\nfunction RepositoryConfiguration({ systemInfo, configData, onComplete, onBack, isCompleted }) {\n const [providers, setProviders] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)([]);\n const [config, setConfig] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)({\n provider: \"\",\n baseURL: \"\",\n accessToken: \"\",\n owner: \"\",\n repository: \"\"\n });\n const [validation, setValidation] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);\n const [validating, setValidating] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n const [showToken, setShowToken] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n const [loadingProviders, setLoadingProviders] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(true);\n // Load existing config from configData if available\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{\n if (configData.repository) {\n setConfig({\n ...configData.repository\n });\n }\n }, [\n configData\n ]);\n // Load supported providers\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{\n loadProviders();\n }, []);\n const loadProviders = async ()=>{\n try {\n const response = await fetch(\"/api/setup/repository/providers\");\n if (response.ok) {\n const result = await response.json();\n const providerList = result.providers || [];\n // Map provider names to full provider objects\n const providersData = providerList.map((name)=>{\n switch(name.toLowerCase()){\n case \"gitea\":\n return {\n name: \"gitea\",\n displayName: \"Gitea\",\n description: \"Self-hosted Git service with issue tracking\",\n requiresBaseURL: true,\n defaultBaseURL: \"http://gitea.local\"\n };\n case \"github\":\n return {\n name: \"github\",\n displayName: \"GitHub\",\n description: \"Cloud-based Git repository hosting service\",\n requiresBaseURL: false,\n defaultBaseURL: \"https://api.github.com\"\n };\n default:\n return {\n name: name.toLowerCase(),\n displayName: name,\n description: \"Git repository service\",\n requiresBaseURL: true\n };\n }\n });\n setProviders(providersData);\n // Set default provider if none selected\n if (!config.provider && providersData.length > 0) {\n const defaultProvider = providersData.find((p)=>p.name === \"gitea\") || providersData[0];\n handleProviderChange(defaultProvider.name);\n }\n }\n } catch (error) {\n console.error(\"Failed to load providers:\", error);\n } finally{\n setLoadingProviders(false);\n }\n };\n const handleProviderChange = (provider)=>{\n const providerData = providers.find((p)=>p.name === provider);\n setConfig((prev)=>({\n ...prev,\n provider,\n baseURL: providerData?.defaultBaseURL || prev.baseURL\n }));\n setValidation(null);\n };\n const handleInputChange = (field, value)=>{\n setConfig((prev)=>({\n ...prev,\n [field]: value\n }));\n setValidation(null);\n };\n const validateRepository = async ()=>{\n if (!config.provider || !config.accessToken || !config.owner || !config.repository) {\n setValidation({\n valid: false,\n error: \"Please fill in all required fields\"\n });\n return;\n }\n setValidating(true);\n setValidation(null);\n try {\n const response = await fetch(\"/api/setup/repository/validate\", {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\"\n },\n body: JSON.stringify(config)\n });\n const result = await response.json();\n if (response.ok && result.valid) {\n setValidation({\n valid: true,\n message: result.message || \"Repository connection successful\"\n });\n } else {\n setValidation({\n valid: false,\n error: result.error || \"Validation failed\"\n });\n }\n } catch (error) {\n setValidation({\n valid: false,\n error: \"Network error: Unable to validate repository\"\n });\n } finally{\n setValidating(false);\n }\n };\n const handleSubmit = (e)=>{\n e.preventDefault();\n if (validation?.valid) {\n onComplete({\n repository: config\n });\n } else {\n validateRepository();\n }\n };\n const selectedProvider = providers.find((p)=>p.name === config.provider);\n const isFormValid = config.provider && config.accessToken && config.owner && config.repository && (!selectedProvider?.requiresBaseURL || config.baseURL);\n if (loadingProviders) {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center justify-center py-12\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_ArrowPathIcon_CheckCircleIcon_CodeBracketIcon_EyeIcon_EyeSlashIcon_XCircleIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n className: \"h-8 w-8 text-bzzz-primary animate-spin mx-auto mb-4\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/RepositoryConfiguration.tsx\",\n lineNumber: 204,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-gray-600\",\n children: \"Loading repository providers...\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/RepositoryConfiguration.tsx\",\n lineNumber: 205,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/RepositoryConfiguration.tsx\",\n lineNumber: 203,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/RepositoryConfiguration.tsx\",\n lineNumber: 202,\n columnNumber: 7\n }, this);\n }\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"form\", {\n onSubmit: handleSubmit,\n className: \"space-y-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-gray-50 rounded-lg p-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h3\", {\n className: \"text-lg font-medium text-gray-900 mb-4 flex items-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_ArrowPathIcon_CheckCircleIcon_CodeBracketIcon_EyeIcon_EyeSlashIcon_XCircleIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n className: \"h-6 w-6 text-bzzz-primary mr-2\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/RepositoryConfiguration.tsx\",\n lineNumber: 216,\n columnNumber: 11\n }, this),\n \"Repository Provider\"\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/RepositoryConfiguration.tsx\",\n lineNumber: 215,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid grid-cols-1 md:grid-cols-2 gap-4\",\n children: providers.map((provider)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `border-2 rounded-lg p-4 cursor-pointer transition-all ${config.provider === provider.name ? \"border-bzzz-primary bg-bzzz-primary bg-opacity-10\" : \"border-gray-200 hover:border-gray-300\"}`,\n onClick: ()=>handleProviderChange(provider.name),\n children: /*#__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: \"radio\",\n name: \"provider\",\n value: provider.name,\n checked: config.provider === provider.name,\n onChange: ()=>handleProviderChange(provider.name),\n className: \"h-4 w-4 text-bzzz-primary focus:ring-bzzz-primary border-gray-300\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/RepositoryConfiguration.tsx\",\n lineNumber: 232,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"ml-3\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"font-medium text-gray-900\",\n children: provider.displayName\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/RepositoryConfiguration.tsx\",\n lineNumber: 241,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm text-gray-600\",\n children: provider.description\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/RepositoryConfiguration.tsx\",\n lineNumber: 242,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/RepositoryConfiguration.tsx\",\n lineNumber: 240,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/RepositoryConfiguration.tsx\",\n lineNumber: 231,\n columnNumber: 15\n }, this)\n }, provider.name, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/RepositoryConfiguration.tsx\",\n lineNumber: 222,\n columnNumber: 13\n }, this))\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/RepositoryConfiguration.tsx\",\n lineNumber: 220,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/RepositoryConfiguration.tsx\",\n lineNumber: 214,\n columnNumber: 7\n }, this),\n config.provider && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-y-6\",\n children: [\n selectedProvider?.requiresBaseURL && /*#__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: \"label\",\n children: \"Base URL *\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/RepositoryConfiguration.tsx\",\n lineNumber: 256,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"url\",\n value: config.baseURL,\n onChange: (e)=>handleInputChange(\"baseURL\", e.target.value),\n placeholder: `e.g., ${selectedProvider.defaultBaseURL || \"https://git.example.com\"}`,\n className: \"input-field\",\n required: true\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/RepositoryConfiguration.tsx\",\n lineNumber: 259,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-sm text-gray-600 mt-1\",\n children: [\n \"The base URL for your \",\n selectedProvider.displayName,\n \" instance\"\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/RepositoryConfiguration.tsx\",\n lineNumber: 267,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/RepositoryConfiguration.tsx\",\n lineNumber: 255,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"label\", {\n className: \"label\",\n children: \"Access Token *\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/RepositoryConfiguration.tsx\",\n lineNumber: 275,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"relative\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: showToken ? \"text\" : \"password\",\n value: config.accessToken,\n onChange: (e)=>handleInputChange(\"accessToken\", e.target.value),\n placeholder: `Your ${selectedProvider?.displayName} access token`,\n className: \"input-field pr-10\",\n required: true\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/RepositoryConfiguration.tsx\",\n lineNumber: 279,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n type: \"button\",\n onClick: ()=>setShowToken(!showToken),\n className: \"absolute inset-y-0 right-0 pr-3 flex items-center\",\n children: showToken ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_ArrowPathIcon_CheckCircleIcon_CodeBracketIcon_EyeIcon_EyeSlashIcon_XCircleIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n className: \"h-5 w-5 text-gray-400\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/RepositoryConfiguration.tsx\",\n lineNumber: 293,\n columnNumber: 19\n }, this) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_ArrowPathIcon_CheckCircleIcon_CodeBracketIcon_EyeIcon_EyeSlashIcon_XCircleIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n className: \"h-5 w-5 text-gray-400\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/RepositoryConfiguration.tsx\",\n lineNumber: 295,\n columnNumber: 19\n }, this)\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/RepositoryConfiguration.tsx\",\n lineNumber: 287,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/RepositoryConfiguration.tsx\",\n lineNumber: 278,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-sm text-gray-600 mt-1\",\n children: selectedProvider?.name === \"github\" ? \"Generate a personal access token with repo and admin:repo_hook permissions\" : \"Generate an access token with repository read/write permissions\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/RepositoryConfiguration.tsx\",\n lineNumber: 299,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/RepositoryConfiguration.tsx\",\n lineNumber: 274,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"label\", {\n className: \"label\",\n children: \"Owner/Organization *\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/RepositoryConfiguration.tsx\",\n lineNumber: 309,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"text\",\n value: config.owner,\n onChange: (e)=>handleInputChange(\"owner\", e.target.value),\n placeholder: \"username or organization\",\n className: \"input-field\",\n required: true\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/RepositoryConfiguration.tsx\",\n lineNumber: 312,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-sm text-gray-600 mt-1\",\n children: \"The username or organization that owns the repository\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/RepositoryConfiguration.tsx\",\n lineNumber: 320,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/RepositoryConfiguration.tsx\",\n lineNumber: 308,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"label\", {\n className: \"label\",\n children: \"Repository Name *\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/RepositoryConfiguration.tsx\",\n lineNumber: 327,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"text\",\n value: config.repository,\n onChange: (e)=>handleInputChange(\"repository\", e.target.value),\n placeholder: \"repository-name\",\n className: \"input-field\",\n required: true\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/RepositoryConfiguration.tsx\",\n lineNumber: 330,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-sm text-gray-600 mt-1\",\n children: \"The name of the repository for task management\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/RepositoryConfiguration.tsx\",\n lineNumber: 338,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/RepositoryConfiguration.tsx\",\n lineNumber: 326,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-white border border-gray-200 rounded-lg p-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h4\", {\n className: \"text-md font-medium text-gray-900 mb-3\",\n children: \"Connection Test\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/RepositoryConfiguration.tsx\",\n lineNumber: 345,\n columnNumber: 13\n }, this),\n validation && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `flex items-center p-3 rounded-lg mb-4 ${validation.valid ? \"bg-green-50 border border-green-200\" : \"bg-red-50 border border-red-200\"}`,\n children: [\n validation.valid ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_ArrowPathIcon_CheckCircleIcon_CodeBracketIcon_EyeIcon_EyeSlashIcon_XCircleIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n className: \"h-5 w-5 text-green-600 mr-2\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/RepositoryConfiguration.tsx\",\n lineNumber: 354,\n columnNumber: 19\n }, this) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_ArrowPathIcon_CheckCircleIcon_CodeBracketIcon_EyeIcon_EyeSlashIcon_XCircleIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n className: \"h-5 w-5 text-red-600 mr-2\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/RepositoryConfiguration.tsx\",\n lineNumber: 356,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: `text-sm ${validation.valid ? \"text-green-800\" : \"text-red-800\"}`,\n children: validation.valid ? validation.message : validation.error\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/RepositoryConfiguration.tsx\",\n lineNumber: 358,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/RepositoryConfiguration.tsx\",\n lineNumber: 348,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n type: \"button\",\n onClick: validateRepository,\n disabled: !isFormValid || validating,\n className: \"btn-outline w-full sm:w-auto\",\n children: validating ? /*#__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)(_barrel_optimize_names_ArrowPathIcon_CheckCircleIcon_CodeBracketIcon_EyeIcon_EyeSlashIcon_XCircleIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n className: \"h-4 w-4 animate-spin mr-2\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/RepositoryConfiguration.tsx\",\n lineNumber: 374,\n columnNumber: 19\n }, this),\n \"Testing Connection...\"\n ]\n }, void 0, true) : \"Test Repository Connection\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/RepositoryConfiguration.tsx\",\n lineNumber: 366,\n columnNumber: 13\n }, this),\n !isFormValid && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-sm text-gray-600 mt-2\",\n children: \"Please fill in all required fields to test the connection\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/RepositoryConfiguration.tsx\",\n lineNumber: 383,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/RepositoryConfiguration.tsx\",\n lineNumber: 344,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/RepositoryConfiguration.tsx\",\n lineNumber: 252,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex justify-between pt-6 border-t border-gray-200\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: onBack && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n type: \"button\",\n onClick: onBack,\n className: \"btn-outline\",\n children: \"Back\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/RepositoryConfiguration.tsx\",\n lineNumber: 395,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/RepositoryConfiguration.tsx\",\n lineNumber: 393,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n type: \"submit\",\n disabled: !validation?.valid,\n className: \"btn-primary\",\n children: validation?.valid ? isCompleted ? \"Continue\" : \"Next: Network Configuration\" : \"Validate & Continue\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/RepositoryConfiguration.tsx\",\n lineNumber: 401,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/RepositoryConfiguration.tsx\",\n lineNumber: 392,\n columnNumber: 7\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/RepositoryConfiguration.tsx\",\n lineNumber: 212,\n columnNumber: 5\n }, this);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9hcHAvc2V0dXAvY29tcG9uZW50cy9SZXBvc2l0b3J5Q29uZmlndXJhdGlvbi50c3giLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0FBRTJDO0FBU1A7QUFnQ3JCLFNBQVNRLHdCQUF3QixFQUM5Q0MsVUFBVSxFQUNWQyxVQUFVLEVBQ1ZDLFVBQVUsRUFDVkMsTUFBTSxFQUNOQyxXQUFXLEVBQ2tCO0lBQzdCLE1BQU0sQ0FBQ0MsV0FBV0MsYUFBYSxHQUFHZiwrQ0FBUUEsQ0FBdUIsRUFBRTtJQUNuRSxNQUFNLENBQUNnQixRQUFRQyxVQUFVLEdBQUdqQiwrQ0FBUUEsQ0FBbUI7UUFDckRrQixVQUFVO1FBQ1ZDLFNBQVM7UUFDVEMsYUFBYTtRQUNiQyxPQUFPO1FBQ1BDLFlBQVk7SUFDZDtJQUNBLE1BQU0sQ0FBQ0MsWUFBWUMsY0FBYyxHQUFHeEIsK0NBQVFBLENBQTBCO0lBQ3RFLE1BQU0sQ0FBQ3lCLFlBQVlDLGNBQWMsR0FBRzFCLCtDQUFRQSxDQUFDO0lBQzdDLE1BQU0sQ0FBQzJCLFdBQVdDLGFBQWEsR0FBRzVCLCtDQUFRQSxDQUFDO0lBQzNDLE1BQU0sQ0FBQzZCLGtCQUFrQkMsb0JBQW9CLEdBQUc5QiwrQ0FBUUEsQ0FBQztJQUV6RCxvREFBb0Q7SUFDcERDLGdEQUFTQSxDQUFDO1FBQ1IsSUFBSVMsV0FBV1ksVUFBVSxFQUFFO1lBQ3pCTCxVQUFVO2dCQUFFLEdBQUdQLFdBQVdZLFVBQVU7WUFBQztRQUN2QztJQUNGLEdBQUc7UUFBQ1o7S0FBVztJQUVmLDJCQUEyQjtJQUMzQlQsZ0RBQVNBLENBQUM7UUFDUjhCO0lBQ0YsR0FBRyxFQUFFO0lBRUwsTUFBTUEsZ0JBQWdCO1FBQ3BCLElBQUk7WUFDRixNQUFNQyxXQUFXLE1BQU1DLE1BQU07WUFDN0IsSUFBSUQsU0FBU0UsRUFBRSxFQUFFO2dCQUNmLE1BQU1DLFNBQVMsTUFBTUgsU0FBU0ksSUFBSTtnQkFDbEMsTUFBTUMsZUFBZUYsT0FBT3JCLFNBQVMsSUFBSSxFQUFFO2dCQUUz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Ozs2REFFM0IsOERBQUNwRSx3S0FBV0E7d0NBQUNvRSxXQUFVOzs7Ozs7a0RBRXpCLDhEQUFDZTt3Q0FBS2YsV0FBVyxDQUFDLFFBQVEsRUFDeEJqRCxXQUFXb0MsS0FBSyxHQUFHLG1CQUFtQixlQUN2QyxDQUFDO2tEQUNDcEMsV0FBV29DLEtBQUssR0FBR3BDLFdBQVcwQyxPQUFPLEdBQUcxQyxXQUFXNEIsS0FBSzs7Ozs7Ozs7Ozs7OzBDQUsvRCw4REFBQ2tDO2dDQUNDUCxNQUFLO2dDQUNMRixTQUFTbEI7Z0NBQ1Q4QixVQUFVLENBQUNsQixlQUFlN0M7Z0NBQzFCK0MsV0FBVTswQ0FFVC9DLDJCQUNDOztzREFDRSw4REFBQ3BCLHdLQUFhQTs0Q0FBQ21FLFdBQVU7Ozs7Ozt3Q0FBOEI7O21EQUl6RDs7Ozs7OzRCQUlILENBQUNGLDZCQUNBLDhEQUFDckI7Z0NBQUV1QixXQUFVOzBDQUE2Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7OzBCQVNsRCw4REFBQ0Q7Z0JBQUlDLFdBQVU7O2tDQUNiLDhEQUFDRDtrQ0FDRTNELHdCQUNDLDhEQUFDeUU7NEJBQU9QLE1BQUs7NEJBQVNGLFNBQVNoRTs0QkFBUTRELFdBQVU7c0NBQWM7Ozs7Ozs7Ozs7O2tDQU1uRSw4REFBQ2E7d0JBQ0NQLE1BQUs7d0JBQ0xVLFVBQVUsQ0FBQ2pFLFlBQVlvQzt3QkFDdkJhLFdBQVU7a0NBRVRqRCxZQUFZb0MsUUFDUjlDLGNBQWMsYUFBYSxnQ0FDNUI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQU1kIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vYnp6ei1jb25maWctdWkvLi9hcHAvc2V0dXAvY29tcG9uZW50cy9SZXBvc2l0b3J5Q29uZmlndXJhdGlvbi50c3g/OGZiOCJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIGNsaWVudCdcblxuaW1wb3J0IHsgdXNlU3RhdGUsIHVzZUVmZmVjdCB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgXG4gIENvZGVCcmFja2V0SWNvbixcbiAgQ2hlY2tDaXJjbGVJY29uLFxuICBYQ2lyY2xlSWNvbixcbiAgQXJyb3dQYXRoSWNvbixcbiAgRXhjbGFtYXRpb25UcmlhbmdsZUljb24sXG4gIEV5ZUljb24sXG4gIEV5ZVNsYXNoSWNvblxufSBmcm9tICdAaGVyb2ljb25zL3JlYWN0LzI0L291dGxpbmUnXG5cbmludGVyZmFjZSBSZXBvc2l0b3J5UHJvdmlkZXIge1xuICBuYW1lOiBzdHJpbmdcbiAgZGlzcGxheU5hbWU6IHN0cmluZ1xuICBkZXNjcmlwdGlvbjogc3RyaW5nXG4gIHJlcXVpcmVzQmFzZVVSTDogYm9vbGVhblxuICBkZWZhdWx0QmFzZVVSTD86IHN0cmluZ1xufVxuXG5pbnRlcmZhY2UgUmVwb3NpdG9yeUNvbmZpZyB7XG4gIHByb3ZpZGVyOiBzdHJpbmdcbiAgYmFzZVVSTDogc3RyaW5nXG4gIGFjY2Vzc1Rva2VuOiBzdHJpbmdcbiAgb3duZXI6IHN0cmluZ1xuICByZXBvc2l0b3J5OiBzdHJpbmdcbn1cblxuaW50ZXJmYWNlIFZhbGlkYXRpb25SZXN1bHQge1xuICB2YWxpZDogYm9vbGVhblxuICBtZXNzYWdlPzogc3RyaW5nXG4gIGVycm9yPzogc3RyaW5nXG59XG5cbmludGVyZmFjZSBSZXBvc2l0b3J5Q29uZmlndXJhdGlvblByb3BzIHtcbiAgc3lzdGVtSW5mbzogYW55XG4gIGNvbmZpZ0RhdGE6IGFueVxuICBvbkNvbXBsZXRlOiAoZGF0YTogYW55KSA9PiB2b2lkXG4gIG9uQmFjaz86ICgpID0+IHZvaWRcbiAgaXNDb21wbGV0ZWQ6IGJvb2xlYW5cbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gUmVwb3NpdG9yeUNvbmZpZ3VyYXRpb24oeyBcbiAgc3lzdGVtSW5mbywgXG4gIGNvbmZpZ0RhdGEsIFxuICBvbkNvbXBsZXRlLCBcbiAgb25CYWNrLCBcbiAgaXNDb21wbGV0ZWQgXG59OiBSZXBvc2l0b3J5Q29uZmlndXJhdGlvblByb3BzKSB7XG4gIGNvbnN0IFtwcm92aWRlcnMsIHNldFByb3ZpZGVyc10gPSB1c2VTdGF0ZTxSZXBvc2l0b3J5UHJvdmlkZXJbXT4oW10pXG4gIGNvbnN0IFtjb25maWcsIHNldENvbmZpZ10gPSB1c2VTdGF0ZTxSZXBvc2l0b3J5Q29uZmlnPih7XG4gICAgcHJvdmlkZXI6ICcnLFxuICAgIGJhc2VVUkw6ICcnLFxuICAgIGFjY2Vzc1Rva2VuOiAnJyxcbiAgICBvd25lcjogJycsXG4gICAgcmVwb3NpdG9yeTogJydcbiAgfSlcbiAgY29uc3QgW3ZhbGlkYXRpb24sIHNldFZhbGlkYXRpb25dID0gdXNlU3RhdGU8VmFsaWRhdGlvblJlc3VsdCB8IG51bGw+KG51bGwpXG4gIGNvbnN0IFt2YWxpZGF0aW5nLCBzZXRWYWxpZGF0aW5nXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbc2hvd1Rva2VuLCBzZXRTaG93VG9rZW5dID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtsb2FkaW5nUHJvdmlkZXJzLCBzZXRMb2FkaW5nUHJvdmlkZXJzXSA9IHVzZVN0YXRlKHRydWUpXG5cbiAgLy8gTG9hZCBleGlzdGluZyBjb25maWcgZnJvbSBjb25maWdEYXRhIGlmIGF2YWlsYWJsZVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChjb25maWdEYXRhLnJlcG9zaXRvcnkpIHtcbiAgICAgIHNldENvbmZpZyh7IC4uLmNvbmZpZ0RhdGEucmVwb3NpdG9yeSB9KVxuICAgIH1cbiAgfSwgW2NvbmZpZ0RhdGFdKVxuXG4gIC8vIExvYWQgc3VwcG9ydGVkIHByb3ZpZGVyc1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGxvYWRQcm92aWRlcnMoKVxuICB9LCBbXSlcblxuICBjb25zdCBsb2FkUHJvdmlkZXJzID0gYXN5bmMgKCkgPT4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKCcvYXBpL3NldHVwL3JlcG9zaXRvcnkvcHJvdmlkZXJzJylcbiAgICAgIGlmIChyZXNwb25zZS5vaykge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCByZXNwb25zZS5qc29uKClcbiAgICAgICAgY29uc3QgcHJvdmlkZXJMaXN0ID0gcmVzdWx0LnByb3ZpZGVycyB8fCBbXVxuICAgICAgICBcbiAgICAgICAgLy8gTWFwIHByb3ZpZGVyIG5hbWVzIHRvIGZ1bGwgcHJvdmlkZXIgb2JqZWN0c1xuICAgICAgICBjb25zdCBwcm92aWRlcnNEYXRhOiBSZXBvc2l0b3J5UHJvdmlkZXJbXSA9IHByb3ZpZGVyTGlzdC5tYXAoKG5hbWU6IHN0cmluZykgPT4ge1xuICAgICAgICAgIHN3aXRjaCAobmFtZS50b0xvd2VyQ2FzZSgpKSB7XG4gICAgICAgICAgICBjYXNlICdnaXRlYSc6XG4gICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgbmFtZTogJ2dpdGVhJyxcbiAgICAgICAgICAgICAgICBkaXNwbGF5TmFtZTogJ0dpdGVhJyxcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogJ1NlbGYtaG9zdGVkIEdpdCBzZXJ2aWNlIHdpdGggaXNzdWUgdHJhY2tpbmcnLFxuICAgICAgICAgICAgICAgIHJlcXVpcmVzQmFzZVVSTDogdHJ1ZSxcbiAgICAgICAgICAgICAgICBkZWZhdWx0QmFzZVVSTDogJ2h0dHA6Ly9naXRlYS5sb2NhbCdcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAnZ2l0aHViJzpcbiAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBuYW1lOiAnZ2l0aHViJyxcbiAgICAgICAgICAgICAgICBkaXNwbGF5TmFtZTogJ0dpdEh1YicsXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246ICdDbG91ZC1iYXNlZCBHaXQgcmVwb3NpdG9yeSBob3N0aW5nIHNlcnZpY2UnLFxuICAgICAgICAgICAgICAgIHJlcXVpcmVzQmFzZVVSTDogZmFsc2UsXG4gICAgICAgICAgICAgICAgZGVmYXVsdEJhc2VVUkw6ICdodHRwczovL2FwaS5naXRodWIuY29tJ1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIG5hbWU6IG5hbWUudG9Mb3dlckNhc2UoKSxcbiAgICAgICAgICAgICAgICBkaXNwbGF5TmFtZTogbmFtZSxcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogJ0dpdCByZXBvc2l0b3J5IHNlcnZpY2UnLFxuICAgICAgICAgICAgICAgIHJlcXVpcmVzQmFzZVVSTDogdHJ1ZVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgICBcbiAgICAgICAgc2V0UHJvdmlkZXJzKHByb3ZpZGVyc0RhdGEpXG4gICAgICAgIFxuICAgICAgICAvLyBTZXQgZGVmYXVsdCBwcm92aWRlciBpZiBub25lIHNlbGVjdGVkXG4gICAgICAgIGlmICghY29uZmlnLnByb3ZpZGVyICYmIHByb3ZpZGVyc0RhdGEubGVuZ3RoID4gMCkge1xuICAgICAgICAgIGNvbnN0IGRlZmF1bHRQcm92aWRlciA9IHByb3ZpZGVyc0RhdGEuZmluZChwID0+IHAubmFtZSA9PT0gJ2dpdGVhJykgfHwgcHJvdmlkZXJzRGF0YVswXVxuICAgICAgICAgIGhhbmRsZVByb3ZpZGVyQ2hhbmdlKGRlZmF1bHRQcm92aWRlci5uYW1lKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0ZhaWxlZCB0byBsb2FkIHByb3ZpZGVyczonLCBlcnJvcilcbiAgICB9IGZpbmFsbHkge1xuICAgICAgc2V0TG9hZGluZ1Byb3ZpZGVycyhmYWxzZSlcbiAgICB9XG4gIH1cblxuICBjb25zdCBoYW5kbGVQcm92aWRlckNoYW5nZSA9IChwcm92aWRlcjogc3RyaW5nKSA9PiB7XG4gICAgY29uc3QgcHJvdmlkZXJEYXRhID0gcHJvdmlkZXJzLmZpbmQocCA9PiBwLm5hbWUgPT09IHByb3ZpZGVyKVxuICAgIHNldENvbmZpZyhwcmV2ID0+ICh7XG4gICAgICAuLi5wcmV2LFxuICAgICAgcHJvdmlkZXIsXG4gICAgICBiYXNlVVJMOiBwcm92aWRlckRhdGE/LmRlZmF1bHRCYXNlVVJMIHx8IHByZXYuYmFzZVVSTFxuICAgIH0pKVxuICAgIHNldFZhbGlkYXRpb24obnVsbClcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZUlucHV0Q2hhbmdlID0gKGZpZWxkOiBrZXlvZiBSZXBvc2l0b3J5Q29uZmlnLCB2YWx1ZTogc3RyaW5nKSA9PiB7XG4gICAgc2V0Q29uZmlnKHByZXYgPT4gKHsgLi4ucHJldiwgW2ZpZWxkXTogdmFsdWUgfSkpXG4gICAgc2V0VmFsaWRhdGlvbihudWxsKVxuICB9XG5cbiAgY29uc3QgdmFsaWRhdGVSZXBvc2l0b3J5ID0gYXN5bmMgKCkgPT4ge1xuICAgIGlmICghY29uZmlnLnByb3ZpZGVyIHx8ICFjb25maWcuYWNjZXNzVG9rZW4gfHwgIWNvbmZpZy5vd25lciB8fCAhY29uZmlnLnJlcG9zaXRvcnkpIHtcbiAgICAgIHNldFZhbGlkYXRpb24oe1xuICAgICAgICB2YWxpZDogZmFsc2UsXG4gICAgICAgIGVycm9yOiAnUGxlYXNlIGZpbGwgaW4gYWxsIHJlcXVpcmVkIGZpZWxkcydcbiAgICAgIH0pXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBzZXRWYWxpZGF0aW5nKHRydWUpXG4gICAgc2V0VmFsaWRhdGlvbihudWxsKVxuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goJy9hcGkvc2V0dXAvcmVwb3NpdG9yeS92YWxpZGF0ZScsIHtcbiAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nXG4gICAgICAgIH0sXG4gICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KGNvbmZpZylcbiAgICAgIH0pXG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKVxuICAgICAgXG4gICAgICBpZiAocmVzcG9uc2Uub2sgJiYgcmVzdWx0LnZhbGlkKSB7XG4gICAgICAgIHNldFZhbGlkYXRpb24oe1xuICAgICAgICAgIHZhbGlkOiB0cnVlLFxuICAgICAgICAgIG1lc3NhZ2U6IHJlc3VsdC5tZXNzYWdlIHx8ICdSZXBvc2l0b3J5IGNvbm5lY3Rpb24gc3VjY2Vzc2Z1bCdcbiAgICAgICAgfSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNldFZhbGlkYXRpb24oe1xuICAgICAgICAgIHZhbGlkOiBmYWxzZSxcbiAgICAgICAgICBlcnJvcjogcmVzdWx0LmVycm9yIHx8ICdWYWxpZGF0aW9uIGZhaWxlZCdcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgc2V0VmFsaWRhdGlvbih7XG4gICAgICAgIHZhbGlkOiBmYWxzZSxcbiAgICAgICAgZXJyb3I6ICdOZXR3b3JrIGVycm9yOiBVbmFibGUgdG8gdmFsaWRhdGUgcmVwb3NpdG9yeSdcbiAgICAgIH0pXG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHNldFZhbGlkYXRpbmcoZmFsc2UpXG4gICAgfVxuICB9XG5cbiAgY29uc3QgaGFuZGxlU3VibWl0ID0gKGU6IFJlYWN0LkZvcm1FdmVudCkgPT4ge1xuICAgIGUucHJldmVudERlZmF1bHQoKVxuICAgIFxuICAgIGlmICh2YWxpZGF0aW9uPy52YWxpZCkge1xuICAgICAgb25Db21wbGV0ZSh7IHJlcG9zaXRvcnk6IGNvbmZpZyB9KVxuICAgIH0gZWxzZSB7XG4gICAgICB2YWxpZGF0ZVJlcG9zaXRvcnkoKVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHNlbGVjdGVkUHJvdmlkZXIgPSBwcm92aWRlcnMuZmluZChwID0+IHAubmFtZSA9PT0gY29uZmlnLnByb3ZpZGVyKVxuICBjb25zdCBpc0Zvcm1WYWxpZCA9IGNvbmZpZy5wcm92aWRlciAmJiBjb25maWcuYWNjZXNzVG9rZW4gJiYgY29uZmlnLm93bmVyICYmIGNvbmZpZy5yZXBvc2l0b3J5ICYmXG4gICAgKCFzZWxlY3RlZFByb3ZpZGVyPy5yZXF1aXJlc0Jhc2VVUkwgfHwgY29uZmlnLmJhc2VVUkwpXG5cbiAgaWYgKGxvYWRpbmdQcm92aWRlcnMpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBweS0xMlwiPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtY2VudGVyXCI+XG4gICAgICAgICAgPEFycm93UGF0aEljb24gY2xhc3NOYW1lPVwiaC04IHctOCB0ZXh0LWJ6enotcHJpbWFyeSBhbmltYXRlLXNwaW4gbXgtYXV0byBtYi00XCIgLz5cbiAgICAgICAgICA8cCBjbGFzc05hbWU9XCJ0ZXh0LWdyYXktNjAwXCI+TG9hZGluZyByZXBvc2l0b3J5IHByb3ZpZGVycy4uLjwvcD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICApXG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxmb3JtIG9uU3VibWl0PXtoYW5kbGVTdWJtaXR9IGNsYXNzTmFtZT1cInNwYWNlLXktNlwiPlxuICAgICAgey8qIFJlcG9zaXRvcnkgUHJvdmlkZXIgU2VsZWN0aW9uICovfVxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJiZy1ncmF5LTUwIHJvdW5kZWQtbGcgcC02XCI+XG4gICAgICAgIDxoMyBjbGFzc05hbWU9XCJ0ZXh0LWxnIGZvbnQtbWVkaXVtIHRleHQtZ3JheS05MDAgbWItNCBmbGV4IGl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgIDxDb2RlQnJhY2tldEljb24gY2xhc3NOYW1lPVwiaC02IHctNiB0ZXh0LWJ6enotcHJpbWFyeSBtci0yXCIgLz5cbiAgICAgICAgICBSZXBvc2l0b3J5IFByb3ZpZGVyXG4gICAgICAgIDwvaDM+XG4gICAgICAgIFxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImdyaWQgZ3JpZC1jb2xzLTEgbWQ6Z3JpZC1jb2xzLTIgZ2FwLTRcIj5cbiAgICAgICAgICB7cHJvdmlkZXJzLm1hcCgocHJvdmlkZXIpID0+IChcbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAga2V5PXtwcm92aWRlci5uYW1lfVxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2Bib3JkZXItMiByb3VuZGVkLWxnIHAtNCBjdXJzb3ItcG9pbnRlciB0cmFuc2l0aW9uLWFsbCAke1xuICAgICAgICAgICAgICAgIGNvbmZpZy5wcm92aWRlciA9PT0gcHJvdmlkZXIubmFtZVxuICAgICAgICAgICAgICAgICAgPyAnYm9yZGVyLWJ6enotcHJpbWFyeSBiZy1ienp6LXByaW1hcnkgYmctb3BhY2l0eS0xMCdcbiAgICAgICAgICAgICAgICAgIDogJ2JvcmRlci1ncmF5LTIwMCBob3Zlcjpib3JkZXItZ3JheS0zMDAnXG4gICAgICAgICAgICAgIH1gfVxuICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBoYW5kbGVQcm92aWRlckNoYW5nZShwcm92aWRlci5uYW1lKX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgdHlwZT1cInJhZGlvXCJcbiAgICAgICAgICAgICAgICAgIG5hbWU9XCJwcm92aWRlclwiXG4gICAgICAgICAgICAgICAgICB2YWx1ZT17cHJvdmlkZXIubmFtZX1cbiAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e2NvbmZpZy5wcm92aWRlciA9PT0gcHJvdmlkZXIubmFtZX1cbiAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoKSA9PiBoYW5kbGVQcm92aWRlckNoYW5nZShwcm92aWRlci5uYW1lKX1cbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImgtNCB3LTQgdGV4dC1ienp6LXByaW1hcnkgZm9jdXM6cmluZy1ienp6LXByaW1hcnkgYm9yZGVyLWdyYXktMzAwXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibWwtM1wiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmb250LW1lZGl1bSB0ZXh0LWdyYXktOTAwXCI+e3Byb3ZpZGVyLmRpc3BsYXlOYW1lfTwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LXNtIHRleHQtZ3JheS02MDBcIj57cHJvdmlkZXIuZGVzY3JpcHRpb259PC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIHsvKiBDb25maWd1cmF0aW9uIEZvcm0gKi99XG4gICAgICB7Y29uZmlnLnByb3ZpZGVyICYmIChcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJzcGFjZS15LTZcIj5cbiAgICAgICAgICB7LyogQmFzZSBVUkwgKGZvciBwcm92aWRlcnMgdGhhdCByZXF1aXJlIGl0KSAqL31cbiAgICAgICAgICB7c2VsZWN0ZWRQcm92aWRlcj8ucmVxdWlyZXNCYXNlVVJMICYmIChcbiAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgIDxsYWJlbCBjbGFzc05hbWU9XCJsYWJlbFwiPlxuICAgICAgICAgICAgICAgIEJhc2UgVVJMICpcbiAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgdHlwZT1cInVybFwiXG4gICAgICAgICAgICAgICAgdmFsdWU9e2NvbmZpZy5iYXNlVVJMfVxuICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gaGFuZGxlSW5wdXRDaGFuZ2UoJ2Jhc2VVUkwnLCBlLnRhcmdldC52YWx1ZSl9XG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9e2BlLmcuLCAke3NlbGVjdGVkUHJvdmlkZXIuZGVmYXVsdEJhc2VVUkwgfHwgJ2h0dHBzOi8vZ2l0LmV4YW1wbGUuY29tJ31gfVxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImlucHV0LWZpZWxkXCJcbiAgICAgICAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJ0ZXh0LXNtIHRleHQtZ3JheS02MDAgbXQtMVwiPlxuICAgICAgICAgICAgICAgIFRoZSBiYXNlIFVSTCBmb3IgeW91ciB7c2VsZWN0ZWRQcm92aWRlci5kaXNwbGF5TmFtZX0gaW5zdGFuY2VcbiAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgKX1cblxuICAgICAgICAgIHsvKiBBY2Nlc3MgVG9rZW4gKi99XG4gICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgIDxsYWJlbCBjbGFzc05hbWU9XCJsYWJlbFwiPlxuICAgICAgICAgICAgICBBY2Nlc3MgVG9rZW4gKlxuICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicmVsYXRpdmVcIj5cbiAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgdHlwZT17c2hvd1Rva2VuID8gJ3RleHQnIDogJ3Bhc3N3b3JkJ31cbiAgICAgICAgICAgICAgICB2YWx1ZT17Y29uZmlnLmFjY2Vzc1Rva2VufVxuICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gaGFuZGxlSW5wdXRDaGFuZ2UoJ2FjY2Vzc1Rva2VuJywgZS50YXJnZXQudmFsdWUpfVxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXtgWW91ciAke3NlbGVjdGVkUHJvdmlkZXI/LmRpc3BsYXlOYW1lfSBhY2Nlc3MgdG9rZW5gfVxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImlucHV0LWZpZWxkIHByLTEwXCJcbiAgICAgICAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gc2V0U2hvd1Rva2VuKCFzaG93VG9rZW4pfVxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImFic29sdXRlIGluc2V0LXktMCByaWdodC0wIHByLTMgZmxleCBpdGVtcy1jZW50ZXJcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3Nob3dUb2tlbiA/IChcbiAgICAgICAgICAgICAgICAgIDxFeWVTbGFzaEljb24gY2xhc3NOYW1lPVwiaC01IHctNSB0ZXh0LWdyYXktNDAwXCIgLz5cbiAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgPEV5ZUljb24gY2xhc3NOYW1lPVwiaC01IHctNSB0ZXh0LWdyYXktNDAwXCIgLz5cbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC1zbSB0ZXh0LWdyYXktNjAwIG10LTFcIj5cbiAgICAgICAgICAgICAge3NlbGVjdGVkUHJvdmlkZXI/Lm5hbWUgPT09ICdnaXRodWInIFxuICAgICAgICAgICAgICAgID8gJ0dlbmVyYXRlIGEgcGVyc29uYWwgYWNjZXNzIHRva2VuIHdpdGggcmVwbyBhbmQgYWRtaW46cmVwb19ob29rIHBlcm1pc3Npb25zJ1xuICAgICAgICAgICAgICAgIDogJ0dlbmVyYXRlIGFuIGFjY2VzcyB0b2tlbiB3aXRoIHJlcG9zaXRvcnkgcmVhZC93cml0ZSBwZXJtaXNzaW9ucydcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgey8qIE93bmVyL09yZ2FuaXphdGlvbiAqL31cbiAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzTmFtZT1cImxhYmVsXCI+XG4gICAgICAgICAgICAgIE93bmVyL09yZ2FuaXphdGlvbiAqXG4gICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgdmFsdWU9e2NvbmZpZy5vd25lcn1cbiAgICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiBoYW5kbGVJbnB1dENoYW5nZSgnb3duZXInLCBlLnRhcmdldC52YWx1ZSl9XG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwidXNlcm5hbWUgb3Igb3JnYW5pemF0aW9uXCJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiaW5wdXQtZmllbGRcIlxuICAgICAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQtc20gdGV4dC1ncmF5LTYwMCBtdC0xXCI+XG4gICAgICAgICAgICAgIFRoZSB1c2VybmFtZSBvciBvcmdhbml6YXRpb24gdGhhdCBvd25zIHRoZSByZXBvc2l0b3J5XG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICB7LyogUmVwb3NpdG9yeSBOYW1lICovfVxuICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICA8bGFiZWwgY2xhc3NOYW1lPVwibGFiZWxcIj5cbiAgICAgICAgICAgICAgUmVwb3NpdG9yeSBOYW1lICpcbiAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICB2YWx1ZT17Y29uZmlnLnJlcG9zaXRvcnl9XG4gICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gaGFuZGxlSW5wdXRDaGFuZ2UoJ3JlcG9zaXRvcnknLCBlLnRhcmdldC52YWx1ZSl9XG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwicmVwb3NpdG9yeS1uYW1lXCJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiaW5wdXQtZmllbGRcIlxuICAgICAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQtc20gdGV4dC1ncmF5LTYwMCBtdC0xXCI+XG4gICAgICAgICAgICAgIFRoZSBuYW1lIG9mIHRoZSByZXBvc2l0b3J5IGZvciB0YXNrIG1hbmFnZW1lbnRcbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIHsvKiBWYWxpZGF0aW9uIFNlY3Rpb24gKi99XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJiZy13aGl0ZSBib3JkZXIgYm9yZGVyLWdyYXktMjAwIHJvdW5kZWQtbGcgcC02XCI+XG4gICAgICAgICAgICA8aDQgY2xhc3NOYW1lPVwidGV4dC1tZCBmb250LW1lZGl1bSB0ZXh0LWdyYXktOTAwIG1iLTNcIj5Db25uZWN0aW9uIFRlc3Q8L2g0PlxuICAgICAgICAgICAgXG4gICAgICAgICAgICB7dmFsaWRhdGlvbiAmJiAoXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtgZmxleCBpdGVtcy1jZW50ZXIgcC0zIHJvdW5kZWQtbGcgbWItNCAke1xuICAgICAgICAgICAgICAgIHZhbGlkYXRpb24udmFsaWQgXG4gICAgICAgICAgICAgICAgICA/ICdiZy1ncmVlbi01MCBib3JkZXIgYm9yZGVyLWdyZWVuLTIwMCcgXG4gICAgICAgICAgICAgICAgICA6ICdiZy1yZWQtNTAgYm9yZGVyIGJvcmRlci1yZWQtMjAwJ1xuICAgICAgICAgICAgICB9YH0+XG4gICAgICAgICAgICAgICAge3ZhbGlkYXRpb24udmFsaWQgPyAoXG4gICAgICAgICAgICAgICAgICA8Q2hlY2tDaXJjbGVJY29uIGNsYXNzTmFtZT1cImgtNSB3LTUgdGV4dC1ncmVlbi02MDAgbXItMlwiIC8+XG4gICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgIDxYQ2lyY2xlSWNvbiBjbGFzc05hbWU9XCJoLTUgdy01IHRleHQtcmVkLTYwMCBtci0yXCIgLz5cbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17YHRleHQtc20gJHtcbiAgICAgICAgICAgICAgICAgIHZhbGlkYXRpb24udmFsaWQgPyAndGV4dC1ncmVlbi04MDAnIDogJ3RleHQtcmVkLTgwMCdcbiAgICAgICAgICAgICAgICB9YH0+XG4gICAgICAgICAgICAgICAgICB7dmFsaWRhdGlvbi52YWxpZCA/IHZhbGlkYXRpb24ubWVzc2FnZSA6IHZhbGlkYXRpb24uZXJyb3J9XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIG9uQ2xpY2s9e3ZhbGlkYXRlUmVwb3NpdG9yeX1cbiAgICAgICAgICAgICAgZGlzYWJsZWQ9eyFpc0Zvcm1WYWxpZCB8fCB2YWxpZGF0aW5nfVxuICAgICAgICAgICAgICBjbGFzc05hbWU9XCJidG4tb3V0bGluZSB3LWZ1bGwgc206dy1hdXRvXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3ZhbGlkYXRpbmcgPyAoXG4gICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgIDxBcnJvd1BhdGhJY29uIGNsYXNzTmFtZT1cImgtNCB3LTQgYW5pbWF0ZS1zcGluIG1yLTJcIiAvPlxuICAgICAgICAgICAgICAgICAgVGVzdGluZyBDb25uZWN0aW9uLi4uXG4gICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgJ1Rlc3QgUmVwb3NpdG9yeSBDb25uZWN0aW9uJ1xuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgICAgIHshaXNGb3JtVmFsaWQgJiYgKFxuICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJ0ZXh0LXNtIHRleHQtZ3JheS02MDAgbXQtMlwiPlxuICAgICAgICAgICAgICAgIFBsZWFzZSBmaWxsIGluIGFsbCByZXF1aXJlZCBmaWVsZHMgdG8gdGVzdCB0aGUgY29ubmVjdGlvblxuICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICApfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICl9XG5cbiAgICAgIHsvKiBBY3Rpb24gQnV0dG9ucyAqL31cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBqdXN0aWZ5LWJldHdlZW4gcHQtNiBib3JkZXItdCBib3JkZXItZ3JheS0yMDBcIj5cbiAgICAgICAgPGRpdj5cbiAgICAgICAgICB7b25CYWNrICYmIChcbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG9uQ2xpY2s9e29uQmFja30gY2xhc3NOYW1lPVwiYnRuLW91dGxpbmVcIj5cbiAgICAgICAgICAgICAgQmFja1xuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIFxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgICAgICAgZGlzYWJsZWQ9eyF2YWxpZGF0aW9uPy52YWxpZH1cbiAgICAgICAgICBjbGFzc05hbWU9XCJidG4tcHJpbWFyeVwiXG4gICAgICAgID5cbiAgICAgICAgICB7dmFsaWRhdGlvbj8udmFsaWQgXG4gICAgICAgICAgICA/IChpc0NvbXBsZXRlZCA/ICdDb250aW51ZScgOiAnTmV4dDogTmV0d29yayBDb25maWd1cmF0aW9uJylcbiAgICAgICAgICAgIDogJ1ZhbGlkYXRlICYgQ29udGludWUnXG4gICAgICAgICAgfVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZm9ybT5cbiAgKVxufSJdLCJuYW1lcyI6WyJ1c2VTdGF0ZSIsInVzZUVmZmVjdCIsIkNvZGVCcmFja2V0SWNvbiIsIkNoZWNrQ2lyY2xlSWNvbiIsIlhDaXJjbGVJY29uIiwiQXJyb3dQYXRoSWNvbiIsIkV5ZUljb24iLCJFeWVTbGFzaEljb24iLCJSZXBvc2l0b3J5Q29uZmlndXJhdGlvbiIsInN5c3RlbUluZm8iLCJjb25maWdEYXRhIiwib25Db21wbGV0ZSIsIm9uQmFjayIsImlzQ29tcGxldGVkIiwicHJvdmlkZXJzIiwic2V0UHJvdmlkZXJzIiwiY29uZmlnIiwic2V0Q29uZmlnIiwicHJvdmlkZXIiLCJiYXNlVVJMIiwiYWNjZXNzVG9rZW4iLCJvd25lciIsInJlcG9zaXRvcnkiLCJ2YWxpZGF0aW9uIiwic2V0VmFsaWRhdGlvbiIsInZhbGlkYXRpbmciLCJzZXRWYWxpZGF0aW5nIiwic2hvd1Rva2VuIiwic2V0U2hvd1Rva2VuIiwibG9hZGluZ1Byb3ZpZGVycyIsInNldExvYWRpbmdQcm92aWRlcnMiLCJsb2FkUHJvdmlkZXJzIiwicmVzcG9uc2UiLCJmZXRjaCIsIm9rIiwicmVzdWx0IiwianNvbiIsInByb3ZpZGVyTGlzdCIsInByb3ZpZGVyc0RhdGEiLCJtYXAiLCJuYW1lIiwidG9Mb3dlckNhc2UiLCJkaXNwbGF5TmFtZSIsImRlc2NyaXB0aW9uIiwicmVxdWlyZXNCYXNlVVJMIiwiZGVmYXVsdEJhc2VVUkwiLCJsZW5ndGgiLCJkZWZhdWx0UHJvdmlkZXIiLCJmaW5kIiwicCIsImhhbmRsZVByb3ZpZGVyQ2hhbmdlIiwiZXJyb3IiLCJjb25zb2xlIiwicHJvdmlkZXJEYXRhIiwicHJldiIsImhhbmRsZUlucHV0Q2hhbmdlIiwiZmllbGQiLCJ2YWx1ZSIsInZhbGlkYXRlUmVwb3NpdG9yeSIsInZhbGlkIiwibWV0aG9kIiwiaGVhZGVycyIsImJvZHkiLCJKU09OIiwic3RyaW5naWZ5IiwibWVzc2FnZSIsImhhbmRsZVN1Ym1pdCIsImUiLCJwcmV2ZW50RGVmYXVsdCIsInNlbGVjdGVkUHJvdmlkZXIiLCJpc0Zvcm1WYWxpZCIsImRpdiIsImNsYXNzTmFtZSIsImZvcm0iLCJvblN1Ym1pdCIsImgzIiwib25DbGljayIsImlucHV0IiwidHlwZSIsImNoZWNrZWQiLCJvbkNoYW5nZSIsImxhYmVsIiwidGFyZ2V0IiwicGxhY2Vob2xkZXIiLCJyZXF1aXJlZCIsImJ1dHRvbiIsImg0Iiwic3BhbiIsImRpc2FibGVkIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./app/setup/components/RepositoryConfiguration.tsx\n");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "(ssr)/./app/setup/components/SecuritySetup.tsx":
|
|
/*!************************************************!*\
|
|
!*** ./app/setup/components/SecuritySetup.tsx ***!
|
|
\************************************************/
|
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
|
|
"use strict";
|
|
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ SecuritySetup)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react-jsx-dev-runtime.js\");\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _barrel_optimize_names_CheckCircleIcon_DocumentDuplicateIcon_ExclamationTriangleIcon_EyeIcon_EyeSlashIcon_KeyIcon_LockClosedIcon_ServerIcon_ShieldCheckIcon_XCircleIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! __barrel_optimize__?names=CheckCircleIcon,DocumentDuplicateIcon,ExclamationTriangleIcon,EyeIcon,EyeSlashIcon,KeyIcon,LockClosedIcon,ServerIcon,ShieldCheckIcon,XCircleIcon!=!@heroicons/react/24/outline */ \"(ssr)/./node_modules/@heroicons/react/24/outline/esm/KeyIcon.js\");\n/* harmony import */ var _barrel_optimize_names_CheckCircleIcon_DocumentDuplicateIcon_ExclamationTriangleIcon_EyeIcon_EyeSlashIcon_KeyIcon_LockClosedIcon_ServerIcon_ShieldCheckIcon_XCircleIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! __barrel_optimize__?names=CheckCircleIcon,DocumentDuplicateIcon,ExclamationTriangleIcon,EyeIcon,EyeSlashIcon,KeyIcon,LockClosedIcon,ServerIcon,ShieldCheckIcon,XCircleIcon!=!@heroicons/react/24/outline */ \"(ssr)/./node_modules/@heroicons/react/24/outline/esm/CheckCircleIcon.js\");\n/* harmony import */ var _barrel_optimize_names_CheckCircleIcon_DocumentDuplicateIcon_ExclamationTriangleIcon_EyeIcon_EyeSlashIcon_KeyIcon_LockClosedIcon_ServerIcon_ShieldCheckIcon_XCircleIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! __barrel_optimize__?names=CheckCircleIcon,DocumentDuplicateIcon,ExclamationTriangleIcon,EyeIcon,EyeSlashIcon,KeyIcon,LockClosedIcon,ServerIcon,ShieldCheckIcon,XCircleIcon!=!@heroicons/react/24/outline */ \"(ssr)/./node_modules/@heroicons/react/24/outline/esm/XCircleIcon.js\");\n/* harmony import */ var _barrel_optimize_names_CheckCircleIcon_DocumentDuplicateIcon_ExclamationTriangleIcon_EyeIcon_EyeSlashIcon_KeyIcon_LockClosedIcon_ServerIcon_ShieldCheckIcon_XCircleIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! __barrel_optimize__?names=CheckCircleIcon,DocumentDuplicateIcon,ExclamationTriangleIcon,EyeIcon,EyeSlashIcon,KeyIcon,LockClosedIcon,ServerIcon,ShieldCheckIcon,XCircleIcon!=!@heroicons/react/24/outline */ \"(ssr)/./node_modules/@heroicons/react/24/outline/esm/DocumentDuplicateIcon.js\");\n/* harmony import */ var _barrel_optimize_names_CheckCircleIcon_DocumentDuplicateIcon_ExclamationTriangleIcon_EyeIcon_EyeSlashIcon_KeyIcon_LockClosedIcon_ServerIcon_ShieldCheckIcon_XCircleIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! __barrel_optimize__?names=CheckCircleIcon,DocumentDuplicateIcon,ExclamationTriangleIcon,EyeIcon,EyeSlashIcon,KeyIcon,LockClosedIcon,ServerIcon,ShieldCheckIcon,XCircleIcon!=!@heroicons/react/24/outline */ \"(ssr)/./node_modules/@heroicons/react/24/outline/esm/EyeSlashIcon.js\");\n/* harmony import */ var _barrel_optimize_names_CheckCircleIcon_DocumentDuplicateIcon_ExclamationTriangleIcon_EyeIcon_EyeSlashIcon_KeyIcon_LockClosedIcon_ServerIcon_ShieldCheckIcon_XCircleIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! __barrel_optimize__?names=CheckCircleIcon,DocumentDuplicateIcon,ExclamationTriangleIcon,EyeIcon,EyeSlashIcon,KeyIcon,LockClosedIcon,ServerIcon,ShieldCheckIcon,XCircleIcon!=!@heroicons/react/24/outline */ \"(ssr)/./node_modules/@heroicons/react/24/outline/esm/EyeIcon.js\");\n/* harmony import */ var _barrel_optimize_names_CheckCircleIcon_DocumentDuplicateIcon_ExclamationTriangleIcon_EyeIcon_EyeSlashIcon_KeyIcon_LockClosedIcon_ServerIcon_ShieldCheckIcon_XCircleIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! __barrel_optimize__?names=CheckCircleIcon,DocumentDuplicateIcon,ExclamationTriangleIcon,EyeIcon,EyeSlashIcon,KeyIcon,LockClosedIcon,ServerIcon,ShieldCheckIcon,XCircleIcon!=!@heroicons/react/24/outline */ \"(ssr)/./node_modules/@heroicons/react/24/outline/esm/ExclamationTriangleIcon.js\");\n/* harmony import */ var _barrel_optimize_names_CheckCircleIcon_DocumentDuplicateIcon_ExclamationTriangleIcon_EyeIcon_EyeSlashIcon_KeyIcon_LockClosedIcon_ServerIcon_ShieldCheckIcon_XCircleIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! __barrel_optimize__?names=CheckCircleIcon,DocumentDuplicateIcon,ExclamationTriangleIcon,EyeIcon,EyeSlashIcon,KeyIcon,LockClosedIcon,ServerIcon,ShieldCheckIcon,XCircleIcon!=!@heroicons/react/24/outline */ \"(ssr)/./node_modules/@heroicons/react/24/outline/esm/LockClosedIcon.js\");\n/* harmony import */ var _barrel_optimize_names_CheckCircleIcon_DocumentDuplicateIcon_ExclamationTriangleIcon_EyeIcon_EyeSlashIcon_KeyIcon_LockClosedIcon_ServerIcon_ShieldCheckIcon_XCircleIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! __barrel_optimize__?names=CheckCircleIcon,DocumentDuplicateIcon,ExclamationTriangleIcon,EyeIcon,EyeSlashIcon,KeyIcon,LockClosedIcon,ServerIcon,ShieldCheckIcon,XCircleIcon!=!@heroicons/react/24/outline */ \"(ssr)/./node_modules/@heroicons/react/24/outline/esm/ShieldCheckIcon.js\");\n/* harmony import */ var _barrel_optimize_names_CheckCircleIcon_DocumentDuplicateIcon_ExclamationTriangleIcon_EyeIcon_EyeSlashIcon_KeyIcon_LockClosedIcon_ServerIcon_ShieldCheckIcon_XCircleIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! __barrel_optimize__?names=CheckCircleIcon,DocumentDuplicateIcon,ExclamationTriangleIcon,EyeIcon,EyeSlashIcon,KeyIcon,LockClosedIcon,ServerIcon,ShieldCheckIcon,XCircleIcon!=!@heroicons/react/24/outline */ \"(ssr)/./node_modules/@heroicons/react/24/outline/esm/ServerIcon.js\");\n/* __next_internal_client_entry_do_not_use__ default auto */ \n\n\nfunction SecuritySetup({ systemInfo, configData, onComplete, onBack, isCompleted }) {\n console.log(\"SecuritySetup: Component rendered with configData:\", configData);\n const [config, setConfig] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)({\n sshKeyType: \"generate\",\n sshPublicKey: \"\",\n sshPrivateKey: \"\",\n sshUsername: \"ubuntu\",\n sshPassword: \"\",\n sshPort: 22,\n enableTLS: true,\n tlsCertType: \"self-signed\",\n tlsCertPath: \"\",\n tlsKeyPath: \"\",\n authMethod: \"token\",\n clusterSecret: \"\",\n accessPolicy: \"restricted\",\n enableFirewall: true,\n allowedPorts: [\n \"22\",\n \"8080\",\n \"8090\",\n \"9100\",\n \"3000\"\n ],\n trustedIPs: [],\n ...configData?.security // Load saved security config if exists\n });\n const [showPrivateKey, setShowPrivateKey] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n const [showClusterSecret, setShowClusterSecret] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n const [showSSHPassword, setShowSSHPassword] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n const [generating, setGenerating] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n const [validation, setValidation] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)({});\n const [portsInitialized, setPortsInitialized] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n // Generate cluster secret on mount if not exists\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{\n if (!config.clusterSecret) {\n generateClusterSecret();\n }\n }, []);\n // Update firewall ports based on network configuration from previous step\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{\n console.log(\"SecuritySetup: configData changed\", {\n hasNetwork: !!configData?.network,\n portsInitialized,\n hasSavedSecurity: !!configData?.security?.allowedPorts,\n networkConfig: configData?.network\n });\n // If we have network config and haven't initialized ports yet, AND we don't have saved security config\n if (configData?.network && !portsInitialized && !configData?.security?.allowedPorts) {\n const networkConfig = configData.network;\n const networkPorts = [\n networkConfig.bzzzPort?.toString(),\n networkConfig.mcpPort?.toString(),\n networkConfig.webUIPort?.toString(),\n networkConfig.p2pPort?.toString()\n ].filter((port)=>port && port !== \"undefined\");\n console.log(\"SecuritySetup: Auto-populating ports\", {\n networkPorts,\n networkConfig\n });\n // Include standard ports plus network configuration ports\n const standardPorts = [\n \"22\",\n \"8090\"\n ] // SSH and setup interface\n ;\n const allPorts = [\n ...new Set([\n ...standardPorts,\n ...networkPorts\n ])\n ];\n console.log(\"SecuritySetup: Setting allowed ports to\", allPorts);\n setConfig((prev)=>({\n ...prev,\n allowedPorts: allPorts\n }));\n setPortsInitialized(true);\n }\n }, [\n configData,\n portsInitialized\n ]);\n const generateClusterSecret = ()=>{\n const secret = Array.from(crypto.getRandomValues(new Uint8Array(32))).map((b)=>b.toString(16).padStart(2, \"0\")).join(\"\");\n setConfig((prev)=>({\n ...prev,\n clusterSecret: secret\n }));\n };\n const generateSSHKeys = async ()=>{\n setGenerating(true);\n try {\n // In a real implementation, this would call the backend to generate SSH keys\n // For now, simulate the process\n await new Promise((resolve)=>setTimeout(resolve, 2000));\n // Mock generated keys (in real implementation, these would come from backend)\n const mockPublicKey = `ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC... chorus@${systemInfo?.network?.hostname || \"localhost\"}`;\n const mockPrivateKey = `-----BEGIN OPENSSH PRIVATE KEY-----\nb3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAFwwAAAAd...\n-----END OPENSSH PRIVATE KEY-----`;\n setConfig((prev)=>({\n ...prev,\n sshPublicKey: mockPublicKey,\n sshPrivateKey: mockPrivateKey\n }));\n setValidation((prev)=>({\n ...prev,\n sshKeys: true\n }));\n } catch (error) {\n console.error(\"Failed to generate SSH keys:\", error);\n setValidation((prev)=>({\n ...prev,\n sshKeys: false\n }));\n } finally{\n setGenerating(false);\n }\n };\n const copyToClipboard = async (text)=>{\n try {\n await navigator.clipboard.writeText(text);\n } catch (error) {\n console.error(\"Failed to copy to clipboard:\", error);\n }\n };\n const handleSubmit = (e)=>{\n e.preventDefault();\n // Validate required fields\n const newValidation = {};\n if (config.sshKeyType === \"generate\" && !config.sshPublicKey) {\n newValidation.sshKeys = false;\n } else if (config.sshKeyType === \"existing\" && !config.sshPublicKey) {\n newValidation.sshKeys = false;\n } else {\n newValidation.sshKeys = true;\n }\n if (config.enableTLS && config.tlsCertType === \"existing\" && (!config.tlsCertPath || !config.tlsKeyPath)) {\n newValidation.tlsCert = false;\n } else {\n newValidation.tlsCert = true;\n }\n if (!config.clusterSecret) {\n newValidation.clusterSecret = false;\n } else {\n newValidation.clusterSecret = true;\n }\n if (config.sshKeyType === \"manual\" && (!config.sshUsername || !config.sshPassword)) {\n newValidation.sshCredentials = false;\n } else {\n newValidation.sshCredentials = true;\n }\n setValidation(newValidation);\n // Check if all validations pass\n const isValid = Object.values(newValidation).every((v)=>v);\n if (isValid) {\n onComplete({\n security: config\n });\n }\n };\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"form\", {\n onSubmit: handleSubmit,\n className: \"space-y-8\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"card\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center mb-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_CheckCircleIcon_DocumentDuplicateIcon_ExclamationTriangleIcon_EyeIcon_EyeSlashIcon_KeyIcon_LockClosedIcon_ServerIcon_ShieldCheckIcon_XCircleIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n className: \"h-6 w-6 text-bzzz-primary mr-2\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 209,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h3\", {\n className: \"text-lg font-medium text-gray-900\",\n children: \"SSH Key Management\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 210,\n columnNumber: 11\n }, this),\n validation.sshKeys === true && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_CheckCircleIcon_DocumentDuplicateIcon_ExclamationTriangleIcon_EyeIcon_EyeSlashIcon_KeyIcon_LockClosedIcon_ServerIcon_ShieldCheckIcon_XCircleIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n className: \"h-5 w-5 text-green-500 ml-2\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 211,\n columnNumber: 43\n }, this),\n validation.sshKeys === false && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_CheckCircleIcon_DocumentDuplicateIcon_ExclamationTriangleIcon_EyeIcon_EyeSlashIcon_KeyIcon_LockClosedIcon_ServerIcon_ShieldCheckIcon_XCircleIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n className: \"h-5 w-5 text-red-500 ml-2\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 212,\n columnNumber: 44\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 208,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-y-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"label\", {\n className: \"block text-sm font-medium text-gray-700 mb-2\",\n children: \"SSH Key Type\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 217,\n columnNumber: 13\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)(\"label\", {\n className: \"flex items-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"radio\",\n value: \"generate\",\n checked: config.sshKeyType === \"generate\",\n onChange: (e)=>setConfig((prev)=>({\n ...prev,\n sshKeyType: e.target.value\n })),\n className: \"mr-2\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 220,\n columnNumber: 17\n }, this),\n \"Generate new SSH key pair\"\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 219,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"label\", {\n className: \"flex items-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"radio\",\n value: \"existing\",\n checked: config.sshKeyType === \"existing\",\n onChange: (e)=>setConfig((prev)=>({\n ...prev,\n sshKeyType: e.target.value\n })),\n className: \"mr-2\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 230,\n columnNumber: 17\n }, this),\n \"Use existing SSH key\"\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 229,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"label\", {\n className: \"flex items-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"radio\",\n value: \"manual\",\n checked: config.sshKeyType === \"manual\",\n onChange: (e)=>setConfig((prev)=>({\n ...prev,\n sshKeyType: e.target.value\n })),\n className: \"mr-2\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 240,\n columnNumber: 17\n }, this),\n \"Configure manually with SSH username/password\"\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 239,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 218,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 216,\n columnNumber: 11\n }, this),\n config.sshKeyType === \"generate\" && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-y-4\",\n children: !config.sshPublicKey ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n type: \"button\",\n onClick: generateSSHKeys,\n disabled: generating,\n className: \"btn-primary\",\n children: generating ? \"Generating Keys...\" : \"Generate SSH Key Pair\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 255,\n columnNumber: 17\n }, this) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-y-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"label\", {\n className: \"block text-sm font-medium text-gray-700 mb-2\",\n children: \"Public Key\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 266,\n columnNumber: 21\n }, this),\n /*#__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)(\"textarea\", {\n value: config.sshPublicKey,\n readOnly: true,\n className: \"w-full p-3 border border-gray-300 rounded-lg bg-gray-50 font-mono text-sm\",\n rows: 3\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 268,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n type: \"button\",\n onClick: ()=>copyToClipboard(config.sshPublicKey),\n className: \"absolute top-2 right-2 p-1 text-gray-500 hover:text-gray-700\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_CheckCircleIcon_DocumentDuplicateIcon_ExclamationTriangleIcon_EyeIcon_EyeSlashIcon_KeyIcon_LockClosedIcon_ServerIcon_ShieldCheckIcon_XCircleIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n className: \"h-4 w-4\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 279,\n columnNumber: 25\n }, this)\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 274,\n columnNumber: 23\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 267,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 265,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"label\", {\n className: \"block text-sm font-medium text-gray-700 mb-2\",\n children: \"Private Key\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 285,\n columnNumber: 21\n }, this),\n /*#__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)(\"textarea\", {\n value: showPrivateKey ? config.sshPrivateKey : \"••••••••••••••••••••••••••••••••\",\n readOnly: true,\n className: \"w-full p-3 border border-gray-300 rounded-lg bg-gray-50 font-mono text-sm\",\n rows: 6\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 287,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute top-2 right-2 flex space-x-1\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n type: \"button\",\n onClick: ()=>setShowPrivateKey(!showPrivateKey),\n className: \"p-1 text-gray-500 hover:text-gray-700\",\n children: showPrivateKey ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_CheckCircleIcon_DocumentDuplicateIcon_ExclamationTriangleIcon_EyeIcon_EyeSlashIcon_KeyIcon_LockClosedIcon_ServerIcon_ShieldCheckIcon_XCircleIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n className: \"h-4 w-4\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 299,\n columnNumber: 45\n }, this) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_CheckCircleIcon_DocumentDuplicateIcon_ExclamationTriangleIcon_EyeIcon_EyeSlashIcon_KeyIcon_LockClosedIcon_ServerIcon_ShieldCheckIcon_XCircleIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n className: \"h-4 w-4\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 299,\n columnNumber: 84\n }, this)\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 294,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n type: \"button\",\n onClick: ()=>copyToClipboard(config.sshPrivateKey),\n className: \"p-1 text-gray-500 hover:text-gray-700\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_CheckCircleIcon_DocumentDuplicateIcon_ExclamationTriangleIcon_EyeIcon_EyeSlashIcon_KeyIcon_LockClosedIcon_ServerIcon_ShieldCheckIcon_XCircleIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n className: \"h-4 w-4\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 306,\n columnNumber: 27\n }, this)\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 301,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 293,\n columnNumber: 23\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 286,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-sm text-yellow-600 mt-1\",\n children: \"⚠️ Store this private key securely. It cannot be recovered.\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 310,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 284,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 264,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 253,\n columnNumber: 13\n }, this),\n config.sshKeyType === \"existing\" && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"label\", {\n className: \"block text-sm font-medium text-gray-700 mb-2\",\n children: \"SSH Public Key\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 319,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"textarea\", {\n value: config.sshPublicKey,\n onChange: (e)=>setConfig((prev)=>({\n ...prev,\n sshPublicKey: e.target.value\n })),\n placeholder: \"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC...\",\n className: \"w-full p-3 border border-gray-300 rounded-lg font-mono text-sm\",\n rows: 3\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 320,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 318,\n columnNumber: 13\n }, this),\n config.sshKeyType === \"manual\" && /*#__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: \"bg-yellow-50 border border-yellow-200 rounded-lg p-4\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-start\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-shrink-0\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_CheckCircleIcon_DocumentDuplicateIcon_ExclamationTriangleIcon_EyeIcon_EyeSlashIcon_KeyIcon_LockClosedIcon_ServerIcon_ShieldCheckIcon_XCircleIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n className: \"h-5 w-5 text-yellow-600 mt-0.5\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 335,\n columnNumber: 21\n }, this)\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 334,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"ml-3\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h4\", {\n className: \"text-sm font-medium text-yellow-800\",\n children: \"Manual SSH Configuration\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 338,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-sm text-yellow-700 mt-1\",\n children: [\n \"Provide SSH credentials for cluster machines. SSH keys will be automatically generated and deployed using these credentials.\",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"strong\", {\n children: \" Passwords are only used during setup and are not stored.\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 341,\n columnNumber: 23\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 339,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 337,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 333,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 332,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid grid-cols-1 md:grid-cols-2 gap-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"label\", {\n className: \"block text-sm font-medium text-gray-700 mb-2\",\n children: [\n \"SSH Username \",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-red-500\",\n children: \"*\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 350,\n columnNumber: 34\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 349,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"text\",\n value: config.sshUsername,\n onChange: (e)=>setConfig((prev)=>({\n ...prev,\n sshUsername: e.target.value\n })),\n placeholder: \"ubuntu\",\n className: \"w-full px-3 py-2 border border-gray-300 rounded-lg focus:ring-bzzz-primary focus:border-bzzz-primary\",\n required: true\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 352,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-sm text-gray-500 mt-1\",\n children: \"Exact SSH username for cluster machines\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 360,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 348,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"label\", {\n className: \"block text-sm font-medium text-gray-700 mb-2\",\n children: \"SSH Port\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 366,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"number\",\n value: config.sshPort,\n onChange: (e)=>setConfig((prev)=>({\n ...prev,\n sshPort: parseInt(e.target.value) || 22\n })),\n min: \"1\",\n max: \"65535\",\n className: \"w-full px-3 py-2 border border-gray-300 rounded-lg focus:ring-bzzz-primary focus:border-bzzz-primary\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 369,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-sm text-gray-500 mt-1\",\n children: \"SSH port number (default: 22)\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 377,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 365,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 347,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"label\", {\n className: \"block text-sm font-medium text-gray-700 mb-2\",\n children: [\n \"SSH Password \",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-red-500\",\n children: \"*\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 385,\n columnNumber: 32\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 384,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"relative\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: showSSHPassword ? \"text\" : \"password\",\n value: config.sshPassword,\n onChange: (e)=>setConfig((prev)=>({\n ...prev,\n sshPassword: e.target.value\n })),\n placeholder: \"Enter SSH password for cluster machines\",\n className: \"w-full px-3 py-2 pr-10 border border-gray-300 rounded-lg focus:ring-bzzz-primary focus:border-bzzz-primary\",\n required: true\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 388,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n type: \"button\",\n onClick: ()=>setShowSSHPassword(!showSSHPassword),\n className: \"absolute inset-y-0 right-0 pr-3 flex items-center\",\n children: showSSHPassword ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_CheckCircleIcon_DocumentDuplicateIcon_ExclamationTriangleIcon_EyeIcon_EyeSlashIcon_KeyIcon_LockClosedIcon_ServerIcon_ShieldCheckIcon_XCircleIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n className: \"h-4 w-4 text-gray-400\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 402,\n columnNumber: 23\n }, this) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_CheckCircleIcon_DocumentDuplicateIcon_ExclamationTriangleIcon_EyeIcon_EyeSlashIcon_KeyIcon_LockClosedIcon_ServerIcon_ShieldCheckIcon_XCircleIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n className: \"h-4 w-4 text-gray-400\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 404,\n columnNumber: 23\n }, this)\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 396,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 387,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-sm text-gray-500 mt-1\",\n children: \"SSH password for the specified username (used only during setup)\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 408,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 383,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 331,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 215,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 207,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"card\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center mb-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_CheckCircleIcon_DocumentDuplicateIcon_ExclamationTriangleIcon_EyeIcon_EyeSlashIcon_KeyIcon_LockClosedIcon_ServerIcon_ShieldCheckIcon_XCircleIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n className: \"h-6 w-6 text-bzzz-primary mr-2\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 421,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h3\", {\n className: \"text-lg font-medium text-gray-900\",\n children: \"TLS/SSL Configuration\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 422,\n columnNumber: 11\n }, this),\n validation.tlsCert === true && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_CheckCircleIcon_DocumentDuplicateIcon_ExclamationTriangleIcon_EyeIcon_EyeSlashIcon_KeyIcon_LockClosedIcon_ServerIcon_ShieldCheckIcon_XCircleIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n className: \"h-5 w-5 text-green-500 ml-2\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 423,\n columnNumber: 43\n }, this),\n validation.tlsCert === false && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_CheckCircleIcon_DocumentDuplicateIcon_ExclamationTriangleIcon_EyeIcon_EyeSlashIcon_KeyIcon_LockClosedIcon_ServerIcon_ShieldCheckIcon_XCircleIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n className: \"h-5 w-5 text-red-500 ml-2\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 424,\n columnNumber: 44\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 420,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-y-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"label\", {\n className: \"flex items-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"checkbox\",\n checked: config.enableTLS,\n onChange: (e)=>setConfig((prev)=>({\n ...prev,\n enableTLS: e.target.checked\n })),\n className: \"mr-2\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 429,\n columnNumber: 13\n }, this),\n \"Enable TLS encryption for cluster communication\"\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 428,\n columnNumber: 11\n }, this),\n config.enableTLS && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-y-4 ml-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"label\", {\n className: \"block text-sm font-medium text-gray-700 mb-2\",\n children: \"Certificate Type\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 441,\n columnNumber: 17\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)(\"label\", {\n className: \"flex items-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"radio\",\n value: \"self-signed\",\n checked: config.tlsCertType === \"self-signed\",\n onChange: (e)=>setConfig((prev)=>({\n ...prev,\n tlsCertType: e.target.value\n })),\n className: \"mr-2\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 444,\n columnNumber: 21\n }, this),\n \"Generate self-signed certificate\"\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 443,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"label\", {\n className: \"flex items-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"radio\",\n value: \"letsencrypt\",\n checked: config.tlsCertType === \"letsencrypt\",\n onChange: (e)=>setConfig((prev)=>({\n ...prev,\n tlsCertType: e.target.value\n })),\n className: \"mr-2\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 454,\n columnNumber: 21\n }, this),\n \"Use Let's Encrypt (requires domain)\"\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 453,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"label\", {\n className: \"flex items-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"radio\",\n value: \"existing\",\n checked: config.tlsCertType === \"existing\",\n onChange: (e)=>setConfig((prev)=>({\n ...prev,\n tlsCertType: e.target.value\n })),\n className: \"mr-2\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 464,\n columnNumber: 21\n }, this),\n \"Use existing certificate\"\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 463,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 442,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 440,\n columnNumber: 15\n }, this),\n config.tlsCertType === \"existing\" && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-y-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"label\", {\n className: \"block text-sm font-medium text-gray-700 mb-2\",\n children: \"Certificate Path\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 479,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"text\",\n value: config.tlsCertPath,\n onChange: (e)=>setConfig((prev)=>({\n ...prev,\n tlsCertPath: e.target.value\n })),\n placeholder: \"/path/to/certificate.crt\",\n className: \"w-full p-3 border border-gray-300 rounded-lg\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 480,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 478,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"label\", {\n className: \"block text-sm font-medium text-gray-700 mb-2\",\n children: \"Private Key Path\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 489,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"text\",\n value: config.tlsKeyPath,\n onChange: (e)=>setConfig((prev)=>({\n ...prev,\n tlsKeyPath: e.target.value\n })),\n placeholder: \"/path/to/private.key\",\n className: \"w-full p-3 border border-gray-300 rounded-lg\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 490,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 488,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 477,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 439,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 427,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 419,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"card\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center mb-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_CheckCircleIcon_DocumentDuplicateIcon_ExclamationTriangleIcon_EyeIcon_EyeSlashIcon_KeyIcon_LockClosedIcon_ServerIcon_ShieldCheckIcon_XCircleIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n className: \"h-6 w-6 text-bzzz-primary mr-2\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 508,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h3\", {\n className: \"text-lg font-medium text-gray-900\",\n children: \"Authentication Method\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 509,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 507,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-y-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"label\", {\n className: \"block text-sm font-medium text-gray-700 mb-2\",\n children: \"Authentication Type\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 514,\n columnNumber: 13\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)(\"label\", {\n className: \"flex items-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"radio\",\n value: \"token\",\n checked: config.authMethod === \"token\",\n onChange: (e)=>setConfig((prev)=>({\n ...prev,\n authMethod: e.target.value\n })),\n className: \"mr-2\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 517,\n columnNumber: 17\n }, this),\n \"API Token-based authentication\"\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 516,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"label\", {\n className: \"flex items-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"radio\",\n value: \"certificate\",\n checked: config.authMethod === \"certificate\",\n onChange: (e)=>setConfig((prev)=>({\n ...prev,\n authMethod: e.target.value\n })),\n className: \"mr-2\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 527,\n columnNumber: 17\n }, this),\n \"Certificate-based authentication\"\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 526,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"label\", {\n className: \"flex items-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"radio\",\n value: \"hybrid\",\n checked: config.authMethod === \"hybrid\",\n onChange: (e)=>setConfig((prev)=>({\n ...prev,\n authMethod: e.target.value\n })),\n className: \"mr-2\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 537,\n columnNumber: 17\n }, this),\n \"Hybrid (Token + Certificate)\"\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 536,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 515,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 513,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"label\", {\n className: \"block text-sm font-medium text-gray-700 mb-2\",\n children: \"Cluster Secret\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 550,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"relative\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: showClusterSecret ? \"text\" : \"password\",\n value: config.clusterSecret,\n onChange: (e)=>setConfig((prev)=>({\n ...prev,\n clusterSecret: e.target.value\n })),\n className: \"w-full p-3 border border-gray-300 rounded-lg font-mono\",\n placeholder: \"Cluster authentication secret\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 552,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute right-2 top-1/2 transform -translate-y-1/2 flex space-x-1\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n type: \"button\",\n onClick: ()=>setShowClusterSecret(!showClusterSecret),\n className: \"p-1 text-gray-500 hover:text-gray-700\",\n children: showClusterSecret ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_CheckCircleIcon_DocumentDuplicateIcon_ExclamationTriangleIcon_EyeIcon_EyeSlashIcon_KeyIcon_LockClosedIcon_ServerIcon_ShieldCheckIcon_XCircleIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n className: \"h-4 w-4\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 565,\n columnNumber: 40\n }, this) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_CheckCircleIcon_DocumentDuplicateIcon_ExclamationTriangleIcon_EyeIcon_EyeSlashIcon_KeyIcon_LockClosedIcon_ServerIcon_ShieldCheckIcon_XCircleIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n className: \"h-4 w-4\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 565,\n columnNumber: 79\n }, this)\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 560,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n type: \"button\",\n onClick: generateClusterSecret,\n className: \"p-1 text-gray-500 hover:text-gray-700\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_CheckCircleIcon_DocumentDuplicateIcon_ExclamationTriangleIcon_EyeIcon_EyeSlashIcon_KeyIcon_LockClosedIcon_ServerIcon_ShieldCheckIcon_XCircleIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n className: \"h-4 w-4\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 572,\n columnNumber: 19\n }, this)\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 567,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 559,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 551,\n columnNumber: 13\n }, this),\n validation.clusterSecret === false && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-sm text-red-600 mt-1\",\n children: \"Cluster secret is required\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 577,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 549,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 512,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 506,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"card\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center mb-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_CheckCircleIcon_DocumentDuplicateIcon_ExclamationTriangleIcon_EyeIcon_EyeSlashIcon_KeyIcon_LockClosedIcon_ServerIcon_ShieldCheckIcon_XCircleIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {\n className: \"h-6 w-6 text-bzzz-primary mr-2\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 586,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h3\", {\n className: \"text-lg font-medium text-gray-900\",\n children: \"Access Control\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 587,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 585,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-y-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"label\", {\n className: \"block text-sm font-medium text-gray-700 mb-2\",\n children: \"Access Policy\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 592,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"select\", {\n value: config.accessPolicy,\n onChange: (e)=>setConfig((prev)=>({\n ...prev,\n accessPolicy: e.target.value\n })),\n className: \"w-full p-3 border border-gray-300 rounded-lg\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"option\", {\n value: \"open\",\n children: \"Open (Anyone can join cluster)\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 598,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"option\", {\n value: \"restricted\",\n children: \"Restricted (Require authentication)\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 599,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"option\", {\n value: \"invite-only\",\n children: \"Invite Only (Manual approval required)\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 600,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 593,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 591,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"label\", {\n className: \"flex items-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"checkbox\",\n checked: config.enableFirewall,\n onChange: (e)=>setConfig((prev)=>({\n ...prev,\n enableFirewall: e.target.checked\n })),\n className: \"mr-2\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 605,\n columnNumber: 13\n }, this),\n \"Enable firewall configuration\"\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 604,\n columnNumber: 11\n }, this),\n config.enableFirewall && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"ml-6 space-y-4\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"label\", {\n className: \"block text-sm font-medium text-gray-700 mb-2\",\n children: \"Allowed Ports\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 617,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"text\",\n value: config.allowedPorts.join(\", \"),\n onChange: (e)=>setConfig((prev)=>({\n ...prev,\n allowedPorts: e.target.value.split(\",\").map((p)=>p.trim()).filter((p)=>p)\n })),\n placeholder: \"22, 8080, 8090, 9100, 3000\",\n className: \"w-full p-3 border border-gray-300 rounded-lg\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 618,\n columnNumber: 17\n }, this),\n configData?.network && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-sm text-green-600 mt-1 flex items-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_CheckCircleIcon_DocumentDuplicateIcon_ExclamationTriangleIcon_EyeIcon_EyeSlashIcon_KeyIcon_LockClosedIcon_ServerIcon_ShieldCheckIcon_XCircleIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n className: \"h-4 w-4 mr-1\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 630,\n columnNumber: 21\n }, this),\n \"Ports automatically configured from Network Settings: \",\n [\n configData.network.bzzzPort,\n configData.network.mcpPort,\n configData.network.webUIPort,\n configData.network.p2pPort\n ].filter((p)=>p).join(\", \")\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 629,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-sm text-gray-500 mt-1\",\n children: \"Comma-separated list of ports to allow through the firewall\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 639,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 616,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 615,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 590,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 584,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-blue-50 border border-blue-200 rounded-lg p-4\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-start\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_CheckCircleIcon_DocumentDuplicateIcon_ExclamationTriangleIcon_EyeIcon_EyeSlashIcon_KeyIcon_LockClosedIcon_ServerIcon_ShieldCheckIcon_XCircleIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n className: \"h-5 w-5 text-blue-500 mt-0.5 mr-2\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 651,\n columnNumber: 11\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)(\"h4\", {\n className: \"text-sm font-medium text-blue-800\",\n children: \"Security Summary\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 653,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"ul\", {\n className: \"text-sm text-blue-700 mt-1 space-y-1\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"li\", {\n children: [\n \"• SSH access: \",\n config.sshKeyType === \"generate\" ? \"New key pair will be generated\" : config.sshKeyType === \"existing\" ? \"Using provided key\" : \"Manual configuration\"\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 655,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"li\", {\n children: [\n \"• TLS encryption: \",\n config.enableTLS ? \"Enabled\" : \"Disabled\"\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 656,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"li\", {\n children: [\n \"• Authentication: \",\n config.authMethod\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 657,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"li\", {\n children: [\n \"• Access policy: \",\n config.accessPolicy\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 658,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"li\", {\n children: [\n \"• Firewall: \",\n config.enableFirewall ? \"Enabled\" : \"Disabled\"\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 659,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 654,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 652,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 650,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 649,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex justify-between pt-6 border-t border-gray-200\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: onBack && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n type: \"button\",\n onClick: onBack,\n className: \"btn-outline\",\n children: \"Back\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 668,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 666,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n type: \"submit\",\n disabled: config.sshKeyType === \"generate\" && !config.sshPublicKey,\n className: \"btn-primary\",\n children: isCompleted ? \"Continue\" : \"Next: AI Integration\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 673,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 665,\n columnNumber: 7\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SecuritySetup.tsx\",\n lineNumber: 204,\n columnNumber: 5\n }, this);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9hcHAvc2V0dXAvY29tcG9uZW50cy9TZWN1cml0eVNldHVwLnRzeCIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRTJDO0FBWVA7QUE2QnJCLFNBQVNZLGNBQWMsRUFDcENDLFVBQVUsRUFDVkMsVUFBVSxFQUNWQyxVQUFVLEVBQ1ZDLE1BQU0sRUFDTkMsV0FBVyxFQUNRO0lBQ25CQyxRQUFRQyxHQUFHLENBQUMsc0RBQXNETDtJQUVsRSxNQUFNLENBQUNNLFFBQVFDLFVBQVUsR0FBR3JCLCtDQUFRQSxDQUFpQjtRQUNuRHNCLFlBQVk7UUFDWkMsY0FBYztRQUNkQyxlQUFlO1FBQ2ZDLGFBQWE7UUFDYkMsYUFBYTtRQUNiQyxTQUFTO1FBQ1RDLFdBQVc7UUFDWEMsYUFBYTtRQUNiQyxhQUFhO1FBQ2JDLFlBQVk7UUFDWkMsWUFBWTtRQUNaQyxlQUFlO1FBQ2ZDLGNBQWM7UUFDZEMsZ0JBQWdCO1FBQ2hCQyxjQUFjO1lBQUM7WUFBTTtZQUFRO1lBQVE7WUFBUTtTQUFPO1FBQ3BEQyxZQUFZLEVBQUU7UUFDZCxHQUFHdkIsWUFBWXdCLFNBQVMsdUNBQXVDO0lBQ2pFO0lBRUEsTUFBTSxDQUFDQyxnQkFBZ0JDLGtCQUFrQixHQUFHeEMsK0NBQVFBLENBQUM7SUFDckQsTUFBTSxDQUFDeUMsbUJBQW1CQyxxQkFBcUIsR0FBRzFDLCtDQUFRQSxDQUFDO0lBQzNELE1BQU0sQ0FBQzJDLGlCQUFpQkMsbUJBQW1CLEdBQUc1QywrQ0FBUUEsQ0FBQztJQUN2RCxNQUFNLENBQUM2QyxZQUFZQyxjQUFjLEdBQUc5QywrQ0FBUUEsQ0FBQztJQUM3QyxNQUFNLENBQUMrQyxZQUFZQyxjQUFjLEdBQUdoRCwrQ0FBUUEsQ0FBMkIsQ0FBQztJQUN4RSxNQUFNLENBQUNpRCxrQkFBa0JDLG9CQUFvQixHQUFHbEQsK0NBQVFBLENBQUM7SUFFekQsaURBQWlEO0lBQ2pEQyxnREFBU0EsQ0FBQztRQUNSLElBQUksQ0FBQ21CLE9BQU9hLGFBQWEsRUFBRTtZQUN6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QUssYUFBYSxtQ0FBbUNGLE9BQU9FLFVBQVUsS0FBSyxhQUFhLHVCQUF1Qjs7Ozs7OztzREFDbkosOERBQUNpSDs7Z0RBQUc7Z0RBQW1CbkgsT0FBT1EsU0FBUyxHQUFHLFlBQVk7Ozs7Ozs7c0RBQ3RELDhEQUFDMkc7O2dEQUFHO2dEQUFtQm5ILE9BQU9ZLFVBQVU7Ozs7Ozs7c0RBQ3hDLDhEQUFDdUc7O2dEQUFHO2dEQUFrQm5ILE9BQU9jLFlBQVk7Ozs7Ozs7c0RBQ3pDLDhEQUFDcUc7O2dEQUFHO2dEQUFhbkgsT0FBT2UsY0FBYyxHQUFHLFlBQVk7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzswQkFNN0QsOERBQUN1RTtnQkFBSUQsV0FBVTs7a0NBQ2IsOERBQUNDO2tDQUNFMUYsd0JBQ0MsOERBQUNtRzs0QkFBT0wsTUFBSzs0QkFBU00sU0FBU3BHOzRCQUFReUYsV0FBVTtzQ0FBYzs7Ozs7Ozs7Ozs7a0NBS25FLDhEQUFDVTt3QkFDQ0wsTUFBSzt3QkFDTE8sVUFBVWpHLE9BQU9FLFVBQVUsS0FBSyxjQUFjLENBQUNGLE9BQU9HLFlBQVk7d0JBQ2xFa0YsV0FBVTtrQ0FFVHhGLGNBQWMsYUFBYTs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBS3RDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vYnp6ei1jb25maWctdWkvLi9hcHAvc2V0dXAvY29tcG9uZW50cy9TZWN1cml0eVNldHVwLnRzeD9mNjFhIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2UgY2xpZW50J1xuXG5pbXBvcnQgeyB1c2VTdGF0ZSwgdXNlRWZmZWN0IH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBcbiAgU2hpZWxkQ2hlY2tJY29uLFxuICBLZXlJY29uLFxuICBMb2NrQ2xvc2VkSWNvbixcbiAgU2VydmVySWNvbixcbiAgRXllSWNvbixcbiAgRXllU2xhc2hJY29uLFxuICBEb2N1bWVudER1cGxpY2F0ZUljb24sXG4gIENoZWNrQ2lyY2xlSWNvbixcbiAgWENpcmNsZUljb24sXG4gIEV4Y2xhbWF0aW9uVHJpYW5nbGVJY29uXG59IGZyb20gJ0BoZXJvaWNvbnMvcmVhY3QvMjQvb3V0bGluZSdcblxuaW50ZXJmYWNlIFNlY3VyaXR5U2V0dXBQcm9wcyB7XG4gIHN5c3RlbUluZm86IGFueVxuICBjb25maWdEYXRhOiBhbnlcbiAgb25Db21wbGV0ZTogKGRhdGE6IGFueSkgPT4gdm9pZFxuICBvbkJhY2s/OiAoKSA9PiB2b2lkXG4gIGlzQ29tcGxldGVkOiBib29sZWFuXG59XG5cbmludGVyZmFjZSBTZWN1cml0eUNvbmZpZyB7XG4gIHNzaEtleVR5cGU6ICdnZW5lcmF0ZScgfCAnZXhpc3RpbmcnIHwgJ21hbnVhbCdcbiAgc3NoUHVibGljS2V5OiBzdHJpbmdcbiAgc3NoUHJpdmF0ZUtleTogc3RyaW5nXG4gIHNzaFVzZXJuYW1lOiBzdHJpbmdcbiAgc3NoUGFzc3dvcmQ6IHN0cmluZ1xuICBzc2hQb3J0OiBudW1iZXJcbiAgZW5hYmxlVExTOiBib29sZWFuXG4gIHRsc0NlcnRUeXBlOiAnc2VsZi1zaWduZWQnIHwgJ2xldHNlbmNyeXB0JyB8ICdleGlzdGluZydcbiAgdGxzQ2VydFBhdGg6IHN0cmluZ1xuICB0bHNLZXlQYXRoOiBzdHJpbmdcbiAgYXV0aE1ldGhvZDogJ3Rva2VuJyB8ICdjZXJ0aWZpY2F0ZScgfCAnaHlicmlkJ1xuICBjbHVzdGVyU2VjcmV0OiBzdHJpbmdcbiAgYWNjZXNzUG9saWN5OiAnb3BlbicgfCAncmVzdHJpY3RlZCcgfCAnaW52aXRlLW9ubHknXG4gIGVuYWJsZUZpcmV3YWxsOiBib29sZWFuXG4gIGFsbG93ZWRQb3J0czogc3RyaW5nW11cbiAgdHJ1c3RlZElQczogc3RyaW5nW11cbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gU2VjdXJpdHlTZXR1cCh7IFxuICBzeXN0ZW1JbmZvLCBcbiAgY29uZmlnRGF0YSwgXG4gIG9uQ29tcGxldGUsIFxuICBvbkJhY2ssIFxuICBpc0NvbXBsZXRlZCBcbn06IFNlY3VyaXR5U2V0dXBQcm9wcykge1xuICBjb25zb2xlLmxvZygnU2VjdXJpdHlTZXR1cDogQ29tcG9uZW50IHJlbmRlcmVkIHdpdGggY29uZmlnRGF0YTonLCBjb25maWdEYXRhKVxuICBcbiAgY29uc3QgW2NvbmZpZywgc2V0Q29uZmlnXSA9IHVzZVN0YXRlPFNlY3VyaXR5Q29uZmlnPih7XG4gICAgc3NoS2V5VHlwZTogJ2dlbmVyYXRlJyxcbiAgICBzc2hQdWJsaWNLZXk6ICcnLFxuICAgIHNzaFByaXZhdGVLZXk6ICcnLFxuICAgIHNzaFVzZXJuYW1lOiAndWJ1bnR1JyxcbiAgICBzc2hQYXNzd29yZDogJycsXG4gICAgc3NoUG9ydDogMjIsXG4gICAgZW5hYmxlVExTOiB0cnVlLFxuICAgIHRsc0NlcnRUeXBlOiAnc2VsZi1zaWduZWQnLFxuICAgIHRsc0NlcnRQYXRoOiAnJyxcbiAgICB0bHNLZXlQYXRoOiAnJyxcbiAgICBhdXRoTWV0aG9kOiAndG9rZW4nLFxuICAgIGNsdXN0ZXJTZWNyZXQ6ICcnLFxuICAgIGFjY2Vzc1BvbGljeTogJ3Jlc3RyaWN0ZWQnLFxuICAgIGVuYWJsZUZpcmV3YWxsOiB0cnVlLFxuICAgIGFsbG93ZWRQb3J0czogWycyMicsICc4MDgwJywgJzgwOTAnLCAnOTEwMCcsICczMDAwJ10sXG4gICAgdHJ1c3RlZElQczogW10sXG4gICAgLi4uY29uZmlnRGF0YT8uc2VjdXJpdHkgLy8gTG9hZCBzYXZlZCBzZWN1cml0eSBjb25maWcgaWYgZXhpc3RzXG4gIH0pXG5cbiAgY29uc3QgW3Nob3dQcml2YXRlS2V5LCBzZXRTaG93UHJpdmF0ZUtleV0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW3Nob3dDbHVzdGVyU2VjcmV0LCBzZXRTaG93Q2x1c3RlclNlY3JldF0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW3Nob3dTU0hQYXNzd29yZCwgc2V0U2hvd1NTSFBhc3N3b3JkXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbZ2VuZXJhdGluZywgc2V0R2VuZXJhdGluZ10gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW3ZhbGlkYXRpb24sIHNldFZhbGlkYXRpb25dID0gdXNlU3RhdGU8e1trZXk6IHN0cmluZ106IGJvb2xlYW59Pih7fSlcbiAgY29uc3QgW3BvcnRzSW5pdGlhbGl6ZWQsIHNldFBvcnRzSW5pdGlhbGl6ZWRdID0gdXNlU3RhdGUoZmFsc2UpXG5cbiAgLy8gR2VuZXJhdGUgY2x1c3RlciBzZWNyZXQgb24gbW91bnQgaWYgbm90IGV4aXN0c1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghY29uZmlnLmNsdXN0ZXJTZWNyZXQpIHtcbiAgICAgIGdlbmVyYXRlQ2x1c3RlclNlY3JldCgpXG4gICAgfVxuICB9LCBbXSlcblxuICAvLyBVcGRhdGUgZmlyZXdhbGwgcG9ydHMgYmFzZWQgb24gbmV0d29yayBjb25maWd1cmF0aW9uIGZyb20gcHJldmlvdXMgc3RlcFxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnNvbGUubG9nKCdTZWN1cml0eVNldHVwOiBjb25maWdEYXRhIGNoYW5nZWQnLCB7XG4gICAgICBoYXNOZXR3b3JrOiAhIWNvbmZpZ0RhdGE/Lm5ldHdvcmssXG4gICAgICBwb3J0c0luaXRpYWxpemVkLFxuICAgICAgaGFzU2F2ZWRTZWN1cml0eTogISFjb25maWdEYXRhPy5zZWN1cml0eT8uYWxsb3dlZFBvcnRzLFxuICAgICAgbmV0d29ya0NvbmZpZzogY29uZmlnRGF0YT8ubmV0d29ya1xuICAgIH0pXG4gICAgXG4gICAgLy8gSWYgd2UgaGF2ZSBuZXR3b3JrIGNvbmZpZyBhbmQgaGF2ZW4ndCBpbml0aWFsaXplZCBwb3J0cyB5ZXQsIEFORCB3ZSBkb24ndCBoYXZlIHNhdmVkIHNlY3VyaXR5IGNvbmZpZ1xuICAgIGlmIChjb25maWdEYXRhPy5uZXR3b3JrICYmICFwb3J0c0luaXRpYWxpemVkICYmICFjb25maWdEYXRhPy5zZWN1cml0eT8uYWxsb3dlZFBvcnRzKSB7XG4gICAgICBjb25zdCBuZXR3b3JrQ29uZmlnID0gY29uZmlnRGF0YS5uZXR3b3JrXG4gICAgICBjb25zdCBuZXR3b3JrUG9ydHMgPSBbXG4gICAgICAgIG5ldHdvcmtDb25maWcuYnp6elBvcnQ/LnRvU3RyaW5nKCksXG4gICAgICAgIG5ldHdvcmtDb25maWcubWNwUG9ydD8udG9TdHJpbmcoKSwgXG4gICAgICAgIG5ldHdvcmtDb25maWcud2ViVUlQb3J0Py50b1N0cmluZygpLFxuICAgICAgICBuZXR3b3JrQ29uZmlnLnAycFBvcnQ/LnRvU3RyaW5nKClcbiAgICAgIF0uZmlsdGVyKHBvcnQgPT4gcG9ydCAmJiBwb3J0ICE9PSAndW5kZWZpbmVkJylcbiAgICAgIFxuICAgICAgY29uc29sZS5sb2coJ1NlY3VyaXR5U2V0dXA6IEF1dG8tcG9wdWxhdGluZyBwb3J0cycsIHsgbmV0d29ya1BvcnRzLCBuZXR3b3JrQ29uZmlnIH0pXG4gICAgICBcbiAgICAgIC8vIEluY2x1ZGUgc3RhbmRhcmQgcG9ydHMgcGx1cyBuZXR3b3JrIGNvbmZpZ3VyYXRpb24gcG9ydHNcbiAgICAgIGNvbnN0IHN0YW5kYXJkUG9ydHMgPSBbJzIyJywgJzgwOTAnXSAvLyBTU0ggYW5kIHNldHVwIGludGVyZmFjZVxuICAgICAgY29uc3QgYWxsUG9ydHMgPSBbLi4ubmV3IFNldChbLi4uc3RhbmRhcmRQb3J0cywgLi4ubmV0d29ya1BvcnRzXSldXG4gICAgICBcbiAgICAgIGNvbnNvbGUubG9nKCdTZWN1cml0eVNldHVwOiBTZXR0aW5nIGFsbG93ZWQgcG9ydHMgdG8nLCBhbGxQb3J0cylcbiAgICAgIHNldENvbmZpZyhwcmV2ID0+ICh7IC4uLnByZXYsIGFsbG93ZWRQb3J0czogYWxsUG9ydHMgfSkpXG4gICAgICBzZXRQb3J0c0luaXRpYWxpemVkKHRydWUpXG4gICAgfVxuICB9LCBbY29uZmlnRGF0YSwgcG9ydHNJbml0aWFsaXplZF0pXG5cbiAgY29uc3QgZ2VuZXJhdGVDbHVzdGVyU2VjcmV0ID0gKCkgPT4ge1xuICAgIGNvbnN0IHNlY3JldCA9IEFycmF5LmZyb20oY3J5cHRvLmdldFJhbmRvbVZhbHVlcyhuZXcgVWludDhBcnJheSgzMikpKVxuICAgICAgLm1hcChiID0+IGIudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDIsICcwJykpXG4gICAgICAuam9pbignJylcbiAgICBzZXRDb25maWcocHJldiA9PiAoeyAuLi5wcmV2LCBjbHVzdGVyU2VjcmV0OiBzZWNyZXQgfSkpXG4gIH1cblxuICBjb25zdCBnZW5lcmF0ZVNTSEtleXMgPSBhc3luYyAoKSA9PiB7XG4gICAgc2V0R2VuZXJhdGluZyh0cnVlKVxuICAgIHRyeSB7XG4gICAgICAvLyBJbiBhIHJlYWwgaW1wbGVtZW50YXRpb24sIHRoaXMgd291bGQgY2FsbCB0aGUgYmFja2VuZCB0byBnZW5lcmF0ZSBTU0gga2V5c1xuICAgICAgLy8gRm9yIG5vdywgc2ltdWxhdGUgdGhlIHByb2Nlc3NcbiAgICAgIGF3YWl0IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gc2V0VGltZW91dChyZXNvbHZlLCAyMDAwKSlcbiAgICAgIFxuICAgICAgLy8gTW9jayBnZW5lcmF0ZWQga2V5cyAoaW4gcmVhbCBpbXBsZW1lbnRhdGlvbiwgdGhlc2Ugd291bGQgY29tZSBmcm9tIGJhY2tlbmQpXG4gICAgICBjb25zdCBtb2NrUHVibGljS2V5ID0gYHNzaC1yc2EgQUFBQUIzTnphQzF5YzJFQUFBQURBUUFCQUFBQ0FRQy4uLiBjaG9ydXNAJHtzeXN0ZW1JbmZvPy5uZXR3b3JrPy5ob3N0bmFtZSB8fCAnbG9jYWxob3N0J31gXG4gICAgICBjb25zdCBtb2NrUHJpdmF0ZUtleSA9IGAtLS0tLUJFR0lOIE9QRU5TU0ggUFJJVkFURSBLRVktLS0tLVxuYjNCbGJuTnphQzFyWlhrdGRqRUFBQUFBQkc1dmJtVUFBQUFFYm05dVpRQUFBQUFBQUFBQkFBQUZ3d0FBQUFkLi4uXG4tLS0tLUVORCBPUEVOU1NIIFBSSVZBVEUgS0VZLS0tLS1gXG5cbiAgICAgIHNldENvbmZpZyhwcmV2ID0+ICh7XG4gICAgICAgIC4uLnByZXYsXG4gICAgICAgIHNzaFB1YmxpY0tleTogbW9ja1B1YmxpY0tleSxcbiAgICAgICAgc3NoUHJpdmF0ZUtleTogbW9ja1ByaXZhdGVLZXlcbiAgICAgIH0pKVxuXG4gICAgICBzZXRWYWxpZGF0aW9uKHByZXYgPT4gKHsgLi4ucHJldiwgc3NoS2V5czogdHJ1ZSB9KSlcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcignRmFpbGVkIHRvIGdlbmVyYXRlIFNTSCBrZXlzOicsIGVycm9yKVxuICAgICAgc2V0VmFsaWRhdGlvbihwcmV2ID0+ICh7IC4uLnByZXYsIHNzaEtleXM6IGZhbHNlIH0pKVxuICAgIH0gZmluYWxseSB7XG4gICAgICBzZXRHZW5lcmF0aW5nKGZhbHNlKVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGNvcHlUb0NsaXBib2FyZCA9IGFzeW5jICh0ZXh0OiBzdHJpbmcpID0+IHtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQodGV4dClcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcignRmFpbGVkIHRvIGNvcHkgdG8gY2xpcGJvYXJkOicsIGVycm9yKVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGhhbmRsZVN1Ym1pdCA9IChlOiBSZWFjdC5Gb3JtRXZlbnQpID0+IHtcbiAgICBlLnByZXZlbnREZWZhdWx0KClcbiAgICBcbiAgICAvLyBWYWxpZGF0ZSByZXF1aXJlZCBmaWVsZHNcbiAgICBjb25zdCBuZXdWYWxpZGF0aW9uOiB7W2tleTogc3RyaW5nXTogYm9vbGVhbn0gPSB7fVxuICAgIFxuICAgIGlmIChjb25maWcuc3NoS2V5VHlwZSA9PT0gJ2dlbmVyYXRlJyAmJiAhY29uZmlnLnNzaFB1YmxpY0tleSkge1xuICAgICAgbmV3VmFsaWRhdGlvbi5zc2hLZXlzID0gZmFsc2VcbiAgICB9IGVsc2UgaWYgKGNvbmZpZy5zc2hLZXlUeXBlID09PSAnZXhpc3RpbmcnICYmICFjb25maWcuc3NoUHVibGljS2V5KSB7XG4gICAgICBuZXdWYWxpZGF0aW9uLnNzaEtleXMgPSBmYWxzZVxuICAgIH0gZWxzZSB7XG4gICAgICBuZXdWYWxpZGF0aW9uLnNzaEtleXMgPSB0cnVlXG4gICAgfVxuXG4gICAgaWYgKGNvbmZpZy5lbmFibGVUTFMgJiYgY29uZmlnLnRsc0NlcnRUeXBlID09PSAnZXhpc3RpbmcnICYmICghY29uZmlnLnRsc0NlcnRQYXRoIHx8ICFjb25maWcudGxzS2V5UGF0aCkpIHtcbiAgICAgIG5ld1ZhbGlkYXRpb24udGxzQ2VydCA9IGZhbHNlXG4gICAgfSBlbHNlIHtcbiAgICAgIG5ld1ZhbGlkYXRpb24udGxzQ2VydCA9IHRydWVcbiAgICB9XG5cbiAgICBpZiAoIWNvbmZpZy5jbHVzdGVyU2VjcmV0KSB7XG4gICAgICBuZXdWYWxpZGF0aW9uLmNsdXN0ZXJTZWNyZXQgPSBmYWxzZVxuICAgIH0gZWxzZSB7XG4gICAgICBuZXdWYWxpZGF0aW9uLmNsdXN0ZXJTZWNyZXQgPSB0cnVlXG4gICAgfVxuXG4gICAgaWYgKGNvbmZpZy5zc2hLZXlUeXBlID09PSAnbWFudWFsJyAmJiAoIWNvbmZpZy5zc2hVc2VybmFtZSB8fCAhY29uZmlnLnNzaFBhc3N3b3JkKSkge1xuICAgICAgbmV3VmFsaWRhdGlvbi5zc2hDcmVkZW50aWFscyA9IGZhbHNlXG4gICAgfSBlbHNlIHtcbiAgICAgIG5ld1ZhbGlkYXRpb24uc3NoQ3JlZGVudGlhbHMgPSB0cnVlXG4gICAgfVxuXG4gICAgc2V0VmFsaWRhdGlvbihuZXdWYWxpZGF0aW9uKVxuXG4gICAgLy8gQ2hlY2sgaWYgYWxsIHZhbGlkYXRpb25zIHBhc3NcbiAgICBjb25zdCBpc1ZhbGlkID0gT2JqZWN0LnZhbHVlcyhuZXdWYWxpZGF0aW9uKS5ldmVyeSh2ID0+IHYpXG4gICAgXG4gICAgaWYgKGlzVmFsaWQpIHtcbiAgICAgIG9uQ29tcGxldGUoeyBzZWN1cml0eTogY29uZmlnIH0pXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8Zm9ybSBvblN1Ym1pdD17aGFuZGxlU3VibWl0fSBjbGFzc05hbWU9XCJzcGFjZS15LThcIj5cblxuICAgICAgey8qIFNTSCBLZXkgQ29uZmlndXJhdGlvbiAqL31cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY2FyZFwiPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIG1iLTRcIj5cbiAgICAgICAgICA8S2V5SWNvbiBjbGFzc05hbWU9XCJoLTYgdy02IHRleHQtYnp6ei1wcmltYXJ5IG1yLTJcIiAvPlxuICAgICAgICAgIDxoMyBjbGFzc05hbWU9XCJ0ZXh0LWxnIGZvbnQtbWVkaXVtIHRleHQtZ3JheS05MDBcIj5TU0ggS2V5IE1hbmFnZW1lbnQ8L2gzPlxuICAgICAgICAgIHt2YWxpZGF0aW9uLnNzaEtleXMgPT09IHRydWUgJiYgPENoZWNrQ2lyY2xlSWNvbiBjbGFzc05hbWU9XCJoLTUgdy01IHRleHQtZ3JlZW4tNTAwIG1sLTJcIiAvPn1cbiAgICAgICAgICB7dmFsaWRhdGlvbi5zc2hLZXlzID09PSBmYWxzZSAmJiA8WENpcmNsZUljb24gY2xhc3NOYW1lPVwiaC01IHctNSB0ZXh0LXJlZC01MDAgbWwtMlwiIC8+fVxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInNwYWNlLXktNFwiPlxuICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICA8bGFiZWwgY2xhc3NOYW1lPVwiYmxvY2sgdGV4dC1zbSBmb250LW1lZGl1bSB0ZXh0LWdyYXktNzAwIG1iLTJcIj5TU0ggS2V5IFR5cGU8L2xhYmVsPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJzcGFjZS15LTJcIj5cbiAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICB0eXBlPVwicmFkaW9cIlxuICAgICAgICAgICAgICAgICAgdmFsdWU9XCJnZW5lcmF0ZVwiXG4gICAgICAgICAgICAgICAgICBjaGVja2VkPXtjb25maWcuc3NoS2V5VHlwZSA9PT0gJ2dlbmVyYXRlJ31cbiAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gc2V0Q29uZmlnKHByZXYgPT4gKHsgLi4ucHJldiwgc3NoS2V5VHlwZTogZS50YXJnZXQudmFsdWUgYXMgYW55IH0pKX1cbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cIm1yLTJcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgR2VuZXJhdGUgbmV3IFNTSCBrZXkgcGFpclxuICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICA8bGFiZWwgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJyYWRpb1wiXG4gICAgICAgICAgICAgICAgICB2YWx1ZT1cImV4aXN0aW5nXCJcbiAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e2NvbmZpZy5zc2hLZXlUeXBlID09PSAnZXhpc3RpbmcnfVxuICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiBzZXRDb25maWcocHJldiA9PiAoeyAuLi5wcmV2LCBzc2hLZXlUeXBlOiBlLnRhcmdldC52YWx1ZSBhcyBhbnkgfSkpfVxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwibXItMlwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICBVc2UgZXhpc3RpbmcgU1NIIGtleVxuICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICA8bGFiZWwgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJyYWRpb1wiXG4gICAgICAgICAgICAgICAgICB2YWx1ZT1cIm1hbnVhbFwiXG4gICAgICAgICAgICAgICAgICBjaGVja2VkPXtjb25maWcuc3NoS2V5VHlwZSA9PT0gJ21hbnVhbCd9XG4gICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IHNldENvbmZpZyhwcmV2ID0+ICh7IC4uLnByZXYsIHNzaEtleVR5cGU6IGUudGFyZ2V0LnZhbHVlIGFzIGFueSB9KSl9XG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJtci0yXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIENvbmZpZ3VyZSBtYW51YWxseSB3aXRoIFNTSCB1c2VybmFtZS9wYXNzd29yZFxuICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICB7Y29uZmlnLnNzaEtleVR5cGUgPT09ICdnZW5lcmF0ZScgJiYgKFxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJzcGFjZS15LTRcIj5cbiAgICAgICAgICAgICAgeyFjb25maWcuc3NoUHVibGljS2V5ID8gKFxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgb25DbGljaz17Z2VuZXJhdGVTU0hLZXlzfVxuICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e2dlbmVyYXRpbmd9XG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJidG4tcHJpbWFyeVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAge2dlbmVyYXRpbmcgPyAnR2VuZXJhdGluZyBLZXlzLi4uJyA6ICdHZW5lcmF0ZSBTU0ggS2V5IFBhaXInfVxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwic3BhY2UteS00XCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3NOYW1lPVwiYmxvY2sgdGV4dC1zbSBmb250LW1lZGl1bSB0ZXh0LWdyYXktNzAwIG1iLTJcIj5QdWJsaWMgS2V5PC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyZWxhdGl2ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDx0ZXh0YXJlYVxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2NvbmZpZy5zc2hQdWJsaWNLZXl9XG4gICAgICAgICAgICAgICAgICAgICAgICByZWFkT25seVxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidy1mdWxsIHAtMyBib3JkZXIgYm9yZGVyLWdyYXktMzAwIHJvdW5kZWQtbGcgYmctZ3JheS01MCBmb250LW1vbm8gdGV4dC1zbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICByb3dzPXszfVxuICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBjb3B5VG9DbGlwYm9hcmQoY29uZmlnLnNzaFB1YmxpY0tleSl9XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJhYnNvbHV0ZSB0b3AtMiByaWdodC0yIHAtMSB0ZXh0LWdyYXktNTAwIGhvdmVyOnRleHQtZ3JheS03MDBcIlxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxEb2N1bWVudER1cGxpY2F0ZUljb24gY2xhc3NOYW1lPVwiaC00IHctNFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzc05hbWU9XCJibG9jayB0ZXh0LXNtIGZvbnQtbWVkaXVtIHRleHQtZ3JheS03MDAgbWItMlwiPlByaXZhdGUgS2V5PC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyZWxhdGl2ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDx0ZXh0YXJlYVxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e3Nob3dQcml2YXRlS2V5ID8gY29uZmlnLnNzaFByaXZhdGVLZXkgOiAn4oCi4oCi4oCi4oCi4oCi4oCi4oCi4oCi4oCi4oCi4oCi4oCi4oCi4oCi4oCi4oCi4oCi4oCi4oCi4oCi4oCi4oCi4oCi4oCi4oCi4oCi4oCi4oCi4oCi4oCi4oCi4oCiJ31cbiAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRPbmx5XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ3LWZ1bGwgcC0zIGJvcmRlciBib3JkZXItZ3JheS0zMDAgcm91bmRlZC1sZyBiZy1ncmF5LTUwIGZvbnQtbW9ubyB0ZXh0LXNtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvd3M9ezZ9XG4gICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImFic29sdXRlIHRvcC0yIHJpZ2h0LTIgZmxleCBzcGFjZS14LTFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldFNob3dQcml2YXRlS2V5KCFzaG93UHJpdmF0ZUtleSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInAtMSB0ZXh0LWdyYXktNTAwIGhvdmVyOnRleHQtZ3JheS03MDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7c2hvd1ByaXZhdGVLZXkgPyA8RXllU2xhc2hJY29uIGNsYXNzTmFtZT1cImgtNCB3LTRcIiAvPiA6IDxFeWVJY29uIGNsYXNzTmFtZT1cImgtNCB3LTRcIiAvPn1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gY29weVRvQ2xpcGJvYXJkKGNvbmZpZy5zc2hQcml2YXRlS2V5KX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwicC0xIHRleHQtZ3JheS01MDAgaG92ZXI6dGV4dC1ncmF5LTcwMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxEb2N1bWVudER1cGxpY2F0ZUljb24gY2xhc3NOYW1lPVwiaC00IHctNFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQtc20gdGV4dC15ZWxsb3ctNjAwIG10LTFcIj7imqDvuI8gU3RvcmUgdGhpcyBwcml2YXRlIGtleSBzZWN1cmVseS4gSXQgY2Fubm90IGJlIHJlY292ZXJlZC48L3A+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICl9XG5cbiAgICAgICAgICB7Y29uZmlnLnNzaEtleVR5cGUgPT09ICdleGlzdGluZycgJiYgKFxuICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzTmFtZT1cImJsb2NrIHRleHQtc20gZm9udC1tZWRpdW0gdGV4dC1ncmF5LTcwMCBtYi0yXCI+U1NIIFB1YmxpYyBLZXk8L2xhYmVsPlxuICAgICAgICAgICAgICA8dGV4dGFyZWFcbiAgICAgICAgICAgICAgICB2YWx1ZT17Y29uZmlnLnNzaFB1YmxpY0tleX1cbiAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IHNldENvbmZpZyhwcmV2ID0+ICh7IC4uLnByZXYsIHNzaFB1YmxpY0tleTogZS50YXJnZXQudmFsdWUgfSkpfVxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwic3NoLXJzYSBBQUFBQjNOemFDMXljMkVBQUFBREFRQUJBQUFDQVFDLi4uXCJcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ3LWZ1bGwgcC0zIGJvcmRlciBib3JkZXItZ3JheS0zMDAgcm91bmRlZC1sZyBmb250LW1vbm8gdGV4dC1zbVwiXG4gICAgICAgICAgICAgICAgcm93cz17M31cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICl9XG5cbiAgICAgICAgICB7Y29uZmlnLnNzaEtleVR5cGUgPT09ICdtYW51YWwnICYmIChcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwic3BhY2UteS00XCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmcteWVsbG93LTUwIGJvcmRlciBib3JkZXIteWVsbG93LTIwMCByb3VuZGVkLWxnIHAtNFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1zdGFydFwiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4LXNocmluay0wXCI+XG4gICAgICAgICAgICAgICAgICAgIDxFeGNsYW1hdGlvblRyaWFuZ2xlSWNvbiBjbGFzc05hbWU9XCJoLTUgdy01IHRleHQteWVsbG93LTYwMCBtdC0wLjVcIiAvPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1sLTNcIj5cbiAgICAgICAgICAgICAgICAgICAgPGg0IGNsYXNzTmFtZT1cInRleHQtc20gZm9udC1tZWRpdW0gdGV4dC15ZWxsb3ctODAwXCI+TWFudWFsIFNTSCBDb25maWd1cmF0aW9uPC9oND5cbiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC1zbSB0ZXh0LXllbGxvdy03MDAgbXQtMVwiPlxuICAgICAgICAgICAgICAgICAgICAgIFByb3ZpZGUgU1NIIGNyZWRlbnRpYWxzIGZvciBjbHVzdGVyIG1hY2hpbmVzLiBTU0gga2V5cyB3aWxsIGJlIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGFuZCBkZXBsb3llZCB1c2luZyB0aGVzZSBjcmVkZW50aWFscy4gXG4gICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz4gUGFzc3dvcmRzIGFyZSBvbmx5IHVzZWQgZHVyaW5nIHNldHVwIGFuZCBhcmUgbm90IHN0b3JlZC48L3N0cm9uZz5cbiAgICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZ3JpZCBncmlkLWNvbHMtMSBtZDpncmlkLWNvbHMtMiBnYXAtNFwiPlxuICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3NOYW1lPVwiYmxvY2sgdGV4dC1zbSBmb250LW1lZGl1bSB0ZXh0LWdyYXktNzAwIG1iLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgU1NIIFVzZXJuYW1lIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtcmVkLTUwMFwiPio8L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2NvbmZpZy5zc2hVc2VybmFtZX1cbiAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiBzZXRDb25maWcocHJldiA9PiAoeyAuLi5wcmV2LCBzc2hVc2VybmFtZTogZS50YXJnZXQudmFsdWUgfSkpfVxuICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cInVidW50dVwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInctZnVsbCBweC0zIHB5LTIgYm9yZGVyIGJvcmRlci1ncmF5LTMwMCByb3VuZGVkLWxnIGZvY3VzOnJpbmctYnp6ei1wcmltYXJ5IGZvY3VzOmJvcmRlci1ienp6LXByaW1hcnlcIlxuICAgICAgICAgICAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQtc20gdGV4dC1ncmF5LTUwMCBtdC0xXCI+XG4gICAgICAgICAgICAgICAgICAgIEV4YWN0IFNTSCB1c2VybmFtZSBmb3IgY2x1c3RlciBtYWNoaW5lc1xuICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzc05hbWU9XCJibG9jayB0ZXh0LXNtIGZvbnQtbWVkaXVtIHRleHQtZ3JheS03MDAgbWItMlwiPlxuICAgICAgICAgICAgICAgICAgICBTU0ggUG9ydFxuICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2NvbmZpZy5zc2hQb3J0fVxuICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IHNldENvbmZpZyhwcmV2ID0+ICh7IC4uLnByZXYsIHNzaFBvcnQ6IHBhcnNlSW50KGUudGFyZ2V0LnZhbHVlKSB8fCAyMiB9KSl9XG4gICAgICAgICAgICAgICAgICAgIG1pbj1cIjFcIlxuICAgICAgICAgICAgICAgICAgICBtYXg9XCI2NTUzNVwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInctZnVsbCBweC0zIHB5LTIgYm9yZGVyIGJvcmRlci1ncmF5LTMwMCByb3VuZGVkLWxnIGZvY3VzOnJpbmctYnp6ei1wcmltYXJ5IGZvY3VzOmJvcmRlci1ienp6LXByaW1hcnlcIlxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQtc20gdGV4dC1ncmF5LTUwMCBtdC0xXCI+XG4gICAgICAgICAgICAgICAgICAgIFNTSCBwb3J0IG51bWJlciAoZGVmYXVsdDogMjIpXG4gICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzTmFtZT1cImJsb2NrIHRleHQtc20gZm9udC1tZWRpdW0gdGV4dC1ncmF5LTcwMCBtYi0yXCI+XG4gICAgICAgICAgICAgICAgICBTU0ggUGFzc3dvcmQgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC1yZWQtNTAwXCI+Kjwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicmVsYXRpdmVcIj5cbiAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICB0eXBlPXtzaG93U1NIUGFzc3dvcmQgPyAndGV4dCcgOiAncGFzc3dvcmQnfVxuICAgICAgICAgICAgICAgICAgICB2YWx1ZT17Y29uZmlnLnNzaFBhc3N3b3JkfVxuICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IHNldENvbmZpZyhwcmV2ID0+ICh7IC4uLnByZXYsIHNzaFBhc3N3b3JkOiBlLnRhcmdldC52YWx1ZSB9KSl9XG4gICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiRW50ZXIgU1NIIHBhc3N3b3JkIGZvciBjbHVzdGVyIG1hY2hpbmVzXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidy1mdWxsIHB4LTMgcHktMiBwci0xMCBib3JkZXIgYm9yZGVyLWdyYXktMzAwIHJvdW5kZWQtbGcgZm9jdXM6cmluZy1ienp6LXByaW1hcnkgZm9jdXM6Ym9yZGVyLWJ6enotcHJpbWFyeVwiXG4gICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkXG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gc2V0U2hvd1NTSFBhc3N3b3JkKCFzaG93U1NIUGFzc3dvcmQpfVxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJhYnNvbHV0ZSBpbnNldC15LTAgcmlnaHQtMCBwci0zIGZsZXggaXRlbXMtY2VudGVyXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge3Nob3dTU0hQYXNzd29yZCA/IChcbiAgICAgICAgICAgICAgICAgICAgICA8RXllU2xhc2hJY29uIGNsYXNzTmFtZT1cImgtNCB3LTQgdGV4dC1ncmF5LTQwMFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgICAgPEV5ZUljb24gY2xhc3NOYW1lPVwiaC00IHctNCB0ZXh0LWdyYXktNDAwXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQtc20gdGV4dC1ncmF5LTUwMCBtdC0xXCI+XG4gICAgICAgICAgICAgICAgICBTU0ggcGFzc3dvcmQgZm9yIHRoZSBzcGVjaWZpZWQgdXNlcm5hbWUgKHVzZWQgb25seSBkdXJpbmcgc2V0dXApXG4gICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICl9XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cblxuICAgICAgey8qIFRMUy9TU0wgQ29uZmlndXJhdGlvbiAqL31cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY2FyZFwiPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIG1iLTRcIj5cbiAgICAgICAgICA8TG9ja0Nsb3NlZEljb24gY2xhc3NOYW1lPVwiaC02IHctNiB0ZXh0LWJ6enotcHJpbWFyeSBtci0yXCIgLz5cbiAgICAgICAgICA8aDMgY2xhc3NOYW1lPVwidGV4dC1sZyBmb250LW1lZGl1bSB0ZXh0LWdyYXktOTAwXCI+VExTL1NTTCBDb25maWd1cmF0aW9uPC9oMz5cbiAgICAgICAgICB7dmFsaWRhdGlvbi50bHNDZXJ0ID09PSB0cnVlICYmIDxDaGVja0NpcmNsZUljb24gY2xhc3NOYW1lPVwiaC01IHctNSB0ZXh0LWdyZWVuLTUwMCBtbC0yXCIgLz59XG4gICAgICAgICAge3ZhbGlkYXRpb24udGxzQ2VydCA9PT0gZmFsc2UgJiYgPFhDaXJjbGVJY29uIGNsYXNzTmFtZT1cImgtNSB3LTUgdGV4dC1yZWQtNTAwIG1sLTJcIiAvPn1cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJzcGFjZS15LTRcIj5cbiAgICAgICAgICA8bGFiZWwgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICBjaGVja2VkPXtjb25maWcuZW5hYmxlVExTfVxuICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IHNldENvbmZpZyhwcmV2ID0+ICh7IC4uLnByZXYsIGVuYWJsZVRMUzogZS50YXJnZXQuY2hlY2tlZCB9KSl9XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT1cIm1yLTJcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIEVuYWJsZSBUTFMgZW5jcnlwdGlvbiBmb3IgY2x1c3RlciBjb21tdW5pY2F0aW9uXG4gICAgICAgICAgPC9sYWJlbD5cblxuICAgICAgICAgIHtjb25maWcuZW5hYmxlVExTICYmIChcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwic3BhY2UteS00IG1sLTZcIj5cbiAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3NOYW1lPVwiYmxvY2sgdGV4dC1zbSBmb250LW1lZGl1bSB0ZXh0LWdyYXktNzAwIG1iLTJcIj5DZXJ0aWZpY2F0ZSBUeXBlPC9sYWJlbD5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInNwYWNlLXktMlwiPlxuICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJyYWRpb1wiXG4gICAgICAgICAgICAgICAgICAgICAgdmFsdWU9XCJzZWxmLXNpZ25lZFwiXG4gICAgICAgICAgICAgICAgICAgICAgY2hlY2tlZD17Y29uZmlnLnRsc0NlcnRUeXBlID09PSAnc2VsZi1zaWduZWQnfVxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gc2V0Q29uZmlnKHByZXYgPT4gKHsgLi4ucHJldiwgdGxzQ2VydFR5cGU6IGUudGFyZ2V0LnZhbHVlIGFzIGFueSB9KSl9XG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwibXItMlwiXG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIEdlbmVyYXRlIHNlbGYtc2lnbmVkIGNlcnRpZmljYXRlXG4gICAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJyYWRpb1wiXG4gICAgICAgICAgICAgICAgICAgICAgdmFsdWU9XCJsZXRzZW5jcnlwdFwiXG4gICAgICAgICAgICAgICAgICAgICAgY2hlY2tlZD17Y29uZmlnLnRsc0NlcnRUeXBlID09PSAnbGV0c2VuY3J5cHQnfVxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gc2V0Q29uZmlnKHByZXYgPT4gKHsgLi4ucHJldiwgdGxzQ2VydFR5cGU6IGUudGFyZ2V0LnZhbHVlIGFzIGFueSB9KSl9XG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwibXItMlwiXG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIFVzZSBMZXQncyBFbmNyeXB0IChyZXF1aXJlcyBkb21haW4pXG4gICAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJyYWRpb1wiXG4gICAgICAgICAgICAgICAgICAgICAgdmFsdWU9XCJleGlzdGluZ1wiXG4gICAgICAgICAgICAgICAgICAgICAgY2hlY2tlZD17Y29uZmlnLnRsc0NlcnRUeXBlID09PSAnZXhpc3RpbmcnfVxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gc2V0Q29uZmlnKHByZXYgPT4gKHsgLi4ucHJldiwgdGxzQ2VydFR5cGU6IGUudGFyZ2V0LnZhbHVlIGFzIGFueSB9KSl9XG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwibXItMlwiXG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIFVzZSBleGlzdGluZyBjZXJ0aWZpY2F0ZVxuICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAge2NvbmZpZy50bHNDZXJ0VHlwZSA9PT0gJ2V4aXN0aW5nJyAmJiAoXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJzcGFjZS15LTRcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzc05hbWU9XCJibG9jayB0ZXh0LXNtIGZvbnQtbWVkaXVtIHRleHQtZ3JheS03MDAgbWItMlwiPkNlcnRpZmljYXRlIFBhdGg8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2NvbmZpZy50bHNDZXJ0UGF0aH1cbiAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IHNldENvbmZpZyhwcmV2ID0+ICh7IC4uLnByZXYsIHRsc0NlcnRQYXRoOiBlLnRhcmdldC52YWx1ZSB9KSl9XG4gICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCIvcGF0aC90by9jZXJ0aWZpY2F0ZS5jcnRcIlxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInctZnVsbCBwLTMgYm9yZGVyIGJvcmRlci1ncmF5LTMwMCByb3VuZGVkLWxnXCJcbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzTmFtZT1cImJsb2NrIHRleHQtc20gZm9udC1tZWRpdW0gdGV4dC1ncmF5LTcwMCBtYi0yXCI+UHJpdmF0ZSBLZXkgUGF0aDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17Y29uZmlnLnRsc0tleVBhdGh9XG4gICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiBzZXRDb25maWcocHJldiA9PiAoeyAuLi5wcmV2LCB0bHNLZXlQYXRoOiBlLnRhcmdldC52YWx1ZSB9KSl9XG4gICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCIvcGF0aC90by9wcml2YXRlLmtleVwiXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidy1mdWxsIHAtMyBib3JkZXIgYm9yZGVyLWdyYXktMzAwIHJvdW5kZWQtbGdcIlxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICApfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICB7LyogQXV0aGVudGljYXRpb24gTWV0aG9kICovfVxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJjYXJkXCI+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIgbWItNFwiPlxuICAgICAgICAgIDxTaGllbGRDaGVja0ljb24gY2xhc3NOYW1lPVwiaC02IHctNiB0ZXh0LWJ6enotcHJpbWFyeSBtci0yXCIgLz5cbiAgICAgICAgICA8aDMgY2xhc3NOYW1lPVwidGV4dC1sZyBmb250LW1lZGl1bSB0ZXh0LWdyYXktOTAwXCI+QXV0aGVudGljYXRpb24gTWV0aG9kPC9oMz5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJzcGFjZS15LTRcIj5cbiAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzTmFtZT1cImJsb2NrIHRleHQtc20gZm9udC1tZWRpdW0gdGV4dC1ncmF5LTcwMCBtYi0yXCI+QXV0aGVudGljYXRpb24gVHlwZTwvbGFiZWw+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInNwYWNlLXktMlwiPlxuICAgICAgICAgICAgICA8bGFiZWwgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJyYWRpb1wiXG4gICAgICAgICAgICAgICAgICB2YWx1ZT1cInRva2VuXCJcbiAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e2NvbmZpZy5hdXRoTWV0aG9kID09PSAndG9rZW4nfVxuICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiBzZXRDb25maWcocHJldiA9PiAoeyAuLi5wcmV2LCBhdXRoTWV0aG9kOiBlLnRhcmdldC52YWx1ZSBhcyBhbnkgfSkpfVxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwibXItMlwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICBBUEkgVG9rZW4tYmFzZWQgYXV0aGVudGljYXRpb25cbiAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICB0eXBlPVwicmFkaW9cIlxuICAgICAgICAgICAgICAgICAgdmFsdWU9XCJjZXJ0aWZpY2F0ZVwiXG4gICAgICAgICAgICAgICAgICBjaGVja2VkPXtjb25maWcuYXV0aE1ldGhvZCA9PT0gJ2NlcnRpZmljYXRlJ31cbiAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gc2V0Q29uZmlnKHByZXYgPT4gKHsgLi4ucHJldiwgYXV0aE1ldGhvZDogZS50YXJnZXQudmFsdWUgYXMgYW55IH0pKX1cbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cIm1yLTJcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgQ2VydGlmaWNhdGUtYmFzZWQgYXV0aGVudGljYXRpb25cbiAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICB0eXBlPVwicmFkaW9cIlxuICAgICAgICAgICAgICAgICAgdmFsdWU9XCJoeWJyaWRcIlxuICAgICAgICAgICAgICAgICAgY2hlY2tlZD17Y29uZmlnLmF1dGhNZXRob2QgPT09ICdoeWJyaWQnfVxuICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiBzZXRDb25maWcocHJldiA9PiAoeyAuLi5wcmV2LCBhdXRoTWV0aG9kOiBlLnRhcmdldC52YWx1ZSBhcyBhbnkgfSkpfVxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwibXItMlwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICBIeWJyaWQgKFRva2VuICsgQ2VydGlmaWNhdGUpXG4gICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICA8bGFiZWwgY2xhc3NOYW1lPVwiYmxvY2sgdGV4dC1zbSBmb250LW1lZGl1bSB0ZXh0LWdyYXktNzAwIG1iLTJcIj5DbHVzdGVyIFNlY3JldDwvbGFiZWw+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInJlbGF0aXZlXCI+XG4gICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgIHR5cGU9e3Nob3dDbHVzdGVyU2VjcmV0ID8gXCJ0ZXh0XCIgOiBcInBhc3N3b3JkXCJ9XG4gICAgICAgICAgICAgICAgdmFsdWU9e2NvbmZpZy5jbHVzdGVyU2VjcmV0fVxuICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gc2V0Q29uZmlnKHByZXYgPT4gKHsgLi4ucHJldiwgY2x1c3RlclNlY3JldDogZS50YXJnZXQudmFsdWUgfSkpfVxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInctZnVsbCBwLTMgYm9yZGVyIGJvcmRlci1ncmF5LTMwMCByb3VuZGVkLWxnIGZvbnQtbW9ub1wiXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJDbHVzdGVyIGF1dGhlbnRpY2F0aW9uIHNlY3JldFwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYWJzb2x1dGUgcmlnaHQtMiB0b3AtMS8yIHRyYW5zZm9ybSAtdHJhbnNsYXRlLXktMS8yIGZsZXggc3BhY2UteC0xXCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRTaG93Q2x1c3RlclNlY3JldCghc2hvd0NsdXN0ZXJTZWNyZXQpfVxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwicC0xIHRleHQtZ3JheS01MDAgaG92ZXI6dGV4dC1ncmF5LTcwMFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAge3Nob3dDbHVzdGVyU2VjcmV0ID8gPEV5ZVNsYXNoSWNvbiBjbGFzc05hbWU9XCJoLTQgdy00XCIgLz4gOiA8RXllSWNvbiBjbGFzc05hbWU9XCJoLTQgdy00XCIgLz59XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICBvbkNsaWNrPXtnZW5lcmF0ZUNsdXN0ZXJTZWNyZXR9XG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJwLTEgdGV4dC1ncmF5LTUwMCBob3Zlcjp0ZXh0LWdyYXktNzAwXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8S2V5SWNvbiBjbGFzc05hbWU9XCJoLTQgdy00XCIgLz5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIHt2YWxpZGF0aW9uLmNsdXN0ZXJTZWNyZXQgPT09IGZhbHNlICYmIChcbiAgICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC1zbSB0ZXh0LXJlZC02MDAgbXQtMVwiPkNsdXN0ZXIgc2VjcmV0IGlzIHJlcXVpcmVkPC9wPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgey8qIEFjY2VzcyBDb250cm9sICovfVxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJjYXJkXCI+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIgbWItNFwiPlxuICAgICAgICAgIDxTZXJ2ZXJJY29uIGNsYXNzTmFtZT1cImgtNiB3LTYgdGV4dC1ienp6LXByaW1hcnkgbXItMlwiIC8+XG4gICAgICAgICAgPGgzIGNsYXNzTmFtZT1cInRleHQtbGcgZm9udC1tZWRpdW0gdGV4dC1ncmF5LTkwMFwiPkFjY2VzcyBDb250cm9sPC9oMz5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJzcGFjZS15LTRcIj5cbiAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzTmFtZT1cImJsb2NrIHRleHQtc20gZm9udC1tZWRpdW0gdGV4dC1ncmF5LTcwMCBtYi0yXCI+QWNjZXNzIFBvbGljeTwvbGFiZWw+XG4gICAgICAgICAgICA8c2VsZWN0XG4gICAgICAgICAgICAgIHZhbHVlPXtjb25maWcuYWNjZXNzUG9saWN5fVxuICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IHNldENvbmZpZyhwcmV2ID0+ICh7IC4uLnByZXYsIGFjY2Vzc1BvbGljeTogZS50YXJnZXQudmFsdWUgYXMgYW55IH0pKX1cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidy1mdWxsIHAtMyBib3JkZXIgYm9yZGVyLWdyYXktMzAwIHJvdW5kZWQtbGdcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwib3BlblwiPk9wZW4gKEFueW9uZSBjYW4gam9pbiBjbHVzdGVyKTwvb3B0aW9uPlxuICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwicmVzdHJpY3RlZFwiPlJlc3RyaWN0ZWQgKFJlcXVpcmUgYXV0aGVudGljYXRpb24pPC9vcHRpb24+XG4gICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJpbnZpdGUtb25seVwiPkludml0ZSBPbmx5IChNYW51YWwgYXBwcm92YWwgcmVxdWlyZWQpPC9vcHRpb24+XG4gICAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxsYWJlbCBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICAgIGNoZWNrZWQ9e2NvbmZpZy5lbmFibGVGaXJld2FsbH1cbiAgICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiBzZXRDb25maWcocHJldiA9PiAoeyAuLi5wcmV2LCBlbmFibGVGaXJld2FsbDogZS50YXJnZXQuY2hlY2tlZCB9KSl9XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT1cIm1yLTJcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIEVuYWJsZSBmaXJld2FsbCBjb25maWd1cmF0aW9uXG4gICAgICAgICAgPC9sYWJlbD5cblxuICAgICAgICAgIHtjb25maWcuZW5hYmxlRmlyZXdhbGwgJiYgKFxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtbC02IHNwYWNlLXktNFwiPlxuICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzc05hbWU9XCJibG9jayB0ZXh0LXNtIGZvbnQtbWVkaXVtIHRleHQtZ3JheS03MDAgbWItMlwiPkFsbG93ZWQgUG9ydHM8L2xhYmVsPlxuICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgdmFsdWU9e2NvbmZpZy5hbGxvd2VkUG9ydHMuam9pbignLCAnKX1cbiAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gc2V0Q29uZmlnKHByZXYgPT4gKHsgXG4gICAgICAgICAgICAgICAgICAgIC4uLnByZXYsIFxuICAgICAgICAgICAgICAgICAgICBhbGxvd2VkUG9ydHM6IGUudGFyZ2V0LnZhbHVlLnNwbGl0KCcsJykubWFwKHAgPT4gcC50cmltKCkpLmZpbHRlcihwID0+IHApXG4gICAgICAgICAgICAgICAgICB9KSl9XG4gICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIjIyLCA4MDgwLCA4MDkwLCA5MTAwLCAzMDAwXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInctZnVsbCBwLTMgYm9yZGVyIGJvcmRlci1ncmF5LTMwMCByb3VuZGVkLWxnXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIHtjb25maWdEYXRhPy5uZXR3b3JrICYmIChcbiAgICAgICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQtc20gdGV4dC1ncmVlbi02MDAgbXQtMSBmbGV4IGl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICA8Q2hlY2tDaXJjbGVJY29uIGNsYXNzTmFtZT1cImgtNCB3LTQgbXItMVwiIC8+XG4gICAgICAgICAgICAgICAgICAgIFBvcnRzIGF1dG9tYXRpY2FsbHkgY29uZmlndXJlZCBmcm9tIE5ldHdvcmsgU2V0dGluZ3M6IHtbXG4gICAgICAgICAgICAgICAgICAgICAgY29uZmlnRGF0YS5uZXR3b3JrLmJ6enpQb3J0LFxuICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ0RhdGEubmV0d29yay5tY3BQb3J0LCBcbiAgICAgICAgICAgICAgICAgICAgICBjb25maWdEYXRhLm5ldHdvcmsud2ViVUlQb3J0LFxuICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ0RhdGEubmV0d29yay5wMnBQb3J0XG4gICAgICAgICAgICAgICAgICAgIF0uZmlsdGVyKHAgPT4gcCkuam9pbignLCAnKX1cbiAgICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQtc20gdGV4dC1ncmF5LTUwMCBtdC0xXCI+XG4gICAgICAgICAgICAgICAgICBDb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBwb3J0cyB0byBhbGxvdyB0aHJvdWdoIHRoZSBmaXJld2FsbFxuICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICApfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICB7LyogU2VjdXJpdHkgU3VtbWFyeSAqL31cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmctYmx1ZS01MCBib3JkZXIgYm9yZGVyLWJsdWUtMjAwIHJvdW5kZWQtbGcgcC00XCI+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1zdGFydFwiPlxuICAgICAgICAgIDxFeGNsYW1hdGlvblRyaWFuZ2xlSWNvbiBjbGFzc05hbWU9XCJoLTUgdy01IHRleHQtYmx1ZS01MDAgbXQtMC41IG1yLTJcIiAvPlxuICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICA8aDQgY2xhc3NOYW1lPVwidGV4dC1zbSBmb250LW1lZGl1bSB0ZXh0LWJsdWUtODAwXCI+U2VjdXJpdHkgU3VtbWFyeTwvaDQ+XG4gICAgICAgICAgICA8dWwgY2xhc3NOYW1lPVwidGV4dC1zbSB0ZXh0LWJsdWUtNzAwIG10LTEgc3BhY2UteS0xXCI+XG4gICAgICAgICAgICAgIDxsaT7igKIgU1NIIGFjY2Vzczoge2NvbmZpZy5zc2hLZXlUeXBlID09PSAnZ2VuZXJhdGUnID8gJ05ldyBrZXkgcGFpciB3aWxsIGJlIGdlbmVyYXRlZCcgOiBjb25maWcuc3NoS2V5VHlwZSA9PT0gJ2V4aXN0aW5nJyA/ICdVc2luZyBwcm92aWRlZCBrZXknIDogJ01hbnVhbCBjb25maWd1cmF0aW9uJ308L2xpPlxuICAgICAgICAgICAgICA8bGk+4oCiIFRMUyBlbmNyeXB0aW9uOiB7Y29uZmlnLmVuYWJsZVRMUyA/ICdFbmFibGVkJyA6ICdEaXNhYmxlZCd9PC9saT5cbiAgICAgICAgICAgICAgPGxpPuKAoiBBdXRoZW50aWNhdGlvbjoge2NvbmZpZy5hdXRoTWV0aG9kfTwvbGk+XG4gICAgICAgICAgICAgIDxsaT7igKIgQWNjZXNzIHBvbGljeToge2NvbmZpZy5hY2Nlc3NQb2xpY3l9PC9saT5cbiAgICAgICAgICAgICAgPGxpPuKAoiBGaXJld2FsbDoge2NvbmZpZy5lbmFibGVGaXJld2FsbCA/ICdFbmFibGVkJyA6ICdEaXNhYmxlZCd9PC9saT5cbiAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBqdXN0aWZ5LWJldHdlZW4gcHQtNiBib3JkZXItdCBib3JkZXItZ3JheS0yMDBcIj5cbiAgICAgICAgPGRpdj5cbiAgICAgICAgICB7b25CYWNrICYmIChcbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG9uQ2xpY2s9e29uQmFja30gY2xhc3NOYW1lPVwiYnRuLW91dGxpbmVcIj5cbiAgICAgICAgICAgICAgQmFja1xuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxidXR0b24gXG4gICAgICAgICAgdHlwZT1cInN1Ym1pdFwiIFxuICAgICAgICAgIGRpc2FibGVkPXtjb25maWcuc3NoS2V5VHlwZSA9PT0gJ2dlbmVyYXRlJyAmJiAhY29uZmlnLnNzaFB1YmxpY0tleX1cbiAgICAgICAgICBjbGFzc05hbWU9XCJidG4tcHJpbWFyeVwiXG4gICAgICAgID5cbiAgICAgICAgICB7aXNDb21wbGV0ZWQgPyAnQ29udGludWUnIDogJ05leHQ6IEFJIEludGVncmF0aW9uJ31cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Zvcm0+XG4gIClcbn0iXSwibmFtZXMiOlsidXNlU3RhdGUiLCJ1c2VFZmZlY3QiLCJTaGllbGRDaGVja0ljb24iLCJLZXlJY29uIiwiTG9ja0Nsb3NlZEljb24iLCJTZXJ2ZXJJY29uIiwiRXllSWNvbiIsIkV5ZVNsYXNoSWNvbiIsIkRvY3VtZW50RHVwbGljYXRlSWNvbiIsIkNoZWNrQ2lyY2xlSWNvbiIsIlhDaXJjbGVJY29uIiwiRXhjbGFtYXRpb25UcmlhbmdsZUljb24iLCJTZWN1cml0eVNldHVwIiwic3lzdGVtSW5mbyIsImNvbmZpZ0RhdGEiLCJvbkNvbXBsZXRlIiwib25CYWNrIiwiaXNDb21wbGV0ZWQiLCJjb25zb2xlIiwibG9nIiwiY29uZmlnIiwic2V0Q29uZmlnIiwic3NoS2V5VHlwZSIsInNzaFB1YmxpY0tleSIsInNzaFByaXZhdGVLZXkiLCJzc2hVc2VybmFtZSIsInNzaFBhc3N3b3JkIiwic3NoUG9ydCIsImVuYWJsZVRMUyIsInRsc0NlcnRUeXBlIiwidGxzQ2VydFBhdGgiLCJ0bHNLZXlQYXRoIiwiYXV0aE1ldGhvZCIsImNsdXN0ZXJTZWNyZXQiLCJhY2Nlc3NQb2xpY3kiLCJlbmFibGVGaXJld2FsbCIsImFsbG93ZWRQb3J0cyIsInRydXN0ZWRJUHMiLCJzZWN1cml0eSIsInNob3dQcml2YXRlS2V5Iiwic2V0U2hvd1ByaXZhdGVLZXkiLCJzaG93Q2x1c3RlclNlY3JldCIsInNldFNob3dDbHVzdGVyU2VjcmV0Iiwic2hvd1NTSFBhc3N3b3JkIiwic2V0U2hvd1NTSFBhc3N3b3JkIiwiZ2VuZXJhdGluZyIsInNldEdlbmVyYXRpbmciLCJ2YWxpZGF0aW9uIiwic2V0VmFsaWRhdGlvbiIsInBvcnRzSW5pdGlhbGl6ZWQiLCJzZXRQb3J0c0luaXRpYWxpemVkIiwiZ2VuZXJhdGVDbHVzdGVyU2VjcmV0IiwiaGFzTmV0d29yayIsIm5ldHdvcmsiLCJoYXNTYXZlZFNlY3VyaXR5IiwibmV0d29ya0NvbmZpZyIsIm5ldHdvcmtQb3J0cyIsImJ6enpQb3J0IiwidG9TdHJpbmciLCJtY3BQb3J0Iiwid2ViVUlQb3J0IiwicDJwUG9ydCIsImZpbHRlciIsInBvcnQiLCJzdGFuZGFyZFBvcnRzIiwiYWxsUG9ydHMiLCJTZXQiLCJwcmV2Iiwic2VjcmV0IiwiQXJyYXkiLCJmcm9tIiwiY3J5cHRvIiwiZ2V0UmFuZG9tVmFsdWVzIiwiVWludDhBcnJheSIsIm1hcCIsImIiLCJwYWRTdGFydCIsImpvaW4iLCJnZW5lcmF0ZVNTSEtleXMiLCJQcm9taXNlIiwicmVzb2x2ZSIsInNldFRpbWVvdXQiLCJtb2NrUHVibGljS2V5IiwiaG9zdG5hbWUiLCJtb2NrUHJpdmF0ZUtleSIsInNzaEtleXMiLCJlcnJvciIsImNvcHlUb0NsaXBib2FyZCIsInRleHQiLCJuYXZpZ2F0b3IiLCJjbGlwYm9hcmQiLCJ3cml0ZVRleHQiLCJoYW5kbGVTdWJtaXQiLCJlIiwicHJldmVudERlZmF1bHQiLCJuZXdWYWxpZGF0aW9uIiwidGxzQ2VydCIsInNzaENyZWRlbnRpYWxzIiwiaXNWYWxpZCIsIk9iamVjdCIsInZhbHVlcyIsImV2ZXJ5IiwidiIsImZvcm0iLCJvblN1Ym1pdCIsImNsYXNzTmFtZSIsImRpdiIsImgzIiwibGFiZWwiLCJpbnB1dCIsInR5cGUiLCJ2YWx1ZSIsImNoZWNrZWQiLCJvbkNoYW5nZSIsInRhcmdldCIsImJ1dHRvbiIsIm9uQ2xpY2siLCJkaXNhYmxlZCIsInRleHRhcmVhIiwicmVhZE9ubHkiLCJyb3dzIiwicCIsInBsYWNlaG9sZGVyIiwiaDQiLCJzdHJvbmciLCJzcGFuIiwicmVxdWlyZWQiLCJwYXJzZUludCIsIm1pbiIsIm1heCIsInNlbGVjdCIsIm9wdGlvbiIsInNwbGl0IiwidHJpbSIsInVsIiwibGkiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./app/setup/components/SecuritySetup.tsx\n");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "(ssr)/./app/setup/components/ServiceDeployment.tsx":
|
|
/*!****************************************************!*\
|
|
!*** ./app/setup/components/ServiceDeployment.tsx ***!
|
|
\****************************************************/
|
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
|
|
"use strict";
|
|
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ ServiceDeployment)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react-jsx-dev-runtime.js\");\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _barrel_optimize_names_ArrowPathIcon_CheckCircleIcon_CloudArrowDownIcon_Cog6ToothIcon_ComputerDesktopIcon_DocumentTextIcon_ExclamationTriangleIcon_ServerIcon_StopIcon_XCircleIcon_XMarkIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! __barrel_optimize__?names=ArrowPathIcon,CheckCircleIcon,CloudArrowDownIcon,Cog6ToothIcon,ComputerDesktopIcon,DocumentTextIcon,ExclamationTriangleIcon,ServerIcon,StopIcon,XCircleIcon,XMarkIcon!=!@heroicons/react/24/outline */ \"(ssr)/./node_modules/@heroicons/react/24/outline/esm/CheckCircleIcon.js\");\n/* harmony import */ var _barrel_optimize_names_ArrowPathIcon_CheckCircleIcon_CloudArrowDownIcon_Cog6ToothIcon_ComputerDesktopIcon_DocumentTextIcon_ExclamationTriangleIcon_ServerIcon_StopIcon_XCircleIcon_XMarkIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! __barrel_optimize__?names=ArrowPathIcon,CheckCircleIcon,CloudArrowDownIcon,Cog6ToothIcon,ComputerDesktopIcon,DocumentTextIcon,ExclamationTriangleIcon,ServerIcon,StopIcon,XCircleIcon,XMarkIcon!=!@heroicons/react/24/outline */ \"(ssr)/./node_modules/@heroicons/react/24/outline/esm/XCircleIcon.js\");\n/* harmony import */ var _barrel_optimize_names_ArrowPathIcon_CheckCircleIcon_CloudArrowDownIcon_Cog6ToothIcon_ComputerDesktopIcon_DocumentTextIcon_ExclamationTriangleIcon_ServerIcon_StopIcon_XCircleIcon_XMarkIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! __barrel_optimize__?names=ArrowPathIcon,CheckCircleIcon,CloudArrowDownIcon,Cog6ToothIcon,ComputerDesktopIcon,DocumentTextIcon,ExclamationTriangleIcon,ServerIcon,StopIcon,XCircleIcon,XMarkIcon!=!@heroicons/react/24/outline */ \"(ssr)/./node_modules/@heroicons/react/24/outline/esm/ArrowPathIcon.js\");\n/* harmony import */ var _barrel_optimize_names_ArrowPathIcon_CheckCircleIcon_CloudArrowDownIcon_Cog6ToothIcon_ComputerDesktopIcon_DocumentTextIcon_ExclamationTriangleIcon_ServerIcon_StopIcon_XCircleIcon_XMarkIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! __barrel_optimize__?names=ArrowPathIcon,CheckCircleIcon,CloudArrowDownIcon,Cog6ToothIcon,ComputerDesktopIcon,DocumentTextIcon,ExclamationTriangleIcon,ServerIcon,StopIcon,XCircleIcon,XMarkIcon!=!@heroicons/react/24/outline */ \"(ssr)/./node_modules/@heroicons/react/24/outline/esm/StopIcon.js\");\n/* harmony import */ var _barrel_optimize_names_ArrowPathIcon_CheckCircleIcon_CloudArrowDownIcon_Cog6ToothIcon_ComputerDesktopIcon_DocumentTextIcon_ExclamationTriangleIcon_ServerIcon_StopIcon_XCircleIcon_XMarkIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! __barrel_optimize__?names=ArrowPathIcon,CheckCircleIcon,CloudArrowDownIcon,Cog6ToothIcon,ComputerDesktopIcon,DocumentTextIcon,ExclamationTriangleIcon,ServerIcon,StopIcon,XCircleIcon,XMarkIcon!=!@heroicons/react/24/outline */ \"(ssr)/./node_modules/@heroicons/react/24/outline/esm/ServerIcon.js\");\n/* harmony import */ var _barrel_optimize_names_ArrowPathIcon_CheckCircleIcon_CloudArrowDownIcon_Cog6ToothIcon_ComputerDesktopIcon_DocumentTextIcon_ExclamationTriangleIcon_ServerIcon_StopIcon_XCircleIcon_XMarkIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! __barrel_optimize__?names=ArrowPathIcon,CheckCircleIcon,CloudArrowDownIcon,Cog6ToothIcon,ComputerDesktopIcon,DocumentTextIcon,ExclamationTriangleIcon,ServerIcon,StopIcon,XCircleIcon,XMarkIcon!=!@heroicons/react/24/outline */ \"(ssr)/./node_modules/@heroicons/react/24/outline/esm/ExclamationTriangleIcon.js\");\n/* harmony import */ var _barrel_optimize_names_ArrowPathIcon_CheckCircleIcon_CloudArrowDownIcon_Cog6ToothIcon_ComputerDesktopIcon_DocumentTextIcon_ExclamationTriangleIcon_ServerIcon_StopIcon_XCircleIcon_XMarkIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! __barrel_optimize__?names=ArrowPathIcon,CheckCircleIcon,CloudArrowDownIcon,Cog6ToothIcon,ComputerDesktopIcon,DocumentTextIcon,ExclamationTriangleIcon,ServerIcon,StopIcon,XCircleIcon,XMarkIcon!=!@heroicons/react/24/outline */ \"(ssr)/./node_modules/@heroicons/react/24/outline/esm/CloudArrowDownIcon.js\");\n/* harmony import */ var _barrel_optimize_names_ArrowPathIcon_CheckCircleIcon_CloudArrowDownIcon_Cog6ToothIcon_ComputerDesktopIcon_DocumentTextIcon_ExclamationTriangleIcon_ServerIcon_StopIcon_XCircleIcon_XMarkIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! __barrel_optimize__?names=ArrowPathIcon,CheckCircleIcon,CloudArrowDownIcon,Cog6ToothIcon,ComputerDesktopIcon,DocumentTextIcon,ExclamationTriangleIcon,ServerIcon,StopIcon,XCircleIcon,XMarkIcon!=!@heroicons/react/24/outline */ \"(ssr)/./node_modules/@heroicons/react/24/outline/esm/DocumentTextIcon.js\");\n/* harmony import */ var _barrel_optimize_names_ArrowPathIcon_CheckCircleIcon_CloudArrowDownIcon_Cog6ToothIcon_ComputerDesktopIcon_DocumentTextIcon_ExclamationTriangleIcon_ServerIcon_StopIcon_XCircleIcon_XMarkIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! __barrel_optimize__?names=ArrowPathIcon,CheckCircleIcon,CloudArrowDownIcon,Cog6ToothIcon,ComputerDesktopIcon,DocumentTextIcon,ExclamationTriangleIcon,ServerIcon,StopIcon,XCircleIcon,XMarkIcon!=!@heroicons/react/24/outline */ \"(ssr)/./node_modules/@heroicons/react/24/outline/esm/ComputerDesktopIcon.js\");\n/* harmony import */ var _barrel_optimize_names_ArrowPathIcon_CheckCircleIcon_CloudArrowDownIcon_Cog6ToothIcon_ComputerDesktopIcon_DocumentTextIcon_ExclamationTriangleIcon_ServerIcon_StopIcon_XCircleIcon_XMarkIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! __barrel_optimize__?names=ArrowPathIcon,CheckCircleIcon,CloudArrowDownIcon,Cog6ToothIcon,ComputerDesktopIcon,DocumentTextIcon,ExclamationTriangleIcon,ServerIcon,StopIcon,XCircleIcon,XMarkIcon!=!@heroicons/react/24/outline */ \"(ssr)/./node_modules/@heroicons/react/24/outline/esm/XMarkIcon.js\");\n/* harmony import */ var _barrel_optimize_names_ArrowPathIcon_CheckCircleIcon_CloudArrowDownIcon_Cog6ToothIcon_ComputerDesktopIcon_DocumentTextIcon_ExclamationTriangleIcon_ServerIcon_StopIcon_XCircleIcon_XMarkIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! __barrel_optimize__?names=ArrowPathIcon,CheckCircleIcon,CloudArrowDownIcon,Cog6ToothIcon,ComputerDesktopIcon,DocumentTextIcon,ExclamationTriangleIcon,ServerIcon,StopIcon,XCircleIcon,XMarkIcon!=!@heroicons/react/24/outline */ \"(ssr)/./node_modules/@heroicons/react/24/outline/esm/Cog6ToothIcon.js\");\n/* __next_internal_client_entry_do_not_use__ default auto */ \n\n\nfunction ServiceDeployment({ systemInfo, configData, onComplete, onBack, isCompleted }) {\n const [machines, setMachines] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)([]);\n const [isDiscovering, setIsDiscovering] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n const [discoveryProgress, setDiscoveryProgress] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(0);\n const [discoveryStatus, setDiscoveryStatus] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(\"\");\n const [showLogs, setShowLogs] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);\n const [deploymentLogs, setDeploymentLogs] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)({});\n const [showConsole, setShowConsole] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);\n const [consoleLogs, setConsoleLogs] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)({});\n const [config, setConfig] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)({\n deploymentMethod: \"systemd\",\n autoStart: true,\n healthCheckInterval: 30,\n selectedMachines: []\n });\n // Initialize with current machine\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{\n const currentMachine = {\n id: \"localhost\",\n hostname: systemInfo?.network?.hostname || \"localhost\",\n ip: configData?.network?.primaryIP || \"127.0.0.1\",\n os: systemInfo?.os || \"linux\",\n osVersion: \"Current Host\",\n sshStatus: \"connected\",\n deployStatus: \"running\",\n selected: true,\n systemInfo: {\n cpu: systemInfo?.cpu_cores || 0,\n memory: Math.round((systemInfo?.memory_mb || 0) / 1024),\n disk: systemInfo?.storage?.free_space_gb || 0\n }\n };\n setMachines([\n currentMachine\n ]);\n setConfig((prev)=>({\n ...prev,\n selectedMachines: [\n \"localhost\"\n ]\n }));\n }, [\n systemInfo,\n configData\n ]);\n const discoverMachines = async ()=>{\n setIsDiscovering(true);\n setDiscoveryProgress(0);\n setDiscoveryStatus(\"Initializing network scan...\");\n try {\n // Simulate progress updates during discovery\n const progressInterval = setInterval(()=>{\n setDiscoveryProgress((prev)=>{\n const newProgress = prev + 10;\n if (newProgress <= 30) {\n setDiscoveryStatus(\"Scanning network subnet...\");\n } else if (newProgress <= 60) {\n setDiscoveryStatus(\"Checking SSH accessibility...\");\n } else if (newProgress <= 90) {\n setDiscoveryStatus(\"Gathering system information...\");\n } else {\n setDiscoveryStatus(\"Finalizing discovery...\");\n }\n return Math.min(newProgress, 95);\n });\n }, 200);\n const response = await fetch(\"/api/setup/discover-machines\", {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\"\n },\n body: JSON.stringify({\n subnet: configData?.network?.allowedIPs?.[0] || \"192.168.1.0/24\",\n sshKey: configData?.security?.sshPublicKey\n })\n });\n clearInterval(progressInterval);\n setDiscoveryProgress(100);\n if (response.ok) {\n const result = await response.json();\n setDiscoveryStatus(`Found ${result.machines?.length || 0} machines`);\n const discoveredMachines = result.machines.map((m)=>({\n id: m.ip,\n hostname: m.hostname || \"Unknown\",\n ip: m.ip,\n os: m.os || \"unknown\",\n osVersion: m.os_version || \"Unknown\",\n sshStatus: \"unknown\",\n deployStatus: \"not_deployed\",\n selected: false,\n lastSeen: new Date().toISOString(),\n systemInfo: m.system_info\n }));\n // Merge with existing machines (keep localhost)\n setMachines((prev)=>{\n const localhost = prev.find((m)=>m.id === \"localhost\");\n return localhost ? [\n localhost,\n ...discoveredMachines\n ] : discoveredMachines;\n });\n } else {\n setDiscoveryStatus(\"Discovery failed - check network configuration\");\n }\n } catch (error) {\n console.error(\"Discovery failed:\", error);\n setDiscoveryStatus(\"Discovery error - network unreachable\");\n } finally{\n setTimeout(()=>{\n setIsDiscovering(false);\n setDiscoveryProgress(0);\n setDiscoveryStatus(\"\");\n }, 2000);\n }\n };\n const testSSHConnection = async (machineId)=>{\n setMachines((prev)=>prev.map((m)=>m.id === machineId ? {\n ...m,\n sshStatus: \"testing\"\n } : m));\n try {\n const machine = machines.find((m)=>m.id === machineId);\n const response = await fetch(\"/api/setup/test-ssh\", {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\"\n },\n body: JSON.stringify({\n ip: machine?.ip,\n sshKey: configData?.security?.sshPrivateKey,\n sshUsername: configData?.security?.sshUsername || \"ubuntu\",\n sshPassword: configData?.security?.sshPassword,\n sshPort: configData?.security?.sshPort || 22\n })\n });\n const result = await response.json();\n setMachines((prev)=>prev.map((m)=>m.id === machineId ? {\n ...m,\n sshStatus: result.success ? \"connected\" : \"failed\",\n os: result.os || m.os,\n osVersion: result.os_version || m.osVersion,\n systemInfo: result.system_info || m.systemInfo\n } : m));\n } catch (error) {\n setMachines((prev)=>prev.map((m)=>m.id === machineId ? {\n ...m,\n sshStatus: \"failed\"\n } : m));\n }\n };\n const deployToMachine = async (machineId)=>{\n setMachines((prev)=>prev.map((m)=>m.id === machineId ? {\n ...m,\n deployStatus: \"installing\",\n deployProgress: 0,\n deployStep: \"Initializing deployment...\"\n } : m));\n const logs = [];\n const consoleLogs = [\n `🚀 Starting deployment to ${machines.find((m)=>m.id === machineId)?.hostname} (${machines.find((m)=>m.id === machineId)?.ip})`\n ];\n setDeploymentLogs((prev)=>({\n ...prev,\n [machineId]: logs\n }));\n setConsoleLogs((prev)=>({\n ...prev,\n [machineId]: consoleLogs\n }));\n // Open console if not already showing\n if (!showConsole) {\n setShowConsole(machineId);\n }\n // Real-time console logging helper\n const addConsoleLog = (message)=>{\n const timestamp = new Date().toLocaleTimeString();\n const logMessage = `[${timestamp}] ${message}`;\n setConsoleLogs((prev)=>({\n ...prev,\n [machineId]: [\n ...prev[machineId] || [],\n logMessage\n ]\n }));\n };\n // Simulate progress updates\n const progressSteps = [\n {\n progress: 10,\n step: \"Establishing SSH connection...\"\n },\n {\n progress: 30,\n step: \"Copying BZZZ binary...\"\n },\n {\n progress: 60,\n step: \"Creating systemd service...\"\n },\n {\n progress: 80,\n step: \"Starting service...\"\n },\n {\n progress: 100,\n step: \"Deployment complete!\"\n }\n ];\n const updateProgress = (stepIndex)=>{\n if (stepIndex < progressSteps.length) {\n const { progress, step } = progressSteps[stepIndex];\n setMachines((prev)=>prev.map((m)=>m.id === machineId ? {\n ...m,\n deployProgress: progress,\n deployStep: step\n } : m));\n logs.push(`📦 ${step}`);\n addConsoleLog(`📦 ${step}`);\n setDeploymentLogs((prev)=>({\n ...prev,\n [machineId]: [\n ...prev[machineId] || [],\n `📦 ${step}`\n ]\n }));\n }\n };\n try {\n const machine = machines.find((m)=>m.id === machineId);\n addConsoleLog(`🚀 Starting deployment to ${machine?.hostname}...`);\n addConsoleLog(`📡 Sending deployment request to backend API...`);\n // Set initial progress\n setMachines((prev)=>prev.map((m)=>m.id === machineId ? {\n ...m,\n deployProgress: 10,\n deployStep: \"Contacting backend API...\"\n } : m));\n const response = await fetch(\"/api/setup/deploy-service\", {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\"\n },\n body: JSON.stringify({\n ip: machine?.ip,\n sshKey: configData?.security?.sshPrivateKey,\n sshUsername: configData?.security?.sshUsername || \"ubuntu\",\n sshPassword: configData?.security?.sshPassword,\n sshPort: configData?.security?.sshPort || 22,\n config: {\n ports: {\n api: configData?.network?.bzzzPort || 8080,\n mcp: configData?.network?.mcpPort || 3000,\n webui: configData?.network?.webUIPort || 8080,\n p2p: configData?.network?.p2pPort || 7000\n },\n security: configData?.security,\n autoStart: config.autoStart\n }\n })\n });\n const result = await response.json();\n addConsoleLog(`📨 Received response from backend API`);\n if (result.success) {\n setMachines((prev)=>prev.map((m)=>m.id === machineId ? {\n ...m,\n deployStatus: \"running\",\n deployProgress: 100,\n deployStep: \"Running\"\n } : m));\n logs.push(\"✅ Deployment completed successfully\");\n addConsoleLog(\"✅ Deployment completed successfully!\");\n // Show actual backend steps if provided\n if (result.steps) {\n result.steps.forEach((step)=>{\n logs.push(step);\n addConsoleLog(`📋 ${step}`);\n });\n }\n addConsoleLog(`🎉 CHORUS:agents service is now running on ${machine?.hostname}`);\n } else {\n setMachines((prev)=>prev.map((m)=>m.id === machineId ? {\n ...m,\n deployStatus: \"error\",\n deployProgress: 0,\n deployStep: \"Failed\"\n } : m));\n logs.push(`❌ Deployment failed: ${result.error}`);\n addConsoleLog(`❌ Deployment failed: ${result.error}`);\n addConsoleLog(`💡 Note: This was a real backend error, not simulated progress`);\n }\n } catch (error) {\n setMachines((prev)=>prev.map((m)=>m.id === machineId ? {\n ...m,\n deployStatus: \"error\",\n deployProgress: 0,\n deployStep: \"Error\"\n } : m));\n logs.push(`❌ Deployment error: ${error}`);\n addConsoleLog(`❌ Deployment error: ${error}`);\n }\n setDeploymentLogs((prev)=>({\n ...prev,\n [machineId]: logs\n }));\n };\n const toggleMachineSelection = (machineId)=>{\n setMachines((prev)=>prev.map((m)=>m.id === machineId ? {\n ...m,\n selected: !m.selected\n } : m));\n setConfig((prev)=>({\n ...prev,\n selectedMachines: machines.map((m)=>m.id === machineId ? {\n ...m,\n selected: !m.selected\n } : m).filter((m)=>m.selected).map((m)=>m.id)\n }));\n };\n const deployToSelected = async ()=>{\n const selectedMachines = machines.filter((m)=>m.selected && m.sshStatus === \"connected\");\n for (const machine of selectedMachines){\n if (machine.deployStatus === \"not_deployed\") {\n await deployToMachine(machine.id);\n }\n }\n };\n const removeMachine = (machineId)=>{\n // Don't allow removing localhost\n if (machineId === \"localhost\") return;\n setMachines((prev)=>prev.filter((m)=>m.id !== machineId));\n setConfig((prev)=>({\n ...prev,\n selectedMachines: prev.selectedMachines.filter((id)=>id !== machineId)\n }));\n // Clean up logs for removed machine\n setDeploymentLogs((prev)=>{\n const { [machineId]: removed, ...rest } = prev;\n return rest;\n });\n };\n const getStatusIcon = (status)=>{\n switch(status){\n case \"connected\":\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_ArrowPathIcon_CheckCircleIcon_CloudArrowDownIcon_Cog6ToothIcon_ComputerDesktopIcon_DocumentTextIcon_ExclamationTriangleIcon_ServerIcon_StopIcon_XCircleIcon_XMarkIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n className: \"h-5 w-5 text-green-500\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ServiceDeployment.tsx\",\n lineNumber: 383,\n columnNumber: 32\n }, this);\n case \"failed\":\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_ArrowPathIcon_CheckCircleIcon_CloudArrowDownIcon_Cog6ToothIcon_ComputerDesktopIcon_DocumentTextIcon_ExclamationTriangleIcon_ServerIcon_StopIcon_XCircleIcon_XMarkIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n className: \"h-5 w-5 text-red-500\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ServiceDeployment.tsx\",\n lineNumber: 384,\n columnNumber: 29\n }, this);\n case \"testing\":\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_ArrowPathIcon_CheckCircleIcon_CloudArrowDownIcon_Cog6ToothIcon_ComputerDesktopIcon_DocumentTextIcon_ExclamationTriangleIcon_ServerIcon_StopIcon_XCircleIcon_XMarkIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n className: \"h-5 w-5 text-blue-500 animate-spin\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ServiceDeployment.tsx\",\n lineNumber: 385,\n columnNumber: 30\n }, this);\n case \"running\":\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_ArrowPathIcon_CheckCircleIcon_CloudArrowDownIcon_Cog6ToothIcon_ComputerDesktopIcon_DocumentTextIcon_ExclamationTriangleIcon_ServerIcon_StopIcon_XCircleIcon_XMarkIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n className: \"h-5 w-5 text-green-500\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ServiceDeployment.tsx\",\n lineNumber: 386,\n columnNumber: 30\n }, this);\n case \"installing\":\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_ArrowPathIcon_CheckCircleIcon_CloudArrowDownIcon_Cog6ToothIcon_ComputerDesktopIcon_DocumentTextIcon_ExclamationTriangleIcon_ServerIcon_StopIcon_XCircleIcon_XMarkIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n className: \"h-5 w-5 text-blue-500 animate-spin\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ServiceDeployment.tsx\",\n lineNumber: 387,\n columnNumber: 33\n }, this);\n case \"error\":\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_ArrowPathIcon_CheckCircleIcon_CloudArrowDownIcon_Cog6ToothIcon_ComputerDesktopIcon_DocumentTextIcon_ExclamationTriangleIcon_ServerIcon_StopIcon_XCircleIcon_XMarkIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n className: \"h-5 w-5 text-red-500\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ServiceDeployment.tsx\",\n lineNumber: 388,\n columnNumber: 28\n }, this);\n case \"stopped\":\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_ArrowPathIcon_CheckCircleIcon_CloudArrowDownIcon_Cog6ToothIcon_ComputerDesktopIcon_DocumentTextIcon_ExclamationTriangleIcon_ServerIcon_StopIcon_XCircleIcon_XMarkIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n className: \"h-5 w-5 text-yellow-500\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ServiceDeployment.tsx\",\n lineNumber: 389,\n columnNumber: 30\n }, this);\n default:\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_ArrowPathIcon_CheckCircleIcon_CloudArrowDownIcon_Cog6ToothIcon_ComputerDesktopIcon_DocumentTextIcon_ExclamationTriangleIcon_ServerIcon_StopIcon_XCircleIcon_XMarkIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n className: \"h-5 w-5 text-gray-400\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ServiceDeployment.tsx\",\n lineNumber: 390,\n columnNumber: 23\n }, this);\n }\n };\n const handleSubmit = (e)=>{\n e.preventDefault();\n onComplete({\n deployment: {\n ...config,\n machines: machines.filter((m)=>m.selected).map((m)=>({\n id: m.id,\n ip: m.ip,\n hostname: m.hostname,\n deployStatus: m.deployStatus\n }))\n }\n });\n };\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"form\", {\n onSubmit: handleSubmit,\n className: \"space-y-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-yellow-50 border border-yellow-200 rounded-lg p-4\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-start\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_ArrowPathIcon_CheckCircleIcon_CloudArrowDownIcon_Cog6ToothIcon_ComputerDesktopIcon_DocumentTextIcon_ExclamationTriangleIcon_ServerIcon_StopIcon_XCircleIcon_XMarkIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n className: \"h-5 w-5 text-yellow-600 mt-0.5 mr-3 flex-shrink-0\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ServiceDeployment.tsx\",\n lineNumber: 415,\n columnNumber: 11\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)(\"h3\", {\n className: \"text-sm font-medium text-yellow-800\",\n children: \"Operating System Support\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ServiceDeployment.tsx\",\n lineNumber: 417,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-sm text-yellow-700 mt-1\",\n children: [\n \"CHORUS:agents automated deployment supports \",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"strong\", {\n children: \"Linux distributions that use systemd by default\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ServiceDeployment.tsx\",\n lineNumber: 419,\n columnNumber: 59\n }, this),\n \" (Ubuntu 16+, CentOS 7+, Debian 8+, RHEL 7+, etc.). For other operating systems or init systems, you'll need to manually deploy the CHORUS:agents binary and configure services on your cluster.\"\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ServiceDeployment.tsx\",\n lineNumber: 418,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ServiceDeployment.tsx\",\n lineNumber: 416,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ServiceDeployment.tsx\",\n lineNumber: 414,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ServiceDeployment.tsx\",\n lineNumber: 413,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"card\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center justify-between mb-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h3\", {\n className: \"text-lg font-medium text-gray-900 flex items-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_ArrowPathIcon_CheckCircleIcon_CloudArrowDownIcon_Cog6ToothIcon_ComputerDesktopIcon_DocumentTextIcon_ExclamationTriangleIcon_ServerIcon_StopIcon_XCircleIcon_XMarkIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n className: \"h-6 w-6 text-bzzz-primary mr-2\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ServiceDeployment.tsx\",\n lineNumber: 430,\n columnNumber: 13\n }, this),\n \"Machine Discovery\"\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ServiceDeployment.tsx\",\n lineNumber: 429,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n type: \"button\",\n onClick: discoverMachines,\n disabled: isDiscovering,\n className: \"btn-outline flex items-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_ArrowPathIcon_CheckCircleIcon_CloudArrowDownIcon_Cog6ToothIcon_ComputerDesktopIcon_DocumentTextIcon_ExclamationTriangleIcon_ServerIcon_StopIcon_XCircleIcon_XMarkIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n className: `h-4 w-4 mr-2 ${isDiscovering ? \"animate-spin\" : \"\"}`\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ServiceDeployment.tsx\",\n lineNumber: 439,\n columnNumber: 13\n }, this),\n isDiscovering ? \"Discovering...\" : \"Discover Machines\"\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ServiceDeployment.tsx\",\n lineNumber: 433,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ServiceDeployment.tsx\",\n lineNumber: 428,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-sm text-gray-600 mb-4\",\n children: [\n \"Scan network subnet: \",\n configData?.network?.allowedIPs?.[0] || \"192.168.1.0/24\"\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ServiceDeployment.tsx\",\n lineNumber: 444,\n columnNumber: 9\n }, this),\n isDiscovering && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mb-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center justify-between mb-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-sm font-medium text-gray-700\",\n children: discoveryStatus\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ServiceDeployment.tsx\",\n lineNumber: 452,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-sm text-gray-500\",\n children: [\n discoveryProgress,\n \"%\"\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ServiceDeployment.tsx\",\n lineNumber: 453,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ServiceDeployment.tsx\",\n lineNumber: 451,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full bg-gray-200 rounded-full h-2\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-bzzz-primary h-2 rounded-full transition-all duration-300 ease-out\",\n style: {\n width: `${discoveryProgress}%`\n }\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ServiceDeployment.tsx\",\n lineNumber: 456,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ServiceDeployment.tsx\",\n lineNumber: 455,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ServiceDeployment.tsx\",\n lineNumber: 450,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ServiceDeployment.tsx\",\n lineNumber: 427,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"card\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center justify-between mb-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h3\", {\n className: \"text-lg font-medium text-gray-900\",\n children: \"Cluster Machines\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ServiceDeployment.tsx\",\n lineNumber: 468,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n type: \"button\",\n onClick: deployToSelected,\n disabled: machines.filter((m)=>m.selected && m.sshStatus === \"connected\").length === 0,\n className: \"btn-primary flex items-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_ArrowPathIcon_CheckCircleIcon_CloudArrowDownIcon_Cog6ToothIcon_ComputerDesktopIcon_DocumentTextIcon_ExclamationTriangleIcon_ServerIcon_StopIcon_XCircleIcon_XMarkIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n className: \"h-4 w-4 mr-2\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ServiceDeployment.tsx\",\n lineNumber: 475,\n columnNumber: 13\n }, this),\n \"Deploy to Selected\"\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ServiceDeployment.tsx\",\n lineNumber: 469,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ServiceDeployment.tsx\",\n lineNumber: 467,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"overflow-x-auto\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"table\", {\n className: \"min-w-full divide-y divide-gray-200\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"thead\", {\n className: \"bg-gray-50\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"tr\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"th\", {\n className: \"px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider\",\n children: \"Select\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ServiceDeployment.tsx\",\n lineNumber: 484,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"th\", {\n className: \"px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider\",\n children: \"Machine\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ServiceDeployment.tsx\",\n lineNumber: 487,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"th\", {\n className: \"px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider\",\n children: \"Operating System\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ServiceDeployment.tsx\",\n lineNumber: 490,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"th\", {\n className: \"px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider\",\n children: \"IP Address\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ServiceDeployment.tsx\",\n lineNumber: 493,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"th\", {\n className: \"px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider\",\n children: \"SSH Status\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ServiceDeployment.tsx\",\n lineNumber: 496,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"th\", {\n className: \"px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider\",\n children: \"Deploy Status\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ServiceDeployment.tsx\",\n lineNumber: 499,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"th\", {\n className: \"px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider\",\n children: \"Actions\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ServiceDeployment.tsx\",\n lineNumber: 502,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"th\", {\n className: \"px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider\",\n children: \"Remove\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ServiceDeployment.tsx\",\n lineNumber: 505,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ServiceDeployment.tsx\",\n lineNumber: 483,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ServiceDeployment.tsx\",\n lineNumber: 482,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"tbody\", {\n className: \"bg-white divide-y divide-gray-200\",\n children: machines.map((machine)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"tr\", {\n className: machine.selected ? \"bg-blue-50\" : \"\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"td\", {\n className: \"px-6 py-4 whitespace-nowrap\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"checkbox\",\n checked: machine.selected,\n onChange: ()=>toggleMachineSelection(machine.id),\n className: \"h-4 w-4 text-bzzz-primary focus:ring-bzzz-primary border-gray-300 rounded\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ServiceDeployment.tsx\",\n lineNumber: 514,\n columnNumber: 21\n }, this)\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ServiceDeployment.tsx\",\n lineNumber: 513,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"td\", {\n className: \"px-6 py-4 whitespace-nowrap\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm font-medium text-gray-900\",\n children: machine.hostname\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ServiceDeployment.tsx\",\n lineNumber: 523,\n columnNumber: 23\n }, this),\n machine.systemInfo && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs text-gray-500\",\n children: [\n machine.systemInfo.cpu,\n \" cores • \",\n machine.systemInfo.memory,\n \"GB RAM • \",\n machine.systemInfo.disk,\n \"GB disk\"\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ServiceDeployment.tsx\",\n lineNumber: 525,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ServiceDeployment.tsx\",\n lineNumber: 522,\n columnNumber: 21\n }, this)\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ServiceDeployment.tsx\",\n lineNumber: 521,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"td\", {\n className: \"px-6 py-4 whitespace-nowrap\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm text-gray-900\",\n children: machine.os\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ServiceDeployment.tsx\",\n lineNumber: 532,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs text-gray-500\",\n children: machine.osVersion\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ServiceDeployment.tsx\",\n lineNumber: 533,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ServiceDeployment.tsx\",\n lineNumber: 531,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"td\", {\n className: \"px-6 py-4 whitespace-nowrap text-sm text-gray-900\",\n children: machine.ip\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ServiceDeployment.tsx\",\n lineNumber: 535,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"td\", {\n className: \"px-6 py-4 whitespace-nowrap\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center\",\n children: [\n getStatusIcon(machine.sshStatus),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"ml-2 text-sm text-gray-900 capitalize\",\n children: machine.sshStatus.replace(\"_\", \" \")\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ServiceDeployment.tsx\",\n lineNumber: 541,\n columnNumber: 23\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ServiceDeployment.tsx\",\n lineNumber: 539,\n columnNumber: 21\n }, this)\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ServiceDeployment.tsx\",\n lineNumber: 538,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"td\", {\n className: \"px-6 py-4 whitespace-nowrap\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center\",\n children: [\n getStatusIcon(machine.deployStatus),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"ml-2 flex-1\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm text-gray-900 capitalize\",\n children: machine.deployStatus.replace(\"_\", \" \")\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ServiceDeployment.tsx\",\n lineNumber: 550,\n columnNumber: 25\n }, this),\n machine.deployStatus === \"installing\" && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mt-1\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs text-gray-500 mb-1\",\n children: machine.deployStep || \"Deploying...\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ServiceDeployment.tsx\",\n lineNumber: 555,\n columnNumber: 29\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full bg-gray-200 rounded-full h-2\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-blue-500 h-2 rounded-full transition-all duration-300\",\n style: {\n width: `${machine.deployProgress || 0}%`\n }\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ServiceDeployment.tsx\",\n lineNumber: 559,\n columnNumber: 31\n }, this)\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ServiceDeployment.tsx\",\n lineNumber: 558,\n columnNumber: 29\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs text-gray-500 mt-1\",\n children: [\n machine.deployProgress || 0,\n \"%\"\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ServiceDeployment.tsx\",\n lineNumber: 564,\n columnNumber: 29\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ServiceDeployment.tsx\",\n lineNumber: 554,\n columnNumber: 27\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ServiceDeployment.tsx\",\n lineNumber: 549,\n columnNumber: 23\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ServiceDeployment.tsx\",\n lineNumber: 547,\n columnNumber: 21\n }, this)\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ServiceDeployment.tsx\",\n lineNumber: 546,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"td\", {\n className: \"px-6 py-4 whitespace-nowrap text-sm font-medium space-x-2\",\n children: [\n machine.id !== \"localhost\" && machine.sshStatus !== \"connected\" && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n type: \"button\",\n onClick: ()=>testSSHConnection(machine.id),\n className: \"text-blue-600 hover:text-blue-900\",\n disabled: machine.sshStatus === \"testing\",\n children: \"Test SSH\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ServiceDeployment.tsx\",\n lineNumber: 574,\n columnNumber: 23\n }, this),\n machine.sshStatus === \"connected\" && machine.deployStatus === \"not_deployed\" && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n type: \"button\",\n onClick: ()=>deployToMachine(machine.id),\n className: \"text-green-600 hover:text-green-900\",\n children: \"Install\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ServiceDeployment.tsx\",\n lineNumber: 585,\n columnNumber: 23\n }, this),\n machine.deployStatus !== \"not_deployed\" && /*#__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 type: \"button\",\n onClick: ()=>setShowLogs(machine.id),\n className: \"text-gray-600 hover:text-gray-900 mr-2\",\n title: \"View deployment logs\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_ArrowPathIcon_CheckCircleIcon_CloudArrowDownIcon_Cog6ToothIcon_ComputerDesktopIcon_DocumentTextIcon_ExclamationTriangleIcon_ServerIcon_StopIcon_XCircleIcon_XMarkIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n className: \"h-4 w-4 inline\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ServiceDeployment.tsx\",\n lineNumber: 602,\n columnNumber: 27\n }, this)\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ServiceDeployment.tsx\",\n lineNumber: 596,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n type: \"button\",\n onClick: ()=>setShowConsole(machine.id),\n className: \"text-blue-600 hover:text-blue-900\",\n title: \"Open deployment console\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_ArrowPathIcon_CheckCircleIcon_CloudArrowDownIcon_Cog6ToothIcon_ComputerDesktopIcon_DocumentTextIcon_ExclamationTriangleIcon_ServerIcon_StopIcon_XCircleIcon_XMarkIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n className: \"h-4 w-4 inline\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ServiceDeployment.tsx\",\n lineNumber: 610,\n columnNumber: 27\n }, this)\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ServiceDeployment.tsx\",\n lineNumber: 604,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ServiceDeployment.tsx\",\n lineNumber: 572,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"td\", {\n className: \"px-6 py-4 whitespace-nowrap text-sm font-medium\",\n children: machine.id !== \"localhost\" && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n type: \"button\",\n onClick: ()=>removeMachine(machine.id),\n className: \"text-red-600 hover:text-red-900 p-1 rounded hover:bg-red-50\",\n title: \"Remove machine\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_ArrowPathIcon_CheckCircleIcon_CloudArrowDownIcon_Cog6ToothIcon_ComputerDesktopIcon_DocumentTextIcon_ExclamationTriangleIcon_ServerIcon_StopIcon_XCircleIcon_XMarkIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {\n className: \"h-4 w-4\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ServiceDeployment.tsx\",\n lineNumber: 623,\n columnNumber: 25\n }, this)\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ServiceDeployment.tsx\",\n lineNumber: 617,\n columnNumber: 23\n }, this)\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ServiceDeployment.tsx\",\n lineNumber: 615,\n columnNumber: 19\n }, this)\n ]\n }, machine.id, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ServiceDeployment.tsx\",\n lineNumber: 512,\n columnNumber: 17\n }, this))\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ServiceDeployment.tsx\",\n lineNumber: 510,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ServiceDeployment.tsx\",\n lineNumber: 481,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ServiceDeployment.tsx\",\n lineNumber: 480,\n columnNumber: 9\n }, this),\n machines.length === 0 && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-center py-8\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_ArrowPathIcon_CheckCircleIcon_CloudArrowDownIcon_Cog6ToothIcon_ComputerDesktopIcon_DocumentTextIcon_ExclamationTriangleIcon_ServerIcon_StopIcon_XCircleIcon_XMarkIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n className: \"h-12 w-12 text-gray-400 mx-auto mb-4\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ServiceDeployment.tsx\",\n lineNumber: 635,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-gray-500\",\n children: 'No machines discovered yet. Click \"Discover Machines\" to scan your network.'\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ServiceDeployment.tsx\",\n lineNumber: 636,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ServiceDeployment.tsx\",\n lineNumber: 634,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ServiceDeployment.tsx\",\n lineNumber: 466,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"card\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h3\", {\n className: \"text-lg font-medium text-gray-900 mb-4 flex items-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_ArrowPathIcon_CheckCircleIcon_CloudArrowDownIcon_Cog6ToothIcon_ComputerDesktopIcon_DocumentTextIcon_ExclamationTriangleIcon_ServerIcon_StopIcon_XCircleIcon_XMarkIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_12__[\"default\"], {\n className: \"h-6 w-6 text-bzzz-primary mr-2\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ServiceDeployment.tsx\",\n lineNumber: 644,\n columnNumber: 11\n }, this),\n \"Deployment Configuration\"\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ServiceDeployment.tsx\",\n lineNumber: 643,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid grid-cols-1 md:grid-cols-2 gap-4\",\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)(\"label\", {\n className: \"flex items-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"checkbox\",\n checked: config.autoStart,\n onChange: (e)=>setConfig((prev)=>({\n ...prev,\n autoStart: e.target.checked\n })),\n className: \"mr-2\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ServiceDeployment.tsx\",\n lineNumber: 651,\n columnNumber: 15\n }, this),\n \"Auto-start services after deployment\"\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ServiceDeployment.tsx\",\n lineNumber: 650,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ServiceDeployment.tsx\",\n lineNumber: 649,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"label\", {\n className: \"block text-sm font-medium text-gray-700 mb-2\",\n children: \"Health Check Interval (seconds)\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ServiceDeployment.tsx\",\n lineNumber: 662,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"number\",\n value: config.healthCheckInterval,\n onChange: (e)=>setConfig((prev)=>({\n ...prev,\n healthCheckInterval: parseInt(e.target.value)\n })),\n min: \"10\",\n max: \"300\",\n className: \"input-field\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ServiceDeployment.tsx\",\n lineNumber: 665,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ServiceDeployment.tsx\",\n lineNumber: 661,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ServiceDeployment.tsx\",\n lineNumber: 648,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ServiceDeployment.tsx\",\n lineNumber: 642,\n columnNumber: 7\n }, this),\n showLogs && /*#__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-50\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-white rounded-lg p-6 max-w-2xl w-full max-h-96 overflow-auto\",\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-medium\",\n children: [\n \"Deployment Logs - \",\n machines.find((m)=>m.id === showLogs)?.hostname\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ServiceDeployment.tsx\",\n lineNumber: 682,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>setShowLogs(null),\n className: \"text-gray-400 hover:text-gray-600\",\n children: \"✕\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ServiceDeployment.tsx\",\n lineNumber: 683,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ServiceDeployment.tsx\",\n lineNumber: 681,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-gray-900 text-green-400 p-4 rounded font-mono text-sm max-h-64 overflow-y-auto\",\n children: deploymentLogs[showLogs]?.map((log, index)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: log\n }, index, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ServiceDeployment.tsx\",\n lineNumber: 689,\n columnNumber: 17\n }, this)) || /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: \"No logs available\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ServiceDeployment.tsx\",\n lineNumber: 690,\n columnNumber: 21\n }, this)\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ServiceDeployment.tsx\",\n lineNumber: 687,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ServiceDeployment.tsx\",\n lineNumber: 680,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ServiceDeployment.tsx\",\n lineNumber: 679,\n columnNumber: 9\n }, this),\n showConsole && /*#__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-50\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-gray-900 rounded-lg overflow-hidden max-w-4xl w-full max-h-[80vh] flex flex-col\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-gray-800 px-4 py-3 flex justify-between items-center border-b border-gray-700\",\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)(_barrel_optimize_names_ArrowPathIcon_CheckCircleIcon_CloudArrowDownIcon_Cog6ToothIcon_ComputerDesktopIcon_DocumentTextIcon_ExclamationTriangleIcon_ServerIcon_StopIcon_XCircleIcon_XMarkIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n className: \"h-5 w-5 text-green-400 mr-2\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ServiceDeployment.tsx\",\n lineNumber: 702,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h3\", {\n className: \"text-lg font-medium text-white\",\n children: [\n \"SSH Console - \",\n machines.find((m)=>m.id === showConsole)?.hostname\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ServiceDeployment.tsx\",\n lineNumber: 703,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"ml-2 text-sm text-gray-400\",\n children: [\n \"(\",\n machines.find((m)=>m.id === showConsole)?.ip,\n \")\"\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ServiceDeployment.tsx\",\n lineNumber: 706,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ServiceDeployment.tsx\",\n lineNumber: 701,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center space-x-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center space-x-1\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-2 h-2 bg-red-500 rounded-full\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ServiceDeployment.tsx\",\n lineNumber: 712,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-2 h-2 bg-yellow-500 rounded-full\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ServiceDeployment.tsx\",\n lineNumber: 713,\n columnNumber: 19\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\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ServiceDeployment.tsx\",\n lineNumber: 714,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ServiceDeployment.tsx\",\n lineNumber: 711,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>setShowConsole(null),\n className: \"text-gray-400 hover:text-white ml-4\",\n children: \"✕\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ServiceDeployment.tsx\",\n lineNumber: 716,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ServiceDeployment.tsx\",\n lineNumber: 710,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ServiceDeployment.tsx\",\n lineNumber: 700,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 p-4 font-mono text-sm overflow-y-auto bg-gray-900\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-green-400 space-y-1\",\n children: [\n consoleLogs[showConsole]?.length > 0 ? consoleLogs[showConsole].map((log, index)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"whitespace-pre-wrap\",\n children: log\n }, index, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ServiceDeployment.tsx\",\n lineNumber: 728,\n columnNumber: 21\n }, this)) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-gray-500\",\n children: \"Waiting for deployment to start...\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ServiceDeployment.tsx\",\n lineNumber: 731,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"inline-block w-2 h-4 bg-green-400 animate-pulse\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ServiceDeployment.tsx\",\n lineNumber: 734,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ServiceDeployment.tsx\",\n lineNumber: 725,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ServiceDeployment.tsx\",\n lineNumber: 724,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-gray-800 px-4 py-2 border-t border-gray-700\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs text-gray-400\",\n children: \"\\uD83D\\uDCA1 This console shows real-time deployment progress and SSH operations\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ServiceDeployment.tsx\",\n lineNumber: 738,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ServiceDeployment.tsx\",\n lineNumber: 737,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ServiceDeployment.tsx\",\n lineNumber: 699,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ServiceDeployment.tsx\",\n lineNumber: 698,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex justify-between pt-6 border-t border-gray-200\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: onBack && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n type: \"button\",\n onClick: onBack,\n className: \"btn-outline\",\n children: \"Back\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ServiceDeployment.tsx\",\n lineNumber: 749,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ServiceDeployment.tsx\",\n lineNumber: 747,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n type: \"submit\",\n className: \"btn-primary\",\n children: isCompleted ? \"Continue\" : \"Next: Cluster Formation\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ServiceDeployment.tsx\",\n lineNumber: 754,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ServiceDeployment.tsx\",\n lineNumber: 746,\n columnNumber: 7\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/ServiceDeployment.tsx\",\n lineNumber: 410,\n columnNumber: 5\n }, this);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9hcHAvc2V0dXAvY29tcG9uZW50cy9TZXJ2aWNlRGVwbG95bWVudC50c3giLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFMkM7QUFlUDtBQTZCckIsU0FBU2Esa0JBQWtCLEVBQ3hDQyxVQUFVLEVBQ1ZDLFVBQVUsRUFDVkMsVUFBVSxFQUNWQyxNQUFNLEVBQ05DLFdBQVcsRUFDWTtJQUN2QixNQUFNLENBQUNDLFVBQVVDLFlBQVksR0FBR3BCLCtDQUFRQSxDQUFZLEVBQUU7SUFDdEQsTUFBTSxDQUFDcUIsZUFBZUMsaUJBQWlCLEdBQUd0QiwrQ0FBUUEsQ0FBQztJQUNuRCxNQUFNLENBQUN1QixtQkFBbUJDLHFCQUFxQixHQUFHeEIsK0NBQVFBLENBQUM7SUFDM0QsTUFBTSxDQUFDeUIsaUJBQWlCQyxtQkFBbUIsR0FBRzFCLCtDQUFRQSxDQUFDO0lBQ3ZELE1BQU0sQ0FBQzJCLFVBQVVDLFlBQVksR0FBRzVCLCtDQUFRQSxDQUFnQjtJQUN4RCxNQUFNLENBQUM2QixnQkFBZ0JDLGtCQUFrQixHQUFHOUIsK0NBQVFBLENBQTRCLENBQUM7SUFDakYsTUFBTSxDQUFDK0IsYUFBYUMsZUFBZSxHQUFHaEMsK0NBQVFBLENBQWdCO0lBQzlELE1BQU0sQ0FBQ2lDLGFBQWFDLGVBQWUsR0FBR2xDLCtDQUFRQSxDQUE0QixDQUFDO0lBRTNFLE1BQU0sQ0FBQ21DLFFBQVFDLFVBQVUsR0FBR3BDLCtDQUFRQSxDQUFDO1FBQ25DcUMsa0JBQWtCO1FBQ2xCQyxXQUFXO1FBQ1hDLHFCQUFxQjtRQUNyQkMsa0JBQWtCLEVBQUU7SUFDdEI7SUFFQSxrQ0FBa0M7SUFDbEN2QyxnREFBU0EsQ0FBQztRQUNSLE1BQU13QyxpQkFBMEI7WUFDOUJDLElBQUk7WUFDSkMsVUFBVTdCLFlBQVk4QixTQUFTRCxZQUFZO1lBQzNDRSxJQUFJOUIsWUFBWTZCLFNBQVNFLGFBQWE7WUFDdENDLElBQUlqQyxZQUFZaUMsTUFBTTtZQUN0QkMsV0FBVztZQUNYQyxXQUFX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ei1jb25maWctdWkvLi9hcHAvc2V0dXAvY29tcG9uZW50cy9TZXJ2aWNlRGVwbG95bWVudC50c3g/ZDY3ZiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIGNsaWVudCdcblxuaW1wb3J0IHsgdXNlU3RhdGUsIHVzZUVmZmVjdCB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgXG4gIFNlcnZlckljb24sXG4gIEV4Y2xhbWF0aW9uVHJpYW5nbGVJY29uLFxuICBDaGVja0NpcmNsZUljb24sXG4gIFhDaXJjbGVJY29uLFxuICBQbGF5SWNvbixcbiAgU3RvcEljb24sXG4gIFRyYXNoSWNvbixcbiAgRG9jdW1lbnRUZXh0SWNvbixcbiAgQXJyb3dQYXRoSWNvbixcbiAgQ2xvdWRBcnJvd0Rvd25JY29uLFxuICBDb2c2VG9vdGhJY29uLFxuICBYTWFya0ljb24sXG4gIENvbXB1dGVyRGVza3RvcEljb25cbn0gZnJvbSAnQGhlcm9pY29ucy9yZWFjdC8yNC9vdXRsaW5lJ1xuXG5pbnRlcmZhY2UgTWFjaGluZSB7XG4gIGlkOiBzdHJpbmdcbiAgaG9zdG5hbWU6IHN0cmluZ1xuICBpcDogc3RyaW5nXG4gIG9zOiBzdHJpbmdcbiAgb3NWZXJzaW9uOiBzdHJpbmdcbiAgc3NoU3RhdHVzOiAndW5rbm93bicgfCAnY29ubmVjdGVkJyB8ICdmYWlsZWQnIHwgJ3Rlc3RpbmcnXG4gIGRlcGxveVN0YXR1czogJ25vdF9kZXBsb3llZCcgfCAnaW5zdGFsbGluZycgfCAncnVubmluZycgfCAnc3RvcHBlZCcgfCAnZXJyb3InXG4gIHNlbGVjdGVkOiBib29sZWFuXG4gIGxhc3RTZWVuPzogc3RyaW5nXG4gIGRlcGxveVByb2dyZXNzPzogbnVtYmVyXG4gIGRlcGxveVN0ZXA/OiBzdHJpbmdcbiAgc3lzdGVtSW5mbz86IHtcbiAgICBjcHU6IG51bWJlclxuICAgIG1lbW9yeTogbnVtYmVyXG4gICAgZGlzazogbnVtYmVyXG4gIH1cbn1cblxuaW50ZXJmYWNlIFNlcnZpY2VEZXBsb3ltZW50UHJvcHMge1xuICBzeXN0ZW1JbmZvOiBhbnlcbiAgY29uZmlnRGF0YTogYW55XG4gIG9uQ29tcGxldGU6IChkYXRhOiBhbnkpID0+IHZvaWRcbiAgb25CYWNrPzogKCkgPT4gdm9pZFxuICBpc0NvbXBsZXRlZDogYm9vbGVhblxufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBTZXJ2aWNlRGVwbG95bWVudCh7IFxuICBzeXN0ZW1JbmZvLCBcbiAgY29uZmlnRGF0YSwgXG4gIG9uQ29tcGxldGUsIFxuICBvbkJhY2ssIFxuICBpc0NvbXBsZXRlZCBcbn06IFNlcnZpY2VEZXBsb3ltZW50UHJvcHMpIHtcbiAgY29uc3QgW21hY2hpbmVzLCBzZXRNYWNoaW5lc10gPSB1c2VTdGF0ZTxNYWNoaW5lW10+KFtdKVxuICBjb25zdCBbaXNEaXNjb3ZlcmluZywgc2V0SXNEaXNjb3ZlcmluZ10gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW2Rpc2NvdmVyeVByb2dyZXNzLCBzZXREaXNjb3ZlcnlQcm9ncmVzc10gPSB1c2VTdGF0ZSgwKVxuICBjb25zdCBbZGlzY292ZXJ5U3RhdHVzLCBzZXREaXNjb3ZlcnlTdGF0dXNdID0gdXNlU3RhdGUoJycpXG4gIGNvbnN0IFtzaG93TG9ncywgc2V0U2hvd0xvZ3NdID0gdXNlU3RhdGU8c3RyaW5nIHwgbnVsbD4obnVsbClcbiAgY29uc3QgW2RlcGxveW1lbnRMb2dzLCBzZXREZXBsb3ltZW50TG9nc10gPSB1c2VTdGF0ZTx7W2tleTogc3RyaW5nXTogc3RyaW5nW119Pih7fSlcbiAgY29uc3QgW3Nob3dDb25zb2xlLCBzZXRTaG93Q29uc29sZV0gPSB1c2VTdGF0ZTxzdHJpbmcgfCBudWxsPihudWxsKVxuICBjb25zdCBbY29uc29sZUxvZ3MsIHNldENvbnNvbGVMb2dzXSA9IHVzZVN0YXRlPHtba2V5OiBzdHJpbmddOiBzdHJpbmdbXX0+KHt9KVxuICBcbiAgY29uc3QgW2NvbmZpZywgc2V0Q29uZmlnXSA9IHVzZVN0YXRlKHtcbiAgICBkZXBsb3ltZW50TWV0aG9kOiAnc3lzdGVtZCcsXG4gICAgYXV0b1N0YXJ0OiB0cnVlLFxuICAgIGhlYWx0aENoZWNrSW50ZXJ2YWw6IDMwLFxuICAgIHNlbGVjdGVkTWFjaGluZXM6IFtdIGFzIHN0cmluZ1tdXG4gIH0pXG5cbiAgLy8gSW5pdGlhbGl6ZSB3aXRoIGN1cnJlbnQgbWFjaGluZVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGN1cnJlbnRNYWNoaW5lOiBNYWNoaW5lID0ge1xuICAgICAgaWQ6ICdsb2NhbGhvc3QnLFxuICAgICAgaG9zdG5hbWU6IHN5c3RlbUluZm8/Lm5ldHdvcms/Lmhvc3RuYW1lIHx8ICdsb2NhbGhvc3QnLFxuICAgICAgaXA6IGNvbmZpZ0RhdGE/Lm5ldHdvcms/LnByaW1hcnlJUCB8fCAnMTI3LjAuMC4xJyxcbiAgICAgIG9zOiBzeXN0ZW1JbmZvPy5vcyB8fCAnbGludXgnLFxuICAgICAgb3NWZXJzaW9uOiAnQ3VycmVudCBIb3N0JyxcbiAgICAgIHNzaFN0YXR1czogJ2Nvbm5lY3RlZCcsXG4gICAgICBkZXBsb3lTdGF0dXM6ICdydW5uaW5nJywgLy8gQWxyZWFkeSBydW5uaW5nIHNpbmNlIHdlJ3JlIGluIHNldHVwXG4gICAgICBzZWxlY3RlZDogdHJ1ZSxcbiAgICAgIHN5c3RlbUluZm86IHtcbiAgICAgICAgY3B1OiBzeXN0ZW1JbmZvPy5jcHVfY29yZXMgfHwgMCxcbiAgICAgICAgbWVtb3J5OiBNYXRoLnJvdW5kKChzeXN0ZW1JbmZvPy5tZW1vcnlfbWIgfHwgMCkgLyAxMDI0KSxcbiAgICAgICAgZGlzazogc3lzdGVtSW5mbz8uc3RvcmFnZT8uZnJlZV9zcGFjZV9nYiB8fCAwXG4gICAgICB9XG4gICAgfVxuICAgIHNldE1hY2hpbmVzKFtjdXJyZW50TWFjaGluZV0pXG4gICAgc2V0Q29uZmlnKHByZXYgPT4gKHsgLi4ucHJldiwgc2VsZWN0ZWRNYWNoaW5lczogWydsb2NhbGhvc3QnXSB9KSlcbiAgfSwgW3N5c3RlbUluZm8sIGNvbmZpZ0RhdGFdKVxuXG4gIGNvbnN0IGRpc2NvdmVyTWFjaGluZXMgPSBhc3luYyAoKSA9PiB7XG4gICAgc2V0SXNEaXNjb3ZlcmluZyh0cnVlKVxuICAgIHNldERpc2NvdmVyeVByb2dyZXNzKDApXG4gICAgc2V0RGlzY292ZXJ5U3RhdHVzKCdJbml0aWFsaXppbmcgbmV0d29yayBzY2FuLi4uJylcbiAgICBcbiAgICB0cnkge1xuICAgICAgLy8gU2ltdWxhdGUgcHJvZ3Jlc3MgdXBkYXRlcyBkdXJpbmcgZGlzY292ZXJ5XG4gICAgICBjb25zdCBwcm9ncmVzc0ludGVydmFsID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgICBzZXREaXNjb3ZlcnlQcm9ncmVzcyhwcmV2ID0+IHtcbiAgICAgICAgICBjb25zdCBuZXdQcm9ncmVzcyA9IHByZXYgKyAxMFxuICAgICAgICAgIGlmIChuZXdQcm9ncmVzcyA8PSAzMCkge1xuICAgICAgICAgICAgc2V0RGlzY292ZXJ5U3RhdHVzKCdTY2FubmluZyBuZXR3b3JrIHN1Ym5ldC4uLicpXG4gICAgICAgICAgfSBlbHNlIGlmIChuZXdQcm9ncmVzcyA8PSA2MCkge1xuICAgICAgICAgICAgc2V0RGlzY292ZXJ5U3RhdHVzKCdDaGVja2luZyBTU0ggYWNjZXNzaWJpbGl0eS4uLicpXG4gICAgICAgICAgfSBlbHNlIGlmIChuZXdQcm9ncmVzcyA8PSA5MCkge1xuICAgICAgICAgICAgc2V0RGlzY292ZXJ5U3RhdHVzKCdHYXRoZXJpbmcgc3lzdGVtIGluZm9ybWF0aW9uLi4uJylcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc2V0RGlzY292ZXJ5U3RhdHVzKCdGaW5hbGl6aW5nIGRpc2NvdmVyeS4uLicpXG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBNYXRoLm1pbihuZXdQcm9ncmVzcywgOTUpXG4gICAgICAgIH0pXG4gICAgICB9LCAyMDApXG5cbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goJy9hcGkvc2V0dXAvZGlzY292ZXItbWFjaGluZXMnLCB7XG4gICAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgICBoZWFkZXJzOiB7ICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicgfSxcbiAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgIHN1Ym5ldDogY29uZmlnRGF0YT8ubmV0d29yaz8uYWxsb3dlZElQcz8uWzBdIHx8ICcxOTIuMTY4LjEuMC8yNCcsXG4gICAgICAgICAgc3NoS2V5OiBjb25maWdEYXRhPy5zZWN1cml0eT8uc3NoUHVibGljS2V5XG4gICAgICAgIH0pXG4gICAgICB9KVxuICAgICAgXG4gICAgICBjbGVhckludGVydmFsKHByb2dyZXNzSW50ZXJ2YWwpXG4gICAgICBzZXREaXNjb3ZlcnlQcm9ncmVzcygxMDApXG4gICAgICBcbiAgICAgIGlmIChyZXNwb25zZS5vaykge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCByZXNwb25zZS5qc29uKClcbiAgICAgICAgc2V0RGlzY292ZXJ5U3RhdHVzKGBGb3VuZCAke3Jlc3VsdC5tYWNoaW5lcz8ubGVuZ3RoIHx8IDB9IG1hY2hpbmVzYClcbiAgICAgICAgXG4gICAgICAgIGNvbnN0IGRpc2NvdmVyZWRNYWNoaW5lczogTWFjaGluZVtdID0gcmVzdWx0Lm1hY2hpbmVzLm1hcCgobTogYW55KSA9PiAoe1xuICAgICAgICAgIGlkOiBtLmlwLFxuICAgICAgICAgIGhvc3RuYW1lOiBtLmhvc3RuYW1lIHx8ICdVbmtub3duJyxcbiAgICAgICAgICBpcDogbS5pcCxcbiAgICAgICAgICBvczogbS5vcyB8fCAndW5rbm93bicsXG4gICAgICAgICAgb3NWZXJzaW9uOiBtLm9zX3ZlcnNpb24gfHwgJ1Vua25vd24nLFxuICAgICAgICAgIHNzaFN0YXR1czogJ3Vua25vd24nLFxuICAgICAgICAgIGRlcGxveVN0YXR1czogJ25vdF9kZXBsb3llZCcsXG4gICAgICAgICAgc2VsZWN0ZWQ6IGZhbHNlLFxuICAgICAgICAgIGxhc3RTZWVuOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgICAgICAgc3lzdGVtSW5mbzogbS5zeXN0ZW1faW5mb1xuICAgICAgICB9KSlcbiAgICAgICAgXG4gICAgICAgIC8vIE1lcmdlIHdpdGggZXhpc3RpbmcgbWFjaGluZXMgKGtlZXAgbG9jYWxob3N0KVxuICAgICAgICBzZXRNYWNoaW5lcyhwcmV2ID0+IHtcbiAgICAgICAgICBjb25zdCBsb2NhbGhvc3QgPSBwcmV2LmZpbmQobSA9PiBtLmlkID09PSAnbG9jYWxob3N0JylcbiAgICAgICAgICByZXR1cm4gbG9jYWxob3N0ID8gW2xvY2FsaG9zdCwgLi4uZGlzY292ZXJlZE1hY2hpbmVzXSA6IGRpc2NvdmVyZWRNYWNoaW5lc1xuICAgICAgICB9KVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2V0RGlzY292ZXJ5U3RhdHVzKCdEaXNjb3ZlcnkgZmFpbGVkIC0gY2hlY2sgbmV0d29yayBjb25maWd1cmF0aW9uJylcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcignRGlzY292ZXJ5IGZhaWxlZDonLCBlcnJvcilcbiAgICAgIHNldERpc2NvdmVyeVN0YXR1cygnRGlzY292ZXJ5IGVycm9yIC0gbmV0d29yayB1bnJlYWNoYWJsZScpXG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBzZXRJc0Rpc2NvdmVyaW5nKGZhbHNlKVxuICAgICAgICBzZXREaXNjb3ZlcnlQcm9ncmVzcygwKVxuICAgICAgICBzZXREaXNjb3ZlcnlTdGF0dXMoJycpXG4gICAgICB9LCAyMDAwKVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHRlc3RTU0hDb25uZWN0aW9uID0gYXN5bmMgKG1hY2hpbmVJZDogc3RyaW5nKSA9PiB7XG4gICAgc2V0TWFjaGluZXMocHJldiA9PiBwcmV2Lm1hcChtID0+IFxuICAgICAgbS5pZCA9PT0gbWFjaGluZUlkID8geyAuLi5tLCBzc2hTdGF0dXM6ICd0ZXN0aW5nJyB9IDogbVxuICAgICkpXG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgbWFjaGluZSA9IG1hY2hpbmVzLmZpbmQobSA9PiBtLmlkID09PSBtYWNoaW5lSWQpXG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKCcvYXBpL3NldHVwL3Rlc3Qtc3NoJywge1xuICAgICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgICAgaGVhZGVyczogeyAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nIH0sXG4gICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICBpcDogbWFjaGluZT8uaXAsXG4gICAgICAgICAgc3NoS2V5OiBjb25maWdEYXRhPy5zZWN1cml0eT8uc3NoUHJpdmF0ZUtleSxcbiAgICAgICAgICBzc2hVc2VybmFtZTogY29uZmlnRGF0YT8uc2VjdXJpdHk/LnNzaFVzZXJuYW1lIHx8ICd1YnVudHUnLFxuICAgICAgICAgIHNzaFBhc3N3b3JkOiBjb25maWdEYXRhPy5zZWN1cml0eT8uc3NoUGFzc3dvcmQsXG4gICAgICAgICAgc3NoUG9ydDogY29uZmlnRGF0YT8uc2VjdXJpdHk/LnNzaFBvcnQgfHwgMjJcbiAgICAgICAgfSlcbiAgICAgIH0pXG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKVxuICAgICAgc2V0TWFjaGluZXMocHJldiA9PiBwcmV2Lm1hcChtID0+IFxuICAgICAgICBtLmlkID09PSBtYWNoaW5lSWQgPyB7IFxuICAgICAgICAgIC4uLm0sIFxuICAgICAgICAgIHNzaFN0YXR1czogcmVzdWx0LnN1Y2Nlc3MgPyAnY29ubmVjdGVkJyA6ICdmYWlsZWQnLFxuICAgICAgICAgIG9zOiByZXN1bHQub3MgfHwgbS5vcyxcbiAgICAgICAgICBvc1ZlcnNpb246IHJlc3VsdC5vc192ZXJzaW9uIHx8IG0ub3NWZXJzaW9uLFxuICAgICAgICAgIHN5c3RlbUluZm86IHJlc3VsdC5zeXN0ZW1faW5mbyB8fCBtLnN5c3RlbUluZm9cbiAgICAgICAgfSA6IG1cbiAgICAgICkpXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHNldE1hY2hpbmVzKHByZXYgPT4gcHJldi5tYXAobSA9PiBcbiAgICAgICAgbS5pZCA9PT0gbWFjaGluZUlkID8geyAuLi5tLCBzc2hTdGF0dXM6ICdmYWlsZWQnIH0gOiBtXG4gICAgICApKVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGRlcGxveVRvTWFjaGluZSA9IGFzeW5jIChtYWNoaW5lSWQ6IHN0cmluZykgPT4ge1xuICAgIHNldE1hY2hpbmVzKHByZXYgPT4gcHJldi5tYXAobSA9PiBcbiAgICAgIG0uaWQgPT09IG1hY2hpbmVJZCA/IHsgXG4gICAgICAgIC4uLm0sIFxuICAgICAgICBkZXBsb3lTdGF0dXM6ICdpbnN0YWxsaW5nJyxcbiAgICAgICAgZGVwbG95UHJvZ3Jlc3M6IDAsXG4gICAgICAgIGRlcGxveVN0ZXA6ICdJbml0aWFsaXppbmcgZGVwbG95bWVudC4uLidcbiAgICAgIH0gOiBtXG4gICAgKSlcblxuICAgIGNvbnN0IGxvZ3M6IHN0cmluZ1tdID0gW11cbiAgICBjb25zdCBjb25zb2xlTG9nczogc3RyaW5nW10gPSBbYPCfmoAgU3RhcnRpbmcgZGVwbG95bWVudCB0byAke21hY2hpbmVzLmZpbmQobSA9PiBtLmlkID09PSBtYWNoaW5lSWQpPy5ob3N0bmFtZX0gKCR7bWFjaGluZXMuZmluZChtID0+IG0uaWQgPT09IG1hY2hpbmVJZCk/LmlwfSlgXVxuICAgIHNldERlcGxveW1lbnRMb2dzKHByZXYgPT4gKHsgLi4ucHJldiwgW21hY2hpbmVJZF06IGxvZ3MgfSkpXG4gICAgc2V0Q29uc29sZUxvZ3MocHJldiA9PiAoeyAuLi5wcmV2LCBbbWFjaGluZUlkXTogY29uc29sZUxvZ3MgfSkpXG5cbiAgICAvLyBPcGVuIGNvbnNvbGUgaWYgbm90IGFscmVhZHkgc2hvd2luZ1xuICAgIGlmICghc2hvd0NvbnNvbGUpIHtcbiAgICAgIHNldFNob3dDb25zb2xlKG1hY2hpbmVJZClcbiAgICB9XG5cbiAgICAvLyBSZWFsLXRpbWUgY29uc29sZSBsb2dnaW5nIGhlbHBlclxuICAgIGNvbnN0IGFkZENvbnNvbGVMb2cgPSAobWVzc2FnZTogc3RyaW5nKSA9PiB7XG4gICAgICBjb25zdCB0aW1lc3RhbXAgPSBuZXcgRGF0ZSgpLnRvTG9jYWxlVGltZVN0cmluZygpXG4gICAgICBjb25zdCBsb2dNZXNzYWdlID0gYFske3RpbWVzdGFtcH1dICR7bWVzc2FnZX1gXG4gICAgICBzZXRDb25zb2xlTG9ncyhwcmV2ID0+ICh7IFxuICAgICAgICAuLi5wcmV2LCBcbiAgICAgICAgW21hY2hpbmVJZF06IFsuLi4ocHJldlttYWNoaW5lSWRdIHx8IFtdKSwgbG9nTWVzc2FnZV0gXG4gICAgICB9KSlcbiAgICB9XG5cbiAgICAvLyBTaW11bGF0ZSBwcm9ncmVzcyB1cGRhdGVzXG4gICAgY29uc3QgcHJvZ3Jlc3NTdGVwcyA9IFtcbiAgICAgIHsgcHJvZ3Jlc3M6IDEwLCBzdGVwOiAnRXN0YWJsaXNoaW5nIFNTSCBjb25uZWN0aW9uLi4uJyB9LFxuICAgICAgeyBwcm9ncmVzczogMzAsIHN0ZXA6ICdDb3B5aW5nIEJaWlogYmluYXJ5Li4uJyB9LFxuICAgICAgeyBwcm9ncmVzczogNjAsIHN0ZXA6ICdDcmVhdGluZyBzeXN0ZW1kIHNlcnZpY2UuLi4nIH0sXG4gICAgICB7IHByb2dyZXNzOiA4MCwgc3RlcDogJ1N0YXJ0aW5nIHNlcnZpY2UuLi4nIH0sXG4gICAgICB7IHByb2dyZXNzOiAxMDAsIHN0ZXA6ICdEZXBsb3ltZW50IGNvbXBsZXRlIScgfVxuICAgIF1cblxuICAgIGNvbnN0IHVwZGF0ZVByb2dyZXNzID0gKHN0ZXBJbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICBpZiAoc3RlcEluZGV4IDwgcHJvZ3Jlc3NTdGVwcy5sZW5ndGgpIHtcbiAgICAgICAgY29uc3QgeyBwcm9ncmVzcywgc3RlcCB9ID0gcHJvZ3Jlc3NTdGVwc1tzdGVwSW5kZXhdXG4gICAgICAgIHNldE1hY2hpbmVzKHByZXYgPT4gcHJldi5tYXAobSA9PiBcbiAgICAgICAgICBtLmlkID09PSBtYWNoaW5lSWQgPyB7IFxuICAgICAgICAgICAgLi4ubSwgXG4gICAgICAgICAgICBkZXBsb3lQcm9ncmVzczogcHJvZ3Jlc3MsXG4gICAgICAgICAgICBkZXBsb3lTdGVwOiBzdGVwXG4gICAgICAgICAgfSA6IG1cbiAgICAgICAgKSlcbiAgICAgICAgbG9ncy5wdXNoKGDwn5OmICR7c3RlcH1gKVxuICAgICAgICBhZGRDb25zb2xlTG9nKGDwn5OmICR7c3RlcH1gKVxuICAgICAgICBzZXREZXBsb3ltZW50TG9ncyhwcmV2ID0+ICh7IC4uLnByZXYsIFttYWNoaW5lSWRdOiBbLi4uKHByZXZbbWFjaGluZUlkXSB8fCBbXSksIGDwn5OmICR7c3RlcH1gXSB9KSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgbWFjaGluZSA9IG1hY2hpbmVzLmZpbmQobSA9PiBtLmlkID09PSBtYWNoaW5lSWQpXG4gICAgICBhZGRDb25zb2xlTG9nKGDwn5qAIFN0YXJ0aW5nIGRlcGxveW1lbnQgdG8gJHttYWNoaW5lPy5ob3N0bmFtZX0uLi5gKVxuICAgICAgYWRkQ29uc29sZUxvZyhg8J+ToSBTZW5kaW5nIGRlcGxveW1lbnQgcmVxdWVzdCB0byBiYWNrZW5kIEFQSS4uLmApXG4gICAgICBcbiAgICAgIC8vIFNldCBpbml0aWFsIHByb2dyZXNzXG4gICAgICBzZXRNYWNoaW5lcyhwcmV2ID0+IHByZXYubWFwKG0gPT4gXG4gICAgICAgIG0uaWQgPT09IG1hY2hpbmVJZCA/IHsgXG4gICAgICAgICAgLi4ubSwgXG4gICAgICAgICAgZGVwbG95UHJvZ3Jlc3M6IDEwLFxuICAgICAgICAgIGRlcGxveVN0ZXA6ICdDb250YWN0aW5nIGJhY2tlbmQgQVBJLi4uJ1xuICAgICAgICB9IDogbVxuICAgICAgKSlcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goJy9hcGkvc2V0dXAvZGVwbG95LXNlcnZpY2UnLCB7XG4gICAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgICBoZWFkZXJzOiB7ICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicgfSxcbiAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgIGlwOiBtYWNoaW5lPy5pcCxcbiAgICAgICAgICBzc2hLZXk6IGNvbmZpZ0RhdGE/LnNlY3VyaXR5Py5zc2hQcml2YXRlS2V5LFxuICAgICAgICAgIHNzaFVzZXJuYW1lOiBjb25maWdEYXRhPy5zZWN1cml0eT8uc3NoVXNlcm5hbWUgfHwgJ3VidW50dScsXG4gICAgICAgICAgc3NoUGFzc3dvcmQ6IGNvbmZpZ0RhdGE/LnNlY3VyaXR5Py5zc2hQYXNzd29yZCxcbiAgICAgICAgICBzc2hQb3J0OiBjb25maWdEYXRhPy5zZWN1cml0eT8uc3NoUG9ydCB8fCAyMixcbiAgICAgICAgICBjb25maWc6IHtcbiAgICAgICAgICAgIHBvcnRzOiB7XG4gICAgICAgICAgICAgIGFwaTogY29uZmlnRGF0YT8ubmV0d29yaz8uYnp6elBvcnQgfHwgODA4MCxcbiAgICAgICAgICAgICAgbWNwOiBjb25maWdEYXRhPy5uZXR3b3JrPy5tY3BQb3J0IHx8IDMwMDAsXG4gICAgICAgICAgICAgIHdlYnVpOiBjb25maWdEYXRhPy5uZXR3b3JrPy53ZWJVSVBvcnQgfHwgODA4MCxcbiAgICAgICAgICAgICAgcDJwOiBjb25maWdEYXRhPy5uZXR3b3JrPy5wMnBQb3J0IHx8IDcwMDBcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzZWN1cml0eTogY29uZmlnRGF0YT8uc2VjdXJpdHksXG4gICAgICAgICAgICBhdXRvU3RhcnQ6IGNvbmZpZy5hdXRvU3RhcnRcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICB9KVxuXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCByZXNwb25zZS5qc29uKClcbiAgICAgIGFkZENvbnNvbGVMb2coYPCfk6ggUmVjZWl2ZWQgcmVzcG9uc2UgZnJvbSBiYWNrZW5kIEFQSWApXG4gICAgICBcbiAgICAgIGlmIChyZXN1bHQuc3VjY2Vzcykge1xuICAgICAgICBzZXRNYWNoaW5lcyhwcmV2ID0+IHByZXYubWFwKG0gPT4gXG4gICAgICAgICAgbS5pZCA9PT0gbWFjaGluZUlkID8geyBcbiAgICAgICAgICAgIC4uLm0sIFxuICAgICAgICAgICAgZGVwbG95U3RhdHVzOiAncnVubmluZycsXG4gICAgICAgICAgICBkZXBsb3lQcm9ncmVzczogMTAwLFxuICAgICAgICAgICAgZGVwbG95U3RlcDogJ1J1bm5pbmcnXG4gICAgICAgICAgfSA6IG1cbiAgICAgICAgKSlcbiAgICAgICAgbG9ncy5wdXNoKCfinIUgRGVwbG95bWVudCBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5JylcbiAgICAgICAgYWRkQ29uc29sZUxvZygn4pyFIERlcGxveW1lbnQgY29tcGxldGVkIHN1Y2Nlc3NmdWxseSEnKVxuICAgICAgICBcbiAgICAgICAgLy8gU2hvdyBhY3R1YWwgYmFja2VuZCBzdGVwcyBpZiBwcm92aWRlZFxuICAgICAgICBpZiAocmVzdWx0LnN0ZXBzKSB7XG4gICAgICAgICAgcmVzdWx0LnN0ZXBzLmZvckVhY2goKHN0ZXA6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgbG9ncy5wdXNoKHN0ZXApXG4gICAgICAgICAgICBhZGRDb25zb2xlTG9nKGDwn5OLICR7c3RlcH1gKVxuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgICAgYWRkQ29uc29sZUxvZyhg8J+OiSBDSE9SVVM6YWdlbnRzIHNlcnZpY2UgaXMgbm93IHJ1bm5pbmcgb24gJHttYWNoaW5lPy5ob3N0bmFtZX1gKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2V0TWFjaGluZXMocHJldiA9PiBwcmV2Lm1hcChtID0+IFxuICAgICAgICAgIG0uaWQgPT09IG1hY2hpbmVJZCA/IHsgXG4gICAgICAgICAgICAuLi5tLCBcbiAgICAgICAgICAgIGRlcGxveVN0YXR1czogJ2Vycm9yJyxcbiAgICAgICAgICAgIGRlcGxveVByb2dyZXNzOiAwLFxuICAgICAgICAgICAgZGVwbG95U3RlcDogJ0ZhaWxlZCdcbiAgICAgICAgICB9IDogbVxuICAgICAgICApKVxuICAgICAgICBsb2dzLnB1c2goYOKdjCBEZXBsb3ltZW50IGZhaWxlZDogJHtyZXN1bHQuZXJyb3J9YClcbiAgICAgICAgYWRkQ29uc29sZUxvZyhg4p2MIERlcGxveW1lbnQgZmFpbGVkOiAke3Jlc3VsdC5lcnJvcn1gKVxuICAgICAgICBhZGRDb25zb2xlTG9nKGDwn5KhIE5vdGU6IFRoaXMgd2FzIGEgcmVhbCBiYWNrZW5kIGVycm9yLCBub3Qgc2ltdWxhdGVkIHByb2dyZXNzYClcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgc2V0TWFjaGluZXMocHJldiA9PiBwcmV2Lm1hcChtID0+IFxuICAgICAgICBtLmlkID09PSBtYWNoaW5lSWQgPyB7IFxuICAgICAgICAgIC4uLm0sIFxuICAgICAgICAgIGRlcGxveVN0YXR1czogJ2Vycm9yJyxcbiAgICAgICAgICBkZXBsb3lQcm9ncmVzczogMCxcbiAgICAgICAgICBkZXBsb3lTdGVwOiAnRXJyb3InXG4gICAgICAgIH0gOiBtXG4gICAgICApKVxuICAgICAgbG9ncy5wdXNoKGDinYwgRGVwbG95bWVudCBlcnJvcjogJHtlcnJvcn1gKVxuICAgICAgYWRkQ29uc29sZUxvZyhg4p2MIERlcGxveW1lbnQgZXJyb3I6ICR7ZXJyb3J9YClcbiAgICB9XG5cbiAgICBzZXREZXBsb3ltZW50TG9ncyhwcmV2ID0+ICh7IC4uLnByZXYsIFttYWNoaW5lSWRdOiBsb2dzIH0pKVxuICB9XG5cbiAgY29uc3QgdG9nZ2xlTWFjaGluZVNlbGVjdGlvbiA9IChtYWNoaW5lSWQ6IHN0cmluZykgPT4ge1xuICAgIHNldE1hY2hpbmVzKHByZXYgPT4gcHJldi5tYXAobSA9PiBcbiAgICAgIG0uaWQgPT09IG1hY2hpbmVJZCA/IHsgLi4ubSwgc2VsZWN0ZWQ6ICFtLnNlbGVjdGVkIH0gOiBtXG4gICAgKSlcbiAgICBcbiAgICBzZXRDb25maWcocHJldiA9PiAoe1xuICAgICAgLi4ucHJldixcbiAgICAgIHNlbGVjdGVkTWFjaGluZXM6IG1hY2hpbmVzXG4gICAgICAgIC5tYXAobSA9PiBtLmlkID09PSBtYWNoaW5lSWQgPyB7IC4uLm0sIHNlbGVjdGVkOiAhbS5zZWxlY3RlZCB9IDogbSlcbiAgICAgICAgLmZpbHRlcihtID0+IG0uc2VsZWN0ZWQpXG4gICAgICAgIC5tYXAobSA9PiBtLmlkKVxuICAgIH0pKVxuICB9XG5cbiAgY29uc3QgZGVwbG95VG9TZWxlY3RlZCA9IGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBzZWxlY3RlZE1hY2hpbmVzID0gbWFjaGluZXMuZmlsdGVyKG0gPT4gbS5zZWxlY3RlZCAmJiBtLnNzaFN0YXR1cyA9PT0gJ2Nvbm5lY3RlZCcpXG4gICAgZm9yIChjb25zdCBtYWNoaW5lIG9mIHNlbGVjdGVkTWFjaGluZXMpIHtcbiAgICAgIGlmIChtYWNoaW5lLmRlcGxveVN0YXR1cyA9PT0gJ25vdF9kZXBsb3llZCcpIHtcbiAgICAgICAgYXdhaXQgZGVwbG95VG9NYWNoaW5lKG1hY2hpbmUuaWQpXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY29uc3QgcmVtb3ZlTWFjaGluZSA9IChtYWNoaW5lSWQ6IHN0cmluZykgPT4ge1xuICAgIC8vIERvbid0IGFsbG93IHJlbW92aW5nIGxvY2FsaG9zdFxuICAgIGlmIChtYWNoaW5lSWQgPT09ICdsb2NhbGhvc3QnKSByZXR1cm5cbiAgICBcbiAgICBzZXRNYWNoaW5lcyhwcmV2ID0+IHByZXYuZmlsdGVyKG0gPT4gbS5pZCAhPT0gbWFjaGluZUlkKSlcbiAgICBzZXRDb25maWcocHJldiA9PiAoe1xuICAgICAgLi4ucHJldixcbiAgICAgIHNlbGVjdGVkTWFjaGluZXM6IHByZXYuc2VsZWN0ZWRNYWNoaW5lcy5maWx0ZXIoaWQgPT4gaWQgIT09IG1hY2hpbmVJZClcbiAgICB9KSlcbiAgICBcbiAgICAvLyBDbGVhbiB1cCBsb2dzIGZvciByZW1vdmVkIG1hY2hpbmVcbiAgICBzZXREZXBsb3ltZW50TG9ncyhwcmV2ID0+IHtcbiAgICAgIGNvbnN0IHsgW21hY2hpbmVJZF06IHJlbW92ZWQsIC4uLnJlc3QgfSA9IHByZXZcbiAgICAgIHJldHVybiByZXN0XG4gICAgfSlcbiAgfVxuXG4gIGNvbnN0IGdldFN0YXR1c0ljb24gPSAoc3RhdHVzOiBzdHJpbmcpID0+IHtcbiAgICBzd2l0Y2ggKHN0YXR1cykge1xuICAgICAgY2FzZSAnY29ubmVjdGVkJzogcmV0dXJuIDxDaGVja0NpcmNsZUljb24gY2xhc3NOYW1lPVwiaC01IHctNSB0ZXh0LWdyZWVuLTUwMFwiIC8+XG4gICAgICBjYXNlICdmYWlsZWQnOiByZXR1cm4gPFhDaXJjbGVJY29uIGNsYXNzTmFtZT1cImgtNSB3LTUgdGV4dC1yZWQtNTAwXCIgLz5cbiAgICAgIGNhc2UgJ3Rlc3RpbmcnOiByZXR1cm4gPEFycm93UGF0aEljb24gY2xhc3NOYW1lPVwiaC01IHctNSB0ZXh0LWJsdWUtNTAwIGFuaW1hdGUtc3BpblwiIC8+XG4gICAgICBjYXNlICdydW5uaW5nJzogcmV0dXJuIDxDaGVja0NpcmNsZUljb24gY2xhc3NOYW1lPVwiaC01IHctNSB0ZXh0LWdyZWVuLTUwMFwiIC8+XG4gICAgICBjYXNlICdpbnN0YWxsaW5nJzogcmV0dXJuIDxBcnJvd1BhdGhJY29uIGNsYXNzTmFtZT1cImgtNSB3LTUgdGV4dC1ibHVlLTUwMCBhbmltYXRlLXNwaW5cIiAvPlxuICAgICAgY2FzZSAnZXJyb3InOiByZXR1cm4gPFhDaXJjbGVJY29uIGNsYXNzTmFtZT1cImgtNSB3LTUgdGV4dC1yZWQtNTAwXCIgLz5cbiAgICAgIGNhc2UgJ3N0b3BwZWQnOiByZXR1cm4gPFN0b3BJY29uIGNsYXNzTmFtZT1cImgtNSB3LTUgdGV4dC15ZWxsb3ctNTAwXCIgLz5cbiAgICAgIGRlZmF1bHQ6IHJldHVybiA8U2VydmVySWNvbiBjbGFzc05hbWU9XCJoLTUgdy01IHRleHQtZ3JheS00MDBcIiAvPlxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGhhbmRsZVN1Ym1pdCA9IChlOiBSZWFjdC5Gb3JtRXZlbnQpID0+IHtcbiAgICBlLnByZXZlbnREZWZhdWx0KClcbiAgICBvbkNvbXBsZXRlKHsgXG4gICAgICBkZXBsb3ltZW50OiB7XG4gICAgICAgIC4uLmNvbmZpZyxcbiAgICAgICAgbWFjaGluZXM6IG1hY2hpbmVzLmZpbHRlcihtID0+IG0uc2VsZWN0ZWQpLm1hcChtID0+ICh7XG4gICAgICAgICAgaWQ6IG0uaWQsXG4gICAgICAgICAgaXA6IG0uaXAsXG4gICAgICAgICAgaG9zdG5hbWU6IG0uaG9zdG5hbWUsXG4gICAgICAgICAgZGVwbG95U3RhdHVzOiBtLmRlcGxveVN0YXR1c1xuICAgICAgICB9KSlcbiAgICAgIH1cbiAgICB9KVxuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8Zm9ybSBvblN1Ym1pdD17aGFuZGxlU3VibWl0fSBjbGFzc05hbWU9XCJzcGFjZS15LTZcIj5cblxuICAgICAgey8qIE9TIFN1cHBvcnQgQ2F1dGlvbiAqL31cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmcteWVsbG93LTUwIGJvcmRlciBib3JkZXIteWVsbG93LTIwMCByb3VuZGVkLWxnIHAtNFwiPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtc3RhcnRcIj5cbiAgICAgICAgICA8RXhjbGFtYXRpb25UcmlhbmdsZUljb24gY2xhc3NOYW1lPVwiaC01IHctNSB0ZXh0LXllbGxvdy02MDAgbXQtMC41IG1yLTMgZmxleC1zaHJpbmstMFwiIC8+XG4gICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgIDxoMyBjbGFzc05hbWU9XCJ0ZXh0LXNtIGZvbnQtbWVkaXVtIHRleHQteWVsbG93LTgwMFwiPk9wZXJhdGluZyBTeXN0ZW0gU3VwcG9ydDwvaDM+XG4gICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJ0ZXh0LXNtIHRleHQteWVsbG93LTcwMCBtdC0xXCI+XG4gICAgICAgICAgICAgIENIT1JVUzphZ2VudHMgYXV0b21hdGVkIGRlcGxveW1lbnQgc3VwcG9ydHMgPHN0cm9uZz5MaW51eCBkaXN0cmlidXRpb25zIHRoYXQgdXNlIHN5c3RlbWQgYnkgZGVmYXVsdDwvc3Ryb25nPiAoVWJ1bnR1IDE2KywgQ2VudE9TIDcrLCBEZWJpYW4gOCssIFJIRUwgNyssIGV0Yy4pLiBcbiAgICAgICAgICAgICAgRm9yIG90aGVyIG9wZXJhdGluZyBzeXN0ZW1zIG9yIGluaXQgc3lzdGVtcywgeW91J2xsIG5lZWQgdG8gbWFudWFsbHkgZGVwbG95IHRoZSBDSE9SVVM6YWdlbnRzIGJpbmFyeSBhbmQgY29uZmlndXJlIHNlcnZpY2VzIG9uIHlvdXIgY2x1c3Rlci5cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgey8qIE5ldHdvcmsgRGlzY292ZXJ5ICovfVxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJjYXJkXCI+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIG1iLTRcIj5cbiAgICAgICAgICA8aDMgY2xhc3NOYW1lPVwidGV4dC1sZyBmb250LW1lZGl1bSB0ZXh0LWdyYXktOTAwIGZsZXggaXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICA8U2VydmVySWNvbiBjbGFzc05hbWU9XCJoLTYgdy02IHRleHQtYnp6ei1wcmltYXJ5IG1yLTJcIiAvPlxuICAgICAgICAgICAgTWFjaGluZSBEaXNjb3ZlcnlcbiAgICAgICAgICA8L2gzPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgb25DbGljaz17ZGlzY292ZXJNYWNoaW5lc31cbiAgICAgICAgICAgIGRpc2FibGVkPXtpc0Rpc2NvdmVyaW5nfVxuICAgICAgICAgICAgY2xhc3NOYW1lPVwiYnRuLW91dGxpbmUgZmxleCBpdGVtcy1jZW50ZXJcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxBcnJvd1BhdGhJY29uIGNsYXNzTmFtZT17YGgtNCB3LTQgbXItMiAke2lzRGlzY292ZXJpbmcgPyAnYW5pbWF0ZS1zcGluJyA6ICcnfWB9IC8+XG4gICAgICAgICAgICB7aXNEaXNjb3ZlcmluZyA/ICdEaXNjb3ZlcmluZy4uLicgOiAnRGlzY292ZXIgTWFjaGluZXMnfVxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgXG4gICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQtc20gdGV4dC1ncmF5LTYwMCBtYi00XCI+XG4gICAgICAgICAgU2NhbiBuZXR3b3JrIHN1Ym5ldDoge2NvbmZpZ0RhdGE/Lm5ldHdvcms/LmFsbG93ZWRJUHM/LlswXSB8fCAnMTkyLjE2OC4xLjAvMjQnfVxuICAgICAgICA8L3A+XG5cbiAgICAgICAgey8qIERpc2NvdmVyeSBQcm9ncmVzcyAqL31cbiAgICAgICAge2lzRGlzY292ZXJpbmcgJiYgKFxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibWItNFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gbWItMlwiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LXNtIGZvbnQtbWVkaXVtIHRleHQtZ3JheS03MDBcIj57ZGlzY292ZXJ5U3RhdHVzfTwvc3Bhbj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC1zbSB0ZXh0LWdyYXktNTAwXCI+e2Rpc2NvdmVyeVByb2dyZXNzfSU8L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy1mdWxsIGJnLWdyYXktMjAwIHJvdW5kZWQtZnVsbCBoLTJcIj5cbiAgICAgICAgICAgICAgPGRpdiBcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJiZy1ienp6LXByaW1hcnkgaC0yIHJvdW5kZWQtZnVsbCB0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi0zMDAgZWFzZS1vdXRcIlxuICAgICAgICAgICAgICAgIHN0eWxlPXt7IHdpZHRoOiBgJHtkaXNjb3ZlcnlQcm9ncmVzc30lYCB9fVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICl9XG4gICAgICA8L2Rpdj5cblxuICAgICAgey8qIE1hY2hpbmUgVGFibGUgKi99XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImNhcmRcIj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gbWItNFwiPlxuICAgICAgICAgIDxoMyBjbGFzc05hbWU9XCJ0ZXh0LWxnIGZvbnQtbWVkaXVtIHRleHQtZ3JheS05MDBcIj5DbHVzdGVyIE1hY2hpbmVzPC9oMz5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIG9uQ2xpY2s9e2RlcGxveVRvU2VsZWN0ZWR9XG4gICAgICAgICAgICBkaXNhYmxlZD17bWFjaGluZXMuZmlsdGVyKG0gPT4gbS5zZWxlY3RlZCAmJiBtLnNzaFN0YXR1cyA9PT0gJ2Nvbm5lY3RlZCcpLmxlbmd0aCA9PT0gMH1cbiAgICAgICAgICAgIGNsYXNzTmFtZT1cImJ0bi1wcmltYXJ5IGZsZXggaXRlbXMtY2VudGVyXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8Q2xvdWRBcnJvd0Rvd25JY29uIGNsYXNzTmFtZT1cImgtNCB3LTQgbXItMlwiIC8+XG4gICAgICAgICAgICBEZXBsb3kgdG8gU2VsZWN0ZWRcbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJvdmVyZmxvdy14LWF1dG9cIj5cbiAgICAgICAgICA8dGFibGUgY2xhc3NOYW1lPVwibWluLXctZnVsbCBkaXZpZGUteSBkaXZpZGUtZ3JheS0yMDBcIj5cbiAgICAgICAgICAgIDx0aGVhZCBjbGFzc05hbWU9XCJiZy1ncmF5LTUwXCI+XG4gICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICA8dGggY2xhc3NOYW1lPVwicHgtNiBweS0zIHRleHQtbGVmdCB0ZXh0LXhzIGZvbnQtbWVkaXVtIHRleHQtZ3JheS01MDAgdXBwZXJjYXNlIHRyYWNraW5nLXdpZGVyXCI+XG4gICAgICAgICAgICAgICAgICBTZWxlY3RcbiAgICAgICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgICAgIDx0aCBjbGFzc05hbWU9XCJweC02IHB5LTMgdGV4dC1sZWZ0IHRleHQteHMgZm9udC1tZWRpdW0gdGV4dC1ncmF5LTUwMCB1cHBlcmNhc2UgdHJhY2tpbmctd2lkZXJcIj5cbiAgICAgICAgICAgICAgICAgIE1hY2hpbmVcbiAgICAgICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgICAgIDx0aCBjbGFzc05hbWU9XCJweC02IHB5LTMgdGV4dC1sZWZ0IHRleHQteHMgZm9udC1tZWRpdW0gdGV4dC1ncmF5LTUwMCB1cHBlcmNhc2UgdHJhY2tpbmctd2lkZXJcIj5cbiAgICAgICAgICAgICAgICAgIE9wZXJhdGluZyBTeXN0ZW1cbiAgICAgICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgICAgIDx0aCBjbGFzc05hbWU9XCJweC02IHB5LTMgdGV4dC1sZWZ0IHRleHQteHMgZm9udC1tZWRpdW0gdGV4dC1ncmF5LTUwMCB1cHBlcmNhc2UgdHJhY2tpbmctd2lkZXJcIj5cbiAgICAgICAgICAgICAgICAgIElQIEFkZHJlc3NcbiAgICAgICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgICAgIDx0aCBjbGFzc05hbWU9XCJweC02IHB5LTMgdGV4dC1sZWZ0IHRleHQteHMgZm9udC1tZWRpdW0gdGV4dC1ncmF5LTUwMCB1cHBlcmNhc2UgdHJhY2tpbmctd2lkZXJcIj5cbiAgICAgICAgICAgICAgICAgIFNTSCBTdGF0dXNcbiAgICAgICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgICAgIDx0aCBjbGFzc05hbWU9XCJweC02IHB5LTMgdGV4dC1sZWZ0IHRleHQteHMgZm9udC1tZWRpdW0gdGV4dC1ncmF5LTUwMCB1cHBlcmNhc2UgdHJhY2tpbmctd2lkZXJcIj5cbiAgICAgICAgICAgICAgICAgIERlcGxveSBTdGF0dXNcbiAgICAgICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgICAgIDx0aCBjbGFzc05hbWU9XCJweC02IHB5LTMgdGV4dC1sZWZ0IHRleHQteHMgZm9udC1tZWRpdW0gdGV4dC1ncmF5LTUwMCB1cHBlcmNhc2UgdHJhY2tpbmctd2lkZXJcIj5cbiAgICAgICAgICAgICAgICAgIEFjdGlvbnNcbiAgICAgICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgICAgIDx0aCBjbGFzc05hbWU9XCJweC02IHB5LTMgdGV4dC1sZWZ0IHRleHQteHMgZm9udC1tZWRpdW0gdGV4dC1ncmF5LTUwMCB1cHBlcmNhc2UgdHJhY2tpbmctd2lkZXJcIj5cbiAgICAgICAgICAgICAgICAgIFJlbW92ZVxuICAgICAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICA8L3RoZWFkPlxuICAgICAgICAgICAgPHRib2R5IGNsYXNzTmFtZT1cImJnLXdoaXRlIGRpdmlkZS15IGRpdmlkZS1ncmF5LTIwMFwiPlxuICAgICAgICAgICAgICB7bWFjaGluZXMubWFwKChtYWNoaW5lKSA9PiAoXG4gICAgICAgICAgICAgICAgPHRyIGtleT17bWFjaGluZS5pZH0gY2xhc3NOYW1lPXttYWNoaW5lLnNlbGVjdGVkID8gJ2JnLWJsdWUtNTAnIDogJyd9PlxuICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzTmFtZT1cInB4LTYgcHktNCB3aGl0ZXNwYWNlLW5vd3JhcFwiPlxuICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e21hY2hpbmUuc2VsZWN0ZWR9XG4gICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eygpID0+IHRvZ2dsZU1hY2hpbmVTZWxlY3Rpb24obWFjaGluZS5pZCl9XG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiaC00IHctNCB0ZXh0LWJ6enotcHJpbWFyeSBmb2N1czpyaW5nLWJ6enotcHJpbWFyeSBib3JkZXItZ3JheS0zMDAgcm91bmRlZFwiXG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzTmFtZT1cInB4LTYgcHktNCB3aGl0ZXNwYWNlLW5vd3JhcFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1zbSBmb250LW1lZGl1bSB0ZXh0LWdyYXktOTAwXCI+e21hY2hpbmUuaG9zdG5hbWV9PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAge21hY2hpbmUuc3lzdGVtSW5mbyAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQteHMgdGV4dC1ncmF5LTUwMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7bWFjaGluZS5zeXN0ZW1JbmZvLmNwdX0gY29yZXMg4oCiIHttYWNoaW5lLnN5c3RlbUluZm8ubWVtb3J5fUdCIFJBTSDigKIge21hY2hpbmUuc3lzdGVtSW5mby5kaXNrfUdCIGRpc2tcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzc05hbWU9XCJweC02IHB5LTQgd2hpdGVzcGFjZS1ub3dyYXBcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LXNtIHRleHQtZ3JheS05MDBcIj57bWFjaGluZS5vc308L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LXhzIHRleHQtZ3JheS01MDBcIj57bWFjaGluZS5vc1ZlcnNpb259PC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzTmFtZT1cInB4LTYgcHktNCB3aGl0ZXNwYWNlLW5vd3JhcCB0ZXh0LXNtIHRleHQtZ3JheS05MDBcIj5cbiAgICAgICAgICAgICAgICAgICAge21hY2hpbmUuaXB9XG4gICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzTmFtZT1cInB4LTYgcHktNCB3aGl0ZXNwYWNlLW5vd3JhcFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAge2dldFN0YXR1c0ljb24obWFjaGluZS5zc2hTdGF0dXMpfVxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cIm1sLTIgdGV4dC1zbSB0ZXh0LWdyYXktOTAwIGNhcGl0YWxpemVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHttYWNoaW5lLnNzaFN0YXR1cy5yZXBsYWNlKCdfJywgJyAnKX1cbiAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzc05hbWU9XCJweC02IHB5LTQgd2hpdGVzcGFjZS1ub3dyYXBcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgIHtnZXRTdGF0dXNJY29uKG1hY2hpbmUuZGVwbG95U3RhdHVzKX1cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1sLTIgZmxleC0xXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtc20gdGV4dC1ncmF5LTkwMCBjYXBpdGFsaXplXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHttYWNoaW5lLmRlcGxveVN0YXR1cy5yZXBsYWNlKCdfJywgJyAnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAge21hY2hpbmUuZGVwbG95U3RhdHVzID09PSAnaW5zdGFsbGluZycgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm10LTFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQteHMgdGV4dC1ncmF5LTUwMCBtYi0xXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7bWFjaGluZS5kZXBsb3lTdGVwIHx8ICdEZXBsb3lpbmcuLi4nfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy1mdWxsIGJnLWdyYXktMjAwIHJvdW5kZWQtZnVsbCBoLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImJnLWJsdWUtNTAwIGgtMiByb3VuZGVkLWZ1bGwgdHJhbnNpdGlvbi1hbGwgZHVyYXRpb24tMzAwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3sgd2lkdGg6IGAke21hY2hpbmUuZGVwbG95UHJvZ3Jlc3MgfHwgMH0lYCB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQteHMgdGV4dC1ncmF5LTUwMCBtdC0xXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7bWFjaGluZS5kZXBsb3lQcm9ncmVzcyB8fCAwfSVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICA8dGQgY2xhc3NOYW1lPVwicHgtNiBweS00IHdoaXRlc3BhY2Utbm93cmFwIHRleHQtc20gZm9udC1tZWRpdW0gc3BhY2UteC0yXCI+XG4gICAgICAgICAgICAgICAgICAgIHttYWNoaW5lLmlkICE9PSAnbG9jYWxob3N0JyAmJiBtYWNoaW5lLnNzaFN0YXR1cyAhPT0gJ2Nvbm5lY3RlZCcgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gdGVzdFNTSENvbm5lY3Rpb24obWFjaGluZS5pZCl9XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ0ZXh0LWJsdWUtNjAwIGhvdmVyOnRleHQtYmx1ZS05MDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e21hY2hpbmUuc3NoU3RhdHVzID09PSAndGVzdGluZyd9XG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgVGVzdCBTU0hcbiAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgIHttYWNoaW5lLnNzaFN0YXR1cyA9PT0gJ2Nvbm5lY3RlZCcgJiYgbWFjaGluZS5kZXBsb3lTdGF0dXMgPT09ICdub3RfZGVwbG95ZWQnICYmIChcbiAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IGRlcGxveVRvTWFjaGluZShtYWNoaW5lLmlkKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInRleHQtZ3JlZW4tNjAwIGhvdmVyOnRleHQtZ3JlZW4tOTAwXCJcbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICBJbnN0YWxsXG4gICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICB7bWFjaGluZS5kZXBsb3lTdGF0dXMgIT09ICdub3RfZGVwbG95ZWQnICYmIChcbiAgICAgICAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gc2V0U2hvd0xvZ3MobWFjaGluZS5pZCl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInRleHQtZ3JheS02MDAgaG92ZXI6dGV4dC1ncmF5LTkwMCBtci0yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9XCJWaWV3IGRlcGxveW1lbnQgbG9nc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxEb2N1bWVudFRleHRJY29uIGNsYXNzTmFtZT1cImgtNCB3LTQgaW5saW5lXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gc2V0U2hvd0NvbnNvbGUobWFjaGluZS5pZCl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInRleHQtYmx1ZS02MDAgaG92ZXI6dGV4dC1ibHVlLTkwMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPVwiT3BlbiBkZXBsb3ltZW50IGNvbnNvbGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8Q29tcHV0ZXJEZXNrdG9wSWNvbiBjbGFzc05hbWU9XCJoLTQgdy00IGlubGluZVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICA8dGQgY2xhc3NOYW1lPVwicHgtNiBweS00IHdoaXRlc3BhY2Utbm93cmFwIHRleHQtc20gZm9udC1tZWRpdW1cIj5cbiAgICAgICAgICAgICAgICAgICAge21hY2hpbmUuaWQgIT09ICdsb2NhbGhvc3QnICYmIChcbiAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHJlbW92ZU1hY2hpbmUobWFjaGluZS5pZCl9XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ0ZXh0LXJlZC02MDAgaG92ZXI6dGV4dC1yZWQtOTAwIHAtMSByb3VuZGVkIGhvdmVyOmJnLXJlZC01MFwiXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT1cIlJlbW92ZSBtYWNoaW5lXCJcbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8WE1hcmtJY29uIGNsYXNzTmFtZT1cImgtNCB3LTRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgIDwvdGJvZHk+XG4gICAgICAgICAgPC90YWJsZT5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAge21hY2hpbmVzLmxlbmd0aCA9PT0gMCAmJiAoXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LWNlbnRlciBweS04XCI+XG4gICAgICAgICAgICA8U2VydmVySWNvbiBjbGFzc05hbWU9XCJoLTEyIHctMTIgdGV4dC1ncmF5LTQwMCBteC1hdXRvIG1iLTRcIiAvPlxuICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC1ncmF5LTUwMFwiPk5vIG1hY2hpbmVzIGRpc2NvdmVyZWQgeWV0LiBDbGljayBcIkRpc2NvdmVyIE1hY2hpbmVzXCIgdG8gc2NhbiB5b3VyIG5ldHdvcmsuPC9wPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICApfVxuICAgICAgPC9kaXY+XG5cbiAgICAgIHsvKiBEZXBsb3ltZW50IENvbmZpZ3VyYXRpb24gKi99XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImNhcmRcIj5cbiAgICAgICAgPGgzIGNsYXNzTmFtZT1cInRleHQtbGcgZm9udC1tZWRpdW0gdGV4dC1ncmF5LTkwMCBtYi00IGZsZXggaXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgPENvZzZUb290aEljb24gY2xhc3NOYW1lPVwiaC02IHctNiB0ZXh0LWJ6enotcHJpbWFyeSBtci0yXCIgLz5cbiAgICAgICAgICBEZXBsb3ltZW50IENvbmZpZ3VyYXRpb25cbiAgICAgICAgPC9oMz5cbiAgICAgICAgXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZ3JpZCBncmlkLWNvbHMtMSBtZDpncmlkLWNvbHMtMiBnYXAtNFwiPlxuICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICA8bGFiZWwgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICBjaGVja2VkPXtjb25maWcuYXV0b1N0YXJ0fVxuICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gc2V0Q29uZmlnKHByZXYgPT4gKHsgLi4ucHJldiwgYXV0b1N0YXJ0OiBlLnRhcmdldC5jaGVja2VkIH0pKX1cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJtci0yXCJcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgQXV0by1zdGFydCBzZXJ2aWNlcyBhZnRlciBkZXBsb3ltZW50XG4gICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIFxuICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICA8bGFiZWwgY2xhc3NOYW1lPVwiYmxvY2sgdGV4dC1zbSBmb250LW1lZGl1bSB0ZXh0LWdyYXktNzAwIG1iLTJcIj5cbiAgICAgICAgICAgICAgSGVhbHRoIENoZWNrIEludGVydmFsIChzZWNvbmRzKVxuICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgICAgICAgdmFsdWU9e2NvbmZpZy5oZWFsdGhDaGVja0ludGVydmFsfVxuICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IHNldENvbmZpZyhwcmV2ID0+ICh7IC4uLnByZXYsIGhlYWx0aENoZWNrSW50ZXJ2YWw6IHBhcnNlSW50KGUudGFyZ2V0LnZhbHVlKSB9KSl9XG4gICAgICAgICAgICAgIG1pbj1cIjEwXCJcbiAgICAgICAgICAgICAgbWF4PVwiMzAwXCJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiaW5wdXQtZmllbGRcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgey8qIExvZ3MgTW9kYWwgKi99XG4gICAgICB7c2hvd0xvZ3MgJiYgKFxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZpeGVkIGluc2V0LTAgYmctYmxhY2sgYmctb3BhY2l0eS01MCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciB6LTUwXCI+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJiZy13aGl0ZSByb3VuZGVkLWxnIHAtNiBtYXgtdy0yeGwgdy1mdWxsIG1heC1oLTk2IG92ZXJmbG93LWF1dG9cIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBqdXN0aWZ5LWJldHdlZW4gaXRlbXMtY2VudGVyIG1iLTRcIj5cbiAgICAgICAgICAgICAgPGgzIGNsYXNzTmFtZT1cInRleHQtbGcgZm9udC1tZWRpdW1cIj5EZXBsb3ltZW50IExvZ3MgLSB7bWFjaGluZXMuZmluZChtID0+IG0uaWQgPT09IHNob3dMb2dzKT8uaG9zdG5hbWV9PC9oMz5cbiAgICAgICAgICAgICAgPGJ1dHRvbiBvbkNsaWNrPXsoKSA9PiBzZXRTaG93TG9ncyhudWxsKX0gY2xhc3NOYW1lPVwidGV4dC1ncmF5LTQwMCBob3Zlcjp0ZXh0LWdyYXktNjAwXCI+XG4gICAgICAgICAgICAgICAg4pyVXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJnLWdyYXktOTAwIHRleHQtZ3JlZW4tNDAwIHAtNCByb3VuZGVkIGZvbnQtbW9ubyB0ZXh0LXNtIG1heC1oLTY0IG92ZXJmbG93LXktYXV0b1wiPlxuICAgICAgICAgICAgICB7ZGVwbG95bWVudExvZ3Nbc2hvd0xvZ3NdPy5tYXAoKGxvZywgaW5kZXgpID0+IChcbiAgICAgICAgICAgICAgICA8ZGl2IGtleT17aW5kZXh9Pntsb2d9PC9kaXY+XG4gICAgICAgICAgICAgICkpIHx8IDxkaXY+Tm8gbG9ncyBhdmFpbGFibGU8L2Rpdj59XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICApfVxuXG4gICAgICB7LyogVmlydHVhbCBDb25zb2xlIE1vZGFsICovfVxuICAgICAge3Nob3dDb25zb2xlICYmIChcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmaXhlZCBpbnNldC0wIGJnLWJsYWNrIGJnLW9wYWNpdHktNTAgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgei01MFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmctZ3JheS05MDAgcm91bmRlZC1sZyBvdmVyZmxvdy1oaWRkZW4gbWF4LXctNHhsIHctZnVsbCBtYXgtaC1bODB2aF0gZmxleCBmbGV4LWNvbFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJiZy1ncmF5LTgwMCBweC00IHB5LTMgZmxleCBqdXN0aWZ5LWJldHdlZW4gaXRlbXMtY2VudGVyIGJvcmRlci1iIGJvcmRlci1ncmF5LTcwMFwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgPENvbXB1dGVyRGVza3RvcEljb24gY2xhc3NOYW1lPVwiaC01IHctNSB0ZXh0LWdyZWVuLTQwMCBtci0yXCIgLz5cbiAgICAgICAgICAgICAgICA8aDMgY2xhc3NOYW1lPVwidGV4dC1sZyBmb250LW1lZGl1bSB0ZXh0LXdoaXRlXCI+XG4gICAgICAgICAgICAgICAgICBTU0ggQ29uc29sZSAtIHttYWNoaW5lcy5maW5kKG0gPT4gbS5pZCA9PT0gc2hvd0NvbnNvbGUpPy5ob3N0bmFtZX1cbiAgICAgICAgICAgICAgICA8L2gzPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cIm1sLTIgdGV4dC1zbSB0ZXh0LWdyYXktNDAwXCI+XG4gICAgICAgICAgICAgICAgICAoe21hY2hpbmVzLmZpbmQobSA9PiBtLmlkID09PSBzaG93Q29uc29sZSk/LmlwfSlcbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIHNwYWNlLXgtMlwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIgc3BhY2UteC0xXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctMiBoLTIgYmctcmVkLTUwMCByb3VuZGVkLWZ1bGxcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy0yIGgtMiBiZy15ZWxsb3ctNTAwIHJvdW5kZWQtZnVsbFwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LTIgaC0yIGJnLWdyZWVuLTUwMCByb3VuZGVkLWZ1bGxcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIFxuICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gc2V0U2hvd0NvbnNvbGUobnVsbCl9IFxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidGV4dC1ncmF5LTQwMCBob3Zlcjp0ZXh0LXdoaXRlIG1sLTRcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIOKclVxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4LTEgcC00IGZvbnQtbW9ubyB0ZXh0LXNtIG92ZXJmbG93LXktYXV0byBiZy1ncmF5LTkwMFwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtZ3JlZW4tNDAwIHNwYWNlLXktMVwiPlxuICAgICAgICAgICAgICAgIHtjb25zb2xlTG9nc1tzaG93Q29uc29sZV0/Lmxlbmd0aCA+IDAgPyAoXG4gICAgICAgICAgICAgICAgICBjb25zb2xlTG9nc1tzaG93Q29uc29sZV0ubWFwKChsb2csIGluZGV4KSA9PiAoXG4gICAgICAgICAgICAgICAgICAgIDxkaXYga2V5PXtpbmRleH0gY2xhc3NOYW1lPVwid2hpdGVzcGFjZS1wcmUtd3JhcFwiPntsb2d9PC9kaXY+XG4gICAgICAgICAgICAgICAgICApKVxuICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtZ3JheS01MDBcIj5XYWl0aW5nIGZvciBkZXBsb3ltZW50IHRvIHN0YXJ0Li4uPC9kaXY+XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICB7LyogQmxpbmtpbmcgY3Vyc29yICovfVxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaW5saW5lLWJsb2NrIHctMiBoLTQgYmctZ3JlZW4tNDAwIGFuaW1hdGUtcHVsc2VcIj48L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmctZ3JheS04MDAgcHgtNCBweS0yIGJvcmRlci10IGJvcmRlci1ncmF5LTcwMFwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQteHMgdGV4dC1ncmF5LTQwMFwiPlxuICAgICAgICAgICAgICAgIPCfkqEgVGhpcyBjb25zb2xlIHNob3dzIHJlYWwtdGltZSBkZXBsb3ltZW50IHByb2dyZXNzIGFuZCBTU0ggb3BlcmF0aW9uc1xuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICl9XG5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBqdXN0aWZ5LWJldHdlZW4gcHQtNiBib3JkZXItdCBib3JkZXItZ3JheS0yMDBcIj5cbiAgICAgICAgPGRpdj5cbiAgICAgICAgICB7b25CYWNrICYmIChcbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG9uQ2xpY2s9e29uQmFja30gY2xhc3NOYW1lPVwiYnRuLW91dGxpbmVcIj5cbiAgICAgICAgICAgICAgQmFja1xuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxidXR0b24gdHlwZT1cInN1Ym1pdFwiIGNsYXNzTmFtZT1cImJ0bi1wcmltYXJ5XCI+XG4gICAgICAgICAge2lzQ29tcGxldGVkID8gJ0NvbnRpbnVlJyA6ICdOZXh0OiBDbHVzdGVyIEZvcm1hdGlvbid9XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9mb3JtPlxuICApXG59Il0sIm5hbWVzIjpbInVzZVN0YXRlIiwidXNlRWZmZWN0IiwiU2VydmVySWNvbiIsIkV4Y2xhbWF0aW9uVHJpYW5nbGVJY29uIiwiQ2hlY2tDaXJjbGVJY29uIiwiWENpcmNsZUljb24iLCJTdG9wSWNvbiIsIkRvY3VtZW50VGV4dEljb24iLCJBcnJvd1BhdGhJY29uIiwiQ2xvdWRBcnJvd0Rvd25JY29uIiwiQ29nNlRvb3RoSWNvbiIsIlhNYXJrSWNvbiIsIkNvbXB1dGVyRGVza3RvcEljb24iLCJTZXJ2aWNlRGVwbG95bWVudCIsInN5c3RlbUluZm8iLCJjb25maWdEYXRhIiwib25Db21wbGV0ZSIsIm9uQmFjayIsImlzQ29tcGxldGVkIiwibWFjaGluZXMiLCJzZXRNYWNoaW5lcyIsImlzRGlzY292ZXJpbmciLCJzZXRJc0Rpc2NvdmVyaW5nIiwiZGlzY292ZXJ5UHJvZ3Jlc3MiLCJzZXREaXNjb3ZlcnlQcm9ncmVzcyIsImRpc2NvdmVyeVN0YXR1cyIsInNldERpc2NvdmVyeVN0YXR1cyIsInNob3dMb2dzIiwic2V0U2hvd0xvZ3MiLCJkZXBsb3ltZW50TG9ncyIsInNldERlcGxveW1lbnRMb2dzIiwic2hvd0NvbnNvbGUiLCJzZXRTaG93Q29uc29sZSIsImNvbnNvbGVMb2dzIiwic2V0Q29uc29sZUxvZ3MiLCJjb25maWciLCJzZXRDb25maWciLCJkZXBsb3ltZW50TWV0aG9kIiwiYXV0b1N0YXJ0IiwiaGVhbHRoQ2hlY2tJbnRlcnZhbCIsInNlbGVjdGVkTWFjaGluZXMiLCJjdXJyZW50TWFjaGluZSIsImlkIiwiaG9zdG5hbWUiLCJuZXR3b3JrIiwiaXAiLCJwcmltYXJ5SVAiLCJvcyIsIm9zVmVyc2lvbiIsInNzaFN0YXR1cyIsImRlcGxveVN0YXR1cyIsInNlbGVjdGVkIiwiY3B1IiwiY3B1X2NvcmVzIiwibWVtb3J5IiwiTWF0aCIsInJvdW5kIiwibWVtb3J5X21iIiwiZGlzayIsInN0b3JhZ2UiLCJmcmVlX3NwYWNlX2diIiwicHJldiIsImRpc2NvdmVyTWFjaGluZXMiLCJwcm9ncmVzc0ludGVydmFsIiwic2V0SW50ZXJ2YWwiLCJuZXdQcm9ncmVzcyIsIm1pbiIsInJlc3BvbnNlIiwiZmV0Y2giLCJtZXRob2QiLCJoZWFkZXJzIiwiYm9keSIsIkpTT04iLCJzdHJpbmdpZnkiLCJzdWJuZXQiLCJhbGxvd2VkSVBzIiwic3NoS2V5Iiwic2VjdXJpdHkiLCJzc2hQdWJsaWNLZXkiLCJjbGVhckludGVydmFsIiwib2siLCJyZXN1bHQiLCJqc29uIiwibGVuZ3RoIiwiZGlzY292ZXJlZE1hY2hpbmVzIiwibWFwIiwibSIsIm9zX3ZlcnNpb24iLCJsYXN0U2VlbiIsIkRhdGUiLCJ0b0lTT1N0cmluZyIsInN5c3RlbV9pbmZvIiwibG9jYWxob3N0IiwiZmluZCIsImVycm9yIiwiY29uc29sZSIsInNldFRpbWVvdXQiLCJ0ZXN0U1NIQ29ubmVjdGlvbiIsIm1hY2hpbmVJZCIsIm1hY2hpbmUiLCJzc2hQcml2YXRlS2V5Iiwic3NoVXNlcm5hbWUiLCJzc2hQYXNzd29yZCIsInNzaFBvcnQiLCJzdWNjZXNzIiwiZGVwbG95VG9NYWNoaW5lIiwiZGVwbG95UHJvZ3Jlc3MiLCJkZXBsb3lTdGVwIiwibG9ncyIsImFkZENvbnNvbGVMb2ciLCJtZXNzYWdlIiwidGltZXN0YW1wIiwidG9Mb2NhbGVUaW1lU3RyaW5nIiwibG9nTWVzc2FnZSIsInByb2dyZXNzU3RlcHMiLCJwcm9ncmVzcyIsInN0ZXAiLCJ1cGRhdGVQcm9ncmVzcyIsInN0ZXBJbmRleCIsInB1c2giLCJwb3J0cyIsImFwaSIsImJ6enpQb3J0IiwibWNwIiwibWNwUG9ydCIsIndlYnVpIiwid2ViVUlQb3J0IiwicDJwIiwicDJwUG9ydCIsInN0ZXBzIiwiZm9yRWFjaCIsInRvZ2dsZU1hY2hpbmVTZWxlY3Rpb24iLCJmaWx0ZXIiLCJkZXBsb3lUb1NlbGVjdGVkIiwicmVtb3ZlTWFjaGluZSIsInJlbW92ZWQiLCJyZXN0IiwiZ2V0U3RhdHVzSWNvbiIsInN0YXR1cyIsImNsYXNzTmFtZSIsImhhbmRsZVN1Ym1pdCIsImUiLCJwcmV2ZW50RGVmYXVsdCIsImRlcGxveW1lbnQiLCJmb3JtIiwib25TdWJtaXQiLCJkaXYiLCJoMyIsInAiLCJzdHJvbmciLCJidXR0b24iLCJ0eXBlIiwib25DbGljayIsImRpc2FibGVkIiwic3BhbiIsInN0eWxlIiwid2lkdGgiLCJ0YWJsZSIsInRoZWFkIiwidHIiLCJ0aCIsInRib2R5IiwidGQiLCJpbnB1dCIsImNoZWNrZWQiLCJvbkNoYW5nZSIsInJlcGxhY2UiLCJ0aXRsZSIsImxhYmVsIiwidGFyZ2V0IiwidmFsdWUiLCJwYXJzZUludCIsIm1heCIsImxvZyIsImluZGV4Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./app/setup/components/ServiceDeployment.tsx\n");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "(ssr)/./app/setup/components/SystemDetection.tsx":
|
|
/*!**************************************************!*\
|
|
!*** ./app/setup/components/SystemDetection.tsx ***!
|
|
\**************************************************/
|
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
|
|
"use strict";
|
|
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ SystemDetection)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react-jsx-dev-runtime.js\");\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _barrel_optimize_names_ArrowPathIcon_CheckCircleIcon_CircleStackIcon_CpuChipIcon_ExclamationTriangleIcon_GlobeAltIcon_ServerIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! __barrel_optimize__?names=ArrowPathIcon,CheckCircleIcon,CircleStackIcon,CpuChipIcon,ExclamationTriangleIcon,GlobeAltIcon,ServerIcon!=!@heroicons/react/24/outline */ \"(ssr)/./node_modules/@heroicons/react/24/outline/esm/CheckCircleIcon.js\");\n/* harmony import */ var _barrel_optimize_names_ArrowPathIcon_CheckCircleIcon_CircleStackIcon_CpuChipIcon_ExclamationTriangleIcon_GlobeAltIcon_ServerIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! __barrel_optimize__?names=ArrowPathIcon,CheckCircleIcon,CircleStackIcon,CpuChipIcon,ExclamationTriangleIcon,GlobeAltIcon,ServerIcon!=!@heroicons/react/24/outline */ \"(ssr)/./node_modules/@heroicons/react/24/outline/esm/ExclamationTriangleIcon.js\");\n/* harmony import */ var _barrel_optimize_names_ArrowPathIcon_CheckCircleIcon_CircleStackIcon_CpuChipIcon_ExclamationTriangleIcon_GlobeAltIcon_ServerIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! __barrel_optimize__?names=ArrowPathIcon,CheckCircleIcon,CircleStackIcon,CpuChipIcon,ExclamationTriangleIcon,GlobeAltIcon,ServerIcon!=!@heroicons/react/24/outline */ \"(ssr)/./node_modules/@heroicons/react/24/outline/esm/ArrowPathIcon.js\");\n/* harmony import */ var _barrel_optimize_names_ArrowPathIcon_CheckCircleIcon_CircleStackIcon_CpuChipIcon_ExclamationTriangleIcon_GlobeAltIcon_ServerIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! __barrel_optimize__?names=ArrowPathIcon,CheckCircleIcon,CircleStackIcon,CpuChipIcon,ExclamationTriangleIcon,GlobeAltIcon,ServerIcon!=!@heroicons/react/24/outline */ \"(ssr)/./node_modules/@heroicons/react/24/outline/esm/CpuChipIcon.js\");\n/* harmony import */ var _barrel_optimize_names_ArrowPathIcon_CheckCircleIcon_CircleStackIcon_CpuChipIcon_ExclamationTriangleIcon_GlobeAltIcon_ServerIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! __barrel_optimize__?names=ArrowPathIcon,CheckCircleIcon,CircleStackIcon,CpuChipIcon,ExclamationTriangleIcon,GlobeAltIcon,ServerIcon!=!@heroicons/react/24/outline */ \"(ssr)/./node_modules/@heroicons/react/24/outline/esm/CircleStackIcon.js\");\n/* harmony import */ var _barrel_optimize_names_ArrowPathIcon_CheckCircleIcon_CircleStackIcon_CpuChipIcon_ExclamationTriangleIcon_GlobeAltIcon_ServerIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! __barrel_optimize__?names=ArrowPathIcon,CheckCircleIcon,CircleStackIcon,CpuChipIcon,ExclamationTriangleIcon,GlobeAltIcon,ServerIcon!=!@heroicons/react/24/outline */ \"(ssr)/./node_modules/@heroicons/react/24/outline/esm/ServerIcon.js\");\n/* harmony import */ var _barrel_optimize_names_ArrowPathIcon_CheckCircleIcon_CircleStackIcon_CpuChipIcon_ExclamationTriangleIcon_GlobeAltIcon_ServerIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! __barrel_optimize__?names=ArrowPathIcon,CheckCircleIcon,CircleStackIcon,CpuChipIcon,ExclamationTriangleIcon,GlobeAltIcon,ServerIcon!=!@heroicons/react/24/outline */ \"(ssr)/./node_modules/@heroicons/react/24/outline/esm/GlobeAltIcon.js\");\n/* __next_internal_client_entry_do_not_use__ default auto */ \n\n\nfunction SystemDetection({ systemInfo, configData, onComplete, onBack, isCompleted }) {\n const [loading, setLoading] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(!systemInfo);\n const [refreshing, setRefreshing] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n const [detectedInfo, setDetectedInfo] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(systemInfo);\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{\n if (!detectedInfo) {\n refreshSystemInfo();\n }\n }, []);\n const refreshSystemInfo = async ()=>{\n setRefreshing(true);\n try {\n const response = await fetch(\"/api/setup/system\");\n if (response.ok) {\n const result = await response.json();\n setDetectedInfo(result.system_info);\n }\n } catch (error) {\n console.error(\"Failed to detect system info:\", error);\n } finally{\n setLoading(false);\n setRefreshing(false);\n }\n };\n const handleContinue = ()=>{\n if (detectedInfo) {\n onComplete({\n system: detectedInfo,\n validated: true\n });\n }\n };\n const getStatusColor = (condition)=>{\n return condition ? \"text-green-600\" : \"text-red-600\";\n };\n const getStatusIcon = (condition)=>{\n return condition ? _barrel_optimize_names_ArrowPathIcon_CheckCircleIcon_CircleStackIcon_CpuChipIcon_ExclamationTriangleIcon_GlobeAltIcon_ServerIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_2__[\"default\"] : _barrel_optimize_names_ArrowPathIcon_CheckCircleIcon_CircleStackIcon_CpuChipIcon_ExclamationTriangleIcon_GlobeAltIcon_ServerIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_3__[\"default\"];\n };\n if (loading) {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center justify-center py-12\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_ArrowPathIcon_CheckCircleIcon_CircleStackIcon_CpuChipIcon_ExclamationTriangleIcon_GlobeAltIcon_ServerIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n className: \"h-8 w-8 text-bzzz-primary animate-spin mx-auto mb-4\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SystemDetection.tsx\",\n lineNumber: 108,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-gray-600\",\n children: \"Detecting system configuration...\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SystemDetection.tsx\",\n lineNumber: 109,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SystemDetection.tsx\",\n lineNumber: 107,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SystemDetection.tsx\",\n lineNumber: 106,\n columnNumber: 7\n }, this);\n }\n if (!detectedInfo) {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-center py-12\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_ArrowPathIcon_CheckCircleIcon_CircleStackIcon_CpuChipIcon_ExclamationTriangleIcon_GlobeAltIcon_ServerIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n className: \"h-12 w-12 text-red-500 mx-auto mb-4\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SystemDetection.tsx\",\n lineNumber: 118,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h3\", {\n className: \"text-lg font-medium text-gray-900 mb-2\",\n children: \"System Detection Failed\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SystemDetection.tsx\",\n lineNumber: 119,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-gray-600 mb-4\",\n children: \"Unable to detect system configuration. Please try again.\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SystemDetection.tsx\",\n lineNumber: 122,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: refreshSystemInfo,\n disabled: refreshing,\n className: \"btn-primary\",\n children: refreshing ? \"Retrying...\" : \"Retry Detection\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SystemDetection.tsx\",\n lineNumber: 125,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SystemDetection.tsx\",\n lineNumber: 117,\n columnNumber: 7\n }, this);\n }\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-y-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-gray-50 rounded-lg p-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center justify-between mb-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h3\", {\n className: \"text-lg font-medium text-gray-900\",\n children: \"System Overview\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SystemDetection.tsx\",\n lineNumber: 141,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: refreshSystemInfo,\n disabled: refreshing,\n className: \"text-bzzz-primary hover:text-bzzz-primary/80 transition-colors\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_ArrowPathIcon_CheckCircleIcon_CircleStackIcon_CpuChipIcon_ExclamationTriangleIcon_GlobeAltIcon_ServerIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n className: `h-5 w-5 ${refreshing ? \"animate-spin\" : \"\"}`\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SystemDetection.tsx\",\n lineNumber: 147,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SystemDetection.tsx\",\n lineNumber: 142,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SystemDetection.tsx\",\n lineNumber: 140,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid grid-cols-1 md:grid-cols-2 gap-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm font-medium text-gray-700\",\n children: \"Hostname\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SystemDetection.tsx\",\n lineNumber: 153,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-lg text-gray-900\",\n children: detectedInfo.network.hostname\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SystemDetection.tsx\",\n lineNumber: 154,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SystemDetection.tsx\",\n lineNumber: 152,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm font-medium text-gray-700\",\n children: \"Operating System\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SystemDetection.tsx\",\n lineNumber: 157,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-lg text-gray-900\",\n children: [\n detectedInfo.os,\n \" (\",\n detectedInfo.architecture,\n \")\"\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SystemDetection.tsx\",\n lineNumber: 158,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SystemDetection.tsx\",\n lineNumber: 156,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SystemDetection.tsx\",\n lineNumber: 151,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SystemDetection.tsx\",\n lineNumber: 139,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid grid-cols-1 md:grid-cols-2 gap-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-white border border-gray-200 rounded-lg p-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center mb-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_ArrowPathIcon_CheckCircleIcon_CircleStackIcon_CpuChipIcon_ExclamationTriangleIcon_GlobeAltIcon_ServerIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n className: \"h-6 w-6 text-bzzz-primary mr-2\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SystemDetection.tsx\",\n lineNumber: 170,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h3\", {\n className: \"text-lg font-medium text-gray-900\",\n children: \"CPU & Memory\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SystemDetection.tsx\",\n lineNumber: 171,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SystemDetection.tsx\",\n lineNumber: 169,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-y-3\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm font-medium text-gray-700\",\n children: \"CPU\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SystemDetection.tsx\",\n lineNumber: 176,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-gray-900\",\n children: [\n detectedInfo.cpu_cores,\n \" cores\"\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SystemDetection.tsx\",\n lineNumber: 177,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SystemDetection.tsx\",\n lineNumber: 175,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm font-medium text-gray-700\",\n children: \"Memory\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SystemDetection.tsx\",\n lineNumber: 182,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-gray-900\",\n children: [\n Math.round(detectedInfo.memory_mb / 1024),\n \" GB total\"\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SystemDetection.tsx\",\n lineNumber: 183,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SystemDetection.tsx\",\n lineNumber: 181,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SystemDetection.tsx\",\n lineNumber: 174,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SystemDetection.tsx\",\n lineNumber: 168,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-white border border-gray-200 rounded-lg p-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center mb-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_ArrowPathIcon_CheckCircleIcon_CircleStackIcon_CpuChipIcon_ExclamationTriangleIcon_GlobeAltIcon_ServerIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n className: \"h-6 w-6 text-bzzz-primary mr-2\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SystemDetection.tsx\",\n lineNumber: 193,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h3\", {\n className: \"text-lg font-medium text-gray-900\",\n children: \"Storage\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SystemDetection.tsx\",\n lineNumber: 194,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SystemDetection.tsx\",\n lineNumber: 192,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-y-3\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm font-medium text-gray-700\",\n children: \"Disk Space\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SystemDetection.tsx\",\n lineNumber: 199,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-gray-900\",\n children: [\n detectedInfo.storage.total_space_gb,\n \" GB total, \",\n \" \",\n detectedInfo.storage.free_space_gb,\n \" GB available\"\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SystemDetection.tsx\",\n lineNumber: 200,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SystemDetection.tsx\",\n lineNumber: 198,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full bg-gray-200 rounded-full h-2\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-bzzz-primary h-2 rounded-full\",\n style: {\n width: `${(detectedInfo.storage.total_space_gb - detectedInfo.storage.free_space_gb) / detectedInfo.storage.total_space_gb * 100}%`\n }\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SystemDetection.tsx\",\n lineNumber: 206,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SystemDetection.tsx\",\n lineNumber: 205,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SystemDetection.tsx\",\n lineNumber: 197,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SystemDetection.tsx\",\n lineNumber: 191,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SystemDetection.tsx\",\n lineNumber: 166,\n columnNumber: 7\n }, this),\n detectedInfo.gpus && detectedInfo.gpus.length > 0 && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-white border border-gray-200 rounded-lg p-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center mb-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_ArrowPathIcon_CheckCircleIcon_CircleStackIcon_CpuChipIcon_ExclamationTriangleIcon_GlobeAltIcon_ServerIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n className: \"h-6 w-6 text-bzzz-primary mr-2\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SystemDetection.tsx\",\n lineNumber: 221,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h3\", {\n className: \"text-lg font-medium text-gray-900\",\n children: [\n \"GPU Configuration (\",\n detectedInfo.gpus.length,\n \" GPU\",\n detectedInfo.gpus.length !== 1 ? \"s\" : \"\",\n \")\"\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SystemDetection.tsx\",\n lineNumber: 222,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SystemDetection.tsx\",\n lineNumber: 220,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid grid-cols-1 md:grid-cols-2 gap-4\",\n children: detectedInfo.gpus.map((gpu, index)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-gray-50 rounded-lg p-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"font-medium text-gray-900\",\n children: gpu.name\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SystemDetection.tsx\",\n lineNumber: 230,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm text-gray-600\",\n children: [\n gpu.type.toUpperCase(),\n \" • \",\n gpu.memory,\n \" • \",\n gpu.driver\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SystemDetection.tsx\",\n lineNumber: 231,\n columnNumber: 17\n }, this)\n ]\n }, index, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SystemDetection.tsx\",\n lineNumber: 229,\n columnNumber: 15\n }, this))\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SystemDetection.tsx\",\n lineNumber: 227,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SystemDetection.tsx\",\n lineNumber: 219,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-white border border-gray-200 rounded-lg p-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center mb-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_ArrowPathIcon_CheckCircleIcon_CircleStackIcon_CpuChipIcon_ExclamationTriangleIcon_GlobeAltIcon_ServerIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n className: \"h-6 w-6 text-bzzz-primary mr-2\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SystemDetection.tsx\",\n lineNumber: 243,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h3\", {\n className: \"text-lg font-medium text-gray-900\",\n children: \"Network Configuration\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SystemDetection.tsx\",\n lineNumber: 244,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SystemDetection.tsx\",\n lineNumber: 242,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-y-3\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm font-medium text-gray-700\",\n children: \"Hostname\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SystemDetection.tsx\",\n lineNumber: 249,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-gray-900\",\n children: detectedInfo.network.hostname\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SystemDetection.tsx\",\n lineNumber: 250,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SystemDetection.tsx\",\n lineNumber: 248,\n columnNumber: 11\n }, this),\n detectedInfo.network.private_ips && detectedInfo.network.private_ips.length > 0 && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm font-medium text-gray-700 mb-2\",\n children: \"Private IP Addresses\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SystemDetection.tsx\",\n lineNumber: 255,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-y-2\",\n children: detectedInfo.network.private_ips.map((ip, index)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex justify-between items-center text-sm\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n children: ip\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SystemDetection.tsx\",\n lineNumber: 259,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"status-indicator status-online\",\n children: \"active\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SystemDetection.tsx\",\n lineNumber: 260,\n columnNumber: 21\n }, this)\n ]\n }, index, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SystemDetection.tsx\",\n lineNumber: 258,\n columnNumber: 19\n }, this))\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SystemDetection.tsx\",\n lineNumber: 256,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SystemDetection.tsx\",\n lineNumber: 254,\n columnNumber: 13\n }, this),\n detectedInfo.network.public_ip && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm font-medium text-gray-700\",\n children: \"Public IP\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SystemDetection.tsx\",\n lineNumber: 269,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-gray-900\",\n children: detectedInfo.network.public_ip\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SystemDetection.tsx\",\n lineNumber: 270,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SystemDetection.tsx\",\n lineNumber: 268,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SystemDetection.tsx\",\n lineNumber: 247,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SystemDetection.tsx\",\n lineNumber: 241,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-white border border-gray-200 rounded-lg p-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h3\", {\n className: \"text-lg font-medium text-gray-900 mb-4\",\n children: \"Software Requirements\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SystemDetection.tsx\",\n lineNumber: 278,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-y-4\",\n children: [\n {\n name: \"Docker\",\n installed: detectedInfo.docker.available,\n version: detectedInfo.docker.version,\n required: true\n },\n {\n name: \"Docker Compose\",\n installed: detectedInfo.docker.compose_available,\n version: undefined,\n required: false\n },\n {\n name: \"Docker Swarm\",\n installed: detectedInfo.docker.swarm_mode,\n version: undefined,\n required: false\n }\n ].map((software, index)=>{\n const StatusIcon = getStatusIcon(software.installed);\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center justify-between\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(StatusIcon, {\n className: `h-5 w-5 mr-3 ${getStatusColor(software.installed)}`\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SystemDetection.tsx\",\n lineNumber: 305,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"font-medium text-gray-900\",\n children: software.name\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SystemDetection.tsx\",\n lineNumber: 307,\n columnNumber: 21\n }, this),\n software.version && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm text-gray-600\",\n children: [\n \"Version: \",\n software.version\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SystemDetection.tsx\",\n lineNumber: 309,\n columnNumber: 23\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SystemDetection.tsx\",\n lineNumber: 306,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SystemDetection.tsx\",\n lineNumber: 304,\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 software.required && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-xs bg-bzzz-primary text-white px-2 py-1 rounded mr-2\",\n children: \"Required\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SystemDetection.tsx\",\n lineNumber: 315,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: `text-sm font-medium ${getStatusColor(software.installed)}`,\n children: software.installed ? \"Installed\" : \"Missing\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SystemDetection.tsx\",\n lineNumber: 319,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SystemDetection.tsx\",\n lineNumber: 313,\n columnNumber: 17\n }, this)\n ]\n }, index, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SystemDetection.tsx\",\n lineNumber: 303,\n columnNumber: 15\n }, this);\n })\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SystemDetection.tsx\",\n lineNumber: 280,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SystemDetection.tsx\",\n lineNumber: 277,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-blue-50 border border-blue-200 rounded-lg p-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h3\", {\n className: \"text-lg font-medium text-blue-900 mb-4\",\n children: \"System Validation\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SystemDetection.tsx\",\n lineNumber: 331,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-y-2\",\n children: [\n {\n check: \"Minimum memory (2GB required)\",\n passed: detectedInfo.memory_mb >= 2048,\n warning: detectedInfo.memory_mb < 4096\n },\n {\n check: \"Available disk space (10GB required)\",\n passed: detectedInfo.storage.free_space_gb >= 10\n },\n {\n check: \"Docker installed and running\",\n passed: detectedInfo.docker.available\n }\n ].map((validation, index)=>{\n const StatusIcon = getStatusIcon(validation.passed);\n return /*#__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)(StatusIcon, {\n className: `h-4 w-4 mr-3 ${validation.passed ? \"text-green-600\" : \"text-red-600\"}`\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SystemDetection.tsx\",\n lineNumber: 352,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: `text-sm ${validation.passed ? \"text-green-800\" : \"text-red-800\"}`,\n children: [\n validation.check,\n validation.warning && validation.passed && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-yellow-600 ml-2\",\n children: \"(Warning: Recommend 4GB+)\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SystemDetection.tsx\",\n lineNumber: 364,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SystemDetection.tsx\",\n lineNumber: 357,\n columnNumber: 17\n }, this)\n ]\n }, index, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SystemDetection.tsx\",\n lineNumber: 351,\n columnNumber: 15\n }, this);\n })\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SystemDetection.tsx\",\n lineNumber: 333,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SystemDetection.tsx\",\n lineNumber: 330,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex justify-between pt-6 border-t border-gray-200\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: onBack && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: onBack,\n className: \"btn-outline\",\n children: \"Back\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SystemDetection.tsx\",\n lineNumber: 377,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SystemDetection.tsx\",\n lineNumber: 375,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex space-x-3\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: refreshSystemInfo,\n disabled: refreshing,\n className: \"btn-outline\",\n children: refreshing ? \"Refreshing...\" : \"Refresh\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SystemDetection.tsx\",\n lineNumber: 384,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: handleContinue,\n className: \"btn-primary\",\n disabled: !detectedInfo.docker.available,\n children: isCompleted ? \"Continue\" : \"Next: Repository Setup\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SystemDetection.tsx\",\n lineNumber: 392,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SystemDetection.tsx\",\n lineNumber: 383,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SystemDetection.tsx\",\n lineNumber: 374,\n columnNumber: 7\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/SystemDetection.tsx\",\n lineNumber: 137,\n columnNumber: 5\n }, this);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9hcHAvc2V0dXAvY29tcG9uZW50cy9TeXN0ZW1EZXRlY3Rpb24udHN4IiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFMkM7QUFTUDtBQXlDckIsU0FBU1MsZ0JBQWdCLEVBQ3RDQyxVQUFVLEVBQ1ZDLFVBQVUsRUFDVkMsVUFBVSxFQUNWQyxNQUFNLEVBQ05DLFdBQVcsRUFDVTtJQUNyQixNQUFNLENBQUNDLFNBQVNDLFdBQVcsR0FBR2hCLCtDQUFRQSxDQUFDLENBQUNVO0lBQ3hDLE1BQU0sQ0FBQ08sWUFBWUMsY0FBYyxHQUFHbEIsK0NBQVFBLENBQUM7SUFDN0MsTUFBTSxDQUFDbUIsY0FBY0MsZ0JBQWdCLEdBQUdwQiwrQ0FBUUEsQ0FBb0JVO0lBRXBFVCxnREFBU0EsQ0FBQztRQUNSLElBQUksQ0FBQ2tCLGNBQWM7WUFDakJFO1FBQ0Y7SUFDRixHQUFHLEVBQUU7SUFFTCxNQUFNQSxvQkFBb0I7UUFDeEJILGNBQWM7UUFDZCxJQUFJO1lBQ0YsTUFBTUksV0FBVyxNQUFNQyxNQUFNO1lBQzdCLElBQUlELFNBQVNFLEVBQUUsRUFBRTtnQkFDZixNQUFNQyxTQUFTLE1BQU1ILFNBQVNJLElBQUk7Z0JBQ2xDTixnQkFBZ0JLLE9BQU9FLFdBQVc7WUFDcEM7UUFDRixFQUFFLE9BQU9DLE9BQU87WUFDZEMsUUFBUUQsS0FBSyxDQUFDLGlDQUFpQ0E7UUFDakQsU0FBVTtZQUNSWixXQUFXO1lBQ1hFLGNBQWM7UUFDaEI7SUFDRjtJQUVBLE1BQU1ZLGlCQUFpQjtRQUNyQixJQUFJWCxjQUFjO1lBQ2hCUCxXQUFXO2dCQUNUbUIsUUFBUVo7Z0JBQ1JhLFdBQVc7WUFDYjtRQUNGO0lBQ0Y7SUFHQSxNQUFNQyxpQkFBaUIsQ0FBQ0M7UUFDdEIsT0FBT0EsWUFBWSxtQkFBbUI7SUFDeEM7SUFFQSxNQUFNQyxnQkFBZ0IsQ0FBQ0Q7UUFDckIsT0FBT0EsWUFBWTVCLG1NQUFlQSxHQUFHQyxtTUFBdUJBO0lBQzlEO0lBRUEsSUFBSVEsU0FBUztRQUNY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Ozs7Ozs7QUFNeEMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9ienp6LWNvbmZpZy11aS8uL2FwcC9zZXR1cC9jb21wb25lbnRzL1N5c3RlbURldGVjdGlvbi50c3g/MzI1ZCJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIGNsaWVudCdcblxuaW1wb3J0IHsgdXNlU3RhdGUsIHVzZUVmZmVjdCB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgXG4gIENwdUNoaXBJY29uLCBcbiAgU2VydmVySWNvbiwgXG4gIENpcmNsZVN0YWNrSWNvbixcbiAgR2xvYmVBbHRJY29uLFxuICBDaGVja0NpcmNsZUljb24sXG4gIEV4Y2xhbWF0aW9uVHJpYW5nbGVJY29uLFxuICBBcnJvd1BhdGhJY29uXG59IGZyb20gJ0BoZXJvaWNvbnMvcmVhY3QvMjQvb3V0bGluZSdcblxuaW50ZXJmYWNlIFN5c3RlbUluZm8ge1xuICBvczogc3RyaW5nXG4gIGFyY2hpdGVjdHVyZTogc3RyaW5nXG4gIGNwdV9jb3JlczogbnVtYmVyXG4gIG1lbW9yeV9tYjogbnVtYmVyXG4gIGdwdXM6IEFycmF5PHtcbiAgICBuYW1lOiBzdHJpbmdcbiAgICBtZW1vcnk6IHN0cmluZ1xuICAgIGRyaXZlcjogc3RyaW5nXG4gICAgdHlwZTogc3RyaW5nXG4gIH0+XG4gIG5ldHdvcms6IHtcbiAgICBob3N0bmFtZTogc3RyaW5nXG4gICAgaW50ZXJmYWNlczogc3RyaW5nW11cbiAgICBwdWJsaWNfaXA/OiBzdHJpbmdcbiAgICBwcml2YXRlX2lwczogc3RyaW5nW11cbiAgICBkb2NrZXJfYnJpZGdlPzogc3RyaW5nXG4gIH1cbiAgc3RvcmFnZToge1xuICAgIHRvdGFsX3NwYWNlX2diOiBudW1iZXJcbiAgICBmcmVlX3NwYWNlX2diOiBudW1iZXJcbiAgICBtb3VudF9wYXRoOiBzdHJpbmdcbiAgfVxuICBkb2NrZXI6IHtcbiAgICBhdmFpbGFibGU6IGJvb2xlYW5cbiAgICB2ZXJzaW9uPzogc3RyaW5nXG4gICAgY29tcG9zZV9hdmFpbGFibGU6IGJvb2xlYW5cbiAgICBzd2FybV9tb2RlOiBib29sZWFuXG4gIH1cbn1cblxuaW50ZXJmYWNlIFN5c3RlbURldGVjdGlvblByb3BzIHtcbiAgc3lzdGVtSW5mbzogU3lzdGVtSW5mbyB8IG51bGxcbiAgY29uZmlnRGF0YTogYW55XG4gIG9uQ29tcGxldGU6IChkYXRhOiBhbnkpID0+IHZvaWRcbiAgb25CYWNrPzogKCkgPT4gdm9pZFxuICBpc0NvbXBsZXRlZDogYm9vbGVhblxufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBTeXN0ZW1EZXRlY3Rpb24oeyBcbiAgc3lzdGVtSW5mbywgXG4gIGNvbmZpZ0RhdGEsIFxuICBvbkNvbXBsZXRlLCBcbiAgb25CYWNrLCBcbiAgaXNDb21wbGV0ZWQgXG59OiBTeXN0ZW1EZXRlY3Rpb25Qcm9wcykge1xuICBjb25zdCBbbG9hZGluZywgc2V0TG9hZGluZ10gPSB1c2VTdGF0ZSghc3lzdGVtSW5mbylcbiAgY29uc3QgW3JlZnJlc2hpbmcsIHNldFJlZnJlc2hpbmddID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtkZXRlY3RlZEluZm8sIHNldERldGVjdGVkSW5mb10gPSB1c2VTdGF0ZTxTeXN0ZW1JbmZvIHwgbnVsbD4oc3lzdGVtSW5mbylcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghZGV0ZWN0ZWRJbmZvKSB7XG4gICAgICByZWZyZXNoU3lzdGVtSW5mbygpXG4gICAgfVxuICB9LCBbXSlcblxuICBjb25zdCByZWZyZXNoU3lzdGVtSW5mbyA9IGFzeW5jICgpID0+IHtcbiAgICBzZXRSZWZyZXNoaW5nKHRydWUpXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goJy9hcGkvc2V0dXAvc3lzdGVtJylcbiAgICAgIGlmIChyZXNwb25zZS5vaykge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCByZXNwb25zZS5qc29uKClcbiAgICAgICAgc2V0RGV0ZWN0ZWRJbmZvKHJlc3VsdC5zeXN0ZW1faW5mbylcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcignRmFpbGVkIHRvIGRldGVjdCBzeXN0ZW0gaW5mbzonLCBlcnJvcilcbiAgICB9IGZpbmFsbHkge1xuICAgICAgc2V0TG9hZGluZyhmYWxzZSlcbiAgICAgIHNldFJlZnJlc2hpbmcoZmFsc2UpXG4gICAgfVxuICB9XG5cbiAgY29uc3QgaGFuZGxlQ29udGludWUgPSAoKSA9PiB7XG4gICAgaWYgKGRldGVjdGVkSW5mbykge1xuICAgICAgb25Db21wbGV0ZSh7XG4gICAgICAgIHN5c3RlbTogZGV0ZWN0ZWRJbmZvLFxuICAgICAgICB2YWxpZGF0ZWQ6IHRydWVcbiAgICAgIH0pXG4gICAgfVxuICB9XG5cblxuICBjb25zdCBnZXRTdGF0dXNDb2xvciA9IChjb25kaXRpb246IGJvb2xlYW4pID0+IHtcbiAgICByZXR1cm4gY29uZGl0aW9uID8gJ3RleHQtZ3JlZW4tNjAwJyA6ICd0ZXh0LXJlZC02MDAnXG4gIH1cblxuICBjb25zdCBnZXRTdGF0dXNJY29uID0gKGNvbmRpdGlvbjogYm9vbGVhbikgPT4ge1xuICAgIHJldHVybiBjb25kaXRpb24gPyBDaGVja0NpcmNsZUljb24gOiBFeGNsYW1hdGlvblRyaWFuZ2xlSWNvblxuICB9XG5cbiAgaWYgKGxvYWRpbmcpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBweS0xMlwiPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtY2VudGVyXCI+XG4gICAgICAgICAgPEFycm93UGF0aEljb24gY2xhc3NOYW1lPVwiaC04IHctOCB0ZXh0LWJ6enotcHJpbWFyeSBhbmltYXRlLXNwaW4gbXgtYXV0byBtYi00XCIgLz5cbiAgICAgICAgICA8cCBjbGFzc05hbWU9XCJ0ZXh0LWdyYXktNjAwXCI+RGV0ZWN0aW5nIHN5c3RlbSBjb25maWd1cmF0aW9uLi4uPC9wPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIClcbiAgfVxuXG4gIGlmICghZGV0ZWN0ZWRJbmZvKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1jZW50ZXIgcHktMTJcIj5cbiAgICAgICAgPEV4Y2xhbWF0aW9uVHJpYW5nbGVJY29uIGNsYXNzTmFtZT1cImgtMTIgdy0xMiB0ZXh0LXJlZC01MDAgbXgtYXV0byBtYi00XCIgLz5cbiAgICAgICAgPGgzIGNsYXNzTmFtZT1cInRleHQtbGcgZm9udC1tZWRpdW0gdGV4dC1ncmF5LTkwMCBtYi0yXCI+XG4gICAgICAgICAgU3lzdGVtIERldGVjdGlvbiBGYWlsZWRcbiAgICAgICAgPC9oMz5cbiAgICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC1ncmF5LTYwMCBtYi00XCI+XG4gICAgICAgICAgVW5hYmxlIHRvIGRldGVjdCBzeXN0ZW0gY29uZmlndXJhdGlvbi4gUGxlYXNlIHRyeSBhZ2Fpbi5cbiAgICAgICAgPC9wPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgb25DbGljaz17cmVmcmVzaFN5c3RlbUluZm99XG4gICAgICAgICAgZGlzYWJsZWQ9e3JlZnJlc2hpbmd9XG4gICAgICAgICAgY2xhc3NOYW1lPVwiYnRuLXByaW1hcnlcIlxuICAgICAgICA+XG4gICAgICAgICAge3JlZnJlc2hpbmcgPyAnUmV0cnlpbmcuLi4nIDogJ1JldHJ5IERldGVjdGlvbid9XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgKVxuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cInNwYWNlLXktNlwiPlxuICAgICAgey8qIFN5c3RlbSBPdmVydmlldyAqL31cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmctZ3JheS01MCByb3VuZGVkLWxnIHAtNlwiPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBtYi00XCI+XG4gICAgICAgICAgPGgzIGNsYXNzTmFtZT1cInRleHQtbGcgZm9udC1tZWRpdW0gdGV4dC1ncmF5LTkwMFwiPlN5c3RlbSBPdmVydmlldzwvaDM+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgb25DbGljaz17cmVmcmVzaFN5c3RlbUluZm99XG4gICAgICAgICAgICBkaXNhYmxlZD17cmVmcmVzaGluZ31cbiAgICAgICAgICAgIGNsYXNzTmFtZT1cInRleHQtYnp6ei1wcmltYXJ5IGhvdmVyOnRleHQtYnp6ei1wcmltYXJ5LzgwIHRyYW5zaXRpb24tY29sb3JzXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8QXJyb3dQYXRoSWNvbiBjbGFzc05hbWU9e2BoLTUgdy01ICR7cmVmcmVzaGluZyA/ICdhbmltYXRlLXNwaW4nIDogJyd9YH0gLz5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIFxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImdyaWQgZ3JpZC1jb2xzLTEgbWQ6Z3JpZC1jb2xzLTIgZ2FwLTRcIj5cbiAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LXNtIGZvbnQtbWVkaXVtIHRleHQtZ3JheS03MDBcIj5Ib3N0bmFtZTwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LWxnIHRleHQtZ3JheS05MDBcIj57ZGV0ZWN0ZWRJbmZvLm5ldHdvcmsuaG9zdG5hbWV9PC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1zbSBmb250LW1lZGl1bSB0ZXh0LWdyYXktNzAwXCI+T3BlcmF0aW5nIFN5c3RlbTwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LWxnIHRleHQtZ3JheS05MDBcIj5cbiAgICAgICAgICAgICAge2RldGVjdGVkSW5mby5vc30gKHtkZXRlY3RlZEluZm8uYXJjaGl0ZWN0dXJlfSlcbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICB7LyogSGFyZHdhcmUgSW5mb3JtYXRpb24gKi99XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImdyaWQgZ3JpZC1jb2xzLTEgbWQ6Z3JpZC1jb2xzLTIgZ2FwLTZcIj5cbiAgICAgICAgey8qIENQVSAmIE1lbW9yeSAqL31cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJiZy13aGl0ZSBib3JkZXIgYm9yZGVyLWdyYXktMjAwIHJvdW5kZWQtbGcgcC02XCI+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBtYi00XCI+XG4gICAgICAgICAgICA8Q3B1Q2hpcEljb24gY2xhc3NOYW1lPVwiaC02IHctNiB0ZXh0LWJ6enotcHJpbWFyeSBtci0yXCIgLz5cbiAgICAgICAgICAgIDxoMyBjbGFzc05hbWU9XCJ0ZXh0LWxnIGZvbnQtbWVkaXVtIHRleHQtZ3JheS05MDBcIj5DUFUgJiBNZW1vcnk8L2gzPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIFxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwic3BhY2UteS0zXCI+XG4gICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtc20gZm9udC1tZWRpdW0gdGV4dC1ncmF5LTcwMFwiPkNQVTwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtZ3JheS05MDBcIj5cbiAgICAgICAgICAgICAgICB7ZGV0ZWN0ZWRJbmZvLmNwdV9jb3Jlc30gY29yZXNcbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1zbSBmb250LW1lZGl1bSB0ZXh0LWdyYXktNzAwXCI+TWVtb3J5PC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1ncmF5LTkwMFwiPlxuICAgICAgICAgICAgICAgIHtNYXRoLnJvdW5kKGRldGVjdGVkSW5mby5tZW1vcnlfbWIgLyAxMDI0KX0gR0IgdG90YWxcbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgey8qIFN0b3JhZ2UgKi99XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmctd2hpdGUgYm9yZGVyIGJvcmRlci1ncmF5LTIwMCByb3VuZGVkLWxnIHAtNlwiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIgbWItNFwiPlxuICAgICAgICAgICAgPENpcmNsZVN0YWNrSWNvbiBjbGFzc05hbWU9XCJoLTYgdy02IHRleHQtYnp6ei1wcmltYXJ5IG1yLTJcIiAvPlxuICAgICAgICAgICAgPGgzIGNsYXNzTmFtZT1cInRleHQtbGcgZm9udC1tZWRpdW0gdGV4dC1ncmF5LTkwMFwiPlN0b3JhZ2U8L2gzPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIFxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwic3BhY2UteS0zXCI+XG4gICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtc20gZm9udC1tZWRpdW0gdGV4dC1ncmF5LTcwMFwiPkRpc2sgU3BhY2U8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LWdyYXktOTAwXCI+XG4gICAgICAgICAgICAgICAge2RldGVjdGVkSW5mby5zdG9yYWdlLnRvdGFsX3NwYWNlX2difSBHQiB0b3RhbCwgeycgJ31cbiAgICAgICAgICAgICAgICB7ZGV0ZWN0ZWRJbmZvLnN0b3JhZ2UuZnJlZV9zcGFjZV9nYn0gR0IgYXZhaWxhYmxlXG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctZnVsbCBiZy1ncmF5LTIwMCByb3VuZGVkLWZ1bGwgaC0yXCI+XG4gICAgICAgICAgICAgIDxkaXYgXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiYmctYnp6ei1wcmltYXJ5IGgtMiByb3VuZGVkLWZ1bGxcIlxuICAgICAgICAgICAgICAgIHN0eWxlPXt7IFxuICAgICAgICAgICAgICAgICAgd2lkdGg6IGAkeygoZGV0ZWN0ZWRJbmZvLnN0b3JhZ2UudG90YWxfc3BhY2VfZ2IgLSBkZXRlY3RlZEluZm8uc3RvcmFnZS5mcmVlX3NwYWNlX2diKSAvIGRldGVjdGVkSW5mby5zdG9yYWdlLnRvdGFsX3NwYWNlX2diKSAqIDEwMH0lYCBcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIHsvKiBHUFUgSW5mb3JtYXRpb24gKi99XG4gICAgICB7ZGV0ZWN0ZWRJbmZvLmdwdXMgJiYgZGV0ZWN0ZWRJbmZvLmdwdXMubGVuZ3RoID4gMCAmJiAoXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmctd2hpdGUgYm9yZGVyIGJvcmRlci1ncmF5LTIwMCByb3VuZGVkLWxnIHAtNlwiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIgbWItNFwiPlxuICAgICAgICAgICAgPFNlcnZlckljb24gY2xhc3NOYW1lPVwiaC02IHctNiB0ZXh0LWJ6enotcHJpbWFyeSBtci0yXCIgLz5cbiAgICAgICAgICAgIDxoMyBjbGFzc05hbWU9XCJ0ZXh0LWxnIGZvbnQtbWVkaXVtIHRleHQtZ3JheS05MDBcIj5cbiAgICAgICAgICAgICAgR1BVIENvbmZpZ3VyYXRpb24gKHtkZXRlY3RlZEluZm8uZ3B1cy5sZW5ndGh9IEdQVXtkZXRlY3RlZEluZm8uZ3B1cy5sZW5ndGggIT09IDEgPyAncycgOiAnJ30pXG4gICAgICAgICAgICA8L2gzPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIFxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZ3JpZCBncmlkLWNvbHMtMSBtZDpncmlkLWNvbHMtMiBnYXAtNFwiPlxuICAgICAgICAgICAge2RldGVjdGVkSW5mby5ncHVzLm1hcCgoZ3B1LCBpbmRleCkgPT4gKFxuICAgICAgICAgICAgICA8ZGl2IGtleT17aW5kZXh9IGNsYXNzTmFtZT1cImJnLWdyYXktNTAgcm91bmRlZC1sZyBwLTRcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZvbnQtbWVkaXVtIHRleHQtZ3JheS05MDBcIj57Z3B1Lm5hbWV9PC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LXNtIHRleHQtZ3JheS02MDBcIj5cbiAgICAgICAgICAgICAgICAgIHtncHUudHlwZS50b1VwcGVyQ2FzZSgpfSDigKIge2dwdS5tZW1vcnl9IOKAoiB7Z3B1LmRyaXZlcn1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICApKX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICApfVxuXG4gICAgICB7LyogTmV0d29yayBJbmZvcm1hdGlvbiAqL31cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmctd2hpdGUgYm9yZGVyIGJvcmRlci1ncmF5LTIwMCByb3VuZGVkLWxnIHAtNlwiPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIG1iLTRcIj5cbiAgICAgICAgICA8R2xvYmVBbHRJY29uIGNsYXNzTmFtZT1cImgtNiB3LTYgdGV4dC1ienp6LXByaW1hcnkgbXItMlwiIC8+XG4gICAgICAgICAgPGgzIGNsYXNzTmFtZT1cInRleHQtbGcgZm9udC1tZWRpdW0gdGV4dC1ncmF5LTkwMFwiPk5ldHdvcmsgQ29uZmlndXJhdGlvbjwvaDM+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICBcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJzcGFjZS15LTNcIj5cbiAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LXNtIGZvbnQtbWVkaXVtIHRleHQtZ3JheS03MDBcIj5Ib3N0bmFtZTwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LWdyYXktOTAwXCI+e2RldGVjdGVkSW5mby5uZXR3b3JrLmhvc3RuYW1lfTwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIFxuICAgICAgICAgIHtkZXRlY3RlZEluZm8ubmV0d29yay5wcml2YXRlX2lwcyAmJiBkZXRlY3RlZEluZm8ubmV0d29yay5wcml2YXRlX2lwcy5sZW5ndGggPiAwICYmIChcbiAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1zbSBmb250LW1lZGl1bSB0ZXh0LWdyYXktNzAwIG1iLTJcIj5Qcml2YXRlIElQIEFkZHJlc3NlczwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInNwYWNlLXktMlwiPlxuICAgICAgICAgICAgICAgIHtkZXRlY3RlZEluZm8ubmV0d29yay5wcml2YXRlX2lwcy5tYXAoKGlwLCBpbmRleCkgPT4gKFxuICAgICAgICAgICAgICAgICAgPGRpdiBrZXk9e2luZGV4fSBjbGFzc05hbWU9XCJmbGV4IGp1c3RpZnktYmV0d2VlbiBpdGVtcy1jZW50ZXIgdGV4dC1zbVwiPlxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj57aXB9PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJzdGF0dXMtaW5kaWNhdG9yIHN0YXR1cy1vbmxpbmVcIj5hY3RpdmU8L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICApfVxuICAgICAgICAgIFxuICAgICAgICAgIHtkZXRlY3RlZEluZm8ubmV0d29yay5wdWJsaWNfaXAgJiYgKFxuICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LXNtIGZvbnQtbWVkaXVtIHRleHQtZ3JheS03MDBcIj5QdWJsaWMgSVA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LWdyYXktOTAwXCI+e2RldGVjdGVkSW5mby5uZXR3b3JrLnB1YmxpY19pcH08L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICl9XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIHsvKiBTb2Z0d2FyZSBSZXF1aXJlbWVudHMgKi99XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImJnLXdoaXRlIGJvcmRlciBib3JkZXItZ3JheS0yMDAgcm91bmRlZC1sZyBwLTZcIj5cbiAgICAgICAgPGgzIGNsYXNzTmFtZT1cInRleHQtbGcgZm9udC1tZWRpdW0gdGV4dC1ncmF5LTkwMCBtYi00XCI+U29mdHdhcmUgUmVxdWlyZW1lbnRzPC9oMz5cbiAgICAgICAgXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwic3BhY2UteS00XCI+XG4gICAgICAgICAge1tcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbmFtZTogJ0RvY2tlcicsXG4gICAgICAgICAgICAgIGluc3RhbGxlZDogZGV0ZWN0ZWRJbmZvLmRvY2tlci5hdmFpbGFibGUsXG4gICAgICAgICAgICAgIHZlcnNpb246IGRldGVjdGVkSW5mby5kb2NrZXIudmVyc2lvbixcbiAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWVcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG5hbWU6ICdEb2NrZXIgQ29tcG9zZScsXG4gICAgICAgICAgICAgIGluc3RhbGxlZDogZGV0ZWN0ZWRJbmZvLmRvY2tlci5jb21wb3NlX2F2YWlsYWJsZSxcbiAgICAgICAgICAgICAgdmVyc2lvbjogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICByZXF1aXJlZDogZmFsc2VcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG5hbWU6ICdEb2NrZXIgU3dhcm0nLFxuICAgICAgICAgICAgICBpbnN0YWxsZWQ6IGRldGVjdGVkSW5mby5kb2NrZXIuc3dhcm1fbW9kZSxcbiAgICAgICAgICAgICAgdmVyc2lvbjogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICByZXF1aXJlZDogZmFsc2VcbiAgICAgICAgICAgIH1cbiAgICAgICAgICBdLm1hcCgoc29mdHdhcmUsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBTdGF0dXNJY29uID0gZ2V0U3RhdHVzSWNvbihzb2Z0d2FyZS5pbnN0YWxsZWQpXG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICA8ZGl2IGtleT17aW5kZXh9IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlblwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgIDxTdGF0dXNJY29uIGNsYXNzTmFtZT17YGgtNSB3LTUgbXItMyAke2dldFN0YXR1c0NvbG9yKHNvZnR3YXJlLmluc3RhbGxlZCl9YH0gLz5cbiAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZm9udC1tZWRpdW0gdGV4dC1ncmF5LTkwMFwiPntzb2Z0d2FyZS5uYW1lfTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICB7c29mdHdhcmUudmVyc2lvbiAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LXNtIHRleHQtZ3JheS02MDBcIj5WZXJzaW9uOiB7c29mdHdhcmUudmVyc2lvbn08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgIHtzb2Z0d2FyZS5yZXF1aXJlZCAmJiAoXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQteHMgYmctYnp6ei1wcmltYXJ5IHRleHQtd2hpdGUgcHgtMiBweS0xIHJvdW5kZWQgbXItMlwiPlxuICAgICAgICAgICAgICAgICAgICAgIFJlcXVpcmVkXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2B0ZXh0LXNtIGZvbnQtbWVkaXVtICR7Z2V0U3RhdHVzQ29sb3Ioc29mdHdhcmUuaW5zdGFsbGVkKX1gfT5cbiAgICAgICAgICAgICAgICAgICAge3NvZnR3YXJlLmluc3RhbGxlZCA/ICdJbnN0YWxsZWQnIDogJ01pc3NpbmcnfVxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIClcbiAgICAgICAgICB9KX1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgey8qIFN5c3RlbSBWYWxpZGF0aW9uICovfVxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJiZy1ibHVlLTUwIGJvcmRlciBib3JkZXItYmx1ZS0yMDAgcm91bmRlZC1sZyBwLTZcIj5cbiAgICAgICAgPGgzIGNsYXNzTmFtZT1cInRleHQtbGcgZm9udC1tZWRpdW0gdGV4dC1ibHVlLTkwMCBtYi00XCI+U3lzdGVtIFZhbGlkYXRpb248L2gzPlxuICAgICAgICBcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJzcGFjZS15LTJcIj5cbiAgICAgICAgICB7W1xuICAgICAgICAgICAgeyBcbiAgICAgICAgICAgICAgY2hlY2s6ICdNaW5pbXVtIG1lbW9yeSAoMkdCIHJlcXVpcmVkKScsIFxuICAgICAgICAgICAgICBwYXNzZWQ6IGRldGVjdGVkSW5mby5tZW1vcnlfbWIgPj0gMjA0OCxcbiAgICAgICAgICAgICAgd2FybmluZzogZGV0ZWN0ZWRJbmZvLm1lbW9yeV9tYiA8IDQwOTZcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7IFxuICAgICAgICAgICAgICBjaGVjazogJ0F2YWlsYWJsZSBkaXNrIHNwYWNlICgxMEdCIHJlcXVpcmVkKScsIFxuICAgICAgICAgICAgICBwYXNzZWQ6IGRldGVjdGVkSW5mby5zdG9yYWdlLmZyZWVfc3BhY2VfZ2IgPj0gMTAgXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgeyBcbiAgICAgICAgICAgICAgY2hlY2s6ICdEb2NrZXIgaW5zdGFsbGVkIGFuZCBydW5uaW5nJywgXG4gICAgICAgICAgICAgIHBhc3NlZDogZGV0ZWN0ZWRJbmZvLmRvY2tlci5hdmFpbGFibGUgXG4gICAgICAgICAgICB9XG4gICAgICAgICAgXS5tYXAoKHZhbGlkYXRpb24sIGluZGV4KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBTdGF0dXNJY29uID0gZ2V0U3RhdHVzSWNvbih2YWxpZGF0aW9uLnBhc3NlZClcbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgIDxkaXYga2V5PXtpbmRleH0gY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICA8U3RhdHVzSWNvbiBjbGFzc05hbWU9e2BoLTQgdy00IG1yLTMgJHtcbiAgICAgICAgICAgICAgICAgIHZhbGlkYXRpb24ucGFzc2VkIFxuICAgICAgICAgICAgICAgICAgICA/ICd0ZXh0LWdyZWVuLTYwMCcgXG4gICAgICAgICAgICAgICAgICAgIDogJ3RleHQtcmVkLTYwMCdcbiAgICAgICAgICAgICAgICB9YH0gLz5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2B0ZXh0LXNtICR7XG4gICAgICAgICAgICAgICAgICB2YWxpZGF0aW9uLnBhc3NlZCBcbiAgICAgICAgICAgICAgICAgICAgPyAndGV4dC1ncmVlbi04MDAnIFxuICAgICAgICAgICAgICAgICAgICA6ICd0ZXh0LXJlZC04MDAnXG4gICAgICAgICAgICAgICAgfWB9PlxuICAgICAgICAgICAgICAgICAge3ZhbGlkYXRpb24uY2hlY2t9XG4gICAgICAgICAgICAgICAgICB7dmFsaWRhdGlvbi53YXJuaW5nICYmIHZhbGlkYXRpb24ucGFzc2VkICYmIChcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC15ZWxsb3ctNjAwIG1sLTJcIj4oV2FybmluZzogUmVjb21tZW5kIDRHQispPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgKVxuICAgICAgICAgIH0pfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICB7LyogQWN0aW9uIEJ1dHRvbnMgKi99XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXgganVzdGlmeS1iZXR3ZWVuIHB0LTYgYm9yZGVyLXQgYm9yZGVyLWdyYXktMjAwXCI+XG4gICAgICAgIDxkaXY+XG4gICAgICAgICAge29uQmFjayAmJiAoXG4gICAgICAgICAgICA8YnV0dG9uIG9uQ2xpY2s9e29uQmFja30gY2xhc3NOYW1lPVwiYnRuLW91dGxpbmVcIj5cbiAgICAgICAgICAgICAgQmFja1xuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIFxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggc3BhY2UteC0zXCI+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgb25DbGljaz17cmVmcmVzaFN5c3RlbUluZm99XG4gICAgICAgICAgICBkaXNhYmxlZD17cmVmcmVzaGluZ31cbiAgICAgICAgICAgIGNsYXNzTmFtZT1cImJ0bi1vdXRsaW5lXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7cmVmcmVzaGluZyA/ICdSZWZyZXNoaW5nLi4uJyA6ICdSZWZyZXNoJ31cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICBcbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICBvbkNsaWNrPXtoYW5kbGVDb250aW51ZX1cbiAgICAgICAgICAgIGNsYXNzTmFtZT1cImJ0bi1wcmltYXJ5XCJcbiAgICAgICAgICAgIGRpc2FibGVkPXshZGV0ZWN0ZWRJbmZvLmRvY2tlci5hdmFpbGFibGV9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge2lzQ29tcGxldGVkID8gJ0NvbnRpbnVlJyA6ICdOZXh0OiBSZXBvc2l0b3J5IFNldHVwJ31cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgKVxufSJdLCJuYW1lcyI6WyJ1c2VTdGF0ZSIsInVzZUVmZmVjdCIsIkNwdUNoaXBJY29uIiwiU2VydmVySWNvbiIsIkNpcmNsZVN0YWNrSWNvbiIsIkdsb2JlQWx0SWNvbiIsIkNoZWNrQ2lyY2xlSWNvbiIsIkV4Y2xhbWF0aW9uVHJpYW5nbGVJY29uIiwiQXJyb3dQYXRoSWNvbiIsIlN5c3RlbURldGVjdGlvbiIsInN5c3RlbUluZm8iLCJjb25maWdEYXRhIiwib25Db21wbGV0ZSIsIm9uQmFjayIsImlzQ29tcGxldGVkIiwibG9hZGluZyIsInNldExvYWRpbmciLCJyZWZyZXNoaW5nIiwic2V0UmVmcmVzaGluZyIsImRldGVjdGVkSW5mbyIsInNldERldGVjdGVkSW5mbyIsInJlZnJlc2hTeXN0ZW1JbmZvIiwicmVzcG9uc2UiLCJmZXRjaCIsIm9rIiwicmVzdWx0IiwianNvbiIsInN5c3RlbV9pbmZvIiwiZXJyb3IiLCJjb25zb2xlIiwiaGFuZGxlQ29udGludWUiLCJzeXN0ZW0iLCJ2YWxpZGF0ZWQiLCJnZXRTdGF0dXNDb2xvciIsImNvbmRpdGlvbiIsImdldFN0YXR1c0ljb24iLCJkaXYiLCJjbGFzc05hbWUiLCJwIiwiaDMiLCJidXR0b24iLCJvbkNsaWNrIiwiZGlzYWJsZWQiLCJuZXR3b3JrIiwiaG9zdG5hbWUiLCJvcyIsImFyY2hpdGVjdHVyZSIsImNwdV9jb3JlcyIsIk1hdGgiLCJyb3VuZCIsIm1lbW9yeV9tYiIsInN0b3JhZ2UiLCJ0b3RhbF9zcGFjZV9nYiIsImZyZWVfc3BhY2VfZ2IiLCJzdHlsZSIsIndpZHRoIiwiZ3B1cyIsImxlbmd0aCIsIm1hcCIsImdwdSIsImluZGV4IiwibmFtZSIsInR5cGUiLCJ0b1VwcGVyQ2FzZSIsIm1lbW9yeSIsImRyaXZlciIsInByaXZhdGVfaXBzIiwiaXAiLCJzcGFuIiwicHVibGljX2lwIiwiaW5zdGFsbGVkIiwiZG9ja2VyIiwiYXZhaWxhYmxlIiwidmVyc2lvbiIsInJlcXVpcmVkIiwiY29tcG9zZV9hdmFpbGFibGUiLCJ1bmRlZmluZWQiLCJzd2FybV9tb2RlIiwic29mdHdhcmUiLCJTdGF0dXNJY29uIiwiY2hlY2siLCJwYXNzZWQiLCJ3YXJuaW5nIiwidmFsaWRhdGlvbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./app/setup/components/SystemDetection.tsx\n");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "(ssr)/./app/setup/components/TermsAndConditions.tsx":
|
|
/*!*****************************************************!*\
|
|
!*** ./app/setup/components/TermsAndConditions.tsx ***!
|
|
\*****************************************************/
|
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
|
|
"use strict";
|
|
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ TermsAndConditions)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react-jsx-dev-runtime.js\");\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _barrel_optimize_names_CheckCircleIcon_DocumentTextIcon_ExclamationTriangleIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! __barrel_optimize__?names=CheckCircleIcon,DocumentTextIcon,ExclamationTriangleIcon!=!@heroicons/react/24/outline */ \"(ssr)/./node_modules/@heroicons/react/24/outline/esm/DocumentTextIcon.js\");\n/* harmony import */ var _barrel_optimize_names_CheckCircleIcon_DocumentTextIcon_ExclamationTriangleIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! __barrel_optimize__?names=CheckCircleIcon,DocumentTextIcon,ExclamationTriangleIcon!=!@heroicons/react/24/outline */ \"(ssr)/./node_modules/@heroicons/react/24/outline/esm/ExclamationTriangleIcon.js\");\n/* harmony import */ var _barrel_optimize_names_CheckCircleIcon_DocumentTextIcon_ExclamationTriangleIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! __barrel_optimize__?names=CheckCircleIcon,DocumentTextIcon,ExclamationTriangleIcon!=!@heroicons/react/24/outline */ \"(ssr)/./node_modules/@heroicons/react/24/outline/esm/CheckCircleIcon.js\");\n/* __next_internal_client_entry_do_not_use__ default auto */ \n\n\nfunction TermsAndConditions({ systemInfo, configData, onComplete, onBack, isCompleted }) {\n const [agreed, setAgreed] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(configData?.terms?.agreed || false);\n const [error, setError] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(\"\");\n const handleSubmit = (e)=>{\n e.preventDefault();\n if (!agreed) {\n setError(\"You must agree to the Terms and Conditions to continue\");\n return;\n }\n setError(\"\");\n onComplete({\n terms: {\n agreed: true,\n timestamp: new Date().toISOString()\n }\n });\n };\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"form\", {\n onSubmit: handleSubmit,\n className: \"space-y-8\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"card\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center mb-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_CheckCircleIcon_DocumentTextIcon_ExclamationTriangleIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n className: \"h-6 w-6 text-bzzz-primary mr-2\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/TermsAndConditions.tsx\",\n lineNumber: 51,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h3\", {\n className: \"text-lg font-medium text-gray-900\",\n children: \"CHORUS:agents Software License Agreement\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/TermsAndConditions.tsx\",\n lineNumber: 52,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/TermsAndConditions.tsx\",\n lineNumber: 50,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-gray-50 border border-gray-200 rounded-lg p-6 max-h-96 overflow-y-auto\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"prose prose-sm max-w-none text-gray-700\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h4\", {\n className: \"text-base font-semibold text-gray-900 mb-3\",\n children: \"1. License Grant\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/TermsAndConditions.tsx\",\n lineNumber: 57,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"mb-4\",\n children: 'Subject to the terms and conditions of this Agreement, Chorus Services grants you a non-exclusive, non-transferable license to use CHORUS:agents (the \"Software\") for distributed AI coordination and task management.'\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/TermsAndConditions.tsx\",\n lineNumber: 58,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h4\", {\n className: \"text-base font-semibold text-gray-900 mb-3\",\n children: \"2. Permitted Uses\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/TermsAndConditions.tsx\",\n lineNumber: 63,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"ul\", {\n className: \"list-disc list-inside mb-4 space-y-1\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"li\", {\n children: \"Install and operate CHORUS:agents on your infrastructure\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/TermsAndConditions.tsx\",\n lineNumber: 65,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"li\", {\n children: \"Configure cluster nodes for distributed processing\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/TermsAndConditions.tsx\",\n lineNumber: 66,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"li\", {\n children: \"Integrate with supported AI models and services\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/TermsAndConditions.tsx\",\n lineNumber: 67,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"li\", {\n children: \"Use for commercial and non-commercial purposes\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/TermsAndConditions.tsx\",\n lineNumber: 68,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/TermsAndConditions.tsx\",\n lineNumber: 64,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h4\", {\n className: \"text-base font-semibold text-gray-900 mb-3\",\n children: \"3. Restrictions\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/TermsAndConditions.tsx\",\n lineNumber: 71,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"ul\", {\n className: \"list-disc list-inside mb-4 space-y-1\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"li\", {\n children: \"You may not redistribute, sublicense, or sell the Software\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/TermsAndConditions.tsx\",\n lineNumber: 73,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"li\", {\n children: \"You may not reverse engineer or decompile the Software\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/TermsAndConditions.tsx\",\n lineNumber: 74,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"li\", {\n children: \"You may not use the Software for illegal or harmful purposes\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/TermsAndConditions.tsx\",\n lineNumber: 75,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"li\", {\n children: \"You may not remove or modify proprietary notices\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/TermsAndConditions.tsx\",\n lineNumber: 76,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/TermsAndConditions.tsx\",\n lineNumber: 72,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h4\", {\n className: \"text-base font-semibold text-gray-900 mb-3\",\n children: \"4. Data Privacy\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/TermsAndConditions.tsx\",\n lineNumber: 79,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"mb-4\",\n children: \"CHORUS:agents processes data locally on your infrastructure. Chorus Services does not collect or store your operational data. Telemetry data may be collected for software improvement purposes.\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/TermsAndConditions.tsx\",\n lineNumber: 80,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h4\", {\n className: \"text-base font-semibold text-gray-900 mb-3\",\n children: \"5. Support and Updates\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/TermsAndConditions.tsx\",\n lineNumber: 85,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"mb-4\",\n children: \"Licensed users receive access to software updates, security patches, and community support. Premium support tiers are available separately.\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/TermsAndConditions.tsx\",\n lineNumber: 86,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h4\", {\n className: \"text-base font-semibold text-gray-900 mb-3\",\n children: \"6. Disclaimer of Warranty\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/TermsAndConditions.tsx\",\n lineNumber: 91,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"mb-4\",\n children: 'THE SOFTWARE IS PROVIDED \"AS IS\" WITHOUT WARRANTY OF ANY KIND. CHORUS SERVICES DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.'\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/TermsAndConditions.tsx\",\n lineNumber: 92,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h4\", {\n className: \"text-base font-semibold text-gray-900 mb-3\",\n children: \"7. Limitation of Liability\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/TermsAndConditions.tsx\",\n lineNumber: 98,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"mb-4\",\n children: \"IN NO EVENT SHALL CHORUS SERVICES BE LIABLE FOR ANY INDIRECT, INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THE SOFTWARE.\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/TermsAndConditions.tsx\",\n lineNumber: 99,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h4\", {\n className: \"text-base font-semibold text-gray-900 mb-3\",\n children: \"8. Termination\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/TermsAndConditions.tsx\",\n lineNumber: 104,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"mb-4\",\n children: \"This license is effective until terminated. You may terminate it at any time by uninstalling the Software. Chorus Services may terminate this license if you violate any terms of this Agreement.\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/TermsAndConditions.tsx\",\n lineNumber: 105,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-blue-50 border-l-4 border-blue-400 p-4 mt-6\",\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)(_barrel_optimize_names_CheckCircleIcon_DocumentTextIcon_ExclamationTriangleIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n className: \"h-5 w-5 text-blue-500 mt-0.5 mr-2\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/TermsAndConditions.tsx\",\n lineNumber: 113,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm text-blue-700\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"strong\", {\n children: \"Contact Information:\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/TermsAndConditions.tsx\",\n lineNumber: 115,\n columnNumber: 22\n }, this)\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/TermsAndConditions.tsx\",\n lineNumber: 115,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n children: [\n \"Chorus Services\",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"br\", {}, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/TermsAndConditions.tsx\",\n lineNumber: 116,\n columnNumber: 37\n }, this),\n \"Email: legal@chorus.services\",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"br\", {}, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/TermsAndConditions.tsx\",\n lineNumber: 117,\n columnNumber: 47\n }, this),\n \"Website: https://chorus.services\"\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/TermsAndConditions.tsx\",\n lineNumber: 116,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/TermsAndConditions.tsx\",\n lineNumber: 114,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/TermsAndConditions.tsx\",\n lineNumber: 112,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/TermsAndConditions.tsx\",\n lineNumber: 111,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/TermsAndConditions.tsx\",\n lineNumber: 56,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/TermsAndConditions.tsx\",\n lineNumber: 55,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/TermsAndConditions.tsx\",\n lineNumber: 49,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"card\",\n children: /*#__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)(\"label\", {\n className: \"flex items-start\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"checkbox\",\n checked: agreed,\n onChange: (e)=>setAgreed(e.target.checked),\n className: \"mt-1 mr-3 h-4 w-4 text-bzzz-primary border-gray-300 rounded focus:ring-bzzz-primary\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/TermsAndConditions.tsx\",\n lineNumber: 130,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"font-medium text-gray-900\",\n children: \"I have read and agree to the Terms and Conditions\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/TermsAndConditions.tsx\",\n lineNumber: 137,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-gray-600 mt-1\",\n children: \"By checking this box, you acknowledge that you have read, understood, and agree to be bound by the terms and conditions outlined above.\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/TermsAndConditions.tsx\",\n lineNumber: 140,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/TermsAndConditions.tsx\",\n lineNumber: 136,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/TermsAndConditions.tsx\",\n lineNumber: 129,\n columnNumber: 11\n }, this),\n error && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center text-red-600 text-sm\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_CheckCircleIcon_DocumentTextIcon_ExclamationTriangleIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n className: \"h-4 w-4 mr-1\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/TermsAndConditions.tsx\",\n lineNumber: 149,\n columnNumber: 15\n }, this),\n error\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/TermsAndConditions.tsx\",\n lineNumber: 148,\n columnNumber: 13\n }, this),\n agreed && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center text-green-600 text-sm\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_CheckCircleIcon_DocumentTextIcon_ExclamationTriangleIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n className: \"h-4 w-4 mr-1\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/TermsAndConditions.tsx\",\n lineNumber: 156,\n columnNumber: 15\n }, this),\n \"Thank you for accepting the terms and conditions\"\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/TermsAndConditions.tsx\",\n lineNumber: 155,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/TermsAndConditions.tsx\",\n lineNumber: 128,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/TermsAndConditions.tsx\",\n lineNumber: 127,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex justify-between pt-6 border-t border-gray-200\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: onBack && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n type: \"button\",\n onClick: onBack,\n className: \"btn-outline\",\n children: \"Back\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/TermsAndConditions.tsx\",\n lineNumber: 166,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/TermsAndConditions.tsx\",\n lineNumber: 164,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n type: \"submit\",\n disabled: !agreed,\n className: `${agreed ? \"btn-primary\" : \"btn-disabled\"}`,\n children: isCompleted ? \"Continue\" : \"Next: License Validation\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/TermsAndConditions.tsx\",\n lineNumber: 171,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/TermsAndConditions.tsx\",\n lineNumber: 163,\n columnNumber: 7\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/TermsAndConditions.tsx\",\n lineNumber: 46,\n columnNumber: 5\n }, this);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9hcHAvc2V0dXAvY29tcG9uZW50cy9UZXJtc0FuZENvbmRpdGlvbnMudHN4IiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUVnQztBQUtJO0FBVXJCLFNBQVNJLG1CQUFtQixFQUN6Q0MsVUFBVSxFQUNWQyxVQUFVLEVBQ1ZDLFVBQVUsRUFDVkMsTUFBTSxFQUNOQyxXQUFXLEVBQ2E7SUFDeEIsTUFBTSxDQUFDQyxRQUFRQyxVQUFVLEdBQUdYLCtDQUFRQSxDQUFDTSxZQUFZTSxPQUFPRixVQUFVO0lBQ2xFLE1BQU0sQ0FBQ0csT0FBT0MsU0FBUyxHQUFHZCwrQ0FBUUEsQ0FBQztJQUVuQyxNQUFNZSxlQUFlLENBQUNDO1FBQ3BCQSxFQUFFQyxjQUFjO1FBRWhCLElBQUksQ0FBQ1AsUUFBUTtZQUNYSSxTQUFTO1lBQ1Q7UUFDRjtRQUVBQSxTQUFTO1FBQ1RQLFdBQVc7WUFDVEssT0FBTztnQkFDTEYsUUFBUTtnQkFDUlEsV0FBVyxJQUFJQyxPQUFPQyxXQUFXO1lBQ25DO1FBQ0Y7SUFDRjtJQUVBLHFCQUNFLDhEQUFDQztRQUFLQyxVQUFVUDtRQUFjUSxXQUFVOzswQkFHdEMsOERBQUNDO2dCQUFJRCxXQUFVOztrQ0FDYiw4REFBQ0M7d0JBQUlELFdBQVU7OzBDQUNiLDhEQUFDdEIsa0pBQWdCQTtnQ0FBQ3NCLFdBQVU7Ozs7OzswQ0FDNUIsOERBQUNFO2dDQUFHRixXQUFVOzBDQUFvQzs7Ozs7Ozs7Ozs7O2tDQUdwRCw4REFBQ0M7d0JBQUlELFdBQVU7a0NBQ2IsNEVBQUNDOzRCQUFJRCxXQUFVOzs4Q0FDYiw4REFBQ0c7b0NBQUdILFdBQVU7OENBQTZDOzs7Ozs7OENBQzNELDhEQUFDSTtvQ0FBRUosV0FBVTs4Q0FBTzs7Ozs7OzhDQUtwQiw4REFBQ0c7b0NBQUdILFdBQVU7OENBQTZDOzs7Ozs7OENBQzNELDhEQUFDSztvQ0FBR0wsV0FBVTs7c0RBQ1osOERBQUNNO3NEQUFHOzs7Ozs7c0RBQ0osOERBQUNBO3NEQUFHOzs7Ozs7c0RBQ0osOERBQUNBO3NEQUFHOzs7Ozs7c0RBQ0osOERBQUNBO3NEQUFHOzs7Ozs7Ozs7Ozs7OENBR04sOERBQUNIO29DQUFHSCxXQUFVOzhDQUE2Qzs7Ozs7OzhDQUMzRCw4REFBQ0s7b0NBQUdMLFdBQVU7O3NEQUNaLDhEQUFDTTtzREFBRzs7Ozs7O3NEQUNKLDhEQUFDQTtzREFBRzs7Ozs7O3NEQUNKLDhEQUFDQTtzREFBRzs7Ozs7O3NEQUNKLDhEQUFDQTtzREFBRzs7Ozs7Ozs7Ozs7OzhDQUdOLDhEQUFDSDtvQ0FBR0gsV0FBVTs4Q0FBNkM7Ozs7Ozs4Q0FDM0QsOERBQUNJO29DQUFFSixXQUFVOzhDQUFPOzs7Ozs7OENBS3BCLDhEQUFDRztvQ0FBR0gsV0FBVTs4Q0FBNkM7Ozs7Ozs4Q0FDM0QsOERBQUNJO29DQUFFSixXQUFVOzhDQUFPOzs7Ozs7OENBS3BCLDhEQUFDRztvQ0FBR0gsV0FBVTs4Q0FBNkM7Ozs7Ozs4Q0FDM0QsOERBQUNJO29DQUFFSixXQUFVOzhDQUFPOzs7Ozs7OENBTXBCLDhEQUFDRztvQ0FBR0gsV0FBVTs4Q0FBNkM7Ozs7Ozs4Q0FDM0QsOERBQUNJO29DQUFFSixXQUFVOzhDQUFPOzs7Ozs7OENBS3BCLDhEQUFDRztvQ0FBR0gsV0FBVTs4Q0FBNkM7Ozs7Ozs4Q0FDM0QsOERBQUNJO29DQUFFSixXQUFVOzhDQUFPOzs7Ozs7OENBTXBCLDhEQUFDQztvQ0FBSUQsV0FBVTs4Q0FDYiw0RUFBQ0M7d0NBQUlELFdBQVU7OzBEQUNiLDhEQUFDcEIsa0pBQXVCQTtnREFBQ29CLFdBQVU7Ozs7OzswREFDbkMsOERBQUNDO2dEQUFJRCxXQUFVOztrRUFDYiw4REFBQ0k7a0VBQUUsNEVBQUNHO3NFQUFPOzs7Ozs7Ozs7OztrRUFDWCw4REFBQ0g7OzREQUFFOzBFQUFlLDhEQUFDSTs7Ozs7NERBQUs7MEVBQ0ksOERBQUNBOzs7Ozs0REFBSzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7MEJBVTlDLDhEQUFDUDtnQkFBSUQsV0FBVTswQkFDYiw0RUFBQ0M7b0JBQUlELFdBQVU7O3NDQUNiLDhEQUFDUzs0QkFBTVQsV0FBVTs7OENBQ2YsOERBQUNVO29DQUNDQyxNQUFLO29DQUNMQyxTQUFTekI7b0NBQ1QwQixVQUFVLENBQUNwQixJQUFNTCxVQUFVSyxFQUFFcUIsTUFBTSxDQUFDRixPQUFPO29DQUMzQ1osV0FBVTs7Ozs7OzhDQUVaLDhEQUFDQztvQ0FBSUQsV0FBVTs7c0RBQ2IsOERBQUNlOzRDQUFLZixXQUFVO3NEQUE0Qjs7Ozs7O3NEQUc1Qyw4REFBQ0k7NENBQUVKLFdBQVU7c0RBQXFCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7d0JBT3JDVix1QkFDQyw4REFBQ1c7NEJBQUlELFdBQVU7OzhDQUNiLDhEQUFDcEIsa0pBQXVCQTtvQ0FBQ29CLFdBQVU7Ozs7OztnQ0FDbENWOzs7Ozs7O3dCQUlKSCx3QkFDQyw4REFBQ2M7NEJBQUlELFdBQVU7OzhDQUNiLDhEQUFDckIsa0pBQWVBO29DQUFDcUIsV0FBVTs7Ozs7O2dDQUFpQjs7Ozs7Ozs7Ozs7Ozs7Ozs7OzBCQU9wRCw4REFBQ0M7Z0JBQUlELFdBQVU7O2tDQUNiLDhEQUFDQztrQ0FDRWhCLHdCQUNDLDhEQUFDK0I7NEJBQU9MLE1BQUs7NEJBQVNNLFNBQVNoQzs0QkFBUWUsV0FBVTtzQ0FBYzs7Ozs7Ozs7Ozs7a0NBS25FLDhEQUFDZ0I7d0JBQ0NMLE1BQUs7d0JBQ0xPLFVBQVUsQ0FBQy9CO3dCQUNYYSxXQUFXLENBQUMsRUFBRWIsU0FBUyxnQkFBZ0IsZUFBZSxDQUFDO2tDQUVoRUQsY0FBYyxhQUFhOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFLNUIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9ienp6LWNvbmZpZy11aS8uL2FwcC9zZXR1cC9jb21wb25lbnRzL1Rlcm1zQW5kQ29uZGl0aW9ucy50c3g/MWY5MSJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIGNsaWVudCdcblxuaW1wb3J0IHsgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IFxuICBEb2N1bWVudFRleHRJY29uLFxuICBDaGVja0NpcmNsZUljb24sXG4gIEV4Y2xhbWF0aW9uVHJpYW5nbGVJY29uXG59IGZyb20gJ0BoZXJvaWNvbnMvcmVhY3QvMjQvb3V0bGluZSdcblxuaW50ZXJmYWNlIFRlcm1zQW5kQ29uZGl0aW9uc1Byb3BzIHtcbiAgc3lzdGVtSW5mbzogYW55XG4gIGNvbmZpZ0RhdGE6IGFueVxuICBvbkNvbXBsZXRlOiAoZGF0YTogYW55KSA9PiB2b2lkXG4gIG9uQmFjaz86ICgpID0+IHZvaWRcbiAgaXNDb21wbGV0ZWQ6IGJvb2xlYW5cbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gVGVybXNBbmRDb25kaXRpb25zKHsgXG4gIHN5c3RlbUluZm8sIFxuICBjb25maWdEYXRhLCBcbiAgb25Db21wbGV0ZSwgXG4gIG9uQmFjaywgXG4gIGlzQ29tcGxldGVkIFxufTogVGVybXNBbmRDb25kaXRpb25zUHJvcHMpIHtcbiAgY29uc3QgW2FncmVlZCwgc2V0QWdyZWVkXSA9IHVzZVN0YXRlKGNvbmZpZ0RhdGE/LnRlcm1zPy5hZ3JlZWQgfHwgZmFsc2UpXG4gIGNvbnN0IFtlcnJvciwgc2V0RXJyb3JdID0gdXNlU3RhdGUoJycpXG5cbiAgY29uc3QgaGFuZGxlU3VibWl0ID0gKGU6IFJlYWN0LkZvcm1FdmVudCkgPT4ge1xuICAgIGUucHJldmVudERlZmF1bHQoKVxuICAgIFxuICAgIGlmICghYWdyZWVkKSB7XG4gICAgICBzZXRFcnJvcignWW91IG11c3QgYWdyZWUgdG8gdGhlIFRlcm1zIGFuZCBDb25kaXRpb25zIHRvIGNvbnRpbnVlJylcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHNldEVycm9yKCcnKVxuICAgIG9uQ29tcGxldGUoeyBcbiAgICAgIHRlcm1zOiB7IFxuICAgICAgICBhZ3JlZWQ6IHRydWUsIFxuICAgICAgICB0aW1lc3RhbXA6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSBcbiAgICAgIH0gXG4gICAgfSlcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPGZvcm0gb25TdWJtaXQ9e2hhbmRsZVN1Ym1pdH0gY2xhc3NOYW1lPVwic3BhY2UteS04XCI+XG5cbiAgICAgIHsvKiBUZXJtcyBhbmQgQ29uZGl0aW9ucyBDb250ZW50ICovfVxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJjYXJkXCI+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIgbWItNFwiPlxuICAgICAgICAgIDxEb2N1bWVudFRleHRJY29uIGNsYXNzTmFtZT1cImgtNiB3LTYgdGV4dC1ienp6LXByaW1hcnkgbXItMlwiIC8+XG4gICAgICAgICAgPGgzIGNsYXNzTmFtZT1cInRleHQtbGcgZm9udC1tZWRpdW0gdGV4dC1ncmF5LTkwMFwiPkNIT1JVUzphZ2VudHMgU29mdHdhcmUgTGljZW5zZSBBZ3JlZW1lbnQ8L2gzPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJnLWdyYXktNTAgYm9yZGVyIGJvcmRlci1ncmF5LTIwMCByb3VuZGVkLWxnIHAtNiBtYXgtaC05NiBvdmVyZmxvdy15LWF1dG9cIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInByb3NlIHByb3NlLXNtIG1heC13LW5vbmUgdGV4dC1ncmF5LTcwMFwiPlxuICAgICAgICAgICAgPGg0IGNsYXNzTmFtZT1cInRleHQtYmFzZSBmb250LXNlbWlib2xkIHRleHQtZ3JheS05MDAgbWItM1wiPjEuIExpY2Vuc2UgR3JhbnQ8L2g0PlxuICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwibWItNFwiPlxuICAgICAgICAgICAgICBTdWJqZWN0IHRvIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGlzIEFncmVlbWVudCwgQ2hvcnVzIFNlcnZpY2VzIGdyYW50cyB5b3UgYSBub24tZXhjbHVzaXZlLCBcbiAgICAgICAgICAgICAgbm9uLXRyYW5zZmVyYWJsZSBsaWNlbnNlIHRvIHVzZSBDSE9SVVM6YWdlbnRzICh0aGUgXCJTb2Z0d2FyZVwiKSBmb3IgZGlzdHJpYnV0ZWQgQUkgY29vcmRpbmF0aW9uIGFuZCB0YXNrIG1hbmFnZW1lbnQuXG4gICAgICAgICAgICA8L3A+XG5cbiAgICAgICAgICAgIDxoNCBjbGFzc05hbWU9XCJ0ZXh0LWJhc2UgZm9udC1zZW1pYm9sZCB0ZXh0LWdyYXktOTAwIG1iLTNcIj4yLiBQZXJtaXR0ZWQgVXNlczwvaDQ+XG4gICAgICAgICAgICA8dWwgY2xhc3NOYW1lPVwibGlzdC1kaXNjIGxpc3QtaW5zaWRlIG1iLTQgc3BhY2UteS0xXCI+XG4gICAgICAgICAgICAgIDxsaT5JbnN0YWxsIGFuZCBvcGVyYXRlIENIT1JVUzphZ2VudHMgb24geW91ciBpbmZyYXN0cnVjdHVyZTwvbGk+XG4gICAgICAgICAgICAgIDxsaT5Db25maWd1cmUgY2x1c3RlciBub2RlcyBmb3IgZGlzdHJpYnV0ZWQgcHJvY2Vzc2luZzwvbGk+XG4gICAgICAgICAgICAgIDxsaT5JbnRlZ3JhdGUgd2l0aCBzdXBwb3J0ZWQgQUkgbW9kZWxzIGFuZCBzZXJ2aWNlczwvbGk+XG4gICAgICAgICAgICAgIDxsaT5Vc2UgZm9yIGNvbW1lcmNpYWwgYW5kIG5vbi1jb21tZXJjaWFsIHB1cnBvc2VzPC9saT5cbiAgICAgICAgICAgIDwvdWw+XG5cbiAgICAgICAgICAgIDxoNCBjbGFzc05hbWU9XCJ0ZXh0LWJhc2UgZm9udC1zZW1pYm9sZCB0ZXh0LWdyYXktOTAwIG1iLTNcIj4zLiBSZXN0cmljdGlvbnM8L2g0PlxuICAgICAgICAgICAgPHVsIGNsYXNzTmFtZT1cImxpc3QtZGlzYyBsaXN0LWluc2lkZSBtYi00IHNwYWNlLXktMVwiPlxuICAgICAgICAgICAgICA8bGk+WW91IG1heSBub3QgcmVkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBvciBzZWxsIHRoZSBTb2Z0d2FyZTwvbGk+XG4gICAgICAgICAgICAgIDxsaT5Zb3UgbWF5IG5vdCByZXZlcnNlIGVuZ2luZWVyIG9yIGRlY29tcGlsZSB0aGUgU29mdHdhcmU8L2xpPlxuICAgICAgICAgICAgICA8bGk+WW91IG1heSBub3QgdXNlIHRoZSBTb2Z0d2FyZSBmb3IgaWxsZWdhbCBvciBoYXJtZnVsIHB1cnBvc2VzPC9saT5cbiAgICAgICAgICAgICAgPGxpPllvdSBtYXkgbm90IHJlbW92ZSBvciBtb2RpZnkgcHJvcHJpZXRhcnkgbm90aWNlczwvbGk+XG4gICAgICAgICAgICA8L3VsPlxuXG4gICAgICAgICAgICA8aDQgY2xhc3NOYW1lPVwidGV4dC1iYXNlIGZvbnQtc2VtaWJvbGQgdGV4dC1ncmF5LTkwMCBtYi0zXCI+NC4gRGF0YSBQcml2YWN5PC9oND5cbiAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cIm1iLTRcIj5cbiAgICAgICAgICAgICAgQ0hPUlVTOmFnZW50cyBwcm9jZXNzZXMgZGF0YSBsb2NhbGx5IG9uIHlvdXIgaW5mcmFzdHJ1Y3R1cmUuIENob3J1cyBTZXJ2aWNlcyBkb2VzIG5vdCBjb2xsZWN0IG9yIHN0b3JlIFxuICAgICAgICAgICAgICB5b3VyIG9wZXJhdGlvbmFsIGRhdGEuIFRlbGVtZXRyeSBkYXRhIG1heSBiZSBjb2xsZWN0ZWQgZm9yIHNvZnR3YXJlIGltcHJvdmVtZW50IHB1cnBvc2VzLlxuICAgICAgICAgICAgPC9wPlxuXG4gICAgICAgICAgICA8aDQgY2xhc3NOYW1lPVwidGV4dC1iYXNlIGZvbnQtc2VtaWJvbGQgdGV4dC1ncmF5LTkwMCBtYi0zXCI+NS4gU3VwcG9ydCBhbmQgVXBkYXRlczwvaDQ+XG4gICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJtYi00XCI+XG4gICAgICAgICAgICAgIExpY2Vuc2VkIHVzZXJzIHJlY2VpdmUgYWNjZXNzIHRvIHNvZnR3YXJlIHVwZGF0ZXMsIHNlY3VyaXR5IHBhdGNoZXMsIGFuZCBjb21tdW5pdHkgc3VwcG9ydC4gXG4gICAgICAgICAgICAgIFByZW1pdW0gc3VwcG9ydCB0aWVycyBhcmUgYXZhaWxhYmxlIHNlcGFyYXRlbHkuXG4gICAgICAgICAgICA8L3A+XG5cbiAgICAgICAgICAgIDxoNCBjbGFzc05hbWU9XCJ0ZXh0LWJhc2UgZm9udC1zZW1pYm9sZCB0ZXh0LWdyYXktOTAwIG1iLTNcIj42LiBEaXNjbGFpbWVyIG9mIFdhcnJhbnR5PC9oND5cbiAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cIm1iLTRcIj5cbiAgICAgICAgICAgICAgVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELiBDSE9SVVMgU0VSVklDRVMgRElTQ0xBSU1TIFxuICAgICAgICAgICAgICBBTEwgV0FSUkFOVElFUywgRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgXG4gICAgICAgICAgICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS5cbiAgICAgICAgICAgIDwvcD5cblxuICAgICAgICAgICAgPGg0IGNsYXNzTmFtZT1cInRleHQtYmFzZSBmb250LXNlbWlib2xkIHRleHQtZ3JheS05MDAgbWItM1wiPjcuIExpbWl0YXRpb24gb2YgTGlhYmlsaXR5PC9oND5cbiAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cIm1iLTRcIj5cbiAgICAgICAgICAgICAgSU4gTk8gRVZFTlQgU0hBTEwgQ0hPUlVTIFNFUlZJQ0VTIEJFIExJQUJMRSBGT1IgQU5ZIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBcbiAgICAgICAgICAgICAgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIEFSSVNJTkcgT1VUIE9GIFRIRSBVU0UgT0YgVEhFIFNPRlRXQVJFLlxuICAgICAgICAgICAgPC9wPlxuXG4gICAgICAgICAgICA8aDQgY2xhc3NOYW1lPVwidGV4dC1iYXNlIGZvbnQtc2VtaWJvbGQgdGV4dC1ncmF5LTkwMCBtYi0zXCI+OC4gVGVybWluYXRpb248L2g0PlxuICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwibWItNFwiPlxuICAgICAgICAgICAgICBUaGlzIGxpY2Vuc2UgaXMgZWZmZWN0aXZlIHVudGlsIHRlcm1pbmF0ZWQuIFlvdSBtYXkgdGVybWluYXRlIGl0IGF0IGFueSB0aW1lIGJ5IFxuICAgICAgICAgICAgICB1bmluc3RhbGxpbmcgdGhlIFNvZnR3YXJlLiBDaG9ydXMgU2VydmljZXMgbWF5IHRlcm1pbmF0ZSB0aGlzIGxpY2Vuc2UgaWYgeW91IFxuICAgICAgICAgICAgICB2aW9sYXRlIGFueSB0ZXJtcyBvZiB0aGlzIEFncmVlbWVudC5cbiAgICAgICAgICAgIDwvcD5cblxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJiZy1ibHVlLTUwIGJvcmRlci1sLTQgYm9yZGVyLWJsdWUtNDAwIHAtNCBtdC02XCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleFwiPlxuICAgICAgICAgICAgICAgIDxFeGNsYW1hdGlvblRyaWFuZ2xlSWNvbiBjbGFzc05hbWU9XCJoLTUgdy01IHRleHQtYmx1ZS01MDAgbXQtMC41IG1yLTJcIiAvPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1zbSB0ZXh0LWJsdWUtNzAwXCI+XG4gICAgICAgICAgICAgICAgICA8cD48c3Ryb25nPkNvbnRhY3QgSW5mb3JtYXRpb246PC9zdHJvbmc+PC9wPlxuICAgICAgICAgICAgICAgICAgPHA+Q2hvcnVzIFNlcnZpY2VzPGJyIC8+XG4gICAgICAgICAgICAgICAgICBFbWFpbDogbGVnYWxAY2hvcnVzLnNlcnZpY2VzPGJyIC8+XG4gICAgICAgICAgICAgICAgICBXZWJzaXRlOiBodHRwczovL2Nob3J1cy5zZXJ2aWNlczwvcD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgey8qIEFncmVlbWVudCBDaGVja2JveCAqL31cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY2FyZFwiPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInNwYWNlLXktNFwiPlxuICAgICAgICAgIDxsYWJlbCBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLXN0YXJ0XCI+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgY2hlY2tlZD17YWdyZWVkfVxuICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IHNldEFncmVlZChlLnRhcmdldC5jaGVja2VkKX1cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPVwibXQtMSBtci0zIGgtNCB3LTQgdGV4dC1ienp6LXByaW1hcnkgYm9yZGVyLWdyYXktMzAwIHJvdW5kZWQgZm9jdXM6cmluZy1ienp6LXByaW1hcnlcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1zbVwiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJmb250LW1lZGl1bSB0ZXh0LWdyYXktOTAwXCI+XG4gICAgICAgICAgICAgICAgSSBoYXZlIHJlYWQgYW5kIGFncmVlIHRvIHRoZSBUZXJtcyBhbmQgQ29uZGl0aW9uc1xuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQtZ3JheS02MDAgbXQtMVwiPlxuICAgICAgICAgICAgICAgIEJ5IGNoZWNraW5nIHRoaXMgYm94LCB5b3UgYWNrbm93bGVkZ2UgdGhhdCB5b3UgaGF2ZSByZWFkLCB1bmRlcnN0b29kLCBhbmQgYWdyZWUgdG8gYmUgXG4gICAgICAgICAgICAgICAgYm91bmQgYnkgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG91dGxpbmVkIGFib3ZlLlxuICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2xhYmVsPlxuXG4gICAgICAgICAge2Vycm9yICYmIChcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIgdGV4dC1yZWQtNjAwIHRleHQtc21cIj5cbiAgICAgICAgICAgICAgPEV4Y2xhbWF0aW9uVHJpYW5nbGVJY29uIGNsYXNzTmFtZT1cImgtNCB3LTQgbXItMVwiIC8+XG4gICAgICAgICAgICAgIHtlcnJvcn1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICl9XG5cbiAgICAgICAgICB7YWdyZWVkICYmIChcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIgdGV4dC1ncmVlbi02MDAgdGV4dC1zbVwiPlxuICAgICAgICAgICAgICA8Q2hlY2tDaXJjbGVJY29uIGNsYXNzTmFtZT1cImgtNCB3LTQgbXItMVwiIC8+XG4gICAgICAgICAgICAgIFRoYW5rIHlvdSBmb3IgYWNjZXB0aW5nIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9uc1xuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGp1c3RpZnktYmV0d2VlbiBwdC02IGJvcmRlci10IGJvcmRlci1ncmF5LTIwMFwiPlxuICAgICAgICA8ZGl2PlxuICAgICAgICAgIHtvbkJhY2sgJiYgKFxuICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgb25DbGljaz17b25CYWNrfSBjbGFzc05hbWU9XCJidG4tb3V0bGluZVwiPlxuICAgICAgICAgICAgICBCYWNrXG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICApfVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGJ1dHRvbiBcbiAgICAgICAgICB0eXBlPVwic3VibWl0XCIgXG4gICAgICAgICAgZGlzYWJsZWQ9eyFhZ3JlZWR9XG4gICAgICAgICAgY2xhc3NOYW1lPXtgJHthZ3JlZWQgPyAnYnRuLXByaW1hcnknIDogJ2J0bi1kaXNhYmxlZCd9YH1cbiAgICAgICAgPlxue2lzQ29tcGxldGVkID8gJ0NvbnRpbnVlJyA6ICdOZXh0OiBMaWNlbnNlIFZhbGlkYXRpb24nfVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZm9ybT5cbiAgKVxufSJdLCJuYW1lcyI6WyJ1c2VTdGF0ZSIsIkRvY3VtZW50VGV4dEljb24iLCJDaGVja0NpcmNsZUljb24iLCJFeGNsYW1hdGlvblRyaWFuZ2xlSWNvbiIsIlRlcm1zQW5kQ29uZGl0aW9ucyIsInN5c3RlbUluZm8iLCJjb25maWdEYXRhIiwib25Db21wbGV0ZSIsIm9uQmFjayIsImlzQ29tcGxldGVkIiwiYWdyZWVkIiwic2V0QWdyZWVkIiwidGVybXMiLCJlcnJvciIsInNldEVycm9yIiwiaGFuZGxlU3VibWl0IiwiZSIsInByZXZlbnREZWZhdWx0IiwidGltZXN0YW1wIiwiRGF0ZSIsInRvSVNPU3RyaW5nIiwiZm9ybSIsIm9uU3VibWl0IiwiY2xhc3NOYW1lIiwiZGl2IiwiaDMiLCJoNCIsInAiLCJ1bCIsImxpIiwic3Ryb25nIiwiYnIiLCJsYWJlbCIsImlucHV0IiwidHlwZSIsImNoZWNrZWQiLCJvbkNoYW5nZSIsInRhcmdldCIsInNwYW4iLCJidXR0b24iLCJvbkNsaWNrIiwiZGlzYWJsZWQiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./app/setup/components/TermsAndConditions.tsx\n");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "(ssr)/./app/setup/components/TestingValidation.tsx":
|
|
/*!****************************************************!*\
|
|
!*** ./app/setup/components/TestingValidation.tsx ***!
|
|
\****************************************************/
|
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
|
|
"use strict";
|
|
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ TestingValidation)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react-jsx-dev-runtime.js\");\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* __next_internal_client_entry_do_not_use__ default auto */ \n\nfunction TestingValidation({ systemInfo, configData, onComplete, onBack, isCompleted }) {\n const [testing, setTesting] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n const handleRunTests = async ()=>{\n setTesting(true);\n // Simulate testing process\n await new Promise((resolve)=>setTimeout(resolve, 3000));\n setTesting(false);\n onComplete({\n testing: {\n passed: true,\n completedAt: new Date().toISOString()\n }\n });\n };\n const getClusterDashboardUrl = ()=>{\n // Get the WebUI port from config, default to 9090\n const webuiPort = configData?.network?.ports?.webui || 9090;\n return `http://localhost:${webuiPort}/dashboard`;\n };\n const handleGoToDashboard = ()=>{\n const dashboardUrl = getClusterDashboardUrl();\n // Clear setup state since we're done\n localStorage.removeItem(\"bzzz-setup-state\");\n // Open cluster dashboard in new tab\n window.open(dashboardUrl, \"_blank\");\n // Show completion message and suggest closing this tab\n const shouldClose = window.confirm(\"Setup complete! The cluster dashboard has opened in a new tab.\\n\\n\" + \"You can now close this setup tab. Click OK to close automatically, or Cancel to keep it open.\");\n if (shouldClose) {\n window.close();\n }\n };\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-y-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-center py-12\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h3\", {\n className: \"text-lg font-medium text-gray-900 mb-2\",\n children: \"Testing & Validation\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/TestingValidation.tsx\",\n lineNumber: 64,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-gray-600\",\n children: \"Validate your BZZZ cluster configuration and test all connections.\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/TestingValidation.tsx\",\n lineNumber: 67,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mt-8\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-yellow-50 border border-yellow-200 rounded-lg p-4 text-yellow-800\",\n children: \"This component is under development. Testing and validation will be implemented here.\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/TestingValidation.tsx\",\n lineNumber: 71,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/TestingValidation.tsx\",\n lineNumber: 70,\n columnNumber: 9\n }, this),\n !isCompleted && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mt-8\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: handleRunTests,\n disabled: testing,\n className: \"btn-primary\",\n children: testing ? \"Running Tests...\" : \"Run Validation Tests\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/TestingValidation.tsx\",\n lineNumber: 78,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/TestingValidation.tsx\",\n lineNumber: 77,\n columnNumber: 11\n }, this),\n isCompleted && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mt-8 bg-green-50 border border-green-200 rounded-lg p-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h4\", {\n className: \"text-lg font-medium text-green-900 mb-2\",\n children: \"\\uD83C\\uDF89 Setup Complete!\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/TestingValidation.tsx\",\n lineNumber: 90,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-green-700 mb-4\",\n children: \"Your CHORUS:agents cluster has been successfully configured and deployed.\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/TestingValidation.tsx\",\n lineNumber: 93,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-y-2 text-sm text-green-600 mb-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: \"✓ System configuration validated\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/TestingValidation.tsx\",\n lineNumber: 97,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: \"✓ Network connectivity tested\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/TestingValidation.tsx\",\n lineNumber: 98,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: \"✓ Services deployed to all nodes\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/TestingValidation.tsx\",\n lineNumber: 99,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: \"✓ Cluster formation completed\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/TestingValidation.tsx\",\n lineNumber: 100,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/TestingValidation.tsx\",\n lineNumber: 96,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-blue-50 border border-blue-200 rounded-lg p-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-sm text-blue-800\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"strong\", {\n children: \"Cluster Dashboard:\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/TestingValidation.tsx\",\n lineNumber: 104,\n columnNumber: 17\n }, this),\n \" \",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"code\", {\n children: getClusterDashboardUrl()\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/TestingValidation.tsx\",\n lineNumber: 104,\n columnNumber: 53\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/TestingValidation.tsx\",\n lineNumber: 103,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-xs text-blue-600 mt-1\",\n children: \"The setup process will be terminated and you'll be redirected to your operational cluster.\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/TestingValidation.tsx\",\n lineNumber: 106,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/TestingValidation.tsx\",\n lineNumber: 102,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/TestingValidation.tsx\",\n lineNumber: 89,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/TestingValidation.tsx\",\n lineNumber: 63,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex justify-between pt-6 border-t border-gray-200\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: onBack && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: onBack,\n className: \"btn-outline\",\n children: \"Back\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/TestingValidation.tsx\",\n lineNumber: 117,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/TestingValidation.tsx\",\n lineNumber: 115,\n columnNumber: 9\n }, this),\n isCompleted && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: handleGoToDashboard,\n className: \"btn-primary\",\n children: \"Go to Cluster Dashboard\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/TestingValidation.tsx\",\n lineNumber: 124,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/TestingValidation.tsx\",\n lineNumber: 114,\n columnNumber: 7\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/components/TestingValidation.tsx\",\n lineNumber: 62,\n columnNumber: 5\n }, this);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9hcHAvc2V0dXAvY29tcG9uZW50cy9UZXN0aW5nVmFsaWRhdGlvbi50c3giLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBRWdDO0FBVWpCLFNBQVNDLGtCQUFrQixFQUN4Q0MsVUFBVSxFQUNWQyxVQUFVLEVBQ1ZDLFVBQVUsRUFDVkMsTUFBTSxFQUNOQyxXQUFXLEVBQ1k7SUFDdkIsTUFBTSxDQUFDQyxTQUFTQyxXQUFXLEdBQUdSLCtDQUFRQSxDQUFDO0lBRXZDLE1BQU1TLGlCQUFpQjtRQUNyQkQsV0FBVztRQUNYLDJCQUEyQjtRQUMzQixNQUFNLElBQUlFLFFBQVFDLENBQUFBLFVBQVdDLFdBQVdELFNBQVM7UUFDakRILFdBQVc7UUFDWEosV0FBVztZQUNURyxTQUFTO2dCQUNQTSxRQUFRO2dCQUNSQyxhQUFhLElBQUlDLE9BQU9DLFdBQVc7WUFDckM7UUFDRjtJQUNGO0lBRUEsTUFBTUMseUJBQXlCO1FBQzdCLGtEQUFrRDtRQUNsRCxNQUFNQyxZQUFZZixZQUFZZ0IsU0FBU0MsT0FBT0MsU0FBUztRQUN2RCxPQUFPLENBQUMsaUJBQWlCLEVBQUVILFVBQVUsVUFBVSxDQUFDO0lBQ2xEO0lBRUEsTUFBTUksc0JBQXNCO1FBQzFCLE1BQU1DLGVBQWVOO1FBRXJCLHFDQUFxQztRQUNyQ08sYUFBYUMsVUFBVSxDQUFDO1FBRXhCLG9DQUFvQztRQUNwQ0MsT0FBT0MsSUFBSSxDQUFDSixjQUFjO1FBRTFCLHVEQUF1RDtRQUN2RCxNQUFNSyxjQUFjRixPQUFPRyxPQUFPLENBQ2hDLHVFQUNBO1FBR0YsSUFBSUQsYUFBYTtZQUNmRixPQUFPSSxLQUFLO1FBQ2Q7SUFDRjtJQUVBLHFCQUNFLDhEQUFDQztRQUFJQyxXQUFVOzswQkFDYiw4REFBQ0Q7Z0JBQUlDLFdBQVU7O2tDQUNiLDhEQUFDQzt3QkFBR0QsV0FBVTtrQ0FBeUM7Ozs7OztrQ0FHdkQsOERBQUNFO3dCQUFFRixXQUFVO2tDQUFnQjs7Ozs7O2tDQUc3Qiw4REFBQ0Q7d0JBQUlDLFdBQVU7a0NBQ2IsNEVBQUNEOzRCQUFJQyxXQUFVO3NDQUF1RTs7Ozs7Ozs7Ozs7b0JBS3ZGLENBQUMxQiw2QkFDQSw4REFBQ3lCO3dCQUFJQyxXQUFVO2tDQUNiLDRFQUFDRzs0QkFDQ0MsU0FBUzNCOzRCQUNUNEIsVUFBVTlCOzRCQUNWeUIsV0FBVTtzQ0FFVHpCLFVBQVUscUJBQXFCOzs7Ozs7Ozs7OztvQkFLckNELDZCQUNDLDhEQUFDeUI7d0JBQUlDLFdBQVU7OzBDQUNiLDhEQUFDTTtnQ0FBR04sV0FBVTswQ0FBMEM7Ozs7OzswQ0FHeEQsOERBQUNFO2dDQUFFRixXQUFVOzBDQUFzQjs7Ozs7OzBDQUduQyw4REFBQ0Q7Z0NBQUlDLFdBQVU7O2tEQUNiLDhEQUFDRDtrREFBSTs7Ozs7O2tEQUNMLDhEQUFDQTtrREFBSTs7Ozs7O2tEQUNMLDhEQUFDQTtrREFBSTs7Ozs7O2tEQUNMLDhEQUFDQTtrREFBSTs7Ozs7Ozs7Ozs7OzBDQUVQLDhEQUFDQTtnQ0FBSUMsV0FBVTs7a0RBQ2IsOERBQUNFO3dDQUFFRixXQUFVOzswREFDWCw4REFBQ087MERBQU87Ozs7Ozs0Q0FBMkI7MERBQUMsOERBQUNDOzBEQUFNdkI7Ozs7Ozs7Ozs7OztrREFFN0MsOERBQUNpQjt3Q0FBRUYsV0FBVTtrREFBNkI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzswQkFRbEQsOERBQUNEO2dCQUFJQyxXQUFVOztrQ0FDYiw4REFBQ0Q7a0NBQ0UxQix3QkFDQyw4REFBQzhCOzRCQUFPQyxTQUFTL0I7NEJBQVEyQixXQUFVO3NDQUFjOzs7Ozs7Ozs7OztvQkFNcEQxQiw2QkFDQyw4REFBQzZCO3dCQUFPQyxTQUFTZDt3QkFBcUJVLFdBQVU7a0NBQWM7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQU94RSIsInNvdXJjZXMiOlsid2VicGFjazovL2J6enotY29uZmlnLXVpLy4vYXBwL3NldHVwL2NvbXBvbmVudHMvVGVzdGluZ1ZhbGlkYXRpb24udHN4Pzk3MGMiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBjbGllbnQnXG5cbmltcG9ydCB7IHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5cbmludGVyZmFjZSBUZXN0aW5nVmFsaWRhdGlvblByb3BzIHtcbiAgc3lzdGVtSW5mbzogYW55XG4gIGNvbmZpZ0RhdGE6IGFueVxuICBvbkNvbXBsZXRlOiAoZGF0YTogYW55KSA9PiB2b2lkXG4gIG9uQmFjaz86ICgpID0+IHZvaWRcbiAgaXNDb21wbGV0ZWQ6IGJvb2xlYW5cbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gVGVzdGluZ1ZhbGlkYXRpb24oeyBcbiAgc3lzdGVtSW5mbywgXG4gIGNvbmZpZ0RhdGEsIFxuICBvbkNvbXBsZXRlLCBcbiAgb25CYWNrLCBcbiAgaXNDb21wbGV0ZWQgXG59OiBUZXN0aW5nVmFsaWRhdGlvblByb3BzKSB7XG4gIGNvbnN0IFt0ZXN0aW5nLCBzZXRUZXN0aW5nXSA9IHVzZVN0YXRlKGZhbHNlKVxuXG4gIGNvbnN0IGhhbmRsZVJ1blRlc3RzID0gYXN5bmMgKCkgPT4ge1xuICAgIHNldFRlc3RpbmcodHJ1ZSlcbiAgICAvLyBTaW11bGF0ZSB0ZXN0aW5nIHByb2Nlc3NcbiAgICBhd2FpdCBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgMzAwMCkpXG4gICAgc2V0VGVzdGluZyhmYWxzZSlcbiAgICBvbkNvbXBsZXRlKHsgXG4gICAgICB0ZXN0aW5nOiB7IFxuICAgICAgICBwYXNzZWQ6IHRydWUsIFxuICAgICAgICBjb21wbGV0ZWRBdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpIFxuICAgICAgfSBcbiAgICB9KVxuICB9XG5cbiAgY29uc3QgZ2V0Q2x1c3RlckRhc2hib2FyZFVybCA9ICgpID0+IHtcbiAgICAvLyBHZXQgdGhlIFdlYlVJIHBvcnQgZnJvbSBjb25maWcsIGRlZmF1bHQgdG8gOTA5MFxuICAgIGNvbnN0IHdlYnVpUG9ydCA9IGNvbmZpZ0RhdGE/Lm5ldHdvcms/LnBvcnRzPy53ZWJ1aSB8fCA5MDkwXG4gICAgcmV0dXJuIGBodHRwOi8vbG9jYWxob3N0OiR7d2VidWlQb3J0fS9kYXNoYm9hcmRgXG4gIH1cblxuICBjb25zdCBoYW5kbGVHb1RvRGFzaGJvYXJkID0gKCkgPT4ge1xuICAgIGNvbnN0IGRhc2hib2FyZFVybCA9IGdldENsdXN0ZXJEYXNoYm9hcmRVcmwoKVxuICAgIFxuICAgIC8vIENsZWFyIHNldHVwIHN0YXRlIHNpbmNlIHdlJ3JlIGRvbmVcbiAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnYnp6ei1zZXR1cC1zdGF0ZScpXG4gICAgXG4gICAgLy8gT3BlbiBjbHVzdGVyIGRhc2hib2FyZCBpbiBuZXcgdGFiXG4gICAgd2luZG93Lm9wZW4oZGFzaGJvYXJkVXJsLCAnX2JsYW5rJylcbiAgICBcbiAgICAvLyBTaG93IGNvbXBsZXRpb24gbWVzc2FnZSBhbmQgc3VnZ2VzdCBjbG9zaW5nIHRoaXMgdGFiXG4gICAgY29uc3Qgc2hvdWxkQ2xvc2UgPSB3aW5kb3cuY29uZmlybShcbiAgICAgICdTZXR1cCBjb21wbGV0ZSEgVGhlIGNsdXN0ZXIgZGFzaGJvYXJkIGhhcyBvcGVuZWQgaW4gYSBuZXcgdGFiLlxcblxcbicgK1xuICAgICAgJ1lvdSBjYW4gbm93IGNsb3NlIHRoaXMgc2V0dXAgdGFiLiBDbGljayBPSyB0byBjbG9zZSBhdXRvbWF0aWNhbGx5LCBvciBDYW5jZWwgdG8ga2VlcCBpdCBvcGVuLidcbiAgICApXG4gICAgXG4gICAgaWYgKHNob3VsZENsb3NlKSB7XG4gICAgICB3aW5kb3cuY2xvc2UoKVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJzcGFjZS15LTZcIj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1jZW50ZXIgcHktMTJcIj5cbiAgICAgICAgPGgzIGNsYXNzTmFtZT1cInRleHQtbGcgZm9udC1tZWRpdW0gdGV4dC1ncmF5LTkwMCBtYi0yXCI+XG4gICAgICAgICAgVGVzdGluZyAmIFZhbGlkYXRpb25cbiAgICAgICAgPC9oMz5cbiAgICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC1ncmF5LTYwMFwiPlxuICAgICAgICAgIFZhbGlkYXRlIHlvdXIgQlpaWiBjbHVzdGVyIGNvbmZpZ3VyYXRpb24gYW5kIHRlc3QgYWxsIGNvbm5lY3Rpb25zLlxuICAgICAgICA8L3A+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibXQtOFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmcteWVsbG93LTUwIGJvcmRlciBib3JkZXIteWVsbG93LTIwMCByb3VuZGVkLWxnIHAtNCB0ZXh0LXllbGxvdy04MDBcIj5cbiAgICAgICAgICAgIFRoaXMgY29tcG9uZW50IGlzIHVuZGVyIGRldmVsb3BtZW50LiBUZXN0aW5nIGFuZCB2YWxpZGF0aW9uIHdpbGwgYmUgaW1wbGVtZW50ZWQgaGVyZS5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIFxuICAgICAgICB7IWlzQ29tcGxldGVkICYmIChcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm10LThcIj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgb25DbGljaz17aGFuZGxlUnVuVGVzdHN9XG4gICAgICAgICAgICAgIGRpc2FibGVkPXt0ZXN0aW5nfVxuICAgICAgICAgICAgICBjbGFzc05hbWU9XCJidG4tcHJpbWFyeVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt0ZXN0aW5nID8gJ1J1bm5pbmcgVGVzdHMuLi4nIDogJ1J1biBWYWxpZGF0aW9uIFRlc3RzJ31cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICApfVxuICAgICAgICBcbiAgICAgICAge2lzQ29tcGxldGVkICYmIChcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm10LTggYmctZ3JlZW4tNTAgYm9yZGVyIGJvcmRlci1ncmVlbi0yMDAgcm91bmRlZC1sZyBwLTZcIj5cbiAgICAgICAgICAgIDxoNCBjbGFzc05hbWU9XCJ0ZXh0LWxnIGZvbnQtbWVkaXVtIHRleHQtZ3JlZW4tOTAwIG1iLTJcIj5cbiAgICAgICAgICAgICAg8J+OiSBTZXR1cCBDb21wbGV0ZSFcbiAgICAgICAgICAgIDwvaDQ+XG4gICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJ0ZXh0LWdyZWVuLTcwMCBtYi00XCI+XG4gICAgICAgICAgICAgIFlvdXIgQ0hPUlVTOmFnZW50cyBjbHVzdGVyIGhhcyBiZWVuIHN1Y2Nlc3NmdWxseSBjb25maWd1cmVkIGFuZCBkZXBsb3llZC5cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwic3BhY2UteS0yIHRleHQtc20gdGV4dC1ncmVlbi02MDAgbWItNFwiPlxuICAgICAgICAgICAgICA8ZGl2PuKckyBTeXN0ZW0gY29uZmlndXJhdGlvbiB2YWxpZGF0ZWQ8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdj7inJMgTmV0d29yayBjb25uZWN0aXZpdHkgdGVzdGVkPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXY+4pyTIFNlcnZpY2VzIGRlcGxveWVkIHRvIGFsbCBub2RlczwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2PuKckyBDbHVzdGVyIGZvcm1hdGlvbiBjb21wbGV0ZWQ8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJiZy1ibHVlLTUwIGJvcmRlciBib3JkZXItYmx1ZS0yMDAgcm91bmRlZC1sZyBwLTRcIj5cbiAgICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC1zbSB0ZXh0LWJsdWUtODAwXCI+XG4gICAgICAgICAgICAgICAgPHN0cm9uZz5DbHVzdGVyIERhc2hib2FyZDo8L3N0cm9uZz4gPGNvZGU+e2dldENsdXN0ZXJEYXNoYm9hcmRVcmwoKX08L2NvZGU+XG4gICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC14cyB0ZXh0LWJsdWUtNjAwIG10LTFcIj5cbiAgICAgICAgICAgICAgICBUaGUgc2V0dXAgcHJvY2VzcyB3aWxsIGJlIHRlcm1pbmF0ZWQgYW5kIHlvdSdsbCBiZSByZWRpcmVjdGVkIHRvIHlvdXIgb3BlcmF0aW9uYWwgY2x1c3Rlci5cbiAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICl9XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGp1c3RpZnktYmV0d2VlbiBwdC02IGJvcmRlci10IGJvcmRlci1ncmF5LTIwMFwiPlxuICAgICAgICA8ZGl2PlxuICAgICAgICAgIHtvbkJhY2sgJiYgKFxuICAgICAgICAgICAgPGJ1dHRvbiBvbkNsaWNrPXtvbkJhY2t9IGNsYXNzTmFtZT1cImJ0bi1vdXRsaW5lXCI+XG4gICAgICAgICAgICAgIEJhY2tcbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvZGl2PlxuICAgICAgICBcbiAgICAgICAge2lzQ29tcGxldGVkICYmIChcbiAgICAgICAgICA8YnV0dG9uIG9uQ2xpY2s9e2hhbmRsZUdvVG9EYXNoYm9hcmR9IGNsYXNzTmFtZT1cImJ0bi1wcmltYXJ5XCI+XG4gICAgICAgICAgICBHbyB0byBDbHVzdGVyIERhc2hib2FyZFxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICApfVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIClcbn0iXSwibmFtZXMiOlsidXNlU3RhdGUiLCJUZXN0aW5nVmFsaWRhdGlvbiIsInN5c3RlbUluZm8iLCJjb25maWdEYXRhIiwib25Db21wbGV0ZSIsIm9uQmFjayIsImlzQ29tcGxldGVkIiwidGVzdGluZyIsInNldFRlc3RpbmciLCJoYW5kbGVSdW5UZXN0cyIsIlByb21pc2UiLCJyZXNvbHZlIiwic2V0VGltZW91dCIsInBhc3NlZCIsImNvbXBsZXRlZEF0IiwiRGF0ZSIsInRvSVNPU3RyaW5nIiwiZ2V0Q2x1c3RlckRhc2hib2FyZFVybCIsIndlYnVpUG9ydCIsIm5ldHdvcmsiLCJwb3J0cyIsIndlYnVpIiwiaGFuZGxlR29Ub0Rhc2hib2FyZCIsImRhc2hib2FyZFVybCIsImxvY2FsU3RvcmFnZSIsInJlbW92ZUl0ZW0iLCJ3aW5kb3ciLCJvcGVuIiwic2hvdWxkQ2xvc2UiLCJjb25maXJtIiwiY2xvc2UiLCJkaXYiLCJjbGFzc05hbWUiLCJoMyIsInAiLCJidXR0b24iLCJvbkNsaWNrIiwiZGlzYWJsZWQiLCJoNCIsInN0cm9uZyIsImNvZGUiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./app/setup/components/TestingValidation.tsx\n");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "(ssr)/./app/setup/page.tsx":
|
|
/*!****************************!*\
|
|
!*** ./app/setup/page.tsx ***!
|
|
\****************************/
|
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
|
|
"use strict";
|
|
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ SetupPage)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react-jsx-dev-runtime.js\");\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _barrel_optimize_names_CheckCircleIcon_ChevronRightIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! __barrel_optimize__?names=CheckCircleIcon,ChevronRightIcon!=!@heroicons/react/24/outline */ \"(ssr)/./node_modules/@heroicons/react/24/outline/esm/CheckCircleIcon.js\");\n/* harmony import */ var _barrel_optimize_names_CheckCircleIcon_ChevronRightIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! __barrel_optimize__?names=CheckCircleIcon,ChevronRightIcon!=!@heroicons/react/24/outline */ \"(ssr)/./node_modules/@heroicons/react/24/outline/esm/ChevronRightIcon.js\");\n/* harmony import */ var _components_TermsAndConditions__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./components/TermsAndConditions */ \"(ssr)/./app/setup/components/TermsAndConditions.tsx\");\n/* harmony import */ var _components_LicenseValidation__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./components/LicenseValidation */ \"(ssr)/./app/setup/components/LicenseValidation.tsx\");\n/* harmony import */ var _components_SystemDetection__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./components/SystemDetection */ \"(ssr)/./app/setup/components/SystemDetection.tsx\");\n/* harmony import */ var _components_RepositoryConfiguration__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./components/RepositoryConfiguration */ \"(ssr)/./app/setup/components/RepositoryConfiguration.tsx\");\n/* harmony import */ var _components_NetworkConfiguration__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./components/NetworkConfiguration */ \"(ssr)/./app/setup/components/NetworkConfiguration.tsx\");\n/* harmony import */ var _components_SecuritySetup__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./components/SecuritySetup */ \"(ssr)/./app/setup/components/SecuritySetup.tsx\");\n/* harmony import */ var _components_AIConfiguration__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./components/AIConfiguration */ \"(ssr)/./app/setup/components/AIConfiguration.tsx\");\n/* harmony import */ var _components_ServiceDeployment__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./components/ServiceDeployment */ \"(ssr)/./app/setup/components/ServiceDeployment.tsx\");\n/* harmony import */ var _components_ClusterFormation__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./components/ClusterFormation */ \"(ssr)/./app/setup/components/ClusterFormation.tsx\");\n/* harmony import */ var _components_TestingValidation__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./components/TestingValidation */ \"(ssr)/./app/setup/components/TestingValidation.tsx\");\n/* __next_internal_client_entry_do_not_use__ default auto */ \n\n\n\n\n\n\n\n\n\n\n\n\nconst SETUP_STEPS = [\n {\n id: \"terms\",\n title: \"Terms & Conditions\",\n description: \"Review and accept the software license agreement\",\n component: _components_TermsAndConditions__WEBPACK_IMPORTED_MODULE_2__[\"default\"]\n },\n {\n id: \"license\",\n title: \"License Validation\",\n description: \"Validate your CHORUS license key and email\",\n component: _components_LicenseValidation__WEBPACK_IMPORTED_MODULE_3__[\"default\"]\n },\n {\n id: \"detection\",\n title: \"System Detection\",\n description: \"Detect hardware and validate installation\",\n component: _components_SystemDetection__WEBPACK_IMPORTED_MODULE_4__[\"default\"]\n },\n {\n id: \"repository\",\n title: \"Repository Setup\",\n description: \"Configure Git repository for task management\",\n component: _components_RepositoryConfiguration__WEBPACK_IMPORTED_MODULE_5__[\"default\"]\n },\n {\n id: \"network\",\n title: \"Network Configuration\",\n description: \"Configure network and firewall settings\",\n component: _components_NetworkConfiguration__WEBPACK_IMPORTED_MODULE_6__[\"default\"]\n },\n {\n id: \"security\",\n title: \"Security Setup\",\n description: \"Configure authentication and SSH access\",\n component: _components_SecuritySetup__WEBPACK_IMPORTED_MODULE_7__[\"default\"]\n },\n {\n id: \"ai\",\n title: \"AI Integration\",\n description: \"Configure OpenAI and Ollama/Parallama\",\n component: _components_AIConfiguration__WEBPACK_IMPORTED_MODULE_8__[\"default\"]\n },\n {\n id: \"deployment\",\n title: \"Service Deployment\",\n description: \"Deploy and configure CHORUS agent services\",\n component: _components_ServiceDeployment__WEBPACK_IMPORTED_MODULE_9__[\"default\"]\n },\n {\n id: \"cluster\",\n title: \"Cluster Formation\",\n description: \"Join or create CHORUS agent cluster\",\n component: _components_ClusterFormation__WEBPACK_IMPORTED_MODULE_10__[\"default\"]\n },\n {\n id: \"testing\",\n title: \"Testing & Validation\",\n description: \"Validate configuration and test connectivity\",\n component: _components_TestingValidation__WEBPACK_IMPORTED_MODULE_11__[\"default\"]\n }\n];\nfunction SetupPage() {\n const [currentStep, setCurrentStep] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(0);\n const [completedSteps, setCompletedSteps] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(new Set());\n const [configData, setConfigData] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)({});\n const [systemInfo, setSystemInfo] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);\n // Load persisted data and system information on mount\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{\n loadPersistedData();\n fetchSystemInfo();\n }, []);\n // Save setup state to localStorage whenever it changes\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{\n saveSetupState();\n }, [\n currentStep,\n completedSteps,\n configData\n ]);\n const loadPersistedData = ()=>{\n try {\n const savedState = localStorage.getItem(\"chorus-setup-state\");\n if (savedState) {\n const state = JSON.parse(savedState);\n setCurrentStep(state.currentStep || 0);\n setCompletedSteps(new Set(state.completedSteps || []));\n setConfigData(state.configData || {});\n }\n } catch (error) {\n console.error(\"Failed to load persisted setup data:\", error);\n }\n };\n const saveSetupState = ()=>{\n try {\n const state = {\n currentStep,\n completedSteps: Array.from(completedSteps),\n configData,\n timestamp: new Date().toISOString()\n };\n localStorage.setItem(\"chorus-setup-state\", JSON.stringify(state));\n } catch (error) {\n console.error(\"Failed to save setup state:\", error);\n }\n };\n const clearPersistedData = ()=>{\n try {\n localStorage.removeItem(\"chorus-setup-state\");\n // Reset state to initial values\n setCurrentStep(0);\n setCompletedSteps(new Set());\n setConfigData({});\n } catch (error) {\n console.error(\"Failed to clear persisted data:\", error);\n }\n };\n const fetchSystemInfo = async ()=>{\n try {\n const response = await fetch(\"/api/setup/system\");\n if (response.ok) {\n const result = await response.json();\n setSystemInfo(result.system_info);\n }\n } catch (error) {\n console.error(\"Failed to fetch system info:\", error);\n }\n };\n const handleStepComplete = (stepIndex, data)=>{\n console.log(\"Setup Page: Step complete\", {\n stepIndex,\n data,\n currentConfigData: configData\n });\n setCompletedSteps((prev)=>new Set([\n ...prev,\n stepIndex\n ]));\n setConfigData((prev)=>{\n const newConfigData = {\n ...prev,\n ...data\n };\n console.log(\"Setup Page: Updated configData\", {\n prev,\n data,\n newConfigData\n });\n return newConfigData;\n });\n // Auto-advance to next step\n if (stepIndex < SETUP_STEPS.length - 1) {\n setCurrentStep(stepIndex + 1);\n } else {\n // Setup is complete, clear persisted data after a delay\n setTimeout(()=>{\n clearPersistedData();\n }, 2000);\n }\n };\n const handleStepBack = ()=>{\n if (currentStep > 0) {\n setCurrentStep(currentStep - 1);\n }\n };\n const CurrentStepComponent = SETUP_STEPS[currentStep].component;\n // Check if we're resuming from saved data\n const isResuming = currentStep > 0 || completedSteps.size > 0 || Object.keys(configData).length > 0;\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-8\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mb-8\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h1\", {\n className: \"heading-hero mb-3\",\n children: \"CHORUS Agent Setup\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/page.tsx\",\n lineNumber: 186,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-body\",\n children: [\n \"Configure your distributed agent orchestration platform in \",\n SETUP_STEPS.length,\n \" simple steps.\"\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/page.tsx\",\n lineNumber: 189,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/page.tsx\",\n lineNumber: 185,\n columnNumber: 7\n }, this),\n isResuming && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mb-8 bg-chorus-secondary bg-opacity-20 border border-chorus-secondary rounded-lg p-6\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-start justify-between\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-start\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-shrink-0\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n className: \"h-5 w-5 text-chorus-secondary mt-0.5\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n stroke: \"currentColor\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n d: \"M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/page.tsx\",\n lineNumber: 201,\n columnNumber: 19\n }, this)\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/page.tsx\",\n lineNumber: 200,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/page.tsx\",\n lineNumber: 199,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"ml-3\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h3\", {\n className: \"text-sm font-medium text-chorus-secondary\",\n children: \"Setup Progress Restored\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/page.tsx\",\n lineNumber: 205,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-small text-gray-300 mt-1\",\n children: [\n \"Your previous setup progress has been restored. You're currently on step \",\n currentStep + 1,\n \" of \",\n SETUP_STEPS.length,\n \".\",\n completedSteps.size > 0 && ` You've completed ${completedSteps.size} step${completedSteps.size !== 1 ? \"s\" : \"\"}.`\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/page.tsx\",\n lineNumber: 208,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/page.tsx\",\n lineNumber: 204,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/page.tsx\",\n lineNumber: 198,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: clearPersistedData,\n className: \"btn-text\",\n children: \"Start Over\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/page.tsx\",\n lineNumber: 214,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/page.tsx\",\n lineNumber: 197,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/page.tsx\",\n lineNumber: 196,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid grid-cols-1 lg:grid-cols-4 gap-12\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"lg:col-span-1\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"card sticky top-8\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h2\", {\n className: \"heading-subsection mb-6\",\n children: \"Setup Progress\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/page.tsx\",\n lineNumber: 228,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"nav\", {\n className: \"space-y-2\",\n children: SETUP_STEPS.map((step, index)=>{\n const isCompleted = completedSteps.has(index);\n const isCurrent = index === currentStep;\n const isAccessible = index <= currentStep || completedSteps.has(index);\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>isAccessible && setCurrentStep(index),\n disabled: !isAccessible,\n className: `w-full text-left progress-step ${isCurrent ? \"progress-step-current\" : isCompleted ? \"progress-step-completed\" : isAccessible ? \"progress-step-accessible\" : \"progress-step-disabled\"}`,\n children: /*#__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: \"flex-shrink-0 mr-3\",\n children: isCompleted ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_CheckCircleIcon_ChevronRightIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_12__[\"default\"], {\n className: \"h-5 w-5 text-green-400\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/page.tsx\",\n lineNumber: 255,\n columnNumber: 27\n }, this) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `w-5 h-5 rounded-full border-2 flex items-center justify-center text-xs font-medium ${isCurrent ? \"border-chorus-secondary bg-chorus-secondary text-white\" : \"border-gray-600 text-gray-500\"}`,\n children: index + 1\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/page.tsx\",\n lineNumber: 257,\n columnNumber: 27\n }, this)\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/page.tsx\",\n lineNumber: 253,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 min-w-0\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm font-medium truncate\",\n children: step.title\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/page.tsx\",\n lineNumber: 267,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs opacity-75 truncate\",\n children: step.description\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/page.tsx\",\n lineNumber: 270,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/page.tsx\",\n lineNumber: 266,\n columnNumber: 23\n }, this),\n isAccessible && !isCompleted && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_CheckCircleIcon_ChevronRightIcon_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n className: \"h-4 w-4 opacity-50\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/page.tsx\",\n lineNumber: 275,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/page.tsx\",\n lineNumber: 252,\n columnNumber: 21\n }, this)\n }, step.id, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/page.tsx\",\n lineNumber: 238,\n columnNumber: 19\n }, this);\n })\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/page.tsx\",\n lineNumber: 231,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mt-8 pt-6 border-t border-gray-800\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-small mb-3\",\n children: [\n \"Progress: \",\n completedSteps.size,\n \" of \",\n SETUP_STEPS.length,\n \" steps\"\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/page.tsx\",\n lineNumber: 284,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full bg-gray-800 rounded-sm h-2\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-chorus-secondary h-2 rounded-sm transition-all duration-500\",\n style: {\n width: `${completedSteps.size / SETUP_STEPS.length * 100}%`\n }\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/page.tsx\",\n lineNumber: 288,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/page.tsx\",\n lineNumber: 287,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/page.tsx\",\n lineNumber: 283,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/page.tsx\",\n lineNumber: 227,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/page.tsx\",\n lineNumber: 226,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"lg:col-span-3\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"card\",\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: \"flex items-center justify-between mb-3\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h2\", {\n className: \"heading-section\",\n children: SETUP_STEPS[currentStep].title\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/page.tsx\",\n lineNumber: 302,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-ghost\",\n children: [\n \"Step \",\n currentStep + 1,\n \" of \",\n SETUP_STEPS.length\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/page.tsx\",\n lineNumber: 305,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/page.tsx\",\n lineNumber: 301,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-body\",\n children: SETUP_STEPS[currentStep].description\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/page.tsx\",\n lineNumber: 309,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/page.tsx\",\n lineNumber: 300,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(CurrentStepComponent, {\n systemInfo: systemInfo,\n configData: configData,\n onComplete: (data)=>handleStepComplete(currentStep, data),\n onBack: currentStep > 0 ? handleStepBack : undefined,\n isCompleted: completedSteps.has(currentStep)\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/page.tsx\",\n lineNumber: 314,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/page.tsx\",\n lineNumber: 299,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/page.tsx\",\n lineNumber: 298,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/page.tsx\",\n lineNumber: 224,\n columnNumber: 7\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/page.tsx\",\n lineNumber: 184,\n columnNumber: 5\n }, this);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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Ozs7c0RBRXpELDhEQUFDUTs0Q0FBSUMsV0FBVTtzREFDYiw0RUFBQ0Q7Z0RBQ0NDLFdBQVU7Z0RBQ1Z5QixPQUFPO29EQUFFQyxPQUFPLENBQUMsRUFBRSxlQUFnQjlCLElBQUksR0FBR3JELFlBQVlnRCxNQUFNLEdBQUksSUFBSSxDQUFDLENBQUM7Z0RBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7a0NBUWpGLDhEQUFDUTt3QkFBSUMsV0FBVTtrQ0FDYiw0RUFBQ0Q7NEJBQUlDLFdBQVU7OzhDQUNiLDhEQUFDRDtvQ0FBSUMsV0FBVTs7c0RBQ2IsOERBQUNEOzRDQUFJQyxXQUFVOzs4REFDYiw4REFBQ2U7b0RBQUdmLFdBQVU7OERBQ1h6RCxXQUFXLENBQUNNLFlBQVksQ0FBQ0osS0FBSzs7Ozs7OzhEQUVqQyw4REFBQ3NEO29EQUFJQyxXQUFVOzt3REFBYTt3REFDcEJuRCxjQUFjO3dEQUFFO3dEQUFLTixZQUFZZ0QsTUFBTTs7Ozs7Ozs7Ozs7OztzREFHakQsOERBQUNXOzRDQUFFRixXQUFVO3NEQUNWekQsV0FBVyxDQUFDTSxZQUFZLENBQUNILFdBQVc7Ozs7Ozs7Ozs7Ozs4Q0FJekMsOERBQUNnRDtvQ0FDQ3RDLFlBQVlBO29DQUNaRixZQUFZQTtvQ0FDWnlFLFlBQVksQ0FBQ3pDLE9BQWNGLG1CQUFtQm5DLGFBQWFxQztvQ0FDM0QwQyxRQUFRL0UsY0FBYyxJQUFJNEMsaUJBQWlCb0M7b0NBQzNDVCxhQUFhckUsZUFBZXNFLEdBQUcsQ0FBQ3hFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQU85QyIsInNvdXJjZXMiOlsid2VicGFjazovL2J6enotY29uZmlnLXVpLy4vYXBwL3NldHVwL3BhZ2UudHN4P2ZhN2YiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBjbGllbnQnXG5cbmltcG9ydCB7IHVzZVN0YXRlLCB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IENoZXZyb25SaWdodEljb24sIENoZWNrQ2lyY2xlSWNvbiB9IGZyb20gJ0BoZXJvaWNvbnMvcmVhY3QvMjQvb3V0bGluZSdcbmltcG9ydCBUZXJtc0FuZENvbmRpdGlvbnMgZnJvbSAnLi9jb21wb25lbnRzL1Rlcm1zQW5kQ29uZGl0aW9ucydcbmltcG9ydCBMaWNlbnNlVmFsaWRhdGlvbiBmcm9tICcuL2NvbXBvbmVudHMvTGljZW5zZVZhbGlkYXRpb24nXG5pbXBvcnQgU3lzdGVtRGV0ZWN0aW9uIGZyb20gJy4vY29tcG9uZW50cy9TeXN0ZW1EZXRlY3Rpb24nXG5pbXBvcnQgUmVwb3NpdG9yeUNvbmZpZ3VyYXRpb24gZnJvbSAnLi9jb21wb25lbnRzL1JlcG9zaXRvcnlDb25maWd1cmF0aW9uJ1xuaW1wb3J0IE5ldHdvcmtDb25maWd1cmF0aW9uIGZyb20gJy4vY29tcG9uZW50cy9OZXR3b3JrQ29uZmlndXJhdGlvbidcbmltcG9ydCBTZWN1cml0eVNldHVwIGZyb20gJy4vY29tcG9uZW50cy9TZWN1cml0eVNldHVwJ1xuaW1wb3J0IEFJQ29uZmlndXJhdGlvbiBmcm9tICcuL2NvbXBvbmVudHMvQUlDb25maWd1cmF0aW9uJ1xuaW1wb3J0IFNlcnZpY2VEZXBsb3ltZW50IGZyb20gJy4vY29tcG9uZW50cy9TZXJ2aWNlRGVwbG95bWVudCdcbmltcG9ydCBDbHVzdGVyRm9ybWF0aW9uIGZyb20gJy4vY29tcG9uZW50cy9DbHVzdGVyRm9ybWF0aW9uJ1xuaW1wb3J0IFRlc3RpbmdWYWxpZGF0aW9uIGZyb20gJy4vY29tcG9uZW50cy9UZXN0aW5nVmFsaWRhdGlvbidcblxuY29uc3QgU0VUVVBfU1RFUFMgPSBbXG4gIHtcbiAgICBpZDogJ3Rlcm1zJyxcbiAgICB0aXRsZTogJ1Rlcm1zICYgQ29uZGl0aW9ucycsXG4gICAgZGVzY3JpcHRpb246ICdSZXZpZXcgYW5kIGFjY2VwdCB0aGUgc29mdHdhcmUgbGljZW5zZSBhZ3JlZW1lbnQnLFxuICAgIGNvbXBvbmVudDogVGVybXNBbmRDb25kaXRpb25zLFxuICB9LFxuICB7XG4gICAgaWQ6ICdsaWNlbnNlJyxcbiAgICB0aXRsZTogJ0xpY2Vuc2UgVmFsaWRhdGlvbicsXG4gICAgZGVzY3JpcHRpb246ICdWYWxpZGF0ZSB5b3VyIENIT1JVUyBsaWNlbnNlIGtleSBhbmQgZW1haWwnLFxuICAgIGNvbXBvbmVudDogTGljZW5zZVZhbGlkYXRpb24sXG4gIH0sXG4gIHtcbiAgICBpZDogJ2RldGVjdGlvbicsXG4gICAgdGl0bGU6ICdTeXN0ZW0gRGV0ZWN0aW9uJyxcbiAgICBkZXNjcmlwdGlvbjogJ0RldGVjdCBoYXJkd2FyZSBhbmQgdmFsaWRhdGUgaW5zdGFsbGF0aW9uJyxcbiAgICBjb21wb25lbnQ6IFN5c3RlbURldGVjdGlvbixcbiAgfSxcbiAge1xuICAgIGlkOiAncmVwb3NpdG9yeScsXG4gICAgdGl0bGU6ICdSZXBvc2l0b3J5IFNldHVwJyxcbiAgICBkZXNjcmlwdGlvbjogJ0NvbmZpZ3VyZSBHaXQgcmVwb3NpdG9yeSBmb3IgdGFzayBtYW5hZ2VtZW50JyxcbiAgICBjb21wb25lbnQ6IFJlcG9zaXRvcnlDb25maWd1cmF0aW9uLFxuICB9LFxuICB7XG4gICAgaWQ6ICduZXR3b3JrJyxcbiAgICB0aXRsZTogJ05ldHdvcmsgQ29uZmlndXJhdGlvbicsXG4gICAgZGVzY3JpcHRpb246ICdDb25maWd1cmUgbmV0d29yayBhbmQgZmlyZXdhbGwgc2V0dGluZ3MnLFxuICAgIGNvbXBvbmVudDogTmV0d29ya0NvbmZpZ3VyYXRpb24sXG4gIH0sXG4gIHtcbiAgICBpZDogJ3NlY3VyaXR5JyxcbiAgICB0aXRsZTogJ1NlY3VyaXR5IFNldHVwJyxcbiAgICBkZXNjcmlwdGlvbjogJ0NvbmZpZ3VyZSBhdXRoZW50aWNhdGlvbiBhbmQgU1NIIGFjY2VzcycsXG4gICAgY29tcG9uZW50OiBTZWN1cml0eVNldHVwLFxuICB9LFxuICB7XG4gICAgaWQ6ICdhaScsXG4gICAgdGl0bGU6ICdBSSBJbnRlZ3JhdGlvbicsXG4gICAgZGVzY3JpcHRpb246ICdDb25maWd1cmUgT3BlbkFJIGFuZCBPbGxhbWEvUGFyYWxsYW1hJyxcbiAgICBjb21wb25lbnQ6IEFJQ29uZmlndXJhdGlvbixcbiAgfSxcbiAge1xuICAgIGlkOiAnZGVwbG95bWVudCcsXG4gICAgdGl0bGU6ICdTZXJ2aWNlIERlcGxveW1lbnQnLFxuICAgIGRlc2NyaXB0aW9uOiAnRGVwbG95IGFuZCBjb25maWd1cmUgQ0hPUlVTIGFnZW50IHNlcnZpY2VzJyxcbiAgICBjb21wb25lbnQ6IFNlcnZpY2VEZXBsb3ltZW50LFxuICB9LFxuICB7XG4gICAgaWQ6ICdjbHVzdGVyJyxcbiAgICB0aXRsZTogJ0NsdXN0ZXIgRm9ybWF0aW9uJyxcbiAgICBkZXNjcmlwdGlvbjogJ0pvaW4gb3IgY3JlYXRlIENIT1JVUyBhZ2VudCBjbHVzdGVyJyxcbiAgICBjb21wb25lbnQ6IENsdXN0ZXJGb3JtYXRpb24sXG4gIH0sXG4gIHtcbiAgICBpZDogJ3Rlc3RpbmcnLFxuICAgIHRpdGxlOiAnVGVzdGluZyAmIFZhbGlkYXRpb24nLFxuICAgIGRlc2NyaXB0aW9uOiAnVmFsaWRhdGUgY29uZmlndXJhdGlvbiBhbmQgdGVzdCBjb25uZWN0aXZpdHknLFxuICAgIGNvbXBvbmVudDogVGVzdGluZ1ZhbGlkYXRpb24sXG4gIH0sXG5dXG5cbmludGVyZmFjZSBDb25maWdEYXRhIHtcbiAgW2tleTogc3RyaW5nXTogYW55XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFNldHVwUGFnZSgpIHtcbiAgY29uc3QgW2N1cnJlbnRTdGVwLCBzZXRDdXJyZW50U3RlcF0gPSB1c2VTdGF0ZSgwKVxuICBjb25zdCBbY29tcGxldGVkU3RlcHMsIHNldENvbXBsZXRlZFN0ZXBzXSA9IHVzZVN0YXRlKG5ldyBTZXQ8bnVtYmVyPigpKVxuICBjb25zdCBbY29uZmlnRGF0YSwgc2V0Q29uZmlnRGF0YV0gPSB1c2VTdGF0ZTxDb25maWdEYXRhPih7fSlcbiAgY29uc3QgW3N5c3RlbUluZm8sIHNldFN5c3RlbUluZm9dID0gdXNlU3RhdGU8YW55PihudWxsKVxuXG4gIC8vIExvYWQgcGVyc2lzdGVkIGRhdGEgYW5kIHN5c3RlbSBpbmZvcm1hdGlvbiBvbiBtb3VudFxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGxvYWRQZXJzaXN0ZWREYXRhKClcbiAgICBmZXRjaFN5c3RlbUluZm8oKVxuICB9LCBbXSlcblxuICAvLyBTYXZlIHNldHVwIHN0YXRlIHRvIGxvY2FsU3RvcmFnZSB3aGVuZXZlciBpdCBjaGFuZ2VzXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgc2F2ZVNldHVwU3RhdGUoKVxuICB9LCBbY3VycmVudFN0ZXAsIGNvbXBsZXRlZFN0ZXBzLCBjb25maWdEYXRhXSlcblxuICBjb25zdCBsb2FkUGVyc2lzdGVkRGF0YSA9ICgpID0+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3Qgc2F2ZWRTdGF0ZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdjaG9ydXMtc2V0dXAtc3RhdGUnKVxuICAgICAgaWYgKHNhdmVkU3RhdGUpIHtcbiAgICAgICAgY29uc3Qgc3RhdGUgPSBKU09OLnBhcnNlKHNhdmVkU3RhdGUpXG4gICAgICAgIHNldEN1cnJlbnRTdGVwKHN0YXRlLmN1cnJlbnRTdGVwIHx8IDApXG4gICAgICAgIHNldENvbXBsZXRlZFN0ZXBzKG5ldyBTZXQoc3RhdGUuY29tcGxldGVkU3RlcHMgfHwgW10pKVxuICAgICAgICBzZXRDb25maWdEYXRhKHN0YXRlLmNvbmZpZ0RhdGEgfHwge30pXG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0ZhaWxlZCB0byBsb2FkIHBlcnNpc3RlZCBzZXR1cCBkYXRhOicsIGVycm9yKVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHNhdmVTZXR1cFN0YXRlID0gKCkgPT4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBzdGF0ZSA9IHtcbiAgICAgICAgY3VycmVudFN0ZXAsXG4gICAgICAgIGNvbXBsZXRlZFN0ZXBzOiBBcnJheS5mcm9tKGNvbXBsZXRlZFN0ZXBzKSxcbiAgICAgICAgY29uZmlnRGF0YSxcbiAgICAgICAgdGltZXN0YW1wOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKClcbiAgICAgIH1cbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdjaG9ydXMtc2V0dXAtc3RhdGUnLCBKU09OLnN0cmluZ2lmeShzdGF0ZSkpXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0ZhaWxlZCB0byBzYXZlIHNldHVwIHN0YXRlOicsIGVycm9yKVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGNsZWFyUGVyc2lzdGVkRGF0YSA9ICgpID0+IHtcbiAgICB0cnkge1xuICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ2Nob3J1cy1zZXR1cC1zdGF0ZScpXG4gICAgICAvLyBSZXNldCBzdGF0ZSB0byBpbml0aWFsIHZhbHVlc1xuICAgICAgc2V0Q3VycmVudFN0ZXAoMClcbiAgICAgIHNldENvbXBsZXRlZFN0ZXBzKG5ldyBTZXQ8bnVtYmVyPigpKVxuICAgICAgc2V0Q29uZmlnRGF0YSh7fSlcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcignRmFpbGVkIHRvIGNsZWFyIHBlcnNpc3RlZCBkYXRhOicsIGVycm9yKVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGZldGNoU3lzdGVtSW5mbyA9IGFzeW5jICgpID0+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaCgnL2FwaS9zZXR1cC9zeXN0ZW0nKVxuICAgICAgaWYgKHJlc3BvbnNlLm9rKSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKVxuICAgICAgICBzZXRTeXN0ZW1JbmZvKHJlc3VsdC5zeXN0ZW1faW5mbylcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcignRmFpbGVkIHRvIGZldGNoIHN5c3RlbSBpbmZvOicsIGVycm9yKVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGhhbmRsZVN0ZXBDb21wbGV0ZSA9IChzdGVwSW5kZXg6IG51bWJlciwgZGF0YTogYW55KSA9PiB7XG4gICAgY29uc29sZS5sb2coJ1NldHVwIFBhZ2U6IFN0ZXAgY29tcGxldGUnLCB7IHN0ZXBJbmRleCwgZGF0YSwgY3VycmVudENvbmZpZ0RhdGE6IGNvbmZpZ0RhdGEgfSlcbiAgICBzZXRDb21wbGV0ZWRTdGVwcyhwcmV2ID0+IG5ldyBTZXQoWy4uLnByZXYsIHN0ZXBJbmRleF0pKVxuICAgIHNldENvbmZpZ0RhdGEocHJldiA9PiB7XG4gICAgICBjb25zdCBuZXdDb25maWdEYXRhID0geyAuLi5wcmV2LCAuLi5kYXRhIH1cbiAgICAgIGNvbnNvbGUubG9nKCdTZXR1cCBQYWdlOiBVcGRhdGVkIGNvbmZpZ0RhdGEnLCB7IHByZXYsIGRhdGEsIG5ld0NvbmZpZ0RhdGEgfSlcbiAgICAgIHJldHVybiBuZXdDb25maWdEYXRhXG4gICAgfSlcbiAgICBcbiAgICAvLyBBdXRvLWFkdmFuY2UgdG8gbmV4dCBzdGVwXG4gICAgaWYgKHN0ZXBJbmRleCA8IFNFVFVQX1NURVBTLmxlbmd0aCAtIDEpIHtcbiAgICAgIHNldEN1cnJlbnRTdGVwKHN0ZXBJbmRleCArIDEpXG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFNldHVwIGlzIGNvbXBsZXRlLCBjbGVhciBwZXJzaXN0ZWQgZGF0YSBhZnRlciBhIGRlbGF5XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgY2xlYXJQZXJzaXN0ZWREYXRhKClcbiAgICAgIH0sIDIwMDApXG4gICAgfVxuICB9XG5cbiAgY29uc3QgaGFuZGxlU3RlcEJhY2sgPSAoKSA9PiB7XG4gICAgaWYgKGN1cnJlbnRTdGVwID4gMCkge1xuICAgICAgc2V0Q3VycmVudFN0ZXAoY3VycmVudFN0ZXAgLSAxKVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IEN1cnJlbnRTdGVwQ29tcG9uZW50ID0gU0VUVVBfU1RFUFNbY3VycmVudFN0ZXBdLmNvbXBvbmVudFxuXG4gIC8vIENoZWNrIGlmIHdlJ3JlIHJlc3VtaW5nIGZyb20gc2F2ZWQgZGF0YVxuICBjb25zdCBpc1Jlc3VtaW5nID0gY3VycmVudFN0ZXAgPiAwIHx8IGNvbXBsZXRlZFN0ZXBzLnNpemUgPiAwIHx8IE9iamVjdC5rZXlzKGNvbmZpZ0RhdGEpLmxlbmd0aCA+IDBcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwibWF4LXctN3hsIG14LWF1dG8gcHgtNCBzbTpweC02IGxnOnB4LTggcHktOFwiPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJtYi04XCI+XG4gICAgICAgIDxoMSBjbGFzc05hbWU9XCJoZWFkaW5nLWhlcm8gbWItM1wiPlxuICAgICAgICAgIENIT1JVUyBBZ2VudCBTZXR1cFxuICAgICAgICA8L2gxPlxuICAgICAgICA8cCBjbGFzc05hbWU9XCJ0ZXh0LWJvZHlcIj5cbiAgICAgICAgICBDb25maWd1cmUgeW91ciBkaXN0cmlidXRlZCBhZ2VudCBvcmNoZXN0cmF0aW9uIHBsYXRmb3JtIGluIHtTRVRVUF9TVEVQUy5sZW5ndGh9IHNpbXBsZSBzdGVwcy5cbiAgICAgICAgPC9wPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIHsvKiBSZXN1bWUgU2V0dXAgTm90aWZpY2F0aW9uICovfVxuICAgICAge2lzUmVzdW1pbmcgJiYgKFxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1iLTggYmctY2hvcnVzLXNlY29uZGFyeSBiZy1vcGFjaXR5LTIwIGJvcmRlciBib3JkZXItY2hvcnVzLXNlY29uZGFyeSByb3VuZGVkLWxnIHAtNlwiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1zdGFydCBqdXN0aWZ5LWJldHdlZW5cIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1zdGFydFwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXgtc2hyaW5rLTBcIj5cbiAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzTmFtZT1cImgtNSB3LTUgdGV4dC1jaG9ydXMtc2Vjb25kYXJ5IG10LTAuNVwiIGZpbGw9XCJub25lXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiPlxuICAgICAgICAgICAgICAgICAgPHBhdGggc3Ryb2tlTGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlTGluZWpvaW49XCJyb3VuZFwiIHN0cm9rZVdpZHRoPXsyfSBkPVwiTTEzIDE2aC0xdi00aC0xbTEtNGguMDFNMjEgMTJhOSA5IDAgMTEtMTggMCA5IDkgMCAwMTE4IDB6XCIgLz5cbiAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibWwtM1wiPlxuICAgICAgICAgICAgICAgIDxoMyBjbGFzc05hbWU9XCJ0ZXh0LXNtIGZvbnQtbWVkaXVtIHRleHQtY2hvcnVzLXNlY29uZGFyeVwiPlxuICAgICAgICAgICAgICAgICAgU2V0dXAgUHJvZ3Jlc3MgUmVzdG9yZWRcbiAgICAgICAgICAgICAgICA8L2gzPlxuICAgICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQtc21hbGwgdGV4dC1ncmF5LTMwMCBtdC0xXCI+XG4gICAgICAgICAgICAgICAgICBZb3VyIHByZXZpb3VzIHNldHVwIHByb2dyZXNzIGhhcyBiZWVuIHJlc3RvcmVkLiBZb3UncmUgY3VycmVudGx5IG9uIHN0ZXAge2N1cnJlbnRTdGVwICsgMX0gb2Yge1NFVFVQX1NURVBTLmxlbmd0aH0uXG4gICAgICAgICAgICAgICAgICB7Y29tcGxldGVkU3RlcHMuc2l6ZSA+IDAgJiYgYCBZb3UndmUgY29tcGxldGVkICR7Y29tcGxldGVkU3RlcHMuc2l6ZX0gc3RlcCR7Y29tcGxldGVkU3RlcHMuc2l6ZSAhPT0gMSA/ICdzJyA6ICcnfS5gfVxuICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgb25DbGljaz17Y2xlYXJQZXJzaXN0ZWREYXRhfVxuICAgICAgICAgICAgICBjbGFzc05hbWU9XCJidG4tdGV4dFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIFN0YXJ0IE92ZXJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICl9XG5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZ3JpZCBncmlkLWNvbHMtMSBsZzpncmlkLWNvbHMtNCBnYXAtMTJcIj5cbiAgICAgICAgey8qIFByb2dyZXNzIFNpZGViYXIgKi99XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibGc6Y29sLXNwYW4tMVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY2FyZCBzdGlja3kgdG9wLThcIj5cbiAgICAgICAgICAgIDxoMiBjbGFzc05hbWU9XCJoZWFkaW5nLXN1YnNlY3Rpb24gbWItNlwiPlxuICAgICAgICAgICAgICBTZXR1cCBQcm9ncmVzc1xuICAgICAgICAgICAgPC9oMj5cbiAgICAgICAgICAgIDxuYXYgY2xhc3NOYW1lPVwic3BhY2UteS0yXCI+XG4gICAgICAgICAgICAgIHtTRVRVUF9TVEVQUy5tYXAoKHN0ZXAsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgaXNDb21wbGV0ZWQgPSBjb21wbGV0ZWRTdGVwcy5oYXMoaW5kZXgpXG4gICAgICAgICAgICAgICAgY29uc3QgaXNDdXJyZW50ID0gaW5kZXggPT09IGN1cnJlbnRTdGVwXG4gICAgICAgICAgICAgICAgY29uc3QgaXNBY2Nlc3NpYmxlID0gaW5kZXggPD0gY3VycmVudFN0ZXAgfHwgY29tcGxldGVkU3RlcHMuaGFzKGluZGV4KVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAga2V5PXtzdGVwLmlkfVxuICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBpc0FjY2Vzc2libGUgJiYgc2V0Q3VycmVudFN0ZXAoaW5kZXgpfVxuICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17IWlzQWNjZXNzaWJsZX1cbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgdy1mdWxsIHRleHQtbGVmdCBwcm9ncmVzcy1zdGVwICR7XG4gICAgICAgICAgICAgICAgICAgICAgaXNDdXJyZW50XG4gICAgICAgICAgICAgICAgICAgICAgICA/ICdwcm9ncmVzcy1zdGVwLWN1cnJlbnQnXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGlzQ29tcGxldGVkXG4gICAgICAgICAgICAgICAgICAgICAgICA/ICdwcm9ncmVzcy1zdGVwLWNvbXBsZXRlZCdcbiAgICAgICAgICAgICAgICAgICAgICAgIDogaXNBY2Nlc3NpYmxlXG4gICAgICAgICAgICAgICAgICAgICAgICA/ICdwcm9ncmVzcy1zdGVwLWFjY2Vzc2libGUnXG4gICAgICAgICAgICAgICAgICAgICAgICA6ICdwcm9ncmVzcy1zdGVwLWRpc2FibGVkJ1xuICAgICAgICAgICAgICAgICAgICB9YH1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleC1zaHJpbmstMCBtci0zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7aXNDb21wbGV0ZWQgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxDaGVja0NpcmNsZUljb24gY2xhc3NOYW1lPVwiaC01IHctNSB0ZXh0LWdyZWVuLTQwMFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17YHctNSBoLTUgcm91bmRlZC1mdWxsIGJvcmRlci0yIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHRleHQteHMgZm9udC1tZWRpdW0gJHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0N1cnJlbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gJ2JvcmRlci1jaG9ydXMtc2Vjb25kYXJ5IGJnLWNob3J1cy1zZWNvbmRhcnkgdGV4dC13aGl0ZSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJ2JvcmRlci1ncmF5LTYwMCB0ZXh0LWdyYXktNTAwJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9YH0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2luZGV4ICsgMX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleC0xIG1pbi13LTBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1zbSBmb250LW1lZGl1bSB0cnVuY2F0ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7c3RlcC50aXRsZX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LXhzIG9wYWNpdHktNzUgdHJ1bmNhdGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAge3N0ZXAuZGVzY3JpcHRpb259XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICB7aXNBY2Nlc3NpYmxlICYmICFpc0NvbXBsZXRlZCAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8Q2hldnJvblJpZ2h0SWNvbiBjbGFzc05hbWU9XCJoLTQgdy00IG9wYWNpdHktNTBcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgIDwvbmF2PlxuICAgICAgICAgICAgXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm10LTggcHQtNiBib3JkZXItdCBib3JkZXItZ3JheS04MDBcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LXNtYWxsIG1iLTNcIj5cbiAgICAgICAgICAgICAgICBQcm9ncmVzczoge2NvbXBsZXRlZFN0ZXBzLnNpemV9IG9mIHtTRVRVUF9TVEVQUy5sZW5ndGh9IHN0ZXBzXG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctZnVsbCBiZy1ncmF5LTgwMCByb3VuZGVkLXNtIGgtMlwiPlxuICAgICAgICAgICAgICAgIDxkaXYgXG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJiZy1jaG9ydXMtc2Vjb25kYXJ5IGgtMiByb3VuZGVkLXNtIHRyYW5zaXRpb24tYWxsIGR1cmF0aW9uLTUwMFwiXG4gICAgICAgICAgICAgICAgICBzdHlsZT17eyB3aWR0aDogYCR7KGNvbXBsZXRlZFN0ZXBzLnNpemUgLyBTRVRVUF9TVEVQUy5sZW5ndGgpICogMTAwfSVgIH19XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgey8qIE1haW4gQ29udGVudCAqL31cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJsZzpjb2wtc3Bhbi0zXCI+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjYXJkXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1iLThcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gbWItM1wiPlxuICAgICAgICAgICAgICAgIDxoMiBjbGFzc05hbWU9XCJoZWFkaW5nLXNlY3Rpb25cIj5cbiAgICAgICAgICAgICAgICAgIHtTRVRVUF9TVEVQU1tjdXJyZW50U3RlcF0udGl0bGV9XG4gICAgICAgICAgICAgICAgPC9oMj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtZ2hvc3RcIj5cbiAgICAgICAgICAgICAgICAgIFN0ZXAge2N1cnJlbnRTdGVwICsgMX0gb2Yge1NFVFVQX1NURVBTLmxlbmd0aH1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQtYm9keVwiPlxuICAgICAgICAgICAgICAgIHtTRVRVUF9TVEVQU1tjdXJyZW50U3RlcF0uZGVzY3JpcHRpb259XG4gICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8Q3VycmVudFN0ZXBDb21wb25lbnRcbiAgICAgICAgICAgICAgc3lzdGVtSW5mbz17c3lzdGVtSW5mb31cbiAgICAgICAgICAgICAgY29uZmlnRGF0YT17Y29uZmlnRGF0YX1cbiAgICAgICAgICAgICAgb25Db21wbGV0ZT17KGRhdGE6IGFueSkgPT4gaGFuZGxlU3RlcENvbXBsZXRlKGN1cnJlbnRTdGVwLCBkYXRhKX1cbiAgICAgICAgICAgICAgb25CYWNrPXtjdXJyZW50U3RlcCA+IDAgPyBoYW5kbGVTdGVwQmFjayA6IHVuZGVmaW5lZH1cbiAgICAgICAgICAgICAgaXNDb21wbGV0ZWQ9e2NvbXBsZXRlZFN0ZXBzLmhhcyhjdXJyZW50U3RlcCl9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICApXG59Il0sIm5hbWVzIjpbInVzZVN0YXRlIiwidXNlRWZmZWN0IiwiQ2hldnJvblJpZ2h0SWNvbiIsIkNoZWNrQ2lyY2xlSWNvbiIsIlRlcm1zQW5kQ29uZGl0aW9ucyIsIkxpY2Vuc2VWYWxpZGF0aW9uIiwiU3lzdGVtRGV0ZWN0aW9uIiwiUmVwb3NpdG9yeUNvbmZpZ3VyYXRpb24iLCJOZXR3b3JrQ29uZmlndXJhdGlvbiIsIlNlY3VyaXR5U2V0dXAiLCJBSUNvbmZpZ3VyYXRpb24iLCJTZXJ2aWNlRGVwbG95bWVudCIsIkNsdXN0ZXJGb3JtYXRpb24iLCJUZXN0aW5nVmFsaWRhdGlvbiIsIlNFVFVQX1NURVBTIiwiaWQiLCJ0aXRsZSIsImRlc2NyaXB0aW9uIiwiY29tcG9uZW50IiwiU2V0dXBQYWdlIiwiY3VycmVudFN0ZXAiLCJzZXRDdXJyZW50U3RlcCIsImNvbXBsZXRlZFN0ZXBzIiwic2V0Q29tcGxldGVkU3RlcHMiLCJTZXQiLCJjb25maWdEYXRhIiwic2V0Q29uZmlnRGF0YSIsInN5c3RlbUluZm8iLCJzZXRTeXN0ZW1JbmZvIiwibG9hZFBlcnNpc3RlZERhdGEiLCJmZXRjaFN5c3RlbUluZm8iLCJzYXZlU2V0dXBTdGF0ZSIsInNhdmVkU3RhdGUiLCJsb2NhbFN0b3JhZ2UiLCJnZXRJdGVtIiwic3RhdGUiLCJKU09OIiwicGFyc2UiLCJlcnJvciIsImNvbnNvbGUiLCJBcnJheSIsImZyb20iLCJ0aW1lc3RhbXAiLCJEYXRlIiwidG9JU09TdHJpbmciLCJzZXRJdGVtIiwic3RyaW5naWZ5IiwiY2xlYXJQZXJzaXN0ZWREYXRhIiwicmVtb3ZlSXRlbSIsInJlc3BvbnNlIiwiZmV0Y2giLCJvayIsInJlc3VsdCIsImpzb24iLCJzeXN0ZW1faW5mbyIsImhhbmRsZVN0ZXBDb21wbGV0ZSIsInN0ZXBJbmRleCIsImRhdGEiLCJsb2ciLCJjdXJyZW50Q29uZmlnRGF0YSIsInByZXYiLCJuZXdDb25maWdEYXRhIiwibGVuZ3RoIiwic2V0VGltZW91dCIsImhhbmRsZVN0ZXBCYWNrIiwiQ3VycmVudFN0ZXBDb21wb25lbnQiLCJpc1Jlc3VtaW5nIiwic2l6ZSIsIk9iamVjdCIsImtleXMiLCJkaXYiLCJjbGFzc05hbWUiLCJoMSIsInAiLCJzdmciLCJmaWxsIiwidmlld0JveCIsInN0cm9rZSIsInBhdGgiLCJzdHJva2VMaW5lY2FwIiwic3Ryb2tlTGluZWpvaW4iLCJzdHJva2VXaWR0aCIsImQiLCJoMyIsImJ1dHRvbiIsIm9uQ2xpY2siLCJoMiIsIm5hdiIsIm1hcCIsInN0ZXAiLCJpbmRleCIsImlzQ29tcGxldGVkIiwiaGFzIiwiaXNDdXJyZW50IiwiaXNBY2Nlc3NpYmxlIiwiZGlzYWJsZWQiLCJzdHlsZSIsIndpZHRoIiwib25Db21wbGV0ZSIsIm9uQmFjayIsInVuZGVmaW5lZCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./app/setup/page.tsx\n");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "(rsc)/./app/globals.css":
|
|
/*!*************************!*\
|
|
!*** ./app/globals.css ***!
|
|
\*************************/
|
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
|
|
"use strict";
|
|
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (\"878fced55f8c\");\nif (false) {}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9hcHAvZ2xvYmFscy5jc3MiLCJtYXBwaW5ncyI6Ijs7OztBQUFBLGlFQUFlLGNBQWM7QUFDN0IsSUFBSSxLQUFVLEVBQUUsRUFBdUIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9ienp6LWNvbmZpZy11aS8uL2FwcC9nbG9iYWxzLmNzcz9kZTVkIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IFwiODc4ZmNlZDU1ZjhjXCJcbmlmIChtb2R1bGUuaG90KSB7IG1vZHVsZS5ob3QuYWNjZXB0KCkgfVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./app/globals.css\n");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "(rsc)/./app/components/ThemeToggle.tsx":
|
|
/*!****************************************!*\
|
|
!*** ./app/components/ThemeToggle.tsx ***!
|
|
\****************************************/
|
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
|
|
"use strict";
|
|
__webpack_require__.r(__webpack_exports__);
|
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
/* harmony export */ $$typeof: () => (/* binding */ $$typeof),
|
|
/* harmony export */ __esModule: () => (/* binding */ __esModule),
|
|
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
/* harmony export */ });
|
|
/* harmony import */ var next_dist_build_webpack_loaders_next_flight_loader_module_proxy__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! next/dist/build/webpack/loaders/next-flight-loader/module-proxy */ "(rsc)/./node_modules/next/dist/build/webpack/loaders/next-flight-loader/module-proxy.js");
|
|
|
|
const proxy = (0,next_dist_build_webpack_loaders_next_flight_loader_module_proxy__WEBPACK_IMPORTED_MODULE_0__.createProxy)(String.raw`/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/components/ThemeToggle.tsx`)
|
|
|
|
// Accessing the __esModule property and exporting $$typeof are required here.
|
|
// The __esModule getter forces the proxy target to create the default export
|
|
// and the $$typeof value is for rendering logic to determine if the module
|
|
// is a client boundary.
|
|
const { __esModule, $$typeof } = proxy;
|
|
const __default__ = proxy.default;
|
|
|
|
|
|
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (__default__);
|
|
|
|
/***/ }),
|
|
|
|
/***/ "(rsc)/./app/layout.tsx":
|
|
/*!************************!*\
|
|
!*** ./app/layout.tsx ***!
|
|
\************************/
|
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
|
|
"use strict";
|
|
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ RootLayout),\n/* harmony export */ metadata: () => (/* binding */ metadata)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"(rsc)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/rsc/react-jsx-dev-runtime.js\");\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _globals_css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./globals.css */ \"(rsc)/./app/globals.css\");\n/* harmony import */ var _components_ThemeToggle__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./components/ThemeToggle */ \"(rsc)/./app/components/ThemeToggle.tsx\");\n\n\n\nconst metadata = {\n title: \"CHORUS Agent Configuration\",\n description: \"Configure your CHORUS distributed agent orchestration platform\",\n viewport: \"width=device-width, initial-scale=1\"\n};\nfunction RootLayout({ children }) {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"html\", {\n lang: \"en\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"body\", {\n className: \"bg-gray-50 dark:bg-gray-900 text-gray-900 dark:text-gray-100 min-h-screen transition-colors duration-200\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"min-h-screen flex flex-col\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"header\", {\n className: \"bg-gray-900 dark:bg-black border-b border-gray-200 dark:border-gray-800 transition-colors duration-200\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"max-w-7xl mx-auto px-8 py-6\",\n children: /*#__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)(\"div\", {\n className: \"flex items-center space-x-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-shrink-0\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"img\", {\n src: \"/assets/chorus-mobius-on-white.png\",\n alt: \"CHORUS\",\n className: \"w-10 h-10\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/layout.tsx\",\n lineNumber: 25,\n columnNumber: 21\n }, this)\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/layout.tsx\",\n lineNumber: 24,\n columnNumber: 19\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)(\"h1\", {\n className: \"heading-subsection\",\n children: \"CHORUS Agent Configuration\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/layout.tsx\",\n lineNumber: 32,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-small\",\n children: \"Distributed Agent Orchestration Platform\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/layout.tsx\",\n lineNumber: 35,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/layout.tsx\",\n lineNumber: 31,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/layout.tsx\",\n lineNumber: 23,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center space-x-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"status-online\",\n children: \"System Online\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/layout.tsx\",\n lineNumber: 41,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ThemeToggle__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {}, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/layout.tsx\",\n lineNumber: 44,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/layout.tsx\",\n lineNumber: 40,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/layout.tsx\",\n lineNumber: 22,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/layout.tsx\",\n lineNumber: 21,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/layout.tsx\",\n lineNumber: 20,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"main\", {\n className: \"flex-1\",\n children: children\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/layout.tsx\",\n lineNumber: 50,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"footer\", {\n className: \"bg-gray-900 dark:bg-black border-t border-gray-200 dark:border-gray-800 transition-colors duration-200\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"max-w-7xl mx-auto px-8 py-6\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex justify-between items-center text-sm text-gray-400\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: \"\\xa9 2025 Chorus Services. All rights reserved.\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/layout.tsx\",\n lineNumber: 57,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex space-x-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"a\", {\n href: \"https://docs.chorus.services/agents\",\n target: \"_blank\",\n className: \"btn-text\",\n children: \"Documentation\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/layout.tsx\",\n lineNumber: 61,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"a\", {\n href: \"https://discord.gg/chorus-services\",\n target: \"_blank\",\n className: \"btn-text\",\n children: \"Support\"\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/layout.tsx\",\n lineNumber: 68,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/layout.tsx\",\n lineNumber: 60,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/layout.tsx\",\n lineNumber: 56,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/layout.tsx\",\n lineNumber: 55,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/layout.tsx\",\n lineNumber: 54,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/layout.tsx\",\n lineNumber: 19,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/layout.tsx\",\n lineNumber: 18,\n columnNumber: 7\n }, this)\n }, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/layout.tsx\",\n lineNumber: 17,\n columnNumber: 5\n }, this);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9hcHAvbGF5b3V0LnRzeCIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQ3NCO0FBQzRCO0FBRTNDLE1BQU1DLFdBQXFCO0lBQ2hDQyxPQUFPO0lBQ1BDLGFBQWE7SUFDYkMsVUFBVTtBQUNaLEVBQUM7QUFFYyxTQUFTQyxXQUFXLEVBQ2pDQyxRQUFRLEVBR1Q7SUFDQyxxQkFDRSw4REFBQ0M7UUFBS0MsTUFBSztrQkFDVCw0RUFBQ0M7WUFBS0MsV0FBVTtzQkFDZCw0RUFBQ0M7Z0JBQUlELFdBQVU7O2tDQUNiLDhEQUFDRTt3QkFBT0YsV0FBVTtrQ0FDaEIsNEVBQUNDOzRCQUFJRCxXQUFVO3NDQUNiLDRFQUFDQztnQ0FBSUQsV0FBVTs7a0RBQ2IsOERBQUNDO3dDQUFJRCxXQUFVOzswREFDYiw4REFBQ0M7Z0RBQUlELFdBQVU7MERBQ2IsNEVBQUNHO29EQUNDQyxLQUFJO29EQUNKQyxLQUFJO29EQUNKTCxXQUFVOzs7Ozs7Ozs7OzswREFHZCw4REFBQ0M7O2tFQUNDLDhEQUFDSzt3REFBR04sV0FBVTtrRUFBcUI7Ozs7OztrRUFHbkMsOERBQUNPO3dEQUFFUCxXQUFVO2tFQUFhOzs7Ozs7Ozs7Ozs7Ozs7Ozs7a0RBSzlCLDhEQUFDQzt3Q0FBSUQsV0FBVTs7MERBQ2IsOERBQUNDO2dEQUFJRCxXQUFVOzBEQUFnQjs7Ozs7OzBEQUcvQiw4REFBQ1YsK0RBQVdBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7a0NBTXBCLDhEQUFDa0I7d0JBQUtSLFdBQVU7a0NBQ2JKOzs7Ozs7a0NBR0gsOERBQUNhO3dCQUFPVCxXQUFVO2tDQUNoQiw0RUFBQ0M7NEJBQUlELFdBQVU7c0NBQ2IsNEVBQUNDO2dDQUFJRCxXQUFVOztrREFDYiw4REFBQ0M7a0RBQUk7Ozs7OztrREFHTCw4REFBQ0E7d0NBQUlELFdBQVU7OzBEQUNiLDhEQUFDVTtnREFDQ0MsTUFBSztnREFDTEMsUUFBTztnREFDUFosV0FBVTswREFDWDs7Ozs7OzBEQUdELDhEQUFDVTtnREFDQ0MsTUFBSztnREFDTEMsUUFBTztnREFDUFosV0FBVTswREFDWDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFXbkIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9ienp6LWNvbmZpZy11aS8uL2FwcC9sYXlvdXQudHN4Pzk5ODgiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBNZXRhZGF0YSB9IGZyb20gJ25leHQnXG5pbXBvcnQgJy4vZ2xvYmFscy5jc3MnXG5pbXBvcnQgVGhlbWVUb2dnbGUgZnJvbSAnLi9jb21wb25lbnRzL1RoZW1lVG9nZ2xlJ1xuXG5leHBvcnQgY29uc3QgbWV0YWRhdGE6IE1ldGFkYXRhID0ge1xuICB0aXRsZTogJ0NIT1JVUyBBZ2VudCBDb25maWd1cmF0aW9uJyxcbiAgZGVzY3JpcHRpb246ICdDb25maWd1cmUgeW91ciBDSE9SVVMgZGlzdHJpYnV0ZWQgYWdlbnQgb3JjaGVzdHJhdGlvbiBwbGF0Zm9ybScsXG4gIHZpZXdwb3J0OiAnd2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEnLFxufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBSb290TGF5b3V0KHtcbiAgY2hpbGRyZW4sXG59OiB7XG4gIGNoaWxkcmVuOiBSZWFjdC5SZWFjdE5vZGVcbn0pIHtcbiAgcmV0dXJuIChcbiAgICA8aHRtbCBsYW5nPVwiZW5cIj5cbiAgICAgIDxib2R5IGNsYXNzTmFtZT1cImJnLWdyYXktNTAgZGFyazpiZy1ncmF5LTkwMCB0ZXh0LWdyYXktOTAwIGRhcms6dGV4dC1ncmF5LTEwMCBtaW4taC1zY3JlZW4gdHJhbnNpdGlvbi1jb2xvcnMgZHVyYXRpb24tMjAwXCI+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibWluLWgtc2NyZWVuIGZsZXggZmxleC1jb2xcIj5cbiAgICAgICAgICA8aGVhZGVyIGNsYXNzTmFtZT1cImJnLWdyYXktOTAwIGRhcms6YmctYmxhY2sgYm9yZGVyLWIgYm9yZGVyLWdyYXktMjAwIGRhcms6Ym9yZGVyLWdyYXktODAwIHRyYW5zaXRpb24tY29sb3JzIGR1cmF0aW9uLTIwMFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtYXgtdy03eGwgbXgtYXV0byBweC04IHB5LTZcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGp1c3RpZnktYmV0d2VlbiBpdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIHNwYWNlLXgtNFwiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4LXNocmluay0wXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpbWcgXG4gICAgICAgICAgICAgICAgICAgICAgc3JjPVwiL2Fzc2V0cy9jaG9ydXMtbW9iaXVzLW9uLXdoaXRlLnBuZ1wiIFxuICAgICAgICAgICAgICAgICAgICAgIGFsdD1cIkNIT1JVU1wiIFxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInctMTAgaC0xMFwiXG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgIDxoMSBjbGFzc05hbWU9XCJoZWFkaW5nLXN1YnNlY3Rpb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICBDSE9SVVMgQWdlbnQgQ29uZmlndXJhdGlvblxuICAgICAgICAgICAgICAgICAgICA8L2gxPlxuICAgICAgICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJ0ZXh0LXNtYWxsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgRGlzdHJpYnV0ZWQgQWdlbnQgT3JjaGVzdHJhdGlvbiBQbGF0Zm9ybVxuICAgICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIHNwYWNlLXgtNlwiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJzdGF0dXMtb25saW5lXCI+XG4gICAgICAgICAgICAgICAgICAgIFN5c3RlbSBPbmxpbmVcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPFRoZW1lVG9nZ2xlIC8+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9oZWFkZXI+XG4gICAgICAgICAgXG4gICAgICAgICAgPG1haW4gY2xhc3NOYW1lPVwiZmxleC0xXCI+XG4gICAgICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgICAgPC9tYWluPlxuICAgICAgICAgIFxuICAgICAgICAgIDxmb290ZXIgY2xhc3NOYW1lPVwiYmctZ3JheS05MDAgZGFyazpiZy1ibGFjayBib3JkZXItdCBib3JkZXItZ3JheS0yMDAgZGFyazpib3JkZXItZ3JheS04MDAgdHJhbnNpdGlvbi1jb2xvcnMgZHVyYXRpb24tMjAwXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1heC13LTd4bCBteC1hdXRvIHB4LTggcHktNlwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXgganVzdGlmeS1iZXR3ZWVuIGl0ZW1zLWNlbnRlciB0ZXh0LXNtIHRleHQtZ3JheS00MDBcIj5cbiAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgwqkgMjAyNSBDaG9ydXMgU2VydmljZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IHNwYWNlLXgtNlwiPlxuICAgICAgICAgICAgICAgICAgPGEgXG4gICAgICAgICAgICAgICAgICAgIGhyZWY9XCJodHRwczovL2RvY3MuY2hvcnVzLnNlcnZpY2VzL2FnZW50c1wiIFxuICAgICAgICAgICAgICAgICAgICB0YXJnZXQ9XCJfYmxhbmtcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJidG4tdGV4dFwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIERvY3VtZW50YXRpb25cbiAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgIDxhIFxuICAgICAgICAgICAgICAgICAgICBocmVmPVwiaHR0cHM6Ly9kaXNjb3JkLmdnL2Nob3J1cy1zZXJ2aWNlc1wiIFxuICAgICAgICAgICAgICAgICAgICB0YXJnZXQ9XCJfYmxhbmtcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJidG4tdGV4dFwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIFN1cHBvcnRcbiAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Zvb3Rlcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2JvZHk+XG4gICAgPC9odG1sPlxuICApXG59Il0sIm5hbWVzIjpbIlRoZW1lVG9nZ2xlIiwibWV0YWRhdGEiLCJ0aXRsZSIsImRlc2NyaXB0aW9uIiwidmlld3BvcnQiLCJSb290TGF5b3V0IiwiY2hpbGRyZW4iLCJodG1sIiwibGFuZyIsImJvZHkiLCJjbGFzc05hbWUiLCJkaXYiLCJoZWFkZXIiLCJpbWciLCJzcmMiLCJhbHQiLCJoMSIsInAiLCJtYWluIiwiZm9vdGVyIiwiYSIsImhyZWYiLCJ0YXJnZXQiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./app/layout.tsx\n");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "(rsc)/./app/page.tsx":
|
|
/*!**********************!*\
|
|
!*** ./app/page.tsx ***!
|
|
\**********************/
|
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
|
|
"use strict";
|
|
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ HomePage)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"(rsc)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/rsc/react-jsx-dev-runtime.js\");\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _setup_page__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./setup/page */ \"(rsc)/./app/setup/page.tsx\");\n\n\nfunction HomePage() {\n // Serve setup page directly at root to avoid redirect loops\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_setup_page__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {}, void 0, false, {\n fileName: \"/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/page.tsx\",\n lineNumber: 5,\n columnNumber: 10\n }, this);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9hcHAvcGFnZS50c3giLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBb0M7QUFFckIsU0FBU0M7SUFDdEIsNERBQTREO0lBQzVELHFCQUFPLDhEQUFDRCxtREFBU0E7Ozs7O0FBQ25CIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vYnp6ei1jb25maWctdWkvLi9hcHAvcGFnZS50c3g/NzYwMyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgU2V0dXBQYWdlIGZyb20gJy4vc2V0dXAvcGFnZSdcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gSG9tZVBhZ2UoKSB7XG4gIC8vIFNlcnZlIHNldHVwIHBhZ2UgZGlyZWN0bHkgYXQgcm9vdCB0byBhdm9pZCByZWRpcmVjdCBsb29wc1xuICByZXR1cm4gPFNldHVwUGFnZSAvPlxufSJdLCJuYW1lcyI6WyJTZXR1cFBhZ2UiLCJIb21lUGFnZSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./app/page.tsx\n");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "(rsc)/./app/setup/page.tsx":
|
|
/*!****************************!*\
|
|
!*** ./app/setup/page.tsx ***!
|
|
\****************************/
|
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
|
|
"use strict";
|
|
__webpack_require__.r(__webpack_exports__);
|
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
/* harmony export */ $$typeof: () => (/* binding */ $$typeof),
|
|
/* harmony export */ __esModule: () => (/* binding */ __esModule),
|
|
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
/* harmony export */ });
|
|
/* harmony import */ var next_dist_build_webpack_loaders_next_flight_loader_module_proxy__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! next/dist/build/webpack/loaders/next-flight-loader/module-proxy */ "(rsc)/./node_modules/next/dist/build/webpack/loaders/next-flight-loader/module-proxy.js");
|
|
|
|
const proxy = (0,next_dist_build_webpack_loaders_next_flight_loader_module_proxy__WEBPACK_IMPORTED_MODULE_0__.createProxy)(String.raw`/home/tony/chorus/project-queues/active/BZZZ/install/config-ui/app/setup/page.tsx`)
|
|
|
|
// Accessing the __esModule property and exporting $$typeof are required here.
|
|
// The __esModule getter forces the proxy target to create the default export
|
|
// and the $$typeof value is for rendering logic to determine if the module
|
|
// is a client boundary.
|
|
const { __esModule, $$typeof } = proxy;
|
|
const __default__ = proxy.default;
|
|
|
|
|
|
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (__default__);
|
|
|
|
/***/ })
|
|
|
|
};
|
|
;
|
|
|
|
// 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/@heroicons","vendor-chunks/@swc"], () => (__webpack_exec__("(rsc)/./node_modules/next/dist/build/webpack/loaders/next-app-loader.js?name=app%2Fpage&page=%2Fpage&appPaths=%2Fpage&pagePath=private-next-app-dir%2Fpage.tsx&appDir=%2Fhome%2Ftony%2Fchorus%2Fproject-queues%2Factive%2FBZZZ%2Finstall%2Fconfig-ui%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2Fhome%2Ftony%2Fchorus%2Fproject-queues%2Factive%2FBZZZ%2Finstall%2Fconfig-ui&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=export&preferredRegion=&middlewareConfig=e30%3D!")));
|
|
module.exports = __webpack_exports__;
|
|
|
|
})(); |