ng-prime-tools 1.0.41 → 1.0.42
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/models/form-drop-down-field.model.mjs +1 -1
- package/esm2022/lib/models/icon-image-style.model.mjs +2 -0
- package/esm2022/lib/models/public-api.mjs +2 -1
- package/esm2022/lib/pt-advanced-prime-table/pt-advanced-prime-table.component.mjs +1 -3
- package/esm2022/lib/pt-dropdown/pt-dropdown.component.mjs +115 -5
- package/esm2022/lib/pt-login-page/pt-login-page.component.mjs +1 -2
- package/fesm2022/ng-prime-tools.mjs +113 -7
- package/fesm2022/ng-prime-tools.mjs.map +1 -1
- package/lib/models/form-drop-down-field.model.d.ts +3 -0
- package/lib/models/form-drop-down-field.model.d.ts.map +1 -1
- package/lib/models/icon-image-style.model.d.ts +12 -0
- package/lib/models/icon-image-style.model.d.ts.map +1 -0
- package/lib/models/public-api.d.ts +1 -0
- package/lib/models/public-api.d.ts.map +1 -1
- package/lib/pt-advanced-prime-table/pt-advanced-prime-table.component.d.ts.map +1 -1
- package/lib/pt-dropdown/pt-dropdown.component.d.ts +23 -1
- package/lib/pt-dropdown/pt-dropdown.component.d.ts.map +1 -1
- package/lib/pt-login-page/pt-login-page.component.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1kcm9wLWRvd24tZmllbGQubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1wcmltZS10b29scy9zcmMvbGliL21vZGVscy9mb3JtLWRyb3AtZG93bi1maWVsZC5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRm9ybUZpZWxkIH0gZnJvbSAnLi9mb3JtLWZpZWxkLm1vZGVsJztcbmltcG9ydCB7IEljb25JbWFnZVN0eWxlIH0gZnJvbSAnLi9pY29uLWltYWdlLXN0eWxlLm1vZGVsJztcbmltcG9ydCB7IEljb25TdHlsZSB9IGZyb20gJy4vaWNvbi1zdHlsZS5tb2RlbCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRm9ybURyb3Bkb3duRmllbGQgZXh0ZW5kcyBGb3JtRmllbGQge1xuICBvcHRpb25zOiBhbnlbXTtcbiAgaWNvbj86IHN0cmluZyB8IEljb25TdHlsZSB8IEljb25JbWFnZVN0eWxlO1xufVxuIl19
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi1pbWFnZS1zdHlsZS5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXByaW1lLXRvb2xzL3NyYy9saWIvbW9kZWxzL2ljb24taW1hZ2Utc3R5bGUubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgSWNvbkltYWdlU3R5bGUge1xuICB1cmw6IHN0cmluZztcbiAgcG9zaXRpb24/OiAnbGVmdCcgfCAncmlnaHQnO1xuICBzaGFwZT86ICdjaXJjdWxhcicgfCAncm91bmRlZC1zcXVhcmUnO1xuICB3aWR0aD86IHN0cmluZztcbiAgaGVpZ2h0Pzogc3RyaW5nO1xuICBtYXJnaW5MZWZ0Pzogc3RyaW5nO1xuICBtYXJnaW5SaWdodD86IHN0cmluZztcbiAgbWFyZ2luVG9wPzogc3RyaW5nO1xuICBtYXJnaW5Cb3R0b20/OiBzdHJpbmc7XG59XG4iXX0=
|
|
@@ -48,10 +48,11 @@ export * from './pt-dialog-config.model';
|
|
|
48
48
|
export * from './toast-message.model';
|
|
49
49
|
// Generic
|
|
50
50
|
export * from './icon-style.model';
|
|
51
|
+
export * from './icon-image-style.model';
|
|
51
52
|
export * from './title-style.model';
|
|
52
53
|
export * from './text-style.model';
|
|
53
54
|
export * from './image-style.model';
|
|
54
55
|
export * from './badge.model';
|
|
55
56
|
export * from './pattern.model';
|
|
56
57
|
export * from './footer.model';
|
|
57
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
58
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXByaW1lLXRvb2xzL3NyYy9saWIvbW9kZWxzL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsaUJBQWlCO0FBQ2pCLGNBQWMsc0JBQXNCLENBQUM7QUFFckMsd0JBQXdCO0FBQ3hCLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyx1QkFBdUIsQ0FBQztBQUV0Qyx1QkFBdUI7QUFDdkIsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyw4QkFBOEIsQ0FBQztBQUM3QyxjQUFjLHlCQUF5QixDQUFDO0FBRXhDLDRCQUE0QjtBQUM1QixjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyxnQ0FBZ0MsQ0FBQztBQUUvQyxRQUFRO0FBQ1IsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMseUJBQXlCLENBQUM7QUFFeEMsT0FBTztBQUNQLGNBQWMscUJBQXFCLENBQUM7QUFFcEMsT0FBTztBQUNQLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsOEJBQThCLENBQUM7QUFFN0MsZ0JBQWdCO0FBQ2hCLGNBQWMsOEJBQThCLENBQUM7QUFFN0MsU0FBUztBQUNULGNBQWMsdUJBQXVCLENBQUM7QUFFdEMsY0FBYztBQUNkLGNBQWMsNEJBQTRCLENBQUM7QUFFM0MsUUFBUTtBQUNSLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyxlQUFlLENBQUM7QUFFOUIsU0FBUztBQUNULGNBQWMsZ0JBQWdCLENBQUM7QUFFL0IsU0FBUztBQUNULGNBQWMsa0NBQWtDLENBQUM7QUFDakQsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLHVCQUF1QixDQUFDO0FBRXRDLFVBQVU7QUFDVixjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLGdCQUFnQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQWR2YW5jZWQgdGFibGVcbmV4cG9ydCAqIGZyb20gJy4vdGFibGUtY29sdW1uLm1vZGVsJztcblxuLy8gTXVsdGkgc2VhcmNoIGNyaXRlcmlhXG5leHBvcnQgKiBmcm9tICcuL3NlYXJjaC1jcml0ZXJpYS5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL2ZpbHRlci1vcHRpb24ubW9kZWwnO1xuXG4vLyBGb3JtIGlucHV0cyBhbmQgYnRuc1xuZXhwb3J0ICogZnJvbSAnLi9mb3JtLWJ1dHRvbi5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL2Zvcm0tZmllbGQubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9mb3JtLWZpZWxkLWdyb3VwLm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vZm9ybS1jaGVjay1maWVsZC5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL2Zvcm0tZGF0ZS1maWVsZC5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL2Zvcm0tZHJvcC1kb3duLWZpZWxkLm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vZm9ybS1tdWx0aS1zZWxlY3QubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9mb3JtLW51bWJlci1maWVsZC5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL2Zvcm0tc3dpdGNoLWZpZWxkLm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vZm9ybS10ZXh0LWFyZWEtZmllbGQubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9mb3JtLXRleHQtZmllbGQubW9kZWwnO1xuXG4vLyBNZXRyaWMgZGF0YSBmb3IgZGFzaGJvYXJkXG5leHBvcnQgKiBmcm9tICcuL21ldHJpYy1jYXJkLWRhdGEubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9tZXRyaWMtcGFuZWwtZGF0YS5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL21ldHJpYy1pbmRpY2F0ZXVyLWRhdGEubW9kZWwnO1xuXG4vLyBDaGFydFxuZXhwb3J0ICogZnJvbSAnLi9jaGFydC1jb25maWcubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9heGlzLWNoYXJ0LWNvbmZpZy5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL2F4aXMtY2hhcnQtZGF0YS5tb2RlbCc7XG5cbi8vIENhcmRcbmV4cG9ydCAqIGZyb20gJy4vY2FyZC1jb25maWcubW9kZWwnO1xuXG4vLyBNZW51XG5leHBvcnQgKiBmcm9tICcuL21lbnUubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9tZW51LWl0ZW0ubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9tZW51LWNvbmZpZy5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL25hdi1iYXItbWVudS1jb25maWcubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9zaWRlLW1lbnUtYmFyLWNvbmZpZy5tb2RlbCc7XG5cbi8vIFBhZ2UgU2tlbGV0b25cbmV4cG9ydCAqIGZyb20gJy4vcGFnZS1za2VsZXRvbi1jb25maWcubW9kZWwnO1xuXG4vLyBGb290ZXJcbmV4cG9ydCAqIGZyb20gJy4vZm9vdGVyLWNvbmZpZy5tb2RlbCc7XG5cbi8vIEJyZWFkIENydW1iXG5leHBvcnQgKiBmcm9tICcuL2JyZWFkLWNydW1iLWNvbmZpZy5tb2RlbCc7XG5cbi8vIGxvZ2luXG5leHBvcnQgKiBmcm9tICcuL2xvZ2luLXBhZ2UtY29uZmlnLm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vbG9naW4tbW9kZWwnO1xuXG4vLyBCdXR0b25cbmV4cG9ydCAqIGZyb20gJy4vYnV0dG9uLm1vZGVsJztcblxuLy8gRGlhbG9nXG5leHBvcnQgKiBmcm9tICcuL3B0LWNvbmZpcm0tZGlhbG9nLWNvbmZpZy5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL3B0LWRpYWxvZy1jb25maWcubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi90b2FzdC1tZXNzYWdlLm1vZGVsJztcblxuLy8gR2VuZXJpY1xuZXhwb3J0ICogZnJvbSAnLi9pY29uLXN0eWxlLm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vaWNvbi1pbWFnZS1zdHlsZS5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL3RpdGxlLXN0eWxlLm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vdGV4dC1zdHlsZS5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL2ltYWdlLXN0eWxlLm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vYmFkZ2UubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9wYXR0ZXJuLm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vZm9vdGVyLm1vZGVsJztcbiJdfQ==
|
|
@@ -68,8 +68,6 @@ export class PTAdvancedPrimeTableComponent {
|
|
|
68
68
|
this.globalFilterFields = [];
|
|
69
69
|
}
|
|
70
70
|
ngOnInit() {
|
|
71
|
-
console.log('PTAdvancedPrimeTable columns:', this.columns);
|
|
72
|
-
console.log('PTAdvancedPrimeTable totalRecords input:', this.totalRecords);
|
|
73
71
|
this.hasGroupedColumns = this.columns.some((col) => col.children && col.children.length > 0);
|
|
74
72
|
this.globalFilterFields = this.columns
|
|
75
73
|
.filter((col) => col.code !== undefined && col.isFilter !== false)
|
|
@@ -765,4 +763,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
|
|
|
765
763
|
type: ViewChild,
|
|
766
764
|
args: ['dt', { static: false }]
|
|
767
765
|
}] } });
|
|
768
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHQtYWR2YW5jZWQtcHJpbWUtdGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctcHJpbWUtdG9vbHMvc3JjL2xpYi9wdC1hZHZhbmNlZC1wcmltZS10YWJsZS9wdC1hZHZhbmNlZC1wcmltZS10YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1wcmltZS10b29scy9zcmMvbGliL3B0LWFkdmFuY2VkLXByaW1lLXRhYmxlL3B0LWFkdmFuY2VkLXByaW1lLXRhYmxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU3QyxPQUFPLEVBQ0wsU0FBUyxFQUdULGFBQWEsR0FFZCxNQUFNLGtCQUFrQixDQUFDO0FBQzFCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7QUFleEQsTUFBTSxPQUFPLDZCQUE2QjtJQWtFeEM7UUFqRUEsU0FBUztRQUNBLFNBQUksR0FBVSxFQUFFLENBQUM7UUFDakIsWUFBTyxHQUFrQixFQUFFLENBQUM7UUFDNUIsaUJBQVksR0FBRyxDQUFDLENBQUM7UUFDakIsZ0JBQVcsR0FBYSxFQUFFLENBQUM7UUFDM0Isb0JBQWUsR0FBRyxLQUFLLENBQUM7UUFDeEIsbUJBQWMsR0FBRyxLQUFLLENBQUM7UUFDdkIsaUJBQVksR0FBRyxLQUFLLENBQUM7UUFDckIsb0JBQWUsR0FBRyxLQUFLLENBQUM7UUFDeEIsZ0JBQVcsR0FBRyxLQUFLLENBQUM7UUFFcEIsWUFBTyxHQUEwQixFQUFFLENBQUM7UUFFcEMsZUFBVSxHQUFHLEtBQUssQ0FBQztRQUNuQixZQUFP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LEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFFRyxPQUFPO3NCQUFmLEtBQUs7Z0JBRUcsVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFHSSxNQUFNO3NCQUFmLE1BQU07Z0JBQ0csZ0JBQWdCO3NCQUF6QixNQUFNO2dCQUNHLGNBQWM7c0JBQXZCLE1BQU07Z0JBQ0csWUFBWTtzQkFBckIsTUFBTTtnQkFDRyxZQUFZO3NCQUFyQixNQUFNO2dCQUNHLGNBQWM7c0JBQXZCLE1BQU07Z0JBRTZCLEVBQUU7c0JBQXJDLFNBQVM7dUJBQUMsSUFBSSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVGFibGUgfSBmcm9tICdwcmltZW5nL3RhYmxlJztcbmltcG9ydCB7XG4gIEFsaWduRW51bSxcbiAgSW1hZ2VTdHlsZSxcbiAgVGFibGVDb2x1bW4sXG4gIFRhYmxlVHlwZUVudW0sXG4gIFRpdGxlU3R5bGUsXG59IGZyb20gJy4uLy4uL3B1YmxpYy1hcGknO1xuaW1wb3J0IHsgY2FsY3VsYXRlVGV4dFdpZHRoIH0gZnJvbSAnLi4vdXRpbHMvdGV4dC51dGlsJztcblxuZXhwb3J0IGludGVyZmFjZSBQVFRhYmxlQWN0aW9uQ29uZmlnIHtcbiAgY29kZTogc3RyaW5nO1xuICBpY29uPzogc3RyaW5nO1xuICBzdHlsZUNsYXNzPzogc3RyaW5nO1xuICB0b29sdGlwPzogc3RyaW5nO1xuICBhY3Rpb246IGFueTtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncHQtYWR2YW5jZWQtcHJpbWUtdGFibGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vcHQtYWR2YW5jZWQtcHJpbWUtdGFibGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vcHQtYWR2YW5jZWQtcHJpbWUtdGFibGUuY29tcG9uZW50LmNzcycsXG59KVxuZXhwb3J0IGNsYXNzIFBUQWR2YW5jZWRQcmltZVRhYmxlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgLy8gSW5wdXRzXG4gIEBJbnB1dCgpIGRhdGE6IGFueVtdID0gW107XG4gIEBJbnB1dCgpIGNvbHVtbnM6IFRhYmxlQ29sdW1uW10gPSBbXTtcbiAgQElucHV0KCkgdG90YWxSZWNvcmRzID0gMDtcbiAgQElucHV0KCkgcm93c1BlclBhZ2U6IG51bWJlcltdID0gW107XG4gIEBJbnB1dCgpIGhhc1NlYXJjaEZpbHRlciA9IGZhbHNlO1xuICBASW5wdXQoKSBoYXNFeHBvcnRFeGNlbCA9IGZhbHNlO1xuICBASW5wdXQoKSBoYXNFeHBvcnRQREYgPSBmYWxzZTtcbiAgQElucHV0KCkgaGFzQ29sdW1uRmlsdGVyID0gZmFsc2U7XG4gIEBJbnB1dCgpIGlzUGFnaW5hdGVkID0gZmFsc2U7XG5cbiAgQElucHV0KCkgYWN0aW9uczogUFRUYWJsZUFjdGlvbkNvbmZpZ1tdID0gW107XG5cbiAgQElucHV0KCkgaXNTb3J0YWJsZSA9IGZhbHNlO1xuICBASW5wdXQoKSBsb2FkaW5nID0gZmFsc2U7XG4gIEBJbnB1dCgpIG1heEhlaWdodDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG5cbiAgLy8gT3V0cHV0c1xuICBAT3V0cHV0KCkgc2VhcmNoID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gIEBPdXRwdXQoKSBleHBvcnRFeGNlbEV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBAT3V0cHV0KCkgZXhwb3J0UGRmRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBPdXRwdXQoKSBvblBhZ2VDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHsgcGFnZTogbnVtYmVyOyByb3dzOiBudW1iZXIgfT4oKTtcbiAgQE91dHB1dCgpIG9uU29ydENvbHVtbiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgb25GaWx0ZXJDb2x1bW4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBAVmlld0NoaWxkKCdkdCcsIHsgc3RhdGljOiBmYWxzZSB9KSBkdCE6IFRhYmxlO1xuXG4gIHB1YmxpYyBUYWJsZVR5cGVFbnVtID0gVGFibGVUeXBlRW51bTtcbiAgcHVibGljIEFsaWduRW51bSA9IEFsaWduRW51bTtcblxuICBzZWFyY2hWYWx1ZSA9ICcnO1xuXG4gIC8vIHVzZWQgdG8gc3RvcmUgY29tcG9zZWQgZmlsdGVyIFVJIHN0YXRlIChhbmQgb3B0aW9ucylcbiAgcHVibGljIGZpbHRlcnM6IHsgW2tleTogc3RyaW5nXTogYW55IH0gPSB7fTtcblxuICAvLyBzdG9yZSB0aGUgbGFzdCBmaWx0ZXIgdmFsdWUgcGVyIGNvbHVtbiBmaWVsZCAoZm9yIGFsbCBmaWx0ZXJzKVxuICBsYXRlc3RGaWx0ZXJWYWx1ZXM6IHsgW2ZpZWxkOiBzdHJpbmddOiBhbnkgfSA9IHt9O1xuXG4gIHByaXZhdGUgY2xlYXJlZEZpZWxkcyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuXG4gIHByaXZhdGUgdmFsaWRDdXJyZW5jeUNvZGVzID0gWydVU0QnLCAnRVVSJywgJ01BRCddO1xuICBpY29uV2lkdGggPSA3NztcblxuICAvLyBDb21wb25lbnQgc3RhdGVcbiAgcm93cyA9IDA7XG4gIGhhc0dyb3VwZWRDb2x1bW5zID0gZmFsc2U7XG5cbiAgLy8gZWRpdC9kZWxldGUgZmxhZ3NcbiAgaXNEZWxldGUgPSBmYWxzZTtcbiAgaXNFZGl0ID0gZmFsc2U7XG5cbiAgRGVsZXRlOiAodmFsdWU6IGFueSkgPT4gdm9pZCA9ICgpID0+IHt9O1xuICBpbml0RWRpdGFibGVSb3c6IChkYXRhOiBhbnkpID0+IHZvaWQgPSAoKSA9PiB7fTtcbiAgc2F2ZUVkaXRhYmxlUm93OiAoZGF0YTogYW55KSA9PiB2b2lkID0gKCkgPT4ge307XG4gIGNhbmNlbEVkaXRhYmxlUm93OiAoaXRlbTogYW55KSA9PiB2b2lkID0gKCkgPT4ge307XG5cbiAgY3VzdG9tQWN0aW9uczogUFRUYWJsZUFjdGlvbkNvbmZpZ1tdID0gW107XG5cbiAgLy8gRGF0YSBtYW5hZ2VtZW50XG4gIGRhdGFNYXAgPSBuZXcgTWFwPGFueSwgYW55PigpO1xuICBtYXAgPSBuZXcgTWFwPGFueSwgTWFwPGFueSwgYW55Pj4oKTtcbiAgb3B0aW9uRW50cmllcyA9IG5ldyBNYXA8c3RyaW5nLCBhbnlbXT4oKTtcbiAgb3B0aW9uVmFsdWVzOiBhbnlbXSA9IFtdO1xuICBnbG9iYWxGaWx0ZXJGaWVsZHM6IHN0cmluZ1tdID0gW107XG5cbiAgY29uc3RydWN0b3IoKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGNvbnNvbGUubG9nKCdQVEFkdmFuY2VkUHJpbWVUYWJsZSBjb2x1bW5zOicsIHRoaXMuY29sdW1ucyk7XG4gICAgY29uc29sZS5sb2coJ1BUQWR2YW5jZWRQcmltZVRhYmxlIHRvdGFsUmVjb3JkcyBpbnB1dDonLCB0aGlzLnRvdGFsUmVjb3Jkcyk7XG5cbiAgICB0aGlzLmhhc0dyb3VwZWRDb2x1bW5zID0gdGhpcy5jb2x1bW5zLnNvbWUoXG4gICAgICAoY29sKSA9PiBjb2wuY2hpbGRyZW4gJiYgY29sLmNoaWxkcmVuLmxlbmd0aCA+IDBcbiAgICApO1xuXG4gICAgdGhpcy5nbG9iYWxGaWx0ZXJGaWVsZHMgPSB0aGlzLmNvbHVtbnNcbiAgICAgIC5maWx0ZXIoKGNvbCkgPT4gY29sLmNvZGUgIT09IHVuZGVmaW5lZCAmJiBjb2wuaXNGaWx0ZXIgIT09IGZhbHNlKVxuICAgICAgLm1hcCgoY29sKSA9PiBjb2wuY29kZSBhcyBzdHJpbmcpO1xuXG4gICAgdGhpcy5pbml0aWFsaXplUGFnaW5hdGlvbigpO1xuICAgIHRoaXMuaW5pdGlhbGl6ZUFjdGlvbnMoKTtcblxuICAgIHRoaXMuY29sdW1ucy5mb3JFYWNoKChjb2wpID0+IHtcbiAgICAgIGlmIChjb2wudHlwZSA9PT0gVGFibGVUeXBlRW51bS5BQ1RJT04pIHtcbiAgICAgICAgY29sLmlzRWRpdGFibGUgPSBmYWxzZTtcbiAgICAgICAgY29sLmlzRmlsdGVyID0gZmFsc2U7XG4gICAgICAgIGNvbC5pc1NvcnRhYmxlID0gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIGlmIChjb2wudHlwZSA9PT0gVGFibGVUeXBlRW51bS5DT01QT1NFRCkge1xuICAgICAgICB0aGlzLmluaXRpYWxpemVDb21wb3NlZEZpbHRlcnMoY29sKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGNvbC5pc1NvcnRhYmxlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY29sLmlzU29ydGFibGUgPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAoY29sLmlzRWRpdGFibGUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjb2wuaXNFZGl0YWJsZSA9IHRydWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChjb2wuaXNGaWx0ZXIgIT09IGZhbHNlICYmIGNvbC5jb2RlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhpcy5nbG9iYWxGaWx0ZXJGaWVsZHMucHVzaChjb2wuY29kZSk7XG4gICAgICB9XG5cbiAgICAgIGlmICghY29sLndpZHRoKSB7XG4gICAgICAgIGNvbC53aWR0aCA9IHRoaXMuY2FsY3VsYXRlQ29sdW1uV2lkdGgoY29sKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8vIC0tLS0tLS0tLS0gSEVBREVSICsgQk9EWSBBTElHTk1FTlQgSEVMUEVSUyAtLS0tLS0tLS0tXG5cbiAgZ2V0SGVhZGVyVGl0bGVDbGFzcyhjb2w6IFRhYmxlQ29sdW1uKTogc3RyaW5nIHtcbiAgICBjb25zdCBhbGlnbiA9IGNvbC5oZWFkZXJBbGlnbiA/PyBBbGlnbkVudW0uTEVGVDtcbiAgICBzd2l0Y2ggKGFsaWduKSB7XG4gICAgICBjYXNlIEFsaWduRW51bS5DRU5URVI6XG4gICAgICAgIHJldHVybiAnaGVhZGVyLXRpdGxlLWNlbnRlcic7XG4gICAgICBjYXNlIEFsaWduRW51bS5SSUdIVDpcbiAgICAgICAgcmV0dXJuICdoZWFkZXItdGl0bGUtcmlnaHQnO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuICdoZWFkZXItdGl0bGUtbGVmdCc7XG4gICAgfVxuICB9XG5cbiAgZ2V0SGVhZGVyQWxpZ25DbGFzcyhjb2w6IFRhYmxlQ29sdW1uKTogc3RyaW5nIHtcbiAgICBjb25zdCBhbGlnbiA9IGNvbC5oZWFkZXJBbGlnbiA/PyBBbGlnbkVudW0uTEVGVDtcbiAgICBzd2l0Y2ggKGFsaWduKSB7XG4gICAgICBjYXNlIEFsaWduRW51bS5DRU5URVI6XG4gICAgICAgIHJldHVybiAnaGVhZGVyLWFsaWduLWNlbnRlcic7XG4gICAgICBjYXNlIEFsaWduRW51bS5SSUdIVDpcbiAgICAgICAgcmV0dXJuICdoZWFkZXItYWxpZ24tcmlnaHQnO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuICdoZWFkZXItYWxpZ24tbGVmdCc7XG4gICAgfVxuICB9XG5cbiAgZ2V0RGF0YUFsaWduQ2xhc3MoY29sOiBUYWJsZUNvbHVtbik6IHN0cmluZyB7XG4gICAgY29uc3QgZWZmZWN0aXZlQWxpZ24gPVxuICAgICAgY29sLmRhdGFBbGlnbiA/P1xuICAgICAgKGNvbC50eXBlID09PSBUYWJsZVR5cGVFbnVtLk5VTUJFUiB8fCBjb2wudHlwZSA9PT0gVGFibGVUeXBlRW51bS5BTU9VTlRcbiAgICAgICAgPyBBbGlnbkVudW0uUklHSFRcbiAgICAgICAgOiBBbGlnbkVudW0uTEVGVCk7XG5cbiAgICBzd2l0Y2ggKGVmZmVjdGl2ZUFsaWduKSB7XG4gICAgICBjYXNlIEFsaWduRW51bS5DRU5URVI6XG4gICAgICAgIHJldHVybiAnY2VsbC1hbGlnbi1jZW50ZXInO1xuICAgICAgY2FzZSBBbGlnbkVudW0uUklHSFQ6XG4gICAgICAgIHJldHVybiAnY2VsbC1hbGlnbi1yaWdodCc7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gJ2NlbGwtYWxpZ24tbGVmdCc7XG4gICAgfVxuICB9XG5cbiAgLy8gLS0tLS0tLS0tLSBBQ1RJT05TIElOSVRJQUxJWkFUSU9OIC0tLS0tLS0tLS1cblxuICBwcml2YXRlIGluaXRpYWxpemVBY3Rpb25zKCk6IHZvaWQge1xuICAgIHRoaXMuaXNEZWxldGUgPSBmYWxzZTtcbiAgICB0aGlzLmlzRWRpdCA9IGZhbHNlO1xuICAgIHRoaXMuRGVsZXRlID0gKCkgPT4ge307XG4gICAgdGhpcy5pbml0RWRpdGFibGVSb3cgPSAoKSA9PiB7fTtcbiAgICB0aGlzLnNhdmVFZGl0YWJsZVJvdyA9ICgpID0+IHt9O1xuICAgIHRoaXMuY2FuY2VsRWRpdGFibGVSb3cgPSAoKSA9PiB7fTtcbiAgICB0aGlzLmN1c3RvbUFjdGlvbnMgPSBbXTtcblxuICAgIGlmICghdGhpcy5hY3Rpb25zIHx8IHRoaXMuYWN0aW9ucy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmFjdGlvbnMuZm9yRWFjaCgoYWN0aW9uKSA9PiB7XG4gICAgICBzd2l0Y2ggKGFjdGlvbi5jb2RlKSB7XG4gICAgICAgIGNhc2UgJ2RlbGV0ZSc6XG4gICAgICAgICAgdGhpcy5pc0RlbGV0ZSA9IHRydWU7XG4gICAgICAgICAgdGhpcy5EZWxldGUgPSAodmFsdWU6IGFueSkgPT4gYWN0aW9uLmFjdGlvbih2YWx1ZSk7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAnZWRpdCc6XG4gICAgICAgICAgdGhpcy5pbml0aWFsaXplRWRpdEFjdGlvbnMoYWN0aW9uKTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHRoaXMuY3VzdG9tQWN0aW9ucy5wdXNoKGFjdGlvbik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGluaXRpYWxpemVFZGl0QWN0aW9ucyhhY3Rpb246IFBUVGFibGVBY3Rpb25Db25maWcpOiB2b2lkIHtcbiAgICB0aGlzLmlzRWRpdCA9IHRydWU7XG4gICAgdGhpcy5pbml0RWRpdGFibGVSb3cgPSAoZGF0YTogYW55KSA9PiBhY3Rpb24uYWN0aW9uLmluaXQoZGF0YSk7XG4gICAgdGhpcy5zYXZlRWRpdGFibGVSb3cgPSAoZGF0YTogYW55KSA9PiB7XG4gICAgICBjb25zdCByZWNvcmQgPSB0aGlzLm1hcC5nZXQoZGF0YS5pZCk7XG4gICAgICBhY3Rpb24uYWN0aW9uLnNhdmUoZGF0YSwgcmVjb3JkKTtcbiAgICAgIHRoaXMuZGF0YU1hcC5jbGVhcigpO1xuICAgIH07XG4gICAgdGhpcy5jYW5jZWxFZGl0YWJsZVJvdyA9IChpdGVtOiBhbnkpID0+IGNvbnNvbGUubG9nKGl0ZW0pO1xuICB9XG5cbiAgb25DdXN0b21BY3Rpb25DbGljayhhY3Rpb246IFBUVGFibGVBY3Rpb25Db25maWcsIHJvdzogYW55KTogdm9pZCB7XG4gICAgaWYgKGFjdGlvbiAmJiB0eXBlb2YgYWN0aW9uLmFjdGlvbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGFjdGlvbi5hY3Rpb24ocm93KTtcbiAgICAgIH0sIDApO1xuICAgIH1cbiAgfVxuXG4gIC8vIC0tLS0tLS0tLS0gRklMVEVSSU5HIC8gU09SVElORyAvIFBBR0lOQVRJT04gLS0tLS0tLS0tLVxuXG4gIC8qKlxuICAgKiBGb3IgY29tcG9zZWQgY29sdW1ucywgd2Ugc3RpbGwgcmVnaXN0ZXIgZmlsdGVycyB1bmRlciBmaWx0ZXJzW2NvbXBvc2VkTmFtZV1cbiAgICogdG8ga2VlcCBvcHRpb25zICYgcGxhY2Vob2xkZXJzLlxuICAgKi9cbiAgcHJpdmF0ZSBpbml0aWFsaXplQ29tcG9zZWRGaWx0ZXJzKGNvbDogVGFibGVDb2x1bW4pOiB2b2lkIHtcbiAgICBjb2wuY29tcG9zZWROYW1lcz8uZm9yRWFjaCgoY29tcG9zZWROYW1lKSA9PiB7XG4gICAgICBjb25zdCBjb2RlID0gKGNvbC5jb2RlIGFzIHN0cmluZykgfHwgJyc7XG4gICAgICB0aGlzLmdsb2JhbEZpbHRlckZpZWxkcy5wdXNoKGNvZGUgKyAnLicgKyBjb21wb3NlZE5hbWUpO1xuICAgICAgdGhpcy5maWx0ZXJzW2NvbXBvc2VkTmFtZV0gPSB7XG4gICAgICAgIG9wdGlvbnM6IGNvbC5maWx0ZXJPcHRpb25zLFxuICAgICAgICB2YWx1ZTogW10sXG4gICAgICAgIGxhYmVsOiAnRmlsdGVyIGJ5ICcgKyBjb21wb3NlZE5hbWUsXG4gICAgICAgIHBsYWNlaG9sZGVyOiAnU2VsZWN0IG9wdGlvbicsXG4gICAgICB9O1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0Q29tcG9zZWRGaWVsZFR5cGUoXG4gICAgY29sOiBUYWJsZUNvbHVtbixcbiAgICBjb21wb3NlZE5hbWU6IHN0cmluZ1xuICApOiBUYWJsZVR5cGVFbnVtIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAoY29sLmNvbXBvc2VkTmFtZXMgJiYgY29sLmNvbXBvc2VkVHlwZXMpIHtcbiAgICAgIGNvbnN0IGluZGV4ID0gY29sLmNvbXBvc2VkTmFtZXMuaW5kZXhPZihjb21wb3NlZE5hbWUpO1xuICAgICAgaWYgKGluZGV4ID49IDAgJiYgaW5kZXggPCBjb2wuY29tcG9zZWRUeXBlcy5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIGNvbC5jb21wb3NlZFR5cGVzW2luZGV4XTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIG9uQ29tcG9zZWRDb2x1bW5DbGVhcihjb2w6IFRhYmxlQ29sdW1uKTogdm9pZCB7XG4gICAgaWYgKCFjb2wuY29kZSB8fCAhY29sLmNvbXBvc2VkTmFtZXMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb2wuY29tcG9zZWROYW1lcy5mb3JFYWNoKChuYW1lKSA9PiB7XG4gICAgICBjb25zdCBrZXkgPSBgJHtjb2wuY29kZX0uJHtuYW1lfWA7XG4gICAgICBkZWxldGUgdGhpcy5sYXRlc3RGaWx0ZXJWYWx1ZXNba2V5XTtcblxuICAgICAgaWYgKHRoaXMuZmlsdGVyc1tuYW1lXSkge1xuICAgICAgICB0aGlzLmZpbHRlcnNbbmFtZV0udmFsdWUgPSBbXTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuICAvKipcbiAgICogQ09NUE9TRUQ6IGNhY2hlIFVJIHZhbHVlcyBvbmx5LCByZWFsIGZpbHRlciBhcHBsaWVkIG9uIEFwcGx5L0NsZWFyLlxuICAgKi9cbiAgb25Db21wb3NlZEZpbHRlclZhbHVlQ2hhbmdlKFxuICAgIGNvbDogVGFibGVDb2x1bW4sXG4gICAgY29tcG9zZWROYW1lOiBzdHJpbmcsXG4gICAgdmFsdWU6IGFueVtdLFxuICAgIGZpbHRlck1vZGVsPzogYW55XG4gICk6IHZvaWQge1xuICAgIGNvbnN0IGtleSA9IGAke2NvbC5jb2RlfS4ke2NvbXBvc2VkTmFtZX1gO1xuXG4gICAgLy8gMSkgc3luYyB3aXRoIFByaW1lTkcgZmlsdGVyIG1vZGVsIHNvIEFwcGx5L0NsZWFyIHdvcmsgY29ycmVjdGx5XG4gICAgaWYgKGZpbHRlck1vZGVsKSB7XG4gICAgICBmaWx0ZXJNb2RlbC52YWx1ZSA9IHZhbHVlO1xuICAgICAgaWYgKFxuICAgICAgICBBcnJheS5pc0FycmF5KGZpbHRlck1vZGVsLmNvbnN0cmFpbnRzKSAmJlxuICAgICAgICBmaWx0ZXJNb2RlbC5jb25zdHJhaW50cy5sZW5ndGggPiAwXG4gICAgICApIHtcbiAgICAgICAgZmlsdGVyTW9kZWwuY29uc3RyYWludHNbMF0udmFsdWUgPSB2YWx1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyAyKSBrZWVwIHlvdXIgbG9jYWwgVUkgbW9kZWxcbiAgICBpZiAoIXRoaXMuZmlsdGVyc1tjb21wb3NlZE5hbWVdKSB7XG4gICAgICB0aGlzLmZpbHRlcnNbY29tcG9zZWROYW1lXSA9IHtcbiAgICAgICAgb3B0aW9uczogY29sLmZpbHRlck9wdGlvbnMsXG4gICAgICAgIHZhbHVlOiBbXSxcbiAgICAgICAgcGxhY2Vob2xkZXI6ICdTZWxlY3Qgb3B0aW9uJyxcbiAgICAgIH07XG4gICAgfVxuICAgIHRoaXMuZmlsdGVyc1tjb21wb3NlZE5hbWVdLnZhbHVlID0gdmFsdWUgfHwgW107XG5cbiAgICAvLyAzKSBjYWNoZSBmb3Igc2VydmVyLXNpZGUgYGZpbHRlckNvbHVtbmBcbiAgICBjb25zdCBpc0VtcHR5ID0gIXZhbHVlIHx8IChBcnJheS5pc0FycmF5KHZhbHVlKSAmJiB2YWx1ZS5sZW5ndGggPT09IDApO1xuICAgIGlmIChpc0VtcHR5KSB7XG4gICAgICBkZWxldGUgdGhpcy5sYXRlc3RGaWx0ZXJWYWx1ZXNba2V5XTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5sYXRlc3RGaWx0ZXJWYWx1ZXNba2V5XSA9IHZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIG9uRmlsdGVyQ2xlYXIoZmllbGQ6IHN0cmluZyB8IHVuZGVmaW5lZCk6IHZvaWQge1xuICAgIGlmICghZmllbGQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBmb3JnZXQgY2FjaGVkIHZhbHVlIGZvciB0aGlzIGZpZWxkXG4gICAgZGVsZXRlIHRoaXMubGF0ZXN0RmlsdGVyVmFsdWVzW2ZpZWxkXTtcblxuICAgIC8vIG1hcmsgdGhpcyBmaWVsZCBhcyBleHBsaWNpdGx5IGNsZWFyZWQgc28gZmlsdGVyQ29sdW1uXG4gICAgLy8gZG9lc24ndCByZXVzZSB0aGUgY2FjaGVkIHZhbHVlIG9uIHRoZSBzYW1lIGV2ZW50XG4gICAgdGhpcy5jbGVhcmVkRmllbGRzLmFkZChmaWVsZCk7XG4gIH1cblxuICBvbkZpbHRlclZhbHVlQ2hhbmdlKFxuICAgIGZpZWxkOiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gICAgZmlsdGVyTW9kZWw6IGFueSxcbiAgICB2YWx1ZTogYW55XG4gICk6IHZvaWQge1xuICAgIGlmICghZmllbGQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBpc0VtcHR5ID1cbiAgICAgIHZhbHVlID09PSBudWxsIHx8XG4gICAgICB2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8XG4gICAgICAoQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiYgdmFsdWUubGVuZ3RoID09PSAwKTtcblxuICAgIGlmIChpc0VtcHR5KSB7XG4gICAgICBkZWxldGUgdGhpcy5sYXRlc3RGaWx0ZXJWYWx1ZXNbZmllbGRdO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmxhdGVzdEZpbHRlclZhbHVlc1tmaWVsZF0gPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBpZiAoZmlsdGVyTW9kZWwpIHtcbiAgICAgIC8vIHVwZGF0ZSBib3RoIHBsYWNlcyBzbyBQcmltZU5HIGVtaXRzIGl0IGNvcnJlY3RseVxuICAgICAgZmlsdGVyTW9kZWwudmFsdWUgPSB2YWx1ZTtcblxuICAgICAgaWYgKFxuICAgICAgICBBcnJheS5pc0FycmF5KGZpbHRlck1vZGVsLmNvbnN0cmFpbnRzKSAmJlxuICAgICAgICBmaWx0ZXJNb2RlbC5jb25zdHJhaW50cy5sZW5ndGggPiAwXG4gICAgICApIHtcbiAgICAgICAgZmlsdGVyTW9kZWwuY29uc3RyYWludHNbMF0udmFsdWUgPSB2YWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBvbk51bWJlckZpbHRlckNoYW5nZShmaWVsZDogc3RyaW5nIHwgdW5kZWZpbmVkLCB2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgaWYgKCFmaWVsZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGlzRW1wdHkgPVxuICAgICAgdmFsdWUgPT09IG51bGwgfHxcbiAgICAgIHZhbHVlID09PSB1bmRlZmluZWQgfHxcbiAgICAgIHZhbHVlID09PSAnJyB8fFxuICAgICAgKEFycmF5LmlzQXJyYXkodmFsdWUpICYmIHZhbHVlLmxlbmd0aCA9PT0gMCk7XG5cbiAgICBpZiAoaXNFbXB0eSkge1xuICAgICAgZGVsZXRlIHRoaXMubGF0ZXN0RmlsdGVyVmFsdWVzW2ZpZWxkXTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5sYXRlc3RGaWx0ZXJWYWx1ZXNbZmllbGRdID0gdmFsdWU7XG4gICAgfVxuICB9XG5cbiAgLyoqIEhlbHBlcjogZmluZCBjb2x1bW4gYnkgZmllbGQuIFN1cHBvcnRzIGNvbXBvc2VkIGZpZWxkcyBsaWtlIFwiY29kZS5wcm9wXCIuICovXG4gIHByaXZhdGUgZmluZENvbHVtbkJ5RmllbGQoZmllbGQ6IHN0cmluZyk6IFRhYmxlQ29sdW1uIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5jb2x1bW5zLmZpbmQoXG4gICAgICAoYykgPT4gYy5jb2RlID09PSBmaWVsZCB8fCAoYy5jb2RlICYmIGZpZWxkLnN0YXJ0c1dpdGgoYy5jb2RlICsgJy4nKSlcbiAgICApO1xuICB9XG5cbiAgLy8gRmlyZWQgYnkgUHJpbWVORyB3aGVuIHRoZSB1c2VyIGNsaWNrcyBBcHBseSAvIENsZWFyIGluIGFueSBmaWx0ZXIgbWVudVxuICBmaWx0ZXJDb2x1bW4oZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIGNvbnN0IGZpbHRlcnMgPSBldmVudD8uZmlsdGVycztcblxuICAgIGlmICghZmlsdGVycykge1xuICAgICAgdGhpcy5vbkZpbHRlckNvbHVtbi5lbWl0KGV2ZW50KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBpc051bGxpc2ggPSAodjogYW55KSA9PiB2ID09PSBudWxsIHx8IHYgPT09IHVuZGVmaW5lZCB8fCB2ID09PSAnJztcblxuICAgIE9iamVjdC5rZXlzKGZpbHRlcnMpLmZvckVhY2goKGZpZWxkKSA9PiB7XG4gICAgICBjb25zdCBtZXRhID0gZmlsdGVyc1tmaWVsZF07XG5cbiAgICAgIGNvbnN0IG5vcm1hbGl6ZU1ldGEgPSAobTogYW55KSA9PlxuICAgICAgICBBcnJheS5pc0FycmF5KG0pICYmIG0ubGVuZ3RoID4gMCA/IG1bMF0gOiBtO1xuXG4gICAgICBjb25zdCBtID0gbm9ybWFsaXplTWV0YShtZXRhKTtcbiAgICAgIGNvbnN0IGNvbCA9IHRoaXMuZmluZENvbHVtbkJ5RmllbGQoZmllbGQpO1xuICAgICAgY29uc3Qgd2FzQ2xlYXJlZCA9IHRoaXMuY2xlYXJlZEZpZWxkcy5oYXMoZmllbGQpO1xuXG4gICAgICAvLyBub3RoaW5nIHRvIGRvXG4gICAgICBpZiAoIW0gJiYgIWNvbCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAgIC8vIPCflLkgU1BFQ0lBTCBDQVNFOiBDT01QT1NFRCBDT0xVTU5cbiAgICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAgIGlmIChjb2wgJiYgY29sLnR5cGUgPT09IFRhYmxlVHlwZUVudW0uQ09NUE9TRUQpIHtcbiAgICAgICAgY29uc3QgY29tcG9zZWRWYWx1ZXM6IGFueSA9IHt9O1xuXG4gICAgICAgIGNvbC5jb21wb3NlZE5hbWVzPy5mb3JFYWNoKChuYW1lKSA9PiB7XG4gICAgICAgICAgY29uc3Qga2V5ID0gYCR7Y29sLmNvZGV9LiR7bmFtZX1gO1xuICAgICAgICAgIGNvbnN0IHZhbCA9IHRoaXMubGF0ZXN0RmlsdGVyVmFsdWVzW2tleV07XG4gICAgICAgICAgY29uc3QgZW1wdHkgPVxuICAgICAgICAgICAgaXNOdWxsaXNoKHZhbCkgfHwgKEFycmF5LmlzQXJyYXkodmFsKSAmJiB2YWwubGVuZ3RoID09PSAwKTtcblxuICAgICAgICAgIGlmICghZW1wdHkpIHtcbiAgICAgICAgICAgIGNvbXBvc2VkVmFsdWVzW25hbWVdID0gdmFsO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gSWYgbm90aGluZyBpbiBjYWNoZSwgdHJlYXQgYXMgXCJubyBmaWx0ZXJcIlxuICAgICAgICBpZiAoT2JqZWN0LmtleXMoY29tcG9zZWRWYWx1ZXMpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgIGlmIChtKSB7XG4gICAgICAgICAgICBtLnZhbHVlID0gbnVsbDtcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KG0uY29uc3RyYWludHMpKSB7XG4gICAgICAgICAgICAgIG0uY29uc3RyYWludHMuZm9yRWFjaCgoYzogYW55KSA9PiAoYy52YWx1ZSA9IG51bGwpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gc2VuZCBvYmplY3QgeyBzdWIxOiBbLi4uXSwgc3ViMjogWy4uLl0gfSB0byBwYXJlbnRcbiAgICAgICAgICBtLnZhbHVlID0gY29tcG9zZWRWYWx1ZXM7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB3YXNDbGVhcmVkID0gdGhpcy5jbGVhcmVkRmllbGRzLmhhcyhmaWVsZCk7XG4gICAgICAgIHJldHVybjsgLy8gY29tcG9zZWQgaGFuZGxlZFxuICAgICAgfVxuXG4gICAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgICAvLyDwn5S5IEdFTkVSSUMgQ0FTRTogTk9OLUNPTVBPU0VEIENPTFVNTlNcbiAgICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAgIGlmICghbSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICAvLyBJZiB0aGUgdXNlciBjbGlja2VkIENsZWFyIGZvciB0aGlzIGZpZWxkLCBmb3JjZSBpdCB0byBlbXB0eVxuICAgICAgaWYgKHdhc0NsZWFyZWQpIHtcbiAgICAgICAgZGVsZXRlIHRoaXMubGF0ZXN0RmlsdGVyVmFsdWVzW2ZpZWxkXTtcblxuICAgICAgICBtLnZhbHVlID0gbnVsbDtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkobS5jb25zdHJhaW50cykgJiYgbS5jb25zdHJhaW50cy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgbS5jb25zdHJhaW50c1swXS52YWx1ZSA9IG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNsZWFyZWRGaWVsZHMuZGVsZXRlKGZpZWxkKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBsZXQgdmFsdWU6IGFueSA9IG0udmFsdWU7XG5cbiAgICAgIC8vIFByaW1lTkcgb2Z0ZW4gc3RvcmVzIHRoZSByZWFsIHZhbHVlIGluIGNvbnN0cmFpbnRzWzBdLnZhbHVlXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShtLmNvbnN0cmFpbnRzKSAmJiBtLmNvbnN0cmFpbnRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgY29uc3QgY1ZhbCA9IG0uY29uc3RyYWludHNbMF0udmFsdWU7XG4gICAgICAgIGlmICghaXNOdWxsaXNoKGNWYWwpKSB7XG4gICAgICAgICAgdmFsdWUgPSBjVmFsO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIPCflLQgTkVXOiBmYWxsIGJhY2sgdG8gY2FjaGVkIHZhbHVlIHR5cGVkIGluIHRoZSBpbnB1dFxuICAgICAgY29uc3QgY2FjaGVkID0gdGhpcy5sYXRlc3RGaWx0ZXJWYWx1ZXNbZmllbGRdO1xuICAgICAgY29uc3QgaGFzQ2FjaGVkID1cbiAgICAgICAgIWlzTnVsbGlzaChjYWNoZWQpICYmICghQXJyYXkuaXNBcnJheShjYWNoZWQpIHx8IGNhY2hlZC5sZW5ndGggPiAwKTtcblxuICAgICAgaWYgKFxuICAgICAgICAoaXNOdWxsaXNoKHZhbHVlKSB8fCAoQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiYgdmFsdWUubGVuZ3RoID09PSAwKSkgJiZcbiAgICAgICAgaGFzQ2FjaGVkXG4gICAgICApIHtcbiAgICAgICAgdmFsdWUgPSBjYWNoZWQ7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGlzRW1wdHkgPVxuICAgICAgICBpc051bGxpc2godmFsdWUpIHx8IChBcnJheS5pc0FycmF5KHZhbHVlKSAmJiB2YWx1ZS5sZW5ndGggPT09IDApO1xuXG4gICAgICAvLyBDTEVBUiA9PiByZW1vdmUgZnJvbSBjYWNoZSwgcmVzZXQgUHJpbWVORyBtZXRhZGF0YVxuICAgICAgaWYgKGlzRW1wdHkpIHtcbiAgICAgICAgZGVsZXRlIHRoaXMubGF0ZXN0RmlsdGVyVmFsdWVzW2ZpZWxkXTtcblxuICAgICAgICBtLnZhbHVlID0gbnVsbDtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkobS5jb25zdHJhaW50cykgJiYgbS5jb25zdHJhaW50cy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgbS5jb25zdHJhaW50c1swXS52YWx1ZSA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICAvLyBOT04tRU1QVFkgPT4gY2FjaGUgYW5kIG5vcm1hbGl6ZVxuICAgICAgdGhpcy5sYXRlc3RGaWx0ZXJWYWx1ZXNbZmllbGRdID0gdmFsdWU7XG5cbiAgICAgIGxldCBlbWl0VmFsdWU6IGFueSA9IHZhbHVlO1xuXG4gICAgICAvLyBPbmx5IERBVEUgY29sdW1ucyBuZWVkIFwiZGQvTU0veXl5eVwiIGZvcm1hdFxuICAgICAgaWYgKGNvbCAmJiBjb2wudHlwZSA9PT0gVGFibGVUeXBlRW51bS5EQVRFICYmIHZhbHVlKSB7XG4gICAgICAgIGVtaXRWYWx1ZSA9IHRoaXMuZm9ybWF0RGF0ZShcbiAgICAgICAgICB2YWx1ZSBpbnN0YW5jZW9mIERhdGUgPyB2YWx1ZSA6IG5ldyBEYXRlKHZhbHVlKVxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBtLnZhbHVlID0gZW1pdFZhbHVlO1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkobS5jb25zdHJhaW50cykgJiYgbS5jb25zdHJhaW50cy5sZW5ndGggPiAwKSB7XG4gICAgICAgIG0uY29uc3RyYWludHNbMF0udmFsdWUgPSBlbWl0VmFsdWU7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICAvLyBzZW5kIG5vcm1hbGl6ZWQgZmlsdGVycyB0byBwYXJlbnQgKHNlcnZlci1zaWRlIHBhZ2luYXRpb24pXG4gICAgdGhpcy5vbkZpbHRlckNvbHVtbi5lbWl0KGV2ZW50KTtcbiAgfVxuXG4gIGNoYW5nZVBhZ2UoZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIGNvbnN0IHBhZ2UgPSBldmVudC5wYWdlID8/IE1hdGguZmxvb3IoKGV2ZW50LmZpcnN0IHx8IDApIC8gZXZlbnQucm93cyk7XG4gICAgY29uc3Qgcm93cyA9IGV2ZW50LnJvd3M7XG5cbiAgICB0aGlzLnJvd3MgPSByb3dzO1xuICAgIHRoaXMub25QYWdlQ2hhbmdlLmVtaXQoeyBwYWdlLCByb3dzIH0pO1xuICB9XG5cbiAgc29ydENvbHVtbihldmVudDogYW55KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmlzUGFnaW5hdGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbGV0IGZpZWxkID0gZXZlbnQuZmllbGQ7XG5cbiAgICBjb25zdCBjb2wgPSB0aGlzLmNvbHVtbnMuZmluZCgoYykgPT4gYy5jb2RlID09PSBmaWVsZCk7XG5cbiAgICBpZiAoY29sICYmIGNvbC50eXBlID09PSBUYWJsZVR5cGVFbnVtLkNPTVBPU0VEKSB7XG4gICAgICBsZXQgdGV4dFByb3A6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAgICAgaWYgKGNvbC5jb21wb3NlZE5hbWVzICYmIGNvbC5jb21wb3NlZFR5cGVzKSB7XG4gICAgICAgIGNvbnN0IGlkeCA9IGNvbC5jb21wb3NlZFR5cGVzLmZpbmRJbmRleChcbiAgICAgICAgICAodCkgPT4gdCA9PT0gVGFibGVUeXBlRW51bS5TVFJJTkdcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKGlkeCA+PSAwICYmIGlkeCA8IGNvbC5jb21wb3NlZE5hbWVzLmxlbmd0aCkge1xuICAgICAgICAgIHRleHRQcm9wID0gY29sLmNvbXBvc2VkTmFtZXNbaWR4XTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoIXRleHRQcm9wICYmIGNvbC5jb21wb3NlZE5hbWVzICYmIGNvbC5jb21wb3NlZE5hbWVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgdGV4dFByb3AgPSBjb2wuY29tcG9zZWROYW1lc1swXTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRleHRQcm9wKSB7XG4gICAgICAgIGZpZWxkID0gYCR7ZmllbGR9LiR7dGV4dFByb3B9YDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLm9uU29ydENvbHVtbi5lbWl0KHtcbiAgICAgIC4uLmV2ZW50LFxuICAgICAgZmllbGQsXG4gICAgfSk7XG4gIH1cblxuICBvbkNhbGVuZGFyRmlsdGVyQ2hhbmdlKFxuICAgIGV2ZW50OiBhbnksXG4gICAgY29sdW1uQ29kZTogc3RyaW5nLFxuICAgIGZpbHRlckNhbGxiYWNrOiBhbnlcbiAgKTogdm9pZCB7XG4gICAgY29uc3QgZmlsdGVyVmFsdWUgPSBldmVudCA/IG5ldyBEYXRlKGV2ZW50KSA6IG51bGw7XG4gICAgaWYgKCFmaWx0ZXJWYWx1ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGZpbHRlckNhbGxiYWNrKGZpbHRlclZhbHVlKTtcblxuICAgIGlmICh0aGlzLmlzUGFnaW5hdGVkKSB7XG4gICAgICB0aGlzLm9uRmlsdGVyQ29sdW1uLmVtaXQoe1xuICAgICAgICB0eXBlOiAnZGF0ZScsXG4gICAgICAgIGNvbHVtbkNvZGUsXG4gICAgICAgIHZhbHVlOiBmaWx0ZXJWYWx1ZSxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGZpbHRlclZhbHVlU3RyaW5nID0gZXZlbnQgPyB0aGlzLmZvcm1hdERhdGUoZXZlbnQpIDogJyc7XG4gICAgdGhpcy5maWx0ZXJDb2x1bW4oe1xuICAgICAgZmlsdGVyZWRWYWx1ZTogdGhpcy5kYXRhLmZpbHRlcigoaXRlbSkgPT4ge1xuICAgICAgICBjb25zdCBjb2x1bW5WYWx1ZSA9IGl0ZW1bY29sdW1uQ29kZV07XG4gICAgICAgIGlmIChjb2x1bW5WYWx1ZSkge1xuICAgICAgICAgIGNvbnN0IGl0ZW1EYXRlU3RyaW5nID0gdGhpcy5mb3JtYXREYXRlKG5ldyBEYXRlKGNvbHVtblZhbHVlKSk7XG4gICAgICAgICAgcmV0dXJuIGl0ZW1EYXRlU3RyaW5nID09PSBmaWx0ZXJWYWx1ZVN0cmluZztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9KSxcbiAgICB9KTtcbiAgfVxuXG4gIC8vIC0tLS0tLS0tLS0gT1RIRVIgSEVMUEVSUyAtLS0tLS0tLS0tXG5cbiAgZmlsdGVyQ29tcG9zZWREYXRhKGl0ZW06IGFueSwgY29tcG9zZWROYW1lOiBzdHJpbmcsIHZhbHVlOiBhbnkpOiBib29sZWFuIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiYgdmFsdWUubGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIHZhbHVlLnNvbWUoKGZpbHRlclZhbHVlOiBzdHJpbmcpID0+XG4gICAgICAgIGl0ZW1bY29tcG9zZWROYW1lXT8udG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhmaWx0ZXJWYWx1ZS50b0xvd2VyQ2FzZSgpKVxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBwcml2YXRlIGNhbGN1bGF0ZUNvbHVtbldpZHRoKGNvbDogVGFibGVDb2x1bW4pOiBzdHJpbmcge1xuICAgIGNvbnN0IGNhbGN1bGF0ZWRXaWR0aCA9IGNhbGN1bGF0ZVRleHRXaWR0aChjb2wsIGNvbC50aXRsZSk7XG4gICAgY29uc3QgdG90YWxXaWR0aCA9IGNhbGN1bGF0ZWRXaWR0aCArIHRoaXMuaWNvbldpZHRoICsgMjA7XG4gICAgcmV0dXJuIGAke3RvdGFsV2lkdGh9cHhgO1xuICB9XG5cbiAgZ2V0SGVhZGVyV2lkdGgoY29sOiBUYWJsZUNvbHVtbik6IHN0cmluZyB7XG4gICAgaWYgKGNvbC53aWR0aCkge1xuICAgICAgcmV0dXJuIGNvbC53aWR0aDtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuY2FsY3VsYXRlQ29sdW1uV2lkdGgoY29sKTtcbiAgfVxuXG4gIGNsZWFyKHRhYmxlOiBUYWJsZSkge1xuICAgIC8vIENsZWFyIFByaW1lTkcgaW50ZXJuYWwgZmlsdGVycyArIFVJXG4gICAgdGFibGUuY2xlYXIoKTtcblxuICAgIC8vIENsZWFyIGdsb2JhbCBzZWFyY2hcbiAgICB0aGlzLnNlYXJjaFZhbHVlID0gJyc7XG5cbiAgICAvLyBDbGVhciBjYWNoZWQgdmFsdWVzIGZvciBub3JtYWwgJiBjb21wb3NlZCBmaWVsZHNcbiAgICB0aGlzLmxhdGVzdEZpbHRlclZhbHVlcyA9IHt9O1xuXG4gICAgLy8gQ2xlYXIgbG9jYWwgbW9kZWxzIGZvciBjb21wb3NlZCBmaWx0ZXJzXG4gICAgT2JqZWN0LmtleXModGhpcy5maWx0ZXJzKS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgIGlmICh0aGlzLmZpbHRlcnNba2V5XSkge1xuICAgICAgICB0aGlzLmZpbHRlcnNba2V5XS52YWx1ZSA9IFtdO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYgKHRoaXMuaXNQYWdpbmF0ZWQpIHtcbiAgICAgIHRoaXMub25GaWx0ZXJDb2x1bW4uZW1pdCh7IGNsZWFyZWQ6IHRydWUgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBwYXJzZURhdGUoZGF0ZVN0cmluZzogc3RyaW5nKTogRGF0ZSB8IG51bGwge1xuICAgIGNvbnN0IHBhcnRzID0gZGF0ZVN0cmluZy5zcGxpdCgnLycpO1xuICAgIGlmIChwYXJ0cy5sZW5ndGggPT09IDMpIHtcbiAgICAgIGNvbnN0IGRheSA9IHBhcnNlSW50KHBhcnRzWzBdLCAxMCk7XG4gICAgICBjb25zdCBtb250aCA9IHBhcnNlSW50KHBhcnRzWzFdLCAxMCkgLSAxO1xuICAgICAgY29uc3QgeWVhciA9IHBhcnNlSW50KHBhcnRzWzJdLCAxMCk7XG4gICAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoeWVhciwgbW9udGgsIGRheSk7XG4gICAgICByZXR1cm4gaXNOYU4oZGF0ZS5nZXRUaW1lKCkpID8gbnVsbCA6IGRhdGU7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplUGFnaW5hdGlvbigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pc1BhZ2luYXRlZCkge1xuICAgICAgaWYgKCF0aGlzLnJvd3NQZXJQYWdlIHx8IHRoaXMucm93c1BlclBhZ2UubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHRoaXMucm93c1BlclBhZ2UgPSBbMjAsIDMwLCA0MF07XG4gICAgICB9XG4gICAgICB0aGlzLnJvd3MgPSB0aGlzLnJvd3NQZXJQYWdlWzBdO1xuICAgIH1cbiAgfVxuXG4gIG9uQ2hhbmdlKGV2ZW50OiBFdmVudCwgaWQ6IG51bWJlciwga2V5OiBhbnkpIHtcbiAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudDtcbiAgICB0aGlzLmNoYW5nZUhhbmRsZXIoaWQsIGtleSwgdGFyZ2V0LnZhbHVlKTtcbiAgfVxuXG4gIGNoYW5nZUhhbmRsZXIoaWQ6IG51bWJlciwga2V5OiBhbnksIHZhbHVlOiBhbnkpIHtcbiAgICBjb25zdCBjb2x1bW4gPSB0aGlzLmNvbHVtbnMuZmluZCgoaXRlbSkgPT4gaXRlbS5jb2RlID09PSBrZXkpO1xuICAgIGlmICghdGhpcy5tYXAuZ2V0KGlkKSkge1xuICAgICAgaWYgKGNvbHVtbj8udHlwZSA9PT0gVGFibGVUeXBlRW51bS5EQVRFKSB7XG4gICAgICAgIGNvbnN0IGRhdGUgPSB0aGlzLnBhcnNlRGF0ZSh2YWx1ZSk7XG4gICAgICAgIHRoaXMuZGF0YU1hcC5zZXQoa2V5LCBkYXRlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZGF0YU1hcC5zZXQoa2V5LCB2YWx1ZSk7XG4gICAgICB9XG4gICAgICB0aGlzLm1hcC5zZXQoaWQsIG5ldyBNYXAodGhpcy5kYXRhTWFwKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IG1hcEl0ZW0gPSB0aGlzLm1hcC5nZXQoaWQpIGFzIE1hcDxhbnksIGFueT47XG4gICAgICBpZiAoY29sdW1uPy50eXBlID09PSBUYWJsZVR5cGVFbnVtLkRBVEUpIHtcbiAgICAgICAgY29uc3QgZGF0ZSA9IHRoaXMucGFyc2VEYXRlKHZhbHVlKTtcbiAgICAgICAgbWFwSXRlbS5zZXQoa2V5LCBkYXRlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG1hcEl0ZW0uc2V0KGtleSwgdmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGdldENvbHVtbkZpbHRlclR5cGUoY29sdW1uOiBUYWJsZUNvbHVtbik6IHN0cmluZyB7XG4gICAgc3dpdGNoIChjb2x1bW4udHlwZSkge1xuICAgICAgY2FzZSBUYWJsZVR5cGVFbnVtLlNUUklORzpcbiAgICAgICAgcmV0dXJuICd0ZXh0JztcbiAgICAgIGNhc2UgVGFibGVUeXBlRW51bS5BTU9VTlQ6XG4gICAgICBjYXNlIFRhYmxlVHlwZUVudW0uTlVNQkVSOlxuICAgICAgICByZXR1cm4gJ251bWVyaWMnO1xuICAgICAgY2FzZSBUYWJsZVR5cGVFbnVtLkRBVEU6XG4gICAgICAgIHJldHVybiAnZGF0ZSc7XG4gICAgICBjYXNlIFRhYmxlVHlwZUVudW0uTVVMVElTRUxFQ1Q6XG4gICAgICAgIHJldHVybiAnbXVsdGlTZWxlY3QnO1xuICAgICAgY2FzZSBUYWJsZVR5cGVFbnVtLkJPT0xFQU46XG4gICAgICAgIHJldHVybiAnYm9vbGVhbic7XG4gICAgICBjYXNlIFRhYmxlVHlwZUVudW0uQ09NUE9TRUQ6XG4gICAgICAgIHJldHVybiAnY29tcG9zZWQnO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuICd0ZXh0JztcbiAgICB9XG4gIH1cblxuICBpc0VkaXRhYmxlKGtleTogc3RyaW5nIHwgdW5kZWZpbmVkKTogYm9vbGVhbiB7XG4gICAgaWYgKCFrZXkpIHJldHVybiBmYWxzZTtcbiAgICBjb25zdCBjb2x1bW4gPSB0aGlzLmNvbHVtbnMuZmluZCgoaXRlbSkgPT4gaXRlbS5jb2RlID09PSBrZXkpO1xuICAgIHJldHVybiBjb2x1bW4/LmlzRWRpdGFibGUgIT09IGZhbHNlO1xuICB9XG5cbiAgaXNNdWx0aVNlbGVjdChrZXk6IGFueSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGNvbHVtbiA9IHRoaXMuY29sdW1ucy5maW5kKChpdGVtKSA9PiBpdGVtLmNvZGUgPT09IGtleSk7XG4gICAgaWYgKFxuICAgICAgY29sdW1uPy50eXBlID09PSBUYWJsZVR5cGVFbnVtLk1VTFRJU0VMRUNUICYmXG4gICAgICBjb2x1bW4ub3B0aW9ucyAmJlxuICAgICAgY29sdW1uLmNvZGUgIT09IHVuZGVmaW5lZFxuICAgICkge1xuICAgICAgdGhpcy5vcHRpb25FbnRyaWVzID0gbmV3IE1hcChbXG4gICAgICAgIFtjb2x1bW4uY29kZSBhcyBzdHJpbmcsIE9iamVjdC52YWx1ZXMoY29sdW1uLm9wdGlvbnMpXSxcbiAgICAgIF0pO1xuICAgICAgdGhpcy5vcHRpb25WYWx1ZXMgPSB0aGlzLm9wdGlvbkVudHJpZXMuZ2V0KGtleSkgfHwgW107XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaXNEYXRlUGlja2VyKGtleTogYW55KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuY29sdW1ucy5maW5kKChpdGVtKSA9PiBpdGVtLmNvZGUgPT09IGtleSk/LnR5cGUgPT09XG4gICAgICBUYWJsZVR5cGVFbnVtLkRBVEVcbiAgICApO1xuICB9XG5cbiAgZGF0ZUNvbnZlcnRlcih2YWx1ZTogYW55KTogc3RyaW5nIHtcbiAgICByZXR1cm4gbmV3IERhdGUodmFsdWUpLnRvTG9jYWxlRGF0ZVN0cmluZygnZW4tVVMnKTtcbiAgfVxuXG4gIGdldEN1cnJlbmN5U3ltYm9sKGNvbHVtbjogVGFibGVDb2x1bW4pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiBjb2x1bW4udHlwZSA9PT0gVGFibGVUeXBlRW51bS5BTU9VTlQgJiZcbiAgICAgIGNvbHVtbi5jdXJyZW5jeSAmJlxuICAgICAgdGhpcy5pc1ZhbGlkQ3VycmVuY3lDb2RlKGNvbHVtbi5jdXJyZW5jeSlcbiAgICAgID8gY29sdW1uLmN1cnJlbmN5XG4gICAgICA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHByaXZhdGUgaXNWYWxpZEN1cnJlbmN5Q29kZShjdXJyZW5jeUNvZGU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnZhbGlkQ3VycmVuY3lDb2Rlcy5pbmNsdWRlcyhjdXJyZW5jeUNvZGUpO1xuICB9XG5cbiAgZmlsdGVyR2xvYmFsKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50O1xuICAgIGNvbnN0IHZhbHVlID0gdGFyZ2V0LnZhbHVlLnRvTG93ZXJDYXNlKCk7XG5cbiAgICBpZiAodGhpcy5pc1BhZ2luYXRlZCkge1xuICAgICAgdGhpcy5zZWFyY2guZW1pdCh2YWx1ZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZmlsdGVyZWREYXRhID0gdGhpcy5kYXRhLmZpbHRlcigoaXRlbSkgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuZ2xvYmFsRmlsdGVyRmllbGRzLnNvbWUoKGZpZWxkKSA9PiB7XG4gICAgICAgIGNvbnN0IGNvbHVtbiA9IHRoaXMuY29sdW1ucy5maW5kKChjb2wpID0+IGNvbC5jb2RlID09PSBmaWVsZCk7XG4gICAgICAgIGlmICghY29sdW1uKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNvbHVtbi50eXBlID09PSBUYWJsZVR5cGVFbnVtLkRBVEUpIHtcbiAgICAgICAgICBjb25zdCBpdGVtRGF0ZSA9IHRoaXMuZm9ybWF0RGF0ZShpdGVtW2ZpZWxkXSk7XG4gICAgICAgICAgcmV0dXJuIGl0ZW1EYXRlICYmIGl0ZW1EYXRlLmluY2x1ZGVzKHZhbHVlKTtcbiAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICBjb2x1bW4udHlwZSA9PT0gVGFibGVUeXBlRW51bS5BTU9VTlQgfHxcbiAgICAgICAgICBjb2x1bW4udHlwZSA9PT0gVGFibGVUeXBlRW51bS5OVU1CRVJcbiAgICAgICAgKSB7XG4gICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIGl0ZW1bZmllbGRdICYmIGl0ZW1bZmllbGRdLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh2YWx1ZSlcbiAgICAgICAgICApO1xuICAgICAgICB9IGVsc2UgaWYgKGNvbHVtbi50eXBlID09PSBUYWJsZVR5cGVFbnVtLkNPTVBPU0VEKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuZmlsdGVyQ29tcG9zZWRDb2x1bW4oaXRlbVtmaWVsZF0sIHZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgaXRlbVtmaWVsZF0gJiYgaXRlbVtmaWVsZF0udG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHZhbHVlKVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgdGhpcy5kdC52YWx1ZSA9IGZpbHRlcmVkRGF0YTtcbiAgfVxuXG4gIHByaXZhdGUgZmlsdGVyQ29tcG9zZWRDb2x1bW4oY29tcG9zZWREYXRhOiBhbnksIHZhbHVlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBpZiAoY29tcG9zZWREYXRhKSB7XG4gICAgICByZXR1cm4gT2JqZWN0LmtleXMoY29tcG9zZWREYXRhKS5zb21lKChrZXkpID0+IHtcbiAgICAgICAgY29uc3QgY2VsbFZhbHVlID0gY29tcG9zZWREYXRhW2tleV07XG4gICAgICAgIGlmICh0eXBlb2YgY2VsbFZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIHJldHVybiBjZWxsVmFsdWUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGZvcm1hdERhdGUoZGF0ZTogYW55KTogc3RyaW5nIHtcbiAgICBpZiAoIWRhdGUpIHJldHVybiAnJztcbiAgICBpZiAoZGF0ZSBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICAgIGNvbnN0IGRheSA9IGRhdGUuZ2V0RGF0ZSgpLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwgJzAnKTtcbiAgICAgIGNvbnN0IG1vbnRoID0gKGRhdGUuZ2V0TW9udGgoKSArIDEpLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwgJzAnKTtcbiAgICAgIGNvbnN0IHllYXIgPSBkYXRlLmdldEZ1bGxZZWFyKCkudG9TdHJpbmcoKTtcbiAgICAgIHJldHVybiBgJHtkYXl9LyR7bW9udGh9LyR7eWVhcn1gO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIGRhdGUgPT09ICdzdHJpbmcnKSB7XG4gICAgICBjb25zdCBwYXJ0cyA9IGRhdGUuc3BsaXQoJy8nKTtcbiAgICAgIGlmIChwYXJ0cy5sZW5ndGggPT09IDMpIHtcbiAgICAgICAgcmV0dXJuIGAke3BhcnRzWzBdfS8ke3BhcnRzWzFdfS8ke3BhcnRzWzJdfWA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gZGF0ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgZXhwb3J0RXhjZWwoKSB7XG4gICAgdGhpcy5leHBvcnRFeGNlbEV2ZW50LmVtaXQoKTtcbiAgfVxuXG4gIGV4cG9ydFBkZigpIHtcbiAgICB0aGlzLmV4cG9ydFBkZkV2ZW50LmVtaXQoKTtcbiAgfVxuXG4gIGdldEltYWdlU3R5bGUoc3R5bGU6IFRpdGxlU3R5bGUgfCBJbWFnZVN0eWxlIHwgdW5kZWZpbmVkKToge1xuICAgIFtrZXk6IHN0cmluZ106IHN0cmluZztcbiAgfSB7XG4gICAgaWYgKHN0eWxlKSB7XG4gICAgICBjb25zdCBpbWFnZVN0eWxlOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9ID0ge1xuICAgICAgICB3aWR0aDogKHN0eWxlIGFzIEltYWdlU3R5bGUpLndpZHRoIHx8ICdhdXRvJyxcbiAgICAgICAgaGVpZ2h0OiAoc3R5bGUgYXMgSW1hZ2VTdHlsZSkuaGVpZ2h0IHx8ICdhdXRvJyxcbiAgICAgIH07XG5cbiAgICAgIGlmICgoc3R5bGUgYXMgSW1hZ2VTdHlsZSkubWFyZ2luKSB7XG4gICAgICAgIGltYWdlU3R5bGUubWFyZ2luID0gKHN0eWxlIGFzIEltYWdlU3R5bGUpLm1hcmdpbiE7XG4gICAgICB9XG4gICAgICBpZiAoKHN0eWxlIGFzIEltYWdlU3R5bGUpLm1hcmdpbkxlZnQpIHtcbiAgICAgICAgaW1hZ2VTdHlsZS5tYXJnaW5MZWZ0ID0gKHN0eWxlIGFzIEltYWdlU3R5bGUpLm1hcmdpbkxlZnQhO1xuICAgICAgfVxuICAgICAgaWYgKChzdHlsZSBhcyBJbWFnZVN0eWxlKS5tYXJnaW5SaWdodCkge1xuICAgICAgICBpbWFnZVN0eWxlLm1hcmdpblJpZ2h0ID0gKHN0eWxlIGFzIEltYWdlU3R5bGUpLm1hcmdpblJpZ2h0ITtcbiAgICAgIH1cbiAgICAgIGlmICgoc3R5bGUgYXMgSW1hZ2VTdHlsZSkubWFyZ2luVG9wKSB7XG4gICAgICAgIGltYWdlU3R5bGUubWFyZ2luVG9wID0gKHN0eWxlIGFzIEltYWdlU3R5bGUpLm1hcmdpblRvcCE7XG4gICAgICB9XG4gICAgICBpZiAoKHN0eWxlIGFzIEltYWdlU3R5bGUpLm1hcmdpbkJvdHRvbSkge1xuICAgICAgICBpbWFnZVN0eWxlLm1hcmdpbkJvdHRvbSA9IChzdHlsZSBhcyBJbWFnZVN0eWxlKS5tYXJnaW5Cb3R0b20hO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gaW1hZ2VTdHlsZTtcbiAgICB9XG5cbiAgICByZXR1cm4ge307XG4gIH1cblxuICBnZXRUaXRsZVN0eWxlKHN0eWxlOiBUaXRsZVN0eWxlIHwgSW1hZ2VTdHlsZSB8IHVuZGVmaW5lZCk6IHtcbiAgICBba2V5OiBzdHJpbmddOiBzdHJpbmc7XG4gIH0ge1xuICAgIGlmIChzdHlsZSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY29sb3I6IHN0eWxlLmNvbG9yIHx8ICdpbmhlcml0JyxcbiAgICAgICAgZm9udFNpemU6IChzdHlsZSBhcyBUaXRsZVN0eWxlKS5mb250U2l6ZSB8fCAnaW5oZXJpdCcsXG4gICAgICAgIHRleHRBbGlnbjogKHN0eWxlIGFzIFRpdGxlU3R5bGUpLnBvc2l0aW9uIHx8ICdsZWZ0JyxcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiB7fTtcbiAgfVxuXG4gIGZvcm1hdE51bWJlcihcbiAgICB2YWx1ZTogbnVtYmVyLFxuICAgIGRlY2ltYWxQbGFjZXM/OiBudW1iZXIsXG4gICAgdGhvdXNhbmRTZXBhcmF0b3I6ICdjb21tYScgfCAnc3BhY2UnID0gJ2NvbW1hJyxcbiAgICBkZWNpbWFsU2VwYXJhdG9yOiAnY29tbWEnIHwgJ2RvdCcgPSAnZG90J1xuICApOiBzdHJpbmcge1xuICAgIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IGlzTmFOKHZhbHVlKSkgcmV0dXJuICcnO1xuXG4gICAgbGV0IGZvcm1hdHRlZE51bWJlciA9XG4gICAgICBkZWNpbWFsUGxhY2VzICE9PSB1bmRlZmluZWRcbiAgICAgICAgPyB2YWx1ZS50b0ZpeGVkKGRlY2ltYWxQbGFjZXMpXG4gICAgICAgIDogdmFsdWUudG9TdHJpbmcoKTtcblxuICAgIGlmIChkZWNpbWFsU2VwYXJhdG9yID09PSAnY29tbWEnKSB7XG4gICAgICBmb3JtYXR0ZWROdW1iZXIgPSBmb3JtYXR0ZWROdW1iZXIucmVwbGFjZSgnLicsICcsJyk7XG4gICAgfVxuXG4gICAgaWYgKHRob3VzYW5kU2VwYXJhdG9yICYmIE1hdGguYWJzKHZhbHVlKSA+PSAxMDAwKSB7XG4gICAgICBjb25zdCBwYXJ0cyA9IGZvcm1hdHRlZE51bWJlci5zcGxpdChcbiAgICAgICAgZGVjaW1hbFNlcGFyYXRvciA9PT0gJ2NvbW1hJyA/ICcsJyA6ICcuJ1xuICAgICAgKTtcbiAgICAgIHBhcnRzWzBdID0gcGFydHNbMF0ucmVwbGFjZShcbiAgICAgICAgL1xcQig/PShcXGR7M30pKyg/IVxcZCkpL2csXG4gICAgICAgIHRob3VzYW5kU2VwYXJhdG9yID09PSAnY29tbWEnID8gJywnIDogJyAnXG4gICAgICApO1xuICAgICAgZm9ybWF0dGVkTnVtYmVyID0gcGFydHMuam9pbihkZWNpbWFsU2VwYXJhdG9yID09PSAnY29tbWEnID8gJywnIDogJy4nKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZm9ybWF0dGVkTnVtYmVyO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwicHQtYWR2YW5jZWQtcHJpbWUtdGFibGUgdGFibGUtY29udGFpbmVyXCI+XG4gIDxwLXRhYmxlXG4gICAgI2R0XG4gICAgW3ZhbHVlXT1cImRhdGFcIlxuICAgIFtsb2FkaW5nXT1cImxvYWRpbmdcIlxuICAgIFtyb3dzXT1cInJvd3NcIlxuICAgIFtwYWdpbmF0b3JdPVwiaXNQYWdpbmF0ZWRcIlxuICAgIFtnbG9iYWxGaWx0ZXJGaWVsZHNdPVwiZ2xvYmFsRmlsdGVyRmllbGRzXCJcbiAgICBbcm93c1BlclBhZ2VPcHRpb25zXT1cInJvd3NQZXJQYWdlXCJcbiAgICBbdG90YWxSZWNvcmRzXT1cInRvdGFsUmVjb3Jkc1wiXG4gICAgW2xhenldPVwiaXNQYWdpbmF0ZWRcIlxuICAgIGRhdGFLZXk9XCJpZFwiXG4gICAgc3R5bGVDbGFzcz1cInAtZGF0YXRhYmxlLWdyaWRsaW5lcyBwLWRhdGF0YWJsZS1zdHJpcGVkXCJcbiAgICBbc2Nyb2xsYWJsZV09XCJ0cnVlXCJcbiAgICBbc2Nyb2xsSGVpZ2h0XT1cIm1heEhlaWdodCAhPT0gbnVsbCA/IG1heEhlaWdodCA6IHVuZGVmaW5lZFwiXG4gICAgKG9uRmlsdGVyKT1cImZpbHRlckNvbHVtbigkZXZlbnQpXCJcbiAgICAob25QYWdlKT1cImNoYW5nZVBhZ2UoJGV2ZW50KVwiXG4gICAgKG9uU29ydCk9XCJzb3J0Q29sdW1uKCRldmVudClcIlxuICA+XG4gICAgPCEtLSBDT0xHUk9VUDogc3luYyBoZWFkZXIvYm9keSB3aWR0aHMgLS0+XG4gICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImNvbGdyb3VwXCIgbGV0LWNvbHVtbnM+XG4gICAgICA8Y29sZ3JvdXA+XG4gICAgICAgIDxjb2xcbiAgICAgICAgICAqbmdGb3I9XCJsZXQgY29sIG9mIGNvbHVtbnNcIlxuICAgICAgICAgIFtzdHlsZS53aWR0aF09XCJjb2wud2lkdGggfHwgZ2V0SGVhZGVyV2lkdGgoY29sKVwiXG4gICAgICAgIC8+XG4gICAgICA8L2NvbGdyb3VwPlxuICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICA8IS0tIENBUFRJT04gLS0+XG4gICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImNhcHRpb25cIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJmbGV4XCI+XG4gICAgICAgIDxkaXY+XG4gICAgICAgICAgPGgzPlRvdGFsOiB7eyB0b3RhbFJlY29yZHMgfX08L2gzPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2PlxuICAgICAgICAgIDwhLS0gQ2xlYXIgZmlsdGVycyAtLT5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAqbmdJZj1cImhhc1NlYXJjaEZpbHRlclwiXG4gICAgICAgICAgICBwQnV0dG9uXG4gICAgICAgICAgICBpY29uPVwicGkgcGktZmlsdGVyLXNsYXNoXCJcbiAgICAgICAgICAgIGNsYXNzPVwicC1idXR0b24tcm91bmRlZCBwLWJ1dHRvbi10ZXh0XCJcbiAgICAgICAgICAgIChjbGljayk9XCJjbGVhcihkdClcIlxuICAgICAgICAgICAgdGl0bGU9XCJDbGVhciBmaWx0ZXJzXCJcbiAgICAgICAgICA+PC9idXR0b24+XG5cbiAgICAgICAgICA8IS0tIEV4cG9ydCB0byBFeGNlbCBCdXR0b24gLS0+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgKm5nSWY9XCJoYXNFeHBvcnRFeGNlbFwiXG4gICAgICAgICAgICBwQnV0dG9uXG4gICAgICAgICAgICBpY29uPVwicGkgcGktZmlsZS1leGNlbFwiXG4gICAgICAgICAgICBjbGFzcz1cInAtYnV0dG9uLXJvdW5kZWQgcC1idXR0b24tdGV4dFwiXG4gICAgICAgICAgICAoY2xpY2spPVwiZXhwb3J0RXhjZWwoKVwiXG4gICAgICAgICAgICB0aXRsZT1cIkV4cG9ydCB0byBFeGNlbFwiXG4gICAgICAgICAgPjwvYnV0dG9uPlxuXG4gICAgICAgICAgPCEtLSBFeHBvcnQgdG8gUERGIEJ1dHRvbiAtLT5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAqbmdJZj1cImhhc0V4cG9ydFBERlwiXG4gICAgICAgICAgICBwQnV0dG9uXG4gICAgICAgICAgICBpY29uPVwicGkgcGktZmlsZS1wZGZcIlxuICAgICAgICAgICAgY2xhc3M9XCJwLWJ1dHRvbi1yb3VuZGVkIHAtYnV0dG9uLXRleHRcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImV4cG9ydFBkZigpXCJcbiAgICAgICAgICAgIHRpdGxlPVwiRXhwb3J0IHRvIFBERlwiXG4gICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwibWwtYXV0b1wiICpuZ0lmPVwiaGFzU2VhcmNoRmlsdGVyXCI+XG4gICAgICAgICAgPHAtaWNvbkZpZWxkIGljb25Qb3NpdGlvbj1cImxlZnRcIiBjbGFzcz1cIm1sLWF1dG9cIj5cbiAgICAgICAgICAgIDxwLWlucHV0SWNvbj5cbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJwaSBwaS1zZWFyY2hcIj48L2k+XG4gICAgICAgICAgICA8L3AtaW5wdXRJY29uPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIHBJbnB1dFRleHRcbiAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInNlYXJjaFZhbHVlXCJcbiAgICAgICAgICAgICAgKGlucHV0KT1cImZpbHRlckdsb2JhbCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWFyY2gga2V5d29yZFwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvcC1pY29uRmllbGQ+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgIDwhLS0gSEVBREVSIC0tPlxuICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJoZWFkZXJcIj5cbiAgICAgIDx0ciBjbGFzcz1cInN0aWNreS1oZWFkZXJcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY29sIG9mIGNvbHVtbnNcIj5cbiAgICAgICAgICA8dGhcbiAgICAgICAgICAgICpuZ0lmPVwiIWNvbC5jaGlsZHJlbjsgZWxzZSBncm91cEhlYWRlclwiXG4gICAgICAgICAgICBwU29ydGFibGVDb2x1bW49XCJ7eyBjb2wuY29kZSB9fVwiXG4gICAgICAgICAgICBbc3R5bGUud2lkdGhdPVwiY29sLndpZHRoIHx8IGdldEhlYWRlcldpZHRoKGNvbClcIlxuICAgICAgICAgICAgW3N0eWxlLnBhZGRpbmddPVwiJzBweCdcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwiW1xuICAgICAgICAgICAgICBnZXRIZWFkZXJBbGlnbkNsYXNzKGNvbCksXG4gICAgICAgICAgICAgIGNvbC50eXBlID09PSBUYWJsZVR5cGVFbnVtLkFDVElPTiA/ICdhY3Rpb24tY29sdW1uJyA6ICcnXG4gICAgICAgICAgICBdXCJcbiAgICAgICAgICAgIGNvbHNwYW49XCIxXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8IS0tIFNPUlRBQkxFIEhFQURFUiAtLT5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgKm5nSWY9XCJpc1NvcnRhYmxlICYmIGNvbC5pc1NvcnRhYmxlICE9PSBmYWxzZTsgZWxzZSBub1NvcnRIZWFkZXJcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJoZWFkZXItY29udGFpbmVyIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWJldHdlZW5cIlxuICAgICAgICAgICAgICAgIFtzdHlsZS53aWR0aF09XCJjb2wud2lkdGggfHwgZ2V0SGVhZGVyV2lkdGgoY29sKVwiXG4gICAgICAgICAgICAgICAgW3N0eWxlLnBhZGRpbmddPVwiJzBweCdcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS5tYXJnaW5dPVwiJzEwcHgnXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxzcGFuIFtuZ0NsYXNzXT1cImdldEhlYWRlclRpdGxlQ2xhc3MoY29sKVwiPlxuICAgICAgICAgICAgICAgICAge3sgY29sLnRpdGxlIH19XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnMgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgICAgICAgICAgICAgICBbc3R5bGUud2lkdGhdPVwiJzc3cHgnXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8cC1zb3J0SWNvbiBmaWVsZD1cInt7IGNvbC5jb2RlIH19XCIgLz5cblxuICAgICAgICAgICAgICAgICAgPCEtLSBDT0xVTU4gRklMVEVSUyAtLT5cbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJoYXNDb2x1bW5GaWx0ZXIgJiYgY29sLmlzRmlsdGVyICE9PSBmYWxzZVwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDwhLS0gQ09NUE9TRUQgRklMVEVSICh1c2VzIGJ1aWx0LWluIEFwcGx5L0NsZWFyKSAtLT5cbiAgICAgICAgICAgICAgICAgICAgPHAtY29sdW1uRmlsdGVyXG4gICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjb2wudHlwZSA9PT0gVGFibGVUeXBlRW51bS5DT01QT1NFRFwiXG4gICAgICAgICAgICAgICAgICAgICAgZGlzcGxheT1cIm1lbnVcIlxuICAgICAgICAgICAgICAgICAgICAgIFtmaWVsZF09XCJjb2wuY29kZVwiXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICAgIFtzaG93QXBwbHlCdXR0b25dPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgW3Nob3dDbGVhckJ1dHRvbl09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAob25DbGVhcik9XCJvbkNvbXBvc2VkQ29sdW1uQ2xlYXIoY29sKVwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgIHBUZW1wbGF0ZT1cImZpbHRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQtZmlsdGVyPVwiZmlsdGVyQ2FsbGJhY2tcIlxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0LWZpbHRlck1vZGVsPVwiZmlsdGVyTW9kZWxcIlxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGNvbXBvc2VkTmFtZSBvZiBjb2wuY29tcG9zZWROYW1lc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldENvbXBvc2VkRmllbGRUeXBlKGNvbCwgY29tcG9zZWROYW1lKSA9PT1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRhYmxlVHlwZUVudW0uU1RSSU5HXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwLW11bHRpU2VsZWN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJmaWx0ZXJzW2NvbXBvc2VkTmFtZV0/Lm9wdGlvbnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxdPVwiZmlsdGVyc1tjb21wb3NlZE5hbWVdPy52YWx1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Db21wb3NlZEZpbHRlclZhbHVlQ2hhbmdlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb3NlZE5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGV2ZW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlck1vZGVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiZmlsdGVyc1tjb21wb3NlZE5hbWVdPy5wbGFjZWhvbGRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5PVwiY2hpcFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIGxldC1pdGVtIHBUZW1wbGF0ZT1cIml0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImN1c3RvbS1tdWx0aXNlbGVjdC1pdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJpdGVtLmltYWdlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzcmNdPVwiaXRlbS5pbWFnZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ9XCJpY29uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmlsdGVyLWltYWdlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IGl0ZW0ubGFiZWwgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3AtbXVsdGlTZWxlY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgPC9wLWNvbHVtbkZpbHRlcj5cblxuICAgICAgICAgICAgICAgICAgICA8IS0tIE9USEVSIFRZUEVTIC0tPlxuICAgICAgICAgICAgICAgICAgICA8cC1jb2x1bW5GaWx0ZXJcbiAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNvbC50eXBlICE9PSBUYWJsZVR5cGVFbnVtLkNPTVBPU0VEXCJcbiAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5PVwibWVudVwiXG4gICAgICAgICAgICAgICAgICAgICAgW2ZpZWxkXT1cImNvbC5jb2RlXCJcbiAgICAgICAgICAgICAgICAgICAgICBbdHlwZV09XCJnZXRDb2x1bW5GaWx0ZXJUeXBlKGNvbClcIlxuICAgICAgICAgICAgICAgICAgICAgIFtzaG93QXBwbHlCdXR0b25dPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgW3Nob3dDbGVhckJ1dHRvbl09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAob25DbGVhcik9XCJvbkZpbHRlckNsZWFyKGNvbC5jb2RlISlcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgPCEtLSBOVU1CRVIgLyBBTU9VTlQ6IHVzZSB0ZXh0IGlucHV0IHNvICcuJyB3b3JrcyAtLT5cbiAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgIHBUZW1wbGF0ZT1cImZpbHRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjb2wudHlwZSA9PT0gVGFibGVUeXBlRW51bS5OVU1CRVIgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY29sLnR5cGUgPT09IFRhYmxlVHlwZUVudW0uQU1PVU5UXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0LXZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHBJbnB1dFRleHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dG1vZGU9XCJkZWNpbWFsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxdPVwibGF0ZXN0RmlsdGVyVmFsdWVzW2NvbC5jb2RlIV0gPz8gdmFsdWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbk51bWJlckZpbHRlckNoYW5nZShjb2wuY29kZSEsICRldmVudClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJFbnRlciBhIG51bWJlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgICAgICAgICAgICAgICAgICA8IS0tIERBVEUgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICBwVGVtcGxhdGU9XCJmaWx0ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjb2wudHlwZSA9PT0gVGFibGVUeXBlRW51bS5EQVRFXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldC1maWx0ZXJNb2RlbD1cImZpbHRlck1vZGVsXCJcbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cC1jYWxlbmRhclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXRlc3RGaWx0ZXJWYWx1ZXNbY29sLmNvZGUhXSA/PyBmaWx0ZXJNb2RlbD8udmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25GaWx0ZXJWYWx1ZUNoYW5nZShjb2wuY29kZSEsIGZpbHRlck1vZGVsLCAkZXZlbnQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVGb3JtYXQ9XCJkZC9tbS95eVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiQ2hvb3NlIGEgZGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9wLWNhbGVuZGFyPlxuICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgICAgICAgICAgICAgICAgICA8IS0tIE1VTFRJU0VMRUNUIC0tPlxuICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgcFRlbXBsYXRlPVwiZmlsdGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbC50eXBlID09PSBUYWJsZVR5cGVFbnVtLk1VTFRJU0VMRUNUICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbC5maWx0ZXJPcHRpb25zICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbC5maWx0ZXJPcHRpb25zLmxlbmd0aCA+IDBcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQtZmlsdGVyTW9kZWw9XCJmaWx0ZXJNb2RlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHAtbXVsdGlTZWxlY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwiY29sLmZpbHRlck9wdGlvbnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXRlc3RGaWx0ZXJWYWx1ZXNbY29sLmNvZGUhXSA/PyBmaWx0ZXJNb2RlbD8udmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25GaWx0ZXJWYWx1ZUNoYW5nZShjb2wuY29kZSEsIGZpbHRlck1vZGVsLCAkZXZlbnQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk9XCJjaGlwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJDaG9vc2Ugb3B0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjdXN0b20tbXVsdGlzZWxlY3RcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvcC1tdWx0aVNlbGVjdD5cbiAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICA8L3AtY29sdW1uRmlsdGVyPlxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgIDwhLS0gTk9OLVNPUlRBQkxFIEhFQURFUiAtLT5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbm9Tb3J0SGVhZGVyPlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJoZWFkZXItY29udGFpbmVyIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWJldHdlZW5cIlxuICAgICAgICAgICAgICAgIFtzdHlsZS53aWR0aF09XCJjb2wud2lkdGggfHwgZ2V0SGVhZGVyV2lkdGgoY29sKVwiXG4gICAgICAgICAgICAgICAgW3N0eWxlLnBhZGRpbmddPVwiJzBweCdcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS5tYXJnaW5dPVwiJzEwcHgnXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxzcGFuIFtuZ0NsYXNzXT1cImdldEhlYWRlclRpdGxlQ2xhc3MoY29sKVwiPlxuICAgICAgICAgICAgICAgICAge3sgY29sLnRpdGxlIH19XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImhhc0NvbHVtbkZpbHRlciAmJiBjb2wuaXNGaWx0ZXIgIT09IGZhbHNlXCI+XG4gICAgICAgICAgICAgICAgICA8IS0tIEFNT1VOVCBiZWhhdmVzIGxpa2UgTlVNQkVSIC0tPlxuICAgICAgICAgICAgICAgICAgPHAtY29sdW1uRmlsdGVyXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY29sLnR5cGUgPT09ICdBTU9VTlQnXCJcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheT1cIm1lbnVcIlxuICAgICAgICAgICAgICAgICAgICBbZmllbGRdPVwiY29sLmNvZGVcIlxuICAgICAgICAgICAgICAgICAgICBbdHlwZV09XCJnZXRDb2x1bW5GaWx0ZXJUeXBlKGNvbClcIlxuICAgICAgICAgICAgICAgICAgICBbY3VycmVuY3ldPVwiZ2V0Q3VycmVuY3lTeW1ib2woY29sKVwiXG4gICAgICAgICAgICAgICAgICAgIFtzaG93QXBwbHlCdXR0b25dPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgIFtzaG93Q2xlYXJCdXR0b25dPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgICAgICAgICAgIHBUZW1wbGF0ZT1cImZpbHRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgbGV0LWZpbHRlck1vZGVsPVwiZmlsdGVyTW9kZWxcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICBwSW5wdXRUZXh0XG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBpbnB1dG1vZGU9XCJkZWNpbWFsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBsYXRlc3RGaWx0ZXJWYWx1ZXNbY29sLmNvZGUhXSA/PyBmaWx0ZXJNb2RlbD8udmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb25GaWx0ZXJWYWx1ZUNoYW5nZShjb2wuY29kZSEsIGZpbHRlck1vZGVsLCAkZXZlbnQpXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJFbnRlciBhbiBhbW91bnRcIlxuICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICA8L3AtY29sdW1uRmlsdGVyPlxuXG4gICAgICAgICAgICAgICAgICA8cC1jb2x1bW5GaWx0ZXJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjb2wudHlwZSAhPT0gJ0FNT1VOVCdcIlxuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5PVwibWVudVwiXG4gICAgICAgICAgICAgICAgICAgIFtmaWVsZF09XCJjb2wuY29kZVwiXG4gICAgICAgICAgICAgICAgICAgIFt0eXBlXT1cImdldENvbHVtbkZpbHRlclR5cGUoY29sKVwiXG4gICAgICAgICAgICAgICAgICAgIFtzaG93QXBwbHlCdXR0b25dPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgIFtzaG93Q2xlYXJCdXR0b25dPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDwhLS0gREFURSAtLT5cbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgcFRlbXBsYXRlPVwiZmlsdGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICBsZXQtZmlsdGVyTW9kZWw9XCJmaWx0ZXJNb2RlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJnZXRDb2x1bW5GaWx0ZXJUeXBlKGNvbCkgPT09ICdkYXRlJ1wiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8cC1jYWxlbmRhclxuICAgICAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxhdGVzdEZpbHRlclZhbHVlc1tjb2wuY29kZSFdID8/IGZpbHRlck1vZGVsPy52YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBvbkZpbHRlclZhbHVlQ2hhbmdlKGNvbC5jb2RlISwgZmlsdGVyTW9kZWwsICRldmVudClcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRlRm9ybWF0PVwiZGQvbW0veXlcIlxuICAgICAgICAgICAgICAgICAgICAgID48L3AtY2FsZW5kYXI+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgICAgICAgICAgICAgICAgPCEtLSBNVUxUSVNFTEVDVCAtLT5cbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgcFRlbXBsYXRlPVwiZmlsdGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICBsZXQtZmlsdGVyTW9kZWw9XCJmaWx0ZXJNb2RlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJnZXRDb2x1bW5GaWx0ZXJUeXBlKGNvbCkgPT09ICdtdWx0aVNlbGVjdCdcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgPHAtbXVsdGlTZWxlY3RcbiAgICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cImNvbC5maWx0ZXJPcHRpb25zXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBsYXRlc3RGaWx0ZXJWYWx1ZXNbY29sLmNvZGUhXSA/PyBmaWx0ZXJNb2RlbD8udmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb25GaWx0ZXJWYWx1ZUNoYW5nZShjb2wuY29kZSEsIGZpbHRlck1vZGVsLCAkZXZlbnQpXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheT1cImNoaXBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWxlY3RcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjdXN0b20tbXVsdGlzZWxlY3RcIlxuICAgICAgICAgICAgICAgICAgICAgID48L3AtbXVsdGlTZWxlY3Q+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICA8L3AtY29sdW1uRmlsdGVyPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPC90aD5cblxuICAgICAgICAgIDwhLS0gR1JPVVBFRCBIRUFERVIgLS0+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNncm91cEhlYWRlcj5cbiAgICAgICAgICAgIDx0aFxuICAgICAgICAgICAgICBbYXR0ci5jb2xzcGFuXT1cImNvbC5jaGlsZHJlbj8ubGVuZ3RoXCJcbiAgICAgICAgICAgICAgW3N0eWxlLndpZHRoXT1cImNvbC53aWR0aCB8fCBnZXRIZWFkZXJXaWR0aChjb2wpXCJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiZ2V0SGVhZGVyQWxpZ25DbGFzcyhjb2wpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHNwYW4+e3sgY29sLnRpdGxlIH19PC9zcGFuPlxuICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvdHI+XG5cbiAgICAgIDwhLS0gQ0hJTEQgSEVBREVSUyAtLT5cbiAgICAgIDx0ciAqbmdJZj1cImhhc0dyb3VwZWRDb2x1bW5zXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGNvbCBvZiBjb2x1bW5zXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbC5jaGlsZHJlblwiPlxuICAgICAgICAgICAgPHRoXG4gICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBjaGlsZCBvZiBjb2wuY2hpbGRyZW5cIlxuICAgICAgICAgICAgICBbc3R5bGUud2lkdGhdPVwiY2hpbGQud2lkdGggfHwgZ2V0SGVhZGVyV2lkdGgoY2hpbGQpXCJcbiAgICAgICAgICAgICAgW3N0eWxlLnBhZGRpbmddPVwiJzBweCdcIlxuICAgICAgICAgICAgPjwvdGg+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC90cj5cbiAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgPCEtLSBFTVBUWSBNRVNTQUdFIC0tPlxuICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJlbXB0eW1lc3NhZ2VcIj5cbiAgICAgIDx0ciBjbGFzcz1cInAtZGF0YXRhYmxlLWVtcHR5bWVzc2FnZVwiPlxuICAgICAgICA8IS0tIHNwYW4gYWxsIGNvbHVtbnMgLS0+XG4gICAgICAgIDx0ZCBjbGFzcz1cImVtcHR5LW1lc3NhZ2UtY2VsbFwiIFthdHRyLmNvbHNwYW5dPVwiY29sdW1ucy5sZW5ndGggfHwgMVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJlbXB0eS1tZXNzYWdlLXdyYXBwZXJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJlbXB0eS1tZXNzYWdlXCI+XG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwicGkgcGktaW5mby1jaXJjbGVcIj48L2k+XG4gICAgICAgICAgICAgIDxwPk5vIHJlY29yZHMgYXZhaWxhYmxlIHRvIGRpc3BsYXkuPC9wPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvdGQ+XG4gICAgICA8L3RyPlxuICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICA8IS0tIEJPRFkgLS0+XG4gICAgPG5nLXRlbXBsYXRlXG4gICAgICBwVGVtcGxhdGU9XCJib2R5XCJcbiAgICAgIGxldC1kYXRhXG4gICAgICBsZXQtZWRpdGluZz1cImVkaXRpbmdcIlxuICAgICAgbGV0LXJpPVwicm93SW5kZXhcIlxuICAgID5cbiAgICAgIDx0ciAqbmdJZj1cIiFsb2FkaW5nXCIgW3BFZGl0YWJsZVJvd109XCJpc0VkaXQgPyBkYXRhIDogbnVsbFwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjb2wgb2YgY29sdW1uc1wiPlxuICAgICAgICAgIDwhLS0gU0lNUExFIENPTFVNTlMgKG5vIGNoaWxkcmVuKSAtLT5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWNvbC5jaGlsZHJlbjsgZWxzZSBjaGlsZENvbHVtbnNcIj5cbiAgICAgICAgICAgIDwhLS0gRURJVEFCTEUgQ0VMTCAtLT5cbiAgICAgICAgICAgIDx0ZFxuICAgICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICAgIGlzRWRpdGFibGUoY29sLmNvZGUhKSAmJiBjb2wudHlwZSAhPT0gVGFibGVUeXBlRW51bS5BQ1RJT047XG4gICAgICAgICAgICAgICAgZWxzZSBub3JtYWxURFxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICBbc3R5bGUud2lkdGhdPVwiY29sLndpZHRoIHx8IGdldEhlYWRlcldpZHRoKGNvbClcIlxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJnZXREYXRhQWxpZ25DbGFzcyhjb2wpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPCEtLSBFZGl0YWJsZSBpbnB1dCBmb3IgTlVNQkVSL0RBVEUvU1RSSU5HL01VTFRJU0VMRUNUIC0tPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNNdWx0aVNlbGVjdChjb2wuY29kZSk7IGVsc2UgZGF0ZVBpY2tlclwiPlxuICAgICAgICAgICAgICAgIDxwLWNlbGxFZGl0b3I+XG4gICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiaW5wdXRcIj5cbiAgICAgICAgICAgICAgICAgICAgPHAtbXVsdGlTZWxlY3RcbiAgICAgICAgICAgICAgICAgICAgICBhcHBlbmRUbz1cImJvZHlcIlxuICAgICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cImRhdGFbY29sLmNvZGUhXVwiXG4gICAgICAgICAgICAgICAgICAgICAgW3N0eWxlXT1cInsgd2lkdGg6ICcxMDAlJyB9XCJcbiAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJjaGFuZ2VIYW5kbGVyKGRhdGEuaWQsIGNvbC5jb2RlLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJvcHRpb25WYWx1ZXNcIlxuICAgICAgICAgICAgICAgICAgICA+PC9wLW11bHRpU2VsZWN0PlxuICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJvdXRwdXRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm11bHRpLXNlbGVjdC1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCByZWMgb2YgZGF0YVtjb2wuY29kZSFdXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cC10YWcgW3ZhbHVlXT1cInJlY1wiPjwvcC10YWc+XG4gICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8L3AtY2VsbEVkaXRvcj5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNkYXRlUGlja2VyPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc0RhdGVQaWNrZXIoY29sLmNvZGUpOyBlbHNlIG5vcm1hbElucHV0XCI+XG4gICAgICAgICAgICAgICAgICA8cC1jZWxsRWRpdG9yPlxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiaW5wdXRcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8cC1jYWxlbmRhclxuICAgICAgICAgICAgICAgICAgICAgICAgW2lucHV0SWRdPVwiZGF0YVtjb2wuY29kZSFdXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cImRhdGFbY29sLmNvZGUhXVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlSGFuZGxlcihkYXRhLmlkLCBjb2wuY29kZSwgJGV2ZW50KVxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkYXRlRm9ybWF0XT1cIidkZC9tbS95eSdcIlxuICAgICAgICAgICAgICAgICAgICAgID48L3AtY2FsZW5kYXI+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJvdXRwdXRcIj5cbiAgICAgICAgICAgICAgICAgICAgICB7eyBkYXRhW2NvbC5jb2RlIV0gfCBjdXN0b21EYXRlIH19XG4gICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICA8L3AtY2VsbEVkaXRvcj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI25vcm1hbElucHV0PlxuICAgICAgICAgICAgICAgIDxwLWNlbGxFZGl0b3I+XG4gICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiaW5wdXRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgcElucHV0VGV4dFxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJkYXRhW2NvbC5jb2RlIV1cIlxuICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwib25DaGFuZ2UoJGV2ZW50LCBkYXRhLmlkLCBjb2wuY29kZSlcIlxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJvdXRwdXRcIj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2wudHlwZSA9PT0gVGFibGVUeXBlRW51bS5BTU9VTlQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIG5vcm1hbE91dHB1dFxuICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVtjb2wuY29kZSFdXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgY3VzdG9tQ3VycmVuY3lcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGdldEN1cnJlbmN5U3ltYm9sKGNvbClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGNvbC5kZWNpbWFsUGxhY2VzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBjb2wudGhvdXNhbmRTZXBhcmF0b3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGNvbC5kZWNpbWFsU2VwYXJhdG9yXG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbm9ybWFsT3V0cHV0PlxuICAgICAgICAgICAgICAgICAgICAgIHt7IGRhdGFbY29sLmNvZGUhXSB9fVxuICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8L3AtY2VsbEVkaXRvcj5cbiAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwvdGQ+XG5cbiAgICAgICAgICAgIDwhLS0gTk9OLUVESVRBQkxFIENFTEwgKEFMV0FZUyBSRU5ERVJFRCkgLS0+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI25vcm1hbFREPlxuICAgICAgICAgICAgICA8dGRcbiAgICAgICAgICAgICAgICBbc3R5bGUud2lkdGhdPVwiY29sLndpZHRoIHx8IGdldEhlYWRlcldpZHRoKGNvbClcIlxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIltcbiAgICAgICAgICAgICAgICAgIGdldERhdGFBbGlnbkNsYXNzKGNvbCksXG4gICAgICAgICAgICAgICAgICBjb2wudHlwZSA9PT0gVGFibGVUeXBlRW51bS5BQ1RJT04gPyAnYWN0aW9uLWNvbHVtbicgOiAnJ1xuICAgICAgICAgICAgICAgIF1cIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPCEtLSBBQ1RJT04gY29sdW1uOiBidWlsdC1pbiBlZGl0L2RlbGV0ZSArIGN1c3RvbSBhY3Rpb25zIC0tPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY29sLnR5cGUgPT09IFRhYmxlVHlwZUVudW0uQUNUSU9OOyBlbHNlIG5vbkFjdGlvbkNlbGxcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhY3Rpb24tYnV0dG9ucy1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPCEtLSBidWlsdC1pbiBkZWxldGUgLS0+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImlzRGVsZXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICBwQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgcFJpcHBsZVxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgIGljb249XCJwaSBwaS10cmFzaFwiXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIkRlbGV0ZShkYXRhLmlkKVwiXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwLWJ1dHRvbi1yb3VuZGVkIHAtYnV0dG9uLXRleHRcIlxuICAgICAgICAgICAgICAgICAgICA+PC9idXR0b24+XG5cbiAgICAgICAgICAgICAgICAgICAgPCEtLSBidWlsdC1pbiBpbmxpbmUgZWRpdCAtLT5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImlzRWRpdFwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIHBJbml0RWRpdGFibGVSb3dcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWVkaXRpbmdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgcEJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgcFJpcHBsZVxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICBpY29uPVwicGkgcGktcGVuY2lsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJpbml0RWRpdGFibGVSb3coZGF0YSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwLWJ1dHRvbi1yb3VuZGVkIHAtYnV0dG9uLXRleHRcIlxuICAgICAgICAgICAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImVkaXRpbmdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgcFNhdmVFZGl0YWJsZVJvd1xuICAgICAgICAgICAgICAgICAgICAgICAgcEJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgcFJpcHBsZVxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICBpY29uPVwicGkgcGktY2hlY2tcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNhdmVFZGl0YWJsZVJvdyhkYXRhKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInAtYnV0dG9uLXJvdW5kZWQgcC1idXR0b24tdGV4dFwiXG4gICAgICAgICAgICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZWRpdGluZ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBwQ2FuY2VsRWRpdGFibGVSb3dcbiAgICAgICAgICAgICAgICAgICAgICAgIHBCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIHBSaXBwbGVcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbj1cInBpIHBpLXRpbWVzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjYW5jZWxFZGl0YWJsZVJvdyhkYXRhKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInAtYnV0dG9uLXJvdW5kZWQgcC1idXR0b24tdGV4dFwiXG4gICAgICAgICAgICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICA8IS0tIGN1c3RvbSBhY3Rpb25zIC0tPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGFjdCBvZiBjdXN0b21BY3Rpb25zXCJcbiAgICAgICAgICAgICAgICAgICAgICBwQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgcFJpcHBsZVxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicC1idXR0b24tcm91bmRlZCBwLWJ1dHRvbi10ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICBbaWNvbl09XCJhY3QuaWNvbiB8fCAncGkgcGktZWxsaXBzaXMtaCdcIlxuICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImFjdC5zdHlsZUNsYXNzXCJcbiAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25DdXN0b21BY3Rpb25DbGljayhhY3QsIGRhdGEpXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICA8IS0tIE5PTi1BQ1RJT04gY2VsbHMgLS0+XG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNub25BY3Rpb25DZWxsPlxuICAgICAgICAgICAgICAgICAgPCEtLSBDT01QT1NFRCAtLT5cbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgICAgICAgICBjb2wudHlwZSA9PT0gVGFibGVUeXBlRW51bS5DT01QT1NFRDtcbiAgICAgICAgICAgICAgICAgICAgICBlbHNlIG5vbkNvbXBvc2VkXG4gICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb21wb3NlZC1jZWxsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjb21wb3NlZE5hbWUgb2YgY29sLmNvbXBvc2VkTmFtZXM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpID0gaW5kZXhcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBJTUFHRSAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2wuY29tcG9zZWRUeXBlcyAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbC5jb21wb3NlZFR5cGVzW2ldID09PSBUYWJsZVR5cGVFbnVtLklNQUdFXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3JjXT1cImRhdGFbY29sLmNvZGUhXT8uW2NvbXBvc2VkTmFtZV1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdD1cImNvbXBvc2VkLWltZ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjb21wb3NlZC1pbWFnZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nU3R5bGVdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRJbWFnZVN0eWxlKGNvbC5jb21wb3NlZFN0eWxlcz8uW2NvbXBvc2VkTmFtZV0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFNUUklORyAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2wuY29tcG9zZWRUeXBlcyAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbC5jb21wb3NlZFR5cGVzW2ldID09PSBUYWJsZVR5cGVFbnVtLlNUUklOR1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY29tcG9zZWQtdGV4dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nU3R5bGVdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRUaXRsZVN0eWxlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2wuY29tcG9zZWRTdHlsZXM/Lltjb21wb3NlZE5hbWVdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGRhdGFbY29sLmNvZGUhXT8uW2NvbXBvc2VkTmFtZV0gfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbm9uQ29tcG9zZWQ+XG4gICAgICAgICAgICAgICAgICAgIDwhLS0gQU1PVU5ULS0+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNvbC50eXBlID09PSBUYWJsZVR5cGVFbnVtLkFNT1VOVDsgZWxzZSBub25BbW91bnRcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFbY29sLmNvZGUhXVxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IGN1c3RvbUN1cnJlbmN5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBnZXRDdXJyZW5jeVN5bWJvbChjb2wpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBjb2wuZGVjaW1hbFBsYWNlc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogY29sLnRob3VzYW5kU2VwYXJhdG9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBjb2wuZGVjaW1hbFNlcGFyYXRvclxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbm9uQW1vdW50PlxuICAgICAgICAgICAgICAgICAgICAgIDwhLS0gTlVNQkVSLS0+XG4gICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY29sLnR5cGUgPT09IFRhYmxlVHlwZUVudW0uTlVNQkVSO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIG5vbk51bWJlclxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXROdW1iZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVtjb2wuY29kZSFdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbC5kZWNpbWFsUGxhY2VzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbC50aG91c2FuZFNlcGFyYXRvcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2wuZGVjaW1hbFNlcGFyYXRvclxuICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNub25OdW1iZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIERBVEUgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sLnR5cGUgPT09IFRhYmxlVHlwZUVudW0uREFURTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIG5vcm1hbFR5cGVzXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGZvcm1hdERhdGUoZGF0YVtjb2wuY29kZSFdKSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbm9ybWFsVHlwZXM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gU1RSSU5HLCBNVUxUSVNFTEVDVC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGFibGVUeXBlRW51bS5TVFJJTkcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRhYmxlVHlwZUVudW0uTVVMVElTRUxFQ1RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0uaW5jbHVkZXMoY29sLnR5cGUhKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBkYXRhW2NvbC5jb2RlIV0gfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgPCEtLSBDSElMRCBDT0xVTU5TIC0tPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjY2hpbGRDb2x1bW5zPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY2hpbGQgb2YgY29sLmNoaWxkcmVuXCI+XG4gICAgICAgICAgICAgIDx0ZFxuICAgICAgICAgICAgICAgIFtzdHlsZS53aWR0aF09XCJjaGlsZC53aWR0aCB8fCBnZXRIZWFkZXJXaWR0aChjaGlsZClcIlxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImdldERhdGFBbGlnbkNsYXNzKGNoaWxkKVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cImlzRWRpdGFibGUoY2hpbGQuY29kZSk7IGVsc2UgY2hpbGROb3JtYWxURFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPHAtY2VsbEVkaXRvcj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImlucHV0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICBwSW5wdXRUZXh0XG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJjaGlsZC5jb2RlID8gZGF0YVtjaGlsZC5jb2RlXSA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJvbkNoYW5nZSgkZXZlbnQsIGRhdGEuaWQsIGNoaWxkLmNvZGUpXCJcbiAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwib3V0cHV0XCI+XG4gICAgICAgICAgICAgICAgICAgICAge3sgY2hpbGQuY29kZSA/IGRhdGFbY2hpbGQuY29kZV0gOiBcIlwiIH19XG4gICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICA8L3AtY2VsbEVkaXRvcj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjY2hpbGROb3JtYWxURD5cbiAgICAgICAgICAgICAgICAgIHt7IGNoaWxkLmNvZGUgPyBkYXRhW2NoaWxkLmNvZGVdIDogXCJcIiB9fVxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvdHI+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9wLXRhYmxlPlxuPC9kaXY+XG4iXX0=
|
|
766
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHQtYWR2YW5jZWQtcHJpbWUtdGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctcHJpbWUtdG9vbHMvc3JjL2xpYi9wdC1hZHZhbmNlZC1wcmltZS10YWJsZS9wdC1hZHZhbmNlZC1wcmltZS10YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1wcmltZS10b29scy9zcmMvbGliL3B0LWFkdmFuY2VkLXByaW1lLXRhYmxlL3B0LWFkdmFuY2VkLXByaW1lLXRhYmxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU3QyxPQUFPLEVBQ0wsU0FBUyxFQUdULGFBQWEsR0FFZCxNQUFNLGtCQUFrQixDQUFDO0FBQzFCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7QUFleEQsTUFBTSxPQUFPLDZCQUE2QjtJQWtFeEM7UUFqRUEsU0FBUztRQUNBLFNBQUksR0FBVSxFQUFFLENBQUM7UUFDakIsWUFBTyxHQUFrQixFQUFFLENBQUM7UUFDNUIsaUJBQVksR0FBRyxDQUFDLENBQUM7UUFDakIsZ0JBQVcsR0FBYSxFQUFFLENBQUM7UUFDM0Isb0JBQWUsR0FBRyxLQUFLLENBQUM7UUFDeEIsbUJBQWMsR0FBRyxLQUFLLENBQUM7UUFDdkIsaUJBQVksR0FBRyxLQUFLLENBQUM7UUFDckIsb0JBQWUsR0FBRyxLQUFLLENBQUM7UUFDeEIsZ0JBQVcsR0FBRyxLQUFLLENBQUM7UUFFcEIsWUFBTyxHQUEwQixFQUFFLENBQUM7UUFFcEMsZUFBVSxHQUFHLEtBQUssQ0FBQztRQUNuQixZQUFP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VUFBVTtzQkFBbEIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFHSSxNQUFNO3NCQUFmLE1BQU07Z0JBQ0csZ0JBQWdCO3NCQUF6QixNQUFNO2dCQUNHLGNBQWM7c0JBQXZCLE1BQU07Z0JBQ0csWUFBWTtzQkFBckIsTUFBTTtnQkFDRyxZQUFZO3NCQUFyQixNQUFNO2dCQUNHLGNBQWM7c0JBQXZCLE1BQU07Z0JBRTZCLEVBQUU7c0JBQXJDLFNBQVM7dUJBQUMsSUFBSSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVGFibGUgfSBmcm9tICdwcmltZW5nL3RhYmxlJztcbmltcG9ydCB7XG4gIEFsaWduRW51bSxcbiAgSW1hZ2VTdHlsZSxcbiAgVGFibGVDb2x1bW4sXG4gIFRhYmxlVHlwZUVudW0sXG4gIFRpdGxlU3R5bGUsXG59IGZyb20gJy4uLy4uL3B1YmxpYy1hcGknO1xuaW1wb3J0IHsgY2FsY3VsYXRlVGV4dFdpZHRoIH0gZnJvbSAnLi4vdXRpbHMvdGV4dC51dGlsJztcblxuZXhwb3J0IGludGVyZmFjZSBQVFRhYmxlQWN0aW9uQ29uZmlnIHtcbiAgY29kZTogc3RyaW5nO1xuICBpY29uPzogc3RyaW5nO1xuICBzdHlsZUNsYXNzPzogc3RyaW5nO1xuICB0b29sdGlwPzogc3RyaW5nO1xuICBhY3Rpb246IGFueTtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncHQtYWR2YW5jZWQtcHJpbWUtdGFibGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vcHQtYWR2YW5jZWQtcHJpbWUtdGFibGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vcHQtYWR2YW5jZWQtcHJpbWUtdGFibGUuY29tcG9uZW50LmNzcycsXG59KVxuZXhwb3J0IGNsYXNzIFBUQWR2YW5jZWRQcmltZVRhYmxlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgLy8gSW5wdXRzXG4gIEBJbnB1dCgpIGRhdGE6IGFueVtdID0gW107XG4gIEBJbnB1dCgpIGNvbHVtbnM6IFRhYmxlQ29sdW1uW10gPSBbXTtcbiAgQElucHV0KCkgdG90YWxSZWNvcmRzID0gMDtcbiAgQElucHV0KCkgcm93c1BlclBhZ2U6IG51bWJlcltdID0gW107XG4gIEBJbnB1dCgpIGhhc1NlYXJjaEZpbHRlciA9IGZhbHNlO1xuICBASW5wdXQoKSBoYXNFeHBvcnRFeGNlbCA9IGZhbHNlO1xuICBASW5wdXQoKSBoYXNFeHBvcnRQREYgPSBmYWxzZTtcbiAgQElucHV0KCkgaGFzQ29sdW1uRmlsdGVyID0gZmFsc2U7XG4gIEBJbnB1dCgpIGlzUGFnaW5hdGVkID0gZmFsc2U7XG5cbiAgQElucHV0KCkgYWN0aW9uczogUFRUYWJsZUFjdGlvbkNvbmZpZ1tdID0gW107XG5cbiAgQElucHV0KCkgaXNTb3J0YWJsZSA9IGZhbHNlO1xuICBASW5wdXQoKSBsb2FkaW5nID0gZmFsc2U7XG4gIEBJbnB1dCgpIG1heEhlaWdodDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG5cbiAgLy8gT3V0cHV0c1xuICBAT3V0cHV0KCkgc2VhcmNoID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gIEBPdXRwdXQoKSBleHBvcnRFeGNlbEV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBAT3V0cHV0KCkgZXhwb3J0UGRmRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBPdXRwdXQoKSBvblBhZ2VDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHsgcGFnZTogbnVtYmVyOyByb3dzOiBudW1iZXIgfT4oKTtcbiAgQE91dHB1dCgpIG9uU29ydENvbHVtbiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgb25GaWx0ZXJDb2x1bW4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBAVmlld0NoaWxkKCdkdCcsIHsgc3RhdGljOiBmYWxzZSB9KSBkdCE6IFRhYmxlO1xuXG4gIHB1YmxpYyBUYWJsZVR5cGVFbnVtID0gVGFibGVUeXBlRW51bTtcbiAgcHVibGljIEFsaWduRW51bSA9IEFsaWduRW51bTtcblxuICBzZWFyY2hWYWx1ZSA9ICcnO1xuXG4gIC8vIHVzZWQgdG8gc3RvcmUgY29tcG9zZWQgZmlsdGVyIFVJIHN0YXRlIChhbmQgb3B0aW9ucylcbiAgcHVibGljIGZpbHRlcnM6IHsgW2tleTogc3RyaW5nXTogYW55IH0gPSB7fTtcblxuICAvLyBzdG9yZSB0aGUgbGFzdCBmaWx0ZXIgdmFsdWUgcGVyIGNvbHVtbiBmaWVsZCAoZm9yIGFsbCBmaWx0ZXJzKVxuICBsYXRlc3RGaWx0ZXJWYWx1ZXM6IHsgW2ZpZWxkOiBzdHJpbmddOiBhbnkgfSA9IHt9O1xuXG4gIHByaXZhdGUgY2xlYXJlZEZpZWxkcyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuXG4gIHByaXZhdGUgdmFsaWRDdXJyZW5jeUNvZGVzID0gWydVU0QnLCAnRVVSJywgJ01BRCddO1xuICBpY29uV2lkdGggPSA3NztcblxuICAvLyBDb21wb25lbnQgc3RhdGVcbiAgcm93cyA9IDA7XG4gIGhhc0dyb3VwZWRDb2x1bW5zID0gZmFsc2U7XG5cbiAgLy8gZWRpdC9kZWxldGUgZmxhZ3NcbiAgaXNEZWxldGUgPSBmYWxzZTtcbiAgaXNFZGl0ID0gZmFsc2U7XG5cbiAgRGVsZXRlOiAodmFsdWU6IGFueSkgPT4gdm9pZCA9ICgpID0+IHt9O1xuICBpbml0RWRpdGFibGVSb3c6IChkYXRhOiBhbnkpID0+IHZvaWQgPSAoKSA9PiB7fTtcbiAgc2F2ZUVkaXRhYmxlUm93OiAoZGF0YTogYW55KSA9PiB2b2lkID0gKCkgPT4ge307XG4gIGNhbmNlbEVkaXRhYmxlUm93OiAoaXRlbTogYW55KSA9PiB2b2lkID0gKCkgPT4ge307XG5cbiAgY3VzdG9tQWN0aW9uczogUFRUYWJsZUFjdGlvbkNvbmZpZ1tdID0gW107XG5cbiAgLy8gRGF0YSBtYW5hZ2VtZW50XG4gIGRhdGFNYXAgPSBuZXcgTWFwPGFueSwgYW55PigpO1xuICBtYXAgPSBuZXcgTWFwPGFueSwgTWFwPGFueSwgYW55Pj4oKTtcbiAgb3B0aW9uRW50cmllcyA9IG5ldyBNYXA8c3RyaW5nLCBhbnlbXT4oKTtcbiAgb3B0aW9uVmFsdWVzOiBhbnlbXSA9IFtdO1xuICBnbG9iYWxGaWx0ZXJGaWVsZHM6IHN0cmluZ1tdID0gW107XG5cbiAgY29uc3RydWN0b3IoKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuaGFzR3JvdXBlZENvbHVtbnMgPSB0aGlzLmNvbHVtbnMuc29tZShcbiAgICAgIChjb2wpID0+IGNvbC5jaGlsZHJlbiAmJiBjb2wuY2hpbGRyZW4ubGVuZ3RoID4gMFxuICAgICk7XG5cbiAgICB0aGlzLmdsb2JhbEZpbHRlckZpZWxkcyA9IHRoaXMuY29sdW1uc1xuICAgICAgLmZpbHRlcigoY29sKSA9PiBjb2wuY29kZSAhPT0gdW5kZWZpbmVkICYmIGNvbC5pc0ZpbHRlciAhPT0gZmFsc2UpXG4gICAgICAubWFwKChjb2wpID0+IGNvbC5jb2RlIGFzIHN0cmluZyk7XG5cbiAgICB0aGlzLmluaXRpYWxpemVQYWdpbmF0aW9uKCk7XG4gICAgdGhpcy5pbml0aWFsaXplQWN0aW9ucygpO1xuXG4gICAgdGhpcy5jb2x1bW5zLmZvckVhY2goKGNvbCkgPT4ge1xuICAgICAgaWYgKGNvbC50eXBlID09PSBUYWJsZVR5cGVFbnVtLkFDVElPTikge1xuICAgICAgICBjb2wuaXNFZGl0YWJsZSA9IGZhbHNlO1xuICAgICAgICBjb2wuaXNGaWx0ZXIgPSBmYWxzZTtcbiAgICAgICAgY29sLmlzU29ydGFibGUgPSBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgaWYgKGNvbC50eXBlID09PSBUYWJsZVR5cGVFbnVtLkNPTVBPU0VEKSB7XG4gICAgICAgIHRoaXMuaW5pdGlhbGl6ZUNvbXBvc2VkRmlsdGVycyhjb2wpO1xuICAgICAgfVxuXG4gICAgICBpZiAoY29sLmlzU29ydGFibGUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjb2wuaXNTb3J0YWJsZSA9IHRydWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChjb2wuaXNFZGl0YWJsZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGNvbC5pc0VkaXRhYmxlID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKGNvbC5pc0ZpbHRlciAhPT0gZmFsc2UgJiYgY29sLmNvZGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLmdsb2JhbEZpbHRlckZpZWxkcy5wdXNoKGNvbC5jb2RlKTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFjb2wud2lkdGgpIHtcbiAgICAgICAgY29sLndpZHRoID0gdGhpcy5jYWxjdWxhdGVDb2x1bW5XaWR0aChjb2wpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLy8gLS0tLS0tLS0tLSBIRUFERVIgKyBCT0RZIEFMSUdOTUVOVCBIRUxQRVJTIC0tLS0tLS0tLS1cblxuICBnZXRIZWFkZXJUaXRsZUNsYXNzKGNvbDogVGFibGVDb2x1bW4pOiBzdHJpbmcge1xuICAgIGNvbnN0IGFsaWduID0gY29sLmhlYWRlckFsaWduID8/IEFsaWduRW51bS5MRUZUO1xuICAgIHN3aXRjaCAoYWxpZ24pIHtcbiAgICAgIGNhc2UgQWxpZ25FbnVtLkNFTlRFUjpcbiAgICAgICAgcmV0dXJuICdoZWFkZXItdGl0bGUtY2VudGVyJztcbiAgICAgIGNhc2UgQWxpZ25FbnVtLlJJR0hUOlxuICAgICAgICByZXR1cm4gJ2hlYWRlci10aXRsZS1yaWdodCc7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gJ2hlYWRlci10aXRsZS1sZWZ0JztcbiAgICB9XG4gIH1cblxuICBnZXRIZWFkZXJBbGlnbkNsYXNzKGNvbDogVGFibGVDb2x1bW4pOiBzdHJpbmcge1xuICAgIGNvbnN0IGFsaWduID0gY29sLmhlYWRlckFsaWduID8/IEFsaWduRW51bS5MRUZUO1xuICAgIHN3aXRjaCAoYWxpZ24pIHtcbiAgICAgIGNhc2UgQWxpZ25FbnVtLkNFTlRFUjpcbiAgICAgICAgcmV0dXJuICdoZWFkZXItYWxpZ24tY2VudGVyJztcbiAgICAgIGNhc2UgQWxpZ25FbnVtLlJJR0hUOlxuICAgICAgICByZXR1cm4gJ2hlYWRlci1hbGlnbi1yaWdodCc7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gJ2hlYWRlci1hbGlnbi1sZWZ0JztcbiAgICB9XG4gIH1cblxuICBnZXREYXRhQWxpZ25DbGFzcyhjb2w6IFRhYmxlQ29sdW1uKTogc3RyaW5nIHtcbiAgICBjb25zdCBlZmZlY3RpdmVBbGlnbiA9XG4gICAgICBjb2wuZGF0YUFsaWduID8/XG4gICAgICAoY29sLnR5cGUgPT09IFRhYmxlVHlwZUVudW0uTlVNQkVSIHx8IGNvbC50eXBlID09PSBUYWJsZVR5cGVFbnVtLkFNT1VOVFxuICAgICAgICA/IEFsaWduRW51bS5SSUdIVFxuICAgICAgICA6IEFsaWduRW51bS5MRUZUKTtcblxuICAgIHN3aXRjaCAoZWZmZWN0aXZlQWxpZ24pIHtcbiAgICAgIGNhc2UgQWxpZ25FbnVtLkNFTlRFUjpcbiAgICAgICAgcmV0dXJuICdjZWxsLWFsaWduLWNlbnRlcic7XG4gICAgICBjYXNlIEFsaWduRW51bS5SSUdIVDpcbiAgICAgICAgcmV0dXJuICdjZWxsLWFsaWduLXJpZ2h0JztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAnY2VsbC1hbGlnbi1sZWZ0JztcbiAgICB9XG4gIH1cblxuICAvLyAtLS0tLS0tLS0tIEFDVElPTlMgSU5JVElBTElaQVRJT04gLS0tLS0tLS0tLVxuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZUFjdGlvbnMoKTogdm9pZCB7XG4gICAgdGhpcy5pc0RlbGV0ZSA9IGZhbHNlO1xuICAgIHRoaXMuaXNFZGl0ID0gZmFsc2U7XG4gICAgdGhpcy5EZWxldGUgPSAoKSA9PiB7fTtcbiAgICB0aGlzLmluaXRFZGl0YWJsZVJvdyA9ICgpID0+IHt9O1xuICAgIHRoaXMuc2F2ZUVkaXRhYmxlUm93ID0gKCkgPT4ge307XG4gICAgdGhpcy5jYW5jZWxFZGl0YWJsZVJvdyA9ICgpID0+IHt9O1xuICAgIHRoaXMuY3VzdG9tQWN0aW9ucyA9IFtdO1xuXG4gICAgaWYgKCF0aGlzLmFjdGlvbnMgfHwgdGhpcy5hY3Rpb25zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuYWN0aW9ucy5mb3JFYWNoKChhY3Rpb24pID0+IHtcbiAgICAgIHN3aXRjaCAoYWN0aW9uLmNvZGUpIHtcbiAgICAgICAgY2FzZSAnZGVsZXRlJzpcbiAgICAgICAgICB0aGlzLmlzRGVsZXRlID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLkRlbGV0ZSA9ICh2YWx1ZTogYW55KSA9PiBhY3Rpb24uYWN0aW9uKHZhbHVlKTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdlZGl0JzpcbiAgICAgICAgICB0aGlzLmluaXRpYWxpemVFZGl0QWN0aW9ucyhhY3Rpb24pO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgdGhpcy5jdXN0b21BY3Rpb25zLnB1c2goYWN0aW9uKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZUVkaXRBY3Rpb25zKGFjdGlvbjogUFRUYWJsZUFjdGlvbkNvbmZpZyk6IHZvaWQge1xuICAgIHRoaXMuaXNFZGl0ID0gdHJ1ZTtcbiAgICB0aGlzLmluaXRFZGl0YWJsZVJvdyA9IChkYXRhOiBhbnkpID0+IGFjdGlvbi5hY3Rpb24uaW5pdChkYXRhKTtcbiAgICB0aGlzLnNhdmVFZGl0YWJsZVJvdyA9IChkYXRhOiBhbnkpID0+IHtcbiAgICAgIGNvbnN0IHJlY29yZCA9IHRoaXMubWFwLmdldChkYXRhLmlkKTtcbiAgICAgIGFjdGlvbi5hY3Rpb24uc2F2ZShkYXRhLCByZWNvcmQpO1xuICAgICAgdGhpcy5kYXRhTWFwLmNsZWFyKCk7XG4gICAgfTtcbiAgICB0aGlzLmNhbmNlbEVkaXRhYmxlUm93ID0gKGl0ZW06IGFueSkgPT4gY29uc29sZS5sb2coaXRlbSk7XG4gIH1cblxuICBvbkN1c3RvbUFjdGlvbkNsaWNrKGFjdGlvbjogUFRUYWJsZUFjdGlvbkNvbmZpZywgcm93OiBhbnkpOiB2b2lkIHtcbiAgICBpZiAoYWN0aW9uICYmIHR5cGVvZiBhY3Rpb24uYWN0aW9uID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgYWN0aW9uLmFjdGlvbihyb3cpO1xuICAgICAgfSwgMCk7XG4gICAgfVxuICB9XG5cbiAgLy8gLS0tLS0tLS0tLSBGSUxURVJJTkcgLyBTT1JUSU5HIC8gUEFHSU5BVElPTiAtLS0tLS0tLS0tXG5cbiAgLyoqXG4gICAqIEZvciBjb21wb3NlZCBjb2x1bW5zLCB3ZSBzdGlsbCByZWdpc3RlciBmaWx0ZXJzIHVuZGVyIGZpbHRlcnNbY29tcG9zZWROYW1lXVxuICAgKiB0byBrZWVwIG9wdGlvbnMgJiBwbGFjZWhvbGRlcnMuXG4gICAqL1xuICBwcml2YXRlIGluaXRpYWxpemVDb21wb3NlZEZpbHRlcnMoY29sOiBUYWJsZUNvbHVtbik6IHZvaWQge1xuICAgIGNvbC5jb21wb3NlZE5hbWVzPy5mb3JFYWNoKChjb21wb3NlZE5hbWUpID0+IHtcbiAgICAgIGNvbnN0IGNvZGUgPSAoY29sLmNvZGUgYXMgc3RyaW5nKSB8fCAnJztcbiAgICAgIHRoaXMuZ2xvYmFsRmlsdGVyRmllbGRzLnB1c2goY29kZSArICcuJyArIGNvbXBvc2VkTmFtZSk7XG4gICAgICB0aGlzLmZpbHRlcnNbY29tcG9zZWROYW1lXSA9IHtcbiAgICAgICAgb3B0aW9uczogY29sLmZpbHRlck9wdGlvbnMsXG4gICAgICAgIHZhbHVlOiBbXSxcbiAgICAgICAgbGFiZWw6ICdGaWx0ZXIgYnkgJyArIGNvbXBvc2VkTmFtZSxcbiAgICAgICAgcGxhY2Vob2xkZXI6ICdTZWxlY3Qgb3B0aW9uJyxcbiAgICAgIH07XG4gICAgfSk7XG4gIH1cblxuICBnZXRDb21wb3NlZEZpZWxkVHlwZShcbiAgICBjb2w6IFRhYmxlQ29sdW1uLFxuICAgIGNvbXBvc2VkTmFtZTogc3RyaW5nXG4gICk6IFRhYmxlVHlwZUVudW0gfCB1bmRlZmluZWQge1xuICAgIGlmIChjb2wuY29tcG9zZWROYW1lcyAmJiBjb2wuY29tcG9zZWRUeXBlcykge1xuICAgICAgY29uc3QgaW5kZXggPSBjb2wuY29tcG9zZWROYW1lcy5pbmRleE9mKGNvbXBvc2VkTmFtZSk7XG4gICAgICBpZiAoaW5kZXggPj0gMCAmJiBpbmRleCA8IGNvbC5jb21wb3NlZFR5cGVzLmxlbmd0aCkge1xuICAgICAgICByZXR1cm4gY29sLmNvbXBvc2VkVHlwZXNbaW5kZXhdO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgb25Db21wb3NlZENvbHVtbkNsZWFyKGNvbDogVGFibGVDb2x1bW4pOiB2b2lkIHtcbiAgICBpZiAoIWNvbC5jb2RlIHx8ICFjb2wuY29tcG9zZWROYW1lcykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbC5jb21wb3NlZE5hbWVzLmZvckVhY2goKG5hbWUpID0+IHtcbiAgICAgIGNvbnN0IGtleSA9IGAke2NvbC5jb2RlfS4ke25hbWV9YDtcbiAgICAgIGRlbGV0ZSB0aGlzLmxhdGVzdEZpbHRlclZhbHVlc1trZXldO1xuXG4gICAgICBpZiAodGhpcy5maWx0ZXJzW25hbWVdKSB7XG4gICAgICAgIHRoaXMuZmlsdGVyc1tuYW1lXS52YWx1ZSA9IFtdO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG4gIC8qKlxuICAgKiBDT01QT1NFRDogY2FjaGUgVUkgdmFsdWVzIG9ubHksIHJlYWwgZmlsdGVyIGFwcGxpZWQgb24gQXBwbHkvQ2xlYXIuXG4gICAqL1xuICBvbkNvbXBvc2VkRmlsdGVyVmFsdWVDaGFuZ2UoXG4gICAgY29sOiBUYWJsZUNvbHVtbixcbiAgICBjb21wb3NlZE5hbWU6IHN0cmluZyxcbiAgICB2YWx1ZTogYW55W10sXG4gICAgZmlsdGVyTW9kZWw/OiBhbnlcbiAgKTogdm9pZCB7XG4gICAgY29uc3Qga2V5ID0gYCR7Y29sLmNvZGV9LiR7Y29tcG9zZWROYW1lfWA7XG5cbiAgICAvLyAxKSBzeW5jIHdpdGggUHJpbWVORyBmaWx0ZXIgbW9kZWwgc28gQXBwbHkvQ2xlYXIgd29yayBjb3JyZWN0bHlcbiAgICBpZiAoZmlsdGVyTW9kZWwpIHtcbiAgICAgIGZpbHRlck1vZGVsLnZhbHVlID0gdmFsdWU7XG4gICAgICBpZiAoXG4gICAgICAgIEFycmF5LmlzQXJyYXkoZmlsdGVyTW9kZWwuY29uc3RyYWludHMpICYmXG4gICAgICAgIGZpbHRlck1vZGVsLmNvbnN0cmFpbnRzLmxlbmd0aCA+IDBcbiAgICAgICkge1xuICAgICAgICBmaWx0ZXJNb2RlbC5jb25zdHJhaW50c1swXS52YWx1ZSA9IHZhbHVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIDIpIGtlZXAgeW91ciBsb2NhbCBVSSBtb2RlbFxuICAgIGlmICghdGhpcy5maWx0ZXJzW2NvbXBvc2VkTmFtZV0pIHtcbiAgICAgIHRoaXMuZmlsdGVyc1tjb21wb3NlZE5hbWVdID0ge1xuICAgICAgICBvcHRpb25zOiBjb2wuZmlsdGVyT3B0aW9ucyxcbiAgICAgICAgdmFsdWU6IFtdLFxuICAgICAgICBwbGFjZWhvbGRlcjogJ1NlbGVjdCBvcHRpb24nLFxuICAgICAgfTtcbiAgICB9XG4gICAgdGhpcy5maWx0ZXJzW2NvbXBvc2VkTmFtZV0udmFsdWUgPSB2YWx1ZSB8fCBbXTtcblxuICAgIC8vIDMpIGNhY2hlIGZvciBzZXJ2ZXItc2lkZSBgZmlsdGVyQ29sdW1uYFxuICAgIGNvbnN0IGlzRW1wdHkgPSAhdmFsdWUgfHwgKEFycmF5LmlzQXJyYXkodmFsdWUpICYmIHZhbHVlLmxlbmd0aCA9PT0gMCk7XG4gICAgaWYgKGlzRW1wdHkpIHtcbiAgICAgIGRlbGV0ZSB0aGlzLmxhdGVzdEZpbHRlclZhbHVlc1trZXldO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmxhdGVzdEZpbHRlclZhbHVlc1trZXldID0gdmFsdWU7XG4gICAgfVxuICB9XG5cbiAgb25GaWx0ZXJDbGVhcihmaWVsZDogc3RyaW5nIHwgdW5kZWZpbmVkKTogdm9pZCB7XG4gICAgaWYgKCFmaWVsZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIGZvcmdldCBjYWNoZWQgdmFsdWUgZm9yIHRoaXMgZmllbGRcbiAgICBkZWxldGUgdGhpcy5sYXRlc3RGaWx0ZXJWYWx1ZXNbZmllbGRdO1xuXG4gICAgLy8gbWFyayB0aGlzIGZpZWxkIGFzIGV4cGxpY2l0bHkgY2xlYXJlZCBzbyBmaWx0ZXJDb2x1bW5cbiAgICAvLyBkb2Vzbid0IHJldXNlIHRoZSBjYWNoZWQgdmFsdWUgb24gdGhlIHNhbWUgZXZlbnRcbiAgICB0aGlzLmNsZWFyZWRGaWVsZHMuYWRkKGZpZWxkKTtcbiAgfVxuXG4gIG9uRmlsdGVyVmFsdWVDaGFuZ2UoXG4gICAgZmllbGQ6IHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgICBmaWx0ZXJNb2RlbDogYW55LFxuICAgIHZhbHVlOiBhbnlcbiAgKTogdm9pZCB7XG4gICAgaWYgKCFmaWVsZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGlzRW1wdHkgPVxuICAgICAgdmFsdWUgPT09IG51bGwgfHxcbiAgICAgIHZhbHVlID09PSB1bmRlZmluZWQgfHxcbiAgICAgIChBcnJheS5pc0FycmF5KHZhbHVlKSAmJiB2YWx1ZS5sZW5ndGggPT09IDApO1xuXG4gICAgaWYgKGlzRW1wdHkpIHtcbiAgICAgIGRlbGV0ZSB0aGlzLmxhdGVzdEZpbHRlclZhbHVlc1tmaWVsZF07XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubGF0ZXN0RmlsdGVyVmFsdWVzW2ZpZWxkXSA9IHZhbHVlO1xuICAgIH1cblxuICAgIGlmIChmaWx0ZXJNb2RlbCkge1xuICAgICAgLy8gdXBkYXRlIGJvdGggcGxhY2VzIHNvIFByaW1lTkcgZW1pdHMgaXQgY29ycmVjdGx5XG4gICAgICBmaWx0ZXJNb2RlbC52YWx1ZSA9IHZhbHVlO1xuXG4gICAgICBpZiAoXG4gICAgICAgIEFycmF5LmlzQXJyYXkoZmlsdGVyTW9kZWwuY29uc3RyYWludHMpICYmXG4gICAgICAgIGZpbHRlck1vZGVsLmNvbnN0cmFpbnRzLmxlbmd0aCA+IDBcbiAgICAgICkge1xuICAgICAgICBmaWx0ZXJNb2RlbC5jb25zdHJhaW50c1swXS52YWx1ZSA9IHZhbHVlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG9uTnVtYmVyRmlsdGVyQ2hhbmdlKGZpZWxkOiBzdHJpbmcgfCB1bmRlZmluZWQsIHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAoIWZpZWxkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgaXNFbXB0eSA9XG4gICAgICB2YWx1ZSA9PT0gbnVsbCB8fFxuICAgICAgdmFsdWUgPT09IHVuZGVmaW5lZCB8fFxuICAgICAgdmFsdWUgPT09ICcnIHx8XG4gICAgICAoQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiYgdmFsdWUubGVuZ3RoID09PSAwKTtcblxuICAgIGlmIChpc0VtcHR5KSB7XG4gICAgICBkZWxldGUgdGhpcy5sYXRlc3RGaWx0ZXJWYWx1ZXNbZmllbGRdO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmxhdGVzdEZpbHRlclZhbHVlc1tmaWVsZF0gPSB2YWx1ZTtcbiAgICB9XG4gIH1cblxuICAvKiogSGVscGVyOiBmaW5kIGNvbHVtbiBieSBmaWVsZC4gU3VwcG9ydHMgY29tcG9zZWQgZmllbGRzIGxpa2UgXCJjb2RlLnByb3BcIi4gKi9cbiAgcHJpdmF0ZSBmaW5kQ29sdW1uQnlGaWVsZChmaWVsZDogc3RyaW5nKTogVGFibGVDb2x1bW4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLmNvbHVtbnMuZmluZChcbiAgICAgIChjKSA9PiBjLmNvZGUgPT09IGZpZWxkIHx8IChjLmNvZGUgJiYgZmllbGQuc3RhcnRzV2l0aChjLmNvZGUgKyAnLicpKVxuICAgICk7XG4gIH1cblxuICAvLyBGaXJlZCBieSBQcmltZU5HIHdoZW4gdGhlIHVzZXIgY2xpY2tzIEFwcGx5IC8gQ2xlYXIgaW4gYW55IGZpbHRlciBtZW51XG4gIGZpbHRlckNvbHVtbihldmVudDogYW55KTogdm9pZCB7XG4gICAgY29uc3QgZmlsdGVycyA9IGV2ZW50Py5maWx0ZXJzO1xuXG4gICAgaWYgKCFmaWx0ZXJzKSB7XG4gICAgICB0aGlzLm9uRmlsdGVyQ29sdW1uLmVtaXQoZXZlbnQpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGlzTnVsbGlzaCA9ICh2OiBhbnkpID0+IHYgPT09IG51bGwgfHwgdiA9PT0gdW5kZWZpbmVkIHx8IHYgPT09ICcnO1xuXG4gICAgT2JqZWN0LmtleXMoZmlsdGVycykuZm9yRWFjaCgoZmllbGQpID0+IHtcbiAgICAgIGNvbnN0IG1ldGEgPSBmaWx0ZXJzW2ZpZWxkXTtcblxuICAgICAgY29uc3Qgbm9ybWFsaXplTWV0YSA9IChtOiBhbnkpID0+XG4gICAgICAgIEFycmF5LmlzQXJyYXkobSkgJiYgbS5sZW5ndGggPiAwID8gbVswXSA6IG07XG5cbiAgICAgIGNvbnN0IG0gPSBub3JtYWxpemVNZXRhKG1ldGEpO1xuICAgICAgY29uc3QgY29sID0gdGhpcy5maW5kQ29sdW1uQnlGaWVsZChmaWVsZCk7XG4gICAgICBjb25zdCB3YXNDbGVhcmVkID0gdGhpcy5jbGVhcmVkRmllbGRzLmhhcyhmaWVsZCk7XG5cbiAgICAgIC8vIG5vdGhpbmcgdG8gZG9cbiAgICAgIGlmICghbSAmJiAhY29sKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICAgLy8g8J+UuSBTUEVDSUFMIENBU0U6IENPTVBPU0VEIENPTFVNTlxuICAgICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICAgaWYgKGNvbCAmJiBjb2wudHlwZSA9PT0gVGFibGVUeXBlRW51bS5DT01QT1NFRCkge1xuICAgICAgICBjb25zdCBjb21wb3NlZFZhbHVlczogYW55ID0ge307XG5cbiAgICAgICAgY29sLmNvbXBvc2VkTmFtZXM/LmZvckVhY2goKG5hbWUpID0+IHtcbiAgICAgICAgICBjb25zdCBrZXkgPSBgJHtjb2wuY29kZX0uJHtuYW1lfWA7XG4gICAgICAgICAgY29uc3QgdmFsID0gdGhpcy5sYXRlc3RGaWx0ZXJWYWx1ZXNba2V5XTtcbiAgICAgICAgICBjb25zdCBlbXB0eSA9XG4gICAgICAgICAgICBpc051bGxpc2godmFsKSB8fCAoQXJyYXkuaXNBcnJheSh2YWwpICYmIHZhbC5sZW5ndGggPT09IDApO1xuXG4gICAgICAgICAgaWYgKCFlbXB0eSkge1xuICAgICAgICAgICAgY29tcG9zZWRWYWx1ZXNbbmFtZV0gPSB2YWw7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICAvLyBJZiBub3RoaW5nIGluIGNhY2hlLCB0cmVhdCBhcyBcIm5vIGZpbHRlclwiXG4gICAgICAgIGlmIChPYmplY3Qua2V5cyhjb21wb3NlZFZhbHVlcykubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgaWYgKG0pIHtcbiAgICAgICAgICAgIG0udmFsdWUgPSBudWxsO1xuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkobS5jb25zdHJhaW50cykpIHtcbiAgICAgICAgICAgICAgbS5jb25zdHJhaW50cy5mb3JFYWNoKChjOiBhbnkpID0+IChjLnZhbHVlID0gbnVsbCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBzZW5kIG9iamVjdCB7IHN1YjE6IFsuLi5dLCBzdWIyOiBbLi4uXSB9IHRvIHBhcmVudFxuICAgICAgICAgIG0udmFsdWUgPSBjb21wb3NlZFZhbHVlcztcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHdhc0NsZWFyZWQgPSB0aGlzLmNsZWFyZWRGaWVsZHMuaGFzKGZpZWxkKTtcbiAgICAgICAgcmV0dXJuOyAvLyBjb21wb3NlZCBoYW5kbGVkXG4gICAgICB9XG5cbiAgICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAgIC8vIPCflLkgR0VORVJJQyBDQVNFOiBOT04tQ09NUE9TRUQgQ09MVU1OU1xuICAgICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICAgaWYgKCFtKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIC8vIElmIHRoZSB1c2VyIGNsaWNrZWQgQ2xlYXIgZm9yIHRoaXMgZmllbGQsIGZvcmNlIGl0IHRvIGVtcHR5XG4gICAgICBpZiAod2FzQ2xlYXJlZCkge1xuICAgICAgICBkZWxldGUgdGhpcy5sYXRlc3RGaWx0ZXJWYWx1ZXNbZmllbGRdO1xuXG4gICAgICAgIG0udmFsdWUgPSBudWxsO1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShtLmNvbnN0cmFpbnRzKSAmJiBtLmNvbnN0cmFpbnRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBtLmNvbnN0cmFpbnRzWzBdLnZhbHVlID0gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY2xlYXJlZEZpZWxkcy5kZWxldGUoZmllbGQpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGxldCB2YWx1ZTogYW55ID0gbS52YWx1ZTtcblxuICAgICAgLy8gUHJpbWVORyBvZnRlbiBzdG9yZXMgdGhlIHJlYWwgdmFsdWUgaW4gY29uc3RyYWludHNbMF0udmFsdWVcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KG0uY29uc3RyYWludHMpICYmIG0uY29uc3RyYWludHMubGVuZ3RoID4gMCkge1xuICAgICAgICBjb25zdCBjVmFsID0gbS5jb25zdHJhaW50c1swXS52YWx1ZTtcbiAgICAgICAgaWYgKCFpc051bGxpc2goY1ZhbCkpIHtcbiAgICAgICAgICB2YWx1ZSA9IGNWYWw7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8g8J+UtCBORVc6IGZhbGwgYmFjayB0byBjYWNoZWQgdmFsdWUgdHlwZWQgaW4gdGhlIGlucHV0XG4gICAgICBjb25zdCBjYWNoZWQgPSB0aGlzLmxhdGVzdEZpbHRlclZhbHVlc1tmaWVsZF07XG4gICAgICBjb25zdCBoYXNDYWNoZWQgPVxuICAgICAgICAhaXNOdWxsaXNoKGNhY2hlZCkgJiYgKCFBcnJheS5pc0FycmF5KGNhY2hlZCkgfHwgY2FjaGVkLmxlbmd0aCA+IDApO1xuXG4gICAgICBpZiAoXG4gICAgICAgIChpc051bGxpc2godmFsdWUpIHx8IChBcnJheS5pc0FycmF5KHZhbHVlKSAmJiB2YWx1ZS5sZW5ndGggPT09IDApKSAmJlxuICAgICAgICBoYXNDYWNoZWRcbiAgICAgICkge1xuICAgICAgICB2YWx1ZSA9IGNhY2hlZDtcbiAgICAgIH1cblxuICAgICAgY29uc3QgaXNFbXB0eSA9XG4gICAgICAgIGlzTnVsbGlzaCh2YWx1ZSkgfHwgKEFycmF5LmlzQXJyYXkodmFsdWUpICYmIHZhbHVlLmxlbmd0aCA9PT0gMCk7XG5cbiAgICAgIC8vIENMRUFSID0+IHJlbW92ZSBmcm9tIGNhY2hlLCByZXNldCBQcmltZU5HIG1ldGFkYXRhXG4gICAgICBpZiAoaXNFbXB0eSkge1xuICAgICAgICBkZWxldGUgdGhpcy5sYXRlc3RGaWx0ZXJWYWx1ZXNbZmllbGRdO1xuXG4gICAgICAgIG0udmFsdWUgPSBudWxsO1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShtLmNvbnN0cmFpbnRzKSAmJiBtLmNvbnN0cmFpbnRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBtLmNvbnN0cmFpbnRzWzBdLnZhbHVlID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIC8vIE5PTi1FTVBUWSA9PiBjYWNoZSBhbmQgbm9ybWFsaXplXG4gICAgICB0aGlzLmxhdGVzdEZpbHRlclZhbHVlc1tmaWVsZF0gPSB2YWx1ZTtcblxuICAgICAgbGV0IGVtaXRWYWx1ZTogYW55ID0gdmFsdWU7XG5cbiAgICAgIC8vIE9ubHkgREFURSBjb2x1bW5zIG5lZWQgXCJkZC9NTS95eXl5XCIgZm9ybWF0XG4gICAgICBpZiAoY29sICYmIGNvbC50eXBlID09PSBUYWJsZVR5cGVFbnVtLkRBVEUgJiYgdmFsdWUpIHtcbiAgICAgICAgZW1pdFZhbHVlID0gdGhpcy5mb3JtYXREYXRlKFxuICAgICAgICAgIHZhbHVlIGluc3RhbmNlb2YgRGF0ZSA/IHZhbHVlIDogbmV3IERhdGUodmFsdWUpXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIG0udmFsdWUgPSBlbWl0VmFsdWU7XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShtLmNvbnN0cmFpbnRzKSAmJiBtLmNvbnN0cmFpbnRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgbS5jb25zdHJhaW50c1swXS52YWx1ZSA9IGVtaXRWYWx1ZTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIC8vIHNlbmQgbm9ybWFsaXplZCBmaWx0ZXJzIHRvIHBhcmVudCAoc2VydmVyLXNpZGUgcGFnaW5hdGlvbilcbiAgICB0aGlzLm9uRmlsdGVyQ29sdW1uLmVtaXQoZXZlbnQpO1xuICB9XG5cbiAgY2hhbmdlUGFnZShldmVudDogYW55KTogdm9pZCB7XG4gICAgY29uc3QgcGFnZSA9IGV2ZW50LnBhZ2UgPz8gTWF0aC5mbG9vcigoZXZlbnQuZmlyc3QgfHwgMCkgLyBldmVudC5yb3dzKTtcbiAgICBjb25zdCByb3dzID0gZXZlbnQucm93cztcblxuICAgIHRoaXMucm93cyA9IHJvd3M7XG4gICAgdGhpcy5vblBhZ2VDaGFuZ2UuZW1pdCh7IHBhZ2UsIHJvd3MgfSk7XG4gIH1cblxuICBzb3J0Q29sdW1uKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuaXNQYWdpbmF0ZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsZXQgZmllbGQgPSBldmVudC5maWVsZDtcblxuICAgIGNvbnN0IGNvbCA9IHRoaXMuY29sdW1ucy5maW5kKChjKSA9PiBjLmNvZGUgPT09IGZpZWxkKTtcblxuICAgIGlmIChjb2wgJiYgY29sLnR5cGUgPT09IFRhYmxlVHlwZUVudW0uQ09NUE9TRUQpIHtcbiAgICAgIGxldCB0ZXh0UHJvcDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gICAgICBpZiAoY29sLmNvbXBvc2VkTmFtZXMgJiYgY29sLmNvbXBvc2VkVHlwZXMpIHtcbiAgICAgICAgY29uc3QgaWR4ID0gY29sLmNvbXBvc2VkVHlwZXMuZmluZEluZGV4KFxuICAgICAgICAgICh0KSA9PiB0ID09PSBUYWJsZVR5cGVFbnVtLlNUUklOR1xuICAgICAgICApO1xuICAgICAgICBpZiAoaWR4ID49IDAgJiYgaWR4IDwgY29sLmNvbXBvc2VkTmFtZXMubGVuZ3RoKSB7XG4gICAgICAgICAgdGV4dFByb3AgPSBjb2wuY29tcG9zZWROYW1lc1tpZHhdO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICghdGV4dFByb3AgJiYgY29sLmNvbXBvc2VkTmFtZXMgJiYgY29sLmNvbXBvc2VkTmFtZXMubGVuZ3RoID4gMCkge1xuICAgICAgICB0ZXh0UHJvcCA9IGNvbC5jb21wb3NlZE5hbWVzWzBdO1xuICAgICAgfVxuXG4gICAgICBpZiAodGV4dFByb3ApIHtcbiAgICAgICAgZmllbGQgPSBgJHtmaWVsZH0uJHt0ZXh0UHJvcH1gO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMub25Tb3J0Q29sdW1uLmVtaXQoe1xuICAgICAgLi4uZXZlbnQsXG4gICAgICBmaWVsZCxcbiAgICB9KTtcbiAgfVxuXG4gIG9uQ2FsZW5kYXJGaWx0ZXJDaGFuZ2UoXG4gICAgZXZlbnQ6IGFueSxcbiAgICBjb2x1bW5Db2RlOiBzdHJpbmcsXG4gICAgZmlsdGVyQ2FsbGJhY2s6IGFueVxuICApOiB2b2lkIHtcbiAgICBjb25zdCBmaWx0ZXJWYWx1ZSA9IGV2ZW50ID8gbmV3IERhdGUoZXZlbnQpIDogbnVsbDtcbiAgICBpZiAoIWZpbHRlclZhbHVlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZmlsdGVyQ2FsbGJhY2soZmlsdGVyVmFsdWUpO1xuXG4gICAgaWYgKHRoaXMuaXNQYWdpbmF0ZWQpIHtcbiAgICAgIHRoaXMub25GaWx0ZXJDb2x1bW4uZW1pdCh7XG4gICAgICAgIHR5cGU6ICdkYXRlJyxcbiAgICAgICAgY29sdW1uQ29kZSxcbiAgICAgICAgdmFsdWU6IGZpbHRlclZhbHVlLFxuICAgICAgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZmlsdGVyVmFsdWVTdHJpbmcgPSBldmVudCA/IHRoaXMuZm9ybWF0RGF0ZShldmVudCkgOiAnJztcbiAgICB0aGlzLmZpbHRlckNvbHVtbih7XG4gICAgICBmaWx0ZXJlZFZhbHVlOiB0aGlzLmRhdGEuZmlsdGVyKChpdGVtKSA9PiB7XG4gICAgICAgIGNvbnN0IGNvbHVtblZhbHVlID0gaXRlbVtjb2x1bW5Db2RlXTtcbiAgICAgICAgaWYgKGNvbHVtblZhbHVlKSB7XG4gICAgICAgICAgY29uc3QgaXRlbURhdGVTdHJpbmcgPSB0aGlzLmZvcm1hdERhdGUobmV3IERhdGUoY29sdW1uVmFsdWUpKTtcbiAgICAgICAgICByZXR1cm4gaXRlbURhdGVTdHJpbmcgPT09IGZpbHRlclZhbHVlU3RyaW5nO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH0pLFxuICAgIH0pO1xuICB9XG5cbiAgLy8gLS0tLS0tLS0tLSBPVEhFUiBIRUxQRVJTIC0tLS0tLS0tLS1cblxuICBmaWx0ZXJDb21wb3NlZERhdGEoaXRlbTogYW55LCBjb21wb3NlZE5hbWU6IHN0cmluZywgdmFsdWU6IGFueSk6IGJvb2xlYW4ge1xuICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSAmJiB2YWx1ZS5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm4gdmFsdWUuc29tZSgoZmlsdGVyVmFsdWU6IHN0cmluZykgPT5cbiAgICAgICAgaXRlbVtjb21wb3NlZE5hbWVdPy50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGZpbHRlclZhbHVlLnRvTG93ZXJDYXNlKCkpXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHByaXZhdGUgY2FsY3VsYXRlQ29sdW1uV2lkdGgoY29sOiBUYWJsZUNvbHVtbik6IHN0cmluZyB7XG4gICAgY29uc3QgY2FsY3VsYXRlZFdpZHRoID0gY2FsY3VsYXRlVGV4dFdpZHRoKGNvbCwgY29sLnRpdGxlKTtcbiAgICBjb25zdCB0b3RhbFdpZHRoID0gY2FsY3VsYXRlZFdpZHRoICsgdGhpcy5pY29uV2lkdGggKyAyMDtcbiAgICByZXR1cm4gYCR7dG90YWxXaWR0aH1weGA7XG4gIH1cblxuICBnZXRIZWFkZXJXaWR0aChjb2w6IFRhYmxlQ29sdW1uKTogc3RyaW5nIHtcbiAgICBpZiAoY29sLndpZHRoKSB7XG4gICAgICByZXR1cm4gY29sLndpZHRoO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5jYWxjdWxhdGVDb2x1bW5XaWR0aChjb2wpO1xuICB9XG5cbiAgY2xlYXIodGFibGU6IFRhYmxlKSB7XG4gICAgLy8gQ2xlYXIgUHJpbWVORyBpbnRlcm5hbCBmaWx0ZXJzICsgVUlcbiAgICB0YWJsZS5jbGVhcigpO1xuXG4gICAgLy8gQ2xlYXIgZ2xvYmFsIHNlYXJjaFxuICAgIHRoaXMuc2VhcmNoVmFsdWUgPSAnJztcblxuICAgIC8vIENsZWFyIGNhY2hlZCB2YWx1ZXMgZm9yIG5vcm1hbCAmIGNvbXBvc2VkIGZpZWxkc1xuICAgIHRoaXMubGF0ZXN0RmlsdGVyVmFsdWVzID0ge307XG5cbiAgICAvLyBDbGVhciBsb2NhbCBtb2RlbHMgZm9yIGNvbXBvc2VkIGZpbHRlcnNcbiAgICBPYmplY3Qua2V5cyh0aGlzLmZpbHRlcnMpLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgaWYgKHRoaXMuZmlsdGVyc1trZXldKSB7XG4gICAgICAgIHRoaXMuZmlsdGVyc1trZXldLnZhbHVlID0gW107XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAodGhpcy5pc1BhZ2luYXRlZCkge1xuICAgICAgdGhpcy5vbkZpbHRlckNvbHVtbi5lbWl0KHsgY2xlYXJlZDogdHJ1ZSB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHBhcnNlRGF0ZShkYXRlU3RyaW5nOiBzdHJpbmcpOiBEYXRlIHwgbnVsbCB7XG4gICAgY29uc3QgcGFydHMgPSBkYXRlU3RyaW5nLnNwbGl0KCcvJyk7XG4gICAgaWYgKHBhcnRzLmxlbmd0aCA9PT0gMykge1xuICAgICAgY29uc3QgZGF5ID0gcGFyc2VJbnQocGFydHNbMF0sIDEwKTtcbiAgICAgIGNvbnN0IG1vbnRoID0gcGFyc2VJbnQocGFydHNbMV0sIDEwKSAtIDE7XG4gICAgICBjb25zdCB5ZWFyID0gcGFyc2VJbnQocGFydHNbMl0sIDEwKTtcbiAgICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSh5ZWFyLCBtb250aCwgZGF5KTtcbiAgICAgIHJldHVybiBpc05hTihkYXRlLmdldFRpbWUoKSkgPyBudWxsIDogZGF0ZTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBwcml2YXRlIGluaXRpYWxpemVQYWdpbmF0aW9uKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzUGFnaW5hdGVkKSB7XG4gICAgICBpZiAoIXRoaXMucm93c1BlclBhZ2UgfHwgdGhpcy5yb3dzUGVyUGFnZS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgdGhpcy5yb3dzUGVyUGFnZSA9IFsyMCwgMzAsIDQwXTtcbiAgICAgIH1cbiAgICAgIHRoaXMucm93cyA9IHRoaXMucm93c1BlclBhZ2VbMF07XG4gICAgfVxuICB9XG5cbiAgb25DaGFuZ2UoZXZlbnQ6IEV2ZW50LCBpZDogbnVtYmVyLCBrZXk6IGFueSkge1xuICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50O1xuICAgIHRoaXMuY2hhbmdlSGFuZGxlcihpZCwga2V5LCB0YXJnZXQudmFsdWUpO1xuICB9XG5cbiAgY2hhbmdlSGFuZGxlcihpZDogbnVtYmVyLCBrZXk6IGFueSwgdmFsdWU6IGFueSkge1xuICAgIGNvbnN0IGNvbHVtbiA9IHRoaXMuY29sdW1ucy5maW5kKChpdGVtKSA9PiBpdGVtLmNvZGUgPT09IGtleSk7XG4gICAgaWYgKCF0aGlzLm1hcC5nZXQoaWQpKSB7XG4gICAgICBpZiAoY29sdW1uPy50eXBlID09PSBUYWJsZVR5cGVFbnVtLkRBVEUpIHtcbiAgICAgICAgY29uc3QgZGF0ZSA9IHRoaXMucGFyc2VEYXRlKHZhbHVlKTtcbiAgICAgICAgdGhpcy5kYXRhTWFwLnNldChrZXksIGRhdGUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5kYXRhTWFwLnNldChrZXksIHZhbHVlKTtcbiAgICAgIH1cbiAgICAgIHRoaXMubWFwLnNldChpZCwgbmV3IE1hcCh0aGlzLmRhdGFNYXApKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgbWFwSXRlbSA9IHRoaXMubWFwLmdldChpZCkgYXMgTWFwPGFueSwgYW55PjtcbiAgICAgIGlmIChjb2x1bW4/LnR5cGUgPT09IFRhYmxlVHlwZUVudW0uREFURSkge1xuICAgICAgICBjb25zdCBkYXRlID0gdGhpcy5wYXJzZURhdGUodmFsdWUpO1xuICAgICAgICBtYXBJdGVtLnNldChrZXksIGRhdGUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbWFwSXRlbS5zZXQoa2V5LCB2YWx1ZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZ2V0Q29sdW1uRmlsdGVyVHlwZShjb2x1bW46IFRhYmxlQ29sdW1uKTogc3RyaW5nIHtcbiAgICBzd2l0Y2ggKGNvbHVtbi50eXBlKSB7XG4gICAgICBjYXNlIFRhYmxlVHlwZUVudW0uU1RSSU5HOlxuICAgICAgICByZXR1cm4gJ3RleHQnO1xuICAgICAgY2FzZSBUYWJsZVR5cGVFbnVtLkFNT1VOVDpcbiAgICAgIGNhc2UgVGFibGVUeXBlRW51bS5OVU1CRVI6XG4gICAgICAgIHJldHVybiAnbnVtZXJpYyc7XG4gICAgICBjYXNlIFRhYmxlVHlwZUVudW0uREFURTpcbiAgICAgICAgcmV0dXJuICdkYXRlJztcbiAgICAgIGNhc2UgVGFibGVUeXBlRW51bS5NVUxUSVNFTEVDVDpcbiAgICAgICAgcmV0dXJuICdtdWx0aVNlbGVjdCc7XG4gICAgICBjYXNlIFRhYmxlVHlwZUVudW0uQk9PTEVBTjpcbiAgICAgICAgcmV0dXJuICdib29sZWFuJztcbiAgICAgIGNhc2UgVGFibGVUeXBlRW51bS5DT01QT1NFRDpcbiAgICAgICAgcmV0dXJuICdjb21wb3NlZCc7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gJ3RleHQnO1xuICAgIH1cbiAgfVxuXG4gIGlzRWRpdGFibGUoa2V5OiBzdHJpbmcgfCB1bmRlZmluZWQpOiBib29sZWFuIHtcbiAgICBpZiAoIWtleSkgcmV0dXJuIGZhbHNlO1xuICAgIGNvbnN0IGNvbHVtbiA9IHRoaXMuY29sdW1ucy5maW5kKChpdGVtKSA9PiBpdGVtLmNvZGUgPT09IGtleSk7XG4gICAgcmV0dXJuIGNvbHVtbj8uaXNFZGl0YWJsZSAhPT0gZmFsc2U7XG4gIH1cblxuICBpc011bHRpU2VsZWN0KGtleTogYW55KTogYm9vbGVhbiB7XG4gICAgY29uc3QgY29sdW1uID0gdGhpcy5jb2x1bW5zLmZpbmQoKGl0ZW0pID0+IGl0ZW0uY29kZSA9PT0ga2V5KTtcbiAgICBpZiAoXG4gICAgICBjb2x1bW4/LnR5cGUgPT09IFRhYmxlVHlwZUVudW0uTVVMVElTRUxFQ1QgJiZcbiAgICAgIGNvbHVtbi5vcHRpb25zICYmXG4gICAgICBjb2x1bW4uY29kZSAhPT0gdW5kZWZpbmVkXG4gICAgKSB7XG4gICAgICB0aGlzLm9wdGlvbkVudHJpZXMgPSBuZXcgTWFwKFtcbiAgICAgICAgW2NvbHVtbi5jb2RlIGFzIHN0cmluZywgT2JqZWN0LnZhbHVlcyhjb2x1bW4ub3B0aW9ucyldLFxuICAgICAgXSk7XG4gICAgICB0aGlzLm9wdGlvblZhbHVlcyA9IHRoaXMub3B0aW9uRW50cmllcy5nZXQoa2V5KSB8fCBbXTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpc0RhdGVQaWNrZXIoa2V5OiBhbnkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5jb2x1bW5zLmZpbmQoKGl0ZW0pID0+IGl0ZW0uY29kZSA9PT0ga2V5KT8udHlwZSA9PT1cbiAgICAgIFRhYmxlVHlwZUVudW0uREFURVxuICAgICk7XG4gIH1cblxuICBkYXRlQ29udmVydGVyKHZhbHVlOiBhbnkpOiBzdHJpbmcge1xuICAgIHJldHVybiBuZXcgRGF0ZSh2YWx1ZSkudG9Mb2NhbGVEYXRlU3RyaW5nKCdlbi1VUycpO1xuICB9XG5cbiAgZ2V0Q3VycmVuY3lTeW1ib2woY29sdW1uOiBUYWJsZUNvbHVtbik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIGNvbHVtbi50eXBlID09PSBUYWJsZVR5cGVFbnVtLkFNT1VOVCAmJlxuICAgICAgY29sdW1uLmN1cnJlbmN5ICYmXG4gICAgICB0aGlzLmlzVmFsaWRDdXJyZW5jeUNvZGUoY29sdW1uLmN1cnJlbmN5KVxuICAgICAgPyBjb2x1bW4uY3VycmVuY3lcbiAgICAgIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgcHJpdmF0ZSBpc1ZhbGlkQ3VycmVuY3lDb2RlKGN1cnJlbmN5Q29kZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudmFsaWRDdXJyZW5jeUNvZGVzLmluY2x1ZGVzKGN1cnJlbmN5Q29kZSk7XG4gIH1cblxuICBmaWx0ZXJHbG9iYWwoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgY29uc3QgdmFsdWUgPSB0YXJnZXQudmFsdWUudG9Mb3dlckNhc2UoKTtcblxuICAgIGlmICh0aGlzLmlzUGFnaW5hdGVkKSB7XG4gICAgICB0aGlzLnNlYXJjaC5lbWl0KHZhbHVlKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBmaWx0ZXJlZERhdGEgPSB0aGlzLmRhdGEuZmlsdGVyKChpdGVtKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5nbG9iYWxGaWx0ZXJGaWVsZHMuc29tZSgoZmllbGQpID0+IHtcbiAgICAgICAgY29uc3QgY29sdW1uID0gdGhpcy5jb2x1bW5zLmZpbmQoKGNvbCkgPT4gY29sLmNvZGUgPT09IGZpZWxkKTtcbiAgICAgICAgaWYgKCFjb2x1bW4pIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY29sdW1uLnR5cGUgPT09IFRhYmxlVHlwZUVudW0uREFURSkge1xuICAgICAgICAgIGNvbnN0IGl0ZW1EYXRlID0gdGhpcy5mb3JtYXREYXRlKGl0ZW1bZmllbGRdKTtcbiAgICAgICAgICByZXR1cm4gaXRlbURhdGUgJiYgaXRlbURhdGUuaW5jbHVkZXModmFsdWUpO1xuICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgIGNvbHVtbi50eXBlID09PSBUYWJsZVR5cGVFbnVtLkFNT1VOVCB8fFxuICAgICAgICAgIGNvbHVtbi50eXBlID09PSBUYWJsZVR5cGVFbnVtLk5VTUJFUlxuICAgICAgICApIHtcbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgaXRlbVtmaWVsZF0gJiYgaXRlbVtmaWVsZF0udG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHZhbHVlKVxuICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSBpZiAoY29sdW1uLnR5cGUgPT09IFRhYmxlVHlwZUVudW0uQ09NUE9TRUQpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5maWx0ZXJDb21wb3NlZENvbHVtbihpdGVtW2ZpZWxkXSwgdmFsdWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICBpdGVtW2ZpZWxkXSAmJiBpdGVtW2ZpZWxkXS50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModmFsdWUpXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICB0aGlzLmR0LnZhbHVlID0gZmlsdGVyZWREYXRhO1xuICB9XG5cbiAgcHJpdmF0ZSBmaWx0ZXJDb21wb3NlZENvbHVtbihjb21wb3NlZERhdGE6IGFueSwgdmFsdWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGlmIChjb21wb3NlZERhdGEpIHtcbiAgICAgIHJldHVybiBPYmplY3Qua2V5cyhjb21wb3NlZERhdGEpLnNvbWUoKGtleSkgPT4ge1xuICAgICAgICBjb25zdCBjZWxsVmFsdWUgPSBjb21wb3NlZERhdGFba2V5XTtcbiAgICAgICAgaWYgKHR5cGVvZiBjZWxsVmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgcmV0dXJuIGNlbGxWYWx1ZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgZm9ybWF0RGF0ZShkYXRlOiBhbnkpOiBzdHJpbmcge1xuICAgIGlmICghZGF0ZSkgcmV0dXJuICcnO1xuICAgIGlmIChkYXRlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgY29uc3QgZGF5ID0gZGF0ZS5nZXREYXRlKCkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCAnMCcpO1xuICAgICAgY29uc3QgbW9udGggPSAoZGF0ZS5nZXRNb250aCgpICsgMSkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCAnMCcpO1xuICAgICAgY29uc3QgeWVhciA9IGRhdGUuZ2V0RnVsbFllYXIoKS50b1N0cmluZygpO1xuICAgICAgcmV0dXJuIGAke2RheX0vJHttb250aH0vJHt5ZWFyfWA7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgZGF0ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGNvbnN0IHBhcnRzID0gZGF0ZS5zcGxpdCgnLycpO1xuICAgICAgaWYgKHBhcnRzLmxlbmd0aCA9PT0gMykge1xuICAgICAgICByZXR1cm4gYCR7cGFydHNbMF19LyR7cGFydHNbMV19LyR7cGFydHNbMl19YDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBkYXRlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICBleHBvcnRFeGNlbCgpIHtcbiAgICB0aGlzLmV4cG9ydEV4Y2VsRXZlbnQuZW1pdCgpO1xuICB9XG5cbiAgZXhwb3J0UGRmKCkge1xuICAgIHRoaXMuZXhwb3J0UGRmRXZlbnQuZW1pdCgpO1xuICB9XG5cbiAgZ2V0SW1hZ2VTdHlsZShzdHlsZTogVGl0bGVTdHlsZSB8IEltYWdlU3R5bGUgfCB1bmRlZmluZWQpOiB7XG4gICAgW2tleTogc3RyaW5nXTogc3RyaW5nO1xuICB9IHtcbiAgICBpZiAoc3R5bGUpIHtcbiAgICAgIGNvbnN0IGltYWdlU3R5bGU6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7XG4gICAgICAgIHdpZHRoOiAoc3R5bGUgYXMgSW1hZ2VTdHlsZSkud2lkdGggfHwgJ2F1dG8nLFxuICAgICAgICBoZWlnaHQ6IChzdHlsZSBhcyBJbWFnZVN0eWxlKS5oZWlnaHQgfHwgJ2F1dG8nLFxuICAgICAgfTtcblxuICAgICAgaWYgKChzdHlsZSBhcyBJbWFnZVN0eWxlKS5tYXJnaW4pIHtcbiAgICAgICAgaW1hZ2VTdHlsZS5tYXJnaW4gPSAoc3R5bGUgYXMgSW1hZ2VTdHlsZSkubWFyZ2luITtcbiAgICAgIH1cbiAgICAgIGlmICgoc3R5bGUgYXMgSW1hZ2VTdHlsZSkubWFyZ2luTGVmdCkge1xuICAgICAgICBpbWFnZVN0eWxlLm1hcmdpbkxlZnQgPSAoc3R5bGUgYXMgSW1hZ2VTdHlsZSkubWFyZ2luTGVmdCE7XG4gICAgICB9XG4gICAgICBpZiAoKHN0eWxlIGFzIEltYWdlU3R5bGUpLm1hcmdpblJpZ2h0KSB7XG4gICAgICAgIGltYWdlU3R5bGUubWFyZ2luUmlnaHQgPSAoc3R5bGUgYXMgSW1hZ2VTdHlsZSkubWFyZ2luUmlnaHQhO1xuICAgICAgfVxuICAgICAgaWYgKChzdHlsZSBhcyBJbWFnZVN0eWxlKS5tYXJnaW5Ub3ApIHtcbiAgICAgICAgaW1hZ2VTdHlsZS5tYXJnaW5Ub3AgPSAoc3R5bGUgYXMgSW1hZ2VTdHlsZSkubWFyZ2luVG9wITtcbiAgICAgIH1cbiAgICAgIGlmICgoc3R5bGUgYXMgSW1hZ2VTdHlsZSkubWFyZ2luQm90dG9tKSB7XG4gICAgICAgIGltYWdlU3R5bGUubWFyZ2luQm90dG9tID0gKHN0eWxlIGFzIEltYWdlU3R5bGUpLm1hcmdpbkJvdHRvbSE7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBpbWFnZVN0eWxlO1xuICAgIH1cblxuICAgIHJldHVybiB7fTtcbiAgfVxuXG4gIGdldFRpdGxlU3R5bGUoc3R5bGU6IFRpdGxlU3R5bGUgfCBJbWFnZVN0eWxlIHwgdW5kZWZpbmVkKToge1xuICAgIFtrZXk6IHN0cmluZ106IHN0cmluZztcbiAgfSB7XG4gICAgaWYgKHN0eWxlKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBjb2xvcjogc3R5bGUuY29sb3IgfHwgJ2luaGVyaXQnLFxuICAgICAgICBmb250U2l6ZTogKHN0eWxlIGFzIFRpdGxlU3R5bGUpLmZvbnRTaXplIHx8ICdpbmhlcml0JyxcbiAgICAgICAgdGV4dEFsaWduOiAoc3R5bGUgYXMgVGl0bGVTdHlsZSkucG9zaXRpb24gfHwgJ2xlZnQnLFxuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIHt9O1xuICB9XG5cbiAgZm9ybWF0TnVtYmVyKFxuICAgIHZhbHVlOiBudW1iZXIsXG4gICAgZGVjaW1hbFBsYWNlcz86IG51bWJlcixcbiAgICB0aG91c2FuZFNlcGFyYXRvcjogJ2NvbW1hJyB8ICdzcGFjZScgPSAnY29tbWEnLFxuICAgIGRlY2ltYWxTZXBhcmF0b3I6ICdjb21tYScgfCAnZG90JyA9ICdkb3QnXG4gICk6IHN0cmluZyB7XG4gICAgaWYgKHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQgfHwgaXNOYU4odmFsdWUpKSByZXR1cm4gJyc7XG5cbiAgICBsZXQgZm9ybWF0dGVkTnVtYmVyID1cbiAgICAgIGRlY2ltYWxQbGFjZXMgIT09IHVuZGVmaW5lZFxuICAgICAgICA/IHZhbHVlLnRvRml4ZWQoZGVjaW1hbFBsYWNlcylcbiAgICAgICAgOiB2YWx1ZS50b1N0cmluZygpO1xuXG4gICAgaWYgKGRlY2ltYWxTZXBhcmF0b3IgPT09ICdjb21tYScpIHtcbiAgICAgIGZvcm1hdHRlZE51bWJlciA9IGZvcm1hdHRlZE51bWJlci5yZXBsYWNlKCcuJywgJywnKTtcbiAgICB9XG5cbiAgICBpZiAodGhvdXNhbmRTZXBhcmF0b3IgJiYgTWF0aC5hYnModmFsdWUpID49IDEwMDApIHtcbiAgICAgIGNvbnN0IHBhcnRzID0gZm9ybWF0dGVkTnVtYmVyLnNwbGl0KFxuICAgICAgICBkZWNpbWFsU2VwYXJhdG9yID09PSAnY29tbWEnID8gJywnIDogJy4nXG4gICAgICApO1xuICAgICAgcGFydHNbMF0gPSBwYXJ0c1swXS5yZXBsYWNlKFxuICAgICAgICAvXFxCKD89KFxcZHszfSkrKD8hXFxkKSkvZyxcbiAgICAgICAgdGhvdXNhbmRTZXBhcmF0b3IgPT09ICdjb21tYScgPyAnLCcgOiAnICdcbiAgICAgICk7XG4gICAgICBmb3JtYXR0ZWROdW1iZXIgPSBwYXJ0cy5qb2luKGRlY2ltYWxTZXBhcmF0b3IgPT09ICdjb21tYScgPyAnLCcgOiAnLicpO1xuICAgIH1cblxuICAgIHJldHVybiBmb3JtYXR0ZWROdW1iZXI7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJwdC1hZHZhbmNlZC1wcmltZS10YWJsZSB0YWJsZS1jb250YWluZXJcIj5cbiAgPHAtdGFibGVcbiAgICAjZHRcbiAgICBbdmFsdWVdPVwiZGF0YVwiXG4gICAgW2xvYWRpbmddPVwibG9hZGluZ1wiXG4gICAgW3Jvd3NdPVwicm93c1wiXG4gICAgW3BhZ2luYXRvcl09XCJpc1BhZ2luYXRlZFwiXG4gICAgW2dsb2JhbEZpbHRlckZpZWxkc109XCJnbG9iYWxGaWx0ZXJGaWVsZHNcIlxuICAgIFtyb3dzUGVyUGFnZU9wdGlvbnNdPVwicm93c1BlclBhZ2VcIlxuICAgIFt0b3RhbFJlY29yZHNdPVwidG90YWxSZWNvcmRzXCJcbiAgICBbbGF6eV09XCJpc1BhZ2luYXRlZFwiXG4gICAgZGF0YUtleT1cImlkXCJcbiAgICBzdHlsZUNsYXNzPVwicC1kYXRhdGFibGUtZ3JpZGxpbmVzIHAtZGF0YXRhYmxlLXN0cmlwZWRcIlxuICAgIFtzY3JvbGxhYmxlXT1cInRydWVcIlxuICAgIFtzY3JvbGxIZWlnaHRdPVwibWF4SGVpZ2h0ICE9PSBudWxsID8gbWF4SGVpZ2h0IDogdW5kZWZpbmVkXCJcbiAgICAob25GaWx0ZXIpPVwiZmlsdGVyQ29sdW1uKCRldmVudClcIlxuICAgIChvblBhZ2UpPVwiY2hhbmdlUGFnZSgkZXZlbnQpXCJcbiAgICAob25Tb3J0KT1cInNvcnRDb2x1bW4oJGV2ZW50KVwiXG4gID5cbiAgICA8IS0tIENPTEdST1VQOiBzeW5jIGhlYWRlci9ib2R5IHdpZHRocyAtLT5cbiAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiY29sZ3JvdXBcIiBsZXQtY29sdW1ucz5cbiAgICAgIDxjb2xncm91cD5cbiAgICAgICAgPGNvbFxuICAgICAgICAgICpuZ0Zvcj1cImxldCBjb2wgb2YgY29sdW1uc1wiXG4gICAgICAgICAgW3N0eWxlLndpZHRoXT1cImNvbC53aWR0aCB8fCBnZXRIZWFkZXJXaWR0aChjb2wpXCJcbiAgICAgICAgLz5cbiAgICAgIDwvY29sZ3JvdXA+XG4gICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgIDwhLS0gQ0FQVElPTiAtLT5cbiAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiY2FwdGlvblwiPlxuICAgICAgPGRpdiBjbGFzcz1cImZsZXhcIj5cbiAgICAgICAgPGRpdj5cbiAgICAgICAgICA8aDM+VG90YWw6IHt7IHRvdGFsUmVjb3JkcyB9fTwvaDM+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXY+XG4gICAgICAgICAgPCEtLSBDbGVhciBmaWx0ZXJzIC0tPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICpuZ0lmPVwiaGFzU2VhcmNoRmlsdGVyXCJcbiAgICAgICAgICAgIHBCdXR0b25cbiAgICAgICAgICAgIGljb249XCJwaSBwaS1maWx0ZXItc2xhc2hcIlxuICAgICAgICAgICAgY2xhc3M9XCJwLWJ1dHRvbi1yb3VuZGVkIHAtYnV0dG9uLXRleHRcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImNsZWFyKGR0KVwiXG4gICAgICAgICAgICB0aXRsZT1cIkNsZWFyIGZpbHRlcnNcIlxuICAgICAgICAgID48L2J1dHRvbj5cblxuICAgICAgICAgIDwhLS0gRXhwb3J0IHRvIEV4Y2VsIEJ1dHRvbiAtLT5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAqbmdJZj1cImhhc0V4cG9ydEV4Y2VsXCJcbiAgICAgICAgICAgIHBCdXR0b25cbiAgICAgICAgICAgIGljb249XCJwaSBwaS1maWxlLWV4Y2VsXCJcbiAgICAgICAgICAgIGNsYXNzPVwicC1idXR0b24tcm91bmRlZCBwLWJ1dHRvbi10ZXh0XCJcbiAgICAgICAgICAgIChjbGljayk9XCJleHBvcnRFeGNlbCgpXCJcbiAgICAgICAgICAgIHRpdGxlPVwiRXhwb3J0IHRvIEV4Y2VsXCJcbiAgICAgICAgICA+PC9idXR0b24+XG5cbiAgICAgICAgICA8IS0tIEV4cG9ydCB0byBQREYgQnV0dG9uIC0tPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICpuZ0lmPVwiaGFzRXhwb3J0UERGXCJcbiAgICAgICAgICAgIHBCdXR0b25cbiAgICAgICAgICAgIGljb249XCJwaSBwaS1maWxlLXBkZlwiXG4gICAgICAgICAgICBjbGFzcz1cInAtYnV0dG9uLXJvdW5kZWQgcC1idXR0b24tdGV4dFwiXG4gICAgICAgICAgICAoY2xpY2spPVwiZXhwb3J0UGRmKClcIlxuICAgICAgICAgICAgdGl0bGU9XCJFeHBvcnQgdG8gUERGXCJcbiAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtbC1hdXRvXCIgKm5nSWY9XCJoYXNTZWFyY2hGaWx0ZXJcIj5cbiAgICAgICAgICA8cC1pY29uRmllbGQgaWNvblBvc2l0aW9uPVwibGVmdFwiIGNsYXNzPVwibWwtYXV0b1wiPlxuICAgICAgICAgICAgPHAtaW5wdXRJY29uPlxuICAgICAgICAgICAgICA8aSBjbGFzcz1cInBpIHBpLXNlYXJjaFwiPjwvaT5cbiAgICAgICAgICAgIDwvcC1pbnB1dEljb24+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgcElucHV0VGV4dFxuICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgIFsobmdNb2RlbCldPVwic2VhcmNoVmFsdWVcIlxuICAgICAgICAgICAgICAoaW5wdXQpPVwiZmlsdGVyR2xvYmFsKCRldmVudClcIlxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlYXJjaCBrZXl3b3JkXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9wLWljb25GaWVsZD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgPCEtLSBIRUFERVIgLS0+XG4gICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImhlYWRlclwiPlxuICAgICAgPHRyIGNsYXNzPVwic3RpY2t5LWhlYWRlclwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjb2wgb2YgY29sdW1uc1wiPlxuICAgICAgICAgIDx0aFxuICAgICAgICAgICAgKm5nSWY9XCIhY29sLmNoaWxkcmVuOyBlbHNlIGdyb3VwSGVhZGVyXCJcbiAgICAgICAgICAgIHBTb3J0YWJsZUNvbHVtbj1cInt7IGNvbC5jb2RlIH19XCJcbiAgICAgICAgICAgIFtzdHlsZS53aWR0aF09XCJjb2wud2lkdGggfHwgZ2V0SGVhZGVyV2lkdGgoY29sKVwiXG4gICAgICAgICAgICBbc3R5bGUucGFkZGluZ109XCInMHB4J1wiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJbXG4gICAgICAgICAgICAgIGdldEhlYWRlckFsaWduQ2xhc3MoY29sKSxcbiAgICAgICAgICAgICAgY29sLnR5cGUgPT09IFRhYmxlVHlwZUVudW0uQUNUSU9OID8gJ2FjdGlvbi1jb2x1bW4nIDogJydcbiAgICAgICAgICAgIF1cIlxuICAgICAgICAgICAgY29sc3Bhbj1cIjFcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDwhLS0gU09SVEFCTEUgSEVBREVSIC0tPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAqbmdJZj1cImlzU29ydGFibGUgJiYgY29sLmlzU29ydGFibGUgIT09IGZhbHNlOyBlbHNlIG5vU29ydEhlYWRlclwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cImhlYWRlci1jb250YWluZXIgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiXG4gICAgICAgICAgICAgICAgW3N0eWxlLndpZHRoXT1cImNvbC53aWR0aCB8fCBnZXRIZWFkZXJXaWR0aChjb2wpXCJcbiAgICAgICAgICAgICAgICBbc3R5bGUucGFkZGluZ109XCInMHB4J1wiXG4gICAgICAgICAgICAgICAgW3N0eWxlLm1hcmdpbl09XCInMTBweCdcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHNwYW4gW25nQ2xhc3NdPVwiZ2V0SGVhZGVyVGl0bGVDbGFzcyhjb2wpXCI+XG4gICAgICAgICAgICAgICAgICB7eyBjb2wudGl0bGUgfX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpY29ucyBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgICAgICAgICAgICAgIFtzdHlsZS53aWR0aF09XCInNzdweCdcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxwLXNvcnRJY29uIGZpZWxkPVwie3sgY29sLmNvZGUgfX1cIiAvPlxuXG4gICAgICAgICAgICAgICAgICA8IS0tIENPTFVNTiBGSUxURVJTIC0tPlxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImhhc0NvbHVtbkZpbHRlciAmJiBjb2wuaXNGaWx0ZXIgIT09IGZhbHNlXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPCEtLSBDT01QT1NFRCBGSUxURVIgKHVzZXMgYnVpbHQtaW4gQXBwbHkvQ2xlYXIpIC0tPlxuICAgICAgICAgICAgICAgICAgICA8cC1jb2x1bW5GaWx0ZXJcbiAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNvbC50eXBlID09PSBUYWJsZVR5cGVFbnVtLkNPTVBPU0VEXCJcbiAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5PVwibWVudVwiXG4gICAgICAgICAgICAgICAgICAgICAgW2ZpZWxkXT1cImNvbC5jb2RlXCJcbiAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICAgICAgW3Nob3dBcHBseUJ1dHRvbl09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICBbc2hvd0NsZWFyQnV0dG9uXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgIChvbkNsZWFyKT1cIm9uQ29tcG9zZWRDb2x1bW5DbGVhcihjb2wpXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgcFRlbXBsYXRlPVwiZmlsdGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldC1maWx0ZXI9XCJmaWx0ZXJDYWxsYmFja1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQtZmlsdGVyTW9kZWw9XCJmaWx0ZXJNb2RlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgY29tcG9zZWROYW1lIG9mIGNvbC5jb21wb3NlZE5hbWVzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0Q29tcG9zZWRGaWVsZFR5cGUoY29sLCBjb21wb3NlZE5hbWUpID09PVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGFibGVUeXBlRW51bS5TVFJJTkdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAtbXVsdGlTZWxlY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cImZpbHRlcnNbY29tcG9zZWROYW1lXT8ub3B0aW9uc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJmaWx0ZXJzW2NvbXBvc2VkTmFtZV0/LnZhbHVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNvbXBvc2VkRmlsdGVyVmFsdWVDaGFuZ2UoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvc2VkTmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZXZlbnQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyTW9kZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJmaWx0ZXJzW2NvbXBvc2VkTmFtZV0/LnBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk9XCJjaGlwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgbGV0LWl0ZW0gcFRlbXBsYXRlPVwiaXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3VzdG9tLW11bHRpc2VsZWN0LWl0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIml0ZW0uaW1hZ2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NyY109XCJpdGVtLmltYWdlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdD1cImljb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmaWx0ZXItaW1hZ2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgaXRlbS5sYWJlbCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcC1tdWx0aVNlbGVjdD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICA8L3AtY29sdW1uRmlsdGVyPlxuXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gT1RIRVIgVFlQRVMgLS0+XG4gICAgICAgICAgICAgICAgICAgIDxwLWNvbHVtbkZpbHRlclxuICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY29sLnR5cGUgIT09IFRhYmxlVHlwZUVudW0uQ09NUE9TRURcIlxuICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk9XCJtZW51XCJcbiAgICAgICAgICAgICAgICAgICAgICBbZmllbGRdPVwiY29sLmNvZGVcIlxuICAgICAgICAgICAgICAgICAgICAgIFt0eXBlXT1cImdldENvbHVtbkZpbHRlclR5cGUoY29sKVwiXG4gICAgICAgICAgICAgICAgICAgICAgW3Nob3dBcHBseUJ1dHRvbl09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICBbc2hvd0NsZWFyQnV0dG9uXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgIChvbkNsZWFyKT1cIm9uRmlsdGVyQ2xlYXIoY29sLmNvZGUhKVwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8IS0tIE5VTUJFUiAvIEFNT1VOVDogdXNlIHRleHQgaW5wdXQgc28gJy4nIHdvcmtzIC0tPlxuICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgcFRlbXBsYXRlPVwiZmlsdGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbC50eXBlID09PSBUYWJsZVR5cGVFbnVtLk5VTUJFUiB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICBjb2wudHlwZSA9PT0gVGFibGVUeXBlRW51bS5BTU9VTlRcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQtdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcElucHV0VGV4dFxuICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0bW9kZT1cImRlY2ltYWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJsYXRlc3RGaWx0ZXJWYWx1ZXNbY29sLmNvZGUhXSA/PyB2YWx1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uTnVtYmVyRmlsdGVyQ2hhbmdlKGNvbC5jb2RlISwgJGV2ZW50KVxuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIkVudGVyIGEgbnVtYmVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgICAgICAgICAgICAgICAgIDwhLS0gREFURSAtLT5cbiAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgIHBUZW1wbGF0ZT1cImZpbHRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNvbC50eXBlID09PSBUYWJsZVR5cGVFbnVtLkRBVEVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0LWZpbHRlck1vZGVsPVwiZmlsdGVyTW9kZWxcIlxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwLWNhbGVuZGFyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhdGVzdEZpbHRlclZhbHVlc1tjb2wuY29kZSFdID8/IGZpbHRlck1vZGVsPy52YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkZpbHRlclZhbHVlQ2hhbmdlKGNvbC5jb2RlISwgZmlsdGVyTW9kZWwsICRldmVudClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZUZvcm1hdD1cImRkL21tL3l5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJDaG9vc2UgYSBkYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L3AtY2FsZW5kYXI+XG4gICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgICAgICAgICAgICAgICAgIDwhLS0gTVVMVElTRUxFQ1QgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICBwVGVtcGxhdGU9XCJmaWx0ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY29sLnR5cGUgPT09IFRhYmxlVHlwZUVudW0uTVVMVElTRUxFQ1QgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY29sLmZpbHRlck9wdGlvbnMgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY29sLmZpbHRlck9wdGlvbnMubGVuZ3RoID4gMFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldC1maWx0ZXJNb2RlbD1cImZpbHRlck1vZGVsXCJcbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cC1tdWx0aVNlbGVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJjb2wuZmlsdGVyT3B0aW9uc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhdGVzdEZpbHRlclZhbHVlc1tjb2wuY29kZSFdID8/IGZpbHRlck1vZGVsPy52YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkZpbHRlclZhbHVlQ2hhbmdlKGNvbC5jb2RlISwgZmlsdGVyTW9kZWwsICRldmVudClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheT1cImNoaXBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIkNob29zZSBvcHRpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImN1c3RvbS1tdWx0aXNlbGVjdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9wLW11bHRpU2VsZWN0PlxuICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgIDwvcC1jb2x1bW5GaWx0ZXI+XG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgPCEtLSBOT04tU09SVEFCTEUgSEVBREVSIC0tPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNub1NvcnRIZWFkZXI+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cImhlYWRlci1jb250YWluZXIgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiXG4gICAgICAgICAgICAgICAgW3N0eWxlLndpZHRoXT1cImNvbC53aWR0aCB8fCBnZXRIZWFkZXJXaWR0aChjb2wpXCJcbiAgICAgICAgICAgICAgICBbc3R5bGUucGFkZGluZ109XCInMHB4J1wiXG4gICAgICAgICAgICAgICAgW3N0eWxlLm1hcmdpbl09XCInMTBweCdcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHNwYW4gW25nQ2xhc3NdPVwiZ2V0SGVhZGVyVGl0bGVDbGFzcyhjb2wpXCI+XG4gICAgICAgICAgICAgICAgICB7eyBjb2wudGl0bGUgfX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaGFzQ29sdW1uRmlsdGVyICYmIGNvbC5pc0ZpbHRlciAhPT0gZmFsc2VcIj5cbiAgICAgICAgICAgICAgICAgIDwhLS0gQU1PVU5UIGJlaGF2ZXMgbGlrZSBOVU1CRVIgLS0+XG4gICAgICAgICAgICAgICAgICA8cC1jb2x1bW5GaWx0ZXJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjb2wudHlwZSA9PT0gJ0FNT1VOVCdcIlxuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5PVwibWVudVwiXG4gICAgICAgICAgICAgICAgICAgIFtmaWVsZF09XCJjb2wuY29kZVwiXG4gICAgICAgICAgICAgICAgICAgIFt0eXBlXT1cImdldENvbHVtbkZpbHRlclR5cGUoY29sKVwiXG4gICAgICAgICAgICAgICAgICAgIFtjdXJyZW5jeV09XCJnZXRDdXJyZW5jeVN5bWJvbChjb2wpXCJcbiAgICAgICAgICAgICAgICAgICAgW3Nob3dBcHBseUJ1dHRvbl09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgW3Nob3dDbGVhckJ1dHRvbl09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgcFRlbXBsYXRlPVwiZmlsdGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICBsZXQtZmlsdGVyTW9kZWw9XCJmaWx0ZXJNb2RlbFwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgIHBJbnB1dFRleHRcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0bW9kZT1cImRlY2ltYWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxhdGVzdEZpbHRlclZhbHVlc1tjb2wuY29kZSFdID8/IGZpbHRlck1vZGVsPy52YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBvbkZpbHRlclZhbHVlQ2hhbmdlKGNvbC5jb2RlISwgZmlsdGVyTW9kZWwsICRldmVudClcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIkVudGVyIGFuIGFtb3VudFwiXG4gICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgIDwvcC1jb2x1bW5GaWx0ZXI+XG5cbiAgICAgICAgICAgICAgICAgIDxwLWNvbHVtbkZpbHRlclxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNvbC50eXBlICE9PSAnQU1PVU5UJ1wiXG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXk9XCJtZW51XCJcbiAgICAgICAgICAgICAgICAgICAgW2ZpZWxkXT1cImNvbC5jb2RlXCJcbiAgICAgICAgICAgICAgICAgICAgW3R5cGVdPVwiZ2V0Q29sdW1uRmlsdGVyVHlwZShjb2wpXCJcbiAgICAgICAgICAgICAgICAgICAgW3Nob3dBcHBseUJ1dHRvbl09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgW3Nob3dDbGVhckJ1dHRvbl09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPCEtLSBEQVRFIC0tPlxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgICAgICAgICBwVGVtcGxhdGU9XCJmaWx0ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgIGxldC1maWx0ZXJNb2RlbD1cImZpbHRlck1vZGVsXCJcbiAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImdldENvbHVtbkZpbHRlclR5cGUoY29sKSA9PT0gJ2RhdGUnXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxwLWNhbGVuZGFyXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGF0ZXN0RmlsdGVyVmFsdWVzW2NvbC5jb2RlIV0gPz8gZmlsdGVyTW9kZWw/LnZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9uRmlsdGVyVmFsdWVDaGFuZ2UoY29sLmNvZGUhLCBmaWx0ZXJNb2RlbCwgJGV2ZW50KVxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVGb3JtYXQ9XCJkZC9tbS95eVwiXG4gICAgICAgICAgICAgICAgICAgICAgPjwvcC1jYWxlbmRhcj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgICAgICAgICAgICAgICA8IS0tIE1VTFRJU0VMRUNUIC0tPlxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgICAgICAgICBwVGVtcGxhdGU9XCJmaWx0ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgIGxldC1maWx0ZXJNb2RlbD1cImZpbHRlck1vZGVsXCJcbiAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImdldENvbHVtbkZpbHRlclR5cGUoY29sKSA9PT0gJ211bHRpU2VsZWN0J1wiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8cC1tdWx0aVNlbGVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwiY29sLmZpbHRlck9wdGlvbnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxhdGVzdEZpbHRlclZhbHVlc1tjb2wuY29kZSFdID8/IGZpbHRlck1vZGVsPy52YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBvbkZpbHRlclZhbHVlQ2hhbmdlKGNvbC5jb2RlISwgZmlsdGVyTW9kZWwsICRldmVudClcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5PVwiY2hpcFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlbGVjdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImN1c3RvbS1tdWx0aXNlbGVjdFwiXG4gICAgICAgICAgICAgICAgICAgICAgPjwvcC1tdWx0aVNlbGVjdD5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgIDwvcC1jb2x1bW5GaWx0ZXI+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8L3RoPlxuXG4gICAgICAgICAgPCEtLSBHUk9VUEVEIEhFQURFUiAtLT5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgI2dyb3VwSGVhZGVyPlxuICAgICAgICAgICAgPHRoXG4gICAgICAgICAgICAgIFthdHRyLmNvbHNwYW5dPVwiY29sLmNoaWxkcmVuPy5sZW5ndGhcIlxuICAgICAgICAgICAgICBbc3R5bGUud2lkdGhdPVwiY29sLndpZHRoIHx8IGdldEhlYWRlcldpZHRoKGNvbClcIlxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJnZXRIZWFkZXJBbGlnbkNsYXNzKGNvbClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8c3Bhbj57eyBjb2wudGl0bGUgfX08L3NwYW4+XG4gICAgICAgICAgICA8L3RoPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC90cj5cblxuICAgICAgPCEtLSBDSElMRCBIRUFERVJTIC0tPlxuICAgICAgPHRyICpuZ0lmPVwiaGFzR3JvdXBlZENvbHVtbnNcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY29sIG9mIGNvbHVtbnNcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sLmNoaWxkcmVuXCI+XG4gICAgICAgICAgICA8dGhcbiAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGNoaWxkIG9mIGNvbC5jaGlsZHJlblwiXG4gICAgICAgICAgICAgIFtzdHlsZS53aWR0aF09XCJjaGlsZC53aWR0aCB8fCBnZXRIZWFkZXJXaWR0aChjaGlsZClcIlxuICAgICAgICAgICAgICBbc3R5bGUucGFkZGluZ109XCInMHB4J1wiXG4gICAgICAgICAgICA+PC90aD5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L3RyPlxuICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICA8IS0tIEVNUFRZIE1FU1NBR0UgLS0+XG4gICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImVtcHR5bWVzc2FnZVwiPlxuICAgICAgPHRyIGNsYXNzPVwicC1kYXRhdGFibGUtZW1wdHltZXNzYWdlXCI+XG4gICAgICAgIDwhLS0gc3BhbiBhbGwgY29sdW1ucyAtLT5cbiAgICAgICAgPHRkIGNsYXNzPVwiZW1wdHktbWVzc2FnZS1jZWxsXCIgW2F0dHIuY29sc3Bhbl09XCJjb2x1bW5zLmxlbmd0aCB8fCAxXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImVtcHR5LW1lc3NhZ2Utd3JhcHBlclwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImVtcHR5LW1lc3NhZ2VcIj5cbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJwaSBwaS1pbmZvLWNpcmNsZVwiPjwvaT5cbiAgICAgICAgICAgICAgPHA+Tm8gcmVjb3JkcyBhdmFpbGFibGUgdG8gZGlzcGxheS48L3A+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC90ZD5cbiAgICAgIDwvdHI+XG4gICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgIDwhLS0gQk9EWSAtLT5cbiAgICA8bmctdGVtcGxhdGVcbiAgICAgIHBUZW1wbGF0ZT1cImJvZHlcIlxuICAgICAgbGV0LWRhdGFcbiAgICAgIGxldC1lZGl0aW5nPVwiZWRpdGluZ1wiXG4gICAgICBsZXQtcmk9XCJyb3dJbmRleFwiXG4gICAgPlxuICAgICAgPHRyICpuZ0lmPVwiIWxvYWRpbmdcIiBbcEVkaXRhYmxlUm93XT1cImlzRWRpdCA/IGRhdGEgOiBudWxsXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGNvbCBvZiBjb2x1bW5zXCI+XG4gICAgICAgICAgPCEtLSBTSU1QTEUgQ09MVU1OUyAobm8gY2hpbGRyZW4pIC0tPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhY29sLmNoaWxkcmVuOyBlbHNlIGNoaWxkQ29sdW1uc1wiPlxuICAgICAgICAgICAgPCEtLSBFRElUQUJMRSBDRUxMIC0tPlxuICAgICAgICAgICAgPHRkXG4gICAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgICAgaXNFZGl0YWJsZShjb2wuY29kZSEpICYmIGNvbC50eXBlICE9PSBUYWJsZVR5cGVFbnVtLkFDVElPTjtcbiAgICAgICAgICAgICAgICBlbHNlIG5vcm1hbFREXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIFtzdHlsZS53aWR0aF09XCJjb2wud2lkdGggfHwgZ2V0SGVhZGVyV2lkdGgoY29sKVwiXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImdldERhdGFBbGlnbkNsYXNzKGNvbClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8IS0tIEVkaXRhYmxlIGlucHV0IGZvciBOVU1CRVIvREFURS9TVFJJTkcvTVVMVElTRUxFQ1QgLS0+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc011bHRpU2VsZWN0KGNvbC5jb2RlKTsgZWxzZSBkYXRlUGlja2VyXCI+XG4gICAgICAgICAgICAgICAgPHAtY2VsbEVkaXRvcj5cbiAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJpbnB1dFwiPlxuICAgICAgICAgICAgICAgICAgICA8cC1tdWx0aVNlbGVjdFxuICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZFRvPVwiYm9keVwiXG4gICAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxdPVwiZGF0YVtjb2wuY29kZSFdXCJcbiAgICAgICAgICAgICAgICAgICAgICBbc3R5bGVdPVwieyB3aWR0aDogJzEwMCUnIH1cIlxuICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cImNoYW5nZUhhbmRsZXIoZGF0YS5pZCwgY29sLmNvZGUsICRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cIm9wdGlvblZhbHVlc1wiXG4gICAgICAgICAgICAgICAgICAgID48L3AtbXVsdGlTZWxlY3Q+XG4gICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cIm91dHB1dFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXVsdGktc2VsZWN0LWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHJlYyBvZiBkYXRhW2NvbC5jb2RlIV1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwLXRhZyBbdmFsdWVdPVwicmVjXCI+PC9wLXRhZz5cbiAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDwvcC1jZWxsRWRpdG9yPlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2RhdGVQaWNrZXI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzRGF0ZVBpY2tlcihjb2wuY29kZSk7IGVsc2Ugbm9ybWFsSW5wdXRcIj5cbiAgICAgICAgICAgICAgICAgIDxwLWNlbGxFZGl0b3I+XG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJpbnB1dFwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxwLWNhbGVuZGFyXG4gICAgICAgICAgICAgICAgICAgICAgICBbaW5wdXRJZF09XCJkYXRhW2NvbC5jb2RlIV1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxdPVwiZGF0YVtjb2wuY29kZSFdXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VIYW5kbGVyKGRhdGEuaWQsIGNvbC5jb2RlLCAkZXZlbnQpXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2RhdGVGb3JtYXRdPVwiJ2RkL21tL3l5J1wiXG4gICAgICAgICAgICAgICAgICAgICAgPjwvcC1jYWxlbmRhcj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cIm91dHB1dFwiPlxuICAgICAgICAgICAgICAgICAgICAgIHt7IGRhdGFbY29sLmNvZGUhXSB8IGN1c3RvbURhdGUgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgIDwvcC1jZWxsRWRpdG9yPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbm9ybWFsSW5wdXQ+XG4gICAgICAgICAgICAgICAgPHAtY2VsbEVkaXRvcj5cbiAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJpbnB1dFwiPlxuICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICBwSW5wdXRUZXh0XG4gICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cImRhdGFbY29sLmNvZGUhXVwiXG4gICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJvbkNoYW5nZSgkZXZlbnQsIGRhdGEuaWQsIGNvbC5jb2RlKVwiXG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cIm91dHB1dFwiPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbC50eXBlID09PSBUYWJsZVR5cGVFbnVtLkFNT1VOVDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Ugbm9ybWFsT3V0cHV0XG4gICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhW2NvbC5jb2RlIV1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBjdXN0b21DdXJyZW5jeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogZ2V0Q3VycmVuY3lTeW1ib2woY29sKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogY29sLmRlY2ltYWxQbGFjZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGNvbC50aG91c2FuZFNlcGFyYXRvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogY29sLmRlY2ltYWxTZXBhcmF0b3JcbiAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNub3JtYWxPdXRwdXQ+XG4gICAgICAgICAgICAgICAgICAgICAge3sgZGF0YVtjb2wuY29kZSFdIH19XG4gICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDwvcC1jZWxsRWRpdG9yPlxuICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPC90ZD5cblxuICAgICAgICAgICAgPCEtLSBOT04tRURJVEFCTEUgQ0VMTCAoQUxXQVlTIFJFTkRFUkVEKSAtLT5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbm9ybWFsVEQ+XG4gICAgICAgICAgICAgIDx0ZFxuICAgICAgICAgICAgICAgIFtzdHlsZS53aWR0aF09XCJjb2wud2lkdGggfHwgZ2V0SGVhZGVyV2lkdGgoY29sKVwiXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiW1xuICAgICAgICAgICAgICAgICAgZ2V0RGF0YUFsaWduQ2xhc3MoY29sKSxcbiAgICAgICAgICAgICAgICAgIGNvbC50eXBlID09PSBUYWJsZVR5cGVFbnVtLkFDVElPTiA/ICdhY3Rpb24tY29sdW1uJyA6ICcnXG4gICAgICAgICAgICAgICAgXVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8IS0tIEFDVElPTiBjb2x1bW46IGJ1aWx0LWluIGVkaXQvZGVsZXRlICsgY3VzdG9tIGFjdGlvbnMgLS0+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjb2wudHlwZSA9PT0gVGFibGVUeXBlRW51bS5BQ1RJT047IGVsc2Ugbm9uQWN0aW9uQ2VsbFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFjdGlvbi1idXR0b25zLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgICAgICA8IS0tIGJ1aWx0LWluIGRlbGV0ZSAtLT5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiaXNEZWxldGVcIlxuICAgICAgICAgICAgICAgICAgICAgIHBCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICBwUmlwcGxlXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgaWNvbj1cInBpIHBpLXRyYXNoXCJcbiAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiRGVsZXRlKGRhdGEuaWQpXCJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInAtYnV0dG9uLXJvdW5kZWQgcC1idXR0b24tdGV4dFwiXG4gICAgICAgICAgICAgICAgICAgID48L2J1dHRvbj5cblxuICAgICAgICAgICAgICAgICAgICA8IS0tIGJ1aWx0LWluIGlubGluZSBlZGl0IC0tPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXNFZGl0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgcEluaXRFZGl0YWJsZVJvd1xuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhZWRpdGluZ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBwQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICBwUmlwcGxlXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGljb249XCJwaSBwaS1wZW5jaWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImluaXRFZGl0YWJsZVJvdyhkYXRhKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInAtYnV0dG9uLXJvdW5kZWQgcC1idXR0b24tdGV4dFwiXG4gICAgICAgICAgICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZWRpdGluZ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBwU2F2ZUVkaXRhYmxlUm93XG4gICAgICAgICAgICAgICAgICAgICAgICBwQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICBwUmlwcGxlXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGljb249XCJwaSBwaS1jaGVja1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2F2ZUVkaXRhYmxlUm93KGRhdGEpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicC1idXR0b24tcm91bmRlZCBwLWJ1dHRvbi10ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJlZGl0aW5nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBDYW5jZWxFZGl0YWJsZVJvd1xuICAgICAgICAgICAgICAgICAgICAgICAgcEJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgcFJpcHBsZVxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICBpY29uPVwicGkgcGktdGltZXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNhbmNlbEVkaXRhYmxlUm93KGRhdGEpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicC1idXR0b24tcm91bmRlZCBwLWJ1dHRvbi10ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gY3VzdG9tIGFjdGlvbnMgLS0+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgYWN0IG9mIGN1c3RvbUFjdGlvbnNcIlxuICAgICAgICAgICAgICAgICAgICAgIHBCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICBwUmlwcGxlXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwLWJ1dHRvbi1yb3VuZGVkIHAtYnV0dG9uLXRleHRcIlxuICAgICAgICAgICAgICAgICAgICAgIFtpY29uXT1cImFjdC5pY29uIHx8ICdwaSBwaS1lbGxpcHNpcy1oJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiYWN0LnN0eWxlQ2xhc3NcIlxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkN1c3RvbUFjdGlvbkNsaWNrKGFjdCwgZGF0YSlcIlxuICAgICAgICAgICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgIDwhLS0gTk9OLUFDVElPTiBjZWxscyAtLT5cbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI25vbkFjdGlvbkNlbGw+XG4gICAgICAgICAgICAgICAgICA8IS0tIENPTVBPU0VEIC0tPlxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICAgICAgICAgIGNvbC50eXBlID09PSBUYWJsZVR5cGVFbnVtLkNPTVBPU0VEO1xuICAgICAgICAgICAgICAgICAgICAgIGVsc2Ugbm9uQ29tcG9zZWRcbiAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbXBvc2VkLWNlbGxcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGNvbXBvc2VkTmFtZSBvZiBjb2wuY29tcG9zZWROYW1lcztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGkgPSBpbmRleFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIElNQUdFIC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbC5jb21wb3NlZFR5cGVzICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sLmNvbXBvc2VkVHlwZXNbaV0gPT09IFRhYmxlVHlwZUVudW0uSU1BR0VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzcmNdPVwiZGF0YVtjb2wuY29kZSFdPy5bY29tcG9zZWROYW1lXVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0PVwiY29tcG9zZWQtaW1nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNvbXBvc2VkLWltYWdlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldEltYWdlU3R5bGUoY29sLmNvbXBvc2VkU3R5bGVzPy5bY29tcG9zZWROYW1lXSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gU1RSSU5HIC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbC5jb21wb3NlZFR5cGVzICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sLmNvbXBvc2VkVHlwZXNbaV0gPT09IFRhYmxlVHlwZUVudW0uU1RSSU5HXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjb21wb3NlZC10ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldFRpdGxlU3R5bGUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbC5jb21wb3NlZFN0eWxlcz8uW2NvbXBvc2VkTmFtZV1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZGF0YVtjb2wuY29kZSFdPy5bY29tcG9zZWROYW1lXSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNub25Db21wb3NlZD5cbiAgICAgICAgICAgICAgICAgICAgPCEtLSBBTU9VTlQtLT5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY29sLnR5cGUgPT09IFRhYmxlVHlwZUVudW0uQU1PVU5UOyBlbHNlIG5vbkFtb3VudFwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVtjb2wuY29kZSFdXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgY3VzdG9tQ3VycmVuY3lcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGdldEN1cnJlbmN5U3ltYm9sKGNvbClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGNvbC5kZWNpbWFsUGxhY2VzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBjb2wudGhvdXNhbmRTZXBhcmF0b3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGNvbC5kZWNpbWFsU2VwYXJhdG9yXG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNub25BbW91bnQ+XG4gICAgICAgICAgICAgICAgICAgICAgPCEtLSBOVU1CRVItLT5cbiAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjb2wudHlwZSA9PT0gVGFibGVUeXBlRW51bS5OVU1CRVI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Ugbm9uTnVtYmVyXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdE51bWJlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhW2NvbC5jb2RlIV0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sLmRlY2ltYWxQbGFjZXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sLnRob3VzYW5kU2VwYXJhdG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbC5kZWNpbWFsU2VwYXJhdG9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI25vbk51bWJlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gREFURSAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2wudHlwZSA9PT0gVGFibGVUeXBlRW51bS5EQVRFO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Ugbm9ybWFsVHlwZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZm9ybWF0RGF0ZShkYXRhW2NvbC5jb2RlIV0pIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNub3JtYWxUeXBlcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBTVFJJTkcsIE1VTFRJU0VMRUNULS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUYWJsZVR5cGVFbnVtLlNUUklORyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGFibGVUeXBlRW51bS5NVUxUSVNFTEVDVFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXS5pbmNsdWRlcyhjb2wudHlwZSEpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGRhdGFbY29sLmNvZGUhXSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICA8IS0tIENISUxEIENPTFVNTlMgLS0+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNjaGlsZENvbHVtbnM+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjaGlsZCBvZiBjb2wuY2hpbGRyZW5cIj5cbiAgICAgICAgICAgICAgPHRkXG4gICAgICAgICAgICAgICAgW3N0eWxlLndpZHRoXT1cImNoaWxkLndpZHRoIHx8IGdldEhlYWRlcldpZHRoKGNoaWxkKVwiXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiZ2V0RGF0YUFsaWduQ2xhc3MoY2hpbGQpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiaXNFZGl0YWJsZShjaGlsZC5jb2RlKTsgZWxzZSBjaGlsZE5vcm1hbFREXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8cC1jZWxsRWRpdG9yPlxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiaW5wdXRcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgIHBJbnB1dFRleHRcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cImNoaWxkLmNvZGUgPyBkYXRhW2NoaWxkLmNvZGVdIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIm9uQ2hhbmdlKCRldmVudCwgZGF0YS5pZCwgY2hpbGQuY29kZSlcIlxuICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJvdXRwdXRcIj5cbiAgICAgICAgICAgICAgICAgICAgICB7eyBjaGlsZC5jb2RlID8gZGF0YVtjaGlsZC5jb2RlXSA6IFwiXCIgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgIDwvcC1jZWxsRWRpdG9yPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNjaGlsZE5vcm1hbFREPlxuICAgICAgICAgICAgICAgICAge3sgY2hpbGQuY29kZSA/IGRhdGFbY2hpbGQuY29kZV0gOiBcIlwiIH19XG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC90cj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L3AtdGFibGU+XG48L2Rpdj5cbiJdfQ==
|