@openziti/ziti-console-lib 0.6.3 → 0.6.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/styles/global.scss +91 -5
- package/assets/styles/ziti.css +2 -2
- package/esm2022/lib/features/config-editor/config-editor.component.mjs +76 -15
- package/esm2022/lib/features/dynamic-widgets/checkbox-list/checkbox-list-input.component.mjs +7 -3
- package/esm2022/lib/features/dynamic-widgets/forwarding-config/forwarding-config.component.mjs +22 -1
- package/esm2022/lib/features/dynamic-widgets/number/number-input.component.mjs +10 -9
- package/esm2022/lib/features/dynamic-widgets/object/object.component.mjs +2 -2
- package/esm2022/lib/features/dynamic-widgets/port-ranges/port-ranges.component.mjs +4 -1
- package/esm2022/lib/features/dynamic-widgets/protocol-address-port/protocol-address-port-input.component.mjs +27 -5
- package/esm2022/lib/features/dynamic-widgets/selector/selector-input.component.mjs +21 -13
- package/esm2022/lib/features/dynamic-widgets/string/string-input.component.mjs +9 -5
- package/esm2022/lib/features/dynamic-widgets/text-list/text-list-input.component.mjs +9 -5
- package/esm2022/lib/features/json-view/json-view.component.mjs +3 -3
- package/esm2022/lib/features/messaging/growler.component.mjs +4 -4
- package/esm2022/lib/features/projectable-forms/configuration/configuration-form.component.mjs +33 -4
- package/esm2022/lib/features/projectable-forms/service/service-form.service.mjs +2 -4
- package/esm2022/lib/features/qr-code/qr-code.component.mjs +4 -1
- package/esm2022/lib/pages/auth-policies/auth-policies-page.component.mjs +7 -1
- package/esm2022/lib/pages/auth-policies/auth-policies-page.service.mjs +10 -3
- package/esm2022/lib/pages/configurations/configurations-page.component.mjs +7 -1
- package/esm2022/lib/pages/edge-router-policies/edge-router-policies-page.component.mjs +2 -2
- package/esm2022/lib/pages/edge-router-policies/edge-router-policies-page.service.mjs +2 -17
- package/esm2022/lib/pages/edge-routers/edge-routers-page.component.mjs +2 -2
- package/esm2022/lib/pages/edge-routers/edge-routers-page.service.mjs +22 -32
- package/esm2022/lib/pages/identities/identities-page.component.mjs +2 -2
- package/esm2022/lib/pages/identities/identities-page.service.mjs +19 -30
- package/esm2022/lib/pages/service-edge-router-policies/service-edge-router-policies-page.component.mjs +2 -2
- package/esm2022/lib/pages/service-edge-router-policies/service-edge-router-policies-page.service.mjs +3 -18
- package/esm2022/lib/pages/service-policies/service-policies-page.component.mjs +2 -3
- package/esm2022/lib/pages/service-policies/service-policies-page.service.mjs +2 -17
- package/esm2022/lib/pages/services/services-page.component.mjs +2 -2
- package/esm2022/lib/pages/services/services-page.service.mjs +9 -17
- package/esm2022/lib/shared/list-page-component.class.mjs +17 -2
- package/esm2022/lib/shared/list-page-service.class.mjs +22 -4
- package/esm2022/lib/version.mjs +2 -2
- package/fesm2022/openziti-ziti-console-lib.mjs +319 -188
- package/fesm2022/openziti-ziti-console-lib.mjs.map +1 -1
- package/lib/features/config-editor/config-editor.component.d.ts +7 -3
- package/lib/features/config-editor/config-editor.component.d.ts.map +1 -1
- package/lib/features/dynamic-widgets/checkbox-list/checkbox-list-input.component.d.ts +2 -0
- package/lib/features/dynamic-widgets/checkbox-list/checkbox-list-input.component.d.ts.map +1 -1
- package/lib/features/dynamic-widgets/forwarding-config/forwarding-config.component.d.ts +5 -0
- package/lib/features/dynamic-widgets/forwarding-config/forwarding-config.component.d.ts.map +1 -1
- package/lib/features/dynamic-widgets/number/number-input.component.d.ts +2 -0
- package/lib/features/dynamic-widgets/number/number-input.component.d.ts.map +1 -1
- package/lib/features/dynamic-widgets/port-ranges/port-ranges.component.d.ts +1 -0
- package/lib/features/dynamic-widgets/port-ranges/port-ranges.component.d.ts.map +1 -1
- package/lib/features/dynamic-widgets/protocol-address-port/protocol-address-port-input.component.d.ts +8 -6
- package/lib/features/dynamic-widgets/protocol-address-port/protocol-address-port-input.component.d.ts.map +1 -1
- package/lib/features/dynamic-widgets/selector/selector-input.component.d.ts +2 -0
- package/lib/features/dynamic-widgets/selector/selector-input.component.d.ts.map +1 -1
- package/lib/features/dynamic-widgets/string/string-input.component.d.ts +2 -0
- package/lib/features/dynamic-widgets/string/string-input.component.d.ts.map +1 -1
- package/lib/features/dynamic-widgets/text-list/text-list-input.component.d.ts +2 -0
- package/lib/features/dynamic-widgets/text-list/text-list-input.component.d.ts.map +1 -1
- package/lib/features/json-view/json-view.component.d.ts +2 -2
- package/lib/features/json-view/json-view.component.d.ts.map +1 -1
- package/lib/features/projectable-forms/configuration/configuration-form.component.d.ts +3 -0
- package/lib/features/projectable-forms/configuration/configuration-form.component.d.ts.map +1 -1
- package/lib/features/projectable-forms/service/service-form.service.d.ts.map +1 -1
- package/lib/features/qr-code/qr-code.component.d.ts.map +1 -1
- package/lib/pages/auth-policies/auth-policies-page.component.d.ts.map +1 -1
- package/lib/pages/auth-policies/auth-policies-page.service.d.ts.map +1 -1
- package/lib/pages/configurations/configurations-page.component.d.ts.map +1 -1
- package/lib/pages/edge-router-policies/edge-router-policies-page.service.d.ts +0 -2
- package/lib/pages/edge-router-policies/edge-router-policies-page.service.d.ts.map +1 -1
- package/lib/pages/edge-routers/edge-routers-page.service.d.ts +5 -3
- package/lib/pages/edge-routers/edge-routers-page.service.d.ts.map +1 -1
- package/lib/pages/identities/identities-page.service.d.ts +4 -2
- package/lib/pages/identities/identities-page.service.d.ts.map +1 -1
- package/lib/pages/service-edge-router-policies/service-edge-router-policies-page.service.d.ts +0 -2
- package/lib/pages/service-edge-router-policies/service-edge-router-policies-page.service.d.ts.map +1 -1
- package/lib/pages/service-policies/service-policies-page.component.d.ts.map +1 -1
- package/lib/pages/service-policies/service-policies-page.service.d.ts +0 -2
- package/lib/pages/service-policies/service-policies-page.service.d.ts.map +1 -1
- package/lib/pages/services/services-page.service.d.ts +4 -2
- package/lib/pages/services/services-page.service.d.ts.map +1 -1
- package/lib/shared/list-page-component.class.d.ts +2 -0
- package/lib/shared/list-page-component.class.d.ts.map +1 -1
- package/lib/shared/list-page-service.class.d.ts +6 -0
- package/lib/shared/list-page-service.class.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -11,7 +11,8 @@ body {
|
|
|
11
11
|
--formBackground: #f6f7fb;
|
|
12
12
|
--visualizerBackground: #ffffff80;
|
|
13
13
|
--background: #ffffff;
|
|
14
|
-
--
|
|
14
|
+
--navigation: #ffffff;
|
|
15
|
+
--placeholder: #c6ccd7;
|
|
15
16
|
--text: #000;
|
|
16
17
|
--tableText: #000;
|
|
17
18
|
--table: #ffffff;
|
|
@@ -25,7 +26,7 @@ body {
|
|
|
25
26
|
--dark: #28292B;
|
|
26
27
|
--formBase: #919ca5;
|
|
27
28
|
--formGroup: #232f3e;
|
|
28
|
-
--formSubGroup: #
|
|
29
|
+
--formSubGroup: #707985;
|
|
29
30
|
--buttonHeightSmall: 25px;
|
|
30
31
|
--buttonImageSizeSmall: 20px;
|
|
31
32
|
--buttonImagePaddingSmall: 35px;
|
|
@@ -305,9 +306,29 @@ input {
|
|
|
305
306
|
padding-top: var(--paddingSmall);
|
|
306
307
|
background-color: var(--formSubGroup);
|
|
307
308
|
border-radius: var(--inputBorderRadius);
|
|
309
|
+
display: flex;
|
|
310
|
+
flex-direction: column;
|
|
311
|
+
|
|
308
312
|
&[hidden] {
|
|
309
313
|
display: none !important;
|
|
310
314
|
}
|
|
315
|
+
|
|
316
|
+
input{
|
|
317
|
+
&::placeholder {
|
|
318
|
+
color: var(--formBase);
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
|
|
322
|
+
.toggle {
|
|
323
|
+
background-color: var(--formGroup);
|
|
324
|
+
border-style: solid;
|
|
325
|
+
border-width: 1px;
|
|
326
|
+
border-color: var(--formSubGroup);
|
|
327
|
+
|
|
328
|
+
.switch {
|
|
329
|
+
top: 4px;
|
|
330
|
+
}
|
|
331
|
+
}
|
|
311
332
|
}
|
|
312
333
|
|
|
313
334
|
.form-field-header {
|
|
@@ -887,6 +908,11 @@ lib-form-field-container {
|
|
|
887
908
|
.p-chips.p-component {
|
|
888
909
|
&.p-input-wrapper {
|
|
889
910
|
border-color: var(--red);
|
|
911
|
+
background-color: var(--lightRed) !important;
|
|
912
|
+
|
|
913
|
+
input {
|
|
914
|
+
background-color: var(--lightRed) !important;
|
|
915
|
+
}
|
|
890
916
|
}
|
|
891
917
|
}
|
|
892
918
|
}
|
|
@@ -1032,11 +1058,64 @@ lib-tag-selector {
|
|
|
1032
1058
|
}
|
|
1033
1059
|
.invalid {
|
|
1034
1060
|
input {
|
|
1035
|
-
border-color: var(--red);
|
|
1061
|
+
border-color: var(--red) !important;
|
|
1062
|
+
background-color: var(--lightRed) !important;
|
|
1063
|
+
}
|
|
1064
|
+
label {
|
|
1065
|
+
color: var(--lightRed);
|
|
1036
1066
|
}
|
|
1037
1067
|
.p-component {
|
|
1038
1068
|
&.p-input-wrapper {
|
|
1039
1069
|
border-color: var(--red);
|
|
1070
|
+
background-color: var(--lightRed) !important;
|
|
1071
|
+
input {
|
|
1072
|
+
background-color: var(--lightRed) !important;
|
|
1073
|
+
}
|
|
1074
|
+
}
|
|
1075
|
+
}
|
|
1076
|
+
}
|
|
1077
|
+
input,
|
|
1078
|
+
select {
|
|
1079
|
+
&:not(.checkbox) {
|
|
1080
|
+
height: 2.3rem !important;
|
|
1081
|
+
padding: 0 7px;
|
|
1082
|
+
border-width: 1px;
|
|
1083
|
+
border-radius: .3rem;
|
|
1084
|
+
}
|
|
1085
|
+
}
|
|
1086
|
+
|
|
1087
|
+
.p-element {
|
|
1088
|
+
.p-chips {
|
|
1089
|
+
&.p-component,
|
|
1090
|
+
&.p-input-wrapper,
|
|
1091
|
+
.p-chips-multiple-container {
|
|
1092
|
+
padding-left: 5px;
|
|
1093
|
+
overflow-y: auto;
|
|
1094
|
+
max-height: 4.6rem;
|
|
1095
|
+
height: fit-content;
|
|
1096
|
+
gap: .3rem;
|
|
1097
|
+
border-width: 1px;
|
|
1098
|
+
border-radius: .3rem;
|
|
1099
|
+
|
|
1100
|
+
.p-chips-input-token {
|
|
1101
|
+
padding: 0;
|
|
1102
|
+
|
|
1103
|
+
input {
|
|
1104
|
+
height: 34px !important;
|
|
1105
|
+
font-family: 'Open Sans', Arial, sans-serif;
|
|
1106
|
+
border-width: 1px;
|
|
1107
|
+
border-radius: .3rem;
|
|
1108
|
+
}
|
|
1109
|
+
}
|
|
1110
|
+
|
|
1111
|
+
.p-chips-token-label {
|
|
1112
|
+
height: 20px;
|
|
1113
|
+
line-height: 20px;
|
|
1114
|
+
}
|
|
1115
|
+
|
|
1116
|
+
.p-chips-token {
|
|
1117
|
+
margin: 0;
|
|
1118
|
+
}
|
|
1040
1119
|
}
|
|
1041
1120
|
}
|
|
1042
1121
|
}
|
|
@@ -1165,6 +1244,12 @@ p-dropdown {
|
|
|
1165
1244
|
}
|
|
1166
1245
|
|
|
1167
1246
|
.p-element {
|
|
1247
|
+
&.p-inputwrapper-focus {
|
|
1248
|
+
.p-chips.p-component {
|
|
1249
|
+
border-color: var(--primaryColor) !important;
|
|
1250
|
+
box-shadow: none !important;
|
|
1251
|
+
}
|
|
1252
|
+
}
|
|
1168
1253
|
|
|
1169
1254
|
.p-chips.p-component {
|
|
1170
1255
|
width: 100%;
|
|
@@ -1180,7 +1265,7 @@ p-dropdown {
|
|
|
1180
1265
|
outline: none;
|
|
1181
1266
|
box-sizing: border-box;
|
|
1182
1267
|
font-size: 15px;
|
|
1183
|
-
background-color: var(--
|
|
1268
|
+
background-color: var(--navigation) !important;
|
|
1184
1269
|
color: var(--text);
|
|
1185
1270
|
-webkit-appearance: none;
|
|
1186
1271
|
|
|
@@ -1188,10 +1273,11 @@ p-dropdown {
|
|
|
1188
1273
|
width: 100%;
|
|
1189
1274
|
padding: 0;
|
|
1190
1275
|
border-width: var(--inputBorderWidth);
|
|
1276
|
+
height: fit-content;
|
|
1191
1277
|
|
|
1192
1278
|
&.p-focus {
|
|
1193
1279
|
border-color: var(--primaryColor) !important;
|
|
1194
|
-
box-shadow:
|
|
1280
|
+
box-shadow: none !important;
|
|
1195
1281
|
|
|
1196
1282
|
&.error {
|
|
1197
1283
|
border-color: var(--red) !important;
|
package/assets/styles/ziti.css
CHANGED
|
@@ -13,7 +13,7 @@ body {
|
|
|
13
13
|
--formBackground: #f6f7fb;
|
|
14
14
|
--visualizerBackground: #ffffff80;
|
|
15
15
|
--background: #ffffff;
|
|
16
|
-
--placeholder: #
|
|
16
|
+
--placeholder: #c6ccd7;
|
|
17
17
|
--text: #000;
|
|
18
18
|
--tableText: #000;
|
|
19
19
|
--table: #ffffff;
|
|
@@ -25,7 +25,7 @@ body {
|
|
|
25
25
|
--dark: #28292B;
|
|
26
26
|
--formBase: #919ca5;
|
|
27
27
|
--formGroup: #232f3e;
|
|
28
|
-
--formSubGroup: #
|
|
28
|
+
--formSubGroup: #707985;
|
|
29
29
|
--modalBorderRadius: 15px;
|
|
30
30
|
--paddingSmall: 5px;
|
|
31
31
|
--paddingMedium: 10px;
|
|
@@ -1,10 +1,14 @@
|
|
|
1
1
|
import { Component, EventEmitter, Input, Output, ViewChild, ViewContainerRef } from '@angular/core';
|
|
2
2
|
import { JsonEditorComponent } from "ang-jsoneditor";
|
|
3
3
|
import { debounce, defer, delay, isBoolean, isEmpty, isNil, keys } from "lodash";
|
|
4
|
+
import Ajv from 'ajv';
|
|
5
|
+
import addFormats from 'ajv-formats';
|
|
6
|
+
import { GrowlerModel } from "../messaging/growler.model";
|
|
4
7
|
import * as i0 from "@angular/core";
|
|
5
8
|
import * as i1 from "../../services/schema.service";
|
|
6
|
-
import * as i2 from "
|
|
7
|
-
import * as i3 from "
|
|
9
|
+
import * as i2 from "../messaging/growler.service";
|
|
10
|
+
import * as i3 from "@angular/common";
|
|
11
|
+
import * as i4 from "../json-view/json-view.component";
|
|
8
12
|
class ConfigEditorComponent {
|
|
9
13
|
set configData(data) {
|
|
10
14
|
this._configData = data;
|
|
@@ -28,8 +32,9 @@ class ConfigEditorComponent {
|
|
|
28
32
|
get schema() {
|
|
29
33
|
return this._schema;
|
|
30
34
|
}
|
|
31
|
-
constructor(schemaSvc) {
|
|
35
|
+
constructor(schemaSvc, growlerService) {
|
|
32
36
|
this.schemaSvc = schemaSvc;
|
|
37
|
+
this.growlerService = growlerService;
|
|
33
38
|
this.items = [];
|
|
34
39
|
this.lColorArray = [
|
|
35
40
|
'white',
|
|
@@ -188,31 +193,87 @@ class ConfigEditorComponent {
|
|
|
188
193
|
});
|
|
189
194
|
return data;
|
|
190
195
|
}
|
|
191
|
-
validateConfig() {
|
|
196
|
+
validateConfig(schema, showGrowler = true) {
|
|
197
|
+
let validationErrors;
|
|
198
|
+
let valid = true;
|
|
199
|
+
if (schema) {
|
|
200
|
+
// Initialize Ajv
|
|
201
|
+
const ajv = new Ajv({ allErrors: true });
|
|
202
|
+
addFormats(ajv);
|
|
203
|
+
ajv.addFormat('idn-hostname', /^.+$/);
|
|
204
|
+
const validate = ajv.compile(schema);
|
|
205
|
+
valid = validate(this.configData);
|
|
206
|
+
validationErrors = validate.errors;
|
|
207
|
+
}
|
|
192
208
|
this.configErrors = {};
|
|
193
|
-
const
|
|
194
|
-
|
|
209
|
+
const propertyValidationMap = {};
|
|
210
|
+
this.validateConfigItems(this.items, undefined, '', validationErrors);
|
|
211
|
+
this.buildPropertyValidationMap(validationErrors, propertyValidationMap);
|
|
212
|
+
if (!valid) {
|
|
195
213
|
this.configErrors['configData'] = true;
|
|
214
|
+
if (showGrowler) {
|
|
215
|
+
this.displayConfigErrors(propertyValidationMap);
|
|
216
|
+
}
|
|
196
217
|
}
|
|
197
218
|
this.configErrorsChange.emit(this.configErrors);
|
|
198
219
|
return isEmpty(this.configErrors);
|
|
199
220
|
}
|
|
200
|
-
|
|
221
|
+
buildPropertyValidationMap(validationErrors, propertyValidationMap) {
|
|
222
|
+
validationErrors?.forEach((error) => {
|
|
223
|
+
let path = error.instancePath;
|
|
224
|
+
if (!isEmpty(error?.params?.missingProperty)) {
|
|
225
|
+
path += '/' + error?.params?.missingProperty;
|
|
226
|
+
}
|
|
227
|
+
if (!isEmpty(path)) {
|
|
228
|
+
propertyValidationMap[path] = `<b>${path}</b>: ${error.message}`;
|
|
229
|
+
}
|
|
230
|
+
});
|
|
231
|
+
}
|
|
232
|
+
validateConfigItems(items, parentType = 'object', path = '', validationErrors = []) {
|
|
201
233
|
let isValid = true;
|
|
202
234
|
items.forEach((item) => {
|
|
203
235
|
if (item.type === 'object') {
|
|
204
|
-
|
|
236
|
+
console.log(validationErrors);
|
|
237
|
+
if (!this.validateConfigItems(item.items, item.type, path + '/' + item.key, validationErrors)) {
|
|
205
238
|
isValid = false;
|
|
206
239
|
}
|
|
207
240
|
}
|
|
208
|
-
else if (item?.component?.instance?.
|
|
209
|
-
|
|
210
|
-
|
|
241
|
+
else if (item?.component?.instance?.setValidationErrors) {
|
|
242
|
+
item?.component?.instance?.setValidationErrors(path, validationErrors);
|
|
243
|
+
}
|
|
244
|
+
else {
|
|
245
|
+
const hasValidationError = validationErrors?.some((error) => {
|
|
246
|
+
let pathToMach = error.instancePath;
|
|
247
|
+
if (!isEmpty(error?.params?.missingProperty)) {
|
|
248
|
+
pathToMach += '/' + error?.params?.missingProperty;
|
|
249
|
+
}
|
|
250
|
+
const matched = pathToMach === (path + '/' + item.key);
|
|
251
|
+
return matched;
|
|
252
|
+
});
|
|
253
|
+
if (item?.component?.instance?.setIsValid) {
|
|
254
|
+
item?.component?.instance?.setIsValid(!hasValidationError);
|
|
211
255
|
}
|
|
212
256
|
}
|
|
213
257
|
});
|
|
214
258
|
return isValid;
|
|
215
259
|
}
|
|
260
|
+
displayConfigErrors(propertyValidationMap) {
|
|
261
|
+
let validationMessage = '';
|
|
262
|
+
if (!isEmpty(propertyValidationMap)) {
|
|
263
|
+
const props = keys(propertyValidationMap);
|
|
264
|
+
props.forEach((key, index) => {
|
|
265
|
+
validationMessage += `<li>${propertyValidationMap[key]}</li>`;
|
|
266
|
+
});
|
|
267
|
+
}
|
|
268
|
+
if (isEmpty(validationMessage)) {
|
|
269
|
+
validationMessage = 'The entered configuration is invalid. Please update missing/invalid fields and try again.';
|
|
270
|
+
}
|
|
271
|
+
else {
|
|
272
|
+
validationMessage = `<ul style="margin-top: 5px;">${validationMessage}</ul>`;
|
|
273
|
+
}
|
|
274
|
+
const growlerData = new GrowlerModel('error', 'Error', `Error Validating Config`, validationMessage);
|
|
275
|
+
this.growlerService.show(growlerData);
|
|
276
|
+
}
|
|
216
277
|
formDataChanged() {
|
|
217
278
|
delay(() => {
|
|
218
279
|
this.getConfigDataFromForm();
|
|
@@ -224,14 +285,14 @@ class ConfigEditorComponent {
|
|
|
224
285
|
this.updateFormView(this.items, this.configData);
|
|
225
286
|
});
|
|
226
287
|
}
|
|
227
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ConfigEditorComponent, deps: [{ token: i1.SchemaService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
228
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ConfigEditorComponent, selector: "lib-config-editor", inputs: { configErrors: "configErrors", configData: "configData", showJsonView: "showJsonView", schema: "schema" }, outputs: { configErrorsChange: "configErrorsChange", configDataChange: "configDataChange" }, viewQueries: [{ propertyName: "dynamicForm", first: true, predicate: ["dynamicform"], descendants: true, read: ViewContainerRef }, { propertyName: "editor", first: true, predicate: JsonEditorComponent, descendants: true }], ngImport: i0, template: "<div class=\"form-field-extended-fields\" [hidden]=\"showJsonView\" (mouseup)=\"formDataChangedDebounced($event)\" (keyup)=\"formDataChangedDebounced($event)\">\n <ng-container #dynamicform></ng-container>\n</div>\n<lib-json-view *ngIf=\"showJsonView && !hideConfigJSON\" (dataChange)=\"jsonDataChangedDebounced($event)\" [(data)]=\"configData\"></lib-json-view>\n<lib-json-view *ngIf=\"showJsonView && hideConfigJSON\" [(data)]=\"configData\"></lib-json-view>", styles: [""], dependencies: [{ kind: "directive", type:
|
|
288
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ConfigEditorComponent, deps: [{ token: i1.SchemaService }, { token: i2.GrowlerService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
289
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ConfigEditorComponent, selector: "lib-config-editor", inputs: { configErrors: "configErrors", configData: "configData", showJsonView: "showJsonView", schema: "schema" }, outputs: { configErrorsChange: "configErrorsChange", configDataChange: "configDataChange" }, viewQueries: [{ propertyName: "dynamicForm", first: true, predicate: ["dynamicform"], descendants: true, read: ViewContainerRef }, { propertyName: "editor", first: true, predicate: JsonEditorComponent, descendants: true }], ngImport: i0, template: "<div class=\"form-field-extended-fields\" [hidden]=\"showJsonView\" (mouseup)=\"formDataChangedDebounced($event)\" (keyup)=\"formDataChangedDebounced($event)\">\n <ng-container #dynamicform></ng-container>\n</div>\n<lib-json-view *ngIf=\"showJsonView && !hideConfigJSON\" (dataChange)=\"jsonDataChangedDebounced($event)\" [(data)]=\"configData\"></lib-json-view>\n<lib-json-view *ngIf=\"showJsonView && hideConfigJSON\" [(data)]=\"configData\"></lib-json-view>", styles: [""], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.JsonViewComponent, selector: "lib-json-view", inputs: ["data", "schema", "readOnly", "jsonInvalid", "showCopy"], outputs: ["dataChange", "jsonChange", "jsonInvalidChange"] }] }); }
|
|
229
290
|
}
|
|
230
291
|
export { ConfigEditorComponent };
|
|
231
292
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ConfigEditorComponent, decorators: [{
|
|
232
293
|
type: Component,
|
|
233
294
|
args: [{ selector: 'lib-config-editor', template: "<div class=\"form-field-extended-fields\" [hidden]=\"showJsonView\" (mouseup)=\"formDataChangedDebounced($event)\" (keyup)=\"formDataChangedDebounced($event)\">\n <ng-container #dynamicform></ng-container>\n</div>\n<lib-json-view *ngIf=\"showJsonView && !hideConfigJSON\" (dataChange)=\"jsonDataChangedDebounced($event)\" [(data)]=\"configData\"></lib-json-view>\n<lib-json-view *ngIf=\"showJsonView && hideConfigJSON\" [(data)]=\"configData\"></lib-json-view>" }]
|
|
234
|
-
}], ctorParameters: function () { return [{ type: i1.SchemaService }]; }, propDecorators: { configErrors: [{
|
|
295
|
+
}], ctorParameters: function () { return [{ type: i1.SchemaService }, { type: i2.GrowlerService }]; }, propDecorators: { configErrors: [{
|
|
235
296
|
type: Input
|
|
236
297
|
}], configErrorsChange: [{
|
|
237
298
|
type: Output
|
|
@@ -250,4 +311,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
250
311
|
type: ViewChild,
|
|
251
312
|
args: [JsonEditorComponent, { static: false }]
|
|
252
313
|
}] } });
|
|
253
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLWVkaXRvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy96aXRpLWNvbnNvbGUtbGliL3NyYy9saWIvZmVhdHVyZXMvY29uZmlnLWVkaXRvci9jb25maWctZWRpdG9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ppdGktY29uc29sZS1saWIvc3JjL2xpYi9mZWF0dXJlcy9jb25maWctZWRpdG9yL2NvbmZpZy1lZGl0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBZ0IsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3hILE9BQU8sRUFBQyxtQkFBbUIsRUFBb0IsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RSxPQUFPLEVBQUMsUUFBUSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFDLE1BQU0sUUFBUSxDQUFDOzs7OztBQUcvRSxNQUthLHFCQUFxQjtJQW1CaEMsSUFBYSxVQUFVLENBQUMsSUFBSTtRQUMxQixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztJQUMxQixDQUFDO0lBQUEsQ0FBQztJQUVGLElBQUksVUFBVTtRQUNaLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUMxQixDQUFDO0lBR0QsSUFBYSxZQUFZLENBQUMsWUFBcUI7UUFDN0MsSUFBSSxDQUFDLGFBQWEsR0FBRyxZQUFZLENBQUM7UUFDbEMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUNELElBQUksWUFBWTtRQUNkLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUM1QixDQUFDO0lBR0QsSUFBYSxNQUFNLENBQUMsTUFBVztR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QUNMLENBQUM7K0dBcE9VLHFCQUFxQjttR0FBckIscUJBQXFCLGlXQWlEQyxnQkFBZ0Isc0RBQ3RDLG1CQUFtQixnREM1RGhDLGlkQUk0Rjs7U0RNL0UscUJBQXFCOzRGQUFyQixxQkFBcUI7a0JBTGpDLFNBQVM7K0JBQ0UsbUJBQW1CO29HQW1CcEIsWUFBWTtzQkFBcEIsS0FBSztnQkFDSSxrQkFBa0I7c0JBQTNCLE1BQU07Z0JBR00sVUFBVTtzQkFBdEIsS0FBSztnQkFHSSxnQkFBZ0I7c0JBQXpCLE1BQU07Z0JBTU0sWUFBWTtzQkFBeEIsS0FBSztnQkFTTyxNQUFNO3NCQUFsQixLQUFLO2dCQVk4QyxXQUFXO3NCQUE5RCxTQUFTO3VCQUFDLGFBQWEsRUFBRSxFQUFDLElBQUksRUFBRSxnQkFBZ0IsRUFBQztnQkFDRCxNQUFNO3NCQUF0RCxTQUFTO3VCQUFDLG1CQUFtQixFQUFFLEVBQUMsTUFBTSxFQUFFLEtBQUssRUFBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBDb21wb25lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBWaWV3Q2hpbGQsIFZpZXdDb250YWluZXJSZWZ9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtKc29uRWRpdG9yQ29tcG9uZW50LCBKc29uRWRpdG9yT3B0aW9uc30gZnJvbSBcImFuZy1qc29uZWRpdG9yXCI7XG5pbXBvcnQge2RlYm91bmNlLCBkZWZlciwgZGVsYXksIGlzQm9vbGVhbiwgaXNFbXB0eSwgaXNOaWwsIGtleXN9IGZyb20gXCJsb2Rhc2hcIjtcbmltcG9ydCB7U2NoZW1hU2VydmljZX0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL3NjaGVtYS5zZXJ2aWNlXCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi1jb25maWctZWRpdG9yJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NvbmZpZy1lZGl0b3IuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jb25maWctZWRpdG9yLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgQ29uZmlnRWRpdG9yQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICBpdGVtczogYW55W10gPSBbXTtcblxuICBsQ29sb3JBcnJheSA9IFtcbiAgICAnd2hpdGUnLFxuICAgICd3aGl0ZScsXG4gIF1cblxuICBiQ29sb3JBcnJheSA9IFtcbiAgICAndmFyKC0tZm9ybUdyb3VwKScsXG4gICAgJ3ZhcigtLWZvcm1TdWJHcm91cCknXG4gIF1cbiAgaGlkZUNvbmZpZ0pTT04gPSBmYWxzZTtcblxuICBASW5wdXQoKSBjb25maWdFcnJvcnM6IGFueSA9IHt9O1xuICBAT3V0cHV0KCkgY29uZmlnRXJyb3JzQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgX2NvbmZpZ0RhdGE6IGFueSA9IHt9O1xuICBASW5wdXQoKSBzZXQgY29uZmlnRGF0YShkYXRhKSB7XG4gICAgdGhpcy5fY29uZmlnRGF0YSA9IGRhdGE7XG4gIH07XG4gIEBPdXRwdXQoKSBjb25maWdEYXRhQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIGdldCBjb25maWdEYXRhKCkge1xuICAgIHJldHVybiB0aGlzLl9jb25maWdEYXRhO1xuICB9XG5cbiAgX3Nob3dKc29uVmlldyA9IGZhbHNlO1xuICBASW5wdXQoKSBzZXQgc2hvd0pzb25WaWV3KHNob3dKc29uVmlldzogYm9vbGVhbikge1xuICAgIHRoaXMuX3Nob3dKc29uVmlldyA9IHNob3dKc29uVmlldztcbiAgICB0aGlzLnVwZGF0ZUNvbmZpZ0RhdGEoKTtcbiAgfVxuICBnZXQgc2hvd0pzb25WaWV3KCkge1xuICAgIHJldHVybiB0aGlzLl9zaG93SnNvblZpZXc7XG4gIH1cblxuICBfc2NoZW1hID0gZmFsc2U7XG4gIEBJbnB1dCgpIHNldCBzY2hlbWEoc2NoZW1hOiBhbnkpIHtcbiAgICB0aGlzLl9zY2hlbWEgPSBzY2hlbWE7XG4gICAgdGhpcy5jcmVhdGVGb3JtKCk7XG4gICAgdGhpcy51cGRhdGVDb25maWdEYXRhKCk7XG4gIH1cblxuICBnZXQgc2NoZW1hKCkge1xuICAgIHJldHVybiB0aGlzLl9zY2hlbWE7XG4gIH1cblxuICBmb3JtRGF0YUNoYW5nZWREZWJvdW5jZWQ6IGFueSA9IGRlYm91bmNlKHRoaXMuZm9ybURhdGFDaGFuZ2VkLmJpbmQodGhpcyksIDM1MCk7XG4gIGpzb25EYXRhQ2hhbmdlZERlYm91bmNlZDogYW55ID0gZGVib3VuY2UodGhpcy5qc29uRGF0YUNoYW5nZWQuYmluZCh0aGlzKSwgMzUwKTtcbiAgQFZpZXdDaGlsZChcImR5bmFtaWNmb3JtXCIsIHtyZWFkOiBWaWV3Q29udGFpbmVyUmVmfSkgZHluYW1pY0Zvcm0hOiBWaWV3Q29udGFpbmVyUmVmO1xuICBAVmlld0NoaWxkKEpzb25FZGl0b3JDb21wb25lbnQsIHtzdGF0aWM6IGZhbHNlfSkgZWRpdG9yITogSnNvbkVkaXRvckNvbXBvbmVudDtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBzY2hlbWFTdmM6IFNjaGVtYVNlcnZpY2UpIHtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuY3JlYXRlRm9ybSgpO1xuICAgIGRlZmVyKCgpID0+IHtcbiAgICAgIHRoaXMuZm9ybURhdGFDaGFuZ2VkKCk7XG4gICAgfSk7XG4gIH1cblxuICBjcmVhdGVGb3JtKCkge1xuICAgIHRoaXMuY2xlYXJGb3JtKCk7XG4gICAgaWYgKHRoaXMuZHluYW1pY0Zvcm0gJiYgdGhpcy5zY2hlbWEpIHtcbiAgICAgIHRoaXMucmVuZGVyU2NoZW1hKHRoaXMuc2NoZW1hKTtcbiAgICB9XG4gIH1cblxuICBjbGVhckZvcm0oKSB7XG4gICAgdGhpcy5pdGVtcy5mb3JFYWNoKChpdGVtOiBhbnkpID0+IHtcbiAgICAgIGlmIChpdGVtPy5jb21wb25lbnQpIGl0ZW0uY29tcG9uZW50LmRlc3Ryb3koKTtcbiAgICB9KTtcbiAgICB0aGlzLmNvbmZpZ0Vycm9ycyA9IHt9O1xuICAgIHRoaXMuaXRlbXMgPSBbXTtcbiAgfVxuXG4gIHJlbmRlclNjaGVtYShzY2hlbWE6IGFueSkge1xuICAgIGlmIChzY2hlbWEucHJvcGVydGllcykge1xuICAgICAgdGhpcy5pdGVtcyA9IHRoaXMuc2NoZW1hU3ZjLnJlbmRlcihzY2hlbWEsIHRoaXMuZHluYW1pY0Zvcm0sIHRoaXMubENvbG9yQXJyYXksIHRoaXMuYkNvbG9yQXJyYXkpO1xuICAgICAgZm9yIChsZXQgb2JqIG9mIHRoaXMuaXRlbXMpIHtcbiAgICAgICAgY29uc3QgY1JlZiA9IG9iai5jb21wb25lbnQ7XG4gICAgICAgIGNSZWYuaW5zdGFuY2UuZXJyb3JzID0gdGhpcy5jb25maWdFcnJvcnM7XG4gICAgICAgIGlmIChjUmVmPy5pbnN0YW5jZS52YWx1ZUNoYW5nZSkge1xuICAgICAgICAgIGNvbnN0IHBOYW1lOiBzdHJpbmdbXSAgPSBjUmVmLmluc3RhbmNlLnBhcmVudGFnZTtcbiAgICAgICAgICBsZXQgcGFyZW50S2V5O1xuICAgICAgICAgIGlmKHBOYW1lKSBwYXJlbnRLZXkgPSBwTmFtZS5qb2luKCcuJyk7XG4gICAgICAgICAgLy9pZiAocGFyZW50S2V5ICYmICF0aGlzLmZvcm1EYXRhW3BhcmVudEtleV0pIHRoaXMuZm9ybURhdGFbcGFyZW50S2V5XSA9IHt9O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgdXBkYXRlQ29uZmlnRGF0YSgpIHtcbiAgICBpZiAoIXRoaXMuc2hvd0pzb25WaWV3KSB7XG4gICAgICB0aGlzLnVwZGF0ZUZvcm1WaWV3KHRoaXMuaXRlbXMsIHRoaXMuY29uZmlnRGF0YSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaGlkZUNvbmZpZ0pTT04gPSB0cnVlO1xuICAgICAgZGVmZXIoKCkgPT4ge1xuICAgICAgICB0aGlzLmdldENvbmZpZ0RhdGFGcm9tRm9ybSgpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgdXBkYXRlRm9ybVZpZXcoaXRlbXMsIGRhdGE6IGFueSA9IHt9KSB7XG4gICAgaXRlbXMuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgaWYgKGl0ZW0uaXRlbXMpIHtcbiAgICAgICAgaWYgKGl0ZW0udHlwZSA9PT0gJ2FycmF5Jykge1xuICAgICAgICAgIGlmIChpdGVtPy5jb21wb25lbnQ/Lmluc3RhbmNlPy5hZGRlZEl0ZW1zKSB7XG4gICAgICAgICAgICBpdGVtLmFkZGVkSXRlbXMgPSBkYXRhW2l0ZW0ua2V5XSB8fCBbXTtcbiAgICAgICAgICAgIGl0ZW0uY29tcG9uZW50Lmluc3RhbmNlLmFkZGVkSXRlbXMgPSBkYXRhW2l0ZW0ua2V5XSB8fCBbXTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy51cGRhdGVGb3JtVmlldyhpdGVtLml0ZW1zLCB7fSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy51cGRhdGVGb3JtVmlldyhpdGVtLml0ZW1zLCBkYXRhW2l0ZW0ua2V5XSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoaXRlbT8uY29tcG9uZW50Py5pbnN0YW5jZT8uc2V0UHJvcGVydGllcykge1xuICAgICAgICBsZXQgdmFsO1xuICAgICAgICBzd2l0Y2ggKGl0ZW0ua2V5KSB7XG4gICAgICAgICAgY2FzZSAnZm9yd2FyZGluZ2NvbmZpZyc6XG4gICAgICAgICAgICB2YWwgPSB7XG4gICAgICAgICAgICAgIHByb3RvY29sOiBkYXRhLnByb3RvY29sLFxuICAgICAgICAgICAgICBhZGRyZXNzOiBkYXRhLmFkZHJlc3MsXG4gICAgICAgICAgICAgIHBvcnQ6IGRhdGEucG9ydCxcbiAgICAgICAgICAgICAgZm9yd2FyZFByb3RvY29sOiBkYXRhLmZvcndhcmRQcm90b2NvbCxcbiAgICAgICAgICAgICAgZm9yd2FyZEFkZHJlc3M6IGRhdGEuZm9yd2FyZEFkZHJlc3MsXG4gICAgICAgICAgICAgIGZvcndhcmRQb3J0OiBkYXRhLmZvcndhcmRQb3J0LFxuICAgICAgICAgICAgICBhbGxvd2VkUHJvdG9jb2xzOiBkYXRhLmFsbG93ZWRQcm90b2NvbHMsXG4gICAgICAgICAgICAgIGFsbG93ZWRBZGRyZXNzZXM6IGRhdGEuYWxsb3dlZEFkZHJlc3NlcyxcbiAgICAgICAgICAgICAgYWxsb3dlZFBvcnRSYW5nZXM6IGRhdGEuYWxsb3dlZFBvcnRSYW5nZXNcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ3BhcCc6XG4gICAgICAgICAgICB2YWwgPSB7XG4gICAgICAgICAgICAgIHByb3RvY29sOiBkYXRhLnByb3RvY29sLFxuICAgICAgICAgICAgICBhZGRyZXNzOiBkYXRhLmFkZHJlc3MsXG4gICAgICAgICAgICAgIHBvcnQ6IGRhdGEucG9ydCxcbiAgICAgICAgICAgICAgaG9zdG5hbWU6IGRhdGEuaG9zdG5hbWUsXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgdmFsID0gZGF0YVtpdGVtLmtleV07XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBpdGVtPy5jb21wb25lbnQ/Lmluc3RhbmNlPy5zZXRQcm9wZXJ0aWVzKHZhbCk7XG4gICAgICB9IGVsc2UgaWYgKGl0ZW0/LmNvbXBvbmVudD8uc2V0SW5wdXQpIHtcbiAgICAgICAgaXRlbS5jb21wb25lbnQuc2V0SW5wdXQoJ2ZpZWxkVmFsdWUnLCBkYXRhW2l0ZW0ua2V5XSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGRhdGE7XG4gIH1cblxuICBnZXRDb25maWdEYXRhRnJvbUZvcm0oKSB7XG4gICAgY29uc3QgZGF0YSA9IHt9O1xuICAgIHRoaXMuYWRkSXRlbXNUb0NvbmZpZyh0aGlzLml0ZW1zLCBkYXRhKTtcbiAgICB0aGlzLl9jb25maWdEYXRhID0gZGF0YTtcbiAgICB0aGlzLmhpZGVDb25maWdKU09OID0gZmFsc2U7XG4gICAgdGhpcy5jb25maWdEYXRhQ2hhbmdlLmVtaXQodGhpcy5jb25maWdEYXRhKTtcbiAgfVxuXG4gIGFkZEl0ZW1zVG9Db25maWcoaXRlbXMsIGRhdGE6IGFueSA9IHt9LCBwYXJlbnRUeXBlID0gJ29iamVjdCcpIHtcbiAgICBpdGVtcy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICBpZiAoaXRlbS50eXBlID09PSAnYXJyYXknKSB7XG4gICAgICAgIGlmIChpdGVtLmFkZGVkSXRlbXMpIHtcbiAgICAgICAgICBkYXRhW2l0ZW0ua2V5XSA9IGl0ZW0uYWRkZWRJdGVtcztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBkYXRhW2l0ZW0ua2V5XSA9IFtdO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGl0ZW0udHlwZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgY29uc3QgdmFsID0gdGhpcy5hZGRJdGVtc1RvQ29uZmlnKGl0ZW0uaXRlbXMsIHt9LCBpdGVtLnR5cGUpO1xuICAgICAgICBsZXQgaGFzRGVmaW5pdGlvbiA9IGZhbHNlO1xuICAgICAgICBrZXlzKHZhbCkuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICAgICAgaWYgKGlzQm9vbGVhbih2YWxba2V5XSkgfHwgKCFpc0VtcHR5KHZhbFtrZXldKSAmJiAhaXNOaWwodmFsW2tleV0pKSkge1xuICAgICAgICAgICAgaGFzRGVmaW5pdGlvbiA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgZGF0YVtpdGVtLmtleV0gPSBoYXNEZWZpbml0aW9uID8gdmFsIDogdW5kZWZpbmVkO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGV0IHByb3BzID0gW107XG4gICAgICAgIGlmIChpdGVtPy5jb21wb25lbnQ/Lmluc3RhbmNlPy5nZXRQcm9wZXJ0aWVzKSB7XG4gICAgICAgICAgcHJvcHMgPSBpdGVtPy5jb21wb25lbnQ/Lmluc3RhbmNlPy5nZXRQcm9wZXJ0aWVzKCk7XG4gICAgICAgIH0gZWxzZSBpZiAoaXRlbT8uY29tcG9uZW50Py5pbnN0YW5jZSkge1xuICAgICAgICAgIHByb3BzID0gW3trZXk6IGl0ZW0ua2V5LCB2YWx1ZTogaXRlbS5jb21wb25lbnQuaW5zdGFuY2UuZmllbGRWYWx1ZX1dO1xuICAgICAgICB9XG4gICAgICAgIHByb3BzLmZvckVhY2goKHByb3ApID0+IHtcbiAgICAgICAgICBkYXRhW3Byb3Aua2V5XSA9IHByb3AudmFsdWU7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBkYXRhO1xuICB9XG5cbiAgdmFsaWRhdGVDb25maWcoKSB7XG4gICAgdGhpcy5jb25maWdFcnJvcnMgPSB7fTtcbiAgICBjb25zdCBjb25maWdJdGVtc1ZhbGlkID0gdGhpcy52YWxpZGF0ZUNvbmZpZ0l0ZW1zKHRoaXMuaXRlbXMpO1xuICAgIGlmICghY29uZmlnSXRlbXNWYWxpZCkge1xuICAgICAgdGhpcy5jb25maWdFcnJvcnNbJ2NvbmZpZ0RhdGEnXSA9IHRydWU7XG4gICAgfVxuICAgIHRoaXMuY29uZmlnRXJyb3JzQ2hhbmdlLmVtaXQodGhpcy5jb25maWdFcnJvcnMpO1xuICAgIHJldHVybiBpc0VtcHR5KHRoaXMuY29uZmlnRXJyb3JzKTtcbiAgfVxuXG4gIHZhbGlkYXRlQ29uZmlnSXRlbXMoaXRlbXMsIHBhcmVudFR5cGUgPSAnb2JqZWN0Jykge1xuICAgIGxldCBpc1ZhbGlkID0gdHJ1ZTtcbiAgICBpdGVtcy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICBpZiAoaXRlbS50eXBlID09PSAnb2JqZWN0Jykge1xuICAgICAgICBpZiAoIXRoaXMudmFsaWRhdGVDb25maWdJdGVtcyhpdGVtLml0ZW1zLCBpdGVtLnR5cGUpKSB7XG4gICAgICAgICAgaXNWYWxpZCA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGl0ZW0/LmNvbXBvbmVudD8uaW5zdGFuY2U/LmlzVmFsaWQpIHtcbiAgICAgICAgaWYgKCFpdGVtPy5jb21wb25lbnQ/Lmluc3RhbmNlPy5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICBpc1ZhbGlkID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gaXNWYWxpZDtcbiAgfVxuXG4gIGZvcm1EYXRhQ2hhbmdlZCgpIHtcbiAgICBkZWxheSgoKSA9PiB7XG4gICAgICB0aGlzLmdldENvbmZpZ0RhdGFGcm9tRm9ybSgpO1xuICAgIH0sIDIwMCk7XG4gIH1cblxuICBqc29uRGF0YUNoYW5nZWQoZXZlbnQpIHtcbiAgICBkZWZlcigoKSA9PiB7XG4gICAgICB0aGlzLmNvbmZpZ0RhdGFDaGFuZ2UuZW1pdCh0aGlzLmNvbmZpZ0RhdGEpO1xuICAgICAgdGhpcy51cGRhdGVGb3JtVmlldyh0aGlzLml0ZW1zLCB0aGlzLmNvbmZpZ0RhdGEpO1xuICAgIH0pO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZm9ybS1maWVsZC1leHRlbmRlZC1maWVsZHNcIiBbaGlkZGVuXT1cInNob3dKc29uVmlld1wiIChtb3VzZXVwKT1cImZvcm1EYXRhQ2hhbmdlZERlYm91bmNlZCgkZXZlbnQpXCIgKGtleXVwKT1cImZvcm1EYXRhQ2hhbmdlZERlYm91bmNlZCgkZXZlbnQpXCI+XG4gICAgPG5nLWNvbnRhaW5lciAjZHluYW1pY2Zvcm0+PC9uZy1jb250YWluZXI+XG48L2Rpdj5cbjxsaWItanNvbi12aWV3ICpuZ0lmPVwic2hvd0pzb25WaWV3ICYmICFoaWRlQ29uZmlnSlNPTlwiIChkYXRhQ2hhbmdlKT1cImpzb25EYXRhQ2hhbmdlZERlYm91bmNlZCgkZXZlbnQpXCIgWyhkYXRhKV09XCJjb25maWdEYXRhXCI+PC9saWItanNvbi12aWV3PlxuPGxpYi1qc29uLXZpZXcgKm5nSWY9XCJzaG93SnNvblZpZXcgJiYgaGlkZUNvbmZpZ0pTT05cIiBbKGRhdGEpXT1cImNvbmZpZ0RhdGFcIj48L2xpYi1qc29uLXZpZXc+Il19
|
|
314
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLWVkaXRvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy96aXRpLWNvbnNvbGUtbGliL3NyYy9saWIvZmVhdHVyZXMvY29uZmlnLWVkaXRvci9jb25maWctZWRpdG9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ppdGktY29uc29sZS1saWIvc3JjL2xpYi9mZWF0dXJlcy9jb25maWctZWRpdG9yL2NvbmZpZy1lZGl0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBZ0IsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3hILE9BQU8sRUFBQyxtQkFBbUIsRUFBb0IsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RSxPQUFPLEVBQUMsUUFBUSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFDLE1BQU0sUUFBUSxDQUFDO0FBRS9FLE9BQU8sR0FBRyxNQUFNLEtBQUssQ0FBQztBQUN0QixPQUFPLFVBQVUsTUFBTSxhQUFhLENBQUM7QUFDckMsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLDRCQUE0QixDQUFDOzs7Ozs7QUFHeEQsTUFLYSxxQkFBcUI7SUFtQmhDLElBQWEsVUFBVSxDQUFDLElBQUk7UUFDMUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7SUFDMUIsQ0FBQztJQUFBLENBQUM7SUFFRixJQUFJLFVBQVU7UUFDWixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDMUIsQ0FBQztJQUdELElBQWEsWUFBWSxDQUFDLFlBQXFCO1FBQzdDLElBQUksQ0FBQyxhQUFhLEdBQUcsWUFBWSxDQUFDO1FBQ2xDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFDRCxJQUFJLFlBQVk7UUFDZCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDNUIsQ0FBQztJQUdELElBQWEsTUFBTSxDQUFDLE1BQVc7UUFDN0IsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7UUFDdEIsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRCxJQUFJLE1BQU07UUFDUixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDdEIsQ0FBQztJQU1ELFlBQW9CLFNBQXdCLEVBQVUsY0FBOEI7UUFBaEUsY0FBUyxHQUFULFNBQVMsQ0FBZTtRQUFVLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQWpEcEYsVUFBSyxHQUFVLEVBQUUsQ0FBQztRQUVsQixnQkFBVyxHQUFHO1lBQ1osT0FBTztZQUNQLE9BQU87U0FDUixDQUFBO1FBRUQsZ0JBQVcsR0FBRztZQUNaLGtCQUFrQjtZQUNsQixxQkFBcUI7U0FDdEIsQ0FBQTtRQUNELG1CQUFjLEdBQUcsS0FBSyxDQUFDO1FBRWQsaUJBQVksR0FBUSxFQUFFLENBQUM7UUFDdEIsdUJBQWtCLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUV2RCxnQkFBVyxHQUFRLEVBQUUsQ0FBQztRQUlaLHFCQUFnQixHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFLckQsa0JBQWEsR0FBRyxLQUFLLENBQUM7UUFTdEIsWUFBTyxHQUFHLEtBQUssQ0FBQztRQVdoQiw2QkFBd0IsR0FBUSxRQUFRLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDL0UsNkJBQXdCLEdBQVEsUUFBUSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBSS9FLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ2xCLEtBQUssQ0FBQyxHQUFHLEVBQUU7WUFDVCxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDekIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsVUFBVTtRQUNSLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNqQixJQUFJLElBQUksQ0FBQyxXQUFXLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNuQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUNoQztJQUNILENBQUM7SUFFRCxTQUFTO1FBQ1AsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRTtZQUMvQixJQUFJLElBQUksRUFBRSxTQUFTO2dCQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDaEQsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztJQUNsQixDQUFDO0lBRUQsWUFBWSxDQUFDLE1BQVc7UUFDdEIsSUFBSSxNQUFNLENBQUMsVUFBVSxFQUFFO1lBQ3JCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDakcsS0FBSyxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFO2dCQUMxQixNQUFNLElBQUksR0FBRyxHQUFHLENBQUMsU0FBUyxDQUFDO2dCQUMzQixJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDO2dCQUN6QyxJQUFJLElBQUksRUFBRSxRQUFRLENBQUMsV0FBVyxFQUFFO29CQUM5QixNQUFNLEtBQUssR0FBYyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQztvQkFDakQsSUFBSSxTQUFTLENBQUM7b0JBQ2QsSUFBRyxLQUFLO3dCQUFFLFNBQVMsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO29CQUN0Qyw0RUFBNEU7aUJBQzdFO2FBQ0Y7U0FDRjtJQUNILENBQUM7SUFFRCxnQkFBZ0I7UUFDZCxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRTtZQUN0QixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1NBQ2xEO2FBQU07WUFDTCxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztZQUMzQixLQUFLLENBQUMsR0FBRyxFQUFFO2dCQUNULElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1lBQy9CLENBQUMsQ0FBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDO0lBRUQsY0FBYyxDQUFDLEtBQUssRUFBRSxPQUFZLEVBQUU7UUFDbEMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ3JCLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRTtnQkFDZCxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssT0FBTyxFQUFFO29CQUN6QixJQUFJLElBQUksRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRTt3QkFDekMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQzt3QkFDdkMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDO3FCQUMzRDtvQkFDRCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7aUJBQ3JDO3FCQUFNO29CQUNMLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7aUJBQ2pEO2FBQ0Y7aUJBQU0sSUFBSSxJQUFJLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxhQUFhLEVBQUU7Z0JBQ25ELElBQUksR0FBRyxDQUFDO2dCQUNSLFFBQVEsSUFBSSxDQUFDLEdBQUcsRUFBRTtvQkFDaEIsS0FBSyxrQkFBa0I7d0JBQ3JCLEdBQUcsR0FBRzs0QkFDSixRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7NEJBQ3ZCLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTzs0QkFDckIsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJOzRCQUNmLGVBQWUsRUFBRSxJQUFJLENBQUMsZUFBZTs0QkFDckMsY0FBYyxFQUFFLElBQUksQ0FBQyxjQUFjOzRCQUNuQyxXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVc7NEJBQzdCLGdCQUFnQixFQUFFLElBQUksQ0FBQyxnQkFBZ0I7NEJBQ3ZDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxnQkFBZ0I7NEJBQ3ZDLGlCQUFpQixFQUFFLElBQUksQ0FBQyxpQkFBaUI7eUJBQzFDLENBQUE7d0JBQ0QsTUFBTTtvQkFDUixLQUFLLEtBQUs7d0JBQ1IsR0FBRyxHQUFHOzRCQUNKLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTs0QkFDdkIsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPOzRCQUNyQixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7NEJBQ2YsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO3lCQUN4QixDQUFBO3dCQUNELE1BQU07b0JBQ1I7d0JBQ0UsR0FBRyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7d0JBQ3JCLE1BQU07aUJBQ1Q7Z0JBQ0QsSUFBSSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQy9DO2lCQUFNLElBQUksSUFBSSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUU7Z0JBQ3BDLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7YUFDdkQ7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELHFCQUFxQjtRQUNuQixNQUFNLElBQUksR0FBRyxFQUFFLENBQUM7UUFDaEIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDeEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7UUFDeEIsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7UUFDNUIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVELGdCQUFnQixDQUFDLEtBQUssRUFBRSxPQUFZLEVBQUUsRUFBRSxVQUFVLEdBQUcsUUFBUTtRQUMzRCxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDckIsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLE9BQU8sRUFBRTtnQkFDekIsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO29CQUNuQixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUM7aUJBQ2xDO3FCQUFNO29CQUNMLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDO2lCQUNyQjthQUNGO2lCQUFNLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxRQUFRLEVBQUU7Z0JBQ2pDLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQzdELElBQUksYUFBYSxHQUFHLEtBQUssQ0FBQztnQkFDMUIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO29CQUN4QixJQUFJLFNBQVMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUU7d0JBQ25FLGFBQWEsR0FBRyxJQUFJLENBQUM7cUJBQ3RCO2dCQUNILENBQUMsQ0FBQyxDQUFDO2dCQUNILElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsYUFBYSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQzthQUNsRDtpQkFBTTtnQkFDTCxJQUFJLEtBQUssR0FBRyxFQUFFLENBQUM7Z0JBQ2YsSUFBSSxJQUFJLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxhQUFhLEVBQUU7b0JBQzVDLEtBQUssR0FBRyxJQUFJLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxhQUFhLEVBQUUsQ0FBQztpQkFDcEQ7cUJBQU0sSUFBSSxJQUFJLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRTtvQkFDcEMsS0FBSyxHQUFHLENBQUMsRUFBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFDLENBQUMsQ0FBQztpQkFDdEU7Z0JBQ0QsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO29CQUNyQixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7Z0JBQzlCLENBQUMsQ0FBQyxDQUFDO2FBQ0o7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELGNBQWMsQ0FBQyxNQUFPLEVBQUUsV0FBVyxHQUFHLElBQUk7UUFDeEMsSUFBSSxnQkFBZ0IsQ0FBQztRQUNyQixJQUFJLEtBQUssR0FBRyxJQUFJLENBQUM7UUFDakIsSUFBSSxNQUFNLEVBQUU7WUFDVixpQkFBaUI7WUFDakIsTUFBTSxHQUFHLEdBQUcsSUFBSSxHQUFHLENBQUMsRUFBQyxTQUFTLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FBQztZQUN2QyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDaEIsR0FBRyxDQUFDLFNBQVMsQ0FBQyxjQUFjLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFDdEMsTUFBTSxRQUFRLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNyQyxLQUFLLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUNsQyxnQkFBZ0IsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDO1NBQ3BDO1FBQ0QsSUFBSSxDQUFDLFlBQVksR0FBRyxFQUFFLENBQUM7UUFDdkIsTUFBTSxxQkFBcUIsR0FBRyxFQUFFLENBQUM7UUFDakMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3RFLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxnQkFBZ0IsRUFBRSxxQkFBcUIsQ0FBQyxDQUFDO1FBQ3pFLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDVixJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxHQUFHLElBQUksQ0FBQztZQUN2QyxJQUFJLFdBQVcsRUFBRTtnQkFDZixJQUFJLENBQUMsbUJBQW1CLENBQUMscUJBQXFCLENBQUMsQ0FBQzthQUNqRDtTQUNGO1FBQ0QsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDaEQsT0FBTyxPQUFPLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFRCwwQkFBMEIsQ0FBQyxnQkFBZ0IsRUFBRSxxQkFBcUI7UUFDaEUsZ0JBQWdCLEVBQUUsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDbEMsSUFBSSxJQUFJLEdBQUcsS0FBSyxDQUFDLFlBQVksQ0FBQztZQUM5QixJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsZUFBZSxDQUFDLEVBQUU7Z0JBQzVDLElBQUksSUFBSSxHQUFHLEdBQUcsS0FBSyxFQUFFLE1BQU0sRUFBRSxlQUFlLENBQUM7YUFDOUM7WUFDRCxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUNsQixxQkFBcUIsQ0FBQyxJQUFJLENBQUMsR0FBRyxNQUFNLElBQUksU0FBUyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7YUFDbEU7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxLQUFLLEVBQUUsVUFBVSxHQUFHLFFBQVEsRUFBRSxJQUFJLEdBQUcsRUFBRSxFQUFFLGdCQUFnQixHQUFHLEVBQUU7UUFDaEYsSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDO1FBQ25CLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUNyQixJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssUUFBUSxFQUFFO2dCQUMxQixPQUFPLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLENBQUM7Z0JBQzlCLElBQUksQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxnQkFBZ0IsQ0FBQyxFQUFFO29CQUM3RixPQUFPLEdBQUcsS0FBSyxDQUFDO2lCQUNqQjthQUNGO2lCQUFNLElBQUksSUFBSSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsbUJBQW1CLEVBQUU7Z0JBQ3pELElBQUksRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLG1CQUFtQixDQUFDLElBQUksRUFBRSxnQkFBZ0IsQ0FBQyxDQUFBO2FBQ3ZFO2lCQUFNO2dCQUNMLE1BQU0sa0JBQWtCLEdBQVEsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7b0JBQy9ELElBQUksVUFBVSxHQUFHLEtBQUssQ0FBQyxZQUFZLENBQUM7b0JBQ3BDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxlQUFlLENBQUMsRUFBRTt3QkFDNUMsVUFBVSxJQUFJLEdBQUcsR0FBRyxLQUFLLEVBQUUsTUFBTSxFQUFFLGVBQWUsQ0FBQztxQkFDcEQ7b0JBQ0QsTUFBTSxPQUFPLEdBQUcsVUFBVSxLQUFLLENBQUMsSUFBSSxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7b0JBQ3ZELE9BQU8sT0FBTyxDQUFDO2dCQUNqQixDQUFDLENBQUMsQ0FBQztnQkFDSCxJQUFJLElBQUksRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRTtvQkFDekMsSUFBSSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsVUFBVSxDQUFDLENBQUMsa0JBQWtCLENBQUMsQ0FBQztpQkFDNUQ7YUFDRjtRQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztJQUVELG1CQUFtQixDQUFDLHFCQUFxQjtRQUN2QyxJQUFJLGlCQUFpQixHQUFHLEVBQUUsQ0FBQztRQUMzQixJQUFJLENBQUMsT0FBTyxDQUFDLHFCQUFxQixDQUFDLEVBQUU7WUFDbkMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLENBQUM7WUFDMUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRTtnQkFDM0IsaUJBQWlCLElBQUksT0FBTyxxQkFBcUIsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDO1lBQ2hFLENBQUMsQ0FBQyxDQUFDO1NBQ0o7UUFDRCxJQUFJLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFO1lBQzlCLGlCQUFpQixHQUFHLDJGQUEyRixDQUFDO1NBQ2pIO2FBQU07WUFDTCxpQkFBaUIsR0FBRyxnQ0FBZ0MsaUJBQWlCLE9BQU8sQ0FBQztTQUM5RTtRQUNELE1BQU0sV0FBVyxHQUFHLElBQUksWUFBWSxDQUNoQyxPQUFPLEVBQ1AsT0FBTyxFQUNQLHlCQUF5QixFQUN6QixpQkFBaUIsQ0FDcEIsQ0FBQztRQUNGLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFRCxlQUFlO1FBQ2IsS0FBSyxDQUFDLEdBQUcsRUFBRTtZQUNULElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBQy9CLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNWLENBQUM7SUFFRCxlQUFlLENBQUMsS0FBSztRQUNuQixLQUFLLENBQUMsR0FBRyxFQUFFO1lBQ1QsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDNUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNuRCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7K0dBalNVLHFCQUFxQjttR0FBckIscUJBQXFCLGlXQWlEQyxnQkFBZ0Isc0RBQ3RDLG1CQUFtQixnRENoRWhDLGlkQUk0Rjs7U0RVL0UscUJBQXFCOzRGQUFyQixxQkFBcUI7a0JBTGpDLFNBQVM7K0JBQ0UsbUJBQW1CO2lJQW1CcEIsWUFBWTtzQkFBcEIsS0FBSztnQkFDSSxrQkFBa0I7c0JBQTNCLE1BQU07Z0JBR00sVUFBVTtzQkFBdEIsS0FBSztnQkFHSSxnQkFBZ0I7c0JBQXpCLE1BQU07Z0JBTU0sWUFBWTtzQkFBeEIsS0FBSztnQkFTTyxNQUFNO3NCQUFsQixLQUFLO2dCQVk4QyxXQUFXO3NCQUE5RCxTQUFTO3VCQUFDLGFBQWEsRUFBRSxFQUFDLElBQUksRUFBRSxnQkFBZ0IsRUFBQztnQkFDRCxNQUFNO3NCQUF0RCxTQUFTO3VCQUFDLG1CQUFtQixFQUFFLEVBQUMsTUFBTSxFQUFFLEtBQUssRUFBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBDb21wb25lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBWaWV3Q2hpbGQsIFZpZXdDb250YWluZXJSZWZ9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtKc29uRWRpdG9yQ29tcG9uZW50LCBKc29uRWRpdG9yT3B0aW9uc30gZnJvbSBcImFuZy1qc29uZWRpdG9yXCI7XG5pbXBvcnQge2RlYm91bmNlLCBkZWZlciwgZGVsYXksIGlzQm9vbGVhbiwgaXNFbXB0eSwgaXNOaWwsIGtleXN9IGZyb20gXCJsb2Rhc2hcIjtcbmltcG9ydCB7U2NoZW1hU2VydmljZX0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL3NjaGVtYS5zZXJ2aWNlXCI7XG5pbXBvcnQgQWp2IGZyb20gJ2Fqdic7XG5pbXBvcnQgYWRkRm9ybWF0cyBmcm9tICdhanYtZm9ybWF0cyc7XG5pbXBvcnQge0dyb3dsZXJNb2RlbH0gZnJvbSBcIi4uL21lc3NhZ2luZy9ncm93bGVyLm1vZGVsXCI7XG5pbXBvcnQge0dyb3dsZXJTZXJ2aWNlfSBmcm9tIFwiLi4vbWVzc2FnaW5nL2dyb3dsZXIuc2VydmljZVwiOyAgLy8gSW1wb3J0IGFqdi1mb3JtYXRzXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi1jb25maWctZWRpdG9yJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NvbmZpZy1lZGl0b3IuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jb25maWctZWRpdG9yLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgQ29uZmlnRWRpdG9yQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICBpdGVtczogYW55W10gPSBbXTtcblxuICBsQ29sb3JBcnJheSA9IFtcbiAgICAnd2hpdGUnLFxuICAgICd3aGl0ZScsXG4gIF1cblxuICBiQ29sb3JBcnJheSA9IFtcbiAgICAndmFyKC0tZm9ybUdyb3VwKScsXG4gICAgJ3ZhcigtLWZvcm1TdWJHcm91cCknXG4gIF1cbiAgaGlkZUNvbmZpZ0pTT04gPSBmYWxzZTtcblxuICBASW5wdXQoKSBjb25maWdFcnJvcnM6IGFueSA9IHt9O1xuICBAT3V0cHV0KCkgY29uZmlnRXJyb3JzQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgX2NvbmZpZ0RhdGE6IGFueSA9IHt9O1xuICBASW5wdXQoKSBzZXQgY29uZmlnRGF0YShkYXRhKSB7XG4gICAgdGhpcy5fY29uZmlnRGF0YSA9IGRhdGE7XG4gIH07XG4gIEBPdXRwdXQoKSBjb25maWdEYXRhQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIGdldCBjb25maWdEYXRhKCkge1xuICAgIHJldHVybiB0aGlzLl9jb25maWdEYXRhO1xuICB9XG5cbiAgX3Nob3dKc29uVmlldyA9IGZhbHNlO1xuICBASW5wdXQoKSBzZXQgc2hvd0pzb25WaWV3KHNob3dKc29uVmlldzogYm9vbGVhbikge1xuICAgIHRoaXMuX3Nob3dKc29uVmlldyA9IHNob3dKc29uVmlldztcbiAgICB0aGlzLnVwZGF0ZUNvbmZpZ0RhdGEoKTtcbiAgfVxuICBnZXQgc2hvd0pzb25WaWV3KCkge1xuICAgIHJldHVybiB0aGlzLl9zaG93SnNvblZpZXc7XG4gIH1cblxuICBfc2NoZW1hID0gZmFsc2U7XG4gIEBJbnB1dCgpIHNldCBzY2hlbWEoc2NoZW1hOiBhbnkpIHtcbiAgICB0aGlzLl9zY2hlbWEgPSBzY2hlbWE7XG4gICAgdGhpcy5jcmVhdGVGb3JtKCk7XG4gICAgdGhpcy51cGRhdGVDb25maWdEYXRhKCk7XG4gIH1cblxuICBnZXQgc2NoZW1hKCkge1xuICAgIHJldHVybiB0aGlzLl9zY2hlbWE7XG4gIH1cblxuICBmb3JtRGF0YUNoYW5nZWREZWJvdW5jZWQ6IGFueSA9IGRlYm91bmNlKHRoaXMuZm9ybURhdGFDaGFuZ2VkLmJpbmQodGhpcyksIDM1MCk7XG4gIGpzb25EYXRhQ2hhbmdlZERlYm91bmNlZDogYW55ID0gZGVib3VuY2UodGhpcy5qc29uRGF0YUNoYW5nZWQuYmluZCh0aGlzKSwgMzUwKTtcbiAgQFZpZXdDaGlsZChcImR5bmFtaWNmb3JtXCIsIHtyZWFkOiBWaWV3Q29udGFpbmVyUmVmfSkgZHluYW1pY0Zvcm0hOiBWaWV3Q29udGFpbmVyUmVmO1xuICBAVmlld0NoaWxkKEpzb25FZGl0b3JDb21wb25lbnQsIHtzdGF0aWM6IGZhbHNlfSkgZWRpdG9yITogSnNvbkVkaXRvckNvbXBvbmVudDtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBzY2hlbWFTdmM6IFNjaGVtYVNlcnZpY2UsIHByaXZhdGUgZ3Jvd2xlclNlcnZpY2U6IEdyb3dsZXJTZXJ2aWNlKSB7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmNyZWF0ZUZvcm0oKTtcbiAgICBkZWZlcigoKSA9PiB7XG4gICAgICB0aGlzLmZvcm1EYXRhQ2hhbmdlZCgpO1xuICAgIH0pO1xuICB9XG5cbiAgY3JlYXRlRm9ybSgpIHtcbiAgICB0aGlzLmNsZWFyRm9ybSgpO1xuICAgIGlmICh0aGlzLmR5bmFtaWNGb3JtICYmIHRoaXMuc2NoZW1hKSB7XG4gICAgICB0aGlzLnJlbmRlclNjaGVtYSh0aGlzLnNjaGVtYSk7XG4gICAgfVxuICB9XG5cbiAgY2xlYXJGb3JtKCkge1xuICAgIHRoaXMuaXRlbXMuZm9yRWFjaCgoaXRlbTogYW55KSA9PiB7XG4gICAgICBpZiAoaXRlbT8uY29tcG9uZW50KSBpdGVtLmNvbXBvbmVudC5kZXN0cm95KCk7XG4gICAgfSk7XG4gICAgdGhpcy5jb25maWdFcnJvcnMgPSB7fTtcbiAgICB0aGlzLml0ZW1zID0gW107XG4gIH1cblxuICByZW5kZXJTY2hlbWEoc2NoZW1hOiBhbnkpIHtcbiAgICBpZiAoc2NoZW1hLnByb3BlcnRpZXMpIHtcbiAgICAgIHRoaXMuaXRlbXMgPSB0aGlzLnNjaGVtYVN2Yy5yZW5kZXIoc2NoZW1hLCB0aGlzLmR5bmFtaWNGb3JtLCB0aGlzLmxDb2xvckFycmF5LCB0aGlzLmJDb2xvckFycmF5KTtcbiAgICAgIGZvciAobGV0IG9iaiBvZiB0aGlzLml0ZW1zKSB7XG4gICAgICAgIGNvbnN0IGNSZWYgPSBvYmouY29tcG9uZW50O1xuICAgICAgICBjUmVmLmluc3RhbmNlLmVycm9ycyA9IHRoaXMuY29uZmlnRXJyb3JzO1xuICAgICAgICBpZiAoY1JlZj8uaW5zdGFuY2UudmFsdWVDaGFuZ2UpIHtcbiAgICAgICAgICBjb25zdCBwTmFtZTogc3RyaW5nW10gID0gY1JlZi5pbnN0YW5jZS5wYXJlbnRhZ2U7XG4gICAgICAgICAgbGV0IHBhcmVudEtleTtcbiAgICAgICAgICBpZihwTmFtZSkgcGFyZW50S2V5ID0gcE5hbWUuam9pbignLicpO1xuICAgICAgICAgIC8vaWYgKHBhcmVudEtleSAmJiAhdGhpcy5mb3JtRGF0YVtwYXJlbnRLZXldKSB0aGlzLmZvcm1EYXRhW3BhcmVudEtleV0gPSB7fTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHVwZGF0ZUNvbmZpZ0RhdGEoKSB7XG4gICAgaWYgKCF0aGlzLnNob3dKc29uVmlldykge1xuICAgICAgdGhpcy51cGRhdGVGb3JtVmlldyh0aGlzLml0ZW1zLCB0aGlzLmNvbmZpZ0RhdGEpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmhpZGVDb25maWdKU09OID0gdHJ1ZTtcbiAgICAgIGRlZmVyKCgpID0+IHtcbiAgICAgICAgdGhpcy5nZXRDb25maWdEYXRhRnJvbUZvcm0oKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHVwZGF0ZUZvcm1WaWV3KGl0ZW1zLCBkYXRhOiBhbnkgPSB7fSkge1xuICAgIGl0ZW1zLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgIGlmIChpdGVtLml0ZW1zKSB7XG4gICAgICAgIGlmIChpdGVtLnR5cGUgPT09ICdhcnJheScpIHtcbiAgICAgICAgICBpZiAoaXRlbT8uY29tcG9uZW50Py5pbnN0YW5jZT8uYWRkZWRJdGVtcykge1xuICAgICAgICAgICAgaXRlbS5hZGRlZEl0ZW1zID0gZGF0YVtpdGVtLmtleV0gfHwgW107XG4gICAgICAgICAgICBpdGVtLmNvbXBvbmVudC5pbnN0YW5jZS5hZGRlZEl0ZW1zID0gZGF0YVtpdGVtLmtleV0gfHwgW107XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMudXBkYXRlRm9ybVZpZXcoaXRlbS5pdGVtcywge30pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMudXBkYXRlRm9ybVZpZXcoaXRlbS5pdGVtcywgZGF0YVtpdGVtLmtleV0pO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGl0ZW0/LmNvbXBvbmVudD8uaW5zdGFuY2U/LnNldFByb3BlcnRpZXMpIHtcbiAgICAgICAgbGV0IHZhbDtcbiAgICAgICAgc3dpdGNoIChpdGVtLmtleSkge1xuICAgICAgICAgIGNhc2UgJ2ZvcndhcmRpbmdjb25maWcnOlxuICAgICAgICAgICAgdmFsID0ge1xuICAgICAgICAgICAgICBwcm90b2NvbDogZGF0YS5wcm90b2NvbCxcbiAgICAgICAgICAgICAgYWRkcmVzczogZGF0YS5hZGRyZXNzLFxuICAgICAgICAgICAgICBwb3J0OiBkYXRhLnBvcnQsXG4gICAgICAgICAgICAgIGZvcndhcmRQcm90b2NvbDogZGF0YS5mb3J3YXJkUHJvdG9jb2wsXG4gICAgICAgICAgICAgIGZvcndhcmRBZGRyZXNzOiBkYXRhLmZvcndhcmRBZGRyZXNzLFxuICAgICAgICAgICAgICBmb3J3YXJkUG9ydDogZGF0YS5mb3J3YXJkUG9ydCxcbiAgICAgICAgICAgICAgYWxsb3dlZFByb3RvY29sczogZGF0YS5hbGxvd2VkUHJvdG9jb2xzLFxuICAgICAgICAgICAgICBhbGxvd2VkQWRkcmVzc2VzOiBkYXRhLmFsbG93ZWRBZGRyZXNzZXMsXG4gICAgICAgICAgICAgIGFsbG93ZWRQb3J0UmFuZ2VzOiBkYXRhLmFsbG93ZWRQb3J0UmFuZ2VzXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlICdwYXAnOlxuICAgICAgICAgICAgdmFsID0ge1xuICAgICAgICAgICAgICBwcm90b2NvbDogZGF0YS5wcm90b2NvbCxcbiAgICAgICAgICAgICAgYWRkcmVzczogZGF0YS5hZGRyZXNzLFxuICAgICAgICAgICAgICBwb3J0OiBkYXRhLnBvcnQsXG4gICAgICAgICAgICAgIGhvc3RuYW1lOiBkYXRhLmhvc3RuYW1lLFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHZhbCA9IGRhdGFbaXRlbS5rZXldO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgaXRlbT8uY29tcG9uZW50Py5pbnN0YW5jZT8uc2V0UHJvcGVydGllcyh2YWwpO1xuICAgICAgfSBlbHNlIGlmIChpdGVtPy5jb21wb25lbnQ/LnNldElucHV0KSB7XG4gICAgICAgIGl0ZW0uY29tcG9uZW50LnNldElucHV0KCdmaWVsZFZhbHVlJywgZGF0YVtpdGVtLmtleV0pO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBkYXRhO1xuICB9XG5cbiAgZ2V0Q29uZmlnRGF0YUZyb21Gb3JtKCkge1xuICAgIGNvbnN0IGRhdGEgPSB7fTtcbiAgICB0aGlzLmFkZEl0ZW1zVG9Db25maWcodGhpcy5pdGVtcywgZGF0YSk7XG4gICAgdGhpcy5fY29uZmlnRGF0YSA9IGRhdGE7XG4gICAgdGhpcy5oaWRlQ29uZmlnSlNPTiA9IGZhbHNlO1xuICAgIHRoaXMuY29uZmlnRGF0YUNoYW5nZS5lbWl0KHRoaXMuY29uZmlnRGF0YSk7XG4gIH1cblxuICBhZGRJdGVtc1RvQ29uZmlnKGl0ZW1zLCBkYXRhOiBhbnkgPSB7fSwgcGFyZW50VHlwZSA9ICdvYmplY3QnKSB7XG4gICAgaXRlbXMuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgaWYgKGl0ZW0udHlwZSA9PT0gJ2FycmF5Jykge1xuICAgICAgICBpZiAoaXRlbS5hZGRlZEl0ZW1zKSB7XG4gICAgICAgICAgZGF0YVtpdGVtLmtleV0gPSBpdGVtLmFkZGVkSXRlbXM7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZGF0YVtpdGVtLmtleV0gPSBbXTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChpdGVtLnR5cGUgPT09ICdvYmplY3QnKSB7XG4gICAgICAgIGNvbnN0IHZhbCA9IHRoaXMuYWRkSXRlbXNUb0NvbmZpZyhpdGVtLml0ZW1zLCB7fSwgaXRlbS50eXBlKTtcbiAgICAgICAgbGV0IGhhc0RlZmluaXRpb24gPSBmYWxzZTtcbiAgICAgICAga2V5cyh2YWwpLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICAgIGlmIChpc0Jvb2xlYW4odmFsW2tleV0pIHx8ICghaXNFbXB0eSh2YWxba2V5XSkgJiYgIWlzTmlsKHZhbFtrZXldKSkpIHtcbiAgICAgICAgICAgIGhhc0RlZmluaXRpb24gPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGRhdGFbaXRlbS5rZXldID0gaGFzRGVmaW5pdGlvbiA/IHZhbCA6IHVuZGVmaW5lZDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxldCBwcm9wcyA9IFtdO1xuICAgICAgICBpZiAoaXRlbT8uY29tcG9uZW50Py5pbnN0YW5jZT8uZ2V0UHJvcGVydGllcykge1xuICAgICAgICAgIHByb3BzID0gaXRlbT8uY29tcG9uZW50Py5pbnN0YW5jZT8uZ2V0UHJvcGVydGllcygpO1xuICAgICAgICB9IGVsc2UgaWYgKGl0ZW0/LmNvbXBvbmVudD8uaW5zdGFuY2UpIHtcbiAgICAgICAgICBwcm9wcyA9IFt7a2V5OiBpdGVtLmtleSwgdmFsdWU6IGl0ZW0uY29tcG9uZW50Lmluc3RhbmNlLmZpZWxkVmFsdWV9XTtcbiAgICAgICAgfVxuICAgICAgICBwcm9wcy5mb3JFYWNoKChwcm9wKSA9PiB7XG4gICAgICAgICAgZGF0YVtwcm9wLmtleV0gPSBwcm9wLnZhbHVlO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gZGF0YTtcbiAgfVxuXG4gIHZhbGlkYXRlQ29uZmlnKHNjaGVtYT8sIHNob3dHcm93bGVyID0gdHJ1ZSkge1xuICAgIGxldCB2YWxpZGF0aW9uRXJyb3JzO1xuICAgIGxldCB2YWxpZCA9IHRydWU7XG4gICAgaWYgKHNjaGVtYSkge1xuICAgICAgLy8gSW5pdGlhbGl6ZSBBanZcbiAgICAgIGNvbnN0IGFqdiA9IG5ldyBBanYoe2FsbEVycm9yczogdHJ1ZX0pO1xuICAgICAgYWRkRm9ybWF0cyhhanYpO1xuICAgICAgYWp2LmFkZEZvcm1hdCgnaWRuLWhvc3RuYW1lJywgL14uKyQvKTtcbiAgICAgIGNvbnN0IHZhbGlkYXRlID0gYWp2LmNvbXBpbGUoc2NoZW1hKTtcbiAgICAgIHZhbGlkID0gdmFsaWRhdGUodGhpcy5jb25maWdEYXRhKTtcbiAgICAgIHZhbGlkYXRpb25FcnJvcnMgPSB2YWxpZGF0ZS5lcnJvcnM7XG4gICAgfVxuICAgIHRoaXMuY29uZmlnRXJyb3JzID0ge307XG4gICAgY29uc3QgcHJvcGVydHlWYWxpZGF0aW9uTWFwID0ge307XG4gICAgdGhpcy52YWxpZGF0ZUNvbmZpZ0l0ZW1zKHRoaXMuaXRlbXMsIHVuZGVmaW5lZCwgJycsIHZhbGlkYXRpb25FcnJvcnMpO1xuICAgIHRoaXMuYnVpbGRQcm9wZXJ0eVZhbGlkYXRpb25NYXAodmFsaWRhdGlvbkVycm9ycywgcHJvcGVydHlWYWxpZGF0aW9uTWFwKTtcbiAgICBpZiAoIXZhbGlkKSB7XG4gICAgICB0aGlzLmNvbmZpZ0Vycm9yc1snY29uZmlnRGF0YSddID0gdHJ1ZTtcbiAgICAgIGlmIChzaG93R3Jvd2xlcikge1xuICAgICAgICB0aGlzLmRpc3BsYXlDb25maWdFcnJvcnMocHJvcGVydHlWYWxpZGF0aW9uTWFwKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5jb25maWdFcnJvcnNDaGFuZ2UuZW1pdCh0aGlzLmNvbmZpZ0Vycm9ycyk7XG4gICAgcmV0dXJuIGlzRW1wdHkodGhpcy5jb25maWdFcnJvcnMpO1xuICB9XG5cbiAgYnVpbGRQcm9wZXJ0eVZhbGlkYXRpb25NYXAodmFsaWRhdGlvbkVycm9ycywgcHJvcGVydHlWYWxpZGF0aW9uTWFwKSB7XG4gICAgdmFsaWRhdGlvbkVycm9ycz8uZm9yRWFjaCgoZXJyb3IpID0+IHtcbiAgICAgIGxldCBwYXRoID0gZXJyb3IuaW5zdGFuY2VQYXRoO1xuICAgICAgaWYgKCFpc0VtcHR5KGVycm9yPy5wYXJhbXM/Lm1pc3NpbmdQcm9wZXJ0eSkpIHtcbiAgICAgICAgcGF0aCArPSAnLycgKyBlcnJvcj8ucGFyYW1zPy5taXNzaW5nUHJvcGVydHk7XG4gICAgICB9XG4gICAgICBpZiAoIWlzRW1wdHkocGF0aCkpIHtcbiAgICAgICAgcHJvcGVydHlWYWxpZGF0aW9uTWFwW3BhdGhdID0gYDxiPiR7cGF0aH08L2I+OiAke2Vycm9yLm1lc3NhZ2V9YDtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHZhbGlkYXRlQ29uZmlnSXRlbXMoaXRlbXMsIHBhcmVudFR5cGUgPSAnb2JqZWN0JywgcGF0aCA9ICcnLCB2YWxpZGF0aW9uRXJyb3JzID0gW10pIHtcbiAgICBsZXQgaXNWYWxpZCA9IHRydWU7XG4gICAgaXRlbXMuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgaWYgKGl0ZW0udHlwZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgY29uc29sZS5sb2codmFsaWRhdGlvbkVycm9ycyk7XG4gICAgICAgIGlmICghdGhpcy52YWxpZGF0ZUNvbmZpZ0l0ZW1zKGl0ZW0uaXRlbXMsIGl0ZW0udHlwZSwgcGF0aCArICcvJyArIGl0ZW0ua2V5LCB2YWxpZGF0aW9uRXJyb3JzKSkge1xuICAgICAgICAgIGlzVmFsaWQgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChpdGVtPy5jb21wb25lbnQ/Lmluc3RhbmNlPy5zZXRWYWxpZGF0aW9uRXJyb3JzKSB7XG4gICAgICAgIGl0ZW0/LmNvbXBvbmVudD8uaW5zdGFuY2U/LnNldFZhbGlkYXRpb25FcnJvcnMocGF0aCwgdmFsaWRhdGlvbkVycm9ycylcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGhhc1ZhbGlkYXRpb25FcnJvcjogYW55ID0gdmFsaWRhdGlvbkVycm9ycz8uc29tZSgoZXJyb3IpID0+IHtcbiAgICAgICAgICBsZXQgcGF0aFRvTWFjaCA9IGVycm9yLmluc3RhbmNlUGF0aDtcbiAgICAgICAgICBpZiAoIWlzRW1wdHkoZXJyb3I/LnBhcmFtcz8ubWlzc2luZ1Byb3BlcnR5KSkge1xuICAgICAgICAgICAgcGF0aFRvTWFjaCArPSAnLycgKyBlcnJvcj8ucGFyYW1zPy5taXNzaW5nUHJvcGVydHk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IG1hdGNoZWQgPSBwYXRoVG9NYWNoID09PSAocGF0aCArICcvJyArIGl0ZW0ua2V5KTtcbiAgICAgICAgICByZXR1cm4gbWF0Y2hlZDtcbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChpdGVtPy5jb21wb25lbnQ/Lmluc3RhbmNlPy5zZXRJc1ZhbGlkKSB7XG4gICAgICAgICAgaXRlbT8uY29tcG9uZW50Py5pbnN0YW5jZT8uc2V0SXNWYWxpZCghaGFzVmFsaWRhdGlvbkVycm9yKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBpc1ZhbGlkO1xuICB9XG5cbiAgZGlzcGxheUNvbmZpZ0Vycm9ycyhwcm9wZXJ0eVZhbGlkYXRpb25NYXApIHtcbiAgICBsZXQgdmFsaWRhdGlvbk1lc3NhZ2UgPSAnJztcbiAgICBpZiAoIWlzRW1wdHkocHJvcGVydHlWYWxpZGF0aW9uTWFwKSkge1xuICAgICAgY29uc3QgcHJvcHMgPSBrZXlzKHByb3BlcnR5VmFsaWRhdGlvbk1hcCk7XG4gICAgICBwcm9wcy5mb3JFYWNoKChrZXksIGluZGV4KSA9PiB7XG4gICAgICAgIHZhbGlkYXRpb25NZXNzYWdlICs9IGA8bGk+JHtwcm9wZXJ0eVZhbGlkYXRpb25NYXBba2V5XX08L2xpPmA7XG4gICAgICB9KTtcbiAgICB9XG4gICAgaWYgKGlzRW1wdHkodmFsaWRhdGlvbk1lc3NhZ2UpKSB7XG4gICAgICB2YWxpZGF0aW9uTWVzc2FnZSA9ICdUaGUgZW50ZXJlZCBjb25maWd1cmF0aW9uIGlzIGludmFsaWQuIFBsZWFzZSB1cGRhdGUgbWlzc2luZy9pbnZhbGlkIGZpZWxkcyBhbmQgdHJ5IGFnYWluLic7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhbGlkYXRpb25NZXNzYWdlID0gYDx1bCBzdHlsZT1cIm1hcmdpbi10b3A6IDVweDtcIj4ke3ZhbGlkYXRpb25NZXNzYWdlfTwvdWw+YDtcbiAgICB9XG4gICAgY29uc3QgZ3Jvd2xlckRhdGEgPSBuZXcgR3Jvd2xlck1vZGVsKFxuICAgICAgICAnZXJyb3InLFxuICAgICAgICAnRXJyb3InLFxuICAgICAgICBgRXJyb3IgVmFsaWRhdGluZyBDb25maWdgLFxuICAgICAgICB2YWxpZGF0aW9uTWVzc2FnZSxcbiAgICApO1xuICAgIHRoaXMuZ3Jvd2xlclNlcnZpY2Uuc2hvdyhncm93bGVyRGF0YSk7XG4gIH1cblxuICBmb3JtRGF0YUNoYW5nZWQoKSB7XG4gICAgZGVsYXkoKCkgPT4ge1xuICAgICAgdGhpcy5nZXRDb25maWdEYXRhRnJvbUZvcm0oKTtcbiAgICB9LCAyMDApO1xuICB9XG5cbiAganNvbkRhdGFDaGFuZ2VkKGV2ZW50KSB7XG4gICAgZGVmZXIoKCkgPT4ge1xuICAgICAgdGhpcy5jb25maWdEYXRhQ2hhbmdlLmVtaXQodGhpcy5jb25maWdEYXRhKTtcbiAgICAgIHRoaXMudXBkYXRlRm9ybVZpZXcodGhpcy5pdGVtcywgdGhpcy5jb25maWdEYXRhKTtcbiAgICB9KTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImZvcm0tZmllbGQtZXh0ZW5kZWQtZmllbGRzXCIgW2hpZGRlbl09XCJzaG93SnNvblZpZXdcIiAobW91c2V1cCk9XCJmb3JtRGF0YUNoYW5nZWREZWJvdW5jZWQoJGV2ZW50KVwiIChrZXl1cCk9XCJmb3JtRGF0YUNoYW5nZWREZWJvdW5jZWQoJGV2ZW50KVwiPlxuICAgIDxuZy1jb250YWluZXIgI2R5bmFtaWNmb3JtPjwvbmctY29udGFpbmVyPlxuPC9kaXY+XG48bGliLWpzb24tdmlldyAqbmdJZj1cInNob3dKc29uVmlldyAmJiAhaGlkZUNvbmZpZ0pTT05cIiAoZGF0YUNoYW5nZSk9XCJqc29uRGF0YUNoYW5nZWREZWJvdW5jZWQoJGV2ZW50KVwiIFsoZGF0YSldPVwiY29uZmlnRGF0YVwiPjwvbGliLWpzb24tdmlldz5cbjxsaWItanNvbi12aWV3ICpuZ0lmPVwic2hvd0pzb25WaWV3ICYmIGhpZGVDb25maWdKU09OXCIgWyhkYXRhKV09XCJjb25maWdEYXRhXCI+PC9saWItanNvbi12aWV3PiJdfQ==
|
package/esm2022/lib/features/dynamic-widgets/checkbox-list/checkbox-list-input.component.mjs
CHANGED
|
@@ -31,6 +31,7 @@ class CheckboxListInputComponent {
|
|
|
31
31
|
this.error = '';
|
|
32
32
|
this.fieldValueChange = new EventEmitter();
|
|
33
33
|
this.valueChange = new Subject();
|
|
34
|
+
this._isValid = true;
|
|
34
35
|
}
|
|
35
36
|
set fieldName(name) {
|
|
36
37
|
this._fieldName = name;
|
|
@@ -78,9 +79,12 @@ class CheckboxListInputComponent {
|
|
|
78
79
|
this.valueChange.next(this._fieldValue);
|
|
79
80
|
});
|
|
80
81
|
}
|
|
82
|
+
setIsValid(isValid) {
|
|
83
|
+
this._isValid = isValid;
|
|
84
|
+
}
|
|
81
85
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CheckboxListInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
82
86
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: CheckboxListInputComponent, selector: "lib-checkbox-list-input", inputs: { fieldName: "fieldName", fieldValue: "fieldValue", placeholder: "placeholder", parentage: "parentage", valueList: "valueList", labelColor: "labelColor", fieldClass: "fieldClass", error: "error" }, outputs: { fieldValueChange: "fieldValueChange" }, ngImport: i0, template: `
|
|
83
|
-
<div [ngClass]="fieldClass">
|
|
87
|
+
<div [ngClass]="fieldClass + (!_isValid ? ' invalid' : '')">
|
|
84
88
|
<label [ngStyle]="{'color': labelColor}">{{_fieldName}}</label>
|
|
85
89
|
<div *ngFor="let item of items">
|
|
86
90
|
<input type="checkbox"
|
|
@@ -97,7 +101,7 @@ export { CheckboxListInputComponent };
|
|
|
97
101
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CheckboxListInputComponent, decorators: [{
|
|
98
102
|
type: Component,
|
|
99
103
|
args: [{ selector: 'lib-checkbox-list-input', template: `
|
|
100
|
-
<div [ngClass]="fieldClass">
|
|
104
|
+
<div [ngClass]="fieldClass + (!_isValid ? ' invalid' : '')">
|
|
101
105
|
<label [ngStyle]="{'color': labelColor}">{{_fieldName}}</label>
|
|
102
106
|
<div *ngFor="let item of items">
|
|
103
107
|
<input type="checkbox"
|
|
@@ -128,4 +132,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
128
132
|
}], fieldValueChange: [{
|
|
129
133
|
type: Output
|
|
130
134
|
}] } });
|
|
131
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
135
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3gtbGlzdC1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy96aXRpLWNvbnNvbGUtbGliL3NyYy9saWIvZmVhdHVyZXMvZHluYW1pYy13aWRnZXRzL2NoZWNrYm94LWxpc3QvY2hlY2tib3gtbGlzdC1pbnB1dC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0VBY0U7QUFFRixPQUFPLEVBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3JFLE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDN0IsT0FBTyxFQUFDLEtBQUssRUFBRSxPQUFPLEVBQUMsTUFBTSxRQUFRLENBQUM7OztBQUV0QyxNQWlCYSwwQkFBMEI7SUFqQnZDO1FBa0JFLFVBQUssR0FBVSxFQUFFLENBQUM7UUFDbEIsZUFBVSxHQUFHLGFBQWEsQ0FBQztRQUMzQixZQUFPLEdBQUcsV0FBVyxDQUFDO1FBS3RCLGdCQUFXLEdBQWEsRUFBRSxDQUFDO1FBUWxCLGdCQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLGNBQVMsR0FBYSxFQUFFLENBQUM7UUFJekIsZUFBVSxHQUFHLFNBQVMsQ0FBQztRQUN2QixlQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLFVBQUssR0FBRyxFQUFFLENBQUM7UUFDVixxQkFBZ0IsR0FBRyxJQUFJLFlBQVksRUFBWSxDQUFDO1FBQzFELGdCQUFXLEdBQUcsSUFBSSxPQUFPLEVBQWEsQ0FBQztRQW9DdkMsYUFBUSxHQUFHLElBQUksQ0FBQztLQUlqQjtJQTdEQyxJQUFhLFNBQVMsQ0FBQyxJQUFZO1FBQ2pDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDdkQsQ0FBQztJQUVELElBQWEsVUFBVSxDQUFDLElBQUk7UUFDMUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7UUFDeEIsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUNELElBQUksVUFBVTtRQUNaLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUMxQixDQUFDO0lBR0QsSUFBYSxTQUFTLENBQUMsSUFBYztRQUNuQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDakMsQ0FBQztJQU9ELGtCQUFrQjtRQUNoQixJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUU7WUFDN0IsT0FBTztTQUNSO1FBQ0QsSUFBSSxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUMzQixJQUFJLE9BQU8sR0FBRyxLQUFLLENBQUM7WUFDcEIsSUFBSSxDQUFDLFdBQVcsRUFBRSxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtnQkFDaEMsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLEdBQUcsRUFBRTtvQkFDckIsT0FBTyxHQUFHLElBQUksQ0FBQztpQkFDaEI7WUFDSCxDQUFDLENBQUMsQ0FBQztZQUNILElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1FBQ3pCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELG1CQUFtQixDQUFDLElBQWM7UUFDaEMsTUFBTSxLQUFLLEdBQVUsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDZixLQUFLLENBQUMsSUFBSSxDQUFFLEVBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFDLENBQUMsQ0FBQztRQUN6QyxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0lBQ3JCLENBQUM7SUFFRCxjQUFjO1FBQ1osS0FBSyxDQUFDLEdBQUcsRUFBRTtZQUNULElBQUksQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUN4QixJQUFHLElBQUksQ0FBQyxPQUFPO29CQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNwRCxDQUFDLENBQUMsQ0FBQztZQUNILElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQzdDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUMxQyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFHTSxVQUFVLENBQUMsT0FBTztRQUN2QixJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQztJQUMxQixDQUFDOytHQWhFVSwwQkFBMEI7bUdBQTFCLDBCQUEwQixnVUFmM0I7Ozs7Ozs7Ozs7OztHQVlUOztTQUdVLDBCQUEwQjs0RkFBMUIsMEJBQTBCO2tCQWpCdEMsU0FBUzsrQkFDRSx5QkFBeUIsWUFDekI7Ozs7Ozs7Ozs7OztHQVlUOzhCQU9ZLFNBQVM7c0JBQXJCLEtBQUs7Z0JBS08sVUFBVTtzQkFBdEIsS0FBSztnQkFPRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ08sU0FBUztzQkFBckIsS0FBSztnQkFHRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNJLGdCQUFnQjtzQkFBekIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gICAgQ29weXJpZ2h0IE5ldEZvdW5kcnkgSW5jLlxuXG4gICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cbiAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbmltcG9ydCB7Q29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtTdWJqZWN0fSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHtkZWZlciwgaXNFbXB0eX0gZnJvbSBcImxvZGFzaFwiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItY2hlY2tib3gtbGlzdC1pbnB1dCcsXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBbbmdDbGFzc109XCJmaWVsZENsYXNzICsgKCFfaXNWYWxpZCA/ICcgaW52YWxpZCcgOiAnJylcIj5cbiAgICAgIDxsYWJlbCBbbmdTdHlsZV09XCJ7J2NvbG9yJzogbGFiZWxDb2xvcn1cIj57e19maWVsZE5hbWV9fTwvbGFiZWw+XG4gICAgICA8ZGl2ICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBpdGVtc1wiPlxuICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICBjbGFzcz1cImpzb25FbnRyeSBjaGVja2JveFwiXG4gICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnZXJyb3InOiBlcnJvcn1cIlxuICAgICAgICAgICAgICBbY2hlY2tlZF09XCJpdGVtLmNoZWNrZWRcIiAoY2xpY2spPVwiaXRlbS5jaGVja2VkPSFpdGVtLmNoZWNrZWQ7dXBkYXRlRmllbGRWYWwoKTtcIi8+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJib3hsYWJlbFwiPnt7aXRlbS5uYW1lfX08L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgKm5nSWY9XCJlcnJvclwiIGNsYXNzPVwiZXJyb3JcIj57e2Vycm9yfX08L2Rpdj5cbiAgICA8L2Rpdj5cbiAgYCxcbiAgc3R5bGVVcmxzOiBbJy4vY2hlY2tib3gtbGlzdC5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBDaGVja2JveExpc3RJbnB1dENvbXBvbmVudCB7XG4gIGl0ZW1zOiBhbnlbXSA9IFtdO1xuICBfZmllbGROYW1lID0gJ0ZpZWxkIExhYmVsJztcbiAgX2lkTmFtZSA9ICdmaWVsZG5hbWUnO1xuICBASW5wdXQoKSBzZXQgZmllbGROYW1lKG5hbWU6IHN0cmluZykge1xuICAgIHRoaXMuX2ZpZWxkTmFtZSA9IG5hbWU7XG4gICAgdGhpcy5faWROYW1lID0gbmFtZS5yZXBsYWNlKC9cXHMvZywgJycpLnRvTG93ZXJDYXNlKCk7XG4gIH1cbiAgX2ZpZWxkVmFsdWU6IHN0cmluZ1tdID0gW107XG4gIEBJbnB1dCgpIHNldCBmaWVsZFZhbHVlKHZhbHMpIHtcbiAgICB0aGlzLl9maWVsZFZhbHVlID0gdmFscztcbiAgICB0aGlzLnVwZGF0ZUNoZWNrZWRJdGVtcygpO1xuICB9XG4gIGdldCBmaWVsZFZhbHVlKCk6c3RyaW5nIFtdIHtcbiAgICByZXR1cm4gdGhpcy5fZmllbGRWYWx1ZTtcbiAgfVxuICBASW5wdXQoKSBwbGFjZWhvbGRlciA9ICcnO1xuICBASW5wdXQoKSBwYXJlbnRhZ2U6IHN0cmluZ1tdID0gW107XG4gIEBJbnB1dCgpIHNldCB2YWx1ZUxpc3QobGlzdDogc3RyaW5nW10pIHtcbiAgICB0aGlzLnVwZGF0ZUNoZWNrYm94SXRlbXMobGlzdCk7XG4gIH1cbiAgQElucHV0KCkgbGFiZWxDb2xvciA9ICcjMDAwMDAwJztcbiAgQElucHV0KCkgZmllbGRDbGFzcyA9ICcnO1xuICBASW5wdXQoKSBlcnJvciA9ICcnO1xuICBAT3V0cHV0KCkgZmllbGRWYWx1ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nW10+KCk7XG4gIHZhbHVlQ2hhbmdlID0gbmV3IFN1YmplY3Q8c3RyaW5nW10+ICgpO1xuXG4gIHVwZGF0ZUNoZWNrZWRJdGVtcygpIHtcbiAgICBpZiAoaXNFbXB0eSh0aGlzLl9maWVsZFZhbHVlKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLml0ZW1zPy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICBsZXQgY2hlY2tlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5fZmllbGRWYWx1ZT8uZm9yRWFjaCgodmFsKSA9PiB7XG4gICAgICAgIGlmIChpdGVtLm5hbWUgPT09IHZhbCkge1xuICAgICAgICAgIGNoZWNrZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIGl0ZW0uY2hlY2tlZCA9IGNoZWNrZWQ7XG4gICAgfSk7XG4gIH1cblxuICB1cGRhdGVDaGVja2JveEl0ZW1zKGxpc3Q6IHN0cmluZ1tdKSB7XG4gICAgY29uc3QgaXRlbXM6IGFueVtdID0gW107XG4gICAgbGlzdC5mb3JFYWNoKHYgPT4ge1xuICAgICAgaXRlbXMucHVzaCAoe25hbWU6IHYsIGNoZWNrZWQ6IGZhbHNlfSk7XG4gICAgfSk7XG4gICAgdGhpcy5pdGVtcyA9IGl0ZW1zO1xuICB9XG5cbiAgdXBkYXRlRmllbGRWYWwoKSB7XG4gICAgZGVmZXIoKCkgPT4ge1xuICAgICAgdGhpcy5fZmllbGRWYWx1ZSA9IFtdO1xuICAgICAgdGhpcy5pdGVtcy5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICBpZihpdGVtLmNoZWNrZWQpIHRoaXMuX2ZpZWxkVmFsdWUucHVzaChpdGVtLm5hbWUpO1xuICAgICAgfSk7XG4gICAgICB0aGlzLmZpZWxkVmFsdWVDaGFuZ2UuZW1pdCh0aGlzLl9maWVsZFZhbHVlKTtcbiAgICAgIHRoaXMudmFsdWVDaGFuZ2UubmV4dCh0aGlzLl9maWVsZFZhbHVlKTtcbiAgICB9KTtcbiAgfVxuXG4gIF9pc1ZhbGlkID0gdHJ1ZTtcbiAgcHVibGljIHNldElzVmFsaWQoaXNWYWxpZCkge1xuICAgIHRoaXMuX2lzVmFsaWQgPSBpc1ZhbGlkO1xuICB9XG59XG5cbiJdfQ==
|
package/esm2022/lib/features/dynamic-widgets/forwarding-config/forwarding-config.component.mjs
CHANGED
|
@@ -46,6 +46,14 @@ class ForwardingConfigComponent {
|
|
|
46
46
|
this.allowedPortRangesChange = new EventEmitter();
|
|
47
47
|
this.allowedProtocolsChange = new EventEmitter();
|
|
48
48
|
this.errors = {};
|
|
49
|
+
this.props = [
|
|
50
|
+
{ key: 'allowedAddresses', value: undefined },
|
|
51
|
+
{ key: 'allowedPortRanges', value: undefined },
|
|
52
|
+
{ key: 'forwardPort', value: undefined },
|
|
53
|
+
{ key: 'forwardProtocol', value: undefined },
|
|
54
|
+
{ key: 'forwardAddress', value: undefined },
|
|
55
|
+
{ key: 'allowedProtocols', value: undefined },
|
|
56
|
+
];
|
|
49
57
|
}
|
|
50
58
|
forwardProtocolToggled(event) {
|
|
51
59
|
if (!this.forwardProtocol) {
|
|
@@ -119,6 +127,19 @@ class ForwardingConfigComponent {
|
|
|
119
127
|
}
|
|
120
128
|
return isEmpty(this.errors) && papIsValid;
|
|
121
129
|
}
|
|
130
|
+
setValidationErrors(propertyPath = '', validationErrors) {
|
|
131
|
+
this.props.forEach((prop) => {
|
|
132
|
+
const hasValidationError = validationErrors?.some((error) => {
|
|
133
|
+
let pathToMach = error.instancePath;
|
|
134
|
+
if (!isEmpty(error?.params?.missingProperty)) {
|
|
135
|
+
pathToMach += '/' + error?.params?.missingProperty;
|
|
136
|
+
}
|
|
137
|
+
return pathToMach === propertyPath + '/' + prop.key;
|
|
138
|
+
});
|
|
139
|
+
this.errors[prop.key] = hasValidationError;
|
|
140
|
+
});
|
|
141
|
+
this.papComponent.setValidationErrors(propertyPath, validationErrors);
|
|
142
|
+
}
|
|
122
143
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ForwardingConfigComponent, deps: [{ token: i1.ForwardingConfigService }, { token: i2.ValidationService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
123
144
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ForwardingConfigComponent, selector: "lib-forwarding-config", inputs: { protocol: "protocol", address: "address", port: "port", forwardProtocol: "forwardProtocol", forwardAddress: "forwardAddress", forwardPort: "forwardPort", allowedAddresses: "allowedAddresses", allowedPortRanges: "allowedPortRanges", allowedProtocols: "allowedProtocols" }, outputs: { protocolChange: "protocolChange", addressChange: "addressChange", portChange: "portChange", forwardProtocolChange: "forwardProtocolChange", forwardAddressChange: "forwardAddressChange", forwardPortChange: "forwardPortChange", allowedAddressesChange: "allowedAddressesChange", allowedPortRangesChange: "allowedPortRangesChange", allowedProtocolsChange: "allowedProtocolsChange" }, viewQueries: [{ propertyName: "papComponent", first: true, predicate: ["papComponent"], descendants: true }], ngImport: i0, template: "<div class=\"forwarding-config-container\">\n <lib-protocol-address-port-input\n [showProtocol]=\"true\"\n [showAddress]=\"true\"\n [showHostName]=\"false\"\n [showPort]=\"true\"\n [disableProtocol]=\"forwardProtocol\"\n [disableAddress]=\"forwardAddress\"\n [disablePort]=\"forwardPort\"\n [(protocol)]=\"protocol\"\n [(address)]=\"address\"\n [(port)]=\"port\"\n #papComponent\n ></lib-protocol-address-port-input>\n <div class=\"forwarding-config-toggles\">\n <lib-boolean-toggle-input\n [fieldName]=\"'FORWARD PROTOCOL'\"\n [(fieldValue)]=\"forwardProtocol\"\n (fieldValueChange)=\"forwardProtocolToggled($event)\"\n >\n </lib-boolean-toggle-input>\n <lib-boolean-toggle-input\n [fieldName]=\"'FORWARD ADDRESS'\"\n [(fieldValue)]=\"forwardAddress\"\n (fieldValueChange)=\"forwardAddressToggled($event)\"\n >\n </lib-boolean-toggle-input>\n <lib-boolean-toggle-input\n [fieldName]=\"'FORWARD PORT'\"\n [(fieldValue)]=\"forwardPort\"\n (fieldValueChange)=\"forwardPortToggled($event)\"\n >\n </lib-boolean-toggle-input>\n </div>\n <div class=\"forwarding-config-allowed-inputs\">\n <lib-checkbox-list-input\n *ngIf=\"forwardProtocol\"\n [ngClass]=\"{invalid: errors['allowedProtocols']}\"\n [fieldName]=\"'ALLOWED PROTOCOLS'\"\n [valueList]=\"['tcp', 'udp']\"\n [(fieldValue)]=\"allowedProtocols\"\n >\n </lib-checkbox-list-input>\n <lib-text-list-input\n *ngIf=\"forwardAddress\"\n [ngClass]=\"{invalid: errors['allowedAddresses']}\"\n [fieldName]=\"'ALLOWED ADDRESSES'\"\n [placeholder]=\"'10.10.0.0/24 domain.com'\"\n [(fieldValue)]=\"allowedAddresses\"\n [labelColor]=\"'#000000'\"\n >\n </lib-text-list-input>\n <lib-text-list-input\n *ngIf=\"forwardPort\"\n [ngClass]=\"{invalid: errors['allowedPortRanges']}\"\n [fieldName]=\"'ALLOWED PORT RANGES'\"\n [placeholder]=\"'80 120-125 443 8080'\"\n [(fieldValue)]=\"allowedPortRanges\"\n [labelColor]=\"'#000000'\"\n [fieldClass]=\"errors['allowedPortRanges'] ? 'error' : ''\"\n (fieldValueChange)=\"validatePortRanges()\"\n >\n </lib-text-list-input>\n </div>\n</div>\n", styles: [".forwarding-config-container{display:flex;flex-direction:column;align-items:center;justify-content:flex-start}.forwarding-config-container .forwarding-config-toggles{display:flex;flex-direction:row;align-items:center;justify-content:space-between;gap:50px}.forwarding-config-container .forwarding-config-allowed-inputs{display:flex;flex-direction:column;align-items:flex-start;justify-content:flex-start;width:100%}.forwarding-config-container *{width:100%}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.BooleanToggleInputComponent, selector: "lib-boolean-toggle-input", inputs: ["fieldName", "fieldValue", "parentage", "labelColor", "fieldClass", "error"], outputs: ["fieldValueChange"] }, { kind: "component", type: i5.TextListInputComponent, selector: "lib-text-list-input", inputs: ["fieldName", "fieldValue", "placeholder", "parentage", "labelColor", "fieldClass", "error"], outputs: ["fieldValueChange"] }, { kind: "component", type: i6.CheckboxListInputComponent, selector: "lib-checkbox-list-input", inputs: ["fieldName", "fieldValue", "placeholder", "parentage", "valueList", "labelColor", "fieldClass", "error"], outputs: ["fieldValueChange"] }, { kind: "component", type: i7.ProtocolAddressPortInputComponent, selector: "lib-protocol-address-port-input", inputs: ["protocolList", "showProtocol", "showAddress", "showHostName", "showPort", "disableProtocol", "disableAddress", "disableHostName", "disablePort", "protocol", "address", "hostname", "port", "parentage", "labelColor", "labelPrefix", "fieldClass", "error"], outputs: ["fieldValueChange", "portChange", "addressChange", "hostnameChange", "protocolChange"] }] }); }
|
|
124
145
|
}
|
|
@@ -166,4 +187,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
166
187
|
type: ViewChild,
|
|
167
188
|
args: ["papComponent"]
|
|
168
189
|
}] } });
|
|
169
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9yd2FyZGluZy1jb25maWcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMveml0aS1jb25zb2xlLWxpYi9zcmMvbGliL2ZlYXR1cmVzL2R5bmFtaWMtd2lkZ2V0cy9mb3J3YXJkaW5nLWNvbmZpZy9mb3J3YXJkaW5nLWNvbmZpZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy96aXRpLWNvbnNvbGUtbGliL3NyYy9saWIvZmVhdHVyZXMvZHluYW1pYy13aWRnZXRzL2ZvcndhcmRpbmctY29uZmlnL2ZvcndhcmRpbmctY29uZmlnLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztFQWNFO0FBRUYsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQW1CLE1BQU0sZUFBZSxDQUFDO0FBR2xHLE9BQU8sRUFBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBQyxNQUFNLFFBQVEsQ0FBQzs7Ozs7Ozs7O0FBRzdDLE1BS2EseUJBQXlCO0lBd0JwQyxZQUFvQixHQUE0QixFQUFVLGlCQUFvQztRQUExRSxRQUFHLEdBQUgsR0FBRyxDQUF5QjtRQUFVLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUF0QnJGLGFBQVEsR0FBVyxLQUFLLENBQUM7UUFDekIsWUFBTyxHQUFXLFNBQVMsQ0FBQztRQUM1QixTQUFJLEdBQVcsU0FBUyxDQUFDO1FBQ3pCLG9CQUFlLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLG1CQUFjLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLGdCQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLHFCQUFnQixHQUFRLFNBQVMsQ0FBQztRQUNsQyxzQkFBaUIsR0FBUSxTQUFTLENBQUM7UUFDbkMscUJBQWdCLEdBQVEsU0FBUyxDQUFDO1FBQ2pDLG1C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QUMsa0JBQWtCLEVBQUUsQ0FBQztTQUMzQjtRQUNELElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRTtZQUN2QixJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztTQUNqQztRQUNELE9BQU8sT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxVQUFVLENBQUM7SUFDNUMsQ0FBQzsrR0F0R1UseUJBQXlCO21HQUF6Qix5QkFBeUIsNDBCQzNCdEMsK2hGQWlFQTs7U0R0Q2EseUJBQXlCOzRGQUF6Qix5QkFBeUI7a0JBTHJDLFNBQVM7K0JBQ0UsdUJBQXVCOzhJQU14QixRQUFRO3NCQUFoQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0ksY0FBYztzQkFBdkIsTUFBTTtnQkFDRyxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLFVBQVU7c0JBQW5CLE1BQU07Z0JBQ0cscUJBQXFCO3NCQUE5QixNQUFNO2dCQUNHLG9CQUFvQjtzQkFBN0IsTUFBTTtnQkFDRyxpQkFBaUI7c0JBQTFCLE1BQU07Z0JBQ0csc0JBQXNCO3NCQUEvQixNQUFNO2dCQUNHLHVCQUF1QjtzQkFBaEMsTUFBTTtnQkFDRyxzQkFBc0I7c0JBQS9CLE1BQU07Z0JBSW9CLFlBQVk7c0JBQXRDLFNBQVM7dUJBQUMsY0FBYyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gICAgQ29weXJpZ2h0IE5ldEZvdW5kcnkgSW5jLlxuXG4gICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cbiAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbmltcG9ydCB7Q29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQsIFZpZXdDaGlsZCwgVmlld0NvbnRhaW5lclJlZn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0ZvcndhcmRpbmdDb25maWdTZXJ2aWNlfSBmcm9tIFwiLi9mb3J3YXJkaW5nLWNvbmZpZy5zZXJ2aWNlXCI7XG5pbXBvcnQge1ZhbGlkYXRpb25TZXJ2aWNlfSBmcm9tIFwiLi4vLi4vLi4vc2VydmljZXMvdmFsaWRhdGlvbi5zZXJ2aWNlXCI7XG5pbXBvcnQge2lzRW1wdHksIGlzTmlsLCB1bnNldH0gZnJvbSBcImxvZGFzaFwiO1xuaW1wb3J0IHtQcm90b2NvbEFkZHJlc3NQb3J0SW5wdXRDb21wb25lbnR9IGZyb20gXCIuLi9wcm90b2NvbC1hZGRyZXNzLXBvcnQvcHJvdG9jb2wtYWRkcmVzcy1wb3J0LWlucHV0LmNvbXBvbmVudFwiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItZm9yd2FyZGluZy1jb25maWcnLFxuICB0ZW1wbGF0ZVVybDogJy4vZm9yd2FyZGluZy1jb25maWcuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9mb3J3YXJkaW5nLWNvbmZpZy5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIEZvcndhcmRpbmdDb25maWdDb21wb25lbnQge1xuXG4gIEBJbnB1dCgpIHByb3RvY29sOiBzdHJpbmcgPSAndGNwJztcbiAgQElucHV0KCkgYWRkcmVzczogc3RyaW5nID0gdW5kZWZpbmVkO1xuICBASW5wdXQoKSBwb3J0OiBudW1iZXIgPSB1bmRlZmluZWQ7XG4gIEBJbnB1dCgpIGZvcndhcmRQcm90b2NvbCA9IGZhbHNlO1xuICBASW5wdXQoKSBmb3J3YXJkQWRkcmVzcyA9IGZhbHNlO1xuICBASW5wdXQoKSBmb3J3YXJkUG9ydCA9IGZhbHNlO1xuICBASW5wdXQoKSBhbGxvd2VkQWRkcmVzc2VzOiBhbnkgPSB1bmRlZmluZWQ7XG4gIEBJbnB1dCgpIGFsbG93ZWRQb3J0UmFuZ2VzOiBhbnkgPSB1bmRlZmluZWQ7XG4gIEBJbnB1dCgpIGFsbG93ZWRQcm90b2NvbHM6IGFueSA9IHVuZGVmaW5lZDtcbiAgQE91dHB1dCgpIHByb3RvY29sQ2hhbmdlOiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuICBAT3V0cHV0KCkgYWRkcmVzc0NoYW5nZTogRXZlbnRFbWl0dGVyPHN0cmluZz4gPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcbiAgQE91dHB1dCgpIHBvcnRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxudW1iZXI+ID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG4gIEBPdXRwdXQoKSBmb3J3YXJkUHJvdG9jb2xDaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBmb3J3YXJkQWRkcmVzc0NoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIGZvcndhcmRQb3J0Q2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgYWxsb3dlZEFkZHJlc3Nlc0NoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIGFsbG93ZWRQb3J0UmFuZ2VzQ2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgYWxsb3dlZFByb3RvY29sc0NoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBlcnJvcnMgPSB7fTtcblxuICBAVmlld0NoaWxkKFwicGFwQ29tcG9uZW50XCIpIHBhcENvbXBvbmVudDpQcm90b2NvbEFkZHJlc3NQb3J0SW5wdXRDb21wb25lbnQ7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc3ZjOiBGb3J3YXJkaW5nQ29uZmlnU2VydmljZSwgcHJpdmF0ZSB2YWxpZGF0aW9uU2VydmljZTogVmFsaWRhdGlvblNlcnZpY2UpIHt9XG5cbiAgZm9yd2FyZFByb3RvY29sVG9nZ2xlZChldmVudCkge1xuICAgIGlmICghdGhpcy5mb3J3YXJkUHJvdG9jb2wpIHtcbiAgICAgIHRoaXMuYWxsb3dlZFByb3RvY29scyA9IHVuZGVmaW5lZDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5wcm90b2NvbCA9IHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cblxuICBmb3J3YXJkQWRkcmVzc1RvZ2dsZWQoZXZlbnQpIHtcbiAgICBpZiAoIXRoaXMuZm9yd2FyZEFkZHJlc3MpIHtcbiAgICAgIHRoaXMuYWxsb3dlZEFkZHJlc3NlcyA9IHVuZGVmaW5lZDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5hZGRyZXNzID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gIGZvcndhcmRQb3J0VG9nZ2xlZChldmVudCkge1xuICAgIGlmICghdGhpcy5mb3J3YXJkUG9ydCkge1xuICAgICAgdGhpcy5hbGxvd2VkUG9ydFJhbmdlcyA9IHVuZGVmaW5lZDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5wb3J0ID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gIHNldFByb3BlcnRpZXMoZGF0YTogYW55KSB7XG4gICAgdGhpcy5mb3J3YXJkUG9ydCA9IGRhdGEuZm9yd2FyZFBvcnQ7XG4gICAgdGhpcy5mb3J3YXJkUHJvdG9jb2wgPSBkYXRhLmZvcndhcmRQcm90b2NvbDtcbiAgICB0aGlzLmZvcndhcmRBZGRyZXNzID0gZGF0YS5mb3J3YXJkQWRkcmVzcztcbiAgICB0aGlzLnByb3RvY29sID0gZGF0YS5wcm90b2NvbCA/IGRhdGEucHJvdG9jb2wgOiAndGNwJztcbiAgICB0aGlzLmFkZHJlc3MgPSBkYXRhLmFkZHJlc3M7XG4gICAgdGhpcy5wb3J0ID0gZGF0YS5wb3J0O1xuICAgIHRoaXMuYWxsb3dlZFByb3RvY29scyA9IGRhdGEuYWxsb3dlZFByb3RvY29scztcbiAgICB0aGlzLmFsbG93ZWRBZGRyZXNzZXMgPSBkYXRhLmFsbG93ZWRBZGRyZXNzZXM7XG4gICAgdGhpcy5zZXRBbGxvd2VkUG9ydFJhbmdlcyhkYXRhLmFsbG93ZWRQb3J0UmFuZ2VzKTtcbiAgICB0aGlzLnN2Yy52YWxpZGF0ZSh0aGlzLmFsbG93ZWRQb3J0UmFuZ2VzKTtcbiAgfVxuXG4gIGdldFByb3BlcnRpZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3ZjLmdldFByb3BlcnRpZXModGhpcy5wcm90b2NvbCwgdGhpcy5hZGRyZXNzLCB0aGlzLnBvcnQsIHRoaXMuZm9yd2FyZFByb3RvY29sLCB0aGlzLmZvcndhcmRBZGRyZXNzLCB0aGlzLmZvcndhcmRQb3J0LCB0aGlzLmFsbG93ZWRQcm90b2NvbHMsIHRoaXMuYWxsb3dlZEFkZHJlc3NlcywgdGhpcy5hbGxvd2VkUG9ydFJhbmdlcyk7XG4gIH1cblxuICB2YWxpZGF0ZUFsbG93ZWRBZGRyZXNzZXMoKSB7XG4gICAgdW5zZXQodGhpcy5lcnJvcnMsICdhbGxvd2VkQWRkcmVzc2VzJyk7XG4gICAgaWYgKGlzTmlsKHRoaXMuYWxsb3dlZEFkZHJlc3NlcykgfHwgaXNFbXB0eSh0aGlzLmFsbG93ZWRBZGRyZXNzZXMpKSB7XG4gICAgICB0aGlzLmVycm9yc1snYWxsb3dlZEFkZHJlc3NlcyddID0gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuZXJyb3JzWydhbGxvd2VkQWRkcmVzc2VzJ107XG4gIH1cblxuICB2YWxpZGF0ZVBvcnRSYW5nZXMoKSB7XG4gICAgdW5zZXQodGhpcy5lcnJvcnMsICdhbGxvd2VkUG9ydFJhbmdlcycpO1xuICAgIGNvbnN0IHBhcnNlZFJhbmdlcyA9IHRoaXMudmFsaWRhdGlvblNlcnZpY2UucGFyc2VQb3J0UmFuZ2VzKHRoaXMuYWxsb3dlZFBvcnRSYW5nZXMpO1xuICAgIGlmIChpc05pbCh0aGlzLmFsbG93ZWRQb3J0UmFuZ2VzKSB8fCBpc0VtcHR5KHRoaXMuYWxsb3dlZFBvcnRSYW5nZXMpIHx8IHRoaXMudmFsaWRhdGlvblNlcnZpY2UudmFsaWRhdGVQb3J0UmFuZ2VzKHBhcnNlZFJhbmdlcykpIHtcbiAgICAgIHRoaXMuZXJyb3JzWydhbGxvd2VkUG9ydFJhbmdlcyddID0gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuZXJyb3JzWydhbGxvd2VkUG9ydFJhbmdlcyddO1xuICB9XG5cbiAgc2V0QWxsb3dlZFBvcnRSYW5nZXMocmFuZ2VzKSB7XG4gICAgaWYgKCFyYW5nZXMgfHwgaXNFbXB0eShyYW5nZXMpKSB7XG4gICAgICB0aGlzLmFsbG93ZWRQb3J0UmFuZ2VzID0gdW5kZWZpbmVkO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmFsbG93ZWRQb3J0UmFuZ2VzID0gdGhpcy52YWxpZGF0aW9uU2VydmljZS5jb21iaW5lUG9ydFJhbmdlcyhyYW5nZXMpO1xuICB9XG5cbiAgaXNWYWxpZCgpIHtcbiAgICB0aGlzLmVycm9ycyA9IHt9O1xuICAgIGNvbnN0IHBhcElzVmFsaWQgPSB0aGlzLnBhcENvbXBvbmVudC5pc1ZhbGlkKCk7XG4gICAgaWYgKHRoaXMuZm9yd2FyZFBvcnQpIHtcbiAgICAgIHRoaXMudmFsaWRhdGVQb3J0UmFuZ2VzKCk7XG4gICAgfVxuICAgIGlmICh0aGlzLmZvcndhcmRBZGRyZXNzKSB7XG4gICAgICB0aGlzLnZhbGlkYXRlQWxsb3dlZEFkZHJlc3NlcygpO1xuICAgIH1cbiAgICByZXR1cm4gaXNFbXB0eSh0aGlzLmVycm9ycykgJiYgcGFwSXNWYWxpZDtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImZvcndhcmRpbmctY29uZmlnLWNvbnRhaW5lclwiPlxuICAgIDxsaWItcHJvdG9jb2wtYWRkcmVzcy1wb3J0LWlucHV0XG4gICAgICAgIFtzaG93UHJvdG9jb2xdPVwidHJ1ZVwiXG4gICAgICAgIFtzaG93QWRkcmVzc109XCJ0cnVlXCJcbiAgICAgICAgW3Nob3dIb3N0TmFtZV09XCJmYWxzZVwiXG4gICAgICAgIFtzaG93UG9ydF09XCJ0cnVlXCJcbiAgICAgICAgW2Rpc2FibGVQcm90b2NvbF09XCJmb3J3YXJkUHJvdG9jb2xcIlxuICAgICAgICBbZGlzYWJsZUFkZHJlc3NdPVwiZm9yd2FyZEFkZHJlc3NcIlxuICAgICAgICBbZGlzYWJsZVBvcnRdPVwiZm9yd2FyZFBvcnRcIlxuICAgICAgICBbKHByb3RvY29sKV09XCJwcm90b2NvbFwiXG4gICAgICAgIFsoYWRkcmVzcyldPVwiYWRkcmVzc1wiXG4gICAgICAgIFsocG9ydCldPVwicG9ydFwiXG4gICAgICAgICNwYXBDb21wb25lbnRcbiAgICA+PC9saWItcHJvdG9jb2wtYWRkcmVzcy1wb3J0LWlucHV0PlxuICAgIDxkaXYgY2xhc3M9XCJmb3J3YXJkaW5nLWNvbmZpZy10b2dnbGVzXCI+XG4gICAgICAgIDxsaWItYm9vbGVhbi10b2dnbGUtaW5wdXRcbiAgICAgICAgICAgICAgICBbZmllbGROYW1lXT1cIidGT1JXQVJEIFBST1RPQ09MJ1wiXG4gICAgICAgICAgICAgICAgWyhmaWVsZFZhbHVlKV09XCJmb3J3YXJkUHJvdG9jb2xcIlxuICAgICAgICAgICAgICAgIChmaWVsZFZhbHVlQ2hhbmdlKT1cImZvcndhcmRQcm90b2NvbFRvZ2dsZWQoJGV2ZW50KVwiXG4gICAgICAgID5cbiAgICAgICAgPC9saWItYm9vbGVhbi10b2dnbGUtaW5wdXQ+XG4gICAgICAgIDxsaWItYm9vbGVhbi10b2dnbGUtaW5wdXRcbiAgICAgICAgICAgICAgICBbZmllbGROYW1lXT1cIidGT1JXQVJEIEFERFJFU1MnXCJcbiAgICAgICAgICAgICAgICBbKGZpZWxkVmFsdWUpXT1cImZvcndhcmRBZGRyZXNzXCJcbiAgICAgICAgICAgICAgICAoZmllbGRWYWx1ZUNoYW5nZSk9XCJmb3J3YXJkQWRkcmVzc1RvZ2dsZWQoJGV2ZW50KVwiXG4gICAgICAgID5cbiAgICAgICAgPC9saWItYm9vbGVhbi10b2dnbGUtaW5wdXQ+XG4gICAgICAgIDxsaWItYm9vbGVhbi10b2dnbGUtaW5wdXRcbiAgICAgICAgICAgICAgICBbZmllbGROYW1lXT1cIidGT1JXQVJEIFBPUlQnXCJcbiAgICAgICAgICAgICAgICBbKGZpZWxkVmFsdWUpXT1cImZvcndhcmRQb3J0XCJcbiAgICAgICAgICAgICAgICAoZmllbGRWYWx1ZUNoYW5nZSk9XCJmb3J3YXJkUG9ydFRvZ2dsZWQoJGV2ZW50KVwiXG4gICAgICAgID5cbiAgICAgICAgPC9saWItYm9vbGVhbi10b2dnbGUtaW5wdXQ+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImZvcndhcmRpbmctY29uZmlnLWFsbG93ZWQtaW5wdXRzXCI+XG4gICAgICAgIDxsaWItY2hlY2tib3gtbGlzdC1pbnB1dFxuICAgICAgICAgICAgKm5nSWY9XCJmb3J3YXJkUHJvdG9jb2xcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwie2ludmFsaWQ6IGVycm9yc1snYWxsb3dlZFByb3RvY29scyddfVwiXG4gICAgICAgICAgICBbZmllbGROYW1lXT1cIidBTExPV0VEIFBST1RPQ09MUydcIlxuICAgICAgICAgICAgW3ZhbHVlTGlzdF09XCJbJ3RjcCcsICd1ZHAnXVwiXG4gICAgICAgICAgICBbKGZpZWxkVmFsdWUpXT1cImFsbG93ZWRQcm90b2NvbHNcIlxuICAgICAgICA+XG4gICAgICAgIDwvbGliLWNoZWNrYm94LWxpc3QtaW5wdXQ+XG4gICAgICAgIDxsaWItdGV4dC1saXN0LWlucHV0XG4gICAgICAgICAgICAqbmdJZj1cImZvcndhcmRBZGRyZXNzXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntpbnZhbGlkOiBlcnJvcnNbJ2FsbG93ZWRBZGRyZXNzZXMnXX1cIlxuICAgICAgICAgICAgW2ZpZWxkTmFtZV09XCInQUxMT1dFRCBBRERSRVNTRVMnXCJcbiAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInMTAuMTAuMC4wLzI0IGRvbWFpbi5jb20nXCJcbiAgICAgICAgICAgIFsoZmllbGRWYWx1ZSldPVwiYWxsb3dlZEFkZHJlc3Nlc1wiXG4gICAgICAgICAgICBbbGFiZWxDb2xvcl09XCInIzAwMDAwMCdcIlxuICAgICAgICA+XG4gICAgICAgIDwvbGliLXRleHQtbGlzdC1pbnB1dD5cbiAgICAgICAgPGxpYi10ZXh0LWxpc3QtaW5wdXRcbiAgICAgICAgICAgICpuZ0lmPVwiZm9yd2FyZFBvcnRcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwie2ludmFsaWQ6IGVycm9yc1snYWxsb3dlZFBvcnRSYW5nZXMnXX1cIlxuICAgICAgICAgICAgW2ZpZWxkTmFtZV09XCInQUxMT1dFRCBQT1JUIFJBTkdFUydcIlxuICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIic4MCAxMjAtMTI1IDQ0MyA4MDgwJ1wiXG4gICAgICAgICAgICBbKGZpZWxkVmFsdWUpXT1cImFsbG93ZWRQb3J0UmFuZ2VzXCJcbiAgICAgICAgICAgIFtsYWJlbENvbG9yXT1cIicjMDAwMDAwJ1wiXG4gICAgICAgICAgICBbZmllbGRDbGFzc109XCJlcnJvcnNbJ2FsbG93ZWRQb3J0UmFuZ2VzJ10gPyAnZXJyb3InIDogJydcIlxuICAgICAgICAgICAgKGZpZWxkVmFsdWVDaGFuZ2UpPVwidmFsaWRhdGVQb3J0UmFuZ2VzKClcIlxuICAgICAgICA+XG4gICAgICAgIDwvbGliLXRleHQtbGlzdC1pbnB1dD5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
190
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9yd2FyZGluZy1jb25maWcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMveml0aS1jb25zb2xlLWxpYi9zcmMvbGliL2ZlYXR1cmVzL2R5bmFtaWMtd2lkZ2V0cy9mb3J3YXJkaW5nLWNvbmZpZy9mb3J3YXJkaW5nLWNvbmZpZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy96aXRpLWNvbnNvbGUtbGliL3NyYy9saWIvZmVhdHVyZXMvZHluYW1pYy13aWRnZXRzL2ZvcndhcmRpbmctY29uZmlnL2ZvcndhcmRpbmctY29uZmlnLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztFQWNFO0FBRUYsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQW1CLE1BQU0sZUFBZSxDQUFDO0FBR2xHLE9BQU8sRUFBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBQyxNQUFNLFFBQVEsQ0FBQzs7Ozs7Ozs7O0FBRzdDLE1BS2EseUJBQXlCO0lBd0JwQyxZQUFvQixHQUE0QixFQUFVLGlCQUFvQztRQUExRSxRQUFHLEdBQUgsR0FBRyxDQUF5QjtRQUFVLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUF0QnJGLGFBQVEsR0FBVyxLQUFLLENBQUM7UUFDekIsWUFBTyxHQUFXLFNBQVMsQ0FBQztRQUM1QixTQUFJLEdBQVcsU0FBUyxDQUFDO1FBQ3pCLG9CQUFlLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLG1CQUFjLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLGdCQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLHFCQUFnQixHQUFRLFNBQVMsQ0FBQztRQUNsQyxzQkFBaUIsR0FBUSxTQUFTLENBQUM7UUFDbkMscUJBQWdCLEdBQVEsU0FBUyxDQUFDO1FBQ2pDLG1CQUFjLEdBQXlCLElBQUksWUFBWSxFQUFVLENBQUM7UUFDbEUsa0JBQWEsR0FBeUIsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUNqRSxlQUFVLEdBQXlCLElBQUksWUFBWSxFQUFVLENBQUM7UUFDOUQsMEJBQXFCLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7UUFDbkUseUJBQW9CLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7UUFDbEUsc0JBQWlCLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7UUFDL0QsMkJBQXNCLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7UUFDcEUsNEJBQXVCLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7UUFDckUsMkJBQXNCLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7UUFFOUUsV0FBTSxHQUFHLEVBQUUsQ0FBQztRQTBDWixVQUFLLEdBQUc7WUFDTixFQUFFLEdBQUcsRUFBRSxrQkFBa0IsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO1lBQzdDLEVBQUUsR0FBRyxFQUFFLG1CQUFtQixFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUU7WUFDOUMsRUFBRSxHQUFHLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUU7WUFDeEMsRUFBRSxHQUFHLEVBQUUsaUJBQWlCLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRTtZQUM1QyxFQUFFLEdBQUcsRUFBRSxnQkFBZ0IsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO1lBQzNDLEVBQUUsR0FBRyxFQUFFLGtCQUFrQixFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUU7U0FDOUMsQ0FBQztJQTlDK0YsQ0FBQztJQUVsRyxzQkFBc0IsQ0FBQyxLQUFLO1FBQzFCLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFO1lBQ3pCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxTQUFTLENBQUM7U0FDbkM7YUFBTTtZQUNMLElBQUksQ0FBQyxRQUFRLEdBQUcsU0FBUyxDQUFDO1NBQzNCO0lBQ0gsQ0FBQztJQUVELHFCQUFxQixDQUFDLEtBQUs7UUFDekIsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDeEIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLFNBQVMsQ0FBQztTQUNuQzthQUFNO1lBQ0wsSUFBSSxDQUFDLE9BQU8sR0FBRyxTQUFTLENBQUM7U0FDMUI7SUFDSCxDQUFDO0lBRUQsa0JBQWtCLENBQUMsS0FBSztRQUN0QixJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNyQixJQUFJLENBQUMsaUJBQWlCLEdBQUcsU0FBUyxDQUFDO1NBQ3BDO2FBQU07WUFDTCxJQUFJLENBQUMsSUFBSSxHQUFHLFNBQVMsQ0FBQztTQUN2QjtJQUNILENBQUM7SUFFRCxhQUFhLENBQUMsSUFBUztRQUNyQixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7UUFDcEMsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDO1FBQzVDLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQztRQUMxQyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUN0RCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7UUFDNUIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7UUFDOUMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztRQUM5QyxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDbEQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDNUMsQ0FBQztJQVdELGFBQWE7UUFDWCxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDM00sQ0FBQztJQUVELHdCQUF3QjtRQUN0QixLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO1FBQ3ZDLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsRUFBRTtZQUNsRSxJQUFJLENBQUMsTUFBTSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsSUFBSSxDQUFDO1NBQ3hDO1FBQ0QsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVELGtCQUFrQjtRQUNoQixLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO1FBQ3hDLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDcEYsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZLENBQUMsRUFBRTtZQUMvSCxJQUFJLENBQUMsTUFBTSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsSUFBSSxDQUFDO1NBQ3pDO1FBQ0QsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVELG9CQUFvQixDQUFDLE1BQU07UUFDekIsSUFBSSxDQUFDLE1BQU0sSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDOUIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLFNBQVMsQ0FBQztZQUNuQyxPQUFPO1NBQ1I7UUFDRCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzVFLENBQUM7SUFFRCxPQUFPO1FBQ0wsSUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFDakIsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUMvQyxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDcEIsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7U0FDM0I7UUFDRCxJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDdkIsSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7U0FDakM7UUFDRCxPQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksVUFBVSxDQUFDO0lBQzVDLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxZQUFZLEdBQUcsRUFBRSxFQUFFLGdCQUF1QjtRQUM1RCxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQzFCLE1BQU0sa0JBQWtCLEdBQVEsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7Z0JBQy9ELElBQUksVUFBVSxHQUFHLEtBQUssQ0FBQyxZQUFZLENBQUM7Z0JBQ3BDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxlQUFlLENBQUMsRUFBRTtvQkFDNUMsVUFBVSxJQUFJLEdBQUcsR0FBRyxLQUFLLEVBQUUsTUFBTSxFQUFFLGVBQWUsQ0FBQTtpQkFDbkQ7Z0JBQ0QsT0FBTyxVQUFVLEtBQUssWUFBWSxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDO1lBQ3RELENBQUMsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsa0JBQWtCLENBQUM7UUFDN0MsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsWUFBWSxDQUFDLG1CQUFtQixDQUFDLFlBQVksRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ3hFLENBQUM7K0dBN0hVLHlCQUF5QjttR0FBekIseUJBQXlCLDQwQkMzQnRDLCtoRkFpRUE7O1NEdENhLHlCQUF5Qjs0RkFBekIseUJBQXlCO2tCQUxyQyxTQUFTOytCQUNFLHVCQUF1Qjs4SUFNeEIsUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNJLGNBQWM7c0JBQXZCLE1BQU07Z0JBQ0csYUFBYTtzQkFBdEIsTUFBTTtnQkFDRyxVQUFVO3NCQUFuQixNQUFNO2dCQUNHLHFCQUFxQjtzQkFBOUIsTUFBTTtnQkFDRyxvQkFBb0I7c0JBQTdCLE1BQU07Z0JBQ0csaUJBQWlCO3NCQUExQixNQUFNO2dCQUNHLHNCQUFzQjtzQkFBL0IsTUFBTTtnQkFDRyx1QkFBdUI7c0JBQWhDLE1BQU07Z0JBQ0csc0JBQXNCO3NCQUEvQixNQUFNO2dCQUlvQixZQUFZO3NCQUF0QyxTQUFTO3VCQUFDLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICAgIENvcHlyaWdodCBOZXRGb3VuZHJ5IEluYy5cblxuICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG4gICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG5pbXBvcnQge0NvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0LCBWaWV3Q2hpbGQsIFZpZXdDb250YWluZXJSZWZ9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtGb3J3YXJkaW5nQ29uZmlnU2VydmljZX0gZnJvbSBcIi4vZm9yd2FyZGluZy1jb25maWcuc2VydmljZVwiO1xuaW1wb3J0IHtWYWxpZGF0aW9uU2VydmljZX0gZnJvbSBcIi4uLy4uLy4uL3NlcnZpY2VzL3ZhbGlkYXRpb24uc2VydmljZVwiO1xuaW1wb3J0IHtpc0VtcHR5LCBpc05pbCwgdW5zZXR9IGZyb20gXCJsb2Rhc2hcIjtcbmltcG9ydCB7UHJvdG9jb2xBZGRyZXNzUG9ydElucHV0Q29tcG9uZW50fSBmcm9tIFwiLi4vcHJvdG9jb2wtYWRkcmVzcy1wb3J0L3Byb3RvY29sLWFkZHJlc3MtcG9ydC1pbnB1dC5jb21wb25lbnRcIjtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbGliLWZvcndhcmRpbmctY29uZmlnJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2ZvcndhcmRpbmctY29uZmlnLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZm9yd2FyZGluZy1jb25maWcuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBGb3J3YXJkaW5nQ29uZmlnQ29tcG9uZW50IHtcblxuICBASW5wdXQoKSBwcm90b2NvbDogc3RyaW5nID0gJ3RjcCc7XG4gIEBJbnB1dCgpIGFkZHJlc3M6IHN0cmluZyA9IHVuZGVmaW5lZDtcbiAgQElucHV0KCkgcG9ydDogbnVtYmVyID0gdW5kZWZpbmVkO1xuICBASW5wdXQoKSBmb3J3YXJkUHJvdG9jb2wgPSBmYWxzZTtcbiAgQElucHV0KCkgZm9yd2FyZEFkZHJlc3MgPSBmYWxzZTtcbiAgQElucHV0KCkgZm9yd2FyZFBvcnQgPSBmYWxzZTtcbiAgQElucHV0KCkgYWxsb3dlZEFkZHJlc3NlczogYW55ID0gdW5kZWZpbmVkO1xuICBASW5wdXQoKSBhbGxvd2VkUG9ydFJhbmdlczogYW55ID0gdW5kZWZpbmVkO1xuICBASW5wdXQoKSBhbGxvd2VkUHJvdG9jb2xzOiBhbnkgPSB1bmRlZmluZWQ7XG4gIEBPdXRwdXQoKSBwcm90b2NvbENoYW5nZTogRXZlbnRFbWl0dGVyPHN0cmluZz4gPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcbiAgQE91dHB1dCgpIGFkZHJlc3NDaGFuZ2U6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gIEBPdXRwdXQoKSBwb3J0Q2hhbmdlOiBFdmVudEVtaXR0ZXI8bnVtYmVyPiA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuICBAT3V0cHV0KCkgZm9yd2FyZFByb3RvY29sQ2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgZm9yd2FyZEFkZHJlc3NDaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBmb3J3YXJkUG9ydENoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIGFsbG93ZWRBZGRyZXNzZXNDaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBhbGxvd2VkUG9ydFJhbmdlc0NoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIGFsbG93ZWRQcm90b2NvbHNDaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgZXJyb3JzID0ge307XG5cbiAgQFZpZXdDaGlsZChcInBhcENvbXBvbmVudFwiKSBwYXBDb21wb25lbnQ6UHJvdG9jb2xBZGRyZXNzUG9ydElucHV0Q29tcG9uZW50O1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHN2YzogRm9yd2FyZGluZ0NvbmZpZ1NlcnZpY2UsIHByaXZhdGUgdmFsaWRhdGlvblNlcnZpY2U6IFZhbGlkYXRpb25TZXJ2aWNlKSB7fVxuXG4gIGZvcndhcmRQcm90b2NvbFRvZ2dsZWQoZXZlbnQpIHtcbiAgICBpZiAoIXRoaXMuZm9yd2FyZFByb3RvY29sKSB7XG4gICAgICB0aGlzLmFsbG93ZWRQcm90b2NvbHMgPSB1bmRlZmluZWQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucHJvdG9jb2wgPSB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG5cbiAgZm9yd2FyZEFkZHJlc3NUb2dnbGVkKGV2ZW50KSB7XG4gICAgaWYgKCF0aGlzLmZvcndhcmRBZGRyZXNzKSB7XG4gICAgICB0aGlzLmFsbG93ZWRBZGRyZXNzZXMgPSB1bmRlZmluZWQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYWRkcmVzcyA9IHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cblxuICBmb3J3YXJkUG9ydFRvZ2dsZWQoZXZlbnQpIHtcbiAgICBpZiAoIXRoaXMuZm9yd2FyZFBvcnQpIHtcbiAgICAgIHRoaXMuYWxsb3dlZFBvcnRSYW5nZXMgPSB1bmRlZmluZWQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucG9ydCA9IHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cblxuICBzZXRQcm9wZXJ0aWVzKGRhdGE6IGFueSkge1xuICAgIHRoaXMuZm9yd2FyZFBvcnQgPSBkYXRhLmZvcndhcmRQb3J0O1xuICAgIHRoaXMuZm9yd2FyZFByb3RvY29sID0gZGF0YS5mb3J3YXJkUHJvdG9jb2w7XG4gICAgdGhpcy5mb3J3YXJkQWRkcmVzcyA9IGRhdGEuZm9yd2FyZEFkZHJlc3M7XG4gICAgdGhpcy5wcm90b2NvbCA9IGRhdGEucHJvdG9jb2wgPyBkYXRhLnByb3RvY29sIDogJ3RjcCc7XG4gICAgdGhpcy5hZGRyZXNzID0gZGF0YS5hZGRyZXNzO1xuICAgIHRoaXMucG9ydCA9IGRhdGEucG9ydDtcbiAgICB0aGlzLmFsbG93ZWRQcm90b2NvbHMgPSBkYXRhLmFsbG93ZWRQcm90b2NvbHM7XG4gICAgdGhpcy5hbGxvd2VkQWRkcmVzc2VzID0gZGF0YS5hbGxvd2VkQWRkcmVzc2VzO1xuICAgIHRoaXMuc2V0QWxsb3dlZFBvcnRSYW5nZXMoZGF0YS5hbGxvd2VkUG9ydFJhbmdlcyk7XG4gICAgdGhpcy5zdmMudmFsaWRhdGUodGhpcy5hbGxvd2VkUG9ydFJhbmdlcyk7XG4gIH1cblxuICBwcm9wcyA9IFtcbiAgICB7IGtleTogJ2FsbG93ZWRBZGRyZXNzZXMnLCB2YWx1ZTogdW5kZWZpbmVkIH0sXG4gICAgeyBrZXk6ICdhbGxvd2VkUG9ydFJhbmdlcycsIHZhbHVlOiB1bmRlZmluZWQgfSxcbiAgICB7IGtleTogJ2ZvcndhcmRQb3J0JywgdmFsdWU6IHVuZGVmaW5lZCB9LFxuICAgIHsga2V5OiAnZm9yd2FyZFByb3RvY29sJywgdmFsdWU6IHVuZGVmaW5lZCB9LFxuICAgIHsga2V5OiAnZm9yd2FyZEFkZHJlc3MnLCB2YWx1ZTogdW5kZWZpbmVkIH0sXG4gICAgeyBrZXk6ICdhbGxvd2VkUHJvdG9jb2xzJywgdmFsdWU6IHVuZGVmaW5lZCB9LFxuICBdO1xuXG4gIGdldFByb3BlcnRpZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3ZjLmdldFByb3BlcnRpZXModGhpcy5wcm90b2NvbCwgdGhpcy5hZGRyZXNzLCB0aGlzLnBvcnQsIHRoaXMuZm9yd2FyZFByb3RvY29sLCB0aGlzLmZvcndhcmRBZGRyZXNzLCB0aGlzLmZvcndhcmRQb3J0LCB0aGlzLmFsbG93ZWRQcm90b2NvbHMsIHRoaXMuYWxsb3dlZEFkZHJlc3NlcywgdGhpcy5hbGxvd2VkUG9ydFJhbmdlcyk7XG4gIH1cblxuICB2YWxpZGF0ZUFsbG93ZWRBZGRyZXNzZXMoKSB7XG4gICAgdW5zZXQodGhpcy5lcnJvcnMsICdhbGxvd2VkQWRkcmVzc2VzJyk7XG4gICAgaWYgKGlzTmlsKHRoaXMuYWxsb3dlZEFkZHJlc3NlcykgfHwgaXNFbXB0eSh0aGlzLmFsbG93ZWRBZGRyZXNzZXMpKSB7XG4gICAgICB0aGlzLmVycm9yc1snYWxsb3dlZEFkZHJlc3NlcyddID0gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuZXJyb3JzWydhbGxvd2VkQWRkcmVzc2VzJ107XG4gIH1cblxuICB2YWxpZGF0ZVBvcnRSYW5nZXMoKSB7XG4gICAgdW5zZXQodGhpcy5lcnJvcnMsICdhbGxvd2VkUG9ydFJhbmdlcycpO1xuICAgIGNvbnN0IHBhcnNlZFJhbmdlcyA9IHRoaXMudmFsaWRhdGlvblNlcnZpY2UucGFyc2VQb3J0UmFuZ2VzKHRoaXMuYWxsb3dlZFBvcnRSYW5nZXMpO1xuICAgIGlmIChpc05pbCh0aGlzLmFsbG93ZWRQb3J0UmFuZ2VzKSB8fCBpc0VtcHR5KHRoaXMuYWxsb3dlZFBvcnRSYW5nZXMpIHx8IHRoaXMudmFsaWRhdGlvblNlcnZpY2UudmFsaWRhdGVQb3J0UmFuZ2VzKHBhcnNlZFJhbmdlcykpIHtcbiAgICAgIHRoaXMuZXJyb3JzWydhbGxvd2VkUG9ydFJhbmdlcyddID0gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuZXJyb3JzWydhbGxvd2VkUG9ydFJhbmdlcyddO1xuICB9XG5cbiAgc2V0QWxsb3dlZFBvcnRSYW5nZXMocmFuZ2VzKSB7XG4gICAgaWYgKCFyYW5nZXMgfHwgaXNFbXB0eShyYW5nZXMpKSB7XG4gICAgICB0aGlzLmFsbG93ZWRQb3J0UmFuZ2VzID0gdW5kZWZpbmVkO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmFsbG93ZWRQb3J0UmFuZ2VzID0gdGhpcy52YWxpZGF0aW9uU2VydmljZS5jb21iaW5lUG9ydFJhbmdlcyhyYW5nZXMpO1xuICB9XG5cbiAgaXNWYWxpZCgpIHtcbiAgICB0aGlzLmVycm9ycyA9IHt9O1xuICAgIGNvbnN0IHBhcElzVmFsaWQgPSB0aGlzLnBhcENvbXBvbmVudC5pc1ZhbGlkKCk7XG4gICAgaWYgKHRoaXMuZm9yd2FyZFBvcnQpIHtcbiAgICAgIHRoaXMudmFsaWRhdGVQb3J0UmFuZ2VzKCk7XG4gICAgfVxuICAgIGlmICh0aGlzLmZvcndhcmRBZGRyZXNzKSB7XG4gICAgICB0aGlzLnZhbGlkYXRlQWxsb3dlZEFkZHJlc3NlcygpO1xuICAgIH1cbiAgICByZXR1cm4gaXNFbXB0eSh0aGlzLmVycm9ycykgJiYgcGFwSXNWYWxpZDtcbiAgfVxuXG4gIHNldFZhbGlkYXRpb25FcnJvcnMocHJvcGVydHlQYXRoID0gJycsIHZhbGlkYXRpb25FcnJvcnM6IGFueVtdKSB7XG4gICAgdGhpcy5wcm9wcy5mb3JFYWNoKChwcm9wKSA9PiB7XG4gICAgICBjb25zdCBoYXNWYWxpZGF0aW9uRXJyb3I6IGFueSA9IHZhbGlkYXRpb25FcnJvcnM/LnNvbWUoKGVycm9yKSA9PiB7XG4gICAgICAgIGxldCBwYXRoVG9NYWNoID0gZXJyb3IuaW5zdGFuY2VQYXRoO1xuICAgICAgICBpZiAoIWlzRW1wdHkoZXJyb3I/LnBhcmFtcz8ubWlzc2luZ1Byb3BlcnR5KSkge1xuICAgICAgICAgIHBhdGhUb01hY2ggKz0gJy8nICsgZXJyb3I/LnBhcmFtcz8ubWlzc2luZ1Byb3BlcnR5XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHBhdGhUb01hY2ggPT09IHByb3BlcnR5UGF0aCArICcvJyArIHByb3Aua2V5O1xuICAgICAgfSk7XG4gICAgICB0aGlzLmVycm9yc1twcm9wLmtleV0gPSBoYXNWYWxpZGF0aW9uRXJyb3I7XG4gICAgfSk7XG4gICAgdGhpcy5wYXBDb21wb25lbnQuc2V0VmFsaWRhdGlvbkVycm9ycyhwcm9wZXJ0eVBhdGgsIHZhbGlkYXRpb25FcnJvcnMpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZm9yd2FyZGluZy1jb25maWctY29udGFpbmVyXCI+XG4gICAgPGxpYi1wcm90b2NvbC1hZGRyZXNzLXBvcnQtaW5wdXRcbiAgICAgICAgW3Nob3dQcm90b2NvbF09XCJ0cnVlXCJcbiAgICAgICAgW3Nob3dBZGRyZXNzXT1cInRydWVcIlxuICAgICAgICBbc2hvd0hvc3ROYW1lXT1cImZhbHNlXCJcbiAgICAgICAgW3Nob3dQb3J0XT1cInRydWVcIlxuICAgICAgICBbZGlzYWJsZVByb3RvY29sXT1cImZvcndhcmRQcm90b2NvbFwiXG4gICAgICAgIFtkaXNhYmxlQWRkcmVzc109XCJmb3J3YXJkQWRkcmVzc1wiXG4gICAgICAgIFtkaXNhYmxlUG9ydF09XCJmb3J3YXJkUG9ydFwiXG4gICAgICAgIFsocHJvdG9jb2wpXT1cInByb3RvY29sXCJcbiAgICAgICAgWyhhZGRyZXNzKV09XCJhZGRyZXNzXCJcbiAgICAgICAgWyhwb3J0KV09XCJwb3J0XCJcbiAgICAgICAgI3BhcENvbXBvbmVudFxuICAgID48L2xpYi1wcm90b2NvbC1hZGRyZXNzLXBvcnQtaW5wdXQ+XG4gICAgPGRpdiBjbGFzcz1cImZvcndhcmRpbmctY29uZmlnLXRvZ2dsZXNcIj5cbiAgICAgICAgPGxpYi1ib29sZWFuLXRvZ2dsZS1pbnB1dFxuICAgICAgICAgICAgICAgIFtmaWVsZE5hbWVdPVwiJ0ZPUldBUkQgUFJPVE9DT0wnXCJcbiAgICAgICAgICAgICAgICBbKGZpZWxkVmFsdWUpXT1cImZvcndhcmRQcm90b2NvbFwiXG4gICAgICAgICAgICAgICAgKGZpZWxkVmFsdWVDaGFuZ2UpPVwiZm9yd2FyZFByb3RvY29sVG9nZ2xlZCgkZXZlbnQpXCJcbiAgICAgICAgPlxuICAgICAgICA8L2xpYi1ib29sZWFuLXRvZ2dsZS1pbnB1dD5cbiAgICAgICAgPGxpYi1ib29sZWFuLXRvZ2dsZS1pbnB1dFxuICAgICAgICAgICAgICAgIFtmaWVsZE5hbWVdPVwiJ0ZPUldBUkQgQUREUkVTUydcIlxuICAgICAgICAgICAgICAgIFsoZmllbGRWYWx1ZSldPVwiZm9yd2FyZEFkZHJlc3NcIlxuICAgICAgICAgICAgICAgIChmaWVsZFZhbHVlQ2hhbmdlKT1cImZvcndhcmRBZGRyZXNzVG9nZ2xlZCgkZXZlbnQpXCJcbiAgICAgICAgPlxuICAgICAgICA8L2xpYi1ib29sZWFuLXRvZ2dsZS1pbnB1dD5cbiAgICAgICAgPGxpYi1ib29sZWFuLXRvZ2dsZS1pbnB1dFxuICAgICAgICAgICAgICAgIFtmaWVsZE5hbWVdPVwiJ0ZPUldBUkQgUE9SVCdcIlxuICAgICAgICAgICAgICAgIFsoZmllbGRWYWx1ZSldPVwiZm9yd2FyZFBvcnRcIlxuICAgICAgICAgICAgICAgIChmaWVsZFZhbHVlQ2hhbmdlKT1cImZvcndhcmRQb3J0VG9nZ2xlZCgkZXZlbnQpXCJcbiAgICAgICAgPlxuICAgICAgICA8L2xpYi1ib29sZWFuLXRvZ2dsZS1pbnB1dD5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiZm9yd2FyZGluZy1jb25maWctYWxsb3dlZC1pbnB1dHNcIj5cbiAgICAgICAgPGxpYi1jaGVja2JveC1saXN0LWlucHV0XG4gICAgICAgICAgICAqbmdJZj1cImZvcndhcmRQcm90b2NvbFwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7aW52YWxpZDogZXJyb3JzWydhbGxvd2VkUHJvdG9jb2xzJ119XCJcbiAgICAgICAgICAgIFtmaWVsZE5hbWVdPVwiJ0FMTE9XRUQgUFJPVE9DT0xTJ1wiXG4gICAgICAgICAgICBbdmFsdWVMaXN0XT1cIlsndGNwJywgJ3VkcCddXCJcbiAgICAgICAgICAgIFsoZmllbGRWYWx1ZSldPVwiYWxsb3dlZFByb3RvY29sc1wiXG4gICAgICAgID5cbiAgICAgICAgPC9saWItY2hlY2tib3gtbGlzdC1pbnB1dD5cbiAgICAgICAgPGxpYi10ZXh0LWxpc3QtaW5wdXRcbiAgICAgICAgICAgICpuZ0lmPVwiZm9yd2FyZEFkZHJlc3NcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwie2ludmFsaWQ6IGVycm9yc1snYWxsb3dlZEFkZHJlc3NlcyddfVwiXG4gICAgICAgICAgICBbZmllbGROYW1lXT1cIidBTExPV0VEIEFERFJFU1NFUydcIlxuICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIicxMC4xMC4wLjAvMjQgZG9tYWluLmNvbSdcIlxuICAgICAgICAgICAgWyhmaWVsZFZhbHVlKV09XCJhbGxvd2VkQWRkcmVzc2VzXCJcbiAgICAgICAgICAgIFtsYWJlbENvbG9yXT1cIicjMDAwMDAwJ1wiXG4gICAgICAgID5cbiAgICAgICAgPC9saWItdGV4dC1saXN0LWlucHV0PlxuICAgICAgICA8bGliLXRleHQtbGlzdC1pbnB1dFxuICAgICAgICAgICAgKm5nSWY9XCJmb3J3YXJkUG9ydFwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7aW52YWxpZDogZXJyb3JzWydhbGxvd2VkUG9ydFJhbmdlcyddfVwiXG4gICAgICAgICAgICBbZmllbGROYW1lXT1cIidBTExPV0VEIFBPUlQgUkFOR0VTJ1wiXG4gICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJzgwIDEyMC0xMjUgNDQzIDgwODAnXCJcbiAgICAgICAgICAgIFsoZmllbGRWYWx1ZSldPVwiYWxsb3dlZFBvcnRSYW5nZXNcIlxuICAgICAgICAgICAgW2xhYmVsQ29sb3JdPVwiJyMwMDAwMDAnXCJcbiAgICAgICAgICAgIFtmaWVsZENsYXNzXT1cImVycm9yc1snYWxsb3dlZFBvcnRSYW5nZXMnXSA/ICdlcnJvcicgOiAnJ1wiXG4gICAgICAgICAgICAoZmllbGRWYWx1ZUNoYW5nZSk9XCJ2YWxpZGF0ZVBvcnRSYW5nZXMoKVwiXG4gICAgICAgID5cbiAgICAgICAgPC9saWItdGV4dC1saXN0LWlucHV0PlxuICAgIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|