@eqproject/eqp-dynamic-module 2.10.42 → 2.10.44
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/esm2020/lib/components/private/dbg-templates/list-value-dbg-template/list-value-dbg-template.component.mjs +4 -1
- package/esm2020/lib/components/private/dbgetter/dbgetter.component.mjs +22 -1
- package/fesm2015/eqproject-eqp-dynamic-module.mjs +24 -0
- package/fesm2015/eqproject-eqp-dynamic-module.mjs.map +1 -1
- package/fesm2020/eqproject-eqp-dynamic-module.mjs +24 -0
- package/fesm2020/eqproject-eqp-dynamic-module.mjs.map +1 -1
- package/lib/components/private/dbgetter/dbgetter.component.d.ts +2 -2
- package/package.json +1 -1
|
@@ -10,6 +10,9 @@ export class ListValueDbgTemplateComponent {
|
|
|
10
10
|
}
|
|
11
11
|
ngOnInit() {
|
|
12
12
|
if (this.record[this.field.Name] != null) {
|
|
13
|
+
if (!Array.isArray(this.record[this.field.Name])) {
|
|
14
|
+
this.record[this.field.Name] = [this.record[this.field.Name]];
|
|
15
|
+
}
|
|
13
16
|
this.record[this.field.Name].forEach(element => {
|
|
14
17
|
var pushElement = new ListValueElement();
|
|
15
18
|
pushElement.ID = element.ID;
|
|
@@ -34,4 +37,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
34
37
|
}], record: [{
|
|
35
38
|
type: Input
|
|
36
39
|
}] } });
|
|
37
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
40
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC12YWx1ZS1kYmctdGVtcGxhdGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXFwLWR5bmFtaWMtbW9kdWxlL3NyYy9saWIvY29tcG9uZW50cy9wcml2YXRlL2RiZy10ZW1wbGF0ZXMvbGlzdC12YWx1ZS1kYmctdGVtcGxhdGUvbGlzdC12YWx1ZS1kYmctdGVtcGxhdGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXFwLWR5bmFtaWMtbW9kdWxlL3NyYy9saWIvY29tcG9uZW50cy9wcml2YXRlL2RiZy10ZW1wbGF0ZXMvbGlzdC12YWx1ZS1kYmctdGVtcGxhdGUvbGlzdC12YWx1ZS1kYmctdGVtcGxhdGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFakQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7Ozs7QUFRckUsTUFBTSxPQUFPLDZCQUE2QjtJQUwxQztRQVVFLGNBQVMsR0FBNEIsSUFBSSxLQUFLLEVBQW9CLENBQUM7UUFDbkUsV0FBTSxHQUFZLEtBQUssQ0FBQztLQXNCekI7SUFwQkMsUUFBUTtRQUVOLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksRUFBQztZQUN2QyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBQztnQkFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQzthQUFFO1lBQ25ILElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUU7Z0JBQzdDLElBQUksV0FBVyxHQUFHLElBQUksZ0JBQWdCLEVBQUUsQ0FBQztnQkFDekMsV0FBVyxDQUFDLEVBQUUsR0FBRyxPQUFPLENBQUMsRUFBRSxDQUFDO2dCQUM1QixXQUFXLENBQUMsS0FBSyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUM7Z0JBQ2xDLFdBQVcsQ0FBQyxHQUFHLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQztnQkFDOUIsV0FBVyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7Z0JBQzVCLFdBQVcsQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQztnQkFDbEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDbkMsQ0FBQyxDQUFDLENBQUM7U0FDSjtRQUVELE9BQU8sQ0FBQyxHQUFHLENBQUMsK0JBQStCLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRTdELElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO0lBQ3JCLENBQUM7OzJIQTFCVSw2QkFBNkI7K0dBQTdCLDZCQUE2Qiw2R0NWMUMsd1NBSWE7NEZETUEsNkJBQTZCO2tCQUx6QyxTQUFTOytCQUNFLHlCQUF5Qjs4QkFNMUIsS0FBSztzQkFBYixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUmVjb3JkIH0gZnJvbSAnLi4vLi4vLi4vLi4vbW9kZWxzL3JlY29yZC5tb2RlbCc7XHJcbmltcG9ydCB7IExpc3RWYWx1ZUVsZW1lbnQgfSBmcm9tICcuLi8uLi9kYmdldHRlci9kYmdldHRlci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBMaXN0VmFsdWVGaWVsZCB9IGZyb20gJy4uLy4uLy4uLy4uL21vZGVscy9maWVsZHMvbGlzdFZhbHVlRmllbGQubW9kZWwnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaXN0LXZhbHVlLWRiZy10ZW1wbGF0ZScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2xpc3QtdmFsdWUtZGJnLXRlbXBsYXRlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9saXN0LXZhbHVlLWRiZy10ZW1wbGF0ZS5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBMaXN0VmFsdWVEYmdUZW1wbGF0ZUNvbXBvbmVudCB7XHJcblxyXG4gIEBJbnB1dCgpIGZpZWxkOiBMaXN0VmFsdWVGaWVsZDtcclxuICBASW5wdXQoKSByZWNvcmQ6IFJlY29yZDtcclxuXHJcbiAgYXJyYXlEYXRhOiBBcnJheTxMaXN0VmFsdWVFbGVtZW50PiA9IG5ldyBBcnJheTxMaXN0VmFsdWVFbGVtZW50PigpO1xyXG4gIGxvYWRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBuZ09uSW5pdCgpe1xyXG5cclxuICAgIGlmICh0aGlzLnJlY29yZFt0aGlzLmZpZWxkLk5hbWVdICE9IG51bGwpe1xyXG4gICAgICBpZiAoIUFycmF5LmlzQXJyYXkodGhpcy5yZWNvcmRbdGhpcy5maWVsZC5OYW1lXSkpeyB0aGlzLnJlY29yZFt0aGlzLmZpZWxkLk5hbWVdID0gW3RoaXMucmVjb3JkW3RoaXMuZmllbGQuTmFtZV1dOyB9XHJcbiAgICAgIHRoaXMucmVjb3JkW3RoaXMuZmllbGQuTmFtZV0uZm9yRWFjaChlbGVtZW50ID0+IHtcclxuICAgICAgICB2YXIgcHVzaEVsZW1lbnQgPSBuZXcgTGlzdFZhbHVlRWxlbWVudCgpO1xyXG4gICAgICAgIHB1c2hFbGVtZW50LklEID0gZWxlbWVudC5JRDtcclxuICAgICAgICBwdXNoRWxlbWVudC5GaWVsZCA9IGVsZW1lbnQuRmllbGQ7XHJcbiAgICAgICAgcHVzaEVsZW1lbnQuS2V5ID0gZWxlbWVudC5LZXk7XHJcbiAgICAgICAgcHVzaEVsZW1lbnQuU2VsZWN0ZWQgPSB0cnVlO1xyXG4gICAgICAgIHB1c2hFbGVtZW50LlZhbHVlID0gZWxlbWVudC5WYWx1ZTtcclxuICAgICAgICB0aGlzLmFycmF5RGF0YS5wdXNoKHB1c2hFbGVtZW50KTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc29sZS5sb2coXCJMaXN0VmFsdWVEYmdUZW1wbGF0ZUNvbXBvbmVudFwiLCB0aGlzLmFycmF5RGF0YSk7XHJcblxyXG4gICAgdGhpcy5sb2FkZWQgPSB0cnVlO1xyXG4gIH1cclxuXHJcbn1cclxuIiwiPGVxcC1zZWxlY3QgKm5nSWY9XCJsb2FkZWRcIiBbKG5nTW9kZWxJbnB1dCldPVwiYXJyYXlEYXRhXCIgW2FycmF5RGF0YV09XCJhcnJheURhdGFcIlxyXG4gICAgW2FycmF5S2V5UHJvcGVydHldPVwiJ1ZhbHVlJ1wiIFthcnJheVZhbHVlUHJvcGVydHldPVwiJ0tleSdcIlxyXG4gICAgW2lzUmVxdWlyZWRdPVwiZmllbGQuUmVxdWlyZWRcIiBbaXNEaXNhYmxlZF09XCJ0cnVlXCIgW3Nob3dDYW5jZWxCdXR0b25dPVwiZmFsc2VcIlxyXG4gICAgW2lzTXVsdGlTZWxlY3RdPVwidHJ1ZVwiPlxyXG48L2VxcC1zZWxlY3Q+Il19
|
|
@@ -249,6 +249,24 @@ export class DbgetterComponent {
|
|
|
249
249
|
var keyused;
|
|
250
250
|
var value = row[key];
|
|
251
251
|
var valueToBeSet = "";
|
|
252
|
+
if (!this.field.IsMultiChoiche) {
|
|
253
|
+
if (this.selectedElements.length > 0) {
|
|
254
|
+
this.selectedElements.forEach((selectedElement, index) => {
|
|
255
|
+
this.selectedElements.splice(index, 1);
|
|
256
|
+
var correspondingCol = document.getElementById("col-" + selectedElement.KeyUsedSV + "-id-" + row['ID']);
|
|
257
|
+
if (correspondingCol == null) {
|
|
258
|
+
correspondingCol = document.getElementById("col-" + selectedElement.KeySV + "-id-" + row['ID']);
|
|
259
|
+
}
|
|
260
|
+
if (this.field.DataGetter.DataGetterColumnForce == null) {
|
|
261
|
+
correspondingCol.classList.remove("row-selected");
|
|
262
|
+
}
|
|
263
|
+
else {
|
|
264
|
+
correspondingCol.parentElement.classList.remove("row-selected");
|
|
265
|
+
}
|
|
266
|
+
});
|
|
267
|
+
this.selectedElements = new Array();
|
|
268
|
+
}
|
|
269
|
+
}
|
|
252
270
|
if (this.field.DataGetter.DataGetterColumnForce == null) {
|
|
253
271
|
valueToBeSet = value;
|
|
254
272
|
keyused = key;
|
|
@@ -283,6 +301,9 @@ export class DbgetterComponent {
|
|
|
283
301
|
}
|
|
284
302
|
else {
|
|
285
303
|
GlobalService.debugLog("ho multiselect");
|
|
304
|
+
if (this.selectedElements != null && !Array.isArray(this.selectedElements)) {
|
|
305
|
+
this.selectedElements = [this.selectedElements];
|
|
306
|
+
}
|
|
286
307
|
if (this.selectedElements == null) {
|
|
287
308
|
this.selectedElements = new Array();
|
|
288
309
|
}
|
|
@@ -433,4 +454,4 @@ export var QueryEditorModeEnum;
|
|
|
433
454
|
QueryEditorModeEnum[QueryEditorModeEnum["COMPOSER"] = 2] = "COMPOSER";
|
|
434
455
|
QueryEditorModeEnum[QueryEditorModeEnum["RESULT"] = 3] = "RESULT";
|
|
435
456
|
})(QueryEditorModeEnum || (QueryEditorModeEnum = {}));
|
|
436
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGJnZXR0ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXFwLWR5bmFtaWMtbW9kdWxlL3NyYy9saWIvY29tcG9uZW50cy9wcml2YXRlL2RiZ2V0dGVyL2RiZ2V0dGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VxcC1keW5hbWljLW1vZHVsZS9zcmMvbGliL2NvbXBvbmVudHMvcHJpdmF0ZS9kYmdldHRlci9kYmdldHRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR3ZFLE9BQU8sRUFBaUMsYUFBYSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFJL0YsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtDQUFrQyxDQUFDOzs7Ozs7O0FBT2pFLE1BQU0sT0FBTyxpQkFBaUI7SUF1QzVCLFlBQW9CLFVBQXNCO1FBQXRCLGVBQVUsR0FBVixVQUFVLENBQVk7UUFyQ2pDLG1CQUFjLEdBQStCLElBQUksQ0FBQztRQUlsRCxhQUFRLEdBQVksS0FBSyxDQUFDO1FBQzFCLHNCQUFpQixHQUFZLEtBQUssQ0FBQztRQUNuQyx5QkFBb0IsR0FBK0IsSUFBSSxDQUFDLENBQUMsbUNBQW1DO1FBQzVGLFNBQUksR0FBUSxJQUFJLENBQUMsQ0FBQyx3Q0FBd0M7UUFFekQsUUFBRyxHQUEyQixJQUFJLFlBQVksRUFBWSxDQUFDO1FBQzNELGtCQUFhLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7UUFDM0QsYUFBUSxHQUFzQixJQUFJLFlBQVksRUFBTyxDQUFDO1FBRWhFLFNBQUksR0FBa0IsSUFBSSxDQUFDO1FBQzNCLFdBQU0sR0FBWSxLQUFLLENBQUM7UUFHeEIsY0FBUyxHQUFZLEtBQUssQ0FBQztRQUUzQixrQkFBYSxHQUFZLEtBQUssQ0FBQztRQUMvQixrQkFBYSxHQUFZLEtBQUssQ0FBQztRQUMvQixXQUFNLEdBQVksSUFBSSxDQUFDO1FBQ3ZCLDJCQUFzQixHQUFZLEtBQUssQ0FBQztRQUl4QyxjQUFTLEdBQThELElBQUksS0FBSyxFQUFzRCxDQUFDO1FBRXZJLHlCQUFvQixHQUFrQixJQUFJLENBQUM7UUFFM0Msa0JBQWEsR0FBWSxLQUFLLENBQUM7UUFDL0IscUJBQWdCLEdBQVcsQ0FBQyxDQUFDO1FBQzdCLG1CQUFjLEdBQVcsRUFBRSxDQUFDO1FBQzVCLHFCQUFnQixHQUE0QixJQUFJLEtBQUssRUFBb0IsQ0FBQztRQUUxRSxrQkFBYSxHQUFHLGFBQWEsQ0FBQztJQUVlLENBQUM7SUFFOUMsUUFBUTtRQUVOLGFBQWEsQ0FBQyxRQUFRLENBQUMseUJBQXlCLENBQUMsQ0FBQztRQUNsRCxhQUFhLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDeEMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN6QyxhQUFhLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUN4RCxhQUFhLENBQUMsUUFBUSxDQUFDLHlCQUF5QixDQUFDLENBQUM7UUFFaEQsNEJBQTRCO1FBRTVCLElBQUksT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyx3QkFBd0IsS0FBSyxXQUFXLEVBQUM7WUFDeEUsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsd0JBQXdCLEdBQUcsSUFBSSxDQUFDO1NBQ3ZEO1FBRUQsOEJBQThCO1FBRTlCLCtCQUErQjtRQUUvQixJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxJQUFJLGFBQWEsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFDO1lBQzNELElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO1lBRTFCLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMscUJBQXFCLElBQUksSUFBSSxFQUFDO2dCQUN0RCxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLHFCQUFxQixDQUFDLEdBQUcsQ0FBQztnQkFDdEUsSUFBSSxDQUFDLGdCQUFnQixHQUFHLENBQUMsQ0FBQzthQUMzQjtZQUVELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDckQsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLElBQUksSUFBSSxFQUFDO2dCQUFFLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLEtBQUssRUFBb0IsQ0FBQzthQUFFO1NBQzdGO1FBRUQsNkJBQTZCO1FBRS9CLElBQUksSUFBSSxDQUFDLG9CQUFvQixJQUFJLElBQUksRUFBQztZQUNwQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEdBQUcsbUJBQW1CLENBQUMsTUFBTSxDQUFDO1lBQy9FLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1lBQ2hFLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1lBQ2xFLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1lBRXRFLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsZUFBZSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxrQkFBa0IsS0FBSyxRQUFRLElBQUksQ0FBQyxDQUFDLGtCQUFrQixJQUFJLEdBQUcsQ0FBQyxJQUFJLElBQUksRUFBQztnQkFFaEosdUNBQXVDO2dCQUN2QyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztnQkFFMUIsYUFBYSxDQUFDLFFBQVEsQ0FBQyxvQ0FBb0MsRUFBRSxJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQztnQkFFeEYsSUFBSSxJQUFJLENBQUMsb0JBQW9CLElBQUksSUFBSSxFQUFDO29CQUNwQyxJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxLQUFLLEVBQVUsQ0FBQztvQkFDaEQsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsZUFBZSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTt3QkFDakUsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUM7b0JBQ25ELENBQUMsQ0FBQyxDQUFDO2lCQUNKO2FBR0Y7WUFFRCxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsa0JBQWtCLEtBQUssUUFBUSxJQUFJLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLEVBQUM7Z0JBRTVKLG9EQUFvRDtnQkFDcEQsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7Z0JBRTFCLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLGlCQUFpQixFQUFFLEVBQUU7b0JBRXBJLElBQUksWUFBWSxHQUFHLGlCQUFpQixDQUFDLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUMsRUFBRSxDQUFDLENBQUM7b0JBRXhFLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsSUFBSSxJQUFJLEVBQUM7d0JBQ3BDLDBIQUEwSDt3QkFDMUgsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBQyxLQUFLLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLEVBQUMsQ0FBQyxDQUFDO3dCQUNsRyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7d0JBQ3RCLElBQUksQ0FBQyxRQUFRLEdBQUcsV0FBVyxDQUFDLEdBQUcsRUFBRTs0QkFDL0Isd0hBQXdIOzRCQUN0SCxJQUFJLGVBQWUsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksWUFBWSxDQUFDLENBQUM7NEJBQ3hFLElBQUksZUFBZSxJQUFJLElBQUksRUFBQztnQ0FFMUIscURBQXFEO2dDQUNyRCw2RkFBNkY7Z0NBQzdGLElBQUksZUFBZSxDQUFDLFdBQVcsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsSUFBSSxlQUFlLENBQUMsV0FBVyxFQUFDO29DQUN2SSx1SUFBdUk7b0NBQ3ZJLGVBQWUsQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztvQ0FDeEQsZUFBZSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7b0NBQzlCLGlCQUFpQixDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7b0NBQ2pFLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUM7b0NBQ3BDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztpQ0FDeEI7Z0NBRUQseUVBQXlFO3FDQUNwRSxJQUFJLGVBQWUsQ0FBQyxXQUFXLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLElBQUksSUFBSSxFQUFDO29DQUNoRixpSkFBaUo7b0NBQ2pKLGVBQWUsQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztvQ0FDeEQsZUFBZSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7b0NBQzlCLGlCQUFpQixDQUFDLGtCQUFrQixHQUFHLEdBQUcsR0FBQyxZQUFZLENBQUM7b0NBQ3hELElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUM7b0NBRXBDLGtCQUFrQjtvQ0FDbEIsSUFBSSxDQUFDLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO3dDQUN4QyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxZQUFZLElBQUksR0FBRyxDQUFDLENBQUMsa0JBQWtCLEdBQUcsR0FBRyxDQUFDO29DQUMvRyxDQUFDLENBQUMsQ0FBQztvQ0FFSCxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7aUNBQ3hCO2dDQUVELDZEQUE2RDtxQ0FDeEQsSUFBSSxlQUFlLENBQUMsV0FBVyxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxJQUFJLElBQUksRUFBQztvQ0FDaEYsd0lBQXdJO29DQUN4SSxlQUFlLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7b0NBQ3hELGVBQWUsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO29DQUM5QixpQkFBaUIsQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO29DQUNqRSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7aUNBQ3hCO2dDQUVELElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQzs2QkFFdkI7d0JBQ0wsQ0FBQyxFQUFDLEdBQUcsQ0FBQyxDQUFDO3FCQUdSO3lCQUFNO3dCQUNMLG1JQUFtSTt3QkFDbkksaUJBQWlCLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQzt3QkFDMUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBQyxLQUFLLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLEVBQUMsQ0FBQyxDQUFDO3dCQUNqRyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7cUJBQ3ZCO2dCQUVILENBQUMsQ0FBQyxDQUFDO2FBR0o7WUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBQztnQkFDdEIsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7YUFDN0I7U0FFRjthQUFNO1lBRUwsSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksRUFBQztnQkFFdEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsZ0VBQWdFLEVBQUUsRUFBQyxZQUFZLEVBQUUsTUFBTSxFQUFDLENBQUM7cUJBQzVHLFNBQVMsQ0FBQyxxQkFBcUIsQ0FBQyxFQUFFO29CQUNqQyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMscUJBQXFCLENBQUMsQ0FBQztvQkFDOUMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7b0JBQ3pDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksRUFBQyxFQUFFLENBQUMsQ0FBQztnQkFDbEMsQ0FBQyxDQUFDLENBQUM7YUFFSDtTQUVGO0lBRUgsQ0FBQztJQUVELGVBQWU7UUFDYiwyR0FBMkc7UUFFM0csSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDcEIsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDbEUsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7UUFFaEUsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUFHLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1lBQ25CLHVDQUF1QztRQUN4QyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVELGNBQWM7UUFDWixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLElBQUksQ0FBQztJQUNwRSxDQUFDO0lBRUQsc0JBQXNCLENBQUMsRUFBWTtRQUVqQywwRkFBMEY7UUFFMUYsSUFBSSxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBQztZQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1NBQUU7UUFFbEUsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDekMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUU5QyxDQUFDO0lBRUQsYUFBYSxDQUFDLElBQVMsRUFBRSxhQUE0QixFQUFFO1FBRXJELDBDQUEwQztRQUUxQyx1QkFBdUI7UUFDdkIsSUFBSSxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBQztZQUVsQiw0Q0FBNEM7WUFDNUMsSUFBSSxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBRWpDLCtGQUErRjtZQUMvRixJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBQztnQkFDNUMsNEdBQTRHO2dCQUM1RyxhQUFhLENBQUMsUUFBUSxDQUFDLDRFQUE0RSxDQUFDLENBQUM7Z0JBQ3JHLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO2dCQUV2QixJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBQztvQkFDdEIsYUFBYSxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO29CQUMxQyxvQkFBb0I7b0JBQ3BCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUVyRCwrRkFBK0Y7b0JBQy9GLElBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsRUFBQzt3QkFDOUIsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLGdCQUFnQixJQUFJLElBQUksRUFBQzs0QkFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLGdCQUFnQixHQUFHLEVBQUUsQ0FBQzt5QkFBRTt3QkFDL0YsSUFBSSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksR0FBQyxRQUFRLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7cUJBQ2hGO29CQUVELElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO2lCQUNoRTtxQkFBTTtvQkFDTCxhQUFhLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDO29CQUN0Qyw2Q0FBNkM7b0JBQzdDLG1DQUFtQztvQkFDbkMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksS0FBSyxFQUFvQixDQUFDO29CQUN0RCxJQUFJLGVBQWUsR0FBRyxJQUFJLGdCQUFnQixFQUFFLENBQUM7b0JBQzdDLGVBQWUsQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUNuQyxlQUFlLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQ3JDLGVBQWUsQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDNUMsZUFBZSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUU5QyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO29CQUM1QyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUM7aUJBQ2xEO2FBRUY7aUJBQU0sSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxxQkFBcUIsSUFBSSxJQUFJLEVBQUM7Z0JBQ2pGLGFBQWEsQ0FBQyxRQUFRLENBQUMsZ0ZBQWdGLENBQUMsQ0FBQztnQkFFekcsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7Z0JBR3ZCLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFDO29CQUN0QixhQUFhLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLENBQUM7b0JBQzFDLG9CQUFvQjtvQkFDcEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxxQkFBcUIsQ0FBQyxHQUFHLENBQUMsQ0FBQztvQkFDeEYsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7aUJBQ2hFO3FCQUFNO29CQUNMLGFBQWEsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUM7b0JBQ3RDLDZDQUE2QztvQkFDN0MsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksS0FBSyxFQUFvQixDQUFDO29CQUN0RCxJQUFJLGVBQWUsR0FBRyxJQUFJLGdCQUFnQixFQUFFLENBQUM7b0JBQzdDLGVBQWUsQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUNuQyxlQUFlLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLHFCQUFxQixDQUFDLEdBQUcsQ0FBQztvQkFDeEUsZUFBZSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMscUJBQXFCLENBQUMsR0FBRyxDQUFDLENBQUM7b0JBQy9FLGVBQWUsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLHFCQUFxQixDQUFDLEdBQUcsQ0FBQyxDQUFDO29CQUVqRixJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO29CQUM1QyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUM7aUJBQ2xEO2FBSUY7aUJBQU07Z0JBQ0wsYUFBYSxDQUFDLFFBQVEsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO2dCQUVqRCxJQUFJLENBQUMsc0JBQXNCLEdBQUcsSUFBSSxDQUFDO2dCQUNuQyxJQUFJLFVBQVUsQ0FBQyxPQUFPLENBQUMsNkJBQTZCLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBQztvQkFDMUQsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7aUJBQ3ZCO3FCQUFNO29CQUVMLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUM7d0JBQzFCLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO3FCQUN4Qjt5QkFBTTt3QkFDTCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztxQkFDdkI7aUJBRUY7YUFFRjtTQUNGO2FBQU07U0FFTjtJQUVILENBQUM7SUFFRCxXQUFXLENBQUMsR0FBRyxFQUFFLEdBQUc7UUFDbEIsSUFBSSxPQUFPLENBQUM7UUFDWixJQUFJLEtBQUssR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFckIsSUFBSSxZQUFZLEdBQUcsRUFBRSxDQUFDO1FBRXRCLElBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMscUJBQXFCLElBQUksSUFBSSxFQUFDO1lBQ3JELFlBQVksR0FBRyxLQUFLLENBQUM7WUFDckIsT0FBTyxHQUFHLEdBQUcsQ0FBQztTQUNmO2FBQU07WUFDTCxJQUFJLEdBQUcsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMscUJBQXFCLENBQUMsR0FBRyxDQUFDLEVBQUM7Z0JBQ3RFLFlBQVksR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMscUJBQXFCLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ3BFLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxxQkFBcUIsQ0FBQyxHQUFHLENBQUM7YUFDM0Q7aUJBQU0sSUFBSSxHQUFHLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUNsQyxZQUFZLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUN4QixPQUFPLEdBQUcsR0FBRyxDQUFDO2FBQ2Y7U0FHRjtRQUVELElBQUksWUFBWSxJQUFJLElBQUksRUFBQztZQUFFLFlBQVksR0FBRyxFQUFFLENBQUM7U0FBRTtRQUcvQywrRkFBK0Y7UUFDL0YsSUFBRyxHQUFHLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFDO1lBQzFCLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsSUFBSSxJQUFJLEVBQUM7Z0JBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsR0FBRyxFQUFFLENBQUM7YUFBRTtZQUMvRixJQUFJLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFDLFFBQVEsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUM1RTtRQUdELHFHQUFxRztRQUVyRyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBQztZQUN0QixhQUFhLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLENBQUM7WUFDMUMsb0JBQW9CO1lBQ3BCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxZQUFZLENBQUM7WUFDNUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxZQUFZLEVBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNsRCxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztTQUN4QjthQUFNO1lBQ0wsYUFBYSxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1lBRXpDLElBQUksSUFBSSxDQUFDLGdCQUFnQixJQUFJLElBQUksRUFBQztnQkFBRSxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxLQUFLLEVBQW9CLENBQUM7YUFBRTtZQUU1RixJQUFJLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLElBQUksRUFBQztnQkFDN0QsYUFBYSxDQUFDLFFBQVEsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO2dCQUVqRCw2Q0FBNkM7Z0JBQzdDLElBQUksZUFBZSxHQUFHLElBQUksZ0JBQWdCLEVBQUUsQ0FBQztnQkFDN0MsZUFBZSxDQUFDLEVBQUUsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQy9CLGVBQWUsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO2dCQUNoQyxlQUFlLENBQUMsS0FBSyxHQUFHLE9BQU8sQ0FBQztnQkFDaEMsZUFBZSxDQUFDLEdBQUcsR0FBRyxZQUFZLENBQUM7Z0JBQ25DLGVBQWUsQ0FBQyxLQUFLLEdBQUcsR0FBRyxDQUFDO2dCQUM1QixlQUFlLENBQUMsU0FBUyxHQUFHLE9BQU8sQ0FBQztnQkFDcEMsZUFBZSxDQUFDLEtBQUssR0FBRyxZQUFZLENBQUM7Z0JBRXJDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7Z0JBRTVDLElBQUksZ0JBQWdCLEdBQUcsUUFBUSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEdBQUMsT0FBTyxHQUFDLE1BQU0sR0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztnQkFDaEYsSUFBSSxnQkFBZ0IsSUFBSSxJQUFJLEVBQUM7b0JBQUUsZ0JBQWdCLEdBQUcsUUFBUSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEdBQUMsR0FBRyxHQUFDLE1BQU0sR0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztpQkFBRTtnQkFFekcsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxxQkFBcUIsSUFBSSxJQUFJLEVBQUM7b0JBQ3JELGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLENBQUM7aUJBQ2pEO3FCQUFNO29CQUNMLGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDO2lCQUM5RDthQUVGO2lCQUFNO2dCQUNMLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO2dCQUNwRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBQyxDQUFDLENBQUMsQ0FBQztnQkFFdEMsSUFBSSxnQkFBZ0IsR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDLE1BQU0sR0FBQyxPQUFPLEdBQUMsTUFBTSxHQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO2dCQUNoRixJQUFJLGdCQUFnQixJQUFJLElBQUksRUFBQztvQkFBRSxnQkFBZ0IsR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDLE1BQU0sR0FBQyxHQUFHLEdBQUMsTUFBTSxHQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO2lCQUFFO2dCQUV6RyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLHFCQUFxQixJQUFJLElBQUksRUFBQztvQkFDdEQsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztpQkFDbkQ7cUJBQU07b0JBQ0wsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7aUJBQ2pFO2FBRUY7WUFHRCx1REFBdUQ7U0FFeEQ7SUFHSCxDQUFDO0lBRUQsY0FBYztRQUVaLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDckQsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLElBQUksSUFBSSxFQUFDO1lBQUUsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksS0FBSyxFQUFvQixDQUFDO1NBQUU7UUFFNUYsYUFBYSxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUVoRSxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFDO1lBQ25DLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxlQUFlLEVBQUUsRUFBRTtnQkFDaEQsSUFBSSxnQkFBZ0IsR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDLE1BQU0sR0FBQyxlQUFlLENBQUMsS0FBSyxHQUFDLE1BQU0sR0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ3ZHLElBQUksZ0JBQWdCLElBQUksSUFBSSxFQUFFO29CQUM1QixJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLHFCQUFxQixJQUFJLElBQUksRUFBQzt3QkFDdEQsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQztxQkFDaEQ7eUJBQU07d0JBQ0wsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLENBQUM7cUJBQzlEO2lCQUNGO3FCQUFNO29CQUNMLGdCQUFnQixHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUMsTUFBTSxHQUFDLGVBQWUsQ0FBQyxLQUFLLEdBQUMsTUFBTSxHQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUMsQ0FBQztvQkFDbkcsSUFBSSxnQkFBZ0IsSUFBSSxJQUFJLEVBQUU7d0JBQzVCLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMscUJBQXFCLElBQUksSUFBSSxFQUFDOzRCQUN0RCxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDO3lCQUNoRDs2QkFBTTs0QkFDTCxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQzt5QkFDOUQ7cUJBQ0Y7eUJBQU87d0JBQ04sZ0JBQWdCLEdBQUcsUUFBUSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEdBQUMsZUFBZSxDQUFDLEdBQUcsR0FBQyxNQUFNLEdBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQyxDQUFDO3dCQUNqRyxJQUFJLGdCQUFnQixJQUFJLElBQUksRUFBRTs0QkFDNUIsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxxQkFBcUIsSUFBSSxJQUFJLEVBQUM7Z0NBQ3RELGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLENBQUM7NkJBQ2hEO2lDQUFNO2dDQUNMLGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDOzZCQUM5RDt5QkFDRjtxQkFDRjtpQkFDRjtZQUNILENBQUMsQ0FBQyxDQUFDO1NBQ0o7SUFFSCxDQUFDO0lBRUQsS0FBSztRQUNILElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUMsZUFBZSxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDN0MsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7SUFDekIsQ0FBQztJQUVELE1BQU07UUFDSixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO0lBQ3pCLENBQUM7SUFFRCxhQUFhO1FBQ1gsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFDdEIsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNkLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN4QixDQUFDLEVBQUMsR0FBRyxDQUFDLENBQUM7SUFDVCxDQUFDO0lBRUQsVUFBVTtRQUNSLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFFRCxZQUFZLENBQUMsR0FBRztRQUNkLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMscUJBQXFCLElBQUksSUFBSSxFQUFDO1lBQ3RELElBQUksQ0FBQyxjQUFjLEdBQUcsR0FBRyxDQUFDO1lBQzFCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxDQUFDLENBQUM7U0FDM0I7SUFDSCxDQUFDO0lBRUQsZ0JBQWdCO1FBQ2QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDO1FBQ2pELElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO0lBQ3pCLENBQUM7OytHQXhkVSxpQkFBaUI7bUdBQWpCLGlCQUFpQix1VkNkOUIsczlKQTJGUzs0RkQ3RUksaUJBQWlCO2tCQUw3QixTQUFTOytCQUNFLFVBQVU7aUdBTVgsY0FBYztzQkFBdEIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUVJLEdBQUc7c0JBQVosTUFBTTtnQkFDRyxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLFFBQVE7c0JBQWpCLE1BQU07O0FBOGNULE1BQU0sT0FBTyxnQkFBZ0I7Q0FTNUI7QUFFRCw2QkFBNkI7QUFDN0IsTUFBTSxDQUFOLElBQVksbUJBSVg7QUFKRCxXQUFZLG1CQUFtQjtJQUM3Qiw2RUFBa0IsQ0FBQTtJQUNsQixxRUFBYyxDQUFBO0lBQ2QsaUVBQVksQ0FBQTtBQUNkLENBQUMsRUFKVyxtQkFBbUIsS0FBbkIsbUJBQW1CLFFBSTlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgRHluYW1pY0xvYWRlckRpcmVjdGl2ZURhdGEsIGV2ZW50T3V0IH0gZnJvbSAnLi4vLi4vLi4vZGlyZWN0aXZlcy9keW5hbWljLWxvYWRlci9keW5hbWljLWxvYWRlci5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBCYXNlRmllbGQsIERhdGFHZXR0ZXJUeXBlRW51bSwgRmllbGRUeXBlRW51bSB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9iYXNlRmllbGQubW9kZWwnO1xyXG5pbXBvcnQgeyBSZWNvcmQgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvcmVjb3JkLm1vZGVsJztcclxuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgRHluYW1pY01vZHVsZUNvbXBpbGVDb25maWcgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvZHluYW1pY01vZHVsZUNvbXBpbGVDb25maWcubW9kZWwnO1xyXG5pbXBvcnQgeyBHbG9iYWxTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvZ2xvYmFsLnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdkYmdldHRlcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2RiZ2V0dGVyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9kYmdldHRlci5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEYmdldHRlckNvbXBvbmVudCB7XHJcblxyXG4gIEBJbnB1dCgpIGNvbmZpZ3VyYXRpb25zOiBEeW5hbWljTW9kdWxlQ29tcGlsZUNvbmZpZyA9IG51bGw7XHJcbiAgQElucHV0KCkgZm9ybTogRm9ybTtcclxuICBASW5wdXQoKSBmaWVsZDogQmFzZUZpZWxkO1xyXG4gIEBJbnB1dCgpIHJlY29yZDogUmVjb3JkO1xyXG4gIEBJbnB1dCgpIGluQ29uZmlnOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgRGlyZWN0bHlPcGVuVGFibGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBRdWVyeUVkaXRvckNvbXBvbmVudDogRHluYW1pY0xvYWRlckRpcmVjdGl2ZURhdGEgPSBudWxsOyAvLyBMJ2ludGVybyBjb21wb25lbnRlIHF1ZXJ5IEVkaXRvclxyXG4gIEBJbnB1dCgpIGRhdGE6IGFueSA9IG51bGw7IC8vIExvIGZhY2NpYW1vIGZ1bnppb25hcmUgdGlwbyBFUVAtVEFCTEVcclxuXHJcbiAgQE91dHB1dCgpIG91dDogRXZlbnRFbWl0dGVyPGV2ZW50T3V0PiA9IG5ldyBFdmVudEVtaXR0ZXI8ZXZlbnRPdXQ+KCk7XHJcbiAgQE91dHB1dCgpIHNlbGVjdGVkVmFsdWU6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgQE91dHB1dCgpIGRvUmVsb2FkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpOyAgXHJcblxyXG4gIGtleXM6IEFycmF5PHN0cmluZz4gPSBudWxsO1xyXG4gIGxvYWRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHZhbHVlOiBhbnk7XHJcblxyXG4gIHNob3dUYWJsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBoYXZlUXVlc3Rpb25zOiBib29sZWFuID0gZmFsc2U7XHJcbiAgaGF2ZVJlbGF0aW9uczogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHJlbG9hZDogYm9vbGVhbiA9IHRydWU7XHJcbiAgbXVsdGlwbGVWYWx1ZXNUb0Nob29zZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBpbnRlcnZhbDogYW55O1xyXG5cclxuICByZWxhdGlvbnM6IEFycmF5PHtmaWVsZDogc3RyaW5nLCBsb2FkZWQ6IGJvb2xlYW4sIGFjdHVhbHZhbHVlOiBhbnl9PiA9IG5ldyBBcnJheTx7ZmllbGQ6IHN0cmluZywgbG9hZGVkOiBib29sZWFuLCBhY3R1YWx2YWx1ZTogYW55fT4oKTtcclxuICByZWxhdGlvbnNMb2FkZWQ6IGJvb2xlYW47XHJcbiAgYmFja3VwUXVlc3Rpb25GaWVsZHM6IEFycmF5PHN0cmluZz4gPSBudWxsO1xyXG5cclxuICBpc011bHRpc2VsZWN0OiBib29sZWFuID0gZmFsc2U7XHJcbiAgbXVsdGlzZWxlY3RQaGFzZTogbnVtYmVyID0gMTtcclxuICBzZWxlY3RlZENvbHVtbjogc3RyaW5nID0gXCJcIjtcclxuICBzZWxlY3RlZEVsZW1lbnRzOiBBcnJheTxMaXN0VmFsdWVFbGVtZW50PiA9IG5ldyBBcnJheTxMaXN0VmFsdWVFbGVtZW50PigpO1xyXG5cclxuICBmaWVsZFR5cGVFbnVtID0gRmllbGRUeXBlRW51bTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBodHRwQ2xpZW50OiBIdHRwQ2xpZW50KSB7fVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuXHJcbiAgICBHbG9iYWxTZXJ2aWNlLmRlYnVnTG9nKFwiLS0tIElOU0lERSBEQkdFVFRFUiAtLS1cIik7XHJcbiAgICBHbG9iYWxTZXJ2aWNlLmRlYnVnTG9nKG51bGwsIHRoaXMuZm9ybSk7XHJcbiAgICBHbG9iYWxTZXJ2aWNlLmRlYnVnTG9nKG51bGwsIHRoaXMucmVjb3JkKTtcclxuICAgIEdsb2JhbFNlcnZpY2UuZGVidWdMb2cobnVsbCwgdGhpcy5maWVsZCk7XHJcbiAgICBHbG9iYWxTZXJ2aWNlLmRlYnVnTG9nKG51bGwsIHRoaXMuUXVlcnlFZGl0b3JDb21wb25lbnQpO1xyXG4gICAgR2xvYmFsU2VydmljZS5kZWJ1Z0xvZyhcIi0tLSBJTlNJREUgREJHRVRURVIgLS0tXCIpO1xyXG5cclxuICAgICAgLy8gSW5pemlvIFJldHJvY29tcGF0aWJpbGl0w6BcclxuXHJcbiAgICAgIGlmICh0eXBlb2YgdGhpcy5maWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJIYXNSZXNldEJ1dHRvbiA9PT0gXCJ1bmRlZmluZWRcIil7XHJcbiAgICAgICAgdGhpcy5maWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJIYXNSZXNldEJ1dHRvbiA9IHRydWU7XHJcbiAgICAgIH0gICAgIFxyXG5cclxuICAgICAgLy8gRmluZSBSZXRyb2NvbXBhdGliaWxpdMOgICAgIFxyXG5cclxuICAgICAgLy8gSW5pemlvOiBUYWJlbGxhIG11bHRpc2VsZWN0P1xyXG5cclxuICAgICAgaWYgKHRoaXMuZmllbGQuRmllbGRUeXBlID09IEZpZWxkVHlwZUVudW1bJ0VsZW5jbyBnZW5lcmljbyddKXtcclxuICAgICAgICB0aGlzLmlzTXVsdGlzZWxlY3QgPSB0cnVlO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5maWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJDb2x1bW5Gb3JjZSAhPSBudWxsKXtcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRDb2x1bW4gPSB0aGlzLmZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlckNvbHVtbkZvcmNlLmtleTtcclxuICAgICAgICAgIHRoaXMubXVsdGlzZWxlY3RQaGFzZSA9IDI7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLnNlbGVjdGVkRWxlbWVudHMgPSB0aGlzLnJlY29yZFt0aGlzLmZpZWxkLk5hbWVdOyAgICBcclxuICAgICAgICBpZiAodGhpcy5zZWxlY3RlZEVsZW1lbnRzID09IG51bGwpeyB0aGlzLnNlbGVjdGVkRWxlbWVudHMgPSBuZXcgQXJyYXk8TGlzdFZhbHVlRWxlbWVudD4oKTsgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBGaW5lOiBUYWJlbGxhIG11bHRpc2VsZWN0P1xyXG5cclxuICAgIGlmICh0aGlzLlF1ZXJ5RWRpdG9yQ29tcG9uZW50ICE9IG51bGwpe1xyXG4gICAgICB0aGlzLlF1ZXJ5RWRpdG9yQ29tcG9uZW50LmlucHV0UGFyYW1zLmNvbmZpZy5tb2RlID0gUXVlcnlFZGl0b3JNb2RlRW51bS5SRVNVTFQ7XHJcbiAgICAgIHRoaXMuUXVlcnlFZGl0b3JDb21wb25lbnQuaW5wdXRQYXJhbXMuY29uZmlnLmZpZWxkID0gdGhpcy5maWVsZDtcclxuICAgICAgdGhpcy5RdWVyeUVkaXRvckNvbXBvbmVudC5pbnB1dFBhcmFtcy5jb25maWcucmVjb3JkID0gdGhpcy5yZWNvcmQ7XHJcbiAgICAgIHRoaXMuUXVlcnlFZGl0b3JDb21wb25lbnQuaW5wdXRQYXJhbXMuY29uZmlnLmluQ29uZmlnID0gdGhpcy5pbkNvbmZpZztcclxuXHJcbiAgICAgIGlmICh0aGlzLmZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlclZhbHVlLm9wZW5lZEZpZWxkcy5maW5kKHggPT4gdHlwZW9mIHguUXVlcnlQcm9wZXJ0eVZhbHVlICE9PSBcIm9iamVjdFwiICYmIHguUXVlcnlQcm9wZXJ0eVZhbHVlID09ICc/JykgIT0gbnVsbCl7XHJcbiAgICAgICAgXHJcbiAgICAgICAgLy8gSWwgY2FtcG8gaGEgYWxtZW5vIHVuIHZhbG9yZSBjb24gXCI/XCJcclxuICAgICAgICB0aGlzLmhhdmVRdWVzdGlvbnMgPSB0cnVlO1xyXG5cclxuICAgICAgICBHbG9iYWxTZXJ2aWNlLmRlYnVnTG9nKFwiQ0hFQ0tJTkcgQkFDS1VQUyBPUEVORUQgRklFTERTLi4uLlwiLCB0aGlzLmJhY2t1cFF1ZXN0aW9uRmllbGRzKTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuYmFja3VwUXVlc3Rpb25GaWVsZHMgPT0gbnVsbCl7XHJcbiAgICAgICAgICB0aGlzLmJhY2t1cFF1ZXN0aW9uRmllbGRzID0gbmV3IEFycmF5PHN0cmluZz4oKTtcclxuICAgICAgICAgIHRoaXMuZmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVyVmFsdWUub3BlbmVkRmllbGRzLmZvckVhY2goKHJxZikgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmJhY2t1cFF1ZXN0aW9uRmllbGRzLnB1c2gocnFmLlByb3BlcnR5TmFtZSk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcblxyXG5cclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHRoaXMuZmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVyVmFsdWUub3BlbmVkRmllbGRzLmZpbmQoeCA9PiB0eXBlb2YgeC5RdWVyeVByb3BlcnR5VmFsdWUgIT09IFwib2JqZWN0XCIgJiYgeC5RdWVyeVByb3BlcnR5VmFsdWUuaW5kZXhPZignIScpICE9IC0xKSAhPSBudWxsKXtcclxuXHJcbiAgICAgICAgLy8gSWwgY2FtcG8gaGEgYWxtZW5vIHVuIHZhbG9yZSBjb24gXCIhbm9tZXJlbGF6aW9uZVwiXHJcbiAgICAgICAgdGhpcy5oYXZlUmVsYXRpb25zID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgdGhpcy5maWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJWYWx1ZS5vcGVuZWRGaWVsZHMuZmlsdGVyKHggPT4geC5RdWVyeVByb3BlcnR5VmFsdWUuaW5kZXhPZignIScpICE9IC0xKS5mb3JFYWNoKChmaWVsZFdpdGhSZWxhdGlvbikgPT4ge1xyXG5cclxuICAgICAgICAgIHZhciBmaWVsZFJlbGF0ZWQgPSBmaWVsZFdpdGhSZWxhdGlvbi5RdWVyeVByb3BlcnR5VmFsdWUucmVwbGFjZShcIiFcIixcIlwiKTtcclxuXHJcbiAgICAgICAgICBpZiAodGhpcy5yZWNvcmRbZmllbGRSZWxhdGVkXSA9PSBudWxsKXtcclxuICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhcInRoaXMucmVjb3JkW2ZpZWxkUmVsYXRlZF0gRScgTlVMTFwiLCB0aGlzLmZpZWxkLk5hbWUsIGZpZWxkUmVsYXRlZCwgdGhpcy5yZWNvcmRbZmllbGRSZWxhdGVkXSwgdGhpcy5yZWNvcmQpO1xyXG4gICAgICAgICAgICB0aGlzLnJlbGF0aW9ucy5wdXNoKHtmaWVsZDogZmllbGRSZWxhdGVkLCBsb2FkZWQ6IGZhbHNlLCBhY3R1YWx2YWx1ZTogdGhpcy5yZWNvcmRbZmllbGRSZWxhdGVkXX0pO1xyXG4gICAgICAgICAgICB0aGlzLmNoZWNrUmVsYXRpb25zKCk7XHJcbiAgICAgICAgICAgIHRoaXMuaW50ZXJ2YWwgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhcInRoaXMucmVjb3JkW2ZpZWxkUmVsYXRlZF0gQ0hFQ0tcIiwgdGhpcy5maWVsZC5OYW1lLCBmaWVsZFJlbGF0ZWQsIHRoaXMucmVjb3JkW2ZpZWxkUmVsYXRlZF0sIHRoaXMucmVjb3JkKTtcclxuICAgICAgICAgICAgICAgIHZhciBjdXJyZW50UmVsYXRpb24gPSB0aGlzLnJlbGF0aW9ucy5maW5kKHggPT4geC5maWVsZCA9PSBmaWVsZFJlbGF0ZWQpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRSZWxhdGlvbiAhPSBudWxsKXtcclxuXHJcbiAgICAgICAgICAgICAgICAgIC8vIEdlc3Rpb25lIGRlaSBjYW1iaSBkaSB2YWxvcmUgZGVpIGNhbXBpIHJlbGF6aW9uYXRpXHJcbiAgICAgICAgICAgICAgICAgIC8vIElsIGNhbXBvIHJlbGF6aW9uYXRvIElOSVpJQUxNRU5URSBOT04gRScgTlVMTCwgZSBjYW1iaWEgdmFsb3JlIGluIHF1YWxjb3NhIGNoZSBOT04gRScgTlVMTFxyXG4gICAgICAgICAgICAgICAgICBpZiAoY3VycmVudFJlbGF0aW9uLmFjdHVhbHZhbHVlICE9IG51bGwgJiYgdGhpcy5yZWNvcmRbZmllbGRSZWxhdGVkXSAhPSBudWxsICYmIHRoaXMucmVjb3JkW2ZpZWxkUmVsYXRlZF0gIT0gY3VycmVudFJlbGF0aW9uLmFjdHVhbHZhbHVlKXtcclxuICAgICAgICAgICAgICAgICAgICAvL2NvbnNvbGUubG9nKFwidGhpcy5yZWNvcmRbZmllbGRSZWxhdGVkXSBIQSBDQU1CSUFUTyBWQUxPUkUhIVwiLCB0aGlzLmZpZWxkLk5hbWUsIGZpZWxkUmVsYXRlZCwgdGhpcy5yZWNvcmRbZmllbGRSZWxhdGVkXSwgdGhpcy5yZWNvcmQpO1xyXG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRSZWxhdGlvbi5hY3R1YWx2YWx1ZSA9IHRoaXMucmVjb3JkW2ZpZWxkUmVsYXRlZF07XHJcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudFJlbGF0aW9uLmxvYWRlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgZmllbGRXaXRoUmVsYXRpb24uUXVlcnlQcm9wZXJ0eVZhbHVlID0gdGhpcy5yZWNvcmRbZmllbGRSZWxhdGVkXTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlY29yZFt0aGlzLmZpZWxkLk5hbWVdID0gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbG9hZENvbXBvbmVudCgpO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAvLyBJbCBjYW1wbyByZWxhemlvbmF0byBJTklaSUFMTUVOVEUgTk9OIEUnIE5VTEwsIGUgY2FtYmlhIHZhbG9yZSBJTiBOVUxMXHJcbiAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGN1cnJlbnRSZWxhdGlvbi5hY3R1YWx2YWx1ZSAhPSBudWxsICYmIHRoaXMucmVjb3JkW2ZpZWxkUmVsYXRlZF0gPT0gbnVsbCl7XHJcbiAgICAgICAgICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhcInRoaXMucmVjb3JkW2ZpZWxkUmVsYXRlZF0gRScgVE9STkFUTyBBRCBFU1NFUkUgTlVMTCEhIDooXCIsIHRoaXMuZmllbGQuTmFtZSwgZmllbGRSZWxhdGVkLCB0aGlzLnJlY29yZFtmaWVsZFJlbGF0ZWRdLCB0aGlzLnJlY29yZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudFJlbGF0aW9uLmFjdHVhbHZhbHVlID0gdGhpcy5yZWNvcmRbZmllbGRSZWxhdGVkXTtcclxuICAgICAgICAgICAgICAgICAgICBjdXJyZW50UmVsYXRpb24ubG9hZGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICBmaWVsZFdpdGhSZWxhdGlvbi5RdWVyeVByb3BlcnR5VmFsdWUgPSBcIiFcIitmaWVsZFJlbGF0ZWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWNvcmRbdGhpcy5maWVsZC5OYW1lXSA9IG51bGw7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIC8vIFJlY3VwZXJvIEJhY2t1cFxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYmFja3VwUXVlc3Rpb25GaWVsZHMuZm9yRWFjaCgoYm9mKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlclZhbHVlLm9wZW5lZEZpZWxkcy5maW5kKHggPT4geC5Qcm9wZXJ0eU5hbWUgPT0gYm9mKS5RdWVyeVByb3BlcnR5VmFsdWUgPSBcIj9cIjtcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWxvYWRDb21wb25lbnQoKTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgLy8gSWwgY2FtcG8gcmVsYXppb25hdG8gSU5JWklBTE1FTlRFIEUnIE5VTEwsIGUgY2FtYmlhIHZhbG9yZVxyXG4gICAgICAgICAgICAgICAgICBlbHNlIGlmIChjdXJyZW50UmVsYXRpb24uYWN0dWFsdmFsdWUgPT0gbnVsbCAmJiB0aGlzLnJlY29yZFtmaWVsZFJlbGF0ZWRdICE9IG51bGwpe1xyXG4gICAgICAgICAgICAgICAgICAgIC8vY29uc29sZS5sb2coXCJ0aGlzLnJlY29yZFtmaWVsZFJlbGF0ZWRdIE5PTiBFJyBQSVUnIE5VTEwhISA6KVwiLCB0aGlzLmZpZWxkLk5hbWUsIGZpZWxkUmVsYXRlZCwgdGhpcy5yZWNvcmRbZmllbGRSZWxhdGVkXSwgdGhpcy5yZWNvcmQpO1xyXG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRSZWxhdGlvbi5hY3R1YWx2YWx1ZSA9IHRoaXMucmVjb3JkW2ZpZWxkUmVsYXRlZF07XHJcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudFJlbGF0aW9uLmxvYWRlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgZmllbGRXaXRoUmVsYXRpb24uUXVlcnlQcm9wZXJ0eVZhbHVlID0gdGhpcy5yZWNvcmRbZmllbGRSZWxhdGVkXTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbG9hZENvbXBvbmVudCgpO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICB0aGlzLmNoZWNrUmVsYXRpb25zKCk7XHJcbiAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9LDIwMCk7XHJcblxyXG5cclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIC8vY29uc29sZS5sb2coXCJ0aGlzLnJlY29yZFtmaWVsZFJlbGF0ZWRdIE5PTiBFJyBOVUxMISEgOilcIiwgdGhpcy5maWVsZC5OYW1lLCBmaWVsZFJlbGF0ZWQsIHRoaXMucmVjb3JkW2ZpZWxkUmVsYXRlZF0sIHRoaXMucmVjb3JkKTtcclxuICAgICAgICAgICAgZmllbGRXaXRoUmVsYXRpb24uUXVlcnlQcm9wZXJ0eVZhbHVlID0gdGhpcy5yZWNvcmRbZmllbGRSZWxhdGVkXSAhPSBudWxsID8gdGhpcy5yZWNvcmRbZmllbGRSZWxhdGVkXSA6ICcnO1xyXG4gICAgICAgICAgICB0aGlzLnJlbGF0aW9ucy5wdXNoKHtmaWVsZDogZmllbGRSZWxhdGVkLCBsb2FkZWQ6IHRydWUsIGFjdHVhbHZhbHVlOiB0aGlzLnJlY29yZFtmaWVsZFJlbGF0ZWRdfSk7XHJcbiAgICAgICAgICAgIHRoaXMuY2hlY2tSZWxhdGlvbnMoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIFxyXG4gICAgICAgIH0pOyAgICAgICAgXHJcblxyXG5cclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKCF0aGlzLmhhdmVSZWxhdGlvbnMpe1xyXG4gICAgICAgIHRoaXMucmVsYXRpb25zTG9hZGVkID0gdHJ1ZTtcclxuICAgICAgfSAgICAgXHJcblxyXG4gICAgfSBlbHNlIHtcclxuXHJcbiAgICAgIGlmICh0aGlzLmRhdGEgPT0gbnVsbCl7XHJcblxyXG4gICAgICB0aGlzLmh0dHBDbGllbnQuZ2V0KCcuL2Fzc2V0cy9tb2NrdXBzL21vY2tlZEZyb21RdWVyeUVkaXRvcl9SRVNVTFRfTUFOWV9OVU1FUklDLnR4dCcsIHtyZXNwb25zZVR5cGU6ICd0ZXh0J30pXHJcbiAgICAgIC5zdWJzY3JpYmUobW9ja2VkRnJvbVF1ZXJ5RWRpdG9yID0+IHtcclxuICAgICAgICB0aGlzLmRhdGEgPSBKU09OLnBhcnNlKG1vY2tlZEZyb21RdWVyeUVkaXRvcik7XHJcbiAgICAgICAgdGhpcy5kYXRhID0gSlNPTi5wYXJzZSh0aGlzLmRhdGEucmVzdWx0KTtcclxuICAgICAgICB0aGlzLnByb2Nlc3NSZXN1bHQodGhpcy5kYXRhLFtdKTtcclxuICAgICAgIH0pOyAgICAgIFxyXG5cclxuICAgICAgfVxyXG5cclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICByZWxvYWRDb21wb25lbnQoKXtcclxuICAgIC8vY29uc29sZS5sb2coXCJSRUxPQUQgQ09NUE9ORU5UIENBTExFRFwiLCB0aGlzLnJlY29yZCwgdGhpcy5RdWVyeUVkaXRvckNvbXBvbmVudC5pbnB1dFBhcmFtcy5jb25maWcucmVjb3JkKTtcclxuXHJcbiAgICB0aGlzLnJlbG9hZCA9IGZhbHNlO1xyXG4gICAgdGhpcy5RdWVyeUVkaXRvckNvbXBvbmVudC5pbnB1dFBhcmFtcy5jb25maWcucmVjb3JkID0gdGhpcy5yZWNvcmQ7XHJcbiAgICB0aGlzLlF1ZXJ5RWRpdG9yQ29tcG9uZW50LmlucHV0UGFyYW1zLmNvbmZpZy5maWVsZCA9IHRoaXMuZmllbGQ7XHJcblxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7IHRoaXMucmVsb2FkID0gdHJ1ZTsgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhcIlJFTE9BREVEIFFVRVJZRURJVE9SXCIpOyBcclxuICAgICAgICAgICAgICAgICAgICAgIH0sIDMwMDApOyBcclxuICB9XHJcblxyXG4gIGNoZWNrUmVsYXRpb25zKCl7XHJcbiAgICB0aGlzLnJlbGF0aW9uc0xvYWRlZCA9IHRoaXMucmVsYXRpb25zLmZpbmQoeCA9PiB4LmxvYWRlZCkgIT0gbnVsbDtcclxuICB9XHJcblxyXG4gIG9uRXh0ZXJuYWxTUUxSZXN1bHRPdXQoZXY6IGV2ZW50T3V0KXtcclxuXHJcbiAgICAvL2NvbnNvbGUubG9nKFwiUmlzdWx0YXRvIGRlbGwnZWxhYm9yYXppb25lIGRlbCBxdWVyeSBlZGl0b3I6IG9uRXh0ZXJuYWxTUUxSZXN1bHRPdXRcIiwgZXYpO1xyXG5cclxuICAgIGlmIChldi5CZWhhdmlvdXJzLmluZGV4T2YoXCJzZW5kLW91dFwiKSAhPSAtMSl7IHRoaXMub3V0LmVtaXQoZXYpOyB9XHJcblxyXG4gICAgdGhpcy5kYXRhID0gSlNPTi5wYXJzZShldi5QYXJhbXMucmVzdWx0KTtcclxuICAgIHRoaXMucHJvY2Vzc1Jlc3VsdCh0aGlzLmRhdGEsZXYuQmVoYXZpb3Vycyk7XHJcblxyXG4gIH1cclxuXHJcbiAgcHJvY2Vzc1Jlc3VsdChkYXRhOiBhbnksIGJlaGF2aW91cnM6IEFycmF5PHN0cmluZz4gPSBbXSl7XHJcbiAgICBcclxuICAgIC8vZGF0YSDDqCBsJ2FycmF5IGRlaSByZWNvcmQgdG9ybmF0aSBkYWwgZGJcclxuXHJcbiAgICAvLyBzZSBobyBkZWxsZSByaXNwb3N0ZVxyXG4gICAgaWYgKGRhdGEubGVuZ3RoID4gMCl7XHJcblxyXG4gICAgICAvLyBjb250cm9sbG8gcXVhbnRpIGF0dHJpYnV0aSBoYSBsYSByaXNwb3N0YVxyXG4gICAgICB0aGlzLmtleXMgPSBPYmplY3Qua2V5cyhkYXRhWzBdKTtcclxuXHJcbiAgICAgIC8vIHNlIGhvIHNvbGFtZW50ZSBsJ0lEIGUgaWwgY2FtcG8gc2NlbHRvIGVkIGhvIHVuYSBzb2xhIHJpc3Bvc3RhIHByZW5kbyBpbCB2YWxvcmUgZGlyZXR0YW1lbnRlXHJcbiAgICAgIGlmICh0aGlzLmtleXMubGVuZ3RoID09IDIgJiYgZGF0YS5sZW5ndGggPT0gMSl7XHJcbiAgICAgICAgLy8gU2UgaG8gdW4gc29sbyBvY2NoaWV0dG8gc2VsZXppb25hdG8gZSBsYSBxdWVyeSByZXN0aXR1aXNjZSB1biBzb2xvIHZhbG9yZSwgbG8gYnV0dG8gZnVvcmkgYXV0b21hdGljYW1lbnRlXHJcbiAgICAgICAgR2xvYmFsU2VydmljZS5kZWJ1Z0xvZyhcIm5lbGxhIHJpc3Bvc3RhIGhvIHNvbGFtZW50ZSBsJ0lEIGUgaWwgY2FtcG8gc2NlbHRvIGVkIGhvIHVuYSBzb2xhIHJpc3Bvc3RhXCIpO1xyXG4gICAgICAgIHRoaXMuc2hvd1RhYmxlID0gZmFsc2U7XHJcblxyXG4gICAgICAgIGlmICghdGhpcy5pc011bHRpc2VsZWN0KXtcclxuICAgICAgICAgIEdsb2JhbFNlcnZpY2UuZGVidWdMb2coXCJub24gbXVsdGlzZWxlY3RcIik7XHJcbiAgICAgICAgICAvLyBOb24gw6ggbXVsdGlzZWxlY3RcclxuICAgICAgICAgIHRoaXMucmVjb3JkW3RoaXMuZmllbGQuTmFtZV0gPSBkYXRhWzBdW3RoaXMua2V5c1sxXV07XHJcblxyXG4gICAgICAgICAgLy8gQ29tdW5xdWUgc2lhIGNpIHBvcnRpYW1vIGRpZXRybyBsJ0lEIGRlbGxhIHNlbGV6aW9uZSBjb24gdW4gY2FtcG8gY3VzdG9tLCBwdcOyIHNlbXByZSBzZXJ2aXJlXHJcbiAgICAgICAgICBpZihkYXRhWzBdLmhhc093blByb3BlcnR5KFwiSURcIikpe1xyXG4gICAgICAgICAgICBpZiAodGhpcy5jb25maWd1cmF0aW9ucy5hZGRpdGlvbmFsUGFyYW1zID09IG51bGwpeyB0aGlzLmNvbmZpZ3VyYXRpb25zLmFkZGl0aW9uYWxQYXJhbXMgPSB7fTsgfVxyXG4gICAgICAgICAgICB0aGlzLmNvbmZpZ3VyYXRpb25zLmFkZGl0aW9uYWxQYXJhbXNbdGhpcy5maWVsZC5OYW1lK1wiX19fX0lEXCJdID0gZGF0YVswXVsnSUQnXTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkVmFsdWUuZW1pdChbZGF0YVswXVt0aGlzLmtleXNbMV1dLGRhdGFbMF1bJ0lEJ11dKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgR2xvYmFsU2VydmljZS5kZWJ1Z0xvZyhcIm11bHRpc2VsZWN0XCIpO1xyXG4gICAgICAgICAgLy8gRScgdW4gZWxlbmNvIGdlbmVyaWNvIGRiZ2V0dGVyIG11bHRpc2VsZWN0XHJcbiAgICAgICAgICAvLyBkZXZvIGZhcmdsaSBsYSBzcnV0dHVyYSBkZWwgZGF0b1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZEVsZW1lbnRzID0gbmV3IEFycmF5PExpc3RWYWx1ZUVsZW1lbnQ+KCk7XHJcbiAgICAgICAgICB2YXIgc2VsZWN0ZWRFbGVtZW50ID0gbmV3IExpc3RWYWx1ZUVsZW1lbnQoKTtcclxuICAgICAgICAgIHNlbGVjdGVkRWxlbWVudC5JRCA9IGRhdGFbMF1bJ0lEJ107XHJcbiAgICAgICAgICBzZWxlY3RlZEVsZW1lbnQuRmllbGQgPSB0aGlzLmtleXNbMV07XHJcbiAgICAgICAgICBzZWxlY3RlZEVsZW1lbnQuS2V5ID0gZGF0YVswXVt0aGlzLmtleXNbMV1dO1xyXG4gICAgICAgICAgc2VsZWN0ZWRFbGVtZW50LlZhbHVlID0gZGF0YVswXVt0aGlzLmtleXNbMV1dO1xyXG5cclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRFbGVtZW50cy5wdXNoKHNlbGVjdGVkRWxlbWVudCk7XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkVmFsdWUuZW1pdChbdGhpcy5zZWxlY3RlZEVsZW1lbnRzXSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgfSBlbHNlIGlmIChkYXRhLmxlbmd0aCA9PSAxICYmIHRoaXMuZmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVyQ29sdW1uRm9yY2UgIT0gbnVsbCl7XHJcbiAgICAgICAgR2xvYmFsU2VydmljZS5kZWJ1Z0xvZyhcImhvIHVuYSBzb2xhIHJpc3Bvc3RhIGVkIGhvIHVuYSBjb2xvbm5hIGRhIGN1aSDDqCBmb3J6YXRvIGlsIHJlY3VwZXJvIGRlbCB2YWxvcmVcIik7XHJcblxyXG4gICAgICAgIHRoaXMuc2hvd1RhYmxlID0gZmFsc2U7XHJcblxyXG5cclxuICAgICAgICBpZiAoIXRoaXMuaXNNdWx0aXNlbGVjdCl7XHJcbiAgICAgICAgICBHbG9iYWxTZXJ2aWNlLmRlYnVnTG9nKFwibm9uIG11bHRpc2VsZWN0XCIpO1xyXG4gICAgICAgICAgLy8gTm9uIMOoIG11bHRpc2VsZWN0XHJcbiAgICAgICAgICB0aGlzLnJlY29yZFt0aGlzLmZpZWxkLk5hbWVdID0gZGF0YVswXVt0aGlzLmZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlckNvbHVtbkZvcmNlLmtleV07XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkVmFsdWUuZW1pdChbZGF0YVswXVt0aGlzLmtleXNbMV0sZGF0YVswXVsnSUQnXV1dKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgR2xvYmFsU2VydmljZS5kZWJ1Z0xvZyhcIm11bHRpc2VsZWN0XCIpO1xyXG4gICAgICAgICAgLy8gRScgdW4gZWxlbmNvIGdlbmVyaWNvIGRiZ2V0dGVyIG11bHRpc2VsZWN0XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkRWxlbWVudHMgPSBuZXcgQXJyYXk8TGlzdFZhbHVlRWxlbWVudD4oKTtcclxuICAgICAgICAgIHZhciBzZWxlY3RlZEVsZW1lbnQgPSBuZXcgTGlzdFZhbHVlRWxlbWVudCgpO1xyXG4gICAgICAgICAgc2VsZWN0ZWRFbGVtZW50LklEID0gZGF0YVswXVsnSUQnXTtcclxuICAgICAgICAgIHNlbGVjdGVkRWxlbWVudC5GaWVsZCA9IHRoaXMuZmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVyQ29sdW1uRm9yY2Uua2V5O1xyXG4gICAgICAgICAgc2VsZWN0ZWRFbGVtZW50LktleSA9IGRhdGFbMF1bdGhpcy5maWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJDb2x1bW5Gb3JjZS5rZXldO1xyXG4gICAgICAgICAgc2VsZWN0ZWRFbGVtZW50LlZhbHVlID0gZGF0YVswXVt0aGlzLmZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlckNvbHVtbkZvcmNlLmtleV07XHJcblxyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZEVsZW1lbnRzLnB1c2goc2VsZWN0ZWRFbGVtZW50KTtcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZS5lbWl0KFt0aGlzLnNlbGVjdGVkRWxlbWVudHNdKTsgICAgICAgICAgXHJcbiAgICAgICAgfVxyXG5cclxuXHJcbiAgICAgICAgXHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgR2xvYmFsU2VydmljZS5kZWJ1Z0xvZyhcImhvIHBpw7kgZGkgdW5hIHJpc3Bvc3RhXCIpO1xyXG5cclxuICAgICAgICB0aGlzLm11bHRpcGxlVmFsdWVzVG9DaG9vc2UgPSB0cnVlO1xyXG4gICAgICAgIGlmIChiZWhhdmlvdXJzLmluZGV4T2YoXCJtYW5hZ2UtcXVlc3Rpb24taW4tZGJnZXR0ZXJcIikgIT0gLTEpe1xyXG4gICAgICAgICAgdGhpcy5zaG93VGFibGUgPSB0cnVlO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcblxyXG4gICAgICAgICAgaWYgKCF0aGlzLkRpcmVjdGx5T3BlblRhYmxlKXtcclxuICAgICAgICAgICAgdGhpcy5zaG93VGFibGUgPSBmYWxzZTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2hvd1RhYmxlID0gdHJ1ZTsgICAgICAgICAgXHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIFxyXG4gICAgfVxyXG4gICAgXHJcbiAgfVxyXG5cclxuICBzZWxlY3RWYWx1ZShyb3csIGtleSl7XHJcbiAgICB2YXIga2V5dXNlZDtcclxuICAgIHZhciB2YWx1ZSA9IHJvd1trZXldO1xyXG5cclxuICAgIHZhciB2YWx1ZVRvQmVTZXQgPSBcIlwiO1xyXG5cclxuICAgIGlmKHRoaXMuZmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVyQ29sdW1uRm9yY2UgPT0gbnVsbCl7XHJcbiAgICAgIHZhbHVlVG9CZVNldCA9IHZhbHVlO1xyXG4gICAgICBrZXl1c2VkID0ga2V5O1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHJvdy5oYXNPd25Qcm9wZXJ0eSh0aGlzLmZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlckNvbHVtbkZvcmNlLmtleSkpe1xyXG4gICAgICAgIHZhbHVlVG9CZVNldCA9IHJvd1t0aGlzLmZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlckNvbHVtbkZvcmNlLmtleV07XHJcbiAgICAgICAga2V5dXNlZCA9IHRoaXMuZmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVyQ29sdW1uRm9yY2Uua2V5O1xyXG4gICAgICB9IGVsc2UgaWYgKHJvdy5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XHJcbiAgICAgICAgdmFsdWVUb0JlU2V0ID0gcm93W2tleV07XHJcbiAgICAgICAga2V5dXNlZCA9IGtleTsgICAgICAgIFxyXG4gICAgICB9XHJcblxyXG5cclxuICAgIH1cclxuXHJcbiAgICBpZiAodmFsdWVUb0JlU2V0ID09IG51bGwpeyB2YWx1ZVRvQmVTZXQgPSBcIlwiOyB9XHJcblxyXG5cclxuICAgIC8vIENvbXVucXVlIHNpYSBjaSBwb3J0aWFtbyBkaWV0cm8gbCdJRCBkZWxsYSBzZWxlemlvbmUgY29uIHVuIGNhbXBvIGN1c3RvbSwgcHXDsiBzZW1wcmUgc2VydmlyZVxyXG4gICAgaWYocm93Lmhhc093blByb3BlcnR5KFwiSURcIikpe1xyXG4gICAgICBpZiAodGhpcy5jb25maWd1cmF0aW9ucy5hZGRpdGlvbmFsUGFyYW1zID09IG51bGwpeyB0aGlzLmNvbmZpZ3VyYXRpb25zLmFkZGl0aW9uYWxQYXJhbXMgPSB7fTsgfVxyXG4gICAgICB0aGlzLmNvbmZpZ3VyYXRpb25zLmFkZGl0aW9uYWxQYXJhbXNbdGhpcy5maWVsZC5OYW1lK1wiX19fX0lEXCJdID0gcm93WydJRCddO1xyXG4gICAgfVxyXG4gICAgXHJcblxyXG4gICAgLy9FcXBEeW5hbWljTW9kdWxlRGlhbG9nU2VydmljZS5TdWNjZXNzKFwiVW4gc29sbyByaXN1bHRhdG8gdHJvdmF0bywgw6ggc3RhdG8gaW5zZXJpdG8gaW4gYXV0b21hdGljb1wiKTtcclxuXHJcbiAgICBpZiAoIXRoaXMuaXNNdWx0aXNlbGVjdCl7XHJcbiAgICAgIEdsb2JhbFNlcnZpY2UuZGVidWdMb2coXCJub24gbXVsdGlzZWxlY3RcIik7XHJcbiAgICAgIC8vIE5vbiDDqCBtdWx0aXNlbGVjdFxyXG4gICAgICB0aGlzLnJlY29yZFt0aGlzLmZpZWxkLk5hbWVdID0gdmFsdWVUb0JlU2V0O1xyXG4gICAgICB0aGlzLnNlbGVjdGVkVmFsdWUuZW1pdChbdmFsdWVUb0JlU2V0LHJvd1snSUQnXV0pOyAgICBcclxuICAgICAgdGhpcy5zaG93VGFibGUgPSBmYWxzZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIEdsb2JhbFNlcnZpY2UuZGVidWdMb2coXCJobyBtdWx0aXNlbGVjdFwiKTtcclxuXHJcbiAgICAgIGlmICh0aGlzLnNlbGVjdGVkRWxlbWVudHMgPT0gbnVsbCl7IHRoaXMuc2VsZWN0ZWRFbGVtZW50cyA9IG5ldyBBcnJheTxMaXN0VmFsdWVFbGVtZW50PigpOyB9XHJcblxyXG4gICAgICBpZiAodGhpcy5zZWxlY3RlZEVsZW1lbnRzLmZpbmQoeCA9PiB4LklEID09IHJvd1snSUQnXSkgPT0gbnVsbCl7XHJcbiAgICAgICAgR2xvYmFsU2VydmljZS5kZWJ1Z0xvZyhcImhvIHBpw7kgZGkgdW5hIHJpc3Bvc3RhXCIpO1xyXG5cclxuICAgICAgICAvLyBFJyB1biBlbGVuY28gZ2VuZXJpY28gZGJnZXR0ZXIgbXVsdGlzZWxlY3RcclxuICAgICAgICB2YXIgc2VsZWN0ZWRFbGVtZW50ID0gbmV3IExpc3RWYWx1ZUVsZW1lbnQoKTtcclxuICAgICAgICBzZWxlY3RlZEVsZW1lbnQuSUQgPSByb3dbJ0lEJ107XHJcbiAgICAgICAgc2VsZWN0ZWRFbGVtZW50LlNlbGVjdGVkID0gdHJ1ZTtcclxuICAgICAgICBzZWxlY3RlZEVsZW1lbnQuRmllbGQgPSBrZXl1c2VkO1xyXG4gICAgICAgIHNlbGVjdGVkRWxlbWVudC5LZXkgPSB2YWx1ZVRvQmVTZXQ7XHJcbiAgICAgICAgc2VsZWN0ZWRFbGVtZW50LktleVNWID0ga2V5O1xyXG4gICAgICAgIHNlbGVjdGVkRWxlbWVudC5LZXlVc2VkU1YgPSBrZXl1c2VkO1xyXG4gICAgICAgIHNlbGVjdGVkRWxlbWVudC5WYWx1ZSA9IHZhbHVlVG9CZVNldDtcclxuXHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZEVsZW1lbnRzLnB1c2goc2VsZWN0ZWRFbGVtZW50KTtcclxuXHJcbiAgICAgICAgdmFyIGNvcnJlc3BvbmRpbmdDb2wgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImNvbC1cIitrZXl1c2VkK1wiLWlkLVwiK3Jvd1snSUQnXSk7XHJcbiAgICAgICAgaWYgKGNvcnJlc3BvbmRpbmdDb2wgPT0gbnVsbCl7IGNvcnJlc3BvbmRpbmdDb2wgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImNvbC1cIitrZXkrXCItaWQtXCIrcm93WydJRCddKTsgfVxyXG4gICAgICAgIFxyXG4gICAgICAgIGlmICh0aGlzLmZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlckNvbHVtbkZvcmNlID09IG51bGwpe1xyXG4gICAgICAgICAgIGNvcnJlc3BvbmRpbmdDb2wuY2xhc3NMaXN0LmFkZChcInJvdy1zZWxlY3RlZFwiKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgY29ycmVzcG9uZGluZ0NvbC5wYXJlbnRFbGVtZW50LmNsYXNzTGlzdC5hZGQoXCJyb3ctc2VsZWN0ZWRcIik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB2YXIgaW5kZXggPSB0aGlzLnNlbGVjdGVkRWxlbWVudHMuZmluZEluZGV4KHggPT4geC5JRCA9PSByb3dbJ0lEJ10pO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRFbGVtZW50cy5zcGxpY2UoaW5kZXgsMSk7XHJcblxyXG4gICAgICAgIHZhciBjb3JyZXNwb25kaW5nQ29sID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJjb2wtXCIra2V5dXNlZCtcIi1pZC1cIityb3dbJ0lEJ10pO1xyXG4gICAgICAgIGlmIChjb3JyZXNwb25kaW5nQ29sID09IG51bGwpeyBjb3JyZXNwb25kaW5nQ29sID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJjb2wtXCIra2V5K1wiLWlkLVwiK3Jvd1snSUQnXSk7IH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMuZmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVyQ29sdW1uRm9yY2UgPT0gbnVsbCl7XHJcbiAgICAgICAgICBjb3JyZXNwb25kaW5nQ29sLmNsYXNzTGlzdC5yZW1vdmUoXCJyb3ctc2VsZWN0ZWRcIik7ICAgICAgICBcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgY29ycmVzcG9uZGluZ0NvbC5wYXJlbnRFbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoXCJyb3ctc2VsZWN0ZWRcIik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgfVxyXG5cclxuXHJcbiAgICAgIC8vdGhpcy5zZWxlY3RlZFZhbHVlLmVtaXQoW3RoaXMuc2VsZWN0ZWRFbGVtZW50c10pOyAgICBcclxuICAgICAgICAgICAgXHJcbiAgICB9XHJcblxyXG5cclxuICB9XHJcblxyXG4gIHJlbmRlclNlbGVjdGVkKCl7XHJcblxyXG4gICAgdGhpcy5zZWxlY3RlZEVsZW1lbnRzID0gdGhpcy5yZWNvcmRbdGhpcy5maWVsZC5OYW1lXTtcclxuICAgIGlmICh0aGlzLnNlbGVjdGVkRWxlbWVudHMgPT0gbnVsbCl7IHRoaXMuc2VsZWN0ZWRFbGVtZW50cyA9IG5ldyBBcnJheTxMaXN0VmFsdWVFbGVtZW50PigpOyB9XHJcblxyXG4gICAgR2xvYmFsU2VydmljZS5kZWJ1Z0xvZyhcInJlbmRlclNlbGVjdGVkXCIsIHRoaXMuc2VsZWN0ZWRFbGVtZW50cyk7XHJcblxyXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRFbGVtZW50cy5sZW5ndGggPiAwKXtcclxuICAgICAgdGhpcy5zZWxlY3RlZEVsZW1lbnRzLmZvckVhY2goKHNlbGVjdGVkRWxlbWVudCkgPT4ge1xyXG4gICAgICAgIHZhciBjb3JyZXNwb25kaW5nQ29sID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJjb2wtXCIrc2VsZWN0ZWRFbGVtZW50LkZpZWxkK1wiLWlkLVwiK3NlbGVjdGVkRWxlbWVudC5JRCk7XHJcbiAgICAgICAgaWYgKGNvcnJlc3BvbmRpbmdDb2wgIT0gbnVsbCkge1xyXG4gICAgICAgICAgaWYgKHRoaXMuZmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVyQ29sdW1uRm9yY2UgPT0gbnVsbCl7XHJcbiAgICAgICAgICAgIGNvcnJlc3BvbmRpbmdDb2wuY2xhc3NMaXN0LmFkZChcInJvdy1zZWxlY3RlZFwiKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGNvcnJlc3BvbmRpbmdDb2wucGFyZW50RWxlbWVudC5jbGFzc0xpc3QuYWRkKFwicm93LXNlbGVjdGVkXCIpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBjb3JyZXNwb25kaW5nQ29sID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJjb2wtXCIrc2VsZWN0ZWRFbGVtZW50LktleVNWK1wiLWlkLVwiK3NlbGVjdGVkRWxlbWVudC5JRCk7XHJcbiAgICAgICAgICBpZiAoY29ycmVzcG9uZGluZ0NvbCAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlckNvbHVtbkZvcmNlID09IG51bGwpe1xyXG4gICAgICAgICAgICAgIGNvcnJlc3BvbmRpbmdDb2wuY2xhc3NMaXN0LmFkZChcInJvdy1zZWxlY3RlZFwiKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBjb3JyZXNwb25kaW5nQ29sLnBhcmVudEVsZW1lbnQuY2xhc3NMaXN0LmFkZChcInJvdy1zZWxlY3RlZFwiKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSBlbHNlICB7XHJcbiAgICAgICAgICAgIGNvcnJlc3BvbmRpbmdDb2wgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImNvbC1cIitzZWxlY3RlZEVsZW1lbnQuS2V5K1wiLWlkLVwiK3NlbGVjdGVkRWxlbWVudC5JRCk7XHJcbiAgICAgICAgICAgIGlmIChjb3JyZXNwb25kaW5nQ29sICE9IG51bGwpIHtcclxuICAgICAgICAgICAgICBpZiAodGhpcy5maWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJDb2x1bW5Gb3JjZSA9PSBudWxsKXtcclxuICAgICAgICAgICAgICAgIGNvcnJlc3BvbmRpbmdDb2wuY2xhc3NMaXN0LmFkZChcInJvdy1zZWxlY3RlZFwiKTtcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgY29ycmVzcG9uZGluZ0NvbC5wYXJlbnRFbGVtZW50LmNsYXNzTGlzdC5hZGQoXCJyb3ctc2VsZWN0ZWRcIik7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICBjbG9zZSgpe1xyXG4gICAgdGhpcy5zZWxlY3RlZFZhbHVlLmVtaXQoW1wiKioqKkNMT1NFKioqKlwiLDBdKTtcclxuICAgIHRoaXMuc2hvd1RhYmxlID0gZmFsc2U7XHJcbiAgfVxyXG4gIFxyXG4gIGRlbGV0ZSgpe1xyXG4gICAgdGhpcy5zZWxlY3RlZFZhbHVlLmVtaXQoW251bGwsMF0pO1xyXG4gICAgdGhpcy5zaG93VGFibGUgPSBmYWxzZTtcclxuICB9ICBcclxuXHJcbiAgYWN0aXZhdGVUYWJsZSgpe1xyXG4gICAgdGhpcy5zaG93VGFibGUgPSB0cnVlO1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMucmVuZGVyU2VsZWN0ZWQoKTtcclxuICAgIH0sMjAwKTtcclxuICB9XHJcblxyXG4gIHJlbG9hZERhdGEoKXtcclxuICAgIHRoaXMuZG9SZWxvYWQuZW1pdChudWxsKTtcclxuICB9ICBcclxuXHJcbiAgc2VsZWN0Q29sdW1uKGtleSl7XHJcbiAgICBpZiAodGhpcy5maWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJDb2x1bW5Gb3JjZSA9PSBudWxsKXtcclxuICAgICAgdGhpcy5zZWxlY3RlZENvbHVtbiA9IGtleTtcclxuICAgICAgdGhpcy5tdWx0aXNlbGVjdFBoYXNlID0gMjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNvbmZpcm1TZWxlY3Rpb24oKXtcclxuICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZS5lbWl0KFt0aGlzLnNlbGVjdGVkRWxlbWVudHNdKTsgXHJcbiAgICB0aGlzLnNob3dUYWJsZSA9IGZhbHNlO1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIExpc3RWYWx1ZUVsZW1lbnQge1xyXG4gIElEOiBzdHJpbmcgfCBudW1iZXI7XHJcbiAgU2VsZWN0ZWQ6IGJvb2xlYW47XHJcbiAgRmllbGQ6IHN0cmluZztcclxuICBLZXk6IHN0cmluZztcclxuICBLZXlTVjogc3RyaW5nO1xyXG4gIEtleVVzZWRTVjogc3RyaW5nO1xyXG4gIFZhbHVlOiBzdHJpbmc7XHJcblxyXG59XHJcblxyXG4vLyBPIGNvc8OsIG8gc2NoaWFudGF0byBhIG1hbm9cclxuZXhwb3J0IGVudW0gUXVlcnlFZGl0b3JNb2RlRW51bSB7XHJcbiAgXCJDT05GSUdVUkFUT1JcIiA9IDEsXHJcbiAgXCJDT01QT1NFUlwiID0gMixcclxuICBcIlJFU1VMVFwiID0gM1xyXG59IiwiPGRpdj5cclxuICAgIDxuZy10ZW1wbGF0ZSBbYXBwRHluYW1pY0xvYWRlcl0gW2RhdGFdPVwiUXVlcnlFZGl0b3JDb21wb25lbnRcIiAob3V0KT1cIm9uRXh0ZXJuYWxTUUxSZXN1bHRPdXQoJGV2ZW50KTtcIiAqbmdJZj1cIlF1ZXJ5RWRpdG9yQ29tcG9uZW50ICE9IG51bGwgJiYgcmVsYXRpb25zTG9hZGVkICYmIHJlbG9hZFwiPjwvbmctdGVtcGxhdGU+XHJcbjwvZGl2PlxyXG5cclxuPGRpdiBjbGFzcz1cImZsb2F0aW5ndGFibGUgZHJhZ2dhYmxlXCIgY2RrRHJhZyAqbmdJZj1cInNob3dUYWJsZVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImhlYWRlclwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJsZWZ0XCI+PG1hdC1pY29uIChjbGljayk9XCJjbG9zZSgpXCI+Y2xvc2U8L21hdC1pY29uPjwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJsZWZ0XCI+PG1hdC1pY29uIChjbGljayk9XCJkZWxldGUoKVwiPmRlbGV0ZTwvbWF0LWljb24+PC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJpZ2h0XCI+PG1hdC1pY29uPmRyYWdfaW5kaWNhdG9yPC9tYXQtaWNvbj48L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJpbmZvXCI+XHJcbiAgICAgICAgPHNwYW4gKm5nSWY9XCIhaXNNdWx0aXNlbGVjdFwiPlNlbGV6aW9uYSBpbCB2YWxvcmUgZGEgcmVnaXN0cmFyZS48L3NwYW4+XHJcbiAgICAgICAgPHNwYW4gKm5nSWY9XCJpc011bHRpc2VsZWN0ICYmIG11bHRpc2VsZWN0UGhhc2UgPT0gMVwiPlNlbGV6aW9uYSB1bmEgY29sb25uYTwvc3Bhbj5cclxuICAgICAgICA8c3BhbiAqbmdJZj1cImlzTXVsdGlzZWxlY3QgJiYgbXVsdGlzZWxlY3RQaGFzZSA9PSAyICYmIHNlbGVjdGVkQ29sdW1uICE9IG51bGwgJiYgZmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVyQ29sdW1uRm9yY2UgPT0gbnVsbFwiPkhhaSBzZWxlemlvbmF0bzogPGI+e3tzZWxlY3RlZENvbHVtbi5zcGxpdChcIl9fXCIpWzFdfX08L2I+Ljwvc3Bhbj5cclxuICAgICAgICA8c3BhbiAqbmdJZj1cImlzTXVsdGlzZWxlY3QgJiYgbXVsdGlzZWxlY3RQaGFzZSA9PSAyXCI+U2VsZXppb25hIGFsbWVubyB1biBlbGVtZW50byBwcmVzZW50ZSBzb3R0byBhbGxhIGNvbG9ubmEgc2VsZXppb25hdGE8L3NwYW4+ICAgICAgICBcclxuICAgICAgICA8c3BhbiAqbmdJZj1cImlzTXVsdGlzZWxlY3QgJiYgbXVsdGlzZWxlY3RQaGFzZSA9PSAyICYmIHNlbGVjdGVkRWxlbWVudHMubGVuZ3RoID4gMFwiPlxyXG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1jb25maXJtXCIgKGNsaWNrKT1cImNvbmZpcm1TZWxlY3Rpb24oKVwiPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1pY29uID5jaGVjazwvbWF0LWljb24+IENvbmZlcm1hIHNlbGV6aW9uZVxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L3NwYW4+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICBcclxuICAgIDx0YWJsZSBjbGFzcz1cInRhYmxlXCIgW25nQ2xhc3NdPVwieyd0YWJsZS1ub3Rmb3JjZWQnOiBmaWVsZC5GaWVsZFR5cGUgIT0gZmllbGRUeXBlRW51bVsnRWxlbmNvIGdlbmVyaWNvJ10gJiYgZmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVyQ29sdW1uRm9yY2UgPT0gbnVsbCwgJ3RhYmxlLWZvcmNlZCc6IGZpZWxkLkZpZWxkVHlwZSAhPSBmaWVsZFR5cGVFbnVtWydFbGVuY28gZ2VuZXJpY28nXSAmJiBmaWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJDb2x1bW5Gb3JjZSAhPSBudWxsLCAndGFibGUtbXVsdGlzZWxlY3Qtbm90Zm9yY2VkJzogZmllbGQuRmllbGRUeXBlID09IGZpZWxkVHlwZUVudW1bJ0VsZW5jbyBnZW5lcmljbyddICAmJiBmaWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJDb2x1bW5Gb3JjZSA9PSBudWxsLCAndGFibGUtbXVsdGlzZWxlY3QtZm9yY2VkJzogZmllbGQuRmllbGRUeXBlID09IGZpZWxkVHlwZUVudW1bJ0VsZW5jbyBnZW5lcmljbyddICAmJiBmaWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJDb2x1bW5Gb3JjZSAhPSBudWxsfVwiPlxyXG4gICAgICAgIDx0cj48dGggKm5nRm9yPVwibGV0IGtleSBvZiBrZXlzOyBsZXQgZmlyc3QgPSBmaXJzdFwiIChjbGljayk9XCJzZWxlY3RDb2x1bW4oa2V5KVwiIGlkPVwiaGVhZGNvbC17e2tleX19XCI+XHJcbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZmlyc3RcIj57e2tleX19PC9zcGFuPlxyXG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFmaXJzdFwiPnt7a2V5LnNwbGl0KFwiX19cIilbMV19fTwvc3Bhbj5cclxuICAgICAgICA8L3RoPjwvdHI+XHJcbiAgICAgICAgPHRyICpuZ0Zvcj1cImxldCByb3cgb2YgZGF0YVwiIGNsYXNzPVwicm93c1wiPlxyXG4gICAgICAgICAgICA8dGQgKm5nRm9yPVwibGV0IGtleSBvZiBrZXlzXCIgKGNsaWNrKT1cInNlbGVjdFZhbHVlKHJvdywga2V5KVwiIGlkPVwiY29sLXt7a2V5fX0taWQte3tyb3dbJ0lEJ119fVwiPlxyXG4gICAgICAgICAgICAgICAgPCEtLSBcclxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwicm93W2tleV0gIT0gbnVsbCAmJiByb3dba2V5XS50b1N0cmluZygpLmxlbmd0aCA8PSAxMDBcIiBbaW5uZXJIVE1MXT1cInJvd1trZXldXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgPC9zcGFuPiBcclxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwicm93W2tleV0gIT0gbnVsbCAmJiByb3dba2V5XS50b1N0cmluZygpLmxlbmd0aCA+IDEwMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7cm93W2tleV0gIT0gbnVsbCA/IHJvd1trZXldLnRvU3RyaW5nKCkuc3Vic3RyaW5nKDAsMTAwKSA6ICcnfX1cclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwicm93W2tleV0gIT0gbnVsbCAmJiByb3dba2V5XS50b1N0cmluZygpLmxlbmd0aCA+IDEwMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIC4uLlxyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgLS0+XHJcblxyXG4gICAgICAgICAgICAgICAgPHNwYW4gW2lubmVySFRNTF09XCJyb3dba2V5XVwiPlxyXG5cclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICA8L3RyPlxyXG4gICAgPC90YWJsZT5cclxuXHJcbiAgICA8IS0tIFxyXG4gICAgPHRhYmxlIGNsYXNzPVwidGFibGUgdGFibGUtbm90Zm9yY2VkXCIgKm5nSWY9XCJmaWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJDb2x1bW5Gb3JjZSA9PSBudWxsXCI+XHJcbiAgICAgICAgPHRyPjx0aCAqbmdGb3I9XCJsZXQga2V5IG9mIGtleXM7IGxldCBmaXJzdCA9IGZpcnN0XCI+XHJcbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZmlyc3RcIj57e2tleX19PC9zcGFuPlxyXG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFmaXJzdFwiPnt7a2V5LnNwbGl0KFwiX19cIilbMV19fTwvc3Bhbj5cclxuICAgICAgICA8L3RoPjwvdHI+XHJcbiAgICAgICAgPHRyICpuZ0Zvcj1cImxldCByb3cgb2YgZGF0YVwiIGNsYXNzPVwicm93c1wiPlxyXG4gICAgICAgICAgICA8dGQgKm5nRm9yPVwibGV0IGtleSBvZiBrZXlzXCIgKGNsaWNrKT1cInNlbGVjdFZhbHVlTm90Rm9yY2VkKHJvd1trZXldKVwiPlxyXG4gICAgICAgICAgICAgICAge3tyb3dba2V5XSAhPSBudWxsID8gcm93W2tleV0udG9TdHJpbmcoKS5zdWJzdHJpbmcoMCwxMDApIDogJyd9fVxyXG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJyb3dba2V5XSAhPSBudWxsICYmIHJvd1trZXldLnRvU3RyaW5nKCkubGVuZ3RoID4gMTAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgLi4uXHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgPC90cj5cclxuICAgIDwvdGFibGU+XHJcblxyXG4gICAgPHRhYmxlIGNsYXNzPVwidGFibGUgdGFibGUtZm9yY2VkXCIgKm5nSWY9XCJmaWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJDb2x1bW5Gb3JjZSAhPSBudWxsXCI+XHJcbiAgICAgICAgPHRyPjx0aCAqbmdGb3I9XCJsZXQga2V5IG9mIGtleXM7IGxldCBmaXJzdCA9IGZpcnN0XCI+XHJcbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZmlyc3RcIj57e2tleX19PC9zcGFuPlxyXG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFmaXJzdFwiPnt7a2V5LnNwbGl0KFwiX19cIilbMV19fTwvc3Bhbj5cclxuICAgICAgICA8L3RoPjwvdHI+XHJcbiAgICAgICAgPHRyICpuZ0Zvcj1cImxldCByb3cgb2YgZGF0YVwiIGNsYXNzPVwicm93c1wiIChjbGljayk9XCJzZWxlY3RWYWx1ZUZvcmNlZChyb3cpXCI+XHJcbiAgICAgICAgICAgIDx0ZCAqbmdGb3I9XCJsZXQga2V5IG9mIGtleXNcIj5cclxuICAgICAgICAgICAgICAgIHt7cm93W2tleV0gIT0gbnVsbCA/IHJvd1trZXldLnRvU3RyaW5nKCkuc3Vic3RyaW5nKDAsMTAwKSA6ICcnfX1cclxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwicm93W2tleV0gIT0gbnVsbCAmJiByb3dba2V5XS50b1N0cmluZygpLmxlbmd0aCA+IDEwMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIC4uLlxyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgIDwvdHI+XHJcbiAgICA8L3RhYmxlPlxyXG4gICAgLS0+XHJcblxyXG48L2Rpdj5cclxuXHJcbjxzcGFuICpuZ0lmPVwidmFsdWUgIT0gbnVsbFwiPnt7dmFsdWV9fTwvc3Bhbj5cclxuXHJcbjxidXR0b24gY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLWFycm93LWRvd25cIiAoY2xpY2spPVwiYWN0aXZhdGVUYWJsZSgpXCIgKm5nSWY9XCJtdWx0aXBsZVZhbHVlc1RvQ2hvb3NlXCI+XHJcbiAgICA8bWF0LWljb24+a2V5Ym9hcmRfYXJyb3dfZG93bjwvbWF0LWljb24+XHJcbjwvYnV0dG9uPlxyXG48YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1hcnJvdy1kb3duXCIgKGNsaWNrKT1cInJlbG9hZERhdGEoKVwiICpuZ0lmPVwiZmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVySGFzUmVzZXRCdXR0b25cIj5cclxuICAgIDxtYXQtaWNvbj5sb29wPC9tYXQtaWNvbj5cclxuPC9idXR0b24+Il19
|
|
457
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGJnZXR0ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXFwLWR5bmFtaWMtbW9kdWxlL3NyYy9saWIvY29tcG9uZW50cy9wcml2YXRlL2RiZ2V0dGVyL2RiZ2V0dGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VxcC1keW5hbWljLW1vZHVsZS9zcmMvbGliL2NvbXBvbmVudHMvcHJpdmF0ZS9kYmdldHRlci9kYmdldHRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR3ZFLE9BQU8sRUFBaUMsYUFBYSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFJL0YsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtDQUFrQyxDQUFDOzs7Ozs7O0FBT2pFLE1BQU0sT0FBTyxpQkFBaUI7SUF1QzVCLFlBQW9CLFVBQXNCO1FBQXRCLGVBQVUsR0FBVixVQUFVLENBQVk7UUFyQ2pDLG1CQUFjLEdBQStCLElBQUksQ0FBQztRQUlsRCxhQUFRLEdBQVksS0FBSyxDQUFDO1FBQzFCLHNCQUFpQixHQUFZLEtBQUssQ0FBQztRQUNuQyx5QkFBb0IsR0FBK0IsSUFBSSxDQUFDLENBQUMsbUNBQW1DO1FBQzVGLFNBQUksR0FBUSxJQUFJLENBQUMsQ0FBQyx3Q0FBd0M7UUFFekQsUUFBRyxHQUEyQixJQUFJLFlBQVksRUFBWSxDQUFDO1FBQzNELGtCQUFhLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7UUFDM0QsYUFBUSxHQUFzQixJQUFJLFlBQVksRUFBTyxDQUFDO1FBRWhFLFNBQUksR0FBa0IsSUFBSSxDQUFDO1FBQzNCLFdBQU0sR0FBWSxLQUFLLENBQUM7UUFHeEIsY0FBUyxHQUFZLEtBQUssQ0FBQztR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QkFBakIsTUFBTTs7QUFtZVQsTUFBTSxPQUFPLGdCQUFnQjtDQVM1QjtBQUVELDZCQUE2QjtBQUM3QixNQUFNLENBQU4sSUFBWSxtQkFJWDtBQUpELFdBQVksbUJBQW1CO0lBQzdCLDZFQUFrQixDQUFBO0lBQ2xCLHFFQUFjLENBQUE7SUFDZCxpRUFBWSxDQUFBO0FBQ2QsQ0FBQyxFQUpXLG1CQUFtQixLQUFuQixtQkFBbUIsUUFJOUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBEeW5hbWljTG9hZGVyRGlyZWN0aXZlRGF0YSwgZXZlbnRPdXQgfSBmcm9tICcuLi8uLi8uLi9kaXJlY3RpdmVzL2R5bmFtaWMtbG9hZGVyL2R5bmFtaWMtbG9hZGVyLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IEJhc2VGaWVsZCwgRGF0YUdldHRlclR5cGVFbnVtLCBGaWVsZFR5cGVFbnVtIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2Jhc2VGaWVsZC5tb2RlbCc7XHJcbmltcG9ydCB7IFJlY29yZCB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9yZWNvcmQubW9kZWwnO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBEeW5hbWljTW9kdWxlQ29tcGlsZUNvbmZpZyB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9keW5hbWljTW9kdWxlQ29tcGlsZUNvbmZpZy5tb2RlbCc7XHJcbmltcG9ydCB7IEdsb2JhbFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9nbG9iYWwuc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2RiZ2V0dGVyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZGJnZXR0ZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2RiZ2V0dGVyLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIERiZ2V0dGVyQ29tcG9uZW50IHtcclxuXHJcbiAgQElucHV0KCkgY29uZmlndXJhdGlvbnM6IER5bmFtaWNNb2R1bGVDb21waWxlQ29uZmlnID0gbnVsbDtcclxuICBASW5wdXQoKSBmb3JtOiBGb3JtO1xyXG4gIEBJbnB1dCgpIGZpZWxkOiBhbnk7IC8vIFNvbm8gY29zdHJldHRvIGEgbWV0dGVyZSBhbnkgcGVyIGdlc3RpcmUgaSBjYW1waSBkaSB0aXBvIGVsZW5jbyBnZW5lcmljbyBjaGUgaGFubm8gdW5hIHN0cnV0dHVyYSB1biBwbycgZGl2ZXJzYSwgYWx0cmltZW50aSBkb3ZyZWkgZmFyZSB1biBjYXNpbm8gZGkgY2FzdCBlIG5vbiBuZSB2YWxlIGxhIHBlbmFcclxuICBASW5wdXQoKSByZWNvcmQ6IFJlY29yZDtcclxuICBASW5wdXQoKSBpbkNvbmZpZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIERpcmVjdGx5T3BlblRhYmxlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgUXVlcnlFZGl0b3JDb21wb25lbnQ6IER5bmFtaWNMb2FkZXJEaXJlY3RpdmVEYXRhID0gbnVsbDsgLy8gTCdpbnRlcm8gY29tcG9uZW50ZSBxdWVyeSBFZGl0b3JcclxuICBASW5wdXQoKSBkYXRhOiBhbnkgPSBudWxsOyAvLyBMbyBmYWNjaWFtbyBmdW56aW9uYXJlIHRpcG8gRVFQLVRBQkxFXHJcblxyXG4gIEBPdXRwdXQoKSBvdXQ6IEV2ZW50RW1pdHRlcjxldmVudE91dD4gPSBuZXcgRXZlbnRFbWl0dGVyPGV2ZW50T3V0PigpO1xyXG4gIEBPdXRwdXQoKSBzZWxlY3RlZFZhbHVlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIEBPdXRwdXQoKSBkb1JlbG9hZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTsgIFxyXG5cclxuICBrZXlzOiBBcnJheTxzdHJpbmc+ID0gbnVsbDtcclxuICBsb2FkZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICB2YWx1ZTogYW55O1xyXG5cclxuICBzaG93VGFibGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgaGF2ZVF1ZXN0aW9uczogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGhhdmVSZWxhdGlvbnM6IGJvb2xlYW4gPSBmYWxzZTtcclxuICByZWxvYWQ6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIG11bHRpcGxlVmFsdWVzVG9DaG9vc2U6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgaW50ZXJ2YWw6IGFueTtcclxuXHJcbiAgcmVsYXRpb25zOiBBcnJheTx7ZmllbGQ6IHN0cmluZywgbG9hZGVkOiBib29sZWFuLCBhY3R1YWx2YWx1ZTogYW55fT4gPSBuZXcgQXJyYXk8e2ZpZWxkOiBzdHJpbmcsIGxvYWRlZDogYm9vbGVhbiwgYWN0dWFsdmFsdWU6IGFueX0+KCk7XHJcbiAgcmVsYXRpb25zTG9hZGVkOiBib29sZWFuO1xyXG4gIGJhY2t1cFF1ZXN0aW9uRmllbGRzOiBBcnJheTxzdHJpbmc+ID0gbnVsbDtcclxuXHJcbiAgaXNNdWx0aXNlbGVjdDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIG11bHRpc2VsZWN0UGhhc2U6IG51bWJlciA9IDE7XHJcbiAgc2VsZWN0ZWRDb2x1bW46IHN0cmluZyA9IFwiXCI7XHJcbiAgc2VsZWN0ZWRFbGVtZW50czogQXJyYXk8TGlzdFZhbHVlRWxlbWVudD4gPSBuZXcgQXJyYXk8TGlzdFZhbHVlRWxlbWVudD4oKTtcclxuXHJcbiAgZmllbGRUeXBlRW51bSA9IEZpZWxkVHlwZUVudW07XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cENsaWVudDogSHR0cENsaWVudCkge31cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcblxyXG4gICAgR2xvYmFsU2VydmljZS5kZWJ1Z0xvZyhcIi0tLSBJTlNJREUgREJHRVRURVIgLS0tXCIpO1xyXG4gICAgR2xvYmFsU2VydmljZS5kZWJ1Z0xvZyhudWxsLCB0aGlzLmZvcm0pO1xyXG4gICAgR2xvYmFsU2VydmljZS5kZWJ1Z0xvZyhudWxsLCB0aGlzLnJlY29yZCk7XHJcbiAgICBHbG9iYWxTZXJ2aWNlLmRlYnVnTG9nKG51bGwsIHRoaXMuZmllbGQpO1xyXG4gICAgR2xvYmFsU2VydmljZS5kZWJ1Z0xvZyhudWxsLCB0aGlzLlF1ZXJ5RWRpdG9yQ29tcG9uZW50KTtcclxuICAgIEdsb2JhbFNlcnZpY2UuZGVidWdMb2coXCItLS0gSU5TSURFIERCR0VUVEVSIC0tLVwiKTtcclxuXHJcbiAgICAgIC8vIEluaXppbyBSZXRyb2NvbXBhdGliaWxpdMOgXHJcblxyXG4gICAgICBpZiAodHlwZW9mIHRoaXMuZmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVySGFzUmVzZXRCdXR0b24gPT09IFwidW5kZWZpbmVkXCIpe1xyXG4gICAgICAgIHRoaXMuZmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVySGFzUmVzZXRCdXR0b24gPSB0cnVlO1xyXG4gICAgICB9ICAgICBcclxuXHJcbiAgICAgIC8vIEZpbmUgUmV0cm9jb21wYXRpYmlsaXTDoCAgICBcclxuXHJcbiAgICAgIC8vIEluaXppbzogVGFiZWxsYSBtdWx0aXNlbGVjdD9cclxuXHJcbiAgICAgIGlmICh0aGlzLmZpZWxkLkZpZWxkVHlwZSA9PSBGaWVsZFR5cGVFbnVtWydFbGVuY28gZ2VuZXJpY28nXSl7XHJcbiAgICAgICAgdGhpcy5pc011bHRpc2VsZWN0ID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuZmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVyQ29sdW1uRm9yY2UgIT0gbnVsbCl7XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkQ29sdW1uID0gdGhpcy5maWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJDb2x1bW5Gb3JjZS5rZXk7XHJcbiAgICAgICAgICB0aGlzLm11bHRpc2VsZWN0UGhhc2UgPSAyO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZEVsZW1lbnRzID0gdGhpcy5yZWNvcmRbdGhpcy5maWVsZC5OYW1lXTsgICAgXHJcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRFbGVtZW50cyA9PSBudWxsKXsgdGhpcy5zZWxlY3RlZEVsZW1lbnRzID0gbmV3IEFycmF5PExpc3RWYWx1ZUVsZW1lbnQ+KCk7IH1cclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gRmluZTogVGFiZWxsYSBtdWx0aXNlbGVjdD9cclxuXHJcbiAgICBpZiAodGhpcy5RdWVyeUVkaXRvckNvbXBvbmVudCAhPSBudWxsKXtcclxuICAgICAgdGhpcy5RdWVyeUVkaXRvckNvbXBvbmVudC5pbnB1dFBhcmFtcy5jb25maWcubW9kZSA9IFF1ZXJ5RWRpdG9yTW9kZUVudW0uUkVTVUxUO1xyXG4gICAgICB0aGlzLlF1ZXJ5RWRpdG9yQ29tcG9uZW50LmlucHV0UGFyYW1zLmNvbmZpZy5maWVsZCA9IHRoaXMuZmllbGQ7XHJcbiAgICAgIHRoaXMuUXVlcnlFZGl0b3JDb21wb25lbnQuaW5wdXRQYXJhbXMuY29uZmlnLnJlY29yZCA9IHRoaXMucmVjb3JkO1xyXG4gICAgICB0aGlzLlF1ZXJ5RWRpdG9yQ29tcG9uZW50LmlucHV0UGFyYW1zLmNvbmZpZy5pbkNvbmZpZyA9IHRoaXMuaW5Db25maWc7XHJcblxyXG4gICAgICBpZiAodGhpcy5maWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJWYWx1ZS5vcGVuZWRGaWVsZHMuZmluZCh4ID0+IHR5cGVvZiB4LlF1ZXJ5UHJvcGVydHlWYWx1ZSAhPT0gXCJvYmplY3RcIiAmJiB4LlF1ZXJ5UHJvcGVydHlWYWx1ZSA9PSAnPycpICE9IG51bGwpe1xyXG4gICAgICAgIFxyXG4gICAgICAgIC8vIElsIGNhbXBvIGhhIGFsbWVubyB1biB2YWxvcmUgY29uIFwiP1wiXHJcbiAgICAgICAgdGhpcy5oYXZlUXVlc3Rpb25zID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgR2xvYmFsU2VydmljZS5kZWJ1Z0xvZyhcIkNIRUNLSU5HIEJBQ0tVUFMgT1BFTkVEIEZJRUxEUy4uLi5cIiwgdGhpcy5iYWNrdXBRdWVzdGlvbkZpZWxkcyk7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmJhY2t1cFF1ZXN0aW9uRmllbGRzID09IG51bGwpe1xyXG4gICAgICAgICAgdGhpcy5iYWNrdXBRdWVzdGlvbkZpZWxkcyA9IG5ldyBBcnJheTxzdHJpbmc+KCk7XHJcbiAgICAgICAgICB0aGlzLmZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlclZhbHVlLm9wZW5lZEZpZWxkcy5mb3JFYWNoKChycWYpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5iYWNrdXBRdWVzdGlvbkZpZWxkcy5wdXNoKHJxZi5Qcm9wZXJ0eU5hbWUpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG5cclxuXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICh0aGlzLmZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlclZhbHVlLm9wZW5lZEZpZWxkcy5maW5kKHggPT4gdHlwZW9mIHguUXVlcnlQcm9wZXJ0eVZhbHVlICE9PSBcIm9iamVjdFwiICYmIHguUXVlcnlQcm9wZXJ0eVZhbHVlLmluZGV4T2YoJyEnKSAhPSAtMSkgIT0gbnVsbCl7XHJcblxyXG4gICAgICAgIC8vIElsIGNhbXBvIGhhIGFsbWVubyB1biB2YWxvcmUgY29uIFwiIW5vbWVyZWxhemlvbmVcIlxyXG4gICAgICAgIHRoaXMuaGF2ZVJlbGF0aW9ucyA9IHRydWU7XHJcblxyXG4gICAgICAgIHRoaXMuZmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVyVmFsdWUub3BlbmVkRmllbGRzLmZpbHRlcih4ID0+IHguUXVlcnlQcm9wZXJ0eVZhbHVlLmluZGV4T2YoJyEnKSAhPSAtMSkuZm9yRWFjaCgoZmllbGRXaXRoUmVsYXRpb24pID0+IHtcclxuXHJcbiAgICAgICAgICB2YXIgZmllbGRSZWxhdGVkID0gZmllbGRXaXRoUmVsYXRpb24uUXVlcnlQcm9wZXJ0eVZhbHVlLnJlcGxhY2UoXCIhXCIsXCJcIik7XHJcblxyXG4gICAgICAgICAgaWYgKHRoaXMucmVjb3JkW2ZpZWxkUmVsYXRlZF0gPT0gbnVsbCl7XHJcbiAgICAgICAgICAgIC8vY29uc29sZS5sb2coXCJ0aGlzLnJlY29yZFtmaWVsZFJlbGF0ZWRdIEUnIE5VTExcIiwgdGhpcy5maWVsZC5OYW1lLCBmaWVsZFJlbGF0ZWQsIHRoaXMucmVjb3JkW2ZpZWxkUmVsYXRlZF0sIHRoaXMucmVjb3JkKTtcclxuICAgICAgICAgICAgdGhpcy5yZWxhdGlvbnMucHVzaCh7ZmllbGQ6IGZpZWxkUmVsYXRlZCwgbG9hZGVkOiBmYWxzZSwgYWN0dWFsdmFsdWU6IHRoaXMucmVjb3JkW2ZpZWxkUmVsYXRlZF19KTtcclxuICAgICAgICAgICAgdGhpcy5jaGVja1JlbGF0aW9ucygpO1xyXG4gICAgICAgICAgICB0aGlzLmludGVydmFsID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xyXG4gICAgICAgICAgICAgIC8vY29uc29sZS5sb2coXCJ0aGlzLnJlY29yZFtmaWVsZFJlbGF0ZWRdIENIRUNLXCIsIHRoaXMuZmllbGQuTmFtZSwgZmllbGRSZWxhdGVkLCB0aGlzLnJlY29yZFtmaWVsZFJlbGF0ZWRdLCB0aGlzLnJlY29yZCk7XHJcbiAgICAgICAgICAgICAgICB2YXIgY3VycmVudFJlbGF0aW9uID0gdGhpcy5yZWxhdGlvbnMuZmluZCh4ID0+IHguZmllbGQgPT0gZmllbGRSZWxhdGVkKTtcclxuICAgICAgICAgICAgICAgIGlmIChjdXJyZW50UmVsYXRpb24gIT0gbnVsbCl7XHJcblxyXG4gICAgICAgICAgICAgICAgICAvLyBHZXN0aW9uZSBkZWkgY2FtYmkgZGkgdmFsb3JlIGRlaSBjYW1waSByZWxhemlvbmF0aVxyXG4gICAgICAgICAgICAgICAgICAvLyBJbCBjYW1wbyByZWxhemlvbmF0byBJTklaSUFMTUVOVEUgTk9OIEUnIE5VTEwsIGUgY2FtYmlhIHZhbG9yZSBpbiBxdWFsY29zYSBjaGUgTk9OIEUnIE5VTExcclxuICAgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRSZWxhdGlvbi5hY3R1YWx2YWx1ZSAhPSBudWxsICYmIHRoaXMucmVjb3JkW2ZpZWxkUmVsYXRlZF0gIT0gbnVsbCAmJiB0aGlzLnJlY29yZFtmaWVsZFJlbGF0ZWRdICE9IGN1cnJlbnRSZWxhdGlvbi5hY3R1YWx2YWx1ZSl7XHJcbiAgICAgICAgICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhcInRoaXMucmVjb3JkW2ZpZWxkUmVsYXRlZF0gSEEgQ0FNQklBVE8gVkFMT1JFISFcIiwgdGhpcy5maWVsZC5OYW1lLCBmaWVsZFJlbGF0ZWQsIHRoaXMucmVjb3JkW2ZpZWxkUmVsYXRlZF0sIHRoaXMucmVjb3JkKTtcclxuICAgICAgICAgICAgICAgICAgICBjdXJyZW50UmVsYXRpb24uYWN0dWFsdmFsdWUgPSB0aGlzLnJlY29yZFtmaWVsZFJlbGF0ZWRdO1xyXG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRSZWxhdGlvbi5sb2FkZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIGZpZWxkV2l0aFJlbGF0aW9uLlF1ZXJ5UHJvcGVydHlWYWx1ZSA9IHRoaXMucmVjb3JkW2ZpZWxkUmVsYXRlZF07XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWNvcmRbdGhpcy5maWVsZC5OYW1lXSA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWxvYWRDb21wb25lbnQoKTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgLy8gSWwgY2FtcG8gcmVsYXppb25hdG8gSU5JWklBTE1FTlRFIE5PTiBFJyBOVUxMLCBlIGNhbWJpYSB2YWxvcmUgSU4gTlVMTFxyXG4gICAgICAgICAgICAgICAgICBlbHNlIGlmIChjdXJyZW50UmVsYXRpb24uYWN0dWFsdmFsdWUgIT0gbnVsbCAmJiB0aGlzLnJlY29yZFtmaWVsZFJlbGF0ZWRdID09IG51bGwpe1xyXG4gICAgICAgICAgICAgICAgICAgIC8vY29uc29sZS5sb2coXCJ0aGlzLnJlY29yZFtmaWVsZFJlbGF0ZWRdIEUnIFRPUk5BVE8gQUQgRVNTRVJFIE5VTEwhISA6KFwiLCB0aGlzLmZpZWxkLk5hbWUsIGZpZWxkUmVsYXRlZCwgdGhpcy5yZWNvcmRbZmllbGRSZWxhdGVkXSwgdGhpcy5yZWNvcmQpO1xyXG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRSZWxhdGlvbi5hY3R1YWx2YWx1ZSA9IHRoaXMucmVjb3JkW2ZpZWxkUmVsYXRlZF07XHJcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudFJlbGF0aW9uLmxvYWRlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgZmllbGRXaXRoUmVsYXRpb24uUXVlcnlQcm9wZXJ0eVZhbHVlID0gXCIhXCIrZmllbGRSZWxhdGVkO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVjb3JkW3RoaXMuZmllbGQuTmFtZV0gPSBudWxsO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAvLyBSZWN1cGVybyBCYWNrdXBcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmJhY2t1cFF1ZXN0aW9uRmllbGRzLmZvckVhY2goKGJvZikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5maWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJWYWx1ZS5vcGVuZWRGaWVsZHMuZmluZCh4ID0+IHguUHJvcGVydHlOYW1lID09IGJvZikuUXVlcnlQcm9wZXJ0eVZhbHVlID0gXCI/XCI7XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVsb2FkQ29tcG9uZW50KCk7XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgIC8vIElsIGNhbXBvIHJlbGF6aW9uYXRvIElOSVpJQUxNRU5URSBFJyBOVUxMLCBlIGNhbWJpYSB2YWxvcmVcclxuICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoY3VycmVudFJlbGF0aW9uLmFjdHVhbHZhbHVlID09IG51bGwgJiYgdGhpcy5yZWNvcmRbZmllbGRSZWxhdGVkXSAhPSBudWxsKXtcclxuICAgICAgICAgICAgICAgICAgICAvL2NvbnNvbGUubG9nKFwidGhpcy5yZWNvcmRbZmllbGRSZWxhdGVkXSBOT04gRScgUElVJyBOVUxMISEgOilcIiwgdGhpcy5maWVsZC5OYW1lLCBmaWVsZFJlbGF0ZWQsIHRoaXMucmVjb3JkW2ZpZWxkUmVsYXRlZF0sIHRoaXMucmVjb3JkKTtcclxuICAgICAgICAgICAgICAgICAgICBjdXJyZW50UmVsYXRpb24uYWN0dWFsdmFsdWUgPSB0aGlzLnJlY29yZFtmaWVsZFJlbGF0ZWRdO1xyXG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRSZWxhdGlvbi5sb2FkZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIGZpZWxkV2l0aFJlbGF0aW9uLlF1ZXJ5UHJvcGVydHlWYWx1ZSA9IHRoaXMucmVjb3JkW2ZpZWxkUmVsYXRlZF07XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWxvYWRDb21wb25lbnQoKTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgdGhpcy5jaGVja1JlbGF0aW9ucygpO1xyXG4gICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSwyMDApO1xyXG5cclxuXHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAvL2NvbnNvbGUubG9nKFwidGhpcy5yZWNvcmRbZmllbGRSZWxhdGVkXSBOT04gRScgTlVMTCEhIDopXCIsIHRoaXMuZmllbGQuTmFtZSwgZmllbGRSZWxhdGVkLCB0aGlzLnJlY29yZFtmaWVsZFJlbGF0ZWRdLCB0aGlzLnJlY29yZCk7XHJcbiAgICAgICAgICAgIGZpZWxkV2l0aFJlbGF0aW9uLlF1ZXJ5UHJvcGVydHlWYWx1ZSA9IHRoaXMucmVjb3JkW2ZpZWxkUmVsYXRlZF0gIT0gbnVsbCA/IHRoaXMucmVjb3JkW2ZpZWxkUmVsYXRlZF0gOiAnJztcclxuICAgICAgICAgICAgdGhpcy5yZWxhdGlvbnMucHVzaCh7ZmllbGQ6IGZpZWxkUmVsYXRlZCwgbG9hZGVkOiB0cnVlLCBhY3R1YWx2YWx1ZTogdGhpcy5yZWNvcmRbZmllbGRSZWxhdGVkXX0pO1xyXG4gICAgICAgICAgICB0aGlzLmNoZWNrUmVsYXRpb25zKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBcclxuICAgICAgICB9KTsgICAgICAgIFxyXG5cclxuXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICghdGhpcy5oYXZlUmVsYXRpb25zKXtcclxuICAgICAgICB0aGlzLnJlbGF0aW9uc0xvYWRlZCA9IHRydWU7XHJcbiAgICAgIH0gICAgIFxyXG5cclxuICAgIH0gZWxzZSB7XHJcblxyXG4gICAgICBpZiAodGhpcy5kYXRhID09IG51bGwpe1xyXG5cclxuICAgICAgdGhpcy5odHRwQ2xpZW50LmdldCgnLi9hc3NldHMvbW9ja3Vwcy9tb2NrZWRGcm9tUXVlcnlFZGl0b3JfUkVTVUxUX01BTllfTlVNRVJJQy50eHQnLCB7cmVzcG9uc2VUeXBlOiAndGV4dCd9KVxyXG4gICAgICAuc3Vic2NyaWJlKG1vY2tlZEZyb21RdWVyeUVkaXRvciA9PiB7XHJcbiAgICAgICAgdGhpcy5kYXRhID0gSlNPTi5wYXJzZShtb2NrZWRGcm9tUXVlcnlFZGl0b3IpO1xyXG4gICAgICAgIHRoaXMuZGF0YSA9IEpTT04ucGFyc2UodGhpcy5kYXRhLnJlc3VsdCk7XHJcbiAgICAgICAgdGhpcy5wcm9jZXNzUmVzdWx0KHRoaXMuZGF0YSxbXSk7XHJcbiAgICAgICB9KTsgICAgICBcclxuXHJcbiAgICAgIH1cclxuXHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgcmVsb2FkQ29tcG9uZW50KCl7XHJcbiAgICAvL2NvbnNvbGUubG9nKFwiUkVMT0FEIENPTVBPTkVOVCBDQUxMRURcIiwgdGhpcy5yZWNvcmQsIHRoaXMuUXVlcnlFZGl0b3JDb21wb25lbnQuaW5wdXRQYXJhbXMuY29uZmlnLnJlY29yZCk7XHJcblxyXG4gICAgdGhpcy5yZWxvYWQgPSBmYWxzZTtcclxuICAgIHRoaXMuUXVlcnlFZGl0b3JDb21wb25lbnQuaW5wdXRQYXJhbXMuY29uZmlnLnJlY29yZCA9IHRoaXMucmVjb3JkO1xyXG4gICAgdGhpcy5RdWVyeUVkaXRvckNvbXBvbmVudC5pbnB1dFBhcmFtcy5jb25maWcuZmllbGQgPSB0aGlzLmZpZWxkO1xyXG5cclxuICAgIHNldFRpbWVvdXQoKCkgPT4geyB0aGlzLnJlbG9hZCA9IHRydWU7IFxyXG4gICAgICAgICAgICAgICAgICAgICAgIC8vY29uc29sZS5sb2coXCJSRUxPQURFRCBRVUVSWUVESVRPUlwiKTsgXHJcbiAgICAgICAgICAgICAgICAgICAgICB9LCAzMDAwKTsgXHJcbiAgfVxyXG5cclxuICBjaGVja1JlbGF0aW9ucygpe1xyXG4gICAgdGhpcy5yZWxhdGlvbnNMb2FkZWQgPSB0aGlzLnJlbGF0aW9ucy5maW5kKHggPT4geC5sb2FkZWQpICE9IG51bGw7XHJcbiAgfVxyXG5cclxuICBvbkV4dGVybmFsU1FMUmVzdWx0T3V0KGV2OiBldmVudE91dCl7XHJcblxyXG4gICAgLy9jb25zb2xlLmxvZyhcIlJpc3VsdGF0byBkZWxsJ2VsYWJvcmF6aW9uZSBkZWwgcXVlcnkgZWRpdG9yOiBvbkV4dGVybmFsU1FMUmVzdWx0T3V0XCIsIGV2KTtcclxuXHJcbiAgICBpZiAoZXYuQmVoYXZpb3Vycy5pbmRleE9mKFwic2VuZC1vdXRcIikgIT0gLTEpeyB0aGlzLm91dC5lbWl0KGV2KTsgfVxyXG5cclxuICAgIHRoaXMuZGF0YSA9IEpTT04ucGFyc2UoZXYuUGFyYW1zLnJlc3VsdCk7XHJcbiAgICB0aGlzLnByb2Nlc3NSZXN1bHQodGhpcy5kYXRhLGV2LkJlaGF2aW91cnMpO1xyXG5cclxuICB9XHJcblxyXG4gIHByb2Nlc3NSZXN1bHQoZGF0YTogYW55LCBiZWhhdmlvdXJzOiBBcnJheTxzdHJpbmc+ID0gW10pe1xyXG4gICAgXHJcbiAgICAvL2RhdGEgw6ggbCdhcnJheSBkZWkgcmVjb3JkIHRvcm5hdGkgZGFsIGRiXHJcblxyXG4gICAgLy8gc2UgaG8gZGVsbGUgcmlzcG9zdGVcclxuICAgIGlmIChkYXRhLmxlbmd0aCA+IDApe1xyXG5cclxuICAgICAgLy8gY29udHJvbGxvIHF1YW50aSBhdHRyaWJ1dGkgaGEgbGEgcmlzcG9zdGFcclxuICAgICAgdGhpcy5rZXlzID0gT2JqZWN0LmtleXMoZGF0YVswXSk7XHJcblxyXG4gICAgICAvLyBzZSBobyBzb2xhbWVudGUgbCdJRCBlIGlsIGNhbXBvIHNjZWx0byBlZCBobyB1bmEgc29sYSByaXNwb3N0YSBwcmVuZG8gaWwgdmFsb3JlIGRpcmV0dGFtZW50ZVxyXG4gICAgICBpZiAodGhpcy5rZXlzLmxlbmd0aCA9PSAyICYmIGRhdGEubGVuZ3RoID09IDEpe1xyXG4gICAgICAgIC8vIFNlIGhvIHVuIHNvbG8gb2NjaGlldHRvIHNlbGV6aW9uYXRvIGUgbGEgcXVlcnkgcmVzdGl0dWlzY2UgdW4gc29sbyB2YWxvcmUsIGxvIGJ1dHRvIGZ1b3JpIGF1dG9tYXRpY2FtZW50ZVxyXG4gICAgICAgIEdsb2JhbFNlcnZpY2UuZGVidWdMb2coXCJuZWxsYSByaXNwb3N0YSBobyBzb2xhbWVudGUgbCdJRCBlIGlsIGNhbXBvIHNjZWx0byBlZCBobyB1bmEgc29sYSByaXNwb3N0YVwiKTtcclxuICAgICAgICB0aGlzLnNob3dUYWJsZSA9IGZhbHNlO1xyXG5cclxuICAgICAgICBpZiAoIXRoaXMuaXNNdWx0aXNlbGVjdCl7XHJcbiAgICAgICAgICBHbG9iYWxTZXJ2aWNlLmRlYnVnTG9nKFwibm9uIG11bHRpc2VsZWN0XCIpO1xyXG4gICAgICAgICAgLy8gTm9uIMOoIG11bHRpc2VsZWN0XHJcbiAgICAgICAgICB0aGlzLnJlY29yZFt0aGlzLmZpZWxkLk5hbWVdID0gZGF0YVswXVt0aGlzLmtleXNbMV1dO1xyXG5cclxuICAgICAgICAgIC8vIENvbXVucXVlIHNpYSBjaSBwb3J0aWFtbyBkaWV0cm8gbCdJRCBkZWxsYSBzZWxlemlvbmUgY29uIHVuIGNhbXBvIGN1c3RvbSwgcHXDsiBzZW1wcmUgc2VydmlyZVxyXG4gICAgICAgICAgaWYoZGF0YVswXS5oYXNPd25Qcm9wZXJ0eShcIklEXCIpKXtcclxuICAgICAgICAgICAgaWYgKHRoaXMuY29uZmlndXJhdGlvbnMuYWRkaXRpb25hbFBhcmFtcyA9PSBudWxsKXsgdGhpcy5jb25maWd1cmF0aW9ucy5hZGRpdGlvbmFsUGFyYW1zID0ge307IH1cclxuICAgICAgICAgICAgdGhpcy5jb25maWd1cmF0aW9ucy5hZGRpdGlvbmFsUGFyYW1zW3RoaXMuZmllbGQuTmFtZStcIl9fX19JRFwiXSA9IGRhdGFbMF1bJ0lEJ107XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlLmVtaXQoW2RhdGFbMF1bdGhpcy5rZXlzWzFdXSxkYXRhWzBdWydJRCddXSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIEdsb2JhbFNlcnZpY2UuZGVidWdMb2coXCJtdWx0aXNlbGVjdFwiKTtcclxuICAgICAgICAgIC8vIEUnIHVuIGVsZW5jbyBnZW5lcmljbyBkYmdldHRlciBtdWx0aXNlbGVjdFxyXG4gICAgICAgICAgLy8gZGV2byBmYXJnbGkgbGEgc3J1dHR1cmEgZGVsIGRhdG9cclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRFbGVtZW50cyA9IG5ldyBBcnJheTxMaXN0VmFsdWVFbGVtZW50PigpO1xyXG4gICAgICAgICAgdmFyIHNlbGVjdGVkRWxlbWVudCA9IG5ldyBMaXN0VmFsdWVFbGVtZW50KCk7XHJcbiAgICAgICAgICBzZWxlY3RlZEVsZW1lbnQuSUQgPSBkYXRhWzBdWydJRCddO1xyXG4gICAgICAgICAgc2VsZWN0ZWRFbGVtZW50LkZpZWxkID0gdGhpcy5rZXlzWzFdO1xyXG4gICAgICAgICAgc2VsZWN0ZWRFbGVtZW50LktleSA9IGRhdGFbMF1bdGhpcy5rZXlzWzFdXTtcclxuICAgICAgICAgIHNlbGVjdGVkRWxlbWVudC5WYWx1ZSA9IGRhdGFbMF1bdGhpcy5rZXlzWzFdXTtcclxuXHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkRWxlbWVudHMucHVzaChzZWxlY3RlZEVsZW1lbnQpO1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlLmVtaXQoW3RoaXMuc2VsZWN0ZWRFbGVtZW50c10pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgIH0gZWxzZSBpZiAoZGF0YS5sZW5ndGggPT0gMSAmJiB0aGlzLmZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlckNvbHVtbkZvcmNlICE9IG51bGwpe1xyXG4gICAgICAgIEdsb2JhbFNlcnZpY2UuZGVidWdMb2coXCJobyB1bmEgc29sYSByaXNwb3N0YSBlZCBobyB1bmEgY29sb25uYSBkYSBjdWkgw6ggZm9yemF0byBpbCByZWN1cGVybyBkZWwgdmFsb3JlXCIpO1xyXG5cclxuICAgICAgICB0aGlzLnNob3dUYWJsZSA9IGZhbHNlO1xyXG5cclxuXHJcbiAgICAgICAgaWYgKCF0aGlzLmlzTXVsdGlzZWxlY3Qpe1xyXG4gICAgICAgICAgR2xvYmFsU2VydmljZS5kZWJ1Z0xvZyhcIm5vbiBtdWx0aXNlbGVjdFwiKTtcclxuICAgICAgICAgIC8vIE5vbiDDqCBtdWx0aXNlbGVjdFxyXG4gICAgICAgICAgdGhpcy5yZWNvcmRbdGhpcy5maWVsZC5OYW1lXSA9IGRhdGFbMF1bdGhpcy5maWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJDb2x1bW5Gb3JjZS5rZXldO1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlLmVtaXQoW2RhdGFbMF1bdGhpcy5rZXlzWzFdLGRhdGFbMF1bJ0lEJ11dXSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIEdsb2JhbFNlcnZpY2UuZGVidWdMb2coXCJtdWx0aXNlbGVjdFwiKTtcclxuICAgICAgICAgIC8vIEUnIHVuIGVsZW5jbyBnZW5lcmljbyBkYmdldHRlciBtdWx0aXNlbGVjdFxyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZEVsZW1lbnRzID0gbmV3IEFycmF5PExpc3RWYWx1ZUVsZW1lbnQ+KCk7XHJcbiAgICAgICAgICB2YXIgc2VsZWN0ZWRFbGVtZW50ID0gbmV3IExpc3RWYWx1ZUVsZW1lbnQoKTtcclxuICAgICAgICAgIHNlbGVjdGVkRWxlbWVudC5JRCA9IGRhdGFbMF1bJ0lEJ107XHJcbiAgICAgICAgICBzZWxlY3RlZEVsZW1lbnQuRmllbGQgPSB0aGlzLmZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlckNvbHVtbkZvcmNlLmtleTtcclxuICAgICAgICAgIHNlbGVjdGVkRWxlbWVudC5LZXkgPSBkYXRhWzBdW3RoaXMuZmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVyQ29sdW1uRm9yY2Uua2V5XTtcclxuICAgICAgICAgIHNlbGVjdGVkRWxlbWVudC5WYWx1ZSA9IGRhdGFbMF1bdGhpcy5maWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJDb2x1bW5Gb3JjZS5rZXldO1xyXG5cclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRFbGVtZW50cy5wdXNoKHNlbGVjdGVkRWxlbWVudCk7XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkVmFsdWUuZW1pdChbdGhpcy5zZWxlY3RlZEVsZW1lbnRzXSk7ICAgICAgICAgIFxyXG4gICAgICAgIH1cclxuXHJcblxyXG4gICAgICAgIFxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIEdsb2JhbFNlcnZpY2UuZGVidWdMb2coXCJobyBwacO5IGRpIHVuYSByaXNwb3N0YVwiKTtcclxuXHJcbiAgICAgICAgdGhpcy5tdWx0aXBsZVZhbHVlc1RvQ2hvb3NlID0gdHJ1ZTtcclxuICAgICAgICBpZiAoYmVoYXZpb3Vycy5pbmRleE9mKFwibWFuYWdlLXF1ZXN0aW9uLWluLWRiZ2V0dGVyXCIpICE9IC0xKXtcclxuICAgICAgICAgIHRoaXMuc2hvd1RhYmxlID0gdHJ1ZTtcclxuICAgICAgICB9IGVsc2Uge1xyXG5cclxuICAgICAgICAgIGlmICghdGhpcy5EaXJlY3RseU9wZW5UYWJsZSl7XHJcbiAgICAgICAgICAgIHRoaXMuc2hvd1RhYmxlID0gZmFsc2U7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnNob3dUYWJsZSA9IHRydWU7ICAgICAgICAgIFxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICB9XHJcblxyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBcclxuICAgIH1cclxuICAgIFxyXG4gIH1cclxuXHJcbiAgc2VsZWN0VmFsdWUocm93LCBrZXkpe1xyXG4gICAgdmFyIGtleXVzZWQ7XHJcbiAgICB2YXIgdmFsdWUgPSByb3dba2V5XTtcclxuXHJcbiAgICB2YXIgdmFsdWVUb0JlU2V0ID0gXCJcIjtcclxuXHJcbiAgICBpZiAoIXRoaXMuZmllbGQuSXNNdWx0aUNob2ljaGUpe1xyXG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGVkRWxlbWVudHMubGVuZ3RoID4gMCl7XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkRWxlbWVudHMuZm9yRWFjaCgoc2VsZWN0ZWRFbGVtZW50LCBpbmRleCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkRWxlbWVudHMuc3BsaWNlKGluZGV4LDEpO1xyXG5cclxuICAgICAgICAgICAgdmFyIGNvcnJlc3BvbmRpbmdDb2wgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImNvbC1cIitzZWxlY3RlZEVsZW1lbnQuS2V5VXNlZFNWK1wiLWlkLVwiK3Jvd1snSUQnXSk7XHJcbiAgICAgICAgICAgIGlmIChjb3JyZXNwb25kaW5nQ29sID09IG51bGwpeyBjb3JyZXNwb25kaW5nQ29sID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJjb2wtXCIrc2VsZWN0ZWRFbGVtZW50LktleVNWK1wiLWlkLVwiK3Jvd1snSUQnXSk7IH1cclxuXHJcbiAgICAgICAgICAgIGlmICh0aGlzLmZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlckNvbHVtbkZvcmNlID09IG51bGwpe1xyXG4gICAgICAgICAgICAgIGNvcnJlc3BvbmRpbmdDb2wuY2xhc3NMaXN0LnJlbW92ZShcInJvdy1zZWxlY3RlZFwiKTsgICAgICAgIFxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIGNvcnJlc3BvbmRpbmdDb2wucGFyZW50RWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKFwicm93LXNlbGVjdGVkXCIpO1xyXG4gICAgICAgICAgICB9ICAgICAgICAgICAgXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRFbGVtZW50cyA9IG5ldyBBcnJheTxMaXN0VmFsdWVFbGVtZW50PigpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcblxyXG4gICAgaWYodGhpcy5maWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJDb2x1bW5Gb3JjZSA9PSBudWxsKXtcclxuICAgICAgdmFsdWVUb0JlU2V0ID0gdmFsdWU7XHJcbiAgICAgIGtleXVzZWQgPSBrZXk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAocm93Lmhhc093blByb3BlcnR5KHRoaXMuZmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVyQ29sdW1uRm9yY2Uua2V5KSl7XHJcbiAgICAgICAgdmFsdWVUb0JlU2V0ID0gcm93W3RoaXMuZmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVyQ29sdW1uRm9yY2Uua2V5XTtcclxuICAgICAgICBrZXl1c2VkID0gdGhpcy5maWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJDb2x1bW5Gb3JjZS5rZXk7XHJcbiAgICAgIH0gZWxzZSBpZiAocm93Lmhhc093blByb3BlcnR5KGtleSkpIHtcclxuICAgICAgICB2YWx1ZVRvQmVTZXQgPSByb3dba2V5XTtcclxuICAgICAgICBrZXl1c2VkID0ga2V5OyAgICAgICAgXHJcbiAgICAgIH1cclxuXHJcblxyXG4gICAgfVxyXG5cclxuICAgIGlmICh2YWx1ZVRvQmVTZXQgPT0gbnVsbCl7IHZhbHVlVG9CZVNldCA9IFwiXCI7IH1cclxuXHJcblxyXG4gICAgLy8gQ29tdW5xdWUgc2lhIGNpIHBvcnRpYW1vIGRpZXRybyBsJ0lEIGRlbGxhIHNlbGV6aW9uZSBjb24gdW4gY2FtcG8gY3VzdG9tLCBwdcOyIHNlbXByZSBzZXJ2aXJlXHJcbiAgICBpZihyb3cuaGFzT3duUHJvcGVydHkoXCJJRFwiKSl7XHJcbiAgICAgIGlmICh0aGlzLmNvbmZpZ3VyYXRpb25zLmFkZGl0aW9uYWxQYXJhbXMgPT0gbnVsbCl7IHRoaXMuY29uZmlndXJhdGlvbnMuYWRkaXRpb25hbFBhcmFtcyA9IHt9OyB9XHJcbiAgICAgIHRoaXMuY29uZmlndXJhdGlvbnMuYWRkaXRpb25hbFBhcmFtc1t0aGlzLmZpZWxkLk5hbWUrXCJfX19fSURcIl0gPSByb3dbJ0lEJ107XHJcbiAgICB9XHJcbiAgICBcclxuXHJcbiAgICAvL0VxcER5bmFtaWNNb2R1bGVEaWFsb2dTZXJ2aWNlLlN1Y2Nlc3MoXCJVbiBzb2xvIHJpc3VsdGF0byB0cm92YXRvLCDDqCBzdGF0byBpbnNlcml0byBpbiBhdXRvbWF0aWNvXCIpO1xyXG5cclxuICAgIGlmICghdGhpcy5pc011bHRpc2VsZWN0KXtcclxuICAgICAgR2xvYmFsU2VydmljZS5kZWJ1Z0xvZyhcIm5vbiBtdWx0aXNlbGVjdFwiKTtcclxuICAgICAgLy8gTm9uIMOoIG11bHRpc2VsZWN0XHJcbiAgICAgIHRoaXMucmVjb3JkW3RoaXMuZmllbGQuTmFtZV0gPSB2YWx1ZVRvQmVTZXQ7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZS5lbWl0KFt2YWx1ZVRvQmVTZXQscm93WydJRCddXSk7ICAgIFxyXG4gICAgICB0aGlzLnNob3dUYWJsZSA9IGZhbHNlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgR2xvYmFsU2VydmljZS5kZWJ1Z0xvZyhcImhvIG11bHRpc2VsZWN0XCIpO1xyXG5cclxuICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRFbGVtZW50cyAhPSBudWxsICYmICFBcnJheS5pc0FycmF5KHRoaXMuc2VsZWN0ZWRFbGVtZW50cykpeyB0aGlzLnNlbGVjdGVkRWxlbWVudHMgPSBbdGhpcy5zZWxlY3RlZEVsZW1lbnRzXTsgfVxyXG4gICAgICBpZiAodGhpcy5zZWxlY3RlZEVsZW1lbnRzID09IG51bGwpeyB0aGlzLnNlbGVjdGVkRWxlbWVudHMgPSBuZXcgQXJyYXk8TGlzdFZhbHVlRWxlbWVudD4oKTsgfVxyXG4gICAgICBcclxuXHJcbiAgICAgIGlmICh0aGlzLnNlbGVjdGVkRWxlbWVudHMuZmluZCh4ID0+IHguSUQgPT0gcm93WydJRCddKSA9PSBudWxsKXtcclxuICAgICAgICBHbG9iYWxTZXJ2aWNlLmRlYnVnTG9nKFwiaG8gcGnDuSBkaSB1bmEgcmlzcG9zdGFcIik7XHJcblxyXG4gICAgICAgIC8vIEUnIHVuIGVsZW5jbyBnZW5lcmljbyBkYmdldHRlciBtdWx0aXNlbGVjdFxyXG4gICAgICAgIHZhciBzZWxlY3RlZEVsZW1lbnQgPSBuZXcgTGlzdFZhbHVlRWxlbWVudCgpO1xyXG4gICAgICAgIHNlbGVjdGVkRWxlbWVudC5JRCA9IHJvd1snSUQnXTtcclxuICAgICAgICBzZWxlY3RlZEVsZW1lbnQuU2VsZWN0ZWQgPSB0cnVlO1xyXG4gICAgICAgIHNlbGVjdGVkRWxlbWVudC5GaWVsZCA9IGtleXVzZWQ7XHJcbiAgICAgICAgc2VsZWN0ZWRFbGVtZW50LktleSA9IHZhbHVlVG9CZVNldDtcclxuICAgICAgICBzZWxlY3RlZEVsZW1lbnQuS2V5U1YgPSBrZXk7XHJcbiAgICAgICAgc2VsZWN0ZWRFbGVtZW50LktleVVzZWRTViA9IGtleXVzZWQ7XHJcbiAgICAgICAgc2VsZWN0ZWRFbGVtZW50LlZhbHVlID0gdmFsdWVUb0JlU2V0O1xyXG5cclxuICAgICAgICB0aGlzLnNlbGVjdGVkRWxlbWVudHMucHVzaChzZWxlY3RlZEVsZW1lbnQpO1xyXG5cclxuICAgICAgICB2YXIgY29ycmVzcG9uZGluZ0NvbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiY29sLVwiK2tleXVzZWQrXCItaWQtXCIrcm93WydJRCddKTtcclxuICAgICAgICBpZiAoY29ycmVzcG9uZGluZ0NvbCA9PSBudWxsKXsgY29ycmVzcG9uZGluZ0NvbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiY29sLVwiK2tleStcIi1pZC1cIityb3dbJ0lEJ10pOyB9XHJcbiAgICAgICAgXHJcbiAgICAgICAgaWYgKHRoaXMuZmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVyQ29sdW1uRm9yY2UgPT0gbnVsbCl7XHJcbiAgICAgICAgICAgY29ycmVzcG9uZGluZ0NvbC5jbGFzc0xpc3QuYWRkKFwicm93LXNlbGVjdGVkXCIpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBjb3JyZXNwb25kaW5nQ29sLnBhcmVudEVsZW1lbnQuY2xhc3NMaXN0LmFkZChcInJvdy1zZWxlY3RlZFwiKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHZhciBpbmRleCA9IHRoaXMuc2VsZWN0ZWRFbGVtZW50cy5maW5kSW5kZXgoeCA9PiB4LklEID09IHJvd1snSUQnXSk7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZEVsZW1lbnRzLnNwbGljZShpbmRleCwxKTtcclxuXHJcbiAgICAgICAgdmFyIGNvcnJlc3BvbmRpbmdDb2wgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImNvbC1cIitrZXl1c2VkK1wiLWlkLVwiK3Jvd1snSUQnXSk7XHJcbiAgICAgICAgaWYgKGNvcnJlc3BvbmRpbmdDb2wgPT0gbnVsbCl7IGNvcnJlc3BvbmRpbmdDb2wgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImNvbC1cIitrZXkrXCItaWQtXCIrcm93WydJRCddKTsgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5maWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJDb2x1bW5Gb3JjZSA9PSBudWxsKXtcclxuICAgICAgICAgIGNvcnJlc3BvbmRpbmdDb2wuY2xhc3NMaXN0LnJlbW92ZShcInJvdy1zZWxlY3RlZFwiKTsgICAgICAgIFxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBjb3JyZXNwb25kaW5nQ29sLnBhcmVudEVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShcInJvdy1zZWxlY3RlZFwiKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICB9XHJcblxyXG5cclxuICAgICAgLy90aGlzLnNlbGVjdGVkVmFsdWUuZW1pdChbdGhpcy5zZWxlY3RlZEVsZW1lbnRzXSk7ICAgIFxyXG4gICAgICAgICAgICBcclxuICAgIH1cclxuXHJcblxyXG4gIH1cclxuXHJcbiAgcmVuZGVyU2VsZWN0ZWQoKXtcclxuXHJcbiAgICB0aGlzLnNlbGVjdGVkRWxlbWVudHMgPSB0aGlzLnJlY29yZFt0aGlzLmZpZWxkLk5hbWVdO1xyXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRFbGVtZW50cyA9PSBudWxsKXsgdGhpcy5zZWxlY3RlZEVsZW1lbnRzID0gbmV3IEFycmF5PExpc3RWYWx1ZUVsZW1lbnQ+KCk7IH1cclxuXHJcbiAgICBHbG9iYWxTZXJ2aWNlLmRlYnVnTG9nKFwicmVuZGVyU2VsZWN0ZWRcIiwgdGhpcy5zZWxlY3RlZEVsZW1lbnRzKTtcclxuXHJcbiAgICBpZiAodGhpcy5zZWxlY3RlZEVsZW1lbnRzLmxlbmd0aCA+IDApe1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRWxlbWVudHMuZm9yRWFjaCgoc2VsZWN0ZWRFbGVtZW50KSA9PiB7XHJcbiAgICAgICAgdmFyIGNvcnJlc3BvbmRpbmdDb2wgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImNvbC1cIitzZWxlY3RlZEVsZW1lbnQuRmllbGQrXCItaWQtXCIrc2VsZWN0ZWRFbGVtZW50LklEKTtcclxuICAgICAgICBpZiAoY29ycmVzcG9uZGluZ0NvbCAhPSBudWxsKSB7XHJcbiAgICAgICAgICBpZiAodGhpcy5maWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJDb2x1bW5Gb3JjZSA9PSBudWxsKXtcclxuICAgICAgICAgICAgY29ycmVzcG9uZGluZ0NvbC5jbGFzc0xpc3QuYWRkKFwicm93LXNlbGVjdGVkXCIpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgY29ycmVzcG9uZGluZ0NvbC5wYXJlbnRFbGVtZW50LmNsYXNzTGlzdC5hZGQoXCJyb3ctc2VsZWN0ZWRcIik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGNvcnJlc3BvbmRpbmdDb2wgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImNvbC1cIitzZWxlY3RlZEVsZW1lbnQuS2V5U1YrXCItaWQtXCIrc2VsZWN0ZWRFbGVtZW50LklEKTtcclxuICAgICAgICAgIGlmIChjb3JyZXNwb25kaW5nQ29sICE9IG51bGwpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuZmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVyQ29sdW1uRm9yY2UgPT0gbnVsbCl7XHJcbiAgICAgICAgICAgICAgY29ycmVzcG9uZGluZ0NvbC5jbGFzc0xpc3QuYWRkKFwicm93LXNlbGVjdGVkXCIpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIGNvcnJlc3BvbmRpbmdDb2wucGFyZW50RWxlbWVudC5jbGFzc0xpc3QuYWRkKFwicm93LXNlbGVjdGVkXCIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2UgIHtcclxuICAgICAgICAgICAgY29ycmVzcG9uZGluZ0NvbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiY29sLVwiK3NlbGVjdGVkRWxlbWVudC5LZXkrXCItaWQtXCIrc2VsZWN0ZWRFbGVtZW50LklEKTtcclxuICAgICAgICAgICAgaWYgKGNvcnJlc3BvbmRpbmdDb2wgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgIGlmICh0aGlzLmZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlckNvbHVtbkZvcmNlID09IG51bGwpe1xyXG4gICAgICAgICAgICAgICAgY29ycmVzcG9uZGluZ0NvbC5jbGFzc0xpc3QuYWRkKFwicm93LXNlbGVjdGVkXCIpO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBjb3JyZXNwb25kaW5nQ29sLnBhcmVudEVsZW1lbnQuY2xhc3NMaXN0LmFkZChcInJvdy1zZWxlY3RlZFwiKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIGNsb3NlKCl7XHJcbiAgICB0aGlzLnNlbGVjdGVkVmFsdWUuZW1pdChbXCIqKioqQ0xPU0UqKioqXCIsMF0pO1xyXG4gICAgdGhpcy5zaG93VGFibGUgPSBmYWxzZTtcclxuICB9XHJcbiAgXHJcbiAgZGVsZXRlKCl7XHJcbiAgICB0aGlzLnNlbGVjdGVkVmFsdWUuZW1pdChbbnVsbCwwXSk7XHJcbiAgICB0aGlzLnNob3dUYWJsZSA9IGZhbHNlO1xyXG4gIH0gIFxyXG5cclxuICBhY3RpdmF0ZVRhYmxlKCl7XHJcbiAgICB0aGlzLnNob3dUYWJsZSA9IHRydWU7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5yZW5kZXJTZWxlY3RlZCgpO1xyXG4gICAgfSwyMDApO1xyXG4gIH1cclxuXHJcbiAgcmVsb2FkRGF0YSgpe1xyXG4gICAgdGhpcy5kb1JlbG9hZC5lbWl0KG51bGwpO1xyXG4gIH0gIFxyXG5cclxuICBzZWxlY3RDb2x1bW4oa2V5KXtcclxuICAgIGlmICh0aGlzLmZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlckNvbHVtbkZvcmNlID09IG51bGwpe1xyXG4gICAgICB0aGlzLnNlbGVjdGVkQ29sdW1uID0ga2V5O1xyXG4gICAgICB0aGlzLm11bHRpc2VsZWN0UGhhc2UgPSAyO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY29uZmlybVNlbGVjdGlvbigpe1xyXG4gICAgdGhpcy5zZWxlY3RlZFZhbHVlLmVtaXQoW3RoaXMuc2VsZWN0ZWRFbGVtZW50c10pOyBcclxuICAgIHRoaXMuc2hvd1RhYmxlID0gZmFsc2U7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgTGlzdFZhbHVlRWxlbWVudCB7XHJcbiAgSUQ6IHN0cmluZyB8IG51bWJlcjtcclxuICBTZWxlY3RlZDogYm9vbGVhbjtcclxuICBGaWVsZDogc3RyaW5nO1xyXG4gIEtleTogc3RyaW5nO1xyXG4gIEtleVNWOiBzdHJpbmc7XHJcbiAgS2V5VXNlZFNWOiBzdHJpbmc7XHJcbiAgVmFsdWU6IHN0cmluZztcclxuXHJcbn1cclxuXHJcbi8vIE8gY29zw6wgbyBzY2hpYW50YXRvIGEgbWFub1xyXG5leHBvcnQgZW51bSBRdWVyeUVkaXRvck1vZGVFbnVtIHtcclxuICBcIkNPTkZJR1VSQVRPUlwiID0gMSxcclxuICBcIkNPTVBPU0VSXCIgPSAyLFxyXG4gIFwiUkVTVUxUXCIgPSAzXHJcbn0iLCI8ZGl2PlxyXG4gICAgPG5nLXRlbXBsYXRlIFthcHBEeW5hbWljTG9hZGVyXSBbZGF0YV09XCJRdWVyeUVkaXRvckNvbXBvbmVudFwiIChvdXQpPVwib25FeHRlcm5hbFNRTFJlc3VsdE91dCgkZXZlbnQpO1wiICpuZ0lmPVwiUXVlcnlFZGl0b3JDb21wb25lbnQgIT0gbnVsbCAmJiByZWxhdGlvbnNMb2FkZWQgJiYgcmVsb2FkXCI+PC9uZy10ZW1wbGF0ZT5cclxuPC9kaXY+XHJcblxyXG48ZGl2IGNsYXNzPVwiZmxvYXRpbmd0YWJsZSBkcmFnZ2FibGVcIiBjZGtEcmFnICpuZ0lmPVwic2hvd1RhYmxlXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImxlZnRcIj48bWF0LWljb24gKGNsaWNrKT1cImNsb3NlKClcIj5jbG9zZTwvbWF0LWljb24+PC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImxlZnRcIj48bWF0LWljb24gKGNsaWNrKT1cImRlbGV0ZSgpXCI+ZGVsZXRlPC9tYXQtaWNvbj48L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicmlnaHRcIj48bWF0LWljb24+ZHJhZ19pbmRpY2F0b3I8L21hdC1pY29uPjwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cImluZm9cIj5cclxuICAgICAgICA8c3BhbiAqbmdJZj1cIiFpc011bHRpc2VsZWN0XCI+U2VsZXppb25hIGlsIHZhbG9yZSBkYSByZWdpc3RyYXJlLjwvc3Bhbj5cclxuICAgICAgICA8c3BhbiAqbmdJZj1cImlzTXVsdGlzZWxlY3QgJiYgbXVsdGlzZWxlY3RQaGFzZSA9PSAxXCI+U2VsZXppb25hIHVuYSBjb2xvbm5hPC9zcGFuPlxyXG4gICAgICAgIDxzcGFuICpuZ0lmPVwiaXNNdWx0aXNlbGVjdCAmJiBtdWx0aXNlbGVjdFBoYXNlID09IDIgJiYgc2VsZWN0ZWRDb2x1bW4gIT0gbnVsbCAmJiBmaWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJDb2x1bW5Gb3JjZSA9PSBudWxsXCI+SGFpIHNlbGV6aW9uYXRvOiA8Yj57e3NlbGVjdGVkQ29sdW1uLnNwbGl0KFwiX19cIilbMV19fTwvYj4uPC9zcGFuPlxyXG4gICAgICAgIDxzcGFuICpuZ0lmPVwiaXNNdWx0aXNlbGVjdCAmJiBtdWx0aXNlbGVjdFBoYXNlID09IDJcIj5TZWxlemlvbmEgYWxtZW5vIHVuIGVsZW1lbnRvIHByZXNlbnRlIHNvdHRvIGFsbGEgY29sb25uYSBzZWxlemlvbmF0YTwvc3Bhbj4gICAgICAgIFxyXG4gICAgICAgIDxzcGFuICpuZ0lmPVwiaXNNdWx0aXNlbGVjdCAmJiBtdWx0aXNlbGVjdFBoYXNlID09IDIgJiYgc2VsZWN0ZWRFbGVtZW50cy5sZW5ndGggPiAwXCI+XHJcbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLWNvbmZpcm1cIiAoY2xpY2spPVwiY29uZmlybVNlbGVjdGlvbigpXCI+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWljb24gPmNoZWNrPC9tYXQtaWNvbj4gQ29uZmVybWEgc2VsZXppb25lXHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvc3Bhbj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIFxyXG4gICAgPHRhYmxlIGNsYXNzPVwidGFibGVcIiBbbmdDbGFzc109XCJ7J3RhYmxlLW5vdGZvcmNlZCc6IGZpZWxkLkZpZWxkVHlwZSAhPSBmaWVsZFR5cGVFbnVtWydFbGVuY28gZ2VuZXJpY28nXSAmJiBmaWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJDb2x1bW5Gb3JjZSA9PSBudWxsLCAndGFibGUtZm9yY2VkJzogZmllbGQuRmllbGRUeXBlICE9IGZpZWxkVHlwZUVudW1bJ0VsZW5jbyBnZW5lcmljbyddICYmIGZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlckNvbHVtbkZvcmNlICE9IG51bGwsICd0YWJsZS1tdWx0aXNlbGVjdC1ub3Rmb3JjZWQnOiBmaWVsZC5GaWVsZFR5cGUgPT0gZmllbGRUeXBlRW51bVsnRWxlbmNvIGdlbmVyaWNvJ10gICYmIGZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlckNvbHVtbkZvcmNlID09IG51bGwsICd0YWJsZS1tdWx0aXNlbGVjdC1mb3JjZWQnOiBmaWVsZC5GaWVsZFR5cGUgPT0gZmllbGRUeXBlRW51bVsnRWxlbmNvIGdlbmVyaWNvJ10gICYmIGZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlckNvbHVtbkZvcmNlICE9IG51bGx9XCI+XHJcbiAgICAgICAgPHRyPjx0aCAqbmdGb3I9XCJsZXQga2V5IG9mIGtleXM7IGxldCBmaXJzdCA9IGZpcnN0XCIgKGNsaWNrKT1cInNlbGVjdENvbHVtbihrZXkpXCIgaWQ9XCJoZWFkY29sLXt7a2V5fX1cIj5cclxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJmaXJzdFwiPnt7a2V5fX08L3NwYW4+XHJcbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWZpcnN0XCI+e3trZXkuc3BsaXQoXCJfX1wiKVsxXX19PC9zcGFuPlxyXG4gICAgICAgIDwvdGg+PC90cj5cclxuICAgICAgICA8dHIgKm5nRm9yPVwibGV0IHJvdyBvZiBkYXRhXCIgY2xhc3M9XCJyb3dzXCI+XHJcbiAgICAgICAgICAgIDx0ZCAqbmdGb3I9XCJsZXQga2V5IG9mIGtleXNcIiAoY2xpY2spPVwic2VsZWN0VmFsdWUocm93LCBrZXkpXCIgaWQ9XCJjb2wte3trZXl9fS1pZC17e3Jvd1snSUQnXX19XCI+XHJcbiAgICAgICAgICAgICAgICA8IS0tIFxyXG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJyb3dba2V5XSAhPSBudWxsICYmIHJvd1trZXldLnRvU3RyaW5nKCkubGVuZ3RoIDw9IDEwMFwiIFtpbm5lckhUTUxdPVwicm93W2tleV1cIj5cclxuXHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+IFxyXG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJyb3dba2V5XSAhPSBudWxsICYmIHJvd1trZXldLnRvU3RyaW5nKCkubGVuZ3RoID4gMTAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAge3tyb3dba2V5XSAhPSBudWxsID8gcm93W2tleV0udG9TdHJpbmcoKS5zdWJzdHJpbmcoMCwxMDApIDogJyd9fVxyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJyb3dba2V5XSAhPSBudWxsICYmIHJvd1trZXldLnRvU3RyaW5nKCkubGVuZ3RoID4gMTAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgLi4uXHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAtLT5cclxuXHJcbiAgICAgICAgICAgICAgICA8c3BhbiBbaW5uZXJIVE1MXT1cInJvd1trZXldXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgIDwvdHI+XHJcbiAgICA8L3RhYmxlPlxyXG5cclxuICAgIDwhLS0gXHJcbiAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZSB0YWJsZS1ub3Rmb3JjZWRcIiAqbmdJZj1cImZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlckNvbHVtbkZvcmNlID09IG51bGxcIj5cclxuICAgICAgICA8dHI+PHRoICpuZ0Zvcj1cImxldCBrZXkgb2Yga2V5czsgbGV0IGZpcnN0ID0gZmlyc3RcIj5cclxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJmaXJzdFwiPnt7a2V5fX08L3NwYW4+XHJcbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWZpcnN0XCI+e3trZXkuc3BsaXQoXCJfX1wiKVsxXX19PC9zcGFuPlxyXG4gICAgICAgIDwvdGg+PC90cj5cclxuICAgICAgICA8dHIgKm5nRm9yPVwibGV0IHJvdyBvZiBkYXRhXCIgY2xhc3M9XCJyb3dzXCI+XHJcbiAgICAgICAgICAgIDx0ZCAqbmdGb3I9XCJsZXQga2V5IG9mIGtleXNcIiAoY2xpY2spPVwic2VsZWN0VmFsdWVOb3RGb3JjZWQocm93W2tleV0pXCI+XHJcbiAgICAgICAgICAgICAgICB7e3Jvd1trZXldICE9IG51bGwgPyByb3dba2V5XS50b1N0cmluZygpLnN1YnN0cmluZygwLDEwMCkgOiAnJ319XHJcbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInJvd1trZXldICE9IG51bGwgJiYgcm93W2tleV0udG9TdHJpbmcoKS5sZW5ndGggPiAxMDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAuLi5cclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICA8L3RyPlxyXG4gICAgPC90YWJsZT5cclxuXHJcbiAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZSB0YWJsZS1mb3JjZWRcIiAqbmdJZj1cImZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlckNvbHVtbkZvcmNlICE9IG51bGxcIj5cclxuICAgICAgICA8dHI+PHRoICpuZ0Zvcj1cImxldCBrZXkgb2Yga2V5czsgbGV0IGZpcnN0ID0gZmlyc3RcIj5cclxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJmaXJzdFwiPnt7a2V5fX08L3NwYW4+XHJcbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWZpcnN0XCI+e3trZXkuc3BsaXQoXCJfX1wiKVsxXX19PC9zcGFuPlxyXG4gICAgICAgIDwvdGg+PC90cj5cclxuICAgICAgICA8dHIgKm5nRm9yPVwibGV0IHJvdyBvZiBkYXRhXCIgY2xhc3M9XCJyb3dzXCIgKGNsaWNrKT1cInNlbGVjdFZhbHVlRm9yY2VkKHJvdylcIj5cclxuICAgICAgICAgICAgPHRkICpuZ0Zvcj1cImxldCBrZXkgb2Yga2V5c1wiPlxyXG4gICAgICAgICAgICAgICAge3tyb3dba2V5XSAhPSBudWxsID8gcm93W2tleV0udG9TdHJpbmcoKS5zdWJzdHJpbmcoMCwxMDApIDogJyd9fVxyXG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJyb3dba2V5XSAhPSBudWxsICYmIHJvd1trZXldLnRvU3RyaW5nKCkubGVuZ3RoID4gMTAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgLi4uXHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgPC90cj5cclxuICAgIDwvdGFibGU+XHJcbiAgICAtLT5cclxuXHJcbjwvZGl2PlxyXG5cclxuPHNwYW4gKm5nSWY9XCJ2YWx1ZSAhPSBudWxsXCI+e3t2YWx1ZX19PC9zcGFuPlxyXG5cclxuPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tYXJyb3ctZG93blwiIChjbGljayk9XCJhY3RpdmF0ZVRhYmxlKClcIiAqbmdJZj1cIm11bHRpcGxlVmFsdWVzVG9DaG9vc2VcIj5cclxuICAgIDxtYXQtaWNvbj5rZXlib2FyZF9hcnJvd19kb3duPC9tYXQtaWNvbj5cclxuPC9idXR0b24+XHJcbjxidXR0b24gY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLWFycm93LWRvd25cIiAoY2xpY2spPVwicmVsb2FkRGF0YSgpXCIgKm5nSWY9XCJmaWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJIYXNSZXNldEJ1dHRvblwiPlxyXG4gICAgPG1hdC1pY29uPmxvb3A8L21hdC1pY29uPlxyXG48L2J1dHRvbj4iXX0=
|
|
@@ -5904,6 +5904,24 @@ class DbgetterComponent {
|
|
|
5904
5904
|
var keyused;
|
|
5905
5905
|
var value = row[key];
|
|
5906
5906
|
var valueToBeSet = "";
|
|
5907
|
+
if (!this.field.IsMultiChoiche) {
|
|
5908
|
+
if (this.selectedElements.length > 0) {
|
|
5909
|
+
this.selectedElements.forEach((selectedElement, index) => {
|
|
5910
|
+
this.selectedElements.splice(index, 1);
|
|
5911
|
+
var correspondingCol = document.getElementById("col-" + selectedElement.KeyUsedSV + "-id-" + row['ID']);
|
|
5912
|
+
if (correspondingCol == null) {
|
|
5913
|
+
correspondingCol = document.getElementById("col-" + selectedElement.KeySV + "-id-" + row['ID']);
|
|
5914
|
+
}
|
|
5915
|
+
if (this.field.DataGetter.DataGetterColumnForce == null) {
|
|
5916
|
+
correspondingCol.classList.remove("row-selected");
|
|
5917
|
+
}
|
|
5918
|
+
else {
|
|
5919
|
+
correspondingCol.parentElement.classList.remove("row-selected");
|
|
5920
|
+
}
|
|
5921
|
+
});
|
|
5922
|
+
this.selectedElements = new Array();
|
|
5923
|
+
}
|
|
5924
|
+
}
|
|
5907
5925
|
if (this.field.DataGetter.DataGetterColumnForce == null) {
|
|
5908
5926
|
valueToBeSet = value;
|
|
5909
5927
|
keyused = key;
|
|
@@ -5938,6 +5956,9 @@ class DbgetterComponent {
|
|
|
5938
5956
|
}
|
|
5939
5957
|
else {
|
|
5940
5958
|
GlobalService.debugLog("ho multiselect");
|
|
5959
|
+
if (this.selectedElements != null && !Array.isArray(this.selectedElements)) {
|
|
5960
|
+
this.selectedElements = [this.selectedElements];
|
|
5961
|
+
}
|
|
5941
5962
|
if (this.selectedElements == null) {
|
|
5942
5963
|
this.selectedElements = new Array();
|
|
5943
5964
|
}
|
|
@@ -6210,6 +6231,9 @@ class ListValueDbgTemplateComponent {
|
|
|
6210
6231
|
}
|
|
6211
6232
|
ngOnInit() {
|
|
6212
6233
|
if (this.record[this.field.Name] != null) {
|
|
6234
|
+
if (!Array.isArray(this.record[this.field.Name])) {
|
|
6235
|
+
this.record[this.field.Name] = [this.record[this.field.Name]];
|
|
6236
|
+
}
|
|
6213
6237
|
this.record[this.field.Name].forEach(element => {
|
|
6214
6238
|
var pushElement = new ListValueElement();
|
|
6215
6239
|
pushElement.ID = element.ID;
|