diff --git a/build/index.es.js b/build/index.es.js index 2997cdb..9b8777b 100644 --- a/build/index.es.js +++ b/build/index.es.js @@ -1,10 +1,10 @@ import React, { useState, useRef, useContext, useEffect, createElement } from 'react'; import { Link } from 'react-router-dom'; -import { Menu, MenuItem, Grid, Typography, IconButton, CircularProgress, Tooltip, Button, Link as Link$1, Snackbar, ThemeProvider } from '@material-ui/core'; +import { Menu, MenuItem, Grid, Typography, Tooltip, IconButton, CircularProgress, Button, Link as Link$1, Snackbar, ThemeProvider } from '@material-ui/core'; import jwt from 'jsonwebtoken'; import { addMinutes, fromUnixTime } from 'date-fns'; import ArrowDropDownIcon from '@material-ui/icons/ArrowDropDown'; -import { Person, Brightness7, Brightness4, Error as Error$1, CheckCircle, ChevronRightRounded } from '@material-ui/icons'; +import { Person, Brightness7, Brightness4, HelpOutline, Error as Error$1, CheckCircle, ChevronRightRounded } from '@material-ui/icons'; import { makeStyles, createTheme } from '@material-ui/core/styles'; import axios from 'axios'; import qs from 'query-string'; @@ -1300,7 +1300,7 @@ const useStyles = makeStyles({ textOnGrey: { color: "black" }, - themeSwitcher: { + iconButton: { height: "36px", width: "36px", padding: "6px" @@ -1399,6 +1399,7 @@ const LoginComponent = (props) => { } }; const toggleThemeMode = () => themeContext.changeDarkMode(!themeContext.darkMode); + const openDocs = () => window.open("https://docs.google.com/document/d/1QG9mOu_HDBoGqQs7Dly0sxifk4w9vaJiDiWdi3Uk1a8", "_blank"); return (React.createElement(Grid, { container: true, className: "login-block", direction: "row", spacing: 1, alignItems: "center", justifyContent: "flex-end" }, React.createElement(Grid, { item: true }, React.createElement(Grid, { container: true, spacing: 0, alignItems: "flex-start", justifyContent: "flex-end" }, @@ -1409,7 +1410,12 @@ const LoginComponent = (props) => { React.createElement(Grid, { item: true }, React.createElement(Typography, { className: "username" }, (_a = props.loginData.preferred_username) !== null && _a !== void 0 ? _a : props.loginData.username)))), React.createElement(Grid, { item: true }, - React.createElement(IconButton, { onClick: toggleThemeMode, className: classes.themeSwitcher }, themeContext.darkMode ? React.createElement(Brightness7, { style: { color: "rgba(0, 0, 0, 0.54)" } }) : React.createElement(Brightness4, null))), + React.createElement(Tooltip, { title: "Switch dark/light theme" }, + React.createElement(IconButton, { onClick: toggleThemeMode, className: classes.iconButton }, themeContext.darkMode ? React.createElement(Brightness7, { style: { color: "rgba(0, 0, 0, 0.54)" } }) : React.createElement(Brightness4, null)))), + React.createElement(Grid, { item: true }, + React.createElement(Tooltip, { title: "Open pluto guide" }, + React.createElement(IconButton, { onClick: openDocs, className: classes.iconButton }, + React.createElement(HelpOutline, { style: { color: themeContext.darkMode ? "rgba(0,0,0,0.54)" : "inherit" } })))), refreshInProgress ? React.createElement(Grid, { item: true, id: "refresh-in-progress" }, React.createElement(Grid, { container: true, spacing: 0, alignItems: "flex-end", justifyContent: "flex-end" }, diff --git a/build/index.es.js.map b/build/index.es.js.map index 551de0d..47bcc98 100644 --- a/build/index.es.js.map +++ b/build/index.es.js.map @@ -1 +1 @@ -{"version":3,"file":"index.es.js","sources":["../node_modules/tslib/tslib.es6.js","../node_modules/style-inject/dist/style-inject.es.js","../src/utils/DecodedProfile.ts","../src/utils/JwtHelpers.ts","../src/utils/AppLinks.ts","../src/components/MenuButton/MenuButton.tsx","../node_modules/ts-interface-checker/dist/util.js","../node_modules/ts-interface-checker/dist/types.js","../node_modules/ts-interface-checker/dist/index.js","../src/utils/OAuthConfiguration-ti.ts","../src/utils/OAuthConfiguration.ts","../src/utils/OAuth2Helper.ts","../src/components/Theme/CustomisingThemeContext.tsx","../src/components/AppSwitcher/LoginComponent.tsx","../src/components/AppSwitcher/AppSwitcher.tsx","../src/components/Header/Header.tsx","../src/utils/Interceptor.ts","../src/components/Breadcrumb/Breadcrumb.tsx","../src/components/SystemNotification/SystemNotification.tsx","../src/components/Context/OAuthContext.tsx","../src/components/Context/UserContext.tsx","../src/components/Theme/DefaultPlutoTheme.ts","../src/components/Theme/PlutoThemeProvider.tsx"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","import {fromUnixTime,addMinutes} from 'date-fns';\n\ninterface JwtDataShape {\n aud: string;\n iss: string;\n iat: number;\n iat_moment?: Date;\n exp: number;\n exp_moment?: Date;\n sub?: string;\n email?: string;\n first_name?: string;\n given_name?: string;\n family_name?: string;\n username?: string;\n preferred_username?: string;\n location?: string;\n job_title?: string;\n authmethod?: string;\n auth_time?: string;\n ver?: string;\n appid?: string;\n}\n\nfunction utcTime(from: number) {\n //see https://stackoverflow.com/a/61469549. `fromUnixTime` gives us a local time, but we want UTC.\n const date = fromUnixTime(from);\n return addMinutes(date, date.getTimezoneOffset());\n}\n\nfunction JwtData(jwtData: object) {\n return new Proxy(jwtData, {\n get(target, prop) {\n switch (prop) {\n case \"iat_moment\":\n return utcTime(target.iat);\n case \"exp_moment\":\n return utcTime(target.exp);\n case \"username\":\n return target.preferred_username ?? target.username;\n case \"first_name\":\n return target.first_name ?? target.given_name;\n default:\n return (target)[prop] ?? null;\n }\n },\n });\n}\n\nexport type { JwtDataShape };\nexport { JwtData };\n","import jwt, {JwtPayload} from \"jsonwebtoken\";\nimport {JwtData, JwtDataShape} from \"./DecodedProfile\";\n\n/**\n * perform the validation of the token via jsonwebtoken library.\n * if validation fails then the returned promise is rejected\n * if validation succeeds, then the promise only completes once the decoded content has been set into the state.\n * @returns {Promise} Decoded JWT content or rejects with an error\n */\nfunction verifyJwt(token: string, signingKey: string, refreshToken?: string) {\n return new Promise((resolve, reject) => {\n jwt.verify(token, signingKey, (err, decoded) => {\n if (err) {\n console.log(\"token: \", token);\n console.log(\"signingKey: \", signingKey);\n console.error(\"could not verify JWT: \", err);\n reject(err);\n }\n\n window.localStorage.setItem(\"pluto:access-token\", token); //it validates so save the token\n if (refreshToken)\n window.localStorage.setItem(\"pluto:refresh-token\", refreshToken);\n resolve(decoded);\n });\n });\n}\n\n/**\n * perform the validation of the token via jsonwebtoken library.\n * if validation fails then the returned promise is rejected\n * if validation succeeds, then the promise only completes once the decoded content has been set into the state.\n * @returns {Promise} Decoded JWT content or rejects with an error\n */\nfunction validateAndDecode(token:string, signingKey:string, refreshToken?:string):Promise {\n return new Promise((resolve, reject) => {\n jwt.verify(token, signingKey, (err, decoded) => {\n if (err) {\n console.log(\"token: \", token);\n console.log(\"signingKey: \", signingKey);\n console.error(\"could not verify JWT: \", err);\n reject(err);\n }\n\n window.localStorage.setItem(\"pluto:access-token\", token); //it validates so save the token\n if (refreshToken)\n window.localStorage.setItem(\"pluto:refresh-token\", refreshToken);\n resolve(decoded);\n });\n });\n}\n\n/**\n * gets the signing key from the server\n * @returns {Promise} Raw content of the signing key in PEM format\n */\nasync function loadInSigningKey() {\n const result = await fetch(\"/meta/oauth/publickey.pem\");\n switch (result.status) {\n case 200:\n return result.text();\n default:\n console.error(\n \"could not retrieve signing key, server gave us \",\n result.status\n );\n throw \"Could not retrieve signing key\";\n }\n}\n\n/**\n * returns the raw JWT for passing to backend services\n * @returns {string} the JWT, or null if it is not set.\n */\nfunction getRawToken() {\n return window.localStorage.getItem(\"pluto:access-token\");\n}\n\n/**\n * helper function that validates and decodes into a user profile a token already existing in the localstorage\n */\nasync function verifyExistingLogin(): Promise {\n const token = getRawToken();\n if (token) {\n const signingKey = await loadInSigningKey();\n const jwtPayload = await verifyJwt(token, signingKey);\n return jwtPayload ? JwtData(jwtPayload) : undefined;\n }\n}\n\n\n\nexport { validateAndDecode, loadInSigningKey, getRawToken, verifyJwt, verifyExistingLogin };\n","export const hrefIsTheSameDeploymentRootPath = (href: string): boolean => {\n let deployment = \"\";\n try {\n deployment = deploymentRootPath;\n } catch {\n deployment = \"\";\n }\n\n if (!deployment) {\n return false;\n }\n\n return href !== \"/\" && href.includes(deployment);\n};\n\nexport const getDeploymentRootPathLink = (href: string): string => {\n const link = href.split(deploymentRootPath)[1];\n\n return link.startsWith(\"/\") ? link : `/${link}`;\n};\n","import React, { useState } from \"react\";\nimport { Link } from \"react-router-dom\";\nimport ArrowDropDownIcon from \"@material-ui/icons/ArrowDropDown\";\nimport { Menu, MenuItem } from \"@material-ui/core\";\nimport {\n hrefIsTheSameDeploymentRootPath,\n getDeploymentRootPathLink,\n} from \"../../utils/AppLinks\";\nimport \"./MenuButton.css\";\n\ninterface MenuButtonProps {\n isAdmin: boolean;\n index: number;\n text: string;\n adminOnly: boolean | undefined;\n content: BaseMenuSettings[] | undefined;\n}\n\nexport const MenuButton: React.FC = (props) => {\n const { index, isAdmin, text, adminOnly, content } = props;\n const [anchorEl, setAnchorEl] = useState(null);\n\n const openSubmenu = (event: React.MouseEvent) => {\n setAnchorEl(event.currentTarget);\n };\n\n const closeMenu = () => {\n setAnchorEl(null);\n };\n\n return (\n \n \n {text}\n \n \n \n {(content || []).map(({ type, text, href, adminOnly }, index) => {\n if (type === \"submenu\") {\n console.error(\n \"You have provided a submenu inside a submenu, nested submenus are not supported!\"\n );\n return;\n }\n\n if (hrefIsTheSameDeploymentRootPath(href)) {\n return (\n {\n closeMenu();\n }}\n >\n {text}\n \n );\n }\n\n return (\n {\n closeMenu();\n window.location.assign(href);\n }}\n >\n {text}\n \n );\n })}\n \n \n );\n};\n","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DetailContext = exports.NoopContext = exports.VError = void 0;\n/**\n * Error thrown by validation. Besides an informative message, it includes the path to the\n * property which triggered the failure.\n */\nvar VError = /** @class */ (function (_super) {\n __extends(VError, _super);\n function VError(path, message) {\n var _this = _super.call(this, message) || this;\n _this.path = path;\n // See https://github.com/Microsoft/TypeScript/wiki/Breaking-Changes#extending-built-ins-like-error-array-and-map-may-no-longer-work for info about this workaround.\n Object.setPrototypeOf(_this, VError.prototype);\n return _this;\n }\n return VError;\n}(Error));\nexports.VError = VError;\n/**\n * Fast implementation of IContext used for first-pass validation. If that fails, we can validate\n * using DetailContext to collect error messages. That's faster for the common case when messages\n * normally pass validation.\n */\nvar NoopContext = /** @class */ (function () {\n function NoopContext() {\n }\n NoopContext.prototype.fail = function (relPath, message, score) {\n return false;\n };\n NoopContext.prototype.unionResolver = function () { return this; };\n NoopContext.prototype.createContext = function () { return this; };\n NoopContext.prototype.resolveUnion = function (ur) { };\n return NoopContext;\n}());\nexports.NoopContext = NoopContext;\n/**\n * Complete implementation of IContext that collects meaningfull errors.\n */\nvar DetailContext = /** @class */ (function () {\n function DetailContext() {\n // Stack of property names and associated messages for reporting helpful error messages.\n this._propNames = [\"\"];\n this._messages = [null];\n // Score is used to choose the best union member whose DetailContext to use for reporting.\n // Higher score means better match (or rather less severe mismatch).\n this._score = 0;\n }\n DetailContext.prototype.fail = function (relPath, message, score) {\n this._propNames.push(relPath);\n this._messages.push(message);\n this._score += score;\n return false;\n };\n DetailContext.prototype.unionResolver = function () {\n return new DetailUnionResolver();\n };\n DetailContext.prototype.resolveUnion = function (unionResolver) {\n var _a, _b;\n var u = unionResolver;\n var best = null;\n for (var _i = 0, _c = u.contexts; _i < _c.length; _i++) {\n var ctx = _c[_i];\n if (!best || ctx._score >= best._score) {\n best = ctx;\n }\n }\n if (best && best._score > 0) {\n (_a = this._propNames).push.apply(_a, best._propNames);\n (_b = this._messages).push.apply(_b, best._messages);\n }\n };\n DetailContext.prototype.getError = function (path) {\n var msgParts = [];\n for (var i = this._propNames.length - 1; i >= 0; i--) {\n var p = this._propNames[i];\n path += (typeof p === \"number\") ? \"[\" + p + \"]\" : (p ? \".\" + p : \"\");\n var m = this._messages[i];\n if (m) {\n msgParts.push(path + \" \" + m);\n }\n }\n return new VError(path, msgParts.join(\"; \"));\n };\n DetailContext.prototype.getErrorDetail = function (path) {\n var details = [];\n for (var i = this._propNames.length - 1; i >= 0; i--) {\n var p = this._propNames[i];\n path += (typeof p === \"number\") ? \"[\" + p + \"]\" : (p ? \".\" + p : \"\");\n var message = this._messages[i];\n if (message) {\n details.push({ path: path, message: message });\n }\n }\n var detail = null;\n for (var i = details.length - 1; i >= 0; i--) {\n if (detail) {\n details[i].nested = [detail];\n }\n detail = details[i];\n }\n return detail;\n };\n return DetailContext;\n}());\nexports.DetailContext = DetailContext;\nvar DetailUnionResolver = /** @class */ (function () {\n function DetailUnionResolver() {\n this.contexts = [];\n }\n DetailUnionResolver.prototype.createContext = function () {\n var ctx = new DetailContext();\n this.contexts.push(ctx);\n return ctx;\n };\n return DetailUnionResolver;\n}());\n","\"use strict\";\n/**\n * This module defines nodes used to define types and validations for objects and interfaces.\n */\n// tslint:disable:no-shadowed-variable prefer-for-of\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.basicTypes = exports.BasicType = exports.TParamList = exports.TParam = exports.param = exports.TFunc = exports.func = exports.TProp = exports.TOptional = exports.opt = exports.TIface = exports.iface = exports.TEnumLiteral = exports.enumlit = exports.TEnumType = exports.enumtype = exports.TIntersection = exports.intersection = exports.TUnion = exports.union = exports.TTuple = exports.tuple = exports.TArray = exports.array = exports.TLiteral = exports.lit = exports.TName = exports.name = exports.TType = void 0;\nvar util_1 = require(\"./util\");\n/** Node that represents a type. */\nvar TType = /** @class */ (function () {\n function TType() {\n }\n return TType;\n}());\nexports.TType = TType;\n/** Parses a type spec into a TType node. */\nfunction parseSpec(typeSpec) {\n return typeof typeSpec === \"string\" ? name(typeSpec) : typeSpec;\n}\nfunction getNamedType(suite, name) {\n var ttype = suite[name];\n if (!ttype) {\n throw new Error(\"Unknown type \" + name);\n }\n return ttype;\n}\n/**\n * Defines a type name, either built-in, or defined in this suite. It can typically be included in\n * the specs as just a plain string.\n */\nfunction name(value) { return new TName(value); }\nexports.name = name;\nvar TName = /** @class */ (function (_super) {\n __extends(TName, _super);\n function TName(name) {\n var _this = _super.call(this) || this;\n _this.name = name;\n _this._failMsg = \"is not a \" + name;\n return _this;\n }\n TName.prototype.getChecker = function (suite, strict, allowedProps) {\n var _this = this;\n var ttype = getNamedType(suite, this.name);\n var checker = ttype.getChecker(suite, strict, allowedProps);\n if (ttype instanceof BasicType || ttype instanceof TName) {\n return checker;\n }\n // For complex types, add an additional \"is not a \" message on failure.\n return function (value, ctx) { return checker(value, ctx) ? true : ctx.fail(null, _this._failMsg, 0); };\n };\n return TName;\n}(TType));\nexports.TName = TName;\n/**\n * Defines a literal value, e.g. lit('hello') or lit(123).\n */\nfunction lit(value) { return new TLiteral(value); }\nexports.lit = lit;\nvar TLiteral = /** @class */ (function (_super) {\n __extends(TLiteral, _super);\n function TLiteral(value) {\n var _this = _super.call(this) || this;\n _this.value = value;\n _this.name = JSON.stringify(value);\n _this._failMsg = \"is not \" + _this.name;\n return _this;\n }\n TLiteral.prototype.getChecker = function (suite, strict) {\n var _this = this;\n return function (value, ctx) { return (value === _this.value) ? true : ctx.fail(null, _this._failMsg, -1); };\n };\n return TLiteral;\n}(TType));\nexports.TLiteral = TLiteral;\n/**\n * Defines an array type, e.g. array('number').\n */\nfunction array(typeSpec) { return new TArray(parseSpec(typeSpec)); }\nexports.array = array;\nvar TArray = /** @class */ (function (_super) {\n __extends(TArray, _super);\n function TArray(ttype) {\n var _this = _super.call(this) || this;\n _this.ttype = ttype;\n return _this;\n }\n TArray.prototype.getChecker = function (suite, strict) {\n var itemChecker = this.ttype.getChecker(suite, strict);\n return function (value, ctx) {\n if (!Array.isArray(value)) {\n return ctx.fail(null, \"is not an array\", 0);\n }\n for (var i = 0; i < value.length; i++) {\n var ok = itemChecker(value[i], ctx);\n if (!ok) {\n return ctx.fail(i, null, 1);\n }\n }\n return true;\n };\n };\n return TArray;\n}(TType));\nexports.TArray = TArray;\n/**\n * Defines a tuple type, e.g. tuple('string', 'number').\n */\nfunction tuple() {\n var typeSpec = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n typeSpec[_i] = arguments[_i];\n }\n return new TTuple(typeSpec.map(function (t) { return parseSpec(t); }));\n}\nexports.tuple = tuple;\nvar TTuple = /** @class */ (function (_super) {\n __extends(TTuple, _super);\n function TTuple(ttypes) {\n var _this = _super.call(this) || this;\n _this.ttypes = ttypes;\n return _this;\n }\n TTuple.prototype.getChecker = function (suite, strict) {\n var itemCheckers = this.ttypes.map(function (t) { return t.getChecker(suite, strict); });\n var checker = function (value, ctx) {\n if (!Array.isArray(value)) {\n return ctx.fail(null, \"is not an array\", 0);\n }\n for (var i = 0; i < itemCheckers.length; i++) {\n var ok = itemCheckers[i](value[i], ctx);\n if (!ok) {\n return ctx.fail(i, null, 1);\n }\n }\n return true;\n };\n if (!strict) {\n return checker;\n }\n return function (value, ctx) {\n if (!checker(value, ctx)) {\n return false;\n }\n return value.length <= itemCheckers.length ? true :\n ctx.fail(itemCheckers.length, \"is extraneous\", 2);\n };\n };\n return TTuple;\n}(TType));\nexports.TTuple = TTuple;\n/**\n * Defines a union type, e.g. union('number', 'null').\n */\nfunction union() {\n var typeSpec = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n typeSpec[_i] = arguments[_i];\n }\n return new TUnion(typeSpec.map(function (t) { return parseSpec(t); }));\n}\nexports.union = union;\nvar TUnion = /** @class */ (function (_super) {\n __extends(TUnion, _super);\n function TUnion(ttypes) {\n var _this = _super.call(this) || this;\n _this.ttypes = ttypes;\n var names = ttypes.map(function (t) { return t instanceof TName || t instanceof TLiteral ? t.name : null; })\n .filter(function (n) { return n; });\n var otherTypes = ttypes.length - names.length;\n if (names.length) {\n if (otherTypes > 0) {\n names.push(otherTypes + \" more\");\n }\n _this._failMsg = \"is none of \" + names.join(\", \");\n }\n else {\n _this._failMsg = \"is none of \" + otherTypes + \" types\";\n }\n return _this;\n }\n TUnion.prototype.getChecker = function (suite, strict) {\n var _this = this;\n var itemCheckers = this.ttypes.map(function (t) { return t.getChecker(suite, strict); });\n return function (value, ctx) {\n var ur = ctx.unionResolver();\n for (var i = 0; i < itemCheckers.length; i++) {\n var ok = itemCheckers[i](value, ur.createContext());\n if (ok) {\n return true;\n }\n }\n ctx.resolveUnion(ur);\n return ctx.fail(null, _this._failMsg, 0);\n };\n };\n return TUnion;\n}(TType));\nexports.TUnion = TUnion;\n/**\n * Defines an intersection type, e.g. intersection('number', 'null').\n */\nfunction intersection() {\n var typeSpec = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n typeSpec[_i] = arguments[_i];\n }\n return new TIntersection(typeSpec.map(function (t) { return parseSpec(t); }));\n}\nexports.intersection = intersection;\nvar TIntersection = /** @class */ (function (_super) {\n __extends(TIntersection, _super);\n function TIntersection(ttypes) {\n var _this = _super.call(this) || this;\n _this.ttypes = ttypes;\n return _this;\n }\n TIntersection.prototype.getChecker = function (suite, strict) {\n var allowedProps = new Set();\n var itemCheckers = this.ttypes.map(function (t) { return t.getChecker(suite, strict, allowedProps); });\n return function (value, ctx) {\n var ok = itemCheckers.every(function (checker) { return checker(value, ctx); });\n if (ok) {\n return true;\n }\n return ctx.fail(null, null, 0);\n };\n };\n return TIntersection;\n}(TType));\nexports.TIntersection = TIntersection;\n/**\n * Defines an enum type, e.g. enum({'A': 1, 'B': 2}).\n */\nfunction enumtype(values) {\n return new TEnumType(values);\n}\nexports.enumtype = enumtype;\nvar TEnumType = /** @class */ (function (_super) {\n __extends(TEnumType, _super);\n function TEnumType(members) {\n var _this = _super.call(this) || this;\n _this.members = members;\n _this.validValues = new Set();\n _this._failMsg = \"is not a valid enum value\";\n _this.validValues = new Set(Object.keys(members).map(function (name) { return members[name]; }));\n return _this;\n }\n TEnumType.prototype.getChecker = function (suite, strict) {\n var _this = this;\n return function (value, ctx) {\n return (_this.validValues.has(value) ? true : ctx.fail(null, _this._failMsg, 0));\n };\n };\n return TEnumType;\n}(TType));\nexports.TEnumType = TEnumType;\n/**\n * Defines a literal enum value, such as Direction.Up, specified as enumlit(\"Direction\", \"Up\").\n */\nfunction enumlit(name, prop) {\n return new TEnumLiteral(name, prop);\n}\nexports.enumlit = enumlit;\nvar TEnumLiteral = /** @class */ (function (_super) {\n __extends(TEnumLiteral, _super);\n function TEnumLiteral(enumName, prop) {\n var _this = _super.call(this) || this;\n _this.enumName = enumName;\n _this.prop = prop;\n _this._failMsg = \"is not \" + enumName + \".\" + prop;\n return _this;\n }\n TEnumLiteral.prototype.getChecker = function (suite, strict) {\n var _this = this;\n var ttype = getNamedType(suite, this.enumName);\n if (!(ttype instanceof TEnumType)) {\n throw new Error(\"Type \" + this.enumName + \" used in enumlit is not an enum type\");\n }\n var val = ttype.members[this.prop];\n if (!ttype.members.hasOwnProperty(this.prop)) {\n throw new Error(\"Unknown value \" + this.enumName + \".\" + this.prop + \" used in enumlit\");\n }\n return function (value, ctx) { return (value === val) ? true : ctx.fail(null, _this._failMsg, -1); };\n };\n return TEnumLiteral;\n}(TType));\nexports.TEnumLiteral = TEnumLiteral;\nfunction makeIfaceProps(props) {\n return Object.keys(props).map(function (name) { return makeIfaceProp(name, props[name]); });\n}\nfunction makeIfaceProp(name, prop) {\n return prop instanceof TOptional ?\n new TProp(name, prop.ttype, true) :\n new TProp(name, parseSpec(prop), false);\n}\n/**\n * Defines an interface. The first argument is an array of interfaces that it extends, and the\n * second is an array of properties.\n */\nfunction iface(bases, props) {\n return new TIface(bases, makeIfaceProps(props));\n}\nexports.iface = iface;\nvar TIface = /** @class */ (function (_super) {\n __extends(TIface, _super);\n function TIface(bases, props) {\n var _this = _super.call(this) || this;\n _this.bases = bases;\n _this.props = props;\n _this.propSet = new Set(props.map(function (p) { return p.name; }));\n return _this;\n }\n TIface.prototype.getChecker = function (suite, strict, allowedProps) {\n var _this = this;\n var baseCheckers = this.bases.map(function (b) { return getNamedType(suite, b).getChecker(suite, strict); });\n var propCheckers = this.props.map(function (prop) { return prop.ttype.getChecker(suite, strict); });\n var testCtx = new util_1.NoopContext();\n // Consider a prop required if it's not optional AND does not allow for undefined as a value.\n var isPropRequired = this.props.map(function (prop, i) {\n return !prop.isOpt && !propCheckers[i](undefined, testCtx);\n });\n var checker = function (value, ctx) {\n if (typeof value !== \"object\" || value === null) {\n return ctx.fail(null, \"is not an object\", 0);\n }\n for (var i = 0; i < baseCheckers.length; i++) {\n if (!baseCheckers[i](value, ctx)) {\n return false;\n }\n }\n for (var i = 0; i < propCheckers.length; i++) {\n var name_1 = _this.props[i].name;\n var v = value[name_1];\n if (v === undefined) {\n if (isPropRequired[i]) {\n return ctx.fail(name_1, \"is missing\", 1);\n }\n }\n else {\n var ok = propCheckers[i](v, ctx);\n if (!ok) {\n return ctx.fail(name_1, null, 1);\n }\n }\n }\n return true;\n };\n if (!strict) {\n return checker;\n }\n var propSet = this.propSet;\n if (allowedProps) {\n this.propSet.forEach(function (prop) { return allowedProps.add(prop); });\n propSet = allowedProps;\n }\n // In strict mode, check also for unknown enumerable properties.\n return function (value, ctx) {\n if (!checker(value, ctx)) {\n return false;\n }\n for (var prop in value) {\n if (!propSet.has(prop)) {\n return ctx.fail(prop, \"is extraneous\", 2);\n }\n }\n return true;\n };\n };\n return TIface;\n}(TType));\nexports.TIface = TIface;\n/**\n * Defines an optional property on an interface.\n */\nfunction opt(typeSpec) { return new TOptional(parseSpec(typeSpec)); }\nexports.opt = opt;\nvar TOptional = /** @class */ (function (_super) {\n __extends(TOptional, _super);\n function TOptional(ttype) {\n var _this = _super.call(this) || this;\n _this.ttype = ttype;\n return _this;\n }\n TOptional.prototype.getChecker = function (suite, strict) {\n var itemChecker = this.ttype.getChecker(suite, strict);\n return function (value, ctx) {\n return value === undefined || itemChecker(value, ctx);\n };\n };\n return TOptional;\n}(TType));\nexports.TOptional = TOptional;\n/**\n * Defines a property in an interface.\n */\nvar TProp = /** @class */ (function () {\n function TProp(name, ttype, isOpt) {\n this.name = name;\n this.ttype = ttype;\n this.isOpt = isOpt;\n }\n return TProp;\n}());\nexports.TProp = TProp;\n/**\n * Defines a function. The first argument declares the function's return type, the rest declare\n * its parameters.\n */\nfunction func(resultSpec) {\n var params = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n params[_i - 1] = arguments[_i];\n }\n return new TFunc(new TParamList(params), parseSpec(resultSpec));\n}\nexports.func = func;\nvar TFunc = /** @class */ (function (_super) {\n __extends(TFunc, _super);\n function TFunc(paramList, result) {\n var _this = _super.call(this) || this;\n _this.paramList = paramList;\n _this.result = result;\n return _this;\n }\n TFunc.prototype.getChecker = function (suite, strict) {\n return function (value, ctx) {\n return typeof value === \"function\" ? true : ctx.fail(null, \"is not a function\", 0);\n };\n };\n return TFunc;\n}(TType));\nexports.TFunc = TFunc;\n/**\n * Defines a function parameter.\n */\nfunction param(name, typeSpec, isOpt) {\n return new TParam(name, parseSpec(typeSpec), Boolean(isOpt));\n}\nexports.param = param;\nvar TParam = /** @class */ (function () {\n function TParam(name, ttype, isOpt) {\n this.name = name;\n this.ttype = ttype;\n this.isOpt = isOpt;\n }\n return TParam;\n}());\nexports.TParam = TParam;\n/**\n * Defines a function parameter list.\n */\nvar TParamList = /** @class */ (function (_super) {\n __extends(TParamList, _super);\n function TParamList(params) {\n var _this = _super.call(this) || this;\n _this.params = params;\n return _this;\n }\n TParamList.prototype.getChecker = function (suite, strict) {\n var _this = this;\n var itemCheckers = this.params.map(function (t) { return t.ttype.getChecker(suite, strict); });\n var testCtx = new util_1.NoopContext();\n var isParamRequired = this.params.map(function (param, i) {\n return !param.isOpt && !itemCheckers[i](undefined, testCtx);\n });\n var checker = function (value, ctx) {\n if (!Array.isArray(value)) {\n return ctx.fail(null, \"is not an array\", 0);\n }\n for (var i = 0; i < itemCheckers.length; i++) {\n var p = _this.params[i];\n if (value[i] === undefined) {\n if (isParamRequired[i]) {\n return ctx.fail(p.name, \"is missing\", 1);\n }\n }\n else {\n var ok = itemCheckers[i](value[i], ctx);\n if (!ok) {\n return ctx.fail(p.name, null, 1);\n }\n }\n }\n return true;\n };\n if (!strict) {\n return checker;\n }\n return function (value, ctx) {\n if (!checker(value, ctx)) {\n return false;\n }\n return value.length <= itemCheckers.length ? true :\n ctx.fail(itemCheckers.length, \"is extraneous\", 2);\n };\n };\n return TParamList;\n}(TType));\nexports.TParamList = TParamList;\n/**\n * Single TType implementation for all basic built-in types.\n */\nvar BasicType = /** @class */ (function (_super) {\n __extends(BasicType, _super);\n function BasicType(validator, message) {\n var _this = _super.call(this) || this;\n _this.validator = validator;\n _this.message = message;\n return _this;\n }\n BasicType.prototype.getChecker = function (suite, strict) {\n var _this = this;\n return function (value, ctx) { return _this.validator(value) ? true : ctx.fail(null, _this.message, 0); };\n };\n return BasicType;\n}(TType));\nexports.BasicType = BasicType;\n/**\n * Defines the suite of basic types.\n */\nexports.basicTypes = {\n any: new BasicType(function (v) { return true; }, \"is invalid\"),\n number: new BasicType(function (v) { return (typeof v === \"number\"); }, \"is not a number\"),\n object: new BasicType(function (v) { return (typeof v === \"object\" && v); }, \"is not an object\"),\n boolean: new BasicType(function (v) { return (typeof v === \"boolean\"); }, \"is not a boolean\"),\n string: new BasicType(function (v) { return (typeof v === \"string\"); }, \"is not a string\"),\n symbol: new BasicType(function (v) { return (typeof v === \"symbol\"); }, \"is not a symbol\"),\n void: new BasicType(function (v) { return (v == null); }, \"is not void\"),\n undefined: new BasicType(function (v) { return (v === undefined); }, \"is not undefined\"),\n null: new BasicType(function (v) { return (v === null); }, \"is not null\"),\n never: new BasicType(function (v) { return false; }, \"is unexpected\"),\n Date: new BasicType(getIsNativeChecker(\"[object Date]\"), \"is not a Date\"),\n RegExp: new BasicType(getIsNativeChecker(\"[object RegExp]\"), \"is not a RegExp\"),\n};\n// This approach for checking native object types mirrors that of lodash. Its advantage over\n// `isinstance` is that it can still return true for native objects created in different JS\n// execution environments.\nvar nativeToString = Object.prototype.toString;\nfunction getIsNativeChecker(tag) {\n return function (v) { return typeof v === \"object\" && v && nativeToString.call(v) === tag; };\n}\nif (typeof Buffer !== \"undefined\") {\n exports.basicTypes.Buffer = new BasicType(function (v) { return Buffer.isBuffer(v); }, \"is not a Buffer\");\n}\nvar _loop_1 = function (array_1) {\n exports.basicTypes[array_1.name] = new BasicType(function (v) { return (v instanceof array_1); }, \"is not a \" + array_1.name);\n};\n// Support typed arrays of various flavors\nfor (var _i = 0, _a = [Int8Array, Uint8Array, Uint8ClampedArray, Int16Array, Uint16Array,\n Int32Array, Uint32Array, Float32Array, Float64Array, ArrayBuffer]; _i < _a.length; _i++) {\n var array_1 = _a[_i];\n _loop_1(array_1);\n}\n","\"use strict\";\nvar __spreadArrays = (this && this.__spreadArrays) || function () {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Checker = exports.createCheckers = void 0;\nvar types_1 = require(\"./types\");\nvar util_1 = require(\"./util\");\n/**\n * Export functions used to define interfaces.\n */\nvar types_2 = require(\"./types\");\nObject.defineProperty(exports, \"TArray\", { enumerable: true, get: function () { return types_2.TArray; } });\nObject.defineProperty(exports, \"TEnumType\", { enumerable: true, get: function () { return types_2.TEnumType; } });\nObject.defineProperty(exports, \"TEnumLiteral\", { enumerable: true, get: function () { return types_2.TEnumLiteral; } });\nObject.defineProperty(exports, \"TFunc\", { enumerable: true, get: function () { return types_2.TFunc; } });\nObject.defineProperty(exports, \"TIface\", { enumerable: true, get: function () { return types_2.TIface; } });\nObject.defineProperty(exports, \"TLiteral\", { enumerable: true, get: function () { return types_2.TLiteral; } });\nObject.defineProperty(exports, \"TName\", { enumerable: true, get: function () { return types_2.TName; } });\nObject.defineProperty(exports, \"TOptional\", { enumerable: true, get: function () { return types_2.TOptional; } });\nObject.defineProperty(exports, \"TParam\", { enumerable: true, get: function () { return types_2.TParam; } });\nObject.defineProperty(exports, \"TParamList\", { enumerable: true, get: function () { return types_2.TParamList; } });\nObject.defineProperty(exports, \"TProp\", { enumerable: true, get: function () { return types_2.TProp; } });\nObject.defineProperty(exports, \"TTuple\", { enumerable: true, get: function () { return types_2.TTuple; } });\nObject.defineProperty(exports, \"TType\", { enumerable: true, get: function () { return types_2.TType; } });\nObject.defineProperty(exports, \"TUnion\", { enumerable: true, get: function () { return types_2.TUnion; } });\nObject.defineProperty(exports, \"TIntersection\", { enumerable: true, get: function () { return types_2.TIntersection; } });\nObject.defineProperty(exports, \"array\", { enumerable: true, get: function () { return types_2.array; } });\nObject.defineProperty(exports, \"enumlit\", { enumerable: true, get: function () { return types_2.enumlit; } });\nObject.defineProperty(exports, \"enumtype\", { enumerable: true, get: function () { return types_2.enumtype; } });\nObject.defineProperty(exports, \"func\", { enumerable: true, get: function () { return types_2.func; } });\nObject.defineProperty(exports, \"iface\", { enumerable: true, get: function () { return types_2.iface; } });\nObject.defineProperty(exports, \"lit\", { enumerable: true, get: function () { return types_2.lit; } });\nObject.defineProperty(exports, \"name\", { enumerable: true, get: function () { return types_2.name; } });\nObject.defineProperty(exports, \"opt\", { enumerable: true, get: function () { return types_2.opt; } });\nObject.defineProperty(exports, \"param\", { enumerable: true, get: function () { return types_2.param; } });\nObject.defineProperty(exports, \"tuple\", { enumerable: true, get: function () { return types_2.tuple; } });\nObject.defineProperty(exports, \"union\", { enumerable: true, get: function () { return types_2.union; } });\nObject.defineProperty(exports, \"intersection\", { enumerable: true, get: function () { return types_2.intersection; } });\nObject.defineProperty(exports, \"BasicType\", { enumerable: true, get: function () { return types_2.BasicType; } });\nvar util_2 = require(\"./util\");\nObject.defineProperty(exports, \"VError\", { enumerable: true, get: function () { return util_2.VError; } });\n/**\n * Takes one of more type suites (e.g. a module generated by `ts-interface-builder`), and combines\n * them into a suite of interface checkers. If a type is used by name, that name should be present\n * among the passed-in type suites.\n *\n * The returned object maps type names to Checker objects.\n */\nfunction createCheckers() {\n var typeSuite = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n typeSuite[_i] = arguments[_i];\n }\n var fullSuite = Object.assign.apply(Object, __spreadArrays([{}, types_1.basicTypes], typeSuite));\n var checkers = {};\n for (var _a = 0, typeSuite_1 = typeSuite; _a < typeSuite_1.length; _a++) {\n var suite_1 = typeSuite_1[_a];\n for (var _b = 0, _c = Object.keys(suite_1); _b < _c.length; _b++) {\n var name = _c[_b];\n checkers[name] = new Checker(fullSuite, suite_1[name]);\n }\n }\n return checkers;\n}\nexports.createCheckers = createCheckers;\n/**\n * Checker implements validation of objects, and also includes accessors to validate method calls.\n * Checkers should be created using `createCheckers()`.\n */\nvar Checker = /** @class */ (function () {\n // Create checkers by using `createCheckers()` function.\n function Checker(suite, ttype, _path) {\n if (_path === void 0) { _path = 'value'; }\n this.suite = suite;\n this.ttype = ttype;\n this._path = _path;\n this.props = new Map();\n if (ttype instanceof types_1.TIface) {\n for (var _i = 0, _a = ttype.props; _i < _a.length; _i++) {\n var p = _a[_i];\n this.props.set(p.name, p.ttype);\n }\n }\n this.checkerPlain = this.ttype.getChecker(suite, false);\n this.checkerStrict = this.ttype.getChecker(suite, true);\n }\n /**\n * Set the path to report in errors, instead of the default \"value\". (E.g. if the Checker is for\n * a \"person\" interface, set path to \"person\" to report e.g. \"person.name is not a string\".)\n */\n Checker.prototype.setReportedPath = function (path) {\n this._path = path;\n };\n /**\n * Check that the given value satisfies this checker's type, or throw Error.\n */\n Checker.prototype.check = function (value) { return this._doCheck(this.checkerPlain, value); };\n /**\n * A fast check for whether or not the given value satisfies this Checker's type. This returns\n * true or false, does not produce an error message, and is fast both on success and on failure.\n */\n Checker.prototype.test = function (value) {\n return this.checkerPlain(value, new util_1.NoopContext());\n };\n /**\n * Returns an error object describing the errors if the given value does not satisfy this\n * Checker's type, or null if it does.\n */\n Checker.prototype.validate = function (value) {\n return this._doValidate(this.checkerPlain, value);\n };\n /**\n * Check that the given value satisfies this checker's type strictly. This checks that objects\n * and tuples have no extra members. Note that this prevents backward compatibility, so usually\n * a plain check() is more appropriate.\n */\n Checker.prototype.strictCheck = function (value) { return this._doCheck(this.checkerStrict, value); };\n /**\n * A fast strict check for whether or not the given value satisfies this Checker's type. Returns\n * true or false, does not produce an error message, and is fast both on success and on failure.\n */\n Checker.prototype.strictTest = function (value) {\n return this.checkerStrict(value, new util_1.NoopContext());\n };\n /**\n * Returns an error object describing the errors if the given value does not satisfy this\n * Checker's type strictly, or null if it does.\n */\n Checker.prototype.strictValidate = function (value) {\n return this._doValidate(this.checkerStrict, value);\n };\n /**\n * If this checker is for an interface, returns a Checker for the type required for the given\n * property of this interface.\n */\n Checker.prototype.getProp = function (prop) {\n var ttype = this.props.get(prop);\n if (!ttype) {\n throw new Error(\"Type has no property \" + prop);\n }\n return new Checker(this.suite, ttype, this._path + \".\" + prop);\n };\n /**\n * If this checker is for an interface, returns a Checker for the argument-list required to call\n * the given method of this interface. E.g. if this Checker is for the interface:\n * interface Foo {\n * find(s: string, pos?: number): number;\n * }\n * Then methodArgs(\"find\").check(...) will succeed for [\"foo\"] and [\"foo\", 3], but not for [17].\n */\n Checker.prototype.methodArgs = function (methodName) {\n var tfunc = this._getMethod(methodName);\n return new Checker(this.suite, tfunc.paramList);\n };\n /**\n * If this checker is for an interface, returns a Checker for the return value of the given\n * method of this interface.\n */\n Checker.prototype.methodResult = function (methodName) {\n var tfunc = this._getMethod(methodName);\n return new Checker(this.suite, tfunc.result);\n };\n /**\n * If this checker is for a function, returns a Checker for its argument-list.\n */\n Checker.prototype.getArgs = function () {\n if (!(this.ttype instanceof types_1.TFunc)) {\n throw new Error(\"getArgs() applied to non-function\");\n }\n return new Checker(this.suite, this.ttype.paramList);\n };\n /**\n * If this checker is for a function, returns a Checker for its result.\n */\n Checker.prototype.getResult = function () {\n if (!(this.ttype instanceof types_1.TFunc)) {\n throw new Error(\"getResult() applied to non-function\");\n }\n return new Checker(this.suite, this.ttype.result);\n };\n /**\n * Return the type for which this is a checker.\n */\n Checker.prototype.getType = function () {\n return this.ttype;\n };\n /**\n * Actual implementation of check() and strictCheck().\n */\n Checker.prototype._doCheck = function (checkerFunc, value) {\n var noopCtx = new util_1.NoopContext();\n if (!checkerFunc(value, noopCtx)) {\n var detailCtx = new util_1.DetailContext();\n checkerFunc(value, detailCtx);\n throw detailCtx.getError(this._path);\n }\n };\n Checker.prototype._doValidate = function (checkerFunc, value) {\n var noopCtx = new util_1.NoopContext();\n if (checkerFunc(value, noopCtx)) {\n return null;\n }\n var detailCtx = new util_1.DetailContext();\n checkerFunc(value, detailCtx);\n return detailCtx.getErrorDetail(this._path);\n };\n Checker.prototype._getMethod = function (methodName) {\n var ttype = this.props.get(methodName);\n if (!ttype) {\n throw new Error(\"Type has no property \" + methodName);\n }\n if (!(ttype instanceof types_1.TFunc)) {\n throw new Error(\"Property \" + methodName + \" is not a method\");\n }\n return ttype;\n };\n return Checker;\n}());\nexports.Checker = Checker;\n","/**\n * This module was automatically generated by `ts-interface-builder`\n */\nimport * as t from \"ts-interface-checker\";\n// tslint:disable:object-literal-key-quotes\n\nexport const OAuthConfigurationIF = t.iface([], {\n \"clientId\": \"string\",\n \"resource\": \"string\",\n \"oAuthUri\": \"string\",\n \"tokenUri\": \"string\",\n \"adminClaimName\": \"string\",\n});\n\nconst exportedTypeSuite: t.ITypeSuite = {\n OAuthConfigurationIF,\n};\nexport default exportedTypeSuite;\n","import OAuthConfigurationTI from \"./OAuthConfiguration-ti\";\nimport {createCheckers} from \"ts-interface-checker\";\n\ninterface OAuthConfigurationIF {\n clientId: string;\n resource: string;\n oAuthUri: string;\n tokenUri: string;\n adminClaimName: string;\n}\n\nconst {\n OAuthConfigurationIF\n} = createCheckers(OAuthConfigurationTI);\n\nclass OAuthConfiguration implements OAuthConfigurationIF {\n clientId: string;\n resource: string;\n oAuthUri: string;\n tokenUri: string;\n adminClaimName: string;\n\n constructor(from:any, validate=true) {\n if(validate) {\n //this will throw an error (VError from ts-interface-checker) if the configuration does not validate\n OAuthConfigurationIF.check(from);\n }\n this.clientId = from.clientId;\n this.resource = from.resource;\n this.oAuthUri = from.oAuthUri;\n this.tokenUri = from.tokenUri;\n this.adminClaimName = from.adminClaimName;\n }\n\n /**\n * returns a boolean indicating whether the frontend should treat this user as an admin or not\n * @param claimData\n */\n isAdmin(claimData:any) {\n return claimData.hasOwnProperty(this.adminClaimName);\n }\n}\n\nexport type {OAuthConfigurationIF};\nexport default OAuthConfiguration;","/**\n * call out to the IdP to request a refresh of the login using the refresh token stored in the localstorage.\n * on success, the updated token is stored in the local storage and the promise resolves\n * on failure, the local storage is not touched and the promise rejects with an error string\n * if the server returns a 500 or 503/504 error then it's assumed to be transient and the request will be retried\n * after a 2s delay.\n *\n * this is NOT written as a conventional async function in order to utilise more fine-grained control of when the promise\n * is resolved; i.e., it calls itself on a timer in order to retry so we must only resolve the promise once there has been\n * a definitive success or failure of the operation which could be after multiple calls\n * @param tokenUri server uri to make the refresh request to\n * @returns a Promise\n */\nexport const refreshLogin:(tokenUri:string)=>Promise = (tokenUri) => new Promise((resolve,reject)=>{\n const refreshToken = localStorage.getItem(\"pluto:refresh-token\");\n if(!refreshToken) {\n reject(\"No refresh token\");\n }\n\n const postdata:{[index:string]:string } = {\n grant_type: \"refresh_token\",\n refresh_token: refreshToken as string\n };\n const content_elements = Object.keys(postdata).map(\n (k) => k + \"=\" + encodeURIComponent(postdata[k])\n );\n const body_content = content_elements.join(\"&\");\n\n const performRefresh = async ()=> {\n const response = await fetch(tokenUri, {\n method: \"POST\",\n body: body_content,\n headers: {\n Accept: \"application/json\",\n \"Content-Type\": \"application/x-www-form-urlencoded\",\n },\n });\n switch (response.status) {\n case 200:\n const content = await response.json();\n console.log(\"Server response: \", content);\n localStorage.setItem(\"pluto:access-token\", content.access_token);\n if (content.refresh_token) localStorage.setItem(\"pluto:refresh-token\", content.refresh_token);\n resolve();\n break;\n case 403:\n case 401:\n console.log(\"Refresh was rejected with a forbidden error\");\n reject(\"Request forbidden\");\n break;\n case 500:\n console.log(\"Refresh was rejected due to a server error\");\n window.setTimeout(() => performRefresh(), 2000); //try again in 2s\n break;\n case 503:\n case 504:\n console.log(\"Authentication server not available\");\n window.setTimeout(() => performRefresh(), 2000); //try again in 2s\n break;\n default:\n const errorbody = await response.text();\n console.log(\"Unexpected response from authentication server: \", response.status, errorbody);\n reject(\"Unexpected response\");\n break;\n }\n }\n\n performRefresh().catch(err=>reject(err.toString()));\n})","import React from \"react\";\n\ninterface CustomisingThemeContext {\n darkMode: boolean;\n changeDarkMode: (newValue:boolean)=>void;\n}\n\nconst CustomisingThemeContext = React.createContext({\n darkMode: !(localStorage.getItem(\"pluto-dark-mode\") && localStorage.getItem(\"pluto-dark-mode\")==\"false\"), changeDarkMode: ()=>{}\n});\n\nexport const CustomisingThemeContextProvider = CustomisingThemeContext.Provider;\nexport default CustomisingThemeContext;\n","import React, {useState, useEffect, useRef, useContext} from \"react\";\nimport {Button, Grid, IconButton, Tooltip, Typography} from \"@material-ui/core\";\nimport {JwtDataShape} from \"../../utils/DecodedProfile\";\nimport {CircularProgress} from \"@material-ui/core\";\nimport {Error, CheckCircle, Person, Brightness7, Brightness4} from \"@material-ui/icons\";\nimport {refreshLogin} from \"../../utils/OAuth2Helper\";\nimport {makeStyles} from \"@material-ui/core/styles\";\nimport CustomisingThemeContext from \"../Theme/CustomisingThemeContext\";\n\ninterface LoginComponentProps {\n refreshToken?: string;\n checkInterval?:number;\n loginData: JwtDataShape;\n onLoginRefreshed?: ()=>void;\n onLoginCantRefresh?: (reason:string)=>void;\n onLoginExpired: ()=>void;\n onLoggedOut?: ()=>void;\n overrideRefreshLogin?: (tokenUri:string)=>Promise; //only used for testing\n tokenUri: string;\n}\n\nconst useStyles = makeStyles({\n inlineIcon: {\n padding: 0,\n margin: \"auto\",\n display: \"inline-block\",\n marginRight: \"0.2em\",\n maxWidth: \"16px\",\n maxHeight: \"16px\",\n },\n textOnGrey: {\n color: \"black\"\n },\n themeSwitcher: {\n height: \"36px\",\n width: \"36px\",\n padding: \"6px\"\n }\n});\n\nconst LoginComponent:React.FC = (props) => {\n const [refreshInProgress, setRefreshInProgress] = useState(false);\n const [refreshFailed, setRefreshFailed] = useState(false);\n const [refreshed, setRefreshed] = useState(false);\n const [loginExpiryCount, setLoginExpiryCount] = useState(\"\");\n\n let loginDataRef = useRef(props.loginData);\n const tokenUriRef = useRef(props.tokenUri);\n const overrideRefreshLoginRef = useRef(props.overrideRefreshLogin);\n\n const classes = useStyles();\n\n const themeContext = useContext(CustomisingThemeContext);\n\n useEffect(()=>{\n const intervalTimerId = window.setInterval(checkExpiryHandler, props.checkInterval ?? 60000);\n\n return (()=>{\n console.log(\"removing checkExpiryHandler\")\n window.clearInterval(intervalTimerId);\n })\n }, []);\n\n useEffect(()=>{\n console.log(\"refreshFailed was toggled to \", refreshFailed);\n if(refreshFailed) {\n console.log(\"setting countdown handler\");\n const intervalTimerId = window.setInterval(updateCountdownHandler, 1000);\n return (()=>{\n console.log(\"cleared countdown handler\");\n window.clearInterval(intervalTimerId);\n })\n }\n }, [refreshFailed]);\n\n useEffect(()=>{\n loginDataRef.current = props.loginData;\n }, [props.loginData]);\n\n /**\n * called periodically every second once a refresh has failed to alert the user how long they have left\n */\n const updateCountdownHandler = () => {\n const nowTime = new Date().getTime() / 1000; //assume time is in seconds\n const expiry = loginDataRef.current.exp;\n const timeToGo = expiry - nowTime;\n\n if(timeToGo>1) {\n setLoginExpiryCount(`expires in ${Math.ceil(timeToGo)}s`);\n } else {\n if(props.onLoginExpired) props.onLoginExpired();\n setLoginExpiryCount(\"has expired\");\n }\n }\n\n /**\n * lightweight function that is called every minute to verify the state of the token\n * it returns a promise that resolves when the component state has been updated. In normal usage this\n * is ignored but it is used in testing to ensure that the component state is only checked after it has been set.\n */\n const checkExpiryHandler = () => {\n if (loginDataRef.current) {\n const nowTime = new Date().getTime() / 1000; //assume time is in seconds\n //we know that it is not null due to above check\n const expiry = loginDataRef.current.exp;\n const timeToGo = expiry - nowTime;\n\n if (timeToGo <= 120) {\n console.log(\"less than 2mins to expiry, attempting refresh...\");\n setRefreshInProgress(true);\n\n let refreshedPromise;\n\n if(overrideRefreshLoginRef.current){\n refreshedPromise = overrideRefreshLoginRef.current(tokenUriRef.current);\n } else {\n refreshedPromise = refreshLogin(tokenUriRef.current);\n }\n\n refreshedPromise.then(()=>{\n console.log(\"Login refreshed\");\n setRefreshInProgress(false);\n setRefreshFailed(false);\n setRefreshed(true);\n\n if(props.onLoginRefreshed) props.onLoginRefreshed();\n window.setTimeout(()=>setRefreshed(false), 5000); //show success message for 5s\n }).catch(errString=>{\n if(props.onLoginCantRefresh) props.onLoginCantRefresh(errString);\n setRefreshFailed(true);\n setRefreshInProgress(false);\n updateCountdownHandler();\n return;\n })\n }\n } else {\n console.log(\"no login data present for expiry check\");\n }\n };\n\n const toggleThemeMode = ()=>themeContext.changeDarkMode(!themeContext.darkMode);\n\n return (\n \n \n \n \n You are logged in as\n \n {props.loginData.preferred_username ?? props.loginData.username}\n \n \n \n \n {\n themeContext.darkMode ? : \n }\n \n \n {\n refreshInProgress ?\n \n \n \n Refreshing your login...\n \n \n : null\n }\n {\n refreshFailed ?\n \n \n \n \n \n Login {loginExpiryCount}\n \n \n \n \n : null\n }\n {\n refreshed ?\n \n \n \n Token refreshed\n \n \n : null\n }\n\n \n {\n if (props.onLoggedOut) {\n props.onLoggedOut();\n return;\n }\n\n window.location.assign(\"/logout\");\n }}\n >\n Logout\n \n \n \n )\n}\n\nexport default LoginComponent;\n","import React, {useState, useEffect, useContext} from \"react\";\nimport { Link } from \"react-router-dom\";\nimport \"./AppSwitcher.css\";\nimport { Button } from \"@material-ui/core\";\nimport { loadInSigningKey, validateAndDecode } from \"../../utils/JwtHelpers\";\nimport { JwtData, JwtDataShape } from \"../../utils/DecodedProfile\";\nimport {\n hrefIsTheSameDeploymentRootPath,\n getDeploymentRootPathLink,\n} from \"../../utils/AppLinks\";\nimport { MenuButton } from \"../MenuButton/MenuButton\";\nimport OAuthConfiguration from \"../../utils/OAuthConfiguration\";\nimport { VError } from \"ts-interface-checker\";\nimport LoginComponent from \"./LoginComponent\";\n\ninterface AppSwitcherProps {\n onLoggedIn?: () => void;\n onLoggedOut?: () => void;\n onLoginValid?: (valid: boolean, jwtDataShape?: JwtDataShape) => void;\n}\n\nexport const AppSwitcher: React.FC = (props) => {\n const [isLoggedIn, setIsLoggedIn] = useState(false);\n const [isAdmin, setIsAdmin] = useState(false);\n const [loginData, setLoginData] = useState(null);\n const [expired, setExpired] = useState(false);\n\n // config\n const [menuSettings, setMenuSettings] = useState(\n []\n );\n const [clientId, setClientId] = useState(\"\");\n const [resource, setResource] = useState(\"\");\n const [oAuthUri, setOAuthUri] = useState(\"\");\n const [adminClaimName, setAdminClaimName] = useState(\"\");\n const [tokenUri, setTokenUri] = useState(\"\");\n\n\n const loadConfig: () => Promise = async () => {\n try {\n const response = await fetch(\"/meta/menu-config/menu.json\");\n\n if (response.status === 200) {\n const data = await response.json();\n\n setMenuSettings(data);\n }\n } catch (error) {\n console.error(error);\n }\n\n const response = await fetch(\"/meta/oauth/config.json\");\n if (response.status === 200) {\n const data = await response.json();\n const config = new OAuthConfiguration(data); //validates the configuration and throws a VError if it fails\n setClientId(config.clientId);\n setResource(config.resource);\n setOAuthUri(config.oAuthUri);\n setTokenUri(config.tokenUri);\n setAdminClaimName(config.adminClaimName);\n return config;\n } else {\n throw `Server returned ${response.status}`;\n }\n };\n\n const validateToken: (config: OAuthConfiguration) => Promise = async (\n config: OAuthConfiguration\n ) => {\n const token = window.localStorage.getItem(\"pluto:access-token\");\n if (!token) return;\n\n try {\n const signingKey = await loadInSigningKey();\n\n const decodedData = await validateAndDecode(token, signingKey);\n if(decodedData) {\n const loginData = JwtData(decodedData);\n setLoginData(loginData);\n\n // Login valid callback if provided\n if (props.onLoginValid) {\n props.onLoginValid(true, loginData);\n }\n\n setIsLoggedIn(true);\n\n setIsAdmin(config.isAdmin(loginData));\n } else {\n throw \"Got no user profile\"\n }\n } catch (error) {\n // Login valid callback if provided\n if (props.onLoginValid) {\n props.onLoginValid(false);\n }\n\n setIsLoggedIn(false);\n setIsAdmin(false);\n\n if (error.hasOwnProperty(\"name\") && error.name === \"TokenExpiredError\") {\n console.error(\"Token has already expired\");\n setExpired(true);\n } else {\n console.error(\"existing login token was not valid: \", error);\n }\n }\n };\n\n /**\n * load in the oauth config and validate the loaded in token\n */\n const refresh = async () => {\n try {\n const config = await loadConfig();\n await validateToken(config);\n } catch(err) {\n if (err instanceof VError) {\n console.log(\"OAuth configuration was not valid: \", err);\n } else {\n console.log(\"Could not load oauth configuration: \", err);\n }\n }\n }\n\n useEffect(() => {\n refresh();\n }, []);\n\n const makeLoginUrl = () => {\n const currentUri = new URL(window.location.href);\n const redirectUri =\n currentUri.protocol + \"//\" + currentUri.host + \"/oauth2/callback\";\n\n const args: Record = {\n response_type: \"code\",\n client_id: clientId,\n resource: resource,\n redirect_uri: redirectUri,\n state: currentUri.pathname,\n };\n\n const encoded = Object.entries(args).map(\n ([k, v]) => `${k}=${encodeURIComponent(v)}`\n );\n\n return oAuthUri + \"?\" + encoded.join(\"&\");\n };\n\n const getLink = (\n text: string,\n href: string,\n adminOnly: boolean | undefined,\n index: number\n ) => (\n \n {hrefIsTheSameDeploymentRootPath(href) ? (\n {text}\n ) : (\n {text}\n )}\n \n );\n\n return (\n <>\n {isLoggedIn && loginData ? (\n
\n
    \n {(\n menuSettings || []\n ).map(({ type, text, href, adminOnly, content }, index) =>\n type === \"link\" ? (\n getLink(text, href, adminOnly, index)\n ) : (\n \n )\n )}\n
\n {\n refresh();\n }}\n onLoginExpired={()=>{\n setExpired(true);\n setIsLoggedIn(false);\n }}\n tokenUri={tokenUri}\n />\n
\n ) : (\n
\n \n {expired\n ? \"Your login has expired\"\n : \"You are not currently logged in\"}\n {\n if (props.onLoggedIn) {\n props.onLoggedIn();\n return;\n }\n\n // Perform login\n window.location.assign(makeLoginUrl());\n }}\n >\n Login {expired ? \"again\" : \"\"}\n \n \n
\n )}\n \n );\n};\n","import React from \"react\";\nimport GuardianLogo from \"../../static/guardian_white.svg\";\nimport \"./Header.css\";\n\nexport const Header = () => {\n return (\n <>\n
\n
\n \n \n \n
\n
\n \n );\n};\n","import axios, { AxiosResponse } from \"axios\";\nimport qs from \"query-string\";\n\ninterface RefreshTokenResponse {\n access_token: string;\n refresh_token: string;\n}\n\ninterface PlutoConfig {\n tokenUri: string;\n clientId: string;\n}\n\n/**\n * Refreshes a token e.g. an expired token and returns an active token.\n */\nexport const refreshToken = async (\n plutoConfig: PlutoConfig\n): Promise => {\n const { tokenUri, clientId } = plutoConfig;\n const postdata: { [key: string]: string } = {\n grant_type: \"refresh_token\",\n client_id: clientId,\n refresh_token: window.localStorage.getItem(\"pluto:refresh-token\") as string,\n };\n\n try {\n const response = await axios.post(tokenUri, qs.stringify(postdata), {\n headers: {\n Accept: \"application/json\",\n \"Content-Type\": \"application/x-www-form-urlencoded\",\n },\n });\n\n if (response.status === 200) {\n const data = await response.data;\n\n return data;\n }\n\n throw new Error(`Could not fetch refresh token`);\n } catch (error) {\n return Promise.reject(error);\n }\n};\n\ninterface FailedQueue {\n resolve: (value?: unknown) => void;\n reject: (reason?: any) => void;\n}\n\nlet isRefreshing = false;\nlet failedQueue: FailedQueue[] = [];\n\nconst processQueue = (error: any, token: string | null) => {\n failedQueue.forEach((prom) => {\n if (error) {\n prom.reject(error);\n } else {\n prom.resolve(token);\n }\n });\n\n failedQueue = [];\n};\n\n/**\n * Retries the API call with a refresh token on 401 Unauthorized.\n */\nexport const handleUnauthorized = async (\n plutoConfig: PlutoConfig,\n error: any,\n failureCallback: () => void\n): Promise => {\n const originalRequest = error.config;\n\n if (!originalRequest._retry && error.response.status === 401) {\n // Handle several incoming http requests that fails on 401 Unauthorized\n // Therefore create a queue of the failing requests\n // and resolve them when refresh token is fetched\n // or reject them if failed to fetch the request token.\n if (isRefreshing) {\n return new Promise((resolve, reject) => {\n failedQueue.push({ resolve, reject });\n })\n .then((token) => {\n originalRequest.headers.Authorization = `Bearer ${token}`;\n return axios(originalRequest);\n })\n .catch((error) => {\n return Promise.reject(error);\n });\n }\n\n originalRequest._retry = true;\n isRefreshing = true;\n\n try {\n const data = await refreshToken(plutoConfig);\n\n window.localStorage.setItem(\"pluto:access-token\", data.access_token);\n window.localStorage.setItem(\"pluto:refresh-token\", data.refresh_token);\n\n originalRequest.headers.Authorization = `Bearer ${data.access_token}`;\n processQueue(null, data.access_token);\n return axios(originalRequest);\n } catch (error) {\n if (failureCallback) {\n failureCallback();\n }\n\n processQueue(error, null);\n return Promise.reject(error);\n } finally {\n isRefreshing = false;\n }\n }\n};\n","import React from \"react\";\nimport axios from \"axios\";\nimport \"./Breadcrumb.css\";\nimport IconCommission from \"../../static/c.svg\";\nimport IconProject from \"../../static/p.svg\";\nimport IconMaster from \"../../static/m.svg\";\nimport {Link} from \"@material-ui/core\";\nimport { ChevronRightRounded} from \"@material-ui/icons\";\n\n/**\n * only one of these needs to be set. The others will be inferred from the data about it.\n * if masterId is set, the other two are ignored\n * if masterId is not set and projectId is set, then commissionId is ignored\n * if neither masterId nor projectId is set, then commisisonId is used\n */\ninterface BreadcrumbProps {\n masterId?: number;\n projectId?: number;\n commissionId?: number;\n plutoCoreBaseUri?: string;\n}\n\ninterface BreadcrumbState {\n hasError: boolean;\n loading: boolean;\n projectName: string;\n commissionName: string;\n masterName: string;\n commissionId?: number;\n projectId?: number;\n}\n\ninterface UsefulServerData {\n projectId?: number;\n commissionId?: number;\n title: string;\n workingGroupId?: number;\n}\n\nclass Breadcrumb extends React.Component {\n constructor(props: BreadcrumbProps) {\n super(props);\n\n this.state = {\n hasError: false,\n loading: false,\n projectName: \"\",\n commissionName: \"\",\n masterName: \"\",\n commissionId: undefined,\n projectId: undefined\n };\n }\n\n /**\n * implement an error boundary so we can't break the rest of the UI\n * @param error\n */\n static getDerivedStateFromError(error: any) {\n return { loading: false, hasError: true };\n }\n\n componentDidCatch(error: Error, errorInfo: React.ErrorInfo) {\n console.error(\n \"An uncaught error happened in the Breadcrumb component \",\n error,\n errorInfo\n );\n }\n\n /**\n * return a promise that completes when state change is complete\n */\n setStatePromise(newState: any): Promise {\n return new Promise((resolve, reject) =>\n this.setState(newState, () => resolve())\n );\n }\n\n /**\n * generic function to load in data from either project or commission endpoints in pluto-core\n * @param url url to load\n */\n async plutoCoreLoad(url: string): Promise {\n try {\n const response = await axios.get(url);\n if (response.data && response.data.result && response.data.result.title) {\n return {\n title: response.data.result.title,\n workingGroupId: response.data.result.workingGroupId,\n commissionId: response.data.result.commissionId ?? response.data.id,\n };\n } else {\n return {\n title: \"(none)\",\n };\n }\n } catch (err) {\n if (err.response) {\n switch (err.response.status) {\n case 404:\n console.info(\"No data existed for the url \", url);\n return {\n title: \"(none)\",\n };\n case 503:\n case 504:\n console.info(\"pluto-core is not responding, retrying...\");\n\n return new Promise((resolve, reject) => {\n window.setTimeout(() => {\n this.plutoCoreLoad(url)\n .then((result) => resolve(result))\n .catch((err) => reject(err));\n }, 2000);\n });\n default:\n break;\n }\n }\n throw \"Could not load pluto-core data\";\n console.error(err);\n }\n return {\n title: \"(none)\",\n }; //we shouldn't get here but the compiler wants a return\n }\n\n async loadCommissionData(): Promise {\n await this.setStatePromise({ loading: true });\n //I could do the whole type-registration thing and validate it for the data, but really we are only interested\n //in a field or two so I might as well do it manually.\n const url = `${this.props.plutoCoreBaseUri ?? \"/pluto-core\"}/api/pluto/commission/${this.props.commissionId}`;\n\n try {\n const serverContent = await this.plutoCoreLoad(url);\n return this.setStatePromise({\n loading: false,\n commissionName: serverContent.title,\n });\n } catch (err) {\n return this.setStatePromise({ loading: false, hasError: true });\n }\n }\n\n async loadProjectData(): Promise {\n await this.setStatePromise({ loading: true });\n const url = `${this.props.plutoCoreBaseUri ?? \"/pluto-core\"}/api/project/${this.props.projectId}`;\n\n try {\n const serverContentProject = await this.plutoCoreLoad(url);\n if (serverContentProject.commissionId) {\n const commissionUrl = `${this.props.plutoCoreBaseUri ?? \"/pluto-core\"}/api/pluto/commission/${serverContentProject.commissionId}`;\n const serverContentComm = await this.plutoCoreLoad(commissionUrl);\n return this.setStatePromise({\n loading: false,\n commissionName: serverContentComm.title,\n commissionId: serverContentProject.commissionId,\n projectName: serverContentProject.title,\n });\n } else {\n return this.setStatePromise({\n loading: false,\n projectName: serverContentProject.title,\n });\n }\n } catch (err) {\n console.error(\"Could not load project data: \", err);\n return this.setStatePromise({ loading: false, hasError: true });\n }\n }\n\n async loadMasterData(): Promise {\n await this.setStatePromise({ loading: true });\n const url = `/deliverables/api/asset/${this.props.masterId}`;\n\n console.log(\"loadMasterData not implemented yet\");\n return this.setStatePromise({ loading: false, hasError: true });\n }\n\n /**\n * master load function that hands off to specific ones\n */\n async loadData() {\n if (this.props.masterId) {\n return this.loadMasterData();\n } else if (this.props.projectId) {\n return this.loadProjectData();\n } else if (this.props.commissionId) {\n return this.loadCommissionData();\n } else {\n console.error(\n \"Breadcrumb component has no master, project nor commission id.\"\n );\n }\n }\n\n componentDidUpdate(prevProps: Readonly, prevState: Readonly, snapshot?: any) {\n if(prevProps!=this.props) this.loadData();\n }\n\n componentDidMount() {\n this.loadData();\n }\n\n render() {\n if (this.state.hasError) {\n return (\n
\n

Could not load location data

\n
\n );\n } else {\n return (\n
\n {this.state.commissionName == \"\" ? null : (\n
\n \n {this.state.commissionName}\n {\n this.state.projectName==\"\" ? null : \n }\n
\n )}\n {this.state.projectName == \"\" ? null : (\n
\n \n {this.state.projectName}\n {\n this.state.masterName==\"\" ? null : \n }\n
\n )}\n {this.state.masterName == \"\" ? null : (\n
\n \n

{this.state.masterName}

\n
\n )}\n
\n );\n }\n }\n}\n\nexport { Breadcrumb };\n","import React, { useState } from \"react\";\nimport { Snackbar } from \"@material-ui/core\";\nimport MuiAlert, { AlertProps, Color } from \"@material-ui/lab/Alert\";\n\n/**\n * these values correspond to the material-ui palette labels, so are safe to use below with\n * `severity={SystemNotificationKind.toString() as Color}`\n */\nexport enum SystemNotifcationKind {\n Success = \"success\",\n Error = \"error\",\n Info = \"info\",\n Warning = \"warning\",\n}\n\ntype OpenFunc = (kind: SystemNotifcationKind, message: string) => void;\n\nlet openSystemNotification: OpenFunc; //allows us to access the `openSystemNotification` function from outside the component definition\n\nfunction Alert(props: AlertProps) {\n return ;\n}\n\nconst SystemNotification: React.FC<{}> & { open: OpenFunc } = () => {\n const autoHideDuration = 4000;\n\n const [open, setOpen] = useState(false);\n const [message, setMessage] = useState(\"\");\n const [kind, setKind] = useState(\n SystemNotifcationKind.Info\n );\n\n const close = () => {\n setOpen(false);\n };\n\n openSystemNotification = (kind: SystemNotifcationKind, message: string) => {\n setKind(kind);\n setMessage(message);\n setOpen(true);\n };\n\n return (\n \n {message}\n \n );\n};\n\nSystemNotification.open = (kind: SystemNotifcationKind, message: string) =>\n openSystemNotification(kind, message);\n\nexport { SystemNotification };\n","import React, { useEffect, useState } from \"react\";\nimport { red } from \"@material-ui/core/colors\";\n\ninterface OAuthContextData {\n clientId: string;\n resource: string;\n oAuthUri: string;\n tokenUri: string;\n redirectUri: string;\n}\n\nconst OAuthContext = React.createContext(\n undefined\n);\n\nconst OAuthContextProvider: React.FC<{\n children: React.ReactFragment;\n onError?: (desc: string) => void;\n}> = (props) => {\n const [clientId, setClientId] = useState(\"\");\n const [resource, setResource] = useState(\"\");\n const [oAuthUri, setOAuthUri] = useState(\"\");\n const [tokenUri, setTokenUri] = useState(\"\");\n const [haveData, setHaveData] = useState(false);\n\n const currentUri = new URL(window.location.href);\n const redirectUrl =\n currentUri.protocol + \"//\" + currentUri.host + \"/oauth2/callback\";\n\n const loadOauthData = async () => {\n const response = await fetch(\"/meta/oauth/config.json\");\n switch (response.status) {\n case 200:\n const content = await response.json();\n\n setClientId(content.clientId);\n setResource(content.resource);\n setOAuthUri(content.oAuthUri);\n setTokenUri(content.tokenUri);\n setHaveData(true);\n break;\n case 404:\n await response.text(); //consume body and discard it\n if (props.onError)\n props.onError(\n \"Metadata not found on server, please contact administrator\"\n ); //temporary until we have global snackbar\n break;\n default:\n await response.text(); //consume body and discard it\n if (props.onError)\n props.onError(\n `Server returned a ${response.status} error trying to access meetadata`\n );\n break;\n }\n };\n\n useEffect(() => {\n loadOauthData();\n }, []);\n\n return (\n \n {props.children}\n \n );\n};\n\nfunction makeLoginUrl(oAuthContext: OAuthContextData) {\n const args = {\n response_type: \"code\",\n client_id: oAuthContext.clientId,\n resource: oAuthContext.resource,\n redirect_uri: oAuthContext.redirectUri,\n state: \"/\",\n };\n\n const encoded = Object.entries(args).map(\n ([k, v]) => `${k}=${encodeURIComponent(v)}`\n );\n\n return oAuthContext.oAuthUri + \"?\" + encoded.join(\"&\");\n}\n\nexport type { OAuthContextData };\n\nexport {OAuthContext, OAuthContextProvider, makeLoginUrl};\n","import React from \"react\";\nimport { JwtDataShape } from \"../../utils/DecodedProfile\";\n\ninterface UserContext {\n profile?: JwtDataShape;\n updateProfile: (newValue?: JwtDataShape) => void;\n}\n\nconst UserContext = React.createContext({\n profile: undefined,\n updateProfile: (newValue) => {},\n});\n\nexport const UserContextProvider = UserContext.Provider;\nexport { UserContext };\n","import { createTheme } from \"@material-ui/core/styles\";\nimport {PaletteOptions} from \"@material-ui/core/styles/createPalette\";\n\nconst defaultPlutoTheme = (dark:boolean)=>{\n const palette = dark ? {\n type: \"dark\",\n background: {\n paper: \"#424242EA\",\n }\n } as PaletteOptions: {\n type: \"light\",\n background: {\n paper: \"#FBFBFBEA\",\n }\n } as PaletteOptions\n\n return createTheme({\n typography: {\n fontFamily:\n '\"Guardian Text Sans Web\",\"Helvetica Neue\",Helvetica,Arial,\"Lucida Grande\",sans-serif',\n },\n palette: palette,\n });\n}\n\nexport {defaultPlutoTheme};\n","import React, {useEffect, useState} from \"react\";\nimport {defaultPlutoTheme} from \"./DefaultPlutoTheme\";\nimport {ThemeProvider} from \"@material-ui/core\";\nimport CustomisingThemeContext from \"./CustomisingThemeContext\";\n\ninterface PlutoThemeProviderProps {\n userSettingsUrl?: string;\n userSettingsKey?: string;\n}\n\nconst PlutoThemeProvider:React.FC = (props) => {\n const [darkMode, setDarkmode] = useState(!(localStorage.getItem(\"pluto-dark-mode\") && localStorage.getItem(\"pluto-dark-mode\")==\"false\"));\n\n const updateDarkMode = (newValue:boolean)=>{\n localStorage.setItem(\"pluto-dark-mode\", newValue ? \"true\" : \"false\");\n setDarkmode(newValue);\n }\n\n return \n \n {\n props.children\n }\n \n \n}\n\nexport {PlutoThemeProvider};"],"names":["this","util_1","types_1","t.iface","OAuthConfigurationIF","createCheckers","OAuthConfigurationTI","Error","VError","GuardianLogo","IconCommission","Link","IconProject","IconMaster"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"index.es.js","sources":["../node_modules/tslib/tslib.es6.js","../node_modules/style-inject/dist/style-inject.es.js","../src/utils/DecodedProfile.ts","../src/utils/JwtHelpers.ts","../src/utils/AppLinks.ts","../src/components/MenuButton/MenuButton.tsx","../node_modules/ts-interface-checker/dist/util.js","../node_modules/ts-interface-checker/dist/types.js","../node_modules/ts-interface-checker/dist/index.js","../src/utils/OAuthConfiguration-ti.ts","../src/utils/OAuthConfiguration.ts","../src/utils/OAuth2Helper.ts","../src/components/Theme/CustomisingThemeContext.tsx","../src/components/AppSwitcher/LoginComponent.tsx","../src/components/AppSwitcher/AppSwitcher.tsx","../src/components/Header/Header.tsx","../src/utils/Interceptor.ts","../src/components/Breadcrumb/Breadcrumb.tsx","../src/components/SystemNotification/SystemNotification.tsx","../src/components/Context/OAuthContext.tsx","../src/components/Context/UserContext.tsx","../src/components/Theme/DefaultPlutoTheme.ts","../src/components/Theme/PlutoThemeProvider.tsx"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","import {fromUnixTime,addMinutes} from 'date-fns';\n\ninterface JwtDataShape {\n aud: string;\n iss: string;\n iat: number;\n iat_moment?: Date;\n exp: number;\n exp_moment?: Date;\n sub?: string;\n email?: string;\n first_name?: string;\n given_name?: string;\n family_name?: string;\n username?: string;\n preferred_username?: string;\n location?: string;\n job_title?: string;\n authmethod?: string;\n auth_time?: string;\n ver?: string;\n appid?: string;\n}\n\nfunction utcTime(from: number) {\n //see https://stackoverflow.com/a/61469549. `fromUnixTime` gives us a local time, but we want UTC.\n const date = fromUnixTime(from);\n return addMinutes(date, date.getTimezoneOffset());\n}\n\nfunction JwtData(jwtData: object) {\n return new Proxy(jwtData, {\n get(target, prop) {\n switch (prop) {\n case \"iat_moment\":\n return utcTime(target.iat);\n case \"exp_moment\":\n return utcTime(target.exp);\n case \"username\":\n return target.preferred_username ?? target.username;\n case \"first_name\":\n return target.first_name ?? target.given_name;\n default:\n return (target)[prop] ?? null;\n }\n },\n });\n}\n\nexport type { JwtDataShape };\nexport { JwtData };\n","import jwt, {JwtPayload} from \"jsonwebtoken\";\nimport {JwtData, JwtDataShape} from \"./DecodedProfile\";\n\n/**\n * perform the validation of the token via jsonwebtoken library.\n * if validation fails then the returned promise is rejected\n * if validation succeeds, then the promise only completes once the decoded content has been set into the state.\n * @returns {Promise} Decoded JWT content or rejects with an error\n */\nfunction verifyJwt(token: string, signingKey: string, refreshToken?: string) {\n return new Promise((resolve, reject) => {\n jwt.verify(token, signingKey, (err, decoded) => {\n if (err) {\n console.log(\"token: \", token);\n console.log(\"signingKey: \", signingKey);\n console.error(\"could not verify JWT: \", err);\n reject(err);\n }\n\n window.localStorage.setItem(\"pluto:access-token\", token); //it validates so save the token\n if (refreshToken)\n window.localStorage.setItem(\"pluto:refresh-token\", refreshToken);\n resolve(decoded);\n });\n });\n}\n\n/**\n * perform the validation of the token via jsonwebtoken library.\n * if validation fails then the returned promise is rejected\n * if validation succeeds, then the promise only completes once the decoded content has been set into the state.\n * @returns {Promise} Decoded JWT content or rejects with an error\n */\nfunction validateAndDecode(token:string, signingKey:string, refreshToken?:string):Promise {\n return new Promise((resolve, reject) => {\n jwt.verify(token, signingKey, (err, decoded) => {\n if (err) {\n console.log(\"token: \", token);\n console.log(\"signingKey: \", signingKey);\n console.error(\"could not verify JWT: \", err);\n reject(err);\n }\n\n window.localStorage.setItem(\"pluto:access-token\", token); //it validates so save the token\n if (refreshToken)\n window.localStorage.setItem(\"pluto:refresh-token\", refreshToken);\n resolve(decoded);\n });\n });\n}\n\n/**\n * gets the signing key from the server\n * @returns {Promise} Raw content of the signing key in PEM format\n */\nasync function loadInSigningKey() {\n const result = await fetch(\"/meta/oauth/publickey.pem\");\n switch (result.status) {\n case 200:\n return result.text();\n default:\n console.error(\n \"could not retrieve signing key, server gave us \",\n result.status\n );\n throw \"Could not retrieve signing key\";\n }\n}\n\n/**\n * returns the raw JWT for passing to backend services\n * @returns {string} the JWT, or null if it is not set.\n */\nfunction getRawToken() {\n return window.localStorage.getItem(\"pluto:access-token\");\n}\n\n/**\n * helper function that validates and decodes into a user profile a token already existing in the localstorage\n */\nasync function verifyExistingLogin(): Promise {\n const token = getRawToken();\n if (token) {\n const signingKey = await loadInSigningKey();\n const jwtPayload = await verifyJwt(token, signingKey);\n return jwtPayload ? JwtData(jwtPayload) : undefined;\n }\n}\n\n\n\nexport { validateAndDecode, loadInSigningKey, getRawToken, verifyJwt, verifyExistingLogin };\n","export const hrefIsTheSameDeploymentRootPath = (href: string): boolean => {\n let deployment = \"\";\n try {\n deployment = deploymentRootPath;\n } catch {\n deployment = \"\";\n }\n\n if (!deployment) {\n return false;\n }\n\n return href !== \"/\" && href.includes(deployment);\n};\n\nexport const getDeploymentRootPathLink = (href: string): string => {\n const link = href.split(deploymentRootPath)[1];\n\n return link.startsWith(\"/\") ? link : `/${link}`;\n};\n","import React, { useState } from \"react\";\nimport { Link } from \"react-router-dom\";\nimport ArrowDropDownIcon from \"@material-ui/icons/ArrowDropDown\";\nimport { Menu, MenuItem } from \"@material-ui/core\";\nimport {\n hrefIsTheSameDeploymentRootPath,\n getDeploymentRootPathLink,\n} from \"../../utils/AppLinks\";\nimport \"./MenuButton.css\";\n\ninterface MenuButtonProps {\n isAdmin: boolean;\n index: number;\n text: string;\n adminOnly: boolean | undefined;\n content: BaseMenuSettings[] | undefined;\n}\n\nexport const MenuButton: React.FC = (props) => {\n const { index, isAdmin, text, adminOnly, content } = props;\n const [anchorEl, setAnchorEl] = useState(null);\n\n const openSubmenu = (event: React.MouseEvent) => {\n setAnchorEl(event.currentTarget);\n };\n\n const closeMenu = () => {\n setAnchorEl(null);\n };\n\n return (\n \n \n {text}\n \n \n \n {(content || []).map(({ type, text, href, adminOnly }, index) => {\n if (type === \"submenu\") {\n console.error(\n \"You have provided a submenu inside a submenu, nested submenus are not supported!\"\n );\n return;\n }\n\n if (hrefIsTheSameDeploymentRootPath(href)) {\n return (\n {\n closeMenu();\n }}\n >\n {text}\n \n );\n }\n\n return (\n {\n closeMenu();\n window.location.assign(href);\n }}\n >\n {text}\n \n );\n })}\n \n \n );\n};\n","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DetailContext = exports.NoopContext = exports.VError = void 0;\n/**\n * Error thrown by validation. Besides an informative message, it includes the path to the\n * property which triggered the failure.\n */\nvar VError = /** @class */ (function (_super) {\n __extends(VError, _super);\n function VError(path, message) {\n var _this = _super.call(this, message) || this;\n _this.path = path;\n // See https://github.com/Microsoft/TypeScript/wiki/Breaking-Changes#extending-built-ins-like-error-array-and-map-may-no-longer-work for info about this workaround.\n Object.setPrototypeOf(_this, VError.prototype);\n return _this;\n }\n return VError;\n}(Error));\nexports.VError = VError;\n/**\n * Fast implementation of IContext used for first-pass validation. If that fails, we can validate\n * using DetailContext to collect error messages. That's faster for the common case when messages\n * normally pass validation.\n */\nvar NoopContext = /** @class */ (function () {\n function NoopContext() {\n }\n NoopContext.prototype.fail = function (relPath, message, score) {\n return false;\n };\n NoopContext.prototype.unionResolver = function () { return this; };\n NoopContext.prototype.createContext = function () { return this; };\n NoopContext.prototype.resolveUnion = function (ur) { };\n return NoopContext;\n}());\nexports.NoopContext = NoopContext;\n/**\n * Complete implementation of IContext that collects meaningfull errors.\n */\nvar DetailContext = /** @class */ (function () {\n function DetailContext() {\n // Stack of property names and associated messages for reporting helpful error messages.\n this._propNames = [\"\"];\n this._messages = [null];\n // Score is used to choose the best union member whose DetailContext to use for reporting.\n // Higher score means better match (or rather less severe mismatch).\n this._score = 0;\n }\n DetailContext.prototype.fail = function (relPath, message, score) {\n this._propNames.push(relPath);\n this._messages.push(message);\n this._score += score;\n return false;\n };\n DetailContext.prototype.unionResolver = function () {\n return new DetailUnionResolver();\n };\n DetailContext.prototype.resolveUnion = function (unionResolver) {\n var _a, _b;\n var u = unionResolver;\n var best = null;\n for (var _i = 0, _c = u.contexts; _i < _c.length; _i++) {\n var ctx = _c[_i];\n if (!best || ctx._score >= best._score) {\n best = ctx;\n }\n }\n if (best && best._score > 0) {\n (_a = this._propNames).push.apply(_a, best._propNames);\n (_b = this._messages).push.apply(_b, best._messages);\n }\n };\n DetailContext.prototype.getError = function (path) {\n var msgParts = [];\n for (var i = this._propNames.length - 1; i >= 0; i--) {\n var p = this._propNames[i];\n path += (typeof p === \"number\") ? \"[\" + p + \"]\" : (p ? \".\" + p : \"\");\n var m = this._messages[i];\n if (m) {\n msgParts.push(path + \" \" + m);\n }\n }\n return new VError(path, msgParts.join(\"; \"));\n };\n DetailContext.prototype.getErrorDetail = function (path) {\n var details = [];\n for (var i = this._propNames.length - 1; i >= 0; i--) {\n var p = this._propNames[i];\n path += (typeof p === \"number\") ? \"[\" + p + \"]\" : (p ? \".\" + p : \"\");\n var message = this._messages[i];\n if (message) {\n details.push({ path: path, message: message });\n }\n }\n var detail = null;\n for (var i = details.length - 1; i >= 0; i--) {\n if (detail) {\n details[i].nested = [detail];\n }\n detail = details[i];\n }\n return detail;\n };\n return DetailContext;\n}());\nexports.DetailContext = DetailContext;\nvar DetailUnionResolver = /** @class */ (function () {\n function DetailUnionResolver() {\n this.contexts = [];\n }\n DetailUnionResolver.prototype.createContext = function () {\n var ctx = new DetailContext();\n this.contexts.push(ctx);\n return ctx;\n };\n return DetailUnionResolver;\n}());\n","\"use strict\";\n/**\n * This module defines nodes used to define types and validations for objects and interfaces.\n */\n// tslint:disable:no-shadowed-variable prefer-for-of\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.basicTypes = exports.BasicType = exports.TParamList = exports.TParam = exports.param = exports.TFunc = exports.func = exports.TProp = exports.TOptional = exports.opt = exports.TIface = exports.iface = exports.TEnumLiteral = exports.enumlit = exports.TEnumType = exports.enumtype = exports.TIntersection = exports.intersection = exports.TUnion = exports.union = exports.TTuple = exports.tuple = exports.TArray = exports.array = exports.TLiteral = exports.lit = exports.TName = exports.name = exports.TType = void 0;\nvar util_1 = require(\"./util\");\n/** Node that represents a type. */\nvar TType = /** @class */ (function () {\n function TType() {\n }\n return TType;\n}());\nexports.TType = TType;\n/** Parses a type spec into a TType node. */\nfunction parseSpec(typeSpec) {\n return typeof typeSpec === \"string\" ? name(typeSpec) : typeSpec;\n}\nfunction getNamedType(suite, name) {\n var ttype = suite[name];\n if (!ttype) {\n throw new Error(\"Unknown type \" + name);\n }\n return ttype;\n}\n/**\n * Defines a type name, either built-in, or defined in this suite. It can typically be included in\n * the specs as just a plain string.\n */\nfunction name(value) { return new TName(value); }\nexports.name = name;\nvar TName = /** @class */ (function (_super) {\n __extends(TName, _super);\n function TName(name) {\n var _this = _super.call(this) || this;\n _this.name = name;\n _this._failMsg = \"is not a \" + name;\n return _this;\n }\n TName.prototype.getChecker = function (suite, strict, allowedProps) {\n var _this = this;\n var ttype = getNamedType(suite, this.name);\n var checker = ttype.getChecker(suite, strict, allowedProps);\n if (ttype instanceof BasicType || ttype instanceof TName) {\n return checker;\n }\n // For complex types, add an additional \"is not a \" message on failure.\n return function (value, ctx) { return checker(value, ctx) ? true : ctx.fail(null, _this._failMsg, 0); };\n };\n return TName;\n}(TType));\nexports.TName = TName;\n/**\n * Defines a literal value, e.g. lit('hello') or lit(123).\n */\nfunction lit(value) { return new TLiteral(value); }\nexports.lit = lit;\nvar TLiteral = /** @class */ (function (_super) {\n __extends(TLiteral, _super);\n function TLiteral(value) {\n var _this = _super.call(this) || this;\n _this.value = value;\n _this.name = JSON.stringify(value);\n _this._failMsg = \"is not \" + _this.name;\n return _this;\n }\n TLiteral.prototype.getChecker = function (suite, strict) {\n var _this = this;\n return function (value, ctx) { return (value === _this.value) ? true : ctx.fail(null, _this._failMsg, -1); };\n };\n return TLiteral;\n}(TType));\nexports.TLiteral = TLiteral;\n/**\n * Defines an array type, e.g. array('number').\n */\nfunction array(typeSpec) { return new TArray(parseSpec(typeSpec)); }\nexports.array = array;\nvar TArray = /** @class */ (function (_super) {\n __extends(TArray, _super);\n function TArray(ttype) {\n var _this = _super.call(this) || this;\n _this.ttype = ttype;\n return _this;\n }\n TArray.prototype.getChecker = function (suite, strict) {\n var itemChecker = this.ttype.getChecker(suite, strict);\n return function (value, ctx) {\n if (!Array.isArray(value)) {\n return ctx.fail(null, \"is not an array\", 0);\n }\n for (var i = 0; i < value.length; i++) {\n var ok = itemChecker(value[i], ctx);\n if (!ok) {\n return ctx.fail(i, null, 1);\n }\n }\n return true;\n };\n };\n return TArray;\n}(TType));\nexports.TArray = TArray;\n/**\n * Defines a tuple type, e.g. tuple('string', 'number').\n */\nfunction tuple() {\n var typeSpec = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n typeSpec[_i] = arguments[_i];\n }\n return new TTuple(typeSpec.map(function (t) { return parseSpec(t); }));\n}\nexports.tuple = tuple;\nvar TTuple = /** @class */ (function (_super) {\n __extends(TTuple, _super);\n function TTuple(ttypes) {\n var _this = _super.call(this) || this;\n _this.ttypes = ttypes;\n return _this;\n }\n TTuple.prototype.getChecker = function (suite, strict) {\n var itemCheckers = this.ttypes.map(function (t) { return t.getChecker(suite, strict); });\n var checker = function (value, ctx) {\n if (!Array.isArray(value)) {\n return ctx.fail(null, \"is not an array\", 0);\n }\n for (var i = 0; i < itemCheckers.length; i++) {\n var ok = itemCheckers[i](value[i], ctx);\n if (!ok) {\n return ctx.fail(i, null, 1);\n }\n }\n return true;\n };\n if (!strict) {\n return checker;\n }\n return function (value, ctx) {\n if (!checker(value, ctx)) {\n return false;\n }\n return value.length <= itemCheckers.length ? true :\n ctx.fail(itemCheckers.length, \"is extraneous\", 2);\n };\n };\n return TTuple;\n}(TType));\nexports.TTuple = TTuple;\n/**\n * Defines a union type, e.g. union('number', 'null').\n */\nfunction union() {\n var typeSpec = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n typeSpec[_i] = arguments[_i];\n }\n return new TUnion(typeSpec.map(function (t) { return parseSpec(t); }));\n}\nexports.union = union;\nvar TUnion = /** @class */ (function (_super) {\n __extends(TUnion, _super);\n function TUnion(ttypes) {\n var _this = _super.call(this) || this;\n _this.ttypes = ttypes;\n var names = ttypes.map(function (t) { return t instanceof TName || t instanceof TLiteral ? t.name : null; })\n .filter(function (n) { return n; });\n var otherTypes = ttypes.length - names.length;\n if (names.length) {\n if (otherTypes > 0) {\n names.push(otherTypes + \" more\");\n }\n _this._failMsg = \"is none of \" + names.join(\", \");\n }\n else {\n _this._failMsg = \"is none of \" + otherTypes + \" types\";\n }\n return _this;\n }\n TUnion.prototype.getChecker = function (suite, strict) {\n var _this = this;\n var itemCheckers = this.ttypes.map(function (t) { return t.getChecker(suite, strict); });\n return function (value, ctx) {\n var ur = ctx.unionResolver();\n for (var i = 0; i < itemCheckers.length; i++) {\n var ok = itemCheckers[i](value, ur.createContext());\n if (ok) {\n return true;\n }\n }\n ctx.resolveUnion(ur);\n return ctx.fail(null, _this._failMsg, 0);\n };\n };\n return TUnion;\n}(TType));\nexports.TUnion = TUnion;\n/**\n * Defines an intersection type, e.g. intersection('number', 'null').\n */\nfunction intersection() {\n var typeSpec = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n typeSpec[_i] = arguments[_i];\n }\n return new TIntersection(typeSpec.map(function (t) { return parseSpec(t); }));\n}\nexports.intersection = intersection;\nvar TIntersection = /** @class */ (function (_super) {\n __extends(TIntersection, _super);\n function TIntersection(ttypes) {\n var _this = _super.call(this) || this;\n _this.ttypes = ttypes;\n return _this;\n }\n TIntersection.prototype.getChecker = function (suite, strict) {\n var allowedProps = new Set();\n var itemCheckers = this.ttypes.map(function (t) { return t.getChecker(suite, strict, allowedProps); });\n return function (value, ctx) {\n var ok = itemCheckers.every(function (checker) { return checker(value, ctx); });\n if (ok) {\n return true;\n }\n return ctx.fail(null, null, 0);\n };\n };\n return TIntersection;\n}(TType));\nexports.TIntersection = TIntersection;\n/**\n * Defines an enum type, e.g. enum({'A': 1, 'B': 2}).\n */\nfunction enumtype(values) {\n return new TEnumType(values);\n}\nexports.enumtype = enumtype;\nvar TEnumType = /** @class */ (function (_super) {\n __extends(TEnumType, _super);\n function TEnumType(members) {\n var _this = _super.call(this) || this;\n _this.members = members;\n _this.validValues = new Set();\n _this._failMsg = \"is not a valid enum value\";\n _this.validValues = new Set(Object.keys(members).map(function (name) { return members[name]; }));\n return _this;\n }\n TEnumType.prototype.getChecker = function (suite, strict) {\n var _this = this;\n return function (value, ctx) {\n return (_this.validValues.has(value) ? true : ctx.fail(null, _this._failMsg, 0));\n };\n };\n return TEnumType;\n}(TType));\nexports.TEnumType = TEnumType;\n/**\n * Defines a literal enum value, such as Direction.Up, specified as enumlit(\"Direction\", \"Up\").\n */\nfunction enumlit(name, prop) {\n return new TEnumLiteral(name, prop);\n}\nexports.enumlit = enumlit;\nvar TEnumLiteral = /** @class */ (function (_super) {\n __extends(TEnumLiteral, _super);\n function TEnumLiteral(enumName, prop) {\n var _this = _super.call(this) || this;\n _this.enumName = enumName;\n _this.prop = prop;\n _this._failMsg = \"is not \" + enumName + \".\" + prop;\n return _this;\n }\n TEnumLiteral.prototype.getChecker = function (suite, strict) {\n var _this = this;\n var ttype = getNamedType(suite, this.enumName);\n if (!(ttype instanceof TEnumType)) {\n throw new Error(\"Type \" + this.enumName + \" used in enumlit is not an enum type\");\n }\n var val = ttype.members[this.prop];\n if (!ttype.members.hasOwnProperty(this.prop)) {\n throw new Error(\"Unknown value \" + this.enumName + \".\" + this.prop + \" used in enumlit\");\n }\n return function (value, ctx) { return (value === val) ? true : ctx.fail(null, _this._failMsg, -1); };\n };\n return TEnumLiteral;\n}(TType));\nexports.TEnumLiteral = TEnumLiteral;\nfunction makeIfaceProps(props) {\n return Object.keys(props).map(function (name) { return makeIfaceProp(name, props[name]); });\n}\nfunction makeIfaceProp(name, prop) {\n return prop instanceof TOptional ?\n new TProp(name, prop.ttype, true) :\n new TProp(name, parseSpec(prop), false);\n}\n/**\n * Defines an interface. The first argument is an array of interfaces that it extends, and the\n * second is an array of properties.\n */\nfunction iface(bases, props) {\n return new TIface(bases, makeIfaceProps(props));\n}\nexports.iface = iface;\nvar TIface = /** @class */ (function (_super) {\n __extends(TIface, _super);\n function TIface(bases, props) {\n var _this = _super.call(this) || this;\n _this.bases = bases;\n _this.props = props;\n _this.propSet = new Set(props.map(function (p) { return p.name; }));\n return _this;\n }\n TIface.prototype.getChecker = function (suite, strict, allowedProps) {\n var _this = this;\n var baseCheckers = this.bases.map(function (b) { return getNamedType(suite, b).getChecker(suite, strict); });\n var propCheckers = this.props.map(function (prop) { return prop.ttype.getChecker(suite, strict); });\n var testCtx = new util_1.NoopContext();\n // Consider a prop required if it's not optional AND does not allow for undefined as a value.\n var isPropRequired = this.props.map(function (prop, i) {\n return !prop.isOpt && !propCheckers[i](undefined, testCtx);\n });\n var checker = function (value, ctx) {\n if (typeof value !== \"object\" || value === null) {\n return ctx.fail(null, \"is not an object\", 0);\n }\n for (var i = 0; i < baseCheckers.length; i++) {\n if (!baseCheckers[i](value, ctx)) {\n return false;\n }\n }\n for (var i = 0; i < propCheckers.length; i++) {\n var name_1 = _this.props[i].name;\n var v = value[name_1];\n if (v === undefined) {\n if (isPropRequired[i]) {\n return ctx.fail(name_1, \"is missing\", 1);\n }\n }\n else {\n var ok = propCheckers[i](v, ctx);\n if (!ok) {\n return ctx.fail(name_1, null, 1);\n }\n }\n }\n return true;\n };\n if (!strict) {\n return checker;\n }\n var propSet = this.propSet;\n if (allowedProps) {\n this.propSet.forEach(function (prop) { return allowedProps.add(prop); });\n propSet = allowedProps;\n }\n // In strict mode, check also for unknown enumerable properties.\n return function (value, ctx) {\n if (!checker(value, ctx)) {\n return false;\n }\n for (var prop in value) {\n if (!propSet.has(prop)) {\n return ctx.fail(prop, \"is extraneous\", 2);\n }\n }\n return true;\n };\n };\n return TIface;\n}(TType));\nexports.TIface = TIface;\n/**\n * Defines an optional property on an interface.\n */\nfunction opt(typeSpec) { return new TOptional(parseSpec(typeSpec)); }\nexports.opt = opt;\nvar TOptional = /** @class */ (function (_super) {\n __extends(TOptional, _super);\n function TOptional(ttype) {\n var _this = _super.call(this) || this;\n _this.ttype = ttype;\n return _this;\n }\n TOptional.prototype.getChecker = function (suite, strict) {\n var itemChecker = this.ttype.getChecker(suite, strict);\n return function (value, ctx) {\n return value === undefined || itemChecker(value, ctx);\n };\n };\n return TOptional;\n}(TType));\nexports.TOptional = TOptional;\n/**\n * Defines a property in an interface.\n */\nvar TProp = /** @class */ (function () {\n function TProp(name, ttype, isOpt) {\n this.name = name;\n this.ttype = ttype;\n this.isOpt = isOpt;\n }\n return TProp;\n}());\nexports.TProp = TProp;\n/**\n * Defines a function. The first argument declares the function's return type, the rest declare\n * its parameters.\n */\nfunction func(resultSpec) {\n var params = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n params[_i - 1] = arguments[_i];\n }\n return new TFunc(new TParamList(params), parseSpec(resultSpec));\n}\nexports.func = func;\nvar TFunc = /** @class */ (function (_super) {\n __extends(TFunc, _super);\n function TFunc(paramList, result) {\n var _this = _super.call(this) || this;\n _this.paramList = paramList;\n _this.result = result;\n return _this;\n }\n TFunc.prototype.getChecker = function (suite, strict) {\n return function (value, ctx) {\n return typeof value === \"function\" ? true : ctx.fail(null, \"is not a function\", 0);\n };\n };\n return TFunc;\n}(TType));\nexports.TFunc = TFunc;\n/**\n * Defines a function parameter.\n */\nfunction param(name, typeSpec, isOpt) {\n return new TParam(name, parseSpec(typeSpec), Boolean(isOpt));\n}\nexports.param = param;\nvar TParam = /** @class */ (function () {\n function TParam(name, ttype, isOpt) {\n this.name = name;\n this.ttype = ttype;\n this.isOpt = isOpt;\n }\n return TParam;\n}());\nexports.TParam = TParam;\n/**\n * Defines a function parameter list.\n */\nvar TParamList = /** @class */ (function (_super) {\n __extends(TParamList, _super);\n function TParamList(params) {\n var _this = _super.call(this) || this;\n _this.params = params;\n return _this;\n }\n TParamList.prototype.getChecker = function (suite, strict) {\n var _this = this;\n var itemCheckers = this.params.map(function (t) { return t.ttype.getChecker(suite, strict); });\n var testCtx = new util_1.NoopContext();\n var isParamRequired = this.params.map(function (param, i) {\n return !param.isOpt && !itemCheckers[i](undefined, testCtx);\n });\n var checker = function (value, ctx) {\n if (!Array.isArray(value)) {\n return ctx.fail(null, \"is not an array\", 0);\n }\n for (var i = 0; i < itemCheckers.length; i++) {\n var p = _this.params[i];\n if (value[i] === undefined) {\n if (isParamRequired[i]) {\n return ctx.fail(p.name, \"is missing\", 1);\n }\n }\n else {\n var ok = itemCheckers[i](value[i], ctx);\n if (!ok) {\n return ctx.fail(p.name, null, 1);\n }\n }\n }\n return true;\n };\n if (!strict) {\n return checker;\n }\n return function (value, ctx) {\n if (!checker(value, ctx)) {\n return false;\n }\n return value.length <= itemCheckers.length ? true :\n ctx.fail(itemCheckers.length, \"is extraneous\", 2);\n };\n };\n return TParamList;\n}(TType));\nexports.TParamList = TParamList;\n/**\n * Single TType implementation for all basic built-in types.\n */\nvar BasicType = /** @class */ (function (_super) {\n __extends(BasicType, _super);\n function BasicType(validator, message) {\n var _this = _super.call(this) || this;\n _this.validator = validator;\n _this.message = message;\n return _this;\n }\n BasicType.prototype.getChecker = function (suite, strict) {\n var _this = this;\n return function (value, ctx) { return _this.validator(value) ? true : ctx.fail(null, _this.message, 0); };\n };\n return BasicType;\n}(TType));\nexports.BasicType = BasicType;\n/**\n * Defines the suite of basic types.\n */\nexports.basicTypes = {\n any: new BasicType(function (v) { return true; }, \"is invalid\"),\n number: new BasicType(function (v) { return (typeof v === \"number\"); }, \"is not a number\"),\n object: new BasicType(function (v) { return (typeof v === \"object\" && v); }, \"is not an object\"),\n boolean: new BasicType(function (v) { return (typeof v === \"boolean\"); }, \"is not a boolean\"),\n string: new BasicType(function (v) { return (typeof v === \"string\"); }, \"is not a string\"),\n symbol: new BasicType(function (v) { return (typeof v === \"symbol\"); }, \"is not a symbol\"),\n void: new BasicType(function (v) { return (v == null); }, \"is not void\"),\n undefined: new BasicType(function (v) { return (v === undefined); }, \"is not undefined\"),\n null: new BasicType(function (v) { return (v === null); }, \"is not null\"),\n never: new BasicType(function (v) { return false; }, \"is unexpected\"),\n Date: new BasicType(getIsNativeChecker(\"[object Date]\"), \"is not a Date\"),\n RegExp: new BasicType(getIsNativeChecker(\"[object RegExp]\"), \"is not a RegExp\"),\n};\n// This approach for checking native object types mirrors that of lodash. Its advantage over\n// `isinstance` is that it can still return true for native objects created in different JS\n// execution environments.\nvar nativeToString = Object.prototype.toString;\nfunction getIsNativeChecker(tag) {\n return function (v) { return typeof v === \"object\" && v && nativeToString.call(v) === tag; };\n}\nif (typeof Buffer !== \"undefined\") {\n exports.basicTypes.Buffer = new BasicType(function (v) { return Buffer.isBuffer(v); }, \"is not a Buffer\");\n}\nvar _loop_1 = function (array_1) {\n exports.basicTypes[array_1.name] = new BasicType(function (v) { return (v instanceof array_1); }, \"is not a \" + array_1.name);\n};\n// Support typed arrays of various flavors\nfor (var _i = 0, _a = [Int8Array, Uint8Array, Uint8ClampedArray, Int16Array, Uint16Array,\n Int32Array, Uint32Array, Float32Array, Float64Array, ArrayBuffer]; _i < _a.length; _i++) {\n var array_1 = _a[_i];\n _loop_1(array_1);\n}\n","\"use strict\";\nvar __spreadArrays = (this && this.__spreadArrays) || function () {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Checker = exports.createCheckers = void 0;\nvar types_1 = require(\"./types\");\nvar util_1 = require(\"./util\");\n/**\n * Export functions used to define interfaces.\n */\nvar types_2 = require(\"./types\");\nObject.defineProperty(exports, \"TArray\", { enumerable: true, get: function () { return types_2.TArray; } });\nObject.defineProperty(exports, \"TEnumType\", { enumerable: true, get: function () { return types_2.TEnumType; } });\nObject.defineProperty(exports, \"TEnumLiteral\", { enumerable: true, get: function () { return types_2.TEnumLiteral; } });\nObject.defineProperty(exports, \"TFunc\", { enumerable: true, get: function () { return types_2.TFunc; } });\nObject.defineProperty(exports, \"TIface\", { enumerable: true, get: function () { return types_2.TIface; } });\nObject.defineProperty(exports, \"TLiteral\", { enumerable: true, get: function () { return types_2.TLiteral; } });\nObject.defineProperty(exports, \"TName\", { enumerable: true, get: function () { return types_2.TName; } });\nObject.defineProperty(exports, \"TOptional\", { enumerable: true, get: function () { return types_2.TOptional; } });\nObject.defineProperty(exports, \"TParam\", { enumerable: true, get: function () { return types_2.TParam; } });\nObject.defineProperty(exports, \"TParamList\", { enumerable: true, get: function () { return types_2.TParamList; } });\nObject.defineProperty(exports, \"TProp\", { enumerable: true, get: function () { return types_2.TProp; } });\nObject.defineProperty(exports, \"TTuple\", { enumerable: true, get: function () { return types_2.TTuple; } });\nObject.defineProperty(exports, \"TType\", { enumerable: true, get: function () { return types_2.TType; } });\nObject.defineProperty(exports, \"TUnion\", { enumerable: true, get: function () { return types_2.TUnion; } });\nObject.defineProperty(exports, \"TIntersection\", { enumerable: true, get: function () { return types_2.TIntersection; } });\nObject.defineProperty(exports, \"array\", { enumerable: true, get: function () { return types_2.array; } });\nObject.defineProperty(exports, \"enumlit\", { enumerable: true, get: function () { return types_2.enumlit; } });\nObject.defineProperty(exports, \"enumtype\", { enumerable: true, get: function () { return types_2.enumtype; } });\nObject.defineProperty(exports, \"func\", { enumerable: true, get: function () { return types_2.func; } });\nObject.defineProperty(exports, \"iface\", { enumerable: true, get: function () { return types_2.iface; } });\nObject.defineProperty(exports, \"lit\", { enumerable: true, get: function () { return types_2.lit; } });\nObject.defineProperty(exports, \"name\", { enumerable: true, get: function () { return types_2.name; } });\nObject.defineProperty(exports, \"opt\", { enumerable: true, get: function () { return types_2.opt; } });\nObject.defineProperty(exports, \"param\", { enumerable: true, get: function () { return types_2.param; } });\nObject.defineProperty(exports, \"tuple\", { enumerable: true, get: function () { return types_2.tuple; } });\nObject.defineProperty(exports, \"union\", { enumerable: true, get: function () { return types_2.union; } });\nObject.defineProperty(exports, \"intersection\", { enumerable: true, get: function () { return types_2.intersection; } });\nObject.defineProperty(exports, \"BasicType\", { enumerable: true, get: function () { return types_2.BasicType; } });\nvar util_2 = require(\"./util\");\nObject.defineProperty(exports, \"VError\", { enumerable: true, get: function () { return util_2.VError; } });\n/**\n * Takes one of more type suites (e.g. a module generated by `ts-interface-builder`), and combines\n * them into a suite of interface checkers. If a type is used by name, that name should be present\n * among the passed-in type suites.\n *\n * The returned object maps type names to Checker objects.\n */\nfunction createCheckers() {\n var typeSuite = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n typeSuite[_i] = arguments[_i];\n }\n var fullSuite = Object.assign.apply(Object, __spreadArrays([{}, types_1.basicTypes], typeSuite));\n var checkers = {};\n for (var _a = 0, typeSuite_1 = typeSuite; _a < typeSuite_1.length; _a++) {\n var suite_1 = typeSuite_1[_a];\n for (var _b = 0, _c = Object.keys(suite_1); _b < _c.length; _b++) {\n var name = _c[_b];\n checkers[name] = new Checker(fullSuite, suite_1[name]);\n }\n }\n return checkers;\n}\nexports.createCheckers = createCheckers;\n/**\n * Checker implements validation of objects, and also includes accessors to validate method calls.\n * Checkers should be created using `createCheckers()`.\n */\nvar Checker = /** @class */ (function () {\n // Create checkers by using `createCheckers()` function.\n function Checker(suite, ttype, _path) {\n if (_path === void 0) { _path = 'value'; }\n this.suite = suite;\n this.ttype = ttype;\n this._path = _path;\n this.props = new Map();\n if (ttype instanceof types_1.TIface) {\n for (var _i = 0, _a = ttype.props; _i < _a.length; _i++) {\n var p = _a[_i];\n this.props.set(p.name, p.ttype);\n }\n }\n this.checkerPlain = this.ttype.getChecker(suite, false);\n this.checkerStrict = this.ttype.getChecker(suite, true);\n }\n /**\n * Set the path to report in errors, instead of the default \"value\". (E.g. if the Checker is for\n * a \"person\" interface, set path to \"person\" to report e.g. \"person.name is not a string\".)\n */\n Checker.prototype.setReportedPath = function (path) {\n this._path = path;\n };\n /**\n * Check that the given value satisfies this checker's type, or throw Error.\n */\n Checker.prototype.check = function (value) { return this._doCheck(this.checkerPlain, value); };\n /**\n * A fast check for whether or not the given value satisfies this Checker's type. This returns\n * true or false, does not produce an error message, and is fast both on success and on failure.\n */\n Checker.prototype.test = function (value) {\n return this.checkerPlain(value, new util_1.NoopContext());\n };\n /**\n * Returns an error object describing the errors if the given value does not satisfy this\n * Checker's type, or null if it does.\n */\n Checker.prototype.validate = function (value) {\n return this._doValidate(this.checkerPlain, value);\n };\n /**\n * Check that the given value satisfies this checker's type strictly. This checks that objects\n * and tuples have no extra members. Note that this prevents backward compatibility, so usually\n * a plain check() is more appropriate.\n */\n Checker.prototype.strictCheck = function (value) { return this._doCheck(this.checkerStrict, value); };\n /**\n * A fast strict check for whether or not the given value satisfies this Checker's type. Returns\n * true or false, does not produce an error message, and is fast both on success and on failure.\n */\n Checker.prototype.strictTest = function (value) {\n return this.checkerStrict(value, new util_1.NoopContext());\n };\n /**\n * Returns an error object describing the errors if the given value does not satisfy this\n * Checker's type strictly, or null if it does.\n */\n Checker.prototype.strictValidate = function (value) {\n return this._doValidate(this.checkerStrict, value);\n };\n /**\n * If this checker is for an interface, returns a Checker for the type required for the given\n * property of this interface.\n */\n Checker.prototype.getProp = function (prop) {\n var ttype = this.props.get(prop);\n if (!ttype) {\n throw new Error(\"Type has no property \" + prop);\n }\n return new Checker(this.suite, ttype, this._path + \".\" + prop);\n };\n /**\n * If this checker is for an interface, returns a Checker for the argument-list required to call\n * the given method of this interface. E.g. if this Checker is for the interface:\n * interface Foo {\n * find(s: string, pos?: number): number;\n * }\n * Then methodArgs(\"find\").check(...) will succeed for [\"foo\"] and [\"foo\", 3], but not for [17].\n */\n Checker.prototype.methodArgs = function (methodName) {\n var tfunc = this._getMethod(methodName);\n return new Checker(this.suite, tfunc.paramList);\n };\n /**\n * If this checker is for an interface, returns a Checker for the return value of the given\n * method of this interface.\n */\n Checker.prototype.methodResult = function (methodName) {\n var tfunc = this._getMethod(methodName);\n return new Checker(this.suite, tfunc.result);\n };\n /**\n * If this checker is for a function, returns a Checker for its argument-list.\n */\n Checker.prototype.getArgs = function () {\n if (!(this.ttype instanceof types_1.TFunc)) {\n throw new Error(\"getArgs() applied to non-function\");\n }\n return new Checker(this.suite, this.ttype.paramList);\n };\n /**\n * If this checker is for a function, returns a Checker for its result.\n */\n Checker.prototype.getResult = function () {\n if (!(this.ttype instanceof types_1.TFunc)) {\n throw new Error(\"getResult() applied to non-function\");\n }\n return new Checker(this.suite, this.ttype.result);\n };\n /**\n * Return the type for which this is a checker.\n */\n Checker.prototype.getType = function () {\n return this.ttype;\n };\n /**\n * Actual implementation of check() and strictCheck().\n */\n Checker.prototype._doCheck = function (checkerFunc, value) {\n var noopCtx = new util_1.NoopContext();\n if (!checkerFunc(value, noopCtx)) {\n var detailCtx = new util_1.DetailContext();\n checkerFunc(value, detailCtx);\n throw detailCtx.getError(this._path);\n }\n };\n Checker.prototype._doValidate = function (checkerFunc, value) {\n var noopCtx = new util_1.NoopContext();\n if (checkerFunc(value, noopCtx)) {\n return null;\n }\n var detailCtx = new util_1.DetailContext();\n checkerFunc(value, detailCtx);\n return detailCtx.getErrorDetail(this._path);\n };\n Checker.prototype._getMethod = function (methodName) {\n var ttype = this.props.get(methodName);\n if (!ttype) {\n throw new Error(\"Type has no property \" + methodName);\n }\n if (!(ttype instanceof types_1.TFunc)) {\n throw new Error(\"Property \" + methodName + \" is not a method\");\n }\n return ttype;\n };\n return Checker;\n}());\nexports.Checker = Checker;\n","/**\n * This module was automatically generated by `ts-interface-builder`\n */\nimport * as t from \"ts-interface-checker\";\n// tslint:disable:object-literal-key-quotes\n\nexport const OAuthConfigurationIF = t.iface([], {\n \"clientId\": \"string\",\n \"resource\": \"string\",\n \"oAuthUri\": \"string\",\n \"tokenUri\": \"string\",\n \"adminClaimName\": \"string\",\n});\n\nconst exportedTypeSuite: t.ITypeSuite = {\n OAuthConfigurationIF,\n};\nexport default exportedTypeSuite;\n","import OAuthConfigurationTI from \"./OAuthConfiguration-ti\";\nimport {createCheckers} from \"ts-interface-checker\";\n\ninterface OAuthConfigurationIF {\n clientId: string;\n resource: string;\n oAuthUri: string;\n tokenUri: string;\n adminClaimName: string;\n}\n\nconst {\n OAuthConfigurationIF\n} = createCheckers(OAuthConfigurationTI);\n\nclass OAuthConfiguration implements OAuthConfigurationIF {\n clientId: string;\n resource: string;\n oAuthUri: string;\n tokenUri: string;\n adminClaimName: string;\n\n constructor(from:any, validate=true) {\n if(validate) {\n //this will throw an error (VError from ts-interface-checker) if the configuration does not validate\n OAuthConfigurationIF.check(from);\n }\n this.clientId = from.clientId;\n this.resource = from.resource;\n this.oAuthUri = from.oAuthUri;\n this.tokenUri = from.tokenUri;\n this.adminClaimName = from.adminClaimName;\n }\n\n /**\n * returns a boolean indicating whether the frontend should treat this user as an admin or not\n * @param claimData\n */\n isAdmin(claimData:any) {\n return claimData.hasOwnProperty(this.adminClaimName);\n }\n}\n\nexport type {OAuthConfigurationIF};\nexport default OAuthConfiguration;","/**\n * call out to the IdP to request a refresh of the login using the refresh token stored in the localstorage.\n * on success, the updated token is stored in the local storage and the promise resolves\n * on failure, the local storage is not touched and the promise rejects with an error string\n * if the server returns a 500 or 503/504 error then it's assumed to be transient and the request will be retried\n * after a 2s delay.\n *\n * this is NOT written as a conventional async function in order to utilise more fine-grained control of when the promise\n * is resolved; i.e., it calls itself on a timer in order to retry so we must only resolve the promise once there has been\n * a definitive success or failure of the operation which could be after multiple calls\n * @param tokenUri server uri to make the refresh request to\n * @returns a Promise\n */\nexport const refreshLogin:(tokenUri:string)=>Promise = (tokenUri) => new Promise((resolve,reject)=>{\n const refreshToken = localStorage.getItem(\"pluto:refresh-token\");\n if(!refreshToken) {\n reject(\"No refresh token\");\n }\n\n const postdata:{[index:string]:string } = {\n grant_type: \"refresh_token\",\n refresh_token: refreshToken as string\n };\n const content_elements = Object.keys(postdata).map(\n (k) => k + \"=\" + encodeURIComponent(postdata[k])\n );\n const body_content = content_elements.join(\"&\");\n\n const performRefresh = async ()=> {\n const response = await fetch(tokenUri, {\n method: \"POST\",\n body: body_content,\n headers: {\n Accept: \"application/json\",\n \"Content-Type\": \"application/x-www-form-urlencoded\",\n },\n });\n switch (response.status) {\n case 200:\n const content = await response.json();\n console.log(\"Server response: \", content);\n localStorage.setItem(\"pluto:access-token\", content.access_token);\n if (content.refresh_token) localStorage.setItem(\"pluto:refresh-token\", content.refresh_token);\n resolve();\n break;\n case 403:\n case 401:\n console.log(\"Refresh was rejected with a forbidden error\");\n reject(\"Request forbidden\");\n break;\n case 500:\n console.log(\"Refresh was rejected due to a server error\");\n window.setTimeout(() => performRefresh(), 2000); //try again in 2s\n break;\n case 503:\n case 504:\n console.log(\"Authentication server not available\");\n window.setTimeout(() => performRefresh(), 2000); //try again in 2s\n break;\n default:\n const errorbody = await response.text();\n console.log(\"Unexpected response from authentication server: \", response.status, errorbody);\n reject(\"Unexpected response\");\n break;\n }\n }\n\n performRefresh().catch(err=>reject(err.toString()));\n})","import React from \"react\";\n\ninterface CustomisingThemeContext {\n darkMode: boolean;\n changeDarkMode: (newValue:boolean)=>void;\n}\n\nconst CustomisingThemeContext = React.createContext({\n darkMode: !(localStorage.getItem(\"pluto-dark-mode\") && localStorage.getItem(\"pluto-dark-mode\")==\"false\"), changeDarkMode: ()=>{}\n});\n\nexport const CustomisingThemeContextProvider = CustomisingThemeContext.Provider;\nexport default CustomisingThemeContext;\n","import React, {useState, useEffect, useRef, useContext} from \"react\";\nimport {Button, Grid, IconButton, Tooltip, Typography} from \"@material-ui/core\";\nimport {JwtDataShape} from \"../../utils/DecodedProfile\";\nimport {CircularProgress} from \"@material-ui/core\";\nimport {Error, CheckCircle, Person, Brightness7, Brightness4, HelpOutline} from \"@material-ui/icons\";\nimport {refreshLogin} from \"../../utils/OAuth2Helper\";\nimport {makeStyles} from \"@material-ui/core/styles\";\nimport CustomisingThemeContext from \"../Theme/CustomisingThemeContext\";\n\ninterface LoginComponentProps {\n refreshToken?: string;\n checkInterval?:number;\n loginData: JwtDataShape;\n onLoginRefreshed?: ()=>void;\n onLoginCantRefresh?: (reason:string)=>void;\n onLoginExpired: ()=>void;\n onLoggedOut?: ()=>void;\n overrideRefreshLogin?: (tokenUri:string)=>Promise; //only used for testing\n tokenUri: string;\n}\n\nconst useStyles = makeStyles({\n inlineIcon: {\n padding: 0,\n margin: \"auto\",\n display: \"inline-block\",\n marginRight: \"0.2em\",\n maxWidth: \"16px\",\n maxHeight: \"16px\",\n },\n textOnGrey: {\n color: \"black\"\n },\n iconButton: {\n height: \"36px\",\n width: \"36px\",\n padding: \"6px\"\n }\n});\n\nconst LoginComponent:React.FC = (props) => {\n const [refreshInProgress, setRefreshInProgress] = useState(false);\n const [refreshFailed, setRefreshFailed] = useState(false);\n const [refreshed, setRefreshed] = useState(false);\n const [loginExpiryCount, setLoginExpiryCount] = useState(\"\");\n\n let loginDataRef = useRef(props.loginData);\n const tokenUriRef = useRef(props.tokenUri);\n const overrideRefreshLoginRef = useRef(props.overrideRefreshLogin);\n\n const classes = useStyles();\n\n const themeContext = useContext(CustomisingThemeContext);\n\n useEffect(()=>{\n const intervalTimerId = window.setInterval(checkExpiryHandler, props.checkInterval ?? 60000);\n\n return (()=>{\n console.log(\"removing checkExpiryHandler\")\n window.clearInterval(intervalTimerId);\n })\n }, []);\n\n useEffect(()=>{\n console.log(\"refreshFailed was toggled to \", refreshFailed);\n if(refreshFailed) {\n console.log(\"setting countdown handler\");\n const intervalTimerId = window.setInterval(updateCountdownHandler, 1000);\n return (()=>{\n console.log(\"cleared countdown handler\");\n window.clearInterval(intervalTimerId);\n })\n }\n }, [refreshFailed]);\n\n useEffect(()=>{\n loginDataRef.current = props.loginData;\n }, [props.loginData]);\n\n /**\n * called periodically every second once a refresh has failed to alert the user how long they have left\n */\n const updateCountdownHandler = () => {\n const nowTime = new Date().getTime() / 1000; //assume time is in seconds\n const expiry = loginDataRef.current.exp;\n const timeToGo = expiry - nowTime;\n\n if(timeToGo>1) {\n setLoginExpiryCount(`expires in ${Math.ceil(timeToGo)}s`);\n } else {\n if(props.onLoginExpired) props.onLoginExpired();\n setLoginExpiryCount(\"has expired\");\n }\n }\n\n /**\n * lightweight function that is called every minute to verify the state of the token\n * it returns a promise that resolves when the component state has been updated. In normal usage this\n * is ignored but it is used in testing to ensure that the component state is only checked after it has been set.\n */\n const checkExpiryHandler = () => {\n if (loginDataRef.current) {\n const nowTime = new Date().getTime() / 1000; //assume time is in seconds\n //we know that it is not null due to above check\n const expiry = loginDataRef.current.exp;\n const timeToGo = expiry - nowTime;\n\n if (timeToGo <= 120) {\n console.log(\"less than 2mins to expiry, attempting refresh...\");\n setRefreshInProgress(true);\n\n let refreshedPromise;\n\n if(overrideRefreshLoginRef.current){\n refreshedPromise = overrideRefreshLoginRef.current(tokenUriRef.current);\n } else {\n refreshedPromise = refreshLogin(tokenUriRef.current);\n }\n\n refreshedPromise.then(()=>{\n console.log(\"Login refreshed\");\n setRefreshInProgress(false);\n setRefreshFailed(false);\n setRefreshed(true);\n\n if(props.onLoginRefreshed) props.onLoginRefreshed();\n window.setTimeout(()=>setRefreshed(false), 5000); //show success message for 5s\n }).catch(errString=>{\n if(props.onLoginCantRefresh) props.onLoginCantRefresh(errString);\n setRefreshFailed(true);\n setRefreshInProgress(false);\n updateCountdownHandler();\n return;\n })\n }\n } else {\n console.log(\"no login data present for expiry check\");\n }\n };\n\n const toggleThemeMode = ()=>themeContext.changeDarkMode(!themeContext.darkMode);\n const openDocs = ()=> window.open(\n \"https://docs.google.com/document/d/1QG9mOu_HDBoGqQs7Dly0sxifk4w9vaJiDiWdi3Uk1a8\",\n \"_blank\"\n )\n return (\n \n \n \n \n You are logged in as\n \n {props.loginData.preferred_username ?? props.loginData.username}\n \n \n \n \n \n {\n themeContext.darkMode ? : \n }\n \n \n \n \n \n \n \n \n \n \n {\n refreshInProgress ?\n \n \n \n Refreshing your login...\n \n \n : null\n }\n {\n refreshFailed ?\n \n \n \n \n \n Login {loginExpiryCount}\n \n \n \n \n : null\n }\n {\n refreshed ?\n \n \n \n Token refreshed\n \n \n : null\n }\n\n \n {\n if (props.onLoggedOut) {\n props.onLoggedOut();\n return;\n }\n\n window.location.assign(\"/logout\");\n }}\n >\n Logout\n \n \n \n )\n}\n\nexport default LoginComponent;\n","import React, {useState, useEffect, useContext} from \"react\";\nimport { Link } from \"react-router-dom\";\nimport \"./AppSwitcher.css\";\nimport { Button } from \"@material-ui/core\";\nimport { loadInSigningKey, validateAndDecode } from \"../../utils/JwtHelpers\";\nimport { JwtData, JwtDataShape } from \"../../utils/DecodedProfile\";\nimport {\n hrefIsTheSameDeploymentRootPath,\n getDeploymentRootPathLink,\n} from \"../../utils/AppLinks\";\nimport { MenuButton } from \"../MenuButton/MenuButton\";\nimport OAuthConfiguration from \"../../utils/OAuthConfiguration\";\nimport { VError } from \"ts-interface-checker\";\nimport LoginComponent from \"./LoginComponent\";\n\ninterface AppSwitcherProps {\n onLoggedIn?: () => void;\n onLoggedOut?: () => void;\n onLoginValid?: (valid: boolean, jwtDataShape?: JwtDataShape) => void;\n}\n\nexport const AppSwitcher: React.FC = (props) => {\n const [isLoggedIn, setIsLoggedIn] = useState(false);\n const [isAdmin, setIsAdmin] = useState(false);\n const [loginData, setLoginData] = useState(null);\n const [expired, setExpired] = useState(false);\n\n // config\n const [menuSettings, setMenuSettings] = useState(\n []\n );\n const [clientId, setClientId] = useState(\"\");\n const [resource, setResource] = useState(\"\");\n const [oAuthUri, setOAuthUri] = useState(\"\");\n const [adminClaimName, setAdminClaimName] = useState(\"\");\n const [tokenUri, setTokenUri] = useState(\"\");\n\n\n const loadConfig: () => Promise = async () => {\n try {\n const response = await fetch(\"/meta/menu-config/menu.json\");\n\n if (response.status === 200) {\n const data = await response.json();\n\n setMenuSettings(data);\n }\n } catch (error) {\n console.error(error);\n }\n\n const response = await fetch(\"/meta/oauth/config.json\");\n if (response.status === 200) {\n const data = await response.json();\n const config = new OAuthConfiguration(data); //validates the configuration and throws a VError if it fails\n setClientId(config.clientId);\n setResource(config.resource);\n setOAuthUri(config.oAuthUri);\n setTokenUri(config.tokenUri);\n setAdminClaimName(config.adminClaimName);\n return config;\n } else {\n throw `Server returned ${response.status}`;\n }\n };\n\n const validateToken: (config: OAuthConfiguration) => Promise = async (\n config: OAuthConfiguration\n ) => {\n const token = window.localStorage.getItem(\"pluto:access-token\");\n if (!token) return;\n\n try {\n const signingKey = await loadInSigningKey();\n\n const decodedData = await validateAndDecode(token, signingKey);\n if(decodedData) {\n const loginData = JwtData(decodedData);\n setLoginData(loginData);\n\n // Login valid callback if provided\n if (props.onLoginValid) {\n props.onLoginValid(true, loginData);\n }\n\n setIsLoggedIn(true);\n\n setIsAdmin(config.isAdmin(loginData));\n } else {\n throw \"Got no user profile\"\n }\n } catch (error) {\n // Login valid callback if provided\n if (props.onLoginValid) {\n props.onLoginValid(false);\n }\n\n setIsLoggedIn(false);\n setIsAdmin(false);\n\n if (error.hasOwnProperty(\"name\") && error.name === \"TokenExpiredError\") {\n console.error(\"Token has already expired\");\n setExpired(true);\n } else {\n console.error(\"existing login token was not valid: \", error);\n }\n }\n };\n\n /**\n * load in the oauth config and validate the loaded in token\n */\n const refresh = async () => {\n try {\n const config = await loadConfig();\n await validateToken(config);\n } catch(err) {\n if (err instanceof VError) {\n console.log(\"OAuth configuration was not valid: \", err);\n } else {\n console.log(\"Could not load oauth configuration: \", err);\n }\n }\n }\n\n useEffect(() => {\n refresh();\n }, []);\n\n const makeLoginUrl = () => {\n const currentUri = new URL(window.location.href);\n const redirectUri =\n currentUri.protocol + \"//\" + currentUri.host + \"/oauth2/callback\";\n\n const args: Record = {\n response_type: \"code\",\n client_id: clientId,\n resource: resource,\n redirect_uri: redirectUri,\n state: currentUri.pathname,\n };\n\n const encoded = Object.entries(args).map(\n ([k, v]) => `${k}=${encodeURIComponent(v)}`\n );\n\n return oAuthUri + \"?\" + encoded.join(\"&\");\n };\n\n const getLink = (\n text: string,\n href: string,\n adminOnly: boolean | undefined,\n index: number\n ) => (\n \n {hrefIsTheSameDeploymentRootPath(href) ? (\n {text}\n ) : (\n {text}\n )}\n \n );\n\n return (\n <>\n {isLoggedIn && loginData ? (\n
\n
    \n {(\n menuSettings || []\n ).map(({ type, text, href, adminOnly, content }, index) =>\n type === \"link\" ? (\n getLink(text, href, adminOnly, index)\n ) : (\n \n )\n )}\n
\n {\n refresh();\n }}\n onLoginExpired={()=>{\n setExpired(true);\n setIsLoggedIn(false);\n }}\n tokenUri={tokenUri}\n />\n
\n ) : (\n
\n \n {expired\n ? \"Your login has expired\"\n : \"You are not currently logged in\"}\n {\n if (props.onLoggedIn) {\n props.onLoggedIn();\n return;\n }\n\n // Perform login\n window.location.assign(makeLoginUrl());\n }}\n >\n Login {expired ? \"again\" : \"\"}\n \n \n
\n )}\n \n );\n};\n","import React from \"react\";\nimport GuardianLogo from \"../../static/guardian_white.svg\";\nimport \"./Header.css\";\n\nexport const Header = () => {\n return (\n <>\n
\n
\n \n \n \n
\n
\n \n );\n};\n","import axios, { AxiosResponse } from \"axios\";\nimport qs from \"query-string\";\n\ninterface RefreshTokenResponse {\n access_token: string;\n refresh_token: string;\n}\n\ninterface PlutoConfig {\n tokenUri: string;\n clientId: string;\n}\n\n/**\n * Refreshes a token e.g. an expired token and returns an active token.\n */\nexport const refreshToken = async (\n plutoConfig: PlutoConfig\n): Promise => {\n const { tokenUri, clientId } = plutoConfig;\n const postdata: { [key: string]: string } = {\n grant_type: \"refresh_token\",\n client_id: clientId,\n refresh_token: window.localStorage.getItem(\"pluto:refresh-token\") as string,\n };\n\n try {\n const response = await axios.post(tokenUri, qs.stringify(postdata), {\n headers: {\n Accept: \"application/json\",\n \"Content-Type\": \"application/x-www-form-urlencoded\",\n },\n });\n\n if (response.status === 200) {\n const data = await response.data;\n\n return data;\n }\n\n throw new Error(`Could not fetch refresh token`);\n } catch (error) {\n return Promise.reject(error);\n }\n};\n\ninterface FailedQueue {\n resolve: (value?: unknown) => void;\n reject: (reason?: any) => void;\n}\n\nlet isRefreshing = false;\nlet failedQueue: FailedQueue[] = [];\n\nconst processQueue = (error: any, token: string | null) => {\n failedQueue.forEach((prom) => {\n if (error) {\n prom.reject(error);\n } else {\n prom.resolve(token);\n }\n });\n\n failedQueue = [];\n};\n\n/**\n * Retries the API call with a refresh token on 401 Unauthorized.\n */\nexport const handleUnauthorized = async (\n plutoConfig: PlutoConfig,\n error: any,\n failureCallback: () => void\n): Promise => {\n const originalRequest = error.config;\n\n if (!originalRequest._retry && error.response.status === 401) {\n // Handle several incoming http requests that fails on 401 Unauthorized\n // Therefore create a queue of the failing requests\n // and resolve them when refresh token is fetched\n // or reject them if failed to fetch the request token.\n if (isRefreshing) {\n return new Promise((resolve, reject) => {\n failedQueue.push({ resolve, reject });\n })\n .then((token) => {\n originalRequest.headers.Authorization = `Bearer ${token}`;\n return axios(originalRequest);\n })\n .catch((error) => {\n return Promise.reject(error);\n });\n }\n\n originalRequest._retry = true;\n isRefreshing = true;\n\n try {\n const data = await refreshToken(plutoConfig);\n\n window.localStorage.setItem(\"pluto:access-token\", data.access_token);\n window.localStorage.setItem(\"pluto:refresh-token\", data.refresh_token);\n\n originalRequest.headers.Authorization = `Bearer ${data.access_token}`;\n processQueue(null, data.access_token);\n return axios(originalRequest);\n } catch (error) {\n if (failureCallback) {\n failureCallback();\n }\n\n processQueue(error, null);\n return Promise.reject(error);\n } finally {\n isRefreshing = false;\n }\n }\n};\n","import React from \"react\";\nimport axios from \"axios\";\nimport \"./Breadcrumb.css\";\nimport IconCommission from \"../../static/c.svg\";\nimport IconProject from \"../../static/p.svg\";\nimport IconMaster from \"../../static/m.svg\";\nimport {Link} from \"@material-ui/core\";\nimport { ChevronRightRounded} from \"@material-ui/icons\";\n\n/**\n * only one of these needs to be set. The others will be inferred from the data about it.\n * if masterId is set, the other two are ignored\n * if masterId is not set and projectId is set, then commissionId is ignored\n * if neither masterId nor projectId is set, then commisisonId is used\n */\ninterface BreadcrumbProps {\n masterId?: number;\n projectId?: number;\n commissionId?: number;\n plutoCoreBaseUri?: string;\n}\n\ninterface BreadcrumbState {\n hasError: boolean;\n loading: boolean;\n projectName: string;\n commissionName: string;\n masterName: string;\n commissionId?: number;\n projectId?: number;\n}\n\ninterface UsefulServerData {\n projectId?: number;\n commissionId?: number;\n title: string;\n workingGroupId?: number;\n}\n\nclass Breadcrumb extends React.Component {\n constructor(props: BreadcrumbProps) {\n super(props);\n\n this.state = {\n hasError: false,\n loading: false,\n projectName: \"\",\n commissionName: \"\",\n masterName: \"\",\n commissionId: undefined,\n projectId: undefined\n };\n }\n\n /**\n * implement an error boundary so we can't break the rest of the UI\n * @param error\n */\n static getDerivedStateFromError(error: any) {\n return { loading: false, hasError: true };\n }\n\n componentDidCatch(error: Error, errorInfo: React.ErrorInfo) {\n console.error(\n \"An uncaught error happened in the Breadcrumb component \",\n error,\n errorInfo\n );\n }\n\n /**\n * return a promise that completes when state change is complete\n */\n setStatePromise(newState: any): Promise {\n return new Promise((resolve, reject) =>\n this.setState(newState, () => resolve())\n );\n }\n\n /**\n * generic function to load in data from either project or commission endpoints in pluto-core\n * @param url url to load\n */\n async plutoCoreLoad(url: string): Promise {\n try {\n const response = await axios.get(url);\n if (response.data && response.data.result && response.data.result.title) {\n return {\n title: response.data.result.title,\n workingGroupId: response.data.result.workingGroupId,\n commissionId: response.data.result.commissionId ?? response.data.id,\n };\n } else {\n return {\n title: \"(none)\",\n };\n }\n } catch (err) {\n if (err.response) {\n switch (err.response.status) {\n case 404:\n console.info(\"No data existed for the url \", url);\n return {\n title: \"(none)\",\n };\n case 503:\n case 504:\n console.info(\"pluto-core is not responding, retrying...\");\n\n return new Promise((resolve, reject) => {\n window.setTimeout(() => {\n this.plutoCoreLoad(url)\n .then((result) => resolve(result))\n .catch((err) => reject(err));\n }, 2000);\n });\n default:\n break;\n }\n }\n throw \"Could not load pluto-core data\";\n console.error(err);\n }\n return {\n title: \"(none)\",\n }; //we shouldn't get here but the compiler wants a return\n }\n\n async loadCommissionData(): Promise {\n await this.setStatePromise({ loading: true });\n //I could do the whole type-registration thing and validate it for the data, but really we are only interested\n //in a field or two so I might as well do it manually.\n const url = `${this.props.plutoCoreBaseUri ?? \"/pluto-core\"}/api/pluto/commission/${this.props.commissionId}`;\n\n try {\n const serverContent = await this.plutoCoreLoad(url);\n return this.setStatePromise({\n loading: false,\n commissionName: serverContent.title,\n });\n } catch (err) {\n return this.setStatePromise({ loading: false, hasError: true });\n }\n }\n\n async loadProjectData(): Promise {\n await this.setStatePromise({ loading: true });\n const url = `${this.props.plutoCoreBaseUri ?? \"/pluto-core\"}/api/project/${this.props.projectId}`;\n\n try {\n const serverContentProject = await this.plutoCoreLoad(url);\n if (serverContentProject.commissionId) {\n const commissionUrl = `${this.props.plutoCoreBaseUri ?? \"/pluto-core\"}/api/pluto/commission/${serverContentProject.commissionId}`;\n const serverContentComm = await this.plutoCoreLoad(commissionUrl);\n return this.setStatePromise({\n loading: false,\n commissionName: serverContentComm.title,\n commissionId: serverContentProject.commissionId,\n projectName: serverContentProject.title,\n });\n } else {\n return this.setStatePromise({\n loading: false,\n projectName: serverContentProject.title,\n });\n }\n } catch (err) {\n console.error(\"Could not load project data: \", err);\n return this.setStatePromise({ loading: false, hasError: true });\n }\n }\n\n async loadMasterData(): Promise {\n await this.setStatePromise({ loading: true });\n const url = `/deliverables/api/asset/${this.props.masterId}`;\n\n console.log(\"loadMasterData not implemented yet\");\n return this.setStatePromise({ loading: false, hasError: true });\n }\n\n /**\n * master load function that hands off to specific ones\n */\n async loadData() {\n if (this.props.masterId) {\n return this.loadMasterData();\n } else if (this.props.projectId) {\n return this.loadProjectData();\n } else if (this.props.commissionId) {\n return this.loadCommissionData();\n } else {\n console.error(\n \"Breadcrumb component has no master, project nor commission id.\"\n );\n }\n }\n\n componentDidUpdate(prevProps: Readonly, prevState: Readonly, snapshot?: any) {\n if(prevProps!=this.props) this.loadData();\n }\n\n componentDidMount() {\n this.loadData();\n }\n\n render() {\n if (this.state.hasError) {\n return (\n
\n

Could not load location data

\n
\n );\n } else {\n return (\n
\n {this.state.commissionName == \"\" ? null : (\n
\n \n {this.state.commissionName}\n {\n this.state.projectName==\"\" ? null : \n }\n
\n )}\n {this.state.projectName == \"\" ? null : (\n
\n \n {this.state.projectName}\n {\n this.state.masterName==\"\" ? null : \n }\n
\n )}\n {this.state.masterName == \"\" ? null : (\n
\n \n

{this.state.masterName}

\n
\n )}\n
\n );\n }\n }\n}\n\nexport { Breadcrumb };\n","import React, { useState } from \"react\";\nimport { Snackbar } from \"@material-ui/core\";\nimport MuiAlert, { AlertProps, Color } from \"@material-ui/lab/Alert\";\n\n/**\n * these values correspond to the material-ui palette labels, so are safe to use below with\n * `severity={SystemNotificationKind.toString() as Color}`\n */\nexport enum SystemNotifcationKind {\n Success = \"success\",\n Error = \"error\",\n Info = \"info\",\n Warning = \"warning\",\n}\n\ntype OpenFunc = (kind: SystemNotifcationKind, message: string) => void;\n\nlet openSystemNotification: OpenFunc; //allows us to access the `openSystemNotification` function from outside the component definition\n\nfunction Alert(props: AlertProps) {\n return ;\n}\n\nconst SystemNotification: React.FC<{}> & { open: OpenFunc } = () => {\n const autoHideDuration = 4000;\n\n const [open, setOpen] = useState(false);\n const [message, setMessage] = useState(\"\");\n const [kind, setKind] = useState(\n SystemNotifcationKind.Info\n );\n\n const close = () => {\n setOpen(false);\n };\n\n openSystemNotification = (kind: SystemNotifcationKind, message: string) => {\n setKind(kind);\n setMessage(message);\n setOpen(true);\n };\n\n return (\n \n {message}\n \n );\n};\n\nSystemNotification.open = (kind: SystemNotifcationKind, message: string) =>\n openSystemNotification(kind, message);\n\nexport { SystemNotification };\n","import React, { useEffect, useState } from \"react\";\nimport { red } from \"@material-ui/core/colors\";\n\ninterface OAuthContextData {\n clientId: string;\n resource: string;\n oAuthUri: string;\n tokenUri: string;\n redirectUri: string;\n}\n\nconst OAuthContext = React.createContext(\n undefined\n);\n\nconst OAuthContextProvider: React.FC<{\n children: React.ReactFragment;\n onError?: (desc: string) => void;\n}> = (props) => {\n const [clientId, setClientId] = useState(\"\");\n const [resource, setResource] = useState(\"\");\n const [oAuthUri, setOAuthUri] = useState(\"\");\n const [tokenUri, setTokenUri] = useState(\"\");\n const [haveData, setHaveData] = useState(false);\n\n const currentUri = new URL(window.location.href);\n const redirectUrl =\n currentUri.protocol + \"//\" + currentUri.host + \"/oauth2/callback\";\n\n const loadOauthData = async () => {\n const response = await fetch(\"/meta/oauth/config.json\");\n switch (response.status) {\n case 200:\n const content = await response.json();\n\n setClientId(content.clientId);\n setResource(content.resource);\n setOAuthUri(content.oAuthUri);\n setTokenUri(content.tokenUri);\n setHaveData(true);\n break;\n case 404:\n await response.text(); //consume body and discard it\n if (props.onError)\n props.onError(\n \"Metadata not found on server, please contact administrator\"\n ); //temporary until we have global snackbar\n break;\n default:\n await response.text(); //consume body and discard it\n if (props.onError)\n props.onError(\n `Server returned a ${response.status} error trying to access meetadata`\n );\n break;\n }\n };\n\n useEffect(() => {\n loadOauthData();\n }, []);\n\n return (\n \n {props.children}\n \n );\n};\n\nfunction makeLoginUrl(oAuthContext: OAuthContextData) {\n const args = {\n response_type: \"code\",\n client_id: oAuthContext.clientId,\n resource: oAuthContext.resource,\n redirect_uri: oAuthContext.redirectUri,\n state: \"/\",\n };\n\n const encoded = Object.entries(args).map(\n ([k, v]) => `${k}=${encodeURIComponent(v)}`\n );\n\n return oAuthContext.oAuthUri + \"?\" + encoded.join(\"&\");\n}\n\nexport type { OAuthContextData };\n\nexport {OAuthContext, OAuthContextProvider, makeLoginUrl};\n","import React from \"react\";\nimport { JwtDataShape } from \"../../utils/DecodedProfile\";\n\ninterface UserContext {\n profile?: JwtDataShape;\n updateProfile: (newValue?: JwtDataShape) => void;\n}\n\nconst UserContext = React.createContext({\n profile: undefined,\n updateProfile: (newValue) => {},\n});\n\nexport const UserContextProvider = UserContext.Provider;\nexport { UserContext };\n","import { createTheme } from \"@material-ui/core/styles\";\nimport {PaletteOptions} from \"@material-ui/core/styles/createPalette\";\n\nconst defaultPlutoTheme = (dark:boolean)=>{\n const palette = dark ? {\n type: \"dark\",\n background: {\n paper: \"#424242EA\",\n }\n } as PaletteOptions: {\n type: \"light\",\n background: {\n paper: \"#FBFBFBEA\",\n }\n } as PaletteOptions\n\n return createTheme({\n typography: {\n fontFamily:\n '\"Guardian Text Sans Web\",\"Helvetica Neue\",Helvetica,Arial,\"Lucida Grande\",sans-serif',\n },\n palette: palette,\n });\n}\n\nexport {defaultPlutoTheme};\n","import React, {useEffect, useState} from \"react\";\nimport {defaultPlutoTheme} from \"./DefaultPlutoTheme\";\nimport {ThemeProvider} from \"@material-ui/core\";\nimport CustomisingThemeContext from \"./CustomisingThemeContext\";\n\ninterface PlutoThemeProviderProps {\n userSettingsUrl?: string;\n userSettingsKey?: string;\n}\n\nconst PlutoThemeProvider:React.FC = (props) => {\n const [darkMode, setDarkmode] = useState(!(localStorage.getItem(\"pluto-dark-mode\") && localStorage.getItem(\"pluto-dark-mode\")==\"false\"));\n\n const updateDarkMode = (newValue:boolean)=>{\n localStorage.setItem(\"pluto-dark-mode\", newValue ? \"true\" : \"false\");\n setDarkmode(newValue);\n }\n\n return \n \n {\n props.children\n }\n \n \n}\n\nexport {PlutoThemeProvider};"],"names":["this","util_1","types_1","t.iface","OAuthConfigurationIF","createCheckers","OAuthConfigurationTI","Error","VError","GuardianLogo","IconCommission","Link","IconProject","IconMaster"],"mappings":"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"} \ No newline at end of file diff --git a/build/index.js b/build/index.js index c6c63bd..4491412 100644 --- a/build/index.js +++ b/build/index.js @@ -1313,7 +1313,7 @@ const useStyles = styles.makeStyles({ textOnGrey: { color: "black" }, - themeSwitcher: { + iconButton: { height: "36px", width: "36px", padding: "6px" @@ -1412,6 +1412,7 @@ const LoginComponent = (props) => { } }; const toggleThemeMode = () => themeContext.changeDarkMode(!themeContext.darkMode); + const openDocs = () => window.open("https://docs.google.com/document/d/1QG9mOu_HDBoGqQs7Dly0sxifk4w9vaJiDiWdi3Uk1a8", "_blank"); return (React__default['default'].createElement(core.Grid, { container: true, className: "login-block", direction: "row", spacing: 1, alignItems: "center", justifyContent: "flex-end" }, React__default['default'].createElement(core.Grid, { item: true }, React__default['default'].createElement(core.Grid, { container: true, spacing: 0, alignItems: "flex-start", justifyContent: "flex-end" }, @@ -1422,7 +1423,12 @@ const LoginComponent = (props) => { React__default['default'].createElement(core.Grid, { item: true }, React__default['default'].createElement(core.Typography, { className: "username" }, (_a = props.loginData.preferred_username) !== null && _a !== void 0 ? _a : props.loginData.username)))), React__default['default'].createElement(core.Grid, { item: true }, - React__default['default'].createElement(core.IconButton, { onClick: toggleThemeMode, className: classes.themeSwitcher }, themeContext.darkMode ? React__default['default'].createElement(icons.Brightness7, { style: { color: "rgba(0, 0, 0, 0.54)" } }) : React__default['default'].createElement(icons.Brightness4, null))), + React__default['default'].createElement(core.Tooltip, { title: "Switch dark/light theme" }, + React__default['default'].createElement(core.IconButton, { onClick: toggleThemeMode, className: classes.iconButton }, themeContext.darkMode ? React__default['default'].createElement(icons.Brightness7, { style: { color: "rgba(0, 0, 0, 0.54)" } }) : React__default['default'].createElement(icons.Brightness4, null)))), + React__default['default'].createElement(core.Grid, { item: true }, + React__default['default'].createElement(core.Tooltip, { title: "Open pluto guide" }, + React__default['default'].createElement(core.IconButton, { onClick: openDocs, className: classes.iconButton }, + React__default['default'].createElement(icons.HelpOutline, { style: { color: themeContext.darkMode ? "rgba(0,0,0,0.54)" : "inherit" } })))), refreshInProgress ? React__default['default'].createElement(core.Grid, { item: true, id: "refresh-in-progress" }, React__default['default'].createElement(core.Grid, { container: true, spacing: 0, alignItems: "flex-end", justifyContent: "flex-end" }, diff --git a/build/index.js.map b/build/index.js.map index cfed667..a01259f 100644 --- a/build/index.js.map +++ b/build/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sources":["../node_modules/tslib/tslib.es6.js","../node_modules/style-inject/dist/style-inject.es.js","../src/utils/DecodedProfile.ts","../src/utils/JwtHelpers.ts","../src/utils/AppLinks.ts","../src/components/MenuButton/MenuButton.tsx","../node_modules/ts-interface-checker/dist/util.js","../node_modules/ts-interface-checker/dist/types.js","../node_modules/ts-interface-checker/dist/index.js","../src/utils/OAuthConfiguration-ti.ts","../src/utils/OAuthConfiguration.ts","../src/utils/OAuth2Helper.ts","../src/components/Theme/CustomisingThemeContext.tsx","../src/components/AppSwitcher/LoginComponent.tsx","../src/components/AppSwitcher/AppSwitcher.tsx","../src/components/Header/Header.tsx","../src/utils/Interceptor.ts","../src/components/Breadcrumb/Breadcrumb.tsx","../src/components/SystemNotification/SystemNotification.tsx","../src/components/Context/OAuthContext.tsx","../src/components/Context/UserContext.tsx","../src/components/Theme/DefaultPlutoTheme.ts","../src/components/Theme/PlutoThemeProvider.tsx"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","import {fromUnixTime,addMinutes} from 'date-fns';\n\ninterface JwtDataShape {\n aud: string;\n iss: string;\n iat: number;\n iat_moment?: Date;\n exp: number;\n exp_moment?: Date;\n sub?: string;\n email?: string;\n first_name?: string;\n given_name?: string;\n family_name?: string;\n username?: string;\n preferred_username?: string;\n location?: string;\n job_title?: string;\n authmethod?: string;\n auth_time?: string;\n ver?: string;\n appid?: string;\n}\n\nfunction utcTime(from: number) {\n //see https://stackoverflow.com/a/61469549. `fromUnixTime` gives us a local time, but we want UTC.\n const date = fromUnixTime(from);\n return addMinutes(date, date.getTimezoneOffset());\n}\n\nfunction JwtData(jwtData: object) {\n return new Proxy(jwtData, {\n get(target, prop) {\n switch (prop) {\n case \"iat_moment\":\n return utcTime(target.iat);\n case \"exp_moment\":\n return utcTime(target.exp);\n case \"username\":\n return target.preferred_username ?? target.username;\n case \"first_name\":\n return target.first_name ?? target.given_name;\n default:\n return (target)[prop] ?? null;\n }\n },\n });\n}\n\nexport type { JwtDataShape };\nexport { JwtData };\n","import jwt, {JwtPayload} from \"jsonwebtoken\";\nimport {JwtData, JwtDataShape} from \"./DecodedProfile\";\n\n/**\n * perform the validation of the token via jsonwebtoken library.\n * if validation fails then the returned promise is rejected\n * if validation succeeds, then the promise only completes once the decoded content has been set into the state.\n * @returns {Promise} Decoded JWT content or rejects with an error\n */\nfunction verifyJwt(token: string, signingKey: string, refreshToken?: string) {\n return new Promise((resolve, reject) => {\n jwt.verify(token, signingKey, (err, decoded) => {\n if (err) {\n console.log(\"token: \", token);\n console.log(\"signingKey: \", signingKey);\n console.error(\"could not verify JWT: \", err);\n reject(err);\n }\n\n window.localStorage.setItem(\"pluto:access-token\", token); //it validates so save the token\n if (refreshToken)\n window.localStorage.setItem(\"pluto:refresh-token\", refreshToken);\n resolve(decoded);\n });\n });\n}\n\n/**\n * perform the validation of the token via jsonwebtoken library.\n * if validation fails then the returned promise is rejected\n * if validation succeeds, then the promise only completes once the decoded content has been set into the state.\n * @returns {Promise} Decoded JWT content or rejects with an error\n */\nfunction validateAndDecode(token:string, signingKey:string, refreshToken?:string):Promise {\n return new Promise((resolve, reject) => {\n jwt.verify(token, signingKey, (err, decoded) => {\n if (err) {\n console.log(\"token: \", token);\n console.log(\"signingKey: \", signingKey);\n console.error(\"could not verify JWT: \", err);\n reject(err);\n }\n\n window.localStorage.setItem(\"pluto:access-token\", token); //it validates so save the token\n if (refreshToken)\n window.localStorage.setItem(\"pluto:refresh-token\", refreshToken);\n resolve(decoded);\n });\n });\n}\n\n/**\n * gets the signing key from the server\n * @returns {Promise} Raw content of the signing key in PEM format\n */\nasync function loadInSigningKey() {\n const result = await fetch(\"/meta/oauth/publickey.pem\");\n switch (result.status) {\n case 200:\n return result.text();\n default:\n console.error(\n \"could not retrieve signing key, server gave us \",\n result.status\n );\n throw \"Could not retrieve signing key\";\n }\n}\n\n/**\n * returns the raw JWT for passing to backend services\n * @returns {string} the JWT, or null if it is not set.\n */\nfunction getRawToken() {\n return window.localStorage.getItem(\"pluto:access-token\");\n}\n\n/**\n * helper function that validates and decodes into a user profile a token already existing in the localstorage\n */\nasync function verifyExistingLogin(): Promise {\n const token = getRawToken();\n if (token) {\n const signingKey = await loadInSigningKey();\n const jwtPayload = await verifyJwt(token, signingKey);\n return jwtPayload ? JwtData(jwtPayload) : undefined;\n }\n}\n\n\n\nexport { validateAndDecode, loadInSigningKey, getRawToken, verifyJwt, verifyExistingLogin };\n","export const hrefIsTheSameDeploymentRootPath = (href: string): boolean => {\n let deployment = \"\";\n try {\n deployment = deploymentRootPath;\n } catch {\n deployment = \"\";\n }\n\n if (!deployment) {\n return false;\n }\n\n return href !== \"/\" && href.includes(deployment);\n};\n\nexport const getDeploymentRootPathLink = (href: string): string => {\n const link = href.split(deploymentRootPath)[1];\n\n return link.startsWith(\"/\") ? link : `/${link}`;\n};\n","import React, { useState } from \"react\";\nimport { Link } from \"react-router-dom\";\nimport ArrowDropDownIcon from \"@material-ui/icons/ArrowDropDown\";\nimport { Menu, MenuItem } from \"@material-ui/core\";\nimport {\n hrefIsTheSameDeploymentRootPath,\n getDeploymentRootPathLink,\n} from \"../../utils/AppLinks\";\nimport \"./MenuButton.css\";\n\ninterface MenuButtonProps {\n isAdmin: boolean;\n index: number;\n text: string;\n adminOnly: boolean | undefined;\n content: BaseMenuSettings[] | undefined;\n}\n\nexport const MenuButton: React.FC = (props) => {\n const { index, isAdmin, text, adminOnly, content } = props;\n const [anchorEl, setAnchorEl] = useState(null);\n\n const openSubmenu = (event: React.MouseEvent) => {\n setAnchorEl(event.currentTarget);\n };\n\n const closeMenu = () => {\n setAnchorEl(null);\n };\n\n return (\n \n \n {text}\n \n \n \n {(content || []).map(({ type, text, href, adminOnly }, index) => {\n if (type === \"submenu\") {\n console.error(\n \"You have provided a submenu inside a submenu, nested submenus are not supported!\"\n );\n return;\n }\n\n if (hrefIsTheSameDeploymentRootPath(href)) {\n return (\n {\n closeMenu();\n }}\n >\n {text}\n \n );\n }\n\n return (\n {\n closeMenu();\n window.location.assign(href);\n }}\n >\n {text}\n \n );\n })}\n \n \n );\n};\n","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DetailContext = exports.NoopContext = exports.VError = void 0;\n/**\n * Error thrown by validation. Besides an informative message, it includes the path to the\n * property which triggered the failure.\n */\nvar VError = /** @class */ (function (_super) {\n __extends(VError, _super);\n function VError(path, message) {\n var _this = _super.call(this, message) || this;\n _this.path = path;\n // See https://github.com/Microsoft/TypeScript/wiki/Breaking-Changes#extending-built-ins-like-error-array-and-map-may-no-longer-work for info about this workaround.\n Object.setPrototypeOf(_this, VError.prototype);\n return _this;\n }\n return VError;\n}(Error));\nexports.VError = VError;\n/**\n * Fast implementation of IContext used for first-pass validation. If that fails, we can validate\n * using DetailContext to collect error messages. That's faster for the common case when messages\n * normally pass validation.\n */\nvar NoopContext = /** @class */ (function () {\n function NoopContext() {\n }\n NoopContext.prototype.fail = function (relPath, message, score) {\n return false;\n };\n NoopContext.prototype.unionResolver = function () { return this; };\n NoopContext.prototype.createContext = function () { return this; };\n NoopContext.prototype.resolveUnion = function (ur) { };\n return NoopContext;\n}());\nexports.NoopContext = NoopContext;\n/**\n * Complete implementation of IContext that collects meaningfull errors.\n */\nvar DetailContext = /** @class */ (function () {\n function DetailContext() {\n // Stack of property names and associated messages for reporting helpful error messages.\n this._propNames = [\"\"];\n this._messages = [null];\n // Score is used to choose the best union member whose DetailContext to use for reporting.\n // Higher score means better match (or rather less severe mismatch).\n this._score = 0;\n }\n DetailContext.prototype.fail = function (relPath, message, score) {\n this._propNames.push(relPath);\n this._messages.push(message);\n this._score += score;\n return false;\n };\n DetailContext.prototype.unionResolver = function () {\n return new DetailUnionResolver();\n };\n DetailContext.prototype.resolveUnion = function (unionResolver) {\n var _a, _b;\n var u = unionResolver;\n var best = null;\n for (var _i = 0, _c = u.contexts; _i < _c.length; _i++) {\n var ctx = _c[_i];\n if (!best || ctx._score >= best._score) {\n best = ctx;\n }\n }\n if (best && best._score > 0) {\n (_a = this._propNames).push.apply(_a, best._propNames);\n (_b = this._messages).push.apply(_b, best._messages);\n }\n };\n DetailContext.prototype.getError = function (path) {\n var msgParts = [];\n for (var i = this._propNames.length - 1; i >= 0; i--) {\n var p = this._propNames[i];\n path += (typeof p === \"number\") ? \"[\" + p + \"]\" : (p ? \".\" + p : \"\");\n var m = this._messages[i];\n if (m) {\n msgParts.push(path + \" \" + m);\n }\n }\n return new VError(path, msgParts.join(\"; \"));\n };\n DetailContext.prototype.getErrorDetail = function (path) {\n var details = [];\n for (var i = this._propNames.length - 1; i >= 0; i--) {\n var p = this._propNames[i];\n path += (typeof p === \"number\") ? \"[\" + p + \"]\" : (p ? \".\" + p : \"\");\n var message = this._messages[i];\n if (message) {\n details.push({ path: path, message: message });\n }\n }\n var detail = null;\n for (var i = details.length - 1; i >= 0; i--) {\n if (detail) {\n details[i].nested = [detail];\n }\n detail = details[i];\n }\n return detail;\n };\n return DetailContext;\n}());\nexports.DetailContext = DetailContext;\nvar DetailUnionResolver = /** @class */ (function () {\n function DetailUnionResolver() {\n this.contexts = [];\n }\n DetailUnionResolver.prototype.createContext = function () {\n var ctx = new DetailContext();\n this.contexts.push(ctx);\n return ctx;\n };\n return DetailUnionResolver;\n}());\n","\"use strict\";\n/**\n * This module defines nodes used to define types and validations for objects and interfaces.\n */\n// tslint:disable:no-shadowed-variable prefer-for-of\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.basicTypes = exports.BasicType = exports.TParamList = exports.TParam = exports.param = exports.TFunc = exports.func = exports.TProp = exports.TOptional = exports.opt = exports.TIface = exports.iface = exports.TEnumLiteral = exports.enumlit = exports.TEnumType = exports.enumtype = exports.TIntersection = exports.intersection = exports.TUnion = exports.union = exports.TTuple = exports.tuple = exports.TArray = exports.array = exports.TLiteral = exports.lit = exports.TName = exports.name = exports.TType = void 0;\nvar util_1 = require(\"./util\");\n/** Node that represents a type. */\nvar TType = /** @class */ (function () {\n function TType() {\n }\n return TType;\n}());\nexports.TType = TType;\n/** Parses a type spec into a TType node. */\nfunction parseSpec(typeSpec) {\n return typeof typeSpec === \"string\" ? name(typeSpec) : typeSpec;\n}\nfunction getNamedType(suite, name) {\n var ttype = suite[name];\n if (!ttype) {\n throw new Error(\"Unknown type \" + name);\n }\n return ttype;\n}\n/**\n * Defines a type name, either built-in, or defined in this suite. It can typically be included in\n * the specs as just a plain string.\n */\nfunction name(value) { return new TName(value); }\nexports.name = name;\nvar TName = /** @class */ (function (_super) {\n __extends(TName, _super);\n function TName(name) {\n var _this = _super.call(this) || this;\n _this.name = name;\n _this._failMsg = \"is not a \" + name;\n return _this;\n }\n TName.prototype.getChecker = function (suite, strict, allowedProps) {\n var _this = this;\n var ttype = getNamedType(suite, this.name);\n var checker = ttype.getChecker(suite, strict, allowedProps);\n if (ttype instanceof BasicType || ttype instanceof TName) {\n return checker;\n }\n // For complex types, add an additional \"is not a \" message on failure.\n return function (value, ctx) { return checker(value, ctx) ? true : ctx.fail(null, _this._failMsg, 0); };\n };\n return TName;\n}(TType));\nexports.TName = TName;\n/**\n * Defines a literal value, e.g. lit('hello') or lit(123).\n */\nfunction lit(value) { return new TLiteral(value); }\nexports.lit = lit;\nvar TLiteral = /** @class */ (function (_super) {\n __extends(TLiteral, _super);\n function TLiteral(value) {\n var _this = _super.call(this) || this;\n _this.value = value;\n _this.name = JSON.stringify(value);\n _this._failMsg = \"is not \" + _this.name;\n return _this;\n }\n TLiteral.prototype.getChecker = function (suite, strict) {\n var _this = this;\n return function (value, ctx) { return (value === _this.value) ? true : ctx.fail(null, _this._failMsg, -1); };\n };\n return TLiteral;\n}(TType));\nexports.TLiteral = TLiteral;\n/**\n * Defines an array type, e.g. array('number').\n */\nfunction array(typeSpec) { return new TArray(parseSpec(typeSpec)); }\nexports.array = array;\nvar TArray = /** @class */ (function (_super) {\n __extends(TArray, _super);\n function TArray(ttype) {\n var _this = _super.call(this) || this;\n _this.ttype = ttype;\n return _this;\n }\n TArray.prototype.getChecker = function (suite, strict) {\n var itemChecker = this.ttype.getChecker(suite, strict);\n return function (value, ctx) {\n if (!Array.isArray(value)) {\n return ctx.fail(null, \"is not an array\", 0);\n }\n for (var i = 0; i < value.length; i++) {\n var ok = itemChecker(value[i], ctx);\n if (!ok) {\n return ctx.fail(i, null, 1);\n }\n }\n return true;\n };\n };\n return TArray;\n}(TType));\nexports.TArray = TArray;\n/**\n * Defines a tuple type, e.g. tuple('string', 'number').\n */\nfunction tuple() {\n var typeSpec = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n typeSpec[_i] = arguments[_i];\n }\n return new TTuple(typeSpec.map(function (t) { return parseSpec(t); }));\n}\nexports.tuple = tuple;\nvar TTuple = /** @class */ (function (_super) {\n __extends(TTuple, _super);\n function TTuple(ttypes) {\n var _this = _super.call(this) || this;\n _this.ttypes = ttypes;\n return _this;\n }\n TTuple.prototype.getChecker = function (suite, strict) {\n var itemCheckers = this.ttypes.map(function (t) { return t.getChecker(suite, strict); });\n var checker = function (value, ctx) {\n if (!Array.isArray(value)) {\n return ctx.fail(null, \"is not an array\", 0);\n }\n for (var i = 0; i < itemCheckers.length; i++) {\n var ok = itemCheckers[i](value[i], ctx);\n if (!ok) {\n return ctx.fail(i, null, 1);\n }\n }\n return true;\n };\n if (!strict) {\n return checker;\n }\n return function (value, ctx) {\n if (!checker(value, ctx)) {\n return false;\n }\n return value.length <= itemCheckers.length ? true :\n ctx.fail(itemCheckers.length, \"is extraneous\", 2);\n };\n };\n return TTuple;\n}(TType));\nexports.TTuple = TTuple;\n/**\n * Defines a union type, e.g. union('number', 'null').\n */\nfunction union() {\n var typeSpec = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n typeSpec[_i] = arguments[_i];\n }\n return new TUnion(typeSpec.map(function (t) { return parseSpec(t); }));\n}\nexports.union = union;\nvar TUnion = /** @class */ (function (_super) {\n __extends(TUnion, _super);\n function TUnion(ttypes) {\n var _this = _super.call(this) || this;\n _this.ttypes = ttypes;\n var names = ttypes.map(function (t) { return t instanceof TName || t instanceof TLiteral ? t.name : null; })\n .filter(function (n) { return n; });\n var otherTypes = ttypes.length - names.length;\n if (names.length) {\n if (otherTypes > 0) {\n names.push(otherTypes + \" more\");\n }\n _this._failMsg = \"is none of \" + names.join(\", \");\n }\n else {\n _this._failMsg = \"is none of \" + otherTypes + \" types\";\n }\n return _this;\n }\n TUnion.prototype.getChecker = function (suite, strict) {\n var _this = this;\n var itemCheckers = this.ttypes.map(function (t) { return t.getChecker(suite, strict); });\n return function (value, ctx) {\n var ur = ctx.unionResolver();\n for (var i = 0; i < itemCheckers.length; i++) {\n var ok = itemCheckers[i](value, ur.createContext());\n if (ok) {\n return true;\n }\n }\n ctx.resolveUnion(ur);\n return ctx.fail(null, _this._failMsg, 0);\n };\n };\n return TUnion;\n}(TType));\nexports.TUnion = TUnion;\n/**\n * Defines an intersection type, e.g. intersection('number', 'null').\n */\nfunction intersection() {\n var typeSpec = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n typeSpec[_i] = arguments[_i];\n }\n return new TIntersection(typeSpec.map(function (t) { return parseSpec(t); }));\n}\nexports.intersection = intersection;\nvar TIntersection = /** @class */ (function (_super) {\n __extends(TIntersection, _super);\n function TIntersection(ttypes) {\n var _this = _super.call(this) || this;\n _this.ttypes = ttypes;\n return _this;\n }\n TIntersection.prototype.getChecker = function (suite, strict) {\n var allowedProps = new Set();\n var itemCheckers = this.ttypes.map(function (t) { return t.getChecker(suite, strict, allowedProps); });\n return function (value, ctx) {\n var ok = itemCheckers.every(function (checker) { return checker(value, ctx); });\n if (ok) {\n return true;\n }\n return ctx.fail(null, null, 0);\n };\n };\n return TIntersection;\n}(TType));\nexports.TIntersection = TIntersection;\n/**\n * Defines an enum type, e.g. enum({'A': 1, 'B': 2}).\n */\nfunction enumtype(values) {\n return new TEnumType(values);\n}\nexports.enumtype = enumtype;\nvar TEnumType = /** @class */ (function (_super) {\n __extends(TEnumType, _super);\n function TEnumType(members) {\n var _this = _super.call(this) || this;\n _this.members = members;\n _this.validValues = new Set();\n _this._failMsg = \"is not a valid enum value\";\n _this.validValues = new Set(Object.keys(members).map(function (name) { return members[name]; }));\n return _this;\n }\n TEnumType.prototype.getChecker = function (suite, strict) {\n var _this = this;\n return function (value, ctx) {\n return (_this.validValues.has(value) ? true : ctx.fail(null, _this._failMsg, 0));\n };\n };\n return TEnumType;\n}(TType));\nexports.TEnumType = TEnumType;\n/**\n * Defines a literal enum value, such as Direction.Up, specified as enumlit(\"Direction\", \"Up\").\n */\nfunction enumlit(name, prop) {\n return new TEnumLiteral(name, prop);\n}\nexports.enumlit = enumlit;\nvar TEnumLiteral = /** @class */ (function (_super) {\n __extends(TEnumLiteral, _super);\n function TEnumLiteral(enumName, prop) {\n var _this = _super.call(this) || this;\n _this.enumName = enumName;\n _this.prop = prop;\n _this._failMsg = \"is not \" + enumName + \".\" + prop;\n return _this;\n }\n TEnumLiteral.prototype.getChecker = function (suite, strict) {\n var _this = this;\n var ttype = getNamedType(suite, this.enumName);\n if (!(ttype instanceof TEnumType)) {\n throw new Error(\"Type \" + this.enumName + \" used in enumlit is not an enum type\");\n }\n var val = ttype.members[this.prop];\n if (!ttype.members.hasOwnProperty(this.prop)) {\n throw new Error(\"Unknown value \" + this.enumName + \".\" + this.prop + \" used in enumlit\");\n }\n return function (value, ctx) { return (value === val) ? true : ctx.fail(null, _this._failMsg, -1); };\n };\n return TEnumLiteral;\n}(TType));\nexports.TEnumLiteral = TEnumLiteral;\nfunction makeIfaceProps(props) {\n return Object.keys(props).map(function (name) { return makeIfaceProp(name, props[name]); });\n}\nfunction makeIfaceProp(name, prop) {\n return prop instanceof TOptional ?\n new TProp(name, prop.ttype, true) :\n new TProp(name, parseSpec(prop), false);\n}\n/**\n * Defines an interface. The first argument is an array of interfaces that it extends, and the\n * second is an array of properties.\n */\nfunction iface(bases, props) {\n return new TIface(bases, makeIfaceProps(props));\n}\nexports.iface = iface;\nvar TIface = /** @class */ (function (_super) {\n __extends(TIface, _super);\n function TIface(bases, props) {\n var _this = _super.call(this) || this;\n _this.bases = bases;\n _this.props = props;\n _this.propSet = new Set(props.map(function (p) { return p.name; }));\n return _this;\n }\n TIface.prototype.getChecker = function (suite, strict, allowedProps) {\n var _this = this;\n var baseCheckers = this.bases.map(function (b) { return getNamedType(suite, b).getChecker(suite, strict); });\n var propCheckers = this.props.map(function (prop) { return prop.ttype.getChecker(suite, strict); });\n var testCtx = new util_1.NoopContext();\n // Consider a prop required if it's not optional AND does not allow for undefined as a value.\n var isPropRequired = this.props.map(function (prop, i) {\n return !prop.isOpt && !propCheckers[i](undefined, testCtx);\n });\n var checker = function (value, ctx) {\n if (typeof value !== \"object\" || value === null) {\n return ctx.fail(null, \"is not an object\", 0);\n }\n for (var i = 0; i < baseCheckers.length; i++) {\n if (!baseCheckers[i](value, ctx)) {\n return false;\n }\n }\n for (var i = 0; i < propCheckers.length; i++) {\n var name_1 = _this.props[i].name;\n var v = value[name_1];\n if (v === undefined) {\n if (isPropRequired[i]) {\n return ctx.fail(name_1, \"is missing\", 1);\n }\n }\n else {\n var ok = propCheckers[i](v, ctx);\n if (!ok) {\n return ctx.fail(name_1, null, 1);\n }\n }\n }\n return true;\n };\n if (!strict) {\n return checker;\n }\n var propSet = this.propSet;\n if (allowedProps) {\n this.propSet.forEach(function (prop) { return allowedProps.add(prop); });\n propSet = allowedProps;\n }\n // In strict mode, check also for unknown enumerable properties.\n return function (value, ctx) {\n if (!checker(value, ctx)) {\n return false;\n }\n for (var prop in value) {\n if (!propSet.has(prop)) {\n return ctx.fail(prop, \"is extraneous\", 2);\n }\n }\n return true;\n };\n };\n return TIface;\n}(TType));\nexports.TIface = TIface;\n/**\n * Defines an optional property on an interface.\n */\nfunction opt(typeSpec) { return new TOptional(parseSpec(typeSpec)); }\nexports.opt = opt;\nvar TOptional = /** @class */ (function (_super) {\n __extends(TOptional, _super);\n function TOptional(ttype) {\n var _this = _super.call(this) || this;\n _this.ttype = ttype;\n return _this;\n }\n TOptional.prototype.getChecker = function (suite, strict) {\n var itemChecker = this.ttype.getChecker(suite, strict);\n return function (value, ctx) {\n return value === undefined || itemChecker(value, ctx);\n };\n };\n return TOptional;\n}(TType));\nexports.TOptional = TOptional;\n/**\n * Defines a property in an interface.\n */\nvar TProp = /** @class */ (function () {\n function TProp(name, ttype, isOpt) {\n this.name = name;\n this.ttype = ttype;\n this.isOpt = isOpt;\n }\n return TProp;\n}());\nexports.TProp = TProp;\n/**\n * Defines a function. The first argument declares the function's return type, the rest declare\n * its parameters.\n */\nfunction func(resultSpec) {\n var params = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n params[_i - 1] = arguments[_i];\n }\n return new TFunc(new TParamList(params), parseSpec(resultSpec));\n}\nexports.func = func;\nvar TFunc = /** @class */ (function (_super) {\n __extends(TFunc, _super);\n function TFunc(paramList, result) {\n var _this = _super.call(this) || this;\n _this.paramList = paramList;\n _this.result = result;\n return _this;\n }\n TFunc.prototype.getChecker = function (suite, strict) {\n return function (value, ctx) {\n return typeof value === \"function\" ? true : ctx.fail(null, \"is not a function\", 0);\n };\n };\n return TFunc;\n}(TType));\nexports.TFunc = TFunc;\n/**\n * Defines a function parameter.\n */\nfunction param(name, typeSpec, isOpt) {\n return new TParam(name, parseSpec(typeSpec), Boolean(isOpt));\n}\nexports.param = param;\nvar TParam = /** @class */ (function () {\n function TParam(name, ttype, isOpt) {\n this.name = name;\n this.ttype = ttype;\n this.isOpt = isOpt;\n }\n return TParam;\n}());\nexports.TParam = TParam;\n/**\n * Defines a function parameter list.\n */\nvar TParamList = /** @class */ (function (_super) {\n __extends(TParamList, _super);\n function TParamList(params) {\n var _this = _super.call(this) || this;\n _this.params = params;\n return _this;\n }\n TParamList.prototype.getChecker = function (suite, strict) {\n var _this = this;\n var itemCheckers = this.params.map(function (t) { return t.ttype.getChecker(suite, strict); });\n var testCtx = new util_1.NoopContext();\n var isParamRequired = this.params.map(function (param, i) {\n return !param.isOpt && !itemCheckers[i](undefined, testCtx);\n });\n var checker = function (value, ctx) {\n if (!Array.isArray(value)) {\n return ctx.fail(null, \"is not an array\", 0);\n }\n for (var i = 0; i < itemCheckers.length; i++) {\n var p = _this.params[i];\n if (value[i] === undefined) {\n if (isParamRequired[i]) {\n return ctx.fail(p.name, \"is missing\", 1);\n }\n }\n else {\n var ok = itemCheckers[i](value[i], ctx);\n if (!ok) {\n return ctx.fail(p.name, null, 1);\n }\n }\n }\n return true;\n };\n if (!strict) {\n return checker;\n }\n return function (value, ctx) {\n if (!checker(value, ctx)) {\n return false;\n }\n return value.length <= itemCheckers.length ? true :\n ctx.fail(itemCheckers.length, \"is extraneous\", 2);\n };\n };\n return TParamList;\n}(TType));\nexports.TParamList = TParamList;\n/**\n * Single TType implementation for all basic built-in types.\n */\nvar BasicType = /** @class */ (function (_super) {\n __extends(BasicType, _super);\n function BasicType(validator, message) {\n var _this = _super.call(this) || this;\n _this.validator = validator;\n _this.message = message;\n return _this;\n }\n BasicType.prototype.getChecker = function (suite, strict) {\n var _this = this;\n return function (value, ctx) { return _this.validator(value) ? true : ctx.fail(null, _this.message, 0); };\n };\n return BasicType;\n}(TType));\nexports.BasicType = BasicType;\n/**\n * Defines the suite of basic types.\n */\nexports.basicTypes = {\n any: new BasicType(function (v) { return true; }, \"is invalid\"),\n number: new BasicType(function (v) { return (typeof v === \"number\"); }, \"is not a number\"),\n object: new BasicType(function (v) { return (typeof v === \"object\" && v); }, \"is not an object\"),\n boolean: new BasicType(function (v) { return (typeof v === \"boolean\"); }, \"is not a boolean\"),\n string: new BasicType(function (v) { return (typeof v === \"string\"); }, \"is not a string\"),\n symbol: new BasicType(function (v) { return (typeof v === \"symbol\"); }, \"is not a symbol\"),\n void: new BasicType(function (v) { return (v == null); }, \"is not void\"),\n undefined: new BasicType(function (v) { return (v === undefined); }, \"is not undefined\"),\n null: new BasicType(function (v) { return (v === null); }, \"is not null\"),\n never: new BasicType(function (v) { return false; }, \"is unexpected\"),\n Date: new BasicType(getIsNativeChecker(\"[object Date]\"), \"is not a Date\"),\n RegExp: new BasicType(getIsNativeChecker(\"[object RegExp]\"), \"is not a RegExp\"),\n};\n// This approach for checking native object types mirrors that of lodash. Its advantage over\n// `isinstance` is that it can still return true for native objects created in different JS\n// execution environments.\nvar nativeToString = Object.prototype.toString;\nfunction getIsNativeChecker(tag) {\n return function (v) { return typeof v === \"object\" && v && nativeToString.call(v) === tag; };\n}\nif (typeof Buffer !== \"undefined\") {\n exports.basicTypes.Buffer = new BasicType(function (v) { return Buffer.isBuffer(v); }, \"is not a Buffer\");\n}\nvar _loop_1 = function (array_1) {\n exports.basicTypes[array_1.name] = new BasicType(function (v) { return (v instanceof array_1); }, \"is not a \" + array_1.name);\n};\n// Support typed arrays of various flavors\nfor (var _i = 0, _a = [Int8Array, Uint8Array, Uint8ClampedArray, Int16Array, Uint16Array,\n Int32Array, Uint32Array, Float32Array, Float64Array, ArrayBuffer]; _i < _a.length; _i++) {\n var array_1 = _a[_i];\n _loop_1(array_1);\n}\n","\"use strict\";\nvar __spreadArrays = (this && this.__spreadArrays) || function () {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Checker = exports.createCheckers = void 0;\nvar types_1 = require(\"./types\");\nvar util_1 = require(\"./util\");\n/**\n * Export functions used to define interfaces.\n */\nvar types_2 = require(\"./types\");\nObject.defineProperty(exports, \"TArray\", { enumerable: true, get: function () { return types_2.TArray; } });\nObject.defineProperty(exports, \"TEnumType\", { enumerable: true, get: function () { return types_2.TEnumType; } });\nObject.defineProperty(exports, \"TEnumLiteral\", { enumerable: true, get: function () { return types_2.TEnumLiteral; } });\nObject.defineProperty(exports, \"TFunc\", { enumerable: true, get: function () { return types_2.TFunc; } });\nObject.defineProperty(exports, \"TIface\", { enumerable: true, get: function () { return types_2.TIface; } });\nObject.defineProperty(exports, \"TLiteral\", { enumerable: true, get: function () { return types_2.TLiteral; } });\nObject.defineProperty(exports, \"TName\", { enumerable: true, get: function () { return types_2.TName; } });\nObject.defineProperty(exports, \"TOptional\", { enumerable: true, get: function () { return types_2.TOptional; } });\nObject.defineProperty(exports, \"TParam\", { enumerable: true, get: function () { return types_2.TParam; } });\nObject.defineProperty(exports, \"TParamList\", { enumerable: true, get: function () { return types_2.TParamList; } });\nObject.defineProperty(exports, \"TProp\", { enumerable: true, get: function () { return types_2.TProp; } });\nObject.defineProperty(exports, \"TTuple\", { enumerable: true, get: function () { return types_2.TTuple; } });\nObject.defineProperty(exports, \"TType\", { enumerable: true, get: function () { return types_2.TType; } });\nObject.defineProperty(exports, \"TUnion\", { enumerable: true, get: function () { return types_2.TUnion; } });\nObject.defineProperty(exports, \"TIntersection\", { enumerable: true, get: function () { return types_2.TIntersection; } });\nObject.defineProperty(exports, \"array\", { enumerable: true, get: function () { return types_2.array; } });\nObject.defineProperty(exports, \"enumlit\", { enumerable: true, get: function () { return types_2.enumlit; } });\nObject.defineProperty(exports, \"enumtype\", { enumerable: true, get: function () { return types_2.enumtype; } });\nObject.defineProperty(exports, \"func\", { enumerable: true, get: function () { return types_2.func; } });\nObject.defineProperty(exports, \"iface\", { enumerable: true, get: function () { return types_2.iface; } });\nObject.defineProperty(exports, \"lit\", { enumerable: true, get: function () { return types_2.lit; } });\nObject.defineProperty(exports, \"name\", { enumerable: true, get: function () { return types_2.name; } });\nObject.defineProperty(exports, \"opt\", { enumerable: true, get: function () { return types_2.opt; } });\nObject.defineProperty(exports, \"param\", { enumerable: true, get: function () { return types_2.param; } });\nObject.defineProperty(exports, \"tuple\", { enumerable: true, get: function () { return types_2.tuple; } });\nObject.defineProperty(exports, \"union\", { enumerable: true, get: function () { return types_2.union; } });\nObject.defineProperty(exports, \"intersection\", { enumerable: true, get: function () { return types_2.intersection; } });\nObject.defineProperty(exports, \"BasicType\", { enumerable: true, get: function () { return types_2.BasicType; } });\nvar util_2 = require(\"./util\");\nObject.defineProperty(exports, \"VError\", { enumerable: true, get: function () { return util_2.VError; } });\n/**\n * Takes one of more type suites (e.g. a module generated by `ts-interface-builder`), and combines\n * them into a suite of interface checkers. If a type is used by name, that name should be present\n * among the passed-in type suites.\n *\n * The returned object maps type names to Checker objects.\n */\nfunction createCheckers() {\n var typeSuite = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n typeSuite[_i] = arguments[_i];\n }\n var fullSuite = Object.assign.apply(Object, __spreadArrays([{}, types_1.basicTypes], typeSuite));\n var checkers = {};\n for (var _a = 0, typeSuite_1 = typeSuite; _a < typeSuite_1.length; _a++) {\n var suite_1 = typeSuite_1[_a];\n for (var _b = 0, _c = Object.keys(suite_1); _b < _c.length; _b++) {\n var name = _c[_b];\n checkers[name] = new Checker(fullSuite, suite_1[name]);\n }\n }\n return checkers;\n}\nexports.createCheckers = createCheckers;\n/**\n * Checker implements validation of objects, and also includes accessors to validate method calls.\n * Checkers should be created using `createCheckers()`.\n */\nvar Checker = /** @class */ (function () {\n // Create checkers by using `createCheckers()` function.\n function Checker(suite, ttype, _path) {\n if (_path === void 0) { _path = 'value'; }\n this.suite = suite;\n this.ttype = ttype;\n this._path = _path;\n this.props = new Map();\n if (ttype instanceof types_1.TIface) {\n for (var _i = 0, _a = ttype.props; _i < _a.length; _i++) {\n var p = _a[_i];\n this.props.set(p.name, p.ttype);\n }\n }\n this.checkerPlain = this.ttype.getChecker(suite, false);\n this.checkerStrict = this.ttype.getChecker(suite, true);\n }\n /**\n * Set the path to report in errors, instead of the default \"value\". (E.g. if the Checker is for\n * a \"person\" interface, set path to \"person\" to report e.g. \"person.name is not a string\".)\n */\n Checker.prototype.setReportedPath = function (path) {\n this._path = path;\n };\n /**\n * Check that the given value satisfies this checker's type, or throw Error.\n */\n Checker.prototype.check = function (value) { return this._doCheck(this.checkerPlain, value); };\n /**\n * A fast check for whether or not the given value satisfies this Checker's type. This returns\n * true or false, does not produce an error message, and is fast both on success and on failure.\n */\n Checker.prototype.test = function (value) {\n return this.checkerPlain(value, new util_1.NoopContext());\n };\n /**\n * Returns an error object describing the errors if the given value does not satisfy this\n * Checker's type, or null if it does.\n */\n Checker.prototype.validate = function (value) {\n return this._doValidate(this.checkerPlain, value);\n };\n /**\n * Check that the given value satisfies this checker's type strictly. This checks that objects\n * and tuples have no extra members. Note that this prevents backward compatibility, so usually\n * a plain check() is more appropriate.\n */\n Checker.prototype.strictCheck = function (value) { return this._doCheck(this.checkerStrict, value); };\n /**\n * A fast strict check for whether or not the given value satisfies this Checker's type. Returns\n * true or false, does not produce an error message, and is fast both on success and on failure.\n */\n Checker.prototype.strictTest = function (value) {\n return this.checkerStrict(value, new util_1.NoopContext());\n };\n /**\n * Returns an error object describing the errors if the given value does not satisfy this\n * Checker's type strictly, or null if it does.\n */\n Checker.prototype.strictValidate = function (value) {\n return this._doValidate(this.checkerStrict, value);\n };\n /**\n * If this checker is for an interface, returns a Checker for the type required for the given\n * property of this interface.\n */\n Checker.prototype.getProp = function (prop) {\n var ttype = this.props.get(prop);\n if (!ttype) {\n throw new Error(\"Type has no property \" + prop);\n }\n return new Checker(this.suite, ttype, this._path + \".\" + prop);\n };\n /**\n * If this checker is for an interface, returns a Checker for the argument-list required to call\n * the given method of this interface. E.g. if this Checker is for the interface:\n * interface Foo {\n * find(s: string, pos?: number): number;\n * }\n * Then methodArgs(\"find\").check(...) will succeed for [\"foo\"] and [\"foo\", 3], but not for [17].\n */\n Checker.prototype.methodArgs = function (methodName) {\n var tfunc = this._getMethod(methodName);\n return new Checker(this.suite, tfunc.paramList);\n };\n /**\n * If this checker is for an interface, returns a Checker for the return value of the given\n * method of this interface.\n */\n Checker.prototype.methodResult = function (methodName) {\n var tfunc = this._getMethod(methodName);\n return new Checker(this.suite, tfunc.result);\n };\n /**\n * If this checker is for a function, returns a Checker for its argument-list.\n */\n Checker.prototype.getArgs = function () {\n if (!(this.ttype instanceof types_1.TFunc)) {\n throw new Error(\"getArgs() applied to non-function\");\n }\n return new Checker(this.suite, this.ttype.paramList);\n };\n /**\n * If this checker is for a function, returns a Checker for its result.\n */\n Checker.prototype.getResult = function () {\n if (!(this.ttype instanceof types_1.TFunc)) {\n throw new Error(\"getResult() applied to non-function\");\n }\n return new Checker(this.suite, this.ttype.result);\n };\n /**\n * Return the type for which this is a checker.\n */\n Checker.prototype.getType = function () {\n return this.ttype;\n };\n /**\n * Actual implementation of check() and strictCheck().\n */\n Checker.prototype._doCheck = function (checkerFunc, value) {\n var noopCtx = new util_1.NoopContext();\n if (!checkerFunc(value, noopCtx)) {\n var detailCtx = new util_1.DetailContext();\n checkerFunc(value, detailCtx);\n throw detailCtx.getError(this._path);\n }\n };\n Checker.prototype._doValidate = function (checkerFunc, value) {\n var noopCtx = new util_1.NoopContext();\n if (checkerFunc(value, noopCtx)) {\n return null;\n }\n var detailCtx = new util_1.DetailContext();\n checkerFunc(value, detailCtx);\n return detailCtx.getErrorDetail(this._path);\n };\n Checker.prototype._getMethod = function (methodName) {\n var ttype = this.props.get(methodName);\n if (!ttype) {\n throw new Error(\"Type has no property \" + methodName);\n }\n if (!(ttype instanceof types_1.TFunc)) {\n throw new Error(\"Property \" + methodName + \" is not a method\");\n }\n return ttype;\n };\n return Checker;\n}());\nexports.Checker = Checker;\n","/**\n * This module was automatically generated by `ts-interface-builder`\n */\nimport * as t from \"ts-interface-checker\";\n// tslint:disable:object-literal-key-quotes\n\nexport const OAuthConfigurationIF = t.iface([], {\n \"clientId\": \"string\",\n \"resource\": \"string\",\n \"oAuthUri\": \"string\",\n \"tokenUri\": \"string\",\n \"adminClaimName\": \"string\",\n});\n\nconst exportedTypeSuite: t.ITypeSuite = {\n OAuthConfigurationIF,\n};\nexport default exportedTypeSuite;\n","import OAuthConfigurationTI from \"./OAuthConfiguration-ti\";\nimport {createCheckers} from \"ts-interface-checker\";\n\ninterface OAuthConfigurationIF {\n clientId: string;\n resource: string;\n oAuthUri: string;\n tokenUri: string;\n adminClaimName: string;\n}\n\nconst {\n OAuthConfigurationIF\n} = createCheckers(OAuthConfigurationTI);\n\nclass OAuthConfiguration implements OAuthConfigurationIF {\n clientId: string;\n resource: string;\n oAuthUri: string;\n tokenUri: string;\n adminClaimName: string;\n\n constructor(from:any, validate=true) {\n if(validate) {\n //this will throw an error (VError from ts-interface-checker) if the configuration does not validate\n OAuthConfigurationIF.check(from);\n }\n this.clientId = from.clientId;\n this.resource = from.resource;\n this.oAuthUri = from.oAuthUri;\n this.tokenUri = from.tokenUri;\n this.adminClaimName = from.adminClaimName;\n }\n\n /**\n * returns a boolean indicating whether the frontend should treat this user as an admin or not\n * @param claimData\n */\n isAdmin(claimData:any) {\n return claimData.hasOwnProperty(this.adminClaimName);\n }\n}\n\nexport type {OAuthConfigurationIF};\nexport default OAuthConfiguration;","/**\n * call out to the IdP to request a refresh of the login using the refresh token stored in the localstorage.\n * on success, the updated token is stored in the local storage and the promise resolves\n * on failure, the local storage is not touched and the promise rejects with an error string\n * if the server returns a 500 or 503/504 error then it's assumed to be transient and the request will be retried\n * after a 2s delay.\n *\n * this is NOT written as a conventional async function in order to utilise more fine-grained control of when the promise\n * is resolved; i.e., it calls itself on a timer in order to retry so we must only resolve the promise once there has been\n * a definitive success or failure of the operation which could be after multiple calls\n * @param tokenUri server uri to make the refresh request to\n * @returns a Promise\n */\nexport const refreshLogin:(tokenUri:string)=>Promise = (tokenUri) => new Promise((resolve,reject)=>{\n const refreshToken = localStorage.getItem(\"pluto:refresh-token\");\n if(!refreshToken) {\n reject(\"No refresh token\");\n }\n\n const postdata:{[index:string]:string } = {\n grant_type: \"refresh_token\",\n refresh_token: refreshToken as string\n };\n const content_elements = Object.keys(postdata).map(\n (k) => k + \"=\" + encodeURIComponent(postdata[k])\n );\n const body_content = content_elements.join(\"&\");\n\n const performRefresh = async ()=> {\n const response = await fetch(tokenUri, {\n method: \"POST\",\n body: body_content,\n headers: {\n Accept: \"application/json\",\n \"Content-Type\": \"application/x-www-form-urlencoded\",\n },\n });\n switch (response.status) {\n case 200:\n const content = await response.json();\n console.log(\"Server response: \", content);\n localStorage.setItem(\"pluto:access-token\", content.access_token);\n if (content.refresh_token) localStorage.setItem(\"pluto:refresh-token\", content.refresh_token);\n resolve();\n break;\n case 403:\n case 401:\n console.log(\"Refresh was rejected with a forbidden error\");\n reject(\"Request forbidden\");\n break;\n case 500:\n console.log(\"Refresh was rejected due to a server error\");\n window.setTimeout(() => performRefresh(), 2000); //try again in 2s\n break;\n case 503:\n case 504:\n console.log(\"Authentication server not available\");\n window.setTimeout(() => performRefresh(), 2000); //try again in 2s\n break;\n default:\n const errorbody = await response.text();\n console.log(\"Unexpected response from authentication server: \", response.status, errorbody);\n reject(\"Unexpected response\");\n break;\n }\n }\n\n performRefresh().catch(err=>reject(err.toString()));\n})","import React from \"react\";\n\ninterface CustomisingThemeContext {\n darkMode: boolean;\n changeDarkMode: (newValue:boolean)=>void;\n}\n\nconst CustomisingThemeContext = React.createContext({\n darkMode: !(localStorage.getItem(\"pluto-dark-mode\") && localStorage.getItem(\"pluto-dark-mode\")==\"false\"), changeDarkMode: ()=>{}\n});\n\nexport const CustomisingThemeContextProvider = CustomisingThemeContext.Provider;\nexport default CustomisingThemeContext;\n","import React, {useState, useEffect, useRef, useContext} from \"react\";\nimport {Button, Grid, IconButton, Tooltip, Typography} from \"@material-ui/core\";\nimport {JwtDataShape} from \"../../utils/DecodedProfile\";\nimport {CircularProgress} from \"@material-ui/core\";\nimport {Error, CheckCircle, Person, Brightness7, Brightness4} from \"@material-ui/icons\";\nimport {refreshLogin} from \"../../utils/OAuth2Helper\";\nimport {makeStyles} from \"@material-ui/core/styles\";\nimport CustomisingThemeContext from \"../Theme/CustomisingThemeContext\";\n\ninterface LoginComponentProps {\n refreshToken?: string;\n checkInterval?:number;\n loginData: JwtDataShape;\n onLoginRefreshed?: ()=>void;\n onLoginCantRefresh?: (reason:string)=>void;\n onLoginExpired: ()=>void;\n onLoggedOut?: ()=>void;\n overrideRefreshLogin?: (tokenUri:string)=>Promise; //only used for testing\n tokenUri: string;\n}\n\nconst useStyles = makeStyles({\n inlineIcon: {\n padding: 0,\n margin: \"auto\",\n display: \"inline-block\",\n marginRight: \"0.2em\",\n maxWidth: \"16px\",\n maxHeight: \"16px\",\n },\n textOnGrey: {\n color: \"black\"\n },\n themeSwitcher: {\n height: \"36px\",\n width: \"36px\",\n padding: \"6px\"\n }\n});\n\nconst LoginComponent:React.FC = (props) => {\n const [refreshInProgress, setRefreshInProgress] = useState(false);\n const [refreshFailed, setRefreshFailed] = useState(false);\n const [refreshed, setRefreshed] = useState(false);\n const [loginExpiryCount, setLoginExpiryCount] = useState(\"\");\n\n let loginDataRef = useRef(props.loginData);\n const tokenUriRef = useRef(props.tokenUri);\n const overrideRefreshLoginRef = useRef(props.overrideRefreshLogin);\n\n const classes = useStyles();\n\n const themeContext = useContext(CustomisingThemeContext);\n\n useEffect(()=>{\n const intervalTimerId = window.setInterval(checkExpiryHandler, props.checkInterval ?? 60000);\n\n return (()=>{\n console.log(\"removing checkExpiryHandler\")\n window.clearInterval(intervalTimerId);\n })\n }, []);\n\n useEffect(()=>{\n console.log(\"refreshFailed was toggled to \", refreshFailed);\n if(refreshFailed) {\n console.log(\"setting countdown handler\");\n const intervalTimerId = window.setInterval(updateCountdownHandler, 1000);\n return (()=>{\n console.log(\"cleared countdown handler\");\n window.clearInterval(intervalTimerId);\n })\n }\n }, [refreshFailed]);\n\n useEffect(()=>{\n loginDataRef.current = props.loginData;\n }, [props.loginData]);\n\n /**\n * called periodically every second once a refresh has failed to alert the user how long they have left\n */\n const updateCountdownHandler = () => {\n const nowTime = new Date().getTime() / 1000; //assume time is in seconds\n const expiry = loginDataRef.current.exp;\n const timeToGo = expiry - nowTime;\n\n if(timeToGo>1) {\n setLoginExpiryCount(`expires in ${Math.ceil(timeToGo)}s`);\n } else {\n if(props.onLoginExpired) props.onLoginExpired();\n setLoginExpiryCount(\"has expired\");\n }\n }\n\n /**\n * lightweight function that is called every minute to verify the state of the token\n * it returns a promise that resolves when the component state has been updated. In normal usage this\n * is ignored but it is used in testing to ensure that the component state is only checked after it has been set.\n */\n const checkExpiryHandler = () => {\n if (loginDataRef.current) {\n const nowTime = new Date().getTime() / 1000; //assume time is in seconds\n //we know that it is not null due to above check\n const expiry = loginDataRef.current.exp;\n const timeToGo = expiry - nowTime;\n\n if (timeToGo <= 120) {\n console.log(\"less than 2mins to expiry, attempting refresh...\");\n setRefreshInProgress(true);\n\n let refreshedPromise;\n\n if(overrideRefreshLoginRef.current){\n refreshedPromise = overrideRefreshLoginRef.current(tokenUriRef.current);\n } else {\n refreshedPromise = refreshLogin(tokenUriRef.current);\n }\n\n refreshedPromise.then(()=>{\n console.log(\"Login refreshed\");\n setRefreshInProgress(false);\n setRefreshFailed(false);\n setRefreshed(true);\n\n if(props.onLoginRefreshed) props.onLoginRefreshed();\n window.setTimeout(()=>setRefreshed(false), 5000); //show success message for 5s\n }).catch(errString=>{\n if(props.onLoginCantRefresh) props.onLoginCantRefresh(errString);\n setRefreshFailed(true);\n setRefreshInProgress(false);\n updateCountdownHandler();\n return;\n })\n }\n } else {\n console.log(\"no login data present for expiry check\");\n }\n };\n\n const toggleThemeMode = ()=>themeContext.changeDarkMode(!themeContext.darkMode);\n\n return (\n \n \n \n \n You are logged in as\n \n {props.loginData.preferred_username ?? props.loginData.username}\n \n \n \n \n {\n themeContext.darkMode ? : \n }\n \n \n {\n refreshInProgress ?\n \n \n \n Refreshing your login...\n \n \n : null\n }\n {\n refreshFailed ?\n \n \n \n \n \n Login {loginExpiryCount}\n \n \n \n \n : null\n }\n {\n refreshed ?\n \n \n \n Token refreshed\n \n \n : null\n }\n\n \n {\n if (props.onLoggedOut) {\n props.onLoggedOut();\n return;\n }\n\n window.location.assign(\"/logout\");\n }}\n >\n Logout\n \n \n \n )\n}\n\nexport default LoginComponent;\n","import React, {useState, useEffect, useContext} from \"react\";\nimport { Link } from \"react-router-dom\";\nimport \"./AppSwitcher.css\";\nimport { Button } from \"@material-ui/core\";\nimport { loadInSigningKey, validateAndDecode } from \"../../utils/JwtHelpers\";\nimport { JwtData, JwtDataShape } from \"../../utils/DecodedProfile\";\nimport {\n hrefIsTheSameDeploymentRootPath,\n getDeploymentRootPathLink,\n} from \"../../utils/AppLinks\";\nimport { MenuButton } from \"../MenuButton/MenuButton\";\nimport OAuthConfiguration from \"../../utils/OAuthConfiguration\";\nimport { VError } from \"ts-interface-checker\";\nimport LoginComponent from \"./LoginComponent\";\n\ninterface AppSwitcherProps {\n onLoggedIn?: () => void;\n onLoggedOut?: () => void;\n onLoginValid?: (valid: boolean, jwtDataShape?: JwtDataShape) => void;\n}\n\nexport const AppSwitcher: React.FC = (props) => {\n const [isLoggedIn, setIsLoggedIn] = useState(false);\n const [isAdmin, setIsAdmin] = useState(false);\n const [loginData, setLoginData] = useState(null);\n const [expired, setExpired] = useState(false);\n\n // config\n const [menuSettings, setMenuSettings] = useState(\n []\n );\n const [clientId, setClientId] = useState(\"\");\n const [resource, setResource] = useState(\"\");\n const [oAuthUri, setOAuthUri] = useState(\"\");\n const [adminClaimName, setAdminClaimName] = useState(\"\");\n const [tokenUri, setTokenUri] = useState(\"\");\n\n\n const loadConfig: () => Promise = async () => {\n try {\n const response = await fetch(\"/meta/menu-config/menu.json\");\n\n if (response.status === 200) {\n const data = await response.json();\n\n setMenuSettings(data);\n }\n } catch (error) {\n console.error(error);\n }\n\n const response = await fetch(\"/meta/oauth/config.json\");\n if (response.status === 200) {\n const data = await response.json();\n const config = new OAuthConfiguration(data); //validates the configuration and throws a VError if it fails\n setClientId(config.clientId);\n setResource(config.resource);\n setOAuthUri(config.oAuthUri);\n setTokenUri(config.tokenUri);\n setAdminClaimName(config.adminClaimName);\n return config;\n } else {\n throw `Server returned ${response.status}`;\n }\n };\n\n const validateToken: (config: OAuthConfiguration) => Promise = async (\n config: OAuthConfiguration\n ) => {\n const token = window.localStorage.getItem(\"pluto:access-token\");\n if (!token) return;\n\n try {\n const signingKey = await loadInSigningKey();\n\n const decodedData = await validateAndDecode(token, signingKey);\n if(decodedData) {\n const loginData = JwtData(decodedData);\n setLoginData(loginData);\n\n // Login valid callback if provided\n if (props.onLoginValid) {\n props.onLoginValid(true, loginData);\n }\n\n setIsLoggedIn(true);\n\n setIsAdmin(config.isAdmin(loginData));\n } else {\n throw \"Got no user profile\"\n }\n } catch (error) {\n // Login valid callback if provided\n if (props.onLoginValid) {\n props.onLoginValid(false);\n }\n\n setIsLoggedIn(false);\n setIsAdmin(false);\n\n if (error.hasOwnProperty(\"name\") && error.name === \"TokenExpiredError\") {\n console.error(\"Token has already expired\");\n setExpired(true);\n } else {\n console.error(\"existing login token was not valid: \", error);\n }\n }\n };\n\n /**\n * load in the oauth config and validate the loaded in token\n */\n const refresh = async () => {\n try {\n const config = await loadConfig();\n await validateToken(config);\n } catch(err) {\n if (err instanceof VError) {\n console.log(\"OAuth configuration was not valid: \", err);\n } else {\n console.log(\"Could not load oauth configuration: \", err);\n }\n }\n }\n\n useEffect(() => {\n refresh();\n }, []);\n\n const makeLoginUrl = () => {\n const currentUri = new URL(window.location.href);\n const redirectUri =\n currentUri.protocol + \"//\" + currentUri.host + \"/oauth2/callback\";\n\n const args: Record = {\n response_type: \"code\",\n client_id: clientId,\n resource: resource,\n redirect_uri: redirectUri,\n state: currentUri.pathname,\n };\n\n const encoded = Object.entries(args).map(\n ([k, v]) => `${k}=${encodeURIComponent(v)}`\n );\n\n return oAuthUri + \"?\" + encoded.join(\"&\");\n };\n\n const getLink = (\n text: string,\n href: string,\n adminOnly: boolean | undefined,\n index: number\n ) => (\n \n {hrefIsTheSameDeploymentRootPath(href) ? (\n {text}\n ) : (\n {text}\n )}\n \n );\n\n return (\n <>\n {isLoggedIn && loginData ? (\n
\n
    \n {(\n menuSettings || []\n ).map(({ type, text, href, adminOnly, content }, index) =>\n type === \"link\" ? (\n getLink(text, href, adminOnly, index)\n ) : (\n \n )\n )}\n
\n {\n refresh();\n }}\n onLoginExpired={()=>{\n setExpired(true);\n setIsLoggedIn(false);\n }}\n tokenUri={tokenUri}\n />\n
\n ) : (\n
\n \n {expired\n ? \"Your login has expired\"\n : \"You are not currently logged in\"}\n {\n if (props.onLoggedIn) {\n props.onLoggedIn();\n return;\n }\n\n // Perform login\n window.location.assign(makeLoginUrl());\n }}\n >\n Login {expired ? \"again\" : \"\"}\n \n \n
\n )}\n \n );\n};\n","import React from \"react\";\nimport GuardianLogo from \"../../static/guardian_white.svg\";\nimport \"./Header.css\";\n\nexport const Header = () => {\n return (\n <>\n
\n
\n \n \n \n
\n
\n \n );\n};\n","import axios, { AxiosResponse } from \"axios\";\nimport qs from \"query-string\";\n\ninterface RefreshTokenResponse {\n access_token: string;\n refresh_token: string;\n}\n\ninterface PlutoConfig {\n tokenUri: string;\n clientId: string;\n}\n\n/**\n * Refreshes a token e.g. an expired token and returns an active token.\n */\nexport const refreshToken = async (\n plutoConfig: PlutoConfig\n): Promise => {\n const { tokenUri, clientId } = plutoConfig;\n const postdata: { [key: string]: string } = {\n grant_type: \"refresh_token\",\n client_id: clientId,\n refresh_token: window.localStorage.getItem(\"pluto:refresh-token\") as string,\n };\n\n try {\n const response = await axios.post(tokenUri, qs.stringify(postdata), {\n headers: {\n Accept: \"application/json\",\n \"Content-Type\": \"application/x-www-form-urlencoded\",\n },\n });\n\n if (response.status === 200) {\n const data = await response.data;\n\n return data;\n }\n\n throw new Error(`Could not fetch refresh token`);\n } catch (error) {\n return Promise.reject(error);\n }\n};\n\ninterface FailedQueue {\n resolve: (value?: unknown) => void;\n reject: (reason?: any) => void;\n}\n\nlet isRefreshing = false;\nlet failedQueue: FailedQueue[] = [];\n\nconst processQueue = (error: any, token: string | null) => {\n failedQueue.forEach((prom) => {\n if (error) {\n prom.reject(error);\n } else {\n prom.resolve(token);\n }\n });\n\n failedQueue = [];\n};\n\n/**\n * Retries the API call with a refresh token on 401 Unauthorized.\n */\nexport const handleUnauthorized = async (\n plutoConfig: PlutoConfig,\n error: any,\n failureCallback: () => void\n): Promise => {\n const originalRequest = error.config;\n\n if (!originalRequest._retry && error.response.status === 401) {\n // Handle several incoming http requests that fails on 401 Unauthorized\n // Therefore create a queue of the failing requests\n // and resolve them when refresh token is fetched\n // or reject them if failed to fetch the request token.\n if (isRefreshing) {\n return new Promise((resolve, reject) => {\n failedQueue.push({ resolve, reject });\n })\n .then((token) => {\n originalRequest.headers.Authorization = `Bearer ${token}`;\n return axios(originalRequest);\n })\n .catch((error) => {\n return Promise.reject(error);\n });\n }\n\n originalRequest._retry = true;\n isRefreshing = true;\n\n try {\n const data = await refreshToken(plutoConfig);\n\n window.localStorage.setItem(\"pluto:access-token\", data.access_token);\n window.localStorage.setItem(\"pluto:refresh-token\", data.refresh_token);\n\n originalRequest.headers.Authorization = `Bearer ${data.access_token}`;\n processQueue(null, data.access_token);\n return axios(originalRequest);\n } catch (error) {\n if (failureCallback) {\n failureCallback();\n }\n\n processQueue(error, null);\n return Promise.reject(error);\n } finally {\n isRefreshing = false;\n }\n }\n};\n","import React from \"react\";\nimport axios from \"axios\";\nimport \"./Breadcrumb.css\";\nimport IconCommission from \"../../static/c.svg\";\nimport IconProject from \"../../static/p.svg\";\nimport IconMaster from \"../../static/m.svg\";\nimport {Link} from \"@material-ui/core\";\nimport { ChevronRightRounded} from \"@material-ui/icons\";\n\n/**\n * only one of these needs to be set. The others will be inferred from the data about it.\n * if masterId is set, the other two are ignored\n * if masterId is not set and projectId is set, then commissionId is ignored\n * if neither masterId nor projectId is set, then commisisonId is used\n */\ninterface BreadcrumbProps {\n masterId?: number;\n projectId?: number;\n commissionId?: number;\n plutoCoreBaseUri?: string;\n}\n\ninterface BreadcrumbState {\n hasError: boolean;\n loading: boolean;\n projectName: string;\n commissionName: string;\n masterName: string;\n commissionId?: number;\n projectId?: number;\n}\n\ninterface UsefulServerData {\n projectId?: number;\n commissionId?: number;\n title: string;\n workingGroupId?: number;\n}\n\nclass Breadcrumb extends React.Component {\n constructor(props: BreadcrumbProps) {\n super(props);\n\n this.state = {\n hasError: false,\n loading: false,\n projectName: \"\",\n commissionName: \"\",\n masterName: \"\",\n commissionId: undefined,\n projectId: undefined\n };\n }\n\n /**\n * implement an error boundary so we can't break the rest of the UI\n * @param error\n */\n static getDerivedStateFromError(error: any) {\n return { loading: false, hasError: true };\n }\n\n componentDidCatch(error: Error, errorInfo: React.ErrorInfo) {\n console.error(\n \"An uncaught error happened in the Breadcrumb component \",\n error,\n errorInfo\n );\n }\n\n /**\n * return a promise that completes when state change is complete\n */\n setStatePromise(newState: any): Promise {\n return new Promise((resolve, reject) =>\n this.setState(newState, () => resolve())\n );\n }\n\n /**\n * generic function to load in data from either project or commission endpoints in pluto-core\n * @param url url to load\n */\n async plutoCoreLoad(url: string): Promise {\n try {\n const response = await axios.get(url);\n if (response.data && response.data.result && response.data.result.title) {\n return {\n title: response.data.result.title,\n workingGroupId: response.data.result.workingGroupId,\n commissionId: response.data.result.commissionId ?? response.data.id,\n };\n } else {\n return {\n title: \"(none)\",\n };\n }\n } catch (err) {\n if (err.response) {\n switch (err.response.status) {\n case 404:\n console.info(\"No data existed for the url \", url);\n return {\n title: \"(none)\",\n };\n case 503:\n case 504:\n console.info(\"pluto-core is not responding, retrying...\");\n\n return new Promise((resolve, reject) => {\n window.setTimeout(() => {\n this.plutoCoreLoad(url)\n .then((result) => resolve(result))\n .catch((err) => reject(err));\n }, 2000);\n });\n default:\n break;\n }\n }\n throw \"Could not load pluto-core data\";\n console.error(err);\n }\n return {\n title: \"(none)\",\n }; //we shouldn't get here but the compiler wants a return\n }\n\n async loadCommissionData(): Promise {\n await this.setStatePromise({ loading: true });\n //I could do the whole type-registration thing and validate it for the data, but really we are only interested\n //in a field or two so I might as well do it manually.\n const url = `${this.props.plutoCoreBaseUri ?? \"/pluto-core\"}/api/pluto/commission/${this.props.commissionId}`;\n\n try {\n const serverContent = await this.plutoCoreLoad(url);\n return this.setStatePromise({\n loading: false,\n commissionName: serverContent.title,\n });\n } catch (err) {\n return this.setStatePromise({ loading: false, hasError: true });\n }\n }\n\n async loadProjectData(): Promise {\n await this.setStatePromise({ loading: true });\n const url = `${this.props.plutoCoreBaseUri ?? \"/pluto-core\"}/api/project/${this.props.projectId}`;\n\n try {\n const serverContentProject = await this.plutoCoreLoad(url);\n if (serverContentProject.commissionId) {\n const commissionUrl = `${this.props.plutoCoreBaseUri ?? \"/pluto-core\"}/api/pluto/commission/${serverContentProject.commissionId}`;\n const serverContentComm = await this.plutoCoreLoad(commissionUrl);\n return this.setStatePromise({\n loading: false,\n commissionName: serverContentComm.title,\n commissionId: serverContentProject.commissionId,\n projectName: serverContentProject.title,\n });\n } else {\n return this.setStatePromise({\n loading: false,\n projectName: serverContentProject.title,\n });\n }\n } catch (err) {\n console.error(\"Could not load project data: \", err);\n return this.setStatePromise({ loading: false, hasError: true });\n }\n }\n\n async loadMasterData(): Promise {\n await this.setStatePromise({ loading: true });\n const url = `/deliverables/api/asset/${this.props.masterId}`;\n\n console.log(\"loadMasterData not implemented yet\");\n return this.setStatePromise({ loading: false, hasError: true });\n }\n\n /**\n * master load function that hands off to specific ones\n */\n async loadData() {\n if (this.props.masterId) {\n return this.loadMasterData();\n } else if (this.props.projectId) {\n return this.loadProjectData();\n } else if (this.props.commissionId) {\n return this.loadCommissionData();\n } else {\n console.error(\n \"Breadcrumb component has no master, project nor commission id.\"\n );\n }\n }\n\n componentDidUpdate(prevProps: Readonly, prevState: Readonly, snapshot?: any) {\n if(prevProps!=this.props) this.loadData();\n }\n\n componentDidMount() {\n this.loadData();\n }\n\n render() {\n if (this.state.hasError) {\n return (\n
\n

Could not load location data

\n
\n );\n } else {\n return (\n
\n {this.state.commissionName == \"\" ? null : (\n
\n \n {this.state.commissionName}\n {\n this.state.projectName==\"\" ? null : \n }\n
\n )}\n {this.state.projectName == \"\" ? null : (\n
\n \n {this.state.projectName}\n {\n this.state.masterName==\"\" ? null : \n }\n
\n )}\n {this.state.masterName == \"\" ? null : (\n
\n \n

{this.state.masterName}

\n
\n )}\n
\n );\n }\n }\n}\n\nexport { Breadcrumb };\n","import React, { useState } from \"react\";\nimport { Snackbar } from \"@material-ui/core\";\nimport MuiAlert, { AlertProps, Color } from \"@material-ui/lab/Alert\";\n\n/**\n * these values correspond to the material-ui palette labels, so are safe to use below with\n * `severity={SystemNotificationKind.toString() as Color}`\n */\nexport enum SystemNotifcationKind {\n Success = \"success\",\n Error = \"error\",\n Info = \"info\",\n Warning = \"warning\",\n}\n\ntype OpenFunc = (kind: SystemNotifcationKind, message: string) => void;\n\nlet openSystemNotification: OpenFunc; //allows us to access the `openSystemNotification` function from outside the component definition\n\nfunction Alert(props: AlertProps) {\n return ;\n}\n\nconst SystemNotification: React.FC<{}> & { open: OpenFunc } = () => {\n const autoHideDuration = 4000;\n\n const [open, setOpen] = useState(false);\n const [message, setMessage] = useState(\"\");\n const [kind, setKind] = useState(\n SystemNotifcationKind.Info\n );\n\n const close = () => {\n setOpen(false);\n };\n\n openSystemNotification = (kind: SystemNotifcationKind, message: string) => {\n setKind(kind);\n setMessage(message);\n setOpen(true);\n };\n\n return (\n \n {message}\n \n );\n};\n\nSystemNotification.open = (kind: SystemNotifcationKind, message: string) =>\n openSystemNotification(kind, message);\n\nexport { SystemNotification };\n","import React, { useEffect, useState } from \"react\";\nimport { red } from \"@material-ui/core/colors\";\n\ninterface OAuthContextData {\n clientId: string;\n resource: string;\n oAuthUri: string;\n tokenUri: string;\n redirectUri: string;\n}\n\nconst OAuthContext = React.createContext(\n undefined\n);\n\nconst OAuthContextProvider: React.FC<{\n children: React.ReactFragment;\n onError?: (desc: string) => void;\n}> = (props) => {\n const [clientId, setClientId] = useState(\"\");\n const [resource, setResource] = useState(\"\");\n const [oAuthUri, setOAuthUri] = useState(\"\");\n const [tokenUri, setTokenUri] = useState(\"\");\n const [haveData, setHaveData] = useState(false);\n\n const currentUri = new URL(window.location.href);\n const redirectUrl =\n currentUri.protocol + \"//\" + currentUri.host + \"/oauth2/callback\";\n\n const loadOauthData = async () => {\n const response = await fetch(\"/meta/oauth/config.json\");\n switch (response.status) {\n case 200:\n const content = await response.json();\n\n setClientId(content.clientId);\n setResource(content.resource);\n setOAuthUri(content.oAuthUri);\n setTokenUri(content.tokenUri);\n setHaveData(true);\n break;\n case 404:\n await response.text(); //consume body and discard it\n if (props.onError)\n props.onError(\n \"Metadata not found on server, please contact administrator\"\n ); //temporary until we have global snackbar\n break;\n default:\n await response.text(); //consume body and discard it\n if (props.onError)\n props.onError(\n `Server returned a ${response.status} error trying to access meetadata`\n );\n break;\n }\n };\n\n useEffect(() => {\n loadOauthData();\n }, []);\n\n return (\n \n {props.children}\n \n );\n};\n\nfunction makeLoginUrl(oAuthContext: OAuthContextData) {\n const args = {\n response_type: \"code\",\n client_id: oAuthContext.clientId,\n resource: oAuthContext.resource,\n redirect_uri: oAuthContext.redirectUri,\n state: \"/\",\n };\n\n const encoded = Object.entries(args).map(\n ([k, v]) => `${k}=${encodeURIComponent(v)}`\n );\n\n return oAuthContext.oAuthUri + \"?\" + encoded.join(\"&\");\n}\n\nexport type { OAuthContextData };\n\nexport {OAuthContext, OAuthContextProvider, makeLoginUrl};\n","import React from \"react\";\nimport { JwtDataShape } from \"../../utils/DecodedProfile\";\n\ninterface UserContext {\n profile?: JwtDataShape;\n updateProfile: (newValue?: JwtDataShape) => void;\n}\n\nconst UserContext = React.createContext({\n profile: undefined,\n updateProfile: (newValue) => {},\n});\n\nexport const UserContextProvider = UserContext.Provider;\nexport { UserContext };\n","import { createTheme } from \"@material-ui/core/styles\";\nimport {PaletteOptions} from \"@material-ui/core/styles/createPalette\";\n\nconst defaultPlutoTheme = (dark:boolean)=>{\n const palette = dark ? {\n type: \"dark\",\n background: {\n paper: \"#424242EA\",\n }\n } as PaletteOptions: {\n type: \"light\",\n background: {\n paper: \"#FBFBFBEA\",\n }\n } as PaletteOptions\n\n return createTheme({\n typography: {\n fontFamily:\n '\"Guardian Text Sans Web\",\"Helvetica Neue\",Helvetica,Arial,\"Lucida Grande\",sans-serif',\n },\n palette: palette,\n });\n}\n\nexport {defaultPlutoTheme};\n","import React, {useEffect, useState} from \"react\";\nimport {defaultPlutoTheme} from \"./DefaultPlutoTheme\";\nimport {ThemeProvider} from \"@material-ui/core\";\nimport CustomisingThemeContext from \"./CustomisingThemeContext\";\n\ninterface PlutoThemeProviderProps {\n userSettingsUrl?: string;\n userSettingsKey?: string;\n}\n\nconst PlutoThemeProvider:React.FC = (props) => {\n const [darkMode, setDarkmode] = useState(!(localStorage.getItem(\"pluto-dark-mode\") && localStorage.getItem(\"pluto-dark-mode\")==\"false\"));\n\n const updateDarkMode = (newValue:boolean)=>{\n localStorage.setItem(\"pluto-dark-mode\", newValue ? \"true\" : \"false\");\n setDarkmode(newValue);\n }\n\n return \n \n {\n props.children\n }\n \n \n}\n\nexport {PlutoThemeProvider};"],"names":["fromUnixTime","addMinutes","jwt","useState","React","ArrowDropDownIcon","Menu","MenuItem","Link","this","util_1","types_1","t.iface","OAuthConfigurationIF","createCheckers","OAuthConfigurationTI","makeStyles","useRef","useContext","useEffect","Grid","Typography","Person","IconButton","Brightness7","Brightness4","CircularProgress","Error","Tooltip","CheckCircle","Button","VError","GuardianLogo","axios","qs","IconCommission","ChevronRightRounded","IconProject","IconMaster","SystemNotifcationKind","MuiAlert","Snackbar","createTheme","ThemeProvider"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"index.js","sources":["../node_modules/tslib/tslib.es6.js","../node_modules/style-inject/dist/style-inject.es.js","../src/utils/DecodedProfile.ts","../src/utils/JwtHelpers.ts","../src/utils/AppLinks.ts","../src/components/MenuButton/MenuButton.tsx","../node_modules/ts-interface-checker/dist/util.js","../node_modules/ts-interface-checker/dist/types.js","../node_modules/ts-interface-checker/dist/index.js","../src/utils/OAuthConfiguration-ti.ts","../src/utils/OAuthConfiguration.ts","../src/utils/OAuth2Helper.ts","../src/components/Theme/CustomisingThemeContext.tsx","../src/components/AppSwitcher/LoginComponent.tsx","../src/components/AppSwitcher/AppSwitcher.tsx","../src/components/Header/Header.tsx","../src/utils/Interceptor.ts","../src/components/Breadcrumb/Breadcrumb.tsx","../src/components/SystemNotification/SystemNotification.tsx","../src/components/Context/OAuthContext.tsx","../src/components/Context/UserContext.tsx","../src/components/Theme/DefaultPlutoTheme.ts","../src/components/Theme/PlutoThemeProvider.tsx"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","import {fromUnixTime,addMinutes} from 'date-fns';\n\ninterface JwtDataShape {\n aud: string;\n iss: string;\n iat: number;\n iat_moment?: Date;\n exp: number;\n exp_moment?: Date;\n sub?: string;\n email?: string;\n first_name?: string;\n given_name?: string;\n family_name?: string;\n username?: string;\n preferred_username?: string;\n location?: string;\n job_title?: string;\n authmethod?: string;\n auth_time?: string;\n ver?: string;\n appid?: string;\n}\n\nfunction utcTime(from: number) {\n //see https://stackoverflow.com/a/61469549. `fromUnixTime` gives us a local time, but we want UTC.\n const date = fromUnixTime(from);\n return addMinutes(date, date.getTimezoneOffset());\n}\n\nfunction JwtData(jwtData: object) {\n return new Proxy(jwtData, {\n get(target, prop) {\n switch (prop) {\n case \"iat_moment\":\n return utcTime(target.iat);\n case \"exp_moment\":\n return utcTime(target.exp);\n case \"username\":\n return target.preferred_username ?? target.username;\n case \"first_name\":\n return target.first_name ?? target.given_name;\n default:\n return (target)[prop] ?? null;\n }\n },\n });\n}\n\nexport type { JwtDataShape };\nexport { JwtData };\n","import jwt, {JwtPayload} from \"jsonwebtoken\";\nimport {JwtData, JwtDataShape} from \"./DecodedProfile\";\n\n/**\n * perform the validation of the token via jsonwebtoken library.\n * if validation fails then the returned promise is rejected\n * if validation succeeds, then the promise only completes once the decoded content has been set into the state.\n * @returns {Promise} Decoded JWT content or rejects with an error\n */\nfunction verifyJwt(token: string, signingKey: string, refreshToken?: string) {\n return new Promise((resolve, reject) => {\n jwt.verify(token, signingKey, (err, decoded) => {\n if (err) {\n console.log(\"token: \", token);\n console.log(\"signingKey: \", signingKey);\n console.error(\"could not verify JWT: \", err);\n reject(err);\n }\n\n window.localStorage.setItem(\"pluto:access-token\", token); //it validates so save the token\n if (refreshToken)\n window.localStorage.setItem(\"pluto:refresh-token\", refreshToken);\n resolve(decoded);\n });\n });\n}\n\n/**\n * perform the validation of the token via jsonwebtoken library.\n * if validation fails then the returned promise is rejected\n * if validation succeeds, then the promise only completes once the decoded content has been set into the state.\n * @returns {Promise} Decoded JWT content or rejects with an error\n */\nfunction validateAndDecode(token:string, signingKey:string, refreshToken?:string):Promise {\n return new Promise((resolve, reject) => {\n jwt.verify(token, signingKey, (err, decoded) => {\n if (err) {\n console.log(\"token: \", token);\n console.log(\"signingKey: \", signingKey);\n console.error(\"could not verify JWT: \", err);\n reject(err);\n }\n\n window.localStorage.setItem(\"pluto:access-token\", token); //it validates so save the token\n if (refreshToken)\n window.localStorage.setItem(\"pluto:refresh-token\", refreshToken);\n resolve(decoded);\n });\n });\n}\n\n/**\n * gets the signing key from the server\n * @returns {Promise} Raw content of the signing key in PEM format\n */\nasync function loadInSigningKey() {\n const result = await fetch(\"/meta/oauth/publickey.pem\");\n switch (result.status) {\n case 200:\n return result.text();\n default:\n console.error(\n \"could not retrieve signing key, server gave us \",\n result.status\n );\n throw \"Could not retrieve signing key\";\n }\n}\n\n/**\n * returns the raw JWT for passing to backend services\n * @returns {string} the JWT, or null if it is not set.\n */\nfunction getRawToken() {\n return window.localStorage.getItem(\"pluto:access-token\");\n}\n\n/**\n * helper function that validates and decodes into a user profile a token already existing in the localstorage\n */\nasync function verifyExistingLogin(): Promise {\n const token = getRawToken();\n if (token) {\n const signingKey = await loadInSigningKey();\n const jwtPayload = await verifyJwt(token, signingKey);\n return jwtPayload ? JwtData(jwtPayload) : undefined;\n }\n}\n\n\n\nexport { validateAndDecode, loadInSigningKey, getRawToken, verifyJwt, verifyExistingLogin };\n","export const hrefIsTheSameDeploymentRootPath = (href: string): boolean => {\n let deployment = \"\";\n try {\n deployment = deploymentRootPath;\n } catch {\n deployment = \"\";\n }\n\n if (!deployment) {\n return false;\n }\n\n return href !== \"/\" && href.includes(deployment);\n};\n\nexport const getDeploymentRootPathLink = (href: string): string => {\n const link = href.split(deploymentRootPath)[1];\n\n return link.startsWith(\"/\") ? link : `/${link}`;\n};\n","import React, { useState } from \"react\";\nimport { Link } from \"react-router-dom\";\nimport ArrowDropDownIcon from \"@material-ui/icons/ArrowDropDown\";\nimport { Menu, MenuItem } from \"@material-ui/core\";\nimport {\n hrefIsTheSameDeploymentRootPath,\n getDeploymentRootPathLink,\n} from \"../../utils/AppLinks\";\nimport \"./MenuButton.css\";\n\ninterface MenuButtonProps {\n isAdmin: boolean;\n index: number;\n text: string;\n adminOnly: boolean | undefined;\n content: BaseMenuSettings[] | undefined;\n}\n\nexport const MenuButton: React.FC = (props) => {\n const { index, isAdmin, text, adminOnly, content } = props;\n const [anchorEl, setAnchorEl] = useState(null);\n\n const openSubmenu = (event: React.MouseEvent) => {\n setAnchorEl(event.currentTarget);\n };\n\n const closeMenu = () => {\n setAnchorEl(null);\n };\n\n return (\n \n \n {text}\n \n \n \n {(content || []).map(({ type, text, href, adminOnly }, index) => {\n if (type === \"submenu\") {\n console.error(\n \"You have provided a submenu inside a submenu, nested submenus are not supported!\"\n );\n return;\n }\n\n if (hrefIsTheSameDeploymentRootPath(href)) {\n return (\n {\n closeMenu();\n }}\n >\n {text}\n \n );\n }\n\n return (\n {\n closeMenu();\n window.location.assign(href);\n }}\n >\n {text}\n \n );\n })}\n \n \n );\n};\n","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DetailContext = exports.NoopContext = exports.VError = void 0;\n/**\n * Error thrown by validation. Besides an informative message, it includes the path to the\n * property which triggered the failure.\n */\nvar VError = /** @class */ (function (_super) {\n __extends(VError, _super);\n function VError(path, message) {\n var _this = _super.call(this, message) || this;\n _this.path = path;\n // See https://github.com/Microsoft/TypeScript/wiki/Breaking-Changes#extending-built-ins-like-error-array-and-map-may-no-longer-work for info about this workaround.\n Object.setPrototypeOf(_this, VError.prototype);\n return _this;\n }\n return VError;\n}(Error));\nexports.VError = VError;\n/**\n * Fast implementation of IContext used for first-pass validation. If that fails, we can validate\n * using DetailContext to collect error messages. That's faster for the common case when messages\n * normally pass validation.\n */\nvar NoopContext = /** @class */ (function () {\n function NoopContext() {\n }\n NoopContext.prototype.fail = function (relPath, message, score) {\n return false;\n };\n NoopContext.prototype.unionResolver = function () { return this; };\n NoopContext.prototype.createContext = function () { return this; };\n NoopContext.prototype.resolveUnion = function (ur) { };\n return NoopContext;\n}());\nexports.NoopContext = NoopContext;\n/**\n * Complete implementation of IContext that collects meaningfull errors.\n */\nvar DetailContext = /** @class */ (function () {\n function DetailContext() {\n // Stack of property names and associated messages for reporting helpful error messages.\n this._propNames = [\"\"];\n this._messages = [null];\n // Score is used to choose the best union member whose DetailContext to use for reporting.\n // Higher score means better match (or rather less severe mismatch).\n this._score = 0;\n }\n DetailContext.prototype.fail = function (relPath, message, score) {\n this._propNames.push(relPath);\n this._messages.push(message);\n this._score += score;\n return false;\n };\n DetailContext.prototype.unionResolver = function () {\n return new DetailUnionResolver();\n };\n DetailContext.prototype.resolveUnion = function (unionResolver) {\n var _a, _b;\n var u = unionResolver;\n var best = null;\n for (var _i = 0, _c = u.contexts; _i < _c.length; _i++) {\n var ctx = _c[_i];\n if (!best || ctx._score >= best._score) {\n best = ctx;\n }\n }\n if (best && best._score > 0) {\n (_a = this._propNames).push.apply(_a, best._propNames);\n (_b = this._messages).push.apply(_b, best._messages);\n }\n };\n DetailContext.prototype.getError = function (path) {\n var msgParts = [];\n for (var i = this._propNames.length - 1; i >= 0; i--) {\n var p = this._propNames[i];\n path += (typeof p === \"number\") ? \"[\" + p + \"]\" : (p ? \".\" + p : \"\");\n var m = this._messages[i];\n if (m) {\n msgParts.push(path + \" \" + m);\n }\n }\n return new VError(path, msgParts.join(\"; \"));\n };\n DetailContext.prototype.getErrorDetail = function (path) {\n var details = [];\n for (var i = this._propNames.length - 1; i >= 0; i--) {\n var p = this._propNames[i];\n path += (typeof p === \"number\") ? \"[\" + p + \"]\" : (p ? \".\" + p : \"\");\n var message = this._messages[i];\n if (message) {\n details.push({ path: path, message: message });\n }\n }\n var detail = null;\n for (var i = details.length - 1; i >= 0; i--) {\n if (detail) {\n details[i].nested = [detail];\n }\n detail = details[i];\n }\n return detail;\n };\n return DetailContext;\n}());\nexports.DetailContext = DetailContext;\nvar DetailUnionResolver = /** @class */ (function () {\n function DetailUnionResolver() {\n this.contexts = [];\n }\n DetailUnionResolver.prototype.createContext = function () {\n var ctx = new DetailContext();\n this.contexts.push(ctx);\n return ctx;\n };\n return DetailUnionResolver;\n}());\n","\"use strict\";\n/**\n * This module defines nodes used to define types and validations for objects and interfaces.\n */\n// tslint:disable:no-shadowed-variable prefer-for-of\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.basicTypes = exports.BasicType = exports.TParamList = exports.TParam = exports.param = exports.TFunc = exports.func = exports.TProp = exports.TOptional = exports.opt = exports.TIface = exports.iface = exports.TEnumLiteral = exports.enumlit = exports.TEnumType = exports.enumtype = exports.TIntersection = exports.intersection = exports.TUnion = exports.union = exports.TTuple = exports.tuple = exports.TArray = exports.array = exports.TLiteral = exports.lit = exports.TName = exports.name = exports.TType = void 0;\nvar util_1 = require(\"./util\");\n/** Node that represents a type. */\nvar TType = /** @class */ (function () {\n function TType() {\n }\n return TType;\n}());\nexports.TType = TType;\n/** Parses a type spec into a TType node. */\nfunction parseSpec(typeSpec) {\n return typeof typeSpec === \"string\" ? name(typeSpec) : typeSpec;\n}\nfunction getNamedType(suite, name) {\n var ttype = suite[name];\n if (!ttype) {\n throw new Error(\"Unknown type \" + name);\n }\n return ttype;\n}\n/**\n * Defines a type name, either built-in, or defined in this suite. It can typically be included in\n * the specs as just a plain string.\n */\nfunction name(value) { return new TName(value); }\nexports.name = name;\nvar TName = /** @class */ (function (_super) {\n __extends(TName, _super);\n function TName(name) {\n var _this = _super.call(this) || this;\n _this.name = name;\n _this._failMsg = \"is not a \" + name;\n return _this;\n }\n TName.prototype.getChecker = function (suite, strict, allowedProps) {\n var _this = this;\n var ttype = getNamedType(suite, this.name);\n var checker = ttype.getChecker(suite, strict, allowedProps);\n if (ttype instanceof BasicType || ttype instanceof TName) {\n return checker;\n }\n // For complex types, add an additional \"is not a \" message on failure.\n return function (value, ctx) { return checker(value, ctx) ? true : ctx.fail(null, _this._failMsg, 0); };\n };\n return TName;\n}(TType));\nexports.TName = TName;\n/**\n * Defines a literal value, e.g. lit('hello') or lit(123).\n */\nfunction lit(value) { return new TLiteral(value); }\nexports.lit = lit;\nvar TLiteral = /** @class */ (function (_super) {\n __extends(TLiteral, _super);\n function TLiteral(value) {\n var _this = _super.call(this) || this;\n _this.value = value;\n _this.name = JSON.stringify(value);\n _this._failMsg = \"is not \" + _this.name;\n return _this;\n }\n TLiteral.prototype.getChecker = function (suite, strict) {\n var _this = this;\n return function (value, ctx) { return (value === _this.value) ? true : ctx.fail(null, _this._failMsg, -1); };\n };\n return TLiteral;\n}(TType));\nexports.TLiteral = TLiteral;\n/**\n * Defines an array type, e.g. array('number').\n */\nfunction array(typeSpec) { return new TArray(parseSpec(typeSpec)); }\nexports.array = array;\nvar TArray = /** @class */ (function (_super) {\n __extends(TArray, _super);\n function TArray(ttype) {\n var _this = _super.call(this) || this;\n _this.ttype = ttype;\n return _this;\n }\n TArray.prototype.getChecker = function (suite, strict) {\n var itemChecker = this.ttype.getChecker(suite, strict);\n return function (value, ctx) {\n if (!Array.isArray(value)) {\n return ctx.fail(null, \"is not an array\", 0);\n }\n for (var i = 0; i < value.length; i++) {\n var ok = itemChecker(value[i], ctx);\n if (!ok) {\n return ctx.fail(i, null, 1);\n }\n }\n return true;\n };\n };\n return TArray;\n}(TType));\nexports.TArray = TArray;\n/**\n * Defines a tuple type, e.g. tuple('string', 'number').\n */\nfunction tuple() {\n var typeSpec = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n typeSpec[_i] = arguments[_i];\n }\n return new TTuple(typeSpec.map(function (t) { return parseSpec(t); }));\n}\nexports.tuple = tuple;\nvar TTuple = /** @class */ (function (_super) {\n __extends(TTuple, _super);\n function TTuple(ttypes) {\n var _this = _super.call(this) || this;\n _this.ttypes = ttypes;\n return _this;\n }\n TTuple.prototype.getChecker = function (suite, strict) {\n var itemCheckers = this.ttypes.map(function (t) { return t.getChecker(suite, strict); });\n var checker = function (value, ctx) {\n if (!Array.isArray(value)) {\n return ctx.fail(null, \"is not an array\", 0);\n }\n for (var i = 0; i < itemCheckers.length; i++) {\n var ok = itemCheckers[i](value[i], ctx);\n if (!ok) {\n return ctx.fail(i, null, 1);\n }\n }\n return true;\n };\n if (!strict) {\n return checker;\n }\n return function (value, ctx) {\n if (!checker(value, ctx)) {\n return false;\n }\n return value.length <= itemCheckers.length ? true :\n ctx.fail(itemCheckers.length, \"is extraneous\", 2);\n };\n };\n return TTuple;\n}(TType));\nexports.TTuple = TTuple;\n/**\n * Defines a union type, e.g. union('number', 'null').\n */\nfunction union() {\n var typeSpec = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n typeSpec[_i] = arguments[_i];\n }\n return new TUnion(typeSpec.map(function (t) { return parseSpec(t); }));\n}\nexports.union = union;\nvar TUnion = /** @class */ (function (_super) {\n __extends(TUnion, _super);\n function TUnion(ttypes) {\n var _this = _super.call(this) || this;\n _this.ttypes = ttypes;\n var names = ttypes.map(function (t) { return t instanceof TName || t instanceof TLiteral ? t.name : null; })\n .filter(function (n) { return n; });\n var otherTypes = ttypes.length - names.length;\n if (names.length) {\n if (otherTypes > 0) {\n names.push(otherTypes + \" more\");\n }\n _this._failMsg = \"is none of \" + names.join(\", \");\n }\n else {\n _this._failMsg = \"is none of \" + otherTypes + \" types\";\n }\n return _this;\n }\n TUnion.prototype.getChecker = function (suite, strict) {\n var _this = this;\n var itemCheckers = this.ttypes.map(function (t) { return t.getChecker(suite, strict); });\n return function (value, ctx) {\n var ur = ctx.unionResolver();\n for (var i = 0; i < itemCheckers.length; i++) {\n var ok = itemCheckers[i](value, ur.createContext());\n if (ok) {\n return true;\n }\n }\n ctx.resolveUnion(ur);\n return ctx.fail(null, _this._failMsg, 0);\n };\n };\n return TUnion;\n}(TType));\nexports.TUnion = TUnion;\n/**\n * Defines an intersection type, e.g. intersection('number', 'null').\n */\nfunction intersection() {\n var typeSpec = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n typeSpec[_i] = arguments[_i];\n }\n return new TIntersection(typeSpec.map(function (t) { return parseSpec(t); }));\n}\nexports.intersection = intersection;\nvar TIntersection = /** @class */ (function (_super) {\n __extends(TIntersection, _super);\n function TIntersection(ttypes) {\n var _this = _super.call(this) || this;\n _this.ttypes = ttypes;\n return _this;\n }\n TIntersection.prototype.getChecker = function (suite, strict) {\n var allowedProps = new Set();\n var itemCheckers = this.ttypes.map(function (t) { return t.getChecker(suite, strict, allowedProps); });\n return function (value, ctx) {\n var ok = itemCheckers.every(function (checker) { return checker(value, ctx); });\n if (ok) {\n return true;\n }\n return ctx.fail(null, null, 0);\n };\n };\n return TIntersection;\n}(TType));\nexports.TIntersection = TIntersection;\n/**\n * Defines an enum type, e.g. enum({'A': 1, 'B': 2}).\n */\nfunction enumtype(values) {\n return new TEnumType(values);\n}\nexports.enumtype = enumtype;\nvar TEnumType = /** @class */ (function (_super) {\n __extends(TEnumType, _super);\n function TEnumType(members) {\n var _this = _super.call(this) || this;\n _this.members = members;\n _this.validValues = new Set();\n _this._failMsg = \"is not a valid enum value\";\n _this.validValues = new Set(Object.keys(members).map(function (name) { return members[name]; }));\n return _this;\n }\n TEnumType.prototype.getChecker = function (suite, strict) {\n var _this = this;\n return function (value, ctx) {\n return (_this.validValues.has(value) ? true : ctx.fail(null, _this._failMsg, 0));\n };\n };\n return TEnumType;\n}(TType));\nexports.TEnumType = TEnumType;\n/**\n * Defines a literal enum value, such as Direction.Up, specified as enumlit(\"Direction\", \"Up\").\n */\nfunction enumlit(name, prop) {\n return new TEnumLiteral(name, prop);\n}\nexports.enumlit = enumlit;\nvar TEnumLiteral = /** @class */ (function (_super) {\n __extends(TEnumLiteral, _super);\n function TEnumLiteral(enumName, prop) {\n var _this = _super.call(this) || this;\n _this.enumName = enumName;\n _this.prop = prop;\n _this._failMsg = \"is not \" + enumName + \".\" + prop;\n return _this;\n }\n TEnumLiteral.prototype.getChecker = function (suite, strict) {\n var _this = this;\n var ttype = getNamedType(suite, this.enumName);\n if (!(ttype instanceof TEnumType)) {\n throw new Error(\"Type \" + this.enumName + \" used in enumlit is not an enum type\");\n }\n var val = ttype.members[this.prop];\n if (!ttype.members.hasOwnProperty(this.prop)) {\n throw new Error(\"Unknown value \" + this.enumName + \".\" + this.prop + \" used in enumlit\");\n }\n return function (value, ctx) { return (value === val) ? true : ctx.fail(null, _this._failMsg, -1); };\n };\n return TEnumLiteral;\n}(TType));\nexports.TEnumLiteral = TEnumLiteral;\nfunction makeIfaceProps(props) {\n return Object.keys(props).map(function (name) { return makeIfaceProp(name, props[name]); });\n}\nfunction makeIfaceProp(name, prop) {\n return prop instanceof TOptional ?\n new TProp(name, prop.ttype, true) :\n new TProp(name, parseSpec(prop), false);\n}\n/**\n * Defines an interface. The first argument is an array of interfaces that it extends, and the\n * second is an array of properties.\n */\nfunction iface(bases, props) {\n return new TIface(bases, makeIfaceProps(props));\n}\nexports.iface = iface;\nvar TIface = /** @class */ (function (_super) {\n __extends(TIface, _super);\n function TIface(bases, props) {\n var _this = _super.call(this) || this;\n _this.bases = bases;\n _this.props = props;\n _this.propSet = new Set(props.map(function (p) { return p.name; }));\n return _this;\n }\n TIface.prototype.getChecker = function (suite, strict, allowedProps) {\n var _this = this;\n var baseCheckers = this.bases.map(function (b) { return getNamedType(suite, b).getChecker(suite, strict); });\n var propCheckers = this.props.map(function (prop) { return prop.ttype.getChecker(suite, strict); });\n var testCtx = new util_1.NoopContext();\n // Consider a prop required if it's not optional AND does not allow for undefined as a value.\n var isPropRequired = this.props.map(function (prop, i) {\n return !prop.isOpt && !propCheckers[i](undefined, testCtx);\n });\n var checker = function (value, ctx) {\n if (typeof value !== \"object\" || value === null) {\n return ctx.fail(null, \"is not an object\", 0);\n }\n for (var i = 0; i < baseCheckers.length; i++) {\n if (!baseCheckers[i](value, ctx)) {\n return false;\n }\n }\n for (var i = 0; i < propCheckers.length; i++) {\n var name_1 = _this.props[i].name;\n var v = value[name_1];\n if (v === undefined) {\n if (isPropRequired[i]) {\n return ctx.fail(name_1, \"is missing\", 1);\n }\n }\n else {\n var ok = propCheckers[i](v, ctx);\n if (!ok) {\n return ctx.fail(name_1, null, 1);\n }\n }\n }\n return true;\n };\n if (!strict) {\n return checker;\n }\n var propSet = this.propSet;\n if (allowedProps) {\n this.propSet.forEach(function (prop) { return allowedProps.add(prop); });\n propSet = allowedProps;\n }\n // In strict mode, check also for unknown enumerable properties.\n return function (value, ctx) {\n if (!checker(value, ctx)) {\n return false;\n }\n for (var prop in value) {\n if (!propSet.has(prop)) {\n return ctx.fail(prop, \"is extraneous\", 2);\n }\n }\n return true;\n };\n };\n return TIface;\n}(TType));\nexports.TIface = TIface;\n/**\n * Defines an optional property on an interface.\n */\nfunction opt(typeSpec) { return new TOptional(parseSpec(typeSpec)); }\nexports.opt = opt;\nvar TOptional = /** @class */ (function (_super) {\n __extends(TOptional, _super);\n function TOptional(ttype) {\n var _this = _super.call(this) || this;\n _this.ttype = ttype;\n return _this;\n }\n TOptional.prototype.getChecker = function (suite, strict) {\n var itemChecker = this.ttype.getChecker(suite, strict);\n return function (value, ctx) {\n return value === undefined || itemChecker(value, ctx);\n };\n };\n return TOptional;\n}(TType));\nexports.TOptional = TOptional;\n/**\n * Defines a property in an interface.\n */\nvar TProp = /** @class */ (function () {\n function TProp(name, ttype, isOpt) {\n this.name = name;\n this.ttype = ttype;\n this.isOpt = isOpt;\n }\n return TProp;\n}());\nexports.TProp = TProp;\n/**\n * Defines a function. The first argument declares the function's return type, the rest declare\n * its parameters.\n */\nfunction func(resultSpec) {\n var params = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n params[_i - 1] = arguments[_i];\n }\n return new TFunc(new TParamList(params), parseSpec(resultSpec));\n}\nexports.func = func;\nvar TFunc = /** @class */ (function (_super) {\n __extends(TFunc, _super);\n function TFunc(paramList, result) {\n var _this = _super.call(this) || this;\n _this.paramList = paramList;\n _this.result = result;\n return _this;\n }\n TFunc.prototype.getChecker = function (suite, strict) {\n return function (value, ctx) {\n return typeof value === \"function\" ? true : ctx.fail(null, \"is not a function\", 0);\n };\n };\n return TFunc;\n}(TType));\nexports.TFunc = TFunc;\n/**\n * Defines a function parameter.\n */\nfunction param(name, typeSpec, isOpt) {\n return new TParam(name, parseSpec(typeSpec), Boolean(isOpt));\n}\nexports.param = param;\nvar TParam = /** @class */ (function () {\n function TParam(name, ttype, isOpt) {\n this.name = name;\n this.ttype = ttype;\n this.isOpt = isOpt;\n }\n return TParam;\n}());\nexports.TParam = TParam;\n/**\n * Defines a function parameter list.\n */\nvar TParamList = /** @class */ (function (_super) {\n __extends(TParamList, _super);\n function TParamList(params) {\n var _this = _super.call(this) || this;\n _this.params = params;\n return _this;\n }\n TParamList.prototype.getChecker = function (suite, strict) {\n var _this = this;\n var itemCheckers = this.params.map(function (t) { return t.ttype.getChecker(suite, strict); });\n var testCtx = new util_1.NoopContext();\n var isParamRequired = this.params.map(function (param, i) {\n return !param.isOpt && !itemCheckers[i](undefined, testCtx);\n });\n var checker = function (value, ctx) {\n if (!Array.isArray(value)) {\n return ctx.fail(null, \"is not an array\", 0);\n }\n for (var i = 0; i < itemCheckers.length; i++) {\n var p = _this.params[i];\n if (value[i] === undefined) {\n if (isParamRequired[i]) {\n return ctx.fail(p.name, \"is missing\", 1);\n }\n }\n else {\n var ok = itemCheckers[i](value[i], ctx);\n if (!ok) {\n return ctx.fail(p.name, null, 1);\n }\n }\n }\n return true;\n };\n if (!strict) {\n return checker;\n }\n return function (value, ctx) {\n if (!checker(value, ctx)) {\n return false;\n }\n return value.length <= itemCheckers.length ? true :\n ctx.fail(itemCheckers.length, \"is extraneous\", 2);\n };\n };\n return TParamList;\n}(TType));\nexports.TParamList = TParamList;\n/**\n * Single TType implementation for all basic built-in types.\n */\nvar BasicType = /** @class */ (function (_super) {\n __extends(BasicType, _super);\n function BasicType(validator, message) {\n var _this = _super.call(this) || this;\n _this.validator = validator;\n _this.message = message;\n return _this;\n }\n BasicType.prototype.getChecker = function (suite, strict) {\n var _this = this;\n return function (value, ctx) { return _this.validator(value) ? true : ctx.fail(null, _this.message, 0); };\n };\n return BasicType;\n}(TType));\nexports.BasicType = BasicType;\n/**\n * Defines the suite of basic types.\n */\nexports.basicTypes = {\n any: new BasicType(function (v) { return true; }, \"is invalid\"),\n number: new BasicType(function (v) { return (typeof v === \"number\"); }, \"is not a number\"),\n object: new BasicType(function (v) { return (typeof v === \"object\" && v); }, \"is not an object\"),\n boolean: new BasicType(function (v) { return (typeof v === \"boolean\"); }, \"is not a boolean\"),\n string: new BasicType(function (v) { return (typeof v === \"string\"); }, \"is not a string\"),\n symbol: new BasicType(function (v) { return (typeof v === \"symbol\"); }, \"is not a symbol\"),\n void: new BasicType(function (v) { return (v == null); }, \"is not void\"),\n undefined: new BasicType(function (v) { return (v === undefined); }, \"is not undefined\"),\n null: new BasicType(function (v) { return (v === null); }, \"is not null\"),\n never: new BasicType(function (v) { return false; }, \"is unexpected\"),\n Date: new BasicType(getIsNativeChecker(\"[object Date]\"), \"is not a Date\"),\n RegExp: new BasicType(getIsNativeChecker(\"[object RegExp]\"), \"is not a RegExp\"),\n};\n// This approach for checking native object types mirrors that of lodash. Its advantage over\n// `isinstance` is that it can still return true for native objects created in different JS\n// execution environments.\nvar nativeToString = Object.prototype.toString;\nfunction getIsNativeChecker(tag) {\n return function (v) { return typeof v === \"object\" && v && nativeToString.call(v) === tag; };\n}\nif (typeof Buffer !== \"undefined\") {\n exports.basicTypes.Buffer = new BasicType(function (v) { return Buffer.isBuffer(v); }, \"is not a Buffer\");\n}\nvar _loop_1 = function (array_1) {\n exports.basicTypes[array_1.name] = new BasicType(function (v) { return (v instanceof array_1); }, \"is not a \" + array_1.name);\n};\n// Support typed arrays of various flavors\nfor (var _i = 0, _a = [Int8Array, Uint8Array, Uint8ClampedArray, Int16Array, Uint16Array,\n Int32Array, Uint32Array, Float32Array, Float64Array, ArrayBuffer]; _i < _a.length; _i++) {\n var array_1 = _a[_i];\n _loop_1(array_1);\n}\n","\"use strict\";\nvar __spreadArrays = (this && this.__spreadArrays) || function () {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Checker = exports.createCheckers = void 0;\nvar types_1 = require(\"./types\");\nvar util_1 = require(\"./util\");\n/**\n * Export functions used to define interfaces.\n */\nvar types_2 = require(\"./types\");\nObject.defineProperty(exports, \"TArray\", { enumerable: true, get: function () { return types_2.TArray; } });\nObject.defineProperty(exports, \"TEnumType\", { enumerable: true, get: function () { return types_2.TEnumType; } });\nObject.defineProperty(exports, \"TEnumLiteral\", { enumerable: true, get: function () { return types_2.TEnumLiteral; } });\nObject.defineProperty(exports, \"TFunc\", { enumerable: true, get: function () { return types_2.TFunc; } });\nObject.defineProperty(exports, \"TIface\", { enumerable: true, get: function () { return types_2.TIface; } });\nObject.defineProperty(exports, \"TLiteral\", { enumerable: true, get: function () { return types_2.TLiteral; } });\nObject.defineProperty(exports, \"TName\", { enumerable: true, get: function () { return types_2.TName; } });\nObject.defineProperty(exports, \"TOptional\", { enumerable: true, get: function () { return types_2.TOptional; } });\nObject.defineProperty(exports, \"TParam\", { enumerable: true, get: function () { return types_2.TParam; } });\nObject.defineProperty(exports, \"TParamList\", { enumerable: true, get: function () { return types_2.TParamList; } });\nObject.defineProperty(exports, \"TProp\", { enumerable: true, get: function () { return types_2.TProp; } });\nObject.defineProperty(exports, \"TTuple\", { enumerable: true, get: function () { return types_2.TTuple; } });\nObject.defineProperty(exports, \"TType\", { enumerable: true, get: function () { return types_2.TType; } });\nObject.defineProperty(exports, \"TUnion\", { enumerable: true, get: function () { return types_2.TUnion; } });\nObject.defineProperty(exports, \"TIntersection\", { enumerable: true, get: function () { return types_2.TIntersection; } });\nObject.defineProperty(exports, \"array\", { enumerable: true, get: function () { return types_2.array; } });\nObject.defineProperty(exports, \"enumlit\", { enumerable: true, get: function () { return types_2.enumlit; } });\nObject.defineProperty(exports, \"enumtype\", { enumerable: true, get: function () { return types_2.enumtype; } });\nObject.defineProperty(exports, \"func\", { enumerable: true, get: function () { return types_2.func; } });\nObject.defineProperty(exports, \"iface\", { enumerable: true, get: function () { return types_2.iface; } });\nObject.defineProperty(exports, \"lit\", { enumerable: true, get: function () { return types_2.lit; } });\nObject.defineProperty(exports, \"name\", { enumerable: true, get: function () { return types_2.name; } });\nObject.defineProperty(exports, \"opt\", { enumerable: true, get: function () { return types_2.opt; } });\nObject.defineProperty(exports, \"param\", { enumerable: true, get: function () { return types_2.param; } });\nObject.defineProperty(exports, \"tuple\", { enumerable: true, get: function () { return types_2.tuple; } });\nObject.defineProperty(exports, \"union\", { enumerable: true, get: function () { return types_2.union; } });\nObject.defineProperty(exports, \"intersection\", { enumerable: true, get: function () { return types_2.intersection; } });\nObject.defineProperty(exports, \"BasicType\", { enumerable: true, get: function () { return types_2.BasicType; } });\nvar util_2 = require(\"./util\");\nObject.defineProperty(exports, \"VError\", { enumerable: true, get: function () { return util_2.VError; } });\n/**\n * Takes one of more type suites (e.g. a module generated by `ts-interface-builder`), and combines\n * them into a suite of interface checkers. If a type is used by name, that name should be present\n * among the passed-in type suites.\n *\n * The returned object maps type names to Checker objects.\n */\nfunction createCheckers() {\n var typeSuite = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n typeSuite[_i] = arguments[_i];\n }\n var fullSuite = Object.assign.apply(Object, __spreadArrays([{}, types_1.basicTypes], typeSuite));\n var checkers = {};\n for (var _a = 0, typeSuite_1 = typeSuite; _a < typeSuite_1.length; _a++) {\n var suite_1 = typeSuite_1[_a];\n for (var _b = 0, _c = Object.keys(suite_1); _b < _c.length; _b++) {\n var name = _c[_b];\n checkers[name] = new Checker(fullSuite, suite_1[name]);\n }\n }\n return checkers;\n}\nexports.createCheckers = createCheckers;\n/**\n * Checker implements validation of objects, and also includes accessors to validate method calls.\n * Checkers should be created using `createCheckers()`.\n */\nvar Checker = /** @class */ (function () {\n // Create checkers by using `createCheckers()` function.\n function Checker(suite, ttype, _path) {\n if (_path === void 0) { _path = 'value'; }\n this.suite = suite;\n this.ttype = ttype;\n this._path = _path;\n this.props = new Map();\n if (ttype instanceof types_1.TIface) {\n for (var _i = 0, _a = ttype.props; _i < _a.length; _i++) {\n var p = _a[_i];\n this.props.set(p.name, p.ttype);\n }\n }\n this.checkerPlain = this.ttype.getChecker(suite, false);\n this.checkerStrict = this.ttype.getChecker(suite, true);\n }\n /**\n * Set the path to report in errors, instead of the default \"value\". (E.g. if the Checker is for\n * a \"person\" interface, set path to \"person\" to report e.g. \"person.name is not a string\".)\n */\n Checker.prototype.setReportedPath = function (path) {\n this._path = path;\n };\n /**\n * Check that the given value satisfies this checker's type, or throw Error.\n */\n Checker.prototype.check = function (value) { return this._doCheck(this.checkerPlain, value); };\n /**\n * A fast check for whether or not the given value satisfies this Checker's type. This returns\n * true or false, does not produce an error message, and is fast both on success and on failure.\n */\n Checker.prototype.test = function (value) {\n return this.checkerPlain(value, new util_1.NoopContext());\n };\n /**\n * Returns an error object describing the errors if the given value does not satisfy this\n * Checker's type, or null if it does.\n */\n Checker.prototype.validate = function (value) {\n return this._doValidate(this.checkerPlain, value);\n };\n /**\n * Check that the given value satisfies this checker's type strictly. This checks that objects\n * and tuples have no extra members. Note that this prevents backward compatibility, so usually\n * a plain check() is more appropriate.\n */\n Checker.prototype.strictCheck = function (value) { return this._doCheck(this.checkerStrict, value); };\n /**\n * A fast strict check for whether or not the given value satisfies this Checker's type. Returns\n * true or false, does not produce an error message, and is fast both on success and on failure.\n */\n Checker.prototype.strictTest = function (value) {\n return this.checkerStrict(value, new util_1.NoopContext());\n };\n /**\n * Returns an error object describing the errors if the given value does not satisfy this\n * Checker's type strictly, or null if it does.\n */\n Checker.prototype.strictValidate = function (value) {\n return this._doValidate(this.checkerStrict, value);\n };\n /**\n * If this checker is for an interface, returns a Checker for the type required for the given\n * property of this interface.\n */\n Checker.prototype.getProp = function (prop) {\n var ttype = this.props.get(prop);\n if (!ttype) {\n throw new Error(\"Type has no property \" + prop);\n }\n return new Checker(this.suite, ttype, this._path + \".\" + prop);\n };\n /**\n * If this checker is for an interface, returns a Checker for the argument-list required to call\n * the given method of this interface. E.g. if this Checker is for the interface:\n * interface Foo {\n * find(s: string, pos?: number): number;\n * }\n * Then methodArgs(\"find\").check(...) will succeed for [\"foo\"] and [\"foo\", 3], but not for [17].\n */\n Checker.prototype.methodArgs = function (methodName) {\n var tfunc = this._getMethod(methodName);\n return new Checker(this.suite, tfunc.paramList);\n };\n /**\n * If this checker is for an interface, returns a Checker for the return value of the given\n * method of this interface.\n */\n Checker.prototype.methodResult = function (methodName) {\n var tfunc = this._getMethod(methodName);\n return new Checker(this.suite, tfunc.result);\n };\n /**\n * If this checker is for a function, returns a Checker for its argument-list.\n */\n Checker.prototype.getArgs = function () {\n if (!(this.ttype instanceof types_1.TFunc)) {\n throw new Error(\"getArgs() applied to non-function\");\n }\n return new Checker(this.suite, this.ttype.paramList);\n };\n /**\n * If this checker is for a function, returns a Checker for its result.\n */\n Checker.prototype.getResult = function () {\n if (!(this.ttype instanceof types_1.TFunc)) {\n throw new Error(\"getResult() applied to non-function\");\n }\n return new Checker(this.suite, this.ttype.result);\n };\n /**\n * Return the type for which this is a checker.\n */\n Checker.prototype.getType = function () {\n return this.ttype;\n };\n /**\n * Actual implementation of check() and strictCheck().\n */\n Checker.prototype._doCheck = function (checkerFunc, value) {\n var noopCtx = new util_1.NoopContext();\n if (!checkerFunc(value, noopCtx)) {\n var detailCtx = new util_1.DetailContext();\n checkerFunc(value, detailCtx);\n throw detailCtx.getError(this._path);\n }\n };\n Checker.prototype._doValidate = function (checkerFunc, value) {\n var noopCtx = new util_1.NoopContext();\n if (checkerFunc(value, noopCtx)) {\n return null;\n }\n var detailCtx = new util_1.DetailContext();\n checkerFunc(value, detailCtx);\n return detailCtx.getErrorDetail(this._path);\n };\n Checker.prototype._getMethod = function (methodName) {\n var ttype = this.props.get(methodName);\n if (!ttype) {\n throw new Error(\"Type has no property \" + methodName);\n }\n if (!(ttype instanceof types_1.TFunc)) {\n throw new Error(\"Property \" + methodName + \" is not a method\");\n }\n return ttype;\n };\n return Checker;\n}());\nexports.Checker = Checker;\n","/**\n * This module was automatically generated by `ts-interface-builder`\n */\nimport * as t from \"ts-interface-checker\";\n// tslint:disable:object-literal-key-quotes\n\nexport const OAuthConfigurationIF = t.iface([], {\n \"clientId\": \"string\",\n \"resource\": \"string\",\n \"oAuthUri\": \"string\",\n \"tokenUri\": \"string\",\n \"adminClaimName\": \"string\",\n});\n\nconst exportedTypeSuite: t.ITypeSuite = {\n OAuthConfigurationIF,\n};\nexport default exportedTypeSuite;\n","import OAuthConfigurationTI from \"./OAuthConfiguration-ti\";\nimport {createCheckers} from \"ts-interface-checker\";\n\ninterface OAuthConfigurationIF {\n clientId: string;\n resource: string;\n oAuthUri: string;\n tokenUri: string;\n adminClaimName: string;\n}\n\nconst {\n OAuthConfigurationIF\n} = createCheckers(OAuthConfigurationTI);\n\nclass OAuthConfiguration implements OAuthConfigurationIF {\n clientId: string;\n resource: string;\n oAuthUri: string;\n tokenUri: string;\n adminClaimName: string;\n\n constructor(from:any, validate=true) {\n if(validate) {\n //this will throw an error (VError from ts-interface-checker) if the configuration does not validate\n OAuthConfigurationIF.check(from);\n }\n this.clientId = from.clientId;\n this.resource = from.resource;\n this.oAuthUri = from.oAuthUri;\n this.tokenUri = from.tokenUri;\n this.adminClaimName = from.adminClaimName;\n }\n\n /**\n * returns a boolean indicating whether the frontend should treat this user as an admin or not\n * @param claimData\n */\n isAdmin(claimData:any) {\n return claimData.hasOwnProperty(this.adminClaimName);\n }\n}\n\nexport type {OAuthConfigurationIF};\nexport default OAuthConfiguration;","/**\n * call out to the IdP to request a refresh of the login using the refresh token stored in the localstorage.\n * on success, the updated token is stored in the local storage and the promise resolves\n * on failure, the local storage is not touched and the promise rejects with an error string\n * if the server returns a 500 or 503/504 error then it's assumed to be transient and the request will be retried\n * after a 2s delay.\n *\n * this is NOT written as a conventional async function in order to utilise more fine-grained control of when the promise\n * is resolved; i.e., it calls itself on a timer in order to retry so we must only resolve the promise once there has been\n * a definitive success or failure of the operation which could be after multiple calls\n * @param tokenUri server uri to make the refresh request to\n * @returns a Promise\n */\nexport const refreshLogin:(tokenUri:string)=>Promise = (tokenUri) => new Promise((resolve,reject)=>{\n const refreshToken = localStorage.getItem(\"pluto:refresh-token\");\n if(!refreshToken) {\n reject(\"No refresh token\");\n }\n\n const postdata:{[index:string]:string } = {\n grant_type: \"refresh_token\",\n refresh_token: refreshToken as string\n };\n const content_elements = Object.keys(postdata).map(\n (k) => k + \"=\" + encodeURIComponent(postdata[k])\n );\n const body_content = content_elements.join(\"&\");\n\n const performRefresh = async ()=> {\n const response = await fetch(tokenUri, {\n method: \"POST\",\n body: body_content,\n headers: {\n Accept: \"application/json\",\n \"Content-Type\": \"application/x-www-form-urlencoded\",\n },\n });\n switch (response.status) {\n case 200:\n const content = await response.json();\n console.log(\"Server response: \", content);\n localStorage.setItem(\"pluto:access-token\", content.access_token);\n if (content.refresh_token) localStorage.setItem(\"pluto:refresh-token\", content.refresh_token);\n resolve();\n break;\n case 403:\n case 401:\n console.log(\"Refresh was rejected with a forbidden error\");\n reject(\"Request forbidden\");\n break;\n case 500:\n console.log(\"Refresh was rejected due to a server error\");\n window.setTimeout(() => performRefresh(), 2000); //try again in 2s\n break;\n case 503:\n case 504:\n console.log(\"Authentication server not available\");\n window.setTimeout(() => performRefresh(), 2000); //try again in 2s\n break;\n default:\n const errorbody = await response.text();\n console.log(\"Unexpected response from authentication server: \", response.status, errorbody);\n reject(\"Unexpected response\");\n break;\n }\n }\n\n performRefresh().catch(err=>reject(err.toString()));\n})","import React from \"react\";\n\ninterface CustomisingThemeContext {\n darkMode: boolean;\n changeDarkMode: (newValue:boolean)=>void;\n}\n\nconst CustomisingThemeContext = React.createContext({\n darkMode: !(localStorage.getItem(\"pluto-dark-mode\") && localStorage.getItem(\"pluto-dark-mode\")==\"false\"), changeDarkMode: ()=>{}\n});\n\nexport const CustomisingThemeContextProvider = CustomisingThemeContext.Provider;\nexport default CustomisingThemeContext;\n","import React, {useState, useEffect, useRef, useContext} from \"react\";\nimport {Button, Grid, IconButton, Tooltip, Typography} from \"@material-ui/core\";\nimport {JwtDataShape} from \"../../utils/DecodedProfile\";\nimport {CircularProgress} from \"@material-ui/core\";\nimport {Error, CheckCircle, Person, Brightness7, Brightness4, HelpOutline} from \"@material-ui/icons\";\nimport {refreshLogin} from \"../../utils/OAuth2Helper\";\nimport {makeStyles} from \"@material-ui/core/styles\";\nimport CustomisingThemeContext from \"../Theme/CustomisingThemeContext\";\n\ninterface LoginComponentProps {\n refreshToken?: string;\n checkInterval?:number;\n loginData: JwtDataShape;\n onLoginRefreshed?: ()=>void;\n onLoginCantRefresh?: (reason:string)=>void;\n onLoginExpired: ()=>void;\n onLoggedOut?: ()=>void;\n overrideRefreshLogin?: (tokenUri:string)=>Promise; //only used for testing\n tokenUri: string;\n}\n\nconst useStyles = makeStyles({\n inlineIcon: {\n padding: 0,\n margin: \"auto\",\n display: \"inline-block\",\n marginRight: \"0.2em\",\n maxWidth: \"16px\",\n maxHeight: \"16px\",\n },\n textOnGrey: {\n color: \"black\"\n },\n iconButton: {\n height: \"36px\",\n width: \"36px\",\n padding: \"6px\"\n }\n});\n\nconst LoginComponent:React.FC = (props) => {\n const [refreshInProgress, setRefreshInProgress] = useState(false);\n const [refreshFailed, setRefreshFailed] = useState(false);\n const [refreshed, setRefreshed] = useState(false);\n const [loginExpiryCount, setLoginExpiryCount] = useState(\"\");\n\n let loginDataRef = useRef(props.loginData);\n const tokenUriRef = useRef(props.tokenUri);\n const overrideRefreshLoginRef = useRef(props.overrideRefreshLogin);\n\n const classes = useStyles();\n\n const themeContext = useContext(CustomisingThemeContext);\n\n useEffect(()=>{\n const intervalTimerId = window.setInterval(checkExpiryHandler, props.checkInterval ?? 60000);\n\n return (()=>{\n console.log(\"removing checkExpiryHandler\")\n window.clearInterval(intervalTimerId);\n })\n }, []);\n\n useEffect(()=>{\n console.log(\"refreshFailed was toggled to \", refreshFailed);\n if(refreshFailed) {\n console.log(\"setting countdown handler\");\n const intervalTimerId = window.setInterval(updateCountdownHandler, 1000);\n return (()=>{\n console.log(\"cleared countdown handler\");\n window.clearInterval(intervalTimerId);\n })\n }\n }, [refreshFailed]);\n\n useEffect(()=>{\n loginDataRef.current = props.loginData;\n }, [props.loginData]);\n\n /**\n * called periodically every second once a refresh has failed to alert the user how long they have left\n */\n const updateCountdownHandler = () => {\n const nowTime = new Date().getTime() / 1000; //assume time is in seconds\n const expiry = loginDataRef.current.exp;\n const timeToGo = expiry - nowTime;\n\n if(timeToGo>1) {\n setLoginExpiryCount(`expires in ${Math.ceil(timeToGo)}s`);\n } else {\n if(props.onLoginExpired) props.onLoginExpired();\n setLoginExpiryCount(\"has expired\");\n }\n }\n\n /**\n * lightweight function that is called every minute to verify the state of the token\n * it returns a promise that resolves when the component state has been updated. In normal usage this\n * is ignored but it is used in testing to ensure that the component state is only checked after it has been set.\n */\n const checkExpiryHandler = () => {\n if (loginDataRef.current) {\n const nowTime = new Date().getTime() / 1000; //assume time is in seconds\n //we know that it is not null due to above check\n const expiry = loginDataRef.current.exp;\n const timeToGo = expiry - nowTime;\n\n if (timeToGo <= 120) {\n console.log(\"less than 2mins to expiry, attempting refresh...\");\n setRefreshInProgress(true);\n\n let refreshedPromise;\n\n if(overrideRefreshLoginRef.current){\n refreshedPromise = overrideRefreshLoginRef.current(tokenUriRef.current);\n } else {\n refreshedPromise = refreshLogin(tokenUriRef.current);\n }\n\n refreshedPromise.then(()=>{\n console.log(\"Login refreshed\");\n setRefreshInProgress(false);\n setRefreshFailed(false);\n setRefreshed(true);\n\n if(props.onLoginRefreshed) props.onLoginRefreshed();\n window.setTimeout(()=>setRefreshed(false), 5000); //show success message for 5s\n }).catch(errString=>{\n if(props.onLoginCantRefresh) props.onLoginCantRefresh(errString);\n setRefreshFailed(true);\n setRefreshInProgress(false);\n updateCountdownHandler();\n return;\n })\n }\n } else {\n console.log(\"no login data present for expiry check\");\n }\n };\n\n const toggleThemeMode = ()=>themeContext.changeDarkMode(!themeContext.darkMode);\n const openDocs = ()=> window.open(\n \"https://docs.google.com/document/d/1QG9mOu_HDBoGqQs7Dly0sxifk4w9vaJiDiWdi3Uk1a8\",\n \"_blank\"\n )\n return (\n \n \n \n \n You are logged in as\n \n {props.loginData.preferred_username ?? props.loginData.username}\n \n \n \n \n \n {\n themeContext.darkMode ? : \n }\n \n \n \n \n \n \n \n \n \n \n {\n refreshInProgress ?\n \n \n \n Refreshing your login...\n \n \n : null\n }\n {\n refreshFailed ?\n \n \n \n \n \n Login {loginExpiryCount}\n \n \n \n \n : null\n }\n {\n refreshed ?\n \n \n \n Token refreshed\n \n \n : null\n }\n\n \n {\n if (props.onLoggedOut) {\n props.onLoggedOut();\n return;\n }\n\n window.location.assign(\"/logout\");\n }}\n >\n Logout\n \n \n \n )\n}\n\nexport default LoginComponent;\n","import React, {useState, useEffect, useContext} from \"react\";\nimport { Link } from \"react-router-dom\";\nimport \"./AppSwitcher.css\";\nimport { Button } from \"@material-ui/core\";\nimport { loadInSigningKey, validateAndDecode } from \"../../utils/JwtHelpers\";\nimport { JwtData, JwtDataShape } from \"../../utils/DecodedProfile\";\nimport {\n hrefIsTheSameDeploymentRootPath,\n getDeploymentRootPathLink,\n} from \"../../utils/AppLinks\";\nimport { MenuButton } from \"../MenuButton/MenuButton\";\nimport OAuthConfiguration from \"../../utils/OAuthConfiguration\";\nimport { VError } from \"ts-interface-checker\";\nimport LoginComponent from \"./LoginComponent\";\n\ninterface AppSwitcherProps {\n onLoggedIn?: () => void;\n onLoggedOut?: () => void;\n onLoginValid?: (valid: boolean, jwtDataShape?: JwtDataShape) => void;\n}\n\nexport const AppSwitcher: React.FC = (props) => {\n const [isLoggedIn, setIsLoggedIn] = useState(false);\n const [isAdmin, setIsAdmin] = useState(false);\n const [loginData, setLoginData] = useState(null);\n const [expired, setExpired] = useState(false);\n\n // config\n const [menuSettings, setMenuSettings] = useState(\n []\n );\n const [clientId, setClientId] = useState(\"\");\n const [resource, setResource] = useState(\"\");\n const [oAuthUri, setOAuthUri] = useState(\"\");\n const [adminClaimName, setAdminClaimName] = useState(\"\");\n const [tokenUri, setTokenUri] = useState(\"\");\n\n\n const loadConfig: () => Promise = async () => {\n try {\n const response = await fetch(\"/meta/menu-config/menu.json\");\n\n if (response.status === 200) {\n const data = await response.json();\n\n setMenuSettings(data);\n }\n } catch (error) {\n console.error(error);\n }\n\n const response = await fetch(\"/meta/oauth/config.json\");\n if (response.status === 200) {\n const data = await response.json();\n const config = new OAuthConfiguration(data); //validates the configuration and throws a VError if it fails\n setClientId(config.clientId);\n setResource(config.resource);\n setOAuthUri(config.oAuthUri);\n setTokenUri(config.tokenUri);\n setAdminClaimName(config.adminClaimName);\n return config;\n } else {\n throw `Server returned ${response.status}`;\n }\n };\n\n const validateToken: (config: OAuthConfiguration) => Promise = async (\n config: OAuthConfiguration\n ) => {\n const token = window.localStorage.getItem(\"pluto:access-token\");\n if (!token) return;\n\n try {\n const signingKey = await loadInSigningKey();\n\n const decodedData = await validateAndDecode(token, signingKey);\n if(decodedData) {\n const loginData = JwtData(decodedData);\n setLoginData(loginData);\n\n // Login valid callback if provided\n if (props.onLoginValid) {\n props.onLoginValid(true, loginData);\n }\n\n setIsLoggedIn(true);\n\n setIsAdmin(config.isAdmin(loginData));\n } else {\n throw \"Got no user profile\"\n }\n } catch (error) {\n // Login valid callback if provided\n if (props.onLoginValid) {\n props.onLoginValid(false);\n }\n\n setIsLoggedIn(false);\n setIsAdmin(false);\n\n if (error.hasOwnProperty(\"name\") && error.name === \"TokenExpiredError\") {\n console.error(\"Token has already expired\");\n setExpired(true);\n } else {\n console.error(\"existing login token was not valid: \", error);\n }\n }\n };\n\n /**\n * load in the oauth config and validate the loaded in token\n */\n const refresh = async () => {\n try {\n const config = await loadConfig();\n await validateToken(config);\n } catch(err) {\n if (err instanceof VError) {\n console.log(\"OAuth configuration was not valid: \", err);\n } else {\n console.log(\"Could not load oauth configuration: \", err);\n }\n }\n }\n\n useEffect(() => {\n refresh();\n }, []);\n\n const makeLoginUrl = () => {\n const currentUri = new URL(window.location.href);\n const redirectUri =\n currentUri.protocol + \"//\" + currentUri.host + \"/oauth2/callback\";\n\n const args: Record = {\n response_type: \"code\",\n client_id: clientId,\n resource: resource,\n redirect_uri: redirectUri,\n state: currentUri.pathname,\n };\n\n const encoded = Object.entries(args).map(\n ([k, v]) => `${k}=${encodeURIComponent(v)}`\n );\n\n return oAuthUri + \"?\" + encoded.join(\"&\");\n };\n\n const getLink = (\n text: string,\n href: string,\n adminOnly: boolean | undefined,\n index: number\n ) => (\n \n {hrefIsTheSameDeploymentRootPath(href) ? (\n {text}\n ) : (\n {text}\n )}\n \n );\n\n return (\n <>\n {isLoggedIn && loginData ? (\n
\n
    \n {(\n menuSettings || []\n ).map(({ type, text, href, adminOnly, content }, index) =>\n type === \"link\" ? (\n getLink(text, href, adminOnly, index)\n ) : (\n \n )\n )}\n
\n {\n refresh();\n }}\n onLoginExpired={()=>{\n setExpired(true);\n setIsLoggedIn(false);\n }}\n tokenUri={tokenUri}\n />\n
\n ) : (\n
\n \n {expired\n ? \"Your login has expired\"\n : \"You are not currently logged in\"}\n {\n if (props.onLoggedIn) {\n props.onLoggedIn();\n return;\n }\n\n // Perform login\n window.location.assign(makeLoginUrl());\n }}\n >\n Login {expired ? \"again\" : \"\"}\n \n \n
\n )}\n \n );\n};\n","import React from \"react\";\nimport GuardianLogo from \"../../static/guardian_white.svg\";\nimport \"./Header.css\";\n\nexport const Header = () => {\n return (\n <>\n
\n
\n \n \n \n
\n
\n \n );\n};\n","import axios, { AxiosResponse } from \"axios\";\nimport qs from \"query-string\";\n\ninterface RefreshTokenResponse {\n access_token: string;\n refresh_token: string;\n}\n\ninterface PlutoConfig {\n tokenUri: string;\n clientId: string;\n}\n\n/**\n * Refreshes a token e.g. an expired token and returns an active token.\n */\nexport const refreshToken = async (\n plutoConfig: PlutoConfig\n): Promise => {\n const { tokenUri, clientId } = plutoConfig;\n const postdata: { [key: string]: string } = {\n grant_type: \"refresh_token\",\n client_id: clientId,\n refresh_token: window.localStorage.getItem(\"pluto:refresh-token\") as string,\n };\n\n try {\n const response = await axios.post(tokenUri, qs.stringify(postdata), {\n headers: {\n Accept: \"application/json\",\n \"Content-Type\": \"application/x-www-form-urlencoded\",\n },\n });\n\n if (response.status === 200) {\n const data = await response.data;\n\n return data;\n }\n\n throw new Error(`Could not fetch refresh token`);\n } catch (error) {\n return Promise.reject(error);\n }\n};\n\ninterface FailedQueue {\n resolve: (value?: unknown) => void;\n reject: (reason?: any) => void;\n}\n\nlet isRefreshing = false;\nlet failedQueue: FailedQueue[] = [];\n\nconst processQueue = (error: any, token: string | null) => {\n failedQueue.forEach((prom) => {\n if (error) {\n prom.reject(error);\n } else {\n prom.resolve(token);\n }\n });\n\n failedQueue = [];\n};\n\n/**\n * Retries the API call with a refresh token on 401 Unauthorized.\n */\nexport const handleUnauthorized = async (\n plutoConfig: PlutoConfig,\n error: any,\n failureCallback: () => void\n): Promise => {\n const originalRequest = error.config;\n\n if (!originalRequest._retry && error.response.status === 401) {\n // Handle several incoming http requests that fails on 401 Unauthorized\n // Therefore create a queue of the failing requests\n // and resolve them when refresh token is fetched\n // or reject them if failed to fetch the request token.\n if (isRefreshing) {\n return new Promise((resolve, reject) => {\n failedQueue.push({ resolve, reject });\n })\n .then((token) => {\n originalRequest.headers.Authorization = `Bearer ${token}`;\n return axios(originalRequest);\n })\n .catch((error) => {\n return Promise.reject(error);\n });\n }\n\n originalRequest._retry = true;\n isRefreshing = true;\n\n try {\n const data = await refreshToken(plutoConfig);\n\n window.localStorage.setItem(\"pluto:access-token\", data.access_token);\n window.localStorage.setItem(\"pluto:refresh-token\", data.refresh_token);\n\n originalRequest.headers.Authorization = `Bearer ${data.access_token}`;\n processQueue(null, data.access_token);\n return axios(originalRequest);\n } catch (error) {\n if (failureCallback) {\n failureCallback();\n }\n\n processQueue(error, null);\n return Promise.reject(error);\n } finally {\n isRefreshing = false;\n }\n }\n};\n","import React from \"react\";\nimport axios from \"axios\";\nimport \"./Breadcrumb.css\";\nimport IconCommission from \"../../static/c.svg\";\nimport IconProject from \"../../static/p.svg\";\nimport IconMaster from \"../../static/m.svg\";\nimport {Link} from \"@material-ui/core\";\nimport { ChevronRightRounded} from \"@material-ui/icons\";\n\n/**\n * only one of these needs to be set. The others will be inferred from the data about it.\n * if masterId is set, the other two are ignored\n * if masterId is not set and projectId is set, then commissionId is ignored\n * if neither masterId nor projectId is set, then commisisonId is used\n */\ninterface BreadcrumbProps {\n masterId?: number;\n projectId?: number;\n commissionId?: number;\n plutoCoreBaseUri?: string;\n}\n\ninterface BreadcrumbState {\n hasError: boolean;\n loading: boolean;\n projectName: string;\n commissionName: string;\n masterName: string;\n commissionId?: number;\n projectId?: number;\n}\n\ninterface UsefulServerData {\n projectId?: number;\n commissionId?: number;\n title: string;\n workingGroupId?: number;\n}\n\nclass Breadcrumb extends React.Component {\n constructor(props: BreadcrumbProps) {\n super(props);\n\n this.state = {\n hasError: false,\n loading: false,\n projectName: \"\",\n commissionName: \"\",\n masterName: \"\",\n commissionId: undefined,\n projectId: undefined\n };\n }\n\n /**\n * implement an error boundary so we can't break the rest of the UI\n * @param error\n */\n static getDerivedStateFromError(error: any) {\n return { loading: false, hasError: true };\n }\n\n componentDidCatch(error: Error, errorInfo: React.ErrorInfo) {\n console.error(\n \"An uncaught error happened in the Breadcrumb component \",\n error,\n errorInfo\n );\n }\n\n /**\n * return a promise that completes when state change is complete\n */\n setStatePromise(newState: any): Promise {\n return new Promise((resolve, reject) =>\n this.setState(newState, () => resolve())\n );\n }\n\n /**\n * generic function to load in data from either project or commission endpoints in pluto-core\n * @param url url to load\n */\n async plutoCoreLoad(url: string): Promise {\n try {\n const response = await axios.get(url);\n if (response.data && response.data.result && response.data.result.title) {\n return {\n title: response.data.result.title,\n workingGroupId: response.data.result.workingGroupId,\n commissionId: response.data.result.commissionId ?? response.data.id,\n };\n } else {\n return {\n title: \"(none)\",\n };\n }\n } catch (err) {\n if (err.response) {\n switch (err.response.status) {\n case 404:\n console.info(\"No data existed for the url \", url);\n return {\n title: \"(none)\",\n };\n case 503:\n case 504:\n console.info(\"pluto-core is not responding, retrying...\");\n\n return new Promise((resolve, reject) => {\n window.setTimeout(() => {\n this.plutoCoreLoad(url)\n .then((result) => resolve(result))\n .catch((err) => reject(err));\n }, 2000);\n });\n default:\n break;\n }\n }\n throw \"Could not load pluto-core data\";\n console.error(err);\n }\n return {\n title: \"(none)\",\n }; //we shouldn't get here but the compiler wants a return\n }\n\n async loadCommissionData(): Promise {\n await this.setStatePromise({ loading: true });\n //I could do the whole type-registration thing and validate it for the data, but really we are only interested\n //in a field or two so I might as well do it manually.\n const url = `${this.props.plutoCoreBaseUri ?? \"/pluto-core\"}/api/pluto/commission/${this.props.commissionId}`;\n\n try {\n const serverContent = await this.plutoCoreLoad(url);\n return this.setStatePromise({\n loading: false,\n commissionName: serverContent.title,\n });\n } catch (err) {\n return this.setStatePromise({ loading: false, hasError: true });\n }\n }\n\n async loadProjectData(): Promise {\n await this.setStatePromise({ loading: true });\n const url = `${this.props.plutoCoreBaseUri ?? \"/pluto-core\"}/api/project/${this.props.projectId}`;\n\n try {\n const serverContentProject = await this.plutoCoreLoad(url);\n if (serverContentProject.commissionId) {\n const commissionUrl = `${this.props.plutoCoreBaseUri ?? \"/pluto-core\"}/api/pluto/commission/${serverContentProject.commissionId}`;\n const serverContentComm = await this.plutoCoreLoad(commissionUrl);\n return this.setStatePromise({\n loading: false,\n commissionName: serverContentComm.title,\n commissionId: serverContentProject.commissionId,\n projectName: serverContentProject.title,\n });\n } else {\n return this.setStatePromise({\n loading: false,\n projectName: serverContentProject.title,\n });\n }\n } catch (err) {\n console.error(\"Could not load project data: \", err);\n return this.setStatePromise({ loading: false, hasError: true });\n }\n }\n\n async loadMasterData(): Promise {\n await this.setStatePromise({ loading: true });\n const url = `/deliverables/api/asset/${this.props.masterId}`;\n\n console.log(\"loadMasterData not implemented yet\");\n return this.setStatePromise({ loading: false, hasError: true });\n }\n\n /**\n * master load function that hands off to specific ones\n */\n async loadData() {\n if (this.props.masterId) {\n return this.loadMasterData();\n } else if (this.props.projectId) {\n return this.loadProjectData();\n } else if (this.props.commissionId) {\n return this.loadCommissionData();\n } else {\n console.error(\n \"Breadcrumb component has no master, project nor commission id.\"\n );\n }\n }\n\n componentDidUpdate(prevProps: Readonly, prevState: Readonly, snapshot?: any) {\n if(prevProps!=this.props) this.loadData();\n }\n\n componentDidMount() {\n this.loadData();\n }\n\n render() {\n if (this.state.hasError) {\n return (\n
\n

Could not load location data

\n
\n );\n } else {\n return (\n
\n {this.state.commissionName == \"\" ? null : (\n
\n \n {this.state.commissionName}\n {\n this.state.projectName==\"\" ? null : \n }\n
\n )}\n {this.state.projectName == \"\" ? null : (\n
\n \n {this.state.projectName}\n {\n this.state.masterName==\"\" ? null : \n }\n
\n )}\n {this.state.masterName == \"\" ? null : (\n
\n \n

{this.state.masterName}

\n
\n )}\n
\n );\n }\n }\n}\n\nexport { Breadcrumb };\n","import React, { useState } from \"react\";\nimport { Snackbar } from \"@material-ui/core\";\nimport MuiAlert, { AlertProps, Color } from \"@material-ui/lab/Alert\";\n\n/**\n * these values correspond to the material-ui palette labels, so are safe to use below with\n * `severity={SystemNotificationKind.toString() as Color}`\n */\nexport enum SystemNotifcationKind {\n Success = \"success\",\n Error = \"error\",\n Info = \"info\",\n Warning = \"warning\",\n}\n\ntype OpenFunc = (kind: SystemNotifcationKind, message: string) => void;\n\nlet openSystemNotification: OpenFunc; //allows us to access the `openSystemNotification` function from outside the component definition\n\nfunction Alert(props: AlertProps) {\n return ;\n}\n\nconst SystemNotification: React.FC<{}> & { open: OpenFunc } = () => {\n const autoHideDuration = 4000;\n\n const [open, setOpen] = useState(false);\n const [message, setMessage] = useState(\"\");\n const [kind, setKind] = useState(\n SystemNotifcationKind.Info\n );\n\n const close = () => {\n setOpen(false);\n };\n\n openSystemNotification = (kind: SystemNotifcationKind, message: string) => {\n setKind(kind);\n setMessage(message);\n setOpen(true);\n };\n\n return (\n \n {message}\n \n );\n};\n\nSystemNotification.open = (kind: SystemNotifcationKind, message: string) =>\n openSystemNotification(kind, message);\n\nexport { SystemNotification };\n","import React, { useEffect, useState } from \"react\";\nimport { red } from \"@material-ui/core/colors\";\n\ninterface OAuthContextData {\n clientId: string;\n resource: string;\n oAuthUri: string;\n tokenUri: string;\n redirectUri: string;\n}\n\nconst OAuthContext = React.createContext(\n undefined\n);\n\nconst OAuthContextProvider: React.FC<{\n children: React.ReactFragment;\n onError?: (desc: string) => void;\n}> = (props) => {\n const [clientId, setClientId] = useState(\"\");\n const [resource, setResource] = useState(\"\");\n const [oAuthUri, setOAuthUri] = useState(\"\");\n const [tokenUri, setTokenUri] = useState(\"\");\n const [haveData, setHaveData] = useState(false);\n\n const currentUri = new URL(window.location.href);\n const redirectUrl =\n currentUri.protocol + \"//\" + currentUri.host + \"/oauth2/callback\";\n\n const loadOauthData = async () => {\n const response = await fetch(\"/meta/oauth/config.json\");\n switch (response.status) {\n case 200:\n const content = await response.json();\n\n setClientId(content.clientId);\n setResource(content.resource);\n setOAuthUri(content.oAuthUri);\n setTokenUri(content.tokenUri);\n setHaveData(true);\n break;\n case 404:\n await response.text(); //consume body and discard it\n if (props.onError)\n props.onError(\n \"Metadata not found on server, please contact administrator\"\n ); //temporary until we have global snackbar\n break;\n default:\n await response.text(); //consume body and discard it\n if (props.onError)\n props.onError(\n `Server returned a ${response.status} error trying to access meetadata`\n );\n break;\n }\n };\n\n useEffect(() => {\n loadOauthData();\n }, []);\n\n return (\n \n {props.children}\n \n );\n};\n\nfunction makeLoginUrl(oAuthContext: OAuthContextData) {\n const args = {\n response_type: \"code\",\n client_id: oAuthContext.clientId,\n resource: oAuthContext.resource,\n redirect_uri: oAuthContext.redirectUri,\n state: \"/\",\n };\n\n const encoded = Object.entries(args).map(\n ([k, v]) => `${k}=${encodeURIComponent(v)}`\n );\n\n return oAuthContext.oAuthUri + \"?\" + encoded.join(\"&\");\n}\n\nexport type { OAuthContextData };\n\nexport {OAuthContext, OAuthContextProvider, makeLoginUrl};\n","import React from \"react\";\nimport { JwtDataShape } from \"../../utils/DecodedProfile\";\n\ninterface UserContext {\n profile?: JwtDataShape;\n updateProfile: (newValue?: JwtDataShape) => void;\n}\n\nconst UserContext = React.createContext({\n profile: undefined,\n updateProfile: (newValue) => {},\n});\n\nexport const UserContextProvider = UserContext.Provider;\nexport { UserContext };\n","import { createTheme } from \"@material-ui/core/styles\";\nimport {PaletteOptions} from \"@material-ui/core/styles/createPalette\";\n\nconst defaultPlutoTheme = (dark:boolean)=>{\n const palette = dark ? {\n type: \"dark\",\n background: {\n paper: \"#424242EA\",\n }\n } as PaletteOptions: {\n type: \"light\",\n background: {\n paper: \"#FBFBFBEA\",\n }\n } as PaletteOptions\n\n return createTheme({\n typography: {\n fontFamily:\n '\"Guardian Text Sans Web\",\"Helvetica Neue\",Helvetica,Arial,\"Lucida Grande\",sans-serif',\n },\n palette: palette,\n });\n}\n\nexport {defaultPlutoTheme};\n","import React, {useEffect, useState} from \"react\";\nimport {defaultPlutoTheme} from \"./DefaultPlutoTheme\";\nimport {ThemeProvider} from \"@material-ui/core\";\nimport CustomisingThemeContext from \"./CustomisingThemeContext\";\n\ninterface PlutoThemeProviderProps {\n userSettingsUrl?: string;\n userSettingsKey?: string;\n}\n\nconst PlutoThemeProvider:React.FC = (props) => {\n const [darkMode, setDarkmode] = useState(!(localStorage.getItem(\"pluto-dark-mode\") && localStorage.getItem(\"pluto-dark-mode\")==\"false\"));\n\n const updateDarkMode = (newValue:boolean)=>{\n localStorage.setItem(\"pluto-dark-mode\", newValue ? \"true\" : \"false\");\n setDarkmode(newValue);\n }\n\n return \n \n {\n props.children\n }\n \n \n}\n\nexport {PlutoThemeProvider};"],"names":["fromUnixTime","addMinutes","jwt","useState","React","ArrowDropDownIcon","Menu","MenuItem","Link","this","util_1","types_1","t.iface","OAuthConfigurationIF","createCheckers","OAuthConfigurationTI","makeStyles","useRef","useContext","useEffect","Grid","Typography","Person","Tooltip","IconButton","Brightness7","Brightness4","HelpOutline","CircularProgress","Error","CheckCircle","Button","VError","GuardianLogo","axios","qs","IconCommission","ChevronRightRounded","IconProject","IconMaster","SystemNotifcationKind","MuiAlert","Snackbar","createTheme","ThemeProvider"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAqDA;AACO,SAAS,SAAS,CAAC,OAAO,EAAE,UAAU,EAAE,CAAC,EAAE,SAAS,EAAE;AAC7D,IAAI,SAAS,KAAK,CAAC,KAAK,EAAE,EAAE,OAAO,KAAK,YAAY,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC,UAAU,OAAO,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;AAChH,IAAI,OAAO,KAAK,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,EAAE,UAAU,OAAO,EAAE,MAAM,EAAE;AAC/D,QAAQ,SAAS,SAAS,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;AACnG,QAAQ,SAAS,QAAQ,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;AACtG,QAAQ,SAAS,IAAI,CAAC,MAAM,EAAE,EAAE,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,EAAE;AACtH,QAAQ,IAAI,CAAC,CAAC,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,UAAU,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;AAC9E,KAAK,CAAC,CAAC;AACP;;AC3EA,SAAS,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE;AAC/B,EAAE,KAAK,GAAG,KAAK,KAAK,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC;AACjC,EAAE,IAAI,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC;AAC9B;AACA,EAAE,IAAI,CAAC,GAAG,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE,EAAE,OAAO,EAAE;AAC1D;AACA,EAAE,IAAI,IAAI,GAAG,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AACvE,EAAE,IAAI,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;AAC9C,EAAE,KAAK,CAAC,IAAI,GAAG,UAAU,CAAC;AAC1B;AACA,EAAE,IAAI,QAAQ,KAAK,KAAK,EAAE;AAC1B,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE;AACzB,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;AAChD,KAAK,MAAM;AACX,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AAC9B,KAAK;AACL,GAAG,MAAM;AACT,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AAC5B,GAAG;AACH;AACA,EAAE,IAAI,KAAK,CAAC,UAAU,EAAE;AACxB,IAAI,KAAK,CAAC,UAAU,CAAC,OAAO,GAAG,GAAG,CAAC;AACnC,GAAG,MAAM;AACT,IAAI,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC;AACpD,GAAG;AACH;;;;;ACDA,SAAS,OAAO,CAAC,IAAY;;IAE3B,MAAM,IAAI,GAAGA,oBAAY,CAAC,IAAI,CAAC,CAAC;IAChC,OAAOC,kBAAU,CAAC,IAAI,EAAE,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;AACpD,CAAC;AAED,SAAS,OAAO,CAAC,OAAe;IAC9B,OAAO,IAAI,KAAK,CAAe,OAAO,EAAE;QACtC,GAAG,CAAC,MAAM,EAAE,IAAI;;YACd,QAAQ,IAAI;gBACV,KAAK,YAAY;oBACf,OAAO,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAC7B,KAAK,YAAY;oBACf,OAAO,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAC7B,KAAK,UAAU;oBACb,aAAO,MAAM,CAAC,kBAAkB,mCAAI,MAAM,CAAC,QAAQ,CAAC;gBACtD,KAAK,YAAY;oBACf,aAAO,MAAM,CAAC,UAAU,mCAAI,MAAM,CAAC,UAAU,CAAC;gBAChD;oBACE,aAAa,MAAO,CAAC,IAAI,CAAC,mCAAI,IAAI,CAAC;aACtC;SACF;KACF,CAAC,CAAC;AACL;;AC5CA;;;;;;AAMA,SAAS,SAAS,CAAC,KAAa,EAAE,UAAkB,EAAE,YAAqB;IACzE,OAAO,IAAI,OAAO,CAAyB,CAAC,OAAO,EAAE,MAAM;QACzDC,uBAAG,CAAC,MAAM,CAAC,KAAK,EAAE,UAAU,EAAE,CAAC,GAAG,EAAE,OAAO;YACzC,IAAI,GAAG,EAAE;gBACP,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;gBAC9B,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;gBACxC,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAE,GAAG,CAAC,CAAC;gBAC7C,MAAM,CAAC,GAAG,CAAC,CAAC;aACb;YAED,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,oBAAoB,EAAE,KAAK,CAAC,CAAC;YACzD,IAAI,YAAY;gBACd,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,qBAAqB,EAAE,YAAY,CAAC,CAAC;YACnE,OAAO,CAAC,OAAO,CAAC,CAAC;SAClB,CAAC,CAAC;KACJ,CAAC,CAAC;AACL,CAAC;AAED;;;;;;AAMA,SAAS,iBAAiB,CAAC,KAAY,EAAE,UAAiB,EAAE,YAAoB;IAC9E,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM;QACjCA,uBAAG,CAAC,MAAM,CAAC,KAAK,EAAE,UAAU,EAAE,CAAC,GAAG,EAAE,OAAO;YACzC,IAAI,GAAG,EAAE;gBACP,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;gBAC9B,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;gBACxC,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAE,GAAG,CAAC,CAAC;gBAC7C,MAAM,CAAC,GAAG,CAAC,CAAC;aACb;YAED,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,oBAAoB,EAAE,KAAK,CAAC,CAAC;YACzD,IAAI,YAAY;gBACd,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,qBAAqB,EAAE,YAAY,CAAC,CAAC;YACnE,OAAO,CAAC,OAAO,CAAC,CAAC;SAClB,CAAC,CAAC;KACJ,CAAC,CAAC;AACL,CAAC;AAED;;;;AAIA,SAAe,gBAAgB;;QAC7B,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,2BAA2B,CAAC,CAAC;QACxD,QAAQ,MAAM,CAAC,MAAM;YACnB,KAAK,GAAG;gBACN,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC;YACvB;gBACE,OAAO,CAAC,KAAK,CACT,iDAAiD,EACjD,MAAM,CAAC,MAAM,CAChB,CAAC;gBACF,MAAM,gCAAgC,CAAC;SAC1C;KACF;CAAA;AAED;;;;AAIA,SAAS,WAAW;IAClB,OAAO,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;AAC3D,CAAC;AAED;;;AAGA,SAAe,mBAAmB;;QAChC,MAAM,KAAK,GAAG,WAAW,EAAE,CAAC;QAC5B,IAAI,KAAK,EAAE;YACT,MAAM,UAAU,GAAG,MAAM,gBAAgB,EAAE,CAAC;YAC5C,MAAM,UAAU,GAAG,MAAM,SAAS,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;YACtD,OAAO,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,GAAG,SAAS,CAAC;SACrD;KACF;;;ACvFM,MAAM,+BAA+B,GAAG,CAAC,IAAY;IAC1D,IAAI,UAAU,GAAG,EAAE,CAAC;IACpB,IAAI;QACF,UAAU,GAAG,kBAAkB,CAAC;KACjC;IAAC,WAAM;QACN,UAAU,GAAG,EAAE,CAAC;KACjB;IAED,IAAI,CAAC,UAAU,EAAE;QACf,OAAO,KAAK,CAAC;KACd;IAED,OAAO,IAAI,KAAK,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;AACnD,CAAC,CAAC;AAEK,MAAM,yBAAyB,GAAG,CAAC,IAAY;IACpD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC;IAE/C,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;AAClD,CAAC;;;;;ACDM,MAAM,UAAU,GAA8B,CAAC,KAAK;IACzD,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC;IAC3D,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAGC,cAAQ,CAAqB,IAAI,CAAC,CAAC;IAEnE,MAAM,WAAW,GAAG,CAAC,KAA0C;QAC7D,WAAW,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;KAClC,CAAC;IAEF,MAAM,SAAS,GAAG;QAChB,WAAW,CAAC,IAAI,CAAC,CAAC;KACnB,CAAC;IAEF,QACEC,gDACE,KAAK,EAAE;YACL,OAAO,EAAE,SAAS,IAAI,OAAO,GAAG,SAAS,GAAG,MAAM,IAAI,SAAS;SAChE;QAEDA,oDACE,SAAS,EAAC,gBAAgB,mBACX,qBAAqB,KAAK,EAAE,mBAC7B,MAAM,EACpB,OAAO,EAAE,WAAW;YAEnB,IAAI;YACLA,wCAACC,qCAAiB,IAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAsB,CAC7D;QACTD,wCAACE,SAAI,IACH,EAAE,EAAE,qBAAqB,KAAK,EAAE,EAChC,QAAQ,EAAE,QAAQ,EAClB,kBAAkB,EAAE,IAAI,EACxB,YAAY,EAAE;gBACZ,QAAQ,EAAE,QAAQ;gBAClB,UAAU,EAAE,QAAQ;aACrB,EACD,eAAe,EAAE;gBACf,QAAQ,EAAE,KAAK;gBACf,UAAU,EAAE,QAAQ;aACrB,EACD,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,EACvB,OAAO,EAAE,SAAS,IAEjB,CAAC,OAAO,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,KAAK;YAC1D,IAAI,IAAI,KAAK,SAAS,EAAE;gBACtB,OAAO,CAAC,KAAK,CACX,kFAAkF,CACnF,CAAC;gBACF,OAAO;aACR;YAED,IAAI,+BAA+B,CAAC,IAAI,CAAC,EAAE;gBACzC,QACEF,wCAACG,aAAQ,IACP,GAAG,EAAE,GAAG,KAAK,YAAY,EACzB,KAAK,EAAE;wBACL,OAAO,EAAE,SAAS;8BACd,OAAO;kCACL,SAAS;kCACT,MAAM;8BACR,SAAS;qBACd,EACD,SAAS,EAAEC,mBAAI,EACf,EAAE,EAAE,yBAAyB,CAAC,IAAI,CAAC,EACnC,OAAO,EAAE;wBACP,SAAS,EAAE,CAAC;qBACb,IAEA,IAAI,CACI,EACX;aACH;YAED,QACEJ,wCAACG,aAAQ,IACP,GAAG,EAAE,GAAG,KAAK,YAAY,EACzB,KAAK,EAAE;oBACL,OAAO,EAAE,SAAS,IAAI,OAAO,GAAG,SAAS,GAAG,MAAM,IAAI,SAAS;iBAChE,EACD,OAAO,EAAE;oBACP,SAAS,EAAE,CAAC;oBACZ,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;iBAC9B,IAEA,IAAI,CACI,EACX;SACH,CAAC,CACG,CACJ,EACL;AACJ,CAAC;;;;;;;;;;;;;;;;;;;AC3GD,IAAI,SAAS,GAAG,CAACE,cAAI,IAAIA,cAAI,CAAC,SAAS,KAAK,CAAC,YAAY;AACzD,IAAI,IAAI,aAAa,GAAG,UAAU,CAAC,EAAE,CAAC,EAAE;AACxC,QAAQ,aAAa,GAAG,MAAM,CAAC,cAAc;AAC7C,aAAa,EAAE,SAAS,EAAE,EAAE,EAAE,YAAY,KAAK,IAAI,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,EAAE,CAAC;AACxF,YAAY,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AACvF,QAAQ,OAAO,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACnC,KAAK,CAAC;AACN,IAAI,OAAO,UAAU,CAAC,EAAE,CAAC,EAAE;AAC3B,QAAQ,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC5B,QAAQ,SAAS,EAAE,GAAG,EAAE,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,EAAE;AAC/C,QAAQ,CAAC,CAAC,SAAS,GAAG,CAAC,KAAK,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;AAC7F,KAAK,CAAC;AACN,CAAC,GAAG,CAAC;AACL,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;AAC9D,qBAAqB,GAAG,mBAAmB,GAAG,cAAc,GAAG,KAAK,CAAC,CAAC;AACtE;AACA;AACA;AACA;AACA,IAAI,MAAM,kBAAkB,UAAU,MAAM,EAAE;AAC9C,IAAI,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAC9B,IAAI,SAAS,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE;AACnC,QAAQ,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,CAAC;AACvD,QAAQ,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC;AAC1B;AACA,QAAQ,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;AACvD,QAAQ,OAAO,KAAK,CAAC;AACrB,KAAK;AACL,IAAI,OAAO,MAAM,CAAC;AAClB,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACV,cAAc,GAAG,MAAM,CAAC;AACxB;AACA;AACA;AACA;AACA;AACA,IAAI,WAAW,kBAAkB,YAAY;AAC7C,IAAI,SAAS,WAAW,GAAG;AAC3B,KAAK;AACL,IAAI,WAAW,CAAC,SAAS,CAAC,IAAI,GAAG,UAAU,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE;AACpE,QAAQ,OAAO,KAAK,CAAC;AACrB,KAAK,CAAC;AACN,IAAI,WAAW,CAAC,SAAS,CAAC,aAAa,GAAG,YAAY,EAAE,OAAO,IAAI,CAAC,EAAE,CAAC;AACvE,IAAI,WAAW,CAAC,SAAS,CAAC,aAAa,GAAG,YAAY,EAAE,OAAO,IAAI,CAAC,EAAE,CAAC;AACvE,IAAI,WAAW,CAAC,SAAS,CAAC,YAAY,GAAG,UAAU,EAAE,EAAE,GAAG,CAAC;AAC3D,IAAI,OAAO,WAAW,CAAC;AACvB,CAAC,EAAE,CAAC,CAAC;AACL,mBAAmB,GAAG,WAAW,CAAC;AAClC;AACA;AACA;AACA,IAAI,aAAa,kBAAkB,YAAY;AAC/C,IAAI,SAAS,aAAa,GAAG;AAC7B;AACA,QAAQ,IAAI,CAAC,UAAU,GAAG,CAAC,EAAE,CAAC,CAAC;AAC/B,QAAQ,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,CAAC;AAChC;AACA;AACA,QAAQ,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;AACxB,KAAK;AACL,IAAI,aAAa,CAAC,SAAS,CAAC,IAAI,GAAG,UAAU,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE;AACtE,QAAQ,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACtC,QAAQ,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACrC,QAAQ,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC;AAC7B,QAAQ,OAAO,KAAK,CAAC;AACrB,KAAK,CAAC;AACN,IAAI,aAAa,CAAC,SAAS,CAAC,aAAa,GAAG,YAAY;AACxD,QAAQ,OAAO,IAAI,mBAAmB,EAAE,CAAC;AACzC,KAAK,CAAC;AACN,IAAI,aAAa,CAAC,SAAS,CAAC,YAAY,GAAG,UAAU,aAAa,EAAE;AACpE,QAAQ,IAAI,EAAE,EAAE,EAAE,CAAC;AACnB,QAAQ,IAAI,CAAC,GAAG,aAAa,CAAC;AAC9B,QAAQ,IAAI,IAAI,GAAG,IAAI,CAAC;AACxB,QAAQ,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE;AAChE,YAAY,IAAI,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;AAC7B,YAAY,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,EAAE;AACpD,gBAAgB,IAAI,GAAG,GAAG,CAAC;AAC3B,aAAa;AACb,SAAS;AACT,QAAQ,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;AACrC,YAAY,CAAC,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;AACnE,YAAY,CAAC,EAAE,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;AACjE,SAAS;AACT,KAAK,CAAC;AACN,IAAI,aAAa,CAAC,SAAS,CAAC,QAAQ,GAAG,UAAU,IAAI,EAAE;AACvD,QAAQ,IAAI,QAAQ,GAAG,EAAE,CAAC;AAC1B,QAAQ,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;AAC9D,YAAY,IAAI,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AACvC,YAAY,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;AACjF,YAAY,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AACtC,YAAY,IAAI,CAAC,EAAE;AACnB,gBAAgB,QAAQ,CAAC,IAAI,CAAC,IAAI,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC;AAC9C,aAAa;AACb,SAAS;AACT,QAAQ,OAAO,IAAI,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACrD,KAAK,CAAC;AACN,IAAI,aAAa,CAAC,SAAS,CAAC,cAAc,GAAG,UAAU,IAAI,EAAE;AAC7D,QAAQ,IAAI,OAAO,GAAG,EAAE,CAAC;AACzB,QAAQ,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;AAC9D,YAAY,IAAI,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AACvC,YAAY,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;AACjF,YAAY,IAAI,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAC5C,YAAY,IAAI,OAAO,EAAE;AACzB,gBAAgB,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;AAC/D,aAAa;AACb,SAAS;AACT,QAAQ,IAAI,MAAM,GAAG,IAAI,CAAC;AAC1B,QAAQ,KAAK,IAAI,CAAC,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;AACtD,YAAY,IAAI,MAAM,EAAE;AACxB,gBAAgB,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,MAAM,CAAC,CAAC;AAC7C,aAAa;AACb,YAAY,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AAChC,SAAS;AACT,QAAQ,OAAO,MAAM,CAAC;AACtB,KAAK,CAAC;AACN,IAAI,OAAO,aAAa,CAAC;AACzB,CAAC,EAAE,CAAC,CAAC;AACL,qBAAqB,GAAG,aAAa,CAAC;AACtC,IAAI,mBAAmB,kBAAkB,YAAY;AACrD,IAAI,SAAS,mBAAmB,GAAG;AACnC,QAAQ,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;AAC3B,KAAK;AACL,IAAI,mBAAmB,CAAC,SAAS,CAAC,aAAa,GAAG,YAAY;AAC9D,QAAQ,IAAI,GAAG,GAAG,IAAI,aAAa,EAAE,CAAC;AACtC,QAAQ,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAChC,QAAQ,OAAO,GAAG,CAAC;AACnB,KAAK,CAAC;AACN,IAAI,OAAO,mBAAmB,CAAC;AAC/B,CAAC,EAAE,CAAC;;;;AChIJ;AACA;AACA;AACA;AACA,IAAI,SAAS,GAAG,CAACA,cAAI,IAAIA,cAAI,CAAC,SAAS,KAAK,CAAC,YAAY;AACzD,IAAI,IAAI,aAAa,GAAG,UAAU,CAAC,EAAE,CAAC,EAAE;AACxC,QAAQ,aAAa,GAAG,MAAM,CAAC,cAAc;AAC7C,aAAa,EAAE,SAAS,EAAE,EAAE,EAAE,YAAY,KAAK,IAAI,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,EAAE,CAAC;AACxF,YAAY,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AACvF,QAAQ,OAAO,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACnC,KAAK,CAAC;AACN,IAAI,OAAO,UAAU,CAAC,EAAE,CAAC,EAAE;AAC3B,QAAQ,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC5B,QAAQ,SAAS,EAAE,GAAG,EAAE,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,EAAE;AAC/C,QAAQ,CAAC,CAAC,SAAS,GAAG,CAAC,KAAK,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;AAC7F,KAAK,CAAC;AACN,CAAC,GAAG,CAAC;AACL,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;AAC9D,kBAAkB,GAAG,iBAAiB,GAAG,kBAAkB,GAAG,cAAc,GAAG,aAAa,GAAG,aAAa,GAAG,YAAY,GAAG,aAAa,GAAG,iBAAiB,GAAG,WAAW,GAAG,cAAc,GAAG,aAAa,GAAG,oBAAoB,GAAG,eAAe,GAAG,iBAAiB,GAAG,gBAAgB,GAAG,qBAAqB,GAAG,oBAAoB,GAAG,cAAc,GAAG,aAAa,GAAG,cAAc,GAAG,aAAa,GAAG,cAAc,GAAG,aAAa,GAAG,gBAAgB,GAAG,WAAW,GAAG,aAAa,GAAG,YAAY,GAAG,aAAa,GAAG,KAAK,CAAC,CAAC;AAC3e;AAC/B;AACA,IAAI,KAAK,kBAAkB,YAAY;AACvC,IAAI,SAAS,KAAK,GAAG;AACrB,KAAK;AACL,IAAI,OAAO,KAAK,CAAC;AACjB,CAAC,EAAE,CAAC,CAAC;AACL,aAAa,GAAG,KAAK,CAAC;AACtB;AACA,SAAS,SAAS,CAAC,QAAQ,EAAE;AAC7B,IAAI,OAAO,OAAO,QAAQ,KAAK,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC;AACpE,CAAC;AACD,SAAS,YAAY,CAAC,KAAK,EAAE,IAAI,EAAE;AACnC,IAAI,IAAI,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;AAC5B,IAAI,IAAI,CAAC,KAAK,EAAE;AAChB,QAAQ,MAAM,IAAI,KAAK,CAAC,eAAe,GAAG,IAAI,CAAC,CAAC;AAChD,KAAK;AACL,IAAI,OAAO,KAAK,CAAC;AACjB,CAAC;AACD;AACA;AACA;AACA;AACA,SAAS,IAAI,CAAC,KAAK,EAAE,EAAE,OAAO,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE;AACjD,YAAY,GAAG,IAAI,CAAC;AACpB,IAAI,KAAK,kBAAkB,UAAU,MAAM,EAAE;AAC7C,IAAI,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AAC7B,IAAI,SAAS,KAAK,CAAC,IAAI,EAAE;AACzB,QAAQ,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;AAC9C,QAAQ,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC;AAC1B,QAAQ,KAAK,CAAC,QAAQ,GAAG,WAAW,GAAG,IAAI,CAAC;AAC5C,QAAQ,OAAO,KAAK,CAAC;AACrB,KAAK;AACL,IAAI,KAAK,CAAC,SAAS,CAAC,UAAU,GAAG,UAAU,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE;AACxE,QAAQ,IAAI,KAAK,GAAG,IAAI,CAAC;AACzB,QAAQ,IAAI,KAAK,GAAG,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;AACnD,QAAQ,IAAI,OAAO,GAAG,KAAK,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;AACpE,QAAQ,IAAI,KAAK,YAAY,SAAS,IAAI,KAAK,YAAY,KAAK,EAAE;AAClE,YAAY,OAAO,OAAO,CAAC;AAC3B,SAAS;AACT;AACA,QAAQ,OAAO,UAAU,KAAK,EAAE,GAAG,EAAE,EAAE,OAAO,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AAChH,KAAK,CAAC;AACN,IAAI,OAAO,KAAK,CAAC;AACjB,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACV,aAAa,GAAG,KAAK,CAAC;AACtB;AACA;AACA;AACA,SAAS,GAAG,CAAC,KAAK,EAAE,EAAE,OAAO,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE;AACnD,WAAW,GAAG,GAAG,CAAC;AAClB,IAAI,QAAQ,kBAAkB,UAAU,MAAM,EAAE;AAChD,IAAI,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;AAChC,IAAI,SAAS,QAAQ,CAAC,KAAK,EAAE;AAC7B,QAAQ,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;AAC9C,QAAQ,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;AAC5B,QAAQ,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAC3C,QAAQ,KAAK,CAAC,QAAQ,GAAG,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC;AAChD,QAAQ,OAAO,KAAK,CAAC;AACrB,KAAK;AACL,IAAI,QAAQ,CAAC,SAAS,CAAC,UAAU,GAAG,UAAU,KAAK,EAAE,MAAM,EAAE;AAC7D,QAAQ,IAAI,KAAK,GAAG,IAAI,CAAC;AACzB,QAAQ,OAAO,UAAU,KAAK,EAAE,GAAG,EAAE,EAAE,OAAO,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AACrH,KAAK,CAAC;AACN,IAAI,OAAO,QAAQ,CAAC;AACpB,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACV,gBAAgB,GAAG,QAAQ,CAAC;AAC5B;AACA;AACA;AACA,SAAS,KAAK,CAAC,QAAQ,EAAE,EAAE,OAAO,IAAI,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;AACpE,aAAa,GAAG,KAAK,CAAC;AACtB,IAAI,MAAM,kBAAkB,UAAU,MAAM,EAAE;AAC9C,IAAI,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAC9B,IAAI,SAAS,MAAM,CAAC,KAAK,EAAE;AAC3B,QAAQ,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;AAC9C,QAAQ,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;AAC5B,QAAQ,OAAO,KAAK,CAAC;AACrB,KAAK;AACL,IAAI,MAAM,CAAC,SAAS,CAAC,UAAU,GAAG,UAAU,KAAK,EAAE,MAAM,EAAE;AAC3D,QAAQ,IAAI,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AAC/D,QAAQ,OAAO,UAAU,KAAK,EAAE,GAAG,EAAE;AACrC,YAAY,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AACvC,gBAAgB,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,iBAAiB,EAAE,CAAC,CAAC,CAAC;AAC5D,aAAa;AACb,YAAY,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACnD,gBAAgB,IAAI,EAAE,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AACpD,gBAAgB,IAAI,CAAC,EAAE,EAAE;AACzB,oBAAoB,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AAChD,iBAAiB;AACjB,aAAa;AACb,YAAY,OAAO,IAAI,CAAC;AACxB,SAAS,CAAC;AACV,KAAK,CAAC;AACN,IAAI,OAAO,MAAM,CAAC;AAClB,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACV,cAAc,GAAG,MAAM,CAAC;AACxB;AACA;AACA;AACA,SAAS,KAAK,GAAG;AACjB,IAAI,IAAI,QAAQ,GAAG,EAAE,CAAC;AACtB,IAAI,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,SAAS,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE;AAClD,QAAQ,QAAQ,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC;AACrC,KAAK;AACL,IAAI,OAAO,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,EAAE,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC3E,CAAC;AACD,aAAa,GAAG,KAAK,CAAC;AACtB,IAAI,MAAM,kBAAkB,UAAU,MAAM,EAAE;AAC9C,IAAI,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAC9B,IAAI,SAAS,MAAM,CAAC,MAAM,EAAE;AAC5B,QAAQ,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;AAC9C,QAAQ,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;AAC9B,QAAQ,OAAO,KAAK,CAAC;AACrB,KAAK;AACL,IAAI,MAAM,CAAC,SAAS,CAAC,UAAU,GAAG,UAAU,KAAK,EAAE,MAAM,EAAE;AAC3D,QAAQ,IAAI,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;AACjG,QAAQ,IAAI,OAAO,GAAG,UAAU,KAAK,EAAE,GAAG,EAAE;AAC5C,YAAY,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AACvC,gBAAgB,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,iBAAiB,EAAE,CAAC,CAAC,CAAC;AAC5D,aAAa;AACb,YAAY,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC1D,gBAAgB,IAAI,EAAE,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AACxD,gBAAgB,IAAI,CAAC,EAAE,EAAE;AACzB,oBAAoB,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AAChD,iBAAiB;AACjB,aAAa;AACb,YAAY,OAAO,IAAI,CAAC;AACxB,SAAS,CAAC;AACV,QAAQ,IAAI,CAAC,MAAM,EAAE;AACrB,YAAY,OAAO,OAAO,CAAC;AAC3B,SAAS;AACT,QAAQ,OAAO,UAAU,KAAK,EAAE,GAAG,EAAE;AACrC,YAAY,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE;AACtC,gBAAgB,OAAO,KAAK,CAAC;AAC7B,aAAa;AACb,YAAY,OAAO,KAAK,CAAC,MAAM,IAAI,YAAY,CAAC,MAAM,GAAG,IAAI;AAC7D,gBAAgB,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC;AAClE,SAAS,CAAC;AACV,KAAK,CAAC;AACN,IAAI,OAAO,MAAM,CAAC;AAClB,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACV,cAAc,GAAG,MAAM,CAAC;AACxB;AACA;AACA;AACA,SAAS,KAAK,GAAG;AACjB,IAAI,IAAI,QAAQ,GAAG,EAAE,CAAC;AACtB,IAAI,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,SAAS,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE;AAClD,QAAQ,QAAQ,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC;AACrC,KAAK;AACL,IAAI,OAAO,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,EAAE,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC3E,CAAC;AACD,aAAa,GAAG,KAAK,CAAC;AACtB,IAAI,MAAM,kBAAkB,UAAU,MAAM,EAAE;AAC9C,IAAI,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAC9B,IAAI,SAAS,MAAM,CAAC,MAAM,EAAE;AAC5B,QAAQ,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;AAC9C,QAAQ,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;AAC9B,QAAQ,IAAI,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,EAAE,OAAO,CAAC,YAAY,KAAK,IAAI,CAAC,YAAY,QAAQ,GAAG,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC;AACpH,aAAa,MAAM,CAAC,UAAU,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;AAChD,QAAQ,IAAI,UAAU,GAAG,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;AACtD,QAAQ,IAAI,KAAK,CAAC,MAAM,EAAE;AAC1B,YAAY,IAAI,UAAU,GAAG,CAAC,EAAE;AAChC,gBAAgB,KAAK,CAAC,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,CAAC;AACjD,aAAa;AACb,YAAY,KAAK,CAAC,QAAQ,GAAG,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC9D,SAAS;AACT,aAAa;AACb,YAAY,KAAK,CAAC,QAAQ,GAAG,aAAa,GAAG,UAAU,GAAG,QAAQ,CAAC;AACnE,SAAS;AACT,QAAQ,OAAO,KAAK,CAAC;AACrB,KAAK;AACL,IAAI,MAAM,CAAC,SAAS,CAAC,UAAU,GAAG,UAAU,KAAK,EAAE,MAAM,EAAE;AAC3D,QAAQ,IAAI,KAAK,GAAG,IAAI,CAAC;AACzB,QAAQ,IAAI,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;AACjG,QAAQ,OAAO,UAAU,KAAK,EAAE,GAAG,EAAE;AACrC,YAAY,IAAI,EAAE,GAAG,GAAG,CAAC,aAAa,EAAE,CAAC;AACzC,YAAY,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC1D,gBAAgB,IAAI,EAAE,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,aAAa,EAAE,CAAC,CAAC;AACpE,gBAAgB,IAAI,EAAE,EAAE;AACxB,oBAAoB,OAAO,IAAI,CAAC;AAChC,iBAAiB;AACjB,aAAa;AACb,YAAY,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;AACjC,YAAY,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;AACrD,SAAS,CAAC;AACV,KAAK,CAAC;AACN,IAAI,OAAO,MAAM,CAAC;AAClB,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACV,cAAc,GAAG,MAAM,CAAC;AACxB;AACA;AACA;AACA,SAAS,YAAY,GAAG;AACxB,IAAI,IAAI,QAAQ,GAAG,EAAE,CAAC;AACtB,IAAI,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,SAAS,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE;AAClD,QAAQ,QAAQ,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC;AACrC,KAAK;AACL,IAAI,OAAO,IAAI,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,EAAE,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAClF,CAAC;AACD,oBAAoB,GAAG,YAAY,CAAC;AACpC,IAAI,aAAa,kBAAkB,UAAU,MAAM,EAAE;AACrD,IAAI,SAAS,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;AACrC,IAAI,SAAS,aAAa,CAAC,MAAM,EAAE;AACnC,QAAQ,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;AAC9C,QAAQ,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;AAC9B,QAAQ,OAAO,KAAK,CAAC;AACrB,KAAK;AACL,IAAI,aAAa,CAAC,SAAS,CAAC,UAAU,GAAG,UAAU,KAAK,EAAE,MAAM,EAAE;AAClE,QAAQ,IAAI,YAAY,GAAG,IAAI,GAAG,EAAE,CAAC;AACrC,QAAQ,IAAI,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC;AAC/G,QAAQ,OAAO,UAAU,KAAK,EAAE,GAAG,EAAE;AACrC,YAAY,IAAI,EAAE,GAAG,YAAY,CAAC,KAAK,CAAC,UAAU,OAAO,EAAE,EAAE,OAAO,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;AAC5F,YAAY,IAAI,EAAE,EAAE;AACpB,gBAAgB,OAAO,IAAI,CAAC;AAC5B,aAAa;AACb,YAAY,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AAC3C,SAAS,CAAC;AACV,KAAK,CAAC;AACN,IAAI,OAAO,aAAa,CAAC;AACzB,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACV,qBAAqB,GAAG,aAAa,CAAC;AACtC;AACA;AACA;AACA,SAAS,QAAQ,CAAC,MAAM,EAAE;AAC1B,IAAI,OAAO,IAAI,SAAS,CAAC,MAAM,CAAC,CAAC;AACjC,CAAC;AACD,gBAAgB,GAAG,QAAQ,CAAC;AAC5B,IAAI,SAAS,kBAAkB,UAAU,MAAM,EAAE;AACjD,IAAI,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;AACjC,IAAI,SAAS,SAAS,CAAC,OAAO,EAAE;AAChC,QAAQ,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;AAC9C,QAAQ,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;AAChC,QAAQ,KAAK,CAAC,WAAW,GAAG,IAAI,GAAG,EAAE,CAAC;AACtC,QAAQ,KAAK,CAAC,QAAQ,GAAG,2BAA2B,CAAC;AACrD,QAAQ,KAAK,CAAC,WAAW,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,UAAU,IAAI,EAAE,EAAE,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACzG,QAAQ,OAAO,KAAK,CAAC;AACrB,KAAK;AACL,IAAI,SAAS,CAAC,SAAS,CAAC,UAAU,GAAG,UAAU,KAAK,EAAE,MAAM,EAAE;AAC9D,QAAQ,IAAI,KAAK,GAAG,IAAI,CAAC;AACzB,QAAQ,OAAO,UAAU,KAAK,EAAE,GAAG,EAAE;AACrC,YAAY,QAAQ,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE;AAC7F,SAAS,CAAC;AACV,KAAK,CAAC;AACN,IAAI,OAAO,SAAS,CAAC;AACrB,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACV,iBAAiB,GAAG,SAAS,CAAC;AAC9B;AACA;AACA;AACA,SAAS,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE;AAC7B,IAAI,OAAO,IAAI,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACxC,CAAC;AACD,eAAe,GAAG,OAAO,CAAC;AAC1B,IAAI,YAAY,kBAAkB,UAAU,MAAM,EAAE;AACpD,IAAI,SAAS,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;AACpC,IAAI,SAAS,YAAY,CAAC,QAAQ,EAAE,IAAI,EAAE;AAC1C,QAAQ,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;AAC9C,QAAQ,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAC;AAClC,QAAQ,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC;AAC1B,QAAQ,KAAK,CAAC,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,GAAG,GAAG,IAAI,CAAC;AAC3D,QAAQ,OAAO,KAAK,CAAC;AACrB,KAAK;AACL,IAAI,YAAY,CAAC,SAAS,CAAC,UAAU,GAAG,UAAU,KAAK,EAAE,MAAM,EAAE;AACjE,QAAQ,IAAI,KAAK,GAAG,IAAI,CAAC;AACzB,QAAQ,IAAI,KAAK,GAAG,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;AACvD,QAAQ,IAAI,EAAE,KAAK,YAAY,SAAS,CAAC,EAAE;AAC3C,YAAY,MAAM,IAAI,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,GAAG,sCAAsC,CAAC,CAAC;AAC9F,SAAS;AACT,QAAQ,IAAI,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3C,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AACtD,YAAY,MAAM,IAAI,KAAK,CAAC,gBAAgB,GAAG,IAAI,CAAC,QAAQ,GAAG,GAAG,GAAG,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC,CAAC;AACrG,SAAS;AACT,QAAQ,OAAO,UAAU,KAAK,EAAE,GAAG,EAAE,EAAE,OAAO,CAAC,KAAK,KAAK,GAAG,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AAC7G,KAAK,CAAC;AACN,IAAI,OAAO,YAAY,CAAC;AACxB,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACV,oBAAoB,GAAG,YAAY,CAAC;AACpC,SAAS,cAAc,CAAC,KAAK,EAAE;AAC/B,IAAI,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,UAAU,IAAI,EAAE,EAAE,OAAO,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAChG,CAAC;AACD,SAAS,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE;AACnC,IAAI,OAAO,IAAI,YAAY,SAAS;AACpC,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC;AACzC,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;AAChD,CAAC;AACD;AACA;AACA;AACA;AACA,SAAS,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE;AAC7B,IAAI,OAAO,IAAI,MAAM,CAAC,KAAK,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;AACpD,CAAC;AACD,aAAa,GAAG,KAAK,CAAC;AACtB,IAAI,MAAM,kBAAkB,UAAU,MAAM,EAAE;AAC9C,IAAI,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAC9B,IAAI,SAAS,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE;AAClC,QAAQ,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;AAC9C,QAAQ,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;AAC5B,QAAQ,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;AAC5B,QAAQ,KAAK,CAAC,OAAO,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;AAC5E,QAAQ,OAAO,KAAK,CAAC;AACrB,KAAK;AACL,IAAI,MAAM,CAAC,SAAS,CAAC,UAAU,GAAG,UAAU,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE;AACzE,QAAQ,IAAI,KAAK,GAAG,IAAI,CAAC;AACzB,QAAQ,IAAI,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,EAAE,OAAO,YAAY,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;AACrH,QAAQ,IAAI,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,IAAI,EAAE,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;AAC5G,QAAQ,IAAI,OAAO,GAAG,IAAIC,IAAM,CAAC,WAAW,EAAE,CAAC;AAC/C;AACA,QAAQ,IAAI,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,IAAI,EAAE,CAAC,EAAE;AAC/D,YAAY,OAAO,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;AACvE,SAAS,CAAC,CAAC;AACX,QAAQ,IAAI,OAAO,GAAG,UAAU,KAAK,EAAE,GAAG,EAAE;AAC5C,YAAY,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE;AAC7D,gBAAgB,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,kBAAkB,EAAE,CAAC,CAAC,CAAC;AAC7D,aAAa;AACb,YAAY,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC1D,gBAAgB,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE;AAClD,oBAAoB,OAAO,KAAK,CAAC;AACjC,iBAAiB;AACjB,aAAa;AACb,YAAY,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC1D,gBAAgB,IAAI,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACjD,gBAAgB,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;AACtC,gBAAgB,IAAI,CAAC,KAAK,SAAS,EAAE;AACrC,oBAAoB,IAAI,cAAc,CAAC,CAAC,CAAC,EAAE;AAC3C,wBAAwB,OAAO,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC;AACjE,qBAAqB;AACrB,iBAAiB;AACjB,qBAAqB;AACrB,oBAAoB,IAAI,EAAE,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AACrD,oBAAoB,IAAI,CAAC,EAAE,EAAE;AAC7B,wBAAwB,OAAO,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AACzD,qBAAqB;AACrB,iBAAiB;AACjB,aAAa;AACb,YAAY,OAAO,IAAI,CAAC;AACxB,SAAS,CAAC;AACV,QAAQ,IAAI,CAAC,MAAM,EAAE;AACrB,YAAY,OAAO,OAAO,CAAC;AAC3B,SAAS;AACT,QAAQ,IAAI,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;AACnC,QAAQ,IAAI,YAAY,EAAE;AAC1B,YAAY,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,IAAI,EAAE,EAAE,OAAO,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;AACrF,YAAY,OAAO,GAAG,YAAY,CAAC;AACnC,SAAS;AACT;AACA,QAAQ,OAAO,UAAU,KAAK,EAAE,GAAG,EAAE;AACrC,YAAY,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE;AACtC,gBAAgB,OAAO,KAAK,CAAC;AAC7B,aAAa;AACb,YAAY,KAAK,IAAI,IAAI,IAAI,KAAK,EAAE;AACpC,gBAAgB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;AACxC,oBAAoB,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC;AAC9D,iBAAiB;AACjB,aAAa;AACb,YAAY,OAAO,IAAI,CAAC;AACxB,SAAS,CAAC;AACV,KAAK,CAAC;AACN,IAAI,OAAO,MAAM,CAAC;AAClB,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACV,cAAc,GAAG,MAAM,CAAC;AACxB;AACA;AACA;AACA,SAAS,GAAG,CAAC,QAAQ,EAAE,EAAE,OAAO,IAAI,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;AACrE,WAAW,GAAG,GAAG,CAAC;AAClB,IAAI,SAAS,kBAAkB,UAAU,MAAM,EAAE;AACjD,IAAI,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;AACjC,IAAI,SAAS,SAAS,CAAC,KAAK,EAAE;AAC9B,QAAQ,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;AAC9C,QAAQ,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;AAC5B,QAAQ,OAAO,KAAK,CAAC;AACrB,KAAK;AACL,IAAI,SAAS,CAAC,SAAS,CAAC,UAAU,GAAG,UAAU,KAAK,EAAE,MAAM,EAAE;AAC9D,QAAQ,IAAI,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AAC/D,QAAQ,OAAO,UAAU,KAAK,EAAE,GAAG,EAAE;AACrC,YAAY,OAAO,KAAK,KAAK,SAAS,IAAI,WAAW,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AAClE,SAAS,CAAC;AACV,KAAK,CAAC;AACN,IAAI,OAAO,SAAS,CAAC;AACrB,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACV,iBAAiB,GAAG,SAAS,CAAC;AAC9B;AACA;AACA;AACA,IAAI,KAAK,kBAAkB,YAAY;AACvC,IAAI,SAAS,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE;AACvC,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACzB,QAAQ,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AAC3B,QAAQ,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AAC3B,KAAK;AACL,IAAI,OAAO,KAAK,CAAC;AACjB,CAAC,EAAE,CAAC,CAAC;AACL,aAAa,GAAG,KAAK,CAAC;AACtB;AACA;AACA;AACA;AACA,SAAS,IAAI,CAAC,UAAU,EAAE;AAC1B,IAAI,IAAI,MAAM,GAAG,EAAE,CAAC;AACpB,IAAI,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,SAAS,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE;AAClD,QAAQ,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC;AACvC,KAAK;AACL,IAAI,OAAO,IAAI,KAAK,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;AACpE,CAAC;AACD,YAAY,GAAG,IAAI,CAAC;AACpB,IAAI,KAAK,kBAAkB,UAAU,MAAM,EAAE;AAC7C,IAAI,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AAC7B,IAAI,SAAS,KAAK,CAAC,SAAS,EAAE,MAAM,EAAE;AACtC,QAAQ,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;AAC9C,QAAQ,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;AACpC,QAAQ,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;AAC9B,QAAQ,OAAO,KAAK,CAAC;AACrB,KAAK;AACL,IAAI,KAAK,CAAC,SAAS,CAAC,UAAU,GAAG,UAAU,KAAK,EAAE,MAAM,EAAE;AAC1D,QAAQ,OAAO,UAAU,KAAK,EAAE,GAAG,EAAE;AACrC,YAAY,OAAO,OAAO,KAAK,KAAK,UAAU,GAAG,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,mBAAmB,EAAE,CAAC,CAAC,CAAC;AAC/F,SAAS,CAAC;AACV,KAAK,CAAC;AACN,IAAI,OAAO,KAAK,CAAC;AACjB,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACV,aAAa,GAAG,KAAK,CAAC;AACtB;AACA;AACA;AACA,SAAS,KAAK,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE;AACtC,IAAI,OAAO,IAAI,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;AACjE,CAAC;AACD,aAAa,GAAG,KAAK,CAAC;AACtB,IAAI,MAAM,kBAAkB,YAAY;AACxC,IAAI,SAAS,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE;AACxC,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACzB,QAAQ,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AAC3B,QAAQ,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AAC3B,KAAK;AACL,IAAI,OAAO,MAAM,CAAC;AAClB,CAAC,EAAE,CAAC,CAAC;AACL,cAAc,GAAG,MAAM,CAAC;AACxB;AACA;AACA;AACA,IAAI,UAAU,kBAAkB,UAAU,MAAM,EAAE;AAClD,IAAI,SAAS,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;AAClC,IAAI,SAAS,UAAU,CAAC,MAAM,EAAE;AAChC,QAAQ,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;AAC9C,QAAQ,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;AAC9B,QAAQ,OAAO,KAAK,CAAC;AACrB,KAAK;AACL,IAAI,UAAU,CAAC,SAAS,CAAC,UAAU,GAAG,UAAU,KAAK,EAAE,MAAM,EAAE;AAC/D,QAAQ,IAAI,KAAK,GAAG,IAAI,CAAC;AACzB,QAAQ,IAAI,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;AACvG,QAAQ,IAAI,OAAO,GAAG,IAAIA,IAAM,CAAC,WAAW,EAAE,CAAC;AAC/C,QAAQ,IAAI,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,KAAK,EAAE,CAAC,EAAE;AAClE,YAAY,OAAO,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;AACxE,SAAS,CAAC,CAAC;AACX,QAAQ,IAAI,OAAO,GAAG,UAAU,KAAK,EAAE,GAAG,EAAE;AAC5C,YAAY,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AACvC,gBAAgB,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,iBAAiB,EAAE,CAAC,CAAC,CAAC;AAC5D,aAAa;AACb,YAAY,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC1D,gBAAgB,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACxC,gBAAgB,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE;AAC5C,oBAAoB,IAAI,eAAe,CAAC,CAAC,CAAC,EAAE;AAC5C,wBAAwB,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC;AACjE,qBAAqB;AACrB,iBAAiB;AACjB,qBAAqB;AACrB,oBAAoB,IAAI,EAAE,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AAC5D,oBAAoB,IAAI,CAAC,EAAE,EAAE;AAC7B,wBAAwB,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AACzD,qBAAqB;AACrB,iBAAiB;AACjB,aAAa;AACb,YAAY,OAAO,IAAI,CAAC;AACxB,SAAS,CAAC;AACV,QAAQ,IAAI,CAAC,MAAM,EAAE;AACrB,YAAY,OAAO,OAAO,CAAC;AAC3B,SAAS;AACT,QAAQ,OAAO,UAAU,KAAK,EAAE,GAAG,EAAE;AACrC,YAAY,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE;AACtC,gBAAgB,OAAO,KAAK,CAAC;AAC7B,aAAa;AACb,YAAY,OAAO,KAAK,CAAC,MAAM,IAAI,YAAY,CAAC,MAAM,GAAG,IAAI;AAC7D,gBAAgB,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC;AAClE,SAAS,CAAC;AACV,KAAK,CAAC;AACN,IAAI,OAAO,UAAU,CAAC;AACtB,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACV,kBAAkB,GAAG,UAAU,CAAC;AAChC;AACA;AACA;AACA,IAAI,SAAS,kBAAkB,UAAU,MAAM,EAAE;AACjD,IAAI,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;AACjC,IAAI,SAAS,SAAS,CAAC,SAAS,EAAE,OAAO,EAAE;AAC3C,QAAQ,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;AAC9C,QAAQ,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;AACpC,QAAQ,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;AAChC,QAAQ,OAAO,KAAK,CAAC;AACrB,KAAK;AACL,IAAI,SAAS,CAAC,SAAS,CAAC,UAAU,GAAG,UAAU,KAAK,EAAE,MAAM,EAAE;AAC9D,QAAQ,IAAI,KAAK,GAAG,IAAI,CAAC;AACzB,QAAQ,OAAO,UAAU,KAAK,EAAE,GAAG,EAAE,EAAE,OAAO,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AAClH,KAAK,CAAC;AACN,IAAI,OAAO,SAAS,CAAC;AACrB,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACV,iBAAiB,GAAG,SAAS,CAAC;AAC9B;AACA;AACA;AACA,kBAAkB,GAAG;AACrB,IAAI,GAAG,EAAE,IAAI,SAAS,CAAC,UAAU,CAAC,EAAE,EAAE,OAAO,IAAI,CAAC,EAAE,EAAE,YAAY,CAAC;AACnE,IAAI,MAAM,EAAE,IAAI,SAAS,CAAC,UAAU,CAAC,EAAE,EAAE,QAAQ,OAAO,CAAC,KAAK,QAAQ,EAAE,EAAE,EAAE,iBAAiB,CAAC;AAC9F,IAAI,MAAM,EAAE,IAAI,SAAS,CAAC,UAAU,CAAC,EAAE,EAAE,QAAQ,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,EAAE,EAAE,EAAE,kBAAkB,CAAC;AACpG,IAAI,OAAO,EAAE,IAAI,SAAS,CAAC,UAAU,CAAC,EAAE,EAAE,QAAQ,OAAO,CAAC,KAAK,SAAS,EAAE,EAAE,EAAE,kBAAkB,CAAC;AACjG,IAAI,MAAM,EAAE,IAAI,SAAS,CAAC,UAAU,CAAC,EAAE,EAAE,QAAQ,OAAO,CAAC,KAAK,QAAQ,EAAE,EAAE,EAAE,iBAAiB,CAAC;AAC9F,IAAI,MAAM,EAAE,IAAI,SAAS,CAAC,UAAU,CAAC,EAAE,EAAE,QAAQ,OAAO,CAAC,KAAK,QAAQ,EAAE,EAAE,EAAE,iBAAiB,CAAC;AAC9F,IAAI,IAAI,EAAE,IAAI,SAAS,CAAC,UAAU,CAAC,EAAE,EAAE,QAAQ,CAAC,IAAI,IAAI,EAAE,EAAE,EAAE,aAAa,CAAC;AAC5E,IAAI,SAAS,EAAE,IAAI,SAAS,CAAC,UAAU,CAAC,EAAE,EAAE,QAAQ,CAAC,KAAK,SAAS,EAAE,EAAE,EAAE,kBAAkB,CAAC;AAC5F,IAAI,IAAI,EAAE,IAAI,SAAS,CAAC,UAAU,CAAC,EAAE,EAAE,QAAQ,CAAC,KAAK,IAAI,EAAE,EAAE,EAAE,aAAa,CAAC;AAC7E,IAAI,KAAK,EAAE,IAAI,SAAS,CAAC,UAAU,CAAC,EAAE,EAAE,OAAO,KAAK,CAAC,EAAE,EAAE,eAAe,CAAC;AACzE,IAAI,IAAI,EAAE,IAAI,SAAS,CAAC,kBAAkB,CAAC,eAAe,CAAC,EAAE,eAAe,CAAC;AAC7E,IAAI,MAAM,EAAE,IAAI,SAAS,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;AACnF,CAAC,CAAC;AACF;AACA;AACA;AACA,IAAI,cAAc,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC;AAC/C,SAAS,kBAAkB,CAAC,GAAG,EAAE;AACjC,IAAI,OAAO,UAAU,CAAC,EAAE,EAAE,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,IAAI,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC;AACjG,CAAC;AACD,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;AACnC,IAAI,OAAO,CAAC,UAAU,CAAC,MAAM,GAAG,IAAI,SAAS,CAAC,UAAU,CAAC,EAAE,EAAE,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,iBAAiB,CAAC,CAAC;AAC9G,CAAC;AACD,IAAI,OAAO,GAAG,UAAU,OAAO,EAAE;AACjC,IAAI,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,SAAS,CAAC,UAAU,CAAC,EAAE,EAAE,QAAQ,CAAC,YAAY,OAAO,EAAE,EAAE,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAClI,CAAC,CAAC;AACF;AACA,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,SAAS,EAAE,UAAU,EAAE,iBAAiB,EAAE,UAAU,EAAE,WAAW;AACxF,IAAI,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE;AAC7F,IAAI,IAAI,OAAO,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;AACzB,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;AACrB;;;;ACpjBA,IAAI,cAAc,GAAG,CAACD,cAAI,IAAIA,cAAI,CAAC,cAAc,KAAK,YAAY;AAClE,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;AACxF,IAAI,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE;AACpD,QAAQ,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE;AACzE,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACxB,IAAI,OAAO,CAAC,CAAC;AACb,CAAC,CAAC;AACF,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;AAC9D,eAAe,GAAG,sBAAsB,GAAG,KAAK,CAAC,CAAC;AACjB;AACF;AAC/B;AACA;AACA;AACA,IAAI,OAAO,GAAGE,KAAkB,CAAC;AACjC,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,YAAY,EAAE,OAAO,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;AAC5G,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,WAAW,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,YAAY,EAAE,OAAO,OAAO,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC,CAAC;AAClH,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,cAAc,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,YAAY,EAAE,OAAO,OAAO,CAAC,YAAY,CAAC,EAAE,EAAE,CAAC,CAAC;AACxH,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,YAAY,EAAE,OAAO,OAAO,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;AAC1G,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,YAAY,EAAE,OAAO,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;AAC5G,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,YAAY,EAAE,OAAO,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC;AAChH,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,YAAY,EAAE,OAAO,OAAO,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;AAC1G,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,WAAW,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,YAAY,EAAE,OAAO,OAAO,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC,CAAC;AAClH,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,YAAY,EAAE,OAAO,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;AAC5G,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,YAAY,EAAE,OAAO,OAAO,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC,CAAC;AACpH,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,YAAY,EAAE,OAAO,OAAO,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;AAC1G,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,YAAY,EAAE,OAAO,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;AAC5G,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,YAAY,EAAE,OAAO,OAAO,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;AAC1G,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,YAAY,EAAE,OAAO,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;AAC5G,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,eAAe,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,YAAY,EAAE,OAAO,OAAO,CAAC,aAAa,CAAC,EAAE,EAAE,CAAC,CAAC;AAC1H,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,YAAY,EAAE,OAAO,OAAO,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;AAC1G,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,SAAS,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,YAAY,EAAE,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;AAC9G,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,YAAY,EAAE,OAAO,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC;AAChH,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,YAAY,EAAE,OAAO,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;AACxG,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,YAAY,EAAE,OAAO,OAAO,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;AAC1G,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,YAAY,EAAE,OAAO,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;AACtG,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,YAAY,EAAE,OAAO,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;AACxG,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,YAAY,EAAE,OAAO,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;AACtG,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,YAAY,EAAE,OAAO,OAAO,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;AAC1G,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,YAAY,EAAE,OAAO,OAAO,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;AAC1G,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,YAAY,EAAE,OAAO,OAAO,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;AAC1G,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,cAAc,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,YAAY,EAAE,OAAO,OAAO,CAAC,YAAY,CAAC,EAAE,EAAE,CAAC,CAAC;AACxH,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,WAAW,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,YAAY,EAAE,OAAO,OAAO,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC,CAAC;AAClH,IAAI,MAAM,GAAGD,IAAiB,CAAC;AAC/B,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,YAAY,EAAE,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;AAC3G;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,cAAc,GAAG;AAC1B,IAAI,IAAI,SAAS,GAAG,EAAE,CAAC;AACvB,IAAI,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,SAAS,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE;AAClD,QAAQ,SAAS,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC;AACtC,KAAK;AACL,IAAI,IAAI,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,EAAE,EAAEC,KAAO,CAAC,UAAU,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC;AACrG,IAAI,IAAI,QAAQ,GAAG,EAAE,CAAC;AACtB,IAAI,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,WAAW,GAAG,SAAS,EAAE,EAAE,GAAG,WAAW,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE;AAC7E,QAAQ,IAAI,OAAO,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC;AACtC,QAAQ,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE;AAC1E,YAAY,IAAI,IAAI,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;AAC9B,YAAY,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;AACnE,SAAS;AACT,KAAK;AACL,IAAI,OAAO,QAAQ,CAAC;AACpB,CAAC;AACD,sBAAsB,GAAG,cAAc,CAAC;AACxC;AACA;AACA;AACA;AACA,IAAI,OAAO,kBAAkB,YAAY;AACzC;AACA,IAAI,SAAS,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE;AAC1C,QAAQ,IAAI,KAAK,KAAK,KAAK,CAAC,EAAE,EAAE,KAAK,GAAG,OAAO,CAAC,EAAE;AAClD,QAAQ,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AAC3B,QAAQ,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AAC3B,QAAQ,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AAC3B,QAAQ,IAAI,CAAC,KAAK,GAAG,IAAI,GAAG,EAAE,CAAC;AAC/B,QAAQ,IAAI,KAAK,YAAYA,KAAO,CAAC,MAAM,EAAE;AAC7C,YAAY,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,KAAK,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE;AACrE,gBAAgB,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;AAC/B,gBAAgB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;AAChD,aAAa;AACb,SAAS;AACT,QAAQ,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AAChE,QAAQ,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AAChE,KAAK;AACL;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,SAAS,CAAC,eAAe,GAAG,UAAU,IAAI,EAAE;AACxD,QAAQ,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AAC1B,KAAK,CAAC;AACN;AACA;AACA;AACA,IAAI,OAAO,CAAC,SAAS,CAAC,KAAK,GAAG,UAAU,KAAK,EAAE,EAAE,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC;AACnG;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,SAAS,CAAC,IAAI,GAAG,UAAU,KAAK,EAAE;AAC9C,QAAQ,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,IAAID,IAAM,CAAC,WAAW,EAAE,CAAC,CAAC;AAClE,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,SAAS,CAAC,QAAQ,GAAG,UAAU,KAAK,EAAE;AAClD,QAAQ,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;AAC1D,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,SAAS,CAAC,WAAW,GAAG,UAAU,KAAK,EAAE,EAAE,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC;AAC1G;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,SAAS,CAAC,UAAU,GAAG,UAAU,KAAK,EAAE;AACpD,QAAQ,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,IAAIA,IAAM,CAAC,WAAW,EAAE,CAAC,CAAC;AACnE,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,SAAS,CAAC,cAAc,GAAG,UAAU,KAAK,EAAE;AACxD,QAAQ,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;AAC3D,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,SAAS,CAAC,OAAO,GAAG,UAAU,IAAI,EAAE;AAChD,QAAQ,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACzC,QAAQ,IAAI,CAAC,KAAK,EAAE;AACpB,YAAY,MAAM,IAAI,KAAK,CAAC,uBAAuB,GAAG,IAAI,CAAC,CAAC;AAC5D,SAAS;AACT,QAAQ,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC;AACvE,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,SAAS,CAAC,UAAU,GAAG,UAAU,UAAU,EAAE;AACzD,QAAQ,IAAI,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;AAChD,QAAQ,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;AACxD,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,SAAS,CAAC,YAAY,GAAG,UAAU,UAAU,EAAE;AAC3D,QAAQ,IAAI,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;AAChD,QAAQ,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;AACrD,KAAK,CAAC;AACN;AACA;AACA;AACA,IAAI,OAAO,CAAC,SAAS,CAAC,OAAO,GAAG,YAAY;AAC5C,QAAQ,IAAI,EAAE,IAAI,CAAC,KAAK,YAAYC,KAAO,CAAC,KAAK,CAAC,EAAE;AACpD,YAAY,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;AACjE,SAAS;AACT,QAAQ,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;AAC7D,KAAK,CAAC;AACN;AACA;AACA;AACA,IAAI,OAAO,CAAC,SAAS,CAAC,SAAS,GAAG,YAAY;AAC9C,QAAQ,IAAI,EAAE,IAAI,CAAC,KAAK,YAAYA,KAAO,CAAC,KAAK,CAAC,EAAE;AACpD,YAAY,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;AACnE,SAAS;AACT,QAAQ,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AAC1D,KAAK,CAAC;AACN;AACA;AACA;AACA,IAAI,OAAO,CAAC,SAAS,CAAC,OAAO,GAAG,YAAY;AAC5C,QAAQ,OAAO,IAAI,CAAC,KAAK,CAAC;AAC1B,KAAK,CAAC;AACN;AACA;AACA;AACA,IAAI,OAAO,CAAC,SAAS,CAAC,QAAQ,GAAG,UAAU,WAAW,EAAE,KAAK,EAAE;AAC/D,QAAQ,IAAI,OAAO,GAAG,IAAID,IAAM,CAAC,WAAW,EAAE,CAAC;AAC/C,QAAQ,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE;AAC1C,YAAY,IAAI,SAAS,GAAG,IAAIA,IAAM,CAAC,aAAa,EAAE,CAAC;AACvD,YAAY,WAAW,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;AAC1C,YAAY,MAAM,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACjD,SAAS;AACT,KAAK,CAAC;AACN,IAAI,OAAO,CAAC,SAAS,CAAC,WAAW,GAAG,UAAU,WAAW,EAAE,KAAK,EAAE;AAClE,QAAQ,IAAI,OAAO,GAAG,IAAIA,IAAM,CAAC,WAAW,EAAE,CAAC;AAC/C,QAAQ,IAAI,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE;AACzC,YAAY,OAAO,IAAI,CAAC;AACxB,SAAS;AACT,QAAQ,IAAI,SAAS,GAAG,IAAIA,IAAM,CAAC,aAAa,EAAE,CAAC;AACnD,QAAQ,WAAW,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;AACtC,QAAQ,OAAO,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACpD,KAAK,CAAC;AACN,IAAI,OAAO,CAAC,SAAS,CAAC,UAAU,GAAG,UAAU,UAAU,EAAE;AACzD,QAAQ,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AAC/C,QAAQ,IAAI,CAAC,KAAK,EAAE;AACpB,YAAY,MAAM,IAAI,KAAK,CAAC,uBAAuB,GAAG,UAAU,CAAC,CAAC;AAClE,SAAS;AACT,QAAQ,IAAI,EAAE,KAAK,YAAYC,KAAO,CAAC,KAAK,CAAC,EAAE;AAC/C,YAAY,MAAM,IAAI,KAAK,CAAC,WAAW,GAAG,UAAU,GAAG,kBAAkB,CAAC,CAAC;AAC3E,SAAS;AACT,QAAQ,OAAO,KAAK,CAAC;AACrB,KAAK,CAAC;AACN,IAAI,OAAO,OAAO,CAAC;AACnB,CAAC,EAAE,CAAC,CAAC;AACL,eAAe,GAAG,OAAO;;;AC/NzB;;;AAIA;AAEO,MAAM,oBAAoB,GAAGC,UAAO,CAAC,EAAE,EAAE;IAC9C,UAAU,EAAE,QAAQ;IACpB,UAAU,EAAE,QAAQ;IACpB,UAAU,EAAE,QAAQ;IACpB,UAAU,EAAE,QAAQ;IACpB,gBAAgB,EAAE,QAAQ;CAC3B,CAAC,CAAC;AAEH,MAAM,iBAAiB,GAAiB;IACtC,oBAAoB;CACrB;;ACLD,MAAM,wBACFC,sBAAoB,EACvB,GAAGC,mBAAc,CAACC,iBAAoB,CAAC,CAAC;AAEzC,MAAM,kBAAkB;IAOpB,YAAY,IAAQ,EAAE,QAAQ,GAAC,IAAI;QAC/B,IAAG,QAAQ,EAAE;;YAETF,sBAAoB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;SACpC;QACD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC9B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC9B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC9B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC9B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;KAC7C;;;;;IAMD,OAAO,CAAC,SAAa;QACjB,OAAO,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;KACxD;;;ACxCL;;;;;;;;;;;;;AAaO,MAAM,YAAY,GAAoC,CAAC,QAAQ,KAAK,IAAI,OAAO,CAAC,CAAC,OAAO,EAAC,MAAM;IAClG,MAAM,YAAY,GAAG,YAAY,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;IACjE,IAAG,CAAC,YAAY,EAAE;QACd,MAAM,CAAC,kBAAkB,CAAC,CAAC;KAC9B;IAED,MAAM,QAAQ,GAA4B;QACtC,UAAU,EAAE,eAAe;QAC3B,aAAa,EAAE,YAAsB;KACxC,CAAC;IACF,MAAM,gBAAgB,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,CAC9C,CAAC,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CACnD,CAAC;IACF,MAAM,YAAY,GAAG,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAEhD,MAAM,cAAc,GAAG;QACnB,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,QAAQ,EAAE;YACnC,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,YAAY;YAClB,OAAO,EAAE;gBACL,MAAM,EAAE,kBAAkB;gBAC1B,cAAc,EAAE,mCAAmC;aACtD;SACJ,CAAC,CAAC;QACH,QAAQ,QAAQ,CAAC,MAAM;YACnB,KAAK,GAAG;gBACJ,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;gBACtC,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,OAAO,CAAC,CAAC;gBAC1C,YAAY,CAAC,OAAO,CAAC,oBAAoB,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;gBACjE,IAAI,OAAO,CAAC,aAAa;oBAAE,YAAY,CAAC,OAAO,CAAC,qBAAqB,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;gBAC9F,OAAO,EAAE,CAAC;gBACV,MAAM;YACV,KAAK,GAAG,CAAC;YACT,KAAK,GAAG;gBACJ,OAAO,CAAC,GAAG,CAAC,6CAA6C,CAAC,CAAC;gBAC3D,MAAM,CAAC,mBAAmB,CAAC,CAAC;gBAC5B,MAAM;YACV,KAAK,GAAG;gBACJ,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;gBAC1D,MAAM,CAAC,UAAU,CAAC,MAAM,cAAc,EAAE,EAAE,IAAI,CAAC,CAAC;gBAChD,MAAM;YACV,KAAK,GAAG,CAAC;YACT,KAAK,GAAG;gBACJ,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;gBACnD,MAAM,CAAC,UAAU,CAAC,MAAM,cAAc,EAAE,EAAE,IAAI,CAAC,CAAC;gBAChD,MAAM;YACV;gBACI,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;gBACxC,OAAO,CAAC,GAAG,CAAC,kDAAkD,EAAE,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;gBAC5F,MAAM,CAAC,qBAAqB,CAAC,CAAC;gBAC9B,MAAM;SACb;KACJ,CAAA,CAAA;IAED,cAAc,EAAE,CAAC,KAAK,CAAC,GAAG,IAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;AACxD,CAAC,CAAC;;AC7DF,MAAM,uBAAuB,GAAGT,yBAAK,CAAC,aAAa,CAA0B;IACzE,QAAQ,EAAG,EAAE,YAAY,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,YAAY,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAE,OAAO,CAAC,EAAE,cAAc,EAAE,SAAM;CACpI,CAAC,CAAC;AAEI,MAAM,+BAA+B,GAAG,uBAAuB,CAAC,QAAQ;;ACU/E,MAAM,SAAS,GAAGY,iBAAU,CAAC;IACzB,UAAU,EAAE;QACR,OAAO,EAAE,CAAC;QACV,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,cAAc;QACvB,WAAW,EAAE,OAAO;QACpB,QAAQ,EAAE,MAAM;QAChB,SAAS,EAAE,MAAM;KACpB;IACD,UAAU,EAAE;QACR,KAAK,EAAE,OAAO;KACjB;IACD,UAAU,EAAE;QACR,MAAM,EAAE,MAAM;QACd,KAAK,EAAE,MAAM;QACb,OAAO,EAAE,KAAK;KACjB;CACJ,CAAC,CAAC;AAEH,MAAM,cAAc,GAAiC,CAAC,KAAK;;IACvD,MAAM,CAAC,iBAAiB,EAAE,oBAAoB,CAAC,GAAGb,cAAQ,CAAU,KAAK,CAAC,CAAC;IAC3E,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAGA,cAAQ,CAAU,KAAK,CAAC,CAAC;IACnE,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAGA,cAAQ,CAAU,KAAK,CAAC,CAAC;IAC3D,MAAM,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,GAAGA,cAAQ,CAAS,EAAE,CAAC,CAAC;IAErE,IAAI,YAAY,GAAGc,YAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAC3C,MAAM,WAAW,GAAGA,YAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC3C,MAAM,uBAAuB,GAAGA,YAAM,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;IAEnE,MAAM,OAAO,GAAG,SAAS,EAAE,CAAC;IAE5B,MAAM,YAAY,GAAGC,gBAAU,CAAC,uBAAuB,CAAC,CAAC;IAEzDC,eAAS,CAAC;;QACN,MAAM,eAAe,GAAG,MAAM,CAAC,WAAW,CAAC,kBAAkB,QAAE,KAAK,CAAC,aAAa,mCAAI,KAAK,CAAC,CAAC;QAE7F,QAAQ;YACJ,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAA;YAC1C,MAAM,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC;SACzC,EAAC;KACL,EAAE,EAAE,CAAC,CAAC;IAEPA,eAAS,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,+BAA+B,EAAE,aAAa,CAAC,CAAC;QAC5D,IAAG,aAAa,EAAE;YACd,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;YACzC,MAAM,eAAe,GAAG,MAAM,CAAC,WAAW,CAAC,sBAAsB,EAAE,IAAI,CAAC,CAAC;YACzE,QAAQ;gBACJ,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;gBACzC,MAAM,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC;aACzC,EAAC;SACL;KACJ,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC;IAEpBA,eAAS,CAAC;QACR,YAAY,CAAC,OAAO,GAAG,KAAK,CAAC,SAAS,CAAC;KACxC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;;;;IAKtB,MAAM,sBAAsB,GAAG;QAC3B,MAAM,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC;QAC5C,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC;QACxC,MAAM,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC;QAElC,IAAG,QAAQ,GAAC,CAAC,EAAE;YACX,mBAAmB,CAAC,cAAc,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;SAC7D;aAAM;YACH,IAAG,KAAK,CAAC,cAAc;gBAAE,KAAK,CAAC,cAAc,EAAE,CAAC;YAChD,mBAAmB,CAAC,aAAa,CAAC,CAAC;SACtC;KACJ,CAAA;;;;;;IAOD,MAAM,kBAAkB,GAAG;QACvB,IAAI,YAAY,CAAC,OAAO,EAAE;YACtB,MAAM,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC;;YAE5C,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC;YACxC,MAAM,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC;YAElC,IAAI,QAAQ,IAAI,GAAG,EAAE;gBACjB,OAAO,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAAC;gBAChE,oBAAoB,CAAC,IAAI,CAAC,CAAC;gBAE3B,IAAI,gBAAgB,CAAC;gBAErB,IAAG,uBAAuB,CAAC,OAAO,EAAC;oBAC/B,gBAAgB,GAAG,uBAAuB,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;iBAC3E;qBAAO;oBACJ,gBAAgB,GAAG,YAAY,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;iBACxD;gBAED,gBAAgB,CAAC,IAAI,CAAC;oBAClB,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;oBAC/B,oBAAoB,CAAC,KAAK,CAAC,CAAC;oBAC5B,gBAAgB,CAAC,KAAK,CAAC,CAAC;oBACxB,YAAY,CAAC,IAAI,CAAC,CAAC;oBAEnB,IAAG,KAAK,CAAC,gBAAgB;wBAAE,KAAK,CAAC,gBAAgB,EAAE,CAAC;oBACpD,MAAM,CAAC,UAAU,CAAC,MAAI,YAAY,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC;iBACpD,CAAC,CAAC,KAAK,CAAC,SAAS;oBACd,IAAG,KAAK,CAAC,kBAAkB;wBAAE,KAAK,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC;oBACjE,gBAAgB,CAAC,IAAI,CAAC,CAAC;oBACvB,oBAAoB,CAAC,KAAK,CAAC,CAAC;oBAC5B,sBAAsB,EAAE,CAAC;oBACzB,OAAO;iBACV,CAAC,CAAA;aACL;SACJ;aAAM;YACH,OAAO,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC;SACzD;KACJ,CAAC;IAEF,MAAM,eAAe,GAAG,MAAI,YAAY,CAAC,cAAc,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;IAChF,MAAM,QAAQ,GAAG,MAAK,MAAM,CAAC,IAAI,CAC7B,iFAAiF,EACjF,QAAQ,CACX,CAAA;IACD,QACIf,wCAACgB,SAAI,IAAC,SAAS,QAAC,SAAS,EAAC,aAAa,EAAC,SAAS,EAAC,KAAK,EAAC,OAAO,EAAE,CAAC,EAAE,UAAU,EAAC,QAAQ,EAAC,cAAc,EAAC,UAAU;QAC7GhB,wCAACgB,SAAI,IAAC,IAAI;YACNhB,wCAACgB,SAAI,IAAC,SAAS,QAAC,OAAO,EAAE,CAAC,EAAE,UAAU,EAAC,YAAY,EAAC,cAAc,EAAC,UAAU;gBACzEhB,wCAACgB,SAAI,IAAC,IAAI,QAAC,KAAK,EAAE,EAAC,WAAW,EAAE,OAAO,EAAC;oBACpChB,wCAACiB,eAAU,IAAC,SAAS,EAAE,OAAO,CAAC,UAAU,2BAAmC,CAAO;gBACvFjB,wCAACgB,SAAI,IAAC,IAAI;oBAAChB,wCAACkB,YAAM,IAAC,SAAS,EAAE,OAAO,CAAC,UAAU,GAAG,CAAO;gBAC1DlB,wCAACgB,SAAI,IAAC,IAAI;oBAAChB,wCAACiB,eAAU,IAAC,SAAS,EAAC,UAAU,UAAE,KAAK,CAAC,SAAS,CAAC,kBAAkB,mCAAI,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAc,CAAO,CAC7H,CACJ;QACPjB,wCAACgB,SAAI,IAAC,IAAI;YACNhB,wCAACmB,YAAO,IAAC,KAAK,EAAC,yBAAyB;gBACpCnB,wCAACoB,eAAU,IAAC,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,OAAO,CAAC,UAAU,IAE3D,YAAY,CAAC,QAAQ,GAAGpB,wCAACqB,iBAAW,IAAC,KAAK,EAAE,EAAC,KAAK,EAAE,qBAAqB,EAAC,GAAG,GAAGrB,wCAACsB,iBAAW,OAAE,CAEzF,CACP,CACP;QACPtB,wCAACgB,SAAI,IAAC,IAAI;YACNhB,wCAACmB,YAAO,IAAC,KAAK,EAAC,kBAAkB;gBAC7BnB,wCAACoB,eAAU,IAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,CAAC,UAAU;oBACxDpB,wCAACuB,iBAAW,IAAC,KAAK,EAAE,EAAC,KAAK,EAAE,YAAY,CAAC,QAAQ,GAAG,kBAAkB,GAAG,SAAS,EAAE,GAAG,CAC9E,CACP,CACP;QAEH,iBAAiB;YACbvB,wCAACgB,SAAI,IAAC,IAAI,QAAC,EAAE,EAAC,qBAAqB;gBAC/BhB,wCAACgB,SAAI,IAAC,SAAS,QAAC,OAAO,EAAE,CAAC,EAAE,UAAU,EAAC,UAAU,EAAC,cAAc,EAAC,UAAU;oBACvEhB,wCAACgB,SAAI,IAAC,IAAI;wBAAChB,wCAACwB,qBAAgB,IAAC,SAAS,EAAE,OAAO,CAAC,UAAU,GAAG,CAAO;oBACpExB,wCAACgB,SAAI,IAAC,IAAI;wBAAChB,wCAACiB,eAAU,mCAAsC,CAAO,CAChE,CACJ;cACT,IAAI;QAGN,aAAa;YACTjB,wCAACgB,SAAI,IAAC,IAAI;gBACNhB,wCAACgB,SAAI,IAAC,SAAS,QAAC,OAAO,EAAE,CAAC,EAAE,UAAU,EAAC,UAAU,EAAC,cAAc,EAAC,UAAU,EAAC,EAAE,EAAC,gBAAgB;oBAC3FhB,wCAACgB,SAAI,IAAC,IAAI;wBAAChB,wCAACyB,WAAK,IAAC,KAAK,EAAE,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,SAAS,EAAE,OAAO,CAAC,UAAU,GAAG,CAAO;oBAC/EzB,wCAACgB,SAAI,IAAC,IAAI;wBACNhB,wCAACmB,YAAO,IAAC,KAAK,EAAC,+DAA+D;4BAC1EnB,wCAACiB,eAAU;;gCAAQ,gBAAgB,CAAc,CAC3C,CACP,CACJ,CACJ;cACL,IAAI;QAGV,SAAS;YACLjB,wCAACgB,SAAI,IAAC,IAAI,QAAC,EAAE,EAAC,iBAAiB;gBAC3BhB,wCAACgB,SAAI,IAAC,SAAS,QAAC,OAAO,EAAE,CAAC,EAAE,UAAU,EAAC,QAAQ,EAAC,cAAc,EAAC,UAAU;oBACrEhB,wCAACgB,SAAI,IAAC,IAAI;wBAAChB,wCAAC0B,iBAAW,IAAC,KAAK,EAAE,EAAC,KAAK,EAAC,OAAO,EAAC,EAAE,SAAS,EAAE,OAAO,CAAC,UAAU,GAAG,CAAO;oBACvF1B,wCAACgB,SAAI,IAAC,IAAI;wBAAChB,wCAACiB,eAAU,0BAA6B,CAAO,CACvD,CACJ;cACT,IAAI;QAGVjB,wCAACgB,SAAI,IAAC,IAAI;YACRhB,wCAAC2B,WAAM,IACH,SAAS,EAAC,cAAc,EACxB,OAAO,EAAC,UAAU,EAClB,IAAI,EAAC,OAAO,EACZ,OAAO,EAAE;oBACL,IAAI,KAAK,CAAC,WAAW,EAAE;wBACnB,KAAK,CAAC,WAAW,EAAE,CAAC;wBACpB,OAAO;qBACV;oBAED,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;iBACrC,aAGI,CACJ,CACJ,EACV;AACL,CAAC;;MC5MY,WAAW,GAA+B,CAAC,KAAK;IAC3D,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG5B,cAAQ,CAAU,KAAK,CAAC,CAAC;IAC7D,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAGA,cAAQ,CAAU,KAAK,CAAC,CAAC;IACvD,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAGA,cAAQ,CAAsB,IAAI,CAAC,CAAC;IACtE,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAGA,cAAQ,CAAU,KAAK,CAAC,CAAC;;IAGvD,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAGA,cAAQ,CAC9C,EAAE,CACH,CAAC;IACF,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAGA,cAAQ,CAAS,EAAE,CAAC,CAAC;IACrD,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAGA,cAAQ,CAAS,EAAE,CAAC,CAAC;IACrD,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAGA,cAAQ,CAAS,EAAE,CAAC,CAAC;IACrD,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAGA,cAAQ,CAAS,EAAE,CAAC,CAAC;IACjE,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAGA,cAAQ,CAAS,EAAE,CAAC,CAAC;IAGrD,MAAM,UAAU,GAAsC;QACpD,IAAI;YACF,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,6BAA6B,CAAC,CAAC;YAE5D,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE;gBAC3B,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;gBAEnC,eAAe,CAAC,IAAI,CAAC,CAAC;aACvB;SACF;QAAC,OAAO,KAAK,EAAE;YACd,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;SACtB;QAED,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,yBAAyB,CAAC,CAAC;QACxD,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE;YAC3B,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACnC,MAAM,MAAM,GAAG,IAAI,kBAAkB,CAAC,IAAI,CAAC,CAAC;YAC5C,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC7B,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC7B,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC7B,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC7B,iBAAiB,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;YACzC,OAAO,MAAM,CAAC;SACf;aAAM;YACL,MAAM,mBAAmB,QAAQ,CAAC,MAAM,EAAE,CAAC;SAC5C;KACF,CAAA,CAAC;IAEF,MAAM,aAAa,GAAkD,CACnE,MAA0B;QAE1B,MAAM,KAAK,GAAG,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;QAChE,IAAI,CAAC,KAAK;YAAE,OAAO;QAEnB,IAAI;YACF,MAAM,UAAU,GAAG,MAAM,gBAAgB,EAAE,CAAC;YAE5C,MAAM,WAAW,GAAG,MAAM,iBAAiB,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;YAC/D,IAAG,WAAW,EAAE;gBACd,MAAM,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;gBACvC,YAAY,CAAC,SAAS,CAAC,CAAC;;gBAGxB,IAAI,KAAK,CAAC,YAAY,EAAE;oBACtB,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;iBACrC;gBAED,aAAa,CAAC,IAAI,CAAC,CAAC;gBAEpB,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;aACvC;iBAAM;gBACL,MAAM,qBAAqB,CAAA;aAC5B;SACF;QAAC,OAAO,KAAK,EAAE;;YAEd,IAAI,KAAK,CAAC,YAAY,EAAE;gBACtB,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aAC3B;YAED,aAAa,CAAC,KAAK,CAAC,CAAC;YACrB,UAAU,CAAC,KAAK,CAAC,CAAC;YAElB,IAAI,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,mBAAmB,EAAE;gBACtE,OAAO,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;gBAC3C,UAAU,CAAC,IAAI,CAAC,CAAC;aAClB;iBAAM;gBACL,OAAO,CAAC,KAAK,CAAC,sCAAsC,EAAE,KAAK,CAAC,CAAC;aAC9D;SACF;KACF,CAAA,CAAC;;;;IAKF,MAAM,OAAO,GAAG;QACd,IAAI;YACF,MAAM,MAAM,GAAG,MAAM,UAAU,EAAE,CAAC;YAClC,MAAM,aAAa,CAAC,MAAM,CAAC,CAAC;SAC7B;QAAC,OAAM,GAAG,EAAE;YACT,IAAI,GAAG,YAAY6B,WAAM,EAAE;gBACzB,OAAO,CAAC,GAAG,CAAC,qCAAqC,EAAE,GAAG,CAAC,CAAC;aACzD;iBAAM;gBACL,OAAO,CAAC,GAAG,CAAC,sCAAsC,EAAE,GAAG,CAAC,CAAC;aAC1D;SACJ;KACF,CAAA,CAAA;IAEDb,eAAS,CAAC;QACR,OAAO,EAAE,CAAC;KACX,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,YAAY,GAAG;QACnB,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACjD,MAAM,WAAW,GACf,UAAU,CAAC,QAAQ,GAAG,IAAI,GAAG,UAAU,CAAC,IAAI,GAAG,kBAAkB,CAAC;QAEpE,MAAM,IAAI,GAA2B;YACnC,aAAa,EAAE,MAAM;YACrB,SAAS,EAAE,QAAQ;YACnB,QAAQ,EAAE,QAAQ;YAClB,YAAY,EAAE,WAAW;YACzB,KAAK,EAAE,UAAU,CAAC,QAAQ;SAC3B,CAAC;QAEF,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CACtC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,IAAI,kBAAkB,CAAC,CAAC,CAAC,EAAE,CAC5C,CAAC;QAEF,OAAO,QAAQ,GAAG,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;KAC3C,CAAC;IAEF,MAAM,OAAO,GAAG,CACd,IAAY,EACZ,IAAY,EACZ,SAA8B,EAC9B,KAAa,MAEbf,gDACE,GAAG,EAAE,KAAK,EACV,KAAK,EAAE;YACL,OAAO,EAAE,SAAS,IAAI,OAAO,GAAG,SAAS,GAAG,MAAM,IAAI,SAAS;SAChE,IAEA,+BAA+B,CAAC,IAAI,CAAC,IACpCA,wCAACI,mBAAI,IAAC,EAAE,EAAE,yBAAyB,CAAC,IAAI,CAAC,IAAG,IAAI,CAAQ,KAExDJ,+CAAG,IAAI,EAAE,IAAI,IAAG,IAAI,CAAK,CAC1B,CACE,CACN,CAAC;IAEF,QACEA,kFACG,UAAU,IAAI,SAAS,IACtBA,iDAAK,SAAS,EAAC,wBAAwB;QACrCA,gDAAI,SAAS,EAAC,cAAc,IACzB,CACC,YAAY,IAAI,EAAE,EAClB,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,KAAK,KACpD,IAAI,KAAK,MAAM,IACb,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC,KAErCA,wCAAC,UAAU,IACT,GAAG,EAAE,KAAK,EACV,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,IAAI,EACV,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,OAAO,GAChB,CACH,CACF,CACE;QACLA,wCAAC,cAAc,IAAC,SAAS,EAAE,SAAS,EACpB,WAAW,EAAE,KAAK,CAAC,WAAW,EAC9B,gBAAgB,EAAE;gBAChB,OAAO,EAAE,CAAC;aACX,EACD,cAAc,EAAE;gBACd,UAAU,CAAC,IAAI,CAAC,CAAC;gBACjB,aAAa,CAAC,KAAK,CAAC,CAAC;aACtB,EACD,QAAQ,EAAE,QAAQ,GAChC,CACE,KAENA,iDAAK,SAAS,EAAC,wBAAwB;QACrCA,kDAAM,SAAS,EAAC,eAAe;YAC5B,OAAO;kBACJ,wBAAwB;kBACxB,iCAAiC;YACrCA,wCAAC2B,WAAM,IACL,SAAS,EAAC,cAAc,EACxB,OAAO,EAAC,UAAU,EAClB,IAAI,EAAC,OAAO,EACZ,OAAO,EAAE;oBACP,IAAI,KAAK,CAAC,UAAU,EAAE;wBACpB,KAAK,CAAC,UAAU,EAAE,CAAC;wBACnB,OAAO;qBACR;;oBAGD,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;iBACxC;;gBAEM,OAAO,GAAG,OAAO,GAAG,EAAE,CACtB,CACJ,CACH,CACP,CACA,EACH;AACJ;;;;;;;;;;;;;;;;;;;;;;;;;MClOa,MAAM,GAAG;IACpB,QACE3B;QACEA,iDAAK,SAAS,EAAC,QAAQ;YACrBA,iDAAK,SAAS,EAAC,SAAS;gBACtBA,+CAAG,IAAI,EAAC,GAAG,EAAC,KAAK,EAAE,EAAE,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,EAAE;oBAC/DA,wCAAC6B,gBAAY,IACX,KAAK,EAAE,OAAO,EACd,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,aAAa,GACtB,CACA,CACA,CACF,CACL,EACH;AACJ;;ACPA;;;AAGO,MAAM,YAAY,GAAG,CAC1B,WAAwB;IAExB,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,WAAW,CAAC;IAC3C,MAAM,QAAQ,GAA8B;QAC1C,UAAU,EAAE,eAAe;QAC3B,SAAS,EAAE,QAAQ;QACnB,aAAa,EAAE,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,qBAAqB,CAAW;KAC5E,CAAC;IAEF,IAAI;QACF,MAAM,QAAQ,GAAG,MAAMC,yBAAK,CAAC,IAAI,CAAC,QAAQ,EAAEC,sBAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE;YAClE,OAAO,EAAE;gBACP,MAAM,EAAE,kBAAkB;gBAC1B,cAAc,EAAE,mCAAmC;aACpD;SACF,CAAC,CAAC;QAEH,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE;YAC3B,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC;YAEjC,OAAO,IAAI,CAAC;SACb;QAED,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;KAClD;IAAC,OAAO,KAAK,EAAE;QACd,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;KAC9B;AACH,CAAC,CAAA,CAAC;AAOF,IAAI,YAAY,GAAG,KAAK,CAAC;AACzB,IAAI,WAAW,GAAkB,EAAE,CAAC;AAEpC,MAAM,YAAY,GAAG,CAAC,KAAU,EAAE,KAAoB;IACpD,WAAW,CAAC,OAAO,CAAC,CAAC,IAAI;QACvB,IAAI,KAAK,EAAE;YACT,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;SACpB;aAAM;YACL,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;SACrB;KACF,CAAC,CAAC;IAEH,WAAW,GAAG,EAAE,CAAC;AACnB,CAAC,CAAC;AAEF;;;MAGa,kBAAkB,GAAG,CAChC,WAAwB,EACxB,KAAU,EACV,eAA2B;IAE3B,MAAM,eAAe,GAAG,KAAK,CAAC,MAAM,CAAC;IAErC,IAAI,CAAC,eAAe,CAAC,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE;;;;;QAK5D,IAAI,YAAY,EAAE;YAChB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM;gBACjC,WAAW,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;aACvC,CAAC;iBACC,IAAI,CAAC,CAAC,KAAK;gBACV,eAAe,CAAC,OAAO,CAAC,aAAa,GAAG,UAAU,KAAK,EAAE,CAAC;gBAC1D,OAAOD,yBAAK,CAAC,eAAe,CAAC,CAAC;aAC/B,CAAC;iBACD,KAAK,CAAC,CAAC,KAAK;gBACX,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;aAC9B,CAAC,CAAC;SACN;QAED,eAAe,CAAC,MAAM,GAAG,IAAI,CAAC;QAC9B,YAAY,GAAG,IAAI,CAAC;QAEpB,IAAI;YACF,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,WAAW,CAAC,CAAC;YAE7C,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,oBAAoB,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;YACrE,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,qBAAqB,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;YAEvE,eAAe,CAAC,OAAO,CAAC,aAAa,GAAG,UAAU,IAAI,CAAC,YAAY,EAAE,CAAC;YACtE,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;YACtC,OAAOA,yBAAK,CAAC,eAAe,CAAC,CAAC;SAC/B;QAAC,OAAO,KAAK,EAAE;YACd,IAAI,eAAe,EAAE;gBACnB,eAAe,EAAE,CAAC;aACnB;YAED,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;YAC1B,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;SAC9B;gBAAS;YACR,YAAY,GAAG,KAAK,CAAC;SACtB;KACF;AACH,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC9ED,MAAM,UAAW,SAAQ9B,yBAAK,CAAC,SAA2C;IACxE,YAAY,KAAsB;QAChC,KAAK,CAAC,KAAK,CAAC,CAAC;QAEb,IAAI,CAAC,KAAK,GAAG;YACX,QAAQ,EAAE,KAAK;YACf,OAAO,EAAE,KAAK;YACd,WAAW,EAAE,EAAE;YACf,cAAc,EAAE,EAAE;YAClB,UAAU,EAAE,EAAE;YACd,YAAY,EAAE,SAAS;YACvB,SAAS,EAAE,SAAS;SACrB,CAAC;KACH;;;;;IAMD,OAAO,wBAAwB,CAAC,KAAU;QACxC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;KAC3C;IAED,iBAAiB,CAAC,KAAY,EAAE,SAA0B;QACxD,OAAO,CAAC,KAAK,CACX,yDAAyD,EACzD,KAAK,EACL,SAAS,CACV,CAAC;KACH;;;;IAKD,eAAe,CAAC,QAAa;QAC3B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KACjC,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,OAAO,EAAE,CAAC,CACzC,CAAC;KACH;;;;;IAMK,aAAa,CAAC,GAAW;;;YAC7B,IAAI;gBACF,MAAM,QAAQ,GAAG,MAAM8B,yBAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBACtC,IAAI,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;oBACvE,OAAO;wBACL,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK;wBACjC,cAAc,EAAE,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc;wBACnD,YAAY,QAAE,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,mCAAI,QAAQ,CAAC,IAAI,CAAC,EAAE;qBACpE,CAAC;iBACH;qBAAM;oBACL,OAAO;wBACL,KAAK,EAAE,QAAQ;qBAChB,CAAC;iBACH;aACF;YAAC,OAAO,GAAG,EAAE;gBACZ,IAAI,GAAG,CAAC,QAAQ,EAAE;oBAChB,QAAQ,GAAG,CAAC,QAAQ,CAAC,MAAM;wBACzB,KAAK,GAAG;4BACN,OAAO,CAAC,IAAI,CAAC,8BAA8B,EAAE,GAAG,CAAC,CAAC;4BAClD,OAAO;gCACL,KAAK,EAAE,QAAQ;6BAChB,CAAC;wBACJ,KAAK,GAAG,CAAC;wBACT,KAAK,GAAG;4BACN,OAAO,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC;4BAE1D,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM;gCACjC,MAAM,CAAC,UAAU,CAAC;oCAChB,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC;yCAClB,IAAI,CAAC,CAAC,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;yCACjC,KAAK,CAAC,CAAC,GAAG,KAAK,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;iCAClC,EAAE,IAAI,CAAC,CAAC;6BACV,CAAC,CAAC;qBAGN;iBACF;gBACD,MAAM,gCAAgC,CAAC;aAExC;YACD,OAAO;gBACL,KAAK,EAAE,QAAQ;aAChB,CAAC;;KACH;IAEK,kBAAkB;;;YACtB,MAAM,IAAI,CAAC,eAAe,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;;;YAG9C,MAAM,GAAG,GAAG,GAAG,MAAA,IAAI,CAAC,KAAK,CAAC,gBAAgB,mCAAI,aAAa,yBAAyB,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;YAE9G,IAAI;gBACF,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;gBACpD,OAAO,IAAI,CAAC,eAAe,CAAC;oBAC1B,OAAO,EAAE,KAAK;oBACd,cAAc,EAAE,aAAa,CAAC,KAAK;iBACpC,CAAC,CAAC;aACJ;YAAC,OAAO,GAAG,EAAE;gBACZ,OAAO,IAAI,CAAC,eAAe,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;aACjE;;KACF;IAEK,eAAe;;;YACnB,MAAM,IAAI,CAAC,eAAe,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;YAC9C,MAAM,GAAG,GAAG,GAAG,MAAA,IAAI,CAAC,KAAK,CAAC,gBAAgB,mCAAI,aAAa,gBAAgB,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;YAElG,IAAI;gBACF,MAAM,oBAAoB,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;gBAC3D,IAAI,oBAAoB,CAAC,YAAY,EAAE;oBACrC,MAAM,aAAa,GAAG,GAAG,MAAA,IAAI,CAAC,KAAK,CAAC,gBAAgB,mCAAI,aAAa,yBAAyB,oBAAoB,CAAC,YAAY,EAAE,CAAC;oBAClI,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;oBAClE,OAAO,IAAI,CAAC,eAAe,CAAC;wBAC1B,OAAO,EAAE,KAAK;wBACd,cAAc,EAAE,iBAAiB,CAAC,KAAK;wBACvC,YAAY,EAAE,oBAAoB,CAAC,YAAY;wBAC/C,WAAW,EAAE,oBAAoB,CAAC,KAAK;qBACxC,CAAC,CAAC;iBACJ;qBAAM;oBACL,OAAO,IAAI,CAAC,eAAe,CAAC;wBAC1B,OAAO,EAAE,KAAK;wBACd,WAAW,EAAE,oBAAoB,CAAC,KAAK;qBACxC,CAAC,CAAC;iBACJ;aACF;YAAC,OAAO,GAAG,EAAE;gBACZ,OAAO,CAAC,KAAK,CAAC,+BAA+B,EAAE,GAAG,CAAC,CAAC;gBACpD,OAAO,IAAI,CAAC,eAAe,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;aACjE;;KACF;IAEK,cAAc;;YAClB,MAAM,IAAI,CAAC,eAAe,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;YAC9C,MAAM,GAAG,GAAG,2BAA2B,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;YAE7D,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;YAClD,OAAO,IAAI,CAAC,eAAe,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;SACjE;KAAA;;;;IAKK,QAAQ;;YACZ,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;gBACvB,OAAO,IAAI,CAAC,cAAc,EAAE,CAAC;aAC9B;iBAAM,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE;gBAC/B,OAAO,IAAI,CAAC,eAAe,EAAE,CAAC;aAC/B;iBAAM,IAAI,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE;gBAClC,OAAO,IAAI,CAAC,kBAAkB,EAAE,CAAC;aAClC;iBAAM;gBACL,OAAO,CAAC,KAAK,CACX,gEAAgE,CACjE,CAAC;aACH;SACF;KAAA;IAED,kBAAkB,CAAC,SAAoC,EAAE,SAAoC,EAAE,QAAc;QAC3G,IAAG,SAAS,IAAE,IAAI,CAAC,KAAK;YAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;KAC3C;IAED,iBAAiB;QACf,IAAI,CAAC,QAAQ,EAAE,CAAC;KACjB;IAED,MAAM;;QACJ,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;YACvB,QACE9B,iDAAK,SAAS,EAAC,sBAAsB;gBACnCA,kFAAmC,CAC/B,EACN;SACH;aAAM;YACL,QACEA,iDAAK,SAAS,EAAC,sBAAsB;gBAClC,IAAI,CAAC,KAAK,CAAC,cAAc,IAAI,EAAE,GAAG,IAAI,IACrCA,iDAAK,SAAS,EAAC,YAAY;oBACzBA,wCAACgC,IAAc,IAAC,KAAK,EAAE,EAAC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,EAAC,GAAG;oBACjEhC,wCAACI,SAAI,IAAC,IAAI,EAAE,GAAG,MAAA,IAAI,CAAC,KAAK,CAAC,gBAAgB,mCAAI,aAAa,eAAe,MAAA,IAAI,CAAC,KAAK,CAAC,YAAY,mCAAI,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,EAAE,SAAS,EAAC,iBAAiB,IAAE,IAAI,CAAC,KAAK,CAAC,cAAc,CAAQ;oBAE5L,IAAI,CAAC,KAAK,CAAC,WAAW,IAAE,EAAE,GAAG,IAAI,GAAGJ,wCAACiC,yBAAmB,IAAC,KAAK,EAAE,EAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAC,MAAM,EAAC,GAAG,CAEjH,CACP;gBACA,IAAI,CAAC,KAAK,CAAC,WAAW,IAAI,EAAE,GAAG,IAAI,IAClCjC,iDAAK,SAAS,EAAC,YAAY;oBACzBA,wCAACkC,IAAW,IAAC,KAAK,EAAE,EAAC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,EAAC,GAAG;oBAC9DlC,wCAACI,SAAI,IAAC,IAAI,EAAE,GAAG,MAAA,IAAI,CAAC,KAAK,CAAC,gBAAgB,mCAAI,aAAa,YAAY,MAAA,IAAI,CAAC,KAAK,CAAC,SAAS,mCAAI,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,SAAS,EAAC,iBAAiB,IAAE,IAAI,CAAC,KAAK,CAAC,WAAW,CAAQ;oBAEhL,IAAI,CAAC,KAAK,CAAC,UAAU,IAAE,EAAE,GAAG,IAAI,GAAGJ,wCAACiC,yBAAmB,IAAC,KAAK,EAAE,EAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAC,MAAM,EAAC,GAAG,CAEhH,CACP;gBACA,IAAI,CAAC,KAAK,CAAC,UAAU,IAAI,EAAE,GAAG,IAAI,IACjCjC,iDAAK,SAAS,EAAC,YAAY;oBACzBA,wCAACmC,IAAU,IAAC,KAAK,EAAE,EAAC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,EAAC,GAAG;oBAC7DnC,+CAAG,SAAS,EAAC,iBAAiB,IAAE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAK,CACtD,CACP,CACG,EACN;SACH;KACF;;;AC1OH,WAAY,qBAAqB;IAC7B,4CAAmB,CAAA;IACnB,wCAAe,CAAA;IACf,sCAAa,CAAA;IACb,4CAAmB,CAAA;AACvB,CAAC,EALWoC,6BAAqB,KAArBA,6BAAqB,QAKhC;AAID,IAAI,sBAAgC,CAAC;AAErC,SAAS,KAAK,CAAC,KAAiB;IAC5B,OAAOpC,wCAACqC,4BAAQ,kBAAC,SAAS,EAAE,CAAC,EAAE,OAAO,EAAC,QAAQ,IAAK,KAAK,EAAI,CAAC;AAClE,CAAC;MAEK,kBAAkB,GAAsC;IAC1D,MAAM,gBAAgB,GAAG,IAAI,CAAC;IAE9B,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAGtC,cAAQ,CAAC,KAAK,CAAC,CAAC;IACxC,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAGA,cAAQ,CAAC,EAAE,CAAC,CAAC;IAC3C,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAGA,cAAQ,CAC5BqC,6BAAqB,CAAC,IAAI,CAC7B,CAAC;IAEF,MAAM,KAAK,GAAG;QACV,OAAO,CAAC,KAAK,CAAC,CAAC;KAClB,CAAC;IAEF,sBAAsB,GAAG,CAAC,IAA2B,EAAE,OAAe;QAClE,OAAO,CAAC,IAAI,CAAC,CAAC;QACd,UAAU,CAAC,OAAO,CAAC,CAAC;QACpB,OAAO,CAAC,IAAI,CAAC,CAAC;KACjB,CAAC;IAEF,QACIpC,wCAACsC,aAAQ,IACL,IAAI,EAAE,IAAI,EACV,gBAAgB,EAAE,gBAAgB,EAClC,OAAO,EAAE,KAAK,EACd,YAAY,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE;QAEtDtC,wCAAC,KAAK,IAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAW,IAAG,OAAO,CAAS,CACrD,EACb;AACN,EAAE;AAEF,kBAAkB,CAAC,IAAI,GAAG,CAAC,IAA2B,EAAE,OAAe,KACnE,sBAAsB,CAAC,IAAI,EAAE,OAAO,CAAC;;MC5CnC,YAAY,GAAGA,yBAAK,CAAC,aAAa,CACtC,SAAS,EACT;MAEI,oBAAoB,GAGrB,CAAC,KAAK;IACT,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAGD,cAAQ,CAAC,EAAE,CAAC,CAAC;IAC7C,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAGA,cAAQ,CAAC,EAAE,CAAC,CAAC;IAC7C,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAGA,cAAQ,CAAC,EAAE,CAAC,CAAC;IAC7C,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAGA,cAAQ,CAAC,EAAE,CAAC,CAAC;IAC7C,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAGA,cAAQ,CAAC,KAAK,CAAC,CAAC;IAEhD,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACjD,MAAM,WAAW,GACf,UAAU,CAAC,QAAQ,GAAG,IAAI,GAAG,UAAU,CAAC,IAAI,GAAG,kBAAkB,CAAC;IAEpE,MAAM,aAAa,GAAG;QACpB,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,yBAAyB,CAAC,CAAC;QACxD,QAAQ,QAAQ,CAAC,MAAM;YACrB,KAAK,GAAG;gBACN,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;gBAEtC,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;gBAC9B,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;gBAC9B,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;gBAC9B,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;gBAC9B,WAAW,CAAC,IAAI,CAAC,CAAC;gBAClB,MAAM;YACR,KAAK,GAAG;gBACN,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;gBACtB,IAAI,KAAK,CAAC,OAAO;oBACf,KAAK,CAAC,OAAO,CACX,4DAA4D,CAC7D,CAAC;gBACJ,MAAM;YACR;gBACE,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;gBACtB,IAAI,KAAK,CAAC,OAAO;oBACf,KAAK,CAAC,OAAO,CACX,qBAAqB,QAAQ,CAAC,MAAM,mCAAmC,CACxE,CAAC;gBACJ,MAAM;SACT;KACF,CAAA,CAAC;IAEFgB,eAAS,CAAC;QACR,aAAa,EAAE,CAAC;KACjB,EAAE,EAAE,CAAC,CAAC;IAEP,QACEf,wCAAC,YAAY,CAAC,QAAQ,IACpB,KAAK,EACH,QAAQ;cACJ;gBACE,QAAQ,EAAE,QAAQ;gBAClB,QAAQ,EAAE,QAAQ;gBAClB,QAAQ,EAAE,QAAQ;gBAClB,QAAQ,EAAE,QAAQ;gBAClB,WAAW,EAAE,WAAW;aACzB;cACD,SAAS,IAGd,KAAK,CAAC,QAAQ,CACO,EACxB;AACJ,EAAE;AAEF,SAAS,YAAY,CAAC,YAA8B;IAClD,MAAM,IAAI,GAAG;QACX,aAAa,EAAE,MAAM;QACrB,SAAS,EAAE,YAAY,CAAC,QAAQ;QAChC,QAAQ,EAAE,YAAY,CAAC,QAAQ;QAC/B,YAAY,EAAE,YAAY,CAAC,WAAW;QACtC,KAAK,EAAE,GAAG;KACX,CAAC;IAEF,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CACpC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,IAAI,kBAAkB,CAAC,CAAC,CAAC,EAAE,CAC9C,CAAC;IAEF,OAAO,YAAY,CAAC,QAAQ,GAAG,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACzD;;MCvFM,WAAW,GAAGA,yBAAK,CAAC,aAAa,CAAc;IACnD,OAAO,EAAE,SAAS;IAClB,aAAa,EAAE,CAAC,QAAQ,QAAO;CAChC,EAAE;MAEU,mBAAmB,GAAG,WAAW,CAAC;;MCVzC,iBAAiB,GAAG,CAAC,IAAY;IACnC,MAAM,OAAO,GAAG,IAAI,GAAG;QACf,IAAI,EAAE,MAAM;QACZ,UAAU,EAAE;YACR,KAAK,EAAE,WAAW;SACrB;KACc,GAAE;QACjB,IAAI,EAAE,OAAO;QACb,UAAU,EAAE;YACR,KAAK,EAAE,WAAW;SACrB;KACc,CAAA;IAEvB,OAAOuC,kBAAW,CAAC;QACf,UAAU,EAAE;YACR,UAAU,EACN,sFAAsF;SAC7F;QACD,OAAO,EAAE,OAAO;KACnB,CAAC,CAAC;AACP;;MCbM,kBAAkB,GAAqC,CAAC,KAAK;IAC/D,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAGxC,cAAQ,CAAC,EAAE,YAAY,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,YAAY,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAE,OAAO,CAAC,CAAC,CAAC;IAEzI,MAAM,cAAc,GAAG,CAAC,QAAgB;QACpC,YAAY,CAAC,OAAO,CAAC,iBAAiB,EAAE,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC;QACrE,WAAW,CAAC,QAAQ,CAAC,CAAC;KACzB,CAAA;IAED,OAAOC,wCAACwC,kBAAa,IAAC,KAAK,EAAE,iBAAiB,CAAC,QAAQ,CAAC;QACpDxC,wCAAC,uBAAuB,CAAC,QAAQ,IAAC,KAAK,EAAE,EAAC,QAAQ,EAAE,QAAQ,EAAE,cAAc,EAAE,cAAc,EAAC,IAErF,KAAK,CAAC,QAAQ,CAEa,CACvB,CAAA;AACpB;;;;;;;;;;;;;;;;;;;;;"} \ No newline at end of file diff --git a/src/components/AppSwitcher/LoginComponent.tsx b/src/components/AppSwitcher/LoginComponent.tsx index 6b58651..74378eb 100644 --- a/src/components/AppSwitcher/LoginComponent.tsx +++ b/src/components/AppSwitcher/LoginComponent.tsx @@ -2,7 +2,7 @@ import React, {useState, useEffect, useRef, useContext} from "react"; import {Button, Grid, IconButton, Tooltip, Typography} from "@material-ui/core"; import {JwtDataShape} from "../../utils/DecodedProfile"; import {CircularProgress} from "@material-ui/core"; -import {Error, CheckCircle, Person, Brightness7, Brightness4} from "@material-ui/icons"; +import {Error, CheckCircle, Person, Brightness7, Brightness4, HelpOutline} from "@material-ui/icons"; import {refreshLogin} from "../../utils/OAuth2Helper"; import {makeStyles} from "@material-ui/core/styles"; import CustomisingThemeContext from "../Theme/CustomisingThemeContext"; @@ -31,7 +31,7 @@ const useStyles = makeStyles({ textOnGrey: { color: "black" }, - themeSwitcher: { + iconButton: { height: "36px", width: "36px", padding: "6px" @@ -139,7 +139,10 @@ const LoginComponent:React.FC = (props) => { }; const toggleThemeMode = ()=>themeContext.changeDarkMode(!themeContext.darkMode); - + const openDocs = ()=> window.open( + "https://docs.google.com/document/d/1QG9mOu_HDBoGqQs7Dly0sxifk4w9vaJiDiWdi3Uk1a8", + "_blank" + ) return ( @@ -151,11 +154,20 @@ const LoginComponent:React.FC = (props) => { - - { - themeContext.darkMode ? : - } - + + + { + themeContext.darkMode ? : + } + + + + + + + + + { refreshInProgress ?