@cqa-lib/cqa-ui 1.1.289 → 1.1.291
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/dynamic-select/dynamic-select-field.component.mjs +7 -1
- package/esm2020/lib/filters/dynamic-filter/dynamic-filter.component.mjs +8 -1
- package/esm2020/lib/templates/table-template.component.mjs +38 -7
- package/esm2020/lib/test-case-details/condition-step/condition-step.component.mjs +159 -21
- package/fesm2015/cqa-lib-cqa-ui.mjs +202 -27
- package/fesm2015/cqa-lib-cqa-ui.mjs.map +1 -1
- package/fesm2020/cqa-lib-cqa-ui.mjs +206 -25
- package/fesm2020/cqa-lib-cqa-ui.mjs.map +1 -1
- package/lib/templates/table-template.component.d.ts +2 -1
- package/lib/test-case-details/condition-step/condition-step.component.d.ts +14 -2
- package/package.json +1 -1
|
@@ -181,6 +181,13 @@ export class DynamicFilterComponent {
|
|
|
181
181
|
if (ctrl instanceof FormGroup) {
|
|
182
182
|
ctrl.get('start')?.setValue(undefined);
|
|
183
183
|
ctrl.get('end')?.setValue(undefined);
|
|
184
|
+
// Clear the date range picker display model
|
|
185
|
+
if (this.ngxDateRangeByKey[key]) {
|
|
186
|
+
this.ngxDateRangeByKey[key] = {
|
|
187
|
+
startDate: null,
|
|
188
|
+
endDate: null
|
|
189
|
+
};
|
|
190
|
+
}
|
|
184
191
|
this.invokeDateRangeChange(key);
|
|
185
192
|
}
|
|
186
193
|
else {
|
|
@@ -424,4 +431,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
|
|
|
424
431
|
type: ViewChildren,
|
|
425
432
|
args: [DynamicSelectFieldComponent]
|
|
426
433
|
}] } });
|
|
427
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1maWx0ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9maWx0ZXJzL2R5bmFtaWMtZmlsdGVyL2R5bmFtaWMtZmlsdGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvZmlsdGVycy9keW5hbWljLWZpbHRlci9keW5hbWljLWZpbHRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQWEsTUFBTSxFQUFpQixZQUFZLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDbkosT0FBTyxFQUFlLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUdyRSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQzs7Ozs7Ozs7QUFzRGxHLE1BQU0sT0FBTyxzQkFBc0I7SUFrQmpDLFlBQTZCLEVBQWU7UUFBZixPQUFFLEdBQUYsRUFBRSxDQUFhO1FBakJuQyxXQUFNLEdBQXdCLEVBQUUsQ0FBQztRQUNqQyxVQUFLLEdBQXdCLEVBQUUsQ0FBQztRQUNoQyxvQkFBZSxHQUFZLElBQUksQ0FBQztRQUNoQyxpQkFBWSxHQUFnQyxRQUFRLENBQUM7UUFDcEQsbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFBdUIsQ0FBQztRQUN6RCxtQkFBYyxHQUFHLElBQUksWUFBWSxFQUF1QixDQUFDO1FBQ3pELGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUN2Qyx1QkFBa0IsR0FBRyxJQUFJLFlBQVksRUFBdUIsQ0FBQztRQUM3RCx1QkFBa0IsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBRXhELFNBQUksR0FBYyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNwQyxZQUFPLEdB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R0FHckIsTUFBTTtzQkFBZCxLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0ksY0FBYztzQkFBdkIsTUFBTTtnQkFDRyxjQUFjO3NCQUF2QixNQUFNO2dCQUNHLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csa0JBQWtCO3NCQUEzQixNQUFNO2dCQUNHLGtCQUFrQjtzQkFBM0IsTUFBTTtnQkFPb0MsZ0JBQWdCO3NCQUExRCxZQUFZO3VCQUFDLDJCQUEyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uQ2hhbmdlcywgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzLCBWaWV3Q2hpbGRyZW4sIFF1ZXJ5TGlzdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Db250cm9sLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXREYXRlcGlja2VySW5wdXRFdmVudCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RhdGVwaWNrZXInO1xuaW1wb3J0IHsgRHluYW1pY1NlbGVjdEZpZWxkQ29uZmlnIH0gZnJvbSAnLi4vLi4vZHluYW1pYy1zZWxlY3QvZHluYW1pYy1zZWxlY3QtZmllbGQuY29tcG9uZW50JztcbmltcG9ydCB7IER5bmFtaWNTZWxlY3RGaWVsZENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2R5bmFtaWMtc2VsZWN0L2R5bmFtaWMtc2VsZWN0LWZpZWxkLmNvbXBvbmVudCc7XG5cbnR5cGUgRmlsdGVyVHlwZSA9ICdzZWxlY3QnIHwgJ2RhdGUtcmFuZ2UtcGlja2VyJztcblxuZXhwb3J0IGludGVyZmFjZSBEeW5hbWljRmlsdGVyT3B0aW9uIHtcbiAgaWQ/OiBudW1iZXIgfCBzdHJpbmc7XG4gIG5hbWU/OiBzdHJpbmc7XG4gIHZhbHVlPzogYW55O1xuICBsYWJlbD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEeW5hbWljRmlsdGVySXRlbSB7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIHBsYWNlaG9sZGVyPzogc3RyaW5nO1xuICB0eXBlOiBGaWx0ZXJUeXBlO1xuICBrZXk6IHN0cmluZztcbiAgb3BlbnM/OiAnbGVmdCcgfCAncmlnaHQnIHwgJ2NlbnRlcic7XG4gIGRyb3BzPzogJ2Rvd24nIHwgJ3VwJyB8ICdhdXRvJztcbiAgb3B0aW9ucz86IER5bmFtaWNGaWx0ZXJPcHRpb25bXTtcbiAgbXVsdGlwbGU/OiBib29sZWFuO1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG4gIGhpZGRlbj86IGJvb2xlYW47XG4gIHNlYXJjaGFibGU/OiBib29sZWFuO1xuICBvcHRpb25TdHlsZT86ICdjaGVja21hcmsnIHwgJ2NoZWNrYm94JztcbiAgc2hvd1NlbGVjdEFsbD86IGJvb2xlYW47XG4gIHNlbGVjdEFsbExhYmVsPzogc3RyaW5nO1xuICBzZWxlY3RlZFZhbHVlPzogYW55IHwgYW55W107XG4gIC8vIFNlcnZlci1kcml2ZW4gc2VsZWN0IHN1cHBvcnQgKHBhc3N0aHJvdWdoIHRvIGNxYS1keW5hbWljLXNlbGVjdClcbiAgc2VydmVyU2VhcmNoPzogYm9vbGVhbjtcbiAgLyoqIE1vcmUgcmVzdWx0cyBhdmFpbGFibGUgc2VydmVyLXNpZGUgZm9yIGluZmluaXRlIHNjcm9sbCAqL1xuICBoYXNNb3JlPzogYm9vbGVhbjtcbiAgLyoqIEV4dGVybmFsIGxvYWRpbmcgc3RhdGUgZm9yIGFzeW5jIGZldGNoaW5nICovXG4gIGlzTG9hZGluZz86IGJvb2xlYW47XG4gIC8qKiBDYWxsYmFjayB3aGVuIHNlYXJjaCB0ZXh0IGNoYW5nZXMgKHNlcnZlciBtb2RlKSAqL1xuICBvblNlYXJjaD86IChxdWVyeTogc3RyaW5nKSA9PiB2b2lkO1xuICAvKiogQ2FsbGJhY2sgd2hlbiBtb3JlIGRhdGEgaXMgcmVxdWVzdGVkIChpbmZpbml0ZSBzY3JvbGwpICovXG4gIG9uTG9hZE1vcmU/OiAocXVlcnk/OiBzdHJpbmcpID0+IHZvaWQ7XG4gIHNlbGVjdGVkU3RhcnREYXRlPzogRGF0ZSB8IHN0cmluZztcbiAgc2VsZWN0ZWRFbmREYXRlPzogRGF0ZSB8IHN0cmluZztcbiAgb25EYXRlQ2hhbmdlPzogKHZhbHVlOiB7IHN0YXJ0OiBEYXRlIHwgbnVsbDsgZW5kOiBEYXRlIHwgbnVsbCB9LCBldmVudD86IE1hdERhdGVwaWNrZXJJbnB1dEV2ZW50PERhdGU+IHwgRXZlbnQpID0+IHZvaWQ7XG4gIHBhcmVudEVsPzogc3RyaW5nIHwgSFRNTEVsZW1lbnQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRHluYW1pY0ZpbHRlclZhbHVlcyB7XG4gIFtrZXk6IHN0cmluZ106IGFueTtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY3FhLWR5bmFtaWMtZmlsdGVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2R5bmFtaWMtZmlsdGVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGhvc3Q6IHsgY2xhc3M6ICdjcWEtdWktcm9vdCcgfVxufSlcbmV4cG9ydCBjbGFzcyBEeW5hbWljRmlsdGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAgQElucHV0KCkgY29uZmlnOiBEeW5hbWljRmlsdGVySXRlbVtdID0gW107XG4gIEBJbnB1dCgpIG1vZGVsOiBEeW5hbWljRmlsdGVyVmFsdWVzID0ge307XG4gIEBJbnB1dCgpIHNob3dGaWx0ZXJQYW5lbDogYm9vbGVhbiA9IHRydWU7XG4gIEBJbnB1dCgpIGJ1dHRvbkxheW91dDogJ2xlZnQnIHwgJ3JpZ2h0JyB8ICdib3R0b20nID0gJ2JvdHRvbSc7XG4gIEBPdXRwdXQoKSBmaWx0ZXJzQXBwbGllZCA9IG5ldyBFdmVudEVtaXR0ZXI8RHluYW1pY0ZpbHRlclZhbHVlcz4oKTtcbiAgQE91dHB1dCgpIGZpbHRlcnNDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxEeW5hbWljRmlsdGVyVmFsdWVzPigpO1xuICBAT3V0cHV0KCkgcmVzZXRBY3Rpb24gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBPdXRwdXQoKSBvbkFwcGx5RmlsdGVyQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPER5bmFtaWNGaWx0ZXJWYWx1ZXM+KCk7XG4gIEBPdXRwdXQoKSBvblJlc2V0RmlsdGVyQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgZm9ybTogRm9ybUdyb3VwID0gdGhpcy5mYi5ncm91cCh7fSk7XG4gIG1heERhdGUgPSBuZXcgRGF0ZSgpO1xuICBzZWFyY2hUZXh0QnlLZXk6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcbiAgcHJpdmF0ZSBzZWxlY3RPdXRzaWRlQ2xlYW51cCA9IG5ldyBNYXA8YW55LCAoKSA9PiB2b2lkPigpO1xuICBoYXNTZWxlY3RlZEZpbHRlcnMgPSBmYWxzZTtcbiAgQFZpZXdDaGlsZHJlbihEeW5hbWljU2VsZWN0RmllbGRDb21wb25lbnQpIHNlbGVjdENvbXBvbmVudHM/OiBRdWVyeUxpc3Q8RHluYW1pY1NlbGVjdEZpZWxkQ29tcG9uZW50PjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGZiOiBGb3JtQnVpbGRlcikge1xuICAgIC8vIEVuc3VyZSBtYXhEYXRlIGlzIHRoZSBlbmQgb2YgdG9kYXksIHNvIGFueSBmdXR1cmUgZGF0ZXMgYXJlIGRpc2FsbG93ZWRcbiAgICB0aGlzLm1heERhdGUgPSB0aGlzLmVuZE9mRGF5KG5ldyBEYXRlKCkpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzWydjb25maWcnXSB8fCBjaGFuZ2VzWydtb2RlbCddKSB7XG4gICAgICB0aGlzLmJ1aWxkRm9ybSgpO1xuICAgIH1cbiAgfVxuXG4gIG9uRGF0ZUNoYW5nZShldmVudDogTWF0RGF0ZXBpY2tlcklucHV0RXZlbnQ8RGF0ZT4gfCBFdmVudCwga2V5OiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmludm9rZURhdGVSYW5nZUNoYW5nZShrZXksIGV2ZW50KTtcbiAgfVxuXG4gIC8vIE5HWCBEYXRlUmFuZ2VQaWNrZXIgaW50ZWdyYXRpb25cbiAgbmd4RGF0ZVJhbmdlQnlLZXk6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fTtcbiAgbmd4UmFuZ2VzOiBhbnkgPSB7fTsgLy8gVXNpbmcgJ2FueScgdG8gYXZvaWQgRGF5anMgdHlwZSBtaXNtYXRjaCAtIGxpYnJhcnkgYWNjZXB0cyBEYXRlIG9iamVjdHMgYXQgcnVudGltZVxuICBuZ3hMb2NhbGUgPSB7IGN1c3RvbVJhbmdlTGFiZWw6ICdDdXN0b20gcmFuZ2UnIH07XG4gIC8vIERpc2FibGUgYWxsIGRhdGVzIGFmdGVyIHRvZGF5IGluIHRoZSBuZ3ggZGF0ZXBpY2tlclxuICBkaXNhYmxlRnV0dXJlRGF0ZXMgPSAobTogYW55KTogYm9vbGVhbiA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGQ6IERhdGUgPSBtICYmIHR5cGVvZiBtLnRvRGF0ZSA9PT0gJ2Z1bmN0aW9uJyA/IG0udG9EYXRlKCkgOiBuZXcgRGF0ZShtKTtcbiAgICAgIHJldHVybiBkLmdldFRpbWUoKSA+IHRoaXMubWF4RGF0ZS5nZXRUaW1lKCk7XG4gICAgfSBjYXRjaCB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9O1xuICBvbk5neERhdGVzVXBkYXRlZChlOiBhbnksIGtleTogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgZ3JvdXAgPSB0aGlzLmdldERhdGVHcm91cChrZXkpO1xuICAgIGlmICghZ3JvdXApIHJldHVybjtcbiAgICBjb25zdCBjbGFtcCA9IChkOiBEYXRlIHwgbnVsbCkgPT4gKGQgJiYgZC5nZXRUaW1lKCkgPiB0aGlzLm1heERhdGUuZ2V0VGltZSgpID8gdGhpcy5tYXhEYXRlIDogZCk7XG4gICAgY29uc3Qgc3RhcnRSYXcgPSBlPy5zdGFydERhdGUgPyAodHlwZW9mIGUuc3RhcnREYXRlLnRvRGF0ZSA9PT0gJ2Z1bmN0aW9uJyA/IGUuc3RhcnREYXRlLnRvRGF0ZSgpIDogbmV3IERhdGUoZS5zdGFydERhdGUpKSA6IG51bGw7XG4gICAgY29uc3QgZW5kUmF3ID0gZT8uZW5kRGF0ZSA/ICh0eXBlb2YgZS5lbmREYXRlLnRvRGF0ZSA9PT0gJ2Z1bmN0aW9uJyA/IGUuZW5kRGF0ZS50b0RhdGUoKSA6IG5ldyBEYXRlKGUuZW5kRGF0ZSkpIDogbnVsbDtcbiAgICBjb25zdCBzdGFydCA9IGNsYW1wKHN0YXJ0UmF3KTtcbiAgICBjb25zdCBlbmQgPSBjbGFtcChlbmRSYXcpO1xuICAgIGdyb3VwLnBhdGNoVmFsdWUoeyBzdGFydCwgZW5kIH0sIHsgZW1pdEV2ZW50OiB0cnVlIH0pO1xuICAgIGNvbnN0IHNlcmlhbGl6ZWQgPSB0aGlzLnNlcmlhbGl6ZSgpO1xuICAgIHRoaXMuaGFzU2VsZWN0ZWRGaWx0ZXJzID0gT2JqZWN0LmtleXMoc2VyaWFsaXplZCkubGVuZ3RoID4gMDtcbiAgICBpZiAoc3RhcnQgJiYgZW5kICYmIGdyb3VwLnZhbGlkKSB7XG4gICAgICB0aGlzLmFwcGx5KCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZmlsdGVyc0NoYW5nZWQuZW1pdChzZXJpYWxpemVkKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkRm9ybSgpOiB2b2lkIHtcbiAgICBjb25zdCBjdHJsczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuICAgICh0aGlzLmNvbmZpZyB8fCBbXSkuZm9yRWFjaChjID0+IHtcbiAgICAgIGlmIChjLmhpZGRlbikgcmV0dXJuO1xuICAgICAgaWYgKGMudHlwZSA9PT0gJ2RhdGUtcmFuZ2UtcGlja2VyJykge1xuICAgICAgICBjb25zdCBpbml0aWFsUmFuZ2UgPSB0aGlzLmdldEluaXRpYWxEYXRlUmFuZ2VWYWx1ZShjKTtcbiAgICAgICAgY3RybHNbYy5rZXldID0gdGhpcy5mYi5ncm91cCh7XG4gICAgICAgICAgc3RhcnQ6IG5ldyBGb3JtQ29udHJvbChpbml0aWFsUmFuZ2Uuc3RhcnQpLFxuICAgICAgICAgIGVuZDogbmV3IEZvcm1Db250cm9sKGluaXRpYWxSYW5nZS5lbmQpLFxuICAgICAgICB9KTtcbiAgICAgICAgLy8gaW5pdGlhbGl6ZSBuZ3ggbW9kZWwgZGlzcGxheVxuICAgICAgICB0aGlzLm5neERhdGVSYW5nZUJ5S2V5W2Mua2V5XSA9IHtcbiAgICAgICAgICBzdGFydERhdGU6IGluaXRpYWxSYW5nZS5zdGFydCB8fCBudWxsLFxuICAgICAgICAgIGVuZERhdGU6IGluaXRpYWxSYW5nZS5lbmQgfHwgbnVsbFxuICAgICAgICB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgaW5pdGlhbCA9IHRoaXMucmVzb2x2ZUluaXRpYWxTZWxlY3RWYWx1ZShjKTtcbiAgICAgICAgaWYgKGMubXVsdGlwbGUpIHtcbiAgICAgICAgICBjb25zdCB2YWx1ZSA9IEFycmF5LmlzQXJyYXkoaW5pdGlhbCkgPyBpbml0aWFsIDogKGluaXRpYWwgIT0gbnVsbCA/IFtpbml0aWFsXSA6IFtdKTtcbiAgICAgICAgICBjdHJsc1tjLmtleV0gPSBuZXcgRm9ybUNvbnRyb2wodmFsdWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGN0cmxzW2Mua2V5XSA9IG5ldyBGb3JtQ29udHJvbCh0aGlzLmNvZXJjZVRvU2luZ2xlVmFsdWUoaW5pdGlhbCkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5mb3JtID0gdGhpcy5mYi5ncm91cChjdHJscyk7XG4gICAgLy8gaW5pdGlhbGl6ZSBhcHBseSBidXR0b24gc3RhdGUgYmFzZWQgb24gaW5pdGlhbCB2YWx1ZXNcbiAgICB0aGlzLmhhc1NlbGVjdGVkRmlsdGVycyA9IE9iamVjdC5rZXlzKHRoaXMuc2VyaWFsaXplKCkpLmxlbmd0aCA+IDA7XG4gICAgLy8gYnVpbGQgY29tbW9uIHJhbmdlcyBmb3Igbmd4IGRhdGVwaWNrZXJcbiAgICB0aGlzLm5neFJhbmdlcyA9IHRoaXMuYnVpbGROZ3hSYW5nZXMoKTtcbiAgICB0aGlzLmZvcm0udmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICBjb25zdCBzZXJpYWxpemVkID0gdGhpcy5zZXJpYWxpemUoKTtcbiAgICAgIHRoaXMuaGFzU2VsZWN0ZWRGaWx0ZXJzID0gT2JqZWN0LmtleXMoc2VyaWFsaXplZCkubGVuZ3RoID4gMDtcbiAgICAgIHRoaXMuZmlsdGVyc0NoYW5nZWQuZW1pdChzZXJpYWxpemVkKTtcbiAgICB9KTtcbiAgfVxuXG4gIG9uU2VsZWN0T3BlbmVkQ2hhbmdlKG9wZW5lZDogYm9vbGVhbiwgc2VsZWN0OiBhbnkpOiB2b2lkIHtcbiAgICBpZiAob3BlbmVkKSB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgY29uc3Qgb25Eb2NEb3duID0gKGU6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgICAgICBjb25zdCBwYW5lbCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5jZGstb3ZlcmxheS1wYW5lIC5tYXQtc2VsZWN0LXBhbmVsJykgYXMgSFRNTEVsZW1lbnQgfCBudWxsO1xuICAgICAgICAgIGNvbnN0IHRhcmdldCA9IGUudGFyZ2V0IGFzIE5vZGUgfCBudWxsO1xuICAgICAgICAgIGNvbnN0IG9yaWdpbkVsID0gKHNlbGVjdD8uX2VsZW1lbnRSZWY/Lm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQpIHx8IG51bGw7XG4gICAgICAgICAgY29uc3QgaW5zaWRlUGFuZWwgPSAhIShwYW5lbCAmJiB0YXJnZXQgJiYgcGFuZWwuY29udGFpbnModGFyZ2V0KSk7XG4gICAgICAgICAgY29uc3QgaW5zaWRlT3JpZ2luID0gISEob3JpZ2luRWwgJiYgdGFyZ2V0ICYmIG9yaWdpbkVsLmNvbnRhaW5zKHRhcmdldCkpO1xuICAgICAgICAgIGlmICghaW5zaWRlUGFuZWwgJiYgIWluc2lkZU9yaWdpbikge1xuICAgICAgICAgICAgc2VsZWN0LmNsb3NlKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCBvbkRvY0Rvd24sIHRydWUpO1xuICAgICAgICB0aGlzLnNlbGVjdE91dHNpZGVDbGVhbnVwLnNldChzZWxlY3QsICgpID0+IGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIG9uRG9jRG93biwgdHJ1ZSkpO1xuICAgICAgfSwgMCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGNsZWFudXAgPSB0aGlzLnNlbGVjdE91dHNpZGVDbGVhbnVwLmdldChzZWxlY3QpO1xuICAgICAgaWYgKGNsZWFudXApIGNsZWFudXAoKTtcbiAgICAgIHRoaXMuc2VsZWN0T3V0c2lkZUNsZWFudXAuZGVsZXRlKHNlbGVjdCk7XG4gICAgfVxuICB9XG5cbiAgb25TZWFyY2goa2V5OiBzdHJpbmcsIHRleHQ6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuc2VhcmNoVGV4dEJ5S2V5W2tleV0gPSAodGV4dCB8fCAnJykudG9Mb3dlckNhc2UoKTtcbiAgfVxuXG4gIGZpbHRlcmVkT3B0aW9ucyhpdGVtOiBEeW5hbWljRmlsdGVySXRlbSk6IER5bmFtaWNGaWx0ZXJPcHRpb25bXSB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IGl0ZW0/Lm9wdGlvbnMgfHwgW107XG4gICAgY29uc3QgcSA9ICh0aGlzLnNlYXJjaFRleHRCeUtleVtpdGVtLmtleV0gfHwgJycpLnRyaW0oKTtcbiAgICBpZiAoIXEpIHJldHVybiBvcHRpb25zO1xuICAgIHJldHVybiBvcHRpb25zLmZpbHRlcihvcHQgPT4ge1xuICAgICAgY29uc3QgbmFtZSA9IChvcHQubmFtZSA/PyBvcHQubGFiZWwgPz8gU3RyaW5nKG9wdC52YWx1ZSA/PyAnJykpLnRvTG93ZXJDYXNlKCk7XG4gICAgICByZXR1cm4gbmFtZS5pbmNsdWRlcyhxKTtcbiAgICB9KTtcbiAgfVxuXG4gIGdldERhdGVHcm91cChrZXk6IHN0cmluZyk6IEZvcm1Hcm91cCB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybS5nZXQoa2V5KSBhcyBGb3JtR3JvdXA7XG4gIH1cblxuICBnZXRTZWxlY3RDb25maWcoaXRlbTogRHluYW1pY0ZpbHRlckl0ZW0pOiBEeW5hbWljU2VsZWN0RmllbGRDb25maWcge1xuICAgIHJldHVybiB7XG4gICAgICBrZXk6IGl0ZW0ua2V5LFxuICAgICAgbGFiZWw6IGl0ZW0ubGFiZWwsXG4gICAgICBwbGFjZWhvbGRlcjogaXRlbS5wbGFjZWhvbGRlcixcbiAgICAgIGRpc2FibGVkOiBpdGVtLmRpc2FibGVkLFxuICAgICAgbXVsdGlwbGU6IGl0ZW0ubXVsdGlwbGUsXG4gICAgICBzZWFyY2hhYmxlOiBpdGVtLnNlYXJjaGFibGUsXG4gICAgICBvcHRpb25TdHlsZTogaXRlbS5vcHRpb25TdHlsZSxcbiAgICAgIHNob3dTZWxlY3RBbGw6IGl0ZW0uc2hvd1NlbGVjdEFsbCxcbiAgICAgIHNlbGVjdEFsbExhYmVsOiBpdGVtLnNlbGVjdEFsbExhYmVsLFxuICAgICAgc2VsZWN0ZWRWYWx1ZTogaXRlbS5zZWxlY3RlZFZhbHVlLFxuICAgICAgc2VydmVyU2VhcmNoOiBpdGVtLnNlcnZlclNlYXJjaCxcbiAgICAgIGhhc01vcmU6IGl0ZW0uaGFzTW9yZSxcbiAgICAgIGlzTG9hZGluZzogaXRlbS5pc0xvYWRpbmcsXG4gICAgICBvblNlYXJjaDogaXRlbS5vblNlYXJjaCxcbiAgICAgIG9uTG9hZE1vcmU6IGl0ZW0ub25Mb2FkTW9yZSxcbiAgICAgIG9wdGlvbnM6IGl0ZW0ub3B0aW9ucyB8fCBbXVxuICAgIH07XG4gIH1cblxuICBhcHBseSgpOiB2b2lkIHtcbiAgICB0aGlzLmNsb3NlQWxsT3BlblNlbGVjdHMoKTtcbiAgICBjb25zdCBmaWx0ZXJWYWx1ZXMgPSB0aGlzLnNlcmlhbGl6ZSgpO1xuICAgIHRoaXMuZmlsdGVyc0FwcGxpZWQuZW1pdChmaWx0ZXJWYWx1ZXMpO1xuICAgIHRoaXMub25BcHBseUZpbHRlckNsaWNrLmVtaXQoZmlsdGVyVmFsdWVzKTtcbiAgfVxuXG4gIHJlc2V0KCk6IHZvaWQge1xuICAgIHRoaXMuY2xvc2VBbGxPcGVuU2VsZWN0cygpO1xuICAgIE9iamVjdC5rZXlzKHRoaXMuZm9ybS5jb250cm9scykuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgY29uc3QgY3RybCA9IHRoaXMuZm9ybS5nZXQoa2V5KTtcbiAgICAgIGlmIChjdHJsIGluc3RhbmNlb2YgRm9ybUdyb3VwKSB7XG4gICAgICAgIGN0cmwuZ2V0KCdzdGFydCcpPy5zZXRWYWx1ZSh1bmRlZmluZWQpO1xuICAgICAgICBjdHJsLmdldCgnZW5kJyk/LnNldFZhbHVlKHVuZGVmaW5lZCk7XG4gICAgICAgIHRoaXMuaW52b2tlRGF0ZVJhbmdlQ2hhbmdlKGtleSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjdHJsPy5zZXRWYWx1ZSh1bmRlZmluZWQpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMucmVzZXRBY3Rpb24uZW1pdCgpO1xuICAgIHRoaXMub25SZXNldEZpbHRlckNsaWNrLmVtaXQoKTtcbiAgICBjb25zdCBzZXJpYWxpemVkID0gdGhpcy5zZXJpYWxpemUoKTtcbiAgICB0aGlzLmhhc1NlbGVjdGVkRmlsdGVycyA9IE9iamVjdC5rZXlzKHNlcmlhbGl6ZWQpLmxlbmd0aCA+IDA7XG4gICAgdGhpcy5maWx0ZXJzQ2hhbmdlZC5lbWl0KHNlcmlhbGl6ZWQpO1xuICB9XG5cbiAgLyoqIENsb3NlIGFueSBvcGVuIE1hdFNlbGVjdCBwYW5lbHMgYmVmb3JlIHByaW1hcnkgYWN0aW9ucyB0byBhdm9pZCBkb3VibGUtY2xpY2sgaXNzdWVzICovXG4gIHByZXBhcmVQcmltYXJ5QWN0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuY2xvc2VBbGxPcGVuU2VsZWN0cygpO1xuICB9XG5cbiAgcHJpdmF0ZSBjbG9zZUFsbE9wZW5TZWxlY3RzKCk6IHZvaWQge1xuICAgIHRyeSB7XG4gICAgICB0aGlzLnNlbGVjdENvbXBvbmVudHM/LmZvckVhY2goYyA9PiBjLmNsb3NlUGFuZWwoKSk7XG4gICAgfSBjYXRjaCB7fVxuICB9XG5cbiAgcHJpdmF0ZSBzZXJpYWxpemUoKTogRHluYW1pY0ZpbHRlclZhbHVlcyB7XG4gICAgY29uc3QgcmVzdWx0OiBEeW5hbWljRmlsdGVyVmFsdWVzID0ge307XG4gICAgKHRoaXMuY29uZmlnIHx8IFtdKS5mb3JFYWNoKGMgPT4ge1xuICAgICAgY29uc3QgY3RybCA9IHRoaXMuZm9ybS5nZXQoYy5rZXkpO1xuICAgICAgaWYgKCFjdHJsKSByZXR1cm47XG4gICAgICBsZXQgdmFsOiBhbnkgPSBjdHJsIGluc3RhbmNlb2YgRm9ybUdyb3VwID8gKGN0cmwgYXMgRm9ybUdyb3VwKS5nZXRSYXdWYWx1ZSgpIDogY3RybC52YWx1ZTtcbiAgICAgIGlmIChjLnR5cGUgPT09ICdkYXRlLXJhbmdlLXBpY2tlcicpIHtcbiAgICAgICAgY29uc3Qgc3RhcnQgPSB2YWw/LnN0YXJ0OyBjb25zdCBlbmQgPSB2YWw/LmVuZDtcbiAgICAgICAgaWYgKHN0YXJ0IHx8IGVuZCkgcmVzdWx0W2Mua2V5XSA9IHsgc3RhcnQsIGVuZCB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHZhbCAhPT0gdW5kZWZpbmVkICYmIHZhbCAhPT0gbnVsbCAmJiAoQXJyYXkuaXNBcnJheSh2YWwpID8gdmFsLmxlbmd0aCA+IDAgOiB2YWwgIT09ICcnKSkge1xuICAgICAgICAgIHJlc3VsdFtjLmtleV0gPSB2YWw7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgcHJpdmF0ZSByZXNvbHZlSW5pdGlhbFNlbGVjdFZhbHVlKGl0ZW06IER5bmFtaWNGaWx0ZXJJdGVtKTogYW55IHtcbiAgICBpZiAodGhpcy5tb2RlbCAmJiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodGhpcy5tb2RlbCwgaXRlbS5rZXkpKSB7XG4gICAgICByZXR1cm4gdGhpcy5tb2RlbFtpdGVtLmtleV07XG4gICAgfVxuICAgIGlmIChpdGVtLnNlbGVjdGVkVmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIGl0ZW0uc2VsZWN0ZWRWYWx1ZTtcbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIHByaXZhdGUgY29lcmNlVG9TaW5nbGVWYWx1ZSh2YWx1ZTogYW55KTogYW55IHtcbiAgICBpZiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgIHJldHVybiB2YWx1ZS5sZW5ndGggPyB2YWx1ZVswXSA6IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRJbml0aWFsRGF0ZVJhbmdlVmFsdWUoaXRlbTogRHluYW1pY0ZpbHRlckl0ZW0pOiB7IHN0YXJ0OiBEYXRlIHwgbnVsbDsgZW5kOiBEYXRlIHwgbnVsbCB9IHtcbiAgICBjb25zdCBtb2RlbFZhbHVlID0gdGhpcy5tb2RlbD8uW2l0ZW0ua2V5XTtcbiAgICBjb25zdCBzdGFydFNvdXJjZSA9IG1vZGVsVmFsdWU/LnN0YXJ0ID8/IGl0ZW0uc2VsZWN0ZWRTdGFydERhdGUgPz8gbnVsbDtcbiAgICBjb25zdCBlbmRTb3VyY2UgPSBtb2RlbFZhbHVlPy5lbmQgPz8gaXRlbS5zZWxlY3RlZEVuZERhdGUgPz8gbnVsbDtcbiAgICBjb25zdCBzdGFydCA9IHRoaXMubm9ybWFsaXplRGF0ZVZhbHVlKHN0YXJ0U291cmNlKTtcbiAgICBjb25zdCBlbmQgPSB0aGlzLm5vcm1hbGl6ZURhdGVWYWx1ZShlbmRTb3VyY2UpO1xuICAgIGNvbnN0IGNsYW1wID0gKGQ6IERhdGUgfCBudWxsKSA9PiAoZCAmJiBkLmdldFRpbWUoKSA+IHRoaXMubWF4RGF0ZS5nZXRUaW1lKCkgPyB0aGlzLm1heERhdGUgOiBkKTtcbiAgICByZXR1cm4geyBzdGFydDogY2xhbXAoc3RhcnQpLCBlbmQ6IGNsYW1wKGVuZCkgfTtcbiAgfVxuXG4gIHByaXZhdGUgbm9ybWFsaXplRGF0ZVZhbHVlKHZhbHVlOiBhbnkpOiBEYXRlIHwgbnVsbCB7XG4gICAgaWYgKCF2YWx1ZSkgcmV0dXJuIG51bGw7XG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSAmJiAhaXNOYU4odmFsdWUuZ2V0VGltZSgpKSkge1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cbiAgICBjb25zdCBwYXJzZWQgPSBuZXcgRGF0ZSh2YWx1ZSk7XG4gICAgcmV0dXJuIGlzTmFOKHBhcnNlZC5nZXRUaW1lKCkpID8gbnVsbCA6IHBhcnNlZDtcbiAgfVxuXG4gIHByaXZhdGUgaW52b2tlRGF0ZVJhbmdlQ2hhbmdlKGtleTogc3RyaW5nLCBldmVudD86IE1hdERhdGVwaWNrZXJJbnB1dEV2ZW50PERhdGU+IHwgRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCBpdGVtID0gKHRoaXMuY29uZmlnIHx8IFtdKS5maW5kKGNmZyA9PiBjZmcua2V5ID09PSBrZXkpO1xuICAgIGlmICghaXRlbT8ub25EYXRlQ2hhbmdlKSByZXR1cm47XG4gICAgY29uc3QgZGF0ZUdyb3VwID0gdGhpcy5nZXREYXRlR3JvdXAoa2V5KTtcbiAgICBpZiAoIWRhdGVHcm91cCkgcmV0dXJuO1xuICAgIGNvbnN0IHsgc3RhcnQsIGVuZCB9ID0gZGF0ZUdyb3VwLmdldFJhd1ZhbHVlKCkgfHwge307XG4gICAgaXRlbS5vbkRhdGVDaGFuZ2UoXG4gICAgICB7XG4gICAgICAgIHN0YXJ0OiB0aGlzLm5vcm1hbGl6ZURhdGVWYWx1ZShzdGFydCksXG4gICAgICAgIGVuZDogdGhpcy5ub3JtYWxpemVEYXRlVmFsdWUoZW5kKSxcbiAgICAgIH0sXG4gICAgICBldmVudFxuICAgICk7XG4gIH1cblxuICAvLyBNYXQgZGF0ZSByYW5nZSBwaWNrZXIgb3ZlcmxheSBwcmVzZXQgaGVscGVyc1xuICBhcHBseVByZXNldFRvR3JvdXAoa2V5OiBzdHJpbmcsIHByZXNldEtleTogJ3RvZGF5JyB8ICdsYXN0N2RheXMnIHwgJ2xhc3QzMGRheXMnIHwgJ2xhc3Q5MGRheXMnIHwgJ3RoaXNtb250aCcgfCAnbGFzdG1vbnRoJyk6IHZvaWQge1xuICAgIGNvbnN0IGRhdGVHcm91cCA9IHRoaXMuZ2V0RGF0ZUdyb3VwKGtleSk7XG4gICAgaWYgKCFkYXRlR3JvdXApIHJldHVybjtcbiAgICBjb25zdCB7IHN0YXJ0LCBlbmQgfSA9IHRoaXMuZ2V0UHJlc2V0RGF0ZXMocHJlc2V0S2V5KTtcbiAgICBkYXRlR3JvdXAucGF0Y2hWYWx1ZSh7IHN0YXJ0LCBlbmQgfSk7XG4gICAgdGhpcy5maWx0ZXJzQ2hhbmdlZC5lbWl0KHRoaXMuc2VyaWFsaXplKCkpO1xuICAgIHRoaXMuaW52b2tlRGF0ZVJhbmdlQ2hhbmdlKGtleSk7XG4gIH1cblxuICBwcml2YXRlIGdldFByZXNldERhdGVzKHByZXNldEtleTogJ3RvZGF5JyB8ICdsYXN0N2RheXMnIHwgJ2xhc3QzMGRheXMnIHwgJ2xhc3Q5MGRheXMnIHwgJ3RoaXNtb250aCcgfCAnbGFzdG1vbnRoJyk6IHsgc3RhcnQ6IERhdGU7IGVuZDogRGF0ZSB9IHtcbiAgICBjb25zdCB0b2RheSA9IG5ldyBEYXRlKCk7XG4gICAgY29uc3QgY2xhbXBUb0VuZE9mVG9kYXkgPSAoZDogRGF0ZSkgPT4geyBjb25zdCBuZCA9IG5ldyBEYXRlKGQpOyBuZC5zZXRIb3VycygyMyw1OSw1OSw5OTkpOyByZXR1cm4gbmQ7IH07XG4gICAgc3dpdGNoIChwcmVzZXRLZXkpIHtcbiAgICAgIGNhc2UgJ3RvZGF5JzpcbiAgICAgICAgcmV0dXJuIHsgc3RhcnQ6IHRvZGF5LCBlbmQ6IHRvZGF5IH07XG4gICAgICBjYXNlICdsYXN0N2RheXMnOiB7XG4gICAgICAgIGNvbnN0IHN0YXJ0ID0gbmV3IERhdGUoKTsgc3RhcnQuc2V0RGF0ZShzdGFydC5nZXREYXRlKCkgLSA2KTtcbiAgICAgICAgcmV0dXJuIHsgc3RhcnQsIGVuZDogdG9kYXkgfTtcbiAgICAgIH1cbiAgICAgIGNhc2UgJ2xhc3QzMGRheXMnOiB7XG4gICAgICAgIGNvbnN0IHN0YXJ0ID0gbmV3IERhdGUoKTsgc3RhcnQuc2V0RGF0ZShzdGFydC5nZXREYXRlKCkgLSAyOSk7XG4gICAgICAgIHJldHVybiB7IHN0YXJ0LCBlbmQ6IHRvZGF5IH07XG4gICAgICB9XG4gICAgICBjYXNlICdsYXN0OTBkYXlzJzoge1xuICAgICAgICBjb25zdCBzdGFydCA9IG5ldyBEYXRlKCk7IHN0YXJ0LnNldERhdGUoc3RhcnQuZ2V0RGF0ZSgpIC0gODkpO1xuICAgICAgICByZXR1cm4geyBzdGFydCwgZW5kOiB0b2RheSB9O1xuICAgICAgfVxuICAgICAgY2FzZSAndGhpc21vbnRoJzoge1xuICAgICAgICBjb25zdCBzdGFydCA9IG5ldyBEYXRlKHRvZGF5LmdldEZ1bGxZZWFyKCksIHRvZGF5LmdldE1vbnRoKCksIDEpO1xuICAgICAgICByZXR1cm4geyBzdGFydCwgZW5kOiB0b2RheSB9O1xuICAgICAgfVxuICAgICAgY2FzZSAnbGFzdG1vbnRoJzoge1xuICAgICAgICBjb25zdCBzdGFydCA9IG5ldyBEYXRlKHRvZGF5LmdldEZ1bGxZZWFyKCksIHRvZGF5LmdldE1vbnRoKCkgLSAxLCAxKTtcbiAgICAgICAgY29uc3QgZW5kID0gbmV3IERhdGUodG9kYXkuZ2V0RnVsbFllYXIoKSwgdG9kYXkuZ2V0TW9udGgoKSwgMCk7XG4gICAgICAgIHJldHVybiB7IHN0YXJ0LCBlbmQ6IGNsYW1wVG9FbmRPZlRvZGF5KGVuZCkgfTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcHJpdmF0ZSBzdGFydE9mRGF5KGQ6IERhdGUpOiBEYXRlIHsgY29uc3QgbmQgPSBuZXcgRGF0ZShkKTsgbmQuc2V0SG91cnMoMCwwLDAsMCk7IHJldHVybiBuZDsgfVxuICBwcml2YXRlIGVuZE9mRGF5KGQ6IERhdGUpOiBEYXRlIHsgY29uc3QgbmQgPSBuZXcgRGF0ZShkKTsgbmQuc2V0SG91cnMoMjMsNTksNTksOTk5KTsgcmV0dXJuIG5kOyB9XG4gIHByaXZhdGUgc3RhcnRPZk1vbnRoKHllYXI6IG51bWJlciwgbW9udGg6IG51bWJlcik6IERhdGUgeyByZXR1cm4gbmV3IERhdGUoeWVhciwgbW9udGgsIDEsIDAsMCwwLDApOyB9XG4gIHByaXZhdGUgZW5kT2ZNb250aCh5ZWFyOiBudW1iZXIsIG1vbnRoOiBudW1iZXIpOiBEYXRlIHsgcmV0dXJuIG5ldyBEYXRlKHllYXIsIG1vbnRoICsgMSwgMCwgMjMsNTksNTksOTk5KTsgfVxuICBwcml2YXRlIGJ1aWxkTmd4UmFuZ2VzKCk6IFJlY29yZDxzdHJpbmcsIFtEYXRlLCBEYXRlXT4ge1xuICAgIGNvbnN0IHRvZGF5ID0gbmV3IERhdGUoKTtcbiAgICBjb25zdCBsYXN0N1N0YXJ0ID0gbmV3IERhdGUoKTsgbGFzdDdTdGFydC5zZXREYXRlKGxhc3Q3U3RhcnQuZ2V0RGF0ZSgpIC0gNik7XG4gICAgY29uc3QgbGFzdDMwU3RhcnQgPSBuZXcgRGF0ZSgpOyBsYXN0MzBTdGFydC5zZXREYXRlKGxhc3QzMFN0YXJ0LmdldERhdGUoKSAtIDI5KTtcbiAgICBjb25zdCBsYXN0OTBTdGFydCA9IG5ldyBEYXRlKCk7IGxhc3Q5MFN0YXJ0LnNldERhdGUobGFzdDkwU3RhcnQuZ2V0RGF0ZSgpIC0gODkpO1xuICAgIGNvbnN0IHRoaXNNb250aFN0YXJ0ID0gdGhpcy5zdGFydE9mTW9udGgodG9kYXkuZ2V0RnVsbFllYXIoKSwgdG9kYXkuZ2V0TW9udGgoKSk7XG4gICAgY29uc3QgbGFzdE1vbnRoU3RhcnQgPSB0aGlzLnN0YXJ0T2ZNb250aCh0b2RheS5nZXRGdWxsWWVhcigpLCB0b2RheS5nZXRNb250aCgpIC0gMSk7XG4gICAgY29uc3QgbGFzdE1vbnRoRW5kID0gdGhpcy5lbmRPZk1vbnRoKHRvZGF5LmdldEZ1bGxZZWFyKCksIHRvZGF5LmdldE1vbnRoKCkgLSAxKTtcbiAgICByZXR1cm4ge1xuICAgICAgJ1RvZGF5JzogW3RoaXMuc3RhcnRPZkRheSh0b2RheSksIHRoaXMuZW5kT2ZEYXkodG9kYXkpXSxcbiAgICAgICdMYXN0IDcgRGF5cyc6IFt0aGlzLnN0YXJ0T2ZEYXkobGFzdDdTdGFydCksIHRoaXMuZW5kT2ZEYXkodG9kYXkpXSxcbiAgICAgICdMYXN0IDMwIERheXMnOiBbdGhpcy5zdGFydE9mRGF5KGxhc3QzMFN0YXJ0KSwgdGhpcy5lbmRPZkRheSh0b2RheSldLFxuICAgICAgJ0xhc3QgOTAgRGF5cyc6IFt0aGlzLnN0YXJ0T2ZEYXkobGFzdDkwU3RhcnQpLCB0aGlzLmVuZE9mRGF5KHRvZGF5KV0sXG4gICAgICAnVGhpcyBNb250aCc6IFt0aGlzLnN0YXJ0T2ZEYXkodGhpc01vbnRoU3RhcnQpLCB0aGlzLmVuZE9mRGF5KHRvZGF5KV0sXG4gICAgICAnTGFzdCBNb250aCc6IFt0aGlzLnN0YXJ0T2ZEYXkobGFzdE1vbnRoU3RhcnQpLCB0aGlzLmVuZE9mRGF5KGxhc3RNb250aEVuZCldLFxuICAgIH07XG4gIH1cbiAgb25EYXRlcmFuZ2VwaWNrZXJDaGFuZ2UoZXZlbnQ6IHsgc3RhcnREYXRlOiBEYXRlIHwgbnVsbDsgZW5kRGF0ZTogRGF0ZSB8IG51bGwgfSwga2V5OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBncm91cCA9IHRoaXMuZ2V0RGF0ZUdyb3VwKGtleSk7XG4gICAgaWYgKCFncm91cCkgcmV0dXJuO1xuICAgIFxuICAgIGdyb3VwLnBhdGNoVmFsdWUoe1xuICAgICAgc3RhcnQ6IGV2ZW50LnN0YXJ0RGF0ZSxcbiAgICAgIGVuZDogZXZlbnQuZW5kRGF0ZVxuICAgIH0sIHsgZW1pdEV2ZW50OiB0cnVlIH0pO1xuICAgIFxuICAgIGNvbnN0IHNlcmlhbGl6ZWQgPSB0aGlzLnNlcmlhbGl6ZSgpO1xuICAgIHRoaXMuaGFzU2VsZWN0ZWRGaWx0ZXJzID0gT2JqZWN0LmtleXMoc2VyaWFsaXplZCkubGVuZ3RoID4gMDtcbiAgICB0aGlzLmZpbHRlcnNDaGFuZ2VkLmVtaXQoc2VyaWFsaXplZCk7XG4gICAgdGhpcy5pbnZva2VEYXRlUmFuZ2VDaGFuZ2Uoa2V5KTtcbiAgfVxuXG4gIG9uRGF0ZXJhbmdlcGlja2VyQXBwbHkoZXZlbnQ6IHsgc3RhcnREYXRlOiBEYXRlIHwgbnVsbDsgZW5kRGF0ZTogRGF0ZSB8IG51bGwgfSwga2V5OiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLm9uRGF0ZXJhbmdlcGlja2VyQ2hhbmdlKGV2ZW50LCBrZXkpO1xuICAgIC8vIE9wdGlvbmFsbHkgdHJpZ2dlciBhcHBseSBhY3Rpb25cbiAgICBjb25zdCBzZXJpYWxpemVkID0gdGhpcy5zZXJpYWxpemUoKTtcbiAgICBpZiAoZXZlbnQuc3RhcnREYXRlICYmIGV2ZW50LmVuZERhdGUpIHtcbiAgICAgIC8vIERvbid0IGF1dG8tYXBwbHksIGxldCB1c2VyIGNsaWNrIEFwcGx5IEZpbHRlciBidXR0b25cbiAgICB9XG4gIH1cblxuICBnZXREYXRlcmFuZ2VwaWNrZXJSYW5nZXMoKTogYW55IHtcbiAgICAvLyBVc2UgdGhlIGV4aXN0aW5nIGdldFByZXNldERhdGVzIGxvZ2ljIHRvIGVuc3VyZSBjb25zaXN0ZW5jeVxuICAgIGNvbnN0IHRvZGF5UHJlc2V0ID0gdGhpcy5nZXRQcmVzZXREYXRlcygndG9kYXknKTtcbiAgICBjb25zdCBsYXN0N1ByZXNldCA9IHRoaXMuZ2V0UHJlc2V0RGF0ZXMoJ2xhc3Q3ZGF5cycpO1xuICAgIGNvbnN0IGxhc3QzMFByZXNldCA9IHRoaXMuZ2V0UHJlc2V0RGF0ZXMoJ2xhc3QzMGRheXMnKTtcbiAgICBjb25zdCBsYXN0OTBQcmVzZXQgPSB0aGlzLmdldFByZXNldERhdGVzKCdsYXN0OTBkYXlzJyk7XG4gICAgY29uc3QgdGhpc01vbnRoUHJlc2V0ID0gdGhpcy5nZXRQcmVzZXREYXRlcygndGhpc21vbnRoJyk7XG4gICAgY29uc3QgbGFzdE1vbnRoUHJlc2V0ID0gdGhpcy5nZXRQcmVzZXREYXRlcygnbGFzdG1vbnRoJyk7XG4gICAgXG4gICAgcmV0dXJuIHtcbiAgICAgICdUb2RheSc6IFt0b2RheVByZXNldC5zdGFydCwgdGhpcy5lbmRPZkRheSh0b2RheVByZXNldC5lbmQpXSxcbiAgICAgICdMYXN0IDcgRGF5cyc6IFtsYXN0N1ByZXNldC5zdGFydCwgdGhpcy5lbmRPZkRheShsYXN0N1ByZXNldC5lbmQpXSxcbiAgICAgICdMYXN0IDMwIERheXMnOiBbbGFzdDMwUHJlc2V0LnN0YXJ0LCB0aGlzLmVuZE9mRGF5KGxhc3QzMFByZXNldC5lbmQpXSxcbiAgICAgICdMYXN0IDkwIERheXMnOiBbbGFzdDkwUHJlc2V0LnN0YXJ0LCB0aGlzLmVuZE9mRGF5KGxhc3Q5MFByZXNldC5lbmQpXSxcbiAgICAgICdUaGlzIE1vbnRoJzogW3RoaXNNb250aFByZXNldC5zdGFydCwgdGhpcy5lbmRPZkRheSh0aGlzTW9udGhQcmVzZXQuZW5kKV0sXG4gICAgICAnTGFzdCBNb250aCc6IFtsYXN0TW9udGhQcmVzZXQuc3RhcnQsIHRoaXMuZW5kT2ZEYXkobGFzdE1vbnRoUHJlc2V0LmVuZCldXG4gICAgfTtcbiAgfVxuXG4gIGdldERhdGVWYWxpZGF0aW9uRXJyb3Ioa2V5OiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsIHtcbiAgICBjb25zdCBkYXRlR3JvdXAgPSB0aGlzLmdldERhdGVHcm91cChrZXkpO1xuICAgIGlmICghZGF0ZUdyb3VwKSByZXR1cm4gbnVsbDtcblxuICAgIGNvbnN0IHN0YXJ0Q3RybCA9IGRhdGVHcm91cC5jb250cm9sc1snc3RhcnQnXTtcbiAgICBjb25zdCBlbmRDdHJsID0gZGF0ZUdyb3VwLmNvbnRyb2xzWydlbmQnXTtcbiAgICBjb25zdCBzdGFydFZhbCA9IHN0YXJ0Q3RybD8udmFsdWU7XG4gICAgY29uc3QgZW5kVmFsID0gZW5kQ3RybD8udmFsdWU7XG5cbiAgICBpZiAoIXN0YXJ0VmFsICYmICFlbmRWYWwpIHJldHVybiBudWxsO1xuXG4gICAgaWYgKHN0YXJ0VmFsICYmICFlbmRWYWwpIHJldHVybiBgUGxlYXNlIHNlbGVjdCBhbiBlbmQgZGF0ZWA7XG4gICAgaWYgKCFzdGFydFZhbCAmJiBlbmRWYWwpIHJldHVybiBgUGxlYXNlIHNlbGVjdCBhIHN0YXJ0IGRhdGVgO1xuXG4gICAgaWYgKGRhdGVHcm91cC5pbnZhbGlkKSB7XG4gICAgICBjb25zdCBjb25maWcgPSB0aGlzLmNvbmZpZz8uZmluZChjID0+IGMua2V5ID09PSBrZXkpO1xuICAgICAgcmV0dXJuIGNvbmZpZyA/IGAke2NvbmZpZy5sYWJlbH0gaXMgaW52YWxpZGAgOiAnRGF0ZSByYW5nZSBpcyBpbnZhbGlkJztcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIC8vIER5bmFtaWMgRGF0ZSBQaWNrZXIgSW50ZWdyYXRpb24gTWV0aG9kcyByZW1vdmVkIChjb21wb25lbnQgbm8gbG9uZ2VyIHVzZWQpXG59XG5cblxuIiwiPGRpdiBjbGFzcz1cImNxYS11aS1yb290IGNxYS11aS1kYXRlcmFuZ2UtcGlja2VyXCI+XG4gIDxkaXYgY2xhc3M9XCJjcWEtZmlsdGVyIGNxYS1tYi1bMjhweF1cIiAqbmdJZj1cInNob3dGaWx0ZXJQYW5lbFwiIHN0eWxlPVwiaGVpZ2h0OiBhdXRvO1wiPlxuICAgIDwhLS0gQm90dG9tIExheW91dDogQ3VycmVudCBkZXNpZ24gd2l0aCBzZWxlY3RvcnMgaW4gZ3JpZCBhbmQgYnV0dG9ucyBiZWxvdyAtLT5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYnV0dG9uTGF5b3V0ID09PSAnYm90dG9tJ1wiPlxuICAgICAgPGZvcm0gY2xhc3M9XCJ0cy1mb3JtIGNxYS1ncmlkIGxnOmNxYS1ncmlkLWNvbHMtNCBtZDpjcWEtZ3JpZC1jb2xzLTIgY3FhLWdhcC00IGNxYS1yZWxhdGl2ZVwiIFtmb3JtR3JvdXBdPVwiZm9ybVwiXG4gICAgICAgIChrZXlkb3duLmVudGVyKT1cIihmYWxzZSlcIiBub3ZhbGlkYXRlPVwibm92YWxpZGF0ZVwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjIG9mIGNvbmZpZ1wiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhYy5oaWRkZW5cIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIGN1cy1yYW5nZS1zZWxlY3QgY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1nYXAtMiBjcWEtZmxleC1zaHJpbmstMCBmaWx0ZXItc2VsZWN0b3Itd2lkdGggY3FhLXctZnVsbFwiPlxuICAgICAgICAgICAgICA8IS0tIFNlbGVjdCAtLT5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImMudHlwZSA9PT0gJ3NlbGVjdCdcIj5cbiAgICAgICAgICAgICAgICA8Y3FhLWR5bmFtaWMtc2VsZWN0IFtmb3JtXT1cImZvcm1cIiBbY29uZmlnXT1cImdldFNlbGVjdENvbmZpZyhjKVwiPjwvY3FhLWR5bmFtaWMtc2VsZWN0PlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICA8IS0tIERhdGUgUmFuZ2UgUGlja2VyIC0tPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYy50eXBlID09PSAnZGF0ZS1yYW5nZS1waWNrZXInXCI+XG4gICAgICAgICAgICAgICAgPGNxYS1kYXRlcmFuZ2VwaWNrZXJcbiAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJjLmxhYmVsXCJcbiAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJjLnBsYWNlaG9sZGVyIHx8ICdTdGFydCBEYXRlIC0gRW5kIERhdGUnXCJcbiAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjLmRpc2FibGVkIHx8IGZhbHNlXCJcbiAgICAgICAgICAgICAgICAgIFtzdGFydERhdGVdPVwiZ2V0RGF0ZUdyb3VwKGMua2V5KT8uZ2V0KCdzdGFydCcpPy52YWx1ZVwiXG4gICAgICAgICAgICAgICAgICBbZW5kRGF0ZV09XCJnZXREYXRlR3JvdXAoYy5rZXkpPy5nZXQoJ2VuZCcpPy52YWx1ZVwiXG4gICAgICAgICAgICAgICAgICBbbWluRGF0ZV09XCJ1bmRlZmluZWRcIlxuICAgICAgICAgICAgICAgICAgW21heERhdGVdPVwibWF4RGF0ZVwiXG4gICAgICAgICAgICAgICAgICBbcmFuZ2VzXT1cImdldERhdGVyYW5nZXBpY2tlclJhbmdlcygpXCJcbiAgICAgICAgICAgICAgICAgIFthdXRvQXBwbHldPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICBbYWx3YXlzU2hvd0NhbGVuZGFyc109XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgIFtvcGVuc109XCJjLm9wZW5zIHx8ICdjZW50ZXInXCJcbiAgICAgICAgICAgICAgICAgIFtkcm9wc109XCJjLmRyb3BzIHx8ICdhdXRvJ1wiXG4gICAgICAgICAgICAgICAgICBbcGFyZW50RWxdPVwiYy5wYXJlbnRFbFwiXG4gICAgICAgICAgICAgICAgICAoZGF0ZXNVcGRhdGVkKT1cIm9uRGF0ZXJhbmdlcGlja2VyQ2hhbmdlKCRldmVudCwgYy5rZXkpXCJcbiAgICAgICAgICAgICAgICAgIChhcHBseUNsaWNrZWQpPVwib25EYXRlcmFuZ2VwaWNrZXJBcHBseSgkZXZlbnQsIGMua2V5KVwiPlxuICAgICAgICAgICAgICAgIDwvY3FhLWRhdGVyYW5nZXBpY2tlcj5cbiAgICAgICAgICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwiZ2V0RGF0ZUdyb3VwKGMua2V5KT8uaW52YWxpZCAmJiBnZXREYXRlR3JvdXAoYy5rZXkpPy50b3VjaGVkXCI+XG4gICAgICAgICAgICAgICAgICB7eyBnZXREYXRlVmFsaWRhdGlvbkVycm9yKGMua2V5KSB9fVxuICAgICAgICAgICAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZm9ybT5cblxuICAgICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1qdXN0aWZ5LWVuZCBjcWEtaXRlbXMtc3RyZXRjaCBjcWEtZ2FwLTIgY3FhLW10LTRcIj5cbiAgICAgICAgPGNxYS1idXR0b24gdmFyaWFudD1cImZpbGxlZFwiIChtb3VzZWRvd24pPVwicHJlcGFyZVByaW1hcnlBY3Rpb24oKVwiIChjbGlja2VkKT1cImFwcGx5KClcIiBbZGlzYWJsZWRdPVwiIWhhc1NlbGVjdGVkRmlsdGVyc1wiPkFwcGx5IEZpbHRlcjwvY3FhLWJ1dHRvbj5cbiAgICAgICAgPGNxYS1idXR0b24gdmFyaWFudD1cIm91dGxpbmVkXCIgKG1vdXNlZG93bik9XCJwcmVwYXJlUHJpbWFyeUFjdGlvbigpXCIgKGNsaWNrZWQpPVwicmVzZXQoKVwiPlJlc2V0PC9jcWEtYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8IS0tIFJpZ2h0IExheW91dDogQnV0dG9ucyBvbiBsZWZ0bW9zdCBzaWRlLCBzZWxlY3RvcnMgb24gcmlnaHRtb3N0IHNpZGUgLS0+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImJ1dHRvbkxheW91dCA9PT0gJ3JpZ2h0J1wiPlxuICAgICAgPGZvcm0gY2xhc3M9XCJ0cy1mb3JtIGNxYS1mbGV4IGNxYS1mbGV4LXdyYXAgY3FhLWl0ZW1zLWVuZCBjcWEtanVzdGlmeS1iZXR3ZWVuIGNxYS1nYXAtNCBjcWEtdWktZGF0ZXJhbmdlLXBpY2tlciBjcWEtcmVsYXRpdmVcIiBbZm9ybUdyb3VwXT1cImZvcm1cIlxuICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCIoZmFsc2UpXCIgbm92YWxpZGF0ZT1cIm5vdmFsaWRhdGVcIiBzdHlsZT1cImhlaWdodDogYXV0bztcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1pdGVtcy1zdHJldGNoIGNxYS1nYXAtMiBjcWEtZmxleC1zaHJpbmstMCBjcWEtb3JkZXItZmlyc3QgY3FhLW1yLWF1dG9cIj5cbiAgICAgICAgICA8Y3FhLWJ1dHRvbiB2YXJpYW50PVwiZmlsbGVkXCIgKGNsaWNrZWQpPVwiYXBwbHkoKVwiIFtkaXNhYmxlZF09XCIhaGFzU2VsZWN0ZWRGaWx0ZXJzXCI+QXBwbHkgRmlsdGVyPC9jcWEtYnV0dG9uPlxuICAgICAgICAgIDxjcWEtYnV0dG9uIHZhcmlhbnQ9XCJvdXRsaW5lZFwiIChjbGlja2VkKT1cInJlc2V0KClcIj5SZXNldDwvY3FhLWJ1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtZmxleC13cmFwIGNxYS1pdGVtcy1lbmQgY3FhLWdhcC00IGNxYS1mbGV4LTEgY3FhLWp1c3RpZnktZW5kIGNxYS1vcmRlci1sYXN0IGNxYS1tbC1hdXRvXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgYyBvZiBjb25maWdcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWMuaGlkZGVuXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBjcWEtZmxleCBjcWEtZmxleC1jb2wgY3FhLWdhcC0yIGNxYS1mbGV4LXNocmluay0wIGZpbHRlci1zZWxlY3Rvci13aWR0aFwiPlxuICAgICAgICAgICAgICA8IS0tIFNlbGVjdCAtLT5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImMudHlwZSA9PT0gJ3NlbGVjdCdcIj5cbiAgICAgICAgICAgICAgICA8Y3FhLWR5bmFtaWMtc2VsZWN0IFtmb3JtXT1cImZvcm1cIiBbY29uZmlnXT1cImdldFNlbGVjdENvbmZpZyhjKVwiPjwvY3FhLWR5bmFtaWMtc2VsZWN0PlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICA8IS0tIERhdGUgUmFuZ2UgKERhdGVyYW5nZXBpY2tlcikgLS0+IFxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYy50eXBlID09PSAnZGF0ZS1yYW5nZS1waWNrZXInXCI+XG4gICAgICAgICAgICAgICAgPGNxYS1kYXRlcmFuZ2VwaWNrZXJcbiAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJjLmxhYmVsXCJcbiAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJjLnBsYWNlaG9sZGVyIHx8ICdTdGFydCBEYXRlIC0gRW5kIERhdGUnXCJcbiAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjLmRpc2FibGVkIHx8IGZhbHNlXCJcbiAgICAgICAgICAgICAgICAgIFtzdGFydERhdGVdPVwiZ2V0RGF0ZUdyb3VwKGMua2V5KT8uZ2V0KCdzdGFydCcpPy52YWx1ZVwiXG4gICAgICAgICAgICAgICAgICBbZW5kRGF0ZV09XCJnZXREYXRlR3JvdXAoYy5rZXkpPy5nZXQoJ2VuZCcpPy52YWx1ZVwiXG4gICAgICAgICAgICAgICAgICBbbWluRGF0ZV09XCJ1bmRlZmluZWRcIlxuICAgICAgICAgICAgICAgICAgW21heERhdGVdPVwibWF4RGF0ZVwiXG4gICAgICAgICAgICAgICAgICBbcmFuZ2VzXT1cImdldERhdGVyYW5nZXBpY2tlclJhbmdlcygpXCJcbiAgICAgICAgICAgICAgICAgIFthdXRvQXBwbHldPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICBbYWx3YXlzU2hvd0NhbGVuZGFyc109XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgIFtvcGVuc109XCJjLm9wZW5zIHx8ICdjZW50ZXInXCJcbiAgICAgICAgICAgICAgICAgIFtkcm9wc109XCJjLmRyb3BzIHx8ICdhdXRvJ1wiXG4gICAgICAgICAgICAgICAgICBbcGFyZW50RWxdPVwiYy5wYXJlbnRFbFwiXG4gICAgICAgICAgICAgICAgICAoZGF0ZXNVcGRhdGVkKT1cIm9uRGF0ZXJhbmdlcGlja2VyQ2hhbmdlKCRldmVudCwgYy5rZXkpXCJcbiAgICAgICAgICAgICAgICAgIChhcHBseUNsaWNrZWQpPVwib25EYXRlcmFuZ2VwaWNrZXJBcHBseSgkZXZlbnQsIGMua2V5KVwiPlxuICAgICAgICAgICAgICAgIDwvY3FhLWRhdGVyYW5nZXBpY2tlcj5cbiAgICAgICAgICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwiZ2V0RGF0ZUdyb3VwKGMua2V5KT8uaW52YWxpZCAmJiBnZXREYXRlR3JvdXAoYy5rZXkpPy50b3VjaGVkXCI+XG4gICAgICAgICAgICAgICAgICB7eyBnZXREYXRlVmFsaWRhdGlvbkVycm9yKGMua2V5KSB9fVxuICAgICAgICAgICAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Zvcm0+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8IS0tIExlZnQgTGF5b3V0OiBTZWxlY3RvcnMgb24gbGVmdG1vc3Qgc2lkZSwgYnV0dG9ucyBvbiByaWdodG1vc3Qgc2lkZSAtLT5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYnV0dG9uTGF5b3V0ID09PSAnbGVmdCdcIj5cbiAgICAgIDxmb3JtIGNsYXNzPVwidHMtZm9ybSBjcWEtZmxleCBjcWEtZmxleC13cmFwIGNxYS1pdGVtcy1lbmQgY3FhLWp1c3RpZnktYmV0d2VlbiBjcWEtZ2FwLTQgY3FhLXVpLWRhdGVyYW5nZS1waWNrZXIgY3FhLXJlbGF0aXZlXCIgW2Zvcm1Hcm91cF09XCJmb3JtXCJcbiAgICAgICAgKGtleWRvd24uZW50ZXIpPVwiKGZhbHNlKVwiIG5vdmFsaWRhdGU9XCJub3ZhbGlkYXRlXCIgc3R5bGU9XCJoZWlnaHQ6IGF1dG87XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtZmxleC13cmFwIGNxYS1pdGVtcy1lbmQgY3FhLWdhcC00IGNxYS1mbGV4LTEgY3FhLW9yZGVyLWZpcnN0IGNxYS1tci1hdXRvXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgYyBvZiBjb25maWdcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWMuaGlkZGVuXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBjcWEtZmxleCBjcWEtZmxleC1jb2wgY3FhLWdhcC0yIGNxYS1mbGV4LXNocmluay0wIGZpbHRlci1zZWxlY3Rvci13aWR0aFwiPlxuICAgICAgICAgICAgICA8IS0tIFNlbGVjdCAtLT5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImMudHlwZSA9PT0gJ3NlbGVjdCdcIj5cbiAgICAgICAgICAgICAgICA8Y3FhLWR5bmFtaWMtc2VsZWN0IFtmb3JtXT1cImZvcm1cIiBbY29uZmlnXT1cImdldFNlbGVjdENvbmZpZyhjKVwiPjwvY3FhLWR5bmFtaWMtc2VsZWN0PlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICA8IS0tIERhdGUgUmFuZ2UgKERhdGVyYW5nZXBpY2tlcikgLS0+IFxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYy50eXBlID09PSAnZGF0ZS1yYW5nZS1waWNrZXInXCI+XG4gICAgICAgICAgICAgICAgPGNxYS1kYXRlcmFuZ2VwaWNrZXJcbiAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJjLmxhYmVsXCJcbiAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJjLnBsYWNlaG9sZGVyIHx8ICdTdGFydCBEYXRlIC0gRW5kIERhdGUnXCJcbiAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjLmRpc2FibGVkIHx8IGZhbHNlXCJcbiAgICAgICAgICAgICAgICAgIFtzdGFydERhdGVdPVwiZ2V0RGF0ZUdyb3VwKGMua2V5KT8uZ2V0KCdzdGFydCcpPy52YWx1ZVwiXG4gICAgICAgICAgICAgICAgICBbZW5kRGF0ZV09XCJnZXREYXRlR3JvdXAoYy5rZXkpPy5nZXQoJ2VuZCcpPy52YWx1ZVwiXG4gICAgICAgICAgICAgICAgICBbbWluRGF0ZV09XCJ1bmRlZmluZWRcIlxuICAgICAgICAgICAgICAgICAgW21heERhdGVdPVwibWF4RGF0ZVwiXG4gICAgICAgICAgICAgICAgICBbcmFuZ2VzXT1cImdldERhdGVyYW5nZXBpY2tlclJhbmdlcygpXCJcbiAgICAgICAgICAgICAgICAgIFthdXRvQXBwbHldPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICBbYWx3YXlzU2hvd0NhbGVuZGFyc109XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgIFtvcGVuc109XCJjLm9wZW5zIHx8ICdjZW50ZXInXCJcbiAgICAgICAgICAgICAgICAgIFtkcm9wc109XCJjLmRyb3BzIHx8ICdhdXRvJ1wiXG4gICAgICAgICAgICAgICAgICBbcGFyZW50RWxdPVwiYy5wYXJlbnRFbFwiXG4gICAgICAgICAgICAgICAgICAoZGF0ZXNVcGRhdGVkKT1cIm9uRGF0ZXJhbmdlcGlja2VyQ2hhbmdlKCRldmVudCwgYy5rZXkpXCJcbiAgICAgICAgICAgICAgICAgIChhcHBseUNsaWNrZWQpPVwib25EYXRlcmFuZ2VwaWNrZXJBcHBseSgkZXZlbnQsIGMua2V5KVwiPlxuICAgICAgICAgICAgICAgIDwvY3FhLWRhdGVyYW5nZXBpY2tlcj5cbiAgICAgICAgICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwiZ2V0RGF0ZUdyb3VwKGMua2V5KT8uaW52YWxpZCAmJiBnZXREYXRlR3JvdXAoYy5rZXkpPy50b3VjaGVkXCI+XG4gICAgICAgICAgICAgICAgICB7eyBnZXREYXRlVmFsaWRhdGlvbkVycm9yKGMua2V5KSB9fVxuICAgICAgICAgICAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtc3RyZXRjaCBjcWEtZ2FwLTIgY3FhLWZsZXgtc2hyaW5rLTAgY3FhLW9yZGVyLWxhc3QgY3FhLW1sLWF1dG9cIj5cbiAgICAgICAgICA8Y3FhLWJ1dHRvbiB2YXJpYW50PVwiZmlsbGVkXCIgKG1vdXNlZG93bik9XCJwcmVwYXJlUHJpbWFyeUFjdGlvbigpXCIgKGNsaWNrZWQpPVwiYXBwbHkoKVwiIFtkaXNhYmxlZF09XCIhaGFzU2VsZWN0ZWRGaWx0ZXJzXCI+QXBwbHkgRmlsdGVyPC9jcWEtYnV0dG9uPlxuICAgICAgICAgIDxjcWEtYnV0dG9uIHZhcmlhbnQ9XCJvdXRsaW5lZFwiIChtb3VzZWRvd24pPVwicHJlcGFyZVByaW1hcnlBY3Rpb24oKVwiIChjbGlja2VkKT1cInJlc2V0KClcIj5SZXNldDwvY3FhLWJ1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Zvcm0+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuPC9kaXY+Il19
|
|
434
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1maWx0ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9maWx0ZXJzL2R5bmFtaWMtZmlsdGVyL2R5bmFtaWMtZmlsdGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvZmlsdGVycy9keW5hbWljLWZpbHRlci9keW5hbWljLWZpbHRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQWEsTUFBTSxFQUFpQixZQUFZLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDbkosT0FBTyxFQUFlLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUdyRSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQzs7Ozs7Ozs7QUFzRGxHLE1BQU0sT0FBTyxzQkFBc0I7SUFrQmpDLFlBQTZCLEVBQWU7UUFBZixPQUFFLEdBQUYsRUFBRSxDQUFhO1FBakJuQyxXQUFNLEdBQXdCLEVBQUUsQ0FBQztRQUNqQyxVQUFLLEdBQXdCLEVBQUUsQ0FBQztRQUNoQyxvQkFBZSxHQUFZLElBQUksQ0FBQztRQUNoQyxpQkFBWSxHQUFnQyxRQUFRLENBQUM7UUFDcEQsbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFBdUIsQ0FBQztRQUN6RCxtQkFBYyxHQUFHLElBQUksWUFBWSxFQUF1QixDQUFDO1FBQ3pELGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUN2Qyx1QkFBa0IsR0FBRyxJQUFJLFlBQVksRUFBdUIsQ0FBQztRQUM3RCx1QkFBa0IsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBRXhELFNBQUksR0FBYyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNwQyxZQUFPLEdB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QztJQUNkLENBQUM7O21IQWhaVSxzQkFBc0I7dUdBQXRCLHNCQUFzQix5YkFnQm5CLDJCQUEyQixxRUMxRTNDLGk4UEE4SU07MkZEcEZPLHNCQUFzQjtrQkFQbEMsU0FBUzsrQkFDRSxvQkFBb0IsbUJBR2IsdUJBQXVCLENBQUMsTUFBTSxRQUN6QyxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUU7a0dBR3JCLE1BQU07c0JBQWQsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNJLGNBQWM7c0JBQXZCLE1BQU07Z0JBQ0csY0FBYztzQkFBdkIsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLGtCQUFrQjtzQkFBM0IsTUFBTTtnQkFDRyxrQkFBa0I7c0JBQTNCLE1BQU07Z0JBT29DLGdCQUFnQjtzQkFBMUQsWUFBWTt1QkFBQywyQkFBMkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkNoYW5nZXMsIE91dHB1dCwgU2ltcGxlQ2hhbmdlcywgVmlld0NoaWxkcmVuLCBRdWVyeUxpc3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0RGF0ZXBpY2tlcklucHV0RXZlbnQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kYXRlcGlja2VyJztcbmltcG9ydCB7IER5bmFtaWNTZWxlY3RGaWVsZENvbmZpZyB9IGZyb20gJy4uLy4uL2R5bmFtaWMtc2VsZWN0L2R5bmFtaWMtc2VsZWN0LWZpZWxkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEeW5hbWljU2VsZWN0RmllbGRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9keW5hbWljLXNlbGVjdC9keW5hbWljLXNlbGVjdC1maWVsZC5jb21wb25lbnQnO1xuXG50eXBlIEZpbHRlclR5cGUgPSAnc2VsZWN0JyB8ICdkYXRlLXJhbmdlLXBpY2tlcic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRHluYW1pY0ZpbHRlck9wdGlvbiB7XG4gIGlkPzogbnVtYmVyIHwgc3RyaW5nO1xuICBuYW1lPzogc3RyaW5nO1xuICB2YWx1ZT86IGFueTtcbiAgbGFiZWw/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRHluYW1pY0ZpbHRlckl0ZW0ge1xuICBsYWJlbDogc3RyaW5nO1xuICBwbGFjZWhvbGRlcj86IHN0cmluZztcbiAgdHlwZTogRmlsdGVyVHlwZTtcbiAga2V5OiBzdHJpbmc7XG4gIG9wZW5zPzogJ2xlZnQnIHwgJ3JpZ2h0JyB8ICdjZW50ZXInO1xuICBkcm9wcz86ICdkb3duJyB8ICd1cCcgfCAnYXV0byc7XG4gIG9wdGlvbnM/OiBEeW5hbWljRmlsdGVyT3B0aW9uW107XG4gIG11bHRpcGxlPzogYm9vbGVhbjtcbiAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICBoaWRkZW4/OiBib29sZWFuO1xuICBzZWFyY2hhYmxlPzogYm9vbGVhbjtcbiAgb3B0aW9uU3R5bGU/OiAnY2hlY2ttYXJrJyB8ICdjaGVja2JveCc7XG4gIHNob3dTZWxlY3RBbGw/OiBib29sZWFuO1xuICBzZWxlY3RBbGxMYWJlbD86IHN0cmluZztcbiAgc2VsZWN0ZWRWYWx1ZT86IGFueSB8IGFueVtdO1xuICAvLyBTZXJ2ZXItZHJpdmVuIHNlbGVjdCBzdXBwb3J0IChwYXNzdGhyb3VnaCB0byBjcWEtZHluYW1pYy1zZWxlY3QpXG4gIHNlcnZlclNlYXJjaD86IGJvb2xlYW47XG4gIC8qKiBNb3JlIHJlc3VsdHMgYXZhaWxhYmxlIHNlcnZlci1zaWRlIGZvciBpbmZpbml0ZSBzY3JvbGwgKi9cbiAgaGFzTW9yZT86IGJvb2xlYW47XG4gIC8qKiBFeHRlcm5hbCBsb2FkaW5nIHN0YXRlIGZvciBhc3luYyBmZXRjaGluZyAqL1xuICBpc0xvYWRpbmc/OiBib29sZWFuO1xuICAvKiogQ2FsbGJhY2sgd2hlbiBzZWFyY2ggdGV4dCBjaGFuZ2VzIChzZXJ2ZXIgbW9kZSkgKi9cbiAgb25TZWFyY2g/OiAocXVlcnk6IHN0cmluZykgPT4gdm9pZDtcbiAgLyoqIENhbGxiYWNrIHdoZW4gbW9yZSBkYXRhIGlzIHJlcXVlc3RlZCAoaW5maW5pdGUgc2Nyb2xsKSAqL1xuICBvbkxvYWRNb3JlPzogKHF1ZXJ5Pzogc3RyaW5nKSA9PiB2b2lkO1xuICBzZWxlY3RlZFN0YXJ0RGF0ZT86IERhdGUgfCBzdHJpbmc7XG4gIHNlbGVjdGVkRW5kRGF0ZT86IERhdGUgfCBzdHJpbmc7XG4gIG9uRGF0ZUNoYW5nZT86ICh2YWx1ZTogeyBzdGFydDogRGF0ZSB8IG51bGw7IGVuZDogRGF0ZSB8IG51bGwgfSwgZXZlbnQ/OiBNYXREYXRlcGlja2VySW5wdXRFdmVudDxEYXRlPiB8IEV2ZW50KSA9PiB2b2lkO1xuICBwYXJlbnRFbD86IHN0cmluZyB8IEhUTUxFbGVtZW50O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIER5bmFtaWNGaWx0ZXJWYWx1ZXMge1xuICBba2V5OiBzdHJpbmddOiBhbnk7XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NxYS1keW5hbWljLWZpbHRlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9keW5hbWljLWZpbHRlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogW10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBob3N0OiB7IGNsYXNzOiAnY3FhLXVpLXJvb3QnIH1cbn0pXG5leHBvcnQgY2xhc3MgRHluYW1pY0ZpbHRlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpIGNvbmZpZzogRHluYW1pY0ZpbHRlckl0ZW1bXSA9IFtdO1xuICBASW5wdXQoKSBtb2RlbDogRHluYW1pY0ZpbHRlclZhbHVlcyA9IHt9O1xuICBASW5wdXQoKSBzaG93RmlsdGVyUGFuZWw6IGJvb2xlYW4gPSB0cnVlO1xuICBASW5wdXQoKSBidXR0b25MYXlvdXQ6ICdsZWZ0JyB8ICdyaWdodCcgfCAnYm90dG9tJyA9ICdib3R0b20nO1xuICBAT3V0cHV0KCkgZmlsdGVyc0FwcGxpZWQgPSBuZXcgRXZlbnRFbWl0dGVyPER5bmFtaWNGaWx0ZXJWYWx1ZXM+KCk7XG4gIEBPdXRwdXQoKSBmaWx0ZXJzQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8RHluYW1pY0ZpbHRlclZhbHVlcz4oKTtcbiAgQE91dHB1dCgpIHJlc2V0QWN0aW9uID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBAT3V0cHV0KCkgb25BcHBseUZpbHRlckNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxEeW5hbWljRmlsdGVyVmFsdWVzPigpO1xuICBAT3V0cHV0KCkgb25SZXNldEZpbHRlckNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIGZvcm06IEZvcm1Hcm91cCA9IHRoaXMuZmIuZ3JvdXAoe30pO1xuICBtYXhEYXRlID0gbmV3IERhdGUoKTtcbiAgc2VhcmNoVGV4dEJ5S2V5OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG4gIHByaXZhdGUgc2VsZWN0T3V0c2lkZUNsZWFudXAgPSBuZXcgTWFwPGFueSwgKCkgPT4gdm9pZD4oKTtcbiAgaGFzU2VsZWN0ZWRGaWx0ZXJzID0gZmFsc2U7XG4gIEBWaWV3Q2hpbGRyZW4oRHluYW1pY1NlbGVjdEZpZWxkQ29tcG9uZW50KSBzZWxlY3RDb21wb25lbnRzPzogUXVlcnlMaXN0PER5bmFtaWNTZWxlY3RGaWVsZENvbXBvbmVudD47XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBmYjogRm9ybUJ1aWxkZXIpIHtcbiAgICAvLyBFbnN1cmUgbWF4RGF0ZSBpcyB0aGUgZW5kIG9mIHRvZGF5LCBzbyBhbnkgZnV0dXJlIGRhdGVzIGFyZSBkaXNhbGxvd2VkXG4gICAgdGhpcy5tYXhEYXRlID0gdGhpcy5lbmRPZkRheShuZXcgRGF0ZSgpKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlc1snY29uZmlnJ10gfHwgY2hhbmdlc1snbW9kZWwnXSkge1xuICAgICAgdGhpcy5idWlsZEZvcm0oKTtcbiAgICB9XG4gIH1cblxuICBvbkRhdGVDaGFuZ2UoZXZlbnQ6IE1hdERhdGVwaWNrZXJJbnB1dEV2ZW50PERhdGU+IHwgRXZlbnQsIGtleTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5pbnZva2VEYXRlUmFuZ2VDaGFuZ2Uoa2V5LCBldmVudCk7XG4gIH1cblxuICAvLyBOR1ggRGF0ZVJhbmdlUGlja2VyIGludGVncmF0aW9uXG4gIG5neERhdGVSYW5nZUJ5S2V5OiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XG4gIG5neFJhbmdlczogYW55ID0ge307IC8vIFVzaW5nICdhbnknIHRvIGF2b2lkIERheWpzIHR5cGUgbWlzbWF0Y2ggLSBsaWJyYXJ5IGFjY2VwdHMgRGF0ZSBvYmplY3RzIGF0IHJ1bnRpbWVcbiAgbmd4TG9jYWxlID0geyBjdXN0b21SYW5nZUxhYmVsOiAnQ3VzdG9tIHJhbmdlJyB9O1xuICAvLyBEaXNhYmxlIGFsbCBkYXRlcyBhZnRlciB0b2RheSBpbiB0aGUgbmd4IGRhdGVwaWNrZXJcbiAgZGlzYWJsZUZ1dHVyZURhdGVzID0gKG06IGFueSk6IGJvb2xlYW4gPT4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBkOiBEYXRlID0gbSAmJiB0eXBlb2YgbS50b0RhdGUgPT09ICdmdW5jdGlvbicgPyBtLnRvRGF0ZSgpIDogbmV3IERhdGUobSk7XG4gICAgICByZXR1cm4gZC5nZXRUaW1lKCkgPiB0aGlzLm1heERhdGUuZ2V0VGltZSgpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfTtcbiAgb25OZ3hEYXRlc1VwZGF0ZWQoZTogYW55LCBrZXk6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IGdyb3VwID0gdGhpcy5nZXREYXRlR3JvdXAoa2V5KTtcbiAgICBpZiAoIWdyb3VwKSByZXR1cm47XG4gICAgY29uc3QgY2xhbXAgPSAoZDogRGF0ZSB8IG51bGwpID0+IChkICYmIGQuZ2V0VGltZSgpID4gdGhpcy5tYXhEYXRlLmdldFRpbWUoKSA/IHRoaXMubWF4RGF0ZSA6IGQpO1xuICAgIGNvbnN0IHN0YXJ0UmF3ID0gZT8uc3RhcnREYXRlID8gKHR5cGVvZiBlLnN0YXJ0RGF0ZS50b0RhdGUgPT09ICdmdW5jdGlvbicgPyBlLnN0YXJ0RGF0ZS50b0RhdGUoKSA6IG5ldyBEYXRlKGUuc3RhcnREYXRlKSkgOiBudWxsO1xuICAgIGNvbnN0IGVuZFJhdyA9IGU/LmVuZERhdGUgPyAodHlwZW9mIGUuZW5kRGF0ZS50b0RhdGUgPT09ICdmdW5jdGlvbicgPyBlLmVuZERhdGUudG9EYXRlKCkgOiBuZXcgRGF0ZShlLmVuZERhdGUpKSA6IG51bGw7XG4gICAgY29uc3Qgc3RhcnQgPSBjbGFtcChzdGFydFJhdyk7XG4gICAgY29uc3QgZW5kID0gY2xhbXAoZW5kUmF3KTtcbiAgICBncm91cC5wYXRjaFZhbHVlKHsgc3RhcnQsIGVuZCB9LCB7IGVtaXRFdmVudDogdHJ1ZSB9KTtcbiAgICBjb25zdCBzZXJpYWxpemVkID0gdGhpcy5zZXJpYWxpemUoKTtcbiAgICB0aGlzLmhhc1NlbGVjdGVkRmlsdGVycyA9IE9iamVjdC5rZXlzKHNlcmlhbGl6ZWQpLmxlbmd0aCA+IDA7XG4gICAgaWYgKHN0YXJ0ICYmIGVuZCAmJiBncm91cC52YWxpZCkge1xuICAgICAgdGhpcy5hcHBseSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZpbHRlcnNDaGFuZ2VkLmVtaXQoc2VyaWFsaXplZCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBidWlsZEZvcm0oKTogdm9pZCB7XG4gICAgY29uc3QgY3RybHM6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fTtcbiAgICAodGhpcy5jb25maWcgfHwgW10pLmZvckVhY2goYyA9PiB7XG4gICAgICBpZiAoYy5oaWRkZW4pIHJldHVybjtcbiAgICAgIGlmIChjLnR5cGUgPT09ICdkYXRlLXJhbmdlLXBpY2tlcicpIHtcbiAgICAgICAgY29uc3QgaW5pdGlhbFJhbmdlID0gdGhpcy5nZXRJbml0aWFsRGF0ZVJhbmdlVmFsdWUoYyk7XG4gICAgICAgIGN0cmxzW2Mua2V5XSA9IHRoaXMuZmIuZ3JvdXAoe1xuICAgICAgICAgIHN0YXJ0OiBuZXcgRm9ybUNvbnRyb2woaW5pdGlhbFJhbmdlLnN0YXJ0KSxcbiAgICAgICAgICBlbmQ6IG5ldyBGb3JtQ29udHJvbChpbml0aWFsUmFuZ2UuZW5kKSxcbiAgICAgICAgfSk7XG4gICAgICAgIC8vIGluaXRpYWxpemUgbmd4IG1vZGVsIGRpc3BsYXlcbiAgICAgICAgdGhpcy5uZ3hEYXRlUmFuZ2VCeUtleVtjLmtleV0gPSB7XG4gICAgICAgICAgc3RhcnREYXRlOiBpbml0aWFsUmFuZ2Uuc3RhcnQgfHwgbnVsbCxcbiAgICAgICAgICBlbmREYXRlOiBpbml0aWFsUmFuZ2UuZW5kIHx8IG51bGxcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGluaXRpYWwgPSB0aGlzLnJlc29sdmVJbml0aWFsU2VsZWN0VmFsdWUoYyk7XG4gICAgICAgIGlmIChjLm11bHRpcGxlKSB7XG4gICAgICAgICAgY29uc3QgdmFsdWUgPSBBcnJheS5pc0FycmF5KGluaXRpYWwpID8gaW5pdGlhbCA6IChpbml0aWFsICE9IG51bGwgPyBbaW5pdGlhbF0gOiBbXSk7XG4gICAgICAgICAgY3RybHNbYy5rZXldID0gbmV3IEZvcm1Db250cm9sKHZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjdHJsc1tjLmtleV0gPSBuZXcgRm9ybUNvbnRyb2wodGhpcy5jb2VyY2VUb1NpbmdsZVZhbHVlKGluaXRpYWwpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMuZm9ybSA9IHRoaXMuZmIuZ3JvdXAoY3RybHMpO1xuICAgIC8vIGluaXRpYWxpemUgYXBwbHkgYnV0dG9uIHN0YXRlIGJhc2VkIG9uIGluaXRpYWwgdmFsdWVzXG4gICAgdGhpcy5oYXNTZWxlY3RlZEZpbHRlcnMgPSBPYmplY3Qua2V5cyh0aGlzLnNlcmlhbGl6ZSgpKS5sZW5ndGggPiAwO1xuICAgIC8vIGJ1aWxkIGNvbW1vbiByYW5nZXMgZm9yIG5neCBkYXRlcGlja2VyXG4gICAgdGhpcy5uZ3hSYW5nZXMgPSB0aGlzLmJ1aWxkTmd4UmFuZ2VzKCk7XG4gICAgdGhpcy5mb3JtLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgY29uc3Qgc2VyaWFsaXplZCA9IHRoaXMuc2VyaWFsaXplKCk7XG4gICAgICB0aGlzLmhhc1NlbGVjdGVkRmlsdGVycyA9IE9iamVjdC5rZXlzKHNlcmlhbGl6ZWQpLmxlbmd0aCA+IDA7XG4gICAgICB0aGlzLmZpbHRlcnNDaGFuZ2VkLmVtaXQoc2VyaWFsaXplZCk7XG4gICAgfSk7XG4gIH1cblxuICBvblNlbGVjdE9wZW5lZENoYW5nZShvcGVuZWQ6IGJvb2xlYW4sIHNlbGVjdDogYW55KTogdm9pZCB7XG4gICAgaWYgKG9wZW5lZCkge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IG9uRG9jRG93biA9IChlOiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgICAgY29uc3QgcGFuZWwgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuY2RrLW92ZXJsYXktcGFuZSAubWF0LXNlbGVjdC1wYW5lbCcpIGFzIEhUTUxFbGVtZW50IHwgbnVsbDtcbiAgICAgICAgICBjb25zdCB0YXJnZXQgPSBlLnRhcmdldCBhcyBOb2RlIHwgbnVsbDtcbiAgICAgICAgICBjb25zdCBvcmlnaW5FbCA9IChzZWxlY3Q/Ll9lbGVtZW50UmVmPy5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50KSB8fCBudWxsO1xuICAgICAgICAgIGNvbnN0IGluc2lkZVBhbmVsID0gISEocGFuZWwgJiYgdGFyZ2V0ICYmIHBhbmVsLmNvbnRhaW5zKHRhcmdldCkpO1xuICAgICAgICAgIGNvbnN0IGluc2lkZU9yaWdpbiA9ICEhKG9yaWdpbkVsICYmIHRhcmdldCAmJiBvcmlnaW5FbC5jb250YWlucyh0YXJnZXQpKTtcbiAgICAgICAgICBpZiAoIWluc2lkZVBhbmVsICYmICFpbnNpZGVPcmlnaW4pIHtcbiAgICAgICAgICAgIHNlbGVjdC5jbG9zZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgb25Eb2NEb3duLCB0cnVlKTtcbiAgICAgICAgdGhpcy5zZWxlY3RPdXRzaWRlQ2xlYW51cC5zZXQoc2VsZWN0LCAoKSA9PiBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCBvbkRvY0Rvd24sIHRydWUpKTtcbiAgICAgIH0sIDApO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBjbGVhbnVwID0gdGhpcy5zZWxlY3RPdXRzaWRlQ2xlYW51cC5nZXQoc2VsZWN0KTtcbiAgICAgIGlmIChjbGVhbnVwKSBjbGVhbnVwKCk7XG4gICAgICB0aGlzLnNlbGVjdE91dHNpZGVDbGVhbnVwLmRlbGV0ZShzZWxlY3QpO1xuICAgIH1cbiAgfVxuXG4gIG9uU2VhcmNoKGtleTogc3RyaW5nLCB0ZXh0OiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnNlYXJjaFRleHRCeUtleVtrZXldID0gKHRleHQgfHwgJycpLnRvTG93ZXJDYXNlKCk7XG4gIH1cblxuICBmaWx0ZXJlZE9wdGlvbnMoaXRlbTogRHluYW1pY0ZpbHRlckl0ZW0pOiBEeW5hbWljRmlsdGVyT3B0aW9uW10ge1xuICAgIGNvbnN0IG9wdGlvbnMgPSBpdGVtPy5vcHRpb25zIHx8IFtdO1xuICAgIGNvbnN0IHEgPSAodGhpcy5zZWFyY2hUZXh0QnlLZXlbaXRlbS5rZXldIHx8ICcnKS50cmltKCk7XG4gICAgaWYgKCFxKSByZXR1cm4gb3B0aW9ucztcbiAgICByZXR1cm4gb3B0aW9ucy5maWx0ZXIob3B0ID0+IHtcbiAgICAgIGNvbnN0IG5hbWUgPSAob3B0Lm5hbWUgPz8gb3B0LmxhYmVsID8/IFN0cmluZyhvcHQudmFsdWUgPz8gJycpKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgcmV0dXJuIG5hbWUuaW5jbHVkZXMocSk7XG4gICAgfSk7XG4gIH1cblxuICBnZXREYXRlR3JvdXAoa2V5OiBzdHJpbmcpOiBGb3JtR3JvdXAge1xuICAgIHJldHVybiB0aGlzLmZvcm0uZ2V0KGtleSkgYXMgRm9ybUdyb3VwO1xuICB9XG5cbiAgZ2V0U2VsZWN0Q29uZmlnKGl0ZW06IER5bmFtaWNGaWx0ZXJJdGVtKTogRHluYW1pY1NlbGVjdEZpZWxkQ29uZmlnIHtcbiAgICByZXR1cm4ge1xuICAgICAga2V5OiBpdGVtLmtleSxcbiAgICAgIGxhYmVsOiBpdGVtLmxhYmVsLFxuICAgICAgcGxhY2Vob2xkZXI6IGl0ZW0ucGxhY2Vob2xkZXIsXG4gICAgICBkaXNhYmxlZDogaXRlbS5kaXNhYmxlZCxcbiAgICAgIG11bHRpcGxlOiBpdGVtLm11bHRpcGxlLFxuICAgICAgc2VhcmNoYWJsZTogaXRlbS5zZWFyY2hhYmxlLFxuICAgICAgb3B0aW9uU3R5bGU6IGl0ZW0ub3B0aW9uU3R5bGUsXG4gICAgICBzaG93U2VsZWN0QWxsOiBpdGVtLnNob3dTZWxlY3RBbGwsXG4gICAgICBzZWxlY3RBbGxMYWJlbDogaXRlbS5zZWxlY3RBbGxMYWJlbCxcbiAgICAgIHNlbGVjdGVkVmFsdWU6IGl0ZW0uc2VsZWN0ZWRWYWx1ZSxcbiAgICAgIHNlcnZlclNlYXJjaDogaXRlbS5zZXJ2ZXJTZWFyY2gsXG4gICAgICBoYXNNb3JlOiBpdGVtLmhhc01vcmUsXG4gICAgICBpc0xvYWRpbmc6IGl0ZW0uaXNMb2FkaW5nLFxuICAgICAgb25TZWFyY2g6IGl0ZW0ub25TZWFyY2gsXG4gICAgICBvbkxvYWRNb3JlOiBpdGVtLm9uTG9hZE1vcmUsXG4gICAgICBvcHRpb25zOiBpdGVtLm9wdGlvbnMgfHwgW11cbiAgICB9O1xuICB9XG5cbiAgYXBwbHkoKTogdm9pZCB7XG4gICAgdGhpcy5jbG9zZUFsbE9wZW5TZWxlY3RzKCk7XG4gICAgY29uc3QgZmlsdGVyVmFsdWVzID0gdGhpcy5zZXJpYWxpemUoKTtcbiAgICB0aGlzLmZpbHRlcnNBcHBsaWVkLmVtaXQoZmlsdGVyVmFsdWVzKTtcbiAgICB0aGlzLm9uQXBwbHlGaWx0ZXJDbGljay5lbWl0KGZpbHRlclZhbHVlcyk7XG4gIH1cblxuICByZXNldCgpOiB2b2lkIHtcbiAgICB0aGlzLmNsb3NlQWxsT3BlblNlbGVjdHMoKTtcbiAgICBPYmplY3Qua2V5cyh0aGlzLmZvcm0uY29udHJvbHMpLmZvckVhY2goa2V5ID0+IHtcbiAgICAgIGNvbnN0IGN0cmwgPSB0aGlzLmZvcm0uZ2V0KGtleSk7XG4gICAgICBpZiAoY3RybCBpbnN0YW5jZW9mIEZvcm1Hcm91cCkge1xuICAgICAgICBjdHJsLmdldCgnc3RhcnQnKT8uc2V0VmFsdWUodW5kZWZpbmVkKTtcbiAgICAgICAgY3RybC5nZXQoJ2VuZCcpPy5zZXRWYWx1ZSh1bmRlZmluZWQpO1xuICAgICAgICAvLyBDbGVhciB0aGUgZGF0ZSByYW5nZSBwaWNrZXIgZGlzcGxheSBtb2RlbFxuICAgICAgICBpZiAodGhpcy5uZ3hEYXRlUmFuZ2VCeUtleVtrZXldKSB7XG4gICAgICAgICAgdGhpcy5uZ3hEYXRlUmFuZ2VCeUtleVtrZXldID0ge1xuICAgICAgICAgICAgc3RhcnREYXRlOiBudWxsLFxuICAgICAgICAgICAgZW5kRGF0ZTogbnVsbFxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pbnZva2VEYXRlUmFuZ2VDaGFuZ2Uoa2V5KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGN0cmw/LnNldFZhbHVlKHVuZGVmaW5lZCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5yZXNldEFjdGlvbi5lbWl0KCk7XG4gICAgdGhpcy5vblJlc2V0RmlsdGVyQ2xpY2suZW1pdCgpO1xuICAgIGNvbnN0IHNlcmlhbGl6ZWQgPSB0aGlzLnNlcmlhbGl6ZSgpO1xuICAgIHRoaXMuaGFzU2VsZWN0ZWRGaWx0ZXJzID0gT2JqZWN0LmtleXMoc2VyaWFsaXplZCkubGVuZ3RoID4gMDtcbiAgICB0aGlzLmZpbHRlcnNDaGFuZ2VkLmVtaXQoc2VyaWFsaXplZCk7XG4gIH1cblxuICAvKiogQ2xvc2UgYW55IG9wZW4gTWF0U2VsZWN0IHBhbmVscyBiZWZvcmUgcHJpbWFyeSBhY3Rpb25zIHRvIGF2b2lkIGRvdWJsZS1jbGljayBpc3N1ZXMgKi9cbiAgcHJlcGFyZVByaW1hcnlBY3Rpb24oKTogdm9pZCB7XG4gICAgdGhpcy5jbG9zZUFsbE9wZW5TZWxlY3RzKCk7XG4gIH1cblxuICBwcml2YXRlIGNsb3NlQWxsT3BlblNlbGVjdHMoKTogdm9pZCB7XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMuc2VsZWN0Q29tcG9uZW50cz8uZm9yRWFjaChjID0+IGMuY2xvc2VQYW5lbCgpKTtcbiAgICB9IGNhdGNoIHt9XG4gIH1cblxuICBwcml2YXRlIHNlcmlhbGl6ZSgpOiBEeW5hbWljRmlsdGVyVmFsdWVzIHtcbiAgICBjb25zdCByZXN1bHQ6IER5bmFtaWNGaWx0ZXJWYWx1ZXMgPSB7fTtcbiAgICAodGhpcy5jb25maWcgfHwgW10pLmZvckVhY2goYyA9PiB7XG4gICAgICBjb25zdCBjdHJsID0gdGhpcy5mb3JtLmdldChjLmtleSk7XG4gICAgICBpZiAoIWN0cmwpIHJldHVybjtcbiAgICAgIGxldCB2YWw6IGFueSA9IGN0cmwgaW5zdGFuY2VvZiBGb3JtR3JvdXAgPyAoY3RybCBhcyBGb3JtR3JvdXApLmdldFJhd1ZhbHVlKCkgOiBjdHJsLnZhbHVlO1xuICAgICAgaWYgKGMudHlwZSA9PT0gJ2RhdGUtcmFuZ2UtcGlja2VyJykge1xuICAgICAgICBjb25zdCBzdGFydCA9IHZhbD8uc3RhcnQ7IGNvbnN0IGVuZCA9IHZhbD8uZW5kO1xuICAgICAgICBpZiAoc3RhcnQgfHwgZW5kKSByZXN1bHRbYy5rZXldID0geyBzdGFydCwgZW5kIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAodmFsICE9PSB1bmRlZmluZWQgJiYgdmFsICE9PSBudWxsICYmIChBcnJheS5pc0FycmF5KHZhbCkgPyB2YWwubGVuZ3RoID4gMCA6IHZhbCAhPT0gJycpKSB7XG4gICAgICAgICAgcmVzdWx0W2Mua2V5XSA9IHZhbDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBwcml2YXRlIHJlc29sdmVJbml0aWFsU2VsZWN0VmFsdWUoaXRlbTogRHluYW1pY0ZpbHRlckl0ZW0pOiBhbnkge1xuICAgIGlmICh0aGlzLm1vZGVsICYmIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0aGlzLm1vZGVsLCBpdGVtLmtleSkpIHtcbiAgICAgIHJldHVybiB0aGlzLm1vZGVsW2l0ZW0ua2V5XTtcbiAgICB9XG4gICAgaWYgKGl0ZW0uc2VsZWN0ZWRWYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gaXRlbS5zZWxlY3RlZFZhbHVlO1xuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgcHJpdmF0ZSBjb2VyY2VUb1NpbmdsZVZhbHVlKHZhbHVlOiBhbnkpOiBhbnkge1xuICAgIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgcmV0dXJuIHZhbHVlLmxlbmd0aCA/IHZhbHVlWzBdIDogdW5kZWZpbmVkO1xuICAgIH1cbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuICBwcml2YXRlIGdldEluaXRpYWxEYXRlUmFuZ2VWYWx1ZShpdGVtOiBEeW5hbWljRmlsdGVySXRlbSk6IHsgc3RhcnQ6IERhdGUgfCBudWxsOyBlbmQ6IERhdGUgfCBudWxsIH0ge1xuICAgIGNvbnN0IG1vZGVsVmFsdWUgPSB0aGlzLm1vZGVsPy5baXRlbS5rZXldO1xuICAgIGNvbnN0IHN0YXJ0U291cmNlID0gbW9kZWxWYWx1ZT8uc3RhcnQgPz8gaXRlbS5zZWxlY3RlZFN0YXJ0RGF0ZSA/PyBudWxsO1xuICAgIGNvbnN0IGVuZFNvdXJjZSA9IG1vZGVsVmFsdWU/LmVuZCA/PyBpdGVtLnNlbGVjdGVkRW5kRGF0ZSA/PyBudWxsO1xuICAgIGNvbnN0IHN0YXJ0ID0gdGhpcy5ub3JtYWxpemVEYXRlVmFsdWUoc3RhcnRTb3VyY2UpO1xuICAgIGNvbnN0IGVuZCA9IHRoaXMubm9ybWFsaXplRGF0ZVZhbHVlKGVuZFNvdXJjZSk7XG4gICAgY29uc3QgY2xhbXAgPSAoZDogRGF0ZSB8IG51bGwpID0+IChkICYmIGQuZ2V0VGltZSgpID4gdGhpcy5tYXhEYXRlLmdldFRpbWUoKSA/IHRoaXMubWF4RGF0ZSA6IGQpO1xuICAgIHJldHVybiB7IHN0YXJ0OiBjbGFtcChzdGFydCksIGVuZDogY2xhbXAoZW5kKSB9O1xuICB9XG5cbiAgcHJpdmF0ZSBub3JtYWxpemVEYXRlVmFsdWUodmFsdWU6IGFueSk6IERhdGUgfCBudWxsIHtcbiAgICBpZiAoIXZhbHVlKSByZXR1cm4gbnVsbDtcbiAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBEYXRlICYmICFpc05hTih2YWx1ZS5nZXRUaW1lKCkpKSB7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuICAgIGNvbnN0IHBhcnNlZCA9IG5ldyBEYXRlKHZhbHVlKTtcbiAgICByZXR1cm4gaXNOYU4ocGFyc2VkLmdldFRpbWUoKSkgPyBudWxsIDogcGFyc2VkO1xuICB9XG5cbiAgcHJpdmF0ZSBpbnZva2VEYXRlUmFuZ2VDaGFuZ2Uoa2V5OiBzdHJpbmcsIGV2ZW50PzogTWF0RGF0ZXBpY2tlcklucHV0RXZlbnQ8RGF0ZT4gfCBFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IGl0ZW0gPSAodGhpcy5jb25maWcgfHwgW10pLmZpbmQoY2ZnID0+IGNmZy5rZXkgPT09IGtleSk7XG4gICAgaWYgKCFpdGVtPy5vbkRhdGVDaGFuZ2UpIHJldHVybjtcbiAgICBjb25zdCBkYXRlR3JvdXAgPSB0aGlzLmdldERhdGVHcm91cChrZXkpO1xuICAgIGlmICghZGF0ZUdyb3VwKSByZXR1cm47XG4gICAgY29uc3QgeyBzdGFydCwgZW5kIH0gPSBkYXRlR3JvdXAuZ2V0UmF3VmFsdWUoKSB8fCB7fTtcbiAgICBpdGVtLm9uRGF0ZUNoYW5nZShcbiAgICAgIHtcbiAgICAgICAgc3RhcnQ6IHRoaXMubm9ybWFsaXplRGF0ZVZhbHVlKHN0YXJ0KSxcbiAgICAgICAgZW5kOiB0aGlzLm5vcm1hbGl6ZURhdGVWYWx1ZShlbmQpLFxuICAgICAgfSxcbiAgICAgIGV2ZW50XG4gICAgKTtcbiAgfVxuXG4gIC8vIE1hdCBkYXRlIHJhbmdlIHBpY2tlciBvdmVybGF5IHByZXNldCBoZWxwZXJzXG4gIGFwcGx5UHJlc2V0VG9Hcm91cChrZXk6IHN0cmluZywgcHJlc2V0S2V5OiAndG9kYXknIHwgJ2xhc3Q3ZGF5cycgfCAnbGFzdDMwZGF5cycgfCAnbGFzdDkwZGF5cycgfCAndGhpc21vbnRoJyB8ICdsYXN0bW9udGgnKTogdm9pZCB7XG4gICAgY29uc3QgZGF0ZUdyb3VwID0gdGhpcy5nZXREYXRlR3JvdXAoa2V5KTtcbiAgICBpZiAoIWRhdGVHcm91cCkgcmV0dXJuO1xuICAgIGNvbnN0IHsgc3RhcnQsIGVuZCB9ID0gdGhpcy5nZXRQcmVzZXREYXRlcyhwcmVzZXRLZXkpO1xuICAgIGRhdGVHcm91cC5wYXRjaFZhbHVlKHsgc3RhcnQsIGVuZCB9KTtcbiAgICB0aGlzLmZpbHRlcnNDaGFuZ2VkLmVtaXQodGhpcy5zZXJpYWxpemUoKSk7XG4gICAgdGhpcy5pbnZva2VEYXRlUmFuZ2VDaGFuZ2Uoa2V5KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0UHJlc2V0RGF0ZXMocHJlc2V0S2V5OiAndG9kYXknIHwgJ2xhc3Q3ZGF5cycgfCAnbGFzdDMwZGF5cycgfCAnbGFzdDkwZGF5cycgfCAndGhpc21vbnRoJyB8ICdsYXN0bW9udGgnKTogeyBzdGFydDogRGF0ZTsgZW5kOiBEYXRlIH0ge1xuICAgIGNvbnN0IHRvZGF5ID0gbmV3IERhdGUoKTtcbiAgICBjb25zdCBjbGFtcFRvRW5kT2ZUb2RheSA9IChkOiBEYXRlKSA9PiB7IGNvbnN0IG5kID0gbmV3IERhdGUoZCk7IG5kLnNldEhvdXJzKDIzLDU5LDU5LDk5OSk7IHJldHVybiBuZDsgfTtcbiAgICBzd2l0Y2ggKHByZXNldEtleSkge1xuICAgICAgY2FzZSAndG9kYXknOlxuICAgICAgICByZXR1cm4geyBzdGFydDogdG9kYXksIGVuZDogdG9kYXkgfTtcbiAgICAgIGNhc2UgJ2xhc3Q3ZGF5cyc6IHtcbiAgICAgICAgY29uc3Qgc3RhcnQgPSBuZXcgRGF0ZSgpOyBzdGFydC5zZXREYXRlKHN0YXJ0LmdldERhdGUoKSAtIDYpO1xuICAgICAgICByZXR1cm4geyBzdGFydCwgZW5kOiB0b2RheSB9O1xuICAgICAgfVxuICAgICAgY2FzZSAnbGFzdDMwZGF5cyc6IHtcbiAgICAgICAgY29uc3Qgc3RhcnQgPSBuZXcgRGF0ZSgpOyBzdGFydC5zZXREYXRlKHN0YXJ0LmdldERhdGUoKSAtIDI5KTtcbiAgICAgICAgcmV0dXJuIHsgc3RhcnQsIGVuZDogdG9kYXkgfTtcbiAgICAgIH1cbiAgICAgIGNhc2UgJ2xhc3Q5MGRheXMnOiB7XG4gICAgICAgIGNvbnN0IHN0YXJ0ID0gbmV3IERhdGUoKTsgc3RhcnQuc2V0RGF0ZShzdGFydC5nZXREYXRlKCkgLSA4OSk7XG4gICAgICAgIHJldHVybiB7IHN0YXJ0LCBlbmQ6IHRvZGF5IH07XG4gICAgICB9XG4gICAgICBjYXNlICd0aGlzbW9udGgnOiB7XG4gICAgICAgIGNvbnN0IHN0YXJ0ID0gbmV3IERhdGUodG9kYXkuZ2V0RnVsbFllYXIoKSwgdG9kYXkuZ2V0TW9udGgoKSwgMSk7XG4gICAgICAgIHJldHVybiB7IHN0YXJ0LCBlbmQ6IHRvZGF5IH07XG4gICAgICB9XG4gICAgICBjYXNlICdsYXN0bW9udGgnOiB7XG4gICAgICAgIGNvbnN0IHN0YXJ0ID0gbmV3IERhdGUodG9kYXkuZ2V0RnVsbFllYXIoKSwgdG9kYXkuZ2V0TW9udGgoKSAtIDEsIDEpO1xuICAgICAgICBjb25zdCBlbmQgPSBuZXcgRGF0ZSh0b2RheS5nZXRGdWxsWWVhcigpLCB0b2RheS5nZXRNb250aCgpLCAwKTtcbiAgICAgICAgcmV0dXJuIHsgc3RhcnQsIGVuZDogY2xhbXBUb0VuZE9mVG9kYXkoZW5kKSB9O1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBwcml2YXRlIHN0YXJ0T2ZEYXkoZDogRGF0ZSk6IERhdGUgeyBjb25zdCBuZCA9IG5ldyBEYXRlKGQpOyBuZC5zZXRIb3VycygwLDAsMCwwKTsgcmV0dXJuIG5kOyB9XG4gIHByaXZhdGUgZW5kT2ZEYXkoZDogRGF0ZSk6IERhdGUgeyBjb25zdCBuZCA9IG5ldyBEYXRlKGQpOyBuZC5zZXRIb3VycygyMyw1OSw1OSw5OTkpOyByZXR1cm4gbmQ7IH1cbiAgcHJpdmF0ZSBzdGFydE9mTW9udGgoeWVhcjogbnVtYmVyLCBtb250aDogbnVtYmVyKTogRGF0ZSB7IHJldHVybiBuZXcgRGF0ZSh5ZWFyLCBtb250aCwgMSwgMCwwLDAsMCk7IH1cbiAgcHJpdmF0ZSBlbmRPZk1vbnRoKHllYXI6IG51bWJlciwgbW9udGg6IG51bWJlcik6IERhdGUgeyByZXR1cm4gbmV3IERhdGUoeWVhciwgbW9udGggKyAxLCAwLCAyMyw1OSw1OSw5OTkpOyB9XG4gIHByaXZhdGUgYnVpbGROZ3hSYW5nZXMoKTogUmVjb3JkPHN0cmluZywgW0RhdGUsIERhdGVdPiB7XG4gICAgY29uc3QgdG9kYXkgPSBuZXcgRGF0ZSgpO1xuICAgIGNvbnN0IGxhc3Q3U3RhcnQgPSBuZXcgRGF0ZSgpOyBsYXN0N1N0YXJ0LnNldERhdGUobGFzdDdTdGFydC5nZXREYXRlKCkgLSA2KTtcbiAgICBjb25zdCBsYXN0MzBTdGFydCA9IG5ldyBEYXRlKCk7IGxhc3QzMFN0YXJ0LnNldERhdGUobGFzdDMwU3RhcnQuZ2V0RGF0ZSgpIC0gMjkpO1xuICAgIGNvbnN0IGxhc3Q5MFN0YXJ0ID0gbmV3IERhdGUoKTsgbGFzdDkwU3RhcnQuc2V0RGF0ZShsYXN0OTBTdGFydC5nZXREYXRlKCkgLSA4OSk7XG4gICAgY29uc3QgdGhpc01vbnRoU3RhcnQgPSB0aGlzLnN0YXJ0T2ZNb250aCh0b2RheS5nZXRGdWxsWWVhcigpLCB0b2RheS5nZXRNb250aCgpKTtcbiAgICBjb25zdCBsYXN0TW9udGhTdGFydCA9IHRoaXMuc3RhcnRPZk1vbnRoKHRvZGF5LmdldEZ1bGxZZWFyKCksIHRvZGF5LmdldE1vbnRoKCkgLSAxKTtcbiAgICBjb25zdCBsYXN0TW9udGhFbmQgPSB0aGlzLmVuZE9mTW9udGgodG9kYXkuZ2V0RnVsbFllYXIoKSwgdG9kYXkuZ2V0TW9udGgoKSAtIDEpO1xuICAgIHJldHVybiB7XG4gICAgICAnVG9kYXknOiBbdGhpcy5zdGFydE9mRGF5KHRvZGF5KSwgdGhpcy5lbmRPZkRheSh0b2RheSldLFxuICAgICAgJ0xhc3QgNyBEYXlzJzogW3RoaXMuc3RhcnRPZkRheShsYXN0N1N0YXJ0KSwgdGhpcy5lbmRPZkRheSh0b2RheSldLFxuICAgICAgJ0xhc3QgMzAgRGF5cyc6IFt0aGlzLnN0YXJ0T2ZEYXkobGFzdDMwU3RhcnQpLCB0aGlzLmVuZE9mRGF5KHRvZGF5KV0sXG4gICAgICAnTGFzdCA5MCBEYXlzJzogW3RoaXMuc3RhcnRPZkRheShsYXN0OTBTdGFydCksIHRoaXMuZW5kT2ZEYXkodG9kYXkpXSxcbiAgICAgICdUaGlzIE1vbnRoJzogW3RoaXMuc3RhcnRPZkRheSh0aGlzTW9udGhTdGFydCksIHRoaXMuZW5kT2ZEYXkodG9kYXkpXSxcbiAgICAgICdMYXN0IE1vbnRoJzogW3RoaXMuc3RhcnRPZkRheShsYXN0TW9udGhTdGFydCksIHRoaXMuZW5kT2ZEYXkobGFzdE1vbnRoRW5kKV0sXG4gICAgfTtcbiAgfVxuICBvbkRhdGVyYW5nZXBpY2tlckNoYW5nZShldmVudDogeyBzdGFydERhdGU6IERhdGUgfCBudWxsOyBlbmREYXRlOiBEYXRlIHwgbnVsbCB9LCBrZXk6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IGdyb3VwID0gdGhpcy5nZXREYXRlR3JvdXAoa2V5KTtcbiAgICBpZiAoIWdyb3VwKSByZXR1cm47XG4gICAgXG4gICAgZ3JvdXAucGF0Y2hWYWx1ZSh7XG4gICAgICBzdGFydDogZXZlbnQuc3RhcnREYXRlLFxuICAgICAgZW5kOiBldmVudC5lbmREYXRlXG4gICAgfSwgeyBlbWl0RXZlbnQ6IHRydWUgfSk7XG4gICAgXG4gICAgY29uc3Qgc2VyaWFsaXplZCA9IHRoaXMuc2VyaWFsaXplKCk7XG4gICAgdGhpcy5oYXNTZWxlY3RlZEZpbHRlcnMgPSBPYmplY3Qua2V5cyhzZXJpYWxpemVkKS5sZW5ndGggPiAwO1xuICAgIHRoaXMuZmlsdGVyc0NoYW5nZWQuZW1pdChzZXJpYWxpemVkKTtcbiAgICB0aGlzLmludm9rZURhdGVSYW5nZUNoYW5nZShrZXkpO1xuICB9XG5cbiAgb25EYXRlcmFuZ2VwaWNrZXJBcHBseShldmVudDogeyBzdGFydERhdGU6IERhdGUgfCBudWxsOyBlbmREYXRlOiBEYXRlIHwgbnVsbCB9LCBrZXk6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMub25EYXRlcmFuZ2VwaWNrZXJDaGFuZ2UoZXZlbnQsIGtleSk7XG4gICAgLy8gT3B0aW9uYWxseSB0cmlnZ2VyIGFwcGx5IGFjdGlvblxuICAgIGNvbnN0IHNlcmlhbGl6ZWQgPSB0aGlzLnNlcmlhbGl6ZSgpO1xuICAgIGlmIChldmVudC5zdGFydERhdGUgJiYgZXZlbnQuZW5kRGF0ZSkge1xuICAgICAgLy8gRG9uJ3QgYXV0by1hcHBseSwgbGV0IHVzZXIgY2xpY2sgQXBwbHkgRmlsdGVyIGJ1dHRvblxuICAgIH1cbiAgfVxuXG4gIGdldERhdGVyYW5nZXBpY2tlclJhbmdlcygpOiBhbnkge1xuICAgIC8vIFVzZSB0aGUgZXhpc3RpbmcgZ2V0UHJlc2V0RGF0ZXMgbG9naWMgdG8gZW5zdXJlIGNvbnNpc3RlbmN5XG4gICAgY29uc3QgdG9kYXlQcmVzZXQgPSB0aGlzLmdldFByZXNldERhdGVzKCd0b2RheScpO1xuICAgIGNvbnN0IGxhc3Q3UHJlc2V0ID0gdGhpcy5nZXRQcmVzZXREYXRlcygnbGFzdDdkYXlzJyk7XG4gICAgY29uc3QgbGFzdDMwUHJlc2V0ID0gdGhpcy5nZXRQcmVzZXREYXRlcygnbGFzdDMwZGF5cycpO1xuICAgIGNvbnN0IGxhc3Q5MFByZXNldCA9IHRoaXMuZ2V0UHJlc2V0RGF0ZXMoJ2xhc3Q5MGRheXMnKTtcbiAgICBjb25zdCB0aGlzTW9udGhQcmVzZXQgPSB0aGlzLmdldFByZXNldERhdGVzKCd0aGlzbW9udGgnKTtcbiAgICBjb25zdCBsYXN0TW9udGhQcmVzZXQgPSB0aGlzLmdldFByZXNldERhdGVzKCdsYXN0bW9udGgnKTtcbiAgICBcbiAgICByZXR1cm4ge1xuICAgICAgJ1RvZGF5JzogW3RvZGF5UHJlc2V0LnN0YXJ0LCB0aGlzLmVuZE9mRGF5KHRvZGF5UHJlc2V0LmVuZCldLFxuICAgICAgJ0xhc3QgNyBEYXlzJzogW2xhc3Q3UHJlc2V0LnN0YXJ0LCB0aGlzLmVuZE9mRGF5KGxhc3Q3UHJlc2V0LmVuZCldLFxuICAgICAgJ0xhc3QgMzAgRGF5cyc6IFtsYXN0MzBQcmVzZXQuc3RhcnQsIHRoaXMuZW5kT2ZEYXkobGFzdDMwUHJlc2V0LmVuZCldLFxuICAgICAgJ0xhc3QgOTAgRGF5cyc6IFtsYXN0OTBQcmVzZXQuc3RhcnQsIHRoaXMuZW5kT2ZEYXkobGFzdDkwUHJlc2V0LmVuZCldLFxuICAgICAgJ1RoaXMgTW9udGgnOiBbdGhpc01vbnRoUHJlc2V0LnN0YXJ0LCB0aGlzLmVuZE9mRGF5KHRoaXNNb250aFByZXNldC5lbmQpXSxcbiAgICAgICdMYXN0IE1vbnRoJzogW2xhc3RNb250aFByZXNldC5zdGFydCwgdGhpcy5lbmRPZkRheShsYXN0TW9udGhQcmVzZXQuZW5kKV1cbiAgICB9O1xuICB9XG5cbiAgZ2V0RGF0ZVZhbGlkYXRpb25FcnJvcihrZXk6IHN0cmluZyk6IHN0cmluZyB8IG51bGwge1xuICAgIGNvbnN0IGRhdGVHcm91cCA9IHRoaXMuZ2V0RGF0ZUdyb3VwKGtleSk7XG4gICAgaWYgKCFkYXRlR3JvdXApIHJldHVybiBudWxsO1xuXG4gICAgY29uc3Qgc3RhcnRDdHJsID0gZGF0ZUdyb3VwLmNvbnRyb2xzWydzdGFydCddO1xuICAgIGNvbnN0IGVuZEN0cmwgPSBkYXRlR3JvdXAuY29udHJvbHNbJ2VuZCddO1xuICAgIGNvbnN0IHN0YXJ0VmFsID0gc3RhcnRDdHJsPy52YWx1ZTtcbiAgICBjb25zdCBlbmRWYWwgPSBlbmRDdHJsPy52YWx1ZTtcblxuICAgIGlmICghc3RhcnRWYWwgJiYgIWVuZFZhbCkgcmV0dXJuIG51bGw7XG5cbiAgICBpZiAoc3RhcnRWYWwgJiYgIWVuZFZhbCkgcmV0dXJuIGBQbGVhc2Ugc2VsZWN0IGFuIGVuZCBkYXRlYDtcbiAgICBpZiAoIXN0YXJ0VmFsICYmIGVuZFZhbCkgcmV0dXJuIGBQbGVhc2Ugc2VsZWN0IGEgc3RhcnQgZGF0ZWA7XG5cbiAgICBpZiAoZGF0ZUdyb3VwLmludmFsaWQpIHtcbiAgICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMuY29uZmlnPy5maW5kKGMgPT4gYy5rZXkgPT09IGtleSk7XG4gICAgICByZXR1cm4gY29uZmlnID8gYCR7Y29uZmlnLmxhYmVsfSBpcyBpbnZhbGlkYCA6ICdEYXRlIHJhbmdlIGlzIGludmFsaWQnO1xuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgLy8gRHluYW1pYyBEYXRlIFBpY2tlciBJbnRlZ3JhdGlvbiBNZXRob2RzIHJlbW92ZWQgKGNvbXBvbmVudCBubyBsb25nZXIgdXNlZClcbn1cblxuXG4iLCI8ZGl2IGNsYXNzPVwiY3FhLXVpLXJvb3QgY3FhLXVpLWRhdGVyYW5nZS1waWNrZXJcIj5cbiAgPGRpdiBjbGFzcz1cImNxYS1maWx0ZXIgY3FhLW1iLVsyOHB4XVwiICpuZ0lmPVwic2hvd0ZpbHRlclBhbmVsXCIgc3R5bGU9XCJoZWlnaHQ6IGF1dG87XCI+XG4gICAgPCEtLSBCb3R0b20gTGF5b3V0OiBDdXJyZW50IGRlc2lnbiB3aXRoIHNlbGVjdG9ycyBpbiBncmlkIGFuZCBidXR0b25zIGJlbG93IC0tPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJidXR0b25MYXlvdXQgPT09ICdib3R0b20nXCI+XG4gICAgICA8Zm9ybSBjbGFzcz1cInRzLWZvcm0gY3FhLWdyaWQgbGc6Y3FhLWdyaWQtY29scy00IG1kOmNxYS1ncmlkLWNvbHMtMiBjcWEtZ2FwLTQgY3FhLXJlbGF0aXZlXCIgW2Zvcm1Hcm91cF09XCJmb3JtXCJcbiAgICAgICAgKGtleWRvd24uZW50ZXIpPVwiKGZhbHNlKVwiIG5vdmFsaWRhdGU9XCJub3ZhbGlkYXRlXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGMgb2YgY29uZmlnXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFjLmhpZGRlblwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgY3VzLXJhbmdlLXNlbGVjdCBjcWEtZmxleCBjcWEtZmxleC1jb2wgY3FhLWdhcC0yIGNxYS1mbGV4LXNocmluay0wIGZpbHRlci1zZWxlY3Rvci13aWR0aCBjcWEtdy1mdWxsXCI+XG4gICAgICAgICAgICAgIDwhLS0gU2VsZWN0IC0tPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYy50eXBlID09PSAnc2VsZWN0J1wiPlxuICAgICAgICAgICAgICAgIDxjcWEtZHluYW1pYy1zZWxlY3QgW2Zvcm1dPVwiZm9ybVwiIFtjb25maWddPVwiZ2V0U2VsZWN0Q29uZmlnKGMpXCI+PC9jcWEtZHluYW1pYy1zZWxlY3Q+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgIDwhLS0gRGF0ZSBSYW5nZSBQaWNrZXIgLS0+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjLnR5cGUgPT09ICdkYXRlLXJhbmdlLXBpY2tlcidcIj5cbiAgICAgICAgICAgICAgICA8Y3FhLWRhdGVyYW5nZXBpY2tlclxuICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImMubGFiZWxcIlxuICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImMucGxhY2Vob2xkZXIgfHwgJ1N0YXJ0IERhdGUgLSBFbmQgRGF0ZSdcIlxuICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImMuZGlzYWJsZWQgfHwgZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgW3N0YXJ0RGF0ZV09XCJnZXREYXRlR3JvdXAoYy5rZXkpPy5nZXQoJ3N0YXJ0Jyk/LnZhbHVlXCJcbiAgICAgICAgICAgICAgICAgIFtlbmREYXRlXT1cImdldERhdGVHcm91cChjLmtleSk/LmdldCgnZW5kJyk/LnZhbHVlXCJcbiAgICAgICAgICAgICAgICAgIFttaW5EYXRlXT1cInVuZGVmaW5lZFwiXG4gICAgICAgICAgICAgICAgICBbbWF4RGF0ZV09XCJtYXhEYXRlXCJcbiAgICAgICAgICAgICAgICAgIFtyYW5nZXNdPVwiZ2V0RGF0ZXJhbmdlcGlja2VyUmFuZ2VzKClcIlxuICAgICAgICAgICAgICAgICAgW2F1dG9BcHBseV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgIFthbHdheXNTaG93Q2FsZW5kYXJzXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgW29wZW5zXT1cImMub3BlbnMgfHwgJ2NlbnRlcidcIlxuICAgICAgICAgICAgICAgICAgW2Ryb3BzXT1cImMuZHJvcHMgfHwgJ2F1dG8nXCJcbiAgICAgICAgICAgICAgICAgIFtwYXJlbnRFbF09XCJjLnBhcmVudEVsXCJcbiAgICAgICAgICAgICAgICAgIChkYXRlc1VwZGF0ZWQpPVwib25EYXRlcmFuZ2VwaWNrZXJDaGFuZ2UoJGV2ZW50LCBjLmtleSlcIlxuICAgICAgICAgICAgICAgICAgKGFwcGx5Q2xpY2tlZCk9XCJvbkRhdGVyYW5nZXBpY2tlckFwcGx5KCRldmVudCwgYy5rZXkpXCI+XG4gICAgICAgICAgICAgICAgPC9jcWEtZGF0ZXJhbmdlcGlja2VyPlxuICAgICAgICAgICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJnZXREYXRlR3JvdXAoYy5rZXkpPy5pbnZhbGlkICYmIGdldERhdGVHcm91cChjLmtleSk/LnRvdWNoZWRcIj5cbiAgICAgICAgICAgICAgICAgIHt7IGdldERhdGVWYWxpZGF0aW9uRXJyb3IoYy5rZXkpIH19XG4gICAgICAgICAgICAgICAgPC9tYXQtZXJyb3I+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9mb3JtPlxuXG4gICAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWp1c3RpZnktZW5kIGNxYS1pdGVtcy1zdHJldGNoIGNxYS1nYXAtMiBjcWEtbXQtNFwiPlxuICAgICAgICA8Y3FhLWJ1dHRvbiB2YXJpYW50PVwiZmlsbGVkXCIgKG1vdXNlZG93bik9XCJwcmVwYXJlUHJpbWFyeUFjdGlvbigpXCIgKGNsaWNrZWQpPVwiYXBwbHkoKVwiIFtkaXNhYmxlZF09XCIhaGFzU2VsZWN0ZWRGaWx0ZXJzXCI+QXBwbHkgRmlsdGVyPC9jcWEtYnV0dG9uPlxuICAgICAgICA8Y3FhLWJ1dHRvbiB2YXJpYW50PVwib3V0bGluZWRcIiAobW91c2Vkb3duKT1cInByZXBhcmVQcmltYXJ5QWN0aW9uKClcIiAoY2xpY2tlZCk9XCJyZXNldCgpXCI+UmVzZXQ8L2NxYS1idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDwhLS0gUmlnaHQgTGF5b3V0OiBCdXR0b25zIG9uIGxlZnRtb3N0IHNpZGUsIHNlbGVjdG9ycyBvbiByaWdodG1vc3Qgc2lkZSAtLT5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYnV0dG9uTGF5b3V0ID09PSAncmlnaHQnXCI+XG4gICAgICA8Zm9ybSBjbGFzcz1cInRzLWZvcm0gY3FhLWZsZXggY3FhLWZsZXgtd3JhcCBjcWEtaXRlbXMtZW5kIGNxYS1qdXN0aWZ5LWJldHdlZW4gY3FhLWdhcC00IGNxYS11aS1kYXRlcmFuZ2UtcGlja2VyIGNxYS1yZWxhdGl2ZVwiIFtmb3JtR3JvdXBdPVwiZm9ybVwiXG4gICAgICAgIChrZXlkb3duLmVudGVyKT1cIihmYWxzZSlcIiBub3ZhbGlkYXRlPVwibm92YWxpZGF0ZVwiIHN0eWxlPVwiaGVpZ2h0OiBhdXRvO1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWl0ZW1zLXN0cmV0Y2ggY3FhLWdhcC0yIGNxYS1mbGV4LXNocmluay0wIGNxYS1vcmRlci1maXJzdCBjcWEtbXItYXV0b1wiPlxuICAgICAgICAgIDxjcWEtYnV0dG9uIHZhcmlhbnQ9XCJmaWxsZWRcIiAoY2xpY2tlZCk9XCJhcHBseSgpXCIgW2Rpc2FibGVkXT1cIiFoYXNTZWxlY3RlZEZpbHRlcnNcIj5BcHBseSBGaWx0ZXI8L2NxYS1idXR0b24+XG4gICAgICAgICAgPGNxYS1idXR0b24gdmFyaWFudD1cIm91dGxpbmVkXCIgKGNsaWNrZWQpPVwicmVzZXQoKVwiPlJlc2V0PC9jcWEtYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1mbGV4LXdyYXAgY3FhLWl0ZW1zLWVuZCBjcWEtZ2FwLTQgY3FhLWZsZXgtMSBjcWEtanVzdGlmeS1lbmQgY3FhLW9yZGVyLWxhc3QgY3FhLW1sLWF1dG9cIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjIG9mIGNvbmZpZ1wiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhYy5oaWRkZW5cIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIGNxYS1mbGV4IGNxYS1mbGV4LWNvbCBjcWEtZ2FwLTIgY3FhLWZsZXgtc2hyaW5rLTAgZmlsdGVyLXNlbGVjdG9yLXdpZHRoXCI+XG4gICAgICAgICAgICAgIDwhLS0gU2VsZWN0IC0tPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYy50eXBlID09PSAnc2VsZWN0J1wiPlxuICAgICAgICAgICAgICAgIDxjcWEtZHluYW1pYy1zZWxlY3QgW2Zvcm1dPVwiZm9ybVwiIFtjb25maWddPVwiZ2V0U2VsZWN0Q29uZmlnKGMpXCI+PC9jcWEtZHluYW1pYy1zZWxlY3Q+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgIDwhLS0gRGF0ZSBSYW5nZSAoRGF0ZXJhbmdlcGlja2VyKSAtLT4gXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjLnR5cGUgPT09ICdkYXRlLXJhbmdlLXBpY2tlcidcIj5cbiAgICAgICAgICAgICAgICA8Y3FhLWRhdGVyYW5nZXBpY2tlclxuICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImMubGFiZWxcIlxuICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImMucGxhY2Vob2xkZXIgfHwgJ1N0YXJ0IERhdGUgLSBFbmQgRGF0ZSdcIlxuICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImMuZGlzYWJsZWQgfHwgZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgW3N0YXJ0RGF0ZV09XCJnZXREYXRlR3JvdXAoYy5rZXkpPy5nZXQoJ3N0YXJ0Jyk/LnZhbHVlXCJcbiAgICAgICAgICAgICAgICAgIFtlbmREYXRlXT1cImdldERhdGVHcm91cChjLmtleSk/LmdldCgnZW5kJyk/LnZhbHVlXCJcbiAgICAgICAgICAgICAgICAgIFttaW5EYXRlXT1cInVuZGVmaW5lZFwiXG4gICAgICAgICAgICAgICAgICBbbWF4RGF0ZV09XCJtYXhEYXRlXCJcbiAgICAgICAgICAgICAgICAgIFtyYW5nZXNdPVwiZ2V0RGF0ZXJhbmdlcGlja2VyUmFuZ2VzKClcIlxuICAgICAgICAgICAgICAgICAgW2F1dG9BcHBseV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgIFthbHdheXNTaG93Q2FsZW5kYXJzXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgW29wZW5zXT1cImMub3BlbnMgfHwgJ2NlbnRlcidcIlxuICAgICAgICAgICAgICAgICAgW2Ryb3BzXT1cImMuZHJvcHMgfHwgJ2F1dG8nXCJcbiAgICAgICAgICAgICAgICAgIFtwYXJlbnRFbF09XCJjLnBhcmVudEVsXCJcbiAgICAgICAgICAgICAgICAgIChkYXRlc1VwZGF0ZWQpPVwib25EYXRlcmFuZ2VwaWNrZXJDaGFuZ2UoJGV2ZW50LCBjLmtleSlcIlxuICAgICAgICAgICAgICAgICAgKGFwcGx5Q2xpY2tlZCk9XCJvbkRhdGVyYW5nZXBpY2tlckFwcGx5KCRldmVudCwgYy5rZXkpXCI+XG4gICAgICAgICAgICAgICAgPC9jcWEtZGF0ZXJhbmdlcGlja2VyPlxuICAgICAgICAgICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJnZXREYXRlR3JvdXAoYy5rZXkpPy5pbnZhbGlkICYmIGdldERhdGVHcm91cChjLmtleSk/LnRvdWNoZWRcIj5cbiAgICAgICAgICAgICAgICAgIHt7IGdldERhdGVWYWxpZGF0aW9uRXJyb3IoYy5rZXkpIH19XG4gICAgICAgICAgICAgICAgPC9tYXQtZXJyb3I+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZm9ybT5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDwhLS0gTGVmdCBMYXlvdXQ6IFNlbGVjdG9ycyBvbiBsZWZ0bW9zdCBzaWRlLCBidXR0b25zIG9uIHJpZ2h0bW9zdCBzaWRlIC0tPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJidXR0b25MYXlvdXQgPT09ICdsZWZ0J1wiPlxuICAgICAgPGZvcm0gY2xhc3M9XCJ0cy1mb3JtIGNxYS1mbGV4IGNxYS1mbGV4LXdyYXAgY3FhLWl0ZW1zLWVuZCBjcWEtanVzdGlmeS1iZXR3ZWVuIGNxYS1nYXAtNCBjcWEtdWktZGF0ZXJhbmdlLXBpY2tlciBjcWEtcmVsYXRpdmVcIiBbZm9ybUdyb3VwXT1cImZvcm1cIlxuICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCIoZmFsc2UpXCIgbm92YWxpZGF0ZT1cIm5vdmFsaWRhdGVcIiBzdHlsZT1cImhlaWdodDogYXV0bztcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1mbGV4LXdyYXAgY3FhLWl0ZW1zLWVuZCBjcWEtZ2FwLTQgY3FhLWZsZXgtMSBjcWEtb3JkZXItZmlyc3QgY3FhLW1yLWF1dG9cIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjIG9mIGNvbmZpZ1wiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhYy5oaWRkZW5cIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIGNxYS1mbGV4IGNxYS1mbGV4LWNvbCBjcWEtZ2FwLTIgY3FhLWZsZXgtc2hyaW5rLTAgZmlsdGVyLXNlbGVjdG9yLXdpZHRoXCI+XG4gICAgICAgICAgICAgIDwhLS0gU2VsZWN0IC0tPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYy50eXBlID09PSAnc2VsZWN0J1wiPlxuICAgICAgICAgICAgICAgIDxjcWEtZHluYW1pYy1zZWxlY3QgW2Zvcm1dPVwiZm9ybVwiIFtjb25maWddPVwiZ2V0U2VsZWN0Q29uZmlnKGMpXCI+PC9jcWEtZHluYW1pYy1zZWxlY3Q+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgIDwhLS0gRGF0ZSBSYW5nZSAoRGF0ZXJhbmdlcGlja2VyKSAtLT4gXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjLnR5cGUgPT09ICdkYXRlLXJhbmdlLXBpY2tlcidcIj5cbiAgICAgICAgICAgICAgICA8Y3FhLWRhdGVyYW5nZXBpY2tlclxuICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImMubGFiZWxcIlxuICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImMucGxhY2Vob2xkZXIgfHwgJ1N0YXJ0IERhdGUgLSBFbmQgRGF0ZSdcIlxuICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImMuZGlzYWJsZWQgfHwgZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgW3N0YXJ0RGF0ZV09XCJnZXREYXRlR3JvdXAoYy5rZXkpPy5nZXQoJ3N0YXJ0Jyk/LnZhbHVlXCJcbiAgICAgICAgICAgICAgICAgIFtlbmREYXRlXT1cImdldERhdGVHcm91cChjLmtleSk/LmdldCgnZW5kJyk/LnZhbHVlXCJcbiAgICAgICAgICAgICAgICAgIFttaW5EYXRlXT1cInVuZGVmaW5lZFwiXG4gICAgICAgICAgICAgICAgICBbbWF4RGF0ZV09XCJtYXhEYXRlXCJcbiAgICAgICAgICAgICAgICAgIFtyYW5nZXNdPVwiZ2V0RGF0ZXJhbmdlcGlja2VyUmFuZ2VzKClcIlxuICAgICAgICAgICAgICAgICAgW2F1dG9BcHBseV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgIFthbHdheXNTaG93Q2FsZW5kYXJzXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgW29wZW5zXT1cImMub3BlbnMgfHwgJ2NlbnRlcidcIlxuICAgICAgICAgICAgICAgICAgW2Ryb3BzXT1cImMuZHJvcHMgfHwgJ2F1dG8nXCJcbiAgICAgICAgICAgICAgICAgIFtwYXJlbnRFbF09XCJjLnBhcmVudEVsXCJcbiAgICAgICAgICAgICAgICAgIChkYXRlc1VwZGF0ZWQpPVwib25EYXRlcmFuZ2VwaWNrZXJDaGFuZ2UoJGV2ZW50LCBjLmtleSlcIlxuICAgICAgICAgICAgICAgICAgKGFwcGx5Q2xpY2tlZCk9XCJvbkRhdGVyYW5nZXBpY2tlckFwcGx5KCRldmVudCwgYy5rZXkpXCI+XG4gICAgICAgICAgICAgICAgPC9jcWEtZGF0ZXJhbmdlcGlja2VyPlxuICAgICAgICAgICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJnZXREYXRlR3JvdXAoYy5rZXkpPy5pbnZhbGlkICYmIGdldERhdGVHcm91cChjLmtleSk/LnRvdWNoZWRcIj5cbiAgICAgICAgICAgICAgICAgIHt7IGdldERhdGVWYWxpZGF0aW9uRXJyb3IoYy5rZXkpIH19XG4gICAgICAgICAgICAgICAgPC9tYXQtZXJyb3I+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1pdGVtcy1zdHJldGNoIGNxYS1nYXAtMiBjcWEtZmxleC1zaHJpbmstMCBjcWEtb3JkZXItbGFzdCBjcWEtbWwtYXV0b1wiPlxuICAgICAgICAgIDxjcWEtYnV0dG9uIHZhcmlhbnQ9XCJmaWxsZWRcIiAobW91c2Vkb3duKT1cInByZXBhcmVQcmltYXJ5QWN0aW9uKClcIiAoY2xpY2tlZCk9XCJhcHBseSgpXCIgW2Rpc2FibGVkXT1cIiFoYXNTZWxlY3RlZEZpbHRlcnNcIj5BcHBseSBGaWx0ZXI8L2NxYS1idXR0b24+XG4gICAgICAgICAgPGNxYS1idXR0b24gdmFyaWFudD1cIm91dGxpbmVkXCIgKG1vdXNlZG93bik9XCJwcmVwYXJlUHJpbWFyeUFjdGlvbigpXCIgKGNsaWNrZWQpPVwicmVzZXQoKVwiPlJlc2V0PC9jcWEtYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZm9ybT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG48L2Rpdj4iXX0=
|