@qbs-origin/origin-form 0.8.11 → 0.8.12
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/esm2022/lib/form-css.helper.mjs +122 -28
- package/esm2022/lib/formly/custom-section-separator.component.mjs +11 -3
- package/esm2022/lib/formly/form-section-separator.component.mjs +34 -11
- package/esm2022/lib/formly/formly-dictionary-dropdown-tree/formly-dictionary-dropdown-tree.component.mjs +23 -8
- package/esm2022/lib/formly/formly-radio/formly-radio-component.mjs +3 -3
- package/esm2022/lib/formly/formly-row-spacer.mjs +12 -0
- package/esm2022/lib/formly/formly-row-wrapper.mjs +32 -0
- package/esm2022/lib/formly/formly-scan-id/formly-scan-id.component.mjs +21 -26
- package/esm2022/lib/models/flux.model.mjs +1 -1
- package/esm2022/lib/models/forms.model.mjs +77 -25
- package/esm2022/lib/origin-form.component.mjs +170 -55
- package/esm2022/lib/origin-form.module.mjs +11 -1
- package/esm2022/lib/services/applicationData.service.mjs +1 -1
- package/fesm2022/qbs-origin-origin-form.mjs +497 -151
- package/fesm2022/qbs-origin-origin-form.mjs.map +1 -1
- package/lib/form-css.helper.d.ts +7 -0
- package/lib/formly/form-section-separator.component.d.ts +2 -2
- package/lib/formly/formly-dictionary-dropdown-tree/formly-dictionary-dropdown-tree.component.d.ts +2 -1
- package/lib/formly/formly-row-spacer.d.ts +6 -0
- package/lib/formly/formly-row-wrapper.d.ts +6 -0
- package/lib/models/flux.model.d.ts +4 -0
- package/lib/models/forms.model.d.ts +22 -6
- package/lib/origin-form.component.d.ts +6 -1
- package/lib/origin-form.module.d.ts +64 -62
- package/lib/services/applicationData.service.d.ts +1 -1
- package/package.json +1 -1
|
@@ -54,7 +54,7 @@ export class AppDataStep {
|
|
|
54
54
|
}
|
|
55
55
|
}
|
|
56
56
|
export class AppDataFill {
|
|
57
|
-
constructor(appDataId = '', configurationId = '', currentStepId = '', statusId = '', language = '', flux = [], offerId = '', isSubmitted = false
|
|
57
|
+
constructor(appDataId = '', configurationId = '', currentStepId = '', statusId = '', language = '', flux = [], offerId = '', isSubmitted = false) {
|
|
58
58
|
this.metadata = {
|
|
59
59
|
appDataId: appDataId || '',
|
|
60
60
|
configurationId: configurationId || '',
|
|
@@ -63,7 +63,6 @@ export class AppDataFill {
|
|
|
63
63
|
language: language || '',
|
|
64
64
|
offerId: offerId || '',
|
|
65
65
|
isSubmitted: isSubmitted || false,
|
|
66
|
-
parentAppDataUuid: parentAppDataUuid || ''
|
|
67
66
|
};
|
|
68
67
|
this.flux = flux || [];
|
|
69
68
|
}
|
|
@@ -76,7 +75,6 @@ export class AppData {
|
|
|
76
75
|
this.initFlowValues = data.initFlowValues;
|
|
77
76
|
this.withNextStep = data.withNextStep;
|
|
78
77
|
this.blockPreviousStep = data.blockPreviousStep;
|
|
79
|
-
this.parentAppDataUuid = data.parentAppDataUuid;
|
|
80
78
|
if (!data.env) {
|
|
81
79
|
this.env = 'Config';
|
|
82
80
|
}
|
|
@@ -116,8 +114,10 @@ export class FormModelExtenxions {
|
|
|
116
114
|
const out = [];
|
|
117
115
|
const walk = (node, pathParts) => {
|
|
118
116
|
if (node === null || node === undefined) {
|
|
119
|
-
|
|
117
|
+
// Leaf
|
|
118
|
+
if (pathParts.length > 0) {
|
|
120
119
|
out.push(this.buildInitFlowField(pathParts));
|
|
120
|
+
}
|
|
121
121
|
return;
|
|
122
122
|
}
|
|
123
123
|
if (Array.isArray(node)) {
|
|
@@ -128,8 +128,10 @@ export class FormModelExtenxions {
|
|
|
128
128
|
Object.keys(node).forEach((key) => walk(node[key], [...pathParts, key]));
|
|
129
129
|
return;
|
|
130
130
|
}
|
|
131
|
-
|
|
131
|
+
// Primitive leaf
|
|
132
|
+
if (pathParts.length > 0) {
|
|
132
133
|
out.push(this.buildInitFlowField(pathParts));
|
|
134
|
+
}
|
|
133
135
|
};
|
|
134
136
|
walk(parsed, []);
|
|
135
137
|
for (const f of out) {
|
|
@@ -144,7 +146,7 @@ export class FormModelExtenxions {
|
|
|
144
146
|
return {
|
|
145
147
|
fieldName: `initFlowValues_${underscorePath}`,
|
|
146
148
|
fieldType: StepControlType.Metadata,
|
|
147
|
-
id: `initFlowValues_${underscorePath}
|
|
149
|
+
id: `initFlowValues_${underscorePath}`,
|
|
148
150
|
};
|
|
149
151
|
}
|
|
150
152
|
fluxItems(untilStepIdentifier = undefined) {
|
|
@@ -154,7 +156,7 @@ export class FormModelExtenxions {
|
|
|
154
156
|
items.push({
|
|
155
157
|
fieldName: fieldValue,
|
|
156
158
|
fieldType: StepControlType.Metadata,
|
|
157
|
-
id: `metadata.${fieldValue}
|
|
159
|
+
id: `metadata.${fieldValue}`,
|
|
158
160
|
});
|
|
159
161
|
});
|
|
160
162
|
}
|
|
@@ -182,13 +184,13 @@ export class FormModelExtenxions {
|
|
|
182
184
|
StepControlType.Buttons,
|
|
183
185
|
StepControlType.NewRow,
|
|
184
186
|
StepControlType.FluxInfo,
|
|
185
|
-
StepControlType.Paragraph
|
|
187
|
+
StepControlType.Paragraph,
|
|
186
188
|
].includes(control.type) == false) {
|
|
187
189
|
items.push({
|
|
188
190
|
fieldName: `${step.name} -> ${section.title} -> ${control.title}`,
|
|
189
191
|
fieldType: control.type,
|
|
190
192
|
manulInputControlType: control.specificControlData?.type,
|
|
191
|
-
id: control.identifier
|
|
193
|
+
id: control.identifier,
|
|
192
194
|
});
|
|
193
195
|
}
|
|
194
196
|
});
|
|
@@ -208,7 +210,7 @@ export class FormModelExtenxions {
|
|
|
208
210
|
fieldType: step.type,
|
|
209
211
|
id: document?.documentId
|
|
210
212
|
? `upload.${document.documentId}`
|
|
211
|
-
: `${step.type}.${step.name}
|
|
213
|
+
: `${step.type}.${step.name}`,
|
|
212
214
|
});
|
|
213
215
|
});
|
|
214
216
|
}
|
|
@@ -220,7 +222,7 @@ export class FormModelExtenxions {
|
|
|
220
222
|
fieldType: step.type,
|
|
221
223
|
id: document?.id
|
|
222
224
|
? `generate.${document.id}`
|
|
223
|
-
: `${step.type}.${step.name}
|
|
225
|
+
: `${step.type}.${step.name}`,
|
|
224
226
|
});
|
|
225
227
|
});
|
|
226
228
|
}
|
|
@@ -232,7 +234,7 @@ export class FormModelExtenxions {
|
|
|
232
234
|
fieldType: step.type,
|
|
233
235
|
id: document?.id
|
|
234
236
|
? `sign.${document.id}`
|
|
235
|
-
: `${step.type}.${step.name}
|
|
237
|
+
: `${step.type}.${step.name}`,
|
|
236
238
|
});
|
|
237
239
|
});
|
|
238
240
|
}
|
|
@@ -243,7 +245,7 @@ export class FormModelExtenxions {
|
|
|
243
245
|
fieldType: step.type,
|
|
244
246
|
id: document?.id
|
|
245
247
|
? `system.${document.id}`
|
|
246
|
-
: `${step.type}.${step.name}
|
|
248
|
+
: `${step.type}.${step.name}`,
|
|
247
249
|
});
|
|
248
250
|
});
|
|
249
251
|
}
|
|
@@ -251,19 +253,55 @@ export class FormModelExtenxions {
|
|
|
251
253
|
});
|
|
252
254
|
return items;
|
|
253
255
|
}
|
|
256
|
+
/**
|
|
257
|
+
* Returns inherited parent fields as MethodField items.
|
|
258
|
+
* Reusable across all system step settings components.
|
|
259
|
+
*/
|
|
260
|
+
static getInheritedMethodFields(formModel) {
|
|
261
|
+
const result = [];
|
|
262
|
+
const inheritedFields = formModel.parentChildConfig?.inheritedFields;
|
|
263
|
+
if (inheritedFields?.length) {
|
|
264
|
+
inheritedFields.forEach((field) => {
|
|
265
|
+
result.push({
|
|
266
|
+
fieldName: `Inherited -> ${field.fieldName}`,
|
|
267
|
+
fieldType: 'inherited',
|
|
268
|
+
id: field.id,
|
|
269
|
+
});
|
|
270
|
+
});
|
|
271
|
+
}
|
|
272
|
+
return result;
|
|
273
|
+
}
|
|
274
|
+
/**
|
|
275
|
+
* Returns flux items + inherited parent fields (no API methods).
|
|
276
|
+
* Use this in system step settings that need parent field references.
|
|
277
|
+
*/
|
|
278
|
+
fluxItemsWithInherited(untilStepIdentifier = undefined) {
|
|
279
|
+
const items = this.fluxItems(untilStepIdentifier);
|
|
280
|
+
items.push(...FormModelExtenxions.getInheritedMethodFields(this.formModel));
|
|
281
|
+
return items;
|
|
282
|
+
}
|
|
254
283
|
fluxItemsWithGetApiMethods(excludedMethodId = '') {
|
|
255
|
-
let items = this.
|
|
284
|
+
let items = this.fluxItemsWithInherited();
|
|
256
285
|
this.formModel.api.getItems.forEach((apiMethod) => {
|
|
257
286
|
if (apiMethod.id !== excludedMethodId) {
|
|
258
287
|
apiMethod.fields?.forEach((f) => {
|
|
259
288
|
items.push({
|
|
260
289
|
fieldName: `${apiMethod.method} -> ${f.fieldName}`,
|
|
261
290
|
fieldType: StepControlType.ApiMethodField,
|
|
262
|
-
id: f.id
|
|
291
|
+
id: f.id,
|
|
263
292
|
});
|
|
264
293
|
});
|
|
265
294
|
}
|
|
266
295
|
});
|
|
296
|
+
this.formModel.api.validationItems.forEach((validateApiMethod) => {
|
|
297
|
+
validateApiMethod.fields?.forEach((f) => {
|
|
298
|
+
items.push({
|
|
299
|
+
fieldName: `${validateApiMethod.method} -> ${f.fieldName}`,
|
|
300
|
+
fieldType: StepControlType.ApiMethodField,
|
|
301
|
+
id: f.id,
|
|
302
|
+
});
|
|
303
|
+
});
|
|
304
|
+
});
|
|
267
305
|
return items;
|
|
268
306
|
}
|
|
269
307
|
offerMethodsItems() {
|
|
@@ -278,7 +316,7 @@ export class FormModelExtenxions {
|
|
|
278
316
|
const allApiItems = [
|
|
279
317
|
...this.formModel.api.getItems,
|
|
280
318
|
...this.formModel.api.validationItems,
|
|
281
|
-
...this.formModel.api.sendItems
|
|
319
|
+
...this.formModel.api.sendItems,
|
|
282
320
|
];
|
|
283
321
|
offerMethodsIds.forEach((methodId) => {
|
|
284
322
|
const apiMethod = allApiItems.find((item) => item.id === methodId);
|
|
@@ -287,7 +325,7 @@ export class FormModelExtenxions {
|
|
|
287
325
|
items.push({
|
|
288
326
|
fieldName: `${apiMethod.method} -> ${f.fieldName}`,
|
|
289
327
|
fieldType: FluxType.ViewOffer,
|
|
290
|
-
id: `api_${apiMethod.id} -> ${f.id}
|
|
328
|
+
id: `api_${apiMethod.id} -> ${f.id}`,
|
|
291
329
|
});
|
|
292
330
|
});
|
|
293
331
|
}
|
|
@@ -301,6 +339,8 @@ export class ApiItem {
|
|
|
301
339
|
}
|
|
302
340
|
export class GetApiItem {
|
|
303
341
|
}
|
|
342
|
+
export class ValidateApiItem {
|
|
343
|
+
}
|
|
304
344
|
export class DesignModel {
|
|
305
345
|
constructor(data) {
|
|
306
346
|
this.fonts = [];
|
|
@@ -417,12 +457,16 @@ export class ComponentConfig {
|
|
|
417
457
|
this.border = data.border;
|
|
418
458
|
this.borderRadius = data.borderRadius;
|
|
419
459
|
this.labelStyle = data.labelStyle;
|
|
460
|
+
this.valueStyle = data.valueStyle;
|
|
420
461
|
this.textAlign = data.textAlign;
|
|
421
462
|
this.color = data.color;
|
|
422
463
|
this.weight = data.weight;
|
|
423
464
|
this.startColor = data.startColor;
|
|
424
465
|
this.endColor = data.endColor;
|
|
425
466
|
this.height = data.height;
|
|
467
|
+
this.textareaMaxHeight = data.textareaMaxHeight;
|
|
468
|
+
this.marginTop = data.marginTop;
|
|
469
|
+
this.marginBottom = data.marginBottom;
|
|
426
470
|
}
|
|
427
471
|
}
|
|
428
472
|
}
|
|
@@ -444,7 +488,7 @@ export const initialFormulareState = {
|
|
|
444
488
|
showNameStep: false,
|
|
445
489
|
showAllSteps: false,
|
|
446
490
|
showProgressBar: false,
|
|
447
|
-
initFlowValues: ''
|
|
491
|
+
initFlowValues: '',
|
|
448
492
|
},
|
|
449
493
|
design: {
|
|
450
494
|
fonts: [],
|
|
@@ -460,7 +504,7 @@ export const initialFormulareState = {
|
|
|
460
504
|
marginLeft: '',
|
|
461
505
|
marginRight: '',
|
|
462
506
|
marginTop: '',
|
|
463
|
-
marginBottom: ''
|
|
507
|
+
marginBottom: '',
|
|
464
508
|
},
|
|
465
509
|
flux: [],
|
|
466
510
|
api: { getItems: [], validationItems: [], sendItems: [] },
|
|
@@ -468,16 +512,24 @@ export const initialFormulareState = {
|
|
|
468
512
|
documents: [],
|
|
469
513
|
statuses: [],
|
|
470
514
|
display: {
|
|
471
|
-
sections: []
|
|
515
|
+
sections: [],
|
|
472
516
|
},
|
|
473
517
|
generatedCss: {},
|
|
474
518
|
metadataFields: [],
|
|
475
519
|
errors: {},
|
|
476
520
|
applicationMappings: {
|
|
477
521
|
applicationTypeId: 0,
|
|
478
|
-
columnMappings: []
|
|
522
|
+
columnMappings: [],
|
|
523
|
+
},
|
|
524
|
+
parentChildConfig: {
|
|
525
|
+
parentApplicationUuid: null,
|
|
526
|
+
inheritedFields: [],
|
|
527
|
+
notificationConfig: {
|
|
528
|
+
enabled: false,
|
|
529
|
+
titleTemplate: 'Status update: {statusName}',
|
|
530
|
+
messageTemplate: 'Your application status has been updated to: {statusName}',
|
|
531
|
+
},
|
|
479
532
|
},
|
|
480
|
-
parentChildConfig: undefined
|
|
481
533
|
},
|
|
482
534
|
selectedTab: 'Date generale',
|
|
483
535
|
canGetFromProd: false,
|
|
@@ -485,7 +537,7 @@ export const initialFormulareState = {
|
|
|
485
537
|
canPublishInProd: false,
|
|
486
538
|
canPublishInTest: false,
|
|
487
539
|
applicationUuid: '',
|
|
488
|
-
version: ''
|
|
540
|
+
version: '',
|
|
489
541
|
};
|
|
490
542
|
export class PartnerDictionaryMapping {
|
|
491
543
|
}
|
|
@@ -612,7 +664,7 @@ export class StatusModel {
|
|
|
612
664
|
this.final = final;
|
|
613
665
|
this.isActive = isActive;
|
|
614
666
|
this.actions = actions;
|
|
615
|
-
this.childApplicationUuids = childApplicationUuids
|
|
667
|
+
this.childApplicationUuids = childApplicationUuids;
|
|
616
668
|
this.sendNotifications = sendNotifications;
|
|
617
669
|
}
|
|
618
670
|
}
|
|
@@ -670,4 +722,4 @@ export var AppDataStatus;
|
|
|
670
722
|
AppDataStatus[AppDataStatus["new"] = 0] = "new";
|
|
671
723
|
AppDataStatus[AppDataStatus["finished"] = 1] = "finished";
|
|
672
724
|
})(AppDataStatus || (AppDataStatus = {}));
|
|
673
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybXMubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vcmlnaW4tZm9ybS9zcmMvbGliL21vZGVscy9mb3Jtcy5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFJMUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ25ELE9BQU8sRUFBRSxtQkFBbUIsRUFBeUIsTUFBTSxjQUFjLENBQUM7QUFFMUUsTUFBTSxPQUFPLGtCQUFrQjtJQUEvQjtRQUNFLFlBQU8sR0FBWSxLQUFLLENBQUM7UUFDekIsa0JBQWEsR0FBVyw2QkFBNkIsQ0FBQztRQUN0RCxvQkFBZSxHQUNiLDJEQUEyRCxDQUFDO0lBQ2hFLENBQUM7Q0FBQTtBQUVELE1BQU0sT0FBTyxjQUFjO0lBQTNCO1FBQ0UsT0FBRSxHQUFXLEVBQUUsQ0FBQztRQUNoQixjQUFTLEdBQVcsRUFBRSxDQUFDO0lBQ3pCLENBQUM7Q0FBQTtBQUVELE1BQU0sT0FBTyxpQkFBaUI7SUFBOUI7UUFDRSwwQkFBcUIsR0FBa0IsSUFBSSxDQUFDO1FBQzVDLG9CQUFlLEdBQXFCLEVBQUUsQ0FBQztRQUN2Qyx1QkFBa0IsR0FBdUIsSUFBSSxrQkFBa0IsRUFBRSxDQUFDO0lBQ3BFLENBQUM7Q0FBQTtBQUVELE1BQU0sT0FBTyxtQkFBbUI7SUFBaEM7UUFDRSxpQkFBWSxHQUFrQixJQUFJLENBQUM7UUFDbkMsaUJBQVksR0FBa0IsSUFBSSxDQUFDO1FBQ25DLG9CQUFlLEdBQStCLE9BQU8sQ0FBQztRQUN0RCx3QkFBbUIsR0FBVyxFQUFFLENBQUM7SUFDbkMsQ0FBQztDQUFBO0FBRUQsTUFBTSxPQUFPLFNBQVM7Q0FpQnJCO0FBRUQsTUFBTSxPQUFPLGNBQWM7SUFPekIsWUFDRSxZQUFvQixFQUFFLEVBQ3RCLFlBQW9CLEVBQUUsRUFDdEIsY0FBc0Is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VztJQUF4QjtRQU9FLGFBQVEsR0FBeUIsRUFBRSxDQUFDO0lBQ3RDLENBQUM7Q0FBQTtBQUNELE1BQU0sT0FBTyxjQUFlLFNBQVEsV0FBVztDQUU5QztBQU1ELE1BQU0sT0FBTyxrQkFBa0I7Q0FZOUI7QUFFRCxNQUFNLE9BQU8sZUFBZTtDQUczQjtBQUVELE1BQU0sT0FBTyxpQkFBaUI7Q0FHN0I7QUFFRCxNQUFNLE9BQU8sY0FBYztDQUkxQjtBQUVELE1BQU0sT0FBTyxxQkFBc0IsU0FBUSxjQUFjO0NBT3hEO0FBRUQsTUFBTSxPQUFPLGFBQWE7Q0FLekI7QUFFRCxNQUFNLENBQU4sSUFBWSxhQUdYO0FBSEQsV0FBWSxhQUFhO0lBQ3ZCLCtDQUFPLENBQUE7SUFDUCx5REFBWSxDQUFBO0FBQ2QsQ0FBQyxFQUhXLGFBQWEsS0FBYixhQUFhLFFBR3hCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTGFiZWxJbmZvIH0gZnJvbSAnLi9sYWJlbC1pbmZvLm1vZGVsJztcbmltcG9ydCB7IFBhcnRuZXIgfSBmcm9tICcuL3BhcnRuZXIubW9kZWwnO1xuaW1wb3J0IHsgRGljdGlvbmFyeUxhYmVsSW5mbyB9IGZyb20gJy4uL290aGVycy9kaWN0aW9uYXJ5LWxhYmVsLWluZm8nO1xuaW1wb3J0IHsgQXBwbGljYXRpb25NYXBwaW5ncyB9IGZyb20gJy4vYXBwbGljYXRpb24tdHlwZS5tb2RlbCc7XG5pbXBvcnQgeyBDc3NSdWxlcyB9IGZyb20gJy4uL290aGVycy91dGlscyc7XG5pbXBvcnQgeyBGbHV4SGVscGVyIH0gZnJvbSAnLi4vb3RoZXJzL2ZsdXgtaGVscGVyJztcbmltcG9ydCB7IFByZXNlbnRhdGlvbkNvbnRyb2wsIFNlY3Rpb25EYXRhLCBTdGVwRGF0YSB9IGZyb20gJy4vZmx1eC5tb2RlbCc7XG5cbmV4cG9ydCBjbGFzcyBOb3RpZmljYXRpb25Db25maWcge1xuICBlbmFibGVkOiBib29sZWFuID0gZmFsc2U7XG4gIHRpdGxlVGVtcGxhdGU6IHN0cmluZyA9ICdTdGF0dXMgdXBkYXRlOiB7c3RhdHVzTmFtZX0nO1xuICBtZXNzYWdlVGVtcGxhdGU6IHN0cmluZyA9XG4gICAgJ1lvdXIgYXBwbGljYXRpb24gc3RhdHVzIGhhcyBiZWVuIHVwZGF0ZWQgdG86IHtzdGF0dXNOYW1lfSc7XG59XG5cbmV4cG9ydCBjbGFzcyBJbmhlcml0ZWRGaWVsZCB7XG4gIGlkOiBzdHJpbmcgPSAnJztcbiAgZmllbGROYW1lOiBzdHJpbmcgPSAnJztcbn1cblxuZXhwb3J0IGNsYXNzIFBhcmVudENoaWxkQ29uZmlnIHtcbiAgcGFyZW50QXBwbGljYXRpb25VdWlkOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgaW5oZXJpdGVkRmllbGRzOiBJbmhlcml0ZWRGaWVsZFtdID0gW107XG4gIG5vdGlmaWNhdGlvbkNvbmZpZzogTm90aWZpY2F0aW9uQ29uZmlnID0gbmV3IE5vdGlmaWNhdGlvbkNvbmZpZygpO1xufVxuXG5leHBvcnQgY2xhc3MgQ29udGFjdE1ldGhvZENvbmZpZyB7XG4gIGVtYWlsRmllbGRJZDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gIHBob25lRmllbGRJZDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gIHByZWZlcnJlZE1ldGhvZDogJ2VtYWlsJyB8ICdwaG9uZScgfCAnYm90aCcgPSAnZW1haWwnO1xuICBjb250aW51YXRpb25CYXNlVXJsOiBzdHJpbmcgPSAnJztcbn1cblxuZXhwb3J0IGNsYXNzIEZvcm1Nb2RlbCB7XG4gIGFwcGxpY2F0aW9uSWQ6IG51bWJlcjtcbiAgYXBwbGljYXRpb25VdWlkOiBzdHJpbmc7XG4gIGdlbmVyYWxEYXRhOiBHZW5lcmFsRGF0YU1vZGVsO1xuICBkZXNpZ246IERlc2lnbk1vZGVsO1xuICBmbHV4OiBTdGVwRGF0YVtdO1xuICBhcGk6IEFwaURhdGE7XG4gIHBhcnRuZXJzOiBBcHBQYXJ0bmVyW107XG4gIGRvY3VtZW50czogQXBwRG9jdW1lbnRbXTtcbiAgc3RhdHVzZXM6IFN0YXR1c01vZGVsW107XG4gIGRpc3BsYXk6IERpc3BsYXlNb2RlbDtcbiAgZ2VuZXJhdGVkQ3NzOiBDc3NSdWxlcztcbiAgbWV0YWRhdGFGaWVsZHM6IFtdO1xuICBlcnJvcnM6IHsgW3RhYk5hbWU6IHN0cmluZ106IHN0cmluZ1tdIH07XG4gIGFwcGxpY2F0aW9uTWFwcGluZ3M6IEFwcGxpY2F0aW9uTWFwcGluZ3M7XG4gIHBhcmVudENoaWxkQ29uZmlnPzogUGFyZW50Q2hpbGRDb25maWc7XG4gIGNvbnRhY3RNZXRob2RDb25maWc/OiBDb250YWN0TWV0aG9kQ29uZmlnO1xufVxuXG5leHBvcnQgY2xhc3MgQXBwRGF0YUNvbnRyb2wge1xuICBjb250cm9sSWQ6IHN0cmluZztcbiAgZmlsbFZhbHVlOiBzdHJpbmc7XG4gIGZpbGxWYWx1ZUlkOiBzdHJpbmc7XG4gIGZpbGxWYWx1ZXM/OiBzdHJpbmdbXTtcbiAgZmlsbFZhbHVlSWRzPzogc3RyaW5nW107XG5cbiAgY29uc3RydWN0b3IoXG4gICAgY29udHJvbElkOiBzdHJpbmcgPSAnJyxcbiAgICBmaWxsVmFsdWU6IHN0cmluZyA9ICcnLFxuICAgIGZpbGxWYWx1ZUlkOiBzdHJpbmcgPSAnJyxcbiAgICBmaWxsVmFsdWVzPzogc3RyaW5nW10sXG4gICAgZmlsbFZhbHVlSWRzPzogc3RyaW5nW11cbiAgKSB7XG4gICAgdGhpcy5jb250cm9sSWQgPSBjb250cm9sSWQgfHwgJyc7XG4gICAgdGhpcy5maWxsVmFsdWUgPSBmaWxsVmFsdWUgfHwgJyc7XG4gICAgdGhpcy5maWxsVmFsdWVJZCA9IGZpbGxWYWx1ZUlkIHx8ICcnO1xuICAgIHRoaXMuZmlsbFZhbHVlcyA9IGZpbGxWYWx1ZXM7XG4gICAgdGhpcy5maWxsVmFsdWVJZHMgPSBmaWxsVmFsdWVJZHM7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEFwcERhdGFTZWN0aW9uIHtcbiAgc2VjdGlvbklkOiBzdHJpbmc7XG4gIGNvbnRyb2xzOiBBcHBEYXRhQ29udHJvbFtdO1xuXG4gIGNvbnN0cnVjdG9yKHNlY3Rpb25JZDogc3RyaW5nID0gJycsIGNvbnRyb2xzOiBBcHBEYXRhQ29udHJvbFtdID0gW10pIHtcbiAgICB0aGlzLnNlY3Rpb25JZCA9IHNlY3Rpb25JZCB8fCAnJztcbiAgICB0aGlzLmNvbnRyb2xzID0gY29udHJvbHMgfHwgW107XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEFwcERhdGFTdGVwIHtcbiAgc3RlcElkOiBzdHJpbmc7XG4gIHR5cGU6IG51bWJlcjtcbiAgc2VjdGlvbnM6IEFwcERhdGFTZWN0aW9uW107XG5cbiAgY29uc3RydWN0b3IoXG4gICAgc3RlcElkOiBzdHJpbmcgPSAnJyxcbiAgICB0eXBlOiBudW1iZXIsXG4gICAgc2VjdGlvbnM6IEFwcERhdGFTZWN0aW9uW10gPSBbXVxuICApIHtcbiAgICB0aGlzLnN0ZXBJZCA9IHN0ZXBJZCB8fCAnJztcbiAgICB0aGlzLnR5cGUgPSB0eXBlO1xuICAgIHRoaXMuc2VjdGlvbnMgPSBzZWN0aW9ucyB8fCBbXTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQXBwRGF0YUZpbGwge1xuICBtZXRhZGF0YToge1xuICAgIGFwcERhdGFJZDogc3RyaW5nO1xuICAgIGNvbmZpZ3VyYXRpb25JZDogc3RyaW5nO1xuICAgIGN1cnJlbnRTdGVwSWQ6IHN0cmluZztcbiAgICBzdGF0dXNJZDogc3RyaW5nO1xuICAgIGxhbmd1YWdlOiBzdHJpbmc7XG4gICAgb2ZmZXJJZDogc3RyaW5nO1xuICAgIGlzU3VibWl0dGVkOiBib29sZWFuO1xuICAgIHBhcmVudEFwcERhdGFVdWlkPzogc3RyaW5nO1xuICB9O1xuICBmbHV4OiBBcHBEYXRhU3RlcFtdO1xuICBpbml0Rmxvd1ZhbHVlcz86IGFueTtcbiAgaW5oZXJpdGVkRmllbGRzPzogUmVjb3JkPHN0cmluZywgYW55PjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBhcHBEYXRhSWQ6IHN0cmluZyA9ICcnLFxuICAgIGNvbmZpZ3VyYXRpb25JZDogc3RyaW5nID0gJycsXG4gICAgY3VycmVudFN0ZXBJZDogc3RyaW5nID0gJycsXG4gICAgc3RhdHVzSWQ6IHN0cmluZyA9ICcnLFxuICAgIGxhbmd1YWdlOiBzdHJpbmcgPSAnJyxcbiAgICBmbHV4OiBBcHBEYXRhU3RlcFtdID0gW10sXG4gICAgb2ZmZXJJZDogc3RyaW5nID0gJycsXG4gICAgaXNTdWJtaXR0ZWQ6IGJvb2xlYW4gPSBmYWxzZSxcbiAgICBwYXJlbnRBcHBEYXRhVXVpZDogc3RyaW5nID0gJydcbiAgKSB7XG4gICAgdGhpcy5tZXRhZGF0YSA9IHtcbiAgICAgIGFwcERhdGFJZDogYXBwRGF0YUlkIHx8ICcnLFxuICAgICAgY29uZmlndXJhdGlvbklkOiBjb25maWd1cmF0aW9uSWQgfHwgJycsXG4gICAgICBjdXJyZW50U3RlcElkOiBjdXJyZW50U3RlcElkIHx8ICcnLFxuICAgICAgc3RhdHVzSWQ6IHN0YXR1c0lkIHx8ICcnLFxuICAgICAgbGFuZ3VhZ2U6IGxhbmd1YWdlIHx8ICcnLFxuICAgICAgb2ZmZXJJZDogb2ZmZXJJZCB8fCAnJyxcbiAgICAgIGlzU3VibWl0dGVkOiBpc1N1Ym1pdHRlZCB8fCBmYWxzZSxcbiAgICAgIHBhcmVudEFwcERhdGFVdWlkOiBwYXJlbnRBcHBEYXRhVXVpZCB8fCAnJ1xuICAgIH07XG4gICAgdGhpcy5mbHV4ID0gZmx1eCB8fCBbXTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQXBwRGF0YSB7XG4gIGlkPzogbnVtYmVyO1xuICBhcHBEYXRhSWQ6IHN0cmluZztcbiAgYXBwQ29uZmlndXJhdGlvbklkOiBudW1iZXI7XG4gIGZpbGxEYXRhPzogQXBwRGF0YUZpbGw7XG4gIGluaXRGbG93VmFsdWVzPzogc3RyaW5nO1xuICB3aXRoTmV4dFN0ZXA6IGJvb2xlYW47XG4gIGJsb2NrUHJldmlvdXNTdGVwOiBib29sZWFuO1xuICBlbnY6IHN0cmluZztcbiAgc3RhdHVzOiBBcHBEYXRhU3RhdHVzO1xuICBwYXJlbnRBcHBEYXRhVXVpZD86IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihkYXRhOiB7XG4gICAgaWQ/OiBudW1iZXI7XG4gICAgYXBwRGF0YUlkOiBzdHJpbmc7XG4gICAgYXBwQ29uZmlndXJhdGlvbklkOiBudW1iZXI7XG4gICAgZmlsbERhdGE/OiBBcHBEYXRhRmlsbDtcbiAgICBpbml0Rmxvd1ZhbHVlcz86IHN0cmluZztcbiAgICB3aXRoTmV4dFN0ZXA6IGJvb2xlYW47XG4gICAgYmxvY2tQcmV2aW91c1N0ZXA6IGJvb2xlYW47XG4gICAgZW52OiBzdHJpbmc7XG4gICAgcGFyZW50QXBwRGF0YVV1aWQ/OiBzdHJpbmc7XG4gIH0pIHtcbiAgICAoKHRoaXMuaWQgPSBkYXRhLmlkID8/IHVuZGVmaW5lZCksICh0aGlzLmFwcERhdGFJZCA9IGRhdGEuYXBwRGF0YUlkIHx8ICcnKSk7XG4gICAgdGhpcy5hcHBDb25maWd1cmF0aW9uSWQgPSBkYXRhLmFwcENvbmZpZ3VyYXRpb25JZCB8fCAwO1xuICAgIHRoaXMuZmlsbERhdGEgPSBkYXRhLmZpbGxEYXRhO1xuICAgIHRoaXMuaW5pdEZsb3dWYWx1ZXMgPSBkYXRhLmluaXRGbG93VmFsdWVzO1xuICAgIHRoaXMud2l0aE5leHRTdGVwID0gZGF0YS53aXRoTmV4dFN0ZXA7XG4gICAgdGhpcy5ibG9ja1ByZXZpb3VzU3RlcCA9IGRhdGEuYmxvY2tQcmV2aW91c1N0ZXA7XG4gICAgdGhpcy5wYXJlbnRBcHBEYXRhVXVpZCA9IGRhdGEucGFyZW50QXBwRGF0YVV1aWQ7XG4gICAgaWYgKCFkYXRhLmVudikge1xuICAgICAgdGhpcy5lbnYgPSAnQ29uZmlnJztcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5lbnYgPSBkYXRhLmVudjtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEZvcm1Nb2RlbEV4dGVueGlvbnMge1xuICBmb3JtTW9kZWw6IEZvcm1Nb2RlbDtcblxuICBjb25zdHJ1Y3Rvcihtb2RlbDogRm9ybU1vZGVsKSB7XG4gICAgdGhpcy5mb3JtTW9kZWwgPSBtb2RlbDtcbiAgfVxuXG4gIHByaXZhdGUgYWRkSW5pdEZsb3dWYWx1ZXNJdGVtcyhpdGVtczogTWV0aG9kRmllbGRbXSk6IHZvaWQge1xuICAgIGNvbnN0IGluaXRGbG93VmFsdWVzUmF3ID0gKHRoaXMuZm9ybU1vZGVsIGFzIGFueSk/LmdlbmVyYWxEYXRhXG4gICAgICA/LmluaXRGbG93VmFsdWVzO1xuICAgIGlmIChpbml0Rmxvd1ZhbHVlc1JhdyA9PT0gbnVsbCB8fCBpbml0Rmxvd1ZhbHVlc1JhdyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbGV0IHBhcnNlZDogYW55ID0gdW5kZWZpbmVkO1xuICAgIGlmICh0eXBlb2YgaW5pdEZsb3dWYWx1ZXNSYXcgPT09ICdzdHJpbmcnKSB7XG4gICAgICBjb25zdCB0cmltbWVkID0gaW5pdEZsb3dWYWx1ZXNSYXcudHJpbSgpO1xuICAgICAgaWYgKCF0cmltbWVkKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRyeSB7XG4gICAgICAgIHBhcnNlZCA9IEpTT04ucGFyc2UodHJpbW1lZCk7XG4gICAgICB9IGNhdGNoIHtcbiAgICAgICAgLy8gSWYgY29uZmlnIGNvbnRhaW5zIGludmFsaWQgSlNPTiwgZG8gbm90IGV4cG9zZSBhbnkgaW5pdEZsb3dWYWx1ZXMgZmllbGRzLlxuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHBhcnNlZCA9IGluaXRGbG93VmFsdWVzUmF3O1xuICAgIH1cblxuICAgIGNvbnN0IGV4aXN0aW5nSWRzID0gbmV3IFNldChpdGVtcy5tYXAoKGkpID0+IGkuaWQpKTtcbiAgICBjb25zdCBvdXQ6IE1ldGhvZEZpZWxkW10gPSBbXTtcblxuICAgIGNvbnN0IHdhbGsgPSAobm9kZTogYW55LCBwYXRoUGFydHM6IHN0cmluZ1tdKSA9PiB7XG4gICAgICBpZiAobm9kZSA9PT0gbnVsbCB8fCBub2RlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgaWYgKHBhdGhQYXJ0cy5sZW5ndGggPiAwKSBvdXQucHVzaCh0aGlzLmJ1aWxkSW5pdEZsb3dGaWVsZChwYXRoUGFydHMpKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShub2RlKSkge1xuICAgICAgICBub2RlLmZvckVhY2goKGNoaWxkLCBpZHgpID0+IHdhbGsoY2hpbGQsIFsuLi5wYXRoUGFydHMsIFN0cmluZyhpZHgpXSkpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmICh0eXBlb2Ygbm9kZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgT2JqZWN0LmtleXMobm9kZSkuZm9yRWFjaCgoa2V5KSA9PlxuICAgICAgICAgIHdhbGsobm9kZVtrZXldLCBbLi4ucGF0aFBhcnRzLCBrZXldKVxuICAgICAgICApO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmIChwYXRoUGFydHMubGVuZ3RoID4gMCkgb3V0LnB1c2godGhpcy5idWlsZEluaXRGbG93RmllbGQocGF0aFBhcnRzKSk7XG4gICAgfTtcblxuICAgIHdhbGsocGFyc2VkLCBbXSk7XG5cbiAgICBmb3IgKGNvbnN0IGYgb2Ygb3V0KSB7XG4gICAgICBpZiAoIWV4aXN0aW5nSWRzLmhhcyhmLmlkKSkge1xuICAgICAgICBpdGVtcy5wdXNoKGYpO1xuICAgICAgICBleGlzdGluZ0lkcy5hZGQoZi5pZCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBidWlsZEluaXRGbG93RmllbGQocGF0aFBhcnRzOiBzdHJpbmdbXSk6IE1ldGhvZEZpZWxkIHtcbiAgICBjb25zdCB1bmRlcnNjb3JlUGF0aCA9IHBhdGhQYXJ0cy5qb2luKCdfJyk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGZpZWxkTmFtZTogYGluaXRGbG93VmFsdWVzXyR7dW5kZXJzY29yZVBhdGh9YCxcbiAgICAgIGZpZWxkVHlwZTogU3RlcENvbnRyb2xUeXBlLk1ldGFkYXRhLFxuICAgICAgaWQ6IGBpbml0Rmxvd1ZhbHVlc18ke3VuZGVyc2NvcmVQYXRofWBcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIGZsdXhJdGVtcyhcbiAgICB1bnRpbFN0ZXBJZGVudGlmaWVyOiBzdHJpbmcgfCB1bmRlZmluZWQgPSB1bmRlZmluZWRcbiAgKTogTWV0aG9kRmllbGRbXSB7XG4gICAgbGV0IGl0ZW1zOiBNZXRob2RGaWVsZFtdID0gW107XG5cbiAgICBpZiAodGhpcy5mb3JtTW9kZWwubWV0YWRhdGFGaWVsZHMpIHtcbiAgICAgIHRoaXMuZm9ybU1vZGVsLm1ldGFkYXRhRmllbGRzLmZvckVhY2goKGZpZWxkVmFsdWUpID0+IHtcbiAgICAgICAgaXRlbXMucHVzaCh7XG4gICAgICAgICAgZmllbGROYW1lOiBmaWVsZFZhbHVlLFxuICAgICAgICAgIGZpZWxkVHlwZTogU3RlcENvbnRyb2xUeXBlLk1ldGFkYXRhLFxuICAgICAgICAgIGlkOiBgbWV0YWRhdGEuJHtmaWVsZFZhbHVlfWBcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLmFkZEluaXRGbG93VmFsdWVzSXRlbXMoaXRlbXMpO1xuXG4gICAgaWYgKCF0aGlzLmZvcm1Nb2RlbD8uZmx1eCkge1xuICAgICAgcmV0dXJuIGl0ZW1zO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmZvcm1Nb2RlbC5kb2N1bWVudHM/Lmxlbmd0aCA+IDApIHtcbiAgICAgIGl0ZW1zID0gaXRlbXMuY29uY2F0KHRoaXMuZXh0cmFjdERvY3VtZW50c0ZsdXhJdGVtcyh0aGlzLmZvcm1Nb2RlbC5mbHV4KSk7XG4gICAgfVxuICAgIGl0ZW1zID0gaXRlbXMuY29uY2F0KFxuICAgICAgdGhpcy5leHRyYWN0U2VjdGlvbnNGbHV4SXRlbXModGhpcy5mb3JtTW9kZWwuZmx1eCwgdW50aWxTdGVwSWRlbnRpZmllcilcbiAgICApO1xuXG4gICAgcmV0dXJuIGl0ZW1zO1xuICB9XG4gIHByaXZhdGUgZXh0cmFjdFNlY3Rpb25zRmx1eEl0ZW1zKFxuICAgIHN0ZXBzOiBTdGVwRGF0YVtdLFxuICAgIHVudGlsU3RlcElkZW50aWZpZXI6IHN0cmluZyB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZFxuICApOiBNZXRob2RGaWVsZFtdIHtcbiAgICBsZXQgaXRlbXM6IE1ldGhvZEZpZWxkW10gPSBbXTtcblxuICAgIGZvciAobGV0IHN0ZXAgb2Ygc3RlcHMpIHtcbiAgICAgIGlmIChzdGVwLnNlY3Rpb25zKSB7XG4gICAgICAgIGlmICh1bnRpbFN0ZXBJZGVudGlmaWVyICYmIHN0ZXAuaWRlbnRpZmllciA9PT0gdW50aWxTdGVwSWRlbnRpZmllcikge1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIHN0ZXAuc2VjdGlvbnMuZm9yRWFjaCgoc2VjdGlvbikgPT4ge1xuICAgICAgICAgIGlmIChzZWN0aW9uLmNvbnRyb2xzKSB7XG4gICAgICAgICAgICBzZWN0aW9uLmNvbnRyb2xzLmZvckVhY2goKGNvbnRyb2wpID0+IHtcbiAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgIFN0ZXBDb250cm9sVHlwZS5CdXR0b25zLFxuICAgICAgICAgICAgICAgICAgU3RlcENvbnRyb2xUeXBlLk5ld1JvdyxcbiAgICAgICAgICAgICAgICAgIFN0ZXBDb250cm9sVHlwZS5GbHV4SW5mbyxcbiAgICAgICAgICAgICAgICAgIFN0ZXBDb250cm9sVHlwZS5QYXJhZ3JhcGhcbiAgICAgICAgICAgICAgICBdLmluY2x1ZGVzKGNvbnRyb2wudHlwZSkgPT0gZmFsc2VcbiAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgaXRlbXMucHVzaCh7XG4gICAgICAgICAgICAgICAgICBmaWVsZE5hbWU6IGAke3N0ZXAubmFtZX0gLT4gJHtzZWN0aW9uLnRpdGxlfSAtPiAke2NvbnRyb2wudGl0bGV9YCxcbiAgICAgICAgICAgICAgICAgIGZpZWxkVHlwZTogY29udHJvbC50eXBlLFxuICAgICAgICAgICAgICAgICAgbWFudWxJbnB1dENvbnRyb2xUeXBlOiBjb250cm9sLnNwZWNpZmljQ29udHJvbERhdGE/LnR5cGUsXG4gICAgICAgICAgICAgICAgICBpZDogY29udHJvbC5pZGVudGlmaWVyXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGl0ZW1zO1xuICB9XG5cbiAgcHJpdmF0ZSBleHRyYWN0RG9jdW1lbnRzRmx1eEl0ZW1zKHN0ZXBEYXRhOiBTdGVwRGF0YVtdKTogTWV0aG9kRmllbGRbXSB7XG4gICAgbGV0IGl0ZW1zOiBNZXRob2RGaWVsZFtdID0gW107XG5cbiAgICBzdGVwRGF0YT8uZm9yRWFjaCgoc3RlcCkgPT4ge1xuICAgICAgaWYgKHN0ZXAudHlwZSA9PT0gRmx1eFR5cGUuVXBsb2FkRG9jdW1lbnQpIHtcbiAgICAgICAgc3RlcC5jb25maWc/LmRvY3VtZW50cz8uZm9yRWFjaChcbiAgICAgICAgICAoZG9jdW1lbnQ6IHsgZG9jdW1lbnRJZDogc3RyaW5nOyBuYW1lOiBzdHJpbmcgfSkgPT4ge1xuICAgICAgICAgICAgaXRlbXMucHVzaCh7XG4gICAgICAgICAgICAgIGZpZWxkTmFtZTogYCR7c3RlcC5uYW1lfSAtPiAke1xuICAgICAgICAgICAgICAgIEZsdXhIZWxwZXIuZ2V0RG9jdW1lbnROYW1lQnlJZChcbiAgICAgICAgICAgICAgICAgIGRvY3VtZW50Py5kb2N1bWVudElkLFxuICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtTW9kZWxcbiAgICAgICAgICAgICAgICApIHx8IGRvY3VtZW50Lm5hbWVcbiAgICAgICAgICAgICAgfWAsXG4gICAgICAgICAgICAgIGZpZWxkVHlwZTogc3RlcC50eXBlLFxuICAgICAgICAgICAgICBpZDogZG9jdW1lbnQ/LmRvY3VtZW50SWRcbiAgICAgICAgICAgICAgICA/IGB1cGxvYWQuJHtkb2N1bWVudC5kb2N1bWVudElkfWBcbiAgICAgICAgICAgICAgICA6IGAke3N0ZXAudHlwZX0uJHtzdGVwLm5hbWV9YFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICApO1xuICAgICAgfSBlbHNlIGlmIChzdGVwLnR5cGUgPT09IEZsdXhUeXBlLkdlbmVyYXRlRG9jdW1lbnQpIHtcbiAgICAgICAgc3RlcC5jb25maWc/LmdlbmVyYXRlZERvY3VtZW50cz8uZm9yRWFjaChcbiAgICAgICAgICAoZG9jdW1lbnQ6IHsgaWQ6IHN0cmluZzsgbmFtZTogc3RyaW5nIH0pID0+IHtcbiAgICAgICAgICAgIGl0ZW1zLnB1c2goe1xuICAgICAgICAgICAgICBmaWVsZE5hbWU6IGAke3N0ZXAubmFtZX0gLT4gJHtcbiAgICAgICAgICAgICAgICBGbHV4SGVscGVyLmdldERvY3VtZW50TmFtZUJ5SWQoZG9jdW1lbnQ/LmlkLCB0aGlzLmZvcm1Nb2RlbCkgfHxcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5uYW1lXG4gICAgICAgICAgICAgIH1gLFxuICAgICAgICAgICAgICBmaWVsZFR5cGU6IHN0ZXAudHlwZSxcbiAgICAgICAgICAgICAgaWQ6IGRvY3VtZW50Py5pZFxuICAgICAgICAgICAgICAgID8gYGdlbmVyYXRlLiR7ZG9jdW1lbnQuaWR9YFxuICAgICAgICAgICAgICAgIDogYCR7c3RlcC50eXBlfS4ke3N0ZXAubmFtZX1gXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgICB9IGVsc2UgaWYgKHN0ZXAudHlwZSA9PT0gRmx1eFR5cGUuU2lnbikge1xuICAgICAgICBpZiAoc3RlcC5jb25maWc/LmRvY3VtZW50cykge1xuICAgICAgICAgIHN0ZXAuY29uZmlnPy5kb2N1bWVudHMuZm9yRWFjaChcbiAgICAgICAgICAgIChkb2N1bWVudDogeyBpZDogc3RyaW5nOyBuYW1lOiBzdHJpbmcgfSkgPT4ge1xuICAgICAgICAgICAgICBpdGVtcy5wdXNoKHtcbiAgICAgICAgICAgICAgICBmaWVsZE5hbWU6IGAke3N0ZXAubmFtZX0gLT4gJHtcbiAgICAgICAgICAgICAgICAgIEZsdXhIZWxwZXIuZ2V0RG9jdW1lbnROYW1lQnlJZChcbiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQ/LmlkLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm1Nb2RlbFxuICAgICAgICAgICAgICAgICAgKSB8fCBkb2N1bWVudC5uYW1lXG4gICAgICAgICAgICAgICAgfWAsXG4gICAgICAgICAgICAgICAgZmllbGRUeXBlOiBzdGVwLnR5cGUsXG4gICAgICAgICAgICAgICAgaWQ6IGRvY3VtZW50Py5pZFxuICAgICAgICAgICAgICAgICAgPyBgc2lnbi4ke2RvY3VtZW50LmlkfWBcbiAgICAgICAgICAgICAgICAgIDogYCR7c3RlcC50eXBlfS4ke3N0ZXAubmFtZX1gXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc3RlcC5jb25maWc/LnN5c3RlbURvY3VtZW50cykge1xuICAgICAgICAgIHN0ZXAuY29uZmlnPy5zeXN0ZW1Eb2N1bWVudHMuZm9yRWFjaChcbiAgICAgICAgICAgIChkb2N1bWVudDogeyBpZDogc3RyaW5nOyBuYW1lOiBzdHJpbmcgfSkgPT4ge1xuICAgICAgICAgICAgICBpdGVtcy5wdXNoKHtcbiAgICAgICAgICAgICAgICBmaWVsZE5hbWU6IGAke3N0ZXAubmFtZX0gLT4gJHtcbiAgICAgICAgICAgICAgICAgIEZsdXhIZWxwZXIuZ2V0RG9jdW1lbnROYW1lQnlJZChcbiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQ/LmlkLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm1Nb2RlbFxuICAgICAgICAgICAgICAgICAgKSB8fCBkb2N1bWVudC5uYW1lXG4gICAgICAgICAgICAgICAgfWAsXG4gICAgICAgICAgICAgICAgZmllbGRUeXBlOiBzdGVwLnR5cGUsXG4gICAgICAgICAgICAgICAgaWQ6IGRvY3VtZW50Py5pZFxuICAgICAgICAgICAgICAgICAgPyBgc3lzdGVtLiR7ZG9jdW1lbnQuaWR9YFxuICAgICAgICAgICAgICAgICAgOiBgJHtzdGVwLnR5cGV9LiR7c3RlcC5uYW1lfWBcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBpdGVtcztcbiAgfVxuXG4gIHB1YmxpYyBmbHV4SXRlbXNXaXRoR2V0QXBpTWV0aG9kcyhcbiAgICBleGNsdWRlZE1ldGhvZElkOiBzdHJpbmcgPSAnJ1xuICApOiBNZXRob2RGaWVsZFtdIHtcbiAgICBsZXQgaXRlbXMgPSB0aGlzLmZsdXhJdGVtcygpO1xuICAgIHRoaXMuZm9ybU1vZGVsLmFwaS5nZXRJdGVtcy5mb3JFYWNoKChhcGlNZXRob2QpID0+IHtcbiAgICAgIGlmIChhcGlNZXRob2QuaWQgIT09IGV4Y2x1ZGVkTWV0aG9kSWQpIHtcbiAgICAgICAgYXBpTWV0aG9kLmZpZWxkcz8uZm9yRWFjaCgoZikgPT4ge1xuICAgICAgICAgIGl0ZW1zLnB1c2goe1xuICAgICAgICAgICAgZmllbGROYW1lOiBgJHthcGlNZXRob2QubWV0aG9kfSAtPiAke2YuZmllbGROYW1lfWAsXG4gICAgICAgICAgICBmaWVsZFR5cGU6IFN0ZXBDb250cm9sVHlwZS5BcGlNZXRob2RGaWVsZCxcbiAgICAgICAgICAgIGlkOiBmLmlkXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGl0ZW1zO1xuICB9XG5cbiAgcHVibGljIG9mZmVyTWV0aG9kc0l0ZW1zKCk6IE1ldGhvZEZpZWxkW10ge1xuICAgIGxldCBpdGVtczogTWV0aG9kRmllbGRbXSA9IFtdO1xuXG4gICAgbGV0IG9mZmVyTWV0aG9kc0lkczogc3RyaW5nW10gPSBbXTtcbiAgICB0aGlzLmZvcm1Nb2RlbC5wYXJ0bmVycz8uZm9yRWFjaCgocCkgPT4ge1xuICAgICAgcC5nZW5lcmFsU2V0dGluZ3Mub2ZmZXJzPy5mb3JFYWNoKChvKSA9PiB7XG4gICAgICAgIG9mZmVyTWV0aG9kc0lkcy5wdXNoKG8uYXBpTWV0aG9kSWQpO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBvZmZlck1ldGhvZHNJZHMgPSBbLi4ubmV3IFNldChvZmZlck1ldGhvZHNJZHMpXTtcblxuICAgIGNvbnN0IGFsbEFwaUl0ZW1zID0gW1xuICAgICAgLi4udGhpcy5mb3JtTW9kZWwuYXBpLmdldEl0ZW1zLFxuICAgICAgLi4udGhpcy5mb3JtTW9kZWwuYXBpLnZhbGlkYXRpb25JdGVtcyxcbiAgICAgIC4uLnRoaXMuZm9ybU1vZGVsLmFwaS5zZW5kSXRlbXNcbiAgICBdO1xuXG4gICAgb2ZmZXJNZXRob2RzSWRzLmZvckVhY2goKG1ldGhvZElkKSA9PiB7XG4gICAgICBjb25zdCBhcGlNZXRob2QgPSBhbGxBcGlJdGVtcy5maW5kKChpdGVtKSA9PiBpdGVtLmlkID09PSBtZXRob2RJZCk7XG4gICAgICBpZiAoYXBpTWV0aG9kKSB7XG4gICAgICAgIGFwaU1ldGhvZC5maWVsZHM/LmZvckVhY2goKGYpID0+IHtcbiAgICAgICAgICBpdGVtcy5wdXNoKHtcbiAgICAgICAgICAgIGZpZWxkTmFtZTogYCR7YXBpTWV0aG9kLm1ldGhvZH0gLT4gJHtmLmZpZWxkTmFtZX1gLFxuICAgICAgICAgICAgZmllbGRUeXBlOiBGbHV4VHlwZS5WaWV3T2ZmZXIsXG4gICAgICAgICAgICBpZDogYGFwaV8ke2FwaU1ldGhvZC5pZH0gLT4gJHtmLmlkfWBcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gaXRlbXM7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEFwaURhdGEge1xuICBnZXRJdGVtczogR2V0QXBpSXRlbVtdO1xuICB2YWxpZGF0aW9uSXRlbXM6IEFwaUl0ZW1bXTtcbiAgc2VuZEl0ZW1zOiBBcGlJdGVtW107XG59XG5cbmV4cG9ydCBjbGFzcyBBcGlJdGVtIHtcbiAgaWQ6IHN0cmluZztcbiAgbWV0aG9kOiBzdHJpbmc7XG4gIGZpZWxkczogTWV0aG9kRmllbGRbXTtcbiAgdHlwZTogQXBpTWV0aG9kVHlwZTtcbn1cblxuZXhwb3J0IGNsYXNzIEdldEFwaUl0ZW0ge1xuICBpZDogc3RyaW5nO1xuICBtZXRob2Q6IHN0cmluZztcbiAgZmllbGRzOiBHZXRNZXRob2RGaWVsZFtdO1xuICB0eXBlOiBBcGlNZXRob2RUeXBlO1xufVxuZXhwb3J0IGNsYXNzIERlc2lnbk1vZGVsIHtcbiAgZm9udHM6IEZvbnRDb25maWdbXSA9IFtdO1xuICBidXR0b25zOiBCdXR0b25Db25maWdbXSA9IFtdO1xuICBvdHBBY3Rpb25CdXR0b25zOiBCdXR0b25Db25maWdbXSA9IFtdO1xuICBjb21wb25lbnRzOiBDb21wb25lbnRDb25maWdbXSA9IFtdO1xuICB0YWJsZXM6IFRhYmxlQ29uZmlnW10gPSBbXTtcbiAgYmFja2dyb3VuZENvbG9yOiBzdHJpbmc7XG4gIGZvbnRTaXplOiBzdHJpbmc7XG4gIGJ1dHRvbnNIb3Jpem9udGFsUG9zaXRpb246IHN0cmluZztcbiAgYnV0dG9uc1ZlcnRpY2FsUG9zaXRpb246IHN0cmluZztcbiAgbWF4V2lkdGg6IHN0cmluZztcbiAgbWFyZ2luTGVmdDogc3RyaW5nO1xuICBtYXJnaW5SaWdodDogc3RyaW5nO1xuICBtYXJnaW5Ub3A6IHN0cmluZztcbiAgbWFyZ2luQm90dG9tOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoZGF0YT86IGFueSkge1xuICAgIGlmIChkYXRhKSB7XG4gICAgICBpZiAoZGF0YS5mb250cykge1xuICAgICAgICB0aGlzLmZvbnRzID0gZGF0YS5mb250cy5tYXAoKGZvbnQ6IGFueSkgPT4gbmV3IEZvbnRDb25maWcoZm9udCkpO1xuICAgICAgfVxuXG4gICAgICBpZiAoZGF0YS5idXR0b25zKSB7XG4gICAgICAgIHRoaXMuYnV0dG9ucyA9IGRhdGEuYnV0dG9ucy5tYXAoXG4gICAgICAgICAgKGJ1dHRvbjogYW55KSA9PiBuZXcgQnV0dG9uQ29uZmlnKGJ1dHRvbilcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGRhdGEuY29tcG9uZW50cykge1xuICAgICAgICB0aGlzLmNvbXBvbmVudHMgPSBkYXRhLmNvbXBvbmVudHMubWFwKFxuICAgICAgICAgIChjb21wb25lbnQ6IGFueSkgPT4gbmV3IENvbXBvbmVudENvbmZpZyhjb21wb25lbnQpXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGlmIChkYXRhLnRhYmxlcykge1xuICAgICAgICB0aGlzLnRhYmxlcyA9IGRhdGEudGFibGVzLm1hcCgodGFibGU6IGFueSkgPT4gbmV3IFRhYmxlQ29uZmlnKHRhYmxlKSk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuYmFja2dyb3VuZENvbG9yID0gZGF0YS5iYWNrZ3JvdW5kQ29sb3I7XG4gICAgICB0aGlzLmZvbnRTaXplID0gZGF0YS5mb250U2l6ZTtcbiAgICAgIHRoaXMuYnV0dG9uc0hvcml6b250YWxQb3NpdGlvbiA9IGRhdGEuaG9yaXpvbnRhbFBvc2l0aW9uO1xuICAgICAgdGhpcy5idXR0b25zVmVydGljYWxQb3NpdGlvbiA9IGRhdGEudmVydGljYWxQb3NpdGlvbjtcbiAgICAgIHRoaXMubWF4V2lkdGggPSBkYXRhLm1heFdpZHRoO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgRm9udENvbmZpZyB7XG4gIG5hbWU6IHN0cmluZztcbiAgZm9udEZhbWlseTogc3RyaW5nO1xuICBmb250U2l6ZTogc3RyaW5nO1xuICBjb2xvcjogc3RyaW5nO1xuICBmb250V2VpZ2h0OiBzdHJpbmc7XG4gIHRleHRBbGlnbjogc3RyaW5nO1xuICBsZXR0ZXJTcGFjaW5nOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoZGF0YT86IGFueSkge1xuICAgIGlmIChkYXRhKSB7XG4gICAgICB0aGlzLm5hbWUgPSBkYXRhLm5hbWU7XG4gICAgICB0aGlzLmZvbnRGYW1pbHkgPSBkYXRhLmZvbnRGYW1pbHk7XG4gICAgICB0aGlzLmZvbnRTaXplID0gZGF0YS5mb250U2l6ZTtcbiAgICAgIHRoaXMuY29sb3IgPSBkYXRhLmNvbG9yO1xuICAgICAgdGhpcy5mb250V2VpZ2h0ID0gZGF0YS5mb250V2VpZ2h0O1xuICAgICAgdGhpcy50ZXh0QWxpZ24gPSBkYXRhLnRleHRBbGlnbjtcbiAgICAgIHRoaXMubGV0dGVyU3BhY2luZyA9IGRhdGEubGV0dGVyU3BhY2luZztcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEJ1dHRvbkNvbmZpZyB7XG4gIG5hbWU6IHN0cmluZztcbiAgYmFja2dyb3VuZENvbG9yOiBzdHJpbmc7XG4gIGNvbG9yOiBzdHJpbmc7XG4gIGJvcmRlcjogc3RyaW5nO1xuICBib3JkZXJDb2xvcjogc3RyaW5nO1xuICBib3JkZXJSYWRpdXM6IHN0cmluZztcbiAgaG9yaXpvbnRhbFBhZGRpbmc6IHN0cmluZztcbiAgdmVydGljYWxQYWRkaW5nOiBzdHJpbmc7XG4gIGZvbnRGYW1pbHk6IHN0cmluZztcbiAgZm9udFNpemU6IHN0cmluZztcbiAgbGV0dGVyU3BhY2luZzogc3RyaW5nO1xuICB3aWR0aDogc3RyaW5nO1xuICBoZWlnaHQ6IHN0cmluZztcbiAgbWluV2lkdGg6IHN0cmluZztcbiAgbWluSGVpZ2h0OiBzdHJpbmc7XG4gIG1heFdpZHRoOiBzdHJpbmc7XG4gIG1heEhlaWdodDogc3RyaW5nO1xuICBob3Jpem9udGFsUG9zaXRpb24/OiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoZGF0YT86IGFueSkge1xuICAgIGlmIChkYXRhKSB7XG4gICAgICB0aGlzLm5hbWUgPSBkYXRhLm5hbWU7XG4gICAgICB0aGlzLmJhY2tncm91bmRDb2xvciA9IGRhdGEuYmFja2dyb3VuZENvbG9yO1xuICAgICAgdGhpcy5jb2xvciA9IGRhdGEuY29sb3I7XG4gICAgICB0aGlzLmJvcmRlciA9IGRhdGEuYm9yZGVyO1xuICAgICAgdGhpcy5ib3JkZXJDb2xvciA9IGRhdGEuYm9yZGVyQ29sb3I7XG4gICAgICB0aGlzLmJvcmRlclJhZGl1cyA9IGRhdGEuYm9yZGVyUmFkaXVzO1xuICAgICAgdGhpcy5ob3Jpem9udGFsUGFkZGluZyA9IGRhdGEuaG9yaXpvbnRhbFBhZGRpbmc7XG4gICAgICB0aGlzLnZlcnRpY2FsUGFkZGluZyA9IGRhdGEudmVydGljYWxQYWRkaW5nO1xuICAgICAgdGhpcy5mb250RmFtaWx5ID0gZGF0YS5mb250RmFtaWx5O1xuICAgICAgdGhpcy5mb250U2l6ZSA9IGRhdGEuZm9udFNpemU7XG4gICAgICB0aGlzLmxldHRlclNwYWNpbmcgPSBkYXRhLmxldHRlclNwYWNpbmc7XG4gICAgICB0aGlzLndpZHRoID0gZGF0YS53aWR0aDtcbiAgICAgIHRoaXMuaGVpZ2h0ID0gZGF0YS5oZWlnaHQ7XG4gICAgICB0aGlzLm1pbldpZHRoID0gZGF0YS5taW5XaWR0aDtcbiAgICAgIHRoaXMubWluSGVpZ2h0ID0gZGF0YS5taW5IZWlnaHQ7XG4gICAgICB0aGlzLm1heFdpZHRoID0gZGF0YS5tYXhXaWR0aDtcbiAgICAgIHRoaXMubWF4SGVpZ2h0ID0gZGF0YS5tYXhIZWlnaHQ7XG4gICAgICB0aGlzLmhvcml6b250YWxQb3NpdGlvbiA9IGRhdGEuaG9yaXpvbnRhbFBvc2l0aW9uO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgVGFibGVDb25maWcge1xuICBoZWFkZXJDb25maWc6IEhlYWRlckNvbmZpZztcbiAgZGV0YWlsQ29uZmlnOiBEZXRhaWxDb25maWc7XG5cbiAgY29uc3RydWN0b3IodGFibGU/OiBhbnkpIHtcbiAgICBpZiAodGFibGUpIHtcbiAgICAgIHRoaXMuaGVhZGVyQ29uZmlnID0gdGFibGUuaGVhZGVyQ29uZmlnO1xuICAgICAgdGhpcy5kZXRhaWxDb25maWcgPSB0YWJsZS5kZXRhaWxDb25maWc7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBIZWFkZXJDb25maWcge1xuICBuYW1lOiBzdHJpbmc7XG4gIGJhY2tncm91bmRDb2xvcjogc3RyaW5nO1xuICB0ZXh0Q29sb3I6IHN0cmluZztcbiAgYm9yZGVyOiBzdHJpbmc7XG4gIGJvcmRlckNvbG9yOiBzdHJpbmc7XG4gIHRleHRBbGlnbjogc3RyaW5nO1xuICBmb250RmFtaWx5OiBzdHJpbmc7XG4gIGZvbnRTaXplOiBzdHJpbmc7XG4gIGxldHRlclNwYWNpbmc6IHN0cmluZztcbiAgcGFkZGluZzogc3RyaW5nO1xuICBib3JkZXJDb2xsYXBzZTogc3RyaW5nO1xuICBib3JkZXJTcGFjaW5nOiBzdHJpbmc7XG4gIHZlcnRpY2FsQWxpZ246IHN0cmluZztcbiAgd2lkdGg6IHN0cmluZztcbiAgaGVpZ2h0OiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoZGF0YT86IGFueSkge1xuICAgIGlmIChkYXRhKSB7XG4gICAgICB0aGlzLm5hbWUgPSBkYXRhLm5hbWU7XG4gICAgICB0aGlzLmJhY2tncm91bmRDb2xvciA9IGRhdGEuYmFja2dyb3VuZENvbG9yO1xuICAgICAgdGhpcy50ZXh0Q29sb3IgPSBkYXRhLmNvbG9yO1xuICAgICAgdGhpcy5ib3JkZXIgPSBkYXRhLmJvcmRlcjtcbiAgICAgIHRoaXMudGV4dEFsaWduID0gZGF0YS50ZXh0QWxpZ247XG4gICAgICB0aGlzLmZvbnRGYW1pbHkgPSBkYXRhLmZvbnRGYW1pbHk7XG4gICAgICB0aGlzLmZvbnRTaXplID0gZGF0YS5mb250U2l6ZTtcbiAgICAgIHRoaXMubGV0dGVyU3BhY2luZyA9IGRhdGEubGV0dGVyU3BhY2luZztcbiAgICAgIHRoaXMucGFkZGluZyA9IGRhdGEucGFkZGluZztcbiAgICAgIHRoaXMuYm9yZGVyQ29sbGFwc2UgPSBkYXRhLmJvcmRlckNvbGxhcHNlO1xuICAgICAgdGhpcy5ib3JkZXJTcGFjaW5nID0gZGF0YS5ib3JkZXJTcGFjaW5nO1xuICAgICAgdGhpcy52ZXJ0aWNhbEFsaWduID0gZGF0YS52ZXJ0aWNhbEFsaWduO1xuICAgICAgdGhpcy53aWR0aCA9IGRhdGEud2lkdGg7XG4gICAgICB0aGlzLmhlaWdodCA9IGRhdGEuaGVpZ2h0O1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgRGV0YWlsQ29uZmlnIHtcbiAgbmFtZTogc3RyaW5nO1xuICBiYWNrZ3JvdW5kQ29sb3I6IHN0cmluZztcbiAgdGV4dENvbG9yOiBzdHJpbmc7XG4gIHRleHRBbGlnbjogc3RyaW5nO1xuICBsZXR0ZXJTcGFjaW5nOiBzdHJpbmc7XG4gIHBhZGRpbmc6IHN0cmluZztcbiAgcm93Qm9yZGVyOiBzdHJpbmc7XG4gIHJvd0JvcmRlckNvbG9yOiBzdHJpbmc7XG4gIGhvdmVyQmFja2dyb3VuZENvbG9yOiBzdHJpbmc7XG4gIHZlcnRpY2FsQWxpZ246IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihkYXRhPzogYW55KSB7XG4gICAgaWYgKGRhdGEpIHtcbiAgICAgIHRoaXMubmFtZSA9IGRhdGEubmFtZTtcbiAgICAgIHRoaXMuYmFja2dyb3VuZENvbG9yID0gZGF0YS5iYWNrZ3JvdW5kQ29sb3I7XG4gICAgICB0aGlzLnRleHRDb2xvciA9IGRhdGEuY29sb3I7XG4gICAgICB0aGlzLnRleHRBbGlnbiA9IGRhdGEudGV4dEFsaWduO1xuICAgICAgdGhpcy5sZXR0ZXJTcGFjaW5nID0gZGF0YS5sZXR0ZXJTcGFjaW5nO1xuICAgICAgdGhpcy5wYWRkaW5nID0gZGF0YS5wYWRkaW5nO1xuICAgICAgdGhpcy5yb3dCb3JkZXIgPSBkYXRhLnJvd0JvcmRlcjtcbiAgICAgIHRoaXMuaG92ZXJCYWNrZ3JvdW5kQ29sb3IgPSBkYXRhLmhvdmVyQmFja2dyb3VuZENvbG9yO1xuICAgICAgdGhpcy52ZXJ0aWNhbEFsaWduID0gZGF0YS52ZXJ0aWNhbEFsaWduO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQ29tcG9uZW50Q29uZmlnIHtcbiAgbmFtZTogc3RyaW5nO1xuICBiYWNrZ3JvdW5kQ29sb3I6IHN0cmluZztcbiAgYm9yZGVyOiBzdHJpbmc7XG4gIGJvcmRlclJhZGl1czogc3RyaW5nO1xuICBsYWJlbFN0eWxlOiBzdHJpbmc7XG4gIHRleHRBbGlnbjogc3RyaW5nO1xuICBjb2xvcj86IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgYm9yZGVyQ29sb3I/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIHdlaWdodD86IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgc3RhcnRDb2xvcj86IHN0cmluZztcbiAgZW5kQ29sb3I/OiBzdHJpbmc7XG4gIGhlaWdodD86IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihkYXRhPzogYW55KSB7XG4gICAgaWYgKGRhdGEpIHtcbiAgICAgIHRoaXMubmFtZSA9IGRhdGEubmFtZTtcbiAgICAgIHRoaXMuYmFja2dyb3VuZENvbG9yID0gZGF0YS5iYWNrZ3JvdW5kQ29sb3I7XG4gICAgICB0aGlzLmJvcmRlciA9IGRhdGEuYm9yZGVyO1xuICAgICAgdGhpcy5ib3JkZXJSYWRpdXMgPSBkYXRhLmJvcmRlclJhZGl1cztcbiAgICAgIHRoaXMubGFiZWxTdHlsZSA9IGRhdGEubGFiZWxTdHlsZTtcbiAgICAgIHRoaXMudGV4dEFsaWduID0gZGF0YS50ZXh0QWxpZ247XG4gICAgICB0aGlzLmNvbG9yID0gZGF0YS5jb2xvcjtcbiAgICAgIHRoaXMud2VpZ2h0ID0gZGF0YS53ZWlnaHQ7XG4gICAgICB0aGlzLnN0YXJ0Q29sb3IgPSBkYXRhLnN0YXJ0Q29sb3I7XG4gICAgICB0aGlzLmVuZENvbG9yID0gZGF0YS5lbmRDb2xvcjtcbiAgICAgIHRoaXMuaGVpZ2h0ID0gZGF0YS5oZWlnaHQ7XG4gICAgfVxuICB9XG59XG5leHBvcnQgY2xhc3MgRGlzcGxheU1vZGVsIHtcbiAgc2VjdGlvbnM6IFNlY3Rpb25EYXRhW107XG59XG5cbmV4cG9ydCBjbGFzcyBHZW5lcmFsRGF0YU1vZGVsIHtcbiAgbmFtZTogc3RyaW5nO1xuICBhcHBsaWNhdGlvblR5cGU6IG51bWJlcjtcbiAgbGFuZ3VhZ2VzOiBzdHJpbmdbXTtcbiAgZGVmYXVsdExhbmd1YWdlOiBzdHJpbmc7XG4gIGNvbnRpbnVlV2l0aE9mZmVyOiBib29sZWFuO1xuICBzaG93Q291bnRlclN0ZXA6IGJvb2xlYW47XG4gIHNob3dOYW1lU3RlcDogYm9vbGVhbjtcbiAgc2hvd0FsbFN0ZXBzOiBib29sZWFuO1xuICBzaG93UHJvZ3Jlc3NCYXI6IGJvb2xlYW47XG4gIGluaXRGbG93VmFsdWVzPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZvcm1zU3RhdGUge1xuICBkYXRhOiBGb3JtTW9kZWw7XG4gIHNlbGVjdGVkVGFiOiBzdHJpbmc7XG4gIHZlcnNpb246IHN0cmluZztcbiAgY2FuR2V0RnJvbVByb2Q6IGJvb2xlYW47XG4gIGNhbkdldEZyb21UZXN0OiBib29sZWFuO1xuICBjYW5QdWJsaXNoSW5Qcm9kOiBib29sZWFuO1xuICBjYW5QdWJsaXNoSW5UZXN0OiBib29sZWFuO1xuICBhcHBsaWNhdGlvblV1aWQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGNvbnN0IGluaXRpYWxGb3JtdWxhcmVTdGF0ZTogRm9ybXNTdGF0ZSA9IHtcbiAgZGF0YToge1xuICAgIGFwcGxpY2F0aW9uSWQ6IDAsXG4gICAgYXBwbGljYXRpb25VdWlkOiAnJyxcbiAgICBnZW5lcmFsRGF0YToge1xuICAgICAgbmFtZTogJycsXG4gICAgICBhcHBsaWNhdGlvblR5cGU6IDAsXG4gICAgICBsYW5ndWFnZXM6IFtdLFxuICAgICAgZGVmYXVsdExhbmd1YWdlOiAnJyxcbiAgICAgIGNvbnRpbnVlV2l0aE9mZmVyOiBmYWxzZSxcbiAgICAgIHNob3dDb3VudGVyU3RlcDogZmFsc2UsXG4gICAgICBzaG93TmFtZVN0ZXA6IGZhbHNlLFxuICAgICAgc2hvd0FsbFN0ZXBzOiBmYWxzZSxcbiAgICAgIHNob3dQcm9ncmVzc0JhcjogZmFsc2UsXG4gICAgICBpbml0Rmxvd1ZhbHVlczogJydcbiAgICB9LFxuICAgIGRlc2lnbjoge1xuICAgICAgZm9udHM6IFtdLFxuICAgICAgYnV0dG9uczogW10sXG4gICAgICBvdHBBY3Rpb25CdXR0b25zOiBbXSxcbiAgICAgIGNvbXBvbmVudHM6IFtdLFxuICAgICAgdGFibGVzOiBbXSxcbiAgICAgIGJhY2tncm91bmRDb2xvcjogJycsXG4gICAgICBmb250U2l6ZTogJycsXG4gICAgICBidXR0b25zSG9yaXpvbnRhbFBvc2l0aW9uOiAnJyxcbiAgICAgIGJ1dHRvbnNWZXJ0aWNhbFBvc2l0aW9uOiAnJyxcbiAgICAgIG1heFdpZHRoOiAnJyxcbiAgICAgIG1hcmdpbkxlZnQ6ICcnLFxuICAgICAgbWFyZ2luUmlnaHQ6ICcnLFxuICAgICAgbWFyZ2luVG9wOiAnJyxcbiAgICAgIG1hcmdpbkJvdHRvbTogJydcbiAgICB9LFxuICAgIGZsdXg6IFtdLFxuICAgIGFwaTogeyBnZXRJdGVtczogW10sIHZhbGlkYXRpb25JdGVtczogW10sIHNlbmRJdGVtczogW10gfSxcbiAgICBwYXJ0bmVyczogW10sXG4gICAgZG9jdW1lbnRzOiBbXSxcbiAgICBzdGF0dXNlczogW10sXG4gICAgZGlzcGxheToge1xuICAgICAgc2VjdGlvbnM6IFtdXG4gICAgfSxcbiAgICBnZW5lcmF0ZWRDc3M6IHt9LFxuICAgIG1ldGFkYXRhRmllbGRzOiBbXSxcbiAgICBlcnJvcnM6IHt9LFxuICAgIGFwcGxpY2F0aW9uTWFwcGluZ3M6IHtcbiAgICAgIGFwcGxpY2F0aW9uVHlwZUlkOiAwLFxuICAgICAgY29sdW1uTWFwcGluZ3M6IFtdXG4gICAgfSxcbiAgICBwYXJlbnRDaGlsZENvbmZpZzogdW5kZWZpbmVkXG4gIH0sXG4gIHNlbGVjdGVkVGFiOiAnRGF0ZSBnZW5lcmFsZScsXG4gIGNhbkdldEZyb21Qcm9kOiBmYWxzZSxcbiAgY2FuR2V0RnJvbVRlc3Q6IGZhbHNlLFxuICBjYW5QdWJsaXNoSW5Qcm9kOiBmYWxzZSxcbiAgY2FuUHVibGlzaEluVGVzdDogZmFsc2UsXG4gIGFwcGxpY2F0aW9uVXVpZDogJycsXG4gIHZlcnNpb246ICcnXG59O1xuXG5leHBvcnQgY2xhc3MgUGFydG5lckRpY3Rpb25hcnlNYXBwaW5nIHtcbiAgZGljdGlvbmFyeUlkOiBzdHJpbmc7XG4gIGRpY3Rpb25hcnlOYW1lOiBzdHJpbmc7XG4gIG1hcHBpbmdzOiBQYXJ0bmVyS2V5VmFsdWVJdGVtW107XG59XG5cbmV4cG9ydCBjbGFzcyBQYXJ0bmVyU2V0dGluZ3Mge1xuICBwYXJ0bmVyTWV0aG9kc0FwaTogUGFydG5lck1ldGhvZEFwaVtdID0gW107XG59XG5cbmV4cG9ydCBjbGFzcyBQYXJ0bmVyTWV0aG9kQXBpIHtcbiAgbWV0aG9kSWQ6IHN0cmluZztcbiAgbWV0aG9kVHlwZTogc3RyaW5nO1xuICBjYWxsVHlwZTogc3RyaW5nO1xuICBib2R5Q29uZmlndXJhdGlvbjogUGFydG5lck1ldGhvZEJvZHk7XG4gIHJlc3BvbnNlQ29uZmlndXJhdGlvbjogUGFydG5lck1ldGhvZFJlc3BvbnNlO1xuICB1cmxDb25maWd1cmF0aW9uOiBQYXJ0bmVyTWV0aG9kVXJsO1xuICBhdXRoVmFsdWU6IFBhcnRuZXJNZXRob2RBcGlBdXRoO1xuICBoZWFkZXJzOiBQYXJ0bmVyS2V5VmFsdWVJdGVtW107XG4gIC8vIElOQk9VTkQtc3BlY2lmaWMgcHJvcGVydGllc1xuICBpbmJvdW5kTWV0aG9kVHlwZT86IEluYm91bmRNZXRob2RUeXBlOyAvLyBUeXBlIG9mIElOQk9VTkQgbWV0aG9kXG59XG5cbmV4cG9ydCBlbnVtIEluYm91bmRNZXRob2RUeXBlIHtcbiAgU3RhbmRhcmQgPSAnU3RhbmRhcmQnLFxuICBTdGF0dXNNZXRob2QgPSAnU3RhdHVzTWV0aG9kJ1xufVxuXG5leHBvcnQgY2xhc3MgUGFydG5lck1ldGhvZEFwaUF1dGgge1xuICBoZWFkZXJOYW1lOiBzdHJpbmcgfCBudWxsO1xuICBhcGlLZXk6IHN0cmluZyB8IG51bGw7XG4gIGF1dGhUeXBlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBQYXJ0bmVyS2V5VmFsdWVJdGVtIHtcbiAga2V5OiBzdHJpbmc7XG4gIGtleU5hbWU6IHN0cmluZyB8IG51bGw7XG4gIHZhbHVlOiBzdHJpbmc7XG59XG5leHBvcnQgY2xhc3MgUGFydG5lclN0YXR1c01hcHBpbmcge1xuICBwYXJ0bmVyU3RhdHVzOiBzdHJpbmc7XG4gIGFwcFN0YXR1czogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgUGFydG5lck1ldGhvZFVybCB7XG4gIHVybFZhbHVlOiBzdHJpbmc7XG4gIHRpbWVvdXQ6IG51bWJlcjtcbiAgdGVzdFVybDogc3RyaW5nO1xuICBwcm9kVXJsOiBzdHJpbmc7XG4gIHBhcmFtZXRlck1hcHBpbmdzOiBVcmxNYXBGaWVsZHNbXTtcbn1cblxuZXhwb3J0IGNsYXNzIFBhcnRuZXJNZXRob2RSZXNwb25zZSB7XG4gIGNvbnRlbnRUeXBlOiBzdHJpbmc7XG4gIGpzb25WYWx1ZTogc3RyaW5nO1xuICByZXNwb25zZU1hcEZpZWxkczogRmllbGRzTWFwcGluZ1tdO1xufVxuXG5leHBvcnQgY2xhc3MgVXJsTWFwRmllbGRzIHtcbiAgdXJsUGFyYW1ldGVyOiBzdHJpbmc7XG4gIGZsdXhGaWVsZDogc3RyaW5nO1xuICBmbHV4RmllbGRJZDogc3RyaW5nO1xuICBmaWVsZFR5cGU6IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIFBhcnRuZXJNZXRob2RCb2R5IHtcbiAgY29udGVudFR5cGU6IHN0cmluZztcbiAganNvblZhbHVlOiBzdHJpbmc7XG4gIGJvZHlNYXBGaWVsZHM6IEZpZWxkc01hcHBpbmdbXTtcbn1cblxuZXhwb3J0IGNsYXNzIEZpZWxkc01hcHBpbmcge1xuICBwYXJ0bmVyRmllbGQ6IHN0cmluZztcbiAgZmx1eEZpZWxkSWQ6IHN0cmluZztcbiAgbWV0aG9kRmllbGRJZDogc3RyaW5nO1xuICBmaWVsZFR5cGU6IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIE1ldGhvZEZpZWxkIHtcbiAgaWQ6IHN0cmluZztcbiAgZmllbGROYW1lOiBzdHJpbmc7XG4gIGZpZWxkVHlwZTogU3RlcENvbnRyb2xUeXBlIHwgRmx1eFR5cGUgfCBzdHJpbmc7XG4gIG1hbnVsSW5wdXRDb250cm9sVHlwZT86IE1hbnVhbElucHV0Q29udHJvbFR5cGUgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG4gIGZpZWxkVmFsdWU/OiBzdHJpbmcgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG4gIGV4cGVjdGVkVmFsdWU/OiBzdHJpbmcgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBjbGFzcyBHZXRNZXRob2RGaWVsZCB7XG4gIGlkOiBzdHJpbmc7XG4gIGZpZWxkTmFtZTogc3RyaW5nO1xuICBmaWVsZFR5cGU6IFN0ZXBDb250cm9sVHlwZSB8IEZsdXhUeXBlIHwgc3RyaW5nO1xuICBkb2N1bWVudElkOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBNYW51YWxJbnB1dENvbnRyb2xEYXRhIHtcbiAgdHlwZTogTWFudWFsSW5wdXRDb250cm9sVHlwZTtcbiAgaXNTaW1wbGVWYWxpZGF0aW9uOiBib29sZWFuO1xuICBpc0FwaVZhbGlkYXRpb246IGJvb2xlYW47XG4gIGFwaVZhbGlkYXRpb25NZXRob2Q/OiBzdHJpbmcgfCBudWxsO1xuICBhcGlWYWxpZGF0aW9uUGFydG5lcj86IHN0cmluZyB8IG51bGw7XG4gIGFsbG93ZWRDaGFyYWN0ZXJzPzogc3RyaW5nO1xuICBtYXhDaGFyYWN0ZXJzPzogbnVtYmVyO1xuICBtaW5WYWx1ZT86IG51bWJlcjtcbiAgbWF4VmFsdWU/OiBudW1iZXI7XG4gIGFsbG93T25seVBhc3Q/OiBib29sZWFuO1xuICBhbGxvd09ubHlGdXR1cmU/OiBib29sZWFuO1xuICBpc01hbmRhdG9yeTogYm9vbGVhbjtcbiAgaXNQcmVjb21wbGV0YWJsZT86IGJvb2xlYW47XG4gIHByZWNvbXBsZXRpb25GaWVsZElkPzogc3RyaW5nIHwgbnVsbDtcbn1cblxuZXhwb3J0IGNsYXNzIFBhcmFncmFwaENvbnRyb2xEYXRhIHtcbiAgZGVzY3JpcHRpb25UcmFuc2xhdGlvbnM6IExhYmVsSW5mb1tdO1xuICBpc01hbmRhdG9yeTogYm9vbGVhbjtcbiAgaXNNYW5kYXRvcnlUcmFuc2xhdGlvbnM/OiBMYWJlbEluZm9bXTtcbn1cblxuZXhwb3J0IGNsYXNzIERpY3Rpb25hcnlDb250cm9sRGF0YSB7XG4gIGRpY3Rpb25hcnlVVUlEOiBzdHJpbmc7XG4gIHNob3dBc1JhZGlvQnV0dG9uc0xpc3Q6IGJvb2xlYW47XG4gIHJlbGF0ZWREaWN0aW9uYXJpZXNUcmFuc2xhdGlvbnM6IERpY3Rpb25hcnlMYWJlbEluZm9bXTtcbiAgZGljdGlvbmFyeURlZmF1bHRWYWx1ZUlkPzogbnVtYmVyIHwgbnVsbDtcbiAgc2VsZWN0ZWRSZWxhdGVkRGljdGlvbmFyaWVzOiBzdHJpbmdbXTtcbiAgYWxsb3dNdWx0aXBsZVNlbGVjdGlvbj86IGJvb2xlYW47XG4gIGlzTWFuZGF0b3J5PzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGVudW0gRmx1eFR5cGUge1xuICBLeWMgPSAwLFxuICBFbWFpbCA9IDEsXG4gIFBob25lID0gMixcbiAgU2lnbiA9IDMsXG4gIFN0YXR1cyA9IDQsXG4gIEN1c3RvbSA9IDUsXG4gIFBhdXNlID0gNixcbiAgSWRTY2FuID0gNyxcbiAgR2VuZXJhdGVEb2N1bWVudCA9IDgsXG4gIEFjdGlvbiA9IDksXG4gIFVwbG9hZERvY3VtZW50ID0gMTAsXG4gIERvd25sb2FkRG9jdW1lbnQgPSAxMSxcbiAgVmlld09mZmVyID0gMTIsXG4gIEZpbmFsID0gMTMsXG4gIFZpZXdEb2N1bWVudCA9IDE0LFxuICBORVRPUElBID0gMTUsXG4gIEVVUExBVEVTQyA9IDE2LFxuICBPcGVuQmFua2luZyA9IDE3LFxuICBWYWxpZGF0aW9uID0gMThcbn1cblxuZXhwb3J0IGVudW0gU2VjdGlvblR5cGUge1xuICBQcmVzZW50YXRpb24sXG4gIENvbGxlY3QsXG4gIERpc3BsYXlcbn1cblxuZXhwb3J0IGVudW0gU3RlcENvbnRyb2xUeXBlIHtcbiAgTWFudWFsSW5wdXQgPSAwLFxuICBQYXJhZ3JhcGggPSAxLFxuICBDaGVja0JveCA9IDIsXG4gIERpY3Rpb25hcnkgPSAzLFxuICBCdXR0b25zID0gNCxcbiAgRmx1eEluZm8gPSA1LFxuICBOZXdSb3cgPSA2LFxuICBNZXRhZGF0YSA9IDcsXG4gIEFwaU1ldGhvZEZpZWxkID0gOCxcbiAgRG93bmxvYWREb2N1bWVudHMgPSA5LFxuICBWaWV3RG9jdW1lbnRzID0gMTAsXG4gIFVwbG9hZERvY3VtZW50cyA9IDExXG59XG5cbmV4cG9ydCBlbnVtIERpbWVuc2lvblR5cGUge1xuICBQZXJjZW50YWdlLFxuICBQaXhlbHNcbn1cblxuZXhwb3J0IGVudW0gTWFudWFsSW5wdXRDb250cm9sVHlwZSB7XG4gIFRleHQsXG4gIE51bWVyaWMsXG4gIERhdGVUaW1lLFxuICBFbWFpbCxcbiAgUGhvbmUsXG4gIFRleHRBcmVhXG59XG5cbmV4cG9ydCBlbnVtIFNpZ25hdHVyZVR5cGUge1xuICBFbGVjdHJvbmljLFxuICBIYW5kd3JpdHRlbixcbiAgUXVhbGlmaWVkXG59XG5cbmV4cG9ydCBlbnVtIEFwaU1ldGhvZFR5cGUge1xuICBHZXREYXRhLFxuICBTZW5kRGF0YSxcbiAgVmFsaWRhdGlvblxufVxuXG5leHBvcnQgY2xhc3MgU3RhdHVzTW9kZWwge1xuICBpZDogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIG9yZGVyOiBudW1iZXI7XG4gIGZpbmFsOiBib29sZWFuO1xuICBpc0FjdGl2ZTogYm9vbGVhbjtcbiAgYWN0aW9uczogU3RhdHVzQWN0aW9uW10gPSBbXTtcbiAgY2hpbGRBcHBsaWNhdGlvblV1aWRzOiBzdHJpbmdbXSA9IFtdO1xuICBzZW5kTm90aWZpY2F0aW9uczogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGlkOiBzdHJpbmcsXG4gICAgZGVudW1pcmU6IHN0cmluZyxcbiAgICBvcmRpbmU6IG51bWJlcixcbiAgICBmaW5hbDogYm9vbGVhbixcbiAgICBpc0FjdGl2ZTogYm9vbGVhbixcbiAgICBhY3Rpb25zOiBTdGF0dXNBY3Rpb25bXSxcbiAgICBjaGlsZEFwcGxpY2F0aW9uVXVpZHM6IHN0cmluZ1tdID0gW10sXG4gICAgc2VuZE5vdGlmaWNhdGlvbnM6IGJvb2xlYW4gPSBmYWxzZVxuICApIHtcbiAgICB0aGlzLmlkID0gaWQ7XG4gICAgdGhpcy5uYW1lID0gZGVudW1pcmU7XG4gICAgdGhpcy5vcmRlciA9IG9yZGluZTtcbiAgICB0aGlzLmZpbmFsID0gZmluYWw7XG4gICAgdGhpcy5pc0FjdGl2ZSA9IGlzQWN0aXZlO1xuICAgIHRoaXMuYWN0aW9ucyA9IGFjdGlvbnM7XG4gICAgdGhpcy5jaGlsZEFwcGxpY2F0aW9uVXVpZHMgPSBjaGlsZEFwcGxpY2F0aW9uVXVpZHMgfHwgW107XG4gICAgdGhpcy5zZW5kTm90aWZpY2F0aW9ucyA9IHNlbmROb3RpZmljYXRpb25zO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBTdGF0dXNBY3Rpb24ge1xuICBpZD86IHN0cmluZztcbiAgYWN0aW9uVGl0bGU6IHN0cmluZztcbiAgYXBpTWV0aG9kSWQ6IHN0cmluZztcbiAgcGFydG5lcklkczogbnVtYmVyW10gPSBbXTtcbn1cblxuZXhwb3J0IGNsYXNzIFByZXNlbnRhdGlvblBhcmFncmFwaENvbnRyb2wgZXh0ZW5kcyBQcmVzZW50YXRpb25Db250cm9sIHtcbiAgZGVzY3JpcHRpb25UcmFuc2xhdGlvbnM6IExhYmVsSW5mb1tdO1xufVxuXG5leHBvcnQgY2xhc3MgQXBwUGFydG5lciBleHRlbmRzIFBhcnRuZXIge1xuICBkb2N1bWVudHM/OiBBcHBQYXJ0bmVyRG9jdW1lbnRzW10gPSBbXTtcbiAgZ2VuZXJhbFNldHRpbmdzOiBBcHBQYXJ0bmVyR2VuZXJhbFNldHRpbmdzO1xuICBwYXJ0bmVyU2V0dGluZ3M6IFBhcnRuZXJTZXR0aW5ncztcbiAgcGFydG5lckRpY3Rpb25hcnlNYXBwaW5nOiBQYXJ0bmVyRGljdGlvbmFyeU1hcHBpbmdbXTtcbiAgcGFydG5lclN0YXR1c01hcHBpbmc6IFBhcnRuZXJTdGF0dXNNYXBwaW5nW107XG59XG5cbmV4cG9ydCBjbGFzcyBBcHBQYXJ0bmVyR2VuZXJhbFNldHRpbmdzIHtcbiAgYWNjZXB0TXVsdGlwbGVPZmZlcnM6IGJvb2xlYW47XG4gIG9mZmVyczogQXBwUGFydG5lckdlbmVyYWxTZXR0aW5nc09mZmVyW10gPSBbXTtcbiAgcmVjZWl2ZWRPZmZlcnM6IEFwcFBhcnRuZXJHZW5lcmFsU2V0dGluZ3NSZWNlaXZlZE9mZmVyW10gPSBbXTtcbiAgdmFsYWJpbGl0eTogbnVtYmVyO1xuICBoYXNDdXN0b21WYWxhYmlsaXR5OiBib29sZWFuO1xuICBzdGF0dXNXb3JrZXJTZXR0aW5nczogQXBwU3RhdHVzV29ya2VyU2V0dGluZ3M7XG59XG5leHBvcnQgY2xhc3MgQXBwU3RhdHVzV29ya2VyU2V0dGluZ3Mge1xuICBtYXhSZXRyaWVzOiBudW1iZXI7XG4gIGxvb3BJbnRlcnZhbDogbnVtYmVyO1xufVxuZXhwb3J0IGNsYXNzIEFwcFBhcnRuZXJHZW5lcmFsU2V0dGluZ3NPZmZlciB7XG4gIGlkOiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbiAgYXBpTWV0aG9kSWQ6IHN0cmluZztcbiAgaWRlbnRpZmllcjogc3RyaW5nO1xuICB2YWx1ZTogc3RyaW5nO1xuICBjdXN0b21WYWxhYmlsaXR5PzogbnVtYmVyO1xuICBhcGlNZXRob2RGaWVsZHM/OiBhbnlbXSA9IFtdO1xufVxuXG5leHBvcnQgY2xhc3MgQXBwUGFydG5lckdlbmVyYWxTZXR0aW5nc1JlY2VpdmVkT2ZmZXIge1xuICBpZDogc3RyaW5nO1xuICBvZmZlcnM6IEFwcFBhcnRuZXJHZW5lcmFsU2V0dGluZ3NPZmZlcltdO1xufVxuXG5leHBvcnQgY2xhc3MgQXBwUGFydG5lckRvY3VtZW50cyB7XG4gIGlkOiBzdHJpbmc7XG4gIGRvY3VtZW50SWQ6IHN0cmluZztcbiAgZG9jdW1lbnROYW1lOiBzdHJpbmc7XG4gIGFwaU1ldGhvZElkOiBzdHJpbmc7XG4gIGlzRWRpdE1vZGU6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjbGFzcyBBcHBEb2N1bWVudCB7XG4gIGlkOiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbiAgdHJhbnNsYXRpb25zOiBMYWJlbEluZm9bXTtcbiAgZ2VuZXJhdGVkQnlBcHA6IGJvb2xlYW47XG4gIGlzU3RhdGljOiBib29sZWFuO1xuICBpc0FjdGl2ZTogYm9vbGVhbjtcbiAgdmVyc2lvbnM6IEFwcERvY3VtZW50VmVyc2lvbltdID0gW107XG59XG5leHBvcnQgY2xhc3MgU2lnbmVkRG9jdW1lbnQgZXh0ZW5kcyBBcHBEb2N1bWVudCB7XG4gIHNvdXJjZURvY3VtZW50czogc3RyaW5nW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXBwRG9jdW1lbnRFeHRlbmRlZCBleHRlbmRzIEFwcERvY3VtZW50IHtcbiAgaXNBcGlEb2N1bWVudD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjbGFzcyBBcHBEb2N1bWVudFZlcnNpb24ge1xuICBpZDogbnVtYmVyO1xuICBhcHBsaWNhdGlvbklkOiBudW1iZXI7XG4gIG5hbWU6IHN0cmluZztcbiAgZG9jdW1lbnRJZDogc3RyaW5nO1xuICB2ZXJzaW9uOiBudW1iZXI7XG4gIHZhbGlkRnJvbTogRGF0ZTtcbiAgdmFsaWRUbzogRGF0ZSB8IHVuZGVmaW5lZDtcbiAgaXNFZGl0TW9kZTogYm9vbGVhbjtcbiAgZGF0YTogc3RyaW5nIHwgbnVsbDtcbiAgZmx1eEJvb2ttYXJrczogQm9va21hcmtNYXBwaW5nW107XG4gIGlzVGVtcG9yYXJ5OiBib29sZWFuO1xufVxuXG5leHBvcnQgY2xhc3MgQm9va21hcmtNYXBwaW5nIHtcbiAgYm9va21hcms6IHN0cmluZztcbiAgY29udHJvbElkOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBFcnJvclRyYW5zbGF0aW9ucyB7XG4gIGNvZGU6IHN0cmluZztcbiAgdHJhbnNsYXRpb25zOiBMYWJlbEluZm9bXTtcbn1cblxuZXhwb3J0IGNsYXNzIFVwbG9hZERvY3VtZW50IHtcbiAgZG9jdW1lbnRJZDogc3RyaW5nO1xuICBmaWxlTmFtZTogc3RyaW5nO1xuICBmaWxlRGF0YTogc3RyaW5nIHwgdW5kZWZpbmVkO1xufVxuXG5leHBvcnQgY2xhc3MgVXBsb2FkRG9jdW1lbnREZXRhaWxzIGV4dGVuZHMgVXBsb2FkRG9jdW1lbnQge1xuICBkb2N1bWVudE5hbWU6IHN0cmluZztcbiAgZG9jdW1lbnRFeHRlbnNpb25zOiBzdHJpbmc7XG4gIGRvY3VtZW50TWF4U2l6ZTogbnVtYmVyO1xuICBpc01hbmRhdG9yeTogYm9vbGVhbjtcbiAgaXNVcGxvYWRpbmc6IGJvb2xlYW47XG4gIGlzVXBsb2FkU3VjY2VzczogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNsYXNzIFN0ZXBzU2V0dGluZ3Mge1xuICBzaG93Q291bnRlcjogYm9vbGVhbjtcbiAgc2hvd0xhYmVsczogYm9vbGVhbjtcbiAgc2hvd0FsbFN0ZXBzOiBib29sZWFuO1xuICBzaG93UHJvZ3Jlc3NCYXI6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBlbnVtIEFwcERhdGFTdGF0dXMge1xuICBuZXcgPSAwLFxuICBmaW5pc2hlZCA9IDFcbn1cbiJdfQ==
|
|
725
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybXMubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vcmlnaW4tZm9ybS9zcmMvbGliL21vZGVscy9mb3Jtcy5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFJMUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ25ELE9BQU8sRUFBRSxtQkFBbUIsRUFBeUIsTUFBTSxjQUFjLENBQUM7QUFFMUUsTUFBTSxPQUFPLGtCQUFrQjtJQUEvQjtRQUNFLFlBQU8sR0FBWSxLQUFLLENBQUM7UUFDekIsa0JBQWEsR0FBVyw2QkFBNkIsQ0FBQztRQUN0RCxvQkFBZSxHQUFXLDJEQUEyRCxDQUFDO0lBQ3hGLENBQUM7Q0FBQTtBQUVELE1BQU0sT0FBTyxjQUFjO0lBQTNCO1FBQ0UsT0FBRSxHQUFXLEVBQUUsQ0FBQztRQUNoQixjQUFTLEdBQVcsRUFBRSxDQUFDO0lBQ3pCLENBQUM7Q0FBQTtBQUVELE1BQU0sT0FBTyxpQkFBaUI7SUFBOUI7UUFDRSwwQkFBcUIsR0FBa0IsSUFBSSxDQUFDO1FBQzVDLG9CQUFlLEdBQXFCLEVBQUUsQ0FBQztRQUN2Qyx1QkFBa0IsR0FBdUIsSUFBSSxrQkFBa0IsRUFBRSxDQUFDO0lBQ3BFLENBQUM7Q0FBQTtBQUVELE1BQU0sT0FBTyxtQkFBbUI7SUFBaEM7UUFDRSxpQkFBWSxHQUFrQixJQUFJLENBQUM7UUFDbkMsaUJBQVksR0FBa0IsSUFBSSxDQUFDO1FBQ25DLG9CQUFlLEdBQStCLE9BQU8sQ0FBQztRQUN0RCx3QkFBbUIsR0FBVyxFQUFFLENBQUM7SUFDbkMsQ0FBQztDQUFBO0FBRUQsTUFBTSxPQUFPLFNBQVM7Q0FpQnJCO0FBRUQsTUFBTSxPQUFPLGNBQWM7SUFPekIsWUFDRSxZQUFvQixFQUFFLEVBQ3RCLFlBQW9CLEVBQUUsRUFDdEIsY0FBc0Is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QU0sT0FBTyw0QkFBNkIsU0FBUSxtQkFBbUI7Q0FFcEU7QUFFRCxNQUFNLE9BQU8sVUFBVyxTQUFRLE9BQU87SUFBdkM7O1FBQ0UsY0FBUyxHQUEyQixFQUFFLENBQUM7SUFLekMsQ0FBQztDQUFBO0FBRUQsTUFBTSxPQUFPLHlCQUF5QjtJQUF0QztRQUVFLFdBQU0sR0FBcUMsRUFBRSxDQUFDO1FBQzlDLG1CQUFjLEdBQTZDLEVBQUUsQ0FBQztJQUloRSxDQUFDO0NBQUE7QUFDRCxNQUFNLE9BQU8sdUJBQXVCO0NBR25DO0FBQ0QsTUFBTSxPQUFPLDhCQUE4QjtJQUEzQztRQU9FLG9CQUFlLEdBQVcsRUFBRSxDQUFDO0lBQy9CLENBQUM7Q0FBQTtBQUVELE1BQU0sT0FBTyxzQ0FBc0M7Q0FHbEQ7QUFFRCxNQUFNLE9BQU8sbUJBQW1CO0NBTS9CO0FBRUQsTUFBTSxPQUFPLFdBQVc7SUFBeEI7UUFPRSxhQUFRLEdBQXlCLEVBQUUsQ0FBQztJQUN0QyxDQUFDO0NBQUE7QUFDRCxNQUFNLE9BQU8sY0FBZSxTQUFRLFdBQVc7Q0FFOUM7QUFNRCxNQUFNLE9BQU8sa0JBQWtCO0NBWTlCO0FBRUQsTUFBTSxPQUFPLGVBQWU7Q0FHM0I7QUFFRCxNQUFNLE9BQU8saUJBQWlCO0NBRzdCO0FBRUQsTUFBTSxPQUFPLGNBQWM7Q0FJMUI7QUFFRCxNQUFNLE9BQU8scUJBQXNCLFNBQVEsY0FBYztDQU94RDtBQUVELE1BQU0sT0FBTyxhQUFhO0NBS3pCO0FBRUQsTUFBTSxDQUFOLElBQVksYUFHWDtBQUhELFdBQVksYUFBYTtJQUN2QiwrQ0FBTyxDQUFBO0lBQ1AseURBQVksQ0FBQTtBQUNkLENBQUMsRUFIVyxhQUFhLEtBQWIsYUFBYSxRQUd4QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExhYmVsSW5mbyB9IGZyb20gJy4vbGFiZWwtaW5mby5tb2RlbCc7XG5pbXBvcnQgeyBQYXJ0bmVyIH0gZnJvbSAnLi9wYXJ0bmVyLm1vZGVsJztcbmltcG9ydCB7IERpY3Rpb25hcnlMYWJlbEluZm8gfSBmcm9tICcuLi9vdGhlcnMvZGljdGlvbmFyeS1sYWJlbC1pbmZvJztcbmltcG9ydCB7IEFwcGxpY2F0aW9uTWFwcGluZ3MgfSBmcm9tICcuL2FwcGxpY2F0aW9uLXR5cGUubW9kZWwnO1xuaW1wb3J0IHsgQ3NzUnVsZXMgfSBmcm9tICcuLi9vdGhlcnMvdXRpbHMnO1xuaW1wb3J0IHsgRmx1eEhlbHBlciB9IGZyb20gJy4uL290aGVycy9mbHV4LWhlbHBlcic7XG5pbXBvcnQgeyBQcmVzZW50YXRpb25Db250cm9sLCBTZWN0aW9uRGF0YSwgU3RlcERhdGEgfSBmcm9tICcuL2ZsdXgubW9kZWwnO1xuXG5leHBvcnQgY2xhc3MgTm90aWZpY2F0aW9uQ29uZmlnIHtcbiAgZW5hYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuICB0aXRsZVRlbXBsYXRlOiBzdHJpbmcgPSAnU3RhdHVzIHVwZGF0ZToge3N0YXR1c05hbWV9JztcbiAgbWVzc2FnZVRlbXBsYXRlOiBzdHJpbmcgPSAnWW91ciBhcHBsaWNhdGlvbiBzdGF0dXMgaGFzIGJlZW4gdXBkYXRlZCB0bzoge3N0YXR1c05hbWV9Jztcbn1cblxuZXhwb3J0IGNsYXNzIEluaGVyaXRlZEZpZWxkIHtcbiAgaWQ6IHN0cmluZyA9ICcnO1xuICBmaWVsZE5hbWU6IHN0cmluZyA9ICcnO1xufVxuXG5leHBvcnQgY2xhc3MgUGFyZW50Q2hpbGRDb25maWcge1xuICBwYXJlbnRBcHBsaWNhdGlvblV1aWQ6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICBpbmhlcml0ZWRGaWVsZHM6IEluaGVyaXRlZEZpZWxkW10gPSBbXTtcbiAgbm90aWZpY2F0aW9uQ29uZmlnOiBOb3RpZmljYXRpb25Db25maWcgPSBuZXcgTm90aWZpY2F0aW9uQ29uZmlnKCk7XG59XG5cbmV4cG9ydCBjbGFzcyBDb250YWN0TWV0aG9kQ29uZmlnIHtcbiAgZW1haWxGaWVsZElkOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgcGhvbmVGaWVsZElkOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgcHJlZmVycmVkTWV0aG9kOiAnZW1haWwnIHwgJ3Bob25lJyB8ICdib3RoJyA9ICdlbWFpbCc7XG4gIGNvbnRpbnVhdGlvbkJhc2VVcmw6IHN0cmluZyA9ICcnO1xufVxuXG5leHBvcnQgY2xhc3MgRm9ybU1vZGVsIHtcbiAgYXBwbGljYXRpb25JZDogbnVtYmVyO1xuICBhcHBsaWNhdGlvblV1aWQ6IHN0cmluZztcbiAgZ2VuZXJhbERhdGE6IEdlbmVyYWxEYXRhTW9kZWw7XG4gIGRlc2lnbjogRGVzaWduTW9kZWw7XG4gIGZsdXg6IFN0ZXBEYXRhW107XG4gIGFwaTogQXBpRGF0YTtcbiAgcGFydG5lcnM6IEFwcFBhcnRuZXJbXTtcbiAgZG9jdW1lbnRzOiBBcHBEb2N1bWVudFtdO1xuICBzdGF0dXNlczogU3RhdHVzTW9kZWxbXTtcbiAgZGlzcGxheTogRGlzcGxheU1vZGVsO1xuICBnZW5lcmF0ZWRDc3M6IENzc1J1bGVzO1xuICBtZXRhZGF0YUZpZWxkczogW107XG4gIGVycm9yczogeyBbdGFiTmFtZTogc3RyaW5nXTogc3RyaW5nW10gfTtcbiAgYXBwbGljYXRpb25NYXBwaW5nczogQXBwbGljYXRpb25NYXBwaW5ncztcbiAgcGFyZW50Q2hpbGRDb25maWc/OiBQYXJlbnRDaGlsZENvbmZpZztcbiAgY29udGFjdE1ldGhvZENvbmZpZz86IENvbnRhY3RNZXRob2RDb25maWc7XG59XG5cbmV4cG9ydCBjbGFzcyBBcHBEYXRhQ29udHJvbCB7XG4gIGNvbnRyb2xJZDogc3RyaW5nO1xuICBmaWxsVmFsdWU6IHN0cmluZztcbiAgZmlsbFZhbHVlSWQ6IHN0cmluZztcbiAgZmlsbFZhbHVlcz86IHN0cmluZ1tdO1xuICBmaWxsVmFsdWVJZHM/OiBzdHJpbmdbXTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBjb250cm9sSWQ6IHN0cmluZyA9ICcnLFxuICAgIGZpbGxWYWx1ZTogc3RyaW5nID0gJycsXG4gICAgZmlsbFZhbHVlSWQ6IHN0cmluZyA9ICcnLFxuICAgIGZpbGxWYWx1ZXM/OiBzdHJpbmdbXSxcbiAgICBmaWxsVmFsdWVJZHM/OiBzdHJpbmdbXSxcbiAgKSB7XG4gICAgdGhpcy5jb250cm9sSWQgPSBjb250cm9sSWQgfHwgJyc7XG4gICAgdGhpcy5maWxsVmFsdWUgPSBmaWxsVmFsdWUgfHwgJyc7XG4gICAgdGhpcy5maWxsVmFsdWVJZCA9IGZpbGxWYWx1ZUlkIHx8ICcnO1xuICAgIHRoaXMuZmlsbFZhbHVlcyA9IGZpbGxWYWx1ZXM7XG4gICAgdGhpcy5maWxsVmFsdWVJZHMgPSBmaWxsVmFsdWVJZHM7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEFwcERhdGFTZWN0aW9uIHtcbiAgc2VjdGlvbklkOiBzdHJpbmc7XG4gIGNvbnRyb2xzOiBBcHBEYXRhQ29udHJvbFtdO1xuXG4gIGNvbnN0cnVjdG9yKHNlY3Rpb25JZDogc3RyaW5nID0gJycsIGNvbnRyb2xzOiBBcHBEYXRhQ29udHJvbFtdID0gW10pIHtcbiAgICB0aGlzLnNlY3Rpb25JZCA9IHNlY3Rpb25JZCB8fCAnJztcbiAgICB0aGlzLmNvbnRyb2xzID0gY29udHJvbHMgfHwgW107XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEFwcERhdGFTdGVwIHtcbiAgc3RlcElkOiBzdHJpbmc7XG4gIHR5cGU6IG51bWJlcjtcbiAgc2VjdGlvbnM6IEFwcERhdGFTZWN0aW9uW107XG5cbiAgY29uc3RydWN0b3IoXG4gICAgc3RlcElkOiBzdHJpbmcgPSAnJyxcbiAgICB0eXBlOiBudW1iZXIsXG4gICAgc2VjdGlvbnM6IEFwcERhdGFTZWN0aW9uW10gPSBbXSxcbiAgKSB7XG4gICAgdGhpcy5zdGVwSWQgPSBzdGVwSWQgfHwgJyc7XG4gICAgdGhpcy50eXBlID0gdHlwZTtcbiAgICB0aGlzLnNlY3Rpb25zID0gc2VjdGlvbnMgfHwgW107XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEFwcERhdGFGaWxsIHtcbiAgbWV0YWRhdGE6IHtcbiAgICBhcHBEYXRhSWQ6IHN0cmluZztcbiAgICBjb25maWd1cmF0aW9uSWQ6IHN0cmluZztcbiAgICBjdXJyZW50U3RlcElkOiBzdHJpbmc7XG4gICAgc3RhdHVzSWQ6IHN0cmluZztcbiAgICBsYW5ndWFnZTogc3RyaW5nO1xuICAgIG9mZmVySWQ6IHN0cmluZztcbiAgICBpc1N1Ym1pdHRlZDogYm9vbGVhbjtcbiAgfTtcbiAgZmx1eDogQXBwRGF0YVN0ZXBbXTtcbiAgaW5oZXJpdGVkRmllbGRzPzogUmVjb3JkPHN0cmluZywgYW55PjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBhcHBEYXRhSWQ6IHN0cmluZyA9ICcnLFxuICAgIGNvbmZpZ3VyYXRpb25JZDogc3RyaW5nID0gJycsXG4gICAgY3VycmVudFN0ZXBJZDogc3RyaW5nID0gJycsXG4gICAgc3RhdHVzSWQ6IHN0cmluZyA9ICcnLFxuICAgIGxhbmd1YWdlOiBzdHJpbmcgPSAnJyxcbiAgICBmbHV4OiBBcHBEYXRhU3RlcFtdID0gW10sXG4gICAgb2ZmZXJJZDogc3RyaW5nID0gJycsXG4gICAgaXNTdWJtaXR0ZWQ6IGJvb2xlYW4gPSBmYWxzZSxcbiAgKSB7XG4gICAgdGhpcy5tZXRhZGF0YSA9IHtcbiAgICAgIGFwcERhdGFJZDogYXBwRGF0YUlkIHx8ICcnLFxuICAgICAgY29uZmlndXJhdGlvbklkOiBjb25maWd1cmF0aW9uSWQgfHwgJycsXG4gICAgICBjdXJyZW50U3RlcElkOiBjdXJyZW50U3RlcElkIHx8ICcnLFxuICAgICAgc3RhdHVzSWQ6IHN0YXR1c0lkIHx8ICcnLFxuICAgICAgbGFuZ3VhZ2U6IGxhbmd1YWdlIHx8ICcnLFxuICAgICAgb2ZmZXJJZDogb2ZmZXJJZCB8fCAnJyxcbiAgICAgIGlzU3VibWl0dGVkOiBpc1N1Ym1pdHRlZCB8fCBmYWxzZSxcbiAgICB9O1xuICAgIHRoaXMuZmx1eCA9IGZsdXggfHwgW107XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEFwcERhdGEge1xuICBpZD86IG51bWJlcjtcbiAgYXBwRGF0YUlkOiBzdHJpbmc7XG4gIGFwcENvbmZpZ3VyYXRpb25JZDogbnVtYmVyO1xuICBmaWxsRGF0YT86IEFwcERhdGFGaWxsO1xuICBpbml0Rmxvd1ZhbHVlcz86IHN0cmluZztcbiAgd2l0aE5leHRTdGVwOiBib29sZWFuO1xuICBibG9ja1ByZXZpb3VzU3RlcDogYm9vbGVhbjtcbiAgZW52OiBzdHJpbmc7XG4gIHN0YXR1czogQXBwRGF0YVN0YXR1cztcblxuICBjb25zdHJ1Y3RvcihkYXRhOiB7XG4gICAgaWQ/OiBudW1iZXI7XG4gICAgYXBwRGF0YUlkOiBzdHJpbmc7XG4gICAgYXBwQ29uZmlndXJhdGlvbklkOiBudW1iZXI7XG4gICAgZmlsbERhdGE/OiBBcHBEYXRhRmlsbDtcbiAgICBpbml0Rmxvd1ZhbHVlcz86IHN0cmluZztcbiAgICB3aXRoTmV4dFN0ZXA6IGJvb2xlYW47XG4gICAgYmxvY2tQcmV2aW91c1N0ZXA6IGJvb2xlYW47XG4gICAgZW52OiBzdHJpbmc7XG4gIH0pIHtcbiAgICAoKHRoaXMuaWQgPSBkYXRhLmlkID8/IHVuZGVmaW5lZCksICh0aGlzLmFwcERhdGFJZCA9IGRhdGEuYXBwRGF0YUlkIHx8ICcnKSk7XG4gICAgdGhpcy5hcHBDb25maWd1cmF0aW9uSWQgPSBkYXRhLmFwcENvbmZpZ3VyYXRpb25JZCB8fCAwO1xuICAgIHRoaXMuZmlsbERhdGEgPSBkYXRhLmZpbGxEYXRhO1xuICAgIHRoaXMuaW5pdEZsb3dWYWx1ZXMgPSBkYXRhLmluaXRGbG93VmFsdWVzO1xuICAgIHRoaXMud2l0aE5leHRTdGVwID0gZGF0YS53aXRoTmV4dFN0ZXA7XG4gICAgdGhpcy5ibG9ja1ByZXZpb3VzU3RlcCA9IGRhdGEuYmxvY2tQcmV2aW91c1N0ZXA7XG4gICAgaWYgKCFkYXRhLmVudikge1xuICAgICAgdGhpcy5lbnYgPSAnQ29uZmlnJztcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5lbnYgPSBkYXRhLmVudjtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEZvcm1Nb2RlbEV4dGVueGlvbnMge1xuICBmb3JtTW9kZWw6IEZvcm1Nb2RlbDtcblxuICBjb25zdHJ1Y3Rvcihtb2RlbDogRm9ybU1vZGVsKSB7XG4gICAgdGhpcy5mb3JtTW9kZWwgPSBtb2RlbDtcbiAgfVxuXG4gIHByaXZhdGUgYWRkSW5pdEZsb3dWYWx1ZXNJdGVtcyhpdGVtczogTWV0aG9kRmllbGRbXSk6IHZvaWQge1xuICAgIGNvbnN0IGluaXRGbG93VmFsdWVzUmF3ID0gKHRoaXMuZm9ybU1vZGVsIGFzIGFueSk/LmdlbmVyYWxEYXRhXG4gICAgICA/LmluaXRGbG93VmFsdWVzO1xuICAgIGlmIChpbml0Rmxvd1ZhbHVlc1JhdyA9PT0gbnVsbCB8fCBpbml0Rmxvd1ZhbHVlc1JhdyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbGV0IHBhcnNlZDogYW55ID0gdW5kZWZpbmVkO1xuICAgIGlmICh0eXBlb2YgaW5pdEZsb3dWYWx1ZXNSYXcgPT09ICdzdHJpbmcnKSB7XG4gICAgICBjb25zdCB0cmltbWVkID0gaW5pdEZsb3dWYWx1ZXNSYXcudHJpbSgpO1xuICAgICAgaWYgKCF0cmltbWVkKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRyeSB7XG4gICAgICAgIHBhcnNlZCA9IEpTT04ucGFyc2UodHJpbW1lZCk7XG4gICAgICB9IGNhdGNoIHtcbiAgICAgICAgLy8gSWYgY29uZmlnIGNvbnRhaW5zIGludmFsaWQgSlNPTiwgZG8gbm90IGV4cG9zZSBhbnkgaW5pdEZsb3dWYWx1ZXMgZmllbGRzLlxuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHBhcnNlZCA9IGluaXRGbG93VmFsdWVzUmF3O1xuICAgIH1cblxuICAgIGNvbnN0IGV4aXN0aW5nSWRzID0gbmV3IFNldChpdGVtcy5tYXAoKGkpID0+IGkuaWQpKTtcbiAgICBjb25zdCBvdXQ6IE1ldGhvZEZpZWxkW10gPSBbXTtcblxuICAgIGNvbnN0IHdhbGsgPSAobm9kZTogYW55LCBwYXRoUGFydHM6IHN0cmluZ1tdKSA9PiB7XG4gICAgICBpZiAobm9kZSA9PT0gbnVsbCB8fCBub2RlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgLy8gTGVhZlxuICAgICAgICBpZiAocGF0aFBhcnRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBvdXQucHVzaCh0aGlzLmJ1aWxkSW5pdEZsb3dGaWVsZChwYXRoUGFydHMpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmIChBcnJheS5pc0FycmF5KG5vZGUpKSB7XG4gICAgICAgIG5vZGUuZm9yRWFjaCgoY2hpbGQsIGlkeCkgPT4gd2FsayhjaGlsZCwgWy4uLnBhdGhQYXJ0cywgU3RyaW5nKGlkeCldKSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKHR5cGVvZiBub2RlID09PSAnb2JqZWN0Jykge1xuICAgICAgICBPYmplY3Qua2V5cyhub2RlKS5mb3JFYWNoKChrZXkpID0+XG4gICAgICAgICAgd2Fsayhub2RlW2tleV0sIFsuLi5wYXRoUGFydHMsIGtleV0pLFxuICAgICAgICApO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIC8vIFByaW1pdGl2ZSBsZWFmXG4gICAgICBpZiAocGF0aFBhcnRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgb3V0LnB1c2godGhpcy5idWlsZEluaXRGbG93RmllbGQocGF0aFBhcnRzKSk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIHdhbGsocGFyc2VkLCBbXSk7XG5cbiAgICBmb3IgKGNvbnN0IGYgb2Ygb3V0KSB7XG4gICAgICBpZiAoIWV4aXN0aW5nSWRzLmhhcyhmLmlkKSkge1xuICAgICAgICBpdGVtcy5wdXNoKGYpO1xuICAgICAgICBleGlzdGluZ0lkcy5hZGQoZi5pZCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBidWlsZEluaXRGbG93RmllbGQocGF0aFBhcnRzOiBzdHJpbmdbXSk6IE1ldGhvZEZpZWxkIHtcbiAgICBjb25zdCB1bmRlcnNjb3JlUGF0aCA9IHBhdGhQYXJ0cy5qb2luKCdfJyk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGZpZWxkTmFtZTogYGluaXRGbG93VmFsdWVzXyR7dW5kZXJzY29yZVBhdGh9YCxcbiAgICAgIGZpZWxkVHlwZTogU3RlcENvbnRyb2xUeXBlLk1ldGFkYXRhLFxuICAgICAgaWQ6IGBpbml0Rmxvd1ZhbHVlc18ke3VuZGVyc2NvcmVQYXRofWAsXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBmbHV4SXRlbXMoXG4gICAgdW50aWxTdGVwSWRlbnRpZmllcjogc3RyaW5nIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkLFxuICApOiBNZXRob2RGaWVsZFtdIHtcbiAgICBsZXQgaXRlbXM6IE1ldGhvZEZpZWxkW10gPSBbXTtcblxuICAgIGlmICh0aGlzLmZvcm1Nb2RlbC5tZXRhZGF0YUZpZWxkcykge1xuICAgICAgdGhpcy5mb3JtTW9kZWwubWV0YWRhdGFGaWVsZHMuZm9yRWFjaCgoZmllbGRWYWx1ZSkgPT4ge1xuICAgICAgICBpdGVtcy5wdXNoKHtcbiAgICAgICAgICBmaWVsZE5hbWU6IGZpZWxkVmFsdWUsXG4gICAgICAgICAgZmllbGRUeXBlOiBTdGVwQ29udHJvbFR5cGUuTWV0YWRhdGEsXG4gICAgICAgICAgaWQ6IGBtZXRhZGF0YS4ke2ZpZWxkVmFsdWV9YCxcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLmFkZEluaXRGbG93VmFsdWVzSXRlbXMoaXRlbXMpO1xuXG4gICAgaWYgKCF0aGlzLmZvcm1Nb2RlbD8uZmx1eCkge1xuICAgICAgcmV0dXJuIGl0ZW1zO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmZvcm1Nb2RlbC5kb2N1bWVudHM/Lmxlbmd0aCA+IDApIHtcbiAgICAgIGl0ZW1zID0gaXRlbXMuY29uY2F0KHRoaXMuZXh0cmFjdERvY3VtZW50c0ZsdXhJdGVtcyh0aGlzLmZvcm1Nb2RlbC5mbHV4KSk7XG4gICAgfVxuICAgIGl0ZW1zID0gaXRlbXMuY29uY2F0KFxuICAgICAgdGhpcy5leHRyYWN0U2VjdGlvbnNGbHV4SXRlbXModGhpcy5mb3JtTW9kZWwuZmx1eCwgdW50aWxTdGVwSWRlbnRpZmllciksXG4gICAgKTtcblxuICAgIHJldHVybiBpdGVtcztcbiAgfVxuICBwcml2YXRlIGV4dHJhY3RTZWN0aW9uc0ZsdXhJdGVtcyhcbiAgICBzdGVwczogU3RlcERhdGFbXSxcbiAgICB1bnRpbFN0ZXBJZGVudGlmaWVyOiBzdHJpbmcgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQsXG4gICk6IE1ldGhvZEZpZWxkW10ge1xuICAgIGxldCBpdGVtczogTWV0aG9kRmllbGRbXSA9IFtdO1xuXG4gICAgZm9yIChsZXQgc3RlcCBvZiBzdGVwcykge1xuICAgICAgaWYgKHN0ZXAuc2VjdGlvbnMpIHtcbiAgICAgICAgaWYgKHVudGlsU3RlcElkZW50aWZpZXIgJiYgc3RlcC5pZGVudGlmaWVyID09PSB1bnRpbFN0ZXBJZGVudGlmaWVyKSB7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgc3RlcC5zZWN0aW9ucy5mb3JFYWNoKChzZWN0aW9uKSA9PiB7XG4gICAgICAgICAgaWYgKHNlY3Rpb24uY29udHJvbHMpIHtcbiAgICAgICAgICAgIHNlY3Rpb24uY29udHJvbHMuZm9yRWFjaCgoY29udHJvbCkgPT4ge1xuICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgU3RlcENvbnRyb2xUeXBlLkJ1dHRvbnMsXG4gICAgICAgICAgICAgICAgICBTdGVwQ29udHJvbFR5cGUuTmV3Um93LFxuICAgICAgICAgICAgICAgICAgU3RlcENvbnRyb2xUeXBlLkZsdXhJbmZvLFxuICAgICAgICAgICAgICAgICAgU3RlcENvbnRyb2xUeXBlLlBhcmFncmFwaCxcbiAgICAgICAgICAgICAgICBdLmluY2x1ZGVzKGNvbnRyb2wudHlwZSkgPT0gZmFsc2VcbiAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgaXRlbXMucHVzaCh7XG4gICAgICAgICAgICAgICAgICBmaWVsZE5hbWU6IGAke3N0ZXAubmFtZX0gLT4gJHtzZWN0aW9uLnRpdGxlfSAtPiAke2NvbnRyb2wudGl0bGV9YCxcbiAgICAgICAgICAgICAgICAgIGZpZWxkVHlwZTogY29udHJvbC50eXBlLFxuICAgICAgICAgICAgICAgICAgbWFudWxJbnB1dENvbnRyb2xUeXBlOiBjb250cm9sLnNwZWNpZmljQ29udHJvbERhdGE/LnR5cGUsXG4gICAgICAgICAgICAgICAgICBpZDogY29udHJvbC5pZGVudGlmaWVyLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBpdGVtcztcbiAgfVxuXG4gIHByaXZhdGUgZXh0cmFjdERvY3VtZW50c0ZsdXhJdGVtcyhzdGVwRGF0YTogU3RlcERhdGFbXSk6IE1ldGhvZEZpZWxkW10ge1xuICAgIGxldCBpdGVtczogTWV0aG9kRmllbGRbXSA9IFtdO1xuXG4gICAgc3RlcERhdGE/LmZvckVhY2goKHN0ZXApID0+IHtcbiAgICAgIGlmIChzdGVwLnR5cGUgPT09IEZsdXhUeXBlLlVwbG9hZERvY3VtZW50KSB7XG4gICAgICAgIHN0ZXAuY29uZmlnPy5kb2N1bWVudHM/LmZvckVhY2goXG4gICAgICAgICAgKGRvY3VtZW50OiB7IGRvY3VtZW50SWQ6IHN0cmluZzsgbmFtZTogc3RyaW5nIH0pID0+IHtcbiAgICAgICAgICAgIGl0ZW1zLnB1c2goe1xuICAgICAgICAgICAgICBmaWVsZE5hbWU6IGAke3N0ZXAubmFtZX0gLT4gJHtcbiAgICAgICAgICAgICAgICBGbHV4SGVscGVyLmdldERvY3VtZW50TmFtZUJ5SWQoXG4gICAgICAgICAgICAgICAgICBkb2N1bWVudD8uZG9jdW1lbnRJZCxcbiAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybU1vZGVsLFxuICAgICAgICAgICAgICAgICkgfHwgZG9jdW1lbnQubmFtZVxuICAgICAgICAgICAgICB9YCxcbiAgICAgICAgICAgICAgZmllbGRUeXBlOiBzdGVwLnR5cGUsXG4gICAgICAgICAgICAgIGlkOiBkb2N1bWVudD8uZG9jdW1lbnRJZFxuICAgICAgICAgICAgICAgID8gYHVwbG9hZC4ke2RvY3VtZW50LmRvY3VtZW50SWR9YFxuICAgICAgICAgICAgICAgIDogYCR7c3RlcC50eXBlfS4ke3N0ZXAubmFtZX1gLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSxcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSBpZiAoc3RlcC50eXBlID09PSBGbHV4VHlwZS5HZW5lcmF0ZURvY3VtZW50KSB7XG4gICAgICAgIHN0ZXAuY29uZmlnPy5nZW5lcmF0ZWREb2N1bWVudHM/LmZvckVhY2goXG4gICAgICAgICAgKGRvY3VtZW50OiB7IGlkOiBzdHJpbmc7IG5hbWU6IHN0cmluZyB9KSA9PiB7XG4gICAgICAgICAgICBpdGVtcy5wdXNoKHtcbiAgICAgICAgICAgICAgZmllbGROYW1lOiBgJHtzdGVwLm5hbWV9IC0+ICR7XG4gICAgICAgICAgICAgICAgRmx1eEhlbHBlci5nZXREb2N1bWVudE5hbWVCeUlkKGRvY3VtZW50Py5pZCwgdGhpcy5mb3JtTW9kZWwpIHx8XG4gICAgICAgICAgICAgICAgZG9jdW1lbnQubmFtZVxuICAgICAgICAgICAgICB9YCxcbiAgICAgICAgICAgICAgZmllbGRUeXBlOiBzdGVwLnR5cGUsXG4gICAgICAgICAgICAgIGlkOiBkb2N1bWVudD8uaWRcbiAgICAgICAgICAgICAgICA/IGBnZW5lcmF0ZS4ke2RvY3VtZW50LmlkfWBcbiAgICAgICAgICAgICAgICA6IGAke3N0ZXAudHlwZX0uJHtzdGVwLm5hbWV9YCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0sXG4gICAgICAgICk7XG4gICAgICB9IGVsc2UgaWYgKHN0ZXAudHlwZSA9PT0gRmx1eFR5cGUuU2lnbikge1xuICAgICAgICBpZiAoc3RlcC5jb25maWc/LmRvY3VtZW50cykge1xuICAgICAgICAgIHN0ZXAuY29uZmlnPy5kb2N1bWVudHMuZm9yRWFjaChcbiAgICAgICAgICAgIChkb2N1bWVudDogeyBpZDogc3RyaW5nOyBuYW1lOiBzdHJpbmcgfSkgPT4ge1xuICAgICAgICAgICAgICBpdGVtcy5wdXNoKHtcbiAgICAgICAgICAgICAgICBmaWVsZE5hbWU6IGAke3N0ZXAubmFtZX0gLT4gJHtcbiAgICAgICAgICAgICAgICAgIEZsdXhIZWxwZXIuZ2V0RG9jdW1lbnROYW1lQnlJZChcbiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQ/LmlkLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm1Nb2RlbCxcbiAgICAgICAgICAgICAgICAgICkgfHwgZG9jdW1lbnQubmFtZVxuICAgICAgICAgICAgICAgIH1gLFxuICAgICAgICAgICAgICAgIGZpZWxkVHlwZTogc3RlcC50eXBlLFxuICAgICAgICAgICAgICAgIGlkOiBkb2N1bWVudD8uaWRcbiAgICAgICAgICAgICAgICAgID8gYHNpZ24uJHtkb2N1bWVudC5pZH1gXG4gICAgICAgICAgICAgICAgICA6IGAke3N0ZXAudHlwZX0uJHtzdGVwLm5hbWV9YCxcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc3RlcC5jb25maWc/LnN5c3RlbURvY3VtZW50cykge1xuICAgICAgICAgIHN0ZXAuY29uZmlnPy5zeXN0ZW1Eb2N1bWVudHMuZm9yRWFjaChcbiAgICAgICAgICAgIChkb2N1bWVudDogeyBpZDogc3RyaW5nOyBuYW1lOiBzdHJpbmcgfSkgPT4ge1xuICAgICAgICAgICAgICBpdGVtcy5wdXNoKHtcbiAgICAgICAgICAgICAgICBmaWVsZE5hbWU6IGAke3N0ZXAubmFtZX0gLT4gJHtcbiAgICAgICAgICAgICAgICAgIEZsdXhIZWxwZXIuZ2V0RG9jdW1lbnROYW1lQnlJZChcbiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQ/LmlkLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm1Nb2RlbCxcbiAgICAgICAgICAgICAgICAgICkgfHwgZG9jdW1lbnQubmFtZVxuICAgICAgICAgICAgICAgIH1gLFxuICAgICAgICAgICAgICAgIGZpZWxkVHlwZTogc3RlcC50eXBlLFxuICAgICAgICAgICAgICAgIGlkOiBkb2N1bWVudD8uaWRcbiAgICAgICAgICAgICAgICAgID8gYHN5c3RlbS4ke2RvY3VtZW50LmlkfWBcbiAgICAgICAgICAgICAgICAgIDogYCR7c3RlcC50eXBlfS4ke3N0ZXAubmFtZX1gLFxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBpdGVtcztcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGluaGVyaXRlZCBwYXJlbnQgZmllbGRzIGFzIE1ldGhvZEZpZWxkIGl0ZW1zLlxuICAgKiBSZXVzYWJsZSBhY3Jvc3MgYWxsIHN5c3RlbSBzdGVwIHNldHRpbmdzIGNvbXBvbmVudHMuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGdldEluaGVyaXRlZE1ldGhvZEZpZWxkcyhmb3JtTW9kZWw6IEZvcm1Nb2RlbCk6IE1ldGhvZEZpZWxkW10ge1xuICAgIGNvbnN0IHJlc3VsdDogTWV0aG9kRmllbGRbXSA9IFtdO1xuICAgIGNvbnN0IGluaGVyaXRlZEZpZWxkcyA9IGZvcm1Nb2RlbC5wYXJlbnRDaGlsZENvbmZpZz8uaW5oZXJpdGVkRmllbGRzO1xuICAgIGlmIChpbmhlcml0ZWRGaWVsZHM/Lmxlbmd0aCkge1xuICAgICAgaW5oZXJpdGVkRmllbGRzLmZvckVhY2goKGZpZWxkKSA9PiB7XG4gICAgICAgIHJlc3VsdC5wdXNoKHtcbiAgICAgICAgICBmaWVsZE5hbWU6IGBJbmhlcml0ZWQgLT4gJHtmaWVsZC5maWVsZE5hbWV9YCxcbiAgICAgICAgICBmaWVsZFR5cGU6ICdpbmhlcml0ZWQnIGFzIGFueSxcbiAgICAgICAgICBpZDogZmllbGQuaWQsXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBmbHV4IGl0ZW1zICsgaW5oZXJpdGVkIHBhcmVudCBmaWVsZHMgKG5vIEFQSSBtZXRob2RzKS5cbiAgICogVXNlIHRoaXMgaW4gc3lzdGVtIHN0ZXAgc2V0dGluZ3MgdGhhdCBuZWVkIHBhcmVudCBmaWVsZCByZWZlcmVuY2VzLlxuICAgKi9cbiAgcHVibGljIGZsdXhJdGVtc1dpdGhJbmhlcml0ZWQoXG4gICAgdW50aWxTdGVwSWRlbnRpZmllcjogc3RyaW5nIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkLFxuICApOiBNZXRob2RGaWVsZFtdIHtcbiAgICBjb25zdCBpdGVtcyA9IHRoaXMuZmx1eEl0ZW1zKHVudGlsU3RlcElkZW50aWZpZXIpO1xuICAgIGl0ZW1zLnB1c2goLi4uRm9ybU1vZGVsRXh0ZW54aW9ucy5nZXRJbmhlcml0ZWRNZXRob2RGaWVsZHModGhpcy5mb3JtTW9kZWwpKTtcbiAgICByZXR1cm4gaXRlbXM7XG4gIH1cblxuICBwdWJsaWMgZmx1eEl0ZW1zV2l0aEdldEFwaU1ldGhvZHMoXG4gICAgZXhjbHVkZWRNZXRob2RJZDogc3RyaW5nID0gJycsXG4gICk6IE1ldGhvZEZpZWxkW10ge1xuICAgIGxldCBpdGVtcyA9IHRoaXMuZmx1eEl0ZW1zV2l0aEluaGVyaXRlZCgpO1xuICAgIHRoaXMuZm9ybU1vZGVsLmFwaS5nZXRJdGVtcy5mb3JFYWNoKChhcGlNZXRob2QpID0+IHtcbiAgICAgIGlmIChhcGlNZXRob2QuaWQgIT09IGV4Y2x1ZGVkTWV0aG9kSWQpIHtcbiAgICAgICAgYXBpTWV0aG9kLmZpZWxkcz8uZm9yRWFjaCgoZikgPT4ge1xuICAgICAgICAgIGl0ZW1zLnB1c2goe1xuICAgICAgICAgICAgZmllbGROYW1lOiBgJHthcGlNZXRob2QubWV0aG9kfSAtPiAke2YuZmllbGROYW1lfWAsXG4gICAgICAgICAgICBmaWVsZFR5cGU6IFN0ZXBDb250cm9sVHlwZS5BcGlNZXRob2RGaWVsZCxcbiAgICAgICAgICAgIGlkOiBmLmlkLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLmZvcm1Nb2RlbC5hcGkudmFsaWRhdGlvbkl0ZW1zLmZvckVhY2goKHZhbGlkYXRlQXBpTWV0aG9kKSA9PiB7XG4gICAgICB2YWxpZGF0ZUFwaU1ldGhvZC5maWVsZHM/LmZvckVhY2goKGYpID0+IHtcbiAgICAgICAgaXRlbXMucHVzaCh7XG4gICAgICAgICAgZmllbGROYW1lOiBgJHt2YWxpZGF0ZUFwaU1ldGhvZC5tZXRob2R9IC0+ICR7Zi5maWVsZE5hbWV9YCxcbiAgICAgICAgICBmaWVsZFR5cGU6IFN0ZXBDb250cm9sVHlwZS5BcGlNZXRob2RGaWVsZCxcbiAgICAgICAgICBpZDogZi5pZCxcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIHJldHVybiBpdGVtcztcbiAgfVxuXG4gIHB1YmxpYyBvZmZlck1ldGhvZHNJdGVtcygpOiBNZXRob2RGaWVsZFtdIHtcbiAgICBsZXQgaXRlbXM6IE1ldGhvZEZpZWxkW10gPSBbXTtcblxuICAgIGxldCBvZmZlck1ldGhvZHNJZHM6IHN0cmluZ1tdID0gW107XG4gICAgdGhpcy5mb3JtTW9kZWwucGFydG5lcnM/LmZvckVhY2goKHApID0+IHtcbiAgICAgIHAuZ2VuZXJhbFNldHRpbmdzLm9mZmVycz8uZm9yRWFjaCgobykgPT4ge1xuICAgICAgICBvZmZlck1ldGhvZHNJZHMucHVzaChvLmFwaU1ldGhvZElkKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgb2ZmZXJNZXRob2RzSWRzID0gWy4uLm5ldyBTZXQob2ZmZXJNZXRob2RzSWRzKV07XG5cbiAgICBjb25zdCBhbGxBcGlJdGVtcyA9IFtcbiAgICAgIC4uLnRoaXMuZm9ybU1vZGVsLmFwaS5nZXRJdGVtcyxcbiAgICAgIC4uLnRoaXMuZm9ybU1vZGVsLmFwaS52YWxpZGF0aW9uSXRlbXMsXG4gICAgICAuLi50aGlzLmZvcm1Nb2RlbC5hcGkuc2VuZEl0ZW1zLFxuICAgIF07XG5cbiAgICBvZmZlck1ldGhvZHNJZHMuZm9yRWFjaCgobWV0aG9kSWQpID0+IHtcbiAgICAgIGNvbnN0IGFwaU1ldGhvZCA9IGFsbEFwaUl0ZW1zLmZpbmQoKGl0ZW0pID0+IGl0ZW0uaWQgPT09IG1ldGhvZElkKTtcbiAgICAgIGlmIChhcGlNZXRob2QpIHtcbiAgICAgICAgYXBpTWV0aG9kLmZpZWxkcz8uZm9yRWFjaCgoZikgPT4ge1xuICAgICAgICAgIGl0ZW1zLnB1c2goe1xuICAgICAgICAgICAgZmllbGROYW1lOiBgJHthcGlNZXRob2QubWV0aG9kfSAtPiAke2YuZmllbGROYW1lfWAsXG4gICAgICAgICAgICBmaWVsZFR5cGU6IEZsdXhUeXBlLlZpZXdPZmZlcixcbiAgICAgICAgICAgIGlkOiBgYXBpXyR7YXBpTWV0aG9kLmlkfSAtPiAke2YuaWR9YCxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gaXRlbXM7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEFwaURhdGEge1xuICBnZXRJdGVtczogR2V0QXBpSXRlbVtdO1xuICB2YWxpZGF0aW9uSXRlbXM6IFZhbGlkYXRlQXBpSXRlbVtdO1xuICBzZW5kSXRlbXM6IEFwaUl0ZW1bXTtcbn1cblxuZXhwb3J0IGNsYXNzIEFwaUl0ZW0ge1xuICBpZDogc3RyaW5nO1xuICBtZXRob2Q6IHN0cmluZztcbiAgZmllbGRzOiBNZXRob2RGaWVsZFtdO1xuICB0eXBlOiBBcGlNZXRob2RUeXBlO1xufVxuXG5leHBvcnQgY2xhc3MgR2V0QXBpSXRlbSB7XG4gIGlkOiBzdHJpbmc7XG4gIG1ldGhvZDogc3RyaW5nO1xuICBmaWVsZHM6IEdldE1ldGhvZEZpZWxkW107XG4gIHR5cGU6IEFwaU1ldGhvZFR5cGU7XG59XG5leHBvcnQgY2xhc3MgVmFsaWRhdGVBcGlJdGVtIHtcbiAgaWQ6IHN0cmluZztcbiAgbWV0aG9kOiBzdHJpbmc7XG4gIGZpZWxkczogTWV0aG9kRmllbGRbXTtcbiAgdHlwZTogQXBpTWV0aG9kVHlwZTtcbn1cblxuZXhwb3J0IGNsYXNzIERlc2lnbk1vZGVsIHtcbiAgZm9udHM6IEZvbnRDb25maWdbXSA9IFtdO1xuICBidXR0b25zOiBCdXR0b25Db25maWdbXSA9IFtdO1xuICBvdHBBY3Rpb25CdXR0b25zOiBCdXR0b25Db25maWdbXSA9IFtdO1xuICBjb21wb25lbnRzOiBDb21wb25lbnRDb25maWdbXSA9IFtdO1xuICB0YWJsZXM6IFRhYmxlQ29uZmlnW10gPSBbXTtcbiAgYmFja2dyb3VuZENvbG9yOiBzdHJpbmc7XG4gIGZvbnRTaXplOiBzdHJpbmc7XG4gIGJ1dHRvbnNIb3Jpem9udGFsUG9zaXRpb246IHN0cmluZztcbiAgYnV0dG9uc1ZlcnRpY2FsUG9zaXRpb246IHN0cmluZztcbiAgbWF4V2lkdGg6IHN0cmluZztcbiAgbWFyZ2luTGVmdDogc3RyaW5nO1xuICBtYXJnaW5SaWdodDogc3RyaW5nO1xuICBtYXJnaW5Ub3A6IHN0cmluZztcbiAgbWFyZ2luQm90dG9tOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoZGF0YT86IGFueSkge1xuICAgIGlmIChkYXRhKSB7XG4gICAgICBpZiAoZGF0YS5mb250cykge1xuICAgICAgICB0aGlzLmZvbnRzID0gZGF0YS5mb250cy5tYXAoKGZvbnQ6IGFueSkgPT4gbmV3IEZvbnRDb25maWcoZm9udCkpO1xuICAgICAgfVxuXG4gICAgICBpZiAoZGF0YS5idXR0b25zKSB7XG4gICAgICAgIHRoaXMuYnV0dG9ucyA9IGRhdGEuYnV0dG9ucy5tYXAoXG4gICAgICAgICAgKGJ1dHRvbjogYW55KSA9PiBuZXcgQnV0dG9uQ29uZmlnKGJ1dHRvbiksXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGlmIChkYXRhLmNvbXBvbmVudHMpIHtcbiAgICAgICAgdGhpcy5jb21wb25lbnRzID0gZGF0YS5jb21wb25lbnRzLm1hcChcbiAgICAgICAgICAoY29tcG9uZW50OiBhbnkpID0+IG5ldyBDb21wb25lbnRDb25maWcoY29tcG9uZW50KSxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGRhdGEudGFibGVzKSB7XG4gICAgICAgIHRoaXMudGFibGVzID0gZGF0YS50YWJsZXMubWFwKCh0YWJsZTogYW55KSA9PiBuZXcgVGFibGVDb25maWcodGFibGUpKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5iYWNrZ3JvdW5kQ29sb3IgPSBkYXRhLmJhY2tncm91bmRDb2xvcjtcbiAgICAgIHRoaXMuZm9udFNpemUgPSBkYXRhLmZvbnRTaXplO1xuICAgICAgdGhpcy5idXR0b25zSG9yaXpvbnRhbFBvc2l0aW9uID0gZGF0YS5ob3Jpem9udGFsUG9zaXRpb247XG4gICAgICB0aGlzLmJ1dHRvbnNWZXJ0aWNhbFBvc2l0aW9uID0gZGF0YS52ZXJ0aWNhbFBvc2l0aW9uO1xuICAgICAgdGhpcy5tYXhXaWR0aCA9IGRhdGEubWF4V2lkdGg7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBGb250Q29uZmlnIHtcbiAgbmFtZTogc3RyaW5nO1xuICBmb250RmFtaWx5OiBzdHJpbmc7XG4gIGZvbnRTaXplOiBzdHJpbmc7XG4gIGNvbG9yOiBzdHJpbmc7XG4gIGZvbnRXZWlnaHQ6IHN0cmluZztcbiAgdGV4dEFsaWduOiBzdHJpbmc7XG4gIGxldHRlclNwYWNpbmc6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihkYXRhPzogYW55KSB7XG4gICAgaWYgKGRhdGEpIHtcbiAgICAgIHRoaXMubmFtZSA9IGRhdGEubmFtZTtcbiAgICAgIHRoaXMuZm9udEZhbWlseSA9IGRhdGEuZm9udEZhbWlseTtcbiAgICAgIHRoaXMuZm9udFNpemUgPSBkYXRhLmZvbnRTaXplO1xuICAgICAgdGhpcy5jb2xvciA9IGRhdGEuY29sb3I7XG4gICAgICB0aGlzLmZvbnRXZWlnaHQgPSBkYXRhLmZvbnRXZWlnaHQ7XG4gICAgICB0aGlzLnRleHRBbGlnbiA9IGRhdGEudGV4dEFsaWduO1xuICAgICAgdGhpcy5sZXR0ZXJTcGFjaW5nID0gZGF0YS5sZXR0ZXJTcGFjaW5nO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQnV0dG9uQ29uZmlnIHtcbiAgbmFtZTogc3RyaW5nO1xuICBiYWNrZ3JvdW5kQ29sb3I6IHN0cmluZztcbiAgY29sb3I6IHN0cmluZztcbiAgYm9yZGVyOiBzdHJpbmc7XG4gIGJvcmRlckNvbG9yOiBzdHJpbmc7XG4gIGJvcmRlclJhZGl1czogc3RyaW5nO1xuICBob3Jpem9udGFsUGFkZGluZzogc3RyaW5nO1xuICB2ZXJ0aWNhbFBhZGRpbmc6IHN0cmluZztcbiAgZm9udEZhbWlseTogc3RyaW5nO1xuICBmb250U2l6ZTogc3RyaW5nO1xuICBsZXR0ZXJTcGFjaW5nOiBzdHJpbmc7XG4gIHdpZHRoOiBzdHJpbmc7XG4gIGhlaWdodDogc3RyaW5nO1xuICBtaW5XaWR0aDogc3RyaW5nO1xuICBtaW5IZWlnaHQ6IHN0cmluZztcbiAgbWF4V2lkdGg6IHN0cmluZztcbiAgbWF4SGVpZ2h0OiBzdHJpbmc7XG4gIGhvcml6b250YWxQb3NpdGlvbj86IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihkYXRhPzogYW55KSB7XG4gICAgaWYgKGRhdGEpIHtcbiAgICAgIHRoaXMubmFtZSA9IGRhdGEubmFtZTtcbiAgICAgIHRoaXMuYmFja2dyb3VuZENvbG9yID0gZGF0YS5iYWNrZ3JvdW5kQ29sb3I7XG4gICAgICB0aGlzLmNvbG9yID0gZGF0YS5jb2xvcjtcbiAgICAgIHRoaXMuYm9yZGVyID0gZGF0YS5ib3JkZXI7XG4gICAgICB0aGlzLmJvcmRlckNvbG9yID0gZGF0YS5ib3JkZXJDb2xvcjtcbiAgICAgIHRoaXMuYm9yZGVyUmFkaXVzID0gZGF0YS5ib3JkZXJSYWRpdXM7XG4gICAgICB0aGlzLmhvcml6b250YWxQYWRkaW5nID0gZGF0YS5ob3Jpem9udGFsUGFkZGluZztcbiAgICAgIHRoaXMudmVydGljYWxQYWRkaW5nID0gZGF0YS52ZXJ0aWNhbFBhZGRpbmc7XG4gICAgICB0aGlzLmZvbnRGYW1pbHkgPSBkYXRhLmZvbnRGYW1pbHk7XG4gICAgICB0aGlzLmZvbnRTaXplID0gZGF0YS5mb250U2l6ZTtcbiAgICAgIHRoaXMubGV0dGVyU3BhY2luZyA9IGRhdGEubGV0dGVyU3BhY2luZztcbiAgICAgIHRoaXMud2lkdGggPSBkYXRhLndpZHRoO1xuICAgICAgdGhpcy5oZWlnaHQgPSBkYXRhLmhlaWdodDtcbiAgICAgIHRoaXMubWluV2lkdGggPSBkYXRhLm1pbldpZHRoO1xuICAgICAgdGhpcy5taW5IZWlnaHQgPSBkYXRhLm1pbkhlaWdodDtcbiAgICAgIHRoaXMubWF4V2lkdGggPSBkYXRhLm1heFdpZHRoO1xuICAgICAgdGhpcy5tYXhIZWlnaHQgPSBkYXRhLm1heEhlaWdodDtcbiAgICAgIHRoaXMuaG9yaXpvbnRhbFBvc2l0aW9uID0gZGF0YS5ob3Jpem9udGFsUG9zaXRpb247XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBUYWJsZUNvbmZpZyB7XG4gIGhlYWRlckNvbmZpZzogSGVhZGVyQ29uZmlnO1xuICBkZXRhaWxDb25maWc6IERldGFpbENvbmZpZztcblxuICBjb25zdHJ1Y3Rvcih0YWJsZT86IGFueSkge1xuICAgIGlmICh0YWJsZSkge1xuICAgICAgdGhpcy5oZWFkZXJDb25maWcgPSB0YWJsZS5oZWFkZXJDb25maWc7XG4gICAgICB0aGlzLmRldGFpbENvbmZpZyA9IHRhYmxlLmRldGFpbENvbmZpZztcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEhlYWRlckNvbmZpZyB7XG4gIG5hbWU6IHN0cmluZztcbiAgYmFja2dyb3VuZENvbG9yOiBzdHJpbmc7XG4gIHRleHRDb2xvcjogc3RyaW5nO1xuICBib3JkZXI6IHN0cmluZztcbiAgYm9yZGVyQ29sb3I6IHN0cmluZztcbiAgdGV4dEFsaWduOiBzdHJpbmc7XG4gIGZvbnRGYW1pbHk6IHN0cmluZztcbiAgZm9udFNpemU6IHN0cmluZztcbiAgbGV0dGVyU3BhY2luZzogc3RyaW5nO1xuICBwYWRkaW5nOiBzdHJpbmc7XG4gIGJvcmRlckNvbGxhcHNlOiBzdHJpbmc7XG4gIGJvcmRlclNwYWNpbmc6IHN0cmluZztcbiAgdmVydGljYWxBbGlnbjogc3RyaW5nO1xuICB3aWR0aDogc3RyaW5nO1xuICBoZWlnaHQ6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihkYXRhPzogYW55KSB7XG4gICAgaWYgKGRhdGEpIHtcbiAgICAgIHRoaXMubmFtZSA9IGRhdGEubmFtZTtcbiAgICAgIHRoaXMuYmFja2dyb3VuZENvbG9yID0gZGF0YS5iYWNrZ3JvdW5kQ29sb3I7XG4gICAgICB0aGlzLnRleHRDb2xvciA9IGRhdGEuY29sb3I7XG4gICAgICB0aGlzLmJvcmRlciA9IGRhdGEuYm9yZGVyO1xuICAgICAgdGhpcy50ZXh0QWxpZ24gPSBkYXRhLnRleHRBbGlnbjtcbiAgICAgIHRoaXMuZm9udEZhbWlseSA9IGRhdGEuZm9udEZhbWlseTtcbiAgICAgIHRoaXMuZm9udFNpemUgPSBkYXRhLmZvbnRTaXplO1xuICAgICAgdGhpcy5sZXR0ZXJTcGFjaW5nID0gZGF0YS5sZXR0ZXJTcGFjaW5nO1xuICAgICAgdGhpcy5wYWRkaW5nID0gZGF0YS5wYWRkaW5nO1xuICAgICAgdGhpcy5ib3JkZXJDb2xsYXBzZSA9IGRhdGEuYm9yZGVyQ29sbGFwc2U7XG4gICAgICB0aGlzLmJvcmRlclNwYWNpbmcgPSBkYXRhLmJvcmRlclNwYWNpbmc7XG4gICAgICB0aGlzLnZlcnRpY2FsQWxpZ24gPSBkYXRhLnZlcnRpY2FsQWxpZ247XG4gICAgICB0aGlzLndpZHRoID0gZGF0YS53aWR0aDtcbiAgICAgIHRoaXMuaGVpZ2h0ID0gZGF0YS5oZWlnaHQ7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBEZXRhaWxDb25maWcge1xuICBuYW1lOiBzdHJpbmc7XG4gIGJhY2tncm91bmRDb2xvcjogc3RyaW5nO1xuICB0ZXh0Q29sb3I6IHN0cmluZztcbiAgdGV4dEFsaWduOiBzdHJpbmc7XG4gIGxldHRlclNwYWNpbmc6IHN0cmluZztcbiAgcGFkZGluZzogc3RyaW5nO1xuICByb3dCb3JkZXI6IHN0cmluZztcbiAgcm93Qm9yZGVyQ29sb3I6IHN0cmluZztcbiAgaG92ZXJCYWNrZ3JvdW5kQ29sb3I6IHN0cmluZztcbiAgdmVydGljYWxBbGlnbjogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKGRhdGE/OiBhbnkpIHtcbiAgICBpZiAoZGF0YSkge1xuICAgICAgdGhpcy5uYW1lID0gZGF0YS5uYW1lO1xuICAgICAgdGhpcy5iYWNrZ3JvdW5kQ29sb3IgPSBkYXRhLmJhY2tncm91bmRDb2xvcjtcbiAgICAgIHRoaXMudGV4dENvbG9yID0gZGF0YS5jb2xvcjtcbiAgICAgIHRoaXMudGV4dEFsaWduID0gZGF0YS50ZXh0QWxpZ247XG4gICAgICB0aGlzLmxldHRlclNwYWNpbmcgPSBkYXRhLmxldHRlclNwYWNpbmc7XG4gICAgICB0aGlzLnBhZGRpbmcgPSBkYXRhLnBhZGRpbmc7XG4gICAgICB0aGlzLnJvd0JvcmRlciA9IGRhdGEucm93Qm9yZGVyO1xuICAgICAgdGhpcy5ob3ZlckJhY2tncm91bmRDb2xvciA9IGRhdGEuaG92ZXJCYWNrZ3JvdW5kQ29sb3I7XG4gICAgICB0aGlzLnZlcnRpY2FsQWxpZ24gPSBkYXRhLnZlcnRpY2FsQWxpZ247XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDb21wb25lbnRDb25maWcge1xuICBuYW1lOiBzdHJpbmc7XG4gIGJhY2tncm91bmRDb2xvcjogc3RyaW5nO1xuICBib3JkZXI6IHN0cmluZztcbiAgYm9yZGVyUmFkaXVzOiBzdHJpbmc7XG4gIGxhYmVsU3R5bGU6IHN0cmluZztcbiAgdGV4dEFsaWduOiBzdHJpbmc7XG4gIGNvbG9yPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBib3JkZXJDb2xvcj86IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgd2VpZ2h0Pzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICB2YWx1ZVN0eWxlPzogc3RyaW5nO1xuICBzdGFydENvbG9yPzogc3RyaW5nO1xuICBlbmRDb2xvcj86IHN0cmluZztcbiAgaGVpZ2h0Pzogc3RyaW5nO1xuICB0ZXh0YXJlYU1heEhlaWdodD86IHN0cmluZztcbiAgbWFyZ2luVG9wPzogc3RyaW5nO1xuICBtYXJnaW5Cb3R0b20/OiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoZGF0YT86IGFueSkge1xuICAgIGlmIChkYXRhKSB7XG4gICAgICB0aGlzLm5hbWUgPSBkYXRhLm5hbWU7XG4gICAgICB0aGlzLmJhY2tncm91bmRDb2xvciA9IGRhdGEuYmFja2dyb3VuZENvbG9yO1xuICAgICAgdGhpcy5ib3JkZXIgPSBkYXRhLmJvcmRlcjtcbiAgICAgIHRoaXMuYm9yZGVyUmFkaXVzID0gZGF0YS5ib3JkZXJSYWRpdXM7XG4gICAgICB0aGlzLmxhYmVsU3R5bGUgPSBkYXRhLmxhYmVsU3R5bGU7XG4gICAgICB0aGlzLnZhbHVlU3R5bGUgPSBkYXRhLnZhbHVlU3R5bGU7XG4gICAgICB0aGlzLnRleHRBbGlnbiA9IGRhdGEudGV4dEFsaWduO1xuICAgICAgdGhpcy5jb2xvciA9IGRhdGEuY29sb3I7XG4gICAgICB0aGlzLndlaWdodCA9IGRhdGEud2VpZ2h0O1xuICAgICAgdGhpcy5zdGFydENvbG9yID0gZGF0YS5zdGFydENvbG9yO1xuICAgICAgdGhpcy5lbmRDb2xvciA9IGRhdGEuZW5kQ29sb3I7XG4gICAgICB0aGlzLmhlaWdodCA9IGRhdGEuaGVpZ2h0O1xuICAgICAgdGhpcy50ZXh0YXJlYU1heEhlaWdodCA9IGRhdGEudGV4dGFyZWFNYXhIZWlnaHQ7XG4gICAgICB0aGlzLm1hcmdpblRvcCA9IGRhdGEubWFyZ2luVG9wO1xuICAgICAgdGhpcy5tYXJnaW5Cb3R0b20gPSBkYXRhLm1hcmdpbkJvdHRvbTtcbiAgICB9XG4gIH1cbn1cbmV4cG9ydCBjbGFzcyBEaXNwbGF5TW9kZWwge1xuICBzZWN0aW9uczogU2VjdGlvbkRhdGFbXTtcbn1cblxuZXhwb3J0IGNsYXNzIEdlbmVyYWxEYXRhTW9kZWwge1xuICBuYW1lOiBzdHJpbmc7XG4gIGFwcGxpY2F0aW9uVHlwZTogbnVtYmVyO1xuICBsYW5ndWFnZXM6IHN0cmluZ1tdO1xuICBkZWZhdWx0TGFuZ3VhZ2U6IHN0cmluZztcbiAgY29udGludWVXaXRoT2ZmZXI6IGJvb2xlYW47XG4gIHNob3dDb3VudGVyU3RlcDogYm9vbGVhbjtcbiAgc2hvd05hbWVTdGVwOiBib29sZWFuO1xuICBzaG93QWxsU3RlcHM6IGJvb2xlYW47XG4gIHNob3dQcm9ncmVzc0JhcjogYm9vbGVhbjtcbiAgaW5pdEZsb3dWYWx1ZXM/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRm9ybXNTdGF0ZSB7XG4gIGRhdGE6IEZvcm1Nb2RlbDtcbiAgc2VsZWN0ZWRUYWI6IHN0cmluZztcbiAgdmVyc2lvbjogc3RyaW5nO1xuICBjYW5HZXRGcm9tUHJvZDogYm9vbGVhbjtcbiAgY2FuR2V0RnJvbVRlc3Q6IGJvb2xlYW47XG4gIGNhblB1Ymxpc2hJblByb2Q6IGJvb2xlYW47XG4gIGNhblB1Ymxpc2hJblRlc3Q6IGJvb2xlYW47XG4gIGFwcGxpY2F0aW9uVXVpZDogc3RyaW5nO1xufVxuXG5leHBvcnQgY29uc3QgaW5pdGlhbEZvcm11bGFyZVN0YXRlOiBGb3Jtc1N0YXRlID0ge1xuICBkYXRhOiB7XG4gICAgYXBwbGljYXRpb25JZDogMCxcbiAgICBhcHBsaWNhdGlvblV1aWQ6ICcnLFxuICAgIGdlbmVyYWxEYXRhOiB7XG4gICAgICBuYW1lOiAnJyxcbiAgICAgIGFwcGxpY2F0aW9uVHlwZTogMCxcbiAgICAgIGxhbmd1YWdlczogW10sXG4gICAgICBkZWZhdWx0TGFuZ3VhZ2U6ICcnLFxuICAgICAgY29udGludWVXaXRoT2ZmZXI6IGZhbHNlLFxuICAgICAgc2hvd0NvdW50ZXJTdGVwOiBmYWxzZSxcbiAgICAgIHNob3dOYW1lU3RlcDogZmFsc2UsXG4gICAgICBzaG93QWxsU3RlcHM6IGZhbHNlLFxuICAgICAgc2hvd1Byb2dyZXNzQmFyOiBmYWxzZSxcbiAgICAgIGluaXRGbG93VmFsdWVzOiAnJyxcbiAgICB9LFxuICAgIGRlc2lnbjoge1xuICAgICAgZm9udHM6IFtdLFxuICAgICAgYnV0dG9uczogW10sXG4gICAgICBvdHBBY3Rpb25CdXR0b25zOiBbXSxcbiAgICAgIGNvbXBvbmVudHM6IFtdLFxuICAgICAgdGFibGVzOiBbXSxcbiAgICAgIGJhY2tncm91bmRDb2xvcjogJycsXG4gICAgICBmb250U2l6ZTogJycsXG4gICAgICBidXR0b25zSG9yaXpvbnRhbFBvc2l0aW9uOiAnJyxcbiAgICAgIGJ1dHRvbnNWZXJ0aWNhbFBvc2l0aW9uOiAnJyxcbiAgICAgIG1heFdpZHRoOiAnJyxcbiAgICAgIG1hcmdpbkxlZnQ6ICcnLFxuICAgICAgbWFyZ2luUmlnaHQ6ICcnLFxuICAgICAgbWFyZ2luVG9wOiAnJyxcbiAgICAgIG1hcmdpbkJvdHRvbTogJycsXG4gICAgfSxcbiAgICBmbHV4OiBbXSxcbiAgICBhcGk6IHsgZ2V0SXRlbXM6IFtdLCB2YWxpZGF0aW9uSXRlbXM6IFtdLCBzZW5kSXRlbXM6IFtdIH0sXG4gICAgcGFydG5lcnM6IFtdLFxuICAgIGRvY3VtZW50czogW10sXG4gICAgc3RhdHVzZXM6IFtdLFxuICAgIGRpc3BsYXk6IHtcbiAgICAgIHNlY3Rpb25zOiBbXSxcbiAgICB9LFxuICAgIGdlbmVyYXRlZENzczoge30sXG4gICAgbWV0YWRhdGFGaWVsZHM6IFtdLFxuICAgIGVycm9yczoge30sXG4gICAgYXBwbGljYXRpb25NYXBwaW5nczoge1xuICAgICAgYXBwbGljYXRpb25UeXBlSWQ6IDAsXG4gICAgICBjb2x1bW5NYXBwaW5nczogW10sXG4gICAgfSxcbiAgICBwYXJlbnRDaGlsZENvbmZpZzoge1xuICAgICAgcGFyZW50QXBwbGljYXRpb25VdWlkOiBudWxsLFxuICAgICAgaW5oZXJpdGVkRmllbGRzOiBbXSxcbiAgICAgIG5vdGlmaWNhdGlvbkNvbmZpZzoge1xuICAgICAgICBlbmFibGVkOiBmYWxzZSxcbiAgICAgICAgdGl0bGVUZW1wbGF0ZTogJ1N0YXR1cyB1cGRhdGU6IHtzdGF0dXNOYW1lfScsXG4gICAgICAgIG1lc3NhZ2VUZW1wbGF0ZTogJ1lvdXIgYXBwbGljYXRpb24gc3RhdHVzIGhhcyBiZWVuIHVwZGF0ZWQgdG86IHtzdGF0dXNOYW1lfScsXG4gICAgICB9LFxuICAgIH0sXG4gIH0sXG4gIHNlbGVjdGVkVGFiOiAnRGF0ZSBnZW5lcmFsZScsXG4gIGNhbkdldEZyb21Qcm9kOiBmYWxzZSxcbiAgY2FuR2V0RnJvbVRlc3Q6IGZhbHNlLFxuICBjYW5QdWJsaXNoSW5Qcm9kOiBmYWxzZSxcbiAgY2FuUHVibGlzaEluVGVzdDogZmFsc2UsXG4gIGFwcGxpY2F0aW9uVXVpZDogJycsXG4gIHZlcnNpb246ICcnLFxufTtcblxuZXhwb3J0IGNsYXNzIFBhcnRuZXJEaWN0aW9uYXJ5TWFwcGluZyB7XG4gIGRpY3Rpb25hcnlJZDogc3RyaW5nO1xuICBkaWN0aW9uYXJ5TmFtZTogc3RyaW5nO1xuICBtYXBwaW5nczogUGFydG5lcktleVZhbHVlSXRlbVtdO1xufVxuXG5leHBvcnQgY2xhc3MgUGFydG5lclNldHRpbmdzIHtcbiAgcGFydG5lck1ldGhvZHNBcGk6IFBhcnRuZXJNZXRob2RBcGlbXSA9IFtdO1xufVxuXG5leHBvcnQgY2xhc3MgUGFydG5lck1ldGhvZEFwaSB7XG4gIG1ldGhvZElkOiBzdHJpbmc7XG4gIG1ldGhvZFR5cGU6IHN0cmluZztcbiAgY2FsbFR5cGU6IHN0cmluZztcbiAgYm9keUNvbmZpZ3VyYXRpb246IFBhcnRuZXJNZXRob2RCb2R5O1xuICByZXNwb25zZUNvbmZpZ3VyYXRpb246IFBhcnRuZXJNZXRob2RSZXNwb25zZTtcbiAgdXJsQ29uZmlndXJhdGlvbjogUGFydG5lck1ldGhvZFVybDtcbiAgYXV0aFZhbHVlOiBQYXJ0bmVyTWV0aG9kQXBpQXV0aDtcbiAgaGVhZGVyczogUGFydG5lcktleVZhbHVlSXRlbVtdO1xuICAvLyBJTkJPVU5ELXNwZWNpZmljIHByb3BlcnRpZXNcbiAgaW5ib3VuZE1ldGhvZFR5cGU/OiBJbmJvdW5kTWV0aG9kVHlwZTsgLy8gVHlwZSBvZiBJTkJPVU5EIG1ldGhvZFxufVxuXG5leHBvcnQgZW51bSBJbmJvdW5kTWV0aG9kVHlwZSB7XG4gIFN0YW5kYXJkID0gJ1N0YW5kYXJkJyxcbiAgU3RhdHVzTWV0aG9kID0gJ1N0YXR1c01ldGhvZCcsXG59XG5cbmV4cG9ydCBjbGFzcyBQYXJ0bmVyTWV0aG9kQXBpQXV0aCB7XG4gIGhlYWRlck5hbWU6IHN0cmluZyB8IG51bGw7XG4gIGFwaUtleTogc3RyaW5nIHwgbnVsbDtcbiAgYXV0aFR5cGU6IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIFBhcnRuZXJLZXlWYWx1ZUl0ZW0ge1xuICBrZXk6IHN0cmluZztcbiAga2V5TmFtZTogc3RyaW5nIHwgbnVsbDtcbiAgdmFsdWU6IHN0cmluZztcbn1cbmV4cG9ydCBjbGFzcyBQYXJ0bmVyU3RhdHVzTWFwcGluZyB7XG4gIHBhcnRuZXJTdGF0dXM6IHN0cmluZztcbiAgYXBwU3RhdHVzOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBQYXJ0bmVyTWV0aG9kVXJsIHtcbiAgdXJsVmFsdWU6IHN0cmluZztcbiAgdGltZW91dDogbnVtYmVyO1xuICB0ZXN0VXJsOiBzdHJpbmc7XG4gIHByb2RVcmw6IHN0cmluZztcbiAgcGFyYW1ldGVyTWFwcGluZ3M6IFVybE1hcEZpZWxkc1tdO1xufVxuXG5leHBvcnQgY2xhc3MgUGFydG5lck1ldGhvZFJlc3BvbnNlIHtcbiAgY29udGVudFR5cGU6IHN0cmluZztcbiAganNvblZhbHVlOiBzdHJpbmc7XG4gIHJlc3BvbnNlTWFwRmllbGRzOiBGaWVsZHNNYXBwaW5nW107XG59XG5cbmV4cG9ydCBjbGFzcyBVcmxNYXBGaWVsZHMge1xuICB1cmxQYXJhbWV0ZXI6IHN0cmluZztcbiAgZmx1eEZpZWxkOiBzdHJpbmc7XG4gIGZsdXhGaWVsZElkOiBzdHJpbmc7XG4gIGZpZWxkVHlwZTogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgUGFydG5lck1ldGhvZEJvZHkge1xuICBjb250ZW50VHlwZTogc3RyaW5nO1xuICBqc29uVmFsdWU6IHN0cmluZztcbiAgYm9keU1hcEZpZWxkczogRmllbGRzTWFwcGluZ1tdO1xufVxuXG5leHBvcnQgY2xhc3MgRmllbGRzTWFwcGluZyB7XG4gIHBhcnRuZXJGaWVsZDogc3RyaW5nO1xuICBmbHV4RmllbGRJZDogc3RyaW5nO1xuICBtZXRob2RGaWVsZElkOiBzdHJpbmc7XG4gIGZpZWxkVHlwZTogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgTWV0aG9kRmllbGQge1xuICBpZDogc3RyaW5nO1xuICBmaWVsZE5hbWU6IHN0cmluZztcbiAgZmllbGRUeXBlOiBTdGVwQ29udHJvbFR5cGUgfCBGbHV4VHlwZSB8IHN0cmluZztcbiAgbWFudWxJbnB1dENvbnRyb2xUeXBlPzogTWFudWFsSW5wdXRDb250cm9sVHlwZSB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcbiAgZmllbGRWYWx1ZT86IHN0cmluZyB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcbiAgZXhwZWN0ZWRWYWx1ZT86IHN0cmluZyB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IGNsYXNzIEdldE1ldGhvZEZpZWxkIHtcbiAgaWQ6IHN0cmluZztcbiAgZmllbGROYW1lOiBzdHJpbmc7XG4gIGZpZWxkVHlwZTogU3RlcENvbnRyb2xUeXBlIHwgRmx1eFR5cGUgfCBzdHJpbmc7XG4gIGRvY3VtZW50SWQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIE1hbnVhbElucHV0Q29udHJvbERhdGEge1xuICB0eXBlOiBNYW51YWxJbnB1dENvbnRyb2xUeXBlO1xuICBpc1NpbXBsZVZhbGlkYXRpb246IGJvb2xlYW47XG4gIGlzQXBpVmFsaWRhdGlvbjogYm9vbGVhbjtcbiAgYXBpVmFsaWRhdGlvbk1ldGhvZD86IHN0cmluZyB8IG51bGw7XG4gIGFwaVZhbGlkYXRpb25QYXJ0bmVyPzogc3RyaW5nIHwgbnVsbDtcbiAgYWxsb3dlZENoYXJhY3RlcnM/OiBzdHJpbmc7XG4gIG1heENoYXJhY3RlcnM/OiBudW1iZXI7XG4gIG1pblZhbHVlPzogbnVtYmVyO1xuICBtYXhWYWx1ZT86IG51bWJlcjtcbiAgYWxsb3dPbmx5UGFzdD86IGJvb2xlYW47XG4gIGFsbG93T25seUZ1dHVyZT86IGJvb2xlYW47XG4gIGlzTWFuZGF0b3J5OiBib29sZWFuO1xuICBpc1ByZWNvbXBsZXRhYmxlPzogYm9vbGVhbjtcbiAgcHJlY29tcGxldGlvbkZpZWxkSWQ/OiBzdHJpbmcgfCBudWxsO1xufVxuXG5leHBvcnQgY2xhc3MgUGFyYWdyYXBoQ29udHJvbERhdGEge1xuICBkZXNjcmlwdGlvblRyYW5zbGF0aW9uczogTGFiZWxJbmZvW107XG4gIGlzTWFuZGF0b3J5OiBib29sZWFuO1xuICBpc01hbmRhdG9yeVRyYW5zbGF0aW9ucz86IExhYmVsSW5mb1tdO1xufVxuXG5leHBvcnQgY2xhc3MgRGljdGlvbmFyeUNvbnRyb2xEYXRhIHtcbiAgZGljdGlvbmFyeVVVSUQ6IHN0cmluZztcbiAgc2hvd0FzUmFkaW9CdXR0b25zTGlzdDogYm9vbGVhbjtcbiAgcmVsYXRlZERpY3Rpb25hcmllc1RyYW5zbGF0aW9uczogRGljdGlvbmFyeUxhYmVsSW5mb1tdO1xuICBkaWN0aW9uYXJ5RGVmYXVsdFZhbHVlSWQ/OiBudW1iZXIgfCBudWxsO1xuICBzZWxlY3RlZFJlbGF0ZWREaWN0aW9uYXJpZXM6IHN0cmluZ1tdO1xuICBhbGxvd011bHRpcGxlU2VsZWN0aW9uPzogYm9vbGVhbjtcbiAgaXNNYW5kYXRvcnk/OiBib29sZWFuO1xufVxuXG5leHBvcnQgZW51bSBGbHV4VHlwZSB7XG4gIEt5YyA9IDAsXG4gIEVtYWlsID0gMSxcbiAgUGhvbmUgPSAyLFxuICBTaWduID0gMyxcbiAgU3RhdHVzID0gNCxcbiAgQ3VzdG9tID0gNSxcbiAgUGF1c2UgPSA2LFxuICBJZFNjYW4gPSA3LFxuICBHZW5lcmF0ZURvY3VtZW50ID0gOCxcbiAgQWN0aW9uID0gOSxcbiAgVXBsb2FkRG9jdW1lbnQgPSAxMCxcbiAgRG93bmxvYWREb2N1bWVudCA9IDExLFxuICBWaWV3T2ZmZXIgPSAxMixcbiAgRmluYWwgPSAxMyxcbiAgVmlld0RvY3VtZW50ID0gMTQsXG4gIE5FVE9QSUEgPSAxNSxcbiAgRVVQTEFURVNDID0gMTYsXG4gIE9wZW5CYW5raW5nID0gMTcsXG4gIFZhbGlkYXRpb24gPSAxOCxcbn1cblxuZXhwb3J0IGVudW0gU2VjdGlvblR5cGUge1xuICBQcmVzZW50YXRpb24sXG4gIENvbGxlY3QsXG4gIERpc3BsYXksXG59XG5cbmV4cG9ydCBlbnVtIFN0ZXBDb250cm9sVHlwZSB7XG4gIE1hbnVhbElucHV0ID0gMCxcbiAgUGFyYWdyYXBoID0gMSxcbiAgQ2hlY2tCb3ggPSAyLFxuICBEaWN0aW9uYXJ5ID0gMyxcbiAgQnV0dG9ucyA9IDQsXG4gIEZsdXhJbmZvID0gNSxcbiAgTmV3Um93ID0gNixcbiAgTWV0YWRhdGEgPSA3LFxuICBBcGlNZXRob2RGaWVsZCA9IDgsXG4gIERvd25sb2FkRG9jdW1lbnRzID0gOSxcbiAgVmlld0RvY3VtZW50cyA9IDEwLFxuICBVcGxvYWREb2N1bWVudHMgPSAxMSxcbn1cblxuZXhwb3J0IGVudW0gRGltZW5zaW9uVHlwZSB7XG4gIFBlcmNlbnRhZ2UsXG4gIFBpeGVscyxcbn1cblxuZXhwb3J0IGVudW0gTWFudWFsSW5wdXRDb250cm9sVHlwZSB7XG4gIFRleHQsXG4gIE51bWVyaWMsXG4gIERhdGVUaW1lLFxuICBFbWFpbCxcbiAgUGhvbmUsXG4gIFRleHRBcmVhLFxufVxuXG5leHBvcnQgZW51bSBTaWduYXR1cmVUeXBlIHtcbiAgRWxlY3Ryb25pYyxcbiAgSGFuZHdyaXR0ZW4sXG4gIFF1YWxpZmllZCxcbn1cblxuZXhwb3J0IGVudW0gQXBpTWV0aG9kVHlwZSB7XG4gIEdldERhdGEsXG4gIFNlbmREYXRhLFxuICBWYWxpZGF0aW9uLFxufVxuXG5leHBvcnQgY2xhc3MgU3RhdHVzTW9kZWwge1xuICBpZDogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIG9yZGVyOiBudW1iZXI7XG4gIGZpbmFsOiBib29sZWFuO1xuICBpc0FjdGl2ZTogYm9vbGVhbjtcbiAgYWN0aW9uczogU3RhdHVzQWN0aW9uW10gPSBbXTtcbiAgY2hpbGRBcHBsaWNhdGlvblV1aWRzOiBzdHJpbmdbXSA9IFtdO1xuICBzZW5kTm90aWZpY2F0aW9uczogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGlkOiBzdHJpbmcsXG4gICAgZGVudW1pcmU6IHN0cmluZyxcbiAgICBvcmRpbmU6IG51bWJlcixcbiAgICBmaW5hbDogYm9vbGVhbixcbiAgICBpc0FjdGl2ZTogYm9vbGVhbixcbiAgICBhY3Rpb25zOiBTdGF0dXNBY3Rpb25bXSxcbiAgICBjaGlsZEFwcGxpY2F0aW9uVXVpZHM6IHN0cmluZ1tdID0gW10sXG4gICAgc2VuZE5vdGlmaWNhdGlvbnM6IGJvb2xlYW4gPSBmYWxzZSxcbiAgKSB7XG4gICAgdGhpcy5pZCA9IGlkO1xuICAgIHRoaXMubmFtZSA9IGRlbnVtaXJlO1xuICAgIHRoaXMub3JkZXIgPSBvcmRpbmU7XG4gICAgdGhpcy5maW5hbCA9IGZpbmFsO1xuICAgIHRoaXMuaXNBY3RpdmUgPSBpc0FjdGl2ZTtcbiAgICB0aGlzLmFjdGlvbnMgPSBhY3Rpb25zO1xuICAgIHRoaXMuY2hpbGRBcHBsaWNhdGlvblV1aWRzID0gY2hpbGRBcHBsaWNhdGlvblV1aWRzO1xuICAgIHRoaXMuc2VuZE5vdGlmaWNhdGlvbnMgPSBzZW5kTm90aWZpY2F0aW9ucztcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgU3RhdHVzQWN0aW9uIHtcbiAgaWQ/OiBzdHJpbmc7XG4gIGFjdGlvblRpdGxlOiBzdHJpbmc7XG4gIGFwaU1ldGhvZElkOiBzdHJpbmc7XG4gIHBhcnRuZXJJZHM6IG51bWJlcltdID0gW107XG59XG5cbmV4cG9ydCBjbGFzcyBQcmVzZW50YXRpb25QYXJhZ3JhcGhDb250cm9sIGV4dGVuZHMgUHJlc2VudGF0aW9uQ29udHJvbCB7XG4gIGRlc2NyaXB0aW9uVHJhbnNsYXRpb25zOiBMYWJlbEluZm9bXTtcbn1cblxuZXhwb3J0IGNsYXNzIEFwcFBhcnRuZXIgZXh0ZW5kcyBQYXJ0bmVyIHtcbiAgZG9jdW1lbnRzPzogQXBwUGFydG5lckRvY3VtZW50c1tdID0gW107XG4gIGdlbmVyYWxTZXR0aW5nczogQXBwUGFydG5lckdlbmVyYWxTZXR0aW5ncztcbiAgcGFydG5lclNldHRpbmdzOiBQYXJ0bmVyU2V0dGluZ3M7XG4gIHBhcnRuZXJEaWN0aW9uYXJ5TWFwcGluZzogUGFydG5lckRpY3Rpb25hcnlNYXBwaW5nW107XG4gIHBhcnRuZXJTdGF0dXNNYXBwaW5nOiBQYXJ0bmVyU3RhdHVzTWFwcGluZ1tdO1xufVxuXG5leHBvcnQgY2xhc3MgQXBwUGFydG5lckdlbmVyYWxTZXR0aW5ncyB7XG4gIGFjY2VwdE11bHRpcGxlT2ZmZXJzOiBib29sZWFuO1xuICBvZmZlcnM6IEFwcFBhcnRuZXJHZW5lcmFsU2V0dGluZ3NPZmZlcltdID0gW107XG4gIHJlY2VpdmVkT2ZmZXJzOiBBcHBQYXJ0bmVyR2VuZXJhbFNldHRpbmdzUmVjZWl2ZWRPZmZlcltdID0gW107XG4gIHZhbGFiaWxpdHk6IG51bWJlcjtcbiAgaGFzQ3VzdG9tVmFsYWJpbGl0eTogYm9vbGVhbjtcbiAgc3RhdHVzV29ya2VyU2V0dGluZ3M6IEFwcFN0YXR1c1dvcmtlclNldHRpbmdzO1xufVxuZXhwb3J0IGNsYXNzIEFwcFN0YXR1c1dvcmtlclNldHRpbmdzIHtcbiAgbWF4UmV0cmllczogbnVtYmVyO1xuICBsb29wSW50ZXJ2YWw6IG51bWJlcjtcbn1cbmV4cG9ydCBjbGFzcyBBcHBQYXJ0bmVyR2VuZXJhbFNldHRpbmdzT2ZmZXIge1xuICBpZDogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIGFwaU1ldGhvZElkOiBzdHJpbmc7XG4gIGlkZW50aWZpZXI6IHN0cmluZztcbiAgdmFsdWU6IHN0cmluZztcbiAgY3VzdG9tVmFsYWJpbGl0eT86IG51bWJlcjtcbiAgYXBpTWV0aG9kRmllbGRzPzogYW55W10gPSBbXTtcbn1cblxuZXhwb3J0IGNsYXNzIEFwcFBhcnRuZXJHZW5lcmFsU2V0dGluZ3NSZWNlaXZlZE9mZmVyIHtcbiAgaWQ6IHN0cmluZztcbiAgb2ZmZXJzOiBBcHBQYXJ0bmVyR2VuZXJhbFNldHRpbmdzT2ZmZXJbXTtcbn1cblxuZXhwb3J0IGNsYXNzIEFwcFBhcnRuZXJEb2N1bWVudHMge1xuICBpZDogc3RyaW5nO1xuICBkb2N1bWVudElkOiBzdHJpbmc7XG4gIGRvY3VtZW50TmFtZTogc3RyaW5nO1xuICBhcGlNZXRob2RJZDogc3RyaW5nO1xuICBpc0VkaXRNb2RlOiBib29sZWFuO1xufVxuXG5leHBvcnQgY2xhc3MgQXBwRG9jdW1lbnQge1xuICBpZDogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIHRyYW5zbGF0aW9uczogTGFiZWxJbmZvW107XG4gIGdlbmVyYXRlZEJ5QXBwOiBib29sZWFuO1xuICBpc1N0YXRpYzogYm9vbGVhbjtcbiAgaXNBY3RpdmU6IGJvb2xlYW47XG4gIHZlcnNpb25zOiBBcHBEb2N1bWVudFZlcnNpb25bXSA9IFtdO1xufVxuZXhwb3J0IGNsYXNzIFNpZ25lZERvY3VtZW50IGV4dGVuZHMgQXBwRG9jdW1lbnQge1xuICBzb3VyY2VEb2N1bWVudHM6IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFwcERvY3VtZW50RXh0ZW5kZWQgZXh0ZW5kcyBBcHBEb2N1bWVudCB7XG4gIGlzQXBpRG9jdW1lbnQ/OiBib29sZWFuO1xufVxuXG5leHBvcnQgY2xhc3MgQXBwRG9jdW1lbnRWZXJzaW9uIHtcbiAgaWQ6IG51bWJlcjtcbiAgYXBwbGljYXRpb25JZDogbnVtYmVyO1xuICBuYW1lOiBzdHJpbmc7XG4gIGRvY3VtZW50SWQ6IHN0cmluZztcbiAgdmVyc2lvbjogbnVtYmVyO1xuICB2YWxpZEZyb206IERhdGU7XG4gIHZhbGlkVG86IERhdGUgfCB1bmRlZmluZWQ7XG4gIGlzRWRpdE1vZGU6IGJvb2xlYW47XG4gIGRhdGE6IHN0cmluZyB8IG51bGw7XG4gIGZsdXhCb29rbWFya3M6IEJvb2ttYXJrTWFwcGluZ1tdO1xuICBpc1RlbXBvcmFyeTogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNsYXNzIEJvb2ttYXJrTWFwcGluZyB7XG4gIGJvb2ttYXJrOiBzdHJpbmc7XG4gIGNvbnRyb2xJZDogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgRXJyb3JUcmFuc2xhdGlvbnMge1xuICBjb2RlOiBzdHJpbmc7XG4gIHRyYW5zbGF0aW9uczogTGFiZWxJbmZvW107XG59XG5cbmV4cG9ydCBjbGFzcyBVcGxvYWREb2N1bWVudCB7XG4gIGRvY3VtZW50SWQ6IHN0cmluZztcbiAgZmlsZU5hbWU6IHN0cmluZztcbiAgZmlsZURhdGE6IHN0cmluZyB8IHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IGNsYXNzIFVwbG9hZERvY3VtZW50RGV0YWlscyBleHRlbmRzIFVwbG9hZERvY3VtZW50IHtcbiAgZG9jdW1lbnROYW1lOiBzdHJpbmc7XG4gIGRvY3VtZW50RXh0ZW5zaW9uczogc3RyaW5nO1xuICBkb2N1bWVudE1heFNpemU6IG51bWJlcjtcbiAgaXNNYW5kYXRvcnk6IGJvb2xlYW47XG4gIGlzVXBsb2FkaW5nOiBib29sZWFuO1xuICBpc1VwbG9hZFN1Y2Nlc3M6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjbGFzcyBTdGVwc1NldHRpbmdzIHtcbiAgc2hvd0NvdW50ZXI6IGJvb2xlYW47XG4gIHNob3dMYWJlbHM6IGJvb2xlYW47XG4gIHNob3dBbGxTdGVwczogYm9vbGVhbjtcbiAgc2hvd1Byb2dyZXNzQmFyOiBib29sZWFuO1xufVxuXG5leHBvcnQgZW51bSBBcHBEYXRhU3RhdHVzIHtcbiAgbmV3ID0gMCxcbiAgZmluaXNoZWQgPSAxLFxufVxuIl19
|