forked from phoenix/litellm-mirror
42 lines
No EOL
360 KiB
JavaScript
42 lines
No EOL
360 KiB
JavaScript
"use strict";
|
||
/*
|
||
* ATTENTION: An "eval-source-map" devtool has been used.
|
||
* This devtool is neither made for production nor for readable output files.
|
||
* It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools.
|
||
* If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/)
|
||
* or disable the default devtool with "devtool: false".
|
||
* If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/).
|
||
*/
|
||
self["webpackHotUpdate_N_E"]("app/page",{
|
||
|
||
/***/ "(app-pages-browser)/./src/app/page.tsx":
|
||
/*!**************************!*\
|
||
!*** ./src/app/page.tsx ***!
|
||
\**************************/
|
||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/jsx-dev-runtime.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var next_navigation__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! next/navigation */ \"(app-pages-browser)/./node_modules/next/dist/api/navigation.js\");\n/* harmony import */ var _components_navbar__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../components/navbar */ \"(app-pages-browser)/./src/components/navbar.tsx\");\n/* harmony import */ var _components_user_dashboard__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../components/user_dashboard */ \"(app-pages-browser)/./src/components/user_dashboard.tsx\");\n/* harmony import */ var _components_model_dashboard__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/components/model_dashboard */ \"(app-pages-browser)/./src/components/model_dashboard.tsx\");\n/* harmony import */ var _components_view_users__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @/components/view_users */ \"(app-pages-browser)/./src/components/view_users.tsx\");\n/* harmony import */ var _components_teams__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @/components/teams */ \"(app-pages-browser)/./src/components/teams.tsx\");\n/* harmony import */ var _components_admins__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @/components/admins */ \"(app-pages-browser)/./src/components/admins.tsx\");\n/* harmony import */ var _components_settings__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @/components/settings */ \"(app-pages-browser)/./src/components/settings.tsx\");\n/* harmony import */ var _components_general_settings__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @/components/general_settings */ \"(app-pages-browser)/./src/components/general_settings.tsx\");\n/* harmony import */ var _components_pass_through_settings__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @/components/pass_through_settings */ \"(app-pages-browser)/./src/components/pass_through_settings.tsx\");\n/* harmony import */ var _components_budgets_budget_panel__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @/components/budgets/budget_panel */ \"(app-pages-browser)/./src/components/budgets/budget_panel.tsx\");\n/* harmony import */ var _components_model_hub__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @/components/model_hub */ \"(app-pages-browser)/./src/components/model_hub.tsx\");\n/* harmony import */ var _components_api_ref__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! @/components/api_ref */ \"(app-pages-browser)/./src/components/api_ref.tsx\");\n/* harmony import */ var _components_chat_ui__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! @/components/chat_ui */ \"(app-pages-browser)/./src/components/chat_ui.tsx\");\n/* harmony import */ var _components_leftnav__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../components/leftnav */ \"(app-pages-browser)/./src/components/leftnav.tsx\");\n/* harmony import */ var _components_usage__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../components/usage */ \"(app-pages-browser)/./src/components/usage.tsx\");\n/* harmony import */ var _components_cache_dashboard__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! @/components/cache_dashboard */ \"(app-pages-browser)/./src/components/cache_dashboard.tsx\");\n/* harmony import */ var jwt_decode__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! jwt-decode */ \"(app-pages-browser)/./node_modules/jwt-decode/build/esm/index.js\");\n/* harmony import */ var _barrel_optimize_names_Typography_antd__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! __barrel_optimize__?names=Typography!=!antd */ \"(app-pages-browser)/./node_modules/antd/es/typography/index.js\");\n/* harmony import */ var _components_networking__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ../components/networking */ \"(app-pages-browser)/./src/components/networking.tsx\");\n/* __next_internal_client_entry_do_not_use__ default auto */ \nvar _s = $RefreshSig$();\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction getCookie(name) {\n console.log(\"COOKIES\", document.cookie);\n const cookieValue = document.cookie.split(\"; \").find((row)=>row.startsWith(name + \"=\"));\n return cookieValue ? cookieValue.split(\"=\")[1] : null;\n}\nfunction formatUserRole(userRole) {\n if (!userRole) {\n return \"Undefined Role\";\n }\n console.log(\"Received user role: \".concat(userRole.toLowerCase()));\n console.log(\"Received user role length: \".concat(userRole.toLowerCase().length));\n switch(userRole.toLowerCase()){\n case \"app_owner\":\n return \"App Owner\";\n case \"demo_app_owner\":\n return \"App Owner\";\n case \"app_admin\":\n return \"Admin\";\n case \"proxy_admin\":\n return \"Admin\";\n case \"proxy_admin_viewer\":\n return \"Admin Viewer\";\n case \"internal_user\":\n return \"Internal User\";\n case \"internal_viewer\":\n return \"Internal Viewer\";\n case \"app_user\":\n return \"App User\";\n default:\n return \"Unknown Role\";\n }\n}\nconst CreateKeyPage = ()=>{\n _s();\n const { Title, Paragraph } = _barrel_optimize_names_Typography_antd__WEBPACK_IMPORTED_MODULE_21__[\"default\"];\n const [userRole, setUserRole] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(\"\");\n const [premiumUser, setPremiumUser] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n const [userEmail, setUserEmail] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);\n const [teams, setTeams] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);\n const [keys, setKeys] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);\n const [proxySettings, setProxySettings] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)({\n PROXY_BASE_URL: \"\",\n PROXY_LOGOUT_URL: \"\"\n });\n const [showSSOBanner, setShowSSOBanner] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(true);\n const searchParams = (0,next_navigation__WEBPACK_IMPORTED_MODULE_2__.useSearchParams)();\n const [modelData, setModelData] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)({\n data: []\n });\n const userID = searchParams.get(\"userID\");\n const invitation_id = searchParams.get(\"invitation_id\");\n const token = getCookie(\"token\");\n const [page, setPage] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(()=>{\n if (true) {\n return localStorage.getItem(\"selectedPage\") || \"api-keys\";\n }\n return \"api-keys\";\n });\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{\n localStorage.setItem(\"selectedPage\", page);\n }, [\n page\n ]);\n const [accessToken, setAccessToken] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{\n if (token) {\n const decoded = (0,jwt_decode__WEBPACK_IMPORTED_MODULE_19__.jwtDecode)(token);\n if (decoded) {\n // cast decoded to dictionary\n console.log(\"Decoded token:\", decoded);\n console.log(\"Decoded key:\", decoded.key);\n // set accessToken\n setAccessToken(decoded.key);\n // check if userRole is defined\n if (decoded.user_role) {\n const formattedUserRole = formatUserRole(decoded.user_role);\n console.log(\"Decoded user_role:\", formattedUserRole);\n setUserRole(formattedUserRole);\n if (formattedUserRole == \"Admin Viewer\") {\n setPage(\"usage\");\n }\n } else {\n console.log(\"User role not defined\");\n }\n if (decoded.user_email) {\n setUserEmail(decoded.user_email);\n } else {\n console.log(\"User Email is not set \".concat(decoded));\n }\n if (decoded.login_method) {\n setShowSSOBanner(decoded.login_method == \"username_password\" ? true : false);\n } else {\n console.log(\"User Email is not set \".concat(decoded));\n }\n if (decoded.premium_user) {\n setPremiumUser(decoded.premium_user);\n }\n if (decoded.auth_header_name) {\n (0,_components_networking__WEBPACK_IMPORTED_MODULE_20__.setGlobalLitellmHeaderName)(decoded.auth_header_name);\n }\n }\n }\n }, [\n token\n ]);\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react__WEBPACK_IMPORTED_MODULE_1__.Suspense, {\n fallback: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: \"Loading...\"\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/app/page.tsx\",\n lineNumber: 148,\n columnNumber: 25\n }, void 0),\n children: invitation_id ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_user_dashboard__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n userID: userID,\n userRole: userRole,\n premiumUser: premiumUser,\n teams: teams,\n keys: keys,\n setUserRole: setUserRole,\n userEmail: userEmail,\n setUserEmail: setUserEmail,\n setTeams: setTeams,\n setKeys: setKeys\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/app/page.tsx\",\n lineNumber: 151,\n columnNumber: 11\n }, undefined) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-col min-h-screen\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_navbar__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n userID: userID,\n userRole: userRole,\n userEmail: userEmail,\n premiumUser: premiumUser,\n setProxySettings: setProxySettings,\n proxySettings: proxySettings\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/app/page.tsx\",\n lineNumber: 165,\n columnNumber: 9\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-1 overflow-auto\",\n children: [\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)(_components_leftnav__WEBPACK_IMPORTED_MODULE_16__[\"default\"], {\n setPage: setPage,\n userRole: userRole,\n defaultSelectedKey: page\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/app/page.tsx\",\n lineNumber: 175,\n columnNumber: 17\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/app/page.tsx\",\n lineNumber: 174,\n columnNumber: 11\n }, undefined),\n page == \"api-keys\" ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_user_dashboard__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n userID: userID,\n userRole: userRole,\n premiumUser: premiumUser,\n teams: teams,\n keys: keys,\n setUserRole: setUserRole,\n userEmail: userEmail,\n setUserEmail: setUserEmail,\n setTeams: setTeams,\n setKeys: setKeys\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/app/page.tsx\",\n lineNumber: 183,\n columnNumber: 13\n }, undefined) : page == \"models\" ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_model_dashboard__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n userID: userID,\n userRole: userRole,\n token: token,\n keys: keys,\n accessToken: accessToken,\n modelData: modelData,\n setModelData: setModelData,\n premiumUser: premiumUser\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/app/page.tsx\",\n lineNumber: 196,\n columnNumber: 13\n }, undefined) : page == \"llm-playground\" ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_chat_ui__WEBPACK_IMPORTED_MODULE_15__[\"default\"], {\n userID: userID,\n userRole: userRole,\n token: token,\n accessToken: accessToken\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/app/page.tsx\",\n lineNumber: 207,\n columnNumber: 13\n }, undefined) : page == \"users\" ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_view_users__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n userID: userID,\n userRole: userRole,\n token: token,\n keys: keys,\n teams: teams,\n accessToken: accessToken,\n setKeys: setKeys\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/app/page.tsx\",\n lineNumber: 214,\n columnNumber: 13\n }, undefined) : page == \"teams\" ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_teams__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n teams: teams,\n setTeams: setTeams,\n searchParams: searchParams,\n accessToken: accessToken,\n userID: userID,\n userRole: userRole\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/app/page.tsx\",\n lineNumber: 224,\n columnNumber: 13\n }, undefined) : page == \"admin-panel\" ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_admins__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n setTeams: setTeams,\n searchParams: searchParams,\n accessToken: accessToken,\n showSSOBanner: showSSOBanner,\n premiumUser: premiumUser\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/app/page.tsx\",\n lineNumber: 233,\n columnNumber: 13\n }, undefined) : page == \"api_ref\" ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_api_ref__WEBPACK_IMPORTED_MODULE_14__[\"default\"], {\n proxySettings: proxySettings\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/app/page.tsx\",\n lineNumber: 241,\n columnNumber: 13\n }, undefined) : page == \"settings\" ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_settings__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n userID: userID,\n userRole: userRole,\n accessToken: accessToken,\n premiumUser: premiumUser\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/app/page.tsx\",\n lineNumber: 245,\n columnNumber: 13\n }, undefined) : page == \"budgets\" ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_budgets_budget_panel__WEBPACK_IMPORTED_MODULE_12__[\"default\"], {\n accessToken: accessToken\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/app/page.tsx\",\n lineNumber: 252,\n columnNumber: 13\n }, undefined) : page == \"general-settings\" ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_general_settings__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n userID: userID,\n userRole: userRole,\n accessToken: accessToken,\n modelData: modelData\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/app/page.tsx\",\n lineNumber: 254,\n columnNumber: 13\n }, undefined) : page == \"model-hub\" ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_model_hub__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n accessToken: accessToken,\n publicPage: false,\n premiumUser: premiumUser\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/app/page.tsx\",\n lineNumber: 261,\n columnNumber: 13\n }, undefined) : page == \"caching\" ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_cache_dashboard__WEBPACK_IMPORTED_MODULE_18__[\"default\"], {\n userID: userID,\n userRole: userRole,\n token: token,\n accessToken: accessToken,\n premiumUser: premiumUser\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/app/page.tsx\",\n lineNumber: 267,\n columnNumber: 13\n }, undefined) : page == \"pass-through-settings\" ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_pass_through_settings__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {\n userID: userID,\n userRole: userRole,\n accessToken: accessToken,\n modelData: modelData\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/app/page.tsx\",\n lineNumber: 275,\n columnNumber: 13\n }, undefined) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_usage__WEBPACK_IMPORTED_MODULE_17__[\"default\"], {\n userID: userID,\n userRole: userRole,\n token: token,\n accessToken: accessToken,\n keys: keys,\n premiumUser: premiumUser\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/app/page.tsx\",\n lineNumber: 282,\n columnNumber: 13\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/app/page.tsx\",\n lineNumber: 173,\n columnNumber: 9\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/app/page.tsx\",\n lineNumber: 164,\n columnNumber: 9\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/app/page.tsx\",\n lineNumber: 148,\n columnNumber: 5\n }, undefined);\n};\n_s(CreateKeyPage, \"8Zzo0upqqvVbx5t0XqxXLZCXMEM=\", false, function() {\n return [\n next_navigation__WEBPACK_IMPORTED_MODULE_2__.useSearchParams\n ];\n});\n_c = CreateKeyPage;\n/* harmony default export */ __webpack_exports__[\"default\"] = (CreateKeyPage);\nvar _c;\n$RefreshReg$(_c, \"CreateKeyPage\");\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QWJoQ21DO0FBME9OLCtEQUFlQSxhQUFhQSxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL3NyYy9hcHAvcGFnZS50c3g/ZjY4YSJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBjbGllbnRcIjtcbmltcG9ydCBSZWFjdCwgeyBTdXNwZW5zZSwgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlU2VhcmNoUGFyYW1zIH0gZnJvbSBcIm5leHQvbmF2aWdhdGlvblwiO1xuaW1wb3J0IE5hdmJhciBmcm9tIFwiLi4vY29tcG9uZW50cy9uYXZiYXJcIjtcbmltcG9ydCBVc2VyRGFzaGJvYXJkIGZyb20gXCIuLi9jb21wb25lbnRzL3VzZXJfZGFzaGJvYXJkXCI7XG5pbXBvcnQgTW9kZWxEYXNoYm9hcmQgZnJvbSBcIkAvY29tcG9uZW50cy9tb2RlbF9kYXNoYm9hcmRcIjtcbmltcG9ydCBWaWV3VXNlckRhc2hib2FyZCBmcm9tIFwiQC9jb21wb25lbnRzL3ZpZXdfdXNlcnNcIjtcbmltcG9ydCBUZWFtcyBmcm9tIFwiQC9jb21wb25lbnRzL3RlYW1zXCI7XG5pbXBvcnQgQWRtaW5QYW5lbCBmcm9tIFwiQC9jb21wb25lbnRzL2FkbWluc1wiO1xuaW1wb3J0IFNldHRpbmdzIGZyb20gXCJAL2NvbXBvbmVudHMvc2V0dGluZ3NcIjtcbmltcG9ydCBHZW5lcmFsU2V0dGluZ3MgZnJvbSBcIkAvY29tcG9uZW50cy9nZW5lcmFsX3NldHRpbmdzXCI7XG5pbXBvcnQgUGFzc1Rocm91Z2hTZXR0aW5ncyBmcm9tIFwiQC9jb21wb25lbnRzL3Bhc3NfdGhyb3VnaF9zZXR0aW5nc1wiO1xuaW1wb3J0IEJ1ZGdldFBhbmVsIGZyb20gXCJAL2NvbXBvbmVudHMvYnVkZ2V0cy9idWRnZXRfcGFuZWxcIjtcbmltcG9ydCBNb2RlbEh1YiBmcm9tIFwiQC9jb21wb25lbnRzL21vZGVsX2h1YlwiO1xuaW1wb3J0IEFQSVJlZiBmcm9tIFwiQC9jb21wb25lbnRzL2FwaV9yZWZcIjtcbmltcG9ydCBDaGF0VUkgZnJvbSBcIkAvY29tcG9uZW50cy9jaGF0X3VpXCI7XG5pbXBvcnQgU2lkZWJhciBmcm9tIFwiLi4vY29tcG9uZW50cy9sZWZ0bmF2XCI7XG5pbXBvcnQgVXNhZ2UgZnJvbSBcIi4uL2NvbXBvbmVudHMvdXNhZ2VcIjtcbmltcG9ydCBDYWNoZURhc2hib2FyZCBmcm9tIFwiQC9jb21wb25lbnRzL2NhY2hlX2Rhc2hib2FyZFwiO1xuaW1wb3J0IHsgand0RGVjb2RlIH0gZnJvbSBcImp3dC1kZWNvZGVcIjtcbmltcG9ydCB7IFR5cG9ncmFwaHkgfSBmcm9tIFwiYW50ZFwiO1xuaW1wb3J0IHsgc2V0R2xvYmFsTGl0ZWxsbUhlYWRlck5hbWUgfSBmcm9tIFwiLi4vY29tcG9uZW50cy9uZXR3b3JraW5nXCJcblxuZnVuY3Rpb24gZ2V0Q29va2llKG5hbWU6IHN0cmluZykge1xuICBjb25zb2xlLmxvZyhcIkNPT0tJRVNcIiwgZG9jdW1lbnQuY29va2llKVxuICBjb25zdCBjb29raWVWYWx1ZSA9IGRvY3VtZW50LmNvb2tpZVxuICAgICAgLnNwbGl0KCc7ICcpXG4gICAgICAuZmluZChyb3cgPT4gcm93LnN0YXJ0c1dpdGgobmFtZSArICc9JykpO1xuICByZXR1cm4gY29va2llVmFsdWUgPyBjb29raWVWYWx1ZS5zcGxpdCgnPScpWzFdIDogbnVsbDtcbn1cblxuXG5mdW5jdGlvbiBmb3JtYXRVc2VyUm9sZSh1c2VyUm9sZTogc3RyaW5nKSB7XG4gIGlmICghdXNlclJvbGUpIHtcbiAgICByZXR1cm4gXCJVbmRlZmluZWQgUm9sZVwiO1xuICB9XG4gIGNvbnNvbGUubG9nKGBSZWNlaXZlZCB1c2VyIHJvbGU6ICR7dXNlclJvbGUudG9Mb3dlckNhc2UoKX1gKTtcbiAgY29uc29sZS5sb2coYFJlY2VpdmVkIHVzZXIgcm9sZSBsZW5ndGg6ICR7dXNlclJvbGUudG9Mb3dlckNhc2UoKS5sZW5ndGh9YCk7XG4gIHN3aXRjaCAodXNlclJvbGUudG9Mb3dlckNhc2UoKSkge1xuICAgIGNhc2UgXCJhcHBfb3duZXJcIjpcbiAgICAgIHJldHVybiBcIkFwcCBPd25lclwiO1xuICAgIGNhc2UgXCJkZW1vX2FwcF9vd25lclwiOlxuICAgICAgcmV0dXJuIFwiQXBwIE93bmVyXCI7XG4gICAgY2FzZSBcImFwcF9hZG1pblwiOlxuICAgICAgcmV0dXJuIFwiQWRtaW5cIjtcbiAgICBjYXNlIFwicHJveHlfYWRtaW5cIjpcbiAgICAgIHJldHVybiBcIkFkbWluXCI7XG4gICAgY2FzZSBcInByb3h5X2FkbWluX3ZpZXdlclwiOlxuICAgICAgcmV0dXJuIFwiQWRtaW4gVmlld2VyXCI7XG4gICAgY2FzZSBcImludGVybmFsX3VzZXJcIjpcbiAgICAgIHJldHVybiBcIkludGVybmFsIFVzZXJcIjtcbiAgICBjYXNlIFwiaW50ZXJuYWxfdmlld2VyXCI6XG4gICAgICByZXR1cm4gXCJJbnRlcm5hbCBWaWV3ZXJcIjtcbiAgICBjYXNlIFwiYXBwX3VzZXJcIjpcbiAgICAgIHJldHVybiBcIkFwcCBVc2VyXCI7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBcIlVua25vd24gUm9sZVwiO1xuICB9XG59XG5cbmludGVyZmFjZSBQcm94eVNldHRpbmdzIHtcbiAgUFJPWFlfQkFTRV9VUkw6IHN0cmluZztcbiAgUFJPWFlfTE9HT1VUX1VSTDogc3RyaW5nO1xufVxuXG5jb25zdCBDcmVhdGVLZXlQYWdlID0gKCkgPT4ge1xuICBjb25zdCB7IFRpdGxlLCBQYXJhZ3JhcGggfSA9IFR5cG9ncmFwaHk7XG4gIGNvbnN0IFt1c2VyUm9sZSwgc2V0VXNlclJvbGVdID0gdXNlU3RhdGUoXCJcIik7XG4gIGNvbnN0IFtwcmVtaXVtVXNlciwgc2V0UHJlbWl1bVVzZXJdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBbdXNlckVtYWlsLCBzZXRVc2VyRW1haWxdID0gdXNlU3RhdGU8bnVsbCB8IHN0cmluZz4obnVsbCk7XG4gIGNvbnN0IFt0ZWFtcywgc2V0VGVhbXNdID0gdXNlU3RhdGU8bnVsbCB8IGFueVtdPihudWxsKTtcbiAgY29uc3QgW2tleXMsIHNldEtleXNdID0gdXNlU3RhdGU8bnVsbCB8IGFueVtdPihudWxsKTtcbiAgY29uc3QgW3Byb3h5U2V0dGluZ3MsIHNldFByb3h5U2V0dGluZ3NdID0gdXNlU3RhdGU8UHJveHlTZXR0aW5ncz4oe1xuICAgIFBST1hZX0JBU0VfVVJMOiBcIlwiLFxuICAgIFBST1hZX0xPR09VVF9VUkw6IFwiXCIsXG4gIH0pO1xuXG4gIGNvbnN0IFtzaG93U1NPQmFubmVyLCBzZXRTaG93U1NPQmFubmVyXSA9IHVzZVN0YXRlPGJvb2xlYW4+KHRydWUpO1xuICBjb25zdCBzZWFyY2hQYXJhbXMgPSB1c2VTZWFyY2hQYXJhbXMoKTtcbiAgY29uc3QgW21vZGVsRGF0YSwgc2V0TW9kZWxEYXRhXSA9IHVzZVN0YXRlPGFueT4oeyBkYXRhOiBbXSB9KTtcbiAgY29uc3QgdXNlcklEID0gc2VhcmNoUGFyYW1zLmdldChcInVzZXJJRFwiKTtcbiAgY29uc3QgaW52aXRhdGlvbl9pZCA9IHNlYXJjaFBhcmFtcy5nZXQoXCJpbnZpdGF0aW9uX2lkXCIpO1xuICBjb25zdCB0b2tlbiA9IGdldENvb2tpZSgndG9rZW4nKTtcblxuICBjb25zdCBbcGFnZSwgc2V0UGFnZV0gPSB1c2VTdGF0ZSgoKSA9PiB7XG4gICAgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICByZXR1cm4gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3NlbGVjdGVkUGFnZScpIHx8IFwiYXBpLWtleXNcIjtcbiAgICB9XG4gICAgcmV0dXJuIFwiYXBpLWtleXNcIjtcbiAgfSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnc2VsZWN0ZWRQYWdlJywgcGFnZSk7XG4gIH0sIFtwYWdlXSk7XG5cbiAgY29uc3QgW2FjY2Vzc1Rva2VuLCBzZXRBY2Nlc3NUb2tlbl0gPSB1c2VTdGF0ZTxzdHJpbmcgfCBudWxsPihudWxsKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICh0b2tlbikge1xuICAgICAgY29uc3QgZGVjb2RlZCA9IGp3dERlY29kZSh0b2tlbikgYXMgeyBba2V5OiBzdHJpbmddOiBhbnkgfTtcbiAgICAgIGlmIChkZWNvZGVkKSB7XG4gICAgICAgIC8vIGNhc3QgZGVjb2RlZCB0byBkaWN0aW9uYXJ5XG4gICAgICAgIGNvbnNvbGUubG9nKFwiRGVjb2RlZCB0b2tlbjpcIiwgZGVjb2RlZCk7XG5cbiAgICAgICAgY29uc29sZS5sb2coXCJEZWNvZGVkIGtleTpcIiwgZGVjb2RlZC5rZXkpO1xuICAgICAgICAvLyBzZXQgYWNjZXNzVG9rZW5cbiAgICAgICAgc2V0QWNjZXNzVG9rZW4oZGVjb2RlZC5rZXkpO1xuXG4gICAgICAgIC8vIGNoZWNrIGlmIHVzZXJSb2xlIGlzIGRlZmluZWRcbiAgICAgICAgaWYgKGRlY29kZWQudXNlcl9yb2xlKSB7XG4gICAgICAgICAgY29uc3QgZm9ybWF0dGVkVXNlclJvbGUgPSBmb3JtYXRVc2VyUm9sZShkZWNvZGVkLnVzZXJfcm9sZSk7XG4gICAgICAgICAgY29uc29sZS5sb2coXCJEZWNvZGVkIHVzZXJfcm9sZTpcIiwgZm9ybWF0dGVkVXNlclJvbGUpO1xuICAgICAgICAgIHNldFVzZXJSb2xlKGZvcm1hdHRlZFVzZXJSb2xlKTtcbiAgICAgICAgICBpZiAoZm9ybWF0dGVkVXNlclJvbGUgPT0gXCJBZG1pbiBWaWV3ZXJcIikge1xuICAgICAgICAgICAgc2V0UGFnZShcInVzYWdlXCIpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhcIlVzZXIgcm9sZSBub3QgZGVmaW5lZFwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChkZWNvZGVkLnVzZXJfZW1haWwpIHtcbiAgICAgICAgICBzZXRVc2VyRW1haWwoZGVjb2RlZC51c2VyX2VtYWlsKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgVXNlciBFbWFpbCBpcyBub3Qgc2V0ICR7ZGVjb2RlZH1gKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChkZWNvZGVkLmxvZ2luX21ldGhvZCkge1xuICAgICAgICAgIHNldFNob3dTU09CYW5uZXIoXG4gICAgICAgICAgICBkZWNvZGVkLmxvZ2luX21ldGhvZCA9PSBcInVzZXJuYW1lX3Bhc3N3b3JkXCIgPyB0cnVlIDogZmFsc2VcbiAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGBVc2VyIEVtYWlsIGlzIG5vdCBzZXQgJHtkZWNvZGVkfWApO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGRlY29kZWQucHJlbWl1bV91c2VyKSB7XG4gICAgICAgICAgc2V0UHJlbWl1bVVzZXIoZGVjb2RlZC5wcmVtaXVtX3VzZXIpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGRlY29kZWQuYXV0aF9oZWFkZXJfbmFtZSkge1xuICAgICAgICAgIHNldEdsb2JhbExpdGVsbG1IZWFkZXJOYW1lKGRlY29kZWQuYXV0aF9oZWFkZXJfbmFtZSk7XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICB9XG4gICAgfVxuICB9LCBbdG9rZW5dKTtcblxuICByZXR1cm4gKFxuICAgIDxTdXNwZW5zZSBmYWxsYmFjaz17PGRpdj5Mb2FkaW5nLi4uPC9kaXY+fT5cbiAgICAgIHtcbiAgICAgICAgaW52aXRhdGlvbl9pZCA/IChcbiAgICAgICAgICA8VXNlckRhc2hib2FyZFxuICAgICAgICAgICAgICB1c2VySUQ9e3VzZXJJRH1cbiAgICAgICAgICAgICAgdXNlclJvbGU9e3VzZXJSb2xlfVxuICAgICAgICAgICAgICBwcmVtaXVtVXNlcj17cHJlbWl1bVVzZXJ9XG4gICAgICAgICAgICAgIHRlYW1zPXt0ZWFtc31cbiAgICAgICAgICAgICAga2V5cz17a2V5c31cbiAgICAgICAgICAgICAgc2V0VXNlclJvbGU9e3NldFVzZXJSb2xlfVxuICAgICAgICAgICAgICB1c2VyRW1haWw9e3VzZXJFbWFpbH1cbiAgICAgICAgICAgICAgc2V0VXNlckVtYWlsPXtzZXRVc2VyRW1haWx9XG4gICAgICAgICAgICAgIHNldFRlYW1zPXtzZXRUZWFtc31cbiAgICAgICAgICAgICAgc2V0S2V5cz17c2V0S2V5c31cbiAgICAgICAgICAgIC8+XG4gICAgICAgICkgOiAoXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBmbGV4LWNvbCBtaW4taC1zY3JlZW5cIj5cbiAgICAgICAgPE5hdmJhclxuICAgICAgICAgIHVzZXJJRD17dXNlcklEfVxuICAgICAgICAgIHVzZXJSb2xlPXt1c2VyUm9sZX1cbiAgICAgICAgICB1c2VyRW1haWw9e3VzZXJFbWFpbH0gXG4gICAgICAgICAgcHJlbWl1bVVzZXI9e3ByZW1pdW1Vc2VyfVxuICAgICAgICAgIHNldFByb3h5U2V0dGluZ3M9e3NldFByb3h5U2V0dGluZ3N9XG4gICAgICAgICAgcHJveHlTZXR0aW5ncz17cHJveHlTZXR0aW5nc31cbiAgICAgICAgLz5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGZsZXgtMSBvdmVyZmxvdy1hdXRvXCI+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtdC04XCI+XG4gICAgICAgICAgICAgICAgPFNpZGViYXJcbiAgICAgICAgICAgICAgICBzZXRQYWdlPXtzZXRQYWdlfVxuICAgICAgICAgICAgICAgIHVzZXJSb2xlPXt1c2VyUm9sZX1cbiAgICAgICAgICAgICAgICBkZWZhdWx0U2VsZWN0ZWRLZXk9e3BhZ2V9XG4gICAgICAgICAgICAgIC8+ICAgICAgICAgICAgXG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICB7cGFnZSA9PSBcImFwaS1rZXlzXCIgPyAoXG4gICAgICAgICAgICA8VXNlckRhc2hib2FyZFxuICAgICAgICAgICAgICB1c2VySUQ9e3VzZXJJRH1cbiAgICAgICAgICAgICAgdXNlclJvbGU9e3VzZXJSb2xlfVxuICAgICAgICAgICAgICBwcmVtaXVtVXNlcj17cHJlbWl1bVVzZXJ9XG4gICAgICAgICAgICAgIHRlYW1zPXt0ZWFtc31cbiAgICAgICAgICAgICAga2V5cz17a2V5c31cbiAgICAgICAgICAgICAgc2V0VXNlclJvbGU9e3NldFVzZXJSb2xlfVxuICAgICAgICAgICAgICB1c2VyRW1haWw9e3VzZXJFbWFpbH1cbiAgICAgICAgICAgICAgc2V0VXNlckVtYWlsPXtzZXRVc2VyRW1haWx9XG4gICAgICAgICAgICAgIHNldFRlYW1zPXtzZXRUZWFtc31cbiAgICAgICAgICAgICAgc2V0S2V5cz17c2V0S2V5c31cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKSA6IHBhZ2UgPT0gXCJtb2RlbHNcIiA/IChcbiAgICAgICAgICAgIDxNb2RlbERhc2hib2FyZFxuICAgICAgICAgICAgICB1c2VySUQ9e3VzZXJJRH1cbiAgICAgICAgICAgICAgdXNlclJvbGU9e3VzZXJSb2xlfVxuICAgICAgICAgICAgICB0b2tlbj17dG9rZW59XG4gICAgICAgICAgICAgIGtleXM9e2tleXN9XG4gICAgICAgICAgICAgIGFjY2Vzc1Rva2VuPXthY2Nlc3NUb2tlbn1cbiAgICAgICAgICAgICAgbW9kZWxEYXRhPXttb2RlbERhdGF9XG4gICAgICAgICAgICAgIHNldE1vZGVsRGF0YT17c2V0TW9kZWxEYXRhfVxuICAgICAgICAgICAgICBwcmVtaXVtVXNlcj17cHJlbWl1bVVzZXJ9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICkgOiBwYWdlID09IFwibGxtLXBsYXlncm91bmRcIiA/IChcbiAgICAgICAgICAgIDxDaGF0VUlcbiAgICAgICAgICAgICAgdXNlcklEPXt1c2VySUR9XG4gICAgICAgICAgICAgIHVzZXJSb2xlPXt1c2VyUm9sZX1cbiAgICAgICAgICAgICAgdG9rZW49e3Rva2VufVxuICAgICAgICAgICAgICBhY2Nlc3NUb2tlbj17YWNjZXNzVG9rZW59XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICkgOiBwYWdlID09IFwidXNlcnNcIiA/IChcbiAgICAgICAgICAgIDxWaWV3VXNlckRhc2hib2FyZFxuICAgICAgICAgICAgICB1c2VySUQ9e3VzZXJJRH1cbiAgICAgICAgICAgICAgdXNlclJvbGU9e3VzZXJSb2xlfVxuICAgICAgICAgICAgICB0b2tlbj17dG9rZW59XG4gICAgICAgICAgICAgIGtleXM9e2tleXN9XG4gICAgICAgICAgICAgIHRlYW1zPXt0ZWFtc31cbiAgICAgICAgICAgICAgYWNjZXNzVG9rZW49e2FjY2Vzc1Rva2VufVxuICAgICAgICAgICAgICBzZXRLZXlzPXtzZXRLZXlzfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApIDogcGFnZSA9PSBcInRlYW1zXCIgPyAoXG4gICAgICAgICAgICA8VGVhbXNcbiAgICAgICAgICAgICAgdGVhbXM9e3RlYW1zfVxuICAgICAgICAgICAgICBzZXRUZWFtcz17c2V0VGVhbXN9XG4gICAgICAgICAgICAgIHNlYXJjaFBhcmFtcz17c2VhcmNoUGFyYW1zfVxuICAgICAgICAgICAgICBhY2Nlc3NUb2tlbj17YWNjZXNzVG9rZW59XG4gICAgICAgICAgICAgIHVzZXJJRD17dXNlcklEfVxuICAgICAgICAgICAgICB1c2VyUm9sZT17dXNlclJvbGV9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICkgOiBwYWdlID09IFwiYWRtaW4tcGFuZWxcIiA/IChcbiAgICAgICAgICAgIDxBZG1pblBhbmVsXG4gICAgICAgICAgICAgIHNldFRlYW1zPXtzZXRUZWFtc31cbiAgICAgICAgICAgICAgc2VhcmNoUGFyYW1zPXtzZWFyY2hQYXJhbXN9XG4gICAgICAgICAgICAgIGFjY2Vzc1Rva2VuPXthY2Nlc3NUb2tlbn1cbiAgICAgICAgICAgICAgc2hvd1NTT0Jhbm5lcj17c2hvd1NTT0Jhbm5lcn1cbiAgICAgICAgICAgICAgcHJlbWl1bVVzZXI9e3ByZW1pdW1Vc2VyfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApIDogcGFnZSA9PSBcImFwaV9yZWZcIiA/IChcbiAgICAgICAgICAgIDxBUElSZWYgXG4gICAgICAgICAgICBwcm94eVNldHRpbmdzPXtwcm94eVNldHRpbmdzfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApIDogcGFnZSA9PSBcInNldHRpbmdzXCIgPyAoXG4gICAgICAgICAgICA8U2V0dGluZ3NcbiAgICAgICAgICAgICAgdXNlcklEPXt1c2VySUR9XG4gICAgICAgICAgICAgIHVzZXJSb2xlPXt1c2VyUm9sZX1cbiAgICAgICAgICAgICAgYWNjZXNzVG9rZW49e2FjY2Vzc1Rva2VufVxuICAgICAgICAgICAgICBwcmVtaXVtVXNlcj17cHJlbWl1bVVzZXJ9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICkgOiBwYWdlID09IFwiYnVkZ2V0c1wiID8gKFxuICAgICAgICAgICAgPEJ1ZGdldFBhbmVsIGFjY2Vzc1Rva2VuPXthY2Nlc3NUb2tlbn0gLz5cbiAgICAgICAgICApIDogcGFnZSA9PSBcImdlbmVyYWwtc2V0dGluZ3NcIiA/IChcbiAgICAgICAgICAgIDxHZW5lcmFsU2V0dGluZ3NcbiAgICAgICAgICAgICAgdXNlcklEPXt1c2VySUR9XG4gICAgICAgICAgICAgIHVzZXJSb2xlPXt1c2VyUm9sZX1cbiAgICAgICAgICAgICAgYWNjZXNzVG9rZW49e2FjY2Vzc1Rva2VufVxuICAgICAgICAgICAgICBtb2RlbERhdGE9e21vZGVsRGF0YX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKSA6IHBhZ2UgPT0gXCJtb2RlbC1odWJcIiA/IChcbiAgICAgICAgICAgIDxNb2RlbEh1YlxuICAgICAgICAgICAgICBhY2Nlc3NUb2tlbj17YWNjZXNzVG9rZW59XG4gICAgICAgICAgICAgIHB1YmxpY1BhZ2U9e2ZhbHNlfVxuICAgICAgICAgICAgICBwcmVtaXVtVXNlcj17cHJlbWl1bVVzZXJ9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICkgOiBwYWdlID09IFwiY2FjaGluZ1wiID8gKFxuICAgICAgICAgICAgPENhY2hlRGFzaGJvYXJkXG4gICAgICAgICAgICAgIHVzZXJJRD17dXNlcklEfVxuICAgICAgICAgICAgICB1c2VyUm9sZT17dXNlclJvbGV9XG4gICAgICAgICAgICAgIHRva2VuPXt0b2tlbn1cbiAgICAgICAgICAgICAgYWNjZXNzVG9rZW49e2FjY2Vzc1Rva2VufVxuICAgICAgICAgICAgICBwcmVtaXVtVXNlcj17cHJlbWl1bVVzZXJ9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICkgOiBwYWdlID09IFwicGFzcy10aHJvdWdoLXNldHRpbmdzXCIgPyAoXG4gICAgICAgICAgICA8UGFzc1Rocm91Z2hTZXR0aW5nc1xuICAgICAgICAgICAgICB1c2VySUQ9e3VzZXJJRH1cbiAgICAgICAgICAgICAgdXNlclJvbGU9e3VzZXJSb2xlfVxuICAgICAgICAgICAgICBhY2Nlc3NUb2tlbj17YWNjZXNzVG9rZW59XG4gICAgICAgICAgICAgIG1vZGVsRGF0YT17bW9kZWxEYXRhfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApIDogKFxuICAgICAgICAgICAgPFVzYWdlXG4gICAgICAgICAgICAgIHVzZXJJRD17dXNlcklEfVxuICAgICAgICAgICAgICB1c2VyUm9sZT17dXNlclJvbGV9XG4gICAgICAgICAgICAgIHRva2VuPXt0b2tlbn1cbiAgICAgICAgICAgICAgYWNjZXNzVG9rZW49e2FjY2Vzc1Rva2VufVxuICAgICAgICAgICAgICBrZXlzPXtrZXlzfVxuICAgICAgICAgICAgICBwcmVtaXVtVXNlcj17cHJlbWl1bVVzZXJ9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+ICAgICAgICAgXG4gICAgICAgIClcbiAgICAgIH1cbiAgICAgIFxuICAgIDwvU3VzcGVuc2U+XG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBDcmVhdGVLZXlQYWdlO1xuIl0sIm5hbWVzIjpbIlJlYWN0IiwiU3VzcGVuc2UiLCJ1c2VFZmZlY3QiLCJ1c2VTdGF0ZSIsInVzZVNlYXJjaFBhcmFtcyIsIk5hdmJhciIsIlVzZXJEYXNoYm9hcmQiLCJNb2RlbERhc2hib2FyZCIsIlZpZXdVc2VyRGFzaGJvYXJkIiwiVGVhbXMiLCJBZG1pblBhbmVsIiwiU2V0dGluZ3MiLCJHZW5lcmFsU2V0dGluZ3MiLCJQYXNzVGhyb3VnaFNldHRpbmdzIiwiQnVkZ2V0UGFuZWwiLCJNb2RlbEh1YiIsIkFQSVJlZiIsIkNoYXRVSSIsIlNpZGViYXIiLCJVc2FnZSIsIkNhY2hlRGFzaGJvYXJkIiwiand0RGVjb2RlIiwiVHlwb2dyYXBoeSIsInNldEdsb2JhbExpdGVsbG1IZWFkZXJOYW1lIiwiZ2V0Q29va2llIiwibmFtZSIsImNvbnNvbGUiLCJsb2ciLCJkb2N1bWVudCIsImNvb2tpZSIsImNvb2tpZVZhbHVlIiwic3BsaXQiLCJmaW5kIiwicm93Iiwic3RhcnRzV2l0aCIsImZvcm1hdFVzZXJSb2xlIiwidXNlclJvbGUiLCJ0b0xvd2VyQ2FzZSIsImxlbmd0aCIsIkNyZWF0ZUtleVBhZ2UiLCJUaXRsZSIsIlBhcmFncmFwaCIsInNldFVzZXJSb2xlIiwicHJlbWl1bVVzZXIiLCJzZXRQcmVtaXVtVXNlciIsInVzZXJFbWFpbCIsInNldFVzZXJFbWFpbCIsInRlYW1zIiwic2V0VGVhbXMiLCJrZXlzIiwic2V0S2V5cyIsInByb3h5U2V0dGluZ3MiLCJzZXRQcm94eVNldHRpbmdzIiwiUFJPWFlfQkFTRV9VUkwiLCJQUk9YWV9MT0dPVVRfVVJMIiwic2hvd1NTT0Jhbm5lciIsInNldFNob3dTU09CYW5uZXIiLCJzZWFyY2hQYXJhbXMiLCJtb2RlbERhdGEiLCJzZXRNb2RlbERhdGEiLCJkYXRhIiwidXNlcklEIiwiZ2V0IiwiaW52aXRhdGlvbl9pZCIsInRva2VuIiwicGFnZSIsInNldFBhZ2UiLCJsb2NhbFN0b3JhZ2UiLCJnZXRJdGVtIiwic2V0SXRlbSIsImFjY2Vzc1Rva2VuIiwic2V0QWNjZXNzVG9rZW4iLCJkZWNvZGVkIiwia2V5IiwidXNlcl9yb2xlIiwiZm9ybWF0dGVkVXNlclJvbGUiLCJ1c2VyX2VtYWlsIiwibG9naW5fbWV0aG9kIiwicHJlbWl1bV91c2VyIiwiYXV0aF9oZWFkZXJfbmFtZSIsImZhbGxiYWNrIiwiZGl2IiwiY2xhc3NOYW1lIiwiZGVmYXVsdFNlbGVjdGVkS2V5IiwicHVibGljUGFnZSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./src/app/page.tsx\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./src/components/leftnav.tsx":
|
||
/*!************************************!*\
|
||
!*** ./src/components/leftnav.tsx ***!
|
||
\************************************/
|
||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/jsx-dev-runtime.js\");\n/* harmony import */ var _barrel_optimize_names_Layout_Menu_antd__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! __barrel_optimize__?names=Layout,Menu!=!antd */ \"(app-pages-browser)/./node_modules/antd/es/layout/index.js\");\n/* harmony import */ var _barrel_optimize_names_Layout_Menu_antd__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! __barrel_optimize__?names=Layout,Menu!=!antd */ \"(app-pages-browser)/./node_modules/antd/es/menu/index.js\");\n/* harmony import */ var _barrel_optimize_names_Text_tremor_react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! __barrel_optimize__?names=Text!=!@tremor/react */ \"(app-pages-browser)/__barrel_optimize__?names=Text!=!./node_modules/@tremor/react/dist/index.js\");\n\n\n\nconst { Sider } = _barrel_optimize_names_Layout_Menu_antd__WEBPACK_IMPORTED_MODULE_2__[\"default\"];\nconst old_admin_roles = [\n \"Admin\",\n \"Admin Viewer\"\n];\nconst v2_admin_role_names = [\n \"proxy_admin\",\n \"proxy_admin_viewer\",\n \"org_admin\"\n];\nconst all_admin_roles = [\n ...old_admin_roles,\n ...v2_admin_role_names\n];\nconst rolesAllowedToSeeUsage = [\n \"Admin\",\n \"Admin Viewer\",\n \"Internal User\",\n \"Internal Viewer\"\n];\n// Note: If a menu item does not have a role, it is visible to all roles.\nconst menuItems = [\n {\n key: \"1\",\n page: \"api-keys\",\n label: \"Virtual Keys\"\n },\n {\n key: \"3\",\n page: \"llm-playground\",\n label: \"Test Key\"\n },\n {\n key: \"2\",\n page: \"models\",\n label: \"Models\",\n roles: all_admin_roles\n },\n {\n key: \"4\",\n page: \"usage\",\n label: \"Usage\"\n },\n {\n key: \"6\",\n page: \"teams\",\n label: \"Teams\",\n roles: all_admin_roles\n },\n {\n key: \"5\",\n page: \"users\",\n label: \"Internal Users\",\n roles: all_admin_roles\n },\n {\n key: \"8\",\n page: \"settings\",\n label: \"Logging & Alerts\",\n roles: all_admin_roles\n },\n {\n key: \"9\",\n page: \"caching\",\n label: \"Caching\",\n roles: all_admin_roles\n },\n {\n key: \"10\",\n page: \"budgets\",\n label: \"Budgets\",\n roles: all_admin_roles\n },\n {\n key: \"11\",\n page: \"general-settings\",\n label: \"Router Settings\",\n roles: all_admin_roles\n },\n {\n key: \"12\",\n page: \"pass-through-settings\",\n label: \"Pass-Through\",\n roles: all_admin_roles\n },\n {\n key: \"13\",\n page: \"admin-panel\",\n label: \"Admin Settings\",\n roles: all_admin_roles\n },\n {\n key: \"14\",\n page: \"api_ref\",\n label: \"API Reference\"\n },\n {\n key: \"16\",\n page: \"model-hub\",\n label: \"Model Hub\"\n }\n];\n// The Sidebar component can now be simplified to:\nconst Sidebar = (param)=>{\n let { setPage, userRole, defaultSelectedKey } = param;\n // Find the menu item that matches the default page to get its key\n const selectedMenuItem = menuItems.find((item)=>item.page === defaultSelectedKey);\n const selectedMenuKey = (selectedMenuItem === null || selectedMenuItem === void 0 ? void 0 : selectedMenuItem.key) || \"1\";\n const filteredMenuItems = menuItems.filter((item)=>!item.roles || item.roles.includes(userRole));\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Layout_Menu_antd__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n style: {\n minHeight: \"100vh\",\n maxWidth: userRole === \"Admin Viewer\" ? \"120px\" : \"145px\"\n },\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(Sider, {\n width: userRole === \"Admin Viewer\" ? 120 : 145,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Layout_Menu_antd__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n mode: \"inline\",\n selectedKeys: [\n selectedMenuKey\n ],\n style: {\n height: \"100%\",\n borderRight: 0\n },\n children: filteredMenuItems.map((item)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Layout_Menu_antd__WEBPACK_IMPORTED_MODULE_3__[\"default\"].Item, {\n onClick: ()=>setPage(item.page),\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Text_tremor_react__WEBPACK_IMPORTED_MODULE_1__.Text, {\n children: item.label\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/leftnav.tsx\",\n lineNumber: 71,\n columnNumber: 15\n }, undefined)\n }, item.key, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/leftnav.tsx\",\n lineNumber: 70,\n columnNumber: 13\n }, undefined))\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/leftnav.tsx\",\n lineNumber: 64,\n columnNumber: 9\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/leftnav.tsx\",\n lineNumber: 63,\n columnNumber: 7\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/leftnav.tsx\",\n lineNumber: 62,\n columnNumber: 5\n }, undefined);\n};\n_c = Sidebar;\n/* harmony default export */ __webpack_exports__[\"default\"] = (Sidebar);\nvar _c;\n$RefreshReg$(_c, \"Sidebar\");\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL3NyYy9jb21wb25lbnRzL2xlZnRuYXYudHN4IiwibWFwcGluZ3MiOiI7Ozs7OztBQUFvQztBQUdDO0FBRXJDLE1BQU0sRUFBRUcsS0FBSyxFQUFFLEdBQUdILCtFQUFNQTtBQWlCeEIsTUFBTUksa0JBQWtCO0lBQUM7SUFBUztDQUFlO0FBQ2pELE1BQU1DLHNCQUFzQjtJQUFDO0lBQWU7SUFBc0I7Q0FBWTtBQUM5RSxNQUFNQyxrQkFBa0I7T0FBSUY7T0FBb0JDO0NBQW9CO0FBQ3BFLE1BQU1FLHlCQUF5QjtJQUFDO0lBQVM7SUFBZ0I7SUFBaUI7Q0FBa0I7QUFHNUYseUVBQXlFO0FBQ3pFLE1BQU1DLFlBQXdCO0lBQzVCO1FBQUVDLEtBQUs7UUFBS0MsTUFBTTtRQUFZQyxPQUFPO0lBQWU7SUFDcEQ7UUFBRUYsS0FBSztRQUFLQyxNQUFNO1FBQWtCQyxPQUFPO0lBQVc7SUFDdEQ7UUFBRUYsS0FBSztRQUFLQyxNQUFNO1FBQVVDLE9BQU87UUFBVUMsT0FBT047SUFBZ0I7SUFDcEU7UUFBRUcsS0FBSztRQUFLQyxNQUFNO1FBQVNDLE9BQU87SUFBTztJQUN6QztRQUFFRixLQUFLO1FBQUtDLE1BQU07UUFBU0MsT0FBTztRQUFTQyxPQUFPTjtJQUFnQjtJQUNsRTtRQUFFRyxLQUFLO1FBQUtDLE1BQU07UUFBU0MsT0FBTztRQUFrQkMsT0FBT047SUFBZ0I7SUFDM0U7UUFBRUcsS0FBSztRQUFLQyxNQUFNO1FBQVlDLE9BQU87UUFBb0JDLE9BQU9OO0lBQWdCO0lBQ2hGO1FBQUVHLEtBQUs7UUFBS0MsTUFBTTtRQUFXQyxPQUFPO1FBQVdDLE9BQU9OO0lBQWdCO0lBQ3RFO1FBQUVHLEtBQUs7UUFBTUMsTUFBTTtRQUFXQyxPQUFPO1FBQVdDLE9BQU9OO0lBQWdCO0lBQ3ZFO1FBQUVHLEtBQUs7UUFBTUMsTUFBTTtRQUFvQkMsT0FBTztRQUFtQkMsT0FBT047SUFBZ0I7SUFDeEY7UUFBRUcsS0FBSztRQUFNQyxNQUFNO1FBQXlCQyxPQUFPO1FBQWdCQyxPQUFPTjtJQUFnQjtJQUMxRjtRQUFFRyxLQUFLO1FBQU1DLE1BQU07UUFBZUMsT0FBTztRQUFrQkMsT0FBT047SUFBZ0I7SUFDbEY7UUFBRUcsS0FBSztRQUFNQyxNQUFNO1FBQVdDLE9BQU87SUFBZ0I7SUFDckQ7UUFBRUYsS0FBSztRQUFNQyxNQUFNO1FBQWFDLE9BQU87SUFBWTtDQUNwRDtBQUVELGtEQUFrRDtBQUNsRCxNQUFNRSxVQUFrQztRQUFDLEVBQ3ZDQyxPQUFPLEVBQ1BDLFFBQVEsRUFDUkMsa0JBQWtCLEVBQ25CO0lBQ0Msa0VBQWtFO0lBQ2xFLE1BQU1DLG1CQUFtQlQsVUFBVVUsSUFBSSxDQUFDQyxDQUFBQSxPQUFRQSxLQUFLVCxJQUFJLEtBQUtNO0lBQzlELE1BQU1JLGtCQUFrQkgsQ0FBQUEsNkJBQUFBLHVDQUFBQSxpQkFBa0JSLEdBQUcsS0FBSTtJQUVqRCxNQUFNWSxvQkFBb0JiLFVBQVVjLE1BQU0sQ0FBQ0gsQ0FBQUEsT0FDekMsQ0FBQ0EsS0FBS1AsS0FBSyxJQUFJTyxLQUFLUCxLQUFLLENBQUNXLFFBQVEsQ0FBQ1I7SUFHckMscUJBQ0UsOERBQUNmLCtFQUFNQTtRQUFDd0IsT0FBTztZQUFFQyxXQUFXO1lBQVNDLFVBQVVYLGFBQWEsaUJBQWlCLFVBQVU7UUFBUTtrQkFDN0YsNEVBQUNaO1lBQU13QixPQUFPWixhQUFhLGlCQUFpQixNQUFNO3NCQUNoRCw0RUFBQ2QsK0VBQUlBO2dCQUNIMkIsTUFBSztnQkFDTEMsY0FBYztvQkFBQ1Q7aUJBQWdCO2dCQUMvQkksT0FBTztvQkFBRU0sUUFBUTtvQkFBUUMsYUFBYTtnQkFBRTswQkFFdkNWLGtCQUFrQlcsR0FBRyxDQUFDYixDQUFBQSxxQkFDckIsOERBQUNsQiwrRUFBSUEsQ0FBQ2dDLElBQUk7d0JBQWdCQyxTQUFTLElBQU1wQixRQUFRSyxLQUFLVCxJQUFJO2tDQUN4RCw0RUFBQ1IsMEVBQUlBO3NDQUFFaUIsS0FBS1IsS0FBSzs7Ozs7O3VCQURIUSxLQUFLVixHQUFHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVFwQztLQTlCTUk7QUFnQ04sK0RBQWVBLE9BQU9BLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vc3JjL2NvbXBvbmVudHMvbGVmdG5hdi50c3g/ZGQ5OCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMYXlvdXQsIE1lbnUgfSBmcm9tIFwiYW50ZFwiO1xuaW1wb3J0IExpbmsgZnJvbSBcIm5leHQvbGlua1wiO1xuaW1wb3J0IHsgTGlzdCB9IGZyb20gXCJwb3N0Y3NzL2xpYi9saXN0XCI7XG5pbXBvcnQgeyBUZXh0IH0gZnJvbSBcIkB0cmVtb3IvcmVhY3RcIjtcblxuY29uc3QgeyBTaWRlciB9ID0gTGF5b3V0O1xuXG4vLyBEZWZpbmUgdGhlIHByb3BzIHR5cGVcbmludGVyZmFjZSBTaWRlYmFyUHJvcHMge1xuICBzZXRQYWdlOiBSZWFjdC5EaXNwYXRjaDxSZWFjdC5TZXRTdGF0ZUFjdGlvbjxzdHJpbmc+PjtcbiAgdXNlclJvbGU6IHN0cmluZztcbiAgZGVmYXVsdFNlbGVjdGVkS2V5OiBzdHJpbmc7XG59XG5cbi8vIENyZWF0ZSBhIG1vcmUgY29tcHJlaGVuc2l2ZSBtZW51IGl0ZW0gY29uZmlndXJhdGlvblxuaW50ZXJmYWNlIE1lbnVJdGVtIHtcbiAga2V5OiBzdHJpbmc7XG4gIHBhZ2U6IHN0cmluZztcbiAgbGFiZWw6IHN0cmluZztcbiAgcm9sZXM/OiBzdHJpbmdbXTtcbn1cblxuY29uc3Qgb2xkX2FkbWluX3JvbGVzID0gW1wiQWRtaW5cIiwgXCJBZG1pbiBWaWV3ZXJcIl07XG5jb25zdCB2Ml9hZG1pbl9yb2xlX25hbWVzID0gW1wicHJveHlfYWRtaW5cIiwgXCJwcm94eV9hZG1pbl92aWV3ZXJcIiwgXCJvcmdfYWRtaW5cIl07XG5jb25zdCBhbGxfYWRtaW5fcm9sZXMgPSBbLi4ub2xkX2FkbWluX3JvbGVzLCAuLi52Ml9hZG1pbl9yb2xlX25hbWVzXTtcbmNvbnN0IHJvbGVzQWxsb3dlZFRvU2VlVXNhZ2UgPSBbXCJBZG1pblwiLCBcIkFkbWluIFZpZXdlclwiLCBcIkludGVybmFsIFVzZXJcIiwgXCJJbnRlcm5hbCBWaWV3ZXJcIl07XG5cblxuLy8gTm90ZTogSWYgYSBtZW51IGl0ZW0gZG9lcyBub3QgaGF2ZSBhIHJvbGUsIGl0IGlzIHZpc2libGUgdG8gYWxsIHJvbGVzLlxuY29uc3QgbWVudUl0ZW1zOiBNZW51SXRlbVtdID0gW1xuICB7IGtleTogXCIxXCIsIHBhZ2U6IFwiYXBpLWtleXNcIiwgbGFiZWw6IFwiVmlydHVhbCBLZXlzXCIgfSwgLy8gYWxsIHJvbGVzXG4gIHsga2V5OiBcIjNcIiwgcGFnZTogXCJsbG0tcGxheWdyb3VuZFwiLCBsYWJlbDogXCJUZXN0IEtleVwiIH0sIC8vIGFsbCByb2xlc1xuICB7IGtleTogXCIyXCIsIHBhZ2U6IFwibW9kZWxzXCIsIGxhYmVsOiBcIk1vZGVsc1wiLCByb2xlczogYWxsX2FkbWluX3JvbGVzIH0sXG4gIHsga2V5OiBcIjRcIiwgcGFnZTogXCJ1c2FnZVwiLCBsYWJlbDogXCJVc2FnZVwifSwgLy8gYWxsIHJvbGVzXG4gIHsga2V5OiBcIjZcIiwgcGFnZTogXCJ0ZWFtc1wiLCBsYWJlbDogXCJUZWFtc1wiLCByb2xlczogYWxsX2FkbWluX3JvbGVzIH0sXG4gIHsga2V5OiBcIjVcIiwgcGFnZTogXCJ1c2Vyc1wiLCBsYWJlbDogXCJJbnRlcm5hbCBVc2Vyc1wiLCByb2xlczogYWxsX2FkbWluX3JvbGVzIH0sXG4gIHsga2V5OiBcIjhcIiwgcGFnZTogXCJzZXR0aW5nc1wiLCBsYWJlbDogXCJMb2dnaW5nICYgQWxlcnRzXCIsIHJvbGVzOiBhbGxfYWRtaW5fcm9sZXMgfSxcbiAgeyBrZXk6IFwiOVwiLCBwYWdlOiBcImNhY2hpbmdcIiwgbGFiZWw6IFwiQ2FjaGluZ1wiLCByb2xlczogYWxsX2FkbWluX3JvbGVzIH0sXG4gIHsga2V5OiBcIjEwXCIsIHBhZ2U6IFwiYnVkZ2V0c1wiLCBsYWJlbDogXCJCdWRnZXRzXCIsIHJvbGVzOiBhbGxfYWRtaW5fcm9sZXMgfSxcbiAgeyBrZXk6IFwiMTFcIiwgcGFnZTogXCJnZW5lcmFsLXNldHRpbmdzXCIsIGxhYmVsOiBcIlJvdXRlciBTZXR0aW5nc1wiLCByb2xlczogYWxsX2FkbWluX3JvbGVzIH0sXG4gIHsga2V5OiBcIjEyXCIsIHBhZ2U6IFwicGFzcy10aHJvdWdoLXNldHRpbmdzXCIsIGxhYmVsOiBcIlBhc3MtVGhyb3VnaFwiLCByb2xlczogYWxsX2FkbWluX3JvbGVzIH0sXG4gIHsga2V5OiBcIjEzXCIsIHBhZ2U6IFwiYWRtaW4tcGFuZWxcIiwgbGFiZWw6IFwiQWRtaW4gU2V0dGluZ3NcIiwgcm9sZXM6IGFsbF9hZG1pbl9yb2xlcyB9LFxuICB7IGtleTogXCIxNFwiLCBwYWdlOiBcImFwaV9yZWZcIiwgbGFiZWw6IFwiQVBJIFJlZmVyZW5jZVwiIH0sIC8vIGFsbCByb2xlc1xuICB7IGtleTogXCIxNlwiLCBwYWdlOiBcIm1vZGVsLWh1YlwiLCBsYWJlbDogXCJNb2RlbCBIdWJcIiB9LCAvLyBhbGwgcm9sZXNcbl07XG5cbi8vIFRoZSBTaWRlYmFyIGNvbXBvbmVudCBjYW4gbm93IGJlIHNpbXBsaWZpZWQgdG86XG5jb25zdCBTaWRlYmFyOiBSZWFjdC5GQzxTaWRlYmFyUHJvcHM+ID0gKHtcbiAgc2V0UGFnZSxcbiAgdXNlclJvbGUsXG4gIGRlZmF1bHRTZWxlY3RlZEtleSxcbn0pID0+IHtcbiAgLy8gRmluZCB0aGUgbWVudSBpdGVtIHRoYXQgbWF0Y2hlcyB0aGUgZGVmYXVsdCBwYWdlIHRvIGdldCBpdHMga2V5XG4gIGNvbnN0IHNlbGVjdGVkTWVudUl0ZW0gPSBtZW51SXRlbXMuZmluZChpdGVtID0+IGl0ZW0ucGFnZSA9PT0gZGVmYXVsdFNlbGVjdGVkS2V5KTtcbiAgY29uc3Qgc2VsZWN0ZWRNZW51S2V5ID0gc2VsZWN0ZWRNZW51SXRlbT8ua2V5IHx8IFwiMVwiO1xuXG4gIGNvbnN0IGZpbHRlcmVkTWVudUl0ZW1zID0gbWVudUl0ZW1zLmZpbHRlcihpdGVtID0+IFxuICAgICFpdGVtLnJvbGVzIHx8IGl0ZW0ucm9sZXMuaW5jbHVkZXModXNlclJvbGUpXG4gICk7XG5cbiAgcmV0dXJuIChcbiAgICA8TGF5b3V0IHN0eWxlPXt7IG1pbkhlaWdodDogXCIxMDB2aFwiLCBtYXhXaWR0aDogdXNlclJvbGUgPT09IFwiQWRtaW4gVmlld2VyXCIgPyBcIjEyMHB4XCIgOiBcIjE0NXB4XCIgfX0+XG4gICAgICA8U2lkZXIgd2lkdGg9e3VzZXJSb2xlID09PSBcIkFkbWluIFZpZXdlclwiID8gMTIwIDogMTQ1fT5cbiAgICAgICAgPE1lbnVcbiAgICAgICAgICBtb2RlPVwiaW5saW5lXCJcbiAgICAgICAgICBzZWxlY3RlZEtleXM9e1tzZWxlY3RlZE1lbnVLZXldfVxuICAgICAgICAgIHN0eWxlPXt7IGhlaWdodDogXCIxMDAlXCIsIGJvcmRlclJpZ2h0OiAwIH19XG4gICAgICAgID5cbiAgICAgICAgICB7ZmlsdGVyZWRNZW51SXRlbXMubWFwKGl0ZW0gPT4gKFxuICAgICAgICAgICAgPE1lbnUuSXRlbSBrZXk9e2l0ZW0ua2V5fSBvbkNsaWNrPXsoKSA9PiBzZXRQYWdlKGl0ZW0ucGFnZSl9PlxuICAgICAgICAgICAgICA8VGV4dD57aXRlbS5sYWJlbH08L1RleHQ+XG4gICAgICAgICAgICA8L01lbnUuSXRlbT5cbiAgICAgICAgICApKX1cbiAgICAgICAgPC9NZW51PlxuICAgICAgPC9TaWRlcj5cbiAgICA8L0xheW91dD5cbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFNpZGViYXI7XG4iXSwibmFtZXMiOlsiTGF5b3V0IiwiTWVudSIsIlRleHQiLCJTaWRlciIsIm9sZF9hZG1pbl9yb2xlcyIsInYyX2FkbWluX3JvbGVfbmFtZXMiLCJhbGxfYWRtaW5fcm9sZXMiLCJyb2xlc0FsbG93ZWRUb1NlZVVzYWdlIiwibWVudUl0ZW1zIiwia2V5IiwicGFnZSIsImxhYmVsIiwicm9sZXMiLCJTaWRlYmFyIiwic2V0UGFnZSIsInVzZXJSb2xlIiwiZGVmYXVsdFNlbGVjdGVkS2V5Iiwic2VsZWN0ZWRNZW51SXRlbSIsImZpbmQiLCJpdGVtIiwic2VsZWN0ZWRNZW51S2V5IiwiZmlsdGVyZWRNZW51SXRlbXMiLCJmaWx0ZXIiLCJpbmNsdWRlcyIsInN0eWxlIiwibWluSGVpZ2h0IiwibWF4V2lkdGgiLCJ3aWR0aCIsIm1vZGUiLCJzZWxlY3RlZEtleXMiLCJoZWlnaHQiLCJib3JkZXJSaWdodCIsIm1hcCIsIkl0ZW0iLCJvbkNsaWNrIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./src/components/leftnav.tsx\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./src/components/view_key_table.tsx":
|
||
/*!*******************************************!*\
|
||
!*** ./src/components/view_key_table.tsx ***!
|
||
\*******************************************/
|
||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/jsx-dev-runtime.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _networking__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./networking */ \"(app-pages-browser)/./src/components/networking.tsx\");\n/* harmony import */ var _barrel_optimize_names_add_date_fns__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! __barrel_optimize__?names=add!=!date-fns */ \"(app-pages-browser)/./node_modules/date-fns/esm/add/index.js\");\n/* harmony import */ var _heroicons_react_outline__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @heroicons/react/outline */ \"(app-pages-browser)/./node_modules/@heroicons/react/outline/esm/InformationCircleIcon.js\");\n/* harmony import */ var _heroicons_react_outline__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! @heroicons/react/outline */ \"(app-pages-browser)/./node_modules/@heroicons/react/outline/esm/PencilAltIcon.js\");\n/* harmony import */ var _heroicons_react_outline__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! @heroicons/react/outline */ \"(app-pages-browser)/./node_modules/@heroicons/react/outline/esm/RefreshIcon.js\");\n/* harmony import */ var _heroicons_react_outline__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! @heroicons/react/outline */ \"(app-pages-browser)/./node_modules/@heroicons/react/outline/esm/TrashIcon.js\");\n/* harmony import */ var _barrel_optimize_names_Badge_Button_Card_Col_Grid_Icon_Table_TableBody_TableCell_TableHead_TableHeaderCell_TableRow_Text_TextInput_Title_tremor_react__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! __barrel_optimize__?names=Badge,Button,Card,Col,Grid,Icon,Table,TableBody,TableCell,TableHead,TableHeaderCell,TableRow,Text,TextInput,Title!=!@tremor/react */ \"(app-pages-browser)/__barrel_optimize__?names=Badge,Button,Card,Col,Grid,Icon,Table,TableBody,TableCell,TableHead,TableHeaderCell,TableRow,Text,TextInput,Title!=!./node_modules/@tremor/react/dist/index.js\");\n/* harmony import */ var _barrel_optimize_names_Select_SelectItem_tremor_react__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! __barrel_optimize__?names=Select,SelectItem!=!@tremor/react */ \"(app-pages-browser)/__barrel_optimize__?names=Select,SelectItem!=!./node_modules/@tremor/react/dist/index.js\");\n/* harmony import */ var _barrel_optimize_names_Button_Form_InputNumber_Modal_Select_message_antd__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! __barrel_optimize__?names=Button,Form,InputNumber,Modal,Select,message!=!antd */ \"(app-pages-browser)/./node_modules/antd/es/select/index.js\");\n/* harmony import */ var _barrel_optimize_names_Button_Form_InputNumber_Modal_Select_message_antd__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! __barrel_optimize__?names=Button,Form,InputNumber,Modal,Select,message!=!antd */ \"(app-pages-browser)/./node_modules/antd/es/form/index.js\");\n/* harmony import */ var _barrel_optimize_names_Button_Form_InputNumber_Modal_Select_message_antd__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! __barrel_optimize__?names=Button,Form,InputNumber,Modal,Select,message!=!antd */ \"(app-pages-browser)/./node_modules/antd/es/message/index.js\");\n/* harmony import */ var _barrel_optimize_names_Button_Form_InputNumber_Modal_Select_message_antd__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! __barrel_optimize__?names=Button,Form,InputNumber,Modal,Select,message!=!antd */ \"(app-pages-browser)/./node_modules/antd/es/modal/index.js\");\n/* harmony import */ var _barrel_optimize_names_Button_Form_InputNumber_Modal_Select_message_antd__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! __barrel_optimize__?names=Button,Form,InputNumber,Modal,Select,message!=!antd */ \"(app-pages-browser)/./node_modules/antd/es/input-number/index.js\");\n/* harmony import */ var _barrel_optimize_names_Button_Form_InputNumber_Modal_Select_message_antd__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! __barrel_optimize__?names=Button,Form,InputNumber,Modal,Select,message!=!antd */ \"(app-pages-browser)/./node_modules/antd/es/button/index.js\");\n/* harmony import */ var react_copy_to_clipboard__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! react-copy-to-clipboard */ \"(app-pages-browser)/./node_modules/react-copy-to-clipboard/lib/index.js\");\n/* harmony import */ var react_copy_to_clipboard__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(react_copy_to_clipboard__WEBPACK_IMPORTED_MODULE_5__);\n/* __next_internal_client_entry_do_not_use__ default auto */ \nvar _s = $RefreshSig$();\n\n\n\n\n\n\n\n\n\nconst { Option } = _barrel_optimize_names_Button_Form_InputNumber_Modal_Select_message_antd__WEBPACK_IMPORTED_MODULE_6__[\"default\"];\nconst isLocal = \"development\" === \"development\";\nconst proxyBaseUrl = isLocal ? \"http://localhost:4000\" : null;\nif (isLocal != true) {\n console.log = function() {};\n}\nconst ViewKeyTable = (param)=>{\n let { userID, userRole, accessToken, selectedTeam, data, setData, teams, premiumUser } = param;\n _s();\n var _s1 = $RefreshSig$(), _s2 = $RefreshSig$();\n const [isButtonClicked, setIsButtonClicked] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n const [isDeleteModalOpen, setIsDeleteModalOpen] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n const [keyToDelete, setKeyToDelete] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);\n const [selectedItem, setSelectedItem] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);\n const [spendData, setSpendData] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);\n const [predictedSpendString, setPredictedSpendString] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(\"\");\n const [editModalVisible, setEditModalVisible] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n const [infoDialogVisible, setInfoDialogVisible] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n const [selectedToken, setSelectedToken] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);\n const [userModels, setUserModels] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)([]);\n const initialKnownTeamIDs = new Set();\n const [modelLimitModalVisible, setModelLimitModalVisible] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n const [regenerateDialogVisible, setRegenerateDialogVisible] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n const [regeneratedKey, setRegeneratedKey] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);\n const [regenerateFormData, setRegenerateFormData] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);\n const [regenerateForm] = _barrel_optimize_names_Button_Form_InputNumber_Modal_Select_message_antd__WEBPACK_IMPORTED_MODULE_7__[\"default\"].useForm();\n const [newExpiryTime, setNewExpiryTime] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);\n const [knownTeamIDs, setKnownTeamIDs] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(initialKnownTeamIDs);\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{\n const calculateNewExpiryTime = (duration)=>{\n if (!duration) {\n return null;\n }\n try {\n const now = new Date();\n let newExpiry;\n if (duration.endsWith(\"s\")) {\n newExpiry = (0,_barrel_optimize_names_add_date_fns__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(now, {\n seconds: parseInt(duration)\n });\n } else if (duration.endsWith(\"h\")) {\n newExpiry = (0,_barrel_optimize_names_add_date_fns__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(now, {\n hours: parseInt(duration)\n });\n } else if (duration.endsWith(\"d\")) {\n newExpiry = (0,_barrel_optimize_names_add_date_fns__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(now, {\n days: parseInt(duration)\n });\n } else {\n throw new Error(\"Invalid duration format\");\n }\n return newExpiry.toLocaleString(\"en-US\", {\n year: \"numeric\",\n month: \"numeric\",\n day: \"numeric\",\n hour: \"numeric\",\n minute: \"numeric\",\n second: \"numeric\",\n hour12: true\n });\n } catch (error) {\n return null;\n }\n };\n console.log(\"in calculateNewExpiryTime for selectedToken\", selectedToken);\n // When a new duration is entered\n if (regenerateFormData === null || regenerateFormData === void 0 ? void 0 : regenerateFormData.duration) {\n setNewExpiryTime(calculateNewExpiryTime(regenerateFormData.duration));\n } else {\n setNewExpiryTime(null);\n }\n console.log(\"calculateNewExpiryTime:\", newExpiryTime);\n }, [\n selectedToken,\n regenerateFormData === null || regenerateFormData === void 0 ? void 0 : regenerateFormData.duration\n ]);\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{\n const fetchUserModels = async ()=>{\n try {\n if (userID === null) {\n return;\n }\n if (accessToken !== null && userRole !== null) {\n const model_available = await (0,_networking__WEBPACK_IMPORTED_MODULE_2__.modelAvailableCall)(accessToken, userID, userRole);\n let available_model_names = model_available[\"data\"].map((element)=>element.id);\n console.log(\"available_model_names:\", available_model_names);\n setUserModels(available_model_names);\n }\n } catch (error) {\n console.error(\"Error fetching user models:\", error);\n }\n };\n fetchUserModels();\n }, [\n accessToken,\n userID,\n userRole\n ]);\n const handleModelLimitClick = (token)=>{\n setSelectedToken(token);\n setModelLimitModalVisible(true);\n };\n const handleModelLimitSubmit = async (updatedMetadata)=>{\n if (accessToken == null || selectedToken == null) {\n return;\n }\n const formValues = {\n ...selectedToken,\n metadata: updatedMetadata,\n key: selectedToken.token\n };\n try {\n let newKeyValues = await (0,_networking__WEBPACK_IMPORTED_MODULE_2__.keyUpdateCall)(accessToken, formValues);\n console.log(\"Model limits updated:\", newKeyValues);\n // Update the keys with the updated key\n if (data) {\n const updatedData = data.map((key)=>key.token === selectedToken.token ? newKeyValues : key);\n setData(updatedData);\n }\n _barrel_optimize_names_Button_Form_InputNumber_Modal_Select_message_antd__WEBPACK_IMPORTED_MODULE_9__[\"default\"].success(\"Model-specific limits updated successfully\");\n } catch (error) {\n console.error(\"Error updating model-specific limits:\", error);\n _barrel_optimize_names_Button_Form_InputNumber_Modal_Select_message_antd__WEBPACK_IMPORTED_MODULE_9__[\"default\"].error(\"Failed to update model-specific limits\");\n }\n setModelLimitModalVisible(false);\n setSelectedToken(null);\n };\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{\n if (teams) {\n const teamIDSet = new Set();\n teams.forEach((team, index)=>{\n const team_obj = team.team_id;\n teamIDSet.add(team_obj);\n });\n setKnownTeamIDs(teamIDSet);\n }\n }, [\n teams\n ]);\n const EditKeyModal = (param)=>{\n let { visible, onCancel, token, onSubmit } = param;\n _s1();\n const [form] = _barrel_optimize_names_Button_Form_InputNumber_Modal_Select_message_antd__WEBPACK_IMPORTED_MODULE_7__[\"default\"].useForm();\n const [keyTeam, setKeyTeam] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(selectedTeam);\n const [errorModels, setErrorModels] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)([]);\n const [errorBudget, setErrorBudget] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n const handleOk = ()=>{\n form.validateFields().then((values)=>{\n // const updatedValues = {...values, team_id: team.team_id};\n // onSubmit(updatedValues);\n form.resetFields();\n }).catch((error)=>{\n console.error(\"Validation failed:\", error);\n });\n };\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Button_Form_InputNumber_Modal_Select_message_antd__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n title: \"Edit Key\",\n visible: visible,\n width: 800,\n footer: null,\n onOk: handleOk,\n onCancel: onCancel,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Button_Form_InputNumber_Modal_Select_message_antd__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n form: form,\n onFinish: handleEditSubmit,\n initialValues: {\n ...token,\n budget_duration: token.budget_duration\n },\n labelCol: {\n span: 8\n },\n wrapperCol: {\n span: 16\n },\n labelAlign: \"left\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Button_Form_InputNumber_Modal_Select_message_antd__WEBPACK_IMPORTED_MODULE_7__[\"default\"].Item, {\n name: \"key_alias\",\n label: \"Key Alias\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Badge_Button_Card_Col_Grid_Icon_Table_TableBody_TableCell_TableHead_TableHeaderCell_TableRow_Text_TextInput_Title_tremor_react__WEBPACK_IMPORTED_MODULE_3__.TextInput, {}, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 295,\n columnNumber: 19\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 294,\n columnNumber: 17\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Button_Form_InputNumber_Modal_Select_message_antd__WEBPACK_IMPORTED_MODULE_7__[\"default\"].Item, {\n label: \"Models\",\n name: \"models\",\n rules: [\n {\n validator: (rule, value)=>{\n const errorModels = value.filter((model)=>!keyTeam.models.includes(model) && model !== \"all-team-models\" && model !== \"all-proxy-models\" && !keyTeam.models.includes(\"all-proxy-models\"));\n console.log(\"errorModels: \".concat(errorModels));\n if (errorModels.length > 0) {\n return Promise.reject(\"Some models are not part of the new team's models - \".concat(errorModels, \"Team models: \").concat(keyTeam.models));\n } else {\n return Promise.resolve();\n }\n }\n }\n ],\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Button_Form_InputNumber_Modal_Select_message_antd__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n mode: \"multiple\",\n placeholder: \"Select models\",\n style: {\n width: \"100%\"\n },\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(Option, {\n value: \"all-team-models\",\n children: \"All Team Models\"\n }, \"all-team-models\", false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 321,\n columnNumber: 19\n }, undefined),\n keyTeam && keyTeam.models ? keyTeam.models.includes(\"all-proxy-models\") ? userModels.filter((model)=>model !== \"all-proxy-models\").map((model)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(Option, {\n value: model,\n children: model\n }, model, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 327,\n columnNumber: 25\n }, undefined)) : keyTeam.models.map((model)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(Option, {\n value: model,\n children: model\n }, model, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 333,\n columnNumber: 25\n }, undefined)) : userModels.map((model)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(Option, {\n value: model,\n children: model\n }, model, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 340,\n columnNumber: 23\n }, undefined))\n ]\n }, void 0, true, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 316,\n columnNumber: 17\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 298,\n columnNumber: 15\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Button_Form_InputNumber_Modal_Select_message_antd__WEBPACK_IMPORTED_MODULE_7__[\"default\"].Item, {\n className: \"mt-8\",\n label: \"Max Budget (USD)\",\n name: \"max_budget\",\n help: \"Budget cannot exceed team max budget: \".concat((keyTeam === null || keyTeam === void 0 ? void 0 : keyTeam.max_budget) !== null && (keyTeam === null || keyTeam === void 0 ? void 0 : keyTeam.max_budget) !== undefined ? keyTeam === null || keyTeam === void 0 ? void 0 : keyTeam.max_budget : \"unlimited\"),\n rules: [\n {\n validator: async (_, value)=>{\n if (value && keyTeam && keyTeam.max_budget !== null && value > keyTeam.max_budget) {\n console.log(\"keyTeam.max_budget: \".concat(keyTeam.max_budget));\n throw new Error(\"Budget cannot exceed team max budget: $\".concat(keyTeam.max_budget));\n }\n }\n }\n ],\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Button_Form_InputNumber_Modal_Select_message_antd__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {\n step: 0.01,\n precision: 2,\n width: 200\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 363,\n columnNumber: 17\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 347,\n columnNumber: 15\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Button_Form_InputNumber_Modal_Select_message_antd__WEBPACK_IMPORTED_MODULE_7__[\"default\"].Item, {\n className: \"mt-8\",\n label: \"Reset Budget\",\n name: \"budget_duration\",\n help: \"Current Reset Budget: \".concat(token.budget_duration, \", budget will be reset: \").concat(token.budget_reset_at ? new Date(token.budget_reset_at).toLocaleString() : \"Never\"),\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Button_Form_InputNumber_Modal_Select_message_antd__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n placeholder: \"n/a\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Button_Form_InputNumber_Modal_Select_message_antd__WEBPACK_IMPORTED_MODULE_6__[\"default\"].Option, {\n value: \"daily\",\n children: \"daily\"\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 375,\n columnNumber: 19\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Button_Form_InputNumber_Modal_Select_message_antd__WEBPACK_IMPORTED_MODULE_6__[\"default\"].Option, {\n value: \"weekly\",\n children: \"weekly\"\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 376,\n columnNumber: 19\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Button_Form_InputNumber_Modal_Select_message_antd__WEBPACK_IMPORTED_MODULE_6__[\"default\"].Option, {\n value: \"monthly\",\n children: \"monthly\"\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 377,\n columnNumber: 19\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 374,\n columnNumber: 17\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 366,\n columnNumber: 15\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Button_Form_InputNumber_Modal_Select_message_antd__WEBPACK_IMPORTED_MODULE_7__[\"default\"].Item, {\n label: \"token\",\n name: \"token\",\n hidden: true\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 381,\n columnNumber: 15\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Button_Form_InputNumber_Modal_Select_message_antd__WEBPACK_IMPORTED_MODULE_7__[\"default\"].Item, {\n label: \"Team\",\n name: \"team_id\",\n className: \"mt-8\",\n help: \"the team this key belongs to\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Select_SelectItem_tremor_react__WEBPACK_IMPORTED_MODULE_4__.Select, {\n value: token.team_alias,\n children: teams === null || teams === void 0 ? void 0 : teams.map((team_obj, index)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Select_SelectItem_tremor_react__WEBPACK_IMPORTED_MODULE_4__.SelectItem, {\n value: team_obj.team_id,\n onClick: ()=>setKeyTeam(team_obj),\n children: team_obj.team_alias\n }, index, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 394,\n columnNumber: 21\n }, undefined))\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 392,\n columnNumber: 17\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 386,\n columnNumber: 15\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Button_Form_InputNumber_Modal_Select_message_antd__WEBPACK_IMPORTED_MODULE_7__[\"default\"].Item, {\n className: \"mt-8\",\n label: \"TPM Limit (tokens per minute)\",\n name: \"tpm_limit\",\n help: \"tpm_limit cannot exceed team tpm_limit \".concat((keyTeam === null || keyTeam === void 0 ? void 0 : keyTeam.tpm_limit) !== null && (keyTeam === null || keyTeam === void 0 ? void 0 : keyTeam.tpm_limit) !== undefined ? keyTeam === null || keyTeam === void 0 ? void 0 : keyTeam.tpm_limit : \"unlimited\"),\n rules: [\n {\n validator: async (_, value)=>{\n if (value && keyTeam && keyTeam.tpm_limit !== null && value > keyTeam.tpm_limit) {\n console.log(\"keyTeam.tpm_limit: \".concat(keyTeam.tpm_limit));\n throw new Error(\"tpm_limit cannot exceed team max tpm_limit: $\".concat(keyTeam.tpm_limit));\n }\n }\n }\n ],\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Button_Form_InputNumber_Modal_Select_message_antd__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {\n step: 1,\n precision: 1,\n width: 200\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 421,\n columnNumber: 17\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 405,\n columnNumber: 15\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Button_Form_InputNumber_Modal_Select_message_antd__WEBPACK_IMPORTED_MODULE_7__[\"default\"].Item, {\n className: \"mt-8\",\n label: \"RPM Limit (requests per minute)\",\n name: \"rpm_limit\",\n help: \"rpm_limit cannot exceed team max tpm_limit: \".concat((keyTeam === null || keyTeam === void 0 ? void 0 : keyTeam.rpm_limit) !== null && (keyTeam === null || keyTeam === void 0 ? void 0 : keyTeam.rpm_limit) !== undefined ? keyTeam === null || keyTeam === void 0 ? void 0 : keyTeam.rpm_limit : \"unlimited\"),\n rules: [\n {\n validator: async (_, value)=>{\n if (value && keyTeam && keyTeam.rpm_limit !== null && value > keyTeam.rpm_limit) {\n console.log(\"keyTeam.rpm_limit: \".concat(keyTeam.rpm_limit));\n throw new Error(\"rpm_limit cannot exceed team max rpm_limit: $\".concat(keyTeam.rpm_limit));\n }\n }\n }\n ],\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Button_Form_InputNumber_Modal_Select_message_antd__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {\n step: 1,\n precision: 1,\n width: 200\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 439,\n columnNumber: 17\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 423,\n columnNumber: 15\n }, undefined)\n ]\n }, void 0, true),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n style: {\n textAlign: \"right\",\n marginTop: \"10px\"\n },\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Button_Form_InputNumber_Modal_Select_message_antd__WEBPACK_IMPORTED_MODULE_12__[\"default\"], {\n htmlType: \"submit\",\n children: \"Edit Key\"\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 443,\n columnNumber: 13\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 442,\n columnNumber: 11\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 284,\n columnNumber: 9\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 276,\n columnNumber: 9\n }, undefined);\n };\n _s1(EditKeyModal, \"EvUThWZe6LfX32i+bplnx7Ylg1c=\", false, function() {\n return [\n _barrel_optimize_names_Button_Form_InputNumber_Modal_Select_message_antd__WEBPACK_IMPORTED_MODULE_7__[\"default\"].useForm\n ];\n });\n const ModelLimitModal = (param)=>{\n let { visible, onCancel, token, onSubmit, accessToken } = param;\n _s2();\n const [modelLimits, setModelLimits] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)({});\n const [availableModels, setAvailableModels] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)([]);\n const [newModelRow, setNewModelRow] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{\n if (token.metadata) {\n const tpmLimits = token.metadata.model_tpm_limit || {};\n const rpmLimits = token.metadata.model_rpm_limit || {};\n const combinedLimits = {};\n Object.keys({\n ...tpmLimits,\n ...rpmLimits\n }).forEach((model)=>{\n combinedLimits[model] = {\n tpm: tpmLimits[model] || 0,\n rpm: rpmLimits[model] || 0\n };\n });\n setModelLimits(combinedLimits);\n }\n const fetchAvailableModels = async ()=>{\n try {\n const modelDataResponse = await (0,_networking__WEBPACK_IMPORTED_MODULE_2__.modelInfoCall)(accessToken, \"\", \"\");\n const allModelGroups = Array.from(new Set(modelDataResponse.data.map((model)=>model.model_name)));\n setAvailableModels(allModelGroups);\n } catch (error) {\n console.error(\"Error fetching model data:\", error);\n _barrel_optimize_names_Button_Form_InputNumber_Modal_Select_message_antd__WEBPACK_IMPORTED_MODULE_9__[\"default\"].error(\"Failed to fetch available models\");\n }\n };\n fetchAvailableModels();\n }, [\n token,\n accessToken\n ]);\n const handleLimitChange = (model, type, value)=>{\n setModelLimits((prev)=>({\n ...prev,\n [model]: {\n ...prev[model],\n [type]: value || 0\n }\n }));\n };\n const handleAddLimit = ()=>{\n setNewModelRow(\"\");\n };\n const handleModelSelect = (model)=>{\n if (!modelLimits[model]) {\n setModelLimits((prev)=>({\n ...prev,\n [model]: {\n tpm: 0,\n rpm: 0\n }\n }));\n }\n setNewModelRow(null);\n };\n const handleRemoveModel = (model)=>{\n setModelLimits((prev)=>{\n const { [model]: _, ...rest } = prev;\n return rest;\n });\n };\n const handleSubmit = ()=>{\n const updatedMetadata = {\n ...token.metadata,\n model_tpm_limit: Object.fromEntries(Object.entries(modelLimits).map((param)=>{\n let [model, limits] = param;\n return [\n model,\n limits.tpm\n ];\n })),\n model_rpm_limit: Object.fromEntries(Object.entries(modelLimits).map((param)=>{\n let [model, limits] = param;\n return [\n model,\n limits.rpm\n ];\n }))\n };\n onSubmit(updatedMetadata);\n };\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Button_Form_InputNumber_Modal_Select_message_antd__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n title: \"Edit Model-Specific Limits\",\n visible: visible,\n onCancel: onCancel,\n footer: null,\n width: 800,\n children: [\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)(_barrel_optimize_names_Badge_Button_Card_Col_Grid_Icon_Table_TableBody_TableCell_TableHead_TableHeaderCell_TableRow_Text_TextInput_Title_tremor_react__WEBPACK_IMPORTED_MODULE_3__.Table, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Badge_Button_Card_Col_Grid_Icon_Table_TableBody_TableCell_TableHead_TableHeaderCell_TableRow_Text_TextInput_Title_tremor_react__WEBPACK_IMPORTED_MODULE_3__.TableHead, {\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Badge_Button_Card_Col_Grid_Icon_Table_TableBody_TableCell_TableHead_TableHeaderCell_TableRow_Text_TextInput_Title_tremor_react__WEBPACK_IMPORTED_MODULE_3__.TableRow, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Badge_Button_Card_Col_Grid_Icon_Table_TableBody_TableCell_TableHead_TableHeaderCell_TableRow_Text_TextInput_Title_tremor_react__WEBPACK_IMPORTED_MODULE_3__.TableHeaderCell, {\n children: \"Model\"\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 537,\n columnNumber: 17\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Badge_Button_Card_Col_Grid_Icon_Table_TableBody_TableCell_TableHead_TableHeaderCell_TableRow_Text_TextInput_Title_tremor_react__WEBPACK_IMPORTED_MODULE_3__.TableHeaderCell, {\n children: \"TPM Limit\"\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 538,\n columnNumber: 17\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Badge_Button_Card_Col_Grid_Icon_Table_TableBody_TableCell_TableHead_TableHeaderCell_TableRow_Text_TextInput_Title_tremor_react__WEBPACK_IMPORTED_MODULE_3__.TableHeaderCell, {\n children: \"RPM Limit\"\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 539,\n columnNumber: 17\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Badge_Button_Card_Col_Grid_Icon_Table_TableBody_TableCell_TableHead_TableHeaderCell_TableRow_Text_TextInput_Title_tremor_react__WEBPACK_IMPORTED_MODULE_3__.TableHeaderCell, {\n children: \"Actions\"\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 540,\n columnNumber: 17\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 536,\n columnNumber: 15\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 535,\n columnNumber: 13\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Badge_Button_Card_Col_Grid_Icon_Table_TableBody_TableCell_TableHead_TableHeaderCell_TableRow_Text_TextInput_Title_tremor_react__WEBPACK_IMPORTED_MODULE_3__.TableBody, {\n children: [\n Object.entries(modelLimits).map((param)=>{\n let [model, limits] = param;\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Badge_Button_Card_Col_Grid_Icon_Table_TableBody_TableCell_TableHead_TableHeaderCell_TableRow_Text_TextInput_Title_tremor_react__WEBPACK_IMPORTED_MODULE_3__.TableRow, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Badge_Button_Card_Col_Grid_Icon_Table_TableBody_TableCell_TableHead_TableHeaderCell_TableRow_Text_TextInput_Title_tremor_react__WEBPACK_IMPORTED_MODULE_3__.TableCell, {\n children: model\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 546,\n columnNumber: 19\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Badge_Button_Card_Col_Grid_Icon_Table_TableBody_TableCell_TableHead_TableHeaderCell_TableRow_Text_TextInput_Title_tremor_react__WEBPACK_IMPORTED_MODULE_3__.TableCell, {\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Button_Form_InputNumber_Modal_Select_message_antd__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {\n value: limits.tpm,\n onChange: (value)=>handleLimitChange(model, \"tpm\", value)\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 548,\n columnNumber: 21\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 547,\n columnNumber: 19\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Badge_Button_Card_Col_Grid_Icon_Table_TableBody_TableCell_TableHead_TableHeaderCell_TableRow_Text_TextInput_Title_tremor_react__WEBPACK_IMPORTED_MODULE_3__.TableCell, {\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Button_Form_InputNumber_Modal_Select_message_antd__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {\n value: limits.rpm,\n onChange: (value)=>handleLimitChange(model, \"rpm\", value)\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 554,\n columnNumber: 21\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 553,\n columnNumber: 19\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Badge_Button_Card_Col_Grid_Icon_Table_TableBody_TableCell_TableHead_TableHeaderCell_TableRow_Text_TextInput_Title_tremor_react__WEBPACK_IMPORTED_MODULE_3__.TableCell, {\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Badge_Button_Card_Col_Grid_Icon_Table_TableBody_TableCell_TableHead_TableHeaderCell_TableRow_Text_TextInput_Title_tremor_react__WEBPACK_IMPORTED_MODULE_3__.Button, {\n onClick: ()=>handleRemoveModel(model),\n children: \"Remove\"\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 560,\n columnNumber: 21\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 559,\n columnNumber: 19\n }, undefined)\n ]\n }, model, true, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 545,\n columnNumber: 17\n }, undefined);\n }),\n newModelRow !== null && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Badge_Button_Card_Col_Grid_Icon_Table_TableBody_TableCell_TableHead_TableHeaderCell_TableRow_Text_TextInput_Title_tremor_react__WEBPACK_IMPORTED_MODULE_3__.TableRow, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Badge_Button_Card_Col_Grid_Icon_Table_TableBody_TableCell_TableHead_TableHeaderCell_TableRow_Text_TextInput_Title_tremor_react__WEBPACK_IMPORTED_MODULE_3__.TableCell, {\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Button_Form_InputNumber_Modal_Select_message_antd__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n style: {\n width: 200\n },\n placeholder: \"Select a model\",\n onChange: handleModelSelect,\n value: newModelRow || undefined,\n children: availableModels.filter((m)=>!modelLimits.hasOwnProperty(m)).map((m)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(Option, {\n value: m,\n children: m\n }, m, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 578,\n columnNumber: 27\n }, undefined))\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 569,\n columnNumber: 21\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 568,\n columnNumber: 19\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Badge_Button_Card_Col_Grid_Icon_Table_TableBody_TableCell_TableHead_TableHeaderCell_TableRow_Text_TextInput_Title_tremor_react__WEBPACK_IMPORTED_MODULE_3__.TableCell, {\n children: \"-\"\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 584,\n columnNumber: 19\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Badge_Button_Card_Col_Grid_Icon_Table_TableBody_TableCell_TableHead_TableHeaderCell_TableRow_Text_TextInput_Title_tremor_react__WEBPACK_IMPORTED_MODULE_3__.TableCell, {\n children: \"-\"\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 585,\n columnNumber: 19\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Badge_Button_Card_Col_Grid_Icon_Table_TableBody_TableCell_TableHead_TableHeaderCell_TableRow_Text_TextInput_Title_tremor_react__WEBPACK_IMPORTED_MODULE_3__.TableCell, {\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Badge_Button_Card_Col_Grid_Icon_Table_TableBody_TableCell_TableHead_TableHeaderCell_TableRow_Text_TextInput_Title_tremor_react__WEBPACK_IMPORTED_MODULE_3__.Button, {\n onClick: ()=>setNewModelRow(null),\n children: \"Cancel\"\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 587,\n columnNumber: 21\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 586,\n columnNumber: 19\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 567,\n columnNumber: 17\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 543,\n columnNumber: 13\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 534,\n columnNumber: 11\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Badge_Button_Card_Col_Grid_Icon_Table_TableBody_TableCell_TableHead_TableHeaderCell_TableRow_Text_TextInput_Title_tremor_react__WEBPACK_IMPORTED_MODULE_3__.Button, {\n onClick: handleAddLimit,\n disabled: newModelRow !== null,\n children: \"Add Limit\"\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 595,\n columnNumber: 11\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 533,\n columnNumber: 9\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex justify-end space-x-4 mt-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Badge_Button_Card_Col_Grid_Icon_Table_TableBody_TableCell_TableHead_TableHeaderCell_TableRow_Text_TextInput_Title_tremor_react__WEBPACK_IMPORTED_MODULE_3__.Button, {\n onClick: onCancel,\n children: \"Cancel\"\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 598,\n columnNumber: 11\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Badge_Button_Card_Col_Grid_Icon_Table_TableBody_TableCell_TableHead_TableHeaderCell_TableRow_Text_TextInput_Title_tremor_react__WEBPACK_IMPORTED_MODULE_3__.Button, {\n onClick: handleSubmit,\n children: \"Save\"\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 601,\n columnNumber: 11\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 597,\n columnNumber: 9\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 526,\n columnNumber: 7\n }, undefined);\n };\n _s2(ModelLimitModal, \"Z3/CsZdLwb3rM9RQMHPS4cSU1mk=\");\n const handleEditClick = (token)=>{\n console.log(\"handleEditClick:\", token);\n // set token.token to token.token_id if token_id is not null\n if (token.token == null) {\n if (token.token_id !== null) {\n token.token = token.token_id;\n }\n }\n // Convert the budget_duration to the corresponding select option\n let budgetDuration = null;\n if (token.budget_duration) {\n switch(token.budget_duration){\n case \"24h\":\n budgetDuration = \"daily\";\n break;\n case \"7d\":\n budgetDuration = \"weekly\";\n break;\n case \"30d\":\n budgetDuration = \"monthly\";\n break;\n default:\n budgetDuration = \"None\";\n }\n }\n setSelectedToken({\n ...token,\n budget_duration: budgetDuration\n });\n //setSelectedToken(token);\n setEditModalVisible(true);\n };\n const handleEditCancel = ()=>{\n setEditModalVisible(false);\n setSelectedToken(null);\n };\n const handleEditSubmit = async (formValues)=>{\n /**\n * Call API to update team with teamId and values\n * \n * Client-side validation: For selected team, ensure models in team + max budget < team max budget\n */ if (accessToken == null) {\n return;\n }\n const currentKey = formValues.token;\n formValues.key = currentKey;\n // Convert the budget_duration back to the API expected format\n if (formValues.budget_duration) {\n switch(formValues.budget_duration){\n case \"daily\":\n formValues.budget_duration = \"24h\";\n break;\n case \"weekly\":\n formValues.budget_duration = \"7d\";\n break;\n case \"monthly\":\n formValues.budget_duration = \"30d\";\n break;\n }\n }\n console.log(\"handleEditSubmit:\", formValues);\n let newKeyValues = await (0,_networking__WEBPACK_IMPORTED_MODULE_2__.keyUpdateCall)(accessToken, formValues);\n console.log(\"handleEditSubmit: newKeyValues\", newKeyValues);\n // Update the keys with the update key\n if (data) {\n const updatedData = data.map((key)=>key.token === currentKey ? newKeyValues : key);\n setData(updatedData);\n }\n _barrel_optimize_names_Button_Form_InputNumber_Modal_Select_message_antd__WEBPACK_IMPORTED_MODULE_9__[\"default\"].success(\"Key updated successfully\");\n setEditModalVisible(false);\n setSelectedToken(null);\n };\n const handleDelete = async (token)=>{\n console.log(\"handleDelete:\", token);\n if (token.token == null) {\n if (token.token_id !== null) {\n token.token = token.token_id;\n }\n }\n if (data == null) {\n return;\n }\n // Set the key to delete and open the confirmation modal\n setKeyToDelete(token.token);\n localStorage.removeItem(\"userData\" + userID);\n setIsDeleteModalOpen(true);\n };\n const confirmDelete = async ()=>{\n if (keyToDelete == null || data == null) {\n return;\n }\n try {\n await (0,_networking__WEBPACK_IMPORTED_MODULE_2__.keyDeleteCall)(accessToken, keyToDelete);\n // Successfully completed the deletion. Update the state to trigger a rerender.\n const filteredData = data.filter((item)=>item.token !== keyToDelete);\n setData(filteredData);\n } catch (error) {\n console.error(\"Error deleting the key:\", error);\n // Handle any error situations, such as displaying an error message to the user.\n }\n // Close the confirmation modal and reset the keyToDelete\n setIsDeleteModalOpen(false);\n setKeyToDelete(null);\n };\n const cancelDelete = ()=>{\n // Close the confirmation modal and reset the keyToDelete\n setIsDeleteModalOpen(false);\n setKeyToDelete(null);\n };\n const handleRegenerateClick = (token)=>{\n setSelectedToken(token);\n setNewExpiryTime(null);\n regenerateForm.setFieldsValue({\n key_alias: token.key_alias,\n max_budget: token.max_budget,\n tpm_limit: token.tpm_limit,\n rpm_limit: token.rpm_limit,\n duration: token.duration || \"\"\n });\n setRegenerateDialogVisible(true);\n };\n const handleRegenerateFormChange = (field, value)=>{\n setRegenerateFormData((prev)=>({\n ...prev,\n [field]: value\n }));\n };\n const handleRegenerateKey = async ()=>{\n if (!premiumUser) {\n _barrel_optimize_names_Button_Form_InputNumber_Modal_Select_message_antd__WEBPACK_IMPORTED_MODULE_9__[\"default\"].error(\"Regenerate API Key is an Enterprise feature. Please upgrade to use this feature.\");\n return;\n }\n if (selectedToken == null) {\n return;\n }\n try {\n const formValues = await regenerateForm.validateFields();\n const response = await (0,_networking__WEBPACK_IMPORTED_MODULE_2__.regenerateKeyCall)(accessToken, selectedToken.token, formValues);\n setRegeneratedKey(response.key);\n // Update the data state with the new key_name\n if (data) {\n const updatedData = data.map((item)=>item.token === (selectedToken === null || selectedToken === void 0 ? void 0 : selectedToken.token) ? {\n ...item,\n key_name: response.key_name,\n ...formValues\n } : item);\n setData(updatedData);\n }\n setRegenerateDialogVisible(false);\n regenerateForm.resetFields();\n _barrel_optimize_names_Button_Form_InputNumber_Modal_Select_message_antd__WEBPACK_IMPORTED_MODULE_9__[\"default\"].success(\"API Key regenerated successfully\");\n } catch (error) {\n console.error(\"Error regenerating key:\", error);\n _barrel_optimize_names_Button_Form_InputNumber_Modal_Select_message_antd__WEBPACK_IMPORTED_MODULE_9__[\"default\"].error(\"Failed to regenerate API Key\");\n }\n };\n if (data == null) {\n return;\n }\n console.log(\"RERENDER TRIGGERED\");\n return /*#__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)(_barrel_optimize_names_Badge_Button_Card_Col_Grid_Icon_Table_TableBody_TableCell_TableHead_TableHeaderCell_TableRow_Text_TextInput_Title_tremor_react__WEBPACK_IMPORTED_MODULE_3__.Card, {\n className: \"w-full mx-auto flex-auto overflow-y-auto max-h-[50vh] mb-4 mt-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Badge_Button_Card_Col_Grid_Icon_Table_TableBody_TableCell_TableHead_TableHeaderCell_TableRow_Text_TextInput_Title_tremor_react__WEBPACK_IMPORTED_MODULE_3__.Table, {\n className: \"mt-5 max-h-[300px] min-h-[300px]\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Badge_Button_Card_Col_Grid_Icon_Table_TableBody_TableCell_TableHead_TableHeaderCell_TableRow_Text_TextInput_Title_tremor_react__WEBPACK_IMPORTED_MODULE_3__.TableHead, {\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Badge_Button_Card_Col_Grid_Icon_Table_TableBody_TableCell_TableHead_TableHeaderCell_TableRow_Text_TextInput_Title_tremor_react__WEBPACK_IMPORTED_MODULE_3__.TableRow, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Badge_Button_Card_Col_Grid_Icon_Table_TableBody_TableCell_TableHead_TableHeaderCell_TableRow_Text_TextInput_Title_tremor_react__WEBPACK_IMPORTED_MODULE_3__.TableHeaderCell, {\n children: \"Key Alias\"\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 807,\n columnNumber: 13\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Badge_Button_Card_Col_Grid_Icon_Table_TableBody_TableCell_TableHead_TableHeaderCell_TableRow_Text_TextInput_Title_tremor_react__WEBPACK_IMPORTED_MODULE_3__.TableHeaderCell, {\n children: \"Secret Key\"\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 808,\n columnNumber: 13\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Badge_Button_Card_Col_Grid_Icon_Table_TableBody_TableCell_TableHead_TableHeaderCell_TableRow_Text_TextInput_Title_tremor_react__WEBPACK_IMPORTED_MODULE_3__.TableHeaderCell, {\n children: \"Created\"\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 809,\n columnNumber: 13\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Badge_Button_Card_Col_Grid_Icon_Table_TableBody_TableCell_TableHead_TableHeaderCell_TableRow_Text_TextInput_Title_tremor_react__WEBPACK_IMPORTED_MODULE_3__.TableHeaderCell, {\n children: \"Expires\"\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 810,\n columnNumber: 13\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Badge_Button_Card_Col_Grid_Icon_Table_TableBody_TableCell_TableHead_TableHeaderCell_TableRow_Text_TextInput_Title_tremor_react__WEBPACK_IMPORTED_MODULE_3__.TableHeaderCell, {\n children: \"Spend (USD)\"\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 811,\n columnNumber: 13\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Badge_Button_Card_Col_Grid_Icon_Table_TableBody_TableCell_TableHead_TableHeaderCell_TableRow_Text_TextInput_Title_tremor_react__WEBPACK_IMPORTED_MODULE_3__.TableHeaderCell, {\n children: \"Budget (USD)\"\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 812,\n columnNumber: 13\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Badge_Button_Card_Col_Grid_Icon_Table_TableBody_TableCell_TableHead_TableHeaderCell_TableRow_Text_TextInput_Title_tremor_react__WEBPACK_IMPORTED_MODULE_3__.TableHeaderCell, {\n children: \"Budget Reset\"\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 813,\n columnNumber: 13\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Badge_Button_Card_Col_Grid_Icon_Table_TableBody_TableCell_TableHead_TableHeaderCell_TableRow_Text_TextInput_Title_tremor_react__WEBPACK_IMPORTED_MODULE_3__.TableHeaderCell, {\n children: \"Models\"\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 814,\n columnNumber: 13\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Badge_Button_Card_Col_Grid_Icon_Table_TableBody_TableCell_TableHead_TableHeaderCell_TableRow_Text_TextInput_Title_tremor_react__WEBPACK_IMPORTED_MODULE_3__.TableHeaderCell, {\n children: \"Rate Limits\"\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 815,\n columnNumber: 13\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Badge_Button_Card_Col_Grid_Icon_Table_TableBody_TableCell_TableHead_TableHeaderCell_TableRow_Text_TextInput_Title_tremor_react__WEBPACK_IMPORTED_MODULE_3__.TableHeaderCell, {\n children: \"Rate Limits per model\"\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 816,\n columnNumber: 13\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 806,\n columnNumber: 11\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 805,\n columnNumber: 9\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Badge_Button_Card_Col_Grid_Icon_Table_TableBody_TableCell_TableHead_TableHeaderCell_TableRow_Text_TextInput_Title_tremor_react__WEBPACK_IMPORTED_MODULE_3__.TableBody, {\n children: data.map((item)=>{\n console.log(item);\n // skip item if item.team_id == \"litellm-dashboard\"\n if (item.team_id === \"litellm-dashboard\") {\n return null;\n }\n if (selectedTeam) {\n /**\n * if selected team id is null -> show the keys with no team id or team id's that don't exist in db\n */ console.log(\"item team id: \".concat(item.team_id, \", knownTeamIDs.has(item.team_id): \").concat(knownTeamIDs.has(item.team_id), \", selectedTeam id: \").concat(selectedTeam.team_id));\n if (selectedTeam.team_id == null && item.team_id !== null && !knownTeamIDs.has(item.team_id)) {\n // do nothing -> returns a row with this key\n } else if (item.team_id != selectedTeam.team_id) {\n return null;\n }\n console.log(\"item team id: \".concat(item.team_id, \", is returned\"));\n }\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Badge_Button_Card_Col_Grid_Icon_Table_TableBody_TableCell_TableHead_TableHeaderCell_TableRow_Text_TextInput_Title_tremor_react__WEBPACK_IMPORTED_MODULE_3__.TableRow, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Badge_Button_Card_Col_Grid_Icon_Table_TableBody_TableCell_TableHead_TableHeaderCell_TableRow_Text_TextInput_Title_tremor_react__WEBPACK_IMPORTED_MODULE_3__.TableCell, {\n style: {\n maxWidth: \"2px\",\n whiteSpace: \"pre-wrap\",\n overflow: \"hidden\"\n },\n children: item.key_alias != null ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Badge_Button_Card_Col_Grid_Icon_Table_TableBody_TableCell_TableHead_TableHeaderCell_TableRow_Text_TextInput_Title_tremor_react__WEBPACK_IMPORTED_MODULE_3__.Text, {\n children: item.key_alias\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 843,\n columnNumber: 21\n }, undefined) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Badge_Button_Card_Col_Grid_Icon_Table_TableBody_TableCell_TableHead_TableHeaderCell_TableRow_Text_TextInput_Title_tremor_react__WEBPACK_IMPORTED_MODULE_3__.Text, {\n children: \"Not Set\"\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 845,\n columnNumber: 21\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 841,\n columnNumber: 17\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Badge_Button_Card_Col_Grid_Icon_Table_TableBody_TableCell_TableHead_TableHeaderCell_TableRow_Text_TextInput_Title_tremor_react__WEBPACK_IMPORTED_MODULE_3__.TableCell, {\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Badge_Button_Card_Col_Grid_Icon_Table_TableBody_TableCell_TableHead_TableHeaderCell_TableRow_Text_TextInput_Title_tremor_react__WEBPACK_IMPORTED_MODULE_3__.Text, {\n children: item.key_name\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 849,\n columnNumber: 19\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 848,\n columnNumber: 17\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Badge_Button_Card_Col_Grid_Icon_Table_TableBody_TableCell_TableHead_TableHeaderCell_TableRow_Text_TextInput_Title_tremor_react__WEBPACK_IMPORTED_MODULE_3__.TableCell, {\n children: item.created_at != null ? /*#__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)(\"p\", {\n style: {\n fontSize: \"0.70rem\"\n },\n children: new Date(item.created_at).toLocaleDateString()\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 854,\n columnNumber: 25\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 853,\n columnNumber: 23\n }, undefined) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n style: {\n fontSize: \"0.70rem\"\n },\n children: \"Not available\"\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 857,\n columnNumber: 23\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 851,\n columnNumber: 17\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Badge_Button_Card_Col_Grid_Icon_Table_TableBody_TableCell_TableHead_TableHeaderCell_TableRow_Text_TextInput_Title_tremor_react__WEBPACK_IMPORTED_MODULE_3__.TableCell, {\n children: item.expires != null ? /*#__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)(\"p\", {\n style: {\n fontSize: \"0.70rem\"\n },\n children: new Date(item.expires).toLocaleDateString()\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 863,\n columnNumber: 21\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 862,\n columnNumber: 19\n }, undefined) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n style: {\n fontSize: \"0.70rem\"\n },\n children: \"Never\"\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 866,\n columnNumber: 19\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 860,\n columnNumber: 17\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Badge_Button_Card_Col_Grid_Icon_Table_TableBody_TableCell_TableHead_TableHeaderCell_TableRow_Text_TextInput_Title_tremor_react__WEBPACK_IMPORTED_MODULE_3__.TableCell, {\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Badge_Button_Card_Col_Grid_Icon_Table_TableBody_TableCell_TableHead_TableHeaderCell_TableRow_Text_TextInput_Title_tremor_react__WEBPACK_IMPORTED_MODULE_3__.Text, {\n children: (()=>{\n try {\n return parseFloat(item.spend).toFixed(4);\n } catch (error) {\n return item.spend;\n }\n })()\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 870,\n columnNumber: 19\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 869,\n columnNumber: 17\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Badge_Button_Card_Col_Grid_Icon_Table_TableBody_TableCell_TableHead_TableHeaderCell_TableRow_Text_TextInput_Title_tremor_react__WEBPACK_IMPORTED_MODULE_3__.TableCell, {\n children: item.max_budget != null ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Badge_Button_Card_Col_Grid_Icon_Table_TableBody_TableCell_TableHead_TableHeaderCell_TableRow_Text_TextInput_Title_tremor_react__WEBPACK_IMPORTED_MODULE_3__.Text, {\n children: item.max_budget\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 883,\n columnNumber: 21\n }, undefined) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Badge_Button_Card_Col_Grid_Icon_Table_TableBody_TableCell_TableHead_TableHeaderCell_TableRow_Text_TextInput_Title_tremor_react__WEBPACK_IMPORTED_MODULE_3__.Text, {\n children: \"Unlimited\"\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 885,\n columnNumber: 21\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 881,\n columnNumber: 17\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Badge_Button_Card_Col_Grid_Icon_Table_TableBody_TableCell_TableHead_TableHeaderCell_TableRow_Text_TextInput_Title_tremor_react__WEBPACK_IMPORTED_MODULE_3__.TableCell, {\n children: item.budget_reset_at != null ? /*#__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)(\"p\", {\n style: {\n fontSize: \"0.70rem\"\n },\n children: new Date(item.budget_reset_at).toLocaleString()\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 891,\n columnNumber: 23\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 890,\n columnNumber: 21\n }, undefined) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n style: {\n fontSize: \"0.70rem\"\n },\n children: \"Never\"\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 896,\n columnNumber: 21\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 888,\n columnNumber: 17\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Badge_Button_Card_Col_Grid_Icon_Table_TableBody_TableCell_TableHead_TableHeaderCell_TableRow_Text_TextInput_Title_tremor_react__WEBPACK_IMPORTED_MODULE_3__.TableCell, {\n children: Array.isArray(item.models) ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n style: {\n display: \"flex\",\n flexDirection: \"column\"\n },\n children: item.models.length === 0 ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n children: selectedTeam && selectedTeam.models && selectedTeam.models.length > 0 ? selectedTeam.models.map((model, index)=>model === \"all-proxy-models\" ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Badge_Button_Card_Col_Grid_Icon_Table_TableBody_TableCell_TableHead_TableHeaderCell_TableRow_Text_TextInput_Title_tremor_react__WEBPACK_IMPORTED_MODULE_3__.Badge, {\n size: \"xs\",\n className: \"mb-1\",\n color: \"red\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Badge_Button_Card_Col_Grid_Icon_Table_TableBody_TableCell_TableHead_TableHeaderCell_TableRow_Text_TextInput_Title_tremor_react__WEBPACK_IMPORTED_MODULE_3__.Text, {\n children: \"All Proxy Models\"\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 925,\n columnNumber: 19\n }, undefined)\n }, index, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 924,\n columnNumber: 17\n }, undefined) : model === \"all-team-models\" ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Badge_Button_Card_Col_Grid_Icon_Table_TableBody_TableCell_TableHead_TableHeaderCell_TableRow_Text_TextInput_Title_tremor_react__WEBPACK_IMPORTED_MODULE_3__.Badge, {\n size: \"xs\",\n className: \"mb-1\",\n color: \"red\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Badge_Button_Card_Col_Grid_Icon_Table_TableBody_TableCell_TableHead_TableHeaderCell_TableRow_Text_TextInput_Title_tremor_react__WEBPACK_IMPORTED_MODULE_3__.Text, {\n children: \"All Team Models\"\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 929,\n columnNumber: 19\n }, undefined)\n }, index, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 928,\n columnNumber: 17\n }, undefined) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Badge_Button_Card_Col_Grid_Icon_Table_TableBody_TableCell_TableHead_TableHeaderCell_TableRow_Text_TextInput_Title_tremor_react__WEBPACK_IMPORTED_MODULE_3__.Badge, {\n size: \"xs\",\n className: \"mb-1\",\n color: \"blue\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Badge_Button_Card_Col_Grid_Icon_Table_TableBody_TableCell_TableHead_TableHeaderCell_TableRow_Text_TextInput_Title_tremor_react__WEBPACK_IMPORTED_MODULE_3__.Text, {\n children: model.length > 30 ? \"\".concat(model.slice(0, 30), \"...\") : model\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 933,\n columnNumber: 19\n }, undefined)\n }, index, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 932,\n columnNumber: 17\n }, undefined)) : // If selected team is None or selected team's models are empty, show all models\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Badge_Button_Card_Col_Grid_Icon_Table_TableBody_TableCell_TableHead_TableHeaderCell_TableRow_Text_TextInput_Title_tremor_react__WEBPACK_IMPORTED_MODULE_3__.Badge, {\n size: \"xs\",\n className: \"mb-1\",\n color: \"blue\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Badge_Button_Card_Col_Grid_Icon_Table_TableBody_TableCell_TableHead_TableHeaderCell_TableRow_Text_TextInput_Title_tremor_react__WEBPACK_IMPORTED_MODULE_3__.Text, {\n children: \"all-proxy-models\"\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 940,\n columnNumber: 15\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 939,\n columnNumber: 13\n }, undefined)\n }, void 0, false) : item.models.map((model, index)=>model === \"all-proxy-models\" ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Badge_Button_Card_Col_Grid_Icon_Table_TableBody_TableCell_TableHead_TableHeaderCell_TableRow_Text_TextInput_Title_tremor_react__WEBPACK_IMPORTED_MODULE_3__.Badge, {\n size: \"xs\",\n className: \"mb-1\",\n color: \"red\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Badge_Button_Card_Col_Grid_Icon_Table_TableBody_TableCell_TableHead_TableHeaderCell_TableRow_Text_TextInput_Title_tremor_react__WEBPACK_IMPORTED_MODULE_3__.Text, {\n children: \"All Proxy Models\"\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 948,\n columnNumber: 15\n }, undefined)\n }, index, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 947,\n columnNumber: 13\n }, undefined) : model === \"all-team-models\" ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Badge_Button_Card_Col_Grid_Icon_Table_TableBody_TableCell_TableHead_TableHeaderCell_TableRow_Text_TextInput_Title_tremor_react__WEBPACK_IMPORTED_MODULE_3__.Badge, {\n size: \"xs\",\n className: \"mb-1\",\n color: \"red\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Badge_Button_Card_Col_Grid_Icon_Table_TableBody_TableCell_TableHead_TableHeaderCell_TableRow_Text_TextInput_Title_tremor_react__WEBPACK_IMPORTED_MODULE_3__.Text, {\n children: \"All Team Models\"\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 952,\n columnNumber: 15\n }, undefined)\n }, index, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 951,\n columnNumber: 13\n }, undefined) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Badge_Button_Card_Col_Grid_Icon_Table_TableBody_TableCell_TableHead_TableHeaderCell_TableRow_Text_TextInput_Title_tremor_react__WEBPACK_IMPORTED_MODULE_3__.Badge, {\n size: \"xs\",\n className: \"mb-1\",\n color: \"blue\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Badge_Button_Card_Col_Grid_Icon_Table_TableBody_TableCell_TableHead_TableHeaderCell_TableRow_Text_TextInput_Title_tremor_react__WEBPACK_IMPORTED_MODULE_3__.Text, {\n children: model.length > 30 ? \"\".concat(model.slice(0, 30), \"...\") : model\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 956,\n columnNumber: 15\n }, undefined)\n }, index, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 955,\n columnNumber: 13\n }, undefined))\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 918,\n columnNumber: 5\n }, undefined) : null\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 916,\n columnNumber: 1\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Badge_Button_Card_Col_Grid_Icon_Table_TableBody_TableCell_TableHead_TableHeaderCell_TableRow_Text_TextInput_Title_tremor_react__WEBPACK_IMPORTED_MODULE_3__.TableCell, {\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Badge_Button_Card_Col_Grid_Icon_Table_TableBody_TableCell_TableHead_TableHeaderCell_TableRow_Text_TextInput_Title_tremor_react__WEBPACK_IMPORTED_MODULE_3__.Text, {\n children: [\n \"TPM: \",\n item.tpm_limit ? item.tpm_limit : \"Unlimited\",\n \" \",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"br\", {}, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 968,\n columnNumber: 21\n }, undefined),\n \" RPM:\",\n \" \",\n item.rpm_limit ? item.rpm_limit : \"Unlimited\"\n ]\n }, void 0, true, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 966,\n columnNumber: 19\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 965,\n columnNumber: 17\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Badge_Button_Card_Col_Grid_Icon_Table_TableBody_TableCell_TableHead_TableHeaderCell_TableRow_Text_TextInput_Title_tremor_react__WEBPACK_IMPORTED_MODULE_3__.TableCell, {\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Badge_Button_Card_Col_Grid_Icon_Table_TableBody_TableCell_TableHead_TableHeaderCell_TableRow_Text_TextInput_Title_tremor_react__WEBPACK_IMPORTED_MODULE_3__.Button, {\n size: \"xs\",\n onClick: ()=>handleModelLimitClick(item),\n children: \"Edit Limits\"\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 973,\n columnNumber: 17\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 972,\n columnNumber: 17\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Badge_Button_Card_Col_Grid_Icon_Table_TableBody_TableCell_TableHead_TableHeaderCell_TableRow_Text_TextInput_Title_tremor_react__WEBPACK_IMPORTED_MODULE_3__.TableCell, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Badge_Button_Card_Col_Grid_Icon_Table_TableBody_TableCell_TableHead_TableHeaderCell_TableRow_Text_TextInput_Title_tremor_react__WEBPACK_IMPORTED_MODULE_3__.Icon, {\n onClick: ()=>{\n setSelectedToken(item);\n setInfoDialogVisible(true);\n },\n icon: _heroicons_react_outline__WEBPACK_IMPORTED_MODULE_13__[\"default\"],\n size: \"sm\"\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 976,\n columnNumber: 21\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Button_Form_InputNumber_Modal_Select_message_antd__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n open: infoDialogVisible,\n onCancel: ()=>{\n setInfoDialogVisible(false);\n setSelectedToken(null);\n },\n footer: null,\n width: 800,\n children: selectedToken && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid grid-cols-1 gap-6 sm:grid-cols-2 lg:grid-cols-3 mt-8\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Badge_Button_Card_Col_Grid_Icon_Table_TableBody_TableCell_TableHead_TableHeaderCell_TableRow_Text_TextInput_Title_tremor_react__WEBPACK_IMPORTED_MODULE_3__.Card, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-tremor-default font-medium text-tremor-content dark:text-dark-tremor-content\",\n children: \"Spend\"\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 1001,\n columnNumber: 13\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mt-2 flex items-baseline space-x-2.5\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-tremor font-semibold text-tremor-content-strong dark:text-dark-tremor-content-strong\",\n children: (()=>{\n try {\n return parseFloat(selectedToken.spend).toFixed(4);\n } catch (error) {\n return selectedToken.spend;\n }\n })()\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 1005,\n columnNumber: 15\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 1004,\n columnNumber: 13\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 1000,\n columnNumber: 11\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Badge_Button_Card_Col_Grid_Icon_Table_TableBody_TableCell_TableHead_TableHeaderCell_TableRow_Text_TextInput_Title_tremor_react__WEBPACK_IMPORTED_MODULE_3__.Card, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-tremor-default font-medium text-tremor-content dark:text-dark-tremor-content\",\n children: \"Budget\"\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 1018,\n columnNumber: 13\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mt-2 flex items-baseline space-x-2.5\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-tremor font-semibold text-tremor-content-strong dark:text-dark-tremor-content-strong\",\n children: selectedToken.max_budget != null ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n children: [\n selectedToken.max_budget,\n selectedToken.budget_duration && /*#__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)(\"br\", {}, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 1028,\n columnNumber: 25\n }, undefined),\n \"Budget will be reset at \",\n selectedToken.budget_reset_at ? new Date(selectedToken.budget_reset_at).toLocaleString() : \"Never\"\n ]\n }, void 0, true)\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: \"Unlimited\"\n }, void 0, false)\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 1022,\n columnNumber: 15\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 1021,\n columnNumber: 13\n }, undefined)\n ]\n }, item.name, true, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 1017,\n columnNumber: 11\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Badge_Button_Card_Col_Grid_Icon_Table_TableBody_TableCell_TableHead_TableHeaderCell_TableRow_Text_TextInput_Title_tremor_react__WEBPACK_IMPORTED_MODULE_3__.Card, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-tremor-default font-medium text-tremor-content dark:text-dark-tremor-content\",\n children: \"Expires\"\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 1040,\n columnNumber: 13\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mt-2 flex items-baseline space-x-2.5\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-tremor-default font-small text-tremor-content-strong dark:text-dark-tremor-content-strong\",\n children: selectedToken.expires != null ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n children: new Date(selectedToken.expires).toLocaleString(undefined, {\n day: \"numeric\",\n month: \"long\",\n year: \"numeric\",\n hour: \"numeric\",\n minute: \"numeric\",\n second: \"numeric\"\n })\n }, void 0, false) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n children: \"Never\"\n }, void 0, false)\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 1044,\n columnNumber: 15\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 1043,\n columnNumber: 13\n }, undefined)\n ]\n }, item.name, true, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 1039,\n columnNumber: 11\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 999,\n columnNumber: 7\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Badge_Button_Card_Col_Grid_Icon_Table_TableBody_TableCell_TableHead_TableHeaderCell_TableRow_Text_TextInput_Title_tremor_react__WEBPACK_IMPORTED_MODULE_3__.Card, {\n className: \"my-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Badge_Button_Card_Col_Grid_Icon_Table_TableBody_TableCell_TableHead_TableHeaderCell_TableRow_Text_TextInput_Title_tremor_react__WEBPACK_IMPORTED_MODULE_3__.Title, {\n children: \"Token Name\"\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 1065,\n columnNumber: 9\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Badge_Button_Card_Col_Grid_Icon_Table_TableBody_TableCell_TableHead_TableHeaderCell_TableRow_Text_TextInput_Title_tremor_react__WEBPACK_IMPORTED_MODULE_3__.Text, {\n className: \"my-1\",\n children: selectedToken.key_alias ? selectedToken.key_alias : selectedToken.key_name\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 1066,\n columnNumber: 9\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Badge_Button_Card_Col_Grid_Icon_Table_TableBody_TableCell_TableHead_TableHeaderCell_TableRow_Text_TextInput_Title_tremor_react__WEBPACK_IMPORTED_MODULE_3__.Title, {\n children: \"Token ID\"\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 1067,\n columnNumber: 9\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Badge_Button_Card_Col_Grid_Icon_Table_TableBody_TableCell_TableHead_TableHeaderCell_TableRow_Text_TextInput_Title_tremor_react__WEBPACK_IMPORTED_MODULE_3__.Text, {\n className: \"my-1 text-[12px]\",\n children: selectedToken.token\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 1068,\n columnNumber: 9\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Badge_Button_Card_Col_Grid_Icon_Table_TableBody_TableCell_TableHead_TableHeaderCell_TableRow_Text_TextInput_Title_tremor_react__WEBPACK_IMPORTED_MODULE_3__.Title, {\n children: \"User ID\"\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 1069,\n columnNumber: 9\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Badge_Button_Card_Col_Grid_Icon_Table_TableBody_TableCell_TableHead_TableHeaderCell_TableRow_Text_TextInput_Title_tremor_react__WEBPACK_IMPORTED_MODULE_3__.Text, {\n className: \"my-1 text-[12px]\",\n children: selectedToken.user_id\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 1070,\n columnNumber: 9\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Badge_Button_Card_Col_Grid_Icon_Table_TableBody_TableCell_TableHead_TableHeaderCell_TableRow_Text_TextInput_Title_tremor_react__WEBPACK_IMPORTED_MODULE_3__.Title, {\n children: \"Metadata\"\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 1071,\n columnNumber: 9\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Badge_Button_Card_Col_Grid_Icon_Table_TableBody_TableCell_TableHead_TableHeaderCell_TableRow_Text_TextInput_Title_tremor_react__WEBPACK_IMPORTED_MODULE_3__.Text, {\n className: \"my-1\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"pre\", {\n children: [\n JSON.stringify(selectedToken.metadata),\n \" \"\n ]\n }, void 0, true, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 1072,\n columnNumber: 32\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 1072,\n columnNumber: 9\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 1064,\n columnNumber: 7\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Badge_Button_Card_Col_Grid_Icon_Table_TableBody_TableCell_TableHead_TableHeaderCell_TableRow_Text_TextInput_Title_tremor_react__WEBPACK_IMPORTED_MODULE_3__.Button, {\n className: \"mx-auto flex items-center\",\n onClick: ()=>{\n setInfoDialogVisible(false);\n setSelectedToken(null);\n },\n children: \"Close\"\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 1075,\n columnNumber: 9\n }, undefined)\n ]\n }, void 0, true)\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 987,\n columnNumber: 5\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Badge_Button_Card_Col_Grid_Icon_Table_TableBody_TableCell_TableHead_TableHeaderCell_TableRow_Text_TextInput_Title_tremor_react__WEBPACK_IMPORTED_MODULE_3__.Icon, {\n icon: _heroicons_react_outline__WEBPACK_IMPORTED_MODULE_14__[\"default\"],\n size: \"sm\",\n onClick: ()=>handleEditClick(item)\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 1088,\n columnNumber: 19\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Badge_Button_Card_Col_Grid_Icon_Table_TableBody_TableCell_TableHead_TableHeaderCell_TableRow_Text_TextInput_Title_tremor_react__WEBPACK_IMPORTED_MODULE_3__.Icon, {\n onClick: ()=>handleRegenerateClick(item),\n icon: _heroicons_react_outline__WEBPACK_IMPORTED_MODULE_15__[\"default\"],\n size: \"sm\"\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 1093,\n columnNumber: 19\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Badge_Button_Card_Col_Grid_Icon_Table_TableBody_TableCell_TableHead_TableHeaderCell_TableRow_Text_TextInput_Title_tremor_react__WEBPACK_IMPORTED_MODULE_3__.Icon, {\n onClick: ()=>handleDelete(item),\n icon: _heroicons_react_outline__WEBPACK_IMPORTED_MODULE_16__[\"default\"],\n size: \"sm\"\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 1098,\n columnNumber: 19\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 975,\n columnNumber: 17\n }, undefined)\n ]\n }, item.token, true, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 840,\n columnNumber: 15\n }, undefined);\n })\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 819,\n columnNumber: 9\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 804,\n columnNumber: 7\n }, undefined),\n isDeleteModalOpen && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"fixed z-10 inset-0 overflow-y-auto\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-end justify-center min-h-screen pt-4 px-4 pb-20 text-center sm:block sm:p-0\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"fixed inset-0 transition-opacity\",\n \"aria-hidden\": \"true\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute inset-0 bg-gray-500 opacity-75\"\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 1116,\n columnNumber: 15\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 1112,\n columnNumber: 13\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"hidden sm:inline-block sm:align-middle sm:h-screen\",\n \"aria-hidden\": \"true\",\n children: \"\"\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 1120,\n columnNumber: 13\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"inline-block align-bottom bg-white rounded-lg text-left overflow-hidden shadow-xl transform transition-all sm:my-8 sm:align-middle sm:max-w-lg sm:w-full\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-white px-4 pt-5 pb-4 sm:p-6 sm:pb-4\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"sm:flex sm:items-start\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mt-3 text-center sm:mt-0 sm:ml-4 sm:text-left\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h3\", {\n className: \"text-lg leading-6 font-medium text-gray-900\",\n children: \"Delete Key\"\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 1132,\n columnNumber: 21\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mt-2\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-sm text-gray-500\",\n children: \"Are you sure you want to delete this key ?\"\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 1136,\n columnNumber: 23\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 1135,\n columnNumber: 21\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 1131,\n columnNumber: 19\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 1130,\n columnNumber: 17\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 1129,\n columnNumber: 15\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-gray-50 px-4 py-3 sm:px-6 sm:flex sm:flex-row-reverse\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Badge_Button_Card_Col_Grid_Icon_Table_TableBody_TableCell_TableHead_TableHeaderCell_TableRow_Text_TextInput_Title_tremor_react__WEBPACK_IMPORTED_MODULE_3__.Button, {\n onClick: confirmDelete,\n color: \"red\",\n className: \"ml-2\",\n children: \"Delete\"\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 1144,\n columnNumber: 17\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Badge_Button_Card_Col_Grid_Icon_Table_TableBody_TableCell_TableHead_TableHeaderCell_TableRow_Text_TextInput_Title_tremor_react__WEBPACK_IMPORTED_MODULE_3__.Button, {\n onClick: cancelDelete,\n children: \"Cancel\"\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 1147,\n columnNumber: 17\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 1143,\n columnNumber: 15\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 1128,\n columnNumber: 13\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 1111,\n columnNumber: 11\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 1110,\n columnNumber: 9\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 803,\n columnNumber: 5\n }, undefined),\n selectedToken && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(EditKeyModal, {\n visible: editModalVisible,\n onCancel: handleEditCancel,\n token: selectedToken,\n onSubmit: handleEditSubmit\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 1156,\n columnNumber: 9\n }, undefined),\n selectedToken && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(ModelLimitModal, {\n visible: modelLimitModalVisible,\n onCancel: ()=>setModelLimitModalVisible(false),\n token: selectedToken,\n onSubmit: handleModelLimitSubmit,\n accessToken: accessToken\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 1165,\n columnNumber: 9\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Button_Form_InputNumber_Modal_Select_message_antd__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n title: \"Regenerate API Key\",\n visible: regenerateDialogVisible,\n onCancel: ()=>{\n setRegenerateDialogVisible(false);\n regenerateForm.resetFields();\n },\n footer: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Badge_Button_Card_Col_Grid_Icon_Table_TableBody_TableCell_TableHead_TableHeaderCell_TableRow_Text_TextInput_Title_tremor_react__WEBPACK_IMPORTED_MODULE_3__.Button, {\n onClick: ()=>{\n setRegenerateDialogVisible(false);\n regenerateForm.resetFields();\n },\n className: \"mr-2\",\n children: \"Cancel\"\n }, \"cancel\", false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 1183,\n columnNumber: 9\n }, void 0),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Badge_Button_Card_Col_Grid_Icon_Table_TableBody_TableCell_TableHead_TableHeaderCell_TableRow_Text_TextInput_Title_tremor_react__WEBPACK_IMPORTED_MODULE_3__.Button, {\n onClick: handleRegenerateKey,\n disabled: !premiumUser,\n children: premiumUser ? \"Regenerate\" : \"Upgrade to Regenerate\"\n }, \"regenerate\", false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 1189,\n columnNumber: 9\n }, void 0)\n ],\n children: premiumUser ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Button_Form_InputNumber_Modal_Select_message_antd__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n form: regenerateForm,\n layout: \"vertical\",\n onValuesChange: (changedValues, allValues)=>{\n if (\"duration\" in changedValues) {\n handleRegenerateFormChange(\"duration\", changedValues.duration);\n }\n },\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Button_Form_InputNumber_Modal_Select_message_antd__WEBPACK_IMPORTED_MODULE_7__[\"default\"].Item, {\n name: \"key_alias\",\n label: \"Key Alias\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Badge_Button_Card_Col_Grid_Icon_Table_TableBody_TableCell_TableHead_TableHeaderCell_TableRow_Text_TextInput_Title_tremor_react__WEBPACK_IMPORTED_MODULE_3__.TextInput, {\n disabled: true\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 1209,\n columnNumber: 13\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 1208,\n columnNumber: 11\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Button_Form_InputNumber_Modal_Select_message_antd__WEBPACK_IMPORTED_MODULE_7__[\"default\"].Item, {\n name: \"max_budget\",\n label: \"Max Budget (USD)\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Button_Form_InputNumber_Modal_Select_message_antd__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {\n step: 0.01,\n precision: 2,\n style: {\n width: \"100%\"\n }\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 1212,\n columnNumber: 13\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 1211,\n columnNumber: 11\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Button_Form_InputNumber_Modal_Select_message_antd__WEBPACK_IMPORTED_MODULE_7__[\"default\"].Item, {\n name: \"tpm_limit\",\n label: \"TPM Limit\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Button_Form_InputNumber_Modal_Select_message_antd__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {\n style: {\n width: \"100%\"\n }\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 1215,\n columnNumber: 13\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 1214,\n columnNumber: 11\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Button_Form_InputNumber_Modal_Select_message_antd__WEBPACK_IMPORTED_MODULE_7__[\"default\"].Item, {\n name: \"rpm_limit\",\n label: \"RPM Limit\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Button_Form_InputNumber_Modal_Select_message_antd__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {\n style: {\n width: \"100%\"\n }\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 1218,\n columnNumber: 13\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 1217,\n columnNumber: 11\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Button_Form_InputNumber_Modal_Select_message_antd__WEBPACK_IMPORTED_MODULE_7__[\"default\"].Item, {\n name: \"duration\",\n label: \"Expire Key (eg: 30s, 30h, 30d)\",\n className: \"mt-8\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Badge_Button_Card_Col_Grid_Icon_Table_TableBody_TableCell_TableHead_TableHeaderCell_TableRow_Text_TextInput_Title_tremor_react__WEBPACK_IMPORTED_MODULE_3__.TextInput, {\n placeholder: \"\"\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 1225,\n columnNumber: 13\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 1220,\n columnNumber: 11\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mt-2 text-sm text-gray-500\",\n children: [\n \"Current expiry: \",\n (selectedToken === null || selectedToken === void 0 ? void 0 : selectedToken.expires) != null ? new Date(selectedToken.expires).toLocaleString() : \"Never\"\n ]\n }, void 0, true, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 1227,\n columnNumber: 11\n }, undefined),\n newExpiryTime && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mt-2 text-sm text-green-600\",\n children: [\n \"New expiry: \",\n newExpiryTime\n ]\n }, void 0, true, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 1237,\n columnNumber: 13\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 1199,\n columnNumber: 9\n }, undefined) : /*#__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)(\"p\", {\n className: \"mb-2 text-gray-500 italic text-[12px]\",\n children: \"Upgrade to use this feature\"\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 1244,\n columnNumber: 11\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Badge_Button_Card_Col_Grid_Icon_Table_TableBody_TableCell_TableHead_TableHeaderCell_TableRow_Text_TextInput_Title_tremor_react__WEBPACK_IMPORTED_MODULE_3__.Button, {\n variant: \"primary\",\n className: \"mb-2\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"a\", {\n href: \"https://calendly.com/d/4mp-gd3-k5k/litellm-1-1-onboarding-chat\",\n target: \"_blank\",\n children: \"Get Free Trial\"\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 1246,\n columnNumber: 13\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 1245,\n columnNumber: 11\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 1243,\n columnNumber: 9\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 1175,\n columnNumber: 5\n }, undefined),\n regeneratedKey && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Button_Form_InputNumber_Modal_Select_message_antd__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n visible: !!regeneratedKey,\n onCancel: ()=>setRegeneratedKey(null),\n footer: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Badge_Button_Card_Col_Grid_Icon_Table_TableBody_TableCell_TableHead_TableHeaderCell_TableRow_Text_TextInput_Title_tremor_react__WEBPACK_IMPORTED_MODULE_3__.Button, {\n onClick: ()=>setRegeneratedKey(null),\n children: \"Close\"\n }, \"close\", false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 1260,\n columnNumber: 11\n }, void 0)\n ],\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Badge_Button_Card_Col_Grid_Icon_Table_TableBody_TableCell_TableHead_TableHeaderCell_TableRow_Text_TextInput_Title_tremor_react__WEBPACK_IMPORTED_MODULE_3__.Grid, {\n numItems: 1,\n className: \"gap-2 w-full\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Badge_Button_Card_Col_Grid_Icon_Table_TableBody_TableCell_TableHead_TableHeaderCell_TableRow_Text_TextInput_Title_tremor_react__WEBPACK_IMPORTED_MODULE_3__.Title, {\n children: \"Regenerated Key\"\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 1266,\n columnNumber: 11\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Badge_Button_Card_Col_Grid_Icon_Table_TableBody_TableCell_TableHead_TableHeaderCell_TableRow_Text_TextInput_Title_tremor_react__WEBPACK_IMPORTED_MODULE_3__.Col, {\n numColSpan: 1,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n children: [\n \"Please replace your old key with the new key generated. For security reasons, \",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"b\", {\n children: \"you will not be able to view it again\"\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 1270,\n columnNumber: 33\n }, undefined),\n \" through your LiteLLM account. If you lose this secret key, you will need to generate a new one.\"\n ]\n }, void 0, true, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 1268,\n columnNumber: 13\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 1267,\n columnNumber: 11\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Badge_Button_Card_Col_Grid_Icon_Table_TableBody_TableCell_TableHead_TableHeaderCell_TableRow_Text_TextInput_Title_tremor_react__WEBPACK_IMPORTED_MODULE_3__.Col, {\n numColSpan: 1,\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Badge_Button_Card_Col_Grid_Icon_Table_TableBody_TableCell_TableHead_TableHeaderCell_TableRow_Text_TextInput_Title_tremor_react__WEBPACK_IMPORTED_MODULE_3__.Text, {\n className: \"mt-3\",\n children: \"Key Alias:\"\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 1276,\n columnNumber: 13\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n style: {\n background: \"#f8f8f8\",\n padding: \"10px\",\n borderRadius: \"5px\",\n marginBottom: \"10px\"\n },\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"pre\", {\n style: {\n wordWrap: \"break-word\",\n whiteSpace: \"normal\"\n },\n children: (selectedToken === null || selectedToken === void 0 ? void 0 : selectedToken.key_alias) || \"No alias set\"\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 1285,\n columnNumber: 15\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 1277,\n columnNumber: 13\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Badge_Button_Card_Col_Grid_Icon_Table_TableBody_TableCell_TableHead_TableHeaderCell_TableRow_Text_TextInput_Title_tremor_react__WEBPACK_IMPORTED_MODULE_3__.Text, {\n className: \"mt-3\",\n children: \"New API Key:\"\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 1289,\n columnNumber: 13\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n style: {\n background: \"#f8f8f8\",\n padding: \"10px\",\n borderRadius: \"5px\",\n marginBottom: \"10px\"\n },\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"pre\", {\n style: {\n wordWrap: \"break-word\",\n whiteSpace: \"normal\"\n },\n children: regeneratedKey\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 1298,\n columnNumber: 15\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 1290,\n columnNumber: 13\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react_copy_to_clipboard__WEBPACK_IMPORTED_MODULE_5__.CopyToClipboard, {\n text: regeneratedKey,\n onCopy: ()=>_barrel_optimize_names_Button_Form_InputNumber_Modal_Select_message_antd__WEBPACK_IMPORTED_MODULE_9__[\"default\"].success(\"API Key copied to clipboard\"),\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Badge_Button_Card_Col_Grid_Icon_Table_TableBody_TableCell_TableHead_TableHeaderCell_TableRow_Text_TextInput_Title_tremor_react__WEBPACK_IMPORTED_MODULE_3__.Button, {\n className: \"mt-3\",\n children: \"Copy API Key\"\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 1303,\n columnNumber: 15\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 1302,\n columnNumber: 13\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 1275,\n columnNumber: 11\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 1265,\n columnNumber: 9\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 1256,\n columnNumber: 7\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/ishaanjaffer/Github/litellm/ui/litellm-dashboard/src/components/view_key_table.tsx\",\n lineNumber: 802,\n columnNumber: 5\n }, undefined);\n};\n_s(ViewKeyTable, \"Y6iwN38cVK/eheVaURNDSc3Y96M=\", false, function() {\n return [\n _barrel_optimize_names_Button_Form_InputNumber_Modal_Select_message_antd__WEBPACK_IMPORTED_MODULE_7__[\"default\"].useForm\n ];\n});\n_c = ViewKeyTable;\n/* harmony default export */ __webpack_exports__[\"default\"] = (ViewKeyTable);\nvar _c;\n$RefreshReg$(_c, \"ViewKeyTable\");\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL3NyYy9jb21wb25lbnRzL3ZpZXdfa2V5X3RhYmxlLnRzeCIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ21EO0FBQ2M7QUFDbEM7QUFDMkY7QUFDRDtBQXFCbEc7QUFDcUU7QUFZOUU7QUFFNEM7QUFFMUQsTUFBTSxFQUFFcUMsTUFBTSxFQUFFLEdBQUdULGdIQUFNQTtBQUN6QixNQUFNVSxVQUFVQyxrQkFBeUI7QUFDekMsTUFBTUMsZUFBZUYsVUFBVSwwQkFBMEI7QUFDekQsSUFBSUEsV0FBVyxNQUFNO0lBQ25CRyxRQUFRQyxHQUFHLEdBQUcsWUFBWTtBQUM1QjtBQWtEQSxNQUFNQyxlQUE0QztRQUFDLEVBQ2pEQyxNQUFNLEVBQ05DLFFBQVEsRUFDUkMsV0FBVyxFQUNYQyxZQUFZLEVBQ1pDLElBQUksRUFDSkMsT0FBTyxFQUNQQyxLQUFLLEVBQ0xDLFdBQVcsRUFDWjs7O0lBQ0MsTUFBTSxDQUFDQyxpQkFBaUJDLG1CQUFtQixHQUFHbkQsK0NBQVFBLENBQUM7SUFDdkQsTUFBTSxDQUFDb0QsbUJBQW1CQyxxQkFBcUIsR0FBR3JELCtDQUFRQSxDQUFDO0lBQzNELE1BQU0sQ0FBQ3NELGFBQWFDLGVBQWUsR0FBR3ZELCtDQUFRQSxDQUFnQjtJQUM5RCxNQUFNLENBQUN3RCxjQUFjQyxnQkFBZ0IsR0FBR3pELCtDQUFRQSxDQUFrQjtJQUNsRSxNQUFNLENBQUMwRCxXQUFXQyxhQUFhLEdBQUczRCwrQ0FBUUEsQ0FDeEM7SUFFRixNQUFNLENBQUM0RCxzQkFBc0JDLHdCQUF3QixHQUFHN0QsK0NBQVFBLENBQUM7SUFFakUsTUFBTSxDQUFDOEQsa0JBQWtCQyxvQkFBb0IsR0FBRy9ELCtDQUFRQSxDQUFDO0lBQ3pELE1BQU0sQ0FBQ2dFLG1CQUFtQkMscUJBQXFCLEdBQUdqRSwrQ0FBUUEsQ0FBQztJQUMzRCxNQUFNLENBQUNrRSxlQUFlQyxpQkFBaUIsR0FBR25FLCtDQUFRQSxDQUFrQjtJQUNwRSxN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Y2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vc3JjL2NvbXBvbmVudHMvdmlld19rZXlfdGFibGUudHN4P2NmZTciXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2UgY2xpZW50XCI7XG5pbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsga2V5RGVsZXRlQ2FsbCwgbW9kZWxBdmFpbGFibGVDYWxsIH0gZnJvbSBcIi4vbmV0d29ya2luZ1wiO1xuaW1wb3J0IHsgYWRkIH0gZnJvbSAnZGF0ZS1mbnMnO1xuaW1wb3J0IHsgSW5mb3JtYXRpb25DaXJjbGVJY29uLCBTdGF0dXNPbmxpbmVJY29uLCBUcmFzaEljb24sIFBlbmNpbEFsdEljb24sIFJlZnJlc2hJY29uIH0gZnJvbSBcIkBoZXJvaWNvbnMvcmVhY3Qvb3V0bGluZVwiO1xuaW1wb3J0IHsga2V5U3BlbmRMb2dzQ2FsbCwgUHJlZGljdGVkU3BlbmRMb2dzQ2FsbCwga2V5VXBkYXRlQ2FsbCwgbW9kZWxJbmZvQ2FsbCwgcmVnZW5lcmF0ZUtleUNhbGwgfSBmcm9tIFwiLi9uZXR3b3JraW5nXCI7XG5pbXBvcnQge1xuICBCYWRnZSxcbiAgQ2FyZCxcbiAgVGFibGUsXG4gIEdyaWQsXG4gIENvbCxcbiAgQnV0dG9uLFxuICBUYWJsZUJvZHksXG4gIFRhYmxlQ2VsbCxcbiAgVGFibGVIZWFkLFxuICBUYWJsZUhlYWRlckNlbGwsXG4gIFRhYmxlUm93LFxuICBEaWFsb2csIFxuICBEaWFsb2dQYW5lbCxcbiAgVGV4dCxcbiAgVGl0bGUsXG4gIFN1YnRpdGxlLFxuICBJY29uLFxuICBCYXJDaGFydCxcbiAgVGV4dElucHV0LFxufSBmcm9tIFwiQHRyZW1vci9yZWFjdFwiO1xuaW1wb3J0IHsgU2VsZWN0IGFzIFNlbGVjdDMsIFNlbGVjdEl0ZW0sIE11bHRpU2VsZWN0LCBNdWx0aVNlbGVjdEl0ZW0gfSBmcm9tIFwiQHRyZW1vci9yZWFjdFwiO1xuaW1wb3J0IHtcbiAgQnV0dG9uIGFzIEJ1dHRvbjIsXG4gIE1vZGFsLFxuICBGb3JtLFxuICBJbnB1dCxcbiAgU2VsZWN0IGFzIFNlbGVjdDIsXG4gIElucHV0TnVtYmVyLFxuICBtZXNzYWdlLFxuICBTZWxlY3QsXG4gIFRvb2x0aXAsXG4gIERhdGVQaWNrZXIsXG59IGZyb20gXCJhbnRkXCI7XG5cbmltcG9ydCB7IENvcHlUb0NsaXBib2FyZCB9IGZyb20gXCJyZWFjdC1jb3B5LXRvLWNsaXBib2FyZFwiO1xuXG5jb25zdCB7IE9wdGlvbiB9ID0gU2VsZWN0O1xuY29uc3QgaXNMb2NhbCA9IHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSBcImRldmVsb3BtZW50XCI7XG5jb25zdCBwcm94eUJhc2VVcmwgPSBpc0xvY2FsID8gXCJodHRwOi8vbG9jYWxob3N0OjQwMDBcIiA6IG51bGw7XG5pZiAoaXNMb2NhbCAhPSB0cnVlKSB7XG4gIGNvbnNvbGUubG9nID0gZnVuY3Rpb24oKSB7fTtcbn1cblxuaW50ZXJmYWNlIEVkaXRLZXlNb2RhbFByb3BzIHtcbiAgdmlzaWJsZTogYm9vbGVhbjtcbiAgb25DYW5jZWw6ICgpID0+IHZvaWQ7XG4gIHRva2VuOiBhbnk7IC8vIEFzc3VtaW5nIFRlYW1UeXBlIGlzIGEgdHlwZSByZXByZXNlbnRpbmcgeW91ciB0ZWFtIG9iamVjdFxuICBvblN1Ym1pdDogKGRhdGE6IEZvcm1EYXRhKSA9PiB2b2lkOyAvLyBBc3N1bWluZyBGb3JtRGF0YSBpcyB0aGUgdHlwZSBvZiBkYXRhIHRvIGJlIHN1Ym1pdHRlZFxufVxuXG5cbmludGVyZmFjZSBNb2RlbExpbWl0TW9kYWxQcm9wcyB7XG4gIHZpc2libGU6IGJvb2xlYW47XG4gIG9uQ2FuY2VsOiAoKSA9PiB2b2lkO1xuICB0b2tlbjogSXRlbURhdGE7XG4gIG9uU3VibWl0OiAodXBkYXRlZE1ldGFkYXRhOiBhbnkpID0+IHZvaWQ7XG4gIGFjY2Vzc1Rva2VuOiBzdHJpbmc7XG59XG5cbi8vIERlZmluZSB0aGUgcHJvcHMgdHlwZVxuaW50ZXJmYWNlIFZpZXdLZXlUYWJsZVByb3BzIHtcbiAgdXNlcklEOiBzdHJpbmc7XG4gIHVzZXJSb2xlOiBzdHJpbmcgfCBudWxsO1xuICBhY2Nlc3NUb2tlbjogc3RyaW5nO1xuICBzZWxlY3RlZFRlYW06IGFueSB8IG51bGw7XG4gIGRhdGE6IGFueVtdIHwgbnVsbDtcbiAgc2V0RGF0YTogUmVhY3QuRGlzcGF0Y2g8UmVhY3QuU2V0U3RhdGVBY3Rpb248YW55W10gfCBudWxsPj47XG4gIHRlYW1zOiBhbnlbXSB8IG51bGw7XG4gIHByZW1pdW1Vc2VyOiBib29sZWFuO1xufVxuXG5pbnRlcmZhY2UgSXRlbURhdGEge1xuICBrZXlfYWxpYXM6IHN0cmluZyB8IG51bGw7XG4gIGtleV9uYW1lOiBzdHJpbmc7XG4gIHNwZW5kOiBzdHJpbmc7XG4gIG1heF9idWRnZXQ6IHN0cmluZyB8IG51bGw7XG4gIG1vZGVsczogc3RyaW5nW107XG4gIHRwbV9saW1pdDogc3RyaW5nIHwgbnVsbDtcbiAgcnBtX2xpbWl0OiBzdHJpbmcgfCBudWxsO1xuICB0b2tlbjogc3RyaW5nO1xuICB0b2tlbl9pZDogc3RyaW5nIHwgbnVsbDtcbiAgaWQ6IG51bWJlcjtcbiAgdGVhbV9pZDogc3RyaW5nO1xuICBtZXRhZGF0YTogYW55O1xuICB1c2VyX2lkOiBzdHJpbmcgfCBudWxsO1xuICBleHBpcmVzOiBhbnk7XG4gIGJ1ZGdldF9kdXJhdGlvbjogc3RyaW5nIHwgbnVsbDtcbiAgYnVkZ2V0X3Jlc2V0X2F0OiBzdHJpbmcgfCBudWxsO1xuICAvLyBBZGQgYW55IG90aGVyIHByb3BlcnRpZXMgdGhhdCBleGlzdCBpbiB0aGUgaXRlbSBkYXRhXG59XG5cbmNvbnN0IFZpZXdLZXlUYWJsZTogUmVhY3QuRkM8Vmlld0tleVRhYmxlUHJvcHM+ID0gKHtcbiAgdXNlcklELFxuICB1c2VyUm9sZSxcbiAgYWNjZXNzVG9rZW4sXG4gIHNlbGVjdGVkVGVhbSxcbiAgZGF0YSxcbiAgc2V0RGF0YSxcbiAgdGVhbXMsXG4gIHByZW1pdW1Vc2VyXG59KSA9PiB7XG4gIGNvbnN0IFtpc0J1dHRvbkNsaWNrZWQsIHNldElzQnV0dG9uQ2xpY2tlZF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtpc0RlbGV0ZU1vZGFsT3Blbiwgc2V0SXNEZWxldGVNb2RhbE9wZW5dID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBba2V5VG9EZWxldGUsIHNldEtleVRvRGVsZXRlXSA9IHVzZVN0YXRlPHN0cmluZyB8IG51bGw+KG51bGwpO1xuICBjb25zdCBbc2VsZWN0ZWRJdGVtLCBzZXRTZWxlY3RlZEl0ZW1dID0gdXNlU3RhdGU8SXRlbURhdGEgfCBudWxsPihudWxsKTtcbiAgY29uc3QgW3NwZW5kRGF0YSwgc2V0U3BlbmREYXRhXSA9IHVzZVN0YXRlPHsgZGF5OiBzdHJpbmc7IHNwZW5kOiBudW1iZXIgfVtdIHwgbnVsbD4oXG4gICAgbnVsbFxuICApO1xuICBjb25zdCBbcHJlZGljdGVkU3BlbmRTdHJpbmcsIHNldFByZWRpY3RlZFNwZW5kU3RyaW5nXSA9IHVzZVN0YXRlKFwiXCIpO1xuXG4gIGNvbnN0IFtlZGl0TW9kYWxWaXNpYmxlLCBzZXRFZGl0TW9kYWxWaXNpYmxlXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW2luZm9EaWFsb2dWaXNpYmxlLCBzZXRJbmZvRGlhbG9nVmlzaWJsZV0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtzZWxlY3RlZFRva2VuLCBzZXRTZWxlY3RlZFRva2VuXSA9IHVzZVN0YXRlPEl0ZW1EYXRhIHwgbnVsbD4obnVsbCk7XG4gIGNvbnN0IFt1c2VyTW9kZWxzLCBzZXRVc2VyTW9kZWxzXSA9IHVzZVN0YXRlKFtdKTtcbiAgY29uc3QgaW5pdGlhbEtub3duVGVhbUlEczogU2V0PHN0cmluZz4gPSBuZXcgU2V0KCk7XG4gIGNvbnN0IFttb2RlbExpbWl0TW9kYWxWaXNpYmxlLCBzZXRNb2RlbExpbWl0TW9kYWxWaXNpYmxlXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW3JlZ2VuZXJhdGVEaWFsb2dWaXNpYmxlLCBzZXRSZWdlbmVyYXRlRGlhbG9nVmlzaWJsZV0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtyZWdlbmVyYXRlZEtleSwgc2V0UmVnZW5lcmF0ZWRLZXldID0gdXNlU3RhdGU8c3RyaW5nIHwgbnVsbD4obnVsbCk7XG4gIGNvbnN0IFtyZWdlbmVyYXRlRm9ybURhdGEsIHNldFJlZ2VuZXJhdGVGb3JtRGF0YV0gPSB1c2VTdGF0ZTxhbnk+KG51bGwpO1xuICBjb25zdCBbcmVnZW5lcmF0ZUZvcm1dID0gRm9ybS51c2VGb3JtKCk7XG4gIGNvbnN0IFtuZXdFeHBpcnlUaW1lLCBzZXROZXdFeHBpcnlUaW1lXSA9IHVzZVN0YXRlPHN0cmluZyB8IG51bGw+KG51bGwpO1xuXG4gIGNvbnN0IFtrbm93blRlYW1JRHMsIHNldEtub3duVGVhbUlEc10gPSB1c2VTdGF0ZShpbml0aWFsS25vd25UZWFtSURzKTtcblxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgY2FsY3VsYXRlTmV3RXhwaXJ5VGltZSA9IChkdXJhdGlvbjogc3RyaW5nIHwgdW5kZWZpbmVkKSA9PiB7XG4gICAgICBpZiAoIWR1cmF0aW9uKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICBcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XG4gICAgICAgIGxldCBuZXdFeHBpcnk6IERhdGU7XG4gIFxuICAgICAgICBpZiAoZHVyYXRpb24uZW5kc1dpdGgoJ3MnKSkge1xuICAgICAgICAgIG5ld0V4cGlyeSA9IGFkZChub3csIHsgc2Vjb25kczogcGFyc2VJbnQoZHVyYXRpb24pIH0pO1xuICAgICAgICB9IGVsc2UgaWYgKGR1cmF0aW9uLmVuZHNXaXRoKCdoJykpIHtcbiAgICAgICAgICBuZXdFeHBpcnkgPSBhZGQobm93LCB7IGhvdXJzOiBwYXJzZUludChkdXJhdGlvbikgfSk7XG4gICAgICAgIH0gZWxzZSBpZiAoZHVyYXRpb24uZW5kc1dpdGgoJ2QnKSkge1xuICAgICAgICAgIG5ld0V4cGlyeSA9IGFkZChub3csIHsgZGF5czogcGFyc2VJbnQoZHVyYXRpb24pIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBkdXJhdGlvbiBmb3JtYXQnKTtcbiAgICAgICAgfVxuICBcbiAgICAgICAgcmV0dXJuIG5ld0V4cGlyeS50b0xvY2FsZVN0cmluZygnZW4tVVMnLCB7XG4gICAgICAgICAgeWVhcjogJ251bWVyaWMnLFxuICAgICAgICAgIG1vbnRoOiAnbnVtZXJpYycsXG4gICAgICAgICAgZGF5OiAnbnVtZXJpYycsXG4gICAgICAgICAgaG91cjogJ251bWVyaWMnLFxuICAgICAgICAgIG1pbnV0ZTogJ251bWVyaWMnLFxuICAgICAgICAgIHNlY29uZDogJ251bWVyaWMnLFxuICAgICAgICAgIGhvdXIxMjogdHJ1ZVxuICAgICAgICB9KTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBjb25zb2xlLmxvZyhcImluIGNhbGN1bGF0ZU5ld0V4cGlyeVRpbWUgZm9yIHNlbGVjdGVkVG9rZW5cIiwgc2VsZWN0ZWRUb2tlbik7XG4gICAgICAgIFxuICBcbiAgICAvLyBXaGVuIGEgbmV3IGR1cmF0aW9uIGlzIGVudGVyZWRcbiAgICBpZiAocmVnZW5lcmF0ZUZvcm1EYXRhPy5kdXJhdGlvbikge1xuICAgICAgc2V0TmV3RXhwaXJ5VGltZShjYWxjdWxhdGVOZXdFeHBpcnlUaW1lKHJlZ2VuZXJhdGVGb3JtRGF0YS5kdXJhdGlvbikpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzZXROZXdFeHBpcnlUaW1lKG51bGwpO1xuICAgIH1cblxuICAgIGNvbnNvbGUubG9nKFwiY2FsY3VsYXRlTmV3RXhwaXJ5VGltZTpcIiwgbmV3RXhwaXJ5VGltZSk7XG4gIH0sIFtzZWxlY3RlZFRva2VuLCByZWdlbmVyYXRlRm9ybURhdGE/LmR1cmF0aW9uXSk7XG4gIFxuXG4gIFxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgZmV0Y2hVc2VyTW9kZWxzID0gYXN5bmMgKCkgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgaWYgKHVzZXJJRCA9PT0gbnVsbCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChhY2Nlc3NUb2tlbiAhPT0gbnVsbCAmJiB1c2VyUm9sZSAhPT0gbnVsbCkge1xuICAgICAgICAgIGNvbnN0IG1vZGVsX2F2YWlsYWJsZSA9IGF3YWl0IG1vZGVsQXZhaWxhYmxlQ2FsbChhY2Nlc3NUb2tlbiwgdXNlcklELCB1c2VyUm9sZSk7XG4gICAgICAgICAgbGV0IGF2YWlsYWJsZV9tb2RlbF9uYW1lcyA9IG1vZGVsX2F2YWlsYWJsZVtcImRhdGFcIl0ubWFwKFxuICAgICAgICAgICAgKGVsZW1lbnQ6IHsgaWQ6IHN0cmluZyB9KSA9PiBlbGVtZW50LmlkXG4gICAgICAgICAgKTtcbiAgICAgICAgICBjb25zb2xlLmxvZyhcImF2YWlsYWJsZV9tb2RlbF9uYW1lczpcIiwgYXZhaWxhYmxlX21vZGVsX25hbWVzKTtcbiAgICAgICAgICBzZXRVc2VyTW9kZWxzKGF2YWlsYWJsZV9tb2RlbF9uYW1lcyk7XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoXCJFcnJvciBmZXRjaGluZyB1c2VyIG1vZGVsczpcIiwgZXJyb3IpO1xuICAgICAgfVxuICAgIH07XG4gIFxuICAgIGZldGNoVXNlck1vZGVscygpO1xuICB9LCBbYWNjZXNzVG9rZW4sIHVzZXJJRCwgdXNlclJvbGVdKTtcblxuXG4gIGNvbnN0IGhhbmRsZU1vZGVsTGltaXRDbGljayA9ICh0b2tlbjogSXRlbURhdGEpID0+IHtcbiAgICBzZXRTZWxlY3RlZFRva2VuKHRva2VuKTtcbiAgICBzZXRNb2RlbExpbWl0TW9kYWxWaXNpYmxlKHRydWUpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZU1vZGVsTGltaXRTdWJtaXQgPSBhc3luYyAodXBkYXRlZE1ldGFkYXRhOiBhbnkpID0+IHtcbiAgICBpZiAoYWNjZXNzVG9rZW4gPT0gbnVsbCB8fCBzZWxlY3RlZFRva2VuID09IG51bGwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBmb3JtVmFsdWVzID0ge1xuICAgICAgLi4uc2VsZWN0ZWRUb2tlbixcbiAgICAgIG1ldGFkYXRhOiB1cGRhdGVkTWV0YWRhdGEsXG4gICAgICBrZXk6IHNlbGVjdGVkVG9rZW4udG9rZW4sXG4gICAgfTtcblxuICAgIHRyeSB7XG4gICAgICBsZXQgbmV3S2V5VmFsdWVzID0gYXdhaXQga2V5VXBkYXRlQ2FsbChhY2Nlc3NUb2tlbiwgZm9ybVZhbHVlcyk7XG4gICAgICBjb25zb2xlLmxvZyhcIk1vZGVsIGxpbWl0cyB1cGRhdGVkOlwiLCBuZXdLZXlWYWx1ZXMpO1xuXG4gICAgICAvLyBVcGRhdGUgdGhlIGtleXMgd2l0aCB0aGUgdXBkYXRlZCBrZXlcbiAgICAgIGlmIChkYXRhKSB7XG4gICAgICAgIGNvbnN0IHVwZGF0ZWREYXRhID0gZGF0YS5tYXAoKGtleSkgPT5cbiAgICAgICAgICBrZXkudG9rZW4gPT09IHNlbGVjdGVkVG9rZW4udG9rZW4gPyBuZXdLZXlWYWx1ZXMgOiBrZXlcbiAgICAgICAgKTtcbiAgICAgICAgc2V0RGF0YSh1cGRhdGVkRGF0YSk7XG4gICAgICB9XG4gICAgICBtZXNzYWdlLnN1Y2Nlc3MoXCJNb2RlbC1zcGVjaWZpYyBsaW1pdHMgdXBkYXRlZCBzdWNjZXNzZnVsbHlcIik7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoXCJFcnJvciB1cGRhdGluZyBtb2RlbC1zcGVjaWZpYyBsaW1pdHM6XCIsIGVycm9yKTtcbiAgICAgIG1lc3NhZ2UuZXJyb3IoXCJGYWlsZWQgdG8gdXBkYXRlIG1vZGVsLXNwZWNpZmljIGxpbWl0c1wiKTtcbiAgICB9XG5cbiAgICBzZXRNb2RlbExpbWl0TW9kYWxWaXNpYmxlKGZhbHNlKTtcbiAgICBzZXRTZWxlY3RlZFRva2VuKG51bGwpO1xuICB9O1xuXG5cblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICh0ZWFtcykge1xuICAgICAgY29uc3QgdGVhbUlEU2V0OiBTZXQ8c3RyaW5nPiA9IG5ldyBTZXQoKTtcbiAgICAgIHRlYW1zLmZvckVhY2goKHRlYW06IGFueSwgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgICBjb25zdCB0ZWFtX29iajogc3RyaW5nID0gdGVhbS50ZWFtX2lkXG4gICAgICAgIHRlYW1JRFNldC5hZGQodGVhbV9vYmopO1xuICAgICAgfSk7XG4gICAgICBzZXRLbm93blRlYW1JRHModGVhbUlEU2V0KVxuICAgIH1cbiAgfSwgW3RlYW1zXSlcbiAgY29uc3QgRWRpdEtleU1vZGFsOiBSZWFjdC5GQzxFZGl0S2V5TW9kYWxQcm9wcz4gPSAoeyB2aXNpYmxlLCBvbkNhbmNlbCwgdG9rZW4sIG9uU3VibWl0IH0pID0+IHtcbiAgICBjb25zdCBbZm9ybV0gPSBGb3JtLnVzZUZvcm0oKTtcbiAgICBjb25zdCBba2V5VGVhbSwgc2V0S2V5VGVhbV0gPSB1c2VTdGF0ZShzZWxlY3RlZFRlYW0pO1xuICAgIGNvbnN0IFtlcnJvck1vZGVscywgc2V0RXJyb3JNb2RlbHNdID0gdXNlU3RhdGU8c3RyaW5nW10+KFtdKTtcbiAgICBjb25zdCBbZXJyb3JCdWRnZXQsIHNldEVycm9yQnVkZ2V0XSA9IHVzZVN0YXRlPGJvb2xlYW4+KGZhbHNlKTtcblxuICAgIGNvbnN0IGhhbmRsZU9rID0gKCkgPT4ge1xuICAgICAgZm9ybVxuICAgICAgICAudmFsaWRhdGVGaWVsZHMoKVxuICAgICAgICAudGhlbigodmFsdWVzKSA9PiB7XG4gICAgICAgICAgLy8gY29uc3QgdXBkYXRlZFZhbHVlcyA9IHsuLi52YWx1ZXMsIHRlYW1faWQ6IHRlYW0udGVhbV9pZH07XG4gICAgICAgICAgLy8gb25TdWJtaXQodXBkYXRlZFZhbHVlcyk7XG4gICAgICAgICAgZm9ybS5yZXNldEZpZWxkcygpO1xuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcihcIlZhbGlkYXRpb24gZmFpbGVkOlwiLCBlcnJvcik7XG4gICAgICAgIH0pO1xuICAgICAgfTtcblxuICAgIHJldHVybiAoXG4gICAgICAgIDxNb2RhbFxuICAgICAgICAgICAgICB0aXRsZT1cIkVkaXQgS2V5XCJcbiAgICAgICAgICAgICAgdmlzaWJsZT17dmlzaWJsZX1cbiAgICAgICAgICAgICAgd2lkdGg9ezgwMH1cbiAgICAgICAgICAgICAgZm9vdGVyPXtudWxsfVxuICAgICAgICAgICAgICBvbk9rPXtoYW5kbGVPa31cbiAgICAgICAgICAgICAgb25DYW5jZWw9e29uQ2FuY2VsfVxuICAgICAgICAgICAgPlxuICAgICAgICA8Rm9ybVxuICAgICAgICAgIGZvcm09e2Zvcm19XG4gICAgICAgICAgb25GaW5pc2g9e2hhbmRsZUVkaXRTdWJtaXR9XG4gICAgICAgICAgaW5pdGlhbFZhbHVlcz17ey4uLnRva2VuLCBidWRnZXRfZHVyYXRpb246IHRva2VuLmJ1ZGdldF9kdXJhdGlvbn19IC8vIFBhc3MgaW5pdGlhbCB2YWx1ZXMgaGVyZVxuICAgICAgICAgIGxhYmVsQ29sPXt7IHNwYW46IDggfX1cbiAgICAgICAgICB3cmFwcGVyQ29sPXt7IHNwYW46IDE2IH19XG4gICAgICAgICAgbGFiZWxBbGlnbj1cImxlZnRcIlxuICAgICAgICA+XG4gICAgICAgICAgICAgICAgPD5cblxuICAgICAgICAgICAgICAgIDxGb3JtLkl0ZW0gbmFtZT1cImtleV9hbGlhc1wiIGxhYmVsPVwiS2V5IEFsaWFzXCI+XG4gICAgICAgICAgICAgICAgICA8VGV4dElucHV0IC8+XG4gICAgICAgICAgICAgICAgPC9Gb3JtLkl0ZW0+XG5cbiAgICAgICAgICAgICAgPEZvcm0uSXRlbSBsYWJlbD1cIk1vZGVsc1wiIG5hbWU9XCJtb2RlbHNcIiBydWxlcz17W1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIHZhbGlkYXRvcjogKHJ1bGUsIHZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGVycm9yTW9kZWxzID0gdmFsdWUuZmlsdGVyKChtb2RlbDogc3RyaW5nKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgIWtleVRlYW0ubW9kZWxzLmluY2x1ZGVzKG1vZGVsKSAmJiBcbiAgICAgICAgICAgICAgICAgICAgICBtb2RlbCAhPT0gXCJhbGwtdGVhbS1tb2RlbHNcIiAmJiBcbiAgICAgICAgICAgICAgICAgICAgICBtb2RlbCAhPT0gXCJhbGwtcHJveHktbW9kZWxzXCIgJiYgXG4gICAgICAgICAgICAgICAgICAgICAgIWtleVRlYW0ubW9kZWxzLmluY2x1ZGVzKFwiYWxsLXByb3h5LW1vZGVsc1wiKVxuICAgICAgICAgICAgICAgICAgICApKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coYGVycm9yTW9kZWxzOiAke2Vycm9yTW9kZWxzfWApXG4gICAgICAgICAgICAgICAgICAgIGlmIChlcnJvck1vZGVscy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGBTb21lIG1vZGVscyBhcmUgbm90IHBhcnQgb2YgdGhlIG5ldyB0ZWFtXFwncyBtb2RlbHMgLSAke2Vycm9yTW9kZWxzfVRlYW0gbW9kZWxzOiAke2tleVRlYW0ubW9kZWxzfWApO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgXX0+XG4gICAgICAgICAgICAgICAgPFNlbGVjdFxuICAgICAgICAgICAgICAgICAgbW9kZT1cIm11bHRpcGxlXCJcbiAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VsZWN0IG1vZGVsc1wiXG4gICAgICAgICAgICAgICAgICBzdHlsZT17eyB3aWR0aDogXCIxMDAlXCIgfX1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8T3B0aW9uIGtleT1cImFsbC10ZWFtLW1vZGVsc1wiIHZhbHVlPVwiYWxsLXRlYW0tbW9kZWxzXCI+XG4gICAgICAgICAgICAgICAgICAgIEFsbCBUZWFtIE1vZGVsc1xuICAgICAgICAgICAgICAgICAgPC9PcHRpb24+ICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAge2tleVRlYW0gJiYga2V5VGVhbS5tb2RlbHMgPyAoXG4gICAgICAgICAgICAgICAgICAgIGtleVRlYW0ubW9kZWxzLmluY2x1ZGVzKFwiYWxsLXByb3h5LW1vZGVsc1wiKSA/IChcbiAgICAgICAgICAgICAgICAgICAgICB1c2VyTW9kZWxzLmZpbHRlcihtb2RlbCA9PiBtb2RlbCAhPT0gXCJhbGwtcHJveHktbW9kZWxzXCIpLm1hcCgobW9kZWw6IHN0cmluZykgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgPE9wdGlvbiBrZXk9e21vZGVsfSB2YWx1ZT17bW9kZWx9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7bW9kZWx9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L09wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICApKVxuICAgICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAgIGtleVRlYW0ubW9kZWxzLm1hcCgobW9kZWw6IHN0cmluZykgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgPE9wdGlvbiBrZXk9e21vZGVsfSB2YWx1ZT17bW9kZWx9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7bW9kZWx9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L09wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICApKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICB1c2VyTW9kZWxzLm1hcCgobW9kZWw6IHN0cmluZykgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgIDxPcHRpb24ga2V5PXttb2RlbH0gdmFsdWU9e21vZGVsfT5cbiAgICAgICAgICAgICAgICAgICAgICAgIHttb2RlbH1cbiAgICAgICAgICAgICAgICAgICAgICA8L09wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgKSlcbiAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgPC9TZWxlY3Q+XG4gICAgICAgICAgICAgIDwvRm9ybS5JdGVtPlxuICAgICAgICAgICAgICA8Rm9ybS5JdGVtIFxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cIm10LThcIlxuICAgICAgICAgICAgICAgIGxhYmVsPVwiTWF4IEJ1ZGdldCAoVVNEKVwiIFxuICAgICAgICAgICAgICAgIG5hbWU9XCJtYXhfYnVkZ2V0XCIgXG4gICAgICAgICAgICAgICAgaGVscD17YEJ1ZGdldCBjYW5ub3QgZXhjZWVkIHRlYW0gbWF4IGJ1ZGdldDogJHtrZXlUZWFtPy5tYXhfYnVkZ2V0ICE9PSBudWxsICYmIGtleVRlYW0/Lm1heF9idWRnZXQgIT09IHVuZGVmaW5lZCA/IGtleVRlYW0/Lm1heF9idWRnZXQgOiAndW5saW1pdGVkJ31gfVxuICAgICAgICAgICAgICAgIHJ1bGVzPXtbXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdG9yOiBhc3luYyAoXywgdmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlICYmIGtleVRlYW0gJiYga2V5VGVhbS5tYXhfYnVkZ2V0ICE9PSBudWxsICYmIHZhbHVlID4ga2V5VGVhbS5tYXhfYnVkZ2V0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhga2V5VGVhbS5tYXhfYnVkZ2V0OiAke2tleVRlYW0ubWF4X2J1ZGdldH1gKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBCdWRnZXQgY2Fubm90IGV4Y2VlZCB0ZWFtIG1heCBidWRnZXQ6ICQke2tleVRlYW0ubWF4X2J1ZGdldH1gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBdfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPElucHV0TnVtYmVyIHN0ZXA9ezAuMDF9IHByZWNpc2lvbj17Mn0gd2lkdGg9ezIwMH0gLz5cbiAgICAgICAgICAgICAgPC9Gb3JtLkl0ZW0+XG5cbiAgICAgICAgICAgICAgPEZvcm0uSXRlbSBcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJtdC04XCJcbiAgICAgICAgICAgICAgICBsYWJlbD1cIlJlc2V0IEJ1ZGdldFwiXG4gICAgICAgICAgICAgICAgbmFtZT1cImJ1ZGdldF9kdXJhdGlvblwiXG4gICAgICAgICAgICAgICAgaGVscD17YEN1cnJlbnQgUmVzZXQgQnVkZ2V0OiAke1xuICAgICAgICAgICAgICAgICAgdG9rZW4uYnVkZ2V0X2R1cmF0aW9uXG4gICAgICAgICAgICAgICAgfSwgYnVkZ2V0IHdpbGwgYmUgcmVzZXQ6ICR7dG9rZW4uYnVkZ2V0X3Jlc2V0X2F0ID8gbmV3IERhdGUodG9rZW4uYnVkZ2V0X3Jlc2V0X2F0KS50b0xvY2FsZVN0cmluZygpIDogJ05ldmVyJ31gfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPFNlbGVjdCBwbGFjZWhvbGRlcj1cIm4vYVwiPlxuICAgICAgICAgICAgICAgICAgPFNlbGVjdC5PcHRpb24gdmFsdWU9XCJkYWlseVwiPmRhaWx5PC9TZWxlY3QuT3B0aW9uPlxuICAgICAgICAgICAgICAgICAgPFNlbGVjdC5PcHRpb24gdmFsdWU9XCJ3ZWVrbHlcIj53ZWVrbHk8L1NlbGVjdC5PcHRpb24+XG4gICAgICAgICAgICAgICAgICA8U2VsZWN0Lk9wdGlvbiB2YWx1ZT1cIm1vbnRobHlcIj5tb250aGx5PC9TZWxlY3QuT3B0aW9uPlxuICAgICAgICAgICAgICAgIDwvU2VsZWN0PlxuICAgICAgICAgICAgICA8L0Zvcm0uSXRlbT5cbiAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgIDxGb3JtLkl0ZW1cbiAgICAgICAgICAgICAgICAgIGxhYmVsPVwidG9rZW5cIlxuICAgICAgICAgICAgICAgICAgbmFtZT1cInRva2VuXCJcbiAgICAgICAgICAgICAgICAgIGhpZGRlbj17dHJ1ZX1cbiAgICAgICAgICAgICAgICA+PC9Gb3JtLkl0ZW0+XG4gICAgICAgICAgICAgIDxGb3JtLkl0ZW0gXG4gICAgICAgICAgICAgICAgbGFiZWw9XCJUZWFtXCIgXG4gICAgICAgICAgICAgICAgbmFtZT1cInRlYW1faWRcIlxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cIm10LThcIlxuICAgICAgICAgICAgICAgIGhlbHA9XCJ0aGUgdGVhbSB0aGlzIGtleSBiZWxvbmdzIHRvXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxTZWxlY3QzIHZhbHVlPXt0b2tlbi50ZWFtX2FsaWFzfT5cbiAgICAgICAgICAgICAgICB7dGVhbXM/Lm1hcCgodGVhbV9vYmosIGluZGV4KSA9PiAoXG4gICAgICAgICAgICAgICAgICAgIDxTZWxlY3RJdGVtXG4gICAgICAgICAgICAgICAgICAgICAga2V5PXtpbmRleH1cbiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17dGVhbV9vYmoudGVhbV9pZH1cbiAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRLZXlUZWFtKHRlYW1fb2JqKX1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIHt0ZWFtX29iai50ZWFtX2FsaWFzfVxuICAgICAgICAgICAgICAgICAgICA8L1NlbGVjdEl0ZW0+XG4gICAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgPC9TZWxlY3QzPlxuICAgICAgICAgICAgICA8L0Zvcm0uSXRlbT5cblxuICAgICAgICAgICAgICA8Rm9ybS5JdGVtIFxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cIm10LThcIlxuICAgICAgICAgICAgICAgIGxhYmVsPVwiVFBNIExpbWl0ICh0b2tlbnMgcGVyIG1pbnV0ZSlcIiBcbiAgICAgICAgICAgICAgICBuYW1lPVwidHBtX2xpbWl0XCIgXG4gICAgICAgICAgICAgICAgaGVscD17YHRwbV9saW1pdCBjYW5ub3QgZXhjZWVkIHRlYW0gdHBtX2xpbWl0ICR7a2V5VGVhbT8udHBtX2xpbWl0ICE9PSBudWxsICYmIGtleVRlYW0/LnRwbV9saW1pdCAhPT0gdW5kZWZpbmVkID8ga2V5VGVhbT8udHBtX2xpbWl0IDogJ3VubGltaXRlZCd9YH1cbiAgICAgICAgICAgICAgICBydWxlcz17W1xuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRvcjogYXN5bmMgKF8sIHZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZSAmJiBrZXlUZWFtICYmIGtleVRlYW0udHBtX2xpbWl0ICE9PSBudWxsICYmIHZhbHVlID4ga2V5VGVhbS50cG1fbGltaXQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGBrZXlUZWFtLnRwbV9saW1pdDogJHtrZXlUZWFtLnRwbV9saW1pdH1gKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGB0cG1fbGltaXQgY2Fubm90IGV4Y2VlZCB0ZWFtIG1heCB0cG1fbGltaXQ6ICQke2tleVRlYW0udHBtX2xpbWl0fWApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIF19XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8SW5wdXROdW1iZXIgc3RlcD17MX0gcHJlY2lzaW9uPXsxfSB3aWR0aD17MjAwfSAvPlxuICAgICAgICAgICAgICA8L0Zvcm0uSXRlbT5cbiAgICAgICAgICAgICAgPEZvcm0uSXRlbSBcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJtdC04XCJcbiAgICAgICAgICAgICAgICBsYWJlbD1cIlJQTSBMaW1pdCAocmVxdWVzdHMgcGVyIG1pbnV0ZSlcIiBcbiAgICAgICAgICAgICAgICBuYW1lPVwicnBtX2xpbWl0XCIgXG4gICAgICAgICAgICAgICAgaGVscD17YHJwbV9saW1pdCBjYW5ub3QgZXhjZWVkIHRlYW0gbWF4IHRwbV9saW1pdDogJHtrZXlUZWFtPy5ycG1fbGltaXQgIT09IG51bGwgJiYga2V5VGVhbT8ucnBtX2xpbWl0ICE9PSB1bmRlZmluZWQgPyBrZXlUZWFtPy5ycG1fbGltaXQgOiAndW5saW1pdGVkJ31gfVxuICAgICAgICAgICAgICAgIHJ1bGVzPXtbXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdG9yOiBhc3luYyAoXywgdmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlICYmIGtleVRlYW0gJiYga2V5VGVhbS5ycG1fbGltaXQgIT09IG51bGwgJiYgdmFsdWUgPiBrZXlUZWFtLnJwbV9saW1pdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coYGtleVRlYW0ucnBtX2xpbWl0OiAke2tleVRlYW0ucnBtX2xpbWl0fWApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYHJwbV9saW1pdCBjYW5ub3QgZXhjZWVkIHRlYW0gbWF4IHJwbV9saW1pdDogJCR7a2V5VGVhbS5ycG1fbGltaXR9YCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgXX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxJbnB1dE51bWJlciBzdGVwPXsxfSBwcmVjaXNpb249ezF9IHdpZHRoPXsyMDB9IC8+XG4gICAgICAgICAgICAgIDwvRm9ybS5JdGVtPlxuICAgICAgICAgICAgPC8+XG4gICAgICAgICAgPGRpdiBzdHlsZT17eyB0ZXh0QWxpZ246IFwicmlnaHRcIiwgbWFyZ2luVG9wOiBcIjEwcHhcIiB9fT5cbiAgICAgICAgICAgIDxCdXR0b24yIGh0bWxUeXBlPVwic3VibWl0XCI+RWRpdCBLZXk8L0J1dHRvbjI+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvRm9ybT5cbiAgICAgIDwvTW9kYWw+XG4gICAgKTtcbiAgfTtcblxuICBjb25zdCBNb2RlbExpbWl0TW9kYWw6IFJlYWN0LkZDPE1vZGVsTGltaXRNb2RhbFByb3BzPiA9ICh7IHZpc2libGUsIG9uQ2FuY2VsLCB0b2tlbiwgb25TdWJtaXQsIGFjY2Vzc1Rva2VuIH0pID0+IHtcbiAgICBjb25zdCBbbW9kZWxMaW1pdHMsIHNldE1vZGVsTGltaXRzXSA9IHVzZVN0YXRlPHsgW2tleTogc3RyaW5nXTogeyB0cG06IG51bWJlciwgcnBtOiBudW1iZXIgfSB9Pih7fSk7XG4gICAgY29uc3QgW2F2YWlsYWJsZU1vZGVscywgc2V0QXZhaWxhYmxlTW9kZWxzXSA9IHVzZVN0YXRlPHN0cmluZ1tdPihbXSk7XG4gICAgY29uc3QgW25ld01vZGVsUm93LCBzZXROZXdNb2RlbFJvd10gPSB1c2VTdGF0ZTxzdHJpbmcgfCBudWxsPihudWxsKTtcblxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICBpZiAodG9rZW4ubWV0YWRhdGEpIHtcbiAgICAgICAgY29uc3QgdHBtTGltaXRzID0gdG9rZW4ubWV0YWRhdGEubW9kZWxfdHBtX2xpbWl0IHx8IHt9O1xuICAgICAgICBjb25zdCBycG1MaW1pdHMgPSB0b2tlbi5tZXRhZGF0YS5tb2RlbF9ycG1fbGltaXQgfHwge307XG4gICAgICAgIGNvbnN0IGNvbWJpbmVkTGltaXRzOiB7IFtrZXk6IHN0cmluZ106IHsgdHBtOiBudW1iZXIsIHJwbTogbnVtYmVyIH0gfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgT2JqZWN0LmtleXMoeyAuLi50cG1MaW1pdHMsIC4uLnJwbUxpbWl0cyB9KS5mb3JFYWNoKG1vZGVsID0+IHtcbiAgICAgICAgICBjb21iaW5lZExpbWl0c1ttb2RlbF0gPSB7XG4gICAgICAgICAgICB0cG06IHRwbUxpbWl0c1ttb2RlbF0gfHwgMCxcbiAgICAgICAgICAgIHJwbTogcnBtTGltaXRzW21vZGVsXSB8fCAwXG4gICAgICAgICAgfTtcbiAgICAgICAgfSk7XG4gICAgICAgIFxuICAgICAgICBzZXRNb2RlbExpbWl0cyhjb21iaW5lZExpbWl0cyk7XG4gICAgICB9XG4gICAgICBcbiAgICAgIGNvbnN0IGZldGNoQXZhaWxhYmxlTW9kZWxzID0gYXN5bmMgKCkgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IG1vZGVsRGF0YVJlc3BvbnNlID0gYXdhaXQgbW9kZWxJbmZvQ2FsbChhY2Nlc3NUb2tlbiwgXCJcIiwgXCJcIik7XG4gICAgICAgICAgY29uc3QgYWxsTW9kZWxHcm91cHM6IHN0cmluZ1tdID0gQXJyYXkuZnJvbShuZXcgU2V0KG1vZGVsRGF0YVJlc3BvbnNlLmRhdGEubWFwKChtb2RlbDogYW55KSA9PiBtb2RlbC5tb2RlbF9uYW1lKSkpO1xuICAgICAgICAgIHNldEF2YWlsYWJsZU1vZGVscyhhbGxNb2RlbEdyb3Vwcyk7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcihcIkVycm9yIGZldGNoaW5nIG1vZGVsIGRhdGE6XCIsIGVycm9yKTtcbiAgICAgICAgICBtZXNzYWdlLmVycm9yKFwiRmFpbGVkIHRvIGZldGNoIGF2YWlsYWJsZSBtb2RlbHNcIik7XG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIGZldGNoQXZhaWxhYmxlTW9kZWxzKCk7XG4gICAgfSwgW3Rva2VuLCBhY2Nlc3NUb2tlbl0pO1xuXG4gICAgY29uc3QgaGFuZGxlTGltaXRDaGFuZ2UgPSAobW9kZWw6IHN0cmluZywgdHlwZTogJ3RwbScgfCAncnBtJywgdmFsdWU6IG51bWJlciB8IG51bGwpID0+IHtcbiAgICAgIHNldE1vZGVsTGltaXRzKHByZXYgPT4gKHtcbiAgICAgICAgLi4ucHJldixcbiAgICAgICAgW21vZGVsXToge1xuICAgICAgICAgIC4uLnByZXZbbW9kZWxdLFxuICAgICAgICAgIFt0eXBlXTogdmFsdWUgfHwgMFxuICAgICAgICB9XG4gICAgICB9KSk7XG4gICAgfTtcblxuICAgIGNvbnN0IGhhbmRsZUFkZExpbWl0ID0gKCkgPT4ge1xuICAgICAgc2V0TmV3TW9kZWxSb3coJycpO1xuICAgIH07XG5cbiAgICBjb25zdCBoYW5kbGVNb2RlbFNlbGVjdCA9IChtb2RlbDogc3RyaW5nKSA9PiB7XG4gICAgICBpZiAoIW1vZGVsTGltaXRzW21vZGVsXSkge1xuICAgICAgICBzZXRNb2RlbExpbWl0cyhwcmV2ID0+ICh7XG4gICAgICAgICAgLi4ucHJldixcbiAgICAgICAgICBbbW9kZWxdOiB7IHRwbTogMCwgcnBtOiAwIH1cbiAgICAgICAgfSkpO1xuICAgICAgfVxuICAgICAgc2V0TmV3TW9kZWxSb3cobnVsbCk7XG4gICAgfTtcblxuICAgIGNvbnN0IGhhbmRsZVJlbW92ZU1vZGVsID0gKG1vZGVsOiBzdHJpbmcpID0+IHtcbiAgICAgIHNldE1vZGVsTGltaXRzKHByZXYgPT4ge1xuICAgICAgICBjb25zdCB7IFttb2RlbF06IF8sIC4uLnJlc3QgfSA9IHByZXY7XG4gICAgICAgIHJldHVybiByZXN0O1xuICAgICAgfSk7XG4gICAgfTtcblxuICAgIGNvbnN0IGhhbmRsZVN1Ym1pdCA9ICgpID0+IHtcbiAgICAgIGNvbnN0IHVwZGF0ZWRNZXRhZGF0YSA9IHtcbiAgICAgICAgLi4udG9rZW4ubWV0YWRhdGEsXG4gICAgICAgIG1vZGVsX3RwbV9saW1pdDogT2JqZWN0LmZyb21FbnRyaWVzKE9iamVjdC5lbnRyaWVzKG1vZGVsTGltaXRzKS5tYXAoKFttb2RlbCwgbGltaXRzXSkgPT4gW21vZGVsLCBsaW1pdHMudHBtXSkpLFxuICAgICAgICBtb2RlbF9ycG1fbGltaXQ6IE9iamVjdC5mcm9tRW50cmllcyhPYmplY3QuZW50cmllcyhtb2RlbExpbWl0cykubWFwKChbbW9kZWwsIGxpbWl0c10pID0+IFttb2RlbCwgbGltaXRzLnJwbV0pKSxcbiAgICAgIH07XG4gICAgICBvblN1Ym1pdCh1cGRhdGVkTWV0YWRhdGEpO1xuICAgIH07XG5cbiAgICByZXR1cm4gKFxuICAgICAgPE1vZGFsXG4gICAgICAgIHRpdGxlPVwiRWRpdCBNb2RlbC1TcGVjaWZpYyBMaW1pdHNcIlxuICAgICAgICB2aXNpYmxlPXt2aXNpYmxlfVxuICAgICAgICBvbkNhbmNlbD17b25DYW5jZWx9XG4gICAgICAgIGZvb3Rlcj17bnVsbH1cbiAgICAgICAgd2lkdGg9ezgwMH1cbiAgICAgID5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJzcGFjZS15LTRcIj5cbiAgICAgICAgICA8VGFibGU+XG4gICAgICAgICAgICA8VGFibGVIZWFkPlxuICAgICAgICAgICAgICA8VGFibGVSb3c+XG4gICAgICAgICAgICAgICAgPFRhYmxlSGVhZGVyQ2VsbD5Nb2RlbDwvVGFibGVIZWFkZXJDZWxsPlxuICAgICAgICAgICAgICAgIDxUYWJsZUhlYWRlckNlbGw+VFBNIExpbWl0PC9UYWJsZUhlYWRlckNlbGw+XG4gICAgICAgICAgICAgICAgPFRhYmxlSGVhZGVyQ2VsbD5SUE0gTGltaXQ8L1RhYmxlSGVhZGVyQ2VsbD5cbiAgICAgICAgICAgICAgICA8VGFibGVIZWFkZXJDZWxsPkFjdGlvbnM8L1RhYmxlSGVhZGVyQ2VsbD5cbiAgICAgICAgICAgICAgPC9UYWJsZVJvdz5cbiAgICAgICAgICAgIDwvVGFibGVIZWFkPlxuICAgICAgICAgICAgPFRhYmxlQm9keT5cbiAgICAgICAgICAgICAge09iamVjdC5lbnRyaWVzKG1vZGVsTGltaXRzKS5tYXAoKFttb2RlbCwgbGltaXRzXSkgPT4gKFxuICAgICAgICAgICAgICAgIDxUYWJsZVJvdyBrZXk9e21vZGVsfT5cbiAgICAgICAgICAgICAgICAgIDxUYWJsZUNlbGw+e21vZGVsfTwvVGFibGVDZWxsPlxuICAgICAgICAgICAgICAgICAgPFRhYmxlQ2VsbD5cbiAgICAgICAgICAgICAgICAgICAgPElucHV0TnVtYmVyXG4gICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2xpbWl0cy50cG19XG4gICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyh2YWx1ZSkgPT4gaGFuZGxlTGltaXRDaGFuZ2UobW9kZWwsICd0cG0nLCB2YWx1ZSl9XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICA8L1RhYmxlQ2VsbD5cbiAgICAgICAgICAgICAgICAgIDxUYWJsZUNlbGw+XG4gICAgICAgICAgICAgICAgICAgIDxJbnB1dE51bWJlclxuICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXtsaW1pdHMucnBtfVxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsodmFsdWUpID0+IGhhbmRsZUxpbWl0Q2hhbmdlKG1vZGVsLCAncnBtJywgdmFsdWUpfVxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgPC9UYWJsZUNlbGw+XG4gICAgICAgICAgICAgICAgICA8VGFibGVDZWxsPlxuICAgICAgICAgICAgICAgICAgICA8QnV0dG9uIG9uQ2xpY2s9eygpID0+IGhhbmRsZVJlbW92ZU1vZGVsKG1vZGVsKX0+XG4gICAgICAgICAgICAgICAgICAgICAgUmVtb3ZlXG4gICAgICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgPC9UYWJsZUNlbGw+XG4gICAgICAgICAgICAgICAgPC9UYWJsZVJvdz5cbiAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgIHtuZXdNb2RlbFJvdyAhPT0gbnVsbCAmJiAoXG4gICAgICAgICAgICAgICAgPFRhYmxlUm93PlxuICAgICAgICAgICAgICAgICAgPFRhYmxlQ2VsbD5cbiAgICAgICAgICAgICAgICAgICAgPFNlbGVjdFxuICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7IHdpZHRoOiAyMDAgfX1cbiAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlbGVjdCBhIG1vZGVsXCJcbiAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17aGFuZGxlTW9kZWxTZWxlY3R9XG4gICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e25ld01vZGVsUm93IHx8IHVuZGVmaW5lZH1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIHthdmFpbGFibGVNb2RlbHNcbiAgICAgICAgICAgICAgICAgICAgICAgIC5maWx0ZXIobSA9PiAhbW9kZWxMaW1pdHMuaGFzT3duUHJvcGVydHkobSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAubWFwKChtKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxPcHRpb24ga2V5PXttfSB2YWx1ZT17bX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge219XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvT3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgICAgICAgIDwvU2VsZWN0PlxuICAgICAgICAgICAgICAgICAgPC9UYWJsZUNlbGw+XG4gICAgICAgICAgICAgICAgICA8VGFibGVDZWxsPi08L1RhYmxlQ2VsbD5cbiAgICAgICAgICAgICAgICAgIDxUYWJsZUNlbGw+LTwvVGFibGVDZWxsPlxuICAgICAgICAgICAgICAgICAgPFRhYmxlQ2VsbD5cbiAgICAgICAgICAgICAgICAgICAgPEJ1dHRvbiBvbkNsaWNrPXsoKSA9PiBzZXROZXdNb2RlbFJvdyhudWxsKX0+XG4gICAgICAgICAgICAgICAgICAgICAgQ2FuY2VsXG4gICAgICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgPC9UYWJsZUNlbGw+XG4gICAgICAgICAgICAgICAgPC9UYWJsZVJvdz5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvVGFibGVCb2R5PlxuICAgICAgICAgIDwvVGFibGU+XG4gICAgICAgICAgPEJ1dHRvbiBvbkNsaWNrPXtoYW5kbGVBZGRMaW1pdH0gZGlzYWJsZWQ9e25ld01vZGVsUm93ICE9PSBudWxsfT5BZGQgTGltaXQ8L0J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBqdXN0aWZ5LWVuZCBzcGFjZS14LTQgbXQtNlwiPlxuICAgICAgICAgIDxCdXR0b24gb25DbGljaz17b25DYW5jZWx9PlxuICAgICAgICAgICAgQ2FuY2VsXG4gICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgPEJ1dHRvbiBvbkNsaWNrPXtoYW5kbGVTdWJtaXR9PlxuICAgICAgICAgICAgU2F2ZVxuICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvTW9kYWw+XG4gICAgKTtcbiAgfTtcbiAgXG5cbiAgXG4gIGNvbnN0IGhhbmRsZUVkaXRDbGljayA9ICh0b2tlbjogYW55KSA9PiB7XG4gICAgY29uc29sZS5sb2coXCJoYW5kbGVFZGl0Q2xpY2s6XCIsIHRva2VuKTtcblxuICAgIC8vIHNldCB0b2tlbi50b2tlbiB0byB0b2tlbi50b2tlbl9pZCBpZiB0b2tlbl9pZCBpcyBub3QgbnVsbFxuICAgIGlmICh0b2tlbi50b2tlbiA9PSBudWxsKSB7XG4gICAgICBpZiAodG9rZW4udG9rZW5faWQgIT09IG51bGwpIHtcbiAgICAgICAgdG9rZW4udG9rZW4gPSB0b2tlbi50b2tlbl9pZDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBDb252ZXJ0IHRoZSBidWRnZXRfZHVyYXRpb24gdG8gdGhlIGNvcnJlc3BvbmRpbmcgc2VsZWN0IG9wdGlvblxuICAgIGxldCBidWRnZXREdXJhdGlvbiA9IG51bGw7XG4gICAgaWYgKHRva2VuLmJ1ZGdldF9kdXJhdGlvbikge1xuICAgICAgc3dpdGNoICh0b2tlbi5idWRnZXRfZHVyYXRpb24pIHtcbiAgICAgICAgY2FzZSBcIjI0aFwiOlxuICAgICAgICAgIGJ1ZGdldER1cmF0aW9uID0gXCJkYWlseVwiO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwiN2RcIjpcbiAgICAgICAgICBidWRnZXREdXJhdGlvbiA9IFwid2Vla2x5XCI7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCIzMGRcIjpcbiAgICAgICAgICBidWRnZXREdXJhdGlvbiA9IFwibW9udGhseVwiO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIGJ1ZGdldER1cmF0aW9uID0gXCJOb25lXCI7XG4gICAgICB9XG4gICAgfVxuXG4gICAgc2V0U2VsZWN0ZWRUb2tlbih7XG4gICAgICAuLi50b2tlbixcbiAgICAgIGJ1ZGdldF9kdXJhdGlvbjogYnVkZ2V0RHVyYXRpb25cbiAgICB9KTtcblxuICAgIC8vc2V0U2VsZWN0ZWRUb2tlbih0b2tlbik7XG4gICAgc2V0RWRpdE1vZGFsVmlzaWJsZSh0cnVlKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVFZGl0Q2FuY2VsID0gKCkgPT4ge1xuICAgIHNldEVkaXRNb2RhbFZpc2libGUoZmFsc2UpO1xuICAgIHNldFNlbGVjdGVkVG9rZW4obnVsbCk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlRWRpdFN1Ym1pdCA9IGFzeW5jIChmb3JtVmFsdWVzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gIC8qKlxuICAgKiBDYWxsIEFQSSB0byB1cGRhdGUgdGVhbSB3aXRoIHRlYW1JZCBhbmQgdmFsdWVzXG4gICAqIFxuICAgKiBDbGllbnQtc2lkZSB2YWxpZGF0aW9uOiBGb3Igc2VsZWN0ZWQgdGVhbSwgZW5zdXJlIG1vZGVscyBpbiB0ZWFtICsgbWF4IGJ1ZGdldCA8IHRlYW0gbWF4IGJ1ZGdldFxuICAgKi9cbiAgaWYgKGFjY2Vzc1Rva2VuID09IG51bGwpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBjdXJyZW50S2V5ID0gZm9ybVZhbHVlcy50b2tlbjsgXG4gIGZvcm1WYWx1ZXMua2V5ID0gY3VycmVudEtleTtcblxuICAvLyBDb252ZXJ0IHRoZSBidWRnZXRfZHVyYXRpb24gYmFjayB0byB0aGUgQVBJIGV4cGVjdGVkIGZvcm1hdFxuICBpZiAoZm9ybVZhbHVlcy5idWRnZXRfZHVyYXRpb24pIHtcbiAgICBzd2l0Y2ggKGZvcm1WYWx1ZXMuYnVkZ2V0X2R1cmF0aW9uKSB7XG4gICAgICBjYXNlIFwiZGFpbHlcIjpcbiAgICAgICAgZm9ybVZhbHVlcy5idWRnZXRfZHVyYXRpb24gPSBcIjI0aFwiO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJ3ZWVrbHlcIjpcbiAgICAgICAgZm9ybVZhbHVlcy5idWRnZXRfZHVyYXRpb24gPSBcIjdkXCI7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcIm1vbnRobHlcIjpcbiAgICAgICAgZm9ybVZhbHVlcy5idWRnZXRfZHVyYXRpb24gPSBcIjMwZFwiO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBjb25zb2xlLmxvZyhcImhhbmRsZUVkaXRTdWJtaXQ6XCIsIGZvcm1WYWx1ZXMpO1xuXG4gIGxldCBuZXdLZXlWYWx1ZXMgPSBhd2FpdCBrZXlVcGRhdGVDYWxsKGFjY2Vzc1Rva2VuLCBmb3JtVmFsdWVzKTtcbiAgY29uc29sZS5sb2coXCJoYW5kbGVFZGl0U3VibWl0OiBuZXdLZXlWYWx1ZXNcIiwgbmV3S2V5VmFsdWVzKTtcblxuICAvLyBVcGRhdGUgdGhlIGtleXMgd2l0aCB0aGUgdXBkYXRlIGtleVxuICBpZiAoZGF0YSkge1xuICAgIGNvbnN0IHVwZGF0ZWREYXRhID0gZGF0YS5tYXAoKGtleSkgPT5cbiAgICAgIGtleS50b2tlbiA9PT0gY3VycmVudEtleSA/IG5ld0tleVZhbHVlcyA6IGtleVxuICAgICk7XG4gICAgc2V0RGF0YSh1cGRhdGVkRGF0YSk7XG4gIH1cbiAgbWVzc2FnZS5zdWNjZXNzKFwiS2V5IHVwZGF0ZWQgc3VjY2Vzc2Z1bGx5XCIpO1xuXG4gIHNldEVkaXRNb2RhbFZpc2libGUoZmFsc2UpO1xuICBzZXRTZWxlY3RlZFRva2VuKG51bGwpO1xuICB9O1xuXG5cbiAgY29uc3QgaGFuZGxlRGVsZXRlID0gYXN5bmMgKHRva2VuOiBhbnkpID0+IHtcbiAgICBjb25zb2xlLmxvZyhcImhhbmRsZURlbGV0ZTpcIiwgdG9rZW4pO1xuICAgIGlmICh0b2tlbi50b2tlbiA9PSBudWxsKSB7XG4gICAgICBpZiAodG9rZW4udG9rZW5faWQgIT09IG51bGwpIHtcbiAgICAgICAgdG9rZW4udG9rZW4gPSB0b2tlbi50b2tlbl9pZDtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGRhdGEgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIFNldCB0aGUga2V5IHRvIGRlbGV0ZSBhbmQgb3BlbiB0aGUgY29uZmlybWF0aW9uIG1vZGFsXG4gICAgc2V0S2V5VG9EZWxldGUodG9rZW4udG9rZW4pO1xuICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKFwidXNlckRhdGFcIiArIHVzZXJJRCk7XG4gICAgc2V0SXNEZWxldGVNb2RhbE9wZW4odHJ1ZSk7XG4gIH07XG5cbiAgY29uc3QgY29uZmlybURlbGV0ZSA9IGFzeW5jICgpID0+IHtcbiAgICBpZiAoa2V5VG9EZWxldGUgPT0gbnVsbCB8fCBkYXRhID09IG51bGwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgYXdhaXQga2V5RGVsZXRlQ2FsbChhY2Nlc3NUb2tlbiwga2V5VG9EZWxldGUpO1xuICAgICAgLy8gU3VjY2Vzc2Z1bGx5IGNvbXBsZXRlZCB0aGUgZGVsZXRpb24uIFVwZGF0ZSB0aGUgc3RhdGUgdG8gdHJpZ2dlciBhIHJlcmVuZGVyLlxuICAgICAgY29uc3QgZmlsdGVyZWREYXRhID0gZGF0YS5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0udG9rZW4gIT09IGtleVRvRGVsZXRlKTtcbiAgICAgIHNldERhdGEoZmlsdGVyZWREYXRhKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcihcIkVycm9yIGRlbGV0aW5nIHRoZSBrZXk6XCIsIGVycm9yKTtcbiAgICAgIC8vIEhhbmRsZSBhbnkgZXJyb3Igc2l0dWF0aW9ucywgc3VjaCBhcyBkaXNwbGF5aW5nIGFuIGVycm9yIG1lc3NhZ2UgdG8gdGhlIHVzZXIuXG4gICAgfVxuXG4gICAgLy8gQ2xvc2UgdGhlIGNvbmZpcm1hdGlvbiBtb2RhbCBhbmQgcmVzZXQgdGhlIGtleVRvRGVsZXRlXG4gICAgc2V0SXNEZWxldGVNb2RhbE9wZW4oZmFsc2UpO1xuICAgIHNldEtleVRvRGVsZXRlKG51bGwpO1xuICB9O1xuXG4gIGNvbnN0IGNhbmNlbERlbGV0ZSA9ICgpID0+IHtcbiAgICAvLyBDbG9zZSB0aGUgY29uZmlybWF0aW9uIG1vZGFsIGFuZCByZXNldCB0aGUga2V5VG9EZWxldGVcbiAgICBzZXRJc0RlbGV0ZU1vZGFsT3BlbihmYWxzZSk7XG4gICAgc2V0S2V5VG9EZWxldGUobnVsbCk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlUmVnZW5lcmF0ZUNsaWNrID0gKHRva2VuOiBhbnkpID0+IHtcbiAgICBzZXRTZWxlY3RlZFRva2VuKHRva2VuKTtcbiAgICBzZXROZXdFeHBpcnlUaW1lKG51bGwpO1xuICAgIHJlZ2VuZXJhdGVGb3JtLnNldEZpZWxkc1ZhbHVlKHtcbiAgICAgIGtleV9hbGlhczogdG9rZW4ua2V5X2FsaWFzLFxuICAgICAgbWF4X2J1ZGdldDogdG9rZW4ubWF4X2J1ZGdldCxcbiAgICAgIHRwbV9saW1pdDogdG9rZW4udHBtX2xpbWl0LFxuICAgICAgcnBtX2xpbWl0OiB0b2tlbi5ycG1fbGltaXQsXG4gICAgICBkdXJhdGlvbjogdG9rZW4uZHVyYXRpb24gfHwgJycsXG4gICAgfSk7XG4gICAgc2V0UmVnZW5lcmF0ZURpYWxvZ1Zpc2libGUodHJ1ZSk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlUmVnZW5lcmF0ZUZvcm1DaGFuZ2UgPSAoZmllbGQ6IHN0cmluZywgdmFsdWU6IGFueSkgPT4ge1xuICAgIHNldFJlZ2VuZXJhdGVGb3JtRGF0YSgocHJldjogYW55KSA9PiAoe1xuICAgICAgLi4ucHJldixcbiAgICAgIFtmaWVsZF06IHZhbHVlLFxuICAgIH0pKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVSZWdlbmVyYXRlS2V5ID0gYXN5bmMgKCkgPT4ge1xuICAgIGlmICghcHJlbWl1bVVzZXIpIHtcbiAgICAgIG1lc3NhZ2UuZXJyb3IoXCJSZWdlbmVyYXRlIEFQSSBLZXkgaXMgYW4gRW50ZXJwcmlzZSBmZWF0dXJlLiBQbGVhc2UgdXBncmFkZSB0byB1c2UgdGhpcyBmZWF0dXJlLlwiKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoc2VsZWN0ZWRUb2tlbiA9PSBudWxsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGZvcm1WYWx1ZXMgPSBhd2FpdCByZWdlbmVyYXRlRm9ybS52YWxpZGF0ZUZpZWxkcygpO1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCByZWdlbmVyYXRlS2V5Q2FsbChhY2Nlc3NUb2tlbiwgc2VsZWN0ZWRUb2tlbi50b2tlbiwgZm9ybVZhbHVlcyk7XG4gICAgICBzZXRSZWdlbmVyYXRlZEtleShyZXNwb25zZS5rZXkpO1xuXG4gICAgICAvLyBVcGRhdGUgdGhlIGRhdGEgc3RhdGUgd2l0aCB0aGUgbmV3IGtleV9uYW1lXG4gICAgICBpZiAoZGF0YSkge1xuICAgICAgICBjb25zdCB1cGRhdGVkRGF0YSA9IGRhdGEubWFwKGl0ZW0gPT4gXG4gICAgICAgICAgaXRlbS50b2tlbiA9PT0gc2VsZWN0ZWRUb2tlbj8udG9rZW4gXG4gICAgICAgICAgICA/IHsgLi4uaXRlbSwga2V5X25hbWU6IHJlc3BvbnNlLmtleV9uYW1lLCAuLi5mb3JtVmFsdWVzIH0gXG4gICAgICAgICAgICA6IGl0ZW1cbiAgICAgICAgKTtcbiAgICAgICAgc2V0RGF0YSh1cGRhdGVkRGF0YSk7XG4gICAgICB9XG5cbiAgICAgIHNldFJlZ2VuZXJhdGVEaWFsb2dWaXNpYmxlKGZhbHNlKTtcbiAgICAgIHJlZ2VuZXJhdGVGb3JtLnJlc2V0RmllbGRzKCk7XG4gICAgICBtZXNzYWdlLnN1Y2Nlc3MoXCJBUEkgS2V5IHJlZ2VuZXJhdGVkIHN1Y2Nlc3NmdWxseVwiKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcihcIkVycm9yIHJlZ2VuZXJhdGluZyBrZXk6XCIsIGVycm9yKTtcbiAgICAgIG1lc3NhZ2UuZXJyb3IoXCJGYWlsZWQgdG8gcmVnZW5lcmF0ZSBBUEkgS2V5XCIpO1xuICAgIH1cbiAgfTtcblxuICBpZiAoZGF0YSA9PSBudWxsKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGNvbnNvbGUubG9nKFwiUkVSRU5ERVIgVFJJR0dFUkVEXCIpO1xuICByZXR1cm4gKFxuICAgIDxkaXY+XG4gICAgPENhcmQgY2xhc3NOYW1lPVwidy1mdWxsIG14LWF1dG8gZmxleC1hdXRvIG92ZXJmbG93LXktYXV0byBtYXgtaC1bNTB2aF0gbWItNCBtdC0yXCI+XG4gICAgICA8VGFibGUgY2xhc3NOYW1lPVwibXQtNSBtYXgtaC1bMzAwcHhdIG1pbi1oLVszMDBweF1cIj5cbiAgICAgICAgPFRhYmxlSGVhZD5cbiAgICAgICAgICA8VGFibGVSb3c+XG4gICAgICAgICAgICA8VGFibGVIZWFkZXJDZWxsPktleSBBbGlhczwvVGFibGVIZWFkZXJDZWxsPlxuICAgICAgICAgICAgPFRhYmxlSGVhZGVyQ2VsbD5TZWNyZXQgS2V5PC9UYWJsZUhlYWRlckNlbGw+XG4gICAgICAgICAgICA8VGFibGVIZWFkZXJDZWxsPkNyZWF0ZWQ8L1RhYmxlSGVhZGVyQ2VsbD5cbiAgICAgICAgICAgIDxUYWJsZUhlYWRlckNlbGw+RXhwaXJlczwvVGFibGVIZWFkZXJDZWxsPlxuICAgICAgICAgICAgPFRhYmxlSGVhZGVyQ2VsbD5TcGVuZCAoVVNEKTwvVGFibGVIZWFkZXJDZWxsPlxuICAgICAgICAgICAgPFRhYmxlSGVhZGVyQ2VsbD5CdWRnZXQgKFVTRCk8L1RhYmxlSGVhZGVyQ2VsbD5cbiAgICAgICAgICAgIDxUYWJsZUhlYWRlckNlbGw+QnVkZ2V0IFJlc2V0PC9UYWJsZUhlYWRlckNlbGw+XG4gICAgICAgICAgICA8VGFibGVIZWFkZXJDZWxsPk1vZGVsczwvVGFibGVIZWFkZXJDZWxsPlxuICAgICAgICAgICAgPFRhYmxlSGVhZGVyQ2VsbD5SYXRlIExpbWl0czwvVGFibGVIZWFkZXJDZWxsPlxuICAgICAgICAgICAgPFRhYmxlSGVhZGVyQ2VsbD5SYXRlIExpbWl0cyBwZXIgbW9kZWw8L1RhYmxlSGVhZGVyQ2VsbD5cbiAgICAgICAgICA8L1RhYmxlUm93PlxuICAgICAgICA8L1RhYmxlSGVhZD5cbiAgICAgICAgPFRhYmxlQm9keT5cbiAgICAgICAgICB7ZGF0YS5tYXAoKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGl0ZW0pO1xuICAgICAgICAgICAgLy8gc2tpcCBpdGVtIGlmIGl0ZW0udGVhbV9pZCA9PSBcImxpdGVsbG0tZGFzaGJvYXJkXCJcbiAgICAgICAgICAgIGlmIChpdGVtLnRlYW1faWQgPT09IFwibGl0ZWxsbS1kYXNoYm9hcmRcIikge1xuICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzZWxlY3RlZFRlYW0pIHtcbiAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgICAqIGlmIHNlbGVjdGVkIHRlYW0gaWQgaXMgbnVsbCAtPiBzaG93IHRoZSBrZXlzIHdpdGggbm8gdGVhbSBpZCBvciB0ZWFtIGlkJ3MgdGhhdCBkb24ndCBleGlzdCBpbiBkYlxuICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgY29uc29sZS5sb2coYGl0ZW0gdGVhbSBpZDogJHtpdGVtLnRlYW1faWR9LCBrbm93blRlYW1JRHMuaGFzKGl0ZW0udGVhbV9pZCk6ICR7a25vd25UZWFtSURzLmhhcyhpdGVtLnRlYW1faWQpfSwgc2VsZWN0ZWRUZWFtIGlkOiAke3NlbGVjdGVkVGVhbS50ZWFtX2lkfWApXG4gICAgICAgICAgICAgIGlmIChzZWxlY3RlZFRlYW0udGVhbV9pZCA9PSBudWxsICYmIGl0ZW0udGVhbV9pZCAhPT0gbnVsbCAmJiAha25vd25UZWFtSURzLmhhcyhpdGVtLnRlYW1faWQpKSB7XG4gICAgICAgICAgICAgICAgLy8gZG8gbm90aGluZyAtPiByZXR1cm5zIGEgcm93IHdpdGggdGhpcyBrZXlcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBlbHNlIGlmIChpdGVtLnRlYW1faWQgIT0gc2VsZWN0ZWRUZWFtLnRlYW1faWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgaXRlbSB0ZWFtIGlkOiAke2l0ZW0udGVhbV9pZH0sIGlzIHJldHVybmVkYClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgIDxUYWJsZVJvdyBrZXk9e2l0ZW0udG9rZW59PlxuICAgICAgICAgICAgICAgIDxUYWJsZUNlbGwgc3R5bGU9e3sgbWF4V2lkdGg6IFwiMnB4XCIsIHdoaXRlU3BhY2U6IFwicHJlLXdyYXBcIiwgb3ZlcmZsb3c6IFwiaGlkZGVuXCIgIH19PlxuICAgICAgICAgICAgICAgICAge2l0ZW0ua2V5X2FsaWFzICE9IG51bGwgPyAoXG4gICAgICAgICAgICAgICAgICAgIDxUZXh0PntpdGVtLmtleV9hbGlhc308L1RleHQ+XG4gICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICA8VGV4dD5Ob3QgU2V0PC9UZXh0PlxuICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICA8L1RhYmxlQ2VsbD5cbiAgICAgICAgICAgICAgICA8VGFibGVDZWxsPlxuICAgICAgICAgICAgICAgICAgPFRleHQ+e2l0ZW0ua2V5X25hbWV9PC9UZXh0PlxuICAgICAgICAgICAgICAgIDwvVGFibGVDZWxsPlxuICAgICAgICAgICAgICAgIDxUYWJsZUNlbGw+XG4gICAgICAgICAgICAgICAgICAgIHtpdGVtLmNyZWF0ZWRfYXQgIT0gbnVsbCA/IChcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPHAgc3R5bGU9e3sgZm9udFNpemU6ICcwLjcwcmVtJyB9fT57bmV3IERhdGUoaXRlbS5jcmVhdGVkX2F0KS50b0xvY2FsZURhdGVTdHJpbmcoKX08L3A+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgICAgPHAgc3R5bGU9e3sgZm9udFNpemU6ICcwLjcwcmVtJyB9fT5Ob3QgYXZhaWxhYmxlPC9wPlxuICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgPC9UYWJsZUNlbGw+XG4gICAgICAgICAgICAgICAgPFRhYmxlQ2VsbD5cbiAgICAgICAgICAgICAgICB7aXRlbS5leHBpcmVzICE9IG51bGwgPyAoXG4gICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICA8cCBzdHlsZT17eyBmb250U2l6ZTogJzAuNzByZW0nIH19PntuZXcgRGF0ZShpdGVtLmV4cGlyZXMpLnRvTG9jYWxlRGF0ZVN0cmluZygpfTwvcD5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICA8cCBzdHlsZT17eyBmb250U2l6ZTogJzAuNzByZW0nIH19Pk5ldmVyPC9wPlxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgIDwvVGFibGVDZWxsPlxuICAgICAgICAgICAgICAgIDxUYWJsZUNlbGw+XG4gICAgICAgICAgICAgICAgICA8VGV4dD5cbiAgICAgICAgICAgICAgICAgICAgeygoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBwYXJzZUZsb2F0KGl0ZW0uc3BlbmQpLnRvRml4ZWQoNCk7XG4gICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpdGVtLnNwZW5kO1xuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSkoKX1cblxuICAgICAgICAgICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgICAgICAgIDwvVGFibGVDZWxsPlxuICAgICAgICAgICAgICAgIDxUYWJsZUNlbGw+XG4gICAgICAgICAgICAgICAgICB7aXRlbS5tYXhfYnVkZ2V0ICE9IG51bGwgPyAoXG4gICAgICAgICAgICAgICAgICAgIDxUZXh0PntpdGVtLm1heF9idWRnZXR9PC9UZXh0PlxuICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgPFRleHQ+VW5saW1pdGVkPC9UZXh0PlxuICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICA8L1RhYmxlQ2VsbD5cbiAgICAgICAgICAgICAgICA8VGFibGVDZWxsPlxuICAgICAgICAgICAgICAgICAge2l0ZW0uYnVkZ2V0X3Jlc2V0X2F0ICE9IG51bGwgPyAoXG4gICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPHAgc3R5bGU9e3sgZm9udFNpemU6ICcwLjcwcmVtJyB9fT57bmV3IERhdGUoaXRlbS5idWRnZXRfcmVzZXRfYXQpLnRvTG9jYWxlU3RyaW5nKCl9PC9wPlxuXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgIDxwIHN0eWxlPXt7IGZvbnRTaXplOiAnMC43MHJlbScgfX0+TmV2ZXI8L3A+XG4gICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgIDwvVGFibGVDZWxsPlxuICAgICAgICAgICAgICAgIHsvKiA8VGFibGVDZWxsIHN0eWxlPXt7IG1heFdpZHRoOiAnMnB4JyB9fT5cbiAgICAgICAgICAgICAgICAgIDxWaWV3S2V5U3BlbmRSZXBvcnRcbiAgICAgICAgICAgICAgICAgICAgdG9rZW49e2l0ZW0udG9rZW59XG4gICAgICAgICAgICAgICAgICAgIGFjY2Vzc1Rva2VuPXthY2Nlc3NUb2tlbn1cbiAgICAgICAgICAgICAgICAgICAga2V5U3BlbmQ9e2l0ZW0uc3BlbmR9XG4gICAgICAgICAgICAgICAgICAgIGtleUJ1ZGdldD17aXRlbS5tYXhfYnVkZ2V0fVxuICAgICAgICAgICAgICAgICAgICBrZXlOYW1lPXtpdGVtLmtleV9uYW1lfVxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L1RhYmxlQ2VsbD4gKi99XG4gICAgICAgICAgICAgICAgey8qIDxUYWJsZUNlbGwgc3R5bGU9e3sgbWF4V2lkdGg6IFwiNHB4XCIsIHdoaXRlU3BhY2U6IFwicHJlLXdyYXBcIiwgb3ZlcmZsb3c6IFwiaGlkZGVuXCIgIH19PlxuICAgICAgICAgICAgICAgICAgPFRleHQ+e2l0ZW0udGVhbV9hbGlhcyAmJiBpdGVtLnRlYW1fYWxpYXMgIT0gXCJOb25lXCIgPyBpdGVtLnRlYW1fYWxpYXMgOiBpdGVtLnRlYW1faWR9PC9UZXh0PlxuICAgICAgICAgICAgICAgIDwvVGFibGVDZWxsPiAqL31cbiAgICAgICAgICAgICAgICB7LyogPFRhYmxlQ2VsbCBzdHlsZT17eyBtYXhXaWR0aDogXCI0cHhcIiwgd2hpdGVTcGFjZTogXCJwcmUtd3JhcFwiLCBvdmVyZmxvdzogXCJoaWRkZW5cIiAgfX0+XG4gICAgICAgICAgICAgICAgICA8VGV4dD57SlNPTi5zdHJpbmdpZnkoaXRlbS5tZXRhZGF0YSkuc2xpY2UoMCwgNDAwKX08L1RleHQ+XG4gICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICA8L1RhYmxlQ2VsbD4gKi99XG5cbjxUYWJsZUNlbGw+XG4gIHtBcnJheS5pc0FycmF5KGl0ZW0ubW9kZWxzKSA/IChcbiAgICA8ZGl2IHN0eWxlPXt7IGRpc3BsYXk6IFwiZmxleFwiLCBmbGV4RGlyZWN0aW9uOiBcImNvbHVtblwiIH19PlxuICAgICAge2l0ZW0ubW9kZWxzLmxlbmd0aCA9PT0gMCA/IChcbiAgICAgICAgPD5cbiAgICAgICAgICB7c2VsZWN0ZWRUZWFtICYmIHNlbGVjdGVkVGVhbS5tb2RlbHMgJiYgc2VsZWN0ZWRUZWFtLm1vZGVscy5sZW5ndGggPiAwID8gKFxuICAgICAgICAgICAgc2VsZWN0ZWRUZWFtLm1vZGVscy5tYXAoKG1vZGVsOiBzdHJpbmcsIGluZGV4OiBudW1iZXIpID0+IChcbiAgICAgICAgICAgICAgbW9kZWwgPT09IFwiYWxsLXByb3h5LW1vZGVsc1wiID8gKFxuICAgICAgICAgICAgICAgIDxCYWRnZSBrZXk9e2luZGV4fSBzaXplPXtcInhzXCJ9IGNsYXNzTmFtZT1cIm1iLTFcIiBjb2xvcj1cInJlZFwiPlxuICAgICAgICAgICAgICAgICAgPFRleHQ+QWxsIFByb3h5IE1vZGVsczwvVGV4dD5cbiAgICAgICAgICAgICAgICA8L0JhZGdlPlxuICAgICAgICAgICAgICApIDogbW9kZWwgPT09IFwiYWxsLXRlYW0tbW9kZWxzXCIgPyAoXG4gICAgICAgICAgICAgICAgPEJhZGdlIGtleT17aW5kZXh9IHNpemU9e1wieHNcIn0gY2xhc3NOYW1lPVwibWItMVwiIGNvbG9yPVwicmVkXCI+XG4gICAgICAgICAgICAgICAgICA8VGV4dD5BbGwgVGVhbSBNb2RlbHM8L1RleHQ+XG4gICAgICAgICAgICAgICAgPC9CYWRnZT5cbiAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICA8QmFkZ2Uga2V5PXtpbmRleH0gc2l6ZT17XCJ4c1wifSBjbGFzc05hbWU9XCJtYi0xXCIgY29sb3I9XCJibHVlXCI+XG4gICAgICAgICAgICAgICAgICA8VGV4dD57bW9kZWwubGVuZ3RoID4gMzAgPyBgJHttb2RlbC5zbGljZSgwLCAzMCl9Li4uYCA6IG1vZGVsfTwvVGV4dD5cbiAgICAgICAgICAgICAgICA8L0JhZGdlPlxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApKVxuICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAvLyBJZiBzZWxlY3RlZCB0ZWFtIGlzIE5vbmUgb3Igc2VsZWN0ZWQgdGVhbSdzIG1vZGVscyBhcmUgZW1wdHksIHNob3cgYWxsIG1vZGVsc1xuICAgICAgICAgICAgPEJhZGdlIHNpemU9e1wieHNcIn0gY2xhc3NOYW1lPVwibWItMVwiIGNvbG9yPVwiYmx1ZVwiPlxuICAgICAgICAgICAgICA8VGV4dD5hbGwtcHJveHktbW9kZWxzPC9UZXh0PlxuICAgICAgICAgICAgPC9CYWRnZT5cbiAgICAgICAgICApfVxuICAgICAgICA8Lz5cbiAgICAgICkgOiAoXG4gICAgICAgIGl0ZW0ubW9kZWxzLm1hcCgobW9kZWw6IHN0cmluZywgaW5kZXg6IG51bWJlcikgPT4gKFxuICAgICAgICAgIG1vZGVsID09PSBcImFsbC1wcm94eS1tb2RlbHNcIiA/IChcbiAgICAgICAgICAgIDxCYWRnZSBrZXk9e2luZGV4fSBzaXplPXtcInhzXCJ9IGNsYXNzTmFtZT1cIm1iLTFcIiBjb2xvcj1cInJlZFwiPlxuICAgICAgICAgICAgICA8VGV4dD5BbGwgUHJveHkgTW9kZWxzPC9UZXh0PlxuICAgICAgICAgICAgPC9CYWRnZT5cbiAgICAgICAgICApIDogbW9kZWwgPT09IFwiYWxsLXRlYW0tbW9kZWxzXCIgPyAoXG4gICAgICAgICAgICA8QmFkZ2Uga2V5PXtpbmRleH0gc2l6ZT17XCJ4c1wifSBjbGFzc05hbWU9XCJtYi0xXCIgY29sb3I9XCJyZWRcIj5cbiAgICAgICAgICAgICAgPFRleHQ+QWxsIFRlYW0gTW9kZWxzPC9UZXh0PlxuICAgICAgICAgICAgPC9CYWRnZT5cbiAgICAgICAgICApIDogKFxuICAgICAgICAgICAgPEJhZGdlIGtleT17aW5kZXh9IHNpemU9e1wieHNcIn0gY2xhc3NOYW1lPVwibWItMVwiIGNvbG9yPVwiYmx1ZVwiPlxuICAgICAgICAgICAgICA8VGV4dD57bW9kZWwubGVuZ3RoID4gMzAgPyBgJHttb2RlbC5zbGljZSgwLCAzMCl9Li4uYCA6IG1vZGVsfTwvVGV4dD5cbiAgICAgICAgICAgIDwvQmFkZ2U+XG4gICAgICAgICAgKVxuICAgICAgICApKVxuICAgICAgKX1cbiAgICA8L2Rpdj5cbiAgKSA6IG51bGx9XG48L1RhYmxlQ2VsbD5cblxuICAgICAgICAgICAgICAgIDxUYWJsZUNlbGw+XG4gICAgICAgICAgICAgICAgICA8VGV4dD5cbiAgICAgICAgICAgICAgICAgICAgVFBNOiB7aXRlbS50cG1fbGltaXQgPyBpdGVtLnRwbV9saW1pdCA6IFwiVW5saW1pdGVkXCJ9e1wiIFwifVxuICAgICAgICAgICAgICAgICAgICA8YnI+PC9icj4gUlBNOntcIiBcIn1cbiAgICAgICAgICAgICAgICAgICAge2l0ZW0ucnBtX2xpbWl0ID8gaXRlbS5ycG1fbGltaXQgOiBcIlVubGltaXRlZFwifVxuICAgICAgICAgICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgICAgICAgIDwvVGFibGVDZWxsPlxuICAgICAgICAgICAgICAgIDxUYWJsZUNlbGw+XG4gICAgICAgICAgICAgICAgPEJ1dHRvbiBzaXplPVwieHNcIiBvbkNsaWNrPXsoKSA9PiBoYW5kbGVNb2RlbExpbWl0Q2xpY2soaXRlbSl9PkVkaXQgTGltaXRzPC9CdXR0b24+XG4gICAgICAgICAgICAgICAgPC9UYWJsZUNlbGw+XG4gICAgICAgICAgICAgICAgPFRhYmxlQ2VsbD5cbiAgICAgICAgICAgICAgICAgICAgPEljb25cbiAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRTZWxlY3RlZFRva2VuKGl0ZW0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0SW5mb0RpYWxvZ1Zpc2libGUodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICBpY29uPXtJbmZvcm1hdGlvbkNpcmNsZUljb259XG4gICAgICAgICAgICAgICAgICAgICAgc2l6ZT1cInNtXCJcbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIFxuICAgIDxNb2RhbFxuICAgICAgb3Blbj17aW5mb0RpYWxvZ1Zpc2libGV9XG4gICAgICBvbkNhbmNlbD17KCkgPT4ge1xuICAgICAgICBzZXRJbmZvRGlhbG9nVmlzaWJsZShmYWxzZSk7XG4gICAgICAgIHNldFNlbGVjdGVkVG9rZW4obnVsbCk7XG4gICAgICB9fVxuICAgICAgZm9vdGVyPXtudWxsfVxuICAgICAgd2lkdGg9ezgwMH1cbiAgICA+XG5cbiAgICB7c2VsZWN0ZWRUb2tlbiAmJiAoXG4gICAgICA8PlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJncmlkIGdyaWQtY29scy0xIGdhcC02IHNtOmdyaWQtY29scy0yIGxnOmdyaWQtY29scy0zIG10LThcIj5cbiAgICAgICAgICA8Q2FyZD5cbiAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQtdHJlbW9yLWRlZmF1bHQgZm9udC1tZWRpdW0gdGV4dC10cmVtb3ItY29udGVudCBkYXJrOnRleHQtZGFyay10cmVtb3ItY29udGVudFwiPlxuICAgICAgICAgICAgICBTcGVuZFxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtdC0yIGZsZXggaXRlbXMtYmFzZWxpbmUgc3BhY2UteC0yLjVcIj5cbiAgICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC10cmVtb3IgZm9udC1zZW1pYm9sZCB0ZXh0LXRyZW1vci1jb250ZW50LXN0cm9uZyBkYXJrOnRleHQtZGFyay10cmVtb3ItY29udGVudC1zdHJvbmdcIj5cbiAgICAgICAgICAgICAgeygoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBwYXJzZUZsb2F0KHNlbGVjdGVkVG9rZW4uc3BlbmQpLnRvRml4ZWQoNCk7XG4gICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZWxlY3RlZFRva2VuLnNwZW5kO1xuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSkoKX1cblxuICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L0NhcmQ+XG4gICAgICAgICAgPENhcmQga2V5PXtpdGVtLm5hbWV9PlxuICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC10cmVtb3ItZGVmYXVsdCBmb250LW1lZGl1bSB0ZXh0LXRyZW1vci1jb250ZW50IGRhcms6dGV4dC1kYXJrLXRyZW1vci1jb250ZW50XCI+XG4gICAgICAgICAgICAgIEJ1ZGdldFxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtdC0yIGZsZXggaXRlbXMtYmFzZWxpbmUgc3BhY2UteC0yLjVcIj5cbiAgICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC10cmVtb3IgZm9udC1zZW1pYm9sZCB0ZXh0LXRyZW1vci1jb250ZW50LXN0cm9uZyBkYXJrOnRleHQtZGFyay10cmVtb3ItY29udGVudC1zdHJvbmdcIj5cbiAgICAgICAgICAgICAge3NlbGVjdGVkVG9rZW4ubWF4X2J1ZGdldCAhPSBudWxsID8gKFxuICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAge3NlbGVjdGVkVG9rZW4ubWF4X2J1ZGdldH1cbiAgICAgICAgICAgICAgICAgICAge3NlbGVjdGVkVG9rZW4uYnVkZ2V0X2R1cmF0aW9uICYmIChcbiAgICAgICAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJyIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICBCdWRnZXQgd2lsbCBiZSByZXNldCBhdCB7c2VsZWN0ZWRUb2tlbi5idWRnZXRfcmVzZXRfYXQgPyBuZXcgRGF0ZShzZWxlY3RlZFRva2VuLmJ1ZGdldF9yZXNldF9hdCkudG9Mb2NhbGVTdHJpbmcoKSA6ICdOZXZlcid9XG4gICAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgPD5VbmxpbWl0ZWQ8Lz5cbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L0NhcmQ+XG4gICAgICAgICAgPENhcmQga2V5PXtpdGVtLm5hbWV9PlxuICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC10cmVtb3ItZGVmYXVsdCBmb250LW1lZGl1bSB0ZXh0LXRyZW1vci1jb250ZW50IGRhcms6dGV4dC1kYXJrLXRyZW1vci1jb250ZW50XCI+XG4gICAgICAgICAgICAgIEV4cGlyZXNcbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibXQtMiBmbGV4IGl0ZW1zLWJhc2VsaW5lIHNwYWNlLXgtMi41XCI+XG4gICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQtdHJlbW9yLWRlZmF1bHQgZm9udC1zbWFsbCB0ZXh0LXRyZW1vci1jb250ZW50LXN0cm9uZyBkYXJrOnRleHQtZGFyay10cmVtb3ItY29udGVudC1zdHJvbmdcIj5cbiAgICAgICAgICAgICAge3NlbGVjdGVkVG9rZW4uZXhwaXJlcyAhPSBudWxsID8gKFxuICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgIHtuZXcgRGF0ZShzZWxlY3RlZFRva2VuLmV4cGlyZXMpLnRvTG9jYWxlU3RyaW5nKHVuZGVmaW5lZCwge1xuICAgICAgICAgICAgICAgICAgICBkYXk6ICdudW1lcmljJyxcbiAgICAgICAgICAgICAgICAgICAgbW9udGg6ICdsb25nJyxcbiAgICAgICAgICAgICAgICAgICAgeWVhcjogJ251bWVyaWMnLFxuICAgICAgICAgICAgICAgICAgICBob3VyOiAnbnVtZXJpYycsXG4gICAgICAgICAgICAgICAgICAgIG1pbnV0ZTogJ251bWVyaWMnLFxuICAgICAgICAgICAgICAgICAgICBzZWNvbmQ6ICdudW1lcmljJ1xuICAgICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgIDw+TmV2ZXI8Lz5cbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L0NhcmQ+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPENhcmQgY2xhc3NOYW1lPVwibXktNFwiPlxuICAgICAgICA8VGl0bGU+VG9rZW4gTmFtZTwvVGl0bGU+XG4gICAgICAgIDxUZXh0IGNsYXNzTmFtZT1cIm15LTFcIj57c2VsZWN0ZWRUb2tlbi5rZXlfYWxpYXMgPyBzZWxlY3RlZFRva2VuLmtleV9hbGlhcyA6IHNlbGVjdGVkVG9rZW4ua2V5X25hbWV9PC9UZXh0PlxuICAgICAgICA8VGl0bGU+VG9rZW4gSUQ8L1RpdGxlPlxuICAgICAgICA8VGV4dCBjbGFzc05hbWU9XCJteS0xIHRleHQtWzEycHhdXCI+e3NlbGVjdGVkVG9rZW4udG9rZW59PC9UZXh0PiAgICAgXG4gICAgICAgIDxUaXRsZT5Vc2VyIElEPC9UaXRsZT5cbiAgICAgICAgPFRleHQgY2xhc3NOYW1lPVwibXktMSB0ZXh0LVsxMnB4XVwiPntzZWxlY3RlZFRva2VuLnVzZXJfaWR9PC9UZXh0PiAgICAgICAgICAgIFxuICAgICAgICA8VGl0bGU+TWV0YWRhdGE8L1RpdGxlPlxuICAgICAgICA8VGV4dCBjbGFzc05hbWU9XCJteS0xXCI+PHByZT57SlNPTi5zdHJpbmdpZnkoc2VsZWN0ZWRUb2tlbi5tZXRhZGF0YSl9IDwvcHJlPjwvVGV4dD5cbiAgICAgIDwvQ2FyZD5cblxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgY2xhc3NOYW1lPVwibXgtYXV0byBmbGV4IGl0ZW1zLWNlbnRlclwiXG4gICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgc2V0SW5mb0RpYWxvZ1Zpc2libGUoZmFsc2UpO1xuICAgICAgICAgICAgc2V0U2VsZWN0ZWRUb2tlbihudWxsKTtcbiAgICAgICAgICB9fVxuICAgICAgICA+XG4gICAgICAgICAgQ2xvc2VcbiAgICAgICAgPC9CdXR0b24+XG4gICAgICA8Lz5cbiAgICApfVxuXG48L01vZGFsPlxuICAgICAgICAgICAgICAgICAgPEljb25cbiAgICAgICAgICAgICAgICAgICAgaWNvbj17UGVuY2lsQWx0SWNvbn1cbiAgICAgICAgICAgICAgICAgICAgc2l6ZT1cInNtXCJcbiAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gaGFuZGxlRWRpdENsaWNrKGl0ZW0pfVxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgIDxJY29uXG4gICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gaGFuZGxlUmVnZW5lcmF0ZUNsaWNrKGl0ZW0pfVxuICAgICAgICAgICAgICAgICAgICAgIGljb249e1JlZnJlc2hJY29ufVxuICAgICAgICAgICAgICAgICAgICAgIHNpemU9XCJzbVwiXG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICA8SWNvblxuICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBoYW5kbGVEZWxldGUoaXRlbSl9XG4gICAgICAgICAgICAgICAgICAgIGljb249e1RyYXNoSWNvbn1cbiAgICAgICAgICAgICAgICAgICAgc2l6ZT1cInNtXCJcbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9UYWJsZUNlbGw+XG4gICAgICAgICAgICAgIDwvVGFibGVSb3c+XG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0pfVxuICAgICAgICA8L1RhYmxlQm9keT5cbiAgICAgIDwvVGFibGU+XG4gICAgICB7aXNEZWxldGVNb2RhbE9wZW4gJiYgKFxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZpeGVkIHotMTAgaW5zZXQtMCBvdmVyZmxvdy15LWF1dG9cIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtZW5kIGp1c3RpZnktY2VudGVyIG1pbi1oLXNjcmVlbiBwdC00IHB4LTQgcGItMjAgdGV4dC1jZW50ZXIgc206YmxvY2sgc206cC0wXCI+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT1cImZpeGVkIGluc2V0LTAgdHJhbnNpdGlvbi1vcGFjaXR5XCJcbiAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJhYnNvbHV0ZSBpbnNldC0wIGJnLWdyYXktNTAwIG9wYWNpdHktNzVcIj48L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICB7LyogTW9kYWwgUGFuZWwgKi99XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICBjbGFzc05hbWU9XCJoaWRkZW4gc206aW5saW5lLWJsb2NrIHNtOmFsaWduLW1pZGRsZSBzbTpoLXNjcmVlblwiXG4gICAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICYjODIwMztcbiAgICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgICAgey8qIENvbmZpcm1hdGlvbiBNb2RhbCBDb250ZW50ICovfVxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJpbmxpbmUtYmxvY2sgYWxpZ24tYm90dG9tIGJnLXdoaXRlIHJvdW5kZWQtbGcgdGV4dC1sZWZ0IG92ZXJmbG93LWhpZGRlbiBzaGFkb3cteGwgdHJhbnNmb3JtIHRyYW5zaXRpb24tYWxsIHNtOm15LTggc206YWxpZ24tbWlkZGxlIHNtOm1heC13LWxnIHNtOnctZnVsbFwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJnLXdoaXRlIHB4LTQgcHQtNSBwYi00IHNtOnAtNiBzbTpwYi00XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJzbTpmbGV4IHNtOml0ZW1zLXN0YXJ0XCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm10LTMgdGV4dC1jZW50ZXIgc206bXQtMCBzbTptbC00IHNtOnRleHQtbGVmdFwiPlxuICAgICAgICAgICAgICAgICAgICA8aDMgY2xhc3NOYW1lPVwidGV4dC1sZyBsZWFkaW5nLTYgZm9udC1tZWRpdW0gdGV4dC1ncmF5LTkwMFwiPlxuICAgICAgICAgICAgICAgICAgICAgIERlbGV0ZSBLZXlcbiAgICAgICAgICAgICAgICAgICAgPC9oMz5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtdC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC1zbSB0ZXh0LWdyYXktNTAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZGVsZXRlIHRoaXMga2V5ID9cbiAgICAgICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJnLWdyYXktNTAgcHgtNCBweS0zIHNtOnB4LTYgc206ZmxleCBzbTpmbGV4LXJvdy1yZXZlcnNlXCI+XG4gICAgICAgICAgICAgICAgPEJ1dHRvbiBvbkNsaWNrPXtjb25maXJtRGVsZXRlfSBjb2xvcj1cInJlZFwiIGNsYXNzTmFtZT1cIm1sLTJcIj5cbiAgICAgICAgICAgICAgICAgIERlbGV0ZVxuICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICAgIDxCdXR0b24gb25DbGljaz17Y2FuY2VsRGVsZXRlfT5DYW5jZWw8L0J1dHRvbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICApfVxuICAgIDwvQ2FyZD5cblxuICAgIHtzZWxlY3RlZFRva2VuICYmIChcbiAgICAgICAgPEVkaXRLZXlNb2RhbFxuICAgICAgICAgIHZpc2libGU9e2VkaXRNb2RhbFZpc2libGV9XG4gICAgICAgICAgb25DYW5jZWw9e2hhbmRsZUVkaXRDYW5jZWx9XG4gICAgICAgICAgdG9rZW49e3NlbGVjdGVkVG9rZW59XG4gICAgICAgICAgb25TdWJtaXQ9e2hhbmRsZUVkaXRTdWJtaXR9XG4gICAgICAgIC8+XG4gICAgICApfVxuXG57c2VsZWN0ZWRUb2tlbiAmJiAoXG4gICAgICAgIDxNb2RlbExpbWl0TW9kYWxcbiAgICAgICAgICB2aXNpYmxlPXttb2RlbExpbWl0TW9kYWxWaXNpYmxlfVxuICAgICAgICAgIG9uQ2FuY2VsPXsoKSA9PiBzZXRNb2RlbExpbWl0TW9kYWxWaXNpYmxlKGZhbHNlKX1cbiAgICAgICAgICB0b2tlbj17c2VsZWN0ZWRUb2tlbn1cbiAgICAgICAgICBvblN1Ym1pdD17aGFuZGxlTW9kZWxMaW1pdFN1Ym1pdH1cbiAgICAgICAgICBhY2Nlc3NUb2tlbj17YWNjZXNzVG9rZW59XG4gICAgICAgIC8+XG4gICAgICApfVxuXG4gICAgey8qIFJlZ2VuZXJhdGUgS2V5IEZvcm0gTW9kYWwgKi99XG4gICAgPE1vZGFsXG4gICAgICB0aXRsZT1cIlJlZ2VuZXJhdGUgQVBJIEtleVwiXG4gICAgICB2aXNpYmxlPXtyZWdlbmVyYXRlRGlhbG9nVmlzaWJsZX1cbiAgICAgIG9uQ2FuY2VsPXsoKSA9PiB7XG4gICAgICAgIHNldFJlZ2VuZXJhdGVEaWFsb2dWaXNpYmxlKGZhbHNlKTtcbiAgICAgICAgcmVnZW5lcmF0ZUZvcm0ucmVzZXRGaWVsZHMoKTtcbiAgICAgIH19XG4gICAgICBmb290ZXI9e1tcbiAgICAgICAgPEJ1dHRvbiBrZXk9XCJjYW5jZWxcIiBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgc2V0UmVnZW5lcmF0ZURpYWxvZ1Zpc2libGUoZmFsc2UpO1xuICAgICAgICAgIHJlZ2VuZXJhdGVGb3JtLnJlc2V0RmllbGRzKCk7XG4gICAgICAgIH19IGNsYXNzTmFtZT1cIm1yLTJcIj5cbiAgICAgICAgICBDYW5jZWxcbiAgICAgICAgPC9CdXR0b24+LFxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAga2V5PVwicmVnZW5lcmF0ZVwiXG4gICAgICAgICAgb25DbGljaz17aGFuZGxlUmVnZW5lcmF0ZUtleX1cbiAgICAgICAgICBkaXNhYmxlZD17IXByZW1pdW1Vc2VyfVxuICAgICAgICA+XG4gICAgICAgICAge3ByZW1pdW1Vc2VyID8gXCJSZWdlbmVyYXRlXCIgOiBcIlVwZ3JhZGUgdG8gUmVnZW5lcmF0ZVwifVxuICAgICAgICA8L0J1dHRvbj5cbiAgICAgIF19XG4gICAgPlxuICAgICAge3ByZW1pdW1Vc2VyID8gKFxuICAgICAgICA8Rm9ybSBcbiAgICAgICAgZm9ybT17cmVnZW5lcmF0ZUZvcm19IFxuICAgICAgICBsYXlvdXQ9XCJ2ZXJ0aWNhbFwiXG4gICAgICAgIG9uVmFsdWVzQ2hhbmdlPXsoY2hhbmdlZFZhbHVlcywgYWxsVmFsdWVzKSA9PiB7XG4gICAgICAgICAgaWYgKCdkdXJhdGlvbicgaW4gY2hhbmdlZFZhbHVlcykge1xuICAgICAgICAgICAgaGFuZGxlUmVnZW5lcmF0ZUZvcm1DaGFuZ2UoJ2R1cmF0aW9uJywgY2hhbmdlZFZhbHVlcy5kdXJhdGlvbik7XG4gICAgICAgICAgfVxuICAgICAgICB9fVxuICAgICAgPlxuICAgICAgICAgIDxGb3JtLkl0ZW0gbmFtZT1cImtleV9hbGlhc1wiIGxhYmVsPVwiS2V5IEFsaWFzXCI+XG4gICAgICAgICAgICA8VGV4dElucHV0IGRpc2FibGVkPXt0cnVlfSAvPlxuICAgICAgICAgIDwvRm9ybS5JdGVtPlxuICAgICAgICAgIDxGb3JtLkl0ZW0gbmFtZT1cIm1heF9idWRnZXRcIiBsYWJlbD1cIk1heCBCdWRnZXQgKFVTRClcIj5cbiAgICAgICAgICAgIDxJbnB1dE51bWJlciBzdGVwPXswLjAxfSBwcmVjaXNpb249ezJ9IHN0eWxlPXt7IHdpZHRoOiAnMTAwJScgfX0gLz5cbiAgICAgICAgICA8L0Zvcm0uSXRlbT5cbiAgICAgICAgICA8Rm9ybS5JdGVtIG5hbWU9XCJ0cG1fbGltaXRcIiBsYWJlbD1cIlRQTSBMaW1pdFwiPlxuICAgICAgICAgICAgPElucHV0TnVtYmVyIHN0eWxlPXt7IHdpZHRoOiAnMTAwJScgfX0gLz5cbiAgICAgICAgICA8L0Zvcm0uSXRlbT5cbiAgICAgICAgICA8Rm9ybS5JdGVtIG5hbWU9XCJycG1fbGltaXRcIiBsYWJlbD1cIlJQTSBMaW1pdFwiPlxuICAgICAgICAgICAgPElucHV0TnVtYmVyIHN0eWxlPXt7IHdpZHRoOiAnMTAwJScgfX0gLz5cbiAgICAgICAgICA8L0Zvcm0uSXRlbT5cbiAgICAgICAgICA8Rm9ybS5JdGVtXG4gICAgICAgICAgICBuYW1lPVwiZHVyYXRpb25cIlxuICAgICAgICAgICAgbGFiZWw9XCJFeHBpcmUgS2V5IChlZzogMzBzLCAzMGgsIDMwZClcIlxuICAgICAgICAgICAgY2xhc3NOYW1lPVwibXQtOFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPFRleHRJbnB1dCBwbGFjZWhvbGRlcj1cIlwiIC8+XG4gICAgICAgICAgPC9Gb3JtLkl0ZW0+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtdC0yIHRleHQtc20gdGV4dC1ncmF5LTUwMFwiPlxuICAgICAgICAgICAgQ3VycmVudCBleHBpcnk6IHtcbiAgICAgICAgICAgICAgc2VsZWN0ZWRUb2tlbj8uZXhwaXJlcyAhPSBudWxsID8gKFxuICAgICAgICAgICAgICAgIG5ldyBEYXRlKHNlbGVjdGVkVG9rZW4uZXhwaXJlcykudG9Mb2NhbGVTdHJpbmcoKVxuICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICdOZXZlcidcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIHtuZXdFeHBpcnlUaW1lICYmIChcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibXQtMiB0ZXh0LXNtIHRleHQtZ3JlZW4tNjAwXCI+XG4gICAgICAgICAgICAgIE5ldyBleHBpcnk6IHtuZXdFeHBpcnlUaW1lfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9Gb3JtPlxuICAgICAgKSA6IChcbiAgICAgICAgPGRpdj5cbiAgICAgICAgICA8cCBjbGFzc05hbWU9XCJtYi0yIHRleHQtZ3JheS01MDAgaXRhbGljIHRleHQtWzEycHhdXCI+VXBncmFkZSB0byB1c2UgdGhpcyBmZWF0dXJlPC9wPlxuICAgICAgICAgIDxCdXR0b24gdmFyaWFudD1cInByaW1hcnlcIiBjbGFzc05hbWU9XCJtYi0yXCI+XG4gICAgICAgICAgICA8YSBocmVmPVwiaHR0cHM6Ly9jYWxlbmRseS5jb20vZC80bXAtZ2QzLWs1ay9saXRlbGxtLTEtMS1vbmJvYXJkaW5nLWNoYXRcIiB0YXJnZXQ9XCJfYmxhbmtcIj5cbiAgICAgICAgICAgICAgR2V0IEZyZWUgVHJpYWxcbiAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICApfVxuICAgIDwvTW9kYWw+XG5cbiAgICB7LyogUmVnZW5lcmF0ZWQgS2V5IERpc3BsYXkgTW9kYWwgKi99XG4gICAge3JlZ2VuZXJhdGVkS2V5ICYmIChcbiAgICAgIDxNb2RhbFxuICAgICAgICB2aXNpYmxlPXshIXJlZ2VuZXJhdGVkS2V5fVxuICAgICAgICBvbkNhbmNlbD17KCkgPT4gc2V0UmVnZW5lcmF0ZWRLZXkobnVsbCl9XG4gICAgICAgIGZvb3Rlcj17W1xuICAgICAgICAgIDxCdXR0b24ga2V5PVwiY2xvc2VcIiBvbkNsaWNrPXsoKSA9PiBzZXRSZWdlbmVyYXRlZEtleShudWxsKX0+XG4gICAgICAgICAgICBDbG9zZVxuICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICBdfVxuICAgICAgPlxuICAgICAgICA8R3JpZCBudW1JdGVtcz17MX0gY2xhc3NOYW1lPVwiZ2FwLTIgdy1mdWxsXCI+XG4gICAgICAgICAgPFRpdGxlPlJlZ2VuZXJhdGVkIEtleTwvVGl0bGU+XG4gICAgICAgICAgPENvbCBudW1Db2xTcGFuPXsxfT5cbiAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICBQbGVhc2UgcmVwbGFjZSB5b3VyIG9sZCBrZXkgd2l0aCB0aGUgbmV3IGtleSBnZW5lcmF0ZWQuIEZvclxuICAgICAgICAgICAgICBzZWN1cml0eSByZWFzb25zLCA8Yj55b3Ugd2lsbCBub3QgYmUgYWJsZSB0byB2aWV3IGl0IGFnYWluPC9iPiB0aHJvdWdoXG4gICAgICAgICAgICAgIHlvdXIgTGl0ZUxMTSBhY2NvdW50LiBJZiB5b3UgbG9zZSB0aGlzIHNlY3JldCBrZXksIHlvdSB3aWxsIG5lZWQgdG9cbiAgICAgICAgICAgICAgZ2VuZXJhdGUgYSBuZXcgb25lLlxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgIDwvQ29sPlxuICAgICAgICAgIDxDb2wgbnVtQ29sU3Bhbj17MX0+XG4gICAgICAgICAgICA8VGV4dCBjbGFzc05hbWU9XCJtdC0zXCI+S2V5IEFsaWFzOjwvVGV4dD5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiBcIiNmOGY4ZjhcIixcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiBcIjEwcHhcIixcbiAgICAgICAgICAgICAgICBib3JkZXJSYWRpdXM6IFwiNXB4XCIsXG4gICAgICAgICAgICAgICAgbWFyZ2luQm90dG9tOiBcIjEwcHhcIixcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHByZSBzdHlsZT17eyB3b3JkV3JhcDogXCJicmVhay13b3JkXCIsIHdoaXRlU3BhY2U6IFwibm9ybWFsXCIgfX0+XG4gICAgICAgICAgICAgICAge3NlbGVjdGVkVG9rZW4/LmtleV9hbGlhcyB8fCAnTm8gYWxpYXMgc2V0J31cbiAgICAgICAgICAgICAgPC9wcmU+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxUZXh0IGNsYXNzTmFtZT1cIm10LTNcIj5OZXcgQVBJIEtleTo8L1RleHQ+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZDogXCIjZjhmOGY4XCIsXG4gICAgICAgICAgICAgICAgcGFkZGluZzogXCIxMHB4XCIsXG4gICAgICAgICAgICAgICAgYm9yZGVyUmFkaXVzOiBcIjVweFwiLFxuICAgICAgICAgICAgICAgIG1hcmdpbkJvdHRvbTogXCIxMHB4XCIsXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxwcmUgc3R5bGU9e3sgd29yZFdyYXA6IFwiYnJlYWstd29yZFwiLCB3aGl0ZVNwYWNlOiBcIm5vcm1hbFwiIH19PlxuICAgICAgICAgICAgICAgIHtyZWdlbmVyYXRlZEtleX1cbiAgICAgICAgICAgICAgPC9wcmU+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxDb3B5VG9DbGlwYm9hcmQgdGV4dD17cmVnZW5lcmF0ZWRLZXl9IG9uQ29weT17KCkgPT4gbWVzc2FnZS5zdWNjZXNzKFwiQVBJIEtleSBjb3BpZWQgdG8gY2xpcGJvYXJkXCIpfT5cbiAgICAgICAgICAgICAgPEJ1dHRvbiBjbGFzc05hbWU9XCJtdC0zXCI+Q29weSBBUEkgS2V5PC9CdXR0b24+XG4gICAgICAgICAgICA8L0NvcHlUb0NsaXBib2FyZD5cbiAgICAgICAgICA8L0NvbD5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgPC9Nb2RhbD5cbiAgICApfVxuICAgIDwvZGl2PlxuICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgVmlld0tleVRhYmxlO1xuIl0sIm5hbWVzIjpbIlJlYWN0IiwidXNlRWZmZWN0IiwidXNlU3RhdGUiLCJrZXlEZWxldGVDYWxsIiwibW9kZWxBdmFpbGFibGVDYWxsIiwiYWRkIiwiSW5mb3JtYXRpb25DaXJjbGVJY29uIiwiVHJhc2hJY29uIiwiUGVuY2lsQWx0SWNvbiIsIlJlZnJlc2hJY29uIiwia2V5VXBkYXRlQ2FsbCIsIm1vZGVsSW5mb0NhbGwiLCJyZWdlbmVyYXRlS2V5Q2FsbCIsIkJhZGdlIiwiQ2FyZCIsIlRhYmxlIiwiR3JpZCIsIkNvbCIsIkJ1dHRvbiIsIlRhYmxlQm9keSIsIlRhYmxlQ2VsbCIsIlRhYmxlSGVhZCIsIlRhYmxlSGVhZGVyQ2VsbCIsIlRhYmxlUm93IiwiVGV4dCIsIlRpdGxlIiwiSWNvbiIsIlRleHRJbnB1dCIsIlNlbGVjdCIsIlNlbGVjdDMiLCJTZWxlY3RJdGVtIiwiQnV0dG9uMiIsIk1vZGFsIiwiRm9ybSIsIklucHV0TnVtYmVyIiwibWVzc2FnZSIsIkNvcHlUb0NsaXBib2FyZCIsIk9wdGlvbiIsImlzTG9jYWwiLCJwcm9jZXNzIiwicHJveHlCYXNlVXJsIiwiY29uc29sZSIsImxvZyIsIlZpZXdLZXlUYWJsZSIsInVzZXJJRCIsInVzZXJSb2xlIiwiYWNjZXNzVG9rZW4iLCJzZWxlY3RlZFRlYW0iLCJkYXRhIiwic2V0RGF0YSIsInRlYW1zIiwicHJlbWl1bVVzZXIiLCJpc0J1dHRvbkNsaWNrZWQiLCJzZXRJc0J1dHRvbkNsaWNrZWQiLCJpc0RlbGV0ZU1vZGFsT3BlbiIsInNldElzRGVsZXRlTW9kYWxPcGVuIiwia2V5VG9EZWxldGUiLCJzZXRLZXlUb0RlbGV0ZSIsInNlbGVjdGVkSXRlbSIsInNldFNlbGVjdGVkSXRlbSIsInNwZW5kRGF0YSIsInNldFNwZW5kRGF0YSIsInByZWRpY3RlZFNwZW5kU3RyaW5nIiwic2V0UHJlZGljdGVkU3BlbmRTdHJpbmciLCJlZGl0TW9kYWxWaXNpYmxlIiwic2V0RWRpdE1vZGFsVmlzaWJsZSIsImluZm9EaWFsb2dWaXNpYmxlIiwic2V0SW5mb0RpYWxvZ1Zpc2libGUiLCJzZWxlY3RlZFRva2VuIiwic2V0U2VsZWN0ZWRUb2tlbiIsInVzZXJNb2RlbHMiLCJzZXRVc2VyTW9kZWxzIiwiaW5pdGlhbEtub3duVGVhbUlEcyIsIlNldCIsIm1vZGVsTGltaXRNb2RhbFZpc2libGUiLCJzZXRNb2RlbExpbWl0TW9kYWxWaXNpYmxlIiwicmVnZW5lcmF0ZURpYWxvZ1Zpc2libGUiLCJzZXRSZWdlbmVyYXRlRGlhbG9nVmlzaWJsZSIsInJlZ2VuZXJhdGVkS2V5Iiwic2V0UmVnZW5lcmF0ZWRLZXkiLCJyZWdlbmVyYXRlRm9ybURhdGEiLCJzZXRSZWdlbmVyYXRlRm9ybURhdGEiLCJyZWdlbmVyYXRlRm9ybSIsInVzZUZvcm0iLCJuZXdFeHBpcnlUaW1lIiwic2V0TmV3RXhwaXJ5VGltZSIsImtub3duVGVhbUlEcyIsInNldEtub3duVGVhbUlEcyIsImNhbGN1bGF0ZU5ld0V4cGlyeVRpbWUiLCJkdXJhdGlvbiIsIm5vdyIsIkRhdGUiLCJuZXdFeHBpcnkiLCJlbmRzV2l0aCIsInNlY29uZHMiLCJwYXJzZUludCIsImhvdXJzIiwiZGF5cyIsIkVycm9yIiwidG9Mb2NhbGVTdHJpbmciLCJ5ZWFyIiwibW9udGgiLCJkYXkiLCJob3VyIiwibWludXRlIiwic2Vjb25kIiwiaG91cjEyIiwiZXJyb3IiLCJmZXRjaFVzZXJNb2RlbHMiLCJtb2RlbF9hdmFpbGFibGUiLCJhdmFpbGFibGVfbW9kZWxfbmFtZXMiLCJtYXAiLCJlbGVtZW50IiwiaWQiLCJoYW5kbGVNb2RlbExpbWl0Q2xpY2siLCJ0b2tlbiIsImhhbmRsZU1vZGVsTGltaXRTdWJtaXQiLCJ1cGRhdGVkTWV0YWRhdGEiLCJmb3JtVmFsdWVzIiwibWV0YWRhdGEiLCJrZXkiLCJuZXdLZXlWYWx1ZXMiLCJ1cGRhdGVkRGF0YSIsInN1Y2Nlc3MiLCJ0ZWFtSURTZXQiLCJmb3JFYWNoIiwidGVhbSIsImluZGV4IiwidGVhbV9vYmoiLCJ0ZWFtX2lkIiwiRWRpdEtleU1vZGFsIiwidmlzaWJsZSIsIm9uQ2FuY2VsIiwib25TdWJtaXQiLCJmb3JtIiwia2V5VGVhbSIsInNldEtleVRlYW0iLCJlcnJvck1vZGVscyIsInNldEVycm9yTW9kZWxzIiwiZXJyb3JCdWRnZXQiLCJzZXRFcnJvckJ1ZGdldCIsImhhbmRsZU9rIiwidmFsaWRhdGVGaWVsZHMiLCJ0aGVuIiwidmFsdWVzIiwicmVzZXRGaWVsZHMiLCJjYXRjaCIsInRpdGxlIiwid2lkdGgiLCJmb290ZXIiLCJvbk9rIiwib25GaW5pc2giLCJoYW5kbGVFZGl0U3VibWl0IiwiaW5pdGlhbFZhbHVlcyIsImJ1ZGdldF9kdXJhdGlvbiIsImxhYmVsQ29sIiwic3BhbiIsIndyYXBwZXJDb2wiLCJsYWJlbEFsaWduIiwiSXRlbSIsIm5hbWUiLCJsYWJlbCIsInJ1bGVzIiwidmFsaWRhdG9yIiwicnVsZSIsInZhbHVlIiwiZmlsdGVyIiwibW9kZWwiLCJtb2RlbHMiLCJpbmNsdWRlcyIsImxlbmd0aCIsIlByb21pc2UiLCJyZWplY3QiLCJyZXNvbHZlIiwibW9kZSIsInBsYWNlaG9sZGVyIiwic3R5bGUiLCJjbGFzc05hbWUiLCJoZWxwIiwibWF4X2J1ZGdldCIsInVuZGVmaW5lZCIsIl8iLCJzdGVwIiwicHJlY2lzaW9uIiwiYnVkZ2V0X3Jlc2V0X2F0IiwiaGlkZGVuIiwidGVhbV9hbGlhcyIsIm9uQ2xpY2siLCJ0cG1fbGltaXQiLCJycG1fbGltaXQiLCJkaXYiLCJ0ZXh0QWxpZ24iLCJtYXJnaW5Ub3AiLCJodG1sVHlwZSIsIk1vZGVsTGltaXRNb2RhbCIsIm1vZGVsTGltaXRzIiwic2V0TW9kZWxMaW1pdHMiLCJhdmFpbGFibGVNb2RlbHMiLCJzZXRBdmFpbGFibGVNb2RlbHMiLCJuZXdNb2RlbFJvdyIsInNldE5ld01vZGVsUm93IiwidHBtTGltaXRzIiwibW9kZWxfdHBtX2xpbWl0IiwicnBtTGltaXRzIiwibW9kZWxfcnBtX2xpbWl0IiwiY29tYmluZWRMaW1pdHMiLCJPYmplY3QiLCJrZXlzIiwidHBtIiwicnBtIiwiZmV0Y2hBdmFpbGFibGVNb2RlbHMiLCJtb2RlbERhdGFSZXNwb25zZSIsImFsbE1vZGVsR3JvdXBzIiwiQXJyYXkiLCJmcm9tIiwibW9kZWxfbmFtZSIsImhhbmRsZUxpbWl0Q2hhbmdlIiwidHlwZSIsInByZXYiLCJoYW5kbGVBZGRMaW1pdCIsImhhbmRsZU1vZGVsU2VsZWN0IiwiaGFuZGxlUmVtb3ZlTW9kZWwiLCJyZXN0IiwiaGFuZGxlU3VibWl0IiwiZnJvbUVudHJpZXMiLCJlbnRyaWVzIiwibGltaXRzIiwib25DaGFuZ2UiLCJtIiwiaGFzT3duUHJvcGVydHkiLCJkaXNhYmxlZCIsImhhbmRsZUVkaXRDbGljayIsInRva2VuX2lkIiwiYnVkZ2V0RHVyYXRpb24iLCJoYW5kbGVFZGl0Q2FuY2VsIiwiY3VycmVudEtleSIsImhhbmRsZURlbGV0ZSIsImxvY2FsU3RvcmFnZSIsInJlbW92ZUl0ZW0iLCJjb25maXJtRGVsZXRlIiwiZmlsdGVyZWREYXRhIiwiaXRlbSIsImNhbmNlbERlbGV0ZSIsImhhbmRsZVJlZ2VuZXJhdGVDbGljayIsInNldEZpZWxkc1ZhbHVlIiwia2V5X2FsaWFzIiwiaGFuZGxlUmVnZW5lcmF0ZUZvcm1DaGFuZ2UiLCJmaWVsZCIsImhhbmRsZVJlZ2VuZXJhdGVLZXkiLCJyZXNwb25zZSIsImtleV9uYW1lIiwiaGFzIiwibWF4V2lkdGgiLCJ3aGl0ZVNwYWNlIiwib3ZlcmZsb3ciLCJjcmVhdGVkX2F0IiwicCIsImZvbnRTaXplIiwidG9Mb2NhbGVEYXRlU3RyaW5nIiwiZXhwaXJlcyIsInBhcnNlRmxvYXQiLCJzcGVuZCIsInRvRml4ZWQiLCJpc0FycmF5IiwiZGlzcGxheSIsImZsZXhEaXJlY3Rpb24iLCJzaXplIiwiY29sb3IiLCJzbGljZSIsImJyIiwiaWNvbiIsIm9wZW4iLCJ1c2VyX2lkIiwicHJlIiwiSlNPTiIsInN0cmluZ2lmeSIsImFyaWEtaGlkZGVuIiwiaDMiLCJsYXlvdXQiLCJvblZhbHVlc0NoYW5nZSIsImNoYW5nZWRWYWx1ZXMiLCJhbGxWYWx1ZXMiLCJ2YXJpYW50IiwiYSIsImhyZWYiLCJ0YXJnZXQiLCJudW1JdGVtcyIsIm51bUNvbFNwYW4iLCJiIiwiYmFja2dyb3VuZCIsInBhZGRpbmciLCJib3JkZXJSYWRpdXMiLCJtYXJnaW5Cb3R0b20iLCJ3b3JkV3JhcCIsInRleHQiLCJvbkNvcHkiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./src/components/view_key_table.tsx\n"));
|
||
|
||
/***/ })
|
||
|
||
}); |