@seniorsistemas/components-ai 2.0.4 → 2.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/dynamic-form/dynamic-form.component.mjs +12 -2
- package/esm2022/lib/components/dynamic-form/fields/dynamic-field-lookup.component.mjs +3 -1
- package/fesm2022/seniorsistemas-components-ai.mjs +13 -1
- package/fesm2022/seniorsistemas-components-ai.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -165,7 +165,8 @@ export class DynamicFormComponent {
|
|
|
165
165
|
case 'currency':
|
|
166
166
|
case 'date':
|
|
167
167
|
case 'datetime':
|
|
168
|
-
case 'time':
|
|
168
|
+
case 'time':
|
|
169
|
+
case 'lookup': return null;
|
|
169
170
|
case 'checkbox': return false;
|
|
170
171
|
case 'multiselect': return [];
|
|
171
172
|
case 'dropdown':
|
|
@@ -232,6 +233,15 @@ export class DynamicFormComponent {
|
|
|
232
233
|
}
|
|
233
234
|
resetForm() {
|
|
234
235
|
if (this.form) {
|
|
236
|
+
// First set all controls to a sentinel value to ensure valueChanges fires
|
|
237
|
+
// even when the default value is the same as the current value (e.g. '' -> '')
|
|
238
|
+
// This is critical for lookup fields that maintain internal display state.
|
|
239
|
+
this.allFields.forEach(f => {
|
|
240
|
+
const control = this.form.get(f.field);
|
|
241
|
+
if (control) {
|
|
242
|
+
control.setValue(null, { emitEvent: true });
|
|
243
|
+
}
|
|
244
|
+
});
|
|
235
245
|
const values = {};
|
|
236
246
|
this.allFields.forEach(f => values[f.field] = this.getDefaultValue(f));
|
|
237
247
|
this.form.reset(values);
|
|
@@ -601,4 +611,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
601
611
|
}], fieldSave: [{
|
|
602
612
|
type: Output
|
|
603
613
|
}] } });
|
|
604
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMtYWkvc3JjL2xpYi9jb21wb25lbnRzL2R5bmFtaWMtZm9ybS9keW5hbWljLWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy1haS9zcmMvbGliL2NvbXBvbmVudHMvZHluYW1pYy1mb3JtL2R5bmFtaWMtZm9ybS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUE0QixNQUFNLGVBQWUsQ0FBQztBQUN6RyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUEwQixtQkFBbUIsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBVzlDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUNsRixPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUN0RixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUNsRixPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUMxRixPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSwyQ0FBMkMs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SSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osbUJBQW1CO3dCQUNuQixXQUFXO3dCQUNYLFlBQVk7d0JBQ1osWUFBWTt3QkFDWixZQUFZO3dCQUNaLGFBQWE7d0JBQ2IseUJBQXlCO3dCQUN6QiwyQkFBMkI7d0JBQzNCLHlCQUF5Qjt3QkFDekIsNkJBQTZCO3dCQUM3Qiw2QkFBNkI7d0JBQzdCLDJCQUEyQjt3QkFDM0IsNkJBQTZCO3dCQUM3Qix5QkFBeUI7d0JBQ3pCLDZCQUE2Qjt3QkFDN0IsZ0NBQWdDO3dCQUNoQywwQkFBMEI7cUJBQzNCO3VLQUtRLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBR0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUdHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUVJLFNBQVM7c0JBQWxCLE1BQU07Z0JBQ0csVUFBVTtzQkFBbkIsTUFBTTtnQkFDRyxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLFFBQVE7c0JBQWpCLE1BQU07Z0JBQ0csU0FBUztzQkFBbEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBQYW5lbE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvcGFuZWwnO1xuaW1wb3J0IHsgRGlhbG9nTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9kaWFsb2cnO1xuaW1wb3J0IHsgRHJhd2VyTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9kcmF3ZXInO1xuaW1wb3J0IHsgQnV0dG9uTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9idXR0b24nO1xuaW1wb3J0IHtcbiAgRHluYW1pY0Zvcm1GaWVsZENvbmZpZyxcbiAgRHluYW1pY0Zvcm1GaWVsZFNpemUsXG4gIER5bmFtaWNGb3JtU2VjdGlvbixcbiAgRHluYW1pY0Zvcm1EaWFsb2dDb25maWcsXG4gIER5bmFtaWNGb3JtRHJhd2VyQ29uZmlnXG59IGZyb20gJy4vbW9kZWxzL2R5bmFtaWMtZm9ybS5tb2RlbHMnO1xuaW1wb3J0IHsgVHJhbnNsYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdHJhbnNsYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBNYXNrU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL21hc2suc2VydmljZSc7XG5pbXBvcnQgeyBMb2NhbGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbG9jYWxlLnNlcnZpY2UnO1xuaW1wb3J0IHsgVHJhbnNsYXRlUGlwZSB9IGZyb20gJy4uLy4uL3BpcGVzL3RyYW5zbGF0ZS5waXBlJztcbmltcG9ydCB7IER5bmFtaWNGaWVsZFRleHRDb21wb25lbnQgfSBmcm9tICcuL2ZpZWxkcy9keW5hbWljLWZpZWxkLXRleHQuY29tcG9uZW50JztcbmltcG9ydCB7IER5bmFtaWNGaWVsZE51bWJlckNvbXBvbmVudCB9IGZyb20gJy4vZmllbGRzL2R5bmFtaWMtZmllbGQtbnVtYmVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEeW5hbWljRmllbGREYXRlQ29tcG9uZW50IH0gZnJvbSAnLi9maWVsZHMvZHluYW1pYy1maWVsZC1kYXRlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEeW5hbWljRmllbGREYXRldGltZUNvbXBvbmVudCB9IGZyb20gJy4vZmllbGRzL2R5bmFtaWMtZmllbGQtZGF0ZXRpbWUuY29tcG9uZW50JztcbmltcG9ydCB7IER5bmFtaWNGaWVsZERyb3Bkb3duQ29tcG9uZW50IH0gZnJvbSAnLi9maWVsZHMvZHluYW1pYy1maWVsZC1kcm9wZG93bi5jb21wb25lbnQnO1xuaW1wb3J0IHsgRHluYW1pY0ZpZWxkTG9va3VwQ29tcG9uZW50IH0gZnJvbSAnLi9maWVsZHMvZHluYW1pYy1maWVsZC1sb29rdXAuY29tcG9uZW50JztcbmltcG9ydCB7IER5bmFtaWNGaWVsZFRleHRhcmVhQ29tcG9uZW50IH0gZnJvbSAnLi9maWVsZHMvZHluYW1pYy1maWVsZC10ZXh0YXJlYS5jb21wb25lbnQnO1xuaW1wb3J0IHsgRHluYW1pY0ZpZWxkVGltZUNvbXBvbmVudCB9IGZyb20gJy4vZmllbGRzL2R5bmFtaWMtZmllbGQtdGltZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgRHluYW1pY0ZpZWxkQ2hlY2tib3hDb21wb25lbnQgfSBmcm9tICcuL2ZpZWxkcy9keW5hbWljLWZpZWxkLWNoZWNrYm94LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEeW5hbWljRmllbGRNdWx0aXNlbGVjdENvbXBvbmVudCB9IGZyb20gJy4vZmllbGRzL2R5bmFtaWMtZmllbGQtbXVsdGlzZWxlY3QuY29tcG9uZW50JztcbmltcG9ydCB7IER5bmFtaWNGaWVsZEltYWdlQ29tcG9uZW50IH0gZnJvbSAnLi9maWVsZHMvZHluYW1pYy1maWVsZC1pbWFnZS5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzaWEtZHluYW1pYy1mb3JtJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIFBhbmVsTW9kdWxlLFxuICAgIERpYWxvZ01vZHVsZSxcbiAgICBEcmF3ZXJNb2R1bGUsXG4gICAgQnV0dG9uTW9kdWxlLFxuICAgIFRyYW5zbGF0ZVBpcGUsXG4gICAgRHluYW1pY0ZpZWxkVGV4dENvbXBvbmVudCxcbiAgICBEeW5hbWljRmllbGROdW1iZXJDb21wb25lbnQsXG4gICAgRHluYW1pY0ZpZWxkRGF0ZUNvbXBvbmVudCxcbiAgICBEeW5hbWljRmllbGREYXRldGltZUNvbXBvbmVudCxcbiAgICBEeW5hbWljRmllbGREcm9wZG93bkNvbXBvbmVudCxcbiAgICBEeW5hbWljRmllbGRMb29rdXBDb21wb25lbnQsXG4gICAgRHluYW1pY0ZpZWxkVGV4dGFyZWFDb21wb25lbnQsXG4gICAgRHluYW1pY0ZpZWxkVGltZUNvbXBvbmVudCxcbiAgICBEeW5hbWljRmllbGRDaGVja2JveENvbXBvbmVudCxcbiAgICBEeW5hbWljRmllbGRNdWx0aXNlbGVjdENvbXBvbmVudCxcbiAgICBEeW5hbWljRmllbGRJbWFnZUNvbXBvbmVudFxuICBdLFxuICB0ZW1wbGF0ZVVybDogJy4vZHluYW1pYy1mb3JtLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL2R5bmFtaWMtZm9ybS5jb21wb25lbnQuc2Nzcydcbn0pXG5leHBvcnQgY2xhc3MgRHluYW1pY0Zvcm1Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpIHNlY3Rpb25zOiBEeW5hbWljRm9ybVNlY3Rpb25bXSA9IFtdO1xuICBASW5wdXQoKSBlbnRpdHlEYXRhOiBhbnkgPSBudWxsO1xuICBASW5wdXQoKSBtb2RlOiAnZm9ybScgfCAnaW5saW5lLWVkaXQnID0gJ2Zvcm0nO1xuXG4gIC8vIERpc3BsYXkgTW9kZSDigJQgb3B0aW9uYWwuIElmIG5vdCBzZXQsIHJlbmRlcnMgaW5saW5lIHdpdGhvdXQgYnV0dG9ucy5cbiAgQElucHV0KCkgZGlzcGxheU1vZGU/OiAnZGlhbG9nJyB8ICdkcmF3ZXInO1xuICBASW5wdXQoKSB2aXNpYmxlOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGRpYWxvZ0NvbmZpZzogRHluYW1pY0Zvcm1EaWFsb2dDb25maWcgPSB7fTtcbiAgQElucHV0KCkgZHJhd2VyQ29uZmlnOiBEeW5hbWljRm9ybURyYXdlckNvbmZpZyA9IHt9O1xuXG4gIC8vIEJ1dHRvbiBDb25maWd1cmF0aW9uXG4gIEBJbnB1dCgpIHNob3dTdWJtaXRCdXR0b246IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgc2hvd0NhbmNlbEJ1dHRvbjogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBzdWJtaXRCdXR0b25MYWJlbD86IHN0cmluZztcbiAgQElucHV0KCkgY2FuY2VsQnV0dG9uTGFiZWw/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIHN1Ym1pdEJ1dHRvbkljb246IHN0cmluZyA9ICdwaSBwaS1jaGVjayc7XG4gIEBJbnB1dCgpIGNhbmNlbEJ1dHRvbkljb246IHN0cmluZyA9ICdwaSBwaS10aW1lcyc7XG5cbiAgQE91dHB1dCgpIGZvcm1SZWFkeSA9IG5ldyBFdmVudEVtaXR0ZXI8Rm9ybUdyb3VwPigpO1xuICBAT3V0cHV0KCkgZm9ybVN1Ym1pdCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgdmlzaWJsZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgQE91dHB1dCgpIG9uQ2FuY2VsID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBAT3V0cHV0KCkgZmllbGRTYXZlID0gbmV3IEV2ZW50RW1pdHRlcjx7IGZpZWxkOiBzdHJpbmcsIHZhbHVlOiBhbnkgfT4oKTtcblxuICBmb3JtITogRm9ybUdyb3VwO1xuICBsb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLy8gSW5saW5lIGVkaXQgc3RhdGVcbiAgZWRpdGluZ0ZpZWxkOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgc2F2aW5nRmllbGQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvLyAtLS0gQ29tcHV0ZWQgcHJvcGVydGllcyAtLS1cblxuICBnZXQgYWxsRmllbGRzKCk6IER5bmFtaWNGb3JtRmllbGRDb25maWdbXSB7XG4gICAgcmV0dXJuIHRoaXMuc2VjdGlvbnMuZmxhdE1hcChzZWN0aW9uID0+IHNlY3Rpb24uZmllbGRzKTtcbiAgfVxuXG4gIGdldCBpc0lubGluZUVkaXRNb2RlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLm1vZGUgPT09ICdpbmxpbmUtZWRpdCc7XG4gIH1cblxuICBnZXQgaXNEaWFsb2dNb2RlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmRpc3BsYXlNb2RlID09PSAnZGlhbG9nJztcbiAgfVxuXG4gIGdldCBpc0RyYXdlck1vZGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZGlzcGxheU1vZGUgPT09ICdkcmF3ZXInO1xuICB9XG5cbiAgZ2V0IGlzSW5saW5lTW9kZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMuZGlzcGxheU1vZGU7XG4gIH1cblxuICAvLyBEaWFsb2cgY29uZmlnIHdpdGggZGVmYXVsdHNcbiAgZ2V0IGRpYWxvZ0hlYWRlcigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmRpYWxvZ0NvbmZpZy5oZWFkZXIgfHwgdGhpcy50cmFuc2xhdGlvblNlcnZpY2UudHJhbnNsYXRlKCdkZXNpZ24uY29tcG9uZW50c19haS5mb3JtJyk7XG4gIH1cbiAgZ2V0IGRpYWxvZ1dpZHRoKCk6IHN0cmluZyB7IHJldHVybiB0aGlzLmRpYWxvZ0NvbmZpZy53aWR0aCB8fCAnNjAwcHgnOyB9XG4gIGdldCBkaWFsb2dEcmFnZ2FibGUoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLmRpYWxvZ0NvbmZpZy5kcmFnZ2FibGUgPz8gZmFsc2U7IH1cbiAgZ2V0IGRpYWxvZ1Jlc2l6YWJsZSgpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMuZGlhbG9nQ29uZmlnLnJlc2l6YWJsZSA/PyBmYWxzZTsgfVxuICBnZXQgZGlhbG9nTWF4aW1pemFibGUoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLmRpYWxvZ0NvbmZpZy5tYXhpbWl6YWJsZSA/PyBmYWxzZTsgfVxuICBnZXQgZGlhbG9nQ2xvc2VPbkVzY2FwZSgpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMuZGlhbG9nQ29uZmlnLmNsb3NlT25Fc2NhcGUgPz8gdHJ1ZTsgfVxuICBnZXQgZGlhbG9nRGlzbWlzc2FibGVNYXNrKCk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5kaWFsb2dDb25maWcuZGlzbWlzc2FibGVNYXNrID8/IGZhbHNlOyB9XG5cbiAgLy8gRHJhd2VyIGNvbmZpZyB3aXRoIGRlZmF1bHRzXG4gIGdldCBkcmF3ZXJIZWFkZXIoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5kcmF3ZXJDb25maWcuaGVhZGVyIHx8IHRoaXMudHJhbnNsYXRpb25TZXJ2aWNlLnRyYW5zbGF0ZSgnZGVzaWduLmNvbXBvbmVudHNfYWkuZm9ybScpO1xuICB9XG4gIGdldCBkcmF3ZXJQb3NpdGlvbigpOiAnbGVmdCcgfCAncmlnaHQnIHwgJ3RvcCcgfCAnYm90dG9tJyB7IHJldHVybiB0aGlzLmRyYXdlckNvbmZpZy5wb3NpdGlvbiB8fCAncmlnaHQnOyB9XG4gIGdldCBkcmF3ZXJTaG93Q2xvc2VJY29uKCk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5kcmF3ZXJDb25maWcuc2hvd0Nsb3NlSWNvbiA/PyB0cnVlOyB9XG4gIGdldCBkcmF3ZXJDbG9zZU9uRXNjYXBlKCk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5kcmF3ZXJDb25maWcuY2xvc2VPbkVzY2FwZSA/PyB0cnVlOyB9XG4gIGdldCBkcmF3ZXJEaXNtaXNzYWJsZSgpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMuZHJhd2VyQ29uZmlnLmRpc21pc3NhYmxlID8/IHRydWU7IH1cblxuICBnZXQgZHJhd2VyU3R5bGUoKTogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSB7XG4gICAgY29uc3QgcG9zaXRpb24gPSB0aGlzLmRyYXdlclBvc2l0aW9uO1xuICAgIGNvbnN0IGlzSG9yaXpvbnRhbCA9IHBvc2l0aW9uID09PSAnbGVmdCcgfHwgcG9zaXRpb24gPT09ICdyaWdodCc7XG4gICAgaWYgKHRoaXMuZHJhd2VyQ29uZmlnLmN1c3RvbVdpZHRoKSB7XG4gICAgICByZXR1cm4gaXNIb3Jpem9udGFsID8geyB3aWR0aDogdGhpcy5kcmF3ZXJDb25maWcuY3VzdG9tV2lkdGggfSA6IHsgaGVpZ2h0OiB0aGlzLmRyYXdlckNvbmZpZy5jdXN0b21XaWR0aCB9O1xuICAgIH1cbiAgICBjb25zdCBzaXplID0gdGhpcy5kcmF3ZXJDb25maWcuc2l6ZSB8fCAnbWVkaXVtJztcbiAgICBjb25zdCBzaXplTWFwOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAgICAgc21hbGw6IGlzSG9yaXpvbnRhbCA/ICcyNSUnIDogJzI1dmgnLFxuICAgICAgbWVkaXVtOiBpc0hvcml6b250YWwgPyAnNDAlJyA6ICc0MHZoJyxcbiAgICAgIGxhcmdlOiBpc0hvcml6b250YWwgPyAnNjAlJyA6ICc2MHZoJyxcbiAgICAgIHhsYXJnZTogaXNIb3Jpem9udGFsID8gJzgwJScgOiAnODB2aCcsXG4gICAgICBmdWxsOiBpc0hvcml6b250YWwgPyAnMTAwJScgOiAnMTAwdmgnXG4gICAgfTtcbiAgICByZXR1cm4gaXNIb3Jpem9udGFsID8geyB3aWR0aDogc2l6ZU1hcFtzaXplXSB9IDogeyBoZWlnaHQ6IHNpemVNYXBbc2l6ZV0gfTtcbiAgfVxuXG4gIGdldCBzdWJtaXRMYWJlbCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnN1Ym1pdEJ1dHRvbkxhYmVsIHx8IHRoaXMudHJhbnNsYXRpb25TZXJ2aWNlLnRyYW5zbGF0ZSgnZGVzaWduLmNvbXBvbmVudHNfYWkuc2F2ZScpO1xuICB9XG4gIGdldCBjYW5jZWxMYWJlbCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmNhbmNlbEJ1dHRvbkxhYmVsIHx8IHRoaXMudHJhbnNsYXRpb25TZXJ2aWNlLnRyYW5zbGF0ZSgnZGVzaWduLmNvbXBvbmVudHNfYWkuY2FuY2VsJyk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGZiOiBGb3JtQnVpbGRlcixcbiAgICBwcml2YXRlIHRyYW5zbGF0aW9uU2VydmljZTogVHJhbnNsYXRpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgbWFza1NlcnZpY2U6IE1hc2tTZXJ2aWNlLFxuICAgIHByaXZhdGUgbG9jYWxlU2VydmljZTogTG9jYWxlU2VydmljZVxuICApIHt9XG5cbiAgLy8gLS0tIExpZmVjeWNsZSAtLS1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmluaXRGb3JtKCk7XG4gICAgaWYgKHRoaXMuZW50aXR5RGF0YSkge1xuICAgICAgdGhpcy5sb2FkRW50aXR5RGF0YSgpO1xuICAgIH1cbiAgICB0aGlzLnNldHVwQ29uZGl0aW9uYWxGaWVsZHNXYXRjaGVyKCk7XG4gICAgdGhpcy5mb3JtUmVhZHkuZW1pdCh0aGlzLmZvcm0pO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzWydlbnRpdHlEYXRhJ10gJiYgdGhpcy5mb3JtKSB7XG4gICAgICB0aGlzLmVudGl0eURhdGEgPyB0aGlzLmxvYWRFbnRpdHlEYXRhKCkgOiB0aGlzLnJlc2V0Rm9ybSgpO1xuICAgIH1cbiAgICBpZiAoY2hhbmdlc1sndmlzaWJsZSddICYmIGNoYW5nZXNbJ3Zpc2libGUnXS5jdXJyZW50VmFsdWUgPT09IHRydWUpIHtcbiAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgaWYgKHRoaXMuZW50aXR5RGF0YSAmJiB0aGlzLmZvcm0pIHtcbiAgICAgICAgdGhpcy5sb2FkRW50aXR5RGF0YSgpO1xuICAgICAgfSBlbHNlIGlmICghdGhpcy5lbnRpdHlEYXRhICYmIHRoaXMuZm9ybSkge1xuICAgICAgICB0aGlzLnJlc2V0Rm9ybSgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIC0tLSBGb3JtIGluaXQgLS0tXG5cbiAgaW5pdEZvcm0oKTogdm9pZCB7XG4gICAgY29uc3QgZm9ybUNvbnRyb2xzOiBhbnkgPSB7fTtcbiAgICB0aGlzLmFsbEZpZWxkcy5mb3JFYWNoKGZpZWxkID0+IHtcbiAgICAgIGNvbnN0IGRlZmF1bHRWYWx1ZSA9IHRoaXMuZ2V0RGVmYXVsdFZhbHVlKGZpZWxkKTtcbiAgICAgIGNvbnN0IHZhbGlkYXRvcnMgPSBbLi4uKGZpZWxkLnZhbGlkYXRvcnMgfHwgW10pXTtcbiAgICAgIGlmIChmaWVsZC5yZXF1aXJlZCkge1xuICAgICAgICB2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5yZXF1aXJlZCk7XG4gICAgICB9XG4gICAgICBmb3JtQ29udHJvbHNbZmllbGQuZmllbGRdID0gdGhpcy5mYi5jb250cm9sKFxuICAgICAgICB7IHZhbHVlOiBkZWZhdWx0VmFsdWUsIGRpc2FibGVkOiBmaWVsZC5kaXNhYmxlZCB8fCBmYWxzZSB9LFxuICAgICAgICB2YWxpZGF0b3JzXG4gICAgICApO1xuICAgIH0pO1xuICAgIHRoaXMuZm9ybSA9IHRoaXMuZmIuZ3JvdXAoZm9ybUNvbnRyb2xzKTtcbiAgICB0aGlzLmFwcGx5SW5pdGlhbERpc2FibGVkU3RhdGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RGVmYXVsdFZhbHVlKGZpZWxkOiBEeW5hbWljRm9ybUZpZWxkQ29uZmlnKTogYW55IHtcbiAgICBpZiAoZmllbGQuZGVmYXVsdFZhbHVlICE9PSB1bmRlZmluZWQpIHJldHVybiBmaWVsZC5kZWZhdWx0VmFsdWU7XG4gICAgc3dpdGNoIChmaWVsZC50eXBlKSB7XG4gICAgICBjYXNlICdudW1iZXInOiBjYXNlICdjdXJyZW5jeSc6IGNhc2UgJ2RhdGUnOiBjYXNlICdkYXRldGltZSc6IGNhc2UgJ3RpbWUnOiByZXR1cm4gbnVsbDtcbiAgICAgIGNhc2UgJ2NoZWNrYm94JzogcmV0dXJuIGZhbHNlO1xuICAgICAgY2FzZSAnbXVsdGlzZWxlY3QnOiByZXR1cm4gW107XG4gICAgICBjYXNlICdkcm9wZG93bic6IGNhc2UgJ2VudW0nOiByZXR1cm4gJyc7XG4gICAgICBkZWZhdWx0OiByZXR1cm4gJyc7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhcHBseUluaXRpYWxEaXNhYmxlZFN0YXRlKCk6IHZvaWQge1xuICAgIHRoaXMuYWxsRmllbGRzLmZvckVhY2goZmllbGQgPT4ge1xuICAgICAgaWYgKGZpZWxkLmRpc2FibGVkV2hlbikge1xuICAgICAgICBjb25zdCBjb250cm9sID0gdGhpcy5mb3JtLmdldChmaWVsZC5maWVsZCk7XG4gICAgICAgIGlmIChjb250cm9sICYmIHRoaXMuaXNGaWVsZERpc2FibGVkKGZpZWxkKSkge1xuICAgICAgICAgIGNvbnRyb2wuZGlzYWJsZSgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvLyAtLS0gRGF0YSBsb2FkaW5nIC0tLVxuXG4gIGxvYWRFbnRpdHlEYXRhKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmVudGl0eURhdGEgJiYgdGhpcy5mb3JtKSB7XG4gICAgICB0aGlzLmZvcm0ucGF0Y2hWYWx1ZSh0aGlzLnByb2Nlc3NFbnRpdHlEYXRhKHRoaXMuZW50aXR5RGF0YSkpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcHJvY2Vzc0VudGl0eURhdGEoZW50aXR5OiBhbnkpOiBhbnkge1xuICAgIGNvbnN0IGRhdGEgPSB7IC4uLmVudGl0eSB9O1xuICAgIHRoaXMuYWxsRmllbGRzLmZvckVhY2goZmllbGQgPT4ge1xuICAgICAgaWYgKGZpZWxkLnR5cGUgPT09ICdkYXRlJyAmJiBkYXRhW2ZpZWxkLmZpZWxkXSkge1xuICAgICAgICBjb25zdCB2ID0gZGF0YVtmaWVsZC5maWVsZF07XG4gICAgICAgIGlmICh0eXBlb2YgdiA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICBjb25zdCBwYXJ0cyA9IHYuc3Vic3RyaW5nKDAsIDEwKS5zcGxpdCgnLScpO1xuICAgICAgICAgIGlmIChwYXJ0cy5sZW5ndGggPT09IDMpIHtcbiAgICAgICAgICAgIGNvbnN0IGQgPSBuZXcgRGF0ZSgrcGFydHNbMF0sICtwYXJ0c1sxXSAtIDEsICtwYXJ0c1syXSk7XG4gICAgICAgICAgICBpZiAoIWlzTmFOKGQuZ2V0VGltZSgpKSkgZGF0YVtmaWVsZC5maWVsZF0gPSBkO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGZpZWxkLnR5cGUgPT09ICd0aW1lJyAmJiBkYXRhW2ZpZWxkLmZpZWxkXSkge1xuICAgICAgICBjb25zdCB2ID0gZGF0YVtmaWVsZC5maWVsZF07XG4gICAgICAgIGlmICh0eXBlb2YgdiA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICBjb25zdCBwYXJ0cyA9IHYuc3BsaXQoJzonKTtcbiAgICAgICAgICBpZiAocGFydHMubGVuZ3RoID49IDIpIHtcbiAgICAgICAgICAgIGNvbnN0IGQgPSBuZXcgRGF0ZSgpO1xuICAgICAgICAgICAgZC5zZXRIb3VycyhwYXJzZUludChwYXJ0c1swXSwgMTApLCBwYXJzZUludChwYXJ0c1sxXSwgMTApLCAwLCAwKTtcbiAgICAgICAgICAgIGRhdGFbZmllbGQuZmllbGRdID0gZDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChmaWVsZC50eXBlID09PSAnbG9va3VwJyAmJiBkYXRhW2ZpZWxkLmZpZWxkXSkge1xuICAgICAgICBjb25zdCB2ID0gZGF0YVtmaWVsZC5maWVsZF07XG4gICAgICAgIGlmICh0eXBlb2YgdiA9PT0gJ29iamVjdCcgJiYgdi5pZCkge1xuICAgICAgICAgIGNvbnN0IGhhc0Rpc3BsYXkgPSBmaWVsZC5sb29rdXBEaXNwbGF5RmllbGRzXG4gICAgICAgICAgICA/IGZpZWxkLmxvb2t1cERpc3BsYXlGaWVsZHMuc29tZShmID0+IHRoaXMuZ2V0TmVzdGVkVmFsdWUodiwgZikpXG4gICAgICAgICAgICA6IHZbZmllbGQubG9va3VwRGlzcGxheUZpZWxkIHx8ICduYW1lJ107XG4gICAgICAgICAgaWYgKCFoYXNEaXNwbGF5KSBkYXRhW2ZpZWxkLmZpZWxkXSA9IHYuaWQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gZGF0YTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0TmVzdGVkVmFsdWUob2JqOiBhbnksIHBhdGg6IHN0cmluZyk6IGFueSB7XG4gICAgcmV0dXJuIHBhdGguc3BsaXQoJy4nKS5yZWR1Y2UoKGN1ciwga2V5KSA9PiBjdXI/LltrZXldLCBvYmopO1xuICB9XG5cbiAgcmVzZXRGb3JtKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmZvcm0pIHtcbiAgICAgIGNvbnN0IHZhbHVlczogYW55ID0ge307XG4gICAgICB0aGlzLmFsbEZpZWxkcy5mb3JFYWNoKGYgPT4gdmFsdWVzW2YuZmllbGRdID0gdGhpcy5nZXREZWZhdWx0VmFsdWUoZikpO1xuICAgICAgdGhpcy5mb3JtLnJlc2V0KHZhbHVlcyk7XG4gICAgfVxuICB9XG5cbiAgLy8gLS0tIFZhbHVlIHByb2Nlc3Npbmcgb24gc3VibWl0IC0tLVxuXG4gIHByaXZhdGUgcHJvY2Vzc0Zvcm1WYWx1ZShmb3JtVmFsdWU6IGFueSk6IGFueSB7XG4gICAgY29uc3Qgb3V0ID0geyAuLi5mb3JtVmFsdWUgfTtcbiAgICBpZiAodGhpcy5lbnRpdHlEYXRhPy5pZCkgb3V0LmlkID0gdGhpcy5lbnRpdHlEYXRhLmlkO1xuXG4gICAgdGhpcy5hbGxGaWVsZHMuZm9yRWFjaChmaWVsZCA9PiB7XG4gICAgICBjb25zdCB2ID0gb3V0W2ZpZWxkLmZpZWxkXTtcbiAgICAgIGlmIChmaWVsZC50eXBlID09PSAnbG9va3VwJykge1xuICAgICAgICBpZiAodiAmJiB0eXBlb2YgdiA9PT0gJ29iamVjdCcpIHsgLyoga2VlcCAqLyB9XG4gICAgICAgIGVsc2UgaWYgKHYgJiYgdiAhPT0gJycpIG91dFtmaWVsZC5maWVsZF0gPSB7IGlkOiB2IH07XG4gICAgICAgIGVsc2Ugb3V0W2ZpZWxkLmZpZWxkXSA9IG51bGw7XG4gICAgICB9IGVsc2UgaWYgKGZpZWxkLnR5cGUgPT09ICdkYXRlJykge1xuICAgICAgICBpZiAodiBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICAgICAgICBvdXRbZmllbGQuZmllbGRdID0gYCR7di5nZXRGdWxsWWVhcigpfS0ke1N0cmluZyh2LmdldE1vbnRoKCkgKyAxKS5wYWRTdGFydCgyLCAnMCcpfS0ke1N0cmluZyh2LmdldERhdGUoKSkucGFkU3RhcnQoMiwgJzAnKX1gO1xuICAgICAgICB9IGVsc2UgaWYgKCF2KSBvdXRbZmllbGQuZmllbGRdID0gbnVsbDtcbiAgICAgIH0gZWxzZSBpZiAoZmllbGQudHlwZSA9PT0gJ3RpbWUnKSB7XG4gICAgICAgIGlmICh2IGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgICAgIG91dFtmaWVsZC5maWVsZF0gPSBgJHtTdHJpbmcodi5nZXRIb3VycygpKS5wYWRTdGFydCgyLCAnMCcpfToke1N0cmluZyh2LmdldE1pbnV0ZXMoKSkucGFkU3RhcnQoMiwgJzAnKX06MDBgO1xuICAgICAgICB9IGVsc2UgaWYgKCF2KSBvdXRbZmllbGQuZmllbGRdID0gbnVsbDtcbiAgICAgIH0gZWxzZSBpZiAoZmllbGQudHlwZSA9PT0gJ2RhdGV0aW1lJykge1xuICAgICAgICBpZiAodiBpbnN0YW5jZW9mIERhdGUpIHsgLyoga2VlcCBhcyBEYXRlICovIH1cbiAgICAgICAgZWxzZSBpZiAoIXYgfHwgdiA9PT0gJycpIG91dFtmaWVsZC5maWVsZF0gPSBudWxsO1xuICAgICAgfSBlbHNlIGlmIChbJ3RleHQnLCAndGV4dGFyZWEnLCAnbnVtYmVyJywgJ2N1cnJlbmN5JywgJ2VudW0nLCAnZHJvcGRvd24nXS5pbmNsdWRlcyhmaWVsZC50eXBlKSkge1xuICAgICAgICBpZiAodiA9PT0gJycgfHwgdiA9PT0gdW5kZWZpbmVkKSBvdXRbZmllbGQuZmllbGRdID0gbnVsbDtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gb3V0O1xuICB9XG5cbiAgLy8gLS0tIExheW91dCAtLS1cblxuICBnZXRGaWVsZEdyaWRDbGFzcyhmaWVsZDogRHluYW1pY0Zvcm1GaWVsZENvbmZpZyk6IHN0cmluZyB7XG4gICAgY29uc3QgZGVmYXVsdFNpemU6IER5bmFtaWNGb3JtRmllbGRTaXplID0geyB4bDogNiwgbGc6IDYsIG1kOiA2LCBzbTogMTIgfTtcbiAgICBjb25zdCBzaXplOiBEeW5hbWljRm9ybUZpZWxkU2l6ZSA9IHR5cGVvZiBmaWVsZC5zaXplID09PSAnZnVuY3Rpb24nXG4gICAgICA/IGZpZWxkLnNpemUodGhpcy5mb3JtPy52YWx1ZSB8fCB7fSlcbiAgICAgIDogKGZpZWxkLnNpemUgfHwgZGVmYXVsdFNpemUpO1xuXG4gICAgY29uc3QgY2xhc3Nlczogc3RyaW5nW10gPSBbXTtcbiAgICAvLyBCYXNlIGNsYXNzIGZyb20geGwgb3IgZmFsbGJhY2sgNlxuICAgIGNsYXNzZXMucHVzaChgY29sLSR7c2l6ZS54bCA/PyBzaXplLmxnID8/IHNpemUubWQgPz8gc2l6ZS5zbSA/PyA2fWApO1xuICAgIGlmIChzaXplLnhzICE9PSB1bmRlZmluZWQpIGNsYXNzZXMucHVzaChgY29sLXhzLSR7c2l6ZS54c31gKTtcbiAgICBpZiAoc2l6ZS5zbSAhPT0gdW5kZWZpbmVkKSBjbGFzc2VzLnB1c2goYGNvbC1zbS0ke3NpemUuc219YCk7XG4gICAgaWYgKHNpemUubWQgIT09IHVuZGVmaW5lZCkgY2xhc3Nlcy5wdXNoKGBjb2wtbWQtJHtzaXplLm1kfWApO1xuICAgIGlmIChzaXplLmxnICE9PSB1bmRlZmluZWQpIGNsYXNzZXMucHVzaChgY29sLWxnLSR7c2l6ZS5sZ31gKTtcbiAgICBpZiAoc2l6ZS54bCAhPT0gdW5kZWZpbmVkKSBjbGFzc2VzLnB1c2goYGNvbC14bC0ke3NpemUueGx9YCk7XG4gICAgcmV0dXJuIGNsYXNzZXMuam9pbignICcpO1xuICB9XG5cbiAgLy8gLS0tIENvbmRpdGlvbmFsIHZpc2liaWxpdHkvZGlzYWJsZWQgLS0tXG5cbiAgaXNGaWVsZFZpc2libGUoZmllbGQ6IER5bmFtaWNGb3JtRmllbGRDb25maWcpOiBib29sZWFuIHtcbiAgICBpZiAoIWZpZWxkLnZpc2libGVXaGVuKSByZXR1cm4gdHJ1ZTtcbiAgICByZXR1cm4gZmllbGQudmlzaWJsZVdoZW4odGhpcy5mb3JtPy52YWx1ZSB8fCB7fSk7XG4gIH1cblxuICBpc0ZpZWxkRGlzYWJsZWQoZmllbGQ6IER5bmFtaWNGb3JtRmllbGRDb25maWcpOiBib29sZWFuIHtcbiAgICBpZiAoZmllbGQuZGlzYWJsZWQpIHJldHVybiB0cnVlO1xuICAgIGlmICghZmllbGQuZGlzYWJsZWRXaGVuKSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuIGZpZWxkLmRpc2FibGVkV2hlbih0aGlzLmZvcm0/LnZhbHVlIHx8IHt9KTtcbiAgfVxuXG4gIHNldHVwQ29uZGl0aW9uYWxGaWVsZHNXYXRjaGVyKCk6IHZvaWQge1xuICAgIC8vIFNpbmNlIHZpc2libGVXaGVuL2Rpc2FibGVkV2hlbiBhcmUgbm93IGZ1bmN0aW9ucyB0aGF0IGNhbiBkZXBlbmQgb24gYW55IGZpZWxkLFxuICAgIC8vIHdlIHdhdGNoIGFsbCBmaWVsZHMgZm9yIGNoYW5nZXMgYW5kIHJlLWV2YWx1YXRlXG4gICAgY29uc3QgaGFzQ29uZGl0aW9uYWwgPSB0aGlzLmFsbEZpZWxkcy5zb21lKGYgPT4gZi52aXNpYmxlV2hlbiB8fCBmLmRpc2FibGVkV2hlbik7XG4gICAgaWYgKCFoYXNDb25kaXRpb25hbCkgcmV0dXJuO1xuXG4gICAgdGhpcy5mb3JtLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5jbGVhckhpZGRlbkZpZWxkcygpO1xuICAgICAgdGhpcy51cGRhdGVEaXNhYmxlZEZpZWxkcygpO1xuICAgIH0pO1xuICB9XG5cbiAgdXBkYXRlRGlzYWJsZWRGaWVsZHMoKTogdm9pZCB7XG4gICAgdGhpcy5hbGxGaWVsZHMuZm9yRWFjaChmaWVsZCA9PiB7XG4gICAgICBpZiAoZmllbGQuZGlzYWJsZWRXaGVuKSB7XG4gICAgICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLmZvcm0uZ2V0KGZpZWxkLmZpZWxkKTtcbiAgICAgICAgaWYgKGNvbnRyb2wpIHtcbiAgICAgICAgICBjb25zdCBzaG91bGREaXNhYmxlID0gdGhpcy5pc0ZpZWxkRGlzYWJsZWQoZmllbGQpO1xuICAgICAgICAgIGlmIChzaG91bGREaXNhYmxlICYmIGNvbnRyb2wuZW5hYmxlZCkge1xuICAgICAgICAgICAgY29udHJvbC5zZXRWYWx1ZShudWxsLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgICAgICAgICBjb250cm9sLmRpc2FibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgICAgIH0gZWxzZSBpZiAoIXNob3VsZERpc2FibGUgJiYgY29udHJvbC5kaXNhYmxlZCAmJiAhZmllbGQuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIGNvbnRyb2wuZW5hYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGNsZWFySGlkZGVuRmllbGRzKCk6IHZvaWQge1xuICAgIHRoaXMuYWxsRmllbGRzLmZvckVhY2goZmllbGQgPT4ge1xuICAgICAgaWYgKGZpZWxkLnZpc2libGVXaGVuICYmICF0aGlzLmlzRmllbGRWaXNpYmxlKGZpZWxkKSkge1xuICAgICAgICBjb25zdCBjb250cm9sID0gdGhpcy5mb3JtLmdldChmaWVsZC5maWVsZCk7XG4gICAgICAgIGlmIChjb250cm9sICYmIGNvbnRyb2wudmFsdWUgIT09IHRoaXMuZ2V0RGVmYXVsdFZhbHVlKGZpZWxkKSkge1xuICAgICAgICAgIGNvbnRyb2wuc2V0VmFsdWUodGhpcy5nZXREZWZhdWx0VmFsdWUoZmllbGQpLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgICAgICAgY29udHJvbC5tYXJrQXNVbnRvdWNoZWQoKTtcbiAgICAgICAgICBjb250cm9sLm1hcmtBc1ByaXN0aW5lKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8vIC0tLSBQdWJsaWMgbWV0aG9kcyAtLS1cblxuICBnZXRGb3JtKCk6IEZvcm1Hcm91cCB7IHJldHVybiB0aGlzLmZvcm07IH1cblxuICBvcGVuKGVudGl0eT86IGFueSk6IHZvaWQge1xuICAgIGlmIChlbnRpdHkpIHtcbiAgICAgIHRoaXMuZW50aXR5RGF0YSA9IGVudGl0eTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5lbnRpdHlEYXRhID0gbnVsbDtcbiAgICAgIHRoaXMucmVzZXRGb3JtKCk7XG4gICAgfVxuICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgIHRoaXMudmlzaWJsZSA9IHRydWU7XG4gICAgdGhpcy52aXNpYmxlQ2hhbmdlLmVtaXQodHJ1ZSk7XG4gIH1cblxuICBjbG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICB0aGlzLnZpc2libGUgPSBmYWxzZTtcbiAgICB0aGlzLnZpc2libGVDaGFuZ2UuZW1pdChmYWxzZSk7XG4gICAgdGhpcy5yZXNldEZvcm0oKTtcbiAgICB0aGlzLm9uQ2FuY2VsLmVtaXQoKTtcbiAgfVxuXG4gIGhhbmRsZUNhbmNlbCgpOiB2b2lkIHsgdGhpcy5jbG9zZSgpOyB9XG5cbiAgaGFuZGxlU3VibWl0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLm1vZGUgPT09ICdmb3JtJyAmJiB0aGlzLmZvcm0uaW52YWxpZCkge1xuICAgICAgdGhpcy5mb3JtLm1hcmtBbGxBc1RvdWNoZWQoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICB0aGlzLmZvcm1TdWJtaXQuZW1pdCh0aGlzLnByb2Nlc3NGb3JtVmFsdWUodGhpcy5mb3JtLnZhbHVlKSk7XG4gIH1cblxuICBvbkZvcm1LZXlkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKGV2ZW50LmtleSA9PT0gJ0VudGVyJykge1xuICAgICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xuICAgICAgaWYgKHRhcmdldC50YWdOYW1lID09PSAnVEVYVEFSRUEnKSByZXR1cm47XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgLy8gSW4gaW5saW5lLWVkaXQgbW9kZSwgRW50ZXIgc2F2ZXMgdGhlIGN1cnJlbnQgZmllbGQgYnV0IG5ldmVyIHRyaWdnZXJzIGZvcm0gc3VibWl0XG4gICAgICBpZiAodGhpcy5pc0lubGluZUVkaXRNb2RlKSB7XG4gICAgICAgIGlmICh0aGlzLmVkaXRpbmdGaWVsZCkge1xuICAgICAgICAgIHRoaXMuc2F2ZUlubGluZUZpZWxkKHRoaXMuZWRpdGluZ0ZpZWxkKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5oYW5kbGVTdWJtaXQoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyAtLS0gU2VjdGlvbiBoZWxwZXJzIC0tLVxuXG4gIGdldFNlY3Rpb25TdHlsZShzZWN0aW9uOiBEeW5hbWljRm9ybVNlY3Rpb24pOiBzdHJpbmcge1xuICAgIGlmICghc2VjdGlvbi50aXRsZSkgcmV0dXJuICdub25lJztcbiAgICByZXR1cm4gc2VjdGlvbi5zdHlsZSB8fCAnbm9uZSc7XG4gIH1cblxuICAvLyAtLS0gSW5saW5lIEVkaXQgLS0tXG5cbiAgc3RhcnRFZGl0RmllbGQoZmllbGROYW1lOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuaXNJbmxpbmVFZGl0TW9kZSkgcmV0dXJuO1xuICAgIHRoaXMuZWRpdGluZ0ZpZWxkID0gZmllbGROYW1lO1xuICAgIGlmICh0aGlzLmVudGl0eURhdGEpIHtcbiAgICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLmZvcm0uZ2V0KGZpZWxkTmFtZSk7XG4gICAgICBpZiAoY29udHJvbCkge1xuICAgICAgICBjb25zdCBmaWVsZCA9IHRoaXMuYWxsRmllbGRzLmZpbmQoZiA9PiBmLmZpZWxkID09PSBmaWVsZE5hbWUpO1xuICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXMuZW50aXR5RGF0YVtmaWVsZE5hbWVdO1xuICAgICAgICBpZiAoZmllbGQ/LnR5cGUgPT09ICdsb29rdXAnICYmIHZhbHVlICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICBjb250cm9sLnNldFZhbHVlKHZhbHVlKTtcbiAgICAgICAgfSBlbHNlIGlmIChmaWVsZD8udHlwZSA9PT0gJ2RhdGUnICYmIHZhbHVlICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICBjb25zdCBwYXJ0cyA9IHZhbHVlLnN1YnN0cmluZygwLCAxMCkuc3BsaXQoJy0nKTtcbiAgICAgICAgICBpZiAocGFydHMubGVuZ3RoID09PSAzKSB7XG4gICAgICAgICAgICBjb25zdCBkID0gbmV3IERhdGUoK3BhcnRzWzBdLCArcGFydHNbMV0gLSAxLCArcGFydHNbMl0pO1xuICAgICAgICAgICAgY29udHJvbC5zZXRWYWx1ZSghaXNOYU4oZC5nZXRUaW1lKCkpID8gZCA6IHZhbHVlKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29udHJvbC5zZXRWYWx1ZSh2YWx1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnRyb2wuc2V0VmFsdWUodmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIC8vIEF1dG8tZm9jdXMgdGhlIGlucHV0IGFmdGVyIEFuZ3VsYXIgcmVuZGVycyB0aGUgZWRpdCBmaWVsZFxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgY29uc3QgZWwgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGAuaW5saW5lLWVkaXQtZmllbGQgaW5wdXRbaWQ9XCIke2ZpZWxkTmFtZX1cIl0sIC5pbmxpbmUtZWRpdC1maWVsZCB0ZXh0YXJlYVtpZD1cIiR7ZmllbGROYW1lfVwiXWApIGFzIEhUTUxFbGVtZW50O1xuICAgICAgZWw/LmZvY3VzKCk7XG4gICAgfSk7XG4gIH1cblxuICBpc0ZpZWxkRWRpdGluZyhmaWVsZE5hbWU6IHN0cmluZyk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5lZGl0aW5nRmllbGQgPT09IGZpZWxkTmFtZTsgfVxuXG4gIHNhdmVJbmxpbmVGaWVsZChmaWVsZE5hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICghdGhpcy5pc0lubGluZUVkaXRNb2RlKSByZXR1cm47XG4gICAgY29uc3QgY29udHJvbCA9IHRoaXMuZm9ybS5nZXQoZmllbGROYW1lKTtcbiAgICBpZiAoIWNvbnRyb2wgfHwgY29udHJvbC5pbnZhbGlkKSB7IGNvbnRyb2w/Lm1hcmtBc1RvdWNoZWQoKTsgcmV0dXJuOyB9XG5cbiAgICB0aGlzLnNhdmluZ0ZpZWxkID0gdHJ1ZTtcbiAgICBsZXQgdmFsdWUgPSBjb250cm9sLnZhbHVlO1xuICAgIGNvbnN0IGZpZWxkID0gdGhpcy5hbGxGaWVsZHMuZmluZChmID0+IGYuZmllbGQgPT09IGZpZWxkTmFtZSk7XG5cbiAgICBpZiAoZmllbGQ/LnR5cGUgPT09ICdsb29rdXAnICYmIHZhbHVlICYmIHR5cGVvZiB2YWx1ZSAhPT0gJ29iamVjdCcpIHtcbiAgICAgIHZhbHVlID0geyBpZDogdmFsdWUgfTtcbiAgICB9XG4gICAgaWYgKGZpZWxkPy50eXBlID09PSAnZGF0ZScgJiYgdmFsdWUgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgICB2YWx1ZSA9IGAke3ZhbHVlLmdldEZ1bGxZZWFyKCl9LSR7U3RyaW5nKHZhbHVlLmdldE1vbnRoKCkgKyAxKS5wYWRTdGFydCgyLCAnMCcpfS0ke1N0cmluZyh2YWx1ZS5nZXREYXRlKCkpLnBhZFN0YXJ0KDIsICcwJyl9YDtcbiAgICB9XG4gICAgdGhpcy5maWVsZFNhdmUuZW1pdCh7IGZpZWxkOiBmaWVsZE5hbWUsIHZhbHVlIH0pO1xuICB9XG5cbiAgY2FuY2VsSW5saW5lRWRpdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pc0lubGluZUVkaXRNb2RlICYmIHRoaXMuZWRpdGluZ0ZpZWxkKSB7XG4gICAgICBjb25zdCBjb250cm9sID0gdGhpcy5mb3JtLmdldCh0aGlzLmVkaXRpbmdGaWVsZCk7XG4gICAgICBpZiAoY29udHJvbCAmJiB0aGlzLmVudGl0eURhdGEpIHtcbiAgICAgICAgY29udHJvbC5zZXRWYWx1ZSh0aGlzLmVudGl0eURhdGFbdGhpcy5lZGl0aW5nRmllbGRdKTtcbiAgICAgICAgY29udHJvbC5tYXJrQXNQcmlzdGluZSgpO1xuICAgICAgICBjb250cm9sLm1hcmtBc1VudG91Y2hlZCgpO1xuICAgICAgfVxuICAgICAgdGhpcy5lZGl0aW5nRmllbGQgPSBudWxsO1xuICAgICAgdGhpcy5zYXZpbmdGaWVsZCA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIGNvbXBsZXRlSW5saW5lRWRpdCgpOiB2b2lkIHtcbiAgICB0aGlzLmVkaXRpbmdGaWVsZCA9IG51bGw7XG4gICAgdGhpcy5zYXZpbmdGaWVsZCA9IGZhbHNlO1xuICB9XG5cbiAgLy8gLS0tIERpc3BsYXkgdmFsdWUgZm9yIGlubGluZS1lZGl0IG1vZGUgLS0tXG5cbiAgZ2V0RmllbGREaXNwbGF5VmFsdWUoZmllbGROYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmICghdGhpcy5lbnRpdHlEYXRhKSByZXR1cm4gJyc7XG4gICAgY29uc3QgZmllbGQgPSB0aGlzLmFsbEZpZWxkcy5maW5kKGYgPT4gZi5maWVsZCA9PT0gZmllbGROYW1lKTtcbiAgICBjb25zdCB2YWx1ZSA9IHRoaXMuZW50aXR5RGF0YVtmaWVsZE5hbWVdO1xuICAgIGlmICghdmFsdWUgJiYgdmFsdWUgIT09IGZhbHNlICYmIHZhbHVlICE9PSAwKSByZXR1cm4gJyc7XG5cbiAgICBpZiAoZmllbGQ/LnR5cGUgPT09ICdsb29rdXAnICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGlmIChmaWVsZC5sb29rdXBEaXNwbGF5RmllbGRzKSB7XG4gICAgICAgIHJldHVybiBmaWVsZC5sb29rdXBEaXNwbGF5RmllbGRzLm1hcChmID0+IHRoaXMuZ2V0TmVzdGVkVmFsdWUodmFsdWUsIGYpKS5maWx0ZXIodiA9PiB2KS5qb2luKCcgLSAnKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB2YWx1ZVtmaWVsZC5sb29rdXBEaXNwbGF5RmllbGQgfHwgJ25hbWUnXSB8fCAnJztcbiAgICB9XG5cbiAgICBpZiAoKGZpZWxkPy50eXBlID09PSAnZHJvcGRvd24nIHx8IGZpZWxkPy50eXBlID09PSAnZW51bScpICYmIGZpZWxkKSB7XG4gICAgICBjb25zdCBvcHRzID0gZmllbGQub3B0aW9ucyB8fCBmaWVsZC5lbnVtT3B0aW9ucyB8fCBbXTtcbiAgICAgIGNvbnN0IG9wdFZhbCA9IGZpZWxkLm9wdGlvblZhbHVlIHx8ICd2YWx1ZSc7XG4gICAgICBjb25zdCBvcHRMYmwgPSBmaWVsZC5vcHRpb25MYWJlbCB8fCAnbGFiZWwnO1xuICAgICAgY29uc3QgbWF0Y2ggPSBvcHRzLmZpbmQoKG86IGFueSkgPT4gKHR5cGVvZiBvID09PSAnb2JqZWN0JyA/IG9bb3B0VmFsXSA6IG8pID09PSB2YWx1ZSk7XG4gICAgICBpZiAobWF0Y2gpIHJldHVybiB0eXBlb2YgbWF0Y2ggPT09ICdvYmplY3QnID8gbWF0Y2hbb3B0TGJsXSA6IG1hdGNoO1xuICAgIH1cblxuICAgIGlmIChmaWVsZD8udHlwZSA9PT0gJ2N1cnJlbmN5JyAmJiB0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSB7XG4gICAgICBjb25zdCBtb25leUNvbmZpZyA9IHRoaXMubWFza1NlcnZpY2UuZ2V0TW9uZXlDb25maWcoKTtcbiAgICAgIHJldHVybiBuZXcgSW50bC5OdW1iZXJGb3JtYXQoZmllbGQubG9jYWxlIHx8IG1vbmV5Q29uZmlnLmxvY2FsZSwge1xuICAgICAgICBzdHlsZTogJ2N1cnJlbmN5JyxcbiAgICAgICAgY3VycmVuY3k6IGZpZWxkLmN1cnJlbmN5IHx8IG1vbmV5Q29uZmlnLmN1cnJlbmN5XG4gICAgICB9KS5mb3JtYXQodmFsdWUpO1xuICAgIH1cblxuICAgIGlmIChmaWVsZD8udHlwZSA9PT0gJ251bWJlcicgJiYgdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykge1xuICAgICAgcmV0dXJuIG5ldyBJbnRsLk51bWJlckZvcm1hdCgncHQtQlInLCB7XG4gICAgICAgIG1pbmltdW1GcmFjdGlvbkRpZ2l0czogZmllbGQubWluRnJhY3Rpb25EaWdpdHMgfHwgMCxcbiAgICAgICAgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiBmaWVsZC5tYXhGcmFjdGlvbkRpZ2l0cyB8fCAyXG4gICAgICB9KS5mb3JtYXQodmFsdWUpO1xuICAgIH1cblxuICAgIGlmIChmaWVsZD8udHlwZSA9PT0gJ2RhdGUnICYmIHZhbHVlKSByZXR1cm4gdGhpcy5sb2NhbGVTZXJ2aWNlLmZvcm1hdERhdGUodmFsdWUpO1xuXG4gICAgaWYgKGZpZWxkPy50eXBlID09PSAndGltZScgJiYgdmFsdWUpIHtcbiAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIERhdGUpIHJldHVybiBgJHtTdHJpbmcodmFsdWUuZ2V0SG91cnMoKSkucGFkU3RhcnQoMiwgJzAnKX06JHtTdHJpbmcodmFsdWUuZ2V0TWludXRlcygpKS5wYWRTdGFydCgyLCAnMCcpfWA7XG4gICAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyA/IHZhbHVlLnN1YnN0cmluZygwLCA1KSA6IFN0cmluZyh2YWx1ZSk7XG4gICAgfVxuXG4gICAgaWYgKGZpZWxkPy50eXBlID09PSAnY2hlY2tib3gnKSB7XG4gICAgICByZXR1cm4gdmFsdWUgPyB0aGlzLnRyYW5zbGF0aW9uU2VydmljZS50cmFuc2xhdGUoJ2Rlc2lnbi5jb21wb25lbnRzX2FpLmJvb2xlYW5fdHJ1ZScpXG4gICAgICAgICAgICAgICAgICAgIDogdGhpcy50cmFuc2xhdGlvblNlcnZpY2UudHJhbnNsYXRlKCdkZXNpZ24uY29tcG9uZW50c19haS5ib29sZWFuX2ZhbHNlJyk7XG4gICAgfVxuXG4gICAgaWYgKGZpZWxkPy50eXBlID09PSAnbXVsdGlzZWxlY3QnICYmIEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICBjb25zdCBvcHRzID0gZmllbGQub3B0aW9ucyB8fCBmaWVsZC5lbnVtT3B0aW9ucyB8fCBbXTtcbiAgICAgIGNvbnN0IG9wdFZhbCA9IGZpZWxkLm9wdGlvblZhbHVlIHx8ICd2YWx1ZSc7XG4gICAgICBjb25zdCBvcHRMYmwgPSBmaWVsZC5vcHRpb25MYWJlbCB8fCAnbGFiZWwnO1xuICAgICAgcmV0dXJuIHZhbHVlLm1hcCh2ID0+IHtcbiAgICAgICAgY29uc3QgbyA9IG9wdHMuZmluZCgob3B0OiBhbnkpID0+ICh0eXBlb2Ygb3B0ID09PSAnb2JqZWN0JyA/IG9wdFtvcHRWYWxdIDogb3B0KSA9PT0gdik7XG4gICAgICAgIHJldHVybiBvID8gKHR5cGVvZiBvID09PSAnb2JqZWN0JyA/IG9bb3B0TGJsXSA6IG8pIDogdjtcbiAgICAgIH0pLmpvaW4oJywgJyk7XG4gICAgfVxuXG4gICAgaWYgKGZpZWxkPy50eXBlID09PSAndGV4dCcgJiYgZmllbGQubWFzayA9PT0gJ2RvY3VtZW50JyAmJiB2YWx1ZSkge1xuICAgICAgY29uc3QgdHlwZVBlcnNvbiA9IHRoaXMuZW50aXR5RGF0YVtmaWVsZC5tYXNrRGVwZW5kc09uIHx8ICd0eXBlUGVyc29uJ10gfHwgJ0pVUklESUNBTF9QRVJTT04nO1xuICAgICAgcmV0dXJuIHRoaXMubWFza1NlcnZpY2UuYXBwbHlEb2N1bWVudE1hc2soU3RyaW5nKHZhbHVlKSwgdHlwZVBlcnNvbik7XG4gICAgfVxuICAgIGlmIChmaWVsZD8udHlwZSA9PT0gJ3RleHQnICYmIGZpZWxkLm1hc2sgPT09ICdjcGYnICYmIHZhbHVlKSByZXR1cm4gdGhpcy5tYXNrU2VydmljZS5hcHBseUNwZk1hc2soU3RyaW5nKHZhbHVlKSk7XG4gICAgaWYgKGZpZWxkPy50eXBlID09PSAndGV4dCcgJiYgZmllbGQubWFzayA9PT0gJ2NucGonICYmIHZhbHVlKSByZXR1cm4gdGhpcy5tYXNrU2VydmljZS5hcHBseUNucGpNYXNrKFN0cmluZyh2YWx1ZSkpO1xuXG4gICAgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG4gIH1cbn1cbiIsIjwhLS0gSW5saW5lIE1vZGUgKG5vIGRpc3BsYXlNb2RlIHNldCkgLS0+XG48bmctY29udGFpbmVyICpuZ0lmPVwiaXNJbmxpbmVNb2RlXCI+XG4gIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmb3JtQ29udGVudFwiPjwvbmctY29udGFpbmVyPlxuPC9uZy1jb250YWluZXI+XG5cbjwhLS0gRGlhbG9nIE1vZGUgLS0+XG48cC1kaWFsb2dcbiAgKm5nSWY9XCJpc0RpYWxvZ01vZGVcIlxuICBbKHZpc2libGUpXT1cInZpc2libGVcIlxuICBbaGVhZGVyXT1cImRpYWxvZ0hlYWRlciB8IHRyYW5zbGF0ZVwiXG4gIFttb2RhbF09XCJ0cnVlXCJcbiAgW3N0eWxlXT1cInsgd2lkdGg6IGRpYWxvZ1dpZHRoIH1cIlxuICBbZHJhZ2dhYmxlXT1cImRpYWxvZ0RyYWdnYWJsZVwiXG4gIFtyZXNpemFibGVdPVwiZGlhbG9nUmVzaXphYmxlXCJcbiAgW21heGltaXphYmxlXT1cImRpYWxvZ01heGltaXphYmxlXCJcbiAgW2Nsb3NlT25Fc2NhcGVdPVwiZGlhbG9nQ2xvc2VPbkVzY2FwZVwiXG4gIFtkaXNtaXNzYWJsZU1hc2tdPVwiZGlhbG9nRGlzbWlzc2FibGVNYXNrXCJcbiAgKG9uSGlkZSk9XCJjbG9zZSgpXCI+XG5cbiAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImZvcm1Db250ZW50XCI+PC9uZy1jb250YWluZXI+XG5cbiAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImZvb3RlclwiICpuZ0lmPVwic2hvd1N1Ym1pdEJ1dHRvbiB8fCBzaG93Q2FuY2VsQnV0dG9uXCI+XG4gICAgPGRpdiBjbGFzcz1cImRpYWxvZy1mb290ZXJcIj5cbiAgICAgIDxwLWJ1dHRvbiAqbmdJZj1cInNob3dDYW5jZWxCdXR0b25cIiBbbGFiZWxdPVwiY2FuY2VsTGFiZWwgfCB0cmFuc2xhdGVcIiBbaWNvbl09XCJjYW5jZWxCdXR0b25JY29uXCIgc2V2ZXJpdHk9XCJzZWNvbmRhcnlcIiAob25DbGljayk9XCJoYW5kbGVDYW5jZWwoKVwiIFtkaXNhYmxlZF09XCJsb2FkaW5nXCI+PC9wLWJ1dHRvbj5cbiAgICAgIDxwLWJ1dHRvbiAqbmdJZj1cInNob3dTdWJtaXRCdXR0b25cIiBbbGFiZWxdPVwic3VibWl0TGFiZWwgfCB0cmFuc2xhdGVcIiBbaWNvbl09XCJzdWJtaXRCdXR0b25JY29uXCIgKG9uQ2xpY2spPVwiaGFuZGxlU3VibWl0KClcIiBbbG9hZGluZ109XCJsb2FkaW5nXCIgW2Rpc2FibGVkXT1cImZvcm0uaW52YWxpZFwiPjwvcC1idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvbmctdGVtcGxhdGU+XG48L3AtZGlhbG9nPlxuXG48IS0tIERyYXdlciBNb2RlIC0tPlxuPHAtZHJhd2VyXG4gICpuZ0lmPVwiaXNEcmF3ZXJNb2RlXCJcbiAgWyh2aXNpYmxlKV09XCJ2aXNpYmxlXCJcbiAgW2hlYWRlcl09XCJkcmF3ZXJIZWFkZXIgfCB0cmFuc2xhdGVcIlxuICBbcG9zaXRpb25dPVwiZHJhd2VyUG9zaXRpb25cIlxuICBbc3R5bGVdPVwiZHJhd2VyU3R5bGVcIlxuICBbc2hvd0Nsb3NlSWNvbl09XCJkcmF3ZXJTaG93Q2xvc2VJY29uXCJcbiAgW2Nsb3NlT25Fc2NhcGVdPVwiZHJhd2VyQ2xvc2VPbkVzY2FwZVwiXG4gIFttb2RhbF09XCJkcmF3ZXJEaXNtaXNzYWJsZVwiXG4gIChvbkhpZGUpPVwiY2xvc2UoKVwiPlxuXG4gIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmb3JtQ29udGVudFwiPjwvbmctY29udGFpbmVyPlxuXG4gIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJmb290ZXJcIiAqbmdJZj1cInNob3dTdWJtaXRCdXR0b24gfHwgc2hvd0NhbmNlbEJ1dHRvblwiPlxuICAgIDxkaXYgY2xhc3M9XCJkcmF3ZXItZm9vdGVyXCI+XG4gICAgICA8cC1idXR0b24gKm5nSWY9XCJzaG93Q2FuY2VsQnV0dG9uXCIgW2xhYmVsXT1cImNhbmNlbExhYmVsIHwgdHJhbnNsYXRlXCIgW2ljb25dPVwiY2FuY2VsQnV0dG9uSWNvblwiIHNldmVyaXR5PVwic2Vjb25kYXJ5XCIgKG9uQ2xpY2spPVwiaGFuZGxlQ2FuY2VsKClcIiBbZGlzYWJsZWRdPVwibG9hZGluZ1wiPjwvcC1idXR0b24+XG4gICAgICA8cC1idXR0b24gKm5nSWY9XCJzaG93U3VibWl0QnV0dG9uXCIgW2xhYmVsXT1cInN1Ym1pdExhYmVsIHwgdHJhbnNsYXRlXCIgW2ljb25dPVwic3VibWl0QnV0dG9uSWNvblwiIChvbkNsaWNrKT1cImhhbmRsZVN1Ym1pdCgpXCIgW2xvYWRpbmddPVwibG9hZGluZ1wiIFtkaXNhYmxlZF09XCJmb3JtLmludmFsaWRcIj48L3AtYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L25nLXRlbXBsYXRlPlxuPC9wLWRyYXdlcj5cblxuPCEtLSBGb3JtIENvbnRlbnQgVGVtcGxhdGUgLS0+XG48bmctdGVtcGxhdGUgI2Zvcm1Db250ZW50PlxuICA8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1cIiBjbGFzcz1cImR5bmFtaWMtZm9ybVwiIChrZXlkb3duKT1cIm9uRm9ybUtleWRvd24oJGV2ZW50KVwiIChzdWJtaXQpPVwiJGV2ZW50LnByZXZlbnREZWZhdWx0KClcIj5cblxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHNlY3Rpb24gb2Ygc2VjdGlvbnNcIj5cbiAgICAgIDwhLS0gTm8gdGl0bGUgPSBiYXJlIGZpZWxkcyAtLT5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhc2VjdGlvbi50aXRsZVwiPlxuICAgICAgICA8ZGl2ICpuZ0lmPVwiIWlzSW5saW5lRWRpdE1vZGVcIiBjbGFzcz1cImdyaWRcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBmaWVsZCBvZiBzZWN0aW9uLmZpZWxkc1wiPlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cImlzRmllbGRWaXNpYmxlKGZpZWxkKVwiIFtuZ0NsYXNzXT1cImdldEZpZWxkR3JpZENsYXNzKGZpZWxkKVwiPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZmllbGRUZW1wbGF0ZTsgY29udGV4dDogeyBmaWVsZDogZmllbGQgfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2ICpuZ0lmPVwiaXNJbmxpbmVFZGl0TW9kZVwiIGNsYXNzPVwiaW5saW5lLWVkaXQtZmllbGRzXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZmllbGQgb2Ygc2VjdGlvbi5maWVsZHNcIj5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJpc0ZpZWxkVmlzaWJsZShmaWVsZClcIiBjbGFzcz1cImlubGluZS1lZGl0LWZpZWxkXCI+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpbmxpbmVFZGl0RmllbGRUZW1wbGF0ZTsgY29udGV4dDogeyBmaWVsZDogZmllbGQgfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDwhLS0gQm9yZGVyZWQgc2VjdGlvbiAtLT5cbiAgICAgIDxkaXYgKm5nSWY9XCJzZWN0aW9uLnRpdGxlICYmIGdldFNlY3Rpb25TdHlsZShzZWN0aW9uKSA9PT0gJ2JvcmRlcmVkJ1wiIGNsYXNzPVwiYm9yZGVyZWQtc2VjdGlvblwiPlxuICAgICAgICA8aDMgY2xhc3M9XCJzZWN0aW9uLWhlYWRpbmdcIj5cbiAgICAgICAgICA8aSAqbmdJZj1cInNlY3Rpb24uaWNvblwiIFtjbGFzc109XCJzZWN0aW9uLmljb24gKyAnIHNlY3Rpb24taWNvbidcIj48L2k+XG4gICAgICAgICAge3sgc2VjdGlvbi50aXRsZSB9fVxuICAgICAgICA8L2gzPlxuICAgICAgICA8ZGl2ICpuZ0lmPVwiIWlzSW5saW5lRWRpdE1vZGVcIiBjbGFzcz1cImdyaWRcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBmaWVsZCBvZiBzZWN0aW9uLmZpZWxkc1wiPlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cImlzRmllbGRWaXNpYmxlKGZpZWxkKVwiIFtuZ0NsYXNzXT1cImdldEZpZWxkR3JpZENsYXNzKGZpZWxkKVwiPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZmllbGRUZW1wbGF0ZTsgY29udGV4dDogeyBmaWVsZDogZmllbGQgfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2ICpuZ0lmPVwiaXNJbmxpbmVFZGl0TW9kZVwiIGNsYXNzPVwiaW5saW5lLWVkaXQtZmllbGRzXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZmllbGQgb2Ygc2VjdGlvbi5maWVsZHNcIj5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJpc0ZpZWxkVmlzaWJsZShmaWVsZClcIiBjbGFzcz1cImlubGluZS1lZGl0LWZpZWxkXCI+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpbmxpbmVFZGl0RmllbGRUZW1wbGF0ZTsgY29udGV4dDogeyBmaWVsZDogZmllbGQgfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDwhLS0gUGFuZWwgc2VjdGlvbiAtLT5cbiAgICAgIDxwLXBhbmVsXG4gICAgICAgICpuZ0lmPVwic2VjdGlvbi50aXRsZSAmJiBnZXRTZWN0aW9uU3R5bGUoc2VjdGlvbikgPT09ICdwYW5lbCdcIlxuICAgICAgICBbdG9nZ2xlYWJsZV09XCJ0cnVlXCJcbiAgICAgICAgW2NvbGxhcHNlZF09XCJzZWN0aW9uLmNvbGxhcHNlZCB8fCBmYWxzZVwiXG4gICAgICAgIHN0eWxlQ2xhc3M9XCJzZWN0aW9uLXBhbmVsXCI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJoZWFkZXJcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VjdGlvbi1oZWFkZXJcIj5cbiAgICAgICAgICAgIDxpICpuZ0lmPVwic2VjdGlvbi5pY29uXCIgW2NsYXNzXT1cInNlY3Rpb24uaWNvbiArICcgc2VjdGlvbi1pY29uJ1wiPjwvaT5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2VjdGlvbi10aXRsZVwiPnt7IHNlY3Rpb24udGl0bGUgfX08L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDxkaXYgKm5nSWY9XCIhaXNJbmxpbmVFZGl0TW9kZVwiIGNsYXNzPVwiZ3JpZFwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGZpZWxkIG9mIHNlY3Rpb24uZmllbGRzXCI+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXNGaWVsZFZpc2libGUoZmllbGQpXCIgW25nQ2xhc3NdPVwiZ2V0RmllbGRHcmlkQ2xhc3MoZmllbGQpXCI+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmaWVsZFRlbXBsYXRlOyBjb250ZXh0OiB7IGZpZWxkOiBmaWVsZCB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJpc0lubGluZUVkaXRNb2RlXCIgY2xhc3M9XCJpbmxpbmUtZWRpdC1maWVsZHNcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBmaWVsZCBvZiBzZWN0aW9uLmZpZWxkc1wiPlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cImlzRmllbGRWaXNpYmxlKGZpZWxkKVwiIGNsYXNzPVwiaW5saW5lLWVkaXQtZmllbGRcIj5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImlubGluZUVkaXRGaWVsZFRlbXBsYXRlOyBjb250ZXh0OiB7IGZpZWxkOiBmaWVsZCB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L3AtcGFuZWw+XG5cbiAgICAgIDwhLS0gSGVhZGluZy1vbmx5IHNlY3Rpb24gKHRpdGxlIHByZXNlbnQsIHN0eWxlPSdub25lJyBvciBvbWl0dGVkKSAtLT5cbiAgICAgIDxkaXYgKm5nSWY9XCJzZWN0aW9uLnRpdGxlICYmIGdldFNlY3Rpb25TdHlsZShzZWN0aW9uKSA9PT0gJ25vbmUnXCIgY2xhc3M9XCJoZWFkaW5nLXNlY3Rpb25cIj5cbiAgICAgICAgPGgzIGNsYXNzPVwic2VjdGlvbi1oZWFkaW5nXCI+XG4gICAgICAgICAgPGkgKm5nSWY9XCJzZWN0aW9uLmljb25cIiBbY2xhc3NdPVwic2VjdGlvbi5pY29uICsgJyBzZWN0aW9uLWljb24nXCI+PC9pPlxuICAgICAgICAgIHt7IHNlY3Rpb24udGl0bGUgfX1cbiAgICAgICAgPC9oMz5cbiAgICAgICAgPGRpdiAqbmdJZj1cIiFpc0lubGluZUVkaXRNb2RlXCIgY2xhc3M9XCJncmlkXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZmllbGQgb2Ygc2VjdGlvbi5maWVsZHNcIj5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJpc0ZpZWxkVmlzaWJsZShmaWVsZClcIiBbbmdDbGFzc109XCJnZXRGaWVsZEdyaWRDbGFzcyhmaWVsZClcIj5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImZpZWxkVGVtcGxhdGU7IGNvbnRleHQ6IHsgZmllbGQ6IGZpZWxkIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiAqbmdJZj1cImlzSW5saW5lRWRpdE1vZGVcIiBjbGFzcz1cImlubGluZS1lZGl0LWZpZWxkc1wiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGZpZWxkIG9mIHNlY3Rpb24uZmllbGRzXCI+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXNGaWVsZFZpc2libGUoZmllbGQpXCIgY2xhc3M9XCJpbmxpbmUtZWRpdC1maWVsZFwiPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaW5saW5lRWRpdEZpZWxkVGVtcGxhdGU7IGNvbnRleHQ6IHsgZmllbGQ6IGZpZWxkIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPCEtLSBDdXN0b20gY29udGVudCBwcm9qZWN0aW9uIC0tPlxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgPC9mb3JtPlxuPC9uZy10ZW1wbGF0ZT5cblxuPCEtLSBGaWVsZCBUZW1wbGF0ZSAtLT5cbjxuZy10ZW1wbGF0ZSAjZmllbGRUZW1wbGF0ZSBsZXQtZmllbGQ9XCJmaWVsZFwiPlxuICA8c2lhLWR5bmFtaWMtZmllbGQtdGV4dCAqbmdJZj1cImZpZWxkLnR5cGUgPT09ICd0ZXh0J1wiIFtmaWVsZF09XCJmaWVsZFwiIFtmb3JtXT1cImZvcm1cIiBbbW9kZV09XCInZm9ybSdcIj48L3NpYS1keW5hbWljLWZpZWxkLXRleHQ+XG4gIDxzaWEtZHluYW1pYy1maWVsZC10ZXh0YXJlYSAqbmdJZj1cImZpZWxkLnR5cGUgPT09ICd0ZXh0YXJlYSdcIiBbZmllbGRdPVwiZmllbGRcIiBbZm9ybV09XCJmb3JtXCIgW21vZGVdPVwiJ2Zvcm0nXCI+PC9zaWEtZHluYW1pYy1maWVsZC10ZXh0YXJlYT5cbiAgPHNpYS1keW5hbWljLWZpZWxkLW51bWJlciAqbmdJZj1cImZpZWxkLnR5cGUgPT09ICdudW1iZXInIHx8IGZpZWxkLnR5cGUgPT09ICdjdXJyZW5jeSdcIiBbZmllbGRdPVwiZmllbGRcIiBbZm9ybV09XCJmb3JtXCIgW21vZGVdPVwiJ2Zvcm0nXCI+PC9zaWEtZHluYW1pYy1maWVsZC1udW1iZXI+XG4gIDxzaWEtZHluYW1pYy1maWVsZC1kYXRlICpuZ0lmPVwiZmllbGQudHlwZSA9PT0gJ2RhdGUnXCIgW2ZpZWxkXT1cImZpZWxkXCIgW2Zvcm1dPVwiZm9ybVwiIFttb2RlXT1cIidmb3JtJ1wiPjwvc2lhLWR5bmFtaWMtZmllbGQtZGF0ZT5cbiAgPHNpYS1keW5hbWljLWZpZWxkLWRhdGV0aW1lICpuZ0lmPVwiZmllbGQudHlwZSA9PT0gJ2RhdGV0aW1lJ1wiIFtmaWVsZF09XCJmaWVsZFwiIFtmb3JtXT1cImZvcm1cIiBbbW9kZV09XCInZm9ybSdcIj48L3NpYS1keW5hbWljLWZpZWxkLWRhdGV0aW1lPlxuICA8c2lhLWR5bmFtaWMtZmllbGQtZHJvcGRvd24gKm5nSWY9XCJmaWVsZC50eXBlID09PSAnZHJvcGRvd24nIHx8IGZpZWxkLnR5cGUgPT09ICdlbnVtJ1wiIFtmaWVsZF09XCJmaWVsZFwiIFtmb3JtXT1cImZvcm1cIiBbbW9kZV09XCInZm9ybSdcIj48L3NpYS1keW5hbWljLWZpZWxkLWRyb3Bkb3duPlxuICA8c2lhLWR5bmFtaWMtZmllbGQtbG9va3VwICpuZ0lmPVwiZmllbGQudHlwZSA9PT0gJ2xvb2t1cCdcIiBbZmllbGRdPVwiZmllbGRcIiBbZm9ybV09XCJmb3JtXCIgW2Zvcm1Hcm91cF09XCJmb3JtXCIgW21vZGVdPVwiJ2Zvcm0nXCI+PC9zaWEtZHluYW1pYy1maWVsZC1sb29rdXA+XG4gIDxzaWEtZHluYW1pYy1maWVsZC10aW1lICpuZ0lmPVwiZmllbGQudHlwZSA9PT0gJ3RpbWUnXCIgW2ZpZWxkXT1cImZpZWxkXCIgW2Zvcm1dPVwiZm9ybVwiIFttb2RlXT1cIidmb3JtJ1wiPjwvc2lhLWR5bmFtaWMtZmllbGQtdGltZT5cbiAgPHNpYS1keW5hbWljLWZpZWxkLWNoZWNrYm94ICpuZ0lmPVwiZmllbGQudHlwZSA9PT0gJ2NoZWNrYm94J1wiIFtmaWVsZF09XCJmaWVsZFwiIFtmb3JtXT1cImZvcm1cIiBbbW9kZV09XCInZm9ybSdcIj48L3NpYS1keW5hbWljLWZpZWxkLWNoZWNrYm94PlxuICA8c2lhLWR5bmFtaWMtZmllbGQtbXVsdGlzZWxlY3QgKm5nSWY9XCJmaWVsZC50eXBlID09PSAnbXVsdGlzZWxlY3QnXCIgW2ZpZWxkXT1cImZpZWxkXCIgW2Zvcm1dPVwiZm9ybVwiIFttb2RlXT1cIidmb3JtJ1wiPjwvc2lhLWR5bmFtaWMtZmllbGQtbXVsdGlzZWxlY3Q+XG4gIDxzaWEtZHluYW1pYy1maWVsZC1pbWFnZSAqbmdJZj1cImZpZWxkLnR5cGUgPT09ICdpbWFnZSdcIiBbZmllbGRdPVwiZmllbGRcIiBbZm9ybV09XCJmb3JtXCIgW21vZGVdPVwiJ2Zvcm0nXCI+PC9zaWEtZHluYW1pYy1maWVsZC1pbWFnZT5cbjwvbmctdGVtcGxhdGU+XG5cbjwhLS0gSW5saW5lIEVkaXQgRmllbGQgVGVtcGxhdGUgLS0+XG48bmctdGVtcGxhdGUgI2lubGluZUVkaXRGaWVsZFRlbXBsYXRlIGxldC1maWVsZD1cImZpZWxkXCI+XG4gIDxsYWJlbCBjbGFzcz1cImZpZWxkLWxhYmVsXCI+e3sgZmllbGQubGFiZWwgfCB0cmFuc2xhdGUgfX08L2xhYmVsPlxuICA8ZGl2IGNsYXNzPVwiZmllbGQtZGlzcGxheVwiICpuZ0lmPVwiIWlzRmllbGRFZGl0aW5nKGZpZWxkLmZpZWxkKVwiIChjbGljayk9XCJzdGFydEVkaXRGaWVsZChmaWVsZC5maWVsZClcIiBbY2xhc3MuZGlzYWJsZWRdPVwiZmllbGQuZGlzYWJsZWRcIj5cbiAgICA8c3BhbiBjbGFzcz1cImRpc3BsYXktdmFsdWVcIiBbYXR0ci5kYXRhLXBsYWNlaG9sZGVyXT1cImZpZWxkLnBsYWNlaG9sZGVyIHx8ICgnZGVzaWduLmNvbXBvbmVudHNfYWkubm90X2luZm9ybWVkJyB8IHRyYW5zbGF0ZSlcIj57eyBnZXRGaWVsZERpc3BsYXlWYWx1ZShmaWVsZC5maWVsZCkgfX08L3NwYW4+XG4gICAgPGkgY2xhc3M9XCJwaSBwaS1wZW5jaWwgZWRpdC1pY29uXCIgKm5nSWY9XCIhZmllbGQuZGlzYWJsZWRcIj48L2k+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiZmllbGQtZWRpdFwiICpuZ0lmPVwiaXNGaWVsZEVkaXRpbmcoZmllbGQuZmllbGQpXCI+XG4gICAgPGRpdiBjbGFzcz1cImlucHV0LWNvbnRhaW5lclwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImZpZWxkVGVtcGxhdGU7IGNvbnRleHQ6IHsgZmllbGQ6IGZpZWxkIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiZWRpdC1hY3Rpb25zXCI+XG4gICAgICA8cC1idXR0b24gdHlwZT1cImJ1dHRvblwiIGljb249XCJwaSBwaS1jaGVja1wiIFtyb3VuZGVkXT1cInRydWVcIiBbdGV4dF09XCJ0cnVlXCIgc2V2ZXJpdHk9XCJzdWNjZXNzXCIgKG9uQ2xpY2spPVwic2F2ZUlubGluZUZpZWxkKGZpZWxkLmZpZWxkKVwiIFtsb2FkaW5nXT1cInNhdmluZ0ZpZWxkXCIgW2Rpc2FibGVkXT1cImZvcm0uZ2V0KGZpZWxkLmZpZWxkKT8uaW52YWxpZFwiIHNpemU9XCJzbWFsbFwiPjwvcC1idXR0b24+XG4gICAgICA8cC1idXR0b24gdHlwZT1cImJ1dHRvblwiIGljb249XCJwaSBwaS10aW1lc1wiIFtyb3VuZGVkXT1cInRydWVcIiBbdGV4dF09XCJ0cnVlXCIgc2V2ZXJpdHk9XCJkYW5nZXJcIiAob25DbGljayk9XCJjYW5jZWxJbmxpbmVFZGl0KClcIiBbZGlzYWJsZWRdPVwic2F2aW5nRmllbGRcIiBzaXplPVwic21hbGxcIj48L3AtYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
614
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMtYWkvc3JjL2xpYi9jb21wb25lbnRzL2R5bmFtaWMtZm9ybS9keW5hbWljLWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy1haS9zcmMvbGliL2NvbXBvbmVudHMvZHluYW1pYy1mb3JtL2R5bmFtaWMtZm9ybS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUE0QixNQUFNLGVBQWUsQ0FBQztBQUN6RyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUEwQixtQkFBbUIsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBVzlDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUNsRixPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUN0RixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUNsRixPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUMxRixPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSwyQ0FBMkMs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LFVBQVU7c0JBQW5CLE1BQU07Z0JBQ0csYUFBYTtzQkFBdEIsTUFBTTtnQkFDRyxRQUFRO3NCQUFqQixNQUFNO2dCQUNHLFNBQVM7c0JBQWxCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUdyb3VwLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgUGFuZWxNb2R1bGUgfSBmcm9tICdwcmltZW5nL3BhbmVsJztcbmltcG9ydCB7IERpYWxvZ01vZHVsZSB9IGZyb20gJ3ByaW1lbmcvZGlhbG9nJztcbmltcG9ydCB7IERyYXdlck1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvZHJhd2VyJztcbmltcG9ydCB7IEJ1dHRvbk1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvYnV0dG9uJztcbmltcG9ydCB7XG4gIER5bmFtaWNGb3JtRmllbGRDb25maWcsXG4gIER5bmFtaWNGb3JtRmllbGRTaXplLFxuICBEeW5hbWljRm9ybVNlY3Rpb24sXG4gIER5bmFtaWNGb3JtRGlhbG9nQ29uZmlnLFxuICBEeW5hbWljRm9ybURyYXdlckNvbmZpZ1xufSBmcm9tICcuL21vZGVscy9keW5hbWljLWZvcm0ubW9kZWxzJztcbmltcG9ydCB7IFRyYW5zbGF0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3RyYW5zbGF0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgTWFza1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9tYXNrLnNlcnZpY2UnO1xuaW1wb3J0IHsgTG9jYWxlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2xvY2FsZS5zZXJ2aWNlJztcbmltcG9ydCB7IFRyYW5zbGF0ZVBpcGUgfSBmcm9tICcuLi8uLi9waXBlcy90cmFuc2xhdGUucGlwZSc7XG5pbXBvcnQgeyBEeW5hbWljRmllbGRUZXh0Q29tcG9uZW50IH0gZnJvbSAnLi9maWVsZHMvZHluYW1pYy1maWVsZC10ZXh0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEeW5hbWljRmllbGROdW1iZXJDb21wb25lbnQgfSBmcm9tICcuL2ZpZWxkcy9keW5hbWljLWZpZWxkLW51bWJlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgRHluYW1pY0ZpZWxkRGF0ZUNvbXBvbmVudCB9IGZyb20gJy4vZmllbGRzL2R5bmFtaWMtZmllbGQtZGF0ZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgRHluYW1pY0ZpZWxkRGF0ZXRpbWVDb21wb25lbnQgfSBmcm9tICcuL2ZpZWxkcy9keW5hbWljLWZpZWxkLWRhdGV0aW1lLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEeW5hbWljRmllbGREcm9wZG93bkNvbXBvbmVudCB9IGZyb20gJy4vZmllbGRzL2R5bmFtaWMtZmllbGQtZHJvcGRvd24uY29tcG9uZW50JztcbmltcG9ydCB7IER5bmFtaWNGaWVsZExvb2t1cENvbXBvbmVudCB9IGZyb20gJy4vZmllbGRzL2R5bmFtaWMtZmllbGQtbG9va3VwLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEeW5hbWljRmllbGRUZXh0YXJlYUNvbXBvbmVudCB9IGZyb20gJy4vZmllbGRzL2R5bmFtaWMtZmllbGQtdGV4dGFyZWEuY29tcG9uZW50JztcbmltcG9ydCB7IER5bmFtaWNGaWVsZFRpbWVDb21wb25lbnQgfSBmcm9tICcuL2ZpZWxkcy9keW5hbWljLWZpZWxkLXRpbWUuY29tcG9uZW50JztcbmltcG9ydCB7IER5bmFtaWNGaWVsZENoZWNrYm94Q29tcG9uZW50IH0gZnJvbSAnLi9maWVsZHMvZHluYW1pYy1maWVsZC1jaGVja2JveC5jb21wb25lbnQnO1xuaW1wb3J0IHsgRHluYW1pY0ZpZWxkTXVsdGlzZWxlY3RDb21wb25lbnQgfSBmcm9tICcuL2ZpZWxkcy9keW5hbWljLWZpZWxkLW11bHRpc2VsZWN0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEeW5hbWljRmllbGRJbWFnZUNvbXBvbmVudCB9IGZyb20gJy4vZmllbGRzL2R5bmFtaWMtZmllbGQtaW1hZ2UuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2lhLWR5bmFtaWMtZm9ybScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBQYW5lbE1vZHVsZSxcbiAgICBEaWFsb2dNb2R1bGUsXG4gICAgRHJhd2VyTW9kdWxlLFxuICAgIEJ1dHRvbk1vZHVsZSxcbiAgICBUcmFuc2xhdGVQaXBlLFxuICAgIER5bmFtaWNGaWVsZFRleHRDb21wb25lbnQsXG4gICAgRHluYW1pY0ZpZWxkTnVtYmVyQ29tcG9uZW50LFxuICAgIER5bmFtaWNGaWVsZERhdGVDb21wb25lbnQsXG4gICAgRHluYW1pY0ZpZWxkRGF0ZXRpbWVDb21wb25lbnQsXG4gICAgRHluYW1pY0ZpZWxkRHJvcGRvd25Db21wb25lbnQsXG4gICAgRHluYW1pY0ZpZWxkTG9va3VwQ29tcG9uZW50LFxuICAgIER5bmFtaWNGaWVsZFRleHRhcmVhQ29tcG9uZW50LFxuICAgIER5bmFtaWNGaWVsZFRpbWVDb21wb25lbnQsXG4gICAgRHluYW1pY0ZpZWxkQ2hlY2tib3hDb21wb25lbnQsXG4gICAgRHluYW1pY0ZpZWxkTXVsdGlzZWxlY3RDb21wb25lbnQsXG4gICAgRHluYW1pY0ZpZWxkSW1hZ2VDb21wb25lbnRcbiAgXSxcbiAgdGVtcGxhdGVVcmw6ICcuL2R5bmFtaWMtZm9ybS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9keW5hbWljLWZvcm0uY29tcG9uZW50LnNjc3MnXG59KVxuZXhwb3J0IGNsYXNzIER5bmFtaWNGb3JtQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuICBASW5wdXQoKSBzZWN0aW9uczogRHluYW1pY0Zvcm1TZWN0aW9uW10gPSBbXTtcbiAgQElucHV0KCkgZW50aXR5RGF0YTogYW55ID0gbnVsbDtcbiAgQElucHV0KCkgbW9kZTogJ2Zvcm0nIHwgJ2lubGluZS1lZGl0JyA9ICdmb3JtJztcblxuICAvLyBEaXNwbGF5IE1vZGUg4oCUIG9wdGlvbmFsLiBJZiBub3Qgc2V0LCByZW5kZXJzIGlubGluZSB3aXRob3V0IGJ1dHRvbnMuXG4gIEBJbnB1dCgpIGRpc3BsYXlNb2RlPzogJ2RpYWxvZycgfCAnZHJhd2VyJztcbiAgQElucHV0KCkgdmlzaWJsZTogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBkaWFsb2dDb25maWc6IER5bmFtaWNGb3JtRGlhbG9nQ29uZmlnID0ge307XG4gIEBJbnB1dCgpIGRyYXdlckNvbmZpZzogRHluYW1pY0Zvcm1EcmF3ZXJDb25maWcgPSB7fTtcblxuICAvLyBCdXR0b24gQ29uZmlndXJhdGlvblxuICBASW5wdXQoKSBzaG93U3VibWl0QnV0dG9uOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIHNob3dDYW5jZWxCdXR0b246IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgc3VibWl0QnV0dG9uTGFiZWw/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIGNhbmNlbEJ1dHRvbkxhYmVsPzogc3RyaW5nO1xuICBASW5wdXQoKSBzdWJtaXRCdXR0b25JY29uOiBzdHJpbmcgPSAncGkgcGktY2hlY2snO1xuICBASW5wdXQoKSBjYW5jZWxCdXR0b25JY29uOiBzdHJpbmcgPSAncGkgcGktdGltZXMnO1xuXG4gIEBPdXRwdXQoKSBmb3JtUmVhZHkgPSBuZXcgRXZlbnRFbWl0dGVyPEZvcm1Hcm91cD4oKTtcbiAgQE91dHB1dCgpIGZvcm1TdWJtaXQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIHZpc2libGVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gIEBPdXRwdXQoKSBvbkNhbmNlbCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgQE91dHB1dCgpIGZpZWxkU2F2ZSA9IG5ldyBFdmVudEVtaXR0ZXI8eyBmaWVsZDogc3RyaW5nLCB2YWx1ZTogYW55IH0+KCk7XG5cbiAgZm9ybSE6IEZvcm1Hcm91cDtcbiAgbG9hZGluZzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8vIElubGluZSBlZGl0IHN0YXRlXG4gIGVkaXRpbmdGaWVsZDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gIHNhdmluZ0ZpZWxkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLy8gLS0tIENvbXB1dGVkIHByb3BlcnRpZXMgLS0tXG5cbiAgZ2V0IGFsbEZpZWxkcygpOiBEeW5hbWljRm9ybUZpZWxkQ29uZmlnW10ge1xuICAgIHJldHVybiB0aGlzLnNlY3Rpb25zLmZsYXRNYXAoc2VjdGlvbiA9PiBzZWN0aW9uLmZpZWxkcyk7XG4gIH1cblxuICBnZXQgaXNJbmxpbmVFZGl0TW9kZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5tb2RlID09PSAnaW5saW5lLWVkaXQnO1xuICB9XG5cbiAgZ2V0IGlzRGlhbG9nTW9kZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5kaXNwbGF5TW9kZSA9PT0gJ2RpYWxvZyc7XG4gIH1cblxuICBnZXQgaXNEcmF3ZXJNb2RlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmRpc3BsYXlNb2RlID09PSAnZHJhd2VyJztcbiAgfVxuXG4gIGdldCBpc0lubGluZU1vZGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICF0aGlzLmRpc3BsYXlNb2RlO1xuICB9XG5cbiAgLy8gRGlhbG9nIGNvbmZpZyB3aXRoIGRlZmF1bHRzXG4gIGdldCBkaWFsb2dIZWFkZXIoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5kaWFsb2dDb25maWcuaGVhZGVyIHx8IHRoaXMudHJhbnNsYXRpb25TZXJ2aWNlLnRyYW5zbGF0ZSgnZGVzaWduLmNvbXBvbmVudHNfYWkuZm9ybScpO1xuICB9XG4gIGdldCBkaWFsb2dXaWR0aCgpOiBzdHJpbmcgeyByZXR1cm4gdGhpcy5kaWFsb2dDb25maWcud2lkdGggfHwgJzYwMHB4JzsgfVxuICBnZXQgZGlhbG9nRHJhZ2dhYmxlKCk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5kaWFsb2dDb25maWcuZHJhZ2dhYmxlID8/IGZhbHNlOyB9XG4gIGdldCBkaWFsb2dSZXNpemFibGUoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLmRpYWxvZ0NvbmZpZy5yZXNpemFibGUgPz8gZmFsc2U7IH1cbiAgZ2V0IGRpYWxvZ01heGltaXphYmxlKCk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5kaWFsb2dDb25maWcubWF4aW1pemFibGUgPz8gZmFsc2U7IH1cbiAgZ2V0IGRpYWxvZ0Nsb3NlT25Fc2NhcGUoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLmRpYWxvZ0NvbmZpZy5jbG9zZU9uRXNjYXBlID8/IHRydWU7IH1cbiAgZ2V0IGRpYWxvZ0Rpc21pc3NhYmxlTWFzaygpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMuZGlhbG9nQ29uZmlnLmRpc21pc3NhYmxlTWFzayA/PyBmYWxzZTsgfVxuXG4gIC8vIERyYXdlciBjb25maWcgd2l0aCBkZWZhdWx0c1xuICBnZXQgZHJhd2VySGVhZGVyKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZHJhd2VyQ29uZmlnLmhlYWRlciB8fCB0aGlzLnRyYW5zbGF0aW9uU2VydmljZS50cmFuc2xhdGUoJ2Rlc2lnbi5jb21wb25lbnRzX2FpLmZvcm0nKTtcbiAgfVxuICBnZXQgZHJhd2VyUG9zaXRpb24oKTogJ2xlZnQnIHwgJ3JpZ2h0JyB8ICd0b3AnIHwgJ2JvdHRvbScgeyByZXR1cm4gdGhpcy5kcmF3ZXJDb25maWcucG9zaXRpb24gfHwgJ3JpZ2h0JzsgfVxuICBnZXQgZHJhd2VyU2hvd0Nsb3NlSWNvbigpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMuZHJhd2VyQ29uZmlnLnNob3dDbG9zZUljb24gPz8gdHJ1ZTsgfVxuICBnZXQgZHJhd2VyQ2xvc2VPbkVzY2FwZSgpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMuZHJhd2VyQ29uZmlnLmNsb3NlT25Fc2NhcGUgPz8gdHJ1ZTsgfVxuICBnZXQgZHJhd2VyRGlzbWlzc2FibGUoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLmRyYXdlckNvbmZpZy5kaXNtaXNzYWJsZSA/PyB0cnVlOyB9XG5cbiAgZ2V0IGRyYXdlclN0eWxlKCk6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0ge1xuICAgIGNvbnN0IHBvc2l0aW9uID0gdGhpcy5kcmF3ZXJQb3NpdGlvbjtcbiAgICBjb25zdCBpc0hvcml6b250YWwgPSBwb3NpdGlvbiA9PT0gJ2xlZnQnIHx8IHBvc2l0aW9uID09PSAncmlnaHQnO1xuICAgIGlmICh0aGlzLmRyYXdlckNvbmZpZy5jdXN0b21XaWR0aCkge1xuICAgICAgcmV0dXJuIGlzSG9yaXpvbnRhbCA/IHsgd2lkdGg6IHRoaXMuZHJhd2VyQ29uZmlnLmN1c3RvbVdpZHRoIH0gOiB7IGhlaWdodDogdGhpcy5kcmF3ZXJDb25maWcuY3VzdG9tV2lkdGggfTtcbiAgICB9XG4gICAgY29uc3Qgc2l6ZSA9IHRoaXMuZHJhd2VyQ29uZmlnLnNpemUgfHwgJ21lZGl1bSc7XG4gICAgY29uc3Qgc2l6ZU1hcDogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgICAgIHNtYWxsOiBpc0hvcml6b250YWwgPyAnMjUlJyA6ICcyNXZoJyxcbiAgICAgIG1lZGl1bTogaXNIb3Jpem9udGFsID8gJzQwJScgOiAnNDB2aCcsXG4gICAgICBsYXJnZTogaXNIb3Jpem9udGFsID8gJzYwJScgOiAnNjB2aCcsXG4gICAgICB4bGFyZ2U6IGlzSG9yaXpvbnRhbCA/ICc4MCUnIDogJzgwdmgnLFxuICAgICAgZnVsbDogaXNIb3Jpem9udGFsID8gJzEwMCUnIDogJzEwMHZoJ1xuICAgIH07XG4gICAgcmV0dXJuIGlzSG9yaXpvbnRhbCA/IHsgd2lkdGg6IHNpemVNYXBbc2l6ZV0gfSA6IHsgaGVpZ2h0OiBzaXplTWFwW3NpemVdIH07XG4gIH1cblxuICBnZXQgc3VibWl0TGFiZWwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5zdWJtaXRCdXR0b25MYWJlbCB8fCB0aGlzLnRyYW5zbGF0aW9uU2VydmljZS50cmFuc2xhdGUoJ2Rlc2lnbi5jb21wb25lbnRzX2FpLnNhdmUnKTtcbiAgfVxuICBnZXQgY2FuY2VsTGFiZWwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5jYW5jZWxCdXR0b25MYWJlbCB8fCB0aGlzLnRyYW5zbGF0aW9uU2VydmljZS50cmFuc2xhdGUoJ2Rlc2lnbi5jb21wb25lbnRzX2FpLmNhbmNlbCcpO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXIsXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGlvblNlcnZpY2U6IFRyYW5zbGF0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIG1hc2tTZXJ2aWNlOiBNYXNrU2VydmljZSxcbiAgICBwcml2YXRlIGxvY2FsZVNlcnZpY2U6IExvY2FsZVNlcnZpY2VcbiAgKSB7fVxuXG4gIC8vIC0tLSBMaWZlY3ljbGUgLS0tXG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5pbml0Rm9ybSgpO1xuICAgIGlmICh0aGlzLmVudGl0eURhdGEpIHtcbiAgICAgIHRoaXMubG9hZEVudGl0eURhdGEoKTtcbiAgICB9XG4gICAgdGhpcy5zZXR1cENvbmRpdGlvbmFsRmllbGRzV2F0Y2hlcigpO1xuICAgIHRoaXMuZm9ybVJlYWR5LmVtaXQodGhpcy5mb3JtKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlc1snZW50aXR5RGF0YSddICYmIHRoaXMuZm9ybSkge1xuICAgICAgdGhpcy5lbnRpdHlEYXRhID8gdGhpcy5sb2FkRW50aXR5RGF0YSgpIDogdGhpcy5yZXNldEZvcm0oKTtcbiAgICB9XG4gICAgaWYgKGNoYW5nZXNbJ3Zpc2libGUnXSAmJiBjaGFuZ2VzWyd2aXNpYmxlJ10uY3VycmVudFZhbHVlID09PSB0cnVlKSB7XG4gICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgIGlmICh0aGlzLmVudGl0eURhdGEgJiYgdGhpcy5mb3JtKSB7XG4gICAgICAgIHRoaXMubG9hZEVudGl0eURhdGEoKTtcbiAgICAgIH0gZWxzZSBpZiAoIXRoaXMuZW50aXR5RGF0YSAmJiB0aGlzLmZvcm0pIHtcbiAgICAgICAgdGhpcy5yZXNldEZvcm0oKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyAtLS0gRm9ybSBpbml0IC0tLVxuXG4gIGluaXRGb3JtKCk6IHZvaWQge1xuICAgIGNvbnN0IGZvcm1Db250cm9sczogYW55ID0ge307XG4gICAgdGhpcy5hbGxGaWVsZHMuZm9yRWFjaChmaWVsZCA9PiB7XG4gICAgICBjb25zdCBkZWZhdWx0VmFsdWUgPSB0aGlzLmdldERlZmF1bHRWYWx1ZShmaWVsZCk7XG4gICAgICBjb25zdCB2YWxpZGF0b3JzID0gWy4uLihmaWVsZC52YWxpZGF0b3JzIHx8IFtdKV07XG4gICAgICBpZiAoZmllbGQucmVxdWlyZWQpIHtcbiAgICAgICAgdmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xuICAgICAgfVxuICAgICAgZm9ybUNvbnRyb2xzW2ZpZWxkLmZpZWxkXSA9IHRoaXMuZmIuY29udHJvbChcbiAgICAgICAgeyB2YWx1ZTogZGVmYXVsdFZhbHVlLCBkaXNhYmxlZDogZmllbGQuZGlzYWJsZWQgfHwgZmFsc2UgfSxcbiAgICAgICAgdmFsaWRhdG9yc1xuICAgICAgKTtcbiAgICB9KTtcbiAgICB0aGlzLmZvcm0gPSB0aGlzLmZiLmdyb3VwKGZvcm1Db250cm9scyk7XG4gICAgdGhpcy5hcHBseUluaXRpYWxEaXNhYmxlZFN0YXRlKCk7XG4gIH1cblxuICBwcml2YXRlIGdldERlZmF1bHRWYWx1ZShmaWVsZDogRHluYW1pY0Zvcm1GaWVsZENvbmZpZyk6IGFueSB7XG4gICAgaWYgKGZpZWxkLmRlZmF1bHRWYWx1ZSAhPT0gdW5kZWZpbmVkKSByZXR1cm4gZmllbGQuZGVmYXVsdFZhbHVlO1xuICAgIHN3aXRjaCAoZmllbGQudHlwZSkge1xuICAgICAgY2FzZSAnbnVtYmVyJzogY2FzZSAnY3VycmVuY3knOiBjYXNlICdkYXRlJzogY2FzZSAnZGF0ZXRpbWUnOiBjYXNlICd0aW1lJzogY2FzZSAnbG9va3VwJzogcmV0dXJuIG51bGw7XG4gICAgICBjYXNlICdjaGVja2JveCc6IHJldHVybiBmYWxzZTtcbiAgICAgIGNhc2UgJ211bHRpc2VsZWN0JzogcmV0dXJuIFtdO1xuICAgICAgY2FzZSAnZHJvcGRvd24nOiBjYXNlICdlbnVtJzogcmV0dXJuICcnO1xuICAgICAgZGVmYXVsdDogcmV0dXJuICcnO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXBwbHlJbml0aWFsRGlzYWJsZWRTdGF0ZSgpOiB2b2lkIHtcbiAgICB0aGlzLmFsbEZpZWxkcy5mb3JFYWNoKGZpZWxkID0+IHtcbiAgICAgIGlmIChmaWVsZC5kaXNhYmxlZFdoZW4pIHtcbiAgICAgICAgY29uc3QgY29udHJvbCA9IHRoaXMuZm9ybS5nZXQoZmllbGQuZmllbGQpO1xuICAgICAgICBpZiAoY29udHJvbCAmJiB0aGlzLmlzRmllbGREaXNhYmxlZChmaWVsZCkpIHtcbiAgICAgICAgICBjb250cm9sLmRpc2FibGUoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLy8gLS0tIERhdGEgbG9hZGluZyAtLS1cblxuICBsb2FkRW50aXR5RGF0YSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5lbnRpdHlEYXRhICYmIHRoaXMuZm9ybSkge1xuICAgICAgdGhpcy5mb3JtLnBhdGNoVmFsdWUodGhpcy5wcm9jZXNzRW50aXR5RGF0YSh0aGlzLmVudGl0eURhdGEpKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHByb2Nlc3NFbnRpdHlEYXRhKGVudGl0eTogYW55KTogYW55IHtcbiAgICBjb25zdCBkYXRhID0geyAuLi5lbnRpdHkgfTtcbiAgICB0aGlzLmFsbEZpZWxkcy5mb3JFYWNoKGZpZWxkID0+IHtcbiAgICAgIGlmIChmaWVsZC50eXBlID09PSAnZGF0ZScgJiYgZGF0YVtmaWVsZC5maWVsZF0pIHtcbiAgICAgICAgY29uc3QgdiA9IGRhdGFbZmllbGQuZmllbGRdO1xuICAgICAgICBpZiAodHlwZW9mIHYgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgY29uc3QgcGFydHMgPSB2LnN1YnN0cmluZygwLCAxMCkuc3BsaXQoJy0nKTtcbiAgICAgICAgICBpZiAocGFydHMubGVuZ3RoID09PSAzKSB7XG4gICAgICAgICAgICBjb25zdCBkID0gbmV3IERhdGUoK3BhcnRzWzBdLCArcGFydHNbMV0gLSAxLCArcGFydHNbMl0pO1xuICAgICAgICAgICAgaWYgKCFpc05hTihkLmdldFRpbWUoKSkpIGRhdGFbZmllbGQuZmllbGRdID0gZDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChmaWVsZC50eXBlID09PSAndGltZScgJiYgZGF0YVtmaWVsZC5maWVsZF0pIHtcbiAgICAgICAgY29uc3QgdiA9IGRhdGFbZmllbGQuZmllbGRdO1xuICAgICAgICBpZiAodHlwZW9mIHYgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgY29uc3QgcGFydHMgPSB2LnNwbGl0KCc6Jyk7XG4gICAgICAgICAgaWYgKHBhcnRzLmxlbmd0aCA+PSAyKSB7XG4gICAgICAgICAgICBjb25zdCBkID0gbmV3IERhdGUoKTtcbiAgICAgICAgICAgIGQuc2V0SG91cnMocGFyc2VJbnQocGFydHNbMF0sIDEwKSwgcGFyc2VJbnQocGFydHNbMV0sIDEwKSwgMCwgMCk7XG4gICAgICAgICAgICBkYXRhW2ZpZWxkLmZpZWxkXSA9IGQ7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoZmllbGQudHlwZSA9PT0gJ2xvb2t1cCcgJiYgZGF0YVtmaWVsZC5maWVsZF0pIHtcbiAgICAgICAgY29uc3QgdiA9IGRhdGFbZmllbGQuZmllbGRdO1xuICAgICAgICBpZiAodHlwZW9mIHYgPT09ICdvYmplY3QnICYmIHYuaWQpIHtcbiAgICAgICAgICBjb25zdCBoYXNEaXNwbGF5ID0gZmllbGQubG9va3VwRGlzcGxheUZpZWxkc1xuICAgICAgICAgICAgPyBmaWVsZC5sb29rdXBEaXNwbGF5RmllbGRzLnNvbWUoZiA9PiB0aGlzLmdldE5lc3RlZFZhbHVlKHYsIGYpKVxuICAgICAgICAgICAgOiB2W2ZpZWxkLmxvb2t1cERpc3BsYXlGaWVsZCB8fCAnbmFtZSddO1xuICAgICAgICAgIGlmICghaGFzRGlzcGxheSkgZGF0YVtmaWVsZC5maWVsZF0gPSB2LmlkO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGRhdGE7XG4gIH1cblxuICBwcml2YXRlIGdldE5lc3RlZFZhbHVlKG9iajogYW55LCBwYXRoOiBzdHJpbmcpOiBhbnkge1xuICAgIHJldHVybiBwYXRoLnNwbGl0KCcuJykucmVkdWNlKChjdXIsIGtleSkgPT4gY3VyPy5ba2V5XSwgb2JqKTtcbiAgfVxuXG4gIHJlc2V0Rm9ybSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5mb3JtKSB7XG4gICAgICAvLyBGaXJzdCBzZXQgYWxsIGNvbnRyb2xzIHRvIGEgc2VudGluZWwgdmFsdWUgdG8gZW5zdXJlIHZhbHVlQ2hhbmdlcyBmaXJlc1xuICAgICAgLy8gZXZlbiB3aGVuIHRoZSBkZWZhdWx0IHZhbHVlIGlzIHRoZSBzYW1lIGFzIHRoZSBjdXJyZW50IHZhbHVlIChlLmcuICcnIC0+ICcnKVxuICAgICAgLy8gVGhpcyBpcyBjcml0aWNhbCBmb3IgbG9va3VwIGZpZWxkcyB0aGF0IG1haW50YWluIGludGVybmFsIGRpc3BsYXkgc3RhdGUuXG4gICAgICB0aGlzLmFsbEZpZWxkcy5mb3JFYWNoKGYgPT4ge1xuICAgICAgICBjb25zdCBjb250cm9sID0gdGhpcy5mb3JtLmdldChmLmZpZWxkKTtcbiAgICAgICAgaWYgKGNvbnRyb2wpIHtcbiAgICAgICAgICBjb250cm9sLnNldFZhbHVlKG51bGwsIHsgZW1pdEV2ZW50OiB0cnVlIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgY29uc3QgdmFsdWVzOiBhbnkgPSB7fTtcbiAgICAgIHRoaXMuYWxsRmllbGRzLmZvckVhY2goZiA9PiB2YWx1ZXNbZi5maWVsZF0gPSB0aGlzLmdldERlZmF1bHRWYWx1ZShmKSk7XG4gICAgICB0aGlzLmZvcm0ucmVzZXQodmFsdWVzKTtcbiAgICB9XG4gIH1cblxuICAvLyAtLS0gVmFsdWUgcHJvY2Vzc2luZyBvbiBzdWJtaXQgLS0tXG5cbiAgcHJpdmF0ZSBwcm9jZXNzRm9ybVZhbHVlKGZvcm1WYWx1ZTogYW55KTogYW55IHtcbiAgICBjb25zdCBvdXQgPSB7IC4uLmZvcm1WYWx1ZSB9O1xuICAgIGlmICh0aGlzLmVudGl0eURhdGE/LmlkKSBvdXQuaWQgPSB0aGlzLmVudGl0eURhdGEuaWQ7XG5cbiAgICB0aGlzLmFsbEZpZWxkcy5mb3JFYWNoKGZpZWxkID0+IHtcbiAgICAgIGNvbnN0IHYgPSBvdXRbZmllbGQuZmllbGRdO1xuICAgICAgaWYgKGZpZWxkLnR5cGUgPT09ICdsb29rdXAnKSB7XG4gICAgICAgIGlmICh2ICYmIHR5cGVvZiB2ID09PSAnb2JqZWN0JykgeyAvKiBrZWVwICovIH1cbiAgICAgICAgZWxzZSBpZiAodiAmJiB2ICE9PSAnJykgb3V0W2ZpZWxkLmZpZWxkXSA9IHsgaWQ6IHYgfTtcbiAgICAgICAgZWxzZSBvdXRbZmllbGQuZmllbGRdID0gbnVsbDtcbiAgICAgIH0gZWxzZSBpZiAoZmllbGQudHlwZSA9PT0gJ2RhdGUnKSB7XG4gICAgICAgIGlmICh2IGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgICAgIG91dFtmaWVsZC5maWVsZF0gPSBgJHt2LmdldEZ1bGxZZWFyKCl9LSR7U3RyaW5nKHYuZ2V0TW9udGgoKSArIDEpLnBhZFN0YXJ0KDIsICcwJyl9LSR7U3RyaW5nKHYuZ2V0RGF0ZSgpKS5wYWRTdGFydCgyLCAnMCcpfWA7XG4gICAgICAgIH0gZWxzZSBpZiAoIXYpIG91dFtmaWVsZC5maWVsZF0gPSBudWxsO1xuICAgICAgfSBlbHNlIGlmIChmaWVsZC50eXBlID09PSAndGltZScpIHtcbiAgICAgICAgaWYgKHYgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgICAgICAgb3V0W2ZpZWxkLmZpZWxkXSA9IGAke1N0cmluZyh2LmdldEhvdXJzKCkpLnBhZFN0YXJ0KDIsICcwJyl9OiR7U3RyaW5nKHYuZ2V0TWludXRlcygpKS5wYWRTdGFydCgyLCAnMCcpfTowMGA7XG4gICAgICAgIH0gZWxzZSBpZiAoIXYpIG91dFtmaWVsZC5maWVsZF0gPSBudWxsO1xuICAgICAgfSBlbHNlIGlmIChmaWVsZC50eXBlID09PSAnZGF0ZXRpbWUnKSB7XG4gICAgICAgIGlmICh2IGluc3RhbmNlb2YgRGF0ZSkgeyAvKiBrZWVwIGFzIERhdGUgKi8gfVxuICAgICAgICBlbHNlIGlmICghdiB8fCB2ID09PSAnJykgb3V0W2ZpZWxkLmZpZWxkXSA9IG51bGw7XG4gICAgICB9IGVsc2UgaWYgKFsndGV4dCcsICd0ZXh0YXJlYScsICdudW1iZXInLCAnY3VycmVuY3knLCAnZW51bScsICdkcm9wZG93biddLmluY2x1ZGVzKGZpZWxkLnR5cGUpKSB7XG4gICAgICAgIGlmICh2ID09PSAnJyB8fCB2ID09PSB1bmRlZmluZWQpIG91dFtmaWVsZC5maWVsZF0gPSBudWxsO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBvdXQ7XG4gIH1cblxuICAvLyAtLS0gTGF5b3V0IC0tLVxuXG4gIGdldEZpZWxkR3JpZENsYXNzKGZpZWxkOiBEeW5hbWljRm9ybUZpZWxkQ29uZmlnKTogc3RyaW5nIHtcbiAgICBjb25zdCBkZWZhdWx0U2l6ZTogRHluYW1pY0Zvcm1GaWVsZFNpemUgPSB7IHhsOiA2LCBsZzogNiwgbWQ6IDYsIHNtOiAxMiB9O1xuICAgIGNvbnN0IHNpemU6IER5bmFtaWNGb3JtRmllbGRTaXplID0gdHlwZW9mIGZpZWxkLnNpemUgPT09ICdmdW5jdGlvbidcbiAgICAgID8gZmllbGQuc2l6ZSh0aGlzLmZvcm0/LnZhbHVlIHx8IHt9KVxuICAgICAgOiAoZmllbGQuc2l6ZSB8fCBkZWZhdWx0U2l6ZSk7XG5cbiAgICBjb25zdCBjbGFzc2VzOiBzdHJpbmdbXSA9IFtdO1xuICAgIC8vIEJhc2UgY2xhc3MgZnJvbSB4bCBvciBmYWxsYmFjayA2XG4gICAgY2xhc3Nlcy5wdXNoKGBjb2wtJHtzaXplLnhsID8/IHNpemUubGcgPz8gc2l6ZS5tZCA/PyBzaXplLnNtID8/IDZ9YCk7XG4gICAgaWYgKHNpemUueHMgIT09IHVuZGVmaW5lZCkgY2xhc3Nlcy5wdXNoKGBjb2wteHMtJHtzaXplLnhzfWApO1xuICAgIGlmIChzaXplLnNtICE9PSB1bmRlZmluZWQpIGNsYXNzZXMucHVzaChgY29sLXNtLSR7c2l6ZS5zbX1gKTtcbiAgICBpZiAoc2l6ZS5tZCAhPT0gdW5kZWZpbmVkKSBjbGFzc2VzLnB1c2goYGNvbC1tZC0ke3NpemUubWR9YCk7XG4gICAgaWYgKHNpemUubGcgIT09IHVuZGVmaW5lZCkgY2xhc3Nlcy5wdXNoKGBjb2wtbGctJHtzaXplLmxnfWApO1xuICAgIGlmIChzaXplLnhsICE9PSB1bmRlZmluZWQpIGNsYXNzZXMucHVzaChgY29sLXhsLSR7c2l6ZS54bH1gKTtcbiAgICByZXR1cm4gY2xhc3Nlcy5qb2luKCcgJyk7XG4gIH1cblxuICAvLyAtLS0gQ29uZGl0aW9uYWwgdmlzaWJpbGl0eS9kaXNhYmxlZCAtLS1cblxuICBpc0ZpZWxkVmlzaWJsZShmaWVsZDogRHluYW1pY0Zvcm1GaWVsZENvbmZpZyk6IGJvb2xlYW4ge1xuICAgIGlmICghZmllbGQudmlzaWJsZVdoZW4pIHJldHVybiB0cnVlO1xuICAgIHJldHVybiBmaWVsZC52aXNpYmxlV2hlbih0aGlzLmZvcm0/LnZhbHVlIHx8IHt9KTtcbiAgfVxuXG4gIGlzRmllbGREaXNhYmxlZChmaWVsZDogRHluYW1pY0Zvcm1GaWVsZENvbmZpZyk6IGJvb2xlYW4ge1xuICAgIGlmIChmaWVsZC5kaXNhYmxlZCkgcmV0dXJuIHRydWU7XG4gICAgaWYgKCFmaWVsZC5kaXNhYmxlZFdoZW4pIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gZmllbGQuZGlzYWJsZWRXaGVuKHRoaXMuZm9ybT8udmFsdWUgfHwge30pO1xuICB9XG5cbiAgc2V0dXBDb25kaXRpb25hbEZpZWxkc1dhdGNoZXIoKTogdm9pZCB7XG4gICAgLy8gU2luY2UgdmlzaWJsZVdoZW4vZGlzYWJsZWRXaGVuIGFyZSBub3cgZnVuY3Rpb25zIHRoYXQgY2FuIGRlcGVuZCBvbiBhbnkgZmllbGQsXG4gICAgLy8gd2Ugd2F0Y2ggYWxsIGZpZWxkcyBmb3IgY2hhbmdlcyBhbmQgcmUtZXZhbHVhdGVcbiAgICBjb25zdCBoYXNDb25kaXRpb25hbCA9IHRoaXMuYWxsRmllbGRzLnNvbWUoZiA9PiBmLnZpc2libGVXaGVuIHx8IGYuZGlzYWJsZWRXaGVuKTtcbiAgICBpZiAoIWhhc0NvbmRpdGlvbmFsKSByZXR1cm47XG5cbiAgICB0aGlzLmZvcm0udmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLmNsZWFySGlkZGVuRmllbGRzKCk7XG4gICAgICB0aGlzLnVwZGF0ZURpc2FibGVkRmllbGRzKCk7XG4gICAgfSk7XG4gIH1cblxuICB1cGRhdGVEaXNhYmxlZEZpZWxkcygpOiB2b2lkIHtcbiAgICB0aGlzLmFsbEZpZWxkcy5mb3JFYWNoKGZpZWxkID0+IHtcbiAgICAgIGlmIChmaWVsZC5kaXNhYmxlZFdoZW4pIHtcbiAgICAgICAgY29uc3QgY29udHJvbCA9IHRoaXMuZm9ybS5nZXQoZmllbGQuZmllbGQpO1xuICAgICAgICBpZiAoY29udHJvbCkge1xuICAgICAgICAgIGNvbnN0IHNob3VsZERpc2FibGUgPSB0aGlzLmlzRmllbGREaXNhYmxlZChmaWVsZCk7XG4gICAgICAgICAgaWYgKHNob3VsZERpc2FibGUgJiYgY29udHJvbC5lbmFibGVkKSB7XG4gICAgICAgICAgICBjb250cm9sLnNldFZhbHVlKG51bGwsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgICAgICAgIGNvbnRyb2wuZGlzYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgICAgICAgfSBlbHNlIGlmICghc2hvdWxkRGlzYWJsZSAmJiBjb250cm9sLmRpc2FibGVkICYmICFmaWVsZC5kaXNhYmxlZCkge1xuICAgICAgICAgICAgY29udHJvbC5lbmFibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgY2xlYXJIaWRkZW5GaWVsZHMoKTogdm9pZCB7XG4gICAgdGhpcy5hbGxGaWVsZHMuZm9yRWFjaChmaWVsZCA9PiB7XG4gICAgICBpZiAoZmllbGQudmlzaWJsZVdoZW4gJiYgIXRoaXMuaXNGaWVsZFZpc2libGUoZmllbGQpKSB7XG4gICAgICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLmZvcm0uZ2V0KGZpZWxkLmZpZWxkKTtcbiAgICAgICAgaWYgKGNvbnRyb2wgJiYgY29udHJvbC52YWx1ZSAhPT0gdGhpcy5nZXREZWZhdWx0VmFsdWUoZmllbGQpKSB7XG4gICAgICAgICAgY29udHJvbC5zZXRWYWx1ZSh0aGlzLmdldERlZmF1bHRWYWx1ZShmaWVsZCksIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgICAgICBjb250cm9sLm1hcmtBc1VudG91Y2hlZCgpO1xuICAgICAgICAgIGNvbnRyb2wubWFya0FzUHJpc3RpbmUoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLy8gLS0tIFB1YmxpYyBtZXRob2RzIC0tLVxuXG4gIGdldEZvcm0oKTogRm9ybUdyb3VwIHsgcmV0dXJuIHRoaXMuZm9ybTsgfVxuXG4gIG9wZW4oZW50aXR5PzogYW55KTogdm9pZCB7XG4gICAgaWYgKGVudGl0eSkge1xuICAgICAgdGhpcy5lbnRpdHlEYXRhID0gZW50aXR5O1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmVudGl0eURhdGEgPSBudWxsO1xuICAgICAgdGhpcy5yZXNldEZvcm0oKTtcbiAgICB9XG4gICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgdGhpcy52aXNpYmxlID0gdHJ1ZTtcbiAgICB0aGlzLnZpc2libGVDaGFuZ2UuZW1pdCh0cnVlKTtcbiAgfVxuXG4gIGNsb3NlKCk6IHZvaWQge1xuICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgIHRoaXMudmlzaWJsZSA9IGZhbHNlO1xuICAgIHRoaXMudmlzaWJsZUNoYW5nZS5lbWl0KGZhbHNlKTtcbiAgICB0aGlzLnJlc2V0Rm9ybSgpO1xuICAgIHRoaXMub25DYW5jZWwuZW1pdCgpO1xuICB9XG5cbiAgaGFuZGxlQ2FuY2VsKCk6IHZvaWQgeyB0aGlzLmNsb3NlKCk7IH1cblxuICBoYW5kbGVTdWJtaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMubW9kZSA9PT0gJ2Zvcm0nICYmIHRoaXMuZm9ybS5pbnZhbGlkKSB7XG4gICAgICB0aGlzLmZvcm0ubWFya0FsbEFzVG91Y2hlZCgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuICAgIHRoaXMuZm9ybVN1Ym1pdC5lbWl0KHRoaXMucHJvY2Vzc0Zvcm1WYWx1ZSh0aGlzLmZvcm0udmFsdWUpKTtcbiAgfVxuXG4gIG9uRm9ybUtleWRvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoZXZlbnQua2V5ID09PSAnRW50ZXInKSB7XG4gICAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICBpZiAodGFyZ2V0LnRhZ05hbWUgPT09ICdURVhUQVJFQScpIHJldHVybjtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAvLyBJbiBpbmxpbmUtZWRpdCBtb2RlLCBFbnRlciBzYXZlcyB0aGUgY3VycmVudCBmaWVsZCBidXQgbmV2ZXIgdHJpZ2dlcnMgZm9ybSBzdWJtaXRcbiAgICAgIGlmICh0aGlzLmlzSW5saW5lRWRpdE1vZGUpIHtcbiAgICAgICAgaWYgKHRoaXMuZWRpdGluZ0ZpZWxkKSB7XG4gICAgICAgICAgdGhpcy5zYXZlSW5saW5lRmllbGQodGhpcy5lZGl0aW5nRmllbGQpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmhhbmRsZVN1Ym1pdCgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIC0tLSBTZWN0aW9uIGhlbHBlcnMgLS0tXG5cbiAgZ2V0U2VjdGlvblN0eWxlKHNlY3Rpb246IER5bmFtaWNGb3JtU2VjdGlvbik6IHN0cmluZyB7XG4gICAgaWYgKCFzZWN0aW9uLnRpdGxlKSByZXR1cm4gJ25vbmUnO1xuICAgIHJldHVybiBzZWN0aW9uLnN0eWxlIHx8ICdub25lJztcbiAgfVxuXG4gIC8vIC0tLSBJbmxpbmUgRWRpdCAtLS1cblxuICBzdGFydEVkaXRGaWVsZChmaWVsZE5hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICghdGhpcy5pc0lubGluZUVkaXRNb2RlKSByZXR1cm47XG4gICAgdGhpcy5lZGl0aW5nRmllbGQgPSBmaWVsZE5hbWU7XG4gICAgaWYgKHRoaXMuZW50aXR5RGF0YSkge1xuICAgICAgY29uc3QgY29udHJvbCA9IHRoaXMuZm9ybS5nZXQoZmllbGROYW1lKTtcbiAgICAgIGlmIChjb250cm9sKSB7XG4gICAgICAgIGNvbnN0IGZpZWxkID0gdGhpcy5hbGxGaWVsZHMuZmluZChmID0+IGYuZmllbGQgPT09IGZpZWxkTmFtZSk7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5lbnRpdHlEYXRhW2ZpZWxkTmFtZV07XG4gICAgICAgIGlmIChmaWVsZD8udHlwZSA9PT0gJ2xvb2t1cCcgJiYgdmFsdWUgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgIGNvbnRyb2wuc2V0VmFsdWUodmFsdWUpO1xuICAgICAgICB9IGVsc2UgaWYgKGZpZWxkPy50eXBlID09PSAnZGF0ZScgJiYgdmFsdWUgJiYgdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIGNvbnN0IHBhcnRzID0gdmFsdWUuc3Vic3RyaW5nKDAsIDEwKS5zcGxpdCgnLScpO1xuICAgICAgICAgIGlmIChwYXJ0cy5sZW5ndGggPT09IDMpIHtcbiAgICAgICAgICAgIGNvbnN0IGQgPSBuZXcgRGF0ZSgrcGFydHNbMF0sICtwYXJ0c1sxXSAtIDEsICtwYXJ0c1syXSk7XG4gICAgICAgICAgICBjb250cm9sLnNldFZhbHVlKCFpc05hTihkLmdldFRpbWUoKSkgPyBkIDogdmFsdWUpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb250cm9sLnNldFZhbHVlKHZhbHVlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29udHJvbC5zZXRWYWx1ZSh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgLy8gQXV0by1mb2N1cyB0aGUgaW5wdXQgYWZ0ZXIgQW5ndWxhciByZW5kZXJzIHRoZSBlZGl0IGZpZWxkXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBjb25zdCBlbCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYC5pbmxpbmUtZWRpdC1maWVsZCBpbnB1dFtpZD1cIiR7ZmllbGROYW1lfVwiXSwgLmlubGluZS1lZGl0LWZpZWxkIHRleHRhcmVhW2lkPVwiJHtmaWVsZE5hbWV9XCJdYCkgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICBlbD8uZm9jdXMoKTtcbiAgICB9KTtcbiAgfVxuXG4gIGlzRmllbGRFZGl0aW5nKGZpZWxkTmFtZTogc3RyaW5nKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLmVkaXRpbmdGaWVsZCA9PT0gZmllbGROYW1lOyB9XG5cbiAgc2F2ZUlubGluZUZpZWxkKGZpZWxkTmFtZTogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmlzSW5saW5lRWRpdE1vZGUpIHJldHVybjtcbiAgICBjb25zdCBjb250cm9sID0gdGhpcy5mb3JtLmdldChmaWVsZE5hbWUpO1xuICAgIGlmICghY29udHJvbCB8fCBjb250cm9sLmludmFsaWQpIHsgY29udHJvbD8ubWFya0FzVG91Y2hlZCgpOyByZXR1cm47IH1cblxuICAgIHRoaXMuc2F2aW5nRmllbGQgPSB0cnVlO1xuICAgIGxldCB2YWx1ZSA9IGNvbnRyb2wudmFsdWU7XG4gICAgY29uc3QgZmllbGQgPSB0aGlzLmFsbEZpZWxkcy5maW5kKGYgPT4gZi5maWVsZCA9PT0gZmllbGROYW1lKTtcblxuICAgIGlmIChmaWVsZD8udHlwZSA9PT0gJ2xvb2t1cCcgJiYgdmFsdWUgJiYgdHlwZW9mIHZhbHVlICE9PSAnb2JqZWN0Jykge1xuICAgICAgdmFsdWUgPSB7IGlkOiB2YWx1ZSB9O1xuICAgIH1cbiAgICBpZiAoZmllbGQ/LnR5cGUgPT09ICdkYXRlJyAmJiB2YWx1ZSBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICAgIHZhbHVlID0gYCR7dmFsdWUuZ2V0RnVsbFllYXIoKX0tJHtTdHJpbmcodmFsdWUuZ2V0TW9udGgoKSArIDEpLnBhZFN0YXJ0KDIsICcwJyl9LSR7U3RyaW5nKHZhbHVlLmdldERhdGUoKSkucGFkU3RhcnQoMiwgJzAnKX1gO1xuICAgIH1cbiAgICB0aGlzLmZpZWxkU2F2ZS5lbWl0KHsgZmllbGQ6IGZpZWxkTmFtZSwgdmFsdWUgfSk7XG4gIH1cblxuICBjYW5jZWxJbmxpbmVFZGl0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzSW5saW5lRWRpdE1vZGUgJiYgdGhpcy5lZGl0aW5nRmllbGQpIHtcbiAgICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLmZvcm0uZ2V0KHRoaXMuZWRpdGluZ0ZpZWxkKTtcbiAgICAgIGlmIChjb250cm9sICYmIHRoaXMuZW50aXR5RGF0YSkge1xuICAgICAgICBjb250cm9sLnNldFZhbHVlKHRoaXMuZW50aXR5RGF0YVt0aGlzLmVkaXRpbmdGaWVsZF0pO1xuICAgICAgICBjb250cm9sLm1hcmtBc1ByaXN0aW5lKCk7XG4gICAgICAgIGNvbnRyb2wubWFya0FzVW50b3VjaGVkKCk7XG4gICAgICB9XG4gICAgICB0aGlzLmVkaXRpbmdGaWVsZCA9IG51bGw7XG4gICAgICB0aGlzLnNhdmluZ0ZpZWxkID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgY29tcGxldGVJbmxpbmVFZGl0KCk6IHZvaWQge1xuICAgIHRoaXMuZWRpdGluZ0ZpZWxkID0gbnVsbDtcbiAgICB0aGlzLnNhdmluZ0ZpZWxkID0gZmFsc2U7XG4gIH1cblxuICAvLyAtLS0gRGlzcGxheSB2YWx1ZSBmb3IgaW5saW5lLWVkaXQgbW9kZSAtLS1cblxuICBnZXRGaWVsZERpc3BsYXlWYWx1ZShmaWVsZE5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKCF0aGlzLmVudGl0eURhdGEpIHJldHVybiAnJztcbiAgICBjb25zdCBmaWVsZCA9IHRoaXMuYWxsRmllbGRzLmZpbmQoZiA9PiBmLmZpZWxkID09PSBmaWVsZE5hbWUpO1xuICAgIGNvbnN0IHZhbHVlID0gdGhpcy5lbnRpdHlEYXRhW2ZpZWxkTmFtZV07XG4gICAgaWYgKCF2YWx1ZSAmJiB2YWx1ZSAhPT0gZmFsc2UgJiYgdmFsdWUgIT09IDApIHJldHVybiAnJztcblxuICAgIGlmIChmaWVsZD8udHlwZSA9PT0gJ2xvb2t1cCcgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0Jykge1xuICAgICAgaWYgKGZpZWxkLmxvb2t1cERpc3BsYXlGaWVsZHMpIHtcbiAgICAgICAgcmV0dXJuIGZpZWxkLmxvb2t1cERpc3BsYXlGaWVsZHMubWFwKGYgPT4gdGhpcy5nZXROZXN0ZWRWYWx1ZSh2YWx1ZSwgZikpLmZpbHRlcih2ID0+IHYpLmpvaW4oJyAtICcpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHZhbHVlW2ZpZWxkLmxvb2t1cERpc3BsYXlGaWVsZCB8fCAnbmFtZSddIHx8ICcnO1xuICAgIH1cblxuICAgIGlmICgoZmllbGQ/LnR5cGUgPT09ICdkcm9wZG93bicgfHwgZmllbGQ/LnR5cGUgPT09ICdlbnVtJykgJiYgZmllbGQpIHtcbiAgICAgIGNvbnN0IG9wdHMgPSBmaWVsZC5vcHRpb25zIHx8IGZpZWxkLmVudW1PcHRpb25zIHx8IFtdO1xuICAgICAgY29uc3Qgb3B0VmFsID0gZmllbGQub3B0aW9uVmFsdWUgfHwgJ3ZhbHVlJztcbiAgICAgIGNvbnN0IG9wdExibCA9IGZpZWxkLm9wdGlvbkxhYmVsIHx8ICdsYWJlbCc7XG4gICAgICBjb25zdCBtYXRjaCA9IG9wdHMuZmluZCgobzogYW55KSA9PiAodHlwZW9mIG8gPT09ICdvYmplY3QnID8gb1tvcHRWYWxdIDogbykgPT09IHZhbHVlKTtcbiAgICAgIGlmIChtYXRjaCkgcmV0dXJuIHR5cGVvZiBtYXRjaCA9PT0gJ29iamVjdCcgPyBtYXRjaFtvcHRMYmxdIDogbWF0Y2g7XG4gICAgfVxuXG4gICAgaWYgKGZpZWxkPy50eXBlID09PSAnY3VycmVuY3knICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHtcbiAgICAgIGNvbnN0IG1vbmV5Q29uZmlnID0gdGhpcy5tYXNrU2VydmljZS5nZXRNb25leUNvbmZpZygpO1xuICAgICAgcmV0dXJuIG5ldyBJbnRsLk51bWJlckZvcm1hdChmaWVsZC5sb2NhbGUgfHwgbW9uZXlDb25maWcubG9jYWxlLCB7XG4gICAgICAgIHN0eWxlOiAnY3VycmVuY3knLFxuICAgICAgICBjdXJyZW5jeTogZmllbGQuY3VycmVuY3kgfHwgbW9uZXlDb25maWcuY3VycmVuY3lcbiAgICAgIH0pLmZvcm1hdCh2YWx1ZSk7XG4gICAgfVxuXG4gICAgaWYgKGZpZWxkPy50eXBlID09PSAnbnVtYmVyJyAmJiB0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSB7XG4gICAgICByZXR1cm4gbmV3IEludGwuTnVtYmVyRm9ybWF0KCdwdC1CUicsIHtcbiAgICAgICAgbWluaW11bUZyYWN0aW9uRGlnaXRzOiBmaWVsZC5taW5GcmFjdGlvbkRpZ2l0cyB8fCAwLFxuICAgICAgICBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IGZpZWxkLm1heEZyYWN0aW9uRGlnaXRzIHx8IDJcbiAgICAgIH0pLmZvcm1hdCh2YWx1ZSk7XG4gICAgfVxuXG4gICAgaWYgKGZpZWxkPy50eXBlID09PSAnZGF0ZScgJiYgdmFsdWUpIHJldHVybiB0aGlzLmxvY2FsZVNlcnZpY2UuZm9ybWF0RGF0ZSh2YWx1ZSk7XG5cbiAgICBpZiAoZmllbGQ/LnR5cGUgPT09ICd0aW1lJyAmJiB2YWx1ZSkge1xuICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkgcmV0dXJuIGAke1N0cmluZyh2YWx1ZS5nZXRIb3VycygpKS5wYWRTdGFydCgyLCAnMCcpfToke1N0cmluZyh2YWx1ZS5nZXRNaW51dGVzKCkpLnBhZFN0YXJ0KDIsICcwJyl9YDtcbiAgICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnID8gdmFsdWUuc3Vic3RyaW5nKDAsIDUpIDogU3RyaW5nKHZhbHVlKTtcbiAgICB9XG5cbiAgICBpZiAoZmllbGQ/LnR5cGUgPT09ICdjaGVja2JveCcpIHtcbiAgICAgIHJldHVybiB2YWx1ZSA/IHRoaXMudHJhbnNsYXRpb25TZXJ2aWNlLnRyYW5zbGF0ZSgnZGVzaWduLmNvbXBvbmVudHNfYWkuYm9vbGVhbl90cnVlJylcbiAgICAgICAgICAgICAgICAgICAgOiB0aGlzLnRyYW5zbGF0aW9uU2VydmljZS50cmFuc2xhdGUoJ2Rlc2lnbi5jb21wb25lbnRzX2FpLmJvb2xlYW5fZmFsc2UnKTtcbiAgICB9XG5cbiAgICBpZiAoZmllbGQ/LnR5cGUgPT09ICdtdWx0aXNlbGVjdCcgJiYgQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgIGNvbnN0IG9wdHMgPSBmaWVsZC5vcHRpb25zIHx8IGZpZWxkLmVudW1PcHRpb25zIHx8IFtdO1xuICAgICAgY29uc3Qgb3B0VmFsID0gZmllbGQub3B0aW9uVmFsdWUgfHwgJ3ZhbHVlJztcbiAgICAgIGNvbnN0IG9wdExibCA9IGZpZWxkLm9wdGlvbkxhYmVsIHx8ICdsYWJlbCc7XG4gICAgICByZXR1cm4gdmFsdWUubWFwKHYgPT4ge1xuICAgICAgICBjb25zdCBvID0gb3B0cy5maW5kKChvcHQ6IGFueSkgPT4gKHR5cGVvZiBvcHQgPT09ICdvYmplY3QnID8gb3B0W29wdFZhbF0gOiBvcHQpID09PSB2KTtcbiAgICAgICAgcmV0dXJuIG8gPyAodHlwZW9mIG8gPT09ICdvYmplY3QnID8gb1tvcHRMYmxdIDogbykgOiB2O1xuICAgICAgfSkuam9pbignLCAnKTtcbiAgICB9XG5cbiAgICBpZiAoZmllbGQ/LnR5cGUgPT09ICd0ZXh0JyAmJiBmaWVsZC5tYXNrID09PSAnZG9jdW1lbnQnICYmIHZhbHVlKSB7XG4gICAgICBjb25zdCB0eXBlUGVyc29uID0gdGhpcy5lbnRpdHlEYXRhW2ZpZWxkLm1hc2tEZXBlbmRzT24gfHwgJ3R5cGVQZXJzb24nXSB8fCAnSlVSSURJQ0FMX1BFUlNPTic7XG4gICAgICByZXR1cm4gdGhpcy5tYXNrU2VydmljZS5hcHBseURvY3VtZW50TWFzayhTdHJpbmcodmFsdWUpLCB0eXBlUGVyc29uKTtcbiAgICB9XG4gICAgaWYgKGZpZWxkPy50eXBlID09PSAndGV4dCcgJiYgZmllbGQubWFzayA9PT0gJ2NwZicgJiYgdmFsdWUpIHJldHVybiB0aGlzLm1hc2tTZXJ2aWNlLmFwcGx5Q3BmTWFzayhTdHJpbmcodmFsdWUpKTtcbiAgICBpZiAoZmllbGQ/LnR5cGUgPT09ICd0ZXh0JyAmJiBmaWVsZC5tYXNrID09PSAnY25waicgJiYgdmFsdWUpIHJldHVybiB0aGlzLm1hc2tTZXJ2aWNlLmFwcGx5Q25wak1hc2soU3RyaW5nKHZhbHVlKSk7XG5cbiAgICByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbiAgfVxufVxuIiwiPCEtLSBJbmxpbmUgTW9kZSAobm8gZGlzcGxheU1vZGUgc2V0KSAtLT5cbjxuZy1jb250YWluZXIgKm5nSWY9XCJpc0lubGluZU1vZGVcIj5cbiAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImZvcm1Db250ZW50XCI+PC9uZy1jb250YWluZXI+XG48L25nLWNvbnRhaW5lcj5cblxuPCEtLSBEaWFsb2cgTW9kZSAtLT5cbjxwLWRpYWxvZ1xuICAqbmdJZj1cImlzRGlhbG9nTW9kZVwiXG4gIFsodmlzaWJsZSldPVwidmlzaWJsZVwiXG4gIFtoZWFkZXJdPVwiZGlhbG9nSGVhZGVyIHwgdHJhbnNsYXRlXCJcbiAgW21vZGFsXT1cInRydWVcIlxuICBbc3R5bGVdPVwieyB3aWR0aDogZGlhbG9nV2lkdGggfVwiXG4gIFtkcmFnZ2FibGVdPVwiZGlhbG9nRHJhZ2dhYmxlXCJcbiAgW3Jlc2l6YWJsZV09XCJkaWFsb2dSZXNpemFibGVcIlxuICBbbWF4aW1pemFibGVdPVwiZGlhbG9nTWF4aW1pemFibGVcIlxuICBbY2xvc2VPbkVzY2FwZV09XCJkaWFsb2dDbG9zZU9uRXNjYXBlXCJcbiAgW2Rpc21pc3NhYmxlTWFza109XCJkaWFsb2dEaXNtaXNzYWJsZU1hc2tcIlxuICAob25IaWRlKT1cImNsb3NlKClcIj5cblxuICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZm9ybUNvbnRlbnRcIj48L25nLWNvbnRhaW5lcj5cblxuICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiZm9vdGVyXCIgKm5nSWY9XCJzaG93U3VibWl0QnV0dG9uIHx8IHNob3dDYW5jZWxCdXR0b25cIj5cbiAgICA8ZGl2IGNsYXNzPVwiZGlhbG9nLWZvb3RlclwiPlxuICAgICAgPHAtYnV0dG9uICpuZ0lmPVwic2hvd0NhbmNlbEJ1dHRvblwiIFtsYWJlbF09XCJjYW5jZWxMYWJlbCB8IHRyYW5zbGF0ZVwiIFtpY29uXT1cImNhbmNlbEJ1dHRvbkljb25cIiBzZXZlcml0eT1cInNlY29uZGFyeVwiIChvbkNsaWNrKT1cImhhbmRsZUNhbmNlbCgpXCIgW2Rpc2FibGVkXT1cImxvYWRpbmdcIj48L3AtYnV0dG9uPlxuICAgICAgPHAtYnV0dG9uICpuZ0lmPVwic2hvd1N1Ym1pdEJ1dHRvblwiIFtsYWJlbF09XCJzdWJtaXRMYWJlbCB8IHRyYW5zbGF0ZVwiIFtpY29uXT1cInN1Ym1pdEJ1dHRvbkljb25cIiAob25DbGljayk9XCJoYW5kbGVTdWJtaXQoKVwiIFtsb2FkaW5nXT1cImxvYWRpbmdcIiBbZGlzYWJsZWRdPVwiZm9ybS5pbnZhbGlkXCI+PC9wLWJ1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvcC1kaWFsb2c+XG5cbjwhLS0gRHJhd2VyIE1vZGUgLS0+XG48cC1kcmF3ZXJcbiAgKm5nSWY9XCJpc0RyYXdlck1vZGVcIlxuICBbKHZpc2libGUpXT1cInZpc2libGVcIlxuICBbaGVhZGVyXT1cImRyYXdlckhlYWRlciB8IHRyYW5zbGF0ZVwiXG4gIFtwb3NpdGlvbl09XCJkcmF3ZXJQb3NpdGlvblwiXG4gIFtzdHlsZV09XCJkcmF3ZXJTdHlsZVwiXG4gIFtzaG93Q2xvc2VJY29uXT1cImRyYXdlclNob3dDbG9zZUljb25cIlxuICBbY2xvc2VPbkVzY2FwZV09XCJkcmF3ZXJDbG9zZU9uRXNjYXBlXCJcbiAgW21vZGFsXT1cImRyYXdlckRpc21pc3NhYmxlXCJcbiAgKG9uSGlkZSk9XCJjbG9zZSgpXCI+XG5cbiAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImZvcm1Db250ZW50XCI+PC9uZy1jb250YWluZXI+XG5cbiAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImZvb3RlclwiICpuZ0lmPVwic2hvd1N1Ym1pdEJ1dHRvbiB8fCBzaG93Q2FuY2VsQnV0dG9uXCI+XG4gICAgPGRpdiBjbGFzcz1cImRyYXdlci1mb290ZXJcIj5cbiAgICAgIDxwLWJ1dHRvbiAqbmdJZj1cInNob3dDYW5jZWxCdXR0b25cIiBbbGFiZWxdPVwiY2FuY2VsTGFiZWwgfCB0cmFuc2xhdGVcIiBbaWNvbl09XCJjYW5jZWxCdXR0b25JY29uXCIgc2V2ZXJpdHk9XCJzZWNvbmRhcnlcIiAob25DbGljayk9XCJoYW5kbGVDYW5jZWwoKVwiIFtkaXNhYmxlZF09XCJsb2FkaW5nXCI+PC9wLWJ1dHRvbj5cbiAgICAgIDxwLWJ1dHRvbiAqbmdJZj1cInNob3dTdWJtaXRCdXR0b25cIiBbbGFiZWxdPVwic3VibWl0TGFiZWwgfCB0cmFuc2xhdGVcIiBbaWNvbl09XCJzdWJtaXRCdXR0b25JY29uXCIgKG9uQ2xpY2spPVwiaGFuZGxlU3VibWl0KClcIiBbbG9hZGluZ109XCJsb2FkaW5nXCIgW2Rpc2FibGVkXT1cImZvcm0uaW52YWxpZFwiPjwvcC1idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvbmctdGVtcGxhdGU+XG48L3AtZHJhd2VyPlxuXG48IS0tIEZvcm0gQ29udGVudCBUZW1wbGF0ZSAtLT5cbjxuZy10ZW1wbGF0ZSAjZm9ybUNvbnRlbnQ+XG4gIDxmb3JtIFtmb3JtR3JvdXBdPVwiZm9ybVwiIGNsYXNzPVwiZHluYW1pYy1mb3JtXCIgKGtleWRvd24pPVwib25Gb3JtS2V5ZG93bigkZXZlbnQpXCIgKHN1Ym1pdCk9XCIkZXZlbnQucHJldmVudERlZmF1bHQoKVwiPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgc2VjdGlvbiBvZiBzZWN0aW9uc1wiPlxuICAgICAgPCEtLSBObyB0aXRsZSA9IGJhcmUgZmllbGRzIC0tPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFzZWN0aW9uLnRpdGxlXCI+XG4gICAgICAgIDxkaXYgKm5nSWY9XCIhaXNJbmxpbmVFZGl0TW9kZVwiIGNsYXNzPVwiZ3JpZFwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGZpZWxkIG9mIHNlY3Rpb24uZmllbGRzXCI+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXNGaWVsZFZpc2libGUoZmllbGQpXCIgW25nQ2xhc3NdPVwiZ2V0RmllbGRHcmlkQ2xhc3MoZmllbGQpXCI+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmaWVsZFRlbXBsYXRlOyBjb250ZXh0OiB7IGZpZWxkOiBmaWVsZCB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJpc0lubGluZUVkaXRNb2RlXCIgY2xhc3M9XCJpbmxpbmUtZWRpdC1maWVsZHNcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBmaWVsZCBvZiBzZWN0aW9uLmZpZWxkc1wiPlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cImlzRmllbGRWaXNpYmxlKGZpZWxkKVwiIGNsYXNzPVwiaW5saW5lLWVkaXQtZmllbGRcIj5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImlubGluZUVkaXRGaWVsZFRlbXBsYXRlOyBjb250ZXh0OiB7IGZpZWxkOiBmaWVsZCB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPCEtLSBCb3JkZXJlZCBzZWN0aW9uIC0tPlxuICAgICAgPGRpdiAqbmdJZj1cInNlY3Rpb24udGl0bGUgJiYgZ2V0U2VjdGlvblN0eWxlKHNlY3Rpb24pID09PSAnYm9yZGVyZWQnXCIgY2xhc3M9XCJib3JkZXJlZC1zZWN0aW9uXCI+XG4gICAgICAgIDxoMyBjbGFzcz1cInNlY3Rpb24taGVhZGluZ1wiPlxuICAgICAgICAgIDxpICpuZ0lmPVwic2VjdGlvbi5pY29uXCIgW2NsYXNzXT1cInNlY3Rpb24uaWNvbiArICcgc2VjdGlvbi1pY29uJ1wiPjwvaT5cbiAgICAgICAgICB7eyBzZWN0aW9uLnRpdGxlIH19XG4gICAgICAgIDwvaDM+XG4gICAgICAgIDxkaXYgKm5nSWY9XCIhaXNJbmxpbmVFZGl0TW9kZVwiIGNsYXNzPVwiZ3JpZFwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGZpZWxkIG9mIHNlY3Rpb24uZmllbGRzXCI+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXNGaWVsZFZpc2libGUoZmllbGQpXCIgW25nQ2xhc3NdPVwiZ2V0RmllbGRHcmlkQ2xhc3MoZmllbGQpXCI+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmaWVsZFRlbXBsYXRlOyBjb250ZXh0OiB7IGZpZWxkOiBmaWVsZCB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJpc0lubGluZUVkaXRNb2RlXCIgY2xhc3M9XCJpbmxpbmUtZWRpdC1maWVsZHNcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBmaWVsZCBvZiBzZWN0aW9uLmZpZWxkc1wiPlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cImlzRmllbGRWaXNpYmxlKGZpZWxkKVwiIGNsYXNzPVwiaW5saW5lLWVkaXQtZmllbGRcIj5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImlubGluZUVkaXRGaWVsZFRlbXBsYXRlOyBjb250ZXh0OiB7IGZpZWxkOiBmaWVsZCB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPCEtLSBQYW5lbCBzZWN0aW9uIC0tPlxuICAgICAgPHAtcGFuZWxcbiAgICAgICAgKm5nSWY9XCJzZWN0aW9uLnRpdGxlICYmIGdldFNlY3Rpb25TdHlsZShzZWN0aW9uKSA9PT0gJ3BhbmVsJ1wiXG4gICAgICAgIFt0b2dnbGVhYmxlXT1cInRydWVcIlxuICAgICAgICBbY29sbGFwc2VkXT1cInNlY3Rpb24uY29sbGFwc2VkIHx8IGZhbHNlXCJcbiAgICAgICAgc3R5bGVDbGFzcz1cInNlY3Rpb24tcGFuZWxcIj5cbiAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImhlYWRlclwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWN0aW9uLWhlYWRlclwiPlxuICAgICAgICAgICAgPGkgKm5nSWY9XCJzZWN0aW9uLmljb25cIiBbY2xhc3NdPVwic2VjdGlvbi5pY29uICsgJyBzZWN0aW9uLWljb24nXCI+PC9pPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzZWN0aW9uLXRpdGxlXCI+e3sgc2VjdGlvbi50aXRsZSB9fTwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPGRpdiAqbmdJZj1cIiFpc0lubGluZUVkaXRNb2RlXCIgY2xhc3M9XCJncmlkXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZmllbGQgb2Ygc2VjdGlvbi5maWVsZHNcIj5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJpc0ZpZWxkVmlzaWJsZShmaWVsZClcIiBbbmdDbGFzc109XCJnZXRGaWVsZEdyaWRDbGFzcyhmaWVsZClcIj5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImZpZWxkVGVtcGxhdGU7IGNvbnRleHQ6IHsgZmllbGQ6IGZpZWxkIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiAqbmdJZj1cImlzSW5saW5lRWRpdE1vZGVcIiBjbGFzcz1cImlubGluZS1lZGl0LWZpZWxkc1wiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGZpZWxkIG9mIHNlY3Rpb24uZmllbGRzXCI+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXNGaWVsZFZpc2libGUoZmllbGQpXCIgY2xhc3M9XCJpbmxpbmUtZWRpdC1maWVsZFwiPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaW5saW5lRWRpdEZpZWxkVGVtcGxhdGU7IGNvbnRleHQ6IHsgZmllbGQ6IGZpZWxkIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvcC1wYW5lbD5cblxuICAgICAgPCEtLSBIZWFkaW5nLW9ubHkgc2VjdGlvbiAodGl0bGUgcHJlc2VudCwgc3R5bGU9J25vbmUnIG9yIG9taXR0ZWQpIC0tPlxuICAgICAgPGRpdiAqbmdJZj1cInNlY3Rpb24udGl0bGUgJiYgZ2V0U2VjdGlvblN0eWxlKHNlY3Rpb24pID09PSAnbm9uZSdcIiBjbGFzcz1cImhlYWRpbmctc2VjdGlvblwiPlxuICAgICAgICA8aDMgY2xhc3M9XCJzZWN0aW9uLWhlYWRpbmdcIj5cbiAgICAgICAgICA8aSAqbmdJZj1cInNlY3Rpb24uaWNvblwiIFtjbGFzc109XCJzZWN0aW9uLmljb24gKyAnIHNlY3Rpb24taWNvbidcIj48L2k+XG4gICAgICAgICAge3sgc2VjdGlvbi50aXRsZSB9fVxuICAgICAgICA8L2gzPlxuICAgICAgICA8ZGl2ICpuZ0lmPVwiIWlzSW5saW5lRWRpdE1vZGVcIiBjbGFzcz1cImdyaWRcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBmaWVsZCBvZiBzZWN0aW9uLmZpZWxkc1wiPlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cImlzRmllbGRWaXNpYmxlKGZpZWxkKVwiIFtuZ0NsYXNzXT1cImdldEZpZWxkR3JpZENsYXNzKGZpZWxkKVwiPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZmllbGRUZW1wbGF0ZTsgY29udGV4dDogeyBmaWVsZDogZmllbGQgfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2ICpuZ0lmPVwiaXNJbmxpbmVFZGl0TW9kZVwiIGNsYXNzPVwiaW5saW5lLWVkaXQtZmllbGRzXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZmllbGQgb2Ygc2VjdGlvbi5maWVsZHNcIj5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJpc0ZpZWxkVmlzaWJsZShmaWVsZClcIiBjbGFzcz1cImlubGluZS1lZGl0LWZpZWxkXCI+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpbmxpbmVFZGl0RmllbGRUZW1wbGF0ZTsgY29udGV4dDogeyBmaWVsZDogZmllbGQgfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8IS0tIEN1c3RvbSBjb250ZW50IHByb2plY3Rpb24gLS0+XG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICA8L2Zvcm0+XG48L25nLXRlbXBsYXRlPlxuXG48IS0tIEZpZWxkIFRlbXBsYXRlIC0tPlxuPG5nLXRlbXBsYXRlICNmaWVsZFRlbXBsYXRlIGxldC1maWVsZD1cImZpZWxkXCI+XG4gIDxzaWEtZHluYW1pYy1maWVsZC10ZXh0ICpuZ0lmPVwiZmllbGQudHlwZSA9PT0gJ3RleHQnXCIgW2ZpZWxkXT1cImZpZWxkXCIgW2Zvcm1dPVwiZm9ybVwiIFttb2RlXT1cIidmb3JtJ1wiPjwvc2lhLWR5bmFtaWMtZmllbGQtdGV4dD5cbiAgPHNpYS1keW5hbWljLWZpZWxkLXRleHRhcmVhICpuZ0lmPVwiZmllbGQudHlwZSA9PT0gJ3RleHRhcmVhJ1wiIFtmaWVsZF09XCJmaWVsZFwiIFtmb3JtXT1cImZvcm1cIiBbbW9kZV09XCInZm9ybSdcIj48L3NpYS1keW5hbWljLWZpZWxkLXRleHRhcmVhPlxuICA8c2lhLWR5bmFtaWMtZmllbGQtbnVtYmVyICpuZ0lmPVwiZmllbGQudHlwZSA9PT0gJ251bWJlcicgfHwgZmllbGQudHlwZSA9PT0gJ2N1cnJlbmN5J1wiIFtmaWVsZF09XCJmaWVsZFwiIFtmb3JtXT1cImZvcm1cIiBbbW9kZV09XCInZm9ybSdcIj48L3NpYS1keW5hbWljLWZpZWxkLW51bWJlcj5cbiAgPHNpYS1keW5hbWljLWZpZWxkLWRhdGUgKm5nSWY9XCJmaWVsZC50eXBlID09PSAnZGF0ZSdcIiBbZmllbGRdPVwiZmllbGRcIiBbZm9ybV09XCJmb3JtXCIgW21vZGVdPVwiJ2Zvcm0nXCI+PC9zaWEtZHluYW1pYy1maWVsZC1kYXRlPlxuICA8c2lhLWR5bmFtaWMtZmllbGQtZGF0ZXRpbWUgKm5nSWY9XCJmaWVsZC50eXBlID09PSAnZGF0ZXRpbWUnXCIgW2ZpZWxkXT1cImZpZWxkXCIgW2Zvcm1dPVwiZm9ybVwiIFttb2RlXT1cIidmb3JtJ1wiPjwvc2lhLWR5bmFtaWMtZmllbGQtZGF0ZXRpbWU+XG4gIDxzaWEtZHluYW1pYy1maWVsZC1kcm9wZG93biAqbmdJZj1cImZpZWxkLnR5cGUgPT09ICdkcm9wZG93bicgfHwgZmllbGQudHlwZSA9PT0gJ2VudW0nXCIgW2ZpZWxkXT1cImZpZWxkXCIgW2Zvcm1dPVwiZm9ybVwiIFttb2RlXT1cIidmb3JtJ1wiPjwvc2lhLWR5bmFtaWMtZmllbGQtZHJvcGRvd24+XG4gIDxzaWEtZHluYW1pYy1maWVsZC1sb29rdXAgKm5nSWY9XCJmaWVsZC50eXBlID09PSAnbG9va3VwJ1wiIFtmaWVsZF09XCJmaWVsZFwiIFtmb3JtXT1cImZvcm1cIiBbZm9ybUdyb3VwXT1cImZvcm1cIiBbbW9kZV09XCInZm9ybSdcIj48L3NpYS1keW5hbWljLWZpZWxkLWxvb2t1cD5cbiAgPHNpYS1keW5hbWljLWZpZWxkLXRpbWUgKm5nSWY9XCJmaWVsZC50eXBlID09PSAndGltZSdcIiBbZmllbGRdPVwiZmllbGRcIiBbZm9ybV09XCJmb3JtXCIgW21vZGVdPVwiJ2Zvcm0nXCI+PC9zaWEtZHluYW1pYy1maWVsZC10aW1lPlxuICA8c2lhLWR5bmFtaWMtZmllbGQtY2hlY2tib3ggKm5nSWY9XCJmaWVsZC50eXBlID09PSAnY2hlY2tib3gnXCIgW2ZpZWxkXT1cImZpZWxkXCIgW2Zvcm1dPVwiZm9ybVwiIFttb2RlXT1cIidmb3JtJ1wiPjwvc2lhLWR5bmFtaWMtZmllbGQtY2hlY2tib3g+XG4gIDxzaWEtZHluYW1pYy1maWVsZC1tdWx0aXNlbGVjdCAqbmdJZj1cImZpZWxkLnR5cGUgPT09ICdtdWx0aXNlbGVjdCdcIiBbZmllbGRdPVwiZmllbGRcIiBbZm9ybV09XCJmb3JtXCIgW21vZGVdPVwiJ2Zvcm0nXCI+PC9zaWEtZHluYW1pYy1maWVsZC1tdWx0aXNlbGVjdD5cbiAgPHNpYS1keW5hbWljLWZpZWxkLWltYWdlICpuZ0lmPVwiZmllbGQudHlwZSA9PT0gJ2ltYWdlJ1wiIFtmaWVsZF09XCJmaWVsZFwiIFtmb3JtXT1cImZvcm1cIiBbbW9kZV09XCInZm9ybSdcIj48L3NpYS1keW5hbWljLWZpZWxkLWltYWdlPlxuPC9uZy10ZW1wbGF0ZT5cblxuPCEtLSBJbmxpbmUgRWRpdCBGaWVsZCBUZW1wbGF0ZSAtLT5cbjxuZy10ZW1wbGF0ZSAjaW5saW5lRWRpdEZpZWxkVGVtcGxhdGUgbGV0LWZpZWxkPVwiZmllbGRcIj5cbiAgPGxhYmVsIGNsYXNzPVwiZmllbGQtbGFiZWxcIj57eyBmaWVsZC5sYWJlbCB8IHRyYW5zbGF0ZSB9fTwvbGFiZWw+XG4gIDxkaXYgY2xhc3M9XCJmaWVsZC1kaXNwbGF5XCIgKm5nSWY9XCIhaXNGaWVsZEVkaXRpbmcoZmllbGQuZmllbGQpXCIgKGNsaWNrKT1cInN0YXJ0RWRpdEZpZWxkKGZpZWxkLmZpZWxkKVwiIFtjbGFzcy5kaXNhYmxlZF09XCJmaWVsZC5kaXNhYmxlZFwiPlxuICAgIDxzcGFuIGNsYXNzPVwiZGlzcGxheS12YWx1ZVwiIFthdHRyLmRhdGEtcGxhY2Vob2xkZXJdPVwiZmllbGQucGxhY2Vob2xkZXIgfHwgKCdkZXNpZ24uY29tcG9uZW50c19haS5ub3RfaW5mb3JtZWQnIHwgdHJhbnNsYXRlKVwiPnt7IGdldEZpZWxkRGlzcGxheVZhbHVlKGZpZWxkLmZpZWxkKSB9fTwvc3Bhbj5cbiAgICA8aSBjbGFzcz1cInBpIHBpLXBlbmNpbCBlZGl0LWljb25cIiAqbmdJZj1cIiFmaWVsZC5kaXNhYmxlZFwiPjwvaT5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJmaWVsZC1lZGl0XCIgKm5nSWY9XCJpc0ZpZWxkRWRpdGluZyhmaWVsZC5maWVsZClcIj5cbiAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtY29udGFpbmVyXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZmllbGRUZW1wbGF0ZTsgY29udGV4dDogeyBmaWVsZDogZmllbGQgfVwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJlZGl0LWFjdGlvbnNcIj5cbiAgICAgIDxwLWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgaWNvbj1cInBpIHBpLWNoZWNrXCIgW3JvdW5kZWRdPVwidHJ1ZVwiIFt0ZXh0XT1cInRydWVcIiBzZXZlcml0eT1cInN1Y2Nlc3NcIiAob25DbGljayk9XCJzYXZlSW5saW5lRmllbGQoZmllbGQuZmllbGQpXCIgW2xvYWRpbmddPVwic2F2aW5nRmllbGRcIiBbZGlzYWJsZWRdPVwiZm9ybS5nZXQoZmllbGQuZmllbGQpPy5pbnZhbGlkXCIgc2l6ZT1cInNtYWxsXCI+PC9wLWJ1dHRvbj5cbiAgICAgIDxwLWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgaWNvbj1cInBpIHBpLXRpbWVzXCIgW3JvdW5kZWRdPVwidHJ1ZVwiIFt0ZXh0XT1cInRydWVcIiBzZXZlcml0eT1cImRhbmdlclwiIChvbkNsaWNrKT1cImNhbmNlbElubGluZUVkaXQoKVwiIFtkaXNhYmxlZF09XCJzYXZpbmdGaWVsZFwiIHNpemU9XCJzbWFsbFwiPjwvcC1idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|