diff --git a/www/dist-dev/static/app.js b/www/dist-dev/static/app.js
index 72ae9eb9..a95c960f 100644
--- a/www/dist-dev/static/app.js
+++ b/www/dist-dev/static/app.js
@@ -856,7 +856,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ EndpointChart)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var chart_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! chart.js */ \"./node_modules/chart.js/dist/chart.esm.js\");\n/* harmony import */ var _actions_CheckActions__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../actions/CheckActions */ \"./app/actions/CheckActions.js\");\n/* harmony import */ var _actions_EndpointActions__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../actions/EndpointActions */ \"./app/actions/EndpointActions.js\");\n/* harmony import */ var _types_ChartTypes__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../types/ChartTypes */ \"./app/types/ChartTypes.js\");\n/* harmony import */ var _utils_MiscUtils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../utils/MiscUtils */ \"./app/utils/MiscUtils.js\");\n/* harmony import */ var _Theme__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../Theme */ \"./app/Theme.js\");\n\n\n\n\n\n\n\nconst colors = [\n '#0091ea',\n '#d50000',\n '#00c853',\n '#aa00ff',\n '#ffab00',\n '#c51162',\n '#2962ff',\n '#ff6d00',\n '#00bfa5',\n '#304ffe',\n '#00b8d4',\n '#6200ea',\n '#ffd600',\n '#dd2c00',\n '#5d4037',\n '#455a64',\n '#64dd17',\n '#aeea00',\n '#0091ea',\n '#d50000',\n '#00c853',\n '#aa00ff',\n '#ffab00',\n '#c51162',\n '#2962ff',\n '#ff6d00',\n '#00bfa5',\n '#304ffe',\n '#00b8d4',\n '#6200ea',\n '#ffd600',\n '#dd2c00',\n '#5d4037',\n '#455a64',\n '#64dd17',\n '#aeea00',\n '#0091ea',\n '#d50000',\n '#00c853',\n '#aa00ff',\n '#ffab00',\n '#c51162',\n '#2962ff',\n '#ff6d00',\n '#00bfa5',\n '#304ffe',\n '#00b8d4',\n '#6200ea',\n '#ffd600',\n '#dd2c00',\n '#5d4037',\n '#455a64',\n '#64dd17',\n '#aeea00',\n '#0091ea',\n '#d50000',\n '#00c853',\n '#aa00ff',\n '#ffab00',\n '#c51162',\n '#2962ff',\n '#ff6d00',\n '#00bfa5',\n '#304ffe',\n '#00b8d4',\n '#6200ea',\n '#ffd600',\n '#dd2c00',\n '#5d4037',\n '#455a64',\n '#64dd17',\n '#aeea00',\n];\nclass EndpointChart extends react__WEBPACK_IMPORTED_MODULE_0__.Component {\n constructor(props, context) {\n super(props, context);\n this.ticks = (axis) => {\n let ticks = axis.ticks;\n let newTicks = [];\n let dataset = Object.values(this.data)[0];\n let tickMod = 3600000;\n let len = dataset.length;\n if (len) {\n let first = dataset[0];\n let last = dataset[len - 1];\n let range = last.x - first.x;\n if (range >= 2833920000) {\n tickMod = 604800000;\n }\n else if (range >= 1451520000) {\n tickMod = 172800000;\n }\n else if (range >= 611280000) {\n tickMod = 86400000;\n }\n else if (range >= 276480000) {\n tickMod = 43200000;\n }\n else if (range >= 89280000) {\n tickMod = 21600000;\n }\n else {\n tickMod = 3600000;\n }\n }\n for (let i = 0; i < ticks.length; i++) {\n let tick = ticks[i];\n if (tick.value % tickMod === 0) {\n newTicks.push(tick);\n }\n }\n axis.ticks = newTicks;\n };\n this.config = () => {\n this.labels = _types_ChartTypes__WEBPACK_IMPORTED_MODULE_4__.getChartLabels(this.props.resource, this.data);\n let self = this;\n let config = {\n type: 'line',\n options: {\n scales: {\n x: {\n type: 'time',\n title: {\n display: true,\n text: 'Time',\n color: _Theme__WEBPACK_IMPORTED_MODULE_6__.chartColor1(),\n padding: 0,\n font: {\n weight: 'bold',\n },\n },\n time: {\n unit: 'minute',\n displayFormats: {\n minute: 'HH:mm',\n },\n },\n ticks: {\n stepSize: 1,\n count: 100,\n maxTicksLimit: 100,\n color: _Theme__WEBPACK_IMPORTED_MODULE_6__.chartColor1(),\n source: 'data',\n },\n grid: {\n color: _Theme__WEBPACK_IMPORTED_MODULE_6__.chartColor2(),\n },\n beforeTickToLabelConversion: this.ticks,\n },\n y: {\n min: this.labels.resource_min,\n max: this.labels.resource_max,\n offset: false,\n beginAtZero: true,\n title: {\n display: true,\n text: this.labels.resource_label,\n color: _Theme__WEBPACK_IMPORTED_MODULE_6__.chartColor1(),\n padding: 0,\n font: {\n weight: 'bold',\n },\n },\n ticks: {\n color: _Theme__WEBPACK_IMPORTED_MODULE_6__.chartColor1(),\n callback: (val) => {\n switch (this.labels.resource_type) {\n case 'bytes':\n return _utils_MiscUtils__WEBPACK_IMPORTED_MODULE_5__.formatBytes(val, 0);\n case 'milliseconds':\n return _utils_MiscUtils__WEBPACK_IMPORTED_MODULE_5__.formatMs(val);\n default:\n return val;\n }\n }\n },\n grid: {\n color: _Theme__WEBPACK_IMPORTED_MODULE_6__.chartColor2(),\n },\n },\n },\n plugins: {\n title: {\n display: true,\n text: this.labels.title,\n color: _Theme__WEBPACK_IMPORTED_MODULE_6__.chartColor1(),\n padding: 3,\n font: {\n size: 13,\n },\n },\n tooltip: {\n enabled: false,\n mode: 'index',\n intersect: false,\n backgroundColor: 'rgba(0, 0, 0, 0.7)',\n external: (context) => {\n let toolElm = document.getElementById('chartjs-tooltip');\n if (!toolElm) {\n toolElm = document.createElement('div');\n toolElm.id = 'chartjs-tooltip';\n toolElm.className = 'bp3-card';\n toolElm.innerHTML = '
';\n document.body.appendChild(toolElm);\n }\n const model = context.tooltip;\n if (model.opacity === 0) {\n toolElm.style.opacity = '0';\n return;\n }\n function getBody(bodyItem) {\n return bodyItem.lines;\n }\n let boxRect = this.props.getBoxRect();\n let boxBottom = boxRect.bottom + window.pageYOffset;\n let boxTop = boxRect.top + window.pageYOffset + 130;\n let rowCount = 0;\n let height = 0;\n if (model.body) {\n const titleLines = model.title || [];\n const bodyLines = model.body.map(getBody);\n let innerHtml = '';\n titleLines.forEach(function (title) {\n innerHtml += '' + title + ' |
';\n });\n innerHtml += '';\n let tableRows = [];\n bodyLines.forEach(function (body, i) {\n if (!body || !body.length) {\n return;\n }\n let items = body[0].split(';');\n if (items.length < 2) {\n return;\n }\n const colors = model.labelColors[i];\n let style = 'background:' + colors.backgroundColor;\n style += '; border-color:' + colors.borderColor;\n const span = '';\n tableRows.push('' + span + items[0] +\n ' | ' + items[1] + ' | ');\n rowCount += 1;\n });\n height = 26.33 + (rowCount * 17.33);\n let double = height > (boxRect.height - 130);\n let curRow = '';\n rowCount = 0;\n tableRows.forEach(function (columns, i) {\n if (double && !curRow) {\n curRow = columns;\n }\n else {\n innerHtml += '' + curRow + columns + '
';\n curRow = '';\n rowCount += 1;\n }\n });\n if (curRow) {\n innerHtml += '' + curRow + '
';\n curRow = '';\n rowCount += 1;\n }\n height = 26.33 + (rowCount * 17.33);\n innerHtml += '';\n let tableRoot = toolElm.querySelector('table');\n tableRoot.innerHTML = innerHtml;\n }\n toolElm = document.getElementById('chartjs-tooltip');\n const position = context.chart.canvas.getBoundingClientRect();\n toolElm.style.opacity = '1';\n toolElm.style.position = 'absolute';\n if (this.props.left) {\n toolElm.style.right = \"\";\n toolElm.style.left = (document.body.offsetWidth -\n position.right + window.pageXOffset - 18) + 'px';\n }\n else {\n toolElm.style.left = \"\";\n toolElm.style.right = (document.body.offsetWidth -\n position.left + window.pageXOffset + 3) + 'px';\n }\n let toolTop = Math.round(position.top + (position.height / 2) -\n (height / 2) + window.pageYOffset);\n if (height > (boxRect.height - 130)) {\n toolTop = Math.round(boxRect.top + (boxRect.height / 2) -\n (height / 2) + window.pageYOffset);\n }\n else if (toolTop < boxTop) {\n toolTop = boxTop;\n }\n else if ((toolTop + height) > boxBottom) {\n toolTop = boxBottom - height;\n }\n toolElm.style.top = toolTop + 'px';\n toolElm.style.pointerEvents = 'none';\n },\n callbacks: {\n label(item) {\n let raw = item.raw;\n if (self.labels.hide_zero && !raw.y) {\n return '';\n }\n let val = '';\n if (raw) {\n switch (self.labels.resource_type) {\n case 'bytes':\n val = _utils_MiscUtils__WEBPACK_IMPORTED_MODULE_5__.formatBytes(raw.y, self.labels.resource_fixed);\n break;\n case 'milliseconds':\n val = _utils_MiscUtils__WEBPACK_IMPORTED_MODULE_5__.formatMs(raw.y);\n break;\n case 'float':\n val = raw.y.toFixed(self.labels.resource_fixed);\n break;\n default:\n val = raw.y;\n }\n }\n let dataset = item.dataset;\n if (self.labels.resource_fixed) {\n return dataset.label + ';' +\n val + self.labels.resource_suffix;\n }\n return dataset.label + ';' + val +\n self.labels.resource_suffix;\n },\n },\n },\n },\n },\n data: {\n datasets: [],\n },\n };\n let data = _types_ChartTypes__WEBPACK_IMPORTED_MODULE_4__.getChartData(this.props.resource, this.data);\n for (let i = 0; i < this.labels.datasets.length; i++) {\n let datasetLabels = this.labels.datasets[i];\n config.data.datasets.push({\n label: datasetLabels.label,\n data: data[i],\n fill: 'origin',\n pointRadius: 0,\n backgroundColor: colors[i] + '15',\n borderColor: colors[i],\n borderWidth: 2,\n });\n }\n return config;\n };\n this.state = {\n hidden: false,\n disabled: false,\n };\n this.chartRef = react__WEBPACK_IMPORTED_MODULE_0__.createRef();\n }\n update(sync, period, interval) {\n this.sync = sync;\n this.period = period;\n this.interval = interval;\n let loading = true;\n this.props.onLoading();\n let chartResp;\n if (this.props.check) {\n chartResp = _actions_CheckActions__WEBPACK_IMPORTED_MODULE_2__.chart(this.props.check, this.props.resource, this.period, this.interval);\n }\n else {\n chartResp = _actions_EndpointActions__WEBPACK_IMPORTED_MODULE_3__.chart(this.props.endpoint, this.props.resource, this.period, this.interval);\n }\n chartResp.then((data) => {\n if (loading) {\n loading = false;\n this.props.onLoaded();\n }\n if (data && data.has_data && data.data) {\n if (this.state.hidden) {\n this.setState({\n ...this.state,\n hidden: false,\n });\n }\n this.data = data.data;\n if (this.chart) {\n this.updateChart();\n }\n else {\n this.chart = new chart_js__WEBPACK_IMPORTED_MODULE_1__.Chart(this.chartRef.current, this.config());\n }\n }\n else {\n if (!this.state.hidden) {\n this.setState({\n ...this.state,\n hidden: true,\n });\n }\n }\n }).catch(() => {\n if (loading) {\n loading = false;\n this.props.onLoaded();\n }\n });\n }\n updateChart() {\n try {\n this.labels = _types_ChartTypes__WEBPACK_IMPORTED_MODULE_4__.getChartLabels(this.props.resource, this.data);\n let data = _types_ChartTypes__WEBPACK_IMPORTED_MODULE_4__.getChartData(this.props.resource, this.data);\n let dataLen = data.length;\n let datasetsLen = this.chart.data.datasets.length;\n for (let i = 0; i < Math.min(dataLen, datasetsLen); i++) {\n this.chart.data.datasets[i].label = this.labels.datasets[i].label;\n this.chart.data.datasets[i].data = data[i];\n }\n if (dataLen > datasetsLen) {\n for (let i = datasetsLen; i < dataLen; i++) {\n this.chart.data.datasets.push({\n label: this.labels.datasets[i].label,\n data: data[i],\n fill: 'origin',\n pointRadius: 0,\n backgroundColor: colors[i] + '15',\n borderColor: colors[i],\n borderWidth: 2,\n });\n }\n }\n else if (datasetsLen > dataLen) {\n for (let i = 0; i < datasetsLen - dataLen; i++) {\n this.chart.data.datasets.pop();\n }\n }\n this.chart.update();\n }\n catch (error) {\n console.error(error);\n }\n }\n componentDidMount() {\n this.sync = this.props.sync;\n this.period = this.props.period;\n this.interval = this.props.interval;\n let loading = true;\n this.props.onLoading();\n let chartResp;\n if (this.props.check) {\n chartResp = _actions_CheckActions__WEBPACK_IMPORTED_MODULE_2__.chart(this.props.check, this.props.resource, this.period, this.interval);\n }\n else {\n chartResp = _actions_EndpointActions__WEBPACK_IMPORTED_MODULE_3__.chart(this.props.endpoint, this.props.resource, this.period, this.interval);\n }\n chartResp.then((data) => {\n if (loading) {\n loading = false;\n this.props.onLoaded();\n }\n if (data && data.has_data && data.data) {\n if (this.state.hidden) {\n this.setState({\n ...this.state,\n hidden: false,\n });\n }\n this.data = data.data;\n this.chart = new chart_js__WEBPACK_IMPORTED_MODULE_1__.Chart(this.chartRef.current, this.config());\n }\n else {\n if (!this.state.hidden) {\n this.setState({\n ...this.state,\n hidden: true,\n });\n }\n }\n }).catch(() => {\n if (loading) {\n loading = false;\n this.props.onLoaded();\n }\n });\n }\n componentWillUnmount() {\n if (this.chart) {\n this.chart.destroy();\n }\n }\n render() {\n if ((this.sync !== undefined && this.period !== undefined &&\n this.interval !== undefined) &&\n (this.props.sync !== this.sync ||\n this.props.period !== this.period ||\n this.props.interval !== this.interval)) {\n this.update(this.props.sync, this.props.period, this.props.interval);\n }\n return react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"canvas\", { hidden: this.state.hidden, ref: this.chartRef });\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9hcHAvY29tcG9uZW50cy9FbmRwb2ludENoYXJ0LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQytCO0FBQ0s7QUFDb0I7QUFDTTtBQUNaO0FBQ0Y7QUFDZDtBQXlDbEMsTUFBTSxNQUFNLEdBQUc7SUFDZCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFFVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFFVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFFVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7Q0FDVCxDQUFDO0FBRWEsTUFBTSxhQUFjLFNBQVEsNENBQTZCO0lBU3ZFLFlBQVksS0FBVSxFQUFFLE9BQVk7UUFDbkMsS0FBSyxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztRQVF2QixVQUFLLEdBQUcsQ0FBQyxJQUFtQixFQUFFLEVBQUU7WUFDL0IsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztZQUN2QixJQUFJLFFBQVEsR0FBbUIsRUFBRSxDQUFDO1lBQ2xDLElBQUksT0FBTyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzFDLElBQUksT0FBTyxHQUFHLE9BQU8sQ0FBQztZQUN0QixJQUFJLEdBQUcsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDO1lBRXpCLElBQUksR0FBRyxFQUFFO2dCQUNSLElBQUksS0FBSyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQTZCLENBQUM7Z0JBQ25ELElBQUksSUFBSSxHQUFHLE9BQU8sQ0FBQyxHQUFHLEdBQUMsQ0FBQyxDQUE2QixDQUFDO2dCQUN0RCxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7Z0JBRTdCLElBQUksS0FBSyxJQUFJLFVBQVUsRUFBRTtvQkFDeEIsT0FBTyxHQUFHLFNBQVMsQ0FBQztpQkFDcEI7cUJBQU0sSUFBSSxLQUFLLElBQUksVUFBVSxFQUFFO29CQUMvQixPQUFPLEdBQUcsU0FBUyxDQUFDO2lCQUNwQjtxQkFBTSxJQUFJLEtBQUssSUFBSSxTQUFTLEVBQUU7b0JBQzlCLE9BQU8sR0FBRyxRQUFRLENBQUM7aUJBQ25CO3FCQUFNLElBQUksS0FBSyxJQUFJLFNBQVMsRUFBRTtvQkFDOUIsT0FBTyxHQUFHLFFBQVEsQ0FBQztpQkFDbkI7cUJBQU0sSUFBSSxLQUFLLElBQUksUUFBUSxFQUFFO29CQUM3QixPQUFPLEdBQUcsUUFBUSxDQUFDO2lCQUNuQjtxQkFBTTtvQkFDTixPQUFPLEdBQUcsT0FBTyxDQUFDO2lCQUNsQjthQUNEO1lBRUQsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Z0JBQ3RDLElBQUksSUFBSSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFFcEIsSUFBSSxJQUFJLENBQUMsS0FBSyxHQUFHLE9BQU8sS0FBSyxDQUFDLEVBQUU7b0JBQy9CLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7aUJBQ3BCO2FBQ0Q7WUFFRCxJQUFJLENBQUMsS0FBSyxHQUFHLFFBQVEsQ0FBQztRQUN2QixDQUFDO1FBRUQsV0FBTSxHQUFHLEdBQStCLEVBQUU7WUFDekMsSUFBSSxDQUFDLE1BQU0sR0FBRyw2REFBeUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDeEUsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDO1lBRWhCLElBQUksTUFBTSxHQUFHO2dCQUNaLElBQUksRUFBRSxNQUFNO2dCQUNaLE9BQU8sRUFBRTtvQkFDUixNQUFNLEVBQUU7d0JBQ1AsQ0FBQyxFQUFFOzRCQUNGLElBQUksRUFBRSxNQUFNOzRCQUNaLEtBQUssRUFBRTtnQ0FDTixPQUFPLEVBQUUsSUFBSTtnQ0FDYixJQUFJLEVBQUUsTUFBTTtnQ0FDWixLQUFLLEVBQUUsK0NBQWlCLEVBQUU7Z0NBQzFCLE9BQU8sRUFBRSxDQUFDO2dDQUNWLElBQUksRUFBRTtvQ0FDTCxNQUFNLEVBQUUsTUFBTTtpQ0FDZDs2QkFDRDs0QkFDRCxJQUFJLEVBQUU7Z0NBQ0wsSUFBSSxFQUFFLFFBQVE7Z0NBQ2QsY0FBYyxFQUFFO29DQUNmLE1BQU0sRUFBRSxPQUFPO2lDQUNmOzZCQUNEOzRCQUNELEtBQUssRUFBRTtnQ0FDTixRQUFRLEVBQUUsQ0FBQztnQ0FDWCxLQUFLLEVBQUUsR0FBRztnQ0FDVixhQUFhLEVBQUUsR0FBRztnQ0FDbEIsS0FBSyxFQUFFLCtDQUFpQixFQUFFO2dDQUMxQixNQUFNLEVBQUUsTUFBTTs2QkFDZDs0QkFDRCxJQUFJLEVBQUU7Z0NBQ0wsS0FBSyxFQUFFLCtDQUFpQixFQUFFOzZCQUMxQjs0QkFDRCwyQkFBMkIsRUFBRSxJQUFJLENBQUMsS0FBSzt5QkFDdkM7d0JBQ0QsQ0FBQyxFQUFFOzRCQUNGLEdBQUcsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVk7NEJBQzdCLEdBQUcsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVk7NEJBQzdCLE1BQU0sRUFBRSxLQUFLOzRCQUNiLFdBQVcsRUFBRSxJQUFJOzRCQUNqQixLQUFLLEVBQUU7Z0NBQ04sT0FBTyxFQUFFLElBQUk7Z0NBQ2IsSUFBSSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYztnQ0FDaEMsS0FBSyxFQUFFLCtDQUFpQixFQUFFO2dDQUMxQixPQUFPLEVBQUUsQ0FBQztnQ0FDVixJQUFJLEVBQUU7b0NBQ0wsTUFBTSxFQUFFLE1BQU07aUNBQ2Q7NkJBQ0Q7NEJBQ0QsS0FBSyxFQUFFO2dDQUNOLEtBQUssRUFBRSwrQ0FBaUIsRUFBRTtnQ0FDMUIsUUFBUSxFQUFFLENBQUMsR0FBVyxFQUFtQixFQUFFO29DQUMxQyxRQUFRLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUFFO3dDQUNsQyxLQUFLLE9BQU87NENBQ1gsT0FBTyx5REFBcUIsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7d0NBQ3RDLEtBQUssY0FBYzs0Q0FDbEIsT0FBTyxzREFBa0IsQ0FBQyxHQUFHLENBQUMsQ0FBQzt3Q0FDaEM7NENBQ0MsT0FBTyxHQUFHLENBQUM7cUNBQ1o7Z0NBQ0YsQ0FBQzs2QkFDRDs0QkFDRCxJQUFJLEVBQUU7Z0NBQ0wsS0FBSyxFQUFFLCtDQUFpQixFQUFFOzZCQUMxQjt5QkFDRDtxQkFDRDtvQkFDRCxPQUFPLEVBQUU7d0JBQ1IsS0FBSyxFQUFFOzRCQUNOLE9BQU8sRUFBRSxJQUFJOzRCQUNiLElBQUksRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUs7NEJBQ3ZCLEtBQUssRUFBRSwrQ0FBaUIsRUFBRTs0QkFDMUIsT0FBTyxFQUFFLENBQUM7NEJBQ1YsSUFBSSxFQUFFO2dDQUNMLElBQUksRUFBRSxFQUFFOzZCQUNSO3lCQUNEO3dCQUNELE9BQU8sRUFBRTs0QkFDUixPQUFPLEVBQUUsS0FBSzs0QkFDZCxJQUFJLEVBQUUsT0FBTzs0QkFDYixTQUFTLEVBQUUsS0FBSzs0QkFDaEIsZUFBZSxFQUFFLG9CQUFvQjs0QkFDckMsUUFBUSxFQUFFLENBQUMsT0FBTyxFQUFRLEVBQUU7Z0NBQzNCLElBQUksT0FBTyxHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUMsaUJBQWlCLENBQUMsQ0FBQztnQ0FFekQsSUFBSSxDQUFDLE9BQU8sRUFBRTtvQ0FDYixPQUFPLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztvQ0FDeEMsT0FBTyxDQUFDLEVBQUUsR0FBRyxpQkFBaUIsQ0FBQztvQ0FDL0IsT0FBTyxDQUFDLFNBQVMsR0FBRyxVQUFVLENBQUM7b0NBQy9CLE9BQU8sQ0FBQyxTQUFTLEdBQUcsK0JBQStCO3dDQUNsRCxpREFBaUQ7d0NBQ2pELHFCQUFxQixDQUFDO29DQUN2QixRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztpQ0FDbkM7Z0NBRUQsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQztnQ0FDOUIsSUFBSSxLQUFLLENBQUMsT0FBTyxLQUFLLENBQUMsRUFBRTtvQ0FDeEIsT0FBTyxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsR0FBRyxDQUFDO29DQUM1QixPQUFPO2lDQUNQO2dDQUVELFNBQVMsT0FBTyxDQUFDLFFBQWE7b0NBQzdCLE9BQU8sUUFBUSxDQUFDLEtBQUssQ0FBQztnQ0FDdkIsQ0FBQztnQ0FFRCxJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFBRTtnQ0FDckMsSUFBSSxTQUFTLEdBQUcsT0FBTyxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsV0FBVztnQ0FDbkQsSUFBSSxNQUFNLEdBQUcsT0FBTyxDQUFDLEdBQUcsR0FBRyxNQUFNLENBQUMsV0FBVyxHQUFHLEdBQUc7Z0NBRW5ELElBQUksUUFBUSxHQUFHLENBQUMsQ0FBQztnQ0FDakIsSUFBSSxNQUFNLEdBQUcsQ0FBQyxDQUFDO2dDQUNmLElBQUksS0FBSyxDQUFDLElBQUksRUFBRTtvQ0FDZixNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQztvQ0FDckMsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7b0NBRTFDLElBQUksU0FBUyxHQUFHLFNBQVMsQ0FBQztvQ0FFMUIsVUFBVSxDQUFDLE9BQU8sQ0FBQyxVQUFTLEtBQUs7d0NBQ2hDLFNBQVMsSUFBSSxzQkFBc0IsR0FBRyxLQUFLLEdBQUcsWUFBWSxDQUFDO29DQUM1RCxDQUFDLENBQUMsQ0FBQztvQ0FDSCxTQUFTLElBQUksaUJBQWlCLENBQUM7b0NBRS9CLElBQUksU0FBUyxHQUFhLEVBQUUsQ0FBQztvQ0FFN0IsU0FBUyxDQUFDLE9BQU8sQ0FBQyxVQUFTLElBQUksRUFBRSxDQUFDO3dDQUNqQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRTs0Q0FDMUIsT0FBTTt5Q0FDTjt3Q0FFRCxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQzt3Q0FDOUIsSUFBSSxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTs0Q0FDckIsT0FBTTt5Q0FDTjt3Q0FFRCxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO3dDQUNwQyxJQUFJLEtBQUssR0FBRyxhQUFhLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQzt3Q0FDbkQsS0FBSyxJQUFJLGlCQUFpQixHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUM7d0NBQ2hELE1BQU0sSUFBSSxHQUFHLGVBQWUsR0FBRyxLQUFLLEdBQUcsV0FBVyxDQUFDO3dDQUNuRCxTQUFTLENBQUMsSUFBSSxDQUFDLHVCQUF1QixHQUFHLElBQUksR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDOzRDQUN2RCxXQUFXLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQzt3Q0FFbEMsUUFBUSxJQUFJLENBQUM7b0NBQ2QsQ0FBQyxDQUFDLENBQUM7b0NBRUgsTUFBTSxHQUFHLEtBQUssR0FBRyxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsQ0FBQztvQ0FFcEMsSUFBSSxNQUFNLEdBQUcsTUFBTSxHQUFHLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQztvQ0FDN0MsSUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFDO29DQUVoQixRQUFRLEdBQUcsQ0FBQztvQ0FDWixTQUFTLENBQUMsT0FBTyxDQUFDLFVBQVMsT0FBTyxFQUFFLENBQUM7d0NBQ3BDLElBQUksTUFBTSxJQUFJLENBQUMsTUFBTSxFQUFFOzRDQUN0QixNQUFNLEdBQUcsT0FBTzt5Q0FDaEI7NkNBQU07NENBQ04sU0FBUyxJQUFJLE1BQU0sR0FBRyxNQUFNLEdBQUcsT0FBTyxHQUFHLE9BQU8sQ0FBQzs0Q0FDakQsTUFBTSxHQUFHLEVBQUUsQ0FBQzs0Q0FDWixRQUFRLElBQUksQ0FBQzt5Q0FDYjtvQ0FDRixDQUFDLENBQUM7b0NBRUYsSUFBSSxNQUFNLEVBQUU7d0NBQ1gsU0FBUyxJQUFJLE1BQU0sR0FBRyxNQUFNLEdBQUcsT0FBTyxDQUFDO3dDQUN2QyxNQUFNLEdBQUcsRUFBRSxDQUFDO3dDQUNaLFFBQVEsSUFBSSxDQUFDO3FDQUNiO29DQUVELE1BQU0sR0FBRyxLQUFLLEdBQUcsQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDLENBQUM7b0NBRXBDLFNBQVMsSUFBSSxVQUFVLENBQUM7b0NBRXhCLElBQUksU0FBUyxHQUFHLE9BQU8sQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7b0NBQy9DLFNBQVMsQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO2lDQUNoQztnQ0FFRCxPQUFPLEdBQUcsUUFBUSxDQUFDLGNBQWMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO2dDQUNyRCxNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO2dDQUU5RCxPQUFPLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUM7Z0NBQzVCLE9BQU8sQ0FBQyxLQUFLLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQztnQ0FFcEMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRTtvQ0FDcEIsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsRUFBRTtvQ0FDeEIsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLEdBQUcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVc7d0NBQzlDLFFBQVEsQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUM7aUNBQ2xEO3FDQUFNO29DQUNOLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLEVBQUU7b0NBQ3ZCLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXO3dDQUMvQyxRQUFRLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDO2lDQUNoRDtnQ0FFRCxJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztvQ0FDNUQsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO2dDQUVwQyxJQUFJLE1BQU0sR0FBRyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDLEVBQUU7b0NBQ3BDLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQzt3Q0FDdEQsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO2lDQUNwQztxQ0FBTSxJQUFJLE9BQU8sR0FBRyxNQUFNLEVBQUU7b0NBQzVCLE9BQU8sR0FBRyxNQUFNO2lDQUNoQjtxQ0FBTSxJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQyxHQUFHLFNBQVMsRUFBRTtvQ0FFMUMsT0FBTyxHQUFHLFNBQVMsR0FBRyxNQUFNO2lDQUM1QjtnQ0FFRCxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsR0FBRyxPQUFPLEdBQUcsSUFBSSxDQUFDO2dDQUNuQyxPQUFPLENBQUMsS0FBSyxDQUFDLGFBQWEsR0FBRyxNQUFNLENBQUM7NEJBQ3RDLENBQUM7NEJBQ0QsU0FBUyxFQUFFO2dDQUNWLEtBQUssQ0FBQyxJQUFJO29DQUNULElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFVLENBQUM7b0NBRTFCLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFO3dDQUNwQyxPQUFPLEVBQUU7cUNBQ1Q7b0NBRUQsSUFBSSxHQUFHLEdBQUcsRUFBRSxDQUFDO29DQUNiLElBQUksR0FBRyxFQUFFO3dDQUNSLFFBQVEsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLEVBQUU7NENBQ2xDLEtBQUssT0FBTztnREFDWCxHQUFHLEdBQUcseURBQXFCLENBQUMsR0FBRyxDQUFDLENBQUMsRUFDaEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztnREFDN0IsTUFBTTs0Q0FDUCxLQUFLLGNBQWM7Z0RBQ2xCLEdBQUcsR0FBRyxzREFBa0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0RBQ2hDLE1BQU07NENBQ1AsS0FBSyxPQUFPO2dEQUNYLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO2dEQUNoRCxNQUFNOzRDQUNQO2dEQUNDLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDO3lDQUNiO3FDQUNEO29DQUVELElBQUksT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFjLENBQUM7b0NBQ2xDLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLEVBQUU7d0NBQy9CLE9BQU8sT0FBTyxDQUFDLEtBQUssR0FBRyxHQUFHOzRDQUN6QixHQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUM7cUNBQ25DO29DQUNELE9BQU8sT0FBTyxDQUFDLEtBQUssR0FBRyxHQUFHLEdBQUcsR0FBRzt3Q0FDL0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUM7Z0NBQzlCLENBQUM7NkJBQ0Q7eUJBQ0Q7cUJBQ0Q7aUJBQ0Q7Z0JBQ0QsSUFBSSxFQUFFO29CQUNMLFFBQVEsRUFBRSxFQUFFO2lCQUNaO2FBQzZCLENBQUM7WUFFaEMsSUFBSSxJQUFJLEdBQUcsMkRBQXVCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ25FLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Z0JBQ3JELElBQUksYUFBYSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUU1QyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7b0JBQ3pCLEtBQUssRUFBRSxhQUFhLENBQUMsS0FBSztvQkFDMUIsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7b0JBQ2IsSUFBSSxFQUFFLFFBQVE7b0JBQ2QsV0FBVyxFQUFFLENBQUM7b0JBQ2QsZUFBZSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJO29CQUNqQyxXQUFXLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztvQkFDdEIsV0FBVyxFQUFFLENBQUM7aUJBQ1UsQ0FBQyxDQUFDO2FBQzNCO1lBRUQsT0FBTyxNQUFNLENBQUM7UUFDZixDQUFDO1FBeFRBLElBQUksQ0FBQyxLQUFLLEdBQUc7WUFDWixNQUFNLEVBQUUsS0FBSztZQUNiLFFBQVEsRUFBRSxLQUFLO1NBQ2YsQ0FBQztRQUNGLElBQUksQ0FBQyxRQUFRLEdBQUcsNENBQWUsRUFBRSxDQUFDO0lBQ25DLENBQUM7SUFxVEQsTUFBTSxDQUFDLElBQVksRUFBRSxNQUFjLEVBQUUsUUFBZ0I7UUFDcEQsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDakIsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7UUFFekIsSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDO1FBQ25CLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLENBQUM7UUFFdkIsSUFBSSxTQUF1QjtRQUMzQixJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFO1lBQ3JCLFNBQVMsR0FBRyx3REFBa0IsQ0FDN0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQ2hCLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUNuQixJQUFJLENBQUMsTUFBTSxFQUNYLElBQUksQ0FBQyxRQUFRLENBQ2I7U0FDRDthQUFNO1lBQ04sU0FBUyxHQUFHLDJEQUFxQixDQUNoQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFDbkIsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQ25CLElBQUksQ0FBQyxNQUFNLEVBQ1gsSUFBSSxDQUFDLFFBQVEsQ0FDYjtTQUNEO1FBRUQsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQTZCLEVBQVEsRUFBRTtZQUN0RCxJQUFJLE9BQU8sRUFBRTtnQkFDWixPQUFPLEdBQUcsS0FBSyxDQUFDO2dCQUNoQixJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO2FBQ3RCO1lBRUQsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFO2dCQUN2QyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFO29CQUN0QixJQUFJLENBQUMsUUFBUSxDQUFDO3dCQUNiLEdBQUcsSUFBSSxDQUFDLEtBQUs7d0JBQ2IsTUFBTSxFQUFFLEtBQUs7cUJBQ2IsQ0FBQyxDQUFDO2lCQUNIO2dCQUVELElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztnQkFDdEIsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFO29CQUNmLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztpQkFDbkI7cUJBQU07b0JBQ04sSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLDJDQUFhLENBQzdCLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUNyQixJQUFJLENBQUMsTUFBTSxFQUFFLENBQ2IsQ0FBQztpQkFDRjthQUNEO2lCQUFNO2dCQUNOLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRTtvQkFDdkIsSUFBSSxDQUFDLFFBQVEsQ0FBQzt3QkFDYixHQUFHLElBQUksQ0FBQyxLQUFLO3dCQUNiLE1BQU0sRUFBRSxJQUFJO3FCQUNaLENBQUMsQ0FBQztpQkFDSDthQUNEO1FBQ0YsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQVMsRUFBRTtZQUNuQixJQUFJLE9BQU8sRUFBRTtnQkFDWixPQUFPLEdBQUcsS0FBSyxDQUFDO2dCQUNoQixJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO2FBQ3RCO1FBQ0YsQ0FBQyxDQUFDLENBQUM7SUFDSixDQUFDO0lBRUQsV0FBVztRQUNWLElBQUk7WUFDSCxJQUFJLENBQUMsTUFBTSxHQUFHLDZEQUF5QixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN4RSxJQUFJLElBQUksR0FBRywyREFBdUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFFbkUsSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztZQUMxQixJQUFJLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDO1lBRWxELEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxXQUFXLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtnQkFDeEQsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7Z0JBQ2xFLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBUSxDQUFDO2FBQ2xEO1lBRUQsSUFBSSxPQUFPLEdBQUcsV0FBVyxFQUFFO2dCQUMxQixLQUFLLElBQUksQ0FBQyxHQUFHLFdBQVcsRUFBRSxDQUFDLEdBQUcsT0FBTyxFQUFFLENBQUMsRUFBRSxFQUFFO29CQUMzQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO3dCQUM3QixLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSzt3QkFDcEMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7d0JBQ2IsSUFBSSxFQUFFLFFBQVE7d0JBQ2QsV0FBVyxFQUFFLENBQUM7d0JBQ2QsZUFBZSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJO3dCQUNqQyxXQUFXLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQzt3QkFDdEIsV0FBVyxFQUFFLENBQUM7cUJBQ1UsQ0FBQyxDQUFDO2lCQUMzQjthQUNEO2lCQUFNLElBQUksV0FBVyxHQUFHLE9BQU8sRUFBRTtnQkFDakMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFdBQVcsR0FBRyxPQUFPLEVBQUUsQ0FBQyxFQUFFLEVBQUU7b0JBQy9DLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQztpQkFDL0I7YUFDRDtZQUVELElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUM7U0FDcEI7UUFBQyxPQUFNLEtBQUssRUFBRTtZQUNkLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDckI7SUFDRixDQUFDO0lBRUQsaUJBQWlCO1FBQ2hCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUM7UUFDNUIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQztRQUNoQyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDO1FBRXBDLElBQUksT0FBTyxHQUFHLElBQUksQ0FBQztRQUNuQixJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBRXZCLElBQUksU0FBdUI7UUFDM0IsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRTtZQUNyQixTQUFTLEdBQUcsd0RBQWtCLENBQzdCLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUNoQixJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFDbkIsSUFBSSxDQUFDLE1BQU0sRUFDWCxJQUFJLENBQUMsUUFBUSxDQUNiO1NBQ0Q7YUFBTTtZQUNOLFNBQVMsR0FBRywyREFBcUIsQ0FDaEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQ25CLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUNuQixJQUFJLENBQUMsTUFBTSxFQUNYLElBQUksQ0FBQyxRQUFRLENBQ2I7U0FDRDtRQUVELFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUE2QixFQUFRLEVBQUU7WUFDdEQsSUFBSSxPQUFPLEVBQUU7Z0JBQ1osT0FBTyxHQUFHLEtBQUssQ0FBQztnQkFDaEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQzthQUN0QjtZQUVELElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLElBQUksRUFBRTtnQkFDdkMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRTtvQkFDdEIsSUFBSSxDQUFDLFFBQVEsQ0FBQzt3QkFDYixHQUFHLElBQUksQ0FBQyxLQUFLO3dCQUNiLE1BQU0sRUFBRSxLQUFLO3FCQUNiLENBQUMsQ0FBQztpQkFDSDtnQkFFRCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7Z0JBQ3RCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSwyQ0FBYSxDQUM3QixJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFDckIsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUNiLENBQUM7YUFDRjtpQkFBTTtnQkFDTixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUU7b0JBQ3ZCLElBQUksQ0FBQyxRQUFRLENBQUM7d0JBQ2IsR0FBRyxJQUFJLENBQUMsS0FBSzt3QkFDYixNQUFNLEVBQUUsSUFBSTtxQkFDWixDQUFDLENBQUM7aUJBQ0g7YUFDRDtRQUNGLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFTLEVBQUU7WUFDbkIsSUFBSSxPQUFPLEVBQUU7Z0JBQ1osT0FBTyxHQUFHLEtBQUssQ0FBQztnQkFDaEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQzthQUN0QjtRQUNGLENBQUMsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQUVELG9CQUFvQjtRQUNuQixJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDZixJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO1NBQ3JCO0lBQ0YsQ0FBQztJQUVELE1BQU07UUFDTCxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxTQUFTLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxTQUFTO1lBQ3ZELElBQUksQ0FBQyxRQUFRLEtBQUssU0FBUyxDQUFDO1lBQzVCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLElBQUk7Z0JBQzlCLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxLQUFLLElBQUksQ0FBQyxNQUFNO2dCQUNqQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsS0FBSyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDekMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQ3JFO1FBRUQsT0FBTyw2REFDTixNQUFNLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQ3pCLEdBQUcsRUFBRSxJQUFJLENBQUMsUUFBUSxHQUNqQixDQUFDO0lBQ0osQ0FBQztDQUNEIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vcHJpdHVubC16ZXJvLy4vYXBwL2NvbXBvbmVudHMvRW5kcG9pbnRDaGFydC50c3g/ZjYyZCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLy8gPHJlZmVyZW5jZSBwYXRoPVwiLi4vUmVmZXJlbmNlcy5kLnRzXCIvPlxuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0ICogYXMgQ2hhcnRKcyBmcm9tICdjaGFydC5qcyc7XG5pbXBvcnQgKiBhcyBDaGVja0FjdGlvbnMgZnJvbSAnLi4vYWN0aW9ucy9DaGVja0FjdGlvbnMnO1xuaW1wb3J0ICogYXMgRW5kcG9pbnRBY3Rpb25zIGZyb20gJy4uL2FjdGlvbnMvRW5kcG9pbnRBY3Rpb25zJztcbmltcG9ydCAqIGFzIENoYXJ0VHlwZXMgZnJvbSAnLi4vdHlwZXMvQ2hhcnRUeXBlcyc7XG5pbXBvcnQgKiBhcyBNaXNjVXRpbHMgZnJvbSAnLi4vdXRpbHMvTWlzY1V0aWxzJztcbmltcG9ydCAqIGFzIFRoZW1lIGZyb20gJy4uL1RoZW1lJztcblxuaW50ZXJmYWNlIFByb3BzIHtcblx0ZW5kcG9pbnQ/OiBzdHJpbmc7XG5cdGNoZWNrPzogc3RyaW5nO1xuXHRyZXNvdXJjZTogc3RyaW5nO1xuXHRzeW5jOiBudW1iZXI7XG5cdHBlcmlvZDogbnVtYmVyO1xuXHRpbnRlcnZhbDogbnVtYmVyO1xuXHRsZWZ0OiBib29sZWFuO1xuXHRvbkxvYWRpbmc6ICgpID0+IHZvaWQ7XG5cdG9uTG9hZGVkOiAoKSA9PiB2b2lkO1xuXHRnZXRCb3hSZWN0OiAoKSA9PiBET01SZWN0O1xufVxuXG5pbnRlcmZhY2UgU3RhdGUge1xuXHRoaWRkZW46IGJvb2xlYW47XG5cdGRpc2FibGVkOiBib29sZWFuO1xufVxuXG4vLyBjb25zdCBjb2xvcnMgPSBbXG4vLyBcdCcjZDUwMDAwJywgLy8gcmVkXG4vLyBcdCcjYzUxMTYyJywgLy8gcGlua1xuLy8gXHQnI2FhMDBmZicsIC8vIHB1cnBsZVxuLy8gXHQnIzYyMDBlYScsIC8vIGRlZXAgcHVycGxlXG4vLyBcdCcjMzA0ZmZlJywgLy8gaW5kaWdvXG4vLyBcdCcjMjk2MmZmJywgLy8gYmx1ZVxuLy8gXHQnIzAwOTFlYScsIC8vIGxpZ2h0IGJsdWVcbi8vIFx0JyMwMGI4ZDQnLCAvLyBjeWFuXG4vLyBcdCcjMDBiZmE1JywgLy8gdGVhbFxuLy8gXHQnIzAwYzg1MycsIC8vIGdyZWVuXG4vLyBcdCcjNjRkZDE3JywgLy8gbGlnaHQgZ3JlZW5cbi8vIFx0JyNhZWVhMDAnLCAvLyBsaW1lXG4vLyBcdCcjZmZkNjAwJywgLy8geWVsbG93XG4vLyBcdCcjZmZhYjAwJywgLy8gYW1iZXJcbi8vIFx0JyNmZjZkMDAnLCAvLyBvcmFuZ2Vcbi8vIFx0JyNkZDJjMDAnLCAvLyBkZWVwIG9yYW5nZVxuLy8gXHQnIzVkNDAzNycsIC8vIGJyb3duXG4vLyBcdCcjNDU1YTY0JywgLy8gYmx1ZSBncmV5XG4vLyBdO1xuXG5jb25zdCBjb2xvcnMgPSBbXG5cdCcjMDA5MWVhJywgLy8gbGlnaHQgYmx1ZVxuXHQnI2Q1MDAwMCcsIC8vIHJlZFxuXHQnIzAwYzg1MycsIC8vIGdyZWVuXG5cdCcjYWEwMGZmJywgLy8gcHVycGxlXG5cdCcjZmZhYjAwJywgLy8gYW1iZXJcblx0JyNjNTExNjInLCAvLyBwaW5rXG5cdCcjMjk2MmZmJywgLy8gYmx1ZVxuXHQnI2ZmNmQwMCcsIC8vIG9yYW5nZVxuXHQnIzAwYmZhNScsIC8vIHRlYWxcblx0JyMzMDRmZmUnLCAvLyBpbmRpZ29cblx0JyMwMGI4ZDQnLCAvLyBjeWFuXG5cdCcjNjIwMGVhJywgLy8gZGVlcCBwdXJwbGVcblx0JyNmZmQ2MDAnLCAvLyB5ZWxsb3dcblx0JyNkZDJjMDAnLCAvLyBkZWVwIG9yYW5nZVxuXHQnIzVkNDAzNycsIC8vIGJyb3duXG5cdCcjNDU1YTY0JywgLy8gYmx1ZSBncmV5XG5cdCcjNjRkZDE3JywgLy8gbGlnaHQgZ3JlZW5cblx0JyNhZWVhMDAnLCAvLyBsaW1lXG5cblx0JyMwMDkxZWEnLCAvLyBsaWdodCBibHVlXG5cdCcjZDUwMDAwJywgLy8gcmVkXG5cdCcjMDBjODUzJywgLy8gZ3JlZW5cblx0JyNhYTAwZmYnLCAvLyBwdXJwbGVcblx0JyNmZmFiMDAnLCAvLyBhbWJlclxuXHQnI2M1MTE2MicsIC8vIHBpbmtcblx0JyMyOTYyZmYnLCAvLyBibHVlXG5cdCcjZmY2ZDAwJywgLy8gb3JhbmdlXG5cdCcjMDBiZmE1JywgLy8gdGVhbFxuXHQnIzMwNGZmZScsIC8vIGluZGlnb1xuXHQnIzAwYjhkNCcsIC8vIGN5YW5cblx0JyM2MjAwZWEnLCAvLyBkZWVwIHB1cnBsZVxuXHQnI2ZmZDYwMCcsIC8vIHllbGxvd1xuXHQnI2RkMmMwMCcsIC8vIGRlZXAgb3JhbmdlXG5cdCcjNWQ0MDM3JywgLy8gYnJvd25cblx0JyM0NTVhNjQnLCAvLyBibHVlIGdyZXlcblx0JyM2NGRkMTcnLCAvLyBsaWdodCBncmVlblxuXHQnI2FlZWEwMCcsIC8vIGxpbWVcblxuXHQnIzAwOTFlYScsIC8vIGxpZ2h0IGJsdWVcblx0JyNkNTAwMDAnLCAvLyByZWRcblx0JyMwMGM4NTMnLCAvLyBncmVlblxuXHQnI2FhMDBmZicsIC8vIHB1cnBsZVxuXHQnI2ZmYWIwMCcsIC8vIGFtYmVyXG5cdCcjYzUxMTYyJywgLy8gcGlua1xuXHQnIzI5NjJmZicsIC8vIGJsdWVcblx0JyNmZjZkMDAnLCAvLyBvcmFuZ2Vcblx0JyMwMGJmYTUnLCAvLyB0ZWFsXG5cdCcjMzA0ZmZlJywgLy8gaW5kaWdvXG5cdCcjMDBiOGQ0JywgLy8gY3lhblxuXHQnIzYyMDBlYScsIC8vIGRlZXAgcHVycGxlXG5cdCcjZmZkNjAwJywgLy8geWVsbG93XG5cdCcjZGQyYzAwJywgLy8gZGVlcCBvcmFuZ2Vcblx0JyM1ZDQwMzcnLCAvLyBicm93blxuXHQnIzQ1NWE2NCcsIC8vIGJsdWUgZ3JleVxuXHQnIzY0ZGQxNycsIC8vIGxpZ2h0IGdyZWVuXG5cdCcjYWVlYTAwJywgLy8gbGltZVxuXG5cdCcjMDA5MWVhJywgLy8gbGlnaHQgYmx1ZVxuXHQnI2Q1MDAwMCcsIC8vIHJlZFxuXHQnIzAwYzg1MycsIC8vIGdyZWVuXG5cdCcjYWEwMGZmJywgLy8gcHVycGxlXG5cdCcjZmZhYjAwJywgLy8gYW1iZXJcblx0JyNjNTExNjInLCAvLyBwaW5rXG5cdCcjMjk2MmZmJywgLy8gYmx1ZVxuXHQnI2ZmNmQwMCcsIC8vIG9yYW5nZVxuXHQnIzAwYmZhNScsIC8vIHRlYWxcblx0JyMzMDRmZmUnLCAvLyBpbmRpZ29cblx0JyMwMGI4ZDQnLCAvLyBjeWFuXG5cdCcjNjIwMGVhJywgLy8gZGVlcCBwdXJwbGVcblx0JyNmZmQ2MDAnLCAvLyB5ZWxsb3dcblx0JyNkZDJjMDAnLCAvLyBkZWVwIG9yYW5nZVxuXHQnIzVkNDAzNycsIC8vIGJyb3duXG5cdCcjNDU1YTY0JywgLy8gYmx1ZSBncmV5XG5cdCcjNjRkZDE3JywgLy8gbGlnaHQgZ3JlZW5cblx0JyNhZWVhMDAnLCAvLyBsaW1lXG5dO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBFbmRwb2ludENoYXJ0IGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50PFByb3BzLCBTdGF0ZT4ge1xuXHRkYXRhOiBDaGFydFR5cGVzLkNoYXJ0RGF0YTtcblx0c3luYzogbnVtYmVyO1xuXHRwZXJpb2Q6IG51bWJlcjtcblx0aW50ZXJ2YWw6IG51bWJlcjtcblx0Y2hhcnQ6IENoYXJ0SnMuQ2hhcnQ7XG5cdGNoYXJ0UmVmOiBSZWFjdC5SZWZPYmplY3Q8SFRNTENhbnZhc0VsZW1lbnQ+O1xuXHRsYWJlbHM6IENoYXJ0VHlwZXMuTGFiZWxzO1xuXG5cdGNvbnN0cnVjdG9yKHByb3BzOiBhbnksIGNvbnRleHQ6IGFueSkge1xuXHRcdHN1cGVyKHByb3BzLCBjb250ZXh0KTtcblx0XHR0aGlzLnN0YXRlID0ge1xuXHRcdFx0aGlkZGVuOiBmYWxzZSxcblx0XHRcdGRpc2FibGVkOiBmYWxzZSxcblx0XHR9O1xuXHRcdHRoaXMuY2hhcnRSZWYgPSBSZWFjdC5jcmVhdGVSZWYoKTtcblx0fVxuXG5cdHRpY2tzID0gKGF4aXM6IENoYXJ0SnMuU2NhbGUpID0+IHtcblx0XHRsZXQgdGlja3MgPSBheGlzLnRpY2tzO1xuXHRcdGxldCBuZXdUaWNrczogQ2hhcnRKcy5UaWNrW10gPSBbXTtcblx0XHRsZXQgZGF0YXNldCA9IE9iamVjdC52YWx1ZXModGhpcy5kYXRhKVswXTtcblx0XHRsZXQgdGlja01vZCA9IDM2MDAwMDA7IC8vIDEgaG91clxuXHRcdGxldCBsZW4gPSBkYXRhc2V0Lmxlbmd0aDtcblxuXHRcdGlmIChsZW4pIHtcblx0XHRcdGxldCBmaXJzdCA9IGRhdGFzZXRbMF0gYXMgQ2hhcnRKcy5TY2F0dGVyRGF0YVBvaW50O1xuXHRcdFx0bGV0IGxhc3QgPSBkYXRhc2V0W2xlbi0xXSBhcyBDaGFydEpzLlNjYXR0ZXJEYXRhUG9pbnQ7XG5cdFx0XHRsZXQgcmFuZ2UgPSBsYXN0LnggLSBmaXJzdC54O1xuXG5cdFx0XHRpZiAocmFuZ2UgPj0gMjgzMzkyMDAwMCkge1xuXHRcdFx0XHR0aWNrTW9kID0gNjA0ODAwMDAwOyAvLyA3IGRheVxuXHRcdFx0fSBlbHNlIGlmIChyYW5nZSA+PSAxNDUxNTIwMDAwKSB7XG5cdFx0XHRcdHRpY2tNb2QgPSAxNzI4MDAwMDA7IC8vIDIgZGF5XG5cdFx0XHR9IGVsc2UgaWYgKHJhbmdlID49IDYxMTI4MDAwMCkge1xuXHRcdFx0XHR0aWNrTW9kID0gODY0MDAwMDA7IC8vIDEgZGF5XG5cdFx0XHR9IGVsc2UgaWYgKHJhbmdlID49IDI3NjQ4MDAwMCkge1xuXHRcdFx0XHR0aWNrTW9kID0gNDMyMDAwMDA7IC8vIDEyIGhvdXJzXG5cdFx0XHR9IGVsc2UgaWYgKHJhbmdlID49IDg5MjgwMDAwKSB7XG5cdFx0XHRcdHRpY2tNb2QgPSAyMTYwMDAwMDsgLy8gNiBob3Vyc1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0dGlja01vZCA9IDM2MDAwMDA7IC8vIDEgaG91cnNcblx0XHRcdH1cblx0XHR9XG5cblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IHRpY2tzLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRsZXQgdGljayA9IHRpY2tzW2ldO1xuXG5cdFx0XHRpZiAodGljay52YWx1ZSAlIHRpY2tNb2QgPT09IDApIHtcblx0XHRcdFx0bmV3VGlja3MucHVzaCh0aWNrKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRheGlzLnRpY2tzID0gbmV3VGlja3M7XG5cdH1cblxuXHRjb25maWcgPSAoKTogQ2hhcnRKcy5DaGFydENvbmZpZ3VyYXRpb24gPT4ge1xuXHRcdHRoaXMubGFiZWxzID0gQ2hhcnRUeXBlcy5nZXRDaGFydExhYmVscyh0aGlzLnByb3BzLnJlc291cmNlLCB0aGlzLmRhdGEpO1xuXHRcdGxldCBzZWxmID0gdGhpcztcblxuXHRcdGxldCBjb25maWcgPSB7XG5cdFx0XHR0eXBlOiAnbGluZScsXG5cdFx0XHRvcHRpb25zOiB7XG5cdFx0XHRcdHNjYWxlczoge1xuXHRcdFx0XHRcdHg6IHtcblx0XHRcdFx0XHRcdHR5cGU6ICd0aW1lJyxcblx0XHRcdFx0XHRcdHRpdGxlOiB7XG5cdFx0XHRcdFx0XHRcdGRpc3BsYXk6IHRydWUsXG5cdFx0XHRcdFx0XHRcdHRleHQ6ICdUaW1lJyxcblx0XHRcdFx0XHRcdFx0Y29sb3I6IFRoZW1lLmNoYXJ0Q29sb3IxKCksXG5cdFx0XHRcdFx0XHRcdHBhZGRpbmc6IDAsXG5cdFx0XHRcdFx0XHRcdGZvbnQ6IHtcblx0XHRcdFx0XHRcdFx0XHR3ZWlnaHQ6ICdib2xkJyxcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR0aW1lOiB7XG5cdFx0XHRcdFx0XHRcdHVuaXQ6ICdtaW51dGUnLFxuXHRcdFx0XHRcdFx0XHRkaXNwbGF5Rm9ybWF0czoge1xuXHRcdFx0XHRcdFx0XHRcdG1pbnV0ZTogJ0hIOm1tJyxcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR0aWNrczoge1xuXHRcdFx0XHRcdFx0XHRzdGVwU2l6ZTogMSxcblx0XHRcdFx0XHRcdFx0Y291bnQ6IDEwMCxcblx0XHRcdFx0XHRcdFx0bWF4VGlja3NMaW1pdDogMTAwLFxuXHRcdFx0XHRcdFx0XHRjb2xvcjogVGhlbWUuY2hhcnRDb2xvcjEoKSxcblx0XHRcdFx0XHRcdFx0c291cmNlOiAnZGF0YScsXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0Z3JpZDoge1xuXHRcdFx0XHRcdFx0XHRjb2xvcjogVGhlbWUuY2hhcnRDb2xvcjIoKSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRiZWZvcmVUaWNrVG9MYWJlbENvbnZlcnNpb246IHRoaXMudGlja3MsXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR5OiB7XG5cdFx0XHRcdFx0XHRtaW46IHRoaXMubGFiZWxzLnJlc291cmNlX21pbixcblx0XHRcdFx0XHRcdG1heDogdGhpcy5sYWJlbHMucmVzb3VyY2VfbWF4LFxuXHRcdFx0XHRcdFx0b2Zmc2V0OiBmYWxzZSxcblx0XHRcdFx0XHRcdGJlZ2luQXRaZXJvOiB0cnVlLFxuXHRcdFx0XHRcdFx0dGl0bGU6IHtcblx0XHRcdFx0XHRcdFx0ZGlzcGxheTogdHJ1ZSxcblx0XHRcdFx0XHRcdFx0dGV4dDogdGhpcy5sYWJlbHMucmVzb3VyY2VfbGFiZWwsXG5cdFx0XHRcdFx0XHRcdGNvbG9yOiBUaGVtZS5jaGFydENvbG9yMSgpLFxuXHRcdFx0XHRcdFx0XHRwYWRkaW5nOiAwLFxuXHRcdFx0XHRcdFx0XHRmb250OiB7XG5cdFx0XHRcdFx0XHRcdFx0d2VpZ2h0OiAnYm9sZCcsXG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0dGlja3M6IHtcblx0XHRcdFx0XHRcdFx0Y29sb3I6IFRoZW1lLmNoYXJ0Q29sb3IxKCksXG5cdFx0XHRcdFx0XHRcdGNhbGxiYWNrOiAodmFsOiBudW1iZXIpOiBudW1iZXIgfCBzdHJpbmcgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdHN3aXRjaCAodGhpcy5sYWJlbHMucmVzb3VyY2VfdHlwZSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0Y2FzZSAnYnl0ZXMnOlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gTWlzY1V0aWxzLmZvcm1hdEJ5dGVzKHZhbCwgMCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRjYXNlICdtaWxsaXNlY29uZHMnOlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gTWlzY1V0aWxzLmZvcm1hdE1zKHZhbCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gdmFsO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdGdyaWQ6IHtcblx0XHRcdFx0XHRcdFx0Y29sb3I6IFRoZW1lLmNoYXJ0Q29sb3IyKCksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHBsdWdpbnM6IHtcblx0XHRcdFx0XHR0aXRsZToge1xuXHRcdFx0XHRcdFx0ZGlzcGxheTogdHJ1ZSxcblx0XHRcdFx0XHRcdHRleHQ6IHRoaXMubGFiZWxzLnRpdGxlLFxuXHRcdFx0XHRcdFx0Y29sb3I6IFRoZW1lLmNoYXJ0Q29sb3IxKCksXG5cdFx0XHRcdFx0XHRwYWRkaW5nOiAzLFxuXHRcdFx0XHRcdFx0Zm9udDoge1xuXHRcdFx0XHRcdFx0XHRzaXplOiAxMyxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR0b29sdGlwOiB7XG5cdFx0XHRcdFx0XHRlbmFibGVkOiBmYWxzZSxcblx0XHRcdFx0XHRcdG1vZGU6ICdpbmRleCcsXG5cdFx0XHRcdFx0XHRpbnRlcnNlY3Q6IGZhbHNlLFxuXHRcdFx0XHRcdFx0YmFja2dyb3VuZENvbG9yOiAncmdiYSgwLCAwLCAwLCAwLjcpJyxcblx0XHRcdFx0XHRcdGV4dGVybmFsOiAoY29udGV4dCk6IHZvaWQgPT4ge1xuXHRcdFx0XHRcdFx0XHRsZXQgdG9vbEVsbSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjaGFydGpzLXRvb2x0aXAnKTtcblxuXHRcdFx0XHRcdFx0XHRpZiAoIXRvb2xFbG0pIHtcblx0XHRcdFx0XHRcdFx0XHR0b29sRWxtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG5cdFx0XHRcdFx0XHRcdFx0dG9vbEVsbS5pZCA9ICdjaGFydGpzLXRvb2x0aXAnO1xuXHRcdFx0XHRcdFx0XHRcdHRvb2xFbG0uY2xhc3NOYW1lID0gJ2JwMy1jYXJkJztcblx0XHRcdFx0XHRcdFx0XHR0b29sRWxtLmlubmVySFRNTCA9ICc8dGFibGUgY2xhc3M9XCJicDMtaHRtbC10YWJsZSAnICtcblx0XHRcdFx0XHRcdFx0XHRcdCdicDMtaHRtbC10YWJsZS1ib3JkZXJlZCBicDMtaHRtbC10YWJsZS1zdHJpcGVkICcgK1xuXHRcdFx0XHRcdFx0XHRcdFx0J2JwMy1zbWFsbFwiPjwvdGFibGU+Jztcblx0XHRcdFx0XHRcdFx0XHRkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRvb2xFbG0pO1xuXHRcdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdFx0Y29uc3QgbW9kZWwgPSBjb250ZXh0LnRvb2x0aXA7XG5cdFx0XHRcdFx0XHRcdGlmIChtb2RlbC5vcGFjaXR5ID09PSAwKSB7XG5cdFx0XHRcdFx0XHRcdFx0dG9vbEVsbS5zdHlsZS5vcGFjaXR5ID0gJzAnO1xuXHRcdFx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRcdGZ1bmN0aW9uIGdldEJvZHkoYm9keUl0ZW06IGFueSkge1xuXHRcdFx0XHRcdFx0XHRcdHJldHVybiBib2R5SXRlbS5saW5lcztcblx0XHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRcdGxldCBib3hSZWN0ID0gdGhpcy5wcm9wcy5nZXRCb3hSZWN0KClcblx0XHRcdFx0XHRcdFx0bGV0IGJveEJvdHRvbSA9IGJveFJlY3QuYm90dG9tICsgd2luZG93LnBhZ2VZT2Zmc2V0XG5cdFx0XHRcdFx0XHRcdGxldCBib3hUb3AgPSBib3hSZWN0LnRvcCArIHdpbmRvdy5wYWdlWU9mZnNldCArIDEzMFxuXG5cdFx0XHRcdFx0XHRcdGxldCByb3dDb3VudCA9IDA7XG5cdFx0XHRcdFx0XHRcdGxldCBoZWlnaHQgPSAwO1xuXHRcdFx0XHRcdFx0XHRpZiAobW9kZWwuYm9keSkge1xuXHRcdFx0XHRcdFx0XHRcdGNvbnN0IHRpdGxlTGluZXMgPSBtb2RlbC50aXRsZSB8fCBbXTtcblx0XHRcdFx0XHRcdFx0XHRjb25zdCBib2R5TGluZXMgPSBtb2RlbC5ib2R5Lm1hcChnZXRCb2R5KTtcblxuXHRcdFx0XHRcdFx0XHRcdGxldCBpbm5lckh0bWwgPSAnPHRoZWFkPic7XG5cblx0XHRcdFx0XHRcdFx0XHR0aXRsZUxpbmVzLmZvckVhY2goZnVuY3Rpb24odGl0bGUpIHtcblx0XHRcdFx0XHRcdFx0XHRcdGlubmVySHRtbCArPSAnPHRyPjx0aCBjb2xzcGFuPVwiMlwiPicgKyB0aXRsZSArICc8L3RoPjwvdHI+Jztcblx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0XHRpbm5lckh0bWwgKz0gJzwvdGhlYWQ+PHRib2R5Pic7XG5cblx0XHRcdFx0XHRcdFx0XHRsZXQgdGFibGVSb3dzOiBzdHJpbmdbXSA9IFtdO1xuXG5cdFx0XHRcdFx0XHRcdFx0Ym9keUxpbmVzLmZvckVhY2goZnVuY3Rpb24oYm9keSwgaSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKCFib2R5IHx8ICFib2R5Lmxlbmd0aCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm5cblx0XHRcdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0XHRcdFx0bGV0IGl0ZW1zID0gYm9keVswXS5zcGxpdCgnOycpXG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAoaXRlbXMubGVuZ3RoIDwgMikge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm5cblx0XHRcdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0XHRcdFx0Y29uc3QgY29sb3JzID0gbW9kZWwubGFiZWxDb2xvcnNbaV07XG5cdFx0XHRcdFx0XHRcdFx0XHRsZXQgc3R5bGUgPSAnYmFja2dyb3VuZDonICsgY29sb3JzLmJhY2tncm91bmRDb2xvcjtcblx0XHRcdFx0XHRcdFx0XHRcdHN0eWxlICs9ICc7IGJvcmRlci1jb2xvcjonICsgY29sb3JzLmJvcmRlckNvbG9yO1xuXHRcdFx0XHRcdFx0XHRcdFx0Y29uc3Qgc3BhbiA9ICc8c3BhbiBzdHlsZT1cIicgKyBzdHlsZSArICdcIj48L3NwYW4+Jztcblx0XHRcdFx0XHRcdFx0XHRcdHRhYmxlUm93cy5wdXNoKCc8dGQgY2xhc3M9XCJsaW5lLWJveFwiPicgKyBzcGFuICsgaXRlbXNbMF0gK1xuXHRcdFx0XHRcdFx0XHRcdFx0XHQnPC90ZD48dGQ+JyArIGl0ZW1zWzFdICsgJzwvdGQ+JylcblxuXHRcdFx0XHRcdFx0XHRcdFx0cm93Q291bnQgKz0gMVxuXHRcdFx0XHRcdFx0XHRcdH0pO1xuXG5cdFx0XHRcdFx0XHRcdFx0aGVpZ2h0ID0gMjYuMzMgKyAocm93Q291bnQgKiAxNy4zMyk7XG5cblx0XHRcdFx0XHRcdFx0XHRsZXQgZG91YmxlID0gaGVpZ2h0ID4gKGJveFJlY3QuaGVpZ2h0IC0gMTMwKTtcblx0XHRcdFx0XHRcdFx0XHRsZXQgY3VyUm93ID0gJyc7XG5cblx0XHRcdFx0XHRcdFx0XHRyb3dDb3VudCA9IDBcblx0XHRcdFx0XHRcdFx0XHR0YWJsZVJvd3MuZm9yRWFjaChmdW5jdGlvbihjb2x1bW5zLCBpKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAoZG91YmxlICYmICFjdXJSb3cpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0Y3VyUm93ID0gY29sdW1uc1xuXHRcdFx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0aW5uZXJIdG1sICs9ICc8dHI+JyArIGN1clJvdyArIGNvbHVtbnMgKyAnPC90cj4nO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRjdXJSb3cgPSAnJztcblx0XHRcdFx0XHRcdFx0XHRcdFx0cm93Q291bnQgKz0gMVxuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdH0pXG5cblx0XHRcdFx0XHRcdFx0XHRpZiAoY3VyUm93KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRpbm5lckh0bWwgKz0gJzx0cj4nICsgY3VyUm93ICsgJzwvdHI+Jztcblx0XHRcdFx0XHRcdFx0XHRcdGN1clJvdyA9ICcnO1xuXHRcdFx0XHRcdFx0XHRcdFx0cm93Q291bnQgKz0gMVxuXHRcdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0XHRcdGhlaWdodCA9IDI2LjMzICsgKHJvd0NvdW50ICogMTcuMzMpO1xuXG5cdFx0XHRcdFx0XHRcdFx0aW5uZXJIdG1sICs9ICc8L3Rib2R5Pic7XG5cblx0XHRcdFx0XHRcdFx0XHRsZXQgdGFibGVSb290ID0gdG9vbEVsbS5xdWVyeVNlbGVjdG9yKCd0YWJsZScpO1xuXHRcdFx0XHRcdFx0XHRcdHRhYmxlUm9vdC5pbm5lckhUTUwgPSBpbm5lckh0bWw7XG5cdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0XHR0b29sRWxtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NoYXJ0anMtdG9vbHRpcCcpO1xuXHRcdFx0XHRcdFx0XHRjb25zdCBwb3NpdGlvbiA9IGNvbnRleHQuY2hhcnQuY2FudmFzLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXG5cdFx0XHRcdFx0XHRcdHRvb2xFbG0uc3R5bGUub3BhY2l0eSA9ICcxJztcblx0XHRcdFx0XHRcdFx0dG9vbEVsbS5zdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSc7XG5cblx0XHRcdFx0XHRcdFx0aWYgKHRoaXMucHJvcHMubGVmdCkge1xuXHRcdFx0XHRcdFx0XHRcdHRvb2xFbG0uc3R5bGUucmlnaHQgPSBcIlwiXG5cdFx0XHRcdFx0XHRcdFx0dG9vbEVsbS5zdHlsZS5sZWZ0ID0gKGRvY3VtZW50LmJvZHkub2Zmc2V0V2lkdGggLVxuXHRcdFx0XHRcdFx0XHRcdFx0cG9zaXRpb24ucmlnaHQgKyB3aW5kb3cucGFnZVhPZmZzZXQgLSAxOCkgKyAncHgnO1xuXHRcdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRcdHRvb2xFbG0uc3R5bGUubGVmdCA9IFwiXCJcblx0XHRcdFx0XHRcdFx0XHR0b29sRWxtLnN0eWxlLnJpZ2h0ID0gKGRvY3VtZW50LmJvZHkub2Zmc2V0V2lkdGggLVxuXHRcdFx0XHRcdFx0XHRcdFx0cG9zaXRpb24ubGVmdCArIHdpbmRvdy5wYWdlWE9mZnNldCArIDMpICsgJ3B4Jztcblx0XHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRcdGxldCB0b29sVG9wID0gTWF0aC5yb3VuZChwb3NpdGlvbi50b3AgKyAocG9zaXRpb24uaGVpZ2h0IC8gMikgLVxuXHRcdFx0XHRcdFx0XHRcdChoZWlnaHQgLyAyKSArIHdpbmRvdy5wYWdlWU9mZnNldCk7XG5cblx0XHRcdFx0XHRcdFx0aWYgKGhlaWdodCA+IChib3hSZWN0LmhlaWdodCAtIDEzMCkpIHtcblx0XHRcdFx0XHRcdFx0XHR0b29sVG9wID0gTWF0aC5yb3VuZChib3hSZWN0LnRvcCArIChib3hSZWN0LmhlaWdodCAvIDIpIC1cblx0XHRcdFx0XHRcdFx0XHRcdChoZWlnaHQgLyAyKSArIHdpbmRvdy5wYWdlWU9mZnNldCk7XG5cdFx0XHRcdFx0XHRcdH0gZWxzZSBpZiAodG9vbFRvcCA8IGJveFRvcCkge1xuXHRcdFx0XHRcdFx0XHRcdHRvb2xUb3AgPSBib3hUb3Bcblx0XHRcdFx0XHRcdFx0fSBlbHNlIGlmICgodG9vbFRvcCArIGhlaWdodCkgPiBib3hCb3R0b20pIHtcblx0XHRcdFx0XHRcdFx0XHQvL3Rvb2xUb3AgLT0gKHRvb2xUb3AgKyBoZWlnaHQpIC0gYm94Qm90dG9tXG5cdFx0XHRcdFx0XHRcdFx0dG9vbFRvcCA9IGJveEJvdHRvbSAtIGhlaWdodFxuXHRcdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdFx0dG9vbEVsbS5zdHlsZS50b3AgPSB0b29sVG9wICsgJ3B4Jztcblx0XHRcdFx0XHRcdFx0dG9vbEVsbS5zdHlsZS5wb2ludGVyRXZlbnRzID0gJ25vbmUnO1xuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdGNhbGxiYWNrczoge1xuXHRcdFx0XHRcdFx0XHRsYWJlbChpdGVtKTogc3RyaW5nIHtcblx0XHRcdFx0XHRcdFx0XHRsZXQgcmF3ID0gaXRlbS5yYXcgYXMgYW55O1xuXG5cdFx0XHRcdFx0XHRcdFx0aWYgKHNlbGYubGFiZWxzLmhpZGVfemVybyAmJiAhcmF3LnkpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiAnJ1xuXHRcdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0XHRcdGxldCB2YWwgPSAnJztcblx0XHRcdFx0XHRcdFx0XHRpZiAocmF3KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRzd2l0Y2ggKHNlbGYubGFiZWxzLnJlc291cmNlX3R5cGUpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0Y2FzZSAnYnl0ZXMnOlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhbCA9IE1pc2NVdGlscy5mb3JtYXRCeXRlcyhyYXcueSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHNlbGYubGFiZWxzLnJlc291cmNlX2ZpeGVkKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdFx0XHRcdFx0Y2FzZSAnbWlsbGlzZWNvbmRzJzpcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2YWwgPSBNaXNjVXRpbHMuZm9ybWF0TXMocmF3LnkpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRjYXNlICdmbG9hdCc6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFsID0gcmF3LnkudG9GaXhlZChzZWxmLmxhYmVscy5yZXNvdXJjZV9maXhlZCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFsID0gcmF3Lnk7XG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRcdFx0bGV0IGRhdGFzZXQgPSBpdGVtLmRhdGFzZXQgYXMgYW55O1xuXHRcdFx0XHRcdFx0XHRcdGlmIChzZWxmLmxhYmVscy5yZXNvdXJjZV9maXhlZCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIGRhdGFzZXQubGFiZWwgKyAnOycgK1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR2YWwgKyBzZWxmLmxhYmVscy5yZXNvdXJjZV9zdWZmaXg7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdHJldHVybiBkYXRhc2V0LmxhYmVsICsgJzsnICsgdmFsICtcblx0XHRcdFx0XHRcdFx0XHRcdHNlbGYubGFiZWxzLnJlc291cmNlX3N1ZmZpeDtcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0fSxcblx0XHRcdH0sXG5cdFx0XHRkYXRhOiB7XG5cdFx0XHRcdGRhdGFzZXRzOiBbXSxcblx0XHRcdH0sXG5cdFx0fSBhcyBDaGFydEpzLkNoYXJ0Q29uZmlndXJhdGlvbjtcblxuXHRcdGxldCBkYXRhID0gQ2hhcnRUeXBlcy5nZXRDaGFydERhdGEodGhpcy5wcm9wcy5yZXNvdXJjZSwgdGhpcy5kYXRhKTtcblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMubGFiZWxzLmRhdGFzZXRzLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRsZXQgZGF0YXNldExhYmVscyA9IHRoaXMubGFiZWxzLmRhdGFzZXRzW2ldO1xuXG5cdFx0XHRjb25maWcuZGF0YS5kYXRhc2V0cy5wdXNoKHtcblx0XHRcdFx0bGFiZWw6IGRhdGFzZXRMYWJlbHMubGFiZWwsXG5cdFx0XHRcdGRhdGE6IGRhdGFbaV0sXG5cdFx0XHRcdGZpbGw6ICdvcmlnaW4nLFxuXHRcdFx0XHRwb2ludFJhZGl1czogMCxcblx0XHRcdFx0YmFja2dyb3VuZENvbG9yOiBjb2xvcnNbaV0gKyAnMTUnLFxuXHRcdFx0XHRib3JkZXJDb2xvcjogY29sb3JzW2ldLFxuXHRcdFx0XHRib3JkZXJXaWR0aDogMixcblx0XHRcdH0gYXMgQ2hhcnRKcy5DaGFydERhdGFzZXQpO1xuXHRcdH1cblxuXHRcdHJldHVybiBjb25maWc7XG5cdH1cblxuXHR1cGRhdGUoc3luYzogbnVtYmVyLCBwZXJpb2Q6IG51bWJlciwgaW50ZXJ2YWw6IG51bWJlcik6IHZvaWQge1xuXHRcdHRoaXMuc3luYyA9IHN5bmM7XG5cdFx0dGhpcy5wZXJpb2QgPSBwZXJpb2Q7XG5cdFx0dGhpcy5pbnRlcnZhbCA9IGludGVydmFsO1xuXG5cdFx0bGV0IGxvYWRpbmcgPSB0cnVlO1xuXHRcdHRoaXMucHJvcHMub25Mb2FkaW5nKCk7XG5cblx0XHRsZXQgY2hhcnRSZXNwOiBQcm9taXNlPGFueT5cblx0XHRpZiAodGhpcy5wcm9wcy5jaGVjaykge1xuXHRcdFx0Y2hhcnRSZXNwID0gQ2hlY2tBY3Rpb25zLmNoYXJ0KFxuXHRcdFx0XHR0aGlzLnByb3BzLmNoZWNrLFxuXHRcdFx0XHR0aGlzLnByb3BzLnJlc291cmNlLFxuXHRcdFx0XHR0aGlzLnBlcmlvZCxcblx0XHRcdFx0dGhpcy5pbnRlcnZhbCxcblx0XHRcdClcblx0XHR9IGVsc2Uge1xuXHRcdFx0Y2hhcnRSZXNwID0gRW5kcG9pbnRBY3Rpb25zLmNoYXJ0KFxuXHRcdFx0XHR0aGlzLnByb3BzLmVuZHBvaW50LFxuXHRcdFx0XHR0aGlzLnByb3BzLnJlc291cmNlLFxuXHRcdFx0XHR0aGlzLnBlcmlvZCxcblx0XHRcdFx0dGhpcy5pbnRlcnZhbCxcblx0XHRcdClcblx0XHR9XG5cblx0XHRjaGFydFJlc3AudGhlbigoZGF0YTogQ2hhcnRUeXBlcy5FbmRwb2ludERhdGEpOiB2b2lkID0+IHtcblx0XHRcdGlmIChsb2FkaW5nKSB7XG5cdFx0XHRcdGxvYWRpbmcgPSBmYWxzZTtcblx0XHRcdFx0dGhpcy5wcm9wcy5vbkxvYWRlZCgpO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoZGF0YSAmJiBkYXRhLmhhc19kYXRhICYmIGRhdGEuZGF0YSkge1xuXHRcdFx0XHRpZiAodGhpcy5zdGF0ZS5oaWRkZW4pIHtcblx0XHRcdFx0XHR0aGlzLnNldFN0YXRlKHtcblx0XHRcdFx0XHRcdC4uLnRoaXMuc3RhdGUsXG5cdFx0XHRcdFx0XHRoaWRkZW46IGZhbHNlLFxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0dGhpcy5kYXRhID0gZGF0YS5kYXRhO1xuXHRcdFx0XHRpZiAodGhpcy5jaGFydCkge1xuXHRcdFx0XHRcdHRoaXMudXBkYXRlQ2hhcnQoKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHR0aGlzLmNoYXJ0ID0gbmV3IENoYXJ0SnMuQ2hhcnQoXG5cdFx0XHRcdFx0XHR0aGlzLmNoYXJ0UmVmLmN1cnJlbnQsXG5cdFx0XHRcdFx0XHR0aGlzLmNvbmZpZygpLFxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGlmICghdGhpcy5zdGF0ZS5oaWRkZW4pIHtcblx0XHRcdFx0XHR0aGlzLnNldFN0YXRlKHtcblx0XHRcdFx0XHRcdC4uLnRoaXMuc3RhdGUsXG5cdFx0XHRcdFx0XHRoaWRkZW46IHRydWUsXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9KS5jYXRjaCgoKTogdm9pZCA9PiB7XG5cdFx0XHRpZiAobG9hZGluZykge1xuXHRcdFx0XHRsb2FkaW5nID0gZmFsc2U7XG5cdFx0XHRcdHRoaXMucHJvcHMub25Mb2FkZWQoKTtcblx0XHRcdH1cblx0XHR9KTtcblx0fVxuXG5cdHVwZGF0ZUNoYXJ0KCk6IHZvaWQge1xuXHRcdHRyeSB7XG5cdFx0XHR0aGlzLmxhYmVscyA9IENoYXJ0VHlwZXMuZ2V0Q2hhcnRMYWJlbHModGhpcy5wcm9wcy5yZXNvdXJjZSwgdGhpcy5kYXRhKTtcblx0XHRcdGxldCBkYXRhID0gQ2hhcnRUeXBlcy5nZXRDaGFydERhdGEodGhpcy5wcm9wcy5yZXNvdXJjZSwgdGhpcy5kYXRhKTtcblxuXHRcdFx0bGV0IGRhdGFMZW4gPSBkYXRhLmxlbmd0aDtcblx0XHRcdGxldCBkYXRhc2V0c0xlbiA9IHRoaXMuY2hhcnQuZGF0YS5kYXRhc2V0cy5sZW5ndGg7XG5cblx0XHRcdGZvciAobGV0IGkgPSAwOyBpIDwgTWF0aC5taW4oZGF0YUxlbiwgZGF0YXNldHNMZW4pOyBpKyspIHtcblx0XHRcdFx0dGhpcy5jaGFydC5kYXRhLmRhdGFzZXRzW2ldLmxhYmVsID0gdGhpcy5sYWJlbHMuZGF0YXNldHNbaV0ubGFiZWw7XG5cdFx0XHRcdHRoaXMuY2hhcnQuZGF0YS5kYXRhc2V0c1tpXS5kYXRhID0gZGF0YVtpXSBhcyBhbnk7XG5cdFx0XHR9XG5cblx0XHRcdGlmIChkYXRhTGVuID4gZGF0YXNldHNMZW4pIHtcblx0XHRcdFx0Zm9yIChsZXQgaSA9IGRhdGFzZXRzTGVuOyBpIDwgZGF0YUxlbjsgaSsrKSB7XG5cdFx0XHRcdFx0dGhpcy5jaGFydC5kYXRhLmRhdGFzZXRzLnB1c2goe1xuXHRcdFx0XHRcdFx0bGFiZWw6IHRoaXMubGFiZWxzLmRhdGFzZXRzW2ldLmxhYmVsLFxuXHRcdFx0XHRcdFx0ZGF0YTogZGF0YVtpXSxcblx0XHRcdFx0XHRcdGZpbGw6ICdvcmlnaW4nLFxuXHRcdFx0XHRcdFx0cG9pbnRSYWRpdXM6IDAsXG5cdFx0XHRcdFx0XHRiYWNrZ3JvdW5kQ29sb3I6IGNvbG9yc1tpXSArICcxNScsXG5cdFx0XHRcdFx0XHRib3JkZXJDb2xvcjogY29sb3JzW2ldLFxuXHRcdFx0XHRcdFx0Ym9yZGVyV2lkdGg6IDIsXG5cdFx0XHRcdFx0fSBhcyBDaGFydEpzLkNoYXJ0RGF0YXNldCk7XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSBpZiAoZGF0YXNldHNMZW4gPiBkYXRhTGVuKSB7XG5cdFx0XHRcdGZvciAobGV0IGkgPSAwOyBpIDwgZGF0YXNldHNMZW4gLSBkYXRhTGVuOyBpKyspIHtcblx0XHRcdFx0XHR0aGlzLmNoYXJ0LmRhdGEuZGF0YXNldHMucG9wKCk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0dGhpcy5jaGFydC51cGRhdGUoKTtcblx0XHR9IGNhdGNoKGVycm9yKSB7XG5cdFx0XHRjb25zb2xlLmVycm9yKGVycm9yKTtcblx0XHR9XG5cdH1cblxuXHRjb21wb25lbnREaWRNb3VudCgpOiB2b2lkIHtcblx0XHR0aGlzLnN5bmMgPSB0aGlzLnByb3BzLnN5bmM7XG5cdFx0dGhpcy5wZXJpb2QgPSB0aGlzLnByb3BzLnBlcmlvZDtcblx0XHR0aGlzLmludGVydmFsID0gdGhpcy5wcm9wcy5pbnRlcnZhbDtcblxuXHRcdGxldCBsb2FkaW5nID0gdHJ1ZTtcblx0XHR0aGlzLnByb3BzLm9uTG9hZGluZygpO1xuXG5cdFx0bGV0IGNoYXJ0UmVzcDogUHJvbWlzZTxhbnk+XG5cdFx0aWYgKHRoaXMucHJvcHMuY2hlY2spIHtcblx0XHRcdGNoYXJ0UmVzcCA9IENoZWNrQWN0aW9ucy5jaGFydChcblx0XHRcdFx0dGhpcy5wcm9wcy5jaGVjayxcblx0XHRcdFx0dGhpcy5wcm9wcy5yZXNvdXJjZSxcblx0XHRcdFx0dGhpcy5wZXJpb2QsXG5cdFx0XHRcdHRoaXMuaW50ZXJ2YWwsXG5cdFx0XHQpXG5cdFx0fSBlbHNlIHtcblx0XHRcdGNoYXJ0UmVzcCA9IEVuZHBvaW50QWN0aW9ucy5jaGFydChcblx0XHRcdFx0dGhpcy5wcm9wcy5lbmRwb2ludCxcblx0XHRcdFx0dGhpcy5wcm9wcy5yZXNvdXJjZSxcblx0XHRcdFx0dGhpcy5wZXJpb2QsXG5cdFx0XHRcdHRoaXMuaW50ZXJ2YWwsXG5cdFx0XHQpXG5cdFx0fVxuXG5cdFx0Y2hhcnRSZXNwLnRoZW4oKGRhdGE6IENoYXJ0VHlwZXMuRW5kcG9pbnREYXRhKTogdm9pZCA9PiB7XG5cdFx0XHRpZiAobG9hZGluZykge1xuXHRcdFx0XHRsb2FkaW5nID0gZmFsc2U7XG5cdFx0XHRcdHRoaXMucHJvcHMub25Mb2FkZWQoKTtcblx0XHRcdH1cblxuXHRcdFx0aWYgKGRhdGEgJiYgZGF0YS5oYXNfZGF0YSAmJiBkYXRhLmRhdGEpIHtcblx0XHRcdFx0aWYgKHRoaXMuc3RhdGUuaGlkZGVuKSB7XG5cdFx0XHRcdFx0dGhpcy5zZXRTdGF0ZSh7XG5cdFx0XHRcdFx0XHQuLi50aGlzLnN0YXRlLFxuXHRcdFx0XHRcdFx0aGlkZGVuOiBmYWxzZSxcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdHRoaXMuZGF0YSA9IGRhdGEuZGF0YTtcblx0XHRcdFx0dGhpcy5jaGFydCA9IG5ldyBDaGFydEpzLkNoYXJ0KFxuXHRcdFx0XHRcdHRoaXMuY2hhcnRSZWYuY3VycmVudCxcblx0XHRcdFx0XHR0aGlzLmNvbmZpZygpLFxuXHRcdFx0XHQpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0aWYgKCF0aGlzLnN0YXRlLmhpZGRlbikge1xuXHRcdFx0XHRcdHRoaXMuc2V0U3RhdGUoe1xuXHRcdFx0XHRcdFx0Li4udGhpcy5zdGF0ZSxcblx0XHRcdFx0XHRcdGhpZGRlbjogdHJ1ZSxcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0pLmNhdGNoKCgpOiB2b2lkID0+IHtcblx0XHRcdGlmIChsb2FkaW5nKSB7XG5cdFx0XHRcdGxvYWRpbmcgPSBmYWxzZTtcblx0XHRcdFx0dGhpcy5wcm9wcy5vbkxvYWRlZCgpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG5cblx0Y29tcG9uZW50V2lsbFVubW91bnQoKTogdm9pZCB7XG5cdFx0aWYgKHRoaXMuY2hhcnQpIHtcblx0XHRcdHRoaXMuY2hhcnQuZGVzdHJveSgpO1xuXHRcdH1cblx0fVxuXG5cdHJlbmRlcigpOiBKU1guRWxlbWVudCB7XG5cdFx0aWYgKCh0aGlzLnN5bmMgIT09IHVuZGVmaW5lZCAmJiB0aGlzLnBlcmlvZCAhPT0gdW5kZWZpbmVkICYmXG5cdFx0XHRcdHRoaXMuaW50ZXJ2YWwgIT09IHVuZGVmaW5lZCkgJiZcblx0XHRcdFx0KHRoaXMucHJvcHMuc3luYyAhPT0gdGhpcy5zeW5jIHx8XG5cdFx0XHRcdHRoaXMucHJvcHMucGVyaW9kICE9PSB0aGlzLnBlcmlvZCB8fFxuXHRcdFx0XHR0aGlzLnByb3BzLmludGVydmFsICE9PSB0aGlzLmludGVydmFsKSkge1xuXHRcdFx0dGhpcy51cGRhdGUodGhpcy5wcm9wcy5zeW5jLCB0aGlzLnByb3BzLnBlcmlvZCwgdGhpcy5wcm9wcy5pbnRlcnZhbCk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIDxjYW52YXNcblx0XHRcdGhpZGRlbj17dGhpcy5zdGF0ZS5oaWRkZW59XG5cdFx0XHRyZWY9e3RoaXMuY2hhcnRSZWZ9XG5cdFx0Lz47XG5cdH1cbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./app/components/EndpointChart.js\n");
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ EndpointChart)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var chart_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! chart.js */ \"./node_modules/chart.js/dist/chart.esm.js\");\n/* harmony import */ var _actions_CheckActions__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../actions/CheckActions */ \"./app/actions/CheckActions.js\");\n/* harmony import */ var _actions_EndpointActions__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../actions/EndpointActions */ \"./app/actions/EndpointActions.js\");\n/* harmony import */ var _types_ChartTypes__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../types/ChartTypes */ \"./app/types/ChartTypes.js\");\n/* harmony import */ var _utils_MiscUtils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../utils/MiscUtils */ \"./app/utils/MiscUtils.js\");\n/* harmony import */ var _Theme__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../Theme */ \"./app/Theme.js\");\n\n\n\n\n\n\n\nconst colors = [\n '#0091ea',\n '#d50000',\n '#00c853',\n '#aa00ff',\n '#ffab00',\n '#c51162',\n '#2962ff',\n '#ff6d00',\n '#00bfa5',\n '#304ffe',\n '#00b8d4',\n '#6200ea',\n '#ffd600',\n '#dd2c00',\n '#5d4037',\n '#455a64',\n '#64dd17',\n '#aeea00',\n '#0091ea',\n '#d50000',\n '#00c853',\n '#aa00ff',\n '#ffab00',\n '#c51162',\n '#2962ff',\n '#ff6d00',\n '#00bfa5',\n '#304ffe',\n '#00b8d4',\n '#6200ea',\n '#ffd600',\n '#dd2c00',\n '#5d4037',\n '#455a64',\n '#64dd17',\n '#aeea00',\n '#0091ea',\n '#d50000',\n '#00c853',\n '#aa00ff',\n '#ffab00',\n '#c51162',\n '#2962ff',\n '#ff6d00',\n '#00bfa5',\n '#304ffe',\n '#00b8d4',\n '#6200ea',\n '#ffd600',\n '#dd2c00',\n '#5d4037',\n '#455a64',\n '#64dd17',\n '#aeea00',\n '#0091ea',\n '#d50000',\n '#00c853',\n '#aa00ff',\n '#ffab00',\n '#c51162',\n '#2962ff',\n '#ff6d00',\n '#00bfa5',\n '#304ffe',\n '#00b8d4',\n '#6200ea',\n '#ffd600',\n '#dd2c00',\n '#5d4037',\n '#455a64',\n '#64dd17',\n '#aeea00',\n '#0091ea',\n '#d50000',\n '#00c853',\n '#aa00ff',\n '#ffab00',\n '#c51162',\n '#2962ff',\n '#ff6d00',\n '#00bfa5',\n '#304ffe',\n '#00b8d4',\n '#6200ea',\n '#ffd600',\n '#dd2c00',\n '#5d4037',\n '#455a64',\n '#64dd17',\n '#aeea00',\n '#0091ea',\n '#d50000',\n '#00c853',\n '#aa00ff',\n '#ffab00',\n '#c51162',\n '#2962ff',\n '#ff6d00',\n '#00bfa5',\n '#304ffe',\n '#00b8d4',\n '#6200ea',\n '#ffd600',\n '#dd2c00',\n '#5d4037',\n '#455a64',\n '#64dd17',\n '#aeea00',\n '#0091ea',\n '#d50000',\n '#00c853',\n '#aa00ff',\n '#ffab00',\n '#c51162',\n '#2962ff',\n '#ff6d00',\n '#00bfa5',\n '#304ffe',\n '#00b8d4',\n '#6200ea',\n '#ffd600',\n '#dd2c00',\n '#5d4037',\n '#455a64',\n '#64dd17',\n '#aeea00',\n '#0091ea',\n '#d50000',\n '#00c853',\n '#aa00ff',\n '#ffab00',\n '#c51162',\n '#2962ff',\n '#ff6d00',\n '#00bfa5',\n '#304ffe',\n '#00b8d4',\n '#6200ea',\n '#ffd600',\n '#dd2c00',\n '#5d4037',\n '#455a64',\n '#64dd17',\n '#aeea00',\n '#0091ea',\n '#d50000',\n '#00c853',\n '#aa00ff',\n '#ffab00',\n '#c51162',\n '#2962ff',\n '#ff6d00',\n '#00bfa5',\n '#304ffe',\n '#00b8d4',\n '#6200ea',\n '#ffd600',\n '#dd2c00',\n '#5d4037',\n '#455a64',\n '#64dd17',\n '#aeea00',\n '#0091ea',\n '#d50000',\n '#00c853',\n '#aa00ff',\n '#ffab00',\n '#c51162',\n '#2962ff',\n '#ff6d00',\n '#00bfa5',\n '#304ffe',\n '#00b8d4',\n '#6200ea',\n '#ffd600',\n '#dd2c00',\n '#5d4037',\n '#455a64',\n '#64dd17',\n '#aeea00',\n '#0091ea',\n '#d50000',\n '#00c853',\n '#aa00ff',\n '#ffab00',\n '#c51162',\n '#2962ff',\n '#ff6d00',\n '#00bfa5',\n '#304ffe',\n '#00b8d4',\n '#6200ea',\n '#ffd600',\n '#dd2c00',\n '#5d4037',\n '#455a64',\n '#64dd17',\n '#aeea00',\n '#0091ea',\n '#d50000',\n '#00c853',\n '#aa00ff',\n '#ffab00',\n '#c51162',\n '#2962ff',\n '#ff6d00',\n '#00bfa5',\n '#304ffe',\n '#00b8d4',\n '#6200ea',\n '#ffd600',\n '#dd2c00',\n '#5d4037',\n '#455a64',\n '#64dd17',\n '#aeea00',\n '#0091ea',\n '#d50000',\n '#00c853',\n '#aa00ff',\n '#ffab00',\n '#c51162',\n '#2962ff',\n '#ff6d00',\n '#00bfa5',\n '#304ffe',\n '#00b8d4',\n '#6200ea',\n '#ffd600',\n '#dd2c00',\n '#5d4037',\n '#455a64',\n '#64dd17',\n '#aeea00',\n '#0091ea',\n '#d50000',\n '#00c853',\n '#aa00ff',\n '#ffab00',\n '#c51162',\n '#2962ff',\n '#ff6d00',\n '#00bfa5',\n '#304ffe',\n '#00b8d4',\n '#6200ea',\n '#ffd600',\n '#dd2c00',\n '#5d4037',\n '#455a64',\n '#64dd17',\n '#aeea00',\n '#0091ea',\n '#d50000',\n '#00c853',\n '#aa00ff',\n '#ffab00',\n '#c51162',\n '#2962ff',\n '#ff6d00',\n '#00bfa5',\n '#304ffe',\n '#00b8d4',\n '#6200ea',\n '#ffd600',\n '#dd2c00',\n '#5d4037',\n '#455a64',\n '#64dd17',\n '#aeea00',\n '#0091ea',\n '#d50000',\n '#00c853',\n '#aa00ff',\n '#ffab00',\n '#c51162',\n '#2962ff',\n '#ff6d00',\n '#00bfa5',\n '#304ffe',\n '#00b8d4',\n '#6200ea',\n '#ffd600',\n '#dd2c00',\n '#5d4037',\n '#455a64',\n '#64dd17',\n '#aeea00',\n '#0091ea',\n '#d50000',\n '#00c853',\n '#aa00ff',\n '#ffab00',\n '#c51162',\n '#2962ff',\n '#ff6d00',\n '#00bfa5',\n '#304ffe',\n '#00b8d4',\n '#6200ea',\n '#ffd600',\n '#dd2c00',\n '#5d4037',\n '#455a64',\n '#64dd17',\n '#aeea00',\n '#0091ea',\n '#d50000',\n '#00c853',\n '#aa00ff',\n '#ffab00',\n '#c51162',\n '#2962ff',\n '#ff6d00',\n '#00bfa5',\n '#304ffe',\n '#00b8d4',\n '#6200ea',\n '#ffd600',\n '#dd2c00',\n '#5d4037',\n '#455a64',\n '#64dd17',\n '#aeea00',\n '#0091ea',\n '#d50000',\n '#00c853',\n '#aa00ff',\n '#ffab00',\n '#c51162',\n '#2962ff',\n '#ff6d00',\n '#00bfa5',\n '#304ffe',\n '#00b8d4',\n '#6200ea',\n '#ffd600',\n '#dd2c00',\n '#5d4037',\n '#455a64',\n '#64dd17',\n '#aeea00',\n];\nclass EndpointChart extends react__WEBPACK_IMPORTED_MODULE_0__.Component {\n constructor(props, context) {\n super(props, context);\n this.ticks = (axis) => {\n let ticks = axis.ticks;\n let newTicks = [];\n let dataset = Object.values(this.data)[0];\n let tickMod = 3600000;\n let len = dataset.length;\n if (len) {\n let first = dataset[0];\n let last = dataset[len - 1];\n let range = last.x - first.x;\n if (range >= 2833920000) {\n tickMod = 604800000;\n }\n else if (range >= 1451520000) {\n tickMod = 172800000;\n }\n else if (range >= 611280000) {\n tickMod = 86400000;\n }\n else if (range >= 276480000) {\n tickMod = 43200000;\n }\n else if (range >= 89280000) {\n tickMod = 21600000;\n }\n else {\n tickMod = 3600000;\n }\n }\n for (let i = 0; i < ticks.length; i++) {\n let tick = ticks[i];\n if (tick.value % tickMod === 0) {\n newTicks.push(tick);\n }\n }\n axis.ticks = newTicks;\n };\n this.config = () => {\n this.labels = _types_ChartTypes__WEBPACK_IMPORTED_MODULE_4__.getChartLabels(this.props.resource, this.data);\n let self = this;\n let config = {\n type: 'line',\n options: {\n scales: {\n x: {\n type: 'time',\n title: {\n display: true,\n text: 'Time',\n color: _Theme__WEBPACK_IMPORTED_MODULE_6__.chartColor1(),\n padding: 0,\n font: {\n weight: 'bold',\n },\n },\n time: {\n unit: 'minute',\n displayFormats: {\n minute: 'HH:mm',\n },\n },\n ticks: {\n stepSize: 1,\n count: 100,\n maxTicksLimit: 100,\n color: _Theme__WEBPACK_IMPORTED_MODULE_6__.chartColor1(),\n source: 'data',\n },\n grid: {\n color: _Theme__WEBPACK_IMPORTED_MODULE_6__.chartColor2(),\n },\n beforeTickToLabelConversion: this.ticks,\n },\n y: {\n min: this.labels.resource_min,\n max: this.labels.resource_max,\n offset: false,\n beginAtZero: true,\n title: {\n display: true,\n text: this.labels.resource_label,\n color: _Theme__WEBPACK_IMPORTED_MODULE_6__.chartColor1(),\n padding: 0,\n font: {\n weight: 'bold',\n },\n },\n ticks: {\n color: _Theme__WEBPACK_IMPORTED_MODULE_6__.chartColor1(),\n callback: (val) => {\n switch (this.labels.resource_type) {\n case 'bytes':\n return _utils_MiscUtils__WEBPACK_IMPORTED_MODULE_5__.formatBytes(val, 0);\n case 'milliseconds':\n return _utils_MiscUtils__WEBPACK_IMPORTED_MODULE_5__.formatMs(val);\n default:\n return val;\n }\n }\n },\n grid: {\n color: _Theme__WEBPACK_IMPORTED_MODULE_6__.chartColor2(),\n },\n },\n },\n plugins: {\n title: {\n display: true,\n text: this.labels.title,\n color: _Theme__WEBPACK_IMPORTED_MODULE_6__.chartColor1(),\n padding: 3,\n font: {\n size: 13,\n },\n },\n tooltip: {\n enabled: false,\n mode: 'index',\n intersect: false,\n backgroundColor: 'rgba(0, 0, 0, 0.7)',\n external: (context) => {\n let toolElm = document.getElementById('chartjs-tooltip');\n if (!toolElm) {\n toolElm = document.createElement('div');\n toolElm.id = 'chartjs-tooltip';\n toolElm.className = 'bp3-card';\n toolElm.innerHTML = '';\n document.body.appendChild(toolElm);\n }\n const model = context.tooltip;\n if (model.opacity === 0) {\n toolElm.style.opacity = '0';\n return;\n }\n function getBody(bodyItem) {\n return bodyItem.lines;\n }\n let boxRect = this.props.getBoxRect();\n let boxBottom = boxRect.bottom + window.pageYOffset;\n let boxTop = boxRect.top + window.pageYOffset + 130;\n let rowCount = 0;\n let height = 0;\n if (model.body) {\n const titleLines = model.title || [];\n const bodyLines = model.body.map(getBody);\n let innerHtml = '';\n titleLines.forEach(function (title) {\n innerHtml += '' + title + ' |
';\n });\n innerHtml += '';\n let tableRows = [];\n bodyLines.forEach(function (body, i) {\n if (!body || !body.length) {\n return;\n }\n let items = body[0].split(';');\n if (items.length < 2) {\n return;\n }\n const colors = model.labelColors[i];\n let style = 'background:' + colors.backgroundColor;\n style += '; border-color:' + colors.borderColor;\n const span = '';\n tableRows.push('' + span + items[0] +\n ' | ' + items[1] + ' | ');\n rowCount += 1;\n });\n height = 26.33 + (rowCount * 17.33);\n let double = false;\n let curRow = '';\n let curTime = Math.round(Date.now() / 1000);\n if (curTime - this.lastDouble < 60 &&\n height > (boxRect.height - 280)) {\n double = true;\n this.lastDouble = curTime;\n }\n else if (height > (boxRect.height - 130)) {\n double = true;\n this.lastDouble = curTime;\n }\n rowCount = 0;\n tableRows.forEach(function (columns, i) {\n if (double && !curRow) {\n curRow = columns;\n }\n else {\n innerHtml += '' + curRow + columns + '
';\n curRow = '';\n rowCount += 1;\n }\n });\n if (curRow) {\n innerHtml += '' + curRow + '
';\n curRow = '';\n rowCount += 1;\n }\n height = 26.33 + (rowCount * 17.33);\n innerHtml += '';\n let tableRoot = toolElm.querySelector('table');\n tableRoot.innerHTML = innerHtml;\n }\n toolElm = document.getElementById('chartjs-tooltip');\n const position = context.chart.canvas.getBoundingClientRect();\n toolElm.style.opacity = '1';\n toolElm.style.position = 'absolute';\n if (this.props.left) {\n toolElm.style.right = \"\";\n toolElm.style.left = (document.body.offsetWidth -\n position.right + window.pageXOffset - 18) + 'px';\n }\n else {\n toolElm.style.left = \"\";\n toolElm.style.right = (document.body.offsetWidth -\n position.left + window.pageXOffset + 3) + 'px';\n }\n let toolTop = Math.round(position.top + (position.height / 2) -\n (height / 2) + window.pageYOffset);\n if (height > (boxRect.height - 130)) {\n toolTop = Math.round(boxRect.top + (boxRect.height / 2) -\n (height / 2) + window.pageYOffset);\n }\n else if (toolTop < boxTop) {\n toolTop = boxTop;\n }\n else if ((toolTop + height) > boxBottom) {\n toolTop = boxBottom - height;\n }\n toolElm.style.top = toolTop + 'px';\n toolElm.style.pointerEvents = 'none';\n },\n callbacks: {\n label(item) {\n let raw = item.raw;\n if (self.labels.hide_zero && !raw.y) {\n return '';\n }\n let val = '';\n if (raw) {\n switch (self.labels.resource_type) {\n case 'bytes':\n val = _utils_MiscUtils__WEBPACK_IMPORTED_MODULE_5__.formatBytes(raw.y, self.labels.resource_fixed);\n break;\n case 'milliseconds':\n val = _utils_MiscUtils__WEBPACK_IMPORTED_MODULE_5__.formatMs(raw.y);\n break;\n case 'float':\n val = raw.y.toFixed(self.labels.resource_fixed);\n break;\n default:\n val = raw.y;\n }\n }\n let dataset = item.dataset;\n if (self.labels.resource_fixed) {\n return dataset.label + ';' +\n val + self.labels.resource_suffix;\n }\n return dataset.label + ';' + val +\n self.labels.resource_suffix;\n },\n },\n },\n },\n },\n data: {\n datasets: [],\n },\n };\n let data = _types_ChartTypes__WEBPACK_IMPORTED_MODULE_4__.getChartData(this.props.resource, this.data);\n for (let i = 0; i < this.labels.datasets.length; i++) {\n let datasetLabels = this.labels.datasets[i];\n config.data.datasets.push({\n label: datasetLabels.label,\n data: data[i],\n fill: 'origin',\n pointRadius: 0,\n backgroundColor: colors[i] + '15',\n borderColor: colors[i],\n borderWidth: 2,\n });\n }\n return config;\n };\n this.state = {\n hidden: false,\n disabled: false,\n };\n this.chartRef = react__WEBPACK_IMPORTED_MODULE_0__.createRef();\n }\n update(sync, period, interval) {\n this.sync = sync;\n this.period = period;\n this.interval = interval;\n let loading = true;\n this.props.onLoading();\n let chartResp;\n if (this.props.check) {\n chartResp = _actions_CheckActions__WEBPACK_IMPORTED_MODULE_2__.chart(this.props.check, this.props.resource, this.period, this.interval);\n }\n else {\n chartResp = _actions_EndpointActions__WEBPACK_IMPORTED_MODULE_3__.chart(this.props.endpoint, this.props.resource, this.period, this.interval);\n }\n chartResp.then((data) => {\n if (loading) {\n loading = false;\n this.props.onLoaded();\n }\n if (data && data.has_data && data.data) {\n if (this.state.hidden) {\n this.setState({\n ...this.state,\n hidden: false,\n });\n }\n this.data = data.data;\n if (this.chart) {\n this.updateChart();\n }\n else {\n this.chart = new chart_js__WEBPACK_IMPORTED_MODULE_1__.Chart(this.chartRef.current, this.config());\n }\n }\n else {\n if (!this.state.hidden) {\n this.setState({\n ...this.state,\n hidden: true,\n });\n }\n }\n }).catch(() => {\n if (loading) {\n loading = false;\n this.props.onLoaded();\n }\n });\n }\n updateChart() {\n try {\n this.labels = _types_ChartTypes__WEBPACK_IMPORTED_MODULE_4__.getChartLabels(this.props.resource, this.data);\n let data = _types_ChartTypes__WEBPACK_IMPORTED_MODULE_4__.getChartData(this.props.resource, this.data);\n let dataLen = data.length;\n let datasetsLen = this.chart.data.datasets.length;\n for (let i = 0; i < Math.min(dataLen, datasetsLen); i++) {\n this.chart.data.datasets[i].label = this.labels.datasets[i].label;\n this.chart.data.datasets[i].data = data[i];\n }\n if (dataLen > datasetsLen) {\n for (let i = datasetsLen; i < dataLen; i++) {\n this.chart.data.datasets.push({\n label: this.labels.datasets[i].label,\n data: data[i],\n fill: 'origin',\n pointRadius: 0,\n backgroundColor: colors[i] + '15',\n borderColor: colors[i],\n borderWidth: 2,\n });\n }\n }\n else if (datasetsLen > dataLen) {\n for (let i = 0; i < datasetsLen - dataLen; i++) {\n this.chart.data.datasets.pop();\n }\n }\n this.chart.update();\n }\n catch (error) {\n console.error(error);\n }\n }\n componentDidMount() {\n this.sync = this.props.sync;\n this.period = this.props.period;\n this.interval = this.props.interval;\n let loading = true;\n this.props.onLoading();\n let chartResp;\n if (this.props.check) {\n chartResp = _actions_CheckActions__WEBPACK_IMPORTED_MODULE_2__.chart(this.props.check, this.props.resource, this.period, this.interval);\n }\n else {\n chartResp = _actions_EndpointActions__WEBPACK_IMPORTED_MODULE_3__.chart(this.props.endpoint, this.props.resource, this.period, this.interval);\n }\n chartResp.then((data) => {\n if (loading) {\n loading = false;\n this.props.onLoaded();\n }\n if (data && data.has_data && data.data) {\n if (this.state.hidden) {\n this.setState({\n ...this.state,\n hidden: false,\n });\n }\n this.data = data.data;\n this.chart = new chart_js__WEBPACK_IMPORTED_MODULE_1__.Chart(this.chartRef.current, this.config());\n }\n else {\n if (!this.state.hidden) {\n this.setState({\n ...this.state,\n hidden: true,\n });\n }\n }\n }).catch(() => {\n if (loading) {\n loading = false;\n this.props.onLoaded();\n }\n });\n }\n componentWillUnmount() {\n if (this.chart) {\n this.chart.destroy();\n }\n }\n render() {\n if ((this.sync !== undefined && this.period !== undefined &&\n this.interval !== undefined) &&\n (this.props.sync !== this.sync ||\n this.props.period !== this.period ||\n this.props.interval !== this.interval)) {\n this.update(this.props.sync, this.props.period, this.props.interval);\n }\n return react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"canvas\", { hidden: this.state.hidden, ref: this.chartRef });\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9hcHAvY29tcG9uZW50cy9FbmRwb2ludENoYXJ0LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQytCO0FBQ0s7QUFDb0I7QUFDTTtBQUNaO0FBQ0Y7QUFDZDtBQW9CbEMsTUFBTSxNQUFNLEdBQUc7SUFDZCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFFVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFFVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFFVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFFVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFFVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFFVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFFVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFFVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFFVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFFVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFFVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFFVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFFVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFFVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFFVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFFVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFFVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFFVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7Q0FDVCxDQUFDO0FBRWEsTUFBTSxhQUFjLFNBQVEsNENBQTZCO0lB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TUFBTSxFQUN6QixHQUFHLEVBQUUsSUFBSSxDQUFDLFFBQVEsR0FDakIsQ0FBQztJQUNKLENBQUM7Q0FDRCIsInNvdXJjZXMiOlsid2VicGFjazovL3ByaXR1bmwtemVyby8uL2FwcC9jb21wb25lbnRzL0VuZHBvaW50Q2hhcnQudHN4P2Y2MmQiXSwic291cmNlc0NvbnRlbnQiOlsiLy8vIDxyZWZlcmVuY2UgcGF0aD1cIi4uL1JlZmVyZW5jZXMuZC50c1wiLz5cbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCAqIGFzIENoYXJ0SnMgZnJvbSAnY2hhcnQuanMnO1xuaW1wb3J0ICogYXMgQ2hlY2tBY3Rpb25zIGZyb20gJy4uL2FjdGlvbnMvQ2hlY2tBY3Rpb25zJztcbmltcG9ydCAqIGFzIEVuZHBvaW50QWN0aW9ucyBmcm9tICcuLi9hY3Rpb25zL0VuZHBvaW50QWN0aW9ucyc7XG5pbXBvcnQgKiBhcyBDaGFydFR5cGVzIGZyb20gJy4uL3R5cGVzL0NoYXJ0VHlwZXMnO1xuaW1wb3J0ICogYXMgTWlzY1V0aWxzIGZyb20gJy4uL3V0aWxzL01pc2NVdGlscyc7XG5pbXBvcnQgKiBhcyBUaGVtZSBmcm9tICcuLi9UaGVtZSc7XG5cbmludGVyZmFjZSBQcm9wcyB7XG5cdGVuZHBvaW50Pzogc3RyaW5nO1xuXHRjaGVjaz86IHN0cmluZztcblx0cmVzb3VyY2U6IHN0cmluZztcblx0c3luYzogbnVtYmVyO1xuXHRwZXJpb2Q6IG51bWJlcjtcblx0aW50ZXJ2YWw6IG51bWJlcjtcblx0bGVmdDogYm9vbGVhbjtcblx0b25Mb2FkaW5nOiAoKSA9PiB2b2lkO1xuXHRvbkxvYWRlZDogKCkgPT4gdm9pZDtcblx0Z2V0Qm94UmVjdDogKCkgPT4gRE9NUmVjdDtcbn1cblxuaW50ZXJmYWNlIFN0YXRlIHtcblx0aGlkZGVuOiBib29sZWFuO1xuXHRkaXNhYmxlZDogYm9vbGVhbjtcbn1cblxuY29uc3QgY29sb3JzID0gW1xuXHQnIzAwOTFlYScsIC8vIGxpZ2h0IGJsdWVcblx0JyNkNTAwMDAnLCAvLyByZWRcblx0JyMwMGM4NTMnLCAvLyBncmVlblxuXHQnI2FhMDBmZicsIC8vIHB1cnBsZVxuXHQnI2ZmYWIwMCcsIC8vIGFtYmVyXG5cdCcjYzUxMTYyJywgLy8gcGlua1xuXHQnIzI5NjJmZicsIC8vIGJsdWVcblx0JyNmZjZkMDAnLCAvLyBvcmFuZ2Vcblx0JyMwMGJmYTUnLCAvLyB0ZWFsXG5cdCcjMzA0ZmZlJywgLy8gaW5kaWdvXG5cdCcjMDBiOGQ0JywgLy8gY3lhblxuXHQnIzYyMDBlYScsIC8vIGRlZXAgcHVycGxlXG5cdCcjZmZkNjAwJywgLy8geWVsbG93XG5cdCcjZGQyYzAwJywgLy8gZGVlcCBvcmFuZ2Vcblx0JyM1ZDQwMzcnLCAvLyBicm93blxuXHQnIzQ1NWE2NCcsIC8vIGJsdWUgZ3JleVxuXHQnIzY0ZGQxNycsIC8vIGxpZ2h0IGdyZWVuXG5cdCcjYWVlYTAwJywgLy8gbGltZVxuXG5cdCcjMDA5MWVhJywgLy8gbGlnaHQgYmx1ZVxuXHQnI2Q1MDAwMCcsIC8vIHJlZFxuXHQnIzAwYzg1MycsIC8vIGdyZWVuXG5cdCcjYWEwMGZmJywgLy8gcHVycGxlXG5cdCcjZmZhYjAwJywgLy8gYW1iZXJcblx0JyNjNTExNjInLCAvLyBwaW5rXG5cdCcjMjk2MmZmJywgLy8gYmx1ZVxuXHQnI2ZmNmQwMCcsIC8vIG9yYW5nZVxuXHQnIzAwYmZhNScsIC8vIHRlYWxcblx0JyMzMDRmZmUnLCAvLyBpbmRpZ29cblx0JyMwMGI4ZDQnLCAvLyBjeWFuXG5cdCcjNjIwMGVhJywgLy8gZGVlcCBwdXJwbGVcblx0JyNmZmQ2MDAnLCAvLyB5ZWxsb3dcblx0JyNkZDJjMDAnLCAvLyBkZWVwIG9yYW5nZVxuXHQnIzVkNDAzNycsIC8vIGJyb3duXG5cdCcjNDU1YTY0JywgLy8gYmx1ZSBncmV5XG5cdCcjNjRkZDE3JywgLy8gbGlnaHQgZ3JlZW5cblx0JyNhZWVhMDAnLCAvLyBsaW1lXG5cblx0JyMwMDkxZWEnLCAvLyBsaWdodCBibHVlXG5cdCcjZDUwMDAwJywgLy8gcmVkXG5cdCcjMDBjODUzJywgLy8gZ3JlZW5cblx0JyNhYTAwZmYnLCAvLyBwdXJwbGVcblx0JyNmZmFiMDAnLCAvLyBhbWJlclxuXHQnI2M1MTE2MicsIC8vIHBpbmtcblx0JyMyOTYyZmYnLCAvLyBibHVlXG5cdCcjZmY2ZDAwJywgLy8gb3JhbmdlXG5cdCcjMDBiZmE1JywgLy8gdGVhbFxuXHQnIzMwNGZmZScsIC8vIGluZGlnb1xuXHQnIzAwYjhkNCcsIC8vIGN5YW5cblx0JyM2MjAwZWEnLCAvLyBkZWVwIHB1cnBsZVxuXHQnI2ZmZDYwMCcsIC8vIHllbGxvd1xuXHQnI2RkMmMwMCcsIC8vIGRlZXAgb3JhbmdlXG5cdCcjNWQ0MDM3JywgLy8gYnJvd25cblx0JyM0NTVhNjQnLCAvLyBibHVlIGdyZXlcblx0JyM2NGRkMTcnLCAvLyBsaWdodCBncmVlblxuXHQnI2FlZWEwMCcsIC8vIGxpbWVcblxuXHQnIzAwOTFlYScsIC8vIGxpZ2h0IGJsdWVcblx0JyNkNTAwMDAnLCAvLyByZWRcblx0JyMwMGM4NTMnLCAvLyBncmVlblxuXHQnI2FhMDBmZicsIC8vIHB1cnBsZVxuXHQnI2ZmYWIwMCcsIC8vIGFtYmVyXG5cdCcjYzUxMTYyJywgLy8gcGlua1xuXHQnIzI5NjJmZicsIC8vIGJsdWVcblx0JyNmZjZkMDAnLCAvLyBvcmFuZ2Vcblx0JyMwMGJmYTUnLCAvLyB0ZWFsXG5cdCcjMzA0ZmZlJywgLy8gaW5kaWdvXG5cdCcjMDBiOGQ0JywgLy8gY3lhblxuXHQnIzYyMDBlYScsIC8vIGRlZXAgcHVycGxlXG5cdCcjZmZkNjAwJywgLy8geWVsbG93XG5cdCcjZGQyYzAwJywgLy8gZGVlcCBvcmFuZ2Vcblx0JyM1ZDQwMzcnLCAvLyBicm93blxuXHQnIzQ1NWE2NCcsIC8vIGJsdWUgZ3JleVxuXHQnIzY0ZGQxNycsIC8vIGxpZ2h0IGdyZWVuXG5cdCcjYWVlYTAwJywgLy8gbGltZVxuXG5cdCcjMDA5MWVhJywgLy8gbGlnaHQgYmx1ZVxuXHQnI2Q1MDAwMCcsIC8vIHJlZFxuXHQnIzAwYzg1MycsIC8vIGdyZWVuXG5cdCcjYWEwMGZmJywgLy8gcHVycGxlXG5cdCcjZmZhYjAwJywgLy8gYW1iZXJcblx0JyNjNTExNjInLCAvLyBwaW5rXG5cdCcjMjk2MmZmJywgLy8gYmx1ZVxuXHQnI2ZmNmQwMCcsIC8vIG9yYW5nZVxuXHQnIzAwYmZhNScsIC8vIHRlYWxcblx0JyMzMDRmZmUnLCAvLyBpbmRpZ29cblx0JyMwMGI4ZDQnLCAvLyBjeWFuXG5cdCcjNjIwMGVhJywgLy8gZGVlcCBwdXJwbGVcblx0JyNmZmQ2MDAnLCAvLyB5ZWxsb3dcblx0JyNkZDJjMDAnLCAvLyBkZWVwIG9yYW5nZVxuXHQnIzVkNDAzNycsIC8vIGJyb3duXG5cdCcjNDU1YTY0JywgLy8gYmx1ZSBncmV5XG5cdCcjNjRkZDE3JywgLy8gbGlnaHQgZ3JlZW5cblx0JyNhZWVhMDAnLCAvLyBsaW1lXG5cblx0JyMwMDkxZWEnLCAvLyBsaWdodCBibHVlXG5cdCcjZDUwMDAwJywgLy8gcmVkXG5cdCcjMDBjODUzJywgLy8gZ3JlZW5cblx0JyNhYTAwZmYnLCAvLyBwdXJwbGVcblx0JyNmZmFiMDAnLCAvLyBhbWJlclxuXHQnI2M1MTE2MicsIC8vIHBpbmtcblx0JyMyOTYyZmYnLCAvLyBibHVlXG5cdCcjZmY2ZDAwJywgLy8gb3JhbmdlXG5cdCcjMDBiZmE1JywgLy8gdGVhbFxuXHQnIzMwNGZmZScsIC8vIGluZGlnb1xuXHQnIzAwYjhkNCcsIC8vIGN5YW5cblx0JyM2MjAwZWEnLCAvLyBkZWVwIHB1cnBsZVxuXHQnI2ZmZDYwMCcsIC8vIHllbGxvd1xuXHQnI2RkMmMwMCcsIC8vIGRlZXAgb3JhbmdlXG5cdCcjNWQ0MDM3JywgLy8gYnJvd25cblx0JyM0NTVhNjQnLCAvLyBibHVlIGdyZXlcblx0JyM2NGRkMTcnLCAvLyBsaWdodCBncmVlblxuXHQnI2FlZWEwMCcsIC8vIGxpbWVcblxuXHQnIzAwOTFlYScsIC8vIGxpZ2h0IGJsdWVcblx0JyNkNTAwMDAnLCAvLyByZWRcblx0JyMwMGM4NTMnLCAvLyBncmVlblxuXHQnI2FhMDBmZicsIC8vIHB1cnBsZVxuXHQnI2ZmYWIwMCcsIC8vIGFtYmVyXG5cdCcjYzUxMTYyJywgLy8gcGlua1xuXHQnIzI5NjJmZicsIC8vIGJsdWVcblx0JyNmZjZkMDAnLCAvLyBvcmFuZ2Vcblx0JyMwMGJmYTUnLCAvLyB0ZWFsXG5cdCcjMzA0ZmZlJywgLy8gaW5kaWdvXG5cdCcjMDBiOGQ0JywgLy8gY3lhblxuXHQnIzYyMDBlYScsIC8vIGRlZXAgcHVycGxlXG5cdCcjZmZkNjAwJywgLy8geWVsbG93XG5cdCcjZGQyYzAwJywgLy8gZGVlcCBvcmFuZ2Vcblx0JyM1ZDQwMzcnLCAvLyBicm93blxuXHQnIzQ1NWE2NCcsIC8vIGJsdWUgZ3JleVxuXHQnIzY0ZGQxNycsIC8vIGxpZ2h0IGdyZWVuXG5cdCcjYWVlYTAwJywgLy8gbGltZVxuXG5cdCcjMDA5MWVhJywgLy8gbGlnaHQgYmx1ZVxuXHQnI2Q1MDAwMCcsIC8vIHJlZFxuXHQnIzAwYzg1MycsIC8vIGdyZWVuXG5cdCcjYWEwMGZmJywgLy8gcHVycGxlXG5cdCcjZmZhYjAwJywgLy8gYW1iZXJcblx0JyNjNTExNjInLCAvLyBwaW5rXG5cdCcjMjk2MmZmJywgLy8gYmx1ZVxuXHQnI2ZmNmQwMCcsIC8vIG9yYW5nZVxuXHQnIzAwYmZhNScsIC8vIHRlYWxcblx0JyMzMDRmZmUnLCAvLyBpbmRpZ29cblx0JyMwMGI4ZDQnLCAvLyBjeWFuXG5cdCcjNjIwMGVhJywgLy8gZGVlcCBwdXJwbGVcblx0JyNmZmQ2MDAnLCAvLyB5ZWxsb3dcblx0JyNkZDJjMDAnLCAvLyBkZWVwIG9yYW5nZVxuXHQnIzVkNDAzNycsIC8vIGJyb3duXG5cdCcjNDU1YTY0JywgLy8gYmx1ZSBncmV5XG5cdCcjNjRkZDE3JywgLy8gbGlnaHQgZ3JlZW5cblx0JyNhZWVhMDAnLCAvLyBsaW1lXG5cblx0JyMwMDkxZWEnLCAvLyBsaWdodCBibHVlXG5cdCcjZDUwMDAwJywgLy8gcmVkXG5cdCcjMDBjODUzJywgLy8gZ3JlZW5cblx0JyNhYTAwZmYnLCAvLyBwdXJwbGVcblx0JyNmZmFiMDAnLCAvLyBhbWJlclxuXHQnI2M1MTE2MicsIC8vIHBpbmtcblx0JyMyOTYyZmYnLCAvLyBibHVlXG5cdCcjZmY2ZDAwJywgLy8gb3JhbmdlXG5cdCcjMDBiZmE1JywgLy8gdGVhbFxuXHQnIzMwNGZmZScsIC8vIGluZGlnb1xuXHQnIzAwYjhkNCcsIC8vIGN5YW5cblx0JyM2MjAwZWEnLCAvLyBkZWVwIHB1cnBsZVxuXHQnI2ZmZDYwMCcsIC8vIHllbGxvd1xuXHQnI2RkMmMwMCcsIC8vIGRlZXAgb3JhbmdlXG5cdCcjNWQ0MDM3JywgLy8gYnJvd25cblx0JyM0NTVhNjQnLCAvLyBibHVlIGdyZXlcblx0JyM2NGRkMTcnLCAvLyBsaWdodCBncmVlblxuXHQnI2FlZWEwMCcsIC8vIGxpbWVcblxuXHQnIzAwOTFlYScsIC8vIGxpZ2h0IGJsdWVcblx0JyNkNTAwMDAnLCAvLyByZWRcblx0JyMwMGM4NTMnLCAvLyBncmVlblxuXHQnI2FhMDBmZicsIC8vIHB1cnBsZVxuXHQnI2ZmYWIwMCcsIC8vIGFtYmVyXG5cdCcjYzUxMTYyJywgLy8gcGlua1xuXHQnIzI5NjJmZicsIC8vIGJsdWVcblx0JyNmZjZkMDAnLCAvLyBvcmFuZ2Vcblx0JyMwMGJmYTUnLCAvLyB0ZWFsXG5cdCcjMzA0ZmZlJywgLy8gaW5kaWdvXG5cdCcjMDBiOGQ0JywgLy8gY3lhblxuXHQnIzYyMDBlYScsIC8vIGRlZXAgcHVycGxlXG5cdCcjZmZkNjAwJywgLy8geWVsbG93XG5cdCcjZGQyYzAwJywgLy8gZGVlcCBvcmFuZ2Vcblx0JyM1ZDQwMzcnLCAvLyBicm93blxuXHQnIzQ1NWE2NCcsIC8vIGJsdWUgZ3JleVxuXHQnIzY0ZGQxNycsIC8vIGxpZ2h0IGdyZWVuXG5cdCcjYWVlYTAwJywgLy8gbGltZVxuXG5cdCcjMDA5MWVhJywgLy8gbGlnaHQgYmx1ZVxuXHQnI2Q1MDAwMCcsIC8vIHJlZFxuXHQnIzAwYzg1MycsIC8vIGdyZWVuXG5cdCcjYWEwMGZmJywgLy8gcHVycGxlXG5cdCcjZmZhYjAwJywgLy8gYW1iZXJcblx0JyNjNTExNjInLCAvLyBwaW5rXG5cdCcjMjk2MmZmJywgLy8gYmx1ZVxuXHQnI2ZmNmQwMCcsIC8vIG9yYW5nZVxuXHQnIzAwYmZhNScsIC8vIHRlYWxcblx0JyMzMDRmZmUnLCAvLyBpbmRpZ29cblx0JyMwMGI4ZDQnLCAvLyBjeWFuXG5cdCcjNjIwMGVhJywgLy8gZGVlcCBwdXJwbGVcblx0JyNmZmQ2MDAnLCAvLyB5ZWxsb3dcblx0JyNkZDJjMDAnLCAvLyBkZWVwIG9yYW5nZVxuXHQnIzVkNDAzNycsIC8vIGJyb3duXG5cdCcjNDU1YTY0JywgLy8gYmx1ZSBncmV5XG5cdCcjNjRkZDE3JywgLy8gbGlnaHQgZ3JlZW5cblx0JyNhZWVhMDAnLCAvLyBsaW1lXG5cblx0JyMwMDkxZWEnLCAvLyBsaWdodCBibHVlXG5cdCcjZDUwMDAwJywgLy8gcmVkXG5cdCcjMDBjODUzJywgLy8gZ3JlZW5cblx0JyNhYTAwZmYnLCAvLyBwdXJwbGVcblx0JyNmZmFiMDAnLCAvLyBhbWJlclxuXHQnI2M1MTE2MicsIC8vIHBpbmtcblx0JyMyOTYyZmYnLCAvLyBibHVlXG5cdCcjZmY2ZDAwJywgLy8gb3JhbmdlXG5cdCcjMDBiZmE1JywgLy8gdGVhbFxuXHQnIzMwNGZmZScsIC8vIGluZGlnb1xuXHQnIzAwYjhkNCcsIC8vIGN5YW5cblx0JyM2MjAwZWEnLCAvLyBkZWVwIHB1cnBsZVxuXHQnI2ZmZDYwMCcsIC8vIHllbGxvd1xuXHQnI2RkMmMwMCcsIC8vIGRlZXAgb3JhbmdlXG5cdCcjNWQ0MDM3JywgLy8gYnJvd25cblx0JyM0NTVhNjQnLCAvLyBibHVlIGdyZXlcblx0JyM2NGRkMTcnLCAvLyBsaWdodCBncmVlblxuXHQnI2FlZWEwMCcsIC8vIGxpbWVcblxuXHQnIzAwOTFlYScsIC8vIGxpZ2h0IGJsdWVcblx0JyNkNTAwMDAnLCAvLyByZWRcblx0JyMwMGM4NTMnLCAvLyBncmVlblxuXHQnI2FhMDBmZicsIC8vIHB1cnBsZVxuXHQnI2ZmYWIwMCcsIC8vIGFtYmVyXG5cdCcjYzUxMTYyJywgLy8gcGlua1xuXHQnIzI5NjJmZicsIC8vIGJsdWVcblx0JyNmZjZkMDAnLCAvLyBvcmFuZ2Vcblx0JyMwMGJmYTUnLCAvLyB0ZWFsXG5cdCcjMzA0ZmZlJywgLy8gaW5kaWdvXG5cdCcjMDBiOGQ0JywgLy8gY3lhblxuXHQnIzYyMDBlYScsIC8vIGRlZXAgcHVycGxlXG5cdCcjZmZkNjAwJywgLy8geWVsbG93XG5cdCcjZGQyYzAwJywgLy8gZGVlcCBvcmFuZ2Vcblx0JyM1ZDQwMzcnLCAvLyBicm93blxuXHQnIzQ1NWE2NCcsIC8vIGJsdWUgZ3JleVxuXHQnIzY0ZGQxNycsIC8vIGxpZ2h0IGdyZWVuXG5cdCcjYWVlYTAwJywgLy8gbGltZVxuXG5cdCcjMDA5MWVhJywgLy8gbGlnaHQgYmx1ZVxuXHQnI2Q1MDAwMCcsIC8vIHJlZFxuXHQnIzAwYzg1MycsIC8vIGdyZWVuXG5cdCcjYWEwMGZmJywgLy8gcHVycGxlXG5cdCcjZmZhYjAwJywgLy8gYW1iZXJcblx0JyNjNTExNjInLCAvLyBwaW5rXG5cdCcjMjk2MmZmJywgLy8gYmx1ZVxuXHQnI2ZmNmQwMCcsIC8vIG9yYW5nZVxuXHQnIzAwYmZhNScsIC8vIHRlYWxcblx0JyMzMDRmZmUnLCAvLyBpbmRpZ29cblx0JyMwMGI4ZDQnLCAvLyBjeWFuXG5cdCcjNjIwMGVhJywgLy8gZGVlcCBwdXJwbGVcblx0JyNmZmQ2MDAnLCAvLyB5ZWxsb3dcblx0JyNkZDJjMDAnLCAvLyBkZWVwIG9yYW5nZVxuXHQnIzVkNDAzNycsIC8vIGJyb3duXG5cdCcjNDU1YTY0JywgLy8gYmx1ZSBncmV5XG5cdCcjNjRkZDE3JywgLy8gbGlnaHQgZ3JlZW5cblx0JyNhZWVhMDAnLCAvLyBsaW1lXG5cblx0JyMwMDkxZWEnLCAvLyBsaWdodCBibHVlXG5cdCcjZDUwMDAwJywgLy8gcmVkXG5cdCcjMDBjODUzJywgLy8gZ3JlZW5cblx0JyNhYTAwZmYnLCAvLyBwdXJwbGVcblx0JyNmZmFiMDAnLCAvLyBhbWJlclxuXHQnI2M1MTE2MicsIC8vIHBpbmtcblx0JyMyOTYyZmYnLCAvLyBibHVlXG5cdCcjZmY2ZDAwJywgLy8gb3JhbmdlXG5cdCcjMDBiZmE1JywgLy8gdGVhbFxuXHQnIzMwNGZmZScsIC8vIGluZGlnb1xuXHQnIzAwYjhkNCcsIC8vIGN5YW5cblx0JyM2MjAwZWEnLCAvLyBkZWVwIHB1cnBsZVxuXHQnI2ZmZDYwMCcsIC8vIHllbGxvd1xuXHQnI2RkMmMwMCcsIC8vIGRlZXAgb3JhbmdlXG5cdCcjNWQ0MDM3JywgLy8gYnJvd25cblx0JyM0NTVhNjQnLCAvLyBibHVlIGdyZXlcblx0JyM2NGRkMTcnLCAvLyBsaWdodCBncmVlblxuXHQnI2FlZWEwMCcsIC8vIGxpbWVcblxuXHQnIzAwOTFlYScsIC8vIGxpZ2h0IGJsdWVcblx0JyNkNTAwMDAnLCAvLyByZWRcblx0JyMwMGM4NTMnLCAvLyBncmVlblxuXHQnI2FhMDBmZicsIC8vIHB1cnBsZVxuXHQnI2ZmYWIwMCcsIC8vIGFtYmVyXG5cdCcjYzUxMTYyJywgLy8gcGlua1xuXHQnIzI5NjJmZicsIC8vIGJsdWVcblx0JyNmZjZkMDAnLCAvLyBvcmFuZ2Vcblx0JyMwMGJmYTUnLCAvLyB0ZWFsXG5cdCcjMzA0ZmZlJywgLy8gaW5kaWdvXG5cdCcjMDBiOGQ0JywgLy8gY3lhblxuXHQnIzYyMDBlYScsIC8vIGRlZXAgcHVycGxlXG5cdCcjZmZkNjAwJywgLy8geWVsbG93XG5cdCcjZGQyYzAwJywgLy8gZGVlcCBvcmFuZ2Vcblx0JyM1ZDQwMzcnLCAvLyBicm93blxuXHQnIzQ1NWE2NCcsIC8vIGJsdWUgZ3JleVxuXHQnIzY0ZGQxNycsIC8vIGxpZ2h0IGdyZWVuXG5cdCcjYWVlYTAwJywgLy8gbGltZVxuXG5cdCcjMDA5MWVhJywgLy8gbGlnaHQgYmx1ZVxuXHQnI2Q1MDAwMCcsIC8vIHJlZFxuXHQnIzAwYzg1MycsIC8vIGdyZWVuXG5cdCcjYWEwMGZmJywgLy8gcHVycGxlXG5cdCcjZmZhYjAwJywgLy8gYW1iZXJcblx0JyNjNTExNjInLCAvLyBwaW5rXG5cdCcjMjk2MmZmJywgLy8gYmx1ZVxuXHQnI2ZmNmQwMCcsIC8vIG9yYW5nZVxuXHQnIzAwYmZhNScsIC8vIHRlYWxcblx0JyMzMDRmZmUnLCAvLyBpbmRpZ29cblx0JyMwMGI4ZDQnLCAvLyBjeWFuXG5cdCcjNjIwMGVhJywgLy8gZGVlcCBwdXJwbGVcblx0JyNmZmQ2MDAnLCAvLyB5ZWxsb3dcblx0JyNkZDJjMDAnLCAvLyBkZWVwIG9yYW5nZVxuXHQnIzVkNDAzNycsIC8vIGJyb3duXG5cdCcjNDU1YTY0JywgLy8gYmx1ZSBncmV5XG5cdCcjNjRkZDE3JywgLy8gbGlnaHQgZ3JlZW5cblx0JyNhZWVhMDAnLCAvLyBsaW1lXG5cblx0JyMwMDkxZWEnLCAvLyBsaWdodCBibHVlXG5cdCcjZDUwMDAwJywgLy8gcmVkXG5cdCcjMDBjODUzJywgLy8gZ3JlZW5cblx0JyNhYTAwZmYnLCAvLyBwdXJwbGVcblx0JyNmZmFiMDAnLCAvLyBhbWJlclxuXHQnI2M1MTE2MicsIC8vIHBpbmtcblx0JyMyOTYyZmYnLCAvLyBibHVlXG5cdCcjZmY2ZDAwJywgLy8gb3JhbmdlXG5cdCcjMDBiZmE1JywgLy8gdGVhbFxuXHQnIzMwNGZmZScsIC8vIGluZGlnb1xuXHQnIzAwYjhkNCcsIC8vIGN5YW5cblx0JyM2MjAwZWEnLCAvLyBkZWVwIHB1cnBsZVxuXHQnI2ZmZDYwMCcsIC8vIHllbGxvd1xuXHQnI2RkMmMwMCcsIC8vIGRlZXAgb3JhbmdlXG5cdCcjNWQ0MDM3JywgLy8gYnJvd25cblx0JyM0NTVhNjQnLCAvLyBibHVlIGdyZXlcblx0JyM2NGRkMTcnLCAvLyBsaWdodCBncmVlblxuXHQnI2FlZWEwMCcsIC8vIGxpbWVcblxuXHQnIzAwOTFlYScsIC8vIGxpZ2h0IGJsdWVcblx0JyNkNTAwMDAnLCAvLyByZWRcblx0JyMwMGM4NTMnLCAvLyBncmVlblxuXHQnI2FhMDBmZicsIC8vIHB1cnBsZVxuXHQnI2ZmYWIwMCcsIC8vIGFtYmVyXG5cdCcjYzUxMTYyJywgLy8gcGlua1xuXHQnIzI5NjJmZicsIC8vIGJsdWVcblx0JyNmZjZkMDAnLCAvLyBvcmFuZ2Vcblx0JyMwMGJmYTUnLCAvLyB0ZWFsXG5cdCcjMzA0ZmZlJywgLy8gaW5kaWdvXG5cdCcjMDBiOGQ0JywgLy8gY3lhblxuXHQnIzYyMDBlYScsIC8vIGRlZXAgcHVycGxlXG5cdCcjZmZkNjAwJywgLy8geWVsbG93XG5cdCcjZGQyYzAwJywgLy8gZGVlcCBvcmFuZ2Vcblx0JyM1ZDQwMzcnLCAvLyBicm93blxuXHQnIzQ1NWE2NCcsIC8vIGJsdWUgZ3JleVxuXHQnIzY0ZGQxNycsIC8vIGxpZ2h0IGdyZWVuXG5cdCcjYWVlYTAwJywgLy8gbGltZVxuXTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRW5kcG9pbnRDaGFydCBleHRlbmRzIFJlYWN0LkNvbXBvbmVudDxQcm9wcywgU3RhdGU+IHtcblx0ZGF0YTogQ2hhcnRUeXBlcy5DaGFydERhdGE7XG5cdHN5bmM6IG51bWJlcjtcblx0cGVyaW9kOiBudW1iZXI7XG5cdGludGVydmFsOiBudW1iZXI7XG5cdGNoYXJ0OiBDaGFydEpzLkNoYXJ0O1xuXHRjaGFydFJlZjogUmVhY3QuUmVmT2JqZWN0PEhUTUxDYW52YXNFbGVtZW50Pjtcblx0bGFiZWxzOiBDaGFydFR5cGVzLkxhYmVscztcblx0bGFzdERvdWJsZTogbnVtYmVyO1xuXG5cdGNvbnN0cnVjdG9yKHByb3BzOiBhbnksIGNvbnRleHQ6IGFueSkge1xuXHRcdHN1cGVyKHByb3BzLCBjb250ZXh0KTtcblx0XHR0aGlzLnN0YXRlID0ge1xuXHRcdFx0aGlkZGVuOiBmYWxzZSxcblx0XHRcdGRpc2FibGVkOiBmYWxzZSxcblx0XHR9O1xuXHRcdHRoaXMuY2hhcnRSZWYgPSBSZWFjdC5jcmVhdGVSZWYoKTtcblx0fVxuXG5cdHRpY2tzID0gKGF4aXM6IENoYXJ0SnMuU2NhbGUpID0+IHtcblx0XHRsZXQgdGlja3MgPSBheGlzLnRpY2tzO1xuXHRcdGxldCBuZXdUaWNrczogQ2hhcnRKcy5UaWNrW10gPSBbXTtcblx0XHRsZXQgZGF0YXNldCA9IE9iamVjdC52YWx1ZXModGhpcy5kYXRhKVswXTtcblx0XHRsZXQgdGlja01vZCA9IDM2MDAwMDA7IC8vIDEgaG91clxuXHRcdGxldCBsZW4gPSBkYXRhc2V0Lmxlbmd0aDtcblxuXHRcdGlmIChsZW4pIHtcblx0XHRcdGxldCBmaXJzdCA9IGRhdGFzZXRbMF0gYXMgQ2hhcnRKcy5TY2F0dGVyRGF0YVBvaW50O1xuXHRcdFx0bGV0IGxhc3QgPSBkYXRhc2V0W2xlbi0xXSBhcyBDaGFydEpzLlNjYXR0ZXJEYXRhUG9pbnQ7XG5cdFx0XHRsZXQgcmFuZ2UgPSBsYXN0LnggLSBmaXJzdC54O1xuXG5cdFx0XHRpZiAocmFuZ2UgPj0gMjgzMzkyMDAwMCkge1xuXHRcdFx0XHR0aWNrTW9kID0gNjA0ODAwMDAwOyAvLyA3IGRheVxuXHRcdFx0fSBlbHNlIGlmIChyYW5nZSA+PSAxNDUxNTIwMDAwKSB7XG5cdFx0XHRcdHRpY2tNb2QgPSAxNzI4MDAwMDA7IC8vIDIgZGF5XG5cdFx0XHR9IGVsc2UgaWYgKHJhbmdlID49IDYxMTI4MDAwMCkge1xuXHRcdFx0XHR0aWNrTW9kID0gODY0MDAwMDA7IC8vIDEgZGF5XG5cdFx0XHR9IGVsc2UgaWYgKHJhbmdlID49IDI3NjQ4MDAwMCkge1xuXHRcdFx0XHR0aWNrTW9kID0gNDMyMDAwMDA7IC8vIDEyIGhvdXJzXG5cdFx0XHR9IGVsc2UgaWYgKHJhbmdlID49IDg5MjgwMDAwKSB7XG5cdFx0XHRcdHRpY2tNb2QgPSAyMTYwMDAwMDsgLy8gNiBob3Vyc1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0dGlja01vZCA9IDM2MDAwMDA7IC8vIDEgaG91cnNcblx0XHRcdH1cblx0XHR9XG5cblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IHRpY2tzLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRsZXQgdGljayA9IHRpY2tzW2ldO1xuXG5cdFx0XHRpZiAodGljay52YWx1ZSAlIHRpY2tNb2QgPT09IDApIHtcblx0XHRcdFx0bmV3VGlja3MucHVzaCh0aWNrKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRheGlzLnRpY2tzID0gbmV3VGlja3M7XG5cdH1cblxuXHRjb25maWcgPSAoKTogQ2hhcnRKcy5DaGFydENvbmZpZ3VyYXRpb24gPT4ge1xuXHRcdHRoaXMubGFiZWxzID0gQ2hhcnRUeXBlcy5nZXRDaGFydExhYmVscyh0aGlzLnByb3BzLnJlc291cmNlLCB0aGlzLmRhdGEpO1xuXHRcdGxldCBzZWxmID0gdGhpcztcblxuXHRcdGxldCBjb25maWcgPSB7XG5cdFx0XHR0eXBlOiAnbGluZScsXG5cdFx0XHRvcHRpb25zOiB7XG5cdFx0XHRcdHNjYWxlczoge1xuXHRcdFx0XHRcdHg6IHtcblx0XHRcdFx0XHRcdHR5cGU6ICd0aW1lJyxcblx0XHRcdFx0XHRcdHRpdGxlOiB7XG5cdFx0XHRcdFx0XHRcdGRpc3BsYXk6IHRydWUsXG5cdFx0XHRcdFx0XHRcdHRleHQ6ICdUaW1lJyxcblx0XHRcdFx0XHRcdFx0Y29sb3I6IFRoZW1lLmNoYXJ0Q29sb3IxKCksXG5cdFx0XHRcdFx0XHRcdHBhZGRpbmc6IDAsXG5cdFx0XHRcdFx0XHRcdGZvbnQ6IHtcblx0XHRcdFx0XHRcdFx0XHR3ZWlnaHQ6ICdib2xkJyxcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR0aW1lOiB7XG5cdFx0XHRcdFx0XHRcdHVuaXQ6ICdtaW51dGUnLFxuXHRcdFx0XHRcdFx0XHRkaXNwbGF5Rm9ybWF0czoge1xuXHRcdFx0XHRcdFx0XHRcdG1pbnV0ZTogJ0hIOm1tJyxcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR0aWNrczoge1xuXHRcdFx0XHRcdFx0XHRzdGVwU2l6ZTogMSxcblx0XHRcdFx0XHRcdFx0Y291bnQ6IDEwMCxcblx0XHRcdFx0XHRcdFx0bWF4VGlja3NMaW1pdDogMTAwLFxuXHRcdFx0XHRcdFx0XHRjb2xvcjogVGhlbWUuY2hhcnRDb2xvcjEoKSxcblx0XHRcdFx0XHRcdFx0c291cmNlOiAnZGF0YScsXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0Z3JpZDoge1xuXHRcdFx0XHRcdFx0XHRjb2xvcjogVGhlbWUuY2hhcnRDb2xvcjIoKSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRiZWZvcmVUaWNrVG9MYWJlbENvbnZlcnNpb246IHRoaXMudGlja3MsXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR5OiB7XG5cdFx0XHRcdFx0XHRtaW46IHRoaXMubGFiZWxzLnJlc291cmNlX21pbixcblx0XHRcdFx0XHRcdG1heDogdGhpcy5sYWJlbHMucmVzb3VyY2VfbWF4LFxuXHRcdFx0XHRcdFx0b2Zmc2V0OiBmYWxzZSxcblx0XHRcdFx0XHRcdGJlZ2luQXRaZXJvOiB0cnVlLFxuXHRcdFx0XHRcdFx0dGl0bGU6IHtcblx0XHRcdFx0XHRcdFx0ZGlzcGxheTogdHJ1ZSxcblx0XHRcdFx0XHRcdFx0dGV4dDogdGhpcy5sYWJlbHMucmVzb3VyY2VfbGFiZWwsXG5cdFx0XHRcdFx0XHRcdGNvbG9yOiBUaGVtZS5jaGFydENvbG9yMSgpLFxuXHRcdFx0XHRcdFx0XHRwYWRkaW5nOiAwLFxuXHRcdFx0XHRcdFx0XHRmb250OiB7XG5cdFx0XHRcdFx0XHRcdFx0d2VpZ2h0OiAnYm9sZCcsXG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0dGlja3M6IHtcblx0XHRcdFx0XHRcdFx0Y29sb3I6IFRoZW1lLmNoYXJ0Q29sb3IxKCksXG5cdFx0XHRcdFx0XHRcdGNhbGxiYWNrOiAodmFsOiBudW1iZXIpOiBudW1iZXIgfCBzdHJpbmcgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdHN3aXRjaCAodGhpcy5sYWJlbHMucmVzb3VyY2VfdHlwZSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0Y2FzZSAnYnl0ZXMnOlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gTWlzY1V0aWxzLmZvcm1hdEJ5dGVzKHZhbCwgMCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRjYXNlICdtaWxsaXNlY29uZHMnOlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gTWlzY1V0aWxzLmZvcm1hdE1zKHZhbCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gdmFsO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdGdyaWQ6IHtcblx0XHRcdFx0XHRcdFx0Y29sb3I6IFRoZW1lLmNoYXJ0Q29sb3IyKCksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHBsdWdpbnM6IHtcblx0XHRcdFx0XHR0aXRsZToge1xuXHRcdFx0XHRcdFx0ZGlzcGxheTogdHJ1ZSxcblx0XHRcdFx0XHRcdHRleHQ6IHRoaXMubGFiZWxzLnRpdGxlLFxuXHRcdFx0XHRcdFx0Y29sb3I6IFRoZW1lLmNoYXJ0Q29sb3IxKCksXG5cdFx0XHRcdFx0XHRwYWRkaW5nOiAzLFxuXHRcdFx0XHRcdFx0Zm9udDoge1xuXHRcdFx0XHRcdFx0XHRzaXplOiAxMyxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR0b29sdGlwOiB7XG5cdFx0XHRcdFx0XHRlbmFibGVkOiBmYWxzZSxcblx0XHRcdFx0XHRcdG1vZGU6ICdpbmRleCcsXG5cdFx0XHRcdFx0XHRpbnRlcnNlY3Q6IGZhbHNlLFxuXHRcdFx0XHRcdFx0YmFja2dyb3VuZENvbG9yOiAncmdiYSgwLCAwLCAwLCAwLjcpJyxcblx0XHRcdFx0XHRcdGV4dGVybmFsOiAoY29udGV4dCk6IHZvaWQgPT4ge1xuXHRcdFx0XHRcdFx0XHRsZXQgdG9vbEVsbSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjaGFydGpzLXRvb2x0aXAnKTtcblxuXHRcdFx0XHRcdFx0XHRpZiAoIXRvb2xFbG0pIHtcblx0XHRcdFx0XHRcdFx0XHR0b29sRWxtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG5cdFx0XHRcdFx0XHRcdFx0dG9vbEVsbS5pZCA9ICdjaGFydGpzLXRvb2x0aXAnO1xuXHRcdFx0XHRcdFx0XHRcdHRvb2xFbG0uY2xhc3NOYW1lID0gJ2JwMy1jYXJkJztcblx0XHRcdFx0XHRcdFx0XHR0b29sRWxtLmlubmVySFRNTCA9ICc8dGFibGUgY2xhc3M9XCJicDMtaHRtbC10YWJsZSAnICtcblx0XHRcdFx0XHRcdFx0XHRcdCdicDMtaHRtbC10YWJsZS1ib3JkZXJlZCBicDMtaHRtbC10YWJsZS1zdHJpcGVkICcgK1xuXHRcdFx0XHRcdFx0XHRcdFx0J2JwMy1zbWFsbFwiPjwvdGFibGU+Jztcblx0XHRcdFx0XHRcdFx0XHRkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRvb2xFbG0pO1xuXHRcdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdFx0Y29uc3QgbW9kZWwgPSBjb250ZXh0LnRvb2x0aXA7XG5cdFx0XHRcdFx0XHRcdGlmIChtb2RlbC5vcGFjaXR5ID09PSAwKSB7XG5cdFx0XHRcdFx0XHRcdFx0dG9vbEVsbS5zdHlsZS5vcGFjaXR5ID0gJzAnO1xuXHRcdFx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRcdGZ1bmN0aW9uIGdldEJvZHkoYm9keUl0ZW06IGFueSkge1xuXHRcdFx0XHRcdFx0XHRcdHJldHVybiBib2R5SXRlbS5saW5lcztcblx0XHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRcdGxldCBib3hSZWN0ID0gdGhpcy5wcm9wcy5nZXRCb3hSZWN0KClcblx0XHRcdFx0XHRcdFx0bGV0IGJveEJvdHRvbSA9IGJveFJlY3QuYm90dG9tICsgd2luZG93LnBhZ2VZT2Zmc2V0XG5cdFx0XHRcdFx0XHRcdGxldCBib3hUb3AgPSBib3hSZWN0LnRvcCArIHdpbmRvdy5wYWdlWU9mZnNldCArIDEzMFxuXG5cdFx0XHRcdFx0XHRcdGxldCByb3dDb3VudCA9IDA7XG5cdFx0XHRcdFx0XHRcdGxldCBoZWlnaHQgPSAwO1xuXHRcdFx0XHRcdFx0XHRpZiAobW9kZWwuYm9keSkge1xuXHRcdFx0XHRcdFx0XHRcdGNvbnN0IHRpdGxlTGluZXMgPSBtb2RlbC50aXRsZSB8fCBbXTtcblx0XHRcdFx0XHRcdFx0XHRjb25zdCBib2R5TGluZXMgPSBtb2RlbC5ib2R5Lm1hcChnZXRCb2R5KTtcblxuXHRcdFx0XHRcdFx0XHRcdGxldCBpbm5lckh0bWwgPSAnPHRoZWFkPic7XG5cblx0XHRcdFx0XHRcdFx0XHR0aXRsZUxpbmVzLmZvckVhY2goZnVuY3Rpb24odGl0bGUpIHtcblx0XHRcdFx0XHRcdFx0XHRcdGlubmVySHRtbCArPSAnPHRyPjx0aCBjb2xzcGFuPVwiMlwiPicgKyB0aXRsZSArICc8L3RoPjwvdHI+Jztcblx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0XHRpbm5lckh0bWwgKz0gJzwvdGhlYWQ+PHRib2R5Pic7XG5cblx0XHRcdFx0XHRcdFx0XHRsZXQgdGFibGVSb3dzOiBzdHJpbmdbXSA9IFtdO1xuXG5cdFx0XHRcdFx0XHRcdFx0Ym9keUxpbmVzLmZvckVhY2goZnVuY3Rpb24oYm9keSwgaSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKCFib2R5IHx8ICFib2R5Lmxlbmd0aCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm5cblx0XHRcdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0XHRcdFx0bGV0IGl0ZW1zID0gYm9keVswXS5zcGxpdCgnOycpXG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAoaXRlbXMubGVuZ3RoIDwgMikge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm5cblx0XHRcdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0XHRcdFx0Y29uc3QgY29sb3JzID0gbW9kZWwubGFiZWxDb2xvcnNbaV07XG5cdFx0XHRcdFx0XHRcdFx0XHRsZXQgc3R5bGUgPSAnYmFja2dyb3VuZDonICsgY29sb3JzLmJhY2tncm91bmRDb2xvcjtcblx0XHRcdFx0XHRcdFx0XHRcdHN0eWxlICs9ICc7IGJvcmRlci1jb2xvcjonICsgY29sb3JzLmJvcmRlckNvbG9yO1xuXHRcdFx0XHRcdFx0XHRcdFx0Y29uc3Qgc3BhbiA9ICc8c3BhbiBzdHlsZT1cIicgKyBzdHlsZSArICdcIj48L3NwYW4+Jztcblx0XHRcdFx0XHRcdFx0XHRcdHRhYmxlUm93cy5wdXNoKCc8dGQgY2xhc3M9XCJsaW5lLWJveFwiPicgKyBzcGFuICsgaXRlbXNbMF0gK1xuXHRcdFx0XHRcdFx0XHRcdFx0XHQnPC90ZD48dGQ+JyArIGl0ZW1zWzFdICsgJzwvdGQ+JylcblxuXHRcdFx0XHRcdFx0XHRcdFx0cm93Q291bnQgKz0gMVxuXHRcdFx0XHRcdFx0XHRcdH0pO1xuXG5cdFx0XHRcdFx0XHRcdFx0aGVpZ2h0ID0gMjYuMzMgKyAocm93Q291bnQgKiAxNy4zMyk7XG5cblx0XHRcdFx0XHRcdFx0XHRsZXQgZG91YmxlID0gZmFsc2U7XG5cdFx0XHRcdFx0XHRcdFx0bGV0IGN1clJvdyA9ICcnO1xuXHRcdFx0XHRcdFx0XHRcdGxldCBjdXJUaW1lID0gTWF0aC5yb3VuZChEYXRlLm5vdygpIC8gMTAwMCk7XG5cblx0XHRcdFx0XHRcdFx0XHRpZiAoY3VyVGltZSAtIHRoaXMubGFzdERvdWJsZSA8IDYwICYmXG5cdFx0XHRcdFx0XHRcdFx0XHRoZWlnaHQgPiAoYm94UmVjdC5oZWlnaHQgLSAyODApKSB7XG5cblx0XHRcdFx0XHRcdFx0XHRcdGRvdWJsZSA9IHRydWU7XG5cdFx0XHRcdFx0XHRcdFx0XHR0aGlzLmxhc3REb3VibGUgPSBjdXJUaW1lO1xuXHRcdFx0XHRcdFx0XHRcdH0gZWxzZSBpZiAoaGVpZ2h0ID4gKGJveFJlY3QuaGVpZ2h0IC0gMTMwKSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0ZG91YmxlID0gdHJ1ZTtcblx0XHRcdFx0XHRcdFx0XHRcdHRoaXMubGFzdERvdWJsZSA9IGN1clRpbWU7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRcdFx0cm93Q291bnQgPSAwXG5cdFx0XHRcdFx0XHRcdFx0dGFibGVSb3dzLmZvckVhY2goZnVuY3Rpb24oY29sdW1ucywgaSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKGRvdWJsZSAmJiAhY3VyUm93KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGN1clJvdyA9IGNvbHVtbnNcblx0XHRcdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlubmVySHRtbCArPSAnPHRyPicgKyBjdXJSb3cgKyBjb2x1bW5zICsgJzwvdHI+Jztcblx0XHRcdFx0XHRcdFx0XHRcdFx0Y3VyUm93ID0gJyc7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHJvd0NvdW50ICs9IDFcblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHR9KVxuXG5cdFx0XHRcdFx0XHRcdFx0aWYgKGN1clJvdykge1xuXHRcdFx0XHRcdFx0XHRcdFx0aW5uZXJIdG1sICs9ICc8dHI+JyArIGN1clJvdyArICc8L3RyPic7XG5cdFx0XHRcdFx0XHRcdFx0XHRjdXJSb3cgPSAnJztcblx0XHRcdFx0XHRcdFx0XHRcdHJvd0NvdW50ICs9IDFcblx0XHRcdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdFx0XHRoZWlnaHQgPSAyNi4zMyArIChyb3dDb3VudCAqIDE3LjMzKTtcblxuXHRcdFx0XHRcdFx0XHRcdGlubmVySHRtbCArPSAnPC90Ym9keT4nO1xuXG5cdFx0XHRcdFx0XHRcdFx0bGV0IHRhYmxlUm9vdCA9IHRvb2xFbG0ucXVlcnlTZWxlY3RvcigndGFibGUnKTtcblx0XHRcdFx0XHRcdFx0XHR0YWJsZVJvb3QuaW5uZXJIVE1MID0gaW5uZXJIdG1sO1xuXHRcdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdFx0dG9vbEVsbSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjaGFydGpzLXRvb2x0aXAnKTtcblx0XHRcdFx0XHRcdFx0Y29uc3QgcG9zaXRpb24gPSBjb250ZXh0LmNoYXJ0LmNhbnZhcy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuXHRcdFx0XHRcdFx0XHR0b29sRWxtLnN0eWxlLm9wYWNpdHkgPSAnMSc7XG5cdFx0XHRcdFx0XHRcdHRvb2xFbG0uc3R5bGUucG9zaXRpb24gPSAnYWJzb2x1dGUnO1xuXG5cdFx0XHRcdFx0XHRcdGlmICh0aGlzLnByb3BzLmxlZnQpIHtcblx0XHRcdFx0XHRcdFx0XHR0b29sRWxtLnN0eWxlLnJpZ2h0ID0gXCJcIlxuXHRcdFx0XHRcdFx0XHRcdHRvb2xFbG0uc3R5bGUubGVmdCA9IChkb2N1bWVudC5ib2R5Lm9mZnNldFdpZHRoIC1cblx0XHRcdFx0XHRcdFx0XHRcdHBvc2l0aW9uLnJpZ2h0ICsgd2luZG93LnBhZ2VYT2Zmc2V0IC0gMTgpICsgJ3B4Jztcblx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHR0b29sRWxtLnN0eWxlLmxlZnQgPSBcIlwiXG5cdFx0XHRcdFx0XHRcdFx0dG9vbEVsbS5zdHlsZS5yaWdodCA9IChkb2N1bWVudC5ib2R5Lm9mZnNldFdpZHRoIC1cblx0XHRcdFx0XHRcdFx0XHRcdHBvc2l0aW9uLmxlZnQgKyB3aW5kb3cucGFnZVhPZmZzZXQgKyAzKSArICdweCc7XG5cdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0XHRsZXQgdG9vbFRvcCA9IE1hdGgucm91bmQocG9zaXRpb24udG9wICsgKHBvc2l0aW9uLmhlaWdodCAvIDIpIC1cblx0XHRcdFx0XHRcdFx0XHQoaGVpZ2h0IC8gMikgKyB3aW5kb3cucGFnZVlPZmZzZXQpO1xuXG5cdFx0XHRcdFx0XHRcdGlmIChoZWlnaHQgPiAoYm94UmVjdC5oZWlnaHQgLSAxMzApKSB7XG5cdFx0XHRcdFx0XHRcdFx0dG9vbFRvcCA9IE1hdGgucm91bmQoYm94UmVjdC50b3AgKyAoYm94UmVjdC5oZWlnaHQgLyAyKSAtXG5cdFx0XHRcdFx0XHRcdFx0XHQoaGVpZ2h0IC8gMikgKyB3aW5kb3cucGFnZVlPZmZzZXQpO1xuXHRcdFx0XHRcdFx0XHR9IGVsc2UgaWYgKHRvb2xUb3AgPCBib3hUb3ApIHtcblx0XHRcdFx0XHRcdFx0XHR0b29sVG9wID0gYm94VG9wXG5cdFx0XHRcdFx0XHRcdH0gZWxzZSBpZiAoKHRvb2xUb3AgKyBoZWlnaHQpID4gYm94Qm90dG9tKSB7XG5cdFx0XHRcdFx0XHRcdFx0Ly90b29sVG9wIC09ICh0b29sVG9wICsgaGVpZ2h0KSAtIGJveEJvdHRvbVxuXHRcdFx0XHRcdFx0XHRcdHRvb2xUb3AgPSBib3hCb3R0b20gLSBoZWlnaHRcblx0XHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRcdHRvb2xFbG0uc3R5bGUudG9wID0gdG9vbFRvcCArICdweCc7XG5cdFx0XHRcdFx0XHRcdHRvb2xFbG0uc3R5bGUucG9pbnRlckV2ZW50cyA9ICdub25lJztcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRjYWxsYmFja3M6IHtcblx0XHRcdFx0XHRcdFx0bGFiZWwoaXRlbSk6IHN0cmluZyB7XG5cdFx0XHRcdFx0XHRcdFx0bGV0IHJhdyA9IGl0ZW0ucmF3IGFzIGFueTtcblxuXHRcdFx0XHRcdFx0XHRcdGlmIChzZWxmLmxhYmVscy5oaWRlX3plcm8gJiYgIXJhdy55KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gJydcblx0XHRcdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdFx0XHRsZXQgdmFsID0gJyc7XG5cdFx0XHRcdFx0XHRcdFx0aWYgKHJhdykge1xuXHRcdFx0XHRcdFx0XHRcdFx0c3dpdGNoIChzZWxmLmxhYmVscy5yZXNvdXJjZV90eXBlKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGNhc2UgJ2J5dGVzJzpcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2YWwgPSBNaXNjVXRpbHMuZm9ybWF0Qnl0ZXMocmF3LnksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRzZWxmLmxhYmVscy5yZXNvdXJjZV9maXhlZCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGNhc2UgJ21pbGxpc2Vjb25kcyc6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFsID0gTWlzY1V0aWxzLmZvcm1hdE1zKHJhdy55KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdFx0XHRcdFx0Y2FzZSAnZmxvYXQnOlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhbCA9IHJhdy55LnRvRml4ZWQoc2VsZi5sYWJlbHMucmVzb3VyY2VfZml4ZWQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhbCA9IHJhdy55O1xuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0XHRcdGxldCBkYXRhc2V0ID0gaXRlbS5kYXRhc2V0IGFzIGFueTtcblx0XHRcdFx0XHRcdFx0XHRpZiAoc2VsZi5sYWJlbHMucmVzb3VyY2VfZml4ZWQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiBkYXRhc2V0LmxhYmVsICsgJzsnICtcblx0XHRcdFx0XHRcdFx0XHRcdFx0dmFsICsgc2VsZi5sYWJlbHMucmVzb3VyY2Vfc3VmZml4O1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gZGF0YXNldC5sYWJlbCArICc7JyArIHZhbCArXG5cdFx0XHRcdFx0XHRcdFx0XHRzZWxmLmxhYmVscy5yZXNvdXJjZV9zdWZmaXg7XG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdH0sXG5cdFx0XHR9LFxuXHRcdFx0ZGF0YToge1xuXHRcdFx0XHRkYXRhc2V0czogW10sXG5cdFx0XHR9LFxuXHRcdH0gYXMgQ2hhcnRKcy5DaGFydENvbmZpZ3VyYXRpb247XG5cblx0XHRsZXQgZGF0YSA9IENoYXJ0VHlwZXMuZ2V0Q2hhcnREYXRhKHRoaXMucHJvcHMucmVzb3VyY2UsIHRoaXMuZGF0YSk7XG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmxhYmVscy5kYXRhc2V0cy5sZW5ndGg7IGkrKykge1xuXHRcdFx0bGV0IGRhdGFzZXRMYWJlbHMgPSB0aGlzLmxhYmVscy5kYXRhc2V0c1tpXTtcblxuXHRcdFx0Y29uZmlnLmRhdGEuZGF0YXNldHMucHVzaCh7XG5cdFx0XHRcdGxhYmVsOiBkYXRhc2V0TGFiZWxzLmxhYmVsLFxuXHRcdFx0XHRkYXRhOiBkYXRhW2ldLFxuXHRcdFx0XHRmaWxsOiAnb3JpZ2luJyxcblx0XHRcdFx0cG9pbnRSYWRpdXM6IDAsXG5cdFx0XHRcdGJhY2tncm91bmRDb2xvcjogY29sb3JzW2ldICsgJzE1Jyxcblx0XHRcdFx0Ym9yZGVyQ29sb3I6IGNvbG9yc1tpXSxcblx0XHRcdFx0Ym9yZGVyV2lkdGg6IDIsXG5cdFx0XHR9IGFzIENoYXJ0SnMuQ2hhcnREYXRhc2V0KTtcblx0XHR9XG5cblx0XHRyZXR1cm4gY29uZmlnO1xuXHR9XG5cblx0dXBkYXRlKHN5bmM6IG51bWJlciwgcGVyaW9kOiBudW1iZXIsIGludGVydmFsOiBudW1iZXIpOiB2b2lkIHtcblx0XHR0aGlzLnN5bmMgPSBzeW5jO1xuXHRcdHRoaXMucGVyaW9kID0gcGVyaW9kO1xuXHRcdHRoaXMuaW50ZXJ2YWwgPSBpbnRlcnZhbDtcblxuXHRcdGxldCBsb2FkaW5nID0gdHJ1ZTtcblx0XHR0aGlzLnByb3BzLm9uTG9hZGluZygpO1xuXG5cdFx0bGV0IGNoYXJ0UmVzcDogUHJvbWlzZTxhbnk+XG5cdFx0aWYgKHRoaXMucHJvcHMuY2hlY2spIHtcblx0XHRcdGNoYXJ0UmVzcCA9IENoZWNrQWN0aW9ucy5jaGFydChcblx0XHRcdFx0dGhpcy5wcm9wcy5jaGVjayxcblx0XHRcdFx0dGhpcy5wcm9wcy5yZXNvdXJjZSxcblx0XHRcdFx0dGhpcy5wZXJpb2QsXG5cdFx0XHRcdHRoaXMuaW50ZXJ2YWwsXG5cdFx0XHQpXG5cdFx0fSBlbHNlIHtcblx0XHRcdGNoYXJ0UmVzcCA9IEVuZHBvaW50QWN0aW9ucy5jaGFydChcblx0XHRcdFx0dGhpcy5wcm9wcy5lbmRwb2ludCxcblx0XHRcdFx0dGhpcy5wcm9wcy5yZXNvdXJjZSxcblx0XHRcdFx0dGhpcy5wZXJpb2QsXG5cdFx0XHRcdHRoaXMuaW50ZXJ2YWwsXG5cdFx0XHQpXG5cdFx0fVxuXG5cdFx0Y2hhcnRSZXNwLnRoZW4oKGRhdGE6IENoYXJ0VHlwZXMuRW5kcG9pbnREYXRhKTogdm9pZCA9PiB7XG5cdFx0XHRpZiAobG9hZGluZykge1xuXHRcdFx0XHRsb2FkaW5nID0gZmFsc2U7XG5cdFx0XHRcdHRoaXMucHJvcHMub25Mb2FkZWQoKTtcblx0XHRcdH1cblxuXHRcdFx0aWYgKGRhdGEgJiYgZGF0YS5oYXNfZGF0YSAmJiBkYXRhLmRhdGEpIHtcblx0XHRcdFx0aWYgKHRoaXMuc3RhdGUuaGlkZGVuKSB7XG5cdFx0XHRcdFx0dGhpcy5zZXRTdGF0ZSh7XG5cdFx0XHRcdFx0XHQuLi50aGlzLnN0YXRlLFxuXHRcdFx0XHRcdFx0aGlkZGVuOiBmYWxzZSxcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdHRoaXMuZGF0YSA9IGRhdGEuZGF0YTtcblx0XHRcdFx0aWYgKHRoaXMuY2hhcnQpIHtcblx0XHRcdFx0XHR0aGlzLnVwZGF0ZUNoYXJ0KCk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0dGhpcy5jaGFydCA9IG5ldyBDaGFydEpzLkNoYXJ0KFxuXHRcdFx0XHRcdFx0dGhpcy5jaGFydFJlZi5jdXJyZW50LFxuXHRcdFx0XHRcdFx0dGhpcy5jb25maWcoKSxcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRpZiAoIXRoaXMuc3RhdGUuaGlkZGVuKSB7XG5cdFx0XHRcdFx0dGhpcy5zZXRTdGF0ZSh7XG5cdFx0XHRcdFx0XHQuLi50aGlzLnN0YXRlLFxuXHRcdFx0XHRcdFx0aGlkZGVuOiB0cnVlLFxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSkuY2F0Y2goKCk6IHZvaWQgPT4ge1xuXHRcdFx0aWYgKGxvYWRpbmcpIHtcblx0XHRcdFx0bG9hZGluZyA9IGZhbHNlO1xuXHRcdFx0XHR0aGlzLnByb3BzLm9uTG9hZGVkKCk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH1cblxuXHR1cGRhdGVDaGFydCgpOiB2b2lkIHtcblx0XHR0cnkge1xuXHRcdFx0dGhpcy5sYWJlbHMgPSBDaGFydFR5cGVzLmdldENoYXJ0TGFiZWxzKHRoaXMucHJvcHMucmVzb3VyY2UsIHRoaXMuZGF0YSk7XG5cdFx0XHRsZXQgZGF0YSA9IENoYXJ0VHlwZXMuZ2V0Q2hhcnREYXRhKHRoaXMucHJvcHMucmVzb3VyY2UsIHRoaXMuZGF0YSk7XG5cblx0XHRcdGxldCBkYXRhTGVuID0gZGF0YS5sZW5ndGg7XG5cdFx0XHRsZXQgZGF0YXNldHNMZW4gPSB0aGlzLmNoYXJ0LmRhdGEuZGF0YXNldHMubGVuZ3RoO1xuXG5cdFx0XHRmb3IgKGxldCBpID0gMDsgaSA8IE1hdGgubWluKGRhdGFMZW4sIGRhdGFzZXRzTGVuKTsgaSsrKSB7XG5cdFx0XHRcdHRoaXMuY2hhcnQuZGF0YS5kYXRhc2V0c1tpXS5sYWJlbCA9IHRoaXMubGFiZWxzLmRhdGFzZXRzW2ldLmxhYmVsO1xuXHRcdFx0XHR0aGlzLmNoYXJ0LmRhdGEuZGF0YXNldHNbaV0uZGF0YSA9IGRhdGFbaV0gYXMgYW55O1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoZGF0YUxlbiA+IGRhdGFzZXRzTGVuKSB7XG5cdFx0XHRcdGZvciAobGV0IGkgPSBkYXRhc2V0c0xlbjsgaSA8IGRhdGFMZW47IGkrKykge1xuXHRcdFx0XHRcdHRoaXMuY2hhcnQuZGF0YS5kYXRhc2V0cy5wdXNoKHtcblx0XHRcdFx0XHRcdGxhYmVsOiB0aGlzLmxhYmVscy5kYXRhc2V0c1tpXS5sYWJlbCxcblx0XHRcdFx0XHRcdGRhdGE6IGRhdGFbaV0sXG5cdFx0XHRcdFx0XHRmaWxsOiAnb3JpZ2luJyxcblx0XHRcdFx0XHRcdHBvaW50UmFkaXVzOiAwLFxuXHRcdFx0XHRcdFx0YmFja2dyb3VuZENvbG9yOiBjb2xvcnNbaV0gKyAnMTUnLFxuXHRcdFx0XHRcdFx0Ym9yZGVyQ29sb3I6IGNvbG9yc1tpXSxcblx0XHRcdFx0XHRcdGJvcmRlcldpZHRoOiAyLFxuXHRcdFx0XHRcdH0gYXMgQ2hhcnRKcy5DaGFydERhdGFzZXQpO1xuXHRcdFx0XHR9XG5cdFx0XHR9IGVsc2UgaWYgKGRhdGFzZXRzTGVuID4gZGF0YUxlbikge1xuXHRcdFx0XHRmb3IgKGxldCBpID0gMDsgaSA8IGRhdGFzZXRzTGVuIC0gZGF0YUxlbjsgaSsrKSB7XG5cdFx0XHRcdFx0dGhpcy5jaGFydC5kYXRhLmRhdGFzZXRzLnBvcCgpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdHRoaXMuY2hhcnQudXBkYXRlKCk7XG5cdFx0fSBjYXRjaChlcnJvcikge1xuXHRcdFx0Y29uc29sZS5lcnJvcihlcnJvcik7XG5cdFx0fVxuXHR9XG5cblx0Y29tcG9uZW50RGlkTW91bnQoKTogdm9pZCB7XG5cdFx0dGhpcy5zeW5jID0gdGhpcy5wcm9wcy5zeW5jO1xuXHRcdHRoaXMucGVyaW9kID0gdGhpcy5wcm9wcy5wZXJpb2Q7XG5cdFx0dGhpcy5pbnRlcnZhbCA9IHRoaXMucHJvcHMuaW50ZXJ2YWw7XG5cblx0XHRsZXQgbG9hZGluZyA9IHRydWU7XG5cdFx0dGhpcy5wcm9wcy5vbkxvYWRpbmcoKTtcblxuXHRcdGxldCBjaGFydFJlc3A6IFByb21pc2U8YW55PlxuXHRcdGlmICh0aGlzLnByb3BzLmNoZWNrKSB7XG5cdFx0XHRjaGFydFJlc3AgPSBDaGVja0FjdGlvbnMuY2hhcnQoXG5cdFx0XHRcdHRoaXMucHJvcHMuY2hlY2ssXG5cdFx0XHRcdHRoaXMucHJvcHMucmVzb3VyY2UsXG5cdFx0XHRcdHRoaXMucGVyaW9kLFxuXHRcdFx0XHR0aGlzLmludGVydmFsLFxuXHRcdFx0KVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRjaGFydFJlc3AgPSBFbmRwb2ludEFjdGlvbnMuY2hhcnQoXG5cdFx0XHRcdHRoaXMucHJvcHMuZW5kcG9pbnQsXG5cdFx0XHRcdHRoaXMucHJvcHMucmVzb3VyY2UsXG5cdFx0XHRcdHRoaXMucGVyaW9kLFxuXHRcdFx0XHR0aGlzLmludGVydmFsLFxuXHRcdFx0KVxuXHRcdH1cblxuXHRcdGNoYXJ0UmVzcC50aGVuKChkYXRhOiBDaGFydFR5cGVzLkVuZHBvaW50RGF0YSk6IHZvaWQgPT4ge1xuXHRcdFx0aWYgKGxvYWRpbmcpIHtcblx0XHRcdFx0bG9hZGluZyA9IGZhbHNlO1xuXHRcdFx0XHR0aGlzLnByb3BzLm9uTG9hZGVkKCk7XG5cdFx0XHR9XG5cblx0XHRcdGlmIChkYXRhICYmIGRhdGEuaGFzX2RhdGEgJiYgZGF0YS5kYXRhKSB7XG5cdFx0XHRcdGlmICh0aGlzLnN0YXRlLmhpZGRlbikge1xuXHRcdFx0XHRcdHRoaXMuc2V0U3RhdGUoe1xuXHRcdFx0XHRcdFx0Li4udGhpcy5zdGF0ZSxcblx0XHRcdFx0XHRcdGhpZGRlbjogZmFsc2UsXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHR0aGlzLmRhdGEgPSBkYXRhLmRhdGE7XG5cdFx0XHRcdHRoaXMuY2hhcnQgPSBuZXcgQ2hhcnRKcy5DaGFydChcblx0XHRcdFx0XHR0aGlzLmNoYXJ0UmVmLmN1cnJlbnQsXG5cdFx0XHRcdFx0dGhpcy5jb25maWcoKSxcblx0XHRcdFx0KTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGlmICghdGhpcy5zdGF0ZS5oaWRkZW4pIHtcblx0XHRcdFx0XHR0aGlzLnNldFN0YXRlKHtcblx0XHRcdFx0XHRcdC4uLnRoaXMuc3RhdGUsXG5cdFx0XHRcdFx0XHRoaWRkZW46IHRydWUsXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9KS5jYXRjaCgoKTogdm9pZCA9PiB7XG5cdFx0XHRpZiAobG9hZGluZykge1xuXHRcdFx0XHRsb2FkaW5nID0gZmFsc2U7XG5cdFx0XHRcdHRoaXMucHJvcHMub25Mb2FkZWQoKTtcblx0XHRcdH1cblx0XHR9KTtcblx0fVxuXG5cdGNvbXBvbmVudFdpbGxVbm1vdW50KCk6IHZvaWQge1xuXHRcdGlmICh0aGlzLmNoYXJ0KSB7XG5cdFx0XHR0aGlzLmNoYXJ0LmRlc3Ryb3koKTtcblx0XHR9XG5cdH1cblxuXHRyZW5kZXIoKTogSlNYLkVsZW1lbnQge1xuXHRcdGlmICgodGhpcy5zeW5jICE9PSB1bmRlZmluZWQgJiYgdGhpcy5wZXJpb2QgIT09IHVuZGVmaW5lZCAmJlxuXHRcdFx0XHR0aGlzLmludGVydmFsICE9PSB1bmRlZmluZWQpICYmXG5cdFx0XHRcdCh0aGlzLnByb3BzLnN5bmMgIT09IHRoaXMuc3luYyB8fFxuXHRcdFx0XHR0aGlzLnByb3BzLnBlcmlvZCAhPT0gdGhpcy5wZXJpb2QgfHxcblx0XHRcdFx0dGhpcy5wcm9wcy5pbnRlcnZhbCAhPT0gdGhpcy5pbnRlcnZhbCkpIHtcblx0XHRcdHRoaXMudXBkYXRlKHRoaXMucHJvcHMuc3luYywgdGhpcy5wcm9wcy5wZXJpb2QsIHRoaXMucHJvcHMuaW50ZXJ2YWwpO1xuXHRcdH1cblxuXHRcdHJldHVybiA8Y2FudmFzXG5cdFx0XHRoaWRkZW49e3RoaXMuc3RhdGUuaGlkZGVufVxuXHRcdFx0cmVmPXt0aGlzLmNoYXJ0UmVmfVxuXHRcdC8+O1xuXHR9XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./app/components/EndpointChart.js\n");
/***/ }),
@@ -878,7 +878,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ EndpointDetailed)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var _actions_EndpointActions__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../actions/EndpointActions */ \"./app/actions/EndpointActions.js\");\n/* harmony import */ var _utils_MiscUtils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/MiscUtils */ \"./app/utils/MiscUtils.js\");\n/* harmony import */ var _PageInput__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./PageInput */ \"./app/components/PageInput.js\");\n/* harmony import */ var _PageSave__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./PageSave */ \"./app/components/PageSave.js\");\n/* harmony import */ var _PageInfo__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./PageInfo */ \"./app/components/PageInfo.js\");\n/* harmony import */ var _ConfirmButton__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./ConfirmButton */ \"./app/components/ConfirmButton.js\");\n/* harmony import */ var _PageInputButton__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./PageInputButton */ \"./app/components/PageInputButton.js\");\n/* harmony import */ var _EndpointCharts__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./EndpointCharts */ \"./app/components/EndpointCharts.js\");\n/* harmony import */ var _EndpointKmsg__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./EndpointKmsg */ \"./app/components/EndpointKmsg.js\");\n/* harmony import */ var _Help__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./Help */ \"./app/components/Help.js\");\n/* harmony import */ var _PageSwitch__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./PageSwitch */ \"./app/components/PageSwitch.js\");\n\n\n\n\n\n\n\n\n\n\n\n\nconst css = {\n card: {\n position: 'relative',\n padding: '48px 10px 0 10px',\n width: '100%',\n },\n remove: {\n position: 'absolute',\n top: '5px',\n right: '5px',\n },\n item: {\n margin: '9px 5px 0 5px',\n height: '20px',\n },\n itemsLabel: {\n display: 'block',\n },\n itemsAdd: {\n margin: '8px 0 15px 0',\n },\n group: {\n flex: 1,\n minWidth: '250px',\n margin: '0 10px',\n },\n controlButton: {\n marginRight: '10px',\n },\n save: {\n paddingBottom: '10px',\n },\n button: {\n height: '30px',\n },\n buttons: {\n cursor: 'pointer',\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n padding: '4px',\n height: '39px',\n backgroundColor: 'rgba(0, 0, 0, 0.13)',\n },\n label: {\n width: '100%',\n maxWidth: '280px',\n },\n status: {\n margin: '6px 0 0 1px',\n },\n icon: {\n marginRight: '3px',\n },\n inputGroup: {\n width: '100%',\n },\n protocol: {\n flex: '0 1 auto',\n },\n port: {\n flex: '1',\n },\n select: {\n margin: '7px 0px 0px 6px',\n paddingTop: '3px',\n },\n};\nclass EndpointDetailed extends react__WEBPACK_IMPORTED_MODULE_0__.Component {\n constructor(props, context) {\n super(props, context);\n this.onResetClientKey = () => {\n this.setState({\n ...this.state,\n disabled: true,\n });\n let endpoint = {\n ...this.props.endpoint,\n reset_client_key: true,\n };\n _actions_EndpointActions__WEBPACK_IMPORTED_MODULE_1__.commit(endpoint).then(() => {\n this.setState({\n ...this.state,\n message: 'Client key reset',\n changed: false,\n disabled: false,\n });\n setTimeout(() => {\n if (!this.state.changed) {\n this.setState({\n ...this.state,\n endpoint: null,\n changed: false,\n });\n }\n }, 1000);\n setTimeout(() => {\n if (!this.state.changed) {\n this.setState({\n ...this.state,\n message: '',\n });\n }\n }, 3000);\n }).catch(() => {\n this.setState({\n ...this.state,\n message: '',\n disabled: false,\n });\n });\n };\n this.onSave = () => {\n this.setState({\n ...this.state,\n disabled: true,\n });\n _actions_EndpointActions__WEBPACK_IMPORTED_MODULE_1__.commit(this.state.endpoint).then(() => {\n this.setState({\n ...this.state,\n message: 'Your changes have been saved',\n changed: false,\n disabled: false,\n });\n setTimeout(() => {\n if (!this.state.changed) {\n this.setState({\n ...this.state,\n endpoint: null,\n changed: false,\n });\n }\n }, 1000);\n setTimeout(() => {\n if (!this.state.changed) {\n this.setState({\n ...this.state,\n message: '',\n });\n }\n }, 3000);\n }).catch(() => {\n this.setState({\n ...this.state,\n message: '',\n disabled: false,\n });\n });\n };\n this.onDelete = () => {\n this.setState({\n ...this.state,\n disabled: true,\n });\n _actions_EndpointActions__WEBPACK_IMPORTED_MODULE_1__.remove(this.props.endpoint.id).then(() => {\n this.setState({\n ...this.state,\n disabled: false,\n });\n }).catch(() => {\n this.setState({\n ...this.state,\n disabled: false,\n });\n });\n };\n this.onAddRole = () => {\n let endpoint;\n if (this.state.changed) {\n endpoint = {\n ...this.state.endpoint,\n };\n }\n else {\n endpoint = {\n ...this.props.endpoint,\n };\n }\n let roles = [\n ...endpoint.roles,\n ];\n if (!this.state.addRole) {\n return;\n }\n if (roles.indexOf(this.state.addRole) === -1) {\n roles.push(this.state.addRole);\n }\n roles.sort();\n endpoint.roles = roles;\n this.setState({\n ...this.state,\n changed: true,\n message: '',\n addRole: '',\n endpoint: endpoint,\n });\n };\n this.state = {\n disabled: false,\n changed: false,\n message: '',\n addRole: '',\n endpoint: null,\n showCharts: true,\n };\n }\n set(name, val) {\n let endpoint;\n if (this.state.changed) {\n endpoint = {\n ...this.state.endpoint,\n };\n }\n else {\n endpoint = {\n ...this.props.endpoint,\n };\n }\n endpoint[name] = val;\n this.setState({\n ...this.state,\n changed: true,\n endpoint: endpoint,\n });\n }\n onRemoveRole(role) {\n let endpoint;\n if (this.state.changed) {\n endpoint = {\n ...this.state.endpoint,\n };\n }\n else {\n endpoint = {\n ...this.props.endpoint,\n };\n }\n let roles = [\n ...endpoint.roles,\n ];\n let i = roles.indexOf(role);\n if (i === -1) {\n return;\n }\n roles.splice(i, 1);\n endpoint.roles = roles;\n this.setState({\n ...this.state,\n changed: true,\n message: '',\n addRole: '',\n endpoint: endpoint,\n });\n }\n render() {\n let endpoint = this.state.endpoint ||\n this.props.endpoint;\n let fields = [\n {\n label: 'ID',\n value: this.props.endpoint.id || 'None',\n },\n ];\n let endpointData = endpoint.data || {};\n if (endpointData) {\n if (endpointData.hostname) {\n fields.push({\n label: 'Hostname',\n value: endpointData.hostname,\n });\n }\n if (endpointData.uptime) {\n fields.push({\n label: 'Uptime',\n value: _utils_MiscUtils__WEBPACK_IMPORTED_MODULE_2__.formatUptime(endpointData.uptime),\n });\n }\n if (endpointData.platform) {\n fields.push({\n label: 'Platform',\n value: endpointData.platform,\n });\n }\n if (endpointData.package_updates) {\n fields.push({\n label: 'System Package Updates',\n value: endpointData.package_updates,\n valueClass: 'bp3-text-intent-danger',\n });\n }\n if (endpointData.virtualization) {\n fields.push({\n label: 'Virtualization',\n value: endpointData.virtualization,\n });\n }\n if (endpointData.cpu_cores) {\n fields.push({\n label: 'CPU Cores',\n value: endpointData.cpu_cores,\n });\n }\n if (endpointData.mem_total) {\n fields.push({\n label: 'Memory',\n value: endpointData.mem_total + 'MB',\n });\n }\n if (endpointData.swap_total) {\n fields.push({\n label: 'Swap',\n value: endpointData.swap_total + 'MB',\n });\n }\n if (endpointData.huge_total) {\n fields.push({\n label: 'HugePages',\n value: endpointData.huge_total + 'MB',\n });\n }\n }\n if (endpoint.data.md_stat && endpoint.data.md_stat.length) {\n let failed = 0;\n let total = 0;\n for (let md of endpoint.data.md_stat) {\n failed += md.failed;\n total += md.total;\n }\n fields.push({\n label: 'Raid Devices',\n value: 'Failed: ' + failed + ' Total: ' + total,\n });\n }\n let roles = [];\n for (let role of endpoint.roles) {\n roles.push(react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", { className: \"bp3-tag bp3-tag-removable bp3-intent-primary\", style: css.item, key: role },\n role,\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"button\", { className: \"bp3-tag-remove\", onMouseUp: () => {\n this.onRemoveRole(role);\n } })));\n }\n let alerts = [];\n for (let alert of Object.values(endpoint.info.alerts)) {\n alerts.push(alert);\n }\n let checks = [];\n for (let check of Object.values(endpoint.info.checks)) {\n checks.push(check);\n }\n let secretKey = '';\n let secretUri = '';\n if (!endpoint.has_client_key) {\n if (endpoint.client_key) {\n secretKey = endpoint.id + '_' + endpoint.client_key.secret;\n }\n else {\n secretKey = 'unknown';\n }\n secretUri = 'pritunl://' + window.location.host + '/' + secretKey;\n }\n return react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"td\", { className: \"bp3-cell\", colSpan: 3, style: css.card },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", { className: \"layout horizontal wrap\" },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", { style: css.group },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", { className: \"layout horizontal tab-close\", style: css.buttons, onClick: (evt) => {\n let target = evt.target;\n if (target.className.indexOf('tab-close') !== -1) {\n this.props.onClose();\n }\n } },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", null,\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"label\", { className: \"bp3-control bp3-checkbox\", style: css.select },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"input\", { type: \"checkbox\", checked: this.props.selected, onChange: (evt) => {\n }, onClick: (evt) => {\n this.props.onSelect(evt.shiftKey);\n } }),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"span\", { className: \"bp3-control-indicator\" }))),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", { className: \"flex tab-close\" }),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(_ConfirmButton__WEBPACK_IMPORTED_MODULE_6__[\"default\"], { safe: true, className: \"bp3-minimal bp3-intent-danger bp3-icon-trash\", progressClassName: \"bp3-intent-danger\", dialogClassName: \"bp3-intent-danger bp3-icon-delete\", dialogLabel: \"Delete Endpoint\", confirmMsg: \"Permanently delete this endpoint\", confirmInput: true, items: [endpoint.name], disabled: this.state.disabled, onConfirm: this.onDelete })),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(_PageInput__WEBPACK_IMPORTED_MODULE_3__[\"default\"], { label: \"Name\", help: \"Name of endpoint\", type: \"text\", placeholder: \"Enter name\", value: endpoint.name, onChange: (val) => {\n this.set('name', val);\n } }),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(_PageInput__WEBPACK_IMPORTED_MODULE_3__[\"default\"], { hidden: endpoint.has_client_key, disabled: this.state.disabled, readOnly: true, autoSelect: true, label: \"Registration Key\", help: \"Key for endpoint registration\", type: \"text\", placeholder: \"\", value: secretKey }),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"label\", { className: \"bp3-label\" },\n \"Roles\",\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(_Help__WEBPACK_IMPORTED_MODULE_10__[\"default\"], { title: \"Roles\", content: \"The user roles that will be allowed access to this endpoint. At least one role must match for the user to access the endpoint.\" }),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", null, roles)),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(_PageInputButton__WEBPACK_IMPORTED_MODULE_7__[\"default\"], { buttonClass: \"bp3-intent-success bp3-icon-add\", label: \"Add\", type: \"text\", placeholder: \"Add role\", value: this.state.addRole, onChange: (val) => {\n this.setState({\n ...this.state,\n addRole: val,\n });\n }, onSubmit: this.onAddRole }),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(_PageSwitch__WEBPACK_IMPORTED_MODULE_11__[\"default\"], { label: \"Show charts and dmesg\", help: \"Show endpoint charts and dmesg.\", checked: this.state.showCharts, hidden: !endpointData.hostname, onToggle: () => {\n this.setState({\n ...this.state,\n showCharts: !this.state.showCharts,\n });\n } }),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(_PageInfo__WEBPACK_IMPORTED_MODULE_5__[\"default\"], { fields: [\n {\n label: 'Alerts',\n value: alerts.length ? alerts : '-',\n },\n {\n label: 'Health Checks',\n value: checks.length ? checks : '-',\n },\n ] })),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", { style: css.group },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(_PageInfo__WEBPACK_IMPORTED_MODULE_5__[\"default\"], { fields: fields }),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(_PageInput__WEBPACK_IMPORTED_MODULE_3__[\"default\"], { hidden: endpoint.has_client_key, disabled: this.state.disabled, readOnly: true, autoSelect: true, label: \"Registration URI\", help: \"URI for endpoint registration\", type: \"text\", placeholder: \"\", value: secretUri }))),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(_EndpointCharts__WEBPACK_IMPORTED_MODULE_8__[\"default\"], { endpoint: endpoint.id, disabled: !endpointData.hostname || !this.state.showCharts }),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(_EndpointKmsg__WEBPACK_IMPORTED_MODULE_9__[\"default\"], { endpoint: endpoint.id, disabled: !endpointData.hostname || !this.state.showCharts }),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(_PageSave__WEBPACK_IMPORTED_MODULE_4__[\"default\"], { style: css.save, hidden: !this.state.endpoint && !this.state.message, message: this.state.message, changed: this.state.changed, disabled: this.state.disabled, light: true, onCancel: () => {\n this.setState({\n ...this.state,\n changed: false,\n endpoint: null,\n });\n }, onSave: this.onSave },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(_ConfirmButton__WEBPACK_IMPORTED_MODULE_6__[\"default\"], { label: \"Reset Key\", className: \"bp3-intent-danger bp3-icon-key\", progressClassName: \"bp3-intent-danger\", style: css.controlButton, hidden: !endpoint.has_client_key, disabled: this.state.disabled, safe: true, onConfirm: () => {\n this.onResetClientKey();\n } })));\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QUksRUFDZixNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUNuRCxPQUFPLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQzNCLE9BQU8sRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFDM0IsUUFBUSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUM3QixLQUFLLEVBQUUsSUFBSSxFQUNYLFFBQVEsRUFBRSxHQUFTLEVBQUU7b0JBQ3BCLElBQUksQ0FBQyxRQUFRLENBQUM7d0JBQ2IsR0FBRyxJQUFJLENBQUMsS0FBSzt3QkFDYixPQUFPLEVBQUUsS0FBSzt3QkFDZCxRQUFRLEVBQUUsSUFBSTtxQkFDZCxDQUFDLENBQUM7Z0JBQ0osQ0FBQyxFQUNELE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtnQkFFbkIsaURBQUMsc0RBQWEsSUFDYixLQUFLLEVBQUMsV0FBVyxFQUNqQixTQUFTLEVBQUMsZ0NBQWdDLEVBQzFDLGlCQUFpQixFQUFDLG1CQUFtQixFQUNyQyxLQUFLLEVBQUUsR0FBRyxDQUFDLGFBQWEsRUFDeEIsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLGNBQWMsRUFDaEMsUUFBUSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUM3QixJQUFJLEVBQUUsSUFBSSxFQUNWLFNBQVMsRUFBRSxHQUFTLEVBQUU7d0JBQ3JCLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO29CQUN6QixDQUFDLEdBQ0EsQ0FDUSxDQUNQLENBQUM7SUFDUCxDQUFDO0NBQ0QiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9wcml0dW5sLXplcm8vLi9hcHAvY29tcG9uZW50cy9FbmRwb2ludERldGFpbGVkLnRzeD81NzZjIl0sInNvdXJjZXNDb250ZW50IjpbIi8vLyA8cmVmZXJlbmNlIHBhdGg9XCIuLi9SZWZlcmVuY2VzLmQudHNcIi8+XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgKiBhcyBFbmRwb2ludFR5cGVzIGZyb20gJy4uL3R5cGVzL0VuZHBvaW50VHlwZXMnO1xuaW1wb3J0ICogYXMgQXV0aG9yaXR5VHlwZXMgZnJvbSBcIi4uL3R5cGVzL0F1dGhvcml0eVR5cGVzXCI7XG5pbXBvcnQgKiBhcyBFbmRwb2ludEFjdGlvbnMgZnJvbSAnLi4vYWN0aW9ucy9FbmRwb2ludEFjdGlvbnMnO1xuaW1wb3J0ICogYXMgUGFnZUluZm9zIGZyb20gJy4vUGFnZUluZm8nO1xuaW1wb3J0ICogYXMgTWlzY1V0aWxzIGZyb20gJy4uL3V0aWxzL01pc2NVdGlscyc7XG5pbXBvcnQgUGFnZUlucHV0IGZyb20gJy4vUGFnZUlucHV0JztcbmltcG9ydCBQYWdlU2F2ZSBmcm9tICcuL1BhZ2VTYXZlJztcbmltcG9ydCBQYWdlSW5mbyBmcm9tICcuL1BhZ2VJbmZvJztcbmltcG9ydCBDb25maXJtQnV0dG9uIGZyb20gJy4vQ29uZmlybUJ1dHRvbic7XG5pbXBvcnQgUGFnZUlucHV0QnV0dG9uIGZyb20gJy4vUGFnZUlucHV0QnV0dG9uJztcbmltcG9ydCBFbmRwb2ludENoYXJ0cyBmcm9tICcuL0VuZHBvaW50Q2hhcnRzJztcbmltcG9ydCBFbmRwb2ludEttc2cgZnJvbSAnLi9FbmRwb2ludEttc2cnO1xuaW1wb3J0IEhlbHAgZnJvbSAnLi9IZWxwJztcbmltcG9ydCBQYWdlU3dpdGNoIGZyb20gXCIuL1BhZ2VTd2l0Y2hcIjtcblxuaW50ZXJmYWNlIFByb3BzIHtcblx0ZW5kcG9pbnQ6IEVuZHBvaW50VHlwZXMuRW5kcG9pbnRSbztcblx0YXV0aG9yaXRpZXM6IEF1dGhvcml0eVR5cGVzLkF1dGhvcml0aWVzUm87XG5cdHNlbGVjdGVkOiBib29sZWFuO1xuXHRvblNlbGVjdDogKHNoaWZ0OiBib29sZWFuKSA9PiB2b2lkO1xuXHRvbkNsb3NlOiAoKSA9PiB2b2lkO1xufVxuXG5pbnRlcmZhY2UgU3RhdGUge1xuXHRkaXNhYmxlZDogYm9vbGVhbjtcblx0Y2hhbmdlZDogYm9vbGVhbjtcblx0bWVzc2FnZTogc3RyaW5nO1xuXHRhZGRSb2xlOiBzdHJpbmc7XG5cdHNob3dDaGFydHM6IGJvb2xlYW47XG5cdGVuZHBvaW50OiBFbmRwb2ludFR5cGVzLkVuZHBvaW50O1xufVxuXG5jb25zdCBjc3MgPSB7XG5cdGNhcmQ6IHtcblx0XHRwb3NpdGlvbjogJ3JlbGF0aXZlJyxcblx0XHRwYWRkaW5nOiAnNDhweCAxMHB4IDAgMTBweCcsXG5cdFx0d2lkdGg6ICcxMDAlJyxcblx0fSBhcyBSZWFjdC5DU1NQcm9wZXJ0aWVzLFxuXHRyZW1vdmU6IHtcblx0XHRwb3NpdGlvbjogJ2Fic29sdXRlJyxcblx0XHR0b3A6ICc1cHgnLFxuXHRcdHJpZ2h0OiAnNXB4Jyxcblx0fSBhcyBSZWFjdC5DU1NQcm9wZXJ0aWVzLFxuXHRpdGVtOiB7XG5cdFx0bWFyZ2luOiAnOXB4IDVweCAwIDVweCcsXG5cdFx0aGVpZ2h0OiAnMjBweCcsXG5cdH0gYXMgUmVhY3QuQ1NTUHJvcGVydGllcyxcblx0aXRlbXNMYWJlbDoge1xuXHRcdGRpc3BsYXk6ICdibG9jaycsXG5cdH0gYXMgUmVhY3QuQ1NTUHJvcGVydGllcyxcblx0aXRlbXNBZGQ6IHtcblx0XHRtYXJnaW46ICc4cHggMCAxNXB4IDAnLFxuXHR9IGFzIFJlYWN0LkNTU1Byb3BlcnRpZXMsXG5cdGdyb3VwOiB7XG5cdFx0ZmxleDogMSxcblx0XHRtaW5XaWR0aDogJzI1MHB4Jyxcblx0XHRtYXJnaW46ICcwIDEwcHgnLFxuXHR9IGFzIFJlYWN0LkNTU1Byb3BlcnRpZXMsXG5cdGNvbnRyb2xCdXR0b246IHtcblx0XHRtYXJnaW5SaWdodDogJzEwcHgnLFxuXHR9IGFzIFJlYWN0LkNTU1Byb3BlcnRpZXMsXG5cdHNhdmU6IHtcblx0XHRwYWRkaW5nQm90dG9tOiAnMTBweCcsXG5cdH0gYXMgUmVhY3QuQ1NTUHJvcGVydGllcyxcblx0YnV0dG9uOiB7XG5cdFx0aGVpZ2h0OiAnMzBweCcsXG5cdH0gYXMgUmVhY3QuQ1NTUHJvcGVydGllcyxcblx0YnV0dG9uczoge1xuXHRcdGN1cnNvcjogJ3BvaW50ZXInLFxuXHRcdHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuXHRcdHRvcDogMCxcblx0XHRsZWZ0OiAwLFxuXHRcdHJpZ2h0OiAwLFxuXHRcdHBhZGRpbmc6ICc0cHgnLFxuXHRcdGhlaWdodDogJzM5cHgnLFxuXHRcdGJhY2tncm91bmRDb2xvcjogJ3JnYmEoMCwgMCwgMCwgMC4xMyknLFxuXHR9IGFzIFJlYWN0LkNTU1Byb3BlcnRpZXMsXG5cdGxhYmVsOiB7XG5cdFx0d2lkdGg6ICcxMDAlJyxcblx0XHRtYXhXaWR0aDogJzI4MHB4Jyxcblx0fSBhcyBSZWFjdC5DU1NQcm9wZXJ0aWVzLFxuXHRzdGF0dXM6IHtcblx0XHRtYXJnaW46ICc2cHggMCAwIDFweCcsXG5cdH0gYXMgUmVhY3QuQ1NTUHJvcGVydGllcyxcblx0aWNvbjoge1xuXHRcdG1hcmdpblJpZ2h0OiAnM3B4Jyxcblx0fSBhcyBSZWFjdC5DU1NQcm9wZXJ0aWVzLFxuXHRpbnB1dEdyb3VwOiB7XG5cdFx0d2lkdGg6ICcxMDAlJyxcblx0fSBhcyBSZWFjdC5DU1NQcm9wZXJ0aWVzLFxuXHRwcm90b2NvbDoge1xuXHRcdGZsZXg6ICcwIDEgYXV0bycsXG5cdH0gYXMgUmVhY3QuQ1NTUHJvcGVydGllcyxcblx0cG9ydDoge1xuXHRcdGZsZXg6ICcxJyxcblx0fSBhcyBSZWFjdC5DU1NQcm9wZXJ0aWVzLFxuXHRzZWxlY3Q6IHtcblx0XHRtYXJnaW46ICc3cHggMHB4IDBweCA2cHgnLFxuXHRcdHBhZGRpbmdUb3A6ICczcHgnLFxuXHR9IGFzIFJlYWN0LkNTU1Byb3BlcnRpZXMsXG59O1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBFbmRwb2ludERldGFpbGVkIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50PFByb3BzLCBTdGF0ZT4ge1xuXHRjb25zdHJ1Y3Rvcihwcm9wczogYW55LCBjb250ZXh0OiBhbnkpIHtcblx0XHRzdXBlcihwcm9wcywgY29udGV4dCk7XG5cdFx0dGhpcy5zdGF0ZSA9IHtcblx0XHRcdGRpc2FibGVkOiBmYWxzZSxcblx0XHRcdGNoYW5nZWQ6IGZhbHNlLFxuXHRcdFx0bWVzc2FnZTogJycsXG5cdFx0XHRhZGRSb2xlOiAnJyxcblx0XHRcdGVuZHBvaW50OiBudWxsLFxuXHRcdFx0c2hvd0NoYXJ0czogdHJ1ZSxcblx0XHR9O1xuXHR9XG5cblx0c2V0KG5hbWU6IHN0cmluZywgdmFsOiBhbnkpOiB2b2lkIHtcblx0XHRsZXQgZW5kcG9pbnQ6IGFueTtcblxuXHRcdGlmICh0aGlzLnN0YXRlLmNoYW5nZWQpIHtcblx0XHRcdGVuZHBvaW50ID0ge1xuXHRcdFx0XHQuLi50aGlzLnN0YXRlLmVuZHBvaW50LFxuXHRcdFx0fTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0ZW5kcG9pbnQgPSB7XG5cdFx0XHRcdC4uLnRoaXMucHJvcHMuZW5kcG9pbnQsXG5cdFx0XHR9O1xuXHRcdH1cblxuXHRcdGVuZHBvaW50W25hbWVdID0gdmFsO1xuXG5cdFx0dGhpcy5zZXRTdGF0ZSh7XG5cdFx0XHQuLi50aGlzLnN0YXRlLFxuXHRcdFx0Y2hhbmdlZDogdHJ1ZSxcblx0XHRcdGVuZHBvaW50OiBlbmRwb2ludCxcblx0XHR9KTtcblx0fVxuXG5cdG9uUmVzZXRDbGllbnRLZXkgPSAoKTogdm9pZCA9PiB7XG5cdFx0dGhpcy5zZXRTdGF0ZSh7XG5cdFx0XHQuLi50aGlzLnN0YXRlLFxuXHRcdFx0ZGlzYWJsZWQ6IHRydWUsXG5cdFx0fSk7XG5cblx0XHRsZXQgZW5kcG9pbnQgPSB7XG5cdFx0XHQuLi50aGlzLnByb3BzLmVuZHBvaW50LFxuXHRcdFx0cmVzZXRfY2xpZW50X2tleTogdHJ1ZSxcblx0XHR9O1xuXG5cdFx0RW5kcG9pbnRBY3Rpb25zLmNvbW1pdChlbmRwb2ludCkudGhlbigoKTogdm9pZCA9PiB7XG5cdFx0XHR0aGlzLnNldFN0YXRlKHtcblx0XHRcdFx0Li4udGhpcy5zdGF0ZSxcblx0XHRcdFx0bWVzc2FnZTogJ0NsaWVudCBrZXkgcmVzZXQnLFxuXHRcdFx0XHRjaGFuZ2VkOiBmYWxzZSxcblx0XHRcdFx0ZGlzYWJsZWQ6IGZhbHNlLFxuXHRcdFx0fSk7XG5cblx0XHRcdHNldFRpbWVvdXQoKCk6IHZvaWQgPT4ge1xuXHRcdFx0XHRpZiAoIXRoaXMuc3RhdGUuY2hhbmdlZCkge1xuXHRcdFx0XHRcdHRoaXMuc2V0U3RhdGUoe1xuXHRcdFx0XHRcdFx0Li4udGhpcy5zdGF0ZSxcblx0XHRcdFx0XHRcdGVuZHBvaW50OiBudWxsLFxuXHRcdFx0XHRcdFx0Y2hhbmdlZDogZmFsc2UsXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblx0XHRcdH0sIDEwMDApO1xuXG5cdFx0XHRzZXRUaW1lb3V0KCgpOiB2b2lkID0+IHtcblx0XHRcdFx0aWYgKCF0aGlzLnN0YXRlLmNoYW5nZWQpIHtcblx0XHRcdFx0XHR0aGlzLnNldFN0YXRlKHtcblx0XHRcdFx0XHRcdC4uLnRoaXMuc3RhdGUsXG5cdFx0XHRcdFx0XHRtZXNzYWdlOiAnJyxcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0fSwgMzAwMCk7XG5cdFx0fSkuY2F0Y2goKCk6IHZvaWQgPT4ge1xuXHRcdFx0dGhpcy5zZXRTdGF0ZSh7XG5cdFx0XHRcdC4uLnRoaXMuc3RhdGUsXG5cdFx0XHRcdG1lc3NhZ2U6ICcnLFxuXHRcdFx0XHRkaXNhYmxlZDogZmFsc2UsXG5cdFx0XHR9KTtcblx0XHR9KTtcblx0fVxuXG5cdG9uU2F2ZSA9ICgpOiB2b2lkID0+IHtcblx0XHR0aGlzLnNldFN0YXRlKHtcblx0XHRcdC4uLnRoaXMuc3RhdGUsXG5cdFx0XHRkaXNhYmxlZDogdHJ1ZSxcblx0XHR9KTtcblx0XHRFbmRwb2ludEFjdGlvbnMuY29tbWl0KHRoaXMuc3RhdGUuZW5kcG9pbnQpLnRoZW4oKCk6IHZvaWQgPT4ge1xuXHRcdFx0dGhpcy5zZXRTdGF0ZSh7XG5cdFx0XHRcdC4uLnRoaXMuc3RhdGUsXG5cdFx0XHRcdG1lc3NhZ2U6ICdZb3VyIGNoYW5nZXMgaGF2ZSBiZWVuIHNhdmVkJyxcblx0XHRcdFx0Y2hhbmdlZDogZmFsc2UsXG5cdFx0XHRcdGRpc2FibGVkOiBmYWxzZSxcblx0XHRcdH0pO1xuXG5cdFx0XHRzZXRUaW1lb3V0KCgpOiB2b2lkID0+IHtcblx0XHRcdFx0aWYgKCF0aGlzLnN0YXRlLmNoYW5nZWQpIHtcblx0XHRcdFx0XHR0aGlzLnNldFN0YXRlKHtcblx0XHRcdFx0XHRcdC4uLnRoaXMuc3RhdGUsXG5cdFx0XHRcdFx0XHRlbmRwb2ludDogbnVsbCxcblx0XHRcdFx0XHRcdGNoYW5nZWQ6IGZhbHNlLFxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9LCAxMDAwKTtcblxuXHRcdFx0c2V0VGltZW91dCgoKTogdm9pZCA9PiB7XG5cdFx0XHRcdGlmICghdGhpcy5zdGF0ZS5jaGFuZ2VkKSB7XG5cdFx0XHRcdFx0dGhpcy5zZXRTdGF0ZSh7XG5cdFx0XHRcdFx0XHQuLi50aGlzLnN0YXRlLFxuXHRcdFx0XHRcdFx0bWVzc2FnZTogJycsXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblx0XHRcdH0sIDMwMDApO1xuXHRcdH0pLmNhdGNoKCgpOiB2b2lkID0+IHtcblx0XHRcdHRoaXMuc2V0U3RhdGUoe1xuXHRcdFx0XHQuLi50aGlzLnN0YXRlLFxuXHRcdFx0XHRtZXNzYWdlOiAnJyxcblx0XHRcdFx0ZGlzYWJsZWQ6IGZhbHNlLFxuXHRcdFx0fSk7XG5cdFx0fSk7XG5cdH1cblxuXHRvbkRlbGV0ZSA9ICgpOiB2b2lkID0+IHtcblx0XHR0aGlzLnNldFN0YXRlKHtcblx0XHRcdC4uLnRoaXMuc3RhdGUsXG5cdFx0XHRkaXNhYmxlZDogdHJ1ZSxcblx0XHR9KTtcblx0XHRFbmRwb2ludEFjdGlvbnMucmVtb3ZlKHRoaXMucHJvcHMuZW5kcG9pbnQuaWQpLnRoZW4oKCk6IHZvaWQgPT4ge1xuXHRcdFx0dGhpcy5zZXRTdGF0ZSh7XG5cdFx0XHRcdC4uLnRoaXMuc3RhdGUsXG5cdFx0XHRcdGRpc2FibGVkOiBmYWxzZSxcblx0XHRcdH0pO1xuXHRcdH0pLmNhdGNoKCgpOiB2b2lkID0+IHtcblx0XHRcdHRoaXMuc2V0U3RhdGUoe1xuXHRcdFx0XHQuLi50aGlzLnN0YXRlLFxuXHRcdFx0XHRkaXNhYmxlZDogZmFsc2UsXG5cdFx0XHR9KTtcblx0XHR9KTtcblx0fVxuXG5cdG9uQWRkUm9sZSA9ICgpOiB2b2lkID0+IHtcblx0XHRsZXQgZW5kcG9pbnQ6IEVuZHBvaW50VHlwZXMuRW5kcG9pbnQ7XG5cblx0XHRpZiAodGhpcy5zdGF0ZS5jaGFuZ2VkKSB7XG5cdFx0XHRlbmRwb2ludCA9IHtcblx0XHRcdFx0Li4udGhpcy5zdGF0ZS5lbmRwb2ludCxcblx0XHRcdH07XG5cdFx0fSBlbHNlIHtcblx0XHRcdGVuZHBvaW50ID0ge1xuXHRcdFx0XHQuLi50aGlzLnByb3BzLmVuZHBvaW50LFxuXHRcdFx0fTtcblx0XHR9XG5cblx0XHRsZXQgcm9sZXMgPSBbXG5cdFx0XHQuLi5lbmRwb2ludC5yb2xlcyxcblx0XHRdO1xuXG5cdFx0aWYgKCF0aGlzLnN0YXRlLmFkZFJvbGUpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHRpZiAocm9sZXMuaW5kZXhPZih0aGlzLnN0YXRlLmFkZFJvbGUpID09PSAtMSkge1xuXHRcdFx0cm9sZXMucHVzaCh0aGlzLnN0YXRlLmFkZFJvbGUpO1xuXHRcdH1cblxuXHRcdHJvbGVzLnNvcnQoKTtcblxuXHRcdGVuZHBvaW50LnJvbGVzID0gcm9sZXM7XG5cblx0XHR0aGlzLnNldFN0YXRlKHtcblx0XHRcdC4uLnRoaXMuc3RhdGUsXG5cdFx0XHRjaGFuZ2VkOiB0cnVlLFxuXHRcdFx0bWVzc2FnZTogJycsXG5cdFx0XHRhZGRSb2xlOiAnJyxcblx0XHRcdGVuZHBvaW50OiBlbmRwb2ludCxcblx0XHR9KTtcblx0fVxuXG5cdG9uUmVtb3ZlUm9sZShyb2xlOiBzdHJpbmcpOiB2b2lkIHtcblx0XHRsZXQgZW5kcG9pbnQ6IEVuZHBvaW50VHlwZXMuRW5kcG9pbnQ7XG5cblx0XHRpZiAodGhpcy5zdGF0ZS5jaGFuZ2VkKSB7XG5cdFx0XHRlbmRwb2ludCA9IHtcblx0XHRcdFx0Li4udGhpcy5zdGF0ZS5lbmRwb2ludCxcblx0XHRcdH07XG5cdFx0fSBlbHNlIHtcblx0XHRcdGVuZHBvaW50ID0ge1xuXHRcdFx0XHQuLi50aGlzLnByb3BzLmVuZHBvaW50LFxuXHRcdFx0fTtcblx0XHR9XG5cblx0XHRsZXQgcm9sZXMgPSBbXG5cdFx0XHQuLi5lbmRwb2ludC5yb2xlcyxcblx0XHRdO1xuXG5cdFx0bGV0IGkgPSByb2xlcy5pbmRleE9mKHJvbGUpO1xuXHRcdGlmIChpID09PSAtMSkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdHJvbGVzLnNwbGljZShpLCAxKTtcblxuXHRcdGVuZHBvaW50LnJvbGVzID0gcm9sZXM7XG5cblx0XHR0aGlzLnNldFN0YXRlKHtcblx0XHRcdC4uLnRoaXMuc3RhdGUsXG5cdFx0XHRjaGFuZ2VkOiB0cnVlLFxuXHRcdFx0bWVzc2FnZTogJycsXG5cdFx0XHRhZGRSb2xlOiAnJyxcblx0XHRcdGVuZHBvaW50OiBlbmRwb2ludCxcblx0XHR9KTtcblx0fVxuXG5cdHJlbmRlcigpOiBKU1guRWxlbWVudCB7XG5cdFx0bGV0IGVuZHBvaW50OiBFbmRwb2ludFR5cGVzLkVuZHBvaW50ID0gdGhpcy5zdGF0ZS5lbmRwb2ludCB8fFxuXHRcdFx0dGhpcy5wcm9wcy5lbmRwb2ludDtcblxuXHRcdGxldCBmaWVsZHM6IFBhZ2VJbmZvcy5GaWVsZFtdID0gW1xuXHRcdFx0e1xuXHRcdFx0XHRsYWJlbDogJ0lEJyxcblx0XHRcdFx0dmFsdWU6IHRoaXMucHJvcHMuZW5kcG9pbnQuaWQgfHwgJ05vbmUnLFxuXHRcdFx0fSxcblx0XHRdO1xuXG5cdFx0bGV0IGVuZHBvaW50RGF0YSA9IGVuZHBvaW50LmRhdGEgfHwge307XG5cdFx0aWYgKGVuZHBvaW50RGF0YSkge1xuXHRcdFx0aWYgKGVuZHBvaW50RGF0YS5ob3N0bmFtZSkge1xuXHRcdFx0XHRmaWVsZHMucHVzaCh7XG5cdFx0XHRcdFx0bGFiZWw6ICdIb3N0bmFtZScsXG5cdFx0XHRcdFx0dmFsdWU6IGVuZHBvaW50RGF0YS5ob3N0bmFtZSxcblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0XHRpZiAoZW5kcG9pbnREYXRhLnVwdGltZSkge1xuXHRcdFx0XHRmaWVsZHMucHVzaCh7XG5cdFx0XHRcdFx0bGFiZWw6ICdVcHRpbWUnLFxuXHRcdFx0XHRcdHZhbHVlOiBNaXNjVXRpbHMuZm9ybWF0VXB0aW1lKGVuZHBvaW50RGF0YS51cHRpbWUpLFxuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHRcdGlmIChlbmRwb2ludERhdGEucGxhdGZvcm0pIHtcblx0XHRcdFx0ZmllbGRzLnB1c2goe1xuXHRcdFx0XHRcdGxhYmVsOiAnUGxhdGZvcm0nLFxuXHRcdFx0XHRcdHZhbHVlOiBlbmRwb2ludERhdGEucGxhdGZvcm0sXG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdFx0aWYgKGVuZHBvaW50RGF0YS5wYWNrYWdlX3VwZGF0ZXMpIHtcblx0XHRcdFx0ZmllbGRzLnB1c2goe1xuXHRcdFx0XHRcdGxhYmVsOiAnU3lzdGVtIFBhY2thZ2UgVXBkYXRlcycsXG5cdFx0XHRcdFx0dmFsdWU6IGVuZHBvaW50RGF0YS5wYWNrYWdlX3VwZGF0ZXMsXG5cdFx0XHRcdFx0dmFsdWVDbGFzczogJ2JwMy10ZXh0LWludGVudC1kYW5nZXInLFxuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHRcdGlmIChlbmRwb2ludERhdGEudmlydHVhbGl6YXRpb24pIHtcblx0XHRcdFx0ZmllbGRzLnB1c2goe1xuXHRcdFx0XHRcdGxhYmVsOiAnVmlydHVhbGl6YXRpb24nLFxuXHRcdFx0XHRcdHZhbHVlOiBlbmRwb2ludERhdGEudmlydHVhbGl6YXRpb24sXG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdFx0aWYgKGVuZHBvaW50RGF0YS5jcHVfY29yZXMpIHtcblx0XHRcdFx0ZmllbGRzLnB1c2goe1xuXHRcdFx0XHRcdGxhYmVsOiAnQ1BVIENvcmVzJyxcblx0XHRcdFx0XHR2YWx1ZTogZW5kcG9pbnREYXRhLmNwdV9jb3Jlcyxcblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0XHRpZiAoZW5kcG9pbnREYXRhLm1lbV90b3RhbCkge1xuXHRcdFx0XHRmaWVsZHMucHVzaCh7XG5cdFx0XHRcdFx0bGFiZWw6ICdNZW1vcnknLFxuXHRcdFx0XHRcdHZhbHVlOiBlbmRwb2ludERhdGEubWVtX3RvdGFsICsgJ01CJyxcblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0XHRpZiAoZW5kcG9pbnREYXRhLnN3YXBfdG90YWwpIHtcblx0XHRcdFx0ZmllbGRzLnB1c2goe1xuXHRcdFx0XHRcdGxhYmVsOiAnU3dhcCcsXG5cdFx0XHRcdFx0dmFsdWU6IGVuZHBvaW50RGF0YS5zd2FwX3RvdGFsICsgJ01CJyxcblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0XHRpZiAoZW5kcG9pbnREYXRhLmh1Z2VfdG90YWwpIHtcblx0XHRcdFx0ZmllbGRzLnB1c2goe1xuXHRcdFx0XHRcdGxhYmVsOiAnSHVnZVBhZ2VzJyxcblx0XHRcdFx0XHR2YWx1ZTogZW5kcG9pbnREYXRhLmh1Z2VfdG90YWwgKyAnTUInLFxuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRpZiAoZW5kcG9pbnQuZGF0YS5tZF9zdGF0ICYmIGVuZHBvaW50LmRhdGEubWRfc3RhdC5sZW5ndGgpIHtcblx0XHRcdGxldCBmYWlsZWQgPSAwO1xuXHRcdFx0bGV0IHRvdGFsID0gMDtcblxuXHRcdFx0Zm9yIChsZXQgbWQgb2YgZW5kcG9pbnQuZGF0YS5tZF9zdGF0KSB7XG5cdFx0XHRcdGZhaWxlZCArPSBtZC5mYWlsZWQ7XG5cdFx0XHRcdHRvdGFsICs9IG1kLnRvdGFsO1xuXHRcdFx0fVxuXG5cdFx0XHRmaWVsZHMucHVzaCh7XG5cdFx0XHRcdGxhYmVsOiAnUmFpZCBEZXZpY2VzJyxcblx0XHRcdFx0dmFsdWU6ICdGYWlsZWQ6ICcgKyBmYWlsZWQgKyAnIFRvdGFsOiAnICsgdG90YWwsXG5cdFx0XHR9KTtcblx0XHR9XG5cblx0XHRsZXQgcm9sZXM6IEpTWC5FbGVtZW50W10gPSBbXTtcblx0XHRmb3IgKGxldCByb2xlIG9mIGVuZHBvaW50LnJvbGVzKSB7XG5cdFx0XHRyb2xlcy5wdXNoKFxuXHRcdFx0XHQ8ZGl2XG5cdFx0XHRcdFx0Y2xhc3NOYW1lPVwiYnAzLXRhZyBicDMtdGFnLXJlbW92YWJsZSBicDMtaW50ZW50LXByaW1hcnlcIlxuXHRcdFx0XHRcdHN0eWxlPXtjc3MuaXRlbX1cblx0XHRcdFx0XHRrZXk9e3JvbGV9XG5cdFx0XHRcdD5cblx0XHRcdFx0XHR7cm9sZX1cblx0XHRcdFx0XHQ8YnV0dG9uXG5cdFx0XHRcdFx0XHRjbGFzc05hbWU9XCJicDMtdGFnLXJlbW92ZVwiXG5cdFx0XHRcdFx0XHRvbk1vdXNlVXA9eygpOiB2b2lkID0+IHtcblx0XHRcdFx0XHRcdFx0dGhpcy5vblJlbW92ZVJvbGUocm9sZSk7XG5cdFx0XHRcdFx0XHR9fVxuXHRcdFx0XHRcdC8+XG5cdFx0XHRcdDwvZGl2Pixcblx0XHRcdCk7XG5cdFx0fVxuXG5cdFx0bGV0IGFsZXJ0czogc3RyaW5nW10gPSBbXTtcblx0XHRmb3IgKGxldCBhbGVydCBvZiBPYmplY3QudmFsdWVzKGVuZHBvaW50LmluZm8uYWxlcnRzKSkge1xuXHRcdFx0YWxlcnRzLnB1c2goYWxlcnQpO1xuXHRcdH1cblxuXHRcdGxldCBjaGVja3M6IHN0cmluZ1tdID0gW107XG5cdFx0Zm9yIChsZXQgY2hlY2sgb2YgT2JqZWN0LnZhbHVlcyhlbmRwb2ludC5pbmZvLmNoZWNrcykpIHtcblx0XHRcdGNoZWNrcy5wdXNoKGNoZWNrKTtcblx0XHR9XG5cblx0XHRsZXQgc2VjcmV0S2V5ID0gJyc7XG5cdFx0bGV0IHNlY3JldFVyaSA9ICcnO1xuXHRcdGlmICghZW5kcG9pbnQuaGFzX2NsaWVudF9rZXkpIHtcblx0XHRcdGlmIChlbmRwb2ludC5jbGllbnRfa2V5KSB7XG5cdFx0XHRcdHNlY3JldEtleSA9IGVuZHBvaW50LmlkICsgJ18nICsgZW5kcG9pbnQuY2xpZW50X2tleS5zZWNyZXQ7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRzZWNyZXRLZXkgPSAndW5rbm93bic7XG5cdFx0XHR9XG5cdFx0XHRzZWNyZXRVcmkgPSAncHJpdHVubDovLycgKyB3aW5kb3cubG9jYXRpb24uaG9zdCArICcvJyArIHNlY3JldEtleTtcblx0XHR9XG5cblx0XHRyZXR1cm4gPHRkXG5cdFx0XHRjbGFzc05hbWU9XCJicDMtY2VsbFwiXG5cdFx0XHRjb2xTcGFuPXszfVxuXHRcdFx0c3R5bGU9e2Nzcy5jYXJkfVxuXHRcdD5cblx0XHRcdDxkaXYgY2xhc3NOYW1lPVwibGF5b3V0IGhvcml6b250YWwgd3JhcFwiPlxuXHRcdFx0XHQ8ZGl2IHN0eWxlPXtjc3MuZ3JvdXB9PlxuXHRcdFx0XHRcdDxkaXZcblx0XHRcdFx0XHRcdGNsYXNzTmFtZT1cImxheW91dCBob3Jpem9udGFsIHRhYi1jbG9zZVwiXG5cdFx0XHRcdFx0XHRzdHlsZT17Y3NzLmJ1dHRvbnN9XG5cdFx0XHRcdFx0XHRvbkNsaWNrPXsoZXZ0KTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0XHRcdGxldCB0YXJnZXQgPSBldnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xuXG5cdFx0XHRcdFx0XHRcdGlmICh0YXJnZXQuY2xhc3NOYW1lLmluZGV4T2YoJ3RhYi1jbG9zZScpICE9PSAtMSkge1xuXHRcdFx0XHRcdFx0XHRcdHRoaXMucHJvcHMub25DbG9zZSgpO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9fVxuXHRcdFx0XHRcdD5cbiAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImJwMy1jb250cm9sIGJwMy1jaGVja2JveFwiXG4gICAgICAgICAgICAgICAgc3R5bGU9e2Nzcy5zZWxlY3R9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICAgICAgICBjaGVja2VkPXt0aGlzLnByb3BzLnNlbGVjdGVkfVxuXHRcdFx0XHRcdFx0XHRcdFx0b25DaGFuZ2U9eyhldnQpOiB2b2lkID0+IHtcblx0XHRcdFx0XHRcdFx0XHRcdH19XG4gICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoZXZ0KTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHRoaXMucHJvcHMub25TZWxlY3QoZXZ0LnNoaWZ0S2V5KTtcblx0XHRcdFx0XHRcdFx0XHRcdH19XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJicDMtY29udHJvbC1pbmRpY2F0b3JcIi8+XG4gICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICA8L2Rpdj5cblx0XHRcdFx0XHRcdDxkaXYgY2xhc3NOYW1lPVwiZmxleCB0YWItY2xvc2VcIi8+XG5cdFx0XHRcdFx0XHQ8Q29uZmlybUJ1dHRvblxuXHRcdFx0XHRcdFx0XHRzYWZlPXt0cnVlfVxuXHRcdFx0XHRcdFx0XHRjbGFzc05hbWU9XCJicDMtbWluaW1hbCBicDMtaW50ZW50LWRhbmdlciBicDMtaWNvbi10cmFzaFwiXG5cdFx0XHRcdFx0XHRcdHByb2dyZXNzQ2xhc3NOYW1lPVwiYnAzLWludGVudC1kYW5nZXJcIlxuXHRcdFx0XHRcdFx0XHRkaWFsb2dDbGFzc05hbWU9XCJicDMtaW50ZW50LWRhbmdlciBicDMtaWNvbi1kZWxldGVcIlxuXHRcdFx0XHRcdFx0XHRkaWFsb2dMYWJlbD1cIkRlbGV0ZSBFbmRwb2ludFwiXG5cdFx0XHRcdFx0XHRcdGNvbmZpcm1Nc2c9XCJQZXJtYW5lbnRseSBkZWxldGUgdGhpcyBlbmRwb2ludFwiXG5cdFx0XHRcdFx0XHRcdGNvbmZpcm1JbnB1dD17dHJ1ZX1cblx0XHRcdFx0XHRcdFx0aXRlbXM9e1tlbmRwb2ludC5uYW1lXX1cblx0XHRcdFx0XHRcdFx0ZGlzYWJsZWQ9e3RoaXMuc3RhdGUuZGlzYWJsZWR9XG5cdFx0XHRcdFx0XHRcdG9uQ29uZmlybT17dGhpcy5vbkRlbGV0ZX1cblx0XHRcdFx0XHRcdC8+XG5cdFx0XHRcdFx0PC9kaXY+XG5cdFx0XHRcdFx0PFBhZ2VJbnB1dFxuXHRcdFx0XHRcdFx0bGFiZWw9XCJOYW1lXCJcblx0XHRcdFx0XHRcdGhlbHA9XCJOYW1lIG9mIGVuZHBvaW50XCJcblx0XHRcdFx0XHRcdHR5cGU9XCJ0ZXh0XCJcblx0XHRcdFx0XHRcdHBsYWNlaG9sZGVyPVwiRW50ZXIgbmFtZVwiXG5cdFx0XHRcdFx0XHR2YWx1ZT17ZW5kcG9pbnQubmFtZX1cblx0XHRcdFx0XHRcdG9uQ2hhbmdlPXsodmFsKTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0XHRcdHRoaXMuc2V0KCduYW1lJywgdmFsKTtcblx0XHRcdFx0XHRcdH19XG5cdFx0XHRcdFx0Lz5cblx0XHRcdFx0XHQ8UGFnZUlucHV0XG5cdFx0XHRcdFx0XHRoaWRkZW49e2VuZHBvaW50Lmhhc19jbGllbnRfa2V5fVxuXHRcdFx0XHRcdFx0ZGlzYWJsZWQ9e3RoaXMuc3RhdGUuZGlzYWJsZWR9XG5cdFx0XHRcdFx0XHRyZWFkT25seT17dHJ1ZX1cblx0XHRcdFx0XHRcdGF1dG9TZWxlY3Q9e3RydWV9XG5cdFx0XHRcdFx0XHRsYWJlbD1cIlJlZ2lzdHJhdGlvbiBLZXlcIlxuXHRcdFx0XHRcdFx0aGVscD1cIktleSBmb3IgZW5kcG9pbnQgcmVnaXN0cmF0aW9uXCJcblx0XHRcdFx0XHRcdHR5cGU9XCJ0ZXh0XCJcblx0XHRcdFx0XHRcdHBsYWNlaG9sZGVyPVwiXCJcblx0XHRcdFx0XHRcdHZhbHVlPXtzZWNyZXRLZXl9XG5cdFx0XHRcdFx0Lz5cblx0XHRcdFx0XHQ8bGFiZWwgY2xhc3NOYW1lPVwiYnAzLWxhYmVsXCI+XG5cdFx0XHRcdFx0XHRSb2xlc1xuXHRcdFx0XHRcdFx0PEhlbHBcblx0XHRcdFx0XHRcdFx0dGl0bGU9XCJSb2xlc1wiXG5cdFx0XHRcdFx0XHRcdGNvbnRlbnQ9XCJUaGUgdXNlciByb2xlcyB0aGF0IHdpbGwgYmUgYWxsb3dlZCBhY2Nlc3MgdG8gdGhpcyBlbmRwb2ludC4gQXQgbGVhc3Qgb25lIHJvbGUgbXVzdCBtYXRjaCBmb3IgdGhlIHVzZXIgdG8gYWNjZXNzIHRoZSBlbmRwb2ludC5cIlxuXHRcdFx0XHRcdFx0Lz5cblx0XHRcdFx0XHRcdDxkaXY+XG5cdFx0XHRcdFx0XHRcdHtyb2xlc31cblx0XHRcdFx0XHRcdDwvZGl2PlxuXHRcdFx0XHRcdDwvbGFiZWw+XG5cdFx0XHRcdFx0PFBhZ2VJbnB1dEJ1dHRvblxuXHRcdFx0XHRcdFx0YnV0dG9uQ2xhc3M9XCJicDMtaW50ZW50LXN1Y2Nlc3MgYnAzLWljb24tYWRkXCJcblx0XHRcdFx0XHRcdGxhYmVsPVwiQWRkXCJcblx0XHRcdFx0XHRcdHR5cGU9XCJ0ZXh0XCJcblx0XHRcdFx0XHRcdHBsYWNlaG9sZGVyPVwiQWRkIHJvbGVcIlxuXHRcdFx0XHRcdFx0dmFsdWU9e3RoaXMuc3RhdGUuYWRkUm9sZX1cblx0XHRcdFx0XHRcdG9uQ2hhbmdlPXsodmFsKTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0XHRcdHRoaXMuc2V0U3RhdGUoe1xuXHRcdFx0XHRcdFx0XHRcdC4uLnRoaXMuc3RhdGUsXG5cdFx0XHRcdFx0XHRcdFx0YWRkUm9sZTogdmFsLFxuXHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdH19XG5cdFx0XHRcdFx0XHRvblN1Ym1pdD17dGhpcy5vbkFkZFJvbGV9XG5cdFx0XHRcdFx0Lz5cblx0XHRcdFx0XHQ8UGFnZVN3aXRjaFxuXHRcdFx0XHRcdFx0bGFiZWw9XCJTaG93IGNoYXJ0cyBhbmQgZG1lc2dcIlxuXHRcdFx0XHRcdFx0aGVscD1cIlNob3cgZW5kcG9pbnQgY2hhcnRzIGFuZCBkbWVzZy5cIlxuXHRcdFx0XHRcdFx0Y2hlY2tlZD17dGhpcy5zdGF0ZS5zaG93Q2hhcnRzfVxuXHRcdFx0XHRcdFx0aGlkZGVuPXshZW5kcG9pbnREYXRhLmhvc3RuYW1lfVxuXHRcdFx0XHRcdFx0b25Ub2dnbGU9eygpOiB2b2lkID0+IHtcblx0XHRcdFx0XHRcdFx0dGhpcy5zZXRTdGF0ZSh7XG5cdFx0XHRcdFx0XHRcdFx0Li4udGhpcy5zdGF0ZSxcblx0XHRcdFx0XHRcdFx0XHRzaG93Q2hhcnRzOiAhdGhpcy5zdGF0ZS5zaG93Q2hhcnRzLFxuXHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdH19XG5cdFx0XHRcdFx0Lz5cblx0XHRcdFx0XHQ8UGFnZUluZm9cblx0XHRcdFx0XHRcdGZpZWxkcz17W1xuXHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0bGFiZWw6ICdBbGVydHMnLFxuXHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBhbGVydHMubGVuZ3RoID8gYWxlcnRzIDogJy0nLFxuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0bGFiZWw6ICdIZWFsdGggQ2hlY2tzJyxcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogY2hlY2tzLmxlbmd0aCA/IGNoZWNrcyA6ICctJyxcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdF19XG5cdFx0XHRcdFx0Lz5cblx0XHRcdFx0PC9kaXY+XG5cdFx0XHRcdDxkaXYgc3R5bGU9e2Nzcy5ncm91cH0+XG5cdFx0XHRcdFx0PFBhZ2VJbmZvXG5cdFx0XHRcdFx0XHRmaWVsZHM9e2ZpZWxkc31cblx0XHRcdFx0XHQvPlxuXHRcdFx0XHRcdDxQYWdlSW5wdXRcblx0XHRcdFx0XHRcdGhpZGRlbj17ZW5kcG9pbnQuaGFzX2NsaWVudF9rZXl9XG5cdFx0XHRcdFx0XHRkaXNhYmxlZD17dGhpcy5zdGF0ZS5kaXNhYmxlZH1cblx0XHRcdFx0XHRcdHJlYWRPbmx5PXt0cnVlfVxuXHRcdFx0XHRcdFx0YXV0b1NlbGVjdD17dHJ1ZX1cblx0XHRcdFx0XHRcdGxhYmVsPVwiUmVnaXN0cmF0aW9uIFVSSVwiXG5cdFx0XHRcdFx0XHRoZWxwPVwiVVJJIGZvciBlbmRwb2ludCByZWdpc3RyYXRpb25cIlxuXHRcdFx0XHRcdFx0dHlwZT1cInRleHRcIlxuXHRcdFx0XHRcdFx0cGxhY2Vob2xkZXI9XCJcIlxuXHRcdFx0XHRcdFx0dmFsdWU9e3NlY3JldFVyaX1cblx0XHRcdFx0XHQvPlxuXHRcdFx0XHQ8L2Rpdj5cblx0XHRcdDwvZGl2PlxuXHRcdFx0PEVuZHBvaW50Q2hhcnRzXG5cdFx0XHRcdGVuZHBvaW50PXtlbmRwb2ludC5pZH1cblx0XHRcdFx0ZGlzYWJsZWQ9eyFlbmRwb2ludERhdGEuaG9zdG5hbWUgfHwgIXRoaXMuc3RhdGUuc2hvd0NoYXJ0c31cblx0XHRcdC8+XG5cdFx0XHQ8RW5kcG9pbnRLbXNnXG5cdFx0XHRcdGVuZHBvaW50PXtlbmRwb2ludC5pZH1cblx0XHRcdFx0ZGlzYWJsZWQ9eyFlbmRwb2ludERhdGEuaG9zdG5hbWUgfHwgIXRoaXMuc3RhdGUuc2hvd0NoYXJ0c31cblx0XHRcdC8+XG5cdFx0XHQ8UGFnZVNhdmVcblx0XHRcdFx0c3R5bGU9e2Nzcy5zYXZlfVxuXHRcdFx0XHRoaWRkZW49eyF0aGlzLnN0YXRlLmVuZHBvaW50ICYmICF0aGlzLnN0YXRlLm1lc3NhZ2V9XG5cdFx0XHRcdG1lc3NhZ2U9e3RoaXMuc3RhdGUubWVzc2FnZX1cblx0XHRcdFx0Y2hhbmdlZD17dGhpcy5zdGF0ZS5jaGFuZ2VkfVxuXHRcdFx0XHRkaXNhYmxlZD17dGhpcy5zdGF0ZS5kaXNhYmxlZH1cblx0XHRcdFx0bGlnaHQ9e3RydWV9XG5cdFx0XHRcdG9uQ2FuY2VsPXsoKTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0dGhpcy5zZXRTdGF0ZSh7XG5cdFx0XHRcdFx0XHQuLi50aGlzLnN0YXRlLFxuXHRcdFx0XHRcdFx0Y2hhbmdlZDogZmFsc2UsXG5cdFx0XHRcdFx0XHRlbmRwb2ludDogbnVsbCxcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fX1cblx0XHRcdFx0b25TYXZlPXt0aGlzLm9uU2F2ZX1cblx0XHRcdD5cblx0XHRcdFx0PENvbmZpcm1CdXR0b25cblx0XHRcdFx0XHRsYWJlbD1cIlJlc2V0IEtleVwiXG5cdFx0XHRcdFx0Y2xhc3NOYW1lPVwiYnAzLWludGVudC1kYW5nZXIgYnAzLWljb24ta2V5XCJcblx0XHRcdFx0XHRwcm9ncmVzc0NsYXNzTmFtZT1cImJwMy1pbnRlbnQtZGFuZ2VyXCJcblx0XHRcdFx0XHRzdHlsZT17Y3NzLmNvbnRyb2xCdXR0b259XG5cdFx0XHRcdFx0aGlkZGVuPXshZW5kcG9pbnQuaGFzX2NsaWVudF9rZXl9XG5cdFx0XHRcdFx0ZGlzYWJsZWQ9e3RoaXMuc3RhdGUuZGlzYWJsZWR9XG5cdFx0XHRcdFx0c2FmZT17dHJ1ZX1cblx0XHRcdFx0XHRvbkNvbmZpcm09eygpOiB2b2lkID0+IHtcblx0XHRcdFx0XHRcdHRoaXMub25SZXNldENsaWVudEtleSgpO1xuXHRcdFx0XHRcdH19XG5cdFx0XHRcdC8+XG5cdFx0XHQ8L1BhZ2VTYXZlPlxuXHRcdDwvdGQ+O1xuXHR9XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./app/components/EndpointDetailed.js\n");
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ EndpointDetailed)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var _actions_EndpointActions__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../actions/EndpointActions */ \"./app/actions/EndpointActions.js\");\n/* harmony import */ var _utils_MiscUtils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/MiscUtils */ \"./app/utils/MiscUtils.js\");\n/* harmony import */ var _PageInput__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./PageInput */ \"./app/components/PageInput.js\");\n/* harmony import */ var _PageSave__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./PageSave */ \"./app/components/PageSave.js\");\n/* harmony import */ var _PageInfo__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./PageInfo */ \"./app/components/PageInfo.js\");\n/* harmony import */ var _ConfirmButton__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./ConfirmButton */ \"./app/components/ConfirmButton.js\");\n/* harmony import */ var _PageInputButton__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./PageInputButton */ \"./app/components/PageInputButton.js\");\n/* harmony import */ var _EndpointCharts__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./EndpointCharts */ \"./app/components/EndpointCharts.js\");\n/* harmony import */ var _EndpointKmsg__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./EndpointKmsg */ \"./app/components/EndpointKmsg.js\");\n/* harmony import */ var _Help__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./Help */ \"./app/components/Help.js\");\n/* harmony import */ var _PageSwitch__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./PageSwitch */ \"./app/components/PageSwitch.js\");\n\n\n\n\n\n\n\n\n\n\n\n\nconst css = {\n card: {\n position: 'relative',\n padding: '48px 10px 0 10px',\n width: '100%',\n },\n remove: {\n position: 'absolute',\n top: '5px',\n right: '5px',\n },\n item: {\n margin: '9px 5px 0 5px',\n height: '20px',\n },\n itemsLabel: {\n display: 'block',\n },\n itemsAdd: {\n margin: '8px 0 15px 0',\n },\n group: {\n flex: 1,\n minWidth: '250px',\n margin: '0 10px',\n },\n controlButton: {\n marginRight: '10px',\n },\n save: {\n paddingBottom: '10px',\n },\n button: {\n height: '30px',\n },\n buttons: {\n cursor: 'pointer',\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n padding: '4px',\n height: '39px',\n backgroundColor: 'rgba(0, 0, 0, 0.13)',\n },\n label: {\n width: '100%',\n maxWidth: '280px',\n },\n status: {\n margin: '6px 0 0 1px',\n },\n icon: {\n marginRight: '3px',\n },\n inputGroup: {\n width: '100%',\n },\n protocol: {\n flex: '0 1 auto',\n },\n port: {\n flex: '1',\n },\n select: {\n margin: '7px 0px 0px 6px',\n paddingTop: '3px',\n },\n};\nclass EndpointDetailed extends react__WEBPACK_IMPORTED_MODULE_0__.Component {\n constructor(props, context) {\n super(props, context);\n this.onResetClientKey = () => {\n this.setState({\n ...this.state,\n disabled: true,\n });\n let endpoint = {\n ...this.props.endpoint,\n reset_client_key: true,\n };\n _actions_EndpointActions__WEBPACK_IMPORTED_MODULE_1__.commit(endpoint).then(() => {\n this.setState({\n ...this.state,\n message: 'Client key reset',\n changed: false,\n disabled: false,\n });\n setTimeout(() => {\n if (!this.state.changed) {\n this.setState({\n ...this.state,\n endpoint: null,\n changed: false,\n });\n }\n }, 1000);\n setTimeout(() => {\n if (!this.state.changed) {\n this.setState({\n ...this.state,\n message: '',\n });\n }\n }, 3000);\n }).catch(() => {\n this.setState({\n ...this.state,\n message: '',\n disabled: false,\n });\n });\n };\n this.onSave = () => {\n this.setState({\n ...this.state,\n disabled: true,\n });\n _actions_EndpointActions__WEBPACK_IMPORTED_MODULE_1__.commit(this.state.endpoint).then(() => {\n this.setState({\n ...this.state,\n message: 'Your changes have been saved',\n changed: false,\n disabled: false,\n });\n setTimeout(() => {\n if (!this.state.changed) {\n this.setState({\n ...this.state,\n endpoint: null,\n changed: false,\n });\n }\n }, 1000);\n setTimeout(() => {\n if (!this.state.changed) {\n this.setState({\n ...this.state,\n message: '',\n });\n }\n }, 3000);\n }).catch(() => {\n this.setState({\n ...this.state,\n message: '',\n disabled: false,\n });\n });\n };\n this.onDelete = () => {\n this.setState({\n ...this.state,\n disabled: true,\n });\n _actions_EndpointActions__WEBPACK_IMPORTED_MODULE_1__.remove(this.props.endpoint.id).then(() => {\n this.setState({\n ...this.state,\n disabled: false,\n });\n }).catch(() => {\n this.setState({\n ...this.state,\n disabled: false,\n });\n });\n };\n this.onAddRole = () => {\n let endpoint;\n if (this.state.changed) {\n endpoint = {\n ...this.state.endpoint,\n };\n }\n else {\n endpoint = {\n ...this.props.endpoint,\n };\n }\n let roles = [\n ...endpoint.roles,\n ];\n if (!this.state.addRole) {\n return;\n }\n if (roles.indexOf(this.state.addRole) === -1) {\n roles.push(this.state.addRole);\n }\n roles.sort();\n endpoint.roles = roles;\n this.setState({\n ...this.state,\n changed: true,\n message: '',\n addRole: '',\n endpoint: endpoint,\n });\n };\n this.state = {\n disabled: false,\n changed: false,\n message: '',\n addRole: '',\n endpoint: null,\n showCharts: true,\n };\n }\n set(name, val) {\n let endpoint;\n if (this.state.changed) {\n endpoint = {\n ...this.state.endpoint,\n };\n }\n else {\n endpoint = {\n ...this.props.endpoint,\n };\n }\n endpoint[name] = val;\n this.setState({\n ...this.state,\n changed: true,\n endpoint: endpoint,\n });\n }\n onRemoveRole(role) {\n let endpoint;\n if (this.state.changed) {\n endpoint = {\n ...this.state.endpoint,\n };\n }\n else {\n endpoint = {\n ...this.props.endpoint,\n };\n }\n let roles = [\n ...endpoint.roles,\n ];\n let i = roles.indexOf(role);\n if (i === -1) {\n return;\n }\n roles.splice(i, 1);\n endpoint.roles = roles;\n this.setState({\n ...this.state,\n changed: true,\n message: '',\n addRole: '',\n endpoint: endpoint,\n });\n }\n render() {\n let endpoint = this.state.endpoint ||\n this.props.endpoint;\n let fields = [\n {\n label: 'ID',\n value: this.props.endpoint.id || 'None',\n },\n ];\n let endpointData = endpoint.data || {};\n if (endpointData) {\n if (endpointData.version) {\n fields.push({\n label: 'Endpoint Version',\n value: endpointData.version,\n });\n }\n if (endpointData.hostname) {\n fields.push({\n label: 'Hostname',\n value: endpointData.hostname,\n });\n }\n if (endpointData.uptime) {\n fields.push({\n label: 'Uptime',\n value: _utils_MiscUtils__WEBPACK_IMPORTED_MODULE_2__.formatUptime(endpointData.uptime),\n });\n }\n if (endpointData.platform) {\n fields.push({\n label: 'Platform',\n value: endpointData.platform,\n });\n }\n if (endpointData.package_updates) {\n fields.push({\n label: 'System Package Updates',\n value: endpointData.package_updates,\n valueClass: 'bp3-text-intent-danger',\n });\n }\n if (endpointData.virtualization) {\n fields.push({\n label: 'Virtualization',\n value: endpointData.virtualization,\n });\n }\n if (endpointData.cpu_cores) {\n fields.push({\n label: 'CPU Cores',\n value: endpointData.cpu_cores,\n });\n }\n if (endpointData.mem_total) {\n fields.push({\n label: 'Memory',\n value: endpointData.mem_total + 'MB',\n });\n }\n if (endpointData.swap_total) {\n fields.push({\n label: 'Swap',\n value: endpointData.swap_total + 'MB',\n });\n }\n if (endpointData.huge_total) {\n fields.push({\n label: 'HugePages',\n value: endpointData.huge_total + 'MB',\n });\n }\n }\n if (endpoint.data.md_stat && endpoint.data.md_stat.length) {\n let failed = 0;\n let total = 0;\n for (let md of endpoint.data.md_stat) {\n failed += md.failed;\n total += md.total;\n }\n fields.push({\n label: 'Raid Devices',\n value: 'Failed: ' + failed + ' Total: ' + total,\n });\n }\n let roles = [];\n for (let role of endpoint.roles) {\n roles.push(react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", { className: \"bp3-tag bp3-tag-removable bp3-intent-primary\", style: css.item, key: role },\n role,\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"button\", { className: \"bp3-tag-remove\", onMouseUp: () => {\n this.onRemoveRole(role);\n } })));\n }\n let alerts = [];\n for (let alert of Object.values(endpoint.info.alerts)) {\n alerts.push(alert);\n }\n let checks = [];\n for (let check of Object.values(endpoint.info.checks)) {\n checks.push(check);\n }\n let secretKey = '';\n let secretUri = '';\n if (!endpoint.has_client_key) {\n if (endpoint.client_key) {\n secretKey = endpoint.id + '_' + endpoint.client_key.secret;\n }\n else {\n secretKey = 'unknown';\n }\n secretUri = 'pritunl://' + window.location.host + '/' + secretKey;\n }\n return react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"td\", { className: \"bp3-cell\", colSpan: 3, style: css.card },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", { className: \"layout horizontal wrap\" },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", { style: css.group },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", { className: \"layout horizontal tab-close\", style: css.buttons, onClick: (evt) => {\n let target = evt.target;\n if (target.className.indexOf('tab-close') !== -1) {\n this.props.onClose();\n }\n } },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", null,\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"label\", { className: \"bp3-control bp3-checkbox\", style: css.select },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"input\", { type: \"checkbox\", checked: this.props.selected, onChange: (evt) => {\n }, onClick: (evt) => {\n this.props.onSelect(evt.shiftKey);\n } }),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"span\", { className: \"bp3-control-indicator\" }))),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", { className: \"flex tab-close\" }),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(_ConfirmButton__WEBPACK_IMPORTED_MODULE_6__[\"default\"], { safe: true, className: \"bp3-minimal bp3-intent-danger bp3-icon-trash\", progressClassName: \"bp3-intent-danger\", dialogClassName: \"bp3-intent-danger bp3-icon-delete\", dialogLabel: \"Delete Endpoint\", confirmMsg: \"Permanently delete this endpoint\", confirmInput: true, items: [endpoint.name], disabled: this.state.disabled, onConfirm: this.onDelete })),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(_PageInput__WEBPACK_IMPORTED_MODULE_3__[\"default\"], { label: \"Name\", help: \"Name of endpoint\", type: \"text\", placeholder: \"Enter name\", value: endpoint.name, onChange: (val) => {\n this.set('name', val);\n } }),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(_PageInput__WEBPACK_IMPORTED_MODULE_3__[\"default\"], { hidden: endpoint.has_client_key, disabled: this.state.disabled, readOnly: true, autoSelect: true, label: \"Registration Key\", help: \"Key for endpoint registration\", type: \"text\", placeholder: \"\", value: secretKey }),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"label\", { className: \"bp3-label\" },\n \"Roles\",\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(_Help__WEBPACK_IMPORTED_MODULE_10__[\"default\"], { title: \"Roles\", content: \"The user roles that will be allowed access to this endpoint. At least one role must match for the user to access the endpoint.\" }),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", null, roles)),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(_PageInputButton__WEBPACK_IMPORTED_MODULE_7__[\"default\"], { buttonClass: \"bp3-intent-success bp3-icon-add\", label: \"Add\", type: \"text\", placeholder: \"Add role\", value: this.state.addRole, onChange: (val) => {\n this.setState({\n ...this.state,\n addRole: val,\n });\n }, onSubmit: this.onAddRole }),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(_PageSwitch__WEBPACK_IMPORTED_MODULE_11__[\"default\"], { label: \"Show charts and dmesg\", help: \"Show endpoint charts and dmesg.\", checked: this.state.showCharts, hidden: !endpointData.hostname, onToggle: () => {\n this.setState({\n ...this.state,\n showCharts: !this.state.showCharts,\n });\n } }),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(_PageInfo__WEBPACK_IMPORTED_MODULE_5__[\"default\"], { fields: [\n {\n label: 'Alerts',\n value: alerts.length ? alerts : '-',\n },\n {\n label: 'Health Checks',\n value: checks.length ? checks : '-',\n },\n ] })),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", { style: css.group },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(_PageInfo__WEBPACK_IMPORTED_MODULE_5__[\"default\"], { fields: fields }),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(_PageInput__WEBPACK_IMPORTED_MODULE_3__[\"default\"], { hidden: endpoint.has_client_key, disabled: this.state.disabled, readOnly: true, autoSelect: true, label: \"Registration URI\", help: \"URI for endpoint registration\", type: \"text\", placeholder: \"\", value: secretUri }))),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(_EndpointCharts__WEBPACK_IMPORTED_MODULE_8__[\"default\"], { endpoint: endpoint.id, disabled: !endpointData.hostname || !this.state.showCharts }),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(_EndpointKmsg__WEBPACK_IMPORTED_MODULE_9__[\"default\"], { endpoint: endpoint.id, disabled: !endpointData.hostname || !this.state.showCharts }),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(_PageSave__WEBPACK_IMPORTED_MODULE_4__[\"default\"], { style: css.save, hidden: !this.state.endpoint && !this.state.message, message: this.state.message, changed: this.state.changed, disabled: this.state.disabled, light: true, onCancel: () => {\n this.setState({\n ...this.state,\n changed: false,\n endpoint: null,\n });\n }, onSave: this.onSave },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(_ConfirmButton__WEBPACK_IMPORTED_MODULE_6__[\"default\"], { label: \"Reset Key\", className: \"bp3-intent-danger bp3-icon-key\", progressClassName: \"bp3-intent-danger\", style: css.controlButton, hidden: !endpoint.has_client_key, disabled: this.state.disabled, safe: true, onConfirm: () => {\n this.onResetClientKey();\n } })));\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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cC9jb21wb25lbnRzL0VuZHBvaW50RGV0YWlsZWQudHN4PzU3NmMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8vIDxyZWZlcmVuY2UgcGF0aD1cIi4uL1JlZmVyZW5jZXMuZC50c1wiLz5cbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCAqIGFzIEVuZHBvaW50VHlwZXMgZnJvbSAnLi4vdHlwZXMvRW5kcG9pbnRUeXBlcyc7XG5pbXBvcnQgKiBhcyBBdXRob3JpdHlUeXBlcyBmcm9tIFwiLi4vdHlwZXMvQXV0aG9yaXR5VHlwZXNcIjtcbmltcG9ydCAqIGFzIEVuZHBvaW50QWN0aW9ucyBmcm9tICcuLi9hY3Rpb25zL0VuZHBvaW50QWN0aW9ucyc7XG5pbXBvcnQgKiBhcyBQYWdlSW5mb3MgZnJvbSAnLi9QYWdlSW5mbyc7XG5pbXBvcnQgKiBhcyBNaXNjVXRpbHMgZnJvbSAnLi4vdXRpbHMvTWlzY1V0aWxzJztcbmltcG9ydCBQYWdlSW5wdXQgZnJvbSAnLi9QYWdlSW5wdXQnO1xuaW1wb3J0IFBhZ2VTYXZlIGZyb20gJy4vUGFnZVNhdmUnO1xuaW1wb3J0IFBhZ2VJbmZvIGZyb20gJy4vUGFnZUluZm8nO1xuaW1wb3J0IENvbmZpcm1CdXR0b24gZnJvbSAnLi9Db25maXJtQnV0dG9uJztcbmltcG9ydCBQYWdlSW5wdXRCdXR0b24gZnJvbSAnLi9QYWdlSW5wdXRCdXR0b24nO1xuaW1wb3J0IEVuZHBvaW50Q2hhcnRzIGZyb20gJy4vRW5kcG9pbnRDaGFydHMnO1xuaW1wb3J0IEVuZHBvaW50S21zZyBmcm9tICcuL0VuZHBvaW50S21zZyc7XG5pbXBvcnQgSGVscCBmcm9tICcuL0hlbHAnO1xuaW1wb3J0IFBhZ2VTd2l0Y2ggZnJvbSBcIi4vUGFnZVN3aXRjaFwiO1xuXG5pbnRlcmZhY2UgUHJvcHMge1xuXHRlbmRwb2ludDogRW5kcG9pbnRUeXBlcy5FbmRwb2ludFJvO1xuXHRhdXRob3JpdGllczogQXV0aG9yaXR5VHlwZXMuQXV0aG9yaXRpZXNSbztcblx0c2VsZWN0ZWQ6IGJvb2xlYW47XG5cdG9uU2VsZWN0OiAoc2hpZnQ6IGJvb2xlYW4pID0+IHZvaWQ7XG5cdG9uQ2xvc2U6ICgpID0+IHZvaWQ7XG59XG5cbmludGVyZmFjZSBTdGF0ZSB7XG5cdGRpc2FibGVkOiBib29sZWFuO1xuXHRjaGFuZ2VkOiBib29sZWFuO1xuXHRtZXNzYWdlOiBzdHJpbmc7XG5cdGFkZFJvbGU6IHN0cmluZztcblx0c2hvd0NoYXJ0czogYm9vbGVhbjtcblx0ZW5kcG9pbnQ6IEVuZHBvaW50VHlwZXMuRW5kcG9pbnQ7XG59XG5cbmNvbnN0IGNzcyA9IHtcblx0Y2FyZDoge1xuXHRcdHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuXHRcdHBhZGRpbmc6ICc0OHB4IDEwcHggMCAxMHB4Jyxcblx0XHR3aWR0aDogJzEwMCUnLFxuXHR9IGFzIFJlYWN0LkNTU1Byb3BlcnRpZXMsXG5cdHJlbW92ZToge1xuXHRcdHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuXHRcdHRvcDogJzVweCcsXG5cdFx0cmlnaHQ6ICc1cHgnLFxuXHR9IGFzIFJlYWN0LkNTU1Byb3BlcnRpZXMsXG5cdGl0ZW06IHtcblx0XHRtYXJnaW46ICc5cHggNXB4IDAgNXB4Jyxcblx0XHRoZWlnaHQ6ICcyMHB4Jyxcblx0fSBhcyBSZWFjdC5DU1NQcm9wZXJ0aWVzLFxuXHRpdGVtc0xhYmVsOiB7XG5cdFx0ZGlzcGxheTogJ2Jsb2NrJyxcblx0fSBhcyBSZWFjdC5DU1NQcm9wZXJ0aWVzLFxuXHRpdGVtc0FkZDoge1xuXHRcdG1hcmdpbjogJzhweCAwIDE1cHggMCcsXG5cdH0gYXMgUmVhY3QuQ1NTUHJvcGVydGllcyxcblx0Z3JvdXA6IHtcblx0XHRmbGV4OiAxLFxuXHRcdG1pbldpZHRoOiAnMjUwcHgnLFxuXHRcdG1hcmdpbjogJzAgMTBweCcsXG5cdH0gYXMgUmVhY3QuQ1NTUHJvcGVydGllcyxcblx0Y29udHJvbEJ1dHRvbjoge1xuXHRcdG1hcmdpblJpZ2h0OiAnMTBweCcsXG5cdH0gYXMgUmVhY3QuQ1NTUHJvcGVydGllcyxcblx0c2F2ZToge1xuXHRcdHBhZGRpbmdCb3R0b206ICcxMHB4Jyxcblx0fSBhcyBSZWFjdC5DU1NQcm9wZXJ0aWVzLFxuXHRidXR0b246IHtcblx0XHRoZWlnaHQ6ICczMHB4Jyxcblx0fSBhcyBSZWFjdC5DU1NQcm9wZXJ0aWVzLFxuXHRidXR0b25zOiB7XG5cdFx0Y3Vyc29yOiAncG9pbnRlcicsXG5cdFx0cG9zaXRpb246ICdhYnNvbHV0ZScsXG5cdFx0dG9wOiAwLFxuXHRcdGxlZnQ6IDAsXG5cdFx0cmlnaHQ6IDAsXG5cdFx0cGFkZGluZzogJzRweCcsXG5cdFx0aGVpZ2h0OiAnMzlweCcsXG5cdFx0YmFja2dyb3VuZENvbG9yOiAncmdiYSgwLCAwLCAwLCAwLjEzKScsXG5cdH0gYXMgUmVhY3QuQ1NTUHJvcGVydGllcyxcblx0bGFiZWw6IHtcblx0XHR3aWR0aDogJzEwMCUnLFxuXHRcdG1heFdpZHRoOiAnMjgwcHgnLFxuXHR9IGFzIFJlYWN0LkNTU1Byb3BlcnRpZXMsXG5cdHN0YXR1czoge1xuXHRcdG1hcmdpbjogJzZweCAwIDAgMXB4Jyxcblx0fSBhcyBSZWFjdC5DU1NQcm9wZXJ0aWVzLFxuXHRpY29uOiB7XG5cdFx0bWFyZ2luUmlnaHQ6ICczcHgnLFxuXHR9IGFzIFJlYWN0LkNTU1Byb3BlcnRpZXMsXG5cdGlucHV0R3JvdXA6IHtcblx0XHR3aWR0aDogJzEwMCUnLFxuXHR9IGFzIFJlYWN0LkNTU1Byb3BlcnRpZXMsXG5cdHByb3RvY29sOiB7XG5cdFx0ZmxleDogJzAgMSBhdXRvJyxcblx0fSBhcyBSZWFjdC5DU1NQcm9wZXJ0aWVzLFxuXHRwb3J0OiB7XG5cdFx0ZmxleDogJzEnLFxuXHR9IGFzIFJlYWN0LkNTU1Byb3BlcnRpZXMsXG5cdHNlbGVjdDoge1xuXHRcdG1hcmdpbjogJzdweCAwcHggMHB4IDZweCcsXG5cdFx0cGFkZGluZ1RvcDogJzNweCcsXG5cdH0gYXMgUmVhY3QuQ1NTUHJvcGVydGllcyxcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEVuZHBvaW50RGV0YWlsZWQgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQ8UHJvcHMsIFN0YXRlPiB7XG5cdGNvbnN0cnVjdG9yKHByb3BzOiBhbnksIGNvbnRleHQ6IGFueSkge1xuXHRcdHN1cGVyKHByb3BzLCBjb250ZXh0KTtcblx0XHR0aGlzLnN0YXRlID0ge1xuXHRcdFx0ZGlzYWJsZWQ6IGZhbHNlLFxuXHRcdFx0Y2hhbmdlZDogZmFsc2UsXG5cdFx0XHRtZXNzYWdlOiAnJyxcblx0XHRcdGFkZFJvbGU6ICcnLFxuXHRcdFx0ZW5kcG9pbnQ6IG51bGwsXG5cdFx0XHRzaG93Q2hhcnRzOiB0cnVlLFxuXHRcdH07XG5cdH1cblxuXHRzZXQobmFtZTogc3RyaW5nLCB2YWw6IGFueSk6IHZvaWQge1xuXHRcdGxldCBlbmRwb2ludDogYW55O1xuXG5cdFx0aWYgKHRoaXMuc3RhdGUuY2hhbmdlZCkge1xuXHRcdFx0ZW5kcG9pbnQgPSB7XG5cdFx0XHRcdC4uLnRoaXMuc3RhdGUuZW5kcG9pbnQsXG5cdFx0XHR9O1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRlbmRwb2ludCA9IHtcblx0XHRcdFx0Li4udGhpcy5wcm9wcy5lbmRwb2ludCxcblx0XHRcdH07XG5cdFx0fVxuXG5cdFx0ZW5kcG9pbnRbbmFtZV0gPSB2YWw7XG5cblx0XHR0aGlzLnNldFN0YXRlKHtcblx0XHRcdC4uLnRoaXMuc3RhdGUsXG5cdFx0XHRjaGFuZ2VkOiB0cnVlLFxuXHRcdFx0ZW5kcG9pbnQ6IGVuZHBvaW50LFxuXHRcdH0pO1xuXHR9XG5cblx0b25SZXNldENsaWVudEtleSA9ICgpOiB2b2lkID0+IHtcblx0XHR0aGlzLnNldFN0YXRlKHtcblx0XHRcdC4uLnRoaXMuc3RhdGUsXG5cdFx0XHRkaXNhYmxlZDogdHJ1ZSxcblx0XHR9KTtcblxuXHRcdGxldCBlbmRwb2ludCA9IHtcblx0XHRcdC4uLnRoaXMucHJvcHMuZW5kcG9pbnQsXG5cdFx0XHRyZXNldF9jbGllbnRfa2V5OiB0cnVlLFxuXHRcdH07XG5cblx0XHRFbmRwb2ludEFjdGlvbnMuY29tbWl0KGVuZHBvaW50KS50aGVuKCgpOiB2b2lkID0+IHtcblx0XHRcdHRoaXMuc2V0U3RhdGUoe1xuXHRcdFx0XHQuLi50aGlzLnN0YXRlLFxuXHRcdFx0XHRtZXNzYWdlOiAnQ2xpZW50IGtleSByZXNldCcsXG5cdFx0XHRcdGNoYW5nZWQ6IGZhbHNlLFxuXHRcdFx0XHRkaXNhYmxlZDogZmFsc2UsXG5cdFx0XHR9KTtcblxuXHRcdFx0c2V0VGltZW91dCgoKTogdm9pZCA9PiB7XG5cdFx0XHRcdGlmICghdGhpcy5zdGF0ZS5jaGFuZ2VkKSB7XG5cdFx0XHRcdFx0dGhpcy5zZXRTdGF0ZSh7XG5cdFx0XHRcdFx0XHQuLi50aGlzLnN0YXRlLFxuXHRcdFx0XHRcdFx0ZW5kcG9pbnQ6IG51bGwsXG5cdFx0XHRcdFx0XHRjaGFuZ2VkOiBmYWxzZSxcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0fSwgMTAwMCk7XG5cblx0XHRcdHNldFRpbWVvdXQoKCk6IHZvaWQgPT4ge1xuXHRcdFx0XHRpZiAoIXRoaXMuc3RhdGUuY2hhbmdlZCkge1xuXHRcdFx0XHRcdHRoaXMuc2V0U3RhdGUoe1xuXHRcdFx0XHRcdFx0Li4udGhpcy5zdGF0ZSxcblx0XHRcdFx0XHRcdG1lc3NhZ2U6ICcnLFxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9LCAzMDAwKTtcblx0XHR9KS5jYXRjaCgoKTogdm9pZCA9PiB7XG5cdFx0XHR0aGlzLnNldFN0YXRlKHtcblx0XHRcdFx0Li4udGhpcy5zdGF0ZSxcblx0XHRcdFx0bWVzc2FnZTogJycsXG5cdFx0XHRcdGRpc2FibGVkOiBmYWxzZSxcblx0XHRcdH0pO1xuXHRcdH0pO1xuXHR9XG5cblx0b25TYXZlID0gKCk6IHZvaWQgPT4ge1xuXHRcdHRoaXMuc2V0U3RhdGUoe1xuXHRcdFx0Li4udGhpcy5zdGF0ZSxcblx0XHRcdGRpc2FibGVkOiB0cnVlLFxuXHRcdH0pO1xuXHRcdEVuZHBvaW50QWN0aW9ucy5jb21taXQodGhpcy5zdGF0ZS5lbmRwb2ludCkudGhlbigoKTogdm9pZCA9PiB7XG5cdFx0XHR0aGlzLnNldFN0YXRlKHtcblx0XHRcdFx0Li4udGhpcy5zdGF0ZSxcblx0XHRcdFx0bWVzc2FnZTogJ1lvdXIgY2hhbmdlcyBoYXZlIGJlZW4gc2F2ZWQnLFxuXHRcdFx0XHRjaGFuZ2VkOiBmYWxzZSxcblx0XHRcdFx0ZGlzYWJsZWQ6IGZhbHNlLFxuXHRcdFx0fSk7XG5cblx0XHRcdHNldFRpbWVvdXQoKCk6IHZvaWQgPT4ge1xuXHRcdFx0XHRpZiAoIXRoaXMuc3RhdGUuY2hhbmdlZCkge1xuXHRcdFx0XHRcdHRoaXMuc2V0U3RhdGUoe1xuXHRcdFx0XHRcdFx0Li4udGhpcy5zdGF0ZSxcblx0XHRcdFx0XHRcdGVuZHBvaW50OiBudWxsLFxuXHRcdFx0XHRcdFx0Y2hhbmdlZDogZmFsc2UsXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblx0XHRcdH0sIDEwMDApO1xuXG5cdFx0XHRzZXRUaW1lb3V0KCgpOiB2b2lkID0+IHtcblx0XHRcdFx0aWYgKCF0aGlzLnN0YXRlLmNoYW5nZWQpIHtcblx0XHRcdFx0XHR0aGlzLnNldFN0YXRlKHtcblx0XHRcdFx0XHRcdC4uLnRoaXMuc3RhdGUsXG5cdFx0XHRcdFx0XHRtZXNzYWdlOiAnJyxcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0fSwgMzAwMCk7XG5cdFx0fSkuY2F0Y2goKCk6IHZvaWQgPT4ge1xuXHRcdFx0dGhpcy5zZXRTdGF0ZSh7XG5cdFx0XHRcdC4uLnRoaXMuc3RhdGUsXG5cdFx0XHRcdG1lc3NhZ2U6ICcnLFxuXHRcdFx0XHRkaXNhYmxlZDogZmFsc2UsXG5cdFx0XHR9KTtcblx0XHR9KTtcblx0fVxuXG5cdG9uRGVsZXRlID0gKCk6IHZvaWQgPT4ge1xuXHRcdHRoaXMuc2V0U3RhdGUoe1xuXHRcdFx0Li4udGhpcy5zdGF0ZSxcblx0XHRcdGRpc2FibGVkOiB0cnVlLFxuXHRcdH0pO1xuXHRcdEVuZHBvaW50QWN0aW9ucy5yZW1vdmUodGhpcy5wcm9wcy5lbmRwb2ludC5pZCkudGhlbigoKTogdm9pZCA9PiB7XG5cdFx0XHR0aGlzLnNldFN0YXRlKHtcblx0XHRcdFx0Li4udGhpcy5zdGF0ZSxcblx0XHRcdFx0ZGlzYWJsZWQ6IGZhbHNlLFxuXHRcdFx0fSk7XG5cdFx0fSkuY2F0Y2goKCk6IHZvaWQgPT4ge1xuXHRcdFx0dGhpcy5zZXRTdGF0ZSh7XG5cdFx0XHRcdC4uLnRoaXMuc3RhdGUsXG5cdFx0XHRcdGRpc2FibGVkOiBmYWxzZSxcblx0XHRcdH0pO1xuXHRcdH0pO1xuXHR9XG5cblx0b25BZGRSb2xlID0gKCk6IHZvaWQgPT4ge1xuXHRcdGxldCBlbmRwb2ludDogRW5kcG9pbnRUeXBlcy5FbmRwb2ludDtcblxuXHRcdGlmICh0aGlzLnN0YXRlLmNoYW5nZWQpIHtcblx0XHRcdGVuZHBvaW50ID0ge1xuXHRcdFx0XHQuLi50aGlzLnN0YXRlLmVuZHBvaW50LFxuXHRcdFx0fTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0ZW5kcG9pbnQgPSB7XG5cdFx0XHRcdC4uLnRoaXMucHJvcHMuZW5kcG9pbnQsXG5cdFx0XHR9O1xuXHRcdH1cblxuXHRcdGxldCByb2xlcyA9IFtcblx0XHRcdC4uLmVuZHBvaW50LnJvbGVzLFxuXHRcdF07XG5cblx0XHRpZiAoIXRoaXMuc3RhdGUuYWRkUm9sZSkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdGlmIChyb2xlcy5pbmRleE9mKHRoaXMuc3RhdGUuYWRkUm9sZSkgPT09IC0xKSB7XG5cdFx0XHRyb2xlcy5wdXNoKHRoaXMuc3RhdGUuYWRkUm9sZSk7XG5cdFx0fVxuXG5cdFx0cm9sZXMuc29ydCgpO1xuXG5cdFx0ZW5kcG9pbnQucm9sZXMgPSByb2xlcztcblxuXHRcdHRoaXMuc2V0U3RhdGUoe1xuXHRcdFx0Li4udGhpcy5zdGF0ZSxcblx0XHRcdGNoYW5nZWQ6IHRydWUsXG5cdFx0XHRtZXNzYWdlOiAnJyxcblx0XHRcdGFkZFJvbGU6ICcnLFxuXHRcdFx0ZW5kcG9pbnQ6IGVuZHBvaW50LFxuXHRcdH0pO1xuXHR9XG5cblx0b25SZW1vdmVSb2xlKHJvbGU6IHN0cmluZyk6IHZvaWQge1xuXHRcdGxldCBlbmRwb2ludDogRW5kcG9pbnRUeXBlcy5FbmRwb2ludDtcblxuXHRcdGlmICh0aGlzLnN0YXRlLmNoYW5nZWQpIHtcblx0XHRcdGVuZHBvaW50ID0ge1xuXHRcdFx0XHQuLi50aGlzLnN0YXRlLmVuZHBvaW50LFxuXHRcdFx0fTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0ZW5kcG9pbnQgPSB7XG5cdFx0XHRcdC4uLnRoaXMucHJvcHMuZW5kcG9pbnQsXG5cdFx0XHR9O1xuXHRcdH1cblxuXHRcdGxldCByb2xlcyA9IFtcblx0XHRcdC4uLmVuZHBvaW50LnJvbGVzLFxuXHRcdF07XG5cblx0XHRsZXQgaSA9IHJvbGVzLmluZGV4T2Yocm9sZSk7XG5cdFx0aWYgKGkgPT09IC0xKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0cm9sZXMuc3BsaWNlKGksIDEpO1xuXG5cdFx0ZW5kcG9pbnQucm9sZXMgPSByb2xlcztcblxuXHRcdHRoaXMuc2V0U3RhdGUoe1xuXHRcdFx0Li4udGhpcy5zdGF0ZSxcblx0XHRcdGNoYW5nZWQ6IHRydWUsXG5cdFx0XHRtZXNzYWdlOiAnJyxcblx0XHRcdGFkZFJvbGU6ICcnLFxuXHRcdFx0ZW5kcG9pbnQ6IGVuZHBvaW50LFxuXHRcdH0pO1xuXHR9XG5cblx0cmVuZGVyKCk6IEpTWC5FbGVtZW50IHtcblx0XHRsZXQgZW5kcG9pbnQ6IEVuZHBvaW50VHlwZXMuRW5kcG9pbnQgPSB0aGlzLnN0YXRlLmVuZHBvaW50IHx8XG5cdFx0XHR0aGlzLnByb3BzLmVuZHBvaW50O1xuXG5cdFx0bGV0IGZpZWxkczogUGFnZUluZm9zLkZpZWxkW10gPSBbXG5cdFx0XHR7XG5cdFx0XHRcdGxhYmVsOiAnSUQnLFxuXHRcdFx0XHR2YWx1ZTogdGhpcy5wcm9wcy5lbmRwb2ludC5pZCB8fCAnTm9uZScsXG5cdFx0XHR9LFxuXHRcdF07XG5cblx0XHRsZXQgZW5kcG9pbnREYXRhID0gZW5kcG9pbnQuZGF0YSB8fCB7fTtcblx0XHRpZiAoZW5kcG9pbnREYXRhKSB7XG5cdFx0XHRpZiAoZW5kcG9pbnREYXRhLnZlcnNpb24pIHtcblx0XHRcdFx0ZmllbGRzLnB1c2goe1xuXHRcdFx0XHRcdGxhYmVsOiAnRW5kcG9pbnQgVmVyc2lvbicsXG5cdFx0XHRcdFx0dmFsdWU6IGVuZHBvaW50RGF0YS52ZXJzaW9uLFxuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHRcdGlmIChlbmRwb2ludERhdGEuaG9zdG5hbWUpIHtcblx0XHRcdFx0ZmllbGRzLnB1c2goe1xuXHRcdFx0XHRcdGxhYmVsOiAnSG9zdG5hbWUnLFxuXHRcdFx0XHRcdHZhbHVlOiBlbmRwb2ludERhdGEuaG9zdG5hbWUsXG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdFx0aWYgKGVuZHBvaW50RGF0YS51cHRpbWUpIHtcblx0XHRcdFx0ZmllbGRzLnB1c2goe1xuXHRcdFx0XHRcdGxhYmVsOiAnVXB0aW1lJyxcblx0XHRcdFx0XHR2YWx1ZTogTWlzY1V0aWxzLmZvcm1hdFVwdGltZShlbmRwb2ludERhdGEudXB0aW1lKSxcblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0XHRpZiAoZW5kcG9pbnREYXRhLnBsYXRmb3JtKSB7XG5cdFx0XHRcdGZpZWxkcy5wdXNoKHtcblx0XHRcdFx0XHRsYWJlbDogJ1BsYXRmb3JtJyxcblx0XHRcdFx0XHR2YWx1ZTogZW5kcG9pbnREYXRhLnBsYXRmb3JtLFxuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHRcdGlmIChlbmRwb2ludERhdGEucGFja2FnZV91cGRhdGVzKSB7XG5cdFx0XHRcdGZpZWxkcy5wdXNoKHtcblx0XHRcdFx0XHRsYWJlbDogJ1N5c3RlbSBQYWNrYWdlIFVwZGF0ZXMnLFxuXHRcdFx0XHRcdHZhbHVlOiBlbmRwb2ludERhdGEucGFja2FnZV91cGRhdGVzLFxuXHRcdFx0XHRcdHZhbHVlQ2xhc3M6ICdicDMtdGV4dC1pbnRlbnQtZGFuZ2VyJyxcblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0XHRpZiAoZW5kcG9pbnREYXRhLnZpcnR1YWxpemF0aW9uKSB7XG5cdFx0XHRcdGZpZWxkcy5wdXNoKHtcblx0XHRcdFx0XHRsYWJlbDogJ1ZpcnR1YWxpemF0aW9uJyxcblx0XHRcdFx0XHR2YWx1ZTogZW5kcG9pbnREYXRhLnZpcnR1YWxpemF0aW9uLFxuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHRcdGlmIChlbmRwb2ludERhdGEuY3B1X2NvcmVzKSB7XG5cdFx0XHRcdGZpZWxkcy5wdXNoKHtcblx0XHRcdFx0XHRsYWJlbDogJ0NQVSBDb3JlcycsXG5cdFx0XHRcdFx0dmFsdWU6IGVuZHBvaW50RGF0YS5jcHVfY29yZXMsXG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdFx0aWYgKGVuZHBvaW50RGF0YS5tZW1fdG90YWwpIHtcblx0XHRcdFx0ZmllbGRzLnB1c2goe1xuXHRcdFx0XHRcdGxhYmVsOiAnTWVtb3J5Jyxcblx0XHRcdFx0XHR2YWx1ZTogZW5kcG9pbnREYXRhLm1lbV90b3RhbCArICdNQicsXG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdFx0aWYgKGVuZHBvaW50RGF0YS5zd2FwX3RvdGFsKSB7XG5cdFx0XHRcdGZpZWxkcy5wdXNoKHtcblx0XHRcdFx0XHRsYWJlbDogJ1N3YXAnLFxuXHRcdFx0XHRcdHZhbHVlOiBlbmRwb2ludERhdGEuc3dhcF90b3RhbCArICdNQicsXG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdFx0aWYgKGVuZHBvaW50RGF0YS5odWdlX3RvdGFsKSB7XG5cdFx0XHRcdGZpZWxkcy5wdXNoKHtcblx0XHRcdFx0XHRsYWJlbDogJ0h1Z2VQYWdlcycsXG5cdFx0XHRcdFx0dmFsdWU6IGVuZHBvaW50RGF0YS5odWdlX3RvdGFsICsgJ01CJyxcblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0aWYgKGVuZHBvaW50LmRhdGEubWRfc3RhdCAmJiBlbmRwb2ludC5kYXRhLm1kX3N0YXQubGVuZ3RoKSB7XG5cdFx0XHRsZXQgZmFpbGVkID0gMDtcblx0XHRcdGxldCB0b3RhbCA9IDA7XG5cblx0XHRcdGZvciAobGV0IG1kIG9mIGVuZHBvaW50LmRhdGEubWRfc3RhdCkge1xuXHRcdFx0XHRmYWlsZWQgKz0gbWQuZmFpbGVkO1xuXHRcdFx0XHR0b3RhbCArPSBtZC50b3RhbDtcblx0XHRcdH1cblxuXHRcdFx0ZmllbGRzLnB1c2goe1xuXHRcdFx0XHRsYWJlbDogJ1JhaWQgRGV2aWNlcycsXG5cdFx0XHRcdHZhbHVlOiAnRmFpbGVkOiAnICsgZmFpbGVkICsgJyBUb3RhbDogJyArIHRvdGFsLFxuXHRcdFx0fSk7XG5cdFx0fVxuXG5cdFx0bGV0IHJvbGVzOiBKU1guRWxlbWVudFtdID0gW107XG5cdFx0Zm9yIChsZXQgcm9sZSBvZiBlbmRwb2ludC5yb2xlcykge1xuXHRcdFx0cm9sZXMucHVzaChcblx0XHRcdFx0PGRpdlxuXHRcdFx0XHRcdGNsYXNzTmFtZT1cImJwMy10YWcgYnAzLXRhZy1yZW1vdmFibGUgYnAzLWludGVudC1wcmltYXJ5XCJcblx0XHRcdFx0XHRzdHlsZT17Y3NzLml0ZW19XG5cdFx0XHRcdFx0a2V5PXtyb2xlfVxuXHRcdFx0XHQ+XG5cdFx0XHRcdFx0e3JvbGV9XG5cdFx0XHRcdFx0PGJ1dHRvblxuXHRcdFx0XHRcdFx0Y2xhc3NOYW1lPVwiYnAzLXRhZy1yZW1vdmVcIlxuXHRcdFx0XHRcdFx0b25Nb3VzZVVwPXsoKTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0XHRcdHRoaXMub25SZW1vdmVSb2xlKHJvbGUpO1xuXHRcdFx0XHRcdFx0fX1cblx0XHRcdFx0XHQvPlxuXHRcdFx0XHQ8L2Rpdj4sXG5cdFx0XHQpO1xuXHRcdH1cblxuXHRcdGxldCBhbGVydHM6IHN0cmluZ1tdID0gW107XG5cdFx0Zm9yIChsZXQgYWxlcnQgb2YgT2JqZWN0LnZhbHVlcyhlbmRwb2ludC5pbmZvLmFsZXJ0cykpIHtcblx0XHRcdGFsZXJ0cy5wdXNoKGFsZXJ0KTtcblx0XHR9XG5cblx0XHRsZXQgY2hlY2tzOiBzdHJpbmdbXSA9IFtdO1xuXHRcdGZvciAobGV0IGNoZWNrIG9mIE9iamVjdC52YWx1ZXMoZW5kcG9pbnQuaW5mby5jaGVja3MpKSB7XG5cdFx0XHRjaGVja3MucHVzaChjaGVjayk7XG5cdFx0fVxuXG5cdFx0bGV0IHNlY3JldEtleSA9ICcnO1xuXHRcdGxldCBzZWNyZXRVcmkgPSAnJztcblx0XHRpZiAoIWVuZHBvaW50Lmhhc19jbGllbnRfa2V5KSB7XG5cdFx0XHRpZiAoZW5kcG9pbnQuY2xpZW50X2tleSkge1xuXHRcdFx0XHRzZWNyZXRLZXkgPSBlbmRwb2ludC5pZCArICdfJyArIGVuZHBvaW50LmNsaWVudF9rZXkuc2VjcmV0O1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0c2VjcmV0S2V5ID0gJ3Vua25vd24nO1xuXHRcdFx0fVxuXHRcdFx0c2VjcmV0VXJpID0gJ3ByaXR1bmw6Ly8nICsgd2luZG93LmxvY2F0aW9uLmhvc3QgKyAnLycgKyBzZWNyZXRLZXk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIDx0ZFxuXHRcdFx0Y2xhc3NOYW1lPVwiYnAzLWNlbGxcIlxuXHRcdFx0Y29sU3Bhbj17M31cblx0XHRcdHN0eWxlPXtjc3MuY2FyZH1cblx0XHQ+XG5cdFx0XHQ8ZGl2IGNsYXNzTmFtZT1cImxheW91dCBob3Jpem9udGFsIHdyYXBcIj5cblx0XHRcdFx0PGRpdiBzdHlsZT17Y3NzLmdyb3VwfT5cblx0XHRcdFx0XHQ8ZGl2XG5cdFx0XHRcdFx0XHRjbGFzc05hbWU9XCJsYXlvdXQgaG9yaXpvbnRhbCB0YWItY2xvc2VcIlxuXHRcdFx0XHRcdFx0c3R5bGU9e2Nzcy5idXR0b25zfVxuXHRcdFx0XHRcdFx0b25DbGljaz17KGV2dCk6IHZvaWQgPT4ge1xuXHRcdFx0XHRcdFx0XHRsZXQgdGFyZ2V0ID0gZXZ0LnRhcmdldCBhcyBIVE1MRWxlbWVudDtcblxuXHRcdFx0XHRcdFx0XHRpZiAodGFyZ2V0LmNsYXNzTmFtZS5pbmRleE9mKCd0YWItY2xvc2UnKSAhPT0gLTEpIHtcblx0XHRcdFx0XHRcdFx0XHR0aGlzLnByb3BzLm9uQ2xvc2UoKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fX1cblx0XHRcdFx0XHQ+XG4gICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJicDMtY29udHJvbCBicDMtY2hlY2tib3hcIlxuICAgICAgICAgICAgICAgIHN0eWxlPXtjc3Muc2VsZWN0fVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICAgICAgY2hlY2tlZD17dGhpcy5wcm9wcy5zZWxlY3RlZH1cblx0XHRcdFx0XHRcdFx0XHRcdG9uQ2hhbmdlPXsoZXZ0KTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0XHR9fVxuICAgICAgICAgICAgICAgICAgb25DbGljaz17KGV2dCk6IHZvaWQgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzLnByb3BzLm9uU2VsZWN0KGV2dC5zaGlmdEtleSk7XG5cdFx0XHRcdFx0XHRcdFx0XHR9fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwiYnAzLWNvbnRyb2wtaW5kaWNhdG9yXCIvPlxuICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgPC9kaXY+XG5cdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzTmFtZT1cImZsZXggdGFiLWNsb3NlXCIvPlxuXHRcdFx0XHRcdFx0PENvbmZpcm1CdXR0b25cblx0XHRcdFx0XHRcdFx0c2FmZT17dHJ1ZX1cblx0XHRcdFx0XHRcdFx0Y2xhc3NOYW1lPVwiYnAzLW1pbmltYWwgYnAzLWludGVudC1kYW5nZXIgYnAzLWljb24tdHJhc2hcIlxuXHRcdFx0XHRcdFx0XHRwcm9ncmVzc0NsYXNzTmFtZT1cImJwMy1pbnRlbnQtZGFuZ2VyXCJcblx0XHRcdFx0XHRcdFx0ZGlhbG9nQ2xhc3NOYW1lPVwiYnAzLWludGVudC1kYW5nZXIgYnAzLWljb24tZGVsZXRlXCJcblx0XHRcdFx0XHRcdFx0ZGlhbG9nTGFiZWw9XCJEZWxldGUgRW5kcG9pbnRcIlxuXHRcdFx0XHRcdFx0XHRjb25maXJtTXNnPVwiUGVybWFuZW50bHkgZGVsZXRlIHRoaXMgZW5kcG9pbnRcIlxuXHRcdFx0XHRcdFx0XHRjb25maXJtSW5wdXQ9e3RydWV9XG5cdFx0XHRcdFx0XHRcdGl0ZW1zPXtbZW5kcG9pbnQubmFtZV19XG5cdFx0XHRcdFx0XHRcdGRpc2FibGVkPXt0aGlzLnN0YXRlLmRpc2FibGVkfVxuXHRcdFx0XHRcdFx0XHRvbkNvbmZpcm09e3RoaXMub25EZWxldGV9XG5cdFx0XHRcdFx0XHQvPlxuXHRcdFx0XHRcdDwvZGl2PlxuXHRcdFx0XHRcdDxQYWdlSW5wdXRcblx0XHRcdFx0XHRcdGxhYmVsPVwiTmFtZVwiXG5cdFx0XHRcdFx0XHRoZWxwPVwiTmFtZSBvZiBlbmRwb2ludFwiXG5cdFx0XHRcdFx0XHR0eXBlPVwidGV4dFwiXG5cdFx0XHRcdFx0XHRwbGFjZWhvbGRlcj1cIkVudGVyIG5hbWVcIlxuXHRcdFx0XHRcdFx0dmFsdWU9e2VuZHBvaW50Lm5hbWV9XG5cdFx0XHRcdFx0XHRvbkNoYW5nZT17KHZhbCk6IHZvaWQgPT4ge1xuXHRcdFx0XHRcdFx0XHR0aGlzLnNldCgnbmFtZScsIHZhbCk7XG5cdFx0XHRcdFx0XHR9fVxuXHRcdFx0XHRcdC8+XG5cdFx0XHRcdFx0PFBhZ2VJbnB1dFxuXHRcdFx0XHRcdFx0aGlkZGVuPXtlbmRwb2ludC5oYXNfY2xpZW50X2tleX1cblx0XHRcdFx0XHRcdGRpc2FibGVkPXt0aGlzLnN0YXRlLmRpc2FibGVkfVxuXHRcdFx0XHRcdFx0cmVhZE9ubHk9e3RydWV9XG5cdFx0XHRcdFx0XHRhdXRvU2VsZWN0PXt0cnVlfVxuXHRcdFx0XHRcdFx0bGFiZWw9XCJSZWdpc3RyYXRpb24gS2V5XCJcblx0XHRcdFx0XHRcdGhlbHA9XCJLZXkgZm9yIGVuZHBvaW50IHJlZ2lzdHJhdGlvblwiXG5cdFx0XHRcdFx0XHR0eXBlPVwidGV4dFwiXG5cdFx0XHRcdFx0XHRwbGFjZWhvbGRlcj1cIlwiXG5cdFx0XHRcdFx0XHR2YWx1ZT17c2VjcmV0S2V5fVxuXHRcdFx0XHRcdC8+XG5cdFx0XHRcdFx0PGxhYmVsIGNsYXNzTmFtZT1cImJwMy1sYWJlbFwiPlxuXHRcdFx0XHRcdFx0Um9sZXNcblx0XHRcdFx0XHRcdDxIZWxwXG5cdFx0XHRcdFx0XHRcdHRpdGxlPVwiUm9sZXNcIlxuXHRcdFx0XHRcdFx0XHRjb250ZW50PVwiVGhlIHVzZXIgcm9sZXMgdGhhdCB3aWxsIGJlIGFsbG93ZWQgYWNjZXNzIHRvIHRoaXMgZW5kcG9pbnQuIEF0IGxlYXN0IG9uZSByb2xlIG11c3QgbWF0Y2ggZm9yIHRoZSB1c2VyIHRvIGFjY2VzcyB0aGUgZW5kcG9pbnQuXCJcblx0XHRcdFx0XHRcdC8+XG5cdFx0XHRcdFx0XHQ8ZGl2PlxuXHRcdFx0XHRcdFx0XHR7cm9sZXN9XG5cdFx0XHRcdFx0XHQ8L2Rpdj5cblx0XHRcdFx0XHQ8L2xhYmVsPlxuXHRcdFx0XHRcdDxQYWdlSW5wdXRCdXR0b25cblx0XHRcdFx0XHRcdGJ1dHRvbkNsYXNzPVwiYnAzLWludGVudC1zdWNjZXNzIGJwMy1pY29uLWFkZFwiXG5cdFx0XHRcdFx0XHRsYWJlbD1cIkFkZFwiXG5cdFx0XHRcdFx0XHR0eXBlPVwidGV4dFwiXG5cdFx0XHRcdFx0XHRwbGFjZWhvbGRlcj1cIkFkZCByb2xlXCJcblx0XHRcdFx0XHRcdHZhbHVlPXt0aGlzLnN0YXRlLmFkZFJvbGV9XG5cdFx0XHRcdFx0XHRvbkNoYW5nZT17KHZhbCk6IHZvaWQgPT4ge1xuXHRcdFx0XHRcdFx0XHR0aGlzLnNldFN0YXRlKHtcblx0XHRcdFx0XHRcdFx0XHQuLi50aGlzLnN0YXRlLFxuXHRcdFx0XHRcdFx0XHRcdGFkZFJvbGU6IHZhbCxcblx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHR9fVxuXHRcdFx0XHRcdFx0b25TdWJtaXQ9e3RoaXMub25BZGRSb2xlfVxuXHRcdFx0XHRcdC8+XG5cdFx0XHRcdFx0PFBhZ2VTd2l0Y2hcblx0XHRcdFx0XHRcdGxhYmVsPVwiU2hvdyBjaGFydHMgYW5kIGRtZXNnXCJcblx0XHRcdFx0XHRcdGhlbHA9XCJTaG93IGVuZHBvaW50IGNoYXJ0cyBhbmQgZG1lc2cuXCJcblx0XHRcdFx0XHRcdGNoZWNrZWQ9e3RoaXMuc3RhdGUuc2hvd0NoYXJ0c31cblx0XHRcdFx0XHRcdGhpZGRlbj17IWVuZHBvaW50RGF0YS5ob3N0bmFtZX1cblx0XHRcdFx0XHRcdG9uVG9nZ2xlPXsoKTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0XHRcdHRoaXMuc2V0U3RhdGUoe1xuXHRcdFx0XHRcdFx0XHRcdC4uLnRoaXMuc3RhdGUsXG5cdFx0XHRcdFx0XHRcdFx0c2hvd0NoYXJ0czogIXRoaXMuc3RhdGUuc2hvd0NoYXJ0cyxcblx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHR9fVxuXHRcdFx0XHRcdC8+XG5cdFx0XHRcdFx0PFBhZ2VJbmZvXG5cdFx0XHRcdFx0XHRmaWVsZHM9e1tcblx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdGxhYmVsOiAnQWxlcnRzJyxcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogYWxlcnRzLmxlbmd0aCA/IGFsZXJ0cyA6ICctJyxcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdGxhYmVsOiAnSGVhbHRoIENoZWNrcycsXG5cdFx0XHRcdFx0XHRcdFx0dmFsdWU6IGNoZWNrcy5sZW5ndGggPyBjaGVja3MgOiAnLScsXG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRdfVxuXHRcdFx0XHRcdC8+XG5cdFx0XHRcdDwvZGl2PlxuXHRcdFx0XHQ8ZGl2IHN0eWxlPXtjc3MuZ3JvdXB9PlxuXHRcdFx0XHRcdDxQYWdlSW5mb1xuXHRcdFx0XHRcdFx0ZmllbGRzPXtmaWVsZHN9XG5cdFx0XHRcdFx0Lz5cblx0XHRcdFx0XHQ8UGFnZUlucHV0XG5cdFx0XHRcdFx0XHRoaWRkZW49e2VuZHBvaW50Lmhhc19jbGllbnRfa2V5fVxuXHRcdFx0XHRcdFx0ZGlzYWJsZWQ9e3RoaXMuc3RhdGUuZGlzYWJsZWR9XG5cdFx0XHRcdFx0XHRyZWFkT25seT17dHJ1ZX1cblx0XHRcdFx0XHRcdGF1dG9TZWxlY3Q9e3RydWV9XG5cdFx0XHRcdFx0XHRsYWJlbD1cIlJlZ2lzdHJhdGlvbiBVUklcIlxuXHRcdFx0XHRcdFx0aGVscD1cIlVSSSBmb3IgZW5kcG9pbnQgcmVnaXN0cmF0aW9uXCJcblx0XHRcdFx0XHRcdHR5cGU9XCJ0ZXh0XCJcblx0XHRcdFx0XHRcdHBsYWNlaG9sZGVyPVwiXCJcblx0XHRcdFx0XHRcdHZhbHVlPXtzZWNyZXRVcml9XG5cdFx0XHRcdFx0Lz5cblx0XHRcdFx0PC9kaXY+XG5cdFx0XHQ8L2Rpdj5cblx0XHRcdDxFbmRwb2ludENoYXJ0c1xuXHRcdFx0XHRlbmRwb2ludD17ZW5kcG9pbnQuaWR9XG5cdFx0XHRcdGRpc2FibGVkPXshZW5kcG9pbnREYXRhLmhvc3RuYW1lIHx8ICF0aGlzLnN0YXRlLnNob3dDaGFydHN9XG5cdFx0XHQvPlxuXHRcdFx0PEVuZHBvaW50S21zZ1xuXHRcdFx0XHRlbmRwb2ludD17ZW5kcG9pbnQuaWR9XG5cdFx0XHRcdGRpc2FibGVkPXshZW5kcG9pbnREYXRhLmhvc3RuYW1lIHx8ICF0aGlzLnN0YXRlLnNob3dDaGFydHN9XG5cdFx0XHQvPlxuXHRcdFx0PFBhZ2VTYXZlXG5cdFx0XHRcdHN0eWxlPXtjc3Muc2F2ZX1cblx0XHRcdFx0aGlkZGVuPXshdGhpcy5zdGF0ZS5lbmRwb2ludCAmJiAhdGhpcy5zdGF0ZS5tZXNzYWdlfVxuXHRcdFx0XHRtZXNzYWdlPXt0aGlzLnN0YXRlLm1lc3NhZ2V9XG5cdFx0XHRcdGNoYW5nZWQ9e3RoaXMuc3RhdGUuY2hhbmdlZH1cblx0XHRcdFx0ZGlzYWJsZWQ9e3RoaXMuc3RhdGUuZGlzYWJsZWR9XG5cdFx0XHRcdGxpZ2h0PXt0cnVlfVxuXHRcdFx0XHRvbkNhbmNlbD17KCk6IHZvaWQgPT4ge1xuXHRcdFx0XHRcdHRoaXMuc2V0U3RhdGUoe1xuXHRcdFx0XHRcdFx0Li4udGhpcy5zdGF0ZSxcblx0XHRcdFx0XHRcdGNoYW5nZWQ6IGZhbHNlLFxuXHRcdFx0XHRcdFx0ZW5kcG9pbnQ6IG51bGwsXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH19XG5cdFx0XHRcdG9uU2F2ZT17dGhpcy5vblNhdmV9XG5cdFx0XHQ+XG5cdFx0XHRcdDxDb25maXJtQnV0dG9uXG5cdFx0XHRcdFx0bGFiZWw9XCJSZXNldCBLZXlcIlxuXHRcdFx0XHRcdGNsYXNzTmFtZT1cImJwMy1pbnRlbnQtZGFuZ2VyIGJwMy1pY29uLWtleVwiXG5cdFx0XHRcdFx0cHJvZ3Jlc3NDbGFzc05hbWU9XCJicDMtaW50ZW50LWRhbmdlclwiXG5cdFx0XHRcdFx0c3R5bGU9e2Nzcy5jb250cm9sQnV0dG9ufVxuXHRcdFx0XHRcdGhpZGRlbj17IWVuZHBvaW50Lmhhc19jbGllbnRfa2V5fVxuXHRcdFx0XHRcdGRpc2FibGVkPXt0aGlzLnN0YXRlLmRpc2FibGVkfVxuXHRcdFx0XHRcdHNhZmU9e3RydWV9XG5cdFx0XHRcdFx0b25Db25maXJtPXsoKTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0XHR0aGlzLm9uUmVzZXRDbGllbnRLZXkoKTtcblx0XHRcdFx0XHR9fVxuXHRcdFx0XHQvPlxuXHRcdFx0PC9QYWdlU2F2ZT5cblx0XHQ8L3RkPjtcblx0fVxufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./app/components/EndpointDetailed.js\n");
/***/ }),
@@ -1461,7 +1461,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ User)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react_router_dom__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react-router-dom */ \"./node_modules/react-router-dom/esm/react-router-dom.js\");\n/* harmony import */ var _utils_MiscUtils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/MiscUtils */ \"./app/utils/MiscUtils.js\");\n\n\n\nconst css = {\n card: {\n display: 'table-row',\n width: '100%',\n padding: 0,\n boxShadow: 'none',\n },\n select: {\n margin: '2px 0 0 0',\n paddingTop: '3px',\n minHeight: '18px',\n },\n name: {\n verticalAlign: 'top',\n display: 'table-cell',\n padding: '8px',\n },\n type: {\n verticalAlign: 'top',\n display: 'table-cell',\n padding: '9px',\n },\n lastActivity: {\n verticalAlign: 'top',\n display: 'table-cell',\n padding: '9px',\n whiteSpace: 'nowrap',\n },\n roles: {\n verticalAlign: 'top',\n display: 'table-cell',\n padding: '0 8px 8px 8px',\n },\n tag: {\n margin: '8px 5px 0 5px',\n height: '20px',\n },\n nameLink: {\n margin: '0 5px 0 0',\n },\n};\nclass User extends react__WEBPACK_IMPORTED_MODULE_0__.Component {\n render() {\n let user = this.props.user;\n let roles = [];\n for (let role of user.roles) {\n roles.push(react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", { className: \"bp3-tag bp3-intent-primary\", style: css.tag, key: role }, role));\n }\n let cardStyle = {\n ...css.card,\n };\n if (user.disabled) {\n cardStyle.opacity = 0.6;\n }\n let userType;\n switch (user.type) {\n case 'local':\n userType = 'Local';\n break;\n case 'google':\n userType = 'Google';\n break;\n case 'onelogin':\n userType = 'OneLogin';\n break;\n case 'okta':\n userType = 'Okta';\n break;\n case 'authzero':\n userType = 'Auth0';\n break;\n case 'azure':\n userType = 'Azure';\n break;\n case 'api':\n userType = 'API';\n break;\n default:\n userType = user.type;\n }\n return react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", { className: \"bp3-card bp3-row\", style: cardStyle },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", { className: \"bp3-cell\", style: css.name },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", { className: \"layout horizontal\" },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"label\", { className: \"bp3-control bp3-checkbox\", style: css.select },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"input\", { type: \"checkbox\", checked: this.props.selected, onChange: (evt) => {\n }, onClick: (evt) => {\n this.props.onSelect(evt.shiftKey);\n } }),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"span\", { className: \"bp3-control-indicator\" })),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(react_router_dom__WEBPACK_IMPORTED_MODULE_2__.Link, { to: '/user/' + user.id, style: css.nameLink }, user.username))),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", { className: \"bp3-cell\", style: css.type }, userType),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", { className: \"bp3-cell\", style: css.lastActivity }, _utils_MiscUtils__WEBPACK_IMPORTED_MODULE_1__.formatDateShortTime(user.last_active) || 'Inactive'),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", { className: \"flex bp3-cell\", style: css.roles },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"span\", { className: \"bp3-tag bp3-intent-danger\", style: css.tag, hidden: !user.administrator }, \"admin\"),\n roles));\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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REFBTyxTQUFTLEVBQUMsMEJBQTBCLEVBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxNQUFNO3dCQUM1RCw0REFDQyxJQUFJLEVBQUMsVUFBVSxFQUNmLE9BQU8sRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFDNUIsUUFBUSxFQUFFLENBQUMsR0FBRyxFQUFRLEVBQUU7NEJBQ3hCLENBQUMsRUFDRCxPQUFPLEVBQUUsQ0FBQyxHQUFHLEVBQVEsRUFBRTtnQ0FDdEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDOzRCQUNuQyxDQUFDLEdBQ0E7d0JBQ0YsMkRBQU0sU0FBUyxFQUFDLHVCQUF1QixHQUFFLENBQ2xDO29CQUNSLGlEQUFDLGtEQUFnQixJQUFDLEVBQUUsRUFBRSxRQUFRLEdBQUcsSUFBSSxDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDLFFBQVEsSUFDM0QsSUFBSSxDQUFDLFFBQVEsQ0FDSSxDQUNkLENBQ0Q7WUFDTiwwREFBSyxTQUFTLEVBQUMsVUFBVSxFQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsSUFBSSxJQUN2QyxRQUFRLENBQ0o7WUFDTiwwREFBSyxTQUFTLEVBQUMsVUFBVSxFQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsWUFBWSxJQUMvQyxpRUFBNkIsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksVUFBVSxDQUN6RDtZQUNOLDBEQUFLLFNBQVMsRUFBQyxlQUFlLEVBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxLQUFLO2dCQUM5QywyREFDQyxTQUFTLEVBQUMsMkJBQTJCLEVBQ3JDLEtBQUssRUFBRSxHQUFHLENBQUMsR0FBRyxFQUNkLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLFlBR3JCO2dCQUNOLEtBQUssQ0FDRCxDQUNELENBQUM7SUFDUixDQUFDO0NBQ0QiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9wcml0dW5sLXplcm8vLi9hcHAvY29tcG9uZW50cy9Vc2VyLnRzeD85NDVmIl0sInNvdXJjZXNDb250ZW50IjpbIi8vLyA8cmVmZXJlbmNlIHBhdGg9XCIuLi9SZWZlcmVuY2VzLmQudHNcIi8+XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgKiBhcyBSZWFjdFJvdXRlciBmcm9tICdyZWFjdC1yb3V0ZXItZG9tJztcbmltcG9ydCAqIGFzIE1pc2NVdGlscyBmcm9tICcuLi91dGlscy9NaXNjVXRpbHMnO1xuaW1wb3J0ICogYXMgVXNlclR5cGVzIGZyb20gJy4uL3R5cGVzL1VzZXJUeXBlcyc7XG5cbmludGVyZmFjZSBQcm9wcyB7XG5cdHVzZXI6IFVzZXJUeXBlcy5Vc2VyUm87XG5cdHNlbGVjdGVkOiBib29sZWFuO1xuXHRvblNlbGVjdDogKHNoaWZ0OiBib29sZWFuKSA9PiB2b2lkO1xufVxuXG5jb25zdCBjc3MgPSB7XG5cdGNhcmQ6IHtcblx0XHRkaXNwbGF5OiAndGFibGUtcm93Jyxcblx0XHR3aWR0aDogJzEwMCUnLFxuXHRcdHBhZGRpbmc6IDAsXG5cdFx0Ym94U2hhZG93OiAnbm9uZScsXG5cdH0gYXMgUmVhY3QuQ1NTUHJvcGVydGllcyxcblx0c2VsZWN0OiB7XG5cdFx0bWFyZ2luOiAnMnB4IDAgMCAwJyxcblx0XHRwYWRkaW5nVG9wOiAnM3B4Jyxcblx0XHRtaW5IZWlnaHQ6ICcxOHB4Jyxcblx0fSBhcyBSZWFjdC5DU1NQcm9wZXJ0aWVzLFxuXHRuYW1lOiB7XG5cdFx0dmVydGljYWxBbGlnbjogJ3RvcCcsXG5cdFx0ZGlzcGxheTogJ3RhYmxlLWNlbGwnLFxuXHRcdHBhZGRpbmc6ICc4cHgnLFxuXHR9IGFzIFJlYWN0LkNTU1Byb3BlcnRpZXMsXG5cdHR5cGU6IHtcblx0XHR2ZXJ0aWNhbEFsaWduOiAndG9wJyxcblx0XHRkaXNwbGF5OiAndGFibGUtY2VsbCcsXG5cdFx0cGFkZGluZzogJzlweCcsXG5cdH0gYXMgUmVhY3QuQ1NTUHJvcGVydGllcyxcblx0bGFzdEFjdGl2aXR5OiB7XG5cdFx0dmVydGljYWxBbGlnbjogJ3RvcCcsXG5cdFx0ZGlzcGxheTogJ3RhYmxlLWNlbGwnLFxuXHRcdHBhZGRpbmc6ICc5cHgnLFxuXHRcdHdoaXRlU3BhY2U6ICdub3dyYXAnLFxuXHR9IGFzIFJlYWN0LkNTU1Byb3BlcnRpZXMsXG5cdHJvbGVzOiB7XG5cdFx0dmVydGljYWxBbGlnbjogJ3RvcCcsXG5cdFx0ZGlzcGxheTogJ3RhYmxlLWNlbGwnLFxuXHRcdHBhZGRpbmc6ICcwIDhweCA4cHggOHB4Jyxcblx0fSBhcyBSZWFjdC5DU1NQcm9wZXJ0aWVzLFxuXHR0YWc6IHtcblx0XHRtYXJnaW46ICc4cHggNXB4IDAgNXB4Jyxcblx0XHRoZWlnaHQ6ICcyMHB4Jyxcblx0fSBhcyBSZWFjdC5DU1NQcm9wZXJ0aWVzLFxuXHRuYW1lTGluazoge1xuXHRcdG1hcmdpbjogJzAgNXB4IDAgMCcsXG5cdH0gYXMgUmVhY3QuQ1NTUHJvcGVydGllcyxcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFVzZXIgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQ8UHJvcHMsIHt9PiB7XG5cdHJlbmRlcigpOiBKU1guRWxlbWVudCB7XG5cdFx0bGV0IHVzZXIgPSB0aGlzLnByb3BzLnVzZXI7XG5cdFx0bGV0IHJvbGVzOiBKU1guRWxlbWVudFtdID0gW107XG5cblx0XHRmb3IgKGxldCByb2xlIG9mIHVzZXIucm9sZXMpIHtcblx0XHRcdHJvbGVzLnB1c2goXG5cdFx0XHRcdDxkaXZcblx0XHRcdFx0XHRjbGFzc05hbWU9XCJicDMtdGFnIGJwMy1pbnRlbnQtcHJpbWFyeVwiXG5cdFx0XHRcdFx0c3R5bGU9e2Nzcy50YWd9XG5cdFx0XHRcdFx0a2V5PXtyb2xlfVxuXHRcdFx0XHQ+XG5cdFx0XHRcdFx0e3JvbGV9XG5cdFx0XHRcdDwvZGl2Pixcblx0XHRcdCk7XG5cdFx0fVxuXG5cdFx0bGV0IGNhcmRTdHlsZSA9IHtcblx0XHRcdC4uLmNzcy5jYXJkLFxuXHRcdH07XG5cdFx0aWYgKHVzZXIuZGlzYWJsZWQpIHtcblx0XHRcdGNhcmRTdHlsZS5vcGFjaXR5ID0gMC42O1xuXHRcdH1cblxuXHRcdGxldCB1c2VyVHlwZTogc3RyaW5nO1xuXHRcdHN3aXRjaCAodXNlci50eXBlKSB7XG5cdFx0XHRjYXNlICdsb2NhbCc6XG5cdFx0XHRcdHVzZXJUeXBlID0gJ0xvY2FsJztcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlICdnb29nbGUnOlxuXHRcdFx0XHR1c2VyVHlwZSA9ICdHb29nbGUnO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJ29uZWxvZ2luJzpcblx0XHRcdFx0dXNlclR5cGUgPSAnT25lTG9naW4nO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJ29rdGEnOlxuXHRcdFx0XHR1c2VyVHlwZSA9ICdPa3RhJztcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlICdhdXRoemVybyc6XG5cdFx0XHRcdHVzZXJUeXBlID0gJ0F1dGgwJztcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlICdhenVyZSc6XG5cdFx0XHRcdHVzZXJUeXBlID0gJ0F6dXJlJztcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlICdhcGknOlxuXHRcdFx0XHR1c2VyVHlwZSA9ICdBUEknO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdHVzZXJUeXBlID0gdXNlci50eXBlO1xuXHRcdH1cblxuXHRcdHJldHVybiA8ZGl2XG5cdFx0XHRjbGFzc05hbWU9XCJicDMtY2FyZCBicDMtcm93XCJcblx0XHRcdHN0eWxlPXtjYXJkU3R5bGV9XG5cdFx0PlxuXHRcdFx0PGRpdiBjbGFzc05hbWU9XCJicDMtY2VsbFwiIHN0eWxlPXtjc3MubmFtZX0+XG5cdFx0XHRcdDxkaXYgY2xhc3NOYW1lPVwibGF5b3V0IGhvcml6b250YWxcIj5cblx0XHRcdFx0XHQ8bGFiZWwgY2xhc3NOYW1lPVwiYnAzLWNvbnRyb2wgYnAzLWNoZWNrYm94XCIgc3R5bGU9e2Nzcy5zZWxlY3R9PlxuXHRcdFx0XHRcdFx0PGlucHV0XG5cdFx0XHRcdFx0XHRcdHR5cGU9XCJjaGVja2JveFwiXG5cdFx0XHRcdFx0XHRcdGNoZWNrZWQ9e3RoaXMucHJvcHMuc2VsZWN0ZWR9XG5cdFx0XHRcdFx0XHRcdG9uQ2hhbmdlPXsoZXZ0KTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0XHRcdH19XG5cdFx0XHRcdFx0XHRcdG9uQ2xpY2s9eyhldnQpOiB2b2lkID0+IHtcblx0XHRcdFx0XHRcdFx0XHR0aGlzLnByb3BzLm9uU2VsZWN0KGV2dC5zaGlmdEtleSk7XG5cdFx0XHRcdFx0XHRcdH19XG5cdFx0XHRcdFx0XHQvPlxuXHRcdFx0XHRcdFx0PHNwYW4gY2xhc3NOYW1lPVwiYnAzLWNvbnRyb2wtaW5kaWNhdG9yXCIvPlxuXHRcdFx0XHRcdDwvbGFiZWw+XG5cdFx0XHRcdFx0PFJlYWN0Um91dGVyLkxpbmsgdG89eycvdXNlci8nICsgdXNlci5pZH0gc3R5bGU9e2Nzcy5uYW1lTGlua30+XG5cdFx0XHRcdFx0XHR7dXNlci51c2VybmFtZX1cblx0XHRcdFx0XHQ8L1JlYWN0Um91dGVyLkxpbms+XG5cdFx0XHRcdDwvZGl2PlxuXHRcdFx0PC9kaXY+XG5cdFx0XHQ8ZGl2IGNsYXNzTmFtZT1cImJwMy1jZWxsXCIgc3R5bGU9e2Nzcy50eXBlfT5cblx0XHRcdFx0e3VzZXJUeXBlfVxuXHRcdFx0PC9kaXY+XG5cdFx0XHQ8ZGl2IGNsYXNzTmFtZT1cImJwMy1jZWxsXCIgc3R5bGU9e2Nzcy5sYXN0QWN0aXZpdHl9PlxuXHRcdFx0XHR7TWlzY1V0aWxzLmZvcm1hdERhdGVTaG9ydFRpbWUodXNlci5sYXN0X2FjdGl2ZSkgfHwgJ0luYWN0aXZlJ31cblx0XHRcdDwvZGl2PlxuXHRcdFx0PGRpdiBjbGFzc05hbWU9XCJmbGV4IGJwMy1jZWxsXCIgc3R5bGU9e2Nzcy5yb2xlc30+XG5cdFx0XHRcdDxzcGFuXG5cdFx0XHRcdFx0Y2xhc3NOYW1lPVwiYnAzLXRhZyBicDMtaW50ZW50LWRhbmdlclwiXG5cdFx0XHRcdFx0c3R5bGU9e2Nzcy50YWd9XG5cdFx0XHRcdFx0aGlkZGVuPXshdXNlci5hZG1pbmlzdHJhdG9yfVxuXHRcdFx0XHQ+XG5cdFx0XHRcdFx0YWRtaW5cblx0XHRcdFx0PC9zcGFuPlxuXHRcdFx0XHR7cm9sZXN9XG5cdFx0XHQ8L2Rpdj5cblx0XHQ8L2Rpdj47XG5cdH1cbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./app/components/User.js\n");
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ User)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react_router_dom__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react-router-dom */ \"./node_modules/react-router-dom/esm/react-router-dom.js\");\n/* harmony import */ var _utils_MiscUtils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/MiscUtils */ \"./app/utils/MiscUtils.js\");\n\n\n\nconst css = {\n card: {\n display: 'table-row',\n width: '100%',\n padding: 0,\n boxShadow: 'none',\n },\n select: {\n margin: '2px 0 0 0',\n paddingTop: '3px',\n minHeight: '18px',\n },\n name: {\n verticalAlign: 'top',\n display: 'table-cell',\n padding: '8px',\n },\n type: {\n verticalAlign: 'top',\n display: 'table-cell',\n padding: '9px',\n },\n lastActivity: {\n verticalAlign: 'top',\n display: 'table-cell',\n padding: '9px',\n whiteSpace: 'nowrap',\n },\n roles: {\n verticalAlign: 'top',\n display: 'table-cell',\n padding: '0 8px 8px 8px',\n },\n tag: {\n margin: '8px 5px 0 5px',\n height: '20px',\n },\n nameLink: {\n margin: '0 5px 0 0',\n },\n};\nclass User extends react__WEBPACK_IMPORTED_MODULE_0__.Component {\n render() {\n let user = this.props.user;\n let roles = [];\n for (let role of user.roles) {\n roles.push(react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", { className: \"bp3-tag bp3-intent-primary\", style: css.tag, key: role }, role));\n }\n let cardStyle = {\n ...css.card,\n };\n if (user.disabled) {\n cardStyle.opacity = 0.6;\n }\n let userType;\n switch (user.type) {\n case 'local':\n userType = 'Local';\n break;\n case 'google':\n userType = 'Google';\n break;\n case 'onelogin':\n userType = 'OneLogin';\n break;\n case 'okta':\n userType = 'Okta';\n break;\n case 'authzero':\n userType = 'Auth0';\n break;\n case 'azure':\n userType = 'Azure';\n break;\n case 'jumpcloud':\n userType = 'JumpCloud';\n break;\n case 'api':\n userType = 'API';\n break;\n default:\n userType = user.type;\n }\n return react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", { className: \"bp3-card bp3-row\", style: cardStyle },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", { className: \"bp3-cell\", style: css.name },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", { className: \"layout horizontal\" },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"label\", { className: \"bp3-control bp3-checkbox\", style: css.select },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"input\", { type: \"checkbox\", checked: this.props.selected, onChange: (evt) => {\n }, onClick: (evt) => {\n this.props.onSelect(evt.shiftKey);\n } }),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"span\", { className: \"bp3-control-indicator\" })),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(react_router_dom__WEBPACK_IMPORTED_MODULE_2__.Link, { to: '/user/' + user.id, style: css.nameLink }, user.username))),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", { className: \"bp3-cell\", style: css.type }, userType),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", { className: \"bp3-cell\", style: css.lastActivity }, _utils_MiscUtils__WEBPACK_IMPORTED_MODULE_1__.formatDateShortTime(user.last_active) || 'Inactive'),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", { className: \"flex bp3-cell\", style: css.roles },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"span\", { className: \"bp3-tag bp3-intent-danger\", style: css.tag, hidden: !user.administrator }, \"admin\"),\n roles));\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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azovL3ByaXR1bmwtemVyby8uL2FwcC9jb21wb25lbnRzL1VzZXIudHN4Pzk0NWYiXSwic291cmNlc0NvbnRlbnQiOlsiLy8vIDxyZWZlcmVuY2UgcGF0aD1cIi4uL1JlZmVyZW5jZXMuZC50c1wiLz5cbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCAqIGFzIFJlYWN0Um91dGVyIGZyb20gJ3JlYWN0LXJvdXRlci1kb20nO1xuaW1wb3J0ICogYXMgTWlzY1V0aWxzIGZyb20gJy4uL3V0aWxzL01pc2NVdGlscyc7XG5pbXBvcnQgKiBhcyBVc2VyVHlwZXMgZnJvbSAnLi4vdHlwZXMvVXNlclR5cGVzJztcblxuaW50ZXJmYWNlIFByb3BzIHtcblx0dXNlcjogVXNlclR5cGVzLlVzZXJSbztcblx0c2VsZWN0ZWQ6IGJvb2xlYW47XG5cdG9uU2VsZWN0OiAoc2hpZnQ6IGJvb2xlYW4pID0+IHZvaWQ7XG59XG5cbmNvbnN0IGNzcyA9IHtcblx0Y2FyZDoge1xuXHRcdGRpc3BsYXk6ICd0YWJsZS1yb3cnLFxuXHRcdHdpZHRoOiAnMTAwJScsXG5cdFx0cGFkZGluZzogMCxcblx0XHRib3hTaGFkb3c6ICdub25lJyxcblx0fSBhcyBSZWFjdC5DU1NQcm9wZXJ0aWVzLFxuXHRzZWxlY3Q6IHtcblx0XHRtYXJnaW46ICcycHggMCAwIDAnLFxuXHRcdHBhZGRpbmdUb3A6ICczcHgnLFxuXHRcdG1pbkhlaWdodDogJzE4cHgnLFxuXHR9IGFzIFJlYWN0LkNTU1Byb3BlcnRpZXMsXG5cdG5hbWU6IHtcblx0XHR2ZXJ0aWNhbEFsaWduOiAndG9wJyxcblx0XHRkaXNwbGF5OiAndGFibGUtY2VsbCcsXG5cdFx0cGFkZGluZzogJzhweCcsXG5cdH0gYXMgUmVhY3QuQ1NTUHJvcGVydGllcyxcblx0dHlwZToge1xuXHRcdHZlcnRpY2FsQWxpZ246ICd0b3AnLFxuXHRcdGRpc3BsYXk6ICd0YWJsZS1jZWxsJyxcblx0XHRwYWRkaW5nOiAnOXB4Jyxcblx0fSBhcyBSZWFjdC5DU1NQcm9wZXJ0aWVzLFxuXHRsYXN0QWN0aXZpdHk6IHtcblx0XHR2ZXJ0aWNhbEFsaWduOiAndG9wJyxcblx0XHRkaXNwbGF5OiAndGFibGUtY2VsbCcsXG5cdFx0cGFkZGluZzogJzlweCcsXG5cdFx0d2hpdGVTcGFjZTogJ25vd3JhcCcsXG5cdH0gYXMgUmVhY3QuQ1NTUHJvcGVydGllcyxcblx0cm9sZXM6IHtcblx0XHR2ZXJ0aWNhbEFsaWduOiAndG9wJyxcblx0XHRkaXNwbGF5OiAndGFibGUtY2VsbCcsXG5cdFx0cGFkZGluZzogJzAgOHB4IDhweCA4cHgnLFxuXHR9IGFzIFJlYWN0LkNTU1Byb3BlcnRpZXMsXG5cdHRhZzoge1xuXHRcdG1hcmdpbjogJzhweCA1cHggMCA1cHgnLFxuXHRcdGhlaWdodDogJzIwcHgnLFxuXHR9IGFzIFJlYWN0LkNTU1Byb3BlcnRpZXMsXG5cdG5hbWVMaW5rOiB7XG5cdFx0bWFyZ2luOiAnMCA1cHggMCAwJyxcblx0fSBhcyBSZWFjdC5DU1NQcm9wZXJ0aWVzLFxufTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVXNlciBleHRlbmRzIFJlYWN0LkNvbXBvbmVudDxQcm9wcywge30+IHtcblx0cmVuZGVyKCk6IEpTWC5FbGVtZW50IHtcblx0XHRsZXQgdXNlciA9IHRoaXMucHJvcHMudXNlcjtcblx0XHRsZXQgcm9sZXM6IEpTWC5FbGVtZW50W10gPSBbXTtcblxuXHRcdGZvciAobGV0IHJvbGUgb2YgdXNlci5yb2xlcykge1xuXHRcdFx0cm9sZXMucHVzaChcblx0XHRcdFx0PGRpdlxuXHRcdFx0XHRcdGNsYXNzTmFtZT1cImJwMy10YWcgYnAzLWludGVudC1wcmltYXJ5XCJcblx0XHRcdFx0XHRzdHlsZT17Y3NzLnRhZ31cblx0XHRcdFx0XHRrZXk9e3JvbGV9XG5cdFx0XHRcdD5cblx0XHRcdFx0XHR7cm9sZX1cblx0XHRcdFx0PC9kaXY+LFxuXHRcdFx0KTtcblx0XHR9XG5cblx0XHRsZXQgY2FyZFN0eWxlID0ge1xuXHRcdFx0Li4uY3NzLmNhcmQsXG5cdFx0fTtcblx0XHRpZiAodXNlci5kaXNhYmxlZCkge1xuXHRcdFx0Y2FyZFN0eWxlLm9wYWNpdHkgPSAwLjY7XG5cdFx0fVxuXG5cdFx0bGV0IHVzZXJUeXBlOiBzdHJpbmc7XG5cdFx0c3dpdGNoICh1c2VyLnR5cGUpIHtcblx0XHRcdGNhc2UgJ2xvY2FsJzpcblx0XHRcdFx0dXNlclR5cGUgPSAnTG9jYWwnO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJ2dvb2dsZSc6XG5cdFx0XHRcdHVzZXJUeXBlID0gJ0dvb2dsZSc7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAnb25lbG9naW4nOlxuXHRcdFx0XHR1c2VyVHlwZSA9ICdPbmVMb2dpbic7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAnb2t0YSc6XG5cdFx0XHRcdHVzZXJUeXBlID0gJ09rdGEnO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJ2F1dGh6ZXJvJzpcblx0XHRcdFx0dXNlclR5cGUgPSAnQXV0aDAnO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJ2F6dXJlJzpcblx0XHRcdFx0dXNlclR5cGUgPSAnQXp1cmUnO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJ2p1bXBjbG91ZCc6XG5cdFx0XHRcdHVzZXJUeXBlID0gJ0p1bXBDbG91ZCc7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAnYXBpJzpcblx0XHRcdFx0dXNlclR5cGUgPSAnQVBJJztcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHR1c2VyVHlwZSA9IHVzZXIudHlwZTtcblx0XHR9XG5cblx0XHRyZXR1cm4gPGRpdlxuXHRcdFx0Y2xhc3NOYW1lPVwiYnAzLWNhcmQgYnAzLXJvd1wiXG5cdFx0XHRzdHlsZT17Y2FyZFN0eWxlfVxuXHRcdD5cblx0XHRcdDxkaXYgY2xhc3NOYW1lPVwiYnAzLWNlbGxcIiBzdHlsZT17Y3NzLm5hbWV9PlxuXHRcdFx0XHQ8ZGl2IGNsYXNzTmFtZT1cImxheW91dCBob3Jpem9udGFsXCI+XG5cdFx0XHRcdFx0PGxhYmVsIGNsYXNzTmFtZT1cImJwMy1jb250cm9sIGJwMy1jaGVja2JveFwiIHN0eWxlPXtjc3Muc2VsZWN0fT5cblx0XHRcdFx0XHRcdDxpbnB1dFxuXHRcdFx0XHRcdFx0XHR0eXBlPVwiY2hlY2tib3hcIlxuXHRcdFx0XHRcdFx0XHRjaGVja2VkPXt0aGlzLnByb3BzLnNlbGVjdGVkfVxuXHRcdFx0XHRcdFx0XHRvbkNoYW5nZT17KGV2dCk6IHZvaWQgPT4ge1xuXHRcdFx0XHRcdFx0XHR9fVxuXHRcdFx0XHRcdFx0XHRvbkNsaWNrPXsoZXZ0KTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5wcm9wcy5vblNlbGVjdChldnQuc2hpZnRLZXkpO1xuXHRcdFx0XHRcdFx0XHR9fVxuXHRcdFx0XHRcdFx0Lz5cblx0XHRcdFx0XHRcdDxzcGFuIGNsYXNzTmFtZT1cImJwMy1jb250cm9sLWluZGljYXRvclwiLz5cblx0XHRcdFx0XHQ8L2xhYmVsPlxuXHRcdFx0XHRcdDxSZWFjdFJvdXRlci5MaW5rIHRvPXsnL3VzZXIvJyArIHVzZXIuaWR9IHN0eWxlPXtjc3MubmFtZUxpbmt9PlxuXHRcdFx0XHRcdFx0e3VzZXIudXNlcm5hbWV9XG5cdFx0XHRcdFx0PC9SZWFjdFJvdXRlci5MaW5rPlxuXHRcdFx0XHQ8L2Rpdj5cblx0XHRcdDwvZGl2PlxuXHRcdFx0PGRpdiBjbGFzc05hbWU9XCJicDMtY2VsbFwiIHN0eWxlPXtjc3MudHlwZX0+XG5cdFx0XHRcdHt1c2VyVHlwZX1cblx0XHRcdDwvZGl2PlxuXHRcdFx0PGRpdiBjbGFzc05hbWU9XCJicDMtY2VsbFwiIHN0eWxlPXtjc3MubGFzdEFjdGl2aXR5fT5cblx0XHRcdFx0e01pc2NVdGlscy5mb3JtYXREYXRlU2hvcnRUaW1lKHVzZXIubGFzdF9hY3RpdmUpIHx8ICdJbmFjdGl2ZSd9XG5cdFx0XHQ8L2Rpdj5cblx0XHRcdDxkaXYgY2xhc3NOYW1lPVwiZmxleCBicDMtY2VsbFwiIHN0eWxlPXtjc3Mucm9sZXN9PlxuXHRcdFx0XHQ8c3BhblxuXHRcdFx0XHRcdGNsYXNzTmFtZT1cImJwMy10YWcgYnAzLWludGVudC1kYW5nZXJcIlxuXHRcdFx0XHRcdHN0eWxlPXtjc3MudGFnfVxuXHRcdFx0XHRcdGhpZGRlbj17IXVzZXIuYWRtaW5pc3RyYXRvcn1cblx0XHRcdFx0PlxuXHRcdFx0XHRcdGFkbWluXG5cdFx0XHRcdDwvc3Bhbj5cblx0XHRcdFx0e3JvbGVzfVxuXHRcdFx0PC9kaXY+XG5cdFx0PC9kaXY+O1xuXHR9XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./app/components/User.js\n");
/***/ }),
@@ -1472,7 +1472,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ UserDetailed)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var _actions_UserActions__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../actions/UserActions */ \"./app/actions/UserActions.js\");\n/* harmony import */ var _utils_MiscUtils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/MiscUtils */ \"./app/utils/MiscUtils.js\");\n/* harmony import */ var _stores_UserStore__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../stores/UserStore */ \"./app/stores/UserStore.js\");\n/* harmony import */ var _Sessions__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./Sessions */ \"./app/components/Sessions.js\");\n/* harmony import */ var _Devices__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./Devices */ \"./app/components/Devices.js\");\n/* harmony import */ var _Audits__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./Audits */ \"./app/components/Audits.js\");\n/* harmony import */ var _Sshcertificates__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./Sshcertificates */ \"./app/components/Sshcertificates.js\");\n/* harmony import */ var _Page__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./Page */ \"./app/components/Page.js\");\n/* harmony import */ var _PageHeader__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./PageHeader */ \"./app/components/PageHeader.js\");\n/* harmony import */ var _PagePanel__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./PagePanel */ \"./app/components/PagePanel.js\");\n/* harmony import */ var _PageSplit__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./PageSplit */ \"./app/components/PageSplit.js\");\n/* harmony import */ var _PageInfo__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./PageInfo */ \"./app/components/PageInfo.js\");\n/* harmony import */ var _PageInput__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./PageInput */ \"./app/components/PageInput.js\");\n/* harmony import */ var _PageInputButton__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./PageInputButton */ \"./app/components/PageInputButton.js\");\n/* harmony import */ var _PageSwitch__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./PageSwitch */ \"./app/components/PageSwitch.js\");\n/* harmony import */ var _PageSelect__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./PageSelect */ \"./app/components/PageSelect.js\");\n/* harmony import */ var _PageDateTime__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./PageDateTime */ \"./app/components/PageDateTime.js\");\n/* harmony import */ var _PageSave__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./PageSave */ \"./app/components/PageSave.js\");\n/* harmony import */ var _PageNew__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./PageNew */ \"./app/components/PageNew.js\");\n/* harmony import */ var _ConfirmButton__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./ConfirmButton */ \"./app/components/ConfirmButton.js\");\n/* harmony import */ var _Help__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./Help */ \"./app/components/Help.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst css = {\n header: {\n marginTop: '-19px',\n },\n heading: {\n margin: '19px 0 0 0',\n },\n button: {\n margin: '10px 0 0 0',\n },\n role: {\n margin: '9px 5px 0 5px',\n height: '20px',\n },\n};\nclass UserDetailed extends react__WEBPACK_IMPORTED_MODULE_0__.Component {\n constructor(props, context) {\n super(props, context);\n this.onChange = () => {\n this.setState({\n ...this.state,\n user: _stores_UserStore__WEBPACK_IMPORTED_MODULE_3__[\"default\"].userM,\n });\n };\n this.onSave = () => {\n this.setState({\n ...this.state,\n disabled: true,\n });\n _actions_UserActions__WEBPACK_IMPORTED_MODULE_1__.commit(this.state.user).then(() => {\n this.setState({\n ...this.state,\n message: 'Your changes have been saved',\n changed: false,\n disabled: false,\n });\n }).catch(() => {\n this.setState({\n ...this.state,\n message: '',\n disabled: false,\n });\n });\n };\n this.onNew = () => {\n this.setState({\n ...this.state,\n disabled: true,\n });\n _actions_UserActions__WEBPACK_IMPORTED_MODULE_1__.create(this.state.user).then(() => {\n this.setState({\n ...this.state,\n message: 'User has been created',\n changed: false,\n disabled: false,\n locked: true,\n });\n }).catch(() => {\n this.setState({\n ...this.state,\n message: '',\n disabled: false,\n });\n });\n };\n this.set = (name, val) => {\n let user = {\n ...this.state.user,\n };\n user[name] = val;\n this.setState({\n ...this.state,\n changed: true,\n message: '',\n user: user,\n });\n };\n this.onAddRole = () => {\n let roles = [\n ...this.state.user.roles,\n ];\n if (!this.state.addRole) {\n return;\n }\n if (roles.indexOf(this.state.addRole) === -1) {\n roles.push(this.state.addRole);\n }\n roles.sort();\n this.setState({\n ...this.state,\n changed: true,\n message: '',\n addRole: '',\n user: {\n ...this.state.user,\n roles: roles,\n },\n });\n };\n this.onRemoveRole = (role) => {\n let roles = [\n ...this.state.user.roles,\n ];\n let i = roles.indexOf(role);\n if (i === -1) {\n return;\n }\n roles.splice(i, 1);\n this.setState({\n ...this.state,\n changed: true,\n message: '',\n addRole: '',\n user: {\n ...this.state.user,\n roles: roles,\n },\n });\n };\n this.onDelete = () => {\n this.setState({\n ...this.state,\n disabled: true,\n });\n _actions_UserActions__WEBPACK_IMPORTED_MODULE_1__.remove([this.props.userId]).then(() => {\n this.setState({\n ...this.state,\n message: 'User has been deleted',\n changed: false,\n disabled: false,\n locked: true,\n });\n }).catch(() => {\n this.setState({\n ...this.state,\n disabled: false,\n });\n });\n };\n this.state = {\n changed: false,\n disabled: false,\n locked: false,\n message: '',\n addRole: '',\n user: _stores_UserStore__WEBPACK_IMPORTED_MODULE_3__[\"default\"].userM,\n };\n }\n componentDidMount() {\n _stores_UserStore__WEBPACK_IMPORTED_MODULE_3__[\"default\"].addChangeListener(this.onChange);\n _actions_UserActions__WEBPACK_IMPORTED_MODULE_1__.load(this.props.userId);\n }\n componentWillUnmount() {\n _stores_UserStore__WEBPACK_IMPORTED_MODULE_3__[\"default\"].removeChangeListener(this.onChange);\n _actions_UserActions__WEBPACK_IMPORTED_MODULE_1__.unload();\n }\n render() {\n let userId = this.props.userId;\n let user = this.state.user;\n if (!user) {\n return react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", null);\n }\n let roles = [];\n for (let role of user.roles) {\n roles.push(react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", { className: \"bp3-tag bp3-tag-removable bp3-intent-primary\", style: css.role, key: role },\n role,\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"button\", { className: \"bp3-tag-remove\", disabled: this.state.locked, onMouseUp: () => {\n this.onRemoveRole(role);\n } })));\n }\n return react__WEBPACK_IMPORTED_MODULE_0__.createElement(_Page__WEBPACK_IMPORTED_MODULE_8__[\"default\"], null,\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(_PageHeader__WEBPACK_IMPORTED_MODULE_9__[\"default\"], null,\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", { className: \"layout horizontal wrap\", style: css.header },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"h2\", { style: css.heading }, userId ? 'User Info' : 'New User'),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", { className: \"flex\" }),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", null,\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(_ConfirmButton__WEBPACK_IMPORTED_MODULE_20__[\"default\"], { className: \"bp3-minimal bp3-intent-danger bp3-icon-trash\", style: css.button, safe: true, progressClassName: \"bp3-intent-danger\", dialogClassName: \"bp3-intent-danger bp3-icon-delete\", dialogLabel: \"Delete User\", confirmMsg: \"Permanently delete this user\", confirmInput: true, items: [user.username], disabled: this.state.disabled, onConfirm: this.onDelete })))),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(_PageSplit__WEBPACK_IMPORTED_MODULE_11__[\"default\"], null,\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(_PagePanel__WEBPACK_IMPORTED_MODULE_10__[\"default\"], { className: \"layout vertical\" },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(_PageInput__WEBPACK_IMPORTED_MODULE_13__[\"default\"], { disabled: this.state.locked, label: \"Username\", help: \"Username, if using single sign-on username must match\", type: \"text\", placeholder: \"Enter username\", value: user.username, onChange: (val) => {\n this.set('username', val);\n } }),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(_PageInput__WEBPACK_IMPORTED_MODULE_13__[\"default\"], { hidden: user.type !== 'local', disabled: this.state.locked, label: \"Password\", help: \"Password, leave blank to keep current password\", type: \"password\", placeholder: \"Change password\", value: user.password, onChange: (val) => {\n this.set('password', val);\n } }),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(_PageInput__WEBPACK_IMPORTED_MODULE_13__[\"default\"], { hidden: user.type !== 'api', disabled: this.state.locked, readOnly: true, autoSelect: true, label: \"Token\", help: \"API token\", type: \"text\", placeholder: \"Save to generate token\", value: user.token }),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(_PageInput__WEBPACK_IMPORTED_MODULE_13__[\"default\"], { hidden: user.type !== 'api' || !user.token || !user.secret, disabled: this.state.locked, readOnly: true, autoSelect: true, label: \"Secret\", help: \"API secret, will only be shown once\", type: \"text\", placeholder: \"\", value: user.secret }),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(_PageSwitch__WEBPACK_IMPORTED_MODULE_15__[\"default\"], { hidden: user.type !== 'api' || !user.token || !!user.secret, label: \"Generate new token and secret\", help: \"Enable to generate a new token and secret on save. Secret can only be shown by generating new credentials.\", disabled: this.state.locked, checked: user.generate_secret, onToggle: () => {\n this.set('generate_secret', !user.generate_secret);\n } }),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(_PageSelect__WEBPACK_IMPORTED_MODULE_16__[\"default\"], { disabled: this.state.locked, label: \"Type\", help: \"A local user is a user that is created on the Pritunl Zero database that has a username and password. The other user types can be used to create users for single sign-on services. Generally single sign-on users will be created automatically when the user authenticates for the first time. It can sometimes be desired to manaully create a single sign-on user to provide roles in advanced of the first login.\", value: user.type, onChange: (val) => {\n this.set('type', val);\n } },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"option\", { value: \"local\" }, \"Local\"),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"option\", { value: \"authzero\" }, \"Auth0\"),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"option\", { value: \"azure\" }, \"Azure\"),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"option\", { value: \"google\" }, \"Google\"),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"option\", { value: \"onelogin\" }, \"OneLogin\"),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"option\", { value: \"okta\" }, \"Okta\"),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"option\", { value: \"api\" }, \"API\")),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"label\", { className: \"bp3-label\" },\n \"Roles\",\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(_Help__WEBPACK_IMPORTED_MODULE_21__[\"default\"], { title: \"Roles\", content: \"User roles will be used to match with service roles. A user must have a matching role to access a service.\" }),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", null, roles)),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(_PageInputButton__WEBPACK_IMPORTED_MODULE_14__[\"default\"], { disabled: this.state.locked, buttonClass: \"bp3-intent-success bp3-icon-add\", label: \"Add\", type: \"text\", placeholder: \"Add role\", value: this.state.addRole, onChange: (val) => {\n this.setState({\n ...this.state,\n addRole: val,\n });\n }, onSubmit: this.onAddRole }),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(_PageSwitch__WEBPACK_IMPORTED_MODULE_15__[\"default\"], { label: \"Administrator\", help: \"Enable to give user administrator access to the management console\", disabled: this.state.locked, checked: user.administrator === 'super', onToggle: () => {\n if (this.state.user.administrator === 'super') {\n this.set('administrator', '');\n }\n else {\n this.set('administrator', 'super');\n }\n } }),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(_PageSwitch__WEBPACK_IMPORTED_MODULE_15__[\"default\"], { label: \"Disabled\", help: \"Disables the user ending all active sessions and prevents new authentications\", disabled: this.state.locked, checked: user.disabled, onToggle: () => {\n this.set('disabled', !this.state.user.disabled);\n } })),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(_PagePanel__WEBPACK_IMPORTED_MODULE_10__[\"default\"], null,\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(_PageInfo__WEBPACK_IMPORTED_MODULE_12__[\"default\"], { fields: [\n {\n label: 'ID',\n value: user.id || 'None',\n },\n {\n label: 'Last Active',\n value: _utils_MiscUtils__WEBPACK_IMPORTED_MODULE_2__.formatDate(user.last_active) || 'Inactive',\n },\n ] }),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(_PageDateTime__WEBPACK_IMPORTED_MODULE_17__[\"default\"], { label: \"Active Until\", help: \"Set this to schedule the user to be disabled at the set date and time. This is useful to give a user temporary access to a service.\", value: user.active_until, disabled: user.disabled || this.state.locked, onChange: (val) => {\n this.set('active_until', val);\n } }))),\n userId ? react__WEBPACK_IMPORTED_MODULE_0__.createElement(_PageSave__WEBPACK_IMPORTED_MODULE_18__[\"default\"], { message: this.state.message, changed: this.state.changed, disabled: this.state.disabled || this.state.locked, onCancel: () => {\n this.setState({\n ...this.state,\n changed: false,\n message: 'Your changes have been discarded',\n addRole: '',\n user: _stores_UserStore__WEBPACK_IMPORTED_MODULE_3__[\"default\"].userM,\n });\n }, onSave: this.onSave }) : react__WEBPACK_IMPORTED_MODULE_0__.createElement(_PageNew__WEBPACK_IMPORTED_MODULE_19__[\"default\"], { message: this.state.message, changed: this.state.changed, disabled: this.state.disabled || this.state.locked, onSave: this.onNew }),\n this.state.locked ? null : react__WEBPACK_IMPORTED_MODULE_0__.createElement(_Sessions__WEBPACK_IMPORTED_MODULE_4__[\"default\"], { userId: userId }),\n this.state.locked ? null : react__WEBPACK_IMPORTED_MODULE_0__.createElement(_Devices__WEBPACK_IMPORTED_MODULE_5__[\"default\"], { userId: userId }),\n this.state.locked ? null : react__WEBPACK_IMPORTED_MODULE_0__.createElement(_Sshcertificates__WEBPACK_IMPORTED_MODULE_7__[\"default\"], { userId: userId }),\n this.state.locked ? null : react__WEBPACK_IMPORTED_MODULE_0__.createElement(_Audits__WEBPACK_IMPORTED_MODULE_6__[\"default\"], { userId: userId }));\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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SUFBSSxFQUFFLCtEQUFlO3FCQUNyQixDQUFDLENBQUM7Z0JBQ0osQ0FBQyxFQUNELE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxHQUNsQixDQUFDLENBQUMsQ0FBQyxpREFBQyxpREFBTyxJQUNaLE9BQU8sRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFDM0IsT0FBTyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUMzQixRQUFRLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQ2xELE1BQU0sRUFBRSxJQUFJLENBQUMsS0FBSyxHQUNqQjtZQUNELElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLGlEQUFDLGlEQUFRLElBQUMsTUFBTSxFQUFFLE1BQU0sR0FBRztZQUN0RCxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxpREFBQyxnREFBTyxJQUFDLE1BQU0sRUFBRSxNQUFNLEdBQUc7WUFDckQsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsaURBQUMsd0RBQWUsSUFBQyxNQUFNLEVBQUUsTUFBTSxHQUFHO1lBQzdELElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLGlEQUFDLCtDQUFNLElBQUMsTUFBTSxFQUFFLE1BQU0sR0FBRyxDQUMvQyxDQUFDO0lBQ1QsQ0FBQztDQUNEIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vcHJpdHVubC16ZXJvLy4vYXBwL2NvbXBvbmVudHMvVXNlckRldGFpbGVkLnRzeD8xMjhhIl0sInNvdXJjZXNDb250ZW50IjpbIi8vLyA8cmVmZXJlbmNlIHBhdGg9XCIuLi9SZWZlcmVuY2VzLmQudHNcIi8+XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgKiBhcyBVc2VyQWN0aW9ucyBmcm9tICcuLi9hY3Rpb25zL1VzZXJBY3Rpb25zJztcbmltcG9ydCAqIGFzIFVzZXJUeXBlcyBmcm9tICcuLi90eXBlcy9Vc2VyVHlwZXMnO1xuaW1wb3J0ICogYXMgTWlzY1V0aWxzIGZyb20gJy4uL3V0aWxzL01pc2NVdGlscyc7XG5pbXBvcnQgVXNlclN0b3JlIGZyb20gJy4uL3N0b3Jlcy9Vc2VyU3RvcmUnO1xuaW1wb3J0IFNlc3Npb25zIGZyb20gJy4vU2Vzc2lvbnMnO1xuaW1wb3J0IERldmljZXMgZnJvbSAnLi9EZXZpY2VzJztcbmltcG9ydCBBdWRpdHMgZnJvbSAnLi9BdWRpdHMnO1xuaW1wb3J0IFNzaGNlcnRpZmljYXRlcyBmcm9tICcuL1NzaGNlcnRpZmljYXRlcyc7XG5pbXBvcnQgUGFnZSBmcm9tICcuL1BhZ2UnO1xuaW1wb3J0IFBhZ2VIZWFkZXIgZnJvbSAnLi9QYWdlSGVhZGVyJztcbmltcG9ydCBQYWdlUGFuZWwgZnJvbSAnLi9QYWdlUGFuZWwnO1xuaW1wb3J0IFBhZ2VTcGxpdCBmcm9tICcuL1BhZ2VTcGxpdCc7XG5pbXBvcnQgUGFnZUluZm8gZnJvbSAnLi9QYWdlSW5mbyc7XG5pbXBvcnQgUGFnZUlucHV0IGZyb20gJy4vUGFnZUlucHV0JztcbmltcG9ydCBQYWdlSW5wdXRCdXR0b24gZnJvbSAnLi9QYWdlSW5wdXRCdXR0b24nO1xuaW1wb3J0IFBhZ2VTd2l0Y2ggZnJvbSAnLi9QYWdlU3dpdGNoJztcbmltcG9ydCBQYWdlU2VsZWN0IGZyb20gJy4vUGFnZVNlbGVjdCc7XG5pbXBvcnQgUGFnZURhdGVUaW1lIGZyb20gJy4vUGFnZURhdGVUaW1lJztcbmltcG9ydCBQYWdlU2F2ZSBmcm9tICcuL1BhZ2VTYXZlJztcbmltcG9ydCBQYWdlTmV3IGZyb20gJy4vUGFnZU5ldyc7XG5pbXBvcnQgQ29uZmlybUJ1dHRvbiBmcm9tICcuL0NvbmZpcm1CdXR0b24nO1xuaW1wb3J0IEhlbHAgZnJvbSAnLi9IZWxwJztcblxuaW50ZXJmYWNlIFByb3BzIHtcblx0dXNlcklkPzogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgU3RhdGUge1xuXHRjaGFuZ2VkOiBib29sZWFuO1xuXHRkaXNhYmxlZDogYm9vbGVhbjtcblx0bG9ja2VkOiBib29sZWFuO1xuXHRtZXNzYWdlOiBzdHJpbmc7XG5cdGFkZFJvbGU6IHN0cmluZztcblx0dXNlcjogVXNlclR5cGVzLlVzZXI7XG59XG5cbmNvbnN0IGNzcyA9IHtcblx0aGVhZGVyOiB7XG5cdFx0bWFyZ2luVG9wOiAnLTE5cHgnLFxuXHR9IGFzIFJlYWN0LkNTU1Byb3BlcnRpZXMsXG5cdGhlYWRpbmc6IHtcblx0XHRtYXJnaW46ICcxOXB4IDAgMCAwJyxcblx0fSBhcyBSZWFjdC5DU1NQcm9wZXJ0aWVzLFxuXHRidXR0b246IHtcblx0XHRtYXJnaW46ICcxMHB4IDAgMCAwJyxcblx0fSBhcyBSZWFjdC5DU1NQcm9wZXJ0aWVzLFxuXHRyb2xlOiB7XG5cdFx0bWFyZ2luOiAnOXB4IDVweCAwIDVweCcsXG5cdFx0aGVpZ2h0OiAnMjBweCcsXG5cdH0gYXMgUmVhY3QuQ1NTUHJvcGVydGllcyxcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFVzZXJEZXRhaWxlZCBleHRlbmRzIFJlYWN0LkNvbXBvbmVudDxQcm9wcywgU3RhdGU+IHtcblx0Y29uc3RydWN0b3IocHJvcHM6IGFueSwgY29udGV4dDogYW55KSB7XG5cdFx0c3VwZXIocHJvcHMsIGNvbnRleHQpO1xuXHRcdHRoaXMuc3RhdGUgPSB7XG5cdFx0XHRjaGFuZ2VkOiBmYWxzZSxcblx0XHRcdGRpc2FibGVkOiBmYWxzZSxcblx0XHRcdGxvY2tlZDogZmFsc2UsXG5cdFx0XHRtZXNzYWdlOiAnJyxcblx0XHRcdGFkZFJvbGU6ICcnLFxuXHRcdFx0dXNlcjogVXNlclN0b3JlLnVzZXJNLFxuXHRcdH07XG5cdH1cblxuXHRjb21wb25lbnREaWRNb3VudCgpOiB2b2lkIHtcblx0XHRVc2VyU3RvcmUuYWRkQ2hhbmdlTGlzdGVuZXIodGhpcy5vbkNoYW5nZSk7XG5cdFx0VXNlckFjdGlvbnMubG9hZCh0aGlzLnByb3BzLnVzZXJJZCk7XG5cdH1cblxuXHRjb21wb25lbnRXaWxsVW5tb3VudCgpOiB2b2lkIHtcblx0XHRVc2VyU3RvcmUucmVtb3ZlQ2hhbmdlTGlzdGVuZXIodGhpcy5vbkNoYW5nZSk7XG5cdFx0VXNlckFjdGlvbnMudW5sb2FkKCk7XG5cdH1cblxuXHRvbkNoYW5nZSA9ICgpOiB2b2lkID0+IHtcblx0XHR0aGlzLnNldFN0YXRlKHtcblx0XHRcdC4uLnRoaXMuc3RhdGUsXG5cdFx0XHR1c2VyOiBVc2VyU3RvcmUudXNlck0sXG5cdFx0fSk7XG5cdH1cblxuXHRvblNhdmUgPSAoKTogdm9pZCA9PiB7XG5cdFx0dGhpcy5zZXRTdGF0ZSh7XG5cdFx0XHQuLi50aGlzLnN0YXRlLFxuXHRcdFx0ZGlzYWJsZWQ6IHRydWUsXG5cdFx0fSk7XG5cdFx0VXNlckFjdGlvbnMuY29tbWl0KHRoaXMuc3RhdGUudXNlcikudGhlbigoKTogdm9pZCA9PiB7XG5cdFx0XHR0aGlzLnNldFN0YXRlKHtcblx0XHRcdFx0Li4udGhpcy5zdGF0ZSxcblx0XHRcdFx0bWVzc2FnZTogJ1lvdXIgY2hhbmdlcyBoYXZlIGJlZW4gc2F2ZWQnLFxuXHRcdFx0XHRjaGFuZ2VkOiBmYWxzZSxcblx0XHRcdFx0ZGlzYWJsZWQ6IGZhbHNlLFxuXHRcdFx0fSk7XG5cdFx0fSkuY2F0Y2goKCk6IHZvaWQgPT4ge1xuXHRcdFx0dGhpcy5zZXRTdGF0ZSh7XG5cdFx0XHRcdC4uLnRoaXMuc3RhdGUsXG5cdFx0XHRcdG1lc3NhZ2U6ICcnLFxuXHRcdFx0XHRkaXNhYmxlZDogZmFsc2UsXG5cdFx0XHR9KTtcblx0XHR9KTtcblx0fVxuXG5cdG9uTmV3ID0gKCk6IHZvaWQgPT4ge1xuXHRcdHRoaXMuc2V0U3RhdGUoe1xuXHRcdFx0Li4udGhpcy5zdGF0ZSxcblx0XHRcdGRpc2FibGVkOiB0cnVlLFxuXHRcdH0pO1xuXHRcdFVzZXJBY3Rpb25zLmNyZWF0ZSh0aGlzLnN0YXRlLnVzZXIpLnRoZW4oKCk6IHZvaWQgPT4ge1xuXHRcdFx0dGhpcy5zZXRTdGF0ZSh7XG5cdFx0XHRcdC4uLnRoaXMuc3RhdGUsXG5cdFx0XHRcdG1lc3NhZ2U6ICdVc2VyIGhhcyBiZWVuIGNyZWF0ZWQnLFxuXHRcdFx0XHRjaGFuZ2VkOiBmYWxzZSxcblx0XHRcdFx0ZGlzYWJsZWQ6IGZhbHNlLFxuXHRcdFx0XHRsb2NrZWQ6IHRydWUsXG5cdFx0XHR9KTtcblx0XHR9KS5jYXRjaCgoKTogdm9pZCA9PiB7XG5cdFx0XHR0aGlzLnNldFN0YXRlKHtcblx0XHRcdFx0Li4udGhpcy5zdGF0ZSxcblx0XHRcdFx0bWVzc2FnZTogJycsXG5cdFx0XHRcdGRpc2FibGVkOiBmYWxzZSxcblx0XHRcdH0pO1xuXHRcdH0pO1xuXHR9XG5cblx0c2V0ID0gKG5hbWU6IHN0cmluZywgdmFsOiBhbnkpOiB2b2lkID0+IHtcblx0XHRsZXQgdXNlcjogYW55ID0ge1xuXHRcdFx0Li4udGhpcy5zdGF0ZS51c2VyLFxuXHRcdH07XG5cblx0XHR1c2VyW25hbWVdID0gdmFsO1xuXG5cdFx0dGhpcy5zZXRTdGF0ZSh7XG5cdFx0XHQuLi50aGlzLnN0YXRlLFxuXHRcdFx0Y2hhbmdlZDogdHJ1ZSxcblx0XHRcdG1lc3NhZ2U6ICcnLFxuXHRcdFx0dXNlcjogdXNlcixcblx0XHR9KTtcblx0fVxuXG5cdG9uQWRkUm9sZSA9ICgpOiB2b2lkID0+IHtcblx0XHRsZXQgcm9sZXMgPSBbXG5cdFx0XHQuLi50aGlzLnN0YXRlLnVzZXIucm9sZXMsXG5cdFx0XTtcblxuXHRcdGlmICghdGhpcy5zdGF0ZS5hZGRSb2xlKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0aWYgKHJvbGVzLmluZGV4T2YodGhpcy5zdGF0ZS5hZGRSb2xlKSA9PT0gLTEpIHtcblx0XHRcdHJvbGVzLnB1c2godGhpcy5zdGF0ZS5hZGRSb2xlKTtcblx0XHR9XG5cblx0XHRyb2xlcy5zb3J0KCk7XG5cblx0XHR0aGlzLnNldFN0YXRlKHtcblx0XHRcdC4uLnRoaXMuc3RhdGUsXG5cdFx0XHRjaGFuZ2VkOiB0cnVlLFxuXHRcdFx0bWVzc2FnZTogJycsXG5cdFx0XHRhZGRSb2xlOiAnJyxcblx0XHRcdHVzZXI6IHtcblx0XHRcdFx0Li4udGhpcy5zdGF0ZS51c2VyLFxuXHRcdFx0XHRyb2xlczogcm9sZXMsXG5cdFx0XHR9LFxuXHRcdH0pO1xuXHR9XG5cblx0b25SZW1vdmVSb2xlID0gKHJvbGU6IHN0cmluZyk6IHZvaWQgPT4ge1xuXHRcdGxldCByb2xlcyA9IFtcblx0XHRcdC4uLnRoaXMuc3RhdGUudXNlci5yb2xlcyxcblx0XHRdO1xuXG5cdFx0bGV0IGkgPSByb2xlcy5pbmRleE9mKHJvbGUpO1xuXHRcdGlmIChpID09PSAtMSkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdHJvbGVzLnNwbGljZShpLCAxKTtcblxuXHRcdHRoaXMuc2V0U3RhdGUoe1xuXHRcdFx0Li4udGhpcy5zdGF0ZSxcblx0XHRcdGNoYW5nZWQ6IHRydWUsXG5cdFx0XHRtZXNzYWdlOiAnJyxcblx0XHRcdGFkZFJvbGU6ICcnLFxuXHRcdFx0dXNlcjoge1xuXHRcdFx0XHQuLi50aGlzLnN0YXRlLnVzZXIsXG5cdFx0XHRcdHJvbGVzOiByb2xlcyxcblx0XHRcdH0sXG5cdFx0fSk7XG5cdH1cblxuXHRvbkRlbGV0ZSA9ICgpOiB2b2lkID0+IHtcblx0XHR0aGlzLnNldFN0YXRlKHtcblx0XHRcdC4uLnRoaXMuc3RhdGUsXG5cdFx0XHRkaXNhYmxlZDogdHJ1ZSxcblx0XHR9KTtcblx0XHRVc2VyQWN0aW9ucy5yZW1vdmUoW3RoaXMucHJvcHMudXNlcklkXSkudGhlbigoKTogdm9pZCA9PiB7XG5cdFx0XHR0aGlzLnNldFN0YXRlKHtcblx0XHRcdFx0Li4udGhpcy5zdGF0ZSxcblx0XHRcdFx0bWVzc2FnZTogJ1VzZXIgaGFzIGJlZW4gZGVsZXRlZCcsXG5cdFx0XHRcdGNoYW5nZWQ6IGZhbHNlLFxuXHRcdFx0XHRkaXNhYmxlZDogZmFsc2UsXG5cdFx0XHRcdGxvY2tlZDogdHJ1ZSxcblx0XHRcdH0pO1xuXHRcdH0pLmNhdGNoKCgpOiB2b2lkID0+IHtcblx0XHRcdHRoaXMuc2V0U3RhdGUoe1xuXHRcdFx0XHQuLi50aGlzLnN0YXRlLFxuXHRcdFx0XHRkaXNhYmxlZDogZmFsc2UsXG5cdFx0XHR9KTtcblx0XHR9KTtcblx0fVxuXG5cdHJlbmRlcigpOiBKU1guRWxlbWVudCB7XG5cdFx0bGV0IHVzZXJJZCA9IHRoaXMucHJvcHMudXNlcklkO1xuXHRcdGxldCB1c2VyID0gdGhpcy5zdGF0ZS51c2VyO1xuXHRcdGlmICghdXNlcikge1xuXHRcdFx0cmV0dXJuIDxkaXYvPjtcblx0XHR9XG5cblx0XHRsZXQgcm9sZXM6IEpTWC5FbGVtZW50W10gPSBbXTtcblx0XHRmb3IgKGxldCByb2xlIG9mIHVzZXIucm9sZXMpIHtcblx0XHRcdHJvbGVzLnB1c2goXG5cdFx0XHRcdDxkaXZcblx0XHRcdFx0XHRjbGFzc05hbWU9XCJicDMtdGFnIGJwMy10YWctcmVtb3ZhYmxlIGJwMy1pbnRlbnQtcHJpbWFyeVwiXG5cdFx0XHRcdFx0c3R5bGU9e2Nzcy5yb2xlfVxuXHRcdFx0XHRcdGtleT17cm9sZX1cblx0XHRcdFx0PlxuXHRcdFx0XHRcdHtyb2xlfVxuXHRcdFx0XHRcdDxidXR0b25cblx0XHRcdFx0XHRcdGNsYXNzTmFtZT1cImJwMy10YWctcmVtb3ZlXCJcblx0XHRcdFx0XHRcdGRpc2FibGVkPXt0aGlzLnN0YXRlLmxvY2tlZH1cblx0XHRcdFx0XHRcdG9uTW91c2VVcD17KCk6IHZvaWQgPT4ge1xuXHRcdFx0XHRcdFx0XHR0aGlzLm9uUmVtb3ZlUm9sZShyb2xlKTtcblx0XHRcdFx0XHRcdH19XG5cdFx0XHRcdFx0Lz5cblx0XHRcdFx0PC9kaXY+LFxuXHRcdFx0KTtcblx0XHR9XG5cblx0XHRyZXR1cm4gPFBhZ2U+XG5cdFx0XHQ8UGFnZUhlYWRlcj5cblx0XHRcdFx0PGRpdiBjbGFzc05hbWU9XCJsYXlvdXQgaG9yaXpvbnRhbCB3cmFwXCIgc3R5bGU9e2Nzcy5oZWFkZXJ9PlxuXHRcdFx0XHRcdDxoMiBzdHlsZT17Y3NzLmhlYWRpbmd9Pnt1c2VySWQgPyAnVXNlciBJbmZvJyA6ICdOZXcgVXNlcid9PC9oMj5cblx0XHRcdFx0XHQ8ZGl2IGNsYXNzTmFtZT1cImZsZXhcIi8+XG5cdFx0XHRcdFx0PGRpdj5cblx0XHRcdFx0XHRcdDxDb25maXJtQnV0dG9uXG5cdFx0XHRcdFx0XHRcdGNsYXNzTmFtZT1cImJwMy1taW5pbWFsIGJwMy1pbnRlbnQtZGFuZ2VyIGJwMy1pY29uLXRyYXNoXCJcblx0XHRcdFx0XHRcdFx0c3R5bGU9e2Nzcy5idXR0b259XG5cdFx0XHRcdFx0XHRcdHNhZmU9e3RydWV9XG5cdFx0XHRcdFx0XHRcdHByb2dyZXNzQ2xhc3NOYW1lPVwiYnAzLWludGVudC1kYW5nZXJcIlxuXHRcdFx0XHRcdFx0XHRkaWFsb2dDbGFzc05hbWU9XCJicDMtaW50ZW50LWRhbmdlciBicDMtaWNvbi1kZWxldGVcIlxuXHRcdFx0XHRcdFx0XHRkaWFsb2dMYWJlbD1cIkRlbGV0ZSBVc2VyXCJcblx0XHRcdFx0XHRcdFx0Y29uZmlybU1zZz1cIlBlcm1hbmVudGx5IGRlbGV0ZSB0aGlzIHVzZXJcIlxuXHRcdFx0XHRcdFx0XHRjb25maXJtSW5wdXQ9e3RydWV9XG5cdFx0XHRcdFx0XHRcdGl0ZW1zPXtbdXNlci51c2VybmFtZV19XG5cdFx0XHRcdFx0XHRcdGRpc2FibGVkPXt0aGlzLnN0YXRlLmRpc2FibGVkfVxuXHRcdFx0XHRcdFx0XHRvbkNvbmZpcm09e3RoaXMub25EZWxldGV9XG5cdFx0XHRcdFx0XHQvPlxuXHRcdFx0XHRcdDwvZGl2PlxuXHRcdFx0XHQ8L2Rpdj5cblx0XHRcdDwvUGFnZUhlYWRlcj5cblx0XHRcdDxQYWdlU3BsaXQ+XG5cdFx0XHRcdDxQYWdlUGFuZWwgY2xhc3NOYW1lPVwibGF5b3V0IHZlcnRpY2FsXCI+XG5cdFx0XHRcdFx0PFBhZ2VJbnB1dFxuXHRcdFx0XHRcdFx0ZGlzYWJsZWQ9e3RoaXMuc3RhdGUubG9ja2VkfVxuXHRcdFx0XHRcdFx0bGFiZWw9XCJVc2VybmFtZVwiXG5cdFx0XHRcdFx0XHRoZWxwPVwiVXNlcm5hbWUsIGlmIHVzaW5nIHNpbmdsZSBzaWduLW9uIHVzZXJuYW1lIG11c3QgbWF0Y2hcIlxuXHRcdFx0XHRcdFx0dHlwZT1cInRleHRcIlxuXHRcdFx0XHRcdFx0cGxhY2Vob2xkZXI9XCJFbnRlciB1c2VybmFtZVwiXG5cdFx0XHRcdFx0XHR2YWx1ZT17dXNlci51c2VybmFtZX1cblx0XHRcdFx0XHRcdG9uQ2hhbmdlPXsodmFsKTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0XHRcdHRoaXMuc2V0KCd1c2VybmFtZScsIHZhbCk7XG5cdFx0XHRcdFx0XHR9fVxuXHRcdFx0XHRcdC8+XG5cdFx0XHRcdFx0PFBhZ2VJbnB1dFxuXHRcdFx0XHRcdFx0aGlkZGVuPXt1c2VyLnR5cGUgIT09ICdsb2NhbCd9XG5cdFx0XHRcdFx0XHRkaXNhYmxlZD17dGhpcy5zdGF0ZS5sb2NrZWR9XG5cdFx0XHRcdFx0XHRsYWJlbD1cIlBhc3N3b3JkXCJcblx0XHRcdFx0XHRcdGhlbHA9XCJQYXNzd29yZCwgbGVhdmUgYmxhbmsgdG8ga2VlcCBjdXJyZW50IHBhc3N3b3JkXCJcblx0XHRcdFx0XHRcdHR5cGU9XCJwYXNzd29yZFwiXG5cdFx0XHRcdFx0XHRwbGFjZWhvbGRlcj1cIkNoYW5nZSBwYXNzd29yZFwiXG5cdFx0XHRcdFx0XHR2YWx1ZT17dXNlci5wYXNzd29yZH1cblx0XHRcdFx0XHRcdG9uQ2hhbmdlPXsodmFsKTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0XHRcdHRoaXMuc2V0KCdwYXNzd29yZCcsIHZhbCk7XG5cdFx0XHRcdFx0XHR9fVxuXHRcdFx0XHRcdC8+XG5cdFx0XHRcdFx0PFBhZ2VJbnB1dFxuXHRcdFx0XHRcdFx0aGlkZGVuPXt1c2VyLnR5cGUgIT09ICdhcGknfVxuXHRcdFx0XHRcdFx0ZGlzYWJsZWQ9e3RoaXMuc3RhdGUubG9ja2VkfVxuXHRcdFx0XHRcdFx0cmVhZE9ubHk9e3RydWV9XG5cdFx0XHRcdFx0XHRhdXRvU2VsZWN0PXt0cnVlfVxuXHRcdFx0XHRcdFx0bGFiZWw9XCJUb2tlblwiXG5cdFx0XHRcdFx0XHRoZWxwPVwiQVBJIHRva2VuXCJcblx0XHRcdFx0XHRcdHR5cGU9XCJ0ZXh0XCJcblx0XHRcdFx0XHRcdHBsYWNlaG9sZGVyPVwiU2F2ZSB0byBnZW5lcmF0ZSB0b2tlblwiXG5cdFx0XHRcdFx0XHR2YWx1ZT17dXNlci50b2tlbn1cblx0XHRcdFx0XHQvPlxuXHRcdFx0XHRcdDxQYWdlSW5wdXRcblx0XHRcdFx0XHRcdGhpZGRlbj17dXNlci50eXBlICE9PSAnYXBpJyB8fCAhdXNlci50b2tlbiB8fCAhdXNlci5zZWNyZXR9XG5cdFx0XHRcdFx0XHRkaXNhYmxlZD17dGhpcy5zdGF0ZS5sb2NrZWR9XG5cdFx0XHRcdFx0XHRyZWFkT25seT17dHJ1ZX1cblx0XHRcdFx0XHRcdGF1dG9TZWxlY3Q9e3RydWV9XG5cdFx0XHRcdFx0XHRsYWJlbD1cIlNlY3JldFwiXG5cdFx0XHRcdFx0XHRoZWxwPVwiQVBJIHNlY3JldCwgd2lsbCBvbmx5IGJlIHNob3duIG9uY2VcIlxuXHRcdFx0XHRcdFx0dHlwZT1cInRleHRcIlxuXHRcdFx0XHRcdFx0cGxhY2Vob2xkZXI9XCJcIlxuXHRcdFx0XHRcdFx0dmFsdWU9e3VzZXIuc2VjcmV0fVxuXHRcdFx0XHRcdC8+XG5cdFx0XHRcdFx0PFBhZ2VTd2l0Y2hcblx0XHRcdFx0XHRcdGhpZGRlbj17dXNlci50eXBlICE9PSAnYXBpJyB8fCAhdXNlci50b2tlbiB8fCAhIXVzZXIuc2VjcmV0fVxuXHRcdFx0XHRcdFx0bGFiZWw9XCJHZW5lcmF0ZSBuZXcgdG9rZW4gYW5kIHNlY3JldFwiXG5cdFx0XHRcdFx0XHRoZWxwPVwiRW5hYmxlIHRvIGdlbmVyYXRlIGEgbmV3IHRva2VuIGFuZCBzZWNyZXQgb24gc2F2ZS4gU2VjcmV0IGNhbiBvbmx5IGJlIHNob3duIGJ5IGdlbmVyYXRpbmcgbmV3IGNyZWRlbnRpYWxzLlwiXG5cdFx0XHRcdFx0XHRkaXNhYmxlZD17dGhpcy5zdGF0ZS5sb2NrZWR9XG5cdFx0XHRcdFx0XHRjaGVja2VkPXt1c2VyLmdlbmVyYXRlX3NlY3JldH1cblx0XHRcdFx0XHRcdG9uVG9nZ2xlPXsoKTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0XHRcdHRoaXMuc2V0KCdnZW5lcmF0ZV9zZWNyZXQnLCAhdXNlci5nZW5lcmF0ZV9zZWNyZXQpO1xuXHRcdFx0XHRcdFx0fX1cblx0XHRcdFx0XHQvPlxuXHRcdFx0XHRcdDxQYWdlU2VsZWN0XG5cdFx0XHRcdFx0XHRkaXNhYmxlZD17dGhpcy5zdGF0ZS5sb2NrZWR9XG5cdFx0XHRcdFx0XHRsYWJlbD1cIlR5cGVcIlxuXHRcdFx0XHRcdFx0aGVscD1cIkEgbG9jYWwgdXNlciBpcyBhIHVzZXIgdGhhdCBpcyBjcmVhdGVkIG9uIHRoZSBQcml0dW5sIFplcm8gZGF0YWJhc2UgdGhhdCBoYXMgYSB1c2VybmFtZSBhbmQgcGFzc3dvcmQuIFRoZSBvdGhlciB1c2VyIHR5cGVzIGNhbiBiZSB1c2VkIHRvIGNyZWF0ZSB1c2VycyBmb3Igc2luZ2xlIHNpZ24tb24gc2VydmljZXMuIEdlbmVyYWxseSBzaW5nbGUgc2lnbi1vbiB1c2VycyB3aWxsIGJlIGNyZWF0ZWQgYXV0b21hdGljYWxseSB3aGVuIHRoZSB1c2VyIGF1dGhlbnRpY2F0ZXMgZm9yIHRoZSBmaXJzdCB0aW1lLiBJdCBjYW4gc29tZXRpbWVzIGJlIGRlc2lyZWQgdG8gbWFuYXVsbHkgY3JlYXRlIGEgc2luZ2xlIHNpZ24tb24gdXNlciB0byBwcm92aWRlIHJvbGVzIGluIGFkdmFuY2VkIG9mIHRoZSBmaXJzdCBsb2dpbi5cIlxuXHRcdFx0XHRcdFx0dmFsdWU9e3VzZXIudHlwZX1cblx0XHRcdFx0XHRcdG9uQ2hhbmdlPXsodmFsKTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0XHRcdHRoaXMuc2V0KCd0eXBlJywgdmFsKTtcblx0XHRcdFx0XHRcdH19XG5cdFx0XHRcdFx0PlxuXHRcdFx0XHRcdFx0PG9wdGlvbiB2YWx1ZT1cImxvY2FsXCI+TG9jYWw8L29wdGlvbj5cblx0XHRcdFx0XHRcdDxvcHRpb24gdmFsdWU9XCJhdXRoemVyb1wiPkF1dGgwPC9vcHRpb24+XG5cdFx0XHRcdFx0XHQ8b3B0aW9uIHZhbHVlPVwiYXp1cmVcIj5BenVyZTwvb3B0aW9uPlxuXHRcdFx0XHRcdFx0PG9wdGlvbiB2YWx1ZT1cImdvb2dsZVwiPkdvb2dsZTwvb3B0aW9uPlxuXHRcdFx0XHRcdFx0PG9wdGlvbiB2YWx1ZT1cIm9uZWxvZ2luXCI+T25lTG9naW48L29wdGlvbj5cblx0XHRcdFx0XHRcdDxvcHRpb24gdmFsdWU9XCJva3RhXCI+T2t0YTwvb3B0aW9uPlxuXHRcdFx0XHRcdFx0PG9wdGlvbiB2YWx1ZT1cImFwaVwiPkFQSTwvb3B0aW9uPlxuXHRcdFx0XHRcdDwvUGFnZVNlbGVjdD5cblx0XHRcdFx0XHQ8bGFiZWwgY2xhc3NOYW1lPVwiYnAzLWxhYmVsXCI+XG5cdFx0XHRcdFx0XHRSb2xlc1xuXHRcdFx0XHRcdFx0PEhlbHBcblx0XHRcdFx0XHRcdFx0dGl0bGU9XCJSb2xlc1wiXG5cdFx0XHRcdFx0XHRcdGNvbnRlbnQ9XCJVc2VyIHJvbGVzIHdpbGwgYmUgdXNlZCB0byBtYXRjaCB3aXRoIHNlcnZpY2Ugcm9sZXMuIEEgdXNlciBtdXN0IGhhdmUgYSBtYXRjaGluZyByb2xlIHRvIGFjY2VzcyBhIHNlcnZpY2UuXCJcblx0XHRcdFx0XHRcdC8+XG5cdFx0XHRcdFx0XHQ8ZGl2PlxuXHRcdFx0XHRcdFx0XHR7cm9sZXN9XG5cdFx0XHRcdFx0XHQ8L2Rpdj5cblx0XHRcdFx0XHQ8L2xhYmVsPlxuXHRcdFx0XHRcdDxQYWdlSW5wdXRCdXR0b25cblx0XHRcdFx0XHRcdGRpc2FibGVkPXt0aGlzLnN0YXRlLmxvY2tlZH1cblx0XHRcdFx0XHRcdGJ1dHRvbkNsYXNzPVwiYnAzLWludGVudC1zdWNjZXNzIGJwMy1pY29uLWFkZFwiXG5cdFx0XHRcdFx0XHRsYWJlbD1cIkFkZFwiXG5cdFx0XHRcdFx0XHR0eXBlPVwidGV4dFwiXG5cdFx0XHRcdFx0XHRwbGFjZWhvbGRlcj1cIkFkZCByb2xlXCJcblx0XHRcdFx0XHRcdHZhbHVlPXt0aGlzLnN0YXRlLmFkZFJvbGV9XG5cdFx0XHRcdFx0XHRvbkNoYW5nZT17KHZhbCk6IHZvaWQgPT4ge1xuXHRcdFx0XHRcdFx0XHR0aGlzLnNldFN0YXRlKHtcblx0XHRcdFx0XHRcdFx0XHQuLi50aGlzLnN0YXRlLFxuXHRcdFx0XHRcdFx0XHRcdGFkZFJvbGU6IHZhbCxcblx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHR9fVxuXHRcdFx0XHRcdFx0b25TdWJtaXQ9e3RoaXMub25BZGRSb2xlfVxuXHRcdFx0XHRcdC8+XG5cdFx0XHRcdFx0PFBhZ2VTd2l0Y2hcblx0XHRcdFx0XHRcdGxhYmVsPVwiQWRtaW5pc3RyYXRvclwiXG5cdFx0XHRcdFx0XHRoZWxwPVwiRW5hYmxlIHRvIGdpdmUgdXNlciBhZG1pbmlzdHJhdG9yIGFjY2VzcyB0byB0aGUgbWFuYWdlbWVudCBjb25zb2xlXCJcblx0XHRcdFx0XHRcdGRpc2FibGVkPXt0aGlzLnN0YXRlLmxvY2tlZH1cblx0XHRcdFx0XHRcdGNoZWNrZWQ9e3VzZXIuYWRtaW5pc3RyYXRvciA9PT0gJ3N1cGVyJ31cblx0XHRcdFx0XHRcdG9uVG9nZ2xlPXsoKTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0XHRcdGlmICh0aGlzLnN0YXRlLnVzZXIuYWRtaW5pc3RyYXRvciA9PT0gJ3N1cGVyJykge1xuXHRcdFx0XHRcdFx0XHRcdHRoaXMuc2V0KCdhZG1pbmlzdHJhdG9yJywgJycpO1xuXHRcdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRcdHRoaXMuc2V0KCdhZG1pbmlzdHJhdG9yJywgJ3N1cGVyJyk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH19XG5cdFx0XHRcdFx0Lz5cblx0XHRcdFx0XHQ8UGFnZVN3aXRjaFxuXHRcdFx0XHRcdFx0bGFiZWw9XCJEaXNhYmxlZFwiXG5cdFx0XHRcdFx0XHRoZWxwPVwiRGlzYWJsZXMgdGhlIHVzZXIgZW5kaW5nIGFsbCBhY3RpdmUgc2Vzc2lvbnMgYW5kIHByZXZlbnRzIG5ldyBhdXRoZW50aWNhdGlvbnNcIlxuXHRcdFx0XHRcdFx0ZGlzYWJsZWQ9e3RoaXMuc3RhdGUubG9ja2VkfVxuXHRcdFx0XHRcdFx0Y2hlY2tlZD17dXNlci5kaXNhYmxlZH1cblx0XHRcdFx0XHRcdG9uVG9nZ2xlPXsoKTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0XHRcdHRoaXMuc2V0KCdkaXNhYmxlZCcsICF0aGlzLnN0YXRlLnVzZXIuZGlzYWJsZWQpO1xuXHRcdFx0XHRcdFx0fX1cblx0XHRcdFx0XHQvPlxuXHRcdFx0XHQ8L1BhZ2VQYW5lbD5cblx0XHRcdFx0PFBhZ2VQYW5lbD5cblx0XHRcdFx0XHQ8UGFnZUluZm9cblx0XHRcdFx0XHRcdGZpZWxkcz17W1xuXHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0bGFiZWw6ICdJRCcsXG5cdFx0XHRcdFx0XHRcdFx0dmFsdWU6IHVzZXIuaWQgfHwgJ05vbmUnLFxuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0bGFiZWw6ICdMYXN0IEFjdGl2ZScsXG5cdFx0XHRcdFx0XHRcdFx0dmFsdWU6IE1pc2NVdGlscy5mb3JtYXREYXRlKHVzZXIubGFzdF9hY3RpdmUpIHx8ICdJbmFjdGl2ZScsXG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRdfVxuXHRcdFx0XHRcdC8+XG5cdFx0XHRcdFx0PFBhZ2VEYXRlVGltZVxuXHRcdFx0XHRcdFx0bGFiZWw9XCJBY3RpdmUgVW50aWxcIlxuXHRcdFx0XHRcdFx0aGVscD1cIlNldCB0aGlzIHRvIHNjaGVkdWxlIHRoZSB1c2VyIHRvIGJlIGRpc2FibGVkIGF0IHRoZSBzZXQgZGF0ZSBhbmQgdGltZS4gVGhpcyBpcyB1c2VmdWwgdG8gZ2l2ZSBhIHVzZXIgdGVtcG9yYXJ5IGFjY2VzcyB0byBhIHNlcnZpY2UuXCJcblx0XHRcdFx0XHRcdHZhbHVlPXt1c2VyLmFjdGl2ZV91bnRpbH1cblx0XHRcdFx0XHRcdGRpc2FibGVkPXt1c2VyLmRpc2FibGVkIHx8IHRoaXMuc3RhdGUubG9ja2VkfVxuXHRcdFx0XHRcdFx0b25DaGFuZ2U9eyh2YWwpOiB2b2lkID0+IHtcblx0XHRcdFx0XHRcdFx0dGhpcy5zZXQoJ2FjdGl2ZV91bnRpbCcsIHZhbCk7XG5cdFx0XHRcdFx0XHR9fVxuXHRcdFx0XHRcdC8+XG5cdFx0XHRcdDwvUGFnZVBhbmVsPlxuXHRcdFx0PC9QYWdlU3BsaXQ+XG5cdFx0XHR7dXNlcklkID8gPFBhZ2VTYXZlXG5cdFx0XHRcdG1lc3NhZ2U9e3RoaXMuc3RhdGUubWVzc2FnZX1cblx0XHRcdFx0Y2hhbmdlZD17dGhpcy5zdGF0ZS5jaGFuZ2VkfVxuXHRcdFx0XHRkaXNhYmxlZD17dGhpcy5zdGF0ZS5kaXNhYmxlZCB8fCB0aGlzLnN0YXRlLmxvY2tlZH1cblx0XHRcdFx0b25DYW5jZWw9eygpOiB2b2lkID0+IHtcblx0XHRcdFx0XHR0aGlzLnNldFN0YXRlKHtcblx0XHRcdFx0XHRcdC4uLnRoaXMuc3RhdGUsXG5cdFx0XHRcdFx0XHRjaGFuZ2VkOiBmYWxzZSxcblx0XHRcdFx0XHRcdG1lc3NhZ2U6ICdZb3VyIGNoYW5nZXMgaGF2ZSBiZWVuIGRpc2NhcmRlZCcsXG5cdFx0XHRcdFx0XHRhZGRSb2xlOiAnJyxcblx0XHRcdFx0XHRcdHVzZXI6IFVzZXJTdG9yZS51c2VyTSxcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fX1cblx0XHRcdFx0b25TYXZlPXt0aGlzLm9uU2F2ZX1cblx0XHRcdC8+IDogPFBhZ2VOZXdcblx0XHRcdFx0bWVzc2FnZT17dGhpcy5zdGF0ZS5tZXNzYWdlfVxuXHRcdFx0XHRjaGFuZ2VkPXt0aGlzLnN0YXRlLmNoYW5nZWR9XG5cdFx0XHRcdGRpc2FibGVkPXt0aGlzLnN0YXRlLmRpc2FibGVkIHx8IHRoaXMuc3RhdGUubG9ja2VkfVxuXHRcdFx0XHRvblNhdmU9e3RoaXMub25OZXd9XG5cdFx0XHQvPn1cblx0XHRcdHt0aGlzLnN0YXRlLmxvY2tlZCA/IG51bGwgOiA8U2Vzc2lvbnMgdXNlcklkPXt1c2VySWR9Lz59XG5cdFx0XHR7dGhpcy5zdGF0ZS5sb2NrZWQgPyBudWxsIDogPERldmljZXMgdXNlcklkPXt1c2VySWR9Lz59XG5cdFx0XHR7dGhpcy5zdGF0ZS5sb2NrZWQgPyBudWxsIDogPFNzaGNlcnRpZmljYXRlcyB1c2VySWQ9e3VzZXJJZH0vPn1cblx0XHRcdHt0aGlzLnN0YXRlLmxvY2tlZCA/IG51bGwgOiA8QXVkaXRzIHVzZXJJZD17dXNlcklkfS8+fVxuXHRcdDwvUGFnZT47XG5cdH1cbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./app/components/UserDetailed.js\n");
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ UserDetailed)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var _actions_UserActions__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../actions/UserActions */ \"./app/actions/UserActions.js\");\n/* harmony import */ var _utils_MiscUtils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/MiscUtils */ \"./app/utils/MiscUtils.js\");\n/* harmony import */ var _stores_UserStore__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../stores/UserStore */ \"./app/stores/UserStore.js\");\n/* harmony import */ var _Sessions__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./Sessions */ \"./app/components/Sessions.js\");\n/* harmony import */ var _Devices__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./Devices */ \"./app/components/Devices.js\");\n/* harmony import */ var _Audits__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./Audits */ \"./app/components/Audits.js\");\n/* harmony import */ var _Sshcertificates__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./Sshcertificates */ \"./app/components/Sshcertificates.js\");\n/* harmony import */ var _Page__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./Page */ \"./app/components/Page.js\");\n/* harmony import */ var _PageHeader__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./PageHeader */ \"./app/components/PageHeader.js\");\n/* harmony import */ var _PagePanel__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./PagePanel */ \"./app/components/PagePanel.js\");\n/* harmony import */ var _PageSplit__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./PageSplit */ \"./app/components/PageSplit.js\");\n/* harmony import */ var _PageInfo__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./PageInfo */ \"./app/components/PageInfo.js\");\n/* harmony import */ var _PageInput__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./PageInput */ \"./app/components/PageInput.js\");\n/* harmony import */ var _PageInputButton__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./PageInputButton */ \"./app/components/PageInputButton.js\");\n/* harmony import */ var _PageSwitch__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./PageSwitch */ \"./app/components/PageSwitch.js\");\n/* harmony import */ var _PageSelect__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./PageSelect */ \"./app/components/PageSelect.js\");\n/* harmony import */ var _PageDateTime__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./PageDateTime */ \"./app/components/PageDateTime.js\");\n/* harmony import */ var _PageSave__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./PageSave */ \"./app/components/PageSave.js\");\n/* harmony import */ var _PageNew__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./PageNew */ \"./app/components/PageNew.js\");\n/* harmony import */ var _ConfirmButton__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./ConfirmButton */ \"./app/components/ConfirmButton.js\");\n/* harmony import */ var _Help__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./Help */ \"./app/components/Help.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst css = {\n header: {\n marginTop: '-19px',\n },\n heading: {\n margin: '19px 0 0 0',\n },\n button: {\n margin: '10px 0 0 0',\n },\n role: {\n margin: '9px 5px 0 5px',\n height: '20px',\n },\n};\nclass UserDetailed extends react__WEBPACK_IMPORTED_MODULE_0__.Component {\n constructor(props, context) {\n super(props, context);\n this.onChange = () => {\n this.setState({\n ...this.state,\n user: _stores_UserStore__WEBPACK_IMPORTED_MODULE_3__[\"default\"].userM,\n });\n };\n this.onSave = () => {\n this.setState({\n ...this.state,\n disabled: true,\n });\n _actions_UserActions__WEBPACK_IMPORTED_MODULE_1__.commit(this.state.user).then(() => {\n this.setState({\n ...this.state,\n message: 'Your changes have been saved',\n changed: false,\n disabled: false,\n });\n }).catch(() => {\n this.setState({\n ...this.state,\n message: '',\n disabled: false,\n });\n });\n };\n this.onNew = () => {\n this.setState({\n ...this.state,\n disabled: true,\n });\n _actions_UserActions__WEBPACK_IMPORTED_MODULE_1__.create(this.state.user).then(() => {\n this.setState({\n ...this.state,\n message: 'User has been created',\n changed: false,\n disabled: false,\n locked: true,\n });\n }).catch(() => {\n this.setState({\n ...this.state,\n message: '',\n disabled: false,\n });\n });\n };\n this.set = (name, val) => {\n let user = {\n ...this.state.user,\n };\n user[name] = val;\n this.setState({\n ...this.state,\n changed: true,\n message: '',\n user: user,\n });\n };\n this.onAddRole = () => {\n let roles = [\n ...this.state.user.roles,\n ];\n if (!this.state.addRole) {\n return;\n }\n if (roles.indexOf(this.state.addRole) === -1) {\n roles.push(this.state.addRole);\n }\n roles.sort();\n this.setState({\n ...this.state,\n changed: true,\n message: '',\n addRole: '',\n user: {\n ...this.state.user,\n roles: roles,\n },\n });\n };\n this.onRemoveRole = (role) => {\n let roles = [\n ...this.state.user.roles,\n ];\n let i = roles.indexOf(role);\n if (i === -1) {\n return;\n }\n roles.splice(i, 1);\n this.setState({\n ...this.state,\n changed: true,\n message: '',\n addRole: '',\n user: {\n ...this.state.user,\n roles: roles,\n },\n });\n };\n this.onDelete = () => {\n this.setState({\n ...this.state,\n disabled: true,\n });\n _actions_UserActions__WEBPACK_IMPORTED_MODULE_1__.remove([this.props.userId]).then(() => {\n this.setState({\n ...this.state,\n message: 'User has been deleted',\n changed: false,\n disabled: false,\n locked: true,\n });\n }).catch(() => {\n this.setState({\n ...this.state,\n disabled: false,\n });\n });\n };\n this.state = {\n changed: false,\n disabled: false,\n locked: false,\n message: '',\n addRole: '',\n user: _stores_UserStore__WEBPACK_IMPORTED_MODULE_3__[\"default\"].userM,\n };\n }\n componentDidMount() {\n _stores_UserStore__WEBPACK_IMPORTED_MODULE_3__[\"default\"].addChangeListener(this.onChange);\n _actions_UserActions__WEBPACK_IMPORTED_MODULE_1__.load(this.props.userId);\n }\n componentWillUnmount() {\n _stores_UserStore__WEBPACK_IMPORTED_MODULE_3__[\"default\"].removeChangeListener(this.onChange);\n _actions_UserActions__WEBPACK_IMPORTED_MODULE_1__.unload();\n }\n render() {\n let userId = this.props.userId;\n let user = this.state.user;\n if (!user) {\n return react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", null);\n }\n let roles = [];\n for (let role of user.roles) {\n roles.push(react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", { className: \"bp3-tag bp3-tag-removable bp3-intent-primary\", style: css.role, key: role },\n role,\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"button\", { className: \"bp3-tag-remove\", disabled: this.state.locked, onMouseUp: () => {\n this.onRemoveRole(role);\n } })));\n }\n return react__WEBPACK_IMPORTED_MODULE_0__.createElement(_Page__WEBPACK_IMPORTED_MODULE_8__[\"default\"], null,\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(_PageHeader__WEBPACK_IMPORTED_MODULE_9__[\"default\"], null,\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", { className: \"layout horizontal wrap\", style: css.header },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"h2\", { style: css.heading }, userId ? 'User Info' : 'New User'),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", { className: \"flex\" }),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", null,\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(_ConfirmButton__WEBPACK_IMPORTED_MODULE_20__[\"default\"], { className: \"bp3-minimal bp3-intent-danger bp3-icon-trash\", style: css.button, safe: true, progressClassName: \"bp3-intent-danger\", dialogClassName: \"bp3-intent-danger bp3-icon-delete\", dialogLabel: \"Delete User\", confirmMsg: \"Permanently delete this user\", confirmInput: true, items: [user.username], disabled: this.state.disabled, onConfirm: this.onDelete })))),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(_PageSplit__WEBPACK_IMPORTED_MODULE_11__[\"default\"], null,\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(_PagePanel__WEBPACK_IMPORTED_MODULE_10__[\"default\"], { className: \"layout vertical\" },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(_PageInput__WEBPACK_IMPORTED_MODULE_13__[\"default\"], { disabled: this.state.locked, label: \"Username\", help: \"Username, if using single sign-on username must match\", type: \"text\", placeholder: \"Enter username\", value: user.username, onChange: (val) => {\n this.set('username', val);\n } }),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(_PageInput__WEBPACK_IMPORTED_MODULE_13__[\"default\"], { hidden: user.type !== 'local', disabled: this.state.locked, label: \"Password\", help: \"Password, leave blank to keep current password\", type: \"password\", placeholder: \"Change password\", value: user.password, onChange: (val) => {\n this.set('password', val);\n } }),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(_PageInput__WEBPACK_IMPORTED_MODULE_13__[\"default\"], { hidden: user.type !== 'api', disabled: this.state.locked, readOnly: true, autoSelect: true, label: \"Token\", help: \"API token\", type: \"text\", placeholder: \"Save to generate token\", value: user.token }),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(_PageInput__WEBPACK_IMPORTED_MODULE_13__[\"default\"], { hidden: user.type !== 'api' || !user.token || !user.secret, disabled: this.state.locked, readOnly: true, autoSelect: true, label: \"Secret\", help: \"API secret, will only be shown once\", type: \"text\", placeholder: \"\", value: user.secret }),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(_PageSwitch__WEBPACK_IMPORTED_MODULE_15__[\"default\"], { hidden: user.type !== 'api' || !user.token || !!user.secret, label: \"Generate new token and secret\", help: \"Enable to generate a new token and secret on save. Secret can only be shown by generating new credentials.\", disabled: this.state.locked, checked: user.generate_secret, onToggle: () => {\n this.set('generate_secret', !user.generate_secret);\n } }),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(_PageSelect__WEBPACK_IMPORTED_MODULE_16__[\"default\"], { disabled: this.state.locked, label: \"Type\", help: \"A local user is a user that is created on the Pritunl Zero database that has a username and password. The other user types can be used to create users for single sign-on services. Generally single sign-on users will be created automatically when the user authenticates for the first time. It can sometimes be desired to manaully create a single sign-on user to provide roles in advanced of the first login.\", value: user.type, onChange: (val) => {\n this.set('type', val);\n } },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"option\", { value: \"local\" }, \"Local\"),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"option\", { value: \"authzero\" }, \"Auth0\"),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"option\", { value: \"azure\" }, \"Azure\"),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"option\", { value: \"google\" }, \"Google\"),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"option\", { value: \"onelogin\" }, \"OneLogin\"),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"option\", { value: \"okta\" }, \"Okta\"),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"option\", { value: \"jumpcloud\" }, \"JumpCloud\"),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"option\", { value: \"api\" }, \"API\")),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"label\", { className: \"bp3-label\" },\n \"Roles\",\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(_Help__WEBPACK_IMPORTED_MODULE_21__[\"default\"], { title: \"Roles\", content: \"User roles will be used to match with service roles. A user must have a matching role to access a service.\" }),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", null, roles)),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(_PageInputButton__WEBPACK_IMPORTED_MODULE_14__[\"default\"], { disabled: this.state.locked, buttonClass: \"bp3-intent-success bp3-icon-add\", label: \"Add\", type: \"text\", placeholder: \"Add role\", value: this.state.addRole, onChange: (val) => {\n this.setState({\n ...this.state,\n addRole: val,\n });\n }, onSubmit: this.onAddRole }),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(_PageSwitch__WEBPACK_IMPORTED_MODULE_15__[\"default\"], { label: \"Administrator\", help: \"Enable to give user administrator access to the management console\", disabled: this.state.locked, checked: user.administrator === 'super', onToggle: () => {\n if (this.state.user.administrator === 'super') {\n this.set('administrator', '');\n }\n else {\n this.set('administrator', 'super');\n }\n } }),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(_PageSwitch__WEBPACK_IMPORTED_MODULE_15__[\"default\"], { label: \"Disabled\", help: \"Disables the user ending all active sessions and prevents new authentications\", disabled: this.state.locked, checked: user.disabled, onToggle: () => {\n this.set('disabled', !this.state.user.disabled);\n } })),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(_PagePanel__WEBPACK_IMPORTED_MODULE_10__[\"default\"], null,\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(_PageInfo__WEBPACK_IMPORTED_MODULE_12__[\"default\"], { fields: [\n {\n label: 'ID',\n value: user.id || 'None',\n },\n {\n label: 'Last Active',\n value: _utils_MiscUtils__WEBPACK_IMPORTED_MODULE_2__.formatDate(user.last_active) || 'Inactive',\n },\n ] }),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(_PageDateTime__WEBPACK_IMPORTED_MODULE_17__[\"default\"], { label: \"Active Until\", help: \"Set this to schedule the user to be disabled at the set date and time. This is useful to give a user temporary access to a service.\", value: user.active_until, disabled: user.disabled || this.state.locked, onChange: (val) => {\n this.set('active_until', val);\n } }))),\n userId ? react__WEBPACK_IMPORTED_MODULE_0__.createElement(_PageSave__WEBPACK_IMPORTED_MODULE_18__[\"default\"], { message: this.state.message, changed: this.state.changed, disabled: this.state.disabled || this.state.locked, onCancel: () => {\n this.setState({\n ...this.state,\n changed: false,\n message: 'Your changes have been discarded',\n addRole: '',\n user: _stores_UserStore__WEBPACK_IMPORTED_MODULE_3__[\"default\"].userM,\n });\n }, onSave: this.onSave }) : react__WEBPACK_IMPORTED_MODULE_0__.createElement(_PageNew__WEBPACK_IMPORTED_MODULE_19__[\"default\"], { message: this.state.message, changed: this.state.changed, disabled: this.state.disabled || this.state.locked, onSave: this.onNew }),\n this.state.locked ? null : react__WEBPACK_IMPORTED_MODULE_0__.createElement(_Sessions__WEBPACK_IMPORTED_MODULE_4__[\"default\"], { userId: userId }),\n this.state.locked ? null : react__WEBPACK_IMPORTED_MODULE_0__.createElement(_Devices__WEBPACK_IMPORTED_MODULE_5__[\"default\"], { userId: userId }),\n this.state.locked ? null : react__WEBPACK_IMPORTED_MODULE_0__.createElement(_Sshcertificates__WEBPACK_IMPORTED_MODULE_7__[\"default\"], { userId: userId }),\n this.state.locked ? null : react__WEBPACK_IMPORTED_MODULE_0__.createElement(_Audits__WEBPACK_IMPORTED_MODULE_6__[\"default\"], { userId: userId }));\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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a0NBQWtDO3dCQUMzQyxPQUFPLEVBQUUsRUFBRTt3QkFDWCxJQUFJLEVBQUUsK0RBQWU7cUJBQ3JCLENBQUMsQ0FBQztnQkFDSixDQUFDLEVBQ0QsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLEdBQ2xCLENBQUMsQ0FBQyxDQUFDLGlEQUFDLGlEQUFPLElBQ1osT0FBTyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUMzQixPQUFPLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQzNCLFFBQVEsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFDbEQsTUFBTSxFQUFFLElBQUksQ0FBQyxLQUFLLEdBQ2pCO1lBQ0QsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsaURBQUMsaURBQVEsSUFBQyxNQUFNLEVBQUUsTUFBTSxHQUFHO1lBQ3RELElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLGlEQUFDLGdEQUFPLElBQUMsTUFBTSxFQUFFLE1BQU0sR0FBRztZQUNyRCxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxpREFBQyx3REFBZSxJQUFDLE1BQU0sRUFBRSxNQUFNLEdBQUc7WUFDN0QsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsaURBQUMsK0NBQU0sSUFBQyxNQUFNLEVBQUUsTUFBTSxHQUFHLENBQy9DLENBQUM7SUFDVCxDQUFDO0NBQ0QiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9wcml0dW5sLXplcm8vLi9hcHAvY29tcG9uZW50cy9Vc2VyRGV0YWlsZWQudHN4PzEyOGEiXSwic291cmNlc0NvbnRlbnQiOlsiLy8vIDxyZWZlcmVuY2UgcGF0aD1cIi4uL1JlZmVyZW5jZXMuZC50c1wiLz5cbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCAqIGFzIFVzZXJBY3Rpb25zIGZyb20gJy4uL2FjdGlvbnMvVXNlckFjdGlvbnMnO1xuaW1wb3J0ICogYXMgVXNlclR5cGVzIGZyb20gJy4uL3R5cGVzL1VzZXJUeXBlcyc7XG5pbXBvcnQgKiBhcyBNaXNjVXRpbHMgZnJvbSAnLi4vdXRpbHMvTWlzY1V0aWxzJztcbmltcG9ydCBVc2VyU3RvcmUgZnJvbSAnLi4vc3RvcmVzL1VzZXJTdG9yZSc7XG5pbXBvcnQgU2Vzc2lvbnMgZnJvbSAnLi9TZXNzaW9ucyc7XG5pbXBvcnQgRGV2aWNlcyBmcm9tICcuL0RldmljZXMnO1xuaW1wb3J0IEF1ZGl0cyBmcm9tICcuL0F1ZGl0cyc7XG5pbXBvcnQgU3NoY2VydGlmaWNhdGVzIGZyb20gJy4vU3NoY2VydGlmaWNhdGVzJztcbmltcG9ydCBQYWdlIGZyb20gJy4vUGFnZSc7XG5pbXBvcnQgUGFnZUhlYWRlciBmcm9tICcuL1BhZ2VIZWFkZXInO1xuaW1wb3J0IFBhZ2VQYW5lbCBmcm9tICcuL1BhZ2VQYW5lbCc7XG5pbXBvcnQgUGFnZVNwbGl0IGZyb20gJy4vUGFnZVNwbGl0JztcbmltcG9ydCBQYWdlSW5mbyBmcm9tICcuL1BhZ2VJbmZvJztcbmltcG9ydCBQYWdlSW5wdXQgZnJvbSAnLi9QYWdlSW5wdXQnO1xuaW1wb3J0IFBhZ2VJbnB1dEJ1dHRvbiBmcm9tICcuL1BhZ2VJbnB1dEJ1dHRvbic7XG5pbXBvcnQgUGFnZVN3aXRjaCBmcm9tICcuL1BhZ2VTd2l0Y2gnO1xuaW1wb3J0IFBhZ2VTZWxlY3QgZnJvbSAnLi9QYWdlU2VsZWN0JztcbmltcG9ydCBQYWdlRGF0ZVRpbWUgZnJvbSAnLi9QYWdlRGF0ZVRpbWUnO1xuaW1wb3J0IFBhZ2VTYXZlIGZyb20gJy4vUGFnZVNhdmUnO1xuaW1wb3J0IFBhZ2VOZXcgZnJvbSAnLi9QYWdlTmV3JztcbmltcG9ydCBDb25maXJtQnV0dG9uIGZyb20gJy4vQ29uZmlybUJ1dHRvbic7XG5pbXBvcnQgSGVscCBmcm9tICcuL0hlbHAnO1xuXG5pbnRlcmZhY2UgUHJvcHMge1xuXHR1c2VySWQ/OiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBTdGF0ZSB7XG5cdGNoYW5nZWQ6IGJvb2xlYW47XG5cdGRpc2FibGVkOiBib29sZWFuO1xuXHRsb2NrZWQ6IGJvb2xlYW47XG5cdG1lc3NhZ2U6IHN0cmluZztcblx0YWRkUm9sZTogc3RyaW5nO1xuXHR1c2VyOiBVc2VyVHlwZXMuVXNlcjtcbn1cblxuY29uc3QgY3NzID0ge1xuXHRoZWFkZXI6IHtcblx0XHRtYXJnaW5Ub3A6ICctMTlweCcsXG5cdH0gYXMgUmVhY3QuQ1NTUHJvcGVydGllcyxcblx0aGVhZGluZzoge1xuXHRcdG1hcmdpbjogJzE5cHggMCAwIDAnLFxuXHR9IGFzIFJlYWN0LkNTU1Byb3BlcnRpZXMsXG5cdGJ1dHRvbjoge1xuXHRcdG1hcmdpbjogJzEwcHggMCAwIDAnLFxuXHR9IGFzIFJlYWN0LkNTU1Byb3BlcnRpZXMsXG5cdHJvbGU6IHtcblx0XHRtYXJnaW46ICc5cHggNXB4IDAgNXB4Jyxcblx0XHRoZWlnaHQ6ICcyMHB4Jyxcblx0fSBhcyBSZWFjdC5DU1NQcm9wZXJ0aWVzLFxufTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVXNlckRldGFpbGVkIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50PFByb3BzLCBTdGF0ZT4ge1xuXHRjb25zdHJ1Y3Rvcihwcm9wczogYW55LCBjb250ZXh0OiBhbnkpIHtcblx0XHRzdXBlcihwcm9wcywgY29udGV4dCk7XG5cdFx0dGhpcy5zdGF0ZSA9IHtcblx0XHRcdGNoYW5nZWQ6IGZhbHNlLFxuXHRcdFx0ZGlzYWJsZWQ6IGZhbHNlLFxuXHRcdFx0bG9ja2VkOiBmYWxzZSxcblx0XHRcdG1lc3NhZ2U6ICcnLFxuXHRcdFx0YWRkUm9sZTogJycsXG5cdFx0XHR1c2VyOiBVc2VyU3RvcmUudXNlck0sXG5cdFx0fTtcblx0fVxuXG5cdGNvbXBvbmVudERpZE1vdW50KCk6IHZvaWQge1xuXHRcdFVzZXJTdG9yZS5hZGRDaGFuZ2VMaXN0ZW5lcih0aGlzLm9uQ2hhbmdlKTtcblx0XHRVc2VyQWN0aW9ucy5sb2FkKHRoaXMucHJvcHMudXNlcklkKTtcblx0fVxuXG5cdGNvbXBvbmVudFdpbGxVbm1vdW50KCk6IHZvaWQge1xuXHRcdFVzZXJTdG9yZS5yZW1vdmVDaGFuZ2VMaXN0ZW5lcih0aGlzLm9uQ2hhbmdlKTtcblx0XHRVc2VyQWN0aW9ucy51bmxvYWQoKTtcblx0fVxuXG5cdG9uQ2hhbmdlID0gKCk6IHZvaWQgPT4ge1xuXHRcdHRoaXMuc2V0U3RhdGUoe1xuXHRcdFx0Li4udGhpcy5zdGF0ZSxcblx0XHRcdHVzZXI6IFVzZXJTdG9yZS51c2VyTSxcblx0XHR9KTtcblx0fVxuXG5cdG9uU2F2ZSA9ICgpOiB2b2lkID0+IHtcblx0XHR0aGlzLnNldFN0YXRlKHtcblx0XHRcdC4uLnRoaXMuc3RhdGUsXG5cdFx0XHRkaXNhYmxlZDogdHJ1ZSxcblx0XHR9KTtcblx0XHRVc2VyQWN0aW9ucy5jb21taXQodGhpcy5zdGF0ZS51c2VyKS50aGVuKCgpOiB2b2lkID0+IHtcblx0XHRcdHRoaXMuc2V0U3RhdGUoe1xuXHRcdFx0XHQuLi50aGlzLnN0YXRlLFxuXHRcdFx0XHRtZXNzYWdlOiAnWW91ciBjaGFuZ2VzIGhhdmUgYmVlbiBzYXZlZCcsXG5cdFx0XHRcdGNoYW5nZWQ6IGZhbHNlLFxuXHRcdFx0XHRkaXNhYmxlZDogZmFsc2UsXG5cdFx0XHR9KTtcblx0XHR9KS5jYXRjaCgoKTogdm9pZCA9PiB7XG5cdFx0XHR0aGlzLnNldFN0YXRlKHtcblx0XHRcdFx0Li4udGhpcy5zdGF0ZSxcblx0XHRcdFx0bWVzc2FnZTogJycsXG5cdFx0XHRcdGRpc2FibGVkOiBmYWxzZSxcblx0XHRcdH0pO1xuXHRcdH0pO1xuXHR9XG5cblx0b25OZXcgPSAoKTogdm9pZCA9PiB7XG5cdFx0dGhpcy5zZXRTdGF0ZSh7XG5cdFx0XHQuLi50aGlzLnN0YXRlLFxuXHRcdFx0ZGlzYWJsZWQ6IHRydWUsXG5cdFx0fSk7XG5cdFx0VXNlckFjdGlvbnMuY3JlYXRlKHRoaXMuc3RhdGUudXNlcikudGhlbigoKTogdm9pZCA9PiB7XG5cdFx0XHR0aGlzLnNldFN0YXRlKHtcblx0XHRcdFx0Li4udGhpcy5zdGF0ZSxcblx0XHRcdFx0bWVzc2FnZTogJ1VzZXIgaGFzIGJlZW4gY3JlYXRlZCcsXG5cdFx0XHRcdGNoYW5nZWQ6IGZhbHNlLFxuXHRcdFx0XHRkaXNhYmxlZDogZmFsc2UsXG5cdFx0XHRcdGxvY2tlZDogdHJ1ZSxcblx0XHRcdH0pO1xuXHRcdH0pLmNhdGNoKCgpOiB2b2lkID0+IHtcblx0XHRcdHRoaXMuc2V0U3RhdGUoe1xuXHRcdFx0XHQuLi50aGlzLnN0YXRlLFxuXHRcdFx0XHRtZXNzYWdlOiAnJyxcblx0XHRcdFx0ZGlzYWJsZWQ6IGZhbHNlLFxuXHRcdFx0fSk7XG5cdFx0fSk7XG5cdH1cblxuXHRzZXQgPSAobmFtZTogc3RyaW5nLCB2YWw6IGFueSk6IHZvaWQgPT4ge1xuXHRcdGxldCB1c2VyOiBhbnkgPSB7XG5cdFx0XHQuLi50aGlzLnN0YXRlLnVzZXIsXG5cdFx0fTtcblxuXHRcdHVzZXJbbmFtZV0gPSB2YWw7XG5cblx0XHR0aGlzLnNldFN0YXRlKHtcblx0XHRcdC4uLnRoaXMuc3RhdGUsXG5cdFx0XHRjaGFuZ2VkOiB0cnVlLFxuXHRcdFx0bWVzc2FnZTogJycsXG5cdFx0XHR1c2VyOiB1c2VyLFxuXHRcdH0pO1xuXHR9XG5cblx0b25BZGRSb2xlID0gKCk6IHZvaWQgPT4ge1xuXHRcdGxldCByb2xlcyA9IFtcblx0XHRcdC4uLnRoaXMuc3RhdGUudXNlci5yb2xlcyxcblx0XHRdO1xuXG5cdFx0aWYgKCF0aGlzLnN0YXRlLmFkZFJvbGUpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHRpZiAocm9sZXMuaW5kZXhPZih0aGlzLnN0YXRlLmFkZFJvbGUpID09PSAtMSkge1xuXHRcdFx0cm9sZXMucHVzaCh0aGlzLnN0YXRlLmFkZFJvbGUpO1xuXHRcdH1cblxuXHRcdHJvbGVzLnNvcnQoKTtcblxuXHRcdHRoaXMuc2V0U3RhdGUoe1xuXHRcdFx0Li4udGhpcy5zdGF0ZSxcblx0XHRcdGNoYW5nZWQ6IHRydWUsXG5cdFx0XHRtZXNzYWdlOiAnJyxcblx0XHRcdGFkZFJvbGU6ICcnLFxuXHRcdFx0dXNlcjoge1xuXHRcdFx0XHQuLi50aGlzLnN0YXRlLnVzZXIsXG5cdFx0XHRcdHJvbGVzOiByb2xlcyxcblx0XHRcdH0sXG5cdFx0fSk7XG5cdH1cblxuXHRvblJlbW92ZVJvbGUgPSAocm9sZTogc3RyaW5nKTogdm9pZCA9PiB7XG5cdFx0bGV0IHJvbGVzID0gW1xuXHRcdFx0Li4udGhpcy5zdGF0ZS51c2VyLnJvbGVzLFxuXHRcdF07XG5cblx0XHRsZXQgaSA9IHJvbGVzLmluZGV4T2Yocm9sZSk7XG5cdFx0aWYgKGkgPT09IC0xKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0cm9sZXMuc3BsaWNlKGksIDEpO1xuXG5cdFx0dGhpcy5zZXRTdGF0ZSh7XG5cdFx0XHQuLi50aGlzLnN0YXRlLFxuXHRcdFx0Y2hhbmdlZDogdHJ1ZSxcblx0XHRcdG1lc3NhZ2U6ICcnLFxuXHRcdFx0YWRkUm9sZTogJycsXG5cdFx0XHR1c2VyOiB7XG5cdFx0XHRcdC4uLnRoaXMuc3RhdGUudXNlcixcblx0XHRcdFx0cm9sZXM6IHJvbGVzLFxuXHRcdFx0fSxcblx0XHR9KTtcblx0fVxuXG5cdG9uRGVsZXRlID0gKCk6IHZvaWQgPT4ge1xuXHRcdHRoaXMuc2V0U3RhdGUoe1xuXHRcdFx0Li4udGhpcy5zdGF0ZSxcblx0XHRcdGRpc2FibGVkOiB0cnVlLFxuXHRcdH0pO1xuXHRcdFVzZXJBY3Rpb25zLnJlbW92ZShbdGhpcy5wcm9wcy51c2VySWRdKS50aGVuKCgpOiB2b2lkID0+IHtcblx0XHRcdHRoaXMuc2V0U3RhdGUoe1xuXHRcdFx0XHQuLi50aGlzLnN0YXRlLFxuXHRcdFx0XHRtZXNzYWdlOiAnVXNlciBoYXMgYmVlbiBkZWxldGVkJyxcblx0XHRcdFx0Y2hhbmdlZDogZmFsc2UsXG5cdFx0XHRcdGRpc2FibGVkOiBmYWxzZSxcblx0XHRcdFx0bG9ja2VkOiB0cnVlLFxuXHRcdFx0fSk7XG5cdFx0fSkuY2F0Y2goKCk6IHZvaWQgPT4ge1xuXHRcdFx0dGhpcy5zZXRTdGF0ZSh7XG5cdFx0XHRcdC4uLnRoaXMuc3RhdGUsXG5cdFx0XHRcdGRpc2FibGVkOiBmYWxzZSxcblx0XHRcdH0pO1xuXHRcdH0pO1xuXHR9XG5cblx0cmVuZGVyKCk6IEpTWC5FbGVtZW50IHtcblx0XHRsZXQgdXNlcklkID0gdGhpcy5wcm9wcy51c2VySWQ7XG5cdFx0bGV0IHVzZXIgPSB0aGlzLnN0YXRlLnVzZXI7XG5cdFx0aWYgKCF1c2VyKSB7XG5cdFx0XHRyZXR1cm4gPGRpdi8+O1xuXHRcdH1cblxuXHRcdGxldCByb2xlczogSlNYLkVsZW1lbnRbXSA9IFtdO1xuXHRcdGZvciAobGV0IHJvbGUgb2YgdXNlci5yb2xlcykge1xuXHRcdFx0cm9sZXMucHVzaChcblx0XHRcdFx0PGRpdlxuXHRcdFx0XHRcdGNsYXNzTmFtZT1cImJwMy10YWcgYnAzLXRhZy1yZW1vdmFibGUgYnAzLWludGVudC1wcmltYXJ5XCJcblx0XHRcdFx0XHRzdHlsZT17Y3NzLnJvbGV9XG5cdFx0XHRcdFx0a2V5PXtyb2xlfVxuXHRcdFx0XHQ+XG5cdFx0XHRcdFx0e3JvbGV9XG5cdFx0XHRcdFx0PGJ1dHRvblxuXHRcdFx0XHRcdFx0Y2xhc3NOYW1lPVwiYnAzLXRhZy1yZW1vdmVcIlxuXHRcdFx0XHRcdFx0ZGlzYWJsZWQ9e3RoaXMuc3RhdGUubG9ja2VkfVxuXHRcdFx0XHRcdFx0b25Nb3VzZVVwPXsoKTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0XHRcdHRoaXMub25SZW1vdmVSb2xlKHJvbGUpO1xuXHRcdFx0XHRcdFx0fX1cblx0XHRcdFx0XHQvPlxuXHRcdFx0XHQ8L2Rpdj4sXG5cdFx0XHQpO1xuXHRcdH1cblxuXHRcdHJldHVybiA8UGFnZT5cblx0XHRcdDxQYWdlSGVhZGVyPlxuXHRcdFx0XHQ8ZGl2IGNsYXNzTmFtZT1cImxheW91dCBob3Jpem9udGFsIHdyYXBcIiBzdHlsZT17Y3NzLmhlYWRlcn0+XG5cdFx0XHRcdFx0PGgyIHN0eWxlPXtjc3MuaGVhZGluZ30+e3VzZXJJZCA/ICdVc2VyIEluZm8nIDogJ05ldyBVc2VyJ308L2gyPlxuXHRcdFx0XHRcdDxkaXYgY2xhc3NOYW1lPVwiZmxleFwiLz5cblx0XHRcdFx0XHQ8ZGl2PlxuXHRcdFx0XHRcdFx0PENvbmZpcm1CdXR0b25cblx0XHRcdFx0XHRcdFx0Y2xhc3NOYW1lPVwiYnAzLW1pbmltYWwgYnAzLWludGVudC1kYW5nZXIgYnAzLWljb24tdHJhc2hcIlxuXHRcdFx0XHRcdFx0XHRzdHlsZT17Y3NzLmJ1dHRvbn1cblx0XHRcdFx0XHRcdFx0c2FmZT17dHJ1ZX1cblx0XHRcdFx0XHRcdFx0cHJvZ3Jlc3NDbGFzc05hbWU9XCJicDMtaW50ZW50LWRhbmdlclwiXG5cdFx0XHRcdFx0XHRcdGRpYWxvZ0NsYXNzTmFtZT1cImJwMy1pbnRlbnQtZGFuZ2VyIGJwMy1pY29uLWRlbGV0ZVwiXG5cdFx0XHRcdFx0XHRcdGRpYWxvZ0xhYmVsPVwiRGVsZXRlIFVzZXJcIlxuXHRcdFx0XHRcdFx0XHRjb25maXJtTXNnPVwiUGVybWFuZW50bHkgZGVsZXRlIHRoaXMgdXNlclwiXG5cdFx0XHRcdFx0XHRcdGNvbmZpcm1JbnB1dD17dHJ1ZX1cblx0XHRcdFx0XHRcdFx0aXRlbXM9e1t1c2VyLnVzZXJuYW1lXX1cblx0XHRcdFx0XHRcdFx0ZGlzYWJsZWQ9e3RoaXMuc3RhdGUuZGlzYWJsZWR9XG5cdFx0XHRcdFx0XHRcdG9uQ29uZmlybT17dGhpcy5vbkRlbGV0ZX1cblx0XHRcdFx0XHRcdC8+XG5cdFx0XHRcdFx0PC9kaXY+XG5cdFx0XHRcdDwvZGl2PlxuXHRcdFx0PC9QYWdlSGVhZGVyPlxuXHRcdFx0PFBhZ2VTcGxpdD5cblx0XHRcdFx0PFBhZ2VQYW5lbCBjbGFzc05hbWU9XCJsYXlvdXQgdmVydGljYWxcIj5cblx0XHRcdFx0XHQ8UGFnZUlucHV0XG5cdFx0XHRcdFx0XHRkaXNhYmxlZD17dGhpcy5zdGF0ZS5sb2NrZWR9XG5cdFx0XHRcdFx0XHRsYWJlbD1cIlVzZXJuYW1lXCJcblx0XHRcdFx0XHRcdGhlbHA9XCJVc2VybmFtZSwgaWYgdXNpbmcgc2luZ2xlIHNpZ24tb24gdXNlcm5hbWUgbXVzdCBtYXRjaFwiXG5cdFx0XHRcdFx0XHR0eXBlPVwidGV4dFwiXG5cdFx0XHRcdFx0XHRwbGFjZWhvbGRlcj1cIkVudGVyIHVzZXJuYW1lXCJcblx0XHRcdFx0XHRcdHZhbHVlPXt1c2VyLnVzZXJuYW1lfVxuXHRcdFx0XHRcdFx0b25DaGFuZ2U9eyh2YWwpOiB2b2lkID0+IHtcblx0XHRcdFx0XHRcdFx0dGhpcy5zZXQoJ3VzZXJuYW1lJywgdmFsKTtcblx0XHRcdFx0XHRcdH19XG5cdFx0XHRcdFx0Lz5cblx0XHRcdFx0XHQ8UGFnZUlucHV0XG5cdFx0XHRcdFx0XHRoaWRkZW49e3VzZXIudHlwZSAhPT0gJ2xvY2FsJ31cblx0XHRcdFx0XHRcdGRpc2FibGVkPXt0aGlzLnN0YXRlLmxvY2tlZH1cblx0XHRcdFx0XHRcdGxhYmVsPVwiUGFzc3dvcmRcIlxuXHRcdFx0XHRcdFx0aGVscD1cIlBhc3N3b3JkLCBsZWF2ZSBibGFuayB0byBrZWVwIGN1cnJlbnQgcGFzc3dvcmRcIlxuXHRcdFx0XHRcdFx0dHlwZT1cInBhc3N3b3JkXCJcblx0XHRcdFx0XHRcdHBsYWNlaG9sZGVyPVwiQ2hhbmdlIHBhc3N3b3JkXCJcblx0XHRcdFx0XHRcdHZhbHVlPXt1c2VyLnBhc3N3b3JkfVxuXHRcdFx0XHRcdFx0b25DaGFuZ2U9eyh2YWwpOiB2b2lkID0+IHtcblx0XHRcdFx0XHRcdFx0dGhpcy5zZXQoJ3Bhc3N3b3JkJywgdmFsKTtcblx0XHRcdFx0XHRcdH19XG5cdFx0XHRcdFx0Lz5cblx0XHRcdFx0XHQ8UGFnZUlucHV0XG5cdFx0XHRcdFx0XHRoaWRkZW49e3VzZXIudHlwZSAhPT0gJ2FwaSd9XG5cdFx0XHRcdFx0XHRkaXNhYmxlZD17dGhpcy5zdGF0ZS5sb2NrZWR9XG5cdFx0XHRcdFx0XHRyZWFkT25seT17dHJ1ZX1cblx0XHRcdFx0XHRcdGF1dG9TZWxlY3Q9e3RydWV9XG5cdFx0XHRcdFx0XHRsYWJlbD1cIlRva2VuXCJcblx0XHRcdFx0XHRcdGhlbHA9XCJBUEkgdG9rZW5cIlxuXHRcdFx0XHRcdFx0dHlwZT1cInRleHRcIlxuXHRcdFx0XHRcdFx0cGxhY2Vob2xkZXI9XCJTYXZlIHRvIGdlbmVyYXRlIHRva2VuXCJcblx0XHRcdFx0XHRcdHZhbHVlPXt1c2VyLnRva2VufVxuXHRcdFx0XHRcdC8+XG5cdFx0XHRcdFx0PFBhZ2VJbnB1dFxuXHRcdFx0XHRcdFx0aGlkZGVuPXt1c2VyLnR5cGUgIT09ICdhcGknIHx8ICF1c2VyLnRva2VuIHx8ICF1c2VyLnNlY3JldH1cblx0XHRcdFx0XHRcdGRpc2FibGVkPXt0aGlzLnN0YXRlLmxvY2tlZH1cblx0XHRcdFx0XHRcdHJlYWRPbmx5PXt0cnVlfVxuXHRcdFx0XHRcdFx0YXV0b1NlbGVjdD17dHJ1ZX1cblx0XHRcdFx0XHRcdGxhYmVsPVwiU2VjcmV0XCJcblx0XHRcdFx0XHRcdGhlbHA9XCJBUEkgc2VjcmV0LCB3aWxsIG9ubHkgYmUgc2hvd24gb25jZVwiXG5cdFx0XHRcdFx0XHR0eXBlPVwidGV4dFwiXG5cdFx0XHRcdFx0XHRwbGFjZWhvbGRlcj1cIlwiXG5cdFx0XHRcdFx0XHR2YWx1ZT17dXNlci5zZWNyZXR9XG5cdFx0XHRcdFx0Lz5cblx0XHRcdFx0XHQ8UGFnZVN3aXRjaFxuXHRcdFx0XHRcdFx0aGlkZGVuPXt1c2VyLnR5cGUgIT09ICdhcGknIHx8ICF1c2VyLnRva2VuIHx8ICEhdXNlci5zZWNyZXR9XG5cdFx0XHRcdFx0XHRsYWJlbD1cIkdlbmVyYXRlIG5ldyB0b2tlbiBhbmQgc2VjcmV0XCJcblx0XHRcdFx0XHRcdGhlbHA9XCJFbmFibGUgdG8gZ2VuZXJhdGUgYSBuZXcgdG9rZW4gYW5kIHNlY3JldCBvbiBzYXZlLiBTZWNyZXQgY2FuIG9ubHkgYmUgc2hvd24gYnkgZ2VuZXJhdGluZyBuZXcgY3JlZGVudGlhbHMuXCJcblx0XHRcdFx0XHRcdGRpc2FibGVkPXt0aGlzLnN0YXRlLmxvY2tlZH1cblx0XHRcdFx0XHRcdGNoZWNrZWQ9e3VzZXIuZ2VuZXJhdGVfc2VjcmV0fVxuXHRcdFx0XHRcdFx0b25Ub2dnbGU9eygpOiB2b2lkID0+IHtcblx0XHRcdFx0XHRcdFx0dGhpcy5zZXQoJ2dlbmVyYXRlX3NlY3JldCcsICF1c2VyLmdlbmVyYXRlX3NlY3JldCk7XG5cdFx0XHRcdFx0XHR9fVxuXHRcdFx0XHRcdC8+XG5cdFx0XHRcdFx0PFBhZ2VTZWxlY3Rcblx0XHRcdFx0XHRcdGRpc2FibGVkPXt0aGlzLnN0YXRlLmxvY2tlZH1cblx0XHRcdFx0XHRcdGxhYmVsPVwiVHlwZVwiXG5cdFx0XHRcdFx0XHRoZWxwPVwiQSBsb2NhbCB1c2VyIGlzIGEgdXNlciB0aGF0IGlzIGNyZWF0ZWQgb24gdGhlIFByaXR1bmwgWmVybyBkYXRhYmFzZSB0aGF0IGhhcyBhIHVzZXJuYW1lIGFuZCBwYXNzd29yZC4gVGhlIG90aGVyIHVzZXIgdHlwZXMgY2FuIGJlIHVzZWQgdG8gY3JlYXRlIHVzZXJzIGZvciBzaW5nbGUgc2lnbi1vbiBzZXJ2aWNlcy4gR2VuZXJhbGx5IHNpbmdsZSBzaWduLW9uIHVzZXJzIHdpbGwgYmUgY3JlYXRlZCBhdXRvbWF0aWNhbGx5IHdoZW4gdGhlIHVzZXIgYXV0aGVudGljYXRlcyBmb3IgdGhlIGZpcnN0IHRpbWUuIEl0IGNhbiBzb21ldGltZXMgYmUgZGVzaXJlZCB0byBtYW5hdWxseSBjcmVhdGUgYSBzaW5nbGUgc2lnbi1vbiB1c2VyIHRvIHByb3ZpZGUgcm9sZXMgaW4gYWR2YW5jZWQgb2YgdGhlIGZpcnN0IGxvZ2luLlwiXG5cdFx0XHRcdFx0XHR2YWx1ZT17dXNlci50eXBlfVxuXHRcdFx0XHRcdFx0b25DaGFuZ2U9eyh2YWwpOiB2b2lkID0+IHtcblx0XHRcdFx0XHRcdFx0dGhpcy5zZXQoJ3R5cGUnLCB2YWwpO1xuXHRcdFx0XHRcdFx0fX1cblx0XHRcdFx0XHQ+XG5cdFx0XHRcdFx0XHQ8b3B0aW9uIHZhbHVlPVwibG9jYWxcIj5Mb2NhbDwvb3B0aW9uPlxuXHRcdFx0XHRcdFx0PG9wdGlvbiB2YWx1ZT1cImF1dGh6ZXJvXCI+QXV0aDA8L29wdGlvbj5cblx0XHRcdFx0XHRcdDxvcHRpb24gdmFsdWU9XCJhenVyZVwiPkF6dXJlPC9vcHRpb24+XG5cdFx0XHRcdFx0XHQ8b3B0aW9uIHZhbHVlPVwiZ29vZ2xlXCI+R29vZ2xlPC9vcHRpb24+XG5cdFx0XHRcdFx0XHQ8b3B0aW9uIHZhbHVlPVwib25lbG9naW5cIj5PbmVMb2dpbjwvb3B0aW9uPlxuXHRcdFx0XHRcdFx0PG9wdGlvbiB2YWx1ZT1cIm9rdGFcIj5Pa3RhPC9vcHRpb24+XG5cdFx0XHRcdFx0XHQ8b3B0aW9uIHZhbHVlPVwianVtcGNsb3VkXCI+SnVtcENsb3VkPC9vcHRpb24+XG5cdFx0XHRcdFx0XHQ8b3B0aW9uIHZhbHVlPVwiYXBpXCI+QVBJPC9vcHRpb24+XG5cdFx0XHRcdFx0PC9QYWdlU2VsZWN0PlxuXHRcdFx0XHRcdDxsYWJlbCBjbGFzc05hbWU9XCJicDMtbGFiZWxcIj5cblx0XHRcdFx0XHRcdFJvbGVzXG5cdFx0XHRcdFx0XHQ8SGVscFxuXHRcdFx0XHRcdFx0XHR0aXRsZT1cIlJvbGVzXCJcblx0XHRcdFx0XHRcdFx0Y29udGVudD1cIlVzZXIgcm9sZXMgd2lsbCBiZSB1c2VkIHRvIG1hdGNoIHdpdGggc2VydmljZSByb2xlcy4gQSB1c2VyIG11c3QgaGF2ZSBhIG1hdGNoaW5nIHJvbGUgdG8gYWNjZXNzIGEgc2VydmljZS5cIlxuXHRcdFx0XHRcdFx0Lz5cblx0XHRcdFx0XHRcdDxkaXY+XG5cdFx0XHRcdFx0XHRcdHtyb2xlc31cblx0XHRcdFx0XHRcdDwvZGl2PlxuXHRcdFx0XHRcdDwvbGFiZWw+XG5cdFx0XHRcdFx0PFBhZ2VJbnB1dEJ1dHRvblxuXHRcdFx0XHRcdFx0ZGlzYWJsZWQ9e3RoaXMuc3RhdGUubG9ja2VkfVxuXHRcdFx0XHRcdFx0YnV0dG9uQ2xhc3M9XCJicDMtaW50ZW50LXN1Y2Nlc3MgYnAzLWljb24tYWRkXCJcblx0XHRcdFx0XHRcdGxhYmVsPVwiQWRkXCJcblx0XHRcdFx0XHRcdHR5cGU9XCJ0ZXh0XCJcblx0XHRcdFx0XHRcdHBsYWNlaG9sZGVyPVwiQWRkIHJvbGVcIlxuXHRcdFx0XHRcdFx0dmFsdWU9e3RoaXMuc3RhdGUuYWRkUm9sZX1cblx0XHRcdFx0XHRcdG9uQ2hhbmdlPXsodmFsKTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0XHRcdHRoaXMuc2V0U3RhdGUoe1xuXHRcdFx0XHRcdFx0XHRcdC4uLnRoaXMuc3RhdGUsXG5cdFx0XHRcdFx0XHRcdFx0YWRkUm9sZTogdmFsLFxuXHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdH19XG5cdFx0XHRcdFx0XHRvblN1Ym1pdD17dGhpcy5vbkFkZFJvbGV9XG5cdFx0XHRcdFx0Lz5cblx0XHRcdFx0XHQ8UGFnZVN3aXRjaFxuXHRcdFx0XHRcdFx0bGFiZWw9XCJBZG1pbmlzdHJhdG9yXCJcblx0XHRcdFx0XHRcdGhlbHA9XCJFbmFibGUgdG8gZ2l2ZSB1c2VyIGFkbWluaXN0cmF0b3IgYWNjZXNzIHRvIHRoZSBtYW5hZ2VtZW50IGNvbnNvbGVcIlxuXHRcdFx0XHRcdFx0ZGlzYWJsZWQ9e3RoaXMuc3RhdGUubG9ja2VkfVxuXHRcdFx0XHRcdFx0Y2hlY2tlZD17dXNlci5hZG1pbmlzdHJhdG9yID09PSAnc3VwZXInfVxuXHRcdFx0XHRcdFx0b25Ub2dnbGU9eygpOiB2b2lkID0+IHtcblx0XHRcdFx0XHRcdFx0aWYgKHRoaXMuc3RhdGUudXNlci5hZG1pbmlzdHJhdG9yID09PSAnc3VwZXInKSB7XG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5zZXQoJ2FkbWluaXN0cmF0b3InLCAnJyk7XG5cdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5zZXQoJ2FkbWluaXN0cmF0b3InLCAnc3VwZXInKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fX1cblx0XHRcdFx0XHQvPlxuXHRcdFx0XHRcdDxQYWdlU3dpdGNoXG5cdFx0XHRcdFx0XHRsYWJlbD1cIkRpc2FibGVkXCJcblx0XHRcdFx0XHRcdGhlbHA9XCJEaXNhYmxlcyB0aGUgdXNlciBlbmRpbmcgYWxsIGFjdGl2ZSBzZXNzaW9ucyBhbmQgcHJldmVudHMgbmV3IGF1dGhlbnRpY2F0aW9uc1wiXG5cdFx0XHRcdFx0XHRkaXNhYmxlZD17dGhpcy5zdGF0ZS5sb2NrZWR9XG5cdFx0XHRcdFx0XHRjaGVja2VkPXt1c2VyLmRpc2FibGVkfVxuXHRcdFx0XHRcdFx0b25Ub2dnbGU9eygpOiB2b2lkID0+IHtcblx0XHRcdFx0XHRcdFx0dGhpcy5zZXQoJ2Rpc2FibGVkJywgIXRoaXMuc3RhdGUudXNlci5kaXNhYmxlZCk7XG5cdFx0XHRcdFx0XHR9fVxuXHRcdFx0XHRcdC8+XG5cdFx0XHRcdDwvUGFnZVBhbmVsPlxuXHRcdFx0XHQ8UGFnZVBhbmVsPlxuXHRcdFx0XHRcdDxQYWdlSW5mb1xuXHRcdFx0XHRcdFx0ZmllbGRzPXtbXG5cdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRsYWJlbDogJ0lEJyxcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogdXNlci5pZCB8fCAnTm9uZScsXG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRsYWJlbDogJ0xhc3QgQWN0aXZlJyxcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogTWlzY1V0aWxzLmZvcm1hdERhdGUodXNlci5sYXN0X2FjdGl2ZSkgfHwgJ0luYWN0aXZlJyxcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdF19XG5cdFx0XHRcdFx0Lz5cblx0XHRcdFx0XHQ8UGFnZURhdGVUaW1lXG5cdFx0XHRcdFx0XHRsYWJlbD1cIkFjdGl2ZSBVbnRpbFwiXG5cdFx0XHRcdFx0XHRoZWxwPVwiU2V0IHRoaXMgdG8gc2NoZWR1bGUgdGhlIHVzZXIgdG8gYmUgZGlzYWJsZWQgYXQgdGhlIHNldCBkYXRlIGFuZCB0aW1lLiBUaGlzIGlzIHVzZWZ1bCB0byBnaXZlIGEgdXNlciB0ZW1wb3JhcnkgYWNjZXNzIHRvIGEgc2VydmljZS5cIlxuXHRcdFx0XHRcdFx0dmFsdWU9e3VzZXIuYWN0aXZlX3VudGlsfVxuXHRcdFx0XHRcdFx0ZGlzYWJsZWQ9e3VzZXIuZGlzYWJsZWQgfHwgdGhpcy5zdGF0ZS5sb2NrZWR9XG5cdFx0XHRcdFx0XHRvbkNoYW5nZT17KHZhbCk6IHZvaWQgPT4ge1xuXHRcdFx0XHRcdFx0XHR0aGlzLnNldCgnYWN0aXZlX3VudGlsJywgdmFsKTtcblx0XHRcdFx0XHRcdH19XG5cdFx0XHRcdFx0Lz5cblx0XHRcdFx0PC9QYWdlUGFuZWw+XG5cdFx0XHQ8L1BhZ2VTcGxpdD5cblx0XHRcdHt1c2VySWQgPyA8UGFnZVNhdmVcblx0XHRcdFx0bWVzc2FnZT17dGhpcy5zdGF0ZS5tZXNzYWdlfVxuXHRcdFx0XHRjaGFuZ2VkPXt0aGlzLnN0YXRlLmNoYW5nZWR9XG5cdFx0XHRcdGRpc2FibGVkPXt0aGlzLnN0YXRlLmRpc2FibGVkIHx8IHRoaXMuc3RhdGUubG9ja2VkfVxuXHRcdFx0XHRvbkNhbmNlbD17KCk6IHZvaWQgPT4ge1xuXHRcdFx0XHRcdHRoaXMuc2V0U3RhdGUoe1xuXHRcdFx0XHRcdFx0Li4udGhpcy5zdGF0ZSxcblx0XHRcdFx0XHRcdGNoYW5nZWQ6IGZhbHNlLFxuXHRcdFx0XHRcdFx0bWVzc2FnZTogJ1lvdXIgY2hhbmdlcyBoYXZlIGJlZW4gZGlzY2FyZGVkJyxcblx0XHRcdFx0XHRcdGFkZFJvbGU6ICcnLFxuXHRcdFx0XHRcdFx0dXNlcjogVXNlclN0b3JlLnVzZXJNLFxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9fVxuXHRcdFx0XHRvblNhdmU9e3RoaXMub25TYXZlfVxuXHRcdFx0Lz4gOiA8UGFnZU5ld1xuXHRcdFx0XHRtZXNzYWdlPXt0aGlzLnN0YXRlLm1lc3NhZ2V9XG5cdFx0XHRcdGNoYW5nZWQ9e3RoaXMuc3RhdGUuY2hhbmdlZH1cblx0XHRcdFx0ZGlzYWJsZWQ9e3RoaXMuc3RhdGUuZGlzYWJsZWQgfHwgdGhpcy5zdGF0ZS5sb2NrZWR9XG5cdFx0XHRcdG9uU2F2ZT17dGhpcy5vbk5ld31cblx0XHRcdC8+fVxuXHRcdFx0e3RoaXMuc3RhdGUubG9ja2VkID8gbnVsbCA6IDxTZXNzaW9ucyB1c2VySWQ9e3VzZXJJZH0vPn1cblx0XHRcdHt0aGlzLnN0YXRlLmxvY2tlZCA/IG51bGwgOiA8RGV2aWNlcyB1c2VySWQ9e3VzZXJJZH0vPn1cblx0XHRcdHt0aGlzLnN0YXRlLmxvY2tlZCA/IG51bGwgOiA8U3NoY2VydGlmaWNhdGVzIHVzZXJJZD17dXNlcklkfS8+fVxuXHRcdFx0e3RoaXMuc3RhdGUubG9ja2VkID8gbnVsbCA6IDxBdWRpdHMgdXNlcklkPXt1c2VySWR9Lz59XG5cdFx0PC9QYWdlPjtcblx0fVxufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./app/components/UserDetailed.js\n");
/***/ }),
@@ -1813,7 +1813,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"SYNC\": () => (/* binding */ SYNC),\n/* harmony export */ \"SYNC_NAMES\": () => (/* binding */ SYNC_NAMES),\n/* harmony export */ \"TRAVERSE\": () => (/* binding */ TRAVERSE),\n/* harmony export */ \"FILTER\": () => (/* binding */ FILTER),\n/* harmony export */ \"CHANGE\": () => (/* binding */ CHANGE)\n/* harmony export */ });\nconst SYNC = 'endpoint.sync';\nconst SYNC_NAMES = 'endpoint.sync_names';\nconst TRAVERSE = 'endpoint.traverse';\nconst FILTER = 'endpoint.filter';\nconst CHANGE = 'endpoint.change';\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9hcHAvdHlwZXMvRW5kcG9pbnRUeXBlcy5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUdPLE1BQU0sSUFBSSxHQUFHLGVBQWUsQ0FBQztBQUM3QixNQUFNLFVBQVUsR0FBRyxxQkFBcUIsQ0FBQztBQUN6QyxNQUFNLFFBQVEsR0FBRyxtQkFBbUIsQ0FBQztBQUNyQyxNQUFNLE1BQU0sR0FBRyxpQkFBaUIsQ0FBQztBQUNqQyxNQUFNLE1BQU0sR0FBRyxpQkFBaUIsQ0FBQyIsInNvdXJjZXMiOlsid2VicGFjazovL3ByaXR1bmwtemVyby8uL2FwcC90eXBlcy9FbmRwb2ludFR5cGVzLnRzPzVlNWUiXSwic291cmNlc0NvbnRlbnQiOlsiLy8vIDxyZWZlcmVuY2UgcGF0aD1cIi4uL1JlZmVyZW5jZXMuZC50c1wiLz5cbmltcG9ydCAqIGFzIENoYXJ0VHlwZXMgZnJvbSAnLi4vdHlwZXMvQ2hhcnRUeXBlcyc7XG5cbmV4cG9ydCBjb25zdCBTWU5DID0gJ2VuZHBvaW50LnN5bmMnO1xuZXhwb3J0IGNvbnN0IFNZTkNfTkFNRVMgPSAnZW5kcG9pbnQuc3luY19uYW1lcyc7XG5leHBvcnQgY29uc3QgVFJBVkVSU0UgPSAnZW5kcG9pbnQudHJhdmVyc2UnO1xuZXhwb3J0IGNvbnN0IEZJTFRFUiA9ICdlbmRwb2ludC5maWx0ZXInO1xuZXhwb3J0IGNvbnN0IENIQU5HRSA9ICdlbmRwb2ludC5jaGFuZ2UnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEVuZHBvaW50IHtcblx0aWQ6IHN0cmluZztcblx0bmFtZT86IHN0cmluZztcblx0cm9sZXM/OiBzdHJpbmdbXTtcblx0Y2xpZW50X2tleT86IENsaWVudEtleTtcblx0aGFzX2NsaWVudF9rZXk/OiBib29sZWFuO1xuXHRyZXNldF9jbGllbnRfa2V5PzogYm9vbGVhbjtcblx0ZGF0YT86IEVuZHBvaW50RGF0YTtcblx0aW5mbz86IEVuZHBvaW50SW5mbztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFbmRwb2ludEluZm8ge1xuXHRhbGVydHM/OiB7W2tleTogc3RyaW5nXTogc3RyaW5nfTtcblx0Y2hlY2tzPzoge1trZXk6IHN0cmluZ106IHN0cmluZ307XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRW5kcG9pbnREYXRhIHtcblx0aG9zdG5hbWU/OiBzdHJpbmc7XG5cdHVwdGltZT86IG51bWJlcjtcblx0cGxhdGZvcm0/OiBzdHJpbmc7XG5cdHBhY2thZ2VfdXBkYXRlcz86IG51bWJlcjtcblx0dmlydHVhbGl6YXRpb24/OiBzdHJpbmc7XG5cdGNwdV9jb3Jlcz86IG51bWJlcjtcblx0bWVtX3RvdGFsPzogbnVtYmVyO1xuXHRzd2FwX3RvdGFsPzogbnVtYmVyO1xuXHRodWdlX3RvdGFsPzogbnVtYmVyO1xuXHRtZF9zdGF0PzogTWRTdGF0ZVtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1kU3RhdGUge1xuXHRuYW1lPzogc3RyaW5nO1xuXHRzdGF0ZT86IHN0cmluZztcblx0bGV2ZWw/OiBzdHJpbmc7XG5cdGZhaWxlZD86IG51bWJlcjtcblx0c3BhcmU/OiBudW1iZXI7XG5cdHRvdGFsPzogbnVtYmVyO1xufVxuXG5leHBvcnQgdHlwZSBMb2dEYXRhID0gc3RyaW5nW107XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2xpZW50S2V5IHtcblx0c2VjcmV0Pzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZpbHRlciB7XG5cdGlkPzogc3RyaW5nO1xuXHRuYW1lPzogc3RyaW5nO1xuXHRyb2xlPzogc3RyaW5nO1xufVxuXG5leHBvcnQgdHlwZSBFbmRwb2ludHMgPSBFbmRwb2ludFtdO1xuXG5leHBvcnQgdHlwZSBFbmRwb2ludFJvID0gUmVhZG9ubHk8RW5kcG9pbnQ+O1xuZXhwb3J0IHR5cGUgRW5kcG9pbnRzUm8gPSBSZWFkb25seUFycmF5PEVuZHBvaW50Um8+O1xuXG5leHBvcnQgaW50ZXJmYWNlIEVuZHBvaW50RGlzcGF0Y2gge1xuXHR0eXBlOiBzdHJpbmc7XG5cdGRhdGE/OiB7XG5cdFx0aWQ/OiBzdHJpbmc7XG5cdFx0ZW5kcG9pbnQ/OiBFbmRwb2ludDtcblx0XHRlbmRwb2ludHM/OiBFbmRwb2ludHM7XG5cdFx0cGFnZT86IG51bWJlcjtcblx0XHRwYWdlQ291bnQ/OiBudW1iZXI7XG5cdFx0ZmlsdGVyPzogRmlsdGVyO1xuXHRcdGNvdW50PzogbnVtYmVyO1xuXHR9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFN5c3RlbUNoYXJ0IHtcblx0Y3B1X3VzYWdlPzogQ2hhcnRUeXBlcy5Qb2ludHM7XG5cdG1lbV91c2FnZT86IENoYXJ0VHlwZXMuUG9pbnRzO1xuXHRzd2FwX3VzYWdlPzogQ2hhcnRUeXBlcy5Qb2ludHM7XG5cdGh1Z2VfdXNhZ2U/OiBDaGFydFR5cGVzLlBvaW50cztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMb2FkQ2hhcnQge1xuXHRsb2FkMT86IENoYXJ0VHlwZXMuUG9pbnRzO1xuXHRsb2FkNT86IENoYXJ0VHlwZXMuUG9pbnRzO1xuXHRsb2FkMTU/OiBDaGFydFR5cGVzLlBvaW50cztcbn1cblxuZXhwb3J0IHR5cGUgRGlza0NoYXJ0ID0ge1trZXk6IHN0cmluZ106IENoYXJ0VHlwZXMuUG9pbnRzfTtcblxuZXhwb3J0IHR5cGUgRGlza0lvQ2hhcnQgPSB7W2tleTogc3RyaW5nXTogQ2hhcnRUeXBlcy5Qb2ludHN9O1xuXG5leHBvcnQgdHlwZSBOZXR3b3JrQ2hhcnQgPSB7W2tleTogc3RyaW5nXTogQ2hhcnRUeXBlcy5Qb2ludHN9O1xuXG5leHBvcnQgdHlwZSBDaGVja0NoYXJ0ID0ge1trZXk6IHN0cmluZ106IENoYXJ0VHlwZXMuUG9pbnRzfTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./app/types/EndpointTypes.js\n");
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"SYNC\": () => (/* binding */ SYNC),\n/* harmony export */ \"SYNC_NAMES\": () => (/* binding */ SYNC_NAMES),\n/* harmony export */ \"TRAVERSE\": () => (/* binding */ TRAVERSE),\n/* harmony export */ \"FILTER\": () => (/* binding */ FILTER),\n/* harmony export */ \"CHANGE\": () => (/* binding */ CHANGE)\n/* harmony export */ });\nconst SYNC = 'endpoint.sync';\nconst SYNC_NAMES = 'endpoint.sync_names';\nconst TRAVERSE = 'endpoint.traverse';\nconst FILTER = 'endpoint.filter';\nconst CHANGE = 'endpoint.change';\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9hcHAvdHlwZXMvRW5kcG9pbnRUeXBlcy5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUdPLE1BQU0sSUFBSSxHQUFHLGVBQWUsQ0FBQztBQUM3QixNQUFNLFVBQVUsR0FBRyxxQkFBcUIsQ0FBQztBQUN6QyxNQUFNLFFBQVEsR0FBRyxtQkFBbUIsQ0FBQztBQUNyQyxNQUFNLE1BQU0sR0FBRyxpQkFBaUIsQ0FBQztBQUNqQyxNQUFNLE1BQU0sR0FBRyxpQkFBaUIsQ0FBQyIsInNvdXJjZXMiOlsid2VicGFjazovL3ByaXR1bmwtemVyby8uL2FwcC90eXBlcy9FbmRwb2ludFR5cGVzLnRzPzVlNWUiXSwic291cmNlc0NvbnRlbnQiOlsiLy8vIDxyZWZlcmVuY2UgcGF0aD1cIi4uL1JlZmVyZW5jZXMuZC50c1wiLz5cbmltcG9ydCAqIGFzIENoYXJ0VHlwZXMgZnJvbSAnLi4vdHlwZXMvQ2hhcnRUeXBlcyc7XG5cbmV4cG9ydCBjb25zdCBTWU5DID0gJ2VuZHBvaW50LnN5bmMnO1xuZXhwb3J0IGNvbnN0IFNZTkNfTkFNRVMgPSAnZW5kcG9pbnQuc3luY19uYW1lcyc7XG5leHBvcnQgY29uc3QgVFJBVkVSU0UgPSAnZW5kcG9pbnQudHJhdmVyc2UnO1xuZXhwb3J0IGNvbnN0IEZJTFRFUiA9ICdlbmRwb2ludC5maWx0ZXInO1xuZXhwb3J0IGNvbnN0IENIQU5HRSA9ICdlbmRwb2ludC5jaGFuZ2UnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEVuZHBvaW50IHtcblx0aWQ6IHN0cmluZztcblx0bmFtZT86IHN0cmluZztcblx0cm9sZXM/OiBzdHJpbmdbXTtcblx0Y2xpZW50X2tleT86IENsaWVudEtleTtcblx0aGFzX2NsaWVudF9rZXk/OiBib29sZWFuO1xuXHRyZXNldF9jbGllbnRfa2V5PzogYm9vbGVhbjtcblx0ZGF0YT86IEVuZHBvaW50RGF0YTtcblx0aW5mbz86IEVuZHBvaW50SW5mbztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFbmRwb2ludEluZm8ge1xuXHRhbGVydHM/OiB7W2tleTogc3RyaW5nXTogc3RyaW5nfTtcblx0Y2hlY2tzPzoge1trZXk6IHN0cmluZ106IHN0cmluZ307XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRW5kcG9pbnREYXRhIHtcblx0dmVyc2lvbj86IHN0cmluZztcblx0aG9zdG5hbWU/OiBzdHJpbmc7XG5cdHVwdGltZT86IG51bWJlcjtcblx0cGxhdGZvcm0/OiBzdHJpbmc7XG5cdHBhY2thZ2VfdXBkYXRlcz86IG51bWJlcjtcblx0dmlydHVhbGl6YXRpb24/OiBzdHJpbmc7XG5cdGNwdV9jb3Jlcz86IG51bWJlcjtcblx0bWVtX3RvdGFsPzogbnVtYmVyO1xuXHRzd2FwX3RvdGFsPzogbnVtYmVyO1xuXHRodWdlX3RvdGFsPzogbnVtYmVyO1xuXHRtZF9zdGF0PzogTWRTdGF0ZVtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1kU3RhdGUge1xuXHRuYW1lPzogc3RyaW5nO1xuXHRzdGF0ZT86IHN0cmluZztcblx0bGV2ZWw/OiBzdHJpbmc7XG5cdGZhaWxlZD86IG51bWJlcjtcblx0c3BhcmU/OiBudW1iZXI7XG5cdHRvdGFsPzogbnVtYmVyO1xufVxuXG5leHBvcnQgdHlwZSBMb2dEYXRhID0gc3RyaW5nW107XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2xpZW50S2V5IHtcblx0c2VjcmV0Pzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZpbHRlciB7XG5cdGlkPzogc3RyaW5nO1xuXHRuYW1lPzogc3RyaW5nO1xuXHRyb2xlPzogc3RyaW5nO1xufVxuXG5leHBvcnQgdHlwZSBFbmRwb2ludHMgPSBFbmRwb2ludFtdO1xuXG5leHBvcnQgdHlwZSBFbmRwb2ludFJvID0gUmVhZG9ubHk8RW5kcG9pbnQ+O1xuZXhwb3J0IHR5cGUgRW5kcG9pbnRzUm8gPSBSZWFkb25seUFycmF5PEVuZHBvaW50Um8+O1xuXG5leHBvcnQgaW50ZXJmYWNlIEVuZHBvaW50RGlzcGF0Y2gge1xuXHR0eXBlOiBzdHJpbmc7XG5cdGRhdGE/OiB7XG5cdFx0aWQ/OiBzdHJpbmc7XG5cdFx0ZW5kcG9pbnQ/OiBFbmRwb2ludDtcblx0XHRlbmRwb2ludHM/OiBFbmRwb2ludHM7XG5cdFx0cGFnZT86IG51bWJlcjtcblx0XHRwYWdlQ291bnQ/OiBudW1iZXI7XG5cdFx0ZmlsdGVyPzogRmlsdGVyO1xuXHRcdGNvdW50PzogbnVtYmVyO1xuXHR9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFN5c3RlbUNoYXJ0IHtcblx0Y3B1X3VzYWdlPzogQ2hhcnRUeXBlcy5Qb2ludHM7XG5cdG1lbV91c2FnZT86IENoYXJ0VHlwZXMuUG9pbnRzO1xuXHRzd2FwX3VzYWdlPzogQ2hhcnRUeXBlcy5Qb2ludHM7XG5cdGh1Z2VfdXNhZ2U/OiBDaGFydFR5cGVzLlBvaW50cztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMb2FkQ2hhcnQge1xuXHRsb2FkMT86IENoYXJ0VHlwZXMuUG9pbnRzO1xuXHRsb2FkNT86IENoYXJ0VHlwZXMuUG9pbnRzO1xuXHRsb2FkMTU/OiBDaGFydFR5cGVzLlBvaW50cztcbn1cblxuZXhwb3J0IHR5cGUgRGlza0NoYXJ0ID0ge1trZXk6IHN0cmluZ106IENoYXJ0VHlwZXMuUG9pbnRzfTtcblxuZXhwb3J0IHR5cGUgRGlza0lvQ2hhcnQgPSB7W2tleTogc3RyaW5nXTogQ2hhcnRUeXBlcy5Qb2ludHN9O1xuXG5leHBvcnQgdHlwZSBOZXR3b3JrQ2hhcnQgPSB7W2tleTogc3RyaW5nXTogQ2hhcnRUeXBlcy5Qb2ludHN9O1xuXG5leHBvcnQgdHlwZSBDaGVja0NoYXJ0ID0ge1trZXk6IHN0cmluZ106IENoYXJ0VHlwZXMuUG9pbnRzfTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./app/types/EndpointTypes.js\n");
/***/ }),
diff --git a/www/dist/index.html b/www/dist/index.html
index ce23d836..5ea52242 100644
--- a/www/dist/index.html
+++ b/www/dist/index.html
@@ -20,6 +20,6 @@
-
+