ms-data-grid 0.0.72 → 0.0.73
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.
|
@@ -1036,10 +1036,10 @@ export class DataGridComponent {
|
|
|
1036
1036
|
this.selectedTableLayout = 'medium';
|
|
1037
1037
|
this.bodyTextFontsSize = 14;
|
|
1038
1038
|
this.globalSearchText = '';
|
|
1039
|
-
|
|
1039
|
+
this.autosizeAllColumns();
|
|
1040
1040
|
}
|
|
1041
1041
|
this.cdr.detectChanges();
|
|
1042
|
-
},
|
|
1042
|
+
}, 0);
|
|
1043
1043
|
}
|
|
1044
1044
|
}
|
|
1045
1045
|
async setColumnsColumnDropdownValus() {
|
|
@@ -1233,13 +1233,27 @@ export class DataGridComponent {
|
|
|
1233
1233
|
this.cdr.detectChanges();
|
|
1234
1234
|
}
|
|
1235
1235
|
cleanColumns(columns) {
|
|
1236
|
-
|
|
1236
|
+
return columns.map((col) => {
|
|
1237
|
+
const { __typename, _id, column_dropdown_value, filterValue, expandedFilter, query, isRowGrouped, ...rest } = col;
|
|
1238
|
+
// Clean dropdown values (__typename removed)
|
|
1239
|
+
const cleanedDropdown = Array.isArray(column_dropdown_value)
|
|
1240
|
+
? column_dropdown_value.map(({ __typename, ...dRest }) => dRest)
|
|
1241
|
+
: column_dropdown_value
|
|
1242
|
+
? (({ __typename, ...dRest }) => dRest)(column_dropdown_value)
|
|
1243
|
+
: null;
|
|
1244
|
+
// Clean query (__typename removed)
|
|
1245
|
+
const cleanedQuery = Array.isArray(query)
|
|
1246
|
+
? query.map(({ __typename, ...qRest }) => qRest)
|
|
1247
|
+
: query
|
|
1248
|
+
? (({ __typename, _ids, ...qRest }) => qRest)(query)
|
|
1249
|
+
: null;
|
|
1237
1250
|
return {
|
|
1238
1251
|
...rest,
|
|
1252
|
+
column_dropdown_value: cleanedDropdown,
|
|
1253
|
+
query: cleanedQuery,
|
|
1239
1254
|
is_groupable: rest.type !== 'image',
|
|
1240
1255
|
};
|
|
1241
1256
|
});
|
|
1242
|
-
return cleanedColumns;
|
|
1243
1257
|
}
|
|
1244
1258
|
onResizeColumn(event, col) {
|
|
1245
1259
|
event.preventDefault();
|
|
@@ -1845,6 +1859,15 @@ export class DataGridComponent {
|
|
|
1845
1859
|
this.cdr.detectChanges();
|
|
1846
1860
|
}, 100);
|
|
1847
1861
|
}, 100);
|
|
1862
|
+
setTimeout(() => {
|
|
1863
|
+
const sendData = {
|
|
1864
|
+
columns: this.cleanColumns(this.columns),
|
|
1865
|
+
filters: this.cleanFilterdColumns(),
|
|
1866
|
+
no_of_records: this.paginationConfig.pageSize,
|
|
1867
|
+
type: this.tableType,
|
|
1868
|
+
};
|
|
1869
|
+
this.createUpdateConfigListing.emit(sendData);
|
|
1870
|
+
}, 500);
|
|
1848
1871
|
}
|
|
1849
1872
|
visibleColumns() {
|
|
1850
1873
|
const flatten = this.flattenColumns(this.columns);
|
|
@@ -2657,7 +2680,7 @@ export class DataGridComponent {
|
|
|
2657
2680
|
this.currentFilterSelectedIds.clear();
|
|
2658
2681
|
const savedIds = col?.query?._ids || [];
|
|
2659
2682
|
savedIds.forEach((id) => this.currentFilterSelectedIds.add(id));
|
|
2660
|
-
this.selectedFilterOptions = this.selectedColumnForFilter?.column_dropdown_value
|
|
2683
|
+
this.selectedFilterOptions = this.selectedColumnForFilter?.column_dropdown_value?.filter((option) => this.currentFilterSelectedIds.has(option?.id || option?._id || option));
|
|
2661
2684
|
setTimeout(() => {
|
|
2662
2685
|
if (this.filterMenueSearchInput) {
|
|
2663
2686
|
this.filterMenueSearchInput.nativeElement.focus();
|
|
@@ -5349,4 +5372,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
5349
5372
|
type: ViewChild,
|
|
5350
5373
|
args: ['fullscreenImageTemplate']
|
|
5351
5374
|
}] } });
|
|
5352
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1ncmlkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGEtZ3JpZC9zcmMvbGliL2RhdGEtZ3JpZC9kYXRhLWdyaWQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YS1ncmlkL3NyYy9saWIvZGF0YS1ncmlkL2RhdGEtZ3JpZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUVULEtBQUssRUFDTCxNQUFNLEVBSU4sU0FBUyxFQUVULFlBQVksRUFFWixZQUFZLEVBTVosdUJBQXVCLEVBRXZCLFlBQVksRUFDWixNQUFNLEVBQ04sUUFBUSxFQUNULE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sRUFVTCxlQUFlLEdBQ2hCLE1BQU0sd0JBQXdCLENBQUM7QUFDaEMsT0FBTyxFQUNMLE9BQU8sRUFDUCxLQUFLLEVBQ0wsS0FBSyxFQUNMLFVBQVUsRUFDVixPQUFPLEVBQ1AsS0FBSyxFQUNMLE9BQU8sR0FDUixNQUFNLHFCQUFxQixDQUFDO0FBRTdCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUVoRCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRzVCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7O0FBV3JFLE1BQU0sQ0FBTixJQUFZLGdCQVFYO0FBUkQsV0FBWSxnQkFBZ0I7SUFDMUIsaUNBQWEsQ0FBQTtJQUNiLDhDQUEwQixDQUFBO0lBQzFCLDhDQUEwQixDQUFBO0lBQzFCLGlEQUE2QixDQUFBO0lBQzdCLDBDQUFzQixDQUFBO0lBQ3RCLDBDQUFzQixDQUFBO0lBQ3RCLGlEQUE2QixDQUFBO0FBQy9CLENBQUMsRUFSVyxnQkFBZ0IsS0FBaEIsZ0JBQWdCLFFBUTNCO0FBR0QsTUFBTSxDQUFD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QixFQUFFLENBQUMsUUFBUSxDQUFDO2dCQXFCbkQsUUFBUTtzQkFEUCxZQUFZO3VCQUFDLGVBQWUsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkE2RmQsWUFBWTtzQkFBdEMsU0FBUzt1QkFBQyxjQUFjO2dCQTZPQSxVQUFVO3NCQUFsQyxTQUFTO3VCQUFDLFlBQVk7Z0JBQ0UsVUFBVTtzQkFBbEMsU0FBUzt1QkFBQyxZQUFZO2dCQUV2QixvQkFBb0I7c0JBRG5CLFNBQVM7dUJBQUMsc0JBQXNCO2dCQUdqQyxvQkFBb0I7c0JBRG5CLFNBQVM7dUJBQUMsc0JBQXNCO2dCQWc0Qkksc0JBQXNCO3NCQUExRCxTQUFTO3VCQUFDLHdCQUF3QjtnQkFDRSxzQkFBc0I7c0JBQTFELFNBQVM7dUJBQUMsd0JBQXdCO2dCQW1lTixjQUFjO3NCQUExQyxTQUFTO3VCQUFDLGdCQUFnQjtnQkE2MEMzQixTQUFTO3NCQURSLFlBQVk7dUJBQUMsa0JBQWtCLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBMkh0QyxPQUFPO3NCQURaLFlBQVk7dUJBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBdUoxQyxXQUFXO3NCQURWLFNBQVM7dUJBQUMsYUFBYTtnQkE4YmMsdUJBQXVCO3NCQUE1RCxTQUFTO3VCQUFDLHlCQUF5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIE9uSW5pdCxcclxuICBJbnB1dCxcclxuICBPdXRwdXQsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIFNpbXBsZUNoYW5nZXMsXHJcbiAgRWxlbWVudFJlZixcclxuICBWaWV3Q2hpbGQsXHJcbiAgQWZ0ZXJWaWV3SW5pdCxcclxuICBIb3N0TGlzdGVuZXIsXHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIE5nWm9uZSxcclxuICBSZW5kZXJlcjIsXHJcbiAgQWZ0ZXJWaWV3Q2hlY2tlZCxcclxuICBFbWJlZGRlZFZpZXdSZWYsXHJcbiAgVGVtcGxhdGVSZWYsXHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgUXVlcnlMaXN0LFxyXG4gIFZpZXdDaGlsZHJlbixcclxuICBpbmplY3QsXHJcbiAgSW5qZWN0b3JcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgU3BsaXRDb2x1bW5zU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3NwbGl0LWNvbHVtbnMuc2VydmljZSc7XHJcbmltcG9ydCB7IENvbW1vblNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9jb21tb24uc2VydmljZSc7XHJcbmltcG9ydCB7XHJcbiAgQ2RrRHJhZyxcclxuICBDZGtEcmFnRHJvcCxcclxuICBDZGtEcmFnRW5kLFxyXG4gIENka0RyYWdFbnRlcixcclxuICBDZGtEcmFnRXhpdCxcclxuICBDZGtEcmFnTW92ZSxcclxuICBDZGtEcmFnU29ydEV2ZW50LFxyXG4gIENka0RyYWdTdGFydCxcclxuICBEcmFnRHJvcCxcclxuICBtb3ZlSXRlbUluQXJyYXksXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XHJcbmltcG9ydCB7XHJcbiAgdHJpZ2dlcixcclxuICBzdGF0ZSxcclxuICBzdHlsZSxcclxuICB0cmFuc2l0aW9uLFxyXG4gIGFuaW1hdGUsXHJcbiAgcXVlcnksXHJcbiAgc3RhZ2dlcixcclxufSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcclxuaW1wb3J0IHsgQ2RrRHJvcExpc3QgfSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcclxuaW1wb3J0IHsgU1RBVFVTRVNfQkFER0VfTUFQIH0gZnJvbSAnLi9zdGF0dXNlcyc7XHJcbmltcG9ydCB7IENvcHlTZXJ2aWNlU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2NvcHktc2VydmljZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgdGFrZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIsIFNhZmVIdG1sIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XHJcbmltcG9ydCB7IEV4cG9ydFNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9leHBvcnQuc2VydmljZSc7XHJcbmltcG9ydCB7IENlbGxIb3N0RGlyZWN0aXZlIH0gZnJvbSAnLi4vZGlyZWN0aXZlcy9jZWxsSG9zdC5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBEYXRlUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IEZvcm1hdEN1cnJlbmN5UGlwZSB9IGZyb20gJy4uL3BpcGVzL2Zvcm1hdC1jdXJyZW5jeS5waXBlJztcclxuXHJcbmludGVyZmFjZSBDZWxsUG9zaXRpb24ge1xyXG4gIHJvd0luZGV4OiBudW1iZXI7XHJcbiAgY29sSW5kZXg6IG51bWJlcjtcclxuICBzdWJDb2xJbmRleDogbnVtYmVyO1xyXG4gIGZpZWxkOiBzdHJpbmc7XHJcbiAga2V5OiBzdHJpbmc7XHJcbn1cclxuZXhwb3J0IGVudW0gUm93QW5pbWF0aW9uVHlwZSB7XHJcbiAgTm9uZSA9ICdub25lJyxcclxuICBTcHJlYWQgPSAnc3ByZWFkQW5pbWF0aW9uJyxcclxuICBCb3VuY2UgPSAnYm91bmNlQW5pbWF0aW9uJyxcclxuICBTbGlkZVVwID0gJ3NsaWRlVXBGcm9tQm90dG9tJyxcclxuICBGbGlwID0gJ2ZsaXBBbmltYXRpb24nLFxyXG4gIFNrZXcgPSAnc2tld0FuaW1hdGlvbicsXHJcbiAgU2xpZGVSaWdodCA9ICdzbGlkZUZyb21SaWdodCcsXHJcbn1cclxuXHJcblxyXG5leHBvcnQgY29uc3Qgc29ydGluZ0FuaW1hdGlvbiA9IHRyaWdnZXIoJ2xpc3RTb3J0JywgW1xyXG4gIHRyYW5zaXRpb24oJyogPT4gKicsIFtcclxuICAgIC8vIFF1ZXJ5IGFsbCBlbGVtZW50cyBlbnRlcmluZyBvciBsZWF2aW5nXHJcbiAgICBxdWVyeSgnOmVudGVyLCA6bGVhdmUnLCBzdHlsZSh7IHBvc2l0aW9uOiAnYWJzb2x1dGUnLCB3aWR0aDogJzEwMCUnIH0pLCB7IG9wdGlvbmFsOiB0cnVlIH0pLFxyXG5cclxuICAgIC8vIEFuaW1hdGUgbGVhdmluZyBlbGVtZW50cyB1cHdhcmQgd2l0aCBmYWRlIG91dFxyXG4gICAgcXVlcnkoJzpsZWF2ZScsIFtcclxuICAgICAgYW5pbWF0ZSgnMzAwbXMgZWFzZS1pbicsIHN0eWxlKHsgdHJhbnNmb3JtOiAndHJhbnNsYXRlWSgtMjBweCknLCBvcGFjaXR5OiAwIH0pKVxyXG4gICAgXSwgeyBvcHRpb25hbDogdHJ1ZSB9KSxcclxuXHJcbiAgICAvLyBTdGFnZ2VyIHRoZSBlbnRlcmluZyBlbGVtZW50cyBmb3IgYSBzbW9vdGhlciBlZmZlY3RcclxuICAgIHF1ZXJ5KCc6ZW50ZXInLCBbXHJcbiAgICAgIHN0eWxlKHsgdHJhbnNmb3JtOiAndHJhbnNsYXRlWSgyMHB4KScsIG9wYWNpdHk6IDAgfSksXHJcbiAgICAgIHN0YWdnZXIoNTAsIFtcclxuICAgICAgICBhbmltYXRlKCczMDBtcyBlYXNlLW91dCcsIHN0eWxlKHsgdHJhbnNmb3JtOiAndHJhbnNsYXRlWSgwKScsIG9wYWNpdHk6IDEgfSkpXHJcbiAgICAgIF0pXHJcbiAgICBdLCB7IG9wdGlvbmFsOiB0cnVlIH0pXHJcbiAgXSlcclxuXSk7XHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnZGF0YS1ncmlkJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZGF0YS1ncmlkLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9kYXRhLWdyaWQuY29tcG9uZW50LnNjc3MnXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICBhbmltYXRpb25zOiBbXHJcbiAgICB0cmlnZ2VyKCdhY2NvcmRpb25Ub2dnbGUnLCBbXHJcbiAgICAgIHN0YXRlKFxyXG4gICAgICAgICdjb2xsYXBzZWQnLFxyXG4gICAgICAgIHN0eWxlKHsgaGVpZ2h0OiAnMHB4Jywgb3ZlcmZsb3c6ICd1bnNldCcgfSlcclxuICAgICAgKSxcclxuICAgICAgc3RhdGUoJ2V4cGFuZGVkJywgc3R5bGUoeyBoZWlnaHQ6ICcqJywgb3ZlcmZsb3c6ICd1bnNldCcgfSkpLFxyXG4gICAgICB0cmFuc2l0aW9uKCdjb2xsYXBzZWQgPD0+IGV4cGFuZGVkJywgYW5pbWF0ZSgnMzAwbXMgZWFzZS1pbicpKSxcclxuICAgIF0pLFxyXG4gICAgdHJpZ2dlcignc2xpZGVUb2dnbGUnLCBbXHJcbiAgICAgIHRyYW5zaXRpb24oJzplbnRlcicsIFtcclxuICAgICAgICBzdHlsZSh7IGhlaWdodDogJzBweCcsIG9wYWNpdHk6IDAsIG92ZXJmbG93OiAnaGlkZGVuJyB9KSxcclxuICAgICAgICBhbmltYXRlKCczMDBtcyBlYXNlLW91dCcsIHN0eWxlKHsgaGVpZ2h0OiAnKicsIG9wYWNpdHk6IDEgfSkpXHJcbiAgICAgIF0pLFxyXG4gICAgICB0cmFuc2l0aW9uKCc6bGVhdmUnLCBbXHJcbiAgICAgICAgc3R5bGUoeyBoZWlnaHQ6ICcqJywgb3BhY2l0eTogMSwgb3ZlcmZsb3c6ICdoaWRkZW4nIH0pLFxyXG4gICAgICAgIGFuaW1hdGUoJzMwMG1zIGVhc2UtaW4nLCBzdHlsZSh7IGhlaWdodDogJzBweCcsIG9wYWNpdHk6IDAgfSkpXHJcbiAgICAgIF0pXHJcbiAgICBdKSxcclxuICAgIHRyaWdnZXIoJ3NsaWRlVXAnLCBbXHJcbiAgICAgIHN0YXRlKCd2b2lkJywgc3R5bGUoeyB0cmFuc2Zvcm06ICd0cmFuc2xhdGVZKDEwMCUpJywgb3BhY2l0eTogMCB9KSksXHJcbiAgICAgIHN0YXRlKCcqJywgc3R5bGUoeyB0cmFuc2Zvcm06ICd0cmFuc2xhdGVZKDApJywgb3BhY2l0eTogMSB9KSksXHJcbiAgICAgIHRyYW5zaXRpb24oJ3ZvaWQgPT4gKicsIGFuaW1hdGUoJzMwMG1zIGVhc2Utb3V0JykpLFxyXG4gICAgICB0cmFuc2l0aW9uKCcqID0+IHZvaWQnLCBhbmltYXRlKCczMDBtcyBlYXNlLWluJykpLFxyXG4gICAgXSksXHJcbiAgICB0cmlnZ2VyKCdyb3dEeW5hbWljJywgW1xyXG5cclxuICAgICAgLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0gU1BSRUFEIC0tLS0tLS0tLS0tLS0tLS0tLS0tICovXHJcbiAgICAgIHRyYW5zaXRpb24oJyogPT4gc3ByZWFkQW5pbWF0aW9uJywgW1xyXG4gICAgICAgIHF1ZXJ5KCc6ZW50ZXInLCBbXHJcbiAgICAgICAgICBzdHlsZSh7IG9wYWNpdHk6IDAsIHRyYW5zZm9ybTogJ3NjYWxlWCgwLjcpJyB9KSxcclxuICAgICAgICAgIHN0YWdnZXIoNjAsIFtcclxuICAgICAgICAgICAgYW5pbWF0ZSgnMzUwbXMgZWFzZS1vdXQnLFxyXG4gICAgICAgICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMSwgdHJhbnNmb3JtOiAnc2NhbGVYKDEpJyB9KVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICBdKVxyXG4gICAgICAgIF0sIHsgb3B0aW9uYWw6IHRydWUgfSksXHJcblxyXG4gICAgICAgIHF1ZXJ5KCc6bGVhdmUnLCBbXHJcbiAgICAgICAgICBzdGFnZ2VyKDQwLCBbXHJcbiAgICAgICAgICAgIGFuaW1hdGUoJzIyMG1zIGVhc2UtaW4nLFxyXG4gICAgICAgICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMCwgdHJhbnNmb3JtOiAnc2NhbGVYKDAuNyknIH0pXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgIF0pXHJcbiAgICAgICAgXSwgeyBvcHRpb25hbDogdHJ1ZSB9KVxyXG4gICAgICBdKSxcclxuXHJcbiAgICAgIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tIEJPVU5DRSAtLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xyXG4gICAgICB0cmFuc2l0aW9uKCcqID0+IGJvdW5jZUFuaW1hdGlvbicsIFtcclxuICAgICAgICBxdWVyeSgnOmVudGVyJywgW1xyXG4gICAgICAgICAgc3R5bGUoeyBvcGFjaXR5OiAwLCB0cmFuc2Zvcm06ICd0cmFuc2xhdGVZKC0xMHB4KScgfSksXHJcbiAgICAgICAgICBzdGFnZ2VyKDQ1LCBbXHJcbiAgICAgICAgICAgIGFuaW1hdGUoXHJcbiAgICAgICAgICAgICAgJzUwMG1zIGN1YmljLWJlemllciguNjgsLTAuNTUsLjI3LDEuNTUpJyxcclxuICAgICAgICAgICAgICBzdHlsZSh7IG9wYWNpdHk6IDEsIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVkoMCknIH0pXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgIF0pXHJcbiAgICAgICAgXSwgeyBvcHRpb25hbDogdHJ1ZSB9KSxcclxuXHJcbiAgICAgICAgcXVlcnkoJzpsZWF2ZScsIFtcclxuICAgICAgICAgIHN0YWdnZXIoNDAsIFtcclxuICAgICAgICAgICAgYW5pbWF0ZSgnMjAwbXMgZWFzZS1pbicsXHJcbiAgICAgICAgICAgICAgc3R5bGUoeyBvcGFjaXR5OiAwLCB0cmFuc2Zvcm06ICd0cmFuc2xhdGVZKDEwcHgpJyB9KVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICBdKVxyXG4gICAgICAgIF0sIHsgb3B0aW9uYWw6IHRydWUgfSlcclxuICAgICAgXSksXHJcblxyXG4gICAgICAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLSBORVcgMTogRkxJUCAtLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xyXG4gICAgICB0cmFuc2l0aW9uKCcqID0+IGZsaXBBbmltYXRpb24nLCBbXHJcbiAgICAgICAgcXVlcnkoJzplbnRlcicsIFtcclxuICAgICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMCwgdHJhbnNmb3JtOiAncm90YXRlWCgtODBkZWcpJyB9KSxcclxuICAgICAgICAgIHN0YWdnZXIoNzAsIFtcclxuICAgICAgICAgICAgYW5pbWF0ZSgnNDUwbXMgZWFzZS1vdXQnLFxyXG4gICAgICAgICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMSwgdHJhbnNmb3JtOiAncm90YXRlWCgwKScgfSlcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgXSlcclxuICAgICAgICBdLCB7IG9wdGlvbmFsOiB0cnVlIH0pLFxyXG5cclxuICAgICAgICBxdWVyeSgnOmxlYXZlJywgW1xyXG4gICAgICAgICAgc3RhZ2dlcig1MCwgW1xyXG4gICAgICAgICAgICBhbmltYXRlKCcyNTBtcyBlYXNlLWluJyxcclxuICAgICAgICAgICAgICBzdHlsZSh7IG9wYWNpdHk6IDAsIHRyYW5zZm9ybTogJ3JvdGF0ZVgoODBkZWcpJyB9KVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICBdKVxyXG4gICAgICAgIF0sIHsgb3B0aW9uYWw6IHRydWUgfSlcclxuICAgICAgXSksXHJcblxyXG4gICAgICAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLSBORVcgMjogU0tFVyAtLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xyXG4gICAgICB0cmFuc2l0aW9uKCcqID0+IHNrZXdBbmltYXRpb24nLCBbXHJcbiAgICAgICAgcXVlcnkoJzplbnRlcicsIFtcclxuICAgICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMCwgdHJhbnNmb3JtOiAnc2tld1koNmRlZykgdHJhbnNsYXRlWSg4cHgpJyB9KSxcclxuICAgICAgICAgIHN0YWdnZXIoNjAsIFtcclxuICAgICAgICAgICAgYW5pbWF0ZSgnMzIwbXMgZWFzZS1vdXQnLFxyXG4gICAgICAgICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMSwgdHJhbnNmb3JtOiAnc2tld1koMGRlZykgdHJhbnNsYXRlWSgwKScgfSlcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgXSlcclxuICAgICAgICBdLCB7IG9wdGlvbmFsOiB0cnVlIH0pLFxyXG5cclxuICAgICAgICBxdWVyeSgnOmxlYXZlJywgW1xyXG4gICAgICAgICAgc3RhZ2dlcig0MCwgW1xyXG4gICAgICAgICAgICBhbmltYXRlKCcyMjBtcyBlYXNlLWluJyxcclxuICAgICAgICAgICAgICBzdHlsZSh7IG9wYWNpdHk6IDAsIHRyYW5zZm9ybTogJ3NrZXdZKC02ZGVnKSB0cmFuc2xhdGVZKC04cHgpJyB9KVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICBdKVxyXG4gICAgICAgIF0sIHsgb3B0aW9uYWw6IHRydWUgfSlcclxuICAgICAgXSksXHJcbiAgICAgIHRyYW5zaXRpb24oJyogPT4gc2xpZGVVcEZyb21Cb3R0b20nLCBbXHJcbiAgICAgICAgcXVlcnkoJzplbnRlcicsIFtcclxuICAgICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMCwgdHJhbnNmb3JtOiAndHJhbnNsYXRlWSgxMDB2aCknIH0pLFxyXG4gICAgICAgICAgc3RhZ2dlcig2MCwgW1xyXG4gICAgICAgICAgICBhbmltYXRlKCc1MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKScsXHJcbiAgICAgICAgICAgICAgc3R5bGUoeyBvcGFjaXR5OiAxLCB0cmFuc2Zvcm06ICd0cmFuc2xhdGVZKDApJyB9KVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICBdKVxyXG4gICAgICAgIF0sIHsgb3B0aW9uYWw6IHRydWUgfSksXHJcblxyXG4gICAgICAgIHF1ZXJ5KCc6bGVhdmUnLCBbXHJcbiAgICAgICAgICBzdGFnZ2VyKDQwLCBbXHJcbiAgICAgICAgICAgIGFuaW1hdGUoJzMwMG1zIGVhc2UtaW4nLFxyXG4gICAgICAgICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMCwgdHJhbnNmb3JtOiAndHJhbnNsYXRlWSgtNTBweCknIH0pXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgIF0pXHJcbiAgICAgICAgXSwgeyBvcHRpb25hbDogdHJ1ZSB9KVxyXG4gICAgICBdKSxcclxuXHJcbiAgICAgIHRyYW5zaXRpb24oJyogPT4gc2xpZGVGcm9tUmlnaHQnLCBbXHJcbiAgICAgICAgcXVlcnkoJzplbnRlcicsIFtcclxuICAgICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMCwgdHJhbnNmb3JtOiAndHJhbnNsYXRlWCgxMDB2dyknIH0pLFxyXG4gICAgICAgICAgc3RhZ2dlcig2MCwgW1xyXG4gICAgICAgICAgICBhbmltYXRlKCc1MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKScsXHJcbiAgICAgICAgICAgICAgc3R5bGUoeyBvcGFjaXR5OiAxLCB0cmFuc2Zvcm06ICd0cmFuc2xhdGVYKDApJyB9KVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICBdKVxyXG4gICAgICAgIF0sIHsgb3B0aW9uYWw6IHRydWUgfSksXHJcblxyXG4gICAgICAgIHF1ZXJ5KCc6bGVhdmUnLCBbXHJcbiAgICAgICAgICBzdGFnZ2VyKDQwLCBbXHJcbiAgICAgICAgICAgIGFuaW1hdGUoJzMwMG1zIGVhc2UtaW4nLFxyXG4gICAgICAgICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMCwgdHJhbnNmb3JtOiAndHJhbnNsYXRlWCg1MHB4KScgfSlcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgXSlcclxuICAgICAgICBdLCB7IG9wdGlvbmFsOiB0cnVlIH0pXHJcbiAgICAgIF0pLFxyXG5cclxuXHJcblxyXG4gICAgXSlcclxuXHJcblxyXG4gIF0sXHJcblxyXG59KVxyXG5leHBvcnQgY2xhc3MgRGF0YUdyaWRDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQsIE9uSW5pdCwgQWZ0ZXJWaWV3Q2hlY2tlZCB7XHJcbiAgLy8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy9cclxuICAvLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovL1xyXG4gIC8vICoqKioqKioqKiogIElucHV0IEdvZXMgSGVyZSAqKioqKioqKioqKiAvL1xyXG4gIC8vICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vXHJcbiAgLy8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy9cclxuXHJcblxyXG4gIEBJbnB1dCgpIHJvd0FuaW1hdGlvbjogUm93QW5pbWF0aW9uVHlwZSA9IFJvd0FuaW1hdGlvblR5cGUuTm9uZTtcclxuXHJcbiAgLy8gUGFnaW5hdGlvbiBDb25maWcgU3RvcmUgSGVyZVxyXG4gIEBJbnB1dCgpIHBhZ2luYXRpb25Db25maWc6IGFueSA9IHt9O1xyXG5cclxuICAvLyBUaGUgZGF0YXNldCBzdG9yZSBoZXJlO1xyXG4gIEBJbnB1dCgpIGRhdGFTZXQ6IGFueVtdID0gW107XHJcblxyXG4gIC8vIFRoZSBjb2x1bW5zIFN0b3JlIEhlcmVcclxuICBASW5wdXQoKSBjb2x1bW5zOiBhbnlbXSA9IFtdO1xyXG5cclxuICAvLyBSb3cgSGVpZ2h0O1xyXG4gIEBJbnB1dCgpIHJvd0hlaWdodDogbnVtYmVyID0gNDQ7XHJcblxyXG4gIC8vIEhlYWRlciBSb3cgSGVpZ2h0O1xyXG4gIEBJbnB1dCgpIGhlYWRlclJvd0hlaWdodDogbnVtYmVyID0gNTA7XHJcblxyXG4gIC8vIFNob3cgVmVydGljYWwgQm9yZGVycztcclxuICBASW5wdXQoKSBzaG93VmVydGljYWxCb3JkZXI6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLy8gRXZlbiBSb3dzIEJhY2tncm91bmQgQ29sb3I7XHJcbiAgQElucHV0KCkgZXZlblJvd3NCYWNrZ3JvdW5kQ29sb3I6IHN0cmluZyB8IHVuZGVmaW5lZCA9ICcnO1xyXG5cclxuICAvLyBFdmVuIFJvd3MgQmFja2dyb3VuZCBDb2xvcjtcclxuICBASW5wdXQoKSBvZGRSb3dzQmFja2dyb3VuZENvbG9yOiBzdHJpbmcgfCB1bmRlZmluZWQgPSAnI2YyZjJmMic7XHJcblxyXG4gIC8vIEhlYWRlciBSb3dzIEJhY2tncm91bmQgQ29sb3I7XHJcbiAgQElucHV0KCkgaGVhZGVyQmFja2dyb3VuZENvbG9yOiBzdHJpbmcgPSAnI2Y2ZjhmZic7XHJcblxyXG4gIC8vIEhlYWRlciBSb3dzIEJhY2tncm91bmQgQ29sb3I7XHJcbiAgQElucHV0KCkgY2hlY2tib3hlc0JhY2tncm91bmRDb2xvcjogc3RyaW5nID0gJyNmNmY4ZmYnO1xyXG5cclxuICAvLyBTaG93IENvbHVtbnMgR3JvdXBpbmc7XHJcbiAgQElucHV0KCkgc2hvd0NvbHVtbnNHcm91cGluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvLyBSb3cgSG92ZXJlZCBCYWNrZ3JvdW5kIGNvbG9yO1xyXG4gIEBJbnB1dCgpIHJvd0hvdmVyQ29sb3I6IHN0cmluZyB8IHVuZGVmaW5lZCA9ICdyZ2JhKDAsIDEyMywgMjU1LCAwLjEpJztcclxuXHJcbiAgLy8gTGVmdCBQaW5uZWRCYWNrZ3JvdW5kIGNvbG9yO1xyXG4gIEBJbnB1dCgpIGxlZnRQaW5uZWRCYWNrZ3JvdW5kQ29sb3I6IHN0cmluZyB8IHVuZGVmaW5lZCA9ICcjZjZmOGZmJztcclxuXHJcbiAgLy8gQm9keSBCYWNrZ3JvdW5kIGNvbG9yO1xyXG4gIEBJbnB1dCgpIGJvZHlCYWNrZ3JvdW5kQ29sb3I6IHN0cmluZyB8IHVuZGVmaW5lZCA9ICcjZjZmOGZmJztcclxuXHJcbiAgLy8gUmlnaHQgUGlubmVkIEJhY2tncm91bmQgY29sb3I7XHJcbiAgQElucHV0KCkgcmlnaHRQaW5uZWRCYWNrZ3JvdW5kQ29sb3I6IHN0cmluZyB8IHVuZGVmaW5lZCA9ICcjZjZmOGZmJztcclxuXHJcbiAgLy8gU2lkZSBNZW51IEJhY2tncm91bmQgY29sb3I7XHJcbiAgQElucHV0KCkgc2lkZW1lbnVCYWNrZ3JvdW5kQ29sb3I6IHN0cmluZyB8IHVuZGVmaW5lZCA9ICcjZjZmOGZmJztcclxuXHJcbiAgLy8gQm9keSB0ZXh0IGNvbG9yO1xyXG4gIEBJbnB1dCgpIGJvZHlUZXh0Q29sb3I6IHN0cmluZyB8IHVuZGVmaW5lZCA9ICcjMGMxMTJiJztcclxuXHJcbiAgLy8gSGVhZGVyIHRleHQgY29sb3I7XHJcbiAgQElucHV0KCkgaGVhZGVyVGV4dENvbG9yOiBzdHJpbmcgfCB1bmRlZmluZWQgPSAnIzJhMWY3Myc7XHJcblxyXG4gIC8vIEhlYWRlciB0ZXh0IGNvbG9yO1xyXG4gIEBJbnB1dCgpIGNoZWNrYm94ZXNDb2xvcjogc3RyaW5nIHwgdW5kZWZpbmVkID0gJyMyYTFmNzMnO1xyXG5cclxuICAvLyBIZWFkZXIgdGV4dCBzaXplO1xyXG4gIEBJbnB1dCgpIGhlYWRlclRleHRGb250c1NpemU6IG51bWJlciB8IHVuZGVmaW5lZCA9IDE0O1xyXG5cclxuICAvLyBCb2R5IHRleHQgY29sb3I7XHJcbiAgQElucHV0KCkgYm9keVRleHRGb250c1NpemU6IG51bWJlciB8IHVuZGVmaW5lZCA9IDE0O1xyXG5cclxuICAvLyBIZWFkZXIgZm9udCB3ZWlnaHQ7XHJcbiAgQElucHV0KCkgaGVhZGVyRm9udFdlaWdodDogbnVtYmVyIHwgdW5kZWZpbmVkID0gNTAwO1xyXG5cclxuICAvLyBCb2R5IEZvbnQgV2VpZ2h0O1xyXG4gIEBJbnB1dCgpIGJvZHlGb250V2VpZ2h0OiBudW1iZXIgfCB1bmRlZmluZWQgPSA0MDA7XHJcblxyXG4gIC8vIENoZWNrZWQgUm93IEJhY2tncm91bmQgQ29sb3I7XHJcbiAgQElucHV0KCkgY2hlY2tlZFJvd0JhY2tncm91bmRDb2xvcjogc3RyaW5nIHwgdW5kZWZpbmVkID0gJ2FsaWNlYmx1ZSc7XHJcblxyXG4gIC8vIGRyb3Bkb3ducyBCYWNrZ3JvdW5kIENvbG9yO1xyXG4gIEBJbnB1dCgpIGRyb3Bkb3duc0JhY2tncm91bmRDb2xvcjogc3RyaW5nIHwgdW5kZWZpbmVkID0gJyNmNmY4ZjgnO1xyXG5cclxuXHJcbiAgQElucHV0KCkgZm9vdGVyUm93QmFja2dyb3VuZENvbG9yOiBzdHJpbmcgfCB1bmRlZmluZWQgPSAnJztcclxuXHJcbiAgLy8gRm9vdGVyIHJvdyBIZWlnaHQ7XHJcbiAgQElucHV0KCkgZm9vdGVyUm93SGVpZ2h0OiBudW1iZXIgPSA0NjtcclxuXHJcbiAgLy8gRm9vdGVyIHJvdyBIZWlnaHQ7XHJcbiAgQElucHV0KCkgdG9wR3JvdXBlZEJhZGdlc0JhY2tncm91bmRDb2xvcjogc3RyaW5nIHwgdW5kZWZpbmVkID0gJyc7XHJcblxyXG4gIC8vIFNob3cgUm93IHdpc2UgZ3JvdXBpbmc7XHJcbiAgQElucHV0KCkgc2hvd1Jvd3NHcm91cGluZzogYm9vbGVhbiB8IHVuZGVmaW5lZCA9IGZhbHNlO1xyXG5cclxuICAvLyBTaG93IFJvdyB3aXNlIGdyb3VwaW5nO1xyXG4gIEBJbnB1dCgpIHNob3dGaWx0ZXJSb3c6IGJvb2xlYW4gfCB1bmRlZmluZWQgPSBmYWxzZTtcclxuXHJcbiAgLy8gU2hvdyBSb3cgd2lzZSBncm91cGluZztcclxuICBASW5wdXQoKSBmb250RmFpbWx5OiBzdHJpbmcgfCB1bmRlZmluZWQgPSAnc2Fucy1zZXJpZic7XHJcblxyXG4gIC8vIFNob3cgU2lkZUNvbHVtbjtcclxuICBASW5wdXQoKSBzaG93U2lkZU1lbnU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLy8gRm9vdGVyIFBhZGRpbmdcclxuICBASW5wdXQoKSBmb290ZXJQYWRkaW5nOiBudW1iZXIgPSAzXHJcblxyXG5cclxuICAvLyBGb290ZXIgUGFkZGluZ1xyXG4gIEBJbnB1dCgpIHRvcEZpbHRlclJvd0hlaWdodDogbnVtYmVyID0gNTA7XHJcblxyXG4gIC8vIFNob3cgUm93cyBzaGFkaW5nXHJcbiAgQElucHV0KCkgcm93U2hhZGluZ0VuYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLy8gU2hvdyBSb3dzIHNoYWRpbmdcclxuICBASW5wdXQoKSBzaG93U2VyaWFsTnVtYmVyOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIC8vIFNpbmdsZSBTcGEgVXJsIEF0dGFjaCB0byBpY29uc1xyXG4gIEBJbnB1dCgpIHNpbmdsZVNwYUFzc2V0c1BhdGg6IHN0cmluZyA9ICdhc3NldHMvJztcclxuXHJcblxyXG4gIC8vIEFwcGxpZWQgRmlsdGVyc1xyXG4gIEBJbnB1dCgpIGZpbHRlcnNDb25maWc6IGFueVtdID0gW107XHJcblxyXG5cclxuICAvLyBBcHBsaWVkIEZpbHRlcnNcclxuICBASW5wdXQoKSBsb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIC8vVmVydGljYWwgU2Nyb2xsYmFyIHN0eWxlXHJcbiAgQElucHV0KCkgdmVydGljYWxTY3JvbGxiYXJXaWR0aDogJ2F1dG8nIHwgJ3RoaW4nID0gJ2F1dG8nO1xyXG5cclxuICAvL0hvcml6aW50YWwgU2Nyb2xsYmFyIHN0eWxlXHJcbiAgQElucHV0KCkgaG9yaXppbnRhbFNjcm9sbGJhcldpZHRoOiAnYXV0bycgfCAndGhpbicgPSAnYXV0byc7XHJcblxyXG4gIC8vIFNob3cgQ2VsbCBkZXRhaWxzIGJveFxyXG4gIEBJbnB1dCgpIHNob3dDZWxsRGV0YWlsc0JveDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvL0RhdGUgZm9ybWF0XHJcblxyXG4gIEBJbnB1dCgpIGRhdGVGb3JtYXQ6IHN0cmluZyA9ICcnXHJcblxyXG4gIC8vRGF0ZSBmb3JtYXRcclxuICBASW5wdXQoKSB0YWJsZVNlYXJjaDogc3RyaW5nID0gJyc7XHJcblxyXG5cclxuICAvL0RhdGUgZm9ybWF0XHJcbiAgQElucHV0KCkgYWN0aW9uczogYW55W10gPSBbJ2VkaXQnLCAnZGVsZXRlJ107XHJcblxyXG5cclxuICAvLyBUYWJsZSBDb25maWcgZm9yIHBhZ2luYXRpb25zIGlzIGhlcmVcclxuICBASW5wdXQoKSBjb25maWc6IGFueTtcclxuXHJcblxyXG4gIC8vIFNlbGVjdGlvbiB0YXNrIGJhclxyXG4gIEBJbnB1dCgpIHNob3dUYXNrYmFyID0gZmFsc2VcclxuXHJcbiAgLy8gVGFibGUgTmFtZSBmb3Igc3RhdGUgbWFuYWdlXHJcbiAgQElucHV0KCkgdGFibGVOYW1lID0gdHJ1ZVxyXG5cclxuXHJcbiAgLy8gTGlzdGluZyB0eXBlXHJcbiAgQElucHV0KCkgbGlzdGluZ1R5cGU6IHN0cmluZyB8IGJvb2xlYW4gPSAnJztcclxuXHJcbiAgLy8gTGlzdGluZyB0eXBlXHJcblxyXG4gIEBJbnB1dCgpIGNoZWNrYm94U3RhdGU6IHsgcmVzZXQ6IGJvb2xlYW4gfSA9IHtcclxuICAgIHJlc2V0OiB0cnVlXHJcbiAgfVxyXG5cclxuICAvLyBUYXNrYmFyIGFjdGlvbnNcclxuICBASW5wdXQoKSB0YXNrYmFyQWN0aW9uczogYW55W10gPSBbXVxyXG5cclxuXHJcbiAgLy8gU29ydGluZyBDb25maWcgdG8gc2hvdyBzb3J0IGljb25zXHJcbiAgQElucHV0KCkgc29ydGluZ0NvbmZpZzogeyBmaWVsZDogc3RyaW5nLCBvcmRlcl9ieTogc3RyaW5nIH0gfCBudWxsID0gbnVsbDtcclxuXHJcblxyXG4gIEBJbnB1dCgpIHRhYmxlRmlsdGVyVmlld0lkOiBhbnkgPSAnJztcclxuXHJcblxyXG4gIEBJbnB1dCgpIHNlbGVjdGVkVGFibGVMYXlvdXQ6IGFueSA9ICdtZWRpdW0nXHJcblxyXG4gIEBJbnB1dCgpIGNsb3NlRHJvcGRvd246IHsgcHJlc2V0OiB7IGNsb3NlZDogYm9vbGVhbiwgbG9hZGluZzogYm9vbGVhbiB9IH0gPSB7IHByZXNldDogeyBjbG9zZWQ6IGZhbHNlLCBsb2FkaW5nOiBmYWxzZSB9IH07XHJcblxyXG4gIC8vIFRhYmxlIFZpZXdcclxuXHJcbiAgLy8gR2xvYmFsU2VhcmNoXHJcbiAgQElucHV0KCkgZ2xvYmFsU2VhcmNoVGV4dDogc3RyaW5nID0gJyc7XHJcblxyXG4gIC8vIE5lc3RlZCBUYWJsZSBSb3cgRm9udHNpemVcclxuICBASW5wdXQoKSBuZXN0ZWRUYWJsZXJvd0ZvbnRzaXplID0gMTQ7XHJcblxyXG4gIC8vIE5lc3RlZCB0YWJsZSByb3cgSGVhZGVyIHJvdyBIZWlnaHRcclxuICBASW5wdXQoKSBuZXN0ZWRUYWJsZUhlYWRlclJvd0hlaWdodCA9IDQwO1xyXG5cclxuICAvLyBOZXN0ZWQgVGFibGUgcm93IGhlaWdodFxyXG4gIEBJbnB1dCgpIG5lc3RlZFRhYmxlcm93SGVpZ2h0ID0gNDU7XHJcblxyXG5cclxuICBASW5wdXQoKSBncmlkVHlwZTogc3RyaW5nID0gJyc7XHJcblxyXG4gIEBJbnB1dCgpIGN1cnJlbmN5U3ltYm9sOiBzdHJpbmcgPSAnJztcclxuXHJcbiAgQElucHV0KCkgY3VycmVuY3lGb3JtYXQ6IHN0cmluZyA9ICcnO1xyXG5cclxuICBASW5wdXQoKSBsZWZ0UGlubmVkQm94c2hhZG93OiBzdHJpbmcgPSAnJztcclxuXHJcbiAgQElucHV0KCkgcmlnaHRQaW5uZWRCb3hzaGFkb3c6IHN0cmluZyA9ICcnO1xyXG5cclxuICAvLyBHbG9iYWxTZWFyY2hcclxuICBASW5wdXQoKSBzZWxlY3RlZFJvd3NCYWNrZ3JvdW5kQ29sb3I6IHN0cmluZyA9ICcjOGFjNWZmJztcclxuXHJcbiAgLy8gR2xvYmFsU2VhcmNoXHJcbiAgQElucHV0KCkgbmVzdGVkVGFibGVIZWFkZXJCYWNrZ3JvdW5kQ29sb3I6IHN0cmluZyA9ICcjZjZmOGZmJztcclxuXHJcblxyXG4gIEBJbnB1dCgpIG5lc3RlZFRhYmxlUm93QmFja2dyb3VuZENvbG9yOiBzdHJpbmcgPSAnI2VhZWFlYSc7XHJcblxyXG4gIEBJbnB1dCgpIHRhYmxlVmlldzogYW55W10gPSBbXTtcclxuXHJcbiAgQElucHV0KCkgYnV0dG9uczogeyBuYW1lOiBzdHJpbmc7IGlzX3Nob3dJY29uOiBib29sZWFuOyBpY29uOiBzdHJpbmcsIGhhc19wZXJtaXNzaW9uOiBib29sZWFuIH1bXSA9IFtdO1xyXG5cclxuICBASW5wdXQoKSBrZWVwTXVsdGlwbGVFeHBhbmRlZERldGFpbHMgPSBmYWxzZTtcclxuXHJcblxyXG4gIEBJbnB1dCgpIHNob3dUb3RhbEFtb3VudFJvdyA9IGZhbHNlO1xyXG5cclxuXHJcbiAgQElucHV0KCkgZW5hYmxlR2xvYmFsU2VhcmNoID0gdHJ1ZTtcclxuXHJcblxyXG4gIEBJbnB1dCgpIHRhYmxlVHlwZSA9ICcnO1xyXG5cclxuXHJcbiAgQElucHV0KCkgZW5hYmxlRXhwb3J0ID0gZmFsc2U7XHJcblxyXG5cclxuICBASW5wdXQoKSBzaG93RnVsbFNjcmVlbkJ1dHRvbiA9IGZhbHNlO1xyXG5cclxuXHJcbiAgQElucHV0KCkgZW5hYmxlQ3V0ID0gZmFsc2U7XHJcblxyXG5cclxuICBASW5wdXQoKSB0YWJzOiBzdHJpbmdbXSA9IFtdO1xyXG5cclxuICBASW5wdXQoKSBzaG93Q2hlY2tib3hlcyA9IHRydWU7XHJcblxyXG5cclxuXHJcblxyXG4gIEBJbnB1dCgpIHJlc2V0QWxsRmlsdGVycyA9IHsgcmVzZXRBbGw6IGZhbHNlIH07XHJcblxyXG5cclxuICBASW5wdXQoKSBjb2x1bW5UaHJlZWRvdHNNdW51Q29uZmlnID0ge1xyXG4gICAgc2hvd1BpbmxlZnQ6IHRydWUsXHJcbiAgICBzaG93UGlucmlnaHQ6IHRydWUsXHJcbiAgICBzaG93QXNjZW5kaW5nOiB0cnVlLFxyXG4gICAgc2hvd0Rlc2NlbmRpbmc6IHRydWUsXHJcbiAgICBzaG93RmlsdGVyOiB0cnVlLFxyXG4gICAgc2hvd1Jvd3NHcm91cGluZzogdGhpcy5zaG93Um93c0dyb3VwaW5nLFxyXG4gICAgc2hvd0F1dG9zaXplQWxsQ29sdW1uczogdHJ1ZSxcclxuICAgIHNob3dBdXRvc2l6ZVRoaXNDb2x1bW46IGZhbHNlLFxyXG4gICAgc2hvd0Nob3NlQ29sdW1uczogZmFsc2UsXHJcbiAgICBzaG93UmVzZXRDb2x1bW5zOiBmYWxzZSxcclxuICB9O1xyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcbiAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xyXG4gIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cclxuICAvLyAgICAgICAgICAgICAgICAgICAgICAgICBPdXQgUHV0IEV2ZW50c1xyXG4gIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cclxuICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXHJcblxyXG5cclxuXHJcbiAgLy9DaGFuZ2UgVGFibGUgTGF5b3V0XHJcbiAgQFZpZXdDaGlsZHJlbihDZWxsSG9zdERpcmVjdGl2ZSkgY2VsbEhvc3RzITogUXVlcnlMaXN0PENlbGxIb3N0RGlyZWN0aXZlPjtcclxuXHJcbiAgQE91dHB1dCgpIHB1YmxpYyBjaGFuZ2VMYXlvdXQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgQE91dHB1dCgpIHB1YmxpYyBjdXN0b21DZWxsRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgLy8gRmlsdGVyIEFwcGx5IGV2ZW50O1xyXG4gIEBPdXRwdXQoKSBwdWJsaWMgZmlsdGVyT3B0aW9ucyA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuICBAT3V0cHV0KCkgZ2VuZXJpY0V2ZW50OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgQE91dHB1dCgpIHRhYmxlUHJlc2V0Q29uZmlnOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgQE91dHB1dCgpIHNvcnRpbmdPcmRlck9wdGlvbnM6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gIEBPdXRwdXQoKSBjcmVhdGVVcGRhdGVDb25maWdMaXN0aW5nOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuICBpc0Z1bGxTY3JlZW4gPSBmYWxzZTtcclxuICBhY3RpdmVUYWI6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG4gIGdyb3VwZWRDb2x1bW5zOiBhbnlbXSA9IFtdO1xyXG4gIGFjdGl2ZUNvbDogYW55ID0gbnVsbDtcclxuICBhY3RpdmVGaWx0ZXJDZWxsOiBhbnkgPSBudWxsO1xyXG4gIHNob3dBY3Rpb25zRHJvcERvd24gPSBmYWxzZTtcclxuICBzaWRlTWVudVZpc2libGUgPSBmYWxzZTtcclxuICBwaXZvdE1vZGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBjb2x1bW5TZWFyY2g6IHN0cmluZyA9ICcnO1xyXG4gIGV4cGFuZEFsbEFjY29yZGlhbnMgPSB0cnVlO1xyXG4gIGN1cnJlbnRPcGVuZWRTaWRlTWVudWU6ICdjb2xzJyB8ICdmaWx0cnMnIHwgbnVsbCA9IG51bGw7XHJcbiAgb3JpZ2luYWxDb2x1bW5zOiBhbnlbXSA9IFtdO1xyXG4gIG9yaWdpbmFsRGF0YVNldDogYW55W10gPSBbXTtcclxuICBhY3RpdmVUb3BCdXR0b246IHN0cmluZyB8IG51bGwgPSAnJztcclxuICBmaWx0ZXJDb2x1bW5zTGlzdDogYW55W10gPSBbXTtcclxuICBncm91cEJveFBhZGRpbmcgPSAyMDA7XHJcbiAgcHJlc2V0TmFtZTogc3RyaW5nID0gJyc7XHJcbiAgcHJlc2V0RmlsdGVyOiBib29sZWFuID0gZmFsc2U7XHJcbiAgc2VhcmNoVGV4dFByZXNldFRhYmxlID0gJyc7XHJcbiAgYWRkRmlsdGVyQ29sdW1uSW5wdXQgPSAnJztcclxuICBzZWFyY2hJbkRyb3Bkb3duID0gJyc7XHJcbiAgcHJpdmF0ZSBzZWNyZXRLZXkgPSAndGItc3VwZXItYWRtaW4nXHJcbiAgYWRkRmlsdGVyRHJvcGRvd25TZWFyY2ggPSAnJ1xyXG4gIHRvcFNob3dIaWRlQ29sdW1ucyA9ICcnO1xyXG4gIGNob3NlQ29sdW1uc1NlYXJjaCA9ICcnXHJcbiAgc2lkZU5lc3RlZEZpbHRlclNlYXJjaCA9ICcnXHJcbiAgZWRpdGluRHJvcGRvd25TZWFyY2ggPSAnJztcclxuICBpc1RocmVlRG90c0ZpbHRlck9wZW4gPSBmYWxzZTtcclxuICBjb25maXJtRGVsZXRlID0gZmFsc2U7XHJcbiAgZm9udEZhbWlsaWVzOiBzdHJpbmdbXSA9IFtcclxuICAgIC8vIENvbW1vbiBFeGNlbCBmb250c1xyXG4gICAgJ0FyaWFsJyxcclxuICAgICdBcmlhbCBCbGFjaycsXHJcbiAgICAnQmFobnNjaHJpZnQnLFxyXG4gICAgJ0NhbGlicmknLFxyXG4gICAgJ0NhbWJyaWEnLFxyXG4gICAgJ0NhbWJyaWEgTWF0aCcsXHJcbiAgICAnbWF0aCcsXHJcbiAgICAnQ2FuZGFyYScsXHJcbiAgICAnQ29taWMgU2FucyBNUycsXHJcbiAgICAnQ29uc29sYXMnLFxyXG4gICAgJ0NvbnN0YW50aWEnLFxyXG4gICAgJ0NvcmJlbCcsXHJcbiAgICAnQ291cmllciBOZXcnLFxyXG4gICAgJ0VicmltYScsXHJcbiAgICAnRnJhbmtsaW4gR290aGljIE1lZGl1bScsXHJcbiAgICAnR2FicmlvbGEnLFxyXG4gICAgJ0dhZHVnaScsXHJcbiAgICAnR2VvcmdpYScsXHJcbiAgICAnSW1wYWN0JyxcclxuICAgICdJbmsgRnJlZScsXHJcbiAgICAnSmF2YW5lc2UgVGV4dCcsXHJcbiAgICAnTGVlbGF3YWRlZSBVSScsXHJcbiAgICAnTHVjaWRhIENvbnNvbGUnLFxyXG4gICAgJ0x1Y2lkYSBTYW5zIFVuaWNvZGUnLFxyXG4gICAgJ01hbGd1biBHb3RoaWMnLFxyXG4gICAgJ01pY3Jvc29mdCBIaW1hbGF5YScsXHJcbiAgICAnTWljcm9zb2Z0IEpoZW5nSGVpJyxcclxuICAgICdNaWNyb3NvZnQgTmV3IFRhaSBMdWUnLFxyXG4gICAgJ01pY3Jvc29mdCBQaGFnc1BhJyxcclxuICAgICdNaWNyb3NvZnQgU2FucyBTZXJpZicsXHJcbiAgICAnTWljcm9zb2Z0IFRhaSBMZScsXHJcbiAgICAnTWljcm9zb2Z0IFlhSGVpJyxcclxuICAgICdNaWNyb3NvZnQgWWkgQmFpdGknLFxyXG4gICAgJ01vbmdvbGlhbiBCYWl0aScsXHJcbiAgICAnTVMgR290aGljJyxcclxuICAgICdNUyBQR290aGljJyxcclxuICAgICdNUyBVSSBHb3RoaWMnLFxyXG4gICAgJ01WIEJvbGknLFxyXG4gICAgJ05pcm1hbGEgVUknLFxyXG4gICAgJ1BhbGF0aW5vIExpbm90eXBlJyxcclxuICAgICdTZWdvZSBQcmludCcsXHJcbiAgICAnU2Vnb2UgU2NyaXB0JyxcclxuICAgICdTZWdvZSBVSScsXHJcbiAgICAnU2Vnb2UgVUkgSGlzdG9yaWMnLFxyXG4gICAgJ1NlZ29lIFVJIEVtb2ppJyxcclxuICAgICdTZWdvZSBVSSBTeW1ib2wnLFxyXG4gICAgJ1NpbVN1bicsXHJcbiAgICAnU2l0a2EgU21hbGwnLFxyXG4gICAgJ1N5bGZhZW4nLFxyXG4gICAgJ1N5bWJvbCcsXHJcbiAgICAnVGFob21hJyxcclxuICAgICdUaW1lcyBOZXcgUm9tYW4nLFxyXG4gICAgJ1RyZWJ1Y2hldCBNUycsXHJcbiAgICAnVmVyZGFuYScsXHJcbiAgICAnV2ViZGluZ3MnLFxyXG4gICAgJ1dpbmdkaW5ncycsXHJcbiAgICAnWXUgR290aGljJyxcclxuICAgICdzYW5zLXNlcmlmJyxcclxuICAgICdzZXJpZicsXHJcbiAgICAnbW9ub3NwYWNlJyxcclxuICAgICdJbnRlcidcclxuICBdO1xyXG5cclxuICBmb250U2l6ZXM6IHN0cmluZ1tdID0gW1xyXG4gICAgJzgnLCAnOScsICcxMCcsICcxMScsICcxMicsICcxNCcsICcxNicsICcxOCcsICcyMCcsICcyNCcsICcyOCcsICczMidcclxuICBdO1xyXG5cclxuICBoYXNTY3JvbGwgPSBmYWxzZTtcclxuXHJcblxyXG5cclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGNvbHVtblNlcnZpY2U6IFNwbGl0Q29sdW1uc1NlcnZpY2UsXHJcbiAgICBwdWJsaWMgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIHB1YmxpYyBjb21tb25TZXZpY2U6IENvbW1vblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXHJcbiAgICBwcml2YXRlIG5nWm9uZTogTmdab25lLFxyXG4gICAgcHJpdmF0ZSBjb3B5U2VydmljZTogQ29weVNlcnZpY2VTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxyXG4gICAgcHJpdmF0ZSBzYW5pdGl6ZXI6IERvbVNhbml0aXplcixcclxuICAgIHByaXZhdGUgZXhwb3J0U2VydmljZTogRXhwb3J0U2VydmljZSxcclxuICAgIHByaXZhdGUgZGF0ZVBpcGU6IERhdGVQaXBlLFxyXG4gICAgcHJpdmF0ZSBmb3JtYXRDdXJyZW5jeTogRm9ybWF0Q3VycmVuY3lQaXBlLFxyXG5cclxuICApIHsgfVxyXG5cclxuICBAVmlld0NoaWxkKCdjZWxsVGV4dCcsIHsgc3RhdGljOiBmYWxzZSB9KSBjZWxsVGV4dCE6IGFueTtcclxuICBAVmlld0NoaWxkKCduZXN0ZWRIZWFkZXInLCB7IHN0YXRpYzogZmFsc2UgfSkgbmVzdGVkSGVhZGVyITogRWxlbWVudFJlZjtcclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICB0aGlzLm5nWm9uZS5vblN0YWJsZS5waXBlKHRha2UoMSkpLnN1YnNjcmliZShhc3luYyAoKSA9PiB7XHJcbiAgICAgIGF3YWl0IHRoaXMuU2V0Q29sdW1uc0RlZmF1bHRXaWR0aCgpO1xyXG4gICAgICBhd2FpdCB0aGlzLnJlZnJlc2hIZWFkZXJzKCk7XHJcbiAgICAgIHRoaXMudXBkYXRlRmxhdHRlbmVkRGF0YSgpO1xyXG4gICAgICB0aGlzLmNvbXB1dGVWaWV3cG9ydFJvd3MoKTtcclxuICAgICAgdGhpcy51cGRhdGVWaXNpYmxlUm93cygwKTtcclxuICAgICAgdGhpcy5oYXNTY3JvbGwgPSB0aGlzLmhhc0hvcml6b250YWxTY3JvbGxiYXIoKTtcclxuXHJcbiAgICAgIGlmICh0aGlzLmNlbGxUZXh0KSB7XHJcbiAgICAgICAgY29uc3Qgb2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIoKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIG9ic2VydmVyLm9ic2VydmUodGhpcy5jZWxsVGV4dC5uYXRpdmVFbGVtZW50KTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLnJlbmRlckN1c3RvbUNlbGxzKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGluamVjdG9yID0gaW5qZWN0KEluamVjdG9yKTtcclxuXHJcbiAgY3JlYXRlQ2VsbEluamVjdG9yKHJvdzogYW55LCBjb2w6IGFueSk6IEluamVjdG9yIHtcclxuICAgIHJldHVybiBJbmplY3Rvci5jcmVhdGUoe1xyXG4gICAgICBwcm92aWRlcnM6IFtcclxuICAgICAgICB7IHByb3ZpZGU6ICdyb3dEYXRhJywgdXNlVmFsdWU6IHJvdyB9LFxyXG4gICAgICAgIHsgcHJvdmlkZTogJ2NvbERhdGEnLCB1c2VWYWx1ZTogY29sIH1cclxuICAgICAgXSxcclxuICAgICAgcGFyZW50OiB0aGlzLmluamVjdG9yXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG5cclxuICBwcml2YXRlIHJlbmRlckN1c3RvbUNlbGxzKCk6IHZvaWQge1xyXG4gICAgY29uc3QgaG9zdHMgPSB0aGlzLmNlbGxIb3N0cy50b0FycmF5KCk7XHJcbiAgICBsZXQgaG9zdEluZGV4ID0gMDtcclxuXHJcbiAgICBmb3IgKGNvbnN0IHJvdyBvZiB0aGlzLnZpc2libGVSb3dzKSB7XHJcbiAgICAgIGZvciAoY29uc3QgY29sIG9mIHRoaXMuY29sdW1ucykge1xyXG4gICAgICAgIGNvbnN0IGhvc3QgPSBob3N0c1tob3N0SW5kZXgrK107XHJcbiAgICAgICAgaWYgKCFob3N0IHx8ICFjb2wuY2VsbFJlbmRlcmVyKSBjb250aW51ZTtcclxuXHJcbiAgICAgICAgY29uc3Qgdmlld0NvbnRhaW5lciA9IGhvc3Qudmlld0NvbnRhaW5lclJlZjtcclxuICAgICAgICB2aWV3Q29udGFpbmVyLmNsZWFyKCk7XHJcblxyXG4gICAgICAgIGNvbnN0IGNvbXBSZWYgPSB2aWV3Q29udGFpbmVyLmNyZWF0ZUNvbXBvbmVudChjb2wuY2VsbFJlbmRlcmVyKTtcclxuXHJcbiAgICAgICAgY29uc3QgcGFyYW1zID0ge1xyXG4gICAgICAgICAgcm93LFxyXG4gICAgICAgICAgY29sLFxyXG4gICAgICAgICAgdmFsdWU6IHRoaXMuZ2V0TmVzdGVkVmFsdWUocm93LCBjb2wuZmllbGQpLFxyXG4gICAgICAgICAgYXBpOiB0aGlzLFxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIGlmICgoY29tcFJlZi5pbnN0YW5jZSBhcyBhbnkpLmdyaWRJbml0KSB7XHJcbiAgICAgICAgICAoY29tcFJlZi5pbnN0YW5jZSBhcyBhbnkpLmdyaWRJbml0KHBhcmFtcyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0NoZWNrZWQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmFkZFN0eWxlc1RvSW1hZ2VzKCk7XHJcbiAgICB0aGlzLmhhc1Njcm9sbCA9IHRoaXMuaGFzSG9yaXpvbnRhbFNjcm9sbGJhcigpO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICAvLyAgaWYgKHRoaXMudGFicz8ubGVuZ3RoKSB7XHJcbiAgICAvLyAgIHRoaXMuYWN0aXZlVGFiID0gdGhpcy50YWJzWzBdO1xyXG4gICAgLy8gfVxyXG4gICAgLy8gdGhpcy5hdXRvc2l6ZUFsbENvbHVtbnMoKTtcclxuICAgIGlmICghdGhpcy5jdXJyZXRhVGFibGVQcmVzZXRGb3JVcGRhdGUpIHtcclxuICAgICAgdGhpcy5hdXRvc2l6ZUFsbENvbHVtbnMoKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBjb25zdCB1c2VyID0gdGhpcy5nZXREZWNyeXB0KCd1c2VyJyk7XHJcbiAgICAvLyB0aGlzLmN1cnJlbmN5Rm9ybWF0ID0gdXNlcj8uY3VycmVuY3lfZm9ybWF0O1xyXG4gICAgLy8gdGhpcy5jdXJyZW5jeVN5bWJvbCA9IHVzZXI/LmN1cnJlbmN5X3N5bWJvbDtcclxuICAgIC8vIHRoaXMuZGF0ZUZvcm1hdCA9IHVzZXI/LmRhdGVfZm9ybWF0O1xyXG4gICAgaWYgKCF0aGlzLmRhdGVGb3JtYXQpIHtcclxuICAgICAgY29uc3Qgc3RvcmVkRGF0ZUZvcm1hdCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdkYXRlZm9ybWF0Jyk7XHJcbiAgICAgIHRoaXMuZGF0ZUZvcm1hdCA9IHN0b3JlZERhdGVGb3JtYXQgPyBKU09OLnBhcnNlKHN0b3JlZERhdGVGb3JtYXQpIDogJ2RkL01NL3l5eXknO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghdGhpcy5jdXJyZW5jeUZvcm1hdCkge1xyXG4gICAgICBjb25zdCBzdG9yZWRDdXJyZW5jeUZvcm1hdCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdjdXJyZW5jeUZvcm1hdCcpO1xyXG4gICAgICB0aGlzLmN1cnJlbmN5Rm9ybWF0ID0gc3RvcmVkQ3VycmVuY3lGb3JtYXQgPyBKU09OLnBhcnNlKHN0b3JlZEN1cnJlbmN5Rm9ybWF0KSA6ICcxLDIzNCw1NjcuODknO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghdGhpcy5jdXJyZW5jeVN5bWJvbCkge1xyXG4gICAgICBjb25zdCBzdG9yZWRDdXJyZW5jeVN5bWJvbCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdjdXJyZW5jeVN5bWJvbCcpO1xyXG4gICAgICB0aGlzLmN1cnJlbmN5U3ltYm9sID0gc3RvcmVkQ3VycmVuY3lTeW1ib2wgPyBKU09OLnBhcnNlKHN0b3JlZEN1cnJlbmN5U3ltYm9sKSA6ICckJztcclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICAvLyBwcml2YXRlIGdldERlY3J5cHQoa2V5OnN0cmluZyl7XHJcbiAgLy8gICAgIGNvbnN0IHZhbHVlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oa2V5KVxyXG4gIC8vICAgICB0cnkge1xyXG4gIC8vICAgICAgIHJldHVybiBKU09OLnBhcnNlKENyeXB0b0pTLkFFUy5kZWNyeXB0KHZhbHVlIGFzIHN0cmluZywgdGhpcy5zZWNyZXRLZXkpLnRvU3RyaW5nKENyeXB0b0pTLmVuYy5VdGY4KSlcclxuICAvLyAgICAgfSBjYXRjaCAoZSkge1xyXG4gIC8vICAgICAgIHJldHVybiBudWxsO1xyXG4gIC8vICAgICB9XHJcbiAgLy8gICB9XHJcblxyXG4gIGRhdGFTZXRMb2FkaW5nID0gZmFsc2U7XHJcbiAgYXN5bmMgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xyXG4gICAgaWYgKGNoYW5nZXNbJ2NvbHVtbnMnXSkge1xyXG4gICAgICBhd2FpdCB0aGlzLnNldENvbHVtbnNDb2x1bW5Ecm9wZG93blZhbHVzKCk7XHJcblxyXG4gICAgfVxyXG5cclxuICAgIGlmIChjaGFuZ2VzWyd0YWJzJ10pIHtcclxuICAgICAgaWYgKGNoYW5nZXNbJ3RhYnMnXSkge1xyXG4gICAgICAgIGNvbnN0IGFsbFRhYnMgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdhY3RpdmVUYWJzJykgfHwgJ3t9Jyk7XHJcbiAgICAgICAgY29uc3Qgc2F2ZWRUYWIgPSBhbGxUYWJzW3RoaXMudGFibGVUeXBlXTtcclxuICAgICAgICBpZih0aGlzLnRhYnMuaW5jbHVkZXMoJ0N1cnJlbnQgUG9saWN5Jykpe1xyXG4gICAgICAgICAgdGhpcy5hY3RpdmVUYWIgPSB0aGlzLnRhYnM/LlsxXSB8fCAnQ3VycmVudCBQb2xpY3knO1xyXG4gICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgdGhpcy5hY3RpdmVUYWIgPSBzYXZlZFRhYiB8fCB0aGlzLnRhYnM/LlswXTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLnRhYmxlVHlwZSkge1xyXG4gICAgICAgICAgdGhpcy5zZXRBY3RpdmVUYWIodGhpcy5hY3RpdmVUYWIpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKGNoYW5nZXNbJ2ZpbHRlcnNDb25maWcnXSkge1xyXG4gICAgICB0aGlzLmNoZWNrRmlsdGVyQ2hhbmdlc0VmZmVjdCgpO1xyXG4gICAgICBhd2FpdCB0aGlzLmFwcGx5RmlsdGVyb3B0aW9uTGlzdCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChjaGFuZ2VzWydjb2x1bW5zJ10/LmN1cnJlbnRWYWx1ZT8ubGVuZ3RoKSB7XHJcblxyXG4gICAgICBhd2FpdCB0aGlzLmFwcGx5RmlsdGVyb3B0aW9uTGlzdCgpO1xyXG5cclxuICAgICAgdGhpcy5vcmlnaW5hbENvbHVtbnMgPSB0aGlzLmNvbHVtbnMubWFwKGNvbCA9PiAoe1xyXG4gICAgICAgIC4uLmNvbCxcclxuICAgICAgICBxdWVyeTogY29sLnF1ZXJ5ID8geyAuLi5jb2wucXVlcnkgfSA6IG51bGwsXHJcbiAgICAgICAgY29sdW1uX2Ryb3Bkb3duX3ZhbHVlOiBjb2wuY29sdW1uX2Ryb3Bkb3duX3ZhbHVlXHJcbiAgICAgICAgICA/IFsuLi5jb2wuY29sdW1uX2Ryb3Bkb3duX3ZhbHVlXVxyXG4gICAgICAgICAgOiBbXSxcclxuICAgICAgfSkpO1xyXG5cclxuXHJcbiAgICAgIGlmICh0aGlzLmRhdGFHcmlkQ29udGFpbmVyPy5uYXRpdmVFbGVtZW50Py5vZmZzZXRXaWR0aCkge1xyXG4gICAgICAgIGF3YWl0IHRoaXMuU2V0Q29sdW1uc0RlZmF1bHRXaWR0aCgpO1xyXG4gICAgICAgIGF3YWl0IHRoaXMudXBkYXRlQ29sdW1uV2lkdGhzQW5kR3JvdXBzKCk7XHJcbiAgICAgICAgYXdhaXQgdGhpcy5yZWZyZXNoUHJldmlld0NvbHVtbnMoKTtcclxuICAgICAgICB0aGlzLnNldFNlY3Rpb25zV2lkdGgoKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5uZ1pvbmUub25TdGFibGUucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGNoYW5nZXNbJ2RhdGFTZXQnXSkge1xyXG4gICAgICB0aGlzLmRhdGFTZXQgPSB0aGlzLmRhdGFTZXQ/Lm1hcCgocm93LCBpKSA9PiAoe1xyXG4gICAgICAgIC4uLnJvdyxcclxuICAgICAgICBfX3ZpcnR1YWxJbmRleDogaSArIDEsXHJcbiAgICAgIH0pKTtcclxuICAgICAgdGhpcy5vcmlnaW5hbERhdGFTZXQgPSBzdHJ1Y3R1cmVkQ2xvbmUodGhpcy5kYXRhU2V0KTtcclxuICAgICAgdGhpcy5leHBhbmRlZENlbGxzLmNsZWFyKCk7XHJcbiAgICAgIHRoaXMudXBkYXRlRmxhdHRlbmVkRGF0YSgpO1xyXG5cclxuICAgICAgdGhpcy5uZ1pvbmUub25TdGFibGUucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuY29tcHV0ZVZpZXdwb3J0Um93cygpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlVmlzaWJsZVJvd3MoMCk7XHJcblxyXG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgICBpZiAodGhpcy5jZW50ZXJQaW5uZWRIZWFkZXI/Lm5hdGl2ZUVsZW1lbnQpIHtcclxuICAgICAgICB2b2lkIHRoaXMuY2VudGVyUGlubmVkSGVhZGVyLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGg7XHJcblxyXG4gICAgICAgIHRoaXMuZGF0YVNldExvYWRpbmcgPSB0cnVlO1xyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgaWYgKHRoaXMuY2VudGVyU2Nyb2xsYWJsZUJvZHk/Lm5hdGl2ZUVsZW1lbnQpIHtcclxuICAgICAgICAgICAgdGhpcy5jZW50ZXJTY3JvbGxhYmxlQm9keS5uYXRpdmVFbGVtZW50LnNjcm9sbExlZnQgPVxyXG4gICAgICAgICAgICAgIHRoaXMuY2VudGVyUGlubmVkSGVhZGVyLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsTGVmdDtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuZGF0YVNldExvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB9LCA1MDApO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLmFwcGx5Um93c1NlbGVjdGlvblN0YXRlKCk7XHJcblxyXG4gICAgICBpZiAodGhpcy5ncm91cGVkQ29sdW1ucz8ubGVuZ3RoKSB7XHJcbiAgICAgICAgY29uc3QgZmllbGRzID0gdGhpcy5ncm91cGVkQ29sdW1ucy5tYXAoKGl0ZW0pID0+IGl0ZW0uZmllbGQpO1xyXG4gICAgICAgIHRoaXMuZGF0YVNldCA9IGF3YWl0IHRoaXMuZ3JvdXBEYXRhQXN5bmModGhpcy5vcmlnaW5hbERhdGFTZXQsIGZpZWxkcyk7XHJcblxyXG4gICAgICAgIHRoaXMubmdab25lLm9uU3RhYmxlLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgIHRoaXMudXBkYXRlRmxhdHRlbmVkRGF0YSgpO1xyXG4gICAgICAgICAgdGhpcy51cGRhdGVDb2x1bW5XaWR0aHNBbmRHcm91cHMoKTtcclxuICAgICAgICAgIHRoaXMucmVmcmVzaFByZXZpZXdDb2x1bW5zKCk7XHJcbiAgICAgICAgICB0aGlzLnVwZGF0ZVZpc2libGVSb3dzKDApO1xyXG4gICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmdyb3VwQm94UGFkZGluZyA9IHRoaXMuY29sdW1uc0dyb3VwZWRCb3g/Lm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGg7XHJcbiAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAoY2hhbmdlc1snY2hlY2tib3hTdGF0ZSddPy5jdXJyZW50VmFsdWU/LnJlc2V0KSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dzLmNsZWFyKCk7XHJcbiAgICAgIHRoaXMuY2xlYXJTZWxlY3Rpb25TdGF0ZSh0aGlzLnRhYmxlVHlwZSk7XHJcblxyXG4gICAgICBjb25zdCBpZHMgPSBBcnJheS5mcm9tKHRoaXMuc2VsZWN0ZWRSb3dzKTtcclxuICAgICAgY29uc3QgZXZlbnQgPSB7XHJcbiAgICAgICAgZGF0YToge1xyXG4gICAgICAgICAgbGlzdGluZ1R5cGU6IHRoaXMubGlzdGluZ1R5cGUsXHJcbiAgICAgICAgICBvYmo6IGlkcyxcclxuICAgICAgICB9LFxyXG4gICAgICAgIGV2ZW50VHlwZTogJ29uU2VsZWN0Um93JyxcclxuICAgICAgfTtcclxuXHJcbiAgICAgIHRoaXMuZ2VuZXJpY0V2ZW50LmVtaXQoZXZlbnQpO1xyXG5cclxuICAgICAgdGhpcy5uZ1pvbmUub25TdGFibGUucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGNoYW5nZXNbJ2Nsb3NlRHJvcGRvd24nXSAmJiB0aGlzLmNsb3NlRHJvcGRvd24ucHJlc2V0LmNsb3NlZCkge1xyXG4gICAgICB0aGlzLmFjdGl2ZVRvcEJ1dHRvbiA9IG51bGw7XHJcbiAgICAgIHRoaXMucHJlc2V0RmlsdGVyID0gZmFsc2U7XHJcbiAgICAgIHRoaXMucHJlc2V0TmFtZSA9ICcnO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIGlmIChjaGFuZ2VzWydvZGRSb3dzQmFja2dyb3VuZENvbG9yJ10pIHtcclxuICAgIC8vICAgdGhpcy5yb3dTaGFkaW5nRW5hYmxlZCA9ICEhdGhpcy5vZGRSb3dzQmFja2dyb3VuZENvbG9yO1xyXG4gICAgLy8gfVxyXG5cclxuICAgIGlmIChjaGFuZ2VzWydyZXNldEFsbEZpbHRlcnMnXSAmJiB0aGlzLnJlc2V0QWxsRmlsdGVycy5yZXNldEFsbCkge1xyXG4gICAgICB0aGlzLmNsZWFyQWxsRmlsdGVycygpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChjaGFuZ2VzWyd0YWJsZVZpZXcnXSkge1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICBjb25zdCB2aWV3VmFsdWUgPSB0aGlzLnRhYmxlVmlldztcclxuICAgICAgICBsZXQgdGVtcHJvcnlTZWxlY3RlZCA9IEFycmF5LmlzQXJyYXkodmlld1ZhbHVlKVxyXG4gICAgICAgICAgPyB2aWV3VmFsdWUuZmluZChpdGVtID0+IGl0ZW0uaXNfdGVtcClcclxuICAgICAgICAgIDogbnVsbDtcclxuXHJcbiAgICAgICAgaWYgKCF0ZW1wcm9yeVNlbGVjdGVkKSB7XHJcbiAgICAgICAgICB0ZW1wcm9yeVNlbGVjdGVkID0gQXJyYXkuaXNBcnJheSh2aWV3VmFsdWUpXHJcbiAgICAgICAgICAgID8gdmlld1ZhbHVlLmZpbmQoaXRlbSA9PiBpdGVtLmlzX2RlZmF1bHQpXHJcbiAgICAgICAgICAgIDogbnVsbDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuY3VycmV0YVRhYmxlUHJlc2V0Rm9yVXBkYXRlID0gdGVtcHJvcnlTZWxlY3RlZCB8fCBudWxsO1xyXG4gICAgICAgIHRoaXMucHJlc2V0TmFtZSA9IHRlbXByb3J5U2VsZWN0ZWQ/Lm5hbWUgfHwgJyc7XHJcbiAgICAgICAgdGhpcy5wcmVzZXRGaWx0ZXIgPSB0ZW1wcm9yeVNlbGVjdGVkPy5hY3RpdmVGaWx0ZXJzIHx8IGZhbHNlO1xyXG4gICAgICAgIGlmICh0aGlzLmN1cnJldGFUYWJsZVByZXNldEZvclVwZGF0ZSkge1xyXG4gICAgICAgICAgdGhpcy5yb3dTaGFkaW5nRW5hYmxlZCA9IHRlbXByb3J5U2VsZWN0ZWQuY29uZmlnLnJvd1NoYWRpbmdFbmFibGVkO1xyXG4gICAgICAgICAgdGhpcy5zaG93VmVydGljYWxCb3JkZXIgPSB0ZW1wcm9yeVNlbGVjdGVkLmNvbmZpZy5zaG93VmVydGljYWxCb3JkZXI7XHJcbiAgICAgICAgICB0aGlzLmZvbnRGYWltbHkgPSB0ZW1wcm9yeVNlbGVjdGVkLmNvbmZpZy5mb250RmFpbWx5O1xyXG4gICAgICAgICAgdGhpcy5oZWFkZXJUZXh0Rm9udHNTaXplID0gdGVtcHJvcnlTZWxlY3RlZC5jb25maWcuaGVhZGVyVGV4dEZvbnRzU2l6ZTtcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRUYWJsZUxheW91dCA9IHRlbXByb3J5U2VsZWN0ZWQuY29uZmlnLnNlbGVjdGVkVGFibGVMYXlvdXQ7XHJcbiAgICAgICAgICB0aGlzLmJvZHlUZXh0Rm9udHNTaXplID0gdGVtcHJvcnlTZWxlY3RlZC5jb25maWcuYm9keVRleHRGb250c1NpemU7XHJcbiAgICAgICAgICB0aGlzLmdsb2JhbFNlYXJjaFRleHQgPSB0ZW1wcm9yeVNlbGVjdGVkLmNvbmZpZy5nbG9iYWxTZWFyY2g7XHJcbiAgICAgICAgICB0aGlzLnNldFRhYmxlTGF5b3V0KHRoaXMuc2VsZWN0ZWRUYWJsZUxheW91dCk7XHJcbiAgICAgICAgICB0aGlzLm9kZFJvd3NCYWNrZ3JvdW5kQ29sb3IgPSB0ZW1wcm9yeVNlbGVjdGVkPy5jb25maWc/Lm9kZFJvd3NCYWNrZ3JvdW5kQ29sb3IgfHwgJyNmMWYxZjEnO1xyXG4gICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnJvd1NoYWRpbmdFbmFibGVkID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnNob3dWZXJ0aWNhbEJvcmRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5mb250RmFpbWx5ID0gJ0ludGVyJztcclxuICAgICAgICAgIHRoaXMuaGVhZGVyVGV4dEZvbnRzU2l6ZSA9IDE0O1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFRhYmxlTGF5b3V0ID0gJ21lZGl1bSc7XHJcbiAgICAgICAgICB0aGlzLmJvZHlUZXh0Rm9udHNTaXplID0gMTQ7XHJcbiAgICAgICAgICB0aGlzLmdsb2JhbFNlYXJjaFRleHQgPSAnJztcclxuICAgICAgICAgIC8vIHRoaXMuYXV0b3NpemVBbGxDb2x1bW5zKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgfSwgNTAwKTtcclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICBhc3luYyBzZXRDb2x1bW5zQ29sdW1uRHJvcGRvd25WYWx1cygpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGlmICghdGhpcy5jb2x1bW5zKSByZXR1cm47XHJcbiAgICAvLyBKdXN0IHJlbW92ZWQgdGVtcG9yYXJ5IGZvciBzdXBlciBhZG1pbiB3aWxsIHNldCBpdCBhZ2FpblxyXG4gICAgaWYodGhpcy5jb2x1bW5zPy5sZW5ndGgpe1xyXG4gICAgICB0aGlzLmNvbHVtbnMgPSB0aGlzLmNvbHVtbnM/LmZpbHRlcihjID0+IGM/LmZpZWxkPy50cmltKCkgIT09ICdpc19kZWxldGVkJylcclxuICAgIH1cclxuICAgIHRoaXMuY29sdW1ucyA9IGF3YWl0IHRoaXMuY29tbW9uU2V2aWNlLmNvcHlEcm9wZG93bkRhdGFSZWN1cnNpdmVseSh0aGlzLmNvbHVtbnMpO1xyXG4gIH1cclxuXHJcblxyXG5cclxuXHJcbiAgYXBwbHlSb3dzU2VsZWN0aW9uU3RhdGUoKSB7XHJcbiAgICBjb25zdCBzZWxlY3RlZElkc0Zyb21TdGF0ZSA9IHRoaXMucmVzdG9yZVNlbGVjdGlvbih0aGlzLnRhYmxlVHlwZSk7XHJcbiAgICBpZiAoc2VsZWN0ZWRJZHNGcm9tU3RhdGUuc2l6ZSA+IDApIHtcclxuICAgICAgY29uc3QgaWRzID0gQXJyYXkuZnJvbSh0aGlzLnNlbGVjdGVkUm93cyk7XHJcbiAgICAgIGNvbnN0IGV2ZW50ID0ge1xyXG4gICAgICAgIGRhdGE6IHtcclxuICAgICAgICAgIGxpc3RpbmdUeXBlOiB0aGlzLmxpc3RpbmdUeXBlLFxyXG4gICAgICAgICAgb2JqOiBpZHNcclxuICAgICAgICB9LFxyXG4gICAgICAgIGV2ZW50VHlwZTogXCJvblNlbGVjdFJvd1wiLFxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuZ2VuZXJpY0V2ZW50LmVtaXQoZXZlbnQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2xlYXJTZWxlY3Rpb25TdGF0ZSh0YWJsZVR5cGU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgY29uc3Qgc3RvcmVkID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnZGF0YXRhYmxlU2VsZWN0aW9ucycpIHx8ICd7XCJzZWxlY3RlZFJvd3NcIjoge319Jyk7XHJcbiAgICBpZiAoc3RvcmVkLnNlbGVjdGVkUm93cyAmJiBzdG9yZWQuc2VsZWN0ZWRSb3dzW3RhYmxlVHlwZV0pIHtcclxuICAgICAgZGVsZXRlIHN0b3JlZC5zZWxlY3RlZFJvd3NbdGFibGVUeXBlXTtcclxuICAgIH1cclxuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKFxyXG4gICAgICAnZGF0YXRhYmxlU2VsZWN0aW9ucycsXHJcbiAgICAgIEpTT04uc3RyaW5naWZ5KHN0b3JlZClcclxuICAgICk7XHJcbiAgfVxyXG5cclxuXHJcblxyXG4gIGFzeW5jIGFwcGx5RmlsdGVyb3B0aW9uTGlzdCgpIHtcclxuICAgIGNvbnN0IHVwZGF0ZWRDb2x1bW5zID0gYXdhaXQgdGhpcy5jb21tb25TZXZpY2UuYXBwbHlGaWx0ZXJzVG9Db2x1bW5zKHRoaXMuY29sdW1ucywgdGhpcy5maWx0ZXJzQ29uZmlnKTtcclxuICAgIHRoaXMuY29sdW1ucyA9IFsuLi51cGRhdGVkQ29sdW1uc107XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG4gIGxlZnRQaW5uZWRDb2x1bW5zOiBhbnlbXSA9IFtdO1xyXG4gIGNlbnRlckNvbHVtbnM6IGFueVtdID0gW107XHJcbiAgcmlnaHRQaW5uZWRDb2x1bW5zOiBhbnlbXSA9IFtdO1xyXG5cclxuICBwcmV2aWV3TGVmdFBpbm5lZENvbHVtbnM6IGFueVtdID0gW107XHJcbiAgcHJldmlld0NlbnRlckNvbHVtbnM6IGFueVtdID0gW107XHJcbiAgcHJldmlld1JpZ2h0UGlubmVkQ29sdW1uczogYW55W10gPSBbXTtcclxuXHJcbiAgLy8gTWFpbiBDb250YWluZXIgVGVtcGxhdGUgUmVmZXJlbmNlc1xyXG4gIEBWaWV3Q2hpbGQoJ2RhdGFHcmlkQ29udGFpbmVyJylcclxuICBkYXRhR3JpZENvbnRhaW5lciE6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xyXG4gIEBWaWV3Q2hpbGQoJ3Rhc2tNYW5hZ2VtZW50Q29udGFpbmVyJylcclxuICB0YXNrTWFuYWdlbWVudENvbnRhaW5lciE6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xyXG4gIEBWaWV3Q2hpbGQoJ25lc3RlZFRhYmxlQ29udGFpbmVyJylcclxuICBuZXN0ZWRUYWJsZUNvbnRhaW5lciE6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xyXG5cclxuICAvLyBCb2R5IFRlbXBsYXRlIFJlZmVyZW5jZXNcclxuICBAVmlld0NoaWxkKCdsZWZ0UGlubmVkQm9keScpXHJcbiAgbGVmdFBpbm5lZEJvZHkhOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcclxuICBAVmlld0NoaWxkKCdjZW50ZXJQaW5uZWRCb2R5JylcclxuICBjZW50ZXJQaW5uZWRCb2R5ITogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XHJcbiAgQFZpZXdDaGlsZCgncmlnaHRQaW5uZWRCb2R5JylcclxuICByaWdodFBpbm5lZEJvZHkhOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcclxuXHJcbiAgLy8gSGVhZGVycyBUZW1wbGF0ZSBSZWZlcmVuY2VzXHJcbiAgQFZpZXdDaGlsZCgnbGVmdFBpbm5lZEhlYWRlcicpXHJcbiAgbGVmdFBpbm5lZEhlYWRlciE6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xyXG4gIEBWaWV3Q2hpbGQoJ2NlbnRlclBpbm5lZEhlYWRlcicpXHJcbiAgY2VudGVyUGlubmVkSGVhZGVyITogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XHJcbiAgQFZpZXdDaGlsZCgncmlnaHRQaW5uZWRIZWFkZXInKVxyXG4gIHJpZ2h0UGlubmVkSGVhZGVyITogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2NvbHVtbnNHcm91cGVkQm94JylcclxuICBjb2x1bW5zR3JvdXBlZEJveCE6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xyXG5cclxuICAvLyBDZW50ZXIgRmFrZSBzY3JvbGxiYXJkXHJcbiAgQFZpZXdDaGlsZCgnY2VudGVyRmFrZVNjcm9sbGJhcicpXHJcbiAgY2VudGVyRmFrZVNjcm9sbGJhciE6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xyXG4gIGFzeW5jIHVwZGF0ZUNvbHVtbldpZHRoc0FuZEdyb3Vwcyhjb2x1bW5zOiBhbnkgPSBudWxsKSB7XHJcbiAgICBpZiAoIXRoaXMuZGF0YUdyaWRDb250YWluZXIpIHJldHVybjtcclxuICAgIGxldCBjb250YWluZXJXaWR0aCA9XHJcbiAgICAgIHRoaXMuZGF0YUdyaWRDb250YWluZXI/Lm5hdGl2ZUVsZW1lbnQ/Lm9mZnNldFdpZHRoID8/IDA7XHJcbiAgICAvLyBXcmFwIGluIGEgcHJvbWlzZSBzbyB3ZSBjYW4gYXdhaXRcclxuICAgIGNvbnN0IHsgbGVmdCwgY2VudGVyLCByaWdodCB9OiBhbnkgPSBhd2FpdCBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHtcclxuICAgICAgY29uc3QgcHJlcGFyZWQgPSB0aGlzLmNvbHVtblNlcnZpY2UucHJlcGFyZUNvbHVtbnMoXHJcbiAgICAgICAgY29sdW1ucyA/IGNvbHVtbnMgOiB0aGlzLmNvbHVtbnMsXHJcbiAgICAgICAgY29udGFpbmVyV2lkdGhcclxuICAgICAgKTtcclxuICAgICAgcmVzb2x2ZShwcmVwYXJlZCk7XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmxlZnRQaW5uZWRDb2x1bW5zID0gbGVmdDtcclxuICAgIHRoaXMuY2VudGVyQ29sdW1ucyA9IGNlbnRlcjtcclxuICAgIHRoaXMucmlnaHRQaW5uZWRDb2x1bW5zID0gcmlnaHQ7XHJcbiAgICBhd2FpdCBuZXcgUHJvbWlzZShyID0+IHNldFRpbWVvdXQociwgMCkpO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgcmVmcmVzaFByZXZpZXdDb2x1bW5zKGNvbHVtbnM6IGFueSA9IG51bGwpIHtcclxuICAgIGlmICghdGhpcy5kYXRhR3JpZENvbnRhaW5lcikgcmV0dXJuO1xyXG5cclxuICAgIGNvbnN0IGNvbnRhaW5lcldpZHRoID0gdGhpcy5kYXRhR3JpZENvbnRhaW5lci5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoO1xyXG5cclxuICAgIC8vIFdyYXAgcHJlcGFyZUNvbHVtbnMgaW4gYSBQcm9taXNlIHRvIG1ha2UgaXQgYXdhaXRhYmxlXHJcbiAgICBjb25zdCB7IGxlZnQsIGNlbnRlciwgcmlnaHQgfTogYW55ID0gYXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7XHJcbiAgICAgIGNvbnN0IHByZXBhcmVkID0gdGhpcy5jb2x1bW5TZXJ2aWNlLnByZXBhcmVDb2x1bW5zKFxyXG4gICAgICAgIGNvbHVtbnMgPyBjb2x1bW5zIDogdGhpcy5jb2x1bW5zLFxyXG4gICAgICAgIGNvbnRhaW5lcldpZHRoXHJcbiAgICAgICk7XHJcbiAgICAgIHJlc29sdmUocHJlcGFyZWQpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5wcmV2aWV3TGVmdFBpbm5lZENvbHVtbnMgPSBsZWZ0O1xyXG4gICAgdGhpcy5wcmV2aWV3Q2VudGVyQ29sdW1ucyA9IGNlbnRlcjtcclxuICAgIHRoaXMucHJldmlld1JpZ2h0UGlubmVkQ29sdW1ucyA9IHJpZ2h0O1xyXG4gICAgYXdhaXQgbmV3IFByb21pc2UociA9PiBzZXRUaW1lb3V0KHIsIDEwKSk7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgYXN5bmMgU2V0Q29sdW1uc0RlZmF1bHRXaWR0aCgpIHtcclxuICAgIGNvbnN0IHZpc2libGVDb2x1bW5zID0gdGhpcy5nZXRWaXNpYmxlTGVhZkNvbHVtbnModGhpcy5jb2x1bW5zKTtcclxuICAgIGNvbnN0IHZpc2libGVDb3VudCA9IHZpc2libGVDb2x1bW5zLmxlbmd0aDtcclxuXHJcbiAgICBpZiAodmlzaWJsZUNvdW50ID09PSAwKSByZXR1cm47XHJcblxyXG4gICAgbGV0IGNvbnRhaW5lcldpZHRoID1cclxuICAgICAgdGhpcy5kYXRhR3JpZENvbnRhaW5lcj8ubmF0aXZlRWxlbWVudD8ub2Zmc2V0V2lkdGggPz8gMDtcclxuICAgIGlmICh0aGlzLnNob3dTZXJpYWxOdW1iZXIpIGNvbnRhaW5lcldpZHRoIC09IDU1O1xyXG4gICAgaWYgKHRoaXMuc2hvd1NpZGVNZW51KSBjb250YWluZXJXaWR0aCAtPSAyOTtcclxuICAgIC8vIGlmICh0aGlzLmdyaWRUeXBlID09ICdBc3NldHMnIHx8IHRoaXMuZ3JpZFR5cGUgPT0gJ1Rhc2tzJykgY29udGFpbmVyV2lkdGggLT0gMzA7XHJcbiAgICAvLyBjb250YWluZXJXaWR0aCAtPSA1NTtcclxuICAgIC8vIGlmICh0aGlzLnNob3dTZXJpYWxOdW1iZXIpIGNvbnRhaW5lcldpZHRoIC09IDU1O1xyXG4gICAgLy8gaWYgKHRoaXMuc2hvd1NpZGVNZW51KSBjb250YWluZXJXaWR0aCAtPSAyOTtcclxuICAgIC8vIGlmICh0aGlzLmdyaWRUeXBlID09ICdBc3NldHMnIHx8IHRoaXMuZ3JpZFR5cGUgPT0gJ1Rhc2tzJykgY29udGFpbmVyV2lkdGggLT0gMzA7XHJcbiAgICAvLyBjb250YWluZXJXaWR0aCAtPSA1O1xyXG4gICAgdGhpcy5jb2x1bW5zID0gdGhpcy5jb2x1bW5TZXJ2aWNlLmFzc2lnbkRlZmF1bHRXaWR0aHMoXHJcbiAgICAgIHRoaXMuY29sdW1ucyxcclxuICAgICAgY29udGFpbmVyV2lkdGhcclxuICAgICk7XHJcbiAgICBhd2FpdCBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgMCkpO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcblxyXG4gIHNldFNlY3Rpb25zV2lkdGgoKSB7XHJcbiAgICBjb25zdCBsZWZ0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmxlZnQtcGlubmVkLWJvZHknKSBhcyBIVE1MRWxlbWVudDtcclxuICAgIGNvbnN0IGNlbnRlciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXHJcbiAgICAgICcuY2VudGVyLXNjcm9sbGFibGUtYm9keSdcclxuICAgICkgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICBjb25zdCByaWdodCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5yaWdodC1waW5uZWQtYm9keScpIGFzIEhUTUxFbGVtZW50O1xyXG4gICAgaWYgKGxlZnQpIHtcclxuICAgICAgbGVmdC5zdHlsZS5taW5XaWR0aCA9IGAke3RoaXMubGVmdFBpbm5lZEhlYWRlci5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRofWA7XHJcbiAgICB9XHJcbiAgICBpZiAoY2VudGVyKSB7XHJcbiAgICAgIGxlZnQuc3R5bGUubWluV2lkdGggPSBgJHt0aGlzLmNlbnRlclBpbm5lZEhlYWRlci5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRofWA7XHJcbiAgICB9XHJcbiAgICBpZiAocmlnaHQpIHtcclxuICAgICAgbGVmdC5zdHlsZS5taW5XaWR0aCA9IGAke3RoaXMucmlnaHRQaW5uZWRIZWFkZXIubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aH1gO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gb25DZW50ZXJCb2R5U2Nyb2xsKCk6IHZvaWQge1xyXG4gIC8vICAgY29uc3Qgc2Nyb2xsVG9wID0gdGhpcy5jZW50ZXJQaW5uZWRCb2R5Lm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wO1xyXG4gIC8vICAgY29uc3Qgc2Nyb2xsTGVmdCA9IHRoaXMuY2VudGVyUGlubmVkQm9keS5uYXRpdmVFbGVtZW50LnNjcm9sbExlZnQ7XHJcblxyXG4gIC8vICAgLy8gU3luYyB2ZXJ0aWNhbCBzY3JvbGwgd2l0aCBsZWZ0ICYgcmlnaHQgcGlubmVkIGJvZGllc1xyXG4gIC8vICAgdGhpcy5sZWZ0UGlubmVkQm9keS5uYXRpdmVFbGVtZW50LnNjcm9sbFRvcCA9IHNjcm9sbFRvcDtcclxuICAvLyAgIHRoaXMucmlnaHRQaW5uZWRCb2R5Lm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wID0gc2Nyb2xsVG9wO1xyXG5cclxuICAvLyAgIC8vIFN5bmMgaG9yaXpvbnRhbCBzY3JvbGwgd2l0aCBjZW50ZXIgaGVhZGVyXHJcbiAgLy8gICB0aGlzLmNlbnRlclBpbm5lZEhlYWRlci5uYXRpdmVFbGVtZW50LnNjcm9sbExlZnQgPSBzY3JvbGxMZWZ0O1xyXG4gIC8vICAgdGhpcy5jZW50ZXJGYWtlU2Nyb2xsYmFyLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsTGVmdCA9IHNjcm9sbExlZnQ7XHJcbiAgLy8gfVxyXG5cclxuICAvLyBvbkxlZnRCb2R5U2Nyb2xsKCk6IHZvaWQge1xyXG4gIC8vICAgY29uc3Qgc2Nyb2xsVG9wID0gdGhpcy5sZWZ0UGlubmVkQm9keS5uYXRpdmVFbGVtZW50LnNjcm9sbFRvcDtcclxuICAvLyAgIHRoaXMuY2VudGVyUGlubmVkQm9keS5uYXRpdmVFbGVtZW50LnNjcm9sbFRvcCA9IHNjcm9sbFRvcDtcclxuICAvLyAgIHRoaXMucmlnaHRQaW5uZWRCb2R5Lm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wID0gc2Nyb2xsVG9wO1xyXG4gIC8vIH1cclxuICAvLyBvblJpZ2h0Qm9keVNjcm9sbCgpOiB2b2lkIHtcclxuICAvLyAgIGNvbnN0IHNjcm9sbFRvcCA9IHRoaXMucmlnaHRQaW5uZWRCb2R5Lm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wO1xyXG4gIC8vICAgdGhpcy5jZW50ZXJQaW5uZWRCb2R5Lm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wID0gc2Nyb2xsVG9wO1xyXG4gIC8vICAgdGhpcy5sZWZ0UGlubmVkQm9keS5uYXRpdmVFbGVtZW50LnNjcm9sbFRvcCA9IHNjcm9sbFRvcDtcclxuICAvLyB9XHJcblxyXG4gIGZha2VTY3JvbGxiYXJTY3JvbGxMZWZ0ID0gMDtcclxuICAvLyBvbkZha2VTY3JvbGwoZXZlbnQ6IEV2ZW50KSB7XHJcbiAgLy8gICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgLy8gICB0aGlzLmZha2VTY3JvbGxiYXJTY3JvbGxMZWZ0ID0gdGFyZ2V0LnNjcm9sbExlZnQ7XHJcbiAgLy8gICB0aGlzLmNlbnRlclBpbm5lZEJvZHkubmF0aXZlRWxlbWVudC5zY3JvbGxMZWZ0ID0gdGFyZ2V0LnNjcm9sbExlZnQ7XHJcbiAgLy8gICB0aGlzLmNlbnRlclBpbm5lZEhlYWRlci5uYXRpdmVFbGVtZW50LnNjcm9sbExlZnQgPSB0YXJnZXQuc2Nyb2xsTGVmdDtcclxuICAvLyB9XHJcblxyXG5cclxuXHJcblxyXG4gIGdldE5lc3RlZFZhbHVlKG9iajogYW55LCBmaWVsZDogc3RyaW5nKTogYW55IHtcclxuICAgIHJldHVybiBmaWVsZD8uc3BsaXQoJy4nKS5yZWR1Y2UoKGFjYywgcGFydCkgPT4gYWNjICYmIGFjY1twYXJ0XSwgb2JqKTtcclxuICB9XHJcblxyXG4gIGlzTmVzdGVkVmFsdWVBcnJheShvYmo6IGFueSwgZmllbGQ6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKCFvYmogfHwgIWZpZWxkKSByZXR1cm4gZmFsc2U7XHJcbiAgICBjb25zdCB2YWx1ZSA9IGZpZWxkXHJcbiAgICAgIC5zcGxpdCgnLicpXHJcbiAgICAgIC5yZWR1Y2UoKGFjYywgcGFydCkgPT4gKGFjYyAmJiBhY2NbcGFydF0gIT09IHVuZGVmaW5lZCA/IGFjY1twYXJ0XSA6IHVuZGVmaW5lZCksIG9iaik7XHJcbiAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh2YWx1ZSk7XHJcbiAgfVxyXG5cclxuICBvblJlc2l6ZUdyb3VwKGV2ZW50OiBNb3VzZUV2ZW50LCBjb2w6IGFueSwgaXNSaWdodFBpbm5lZD86IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuXHJcbiAgICBjb25zdCBzdGFydFggPSBldmVudC5jbGllbnRYO1xyXG4gICAgY29uc3QgY2hpbGRyZW4gPSBjb2wuY2hpbGRyZW4gfHwgW107XHJcbiAgICBpZiAoIWNoaWxkcmVuLmxlbmd0aCkgcmV0dXJuO1xyXG5cclxuICAgIGNvbnN0IGNoaWxkV2lkdGhzOiB7IGZpZWxkOiBzdHJpbmc7IHdpZHRoOiBudW1iZXIgfVtdID0gY2hpbGRyZW4ubWFwKFxyXG4gICAgICAoY2hpbGQ6IGFueSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGVsID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgICAgICAgIGBbZmllbGQ9XCIke2NoaWxkLmZpZWxkfVwiXWBcclxuICAgICAgICApIGFzIEhUTUxFbGVtZW50O1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICBmaWVsZDogY2hpbGQuZmllbGQsXHJcbiAgICAgICAgICB3aWR0aDogZWw/Lm9mZnNldFdpZHRoIHx8IDAsXHJcbiAgICAgICAgfTtcclxuICAgICAgfVxyXG4gICAgKTtcclxuXHJcbiAgICBjb25zdCB0b3RhbEluaXRpYWxXaWR0aCA9IGNoaWxkV2lkdGhzLnJlZHVjZShcclxuICAgICAgKHN1bSwgY29sKSA9PiBzdW0gKyBjb2wud2lkdGgsXHJcbiAgICAgIDBcclxuICAgICk7XHJcblxyXG4gICAgY29uc3Qgb25Nb3VzZU1vdmUgPSAobW92ZUV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XHJcbiAgICAgIGxldCBkZWx0YVggPSBtb3ZlRXZlbnQuY2xpZW50WCAtIHN0YXJ0WDtcclxuXHJcbiAgICAgIGlmIChpc1JpZ2h0UGlubmVkKSB7XHJcbiAgICAgICAgZGVsdGFYID0gLWRlbHRhWDtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gUHJldmVudCBzaHJpbmtpbmcgdG9vIHNtYWxsXHJcbiAgICAgIGlmICh0b3RhbEluaXRpYWxXaWR0aCArIGRlbHRhWCA8IGNoaWxkcmVuLmxlbmd0aCAqIDgwKSByZXR1cm47XHJcblxyXG4gICAgICBsZXQgdG90YWxOZXdXaWR0aCA9IDA7XHJcblxyXG4gICAgICBjaGlsZFdpZHRocy5mb3JFYWNoKChjaGlsZCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHJhdGlvID0gY2hpbGQud2lkdGggLyB0b3RhbEluaXRpYWxXaWR0aDtcclxuICAgICAgICBjb25zdCBuZXdXaWR0aCA9IE1hdGgubWF4KGNoaWxkLndpZHRoICsgZGVsdGFYICogcmF0aW8sIDgwKTtcclxuICAgICAgICB0b3RhbE5ld1dpZHRoICs9IG5ld1dpZHRoO1xyXG5cclxuICAgICAgICBjb25zdCBjaGlsZEVscyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoYFtmaWVsZD1cIiR7Y2hpbGQuZmllbGR9XCJdYCk7XHJcbiAgICAgICAgY2hpbGRFbHMuZm9yRWFjaCgoZWw6IEVsZW1lbnQpID0+IHtcclxuICAgICAgICAgIGNvbnN0IGVsSHRtbCA9IGVsIGFzIEhUTUxFbGVtZW50O1xyXG4gICAgICAgICAgZWxIdG1sLnN0eWxlLm1pbldpZHRoID0gYCR7bmV3V2lkdGh9cHhgO1xyXG4gICAgICAgICAgZWxIdG1sLnN0eWxlLndpZHRoID0gYCR7bmV3V2lkdGh9cHhgO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICB0aGlzLnVwZGF0ZUNvbHVtbldpZHRoSW5Tb3VyY2VCeUZpZWxkKGNoaWxkLmZpZWxkLCBuZXdXaWR0aCk7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgLy8g4pyFIFVwZGF0ZSBncm91cCBoZWFkZXIgd2lkdGggaW4gRE9NXHJcbiAgICAgIGNvbnN0IGdyb3VwSGVhZGVyRWwgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFxyXG4gICAgICAgIGBbZ3JvdXA9XCIke2NvbC5oZWFkZXJ9XCJdYFxyXG4gICAgICApIGFzIEhUTUxFbGVtZW50O1xyXG4gICAgICBpZiAoZ3JvdXBIZWFkZXJFbCkge1xyXG4gICAgICAgIGdyb3VwSGVhZGVyRWwuc3R5bGUud2lkdGggPSBgJHt0b3RhbE5ld1dpZHRofXB4YDtcclxuICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCBvbk1vdXNlVXAgPSAoKSA9PiB7XHJcbiAgICAgIGlmICh0aGlzLnRhYmxlRmlsdGVyVmlld0lkKSB7XHJcbiAgICAgICAgdGhpcy5zYXZlUHJlc2V0KCdtb3VzZVVwJyk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5yZWZyZXNoSGVhZGVycygpO1xyXG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgb25Nb3VzZU1vdmUpO1xyXG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIG9uTW91c2VVcCk7XHJcbiAgICAgIGNvbnN0IHNlbmREYXRhID0ge1xyXG4gICAgICAgIGNvbHVtbnM6IHRoaXMuY2xlYW5Db2x1bW5zKHRoaXMuY29sdW1ucyksXHJcbiAgICAgICAgZmlsdGVyczogdGhpcy5jbGVhbkZpbHRlcmRDb2x1bW5zKCksXHJcbiAgICAgICAgbm9fb2ZfcmVjb3JkczogdGhpcy5wYWdpbmF0aW9uQ29uZmlnLnBhZ2VTaXplLFxyXG4gICAgICAgIHR5cGU6IHRoaXMudGFibGVUeXBlLFxyXG4gICAgICB9O1xyXG4gICAgICB0aGlzLmNyZWF0ZVVwZGF0ZUNvbmZpZ0xpc3RpbmcuZW1pdChzZW5kRGF0YSk7XHJcbiAgICB9O1xyXG5cclxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCBvbk1vdXNlTW92ZSk7XHJcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIG9uTW91c2VVcCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHVwZGF0ZUNvbHVtbldpZHRoSW5Tb3VyY2VCeUZpZWxkKGZpZWxkOiBzdHJpbmcsIHdpZHRoOiBudW1iZXIpOiB2b2lkIHtcclxuICAgIGNvbnN0IHVwZGF0ZSA9IChjb2x1bW5zOiBhbnlbXSkgPT4ge1xyXG4gICAgICBmb3IgKGNvbnN0IGNvbCBvZiBjb2x1bW5zKSB7XHJcbiAgICAgICAgaWYgKGNvbC5jaGlsZHJlbj8ubGVuZ3RoKSB7XHJcbiAgICAgICAgICB1cGRhdGUoY29sLmNoaWxkcmVuKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGNvbC5maWVsZCA9PT0gZmllbGQpIHtcclxuICAgICAgICAgIGNvbC53aWR0aCA9IHdpZHRoO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICB1cGRhdGUodGhpcy5jb2x1bW5zKTtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIGNsZWFuQ29sdW1ucyhjb2x1bW5zOiBhbnlbXSk6IGFueVtdIHtcclxuICAgIGNvbnN0IGNsZWFuZWRDb2x1bW5zID0gY29sdW1ucy5tYXAoXHJcbiAgICAgICh7XHJcbiAgICAgICAgX190eXBlbmFtZSxcclxuICAgICAgICBfaWQsXHJcbiAgICAgICAgY29sdW1uX2Ryb3Bkb3duX3ZhbHVlLFxyXG4gICAgICAgIGZpbHRlclZhbHVlLFxyXG4gICAgICAgIHNlYXJjaCxcclxuICAgICAgICBleHBhbmRlZEZpbHRlcixcclxuICAgICAgICBxdWVyeSxcclxuICAgICAgICBpc1Jvd0dyb3VwZWQsXHJcbiAgICAgICAgLi4ucmVzdFxyXG4gICAgICB9KSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgIC4uLnJlc3QsXHJcbiAgICAgICAgICBpc19ncm91cGFibGU6IHJlc3QudHlwZSAhPT0gJ2ltYWdlJyxcclxuICAgICAgICB9O1xyXG4gICAgICB9XHJcbiAgICApO1xyXG5cclxuICAgIHJldHVybiBjbGVhbmVkQ29sdW1ucztcclxuXHJcbiAgfVxyXG5cclxuICBvblJlc2l6ZUNvbHVtbihldmVudDogTW91c2VFdmVudCwgY29sOiBhbnkpOiB2b2lkIHtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuXHJcbiAgICBjb25zdCBzdGFydFggPSBldmVudC5jbGllbnRYO1xyXG5cclxuICAgIGNvbnN0IHRhcmdldEVsID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgICAgYFtmaWVsZD1cIiR7Y29sLmZpZWxkfVwiXWBcclxuICAgICkgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICBjb25zdCBpbml0aWFsV2lkdGggPSB0YXJnZXRFbD8ub2Zmc2V0V2lkdGggfHwgMTUwO1xyXG5cclxuICAgIGNvbnN0IG1hdGNoaW5nRWxzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChgW2ZpZWxkPVwiJHtjb2wuZmllbGR9XCJdYCk7XHJcblxyXG4gICAgLy8g8J+RiSBBZGQgaGlnaGxpZ2h0IHdoaWxlIHJlc2l6aW5nXHJcbiAgICBpZiAoY29sPy5waW5uZWQgPT0gJ3JpZ2h0Jykge1xyXG4gICAgICBtYXRjaGluZ0Vscy5mb3JFYWNoKChlbDogRWxlbWVudCkgPT4ge1xyXG4gICAgICAgIChlbCBhcyBIVE1MRWxlbWVudCkuY2xhc3NMaXN0LmFkZCgncmVzaXppbmctaGlnaGxpZ2h0LXJpZ2h0Jyk7XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbWF0Y2hpbmdFbHMuZm9yRWFjaCgoZWw6IEVsZW1lbnQpID0+IHtcclxuICAgICAgICAoZWwgYXMgSFRNTEVsZW1lbnQpLmNsYXNzTGlzdC5hZGQoJ3Jlc2l6aW5nLWhpZ2hsaWdodCcpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBvbk1vdXNlTW92ZSA9IChtb3ZlRXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcclxuICAgICAgbGV0IGRlbHRhWCA9IG1vdmVFdmVudC5jbGllbnRYIC0gc3RhcnRYO1xyXG5cclxuICAgICAgLy8g8J+RiSBSZXZlcnNlIGlmIHRoZSBjb2x1bW4gaXMgcGlubmVkIHRvIHRoZSByaWdodFxyXG4gICAgICBpZiAoY29sLnBpbm5lZCA9PT0gJ3JpZ2h0Jykge1xyXG4gICAgICAgIGRlbHRhWCA9IC1kZWx0YVg7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGxldCBuZXdXaWR0aCA9IGluaXRpYWxXaWR0aCArIGRlbHRhWDtcclxuICAgICAgaWYgKG5ld1dpZHRoIDwgODApIHJldHVybjtcclxuXHJcbiAgICAgIG1hdGNoaW5nRWxzLmZvckVhY2goKGVsOiBFbGVtZW50KSA9PiB7XHJcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IGVsIGFzIEhUTUxFbGVtZW50O1xyXG4gICAgICAgIGVsZW1lbnQuc3R5bGUubWluV2lkdGggPSBgJHtuZXdXaWR0aH1weGA7XHJcbiAgICAgICAgZWxlbWVudC5zdHlsZS53aWR0aCA9IGAke25ld1dpZHRofXB4YDtcclxuICAgICAgfSk7XHJcblxyXG4gICAgICB0aGlzLnVwZGF0ZUNvbHVtbldpZHRoSW5Tb3VyY2VCeUZpZWxkKGNvbC5maWVsZCwgbmV3V2lkdGgpO1xyXG4gICAgICBjb2wud2lkdGggPSBuZXdXaWR0aDtcclxuICAgICAgdGhpcy5oYXNTY3JvbGwgPSB0aGlzLmhhc0hvcml6b250YWxTY3JvbGxiYXIoKTtcclxuICAgIH07XHJcblxyXG4gICAgY29uc3Qgb25Nb3VzZVVwID0gKCkgPT4ge1xyXG4gICAgICBpZiAodGhpcy50YWJsZUZpbHRlclZpZXdJZCkge1xyXG4gICAgICAgIHRoaXMuc2F2ZVByZXNldCgnbW91c2VVcCcpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMucmVmcmVzaEhlYWRlcnMoKTtcclxuICAgICAgY29uc3Qgc2VuZERhdGEgPSB7XHJcbiAgICAgICAgY29sdW1uczogdGhpcy5jbGVhbkNvbHVtbnModGhpcy5jb2x1bW5zKSxcclxuICAgICAgICBmaWx0ZXJzOiB0aGlzLmNsZWFuRmlsdGVyZENvbHVtbnMoKSxcclxuICAgICAgICBub19vZl9yZWNvcmRzOiB0aGlzLnBhZ2luYXRpb25Db25maWcucGFnZVNpemUsXHJcbiAgICAgICAgdHlwZTogdGhpcy50YWJsZVR5cGUsXHJcbiAgICAgIH07XHJcbiAgICAgIHRoaXMuY3JlYXRlVXBkYXRlQ29uZmlnTGlzdGluZy5lbWl0KHNlbmREYXRhKTtcclxuXHJcbiAgICAgIG1hdGNoaW5nRWxzLmZvckVhY2goKGVsOiBFbGVtZW50KSA9PiB7XHJcbiAgICAgICAgKGVsIGFzIEhUTUxFbGVtZW50KS5jbGFzc0xpc3QucmVtb3ZlKCdyZXNpemluZy1oaWdobGlnaHQnKTtcclxuICAgICAgICAoZWwgYXMgSFRNTEVsZW1lbnQpLmNsYXNzTGlzdC5yZW1vdmUoJ3Jlc2l6aW5nLWhpZ2hsaWdodC1yaWdodCcpO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCBvbk1vdXNlTW92ZSk7XHJcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgb25Nb3VzZVVwKTtcclxuICAgIH07XHJcblxyXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIG9uTW91c2VNb3ZlKTtcclxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgb25Nb3VzZVVwKTtcclxuICB9XHJcblxyXG5cclxuXHJcbiAgb25SZXNpemVHcm91cEJveChldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG5cclxuICAgIGNvbnN0IHN0YXJ0WCA9IGV2ZW50LmNsaWVudFg7XHJcblxyXG4gICAgY29uc3QgdGFyZ2V0RWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZ3JvdXBCb3hIZWFkZXJEaXYnKTtcclxuICAgIGNvbnN0IGluaXRpYWxXaWR0aCA9IHRhcmdldEVsPy5vZmZzZXRXaWR0aCB8fCAxNTA7XHJcblxyXG4gICAgY29uc3Qgb25Nb3VzZU1vdmUgPSAobW92ZUV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XHJcbiAgICAgIGNvbnN0IGRlbHRhWCA9IG1vdmVFdmVudC5jbGllbnRYIC0gc3RhcnRYO1xyXG5cclxuICAgICAgbGV0IG5ld1dpZHRoID0gaW5pdGlhbFdpZHRoICsgZGVsdGFYO1xyXG4gICAgICBpZiAobmV3V2lkdGggPCAxMDApIG5ld1dpZHRoID0gMTAwO1xyXG5cclxuICAgICAgaWYgKHRhcmdldEVsKSB7XHJcbiAgICAgICAgdGFyZ2V0RWwuc3R5bGUud2lkdGggPSBgJHtuZXdXaWR0aH1weGA7XHJcbiAgICAgICAgdGFyZ2V0RWwuc3R5bGUubWluV2lkdGggPSBgJHtuZXdXaWR0aH1weGA7XHJcbiAgICAgICAgdGhpcy5ncm91cEJveFBhZGRpbmcgPSBuZXdXaWR0aDtcclxuICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCBvbk1vdXNlVXAgPSAoKSA9PiB7XHJcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCBvbk1vdXNlTW92ZSk7XHJcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgb25Nb3VzZVVwKTtcclxuICAgIH07XHJcblxyXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIG9uTW91c2VNb3ZlKTtcclxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgb25Nb3VzZVVwKTtcclxuICB9XHJcblxyXG4gIG9uUGFzdGVJbkZpbHRlclJvd1NlYXJjaChldmVudDogQ2xpcGJvYXJkRXZlbnQsIGNvbDogYW55KSB7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5vbkZpbHRlckNoYW5nZShjb2wpO1xyXG4gICAgICB0aGlzLmFwcGx5RHJvcGRvd25GaWx0ZXIoKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgb25GaWx0ZXJDaGFuZ2UoY29sOiBhbnkpOiB2b2lkIHtcclxuICAgIGNvbnN0IGZpbHRlclZhbHVlID0gY29sLmZpbHRlclZhbHVlPy50b0xvd2VyQ2FzZSgpIHx8ICcnO1xyXG4gICAgdGhpcy5zZWxlY3RlZENvbHVtbkZvckZpbHRlciA9IGNvbDtcclxuICAgIGlmICghY29sPy5xdWVyeSkge1xyXG4gICAgICBjb2wucXVlcnkgPSB7XHJcbiAgICAgICAgZmlyc3RfY29uZGl0aW9uOiBjb2wudHlwZSA9PSAnZGF0ZScgPyAnZXF1YWwnIDogJ2NvbnRhaW4nLFxyXG4gICAgICAgIGZpcnN0X3ZhbHVlOiBudWxsLFxyXG4gICAgICAgIHNlY29uZF9jb25kaXRpb246IG51bGwsXHJcbiAgICAgICAgc2Vjb25kX3ZhbHVlOiBudWxsLFxyXG4gICAgICAgIGNvbmRpdGlvbjogbnVsbFxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjb2wucXVlcnkuZmlyc3RfdmFsdWUgPSBmaWx0ZXJWYWx1ZTtcclxuICAgIHRoaXMuZmlyc3RWYWx1ZSA9IGZpbHRlclZhbHVlO1xyXG4gIH1cclxuXHJcbiAgLy8gR2V0IEJvZHkgSGVpZ2h0XHJcbiAgZ2V0IGJvZHlXcmFwcGVySGVpZ2h0KCk6IHN0cmluZyB7XHJcbiAgICBjb25zdCByb3dzID0gdGhpcy5zaG93Q29sdW1uc0dyb3VwaW5nICYmIHRoaXMuc2hvd0ZpbHRlclJvdyA/IDMgOiAodGhpcy5zaG93Q29sdW1uc0dyb3VwaW5nIHx8IHRoaXMuc2hvd0ZpbHRlclJvdyA/IDIgOiAxKTtcclxuICAgIGNvbnN0IG9mZnNldCA9IHRoaXMuaGVhZGVyUm93SGVpZ2h0ICogcm93cyArICh0aGlzLmhhc1Njcm9sbCA/IDE3IDogMCk7XHJcbiAgICByZXR1cm4gYGNhbGMoMTAwJSAtICR7b2Zmc2V0fXB4KWA7XHJcbiAgfVxyXG5cclxuICAvLyBSb3cgSG92ZXIgTG9naWMgSGVyZVxyXG4gIGhvdmVyZWRSb3dJZDogc3RyaW5nIHwgbnVtYmVyIHwgbnVsbCA9IG51bGw7XHJcbiAgb25Sb3dIb3Zlcihyb3c6IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5ob3ZlcmVkUm93SWQgPSByb3cuX2lkIHx8IHJvdy5pZDtcclxuICB9XHJcblxyXG4gIG9uUm93TGVhdmUoKTogdm9pZCB7XHJcbiAgICB0aGlzLmhvdmVyZWRSb3dJZCA9IG51bGw7XHJcbiAgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDpjbGljaycsIFsnJGV2ZW50J10pXHJcbiAgb25Eb2N1bWVudENsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XHJcbiAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICB0aGlzLmlzVmlzaWJsZSA9IGZhbHNlO1xyXG4gICAgdGhpcy5vcGVuSW5kZXggPSBudWxsO1xyXG4gICAgaWYgKFxyXG4gICAgICAhdGhpcy5oYXNQYXJlbnRXaXRoQ2xhc3ModGFyZ2V0LCBbXHJcbiAgICAgICAgJ3RocmVlLWRvdHMnLFxyXG4gICAgICAgICdmaWx0ZXItaWNvbi13cmFwcGVyJyxcclxuICAgICAgICAnY29sdW1uLW1lbnUnLFxyXG4gICAgICAgICdmaWx0ZXItbWVudScsXHJcbiAgICAgIF0pXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5hY3RpdmVDb2wgPSBudWxsO1xyXG4gICAgICB0aGlzLmFjdGl2ZUZpbHRlckNlbGwgPSBudWxsO1xyXG4gICAgfVxyXG4gICAgaWYgKCF0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpKSB7XHJcbiAgICAgIHRoaXMuc2hvd0FjdGlvbnNEcm9wRG93biA9IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgY29uc3QgaW5zaWRlVG9wRmlsdGVyUm93ID0gdGFyZ2V0LmNsb3Nlc3QoJy5maWx0ZXItdGFncycpIHx8IHRhcmdldC5jbG9zZXN0KCcuYWRkLWZpbHRlci1idXR0b24tbWVudScpIHx8XHJcbiAgICAgIHRhcmdldC5jbG9zZXN0KCcudGFibGUtcmlnaHQtdG9wLWFjdGlvbnMnKSB8fCB0YXJnZXQuY2xvc2VzdCgnLnRhYmxlLWxheW91dCcpIHx8IHRhcmdldC5jbG9zZXN0KCcuZmlsdGVyLXJvdy1maWx0ZXItd3JhcHBlcicpO1xyXG4gICAgY29uc3QgaXNDbGlja2VkSW5zaWRlVGhyZWVEb3RzRmlsdGVyID0gdGFyZ2V0LmNsb3Nlc3QoJy50aHJlZS1kb3RzLWZpbHRlcicpIHx8IHRhcmdldC5jbG9zZXN0KCcuZmlsdGVyLW1lbnUtY29udGFpbmVyJyk7XHJcbiAgICBpZiAoIWlzQ2xpY2tlZEluc2lkZVRocmVlRG90c0ZpbHRlcikge1xyXG4gICAgICB0aGlzLmNsb3NlVGhyZWVEb3RzTWVudUZpbHRlcigpO1xyXG4gICAgfVxyXG4gICAgaWYgKCFpbnNpZGVUb3BGaWx0ZXJSb3cpIHtcclxuICAgICAgdGhpcy5jbG9zZUZpbHRlckRyb3Bkb3ducyhldmVudCk7XHJcbiAgICB9XHJcbiAgICBpZiAoIXRhcmdldC5jbG9zZXN0KCcuc2V0LWRlZmF1bHQtcHJlc2V0JykpIHtcclxuICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnNldC1kZWZhdWx0LXByZXNldCcpPy5jbGFzc0xpc3Q/LnJlbW92ZSgnc2hvdycpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghdGFyZ2V0LmNsb3Nlc3QoJy5mdWxsLXRleHQtYm94JykgJiYgIXRhcmdldC5jbG9zZXN0KCcuZGF0YS1ncmlkLWhlYWRlci13cmFwcGVyJykpIHtcclxuICAgICAgdGhpcy5jb2xsYXBzZUFsbEV4cGFuZGVkQ2VsbHMoKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIXRhcmdldC5jbG9zZXN0KCcuZGF0YS1ncmlkLXRhYmxlLXdyYXBwZXInKSkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkS2V5cy5jbGVhcigpO1xyXG4gICAgICB0aGlzLmFjdGl2ZUNlbGwgPSAnJztcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICBjbG9zZVRocmVlRG90c01lbnVGaWx0ZXIoKSB7XHJcbiAgICB0aGlzLmlzVGhyZWVEb3RzRmlsdGVyT3BlbiA9IGZhbHNlO1xyXG4gIH1cclxuXHJcblxyXG4gIGNsb3NlRmlsdGVyRHJvcGRvd25zKGV2ZW50OiBNb3VzZUV2ZW50KSB7XHJcbiAgICB0aGlzLmlzRmlsdGVyT3BlbiA9IGZhbHNlO1xyXG4gICAgdGhpcy5pc0FjdGl2ZUZpbHRlck9wZW4gPSBmYWxzZTtcclxuICAgIHRoaXMuYWN0aXZlVG9wQnV0dG9uID0gJyc7XHJcbiAgICB0aGlzLmFjdGl2ZUZpbHRlckNlbGwgPSBudWxsO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBoYXNQYXJlbnRXaXRoQ2xhc3MoXHJcbiAgICBlbGVtZW50OiBIVE1MRWxlbWVudCxcclxuICAgIGNsYXNzTGlzdDogc3RyaW5nW11cclxuICApOiBib29sZWFuIHtcclxuICAgIGxldCBlbDogSFRNTEVsZW1lbnQgfCBudWxsID0gZWxlbWVudDtcclxuXHJcbiAgICB3aGlsZSAoZWwgIT09IG51bGwpIHtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIGVsLmNsYXNzTGlzdCAmJlxyXG4gICAgICAgIGNsYXNzTGlzdC5zb21lKChjbGFzc05hbWUpID0+IGVsIS5jbGFzc0xpc3QuY29udGFpbnMoY2xhc3NOYW1lKSlcclxuICAgICAgKSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH1cclxuICAgICAgZWwgPSBlbC5wYXJlbnRFbGVtZW50O1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIGlzTWVudWVIaWRkZW4gPSBmYWxzZTtcclxuICBvcGVuVGhyZWVEb3RzTWVudShldmVudDogTW91c2VFdmVudCwgY2hpbGQ6IGFueSwga2VlcE9yaWdpbmFsUG9zaXRpb24gPSBmYWxzZSkge1xyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgdGhpcy5pc01lbnVlSGlkZGVuID0gdHJ1ZTtcclxuICAgIGNvbnN0IGNvbnRhaW5lcldpZHRoID0gdGhpcy5kYXRhR3JpZENvbnRhaW5lcj8ubmF0aXZlRWxlbWVudD8ub2Zmc2V0V2lkdGg7XHJcbiAgICB0aGlzLmFjdGl2ZUNvbCA9IGNoaWxkO1xyXG4gICAgdGhpcy5hY3RpdmVGaWx0ZXJDZWxsID0gbnVsbDtcclxuICAgIGNvbnN0IHggPSBldmVudC5jbGllbnRYO1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGNvbnN0IGVsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuY29sdW1uLW1lbnUnKSBhcyBIVE1MRWxlbWVudDtcclxuICAgICAgaWYgKGVsZW1lbnQpIHtcclxuICAgICAgICBpZiAoeCA+IChjb250YWluZXJXaWR0aCAvIDIpKSB7XHJcbiAgICAgICAgICBlbGVtZW50LnN0eWxlLmxlZnQgPSBgJHt4IC0gMjQwfXB4YDtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgZWxlbWVudCEuc3R5bGUubGVmdCA9IGAke3h9cHhgO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICB0aGlzLmlzTWVudWVIaWRkZW4gPSBmYWxzZTtcclxuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfSwgMCk7XHJcbiAgfVxyXG4gIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cclxuICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXHJcbiAgLy8gQ29sdW1uIFRocmVlIERvdHMgQWN0aW9uc1xyXG4gIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXHJcbiAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cclxuICBzb3J0QXNjKGNvbDogYW55KSB7XHJcbiAgICBpZiAoIWNvbC5pc19zb3J0YWJsZSkgcmV0dXJuO1xyXG4gICAgY29sIS5vcmRlcl9ieSA9ICdhc2MnO1xyXG4gICAgY29uc3QgZXZlbnQgPSB7XHJcbiAgICAgIG9yZGVyOiAnYXNjJyxcclxuICAgICAgY29sdW1uOiBjb2xcclxuICAgIH1cclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgIHRoaXMuc29ydGluZ09yZGVyT3B0aW9ucy5lbWl0KGV2ZW50KTtcclxuICB9XHJcblxyXG4gIHNvcnREZXNjKGNvbDogYW55KSB7XHJcbiAgICBpZiAoIWNvbC5pc19zb3J0YWJsZSkgcmV0dXJuO1xyXG4gICAgY29sIS5vcmRlcl9ieSA9ICdkZXNjJztcclxuICAgIGNvbnN0IGV2ZW50ID0ge1xyXG4gICAgICBvcmRlcjogJ2Rlc2MnLFxyXG4gICAgICBjb2x1bW46IGNvbFxyXG4gICAgfVxyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgdGhpcy5zb3J0aW5nT3JkZXJPcHRpb25zLmVtaXQoZXZlbnQpO1xyXG4gIH1cclxuXHJcbiAgcmVzZXRTb3J0KGNvbDogYW55KSB7XHJcbiAgICB0aGlzLnNvcnRpbmdDb25maWcgPSB7IGZpZWxkOiAnJywgb3JkZXJfYnk6ICcnIH07XHJcbiAgICBjb25zdCBldmVudCA9IHsgZmllbGQ6IG51bGwsIG9yZGVyX2J5OiBudWxsIH1cclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgIHRoaXMuc29ydGluZ09yZGVyT3B0aW9ucy5lbWl0KGV2ZW50KTtcclxuICB9XHJcblxyXG5cclxuICBhc3luYyB1cGRhdGVDb2x1bW5QaW5JblNvdXJjZUJ5RmllbGQoXHJcbiAgICBjb2x1bW46IGFueSxcclxuICAgIHBpbm5lZDogJ2xlZnQnIHwgJ3JpZ2h0JyB8IG51bGwsXHJcbiAgICBpc05lc3RlZFRhYmxlOiBhbnkgPSBmYWxzZSxcclxuICAgIGNvbHVtbnM/OiBhbnlcclxuICApIHtcclxuICAgIGRlYnVnZ2VyXHJcbiAgICBpZiAoaXNOZXN0ZWRUYWJsZSkge1xyXG4gICAgICB0aGlzLnBpblVucGluQ29sdW0oY29sdW1uLCBwaW5uZWQsIGNvbHVtbnMpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCB1cGRhdGUgPSAoY29sdW1uczogYW55W10pID0+IHtcclxuICAgICAgZm9yIChjb25zdCBjb2wgb2YgY29sdW1ucykge1xyXG4gICAgICAgIGlmIChjb2wuY2hpbGRyZW4/Lmxlbmd0aCkge1xyXG4gICAgICAgICAgdXBkYXRlKGNvbC5jaGlsZHJlbik7XHJcbiAgICAgICAgfSBlbHNlIGlmIChjb2wuZmllbGQgPT09IGNvbHVtbi5maWVsZCkge1xyXG4gICAgICAgICAgY29sLnBpbm5lZCA9IHBpbm5lZDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH07XHJcbiAgICB0aGlzLmFjdGl2ZUNvbCA9IG51bGw7XHJcbiAgICB1cGRhdGUodGhpcy5jb2x1bW5zKTtcclxuICAgIHRoaXMudXBkYXRlQ29sdW1uV2lkdGhzQW5kR3JvdXBzKCk7XHJcbiAgICB0aGlzLnJlZnJlc2hQcmV2aWV3Q29sdW1ucygpO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgY29uc3Qgc2VuZERhdGEgPSB7XHJcbiAgICAgIGNvbHVtbnM6IHRoaXMuY2xlYW5Db2x1bW5zKHRoaXMuY29sdW1ucyksXHJcbiAgICAgIGZpbHRlcnM6IHRoaXMuY2xlYW5GaWx0ZXJkQ29sdW1ucygpLFxyXG4gICAgICBub19vZl9yZWNvcmRzOiB0aGlzLnBhZ2luYXRpb25Db25maWcucGFnZVNpemUsXHJcbiAgICAgIHR5cGU6IHRoaXMudGFibGVUeXBlLFxyXG4gICAgfTtcclxuICAgIHRoaXMuY3JlYXRlVXBkYXRlQ29uZmlnTGlzdGluZy5lbWl0KHNlbmREYXRhKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0VmlzaWJsZUxlYWZDb2x1bW5zID0gKGNvbHVtbnM6IGFueVtdKTogYW55W10gPT4ge1xyXG4gICAgY29uc3QgcmVzdWx0OiBhbnlbXSA9IFtdO1xyXG4gICAgZm9yIChjb25zdCBjb2x1bW4gb2YgY29sdW1ucykge1xyXG4gICAgICBpZiAoY29sdW1uLmNoaWxkcmVuICYmIEFycmF5LmlzQXJyYXkoY29sdW1uLmNoaWxkcmVuKSkge1xyXG4gICAgICAgIHJlc3VsdC5wdXNoKC4uLnRoaXMuZ2V0VmlzaWJsZUxlYWZDb2x1bW5zKGNvbHVtbi5jaGlsZHJlbikpO1xyXG4gICAgICB9IGVsc2UgaWYgKGNvbHVtbi5pc192aXNpYmxlKSB7XHJcbiAgICAgICAgcmVzdWx0LnB1c2goY29sdW1uKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9O1xyXG5cclxuICBhdXRvc2l6ZUNvbHVtbihjb2xzOiBhbnkgfCBhbnlbXSk6IHZvaWQge1xyXG4gICAgdGhpcy5hY3RpdmVDb2wgPSBudWxsO1xyXG5cclxuICAgIC8vIE5vcm1hbGl6ZSBpbnB1dCB0byBhbiBhcnJheVxyXG4gICAgY29uc3QgY29sdW1uc1RvUmVzaXplID0gQXJyYXkuaXNBcnJheShjb2xzKSA/IGNvbHMgOiBbY29sc107XHJcblxyXG4gICAgLy8gSGVscGVyOiBGbGF0dGVuIGFsbCB2aXNpYmxlIGxlYWYgY29sdW1uc1xyXG4gICAgY29uc3QgdmlzaWJsZUNvbHVtbnMgPSB0aGlzLmdldFZpc2libGVMZWFmQ29sdW1ucyh0aGlzLmNvbHVtbnMpO1xyXG4gICAgY29uc3QgdmlzaWJsZUNvdW50ID0gdmlzaWJsZUNvbHVtbnMubGVuZ3RoO1xyXG5cclxuICAgIGlmICh2aXNpYmxlQ291bnQgPT09IDApIHJldHVybjtcclxuXHJcbiAgICBsZXQgY29udGFpbmVyV2lkdGggPVxyXG4gICAgICB0aGlzLmRhdGFHcmlkQ29udGFpbmVyPy5uYXRpdmVFbGVtZW50Py5vZmZzZXRXaWR0aCA/PyAwO1xyXG4gICAgaWYgKHRoaXMuc2hvd1NlcmlhbE51bWJlcikgY29udGFpbmVyV2lkdGggLT0gNTU7XHJcbiAgICBpZiAodGhpcy5zaG93U2lkZU1lbnUpIGNvbnRhaW5lcldpZHRoIC09IDI5O1xyXG4gICAgaWYgKHRoaXMuZ3JpZFR5cGUgPT0gJ0Fzc2V0cycgfHwgdGhpcy5ncmlkVHlwZSA9PSAnVGFza3MnKSBjb250YWluZXJXaWR0aCAtPSAzMDtcclxuICAgIGNvbnRhaW5lcldpZHRoIC09IDU1O1xyXG4gICAgY29uc3QgZXF1YWxXaWR0aCA9IE1hdGguZmxvb3IoY29udGFpbmVyV2lkdGggLyB2aXNpYmxlQ291bnQpO1xyXG5cclxuICAgIC8vIFJlc2l6ZSBlYWNoIHBhc3NlZCBjb2x1bW5cclxuICAgIGZvciAoY29uc3QgY29sIG9mIGNvbHVtbnNUb1Jlc2l6ZSkge1xyXG4gICAgICBpZiAoY29sICYmIGNvbC5maWVsZCkge1xyXG4gICAgICAgIGNvbC53aWR0aCA9IGVxdWFsV2lkdGg7XHJcbiAgICAgICAgdGhpcy51cGRhdGVDb2x1bW5XaWR0aEluU291cmNlQnlGaWVsZChjb2wuZmllbGQsIGVxdWFsV2lkdGgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy51cGRhdGVDb2x1bW5XaWR0aHNBbmRHcm91cHMoKTtcclxuXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgY29uc3Qgc2VuZERhdGEgPSB7XHJcbiAgICAgICAgY29sdW1uczogdGhpcy5jbGVhbkNvbHVtbnModGhpcy5jb2x1bW5zKSxcclxuICAgICAgICBmaWx0ZXJzOiB0aGlzLmNsZWFuRmlsdGVyZENvbHVtbnMoKSxcclxuICAgICAgICBub19vZl9yZWNvcmRzOiB0aGlzLnBhZ2luYXRpb25Db25maWcucGFnZVNpemUsXHJcbiAgICAgICAgdHlwZTogdGhpcy50YWJsZVR5cGUsXHJcbiAgICAgIH07XHJcbiAgICAgIHRoaXMuY3JlYXRlVXBkYXRlQ29uZmlnTGlzdGluZy5lbWl0KHNlbmREYXRhKTtcclxuICAgIH0sIDEwMDApO1xyXG4gICAgdGhpcy5yZWZyZXNoUHJldmlld0NvbHVtbnMoKTtcclxuICB9XHJcblxyXG4gIGdldEdyb3VwV2lkdGgoZ3JvdXA6IGFueSk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICBncm91cD8uY2hpbGRyZW5cclxuICAgICAgICA/LmZpbHRlcigoY29sOiBhbnkpID0+IGNvbD8uaXNfdmlzaWJsZSlcclxuICAgICAgICA/LnJlZHVjZSgoYWNjOiBudW1iZXIsIGNvbDogYW55KSA9PiBhY2MgKyAoY29sPy53aWR0aCB8fCAwKSwgMCkgfHwgMFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGF1dG9zaXplQWxsQ29sdW1ucygpOiB2b2lkIHtcclxuICAgIHRoaXMuYWN0aXZlQ29sID0gbnVsbDtcclxuXHJcbiAgICBjb25zdCBnZXRWaXNpYmxlTGVhZkNvbHVtbnMgPSAoY29sdW1uczogYW55W10pOiBhbnlbXSA9PiB7XHJcbiAgICAgIGNvbnN0IHJlc3VsdDogYW55W10gPSBbXTtcclxuXHJcbiAgICAgIGZvciAoY29uc3QgY29sdW1uIG9mIGNvbHVtbnMpIHtcclxuICAgICAgICBpZiAoY29sdW1uLmNoaWxkcmVuICYmIEFycmF5LmlzQXJyYXkoY29sdW1uLmNoaWxkcmVuKSkge1xyXG4gICAgICAgICAgcmVzdWx0LnB1c2goLi4uZ2V0VmlzaWJsZUxlYWZDb2x1bW5zKGNvbHVtbi5jaGlsZHJlbikpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoY29sdW1uLmlzX3Zpc2libGUgIT09IGZhbHNlKSB7XHJcbiAgICAgICAgICByZXN1bHQucHVzaChjb2x1bW4pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgdmlzaWJsZUNvbHVtbnMgPSBnZXRWaXNpYmxlTGVhZkNvbHVtbnModGhpcy5jb2x1bW5zKTtcclxuICAgIGNvbnN0IHZpc2libGVDb3VudCA9IHZpc2libGVDb2x1bW5zLmxlbmd0aDtcclxuXHJcbiAgICBpZiAodmlzaWJsZUNvdW50ID09PSAwKSByZXR1cm47XHJcblxyXG4gICAgbGV0IGNvbnRhaW5lcldpZHRoID1cclxuICAgICAgdGhpcy5kYXRhR3JpZENvbnRhaW5lcj8ubmF0aXZlRWxlbWVudD8ub2Zmc2V0V2lkdGggPz8gMDtcclxuICAgIGlmICh0aGlzLnNob3dTZXJpYWxOdW1iZXIpIGNvbnRhaW5lcldpZHRoIC09IDU1O1xyXG4gICAgaWYgKHRoaXMuc2hvd1NpZGVNZW51KSBjb250YWluZXJXaWR0aCAtPSAyOTtcclxuICAgIGlmICh0aGlzLmdyaWRUeXBlID09ICdBc3NldHMnIHx8IHRoaXMuZ3JpZFR5cGUgPT0gJ1Rhc2tzJykgY29udGFpbmVyV2lkdGggLT0gMzA7XHJcbiAgICBjb250YWluZXJXaWR0aCAtPSA1NTtcclxuICAgIGNvbnN0IGVxdWFsV2lkdGggPSBNYXRoLm1heChNYXRoLmZsb29yKGNvbnRhaW5lcldpZHRoIC8gdmlzaWJsZUNvdW50KSwgMTUwKTtcclxuXHJcbiAgICAvLyBVcGRhdGUgd2lkdGhzIGZvciBhbGwgdmlzaWJsZSBjb2x1bW5zXHJcbiAgICB2aXNpYmxlQ29sdW1ucy5mb3JFYWNoKChjb2wpID0+IHtcclxuICAgICAgY29sLndpZHRoID0gZXF1YWxXaWR0aDtcclxuICAgICAgdGhpcy51cGRhdGVDb2x1bW5XaWR0aEluU291cmNlQnlGaWVsZChjb2wuZmllbGQsIGVxdWFsV2lkdGgpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5yZWZyZXNoSGVhZGVycygpO1xyXG4gICAgdGhpcy5oYXNTY3JvbGwgPSB0aGlzLmhhc0hvcml6b250YWxTY3JvbGxiYXIoKTtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICBjb25zdCBzZW5kRGF0YSA9IHtcclxuICAgICAgICBjb2x1bW5zOiB0aGlzLmNsZWFuQ29sdW1ucyh0aGlzLmNvbHVtbnMpLFxyXG4gICAgICAgIGZpbHRlcnM6IHRoaXMuY2xlYW5GaWx0ZXJkQ29sdW1ucygpLFxyXG4gICAgICAgIG5vX29mX3JlY29yZHM6IHRoaXMucGFnaW5hdGlvbkNvbmZpZy5wYWdlU2l6ZSxcclxuICAgICAgICB0eXBlOiB0aGlzLnRhYmxlVHlwZSxcclxuICAgICAgfTtcclxuICAgICAgdGhpcy5jcmVhdGVVcGRhdGVDb25maWdMaXN0aW5nLmVtaXQoc2VuZERhdGEpO1xyXG4gICAgfSwgMTAwMCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG1hcmtDb2x1bW5Bc0dyb3VwZWQoY29sdW1uczogYW55W10sIGZpZWxkOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGZvciAoY29uc3QgY29sIG9mIGNvbHVtbnMpIHtcclxuICAgICAgaWYgKGNvbC5maWVsZCA9PT0gZmllbGQpIHtcclxuICAgICAgICBjb2wuaXNSb3dHcm91cGVkID0gdHJ1ZTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGNvbC5jaGlsZHJlbj8ubGVuZ3RoKSB7XHJcbiAgICAgICAgdGhpcy5tYXJrQ29sdW1uQXNHcm91cGVkKGNvbC5jaGlsZHJlbiwgZmllbGQpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhc3luYyBncm91cEJ5KGNvbDogYW55KSB7XHJcbiAgICB0aGlzLm1haW5TY3JvbGwubmF0aXZlRWxlbWVudC5zY3JvbGxUb3AgPSAwO1xyXG4gICAgdGhpcy50cmFuc2xhdGVZID0gMDtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgIHRoaXMuYWN0aXZlQ29sID0gbnVsbDtcclxuICAgIGlmICghY29sKSByZXR1cm47XHJcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgaWYgKGNvbD8uaXNfZ3JvdXBhYmxlKSB7XHJcbiAgICAgIHRoaXMuZ3JvdXBlZENvbHVtbnMucHVzaChjb2wpO1xyXG4gICAgICB0aGlzLm1hcmtDb2x1bW5Bc0dyb3VwZWQodGhpcy5jb2x1bW5zLCBjb2wuZmllbGQpO1xyXG4gICAgfVxyXG4gICAgY29uc3QgZmllbGRzID0gdGhpcy5ncm91cGVkQ29sdW1ucy5tYXAoKGl0ZW0pID0+IGl0ZW0uZmllbGQpO1xyXG4gICAgdGhpcy5kYXRhU2V0ID0gYXdhaXQgdGhpcy5ncm91cERhdGFBc3luYyh0aGlzLm9yaWdpbmFsRGF0YVNldCwgZmllbGRzKTtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLnVwZGF0ZUZsYXR0ZW5lZERhdGEoKTtcclxuICAgICAgdGhpcy51cGRhdGVDb2x1bW5XaWR0aHNBbmRHcm91cHMoKTtcclxuICAgICAgdGhpcy5yZWZyZXNoUHJldmlld0NvbHVtbnMoKTtcclxuICAgICAgdGhpcy51cGRhdGVWaXNpYmxlUm93cygwKTtcclxuICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH0sIDEwMCk7XHJcblxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuZ3JvdXBCb3hQYWRkaW5nID0gdGhpcy5jb2x1bW5zR3JvdXBlZEJveD8ubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aDtcclxuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpXHJcbiAgICB9LCAxMCk7XHJcblxyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgZ3JvdXBEYXRhQXN5bmMoZGF0YTogYW55W10sIGdyb3VwRmllbGRzOiBzdHJpbmdbXSk6IFByb21pc2U8YW55W10+IHtcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHtcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy5ncm91cERhdGEoZGF0YSwgZ3JvdXBGaWVsZHMpO1xyXG4gICAgICAgIHJlc29sdmUocmVzdWx0KTtcclxuICAgICAgfSwgMCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG5cclxuXHJcblxyXG4gIGNob29zZUNvbHVtbnMoKSB7XHJcbiAgICB0aGlzLmFjdGl2ZUNvbCA9IG51bGw7XHJcbiAgICB0aGlzLnNob3dDb2x1bW5QYW5lbCA9IHRydWU7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICByZXNldENvbHVtbnMoKSB7XHJcbiAgICB0aGlzLmFjdGl2ZUNvbCA9IG51bGw7XHJcblxyXG4gICAgLy8gdGhpcy5jb2x1bW5zID0gc3RydWN0dXJlZENsb25lKHRoaXMub3JpZ2luYWxDb2x1bW5zKTtcclxuICAgIC8vIERlZXAgY29weSBuZXN0ZWQgb2JqZWN0cyBidXQga2VlcCBjbGFzcyByZWZzIHNhZmVcclxuICAgIHRoaXMub3JpZ2luYWxDb2x1bW5zID0gdGhpcy5jb2x1bW5zLm1hcChjb2wgPT4gKHtcclxuICAgICAgLi4uY29sLFxyXG4gICAgICAvLyBEZWVwIGNvcHkgbmVzdGVkIG9iamVjdHMgYnV0IGtlZXAgY2xhc3MgcmVmcyBzYWZlXHJcbiAgICAgIHF1ZXJ5OiBjb2wucXVlcnkgPyB7IC4uLmNvbC5xdWVyeSB9IDogbnVsbCxcclxuICAgICAgY29sdW1uX2Ryb3Bkb3duX3ZhbHVlOiBjb2wuY29sdW1uX2Ryb3Bkb3duX3ZhbHVlXHJcbiAgICAgICAgPyBbLi4uY29sLmNvbHVtbl9kcm9wZG93bl92YWx1ZV1cclxuICAgICAgICA6IFtdLFxyXG4gICAgfSkpO1xyXG5cclxuICAgIHRoaXMuU2V0Q29sdW1uc0RlZmF1bHRXaWR0aCgpO1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMudXBkYXRlQ29sdW1uV2lkdGhzQW5kR3JvdXBzKCk7XHJcbiAgICAgIHRoaXMucmVmcmVzaFByZXZpZXdDb2x1bW5zKCk7XHJcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH0sIDEwMCk7XHJcbiAgfVxyXG5cclxuICBjbGVhckZpbHRlcihjb2w6IGFueSkge1xyXG4gICAgY29sLmZpcnN0VmFsdWUgPSAnJztcclxuICAgIGNvbC5zZWNvbmRWYWx1ZSA9ICcnO1xyXG4gICAgY29sLmZpcnN0Q29uZGl0aW9uID0gJ2NvbnRhaW4nO1xyXG4gICAgY29sLnNlY29uZENvbmRpdGlvbiA9IG51bGw7XHJcbiAgICBjb2wubG9naWMgPSAnQU5EJztcclxuICAgIGNvbC5zZWxlY3RBbGwgPSBmYWxzZTtcclxuICAgIGNvbC5zZWxlY3RlZE9wdGlvbnMgPSB7fTtcclxuICAgIGNvbC5zZWFyY2hWYWx1ZSA9ICcnO1xyXG5cclxuICB9XHJcblxyXG5cclxuICBhcHBseUZpbHRlcihjb2w6IGFueSkge1xyXG4gICAgdGhpcy5maWx0ZXJDb2x1bW5zTGlzdC5wdXNoKGNvbCk7XHJcbiAgfVxyXG5cclxuICAvLyBSb3dzIFNlbGVjdGlvbiBMb2dpYyBHb2VzIEhlcmVcclxuXHJcbiAgc2VsZWN0ZWRSb3dzOiBTZXQ8c3RyaW5nPiA9IG5ldyBTZXQoKTtcclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IG5vcm1hbGl6ZWQgSUQgZnJvbSByb3cuXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBnZXRSb3dJZChyb3c6IGFueSk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gcm93LmlkID8/IHJvdy5faWQ7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBUb2dnbGUgYSBzaW5nbGUgcm93IHNlbGVjdGlvbi5cclxuICAgKi9cclxuICB0b2dnbGVSb3dTZWxlY3Rpb24ocm93OiBhbnkpOiB2b2lkIHtcclxuICAgIGNvbnN0IGlkID0gdGhpcy5nZXRSb3dJZChyb3cpO1xyXG5cclxuICAgIGlmICh0aGlzLnNlbGVjdGVkUm93cy5oYXMoaWQpKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dzLmRlbGV0ZShpZCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkUm93cy5hZGQoaWQpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGlkcyA9IEFycmF5LmZyb20odGhpcy5zZWxlY3RlZFJvd3MpO1xyXG5cclxuICAgIHRoaXMuc2F2ZVNlbGVjdGlvbihpZHMsIHRoaXMudGFibGVUeXBlKTtcclxuXHJcbiAgICBjb25zdCBldmVudCA9IHtcclxuICAgICAgZGF0YToge1xyXG4gICAgICAgIGxpc3RpbmdUeXBlOiB0aGlzLmxpc3RpbmdUeXBlLFxyXG4gICAgICAgIG9iajogaWRzXHJcbiAgICAgIH0sXHJcbiAgICAgIGV2ZW50VHlwZTogXCJvblNlbGVjdFJvd1wiLFxyXG4gICAgfTtcclxuICAgIHRoaXMuZ2VuZXJpY0V2ZW50LmVtaXQoZXZlbnQpO1xyXG4gIH1cclxuXHJcblxyXG5cclxuICB0b2dnbGVTZWxlY3RBbGwoZGF0YTogYW55W10pOiB2b2lkIHtcclxuICAgIGNvbnN0IGxlYWZSb3dzID0gdGhpcy5nZXRBbGxMZWFmUm93cyhkYXRhKTtcclxuICAgIGNvbnN0IGFsbElkcyA9IGxlYWZSb3dzLm1hcChyID0+IHRoaXMuZ2V0Um93SWQocikpO1xyXG5cclxuICAgIGNvbnN0IGFsbFNlbGVjdGVkID0gYWxsSWRzLmV2ZXJ5KGlkID0+IHRoaXMuc2VsZWN0ZWRSb3dzLmhhcyhpZCkpO1xyXG5cclxuICAgIGlmIChhbGxTZWxlY3RlZCkge1xyXG4gICAgICBhbGxJZHMuZm9yRWFjaChpZCA9PiB0aGlzLnNlbGVjdGVkUm93cy5kZWxldGUoaWQpKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGFsbElkcy5mb3JFYWNoKGlkID0+IHRoaXMuc2VsZWN0ZWRSb3dzLmFkZChpZCkpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgY29uc3QgaWRzID0gQXJyYXkuZnJvbSh0aGlzLnNlbGVjdGVkUm93cyk7XHJcbiAgICBjb25zdCBldmVudCA9IHtcclxuICAgICAgZGF0YToge1xyXG4gICAgICAgIGxpc3RpbmdUeXBlOiB0aGlzLmxpc3RpbmdUeXBlLFxyXG4gICAgICAgIG9iajogaWRzXHJcbiAgICAgIH0sXHJcbiAgICAgIGV2ZW50VHlwZTogXCJvblNlbGVjdFJvd1wiLFxyXG4gICAgfVxyXG4gICAgdGhpcy5nZW5lcmljRXZlbnQuZW1pdChldmVudCk7XHJcbiAgICB0aGlzLnNhdmVTZWxlY3Rpb24oaWRzLCB0aGlzLnRhYmxlVHlwZSk7XHJcbiAgfVxyXG5cclxuICBpc1Jvd1NlbGVjdGVkKHJvdzogYW55KTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RlZFJvd3MuaGFzKHRoaXMuZ2V0Um93SWQocm93KSk7XHJcbiAgfVxyXG5cclxuICBpc0FsbFNlbGVjdGVkKGRhdGE6IGFueVtdKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBsZWFmUm93cyA9IHRoaXMuZ2V0QWxsTGVhZlJvd3MoZGF0YSk7XHJcbiAgICByZXR1cm4gbGVhZlJvd3MubGVuZ3RoID4gMCAmJiBsZWFmUm93cy5ldmVyeShyID0+IHRoaXMuc2VsZWN0ZWRSb3dzLmhhcyh0aGlzLmdldFJvd0lkKHIpKSk7XHJcbiAgfVxyXG5cclxuXHJcbiAgaXNJbmRldGVybWluYXRlU3RhdGUoZGF0YTogYW55W10pOiBib29sZWFuIHtcclxuICAgIGNvbnN0IGxlYWZSb3dzID0gdGhpcy5nZXRBbGxMZWFmUm93cyhkYXRhKTtcclxuICAgIGNvbnN0IHNlbGVjdGVkQ291bnQgPSBsZWFmUm93cy5maWx0ZXIociA9PiB0aGlzLnNlbGVjdGVkUm93cy5oYXModGhpcy5nZXRSb3dJZChyKSkpLmxlbmd0aDtcclxuXHJcbiAgICByZXR1cm4gc2VsZWN0ZWRDb3VudCA+IDAgJiYgc2VsZWN0ZWRDb3VudCA8IGxlYWZSb3dzLmxlbmd0aDtcclxuICB9XHJcblxyXG5cclxuICBnZXRBbGxMZWFmUm93cyhkYXRhOiBhbnlbXSk6IGFueVtdIHtcclxuICAgIGNvbnN0IGxlYWY6IGFueVtdID0gW107XHJcblxyXG4gICAgY29uc3QgdHJhdmVyc2UgPSAobm9kZTogYW55KSA9PiB7XHJcbiAgICAgIGlmICghbm9kZSkgcmV0dXJuO1xyXG5cclxuICAgICAgaWYgKG5vZGUuaXNHcm91cCkge1xyXG4gICAgICAgIG5vZGUuY2hpbGRyZW4/LmZvckVhY2godHJhdmVyc2UpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGxlYWYucHVzaChub2RlKTtcclxuICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICBkYXRhLmZvckVhY2godHJhdmVyc2UpO1xyXG4gICAgcmV0dXJuIGxlYWY7XHJcbiAgfVxyXG5cclxuXHJcblxyXG5cclxuICAvLyBTaWRlIE1lbnUgV29ya2luZyBHb2VzIEhlcmVcclxuICB0b2dnbGVTaWRlTWVudShjbGlja2VkT246ICdjb2xzJyB8ICdmaWx0cnMnKSB7XHJcbiAgICBpZiAodGhpcy5jdXJyZW50T3BlbmVkU2lkZU1lbnVlID09IGNsaWNrZWRPbikge1xyXG4gICAgICB0aGlzLmN1cnJlbnRPcGVuZWRTaWRlTWVudWUgPSBjbGlja2VkT247XHJcbiAgICAgIHRoaXMuc2lkZU1lbnVWaXNpYmxlID0gIXRoaXMuc2lkZU1lbnVWaXNpYmxlO1xyXG4gICAgfSBlbHNlIGlmIChcclxuICAgICAgdGhpcy5zaWRlTWVudVZpc2libGUgJiZcclxuICAgICAgY2xpY2tlZE9uICE9IHRoaXMuY3VycmVudE9wZW5lZFNpZGVNZW51ZVxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMuY3VycmVudE9wZW5lZFNpZGVNZW51ZSA9IGNsaWNrZWRPbjtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5jdXJyZW50T3BlbmVkU2lkZU1lbnVlID0gY2xpY2tlZE9uO1xyXG4gICAgICB0aGlzLnNpZGVNZW51VmlzaWJsZSA9ICF0aGlzLnNpZGVNZW51VmlzaWJsZTtcclxuICAgIH1cclxuICAgIHRoaXMuaGFzU2Nyb2xsID0gdGhpcy5oYXNIb3Jpem9udGFsU2Nyb2xsYmFyKCk7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICB0b2dnbGVHcm91cFZpc2liaWxpdHkoY29sOiBhbnkpIHtcclxuICAgIGNvbnN0IGFsbFZpc2libGUgPSBjb2wuY2hpbGRyZW4uZXZlcnkoKGNoaWxkOiBhbnkpID0+IGNoaWxkLmlzX3Zpc2libGUpO1xyXG4gICAgY29sLmNoaWxkcmVuLmZvckVhY2goKGNoaWxkOiBhbnkpID0+IChjaGlsZC5pc192aXNpYmxlID0gIWFsbFZpc2libGUpKTtcclxuICAgIGNvbnN0IHNlbmREYXRhID0ge1xyXG4gICAgICBjb2x1bW5zOiB0aGlzLmNsZWFuQ29sdW1ucyh0aGlzLmNvbHVtbnMpLFxyXG4gICAgICBmaWx0ZXJzOiB0aGlzLmNsZWFuRmlsdGVyZENvbHVtbnMoKSxcclxuICAgICAgbm9fb2ZfcmVjb3JkczogdGhpcy5wYWdpbmF0aW9uQ29uZmlnLnBhZ2VTaXplLFxyXG4gICAgICB0eXBlOiB0aGlzLnRhYmxlVHlwZSxcclxuICAgIH07XHJcbiAgICB0aGlzLmNyZWF0ZVVwZGF0ZUNvbmZpZ0xpc3RpbmcuZW1pdChzZW5kRGF0YSk7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy51cGRhdGVDb2x1bW5XaWR0aHNBbmRHcm91cHMoKTtcclxuICAgICAgdGhpcy5yZWZyZXNoUHJldmlld0NvbHVtbnMoKTtcclxuICAgICAgdGhpcy5TZXRDb2x1bW5zRGVmYXVsdFdpZHRoKCk7XHJcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH0sIDEwKTtcclxuICB9XHJcblxyXG4gIGlzQ29sdW1uVmlzaWJsZShjb2x1bW5zOiBhbnkpIHtcclxuICAgIGlmIChjb2x1bW5zPy5jaGlsZHJlbikge1xyXG4gICAgICByZXR1cm4gY29sdW1ucy5jaGlsZHJlbi5ldmVyeSgoZWxlbWVudDogYW55KSA9PiBlbGVtZW50LmlzX3Zpc2libGUpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBjb2x1bW5zPy5pc192aXNpYmxlO1xyXG4gIH1cclxuXHJcbiAgYWxsQ29sdW1uc1NlbGVjdGVkKCk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgZmxhdHRlbiA9IHRoaXMuZmxhdHRlbkNvbHVtbnModGhpcy5jb2x1bW5zKTtcclxuICAgIHJldHVybiBmbGF0dGVuLmV2ZXJ5KChjb2wpID0+IGNvbC5pc192aXNpYmxlKTtcclxuICB9XHJcblxyXG5cclxuICBwcml2YXRlIGZpbmRDb2x1bW5CeUZpZWxkKGZpZWxkOiBzdHJpbmcsIGNvbHM6IGFueVtdKTogYW55IHwgbnVsbCB7XHJcbiAgICBmb3IgKGNvbnN0IGNvbCBvZiBjb2xzKSB7XHJcbiAgICAgIGlmIChjb2wuZmllbGQgPT09IGZpZWxkKSB7XHJcbiAgICAgICAgcmV0dXJuIGNvbDtcclxuICAgICAgfVxyXG4gICAgICBpZiAoY29sLmNoaWxkcmVuICYmIEFycmF5LmlzQXJyYXkoY29sLmNoaWxkcmVuKSkge1xyXG4gICAgICAgIGNvbnN0IGZvdW5kID0gdGhpcy5maW5kQ29sdW1uQnlGaWVsZChmaWVsZCwgY29sLmNoaWxkcmVuKTtcclxuICAgICAgICBpZiAoZm91bmQpIHJldHVybiBmb3VuZDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuXHJcblxyXG4gIGFzeW5jIHRvZ2dsZUNvbHVtblZpc2liaWxpdHkoY29sdW1uOiBhbnksIGlzVmlzaWJsZTogYm9vbGVhbikge1xyXG4gICAgaWYgKGlzVmlzaWJsZSkge1xyXG4gICAgICBpZiAodGhpcy52aXNpYmxlQ29sdW1ucygpPy5sZW5ndGggPD0gMiAmJiBjb2x1bW4uaXNfdmlzaWJsZSkge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY29uc3QgY29sID0gdGhpcy5maW5kQ29sdW1uQnlGaWVsZChjb2x1bW4uZmllbGQsIHRoaXMuY29sdW1ucyk7XHJcbiAgICBpZiAoY29sKSB7XHJcbiAgICAgIGNvbC5pc192aXNpYmxlID0gaXNWaXNpYmxlO1xyXG4gICAgfVxyXG4gICAgYXdhaXQgdGhpcy5yZWZyZXNoSGVhZGVycygpO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgY29uc3Qgc2VuZERhdGEgPSB7XHJcbiAgICAgIGNvbHVtbnM6IHRoaXMuY2xlYW5Db2x1bW5zKHRoaXMuY29sdW1ucyksXHJcbiAgICAgIGZpbHRlcnM6IHRoaXMuY2xlYW5GaWx0ZXJkQ29sdW1ucygpLFxyXG4gICAgICBub19vZl9yZWNvcmRzOiB0aGlzLnBhZ2luYXRpb25Db25maWcucGFnZVNpemUsXHJcbiAgICAgIHR5cGU6IHRoaXMudGFibGVUeXBlLFxyXG4gICAgfTtcclxuICAgIHRoaXMuY3JlYXRlVXBkYXRlQ29uZmlnTGlzdGluZy5lbWl0KHNlbmREYXRhKTtcclxuICAgIGlmICh0aGlzLnRhYmxlRmlsdGVyVmlld0lkKSB7XHJcbiAgICAgIHRoaXMuc2F2ZVByZXNldCgnbW91c2VVcCcpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIHRvZ2dsZUFsbENvbHVtbnNWaXNpYmlsaXR5KCk6IHZvaWQge1xyXG4gICAgY29uc3QgZmxhdHRlbiA9IHRoaXMuZmxhdHRlbkNvbHVtbnModGhpcy5jb2x1bW5zKTtcclxuICAgIGNvbnN0IHZpc2libGVDb2x1bW5zID0gZmxhdHRlbi5maWx0ZXIoKGM6IGFueSkgPT4gYy5pc192aXNpYmxlKTtcclxuICAgIGNvbnN0IGFsbFNlbGVjdGVkID0gdmlzaWJsZUNvbHVtbnMubGVuZ3RoID09PSBmbGF0dGVuLmxlbmd0aDtcclxuICAgIGlmIChhbGxTZWxlY3RlZCkge1xyXG4gICAgICBmbGF0dGVuLmZvckVhY2goKGNvbDogYW55LCBpbmRleDogbnVtYmVyKSA9PiB7XHJcbiAgICAgICAgY29sLmlzX3Zpc2libGUgPSBpbmRleCA8IDI7XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgZmxhdHRlbi5mb3JFYWNoKChjb2w6IGFueSkgPT4gKGNvbC5pc192aXNpYmxlID0gdHJ1ZSkpO1xyXG4gICAgfVxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMudXBkYXRlQ29sdW1uV2lkdGhzQW5kR3JvdXBzKCk7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMucmVmcmVzaFByZXZpZXdDb2x1bW5zKCk7XHJcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB9LCAxMDApO1xyXG4gICAgfSwgMTAwKTtcclxuICB9XHJcblxyXG4gIHZpc2libGVDb2x1bW5zKCkge1xyXG4gICAgY29uc3QgZmxhdHRlbiA9IHRoaXMuZmxhdHRlbkNvbHVtbnModGhpcy5jb2x1bW5zKTtcclxuICAgIGNvbnN0IHZpc2libGVDb2x1bW5zID0gZmxhdHRlbi5maWx0ZXIoKGM6IGFueSkgPT4gYy5pc192aXNpYmxlKTtcclxuICAgIHJldHVybiB2aXNpYmxlQ29sdW1ucztcclxuICB9XHJcblxyXG4gIGZsYXR0ZW5Db2x1bW5zKGNvbHM6IGFueVtdKTogYW55W10ge1xyXG4gICAgcmV0dXJuIGNvbHMucmVkdWNlKChhY2M6IGFueVtdLCBjb2w6IGFueSkgPT4ge1xyXG4gICAgICBpZiAoY29sPy5jaGlsZHJlbiAmJiBjb2wuY2hpbGRyZW4ubGVuZ3RoKSB7XHJcbiAgICAgICAgLy8gcmVjdXJzaXZlbHkgZmxhdHRlbiBjaGlsZHJlblxyXG4gICAgICAgIHJldHVybiBhY2MuY29uY2F0KHRoaXMuZmxhdHRlbkNvbHVtbnMoY29sLmNoaWxkcmVuKSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgLy8gbGVhZiBjb2x1bW5cclxuICAgICAgICByZXR1cm4gYWNjLmNvbmNhdChjb2wpO1xyXG4gICAgICB9XHJcbiAgICB9LCBbXSk7XHJcbiAgfVxyXG5cclxuXHJcbiAgZmlsdGVyZWRDb2x1bW5zKGNvbHM6IGFueVtdKTogYW55W10ge1xyXG4gICAgY29uc3Qgc2VhcmNoID0gdGhpcy5jb2x1bW5TZWFyY2gudG9Mb3dlckNhc2UoKTtcclxuICAgIHJldHVybiBjb2xzXHJcbiAgICAgIC5tYXAoKGNvbCkgPT4ge1xyXG4gICAgICAgIGlmIChjb2wuY2hpbGRyZW4pIHtcclxuICAgICAgICAgIGNvbnN0IGZpbHRlcmVkQ2hpbGRyZW4gPSB0aGlzLmZpbHRlcmVkQ29sdW1ucyhjb2wuY2hpbGRyZW4pO1xyXG4gICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICBjb2wuaGVhZGVyLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc2VhcmNoKSB8fFxyXG4gICAgICAgICAgICBmaWx0ZXJlZENoaWxkcmVuLmxlbmd0aFxyXG4gICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB7IC4uLmNvbCwgY2hpbGRyZW46IGZpbHRlcmVkQ2hpbGRyZW4gfTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICByZXR1cm4gY29sLmhlYWRlci50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaCkgPyBjb2wgOiBudWxsO1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICAgLmZpbHRlcihCb29sZWFuKTtcclxuICB9XHJcblxyXG4gIGdldCBhY2NvcmRpb25TdGF0ZSgpOiAnYWxsJyB8ICdub25lJyB8ICdzb21lJyB7XHJcbiAgICBjb25zdCBncm91cHMgPSB0aGlzLmdldEFsbEdyb3VwQ29sdW1ucyh0aGlzLmNvbHVtbnMpO1xyXG4gICAgY29uc3QgZXhwYW5kZWRDb3VudCA9IGdyb3Vwcy5maWx0ZXIoKGNvbCkgPT4gY29sLmV4cGFuZGVkKS5sZW5ndGg7XHJcblxyXG4gICAgaWYgKGV4cGFuZGVkQ291bnQgPT09IDApIHJldHVybiAnbm9uZSc7XHJcbiAgICBpZiAoZXhwYW5kZWRDb3VudCA9PT0gZ3JvdXBzLmxlbmd0aCkgcmV0dXJuICdhbGwnO1xyXG4gICAgcmV0dXJuICdzb21lJztcclxuICB9XHJcblxyXG4gIGdldCBmaWx0ZXJBY2NvcmRpb25TdGF0ZSgpOiAnYWxsJyB8ICdub25lJyB8ICdzb21lJyB7XHJcbiAgICBjb25zdCBncm91cHMgPSB0aGlzLmdldEFsbEdyb3VwQ29sdW1ucyh0aGlzLmNvbHVtbnMpO1xyXG4gICAgY29uc3QgZXhwYW5kZWRDb3VudCA9IGdyb3Vwcy5maWx0ZXIoKGNvbCkgPT4gY29sLmV4cGFuZGVkRmlsdGVyKS5sZW5ndGg7XHJcblxyXG4gICAgaWYgKGV4cGFuZGVkQ291bnQgPT09IDApIHJldHVybiAnbm9uZSc7XHJcbiAgICBpZiAoZXhwYW5kZWRDb3VudCA9PT0gZ3JvdXBzLmxlbmd0aCkgcmV0dXJuICdhbGwnO1xyXG4gICAgcmV0dXJuICdzb21lJztcclxuICB9XHJcblxyXG4gIC8vIFJlY3Vyc2l2ZWx5IGNvbGxlY3QgYWxsIGdyb3VwIGNvbHVtbnNcclxuICBwcml2YXRlIGdldEFsbEdyb3VwQ29sdW1ucyhjb2xzOiBhbnlbXSk6IGFueVtdIHtcclxuICAgIGxldCBncm91cHM6IGFueVtdID0gW107XHJcbiAgICBmb3IgKGNvbnN0IGNvbCBvZiBjb2xzKSB7XHJcbiAgICAgIGlmIChjb2wuY2hpbGRyZW4/Lmxlbmd0aCkge1xyXG4gICAgICAgIGdyb3Vwcy5wdXNoKGNvbCk7XHJcbiAgICAgICAgZ3JvdXBzID0gZ3JvdXBzLmNvbmNhdCh0aGlzLmdldEFsbEdyb3VwQ29sdW1ucyhjb2wuY2hpbGRyZW4pKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGdyb3VwcztcclxuICB9XHJcblxyXG4gIC8vIFRvZ2dsZSBiYXNlZCBvbiBjdXJyZW50IHN0YXRlXHJcbiAgdG9nZ2xlQWxsQWNjb3JkaW9ucygpOiB2b2lkIHtcclxuICAgIGNvbnN0IG5leHRTdGF0ZSA9IHRoaXMuYWNjb3JkaW9uU3RhdGUgPT09ICdhbGwnID8gZmFsc2UgOiB0cnVlO1xyXG4gICAgdGhpcy5zZXRBY2NvcmRpb25TdGF0ZSh0aGlzLmNvbHVtbnMsIG5leHRTdGF0ZSk7XHJcbiAgfVxyXG5cclxuICB0b2dnbGVBbGxGaWx0ZXJBY2NvcmRpb25zKCk6IHZvaWQge1xyXG4gICAgY29uc3QgbmV4dFN0YXRlID0gdGhpcy5maWx0ZXJBY2NvcmRpb25TdGF0ZSA9PT0gJ2FsbCcgPyBmYWxzZSA6IHRydWU7XHJcbiAgICB0aGlzLnNldEZpbHRlckFjY29yZGlvblN0YXRlKHRoaXMuY29sdW1ucywgbmV4dFN0YXRlKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0QWNjb3JkaW9uU3RhdGUoY29sczogYW55W10sIHN0YXRlOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICBmb3IgKGxldCBjb2wgb2YgY29scykge1xyXG4gICAgICBpZiAoY29sLmNoaWxkcmVuPy5sZW5ndGgpIHtcclxuICAgICAgICBjb2wuZXhwYW5kZWQgPSBzdGF0ZTtcclxuICAgICAgICB0aGlzLnNldEFjY29yZGlvblN0YXRlKGNvbC5jaGlsZHJlbiwgc3RhdGUpOyAvLyBSZWN1cnNpdmVseSBoYW5kbGUgbmVzdGVkXHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcbiAgcHJpdmF0ZSBzZXRGaWx0ZXJBY2NvcmRpb25TdGF0ZShjb2xzOiBhbnlbXSwgc3RhdGU6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIGZvciAobGV0IGNvbCBvZiBjb2xzKSB7XHJcbiAgICAgIGlmIChjb2wuY2hpbGRyZW4/Lmxlbmd0aCkge1xyXG4gICAgICAgIGNvbC5leHBhbmRlZEZpbHRlciA9IHN0YXRlO1xyXG4gICAgICAgIHRoaXMuc2V0RmlsdGVyQWNjb3JkaW9uU3RhdGUoY29sLmNoaWxkcmVuLCBzdGF0ZSk7IC8vIFJlY3Vyc2l2ZWx5IGhhbmRsZSBuZXN0ZWRcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2hvd0NvbHVtblBhbmVsID0gZmFsc2U7XHJcblxyXG4gIGNsb3NlTW9kYWxDb2x1bW5QYW5lbCgpIHtcclxuICAgIHRoaXMuc2hvd0NvbHVtblBhbmVsID0gZmFsc2U7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDprZXlkb3duLmVzY2FwZScsIFsnJGV2ZW50J10pXHJcbiAgb25Fc2NhcGUoZXZlbnQ6IEV2ZW50KSB7XHJcbiAgICB0aGlzLmNsb3NlTW9kYWxDb2x1bW5QYW5lbCgpO1xyXG4gIH1cclxuXHJcbiAgLy8gQ2hlY2sgSWYgIEFueSBjb2x1bW4gaGF2ZSByaWdodCBwaW5uZWRcclxuICBnZXQgaGFzUmlnaHRQaW5uZWRDb2x1bW5zKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuY29tbW9uU2V2aWNlLmdldGhhc1JpZ2h0UGlubmVkQ29sdW1ucyh0aGlzLmNvbHVtbnMpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGhhc0xlZnRQaW5uZWRDb2x1bW5zKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuY29tbW9uU2V2aWNlLmdldGhhc0xlZnRQaW5uZWRDb2x1bW5zKHRoaXMuY29sdW1ucyk7XHJcbiAgfVxyXG5cclxuICBnZXQgZGF0YVNldExlbmd0aCgpIHtcclxuICAgIHJldHVybiB0aGlzLmNvbW1vblNldmljZS5nZXRFeHBhbmRlZFJvd0NvdW50KHRoaXMuZGF0YVNldCk7XHJcbiAgfVxyXG5cclxuXHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpyZXNpemUnLCBbJyRldmVudCddKVxyXG4gIG9uUmVzaXplKGV2ZW50OiBVSUV2ZW50KSB7XHJcbiAgICBpZiAoIXRoaXMuY3VycmV0YVRhYmxlUHJlc2V0Rm9yVXBkYXRlKSB0aGlzLmF1dG9TaXplQ29sdW1uc0J5UmF0aW8oKTtcclxuICAgIGNvbnN0IGggPSB0aGlzLm1haW5TY3JvbGw/Lm5hdGl2ZUVsZW1lbnQ/LmNsaWVudEhlaWdodCA/PyAwO1xyXG4gICAgdGhpcy52aWV3cG9ydFJvd3MgPSBNYXRoLm1heCgxLCBNYXRoLmNlaWwoaCAvIHRoaXMucm93SGVpZ2h0KSk7XHJcbiAgICB0aGlzLnVwZGF0ZVZpc2libGVSb3dzKHRoaXMubWFpblNjcm9sbD8ubmF0aXZlRWxlbWVudD8uc2Nyb2xsVG9wKTtcclxuICAgIHRoaXMuaGFzU2Nyb2xsID0gdGhpcy5oYXNIb3Jpem9udGFsU2Nyb2xsYmFyKCk7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHsgfSwgMTAwKTtcclxuICB9XHJcblxyXG4gIGF1dG9TaXplQ29sdW1uc0J5UmF0aW8oKTogdm9pZCB7XHJcbiAgICB0aGlzLmFjdGl2ZUNvbCA9IG51bGw7XHJcblxyXG4gICAgY29uc3QgZ2V0VmlzaWJsZUxlYWZDb2x1bW5zID0gKGNvbHVtbnM6IGFueVtdKTogYW55W10gPT4ge1xyXG4gICAgICBjb25zdCByZXN1bHQ6IGFueVtdID0gW107XHJcblxyXG4gICAgICBmb3IgKGNvbnN0IGNvbHVtbiBvZiBjb2x1bW5zKSB7XHJcbiAgICAgICAgaWYgKGNvbHVtbi5jaGlsZHJlbiAmJiBBcnJheS5pc0FycmF5KGNvbHVtbi5jaGlsZHJlbikpIHtcclxuICAgICAgICAgIHJlc3VsdC5wdXNoKC4uLmdldFZpc2libGVMZWFmQ29sdW1ucyhjb2x1bW4uY2hpbGRyZW4pKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGNvbHVtbi5pc192aXNpYmxlICE9PSBmYWxzZSkge1xyXG4gICAgICAgICAgcmVzdWx0LnB1c2goY29sdW1uKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgdmlzaWJsZUNvbHVtbnMgPSBnZXRWaXNpYmxlTGVhZkNvbHVtbnModGhpcy5jb2x1bW5zKTtcclxuXHJcbiAgICBpZiAodmlzaWJsZUNvbHVtbnMubGVuZ3RoID09PSAwKSByZXR1cm47XHJcbiAgICBsZXQgY29udGFpbmVyV2lkdGggPVxyXG4gICAgICB0aGlzLmRhdGFHcmlkQ29udGFpbmVyPy5uYXRpdmVFbGVtZW50Py5vZmZzZXRXaWR0aCA/PyAwO1xyXG5cclxuICAgIGlmICh0aGlzLnNob3dTZXJpYWxOdW1iZXIpIGNvbnRhaW5lcldpZHRoIC09IDU1O1xyXG4gICAgaWYgKHRoaXMuc2hvd1NpZGVNZW51KSBjb250YWluZXJXaWR0aCAtPSAyOTtcclxuICAgIGlmICh0aGlzLmdyaWRUeXBlID09ICdBc3NldHMnIHx8IHRoaXMuZ3JpZFR5cGUgPT0gJ1Rhc2tzJylcclxuICAgICAgY29udGFpbmVyV2lkdGggLT0gMzA7XHJcbiAgICBjb250YWluZXJXaWR0aCAtPSA1NTtcclxuICAgIGNvbnN0IHRvdGFsT2xkV2lkdGggPSB2aXNpYmxlQ29sdW1ucy5yZWR1Y2UoXHJcbiAgICAgIChzdW0sIGNvbCkgPT4gc3VtICsgKGNvbC53aWR0aCB8fCAwKSxcclxuICAgICAgMFxyXG4gICAgKTtcclxuICAgIGlmICh0b3RhbE9sZFdpZHRoID09PSAwKSByZXR1cm47XHJcbiAgICB2aXNpYmxlQ29sdW1ucy5mb3JFYWNoKChjb2wpID0+IHtcclxuICAgICAgY29uc3QgcmF0aW8gPSBjb2wud2lkdGggLyB0b3RhbE9sZFdpZHRoO1xyXG4gICAgICBjb25zdCBuZXdXaWR0aCA9IE1hdGgubWF4KE1hdGguZmxvb3IoY29udGFpbmVyV2lkdGggKiByYXRpbyksIDEwMCk7XHJcbiAgICAgIGNvbC53aWR0aCA9IG5ld1dpZHRoO1xyXG4gICAgICB0aGlzLnVwZGF0ZUNvbHVtbldpZHRoSW5Tb3VyY2VCeUZpZWxkKGNvbC5maWVsZCwgbmV3V2lkdGgpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5yZWZyZXNoSGVhZGVycygpO1xyXG4gICAgdGhpcy5oYXNTY3JvbGwgPSB0aGlzLmhhc0hvcml6b250YWxTY3JvbGxiYXIoKTtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICBjb25zdCBzZW5kRGF0YSA9IHtcclxuICAgICAgICBjb2x1bW5zOiB0aGlzLmNsZWFuQ29sdW1ucyh0aGlzLmNvbHVtbnMpLFxyXG4gICAgICAgIGZpbHRlcnM6IHRoaXMuY2xlYW5GaWx0ZXJkQ29sdW1ucygpLFxyXG4gICAgICAgIG5vX29mX3JlY29yZHM6IHRoaXMucGFnaW5hdGlvbkNvbmZpZy5wYWdlU2l6ZSxcclxuICAgICAgICB0eXBlOiB0aGlzLnRhYmxlVHlwZSxcclxuICAgICAgfTtcclxuICAgICAgdGhpcy5jcmVhdGVVcGRhdGVDb25maWdMaXN0aW5nLmVtaXQoc2VuZERhdGEpO1xyXG4gICAgfSwgNDAwKTtcclxuICB9XHJcblxyXG5cclxuICBhc3luYyByZWZyZXNoSGVhZGVycygpIHtcclxuICAgIHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKGFzeW5jICgpID0+IHtcclxuICAgICAgYXdhaXQgbmV3IFByb21pc2UociA9PiBzZXRUaW1lb3V0KHIsIDApKTtcclxuICAgICAgYXdhaXQgdGhpcy51cGRhdGVDb2x1bW5XaWR0aHNBbmRHcm91cHMoKTtcclxuICAgICAgYXdhaXQgdGhpcy5yZWZyZXNoUHJldmlld0NvbHVtbnMoKTtcclxuXHJcbiAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCkpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBnZXQgaGFzQW55VmlzaWJsZUNvbHVtbigpIHtcclxuICAgIHJldHVybiB0aGlzLmNvbW1vblNldmljZS5nZXRoYXNWaXNpYmxlQ29sdW1ucyh0aGlzLmNvbHVtbnMpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGhhc0FueUluVmlzaWJsZUNvbHVtbigpIHtcclxuICAgIHJldHVybiB0aGlzLmNvbW1vblNldmljZS5nZXRoYXNJblZpc2libGVDb2x1bW5zKHRoaXMuY29sdW1ucyk7XHJcbiAgfVxyXG5cclxuICBnZXQgY29sdW1uc0NvdW50KCkge1xyXG4gICAgcmV0dXJuIHRoaXMuY29tbW9uU2V2aWNlLmdldFRvdGFsQ29sdW1uc0xlbmd0aCh0aGlzLmNvbHVtbnMpO1xyXG4gIH1cclxuXHJcbiAgdGFibGVIZWFkZXJBbmRCb2R5SGVpZ2h0KCkge1xyXG4gICAgcmV0dXJuIGBjYWxjKDEwMCUgLSAke3RoaXMuZm9vdGVyUm93SGVpZ2h0fSlgO1xyXG4gIH1cclxuXHJcbiAgZHJhZ2dpbmdJbkdyb3VwQXJlYSA9IGZhbHNlO1xyXG5cclxuICBAVmlld0NoaWxkKCdjZW50ZXJTY3JvbGwnKSBjZW50ZXJTY3JvbGwhOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcclxuICB2aXNpYmxlUm93Q291bnQgPSAyNTtcclxuICBzdGFydEluZGV4ID0gMDtcclxuICB2aXNpYmxlUm93czogYW55W10gPSBbXTtcclxuXHJcbiAgcHJpdmF0ZSBmbGF0dGVuR3JvdXBlZFJvd3MoXHJcbiAgICByb3dzOiBhbnlbXSA9IFtdLFxyXG4gICAgbGV2ZWwgPSAwLFxyXG4gICAgcmVzdWx0OiBhbnlbXSA9IFtdXHJcbiAgKTogYW55W10ge1xyXG4gICAgZm9yIChjb25zdCByb3cgb2Ygcm93cykge1xyXG4gICAgICByZXN1bHQucHVzaCh7IC4uLnJvdywgX19kZXB0aDogbGV2ZWwgfSk7XHJcbiAgICAgIGlmIChyb3cuaXNHcm91cCAmJiByb3cuaXNFeHBhbmQgJiYgcm93LmNoaWxkcmVuPy5sZW5ndGgpIHtcclxuICAgICAgICB0aGlzLmZsYXR0ZW5Hcm91cGVkUm93cyhyb3cuY2hpbGRyZW4sIGxldmVsICsgMSwgW10pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLmFzc2lnblZpcnR1YWxJbmRleGVzKHRoaXMudmlzaWJsZVJvd3MpO1xyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcblxyXG4gIGFzc2lnblZpcnR1YWxJbmRleGVzKGRhdGE6IGFueVtdKTogYW55W10ge1xyXG4gICAgbGV0IGN1cnJlbnRJbmRleCA9IDE7XHJcbiAgICBjb25zdCB3YWxrID0gKGl0ZW1zOiBhbnlbXSk6IHZvaWQgPT4ge1xyXG4gICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgaXRlbXMpIHtcclxuICAgICAgICBpdGVtLl9fdmlydHVhbEluZGV4ID0gY3VycmVudEluZGV4Kys7XHJcbiAgICAgICAgaWYgKGl0ZW0/LmlzR3JvdXApIHtcclxuICAgICAgICAgIGNvbnN0IGdyb3VwID0gaXRlbTtcclxuICAgICAgICAgIGlmIChncm91cC5pc0V4cGFuZCAmJiBBcnJheS5pc0FycmF5KGdyb3VwLmNoaWxkcmVuKSkge1xyXG4gICAgICAgICAgICB3YWxrKGdyb3VwLmNoaWxkcmVuKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH07XHJcbiAgICB3YWxrKGRhdGEpO1xyXG4gICAgLy8gY29uc29sZS5sb2coJ1RoaXMgZGF0YXNldDogJywgdGhpcy52aXNpYmxlUm93cylcclxuICAgIHJldHVybiBkYXRhO1xyXG4gIH1cclxuXHJcblxyXG4gIHVwZGF0ZVZpc2libGVSb3dzKHNjcm9sbFRvcDogbnVtYmVyKSB7XHJcblxyXG4gICAgaWYgKHRoaXMuZ3JvdXBlZENvbHVtbnM/Lmxlbmd0aCkge1xyXG4gICAgICB0aGlzLnZpc2libGVSb3dzID0gdGhpcy5kYXRhU2V0O1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBmbGF0RGF0YSA9IHRoaXMuZmxhdHRlbkdyb3VwZWRSb3dzKHRoaXMuZGF0YVNldCk7XHJcblxyXG4gICAgaWYgKHRoaXMuZGF0YVNldD8ubGVuZ3RoIDw9IDE1KSB7XHJcbiAgICAgIHRoaXMudmlzaWJsZVJvd3MgPSBmbGF0RGF0YTtcclxuICAgICAgdGhpcy5maXJzdEluZGV4ID0gMDtcclxuICAgICAgdGhpcy5zdGFydEluZGV4ID0gMDtcclxuICAgICAgdGhpcy5yZW5kZXJTdGFydCA9IDA7XHJcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgdG90YWwgPSBmbGF0RGF0YS5sZW5ndGg7XHJcbiAgICBjb25zdCBtYXhGaXJzdCA9IE1hdGgubWF4KDAsIHRvdGFsIC0gdGhpcy52aWV3cG9ydFJvd3MpO1xyXG4gICAgY29uc3QgZmlyc3QgPSBNYXRoLm1pbihNYXRoLmZsb29yKHNjcm9sbFRvcCAvIHRoaXMucm93SGVpZ2h0KSwgbWF4Rmlyc3QpO1xyXG4gICAgY29uc3Qgc3RhcnQgPSBNYXRoLm1heCgwLCBmaXJzdCk7XHJcbiAgICBjb25zdCBlbmQgPSBNYXRoLm1pbih0b3RhbCwgZmlyc3QgKyB0aGlzLnZpZXdwb3J0Um93cyk7XHJcblxyXG4gICAgdGhpcy5maXJzdEluZGV4ID0gZmlyc3Q7XHJcbiAgICB0aGlzLnN0YXJ0SW5kZXggPSBmaXJzdDtcclxuICAgIHRoaXMucmVuZGVyU3RhcnQgPSBzdGFydDtcclxuICAgIHRoaXMudmlzaWJsZVJvd3MgPSBmbGF0RGF0YS5zbGljZShzdGFydCwgZW5kKTtcclxuICAgIHRoaXMuYXNzaWduVmlydHVhbEluZGV4ZXModGhpcy52aXNpYmxlUm93cyk7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgdHJhY2tCeVJlbmRlcmVkSW5kZXggPSAoaTogbnVtYmVyLCBfcm93OiBhbnkpID0+IHRoaXMucmVuZGVyU3RhcnQgKyBpO1xyXG5cclxuICBwcml2YXRlIGlzU3luY2luZ0Zyb21NYWluID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBpc1N5bmNpbmdGcm9tRmFrZSA9IGZhbHNlO1xyXG4gIHByaXZhdGUgbWFpblNjcm9sbFJhZjogbnVtYmVyIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIHRyYWNrQnlJZChpbmRleDogbnVtYmVyLCBpdGVtOiBhbnkpIHtcclxuICAgIHJldHVybiBpdGVtLmlkIHx8IGl0ZW0uX2lkO1xyXG4gIH1cclxuXHJcbiAgZmxhdHRlbmVkRGF0YTogYW55W10gPSBbXTtcclxuXHJcbiAgdXBkYXRlRmxhdHRlbmVkRGF0YSgpOiB2b2lkIHtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLmZsYXR0ZW5lZERhdGEgPSB0aGlzLmZsYXR0ZW5Hcm91cGVkUm93cyh0aGlzLmRhdGFTZXQpO1xyXG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9LCAxMCk7XHJcbiAgfVxyXG5cclxuICAvLyByZXF1ZXN0QW5pbWF0aW9uRnJhbWUgSURzXHJcbiAgcHJpdmF0ZSBmYWtlU2Nyb2xsUmFmOiBudW1iZXIgfCBudWxsID0gbnVsbDtcclxuXHJcblxyXG4gIC8vIG9uTWFpblNjcm9sbChldmVudDogRXZlbnQpIHtcclxuICAvLyAgIHRoaXMuZXhwYW5kZWRDZWxscy5jbGVhcigpO1xyXG4gIC8vICAgY29uc3Qgc2Nyb2xsVG9wID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudCkuc2Nyb2xsVG9wO1xyXG4gIC8vICAgICBpZiAodGhpcy5ncm91cGVkQ29sdW1ucz8ubGVuZ3RoID4gMCkge1xyXG4gIC8vICAgICAgIHRoaXMuc3RhcnRJbmRleCA9IDA7XHJcbiAgLy8gICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIC8vICAgICAgIHJldHVybjtcclxuICAvLyAgICAgfVxyXG4gIC8vICAgICBjb25zdCBvdmVyc2NhbiA9IHRoaXMub3ZlcnNjYW4gKiAyO1xyXG4gIC8vICAgICB0aGlzLnN0YXJ0SW5kZXggPSBNYXRoLmZsb29yKHNjcm9sbFRvcCAvIHRoaXMucm93SGVpZ2h0KTtcclxuICAvLyAgICAgY29uc3Qgc3RhcnQgPSBNYXRoLm1heCgwLCB0aGlzLnN0YXJ0SW5kZXggLSBvdmVyc2Nhbik7XHJcbiAgLy8gICAgIGNvbnN0IGVuZCA9IE1hdGgubWluKHRoaXMuZmxhdHRlbmVkRGF0YS5sZW5ndGgsIHRoaXMuc3RhcnRJbmRleCArIHRoaXMudmlld3BvcnRSb3dzICsgb3ZlcnNjYW4pO1xyXG4gIC8vICAgICB0aGlzLnZpc2libGVSb3dzID0gdGhpcy5mbGF0dGVuZWREYXRhLnNsaWNlKHN0YXJ0LCBlbmQpO1xyXG4gIC8vICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgLy8gfVxyXG4gIHRyYW5zbGF0ZVkgPSAwO1xyXG5cclxuICBsYXN0U2Nyb2xsVG9wID0gMDtcclxuICBwZW5kaW5nQW5pbWF0aW9uRnJhbWU6IG51bWJlciB8IG51bGwgPSBudWxsO1xyXG5cclxuICBvbk1haW5TY3JvbGwoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XHJcbiAgICBjb25zdCBzY3JvbGxUb3AgPSAoZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50KS5zY3JvbGxUb3A7XHJcbiAgICBpZiAoTWF0aC5hYnMoc2Nyb2xsVG9wIC0gdGhpcy5sYXN0U2Nyb2xsVG9wKSA8ICgxMCkpIHJldHVybjtcclxuICAgIGlmICh0aGlzLnBlbmRpbmdBbmltYXRpb25GcmFtZSkgY2FuY2VsQW5pbWF0aW9uRnJhbWUodGhpcy5wZW5kaW5nQW5pbWF0aW9uRnJhbWUpO1xyXG4gICAgaWYgKHRoaXMuZ3JvdXBlZENvbHVtbnM/Lmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5zdGFydEluZGV4ID0gMDtcclxuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLnBlbmRpbmdBbmltYXRpb25GcmFtZSA9IHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XHJcbiAgICAgIGNvbnN0IHNjcm9sbGluZ0Rvd24gPSBzY3JvbGxUb3AgPiB0aGlzLmxhc3RTY3JvbGxUb3A7XHJcbiAgICAgIHRoaXMubGFzdFNjcm9sbFRvcCA9IHNjcm9sbFRvcDtcclxuXHJcbiAgICAgIGNvbnN0IG92ZXJzY2FuID0gNTtcclxuICAgICAgY29uc3QgbmV3U3RhcnRJbmRleCA9IE1hdGguZmxvb3Ioc2Nyb2xsVG9wIC8gdGhpcy5yb3dIZWlnaHQpO1xyXG4gICAgICBjb25zdCBkeW5hbWljT3ZlcnNjYW4gPSBzY3JvbGxpbmdEb3duID8gb3ZlcnNjYW4gOiBvdmVyc2NhbjtcclxuXHJcbiAgICAgIGNvbnN0IHN0YXJ0ID0gTWF0aC5tYXgoMCwgbmV3U3RhcnRJbmRleCAtIGR5bmFtaWNPdmVyc2Nhbik7XHJcbiAgICAgIGNvbnN0IGVuZCA9IE1hdGgubWluKFxyXG4gICAgICAgIHRoaXMuZmxhdHRlbmVkRGF0YS5sZW5ndGgsXHJcbiAgICAgICAgbmV3U3RhcnRJbmRleCArIHRoaXMudmlld3BvcnRSb3dzICsgZHluYW1pY092ZXJzY2FuXHJcbiAgICAgICk7XHJcbiAgICAgIHRoaXMudHJhbnNsYXRlWSA9IHN0YXJ0ICogdGhpcy5yb3dIZWlnaHQ7XHJcbiAgICAgIGlmICh0aGlzLnN0YXJ0SW5kZXggIT09IHN0YXJ0IHx8IHRoaXMudmlzaWJsZVJvd3MubGVuZ3RoICE9PSBlbmQgLSBzdGFydCkge1xyXG4gICAgICAgIHRoaXMuc3RhcnRJbmRleCA9IHN0YXJ0O1xyXG4gICAgICAgIHRoaXMudmlzaWJsZVJvd3MgPSB0aGlzLmRhdGFTZXQuc2xpY2Uoc3RhcnQsIGVuZCk7XHJcbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMucGVuZGluZ0FuaW1hdGlvbkZyYW1lID0gbnVsbDtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcblxyXG4gIC8vIG9uTWFpblNjcm9sbChldmVudDogRXZlbnQpOiB2b2lkIHtcclxuICAvLyAgIHRoaXMuZXhwYW5kZWRDZWxscy5jbGVhcigpO1xyXG4gIC8vICAgaWYgKHRoaXMuaXNTeW5jaW5nRnJvbUZha2UpIHtcclxuICAvLyAgICAgdGhpcy5pc1N5bmNpbmdGcm9tRmFrZSA9IGZhbHNlO1xyXG4gIC8vICAgICByZXR1cm47XHJcbiAgLy8gICB9XHJcbiAgLy8gICBjb25zdCBzY3JvbGxUb3AgPSAoZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50KS5zY3JvbGxUb3A7XHJcbiAgLy8gICBpZiAoTWF0aC5hYnMoc2Nyb2xsVG9wIC0gdGhpcy5sYXN0U2Nyb2xsVG9wKSA8IHRoaXMucm93SGVpZ2h0IC8gMikgcmV0dXJuO1xyXG4gIC8vICAgdGhpcy5sYXN0U2Nyb2xsVG9wID0gc2Nyb2xsVG9wO1xyXG5cclxuICAvLyAgIGlmICh0aGlzLmZha2VTY3JvbGxSYWYpIGNhbmNlbEFuaW1hdGlvbkZyYW1lKHRoaXMuZmFrZVNjcm9sbFJhZik7XHJcblxyXG4gIC8vICAgdGhpcy5mYWtlU2Nyb2xsUmFmID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcclxuICAvLyAgICAgaWYgKHRoaXMuZ3JvdXBlZENvbHVtbnM/Lmxlbmd0aCA+IDApIHtcclxuICAvLyAgICAgICB0aGlzLnN0YXJ0SW5kZXggPSAwO1xyXG4gIC8vICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAvLyAgICAgICByZXR1cm47XHJcbiAgLy8gICAgIH1cclxuICAvLyAgICAgY29uc3QgZmxhdERhdGEgPSB0aGlzLmZsYXR0ZW5Hcm91cGVkUm93cyh0aGlzLmRhdGFTZXQpO1xyXG4gIC8vICAgICBjb25zdCB0b3RhbFJvd3MgPSBmbGF0RGF0YS5sZW5ndGg7XHJcbiAgLy8gICAgIGNvbnN0IG5ld1N0YXJ0SW5kZXggPSBNYXRoLmZsb29yKHNjcm9sbFRvcCAvIHRoaXMucm93SGVpZ2h0KTtcclxuICAvLyAgICAgY29uc3Qgc3RhcnQgPSBNYXRoLm1heCgwLCBuZXdTdGFydEluZGV4IC0gKHRoaXMub3ZlcnNjYW4gKiAyKSk7XHJcbiAgLy8gICAgIGNvbnN0IGVuZCA9IE1hdGgubWluKHRvdGFsUm93cywgbmV3U3RhcnRJbmRleCArIHRoaXMudmlld3BvcnRSb3dzICsgKHRoaXMub3ZlcnNjYW4gKiAyKSk7XHJcblxyXG4gIC8vICAgICB0aGlzLnRyYW5zbGF0ZVkgPSBzdGFydCAqIHRoaXMucm93SGVpZ2h0O1xyXG4gIC8vICAgICB0aGlzLnN0YXJ0SW5kZXggPSBzdGFydDtcclxuICAvLyAgICAgdGhpcy52aXNpYmxlUm93cyA9IGZsYXREYXRhLnNsaWNlKHN0YXJ0LCBlbmQpO1xyXG4gIC8vICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgLy8gICB9KTtcclxuICAvLyB9XHJcblxyXG5cclxuICBnZXQgaXNTY3JvbGxiYXJWaXNpYmxlKCk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKCF0aGlzLm1haW5TY3JvbGwpIHJldHVybiBmYWxzZTtcclxuICAgIGNvbnN0IGVsID0gdGhpcy5tYWluU2Nyb2xsLm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICByZXR1cm4gZWwuc2Nyb2xsSGVpZ2h0ID4gZWwuY2xpZW50SGVpZ2h0O1xyXG4gIH1cclxuXHJcbiAgdG9nZ2xlRXhwYW5kKHJvdzogYW55KSB7XHJcbiAgICBpZiAocm93LmRldGFpbHMpIHtcclxuICAgICAgcm93LmlzRGV0YWlsc0V4cGFuZCA9ICFyb3cuaXNEZXRhaWxzRXhwYW5kO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcm93LmlzRXhwYW5kID0gIXJvdy5pc0V4cGFuZDtcclxuICAgIH1cclxuICAgIHRoaXMucm93U2VsZWN0ZWRJbmRleGVzLmNsZWFyKCk7XHJcbiAgICB0aGlzLnVwZGF0ZUZsYXR0ZW5lZERhdGEoKTtcclxuICAgIC8vIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgIC8vIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgLy8gICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAvLyB9LCAxMDApO1xyXG4gIH1cclxuXHJcbiAgLy8gb25NYWluRmFrZVNjcm9sbChldmVudDogRXZlbnQpIHtcclxuICAvLyAgIGlmICh0aGlzLmlzU3luY2luZ0Zyb21NYWluKSB7XHJcbiAgLy8gICAgIHRoaXMuaXNTeW5jaW5nRnJvbU1haW4gPSBmYWxzZTtcclxuICAvLyAgICAgcmV0dXJuO1xyXG4gIC8vICAgfVxyXG4gIC8vICAgaWYgKHRoaXMuZ3JvdXBlZENvbHVtbnM/Lmxlbmd0aCA+IDApIHtcclxuICAvLyAgICAgdGhpcy5zdGFydEluZGV4ID0gMDtcclxuICAvLyAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIC8vICAgICByZXR1cm47XHJcbiAgLy8gICB9XHJcbiAgLy8gICBjb25zdCBzY3JvbGxUb3AgPSAoZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50KS5zY3JvbGxUb3A7XHJcbiAgLy8gICBpZiAodGhpcy5tYWluU2Nyb2xsUmFmKSBjYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLm1haW5TY3JvbGxSYWYpO1xyXG4gIC8vICAgdGhpcy5tYWluU2Nyb2xsUmFmID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcclxuICAvLyAgICAgdGhpcy5pc1N5bmNpbmdGcm9tRmFrZSA9IHRydWU7XHJcbiAgLy8gICAgIHRoaXMubWFpblNjcm9sbC5uYXRpdmVFbGVtZW50LnNjcm9sbFRvcCA9IHNjcm9sbFRvcDtcclxuICAvLyAgICAgY29uc3Qgb3ZlcnNjYW4gPSB0aGlzLm92ZXJzY2FuID8/IDA7XHJcbiAgLy8gICAgIHRoaXMuc3RhcnRJbmRleCA9IE1hdGguZmxvb3Ioc2Nyb2xsVG9wIC8gdGhpcy5yb3dIZWlnaHQpO1xyXG4gIC8vICAgICBjb25zdCBzdGFydCA9IE1hdGgubWF4KDAsIHRoaXMuc3RhcnRJbmRleCAtIG92ZXJzY2FuKTtcclxuICAvLyAgICAgY29uc3QgZW5kID0gTWF0aC5taW4oXHJcbiAgLy8gICAgICAgdGhpcy5mbGF0dGVuZWREYXRhLmxlbmd0aCxcclxuICAvLyAgICAgICB0aGlzLnN0YXJ0SW5kZXggKyB0aGlzLnZpZXdwb3J0Um93cyArIG92ZXJzY2FuXHJcbiAgLy8gICAgICk7XHJcbiAgLy8gICAgIHRoaXMudmlzaWJsZVJvd3MgPSB0aGlzLmZsYXR0ZW5lZERhdGEuc2xpY2Uoc3RhcnQsIGVuZCk7XHJcbiAgLy8gICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAvLyAgIH0pO1xyXG4gIC8vIH1cclxuXHJcblxyXG5cclxuXHJcblxyXG4gIHZpZXdwb3J0Um93cyA9IDA7IC8vIGhvdyBtYW55IHJvd3MgZml0IGluIHZpZXdwb3J0IChjb21wdXRlZClcclxuICBmaXJzdEluZGV4ID0gMDsgLy8gaW5kZXggb2YgdGhlIGZpcnN0IHZpc2libGUgcm93IChjbGFtcGVkKVxyXG4gIHJlbmRlclN0YXJ0ID0gMDsgLy8gd2hlcmUgdGhlIHNsaWNlIGFjdHVhbGx5IHN0YXJ0cyAoZmlyc3RJbmRleCAtIG92ZXJzY2FuLCBjbGFtcGVkKVxyXG5cclxuICBwcml2YXRlIHNjcm9sbFJhZjogbnVtYmVyIHwgbnVsbCA9IG51bGw7XHJcbiAgcHJpdmF0ZSBwZW5kaW5nU2Nyb2xsVG9wID0gMDtcclxuXHJcbiAgQFZpZXdDaGlsZCgnbWFpblNjcm9sbCcpIG1haW5TY3JvbGwhOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcclxuICBAVmlld0NoaWxkKCdmYWtlU2Nyb2xsJykgZmFrZVNjcm9sbCE6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xyXG4gIEBWaWV3Q2hpbGQoJ2hvcml6aW50YWxGYWtlU2Nyb2xsJylcclxuICBob3JpemludGFsRmFrZVNjcm9sbCE6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xyXG4gIEBWaWV3Q2hpbGQoJ2NlbnRlclNjcm9sbGFibGVCb2R5JylcclxuICBjZW50ZXJTY3JvbGxhYmxlQm9keSE6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xyXG4gIHByaXZhdGUgb3ZlcnNjYW4gPSAxMDsgLy8gYnVmZmVyIHJvd3MgYWJvdmUgYW5kIGJlbG93XHJcblxyXG4gIGNvbXB1dGVWaWV3cG9ydFJvd3MoKSB7XHJcbiAgICBpZiAodGhpcy5mYWtlU2Nyb2xsPy5uYXRpdmVFbGVtZW50KSB7XHJcbiAgICAgIHRoaXMuZmFrZVNjcm9sbC5uYXRpdmVFbGVtZW50LnNjcm9sbFRvcCA9IDA7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMubWFpblNjcm9sbD8ubmF0aXZlRWxlbWVudCkge1xyXG4gICAgICB0aGlzLm1haW5TY3JvbGwubmF0aXZlRWxlbWVudC5zY3JvbGxUb3AgPSAwO1xyXG4gICAgICBjb25zdCBoID0gdGhpcy5tYWluU2Nyb2xsLm5hdGl2ZUVsZW1lbnQuY2xpZW50SGVpZ2h0ID8/IDA7XHJcblxyXG4gICAgICAvLyByb3dzIHZpc2libGUgaW4gdmlld3BvcnRcclxuICAgICAgY29uc3Qgcm93c0luVmlld3BvcnQgPSBNYXRoLm1heCgxLCBNYXRoLmNlaWwoaCAvIHRoaXMucm93SGVpZ2h0KSk7XHJcblxyXG4gICAgICAvLyBhZGQgYnVmZmVyIHJvd3MgKG92ZXJzY2FuKVxyXG4gICAgICB0aGlzLnZpZXdwb3J0Um93cyA9IHJvd3NJblZpZXdwb3J0ICsgdGhpcy5vdmVyc2NhbjtcclxuXHJcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICBvbkhvcml6b250YWxGYWtlU2Nyb2xsKGV2ZW50OiBFdmVudCkge1xyXG4gICAgY29uc3Qgc2Nyb2xsTGVmdCA9IChldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpLnNjcm9sbExlZnQ7XHJcbiAgICB0aGlzLmNlbnRlclBpbm5lZEhlYWRlci5uYXRpdmVFbGVtZW50LnNjcm9sbExlZnQgPSBzY3JvbGxMZWZ0O1xyXG4gICAgaWYgKHRoaXMuY2VudGVyU2Nyb2xsYWJsZUJvZHk/Lm5hdGl2ZUVsZW1lbnQpIHtcclxuICAgICAgdGhpcy5jZW50ZXJTY3JvbGxhYmxlQm9keS5uYXRpdmVFbGVtZW50LnNjcm9sbExlZnQgPSBzY3JvbGxMZWZ0O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25DZW50ZXJCb2R5U2Nyb2xsKGV2ZW50OiBFdmVudCkge1xyXG4gICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xyXG4gICAgaWYgKHRoaXMuY2VudGVyU2Nyb2xsYWJsZUJvZHk/Lm5hdGl2ZUVsZW1lbnQpIHtcclxuICAgICAgdGhpcy5jZW50ZXJTY3JvbGxhYmxlQm9keS5uYXRpdmVFbGVtZW50LnNjcm9sbExlZnQgPSB0YXJnZXQuc2Nyb2xsTGVmdDtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmNlbnRlclBpbm5lZEhlYWRlcikge1xyXG4gICAgICB0aGlzLmNlbnRlclBpbm5lZEhlYWRlci5uYXRpdmVFbGVtZW50LnNjcm9sbExlZnQgPSB0YXJnZXQuc2Nyb2xsTGVmdDtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmhvcml6aW50YWxGYWtlU2Nyb2xsPy5uYXRpdmVFbGVtZW50KSB7XHJcbiAgICAgIHRoaXMuaG9yaXppbnRhbEZha2VTY3JvbGwubmF0aXZlRWxlbWVudC5zY3JvbGxMZWZ0ID0gdGFyZ2V0LnNjcm9sbExlZnQ7XHJcbiAgICB9XHJcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgfVxyXG5cclxuICBvbkNlbnRlckhlYWRlclNjcm9sbChldmVudDogRXZlbnQpIHtcclxuICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudDtcclxuICAgIGlmICh0aGlzLmhvcml6aW50YWxGYWtlU2Nyb2xsPy5uYXRpdmVFbGVtZW50KSB7XHJcbiAgICAgIHRoaXMuaG9yaXppbnRhbEZha2VTY3JvbGwubmF0aXZlRWxlbWVudC5zY3JvbGxMZWZ0ID0gdGFyZ2V0LnNjcm9sbExlZnQ7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5jZW50ZXJTY3JvbGxhYmxlQm9keT8ubmF0aXZlRWxlbWVudCkge1xyXG4gICAgICB0aGlzLmNlbnRlclNjcm9sbGFibGVCb2R5Lm5hdGl2ZUVsZW1lbnQuc2Nyb2xsTGVmdCA9IHRhcmdldC5zY3JvbGxMZWZ0O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gRHJhZ2dpbmcgTG9naWMgaXMgaW1wbGVtZW50ZWQgaGVyZVxyXG4gIC8vIHByaXZhdGUgaW5pdGlhbEluZGV4OiBudW1iZXIgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgZHJhZ2dpbmdDb2x1bW46IGFueTtcclxuICBkcmFnU3RhcnRJbmRleDogYW55ID0gMDtcclxuICAvLyBvbkRyYWdTdGFydChkYXRhOiBhbnksIGluZGV4OiBudW1iZXIpIHtcclxuICAvLyAgIHRoaXMuZHJhZ2dpbmdDb2x1bW4gPSBkYXRhLmNvbHVtbjtcclxuICAvLyAgIHRoaXMuZHJhZ1N0YXJ0SW5kZXggPSBpbmRleDtcclxuICAvLyB9XHJcbiAgLy8gb25EcmFnTW92ZShkYXRhOiBhbnkpIHtcclxuICAvLyAgIGNvbnN0IHsgY2xpZW50WCwgY2xpZW50WSB9ID0gZGF0YS5ldmVudDtcclxuICAvLyAgIGNvbnN0IGhlYWRlcnMgPSBBcnJheS5mcm9tKFxyXG4gIC8vICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcub25lLXJvdy1oZWFkZXItY2VsbHMnKVxyXG4gIC8vICAgKSBhcyBIVE1MRWxlbWVudFtdO1xyXG5cclxuICAvLyAgIGhlYWRlcnMuZm9yRWFjaCgoaGVhZGVyRWwsIGlkeCkgPT4ge1xyXG4gIC8vICAgICBjb25zdCByZWN0ID0gaGVhZGVyRWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcbiAgLy8gICAgIGlmIChcclxuICAvLyAgICAgICBpZHggIT09IHRoaXMuZHJhZ1N0YXJ0SW5kZXggJiZcclxuICAvLyAgICAgICBjbGllbnRYID4gcmVjdC5sZWZ0ICYmXHJcbiAgLy8gICAgICAgY2xpZW50WCA8IHJlY3QucmlnaHQgJiZcclxuICAvLyAgICAgICBjbGllbnRZID4gcmVjdC50b3AgJiZcclxuICAvLyAgICAgICBjbGllbnRZIDwgcmVjdC5ib3R0b21cclxuICAvLyAgICAgKSB7XHJcbiAgLy8gICAgICAgY29uc3Qgb3RoZXJJbmRleCA9IGlkeDtcclxuICAvLyAgICAgICBjb25zb2xlLmxvZyhgJHt0aGlzLmRyYWdTdGFydEluZGV4fSAtLT4gJHtvdGhlckluZGV4fWApO1xyXG4gIC8vICAgICAgIHRoaXMuc3dhcENvbHVtbih0aGlzLmRyYWdTdGFydEluZGV4LCBvdGhlckluZGV4KTtcclxuICAvLyAgICAgICBjb25zb2xlLmxvZygnVXBkYXRlZCBDb2x1bW5zOiAnLCB0aGlzLmNvbHVtbnMpO1xyXG4gIC8vICAgICAgIHRoaXMuZHJhZ1N0YXJ0SW5kZXggPSBvdGhlckluZGV4OyAvLyB1cGRhdGUgaW5kZXhcclxuICAvLyAgICAgfVxyXG4gIC8vICAgfSk7XHJcbiAgLy8gfVxyXG5cclxuICAvLyBzd2FwQ29sdW1uKHByZXZpdXNJbmRleDogbnVtYmVyLCBjdXJyZW50SW5kZXg6IG51bWJlcikge1xyXG4gIC8vICAgY29uc3QgY29sdW1ucyA9IHN0cnVjdHVyZWRDbG9uZSh0aGlzLmNvbHVtbnMpO1xyXG4gIC8vICAgY29uc3QgZmxhdHRlbkNvbHVtbnMgPSB0aGlzLmZsYXR0ZW5Db2x1bW5zKGNvbHVtbnMpO1xyXG5cclxuICAvLyAgIGNvbnN0IHZpc2libGVGbGF0dGVuQ29sdW1ucyA9IGZsYXR0ZW5Db2x1bW5zLmZpbHRlcihcclxuICAvLyAgICAgKGNvbCkgPT4gY29sLmlzX3Zpc2libGVcclxuICAvLyAgICk7XHJcbiAgLy8gICBjb25zdCBwcmV2aXVzQ29sdW1uID0gdmlzaWJsZUZsYXR0ZW5Db2x1bW5zW3ByZXZpdXNJbmRleF07XHJcbiAgLy8gICBjb25zdCBjdXJyZW50Q29sdW1uID0gdmlzaWJsZUZsYXR0ZW5Db2x1bW5zW2N1cnJlbnRJbmRleF07XHJcblxyXG4gIC8vICAgY29uc29sZS5sb2coJ1ByZXZpdXMgQ29sdW1uOiAnLCBwcmV2aXVzQ29sdW1uKTtcclxuICAvLyAgIGNvbnNvbGUubG9nKCdjdXJyZW50IGNsdW1uOiAnLCBjdXJyZW50Q29sdW1uKTtcclxuICAvLyB9XHJcblxyXG4gIC8vIG9uRHJhZ0VuZChkYXRhOiBhbnkpIHtcclxuICAvLyAgIHRoaXMuZHJhZ2dpbmdDb2x1bW4gPSBudWxsO1xyXG4gIC8vICAgdGhpcy5kcmFnU3RhcnRJbmRleCA9IG51bGw7XHJcbiAgLy8gfVxyXG5cclxuICAvLyBDREsgRFJBRyBEUk9QIExPR0lDIEdPRVMgSEVSRVxyXG5cclxuXHJcbiAgY2FuRW50ZXJUb1Jvd3NHcm91cGluZyA9IChkcmFnOiBDZGtEcmFnPGFueT4sIGRyb3A6IENka0Ryb3BMaXN0PGFueT4pID0+IHtcclxuICAgIC8vIEV4YW1wbGU6IEJsb2NrIGlmIGFscmVhZHkgcGlubmVkIGxlZnRcclxuICAgIGNvbnN0IGRhdGEgPSBkcmFnLmRhdGE7XHJcbiAgICBpZiAoZGF0YT8uY2hpbGRyZW4gJiYgZGF0YT8uY2hpbGRyZW4ubGVuZ3RoKSB7XHJcbiAgICAgIHJldHVybiBkYXRhLmNoaWxkcmVuLnNvbWUoXHJcbiAgICAgICAgKGNvbDogYW55KSA9PiBjb2wuaXNfdmlzaWJsZSAmJiBjb2wuaXNfZ3JvdXBhYmxlXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZGF0YS5pc192aXNpYmxlICYmIGRhdGEuaXNfZ3JvdXBhYmxlO1xyXG4gIH07XHJcblxyXG4gIC8vIG9uRHJhZ01vdmVkKGV2ZW50OiBDZGtEcmFnTW92ZTxhbnk+KSB7XHJcbiAgLy8gICBjb25zdCBwb2ludGVyWCA9IGV2ZW50LnBvaW50ZXJQb3NpdGlvbi54O1xyXG4gIC8vICAgY29uc3QgcG9pbnRlclkgPSBldmVudC5wb2ludGVyUG9zaXRpb24ueTtcclxuXHJcbiAgLy8gICBjb25zdCB0YXJnZXRFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXHJcbiAgLy8gICAgICdyb3dzLWdyb3VwaW5nLXRvcC1jb250YWluZXInXHJcbiAgLy8gICApO1xyXG5cclxuICAvLyAgIGlmICh0YXJnZXRFbGVtZW50KSB7XHJcbiAgLy8gICAgIGNvbnN0IHJlY3QgPSB0YXJnZXRFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG5cclxuICAvLyAgICAgY29uc3QgaXNPdmVyVGFyZ2V0ID1cclxuICAvLyAgICAgICBwb2ludGVyWCA+PSByZWN0LmxlZnQgJiZcclxuICAvLyAgICAgICBwb2ludGVyWCA8PSByZWN0LnJpZ2h0ICYmXHJcbiAgLy8gICAgICAgcG9pbnRlclkgPj0gcmVjdC50b3AgJiZcclxuICAvLyAgICAgICBwb2ludGVyWSA8PSByZWN0LmJvdHRvbTtcclxuXHJcbiAgLy8gICAgIGlmIChpc092ZXJUYXJnZXQpIHtcclxuICAvLyAgICAgICB0aGlzLmRyYWdnaW5nSW5Hcm91cEFyZWEgPSB0cnVlO1xyXG4gIC8vICAgICB9IGVsc2Uge1xyXG4gIC8vICAgICAgIHRoaXMuZHJhZ2dpbmdJbkdyb3VwQXJlYSA9IGZhbHNlO1xyXG4gIC8vICAgICB9XHJcbiAgLy8gICB9XHJcbiAgLy8gfVxyXG5cclxuICBlbnRlclRvVG9wUm93R3JvdXBpbmcoZHJvcExpc3Q6IENka0RyYWdFbnRlcjxhbnk+KSB7XHJcbiAgICBjb25zdCBkcmFnZ2luZ0RhdGEgPSBkcm9wTGlzdC5pdGVtLmRhdGE7XHJcbiAgICB0aGlzLmRyYWdnaW5nSW5Hcm91cEFyZWEgPSB0cnVlO1xyXG4gICAgLy8gY29uc29sZS5sb2coXCJEcmFnZ2luZyBpbiBncm91cCBhcmVhXCIpXHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcblxyXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoZHJhZ2dpbmdEYXRhPy5jaGlsZHJlbikpIHtcclxuICAgICAgY29uc3QgdGFyZ2V0R3JvdXAgPSB0aGlzLmNvbHVtbnMuZmluZChcclxuICAgICAgICAoY29sKSA9PiBjb2wuaGVhZGVyID09PSBkcmFnZ2luZ0RhdGEuaGVhZGVyXHJcbiAgICAgICk7XHJcbiAgICAgIGlmICh0YXJnZXRHcm91cCkge1xyXG4gICAgICAgIGRyYWdnaW5nRGF0YS5jaGlsZHJlbi5mb3JFYWNoKChkcmFnZ2VkQ2hpbGQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgY29uc3QgbWF0Y2hpbmdDaGlsZCA9IHRhcmdldEdyb3VwLmNoaWxkcmVuLmZpbmQoXHJcbiAgICAgICAgICAgIChjaGlsZDogYW55KSA9PiBjaGlsZC5maWVsZCA9PT0gZHJhZ2dlZENoaWxkLmZpZWxkXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgaWYgKG1hdGNoaW5nQ2hpbGQpIHtcclxuICAgICAgICAgICAgbWF0Y2hpbmdDaGlsZC5pc1Jvd0dyb3VwZWQgPSAhIW1hdGNoaW5nQ2hpbGQuaXNfZ3JvdXBhYmxlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgLy8gVHJ5IGZpbmRpbmcgaXQgaW4gdG9wLWxldmVsIGNvbHVtbnMgZmlyc3RcclxuICAgICAgbGV0IHRhcmdldENvbHVtbiA9IHRoaXMuY29sdW1ucy5maW5kKFxyXG4gICAgICAgIChjb2w6IGFueSkgPT4gY29sLmZpZWxkID09PSBkcmFnZ2luZ0RhdGEuZmllbGRcclxuICAgICAgKTtcclxuXHJcbiAgICAgIGlmICh0YXJnZXRDb2x1bW4pIHtcclxuICAgICAgICB0YXJnZXRDb2x1bW4uaXNSb3dHcm91cGVkID0gISF0YXJnZXRDb2x1bW4uaXNfZ3JvdXBhYmxlO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGZvciAobGV0IGdyb3VwIG9mIHRoaXMuY29sdW1ucykge1xyXG4gICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZ3JvdXAuY2hpbGRyZW4pKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG1hdGNoaW5nQ2hpbGQgPSBncm91cC5jaGlsZHJlbi5maW5kKFxyXG4gICAgICAgICAgICAgIChjaGlsZDogYW55KSA9PiBjaGlsZC5maWVsZCA9PT0gZHJhZ2dpbmdEYXRhLmZpZWxkXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIGlmIChtYXRjaGluZ0NoaWxkKSB7XHJcbiAgICAgICAgICAgICAgbWF0Y2hpbmdDaGlsZC5pc1Jvd0dyb3VwZWQgPSAhIW1hdGNoaW5nQ2hpbGQuaXNfZ3JvdXBhYmxlO1xyXG4gICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8g4pyFIFJlZnJlc2ggVUlcclxuICAgIHRoaXMucmVmcmVzaFByZXZpZXdDb2x1bW5zKCk7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBvbkRyb3BMaXN0RW50ZXIoXHJcbiAgICBkcm9wTGlzdDogQ2RrRHJhZ0VudGVyPGFueT4sXHJcbiAgICBzZWN0aW9uOiAnbGVmdCcgfCAnY2VudGVyJyB8ICdyaWdodCdcclxuICApIHtcclxuICAgIGNvbnN0IGRyYWdnaW5nRGF0YSA9IGRyb3BMaXN0Lml0ZW0uZGF0YTtcclxuXHJcbiAgICBjb25zdCB0YXJnZXRDb2x1bW46IGFueSA9IHRoaXMuY29sdW1ucy5maW5kKFxyXG4gICAgICAoY29sKSA9PiBjb2wuaGVhZGVyID09IGRyYWdnaW5nRGF0YS5oZWFkZXJcclxuICAgICk7XHJcblxyXG4gICAgaWYgKCF0YXJnZXRDb2x1bW4pIHJldHVybjtcclxuXHJcbiAgICBpZiAoXHJcbiAgICAgIEFycmF5LmlzQXJyYXkoZHJhZ2dpbmdEYXRhPy5jaGlsZHJlbikgJiZcclxuICAgICAgQXJyYXkuaXNBcnJheSh0YXJnZXRDb2x1bW4/LmNoaWxkcmVuKVxyXG4gICAgKSB7XHJcbiAgICAgIGRyYWdnaW5nRGF0YS5jaGlsZHJlbi5mb3JFYWNoKChkcmFnZ2VkQ2hpbGQ6IGFueSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IG1hdGNoaW5nQ2hpbGQgPSB0YXJnZXRDb2x1bW4uY2hpbGRyZW4uZmluZChcclxuICAgICAgICAgIChjaGlsZDogYW55KSA9PiBjaGlsZC5maWVsZCA9PT0gZHJhZ2dlZENoaWxkLmZpZWxkXHJcbiAgICAgICAgKTtcclxuICAgICAgICBpZiAobWF0Y2hpbmdDaGlsZCkge1xyXG4gICAgICAgICAgbWF0Y2hpbmdDaGlsZC5waW5uZWQgPSBzZWN0aW9uID09PSAnY2VudGVyJyA/IG51bGwgOiBzZWN0aW9uO1xyXG4gICAgICAgICAgbWF0Y2hpbmdDaGlsZFsnaXNSb3dHcm91cGVkJ10gPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGFyZ2V0Q29sdW1uLnBpbm5lZCA9IHNlY3Rpb24gPT09ICdjZW50ZXInID8gbnVsbCA6IHNlY3Rpb247XHJcbiAgICAgIHRhcmdldENvbHVtblsnaXNSb3dHcm91cGVkJ10gPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnJlZnJlc2hQcmV2aWV3Q29sdW1ucygpO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgLy8gZW50ZXJUb1RvcEdyb3VwaW5nUm93KGRyb3BMaXN0OiBDZGtEcmFnRW50ZXI8YW55Pikge1xyXG4gIC8vICAgdGhpcy5zaG91bGREaXNhYmxlRHJvcGxpc3RTb3J0aW5nID0gdGhpcy5pc0Rpc2FibGVDb2x1bW5Hcm91cGluZztcclxuICAvLyAgIHRoaXMuZHJhZ2dpbmdJbkdyb3VwQXJlYSA9IHRydWU7XHJcbiAgLy8gICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgLy8gY29uc3QgaW5kZXggPSB0aGlzLmdyb3VwZWRDb2x1bW5zLmZpbmRJbmRleChcclxuICAvLyAgIChjb2wpID0+IGNvbC5maWVsZCA9PT0gY29sdW1uLmZpZWxkXHJcbiAgLy8gKTtcclxuICAvLyBpZiAoaW5kZXggIT09IC0xKSB7XHJcbiAgLy8gICB0aGlzLmdyb3VwZWRDb2x1bW5zLnNwbGljZShpbmRleCwgMSk7XHJcbiAgLy8gfVxyXG5cclxuICAvLyAvLyAyLiBUcmF2ZXJzZSB0aGlzLmNvbHVtbnMgdG8gZmluZCBhbmQgdXBkYXRlIHRoZSBtYXRjaGluZyBjb2x1bW5cclxuICAvLyB0aGlzLmNvbHVtbnMuZm9yRWFjaCgoZ3JvdXApID0+IHtcclxuICAvLyAgIGlmIChncm91cD8uY2hpbGRyZW4gJiYgQXJyYXkuaXNBcnJheShncm91cC5jaGlsZHJlbikpIHtcclxuICAvLyAgICAgZ3JvdXAuY2hpbGRyZW4uZm9yRWFjaCgoY2hpbGQpID0+IHtcclxuICAvLyAgICAgICBpZiAoY2hpbGQuZmllbGQgPT09IGNvbHVtbi5maWVsZCkge1xyXG4gIC8vICAgICAgICAgY2hpbGQuaXNSb3dHcm91cGVkID0gZmFsc2U7XHJcbiAgLy8gICAgICAgfVxyXG4gIC8vICAgICB9KTtcclxuICAvLyAgIH0gZWxzZSBpZiAoZ3JvdXAuZmllbGQgPT09IGNvbHVtbi5maWVsZCkge1xyXG4gIC8vICAgICBncm91cC5pc1Jvd0dyb3VwZWQgPSBmYWxzZTtcclxuICAvLyAgIH1cclxuICAvLyB9KTtcclxuICAvLyAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAvLyB9XHJcblxyXG4gIGV4aXRlZEZyb21UaGVUb3BSb3coZHJvcExpc3Q6IENka0RyYWdFeGl0PGFueT4pIHtcclxuICAgIHRoaXMuZHJhZ2dpbmdJbkdyb3VwQXJlYSA9IGZhbHNlO1xyXG4gICAgdGhpcy5pc0Rpc2FibGVDb2x1bW5Hcm91cGluZyA9IGZhbHNlO1xyXG4gICAgdGhpcy5zaG91bGREaXNhYmxlRHJvcGxpc3RTb3J0aW5nID0gZmFsc2U7XHJcbiAgICBjb25zdCBkcmFnZ2luZ0RhdGEgPSBkcm9wTGlzdC5pdGVtLmRhdGE7XHJcbiAgICBpZiAoQXJyYXkuaXNBcnJheShkcmFnZ2luZ0RhdGE/LmNoaWxkcmVuKSkge1xyXG4gICAgICBjb25zdCB0YXJnZXRHcm91cCA9IHRoaXMuY29sdW1ucy5maW5kKFxyXG4gICAgICAgIChjb2wpID0+IGNvbC5oZWFkZXIgPT09IGRyYWdnaW5nRGF0YS5oZWFkZXJcclxuICAgICAgKTtcclxuICAgICAgaWYgKHRhcmdldEdyb3VwKSB7XHJcbiAgICAgICAgZHJhZ2dpbmdEYXRhLmNoaWxkcmVuLmZvckVhY2goKGRyYWdnZWRDaGlsZDogYW55KSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBtYXRjaGluZ0NoaWxkID0gdGFyZ2V0R3JvdXAuY2hpbGRyZW4uZmluZChcclxuICAgICAgICAgICAgKGNoaWxkOiBhbnkpID0+IGNoaWxkLmZpZWxkID09PSBkcmFnZ2VkQ2hpbGQuZmllbGRcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICBpZiAobWF0Y2hpbmdDaGlsZCkge1xyXG4gICAgICAgICAgICBtYXRjaGluZ0NoaWxkLmlzUm93R3JvdXBlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBsZXQgdGFyZ2V0Q29sdW1uID0gdGhpcy5jb2x1bW5zLmZpbmQoXHJcbiAgICAgICAgKGNvbDogYW55KSA9PiBjb2wuZmllbGQgPT09IGRyYWdnaW5nRGF0YS5maWVsZFxyXG4gICAgICApO1xyXG5cclxuICAgICAgaWYgKHRhcmdldENvbHVtbikge1xyXG4gICAgICAgIHRhcmdldENvbHVtbi5pc1Jvd0dyb3VwZWQgPSBmYWxzZTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBmb3IgKGxldCBncm91cCBvZiB0aGlzLmNvbHVtbnMpIHtcclxuICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGdyb3VwLmNoaWxkcmVuKSkge1xyXG4gICAgICAgICAgICBjb25zdCBtYXRjaGluZ0NoaWxkID0gZ3JvdXAuY2hpbGRyZW4uZmluZChcclxuICAgICAgICAgICAgICAoY2hpbGQ6IGFueSkgPT4gY2hpbGQuZmllbGQgPT09IGRyYWdnaW5nRGF0YS5maWVsZFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICBpZiAobWF0Y2hpbmdDaGlsZCkge1xyXG4gICAgICAgICAgICAgIG1hdGNoaW5nQ2hpbGQuaXNSb3dHcm91cGVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMucmVmcmVzaFByZXZpZXdDb2x1bW5zKCk7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBzaG91bGREaXNhYmxlRHJvcGxpc3RTb3J0aW5nID0gZmFsc2U7XHJcbiAgaXNEaXNhYmxlQ29sdW1uR3JvdXBpbmcgPSBmYWxzZTtcclxuICBjaGVja0NvbHVtbkdyb3VwaW5nU3RhdHVzKGNvbDogYW55KSB7XHJcbiAgICBpZiAoY29sPy5jaGlsZHJlbiAmJiBBcnJheS5pc0FycmF5KGNvbC5jaGlsZHJlbikpIHtcclxuICAgICAgY29uc3QgYWxsQ2hpbGRyZW5EaXNhYmxlZCA9IGNvbC5jaGlsZHJlbi5ldmVyeShcclxuICAgICAgICAoY2hpbGQ6IGFueSkgPT4gY2hpbGQuaXNfZ3JvdXBhYmxlID09PSBmYWxzZVxyXG4gICAgICApO1xyXG4gICAgICB0aGlzLmlzRGlzYWJsZUNvbHVtbkdyb3VwaW5nID0gYWxsQ2hpbGRyZW5EaXNhYmxlZDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuaXNEaXNhYmxlQ29sdW1uR3JvdXBpbmcgPSBjb2wuaXNfZ3JvdXBhYmxlID09PSBmYWxzZTtcclxuICAgIH1cclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIGN1cnJlbnREcmFnZ2luZ0NvbHVtbjogYW55ID0gbnVsbDtcclxuICBkcmFnU3RhcnRPbkdyb3VwKGNvbDogYW55KSB7XHJcbiAgICB0aGlzLmN1cnJlbnREcmFnZ2luZ0NvbHVtbiA9IGNvbDtcclxuICB9XHJcblxyXG4gIG9uU29ydEdyb3VwID0gYXN5bmMgKGV2ZW50OiBDZGtEcmFnU29ydEV2ZW50PGFueT4sIHNlY3Rpb246IHN0cmluZykgPT4ge1xyXG4gICAgY29uc3QgY29sdW1ucyA9ICh0aGlzIGFzIGFueSlbc2VjdGlvbl07XHJcbiAgICBpZiAoZXZlbnQucHJldmlvdXNJbmRleCA9PT0gZXZlbnQuY3VycmVudEluZGV4KSByZXR1cm47XHJcbiAgICBjb25zdCB2aXNpYmxlQ29sdW1ucyA9IGNvbHVtbnMuZmlsdGVyKChjb2w6IGFueSkgPT4ge1xyXG4gICAgICBpZiAoY29sPy5jaGlsZHJlbiAmJiBBcnJheS5pc0FycmF5KGNvbC5jaGlsZHJlbikpIHtcclxuICAgICAgICByZXR1cm4gY29sLmNoaWxkcmVuLnNvbWUoKGNoaWxkOiBhbnkpID0+IGNoaWxkLmlzX3Zpc2libGUpO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBjb2wuaXNfdmlzaWJsZTtcclxuICAgIH0pO1xyXG4gICAgY29uc3QgcHJldmlvdXNIZWFkZXIgPSB2aXNpYmxlQ29sdW1uc1tldmVudC5wcmV2aW91c0luZGV4XS5oZWFkZXI7XHJcbiAgICBjb25zdCBjdXJyZW50SGVhZGVyID0gdmlzaWJsZUNvbHVtbnNbZXZlbnQuY3VycmVudEluZGV4XS5oZWFkZXI7XHJcbiAgICBjb25zdCB2aXNpYmxlUHJldkluZGV4ID0gdmlzaWJsZUNvbHVtbnMuZmluZEluZGV4KFxyXG4gICAgICAoY29sOiBhbnkpID0+IGNvbC5oZWFkZXIgPT09IHByZXZpb3VzSGVhZGVyXHJcbiAgICApO1xyXG4gICAgY29uc3QgdmlzaWJsZUN1cnJJbmRleCA9IHZpc2libGVDb2x1bW5zLmZpbmRJbmRleChcclxuICAgICAgKGNvbDogYW55KSA9PiBjb2wuaGVhZGVyID09PSBjdXJyZW50SGVhZGVyXHJcbiAgICApO1xyXG4gICAgY29uc3QgZ2V0RmllbGRzID0gKGl0ZW06IGFueSk6IHN0cmluZ1tdID0+IHtcclxuICAgICAgaWYgKGl0ZW0/LmNoaWxkcmVuICYmIEFycmF5LmlzQXJyYXkoaXRlbS5jaGlsZHJlbikpIHtcclxuICAgICAgICByZXR1cm4gaXRlbS5jaGlsZHJlbi5tYXAoKGNoaWxkOiBhbnkpID0+IGNoaWxkLmZpZWxkKTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gW2l0ZW0uZmllbGRdO1xyXG4gICAgfTtcclxuICAgIGNvbnN0IHByZXZGaWVsZHMgPSBnZXRGaWVsZHModmlzaWJsZUNvbHVtbnNbdmlzaWJsZVByZXZJbmRleF0pO1xyXG4gICAgY29uc3QgY3VyckZpZWxkcyA9IGdldEZpZWxkcyh2aXNpYmxlQ29sdW1uc1t2aXNpYmxlQ3VyckluZGV4XSk7XHJcbiAgICBjb25zdCBhbGxGaWVsZHMgPSBbLi4ucHJldkZpZWxkcywgLi4uY3VyckZpZWxkc107XHJcbiAgICBjb25zdCBjZWxscyA9IGFsbEZpZWxkcy5sZW5ndGhcclxuICAgICAgPyAoW10gYXMgSFRNTEVsZW1lbnRbXSkuY29uY2F0KFxyXG4gICAgICAgIC4uLmFsbEZpZWxkcy5tYXAoKGZpZWxkKSA9PlxyXG4gICAgICAgICAgQXJyYXkuZnJvbShkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKGBbZmllbGQ9XCIke2ZpZWxkfVwiXWApKSBhcyBIVE1MRWxlbWVudFtdXHJcbiAgICAgICAgKVxyXG4gICAgICApXHJcbiAgICAgIDogW107XHJcbiAgICBjb25zdCBmaXJzdFBvc2l0aW9ucyA9IG5ldyBNYXA8SFRNTEVsZW1lbnQsIG51bWJlcj4oKTtcclxuICAgIGNlbGxzLmZvckVhY2goKGVsKSA9PiBmaXJzdFBvc2l0aW9ucy5zZXQoZWwsIGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQpKTtcclxuICAgIC8vIGNvbnNvbGUubG9nKFwidGhpcyAuY29sdW5zXCIsIHRoaXMuY29sdW1ucyk7XHJcbiAgICBtb3ZlSXRlbUluQXJyYXkoKHRoaXMgYXMgYW55KVtzZWN0aW9uXSwgdmlzaWJsZVByZXZJbmRleCwgdmlzaWJsZUN1cnJJbmRleCk7XHJcblxyXG4gICAgY29uc3QgcHJldkNvbEluZGV4SW5Db2x1bW5zID0gdGhpcy5jb2x1bW5zLmZpbmRJbmRleChpdGVtID0+IGl0ZW0uaGVhZGVyID09PSBwcmV2aW91c0hlYWRlcik7XHJcbiAgICBjb25zdCBjdXJyQ29sSW5kZXhJbkNvbHVtbnMgPSB0aGlzLmNvbHVtbnMuZmluZEluZGV4KGl0ZW0gPT4gaXRlbS5oZWFkZXIgPT09IGN1cnJlbnRIZWFkZXIpO1xyXG4gICAgbW92ZUl0ZW1JbkFycmF5KHRoaXMuY29sdW1ucywgcHJldkNvbEluZGV4SW5Db2x1bW5zLCBjdXJyQ29sSW5kZXhJbkNvbHVtbnMpO1xyXG4gICAgLy8gYXdhaXQgdGhpcy5yZWZyZXNoUHJldmlld0NvbHVtbnMoKTtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgIHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcclxuICAgICAgLy8gV2FpdCBhIHRpY2sgdG8gbWFrZSBzdXJlIGVsZW1lbnRzIGFyZSByZW5kZXJlZFxyXG4gICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xyXG4gICAgICAgIGFsbEZpZWxkcy5mb3JFYWNoKChmaWVsZCkgPT4ge1xyXG4gICAgICAgICAgY29uc3QgdXBkYXRlZENlbGxzID0gQXJyYXkuZnJvbShcclxuICAgICAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChgW2ZpZWxkPVwiJHtmaWVsZH1cIl1gKVxyXG4gICAgICAgICAgKSBhcyBIVE1MRWxlbWVudFtdO1xyXG5cclxuICAgICAgICAgIHVwZGF0ZWRDZWxscy5mb3JFYWNoKChlbCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBvbGRMZWZ0ID0gZmlyc3RQb3NpdGlvbnMuZ2V0KGVsKTtcclxuICAgICAgICAgICAgaWYgKG9sZExlZnQgPT0gbnVsbCkgcmV0dXJuOyAvLyBza2lwIGlmIG9sZCBwb3NpdGlvbiBub3QgYXZhaWxhYmxlXHJcblxyXG4gICAgICAgICAgICBjb25zdCBuZXdMZWZ0ID0gZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdDtcclxuICAgICAgICAgICAgY29uc3QgZGVsdGFYID0gb2xkTGVmdCAtIG5ld0xlZnQ7XHJcblxyXG4gICAgICAgICAgICBpZiAoZGVsdGFYICE9PSAwKSB7XHJcbiAgICAgICAgICAgICAgZWwuc3R5bGUud2lsbENoYW5nZSA9ICd0cmFuc2Zvcm0nO1xyXG4gICAgICAgICAgICAgIGVsLnN0eWxlLnRyYW5zaXRpb24gPSAnbm9uZSc7XHJcbiAgICAgICAgICAgICAgZWwuc3R5bGUudHJhbnNmb3JtID0gYHRyYW5zbGF0ZVgoJHtkZWx0YVh9cHgpYDtcclxuXHJcbiAgICAgICAgICAgICAgLy8gRm9yY2UgcmVmbG93XHJcbiAgICAgICAgICAgICAgdm9pZCBlbC5vZmZzZXRXaWR0aDtcclxuXHJcbiAgICAgICAgICAgICAgZWwuc3R5bGUudHJhbnNpdGlvbiA9ICd0cmFuc2Zvcm0gMzAwbXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKSc7XHJcbiAgICAgICAgICAgICAgZWwuc3R5bGUudHJhbnNmb3JtID0gJ3RyYW5zbGF0ZVgoMCknO1xyXG5cclxuICAgICAgICAgICAgICBjb25zdCBoYW5kbGUgPSAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBlbC5zdHlsZS50cmFuc2l0aW9uID0gJyc7XHJcbiAgICAgICAgICAgICAgICBlbC5zdHlsZS50cmFuc2Zvcm0gPSAnJztcclxuICAgICAgICAgICAgICAgIGVsLnN0eWxlLndpbGxDaGFuZ2UgPSAnJztcclxuICAgICAgICAgICAgICAgIGVsLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3RyYW5zaXRpb25lbmQnLCBoYW5kbGUpO1xyXG4gICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgZWwuYWRkRXZlbnRMaXN0ZW5lcigndHJhbnNpdGlvbmVuZCcsIGhhbmRsZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcblxyXG4gIG9uRHJvcEdyb3VwKCkge1xyXG4gICAgdGhpcy5sZWZ0UGlubmVkQ29sdW1ucyA9IHRoaXMuZGVlcENsb25lQ29sdW1ucyh0aGlzLnByZXZpZXdMZWZ0UGlubmVkQ29sdW1ucyk7XHJcbiAgICB0aGlzLmNlbnRlckNvbHVtbnMgPSB0aGlzLmRlZXBDbG9uZUNvbHVtbnModGhpcy5wcmV2aWV3Q2VudGVyQ29sdW1ucyk7XHJcbiAgICB0aGlzLnJpZ2h0UGlubmVkQ29sdW1ucyA9IHRoaXMuZGVlcENsb25lQ29sdW1ucyh0aGlzLnByZXZpZXdSaWdodFBpbm5lZENvbHVtbnMpO1xyXG4gICAgY29uc3Qgc2VuZERhdGEgPSB7XHJcbiAgICAgIGNvbHVtbnM6IHRoaXMuY2xlYW5Db2x1bW5zKHRoaXMuY29sdW1ucyksXHJcbiAgICAgIGZpbHRlcnM6IHRoaXMuY2xlYW5GaWx0ZXJkQ29sdW1ucygpLFxyXG4gICAgICBub19vZl9yZWNvcmRzOiB0aGlzLnBhZ2luYXRpb25Db25maWcucGFnZVNpemUsXHJcbiAgICAgIHR5cGU6IHRoaXMudGFibGVUeXBlLFxyXG4gICAgfTtcclxuICAgIHRoaXMuY3JlYXRlVXBkYXRlQ29uZmlnTGlzdGluZy5lbWl0KHNlbmREYXRhKTtcclxuXHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGRlZXBDbG9uZUNvbHVtbnMoY29sdW1uczogYW55W10pOiBhbnlbXSB7XHJcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkoY29sdW1ucykpIHJldHVybiBbXTtcclxuXHJcbiAgICByZXR1cm4gY29sdW1ucy5tYXAoY29sID0+ICh7XHJcbiAgICAgIC4uLmNvbCxcclxuICAgICAgcXVlcnk6IGNvbC5xdWVyeSA/IHsgLi4uY29sLnF1ZXJ5IH0gOiBudWxsLFxyXG4gICAgICBjb2x1bW5fZHJvcGRvd25fdmFsdWU6IEFycmF5LmlzQXJyYXkoY29sLmNvbHVtbl9kcm9wZG93bl92YWx1ZSlcclxuICAgICAgICA/IFsuLi5jb2wuY29sdW1uX2Ryb3Bkb3duX3ZhbHVlXVxyXG4gICAgICAgIDogW10sXHJcbiAgICAgIC8vIFJlY3Vyc2l2ZWx5IGRlZXAgY2xvbmUgY2hpbGRyZW4gaWYgcHJlc2VudFxyXG4gICAgICBjaGlsZHJlbjogQXJyYXkuaXNBcnJheShjb2wuY2hpbGRyZW4pXHJcbiAgICAgICAgPyB0aGlzLmRlZXBDbG9uZUNvbHVtbnMoY29sLmNoaWxkcmVuKVxyXG4gICAgICAgIDogdW5kZWZpbmVkLFxyXG4gICAgfSkpO1xyXG4gIH1cclxuXHJcblxyXG4gIGFzeW5jIG9uRHJvcFRvcEdyb3VwKGV2ZW50OiBDZGtEcmFnRHJvcDxhbnk+KSB7XHJcbiAgICBpZiAodGhpcy5pc091dHNpZGVDb250YWluZXIpIHJldHVybjtcclxuICAgIHRoaXMubWFpblNjcm9sbC5uYXRpdmVFbGVtZW50LnNjcm9sbFRvcCA9IDA7XHJcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy50cmFuc2xhdGVZID0gMDtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgIGNvbnN0IGRyYWdnZWREYXRhID0gZXZlbnQuaXRlbS5kYXRhO1xyXG4gICAgaWYgKGRyYWdnZWREYXRhPy5jaGlsZHJlbiAmJiBBcnJheS5pc0FycmF5KGRyYWdnZWREYXRhLmNoaWxkcmVuKSkge1xyXG4gICAgICBkcmFnZ2VkRGF0YS5jaGlsZHJlbi5mb3JFYWNoKChjb2w6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChjb2wuaXNfdmlzaWJsZSAmJiBjb2wuaXNfZ3JvdXBhYmxlKSB7XHJcbiAgICAgICAgICB0aGlzLmdyb3VwZWRDb2x1bW5zLnB1c2goY29sKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKGRyYWdnZWREYXRhLmlzX3Zpc2libGUgJiYgZHJhZ2dlZERhdGEuaXNfZ3JvdXBhYmxlKSB7XHJcbiAgICAgICAgdGhpcy5ncm91cGVkQ29sdW1ucy5wdXNoKGRyYWdnZWREYXRhKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5kcmFnZ2luZ0luR3JvdXBBcmVhID0gZmFsc2U7XHJcbiAgICBjb25zdCBmaWVsZHMgPSB0aGlzLmdyb3VwZWRDb2x1bW5zLm1hcCgoaXRlbSkgPT4gaXRlbS5maWVsZCk7XHJcbiAgICB0aGlzLmRhdGFTZXQgPSBhd2FpdCB0aGlzLmdyb3VwRGF0YUFzeW5jKHRoaXMub3JpZ2luYWxEYXRhU2V0LCBmaWVsZHMpO1xyXG4gICAgdGhpcy51cGRhdGVGbGF0dGVuZWREYXRhKCk7XHJcbiAgICB0aGlzLnVwZGF0ZUNvbHVtbldpZHRoc0FuZEdyb3VwcygpO1xyXG4gICAgdGhpcy5yZWZyZXNoUHJldmlld0NvbHVtbnMoKTtcclxuICAgIHRoaXMudXBkYXRlVmlzaWJsZVJvd3MoMCk7XHJcbiAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgIHRoaXMuc2VsZWN0ZWRDZWxscyA9IFtdO1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMucm93U2VsZWN0ZWRJbmRleGVzLmNsZWFyKCk7XHJcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH0sIDEwMDApO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgb25Hcm91cFJlb3JkZXIoZXZlbnQ6IENka0RyYWdEcm9wPGFueVtdPikge1xyXG4gICAgbW92ZUl0ZW1JbkFycmF5KHRoaXMuZ3JvdXBlZENvbHVtbnMsIGV2ZW50LnByZXZpb3VzSW5kZXgsIGV2ZW50LmN1cnJlbnRJbmRleCk7XHJcbiAgICBjb25zdCBmaWVsZHMgPSB0aGlzLmdyb3VwZWRDb2x1bW5zLm1hcCgoaXRlbSkgPT4gaXRlbS5maWVsZCk7XHJcbiAgICB0aGlzLmRhdGFTZXQgPSBhd2FpdCB0aGlzLmdyb3VwRGF0YUFzeW5jKHRoaXMub3JpZ2luYWxEYXRhU2V0LCBmaWVsZHMpO1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMudXBkYXRlRmxhdHRlbmVkRGF0YSgpO1xyXG4gICAgICB0aGlzLnVwZGF0ZUNvbHVtbldpZHRoc0FuZEdyb3VwcygpO1xyXG4gICAgICB0aGlzLnJlZnJlc2hQcmV2aWV3Q29sdW1ucygpO1xyXG4gICAgICB0aGlzLnVwZGF0ZVZpc2libGVSb3dzKDApO1xyXG4gICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfSwgMTAwKTtcclxuXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5ncm91cEJveFBhZGRpbmcgPSB0aGlzLmNvbHVtbnNHcm91cGVkQm94Py5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoO1xyXG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKClcclxuICAgIH0sIDEwKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIHVuZ3JvdXBDb2x1bW4oY29sdW1uOiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XHJcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgY29uc3QgaW5kZXggPSB0aGlzLmdyb3VwZWRDb2x1bW5zLmZpbmRJbmRleChcclxuICAgICAgICAoY29sKSA9PiBjb2wuZmllbGQgPT09IGNvbHVtbi5maWVsZFxyXG4gICAgICApO1xyXG4gICAgICBpZiAoaW5kZXggIT09IC0xKSB7XHJcbiAgICAgICAgdGhpcy5ncm91cGVkQ29sdW1ucy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IGZpZWxkcyA9IHRoaXMuZ3JvdXBlZENvbHVtbnMubWFwKChpdGVtKSA9PiBpdGVtLmZpZWxkKTtcclxuICAgICAgdGhpcy5kYXRhU2V0ID0gYXdhaXQgdGhpcy5ncm91cERhdGFBc3luYyh0aGlzLm9yaWdpbmFsRGF0YVNldCwgZmllbGRzKTtcclxuICAgICAgdGhpcy5jb2x1bW5zLmZvckVhY2goKGdyb3VwKSA9PiB7XHJcbiAgICAgICAgaWYgKGdyb3VwPy5jaGlsZHJlbiAmJiBBcnJheS5pc0FycmF5KGdyb3VwLmNoaWxkcmVuKSkge1xyXG4gICAgICAgICAgZ3JvdXAuY2hpbGRyZW4uZm9yRWFjaCgoY2hpbGQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoY2hpbGQuZmllbGQgPT09IGNvbHVtbi5maWVsZCkge1xyXG4gICAgICAgICAgICAgIGNoaWxkLmlzUm93R3JvdXBlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9IGVsc2UgaWYgKGdyb3VwLmZpZWxkID09PSBjb2x1bW4uZmllbGQpIHtcclxuICAgICAgICAgIGdyb3VwLmlzUm93R3JvdXBlZCA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMudXBkYXRlRmxhdHRlbmVkRGF0YSgpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlQ29sdW1uV2lkdGhzQW5kR3JvdXBzKCk7XHJcbiAgICAgICAgdGhpcy5yZWZyZXNoUHJldmlld0NvbHVtbnMoKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZVZpc2libGVSb3dzKDApO1xyXG4gICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgfSwgMTAwMCk7XHJcblxyXG4gICAgfSBjYXRjaCAoZXJyKSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoXCJFcnJvciBpbiB1bmdyb3VwQ29sdW1uOlwiLCBlcnIpO1xyXG4gICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgIH1cclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG5cclxuICBzaG91bGRUaGVHcm91cEhlYWRlclNob3coZ3JvdXA6IGFueSkge1xyXG4gICAgaWYgKGdyb3VwPy5jaGlsZHJlbiAmJiBncm91cC5jaGlsZHJlbi5sZW5ndGgpIHtcclxuICAgICAgcmV0dXJuIGdyb3VwLmNoaWxkcmVuLnNvbWUoXHJcbiAgICAgICAgKGNvbDogYW55KSA9PiBjb2wuaXNfdmlzaWJsZSAmJiAhY29sPy5pc1Jvd0dyb3VwZWRcclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIHJldHVybiBncm91cD8uaXNfdmlzaWJsZSAmJiAhZ3JvdXA/LmlzUm93R3JvdXBlZDtcclxuICB9XHJcblxyXG5cclxuICAvLyBvbkNoaWxkRHJhZ1N0YXJ0KCkge1xyXG4gIC8vICAgZGVidWdnZXI7XHJcbiAgLy8gfVxyXG5cclxuICAvLyBkcm9wTGlzdElkczogc3RyaW5nW10gPSBbXTtcclxuXHJcbiAgLy8gZ2VuZXJhdGVEcm9wTGlzdElkcygpIHtcclxuICAvLyAgIHRoaXMuZHJvcExpc3RJZHMgPSBbXTtcclxuXHJcbiAgLy8gICBjb25zdCBzZWN0aW9uS2V5cyA9IFtcclxuICAvLyAgICAgJ2xlZnRQaW5uZWRDb2x1bW5zJyxcclxuICAvLyAgICAgJ2NlbnRlckNvbHVtbnMnLFxyXG4gIC8vICAgICAncmlnaHRQaW5uZWRDb2x1bW5zJyxcclxuICAvLyAgIF07XHJcblxyXG4gIC8vICAgc2VjdGlvbktleXMuZm9yRWFjaCgoc2VjdGlvbktleSkgPT4ge1xyXG4gIC8vICAgICBjb25zdCBzZWN0aW9uQ29scyA9ICh0aGlzIGFzIGFueSlbc2VjdGlvbktleV07XHJcblxyXG4gIC8vICAgICB0aGlzLmNvbHVtbnMuZm9yRWFjaCgoY29sOiBhbnksIGk6IG51bWJlcikgPT4ge1xyXG4gIC8vICAgICAgIGlmIChjb2w/LmNoaWxkcmVuPy5sZW5ndGggPiAwKSB7XHJcbiAgLy8gICAgICAgICBjb2wuY2hpbGRyZW4uZm9yRWFjaCgoY2hpbGQ6IGFueSwgY2hpbGRJbmRleDogbnVtYmVyKSA9PiB7XHJcbiAgLy8gICAgICAgICAgIGlmIChjaGlsZD8uaXNfdmlzaWJsZSAmJiAhY2hpbGQuaXNSb3dHcm91cGVkKSB7XHJcbiAgLy8gICAgICAgICAgICAgY29uc3QgaWQgPSBgJHtzZWN0aW9uS2V5fSR7aX1gO1xyXG4gIC8vICAgICAgICAgICAgIHRoaXMuZHJvcExpc3RJZHMucHVzaChpZCk7XHJcbiAgLy8gICAgICAgICAgIH1cclxuICAvLyAgICAgICAgIH0pO1xyXG4gIC8vICAgICAgIH0gZWxzZSBpZiAoY29sPy5pc192aXNpYmxlICYmICFjb2wuaXNSb3dHcm91cGVkKSB7XHJcbiAgLy8gICAgICAgICBjb25zdCBpZCA9IGAke3NlY3Rpb25LZXl9JHtpfWA7XHJcbiAgLy8gICAgICAgICB0aGlzLmRyb3BMaXN0SWRzLnB1c2goaWQpO1xyXG4gIC8vICAgICAgIH1cclxuICAvLyAgICAgfSk7XHJcbiAgLy8gICB9KTtcclxuICAvLyB9XHJcblxyXG4gIG9uQ2hpbGREcm9wbGlzdFNvcnRlZCA9IGFzeW5jIChldmVudDogQ2RrRHJhZ1NvcnRFdmVudDxhbnk+LCBzZWN0aW9uOiBzdHJpbmcpID0+IHtcclxuICAgIGlmIChldmVudC5wcmV2aW91c0luZGV4ID09PSBldmVudC5jdXJyZW50SW5kZXgpIHJldHVybjtcclxuXHJcbiAgICBjb25zdCBwaW5uZWQgPVxyXG4gICAgICBzZWN0aW9uID09ICdwcmV2aWV3TGVmdFBpbm5lZENvbHVtbnMnXHJcbiAgICAgICAgPyAnbGVmdCdcclxuICAgICAgICA6IHNlY3Rpb24gPT0gJ3ByZXZpZXdSaWdodFBpbm5lZENvbHVtbnMnXHJcbiAgICAgICAgICA/ICdyaWdodCdcclxuICAgICAgICAgIDogXCJcIjtcclxuXHJcbiAgICBjb25zdCBjb2x1bW4gPSBldmVudC5pdGVtLmRhdGE7XHJcbiAgICBsZXQgZ3JvdXAgPSB0aGlzLmNvbHVtbnMuZmluZChcclxuICAgICAgKGNvbDogYW55KSA9PlxyXG4gICAgICAgIEFycmF5LmlzQXJyYXkoY29sLmNoaWxkcmVuKSAmJlxyXG4gICAgICAgIGNvbC5jaGlsZHJlbi5zb21lKChjaGlsZDogYW55KSA9PiBjaGlsZD8uZmllbGQgPT09IGNvbHVtbj8uZmllbGQpXHJcbiAgICApO1xyXG4gICAgY29uc3QgZ3JvdXBJbmRleCA9IHRoaXMuY29sdW1ucy5maW5kSW5kZXgoXHJcbiAgICAgIChjb2wpID0+IGNvbC5oZWFkZXIgPT09IGdyb3VwLmhlYWRlclxyXG4gICAgKTtcclxuICAgIGNvbnN0IGZpbHRlcmVkR3JvdXAgPSBncm91cD8uY2hpbGRyZW4uZmlsdGVyKChjb2w6IGFueSkgPT4ge1xyXG4gICAgICBjb25zdCBpc1Bpbm5lZE1hdGNoID1cclxuICAgICAgICAocGlubmVkID09PSBcIlwiICYmICghY29sPy5waW5uZWQgfHwgY29sPy5waW5uZWQgPT09IFwiXCIpKSB8fCBjb2w/LnBpbm5lZCA9PT0gcGlubmVkO1xyXG4gICAgICByZXR1cm4gaXNQaW5uZWRNYXRjaCAmJiBjb2w/LmlzX3Zpc2libGU7XHJcbiAgICB9KTtcclxuXHJcbiAgICBjb25zdCBwcmV2aW91c0ZpZWxkID0gZmlsdGVyZWRHcm91cFtldmVudC5wcmV2aW91c0luZGV4XS5maWVsZDtcclxuICAgIGNvbnN0IGN1cnJlbnRGaWVsZCA9IGZpbHRlcmVkR3JvdXBbZXZlbnQuY3VycmVudEluZGV4XS5maWVsZDtcclxuICAgIGNvbnN0IHZpc2libGVQcmV2SW5kZXggPSBncm91cC5jaGlsZHJlbi5maW5kSW5kZXgoXHJcbiAgICAgIChjb2w6IGFueSkgPT4gY29sLmZpZWxkID09IHByZXZpb3VzRmllbGRcclxuICAgICk7XHJcbiAgICBjb25zdCB2aXNpYmxlQ3VyckluZGV4ID0gZ3JvdXAuY2hpbGRyZW4uZmluZEluZGV4KFxyXG4gICAgICAoY29sOiBhbnkpID0+IGNvbC5maWVsZCA9PSBjdXJyZW50RmllbGRcclxuICAgICk7XHJcbiAgICBjb25zdCBhbGxGaWVsZHMgPSBbcHJldmlvdXNGaWVsZCwgY3VycmVudEZpZWxkXTtcclxuICAgIGNvbnN0IGNlbGxzID0gYWxsRmllbGRzLmxlbmd0aFxyXG4gICAgICA/IChbXSBhcyBIVE1MRWxlbWVudFtdKS5jb25jYXQoXHJcbiAgICAgICAgLi4uYWxsRmllbGRzLm1hcCgoZmllbGQpID0+XHJcbiAgICAgICAgICBBcnJheS5mcm9tKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoYFtmaWVsZD1cIiR7ZmllbGR9XCJdYCkpIGFzIEhUTUxFbGVtZW50W11cclxuICAgICAgICApXHJcbiAgICAgIClcclxuICAgICAgOiBbXTtcclxuXHJcbiAgICBjb25zdCBncm91cEluU2VjdGlvbiA9ICh0aGlzIGFzIGFueSlbc2VjdGlvbl0uZmluZChcclxuICAgICAgKGNvbDogYW55KSA9PlxyXG4gICAgICAgIEFycmF5LmlzQXJyYXkoY29sLmNoaWxkcmVuKSAmJlxyXG4gICAgICAgIGNvbC5jaGlsZHJlbi5zb21lKChjaGlsZDogYW55KSA9PiBjaGlsZD8uZmllbGQgPT09IGNvbHVtbj8uZmllbGQpXHJcbiAgICApO1xyXG5cclxuICAgIGNvbnN0IGZpbHRlckdyb3VwSW5TZWN0aW9uID0gKHRoaXMgYXMgYW55KVtzZWN0aW9uXS5maW5kKFxyXG4gICAgICAoY29sOiBhbnkpID0+XHJcbiAgICAgICAgQXJyYXkuaXNBcnJheShjb2wuY2hpbGRyZW4pICYmXHJcbiAgICAgICAgY29sLmNoaWxkcmVuLnNvbWUoKGNoaWxkOiBhbnkpID0+IGNoaWxkPy5maWVsZCA9PT0gY29sdW1uPy5maWVsZClcclxuICAgICk7XHJcblxyXG4gICAgY29uc3QgZ3JvdXBJblNlY3Rpb25JbmRleCA9ICh0aGlzIGFzIGFueSlbc2VjdGlvbl0uZmluZEluZGV4KFxyXG4gICAgICAoY29sOiBhbnkpID0+IGNvbC5oZWFkZXIgPT09IGdyb3VwSW5TZWN0aW9uLmhlYWRlclxyXG4gICAgKTtcclxuXHJcbiAgICBjb25zdCBmaXJzdFBvc2l0aW9ucyA9IG5ldyBNYXA8SFRNTEVsZW1lbnQsIG51bWJlcj4oKTtcclxuICAgIGNlbGxzLmZvckVhY2goKGVsKSA9PiBmaXJzdFBvc2l0aW9ucy5zZXQoZWwsIGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQpKTtcclxuICAgIG1vdmVJdGVtSW5BcnJheShcclxuICAgICAgdGhpcy5jb2x1bW5zW2dyb3VwSW5kZXhdPy5jaGlsZHJlbixcclxuICAgICAgdmlzaWJsZVByZXZJbmRleCxcclxuICAgICAgdmlzaWJsZUN1cnJJbmRleFxyXG4gICAgKTtcclxuXHJcbiAgICBtb3ZlSXRlbUluQXJyYXkoXHJcbiAgICAgICh0aGlzIGFzIGFueSlbc2VjdGlvbl0/Lltncm91cEluU2VjdGlvbkluZGV4XS5jaGlsZHJlbixcclxuICAgICAgZXZlbnQucHJldmlvdXNJbmRleCxcclxuICAgICAgZXZlbnQuY3VycmVudEluZGV4XHJcbiAgICApO1xyXG5cclxuICAgIC8vIGF3YWl0IHRoaXMucmVmcmVzaFByZXZpZXdDb2x1bW5zKCk7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAvLyBhbGxGaWVsZHMuZm9yRWFjaCgoZmllbGQpID0+IHtcclxuICAgIC8vICAgY29uc3QgdXBkYXRlZENlbGxzID0gQXJyYXkuZnJvbShcclxuICAgIC8vICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKGBbZmllbGQ9XCIke2ZpZWxkfVwiXWApXHJcbiAgICAvLyAgICkgYXMgSFRNTEVsZW1lbnRbXTtcclxuICAgIC8vICAgdXBkYXRlZENlbGxzLmZvckVhY2goKGVsKSA9PiB7XHJcbiAgICAvLyAgICAgY29uc3QgbmV3TGVmdCA9IGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQ7XHJcbiAgICAvLyAgICAgY29uc3Qgb2xkTGVmdCA9IGZpcnN0UG9zaXRpb25zLmdldChlbCkhO1xyXG4gICAgLy8gICAgIGNvbnN0IGRlbHRhWCA9IG9sZExlZnQgLSBuZXdMZWZ0O1xyXG4gICAgLy8gICAgIGlmIChkZWx0YVggIT09IDApIHtcclxuICAgIC8vICAgICAgIGVsLnN0eWxlLndpbGxDaGFuZ2UgPSAndHJhbnNmb3JtJztcclxuICAgIC8vICAgICAgIGVsLnN0eWxlLnRyYW5zaXRpb24gPSAnbm9uZSc7XHJcbiAgICAvLyAgICAgICBlbC5zdHlsZS50cmFuc2Zvcm0gPSBgdHJhbnNsYXRlWCgke2RlbHRhWH1weClgO1xyXG4gICAgLy8gICAgICAgdm9pZCBlbC5vZmZzZXRXaWR0aDtcclxuICAgIC8vICAgICAgIGVsLnN0eWxlLnRyYW5zaXRpb24gPSAndHJhbnNmb3JtIDQwMG1zIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSknO1xyXG4gICAgLy8gICAgICAgZWwuc3R5bGUudHJhbnNmb3JtID0gJ3RyYW5zbGF0ZVgoMCknO1xyXG5cclxuICAgIC8vICAgICAgIGNvbnN0IGhhbmRsZSA9ICgpID0+IHtcclxuICAgIC8vICAgICAgICAgZWwuc3R5bGUudHJhbnNpdGlvbiA9ICcnO1xyXG4gICAgLy8gICAgICAgICBlbC5zdHlsZS50cmFuc2Zvcm0gPSAnJztcclxuICAgIC8vICAgICAgICAgZWwuc3R5bGUud2lsbENoYW5nZSA9ICcnO1xyXG4gICAgLy8gICAgICAgICBlbC5yZW1vdmVFdmVudExpc3RlbmVyKCd0cmFuc2l0aW9uZW5kJywgaGFuZGxlKTtcclxuICAgIC8vICAgICAgIH07XHJcbiAgICAvLyAgICAgICBlbC5hZGRFdmVudExpc3RlbmVyKCd0cmFuc2l0aW9uZW5kJywgaGFuZGxlKTtcclxuICAgIC8vICAgICB9XHJcbiAgICAvLyAgIH0pO1xyXG4gICAgLy8gfSk7XHJcblxyXG4gICAgdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xyXG4gICAgICBhbGxGaWVsZHMuZm9yRWFjaCgoZmllbGQpID0+IHtcclxuICAgICAgICBjb25zdCB1cGRhdGVkQ2VsbHMgPSBBcnJheS5mcm9tKFxyXG4gICAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChgW2ZpZWxkPVwiJHtmaWVsZH1cIl1gKVxyXG4gICAgICAgICkgYXMgSFRNTEVsZW1lbnRbXTtcclxuXHJcbiAgICAgICAgdXBkYXRlZENlbGxzLmZvckVhY2goKGVsKSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBvbGRMZWZ0ID0gZmlyc3RQb3NpdGlvbnMuZ2V0KGVsKTtcclxuICAgICAgICAgIGlmIChvbGRMZWZ0ID09IG51bGwpIHJldHVybjsgLy8gc2FmZXR5IGNoZWNrXHJcblxyXG4gICAgICAgICAgY29uc3QgbmV3TGVmdCA9IGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQ7XHJcbiAgICAgICAgICBjb25zdCBkZWx0YVggPSBvbGRMZWZ0IC0gbmV3TGVmdDtcclxuXHJcbiAgICAgICAgICBpZiAoZGVsdGFYICE9PSAwKSB7XHJcbiAgICAgICAgICAgIGVsLnN0eWxlLndpbGxDaGFuZ2UgPSAndHJhbnNmb3JtJztcclxuICAgICAgICAgICAgZWwuc3R5bGUudHJhbnNpdGlvbiA9ICdub25lJztcclxuICAgICAgICAgICAgZWwuc3R5bGUudHJhbnNmb3JtID0gYHRyYW5zbGF0ZVgoJHtkZWx0YVh9cHgpYDtcclxuXHJcbiAgICAgICAgICAgIC8vIEZvcmNlIHJlZmxvd1xyXG4gICAgICAgICAgICB2b2lkIGVsLm9mZnNldFdpZHRoO1xyXG5cclxuICAgICAgICAgICAgZWwuc3R5bGUudHJhbnNpdGlvbiA9ICd0cmFuc2Zvcm0gNDAwbXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKSc7XHJcbiAgICAgICAgICAgIGVsLnN0eWxlLnRyYW5zZm9ybSA9ICd0cmFuc2xhdGVYKDApJztcclxuXHJcbiAgICAgICAgICAgIGNvbnN0IGhhbmRsZSA9ICgpID0+IHtcclxuICAgICAgICAgICAgICBlbC5zdHlsZS50cmFuc2l0aW9uID0gJyc7XHJcbiAgICAgICAgICAgICAgZWwuc3R5bGUudHJhbnNmb3JtID0gJyc7XHJcbiAgICAgICAgICAgICAgZWwuc3R5bGUud2lsbENoYW5nZSA9ICcnO1xyXG4gICAgICAgICAgICAgIGVsLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3RyYW5zaXRpb25lbmQnLCBoYW5kbGUpO1xyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBlbC5hZGRFdmVudExpc3RlbmVyKCd0cmFuc2l0aW9uZW5kJywgaGFuZGxlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuXHJcbiAgICAvLyBjb25zb2xlLmdyb3VwKCdHcm91cDogJywgZ3JvdXApO1xyXG4gIH1cclxuXHJcblxyXG4gIG9uQ2hpbGREcm9wbGlzdERyb3BlZChjZGtEcmFnRHJvcGV2ZW50OiBDZGtEcmFnRHJvcDxhbnk+KSB7XHJcbiAgICB0aGlzLnVwZGF0ZUNvbHVtbldpZHRoc0FuZEdyb3VwcygpO1xyXG4gICAgY29uc3Qgc2VuZERhdGEgPSB7XHJcbiAgICAgIGNvbHVtbnM6IHRoaXMuY2xlYW5Db2x1bW5zKHRoaXMuY29sdW1ucyksXHJcbiAgICAgIGZpbHRlcnM6IHRoaXMuY2xlYW5GaWx0ZXJkQ29sdW1ucygpLFxyXG4gICAgICBub19vZl9yZWNvcmRzOiB0aGlzLnBhZ2luYXRpb25Db25maWcucGFnZVNpemUsXHJcbiAgICAgIHR5cGU6IHRoaXMudGFibGVUeXBlLFxyXG4gICAgfTtcclxuICAgIHRoaXMuY3JlYXRlVXBkYXRlQ29uZmlnTGlzdGluZy5lbWl0KHNlbmREYXRhKTtcclxuXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfSwgMik7XHJcbiAgfVxyXG5cclxuICAvLyBSb3dzIEdyb3VwaW5nIExvZ2ljIEdvZXMgSGVyZVxyXG5cclxuICBncm91cERhdGEoZGF0YTogYW55W10sIGdyb3VwRmllbGRzOiBzdHJpbmdbXSk6IGFueVtdIHtcclxuICAgIGxldCBkYXRhU2V0ID0gc3RydWN0dXJlZENsb25lKGRhdGEpO1xyXG4gICAgaWYgKCFncm91cEZpZWxkcy5sZW5ndGgpIHJldHVybiBkYXRhO1xyXG4gICAgY29uc3QgW2N1cnJlbnRGaWVsZCwgLi4ucmVzdEZpZWxkc10gPSBncm91cEZpZWxkcztcclxuICAgIGNvbnN0IGdyb3VwZWRNYXAgPSBuZXcgTWFwPHN0cmluZywgYW55W10+KCk7XHJcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgZGF0YVNldCkge1xyXG4gICAgICBsZXQga2V5VmFsdWUgPSBjdXJyZW50RmllbGQuc3BsaXQoJy4nKS5yZWR1Y2UoKG9iaiwgaykgPT4gb2JqPy5ba10sIGl0ZW0pO1xyXG4gICAgICBsZXQgZ3JvdXBLZXk6IHN0cmluZztcclxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkoa2V5VmFsdWUpKSB7XHJcbiAgICAgICAgaWYgKGtleVZhbHVlLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgICAgZ3JvdXBLZXkgPSBcIl9CbGFua1wiO1xyXG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGtleVZhbHVlWzBdID09PSBcIm9iamVjdFwiKSB7XHJcbiAgICAgICAgICBncm91cEtleSA9IGtleVZhbHVlXHJcbiAgICAgICAgICAgIC5tYXAob2JqID0+IChvYmo/LmRlcGFydG1lbnRfbmFtZSB8fCBvYmoucm9sZU5hbWUgfHwgb2JqPy5mdWxsX25hbWUpID8/IFwiX0JsYW5rXCIpXHJcbiAgICAgICAgICAgIC5qb2luKFwiLFwiKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgZ3JvdXBLZXkgPSBrZXlWYWx1ZVxyXG4gICAgICAgICAgICAubWFwKHZhbCA9PiB2YWwgPz8gXCJfQmxhbmtcIilcclxuICAgICAgICAgICAgLmpvaW4oXCIsXCIpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBncm91cEtleSA9IGtleVZhbHVlID8/IFwiX0JsYW5rXCI7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKCFncm91cGVkTWFwLmhhcyhncm91cEtleSkpIGdyb3VwZWRNYXAuc2V0KGdyb3VwS2V5LCBbXSk7XHJcbiAgICAgIGdyb3VwZWRNYXAuZ2V0KGdyb3VwS2V5KSEucHVzaChpdGVtKTtcclxuICAgIH1cclxuICAgIHJldHVybiBBcnJheS5mcm9tKGdyb3VwZWRNYXAuZW50cmllcygpKS5tYXAoKFtncm91cFZhbHVlLCBncm91cEl0ZW1zXSkgPT4gKHtcclxuICAgICAgaXNHcm91cDogdHJ1ZSxcclxuICAgICAgZ3JvdXBGaWVsZDogY3VycmVudEZpZWxkLFxyXG4gICAgICBncm91cFZhbHVlLFxyXG4gICAgICBjaGlsZHJlbjogdGhpcy5ncm91cERhdGEoZ3JvdXBJdGVtcywgcmVzdEZpZWxkcyksXHJcbiAgICAgIGlzRXhwYW5kOiBmYWxzZSxcclxuICAgIH0pKTtcclxuICB9XHJcblxyXG5cclxuICBjb3VudExlYWZSb3dzKGdyb3VwOiBhbnkpOiBudW1iZXIge1xyXG4gICAgaWYgKCFncm91cC5jaGlsZHJlbiB8fCAhZ3JvdXAuY2hpbGRyZW4ubGVuZ3RoKSByZXR1cm4gMDtcclxuXHJcbiAgICByZXR1cm4gZ3JvdXAuY2hpbGRyZW4ucmVkdWNlKChjb3VudDogbnVtYmVyLCBjaGlsZDogYW55KSA9PiB7XHJcbiAgICAgIHJldHVybiBjb3VudCArIChjaGlsZC5pc0dyb3VwID8gdGhpcy5jb3VudExlYWZSb3dzKGNoaWxkKSA6IDEpO1xyXG4gICAgfSwgMCk7XHJcbiAgfVxyXG5cclxuICBpc0FjdGl2ZUZpbHRlck9wZW4gPSBmYWxzZTtcclxuICB0b2dnbGVBY3RpdmVGaWx0ZXIoKSB7XHJcbiAgICB0aGlzLmlzQWN0aXZlRmlsdGVyT3BlbiA9ICF0aGlzLmlzQWN0aXZlRmlsdGVyT3BlbjtcclxuICB9XHJcblxyXG4gIHRvZ2dsZUFjdGlvbnModHlwZTogc3RyaW5nKSB7XHJcbiAgICBpZiAodHlwZSA9PT0gdGhpcy5hY3RpdmVUb3BCdXR0b24pIHRoaXMuYWN0aXZlVG9wQnV0dG9uID0gdHlwZTtcclxuICAgIGVsc2UgdGhpcy5hY3RpdmVUb3BCdXR0b24gPSB0eXBlO1xyXG4gICAgdGhpcy5hY3RpdmVTdWJCdXR0b24gPSAnJztcclxuICAgIHRoaXMuaXNGaWx0ZXJPcGVuID0gZmFsc2U7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBhY3RpdmVTdWJCdXR0b24gPSAnJztcclxuICB0b2dnbGVTdWJBY3Rpb25zKHR5cGU6IHN0cmluZykge1xyXG4gICAgaWYgKHR5cGUgPT09IHRoaXMuYWN0aXZlU3ViQnV0dG9uKSB0aGlzLmFjdGl2ZVN1YkJ1dHRvbiA9ICcnO1xyXG4gICAgZWxzZSB0aGlzLmFjdGl2ZVN1YkJ1dHRvbiA9IHR5cGU7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICB0b2dnbGVBY3Rpb25zRHJvcGRvd24oKSB7XHJcbiAgICB0aGlzLnNob3dBY3Rpb25zRHJvcERvd24gPSAhdGhpcy5zaG93QWN0aW9uc0Ryb3BEb3duO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcblxyXG5cclxuICBhc3luYyBjaGFuZ2VUYWJsZUxheW91dChldmVudDogRXZlbnQsIGxheW91dFR5cGU6IHN0cmluZykge1xyXG4gICAgbGV0IHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50O1xyXG5cclxuICAgIGlmICh0YXJnZXQuY2hlY2tlZCkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkVGFibGVMYXlvdXQgPSBsYXlvdXRUeXBlO1xyXG4gICAgICB0aGlzLnNldFRhYmxlTGF5b3V0KGxheW91dFR5cGUpXHJcbiAgICAgIHRoaXMudXBkYXRlVmlzaWJsZVJvd3ModGhpcy5tYWluU2Nyb2xsPy5uYXRpdmVFbGVtZW50Py5zY3JvbGxUb3ApO1xyXG4gICAgICBhd2FpdCB0aGlzLnJlZnJlc2hIZWFkZXJzKCk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy50YWJsZUZpbHRlclZpZXdJZCkge1xyXG4gICAgICB0aGlzLnNhdmVQcmVzZXQoJ21vdXNlVXAnKTtcclxuICAgIH1cclxuICAgIHRoaXMub25Gb250Q2hhbmdlKClcclxuICB9XHJcblxyXG4gIHNldFRhYmxlTGF5b3V0KGxheW91dFR5cGU6IHN0cmluZykge1xyXG4gICAgaWYoIWxheW91dFR5cGUpIHJldHVybjtcclxuICAgIGlmIChsYXlvdXRUeXBlID09PSAnc21hbGwnKSB7XHJcbiAgICAgIHRoaXMucm93SGVpZ2h0ID0gMzY7XHJcbiAgICAgIHRoaXMuaGVhZGVyUm93SGVpZ2h0ID0gNDA7XHJcbiAgICAgIHRoaXMuYm9keVRleHRGb250c1NpemUgPSAxMDtcclxuICAgICAgdGhpcy5oZWFkZXJUZXh0Rm9udHNTaXplID0gMTA7XHJcblxyXG4gICAgfSBlbHNlIGlmIChsYXlvdXRUeXBlID09PSAnbWVkaXVtJykge1xyXG4gICAgICB0aGlzLnJvd0hlaWdodCA9IDQ0O1xyXG4gICAgICB0aGlzLmhlYWRlclJvd0hlaWdodCA9IDQ0O1xyXG4gICAgICB0aGlzLmJvZHlUZXh0Rm9udHNTaXplID0gMTQ7XHJcbiAgICAgIHRoaXMuaGVhZGVyVGV4dEZvbnRzU2l6ZSA9IDE0O1xyXG5cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMucm93SGVpZ2h0ID0gNjA7XHJcbiAgICAgIHRoaXMuaGVhZGVyUm93SGVpZ2h0ID0gNTI7XHJcbiAgICAgIHRoaXMuYm9keVRleHRGb250c1NpemUgPSAxNjtcclxuICAgICAgdGhpcy5oZWFkZXJUZXh0Rm9udHNTaXplID0gMTY7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgcGFnZVNpemVPcHRpb25zID0gWzEwLCAyNSwgNTAsIDc1LCAxMDAsIDE1MCwgMjAwLCAyNTAsIDMwMCwgNTAwXTtcclxuICBnZXQgc3RhcnRJbmRleERhdGEoKSB7XHJcbiAgICByZXR1cm4gKHRoaXMucGFnaW5hdGlvbkNvbmZpZy5wYWdlIC0gMSkgKiB0aGlzLnBhZ2luYXRpb25Db25maWcubGltaXQ7XHJcbiAgfVxyXG5cclxuICBnZXQgZW5kSW5kZXgoKSB7XHJcbiAgICByZXR1cm4gTWF0aC5taW4odGhpcy5zdGFydEluZGV4ICsgdGhpcy5wYWdpbmF0aW9uQ29uZmlnLmxpbWl0LCB0aGlzLnBhZ2luYXRpb25Db25maWcudG90YWxSZXN1bHRzKTtcclxuICB9XHJcblxyXG4gIGdldCB2aXNpYmxlUGFnZXMoKTogKG51bWJlciB8IHN0cmluZylbXSB7XHJcbiAgICBjb25zdCBwYWdlczogKG51bWJlciB8IHN0cmluZylbXSA9IFtdO1xyXG5cclxuICAgIGlmICh0aGlzLnBhZ2luYXRpb25Db25maWcudG90YWxQYWdlcyA8PSA3KSB7XHJcbiAgICAgIGZvciAobGV0IGkgPSAxOyBpIDw9IHRoaXMucGFnaW5hdGlvbkNvbmZpZy50b3RhbFBhZ2VzOyBpKyspIHtcclxuICAgICAgICBwYWdlcy5wdXNoKGkpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBwYWdlcy5wdXNoKDEpO1xyXG4gICAgICBpZiAodGhpcy5wYWdpbmF0aW9uQ29uZmlnLnBhZ2UgPiAzKSB7XHJcbiAgICAgICAgcGFnZXMucHVzaCgnLi4uJyk7XHJcbiAgICAgIH1cclxuICAgICAgbGV0IHN0YXJ0ID0gTWF0aC5tYXgoMiwgdGhpcy5wYWdpbmF0aW9uQ29uZmlnLnBhZ2UgLSAxKTtcclxuICAgICAgbGV0IGVuZCA9IE1hdGgubWluKHRoaXMucGFnaW5hdGlvbkNvbmZpZy50b3RhbFBhZ2VzIC0gMSwgdGhpcy5wYWdpbmF0aW9uQ29uZmlnLnBhZ2UgKyAxKTtcclxuXHJcbiAgICAgIGZvciAobGV0IGkgPSBzdGFydDsgaSA8PSBlbmQ7IGkrKykge1xyXG4gICAgICAgIHBhZ2VzLnB1c2goaSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICh0aGlzLnBhZ2luYXRpb25Db25maWcucGFnZSA8IHRoaXMucGFnaW5hdGlvbkNvbmZpZy50b3RhbFBhZ2VzIC0gMikge1xyXG4gICAgICAgIHBhZ2VzLnB1c2goJy4uLicpO1xyXG4gICAgICB9XHJcbiAgICAgIHBhZ2VzLnB1c2godGhpcy5wYWdpbmF0aW9uQ29uZmlnLnRvdGFsUGFnZXMpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBwYWdlcztcclxuICB9XHJcblxyXG5cclxuICBzZWFyY2hUZXh0Rm9yRmlsdGVyRHJvcERvd24gPSAnJztcclxuICB0b2dnbGVDb2x1bW5JbkZpbHRlckRyb3Bkb3duKGNvbDogYW55KSB7XHJcblxyXG4gIH1cclxuXHJcbiAgcmVtb3ZlQ29sdW1uRnJvbUZpbHRlcihvcHRpb246IGFueSkge1xyXG5cclxuICB9XHJcblxyXG4gIGhhbmRsZUJhY2tzcGFjZShldmVudDogRXZlbnQpIHtcclxuICAgIC8vIElmIHNlYXJjaCBpcyBlbXB0eSwgcmVtb3ZlIGxhc3QgdGFnXHJcbiAgICBpZiAoIXRoaXMuc2VhcmNoVGV4dEZvckZpbHRlckRyb3BEb3duICYmIHRoaXMuc2VsZWN0ZWRGaWx0ZXJPcHRpb25zLmxlbmd0aCkge1xyXG4gICAgICBjb25zdCBsYXN0ID0gdGhpcy5zZWxlY3RlZEZpbHRlck9wdGlvbnNbdGhpcy5zZWxlY3RlZEZpbHRlck9wdGlvbnMubGVuZ3RoIC0gMV07XHJcbiAgICAgIHRoaXMudG9nZ2xlU2VsZWN0aW9uSW5GaWx0ZXIobGFzdCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBAVmlld0NoaWxkKCdmaWx0ZXJNZW51ZVNlYXJjaElucHV0JykgZmlsdGVyTWVudWVTZWFyY2hJbnB1dCE6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD5cclxuICBAVmlld0NoaWxkKCdmaWx0ZXJNZW51ZVRleHRjaElucHV0JykgZmlsdGVyTWVudWVUZXh0Y2hJbnB1dCE6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD5cclxuXHJcbiAgb3BlbkZpbHRlcm9uVGhyZWVEb3RzQ2xpY2soY29sOiBhbnkpIHtcclxuICAgIGlmIChjb2wudHlwZSA9PSAnaW1hZ2UnIHx8ICFjb2w/LnR5cGUpIHJldHVybjtcclxuICAgIHRoaXMuc2VsZWN0ZWRDb2x1bW5Gb3JGaWx0ZXIgPSBjb2w7XHJcbiAgICB0aGlzLmlzVGhyZWVEb3RzRmlsdGVyT3BlbiA9IHRydWU7XHJcbiAgICB0aGlzLmFkZEZpbHRlckNvbHVtbklucHV0ID0gJyc7XHJcbiAgICBpZiAoY29sLnR5cGUgPT09ICdkcm9wZG93bicpIHtcclxuICAgICAgdGhpcy5jdXJyZW50RmlsdGVyU2VsZWN0ZWRJZHMuY2xlYXIoKTtcclxuICAgICAgY29uc3Qgc2F2ZWRJZHMgPSBjb2w/LnF1ZXJ5Py5faWRzIHx8IFtdO1xyXG4gICAgICBzYXZlZElkcy5mb3JFYWNoKChpZDogc3RyaW5nKSA9PiB0aGlzLmN1cnJlbnRGaWx0ZXJTZWxlY3RlZElkcy5hZGQoaWQpKTtcclxuXHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRGaWx0ZXJPcHRpb25zID0gdGhpcy5zZWxlY3RlZENvbHVtbkZvckZpbHRlcj8uY29sdW1uX2Ryb3Bkb3duX3ZhbHVlLmZpbHRlcihcclxuICAgICAgICAob3B0aW9uOiBhbnkpID0+IHRoaXMuY3VycmVudEZpbHRlclNlbGVjdGVkSWRzLmhhcyhvcHRpb24/LmlkIHx8IG9wdGlvbj8uX2lkIHx8IG9wdGlvbilcclxuICAgICAgKTtcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgaWYgKHRoaXMuZmlsdGVyTWVudWVTZWFyY2hJbnB1dCkge1xyXG4gICAgICAgICAgdGhpcy5maWx0ZXJNZW51ZVNlYXJjaElucHV0Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sIDEwMCk7XHJcbiAgICB9IGVsc2UgaWYgKFsnc3RyaW5nJywgJ251bWJlcicsICdkYXRlJ10uaW5jbHVkZXMoY29sLnR5cGUpKSB7XHJcbiAgICAgIHRoaXMuZmlyc3RDb25kaXRpb24gPSBjb2wucXVlcnkuZmlyc3RfY29uZGl0aW9uID8gY29sLnF1ZXJ5LmZpcnN0X2NvbmRpdGlvbiA6IChjb2wudHlwZSA9PSAnZGF0ZScgPyAnZXF1YWwnIDogJ2NvbnRhaW4nKTtcclxuICAgICAgdGhpcy5maXJzdFZhbHVlID0gY29sPy5xdWVyeT8uZmlyc3RfdmFsdWUgfHwgJyc7XHJcbiAgICAgIHRoaXMuY29uZGl0aW9uID0gY29sPy5xdWVyeT8uY29uZGl0aW9uIHx8ICdub25lJztcclxuICAgICAgdGhpcy5zZWNvbmRDb25kaXRpb24gPSBjb2wucXVlcnkuZmlyc3RfY29uZGl0aW9uID8gY29sLnF1ZXJ5LmZpcnN0X2NvbmRpdGlvbiA6IChjb2wudHlwZSA9PSAnZGF0ZScgPyAnZXF1YWwnIDogJ2NvbnRhaW4nKTtcclxuICAgICAgdGhpcy5zZWNvbmRWYWx1ZSA9IGNvbD8ucXVlcnk/LnNlY29uZF92YWx1ZSB8fCAnJztcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5maWx0ZXJNZW51ZVRleHRjaElucHV0Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcclxuICAgICAgfSwgMTAwKTtcclxuICAgIH1cclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIGlzRmlsdGVyT3BlbiA9IGZhbHNlXHJcbiAgc2VsZWN0ZWRDb2x1bW5Gb3JGaWx0ZXI6IGFueTtcclxuICBzaG93RmlsdGVycyA9IHRoaXMuc2hvd1NpZGVNZW51ID8gZmFsc2UgOiBmYWxzZTtcclxuXHJcblxyXG4gIG9wZW5GaWx0ZXJGcm9tRGlzYWJsZWRTZWFyY2hlZElucHV0KGNvbDogYW55KSB7XHJcbiAgICBpZiAoY29sLnR5cGUgIT09ICdkcm9wZG93bicpIHJldHVybjtcclxuICAgIHRoaXMub3BlbkZpbHRlcihjb2wpO1xyXG4gIH1cclxuXHJcbiAgb3BlbkZpbHRlcihjb2w6IGFueSkge1xyXG4gICAgdGhpcy5hY3RpdmVGaWx0ZXJDZWxsID0gY29sO1xyXG4gICAgdGhpcy5hY3RpdmVDb2wgPSBudWxsXHJcbiAgICB0aGlzLmlzRmlsdGVyT3BlbiA9IHRydWU7XHJcbiAgICB0aGlzLnNlYXJjaFRleHRGb3JGaWx0ZXJEcm9wRG93biA9ICcnO1xyXG4gICAgdGhpcy5hZGRGaWx0ZXJDb2x1bW5JbnB1dCA9ICcnO1xyXG4gICAgdGhpcy5zZWxlY3RlZENvbHVtbkZvckZpbHRlciA9IGNvbDtcclxuXHJcbiAgICBpZiAoY29sLnR5cGUgPT09ICdkcm9wZG93bicpIHtcclxuICAgICAgdGhpcy5jdXJyZW50RmlsdGVyU2VsZWN0ZWRJZHMuY2xlYXIoKTtcclxuICAgICAgY29uc3Qgc2F2ZWRJZHMgPSBjb2w/LnF1ZXJ5Py5faWRzIHx8IFtdO1xyXG4gICAgICBzYXZlZElkcy5mb3JFYWNoKChpZDogc3RyaW5nKSA9PiB0aGlzLmN1cnJlbnRGaWx0ZXJTZWxlY3RlZElkcy5hZGQoaWQpKTtcclxuXHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRGaWx0ZXJPcHRpb25zID0gdGhpcy5zZWxlY3RlZENvbHVtbkZvckZpbHRlcj8uY29sdW1uX2Ryb3Bkb3duX3ZhbHVlPy5maWx0ZXIoXHJcbiAgICAgICAgKG9wdGlvbjogYW55KSA9PiB0aGlzLmN1cnJlbnRGaWx0ZXJTZWxlY3RlZElkcy5oYXMob3B0aW9uPy5pZCB8fCBvcHRpb24/Ll9pZCB8fCBvcHRpb24pXHJcbiAgICAgICk7XHJcbiAgICB9IGVsc2UgaWYgKFsnc3RyaW5nJywgJ251bWJlcicsICdkYXRlJ10uaW5jbHVkZXMoY29sLnR5cGUpKSB7XHJcbiAgICAgIHRoaXMuZmlyc3RDb25kaXRpb24gPSBjb2w/LnF1ZXJ5Py5maXJzdF9jb25kaXRpb24gfHwgJ2NvbnRhaW4nO1xyXG4gICAgICB0aGlzLmZpcnN0VmFsdWUgPSBjb2w/LnF1ZXJ5Py5maXJzdF92YWx1ZSB8fCAnJztcclxuICAgICAgdGhpcy5jb25kaXRpb24gPSBjb2w/LnF1ZXJ5Py5jb25kaXRpb24gfHwgJ25vbmUnO1xyXG4gICAgICB0aGlzLnNlY29uZENvbmRpdGlvbiA9IGNvbD8ucXVlcnk/LnNlY29uZF9jb25kaXRpb24gfHwgJ2NvbnRhaW4nO1xyXG4gICAgICB0aGlzLnNlY29uZFZhbHVlID0gY29sPy5xdWVyeT8uc2Vjb25kX3ZhbHVlIHx8ICcnO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcblxyXG4gIGZpcnN0VmFsdWU6IGFueSA9ICcnO1xyXG4gIGZpcnN0Q29uZGl0aW9uID0gJyc7XHJcbiAgc2Vjb25kVmFsdWU6IGFueSA9ICcnO1xyXG4gIHNlY29uZENvbmRpdGlvbiA9IG51bGw7XHJcbiAgY29uZGl0aW9uID0gJyc7XHJcblxyXG4gIHJlc2V0VGV4dEZpbHRlckNoYW5nZXMoKSB7XHJcbiAgICB0aGlzLmZpcnN0Q29uZGl0aW9uID0gJ2NvbnRhaW4nO1xyXG4gICAgdGhpcy5maXJzdFZhbHVlID0gJyc7XHJcbiAgICB0aGlzLmNvbmRpdGlvbiA9ICdub25lJztcclxuICAgIHRoaXMuc2Vjb25kQ29uZGl0aW9uID0gbnVsbDtcclxuICAgIHRoaXMuc2Vjb25kVmFsdWUgPSAnJztcclxuICAgIHRoaXMuaXNGaWx0ZXJPcGVuID0gZmFsc2U7XHJcbiAgICB0aGlzLmlzQWN0aXZlRmlsdGVyT3BlbiA9IGZhbHNlO1xyXG4gICAgdGhpcy5hY3RpdmVUb3BCdXR0b24gPSAnJztcclxuICB9XHJcblxyXG4gIHRvZ2dsZUFsbFZhbHVzU2VsZWN0aW9uSW5Ecm9wZG93bkZpbHRlcihjb2x1bW46IGFueSkge1xyXG5cclxuICB9XHJcblxyXG5cclxuICBzZWxlY3RlZEZpbHRlck9wdGlvbnM6IGFueVtdID0gW11cclxuXHJcbiAgY3VycmVudEZpbHRlclNlbGVjdGVkSWRzID0gbmV3IFNldDxzdHJpbmc+KCk7XHJcblxyXG4gIHRvZ2dsZVNlbGVjdGlvbkluRmlsdGVyKG9wdGlvbjogYW55KSB7XHJcbiAgICBkZWJ1Z2dlclxyXG4gICAgY29uc3QgaWQgPSBvcHRpb24uaWQgfHwgb3B0aW9uLl9pZCB8fCBvcHRpb247XHJcbiAgICBpZiAodGhpcy5jdXJyZW50RmlsdGVyU2VsZWN0ZWRJZHMuaGFzKGlkKSkge1xyXG4gICAgICB0aGlzLmN1cnJlbnRGaWx0ZXJTZWxlY3RlZElkcy5kZWxldGUoaWQpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5jdXJyZW50RmlsdGVyU2VsZWN0ZWRJZHMuYWRkKGlkKTtcclxuICAgIH1cclxuICAgIHRoaXMuc2VsZWN0ZWRGaWx0ZXJPcHRpb25zID0gdGhpcy5zZWxlY3RlZENvbHVtbkZvckZpbHRlcj8uY29sdW1uX2Ryb3Bkb3duX3ZhbHVlLmZpbHRlcigob3B0aW9uOiBhbnkpID0+IHRoaXMuY3VycmVudEZpbHRlclNlbGVjdGVkSWRzLmhhcyhvcHRpb24uaWQgfHwgb3B0aW9uLl9pZCB8fCBvcHRpb24pKVxyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgcmVzZXRGaWx0ZXJDaGFuZ2VzKCkge1xyXG4gICAgdGhpcy5pc0ZpbHRlck9wZW4gPSBmYWxzZTtcclxuICAgIHRoaXMuY3VycmVudEZpbHRlclNlbGVjdGVkSWRzLmNsZWFyKCk7XHJcbiAgICB0aGlzLnNlbGVjdGVkRmlsdGVyT3B0aW9ucyEubGVuZ3RoID0gMDtcclxuICAgIHRoaXMuaXNBY3RpdmVGaWx0ZXJPcGVuID0gZmFsc2U7XHJcbiAgICB0aGlzLmFjdGl2ZVRvcEJ1dHRvbiA9ICcnO1xyXG4gICAgLy8gY29uc3QgZmlsdGVyZWRDb2x1bW5zID0gdGhpcy5jb21tb25TZXZpY2UuZ2V0RmlsdGVyc0Zyb21Db2x1bW5zKHRoaXMuY29sdW1ucyk7XHJcbiAgICAvLyBjb25zb2xlLmxvZyhcIkZpbHRlcmVkIENvbHVtbnMgQXJlOiBcIiwgZmlsdGVyZWRDb2x1bW5zKTtcclxuICB9XHJcblxyXG4gIGFwcGx5RHJvcGRvd25GaWx0ZXIoKSB7XHJcbiAgICB0aGlzLmlzRmlsdGVyT3BlbiA9IGZhbHNlO1xyXG4gICAgdGhpcy5pc0FjdGl2ZUZpbHRlck9wZW4gPSBmYWxzZTtcclxuICAgIHRoaXMuYWN0aXZlVG9wQnV0dG9uID0gJyc7XHJcbiAgICB0aGlzLmFjdGl2ZUZpbHRlckNlbGwgPSBudWxsO1xyXG4gICAgdGhpcy5pc1RocmVlRG90c0ZpbHRlck9wZW4gPSBmYWxzZTtcclxuICAgIGNvbnN0IGZpbmRDb2x1bW4gPSAoY29sdW1uczogYW55W10sIGZpZWxkOiBzdHJpbmcpOiBhbnkgPT4ge1xyXG4gICAgICBmb3IgKGNvbnN0IGNvbCBvZiBjb2x1bW5zKSB7XHJcbiAgICAgICAgaWYgKGNvbC5maWVsZCA9PT0gZmllbGQpIHJldHVybiBjb2w7XHJcbiAgICAgICAgaWYgKGNvbC5jaGlsZHJlbiAmJiBjb2wuY2hpbGRyZW4ubGVuZ3RoKSB7XHJcbiAgICAgICAgICBjb25zdCBmb3VuZCA9IGZpbmRDb2x1bW4oY29sLmNoaWxkcmVuLCBmaWVsZCk7XHJcbiAgICAgICAgICBpZiAoZm91bmQpIHJldHVybiBmb3VuZDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IGNvbHVtbiA9IGZpbmRDb2x1bW4odGhpcy5jb2x1bW5zLCB0aGlzLnNlbGVjdGVkQ29sdW1uRm9yRmlsdGVyLmZpZWxkKTtcclxuICAgIGlmIChjb2x1bW4pIHtcclxuICAgICAgaWYgKGNvbHVtbi50eXBlID09PSAnZHJvcGRvd24nKSB7XHJcbiAgICAgICAgY29sdW1uLnF1ZXJ5ID0gY29sdW1uLnF1ZXJ5IHx8IHt9O1xyXG4gICAgICAgIGNvbHVtbi5xdWVyeS5faWRzID0gY29sdW1uLnF1ZXJ5Ll9pZHMgfHwgW107XHJcblxyXG4gICAgICAgIC8vIFJlbW92ZSBzdGFsZSBJRHMgKG5vdCBwcmVzZW50IGluIFNldClcclxuICAgICAgICBjb2x1bW4ucXVlcnkuX2lkcyA9IGNvbHVtbi5xdWVyeS5faWRzLmZpbHRlcihcclxuICAgICAgICAgIChpZDogYW55KSA9PiB0aGlzLmN1cnJlbnRGaWx0ZXJTZWxlY3RlZElkcy5oYXMoaWQpICAgLy8gPC0tIHVzZSAuaGFzKClcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICAvLyBBZGQgbmV3IG9uZXMgaWYgbWlzc2luZ1xyXG4gICAgICAgIHRoaXMuY3VycmVudEZpbHRlclNlbGVjdGVkSWRzLmZvckVhY2goaWQgPT4ge1xyXG4gICAgICAgICAgaWYgKCFjb2x1bW4ucXVlcnkuX2lkcy5pbmNsdWRlcyhpZCkpIHtcclxuICAgICAgICAgICAgY29sdW1uLnF1ZXJ5Ll9pZHMucHVzaChpZCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICB9IGVsc2UgaWYgKFsnc3RyaW5nJywgJ251bWJlcicsICdkYXRlJ10uaW5jbHVkZXMoY29sdW1uLnR5cGUpKSB7XHJcbiAgICAgICAgY29sdW1uLnF1ZXJ5ID0ge1xyXG4gICAgICAgICAgZmlyc3RfY29uZGl0aW9uOiB0aGlzLmZpcnN0Q29uZGl0aW9uIHx8ICdjb250YWluJyxcclxuICAgICAgICAgIGZpcnN0X3ZhbHVlOiB0aGlzLmZpcnN0VmFsdWUgfHwgbnVsbCxcclxuICAgICAgICAgIGNvbmRpdGlvbjogdGhpcy5zZWNvbmRWYWx1ZSA/IHRoaXMuY29uZGl0aW9uOiAnbm9uZScsXHJcbiAgICAgICAgICBzZWNvbmRfY29uZGl0aW9uOiAgdGhpcy5zZWNvbmRWYWx1ZSA/IHRoaXMuc2Vjb25kQ29uZGl0aW9uIDogbnVsbCxcclxuICAgICAgICAgIHNlY29uZF92YWx1ZTogdGhpcy5zZWNvbmRWYWx1ZSB8fCBudWxsLFxyXG4gICAgICAgIH07XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBmaWx0ZXIgPSB7XHJcbiAgICAgIGZpZWxkOiBjb2x1bW4uZmllbGQsXHJcbiAgICAgIHNlYXJjaDogY29sdW1uLnNlYXJjaCxcclxuICAgICAgcXVlcnk6IGNvbHVtbi5xdWVyeSxcclxuICAgICAgdHlwZTogY29sdW1uLnR5cGUsXHJcbiAgICAgIF9pZHM6IGNvbHVtbi5faWRzXHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IGV4aXN0aW5nSW5kZXggPSB0aGlzLmZpbHRlcnNDb25maWcuZmluZEluZGV4KGYgPT4gZi5maWVsZCA9PT0gY29sdW1uLmZpZWxkKTtcclxuXHJcbiAgICBpZiAoZXhpc3RpbmdJbmRleCAhPT0gLTEpIHtcclxuICAgICAgdGhpcy5maWx0ZXJzQ29uZmlnW2V4aXN0aW5nSW5kZXhdID0gZmlsdGVyO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5maWx0ZXJzQ29uZmlnLnB1c2goZmlsdGVyKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmlzRmlsdGVyT3BlbiA9IGZhbHNlO1xyXG4gICAgdGhpcy5hY3RpdmVDb2wgPSBudWxsO1xyXG4gICAgdGhpcy5pc0FjdGl2ZUZpbHRlck9wZW4gPSBmYWxzZTtcclxuICAgIHRoaXMuYWN0aXZlVG9wQnV0dG9uID0gJyc7XHJcbiAgICB0aGlzLmFjdGl2ZUZpbHRlckNlbGwgPSBudWxsO1xyXG4gICAgdGhpcy5pc1RocmVlRG90c0ZpbHRlck9wZW4gPSBmYWxzZTtcclxuICAgIGNvbnN0IHNlbmREYXRhID0ge1xyXG4gICAgICBjb2x1bW5zOiB0aGlzLmNsZWFuQ29sdW1ucyh0aGlzLmNvbHVtbnMpLFxyXG4gICAgICBmaWx0ZXJzOiB0aGlzLmNsZWFuRmlsdGVyZENvbHVtbnMoKSxcclxuICAgICAgbm9fb2ZfcmVjb3JkczogTnVtYmVyKHRoaXMucGFnaW5hdGlvbkNvbmZpZy5saW1pdCksXHJcbiAgICAgIHR5cGU6IHRoaXMudGFibGVUeXBlLFxyXG4gICAgfTtcclxuICAgIHRoaXMuY3JlYXRlVXBkYXRlQ29uZmlnTGlzdGluZy5lbWl0KHNlbmREYXRhKTtcclxuXHJcbiAgICBjb25zdCBmaWx0ZXJzID0gdGhpcy5jbGVhbkZpbHRlcmRDb2x1bW5zKClcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLmZpbHRlck9wdGlvbnMuZW1pdChmaWx0ZXJzKTtcclxuICAgIH0sIDIwMCk7XHJcbiAgfVxyXG5cclxuICAvLyBhcHBseUZpbHRlckZyb21GaWx0ZXJSb3coY29sdW1uOiBhbnkpIHtcclxuICAvLyAgIGNvbnN0IGZpbHRlciA9IHtcclxuICAvLyAgICAgZmllbGQ6IGNvbHVtbi5maWVsZCxcclxuICAvLyAgICAgc2VhcmNoOiBjb2x1bW4uc2VhcmNoLFxyXG4gIC8vICAgICBxdWVyeTogY29sdW1uLnF1ZXJ5LFxyXG4gIC8vICAgICB0eXBlOiBjb2x1bW4udHlwZSxcclxuICAvLyAgICAgX2lkczogY29sdW1uLl9pZHNcclxuICAvLyAgIH07XHJcbiAgLy8gICB0aGlzLmZpbHRlcnNDb25maWcucHVzaChmaWx0ZXIpO1xyXG4gIC8vICAgdGhpcy5pc0ZpbHRlck9wZW4gPSBmYWxzZTtcclxuICAvLyAgIHRoaXMuaXNBY3RpdmVGaWx0ZXJPcGVuID0gZmFsc2U7XHJcbiAgLy8gICB0aGlzLmFjdGl2ZVRvcEJ1dHRvbiA9ICcnO1xyXG4gIC8vICAgdGhpcy5hY3RpdmVGaWx0ZXJDZWxsID0gbnVsbDtcclxuICAvLyAgIHRoaXMuaXNUaHJlZURvdHNGaWx0ZXJPcGVuID0gZmFsc2U7XHJcbiAgLy8gICBjb25zdCBmaWx0ZXJlZENvbHVtbnMgPSB0aGlzLmNvbW1vblNldmljZS5nZXRGaWx0ZXJzRnJvbUNvbHVtbnModGhpcy5jb2x1bW5zLCB0aGlzLmZpbHRlcnNDb25maWcpO1xyXG4gIC8vICAgdGhpcy5maWx0ZXJPcHRpb25zLmVtaXQoZmlsdGVyZWRDb2x1bW5zKTtcclxuICAvLyB9XHJcblxyXG4gIGlzRmlsdGVyQXBwbGllZE9uQ29sdW1uKGNvbHVtbjogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5maWx0ZXJzQ29uZmlnLnNvbWUoY29sID0+IGNvbC5maWVsZCA9PT0gY29sdW1uLmZpZWxkKTtcclxuICB9XHJcblxyXG4gIC8vIFNpZGUgRmlsdGVycyBMb2dpYyBpcyBoZXJlXHJcblxyXG4gIHRvZ2dsZVNlbGVjdEFsbFNpZGVGaWx0ZXJzKGNvbDogYW55LCBldmVudDogRXZlbnQpIHtcclxuICAgIGNvbnN0IGNoZWNrZWQgPSAoZXZlbnQ/LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KT8uY2hlY2tlZDtcclxuXHJcbiAgICBpZiAoY2hlY2tlZCkge1xyXG4gICAgICBjb2wucXVlcnkuX2lkcyA9IGNvbD8uY29sdW1uX2Ryb3Bkb3duX3ZhbHVlPy5tYXAoXHJcbiAgICAgICAgKG9wdDogYW55KSA9PiBvcHQuaWQgfHwgb3B0Ll9pZCB8fCBvcHRcclxuICAgICAgKTtcclxuICAgICAgdGhpcy5jdXJyZW50RmlsdGVyU2VsZWN0ZWRJZHMgPSBuZXcgU2V0PHN0cmluZz4oY29sLnF1ZXJ5Ll9pZHMpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29sLnF1ZXJ5Ll9pZHMgPSBbXTtcclxuICAgICAgdGhpcy5jdXJyZW50RmlsdGVyU2VsZWN0ZWRJZHMuY2xlYXIoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICBpc0FsbFNpZGVGaWx0ZXJPcHRpb25zU2VsZWN0ZWQoY29sOiBhbnkpOiBib29sZWFuIHtcclxuICAgIGlmICghY29sPy5xdWVyeT8uX2lkcyB8fCAhQXJyYXkuaXNBcnJheShjb2wuY29sdW1uX2Ryb3Bkb3duX3ZhbHVlKSkgcmV0dXJuIGZhbHNlO1xyXG4gICAgcmV0dXJuIGNvbC5xdWVyeS5faWRzLmxlbmd0aCA9PT0gY29sLmNvbHVtbl9kcm9wZG93bl92YWx1ZS5sZW5ndGg7XHJcbiAgfVxyXG5cclxuICBvbk9wdGlvblRvZ2dsZShjb2w6IGFueSwgb3B0aW9uOiBhbnkpIHtcclxuICAgIGNvbnN0IG9wdGlvbklkID0gb3B0aW9uLmlkIHx8IG9wdGlvbi5faWQgfHwgb3B0aW9uO1xyXG4gICAgaWYgKCFjb2wucXVlcnkuX2lkcykge1xyXG4gICAgICBjb2wucXVlcnkuX2lkcyA9IFtdO1xyXG4gICAgfVxyXG4gICAgY29uc3QgaWR4ID0gY29sLnF1ZXJ5Ll9pZHMuaW5kZXhPZihvcHRpb25JZCk7XHJcbiAgICBpZiAoaWR4ID4gLTEpIHtcclxuICAgICAgY29sLnF1ZXJ5Ll9pZHMuc3BsaWNlKGlkeCwgMSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb2wucXVlcnkuX2lkcy5wdXNoKG9wdGlvbklkKTtcclxuICAgIH1cclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG5cclxuXHJcblxyXG4gIHJlc2V0U2lkZUZpbHRlcihjb2w6IGFueSkge1xyXG4gICAgY29uc3QgcmVzZXRDb2x1bW5SZWN1cnNpdmVseSA9IChjb2x1bW5zOiBhbnlbXSk6IGJvb2xlYW4gPT4ge1xyXG4gICAgICBmb3IgKGNvbnN0IGNvbHVtbiBvZiBjb2x1bW5zKSB7XHJcbiAgICAgICAgaWYgKGNvbHVtbi5maWVsZCA9PT0gY29sLmZpZWxkKSB7XHJcbiAgICAgICAgICBjb2x1bW4ucXVlcnkgPSB7XHJcbiAgICAgICAgICAgIF9pZHM6IFtdLFxyXG4gICAgICAgICAgICBmaXJzdF9jb25kaXRpb246ICdjb250YWluJyxcclxuICAgICAgICAgICAgZmlyc3RfdmFsdWU6IG51bGwsXHJcbiAgICAgICAgICAgIGNvbmRpdGlvbjogJ25vbmUnLFxyXG4gICAgICAgICAgICBzZWNvbmRfY29uZGl0aW9uOiAnY29udGFpbicsXHJcbiAgICAgICAgICAgIHNlY29uZF92YWx1ZTogbnVsbFxyXG4gICAgICAgICAgfTtcclxuICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShjb2x1bW4/LmNoaWxkcmVuKSAmJiBjb2x1bW4/LmNoaWxkcmVuPy5sZW5ndGgpIHtcclxuICAgICAgICAgIGlmIChyZXNldENvbHVtblJlY3Vyc2l2ZWx5KGNvbHVtbi5jaGlsZHJlbikpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH07XHJcbiAgICByZXNldENvbHVtblJlY3Vyc2l2ZWx5KHRoaXMuY29sdW1ucyk7XHJcbiAgICBjb25zdCBpbmRleCA9IHRoaXMuZmlsdGVyc0NvbmZpZy5maW5kSW5kZXgoKGY6IGFueSkgPT4gZi5maWVsZCA9PT0gY29sLmZpZWxkKTtcclxuICAgIGlmIChpbmRleCAhPT0gLTEpIHtcclxuICAgICAgdGhpcy5maWx0ZXJzQ29uZmlnLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmFjdGl2ZUZpbHRlckNlbGwgPSBudWxsO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgY29uc3Qgc2VuZERhdGEgPSB7XHJcbiAgICAgIGNvbHVtbnM6IHRoaXMuY2xlYW5Db2x1bW5zKHRoaXMuY29sdW1ucyksXHJcbiAgICAgIGZpbHRlcnM6IHRoaXMuY2xlYW5GaWx0ZXJkQ29sdW1ucygpLFxyXG4gICAgICBub19vZl9yZWNvcmRzOiBOdW1iZXIodGhpcy5wYWdpbmF0aW9uQ29uZmlnLmxpbWl0KSxcclxuICAgICAgdHlwZTogdGhpcy50YWJsZVR5cGUsXHJcbiAgICB9O1xyXG4gICAgdGhpcy5jcmVhdGVVcGRhdGVDb25maWdMaXN0aW5nLmVtaXQoc2VuZERhdGEpO1xyXG5cclxuICAgIGNvbnN0IGZpbHRlcnMgPSB0aGlzLmNsZWFuRmlsdGVyZENvbHVtbnMoKVxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuZmlsdGVyT3B0aW9ucy5lbWl0KGZpbHRlcnMpO1xyXG4gICAgfSwgMjAwKTtcclxuICB9XHJcblxyXG5cclxuICBjbGVhckFsbEZpbHRlcnMoKSB7XHJcbiAgICB0aGlzLnRhYmxlVmlldz8uZm9yRWFjaCgoZWxlKSA9PiB7IGVsZS5pc190ZW1wID0gZmFsc2UgfSk7XHJcbiAgICBjb25zdCByZXNldEFsbFJlY3Vyc2l2ZWx5ID0gKGNvbHVtbnM6IGFueVtdKSA9PiB7XHJcbiAgICAgIGZvciAoY29uc3QgY29sdW1uIG9mIGNvbHVtbnMpIHtcclxuICAgICAgICBpZiAoY29sdW1uLnF1ZXJ5KSB7XHJcbiAgICAgICAgICBjb2x1bW4ucXVlcnkgPSB7XHJcbiAgICAgICAgICAgIF9pZHM6IFtdLFxyXG4gICAgICAgICAgICBmaXJzdF9jb25kaXRpb246ICdjb250YWluJyxcclxuICAgICAgICAgICAgZmlyc3RfdmFsdWU6IG51bGwsXHJcbiAgICAgICAgICAgIGNvbmRpdGlvbjogJ25vbmUnLFxyXG4gICAgICAgICAgICBzZWNvbmRfY29uZGl0aW9uOiAnY29udGFpbicsXHJcbiAgICAgICAgICAgIHNlY29uZF92YWx1ZTogbnVsbFxyXG4gICAgICAgICAgfTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoY29sdW1uPy5jaGlsZHJlbikgJiYgY29sdW1uLmNoaWxkcmVuLmxlbmd0aCkge1xyXG4gICAgICAgICAgcmVzZXRBbGxSZWN1cnNpdmVseShjb2x1bW4uY2hpbGRyZW4pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfTtcclxuICAgIHJlc2V0QWxsUmVjdXJzaXZlbHkodGhpcy5jb2x1bW5zKTtcclxuICAgIHRoaXMuYWN0aXZlRmlsdGVyQ2VsbCA9IG51bGw7XHJcbiAgICB0aGlzLmZpbHRlcnNDb25maWcgPSBbXTtcclxuICAgIHRoaXMucmVmcmVzaFByZXZpZXdDb2x1bW5zKCk7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB0aGlzLnJvd1NoYWRpbmdFbmFibGVkID0gZmFsc2U7XHJcbiAgICB0aGlzLnNob3dWZXJ0aWNhbEJvcmRlciA9IGZhbHNlO1xyXG4gICAgdGhpcy5mb250RmFpbWx5ID0gJ0ludGVyJztcclxuICAgIHRoaXMuaGVhZGVyVGV4dEZvbnRzU2l6ZSA9IDE0O1xyXG4gICAgdGhpcy5zZWxlY3RlZFRhYmxlTGF5b3V0ID0gJ21lZGl1bWQnO1xyXG4gICAgdGhpcy5ib2R5VGV4dEZvbnRzU2l6ZSA9IDE0O1xyXG4gICAgdGhpcy5nbG9iYWxTZWFyY2hUZXh0ID0gJyc7XHJcbiAgICBjb25zdCBldmVudCA9IHsgZXZlbnRUeXBlOiAncmVzZXQnLCBkYXRhOiB7IHRhYmxlVHlwZTogdGhpcy50YWJsZVR5cGUgfSB9O1xyXG4gICAgY29uc3Qgc2VuZERhdGEgPSB7XHJcbiAgICAgIGNvbHVtbnM6IHRoaXMuY2xlYW5Db2x1bW5zKHRoaXMuY29sdW1ucyksXHJcbiAgICAgIGZpbHRlcnM6IFtdLFxyXG4gICAgICBub19vZl9yZWNvcmRzOiBOdW1iZXIodGhpcy5wYWdpbmF0aW9uQ29uZmlnLmxpbWl0KSxcclxuICAgICAgdHlwZTogdGhpcy50YWJsZVR5cGUsXHJcbiAgICB9O1xyXG4gICAgdGhpcy5jcmVhdGVVcGRhdGVDb25maWdMaXN0aW5nLmVtaXQoc2VuZERhdGEpO1xyXG5cclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICBjb25zdCBmaWx0ZXJlZENvbHVtbnMgPSB0aGlzLmNsZWFuRmlsdGVyZENvbHVtbnMoKTtcclxuICAgICAgdGhpcy5nZW5lcmljRXZlbnQuZW1pdChldmVudCk7XHJcbiAgICAgIHRoaXMuZmlsdGVyT3B0aW9ucy5lbWl0KGZpbHRlcmVkQ29sdW1ucyk7XHJcbiAgICB9LCAzMDApO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcblxyXG4gIGFwcGx5U2lkZUZpbHRlcihjb2x1bW46IGFueSkge1xyXG4gICAgaWYgKCFjb2x1bW4ucXVlcnkuZmlyc3RfdmFsdWUgJiYgIWNvbHVtbj8ucXVlcnk/Ll9pZHMubGVuZ3RoKSByZXR1cm47XHJcbiAgICBjb25zdCBmaWx0ZXIgPSB7XHJcbiAgICAgIGZpZWxkOiBjb2x1bW4uZmllbGQsXHJcbiAgICAgIHNlYXJjaDogY29sdW1uLnNlYXJjaCxcclxuICAgICAgcXVlcnk6IGNvbHVtbi5xdWVyeSxcclxuICAgICAgdHlwZTogY29sdW1uLnR5cGUsXHJcbiAgICAgIF9pZHM6IGNvbHVtbi5faWRzIHx8IFtdXHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IGV4aXN0aW5nSW5kZXggPSB0aGlzLmZpbHRlcnNDb25maWcuZmluZEluZGV4KGYgPT4gZi5maWVsZCA9PT0gY29sdW1uLmZpZWxkKTtcclxuXHJcbiAgICBpZiAoZXhpc3RpbmdJbmRleCAhPT0gLTEpIHtcclxuICAgICAgLy8gUmVwbGFjZSB0aGUgZXhpc3RpbmcgZmlsdGVyXHJcbiAgICAgIHRoaXMuZmlsdGVyc0NvbmZpZ1tleGlzdGluZ0luZGV4XSA9IGZpbHRlcjtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIC8vIEFkZCBuZXcgZmlsdGVyXHJcbiAgICAgIHRoaXMuZmlsdGVyc0NvbmZpZy5wdXNoKGZpbHRlcik7XHJcbiAgICB9XHJcbiAgICBjb25zdCBzZW5kRGF0YSA9IHtcclxuICAgICAgY29sdW1uczogdGhpcy5jbGVhbkNvbHVtbnModGhpcy5jb2x1bW5zKSxcclxuICAgICAgZmlsdGVyczogdGhpcy5jb21tb25TZXZpY2UuZ2V0RmlsdGVyc0Zyb21Db2x1bW5zKHRoaXMuY29sdW1ucywgdGhpcy5maWx0ZXJzQ29uZmlnKS5tYXAoKHsgcXVlcnksIC4uLnJlc3QgfSkgPT4ge1xyXG4gICAgICAgIGlmIChxdWVyeSkge1xyXG4gICAgICAgICAgZGVsZXRlIHF1ZXJ5Ll9fdHlwZW5hbWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICBxdWVyeSxcclxuICAgICAgICAgIC4uLnJlc3QsXHJcbiAgICAgICAgfVxyXG4gICAgICB9KSxcclxuICAgICAgbm9fb2ZfcmVjb3JkczogTnVtYmVyKHRoaXMucGFnaW5hdGlvbkNvbmZpZy5saW1pdCksXHJcbiAgICAgIHR5cGU6IHRoaXMudGFibGVUeXBlLFxyXG4gICAgfTtcclxuICAgIHRoaXMuY3JlYXRlVXBkYXRlQ29uZmlnTGlzdGluZy5lbWl0KHNlbmREYXRhKTtcclxuXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgY29uc3QgZmlsdGVyZWRDb2x1bW5zID0gdGhpcy5jbGVhbkZpbHRlcmRDb2x1bW5zKCk7XHJcbiAgICAgIHRoaXMuZmlsdGVyT3B0aW9ucy5lbWl0KGZpbHRlcmVkQ29sdW1ucyk7XHJcbiAgICB9LCAyMDApO1xyXG4gIH1cclxuXHJcblxyXG4gIHJlbW92ZVNpZGVGaWx0ZXIoY29sdW1uOiBhbnkpIHtcclxuICAgIGlmICghY29sdW1uLnF1ZXJ5LmZpcnN0X3ZhbHVlICYmICFjb2x1bW4/LnF1ZXJ5Py5faWRzLmxlbmd0aCkgcmV0dXJuO1xyXG5cclxuICAgIGNvbnN0IGV4aXN0aW5nSW5kZXggPSB0aGlzLmZpbHRlcnNDb25maWcuZmluZEluZGV4KGYgPT4gZi5maWVsZCA9PT0gY29sdW1uLmZpZWxkKTtcclxuICAgIGlmIChleGlzdGluZ0luZGV4ICE9PSAtMSkge1xyXG4gICAgICB0aGlzLmZpbHRlcnNDb25maWcuc3BsaWNlKGV4aXN0aW5nSW5kZXgsIDEpO1xyXG4gICAgfVxyXG4gICAgY29uc3Qgc2VuZERhdGEgPSB7XHJcbiAgICAgIGNvbHVtbnM6IHRoaXMuY2xlYW5Db2x1bW5zKHRoaXMuY29sdW1ucyksXHJcbiAgICAgIGZpbHRlcnM6IHRoaXMuY29tbW9uU2V2aWNlLmdldEZpbHRlcnNGcm9tQ29sdW1ucyh0aGlzLmNvbHVtbnMsIHRoaXMuZmlsdGVyc0NvbmZpZykubWFwKCh7IHF1ZXJ5LCAuLi5yZXN0IH0pID0+IHtcclxuICAgICAgICBpZiAocXVlcnkpIHtcclxuICAgICAgICAgIGRlbGV0ZSBxdWVyeS5fX3R5cGVuYW1lO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgcXVlcnksXHJcbiAgICAgICAgICAuLi5yZXN0LFxyXG4gICAgICAgIH07XHJcbiAgICAgIH0pLFxyXG4gICAgICBub19vZl9yZWNvcmRzOiBOdW1iZXIodGhpcy5wYWdpbmF0aW9uQ29uZmlnLmxpbWl0KSxcclxuICAgICAgdHlwZTogdGhpcy50YWJsZVR5cGUsXHJcbiAgICB9O1xyXG4gICAgdGhpcy5jcmVhdGVVcGRhdGVDb25maWdMaXN0aW5nLmVtaXQoc2VuZERhdGEpO1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGNvbnN0IGZpbHRlcmVkQ29sdW1ucyA9IHRoaXMuY2xlYW5GaWx0ZXJkQ29sdW1ucygpO1xyXG4gICAgICB0aGlzLmZpbHRlck9wdGlvbnMuZW1pdChmaWx0ZXJlZENvbHVtbnMpO1xyXG4gICAgfSwgMjAwKTtcclxuICB9XHJcblxyXG4gIGNvbGxhcHNlQWxsRXhwYW5kZWRDZWxscygpIHtcclxuICAgIGlmICh0aGlzLmV4cGFuZGVkQ2VsbHM/LnNpemUgPiAwKSB7XHJcbiAgICAgIHRoaXMuZXhwYW5kZWRDZWxscy5jbGVhcigpO1xyXG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcblxyXG4gIHRyYWNrQnlGaWVsZChpbmRleDogbnVtYmVyLCBjb2w6IGFueSk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gY29sPy5maWVsZDtcclxuICB9XHJcblxyXG4gIGdldCBhY3RpdmVGaWx0ZXJlZENvbHVtbnMoKTogYW55W10ge1xyXG4gICAgY29uc3QgY29sbGVjdEZpbHRlcmVkID0gKGNvbHVtbnM6IGFueVtdKTogYW55W10gPT4ge1xyXG4gICAgICBsZXQgcmVzdWx0OiBhbnlbXSA9IFtdO1xyXG5cclxuICAgICAgY29sdW1ucy5mb3JFYWNoKGNvbCA9PiB7XHJcbiAgICAgICAgaWYgKGNvbC5jaGlsZHJlbiAmJiBjb2wuY2hpbGRyZW4ubGVuZ3RoKSB7XHJcbiAgICAgICAgICByZXN1bHQgPSByZXN1bHQuY29uY2F0KGNvbGxlY3RGaWx0ZXJlZChjb2wuY2hpbGRyZW4pKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IGlzSW5GaWx0ZXJzQ29uZmlnID0gdGhpcy5maWx0ZXJzQ29uZmlnLnNvbWUoZiA9PiBmLmZpZWxkID09PSBjb2wuZmllbGQpO1xyXG4gICAgICAgIGlmIChpc0luRmlsdGVyc0NvbmZpZykge1xyXG4gICAgICAgICAgcmVzdWx0LnB1c2goY29sKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgIH07XHJcblxyXG4gICAgcmV0dXJuIGNvbGxlY3RGaWx0ZXJlZCh0aGlzLmNvbHVtbnMpO1xyXG4gIH1cclxuXHJcblxyXG5cclxuXHJcbiAgdG9nZ2xlT3BlbkZpbHRlcigpIHtcclxuICAgIHRoaXMuc2hvd0ZpbHRlcnMgPSAhdGhpcy5zaG93RmlsdGVycztcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG5cclxuXHJcblxyXG4gIC8vIENlbGwgRWRpdGluZyBXb3JrIHN0YXJ0IGhlcmVcclxuXHJcbiAgZWRpdGluZ0tleTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcbiAgYWN0aXZlQ2VsbDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIHNldEFjdGl2ZUNlbGwocm93OiBhbnksIGNvbHVtbjogYW55KSB7XHJcbiAgICB0aGlzLmFjdGl2ZUNlbGwgPSAoKHJvdy5pZCB8fCByb3cuX2lkKSArICctJyArIGNvbHVtbi5maWVsZCk7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBpc0FjdGl2ZUNlbGwocm93OiBhbnksIGNvbDogYW55KTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5hY3RpdmVDZWxsID09PSAoKHJvdy5pZCB8fCByb3cuX2lkKSArICctJyArIGNvbC5maWVsZCk7XHJcbiAgfVxyXG5cclxuICBAVmlld0NoaWxkKCd0ZXh0QXJlYWRJbnB1dCcpIHRleHRBcmVhZElucHV0ITogRWxlbWVudFJlZjxIVE1MVGV4dEFyZWFFbGVtZW50PjtcclxuICBlbmFibGVFZGl0KHJvdzogYW55LCBjb2x1bW46IGFueSwgY2xpY2tlZEZyb21EZXRhaWxzQm94ID0gZmFsc2UsIGNlbGxDb250YWluZXI/OiBIVE1MRWxlbWVudCkge1xyXG4gICAgdGhpcy5lZGl0aW5Ecm9wZG93blNlYXJjaCA9ICcnO1xyXG4gICAgaWYgKHJvdz8uX192aXJ0dWFsSW5kZXggPT0gMCkgcmV0dXJuO1xyXG4gICAgaWYgKGNvbHVtbi50eXBlID09ICdpbWFnZScgfHwgIWNvbHVtbj8uaXNfZWRpdGFibGUpIHJldHVybjtcclxuICAgIHRoaXMuZWRpdGluZ0tleSA9ICgocm93LmlkIHx8IHJvdy5faWQpICsgJy0nICsgY29sdW1uLmZpZWxkKTtcclxuXHJcbiAgICBpZiAoY29sdW1uLnR5cGUgPT09ICdkcm9wZG93bicpIHtcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgY29uc3QgZHJvcGRvd25NZW51ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmNlbGwtZWRpdGluZy1kcm9wZG93bi1tZW51JykgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICAgICAgaWYgKGRyb3Bkb3duTWVudSkge1xyXG4gICAgICAgICAgY29uc3QgcmVjdCA9IGRyb3Bkb3duTWVudS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuICAgICAgICAgIGNvbnN0IHdpbmRvd0hlaWdodCA9IHRoaXMuZGF0YUdyaWRDb250YWluZXIubmF0aXZlRWxlbWVudD8ub2Zmc2V0SGVpZ2h0O1xyXG5cclxuICAgICAgICAgIGlmIChyZWN0LmJvdHRvbSA+IHdpbmRvd0hlaWdodCkge1xyXG4gICAgICAgICAgICBkcm9wZG93bk1lbnUuc3R5bGUudG9wID0gYC0ke3JlY3QuaGVpZ2h0fXB4YDtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGRyb3Bkb3duTWVudS5zdHlsZS50b3AgPSAnMTAwJSc7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIWNsaWNrZWRGcm9tRGV0YWlsc0JveCAmJiB0aGlzLmdldE5lc3RlZFZhbHVlKHJvdywgY29sdW1uLmZpZWxkKT8ubGVuZ3RoID4gNTApIHtcclxuICAgICAgdGhpcy50b2dnbGVFeHBhbmRPZkxvbmdDZWxsVGV4dChyb3csIGNvbHVtbiwgdGhpcy5jb2x1bW5zLCBmYWxzZSlcclxuICAgIH1cclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICBpZiAoIWNlbGxDb250YWluZXIpIHJldHVybjtcclxuXHJcbiAgICAgIGNvbnN0IGZvY3VzYWJsZSA9IGNlbGxDb250YWluZXIucXVlcnlTZWxlY3RvcihcclxuICAgICAgICAnaW5wdXQsIHRleHRhcmVhLCBzZWxlY3QsIFtjb250ZW50ZWRpdGFibGU9XCJ0cnVlXCJdJ1xyXG4gICAgICApIGFzIEhUTUxFbGVtZW50IHwgbnVsbDtcclxuXHJcbiAgICAgIGlmIChmb2N1c2FibGUpIHtcclxuICAgICAgICAoZm9jdXNhYmxlIGFzIEhUTUxFbGVtZW50KS5zdHlsZS5mb250U2l6ZSA9ICcxNnB4JztcclxuICAgICAgICBmb2N1c2FibGUuZm9jdXMoKTtcclxuXHJcbiAgICAgICAgaWYgKGZvY3VzYWJsZSBpbnN0YW5jZW9mIEhUTUxJbnB1dEVsZW1lbnQgfHwgZm9jdXNhYmxlIGluc3RhbmNlb2YgSFRNTFRleHRBcmVhRWxlbWVudCkge1xyXG4gICAgICAgICAgZm9jdXNhYmxlLnNlbGVjdCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgIH0pO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcblxyXG4gIGRpc2FibGVFZGl0KHJvdzogYW55LCBjb2x1bW46IGFueSwgY29udHJvbD86IGFueSkge1xyXG4gICAgdGhpcy5yb3dTZWxlY3RlZEluZGV4ZXMuY2xlYXIoKTtcclxuICAgIGlmICghdGhpcy5lZGl0aW5nS2V5KSByZXR1cm5cclxuICAgIHRoaXMuY2hlY2tSb3dFZGl0QW5kRW1pdFZhbHVlKHJvdywgY29sdW1uLCByb3dbY29sdW1uLmZpZWxkXSlcclxuICAgIHRoaXMuZWRpdGluZ0tleSA9IG51bGw7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICBjb25zdCBjdXJyZW50ID0gdGhpcy5nZXROZXN0ZWRWYWx1ZShyb3csIGNvbHVtbj8uZmllbGQpO1xyXG4gICAgaWYgKCFjdXJyZW50IHx8IChjb2x1bW4udHlwZSA9PSAnZW1haWwnICYmICF0aGlzLnZhbGlkYXRlRW1haWwoY3VycmVudCkpKSB7XHJcbiAgICAgIGNvbnN0IG9yaWdpbmFsUm93ID0gdGhpcy5vcmlnaW5hbERhdGFTZXQuZmluZChpdGVtID0+IGl0ZW0uaWQgPT0gcm93LmlkIHx8IGl0ZW0uaWQgPT0gcm93Ll9pZCk7XHJcbiAgICAgIGNvbnN0IG9yaWdpbmFsID0gdGhpcy5nZXROZXN0ZWRWYWx1ZShvcmlnaW5hbFJvdywgY29sdW1uPy5maWVsZCk7XHJcbiAgICAgIHRoaXMuc2V0TmVzdGVkVmFsdWUocm93LCBjb2x1bW4sIG9yaWdpbmFsKTtcclxuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZW1haWxSZWdleCA9IC9eW2EtekEtWjAtOS5fJSstXStAW2EtekEtWjAtOS4tXStcXC5bYS16QS1aXXsyLH0kLztcclxuICB2YWxpZGF0ZUVtYWlsKHZhbHVlOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmVtYWlsUmVnZXgudGVzdCh2YWx1ZSk7XHJcbiAgfVxyXG4gIGFsbG93T25seU51bWJlcnMoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcclxuICAgIGNvbnN0IGNoYXJDb2RlID0gZXZlbnQud2hpY2ggPyBldmVudC53aGljaCA6IGV2ZW50LmtleUNvZGU7XHJcbiAgICBpZiAoY2hhckNvZGUgPCA0OCB8fCBjaGFyQ29kZSA+IDU3KSB7XHJcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjaGVja1Jvd0VkaXRBbmRFbWl0VmFsdWUocm93OiBhbnksIGNvbHVtbjogYW55LCB2YWx1ZT86IGFueSkge1xyXG4gICAgLy8gc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICBjb25zdCBvcmlnaW5hbFJvdyA9IHRoaXMub3JpZ2luYWxEYXRhU2V0Py5maW5kKFxyXG4gICAgICAocjogYW55KSA9PiByLmlkID09PSByb3cuaWQgfHwgci5faWQgPT09IHJvdy5faWRcclxuICAgICk7XHJcbiAgICBpZiAoIW9yaWdpbmFsUm93KSByZXR1cm47XHJcbiAgICAvLyBjb25zdCBjbGVhbiA9IChvYmo6IGFueSkgPT4gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShvYmopKTtcclxuICAgIC8vIGNvbnN0IGN1cnJlbnRWYWx1ZSA9IHRoaXMuZ2V0TmVzdGVkVmFsdWUocm93LCBjb2x1bW4uZmllbGQpO1xyXG4gICAgLy8gY29uc3Qgb3JpZ2luYWxWYWx1ZSA9IHRoaXMuZ2V0TmVzdGVkVmFsdWUob3JpZ2luYWxSb3csIGNvbHVtbi5maWVsZCk7XHJcbiAgICBjb25zdCBvcmlnaW5WYWx1ZSA9IHRoaXMuZGF0YVNldC5maW5kKChyOiBhbnkpID0+IHIuaWQgPT09IHJvdy5pZCk7XHJcbiAgICBjb25zdCBjaGFuZ2VkVmFsdWUgPSBvcmlnaW5WYWx1ZS52ZXJpZmllZCA9PSB2YWx1ZTtcclxuICAgIC8vIGlmIChjaGFuZ2VkVmFsdWUpIHJldHVybjtcclxuICAgIC8vIGNvbnN0IGhhc0NoYW5nZWQgPSB0aGlzLmNvbW1vblNldmljZS5oYXNGaWVsZENoYW5nZWQoY3VycmVudFZhbHVlLCBvcmlnaW5hbFZhbHVlLCBjb2x1bW4udHlwZSk7XHJcbiAgICAvLyBpZiAoIWhhc0NoYW5nZWQpIHJldHVybjtcclxuICAgIC8vIHRoaXMuc2V0TmVzdGVkVmFsdWUob3JpZ2luYWxSb3csIGNvbHVtbiwgdmFsdWUpO1xyXG5cclxuICAgIGNvbnN0IHNlbmRPYmogPSB7XHJcbiAgICAgIGRhdGE6IHsgLi4ub3JpZ2luVmFsdWUgfSxcclxuICAgICAgZXZlbnRUeXBlOiAnb25DZWxsRWRpdCcsXHJcbiAgICAgIHZhbHVlOiB2YWx1ZSxcclxuICAgICAgY29sdW1uOiBjb2x1bW5cclxuICAgIH07XHJcbiAgICByZXR1cm4gdGhpcy5nZW5lcmljRXZlbnQuZW1pdChzZW5kT2JqKVxyXG4gICAgLy8gfSwgMTAwKTtcclxuICB9XHJcblxyXG5cclxuICBpc0VkaXRpbmcocm93OiBhbnksIGNvbDogYW55KTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5lZGl0aW5nS2V5ID09PSAoKHJvdy5pZCB8fCByb3cuX2lkKSArICctJyArIGNvbC5maWVsZCk7XHJcbiAgfVxyXG5cclxuICBzZXROZXN0ZWRWYWx1ZShvYmo6IGFueSwgY29sdW1uOiBhbnksIG9wdGlvbjogYW55LCBjYWxsZWRGcm9tSW5wdXQgPSBmYWxzZSk6IHZvaWQge1xyXG4gICAgY29uc3QgcGF0aCA9IGNvbHVtbi5maWVsZDtcclxuICAgIGNvbnN0IGtleXMgPSBwYXRoLnNwbGl0KCcuJyk7XHJcbiAgICBjb25zdCBsYXN0S2V5ID0ga2V5cy5wb3AoKTtcclxuICAgIGNvbnN0IHBhcmVudCA9IGtleXMucmVkdWNlKChhY2M6IHsgW3g6IHN0cmluZ106IHt9OyB9LCBrZXk6IHN0cmluZyB8IG51bWJlcikgPT4gYWNjW2tleV0gPz89IHt9LCBvYmopO1xyXG5cclxuICAgIGlmIChwYXJlbnQgJiYgbGFzdEtleSkge1xyXG4gICAgICBpZiAodHlwZW9mIG9wdGlvbiA9PT0gJ29iamVjdCcgJiYgb3B0aW9uICE9PSBudWxsKSB7XHJcbiAgICAgICAgLy8gY2FzZTogZHJvcGRvd24gb2JqZWN0IHtpZCwgdmFsdWV9XHJcbiAgICAgICAgcGFyZW50LmlkID0gb3B0aW9uLmlkO1xyXG4gICAgICAgIHBhcmVudFtsYXN0S2V5XSA9IG9wdGlvbi52YWx1ZTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICAvLyBjYXNlOiBwbGFpbiBzdHJpbmcgb3IgbnVtYmVyXHJcbiAgICAgICAgcGFyZW50W2xhc3RLZXldID0gb3B0aW9uO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3Qgc2VuZE9iaiA9IHtcclxuICAgICAgZGF0YTogeyAuLi5vYmogfSxcclxuICAgICAgZXZlbnRUeXBlOiAnb25DZWxsRWRpdCcsXHJcbiAgICB9O1xyXG5cclxuICAgIGlmIChjYWxsZWRGcm9tSW5wdXQpIHtcclxuICAgICAgdGhpcy5jaGVja1Jvd0VkaXRBbmRFbWl0VmFsdWUob2JqLCBjb2x1bW4sIG9wdGlvbik7XHJcbiAgICB9XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG4gIGdvVG9QYWdlKHBhZ2U6IGFueSkge1xyXG4gICAgaWYgKHRoaXMucGFnaW5hdGlvbkNvbmZpZz8ucGFnZSA9PSBwYWdlKSByZXR1cm47XHJcbiAgICBpZiAocGFnZSA8IDEgfHwgcGFnZSA+IHRoaXMucGFnaW5hdGlvbkNvbmZpZy50b3RhbFBhZ2VzKSByZXR1cm47XHJcbiAgICB0aGlzLnBhZ2luYXRpb25Db25maWcucGFnZSA9IHBhZ2U7XHJcbiAgICBjb25zdCBldmVudCA9IHtcclxuICAgICAgb2JqOiB7XHJcbiAgICAgICAgbGltaXQ6IHRoaXMucGFnaW5hdGlvbkNvbmZpZy5saW1pdCxcclxuICAgICAgICBwYWdlOiBwYWdlLFxyXG4gICAgICB9LFxyXG4gICAgICBldmVudFR5cGU6ICdwYWdlQ2hhbmdlJyxcclxuICAgIH07XHJcbiAgICB0aGlzLmdlbmVyaWNFdmVudC5lbWl0KGV2ZW50KVxyXG4gIH1cclxuXHJcbiAgb25QYWdlU2l6ZUNoYW5nZSgpIHtcclxuICAgIHRoaXMucGFnaW5hdGlvbkNvbmZpZy5wYWdlID0gMTtcclxuICAgIGNvbnN0IHNlbmREYXRhID0ge1xyXG4gICAgICBjb2x1bW5zOiB0aGlzLmNsZWFuQ29sdW1ucyh0aGlzLmNvbHVtbnMpLFxyXG4gICAgICBmaWx0ZXJzOiB0aGlzLmNvbW1vblNldmljZS5nZXRGaWx0ZXJzRnJvbUNvbHVtbnModGhpcy5jb2x1bW5zLCB0aGlzLmZpbHRlcnNDb25maWcpLm1hcCgoeyBxdWVyeSwgLi4ucmVzdCB9KSA9PiB7XHJcbiAgICAgICAgaWYgKHF1ZXJ5KSB7XHJcbiAgICAgICAgICBkZWxldGUgcXVlcnkuX190eXBlbmFtZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgIHF1ZXJ5LFxyXG4gICAgICAgICAgLi4ucmVzdCxcclxuICAgICAgICB9XHJcbiAgICAgIH0pLFxyXG4gICAgICBub19vZl9yZWNvcmRzOiBOdW1iZXIodGhpcy5wYWdpbmF0aW9uQ29uZmlnLmxpbWl0KSxcclxuICAgICAgdHlwZTogdGhpcy50YWJsZVR5cGUsXHJcbiAgICB9O1xyXG4gICAgdGhpcy5jcmVhdGVVcGRhdGVDb25maWdMaXN0aW5nLmVtaXQoc2VuZERhdGEpO1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGNvbnN0IGV2ZW50ID0ge1xyXG4gICAgICAgIG9iajoge1xyXG4gICAgICAgICAgbGltaXQ6IHRoaXMucGFnaW5hdGlvbkNvbmZpZy5saW1pdCxcclxuICAgICAgICAgIHBhZ2U6IHRoaXMucGFnaW5hdGlvbkNvbmZpZy5wYWdlLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXZlbnRUeXBlOiAncGFnZUNoYW5nZScsXHJcbiAgICAgIH07XHJcbiAgICAgIHRoaXMuZ2VuZXJpY0V2ZW50LmVtaXQoZXZlbnQpXHJcbiAgICB9LCA3MDApO1xyXG4gIH1cclxuXHJcbiAgYWN0aW9uUHJlc2V0KGRhdGE6IGFueSwgdHlwZTogYW55KSB7XHJcbiAgICBkYXRhLmNvbHVtbnMgPSBkYXRhLmNvbHVtbnMubWFwKCh7IF9pZCwgZmlsdGVyVmFsdWUsIHNlYXJjaCwgY29sdW1uX2Ryb3Bkb3duX3ZhbHVlLCBxdWVyeSwgX190eXBlbmFtZSwgLi4ucmVzdCB9OiBhbnkpID0+IHJlc3QpO1xyXG4gICAgdGhpcy50YWJsZVZpZXc/LmZvckVhY2goKGVsZSkgPT4geyBlbGUuaXNfdGVtcCA9IGZhbHNlIH0pO1xyXG5cclxuICAgIHtcclxuICAgICAgdGhpcy5ib2R5VGV4dEZvbnRzU2l6ZSA9IGRhdGEuY29uZmlnLmJvZHlUZXh0Rm9udHNTaXplLFxyXG4gICAgICAgIHRoaXMuZm9udEZhaW1seSA9IGRhdGEuY29uZmlnLmZvbnRGYWltbHksXHJcbiAgICAgICAgZGF0YS5maWx0ZXJzLmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgZGVsZXRlIGVsZW1lbnQuX190eXBlbmFtZTtcclxuICAgICAgICAgIGlmIChlbGVtZW50LnF1ZXJ5KSB7XHJcbiAgICAgICAgICAgIGRlbGV0ZSBlbGVtZW50LnF1ZXJ5Ll9fdHlwZW5hbWU7XHJcbiAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICB0eXBlb2YgZWxlbWVudC5xdWVyeSA9PT0gJ29iamVjdCcgJiZcclxuICAgICAgICAgICAgICBlbGVtZW50LnF1ZXJ5ICE9PSBudWxsICYmXHJcbiAgICAgICAgICAgICAgT2JqZWN0LmtleXMoZWxlbWVudC5xdWVyeSkubGVuZ3RoID09PSAwXHJcbiAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgIGVsZW1lbnQucXVlcnkgPSBudWxsO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIHRoaXMuaGVhZGVyVGV4dEZvbnRzU2l6ZSA9IGRhdGEuY29uZmlnLmhlYWRlclRleHRGb250c1NpemUsXHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFRhYmxlTGF5b3V0ID0gZGF0YS5jb25maWcuc2VsZWN0ZWRUYWJsZUxheW91dCxcclxuICAgICAgICB0aGlzLnNob3dWZXJ0aWNhbEJvcmRlciA9IGRhdGEuY29uZmlnLnNob3dWZXJ0aWNhbEJvcmRlcixcclxuICAgICAgICB0aGlzLmN1cnJlbnRJZEZvclVwZGF0ZVByZXNldCA9IGRhdGEuaWQ7XHJcbiAgICAgIHRoaXMuZmlsdGVyc0NvbmZpZyA9IGRhdGEuZmlsdGVycztcclxuICAgIH1cclxuICAgIGRlbGV0ZSBkYXRhPy5fX3R5cGVuYW1lO1xyXG4gICAgZGVsZXRlIGRhdGE/LmlzX3RlbXA7XHJcbiAgICBkZWxldGUgZGF0YT8uY29uZmlnLl9fdHlwZW5hbWU7XHJcbiAgICBjb25zdCBldmVudCA9IHtcclxuICAgICAgb2JqOiB7XHJcbiAgICAgICAgZGF0YTogZGF0YVxyXG4gICAgICB9LFxyXG4gICAgICBldmVudFR5cGU6IHR5cGVcclxuICAgIH1cclxuICAgIHRoaXMuZ2VuZXJpY0V2ZW50LmVtaXQoZXZlbnQpXHJcbiAgfVxyXG5cclxuICBjdXJyZW50SWRGb3JVcGRhdGVQcmVzZXQgPSAnJztcclxuICBjdXJyZXRhVGFibGVQcmVzZXRGb3JVcGRhdGU6IGFueTtcclxuICB0ZW1wX3N0YXRlID0ge1xyXG4gICAgaWQ6ICcnLFxyXG4gICAgaXNfdGVtcDogZmFsc2VcclxuICB9XHJcbiAgYXN5bmMgc2VsZWN0RmlsdGVyKGRhdGE6IGFueSkge1xyXG4gICAgdGhpcy50ZW1wX3N0YXRlID0ge1xyXG4gICAgICBpZDogZGF0YS5pZCxcclxuICAgICAgaXNfdGVtcDogdHJ1ZVxyXG4gICAgfVxyXG4gICAgdGhpcy50YWJsZVZpZXc/LmZvckVhY2goKGVsZSkgPT4geyBlbGUuaXNfdGVtcCA9IGZhbHNlIH0pO1xyXG4gICAgdGhpcy50YWJsZVZpZXcgPSB0aGlzLnRhYmxlVmlldy5tYXAoaXRlbSA9PiAoe1xyXG4gICAgICAuLi5pdGVtLFxyXG4gICAgICBpc190ZW1wOiBpdGVtLmlkID09IGRhdGE/LmlkXHJcbiAgICB9KSk7XHJcbiAgICB0aGlzLmNvbHVtbnMgPSBkYXRhLmNvbHVtbnM7XHJcbiAgICB7XHJcbiAgICAgIHRoaXMuYm9keVRleHRGb250c1NpemUgPSBkYXRhLmNvbmZpZy5ib2R5VGV4dEZvbnRzU2l6ZSxcclxuICAgICAgICB0aGlzLmZvbnRGYWltbHkgPSBkYXRhLmNvbmZpZy5mb250RmFpbWx5LFxyXG4gICAgICAgIGRhdGEuZmlsdGVycy5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcclxuICAgICAgICAgIGRlbGV0ZSBlbGVtZW50Ll9fdHlwZW5hbWU7XHJcblxyXG4gICAgICAgICAgaWYgKGVsZW1lbnQucXVlcnkpIHtcclxuICAgICAgICAgICAgZGVsZXRlIGVsZW1lbnQucXVlcnkuX190eXBlbmFtZTtcclxuICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgIHR5cGVvZiBlbGVtZW50LnF1ZXJ5ID09PSAnb2JqZWN0JyAmJlxyXG4gICAgICAgICAgICAgIGVsZW1lbnQucXVlcnkgIT09IG51bGwgJiZcclxuICAgICAgICAgICAgICBPYmplY3Qua2V5cyhlbGVtZW50LnF1ZXJ5KS5sZW5ndGggPT09IDBcclxuICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgZWxlbWVudC5xdWVyeSA9IG51bGw7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgIC8vIHRoaXMuZ2xvYmFsU2VhcmNoID0gZGF0YS5jb25maWcuYm9keVRleHRGb250c1NpemUsXHJcbiAgICAgIHRoaXMuaGVhZGVyVGV4dEZvbnRzU2l6ZSA9IGRhdGEuY29uZmlnLmhlYWRlclRleHRGb250c1NpemUsXHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFRhYmxlTGF5b3V0ID0gZGF0YS5jb25maWcuc2VsZWN0ZWRUYWJsZUxheW91dCxcclxuICAgICAgICB0aGlzLnNob3dWZXJ0aWNhbEJvcmRlciA9IGRhdGEuY29uZmlnLnNob3dWZXJ0aWNhbEJvcmRlcixcclxuICAgICAgICB0aGlzLmN1cnJlbnRJZEZvclVwZGF0ZVByZXNldCA9IGRhdGEuaWQ7XHJcbiAgICAgIHRoaXMuY3VycmV0YVRhYmxlUHJlc2V0Rm9yVXBkYXRlID0gc3RydWN0dXJlZENsb25lKGRhdGEpO1xyXG4gICAgICB0aGlzLnByZXNldE5hbWUgPSBkYXRhPy5uYW1lO1xyXG4gICAgICB0aGlzLnByZXNldEZpbHRlciA9IGRhdGE/LmFjdGl2ZUZpbHRlcnMgfHwgZmFsc2U7XHJcbiAgICAgIHRoaXMuZmlsdGVyc0NvbmZpZyA9IGRhdGEuZmlsdGVycztcclxuICAgICAgYXdhaXQgdGhpcy5hcHBseUZpbHRlcm9wdGlvbkxpc3QoKTtcclxuICAgICAgdGhpcy5yZWZyZXNoSGVhZGVycygpO1xyXG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIGRhdGEuY29sdW1ucyA9IHRoaXMuY2xlYW5Db2x1bW5zKHRoaXMuY29sdW1ucyk7XHJcbiAgICAgIGRlbGV0ZSBkYXRhPy5fX3R5cGVuYW1lO1xyXG4gICAgICBkZWxldGUgZGF0YT8uaXNfdGVtcDtcclxuICAgICAgZGVsZXRlIGRhdGE/LmNvbmZpZy5fX3R5cGVuYW1lO1xyXG4gICAgfVxyXG4gICAgaWYgKGRhdGE/LmlzX2RlYWZ1bHQpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuYWN0aW9uUHJlc2V0KGRhdGEsICdzZXRQcmVzZXQnKVxyXG4gICAgfVxyXG4gICAgY29uc3QgZXZlbnQgPSB7XHJcbiAgICAgIG9iajoge1xyXG4gICAgICAgIGRhdGE6IGRhdGFcclxuICAgICAgfSxcclxuICAgICAgZXZlbnRUeXBlOiAnc2VsZWN0J1xyXG4gICAgfVxyXG4gICAgdGhpcy5nZW5lcmljRXZlbnQuZW1pdChldmVudClcclxuICB9XHJcblxyXG4gIHNhdmVQcmVzZXQoY29udHJvbD86IGFueSkge1xyXG4gICAgaWYgKGNvbnRyb2w/LmludmFsaWQpIHtcclxuICAgICAgY29udHJvbD8uY29udHJvbC5tYXJrQXNUb3VjaGVkKCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGxldCBuYW1lcyA9IHRoaXMuZ2V0RmlsdGVySGVhZGVycyh0aGlzLmZpbHRlcnNDb25maWcsIHRoaXMuY29sdW1ucyk7XHJcbiAgICB0aGlzLnByZXNldEZpbHRlciA9IHRoaXMudGFibGVGaWx0ZXJWaWV3SWQgPyB0cnVlIDogdGhpcy5wcmVzZXRGaWx0ZXI7XHJcbiAgICBsZXQgc2VsZWN0ZWREYXRhOiBhbnkgPSB0aGlzLnRhYmxlVmlldy5maW5kKChlbGUpID0+IGVsZS5pZCA9PSB0aGlzLnRhYmxlRmlsdGVyVmlld0lkKTtcclxuICAgIGxldCBjb25maWcgPSB7XHJcbiAgICAgIGZvbnRGYWltbHk6IHRoaXMuZm9udEZhaW1seSxcclxuICAgICAgYm9keVRleHRGb250c1NpemU6ICsodGhpcy5ib2R5VGV4dEZvbnRzU2l6ZSB8fCAxNCksXHJcbiAgICAgIGhlYWRlclRleHRGb250c1NpemU6ICsodGhpcy5oZWFkZXJUZXh0Rm9udHNTaXplIHx8IDE0KSxcclxuICAgICAgb2RkUm93c0JhY2tncm91bmRDb2xvcjogdGhpcy5yb3dTaGFkaW5nRW5hYmxlZCA/IHRoaXMub2RkUm93c0JhY2tncm91bmRDb2xvciA6IHVuZGVmaW5lZCxcclxuICAgICAgc2hvd1ZlcnRpY2FsQm9yZGVyOiB0aGlzLnNob3dWZXJ0aWNhbEJvcmRlcixcclxuICAgICAgc2VsZWN0ZWRUYWJsZUxheW91dDogdGhpcy5zZWxlY3RlZFRhYmxlTGF5b3V0LFxyXG4gICAgICBnbG9iYWxTZWFyY2g6IHRoaXMudGFibGVTZWFyY2gsXHJcbiAgICAgIGZpbHRlck5hbWVzOiBuYW1lcyxcclxuICAgICAgdG90YWxDb3VudDogdGhpcy5wYWdpbmF0aW9uQ29uZmlnLnRvdGFsUmVzdWx0cyxcclxuICAgICAgcm93U2hhZGluZ0VuYWJsZWQ6IHRoaXMucm93U2hhZGluZ0VuYWJsZWRcclxuXHJcbiAgICB9XHJcbiAgICBjb25zdCBldmVudCA9IHtcclxuICAgICAgb2JqOiB7XHJcbiAgICAgICAgbmFtZTogdGhpcy50YWJsZUZpbHRlclZpZXdJZCA/IHNlbGVjdGVkRGF0YT8ubmFtZSA6IHRoaXMucHJlc2V0TmFtZSxcclxuICAgICAgICBhY3RpdmVGaWx0ZXJzOiB0aGlzLnByZXNldEZpbHRlcixcclxuICAgICAgICBjb2x1bW5zOiB0aGlzLmNsZWFuQ29sdW1ucyh0aGlzLmNvbHVtbnMpLFxyXG4gICAgICAgIGZpbHRlcnM6IHRoaXMucHJlc2V0RmlsdGVyXHJcbiAgICAgICAgICA/IHRoaXMuZmlsdGVyc0NvbmZpZz8ubWFwKCh7IF9fdHlwZW5hbWUsIHF1ZXJ5LCAuLi5yZXN0IH0pID0+IHtcclxuICAgICAgICAgICAgY29uc3QgeyBfX3R5cGVuYW1lOiBfX2lubmVyLCAuLi5jbGVhblF1ZXJ5IH0gPSBxdWVyeSB8fCB7fTtcclxuICAgICAgICAgICAgcmV0dXJuIHsgLi4ucmVzdCwgcXVlcnk6IGNsZWFuUXVlcnkgfTtcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICA6IFtdLFxyXG4gICAgICAgIGNvbmZpZzogY29uZmlnLFxyXG4gICAgICAgIGlkOiB0aGlzLnRhYmxlRmlsdGVyVmlld0lkIHx8IHRoaXMuY3VycmV0YVRhYmxlUHJlc2V0Rm9yVXBkYXRlPy5pZCxcclxuICAgICAgICBsb2FkaW5nQ2FsbDogY29udHJvbCA9PSAnbW91c2VVcCcgPyBmYWxzZSA6IHRydWUsXHJcbiAgICAgICAgdHlwZTogdGhpcy50YWJsZVR5cGVcclxuICAgICAgfSxcclxuICAgICAgZXZlbnRUeXBlOiB0aGlzLnRhYmxlRmlsdGVyVmlld0lkIHx8ICF0aGlzLmlzVGFibGVQcmVzZXROb3RDaGFuZ2VkID8gJ3VwZGF0ZVByZXNldCcgOiAnY3JlYXRlUHJlc2V0J1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGZpbHRlcmVkQ29sdW1ucyA9IHRoaXMuY29tbW9uU2V2aWNlLmdldEZpbHRlcnNGcm9tQ29sdW1ucyh0aGlzLmNvbHVtbnMsIHRoaXMuZmlsdGVyc0NvbmZpZyk7XHJcbiAgICBjb25zdCBjbGVhbmVkRmlsdGVyZWRDb2x1bW5zID0gZmlsdGVyZWRDb2x1bW5zLm1hcCgoeyBxdWVyeSwgLi4ucmVzdCB9KSA9PiB7XHJcbiAgICAgIGlmIChxdWVyeSkge1xyXG4gICAgICAgIGRlbGV0ZSBxdWVyeS5fX3R5cGVuYW1lO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgcXVlcnksXHJcbiAgICAgICAgLi4ucmVzdCxcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICBjb25zdCBzZW5kRGF0YSA9IHtcclxuICAgICAgY29sdW1uczogdGhpcy5jbGVhbkNvbHVtbnModGhpcy5jb2x1bW5zKSxcclxuICAgICAgZmlsdGVyczogY2xlYW5lZEZpbHRlcmVkQ29sdW1ucyxcclxuICAgICAgbm9fb2ZfcmVjb3JkczogTnVtYmVyKHRoaXMucGFnaW5hdGlvbkNvbmZpZy5saW1pdCksXHJcbiAgICAgIHR5cGU6IHRoaXMudGFibGVUeXBlLFxyXG4gICAgfTtcclxuICAgIHRoaXMuY3JlYXRlVXBkYXRlQ29uZmlnTGlzdGluZy5lbWl0KHNlbmREYXRhKTtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLmdlbmVyaWNFdmVudC5lbWl0KGV2ZW50KVxyXG4gICAgfSwgNTAwKTtcclxuICB9XHJcblxyXG5cclxuICBnZXRGaWx0ZXJIZWFkZXJzKGZpbHRlcnM6IGFueVtdLCBjb2x1bW5zOiBhbnlbXSk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBtYXRjaGVkSGVhZGVycyA9IGZpbHRlcnNcclxuICAgICAgLm1hcChmID0+IHtcclxuICAgICAgICBjb25zdCBjb2x1bW4gPSBjb2x1bW5zLmZpbmQoYyA9PiBjLmZpZWxkID09PSBmLmZpZWxkKTtcclxuICAgICAgICByZXR1cm4gY29sdW1uID8gY29sdW1uLmhlYWRlciA6IG51bGw7XHJcbiAgICAgIH0pXHJcbiAgICAgIC5maWx0ZXIoaGVhZGVyID0+ICEhaGVhZGVyKTtcclxuXHJcbiAgICByZXR1cm4gbWF0Y2hlZEhlYWRlcnMuam9pbignLCAnKTtcclxuICB9XHJcblxyXG5cclxuICB0b2dnbGVSb3dTaGFkaW5nKCkge1xyXG4gICAgdGhpcy5vZGRSb3dzQmFja2dyb3VuZENvbG9yID0gdGhpcy5yb3dTaGFkaW5nRW5hYmxlZCA/ICcjZjFmMWYxJyA6IHVuZGVmaW5lZDtcclxuICAgIHRoaXMub25Gb250Q2hhbmdlKCk7XHJcbiAgfVxyXG5cclxuICB0cmFja0J5VGFibGUoaW5kZXg6IG51bWJlcik6IG51bWJlciB7XHJcbiAgICByZXR1cm4gaW5kZXg7XHJcbiAgfVxyXG4gIGFjdGl2ZVJvdzogYW55XHJcbiAgYWN0aXZlUm93Q29sOiBhbnk7XHJcblxyXG4gIC8vIFRyYWNrIGV4cGFuZGVkIGNlbGxzIGFzIGEgU2V0IG9mIHVuaXF1ZSByb3crY29sIGlkZW50aWZpZXJzXHJcblxyXG4gIGdldENlbGxLZXkocm93OiBhbnksIGNvbDogYW55KTogc3RyaW5nIHtcclxuICAgIHJldHVybiBgJHt0aGlzLmdldFJvd0lkKHJvdyl9XyR7Y29sPy5maWVsZH1gO1xyXG4gIH1cclxuXHJcbiAgZXhwYW5kZWRDZWxscyA9IG5ldyBNYXA8c3RyaW5nLCBudW1iZXI+KCk7XHJcbiAgcHJpdmF0ZSB6Q291bnRlciA9IDIxO1xyXG5cclxuICBzaG93RGV0YWlsc0JveCA9IGZhbHNlO1xyXG5cclxuICB0b2dnbGVFeHBhbmRPZkxvbmdDZWxsVGV4dChcclxuICAgIHJvdzogYW55LFxyXG4gICAgY29sOiBhbnksXHJcbiAgICBjb2x1bW5zOiBhbnlbXSxcclxuICAgIGV4cGFuZFdob2xlUm93ID0gZmFsc2VcclxuICApIHtcclxuICAgIGNvbnN0IGV4cGFuZENlbGxzID0gKHRhcmdldFJvdzogYW55KSA9PiB7XHJcbiAgICAgIGNvbHVtbnMuZm9yRWFjaChjID0+IHtcclxuICAgICAgICBpZiAoYy50eXBlID09PSAnaW1hZ2UnKSByZXR1cm47XHJcbiAgICAgICAgY29uc3QgdGV4dCA9IHRhcmdldFJvd1tjLmZpZWxkXTtcclxuXHJcbiAgICAgICAgaWYgKCh0eXBlb2YgdGV4dCA9PT0gJ3N0cmluZycgJiYgdGV4dC5sZW5ndGggPiA1MCkgfHwgKEFycmF5LmlzQXJyYXkodGV4dCkgJiYgdGV4dD8ubGVuZ3RoID4gMSkpIHtcclxuICAgICAgICAgIGNvbnN0IGtleSA9IHRoaXMuZ2V0Um93SWQodGFyZ2V0Um93KSArICctJyArIGMuZmllbGQ7XHJcbiAgICAgICAgICB0aGlzLnpDb3VudGVyKys7XHJcbiAgICAgICAgICB0aGlzLmV4cGFuZGVkQ2VsbHMuc2V0KGtleSwgdGhpcy56Q291bnRlcik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH07XHJcblxyXG5cclxuICAgIGNvbnN0IGNvbGxlY3RLZXlzRm9yUm93ID0gKHRhcmdldFJvdzogYW55KSA9PiB7XHJcbiAgICAgIGNvbnN0IGtleXM6IHN0cmluZ1tdID0gW107XHJcbiAgICAgIGNvbHVtbnMuZm9yRWFjaChjID0+IHtcclxuICAgICAgICBpZiAoYy50eXBlID09PSAnaW1hZ2UnKSByZXR1cm47XHJcblxyXG4gICAgICAgIGNvbnN0IHRleHQgPSB0YXJnZXRSb3dbYy5maWVsZF07XHJcbiAgICAgICAgaWYgKHR5cGVvZiB0ZXh0ID09PSAnc3RyaW5nJyAmJiB0ZXh0Lmxlbmd0aCA+IDUwIHx8IChBcnJheS5pc0FycmF5KHRleHQpICYmIHRleHQ/Lmxlbmd0aCA+IDEpKSB7XHJcbiAgICAgICAgICBrZXlzLnB1c2godGhpcy5nZXRSb3dJZCh0YXJnZXRSb3cpICsgJy0nICsgYy5maWVsZCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgcmV0dXJuIGtleXM7XHJcbiAgICB9O1xyXG5cclxuICAgIGlmIChleHBhbmRXaG9sZVJvdykge1xyXG4gICAgICBsZXQgcm93S2V5czogc3RyaW5nW10gPSBbXTtcclxuICAgICAgY29uc3QgdGV4dCA9IHRoaXMuZ2V0TmVzdGVkVmFsdWUocm93LCBjb2w/LmZpZWxkKTtcclxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkodGV4dCkgJiYgdGV4dC5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgcm93S2V5cyA9IGNvbGxlY3RLZXlzRm9yUm93KHJvdyk7XHJcbiAgICAgICAgcm93Py5jaGlsZHJlbj8uZm9yRWFjaCgoY2hpbGQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgcm93S2V5cy5wdXNoKC4uLmNvbGxlY3RLZXlzRm9yUm93KGNoaWxkKSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcm93S2V5cyA9IGNvbGxlY3RLZXlzRm9yUm93KHJvdyk7XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgYWxsRXhwYW5kZWQgPSByb3dLZXlzLmV2ZXJ5KGsgPT4gdGhpcy5leHBhbmRlZENlbGxzLmhhcyhrKSk7XHJcbiAgICAgIHRoaXMuZXhwYW5kZWRDZWxscy5jbGVhcigpO1xyXG4gICAgICBpZiAoIWFsbEV4cGFuZGVkKSB7XHJcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkocm93LmNoaWxkcmVuKSAmJiByb3cuY2hpbGRyZW4ubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgZXhwYW5kQ2VsbHMocm93KTtcclxuICAgICAgICAgIHJvdz8uY2hpbGRyZW4/LmZvckVhY2goKGNoaWxkOiBhbnkpID0+IGV4cGFuZENlbGxzKGNoaWxkKSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGV4cGFuZENlbGxzKHJvdyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zdCBrZXkgPSB0aGlzLmdldFJvd0lkKHJvdykgKyAnLScgKyBjb2wuZmllbGQ7XHJcbiAgICAgIGlmIChjb2wudHlwZSA9PT0gJ2ltYWdlJykgcmV0dXJuO1xyXG5cclxuICAgICAgaWYgKCF0aGlzLmV4cGFuZGVkQ2VsbHMuaGFzKGtleSkpIHtcclxuICAgICAgICB0aGlzLmV4cGFuZGVkQ2VsbHMuY2xlYXIoKTtcclxuICAgICAgICB0aGlzLnpDb3VudGVyKys7XHJcbiAgICAgICAgdGhpcy5leHBhbmRlZENlbGxzLnNldChrZXksIHRoaXMuekNvdW50ZXIpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuZXhwYW5kZWRDZWxscy5kZWxldGUoa2V5KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuc2hvd0RldGFpbHNCb3ggPSBmYWxzZTtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLmlzT3BlblRvVG9wKHJvdylcclxuICAgIH0sIDApO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgaXNPcGVuVG9Ub3Aocm93OiBhbnkpIHtcclxuICAgIGNvbnN0IHdyYXBwZXIgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuZGF0YS1ncmlkLWJvZHktd3JhcHBlcicpIGFzIEhUTUxFbGVtZW50IHwgbnVsbDtcclxuICAgIGlmICghd3JhcHBlcikgcmV0dXJuIGZhbHNlO1xyXG4gICAgdGhpcy5jb2x1bW5zLmZvckVhY2goKGNvbDogYW55KSA9PiB7XHJcbiAgICAgIGNvbnN0IGlkID0gKHJvdy5pZCB8fCByb3cuX2lkKSArICctJyArIChjb2wuaWQgfHwgY29sLl9pZCk7XHJcbiAgICAgIGNvbnN0IGJveCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKTtcclxuICAgICAgaWYgKCFib3gpIHJldHVybiBmYWxzZTtcclxuICAgICAgY29uc3QgYm94UmVjdCA9IGJveC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuICAgICAgY29uc3Qgd3JhcHBlclJlY3QgPSB3cmFwcGVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG4gICAgICBjb25zdCBpc092ZXJmbG93aW5nQm90dG9tID0gYm94UmVjdC5ib3R0b20gPiB3cmFwcGVyUmVjdC5ib3R0b207XHJcbiAgICAgIGNvbnN0IGlzT3ZlcmZsb3dpbmdUb3AgPSBib3hSZWN0LnRvcCA8IHdyYXBwZXJSZWN0LnRvcDtcclxuICAgICAgaWYgKGlzT3ZlcmZsb3dpbmdCb3R0b20gJiYgIWlzT3ZlcmZsb3dpbmdUb3ApIHtcclxuICAgICAgICBjb25zdCBib3hIZWlnaHQgPSBib3gub2Zmc2V0SGVpZ2h0IHx8IDA7XHJcbiAgICAgICAgY29uc3Qgb2Zmc2V0ID0gYm94SGVpZ2h0ICsgNDtcclxuICAgICAgICBib3guc3R5bGUudG9wID0gYCR7LW9mZnNldH1weGA7XHJcblxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGJveC5zdHlsZS5ib3R0b20gPSBgYXV0b2A7XHJcbiAgICAgICAgYm94LnN0eWxlLnRvcCA9IGAxMDAlYDtcclxuICAgICAgICBib3guc3R5bGUudHJhbnNmb3JtID0gYHRyYW5zbGF0ZVkoMClgO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH0pXHJcbiAgICB0aGlzLnNob3dEZXRhaWxzQm94ID0gdHJ1ZTtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuICBpc0V4cGFuZGVkKHJvdzogYW55LCBjb2w6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZXhwYW5kZWRDZWxscy5oYXModGhpcy5nZXRSb3dJZChyb3cpICsgJy0nICsgY29sLmZpZWxkKTtcclxuICB9XHJcblxyXG4gIGdldFpJbmRleChyb3c6IGFueSwgY29sOiBhbnkpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuZXhwYW5kZWRDZWxscy5nZXQodGhpcy5nZXRSb3dJZChyb3cpICsgJy0nICsgY29sLmZpZWxkKSA/PyAyMTtcclxuICB9XHJcblxyXG4gIGlzT3ZlcmZsb3dpbmcoZWxlbWVudDogSFRNTEVsZW1lbnQgfCBudWxsKTogYm9vbGVhbiB7XHJcbiAgICBpZiAoIWVsZW1lbnQpIHJldHVybiBmYWxzZTtcclxuICAgIHJldHVybiBlbGVtZW50LnNjcm9sbFdpZHRoID4gZWxlbWVudC5jbGllbnRXaWR0aDtcclxuICB9XHJcblxyXG5cclxuICAvLyBQaWN0dXJlIGNlbGwgTG9naWNcclxuICBjb2xvckNvbWJpbmF0aW9uID0gWydwaWMtY29tYjEnLCAncGljLWNvbWIyJywgJ3BpYy1jb21iNCddO1xyXG4gIGdldER5bmFtaWNDbGFzcyhuYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgaWYgKCFuYW1lKSByZXR1cm4gdGhpcy5jb2xvckNvbWJpbmF0aW9uWzBdO1xyXG4gICAgY29uc3QgaGFzaCA9IEFycmF5LmZyb20obmFtZSkucmVkdWNlKChhY2MsIGNoYXIpID0+IGFjYyArIGNoYXIuY2hhckNvZGVBdCgwKSwgMCk7XHJcbiAgICBjb25zdCBpbmRleCA9IGhhc2ggJSB0aGlzLmNvbG9yQ29tYmluYXRpb24/Lmxlbmd0aDtcclxuICAgIHJldHVybiB0aGlzLmNvbG9yQ29tYmluYXRpb25baW5kZXhdO1xyXG4gIH1cclxuXHJcbiAgZ2V0SW5pdGlhbHMobmFtZTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGlmICghbmFtZSkgcmV0dXJuICdOQSc7XHJcbiAgICBjb25zdCBwYXJ0cyA9IG5hbWUudHJpbSgpLnNwbGl0KCcgJyk7XHJcbiAgICByZXR1cm4gKHBhcnRzWzBdWzBdICsgKHBhcnRzWzFdPy5bMF0gfHwgJycpKS50b1VwcGVyQ2FzZSgpO1xyXG4gIH1cclxuXHJcblxyXG4gIGFjdGlvbkhpZGU6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIHhQb3MgPSAwO1xyXG4gIHlQb3MgPSAwO1xyXG4gIGlzVmlzaWJsZSA9IGZhbHNlO1xyXG4gIGRlYXRpbHNMaXN0OiBhbnk7XHJcbiAgb3BlbkV4cGVuZEluZGV4OiBhbnk7XHJcbiAgcG9zaXRpb25lZFlldCA9IGZhbHNlO1xyXG5cclxuICBvblJpZ2h0Q2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQgfCBUb3VjaEV2ZW50IHwgYW55LCBkZWF0aWxzTGlzdDogYW55KTogYm9vbGVhbiB7XHJcbiAgICBpZiAoZGVhdGlsc0xpc3Q/LmFjdGlvbnM/Lmxlbmd0aCkge1xyXG4gICAgICB0aGlzLmFjdGlvbnMgPSBkZWF0aWxzTGlzdC5hY3Rpb25zO1xyXG4gICAgfVxyXG4gICAgaWYgKCEoZXZlbnQgaW5zdGFuY2VvZiBNb3VzZUV2ZW50KSkge1xyXG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgfVxyXG4gICAgaWYgKGRlYXRpbHNMaXN0Ll9fdmlydHVhbEluZGV4ID09IDApIHJldHVybiBmYWxzZTtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICB0aGlzLnhQb3MgPSAoZXZlbnQgaW5zdGFuY2VvZiBNb3VzZUV2ZW50KSA/IGV2ZW50LmNsaWVudFggOiBldmVudC50b3VjaGVzWzBdLmNsaWVudFg7XHJcbiAgICB0aGlzLnlQb3MgPSAoZXZlbnQgaW5zdGFuY2VvZiBNb3VzZUV2ZW50KSA/IGV2ZW50LmNsaWVudFkgOiBldmVudC50b3VjaGVzWzBdLmNsaWVudFk7XHJcbiAgICAvLyB0aGlzLnhQb3MgPSBldmVudC5jbGllbnRYO1xyXG4gICAgLy8gdGhpcy55UG9zID0gZXZlbnQuY2xpZW50WTtcclxuICAgIHRoaXMuaXNWaXNpYmxlID0gdHJ1ZTtcclxuICAgIHRoaXMucG9zaXRpb25lZFlldCA9IGZhbHNlO1xyXG4gICAgdGhpcy5kZWF0aWxzTGlzdCA9IGRlYXRpbHNMaXN0O1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGNvbnN0IG1lbnVFbGVtZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmNvbnRleHQtbWVudScpIGFzIEhUTUxFbGVtZW50O1xyXG4gICAgICBpZiAoIW1lbnVFbGVtZW50KSByZXR1cm47XHJcbiAgICAgIGNvbnN0IG1lbnVXaWR0aCA9IG1lbnVFbGVtZW50Lm9mZnNldFdpZHRoO1xyXG4gICAgICBjb25zdCBtZW51SGVpZ2h0ID0gbWVudUVsZW1lbnQub2Zmc2V0SGVpZ2h0O1xyXG4gICAgICBjb25zdCB2aWV3cG9ydFdpZHRoID0gd2luZG93LmlubmVyV2lkdGg7XHJcbiAgICAgIGNvbnN0IHZpZXdwb3J0SGVpZ2h0ID0gd2luZG93LmlubmVySGVpZ2h0O1xyXG4gICAgICBsZXQgeCA9IChldmVudCBpbnN0YW5jZW9mIE1vdXNlRXZlbnQpID8gZXZlbnQuY2xpZW50WCA6IGV2ZW50LnRvdWNoZXNbMF0uY2xpZW50WDsgLy9ldmVudC5jbGllbnRYO1xyXG4gICAgICBsZXQgeSA9IChldmVudCBpbnN0YW5jZW9mIE1vdXNlRXZlbnQpID8gZXZlbnQuY2xpZW50WSA6IGV2ZW50LnRvdWNoZXNbMF0uY2xpZW50WTsgLy9ldmVudC5jbGllbnRZO1xyXG4gICAgICBpZiAoeCArIG1lbnVXaWR0aCA+IHZpZXdwb3J0V2lkdGgpIHtcclxuICAgICAgICB4ID0gdmlld3BvcnRXaWR0aCAtIG1lbnVXaWR0aCAtIDEwO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh5ICsgbWVudUhlaWdodCA+IHZpZXdwb3J0SGVpZ2h0KSB7XHJcbiAgICAgICAgeSA9IHZpZXdwb3J0SGVpZ2h0IC0gbWVudUhlaWdodCAtIDEwO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMueFBvcyA9IHg7XHJcbiAgICAgIHRoaXMueVBvcyA9IHk7XHJcbiAgICAgIHRoaXMuaXNWaXNpYmxlID0gdHJ1ZTtcclxuXHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMucG9zaXRpb25lZFlldCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpXHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBvbkFjdGlvbkNsaWNrKGFjdGlvbjogc3RyaW5nKSB7XHJcbiAgICBjb25zdCBzZW5kT2JqID0ge1xyXG4gICAgICBvYmo6IHRoaXMuZGVhdGlsc0xpc3QsXHJcbiAgICAgIGV2ZW50VHlwZTogYWN0aW9uLFxyXG4gICAgfTtcclxuICAgIHRoaXMucG9zaXRpb25lZFlldCA9IGZhbHNlO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgdGhpcy5nZW5lcmljRXZlbnQuZW1pdChzZW5kT2JqKTtcclxuICB9XHJcblxyXG5cclxuICBvblZlcmlmeUNsaWNrKHR5cGU6IHN0cmluZykge1xyXG4gICAgY29uc3QgaWRzQXJyYXkgPSBBcnJheS5mcm9tKHRoaXMuc2VsZWN0ZWRSb3dzKTtcclxuICAgIGNvbnN0IGFycmF5T2ZPYmplY3RzV2l0aFRhYmxlVHlwZTogYW55W10gPSBbXTtcclxuICAgIHRoaXMuc2VsZWN0ZWRSb3dzLmZvckVhY2goaWQgPT4ge1xyXG4gICAgICBhcnJheU9mT2JqZWN0c1dpdGhUYWJsZVR5cGUucHVzaCh7XHJcbiAgICAgICAgaWQ6IGlkLFxyXG4gICAgICAgIGxpc3RpbmdUeXBlOiB0aGlzLmxpc3RpbmdUeXBlLFxyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gICAgY29uc3Qgc2VuZE9iaiA9IHtcclxuICAgICAgZGF0YToge1xyXG4gICAgICAgIG9iajogaWRzQXJyYXksXHJcbiAgICAgICAgdGFibGVOYW1lOiB0aGlzLnRhYmxlTmFtZSxcclxuICAgICAgICBsaXN0aW5nVHlwZTogdGhpcy5saXN0aW5nVHlwZSxcclxuICAgICAgfSxcclxuICAgICAgZXZlbnRUeXBlOiB0eXBlLFxyXG4gICAgfTtcclxuICAgIHRoaXMuZ2VuZXJpY0V2ZW50LmVtaXQoc2VuZE9iailcclxuICB9XHJcblxyXG5cclxuXHJcbiAgZ2V0Q2VsbENsYXNzZXMoY29sdW1uOiBhbnksIHZhbHVlOiBhbnkpOiBzdHJpbmcge1xyXG4gICAgaWYgKCF2YWx1ZSB8fCAhY29sdW1uPy5maWVsZCB8fCBjb2x1bW4/LmNlbGxSZW5kZXJlcikgcmV0dXJuICcnO1xyXG5cclxuICAgIGxldCB2YWw6IGFueSA9IHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgPyB2YWx1ZT8udmFsdWUgPz8gdmFsdWUgOiB2YWx1ZTtcclxuICAgIGNvbnN0IGZpZWxkID0gY29sdW1uLmZpZWxkLnRvTG93ZXJDYXNlKCk7XHJcblxyXG4gICAgaWYgKGZpZWxkID09PSAnZHVlX2RhdGUnKSB7XHJcbiAgICAgIGNvbnN0IGR1ZURhdGUgPSBuZXcgRGF0ZSh2YWwpO1xyXG4gICAgICBjb25zdCB0b2RheSA9IG5ldyBEYXRlKCk7XHJcbiAgICAgIGNvbnN0IHRvZGF5VVRDID0gRGF0ZS5VVEModG9kYXkuZ2V0RnVsbFllYXIoKSwgdG9kYXkuZ2V0TW9udGgoKSwgdG9kYXkuZ2V0RGF0ZSgpKTtcclxuICAgICAgY29uc3QgZHVlVVRDID0gRGF0ZS5VVEMoZHVlRGF0ZS5nZXRGdWxsWWVhcigpLCBkdWVEYXRlLmdldE1vbnRoKCksIGR1ZURhdGUuZ2V0RGF0ZSgpKTtcclxuXHJcbiAgICAgIGlmIChkdWVVVEMgPCB0b2RheVVUQykge1xyXG4gICAgICAgIHJldHVybiAndGV4dC1kYW5nZXInO1xyXG4gICAgICB9XHJcbiAgICAgIC8vIGVsc2UgaWYoZHVlVVRDID09PSB0b2RheVVUQyl7XHJcbiAgICAgIC8vICAgcmV0dXJuICd0ZXh0LXdhcm5pbmcnO1xyXG4gICAgICAvLyB9XHJcblxyXG4gICAgICByZXR1cm4gJyc7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIGNvbnN0IHN0YXR1cyA9IHZhbD8udG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgaWYgKFxyXG4gICAgICBmaWVsZCA9PT0gJ3N0YXR1cycgfHxcclxuICAgICAgZmllbGQgPT09ICdhY2NvdW50X3N0YXR1cycgfHxcclxuICAgICAgZmllbGQgPT09ICdhdmFpbHN0YXR1cycgfHxcclxuICAgICAgZmllbGQgPT09ICdpc19jdXN0b21fZ3JhZGUnXHJcbiAgICApIHtcclxuICAgICAgcmV0dXJuIFNUQVRVU0VTX0JBREdFX01BUFtzdGF0dXNdIHx8ICdiYWRnZSBiYWRnZS1zZWNvbmRhcnknO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiAnJztcclxuICB9XHJcblxyXG5cclxuICByZW1vdmVDb2x1bW5GaWx0ZXJGcm9tQ29sdW1uKGNvbHVtbjogYW55KSB7XHJcbiAgICBpZiAoIWNvbHVtbikgcmV0dXJuXHJcbiAgICBpZiAoY29sdW1uLnR5cGUgPT09ICdkcm9wZG93bicpIHtcclxuICAgICAgY29sdW1uLnF1ZXJ5Ll9pZHMgPSBbXTtcclxuICAgIH0gZWxzZSBpZiAoWydzdHJpbmcnLCAnbnVtYmVyJywgJ2RhdGUnXS5pbmNsdWRlcyhjb2x1bW4udHlwZSkpIHtcclxuICAgICAgY29sdW1uLnF1ZXJ5ID0ge1xyXG4gICAgICAgIGZpcnN0X2NvbmRpdGlvbjogJ2NvbnRhaW4nLFxyXG4gICAgICAgIGZpcnN0X3ZhbHVlOiBudWxsLFxyXG4gICAgICAgIGNvbmRpdGlvbjogJ25vbmUnLFxyXG4gICAgICAgIHNlY29uZF9jb25kaXRpb246IG51bGwsXHJcbiAgICAgICAgc2Vjb25kX3ZhbHVlOiBudWxsLFxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgaW5kZXggPSB0aGlzLmZpbHRlcnNDb25maWcuZmluZEluZGV4KChmOiBhbnkpID0+IGYuZmllbGQgPT09IGNvbHVtbi5maWVsZCk7XHJcbiAgICBpZiAoaW5kZXggIT09IC0xKSB7XHJcbiAgICAgIHRoaXMuZmlsdGVyc0NvbmZpZy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGZpbHRlcmVkQ29sdW1ucyA9IHRoaXMuY29tbW9uU2V2aWNlLmdldEZpbHRlcnNGcm9tQ29sdW1ucyh0aGlzLmNvbHVtbnMsIHRoaXMuZmlsdGVyc0NvbmZpZyk7XHJcbiAgICBjb25zdCBjbGVhbmVkRmlsdGVyZWRDb2x1bW5zID0gZmlsdGVyZWRDb2x1bW5zLm1hcCgoeyBxdWVyeSwgLi4ucmVzdCB9KSA9PiB7XHJcbiAgICAgIGlmIChxdWVyeSkge1xyXG4gICAgICAgIGRlbGV0ZSBxdWVyeS5fX3R5cGVuYW1lO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgcXVlcnksXHJcbiAgICAgICAgLi4ucmVzdCxcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgY29uc3Qgc2VuZERhdGEgPSB7XHJcbiAgICAgIGNvbHVtbnM6IHRoaXMuY2xlYW5Db2x1bW5zKHRoaXMuY29sdW1ucyksXHJcbiAgICAgIGZpbHRlcnM6IGNsZWFuZWRGaWx0ZXJlZENvbHVtbnMsXHJcbiAgICAgIG5vX29mX3JlY29yZHM6IE51bWJlcih0aGlzLnBhZ2luYXRpb25Db25maWcubGltaXQpLFxyXG4gICAgICB0eXBlOiB0aGlzLnRhYmxlVHlwZSxcclxuICAgIH07XHJcbiAgICB0aGlzLmNyZWF0ZVVwZGF0ZUNvbmZpZ0xpc3RpbmcuZW1pdChzZW5kRGF0YSk7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgY29uc3QgZmlsdGVyZWRDb2x1bW5zID0gY2xlYW5lZEZpbHRlcmVkQ29sdW1ucztcclxuICAgICAgdGhpcy5maWx0ZXJPcHRpb25zLmVtaXQoZmlsdGVyZWRDb2x1bW5zKTtcclxuICAgIH0sIDIwMCk7XHJcbiAgfVxyXG5cclxuICBvblNpZGVNZW51Q29sdW1uc1Zpc2liaWxpdHlDaGFuZ2UoKSB7XHJcbiAgICB0aGlzLnJlZnJlc2hIZWFkZXJzKCk7XHJcbiAgICBjb25zdCBzZW5kRGF0YSA9IHtcclxuICAgICAgY29sdW1uczogdGhpcy5jbGVhbkNvbHVtbnModGhpcy5jb2x1bW5zKSxcclxuICAgICAgZmlsdGVyczogdGhpcy5jb21tb25TZXZpY2UuZ2V0RmlsdGVyc0Zyb21Db2x1bW5zKHRoaXMuY29sdW1ucywgdGhpcy5maWx0ZXJzQ29uZmlnKS5tYXAoKHsgcXVlcnksIC4uLnJlc3QgfSkgPT4ge1xyXG4gICAgICAgIGlmIChxdWVyeSkge1xyXG4gICAgICAgICAgZGVsZXRlIHF1ZXJ5Ll9fdHlwZW5hbWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICBxdWVyeSxcclxuICAgICAgICAgIC4uLnJlc3QsXHJcbiAgICAgICAgfVxyXG4gICAgICB9KSxcclxuICAgICAgbm9fb2ZfcmVjb3JkczogdGhpcy5wYWdpbmF0aW9uQ29uZmlnLnBhZ2VTaXplLFxyXG4gICAgICB0eXBlOiB0aGlzLnRhYmxlVHlwZSxcclxuICAgIH07XHJcbiAgICB0aGlzLmNyZWF0ZVVwZGF0ZUNvbmZpZ0xpc3RpbmcuZW1pdChzZW5kRGF0YSk7XHJcbiAgfVxyXG5cclxuICBjbGVhbkZpbHRlcmRDb2x1bW5zKCkge1xyXG4gICAgY29uc3QgZmlsdGVyZWRDb2x1bW5zID0gdGhpcy5jb21tb25TZXZpY2UuZ2V0RmlsdGVyc0Zyb21Db2x1bW5zKHRoaXMuY29sdW1ucywgdGhpcy5maWx0ZXJzQ29uZmlnKTtcclxuICAgIGNvbnN0IGNsZWFuZWRGaWx0ZXJlZENvbHVtbnMgPSBmaWx0ZXJlZENvbHVtbnMubWFwKCh7IHF1ZXJ5LCAuLi5yZXN0IH0pID0+IHtcclxuICAgICAgaWYgKHF1ZXJ5KSB7XHJcbiAgICAgICAgZGVsZXRlIHF1ZXJ5Ll9fdHlwZW5hbWU7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICBxdWVyeSxcclxuICAgICAgICAuLi5yZXN0LFxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBjbGVhbmVkRmlsdGVyZWRDb2x1bW5zO1xyXG4gIH1cclxuXHJcbiAgZG93bmxvYWRDc3YodHlwZTogJ2NzdicgfCAneGxzeCcpIHtcclxuICAgIGNvbnN0IGNvbmZpZzogYW55ID0ge1xyXG4gICAgICBoZWFkZXJCZ0NvbG9yOiB0aGlzLmhlYWRlckJhY2tncm91bmRDb2xvcixcclxuICAgICAgaGVhZGVyVGV4dENvbG9yOiB0aGlzLmhlYWRlclRleHRDb2xvcixcclxuICAgICAgYm9keVRleHRDb2xvcjogJyMwMDAwMDAnLFxyXG4gICAgICBmb250RmFtaWx5OiB0aGlzLmZvbnRGYWltbHksXHJcbiAgICAgIGZvbnRXZWlnaHQ6ICdub3JtYWwnLFxyXG4gICAgICB6b29tU2NhbGU6IDEyNSxcclxuICAgICAgaGVhZGVyUm93SGVpZ2h0OiAzMFxyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuZW5hYmxlRXhwb3J0KSB7XHJcbiAgICAgIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XHJcbiAgICAgIGNvbnN0IGRkID0gU3RyaW5nKG5vdy5nZXREYXRlKCkpLnBhZFN0YXJ0KDIsICcwJyk7XHJcbiAgICAgIGNvbnN0IG1tID0gU3RyaW5nKG5vdy5nZXRNb250aCgpICsgMSkucGFkU3RhcnQoMiwgJzAnKTtcclxuICAgICAgY29uc3QgeXl5eSA9IG5vdy5nZXRGdWxsWWVhcigpO1xyXG4gICAgICBjb25zdCBISCA9IFN0cmluZyhub3cuZ2V0SG91cnMoKSkucGFkU3RhcnQoMiwgJzAnKTtcclxuICAgICAgY29uc3QgTU0gPSBTdHJpbmcobm93LmdldE1pbnV0ZXMoKSkucGFkU3RhcnQoMiwgJzAnKTtcclxuICAgICAgY29uc3QgZm9ybWF0dGVkID1cclxuICAgICAgICBgJHt0aGlzLnRhYmxlVHlwZX1fJHtkZH0tJHttbX0tJHt5eXl5fV8ke0hIfS0ke01NfWA7XHJcblxyXG4gICAgICBjb25zb2xlLmxvZyhmb3JtYXR0ZWQpO1xyXG5cclxuICAgICAgdGhpcy5leHBvcnRTZXJ2aWNlLmV4cG9ydERhdGEodGhpcy5jb2x1bW5zLCB0aGlzLmRhdGFTZXQsIGZvcm1hdHRlZCwgdHlwZSwgdGhpcy5yb3dTZWxlY3RlZEluZGV4ZXMsIGNvbmZpZyk7XHJcbiAgICB9XHJcbiAgICBjb25zdCBldmVudCA9IHtcclxuICAgICAgb2JqOiB7XHJcbiAgICAgICAgY29sdW1uczogdGhpcy5jb2x1bW5zLFxyXG4gICAgICAgIGZpbHRlcnM6IFtdXHJcbiAgICAgIH0sXHJcbiAgICAgIGV2ZW50VHlwZTogJ2Rvd25sb2FkQ3N2J1xyXG4gICAgfVxyXG4gICAgaWYgKHR5cGUgPT0gJ3hsc3gnKSB7XHJcbiAgICAgIHJldHVyblxyXG4gICAgfVxyXG4gICAgdGhpcy5nZW5lcmljRXZlbnQuZW1pdChldmVudClcclxuXHJcbiAgfVxyXG5cclxuICBvbkZvbnRDaGFuZ2UoKSB7XHJcbiAgICB0aGlzLmhlYWRlclRleHRGb250c1NpemUgPSB0aGlzLmJvZHlUZXh0Rm9udHNTaXplO1xyXG4gICAgY29uc3QgY29uZmlnID0ge1xyXG4gICAgICBmb250RmFpbWx5OiB0aGlzLmZvbnRGYWltbHksXHJcbiAgICAgIGJvZHlUZXh0Rm9udHNTaXplOiB0aGlzLmJvZHlUZXh0Rm9udHNTaXplLFxyXG4gICAgICBoZWFkZXJUZXh0Rm9udHNTaXplOiB0aGlzLmhlYWRlclRleHRGb250c1NpemUsXHJcbiAgICAgIG9kZFJvd3NCYWNrZ3JvdW5kQ29sb3I6IHRoaXMucm93U2hhZGluZ0VuYWJsZWQgPyB0aGlzLm9kZFJvd3NCYWNrZ3JvdW5kQ29sb3IgOiB1bmRlZmluZWQsXHJcbiAgICAgIHNob3dWZXJ0aWNhbEJvcmRlcjogdGhpcy5zaG93VmVydGljYWxCb3JkZXIsXHJcbiAgICAgIHNlbGVjdGVkVGFibGVMYXlvdXQ6IHRoaXMuc2VsZWN0ZWRUYWJsZUxheW91dCxcclxuICAgICAgZ2xvYmFsU2VhcmNoOiB0aGlzLnRhYmxlU2VhcmNoXHJcbiAgICB9XHJcbiAgICBjb25zdCBldmVudCA9IHtcclxuICAgICAgb2JqOiB7XHJcbiAgICAgICAgZGF0YTogY29uZmlnXHJcbiAgICAgIH0sXHJcbiAgICAgIGV2ZW50VHlwZTogJ2NvbmZpZydcclxuICAgIH1cclxuICAgIHRoaXMuZ2VuZXJpY0V2ZW50LmVtaXQoZXZlbnQpXHJcbiAgfVxyXG5cclxuICBvbkdsb2JhbFNlYXJjaCgpIHtcclxuICAgIGNvbnN0IGV2ZW50ID0ge1xyXG4gICAgICBvYmo6IHtcclxuICAgICAgICB0YWJsZVNlYXJjaDogdGhpcy50YWJsZVNlYXJjaFxyXG4gICAgICB9LFxyXG4gICAgICBldmVudFR5cGU6ICdzZWFyY2gnXHJcbiAgICB9XHJcbiAgICB0aGlzLmdlbmVyaWNFdmVudC5lbWl0KGV2ZW50KVxyXG4gICAgaWYgKHRoaXMudGFibGVGaWx0ZXJWaWV3SWQpIHtcclxuICAgICAgdGhpcy5zYXZlUHJlc2V0KCdtb3VzZVVwJyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvblNlYXJjaElucHV0KGV2ZW50OiBFdmVudCkge1xyXG4gICAgY29uc3QgdmFsdWUgPSAoZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLnZhbHVlO1xyXG4gICAgLy8gY29uc29sZS5sb2coJ1NlYXJjaCB2YWx1ZTonLCB2YWx1ZSk7XHJcblxyXG4gICAgaWYgKHZhbHVlID09PSAnJykge1xyXG4gICAgICB0aGlzLnRhYmxlU2VhcmNoID0gJyc7XHJcbiAgICAgIHRoaXMub25HbG9iYWxTZWFyY2goKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNoZWNrRmlsdGVyQ2hhbmdlc0VmZmVjdCgpOiBhbnkge1xyXG4gICAgaWYgKCF0aGlzLnRhYmxlRmlsdGVyVmlld0lkKSByZXR1cm4gdHJ1ZVxyXG4gICAgY29uc3QgZmluZERlZmF1bHRGaWx0ZXIgPSB0aGlzLnRhYmxlVmlldz8uZmluZCgoZWxlOiBhbnkpID0+IGVsZT8uaWQgPT0gdGhpcy50YWJsZUZpbHRlclZpZXdJZCk7XHJcbiAgICBjb25zdCBub3JtYWxpemVGaWx0ZXJzID0gKGZpbHRlcnM6IGFueVtdIHwgdW5kZWZpbmVkKTogYW55W10gPT4ge1xyXG4gICAgICBpZiAoIUFycmF5LmlzQXJyYXkoZmlsdGVycykpIHJldHVybiBbXTtcclxuICAgICAgY29uc3QgY2xvbmVkID0gZmlsdGVycy5tYXAoZiA9PiB7XHJcbiAgICAgICAgY29uc3QgaXRlbSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoZiA/PyB7fSkpO1xyXG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShpdGVtLl9pZHMpKSBpdGVtLl9pZHMgPSBbXTtcclxuICAgICAgICBpdGVtLl9pZHMgPSBpdGVtLl9pZHMuc2xpY2UoKS5zb3J0KChhOiBhbnksIGI6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKHR5cGVvZiBhID09PSAnbnVtYmVyJyAmJiB0eXBlb2YgYiA9PT0gJ251bWJlcicpIHJldHVybiBhIC0gYjtcclxuICAgICAgICAgIHJldHVybiAoJycgKyBhKS5sb2NhbGVDb21wYXJlKCcnICsgYik7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIGlmIChpdGVtLnF1ZXJ5ID09PSBudWxsKSB7XHJcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgaXRlbS5xdWVyeSA9PT0gJ29iamVjdCcpIHtcclxuICAgICAgICAgIGlmICghQXJyYXkuaXNBcnJheShpdGVtLnF1ZXJ5Ll9pZHMpKSBpdGVtLnF1ZXJ5Ll9pZHMgPSBbXTtcclxuICAgICAgICAgIGl0ZW0ucXVlcnkuX2lkcyA9IGl0ZW0ucXVlcnkuX2lkcy5zbGljZSgpLnNvcnQoKGE6IGFueSwgYjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGlmICh0eXBlb2YgYSA9PT0gJ251bWJlcicgJiYgdHlwZW9mIGIgPT09ICdudW1iZXInKSByZXR1cm4gYSAtIGI7XHJcbiAgICAgICAgICAgIHJldHVybiAoJycgKyBhKS5sb2NhbGVDb21wYXJlKCcnICsgYik7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBpdGVtO1xyXG4gICAgICB9KTtcclxuICAgICAgY2xvbmVkLnNvcnQoKGE6IGFueSwgYjogYW55KSA9PiB7XHJcbiAgICAgICAgY29uc3QgZmEgPSAoYS5maWVsZCB8fCAnJykgKyAnfCcgKyAoYS50eXBlIHx8ICcnKTtcclxuICAgICAgICBjb25zdCBmYiA9IChiLmZpZWxkIHx8ICcnKSArICd8JyArIChiLnR5cGUgfHwgJycpO1xyXG4gICAgICAgIHJldHVybiBmYS5sb2NhbGVDb21wYXJlKGZiKTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgICByZXR1cm4gY2xvbmVkO1xyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCBkZWVwRXF1YWwgPSAoYTogYW55LCBiOiBhbnkpOiBib29sZWFuID0+IHtcclxuICAgICAgaWYgKGEgPT09IGIpIHJldHVybiB0cnVlO1xyXG5cclxuICAgICAgaWYgKHR5cGVvZiBhICE9PSAnb2JqZWN0JyB8fCBhID09PSBudWxsIHx8IHR5cGVvZiBiICE9PSAnb2JqZWN0JyB8fCBiID09PSBudWxsKSB7XHJcbiAgICAgICAgcmV0dXJuIGEgPT09IGI7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KGEpICE9PSBBcnJheS5pc0FycmF5KGIpKSByZXR1cm4gZmFsc2U7XHJcblxyXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShhKSkge1xyXG4gICAgICAgIGlmIChhLmxlbmd0aCAhPT0gYi5sZW5ndGgpIHJldHVybiBmYWxzZTtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGEubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIGlmICghZGVlcEVxdWFsKGFbaV0sIGJbaV0pKSByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBjb25zdCBrZXlzQSA9IE9iamVjdC5rZXlzKGEpO1xyXG4gICAgICBjb25zdCBrZXlzQiA9IE9iamVjdC5rZXlzKGIpO1xyXG4gICAgICBpZiAoa2V5c0EubGVuZ3RoICE9PSBrZXlzQi5sZW5ndGgpIHJldHVybiBmYWxzZTtcclxuXHJcbiAgICAgIGZvciAoY29uc3Qga2V5IG9mIGtleXNBKSB7XHJcbiAgICAgICAgaWYgKCFrZXlzQi5pbmNsdWRlcyhrZXkpKSByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgaWYgKCFkZWVwRXF1YWwoYVtrZXldLCBiW2tleV0pKSByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9O1xyXG4gICAgY29uc3Qgbm9ybWFsaXplZEEgPSBub3JtYWxpemVGaWx0ZXJzKGZpbmREZWZhdWx0RmlsdGVyPy5maWx0ZXJzKTtcclxuICAgIGNvbnN0IG5vcm1hbGl6ZWRCID0gbm9ybWFsaXplRmlsdGVycyh0aGlzLmZpbHRlcnNDb25maWcpO1xyXG4gICAgY29uc3QgaXNTYW1lID0gZGVlcEVxdWFsKG5vcm1hbGl6ZWRBLCBub3JtYWxpemVkQik7XHJcbiAgICByZXR1cm4gaXNTYW1lO1xyXG4gIH1cclxuXHJcblxyXG5cclxuICAvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbiAgLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4gIC8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuICAvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbiAgLy8gQ2VsbCBTZWxlY3Rpb24gSW1wbGVtZW50ZWQgSGVyZSBJbXBsZW1lbnRlZCBIZXJlXHJcbiAgLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4gIC8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuICAvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbiAgLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5cclxuICBzZWxlY3RlZENlbGxzOiBhbnlbXSA9IFtdO1xyXG4gIHNlbGVjdGVkS2V5czogU2V0PHN0cmluZz4gPSBuZXcgU2V0KCk7XHJcbiAgc2VsZWN0aW9uU3RhcnQ6IGFueSA9IG51bGw7XHJcbiAgaXNTZWxlY3RpbmcgPSBmYWxzZTtcclxuICBzdGFydFNlbGVjdGlvbihcclxuICAgIHJvd0luZGV4OiBudW1iZXIsXHJcbiAgICBjb2xJbmRleDogbnVtYmVyLFxyXG4gICAgc3ViQ29sSW5kZXg6IG51bWJlciB8IG51bGwsXHJcbiAgICBmaWVsZDogc3RyaW5nLFxyXG4gICAgZXZlbnQ6IE1vdXNlRXZlbnQsXHJcbiAgICBzZWN0aW9uOiBzdHJpbmdcclxuICApIHtcclxuICAgIC8vIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICB0aGlzLnJvd1NlbGVjdGVkSW5kZXhlcy5jbGVhcigpO1xyXG4gICAgY29uc3Qgc2FmZVN1YiA9IHN1YkNvbEluZGV4ID8/IDA7XHJcbiAgICBjb25zdCBrZXkgPSBgJHtyb3dJbmRleH0tJHtjb2xJbmRleH0tJHtzYWZlU3VifS0ke2ZpZWxkfWA7XHJcblxyXG4gICAgdGhpcy5zZWxlY3Rpb25TdGFydCA9IHsgcm93SW5kZXgsIGNvbEluZGV4LCBzdWJDb2xJbmRleDogc2FmZVN1YiwgZmllbGQsIGtleSB9O1xyXG4gICAgdGhpcy5pc1NlbGVjdGluZyA9IHRydWU7XHJcbiAgICB0aGlzLnNlbGVjdGVkS2V5cy5jbGVhcigpO1xyXG4gICAgdGhpcy5zZWxlY3RlZEtleXMuYWRkKGtleSk7XHJcbiAgICB0aGlzLnNlbGVjdGVkQ2VsbHMgPSBbdGhpcy5zZWxlY3Rpb25TdGFydF07XHJcbiAgICBjb25zdCBtb3VzZVVwSGFuZGxlciA9ICgpID0+IHtcclxuICAgICAgdGhpcy5lbmRTZWxlY3Rpb24oKTtcclxuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIG1vdXNlVXBIYW5kbGVyKTtcclxuICAgIH07XHJcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgbW91c2VVcEhhbmRsZXIpO1xyXG4gICAgdGhpcy51cGRhdGVTZWxlY3Rpb25Cb3VuZGFyaWVzKClcclxuICB9XHJcblxyXG5cclxuICBleHRlbmRTZWxlY3Rpb24oXHJcbiAgICByb3dJbmRleDogbnVtYmVyLFxyXG4gICAgY29sSW5kZXg6IG51bWJlcixcclxuICAgIHN1YkNvbEluZGV4OiBudW1iZXIgfCBudWxsLFxyXG4gICAgZmllbGQ6IHN0cmluZyxcclxuICAgIGV2ZW50OiBNb3VzZUV2ZW50LFxyXG4gICAgc2VjdGlvbjogc3RyaW5nXHJcbiAgKSB7XHJcbiAgICBpZiAoIXRoaXMuaXNTZWxlY3RpbmcgfHwgIXRoaXMuc2VsZWN0aW9uU3RhcnQpIHJldHVybjtcclxuXHJcbiAgICBjb25zdCBzdGFydCA9IHRoaXMuc2VsZWN0aW9uU3RhcnQ7XHJcbiAgICBjb25zdCB0YXJnZXRTdWJDb2xJbmRleCA9IHN1YkNvbEluZGV4ID8/IDA7XHJcbiAgICBjb25zdCBuZXdLZXlzOiBTZXQ8c3RyaW5nPiA9IG5ldyBTZXQoKTtcclxuICAgIGNvbnN0IG5ld0NlbGxzOiBhbnlbXSA9IFtdO1xyXG4gICAgY29uc3QgbWluUm93ID0gTWF0aC5taW4oc3RhcnQucm93SW5kZXgsIHJvd0luZGV4KTtcclxuICAgIGNvbnN0IG1heFJvdyA9IE1hdGgubWF4KHN0YXJ0LnJvd0luZGV4LCByb3dJbmRleCk7XHJcbiAgICBjb25zdCBjb2x1bW5zVG9TZWxlY3QgPSB0aGlzLmdldENvbHVtblNlbGVjdGlvblJhbmdlKHN0YXJ0LmNvbEluZGV4LCBjb2xJbmRleCwgc3RhcnQuc3ViQ29sSW5kZXgsIHRhcmdldFN1YkNvbEluZGV4KTtcclxuXHJcbiAgICBmb3IgKGxldCByID0gbWluUm93OyByIDw9IG1heFJvdzsgcisrKSB7XHJcbiAgICAgIGZvciAoY29uc3QgY29sSW5mbyBvZiBjb2x1bW5zVG9TZWxlY3QpIHtcclxuICAgICAgICBjb25zdCBrID0gYCR7cn0tJHtjb2xJbmZvLmNvbEluZGV4fS0ke2NvbEluZm8uc3ViQ29sSW5kZXh9LSR7c2VjdGlvbn1gO1xyXG4gICAgICAgIG5ld0tleXMuYWRkKGspO1xyXG4gICAgICAgIG5ld0NlbGxzLnB1c2goe1xyXG4gICAgICAgICAgcm93SW5kZXg6IHIsXHJcbiAgICAgICAgICBjb2xJbmRleDogY29sSW5mby5jb2xJbmRleCxcclxuICAgICAgICAgIHN1YkNvbEluZGV4OiBjb2xJbmZvLnN1YkNvbEluZGV4LFxyXG4gICAgICAgICAgZmllbGQsXHJcbiAgICAgICAgICBrZXk6IGtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuc2VsZWN0ZWRLZXlzID0gbmV3S2V5cztcclxuICAgIHRoaXMuc2VsZWN0ZWRDZWxscyA9IG5ld0NlbGxzO1xyXG4gICAgdGhpcy51cGRhdGVTZWxlY3Rpb25Cb3VuZGFyaWVzKCk7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcblxyXG4gICAgLy8gQWRkIGF1dG8tc2Nyb2xsaW5nIGxvZ2ljXHJcbiAgICB0aGlzLmhhbmRsZUNlbGxBdXRvU2Nyb2xsKGV2ZW50KTtcclxuICB9XHJcblxyXG5cclxuXHJcblxyXG4gIGdldENvbHVtblNlbGVjdGlvblJhbmdlKFxyXG4gICAgc3RhcnRDb2w6IG51bWJlcixcclxuICAgIGVuZENvbDogbnVtYmVyLFxyXG4gICAgc3RhcnRTdWI6IG51bWJlcixcclxuICAgIGVuZFN1YjogbnVtYmVyXHJcbiAgKTogeyBjb2xJbmRleDogbnVtYmVyOyBzdWJDb2xJbmRleDogbnVtYmVyIH1bXSB7XHJcbiAgICBjb25zdCByZXN1bHQ6IHsgY29sSW5kZXg6IG51bWJlcjsgc3ViQ29sSW5kZXg6IG51bWJlciB9W10gPSBbXTtcclxuICAgIGNvbnN0IG1pbkNvbCA9IE1hdGgubWluKHN0YXJ0Q29sLCBlbmRDb2wpO1xyXG4gICAgY29uc3QgbWF4Q29sID0gTWF0aC5tYXgoc3RhcnRDb2wsIGVuZENvbCk7XHJcblxyXG4gICAgY29uc3QgaXNMZWZ0VG9SaWdodCA9IHN0YXJ0Q29sIDw9IGVuZENvbDtcclxuICAgIGZvciAobGV0IGMgPSBtaW5Db2w7IGMgPD0gbWF4Q29sOyBjKyspIHtcclxuICAgICAgY29uc3Qgc3ViQ29sQ291bnQgPSB0aGlzLmdldFN1YkNvbHVtbkNvdW50KGMpO1xyXG5cclxuICAgICAgaWYgKGMgPT09IHN0YXJ0Q29sICYmIGMgPT09IGVuZENvbCkge1xyXG4gICAgICAgIGNvbnN0IG1pblN1YiA9IE1hdGgubWluKHN0YXJ0U3ViLCBlbmRTdWIpO1xyXG4gICAgICAgIGNvbnN0IG1heFN1YiA9IE1hdGgubWF4KHN0YXJ0U3ViLCBlbmRTdWIpO1xyXG4gICAgICAgIGZvciAobGV0IHMgPSBtaW5TdWI7IHMgPD0gbWF4U3ViICYmIHMgPCBzdWJDb2xDb3VudDsgcysrKSB7XHJcbiAgICAgICAgICByZXN1bHQucHVzaCh7IGNvbEluZGV4OiBjLCBzdWJDb2xJbmRleDogcyB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAoYyA9PT0gc3RhcnRDb2wpIHtcclxuICAgICAgICBpZiAoaXNMZWZ0VG9SaWdodCkge1xyXG4gICAgICAgICAgZm9yIChsZXQgcyA9IHN0YXJ0U3ViOyBzIDwgc3ViQ29sQ291bnQ7IHMrKykge1xyXG4gICAgICAgICAgICByZXN1bHQucHVzaCh7IGNvbEluZGV4OiBjLCBzdWJDb2xJbmRleDogcyB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgZm9yIChsZXQgcyA9IDA7IHMgPD0gc3RhcnRTdWIgJiYgcyA8IHN1YkNvbENvdW50OyBzKyspIHtcclxuICAgICAgICAgICAgcmVzdWx0LnB1c2goeyBjb2xJbmRleDogYywgc3ViQ29sSW5kZXg6IHMgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKGMgPT09IGVuZENvbCkge1xyXG4gICAgICAgIGlmIChpc0xlZnRUb1JpZ2h0KSB7XHJcbiAgICAgICAgICBmb3IgKGxldCBzID0gMDsgcyA8PSBlbmRTdWIgJiYgcyA8IHN1YkNvbENvdW50OyBzKyspIHtcclxuICAgICAgICAgICAgcmVzdWx0LnB1c2goeyBjb2xJbmRleDogYywgc3ViQ29sSW5kZXg6IHMgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGZvciAobGV0IHMgPSBlbmRTdWI7IHMgPCBzdWJDb2xDb3VudDsgcysrKSB7XHJcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKHsgY29sSW5kZXg6IGMsIHN1YkNvbEluZGV4OiBzIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBmb3IgKGxldCBzID0gMDsgcyA8IHN1YkNvbENvdW50OyBzKyspIHtcclxuICAgICAgICAgIHJlc3VsdC5wdXNoKHsgY29sSW5kZXg6IGMsIHN1YkNvbEluZGV4OiBzIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiByZXN1bHQ7XHJcbiAgfVxyXG5cclxuICBnZXRTdWJDb2x1bW5Db3VudChjb2xJbmRleDogbnVtYmVyKTogbnVtYmVyIHtcclxuICAgIGlmICghdGhpcy5jb2x1bW5zIHx8IGNvbEluZGV4IDwgMCB8fCBjb2xJbmRleCA+PSB0aGlzLmNvbHVtbnMubGVuZ3RoKSB7XHJcbiAgICAgIHJldHVybiAxO1xyXG4gICAgfVxyXG4gICAgY29uc3QgY29sdW1uID0gdGhpcy5jb2x1bW5zW2NvbEluZGV4XTtcclxuICAgIGlmIChjb2x1bW4uY2hpbGRyZW4gJiYgQXJyYXkuaXNBcnJheShjb2x1bW4uY2hpbGRyZW4pKSB7XHJcbiAgICAgIHJldHVybiBjb2x1bW4uY2hpbGRyZW4ubGVuZ3RoO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIDE7XHJcbiAgfVxyXG4gIGlzR3JvdXBDb2x1bW4oY29sSW5kZXg6IG51bWJlcik6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0U3ViQ29sdW1uQ291bnQoY29sSW5kZXgpID4gMTtcclxuICB9XHJcbiAgZW5kU2VsZWN0aW9uKCkge1xyXG4gICAgdGhpcy5pc1NlbGVjdGluZyA9IGZhbHNlO1xyXG4gICAgdGhpcy5zdG9wQXV0b1Njcm9sbCgpO1xyXG4gICAgdGhpcy51cGRhdGVTZWxlY3Rpb25Cb3VuZGFyaWVzKCk7XHJcbiAgfVxyXG4gIGlzU2VsZWN0ZWQoXHJcbiAgICByb3dJbmRleDogbnVtYmVyLFxyXG4gICAgY29sSW5kZXg6IG51bWJlcixcclxuICAgIHN1YkNvbEluZGV4OiBudW1iZXIgfCBudWxsLFxyXG4gICAgZmllbGQ6IHN0cmluZyxcclxuICAgIHNlY3Rpb246IHN0cmluZ1xyXG4gICkge1xyXG4gICAgY29uc3Qgc2FmZVN1YiA9IHN1YkNvbEluZGV4ID8/IDA7XHJcbiAgICBjb25zdCBrZXkgPSBgJHtyb3dJbmRleH0tJHtjb2xJbmRleH0tJHtzYWZlU3VifS0ke3NlY3Rpb259YDtcclxuICAgIHJldHVybiB0aGlzLnNlbGVjdGVkS2V5cy5oYXMoa2V5KTtcclxuICB9XHJcblxyXG5cclxuICBwcml2YXRlIHNlbGVjdGlvbkJvdW5kczoge1xyXG4gICAgdG9wOiBudW1iZXIgfCBudWxsO1xyXG4gICAgYm90dG9tOiBudW1iZXIgfCBudWxsO1xyXG4gICAgbGVmdDogeyBjb2xJbmRleDogbnVtYmVyOyBzdWJDb2xJbmRleDogbnVtYmVyIH0gfCBudWxsO1xyXG4gICAgcmlnaHQ6IHsgY29sSW5kZXg6IG51bWJlcjsgc3ViQ29sSW5kZXg6IG51bWJlciB9IHwgbnVsbDtcclxuICB9ID0geyB0b3A6IG51bGwsIGJvdHRvbTogbnVsbCwgbGVmdDogbnVsbCwgcmlnaHQ6IG51bGwgfTtcclxuXHJcbiAgdXBkYXRlU2VsZWN0aW9uQm91bmRhcmllcygpIHtcclxuICAgIGlmICh0aGlzLnNlbGVjdGVkQ2VsbHMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0aW9uQm91bmRzID0geyB0b3A6IG51bGwsIGJvdHRvbTogbnVsbCwgbGVmdDogbnVsbCwgcmlnaHQ6IG51bGwgfTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIEdldCBhbGwgdW5pcXVlIHJvdyBpbmRpY2VzIGFuZCBmaW5kIG1pbi9tYXhcclxuICAgIGNvbnN0IHJvd0luZGljZXMgPSBbLi4ubmV3IFNldCh0aGlzLnNlbGVjdGVkQ2VsbHMubWFwKGNlbGwgPT4gY2VsbC5yb3dJbmRleCkpXTtcclxuICAgIHRoaXMuc2VsZWN0aW9uQm91bmRzLnRvcCA9IE1hdGgubWluKC4uLnJvd0luZGljZXMpO1xyXG4gICAgdGhpcy5zZWxlY3Rpb25Cb3VuZHMuYm90dG9tID0gTWF0aC5tYXgoLi4ucm93SW5kaWNlcyk7XHJcblxyXG4gICAgLy8gRm9yIGxlZnQvcmlnaHQgYm91bmRhcmllcywgd2UgbmVlZCB0byBjb25zaWRlciBib3RoIGNvbEluZGV4IGFuZCBzdWJDb2xJbmRleFxyXG4gICAgY29uc3QgbGVmdE1vc3QgPSB0aGlzLmZpbmRMZWZ0TW9zdENlbGwoKTtcclxuICAgIGNvbnN0IHJpZ2h0TW9zdCA9IHRoaXMuZmluZFJpZ2h0TW9zdENlbGwoKTtcclxuXHJcbiAgICB0aGlzLnNlbGVjdGlvbkJvdW5kcy5sZWZ0ID0gbGVmdE1vc3Q7XHJcbiAgICB0aGlzLnNlbGVjdGlvbkJvdW5kcy5yaWdodCA9IHJpZ2h0TW9zdDtcclxuICB9XHJcbiAgZmluZExlZnRNb3N0Q2VsbCgpOiB7IGNvbEluZGV4OiBudW1iZXI7IHN1YkNvbEluZGV4OiBudW1iZXIgfSB8IG51bGwge1xyXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRDZWxscy5sZW5ndGggPT09IDApIHJldHVybiBudWxsO1xyXG5cclxuICAgIGNvbnN0IG1pbkNvbEluZGV4ID0gTWF0aC5taW4oLi4udGhpcy5zZWxlY3RlZENlbGxzLm1hcChjZWxsID0+IGNlbGwuY29sSW5kZXgpKTtcclxuICAgIGNvbnN0IGxlZnRDb2xDZWxscyA9IHRoaXMuc2VsZWN0ZWRDZWxscy5maWx0ZXIoY2VsbCA9PiBjZWxsLmNvbEluZGV4ID09PSBtaW5Db2xJbmRleCk7XHJcbiAgICBjb25zdCBtaW5TdWJDb2xJbmRleCA9IE1hdGgubWluKC4uLmxlZnRDb2xDZWxscy5tYXAoY2VsbCA9PiBjZWxsLnN1YkNvbEluZGV4KSk7XHJcblxyXG4gICAgcmV0dXJuIHsgY29sSW5kZXg6IG1pbkNvbEluZGV4LCBzdWJDb2xJbmRleDogbWluU3ViQ29sSW5kZXggfTtcclxuICB9XHJcbiAgZmluZFJpZ2h0TW9zdENlbGwoKTogeyBjb2xJbmRleDogbnVtYmVyOyBzdWJDb2xJbmRleDogbnVtYmVyIH0gfCBudWxsIHtcclxuICAgIGlmICh0aGlzLnNlbGVjdGVkQ2VsbHMubGVuZ3RoID09PSAwKSByZXR1cm4gbnVsbDtcclxuXHJcbiAgICBjb25zdCBtYXhDb2xJbmRleCA9IE1hdGgubWF4KC4uLnRoaXMuc2VsZWN0ZWRDZWxscy5tYXAoY2VsbCA9PiBjZWxsLmNvbEluZGV4KSk7XHJcbiAgICBjb25zdCByaWdodENvbENlbGxzID0gdGhpcy5zZWxlY3RlZENlbGxzLmZpbHRlcihjZWxsID0+IGNlbGwuY29sSW5kZXggPT09IG1heENvbEluZGV4KTtcclxuICAgIGNvbnN0IG1heFN1YkNvbEluZGV4ID0gTWF0aC5tYXgoLi4ucmlnaHRDb2xDZWxscy5tYXAoY2VsbCA9PiBjZWxsLnN1YkNvbEluZGV4KSk7XHJcblxyXG4gICAgcmV0dXJuIHsgY29sSW5kZXg6IG1heENvbEluZGV4LCBzdWJDb2xJbmRleDogbWF4U3ViQ29sSW5kZXggfTtcclxuICB9XHJcbiAgaXNUb3BCb3JkZXIocm93SW5kZXg6IG51bWJlciwgY29sSW5kZXg6IG51bWJlciwgc3ViQ29sSW5kZXg6IG51bWJlciB8IG51bGwsIHNlY3Rpb246IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3Qgc2FmZVN1YiA9IHN1YkNvbEluZGV4ID8/IDA7XHJcbiAgICBjb25zdCBpc1NlbGVjdGVkID0gdGhpcy5zZWxlY3RlZEtleXMuaGFzKGAke3Jvd0luZGV4fS0ke2NvbEluZGV4fS0ke3NhZmVTdWJ9LSR7c2VjdGlvbn1gKTtcclxuICAgIHJldHVybiBpc1NlbGVjdGVkICYmIHRoaXMuc2VsZWN0aW9uQm91bmRzLnRvcCAhPT0gbnVsbCAmJiByb3dJbmRleCA9PT0gdGhpcy5zZWxlY3Rpb25Cb3VuZHMudG9wO1xyXG4gIH1cclxuICBpc0JvdHRvbUJvcmRlcihyb3dJbmRleDogbnVtYmVyLCBjb2xJbmRleDogbnVtYmVyLCBzdWJDb2xJbmRleDogbnVtYmVyIHwgbnVsbCwgc2VjdGlvbjogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBzYWZlU3ViID0gc3ViQ29sSW5kZXggPz8gMDtcclxuICAgIGNvbnN0IGlzU2VsZWN0ZWQgPSB0aGlzLnNlbGVjdGVkS2V5cy5oYXMoYCR7cm93SW5kZXh9LSR7Y29sSW5kZXh9LSR7c2FmZVN1Yn0tJHtzZWN0aW9ufWApO1xyXG4gICAgcmV0dXJuIGlzU2VsZWN0ZWQgJiYgdGhpcy5zZWxlY3Rpb25Cb3VuZHMuYm90dG9tICE9PSBudWxsICYmIHJvd0luZGV4ID09PSB0aGlzLnNlbGVjdGlvbkJvdW5kcy5ib3R0b207XHJcbiAgfVxyXG4gIGlzTGVmdEJvcmRlcihyb3dJbmRleDogbnVtYmVyLCBjb2xJbmRleDogbnVtYmVyLCBzdWJDb2xJbmRleDogbnVtYmVyIHwgbnVsbCwgc2VjdGlvbjogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBzYWZlU3ViID0gc3ViQ29sSW5kZXggPz8gMDtcclxuICAgIGNvbnN0IGlzU2VsZWN0ZWQgPSB0aGlzLnNlbGVjdGVkS2V5cy5oYXMoYCR7cm93SW5kZXh9LSR7Y29sSW5kZXh9LSR7c2FmZVN1Yn0tJHtzZWN0aW9ufWApO1xyXG4gICAgcmV0dXJuIGlzU2VsZWN0ZWQgJiYgdGhpcy5zZWxlY3Rpb25Cb3VuZHMubGVmdCAhPT0gbnVsbCAmJlxyXG4gICAgICBjb2xJbmRleCA9PT0gdGhpcy5zZWxlY3Rpb25Cb3VuZHMubGVmdC5jb2xJbmRleCAmJlxyXG4gICAgICBzYWZlU3ViID09PSB0aGlzLnNlbGVjdGlvbkJvdW5kcy5sZWZ0LnN1YkNvbEluZGV4O1xyXG4gIH1cclxuXHJcbiAgaXNSaWdodEJvcmRlcihyb3dJbmRleDogbnVtYmVyLCBjb2xJbmRleDogbnVtYmVyLCBzdWJDb2xJbmRleDogbnVtYmVyIHwgbnVsbCwgc2VjdGlvbjogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBzYWZlU3ViID0gc3ViQ29sSW5kZXggPz8gMDtcclxuICAgIGNvbnN0IGlzU2VsZWN0ZWQgPSB0aGlzLnNlbGVjdGVkS2V5cy5oYXMoYCR7cm93SW5kZXh9LSR7Y29sSW5kZXh9LSR7c2FmZVN1Yn0tJHtzZWN0aW9ufWApO1xyXG4gICAgcmV0dXJuIGlzU2VsZWN0ZWQgJiYgdGhpcy5zZWxlY3Rpb25Cb3VuZHMucmlnaHQgIT09IG51bGwgJiZcclxuICAgICAgY29sSW5kZXggPT09IHRoaXMuc2VsZWN0aW9uQm91bmRzLnJpZ2h0LmNvbEluZGV4ICYmXHJcbiAgICAgIHNhZmVTdWIgPT09IHRoaXMuc2VsZWN0aW9uQm91bmRzLnJpZ2h0LnN1YkNvbEluZGV4O1xyXG4gIH1cclxuXHJcbiAgaXNUb3BMZWZ0Q29ybmVyKHJvd0luZGV4OiBudW1iZXIsIGNvbEluZGV4OiBudW1iZXIsIHN1YkNvbEluZGV4OiBudW1iZXIgfCBudWxsLCBzZWN0aW9uOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmlzVG9wQm9yZGVyKHJvd0luZGV4LCBjb2xJbmRleCwgc3ViQ29sSW5kZXgsIHNlY3Rpb24pICYmIHRoaXMuaXNMZWZ0Qm9yZGVyKHJvd0luZGV4LCBjb2xJbmRleCwgc3ViQ29sSW5kZXgsIHNlY3Rpb24pO1xyXG4gIH1cclxuXHJcbiAgaXNUb3BSaWdodENvcm5lcihyb3dJbmRleDogbnVtYmVyLCBjb2xJbmRleDogbnVtYmVyLCBzdWJDb2xJbmRleDogbnVtYmVyIHwgbnVsbCwgc2VjdGlvbjogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5pc1RvcEJvcmRlcihyb3dJbmRleCwgY29sSW5kZXgsIHN1YkNvbEluZGV4LCBzZWN0aW9uKSAmJiB0aGlzLmlzUmlnaHRCb3JkZXIocm93SW5kZXgsIGNvbEluZGV4LCBzdWJDb2xJbmRleCwgc2VjdGlvbik7XHJcbiAgfVxyXG5cclxuICBpc0JvdHRvbUxlZnRDb3JuZXIocm93SW5kZXg6IG51bWJlciwgY29sSW5kZXg6IG51bWJlciwgc3ViQ29sSW5kZXg6IG51bWJlciB8IG51bGwsIHNlY3Rpb246IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaXNCb3R0b21Cb3JkZXIocm93SW5kZXgsIGNvbEluZGV4LCBzdWJDb2xJbmRleCwgc2VjdGlvbikgJiYgdGhpcy5pc0xlZnRCb3JkZXIocm93SW5kZXgsIGNvbEluZGV4LCBzdWJDb2xJbmRleCwgc2VjdGlvbik7XHJcbiAgfVxyXG5cclxuICBpc0JvdHRvbVJpZ2h0Q29ybmVyKHJvd0luZGV4OiBudW1iZXIsIGNvbEluZGV4OiBudW1iZXIsIHN1YkNvbEluZGV4OiBudW1iZXIgfCBudWxsLCBzZWN0aW9uOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmlzQm90dG9tQm9yZGVyKHJvd0luZGV4LCBjb2xJbmRleCwgc3ViQ29sSW5kZXgsIHNlY3Rpb24pICYmIHRoaXMuaXNSaWdodEJvcmRlcihyb3dJbmRleCwgY29sSW5kZXgsIHN1YkNvbEluZGV4LCBzZWN0aW9uKTtcclxuICB9XHJcblxyXG5cclxuICBjZWxsU2VsZWN0aW9uQXV0b1Njcm9sbEludGVydmFsOiBhbnkgPSBudWxsO1xyXG4gIHByaXZhdGUgc2Nyb2xsU3BlZWQgPSAxNTA7XHJcbiAgcHJpdmF0ZSBzY3JvbGxNYXJnaW4gPSAzMDtcclxuICBoYW5kbGVDZWxsQXV0b1Njcm9sbChldmVudDogTW91c2VFdmVudCkge1xyXG4gICAgaWYgKHRoaXMuY2VsbFNlbGVjdGlvbkF1dG9TY3JvbGxJbnRlcnZhbCkge1xyXG4gICAgICBjbGVhckludGVydmFsKHRoaXMuY2VsbFNlbGVjdGlvbkF1dG9TY3JvbGxJbnRlcnZhbCk7XHJcbiAgICAgIHRoaXMuY2VsbFNlbGVjdGlvbkF1dG9TY3JvbGxJbnRlcnZhbCA9IG51bGw7XHJcbiAgICB9XHJcbiAgICBjb25zdCBob3Jpem9udGFsQ29udGFpbmVyID0gdGhpcy5jZW50ZXJTY3JvbGxhYmxlQm9keS5uYXRpdmVFbGVtZW50O1xyXG4gICAgY29uc3QgdmVydGljYWxDb250YWluZXIgPSB0aGlzLm1haW5TY3JvbGwubmF0aXZlRWxlbWVudDtcclxuICAgIGlmICghaG9yaXpvbnRhbENvbnRhaW5lciB8fCAhdmVydGljYWxDb250YWluZXIpIHJldHVybjtcclxuICAgIGNvbnN0IGhvcml6b250YWxSZWN0ID0gaG9yaXpvbnRhbENvbnRhaW5lci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuICAgIGNvbnN0IG1vdXNlWCA9IGV2ZW50LmNsaWVudFg7XHJcbiAgICBjb25zdCB2ZXJ0aWNhbFJlY3QgPSB2ZXJ0aWNhbENvbnRhaW5lci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuICAgIGNvbnN0IG1vdXNlWSA9IGV2ZW50LmNsaWVudFk7XHJcbiAgICBjb25zdCBuZWFyVG9wID0gbW91c2VZIC0gdmVydGljYWxSZWN0LnRvcCA8IHRoaXMuc2Nyb2xsTWFyZ2luO1xyXG4gICAgY29uc3QgbmVhckJvdHRvbSA9IHZlcnRpY2FsUmVjdC5ib3R0b20gLSBtb3VzZVkgPCB0aGlzLnNjcm9sbE1hcmdpbjtcclxuICAgIGNvbnN0IG5lYXJMZWZ0ID0gbW91c2VYIC0gaG9yaXpvbnRhbFJlY3QubGVmdCA8IHRoaXMuc2Nyb2xsTWFyZ2luO1xyXG4gICAgY29uc3QgbmVhclJpZ2h0ID0gaG9yaXpvbnRhbFJlY3QucmlnaHQgLSBtb3VzZVggPCB0aGlzLnNjcm9sbE1hcmdpbjtcclxuICAgIGxldCBzY3JvbGxYID0gMDtcclxuICAgIGxldCBzY3JvbGxZID0gMDtcclxuICAgIGlmIChuZWFyVG9wKSBzY3JvbGxZID0gLXRoaXMuc2Nyb2xsU3BlZWQ7XHJcbiAgICBpZiAobmVhckJvdHRvbSkgc2Nyb2xsWSA9IHRoaXMuc2Nyb2xsU3BlZWQ7XHJcbiAgICBpZiAobmVhckxlZnQpIHNjcm9sbFggPSAtdGhpcy5zY3JvbGxTcGVlZDtcclxuICAgIGlmIChuZWFyUmlnaHQpIHNjcm9sbFggPSB0aGlzLnNjcm9sbFNwZWVkO1xyXG4gICAgaWYgKHNjcm9sbFggIT09IDAgfHwgc2Nyb2xsWSAhPT0gMCkge1xyXG4gICAgICB0aGlzLmNlbGxTZWxlY3Rpb25BdXRvU2Nyb2xsSW50ZXJ2YWwgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XHJcbiAgICAgICAgaWYgKHNjcm9sbFggIT09IDApIHtcclxuICAgICAgICAgIGhvcml6b250YWxDb250YWluZXIuc2Nyb2xsQnkoc2Nyb2xsWCwgMCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChzY3JvbGxZICE9PSAwKSB7XHJcbiAgICAgICAgICB2ZXJ0aWNhbENvbnRhaW5lci5zY3JvbGxCeSgwLCBzY3JvbGxZKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sIDgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc3RvcEF1dG9TY3JvbGwoKSB7XHJcbiAgICBpZiAodGhpcy5jZWxsU2VsZWN0aW9uQXV0b1Njcm9sbEludGVydmFsKSB7XHJcbiAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy5jZWxsU2VsZWN0aW9uQXV0b1Njcm9sbEludGVydmFsKTtcclxuICAgICAgdGhpcy5jZWxsU2VsZWN0aW9uQXV0b1Njcm9sbEludGVydmFsID0gbnVsbDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuICAvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbiAgLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4gIC8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuICAvLyBSb3cgU2VsZWN0aW9uIGZyb20gdGhlIEluZGV4aW5nIEltcGxlbWVudGVkIEhlcmVcclxuICAvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbiAgLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4gIC8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuICAvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblxyXG4gIHJvd1NlbGVjdGVkSW5kZXhlczogU2V0PG51bWJlcj4gPSBuZXcgU2V0KCk7XHJcbiAgcm93U2VsZWN0aW5nID0gZmFsc2U7XHJcbiAgcm93U2VsZWN0aW9uU3RhcnRJbmRleDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XHJcbiAgYXV0b1Njcm9sbEludGVydmFsOiBhbnkgPSBudWxsO1xyXG5cclxuICBnZXQgZmlyc3RTZWxlY3RlZFJvdygpOiBudW1iZXIgfCBudWxsIHtcclxuICAgIGlmICh0aGlzLnJvd1NlbGVjdGVkSW5kZXhlcy5zaXplID09PSAwKSByZXR1cm4gbnVsbDtcclxuICAgIHJldHVybiBNYXRoLm1pbiguLi50aGlzLnJvd1NlbGVjdGVkSW5kZXhlcyk7XHJcbiAgfVxyXG5cclxuICBnZXQgbGFzdFNlbGVjdGVkUm93KCk6IG51bWJlciB8IG51bGwge1xyXG4gICAgaWYgKHRoaXMucm93U2VsZWN0ZWRJbmRleGVzLnNpemUgPT09IDApIHJldHVybiBudWxsO1xyXG4gICAgcmV0dXJuIE1hdGgubWF4KC4uLnRoaXMucm93U2VsZWN0ZWRJbmRleGVzKTtcclxuICB9XHJcblxyXG5cclxuICBvblJvd01vdXNlRG93bihpbmRleDogbnVtYmVyLCBldmVudDogTW91c2VFdmVudCkge1xyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIHRoaXMucm93U2VsZWN0aW5nID0gdHJ1ZTtcclxuICAgIHRoaXMuc2VsZWN0ZWRLZXlzLmNsZWFyKCk7XHJcbiAgICB0aGlzLnJvd1NlbGVjdGlvblN0YXJ0SW5kZXggPSBpbmRleDtcclxuICAgIHRoaXMucm93U2VsZWN0ZWRJbmRleGVzLmNsZWFyKCk7XHJcbiAgICB0aGlzLnJvd1NlbGVjdGVkSW5kZXhlcy5hZGQoaW5kZXgpO1xyXG4gICAgdGhpcy5hY3RpdmVDZWxsID0gJyc7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcblxyXG4gICAgY29uc3QgbW91c2VNb3ZlSGFuZGxlciA9IChlOiBNb3VzZUV2ZW50KSA9PiB0aGlzLmhhbmRsZUF1dG9TY3JvbGwoZSk7XHJcbiAgICBjb25zdCBtb3VzZVVwSGFuZGxlciA9ICgpID0+IHtcclxuICAgICAgdGhpcy5vblJvd01vdXNlVXAoKTtcclxuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIG1vdXNlVXBIYW5kbGVyKTtcclxuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgbW91c2VNb3ZlSGFuZGxlcik7XHJcbiAgICAgIGlmICh0aGlzLmF1dG9TY3JvbGxJbnRlcnZhbCkge1xyXG4gICAgICAgIGNhbmNlbEFuaW1hdGlvbkZyYW1lKHRoaXMuYXV0b1Njcm9sbEludGVydmFsKTtcclxuICAgICAgICB0aGlzLmF1dG9TY3JvbGxJbnRlcnZhbCA9IG51bGw7XHJcbiAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIG1vdXNlVXBIYW5kbGVyKTtcclxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIG1vdXNlTW92ZUhhbmRsZXIpO1xyXG4gIH1cclxuXHJcbiAgb25Sb3dNb3VzZU92ZXIoaW5kZXg6IG51bWJlciwgZXZlbnQ6IE1vdXNlRXZlbnQpIHtcclxuICAgIGlmICghdGhpcy5yb3dTZWxlY3RpbmcgfHwgdGhpcy5yb3dTZWxlY3Rpb25TdGFydEluZGV4ID09PSBudWxsKSByZXR1cm47XHJcbiAgICB0aGlzLnJvd1NlbGVjdGVkSW5kZXhlcy5jbGVhcigpO1xyXG4gICAgY29uc3Qgc3RhcnQgPSBNYXRoLm1pbih0aGlzLnJvd1NlbGVjdGlvblN0YXJ0SW5kZXgsIGluZGV4KTtcclxuICAgIGNvbnN0IGVuZCA9IE1hdGgubWF4KHRoaXMucm93U2VsZWN0aW9uU3RhcnRJbmRleCwgaW5kZXgpO1xyXG4gICAgZm9yIChsZXQgaSA9IHN0YXJ0OyBpIDw9IGVuZDsgaSsrKSB7XHJcbiAgICAgIHRoaXMucm93U2VsZWN0ZWRJbmRleGVzLmFkZChpKTtcclxuICAgIH1cclxuICAgIC8vIGNvbnNvbGUubG9nKFsuLi50aGlzLnJvd1NlbGVjdGVkSW5kZXhlc10pO1xyXG4gIH1cclxuXHJcbiAgb25Sb3dNb3VzZVVwKCkge1xyXG4gICAgdGhpcy5yb3dTZWxlY3RpbmcgPSBmYWxzZTtcclxuICAgIHRoaXMucm93U2VsZWN0aW9uU3RhcnRJbmRleCA9IG51bGw7XHJcbiAgfVxyXG4gIGhhbmRsZUF1dG9TY3JvbGwoZTogTW91c2VFdmVudCkge1xyXG4gICAgY29uc3QgY29udGFpbmVyID0gdGhpcy5tYWluU2Nyb2xsPy5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50O1xyXG4gICAgaWYgKCFjb250YWluZXIpIHJldHVybjtcclxuXHJcbiAgICBjb25zdCByZWN0ID0gY29udGFpbmVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG4gICAgY29uc3QgZWRnZVNpemUgPSA0MFxyXG4gICAgbGV0IHNjcm9sbEFtb3VudCA9IDA7XHJcblxyXG4gICAgaWYgKGUuY2xpZW50WSA8IHJlY3QudG9wICsgZWRnZVNpemUpIHtcclxuICAgICAgc2Nyb2xsQW1vdW50ID0gLTE1MDtcclxuICAgIH0gZWxzZSBpZiAoZS5jbGllbnRZID4gcmVjdC5ib3R0b20gLSBlZGdlU2l6ZSkge1xyXG4gICAgICBzY3JvbGxBbW91bnQgPSAxNTA7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHNjcm9sbEFtb3VudCAhPT0gMCkge1xyXG4gICAgICBpZiAoIXRoaXMuYXV0b1Njcm9sbEludGVydmFsKSB7XHJcbiAgICAgICAgY29uc3Qgc3RlcCA9ICgpID0+IHtcclxuICAgICAgICAgIGNvbnRhaW5lci5zY3JvbGxUb3AgKz0gc2Nyb2xsQW1vdW50O1xyXG4gICAgICAgICAgdGhpcy5hdXRvU2Nyb2xsSW50ZXJ2YWwgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoc3RlcCk7XHJcbiAgICAgICAgfTtcclxuICAgICAgICB0aGlzLmF1dG9TY3JvbGxJbnRlcnZhbCA9IHJlcXVlc3RBbmltYXRpb25GcmFtZShzdGVwKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHRoaXMuYXV0b1Njcm9sbEludGVydmFsKSB7XHJcbiAgICAgICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUodGhpcy5hdXRvU2Nyb2xsSW50ZXJ2YWwpO1xyXG4gICAgICAgIHRoaXMuYXV0b1Njcm9sbEludGVydmFsID0gbnVsbDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIC8vIGdldFNlbGVjdGVkRGF0YUZvckNvcHkoKTogYW55W11bXSB7XHJcbiAgLy8gICBjb25zdCBjb3BpZWRSb3dzOiBhbnlbXVtdID0gW107XHJcbiAgLy8gICBjb25zdCBmaW5kUm93QnlWaXJ0dWFsSW5kZXggPSAodkluZGV4OiBudW1iZXIpID0+XHJcbiAgLy8gICAgIHRoaXMuZGF0YVNldC5maW5kKChyOiBhbnkpID0+IHIuX192aXJ0dWFsSW5kZXggPT09IHZJbmRleCk7XHJcbiAgLy8gICBpZiAodGhpcy5yb3dTZWxlY3RlZEluZGV4ZXMgJiYgdGhpcy5yb3dTZWxlY3RlZEluZGV4ZXMuc2l6ZSA+IDApIHtcclxuICAvLyAgICAgY29uc3Qgc29ydGVkSW5kZXhlcyA9IFsuLi50aGlzLnJvd1NlbGVjdGVkSW5kZXhlc10uc29ydCgoYSwgYikgPT4gYSAtIGIpO1xyXG4gIC8vICAgICBmb3IgKGNvbnN0IHZJbmRleCBvZiBzb3J0ZWRJbmRleGVzKSB7XHJcbiAgLy8gICAgICAgY29uc3Qgcm93ID0gZmluZFJvd0J5VmlydHVhbEluZGV4KHZJbmRleCk7XHJcbiAgLy8gICAgICAgaWYgKCFyb3cpIGNvbnRpbnVlO1xyXG4gIC8vICAgICAgIGNvbnN0IHJvd1ZhbHVlcyA9IHRoaXMuY29sdW1ucy5mbGF0TWFwKGNvbCA9PlxyXG4gIC8vICAgICAgICAgY29sLmNoaWxkcmVuICYmIEFycmF5LmlzQXJyYXkoY29sLmNoaWxkcmVuKVxyXG4gIC8vICAgICAgICAgICA/IGNvbC5jaGlsZHJlbi5tYXAoKGM6IHsgZmllbGQ6IHN0cmluZyB9KSA9PlxyXG4gIC8vICAgICAgICAgICAgICAgdGhpcy5nZXROZXN0ZWRWYWx1ZShyb3csIGMuZmllbGQpID8/ICcnXHJcbiAgLy8gICAgICAgICAgICAgKVxyXG4gIC8vICAgICAgICAgICA6IHRoaXMuZ2V0TmVzdGVkVmFsdWUocm93LCBjb2wuZmllbGQpID8/ICcnXHJcbiAgLy8gICAgICAgKTtcclxuICAvLyAgICAgICBjb3BpZWRSb3dzLnB1c2gocm93VmFsdWVzKTtcclxuICAvLyAgICAgfVxyXG4gIC8vICAgfVxyXG5cclxuICAvLyAgIGlmICh0aGlzLnNlbGVjdGVkQ2VsbHMgJiYgdGhpcy5zZWxlY3RlZENlbGxzLmxlbmd0aCA+IDApIHtcclxuICAvLyAgICAgY29uc3Qgcm93c01hcCA9IG5ldyBNYXA8bnVtYmVyLCBhbnlbXT4oKTtcclxuICAvLyAgICAgZm9yIChjb25zdCBjZWxsIG9mIHRoaXMuc2VsZWN0ZWRDZWxscykge1xyXG4gIC8vICAgICAgIGNvbnN0IHJvdyA9IGZpbmRSb3dCeVZpcnR1YWxJbmRleChjZWxsLnJvd0luZGV4KTtcclxuICAvLyAgICAgICBpZiAoIXJvdykgY29udGludWU7XHJcblxyXG4gIC8vICAgICAgIGNvbnN0IGNvbCA9IHRoaXMuY29sdW1uc1tjZWxsLmNvbEluZGV4XTtcclxuICAvLyAgICAgICBsZXQgZmllbGROYW1lID0gY29sPy5maWVsZDtcclxuICAvLyAgICAgICBpZiAoY29sPy5jaGlsZHJlbiAmJiBjb2wuY2hpbGRyZW5bY2VsbC5zdWJDb2xJbmRleF0pIHtcclxuICAvLyAgICAgICAgIGZpZWxkTmFtZSA9IGNvbC5jaGlsZHJlbltjZWxsLnN1YkNvbEluZGV4XS5maWVsZDtcclxuICAvLyAgICAgICB9XHJcbiAgLy8gICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLmdldE5lc3RlZFZhbHVlKHJvdywgZmllbGROYW1lKSA/PyAnJztcclxuXHJcbiAgLy8gICAgICAgaWYgKCFyb3dzTWFwLmhhcyhjZWxsLnJvd0luZGV4KSkgcm93c01hcC5zZXQoY2VsbC5yb3dJbmRleCwgW10pO1xyXG4gIC8vICAgICAgIHJvd3NNYXAuZ2V0KGNlbGwucm93SW5kZXgpIS5wdXNoKHZhbHVlKTtcclxuICAvLyAgICAgfVxyXG5cclxuICAvLyAgICAgY29uc3Qgc29ydGVkQ2VsbHMgPSBbLi4ucm93c01hcC5lbnRyaWVzKCldXHJcbiAgLy8gICAgICAgLnNvcnQoKFthXSwgW2JdKSA9PiBhIC0gYilcclxuICAvLyAgICAgICAubWFwKChbXywgdl0pID0+IHYpO1xyXG5cclxuICAvLyAgICAgY29waWVkUm93cy5wdXNoKC4uLnNvcnRlZENlbGxzKTtcclxuICAvLyAgIH1cclxuXHJcbiAgLy8gICBpZiAoY29waWVkUm93cy5sZW5ndGggPT09IDApIHtcclxuICAvLyAgICAgY29uc3QgYWN0aXZlQ2VsbCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5hY3RpdmUtY2VsbCcpO1xyXG4gIC8vICAgICBpZiAoYWN0aXZlQ2VsbCkgcmV0dXJuIFtbYWN0aXZlQ2VsbC50ZXh0Q29udGVudD8udHJpbSgpIHx8ICcnXV07XHJcbiAgLy8gICB9XHJcbiAgLy8gICBjb25zdCBtYXhDb2xzID0gY29waWVkUm93cy5yZWR1Y2UoKG1heCwgcm93KSA9PiBNYXRoLm1heChtYXgsIHJvdy5sZW5ndGgpLCAwKTtcclxuICAvLyAgIGNvbnN0IG5vcm1hbGl6ZWQgPSBjb3BpZWRSb3dzLm1hcChyb3cgPT4ge1xyXG4gIC8vICAgICBjb25zdCBuZXdSb3cgPSBbLi4ucm93XTtcclxuICAvLyAgICAgd2hpbGUgKG5ld1Jvdy5sZW5ndGggPCBtYXhDb2xzKSBuZXdSb3cucHVzaCgnJyk7IFxyXG4gIC8vICAgICByZXR1cm4gbmV3Um93O1xyXG4gIC8vICAgfSk7XHJcbiAgLy8gICByZXR1cm4gbm9ybWFsaXplZDtcclxuICAvLyB9XHJcblxyXG5cclxuICB1bmRvU3RhY2s6IGFueVtdW10gPSBbXTtcclxuICByZWRvU3RhY2s6IGFueVtdW10gPSBbXTtcclxuXHJcbiAgcHJpdmF0ZSBjbG9uZURhdGEoZGF0YTogYW55W10pOiBhbnlbXSB7XHJcbiAgICByZXR1cm4gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShkYXRhKSk7XHJcbiAgfVxyXG5cclxuICBwZXJmb3JtQ3V0KHNlbGVjdGVkRGF0YTogYW55W11bXSkge1xyXG4gICAgLy8gU2F2ZSBjdXJyZW50IHN0YXRlIGZvciB1bmRvXHJcbiAgICB0aGlzLnVuZG9TdGFjay5wdXNoKHRoaXMuY2xvbmVEYXRhKHRoaXMudmlzaWJsZVJvd3MpKTtcclxuICAgIHRoaXMucmVkb1N0YWNrID0gW107IC8vIENsZWFyIHJlZG8gc3RhY2sgb24gbmV3IGFjdGlvblxyXG5cclxuICAgIC8vIFBlcmZvcm0gY3V0XHJcbiAgICB0aGlzLmNvcHlTZXJ2aWNlLmN1dFdpdGhBbmltYXRpb24oc2VsZWN0ZWREYXRhKTtcclxuICAgIGNvbnN0IHsgdXBkYXRlZFJvd3MgfSA9IHRoaXMuY29weVNlcnZpY2UuY3V0U2VsZWN0ZWRTZWxlY3RlZERhdGEoXHJcbiAgICAgIHRoaXMudmlzaWJsZVJvd3MsXHJcbiAgICAgIHRoaXMucm93U2VsZWN0ZWRJbmRleGVzLFxyXG4gICAgICB0aGlzLnNlbGVjdGVkQ2VsbHMsXHJcbiAgICAgIHRoaXMuY29sdW1ucyxcclxuICAgICAgdGhpcy5zZXROZXN0ZWRWYWx1ZS5iaW5kKHRoaXMpXHJcbiAgICApO1xyXG5cclxuICAgIC8vIGNvbnNvbGUubG9nKCdVcGRhdGVkIFJvd3M6ICcsIHVwZGF0ZWRSb3dzKTtcclxuICB9XHJcblxyXG5cclxuXHJcbiAgZ2V0U2VsZWN0ZWREYXRhRm9yQ29weSgpOiBhbnlbXVtdIHtcclxuICAgIHJldHVybiB0aGlzLmNvcHlTZXJ2aWNlLmdldFNlbGVjdGVkRGF0YUZvckNvcHkoXHJcbiAgICAgIHRoaXMuZGF0YVNldCxcclxuICAgICAgdGhpcy5jb2x1bW5zLFxyXG4gICAgICB0aGlzLnJvd1NlbGVjdGVkSW5kZXhlcyxcclxuICAgICAgdGhpcy5zZWxlY3RlZENlbGxzLFxyXG4gICAgICB0aGlzLmdldE5lc3RlZFZhbHVlLmJpbmQodGhpcylcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDprZXlkb3duJywgWyckZXZlbnQnXSlcclxuICBvbktleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcclxuICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudDtcclxuICAgIGNvbnN0IGlzRm9ybUZpZWxkID1cclxuICAgICAgdGFyZ2V0LnRhZ05hbWUgPT09ICdJTlBVVCcgfHxcclxuICAgICAgdGFyZ2V0LnRhZ05hbWUgPT09ICdURVhUQVJFQScgfHxcclxuICAgICAgdGFyZ2V0LmlzQ29udGVudEVkaXRhYmxlO1xyXG4gICAgaWYgKGlzRm9ybUZpZWxkKSByZXR1cm47XHJcblxyXG4gICAgY29uc3QgdGFibGVDb250YWluZXIgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuZGF0YS1ncmlkLWJvZHktd3JhcHBlcicpO1xyXG4gICAgaWYgKHRhYmxlQ29udGFpbmVyICYmICF0YWJsZUNvbnRhaW5lci5jb250YWlucyh0YXJnZXQpKSByZXR1cm47XHJcbiAgICBpZiAoKGV2ZW50LmN0cmxLZXkgfHwgZXZlbnQubWV0YUtleSkgJiYgZXZlbnQua2V5LnRvTG93ZXJDYXNlKCkgPT09ICdjJykge1xyXG4gICAgICBpZiAoIXRoaXMuc2VsZWN0ZWRDZWxscz8ubGVuZ3RoICYmICF0aGlzLnJvd1NlbGVjdGVkSW5kZXhlcy5zaXplKSByZXR1cm5cclxuICAgICAgY29uc3Qgc2VsZWN0ZWREYXRhID0gdGhpcy5nZXRTZWxlY3RlZERhdGFGb3JDb3B5KCk7XHJcbiAgICAgIC8vIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgIHRoaXMuY29weVNlcnZpY2UuY29weVRvQ2xpcGJvYXJkKHNlbGVjdGVkRGF0YSk7XHJcblxyXG4gICAgfSBlbHNlIGlmICgoZXZlbnQuY3RybEtleSB8fCBldmVudC5tZXRhS2V5KSAmJiBldmVudC5rZXkudG9Mb3dlckNhc2UoKSA9PT0gJ3gnKSB7XHJcbiAgICAgIGlmICghdGhpcy5zZWxlY3RlZENlbGxzPy5sZW5ndGggfHwgIXRoaXMuZW5hYmxlQ3V0KSByZXR1cm5cclxuICAgICAgY29uc3Qgc2VsZWN0ZWREYXRhID0gdGhpcy5nZXRTZWxlY3RlZERhdGFGb3JDb3B5KCk7XHJcbiAgICAgIC8vIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgIHRoaXMucGVyZm9ybUN1dChzZWxlY3RlZERhdGEpO1xyXG5cclxuICAgIH0gZWxzZSBpZiAoKGV2ZW50LmN0cmxLZXkgfHwgZXZlbnQubWV0YUtleSkgJiYgZXZlbnQua2V5LnRvTG93ZXJDYXNlKCkgPT09ICd6Jykge1xyXG4gICAgICBpZiAoIXRoaXMuc2VsZWN0ZWRDZWxscz8ubGVuZ3RoKSByZXR1cm5cclxuICAgICAgLy8gZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgdGhpcy51bmRvKCk7XHJcblxyXG4gICAgfSBlbHNlIGlmICgoZXZlbnQuY3RybEtleSB8fCBldmVudC5tZXRhS2V5KSAmJiBldmVudC5rZXkudG9Mb3dlckNhc2UoKSA9PT0gJ3knKSB7XHJcbiAgICAgIGlmICghdGhpcy5zZWxlY3RlZENlbGxzPy5sZW5ndGgpIHJldHVyblxyXG4gICAgICAvLyBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICB0aGlzLnJlZG8oKTtcclxuICAgIH0gZWxzZSBpZiAoKGV2ZW50LmN0cmxLZXkgfHwgZXZlbnQubWV0YUtleSkgJiYgZXZlbnQua2V5ID09PSAnYScpIHtcclxuICAgICAgLy8g4pyFIFNlbGVjdCBhbGwgY2VsbHNcclxuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgdGhpcy5zZWxlY3RBbGxDZWxscygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIHNlbGVjdEFsbENlbGxzKCkge1xyXG4gICAgdGhpcy5zZWxlY3RlZENlbGxzID0gW107XHJcbiAgICB0aGlzLnNlbGVjdGVkS2V5cy5jbGVhcigpO1xyXG4gICAgdGhpcy5yb3dTZWxlY3RlZEluZGV4ZXMuY2xlYXIoKTtcclxuXHJcbiAgICAvLyBTZXQgc2VsZWN0aW9uIHN0YXJ0IGxpa2Ugc2luZ2xlIHNlbGVjdGlvbiAoZmlyc3QgY2VsbClcclxuICAgIGlmICh0aGlzLmRhdGFTZXQubGVuZ3RoICYmIHRoaXMuY29sdW1ucy5sZW5ndGgpIHtcclxuICAgICAgY29uc3QgZmlyc3RGaWVsZCA9IHRoaXMuY29sdW1uc1swXS5maWVsZCB8fCB0aGlzLmNvbHVtbnNbMF0ubmFtZTtcclxuICAgICAgdGhpcy5zZWxlY3Rpb25TdGFydCA9IHtcclxuICAgICAgICByb3dJbmRleDogMCxcclxuICAgICAgICBjb2xJbmRleDogMCxcclxuICAgICAgICBzdWJDb2xJbmRleDogMCxcclxuICAgICAgICBmaWVsZDogZmlyc3RGaWVsZCxcclxuICAgICAgICBrZXk6IGAwLTAtMC0ke2ZpcnN0RmllbGR9YCxcclxuICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmlzU2VsZWN0aW5nID0gdHJ1ZTtcclxuXHJcbiAgICBmb3IgKGxldCByb3dJbmRleCA9IDA7IHJvd0luZGV4IDw9IHRoaXMuZGF0YVNldD8ubGVuZ3RoOyByb3dJbmRleCsrKSB7XHJcbiAgICAgIGlmICghcm93SW5kZXgpIGNvbnRpbnVlO1xyXG4gICAgICBjb25zdCByb3cgPSB0aGlzLmRhdGFTZXRbcm93SW5kZXhdO1xyXG4gICAgICB0aGlzLnJvd1NlbGVjdGVkSW5kZXhlcy5hZGQocm93SW5kZXgpO1xyXG5cclxuICAgICAgLy8gZm9yIChsZXQgY29sSW5kZXggPSAwOyBjb2xJbmRleCA8IHRoaXMuY29sdW1ucy5sZW5ndGg7IGNvbEluZGV4KyspIHtcclxuICAgICAgLy8gICBjb25zdCBjb2wgPSB0aGlzLmNvbHVtbnNbY29sSW5kZXhdO1xyXG4gICAgICAvLyAgIGNvbnN0IGZpZWxkID0gY29sLmZpZWxkIHx8IGNvbC5uYW1lO1xyXG4gICAgICAvLyAgIGlmKCFjb2wuaXNfdmlzaWJsZSkgY29udGludWU7XHJcblxyXG4gICAgICAvLyAgIGlmIChjb2wuY2hpbGRyZW4/Lmxlbmd0aCkge1xyXG4gICAgICAvLyAgICAgY29sLmNoaWxkcmVuLmZvckVhY2goKHN1YjogYW55LCBzdWJDb2xJbmRleDogbnVtYmVyKSA9PiB7XHJcbiAgICAgIC8vICAgICAgIGNvbnN0IGtleSA9IGAke3Jvd0luZGV4fS0ke2NvbEluZGV4fS0ke3N1YkNvbEluZGV4fS0ke2ZpZWxkfWA7XHJcbiAgICAgIC8vICAgICAgIHRoaXMuc2VsZWN0ZWRLZXlzLmFkZChrZXkpO1xyXG4gICAgICAvLyAgICAgICB0aGlzLnNlbGVjdGVkQ2VsbHMucHVzaCh7XHJcbiAgICAgIC8vICAgICAgICAgcm93SW5kZXgsXHJcbiAgICAgIC8vICAgICAgICAgY29sSW5kZXgsXHJcbiAgICAgIC8vICAgICAgICAgc3ViQ29sSW5kZXgsXHJcbiAgICAgIC8vICAgICAgICAgZmllbGQsXHJcbiAgICAgIC8vICAgICAgICAga2V5LFxyXG4gICAgICAvLyAgICAgICB9KTtcclxuICAgICAgLy8gICAgIH0pO1xyXG4gICAgICAvLyAgIH0gZWxzZSB7XHJcbiAgICAgIC8vICAgICBjb25zdCBrZXkgPSBgJHtyb3dJbmRleH0tJHtjb2xJbmRleH0tMC0ke2ZpZWxkfWA7XHJcbiAgICAgIC8vICAgICB0aGlzLnNlbGVjdGVkS2V5cy5hZGQoa2V5KTtcclxuICAgICAgLy8gICAgIHRoaXMuc2VsZWN0ZWRDZWxscy5wdXNoKHtcclxuICAgICAgLy8gICAgICAgcm93SW5kZXgsXHJcbiAgICAgIC8vICAgICAgIGNvbEluZGV4LFxyXG4gICAgICAvLyAgICAgICBzdWJDb2xJbmRleDogMCxcclxuICAgICAgLy8gICAgICAgZmllbGQsXHJcbiAgICAgIC8vICAgICAgIGtleSxcclxuICAgICAgLy8gICAgIH0pO1xyXG4gICAgICAvLyAgIH1cclxuICAgICAgLy8gfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIFVwZGF0ZSBoaWdobGlnaHRpbmcgYW5kIFVJXHJcbiAgICB0aGlzLnVwZGF0ZVNlbGVjdGlvbkJvdW5kYXJpZXMoKTtcclxuXHJcbiAgICAvLyBTdG9wIFwic2VsZWN0aW5nXCIgbW9kZSBzaW5jZSBpdCdzIGEgb25lLXRpbWUgc2VsZWN0LWFsbFxyXG4gICAgdGhpcy5pc1NlbGVjdGluZyA9IGZhbHNlO1xyXG4gIH1cclxuXHJcblxyXG5cclxuICB1bmRvKCkge1xyXG4gICAgaWYgKHRoaXMudW5kb1N0YWNrLmxlbmd0aCA+IDApIHtcclxuICAgICAgY29uc3QgcHJldlN0YXRlID0gdGhpcy51bmRvU3RhY2sucG9wKCkhO1xyXG4gICAgICB0aGlzLnJlZG9TdGFjay5wdXNoKHRoaXMuY2xvbmVEYXRhKHRoaXMudmlzaWJsZVJvd3MpKTtcclxuICAgICAgdGhpcy52aXNpYmxlUm93cyA9IHRoaXMuY2xvbmVEYXRhKHByZXZTdGF0ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZWRvKCkge1xyXG4gICAgaWYgKHRoaXMucmVkb1N0YWNrLmxlbmd0aCA+IDApIHtcclxuICAgICAgY29uc3QgbmV4dFN0YXRlID0gdGhpcy5yZWRvU3RhY2sucG9wKCkhO1xyXG4gICAgICB0aGlzLnVuZG9TdGFjay5wdXNoKHRoaXMuY2xvbmVEYXRhKHRoaXMudmlzaWJsZVJvd3MpKTtcclxuICAgICAgdGhpcy52aXNpYmxlUm93cyA9IHRoaXMuY2xvbmVEYXRhKG5leHRTdGF0ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OnBhc3RlJywgWyckZXZlbnQnXSlcclxuICBhc3luYyBvblBhc3RlKGV2ZW50OiBDbGlwYm9hcmRFdmVudCkge1xyXG4gICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xyXG4gICAgY29uc3QgdGFnID0gdGFyZ2V0Py50YWdOYW1lPy50b0xvd2VyQ2FzZSgpO1xyXG4gICAgaWYgKHRhZyA9PT0gJ2lucHV0JyB8fCB0YWcgPT09ICd0ZXh0YXJlYScgfHwgdGFyZ2V0Py5nZXRBdHRyaWJ1dGUoJ2NvbnRlbnRlZGl0YWJsZScpID09PSAndHJ1ZScpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghdGhpcy5zZWxlY3RlZENlbGxzPy5sZW5ndGggfHwgIXRoaXMuYWN0aXZlQ2VsbCkgcmV0dXJuO1xyXG5cclxuICAgIGNvbnN0IHRleHQgPSBldmVudC5jbGlwYm9hcmREYXRhPy5nZXREYXRhKCd0ZXh0Jyk7XHJcbiAgICBpZiAoIXRleHQpIHJldHVybjtcclxuICAgIGNvbnN0IHVzZXJDb25maXJtZWQgPSBhd2FpdCB0aGlzLnNob3dDb25maXJtYXRpb25Nb2RhbChcclxuICAgICAgJ0FyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBwYXN0ZSB0aGUgY29waWVkIGRhdGE/J1xyXG4gICAgKTtcclxuXHJcbiAgICBpZiAoIXVzZXJDb25maXJtZWQpIHtcclxuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHN0YXJ0Q2VsbCA9IHRoaXMuc2VsZWN0ZWRDZWxscz8uWzBdO1xyXG4gICAgaWYgKCFzdGFydENlbGwpIHJldHVybjtcclxuXHJcbiAgICBjb25zdCB1cGRhdGVkUm93cyA9IGF3YWl0IHRoaXMuY29weVNlcnZpY2UucGFzdGVGcm9tQ2xpcGJvYXJkVGV4dChcclxuICAgICAgdGV4dCxcclxuICAgICAgdGhpcy52aXNpYmxlUm93cyxcclxuICAgICAgdGhpcy5jb2x1bW5zLFxyXG4gICAgICBzdGFydENlbGwucm93SW5kZXgsXHJcbiAgICAgIHN0YXJ0Q2VsbC5jb2xJbmRleCxcclxuICAgICAgc3RhcnRDZWxsLnN1YkNvbEluZGV4XHJcbiAgICApO1xyXG5cclxuICAgIGlmICh1cGRhdGVkUm93cz8udXBkYXRlUm93cz8ubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMuZ2VuZXJpY0V2ZW50LmVtaXQoe1xyXG4gICAgICAgIGRhdGE6IHVwZGF0ZWRSb3dzPy51cGRhdGVSb3dzLFxyXG4gICAgICAgIGV2ZW50VHlwZTogJ29uQ2VsbEVkaXQnLFxyXG4gICAgICAgIGNvbHVtbjogdXBkYXRlZFJvd3M/LmN1cnJlbnRDb2x1bXNcclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgc2hvd0NvbmZpcm1hdGlvbk1vZGFsKG1lc3NhZ2U6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xyXG4gICAgICBjb25zdCBvdmVybGF5ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XHJcbiAgICAgIG92ZXJsYXkuY2xhc3NMaXN0LmFkZCgnY3VzdG9tLW92ZXJsYXktd3JhcHBlcicpO1xyXG4gICAgICBvdmVybGF5LmlubmVySFRNTCA9IGBcclxuICAgICAgPGRpdiBjbGFzcz1cImN1c3RvbS1vdmVybGF5XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImN1c3RvbS1tb2RhbFwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImN1c3RvbS1tb2RhbC1ib2R5XCI+XHJcbiAgICAgICAgICAgIDxwIGNsYXNzPVwibW9kYWwtbWVzc2FnZVwiPiR7bWVzc2FnZX08L3A+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1hY3Rpb25zXCI+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0bi1jb25maXJtXCI+Q29uZmlybTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4tY2FuY2VsXCI+Q2FuY2VsPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgYDtcclxuXHJcbiAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQob3ZlcmxheSk7XHJcbiAgICAgIGNvbnN0IGNvbmZpcm1CdG4gPSBvdmVybGF5LnF1ZXJ5U2VsZWN0b3IoJy5idG4tY29uZmlybScpIGFzIEhUTUxFbGVtZW50O1xyXG4gICAgICBjb25zdCBjYW5jZWxCdG4gPSBvdmVybGF5LnF1ZXJ5U2VsZWN0b3IoJy5idG4tY2FuY2VsJykgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICAgIGNvbnN0IGNsZWFudXAgPSAoKSA9PiB7XHJcbiAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChvdmVybGF5KTtcclxuICAgICAgfTtcclxuICAgICAgY29uZmlybUJ0bi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHtcclxuICAgICAgICBjbGVhbnVwKCk7XHJcbiAgICAgICAgcmVzb2x2ZSh0cnVlKTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgICBjYW5jZWxCdG4uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB7XHJcbiAgICAgICAgY2xlYW51cCgpO1xyXG4gICAgICAgIHJlc29sdmUoZmFsc2UpO1xyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcblxyXG5cclxuXHJcblxyXG4gIGlzRGF0ZSh2YWx1ZTogYW55KTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gIWlzTmFOKG5ldyBEYXRlKHZhbHVlKT8uZ2V0VGltZSgpKTtcclxuICB9XHJcblxyXG5cclxuICAvLyBIb2xkIGV4cGFuZGVkIElEcyAoYXJyYXkgZm9yIG11bHRpcGxlLCBzaW5nbGUgdmFsdWUgZm9yIHNpbmdsZSlcclxuICBleHBhbmRlZGVkRGV0YWlsUm93czogKHN0cmluZyB8IG51bWJlcilbXSB8IHN0cmluZyB8IG51bWJlciA9ICcnO1xyXG5cclxuICB0b2dnbGVEZXRhaWxSb3dFeHBhbmQocm93OiBhbnkpIHtcclxuICAgIGNvbnN0IGlkID0gcm93Py5pZCB8fCByb3c/Ll9pZDtcclxuICAgIGlmICh0aGlzLmdyaWRUeXBlID09PSAnQXNzZXRzJyAmJiByb3c/LmRldGFpbD8uY29sdW1ucykge1xyXG4gICAgICByb3cuZGV0YWlsLmNvbHVtbnMuZm9yRWFjaCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgICAgaXRlbS53aWR0aCA9IGl0ZW0/LndpZHRoIHx8ICh0aGlzLmRhdGFHcmlkQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGggLyByb3cuZGV0YWlsLmNvbHVtbnM/Lmxlbmd0aClcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMucHJldmlld05lc3RlZENvbHMgPSB0aGlzLmRlZXBDbG9uZUNvbHVtbnMocm93LmRldGFpbC5jb2x1bW5zKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmtlZXBNdWx0aXBsZUV4cGFuZGVkRGV0YWlscykge1xyXG4gICAgICBpZiAoIUFycmF5LmlzQXJyYXkodGhpcy5leHBhbmRlZGVkRGV0YWlsUm93cykpIHtcclxuICAgICAgICB0aGlzLmV4cGFuZGVkZWREZXRhaWxSb3dzID0gW107XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgZXhwYW5kZWQgPSB0aGlzLmV4cGFuZGVkZWREZXRhaWxSb3dzIGFzIChzdHJpbmcgfCBudW1iZXIpW107XHJcbiAgICAgIGNvbnN0IGluZGV4ID0gZXhwYW5kZWQuaW5kZXhPZihpZCk7XHJcblxyXG4gICAgICBpZiAoaW5kZXggPiAtMSkge1xyXG4gICAgICAgIGV4cGFuZGVkLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgZXhwYW5kZWQucHVzaChpZCk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICh0aGlzLmV4cGFuZGVkZWREZXRhaWxSb3dzID09PSBpZCkge1xyXG4gICAgICAgIHRoaXMuZXhwYW5kZWRlZERldGFpbFJvd3MgPSAnJztcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmV4cGFuZGVkZWREZXRhaWxSb3dzID0gaWQ7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdm9pZCB0aGlzLnJpZ2h0UGlubmVkSGVhZGVyPy5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoO1xyXG4gICAgICB0aGlzLmNlbnRlclBpbm5lZEJvZHk/Lm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGg7XHJcbiAgICAgIHRoaXMucmlnaHRQaW5uZWRCb2R5Py5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoO1xyXG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9LCAzMDApXHJcbiAgfVxyXG5cclxuICBpc0RldGFpbHNFeHBhbmRlZChyb3c6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgaWQgPSByb3c/LmlkIHx8IHJvdz8uX2lkO1xyXG5cclxuICAgIGlmICh0aGlzLmtlZXBNdWx0aXBsZUV4cGFuZGVkRGV0YWlscykge1xyXG4gICAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh0aGlzLmV4cGFuZGVkZWREZXRhaWxSb3dzKSAmJlxyXG4gICAgICAgIHRoaXMuZXhwYW5kZWRlZERldGFpbFJvd3MuaW5jbHVkZXMoaWQpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHRoaXMuZXhwYW5kZWRlZERldGFpbFJvd3MgPT09IGlkO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0RmlsdGVyVmFsdWUob3B0aW9uOiBhbnkpOiBhbnkge1xyXG4gICAgcmV0dXJuIG9wdGlvbj8udmFsdWUgPz8gb3B0aW9uO1xyXG4gIH1cclxuXHJcblxyXG4gIG9wZW5JbmRleDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XHJcbiAgdG9nZ2xlTWVudShpOiBudW1iZXIsIGV2ZW50PzogTW91c2VFdmVudCkge1xyXG4gICAgaWYgKGV2ZW50KSB7IGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyB9XHJcbiAgICB0aGlzLm9wZW5JbmRleCA9IHRoaXMub3BlbkluZGV4ID09PSBpID8gbnVsbCA6IGk7XHJcbiAgfVxyXG5cclxuICBAVmlld0NoaWxkKCduZXN0ZWRUYWJsZScpXHJcbiAgbmVzdGVkVGFibGUhOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcclxuICBnZXQgaGFzVmVydGljYWxTY3JvbGwoKTogYm9vbGVhbiB7XHJcbiAgICBpZiAoIXRoaXMubmVzdGVkVGFibGUpIHJldHVybiBmYWxzZTtcclxuICAgIHJldHVybiB0aGlzLm5lc3RlZFRhYmxlLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsSGVpZ2h0ID4gdGhpcy5uZXN0ZWRUYWJsZS5uYXRpdmVFbGVtZW50LmNsaWVudEhlaWdodDtcclxuICB9XHJcblxyXG4gIGdldCBoYXNIb3Jpem9udGFsU2Nyb2xsKCk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKCF0aGlzLm5lc3RlZFRhYmxlKSByZXR1cm4gZmFsc2U7XHJcbiAgICBjb25zdCBlbCA9IHRoaXMubmVzdGVkVGFibGUubmF0aXZlRWxlbWVudDtcclxuICAgIHJldHVybiBlbC5zY3JvbGxXaWR0aCA+IGVsLmNsaWVudFdpZHRoO1xyXG4gIH1cclxuXHJcblxyXG4gIGdldFRvdGFsQW1vdW50KGNvbHVtbjogYW55KSB7XHJcbiAgICBpZiAoIWNvbHVtbj8uaXNfYW1vdW50KSByZXR1cm47XHJcbiAgICBjb25zdCB0b3RhbCA9IHRoaXMub3JpZ2luYWxEYXRhU2V0LnJlZHVjZSgoc3VtLCByb3cpID0+IHtcclxuICAgICAgY29uc3QgdmFsdWUgPSByb3dbY29sdW1uLmZpZWxkXSB8fCAwO1xyXG4gICAgICByZXR1cm4gc3VtICsgdmFsdWU7XHJcbiAgICB9LCAwKTtcclxuICAgIGlmKCF0b3RhbCkgcmV0dXJuIGAke3RoaXMuY3VycmVuY3lTeW1ib2x9IDAuMDBgXHJcbiAgICByZXR1cm4gYCR7dGhpcy5jdXJyZW5jeVN5bWJvbH0gJHt0aGlzLmZvcm1hdEN1cnJlbmN5LnRyYW5zZm9ybSh0b3RhbCwgdGhpcy5jdXJyZW5jeUZvcm1hdCl9YDtcclxuICB9XHJcblxyXG4gIGRyb3BDb2x1bW4oZXZlbnQ6IENka0RyYWdEcm9wPGFueVtdPiwgcm93OiBhbnkpIHtcclxuICAgIC8vIFJlb3JkZXIgdGhlIGNvbHVtbnMgYXJyYXlcclxuICAgIG1vdmVJdGVtSW5BcnJheShyb3cuZGV0YWlsLmNvbHVtbnMsIGV2ZW50LnByZXZpb3VzSW5kZXgsIGV2ZW50LmN1cnJlbnRJbmRleCk7XHJcbiAgfVxyXG5cclxuICBjdXJyZW50U3ViU29ydENvbHVtbjogc3RyaW5nIHwgbnVsbCA9IG51bGw7IC8vIGFjdGl2ZSBjb2x1bW5cclxuICBjdXJyZW50U29ydERpcmVjdGlvbjogJ2FzYycgfCAnZGVzYycgPSAnYXNjJzsgLy8gYWN0aXZlIGRpcmVjdGlvblxyXG5cclxuICBzb3J0TmVzdGVkQ29sKGNvbDogYW55LCByb3c6IGFueSkge1xyXG4gICAgY29uc3QgZGF0YVNldCA9IHJvdz8uZGV0YWlsPy5yZXN1bHQ7XHJcbiAgICBpZiAodGhpcy5jdXJyZW50U3ViU29ydENvbHVtbiA9PT0gY29sLmZpZWxkKSB7XHJcbiAgICAgIHRoaXMuY3VycmVudFNvcnREaXJlY3Rpb24gPSB0aGlzLmN1cnJlbnRTb3J0RGlyZWN0aW9uID09PSAnYXNjJyA/ICdkZXNjJyA6ICdhc2MnO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5jdXJyZW50U3ViU29ydENvbHVtbiA9IGNvbC5maWVsZDtcclxuICAgICAgdGhpcy5jdXJyZW50U29ydERpcmVjdGlvbiA9ICdhc2MnO1xyXG4gICAgfVxyXG4gICAgY29sLm9yZGVyX2J5ID0gdGhpcy5jdXJyZW50U29ydERpcmVjdGlvbjtcclxuXHJcbiAgICAvLyBTb3J0IGNvcHkgaW5zdGVhZCBvZiBtdXRhdGluZ1xyXG4gICAgY29uc3Qgc29ydGVkID0gWy4uLmRhdGFTZXRdLnNvcnQoKGEsIGIpID0+IHtcclxuICAgICAgbGV0IGFWYWwgPSBhW2NvbC5maWVsZF07XHJcbiAgICAgIGxldCBiVmFsID0gYltjb2wuZmllbGRdO1xyXG4gICAgICBhVmFsID0gYVZhbCA9PSBudWxsID8gJycgOiBhVmFsO1xyXG4gICAgICBiVmFsID0gYlZhbCA9PSBudWxsID8gJycgOiBiVmFsO1xyXG5cclxuICAgICAgaWYgKGNvbC50eXBlID09PSAnZGF0ZScpIHtcclxuICAgICAgICBhVmFsID0gbmV3IERhdGUoYVZhbCkuZ2V0VGltZSgpO1xyXG4gICAgICAgIGJWYWwgPSBuZXcgRGF0ZShiVmFsKS5nZXRUaW1lKCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGNvbnN0IGFOdW0gPSBwYXJzZUZsb2F0KGFWYWwpO1xyXG4gICAgICBjb25zdCBiTnVtID0gcGFyc2VGbG9hdChiVmFsKTtcclxuICAgICAgY29uc3QgYm90aE51bWJlcnMgPSAhaXNOYU4oYU51bSkgJiYgIWlzTmFOKGJOdW0pO1xyXG5cclxuICAgICAgaWYgKGJvdGhOdW1iZXJzKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudFNvcnREaXJlY3Rpb24gPT09ICdhc2MnID8gYU51bSAtIGJOdW0gOiBiTnVtIC0gYU51bTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBjb25zdCBjb21wID0gU3RyaW5nKGFWYWwpLmxvY2FsZUNvbXBhcmUoU3RyaW5nKGJWYWwpKTtcclxuICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50U29ydERpcmVjdGlvbiA9PT0gJ2FzYycgPyBjb21wIDogLWNvbXA7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHJvdy5kZXRhaWwucmVzdWx0ID0gc29ydGVkO1xyXG5cclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG5cclxuICBnZXRDb2x1bW5XaWR0aFB4KHJvdzogYW55LCBjb2w6IGFueSk6IHN0cmluZyB7XHJcbiAgICBpZiAoY29sLndpZHRoKSByZXR1cm4gY29sLndpZHRoICsgJ3B4JztcclxuICAgIGNvbnN0IHBpeGVscyA9IHRoaXMuY2VudGVyU2Nyb2xsYWJsZUJvZHk/Lm5hdGl2ZUVsZW1lbnQ/Lm9mZnNldFdpZHRoIC8gcm93LmRldGFpbD8uY29sdW1ucy5sZW5ndGg7XHJcbiAgICByZXR1cm4gcGl4ZWxzICsgJ3B4JztcclxuICB9XHJcblxyXG4gIGZ1bGxzY3JlZW5JbWFnZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcblxyXG5cclxuICAvLyBBc3Nlc3RzIE5lc3RlZCBUYWJsZSBXb3JrIEltcGxlbWVudGVkIEhlcmVcclxuXHJcbiAgcGluVW5waW5Db2x1bShjb2w6IGFueSwgdmFsdWU6ICdsZWZ0JyB8ICdyaWdodCcgfCBudWxsLCBjb2x1bW5zOiBhbnlbXSkge1xyXG4gICAgY29sLnBpbm5lZCA9IHZhbHVlO1xyXG4gICAgY29uc3QgbGVmdCA9IGNvbHVtbnMuZmlsdGVyKGMgPT4gYy5waW5uZWQgPT09ICdsZWZ0Jyk7XHJcbiAgICBjb25zdCBtaWRkbGUgPSBjb2x1bW5zLmZpbHRlcihjID0+ICFjLnBpbm5lZCB8fCBjLnBpbm5lZCA9PT0gbnVsbCk7XHJcbiAgICBjb25zdCByaWdodCA9IGNvbHVtbnMuZmlsdGVyKGMgPT4gYy5waW5uZWQgPT09ICdyaWdodCcpO1xyXG4gICAgY29sdW1ucy5sZW5ndGggPSAwO1xyXG4gICAgY29sdW1ucy5wdXNoKC4uLmxlZnQsIC4uLm1pZGRsZSwgLi4ucmlnaHQpO1xyXG4gICAgdGhpcy5hY3RpdmVDb2wgPSBudWxsO1xyXG4gIH1cclxuXHJcbiAgZ2V0TGVmdFBpbm5lZENvdW50KGNvbHVtbnM6IGFueVtdKTogbnVtYmVyIHtcclxuICAgIHJldHVybiBjb2x1bW5zLmZpbHRlcihjID0+IGMucGlubmVkID09PSAnbGVmdCcpLmxlbmd0aDtcclxuICB9XHJcblxyXG4gIGdldFJpZ2h0UGlubmVkQ291bnQoY29sdW1uczogYW55W10pOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIGNvbHVtbnMuZmlsdGVyKGMgPT4gYy5waW5uZWQgPT09ICdyaWdodCcpLmxlbmd0aDtcclxuICB9XHJcblxyXG4gIGdldFN0aWNreUxlZnQoY29sdW1uczogYW55W10sIGluZGV4OiBudW1iZXIpOiBzdHJpbmcge1xyXG4gICAgbGV0IGxlZnQgPSAwO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpbmRleDsgaSsrKSB7XHJcbiAgICAgIGNvbnN0IHByZXZDb2wgPSBjb2x1bW5zW2ldO1xyXG4gICAgICBpZiAocHJldkNvbC5waW5uZWQgPT09ICdsZWZ0Jykge1xyXG4gICAgICAgIGxlZnQgKz0gcHJldkNvbC53aWR0aCB8fCAxMDA7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBgJHtsZWZ0fXB4YDtcclxuICB9XHJcblxyXG4gIHByZXZpZXdOZXN0ZWRDb2xzOiBhbnlbXSA9IFtdO1xyXG4gIG9uTmVzdGVkQ29sU29ydChldmVudDogQ2RrRHJhZ1NvcnRFdmVudDxhbnlbXT4sIGNvbHVtbnM6IGFueVtdKTogdm9pZCB7XHJcbiAgICBpZiAoIWV2ZW50IHx8ICFjb2x1bW5zKSByZXR1cm47XHJcbiAgICBjb25zdCBmaXJzdFBvc2l0aW9ucyA9IG5ldyBNYXA8SFRNTEVsZW1lbnQsIG51bWJlcj4oKTtcclxuICAgIGNvbHVtbnMuZm9yRWFjaCgoY29sKSA9PiB7XHJcbiAgICAgIGNvbnN0IGNvbENlbGxzID0gQXJyYXkuZnJvbShkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKGBbZmllbGQ9XCIke2NvbC5maWVsZH1cIl1gKSkgYXMgSFRNTEVsZW1lbnRbXTtcclxuICAgICAgY29sQ2VsbHMuZm9yRWFjaCgoZWwpID0+IGZpcnN0UG9zaXRpb25zLnNldChlbCwgZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdCkpO1xyXG4gICAgfSk7XHJcbiAgICBtb3ZlSXRlbUluQXJyYXkoY29sdW1ucywgZXZlbnQucHJldmlvdXNJbmRleCwgZXZlbnQuY3VycmVudEluZGV4KTtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XHJcbiAgICAgIGNvbHVtbnMuZm9yRWFjaCgoY29sKSA9PiB7XHJcbiAgICAgICAgY29uc3QgdXBkYXRlZENlbGxzID0gQXJyYXkuZnJvbShkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKGBbZmllbGQ9XCIke2NvbC5maWVsZH1cIl1gKSkgYXMgSFRNTEVsZW1lbnRbXTtcclxuICAgICAgICB1cGRhdGVkQ2VsbHMuZm9yRWFjaCgoZWwpID0+IHtcclxuICAgICAgICAgIGNvbnN0IG5ld0xlZnQgPSBlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0O1xyXG4gICAgICAgICAgY29uc3Qgb2xkTGVmdCA9IGZpcnN0UG9zaXRpb25zLmdldChlbCkgPz8gbmV3TGVmdDtcclxuICAgICAgICAgIGNvbnN0IGRlbHRhWCA9IG9sZExlZnQgLSBuZXdMZWZ0O1xyXG5cclxuICAgICAgICAgIGlmIChkZWx0YVggIT09IDApIHtcclxuICAgICAgICAgICAgZWwuc3R5bGUudHJhbnNpdGlvbiA9ICdub25lJztcclxuICAgICAgICAgICAgZWwuc3R5bGUudHJhbnNmb3JtID0gYHRyYW5zbGF0ZVgoJHtkZWx0YVh9cHgpYDtcclxuICAgICAgICAgICAgdm9pZCBlbC5vZmZzZXRXaWR0aDtcclxuICAgICAgICAgICAgZWwuc3R5bGUudHJhbnNpdGlvbiA9ICd0cmFuc2Zvcm0gMjUwbXMgZWFzZSc7XHJcbiAgICAgICAgICAgIGVsLnN0eWxlLnRyYW5zZm9ybSA9ICd0cmFuc2xhdGVYKDApJztcclxuICAgICAgICAgICAgY29uc3QgY2xlYW51cCA9ICgpID0+IHtcclxuICAgICAgICAgICAgICBlbC5zdHlsZS50cmFuc2l0aW9uID0gJyc7XHJcbiAgICAgICAgICAgICAgZWwuc3R5bGUudHJhbnNmb3JtID0gJyc7XHJcbiAgICAgICAgICAgICAgZWwucmVtb3ZlRXZlbnRMaXN0ZW5lcigndHJhbnNpdGlvbmVuZCcsIGNsZWFudXApO1xyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBlbC5hZGRFdmVudExpc3RlbmVyKCd0cmFuc2l0aW9uZW5kJywgY2xlYW51cCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuXHJcbiAgc2F2ZVNlbGVjdGlvbihzZWxlY3RlZElkczogc3RyaW5nW10sIHRhYmxlVHlwZTogc3RyaW5nKSB7XHJcbiAgICBpZiAoIXRhYmxlVHlwZSkgcmV0dXJuO1xyXG4gICAgY29uc3Qgc3RvcmVkID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnZGF0YXRhYmxlU2VsZWN0aW9ucycpIHx8ICd7XCJzZWxlY3RlZFJvd3NcIjoge319Jyk7XHJcbiAgICBjb25zdCBhbGxTZWxlY3RlZCA9IHN0b3JlZC5zZWxlY3RlZFJvd3MgfHwge307XHJcbiAgICBhbGxTZWxlY3RlZFt0YWJsZVR5cGVdID0gc2VsZWN0ZWRJZHM7XHJcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShcclxuICAgICAgJ2RhdGF0YWJsZVNlbGVjdGlvbnMnLFxyXG4gICAgICBKU09OLnN0cmluZ2lmeSh7XHJcbiAgICAgICAgc2VsZWN0ZWRSb3dzOiBhbGxTZWxlY3RlZCxcclxuICAgICAgICBsaXN0aW5nVHlwZTogdGFibGVUeXBlXHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gIH1cclxuXHJcblxyXG4gIHJlc3RvcmVTZWxlY3Rpb24odGFibGVUeXBlOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IHN0b3JlZCA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2RhdGF0YWJsZVNlbGVjdGlvbnMnKSB8fCAne30nKTtcclxuICAgIGNvbnN0IGlkcyA9IHN0b3JlZC5zZWxlY3RlZFJvd3M/Llt0YWJsZVR5cGVdIHx8IFtdO1xyXG4gICAgdGhpcy5zZWxlY3RlZFJvd3MgPSBuZXcgU2V0KGlkcyk7XHJcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RlZFJvd3M7XHJcbiAgfVxyXG5cclxuXHJcblxyXG4gIGlzT3V0c2lkZUNvbnRhaW5lciA9IGZhbHNlO1xyXG4gIHByaXZhdGUgY29udGFpbmVyUmVjdDogRE9NUmVjdCB8IG51bGwgPSBudWxsO1xyXG5cclxuXHJcbiAgb25EcmFnU3RhcnRlZChjb2w6IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5jdXJyZW50RHJhZ2dpbmdDb2x1bW4gPSBjb2w7XHJcbiAgICBjb25zdCBjb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZGF0YS1ncmlkLW1haW4tY29udGFpbmVyJyk7XHJcbiAgICB0aGlzLmNvbnRhaW5lclJlY3QgPSBjb250YWluZXI/LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpIHx8IG51bGw7XHJcbiAgfVxyXG5cclxuICBvbkRyYWdNb3ZlZChldmVudDogQ2RrRHJhZ01vdmUpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5jb250YWluZXJSZWN0KSByZXR1cm47XHJcblxyXG4gICAgY29uc3QgeyB4LCB5IH0gPSBldmVudC5wb2ludGVyUG9zaXRpb247XHJcbiAgICBjb25zdCBpc091dHNpZGUgPVxyXG4gICAgICB4IDwgdGhpcy5jb250YWluZXJSZWN0LmxlZnQgfHxcclxuICAgICAgeCA+IHRoaXMuY29udGFpbmVyUmVjdC5yaWdodCB8fFxyXG4gICAgICB5IDwgdGhpcy5jb250YWluZXJSZWN0LnRvcCB8fFxyXG4gICAgICB5ID4gdGhpcy5jb250YWluZXJSZWN0LmJvdHRvbTtcclxuXHJcbiAgICAvLyBpZiAoaXNPdXRzaWRlICE9PSB0aGlzLmlzT3V0c2lkZUNvbnRhaW5lcikge1xyXG4gICAgLy8gICB0aGlzLmlzT3V0c2lkZUNvbnRhaW5lciA9IGlzT3V0c2lkZTtcclxuICAgIC8vIH1cclxuICB9XHJcblxyXG4gIG9uRHJhZ0VuZGVkKCk6IHZvaWQge1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIC8vIGlmICh0aGlzLmlzT3V0c2lkZUNvbnRhaW5lciAmJiB0aGlzLmN1cnJlbnREcmFnZ2luZ0NvbHVtbikge1xyXG4gICAgICAvLyAgIHRoaXMuY3VycmVudERyYWdnaW5nQ29sdW1uIS5pc192aXNpYmxlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50RHJhZ2dpbmdDb2x1bW4gPSBudWxsO1xyXG4gICAgICAgIHRoaXMuaXNPdXRzaWRlQ29udGFpbmVyID0gZmFsc2U7XHJcbiAgICAgIC8vICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAvLyB9XHJcbiAgICB9LCAxMDApO1xyXG4gICAgdGhpcy5jb250YWluZXJSZWN0ID0gbnVsbDtcclxuICB9XHJcblxyXG4gIGdldFN0YXJ0SW5kZXgoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLnBhZ2luYXRpb25Db25maWcudG90YWxSZXN1bHRzID09PSAwXHJcbiAgICAgID8gMFxyXG4gICAgICA6ICh0aGlzLnBhZ2luYXRpb25Db25maWcucGFnZSAtIDEpICogdGhpcy5wYWdpbmF0aW9uQ29uZmlnLmxpbWl0ICsgMSB8fCAwO1xyXG4gIH1cclxuXHJcbiAgaGFzQW55RGVmYXVsdFZpZXcoKSB7XHJcbiAgICByZXR1cm4gdGhpcy50YWJsZVZpZXc/LnNvbWUoKHgpID0+IHguaXNfZGVmYXVsdCB8fCB4LmlzX3RlbXApO1xyXG4gIH1cclxuXHJcblxyXG4gIGdldCBpc1RhYmxlUHJlc2V0Tm90Q2hhbmdlZCgpIHtcclxuICAgIGlmICh0aGlzLnRhYmxlRmlsdGVyVmlld0lkKSByZXR1cm4gZmFsc2U7XHJcbiAgICBjb25zdCBjdXJyUHJlc2V0ID0gdGhpcy5jdXJyZXRhVGFibGVQcmVzZXRGb3JVcGRhdGU7XHJcblxyXG4gICAgY29uc3QgY3VycmVudFByZXNldENvbHVtbnMgPSBjdXJyUHJlc2V0Py5jb2x1bW5zPy5tYXAoKGNvbDogeyBmaWVsZDogYW55OyB3aWR0aDogYW55OyBwaW5uZWQ6IGFueTsgfSkgPT4ge1xyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIGZpZWxkOiBjb2wuZmllbGQsXHJcbiAgICAgICAgd2lkdGg6IGNvbC53aWR0aCxcclxuICAgICAgICBwaW5uZWQ6IGNvbC5waW5uZWRcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICBjb25zdCBjb2x1bW5zID0gdGhpcy5jb2x1bW5zPy5tYXAoY29sID0+IHtcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICBmaWVsZDogY29sLmZpZWxkLFxyXG4gICAgICAgIHdpZHRoOiBjb2wud2lkdGgsXHJcbiAgICAgICAgcGlubmVkOiBjb2wucGlubmVkXHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIGNvbnN0IHN0cmluZ3NDdXJyZW50UHJlc3RDb2xzID0gSlNPTi5zdHJpbmdpZnkoY3VycmVudFByZXNldENvbHVtbnMpO1xyXG4gICAgY29uc3Qgc3RyaW5nQ29sdW1ucyA9IEpTT04uc3RyaW5naWZ5KGNvbHVtbnMpO1xyXG4gICAgY29uc3QgZmlsdGVycyA9IHRoaXMuZmlsdGVyc0NvbmZpZy5tYXAoKGZpbHRlcikgPT4ge1xyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIGZpbGVkOiBmaWx0ZXIuZmllbGQsXHJcbiAgICAgICAgcXVlcnk6IHtcclxuICAgICAgICAgIGNvbmRpdGlvbjogZmlsdGVyPy5xdWVyeT8uY29uZGl0aW9uLFxyXG4gICAgICAgICAgZmlyc3RfY29uZGl0aW9uOiBmaWx0ZXI/LnF1ZXJ5Py5maXJzdF9jb25kaXRpb24sXHJcbiAgICAgICAgICBmaXJzdF92YWx1ZTogZmlsdGVyPy5xdWVyeT8uZmlyc3RfdmFsdWUsXHJcbiAgICAgICAgICBzZWNvbmRfY29uZGl0aW9uOiBmaWx0ZXI/LnF1ZXJ5Py5zZWNvbmRfY29uZGl0aW9uLFxyXG4gICAgICAgICAgc2Vjb25kX3ZhbHVlOiBmaWx0ZXI/LnF1ZXJ5Py5zZWNvbmRfdmFsdWUsXHJcbiAgICAgICAgfSxcclxuICAgICAgICBfaWRzOiBmaWx0ZXI/Ll9pZHNcclxuICAgICAgfVxyXG4gICAgfSlcclxuXHJcbiAgICBjb25zdCBjdXJyZW50UHJlc2V0RmlsdGVycyA9IGN1cnJQcmVzZXQ/LmZpbHRlcnM/Lm1hcCgoZmlsdGVyOiBhbnkpID0+IHtcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICBmaWxlZDogZmlsdGVyLmZpZWxkLFxyXG4gICAgICAgIHF1ZXJ5OiBmaWx0ZXIucXVlcnksXHJcbiAgICAgICAgX2lkczogZmlsdGVyPy5faWRzXHJcbiAgICAgIH1cclxuICAgIH0pXHJcblxyXG5cclxuICAgIC8vIGNvbnNvbGUubG9nKFwiZmlsdGVyIGNvbmdpZzogXCIsIGZpbHRlcnMpO1xyXG4gICAgLy8gY29uc29sZS5sb2coXCJjdXJyZW50IHByZXNldCBmaWx0ZXJzOiBcIiwgY3VycmVudFByZXNldEZpbHRlcnMpO1xyXG5cclxuICAgIC8vIGNvbnNvbGUubG9nKCdpc0VxdWFsJywgc3RyaW5nc0N1cnJlbnRQcmVzdENvbHMgPT0gc3RyaW5nQ29sdW1ucyk7XHJcbiAgICAvLyBjb25zb2xlLmxvZygnQ3VycmVudCBUZW1wIFByZXNldCA6ICcsIGN1cnJQcmVzZXQpXHJcbiAgICAvLyBjb25zb2xlLmxvZygnQ3VycmVudCBUZW1wIFByZXNldCBDb2xzIGNvbHVtbnM6ICcsIGN1cnJlbnRQcmVzZXRDb2x1bW5zKVxyXG4gICAgLy8gY29uc29sZS5sb2coJ0N1cnJlbnQgY29sdW1uczogJywgY29sdW1ucyk7XHJcblxyXG4gICAgaWYgKCFjdXJyZW50UHJlc2V0Q29sdW1ucykgcmV0dXJuIHRydWU7XHJcbiAgICByZXR1cm4gKGN1cnJlbnRQcmVzZXRDb2x1bW5zICYmIChzdHJpbmdzQ3VycmVudFByZXN0Q29scyA9PSBzdHJpbmdDb2x1bW5zKSAmJiAoSlNPTi5zdHJpbmdpZnkoZmlsdGVycykgPT0gSlNPTi5zdHJpbmdpZnkoY3VycmVudFByZXNldEZpbHRlcnMpKSAmJiAodGhpcy5mb250RmFpbWx5ID09IGN1cnJQcmVzZXQuY29uZmlnLmZvbnRGYWltbHkpXHJcbiAgICAgICYmICh0aGlzLmJvZHlUZXh0Rm9udHNTaXplID09IGN1cnJQcmVzZXQuY29uZmlnLmJvZHlUZXh0Rm9udHNTaXplKSAmJlxyXG4gICAgICAodGhpcy5oZWFkZXJUZXh0Rm9udHNTaXplID09IHRoaXMuaGVhZGVyVGV4dEZvbnRzU2l6ZSlcclxuICAgICAgJiYgdGhpcy5jdXJyZXRhVGFibGVQcmVzZXRGb3JVcGRhdGUuY29uZmlnLnNob3dWZXJ0aWNhbEJvcmRlciA9PSB0aGlzLnNob3dWZXJ0aWNhbEJvcmRlclxyXG4gICAgICAmJiB0aGlzLmN1cnJldGFUYWJsZVByZXNldEZvclVwZGF0ZS5jb25maWcuZm9udEZhaW1seSA9PSB0aGlzLmZvbnRGYWltbHlcclxuICAgICAgJiYgdGhpcy5jdXJyZXRhVGFibGVQcmVzZXRGb3JVcGRhdGUuY29uZmlnLnNlbGVjdGVkVGFibGVMYXlvdXQgPT0gdGhpcy5zZWxlY3RlZFRhYmxlTGF5b3V0XHJcbiAgICAgICYmIHRoaXMuY3VycmV0YVRhYmxlUHJlc2V0Rm9yVXBkYXRlLmNvbmZpZy5ib2R5VGV4dEZvbnRzU2l6ZSA9PSB0aGlzLmJvZHlUZXh0Rm9udHNTaXplXHJcbiAgICAgICYmIHRoaXMuY3VycmV0YVRhYmxlUHJlc2V0Rm9yVXBkYXRlLmNvbmZpZy5yb3dTaGFkaW5nRW5hYmxlZCA9PSB0aGlzLnJvd1NoYWRpbmdFbmFibGVkKTtcclxuXHJcbiAgICAvLyByZXR1cm4gZmFsc2VcclxuICB9XHJcblxyXG4gIG9uQWN0aW9uQnV0dG9uQ2xpY2soYnV0dG9uOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IHRleHQgPSBidXR0b24/LnRvTG9jYWxlTG93ZXJDYXNlKCk7XHJcbiAgICBpZiAodGV4dCA9PSAnYWN0aXZlIGRhdGEnIHx8IHRleHQgPT0gJ2FjdGl2ZScgfHwgdGV4dCA9PSAnZGF0YSBhY3RpdmUnIHx8IHRleHQgPT0gJ3VuYXJjaGl2ZWQgZGF0YScgfHwgdGV4dCA9PSAndW5hcmNoaXZlIGRhdGEnKSB0aGlzLmNsZWFyU2VsZWN0aW9uU3RhdGUodGhpcy50YWJsZVR5cGUpO1xyXG4gICAgY29uc3QgZXZlbnQgPSB7XHJcbiAgICAgIGRhdGE6IHtcclxuICAgICAgICBsaXN0aW5nVHlwZTogdGhpcy5saXN0aW5nVHlwZSxcclxuICAgICAgICBvYmo6IGJ1dHRvblxyXG4gICAgICB9LFxyXG4gICAgICBldmVudFR5cGU6IFwib25BY3Rpb25CdXR0b25DbGlja1wiLFxyXG4gICAgfTtcclxuICAgIHRoaXMuZ2VuZXJpY0V2ZW50LmVtaXQoZXZlbnQpO1xyXG4gIH1cclxuXHJcblxyXG4gIHNldEFjdGl2ZVRhYih0YWI6IHN0cmluZyB8IG51bGwpOiB2b2lkIHtcclxuICAgIHRoaXMuYWN0aXZlVGFiID0gdGFiO1xyXG4gICAgY29uc3QgYWxsVGFicyA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2FjdGl2ZVRhYnMnKSB8fCAne30nKTtcclxuICAgIGFsbFRhYnNbdGhpcy50YWJsZVR5cGVdID0gdGFiO1xyXG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2FjdGl2ZVRhYnMnLCBKU09OLnN0cmluZ2lmeShhbGxUYWJzKSk7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICBjb25zdCBldmVudCA9IHtcclxuICAgICAgZGF0YToge1xyXG4gICAgICAgIHRhYmxlVHlwZTogdGhpcy50YWJsZVR5cGUsXHJcbiAgICAgICAgb2JqOiB0YWJcclxuICAgICAgfSxcclxuICAgICAgZXZlbnRUeXBlOiAnb25UYWJDaGFuZ2UnLFxyXG4gICAgfTtcclxuXHJcbiAgICB0aGlzLmdlbmVyaWNFdmVudC5lbWl0KGV2ZW50KTtcclxuICB9XHJcblxyXG4gIGdldEJhY2tncm91bmRDb2xvcihyb3c6IGFueSwgaXNFdmVuOiBib29sZWFuLCBzZWN0aW9uOiAnbGVmdCcgfCAnY2VudGVyJyB8ICdyaWdodCcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xyXG4gICAgaWYgKHRoaXMuaG92ZXJlZFJvd0lkID09PSAocm93Ll9pZCB8fCByb3cuaWQpKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLnJvd0hvdmVyQ29sb3I7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5pc1Jvd1NlbGVjdGVkKHJvdykpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuY2hlY2tlZFJvd0JhY2tncm91bmRDb2xvcjtcclxuICAgIH1cclxuICAgIGxldCBiYXNlQ29sb3I6IHN0cmluZyB8IHVuZGVmaW5lZDtcclxuXHJcbiAgICBpZiAodGhpcy5yb3dTaGFkaW5nRW5hYmxlZCkge1xyXG4gICAgICBiYXNlQ29sb3IgPSBpc0V2ZW4gPyB0aGlzLmV2ZW5Sb3dzQmFja2dyb3VuZENvbG9yIDogdGhpcy5vZGRSb3dzQmFja2dyb3VuZENvbG9yO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgYmFzZUNvbG9yID0gdGhpcy5ldmVuUm93c0JhY2tncm91bmRDb2xvcjtcclxuICAgIH1cclxuICAgIGlmICghYmFzZUNvbG9yKSB7XHJcbiAgICAgIGlmIChzZWN0aW9uID09PSAnbGVmdCcpIHtcclxuICAgICAgICBiYXNlQ29sb3IgPSB0aGlzLmxlZnRQaW5uZWRCYWNrZ3JvdW5kQ29sb3I7XHJcbiAgICAgIH0gZWxzZSBpZiAoc2VjdGlvbiA9PT0gJ3JpZ2h0Jykge1xyXG4gICAgICAgIGJhc2VDb2xvciA9IHRoaXMucmlnaHRQaW5uZWRCYWNrZ3JvdW5kQ29sb3I7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgYmFzZUNvbG9yID0gdGhpcy5ib2R5QmFja2dyb3VuZENvbG9yO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYmFzZUNvbG9yO1xyXG4gIH1cclxuXHJcbiAgaGFzSG9yaXpvbnRhbFNjcm9sbGJhcigpOiBib29sZWFuIHtcclxuICAgIGlmICghdGhpcy5jZW50ZXJQaW5uZWRIZWFkZXI/Lm5hdGl2ZUVsZW1lbnQpIHJldHVybiBmYWxzZTtcclxuICAgIGNvbnN0IGVsID0gdGhpcy5jZW50ZXJQaW5uZWRIZWFkZXIubmF0aXZlRWxlbWVudDtcclxuICAgIHJldHVybiBlbC5zY3JvbGxXaWR0aCA+IGVsLmNsaWVudFdpZHRoO1xyXG4gIH1cclxuXHJcblxyXG4gIGdldFNhZmVDb21tZW50KGRlc2NyaXB0aW9uOiBzdHJpbmcpOiBTYWZlSHRtbCB7XHJcbiAgICByZXR1cm4gdGhpcy5jbGVhbkVkaXRvckNvbnRlbnQoZGVzY3JpcHRpb24pO1xyXG4gIH1cclxuICBjbGVhbkVkaXRvckNvbnRlbnQoY29udGVudDogc3RyaW5nKTogU2FmZUh0bWwge1xyXG4gICAgaWYgKCFjb250ZW50KSB7XHJcbiAgICAgIHJldHVybiAnJztcclxuICAgIH1cclxuICAgIC8vIDEuIERlY29kZSBIVE1MIGVudGl0aWVzXHJcbiAgICBjb25zdCB0ZXh0YXJlYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RleHRhcmVhJyk7XHJcbiAgICB0ZXh0YXJlYS5pbm5lckhUTUwgPSBjb250ZW50O1xyXG4gICAgbGV0IGRlY29kZWQgPSB0ZXh0YXJlYS52YWx1ZTtcclxuXHJcbiAgICBkZWNvZGVkID0gZGVjb2RlZFxyXG4gICAgICAucmVwbGFjZSgvPFxcLz8oc3BhbnxwfHRoZWFkfHRib2R5fHRmb290KVtePl0qPi9nLCAnJylcclxuICAgICAgLnJlcGxhY2UoLyZuYnNwOy9nLCAnICcpO1xyXG5cclxuICAgIC8vIEVuc3VyZSBjbGVhbiB0YWJsZSBzdHJ1Y3R1cmVcclxuICAgIGRlY29kZWQgPSBkZWNvZGVkXHJcbiAgICAgIC5yZXBsYWNlKC88dGFibGVbXj5dKj4vZywgJzx0YWJsZT4nKVxyXG4gICAgICAucmVwbGFjZSgvPHRyW14+XSo+L2csICc8dHI+JylcclxuICAgICAgLnJlcGxhY2UoLzx0aFtePl0qPi9nLCAnPHRoPicpXHJcbiAgICAgIC5yZXBsYWNlKC88dGRbXj5dKj4vZywgJzx0ZD4nKTsgIC8vIFJlbW92ZSA8dGhlYWQ+IGFuZCA8dGJvZHk+IHRhZ3NcclxuXHJcbiAgICAvLyA0LiBBZGQgaW5saW5lIHN0eWxlc1xyXG4gICAgZGVjb2RlZCA9IGRlY29kZWRcclxuICAgICAgLy8gQWRkIGlubGluZSBzdHlsZXMgdG8gPHRhYmxlPlxyXG4gICAgICAucmVwbGFjZSgvPHRhYmxlKFtePl0qKT4vZywgYDx0YWJsZSBzdHlsZT1cIndpZHRoOiAxMDAlOyBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOyBwYWRkaW5nOiAyMHB4OyBmb250LXNpemU6IDE0cHg7IGJhY2tncm91bmQtY29sb3I6ICNmZmZmZmY7XCIkMT5gKVxyXG4gICAgICAvLyBBZGQgaW5saW5lIHN0eWxlcyB0byA8dHI+XHJcbiAgICAgIC5yZXBsYWNlKC88dHIoW14+XSopPi9nLCBgPHRyIHN0eWxlPVwiYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNjY2M7XCIkMT5gKVxyXG4gICAgICAvLyBBZGQgaW5saW5lIHN0eWxlcyB0byA8dGg+XHJcbiAgICAgIC5yZXBsYWNlKC88dGgoW14+XSopPi9nLCBgPHRoIHN0eWxlPVwiYmFja2dyb3VuZC1jb2xvcjogI2YwZjBmMDsgZm9udC13ZWlnaHQ6IDYwMDsgZm9udC1zaXplOiAxNnB4OyBjb2xvcjogIzJBMUY3MzsgYm9yZGVyOiAxcHggc29saWQgI2NjYzsgcGFkZGluZzogMTJweCAyMHB4OyB0ZXh0LWFsaWduOiBsZWZ0O1wiJDE+YClcclxuICAgICAgLy8gQWRkIGlubGluZSBzdHlsZXMgdG8gPHRkPlxyXG4gICAgICAucmVwbGFjZSgvPHRkKFtePl0qKT4vZywgYDx0ZCBzdHlsZT1cIm1pbi13aWR0aDoxMjBweDsgYm9yZGVyOiAxcHggc29saWQgI2NjYzsgcGFkZGluZzogMTJweCAyMHB4OyB0ZXh0LWFsaWduOiBsZWZ0O1wiJDE+YCk7XHJcbiAgICBkZWNvZGVkID0gZGVjb2RlZC5yZXBsYWNlKC88aW1nKFtePl0qKT4vZywgKG1hdGNoLCBncm91cDEpID0+IHtcclxuICAgICAgLy8gQWRkIHN0eWxlIHRvIDxpbWc+IGlmIG5vdCBhbHJlYWR5IHNwZWNpZmllZFxyXG4gICAgICBpZiAoL3N0eWxlPS8udGVzdChncm91cDEpKSB7XHJcbiAgICAgICAgcmV0dXJuIG1hdGNoOyAgLy8gSWYgc3R5bGUgYWxyZWFkeSBleGlzdHMsIGtlZXAgaXRcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gYDxpbWcgc3R5bGU9XCJ3aWR0aDogMzAlOyBoZWlnaHQ6IDMwJTtib3JkZXItcmFkaXVzOiAxNnB4OyBwYWRkaW5nLXRvcDogMTVweDtwYWRkaW5nLWJvdHRvbTogMTBweDtcIiR7Z3JvdXAxfT5gO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIC8vIDUuIFJldHVybiBzYWZlIEhUTUxcclxuICAgIHJldHVybiB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0SHRtbChkZWNvZGVkKTtcclxuICB9XHJcblxyXG4gIGdldEV4dGVudGlvbih1cmw6IHN0cmluZyB8IHN0cmluZ1tdIHwgbnVsbCB8IHVuZGVmaW5lZCkge1xyXG4gICAgaWYgKHVybCAhPT0gJy0nKSB7XHJcbiAgICAgIGlmICh0eXBlb2YgKHVybCkgPT0gJ3N0cmluZycpIHtcclxuICAgICAgICByZXR1cm4gdXJsLnNwbGl0KCcuJykucG9wKClcclxuICAgICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHVybCkpIHtcclxuICAgICAgICByZXR1cm4gdXJsWzBdLnNwbGl0KCcuJykucG9wKClcclxuICAgICAgfSBlbHNlIHJldHVybiAnLSdcclxuICAgIH1cclxuICAgIGVsc2UgcmV0dXJuICctJ1xyXG4gIH1cclxuXHJcbiAgZG93bmxvYWRBdHRjaG1lbnQodXJsOiBhbnksIGZpbGU/OiBhbnkpIHtcclxuICAgIC8vIHRoaXMub25FdmVudC5lbWl0KHtcclxuICAgIC8vICAgZG93bmxvYWQ6IHRydWUsXHJcbiAgICAvLyB9KTtcclxuICAgIC8vIHRoaXMuZ2VuZXJpY0V2ZW50LmVtaXQoZGF0YSlcclxuICAgIC8vIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICBjb25zdCBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xyXG4gICAgbGluay5ocmVmID0gdXJsO1xyXG4gICAgbGluay5kb3dubG9hZCA9ICcnO1xyXG4gICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChsaW5rKTtcclxuICAgIGxpbmsuY2xpY2soKTtcclxuICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQobGluayk7XHJcblxyXG4gIH1cclxuICBmdWxsSW1hZ2VTcmM6IHN0cmluZyB8IG51bGwgPSAnJztcclxuICBvcGVuRnVsbEltYWdlKGV2ZW50OiBFdmVudCkge1xyXG4gICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xyXG4gICAgaWYgKHRhcmdldC50YWdOYW1lID09PSAnSU1HJykge1xyXG4gICAgICB0aGlzLmZ1bGxJbWFnZVNyYyA9IHRhcmdldC5nZXRBdHRyaWJ1dGUoJ3NyYycpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYWRkU3R5bGVzVG9JbWFnZXMoKTogdm9pZCB7XHJcbiAgICBjb25zdCBpbWFnZXMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuY29tbWVudC1jb250ZW50IGltZycpO1xyXG4gICAgaW1hZ2VzLmZvckVhY2goKGltZykgPT4ge1xyXG4gICAgICAvLyBBcHBseSBpbmxpbmUgc3R5bGVzIGRpcmVjdGx5XHJcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoaW1nLCAnd2lkdGgnLCAnNzBweCcpO1xyXG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKGltZywgJ2JvcmRlci1yYWRpdXMnLCAnMTZweCcpO1xyXG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKGltZywgJ21hcmdpbicsICc4cHgnKTtcclxuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShpbWcsICdjdXJzb3InLCAncG9pbnRlcicpO1xyXG5cclxuICAgICAgLy8gQWRkIGNsaWNrIGxpc3RlbmVyIHRvIHNob3cgZnVsbHNjcmVlbiBpbWFnZSBvbiBjbGlja1xyXG4gICAgICB0aGlzLnJlbmRlcmVyLmxpc3RlbihpbWcsICdjbGljaycsICgpID0+IHRoaXMub25JbWFnZUNsaWNrKChpbWcgYXMgSFRNTEltYWdlRWxlbWVudCkuc3JjKSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG9uSW1hZ2VDbGljayhzcmM6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5mdWxsc2NyZWVuSW1hZ2UgPSBzcmM7XHJcbiAgfVxyXG5cclxuICBAVmlld0NoaWxkKCdmdWxsc2NyZWVuSW1hZ2VUZW1wbGF0ZScpIGZ1bGxzY3JlZW5JbWFnZVRlbXBsYXRlITogVGVtcGxhdGVSZWY8YW55PjtcclxuICBwcml2YXRlIGZ1bGxzY3JlZW5WaWV3UmVmOiBFbWJlZGRlZFZpZXdSZWY8YW55PiB8IG51bGwgPSBudWxsO1xyXG5cclxuICBpY29uTWFwOiBSZWNvcmQ8c3RyaW5nLCAocm93OiBhbnksIGNvbDogYW55KSA9PiBzdHJpbmc+ID0ge1xyXG4gICAgYXR0YWNobWVudHNfY291bnQ6ICgpID0+IHRoaXMuc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvYXR0YWNobWVudHMuc3ZnJyxcclxuICAgIGNvbW1lbnRfY291bnQ6ICgpID0+IHRoaXMuc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvY29tbWVudHMuc3ZnJyxcclxuICAgIHByaW9yaXR5OiAocm93LCBjb2wpID0+IHtcclxuICAgICAgY29uc3QgdmFsID1cclxuICAgICAgICB0aGlzLmdldE5lc3RlZFZhbHVlKHJvdywgY29sLmZpZWxkKT8udmFsdWUgfHxcclxuICAgICAgICB0aGlzLmdldE5lc3RlZFZhbHVlKHJvdywgY29sLmZpZWxkKT8ubmFtZSB8fFxyXG4gICAgICAgIHRoaXMuZ2V0TmVzdGVkVmFsdWUocm93LCBjb2wuZmllbGQpO1xyXG5cclxuICAgICAgcmV0dXJuIChcclxuICAgICAgICB0aGlzLnNpbmdsZVNwYUFzc2V0c1BhdGggK1xyXG4gICAgICAgICdkYXRhLWdyaWQvaWNvbnMvJyArXHJcbiAgICAgICAgKHZhbCA/PyAnZGVmYXVsdCcpICtcclxuICAgICAgICAnLnN2ZydcclxuICAgICAgKTtcclxuICAgIH0sXHJcbiAgfTtcclxuXHJcbiAgdG9nZ2xlRnVsbHNjcmVlbigpIHtcclxuICAgIHRoaXMuaXNGdWxsU2NyZWVuID0gIXRoaXMuaXNGdWxsU2NyZWVuO1xyXG4gICAgY29uc3QgZWxlbSA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCBhcyBhbnk7XHJcbiAgICBpZiAoIWRvY3VtZW50LmZ1bGxzY3JlZW5FbGVtZW50KSB7XHJcbiAgICAgIGlmIChlbGVtLnJlcXVlc3RGdWxsc2NyZWVuKSB7XHJcbiAgICAgICAgZWxlbS5yZXF1ZXN0RnVsbHNjcmVlbigpO1xyXG4gICAgICB9IGVsc2UgaWYgKGVsZW0ubW96UmVxdWVzdEZ1bGxTY3JlZW4pIHtcclxuICAgICAgICBlbGVtLm1velJlcXVlc3RGdWxsU2NyZWVuKCk7XHJcbiAgICAgIH0gZWxzZSBpZiAoZWxlbS53ZWJraXRSZXF1ZXN0RnVsbHNjcmVlbikge1xyXG4gICAgICAgIGVsZW0ud2Via2l0UmVxdWVzdEZ1bGxzY3JlZW4oKTtcclxuICAgICAgfSBlbHNlIGlmIChlbGVtLm1zUmVxdWVzdEZ1bGxzY3JlZW4pIHtcclxuICAgICAgICBlbGVtLm1zUmVxdWVzdEZ1bGxzY3JlZW4oKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKGRvY3VtZW50LmV4aXRGdWxsc2NyZWVuKSB7XHJcbiAgICAgICAgZG9jdW1lbnQuZXhpdEZ1bGxzY3JlZW4oKTtcclxuICAgICAgfSBlbHNlIGlmICgoZG9jdW1lbnQgYXMgYW55KS5tb3pDYW5jZWxGdWxsU2NyZWVuKSB7XHJcbiAgICAgICAgKGRvY3VtZW50IGFzIGFueSkubW96Q2FuY2VsRnVsbFNjcmVlbigpO1xyXG4gICAgICB9IGVsc2UgaWYgKChkb2N1bWVudCBhcyBhbnkpLndlYmtpdEV4aXRGdWxsc2NyZWVuKSB7XHJcbiAgICAgICAgKGRvY3VtZW50IGFzIGFueSkud2Via2l0RXhpdEZ1bGxzY3JlZW4oKTtcclxuICAgICAgfSBlbHNlIGlmICgoZG9jdW1lbnQgYXMgYW55KS5tc0V4aXRGdWxsc2NyZWVuKSB7XHJcbiAgICAgICAgKGRvY3VtZW50IGFzIGFueSkubXNFeGl0RnVsbHNjcmVlbigpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkNlbGxFdmVudChldmVudDogYW55KSB7XHJcbiAgICB0aGlzLmN1c3RvbUNlbGxFdmVudC5lbWl0KGV2ZW50KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZmxhdHRlbkdyb3VwKHJvdzogYW55KTogYW55W10ge1xyXG4gICAgY29uc3QgcmVzdWx0OiBhbnlbXSA9IFtdO1xyXG4gICAgY29uc3QgdHJhdmVyc2UgPSAobm9kZTogYW55KSA9PiB7XHJcbiAgICAgIGlmICghbm9kZSkgcmV0dXJuO1xyXG4gICAgICBpZiAobm9kZS5pc0dyb3VwKSB7XHJcbiAgICAgICAgbm9kZS5jaGlsZHJlbj8uZm9yRWFjaCgoY2hpbGQ6IGFueSkgPT4gdHJhdmVyc2UoY2hpbGQpKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXN1bHQucHVzaChub2RlKTtcclxuICAgICAgfVxyXG4gICAgfTtcclxuICAgIHRyYXZlcnNlKHJvdyk7XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH1cclxuXHJcbiAgc2VsZWN0R3JvdXBSb3coZTogRXZlbnQsIHJvdzogYW55KSB7XHJcbiAgICBjb25zdCBjaGVja2JveCA9IGUudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XHJcbiAgICBjb25zdCBpc0NoZWNrZWQgPSBjaGVja2JveC5jaGVja2VkO1xyXG4gICAgLy8gR2V0IGFsbCBkZWVwIGRhdGEgcm93cyAobGVhZiByb3dzKVxyXG4gICAgY29uc3QgbGVhZlJvd3MgPSB0aGlzLmZsYXR0ZW5Hcm91cChyb3cpO1xyXG4gICAgaWYgKGlzQ2hlY2tlZCkge1xyXG4gICAgICBsZWFmUm93cy5mb3JFYWNoKHIgPT4ge1xyXG4gICAgICAgIGNvbnN0IGlkID0gci5faWQgfHwgci5pZDtcclxuICAgICAgICBpZiAoaWQpIHRoaXMuc2VsZWN0ZWRSb3dzLmFkZChpZCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbGVhZlJvd3MuZm9yRWFjaChyID0+IHtcclxuICAgICAgICBjb25zdCBpZCA9IHIuX2lkIHx8IHIuaWQ7XHJcbiAgICAgICAgaWYgKGlkKSB0aGlzLnNlbGVjdGVkUm93cy5kZWxldGUoaWQpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIGNvbnN0IGlkcyA9IEFycmF5LmZyb20odGhpcy5zZWxlY3RlZFJvd3MpO1xyXG4gICAgY29uc3QgZXZlbnQgPSB7XHJcbiAgICAgIGRhdGE6IHtcclxuICAgICAgICBsaXN0aW5nVHlwZTogdGhpcy5saXN0aW5nVHlwZSxcclxuICAgICAgICBvYmo6IGlkc1xyXG4gICAgICB9LFxyXG4gICAgICBldmVudFR5cGU6IFwib25TZWxlY3RSb3dcIixcclxuICAgIH1cclxuICAgIHRoaXMuZ2VuZXJpY0V2ZW50LmVtaXQoZXZlbnQpO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgZ2V0R3JvdXBDaGVja2VkU3RhdGUocm93OiBhbnkpOiBib29sZWFuIHwgdW5kZWZpbmVkIHtcclxuICAgIGlmICghcm93LmlzR3JvdXApIHJldHVybiBmYWxzZTtcclxuICAgIGNvbnN0IGxlYWZSb3dzID0gdGhpcy5mbGF0dGVuR3JvdXAocm93KTtcclxuICAgIGxldCBjaGVja2VkQ291bnQgPSAwO1xyXG4gICAgbGVhZlJvd3MuZm9yRWFjaChyID0+IHtcclxuICAgICAgY29uc3QgaWQgPSByLl9pZCB8fCByLmlkO1xyXG4gICAgICBpZiAodGhpcy5zZWxlY3RlZFJvd3MuaGFzKGlkKSkgY2hlY2tlZENvdW50Kys7XHJcbiAgICB9KTtcclxuICAgIGlmIChjaGVja2VkQ291bnQgPT09IDApIHJldHVybiBmYWxzZTtcclxuICAgIGlmIChjaGVja2VkQ291bnQgPT09IGxlYWZSb3dzLmxlbmd0aCkgcmV0dXJuIHRydWU7XHJcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gIH1cclxuXHJcbiAgZ2V0Q2VsbFRpdGxlKHJvdzogYW55LCBjb2w6IGFueSk6IHN0cmluZyB7XHJcbiAgICBjb25zdCB2YWwgPSB0aGlzLmdldE5lc3RlZFZhbHVlKHJvdywgY29sLmZpZWxkKTtcclxuXHJcbiAgICBpZiAoIXRoaXMuaXNOZXN0ZWRWYWx1ZUFycmF5KHJvdywgY29sLmZpZWxkKSkge1xyXG4gICAgICBpZiAoY29sLnR5cGUgPT09ICdkYXRlJykge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmNvbW1vblNldmljZS5mb3JtYXREYXRlVmFsdWUodmFsLCB0aGlzLmRhdGVGb3JtYXQpO1xyXG4gICAgICB9IGVsc2UgaWYgKGNvbD8uaXNfYW1vdW50KSB7XHJcbiAgICAgICAgaWYoIXZhbCkgcmV0dXJuIGAwLjAwYFxyXG4gICAgICAgIHJldHVybiB0aGlzLmZvcm1hdEN1cnJlbmN5LnRyYW5zZm9ybSh2YWwsIHRoaXMuY3VycmVuY3lGb3JtYXQpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gKFxyXG4gICAgICAgIHZhbD8udmFsdWUgPz9cclxuICAgICAgICB2YWw/Lm5hbWUgPz9cclxuICAgICAgICB2YWwgPz9cclxuICAgICAgICAoY29sLmlzX2Ftb3VudCA/ICcwJyA6ICctJylcclxuICAgICAgKSArICcnO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGZpcnN0ID0gdmFsPy5bMF07XHJcblxyXG4gICAgcmV0dXJuIChcclxuICAgICAgZmlyc3Q/LmRlcGFydG1lbnRfbmFtZSA/P1xyXG4gICAgICBmaXJzdD8ucm9sZU5hbWUgPz9cclxuICAgICAgZmlyc3Q/LmZ1bGxfbmFtZSA/P1xyXG4gICAgICAnLSdcclxuICAgICk7XHJcbiAgfVxyXG5cclxuXHJcbiAgZmluaXNoRWRpdChldmVudDogYW55KSB7XHJcbiAgICBjb25zb2xlLmxvZygnY2VsbCBlZGl0ZWRkZGRkZGRkZGRkZGRkZDogJywgZXZlbnQpXHJcbiAgfVxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcbn0iLCI8ZGl2IGNsYXNzPVwicG9zaXRpb24tcmVsYXRpdmUgaC0xMDBcIj5cclxuICA8ZGl2XHJcbiAgICBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBtYi0yIGFsaWduLWl0ZW1zLWNlbnRlciBwb3NpdGlvbi1yZWxhdGl2ZVwiXHJcbiAgPlxyXG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBnYXAtMlwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibmF2IG5hdi10YWJzXCIgKm5nSWY9XCJ0cnVlXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm5hdiBuYXYtdGFic1wiIGlkPVwibmF2LXRhYlwiIHJvbGU9XCJ0YWJsaXN0XCI+XHJcbiAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgdGFiIG9mIHRhYnM7IGxldCBpID0gaW5kZXhcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwic2V0QWN0aXZlVGFiKHRhYilcIlxyXG4gICAgICAgICAgICBjbGFzcz1cIm5hdi1saW5rIGN1cnNvci1wb2ludGVyXCJcclxuICAgICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJhY3RpdmVUYWIgPT0gdGFiXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAge3sgdGFiIH19XHJcbiAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZ2xvYmFsLXNlYXJjaFwiIFtzdHlsZS53aWR0aC5weF09XCIzNTBcIj5cclxuICAgICAgICA8c3BhblxyXG4gICAgICAgICAgKm5nSWY9XCJlbmFibGVHbG9iYWxTZWFyY2hcIlxyXG4gICAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9zZWFyY2guc3ZnJ1wiXHJcbiAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBteC0yIHBvc2l0aW9uLWFic29sdXRlIGljb25cIlxyXG4gICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAqbmdJZj1cImVuYWJsZUdsb2JhbFNlYXJjaFwiXHJcbiAgICAgICAgICBzdHlsZT1cImhlaWdodDogMzZweFwiXHJcbiAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXHJcbiAgICAgICAgICBwbGFjZWhvbGRlcj1cIlR5cGUgdG8gc2VhcmNoLCB0aGVuIHByZXNzIEVudGVyXCJcclxuICAgICAgICAgIFsobmdNb2RlbCldPVwidGFibGVTZWFyY2hcIlxyXG4gICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwib25HbG9iYWxTZWFyY2goKVwiXHJcbiAgICAgICAgICAoaW5wdXQpPVwib25TZWFyY2hJbnB1dCgkZXZlbnQpXCJcclxuICAgICAgICAgIHR5cGU9XCJzZWFyY2hcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGdhcC0yIGFsaWduLWl0ZW1zLWNlbnRlciB0YWJsZS1yaWdodC10b3AtYWN0aW9uc1wiPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBidXR0b24gb2YgYnV0dG9uc1wiPlxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMiBhY3Rpb24tYnV0dG9ucy1yb3dcIlxyXG4gICAgICAgICAgKm5nSWY9XCJidXR0b24/Lmhhc19wZXJtaXNzaW9uXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8YVxyXG4gICAgICAgICAgICBocmVmPVwiSmF2YVNjcmlwdDp2b2lkKDApXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uQWN0aW9uQnV0dG9uQ2xpY2soYnV0dG9uLm5hbWUpXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJidXR0b24gYnV0dG9uLXNtYWxsIGJ0biBib3JkZXIgYm9yZGVyLXByaW1hcnkgYnRuLWFjdGl2ZS1wcmltYXJ5IG1lLTIgcC0wIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlciBweC0zXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAqbmdJZj1cImJ1dHRvbi5pc19zaG93SWNvblwiXHJcbiAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zLycgKyBidXR0b24uaWNvbiArICcuc3ZnJ1xyXG4gICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi0yXCJcclxuICAgICAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICBjbGFzcz1cImxhYmVsLWhpZGRlbiB0ZXh0LXdoaXRlXCJcclxuICAgICAgICAgICAgICBbY2xhc3MubXMtMF09XCJidXR0b24uaXNfc2hvd0ljb25cIlxyXG4gICAgICAgICAgICAgID57eyBidXR0b24/Lm5hbWUgfX08L3NwYW5cclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgPC9hPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPGRpdlxyXG4gICAgICAgICpuZ0lmPVwiIXNob3dGaWx0ZXJSb3dcIlxyXG4gICAgICAgIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXIgcG9zaXRpb24tcmVsYXRpdmUgYWN0aW9uLWJ1dHRvbnMtcm93XCJcclxuICAgICAgICAoY2xpY2spPVwidG9nZ2xlT3BlbkZpbHRlcigpXCJcclxuICAgICAgICBbY2xhc3MuYWN0aXZlXT1cInNob3dGaWx0ZXJzXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxhXHJcbiAgICAgICAgICBocmVmPVwiSmF2YVNjcmlwdDp2b2lkKDApXCJcclxuICAgICAgICAgIGNsYXNzPVwiYnV0dG9uIGJ1dHRvbi1zbWFsbCBidG4gYnRuLWFjdGl2ZS1wcmltYXJ5IGJvcmRlciBib3JkZXItcHJpbWFyeSBtZS0yIHAtMCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXIgcHgtM1wiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9maWx0ZXItMi5zdmcnXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi0yXCJcclxuICAgICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsLWhpZGRlbiB0ZXh0LXdoaXRlXCI+RmlsdGVyczwvc3Bhbj5cclxuICAgICAgICA8L2E+XHJcbiAgICAgICAgPHNwYW5cclxuICAgICAgICAgICpuZ0lmPVwiYWN0aXZlRmlsdGVyZWRDb2x1bW5zPy5sZW5ndGhcIlxyXG4gICAgICAgICAgc3R5bGU9XCJcclxuICAgICAgICAgICAgd2lkdGg6IDdweDtcclxuICAgICAgICAgICAgaGVpZ2h0OiA3cHg7XHJcbiAgICAgICAgICAgIGJveC1zaGFkb3c6IDBweCAwcHggM3B4ICMwMDIyZmY7XHJcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYigwLCA2MCwgMjU1KTtcclxuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICAgICAgICByaWdodDogMTZweDtcclxuICAgICAgICAgICAgdG9wOiAxMHB4O1xyXG4gICAgICAgICAgXCJcclxuICAgICAgICAgIGNsYXNzPVwicm91bmRlZC1jaXJjbGUgZC1ibG9ja1wiXHJcbiAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXZcclxuICAgICAgICBjbGFzcz1cImN1cnNvci1wb2ludGVyIGQtbm9uZVwiXHJcbiAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUFjdGlvbnMoJ2FkdmFuY2UtZmlsdGVyJylcIlxyXG4gICAgICAgIFtjbGFzcy5hY3RpdmVdPVwiYWN0aXZlVG9wQnV0dG9uID09PSAnYWR2YW5jZS1maWx0ZXInXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxzcGFuXHJcbiAgICAgICAgICBbaW5saW5lU1ZHXT1cInNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL3pvb20tY2hhcmdlLnN2ZydcIlxyXG4gICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gdG9wLWljb24gbWUtMlwiXHJcbiAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXZcclxuICAgICAgICBjbGFzcz1cImN1cnNvci1wb2ludGVyIGFjdGlvbi1idXR0b25zLXJvd1wiXHJcbiAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUFjdGlvbnMoJ3NldHRpbmcnKVwiXHJcbiAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJcclxuICAgICAgICAgIGFjdGl2ZVRvcEJ1dHRvbiA9PT0gJ3NldHRpbmcnIHx8XHJcbiAgICAgICAgICBhY3RpdmVUb3BCdXR0b24gPT09ICd0YWJsZS1sYXlvdXQnIHx8XHJcbiAgICAgICAgICBhY3RpdmVUb3BCdXR0b24gPT09ICd0YWJsZS1wcmVzZXRzJyB8fFxyXG4gICAgICAgICAgYWN0aXZlVG9wQnV0dG9uID09PSAnc2hvdy1oaWRlLWNvbHVtbnMnXHJcbiAgICAgICAgXCJcclxuICAgICAgPlxyXG4gICAgICAgIDwhLS0gPHNwYW5cclxuICAgICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvc2V0dGluZ3MtMi5zdmcnXCJcclxuICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIHRvcC1pY29uIG1lLTJcIlxyXG4gICAgICAgID48L3NwYW4+IC0tPlxyXG4gICAgICAgIDxhXHJcbiAgICAgICAgICBocmVmPVwiSmF2YVNjcmlwdDp2b2lkKDApXCJcclxuICAgICAgICAgIGNsYXNzPVwiYnV0dG9uIGJ1dHRvbi1zbWFsbCBidG4gYnRuLWFjdGl2ZS1wcmltYXJ5IGJvcmRlciBib3JkZXItcHJpbWFyeSBtZS0yIHAtMCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXIgcHgtM1wiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9zZXR0aW5ncy0yLnN2ZydcIlxyXG4gICAgICAgICAgICBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTJcIlxyXG4gICAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWwtaGlkZGVuIHRleHQtd2hpdGVcIj5TZXR0aW5nPC9zcGFuPlxyXG4gICAgICAgIDwvYT5cclxuXHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgKm5nSWY9XCJhY3RpdmVUb3BCdXR0b24gPT09ICdzZXR0aW5nJ1wiXHJcbiAgICAgICAgICBjbGFzcz1cImFjdGlvbnMtZHJvcGRvd24gbXQtMSBhY3Rpb25zLWRyb3Bkb3duLXNldHRpbmdcIlxyXG4gICAgICAgICAgc3R5bGU9XCJwb3NpdGlvbjogYWJzb2x1dGVcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1tZW51IHNob3cgc2hhZG93IGN1c3RvbS1tZW51XCI+XHJcbiAgICAgICAgICAgIDwhLS0gVGFibGUgTGF5b3V0IC0tPlxyXG4gICAgICAgICAgICA8YVxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZHJvcGRvd24taXRlbSBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIGN1cnNvci1wb2ludGVyXCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyB0b2dnbGVBY3Rpb25zKCd0YWJsZS1sYXlvdXQnKVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgPjxzcGFuXHJcbiAgICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvdGFibGUtMi5zdmcnXHJcbiAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIG1lLTJcIlxyXG4gICAgICAgICAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIFRhYmxlIExheW91dDwvc3BhblxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvY2hldnJvbi1yaWdodC5zdmcnXHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gbWUtMlwiXHJcbiAgICAgICAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICA8IS0tIFRhYmxlIFByZXNldHMgLS0+XHJcbiAgICAgICAgICAgIDxhXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgdG9nZ2xlQWN0aW9ucygndGFibGUtcHJlc2V0cycpXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImRyb3Bkb3duLWl0ZW0gZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciBjdXJzb3ItcG9pbnRlclwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgPjxzcGFuXHJcbiAgICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvbGlzdC1kZXRhaWxzLnN2ZydcclxuICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gbWUtMlwiXHJcbiAgICAgICAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgVGFibGUgUHJlc2V0czwvc3BhblxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvY2hldnJvbi1yaWdodC5zdmcnXHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gbWUtMlwiXHJcbiAgICAgICAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICAgICAgPC9hPlxyXG5cclxuICAgICAgICAgICAgPCEtLSBDb2x1bW5zIC0tPlxyXG4gICAgICAgICAgICA8YVxyXG4gICAgICAgICAgICAgICpuZ0lmPVwiIXNob3dTaWRlTWVudVwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIlxyXG4gICAgICAgICAgICAgICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyB0b2dnbGVBY3Rpb25zKCdzaG93LWhpZGUtY29sdW1ucycpXHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImRyb3Bkb3duLWl0ZW0gZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciBjdXJzb3ItcG9pbnRlclwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgPjxzcGFuXHJcbiAgICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvZXllLnN2ZydcIlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBtZS0yXCJcclxuICAgICAgICAgICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICBDb2x1bW5zPC9zcGFuXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZ2FwLTJcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXV0ZWQtdGV4dFwiPnt7IGNvbHVtbnNDb3VudCB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvY2hldnJvbi1yaWdodC5zdmcnXHJcbiAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIG1lLTJcIlxyXG4gICAgICAgICAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9hPlxyXG5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLWRpdmlkZXJcIj48L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDwhLS0gRmlsdGVyIC0tPlxyXG4gICAgICAgICAgICA8YVxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZHJvcGRvd24taXRlbSBjdXJzb3ItcG9pbnRlclwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZU9wZW5GaWx0ZXIoKTsgYWN0aXZlVG9wQnV0dG9uID0gJyc7XCJcclxuICAgICAgICAgICAgICAqbmdJZj1cIiFzaG93RmlsdGVyUm93XCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxyXG4gICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9maWx0ZXItMi5zdmcnXHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gbWUtMiBtdC0xIGN1cnNvci1wb2ludGVyXCJcclxuICAgICAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgICAgIEZpbHRlclxyXG4gICAgICAgICAgICA8L2E+XHJcblxyXG4gICAgICAgICAgICA8IS0tIERvd25sb2FkIC0tPlxyXG4gICAgICAgICAgICA8YVxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZHJvcGRvd24taXRlbSBjdXJzb3ItcG9pbnRlclwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImRvd25sb2FkQ3N2KCdjc3YnKVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvZG93bmxvYWQuc3ZnJ1xyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIG1lLTIgY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAgICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgICAgICAgQ1NWIEV4cG9ydFxyXG4gICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgIDxhXHJcbiAgICAgICAgICAgICAgKm5nSWY9XCJlbmFibGVFeHBvcnRcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZHJvcGRvd24taXRlbSBjdXJzb3ItcG9pbnRlclwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImRvd25sb2FkQ3N2KCd4bHN4JylcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXHJcbiAgICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2Rvd25sb2FkLnN2ZydcclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBtZS0yIGN1cnNvci1wb2ludGVyXCJcclxuICAgICAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgICAgIEV4Y2VsIEV4cG9ydFxyXG4gICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgIDwhLS0gRm9udCBGYW1pbHkgJiBGb250IFNpemUgLS0+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0yIHBiLTIgcHQtMlwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZ2FwLTJcIj5cclxuICAgICAgICAgICAgICAgIDwhLS0gRm9udCBGYW1pbHkgLS0+XHJcbiAgICAgICAgICAgICAgICA8c2VsZWN0XHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1zZWxlY3QgZm9ybS1zZWxlY3Qtc21cIlxyXG4gICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImZvbnRGYWltbHlcIlxyXG4gICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIm9uRm9udENoYW5nZSgpXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgZm9udCBvZiBmb250RmFtaWxpZXNcIiBbdmFsdWVdPVwiZm9udFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7IGZvbnQgfX1cclxuICAgICAgICAgICAgICAgICAgPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICA8L3NlbGVjdD5cclxuXHJcbiAgICAgICAgICAgICAgICA8IS0tIEZvbnQgU2l6ZSAtLT5cclxuICAgICAgICAgICAgICAgIDxzZWxlY3RcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLXNlbGVjdCBmb3JtLXNlbGVjdC1zbVwiXHJcbiAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwib25Gb250Q2hhbmdlKClcIlxyXG4gICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImJvZHlUZXh0Rm9udHNTaXplXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgc2l6ZSBvZiBmb250U2l6ZXNcIiBbdmFsdWVdPVwic2l6ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7IHNpemUgfX1cclxuICAgICAgICAgICAgICAgICAgPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPCEtLSBUYWJsZSBMYXlvdXQgLS0+XHJcblxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhY3RpdmVUb3BCdXR0b24gPT09ICd0YWJsZS1sYXlvdXQnXCI+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwidGFibGVMYXlvdXRcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImFjdGlvbnMtZHJvcGRvd24gbXQtMVwiXHJcbiAgICAgICAgICAgIHN0eWxlPVwicG9zaXRpb246IGFic29sdXRlXCJcclxuICAgICAgICAgID48L2Rpdj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgPCEtLSBUYWJsZSBQcmVzZXRzIC0tPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhY3RpdmVUb3BCdXR0b24gPT09ICd0YWJsZS1wcmVzZXRzJ1wiPlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cInRhYmxlUHJlc2V0XCJcclxuICAgICAgICAgICAgY2xhc3M9XCJhY3Rpb25zLWRyb3Bkb3duIG10LTFcIlxyXG4gICAgICAgICAgICBzdHlsZT1cInBvc2l0aW9uOiBhYnNvbHV0ZVwiXHJcbiAgICAgICAgICA+PC9kaXY+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgIDwhLS0gVGFibGUgUHJlc2V0cyAtLT5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYWN0aXZlVG9wQnV0dG9uID09PSAnc2hvdy1oaWRlLWNvbHVtbnMnXCI+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwic2hvd0hpZGVDb2x1bW5zXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJhY3Rpb25zLWRyb3Bkb3duIG10LTFcIlxyXG4gICAgICAgICAgICBzdHlsZT1cInBvc2l0aW9uOiBhYnNvbHV0ZVwiXHJcbiAgICAgICAgICA+PC9kaXY+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cImFjdGlvbi1idXR0b25zLXJvd1wiICpuZ0lmPVwic2hvd0Z1bGxTY3JlZW5CdXR0b25cIj5cclxuICAgICAgICA8YVxyXG4gICAgICAgICAgKm5nSWY9XCIhaXNGdWxsU2NyZWVuXCJcclxuICAgICAgICAgIGNsYXNzPVwiYnV0dG9uIGJ1dHRvbi1zbWFsbCBidG4gYnRuLWFjdGl2ZS1wcmltYXJ5IGJvcmRlciBib3JkZXItcHJpbWFyeSBleHBlbmQgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVGdWxsc2NyZWVuKClcIlxyXG4gICAgICAgICAgZGF0YS1icy10b2dnbGU9XCJ0b29sdGlwXCJcclxuICAgICAgICAgIGRhdGEtYnMtcGxhY2VtZW50PVwidG9wXCJcclxuICAgICAgICAgIHRpdGxlPVwiTWluaW1pc2VcIlxyXG4gICAgICAgICAgW25nQ2xhc3NdPVwieyBtaW5BcnJvdzogIWlzRnVsbFNjcmVlbiwgbWF4QXJyb3c6IGlzRnVsbFNjcmVlbiB9XCJcclxuICAgICAgICAgIHN0eWxlPVwidHJhbnNpdGlvbjogY29sb3IgMC4yc1wiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9leHBlbmQuc3ZnJ1wiXHJcbiAgICAgICAgICAgIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tMiBtYi0xXCJcclxuICAgICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgPC9hPlxyXG4gICAgICAgIDxhXHJcbiAgICAgICAgICAqbmdJZj1cImlzRnVsbFNjcmVlblwiXHJcbiAgICAgICAgICBjbGFzcz1cImJ1dHRvbiBidXR0b24tc21hbGwgYnRuIGJ0bi1hY3RpdmUtcHJpbWFyeSBib3JkZXIgYm9yZGVyLXByaW1hcnkgZXhwZW5kIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlRnVsbHNjcmVlbigpXCJcclxuICAgICAgICAgIGRhdGEtYnMtdG9nZ2xlPVwidG9vbHRpcFwiXHJcbiAgICAgICAgICBkYXRhLWJzLXBsYWNlbWVudD1cInRvcFwiXHJcbiAgICAgICAgICB0aXRsZT1cIk1heGltaXNlXCJcclxuICAgICAgICAgIFtuZ0NsYXNzXT1cInsgbWluQXJyb3c6ICFpc0Z1bGxTY3JlZW4sIG1heEFycm93OiBpc0Z1bGxTY3JlZW4gfVwiXHJcbiAgICAgICAgICBzdHlsZT1cInRyYW5zaXRpb246IGNvbG9yIDAuMnNcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvbWluaW1pemUuc3ZnJ1wiXHJcbiAgICAgICAgICAgIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tMiBtYi0xXCJcclxuICAgICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgPC9hPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdj5cclxuICAgICAgICA8IS0tIEV4YW1wbGUgc2luZ2xlIGRhbmdlciBidXR0b24gLS0+XHJcblxyXG4gICAgICAgIDwhLS0gPGJ1dHRvblxyXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tc20gZC1mbGV4IGdhcC0yIGFjdGlvbi1idXR0b25cIlxyXG4gICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUFjdGlvbnMoJ2FjdGlvbnMnKVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgQWN0aW9uXHJcbiAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICBbaW5saW5lU1ZHXT1cInNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL1ZlY3Rvci5zdmcnXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb25cIlxyXG4gICAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAqbmdJZj1cImFjdGl2ZVRvcEJ1dHRvbiA9PT0gJ2FjdGlvbnMnXCJcclxuICAgICAgICAgIGNsYXNzPVwiYWN0aW9ucy1kcm9wZG93biBtdC0xXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tbWVudSBzaG93XCI+XHJcbiAgICAgICAgICAgIDxhIGNsYXNzPVwiZHJvcGRvd24taXRlbVwiIGhyZWY9XCIjXCI+QWN0aW9uPC9hPlxyXG4gICAgICAgICAgICA8YSBjbGFzcz1cImRyb3Bkb3duLWl0ZW1cIiBocmVmPVwiI1wiPkFub3RoZXIgYWN0aW9uPC9hPlxyXG4gICAgICAgICAgICA8YSBjbGFzcz1cImRyb3Bkb3duLWl0ZW1cIiBocmVmPVwiI1wiPlNvbWV0aGluZyBlbHNlIGhlcmU8L2E+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1kaXZpZGVyXCI+PC9kaXY+XHJcbiAgICAgICAgICAgIDxhIGNsYXNzPVwiZHJvcGRvd24taXRlbVwiIGhyZWY9XCIjXCI+U2VwYXJhdGVkIGxpbms8L2E+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj4gLS0+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxkaXZcclxuICAgICpuZ0lmPVwic2hvd0ZpbHRlcnMgJiYgIXNob3dGaWx0ZXJSb3dcIlxyXG4gICAgY2xhc3M9XCJ0b3AtZmlsdGVyLXJvdyBib3JkZXItdG9wIHB5LTIgZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cInRvcEZpbHRlclJvd0hlaWdodFwiXHJcbiAgPlxyXG4gICAgPCEtLSBMRUZUIFNJREUgKEZpbHRlciB0YWdzICsgRmlsdGVyIGJ1dHRvbikgLS0+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGdhcC0yIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICA8bmctY29udGFpbmVyPlxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgICpuZ0Zvcj1cImxldCBjb2wgb2YgYWN0aXZlRmlsdGVyZWRDb2x1bW5zOyB0cmFja0J5OiB0cmFja0J5RmllbGRcIlxyXG4gICAgICAgICAgY2xhc3M9XCJmaWx0ZXItdGFnc1wiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiXHJcbiAgICAgICAgICAgICAgaXNBY3RpdmVGaWx0ZXJPcGVuID0gdHJ1ZTtcclxuICAgICAgICAgICAgICBhY3RpdmVUb3BCdXR0b24gPSAnZmlsdGVyLWNvbHVtbnMnO1xyXG4gICAgICAgICAgICAgIG9wZW5GaWx0ZXIoY29sKVxyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBtdXRlZC10ZXh0IGFkZC1maWx0ZXItYnV0dG9uIGFjdGl2ZS1maWx0ZXJzXCJcclxuICAgICAgICAgICAgc3R5bGU9XCJ3aGl0ZS1zcGFjZTogbm93cmFwXCJcclxuICAgICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJcclxuICAgICAgICAgICAgICBjb2w/LmZpZWxkID09IHNlbGVjdGVkQ29sdW1uRm9yRmlsdGVyPy5maWVsZCAmJlxyXG4gICAgICAgICAgICAgIGlzQWN0aXZlRmlsdGVyT3BlbiAmJlxyXG4gICAgICAgICAgICAgIGFjdGl2ZVRvcEJ1dHRvbiA9PSAnZmlsdGVyLWNvbHVtbnMnXHJcbiAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaGVhZGVyLXRhZyBtdC0wIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJjb2w/LnBpbm5lZFwiXHJcbiAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cInNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL3Bpbi5zdmcnXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIG1lLTJcIlxyXG4gICAgICAgICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgICAgICAge3sgY29sLmhlYWRlciB9fVxyXG4gICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiXHJcbiAgICAgICAgICAgICAgICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgcmVtb3ZlQ29sdW1uRmlsdGVyRnJvbUNvbHVtbihjb2wpXHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvY3Jvc3MtcHJpbWFyeS5zdmcnXHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gY3Jvc3Mtc2Vjb25kYXJ5IG1zLTIgbWItMVwiXHJcbiAgICAgICAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICAgIGFjdGl2ZVRvcEJ1dHRvbiA9PT0gJ2ZpbHRlci1jb2x1bW5zJyAmJlxyXG4gICAgICAgICAgICAgIGNvbD8uZmllbGQgPT0gc2VsZWN0ZWRDb2x1bW5Gb3JGaWx0ZXI/LmZpZWxkICYmXHJcbiAgICAgICAgICAgICAgaXNBY3RpdmVGaWx0ZXJPcGVuXHJcbiAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImZpbHRlckNvbHVtbnM7IGNvbnRleHQ6IHsgY29sdW1uOiBjb2wgfVwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJhY3Rpb25zLWRyb3Bkb3duIG10LTFcIlxyXG4gICAgICAgICAgICA+PC9kaXY+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICA8IS0tIEZpbHRlciBCdXR0b24gLS0+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJhZGQtZmlsdGVyLWJ1dHRvbi1tZW51XCI+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUFjdGlvbnMoJ2ZpbHRlci1jb2x1bW5zJyk7IGlzQWN0aXZlRmlsdGVyT3BlbiA9IGZhbHNlXCJcclxuICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIG11dGVkLXRleHQgYWRkLWZpbHRlci1idXR0b24gYnV0dG9uLWZpbHRlclwiXHJcbiAgICAgICAgICBzdHlsZT1cIndpZHRoOiA3MHB4XCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICBbaW5saW5lU1ZHXT1cInNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL3BsdXMuc3ZnJ1wiXHJcbiAgICAgICAgICAgIGNsYXNzPVwibWUtMiBkYXRhLWdyaWQtc3ZnLWljb25cIlxyXG4gICAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICAgIEZpbHRlclxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAqbmdJZj1cImFjdGl2ZVRvcEJ1dHRvbiA9PT0gJ2ZpbHRlci1jb2x1bW5zJyAmJiAhaXNBY3RpdmVGaWx0ZXJPcGVuXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiZmlsdGVyQ29sdW1uc1wiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiYWN0aW9ucy1kcm9wZG93biBtdC0xXCJcclxuICAgICAgICAgID48L2Rpdj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8IS0tIFJJR0hUIFNJREUgKFVwZGF0ZSArIFJlc2V0KSAtLT5cclxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZ2FwLTMgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgIDxkaXZcclxuICAgICAgICAoY2xpY2spPVwic2F2ZVByZXNldCgpXCJcclxuICAgICAgICBjbGFzcz1cInRleHQtcHJpbWFyeSBjdXJzb3ItcG9pbnRlciBhbGwtZmlsdGVycy1yZXNldC1idXR0b25cIlxyXG4gICAgICAgICpuZ0lmPVwiIWNoZWNrRmlsdGVyQ2hhbmdlc0VmZmVjdCgpXCJcclxuICAgICAgPlxyXG4gICAgICAgIFVwZGF0ZSBWaWV3XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdlxyXG4gICAgICAgIGNsYXNzPVwidGV4dC1wcmltYXJ5IGN1cnNvci1wb2ludGVyIGFsbC1maWx0ZXJzLXJlc2V0LWJ1dHRvblwiXHJcbiAgICAgICAgKm5nSWY9XCIhdGFibGVGaWx0ZXJWaWV3SWQgJiYgYWN0aXZlRmlsdGVyZWRDb2x1bW5zPy5sZW5ndGhcIlxyXG4gICAgICAgIChjbGljayk9XCJjbGVhckFsbEZpbHRlcnMoKVwiXHJcbiAgICAgID5cclxuICAgICAgICBSZXNldFxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG5cclxuICA8ZGl2XHJcbiAgICBbc3R5bGUuaGVpZ2h0XT1cIlxyXG4gICAgICBzaG93RmlsdGVycyA/ICdjYWxjKDEwMCUgLSAnICsgdG9wRmlsdGVyUm93SGVpZ2h0ICsgJ3B4KScgOiAnMTAwJSdcclxuICAgIFwiXHJcbiAgICBjZGtEcm9wTGlzdEdyb3VwXHJcbiAgICBjbGFzcz1cImRhdGEtZ3JpZC10YWJsZS13cmFwcGVyIG92ZXJmbG93LWhpZGRlblwiXHJcbiAgICAjZGF0YUdyaWRDb250YWluZXJcclxuICAgIFtzdHlsZS5mb250RmFtaWx5XT1cImZvbnRGYWltbHlcIlxyXG4gICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJib2R5QmFja2dyb3VuZENvbG9yXCJcclxuICAgIGlkPVwiZGF0YS1ncmlkLW1haW4tY29udGFpbmVyXCJcclxuICA+XHJcbiAgICA8ZGl2XHJcbiAgICAgICpuZ0lmPVwic2hvd1Jvd3NHcm91cGluZ1wiXHJcbiAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwiaGVhZGVyUm93SGVpZ2h0XCJcclxuICAgICAgW2Nka0Ryb3BMaXN0RGF0YV09XCJjb2x1bW5zXCJcclxuICAgICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJcclxuICAgICAgICB0b3BHcm91cGVkQmFkZ2VzQmFja2dyb3VuZENvbG9yIHx8IGhlYWRlckJhY2tncm91bmRDb2xvclxyXG4gICAgICBcIlxyXG4gICAgICBjZGtEcm9wTGlzdFxyXG4gICAgICAoY2RrRHJvcExpc3RFbnRlcmVkKT1cImVudGVyVG9Ub3BSb3dHcm91cGluZygkZXZlbnQpXCJcclxuICAgICAgKGNka0Ryb3BMaXN0RXhpdGVkKT1cImV4aXRlZEZyb21UaGVUb3BSb3coJGV2ZW50KVwiXHJcbiAgICAgIChjZGtEcm9wTGlzdERyb3BwZWQpPVwib25Ecm9wVG9wR3JvdXAoJGV2ZW50KVwiXHJcbiAgICAgIFtjZGtEcm9wTGlzdEVudGVyUHJlZGljYXRlXT1cImNhbkVudGVyVG9Sb3dzR3JvdXBpbmdcIlxyXG4gICAgICBpZD1cInJvd3MtZ3JvdXBpbmctdG9wLWNvbnRhaW5lclwiXHJcbiAgICAgIGNsYXNzPVwiYm9yZGVyLWJlbG93IGQtZmxleCBweC00IGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICA+XHJcbiAgICAgIDxkaXZcclxuICAgICAgICBjbGFzcz1cImQtZmxleCBnYXAtMiBhbGlnbi1pdGVtcy1jZW50ZXJcIlxyXG4gICAgICAgIFtzdHlsZS5jb2xvcl09XCJoZWFkZXJUZXh0Q29sb3JcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPHNwYW5cclxuICAgICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvanVzdGlmeS5zdmcnXCJcclxuICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiIWRyYWdnaW5nSW5Hcm91cEFyZWEgJiYgIWdyb3VwZWRDb2x1bW5zPy5sZW5ndGhcIj5cclxuICAgICAgICAgIERyYWcgaGVyZSB0byBzZXQgcm93IGdyb3Vwc1xyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgIGNka0Ryb3BMaXN0T3JpZW50YXRpb249XCJob3Jpem9udGFsXCJcclxuICAgICAgICAgIGNka0Ryb3BMaXN0XHJcbiAgICAgICAgICAoY2RrRHJvcExpc3REcm9wcGVkKT1cIm9uR3JvdXBSZW9yZGVyKCRldmVudClcIlxyXG4gICAgICAgICAgY2xhc3M9XCJkLWZsZXhcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2RrRHJhZ1xyXG4gICAgICAgICAgICBbY2RrRHJhZ0xvY2tBeGlzXT1cIid4J1wiXHJcbiAgICAgICAgICAgICpuZ0Zvcj1cIlxyXG4gICAgICAgICAgICAgIGxldCBjaGlsZCBvZiBncm91cGVkQ29sdW1ucztcclxuICAgICAgICAgICAgICBsZXQgaSA9IGluZGV4O1xyXG4gICAgICAgICAgICAgIHRyYWNrQnk6IHRyYWNrQnlGaWVsZFxyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcclxuICAgICAgICAgICAgICAgIHRvcEdyb3VwaW5nUm93UGxhY2Vob2xkZXI7XHJcbiAgICAgICAgICAgICAgICBjb250ZXh0OiB7XHJcbiAgICAgICAgICAgICAgICAgICRpbXBsaWNpdDogY2hpbGQsXHJcbiAgICAgICAgICAgICAgICAgIHNob3dDaGV2cm9uOlxyXG4gICAgICAgICAgICAgICAgICAgIGdyb3VwZWRDb2x1bW5zLmxlbmd0aCA+IDEgJiYgaSAhPSBncm91cGVkQ29sdW1ucy5sZW5ndGggLSAxXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgY2RrRHJhZ1ByZXZpZXdcclxuICAgICAgICAgICAgICA+PGRpdiBjbGFzcz1cInAtMiBib3JkZXIgZC1mbGV4IGdhcC0yXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWRyYWdnaW5nSW5Hcm91cEFyZWFcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9hcnJvd3MtbW92ZS5zdmcnXHJcbiAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2Pnt7IGNoaWxkLmhlYWRlciB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2XHJcbiAgICAgIGNsYXNzPVwiZC1mbGV4IG92ZXJmbG93LWhpZGRlblwiXHJcbiAgICAgIFtzdHlsZS5oZWlnaHRdPVwiXHJcbiAgICAgICAgJ2NhbGMoMTAwJSAtICcgK1xyXG4gICAgICAgIChzaG93Um93c0dyb3VwaW5nXHJcbiAgICAgICAgICA/IGhlYWRlclJvd0hlaWdodCArIGZvb3RlclJvd0hlaWdodFxyXG4gICAgICAgICAgOiBmb290ZXJSb3dIZWlnaHQpICtcclxuICAgICAgICAncHgpJ1xyXG4gICAgICBcIlxyXG4gICAgPlxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgY2xhc3M9XCJoLTEwMFwiXHJcbiAgICAgICAgW3N0eWxlLndpZHRoXT1cIlxyXG4gICAgICAgICAgIXNob3dTaWRlTWVudVxyXG4gICAgICAgICAgICA/ICcxMDAlJ1xyXG4gICAgICAgICAgICA6IHNpZGVNZW51VmlzaWJsZVxyXG4gICAgICAgICAgICA/ICdjYWxjKDEwMCUgLSAyODBweCknXHJcbiAgICAgICAgICAgIDogJ2NhbGMoMTAwJSAtIDMwcHgpJ1xyXG4gICAgICAgIFwiXHJcbiAgICAgID5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaC0xMDAgdHJhbnNpdGlvbiBwb3NpdGlvbi1yZWxhdGl2ZSB3LTEwMFwiPlxyXG4gICAgICAgICAgPCEtLSAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIC0tPlxyXG4gICAgICAgICAgPCEtLSAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIC0tPlxyXG4gICAgICAgICAgPCEtLSBEYXRhIEdyaWQgSGVhZGVyIHN0YXJ0cyBoZXJlIC0tPlxyXG4gICAgICAgICAgPCEtLSAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIC0tPlxyXG4gICAgICAgICAgPCEtLSAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIC0tPlxyXG5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtaGVhZGVyLXdyYXBwZXIgdy0xMDBcIlxyXG4gICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwiaGVhZGVyVGV4dENvbG9yXCJcclxuICAgICAgICAgICAgW3N0eWxlLmZvbnRTaXplLnB4XT1cImhlYWRlclRleHRGb250c1NpemVcIlxyXG4gICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cImhlYWRlckJhY2tncm91bmRDb2xvclwiXHJcbiAgICAgICAgICAgIFtjbGFzcy5ib3JkZXItYmVsb3ddPVwiIWhhc0FueVZpc2libGVDb2x1bW5cIlxyXG4gICAgICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cIlxyXG4gICAgICAgICAgICAgIHNob3dDb2x1bW5zR3JvdXBpbmcgJiYgc2hvd0ZpbHRlclJvd1xyXG4gICAgICAgICAgICAgICAgPyBoZWFkZXJSb3dIZWlnaHQgKiAzXHJcbiAgICAgICAgICAgICAgICA6IHNob3dDb2x1bW5zR3JvdXBpbmcgfHwgc2hvd0ZpbHRlclJvd1xyXG4gICAgICAgICAgICAgICAgPyBoZWFkZXJSb3dIZWlnaHQgKiAyXHJcbiAgICAgICAgICAgICAgICA6IGhlYWRlclJvd0hlaWdodFxyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8IS0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAtLT5cclxuICAgICAgICAgICAgPCEtLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLS0+XHJcbiAgICAgICAgICAgIDwhLS0gRGF0YSBHcmlkIExlZnQgUGlubmVkIEhlYWRlciBzdGFydHMgaGVyZSAtLT5cclxuICAgICAgICAgICAgPCEtLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLS0+XHJcbiAgICAgICAgICAgIDwhLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC0tPlxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtaGVhZGVyIGxlZnQtcGlubmVkXCJcclxuICAgICAgICAgICAgICAjbGVmdFBpbm5lZEhlYWRlclxyXG4gICAgICAgICAgICAgIFtjbGFzcy5ib3JkZXItcmlnaHRdPVwiaGFzTGVmdFBpbm5lZENvbHVtbnNcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJzaG93U2VyaWFsTnVtYmVyXCJcclxuICAgICAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwiY2hlY2tib3hlc0JhY2tncm91bmRDb2xvclwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInNlbGVjdC1hbGwtY2hlY2tib3gtY2VsbCBib3JkZXItYmVsb3dcIlxyXG4gICAgICAgICAgICAgICAgW3N0eWxlLndpZHRoLnB4XT1cIjU1XCJcclxuICAgICAgICAgICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwiXHJcbiAgICAgICAgICAgICAgICAgIHNob3dDb2x1bW5zR3JvdXBpbmcgJiYgc2hvd0ZpbHRlclJvd1xyXG4gICAgICAgICAgICAgICAgICAgID8gaGVhZGVyUm93SGVpZ2h0ICogM1xyXG4gICAgICAgICAgICAgICAgICAgIDogc2hvd0NvbHVtbnNHcm91cGluZyB8fCBzaG93RmlsdGVyUm93XHJcbiAgICAgICAgICAgICAgICAgICAgPyBoZWFkZXJSb3dIZWlnaHQgKiAyXHJcbiAgICAgICAgICAgICAgICAgICAgOiBoZWFkZXJSb3dIZWlnaHRcclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgUy5Ob1xyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgKm5nSWY9XCJzaG93Q2hlY2tib3hlc1wiXHJcbiAgICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cImNoZWNrYm94ZXNCYWNrZ3JvdW5kQ29sb3JcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJzZWxlY3QtYWxsLWNoZWNrYm94LWNlbGwgYm9yZGVyLWJlbG93XCJcclxuICAgICAgICAgICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwiXHJcbiAgICAgICAgICAgICAgICAgIHNob3dDb2x1bW5zR3JvdXBpbmcgJiYgc2hvd0ZpbHRlclJvd1xyXG4gICAgICAgICAgICAgICAgICAgID8gaGVhZGVyUm93SGVpZ2h0ICogM1xyXG4gICAgICAgICAgICAgICAgICAgIDogc2hvd0NvbHVtbnNHcm91cGluZyB8fCBzaG93RmlsdGVyUm93XHJcbiAgICAgICAgICAgICAgICAgICAgPyBoZWFkZXJSb3dIZWlnaHQgKiAyXHJcbiAgICAgICAgICAgICAgICAgICAgOiBoZWFkZXJSb3dIZWlnaHRcclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiaGFzQW55VmlzaWJsZUNvbHVtblwiXHJcbiAgICAgICAgICAgICAgICAgIHN0eWxlPVwid2lkdGg6IDE2cHg7IGhlaWdodDogMTZweFwiXHJcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgICAgICAgICAgIFtpbmRldGVybWluYXRlXT1cImlzSW5kZXRlcm1pbmF0ZVN0YXRlKGRhdGFTZXQpXCJcclxuICAgICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiaXNBbGxTZWxlY3RlZChkYXRhU2V0KVwiXHJcbiAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwidG9nZ2xlU2VsZWN0QWxsKGRhdGFTZXQpXCJcclxuICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJoZWFkZXJCYWNrZ3JvdW5kQ29sb3JcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXhcIlxyXG4gICAgICAgICAgICAgICAgY2RrRHJvcExpc3RcclxuICAgICAgICAgICAgICAgIGlkPVwibGVmdC1waW5uZWQtaGVhZGVyXCJcclxuICAgICAgICAgICAgICAgIGNka0Ryb3BMaXN0T3JpZW50YXRpb249XCJob3Jpem9udGFsXCJcclxuICAgICAgICAgICAgICAgIFtjZGtEcm9wTGlzdERhdGFdPVwibGVmdFBpbm5lZENvbHVtbnNcIlxyXG4gICAgICAgICAgICAgICAgKGNka0Ryb3BMaXN0RW50ZXJlZCk9XCJvbkRyb3BMaXN0RW50ZXIoJGV2ZW50LCAnbGVmdCcpXCJcclxuICAgICAgICAgICAgICAgIChjZGtEcm9wTGlzdFNvcnRlZCk9XCJcclxuICAgICAgICAgICAgICAgICAgb25Tb3J0R3JvdXAoJGV2ZW50LCAncHJldmlld0xlZnRQaW5uZWRDb2x1bW5zJylcclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAoY2RrRHJvcExpc3REcm9wcGVkKT1cIm9uRHJvcEdyb3VwKClcIlxyXG4gICAgICAgICAgICAgICAgc3R5bGU9XCJtaW4td2lkdGg6IDFweFwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImRyYWdhYmxlLWhlYWRlclwiXHJcbiAgICAgICAgICAgICAgICAgIGNka0RyYWdcclxuICAgICAgICAgICAgICAgICAgW2Nka0RyYWdEYXRhXT1cImNvbFwiXHJcbiAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cIlxyXG4gICAgICAgICAgICAgICAgICAgIGxldCBjb2wgb2YgbGVmdFBpbm5lZENvbHVtbnM7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGkgPSBpbmRleDtcclxuICAgICAgICAgICAgICAgICAgICB0cmFja0J5OiB0cmFja0J5RmllbGRcclxuICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJDZWxsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgY29udGV4dDoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAkaW1wbGljaXQ6IGNvbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXg6IGksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb246ICdwcmV2aWV3TGVmdFBpbm5lZENvbHVtbnMnXHJcbiAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgY2RrRHJhZ1ByZXZpZXdcclxuICAgICAgICAgICAgICAgICAgICA+PGRpdiBjbGFzcz1cInAtMiBib3JkZXIgZC1mbGV4IGdhcC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWRyYWdnaW5nSW5Hcm91cEFyZWFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkYXRhLWdyaWQvaWNvbnMvYXJyb3dzLW1vdmUuc3ZnJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdj57eyBjb2wuaGVhZGVyIH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBjZGtEcmFnUGxhY2Vob2xkZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFkcmFnZ2luZ0luR3JvdXBBcmVhXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyQ2VsbDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaW1wbGljaXQ6IGNvbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4OiBpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbjogJydcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICA+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJkcmFnZ2luZ0luR3JvdXBBcmVhXCJcclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGdhcC0yIG1zLTJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJvcGFjaXR5OiAwLjZcIlxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjb2w/LmNoaWxkcmVuPy5sZW5ndGg7IGVsc2Ugc2luZ2xlQ29sXCJcclxuICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGNoaWxkIG9mIGNvbC5jaGlsZHJlbjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpID0gaW5kZXg7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFja0J5OiB0cmFja0J5RmllbGRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9wR3JvdXBpbmdSb3dQbGFjZWhvbGRlcjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dDoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpbXBsaWNpdDogY2hpbGQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvd0NoZXZyb246XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2wuY2hpbGRyZW4ubGVuZ3RoID4gMSAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSAhPSBjb2wuY2hpbGRyZW4ubGVuZ3RoIC0gMVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI3NpbmdsZUNvbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3BHcm91cGluZ1Jvd1BsYWNlaG9sZGVyO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dDoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaW1wbGljaXQ6IGNvbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvd0NoZXZyb246IGNvbD8uY2hpbGRyZW4/Lmxlbmd0aCA+IDFcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPCEtLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLS0+XHJcbiAgICAgICAgICAgIDwhLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC0tPlxyXG4gICAgICAgICAgICA8IS0tIERhdGEgR3JpZCBDZW50ZXIgUGlubmVkIEhlYWRlciBzdGFydHMgaGVyZSAtLT5cclxuICAgICAgICAgICAgPCEtLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLS0+XHJcbiAgICAgICAgICAgIDwhLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC0tPlxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtaGVhZGVyIGNlbnRlci1zY3JvbGxhYmxlXCJcclxuICAgICAgICAgICAgICAjY2VudGVyUGlubmVkSGVhZGVyXHJcbiAgICAgICAgICAgICAgKHNjcm9sbCk9XCJvbkNlbnRlckJvZHlTY3JvbGwoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgaWQ9XCJjZW50ZXItcGlubmVkLWhlYWRlclwiXHJcbiAgICAgICAgICAgICAgY2RrRHJvcExpc3RcclxuICAgICAgICAgICAgICBbY2RrRHJvcExpc3RDb25uZWN0ZWRUb109XCJcclxuICAgICAgICAgICAgICAgIHNob3dSb3dzR3JvdXBpbmcgPyBbJ3Jvd3MtZ3JvdXBpbmctdG9wLWNvbnRhaW5lciddIDogW11cclxuICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgIFtjZGtEcm9wTGlzdERhdGFdPVwiY2VudGVyQ29sdW1uc1wiXHJcbiAgICAgICAgICAgICAgY2RrRHJvcExpc3RPcmllbnRhdGlvbj1cImhvcml6b250YWxcIlxyXG4gICAgICAgICAgICAgIFtjZGtEcm9wTGlzdFNvcnRpbmdEaXNhYmxlZF09XCJcclxuICAgICAgICAgICAgICAgIGlzRGlzYWJsZUNvbHVtbkdyb3VwaW5nICYmIGRyYWdnaW5nSW5Hcm91cEFyZWFcclxuICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgIChjZGtEcm9wTGlzdEVudGVyZWQpPVwib25Ecm9wTGlzdEVudGVyKCRldmVudCwgJ2NlbnRlcicpXCJcclxuICAgICAgICAgICAgICAoY2RrRHJvcExpc3RTb3J0ZWQpPVwib25Tb3J0R3JvdXAoJGV2ZW50LCAncHJldmlld0NlbnRlckNvbHVtbnMnKVwiXHJcbiAgICAgICAgICAgICAgKGNka0Ryb3BMaXN0RHJvcHBlZCk9XCJvbkRyb3BHcm91cCgpXCJcclxuICAgICAgICAgICAgICBbc3R5bGUubWF4V2lkdGhdPVwiXHJcbiAgICAgICAgICAgICAgICAnY2FsYygxMDAlIC0gJyArXHJcbiAgICAgICAgICAgICAgICAocmlnaHRQaW5uZWRIZWFkZXIub2Zmc2V0V2lkdGggKyBsZWZ0UGlubmVkSGVhZGVyLm9mZnNldFdpZHRoKSArXHJcbiAgICAgICAgICAgICAgICAncHgpJ1xyXG4gICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cImdyb3VwZWRDb2x1bW5zPy5sZW5ndGhcIlxyXG4gICAgICAgICAgICAgICAgc3R5bGU9XCJtaW4td2lkdGg6IDIwMHB4XCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiaC0xMDAgYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgICAgICAgICAgICNjb2x1bW5zR3JvdXBlZEJveFxyXG4gICAgICAgICAgICAgICAgaWQ9XCJncm91cEJveEhlYWRlckRpdlwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImQtZmxleCB3LTEwMCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXIgYm9yZGVyLWJlbG93XCJcclxuICAgICAgICAgICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJcclxuICAgICAgICAgICAgICAgICAgICBzaG93RmlsdGVyUm93ID8gaGVhZGVyUm93SGVpZ2h0ICogMiA6IGhlYWRlclJvd0hlaWdodFxyXG4gICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHMtM1wiPkdyb3VwPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRocmVlLWRvdHMgY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBvcGVuVGhyZWVEb3RzTWVudSgkZXZlbnQsICdncm91cCcpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpc1RocmVlRG90c0ZpbHRlck9wZW4gPSBmYWxzZVxyXG4gICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICdkYXRhLWdyaWQvaWNvbnMvdGhyZWUtZG90cy12ZXJ0aWNhbC5zdmcnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgIChtb3VzZWRvd24pPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgb25SZXNpemVHcm91cEJveCgkZXZlbnQpXHJcbiAgICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJyZXNpemUtaGFuZGxlXCJcclxuICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwibWFyZ2luLXJpZ2h0OiAtMnB4XCJcclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICdkYXRhLWdyaWQvaWNvbnMvcmVzaXplLWhhbmRsZS5zdmcnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJoZWFkZXJSb3dIZWlnaHRcIlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImJvcmRlci1iZWxvd1wiXHJcbiAgICAgICAgICAgICAgICA+PC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGN1cnNvci1wb2ludGVyIGJvcmRlci1iZWxvd1wiXHJcbiAgICAgICAgICAgICAgICBzdHlsZT1cIm1pbi13aWR0aDogMzBweDsgaGVpZ2h0OiAxMDAlXCJcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiZ3JpZFR5cGUgPT09ICdBc3NldHMnIHx8IGdyaWRUeXBlID09PSAnVGFza3MnXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZHJhZ2FibGUtaGVhZGVyXCJcclxuICAgICAgICAgICAgICAgIChjZGtEcmFnU3RhcnRlZCk9XCJcclxuICAgICAgICAgICAgICAgICAgY2hlY2tDb2x1bW5Hcm91cGluZ1N0YXR1cyhjb2wpO1xyXG4gICAgICAgICAgICAgICAgICBkcmFnU3RhcnRPbkdyb3VwKGNvbCk7XHJcbiAgICAgICAgICAgICAgICAgIG9uRHJhZ1N0YXJ0ZWQoY29sKVxyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgIChjZGtEcmFnTW92ZWQpPVwib25EcmFnTW92ZWQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAoY2RrRHJhZ0VuZGVkKT1cIm9uRHJhZ0VuZGVkKClcIlxyXG4gICAgICAgICAgICAgICAgY2RrRHJhZ1xyXG4gICAgICAgICAgICAgICAgW2Nka0RyYWdEYXRhXT1cImNvbFwiXHJcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJcclxuICAgICAgICAgICAgICAgICAgbGV0IGNvbCBvZiBjZW50ZXJDb2x1bW5zO1xyXG4gICAgICAgICAgICAgICAgICBsZXQgaSA9IGluZGV4O1xyXG4gICAgICAgICAgICAgICAgICB0cmFja0J5OiB0cmFja0J5SWRcclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxyXG4gICAgICAgICAgICAgICAgICAgIGhlYWRlckNlbGw7XHJcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dDoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgJGltcGxpY2l0OiBjb2wsXHJcbiAgICAgICAgICAgICAgICAgICAgICBpbmRleDogaSxcclxuICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb246ICdwcmV2aWV3Q2VudGVyQ29sdW1ucydcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBjZGtEcmFnUHJldmlld1xyXG4gICAgICAgICAgICAgICAgICA+PGRpdiBjbGFzcz1cInAtMiBib3JkZXIgZC1mbGV4IGdhcC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWlzT3V0c2lkZUNvbnRhaW5lclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRyYWdnaW5nSW5Hcm91cEFyZWFcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gJ2RhdGEtZ3JpZC9pY29ucy9qdXN0aWZ5LnN2ZydcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJ2RhdGEtZ3JpZC9pY29ucy9hcnJvd3MtbW92ZS5zdmcnKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJpc091dHNpZGVDb250YWluZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2V5ZS1jcm9zcy5zdmcnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdj57eyBjb2wuaGVhZGVyIH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBjZGtEcmFnUGxhY2Vob2xkZXI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhZHJhZ2dpbmdJbkdyb3VwQXJlYVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlckNlbGw7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAkaW1wbGljaXQ6IGNvbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleDogaSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uOiAnY2VudGVyQ29sdW1ucydcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICA+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJkcmFnZ2luZ0luR3JvdXBBcmVhICYmICFpc091dHNpZGVDb250YWluZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGdhcC0yIG1zLTJcIlxyXG4gICAgICAgICAgICAgICAgICAgIHN0eWxlPVwib3BhY2l0eTogMC42XCJcclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2w/LmNoaWxkcmVuPy5sZW5ndGg7IGVsc2Ugc2luZ2xlQ29sXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjaGlsZCBvZiBjb2wuY2hpbGRyZW47XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGkgPSBpbmRleDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFja0J5OiB0cmFja0J5SWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNoaWxkPy5pc19ncm91cGFibGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3BHcm91cGluZ1Jvd1BsYWNlaG9sZGVyO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGltcGxpY2l0OiBjaGlsZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93Q2hldnJvbjpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbC5jaGlsZHJlbi5sZW5ndGggPiAxICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpICE9IGNvbC5jaGlsZHJlbi5sZW5ndGggLSAxXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI3NpbmdsZUNvbD5cclxuICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2w/LmlzX2dyb3VwYWJsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvcEdyb3VwaW5nUm93UGxhY2Vob2xkZXI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpbXBsaWNpdDogY29sLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93Q2hldnJvbjogY29sPy5jaGlsZHJlbj8ubGVuZ3RoID4gMVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8IS0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAtLT5cclxuICAgICAgICAgICAgPCEtLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLS0+XHJcbiAgICAgICAgICAgIDwhLS0gRGF0YSBHcmlkIFJpZ2h0IFBpbm5lZCBIZWFkZXIgc3RhcnRzIGhlcmUgLS0+XHJcbiAgICAgICAgICAgIDwhLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC0tPlxyXG4gICAgICAgICAgICA8IS0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAtLT5cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwiaGVhZGVyQmFja2dyb3VuZENvbG9yXCJcclxuICAgICAgICAgICAgICBjZGtEcm9wTGlzdFxyXG4gICAgICAgICAgICAgIGlkPVwicmlnaHQtcGlubmVkLWhlYWRlclwiXHJcbiAgICAgICAgICAgICAgW2Nka0Ryb3BMaXN0Q29ubmVjdGVkVG9dPVwiXHJcbiAgICAgICAgICAgICAgICBzaG93Um93c0dyb3VwaW5nID8gWydyb3dzLWdyb3VwaW5nLXRvcC1jb250YWluZXInXSA6IFtdXHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICBjZGtEcm9wTGlzdE9yaWVudGF0aW9uPVwiaG9yaXpvbnRhbFwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtaGVhZGVyIHJpZ2h0LXBpbm5lZFwiXHJcbiAgICAgICAgICAgICAgKGNka0Ryb3BMaXN0U29ydGVkKT1cIlxyXG4gICAgICAgICAgICAgICAgb25Tb3J0R3JvdXAoJGV2ZW50LCAncHJldmlld1JpZ2h0UGlubmVkQ29sdW1ucycpXHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAoY2RrRHJvcExpc3RFbnRlcmVkKT1cIm9uRHJvcExpc3RFbnRlcigkZXZlbnQsICdyaWdodCcpXCJcclxuICAgICAgICAgICAgICAoY2RrRHJvcExpc3REcm9wcGVkKT1cIm9uRHJvcEdyb3VwKClcIlxyXG4gICAgICAgICAgICAgICNyaWdodFBpbm5lZEhlYWRlclxyXG4gICAgICAgICAgICAgIGNsYXNzPVwicmlnaHQtcGlubmVkLWhlYWRlciBkLWZsZXhcIlxyXG4gICAgICAgICAgICAgIHN0eWxlPVwibWluLXdpZHRoOiAwLjJweFwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImRyYWdhYmxlLWhlYWRlclwiXHJcbiAgICAgICAgICAgICAgICBjZGtEcmFnXHJcbiAgICAgICAgICAgICAgICBbY2RrRHJhZ0RhdGFdPVwiY29sXCJcclxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cIlxyXG4gICAgICAgICAgICAgICAgICBsZXQgY29sIG9mIHJpZ2h0UGlubmVkQ29sdW1ucztcclxuICAgICAgICAgICAgICAgICAgbGV0IGkgPSBpbmRleDtcclxuICAgICAgICAgICAgICAgICAgdHJhY2tCeTogdHJhY2tCeUlkXHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcclxuICAgICAgICAgICAgICAgICAgICBoZWFkZXJDZWxsO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICRpbXBsaWNpdDogY29sLFxyXG4gICAgICAgICAgICAgICAgICAgICAgcGlubmVkUmlnaHQ6IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICBpbmRleDogaSxcclxuICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb246ICdyaWdodCdcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgY2RrRHJhZ1ByZXZpZXdcclxuICAgICAgICAgICAgICAgICAgPjxkaXYgY2xhc3M9XCJwLTIgYm9yZGVyIGQtZmxleCBnYXAtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiFkcmFnZ2luZ0luR3JvdXBBcmVhXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAnZGF0YS1ncmlkL2ljb25zL2Fycm93cy1tb3ZlLnN2ZydcclxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdj57eyBjb2wuaGVhZGVyIH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBjZGtEcmFnUGxhY2Vob2xkZXI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhZHJhZ2dpbmdJbkdyb3VwQXJlYVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlckNlbGw7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAkaW1wbGljaXQ6IGNvbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleDogaSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uOiAncmlnaHQnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZHJhZ2dpbmdJbkdyb3VwQXJlYVwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggZ2FwLTIgbXMtMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJvcGFjaXR5OiAwLjZcIlxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbD8uY2hpbGRyZW4/Lmxlbmd0aDsgZWxzZSBzaW5nbGVDb2xcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGNoaWxkIG9mIGNvbC5jaGlsZHJlbjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgaSA9IGluZGV4O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNrQnk6IHRyYWNrQnlJZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvcEdyb3VwaW5nUm93UGxhY2Vob2xkZXI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpbXBsaWNpdDogY2hpbGQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dDaGV2cm9uOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbC5jaGlsZHJlbi5sZW5ndGggPiAxICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSAhPSBjb2wuY2hpbGRyZW4ubGVuZ3RoIC0gMVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI3NpbmdsZUNvbD5cclxuICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB0b3BHcm91cGluZ1Jvd1BsYWNlaG9sZGVyO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpbXBsaWNpdDogY29sLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvd0NoZXZyb246IGNvbD8uY2hpbGRyZW4/Lmxlbmd0aCA+IDFcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDwhLS0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgLS0+XHJcbiAgICAgICAgICA8IS0tIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIC0tPlxyXG4gICAgICAgICAgPCEtLSBEYXRhIEdyaWQgQm9keSBzdGFydHMgaGVyZSAtLT5cclxuICAgICAgICAgIDwhLS0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgLS0+XHJcbiAgICAgICAgICA8IS0tIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIC0tPlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzcz1cImgtMTAwIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICAgICAgICAgICpuZ0lmPVwiIWRhdGFTZXQ/Lmxlbmd0aCAmJiAhbG9hZGluZyAmJiAhZGF0YVNldExvYWRpbmdcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8IS0tIDxkaXZcclxuICAgICAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9yZWNvcmQtbm90LWZvdW5kLnN2ZydcclxuICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgICAgID48L2Rpdj4gLS0+XHJcbiAgICAgICAgICAgIDxkaXY+Tm8gUmVjb3JkIEZvdW5kPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwicG9zaXRpb24tYWJzb2x1dGUgdy0xMDAgaC0xMDAgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIGxvYWRpbmctb3ZlcmxheVwiXHJcbiAgICAgICAgICAgICpuZ0lmPVwibG9hZGluZyB8fCBkYXRhU2V0TG9hZGluZ1wiXHJcbiAgICAgICAgICAgIHN0eWxlPVwiXHJcbiAgICAgICAgICAgICAgei1pbmRleDogOTk5O1xyXG4gICAgICAgICAgICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigxcHgpO1xyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cImJvZHlCYWNrZ3JvdW5kQ29sb3JcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Bpbm5lci1ib3JkZXIgdGV4dC1wcmltYXJ5XCIgcm9sZT1cInN0YXR1c1wiPlxyXG4gICAgICAgICAgICAgIDwhLS0gPHNwYW4gY2xhc3M9XCJsb2FkZXJcIj48L3NwYW4+IC0tPlxyXG4gICAgICAgICAgICAgIDwhLS0gPHNwYW4gY2xhc3M9XCJ2aXN1YWxseS1oaWRkZW5cIj5Mb2FkaW5nLi4uPC9zcGFuPiAtLT5cclxuICAgICAgICAgICAgICA8IS0tIDwvZGl2PiAtLT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLWJvZHktd3JhcHBlciBwb3NpdGlvbi1yZWxhdGl2ZSBkLWZsZXhcIlxyXG4gICAgICAgICAgICBbc3R5bGUuaGVpZ2h0XT1cImJvZHlXcmFwcGVySGVpZ2h0XCJcclxuICAgICAgICAgICAgc3R5bGU9XCJvdmVyZmxvdy15OiBhdXRvOyBvdmVyZmxvdy14OiBoaWRkZW5cIlxyXG4gICAgICAgICAgICAjbWFpblNjcm9sbFxyXG4gICAgICAgICAgICAoc2Nyb2xsKT1cIm9uTWFpblNjcm9sbCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgW3N0eWxlLnNjcm9sbGJhcldpZHRoXT1cInZlcnRpY2FsU2Nyb2xsYmFyV2lkdGhcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8IS0tIExFRlQgUElOTkVEIC0tPlxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJcclxuICAgICAgICAgICAgICAgICFncm91cGVkQ29sdW1ucy5sZW5ndGggPyBvcmlnaW5hbERhdGFTZXQubGVuZ3RoICogcm93SGVpZ2h0IDogMFxyXG4gICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgID48L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBbY2xhc3MuaC0xMDBdPVwib3JpZ2luYWxEYXRhU2V0Lmxlbmd0aCA8IDhcIj5cclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1ib2R5IGxlZnQtcGlubmVkLWJvZHkgdy0xMDBcIlxyXG4gICAgICAgICAgICAgICAgc3R5bGU9XCJvdmVyZmxvdy15OiBoaWRkZW5cIlxyXG4gICAgICAgICAgICAgICAgW2NsYXNzLmJvcmRlci1yaWdodF09XCJoYXNMZWZ0UGlubmVkQ29sdW1uc1wiXHJcbiAgICAgICAgICAgICAgICBbY2xhc3MudHJhbnNwYXJlbnQtYm9yZGVyLXJpZ2h0XT1cIiFoYXNMZWZ0UGlubmVkQ29sdW1uc1wiXHJcbiAgICAgICAgICAgICAgICBbc3R5bGUudHJhbnNmb3JtXT1cIid0cmFuc2xhdGVZKCcgKyB0cmFuc2xhdGVZICsgJ3B4KSdcIlxyXG4gICAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJsZWZ0UGlubmVkQmFja2dyb3VuZENvbG9yXCJcclxuICAgICAgICAgICAgICAgIFtjbGFzcy5oLTEwMF09XCJvcmlnaW5hbERhdGFTZXQubGVuZ3RoIDwgOFwiXHJcbiAgICAgICAgICAgICAgICpuZ0lmPVwiIWxvYWRpbmcgJiYgIWRhdGFTZXRMb2FkaW5nXCJcclxuICAgICAgICAgICAgICAgIFtAcm93RHluYW1pY109XCJyb3dBbmltYXRpb25cIlxyXG5cclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgKm5nRm9yPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHJvdyBvZiB2aXNpYmxlUm93cztcclxuICAgICAgICAgICAgICAgICAgICBsZXQgaSA9IGluZGV4O1xyXG4gICAgICAgICAgICAgICAgICAgIHRyYWNrQnk6IHRyYWNrQnlJZFxyXG4gICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcclxuICAgICAgICAgICAgICAgICAgICAgIHJvd0NlbGw7XHJcbiAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRpbXBsaWNpdDogcm93LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5zOiBwcmV2aWV3TGVmdFBpbm5lZENvbHVtbnMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzRXZlbjogKHN0YXJ0SW5kZXggKyBpKSAlIDIgPT09IDAsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzT2RkOiAoc3RhcnRJbmRleCArIGkpICUgMiAhPT0gMCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXNMZWZ0OiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uOiAnbGVmdCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzVG90YWxSb3c6IGZhbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hvd1RvdGFsQW1vdW50Um93ICYmIG9yaWdpbmFsRGF0YVNldD8ubGVuZ3RoXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgcm93Q2VsbDtcclxuICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgJGltcGxpY2l0OiB7IF9fdmlydHVhbEluZGV4OiAwIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbnM6IHByZXZpZXdMZWZ0UGlubmVkQ29sdW1ucyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXNFdmVuOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXNPZGQ6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uOiAnbGVmdCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzVG90YWxSb3c6IHRydWVcclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8IS0tIENFTlRFUiAtLT5cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiaC0xMDBcIlxyXG4gICAgICAgICAgICAgIFtzdHlsZS53aWR0aC5weF09XCJjZW50ZXJQaW5uZWRIZWFkZXIuY2xpZW50V2lkdGhcIlxyXG4gICAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwiYm9keUJhY2tncm91bmRDb2xvclwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1ib2R5IGNlbnRlci1zY3JvbGxhYmxlXCJcclxuICAgICAgICAgICAgICAgIFtjbGFzcy5oLTEwMF09XCJvcmlnaW5hbERhdGFTZXQubGVuZ3RoIDwgOFwiXHJcbiAgICAgICAgICAgICAgICBzdHlsZT1cIm92ZXJmbG93LXk6IGhpZGRlbjsgb3ZlcmZsb3cteDogYXV0b1wiXHJcbiAgICAgICAgICAgICAgICBbc3R5bGUudHJhbnNmb3JtXT1cIid0cmFuc2xhdGVZKCcgKyB0cmFuc2xhdGVZICsgJ3B4KSdcIlxyXG4gICAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJib2R5QmFja2dyb3VuZENvbG9yXCJcclxuICAgICAgICAgICAgICAgICNjZW50ZXJTY3JvbGxhYmxlQm9keVxyXG4gICAgICAgICAgICAgICAgKHNjcm9sbCk9XCJvbkNlbnRlckJvZHlTY3JvbGwoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICBbc3R5bGUuYm94U2hhZG93XT1cImxlZnRQaW5uZWRCb3hzaGFkb3dcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8ZGl2IFtAcm93RHluYW1pY109XCJyb3dBbmltYXRpb25cIiAqbmdJZj1cIiFsb2FkaW5nICYmICFkYXRhU2V0TG9hZGluZ1wiPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAqbmdGb3I9XCJcclxuICAgICAgICAgICAgICAgICAgICBsZXQgcm93IG9mIHZpc2libGVSb3dzO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBpID0gaW5kZXg7XHJcbiAgICAgICAgICAgICAgICAgICAgdHJhY2tCeTogdHJhY2tCeUlkXHJcbiAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgcm93Q2VsbDtcclxuICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgJGltcGxpY2l0OiByb3csXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbnM6IHByZXZpZXdDZW50ZXJDb2x1bW5zLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0V2ZW46IChzdGFydEluZGV4ICsgaSkgJSAyID09PSAwLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpc09kZDogKHN0YXJ0SW5kZXggKyBpKSAlIDIgIT09IDAsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb246ICdjZW50ZXInLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpc1RvdGFsUm93OiBmYWxzZVxyXG4gICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hvd1RvdGFsQW1vdW50Um93ICYmIG9yaWdpbmFsRGF0YVNldD8ubGVuZ3RoXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgcm93Q2VsbDtcclxuICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgJGltcGxpY2l0OiB7IF9fdmlydHVhbEluZGV4OiAwIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbnM6IHByZXZpZXdDZW50ZXJDb2x1bW5zLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0V2ZW46IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpc09kZDogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb246ICdjZW50ZXInLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpc1RvdGFsUm93OiB0cnVlXHJcbiAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPCEtLSBSSUdIVCBQSU5ORUQgLS0+XHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICBjbGFzcz1cInJpZ2h0LXBpbm5lZC1ib2R5LXdyYXBwZXJcIlxyXG4gICAgICAgICAgICAgICpuZ0lmPVwiaGFzUmlnaHRQaW5uZWRDb2x1bW5zXCJcclxuICAgICAgICAgICAgICBbY2xhc3MuaC0xMDBdPVwib3JpZ2luYWxEYXRhU2V0Lmxlbmd0aCA8IDhcIlxyXG4gICAgICAgICAgICAgIFtzdHlsZS5tYXhXaWR0aC5weF09XCJcclxuICAgICAgICAgICAgICAgIGlzU2Nyb2xsYmFyVmlzaWJsZVxyXG4gICAgICAgICAgICAgICAgICA/IHJpZ2h0UGlubmVkSGVhZGVyLm9mZnNldFdpZHRoIC0gMTVcclxuICAgICAgICAgICAgICAgICAgOiByaWdodFBpbm5lZEhlYWRlci5vZmZzZXRXaWR0aFxyXG4gICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJyaWdodFBpbm5lZEJhY2tncm91bmRDb2xvclwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1ib2R5IHJpZ2h0LXBpbm5lZC1ib2R5IHctMTAwIGgtMTAwXCJcclxuICAgICAgICAgICAgICAgIHN0eWxlPVwib3ZlcmZsb3cteTogaGlkZGVuXCJcclxuICAgICAgICAgICAgICAgIFtzdHlsZS50cmFuc2Zvcm1dPVwiJ3RyYW5zbGF0ZVkoJyArIHRyYW5zbGF0ZVkgKyAncHgpJ1wiXHJcbiAgICAgICAgICAgICAgICBbc3R5bGUuYm94U2hhZG93XT1cInJpZ2h0UGlubmVkQm94c2hhZG93XCJcclxuICAgICAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwicmlnaHRQaW5uZWRCYWNrZ3JvdW5kQ29sb3JcIlxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCIhbG9hZGluZyAmJiAhZGF0YVNldExvYWRpbmdcIlxyXG4gICAgICAgICAgICAgICAgW0Byb3dEeW5hbWljXT1cInJvd0FuaW1hdGlvblwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAqbmdGb3I9XCJcclxuICAgICAgICAgICAgICAgICAgICBsZXQgcm93IG9mIHZpc2libGVSb3dzO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBpID0gaW5kZXg7XHJcbiAgICAgICAgICAgICAgICAgICAgdHJhY2tCeTogdHJhY2tCeUlkXHJcbiAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgcm93Q2VsbDtcclxuICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgJGltcGxpY2l0OiByb3csXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbnM6IHByZXZpZXdSaWdodFBpbm5lZENvbHVtbnMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzRXZlbjogKHN0YXJ0SW5kZXggKyBpKSAlIDIgPT09IDAsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzT2RkOiAoc3RhcnRJbmRleCArIGkpICUgMiAhPT0gMCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbjogJ3JpZ2h0JyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXNUb3RhbFJvdzogZmFsc2VcclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93VG90YWxBbW91bnRSb3cgJiYgb3JpZ2luYWxEYXRhU2V0Py5sZW5ndGhcIj5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICByb3dDZWxsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgY29udGV4dDoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAkaW1wbGljaXQ6IHsgX192aXJ0dWFsSW5kZXg6IDAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uczogcHJldmlld1JpZ2h0UGlubmVkQ29sdW1ucyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXNFdmVuOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXNPZGQ6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uOiAncmlnaHQnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpc1RvdGFsUm93OiB0cnVlXHJcbiAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIHN0eWxlPVwidG9wOiBhdXRvOyBsZWZ0OiBhdXRvXCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwiXHJcbiAgICAgICAgICAgICAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICAgICAgICBmdWxsc2NyZWVuSW1hZ2UgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgY2RyLmRldGVjdENoYW5nZXMoKVxyXG4gICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgW3N0eWxlLndpZHRoLnB4XT1cImRhdGFHcmlkQ29udGFpbmVyLm9mZnNldFdpZHRoXCJcclxuICAgICAgICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cIlxyXG4gICAgICAgICAgICAgICAgZGF0YUdyaWRDb250YWluZXIub2Zmc2V0SGVpZ2h0IC0gKGZvb3RlclJvd0hlaWdodCArIDEwMClcclxuICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiaW1hZ2UtbW9kYWwgZnVsbC1pbWFnZS1tb2RhbFwiXHJcbiAgICAgICAgICAgICAgKm5nSWY9XCJmdWxsc2NyZWVuSW1hZ2VcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPGltZ1xyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXHJcbiAgICAgICAgICAgICAgICBbc3JjXT1cImZ1bGxzY3JlZW5JbWFnZVwiXHJcbiAgICAgICAgICAgICAgICBhbHQ9XCJGdWxsc2NyZWVuIEltYWdlXCJcclxuICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICpuZ0lmPVwic2VsZWN0ZWRSb3dzLnNpemUgPiAwICYmIHNob3dUYXNrYmFyXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cInRhc2tiYXIgdy0xMDBcIlxyXG4gICAgICAgICAgICAgIFtzdHlsZS5ib3R0b20ucHhdPVwiODVcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdGVkLXJvd3MtYWN0aW9uLWJhclwiIFtAc2xpZGVVcF0+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNlbGVjdGVkLWNvdW50XCI+XHJcbiAgICAgICAgICAgICAgICAgIHt7IHNlbGVjdGVkUm93cy5zaXplIH19IHNlbGVjdGVkIG9mXHJcbiAgICAgICAgICAgICAgICAgIHt7XHJcbiAgICAgICAgICAgICAgICAgICAgcGFnaW5hdGlvbkNvbmZpZy50b3RhbFJlc3VsdHMgfHxcclxuICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZz8ucGFnaW5hdGlvblBhcmFtcz8udG90YWxJdGVtc1xyXG4gICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICBUb3RhbFxyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFjdGlvbi1idXR0b25zIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBhY3Rpb24gb2YgdGFza2JhckFjdGlvbnM7IGxldCBpID0gaW5kZXhcIlxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImFjdGlvbj8uaGFzX3Blcm1pc3Npb25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYWN0aW9uLWJ0biB2ZXJpZmllZCBidG4ge3sgYWN0aW9uIH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uVmVyaWZ5Q2xpY2soYWN0aW9uPy5hY3Rpb25OYW1lKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID57eyBhY3Rpb24/LmFjdGlvbk5hbWUgfX08L3NwYW5cclxuICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGFza2JhckFjdGlvbnMubGVuZ3RoID4gMSAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGkgIT09IHRhc2tiYXJBY3Rpb25zLmxlbmd0aCAtIDEgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB0YXNrYmFyQWN0aW9uc1tpICsgMV0/Lmhhc19wZXJtaXNzaW9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgPnw8L3NwYW5cclxuICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cImNsZWFyU2VsZWN0aW9uU3RhdGUodGFibGVUeXBlKTtzZWxlY3RlZFJvd3MuY2xlYXIoKTtcIiBjbGFzcz1cImNsZWFyLWJ0biBtcy0yIG10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImJpIGJpLXgtY2lyY2xlXCI+PC9pPiBDbGVhciBTZWxlY3Rpb25cclxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwhLS0gVmVydGljYWwgRmFrZSBzY3JvbGwgQmFyIC0tPlxyXG4gICAgICAgICAgPCEtLSA8ZGl2XHJcbiAgICAgICAgICAgIChzY3JvbGwpPVwib25NYWluRmFrZVNjcm9sbCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJmYWtlLXNjcm9sbGJhciBmYWtlLXNjcm9sbGJhci12ZXJ0aWNhbCBkLW5vbmVcIlxyXG4gICAgICAgICAgICBbc3R5bGUuc2Nyb2xsYmFyV2lkdGhdPVwidmVydGljYWxTY3JvbGxiYXJXaWR0aFwiXHJcbiAgICAgICAgICAgIFtzdHlsZS50b3AucHhdPVwiXHJcbiAgICAgICAgICAgICAgc2hvd0NvbHVtbnNHcm91cGluZyAmJiBzaG93RmlsdGVyUm93XHJcbiAgICAgICAgICAgICAgICA/IGhlYWRlclJvd0hlaWdodCAqIDNcclxuICAgICAgICAgICAgICAgIDogc2hvd0NvbHVtbnNHcm91cGluZyB8fCBzaG93RmlsdGVyUm93XHJcbiAgICAgICAgICAgICAgICA/IGhlYWRlclJvd0hlaWdodCAqIDJcclxuICAgICAgICAgICAgICAgIDogaGVhZGVyUm93SGVpZ2h0XHJcbiAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICNmYWtlU2Nyb2xsXHJcbiAgICAgICAgICAgIFtzdHlsZS5oZWlnaHRdPVwiYm9keVdyYXBwZXJIZWlnaHRcIlxyXG4gICAgICAgICAgICBzdHlsZT1cIlxyXG4gICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87XHJcbiAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuO1xyXG4gICAgICAgICAgICAgIHdpZHRoOiAxN3B4O1xyXG4gICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgICAgICAgICByaWdodDogMDtcclxuICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBmMWYyZjM7XHJcbiAgICAgICAgICAgICAgei1pbmRleDogMTA7XHJcbiAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxkaXYgW3N0eWxlLmhlaWdodC5weF09XCJyb3dIZWlnaHQgKiBkYXRhU2V0TGVuZ3RoXCI+PC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj4gLS0+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDwhLS0gSG9yaXppbnRhbCBGYWtlIFNjcm9sbGJhcnMgLS0+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW5cIlxyXG4gICAgICAgICAgKm5nSWY9XCJoYXNTY3JvbGxcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgW3N0eWxlLnNjcm9sbGJhcldpZHRoXT1cImhvcml6aW50YWxTY3JvbGxiYXJXaWR0aFwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiZmFrZS1ob3JpemludGFsLXNjcm9sbGJhclwiXHJcbiAgICAgICAgICAgICNmYWtlU2Nyb2xsXHJcbiAgICAgICAgICAgIFtzdHlsZS53aWR0aC5weF09XCJsZWZ0UGlubmVkSGVhZGVyLm9mZnNldFdpZHRoXCJcclxuICAgICAgICAgICAgc3R5bGU9XCJvdmVyZmxvdy14OiBzY3JvbGxcIlxyXG4gICAgICAgICAgPjwvZGl2PlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBbc3R5bGUuc2Nyb2xsYmFyV2lkdGhdPVwiaG9yaXppbnRhbFNjcm9sbGJhcldpZHRoXCJcclxuICAgICAgICAgICAgKHNjcm9sbCk9XCJvbkNlbnRlckJvZHlTY3JvbGwoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiZmFrZS1ob3JpemludGFsLXNjcm9sbGJhclwiXHJcbiAgICAgICAgICAgICNob3JpemludGFsRmFrZVNjcm9sbFxyXG4gICAgICAgICAgICBbc3R5bGUud2lkdGgucHhdPVwiY2VudGVyUGlubmVkSGVhZGVyLm9mZnNldFdpZHRoXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGRpdiBbc3R5bGUud2lkdGgucHhdPVwiY2VudGVyUGlubmVkSGVhZGVyLnNjcm9sbFdpZHRoIC0gMTBcIj48L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBbc3R5bGUuc2Nyb2xsYmFyV2lkdGhdPVwiaG9yaXppbnRhbFNjcm9sbGJhcldpZHRoXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJmYWtlLWhvcml6aW50YWwtc2Nyb2xsYmFyXCJcclxuICAgICAgICAgICAgI2Zha2VTY3JvbGxcclxuICAgICAgICAgICAgW3N0eWxlLndpZHRoLnB4XT1cInJpZ2h0UGlubmVkSGVhZGVyLm9mZnNldFdpZHRoXCJcclxuICAgICAgICAgICAgc3R5bGU9XCJvdmVyZmxvdy14OiBzY3JvbGxcIlxyXG4gICAgICAgICAgPjwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDwhLS0gU2lkZSBNZW51IEltcGxlbWVudGVkIEhlcmUgLS0+XHJcbiAgICAgIDxkaXZcclxuICAgICAgICAqbmdJZj1cInNob3dTaWRlTWVudVwiXHJcbiAgICAgICAgW3N0eWxlLndpZHRoLnB4XT1cInNpZGVNZW51VmlzaWJsZSA/IDI4MCA6IDMwXCJcclxuICAgICAgICBjbGFzcz1cInJpZ2h0LW1lbnUgaC0xMDBcIlxyXG4gICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwic2lkZW1lbnVCYWNrZ3JvdW5kQ29sb3JcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImgtMTAwIGQtZmxleCBmbGV4LXJvdy1yZXZlcnNlXCI+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIHN0eWxlPVwid2lkdGg6IDMwcHhcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBhbGlnbi1pdGVtcy1jZW50ZXIgY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAgICAgICBbY2xhc3MuYm9yZGVyLXN0YXJ0XT1cInNpZGVNZW51VmlzaWJsZVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlU2lkZU1lbnUoJ2NvbHMnKVwiXHJcbiAgICAgICAgICAgICAgW2NsYXNzLmJnLWZmZl09XCJcclxuICAgICAgICAgICAgICAgIGN1cnJlbnRPcGVuZWRTaWRlTWVudWUgPT0gJ2NvbHMnICYmIHNpZGVNZW51VmlzaWJsZVxyXG4gICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgW2NsYXNzLmJvcmRlci1iZWxvd109XCJzaWRlTWVudVZpc2libGVcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiY29sdW1ucy1idXR0b24gZC1mbGV4IGZsZXgtY29sdW1uIGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy91aS1jaGVja3MtZ3JpZC5zdmcnXHJcbiAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaWRlLW1lbnVlLXRleHRcIj5Db2x1bW5zPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVTaWRlTWVudSgnZmlsdHJzJylcIlxyXG4gICAgICAgICAgICAgIFtjbGFzcy5iZy1mZmZdPVwiXHJcbiAgICAgICAgICAgICAgICBjdXJyZW50T3BlbmVkU2lkZU1lbnVlID09ICdmaWx0cnMnICYmIHNpZGVNZW51VmlzaWJsZVxyXG4gICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgW2NsYXNzLmJvcmRlci1iZWxvd109XCJcclxuICAgICAgICAgICAgICAgIHNpZGVNZW51VmlzaWJsZSAmJiBjdXJyZW50T3BlbmVkU2lkZU1lbnVlID09ICdmaWx0cnMnXHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImNvbHVtbnMtYnV0dG9uIGQtZmxleCBmbGV4LWNvbHVtbiBhbGlnbi1pdGVtcy1jZW50ZXJcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvZmlsdGVyLTIuc3ZnJ1xyXG4gICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2lkZS1tZW51ZS10ZXh0XCI+RmlsdGVyPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwiaC0xMDBcIlxyXG4gICAgICAgICAgICAqbmdJZj1cInNpZGVNZW51VmlzaWJsZVwiXHJcbiAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsgd2lkdGg6IHNpZGVNZW51VmlzaWJsZSA/ICcyNTBweCcgOiAnJyB9XCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImgtMTAwXCI+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJjdXJyZW50T3BlbmVkU2lkZU1lbnVlID09ICdjb2xzJyAmJiBzaWRlTWVudVZpc2libGVcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb2x1bW5QYW5uZWxcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwhLS0gQ29sdW1uIEl0ZW1zIC0tPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbHVtbi1wYW5lbC1ib2R5IHB4LTNcIj5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBjb2wgb2YgY29sdW1uczsgdHJhY2tCeTogdHJhY2tCeUZpZWxkXCJcclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29sdW1uUGFuZWxJdGVtOyBjb250ZXh0OiB7IGNvbDogY29sIH1cIlxyXG4gICAgICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxociAvPlxyXG5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaWRlLW1lbnUtcm93LWdyb3Vwc1wiIHN0eWxlPVwiaGVpZ2h0OiAzMCVcIj5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwic2lkZU1lbnVSb3dHcm91cHNcIlxyXG4gICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cImN1cnJlbnRPcGVuZWRTaWRlTWVudWUgPT0gJ2ZpbHRycycgJiYgc2lkZU1lbnVWaXNpYmxlXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic2lkZUZpbHRlcnNcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXZcclxuICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJmb290ZXJSb3dIZWlnaHRcIlxyXG4gICAgICBjbGFzcz1cImJvcmRlci10b3BcIlxyXG4gICAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cImZvb3RlclJvd0JhY2tncm91bmRDb2xvclwiXHJcbiAgICA+XHJcbiAgICAgIDwhLS0gUm93czogPHNwYW4gY2xhc3M9XCJmdy01MDAgbXMtMVwiPnt7IGRhdGFTZXQubGVuZ3RoIH19PC9zcGFuPiAtLT5cclxuXHJcbiAgICAgIDxkaXZcclxuICAgICAgICBjbGFzcz1cInBhZ2luYXRpb24tY29udGFpbmVyXCJcclxuICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cImZvb3RlclJvd0hlaWdodFwiXHJcbiAgICAgICAgW3N0eWxlLnBhZGRpbmcucHhdPVwiZm9vdGVyUGFkZGluZ1wiXHJcbiAgICAgID5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicGFnZS1zaXplXCI+XHJcbiAgICAgICAgICA8c2VsZWN0XHJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwicGFnaW5hdGlvbkNvbmZpZy5saW1pdFwiXHJcbiAgICAgICAgICAgIChjaGFuZ2UpPVwib25QYWdlU2l6ZUNoYW5nZSgpXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgc2l6ZSBvZiBwYWdlU2l6ZU9wdGlvbnNcIiBbdmFsdWVdPVwic2l6ZVwiPlxyXG4gICAgICAgICAgICAgIHt7IHNpemUgfX1cclxuICAgICAgICAgICAgPC9vcHRpb24+XHJcbiAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2VwYXJhdG9yXCI+IHBlciBwYWdlIDwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInBhZ2UtaW5mb1wiPlxyXG4gICAgICAgICAgUmVzdWx0czpcclxuICAgICAgICAgIHt7IChwYWdpbmF0aW9uQ29uZmlnLnBhZ2UgLSAxKSAqIHBhZ2luYXRpb25Db25maWcubGltaXQgKyAxIH19LXt7XHJcbiAgICAgICAgICAgIHBhZ2luYXRpb25Db25maWcucGFnZSAqIHBhZ2luYXRpb25Db25maWcubGltaXQgPFxyXG4gICAgICAgICAgICBwYWdpbmF0aW9uQ29uZmlnLnRvdGFsUmVzdWx0c1xyXG4gICAgICAgICAgICAgID8gcGFnaW5hdGlvbkNvbmZpZy5wYWdlICogcGFnaW5hdGlvbkNvbmZpZy5saW1pdFxyXG4gICAgICAgICAgICAgIDogcGFnaW5hdGlvbkNvbmZpZy50b3RhbFJlc3VsdHNcclxuICAgICAgICAgIH19XHJcbiAgICAgICAgICBvZlxyXG4gICAgICAgICAge3sgcGFnaW5hdGlvbkNvbmZpZy50b3RhbFJlc3VsdHMgfX1cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInBhZ2UtYnV0dG9uc1wiPlxyXG4gICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAoY2xpY2spPVwiZ29Ub1BhZ2UocGFnaW5hdGlvbkNvbmZpZy5wYWdlIC0gMSlcIlxyXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwicGFnaW5hdGlvbkNvbmZpZy5wYWdlID09PSAxXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAg4oC5XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuXHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBwYWdlIG9mIHZpc2libGVQYWdlc1wiPlxyXG4gICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgKm5nSWY9XCJwYWdlICE9PSAnLi4uJ1wiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImdvVG9QYWdlKHBhZ2UpXCJcclxuICAgICAgICAgICAgICBbY2xhc3MuYWN0aXZlXT1cInBhZ2UgPT09IHBhZ2luYXRpb25Db25maWcucGFnZVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICB7eyBwYWdlIH19XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cInBhZ2UgPT09ICcuLi4nXCI+Li4uPC9zcGFuPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAoY2xpY2spPVwiZ29Ub1BhZ2UocGFnaW5hdGlvbkNvbmZpZy5wYWdlICsgMSlcIlxyXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwicGFnaW5hdGlvbkNvbmZpZy5wYWdlID09PSBwYWdpbmF0aW9uQ29uZmlnLnRvdGFsUmVzdWx0c1wiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIOKAulxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG5cclxuPCEtLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0+XHJcbjwhLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tPlxyXG48IS0tIEhlYWRlciBDZWxsIFRlbXBsYXRlIC0tPlxyXG48IS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAtLT5cclxuPCEtLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0+XHJcblxyXG48bmctdGVtcGxhdGVcclxuICAjaGVhZGVyQ2VsbFxyXG4gIGxldC1jb2xcclxuICBsZXQtcGlubmVkUmlnaHQ9XCJwaW5uZWRSaWdodFwiXHJcbiAgbGV0LWk9XCJpbmRleFwiXHJcbiAgbGV0LXNlY3Rpb25zPVwic2VjdGlvblwiXHJcbiAgbGV0LWNhbGxlZEZyb21OZXN0ZWRQbGFjZWhvbGRlcj1cImNhbGxlZEZyb21OZXN0ZWRQbGFjZWhvbGRlclwiXHJcbj5cclxuICA8ZGl2PlxyXG4gICAgPCEtLSBHcm91cCBIZWFkZXIgLS0+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sLmNoaWxkcmVuPy5sZW5ndGggPiAwOyBlbHNlIGZsYXRIZWFkZXJcIj5cclxuICAgICAgPGRpdiBjZGtEcm9wbGlzdEdyb3VwIGNsYXNzPVwiZ3JvdXAtY29sdW1uLXdyYXBwZXJcIj5cclxuICAgICAgICA8IS0tIFBhcmVudCBIZWFkZXIgLS0+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgKm5nSWY9XCJzaG91bGRUaGVHcm91cEhlYWRlclNob3coY29sKVwiXHJcbiAgICAgICAgICBjbGFzcz1cImhlYWRlci1jZWxsIGdyb3VwLWhlYWRlclwiXHJcbiAgICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cImhlYWRlclJvd0hlaWdodFwiXHJcbiAgICAgICAgICBbc3R5bGUubWluLWhlaWdodC5weF09XCJoZWFkZXJSb3dIZWlnaHRcIlxyXG4gICAgICAgICAgW3N0eWxlLm1heC1oZWlnaHQucHhdPVwiaGVhZGVyUm93SGVpZ2h0XCJcclxuICAgICAgICAgIFtjbGFzcy5ib3JkZXItcmlnaHRdPVwic2hvd1ZlcnRpY2FsQm9yZGVyXCJcclxuICAgICAgICAgIFtzdHlsZS5ncmlkQ29sdW1uXT1cIidzcGFuICcgKyBjb2wuY2hpbGRyZW4ubGVuZ3RoXCJcclxuICAgICAgICAgIFtzdHlsZS5mb250V2VpZ2h0XT1cImhlYWRlckZvbnRXZWlnaHRcIlxyXG4gICAgICAgICAgW2NsYXNzLmZsZXgtcm93LXJldmVyc2VdPVwicGlubmVkUmlnaHRcIlxyXG4gICAgICAgICAgW2NsYXNzLmp1c3RpZnktY29udGVudC1lbmRdPVwicGlubmVkUmlnaHRcIlxyXG4gICAgICAgICAgc3R5bGU9XCJncmlkLXJvdzogMVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzcz1cImdyb3VwLWhlYWRlci1jb250ZW50XCJcclxuICAgICAgICAgICAgW3RpdGxlXT1cImNvbC5oZWFkZXJcIlxyXG4gICAgICAgICAgICBbY2xhc3MubXMtMl09XCJwaW5uZWRSaWdodFwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIHt7IGNvbC5oZWFkZXIgfX1cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzcz1cInJlc2l6ZS1oYW5kbGVcIlxyXG4gICAgICAgICAgICAoZGJsY2xpY2spPVwiYXV0b3NpemVDb2x1bW4oY29sLmNoaWxkcmVuKVwiXHJcbiAgICAgICAgICAgIChtb3VzZWRvd24pPVwiXHJcbiAgICAgICAgICAgICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyBvblJlc2l6ZUdyb3VwKCRldmVudCwgY29sLCBwaW5uZWRSaWdodClcclxuICAgICAgICAgICAgXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxyXG4gICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvcmVzaXplLWhhbmRsZS5zdmcnXHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxyXG4gICAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDwhLS0gQ2hpbGQgSGVhZGVycyBhbmQgRmlsdGVycyAtLT5cclxuXHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgY2xhc3M9XCJkLWZsZXhcIlxyXG4gICAgICAgICAgY2RrRHJvcExpc3RcclxuICAgICAgICAgIGNka0Ryb3BMaXN0T3JpZW50YXRpb249XCJob3Jpem9udGFsXCJcclxuICAgICAgICAgIFtjZGtEcm9wTGlzdERhdGFdPVwiY29sLmNoaWxkcmVuXCJcclxuICAgICAgICAgIChjZGtEcm9wTGlzdFNvcnRlZCk9XCJvbkNoaWxkRHJvcGxpc3RTb3J0ZWQoJGV2ZW50LCBzZWN0aW9ucylcIlxyXG4gICAgICAgICAgKGNka0Ryb3BMaXN0RHJvcHBlZCk9XCJvbkNoaWxkRHJvcGxpc3REcm9wZWQoJGV2ZW50KVwiXHJcbiAgICAgICAgICBbY2RrRHJvcExpc3RTb3J0aW5nRGlzYWJsZWRdPVwiZmFsc2VcIlxyXG4gICAgICAgICAgW2Nka0Ryb3BMaXN0Q29ubmVjdGVkVG9dPVwiXHJcbiAgICAgICAgICAgIHNob3dSb3dzR3JvdXBpbmcgPyBbJ3Jvd3MtZ3JvdXBpbmctdG9wLWNvbnRhaW5lciddIDogW11cclxuICAgICAgICAgIFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjZGtEcmFnXHJcbiAgICAgICAgICAgIFtjZGtEcmFnRGF0YV09XCJjaGlsZFwiXHJcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBjaGlsZCBvZiBjb2wuY2hpbGRyZW47IGxldCBpID0gaW5kZXhcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8IS0tIENoaWxkIEhlYWRlciAtLT5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNoaWxkLmlzX3Zpc2libGUgJiYgIWNoaWxkWydpc1Jvd0dyb3VwZWQnXVwiPlxyXG4gICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgIGNka0RyYWdIYW5kbGVcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiaGVhZGVyLWNlbGwgb25lLXJvdy1oZWFkZXItY2VsbHMgY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgW2NsYXNzLmJvcmRlci1yaWdodF09XCJzaG93VmVydGljYWxCb3JkZXJcIlxyXG4gICAgICAgICAgICAgICAgW2F0dHIuZmllbGRdPVwiY2hpbGQuZmllbGRcIlxyXG4gICAgICAgICAgICAgICAgW3N0eWxlLndpZHRoLnB4XT1cImNoaWxkLndpZHRoXCJcclxuICAgICAgICAgICAgICAgIFtzdHlsZS5taW4td2lkdGgucHhdPVwiY2hpbGQud2lkdGhcIlxyXG4gICAgICAgICAgICAgICAgW3N0eWxlLm1pbi1oZWlnaHQucHhdPVwiaGVhZGVyUm93SGVpZ2h0XCJcclxuICAgICAgICAgICAgICAgIFtzdHlsZS5tYXgtaGVpZ2h0LnB4XT1cImhlYWRlclJvd0hlaWdodFwiXHJcbiAgICAgICAgICAgICAgICBbc3R5bGUuZm9udFdlaWdodF09XCJoZWFkZXJGb250V2VpZ2h0XCJcclxuICAgICAgICAgICAgICAgIHN0eWxlPVwiZ3JpZC1yb3c6IDJcIlxyXG4gICAgICAgICAgICAgICAgW2NsYXNzLmZpbHRlci1hcHBsaWVkLW9uLXRleHRdPVwiaXNGaWx0ZXJBcHBsaWVkT25Db2x1bW4oY2hpbGQpXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGgtMTAwIGFsaWduLWl0ZW1zLWNlbnRlciB3LTEwMFwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXIgdy0xMDBcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5mbGV4LXJvdy1yZXZlcnNlXT1cInBpbm5lZFJpZ2h0XCJcclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGV4dC1lbGxpcHNpcyBoLTEwMCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIHctMTAwXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCJjb2wuaGVhZGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy53LTEwMF09XCJwaW5uZWRSaWdodFwiXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRleHQtZWxsaXBzaXMgaC0xMDBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZWRpdGFibGUtaGVhZGVyXT1cImNoaWxkPy5pc19lZGl0YWJsZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVuVGhyZWVEb3RzTWVudSgkZXZlbnQsIGNoaWxkKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVuRmlsdGVyb25UaHJlZURvdHNDbGljayhjaGlsZClcclxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3sgY2hpbGQuaGVhZGVyIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwb3NpdGlvbi1yZWxhdGl2ZSBkLWZsZXhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmZsZXgtcm93LXJldmVyc2VdPVwicGlubmVkUmlnaHRcIlxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLm1lLTJdPVwicGlubmVkUmlnaHRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNoaWxkLnBpbm5lZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL3Bpbi1ibHVlLnN2ZydcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0aHJlZS1kb3RzIHAtMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVuVGhyZWVEb3RzTWVudSgkZXZlbnQsIGNoaWxkKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBpc1RocmVlRG90c0ZpbHRlck9wZW4gPSBmYWxzZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cImN1cnNvcjogcG9pbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RhdGEtZ3JpZC9pY29ucy90aHJlZS1kb3RzLXZlcnRpY2FsLnN2ZydcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICA8IS0tIE9ubHkgc2hvdyBtZW51IGlmIHRoaXMgY29sdW1uIGlzIGFjdGl2ZSAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwb3NpdGlvbi1hYnNvbHV0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiYWN0aXZlQ29sID09PSBjaGlsZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwidG9wOiAtNTAlOyB6LWluZGV4OiAyMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS5sZWZ0LnB4XT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC0oIWNoaWxkPy5waW5uZWQgPyBjZW50ZXJQaW5uZWRIZWFkZXIuc2Nyb2xsTGVmdCA6IDApXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS50b3AucHhdPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaXNUaHJlZURvdHNGaWx0ZXJPcGVuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHNob3dGaWx0ZXJSb3cgfHwgc2hvd0NvbHVtbnNHcm91cGluZ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGhlYWRlclJvd0hlaWdodCAqIDIgLSAxMFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGhlYWRlclJvd0hlaWdodCAtIDEwXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IDBcclxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5NZW51O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dDoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2w6IGNoaWxkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc05lc3RlZFRhYmxlOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbjogc2VjdGlvbnNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicmVzaXplLWhhbmRsZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChkYmxjbGljayk9XCJhdXRvc2l6ZUNvbHVtbihjaGlsZClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAobW91c2Vkb3duKT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBvblJlc2l6ZUNvbHVtbigkZXZlbnQsIGNoaWxkKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkYXRhLWdyaWQvaWNvbnMvcmVzaXplLWhhbmRsZS5zdmcnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgIDwhLS0gRmlsdGVyIENlbGwgLS0+XHJcbiAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJzaG93RmlsdGVyUm93XCJcclxuICAgICAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwiaGVhZGVyQmFja2dyb3VuZENvbG9yXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiaGVhZGVyLWNlbGwgZmlsdGVyLWNlbGxcIlxyXG4gICAgICAgICAgICAgICAgW2NsYXNzLmJvcmRlci1yaWdodF09XCJzaG93VmVydGljYWxCb3JkZXJcIlxyXG4gICAgICAgICAgICAgICAgW2F0dHIuZmllbGRdPVwiY2hpbGQuZmllbGRcIlxyXG4gICAgICAgICAgICAgICAgW3N0eWxlLndpZHRoLnB4XT1cImNoaWxkLndpZHRoXCJcclxuICAgICAgICAgICAgICAgIFtzdHlsZS5taW4td2lkdGgucHhdPVwiY2hpbGQud2lkdGhcIlxyXG4gICAgICAgICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJoZWFkZXJSb3dIZWlnaHRcIlxyXG4gICAgICAgICAgICAgICAgW3N0eWxlLm1pbi1oZWlnaHQucHhdPVwiaGVhZGVyUm93SGVpZ2h0XCJcclxuICAgICAgICAgICAgICAgIFtzdHlsZS5tYXgtaGVpZ2h0LnB4XT1cImhlYWRlclJvd0hlaWdodFwiXHJcbiAgICAgICAgICAgICAgICBbY2xhc3MuYm9yZGVyLXJpZ2h0XT1cInNob3dWZXJ0aWNhbEJvcmRlclwiXHJcbiAgICAgICAgICAgICAgICBzdHlsZT1cImdyaWQtcm93OiAzXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaGVhZGVyLWNlbGwgZmlsdGVyLWNlbGxcIlxyXG4gICAgICAgICAgICAgICAgICBbYXR0ci5maWVsZF09XCJjb2wuZmllbGRcIlxyXG4gICAgICAgICAgICAgICAgICBbc3R5bGUud2lkdGgucHhdPVwiY29sLndpZHRoXCJcclxuICAgICAgICAgICAgICAgICAgW3N0eWxlLm1pbi13aWR0aC5weF09XCJjb2wud2lkdGhcIlxyXG4gICAgICAgICAgICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cImhlYWRlclJvd0hlaWdodFwiXHJcbiAgICAgICAgICAgICAgICAgIFtzdHlsZS5taW4taGVpZ2h0LnB4XT1cImhlYWRlclJvd0hlaWdodFwiXHJcbiAgICAgICAgICAgICAgICAgIFtzdHlsZS5tYXgtaGVpZ2h0LnB4XT1cImhlYWRlclJvd0hlaWdodFwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21cIlxyXG4gICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiRmlsdGVyXCJcclxuICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNoaWxkLmZpbHRlclZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvbkZpbHRlckNoYW5nZShjaGlsZClcIlxyXG4gICAgICAgICAgICAgICAgICAgIChwYXN0ZSk9XCJvbkZpbHRlckNoYW5nZShjaGlsZCk7IGFwcGx5RHJvcGRvd25GaWx0ZXIoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgY2hpbGQ/LnR5cGUgPT0gJ2Ryb3Bkb3duJyB8fCBjaGlsZD8udHlwZSA9PSAnaW1hZ2UnXHJcbiAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZGlzYWJsZWQtc2VhcmNoLWlucHV0XT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgY2hpbGQ/LnR5cGUgPT0gJ2Ryb3Bkb3duJyB8fCBjaGlsZD8udHlwZSA9PSAnaW1hZ2UnXHJcbiAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICBvcGVuRmlsdGVyRnJvbURpc2FibGVkU2VhcmNoZWRJbnB1dChjaGlsZClcclxuICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cImFwcGx5RHJvcGRvd25GaWx0ZXIoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKG1vdXNlZG93bik9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxyXG4gICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmlsdGVyLWljb24td3JhcHBlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgb3BlbkZpbHRlcihjaGlsZClcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5maWx0ZXItYXBwbGllZF09XCJpc0ZpbHRlckFwcGxpZWRPbkNvbHVtbihjaGlsZClcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5wZS1ub25lXT1cImNoaWxkPy50eXBlID09ICdpbWFnZSdcIlxyXG4gICAgICAgICAgICAgICAgICAgID48c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvZmlsdGVyLTIuc3ZnJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJpc0ZpbHRlckFwcGxpZWRPbkNvbHVtbihjaGlsZClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDdweDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiA3cHg7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJveC1zaGFkb3c6IDBweCAwcHggM3B4ICM3NDg2ZmY7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYigwIDE2MyAyMzMpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJpZ2h0OiA0cHg7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvcDogMTJweDtcclxuICAgICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInJvdW5kZWQtY2lyY2xlIGQtYmxvY2tcIlxyXG4gICAgICAgICAgICAgICAgICAgID48L3NwYW5cclxuICAgICAgICAgICAgICAgICAgPjwvc3Bhbj5cclxuXHJcbiAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInBvc2l0aW9uLWFic29sdXRlIGZpbHRlci1yb3ctZmlsdGVyLXdyYXBwZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiYWN0aXZlRmlsdGVyQ2VsbD8uZmllbGQgPT0gY2hpbGQ/LmZpZWxkXCJcclxuICAgICAgICAgICAgICAgICAgICBzdHlsZT1cInRvcDogMTAwJTsgcmlnaHQ6IDA7IHotaW5kZXg6IDk5XCJcclxuICAgICAgICAgICAgICAgICAgICBbc3R5bGUubGVmdC5weF09XCJcclxuICAgICAgICAgICAgICAgICAgICAgIGNoaWxkPy5waW5uZWQgPyAwIDogLWNlbnRlclBpbm5lZEhlYWRlci5zY3JvbGxMZWZ0XHJcbiAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiZmlsdGVyTWVudTsgY29udGV4dDogeyBjb2w6IGNoaWxkIH1cIlxyXG4gICAgICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBjZGtEcmFnUHJldmlld1xyXG4gICAgICAgICAgICAgID48ZGl2IGNsYXNzPVwicC0yIGJvcmRlciBkLWZsZXggZ2FwLTJcIj5cclxuICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgICAgICAgICAhZHJhZ2dpbmdJbkdyb3VwQXJlYSB8fFxyXG4gICAgICAgICAgICAgICAgICAgIChjaGlsZC5pc19ncm91cGFibGUgJiYgZHJhZ2dpbmdJbkdyb3VwQXJlYSlcclxuICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvYXJyb3dzLW1vdmUuc3ZnJ1xyXG4gICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgICAgICAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImRyYWdnaW5nSW5Hcm91cEFyZWEgJiYgIWNoaWxkLmlzX2dyb3VwYWJsZVwiPlxyXG4gICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9iYW4uc3ZnJ1xyXG4gICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgICAgICAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdj57eyBjaGlsZC5oZWFkZXIgfX08L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIGNka0RyYWdQbGFjZWhvbGRlcj5cclxuICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIWRyYWdnaW5nSW5Hcm91cEFyZWFcIiBjbGFzcz1cInBvc2l0aW9uLXJlbGF0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXHJcbiAgICAgICAgICAgICAgICAgIGNoaWxkSGVhZGVyUGxhY2Vob2xkZXI7XHJcbiAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHtcclxuICAgICAgICAgICAgICAgICAgICAkaW1wbGljaXQ6IGNoaWxkLFxyXG4gICAgICAgICAgICAgICAgICAgIGluZGV4OiBpLFxyXG4gICAgICAgICAgICAgICAgICAgIHNlY3Rpb25zOiBzZWN0aW9ucyxcclxuICAgICAgICAgICAgICAgICAgICBjYWxsZWRGcm9tTmVzdGVkUGxhY2Vob2xkZXI6IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICA+PC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJkcmFnZ2luZ0luR3JvdXBBcmVhICYmIGNoaWxkPy5pc19ncm91cGFibGVcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggZ2FwLTIgbXMtMlwiXHJcbiAgICAgICAgICAgICAgICBzdHlsZT1cIm9wYWNpdHk6IDAuNlwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxyXG4gICAgICAgICAgICAgICAgICAgIHRvcEdyb3VwaW5nUm93UGxhY2Vob2xkZXI7XHJcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dDoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgJGltcGxpY2l0OiBjaGlsZCxcclxuICAgICAgICAgICAgICAgICAgICAgIHNob3dDaGV2cm9uOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgICAgIHBpbm5lZFJpZ2h0OiBwaW5uZWRSaWdodCxcclxuICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb25zOiBzZWN0aW9ucyxcclxuICAgICAgICAgICAgICAgICAgICAgIGluZGV4OiBpXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgPCEtLSBGbGF0IEhlYWRlciB8fCBTaW5nbGUgSGVhZGVyIENlbGwtLT5cclxuICAgIDxuZy10ZW1wbGF0ZSAjZmxhdEhlYWRlcj5cclxuICAgICAgPGRpdlxyXG4gICAgICAgIGNsYXNzPVwiZ3JvdXAtY29sdW1uLXdyYXBwZXJcIlxyXG4gICAgICAgICpuZ0lmPVwiY29sLmlzX3Zpc2libGUgJiYgIWNvbFsnaXNSb3dHcm91cGVkJ11cIlxyXG4gICAgICA+XHJcbiAgICAgICAgPCEtLSBGdWxsLWhlaWdodCBIZWFkZXIgQ2VsbCAoc3BhbnMgMiByb3dzIHZpc3VhbGx5KSAtLT5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICBjbGFzcz1cImhlYWRlci1jZWxsIG9uZS1yb3ctaGVhZGVyLWNlbGxzXCJcclxuICAgICAgICAgIFthdHRyLmZpZWxkXT1cImNvbC5maWVsZFwiXHJcbiAgICAgICAgICBbc3R5bGUud2lkdGgucHhdPVwiY29sLndpZHRoXCJcclxuICAgICAgICAgIFtzdHlsZS5taW4td2lkdGgucHhdPVwiY29sLndpZHRoXCJcclxuICAgICAgICAgIFtjbGFzcy5ib3JkZXItcmlnaHRdPVwic2hvd1ZlcnRpY2FsQm9yZGVyXCJcclxuICAgICAgICAgIFtzdHlsZS5taW4taGVpZ2h0LnB4XT1cIlxyXG4gICAgICAgICAgICBzaG93Q29sdW1uc0dyb3VwaW5nID8gaGVhZGVyUm93SGVpZ2h0ICogMiA6IGhlYWRlclJvd0hlaWdodFxyXG4gICAgICAgICAgXCJcclxuICAgICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwiXHJcbiAgICAgICAgICAgIHNob3dDb2x1bW5zR3JvdXBpbmcgPyBoZWFkZXJSb3dIZWlnaHQgKiAyIDogaGVhZGVyUm93SGVpZ2h0XHJcbiAgICAgICAgICBcIlxyXG4gICAgICAgICAgW3N0eWxlLmZvbnRXZWlnaHRdPVwiaGVhZGVyRm9udFdlaWdodFwiXHJcbiAgICAgICAgICBzdHlsZT1cImdyaWQtcm93OiAxIC8gc3BhbiAyXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGgtMTAwIGFsaWduLWl0ZW1zLWNlbnRlciB3LTEwMFwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiB3LTEwMCBhbGlnbi1pdGVtcy1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgIFtjbGFzcy5mbGV4LXJvdy1yZXZlcnNlXT1cInBpbm5lZFJpZ2h0XCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwidGV4dC1lbGxpcHNpcyBoLTEwMCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIHctMTAwXCJcclxuICAgICAgICAgICAgICAgIFt0aXRsZV09XCJjb2wuaGVhZGVyXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGV4dC1lbGxpcHNpcyBoLTEwMCBjdXJzb3ItcG9pbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgIFtjbGFzcy5lZGl0YWJsZS1oZWFkZXJdPVwiY29sPy5pc19lZGl0YWJsZVwiXHJcbiAgICAgICAgICAgICAgICAgIFtjbGFzcy5maWx0ZXItYXBwbGllZC1vbi10ZXh0XT1cImlzRmlsdGVyQXBwbGllZE9uQ29sdW1uKGNvbClcIlxyXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgb3BlblRocmVlRG90c01lbnUoJGV2ZW50LCBjb2wpO1xyXG4gICAgICAgICAgICAgICAgICAgIG9wZW5GaWx0ZXJvblRocmVlRG90c0NsaWNrKGNvbClcclxuICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAge3sgY29sLmhlYWRlciB9fVxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwicG9zaXRpb24tcmVsYXRpdmUgZC1mbGV4XCJcclxuICAgICAgICAgICAgICAgIFtjbGFzcy5mbGV4LXJvdy1yZXZlcnNlXT1cInBpbm5lZFJpZ2h0XCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgIFtjbGFzcy5tZS0yXT1cInBpbm5lZFJpZ2h0XCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjb2w/LnBpbm5lZFwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL3Bpbi1ibHVlLnN2ZydcclxuICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgW2NsYXNzLm1lLTJdPVwiY29sLm9yZGVyX2J5XCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzb3J0aW5nQ29uZmlnPy5maWVsZCA9PSBjb2wuZmllbGRcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8IS0tIEFzY2VuZGluZyBTb3J0IEljb24gLS0+XHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzb3J0aW5nQ29uZmlnPy5vcmRlcl9ieSA9PSAnYXNjJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL3NvcnQtYXNjLnN2ZydcclxuICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBtdC0xIGN1cnNvci1wb2ludGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic29ydERlc2MoY29sKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJzb3J0aW5nQ29uZmlnPy5vcmRlcl9ieSA9PT0gJ2FzYydcIlxyXG4gICAgICAgICAgICAgICAgICA+PC9zcGFuPlxyXG5cclxuICAgICAgICAgICAgICAgICAgPCEtLSBEZXNjZW5kaW5nIFNvcnQgSWNvbiAtLT5cclxuICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInNvcnRpbmdDb25maWc/Lm9yZGVyX2J5ID09ICdkZXNjJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL3NvcnQtZGVzYy5zdmcnXHJcbiAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgbXQtMSBjdXJzb3ItcG9pbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNvcnRBc2MoY29sKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJzb3J0aW5nQ29uZmlnPy5vcmRlcl9ieSA9PT0gJ2Rlc2MnXCJcclxuICAgICAgICAgICAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cInRocmVlLWRvdHMgcC0xXCJcclxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxyXG4gICAgICAgICAgICAgICAgICAgIG9wZW5UaHJlZURvdHNNZW51KCRldmVudCwgY29sKTtcclxuICAgICAgICAgICAgICAgICAgICBpc1RocmVlRG90c0ZpbHRlck9wZW4gPSBmYWxzZVxyXG4gICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICBzdHlsZT1cImN1cnNvcjogcG9pbnRlclwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggK1xyXG4gICAgICAgICAgICAgICAgICAgICAgJ2RhdGEtZ3JpZC9pY29ucy90aHJlZS1kb3RzLXZlcnRpY2FsLnN2ZydcclxuICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICA8IS0tIE9ubHkgc2hvdyBtZW51IGlmIHRoaXMgY29sdW1uIGlzIGFjdGl2ZSAtLT5cclxuICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwb3NpdGlvbi1hYnNvbHV0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiYWN0aXZlQ29sID09PSBjb2xcIlxyXG4gICAgICAgICAgICAgICAgICBzdHlsZT1cInRvcDogLTUwJTsgei1pbmRleDogMjFcIlxyXG4gICAgICAgICAgICAgICAgICBbc3R5bGUubGVmdC5weF09XCJcclxuICAgICAgICAgICAgICAgICAgICAtKCFjb2w/LnBpbm5lZCA/IGNlbnRlclBpbm5lZEhlYWRlci5zY3JvbGxMZWZ0IDogMClcclxuICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgW3N0eWxlLnRvcC5weF09XCJcclxuICAgICAgICAgICAgICAgICAgICBpc1RocmVlRG90c0ZpbHRlck9wZW5cclxuICAgICAgICAgICAgICAgICAgICAgID8gc2hvd0ZpbHRlclJvdyB8fCBzaG93Q29sdW1uc0dyb3VwaW5nXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID8gaGVhZGVyUm93SGVpZ2h0ICogMiAtIDEwXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDogaGVhZGVyUm93SGVpZ2h0IC0gMTBcclxuICAgICAgICAgICAgICAgICAgICAgIDogMFxyXG4gICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcclxuICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbk1lbnU7XHJcbiAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbDogY29sLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpc05lc3RlZFRhYmxlOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbjogc2VjdGlvbnNcclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwicmVzaXplLWhhbmRsZVwiXHJcbiAgICAgICAgICAgICAgICAgIFtjbGFzcy53LTEwMF09XCJjb2wucGlubmVkID09ICdyaWdodCdcIlxyXG4gICAgICAgICAgICAgICAgICAoZGJsY2xpY2spPVwiYXV0b3NpemVDb2x1bW4oY29sKVwiXHJcbiAgICAgICAgICAgICAgICAgIChtb3VzZWRvd24pPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyBvblJlc2l6ZUNvbHVtbigkZXZlbnQsIGNvbClcclxuICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvcmVzaXplLWhhbmRsZS5zdmcnXHJcbiAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDwhLS0gRmlsdGVyIENlbGwgLS0+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgKm5nSWY9XCJzaG93RmlsdGVyUm93XCJcclxuICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwiaGVhZGVyQmFja2dyb3VuZENvbG9yXCJcclxuICAgICAgICAgIGNsYXNzPVwiaGVhZGVyLWNlbGwgZmlsdGVyLWNlbGxcIlxyXG4gICAgICAgICAgW2NsYXNzLmJvcmRlci1yaWdodF09XCJzaG93VmVydGljYWxCb3JkZXJcIlxyXG4gICAgICAgICAgW2F0dHIuZmllbGRdPVwiY29sLmZpZWxkXCJcclxuICAgICAgICAgIFtzdHlsZS53aWR0aC5weF09XCJjb2wud2lkdGhcIlxyXG4gICAgICAgICAgW3N0eWxlLm1pbi13aWR0aC5weF09XCJjb2wud2lkdGhcIlxyXG4gICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJoZWFkZXJSb3dIZWlnaHRcIlxyXG4gICAgICAgICAgW3N0eWxlLm1pbi1oZWlnaHQucHhdPVwiaGVhZGVyUm93SGVpZ2h0XCJcclxuICAgICAgICAgIFtzdHlsZS5tYXgtaGVpZ2h0LnB4XT1cImhlYWRlclJvd0hlaWdodFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtXCJcclxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJGaWx0ZXJcIlxyXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNvbC5maWx0ZXJWYWx1ZVwiXHJcbiAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uRmlsdGVyQ2hhbmdlKGNvbClcIlxyXG4gICAgICAgICAgICBbcmVhZG9ubHldPVwiY29sPy50eXBlID09ICdkcm9wZG93bicgfHwgY29sPy50eXBlID09ICdpbWFnZSdcIlxyXG4gICAgICAgICAgICBbY2xhc3MuZGlzYWJsZWQtc2VhcmNoLWlucHV0XT1cIlxyXG4gICAgICAgICAgICAgIGNvbD8udHlwZSA9PSAnZHJvcGRvd24nIHx8IGNvbD8udHlwZSA9PSAnaW1hZ2UnXHJcbiAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgIChwYXN0ZSk9XCJvblBhc3RlSW5GaWx0ZXJSb3dTZWFyY2goJGV2ZW50LCBjb2wpXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cIlxyXG4gICAgICAgICAgICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgb3BlbkZpbHRlckZyb21EaXNhYmxlZFNlYXJjaGVkSW5wdXQoY29sKVxyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJhcHBseURyb3Bkb3duRmlsdGVyKClcIlxyXG4gICAgICAgICAgICAobW91c2Vkb3duKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXHJcbiAgICAgICAgICAvPlxyXG4gICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgY2xhc3M9XCJmaWx0ZXItaWNvbi13cmFwcGVyXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgb3BlbkZpbHRlcihjb2wpXCJcclxuICAgICAgICAgICAgW2NsYXNzLmZpbHRlci1hcHBsaWVkXT1cImlzRmlsdGVyQXBwbGllZE9uQ29sdW1uKGNvbClcIlxyXG4gICAgICAgICAgICBbY2xhc3MucGUtbm9uZV09XCJjb2w/LnR5cGUgPT0gJ2ltYWdlJ1wiXHJcbiAgICAgICAgICAgID48c3BhblxyXG4gICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvZmlsdGVyLTIuc3ZnJ1wiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAqbmdJZj1cImlzRmlsdGVyQXBwbGllZE9uQ29sdW1uKGNvbClcIlxyXG4gICAgICAgICAgICAgIHN0eWxlPVwiXHJcbiAgICAgICAgICAgICAgICB3aWR0aDogN3B4O1xyXG4gICAgICAgICAgICAgICAgaGVpZ2h0OiA3cHg7XHJcbiAgICAgICAgICAgICAgICBib3gtc2hhZG93OiAwcHggMHB4IDNweCAjNzQ4NmZmO1xyXG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDAgMTYzIDIzMyk7XHJcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgICAgICAgICAgICByaWdodDogNHB4O1xyXG4gICAgICAgICAgICAgICAgdG9wOiAxMnB4O1xyXG4gICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJyb3VuZGVkLWNpcmNsZSBkLWJsb2NrXCJcclxuICAgICAgICAgICAgPjwvc3BhblxyXG4gICAgICAgICAgPjwvc3Bhbj5cclxuXHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwicG9zaXRpb24tYWJzb2x1dGUgZmlsdGVyLXJvdy1maWx0ZXItd3JhcHBlclwiXHJcbiAgICAgICAgICAgICpuZ0lmPVwiYWN0aXZlRmlsdGVyQ2VsbCA9PT0gY29sXCJcclxuICAgICAgICAgICAgc3R5bGU9XCJ0b3A6IDEwMCU7IHJpZ2h0OiAwOyB6LWluZGV4OiA5OVwiXHJcbiAgICAgICAgICAgIFtzdHlsZS5sZWZ0LnB4XT1cImNvbD8ucGlubmVkID8gMCA6IC1jZW50ZXJQaW5uZWRIZWFkZXIuc2Nyb2xsTGVmdFwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImZpbHRlck1lbnU7IGNvbnRleHQ6IHsgY29sOiBjb2wgfVwiXHJcbiAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48IS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tPlxyXG48IS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tPlxyXG48IS0tIEJvZHkgQ2VsbCBUZW1wbGF0ZSAtLT5cclxuPCEtLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAtLT5cclxuPCEtLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAtLT5cclxuXHJcbjxuZy10ZW1wbGF0ZVxyXG4gICNyb3dDZWxsXHJcbiAgbGV0LXJvd1xyXG4gIGxldC1jb2x1bW5zPVwiY29sdW1uc1wiXHJcbiAgbGV0LWlzRXZlbj1cImlzRXZlblwiXHJcbiAgbGV0LWlzT2RkPVwiaXNPZGRcIlxyXG4gIGxldC1pc0xlZnRTZWN0aW9uPVwiaXNMZWZ0XCJcclxuICBsZXQtc2VjdGlvbj1cInNlY3Rpb25cIlxyXG4gIGxldC1yb3dJbmRleD1cInJvd0luZGV4XCJcclxuICBsZXQtaXNUb3RhbFJvdz1cImlzVG90YWxSb3dcIlxyXG4+XHJcbiAgPCEtLSBDaGVjayBpZiByb3cgaXMgYSBncm91cCAtLT5cclxuICA8bmctY29udGFpbmVyXHJcbiAgICAqbmdUZW1wbGF0ZU91dGxldD1cImdyb3VwUm93VGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiByb3csIGRlcHRoOiAwIH1cIlxyXG4gID48L25nLWNvbnRhaW5lcj5cclxuICA8bmctdGVtcGxhdGUgI2dyb3VwUm93VGVtcGxhdGUgbGV0LXJvdyBsZXQtZGVwdGg9XCJkZXB0aFwiPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInJvdy5pc0dyb3VwOyBlbHNlIHJlZ3VsYXJSb3dcIj5cclxuICAgICAgPCEtLSBHcm91cCBIZWFkZXIgLS0+XHJcbiAgICAgIDxkaXZcclxuICAgICAgICBjbGFzcz1cImdyb3VwLWhlYWRlci1yb3cgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJyb3dIZWlnaHRcIlxyXG4gICAgICAgIFtjbGFzcy5ib3JkZXItYmVsb3ddPVwic2VjdGlvbiAhPT0gJ2NlbnRlcidcIlxyXG4gICAgICAgIFtzdHlsZS53aWR0aF09XCJcclxuICAgICAgICAgIHNlY3Rpb24gPT09ICdjZW50ZXInXHJcbiAgICAgICAgICAgID8gKGNlbnRlclNjcm9sbGFibGVCb2R5Py5zY3JvbGxXaWR0aCA/PyAwKSArICdweCdcclxuICAgICAgICAgICAgOiAnMTAwJSdcclxuICAgICAgICBcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgKm5nSWY9XCJzZWN0aW9uID09ICdsZWZ0J1wiXHJcbiAgICAgICAgICBjbGFzcz1cImgtMTAwIGQtZmxleFwiXHJcbiAgICAgICAgICBbc3R5bGUud2lkdGgucHhdPVwibGVmdFBpbm5lZEhlYWRlci5vZmZzZXRXaWR0aCAtIDFcIlxyXG4gICAgICAgICAgW2NsYXNzLnJvdy1zZWxlY3RlZF09XCJyb3dTZWxlY3RlZEluZGV4ZXMuaGFzKHJvdy5fX3ZpcnR1YWxJbmRleClcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgKm5nSWY9XCJzaG93U2VyaWFsTnVtYmVyXCJcclxuICAgICAgICAgICAgc3R5bGU9XCJ3aWR0aDogNTBweFwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBoLTEwMCBib3JkZXItcmlnaHQganVzdGlmeS1jb250ZW50LWVuZCBwZS0yIHMtbm9cIlxyXG4gICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cImNoZWNrYm94ZXNCYWNrZ3JvdW5kQ29sb3JcIlxyXG4gICAgICAgICAgICBbc3R5bGUud2lkdGgucHhdPVwiNTVcIlxyXG4gICAgICAgICAgICBbc3R5bGUuY3Vyc29yXT1cIlxyXG4gICAgICAgICAgICAgICd1cmwoJyArXHJcbiAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArXHJcbiAgICAgICAgICAgICAgJ2RhdGEtZ3JpZC9pY29ucy9hcnJvdy1yaWdodC5zdmcpLCBhdXRvJ1xyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAobW91c2Vkb3duKT1cIm9uUm93TW91c2VEb3duKHJvdy5fX3ZpcnR1YWxJbmRleCwgJGV2ZW50KVwiXHJcbiAgICAgICAgICAgIChtb3VzZW92ZXIpPVwib25Sb3dNb3VzZU92ZXIocm93Ll9fdmlydHVhbEluZGV4LCAkZXZlbnQpXCJcclxuICAgICAgICAgICAgW3N0eWxlLmNvbG9yXT1cImNoZWNrYm94ZXNDb2xvclwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIHt7IGdldFN0YXJ0SW5kZXgoKSArIChyb3cuX192aXJ0dWFsSW5kZXggLSAxKSB8fCBcIlwiIH19XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICpuZ0lmPVwic2hvd0NoZWNrYm94ZXNcIlxyXG4gICAgICAgICAgICBzdHlsZT1cIndpZHRoOiA1MHB4XCJcclxuICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXIgaC0xMDAgYm9yZGVyLXJpZ2h0XCJcclxuICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJjaGVja2JveGVzQmFja2dyb3VuZENvbG9yXCJcclxuICAgICAgICAgICAgW2NsYXNzLnJvdy1zZWxlY3RlZF09XCJyb3dTZWxlY3RlZEluZGV4ZXMuaGFzKHJvdy5fX3ZpcnR1YWxJbmRleClcIlxyXG4gICAgICAgICAgICBbY2xhc3MubGVmdC1zZWxlY3Rpb24tYm9yZGVyXT1cIlxyXG4gICAgICAgICAgICAgIHJvd1NlbGVjdGVkSW5kZXhlcy5oYXMocm93Ll9fdmlydHVhbEluZGV4KVxyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICBbY2xhc3MuZmlyc3Qtcm93LXNlbGVjdGVkXT1cImZpcnN0U2VsZWN0ZWRSb3cgPT09IHJvdy5fX3ZpcnR1YWxJbmRleFwiXHJcbiAgICAgICAgICAgIFtjbGFzcy5sYXN0LXJvdy1zZWxlY3RlZF09XCJsYXN0U2VsZWN0ZWRSb3cgPT09IHJvdy5fX3ZpcnR1YWxJbmRleFwiXHJcbiAgICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCJjaGVja2JveGVzQ29sb3JcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICBzdHlsZT1cIndpZHRoOiAxNnB4OyBoZWlnaHQ6IDE2cHhcIlxyXG4gICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiZ2V0R3JvdXBDaGVja2VkU3RhdGUocm93KSA9PT0gdHJ1ZVwiXHJcbiAgICAgICAgICAgICAgW2luZGV0ZXJtaW5hdGVdPVwiZ2V0R3JvdXBDaGVja2VkU3RhdGUocm93KSA9PT0gdW5kZWZpbmVkXCJcclxuICAgICAgICAgICAgICAoY2hhbmdlKT1cInNlbGVjdEdyb3VwUm93KCRldmVudCwgcm93KVwiXHJcbiAgICAgICAgICAgIC8+XHJcblxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgICpuZ0lmPVwic2VjdGlvbiA9PSAnY2VudGVyJ1wiXHJcbiAgICAgICAgICBbc3R5bGUud2lkdGgucHhdPVwiY2VudGVyUGlubmVkSGVhZGVyLnNjcm9sbFdpZHRoXCJcclxuICAgICAgICAgIFtzdHlsZS5taW5XaWR0aC5weF09XCJjZW50ZXJQaW5uZWRIZWFkZXIuc2Nyb2xsV2lkdGhcIlxyXG4gICAgICAgICAgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIHBzLTIgaC0xMDAgYm9yZGVyLWJlbG93XCJcclxuICAgICAgICAgIFtjbGFzcy5yb3ctc2VsZWN0ZWRdPVwicm93U2VsZWN0ZWRJbmRleGVzLmhhcyhyb3cuX192aXJ0dWFsSW5kZXgpXCJcclxuICAgICAgICAgIFtjbGFzcy5maXJzdC1yb3ctc2VsZWN0ZWRdPVwiZmlyc3RTZWxlY3RlZFJvdyA9PT0gcm93Ll9fdmlydHVhbEluZGV4XCJcclxuICAgICAgICAgIFtjbGFzcy5sYXN0LXJvdy1zZWxlY3RlZF09XCJsYXN0U2VsZWN0ZWRSb3cgPT09IHJvdy5fX3ZpcnR1YWxJbmRleFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWJldHdlZW5cIlxyXG4gICAgICAgICAgICBbc3R5bGUucGFkZGluZ0xlZnQucHhdPVwiZGVwdGggPiAwID8gZGVwdGggKiAzMCA6IDBcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1lLTIgZmlsdGVyLWljb24td3JhcHBlclwiIChjbGljayk9XCJ0b2dnbGVFeHBhbmQocm93KVwiPlxyXG4gICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBhbGlnbi1pdGVtcy1jZW50ZXIgZC1mbGV4XCJcclxuICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXHJcbiAgICAgICAgICAgICAgICAgIHJvdy5pc0V4cGFuZFxyXG4gICAgICAgICAgICAgICAgICAgID8gc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvY2hldnJvbi1kb3duLnN2ZydcclxuICAgICAgICAgICAgICAgICAgICA6IHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2NoZXZyb24tcmlnaHQuc3ZnJ1xyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIDxzdHJvbmcgKGNsaWNrKT1cInRvZ2dsZUV4cGFuZChyb3cpXCIgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiPlxyXG4gICAgICAgICAgICAgIHt7IHJvdy5ncm91cFZhbHVlIH19ICh7eyBjb3VudExlYWZSb3dzKHJvdykgfX0pXHJcbiAgICAgICAgICAgIDwvc3Ryb25nPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgICpuZ0lmPVwic2VjdGlvbiA9PSAncmlnaHQnXCJcclxuICAgICAgICAgIFtzdHlsZS53aWR0aC5weF09XCJyaWdodFBpbm5lZEhlYWRlci5vZmZzZXRXaWR0aFwiXHJcbiAgICAgICAgICBbY2xhc3Mucm93LXNlbGVjdGVkXT1cInJvd1NlbGVjdGVkSW5kZXhlcy5oYXMocm93Ll9fdmlydHVhbEluZGV4KVwiXHJcbiAgICAgICAgICBbY2xhc3MuZmlyc3Qtcm93LXNlbGVjdGVkXT1cImZpcnN0U2VsZWN0ZWRSb3cgPT09IHJvdy5fX3ZpcnR1YWxJbmRleFwiXHJcbiAgICAgICAgICBbY2xhc3MubGFzdC1yb3ctc2VsZWN0ZWRdPVwibGFzdFNlbGVjdGVkUm93ID09PSByb3cuX192aXJ0dWFsSW5kZXhcIlxyXG4gICAgICAgID48L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8IS0tIFJlY3Vyc2l2ZSBDaGlsZHJlbiAtLT5cclxuICAgICAgPGRpdiBjbGFzcz1cImdyb3VwLWNoaWxkcmVuXCIgKm5nSWY9XCJyb3cuaXNFeHBhbmRcIiBbQHNsaWRlVG9nZ2xlXT5cclxuICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAqbmdGb3I9XCJsZXQgY2hpbGQgb2Ygcm93LmNoaWxkcmVuOyBsZXQgaSA9IGluZGV4OyB0cmFja0J5OiB0cmFja0J5SWRcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjaGlsZC5pc0dyb3VwOyBlbHNlIGRhdGFSb3dcIj5cclxuICAgICAgICAgICAgPCEtLSBSZWN1cnNpdmUgY2FsbCBmb3IgbmVzdGVkIGdyb3VwIC0tPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcclxuICAgICAgICAgICAgICAgIGdyb3VwUm93VGVtcGxhdGU7XHJcbiAgICAgICAgICAgICAgICBjb250ZXh0OiB7ICRpbXBsaWNpdDogY2hpbGQsIGRlcHRoOiBkZXB0aCArIDEgfVxyXG4gICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZGF0YVJvdz5cclxuICAgICAgICAgICAgPCEtLSBSZWd1bGFyIGRhdGEgcm93IC0tPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcclxuICAgICAgICAgICAgICAgIHJvd0NlbGw7XHJcbiAgICAgICAgICAgICAgICBjb250ZXh0OiB7XHJcbiAgICAgICAgICAgICAgICAgICRpbXBsaWNpdDogY2hpbGQsXHJcbiAgICAgICAgICAgICAgICAgIGNvbHVtbnM6IGNvbHVtbnMsXHJcbiAgICAgICAgICAgICAgICAgIGlzRXZlbjogaSAlIDIgPT09IDAsXHJcbiAgICAgICAgICAgICAgICAgIGlzT2RkOiBpICUgMiAhPT0gMCxcclxuICAgICAgICAgICAgICAgICAgaXNMZWZ0OiBpc0xlZnRTZWN0aW9uLFxyXG4gICAgICAgICAgICAgICAgICBzZWN0aW9uOiBzZWN0aW9uLFxyXG4gICAgICAgICAgICAgICAgICBpc1RvdGFsUm93OiBpc1RvdGFsUm93XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICA8IS0tIFJlZ3VsYXIgcm93IChub3QgYSBncm91cCkgLS0+XHJcbiAgPG5nLXRlbXBsYXRlICNyZWd1bGFyUm93PlxyXG4gICAgPGRpdlxyXG4gICAgICBjbGFzcz1cImQtZmxleFwiXHJcbiAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwicm93SGVpZ2h0XCJcclxuICAgICAgW3N0eWxlLm1pbkhlaWdodC5weF09XCJyb3dIZWlnaHRcIlxyXG4gICAgICBbc3R5bGUubWF4SGVpZ2h0LnB4XT1cInJvd0hlaWdodFwiXHJcbiAgICA+XHJcbiAgICAgIDxzcGFuXHJcbiAgICAgICAgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXIgY3Vyc29yLXBvaW50ZXIgYm9yZGVyLWJlbG93XCJcclxuICAgICAgICBzdHlsZT1cIm1pbi13aWR0aDogMzBweDsgaGVpZ2h0OiAxMDAlXCJcclxuICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgc2VjdGlvbiA9PSAnY2VudGVyJyAmJiAoZ3JpZFR5cGUgPT09ICdBc3NldHMnIHx8IGdyaWRUeXBlID09PSAnVGFza3MnKVxyXG4gICAgICAgIFwiXHJcbiAgICAgICAgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgJ2JhY2tncm91bmQtY29sb3InOiByb3dTZWxlY3RlZEluZGV4ZXMuaGFzKHJvdy5fX3ZpcnR1YWxJbmRleClcclxuICAgICAgICAgICAgPyBudWxsXHJcbiAgICAgICAgICAgIDogZ2V0QmFja2dyb3VuZENvbG9yKHJvdywgaXNFdmVuLCBzZWN0aW9uKVxyXG4gICAgICAgIH1cIlxyXG4gICAgICAgIFtjbGFzcy5zZWxlY3RlZC1jZWxsXT1cInJvd1NlbGVjdGVkSW5kZXhlcy5oYXMocm93Ll9fdmlydHVhbEluZGV4KVwiXHJcbiAgICAgICAgW2NsYXNzLmZpcnN0LXJvdy1zZWxlY3RlZF09XCJmaXJzdFNlbGVjdGVkUm93ID09PSByb3cuX192aXJ0dWFsSW5kZXhcIlxyXG4gICAgICAgIFtjbGFzcy5sYXN0LXJvdy1zZWxlY3RlZF09XCJsYXN0U2VsZWN0ZWRSb3cgPT09IHJvdy5fX3ZpcnR1YWxJbmRleFwiXHJcbiAgICAgID5cclxuICAgICAgICA8c3BhblxyXG4gICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZURldGFpbFJvd0V4cGFuZChyb3cpXCJcclxuICAgICAgICAgICpuZ0lmPVwicm93Py5kZXRhaWw/LnJlc3VsdD8ubGVuZ3RoIHx8IGdyaWRUeXBlID09PSAnVGFza3MnXCJcclxuICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGZpbHRlci1pY29uLXdyYXBwZXJcIlxyXG4gICAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgICAgaXNEZXRhaWxzRXhwYW5kZWQocm93KVxyXG4gICAgICAgICAgICAgID8gc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvY2hldnJvbi1kb3duLnN2ZydcclxuICAgICAgICAgICAgICA6IHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2NoZXZyb24tcmlnaHQuc3ZnJ1xyXG4gICAgICAgICAgXCJcclxuICAgICAgICA+PC9zcGFuPlxyXG4gICAgICA8L3NwYW4+XHJcbiAgICAgIDxkaXZcclxuICAgICAgICBbc3R5bGUubWluLXdpZHRoLnB4XT1cIlxyXG4gICAgICAgICAgc2VjdGlvbiA9PSAnY2VudGVyJyAmJiBncm91cGVkQ29sdW1ucz8ubGVuZ3RoID8gZ3JvdXBCb3hQYWRkaW5nIDogMFxyXG4gICAgICAgIFwiXHJcbiAgICAgICAgW2NsYXNzLnJvdy1zZWxlY3RlZF09XCJyb3dTZWxlY3RlZEluZGV4ZXMuaGFzKHJvdy5fX3ZpcnR1YWxJbmRleClcIlxyXG4gICAgICAgIFtjbGFzcy5maXJzdC1yb3ctc2VsZWN0ZWRdPVwiZmlyc3RTZWxlY3RlZFJvdyA9PT0gcm93Ll9fdmlydHVhbEluZGV4XCJcclxuICAgICAgICBbY2xhc3MubGFzdC1yb3ctc2VsZWN0ZWRdPVwibGFzdFNlbGVjdGVkUm93ID09PSByb3cuX192aXJ0dWFsSW5kZXhcIlxyXG4gICAgICAgIChjb250ZXh0bWVudSk9XCJvblJpZ2h0Q2xpY2soJGV2ZW50LCByb3cpXCJcclxuICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cInJvd0hlaWdodFwiXHJcbiAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtcm93IGgtMTAwXCJcclxuICAgICAgICBbY2xhc3MuZXZlbi1yb3ddPVwiaXNFdmVuXCJcclxuICAgICAgICBbY2xhc3Mub2RkLXJvd109XCJpc09kZFwiXHJcbiAgICAgICAgW2NsYXNzLmhvdmVyZWQtcm93XT1cImhvdmVyZWRSb3dJZCA9PT0gKHJvdy5faWQgfHwgcm93LmlkKVwiXHJcbiAgICAgICAgKG1vdXNlZW50ZXIpPVwib25Sb3dIb3Zlcihyb3cpXCJcclxuICAgICAgICAobW91c2VsZWF2ZSk9XCJvblJvd0xlYXZlKClcIlxyXG4gICAgICAgIFtuZ1N0eWxlXT1cIntcclxuICAgICAgICAgICdiYWNrZ3JvdW5kLWNvbG9yJzogZ2V0QmFja2dyb3VuZENvbG9yKHJvdywgaXNFdmVuLCBzZWN0aW9uKVxyXG4gICAgICAgIH1cIlxyXG4gICAgICAgIFtzdHlsZS5taW5IZWlnaHQucHhdPVwicm93SGVpZ2h0XCJcclxuICAgICAgICBbc3R5bGUubWF4SGVpZ2h0LnB4XT1cInJvd0hlaWdodFwiXHJcbiAgICAgID48L2Rpdj5cclxuICAgICAgPGRpdlxyXG4gICAgICAgIChjb250ZXh0bWVudSk9XCJvblJpZ2h0Q2xpY2soJGV2ZW50LCByb3cpXCJcclxuICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cInJvd0hlaWdodFwiXHJcbiAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtcm93XCJcclxuICAgICAgICBbY2xhc3MuZXZlbi1yb3ddPVwiaXNFdmVuXCJcclxuICAgICAgICBbY2xhc3Mub2RkLXJvd109XCJpc09kZFwiXHJcbiAgICAgICAgW2NsYXNzLmhvdmVyZWQtcm93XT1cImhvdmVyZWRSb3dJZCA9PT0gKHJvdy5faWQgfHwgcm93LmlkKVwiXHJcbiAgICAgICAgKG1vdXNlZW50ZXIpPVwib25Sb3dIb3Zlcihyb3cpXCJcclxuICAgICAgICAobW91c2VsZWF2ZSk9XCJvblJvd0xlYXZlKClcIlxyXG4gICAgICAgIFtuZ1N0eWxlXT1cIntcclxuICAgICAgICAgICdiYWNrZ3JvdW5kLWNvbG9yJzogZ2V0QmFja2dyb3VuZENvbG9yKHJvdywgaXNFdmVuLCBzZWN0aW9uKVxyXG4gICAgICAgIH1cIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJjaGVja2JveGVzQmFja2dyb3VuZENvbG9yXCJcclxuICAgICAgICAgIGNsYXNzPVwic2VsZWN0LWFsbC1jaGVja2JveC1jZWxsIGp1c3RpZnktY29udGVudC1lbmQgcGUtMiBzLW5vXCJcclxuICAgICAgICAgIFtzdHlsZS53aWR0aC5weF09XCI1NVwiXHJcbiAgICAgICAgICAqbmdJZj1cImlzTGVmdFNlY3Rpb24gJiYgc2hvd1NlcmlhbE51bWJlclwiXHJcbiAgICAgICAgICBbc3R5bGUuY3Vyc29yXT1cIlxyXG4gICAgICAgICAgICAndXJsKCcgK1xyXG4gICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICtcclxuICAgICAgICAgICAgJ2RhdGEtZ3JpZC9pY29ucy9hcnJvdy1yaWdodC5zdmcpLCBhdXRvJ1xyXG4gICAgICAgICAgXCJcclxuICAgICAgICAgIChtb3VzZWRvd24pPVwib25Sb3dNb3VzZURvd24ocm93Ll9fdmlydHVhbEluZGV4LCAkZXZlbnQpXCJcclxuICAgICAgICAgIChtb3VzZW92ZXIpPVwib25Sb3dNb3VzZU92ZXIocm93Ll9fdmlydHVhbEluZGV4LCAkZXZlbnQpXCJcclxuICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCJjaGVja2JveGVzQ29sb3JcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIHt7IGdldFN0YXJ0SW5kZXgoKSArIChyb3cuX192aXJ0dWFsSW5kZXggLSAxKSB9fVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICBjbGFzcz1cImJvcmRlci1iZWxvd1wiXHJcbiAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cIlxyXG4gICAgICAgICAgICByb3dTZWxlY3RlZEluZGV4ZXMuaGFzKHJvdy5fX3ZpcnR1YWxJbmRleClcclxuICAgICAgICAgICAgICA/IHNlbGVjdGVkUm93c0JhY2tncm91bmRDb2xvclxyXG4gICAgICAgICAgICAgIDogY2hlY2tib3hlc0JhY2tncm91bmRDb2xvclxyXG4gICAgICAgICAgXCJcclxuICAgICAgICAgIGNsYXNzPVwic2VsZWN0LWFsbC1jaGVja2JveC1jZWxsXCJcclxuICAgICAgICAgICpuZ0lmPVwiaXNMZWZ0U2VjdGlvbiAmJiBzaG93Q2hlY2tib3hlc1wiXHJcbiAgICAgICAgICBbY2xhc3MubGVmdC1zZWxlY3Rpb24tYm9yZGVyXT1cIlxyXG4gICAgICAgICAgICByb3dTZWxlY3RlZEluZGV4ZXMuaGFzKHJvdy5fX3ZpcnR1YWxJbmRleClcclxuICAgICAgICAgIFwiXHJcbiAgICAgICAgICBbY2xhc3MuZmlyc3Qtcm93LXNlbGVjdGVkXT1cImZpcnN0U2VsZWN0ZWRSb3cgPT09IHJvdy5fX3ZpcnR1YWxJbmRleFwiXHJcbiAgICAgICAgICBbY2xhc3MubGFzdC1yb3ctc2VsZWN0ZWRdPVwibGFzdFNlbGVjdGVkUm93ID09PSByb3cuX192aXJ0dWFsSW5kZXhcIlxyXG4gICAgICAgICAgW3N0eWxlLm1pbkhlaWdodC5weF09XCJyb3dIZWlnaHQgLSAxXCJcclxuICAgICAgICAgIFtzdHlsZS5tYXhIZWlnaHQucHhdPVwicm93SGVpZ2h0XCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgKm5nSWY9XCJoYXNBbnlWaXNpYmxlQ29sdW1uXCJcclxuICAgICAgICAgICAgIHN0eWxlPVwid2lkdGg6IDE2cHg7IGhlaWdodDogMTZweFwiXHJcbiAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgICAgIFtjaGVja2VkXT1cImlzUm93U2VsZWN0ZWQocm93KVwiXHJcbiAgICAgICAgICAgIChjaGFuZ2UpPVwidG9nZ2xlUm93U2VsZWN0aW9uKHJvdylcIlxyXG4gICAgICAgICAgLz5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPCEtLSBSZW5kZXIgYWxsIGNvbHVtbnMgLS0+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgKm5nRm9yPVwiXHJcbiAgICAgICAgICAgIGxldCBjb2wgb2YgY29sdW1ucztcclxuICAgICAgICAgICAgdHJhY2tCeTogdHJhY2tCeUZpZWxkO1xyXG4gICAgICAgICAgICBsZXQgY29sSW5kZXggPSBpbmRleFxyXG4gICAgICAgICAgXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sLmNoaWxkcmVuPy5sZW5ndGggPiAwOyBlbHNlIGZsYXRDb2x1bW5cIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICpuZ0Zvcj1cIlxyXG4gICAgICAgICAgICAgICAgbGV0IGNoaWxkIG9mIGNvbC5jaGlsZHJlbjtcclxuICAgICAgICAgICAgICAgIHRyYWNrQnk6IHRyYWNrQnlGaWVsZDtcclxuICAgICAgICAgICAgICAgIGxldCBzdWJDb2xJbmRleCA9IGluZGV4XHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjaGlsZD8uaXNfdmlzaWJsZSAmJiAhY2hpbGQ/LmlzUm93R3JvdXBlZFwiPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxyXG4gICAgICAgICAgICAgICAgICAgIGNlbGxUZW1wbGF0ZTtcclxuICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBjb2w6IGNoaWxkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgcm93OiByb3csXHJcbiAgICAgICAgICAgICAgICAgICAgICByb3dJbmRleDogcm93SW5kZXgsXHJcbiAgICAgICAgICAgICAgICAgICAgICBjb2xJbmRleDogY29sSW5kZXgsXHJcbiAgICAgICAgICAgICAgICAgICAgICBzdWJDb2xJbmRleDogc3ViQ29sSW5kZXgsXHJcbiAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uOiBzZWN0aW9uLFxyXG4gICAgICAgICAgICAgICAgICAgICAgaXNUb3RhbFJvdzogaXNUb3RhbFJvd1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICA8bmctdGVtcGxhdGUgI2ZsYXRDb2x1bW4+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2w/LmlzX3Zpc2libGUgJiYgIWNvbD8uaXNSb3dHcm91cGVkXCI+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcclxuICAgICAgICAgICAgICAgICAgY2VsbFRlbXBsYXRlO1xyXG4gICAgICAgICAgICAgICAgICBjb250ZXh0OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29sOiBjb2wsXHJcbiAgICAgICAgICAgICAgICAgICAgcm93OiByb3csXHJcbiAgICAgICAgICAgICAgICAgICAgcm93SW5kZXg6IHJvd0luZGV4LFxyXG4gICAgICAgICAgICAgICAgICAgIGNvbEluZGV4OiBjb2xJbmRleCxcclxuICAgICAgICAgICAgICAgICAgICBzdWJDb2xJbmRleDogbnVsbCxcclxuICAgICAgICAgICAgICAgICAgICBzZWN0aW9uOiBzZWN0aW9uLFxyXG4gICAgICAgICAgICAgICAgICAgIGlzVG90YWxSb3c6IGlzVG90YWxSb3dcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2XHJcbiAgICAgIFtAc2xpZGVUb2dnbGVdXHJcbiAgICAgICpuZ0lmPVwic2VjdGlvbiA9PT0gJ2xlZnQnICYmIGlzRGV0YWlsc0V4cGFuZGVkKHJvdylcIlxyXG4gICAgICBjbGFzcz1cImFjY29yZGlvbi1kZXRhaWxzXCJcclxuICAgICAgc3R5bGU9XCJtYXgtaGVpZ2h0OiAzNTBweDsgb3ZlcmZsb3c6IGhpZGRlblwiXHJcbiAgICAgIFtzdHlsZS5tYXhIZWlnaHQucHhdPVwiaGFzSG9yaXpvbnRhbFNjcm9sbCA/IDMzOSA6IDM0MVwiXHJcbiAgICA+XHJcbiAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxyXG4gICAgICAgICAgbGVmdFJpZ2h0TmVzdGVkUGxhY2Vob2xkZXI7XHJcbiAgICAgICAgICBjb250ZXh0OiB7ICRpbXBsaWNpdDogcm93IH1cclxuICAgICAgICBcIlxyXG4gICAgICA+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdlxyXG4gICAgICBbQHNsaWRlVG9nZ2xlXVxyXG4gICAgICAqbmdJZj1cInNlY3Rpb24gPT09ICdjZW50ZXInICYmIGlzRGV0YWlsc0V4cGFuZGVkKHJvdylcIlxyXG4gICAgICBjbGFzcz1cImFjY29yZGlvbi1kZXRhaWxzIGNlbnRlci1zZWN0aW9uXCJcclxuICAgICAgc3R5bGU9XCJcclxuICAgICAgICBtYXgtaGVpZ2h0OiAzNTBweDtcclxuICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47XHJcbiAgICAgICAgb3ZlcmZsb3cteDogYXV0bztcclxuICAgICAgICBzY3JvbGxiYXItd2lkdGg6IHRoaW47XHJcbiAgICAgIFwiXHJcbiAgICAgICNuZXN0ZWRUYWJsZVxyXG4gICAgICBbc3R5bGUud2lkdGhdPVwiXHJcbiAgICAgICAgaGFzUmlnaHRQaW5uZWRDb2x1bW5zXHJcbiAgICAgICAgICA/ICcxMDAlJ1xyXG4gICAgICAgICAgOiBoYXNWZXJ0aWNhbFNjcm9sbFxyXG4gICAgICAgICAgPyAnY2FsYygxMDAlIC0gMTJweCknXHJcbiAgICAgICAgICA6ICcxMDAlJ1xyXG4gICAgICBcIlxyXG4gICAgPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZ3JpZFR5cGUgPT0gJ0Fzc2V0cydcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIm5lc3RlZFRhYmxlVGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiByb3cgfVwiXHJcbiAgICAgICAgPjwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImdyaWRUeXBlID09ICdUYXNrcydcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxyXG4gICAgICAgICAgICB0YXNrTWFuYWdlbWVudFRlbXBsYXRlO1xyXG4gICAgICAgICAgICBjb250ZXh0OiB7IHRhc2tEZXRhaWxzOiByb3cgfVxyXG4gICAgICAgICAgXCJcclxuICAgICAgICA+PC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdlxyXG4gICAgICBbQHNsaWRlVG9nZ2xlXVxyXG4gICAgICAqbmdJZj1cInNlY3Rpb24gPT09ICdyaWdodCcgJiYgaXNEZXRhaWxzRXhwYW5kZWQocm93KVwiXHJcbiAgICAgIGNsYXNzPVwiYWNjb3JkaW9uLWRldGFpbHNcIlxyXG4gICAgICBzdHlsZT1cIm1heC1oZWlnaHQ6IDM1MHB4OyBvdmVyZmxvdzogaGlkZGVuXCJcclxuICAgICAgW3N0eWxlLm1heEhlaWdodC5weF09XCJoYXNIb3Jpem9udGFsU2Nyb2xsID8gMzM5IDogMzQxXCJcclxuICAgID5cclxuICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXHJcbiAgICAgICAgICBsZWZ0UmlnaHROZXN0ZWRQbGFjZWhvbGRlcjtcclxuICAgICAgICAgIGNvbnRleHQ6IHsgJGltcGxpY2l0OiByb3cgfVxyXG4gICAgICAgIFwiXHJcbiAgICAgID5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L2Rpdj5cclxuICA8L25nLXRlbXBsYXRlPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPCEtLSBBY3R1YWwgQ2VsbCBpcyBIZXJlIC0tPlxyXG48bmctdGVtcGxhdGVcclxuICAjY2VsbFRlbXBsYXRlXHJcbiAgbGV0LWNvbD1cImNvbFwiXHJcbiAgbGV0LXJvdz1cInJvd1wiXHJcbiAgbGV0LXNlY3Rpb249XCJzZWN0aW9uXCJcclxuICBsZXQtc3ViQ29sSW5kZXg9XCJzdWJDb2xJbmRleFwiXHJcbiAgbGV0LXJvd0luZGV4PVwicm93SW5kZXhcIlxyXG4gIGxldC1jb2xJbmRleD1cImNvbEluZGV4XCJcclxuICBsZXQtaXNUb3RhbFJvdz1cImlzVG90YWxSb3dcIlxyXG4+XHJcbiAgPGRpdlxyXG4gICAgI2NlbGxDb250YWluZXJcclxuICAgIChjbGljayk9XCJcclxuICAgICAgZWRpdGluZ0tleSA9ICcnOyBzZXRBY3RpdmVDZWxsKHJvdywgY29sKTsgY29sbGFwc2VBbGxFeHBhbmRlZENlbGxzKClcclxuICAgIFwiXHJcbiAgICBbc3R5bGUuZm9udFdlaWdodF09XCJib2R5Rm9udFdlaWdodFwiXHJcbiAgICBbY2xhc3MuYm9yZGVyLXJpZ2h0XT1cInNob3dWZXJ0aWNhbEJvcmRlclwiXHJcbiAgICBjbGFzcz1cImNlbGwgb3ZlcmZsb3ctdmlzaWJsZSBwb3NpdGlvbi1yZWxhdGl2ZSBkYXRhLWdyaWQtY2VsbFwiXHJcbiAgICBbYXR0ci5maWVsZF09XCJjb2wuZmllbGRcIlxyXG4gICAgW3N0eWxlLndpZHRoLnB4XT1cImNvbC53aWR0aFwiXHJcbiAgICBbc3R5bGUubWluLXdpZHRoLnB4XT1cImNvbC53aWR0aFwiXHJcbiAgICBbc3R5bGUuZm9udFNpemUucHhdPVwiYm9keVRleHRGb250c1NpemVcIlxyXG4gICAgW3N0eWxlLm1pbkhlaWdodC5weF09XCJyb3dIZWlnaHRcIlxyXG4gICAgW3N0eWxlLm1heEhlaWdodC5weF09XCJyb3dIZWlnaHRcIlxyXG4gICAgW2NsYXNzLmFjdGl2ZS1jZWxsXT1cIlxyXG4gICAgICBpc0FjdGl2ZUNlbGwocm93LCBjb2wpICYmICFpc0VkaXRpbmcocm93LCBjb2wpICYmIHNlbGVjdGVkS2V5cy5zaXplID09IDFcclxuICAgIFwiXHJcbiAgICAoZGJsY2xpY2spPVwiXHJcbiAgICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgIGVuYWJsZUVkaXQocm93LCBjb2wsIGZhbHNlLCBjZWxsQ29udGFpbmVyKVxyXG4gICAgXCJcclxuICAgIFtjbGFzcy5yb3ctc2VsZWN0ZWRdPVwicm93U2VsZWN0ZWRJbmRleGVzLmhhcyhyb3cuX192aXJ0dWFsSW5kZXgpXCJcclxuICAgIFtjbGFzcy5maXJzdC1yb3ctc2VsZWN0ZWRdPVwiZmlyc3RTZWxlY3RlZFJvdyA9PT0gcm93Py5fX3ZpcnR1YWxJbmRleFwiXHJcbiAgICBbY2xhc3MubGFzdC1yb3ctc2VsZWN0ZWRdPVwibGFzdFNlbGVjdGVkUm93ID09PSByb3c/Ll9fdmlydHVhbEluZGV4XCJcclxuICAgIHRhYmluZGV4PVwiLTFcIlxyXG4gICAgKGtleWRvd24uZW50ZXIpPVwiJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7IGVuYWJsZUVkaXQocm93LCBjb2wpXCJcclxuICAgIChtb3VzZWRvd24pPVwiXHJcbiAgICAgIHN0YXJ0U2VsZWN0aW9uKFxyXG4gICAgICAgIHJvdy5fX3ZpcnR1YWxJbmRleCxcclxuICAgICAgICBjb2xJbmRleCxcclxuICAgICAgICBzdWJDb2xJbmRleCA/PyAwLFxyXG4gICAgICAgIGNvbC5maWVsZCxcclxuICAgICAgICAkZXZlbnQsXHJcbiAgICAgICAgc2VjdGlvblxyXG4gICAgICApXHJcbiAgICBcIlxyXG4gICAgKG1vdXNlZW50ZXIpPVwiXHJcbiAgICAgIGV4dGVuZFNlbGVjdGlvbihcclxuICAgICAgICByb3cuX192aXJ0dWFsSW5kZXgsXHJcbiAgICAgICAgY29sSW5kZXgsXHJcbiAgICAgICAgc3ViQ29sSW5kZXggPz8gMCxcclxuICAgICAgICBjb2wuZmllbGQsXHJcbiAgICAgICAgJGV2ZW50LFxyXG4gICAgICAgIHNlY3Rpb25cclxuICAgICAgKVxyXG4gICAgXCJcclxuICAgIChtb3VzZXVwKT1cImVuZFNlbGVjdGlvbigpXCJcclxuICAgIFtjbGFzcy5zZWxlY3RlZC1jZWxsXT1cIlxyXG4gICAgICBpc1NlbGVjdGVkKFxyXG4gICAgICAgIHJvdy5fX3ZpcnR1YWxJbmRleCxcclxuICAgICAgICBjb2xJbmRleCxcclxuICAgICAgICBzdWJDb2xJbmRleCA/PyAwLFxyXG4gICAgICAgIGNvbC5maWVsZCxcclxuICAgICAgICBzZWN0aW9uXHJcbiAgICAgIClcclxuICAgIFwiXHJcbiAgICBbY2xhc3MudG9wLWJvcmRlcl09XCJcclxuICAgICAgaXNUb3BCb3JkZXIocm93Ll9fdmlydHVhbEluZGV4LCBjb2xJbmRleCwgc3ViQ29sSW5kZXgsIHNlY3Rpb24pXHJcbiAgICBcIlxyXG4gICAgW2NsYXNzLmJvdHRvbS1ib3JkZXJdPVwiXHJcbiAgICAgIGlzQm90dG9tQm9yZGVyKHJvdy5fX3ZpcnR1YWxJbmRleCwgY29sSW5kZXgsIHN1YkNvbEluZGV4LCBzZWN0aW9uKVxyXG4gICAgXCJcclxuICAgIFtjbGFzcy5sZWZ0LWJvcmRlcl09XCJcclxuICAgICAgaXNMZWZ0Qm9yZGVyKHJvdy5fX3ZpcnR1YWxJbmRleCwgY29sSW5kZXgsIHN1YkNvbEluZGV4LCBzZWN0aW9uKVxyXG4gICAgXCJcclxuICAgIFtjbGFzcy5yaWdodC1ib3JkZXJdPVwiXHJcbiAgICAgIGlzUmlnaHRCb3JkZXIocm93Ll9fdmlydHVhbEluZGV4LCBjb2xJbmRleCwgc3ViQ29sSW5kZXgsIHNlY3Rpb24pXHJcbiAgICBcIlxyXG4gICAgW2NsYXNzLnRvcC1sZWZ0LWNvcm5lcl09XCJcclxuICAgICAgaXNUb3BMZWZ0Q29ybmVyKHJvdy5fX3ZpcnR1YWxJbmRleCwgY29sSW5kZXgsIHN1YkNvbEluZGV4LCBzZWN0aW9uKVxyXG4gICAgXCJcclxuICAgIFtjbGFzcy50b3AtcmlnaHQtY29ybmVyXT1cIlxyXG4gICAgICBpc1RvcFJpZ2h0Q29ybmVyKHJvdy5fX3ZpcnR1YWxJbmRleCwgY29sSW5kZXgsIHN1YkNvbEluZGV4LCBzZWN0aW9uKVxyXG4gICAgXCJcclxuICAgIFtjbGFzcy5ib3R0b20tbGVmdC1jb3JuZXJdPVwiXHJcbiAgICAgIGlzQm90dG9tTGVmdENvcm5lcihyb3cuX192aXJ0dWFsSW5kZXgsIGNvbEluZGV4LCBzdWJDb2xJbmRleCwgc2VjdGlvbilcclxuICAgIFwiXHJcbiAgICBbY2xhc3MuYm90dG9tLXJpZ2h0LWNvcm5lcl09XCJcclxuICAgICAgaXNCb3R0b21SaWdodENvcm5lcihyb3cuX192aXJ0dWFsSW5kZXgsIGNvbEluZGV4LCBzdWJDb2xJbmRleCwgc2VjdGlvbilcclxuICAgIFwiXHJcbiAgPlxyXG4gICAgPCEtLSAgKG1vdXNlZG93bik9XCJzdGFydFNlbGVjdGlvbihyb3cuX192aXJ0dWFsSW5kZXgsIGNvbEluZGV4LCBzdWJDb2xJbmRleCA/PyAwLCBjb2wuZmllbGQsICRldmVudClcIlxyXG4gIChtb3VzZWVudGVyKT1cImV4dGVuZFNlbGVjdGlvbihyb3cuX192aXJ0dWFsSW5kZXgsIGNvbEluZGV4LCBzdWJDb2xJbmRleCA/PyAwLCBjb2wuZmllbGQsICRldmVudClcIlxyXG4gIChtb3VzZXVwKT1cImVuZFNlbGVjdGlvbigpXCJcclxuICBbY2xhc3Muc2VsZWN0ZWQtY2VsbF09XCJpc1NlbGVjdGVkKHJvdy5fX3ZpcnR1YWxJbmRleCwgY29sSW5kZXgsICBzdWJDb2xJbmRleCA/PyAwLCBjb2wuZmllbGQpXCIgLS0+XHJcbiAgICA8ZGl2XHJcbiAgICAgIGNsYXNzPVwidGFibGUtY2VsbFwiXHJcbiAgICAgIFtjbGFzcy5hY3RpdmUtZm9yLWVkaXRpbmddPVwiXHJcbiAgICAgICAgaXNFZGl0aW5nKHJvdywgY29sKSAmJlxyXG4gICAgICAgIChnZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZCk/Lmxlbmd0aCA9PT0gdW5kZWZpbmVkIHx8XHJcbiAgICAgICAgICBnZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZCk/Lmxlbmd0aCA8PSA1MClcclxuICAgICAgXCJcclxuICAgID5cclxuICAgICAgPGRpdlxyXG4gICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxyXG4gICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICBpc0VkaXRpbmcocm93LCBjb2wpICYmXHJcbiAgICAgICAgICAgIChnZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZCk/Lmxlbmd0aCA9PT0gdW5kZWZpbmVkIHx8XHJcbiAgICAgICAgICAgICAgKGdldE5lc3RlZFZhbHVlKHJvdywgY29sLmZpZWxkKT8ubGVuZ3RoIDw9IDUwICYmXHJcbiAgICAgICAgICAgICAgICAhZXhwYW5kZWRDZWxscy5zaXplKSk7XHJcbiAgICAgICAgICBlbHNlIHZpZXdNb2RlXHJcbiAgICAgICAgXCJcclxuICAgICAgPlxyXG5cclxuICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2wuY2VsbEVkaXRvcjsgZWxzZSBidWlsdEluRWRpdG9yc1wiPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgIFtjZWxsRWRpdG9yXT1cImNvbC5jZWxsRWRpdG9yXCJcclxuICAgICAgICAgICAgICAgIFtyb3dEYXRhXT1cInJvd1wiXHJcbiAgICAgICAgICAgICAgICBbY29sRGF0YV09XCJjb2xcIlxyXG4gICAgICAgICAgICAgICAgW2NlbGxWYWx1ZV09XCJnZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZClcIlxyXG4gICAgICAgICAgICAgICAgKGVkaXRvckV2ZW50KT1cImZpbmlzaEVkaXQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgPG5nLXRlbXBsYXRlICNidWlsdEluRWRpdG9ycz5cclxuICAgICAgICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJjb2wudHlwZVwiPlxyXG4gICAgICAgICAgPCEtLSBUZXh0IElucHV0IC0tPlxyXG4gICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwicm93SGVpZ2h0IC0gMTBcIlxyXG4gICAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ2lucHV0J1wiXHJcbiAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJyb3dbY29sLmZpZWxkXVwiXHJcbiAgICAgICAgICAgIChibHVyKT1cImRpc2FibGVFZGl0KHJvdywgY29sKVwiXHJcbiAgICAgICAgICAgIGF1dG9mb2N1c1xyXG4gICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21cIlxyXG4gICAgICAgICAgICAobW91c2Vkb3duKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXHJcbiAgICAgICAgICAvPlxyXG5cclxuICAgICAgICAgIDwhLS0gTnVtYmVyIElucHV0IC0tPlxyXG4gICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwicm93SGVpZ2h0IC0gOFwiXHJcbiAgICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCInbnVtYmVyJ1wiXHJcbiAgICAgICAgICAgICNudW1iZXJJbnB1dD1cIm5nTW9kZWxcIlxyXG4gICAgICAgICAgICAjbnVtYmVyUmVmXHJcbiAgICAgICAgICAgIChrZXlwcmVzcyk9XCJhbGxvd09ubHlOdW1iZXJzKCRldmVudClcIlxyXG4gICAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcclxuICAgICAgICAgICAgcmVxdWlyZWRcclxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJyb3dbY29sLmZpZWxkXVwiXHJcbiAgICAgICAgICAgIChibHVyKT1cImRpc2FibGVFZGl0KHJvdywgY29sKVwiXHJcbiAgICAgICAgICAgIGF1dG9mb2N1c1xyXG4gICAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJudW1iZXJSZWYuYmx1cigpXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtXCJcclxuICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xyXG4gICAgICAgICAgICAgICdpcy1pbnZhbGlkJzogbnVtYmVySW5wdXQuaW52YWxpZFxyXG4gICAgICAgICAgICB9XCJcclxuICAgICAgICAgICAgKG1vdXNlZG93bik9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxyXG4gICAgICAgICAgLz5cclxuXHJcbiAgICAgICAgICA8IS0tIERhdGUgSW5wdXQgLS0+XHJcbiAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJyb3dIZWlnaHQgLSA4XCJcclxuICAgICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIidkYXRlJ1wiXHJcbiAgICAgICAgICAgIHR5cGU9XCJkYXRlXCJcclxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJyb3dbY29sLmZpZWxkXVwiXHJcbiAgICAgICAgICAgIChibHVyKT1cImRpc2FibGVFZGl0KHJvdywgY29sKVwiXHJcbiAgICAgICAgICAgIGF1dG9mb2N1c1xyXG4gICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21cIlxyXG4gICAgICAgICAgICAjZGF0ZUlucHV0PVwibmdNb2RlbFwiXHJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcclxuICAgICAgICAgICAgICAnaXMtaW52YWxpZCc6IGRhdGVJbnB1dC5pbnZhbGlkXHJcbiAgICAgICAgICAgIH1cIlxyXG4gICAgICAgICAgICAobW91c2Vkb3duKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXHJcbiAgICAgICAgICAvPlxyXG5cclxuICAgICAgICAgIDwhLS0gRHJvcGRvd24gLS0+XHJcbiAgICAgICAgICA8IS0tIG5nLXNlbGVjdCBsaWtlIGRyb3Bkb3duIC0tPlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ2Ryb3Bkb3duJ1wiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiZHJvcGRvd24gdy0xMDBcIlxyXG4gICAgICAgICAgICAoYmx1cik9XCJkaXNhYmxlRWRpdChyb3csIGNvbClcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8IS0tIFRyaWdnZXIgLS0+XHJcbiAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tc2VsZWN0IGZvcm0tc2VsZWN0LXNtIHRleHQtc3RhcnQgdy0xMDAgdGV4dC1lbGxpcHNpc1wiXHJcbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgZGF0YS1icy10b2dnbGU9XCJkcm9wZG93blwiXHJcbiAgICAgICAgICAgICAgYXJpYS1leHBhbmRlZD1cImZhbHNlXCJcclxuICAgICAgICAgICAgICBbc3R5bGUubWluSGVpZ2h0LnB4XT1cInJvd0hlaWdodCAtIDEwXCJcclxuICAgICAgICAgICAgICBkYXRhLWJzLWRpc3BsYXk9XCJzdGF0aWNcIlxyXG4gICAgICAgICAgICAgIChtb3VzZWRvd24pPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICB7e1xyXG4gICAgICAgICAgICAgICAgICBnZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZCk/LnZhbHVlIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgZ2V0TmVzdGVkVmFsdWUocm93LCBjb2wuZmllbGQpPy5uYW1lIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgZ2V0TmVzdGVkVmFsdWUocm93LCBjb2wuZmllbGQpXHJcbiAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjcGxhY2Vob2xkZXI+IFNlbGVjdCBvcHRpb25zLi4uIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG5cclxuICAgICAgICAgICAgPCEtLSBNZW51IC0tPlxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJkcm9wZG93bi1tZW51IHctMTAwIHAtMCBjZWxsLWVkaXRpbmctZHJvcGRvd24tbWVudSByb3VuZGVkLTNcIlxyXG4gICAgICAgICAgICAgIFtjbGFzcy5zaG93XT1cImlzRWRpdGluZyhyb3csIGNvbClcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPCEtLSBTZWFyY2ggLS0+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB4LTIgcHktMSBlZGl0aW5nLWRyb3Bkb3duLXNlYXJjaC1pbnB1dFwiICpuZ0lmPVwiY29sPy5jb2x1bW5fZHJvcGRvd25fdmFsdWU/Lmxlbmd0aCA+IDVcIj5cclxuICAgICAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbVwiXHJcbiAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VhcmNoLi4uXCJcclxuICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJlZGl0aW5Ecm9wZG93blNlYXJjaFwiXHJcbiAgICAgICAgICAgICAgICAgIChtb3VzZWRvd24pPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcclxuICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGNkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydCBcclxuICAgICAgICAgICAgICAgICAgICBpdGVtU2l6ZT1cIjM1XCIgXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkcm9wZG93bi12aWV3cG9ydFwiXHJcbiAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJoZWlnaHQ6IDEyMHB4XCJcclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICBbY2xhc3Muc2VsZWN0ZWRdPVwiZ2V0TmVzdGVkVmFsdWUocm93LCBjb2wuZmllbGQpID09IG9wdGlvbj8udmFsdWUgfHwgZ2V0TmVzdGVkVmFsdWUocm93LCBjb2wuZmllbGQpID09IG9wdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInB4LTIgcHktMSBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGRyb3Bkb3duLWl0ZW1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKmNka1ZpcnR1YWxGb3I9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG9wdGlvbiBvZiBjb2wuY29sdW1uX2Ryb3Bkb3duX3ZhbHVlIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgZmlsdGVyIDogZWRpdGluRHJvcGRvd25TZWFyY2ggOiAndmFsdWUnXHJcbiAgICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNldE5lc3RlZFZhbHVlKHJvdywgY29sLCBvcHRpb24sIHRydWUpOyBlZGl0aW5nS2V5ID0gbnVsbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGxhYmVsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWwgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBtYi0wIGN1cnNvci1wb2ludGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcl09XCJjb2wuZmllbGQgKyAnLScgKyAob3B0aW9uLnZhbHVlIHx8IG9wdGlvbilcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBvcHRpb24udmFsdWUgfHwgb3B0aW9uIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9jZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnQ+XHJcblxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ2VtYWlsJ1wiXHJcbiAgICAgICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwicm93SGVpZ2h0IC0gMTBcIlxyXG4gICAgICAgICAgICBbc3R5bGUubWF4SGVpZ2h0LnB4XT1cInJvd0hlaWdodCAtIDEwXCJcclxuICAgICAgICAgICAgI2VtYWlsTW9kZWw9XCJuZ01vZGVsXCJcclxuICAgICAgICAgICAgI2VtYWlsSW5wdXRcclxuICAgICAgICAgICAgdHlwZT1cImVtYWlsXCJcclxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJyb3dbY29sLmZpZWxkXVwiXHJcbiAgICAgICAgICAgIG5hbWU9XCJ7eyBjb2wuZmllbGQgfX1cIlxyXG4gICAgICAgICAgICByZXF1aXJlZFxyXG4gICAgICAgICAgICBwYXR0ZXJuPVwiXlthLXpBLVowLTkuXyUrLV0rQFthLXpBLVowLTkuLV0rXFwuW2EtekEtWl17Mix9JFwiXHJcbiAgICAgICAgICAgIChibHVyKT1cImRpc2FibGVFZGl0KHJvdywgY29sLCBlbWFpbE1vZGVsKVwiXHJcbiAgICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cIlxyXG4gICAgICAgICAgICAgIGVtYWlsTW9kZWwuY29udHJvbC5tYXJrQXNUb3VjaGVkKCk7IGVtYWlsSW5wdXQuYmx1cigpXHJcbiAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgIGF1dG9mb2N1c1xyXG4gICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21cIlxyXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7XHJcbiAgICAgICAgICAgICAgJ2lzLWludmFsaWQnOiBlbWFpbE1vZGVsLmludmFsaWRcclxuICAgICAgICAgICAgfVwiXHJcbiAgICAgICAgICAgIChtb3VzZWRvd24pPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcclxuICAgICAgICAgIC8+XHJcbiAgICAgICAgICA8IS0tIERlZmF1bHQgZmFsbGJhY2sgLS0+XHJcbiAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgKm5nU3dpdGNoRGVmYXVsdFxyXG4gICAgICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cInJvd0hlaWdodCAtIDEwXCJcclxuICAgICAgICAgICAgW3N0eWxlLm1heEhlaWdodC5weF09XCJyb3dIZWlnaHQgLSAxMFwiXHJcbiAgICAgICAgICAgICN0ZXh0TW9kZWw9XCJuZ01vZGVsXCJcclxuICAgICAgICAgICAgI3RleHRJbnB1dFxyXG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwicm93W2NvbC5maWVsZF1cIlxyXG4gICAgICAgICAgICBuYW1lPVwie3sgY29sLmZpZWxkIH19XCJcclxuICAgICAgICAgICAgcmVxdWlyZWRcclxuICAgICAgICAgICAgKGJsdXIpPVwiZGlzYWJsZUVkaXQocm93LCBjb2wsIHRleHRNb2RlbClcIlxyXG4gICAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJcclxuICAgICAgICAgICAgICB0ZXh0TW9kZWwuY29udHJvbC5tYXJrQXNUb3VjaGVkKCk7IHRleHRJbnB1dC5ibHVyKClcclxuICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgYXV0b2ZvY3VzXHJcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbVwiXHJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcclxuICAgICAgICAgICAgICAnaXMtaW52YWxpZCc6IHRleHRNb2RlbC5pbnZhbGlkXHJcbiAgICAgICAgICAgIH1cIlxyXG4gICAgICAgICAgICAobW91c2Vkb3duKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXHJcbiAgICAgICAgICAvPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8IS0tIERpc3BsYXkgbW9kZSAtLT5cclxuICAgICAgPG5nLXRlbXBsYXRlICN2aWV3TW9kZT5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXIgdy0xMDAgb3ZlcmZsb3ctaGlkZGVuXCJcclxuICAgICAgICAgIFtuZ0NsYXNzXT1cImdldENlbGxDbGFzc2VzKGNvbCwgZ2V0TmVzdGVkVmFsdWUocm93LCBjb2wuZmllbGQpKVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPCEtLSBGaWVsZCBpY29uIChmb3IgVGFza3MgZ3JpZCkgLS0+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICpuZ0lmPVwiZ3JpZFR5cGUgPT09ICdUYXNrcycgJiYgaWNvbk1hcFtjb2wuZmllbGRdICYmICFpc1RvdGFsUm93XCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICBjbGFzcz1cImN1cnNvci1wb2ludGVyIG1lLTJcIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCIkZXZlbnQucHJldmVudERlZmF1bHQoKTsgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcclxuICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cImljb25NYXBbY29sLmZpZWxkXShyb3csIGNvbClcIlxyXG4gICAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgPCEtLSDinIUgQ3VzdG9tIGNlbGwgcmVuZGVyZXIgc3VwcG9ydCAtLT5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2wuY2VsbFJlbmRlcmVyOyBlbHNlIGRlZmF1bHRDZWxsXCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICBbY2VsbFJlbmRlckluaXRdPVwiY29sLmNlbGxSZW5kZXJlclwiXHJcbiAgICAgICAgICAgICAgW3Jvd0RhdGFdPVwicm93XCJcclxuICAgICAgICAgICAgICBbY29sRGF0YV09XCJjb2xcIlxyXG4gICAgICAgICAgICAgIFtjZWxsVmFsdWVdPVwiZ2V0TmVzdGVkVmFsdWUocm93LCBjb2w/LmZpZWxkKVwiXHJcbiAgICAgICAgICAgICAgKGNlbGxFdmVudCk9XCJvbkNlbGxFdmVudCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgIDwhLS0g8J+nviBEZWZhdWx0IHRleHQtYmFzZWQgY2VsbCByZW5kZXJpbmcgLS0+XHJcbiAgICAgICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRDZWxsPlxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgI2NlbGxUZXh0XHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LWVsbGlwc2lzIGZsZXgtZ3Jvdy0xXCJcclxuICAgICAgICAgICAgICBbdGl0bGVdPVwiZ2V0Q2VsbFRpdGxlKHJvdywgY29sKVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8IS0tIE5vcm1hbCBjZWxsIC0tPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgICAgIGNvbC50eXBlICE9PSAnaW1hZ2UnICYmXHJcbiAgICAgICAgICAgICAgICAgIGNvbC5maWVsZCAhPSAnaW1hZ2UnICYmXHJcbiAgICAgICAgICAgICAgICAgIGNvbC5maWVsZCAhPSAnaW52b2ljZS5pbnZvaWNlX2ltYWdlJyAmJlxyXG4gICAgICAgICAgICAgICAgICAhaXNUb3RhbFJvd1xyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sLmlzX2Ftb3VudFwiPnt7XHJcbiAgICAgICAgICAgICAgICAgIGN1cnJlbmN5U3ltYm9sXHJcbiAgICAgICAgICAgICAgICB9fTwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAge3tnZXRDZWxsVGl0bGUocm93LCBjb2wpfX1cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgPCEtLSBUb3RhbCByb3cgLS0+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzVG90YWxSb3dcIj5cclxuICAgICAgICAgICAgICAgIHt7IGdldFRvdGFsQW1vdW50KGNvbCkgfX1cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgPCEtLSBJbnZvaWNlIEltYWdlIC0tPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2wuZmllbGQgPT0gJ2ludm9pY2UuaW52b2ljZV9pbWFnZSdcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyB6b29tOiAwLjdcIj5cclxuICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICB0aXRsZT1cInt7IGdldE5lc3RlZFZhbHVlKHJvdywgY29sLmZpZWxkKSB8fCAnQXR0YWNobWVudCcgfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJkb3dubG9hZEF0dGNobWVudChnZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZCkpXCJcclxuICAgICAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArXHJcbiAgICAgICAgICAgICAgICAgICAgICAnZGF0YS1ncmlkL2RvY3VtZW50LWljb25zLycgK1xyXG4gICAgICAgICAgICAgICAgICAgICAgZ2V0RXh0ZW50aW9uKGdldE5lc3RlZFZhbHVlKHJvdywgY29sLmZpZWxkKSkgK1xyXG4gICAgICAgICAgICAgICAgICAgICAgJy5zdmcnXHJcbiAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICA8IS0tIEltYWdlIGNlbGwgLS0+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbC50eXBlID09ICdpbWFnZScgJiYgIWlzVG90YWxSb3dcIj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcclxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0SW1hZ2VQbGFjZWhvbGRlcjtcclxuICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB7IHJvdzogcm93LCBjb2w6IGNvbCB9XHJcbiAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICAgICghY29sPy5jZWxsUmVuZGVyZXIgJiYgc2hvd0NlbGxEZXRhaWxzQm94ICYmXHJcbiAgICAgICAgICAgICAgICBnZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZCk/Lmxlbmd0aCA+IDUwICYmIGNvbC50eXBlICE9PSAnaW1hZ2UnKSB8fFxyXG4gICAgICAgICAgICAgIChpc05lc3RlZFZhbHVlQXJyYXkocm93LCBjb2wuZmllbGQpICYmXHJcbiAgICAgICAgICAgICAgICBnZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZCk/Lmxlbmd0aCA+IDEpXHJcbiAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwidG9nZ2xlLWljb24gZGF0YS1ncmlkLXN2Zy1pY29uIG1zLTIgY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxyXG4gICAgICAgICAgICAgIGlzRXhwYW5kZWQocm93LCBjb2wpXHJcbiAgICAgICAgICAgICAgICA/IHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2NoZXZyb24tZG93bi5zdmcnXHJcbiAgICAgICAgICAgICAgICA6IHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2NoZXZyb24tcmlnaHQuc3ZnJ1xyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiXHJcbiAgICAgICAgICAgICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgICAgICAgIHRvZ2dsZUV4cGFuZE9mTG9uZ0NlbGxUZXh0KHJvdywgY29sLCBjb2x1bW5zLCB0cnVlKVxyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAoZGJsY2xpY2spPVwiJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7ICRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXHJcbiAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgIDwhLS0gRXhwYW5kIC8gQ29sbGFwc2UgaWNvbiAtLT5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPCEtLSBFeHBhbmRlZCB0ZXh0IC0tPlxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgIGNsYXNzPVwicG9zaXRpb24tYWJzb2x1dGUgdy0xMDAgZXhwYW5kZWQtYm94XCJcclxuICAgICAgICAgICpuZ0lmPVwiaXNFeHBhbmRlZChyb3csIGNvbClcIlxyXG4gICAgICAgICAgW3N0eWxlLnpJbmRleF09XCJnZXRaSW5kZXgocm93LCBjb2wpXCJcclxuICAgICAgICAgIHN0eWxlPVwidG9wOiAxMDAlOyBsZWZ0OiAwXCJcclxuICAgICAgICAgIFthdHRyLmlkXT1cIihyb3cuaWQgfHwgcm93Ll9pZCkgKyAnLScgKyAoY29sLmlkIHx8IGNvbC5faWQpXCJcclxuICAgICAgICAgIFtjbGFzcy5pbnZpc2libGVdPVwiIXNob3dEZXRhaWxzQm94XCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXHJcbiAgICAgICAgICAgICAgZnVsbFRleHRUZW1wbGF0ZTtcclxuICAgICAgICAgICAgICBjb250ZXh0OiB7XHJcbiAgICAgICAgICAgICAgICByb3c6IHJvdyxcclxuICAgICAgICAgICAgICAgIGNvbDogY29sLFxyXG4gICAgICAgICAgICAgICAgaXNBcnJheTogaXNOZXN0ZWRWYWx1ZUFycmF5KHJvdywgY29sLmZpZWxkKVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgXCJcclxuICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPCEtLSBIZWFkZXJzIEFjdGlvbiBMaXN0IE9uIGNsaWNraW5nIHRocmVlIGRvdHMgLS0+XHJcblxyXG48bmctdGVtcGxhdGVcclxuICAjY29sdW1uTWVudVxyXG4gIGxldC1jb2w9XCJjb2xcIlxyXG4gIGxldC1pc05lc3RlZFRhYmxlPVwiaXNOZXN0ZWRUYWJsZVwiXHJcbiAgbGV0LWNvbHVtbnM9XCJjb2x1bW5zXCJcclxuICBsZXQtc2VjdGlvbj1cInNlY3Rpb25cIlxyXG4+XHJcbiAgPGRpdlxyXG4gICAgY2xhc3M9XCJjb2x1bW4tbWVudSB0aHJlZS1kb3RzLWNvbC1tZW51XCJcclxuICAgIFtjbGFzcy52aXN1YWxseS1oaWRkZW5dPVwiaXNNZW51ZUhpZGRlblwiXHJcbiAgICAqbmdJZj1cImFjdGl2ZUNvbCAmJiAhaXNUaHJlZURvdHNGaWx0ZXJPcGVuXCJcclxuICAgIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwiZHJvcGRvd25zQmFja2dyb3VuZENvbG9yXCJcclxuICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxyXG4gICAgW3N0eWxlLmNvbG9yXT1cImhlYWRlclRleHRDb2xvclwiXHJcbiAgPlxyXG4gICAgPCEtLSBTb3J0IEFzY2VuZGluZyAtLT5cclxuICAgIDxkaXYgY2xhc3M9XCJib3JkZXItYmVsb3cgcGItMlwiIFtjbGFzcy5kaXNhYmxlLXNvcnRpbmddPVwiIWNvbC5pc19zb3J0YWJsZVwiPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cIm11dGVkLXRleHQgZnMtN1wiIHN0eWxlPVwibWFyZ2luLWxlZnQ6IDEycHhcIj5Tb3J0PC9zcGFuPlxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgIGNvbHVtblRocmVlZG90c011bnVDb25maWc/LnNob3dBc2NlbmRpbmcgJiZcclxuICAgICAgICAgIChzb3J0aW5nQ29uZmlnPy5maWVsZCAhPSBjb2wuZmllbGQgfHxcclxuICAgICAgICAgICAgc29ydGluZ0NvbmZpZz8ub3JkZXJfYnkgPT0gJ2Rlc2MnKVxyXG4gICAgICAgIFwiXHJcbiAgICAgICAgY2xhc3M9XCJjb2x1bW4tbWVudS1pdGVtXCJcclxuICAgICAgICAoY2xpY2spPVwic29ydEFzYyhhY3RpdmVDb2wpXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxzcGFuXHJcbiAgICAgICAgICBbaW5saW5lU1ZHXT1cInNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2Fycm93LXVwLnN2ZydcIlxyXG4gICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gbWUtMlwiXHJcbiAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICBTb3J0IEFzY2VuZGluZ1xyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDwhLS0gU29ydCBEZXNjZW5kaW5nIC0tPlxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgIGNvbHVtblRocmVlZG90c011bnVDb25maWc/LnNob3dEZXNjZW5kaW5nICYmXHJcbiAgICAgICAgICAoc29ydGluZ0NvbmZpZz8uZmllbGQgIT0gY29sLmZpZWxkIHx8XHJcbiAgICAgICAgICAgIHNvcnRpbmdDb25maWc/Lm9yZGVyX2J5ID09ICdhc2MnKVxyXG4gICAgICAgIFwiXHJcbiAgICAgICAgY2xhc3M9XCJjb2x1bW4tbWVudS1pdGVtXCJcclxuICAgICAgICAoY2xpY2spPVwic29ydERlc2MoYWN0aXZlQ29sKVwiXHJcbiAgICAgID5cclxuICAgICAgICA8c3BhblxyXG4gICAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9hcnJvdy1kb3duLnN2ZydcIlxyXG4gICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gbWUtMlwiXHJcbiAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICBTb3J0IERlc2NlbmRpbmdcclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgIHNvcnRpbmdDb25maWc/LmZpZWxkID09PSBjb2wuZmllbGQgJiZcclxuICAgICAgICAgIChzb3J0aW5nQ29uZmlnPy5vcmRlcl9ieSA9PT0gJ2FzYycgfHxcclxuICAgICAgICAgICAgc29ydGluZ0NvbmZpZz8ub3JkZXJfYnkgPT09ICdkZXNjJylcclxuICAgICAgICBcIlxyXG4gICAgICAgIGNsYXNzPVwiY29sdW1uLW1lbnUtaXRlbVwiXHJcbiAgICAgICAgKGNsaWNrKT1cInJlc2V0U29ydChhY3RpdmVDb2wpXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxzcGFuXHJcbiAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxyXG4gICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9hcnJvdy1jb3VudGVyY2xvY2t3aXNlLnN2ZydcclxuICAgICAgICAgIFwiXHJcbiAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBtZS0yXCJcclxuICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgIFJlc2V0IFNvcnRcclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJweS0yIGJvcmRlci1iZWxvdyB0aHJlZS1kb3RzLWZpbHRlclwiIFtjbGFzcy5kaXNhYmxlLXNvcnRpbmddPVwiY29sLnR5cGUgPT0gJ2ltYWdlJ1wiPlxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgKm5nSWY9XCJjb2x1bW5UaHJlZWRvdHNNdW51Q29uZmlnPy5zaG93RmlsdGVyXCJcclxuICAgICAgICBjbGFzcz1cImNvbHVtbi1tZW51LWl0ZW0gdGhyZWUtZG90cy1maWx0ZXJcIlxyXG4gICAgICAgIChjbGljayk9XCJvcGVuRmlsdGVyb25UaHJlZURvdHNDbGljayhjb2wpXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxzcGFuXHJcbiAgICAgICAgICBbaW5saW5lU1ZHXT1cInNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2ZpbHRlci0yLnN2ZydcIlxyXG4gICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gbWUtMlwiXHJcbiAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICBGaWx0ZXJcclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwicHktMiBib3JkZXItYmVsb3dcIj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJtdXRlZC10ZXh0IGZzLTdcIiBzdHlsZT1cIm1hcmdpbi1sZWZ0OiAxMnB4XCI+UGluPC9zcGFuPlxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgKm5nSWY9XCJjb2x1bW5UaHJlZWRvdHNNdW51Q29uZmlnPy5zaG93UGlubGVmdCAmJiBjb2w/LnBpbm5lZCAhPT0gJ2xlZnQnXCJcclxuICAgICAgICBjbGFzcz1cImNvbHVtbi1tZW51LWl0ZW1cIlxyXG4gICAgICAgIChjbGljayk9XCJcclxuICAgICAgICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgICAgIHVwZGF0ZUNvbHVtblBpbkluU291cmNlQnlGaWVsZChcclxuICAgICAgICAgICAgYWN0aXZlQ29sLFxyXG4gICAgICAgICAgICAnbGVmdCcsXHJcbiAgICAgICAgICAgIGlzTmVzdGVkVGFibGUsXHJcbiAgICAgICAgICAgIGNvbHVtbnNcclxuICAgICAgICAgIClcclxuICAgICAgICBcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPHNwYW5cclxuICAgICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvcGluLWxlZnQuc3ZnJ1wiXHJcbiAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBtZS0yXCJcclxuICAgICAgICA+PC9zcGFuXHJcbiAgICAgICAgPlBpbiBMZWZ0XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdlxyXG4gICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICBjb2x1bW5UaHJlZWRvdHNNdW51Q29uZmlnPy5zaG93UGlucmlnaHQgJiYgY29sPy5waW5uZWQgIT09ICdyaWdodCdcclxuICAgICAgICBcIlxyXG4gICAgICAgIGNsYXNzPVwiY29sdW1uLW1lbnUtaXRlbVwiXHJcbiAgICAgICAgKGNsaWNrKT1cIlxyXG4gICAgICAgICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgICAgdXBkYXRlQ29sdW1uUGluSW5Tb3VyY2VCeUZpZWxkKFxyXG4gICAgICAgICAgICBhY3RpdmVDb2wsXHJcbiAgICAgICAgICAgICdyaWdodCcsXHJcbiAgICAgICAgICAgIGlzTmVzdGVkVGFibGUsXHJcbiAgICAgICAgICAgIGNvbHVtbnNcclxuICAgICAgICAgIClcclxuICAgICAgICBcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPHNwYW5cclxuICAgICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvcGluLXJpZ2h0LnN2ZydcIlxyXG4gICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gZGF0YS1ncmlkLXN2Zy1pY29uIG1lLTJcIlxyXG4gICAgICAgID48L3NwYW5cclxuICAgICAgICA+UGluIFJpZ2h0XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdlxyXG4gICAgICAgICpuZ0lmPVwiY29sPy5waW5uZWRcIlxyXG4gICAgICAgIGNsYXNzPVwiY29sdW1uLW1lbnUtaXRlbVwiXHJcbiAgICAgICAgKGNsaWNrKT1cIlxyXG4gICAgICAgICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgICAgdXBkYXRlQ29sdW1uUGluSW5Tb3VyY2VCeUZpZWxkKFxyXG4gICAgICAgICAgICBhY3RpdmVDb2wsXHJcbiAgICAgICAgICAgIG51bGwsXHJcbiAgICAgICAgICAgIGlzTmVzdGVkVGFibGUsXHJcbiAgICAgICAgICAgIGNvbHVtbnNcclxuICAgICAgICAgIClcclxuICAgICAgICBcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPHNwYW5cclxuICAgICAgICAgIFtpbmxpbmVTVkddPVwiXHJcbiAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2xheW91dC10aHJlZS1jb2x1bW5zLnN2ZydcclxuICAgICAgICAgIFwiXHJcbiAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBtZS0yXCJcclxuICAgICAgICA+PC9zcGFuXHJcbiAgICAgICAgPlVucGluXHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdlxyXG4gICAgICAqbmdJZj1cImNvbHVtblRocmVlZG90c011bnVDb25maWc/LnNob3dBdXRvc2l6ZVRoaXNDb2x1bW5cIlxyXG4gICAgICBjbGFzcz1cImNvbHVtbi1tZW51LWl0ZW1cIlxyXG4gICAgICAoY2xpY2spPVwiYXV0b3NpemVDb2x1bW4oYWN0aXZlQ29sKVwiXHJcbiAgICA+XHJcbiAgICAgIDxzcGFuXHJcbiAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2Fycm93cy1leHBhbmQtdmVydGljYWwuc3ZnJ1xyXG4gICAgICAgIFwiXHJcbiAgICAgICAgY2xhc3M9XCJtZS0yXCJcclxuICAgICAgPjwvc3Bhbj5cclxuICAgICAgQXV0b3NpemUgVGhpcyBDb2x1bW5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDwhLS0gQXV0b3NpemUgQWxsIENvbHVtbnMgLS0+XHJcbiAgICA8ZGl2XHJcbiAgICAgICpuZ0lmPVwiY29sdW1uVGhyZWVkb3RzTXVudUNvbmZpZz8uc2hvd0F1dG9zaXplQWxsQ29sdW1uc1wiXHJcbiAgICAgIGNsYXNzPVwiY29sdW1uLW1lbnUtaXRlbVwiXHJcbiAgICAgIChjbGljayk9XCJhdXRvc2l6ZUFsbENvbHVtbnMoKVwiXHJcbiAgICA+XHJcbiAgICAgIDxzcGFuXHJcbiAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2Fycm93cy1hbmdsZS1leHBhbmQuc3ZnJ1xyXG4gICAgICAgIFwiXHJcbiAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gbWUtMlwiXHJcbiAgICAgID48L3NwYW5cclxuICAgICAgPkF1dG9zaXplIEFsbCBDb2x1bW5zXHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8IS0tIEdyb3VwIEJ5IC0tPlxyXG4gICAgPGRpdlxyXG4gICAgICAqbmdJZj1cInNob3dSb3dzR3JvdXBpbmdcIlxyXG4gICAgICBjbGFzcz1cImNvbHVtbi1tZW51LWl0ZW1cIlxyXG4gICAgICAoY2xpY2spPVwiZ3JvdXBCeShhY3RpdmVDb2wpXCJcclxuICAgICAgW2NsYXNzLmRpc2FibGUtc29ydGluZ109XCIhY29sLmlzX2dyb3VwYWJsZVwiXHJcbiAgICA+XHJcbiAgICAgIDxzcGFuXHJcbiAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9kaWFncmFtLTMuc3ZnJ1wiXHJcbiAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gbWUtMlwiXHJcbiAgICAgID48L3NwYW4+XHJcbiAgICAgIEdyb3VwIGJ5IHt7IGNvbC5oZWFkZXIgfX1cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDwhLS0gQ2hvb3NlIENvbHVtbnMgLS0+XHJcbiAgICA8ZGl2XHJcbiAgICAgICpuZ0lmPVwiY29sdW1uVGhyZWVkb3RzTXVudUNvbmZpZz8uc2hvd0Nob3NlQ29sdW1uc1wiXHJcbiAgICAgIGNsYXNzPVwiY29sdW1uLW1lbnUtaXRlbVwiXHJcbiAgICAgIChjbGljayk9XCJjaG9vc2VDb2x1bW5zKClcIlxyXG4gICAgPlxyXG4gICAgICA8c3BhblxyXG4gICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvdWktY2hlY2tzLWdyaWQuc3ZnJ1wiXHJcbiAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gbWUtMlwiXHJcbiAgICAgID48L3NwYW4+XHJcbiAgICAgIENob29zZSBDb2x1bW5zXHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8IS0tIFJlc2V0IENvbHVtbnMgLS0+XHJcbiAgICA8ZGl2XHJcbiAgICAgICpuZ0lmPVwiY29sdW1uVGhyZWVkb3RzTXVudUNvbmZpZz8uc2hvd1Jlc2V0Q29sdW1uc1wiXHJcbiAgICAgIGNsYXNzPVwiY29sdW1uLW1lbnUtaXRlbVwiXHJcbiAgICAgIChjbGljayk9XCJyZXNldENvbHVtbnMoKVwiXHJcbiAgICA+XHJcbiAgICAgIDxzcGFuXHJcbiAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2Fycm93LWNvdW50ZXJjbG9ja3dpc2Uuc3ZnJ1xyXG4gICAgICAgIFwiXHJcbiAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gbWUtMlwiXHJcbiAgICAgID48L3NwYW5cclxuICAgICAgPlJlc2V0IENvbHVtbnNcclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG4gIDxkaXZcclxuICAgIEBzbGlkZVRvZ2dsZVxyXG4gICAgKm5nSWY9XCJpc1RocmVlRG90c0ZpbHRlck9wZW5cIlxyXG4gICAgY2xhc3M9XCJ0aHJlZS1kb3RzLWNvbC1tZW51IHBvc2l0aW9uLXJlbGF0aXZlXCJcclxuICAgIFtzdHlsZS5yaWdodC5weF09XCJzZWN0aW9uID09ICdyaWdodCcgPyBudWxsIDogY29sLndpZHRoIC0gNDVcIlxyXG4gICAgW2NsYXNzLnZpc3VhbGx5LWhpZGRlbl09XCJpc01lbnVlSGlkZGVuXCJcclxuICA+XHJcbiAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiZmlsdGVyTWVudTsgY29udGV4dDogeyBjb2w6IGNvbCB9XCJcclxuICAgID48L25nLWNvbnRhaW5lcj5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjwhLS0gRmlsdGVyIE1lbnVlIC0tPlxyXG48bmctdGVtcGxhdGUgI2ZpbHRlck1lbnUgbGV0LWNvbD1cImNvbFwiPlxyXG4gIDxkaXZcclxuICAgIGNsYXNzPVwiZmlsdGVyLW1lbnUtY29udGFpbmVyIGZpbHRlci1tZW51XCJcclxuICAgIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwiZHJvcGRvd25zQmFja2dyb3VuZENvbG9yXCJcclxuICA+XHJcbiAgICA8IS0tIERyb3Bkb3duIFR5cGUgLS0+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sLnR5cGUgPT09ICdkcm9wZG93bic7IGVsc2UgdGV4dEZpbHRlclwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZmlsdGVyLWRyb3Bkb3duLXNlY3Rpb24gcC0xXCI+XHJcbiAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21cIlxyXG4gICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWFyY2guLi5cIlxyXG4gICAgICAgICAgdHlwZT1cInNlYXJjaFwiXHJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cImFkZEZpbHRlckNvbHVtbklucHV0XCJcclxuICAgICAgICAvPlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBtYi0xIG10LTIgbXMtMSBzZWxlY3QtYWxsLWZpbHRlclwiPlxyXG4gICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiXHJcbiAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgICAgIFtjaGVja2VkXT1cImlzQWxsU2lkZUZpbHRlck9wdGlvbnNTZWxlY3RlZChjb2wpXCJcclxuICAgICAgICAgICAgKGNoYW5nZSk9XCJ0b2dnbGVTZWxlY3RBbGxTaWRlRmlsdGVycyhjb2wsICRldmVudClcIlxyXG4gICAgICAgICAgICBpZD1cInNlbGVjdEFsbF97eyBjb2wuZmllbGQgfX1cIlxyXG4gICAgICAgICAgLz5cclxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWxcIiBmb3I9XCJzZWxlY3RBbGxfe3sgY29sLmZpZWxkIH19XCI+XHJcbiAgICAgICAgICAgIFNlbGVjdCBBbGxcclxuICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImRyb3Bkb3duLW9wdGlvbnMgcHMtMVwiPlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2sgbWItMVwiXHJcbiAgICAgICAgICAgICpuZ0Zvcj1cIlxyXG4gICAgICAgICAgICAgIGxldCBvcHRpb24gb2Ygc2VsZWN0ZWRDb2x1bW5Gb3JGaWx0ZXI/LmNvbHVtbl9kcm9wZG93bl92YWx1ZVxyXG4gICAgICAgICAgICAgICAgfCBmaWx0ZXIgOiBhZGRGaWx0ZXJDb2x1bW5JbnB1dCA6ICd2YWx1ZSc7XHJcbiAgICAgICAgICAgICAgdHJhY2tCeTogdHJhY2tCeUlkO1xyXG4gICAgICAgICAgICAgIGxldCBpID0gaW5kZXhcclxuICAgICAgICAgICAgXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCJcclxuICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxyXG4gICAgICAgICAgICAgIFtpZF09XCJpXCJcclxuICAgICAgICAgICAgICBbY2hlY2tlZF09XCJcclxuICAgICAgICAgICAgICAgIGN1cnJlbnRGaWx0ZXJTZWxlY3RlZElkcy5oYXMob3B0aW9uPy5pZCA/PyBvcHRpb24/Ll9pZCA/PyBvcHRpb24pXHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAoY2hhbmdlKT1cInRvZ2dsZVNlbGVjdGlvbkluRmlsdGVyKG9wdGlvbilcIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsIGZ3LXNlbWlib2xkXCIgW2Zvcl09XCJpXCI+XHJcbiAgICAgICAgICAgICAge3sgb3B0aW9uPy52YWx1ZSA/PyBvcHRpb24/Lm5hbWUgPz8gb3B0aW9uIH19XHJcbiAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj4gLS0+XHJcbiAgICAgICAgPGNkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydFxyXG4gICAgICAgICAgICAgIGl0ZW1TaXplPVwiMzJcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZmlsdGVyLXZpZXdwb3J0XCJcclxuICAgICAgICAgICAgICBzdHlsZT1cImhlaWdodDogMTIwcHhcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrIG1iLTEgbXMtMVwiXHJcbiAgICAgICAgICAgICAgICAqY2RrVmlydHVhbEZvcj1cIlxyXG4gICAgICAgICAgICAgICAgICBsZXQgb3B0aW9uIG9mIHNlbGVjdGVkQ29sdW1uRm9yRmlsdGVyPy5jb2x1bW5fZHJvcGRvd25fdmFsdWVcclxuICAgICAgICAgICAgICAgICAgICB8IGZpbHRlciA6IGFkZEZpbHRlckNvbHVtbklucHV0IDogJ3ZhbHVlJztcclxuICAgICAgICAgICAgICAgICAgdHJhY2tCeTogdHJhY2tCeUlkXHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIlxyXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxyXG4gICAgICAgICAgICAgICAgICBbaWRdPVwib3B0aW9uPy5pZCA/PyBvcHRpb24/Ll9pZCA/PyBvcHRpb25cIlxyXG4gICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJcclxuICAgICAgICAgICAgICAgICAgICBjdXJyZW50RmlsdGVyU2VsZWN0ZWRJZHMuaGFzKG9wdGlvbj8uaWQgPz8gb3B0aW9uPy5faWQgPz8gb3B0aW9uKVxyXG4gICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cInRvZ2dsZVNlbGVjdGlvbkluRmlsdGVyKG9wdGlvbilcIlxyXG4gICAgICAgICAgICAgICAgLz5cclxuXHJcbiAgICAgICAgICAgICAgICA8bGFiZWxcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsIGZ3LXNlbWlib2xkXCJcclxuICAgICAgICAgICAgICAgICAgW2Zvcl09XCJvcHRpb24/LmlkID8/IG9wdGlvbj8uX2lkID8/IG9wdGlvblwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIHt7IG9wdGlvbj8udmFsdWUgPz8gb3B0aW9uPy5uYW1lID8/IG9wdGlvbiB9fVxyXG4gICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvY2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgIDwhLS0gVGV4dCBGaWx0ZXIgU2VjdGlvbiAtLT5cclxuICAgIDxuZy10ZW1wbGF0ZSAjdGV4dEZpbHRlcj5cclxuICAgICAgPGRpdiBjbGFzcz1cImZpbHRlci10ZXh0LXNlY3Rpb25cIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBtYi0yXCI+XHJcbiAgICAgICAgICA8c2VsZWN0XHJcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1zZWxlY3QgZm9ybS1zZWxlY3Qtc20gY3VzdG9tLXNlbGVjdFwiXHJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZmlyc3RDb25kaXRpb25cIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2VsZWN0ZWRDb2x1bW5Gb3JGaWx0ZXIudHlwZSAhPT0gJ2RhdGUnXCI+XHJcbiAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImNvbnRhaW5cIj5Db250YWluczwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJkb2VzX25vdF9jb250YWluXCI+RG9lcyBOb3QgQ29udGFpbjwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJlcXVhbFwiPkVxdWFsczwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJiZWZvcmVcIj5TdGFydHMgV2l0aDwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJhZnRlclwiPkVuZHMgV2l0aDwvb3B0aW9uPlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWxlY3RlZENvbHVtbkZvckZpbHRlci50eXBlID09ICdkYXRlJ1wiPlxyXG4gICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJlcXVhbFwiPkVxdWFscyBUbzwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJub3RfZXF1YWxcIj5Ob3QgRXF1YWw8L29wdGlvbj5cclxuICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiYWZ0ZXJcIj5BZnRlcjwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJiZWZvcmVcIj5CZWZvcmU8L29wdGlvbj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICBbdHlwZV09XCJjb2wudHlwZSA9PSAnc3RyaW5nJyA/ICd0ZXh0JyA6IGNvbC50eXBlXCJcclxuICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbSBtYi0zXCJcclxuICAgICAgICAgIHBsYWNlaG9sZGVyPVwiVmFsdWVcIlxyXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJmaXJzdFZhbHVlXCJcclxuICAgICAgICAgICNmaWx0ZXJNZW51ZVRleHRjaElucHV0XHJcbiAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJhcHBseURyb3Bkb3duRmlsdGVyKClcIlxyXG4gICAgICAgIC8+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIG1iLTMgZC1mbGV4IGZsZXgtcm93XCI+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjayBmb3JtLWNoZWNrLWlubGluZSBtLTAgY29sLTQgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dCBmaWx0ZXItcmFkaW8taW5wdXRzXCJcclxuICAgICAgICAgICAgICB0eXBlPVwicmFkaW9cIlxyXG4gICAgICAgICAgICAgIG5hbWU9XCJjb25kaXRpb25cIlxyXG4gICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY29uZGl0aW9uXCJcclxuICAgICAgICAgICAgICB2YWx1ZT1cImFuZFwiXHJcbiAgICAgICAgICAgICAgaWQ9XCJhbmRfe3sgY29sLmZpZWxkIH19XCJcclxuICAgICAgICAgICAgICAoY2hhbmdlKT1cImNkci5kZXRlY3RDaGFuZ2VzKClcIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsIG1iLTAgbXQtMVwiIGZvcj1cImFuZF97eyBjb2wuZmllbGQgfX1cIlxyXG4gICAgICAgICAgICAgID5BTkQ8L2xhYmVsXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2sgZm9ybS1jaGVjay1pbmxpbmUgbS0wIGNvbC00IGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTEgZ2FwLTFcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2staW5wdXQgZmlsdGVyLXJhZGlvLWlucHV0c1wiXHJcbiAgICAgICAgICAgICAgdHlwZT1cInJhZGlvXCJcclxuICAgICAgICAgICAgICBuYW1lPVwiY29uZGl0aW9uXCJcclxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNvbmRpdGlvblwiXHJcbiAgICAgICAgICAgICAgdmFsdWU9XCJvclwiXHJcbiAgICAgICAgICAgICAgaWQ9XCJvcl97eyBjb2wuZmllbGQgfX1cIlxyXG4gICAgICAgICAgICAgIChjaGFuZ2UpPVwiY2RyLmRldGVjdENoYW5nZXMoKVwiXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWwgbWItMCBtdC0xXCIgZm9yPVwib3Jfe3sgY29sLmZpZWxkIH19XCJcclxuICAgICAgICAgICAgICA+T1I8L2xhYmVsXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2sgZm9ybS1jaGVjay1pbmxpbmUgbS0wIGNvbC00IGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTEgZ2FwLTFcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2staW5wdXQgZmlsdGVyLXJhZGlvLWlucHV0c1wiXHJcbiAgICAgICAgICAgICAgdHlwZT1cInJhZGlvXCJcclxuICAgICAgICAgICAgICBuYW1lPVwiY29uZGl0aW9uXCJcclxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNvbmRpdGlvblwiXHJcbiAgICAgICAgICAgICAgdmFsdWU9XCJub25lXCJcclxuICAgICAgICAgICAgICBpZD1cIm5vbmVfe3sgY29sLmZpZWxkIH19XCJcclxuICAgICAgICAgICAgICAoY2hhbmdlKT1cImNkci5kZXRlY3RDaGFuZ2VzKClcIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsIG1iLTAgbXQtMVwiIGZvcj1cIm5vbmVfe3sgY29sLmZpZWxkIH19XCJcclxuICAgICAgICAgICAgICA+Tm9uZTwvbGFiZWxcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBAc2xpZGVUb2dnbGUgKm5nSWY9XCJmaXJzdFZhbHVlICYmIGNvbmRpdGlvbiAhPSAnbm9uZSdcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIG1iLTJcIj5cclxuICAgICAgICAgICAgPHNlbGVjdFxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1zZWxlY3QgZm9ybS1zZWxlY3Qtc20gY3VzdG9tLXNlbGVjdFwiXHJcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzZWNvbmRDb25kaXRpb25cIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlbGVjdGVkQ29sdW1uRm9yRmlsdGVyLnR5cGUgIT09ICdkYXRlJ1wiPlxyXG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImNvbnRhaW5cIj5Db250YWluczwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImRvZXNfbm90X2NvbnRhaW5cIj5Eb2VzIE5vdCBDb250YWluPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiZXF1YWxcIj5FcXVhbHM8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJiZWZvcmVcIj5TdGFydHMgV2l0aDwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImFmdGVyXCI+RW5kcyBXaXRoPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWxlY3RlZENvbHVtbkZvckZpbHRlci50eXBlID09ICdkYXRlJ1wiPlxyXG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImVxdWFsXCI+RXF1YWxzIFRvPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwibm90X2VxdWFsXCI+Tm90IEVxdWFsPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiYWZ0ZXJcIj5BZnRlcjwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImJlZm9yZVwiPkJlZm9yZTwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICBbdHlwZV09XCJjb2wudHlwZSA9PSAnc3RyaW5nJyA/ICd0ZXh0JyA6IGNvbC50eXBlXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtIG1iLTNcIlxyXG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlY29uZCBWYWx1ZVwiXHJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwic2Vjb25kVmFsdWVcIlxyXG4gICAgICAgICAgLz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgIDwhLS0gQWN0aW9ucyAtLT5cclxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZ2FwLTIgbXQtMlwiPlxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1wcmltYXJ5IGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciB3LTEwMFwiXHJcbiAgICAgICAgc3R5bGU9XCJoZWlnaHQ6IDMwcHhcIlxyXG4gICAgICAgIChjbGljayk9XCJhcHBseURyb3Bkb3duRmlsdGVyKClcIlxyXG4gICAgICA+XHJcbiAgICAgICAgQXBwbHlcclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXZcclxuICAgICAgICBjbGFzcz1cImJ0biBidG4tc20gYnRuLXNlY29uZGFyeSBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgdy0xMDBcIlxyXG4gICAgICAgIHN0eWxlPVwiaGVpZ2h0OiAzMHB4XCJcclxuICAgICAgICAoY2xpY2spPVwicmVzZXRTaWRlRmlsdGVyKGNvbClcIlxyXG4gICAgICA+XHJcbiAgICAgICAgUmVzZXRcclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjwhLS0gU2lkZSBNZW51ZSAtLT5cclxuXHJcbjwhLS0gQ29sdW1uIFBhbm5lbCAvIFBpdm90IE1vZGUgLyBTZWFyY2hpbmcgLS0+XHJcblxyXG48bmctdGVtcGxhdGUgI2NvbHVtblBhbm5lbD5cclxuICA8ZGl2IGNsYXNzPVwiY29sdW1uLXBhbmVsLWhlYWRlclwiPlxyXG4gICAgPCEtLSBQaXZvdCBUb2dnbGUgLS0+XHJcbiAgICA8ZGl2XHJcbiAgICAgIGNsYXNzPVwiZm9ybS1jaGVjayBmb3JtLXN3aXRjaCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIG1iLTIgcGl2b3QtbW9kZSBweC01IG1zLTIgZC1ub25lXCJcclxuICAgID5cclxuICAgICAgPGlucHV0XHJcbiAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0IG1lLTJcIlxyXG4gICAgICAgIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgaWQ9XCJwaXZvdFRvZ2dsZVwiXHJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJwaXZvdE1vZGVcIlxyXG4gICAgICAvPlxyXG4gICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsXCIgZm9yPVwicGl2b3RUb2dnbGVcIj5QaXZvdCBNb2RlPC9sYWJlbD5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDwhLS0gU2VsZWN0IEFsbCAmIFNlYXJjaCAtLT5cclxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIG1iLTIgcHgtMyBtdC0zXCI+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwiZmlsdGVyLWljb24td3JhcHBlciBtZS0yXCIgKm5nSWY9XCJzaG93Q29sdW1uc0dyb3VwaW5nXCI+XHJcbiAgICAgICAgPHNwYW5cclxuICAgICAgICAgIGNsYXNzPVwidG9nZ2xlLWljb24gZGF0YS1ncmlkLXN2Zy1pY29uXCJcclxuICAgICAgICAgIFtpbmxpbmVTVkddPVwiXHJcbiAgICAgICAgICAgIGFjY29yZGlvblN0YXRlID09PSAnYWxsJ1xyXG4gICAgICAgICAgICAgID8gc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvY2hldnJvbi1kb3duLnN2ZydcclxuICAgICAgICAgICAgICA6IGFjY29yZGlvblN0YXRlID09PSAnc29tZSdcclxuICAgICAgICAgICAgICA/IHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2Rhc2guc3ZnJ1xyXG4gICAgICAgICAgICAgIDogc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvY2hldnJvbi1yaWdodC5zdmcnXHJcbiAgICAgICAgICBcIlxyXG4gICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUFsbEFjY29yZGlvbnMoKVwiXHJcbiAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgPC9zcGFuPlxyXG4gICAgICA8aW5wdXRcclxuICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxyXG4gICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dCBtZS0yXCJcclxuICAgICAgICBbY2hlY2tlZF09XCJhbGxDb2x1bW5zU2VsZWN0ZWQoKVwiXHJcbiAgICAgICAgKGNoYW5nZSk9XCJ0b2dnbGVBbGxDb2x1bW5zVmlzaWJpbGl0eSgpXCJcclxuICAgICAgLz5cclxuICAgICAgPGlucHV0XHJcbiAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbVwiXHJcbiAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWFyY2ggY29sdW1ucy4uLlwiXHJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJjb2x1bW5TZWFyY2hcIlxyXG4gICAgICAvPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPCEtLSBTZXBhcmF0b3IgLS0+XHJcbiAgICA8aHIgY2xhc3M9XCJteS0yXCIgLz5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjwhLS0gUmlnaHQgQ29sdW1ucyBNZW51ZSAtLT5cclxuXHJcbjwhLS0gQ29sdW1uIFBhbmVsIEl0ZW0gVGVtcGxhdGUgLS0+XHJcbjxuZy10ZW1wbGF0ZSAjY29sdW1uUGFuZWxJdGVtIGxldC1jb2w9XCJjb2xcIj5cclxuICA8IS0tIEdyb3VwIENvbHVtbiAtLT5cclxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sLmNoaWxkcmVuPy5sZW5ndGhcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2x1bW4tZ3JvdXAgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBtYi0yXCI+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwiZmlsdGVyLWljb24td3JhcHBlciBtZS0yXCI+XHJcbiAgICAgICAgPHNwYW5cclxuICAgICAgICAgIGNsYXNzPVwidG9nZ2xlLWljb24gZGF0YS1ncmlkLXN2Zy1pY29uXCJcclxuICAgICAgICAgIFtpbmxpbmVTVkddPVwiXHJcbiAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2NoZXZyb24tcmlnaHQuc3ZnJ1xyXG4gICAgICAgICAgXCJcclxuICAgICAgICAgIFtjbGFzcy5yb3RhdGVdPVwiY29sLmV4cGFuZGVkXCJcclxuICAgICAgICAgIChjbGljayk9XCJjb2wuZXhwYW5kZWQgPSAhY29sLmV4cGFuZGVkXCJcclxuICAgICAgICA+PC9zcGFuPlxyXG4gICAgICA8L3NwYW4+XHJcbiAgICAgIDxpbnB1dFxyXG4gICAgICAgIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0IG1lLTJcIlxyXG4gICAgICAgIFtpZF09XCInZ3JvdXBfJyArIGNvbC5oZWFkZXJcIlxyXG4gICAgICAgIFtjaGVja2VkXT1cImlzQ29sdW1uVmlzaWJsZShjb2wpXCJcclxuICAgICAgICAoY2hhbmdlKT1cInRvZ2dsZUdyb3VwVmlzaWJpbGl0eShjb2wpXCJcclxuICAgICAgLz5cclxuICAgICAgPHNwYW5cclxuICAgICAgICBbaW5saW5lU1ZHXT1cInNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2dyaWQtM3gyLWdhcC5zdmcnXCJcclxuICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgbWUtMlwiXHJcbiAgICAgID48L3NwYW4+XHJcbiAgICAgIDxsYWJlbFxyXG4gICAgICAgIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBtYi0wIHctMTAwXCJcclxuICAgICAgICBbZm9yXT1cIidncm91cF8nICsgY29sLmhlYWRlclwiXHJcbiAgICAgICAgc3R5bGU9XCJjdXJzb3I6IHBvaW50ZXJcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXRydW5jYXRlXCI+e3sgY29sLmhlYWRlciB9fTwvc3Bhbj5cclxuICAgICAgPC9sYWJlbD5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiAqbmdJZj1cImNvbC5leHBhbmRlZFwiIGNsYXNzPVwicHMtNFwiPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjaGlsZCBvZiBjb2wuY2hpbGRyZW47IHRyYWNrQnk6IHRyYWNrQnlGaWVsZFwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29sdW1uUGFuZWxJdGVtOyBjb250ZXh0OiB7IGNvbDogY2hpbGQgfVwiXHJcbiAgICAgICAgPjwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvZGl2PlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG5cclxuICA8IS0tIExlYWYgQ29sdW1uIC0tPlxyXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCIhY29sLmNoaWxkcmVuPy5sZW5ndGhcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIG1iLTJcIj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJtZS0yXCIgc3R5bGU9XCJ3aWR0aDogMS41cmVtXCI+PC9zcGFuPlxyXG4gICAgICA8aW5wdXRcclxuICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxyXG4gICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dCBtZS0yXCJcclxuICAgICAgICBbKG5nTW9kZWwpXT1cImNvbC5pc192aXNpYmxlXCJcclxuICAgICAgICBbaWRdPVwiJ2NvbF8nICsgY29sLmZpZWxkXCJcclxuICAgICAgICAoY2hhbmdlKT1cIm9uU2lkZU1lbnVDb2x1bW5zVmlzaWJpbGl0eUNoYW5nZSgpXCJcclxuICAgICAgLz5cclxuICAgICAgPHNwYW5cclxuICAgICAgICBbaW5saW5lU1ZHXT1cInNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2dyaWQtM3gyLWdhcC5zdmcnXCJcclxuICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgbWUtMlwiXHJcbiAgICAgID48L3NwYW4+XHJcbiAgICAgIDxsYWJlbFxyXG4gICAgICAgIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBtYi0wIHctMTAwXCJcclxuICAgICAgICBbZm9yXT1cIidjb2xfJyArIGNvbC5maWVsZFwiXHJcbiAgICAgICAgc3R5bGU9XCJjdXJzb3I6IHBvaW50ZXJcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXRydW5jYXRlXCI+e3sgY29sLmhlYWRlciB9fTwvc3Bhbj5cclxuICAgICAgPC9sYWJlbD5cclxuICAgIDwvZGl2PlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPCEtLSBDb2x1bW5zIFNpZGUgRmlsdGVyIC0tPlxyXG48bmctdGVtcGxhdGUgI3NpZGVGaWx0ZXJzPlxyXG4gIDxkaXYgY2xhc3M9XCJweS0zIHB4LTIgcGUtMyBoLTEwMFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgbWItMlwiPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cImZpbHRlci1pY29uLXdyYXBwZXIgbWUtMlwiICpuZ0lmPVwic2hvd0NvbHVtbnNHcm91cGluZ1wiPlxyXG4gICAgICAgIDxzcGFuXHJcbiAgICAgICAgICBjbGFzcz1cInRvZ2dsZS1pY29uIGRhdGEtZ3JpZC1zdmctaWNvblwiXHJcbiAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxyXG4gICAgICAgICAgICBmaWx0ZXJBY2NvcmRpb25TdGF0ZSA9PT0gJ2FsbCdcclxuICAgICAgICAgICAgICA/IHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2NoZXZyb24tZG93bi5zdmcnXHJcbiAgICAgICAgICAgICAgOiBmaWx0ZXJBY2NvcmRpb25TdGF0ZSA9PT0gJ3NvbWUnXHJcbiAgICAgICAgICAgICAgPyBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9kYXNoLnN2ZydcclxuICAgICAgICAgICAgICA6IHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2NoZXZyb24tcmlnaHQuc3ZnJ1xyXG4gICAgICAgICAgXCJcclxuICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVBbGxGaWx0ZXJBY2NvcmRpb25zKClcIlxyXG4gICAgICAgID48L3NwYW4+XHJcbiAgICAgIDwvc3Bhbj5cclxuICAgICAgPGlucHV0XHJcbiAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbVwiXHJcbiAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWFyY2guLi5cIlxyXG4gICAgICAgIFsobmdNb2RlbCldPVwiY29sdW1uU2VhcmNoXCJcclxuICAgICAgLz5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdlxyXG4gICAgICBjbGFzcz1cIm92ZXJmbG93LWF1dG8gc2lkZS1maWx0ZXItY29sdW1ucy13cmFwcGVyXCJcclxuICAgICAgc3R5bGU9XCJoZWlnaHQ6IGNhbGMoMTAwJSAtIDcwcHgpOyBzY3JvbGxiYXItd2lkdGg6IHRoaW5cIlxyXG4gICAgPlxyXG4gICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgKm5nRm9yPVwiXHJcbiAgICAgICAgICBsZXQgY29sIG9mIGNvbHVtbnMgfCBmaWx0ZXIgOiBjb2x1bW5TZWFyY2ggOiAnaGVhZGVyJztcclxuICAgICAgICAgIHRyYWNrQnk6IHRyYWNrQnlGaWVsZFxyXG4gICAgICAgIFwiXHJcbiAgICAgID5cclxuICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImZpbHRlclBhbm5lbEl0ZW07IGNvbnRleHQ6IHsgY29sOiBjb2wgfVwiXHJcbiAgICAgICAgPjwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNmaWx0ZXJQYW5uZWxJdGVtIGxldC1jb2w9XCJjb2xcIj5cclxuICA8IS0tIEdyb3VwIENvbHVtbiAtLT5cclxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sLmNoaWxkcmVuPy5sZW5ndGhcIj5cclxuICAgIDxkaXZcclxuICAgICAgY2xhc3M9XCJjb2x1bW4tZ3JvdXAgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBtYi0yXCJcclxuICAgICAgKm5nSWY9XCJjb2wudHlwZSAhPT0gJ2ltYWdlJ1wiXHJcbiAgICA+XHJcbiAgICAgIDwhLS0gQ2hldnJvbiB0b2dnbGUgLS0+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwiZmlsdGVyLWljb24td3JhcHBlciBtZS0yXCI+XHJcbiAgICAgICAgPHNwYW5cclxuICAgICAgICAgIGNsYXNzPVwidG9nZ2xlLWljb24gZGF0YS1ncmlkLXN2Zy1pY29uXCJcclxuICAgICAgICAgIFtpbmxpbmVTVkddPVwiXHJcbiAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2NoZXZyb24tcmlnaHQuc3ZnJ1xyXG4gICAgICAgICAgXCJcclxuICAgICAgICAgIFtjbGFzcy5yb3RhdGVdPVwiY29sLmV4cGFuZGVkRmlsdGVyXCJcclxuICAgICAgICAgIChjbGljayk9XCJjb2wuZXhwYW5kZWRGaWx0ZXIgPSAhY29sLmV4cGFuZGVkRmlsdGVyXCJcclxuICAgICAgICA+PC9zcGFuPlxyXG4gICAgICA8L3NwYW4+XHJcblxyXG4gICAgICA8IS0tIEdyb3VwIGxhYmVsIHRvZ2dsZSAtLT5cclxuICAgICAgPGxhYmVsXHJcbiAgICAgICAgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIG1iLTAgdy0xMDBcIlxyXG4gICAgICAgIHN0eWxlPVwiY3Vyc29yOiBwb2ludGVyXCJcclxuICAgICAgICAoY2xpY2spPVwiY29sLmV4cGFuZGVkRmlsdGVyID0gIWNvbC5leHBhbmRlZEZpbHRlclwiXHJcbiAgICAgID5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cImZ3LWJvbGQgdGV4dC10cnVuY2F0ZVwiXHJcbiAgICAgICAgICA+e3sgY29sLmhlYWRlciB9fVxyXG4gICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LXByaW1hcnkgbXMtMVwiXHJcbiAgICAgICAgICAgICpuZ0lmPVwiY29sPy5xdWVyeT8uX2lkcz8ubGVuZ3RoIHx8IGNvbD8ucXVlcnk/Ll9maXJzdF92YWx1ZVwiXHJcbiAgICAgICAgICAgID4qPC9zcGFuXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgPC9zcGFuPlxyXG4gICAgICA8L2xhYmVsPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPCEtLSBDaGlsZHJlbiBjb2x1bW5zIC0tPlxyXG4gICAgPGRpdiAqbmdJZj1cImNvbC5leHBhbmRlZEZpbHRlclwiIGNsYXNzPVwicHMtNFwiPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjaGlsZCBvZiBjb2wuY2hpbGRyZW47IHRyYWNrQnk6IHRyYWNrQnlGaWVsZFwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiZmlsdGVyUGFubmVsSXRlbTsgY29udGV4dDogeyBjb2w6IGNoaWxkIH1cIlxyXG4gICAgICAgID48L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L2Rpdj5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgPCEtLSBMZWFmIENvbHVtbiAtLT5cclxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWNvbC5jaGlsZHJlbj8ubGVuZ3RoXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBtYi0yXCIgKm5nSWY9XCJjb2wudHlwZSAhPT0gJ2ltYWdlJ1wiPlxyXG4gICAgICA8c3BhblxyXG4gICAgICAgIGNsYXNzPVwibWUtMiBmaWx0ZXItaWNvbi13cmFwcGVyIG1lLTJcIlxyXG4gICAgICAgIChjbGljayk9XCJjb2wuZXhwYW5kZWRGaWx0ZXIgPSAhY29sLmV4cGFuZGVkRmlsdGVyXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxzcGFuXHJcbiAgICAgICAgICBjbGFzcz1cInRvZ2dsZS1pY29uIGRhdGEtZ3JpZC1zdmctaWNvblwiXHJcbiAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxyXG4gICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9jaGV2cm9uLXJpZ2h0LnN2ZydcclxuICAgICAgICAgIFwiXHJcbiAgICAgICAgICBbY2xhc3Mucm90YXRlXT1cImNvbC5leHBhbmRlZEZpbHRlclwiXHJcbiAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgPC9zcGFuPlxyXG5cclxuICAgICAgPGxhYmVsXHJcbiAgICAgICAgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIG1iLTAgdy0xMDBcIlxyXG4gICAgICAgIHN0eWxlPVwiY3Vyc29yOiBwb2ludGVyXCJcclxuICAgICAgICAoY2xpY2spPVwiY29sLmV4cGFuZGVkRmlsdGVyID0gIWNvbC5leHBhbmRlZEZpbHRlclwiXHJcbiAgICAgID5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtdHJ1bmNhdGUgZnctYm9sZFwiPnt7IGNvbC5oZWFkZXIgfX08L3NwYW4+XHJcbiAgICAgIDwvbGFiZWw+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8IS0tIFNob3cgZmlsdGVyIHdoZW4gZXhwYW5kZWQgLS0+XHJcbiAgICA8ZGl2ICpuZ0lmPVwiY29sLmV4cGFuZGVkRmlsdGVyXCIgY2xhc3M9XCJwcy00IHBlLTNcIj5cclxuICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwic2lkZU5lc3RlZEZpbHRlcjsgY29udGV4dDogeyBjb2w6IGNvbCB9XCJcclxuICAgICAgPjwvbmctY29udGFpbmVyPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48IS0tIFNpZGUgTmVzdGVkIEZpbHRlcnMgLS0+XHJcbjxuZy10ZW1wbGF0ZSAjc2lkZU5lc3RlZEZpbHRlciBsZXQtY29sPVwiY29sXCI+XHJcbiAgPGRpdiBjbGFzcz1cIlwiPlxyXG4gICAgPCEtLSBEcm9wZG93biBUeXBlIC0tPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbC50eXBlID09PSAnZHJvcGRvd24nOyBlbHNlIHRleHRGaWx0ZXJcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInAtMVwiPlxyXG4gICAgICAgIDwhLS0gU2VhcmNoIC0tPlxyXG4gICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtIG1iLTJcIlxyXG4gICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWFyY2guLi5cIlxyXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJzaWRlTmVzdGVkRmlsdGVyU2VhcmNoXCJcclxuICAgICAgICAvPlxyXG5cclxuICAgICAgICA8IS0tIFNlbGVjdCBBbGwgLS0+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgbWItMSBtcy0xIHNlbGVjdC1hbGwtZmlsdGVyXCI+XHJcbiAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCJcclxuICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICAgICAgW2NoZWNrZWRdPVwiXHJcbiAgICAgICAgICAgICAgY29sLnF1ZXJ5Py5faWRzPy5sZW5ndGggPT0gY29sPy5jb2x1bW5fZHJvcGRvd25fdmFsdWU/Lmxlbmd0aFxyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAoY2hhbmdlKT1cInRvZ2dsZVNlbGVjdEFsbFNpZGVGaWx0ZXJzKGNvbCwgJGV2ZW50KVwiXHJcbiAgICAgICAgICAgIGlkPVwic2VsZWN0QWxsX3t7IGNvbC5maWVsZCB9fVwiXHJcbiAgICAgICAgICAvPlxyXG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbFwiIGZvcj1cInNlbGVjdEFsbF97eyBjb2wuZmllbGQgfX1cIj5cclxuICAgICAgICAgICAgU2VsZWN0IEFsbFxyXG4gICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPCEtLSBPcHRpb25zIC0tPlxyXG4gICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImRyb3Bkb3duLW9wdGlvbnNcIj5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrIG1iLTEgbXMtMVwiXHJcbiAgICAgICAgICAgICpuZ0Zvcj1cIlxyXG4gICAgICAgICAgICAgIGxldCBvcHRpb24gb2YgY29sPy5jb2x1bW5fZHJvcGRvd25fdmFsdWVcclxuICAgICAgICAgICAgICAgIHwgZmlsdGVyIDogc2lkZU5lc3RlZEZpbHRlclNlYXJjaCA6ICd2YWx1ZSdcclxuICAgICAgICAgICAgXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCJcclxuICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxyXG4gICAgICAgICAgICAgIFt2YWx1ZV09XCJvcHRpb25cIlxyXG4gICAgICAgICAgICAgIFtjaGVja2VkXT1cIlxyXG4gICAgICAgICAgICAgICAgY29sLnF1ZXJ5Py5faWRzPy5pbmNsdWRlcyhvcHRpb24/Ll9pZCB8fCBvcHRpb24/LmlkIHx8IG9wdGlvbilcclxuICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgIChjaGFuZ2UpPVwib25PcHRpb25Ub2dnbGUoY29sLCBvcHRpb24pXCJcclxuICAgICAgICAgICAgICBpZD1cIm9wdGlvbl97eyBjb2wuZmllbGQgfX1fe3tcclxuICAgICAgICAgICAgICAgIG9wdGlvbj8uaWQgfHwgb3B0aW9uPy5faWQgfHwgb3B0aW9uXHJcbiAgICAgICAgICAgICAgfX1cIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICA8bGFiZWxcclxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWxcIlxyXG4gICAgICAgICAgICAgIFtmb3JdPVwiXHJcbiAgICAgICAgICAgICAgICAnb3B0aW9uXycgK1xyXG4gICAgICAgICAgICAgICAgY29sLmZpZWxkICtcclxuICAgICAgICAgICAgICAgICdfJyArXHJcbiAgICAgICAgICAgICAgICAob3B0aW9uPy5pZCB8fCBvcHRpb24/Ll9pZCB8fCBvcHRpb24pXHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIHt7IG9wdGlvbi52YWx1ZSB8fCBvcHRpb24gfX1cclxuICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PiAtLT5cclxuICAgICAgICA8Y2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0XHJcbiAgICAgICAgICAgIGl0ZW1TaXplPVwiMzJcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImRyb3Bkb3duLXZpZXdwb3J0XCJcclxuICAgICAgICAgICAgc3R5bGU9XCJoZWlnaHQ6IDEyMHB4XCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjayBtYi0xIG1zLTFcIlxyXG4gICAgICAgICAgICAgICpjZGtWaXJ0dWFsRm9yPVwiXHJcbiAgICAgICAgICAgICAgICBsZXQgb3B0aW9uIG9mIGNvbD8uY29sdW1uX2Ryb3Bkb3duX3ZhbHVlXHJcbiAgICAgICAgICAgICAgICAgIHwgZmlsdGVyIDogc2lkZU5lc3RlZEZpbHRlclNlYXJjaCA6ICd2YWx1ZSdcclxuICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIlxyXG4gICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJvcHRpb25cIlxyXG4gICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiXHJcbiAgICAgICAgICAgICAgICAgIGNvbC5xdWVyeT8uX2lkcz8uaW5jbHVkZXMob3B0aW9uPy5faWQgfHwgb3B0aW9uPy5pZCB8fCBvcHRpb24pXHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJvbk9wdGlvblRvZ2dsZShjb2wsIG9wdGlvbilcIlxyXG4gICAgICAgICAgICAgICAgaWQ9XCJvcHRpb25fe3sgY29sLmZpZWxkIH19X3t7XHJcbiAgICAgICAgICAgICAgICAgIG9wdGlvbj8uaWQgfHwgb3B0aW9uPy5faWQgfHwgb3B0aW9uXHJcbiAgICAgICAgICAgICAgICB9fVwiXHJcbiAgICAgICAgICAgICAgLz5cclxuXHJcbiAgICAgICAgICAgICAgPGxhYmVsXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgW2Zvcl09XCJcclxuICAgICAgICAgICAgICAgICAgJ29wdGlvbl8nICtcclxuICAgICAgICAgICAgICAgICAgY29sLmZpZWxkICtcclxuICAgICAgICAgICAgICAgICAgJ18nICtcclxuICAgICAgICAgICAgICAgICAgKG9wdGlvbj8uaWQgfHwgb3B0aW9uPy5faWQgfHwgb3B0aW9uKVxyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICB7eyBvcHRpb24udmFsdWUgfHwgb3B0aW9uIH19XHJcbiAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Nkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydD5cclxuXHJcblxyXG4gICAgICAgIDwhLS0gQWN0aW9ucyAtLT5cclxuICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJkLWZsZXggZ2FwLTIgbXQtMlwiPlxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1wcmltYXJ5IGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICAgICAgc3R5bGU9XCJoZWlnaHQ6IDIycHg7XCJcclxuICAgICAgICAoY2xpY2spPVwiYXBwbHlTaWRlRmlsdGVyKGNvbClcIlxyXG4gICAgICA+XHJcbiAgICAgICAgQXBwbHlcclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXZcclxuICAgICAgICBjbGFzcz1cImJ0biBidG4tc20gYnRuLXNlY29uZGFyeSBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIiBcclxuICAgICAgICBzdHlsZT1cImhlaWdodDogMjJweDtcIlxyXG4gICAgICAgIChjbGljayk9XCJyZXNldFNpZGVGaWx0ZXIoY29sKVwiXHJcbiAgICAgID5cclxuICAgICAgICBSZXNldFxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PiAtLT5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICA8IS0tIFRleHQgRmlsdGVyIFNlY3Rpb24gLS0+XHJcbiAgICA8bmctdGVtcGxhdGUgI3RleHRGaWx0ZXI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJmaWx0ZXItdGV4dC1zZWN0aW9uXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgbWItMlwiPlxyXG4gICAgICAgICAgPHNlbGVjdFxyXG4gICAgICAgICAgICBjbGFzcz1cImZvcm0tc2VsZWN0IGZvcm0tc2VsZWN0LXNtXCJcclxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjb2wucXVlcnkuZmlyc3RfY29uZGl0aW9uXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbC50eXBlICE9PSAnZGF0ZSdcIj5cclxuICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiY29udGFpblwiPkNvbnRhaW5zPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJkb2VzX25vdF9jb250YWluXCI+RG9lcyBOb3QgQ29udGFpbjwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJlcXVhbFwiPkVxdWFsczwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJiZWZvcmVcIj5TdGFydHMgV2l0aDwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJhZnRlclwiPkVuZHMgV2l0aDwvb3B0aW9uPlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2wudHlwZSA9PSAnZGF0ZSdcIj5cclxuICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiZXF1YWxcIj5FcXVhbHMgVG88L29wdGlvbj5cclxuICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIm5vdF9lcXVhbFwiPk5vdCBFcXVhbDwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJhZnRlclwiPkFmdGVyPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImJlZm9yZVwiPkJlZm9yZTwvb3B0aW9uPlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8aW5wdXRcclxuICAgICAgICAgIFt0eXBlXT1cImNvbC50eXBlID09ICdkYXRlJyA/ICdkYXRlJyA6ICd0ZXh0J1wiXHJcbiAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc20gbWItM1wiXHJcbiAgICAgICAgICBwbGFjZWhvbGRlcj1cIlZhbHVlXCJcclxuICAgICAgICAgIFsobmdNb2RlbCldPVwiY29sIS5xdWVyeSEuZmlyc3RfdmFsdWVcIlxyXG4gICAgICAgIC8+XHJcblxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgIGNsYXNzPVwiZm9ybS1ncm91cCBtYi0zIGQtZmxleCBmbGV4LXJvdyBtdXRlZFwiXHJcbiAgICAgICAgICBzdHlsZT1cImZvbnQtc2l6ZTogMTRweFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2sgZm9ybS1jaGVjay1pbmxpbmUgbS0wIGNvbC00IGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTFcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2staW5wdXQgZmlsdGVyLXJhZGlvLWlucHV0c1wiXHJcbiAgICAgICAgICAgICAgdHlwZT1cInJhZGlvXCJcclxuICAgICAgICAgICAgICBuYW1lPVwiY29uZGl0aW9uXCJcclxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNvbCEucXVlcnkuY29uZGl0aW9uXCJcclxuICAgICAgICAgICAgICB2YWx1ZT1cImFuZFwiXHJcbiAgICAgICAgICAgICAgaWQ9XCJhbmRfe3sgY29sLmZpZWxkIH19XCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbCBtYi0wIG10LTFcIiBmb3I9XCJhbmRfe3sgY29sLmZpZWxkIH19XCJcclxuICAgICAgICAgICAgICA+QU5EPC9sYWJlbFxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrIGZvcm0tY2hlY2staW5saW5lIG0tMCBjb2wtNCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0xXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0IGZpbHRlci1yYWRpby1pbnB1dHNcIlxyXG4gICAgICAgICAgICAgIHR5cGU9XCJyYWRpb1wiXHJcbiAgICAgICAgICAgICAgbmFtZT1cImNvbmRpdGlvblwiXHJcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjb2whLnF1ZXJ5LmNvbmRpdGlvblwiXHJcbiAgICAgICAgICAgICAgdmFsdWU9XCJvclwiXHJcbiAgICAgICAgICAgICAgaWQ9XCJvcl97eyBjb2wuZmllbGQgfX1cIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsIG1iLTAgbXQtMVwiIGZvcj1cIm9yX3t7IGNvbC5maWVsZCB9fVwiXHJcbiAgICAgICAgICAgICAgPk9SPC9sYWJlbFxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrIGZvcm0tY2hlY2staW5saW5lIG0tMCBjb2wtNCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0xXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0IGZpbHRlci1yYWRpby1pbnB1dHNcIlxyXG4gICAgICAgICAgICAgIHR5cGU9XCJyYWRpb1wiXHJcbiAgICAgICAgICAgICAgbmFtZT1cImNvbmRpdGlvblwiXHJcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjb2whLnF1ZXJ5LmNvbmRpdGlvblwiXHJcbiAgICAgICAgICAgICAgdmFsdWU9XCJub25lXCJcclxuICAgICAgICAgICAgICBpZD1cIm5vbmVfe3sgY29sLmZpZWxkIH19XCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgPGxhYmVsXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJubm9uZW0tY2hlY2stbGFiZWwgbWItMCBtdC0xXCJcclxuICAgICAgICAgICAgICBmb3I9XCJub25lX3t7IGNvbC5maWVsZCB9fVwiXHJcbiAgICAgICAgICAgICAgPk5vbmU8L2xhYmVsXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICpuZ0lmPVwiY29sPy5xdWVyeT8uZmlyc3RfdmFsdWUgJiYgY29sPy5xdWVyeT8uY29uZGl0aW9uICE9PSAnbm9uZSdcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIG1iLTJcIj5cclxuICAgICAgICAgICAgPHNlbGVjdFxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1zZWxlY3QgZm9ybS1zZWxlY3Qtc21cIlxyXG4gICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY29sIS5xdWVyeS5zZWNvbmRfY29uZGl0aW9uXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2wudHlwZSAhPT0gJ2RhdGUnXCI+XHJcbiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiY29udGFpblwiPkNvbnRhaW5zPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiZG9lc19ub3RfY29udGFpblwiPkRvZXMgTm90IENvbnRhaW48L29wdGlvbj5cclxuICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJlcXVhbFwiPkVxdWFsczwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImJlZm9yZVwiPlN0YXJ0cyBXaXRoPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiYWZ0ZXJcIj5FbmRzIFdpdGg8L29wdGlvbj5cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbC50eXBlID09ICdkYXRlJ1wiPlxyXG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImVxdWFsXCI+RXF1YWxzIFRvPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIm5vdF9lcXVhbFwiPk5vdCBFcXVhbDwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImFmdGVyXCI+QWZ0ZXI8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJiZWZvcmVcIj5CZWZvcmU8L29wdGlvbj5cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC9zZWxlY3Q+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgW3R5cGVdPVwiY29sLnR5cGUgPT0gJ2RhdGUnID8gJ2RhdGUnIDogJ3RleHQnXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtIG1iLTNcIlxyXG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlY29uZCBWYWx1ZVwiXHJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY29sIS5xdWVyeS5zZWNvbmRfdmFsdWVcIlxyXG4gICAgICAgICAgLz5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJkLWZsZXggZ2FwLTJcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1wcmltYXJ5IGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiIHN0eWxlPVwiaGVpZ2h0OiAyMnB4O1wiIChjbGljayk9XCJhcHBseURyb3Bkb3duRmlsdGVyKClcIj5hcHBseTwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImJ0biBidG4tc20gYnRuLXNlY29uZGFyeSBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIiBzdHlsZT1cImhlaWdodDogMjJweDtcIiAoY2xpY2spPVwiYXBwbHlEcm9wZG93bkZpbHRlcigpXCI+cmVzZXQ8L2Rpdj5cclxuXHJcbiAgICAgICAgPC9kaXY+IC0tPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICA8ZGl2XHJcbiAgICAgIGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgZ2FwLTIgYm9yZGVyLXRvcFwiXHJcbiAgICAgIHN0eWxlPVwiaGVpZ2h0OiAzOHB4XCJcclxuICAgID5cclxuICAgICAgPGJ1dHRvblxyXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgIHN0eWxlPVwibWF4LWhlaWdodDogMzBweFwiXHJcbiAgICAgICAgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtc2Vjb25kYXJ5IGJ0bi1saWdodCBib3JkZXIgdy0xMDAgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIG10LTEgYnRuLWxpZ2h0XCJcclxuICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyByZW1vdmVTaWRlRmlsdGVyKGNvbClcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPHNwYW4+Q2xlYXI8L3NwYW4+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8YnV0dG9uXHJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgc3R5bGU9XCJtYXgtaGVpZ2h0OiAzMHB4XCJcclxuICAgICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSB3LTEwMCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXIgbXQtMVwiXHJcbiAgICAgICAgKGNsaWNrKT1cImFwcGx5U2lkZUZpbHRlcihjb2wpXCJcclxuICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiKGNvbD8ucXVlcnkuY29uZGl0aW9uICE9PSAnbm9uZScgJiYgIWNvbD8ucXVlcnk/LnNlY29uZF92YWx1ZSlcIlxyXG4gICAgICAgIFtjbGFzcy5wZS1ub25lXT1cIihjb2whPy5xdWVyeS5jb25kaXRpb24gIT09ICdub25lJyAmJiAhY29sPy5xdWVyeT8uc2Vjb25kX3ZhbHVlKVwiXHJcbiAgICAgID5cclxuICAgICAgICA8c3BhbiBzdHlsZT1cIm1hcmdpbi10b3A6IC0xcHhcIj5BcHBseTwvc3Bhbj5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjwhLS0gQ2VudHIgT3ZlcmxheSBmb3Igc2hvd2luZyB0aGUgY2hvc2UgY29sdW1ucyAtLT5cclxuXHJcbjxkaXYgKm5nSWY9XCJzaG93Q29sdW1uUGFuZWxcIiBjbGFzcz1cImN1c3RvbS1tb2RhbC1vdmVybGF5XCI+XHJcbiAgPGRpdlxyXG4gICAgY2xhc3M9XCJjdXN0b20tbW9kYWwtY29udGVudFwiXHJcbiAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cImRyb3Bkb3duc0JhY2tncm91bmRDb2xvclwiXHJcbiAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcclxuICA+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibW9kYWxDb2x1bW5QYW5uZWxcIj48L25nLWNvbnRhaW5lcj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG48IS0tIFRoZSBleGlzdGluZyBuZy10ZW1wbGF0ZSB5b3UgcHJvdmlkZWQgLS0+XHJcbjxuZy10ZW1wbGF0ZSAjbW9kYWxDb2x1bW5QYW5uZWw+XHJcbiAgPGRpdiBjbGFzcz1cImNvbHVtbi1wYW5lbC1oZWFkZXJcIj5cclxuICAgIDxkaXZcclxuICAgICAgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIHB4LTIgcHMtMyByb3VuZGVkLXRvcC0yIG1vZGEtaGVhZGVyXCJcclxuICAgICAgW3N0eWxlLmhlaWdodC5weF09XCI0OFwiXHJcbiAgICA+XHJcbiAgICAgIENob29zZSBDb2x1bW5zXHJcbiAgICAgIDxzcGFuIGNsYXNzPVwiZmlsdGVyLWljb24td3JhcHBlclwiIChjbGljayk9XCJjbG9zZU1vZGFsQ29sdW1uUGFuZWwoKVwiXHJcbiAgICAgICAgPjxzcGFuXHJcbiAgICAgICAgICBbaW5saW5lU1ZHXT1cInNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL3guc3ZnJ1wiXHJcbiAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxyXG4gICAgICAgID48L3NwYW5cclxuICAgICAgPjwvc3Bhbj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGhyIGNsYXNzPVwibXktMFwiIC8+XHJcbiAgICA8ZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBweC0yIHBlLTNcIiBbc3R5bGUuaGVpZ2h0LnB4XT1cIjQ4XCI+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJmaWx0ZXItaWNvbi13cmFwcGVyIG1lLTJcIiAqbmdJZj1cInNob3dDb2x1bW5zR3JvdXBpbmdcIj5cclxuICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgIGNsYXNzPVwidG9nZ2xlLWljb24gZGF0YS1ncmlkLXN2Zy1pY29uXCJcclxuICAgICAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgICAgICBhY2NvcmRpb25TdGF0ZSA9PT0gJ2FsbCdcclxuICAgICAgICAgICAgICAgID8gc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvY2hldnJvbi1kb3duLnN2ZydcclxuICAgICAgICAgICAgICAgIDogYWNjb3JkaW9uU3RhdGUgPT09ICdzb21lJ1xyXG4gICAgICAgICAgICAgICAgPyBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9kYXNoLnN2ZydcclxuICAgICAgICAgICAgICAgIDogc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvY2hldnJvbi1yaWdodC5zdmcnXHJcbiAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVBbGxBY2NvcmRpb25zKClcIlxyXG4gICAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxyXG4gICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0IG1lLTJcIlxyXG4gICAgICAgICAgW2NoZWNrZWRdPVwiYWxsQ29sdW1uc1NlbGVjdGVkKClcIlxyXG4gICAgICAgICAgKGNoYW5nZSk9XCJ0b2dnbGVBbGxDb2x1bW5zVmlzaWJpbGl0eSgpXCJcclxuICAgICAgICAvPlxyXG4gICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtXCJcclxuICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VhcmNoIGNvbHVtbnMuLi5cIlxyXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJjaG9zZUNvbHVtbnNTZWFyY2hcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGhyIGNsYXNzPVwibXQtMCBtYi0xXCIgLz5cclxuICAgICAgPGRpdiBjbGFzcz1cInB4LTIgb3ZlcmxheS1zY3JvbGxhYmxlXCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgKm5nRm9yPVwiXHJcbiAgICAgICAgICAgIGxldCBjb2wgb2YgY29sdW1ucyB8IGZpbHRlciA6IGNob3NlQ29sdW1uc1NlYXJjaCA6ICdoZWFkZXInO1xyXG4gICAgICAgICAgICB0cmFja0J5OiB0cmFja0J5RmllbGRcclxuICAgICAgICAgIFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImNvbHVtblBhbmVsSXRlbTsgY29udGV4dDogeyBjb2w6IGNvbCB9XCJcclxuICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjc2lkZU1lbnVSb3dHcm91cHM+XHJcbiAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBoLTEwMCBkLW5vbmVcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJweC0zIGgtMTAwXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZ2FwLTMgbWItNFwiPlxyXG4gICAgICAgIDxzcGFuXHJcbiAgICAgICAgICBbaW5saW5lU1ZHXT1cInNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2p1c3RpZnkuc3ZnJ1wiXHJcbiAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxyXG4gICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgPHNwYW4+Um93IEdyb3Vwczwvc3Bhbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJoLTUwXCI+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgY2xhc3M9XCJweC0zIHB5LTIgYm9yZGVyLWRhc2hlZCBoLTEwMCBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxyXG4gICAgICAgICAgc3R5bGU9XCJmb250LXNpemU6IDE0cHhcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIERyYWcgaGVyZSB0byBzZXQgcm93IEdyb3Vwc1xyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxociBjbGFzcz1cIm10LTRcIiAvPlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJweC0zIGgtMTAwXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZ2FwLTMgbWItNFwiPlxyXG4gICAgICAgIDxzcGFuXHJcbiAgICAgICAgICBbaW5saW5lU1ZHXT1cInNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2p1c3RpZnkuc3ZnJ1wiXHJcbiAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxyXG4gICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgPHNwYW4+VmFsdWVzPC9zcGFuPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImgtNTAgZC1mbGV4XCI+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgY2xhc3M9XCJweC0zIHB5LTIgYm9yZGVyLWRhc2hlZCBoLTEwMCBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxyXG4gICAgICAgICAgc3R5bGU9XCJmb250LXNpemU6IDE0cHhcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIERyYWcgaGVyZSBhZ2dyZWdhdGVcclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjwhLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC0tPlxyXG48IS0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAtLT5cclxuPCEtLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLS0+XHJcbjwhLS0gRHJhZyBQcmV2aWV3IFRlbXBsYXRlIC0tPlxyXG48IS0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAtLT5cclxuPCEtLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLS0+XHJcbjxuZy10ZW1wbGF0ZSAjZHJhZ1ByZXZpZXcgbGV0LWNvbD5cclxuICA8ZGl2IGNsYXNzPVwicC0yIGJvcmRlciBkLWZsZXggZ2FwLTJcIj5cclxuICAgIDxkaXY+XHJcbiAgICAgIDxzcGFuXHJcbiAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9hcnJvd3MtbW92ZS5zdmcnXCJcclxuICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxyXG4gICAgICA+PC9zcGFuPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2Pnt7IGNvbC5oZWFkZXIgfX08L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjwhLS0gRHJhZyBQbGFjZWhvbGRlciBUZW1wbGF0ZSAtLT5cclxuPG5nLXRlbXBsYXRlXHJcbiAgI2RyYWdQbGFjZWhvbGRlclxyXG4gIGxldC1jb2xcclxuICBsZXQtaT1cImluZGV4XCJcclxuICBsZXQtc2VjdGlvbj1cInNlY3Rpb25cIlxyXG4gIGxldC1kcmFnZ2luZ0luR3JvdXBBcmVhPVwiZHJhZ2dpbmdJbkdyb3VwQXJlYVwiXHJcbj5cclxuICA8ZGl2ICpuZ0lmPVwiIWRyYWdnaW5nSW5Hcm91cEFyZWFcIj5cclxuICAgIDxkaXZcclxuICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcclxuICAgICAgICBoZWFkZXJDZWxsO1xyXG4gICAgICAgIGNvbnRleHQ6IHsgJGltcGxpY2l0OiBjb2wsIGluZGV4OiBpLCBzZWN0aW9uOiBzZWN0aW9uIH1cclxuICAgICAgXCJcclxuICAgID48L2Rpdj5cclxuICA8L2Rpdj5cclxuICA8ZGl2ICpuZ0lmPVwiZHJhZ2dpbmdJbkdyb3VwQXJlYVwiPk5ldyBQbGFjZWhvbGRlcjwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPCEtLSBUb3AgR3JvdXAgUm93IFBsYWNlaG9sZGVyIC0tPlxyXG48bmctdGVtcGxhdGUgI3RvcEdyb3VwaW5nUm93UGxhY2Vob2xkZXIgbGV0LWNvbCBsZXQtc2hvd0NoZXZyb249XCJzaG93Q2hldnJvblwiPlxyXG4gIDxkaXYgY2xhc3M9XCJkLWZsZXggZ2FwLTJcIj5cclxuICAgIDxkaXZcclxuICAgICAgY2xhc3M9XCJkLWZsZXggZ2FwLTIgdG9wLXJvdy1ncm91cGluZy1wbGFjZWhvbGRlclwiXHJcbiAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwidG9wR3JvdXBlZEJhZGdlc0JhY2tncm91bmRDb2xvclwiXHJcbiAgICA+XHJcbiAgICAgIDxzcGFuXHJcbiAgICAgICAgY2RrRHJhZ0hhbmRsZVxyXG4gICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvZ3JpZC0zeDItZ2FwLnN2ZydcIlxyXG4gICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICAgID48L3NwYW4+XHJcbiAgICAgIDxzcGFuPnt7IGNvbC5oZWFkZXIgfX08L3NwYW4+XHJcbiAgICAgIDxzcGFuXHJcbiAgICAgICAgKGNsaWNrKT1cInVuZ3JvdXBDb2x1bW4oY29sKVwiXHJcbiAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy94LnN2ZydcIlxyXG4gICAgICAgIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXIgZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICAgID48L3NwYW4+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuICA8ZGl2ICpuZ0lmPVwic2hvd0NoZXZyb25cIiBzdHlsZT1cIm9wYWNpdHk6IDAuNjsgZm9udC1zaXplOiAxNHB4XCI+XHJcbiAgICA8c3BhblxyXG4gICAgICBbaW5saW5lU1ZHXT1cInNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2NoZXZyb24tcmlnaHQuc3ZnJ1wiXHJcbiAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICA+PC9zcGFuPlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlXHJcbiAgI2NoaWxkSGVhZGVyUGxhY2Vob2xkZXJcclxuICBsZXQtY29sXHJcbiAgbGV0LXBpbm5lZFJpZ2h0PVwicGlubmVkUmlnaHRcIlxyXG4gIGxldC1pPVwiaW5kZXhcIlxyXG4gIGxldC1zZWN0aW9ucz1cInNlY3Rpb25zXCJcclxuPlxyXG4gIDxkaXZcclxuICAgIGNsYXNzPVwiaGVhZGVyLWNlbGwgb25lLXJvdy1oZWFkZXItY2VsbHNcIlxyXG4gICAgW2NsYXNzLmJvcmRlci1yaWdodF09XCJzaG93VmVydGljYWxCb3JkZXJcIlxyXG4gICAgW3N0eWxlLndpZHRoLnB4XT1cImNvbC53aWR0aFwiXHJcbiAgICBbc3R5bGUubWluLXdpZHRoLnB4XT1cImNvbC53aWR0aFwiXHJcbiAgICBbc3R5bGUubWluLWhlaWdodC5weF09XCJoZWFkZXJSb3dIZWlnaHRcIlxyXG4gICAgW3N0eWxlLm1heC1oZWlnaHQucHhdPVwiaGVhZGVyUm93SGVpZ2h0XCJcclxuICAgIFtzdHlsZS5mb250V2VpZ2h0XT1cImhlYWRlckZvbnRXZWlnaHRcIlxyXG4gID5cclxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gaC0xMDAgYWxpZ24taXRlbXMtY2VudGVyIHctMTAwXCI+XHJcbiAgICAgIDxkaXZcclxuICAgICAgICBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXIgdy0xMDBcIlxyXG4gICAgICAgIFtjbGFzcy5mbGV4LXJvdy1yZXZlcnNlXT1cInBpbm5lZFJpZ2h0XCJcclxuICAgICAgPlxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgIGNsYXNzPVwidGV4dC1lbGxpcHNpcyBoLTEwMCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgICAgIFt0aXRsZV09XCJjb2wuaGVhZGVyXCJcclxuICAgICAgICAgIFtjbGFzcy53LTEwMF09XCJwaW5uZWRSaWdodFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAge3sgY29sLmhlYWRlciB9fVxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICBjbGFzcz1cInBvc2l0aW9uLXJlbGF0aXZlIGQtZmxleFwiXHJcbiAgICAgICAgICBbY2xhc3MuZmxleC1yb3ctcmV2ZXJzZV09XCJwaW5uZWRSaWdodFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRocmVlLWRvdHMgcC0xXCIgc3R5bGU9XCJjdXJzb3I6IHBvaW50ZXJcIj5cclxuICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxyXG4gICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvdGhyZWUtZG90cy12ZXJ0aWNhbC5zdmcnXHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxyXG4gICAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJlc2l6ZS1oYW5kbGVcIj5cclxuICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxyXG4gICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvcmVzaXplLWhhbmRsZS5zdmcnXHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxyXG4gICAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdlxyXG4gICAgKm5nSWY9XCJzaG93RmlsdGVyUm93XCJcclxuICAgIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwiaGVhZGVyQmFja2dyb3VuZENvbG9yXCJcclxuICAgIGNsYXNzPVwiaGVhZGVyLWNlbGwgZmlsdGVyLWNlbGxcIlxyXG4gICAgW2NsYXNzLmJvcmRlci1yaWdodF09XCJzaG93VmVydGljYWxCb3JkZXJcIlxyXG4gICAgW3N0eWxlLndpZHRoLnB4XT1cImNvbC53aWR0aFwiXHJcbiAgICBbc3R5bGUubWluLXdpZHRoLnB4XT1cImNvbC53aWR0aFwiXHJcbiAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cImhlYWRlclJvd0hlaWdodFwiXHJcbiAgICBbc3R5bGUubWluLWhlaWdodC5weF09XCJoZWFkZXJSb3dIZWlnaHRcIlxyXG4gICAgW3N0eWxlLm1heC1oZWlnaHQucHhdPVwiaGVhZGVyUm93SGVpZ2h0XCJcclxuICAgIFtjbGFzcy5ib3JkZXItcmlnaHRdPVwic2hvd1ZlcnRpY2FsQm9yZGVyXCJcclxuICAgIHN0eWxlPVwiZ3JpZC1yb3c6IDNcIlxyXG4gID5cclxuICAgIDxkaXZcclxuICAgICAgY2xhc3M9XCJoZWFkZXItY2VsbCBmaWx0ZXItY2VsbFwiXHJcbiAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwiaGVhZGVyQmFja2dyb3VuZENvbG9yXCJcclxuICAgICAgW3N0eWxlLndpZHRoLnB4XT1cImNvbC53aWR0aFwiXHJcbiAgICAgIFtzdHlsZS5taW4td2lkdGgucHhdPVwiY29sLndpZHRoXCJcclxuICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJoZWFkZXJSb3dIZWlnaHRcIlxyXG4gICAgICBbc3R5bGUubWluLWhlaWdodC5weF09XCJoZWFkZXJSb3dIZWlnaHRcIlxyXG4gICAgICBbc3R5bGUubWF4LWhlaWdodC5weF09XCJoZWFkZXJSb3dIZWlnaHRcIlxyXG4gICAgPlxyXG4gICAgICA8aW5wdXRcclxuICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtXCJcclxuICAgICAgICBwbGFjZWhvbGRlcj1cIkZpbHRlclwiXHJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJjb2wuZmlsdGVyVmFsdWVcIlxyXG4gICAgICAgIFtyZWFkb25seV09XCJjb2w/LnR5cGUgPT0gJ2Ryb3Bkb3duJyB8fCBjb2w/LnR5cGUgPT0gJ2ltYWdlJ1wiXHJcbiAgICAgICAgW2NsYXNzLmRpc2FibGVkLXNlYXJjaC1pbnB1dF09XCJcclxuICAgICAgICAgIGNvbD8udHlwZSA9PSAnZHJvcGRvd24nIHx8IGNvbD8udHlwZSA9PSAnaW1hZ2UnXHJcbiAgICAgICAgXCJcclxuICAgICAgLz5cclxuICAgICAgPHNwYW5cclxuICAgICAgICBjbGFzcz1cImZpbHRlci1pY29uLXdyYXBwZXJcIlxyXG4gICAgICAgIChjbGljayk9XCJhY3RpdmVGaWx0ZXJDZWxsID0gY29sOyBhY3RpdmVDb2wgPSBudWxsXCJcclxuICAgICAgICA+PHNwYW5cclxuICAgICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvZmlsdGVyLTIuc3ZnJ1wiXHJcbiAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxyXG4gICAgICAgID48L3NwYW5cclxuICAgICAgPjwvc3Bhbj5cclxuXHJcbiAgICAgIDxkaXZcclxuICAgICAgICBjbGFzcz1cInBvc2l0aW9uLWFic29sdXRlXCJcclxuICAgICAgICAqbmdJZj1cImFjdGl2ZUZpbHRlckNlbGwgPT09IGNvbFwiXHJcbiAgICAgICAgc3R5bGU9XCJ0b3A6IDEwMCU7IHJpZ2h0OiAwOyB6LWluZGV4OiAxMDsgbGVmdDogMFwiXHJcbiAgICAgID48L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICN0YWJsZUxheW91dD5cclxuICA8ZGl2XHJcbiAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcclxuICAgIGNsYXNzPVwicC0zIHNoYWRvdyBhY3Rpb25zLWRyb3Bkb3duIG10LTEgZHJvcGRvd24tbWVudSBzaG93IHNoYWRvdyBjdXN0b20tbWVudSB0YWJsZS1sYXlvdXRcIlxyXG4gICAgc3R5bGU9XCJ3aWR0aDogMzIwcHhcIlxyXG4gID5cclxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIG1iLTNcIj5cclxuICAgICAgPGJ1dHRvblxyXG4gICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1saW5rIHAtMFwiXHJcbiAgICAgICAgc3R5bGU9XCJtYXJnaW4tbGVmdDogLTEwcHhcIlxyXG4gICAgICAgIChjbGljayk9XCJ0b2dnbGVBY3Rpb25zKCdzZXR0aW5nJylcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPHNwYW5cclxuICAgICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvYXJyb3ctbGVmdC5zdmcnXCJcclxuICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIG1lLTJcIlxyXG4gICAgICAgID48L3NwYW4+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8aDYgY2xhc3M9XCJtYi0wIG1zLTJcIiBzdHlsZT1cImZvbnQtd2VpZ2h0OiA1MDBcIj5UYWJsZSBMYXlvdXQ8L2g2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8aHIgY2xhc3M9XCJteS0yXCIgLz5cclxuICAgIDxkaXYgY2xhc3M9XCJ3LTEwMCBtYi0zIGQtZmxleFwiIHJvbGU9XCJncm91cFwiPlxyXG4gICAgICA8aW5wdXRcclxuICAgICAgICB0eXBlPVwicmFkaW9cIlxyXG4gICAgICAgIGNsYXNzPVwiYnRuLWNoZWNrIGxheW91dC1idXR0b24tY2hlY2tcIlxyXG4gICAgICAgIG5hbWU9XCJsYXlvdXRTaXplXCJcclxuICAgICAgICBpZD1cInNtYWxsXCJcclxuICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxyXG4gICAgICAgIChjaGFuZ2UpPVwiY2hhbmdlVGFibGVMYXlvdXQoJGV2ZW50LCAnc21hbGwnKVwiXHJcbiAgICAgICAgW2NoZWNrZWRdPVwic2VsZWN0ZWRUYWJsZUxheW91dCA9PSAnc21hbGwnXCJcclxuICAgICAgLz5cclxuICAgICAgPGxhYmVsXHJcbiAgICAgICAgY2xhc3M9XCJib3JkZXIgZC1mbGV4IGZsZXgtY29sdW1uIGFsaWduLWl0ZW1zLWNlbnRlciBsYXlvdXQtYnV0dG9uXCJcclxuICAgICAgICBmb3I9XCJzbWFsbFwiXHJcbiAgICAgICAgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgY29sb3I6IHNlbGVjdGVkVGFibGVMYXlvdXQgPT0gJ3NtYWxsJyA/ICcjMDAwJyA6ICcjNzI3MjcyJ1xyXG4gICAgICAgIH1cIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInByZXZpZXctYm94IGJvcmRlciBtYi0xXCIgc3R5bGU9XCJoZWlnaHQ6IDhweFwiPjwvZGl2PlxyXG4gICAgICAgIFNtYWxsXHJcbiAgICAgIDwvbGFiZWw+XHJcblxyXG4gICAgICA8aW5wdXRcclxuICAgICAgICB0eXBlPVwicmFkaW9cIlxyXG4gICAgICAgIGNsYXNzPVwiYnRuLWNoZWNrIGxheW91dC1idXR0b24tY2hlY2tcIlxyXG4gICAgICAgIG5hbWU9XCJsYXlvdXRTaXplXCJcclxuICAgICAgICBpZD1cIm1lZGl1bVwiXHJcbiAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcclxuICAgICAgICBbY2hlY2tlZF09XCJzZWxlY3RlZFRhYmxlTGF5b3V0ID09ICdtZWRpdW0nXCJcclxuICAgICAgICAoY2hhbmdlKT1cImNoYW5nZVRhYmxlTGF5b3V0KCRldmVudCwgJ21lZGl1bScpXCJcclxuICAgICAgLz5cclxuICAgICAgPGxhYmVsXHJcbiAgICAgICAgY2xhc3M9XCJib3JkZXIgbXgtMyBkLWZsZXggZmxleC1jb2x1bW4gYWxpZ24taXRlbXMtY2VudGVyIGxheW91dC1idXR0b25cIlxyXG4gICAgICAgIGZvcj1cIm1lZGl1bVwiXHJcbiAgICAgICAgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgY29sb3I6IHNlbGVjdGVkVGFibGVMYXlvdXQgPT0gJ21lZGl1bScgPyAnIzAwMCcgOiAnIzcyNzI3MidcclxuICAgICAgICB9XCJcclxuICAgICAgPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJwcmV2aWV3LWJveCBib3JkZXIgbWItMVwiIHN0eWxlPVwiaGVpZ2h0OiAxMnB4XCI+PC9kaXY+XHJcbiAgICAgICAgTWVkaXVtXHJcbiAgICAgIDwvbGFiZWw+XHJcblxyXG4gICAgICA8aW5wdXRcclxuICAgICAgICB0eXBlPVwicmFkaW9cIlxyXG4gICAgICAgIGNsYXNzPVwiYnRuLWNoZWNrIGxheW91dC1idXR0b24tY2hlY2tcIlxyXG4gICAgICAgIG5hbWU9XCJsYXlvdXRTaXplXCJcclxuICAgICAgICBpZD1cImxhcmdlXCJcclxuICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxyXG4gICAgICAgIChjaGFuZ2UpPVwiY2hhbmdlVGFibGVMYXlvdXQoJGV2ZW50LCAnbGFyZ2UnKVwiXHJcbiAgICAgICAgW2NoZWNrZWRdPVwic2VsZWN0ZWRUYWJsZUxheW91dCA9PSAnbGFyZ2UnXCJcclxuICAgICAgLz5cclxuICAgICAgPGxhYmVsXHJcbiAgICAgICAgY2xhc3M9XCJib3JkZXIgZC1mbGV4IGZsZXgtY29sdW1uIGFsaWduLWl0ZW1zLWNlbnRlciBsYXlvdXQtYnV0dG9uXCJcclxuICAgICAgICBmb3I9XCJsYXJnZVwiXHJcbiAgICAgICAgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgY29sb3I6IHNlbGVjdGVkVGFibGVMYXlvdXQgPT0gJ2xhcmdlJyA/ICcjMDAwJyA6ICcjNzI3MjcyJ1xyXG4gICAgICAgIH1cIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInByZXZpZXctYm94IGJvcmRlciBtYi0xXCIgc3R5bGU9XCJoZWlnaHQ6IDE2cHhcIj48L2Rpdj5cclxuICAgICAgICBMYXJnZVxyXG4gICAgICA8L2xhYmVsPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGhyIGNsYXNzPVwibXktMlwiIC8+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciBtYi0yXCI+XHJcbiAgICAgIDxzcGFuPlNob3cgc2VwYXJhdG9yczwvc3Bhbj5cclxuICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgZm9ybS1zd2l0Y2ggbS0wXCI+XHJcbiAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIlxyXG4gICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICAgIGlkPVwic2VwYXJhdG9yc1wiXHJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cInNob3dWZXJ0aWNhbEJvcmRlclwiXHJcbiAgICAgICAgICAoY2hhbmdlKT1cIm9uRm9udENoYW5nZSgpXCJcclxuICAgICAgICAvPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgPHNwYW4+Um93IHNoYWRpbmc8L3NwYW4+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrIGZvcm0tc3dpdGNoIG0tMFwiPlxyXG4gICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCJcclxuICAgICAgICAgIFsobmdNb2RlbCldPVwicm93U2hhZGluZ0VuYWJsZWRcIlxyXG4gICAgICAgICAgKGNoYW5nZSk9XCJ0b2dnbGVSb3dTaGFkaW5nKClcIlxyXG4gICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICAgIGlkPVwicm93U2hhZGluZ1wiXHJcbiAgICAgICAgLz5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDwhLS0gPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXIgbWItMlwiPlxyXG4gICAgICA8c3Bhbj5TaG93IFNpZGUgTWVudTwvc3Bhbj5cclxuICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgZm9ybS1zd2l0Y2ggbS0wXCI+XHJcbiAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIlxyXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJzaG93U2lkZU1lbnVcIlxyXG4gICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICAgIGlkPVwicm93U2hhZGluZ1wiXHJcbiAgICAgICAgLz5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIG1iLTJcIj5cclxuICAgICAgPHNwYW4+U2hvdyBGaWx0ZXIgUm93PC9zcGFuPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBmb3JtLXN3aXRjaCBtLTBcIj5cclxuICAgICAgICA8aW5wdXRcclxuICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiXHJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cInNob3dGaWx0ZXJSb3dcIlxyXG4gICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICAgIGlkPVwicm93U2hhZGluZ1wiXHJcbiAgICAgICAgLz5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj4gLS0+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI3RhYmxlUHJlc2V0PlxyXG4gIDxkaXZcclxuICAgICpuZ0lmPVwiYWN0aXZlU3ViQnV0dG9uICE9PSAnc2F2ZS1wcmVzZXQnXCJcclxuICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxyXG4gICAgY2xhc3M9XCJwLTMgc2hhZG93IGFjdGlvbnMtZHJvcGRvd24gbXQtMSBkcm9wZG93bi1tZW51IHNob3cgc2hhZG93IGN1c3RvbS1tZW51IHRhYmxlLWxheW91dFwiXHJcbiAgICBzdHlsZT1cIndpZHRoOiAyODBweFwiXHJcbiAgPlxyXG4gICAgPCEtLSBIZWFkZXIgLS0+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciBtYi0zXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWxpbmsgcC0wXCJcclxuICAgICAgICAgIHN0eWxlPVwibWFyZ2luLWxlZnQ6IC0xMHB4XCJcclxuICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVBY3Rpb25zKCdzZXR0aW5nJylcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvYXJyb3ctbGVmdC5zdmcnXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb25cIlxyXG4gICAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8aDYgY2xhc3M9XCJtYi0wIG1zLTJcIiBzdHlsZT1cImZvbnQtd2VpZ2h0OiA1MDBcIj5UYWJsZSBQcmVzZXRzPC9oNj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDwhLS0gU2F2ZSBQcmVzZXQgQnV0dG9uIHdpdGggRHJvcGRvd24gLS0+XHJcbiAgICAgIDxkaXY+XHJcbiAgICAgICAgPGFcclxuICAgICAgICAgIGNsYXNzPVwidGV4dC1kZWNvcmF0aW9uLW5vbmUgdGV4dC1wcmltYXJ5XCJcclxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgaWQ9XCJzYXZlUHJlc2V0RHJvcGRvd25cIlxyXG4gICAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgdG9nZ2xlU3ViQWN0aW9ucygnc2F2ZS1wcmVzZXQnKVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAge3sgaXNUYWJsZVByZXNldE5vdENoYW5nZWQgPyBcIlNhdmUgcHJlc2V0XCIgOiBcIlVwZGF0ZSBQcmVzZXRcIiB9fVxyXG4gICAgICAgIDwvYT5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8IS0tIFNlYXJjaCAtLT5cclxuICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgZ2xvYmFsLXNlYXJjaFwiPlxyXG4gICAgICAgIDxzcGFuXHJcbiAgICAgICAgICBbaW5saW5lU1ZHXT1cInNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL3NlYXJjaC5zdmcnXCJcclxuICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIG14LTIgcG9zaXRpb24tYWJzb2x1dGUgaWNvblwiXHJcbiAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICA8aW5wdXRcclxuICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbVwiXHJcbiAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlYXJjaC4uLlwiXHJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cInNlYXJjaFRleHRQcmVzZXRUYWJsZVwiXHJcbiAgICAgICAgICB0eXBlPVwic2VhcmNoXCJcclxuICAgICAgICAvPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDwhLS0gUHJlc2V0IExpc3QgLS0+XHJcbiAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgdGFibGVWaWV3IHwgZmlsdGVyIDogc2VhcmNoVGV4dFByZXNldFRhYmxlIDogJ25hbWUnIGFzIGZpbHRlcmVkTGlzdFxyXG4gICAgICBcIlxyXG4gICAgPlxyXG4gICAgICA8IS0tIElmIGZpbHRlcmVkTGlzdCBleGlzdHMgYW5kIG5vbmUgaXMgZGVmYXVsdCAtPiBzaG93IGZhbGxiYWNrIC0tPlxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgY2xhc3M9XCIgcGItNSBvdmVyZmxvdy1hdXRvXCJcclxuICAgICAgICBbc3R5bGUubWF4SGVpZ2h0LnB4XT1cImRhdGFHcmlkQ29udGFpbmVyLm9mZnNldEhlaWdodCAtIDI1MFwiXHJcbiAgICAgID5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICBjbGFzcz1cImN1cnNvci1wb2ludGVyXCJcclxuICAgICAgICAgIChjbGljayk9XCJcclxuICAgICAgICAgICAgY2xlYXJBbGxGaWx0ZXJzKCk7XHJcbiAgICAgICAgICAgIG9wZW5JbmRleCA9IG51bGw7XHJcbiAgICAgICAgICAgIHRlbXBfc3RhdGUuaWQgPSAnJztcclxuICAgICAgICAgICAgYWN0aXZlVG9wQnV0dG9uID0gJyc7XHJcbiAgICAgICAgICAgIGN1cnJldGFUYWJsZVByZXNldEZvclVwZGF0ZSA9IG51bGxcclxuICAgICAgICAgIFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZ3LXNlbWlib2xkXCI+RGVmYXVsdCBWaWV3PC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiPlxyXG4gICAgICAgICAgPHNtYWxsIGNsYXNzPVwidGV4dC1kYXJrXCI+Q3JlYXRlZCBieSBzeXN0ZW08L3NtYWxsPlxyXG4gICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgKm5nSWY9XCIhdGFibGVGaWx0ZXJWaWV3SWQgJiYgIWhhc0FueURlZmF1bHRWaWV3KClcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImJhZGdlIGJnLWxpZ2h0IHRleHQtcHJpbWFyeSBtcy0yXCJcclxuICAgICAgICAgICAgPkRlZmF1bHQ8L3NwYW5cclxuICAgICAgICAgID5cclxuICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICpuZ0lmPVwiIXRhYmxlRmlsdGVyVmlld0lkICYmICFoYXNBbnlEZWZhdWx0VmlldygpXCJcclxuICAgICAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9jaGVjay1ibHVlLnN2ZydcIlxyXG4gICAgICAgICAgICBjbGFzcz1cIm1lLTJcIlxyXG4gICAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3M9XCJkcm9wZG93biBkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZFwiXHJcbiAgICAgICAgICAgICpuZ0lmPVwidGFibGVGaWx0ZXJWaWV3SWRcIlxyXG4gICAgICAgICAgPjwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8IS0tIFRoZSBsaXN0OiByZW5kZXIgZWFjaCB0YWJsZSBmcm9tIGZpbHRlcmVkTGlzdCAtLT5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICBjbGFzcz1cImxpc3QtZ3JvdXAgbGlzdC1ncm91cC1mbHVzaFwiXHJcbiAgICAgICAgICAqbmdGb3I9XCJcclxuICAgICAgICAgICAgbGV0IHRhYmxlIG9mIGZpbHRlcmVkTGlzdDtcclxuICAgICAgICAgICAgbGV0IGkgPSBpbmRleDtcclxuICAgICAgICAgICAgdHJhY2tCeTogdHJhY2tCeVRhYmxlXHJcbiAgICAgICAgICBcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDwhLS0gSXRlbSAtLT5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgKGNsaWNrKT1cIlxyXG4gICAgICAgICAgICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgb3BlbkluZGV4ID0gbnVsbDsgYWN0aXZlVG9wQnV0dG9uID0gJydcclxuICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJsaXN0LWdyb3VwLWl0ZW0gcHgtMCBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGRpdiAoY2xpY2spPVwic2VsZWN0RmlsdGVyKHRhYmxlKTsgb3BlbkluZGV4ID0gbnVsbFwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmdy1zZW1pYm9sZFwiIHN0eWxlPVwiY3Vyc29yOiBwb2ludGVyXCI+XHJcbiAgICAgICAgICAgICAgICB7eyB0YWJsZT8ubmFtZSB9fVxyXG4gICAgICAgICAgICAgICAgPCEtLSB7e3RhYmxlPy5pc190ZW1wfX0gLS0+XHJcbiAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICAgICAgICAgICh0YWJsZT8uaXNfdGVtcCAmJiAhdGVtcF9zdGF0ZS5pZCkgfHxcclxuICAgICAgICAgICAgICAgICAgICB0ZW1wX3N0YXRlLmlkID09IHRhYmxlLmlkXHJcbiAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvY2hlY2stYmx1ZS5zdmcnXHJcbiAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWUtMlwiXHJcbiAgICAgICAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJ0YWJsZT8uaXNfZGVmYXVsdFwiXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYmFkZ2UgYmctbGlnaHQgdGV4dC1wcmltYXJ5IG1zLTJcIlxyXG4gICAgICAgICAgICAgICAgICA+RGVmYXVsdDwvc3BhblxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxzbWFsbCBjbGFzcz1cInRleHQtZGFya1wiICpuZ0lmPVwidGFibGU/LmNvbmZpZz8uZmlsdGVyTmFtZXNcIiBbdGl0bGVdPVwidGFibGU/LmNvbmZpZz8uZmlsdGVyTmFtZXNcIj5cclxuICAgICAgICAgICAgICB7e1xyXG4gICAgICAgICAgICAgIHRhYmxlPy5jb25maWc/LmZpbHRlck5hbWVzPy5sZW5ndGggPiAyNSBcclxuICAgICAgICAgICAgICA/ICh0YWJsZT8uY29uZmlnPy5maWx0ZXJOYW1lcyB8IHNsaWNlOjA6MjUpICsgJy4uLidcclxuICAgICAgICAgICAgICA6IHRhYmxlPy5jb25maWc/LmZpbHRlck5hbWVzXHJcbiAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAoe3sgdGFibGU/LmNvbmZpZz8udG90YWxDb3VudCB9fSlcclxuICAgICAgICAgICAgPC9zbWFsbD5cclxuICAgICAgICAgICAgIDxzbWFsbCBjbGFzcz1cInRleHQtZGFya1wiICpuZ0lmPVwiIXRhYmxlPy5jb25maWc/LmZpbHRlck5hbWVzXCI+e3sgdGFibGU/LmNyZWF0ZWRBdCB8IGRhdGUgOiBcIk1NTSBkLCB5XCIgfX08L3NtYWxsPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICpuZ0lmPVwidGFibGU/LmlzX2RlZmF1bHRcIlxyXG4gICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvY2hlY2stYmx1ZS5zdmcnXHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJtZS0yXCJcclxuICAgICAgICAgICAgICA+PC9zcGFuPlxyXG5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd25cIiAqbmdJZj1cIiF0YWJsZT8uaXNfZGVmYXVsdFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImRyb3Bkb3duLXdyYXBwZXJcIlxyXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuLWljb24gbXV0ZWQtdGV4dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZU1lbnUoaSwgJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgYXJpYS1oYXNwb3B1cD1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwib3BlbkluZGV4ID09PSBpXCJcclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgJ2RhdGEtZ3JpZC9pY29ucy9ob3Jpem9udGFsLWRvdHMuc3ZnJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWUtMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcblxyXG4gICAgICAgICAgICAgICAgICA8IS0tIG1lbnUgLS0+XHJcbiAgICAgICAgICAgICAgICAgIDx1bFxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwib3BlbkluZGV4ID09PSBpXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImN1c3RvbS1kcm9wZG93bi1tZW51XCJcclxuICAgICAgICAgICAgICAgICAgICByb2xlPVwibWVudVwiXHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICA8bGkgcm9sZT1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgICAgcm9sZT1cIm1lbnVpdGVtXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkcm9wZG93bi1pdGVtXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvblByZXNldCh0YWJsZSwgJ3NldFByZXNldCcpOyB0ZW1wX3N0YXRlLmlkID0gJydcclxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvc3Rhci5zdmcnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1lLTJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBTZXQgYXMgZGVmYXVsdFxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGxpIHJvbGU9XCJub25lXCIgKm5nSWY9XCIhdGFibGUuY29uZmlybURlbGV0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICByb2xlPVwibWVudWl0ZW1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRyb3Bkb3duLWl0ZW0gdGV4dC1kYW5nZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwidGFibGUuY29uZmlybURlbGV0ZSA9IHRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwibWFyZ2luLXRvcDogLTRweFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RhdGEtZ3JpZC9pY29ucy90cmFzaC1yZWQuc3ZnJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZS0yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgRGVsZXRlXHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8bGlcclxuICAgICAgICAgICAgICAgICAgICAgIHJvbGU9XCJub25lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwidGFibGUuY29uZmlybURlbGV0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNvbmZpcm0tYmxvY2tcIlxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0zIHB5LTIgdGV4dC1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICBBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZGVsZXRlIDxiciAvPjxiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+4oCce3sgdGFibGU/Lm5hbWUgfX3igJ08L2JcclxuICAgICAgICAgICAgICAgICAgICAgICAgICA+P1xyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBnYXAtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tbGlnaHQgbWUtMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwidGFibGUuY29uZmlybURlbGV0ZSA9IGZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDYW5jZWxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tc20gYnRuLWRhbmdlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYWN0aW9uUHJlc2V0KHRhYmxlLCAnZGVsZXRlUHJlc2V0JylcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlbGV0ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwhLS0gSXRlbSBFbmQgSGVyZSAtLT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPGRpdlxyXG4gICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXHJcbiAgICAqbmdJZj1cImFjdGl2ZVN1YkJ1dHRvbiA9PSAnc2F2ZS1wcmVzZXQnXCJcclxuICAgIGNsYXNzPVwiZHJvcGRvd24tbWVudSBwLTMgYmFkZ2UgbXQtNCBzYXZlLXByZXNldC1kcm9wZG93biBtdC0xXCJcclxuICAgIGFyaWEtbGFiZWxsZWRieT1cInNhdmVQcmVzZXREcm9wZG93blwiXHJcbiAgICBzdHlsZT1cIm1pbi13aWR0aDogMjUwcHhcIlxyXG4gID5cclxuICAgIDxkaXYgY2xhc3M9XCJmdy1ib2xkIGZzLTE0cHggbWItMlwiPlxyXG4gICAgICB7eyBpc1RhYmxlUHJlc2V0Tm90Q2hhbmdlZCA/IFwiU2F2ZSBwcmVzZXRcIiA6IFwiVXBkYXRlIFByZXNldFwiIH19XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJmcy0xNHB4IG1iLTJcIiBzdHlsZT1cImxpbmUtaGVpZ2h0OiAyMHB4XCI+XHJcbiAgICAgIFRoaXMgd2lsbCBzYXZlIHRoZSBjdXJyZW50IHRhYmxlIGFkanVzdG1lbnRzIGFzIGEgcHJlc2V0LlxyXG4gICAgPC9kaXY+XHJcbiAgICA8IS0tIElucHV0IC0tPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1iLTJcIj5cclxuICAgICAgPGxhYmVsIGZvcj1cInByZXNldE5hbWVcIiBjbGFzcz1cImZvcm0tbGFiZWwgZnMtMTJweCBmdy1ib2xkXCJcclxuICAgICAgICA+UHJlc2V0IE5hbWU8L2xhYmVsXHJcbiAgICAgID5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBnbG9iYWwtc2VhcmNoXCI+XHJcbiAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAjcHJlc2V0TmFtZUN0cmw9XCJuZ01vZGVsXCJcclxuICAgICAgICAgIHJlcXVpcmVkXHJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cInByZXNldE5hbWVcIlxyXG4gICAgICAgICAgW25nQ2xhc3NdPVwie1xyXG4gICAgICAgICAgICAnaXMtaW52YWxpZCc6XHJcbiAgICAgICAgICAgICAgcHJlc2V0TmFtZUN0cmwuaW52YWxpZCAmJlxyXG4gICAgICAgICAgICAgIChwcmVzZXROYW1lQ3RybC5kaXJ0eSB8fCBwcmVzZXROYW1lQ3RybC50b3VjaGVkKVxyXG4gICAgICAgICAgfVwiXHJcbiAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc20gcHMtMlwiXHJcbiAgICAgICAgICBwbGFjZWhvbGRlcj1cIkVudGVyIHByZXNldCBuYW1lXCJcclxuICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAvPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDwhLS0gQ2hlY2tib3ggLS0+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBtYi0yXCI+XHJcbiAgICAgIDxpbnB1dFxyXG4gICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiXHJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJwcmVzZXRGaWx0ZXJcIlxyXG4gICAgICAgIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgaWQ9XCJzYXZlRmlsdGVyc1wiXHJcbiAgICAgIC8+XHJcbiAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWwgbXQtMVwiIGZvcj1cInNhdmVGaWx0ZXJzXCI+XHJcbiAgICAgICAgU2F2ZSBhY3RpdmUgZmlsdGVyc1xyXG4gICAgICA8L2xhYmVsPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPCEtLSBTYXZlIEJ1dHRvbiAtLT5cclxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBnYXAtMlwiIHN0eWxlPVwiaGVpZ2h0OiAzMnB4XCI+XHJcbiAgICAgIDxidXR0b25cclxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICBzdHlsZT1cImhlaWdodDogMzJweFwiXHJcbiAgICAgICAgY2xhc3M9XCJidG4gYm9yZGVyIHctMTAwIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlciBidG4tbGlnaHRcIlxyXG4gICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IHRvZ2dsZUFjdGlvbnMoJ3RhYmxlLXByZXNldHMnKVwiXHJcbiAgICAgICAgc3R5bGU9XCJtYXJnaW4tdG9wOiAtMnB4XCJcclxuICAgICAgPlxyXG4gICAgICAgIDxzcGFuPkNhbmNlbDwvc3Bhbj5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICAgIDxidXR0b25cclxuICAgICAgICBbZGlzYWJsZWRdPVwiY2xvc2VEcm9wZG93bi5wcmVzZXQubG9hZGluZ1wiXHJcbiAgICAgICAgKGNsaWNrKT1cInNhdmVQcmVzZXQocHJlc2V0TmFtZUN0cmwpXCJcclxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICBzdHlsZT1cImhlaWdodDogMzJweFwiXHJcbiAgICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgdy0xMDAgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxzcGFuIHN0eWxlPVwibWFyZ2luLXRvcDogLTJweFwiICpuZ0lmPVwiaXNUYWJsZVByZXNldE5vdENoYW5nZWRcIj5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhY2xvc2VEcm9wZG93bi5wcmVzZXQubG9hZGluZ1wiXHJcbiAgICAgICAgICAgID5TYXZlPC9uZy1jb250YWluZXJcclxuICAgICAgICAgID5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjbG9zZURyb3Bkb3duLnByZXNldC5sb2FkaW5nXCJcclxuICAgICAgICAgICAgPjxzcGFuIGNsYXNzPVwic3Bpbm5lci1ib3JkZXIgc3Bpbm5lci1ib3JkZXItc21cIj48L3NwYW5cclxuICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgPHNwYW4gc3R5bGU9XCJ3aGl0ZS1zcGFjZTogbm93cmFwXCIgKm5nSWY9XCIhaXNUYWJsZVByZXNldE5vdENoYW5nZWRcIlxyXG4gICAgICAgICAgPlVwZGF0ZSBQcmVzZXQ8L3NwYW5cclxuICAgICAgICA+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI3Nob3dIaWRlQ29sdW1ucz5cclxuICA8ZGl2XHJcbiAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcclxuICAgIGNsYXNzPVwicC0zIHNoYWRvdyBhY3Rpb25zLWRyb3Bkb3duIG10LTEgZHJvcGRvd24tbWVudSBzaG93IHNoYWRvdyBjdXN0b20tbWVudSB0YWJsZS1sYXlvdXRcIlxyXG4gICAgc3R5bGU9XCJ3aWR0aDogMjgwcHhcIlxyXG4gID5cclxuICAgIDwhLS0gSGVhZGVyIC0tPlxyXG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXIgbWItM1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgIDxidXR0b25cclxuICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1saW5rIHAtMFwiXHJcbiAgICAgICAgICBzdHlsZT1cIm1hcmdpbi1sZWZ0OiAtMTBweFwiXHJcbiAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlQWN0aW9ucygnc2V0dGluZycpXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICBbaW5saW5lU1ZHXT1cInNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2Fycm93LWxlZnQuc3ZnJ1wiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uXCJcclxuICAgICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPGg2IGNsYXNzPVwibWItMCBtcy0yXCIgc3R5bGU9XCJmb250LXdlaWdodDogNTAwXCI+Q29sdW1uczwvaDY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8YVxyXG4gICAgICAgIChjbGljayk9XCJyZXNldENvbHVtbnMoKVwiXHJcbiAgICAgICAgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKVwiXHJcbiAgICAgICAgY2xhc3M9XCJ0ZXh0LXByaW1hcnkgdGV4dC1kZWNvcmF0aW9uLW5vbmUgZC1ub25lXCJcclxuICAgICAgICA+UmVzZXQ8L2FcclxuICAgICAgPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPCEtLSBTZWFyY2ggLS0+XHJcbiAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGdsb2JhbC1zZWFyY2hcIj5cclxuICAgICAgICA8c3BhblxyXG4gICAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9zZWFyY2guc3ZnJ1wiXHJcbiAgICAgICAgICBjbGFzcz1cIm14LTIgcG9zaXRpb24tYWJzb2x1dGUgaWNvbiBkYXRhLWdyaWQtc3ZnLWljb25cIlxyXG4gICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21cIlxyXG4gICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWFyY2ggY29sdW1uXCJcclxuICAgICAgICAgIHR5cGU9XCJzZWFyY2hcIlxyXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJ0b3BTaG93SGlkZUNvbHVtbnNcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8IS0tIFByZXNldCBMaXN0IC0tPlxyXG4gICAgPGRpdlxyXG4gICAgICBjbGFzcz1cImxpc3QtZ3JvdXAgbGlzdC1ncm91cC1mbHVzaFwiXHJcbiAgICAgIHN0eWxlPVwib3ZlcmZsb3c6IGF1dG87IHNjcm9sbGJhci13aWR0aDogdGhpblwiXHJcbiAgICAgIFtzdHlsZS5tYXhIZWlnaHQucHhdPVwiZGF0YUdyaWRDb250YWluZXIub2Zmc2V0SGVpZ2h0IC0gMjIwXCJcclxuICAgID5cclxuICAgICAgPGRpdiBjbGFzcz1cIm11dGVkLXRleHQgc2hvdy1oaWRlLXRhYmxlLWxhYmVsIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiICpuZ0lmPVwiaGFzQW55VmlzaWJsZUNvbHVtblwiPlxyXG4gICAgICAgIFNob3cgaW4gdGFibGVcclxuICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2tcIj5cclxuICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCJcclxuICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxyXG4gICAgICAgICAgICAgIGlkPVwiaGlkZV9hbGxcIlxyXG4gICAgICAgICAgICAgIFtjaGVja2VkXT1cImFsbENvbHVtbnNTZWxlY3RlZCgpXCJcclxuICAgICAgICAgICAgICAoY2hhbmdlKT1cInRvZ2dsZUFsbENvbHVtbnNWaXNpYmlsaXR5KClcIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsIGZ3LXNlbWlib2xkXCIgZm9yPVwiaGlkZV9hbGxcIj5cclxuICAgICAgICAgICAgICBTaG93L0hpZGUgQWxsIFxyXG4gICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8IS0tIEl0ZW0gLS0+XHJcbiAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAqbmdGb3I9XCJcclxuICAgICAgICAgIGxldCBjb2wgb2YgY29sdW1ucyB8IGZpbHRlciA6IHRvcFNob3dIaWRlQ29sdW1ucyA6ICdoZWFkZXInO1xyXG4gICAgICAgICAgdHJhY2tCeTogdHJhY2tCeUZpZWxkXHJcbiAgICAgICAgXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgICpuZ0lmPVwiY29sLmlzX3Zpc2libGVcIlxyXG4gICAgICAgICAgY2xhc3M9XCJsaXN0LWdyb3VwLWl0ZW0gYm9yZGVyLTAgcHgtMCBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGdhcC0xXCI+XHJcbiAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiIWNvbD8ucGlubmVkXCJcclxuICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXHJcbiAgICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2dyaXAtdmVydGljYWwuc3ZnJ1xyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY3Vyc29yLWdyYXAgZGF0YS1ncmlkLXN2Zy1pY29uXCJcclxuICAgICAgICAgICAgICAgIChtb3VzZWRvd24pPVwiJGV2ZW50LnByZXZlbnREZWZhdWx0KClcIlxyXG4gICAgICAgICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiY29sPy5waW5uZWRcIlxyXG4gICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvcGluLWJsdWUuc3ZnJ1xyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY3Vyc29yLWdyYXAgZGF0YS1ncmlkLXN2Zy1pY29uXCJcclxuICAgICAgICAgICAgICAgIChtb3VzZWRvd24pPVwiJGV2ZW50LnByZXZlbnREZWZhdWx0KClcIlxyXG4gICAgICAgICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnctc2VtaWJvbGRcIj5cclxuICAgICAgICAgICAgICB7eyBjb2wuaGVhZGVyIH19XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICpuZ0lmPVwiIWNvbD8ucXVlcnk/LmZpcnN0X3ZhbHVlICYmICFjb2w/LnF1ZXJ5Py5faWRzPy5sZW5ndGhcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlQ29sdW1uVmlzaWJpbGl0eShjb2wsIGZhbHNlKVwiXHJcbiAgICAgICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJ2aXNpYmxlQ29sdW1ucygpLmxlbmd0aCA8PSAyIHx8IGNvbD8uaXNfYWx3YXlzX3Zpc2libGVcIlxyXG4gICAgICAgICAgICBbY2xhc3MucGUtbm9uZV09XCJ2aXNpYmxlQ29sdW1ucygpLmxlbmd0aCA8PSAyIHx8IGNvbD8uaXNfYWx3YXlzX3Zpc2libGVcIlxyXG4gICAgICAgICAgICBbY2xhc3Mub3BhY2l0eS01MF09XCJ2aXNpYmxlQ29sdW1ucygpLmxlbmd0aCA8PSAyIHx8IGNvbD8uaXNfYWx3YXlzX3Zpc2libGVcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvZXllLnN2ZydcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIG1lLTJcIlxyXG4gICAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICpuZ0lmPVwiY29sPy5xdWVyeT8uZmlyc3RfdmFsdWUgfHwgY29sPy5xdWVyeT8uX2lkcz8ubGVuZ3RoXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgICAgICAgc3R5bGU9XCJvcGFjaXR5OiAwLjVcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvZXllLnN2ZydcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIG1lLTJcIlxyXG4gICAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgPCEtLSBJdGVtIEVuZCBIZXJlIC0tPlxyXG5cclxuICAgICAgPGRpdlxyXG4gICAgICAgIGNsYXNzPVwiZHJvcGRvd24tZGl2aWRlclwiXHJcbiAgICAgICAgKm5nSWY9XCJoYXNBbnlWaXNpYmxlQ29sdW1uICYmIGhhc0FueUluVmlzaWJsZUNvbHVtblwiXHJcbiAgICAgID48L2Rpdj5cclxuXHJcbiAgICAgIDxkaXZcclxuICAgICAgICBjbGFzcz1cIm11dGVkLXRleHQgc2hvdy1oaWRlLXRhYmxlLWxhYmVsIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiXHJcbiAgICAgICAgKm5nSWY9XCJoYXNBbnlJblZpc2libGVDb2x1bW5cIlxyXG4gICAgICA+XHJcbiAgICAgICAgSGlkZSBpbiB0YWJsZVxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrXCI+XHJcbiAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiXHJcbiAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICAgICAgICBpZD1cInNob3dfYWxsXCJcclxuICAgICAgICAgICAgICBbY2hlY2tlZF09XCJhbGxDb2x1bW5zU2VsZWN0ZWQoKVwiXHJcbiAgICAgICAgICAgICAgKGNoYW5nZSk9XCJ0b2dnbGVBbGxDb2x1bW5zVmlzaWJpbGl0eSgpXCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbCBmdy1zZW1pYm9sZFwiIGZvcj1cInNob3dfYWxsXCI+XHJcbiAgICAgICAgICAgICAgU2hvdy9IaWRlIEFsbCBcclxuICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImxpc3QtZ3JvdXAgbGlzdC1ncm91cC1mbHVzaFwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGNvbCBvZiBjb2x1bW5zOyB0cmFja0J5OiB0cmFja0J5RmllbGRcIj5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgKm5nSWY9XCIhY29sLmlzX3Zpc2libGVcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImxpc3QtZ3JvdXAtaXRlbSBib3JkZXItMCBweC0wIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXJcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGdhcC0xXCI+XHJcbiAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWNvbD8ucGlubmVkXCJcclxuICAgICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9ncmlwLXZlcnRpY2FsLnN2ZydcclxuICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gY3Vyc29yLWdyYXBcIlxyXG4gICAgICAgICAgICAgICAgICAobW91c2Vkb3duKT1cIiRldmVudC5wcmV2ZW50RGVmYXVsdCgpXCJcclxuICAgICAgICAgICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cImNvbD8ucGlubmVkXCJcclxuICAgICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9waW4tYmx1ZS5zdmcnXHJcbiAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGN1cnNvci1ncmFwXCJcclxuICAgICAgICAgICAgICAgICAgKG1vdXNlZG93bik9XCIkZXZlbnQucHJldmVudERlZmF1bHQoKVwiXHJcbiAgICAgICAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmdy1zZW1pYm9sZFwiPlxyXG4gICAgICAgICAgICAgICAge3sgY29sLmhlYWRlciB9fVxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBjdXJzb3ItcG9pbnRlclwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUNvbHVtblZpc2liaWxpdHkoY29sLCB0cnVlKVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvZXllLWNyb3NzLnN2ZydcclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBtZS0yXCJcclxuICAgICAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDwhLS0gSXRlbSBFbmQgSGVyZSAtLT5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNmaWx0ZXJDb2x1bW5zIGxldC1jb2w9XCJjb2x1bW5cIj5cclxuICA8ZGl2XHJcbiAgICBAc2xpZGVUb2dnbGVcclxuICAgICpuZ0lmPVwiIWlzRmlsdGVyT3BlbiAmJiBhY3RpdmVUb3BCdXR0b24gPT0gJ2ZpbHRlci1jb2x1bW5zJ1wiXHJcbiAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcclxuICAgIGNsYXNzPVwic2hhZG93IGFjdGlvbnMtZHJvcGRvd24gbXQtMSBzaG93IHNoYWRvdyBjdXN0b20tbWVudSB0YWJsZS1sYXlvdXQgZmlsdGVyLWNvbHVtbnNcIlxyXG4gICAgc3R5bGU9XCJ3aWR0aDogMjgwcHg7IHJpZ2h0OiB1bnNldDsgbWF4LXdpZHRoOiAyMzBweFwiXHJcbiAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cImNoZWNrYm94ZXNCYWNrZ3JvdW5kQ29sb3JcIlxyXG4gID5cclxuICAgIDxkaXYgY2xhc3M9XCJtYi0yIHB4LTNcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBnbG9iYWwtc2VhcmNoXCI+XHJcbiAgICAgICAgPHNwYW5cclxuICAgICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvc2VhcmNoLnN2ZydcIlxyXG4gICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gbXgtMiBwb3NpdGlvbi1hYnNvbHV0ZSBpY29uXCJcclxuICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtXCJcclxuICAgICAgICAgIHBsYWNlaG9sZGVyPVwiRmlsdGVyIGJ5XCJcclxuICAgICAgICAgIHR5cGU9XCJzZWFyY2hcIlxyXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJhZGRGaWx0ZXJDb2x1bW5JbnB1dFwiXHJcbiAgICAgICAgLz5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXZcclxuICAgICAgY2xhc3M9XCJsaXN0LWdyb3VwIGxpc3QtZ3JvdXAtZmx1c2hcIlxyXG4gICAgICBzdHlsZT1cIm1heC1oZWlnaHQ6IGNhbGMoMTAwdmggLSA1MDBweCk7IG92ZXJmbG93OiBhdXRvXCJcclxuICAgID5cclxuICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICpuZ0Zvcj1cIlxyXG4gICAgICAgICAgbGV0IGNvbCBvZiBjb2x1bW5zIHwgZmlsdGVyIDogYWRkRmlsdGVyQ29sdW1uSW5wdXQgOiAnaGVhZGVyJztcclxuICAgICAgICAgIHRyYWNrQnk6IHRyYWNrQnlGaWVsZFxyXG4gICAgICAgIFwiXHJcbiAgICAgID5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAoY2xpY2spPVwib3BlbkZpbHRlcihjb2wpXCJcclxuICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgIGNvbC5pc192aXNpYmxlICYmXHJcbiAgICAgICAgICAgICFjb2w/LnF1ZXJ5Py5maXJzdF92YWx1ZSAmJlxyXG4gICAgICAgICAgICAhY29sPy5xdWVyeT8uX2lkcz8ubGVuZ3RoICYmIGNvbC50eXBlICE9PSAnaW1hZ2UnXHJcbiAgICAgICAgICBcIlxyXG4gICAgICAgICAgY2xhc3M9XCJsaXN0LWdyb3VwLWl0ZW0gYm9yZGVyLTAgcHgtMCBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIGRyb3Bkb3duLWl0ZW0gY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZ2FwLTFcIj5cclxuICAgICAgICAgICAgPGRpdiBzdHlsZT1cIm1hcmdpbi10b3A6IC0zcHhcIj48L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZ3LXNlbWlib2xkXCI+XHJcbiAgICAgICAgICAgICAge3sgY29sLmhlYWRlciB9fVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG5cclxuICA8IS0tIERyb3Bkb3duIC0tPlxyXG4gIDxkaXZcclxuICAgIEBzbGlkZVRvZ2dsZVxyXG4gICAgKm5nSWY9XCJpc0ZpbHRlck9wZW4gJiYgc2VsZWN0ZWRDb2x1bW5Gb3JGaWx0ZXIudHlwZSA9PSAnZHJvcGRvd24nXCJcclxuICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxyXG4gICAgY2xhc3M9XCJzaGFkb3cgYWN0aW9ucy1kcm9wZG93biBtdC0xIHNob3cgc2hhZG93IGN1c3RvbS1tZW51IHRhYmxlLWxheW91dCBmaWx0ZXItY29sdW1ucyBwYi0yXCJcclxuICAgIHN0eWxlPVwid2lkdGg6IDI4MHB4OyByaWdodDogdW5zZXQ7IG1heC13aWR0aDogMjMwcHhcIlxyXG4gICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJjaGVja2JveGVzQmFja2dyb3VuZENvbG9yXCJcclxuICA+XHJcbiAgICA8ZGl2IGNsYXNzPVwicHgtMyBteS0yIGJvcmRlci1iZWxvdyBweS0xIHBiLTIgbWItMyBkLWZsZXggcHMtMVwiPlxyXG4gICAgICA8c3BhblxyXG4gICAgICAgIChjbGljayk9XCJ0b2dnbGVBY3Rpb25zKCdmaWx0ZXItY29sdW1ucycpOyBpc0FjdGl2ZUZpbHRlck9wZW4gPSBmYWxzZVwiXHJcbiAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9hcnJvdy1sZWZ0LnN2ZydcIlxyXG4gICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIG1lLTIgY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICA+PC9zcGFuXHJcbiAgICAgID48Yj57eyBzZWxlY3RlZENvbHVtbkZvckZpbHRlcj8uaGVhZGVyIH19PC9iPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwibWItMiBweC0zXCI+XHJcbiAgICAgIDxkaXZcclxuICAgICAgICBjbGFzcz1cImNvbC0xMiBnbG9iYWwtc2VhcmNoIHBvc2l0aW9uLXJlbGF0aXZlIGJvcmRlciByb3VuZGVkIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZmxleC13cmFwIHB4LTIgZmlsdGVyLXNlcmFjaC1pbnB0XCJcclxuICAgICAgPlxyXG4gICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAqbmdGb3I9XCJsZXQgc2VsZWN0ZWQgb2Ygc2VsZWN0ZWRGaWx0ZXJPcHRpb25zXCJcclxuICAgICAgICAgIGNsYXNzPVwiYmFkZ2UgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMSBtZS0xIG1iLTFcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIHt7IHNlbGVjdGVkPy52YWx1ZSA/IHNlbGVjdGVkLnZhbHVlIDogc2VsZWN0ZWQgfX1cclxuICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVTZWxlY3Rpb25JbkZpbHRlcihzZWxlY3RlZClcIlxyXG4gICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxyXG4gICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2Nyb3NzLXByaW1hcnkuc3ZnJ1xyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICBjbGFzcz1cIm1lLTJcIlxyXG4gICAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc20gYm9yZGVyLTAgZmxleC1ncm93LTFcIlxyXG4gICAgICAgICAgc3R5bGU9XCJwYWRkaW5nOiAwXCJcclxuICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJzZWxlY3RlZEZpbHRlck9wdGlvbnM/Lmxlbmd0aCA/ICcnIDogJ0ZpbHRlciBieSdcIlxyXG4gICAgICAgICAgdHlwZT1cInNlYXJjaFwiXHJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cInNlYXJjaFRleHRGb3JGaWx0ZXJEcm9wRG93blwiXHJcbiAgICAgICAgICAoa2V5ZG93bi5iYWNrc3BhY2UpPVwiaGFuZGxlQmFja3NwYWNlKCRldmVudClcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2XHJcbiAgICAgIGNsYXNzPVwibGlzdC1ncm91cCBsaXN0LWdyb3VwLWZsdXNoXCJcclxuICAgICAgc3R5bGU9XCJtYXgtaGVpZ2h0OiBjYWxjKDEwMHZoIC0gNjAwcHgpOyBvdmVyZmxvdzogYXV0b1wiXHJcbiAgICA+XHJcbiAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAqbmdGb3I9XCJcclxuICAgICAgICAgIGxldCBjb2wgb2Ygc2VsZWN0ZWRDb2x1bW5Gb3JGaWx0ZXIuY29sdW1uX2Ryb3Bkb3duX3ZhbHVlXHJcbiAgICAgICAgICAgIHwgZmlsdGVyIDogc2VhcmNoVGV4dEZvckZpbHRlckRyb3BEb3duIDogJ3ZhbHVlJztcclxuICAgICAgICAgIGxldCBpID0gaW5kZXhcclxuICAgICAgICBcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgY2xhc3M9XCJsaXN0LWdyb3VwLWl0ZW0gYm9yZGVyLTAgcHgtMiBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIGRyb3Bkb3duLWl0ZW0gY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrXCI+XHJcbiAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiXHJcbiAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICAgICAgICBbaWRdPVwiaVwiXHJcbiAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiY3VycmVudEZpbHRlclNlbGVjdGVkSWRzLmhhcyhjb2wuaWQgfHwgY29sLl9pZCB8fCBjb2wpXCJcclxuICAgICAgICAgICAgICAoY2hhbmdlKT1cInRvZ2dsZVNlbGVjdGlvbkluRmlsdGVyKGNvbClcIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsIGZ3LXNlbWlib2xkXCIgW2Zvcl09XCJpXCI+XHJcbiAgICAgICAgICAgICAge3sgY29sPy52YWx1ZSB8fCBjb2w/Lm5hbWUgfHwgY29sIH19XHJcbiAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXZcclxuICAgICAgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBnYXAtMiBweC0yIGJvcmRlci10b3BcIlxyXG4gICAgICBzdHlsZT1cImhlaWdodDogMzhweFwiXHJcbiAgICA+XHJcbiAgICAgIDxidXR0b25cclxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICBzdHlsZT1cImhlaWdodDogMzJweFwiXHJcbiAgICAgICAgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtc2Vjb25kYXJ5IGJ0bi1saWdodCBib3JkZXIgdy0xMDAgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIG10LTEgYnRuLWxpZ2h0XCJcclxuICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyByZXNldEZpbHRlckNoYW5nZXMoKVwiXHJcbiAgICAgID5cclxuICAgICAgICA8c3Bhbj5DYW5jZWw8L3NwYW4+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8YnV0dG9uXHJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgc3R5bGU9XCJoZWlnaHQ6IDMycHhcIlxyXG4gICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IHctMTAwIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlciBtdC0xXCJcclxuICAgICAgICAoY2xpY2spPVwiYXBwbHlEcm9wZG93bkZpbHRlcigpXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxzcGFuIHN0eWxlPVwibWFyZ2luLXRvcDogLTJweFwiPlNhdmU8L3NwYW4+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDwhLS0gRm9yIFRleHQgZmllbGRzIGFuZCBudW1iZXIgZmllbGRzLS0+XHJcblxyXG4gIDxkaXZcclxuICAgIEBzbGlkZVRvZ2dsZVxyXG4gICAgKm5nSWY9XCJcclxuICAgICAgaXNGaWx0ZXJPcGVuICYmXHJcbiAgICAgIChzZWxlY3RlZENvbHVtbkZvckZpbHRlci50eXBlID09ICdzdHJpbmcnIHx8XHJcbiAgICAgICAgc2VsZWN0ZWRDb2x1bW5Gb3JGaWx0ZXIudHlwZSA9PSAnbnVtYmVyJyB8fFxyXG4gICAgICAgIHNlbGVjdGVkQ29sdW1uRm9yRmlsdGVyLnR5cGUgPT0gJ2RhdGUnKVxyXG4gICAgXCJcclxuICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxyXG4gICAgY2xhc3M9XCJzaGFkb3cgYWN0aW9ucy1kcm9wZG93biBtdC0xIHNob3cgc2hhZG93IGN1c3RvbS1tZW51IHRhYmxlLWxheW91dCBmaWx0ZXItY29sdW1ucyBwYi0yXCJcclxuICAgIHN0eWxlPVwid2lkdGg6IDIxMHB4OyByaWdodDogdW5zZXQ7IG1heC13aWR0aDogMjMwcHhcIlxyXG4gICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJjaGVja2JveGVzQmFja2dyb3VuZENvbG9yXCJcclxuICA+XHJcbiAgICA8ZGl2IGNsYXNzPVwicHgtMyBib3JkZXItYmVsb3cgcHktMSBwYi0yIGQtZmxleCBwcy0xXCI+XHJcbiAgICAgIDxzcGFuXHJcbiAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9hcnJvdy1sZWZ0LnN2ZydcIlxyXG4gICAgICAgIChjbGljayk9XCJ0b2dnbGVBY3Rpb25zKCdmaWx0ZXItY29sdW1ucycpOyBpc0FjdGl2ZUZpbHRlck9wZW4gPSBmYWxzZVwiXHJcbiAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gbWUtMiBjdXJzb3ItcG9pbnRlclwiXHJcbiAgICAgID48L3NwYW5cclxuICAgICAgPjxiPnt7IHNlbGVjdGVkQ29sdW1uRm9yRmlsdGVyPy5oZWFkZXIgfX08L2I+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgcG9zaXRpb24tcmVsYXRpdmUgcC0yIHRleHQtZmlsdGVyXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtYi0yXCI+XHJcbiAgICAgICAgPHNlbGVjdFxyXG4gICAgICAgICAgY2xhc3M9XCJmb3JtLXNlbGVjdCBmb3JtLXNlbGVjdC1zbSBjdXN0b20tc2VsZWN0IGJvcmRlclwiXHJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cImZpcnN0Q29uZGl0aW9uXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2VsZWN0ZWRDb2x1bW5Gb3JGaWx0ZXIudHlwZSAhPT0gJ2RhdGUnXCI+XHJcbiAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJjb250YWluXCI+Q29udGFpbnM8L29wdGlvbj5cclxuICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJkb2VzX25vdF9jb250YWluXCI+RG9lcyBOb3QgQ29udGFpbjwvb3B0aW9uPlxyXG4gICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiZXF1YWxcIj5FcXVhbHM8L29wdGlvbj5cclxuICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImJlZm9yZVwiPlN0YXJ0cyBXaXRoPC9vcHRpb24+XHJcbiAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJhZnRlclwiPkVuZHMgV2l0aDwvb3B0aW9uPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlbGVjdGVkQ29sdW1uRm9yRmlsdGVyLnR5cGUgPT0gJ2RhdGUnXCI+XHJcbiAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJlcXVhbFwiPkVxdWFscyBUbzwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIm5vdF9lcXVhbFwiPk5vdCBFcXVhbDwvb3B0aW9uPlxyXG4gICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiYWZ0ZXJcIj5BZnRlcjwvb3B0aW9uPlxyXG4gICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiYmVmb3JlXCI+QmVmb3JlPC9vcHRpb24+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtYi0yXCI+XHJcbiAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21cIlxyXG4gICAgICAgICAgcGxhY2Vob2xkZXI9XCJFbnRlciBmaXJzdCB2YWx1ZVwiXHJcbiAgICAgICAgICB0eXBlPVwic2VhcmNoXCJcclxuICAgICAgICAgIFt0eXBlXT1cIlxyXG4gICAgICAgICAgICBzZWxlY3RlZENvbHVtbkZvckZpbHRlci50eXBlID09ICdzdHJpbmcnXHJcbiAgICAgICAgICAgICAgPyAndGV4dCdcclxuICAgICAgICAgICAgICA6IHNlbGVjdGVkQ29sdW1uRm9yRmlsdGVyLnR5cGVcclxuICAgICAgICAgIFwiXHJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cImZpcnN0VmFsdWVcIlxyXG4gICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwiYXBwbHlEcm9wZG93bkZpbHRlcigpXCJcclxuICAgICAgICAvPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IG15LTMgZC1mbGV4IGZsZXgtcm93XCIgc3R5bGU9XCJmb250LXNpemU6IDE0cHhcIj5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrIGZvcm0tY2hlY2staW5saW5lIGNvbC00IG0tMCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0xXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCJcclxuICAgICAgICAgICAgICB0eXBlPVwicmFkaW9cIlxyXG4gICAgICAgICAgICAgIGlkPVwibG9naWNhbEFuZFwiXHJcbiAgICAgICAgICAgICAgbmFtZT1cImxvZ2ljYWxPcGVyYXRvclwiXHJcbiAgICAgICAgICAgICAgdmFsdWU9XCJhbmRcIlxyXG4gICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY29uZGl0aW9uXCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbCBtYi0wIG10LTFcIiBmb3I9XCJsb2dpY2FsQW5kXCJcclxuICAgICAgICAgICAgICA+QU5EPC9sYWJlbFxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjayBmb3JtLWNoZWNrLWlubGluZSBjb2wtNCBtLTAgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiXHJcbiAgICAgICAgICAgICAgdHlwZT1cInJhZGlvXCJcclxuICAgICAgICAgICAgICBpZD1cImxvZ2ljYWxPclwiXHJcbiAgICAgICAgICAgICAgbmFtZT1cImxvZ2ljYWxPcGVyYXRvclwiXHJcbiAgICAgICAgICAgICAgdmFsdWU9XCJvclwiXHJcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjb25kaXRpb25cIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsIG1iLTAgbXQtMVwiIGZvcj1cImxvZ2ljYWxPclwiPk9SPC9sYWJlbD5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrIGZvcm0tY2hlY2staW5saW5lIGNvbC00IG0tMCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0xXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCJcclxuICAgICAgICAgICAgICB0eXBlPVwicmFkaW9cIlxyXG4gICAgICAgICAgICAgIGlkPVwibG9naWNhbE5vbmVcIlxyXG4gICAgICAgICAgICAgIG5hbWU9XCJsb2dpY2FsT3BlcmF0b3JcIlxyXG4gICAgICAgICAgICAgIHZhbHVlPVwibm9uZVwiXHJcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjb25kaXRpb25cIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsIG1iLTAgbXQtMVwiIGZvcj1cImxvZ2ljYWxOb25lXCJcclxuICAgICAgICAgICAgICA+Tm9uZTwvbGFiZWxcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb25kaXRpb24gIT09ICdub25lJyAmJiBmaXJzdFZhbHVlXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItMiBtdC0zXCI+XHJcbiAgICAgICAgICAgIDwhLS0gU2Vjb25kIGNvbmRpdGlvbiBzZWxlY3QgLS0+XHJcbiAgICAgICAgICAgIDxzZWxlY3RcclxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tc2VsZWN0IGZvcm0tc2VsZWN0LXNtIGJvcmRlclwiXHJcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzZWNvbmRDb25kaXRpb25cIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlbGVjdGVkQ29sdW1uRm9yRmlsdGVyLnR5cGUgIT09ICdkYXRlJ1wiPlxyXG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImNvbnRhaW5cIj5Db250YWluczwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImRvZXNfbm90X2NvbnRhaW5cIj5Eb2VzIE5vdCBDb250YWluPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiZXF1YWxcIj5FcXVhbHM8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJiZWZvcmVcIj5TdGFydHMgV2l0aDwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImFmdGVyXCI+RW5kcyBXaXRoPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWxlY3RlZENvbHVtbkZvckZpbHRlci50eXBlID09ICdkYXRlJ1wiPlxyXG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImVxdWFsXCI+RXF1YWxzIFRvPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwibm90X2VxdWFsXCI+Tm90IEVxdWFsPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiYWZ0ZXJcIj5BZnRlcjwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImJlZm9yZVwiPkJlZm9yZTwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0yXCI+XHJcbiAgICAgICAgICAgIDwhLS0gU2Vjb25kIHZhbHVlIGlucHV0IC0tPlxyXG4gICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICBbdHlwZV09XCJcclxuICAgICAgICAgICAgICAgIHNlbGVjdGVkQ29sdW1uRm9yRmlsdGVyLnR5cGUgPT0gJ3N0cmluZydcclxuICAgICAgICAgICAgICAgICAgPyAndGV4dCdcclxuICAgICAgICAgICAgICAgICAgOiBzZWxlY3RlZENvbHVtbkZvckZpbHRlci50eXBlXHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21cIlxyXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiRW50ZXIgc2Vjb25kIHZhbHVlXCJcclxuICAgICAgICAgICAgICB0eXBlPVwic2VhcmNoXCJcclxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInNlY29uZFZhbHVlXCJcclxuICAgICAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJhcHBseURyb3Bkb3duRmlsdGVyKClcIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdlxyXG4gICAgICBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGdhcC0yIHB4LTIgYm9yZGVyLXRvcFwiXHJcbiAgICAgIHN0eWxlPVwiaGVpZ2h0OiAzOHB4XCJcclxuICAgID5cclxuICAgICAgPGJ1dHRvblxyXG4gICAgICAgIFtkaXNhYmxlZF09XCIhY3VycmVudEZpbHRlclNlbGVjdGVkSWRzPy5zaXplICYmICFmaXJzdFZhbHVlXCJcclxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICBzdHlsZT1cImhlaWdodDogMzJweFwiXHJcbiAgICAgICAgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtc2Vjb25kYXJ5IGJ0bi1saWdodCBib3JkZXIgdy0xMDAgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIG10LTEgYnRuLWxpZ2h0XCJcclxuICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyByZXNldFRleHRGaWx0ZXJDaGFuZ2VzKClcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPHNwYW4+Q2FuY2VsPC9zcGFuPlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgICAgPGJ1dHRvblxyXG4gICAgICAgIFtkaXNhYmxlZF09XCIoY3VycmVudEZpbHRlclNlbGVjdGVkSWRzPy5zaXplID09PSAwICYmICFmaXJzdFZhbHVlKSB8fCAoY29uZGl0aW9uICE9PSAnbm9uZScgJiYgIXNlY29uZFZhbHVlKVwiXHJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgc3R5bGU9XCJoZWlnaHQ6IDMycHhcIlxyXG4gICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IHctMTAwIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlciBtdC0xXCJcclxuICAgICAgICAoY2xpY2spPVwiYXBwbHlEcm9wZG93bkZpbHRlcigpXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxzcGFuIHN0eWxlPVwibWFyZ2luLXRvcDogLTJweFwiPkFwcGx5PC9zcGFuPlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPCEtLSBFZGl0IGRyb3Bkb3duIGhlcmUgLS0+XHJcbjxuZy10ZW1wbGF0ZSBsZXQtY29sPlxyXG4gIDxkaXYgY2xhc3M9XCJkcm9wLWRvd24tZWRpdFwiPjwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlXHJcbiAgI2Z1bGxUZXh0VGVtcGxhdGVcclxuICBsZXQtcm93PVwicm93XCJcclxuICBsZXQtY29sPVwiY29sXCJcclxuICBsZXQtaXNBcnJheT1cImlzQXJyYXlcIlxyXG4+XHJcbiAgPGRpdlxyXG4gICAgY2xhc3M9XCJmdWxsLXRleHQtYm94XCJcclxuICAgIChkYmxjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7ICRldmVudC5wcmV2ZW50RGVmYXVsdCgpXCJcclxuICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7ICRldmVudC5wcmV2ZW50RGVmYXVsdCgpXCJcclxuICAgIFtzdHlsZS5tYXhIZWlnaHQucHhdPVwiZGF0YUdyaWRDb250YWluZXIub2Zmc2V0SGVpZ2h0IC8gMlwiXHJcbiAgPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc0VkaXRpbmcocm93LCBjb2wpXCI+XHJcbiAgICAgIDxkaXZcclxuICAgICAgICAqbmdJZj1cIiFpc0FycmF5XCJcclxuICAgICAgICBjbGFzcz1cImZ1bGwtdGV4dC1jb250ZW50XCJcclxuICAgICAgICBbc3R5bGUubWF4SGVpZ2h0LnB4XT1cImRhdGFHcmlkQ29udGFpbmVyLm9mZnNldEhlaWdodCAvIDJcIlxyXG4gICAgICAgIChkYmxjbGljayk9XCJcclxuICAgICAgICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgICAgICRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgZW5hYmxlRWRpdChyb3csIGNvbCwgdHJ1ZSlcclxuICAgICAgICBcIlxyXG4gICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7ICRldmVudC5wcmV2ZW50RGVmYXVsdCgpXCJcclxuICAgICAgPlxyXG4gICAgICAgIHt7XHJcbiAgICAgICAgICBnZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZCk/LnZhbHVlIHx8XHJcbiAgICAgICAgICAgIGdldE5lc3RlZFZhbHVlKHJvdywgY29sLmZpZWxkKT8ubmFtZSB8fFxyXG4gICAgICAgICAgICBnZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZClcclxuICAgICAgICB9fVxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiAqbmdJZj1cImlzQXJyYXlcIj5cclxuICAgICAgICA8dWw+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIGdldE5lc3RlZFZhbHVlKHJvdywgY29sLmZpZWxkKTsgbGV0IGkgPSBpbmRleFwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxsaSAqbmdJZj1cImkgIT09IDBcIj5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAge3tcclxuICAgICAgICAgICAgICAgICAgaXRlbT8uZGVwYXJ0bWVudF9uYW1lIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbT8ucm9sZU5hbWUgfHxcclxuICAgICAgICAgICAgICAgICAgICBpdGVtPy5mdWxsX25hbWUgfHxcclxuICAgICAgICAgICAgICAgICAgICBcIi1cIlxyXG4gICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvdWw+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNFZGl0aW5nKHJvdywgY29sKVwiPlxyXG4gICAgICA8dGV4dGFyZWFcclxuICAgICAgICAoZGJsY2xpY2spPVwiXHJcbiAgICAgICAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgIGVuYWJsZUVkaXQocm93LCBjb2wsIHRydWUpXHJcbiAgICAgICAgXCJcclxuICAgICAgICAjdGV4dE1vZGVsPVwibmdNb2RlbFwiXHJcbiAgICAgICAgcm93cz1cIjRcIlxyXG4gICAgICAgICN0ZXh0QXJlYWRJbnB1dFxyXG4gICAgICAgIFsobmdNb2RlbCldPVwicm93W2NvbC5maWVsZF1cIlxyXG4gICAgICAgIG5hbWU9XCJ7eyBjb2wuZmllbGQgfX1cIlxyXG4gICAgICAgIHJlcXVpcmVkXHJcbiAgICAgICAgKGJsdXIpPVwiZGlzYWJsZUVkaXQocm93LCBjb2wsIHRleHRNb2RlbClcIlxyXG4gICAgICAgIChrZXlkb3duLmVudGVyKT1cInRleHRBcmVhZElucHV0LmJsdXIoKVwiXHJcbiAgICAgICAgYXV0b2ZvY3VzXHJcbiAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxyXG4gICAgICAgIFtuZ0NsYXNzXT1cIntcclxuICAgICAgICAgICdpcy1pbnZhbGlkJzogdGV4dE1vZGVsLmludmFsaWRcclxuICAgICAgICB9XCJcclxuICAgICAgICAobW91c2Vkb3duKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXHJcbiAgICAgID48L3RleHRhcmVhPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI2RlZmF1bHRJbWFnZVBsYWNlaG9sZGVyIGxldC1yb3c9XCJyb3dcIiBsZXQtY29sPVwiY29sXCI+XHJcbiAgPHNwYW5cclxuICAgIGNsYXNzPVwicHgtMiBkLWZsZXggdy0xMDAgY2VsbC1jb250ZW50IGltYWdlLXBsYWNlaG9sZGVyXCJcclxuICAgIFt0aXRsZV09XCJyb3c/LmZ1bGxfbmFtZSB8fCByb3c/Lm5hbWUgfHwgJ04vQSdcIlxyXG4gID5cclxuICAgIDxuZy1jb250YWluZXJcclxuICAgICAgKm5nSWY9XCJcclxuICAgICAgICByb3c/LmxvZ28gfHxcclxuICAgICAgICAgIHJvdz8uYXNzZXRJbWFnZSB8fFxyXG4gICAgICAgICAgcm93Py5pbnZvaWNlPy5pbnZvaWNlX2ltYWdlIHx8XHJcbiAgICAgICAgICByb3c/Lmludm9pY2VfaW1hZ2U7XHJcbiAgICAgICAgZWxzZSBwbGFjZWhvbGRlclxyXG4gICAgICBcIlxyXG4gICAgPlxyXG4gICAgICA8c3BhblxyXG4gICAgICAgIChjbGljayk9XCJmdWxsc2NyZWVuSW1hZ2UgPSByb3c/LnByb2ZpbGVfcGljdHVyZXM/Lls0XT8ucGF0aCB8fFxyXG4gICAgICAgICAgICByb3c/LmxvZ28gfHxcclxuICAgICAgICAgICAgcm93Py5hc3NldEltYWdlIHx8XHJcbiAgICAgICAgICAgIHJvdz8uaW52b2ljZV9pbWFnZVwiXHJcbiAgICAgICAgY2xhc3M9XCJwaWNcIlxyXG4gICAgICAgIFtzdHlsZS53aWR0aC5weF09XCJyb3dIZWlnaHQgLSAxMFwiXHJcbiAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJyb3dIZWlnaHQgLSAxMFwiXHJcbiAgICAgICAgW2NsYXNzLmFzc2V0cy1waWNdPVwiZ3JpZFR5cGUgPT0gJ0Fzc2V0cydcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGltZ1xyXG4gICAgICAgICAgW3dpZHRoXT1cInJvd0hlaWdodCAtIDEyXCJcclxuICAgICAgICAgIFtoZWlnaHRdPVwicm93SGVpZ2h0IC0gMTJcIlxyXG4gICAgICAgICAgW3N0eWxlLndpZHRoLnB4XT1cInJvd0hlaWdodCAtIDEwXCJcclxuICAgICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwicm93SGVpZ2h0IC0gMTBcIlxyXG4gICAgICAgICAgW3NyY109XCJcclxuICAgICAgICAgICAgcm93Py5wcm9maWxlX3BpY3R1cmVzPy5bNF0/LnBhdGggfHxcclxuICAgICAgICAgICAgcm93Py5sb2dvIHx8XHJcbiAgICAgICAgICAgIHJvdz8uYXNzZXRJbWFnZSB8fFxyXG4gICAgICAgICAgICByb3c/Lmludm9pY2VfaW1hZ2VcclxuICAgICAgICAgIFwiXHJcbiAgICAgICAgICBhbHQ9XCJpY29uXCJcclxuICAgICAgICAgIGNsYXNzPVwib3B0aW9uLWljb25cIlxyXG4gICAgICAgICAgbG9hZGluZz1cImxhenlcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgIDwvc3Bhbj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPCEtLSA8ZGl2XHJcbiAgICAgIGNsYXNzPVwiZnVsbHNjcmVlbi1vdmVybGF5XCJcclxuICAgICAgKm5nSWY9XCJmdWxsc2NyZWVuSW1hZ2VcIlxyXG4gICAgICAoY2xpY2spPVwiZnVsbHNjcmVlbkltYWdlID0gbnVsbFwiXHJcbiAgICA+XHJcbiAgICAgIDxpbWcgW3NyY109XCJmdWxsc2NyZWVuSW1hZ2VcIiBjbGFzcz1cImZ1bGxzY3JlZW4taW1nXCIgLz5cclxuICAgIDwvZGl2PiAtLT5cclxuXHJcbiAgICA8bmctdGVtcGxhdGUgI3BsYWNlaG9sZGVyPlxyXG4gICAgICA8c3BhblxyXG4gICAgICAgIFtuZ0NsYXNzXT1cImdldER5bmFtaWNDbGFzcyhyb3c/LmZ1bGxfbmFtZSB8fCByb3c/Lm5hbWUpXCJcclxuICAgICAgICBjbGFzcz1cInBpYyBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIHJvdW5kZWQtY2lyY2xlXCJcclxuICAgICAgICBbc3R5bGUud2lkdGgucHhdPVwicm93SGVpZ2h0IC0gMTJcIlxyXG4gICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwicm93SGVpZ2h0IC0gMTJcIlxyXG4gICAgICAgIFtzdHlsZS5mb250U2l6ZS5weF09XCJyb3dIZWlnaHQgLyAzXCJcclxuICAgICAgICBbY2xhc3MuYXNzZXRzLXBpY109XCJncmlkVHlwZSA9PSAnQXNzZXRzJ1wiXHJcbiAgICAgID5cclxuICAgICAgICB7eyBnZXRJbml0aWFscyhyb3c/LmZ1bGxfbmFtZSkgfX1cclxuICAgICAgPC9zcGFuPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICA8L3NwYW4+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48IS0tIFJpZ2h0IENsaWNrIE1lbnVlIC0tPlxyXG48ZGl2XHJcbiAgW2NsYXNzLmludmlzaWJsZV09XCIhcG9zaXRpb25lZFlldFwiXHJcbiAgY2xhc3M9XCJjb250ZXh0LW1lbnUgcC0yXCJcclxuICAqbmdJZj1cImFjdGlvbkhpZGUgJiYgYWN0aW9ucz8ubGVuZ3RoXCJcclxuICBbbmdTdHlsZV09XCJ7ICd0b3AucHgnOiB5UG9zLCAnbGVmdC5weCc6IHhQb3MgfVwiXHJcbiAgW2NsYXNzLnNob3ddPVwiaXNWaXNpYmxlXCJcclxuICBhcHBlbmRUbz1cImJvZHlcIlxyXG4+XHJcbiAgPHVsPlxyXG4gICAgPGxpXHJcbiAgICAgICpuZ0Zvcj1cImxldCBhY3Rpb24gb2YgYWN0aW9uc1wiXHJcbiAgICAgIGNsYXNzPVwicm91bmRlZCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgKGNsaWNrKT1cIm9uQWN0aW9uQ2xpY2soYWN0aW9uKVwiXHJcbiAgICA+XHJcbiAgICAgIDxzcGFuXHJcbiAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy8nICsgYWN0aW9uICsgJy5zdmcnXCJcclxuICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiByaWdodC1jbGljay1tZW51LWljb25zIG1lLTJcIlxyXG4gICAgICA+PC9zcGFuPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cInRleHQtY2FwaXRhbGl6ZSBmdy01MDBcIj57eyBhY3Rpb24gfX08L3NwYW4+XHJcbiAgICA8L2xpPlxyXG4gIDwvdWw+XHJcbjwvZGl2PlxyXG5cclxuPCEtLSBEZXRhaWxzIFRvZ2dsZSBmcm9tIGJvdHRvbSAtLT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjbmVzdGVkVGFibGVUZW1wbGF0ZSBsZXQtcm93PlxyXG4gIDxkaXZcclxuICAgIGNsYXNzPVwibmVzdGVkLXRhYmxlIHRhYmxlIHRhYmxlLXNtIHctMTAwIG1iLTAgY2VudGVyLW5lc3RlZC10YWJsZSB3LTEwMFwiXHJcbiAgICBzdHlsZT1cInRhYmxlLWxheW91dDogZml4ZWQgIWltcG9ydGFudFwiXHJcbiAgICAjbmVzdGVkVGFibGVDb250YWluZXJcclxuICA+XHJcbiAgICA8dGhlYWRcclxuICAgICAgI25lc3RlZEhlYWRlclxyXG4gICAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cIm5lc3RlZFRhYmxlSGVhZGVyQmFja2dyb3VuZENvbG9yXCJcclxuICAgID5cclxuICAgICAgPGRpdlxyXG4gICAgICAgIGNka0Ryb3BMaXN0XHJcbiAgICAgICAgW2Nka0Ryb3BMaXN0RGF0YV09XCJyb3c/LmRldGFpbC5jb2x1bW5zXCJcclxuICAgICAgICBjZGtEcm9wTGlzdE9yaWVudGF0aW9uPVwiaG9yaXpvbnRhbFwiXHJcbiAgICAgICAgKGNka0Ryb3BMaXN0RHJvcHBlZCk9XCJkcm9wQ29sdW1uKCRldmVudCwgcm93KVwiXHJcbiAgICAgICAgKGNka0Ryb3BMaXN0U29ydGVkKT1cIm9uTmVzdGVkQ29sU29ydCgkZXZlbnQsIHByZXZpZXdOZXN0ZWRDb2xzKVwiXHJcbiAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJuZXN0ZWRUYWJsZUhlYWRlclJvd0hlaWdodFwiXHJcbiAgICAgICAgY2xhc3M9XCJkLWZsZXggdHIgYm9yZGVyLWJlbG93XCJcclxuICAgICAgPlxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgICpuZ0Zvcj1cImxldCBjb2wgb2Ygcm93LmRldGFpbC5jb2x1bW5zOyBsZXQgaSA9IGluZGV4XCJcclxuICAgICAgICAgIFtzdHlsZS53aWR0aC5weF09XCJjb2w/LndpZHRoIHx8IDI1MFwiXHJcbiAgICAgICAgICBbc3R5bGUubWluV2lkdGgucHhdPVwiY29sPy53aWR0aCB8fCAyNTBcIlxyXG4gICAgICAgICAgW3N0eWxlLm1heFdpZHRoLnB4XT1cImNvbD8ud2lkdGggfHwgMjUwXCJcclxuICAgICAgICAgIGNsYXNzPVwicHgtNCB0aFwiXHJcbiAgICAgICAgICBbYXR0ci5maWVsZF09XCJjb2wuZmllbGRcIlxyXG4gICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJuZXN0ZWRUYWJsZUhlYWRlckJhY2tncm91bmRDb2xvclwiXHJcbiAgICAgICAgICBjZGtEcmFnXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzcz1cImQtZmxleCBoLTEwMCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBwb3NpdGlvbi1yZWxhdGl2ZSBhbGlnbi1pdGVtcy1jZW50ZXJcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1lbGxpcHNpc1wiIChjbGljayk9XCJzb3J0TmVzdGVkQ29sKGNvbCwgcm93KVwiPlxyXG4gICAgICAgICAgICAgIHt7IGNvbC5oZWFkZXIgfX1cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZ2FwLTJcIj5cclxuICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJjdXJyZW50U3ViU29ydENvbHVtbiA9PSBjb2wuZmllbGRcIlxyXG4gICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArXHJcbiAgICAgICAgICAgICAgICAgIChjb2w/Lm9yZGVyX2J5ID09ICdkZXNjJ1xyXG4gICAgICAgICAgICAgICAgICAgID8gJ2RhdGEtZ3JpZC9pY29ucy9zb3J0LWRlc2Muc3ZnJ1xyXG4gICAgICAgICAgICAgICAgICAgIDogJ2RhdGEtZ3JpZC9pY29ucy9zb3J0LWFzYy5zdmcnKVxyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBtcy0yIHN0YXJ0LTUwXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwhLS0gPGRpdlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ0aHJlZS1kb3RzIHAtMVwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib3BlblRocmVlRG90c01lbnUoJGV2ZW50LCBjb2wpXCJcclxuICAgICAgICAgICAgICAgIHN0eWxlPVwiY3Vyc29yOiBwb2ludGVyXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxyXG4gICAgICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggK1xyXG4gICAgICAgICAgICAgICAgICAgICdkYXRhLWdyaWQvaWNvbnMvdGhyZWUtZG90cy12ZXJ0aWNhbC5zdmcnXHJcbiAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvZGl2PiAtLT5cclxuXHJcbiAgICAgICAgICAgICAgPCEtLSBPbmx5IHNob3cgbWVudSBpZiB0aGlzIGNvbHVtbiBpcyBhY3RpdmUgLS0+XHJcbiAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJwb3NpdGlvbi1hYnNvbHV0ZVwiXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cImFjdGl2ZUNvbCA9PT0gY29sXCJcclxuICAgICAgICAgICAgICAgIHN0eWxlPVwidG9wOiAtNTAlOyB6LWluZGV4OiAyMTsgbGVmdDogMFwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxyXG4gICAgICAgICAgICAgICAgICAgIGNvbHVtbk1lbnU7XHJcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dDoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgY29sOiBjb2wsXHJcbiAgICAgICAgICAgICAgICAgICAgICBpc05lc3RlZFRhYmxlOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgY29sdW1uczogcm93Py5kZXRhaWwuY29sdW1uc1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInJlc2l6ZS1oYW5kbGVcIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXHJcbiAgICAgICAgICAgICAgICAobW91c2Vkb3duKT1cIlxyXG4gICAgICAgICAgICAgICAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgICAgICAgb25SZXNpemVDb2x1bW4oJGV2ZW50LCBjb2wpO1xyXG4gICAgICAgICAgICAgICAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9yZXNpemUtaGFuZGxlLnN2ZydcclxuICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgICAgICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8bmctdGVtcGxhdGUgY2RrRHJhZ1ByZXZpZXc+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLTIgYm9yZGVyIGQtZmxleCBnYXAtMlwiPlxyXG4gICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxyXG4gICAgICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2Fycm93cy1tb3ZlLnN2ZydcclxuICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgICAgICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdj57eyBjb2wuaGVhZGVyIH19PC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L3RoZWFkPlxyXG4gICAgPGRpdlxyXG4gICAgICBbc3R5bGUud2lkdGgucHhdPVwibmVzdGVkSGVhZGVyLm9mZnNldFdpZHRoIC0gMTBcIlxyXG4gICAgICBbc3R5bGUubWluV2lkdGgucHhdPVwibmVzdGVkSGVhZGVyLm9mZnNldFdpZHRoIC0gMTBcIlxyXG4gICAgPlxyXG4gICAgICA8Y2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0XHJcbiAgICAgICAgW2l0ZW1TaXplXT1cIm5lc3RlZFRhYmxlcm93SGVpZ2h0XCJcclxuICAgICAgICBjbGFzcz1cInZpZXdwb3J0XCJcclxuICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cIlxyXG4gICAgICAgICAgKHJvdz8uZGV0YWlsPy5yZXN1bHQ/Lmxlbmd0aCA8IDVcclxuICAgICAgICAgICAgPyBuZXN0ZWRUYWJsZXJvd0hlaWdodCAqIHJvdz8uZGV0YWlsPy5yZXN1bHQ/Lmxlbmd0aCArIDQwXHJcbiAgICAgICAgICAgIDogMzAwKSArIChoYXNIb3Jpem9udGFsU2Nyb2xsID8gLTEyIDogMSlcclxuICAgICAgICBcIlxyXG4gICAgICAgIFtzdHlsZS53aWR0aC5weF09XCJuZXN0ZWRIZWFkZXIub2Zmc2V0V2lkdGggLSAxMFwiXHJcbiAgICAgICAgW3N0eWxlLm1pbldpZHRoLnB4XT1cIm5lc3RlZEhlYWRlci5vZmZzZXRXaWR0aCAtIDEwXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXIgYm9yZGVyLWJlbG93IGQtZmxleCB0clwiXHJcbiAgICAgICAgICAqY2RrVmlydHVhbEZvcj1cImxldCBkIG9mIHJvdz8uZGV0YWlsPy5yZXN1bHQ7IHRyYWNrQnk6IHRyYWNrQnlJZFwiXHJcbiAgICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cIm5lc3RlZFRhYmxlcm93SGVpZ2h0XCJcclxuICAgICAgICAgIFtzdHlsZS53aWR0aC5weF09XCJuZXN0ZWRIZWFkZXI/Lm9mZnNldFdpZHRoXCJcclxuICAgICAgICAgIFtzdHlsZS5taW5XaWR0aC5weF09XCJuZXN0ZWRIZWFkZXI/Lm9mZnNldFdpZHRoXCJcclxuICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwiYm9keUJhY2tncm91bmRDb2xvclwiXHJcbiAgICAgICAgICAoY29udGV4dG1lbnUpPVwib25SaWdodENsaWNrKCRldmVudCwgZClcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3M9XCJweC00IHB5LTAgdGRcIlxyXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgY29sIG9mIHByZXZpZXdOZXN0ZWRDb2xzOyBsZXQgaiA9IGluZGV4XCJcclxuICAgICAgICAgICAgW3N0eWxlLmZvbnRTaXplLnB4XT1cIm5lc3RlZFRhYmxlcm93Rm9udHNpemVcIlxyXG4gICAgICAgICAgICBbYXR0ci5maWVsZF09XCJjb2wuZmllbGRcIlxyXG4gICAgICAgICAgICBbc3R5bGUud2lkdGgucHhdPVwiY29sPy53aWR0aCB8fCAyNTBcIlxyXG4gICAgICAgICAgICBbc3R5bGUubWluV2lkdGgucHhdPVwiY29sPy53aWR0aCB8fCAyNTBcIlxyXG4gICAgICAgICAgICBbc3R5bGUubWF4V2lkdGgucHhdPVwiY29sPy53aWR0aCB8fCAyNTBcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJuZXN0ZWRUYWJsZXJvd0hlaWdodCAtIDFcIlxyXG4gICAgICAgICAgICAgIFtzdHlsZS5tYXgtd2lkdGgucHhdPVwiY29sPy53aWR0aFwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDwhLS0ge3sgZFtjb2wuZmllbGRdIHx8IChjb2wuaXNfYW1vdW50ID8gMCA6IFwiLVwiKSB9fSAtLT5cclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAjY2VsbFRleHRcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwidGV4dC1lbGxpcHNpcyBmbGV4LWdyb3ctMVwiXHJcbiAgICAgICAgICAgICAgICBbdGl0bGVdPVwiXHJcbiAgICAgICAgICAgICAgICAgIGNvbC50eXBlID09PSAnZGF0ZSdcclxuICAgICAgICAgICAgICAgICAgICA/IChnZXROZXN0ZWRWYWx1ZShkLCBjb2wuZmllbGQpIHwgZGF0ZSA6IGRhdGVGb3JtYXQpXHJcbiAgICAgICAgICAgICAgICAgICAgOiBnZXROZXN0ZWRWYWx1ZShkLCBjb2wuZmllbGQpIHx8ICctJ1xyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sLnR5cGUgIT09ICdpbWFnZSdcIj5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbC5pc19hbW91bnRcIj57e1xyXG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbmN5U3ltYm9sXHJcbiAgICAgICAgICAgICAgICAgIH19PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgIHt7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIWlzTmVzdGVkVmFsdWVBcnJheShkLCBjb2wuZmllbGQpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGNvbC50eXBlID09PSAnZGF0ZSdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAoaXNEYXRlKGdldE5lc3RlZFZhbHVlKGQsIGNvbC5maWVsZCkpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IChnZXROZXN0ZWRWYWx1ZShkLCBjb2wuZmllbGQpIHwgZGF0ZTogZGF0ZUZvcm1hdClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogKGdldE5lc3RlZFZhbHVlKGQsIGNvbC5maWVsZCk/LnZhbHVlIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldE5lc3RlZFZhbHVlKGQsIGNvbC5maWVsZCk/Lm5hbWUgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0TmVzdGVkVmFsdWUoZCwgY29sLmZpZWxkKSB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLScpKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IChnZXROZXN0ZWRWYWx1ZShkLCBjb2wuZmllbGQpPy52YWx1ZSB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldE5lc3RlZFZhbHVlKGQsIGNvbC5maWVsZCk/Lm5hbWUgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXROZXN0ZWRWYWx1ZShkLCBjb2wuZmllbGQpIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbC5pc19hbW91bnQgPyAwOiAnLScpKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAoZ2V0TmVzdGVkVmFsdWUoZCwgY29sLmZpZWxkKT8uWzBdPy5kZXBhcnRtZW50X25hbWUgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0TmVzdGVkVmFsdWUoZCwgY29sLmZpZWxkKT8uWzBdPy5yb2xlTmFtZSB8fCBnZXROZXN0ZWRWYWx1ZShkLCBjb2wuZmllbGQpPy5bMF0/LmZ1bGxfbmFtZSB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLScpXHJcbiAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmYWxzZVwiPlxyXG4gICAgICAgICAgICAgICAgICB7eyBnZXRUb3RhbEFtb3VudChjb2wpIH19XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2wudHlwZSA9PSAnaW1hZ2UnXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdEltYWdlUGxhY2Vob2xkZXI7XHJcbiAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvdzogZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29sOiBjb2wsXHJcbiAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvY2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI2xlZnRSaWdodE5lc3RlZFBsYWNlaG9sZGVyIGxldC1yb3c+XHJcbiAgPHRhYmxlXHJcbiAgICBjbGFzcz1cIm5lc3RlZC10YWJsZSB0YWJsZSB0YWJsZS1zbSB3LTEwMCBtYi0wXCJcclxuICAgIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwiYm9keUJhY2tncm91bmRDb2xvclwiXHJcbiAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cIlxyXG4gICAgICBncmlkVHlwZSA9PSAnQXNzZXRzJ1xyXG4gICAgICAgID8gKG5lc3RlZFRhYmxlQ29udGFpbmVyPy5uYXRpdmVFbGVtZW50Py5vZmZzZXRIZWlnaHQgPz8gMCkgKyAxMlxyXG4gICAgICAgIDogKHRhc2tNYW5hZ2VtZW50Q29udGFpbmVyPy5uYXRpdmVFbGVtZW50Py5vZmZzZXRIZWlnaHQgPz8gMClcclxuICAgIFwiXHJcbiAgPlxyXG4gICAgPCEtLSA8ZGl2IGNsYXNzPVwidGhlYWRcIj5cclxuICAgICAgPGRpdlxyXG4gICAgICAgIGNsYXNzPVwidHIgZC1mbGV4IGJvcmRlci1iZWxvd1wiXHJcbiAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJuZXN0ZWRUYWJsZUhlYWRlclJvd0hlaWdodFwiXHJcbiAgICAgICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJoZWFkZXJCYWNrZ3JvdW5kQ29sb3JcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRoXCIgKm5nRm9yPVwibGV0IF8gb2YgWzEsIDIsIDMsIDQsIDVdXCI+PC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+IC0tPlxyXG4gICAgPCEtLSA8ZGl2IGNsYXNzPVwidGJvZHlcIj5cclxuICAgICAgPGRpdlxyXG4gICAgICAgIGNsYXNzPVwidHIgYm9yZGVyLWJlbG93XCJcclxuICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cIm5lc3RlZFRhYmxlcm93SGVpZ2h0XCJcclxuICAgICAgICAqbmdGb3I9XCJsZXQgXyBvZiByb3c/LmRldGFpbD8ucmVzdWx0XCJcclxuICAgICAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cImhlYWRlckJhY2tncm91bmRDb2xvclwiXHJcbiAgICAgID5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidGRcIiAqbmdGb3I9XCJsZXQgX18gb2YgWzEsIDIsIDMsIDQsIDVdXCIgY2xhc3M9XCJweS0wXCI+XHJcbiAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cIm5lc3RlZFRhYmxlcm93SGVpZ2h0XCJcclxuICAgICAgICAgICAgW3N0eWxlLm1heC13aWR0aC5weF09XCJuZXN0ZWRUYWJsZXJvd0hlaWdodFwiXHJcbiAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PiAtLT5cclxuICA8L3RhYmxlPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICN0YXNrTWFuYWdlbWVudFRlbXBsYXRlIGxldC10YXNrRGV0YWlscz1cInRhc2tEZXRhaWxzXCI+XHJcbiAgPGRpdlxyXG4gICAgY2xhc3M9XCJwLTRcIlxyXG4gICAgI3Rhc2tNYW5hZ2VtZW50Q29udGFpbmVyXHJcbiAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cIm5lc3RlZFRhYmxlSGVhZGVyQmFja2dyb3VuZENvbG9yXCJcclxuICAgIFtzdHlsZS5mb250RmFpbWx5XT1cImZvbnRGYWltbHlcIlxyXG4gID5cclxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW5cIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbC00XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIml0ZW0tdGl0bGVcIj5EZXNjcmlwdGlvbjwvZGl2PlxyXG4gICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cIml0ZW0tY29udGVudCBmaXJzdERpdlwiPlxyXG4gICAgICAgIHt7IHRhc2tEZXRhaWxzLmRlc2NyaXB0aW9uIH19XHJcbiAgICAgIDwvZGl2PiAtLT5cclxuICAgICAgICA8cFxyXG4gICAgICAgICAgW3N0eWxlLmZvbnRTaXplXT1cImJvZHlUZXh0Rm9udHNTaXplXCJcclxuICAgICAgICAgIGNsYXNzPVwiaXRlbS1jb250ZW50IGZpcnN0RGl2IHRhc2tEZXNjcmlwdGlvbiBwZS00XCJcclxuICAgICAgICAgIFtpbm5lckhUTUxdPVwiZ2V0U2FmZUNvbW1lbnQodGFza0RldGFpbHM/LmVkaXRvcl9kZXNjcmlwdGlvbilcIlxyXG4gICAgICAgICAgKGNsaWNrKT1cIm9wZW5GdWxsSW1hZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgPjwvcD5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpdGVtLXRpdGxlXCI+QXR0YWNobWVudHM8L2Rpdj5cclxuICAgICAgICA8aDUgKm5nSWY9XCJ0YXNrRGV0YWlscz8uYXR0YWNobWVudHM/Lmxlbmd0aCA9PSAwXCI+XHJcbiAgICAgICAgICBObyBBdHRhY2htZW50cyBmb3VuZFxyXG4gICAgICAgIDwvaDU+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgKm5nSWY9XCJ0YXNrRGV0YWlscz8uYXR0YWNobWVudHM/Lmxlbmd0aFwiXHJcbiAgICAgICAgICBjbGFzcz1cIml0ZW0tY29udGVudCBkLWZsZXggZmxleC13cmFwXCJcclxuICAgICAgICAgIHN0eWxlPVwiZ2FwOiAxMHB4XCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8YVxyXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgYXR0YWNoZW1lbnQgb2YgdGFza0RldGFpbHM/LmF0dGFjaG1lbnRzOyBsZXQgaSA9IGluZGV4XCJcclxuICAgICAgICAgICAgY2xhc3M9XCJzeW1ib2wtbGFiZWwgZnMtMiBmdy1zZW1pYm9sZCB0ZXh0LXN1Y2Nlc3MgY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgIHRpdGxlPVwie3sgdGFza0RldGFpbHM/LmF0dGFjaG1lbnRzX25hbWVbaV0gfHwgJ0F0dGFjaG1lbnQnIH19XCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwiZG93bmxvYWRBdHRjaG1lbnQoYXR0YWNoZW1lbnQpXCJcclxuICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxyXG4gICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArXHJcbiAgICAgICAgICAgICAgICAnZGF0YS1ncmlkL2RvY3VtZW50LWljb25zLycgK1xyXG4gICAgICAgICAgICAgICAgZ2V0RXh0ZW50aW9uKGF0dGFjaGVtZW50KSArXHJcbiAgICAgICAgICAgICAgICAnLnN2ZydcclxuICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgIDwvYT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpdGVtLXRpdGxlXCI+XHJcbiAgICAgICAgICBDb21tZW50cyAoe3sgdGFza0RldGFpbHM/LmNvbW1lbnRzPy5sZW5ndGggfX0pXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGg1ICpuZ0lmPVwidGFza0RldGFpbHM/LmNvbW1lbnRzPy5sZW5ndGggPT0gMFwiPk5vIENvbW1lbnRzIGZvdW5kPC9oNT5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwidGFza0RldGFpbHM/LmNvbW1lbnRzPy5sZW5ndGhcIiBjbGFzcz1cIml0ZW0tY29udGVudFwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbW1lbnRcIiAqbmdGb3I9XCJsZXQgY29tbWVudCBvZiB0YXNrRGV0YWlscy5jb21tZW50c1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBwZS0zXCI+XHJcbiAgICAgICAgICAgICAgPGltZ1xyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJwaWMgaW1hZ2UtaW5wdXQtd3JhcHBlclwiXHJcbiAgICAgICAgICAgICAgICBbc3R5bGUud2lkdGgucHhdPVwicm93SGVpZ2h0IC0gMTJcIlxyXG4gICAgICAgICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJyb3dIZWlnaHQgLSAxMlwiXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cImNvbW1lbnQ/LmNvbW1lbnRfYnkubG9nb1wiXHJcbiAgICAgICAgICAgICAgICBzcmM9XCJ7eyBjb21tZW50Py5jb21tZW50X2J5LmxvZ28gfX1cIlxyXG4gICAgICAgICAgICAgICAgYWx0PVwie3sgY29tbWVudC5jb21tZW50X2J5LmZ1bGxfbmFtZSB9fVwiXHJcbiAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICA8IS0tIDxhcHAtZGVmYXVsdC1pbWFnZS1wbGFjZWhvbGRlciAqbmdJZj1cIiFjb21tZW50Py5jb21tZW50X2J5LmxvZ29cIiB0aXRsZT1cInt7IGNvbW1lbnQuY29tbWVudF9ieS5mdWxsX25hbWUgfX1cIiBbbmFtZV09XCJjb21tZW50LmNvbW1lbnRfYnkuZnVsbF9uYW1lXCI+PC9hcHAtZGVmYXVsdC1pbWFnZS1wbGFjZWhvbGRlcj4gLS0+XHJcbiAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiIWNvbW1lbnQ/LmNvbW1lbnRfYnkubG9nb1wiXHJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJnZXREeW5hbWljQ2xhc3MoY29tbWVudC5jb21tZW50X2J5LmZ1bGxfbmFtZSlcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJwaWMgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciByb3VuZGVkLWNpcmNsZVwiXHJcbiAgICAgICAgICAgICAgICBbc3R5bGUud2lkdGgucHhdPVwicm93SGVpZ2h0IC0gMTJcIlxyXG4gICAgICAgICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJyb3dIZWlnaHQgLSAxMlwiXHJcbiAgICAgICAgICAgICAgICBbc3R5bGUuZm9udFNpemUucHhdPVwicm93SGVpZ2h0IC8gM1wiXHJcbiAgICAgICAgICAgICAgICB0aXRsZT1cInt7IGNvbW1lbnQuY29tbWVudF9ieS5mdWxsX25hbWUgfX1cIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIHt7IGdldEluaXRpYWxzKGNvbW1lbnQuY29tbWVudF9ieS5mdWxsX25hbWUpIH19XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29tbWVudC1hdXRob3IgZnMtMTRweFwiPlxyXG4gICAgICAgICAgICAgICAge3sgY29tbWVudD8uY29tbWVudF9ieS5mdWxsX25hbWUgfX1cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNvbW1lbnQtY29udGVudCBmb3JDb21tZW50SW1nXCJcclxuICAgICAgICAgICAgICAgIFtpbm5lckhUTUxdPVwiZ2V0U2FmZUNvbW1lbnQoY29tbWVudC5jb21tZW50KVwiXHJcbiAgICAgICAgICAgICAgPjwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb21tZW50LXRpbWVzdGFtcFwiPlxyXG4gICAgICAgICAgICAgICAge3sgY29tbWVudC5jb21tZW50X2RhdGUgfCBkYXRlIH19XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbW1lbnQtdGltZXN0YW1wXCI+XHJcbiAgICAgICAgICAgICAgICBSZXBsaWVzOiAoe3sgY29tbWVudC5yZXBsaWVzLmxlbmd0aCB9fSlcclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuIl19
|
|
5375
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1ncmlkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGEtZ3JpZC9zcmMvbGliL2RhdGEtZ3JpZC9kYXRhLWdyaWQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YS1ncmlkL3NyYy9saWIvZGF0YS1ncmlkL2RhdGEtZ3JpZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUVULEtBQUssRUFDTCxNQUFNLEVBSU4sU0FBUyxFQUVULFlBQVksRUFFWixZQUFZLEVBTVosdUJBQXVCLEVBRXZCLFlBQVksRUFDWixNQUFNLEVBQ04sUUFBUSxFQUNULE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sRUFVTCxlQUFlLEdBQ2hCLE1BQU0sd0JBQXdCLENBQUM7QUFDaEMsT0FBTyxFQUNMLE9BQU8sRUFDUCxLQUFLLEVBQ0wsS0FBSyxFQUNMLFVBQVUsRUFDVixPQUFPLEVBQ1AsS0FBSyxFQUNMLE9BQU8sR0FDUixNQUFNLHFCQUFxQixDQUFDO0FBRTdCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUVoRCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRzVCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7O0FBV3JFLE1BQU0sQ0FBTixJQUFZLGdCQVFYO0FBUkQsV0FBWSxnQkFBZ0I7SUFDMUIsaUNBQWEsQ0FBQTtJQUNiLDhDQUEwQixDQUFBO0lBQzFCLDhDQUEwQixDQUFBO0lBQzFCLGlEQUE2QixDQUFBO0lBQzdCLDBDQUFzQixDQUFBO0lBQ3RCLDBDQUFzQixDQUFBO0lBQ3RCLGlEQUE2QixDQUFBO0FBQy9CLENBQUMsRUFSVyxnQkFBZ0IsS0FBaEIsZ0JBQWdCLFFBUTNCO0FBR0QsTUFBTSxDQUFD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QjtnQkEyWmhDLGVBQWU7c0JBRGQsWUFBWTt1QkFBQyxnQkFBZ0IsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFnc0IxQyxRQUFRO3NCQURQLFlBQVk7dUJBQUMseUJBQXlCLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBcUJuRCxRQUFRO3NCQURQLFlBQVk7dUJBQUMsZUFBZSxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQTZGZCxZQUFZO3NCQUF0QyxTQUFTO3VCQUFDLGNBQWM7Z0JBNk9BLFVBQVU7c0JBQWxDLFNBQVM7dUJBQUMsWUFBWTtnQkFDRSxVQUFVO3NCQUFsQyxTQUFTO3VCQUFDLFlBQVk7Z0JBRXZCLG9CQUFvQjtzQkFEbkIsU0FBUzt1QkFBQyxzQkFBc0I7Z0JBR2pDLG9CQUFvQjtzQkFEbkIsU0FBUzt1QkFBQyxzQkFBc0I7Z0JBZzRCSSxzQkFBc0I7c0JBQTFELFNBQVM7dUJBQUMsd0JBQXdCO2dCQUNFLHNCQUFzQjtzQkFBMUQsU0FBUzt1QkFBQyx3QkFBd0I7Z0JBbWVOLGNBQWM7c0JBQTFDLFNBQVM7dUJBQUMsZ0JBQWdCO2dCQTYwQzNCLFNBQVM7c0JBRFIsWUFBWTt1QkFBQyxrQkFBa0IsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkEySHRDLE9BQU87c0JBRFosWUFBWTt1QkFBQyxnQkFBZ0IsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkF1SjFDLFdBQVc7c0JBRFYsU0FBUzt1QkFBQyxhQUFhO2dCQThiYyx1QkFBdUI7c0JBQTVELFNBQVM7dUJBQUMseUJBQXlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgT25Jbml0LFxyXG4gIElucHV0LFxyXG4gIE91dHB1dCxcclxuICBPbkNoYW5nZXMsXHJcbiAgU2ltcGxlQ2hhbmdlcyxcclxuICBFbGVtZW50UmVmLFxyXG4gIFZpZXdDaGlsZCxcclxuICBBZnRlclZpZXdJbml0LFxyXG4gIEhvc3RMaXN0ZW5lcixcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgTmdab25lLFxyXG4gIFJlbmRlcmVyMixcclxuICBBZnRlclZpZXdDaGVja2VkLFxyXG4gIEVtYmVkZGVkVmlld1JlZixcclxuICBUZW1wbGF0ZVJlZixcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBRdWVyeUxpc3QsXHJcbiAgVmlld0NoaWxkcmVuLFxyXG4gIGluamVjdCxcclxuICBJbmplY3RvclxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTcGxpdENvbHVtbnNTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvc3BsaXQtY29sdW1ucy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ29tbW9uU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2NvbW1vbi5zZXJ2aWNlJztcclxuaW1wb3J0IHtcclxuICBDZGtEcmFnLFxyXG4gIENka0RyYWdEcm9wLFxyXG4gIENka0RyYWdFbmQsXHJcbiAgQ2RrRHJhZ0VudGVyLFxyXG4gIENka0RyYWdFeGl0LFxyXG4gIENka0RyYWdNb3ZlLFxyXG4gIENka0RyYWdTb3J0RXZlbnQsXHJcbiAgQ2RrRHJhZ1N0YXJ0LFxyXG4gIERyYWdEcm9wLFxyXG4gIG1vdmVJdGVtSW5BcnJheSxcclxufSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcclxuaW1wb3J0IHtcclxuICB0cmlnZ2VyLFxyXG4gIHN0YXRlLFxyXG4gIHN0eWxlLFxyXG4gIHRyYW5zaXRpb24sXHJcbiAgYW5pbWF0ZSxcclxuICBxdWVyeSxcclxuICBzdGFnZ2VyLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xyXG5pbXBvcnQgeyBDZGtEcm9wTGlzdCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9kcmFnLWRyb3AnO1xyXG5pbXBvcnQgeyBTVEFUVVNFU19CQURHRV9NQVAgfSBmcm9tICcuL3N0YXR1c2VzJztcclxuaW1wb3J0IHsgQ29weVNlcnZpY2VTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvY29weS1zZXJ2aWNlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyB0YWtlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IERvbVNhbml0aXplciwgU2FmZUh0bWwgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcclxuaW1wb3J0IHsgRXhwb3J0U2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2V4cG9ydC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ2VsbEhvc3REaXJlY3RpdmUgfSBmcm9tICcuLi9kaXJlY3RpdmVzL2NlbGxIb3N0LmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IERhdGVQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgRm9ybWF0Q3VycmVuY3lQaXBlIH0gZnJvbSAnLi4vcGlwZXMvZm9ybWF0LWN1cnJlbmN5LnBpcGUnO1xyXG5cclxuaW50ZXJmYWNlIENlbGxQb3NpdGlvbiB7XHJcbiAgcm93SW5kZXg6IG51bWJlcjtcclxuICBjb2xJbmRleDogbnVtYmVyO1xyXG4gIHN1YkNvbEluZGV4OiBudW1iZXI7XHJcbiAgZmllbGQ6IHN0cmluZztcclxuICBrZXk6IHN0cmluZztcclxufVxyXG5leHBvcnQgZW51bSBSb3dBbmltYXRpb25UeXBlIHtcclxuICBOb25lID0gJ25vbmUnLFxyXG4gIFNwcmVhZCA9ICdzcHJlYWRBbmltYXRpb24nLFxyXG4gIEJvdW5jZSA9ICdib3VuY2VBbmltYXRpb24nLFxyXG4gIFNsaWRlVXAgPSAnc2xpZGVVcEZyb21Cb3R0b20nLFxyXG4gIEZsaXAgPSAnZmxpcEFuaW1hdGlvbicsXHJcbiAgU2tldyA9ICdza2V3QW5pbWF0aW9uJyxcclxuICBTbGlkZVJpZ2h0ID0gJ3NsaWRlRnJvbVJpZ2h0JyxcclxufVxyXG5cclxuXHJcbmV4cG9ydCBjb25zdCBzb3J0aW5nQW5pbWF0aW9uID0gdHJpZ2dlcignbGlzdFNvcnQnLCBbXHJcbiAgdHJhbnNpdGlvbignKiA9PiAqJywgW1xyXG4gICAgLy8gUXVlcnkgYWxsIGVsZW1lbnRzIGVudGVyaW5nIG9yIGxlYXZpbmdcclxuICAgIHF1ZXJ5KCc6ZW50ZXIsIDpsZWF2ZScsIHN0eWxlKHsgcG9zaXRpb246ICdhYnNvbHV0ZScsIHdpZHRoOiAnMTAwJScgfSksIHsgb3B0aW9uYWw6IHRydWUgfSksXHJcblxyXG4gICAgLy8gQW5pbWF0ZSBsZWF2aW5nIGVsZW1lbnRzIHVwd2FyZCB3aXRoIGZhZGUgb3V0XHJcbiAgICBxdWVyeSgnOmxlYXZlJywgW1xyXG4gICAgICBhbmltYXRlKCczMDBtcyBlYXNlLWluJywgc3R5bGUoeyB0cmFuc2Zvcm06ICd0cmFuc2xhdGVZKC0yMHB4KScsIG9wYWNpdHk6IDAgfSkpXHJcbiAgICBdLCB7IG9wdGlvbmFsOiB0cnVlIH0pLFxyXG5cclxuICAgIC8vIFN0YWdnZXIgdGhlIGVudGVyaW5nIGVsZW1lbnRzIGZvciBhIHNtb290aGVyIGVmZmVjdFxyXG4gICAgcXVlcnkoJzplbnRlcicsIFtcclxuICAgICAgc3R5bGUoeyB0cmFuc2Zvcm06ICd0cmFuc2xhdGVZKDIwcHgpJywgb3BhY2l0eTogMCB9KSxcclxuICAgICAgc3RhZ2dlcig1MCwgW1xyXG4gICAgICAgIGFuaW1hdGUoJzMwMG1zIGVhc2Utb3V0Jywgc3R5bGUoeyB0cmFuc2Zvcm06ICd0cmFuc2xhdGVZKDApJywgb3BhY2l0eTogMSB9KSlcclxuICAgICAgXSlcclxuICAgIF0sIHsgb3B0aW9uYWw6IHRydWUgfSlcclxuICBdKVxyXG5dKTtcclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdkYXRhLWdyaWQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRhLWdyaWQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2RhdGEtZ3JpZC5jb21wb25lbnQuc2NzcyddLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gIGFuaW1hdGlvbnM6IFtcclxuICAgIHRyaWdnZXIoJ2FjY29yZGlvblRvZ2dsZScsIFtcclxuICAgICAgc3RhdGUoXHJcbiAgICAgICAgJ2NvbGxhcHNlZCcsXHJcbiAgICAgICAgc3R5bGUoeyBoZWlnaHQ6ICcwcHgnLCBvdmVyZmxvdzogJ3Vuc2V0JyB9KVxyXG4gICAgICApLFxyXG4gICAgICBzdGF0ZSgnZXhwYW5kZWQnLCBzdHlsZSh7IGhlaWdodDogJyonLCBvdmVyZmxvdzogJ3Vuc2V0JyB9KSksXHJcbiAgICAgIHRyYW5zaXRpb24oJ2NvbGxhcHNlZCA8PT4gZXhwYW5kZWQnLCBhbmltYXRlKCczMDBtcyBlYXNlLWluJykpLFxyXG4gICAgXSksXHJcbiAgICB0cmlnZ2VyKCdzbGlkZVRvZ2dsZScsIFtcclxuICAgICAgdHJhbnNpdGlvbignOmVudGVyJywgW1xyXG4gICAgICAgIHN0eWxlKHsgaGVpZ2h0OiAnMHB4Jywgb3BhY2l0eTogMCwgb3ZlcmZsb3c6ICdoaWRkZW4nIH0pLFxyXG4gICAgICAgIGFuaW1hdGUoJzMwMG1zIGVhc2Utb3V0Jywgc3R5bGUoeyBoZWlnaHQ6ICcqJywgb3BhY2l0eTogMSB9KSlcclxuICAgICAgXSksXHJcbiAgICAgIHRyYW5zaXRpb24oJzpsZWF2ZScsIFtcclxuICAgICAgICBzdHlsZSh7IGhlaWdodDogJyonLCBvcGFjaXR5OiAxLCBvdmVyZmxvdzogJ2hpZGRlbicgfSksXHJcbiAgICAgICAgYW5pbWF0ZSgnMzAwbXMgZWFzZS1pbicsIHN0eWxlKHsgaGVpZ2h0OiAnMHB4Jywgb3BhY2l0eTogMCB9KSlcclxuICAgICAgXSlcclxuICAgIF0pLFxyXG4gICAgdHJpZ2dlcignc2xpZGVVcCcsIFtcclxuICAgICAgc3RhdGUoJ3ZvaWQnLCBzdHlsZSh7IHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVkoMTAwJSknLCBvcGFjaXR5OiAwIH0pKSxcclxuICAgICAgc3RhdGUoJyonLCBzdHlsZSh7IHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVkoMCknLCBvcGFjaXR5OiAxIH0pKSxcclxuICAgICAgdHJhbnNpdGlvbigndm9pZCA9PiAqJywgYW5pbWF0ZSgnMzAwbXMgZWFzZS1vdXQnKSksXHJcbiAgICAgIHRyYW5zaXRpb24oJyogPT4gdm9pZCcsIGFuaW1hdGUoJzMwMG1zIGVhc2UtaW4nKSksXHJcbiAgICBdKSxcclxuICAgIHRyaWdnZXIoJ3Jvd0R5bmFtaWMnLCBbXHJcblxyXG4gICAgICAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLSBTUFJFQUQgLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cclxuICAgICAgdHJhbnNpdGlvbignKiA9PiBzcHJlYWRBbmltYXRpb24nLCBbXHJcbiAgICAgICAgcXVlcnkoJzplbnRlcicsIFtcclxuICAgICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMCwgdHJhbnNmb3JtOiAnc2NhbGVYKDAuNyknIH0pLFxyXG4gICAgICAgICAgc3RhZ2dlcig2MCwgW1xyXG4gICAgICAgICAgICBhbmltYXRlKCczNTBtcyBlYXNlLW91dCcsXHJcbiAgICAgICAgICAgICAgc3R5bGUoeyBvcGFjaXR5OiAxLCB0cmFuc2Zvcm06ICdzY2FsZVgoMSknIH0pXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgIF0pXHJcbiAgICAgICAgXSwgeyBvcHRpb25hbDogdHJ1ZSB9KSxcclxuXHJcbiAgICAgICAgcXVlcnkoJzpsZWF2ZScsIFtcclxuICAgICAgICAgIHN0YWdnZXIoNDAsIFtcclxuICAgICAgICAgICAgYW5pbWF0ZSgnMjIwbXMgZWFzZS1pbicsXHJcbiAgICAgICAgICAgICAgc3R5bGUoeyBvcGFjaXR5OiAwLCB0cmFuc2Zvcm06ICdzY2FsZVgoMC43KScgfSlcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgXSlcclxuICAgICAgICBdLCB7IG9wdGlvbmFsOiB0cnVlIH0pXHJcbiAgICAgIF0pLFxyXG5cclxuICAgICAgLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0gQk9VTkNFIC0tLS0tLS0tLS0tLS0tLS0tLS0tICovXHJcbiAgICAgIHRyYW5zaXRpb24oJyogPT4gYm91bmNlQW5pbWF0aW9uJywgW1xyXG4gICAgICAgIHF1ZXJ5KCc6ZW50ZXInLCBbXHJcbiAgICAgICAgICBzdHlsZSh7IG9wYWNpdHk6IDAsIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVkoLTEwcHgpJyB9KSxcclxuICAgICAgICAgIHN0YWdnZXIoNDUsIFtcclxuICAgICAgICAgICAgYW5pbWF0ZShcclxuICAgICAgICAgICAgICAnNTAwbXMgY3ViaWMtYmV6aWVyKC42OCwtMC41NSwuMjcsMS41NSknLFxyXG4gICAgICAgICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMSwgdHJhbnNmb3JtOiAndHJhbnNsYXRlWSgwKScgfSlcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgXSlcclxuICAgICAgICBdLCB7IG9wdGlvbmFsOiB0cnVlIH0pLFxyXG5cclxuICAgICAgICBxdWVyeSgnOmxlYXZlJywgW1xyXG4gICAgICAgICAgc3RhZ2dlcig0MCwgW1xyXG4gICAgICAgICAgICBhbmltYXRlKCcyMDBtcyBlYXNlLWluJyxcclxuICAgICAgICAgICAgICBzdHlsZSh7IG9wYWNpdHk6IDAsIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVkoMTBweCknIH0pXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgIF0pXHJcbiAgICAgICAgXSwgeyBvcHRpb25hbDogdHJ1ZSB9KVxyXG4gICAgICBdKSxcclxuXHJcbiAgICAgIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tIE5FVyAxOiBGTElQIC0tLS0tLS0tLS0tLS0tLS0tLS0tICovXHJcbiAgICAgIHRyYW5zaXRpb24oJyogPT4gZmxpcEFuaW1hdGlvbicsIFtcclxuICAgICAgICBxdWVyeSgnOmVudGVyJywgW1xyXG4gICAgICAgICAgc3R5bGUoeyBvcGFjaXR5OiAwLCB0cmFuc2Zvcm06ICdyb3RhdGVYKC04MGRlZyknIH0pLFxyXG4gICAgICAgICAgc3RhZ2dlcig3MCwgW1xyXG4gICAgICAgICAgICBhbmltYXRlKCc0NTBtcyBlYXNlLW91dCcsXHJcbiAgICAgICAgICAgICAgc3R5bGUoeyBvcGFjaXR5OiAxLCB0cmFuc2Zvcm06ICdyb3RhdGVYKDApJyB9KVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICBdKVxyXG4gICAgICAgIF0sIHsgb3B0aW9uYWw6IHRydWUgfSksXHJcblxyXG4gICAgICAgIHF1ZXJ5KCc6bGVhdmUnLCBbXHJcbiAgICAgICAgICBzdGFnZ2VyKDUwLCBbXHJcbiAgICAgICAgICAgIGFuaW1hdGUoJzI1MG1zIGVhc2UtaW4nLFxyXG4gICAgICAgICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMCwgdHJhbnNmb3JtOiAncm90YXRlWCg4MGRlZyknIH0pXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgIF0pXHJcbiAgICAgICAgXSwgeyBvcHRpb25hbDogdHJ1ZSB9KVxyXG4gICAgICBdKSxcclxuXHJcbiAgICAgIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tIE5FVyAyOiBTS0VXIC0tLS0tLS0tLS0tLS0tLS0tLS0tICovXHJcbiAgICAgIHRyYW5zaXRpb24oJyogPT4gc2tld0FuaW1hdGlvbicsIFtcclxuICAgICAgICBxdWVyeSgnOmVudGVyJywgW1xyXG4gICAgICAgICAgc3R5bGUoeyBvcGFjaXR5OiAwLCB0cmFuc2Zvcm06ICdza2V3WSg2ZGVnKSB0cmFuc2xhdGVZKDhweCknIH0pLFxyXG4gICAgICAgICAgc3RhZ2dlcig2MCwgW1xyXG4gICAgICAgICAgICBhbmltYXRlKCczMjBtcyBlYXNlLW91dCcsXHJcbiAgICAgICAgICAgICAgc3R5bGUoeyBvcGFjaXR5OiAxLCB0cmFuc2Zvcm06ICdza2V3WSgwZGVnKSB0cmFuc2xhdGVZKDApJyB9KVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICBdKVxyXG4gICAgICAgIF0sIHsgb3B0aW9uYWw6IHRydWUgfSksXHJcblxyXG4gICAgICAgIHF1ZXJ5KCc6bGVhdmUnLCBbXHJcbiAgICAgICAgICBzdGFnZ2VyKDQwLCBbXHJcbiAgICAgICAgICAgIGFuaW1hdGUoJzIyMG1zIGVhc2UtaW4nLFxyXG4gICAgICAgICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMCwgdHJhbnNmb3JtOiAnc2tld1koLTZkZWcpIHRyYW5zbGF0ZVkoLThweCknIH0pXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgIF0pXHJcbiAgICAgICAgXSwgeyBvcHRpb25hbDogdHJ1ZSB9KVxyXG4gICAgICBdKSxcclxuICAgICAgdHJhbnNpdGlvbignKiA9PiBzbGlkZVVwRnJvbUJvdHRvbScsIFtcclxuICAgICAgICBxdWVyeSgnOmVudGVyJywgW1xyXG4gICAgICAgICAgc3R5bGUoeyBvcGFjaXR5OiAwLCB0cmFuc2Zvcm06ICd0cmFuc2xhdGVZKDEwMHZoKScgfSksXHJcbiAgICAgICAgICBzdGFnZ2VyKDYwLCBbXHJcbiAgICAgICAgICAgIGFuaW1hdGUoJzUwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpJyxcclxuICAgICAgICAgICAgICBzdHlsZSh7IG9wYWNpdHk6IDEsIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVkoMCknIH0pXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgIF0pXHJcbiAgICAgICAgXSwgeyBvcHRpb25hbDogdHJ1ZSB9KSxcclxuXHJcbiAgICAgICAgcXVlcnkoJzpsZWF2ZScsIFtcclxuICAgICAgICAgIHN0YWdnZXIoNDAsIFtcclxuICAgICAgICAgICAgYW5pbWF0ZSgnMzAwbXMgZWFzZS1pbicsXHJcbiAgICAgICAgICAgICAgc3R5bGUoeyBvcGFjaXR5OiAwLCB0cmFuc2Zvcm06ICd0cmFuc2xhdGVZKC01MHB4KScgfSlcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgXSlcclxuICAgICAgICBdLCB7IG9wdGlvbmFsOiB0cnVlIH0pXHJcbiAgICAgIF0pLFxyXG5cclxuICAgICAgdHJhbnNpdGlvbignKiA9PiBzbGlkZUZyb21SaWdodCcsIFtcclxuICAgICAgICBxdWVyeSgnOmVudGVyJywgW1xyXG4gICAgICAgICAgc3R5bGUoeyBvcGFjaXR5OiAwLCB0cmFuc2Zvcm06ICd0cmFuc2xhdGVYKDEwMHZ3KScgfSksXHJcbiAgICAgICAgICBzdGFnZ2VyKDYwLCBbXHJcbiAgICAgICAgICAgIGFuaW1hdGUoJzUwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpJyxcclxuICAgICAgICAgICAgICBzdHlsZSh7IG9wYWNpdHk6IDEsIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVgoMCknIH0pXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgIF0pXHJcbiAgICAgICAgXSwgeyBvcHRpb25hbDogdHJ1ZSB9KSxcclxuXHJcbiAgICAgICAgcXVlcnkoJzpsZWF2ZScsIFtcclxuICAgICAgICAgIHN0YWdnZXIoNDAsIFtcclxuICAgICAgICAgICAgYW5pbWF0ZSgnMzAwbXMgZWFzZS1pbicsXHJcbiAgICAgICAgICAgICAgc3R5bGUoeyBvcGFjaXR5OiAwLCB0cmFuc2Zvcm06ICd0cmFuc2xhdGVYKDUwcHgpJyB9KVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICBdKVxyXG4gICAgICAgIF0sIHsgb3B0aW9uYWw6IHRydWUgfSlcclxuICAgICAgXSksXHJcblxyXG5cclxuXHJcbiAgICBdKVxyXG5cclxuXHJcbiAgXSxcclxuXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEYXRhR3JpZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdCwgT25Jbml0LCBBZnRlclZpZXdDaGVja2VkIHtcclxuICAvLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovL1xyXG4gIC8vICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vXHJcbiAgLy8gKioqKioqKioqKiAgSW5wdXQgR29lcyBIZXJlICoqKioqKioqKioqIC8vXHJcbiAgLy8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy9cclxuICAvLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovL1xyXG5cclxuXHJcbiAgQElucHV0KCkgcm93QW5pbWF0aW9uOiBSb3dBbmltYXRpb25UeXBlID0gUm93QW5pbWF0aW9uVHlwZS5Ob25lO1xyXG5cclxuICAvLyBQYWdpbmF0aW9uIENvbmZpZyBTdG9yZSBIZXJlXHJcbiAgQElucHV0KCkgcGFnaW5hdGlvbkNvbmZpZzogYW55ID0ge307XHJcblxyXG4gIC8vIFRoZSBkYXRhc2V0IHN0b3JlIGhlcmU7XHJcbiAgQElucHV0KCkgZGF0YVNldDogYW55W10gPSBbXTtcclxuXHJcbiAgLy8gVGhlIGNvbHVtbnMgU3RvcmUgSGVyZVxyXG4gIEBJbnB1dCgpIGNvbHVtbnM6IGFueVtdID0gW107XHJcblxyXG4gIC8vIFJvdyBIZWlnaHQ7XHJcbiAgQElucHV0KCkgcm93SGVpZ2h0OiBudW1iZXIgPSA0NDtcclxuXHJcbiAgLy8gSGVhZGVyIFJvdyBIZWlnaHQ7XHJcbiAgQElucHV0KCkgaGVhZGVyUm93SGVpZ2h0OiBudW1iZXIgPSA1MDtcclxuXHJcbiAgLy8gU2hvdyBWZXJ0aWNhbCBCb3JkZXJzO1xyXG4gIEBJbnB1dCgpIHNob3dWZXJ0aWNhbEJvcmRlcjogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvLyBFdmVuIFJvd3MgQmFja2dyb3VuZCBDb2xvcjtcclxuICBASW5wdXQoKSBldmVuUm93c0JhY2tncm91bmRDb2xvcjogc3RyaW5nIHwgdW5kZWZpbmVkID0gJyc7XHJcblxyXG4gIC8vIEV2ZW4gUm93cyBCYWNrZ3JvdW5kIENvbG9yO1xyXG4gIEBJbnB1dCgpIG9kZFJvd3NCYWNrZ3JvdW5kQ29sb3I6IHN0cmluZyB8IHVuZGVmaW5lZCA9ICcjZjJmMmYyJztcclxuXHJcbiAgLy8gSGVhZGVyIFJvd3MgQmFja2dyb3VuZCBDb2xvcjtcclxuICBASW5wdXQoKSBoZWFkZXJCYWNrZ3JvdW5kQ29sb3I6IHN0cmluZyA9ICcjZjZmOGZmJztcclxuXHJcbiAgLy8gSGVhZGVyIFJvd3MgQmFja2dyb3VuZCBDb2xvcjtcclxuICBASW5wdXQoKSBjaGVja2JveGVzQmFja2dyb3VuZENvbG9yOiBzdHJpbmcgPSAnI2Y2ZjhmZic7XHJcblxyXG4gIC8vIFNob3cgQ29sdW1ucyBHcm91cGluZztcclxuICBASW5wdXQoKSBzaG93Q29sdW1uc0dyb3VwaW5nOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIC8vIFJvdyBIb3ZlcmVkIEJhY2tncm91bmQgY29sb3I7XHJcbiAgQElucHV0KCkgcm93SG92ZXJDb2xvcjogc3RyaW5nIHwgdW5kZWZpbmVkID0gJ3JnYmEoMCwgMTIzLCAyNTUsIDAuMSknO1xyXG5cclxuICAvLyBMZWZ0IFBpbm5lZEJhY2tncm91bmQgY29sb3I7XHJcbiAgQElucHV0KCkgbGVmdFBpbm5lZEJhY2tncm91bmRDb2xvcjogc3RyaW5nIHwgdW5kZWZpbmVkID0gJyNmNmY4ZmYnO1xyXG5cclxuICAvLyBCb2R5IEJhY2tncm91bmQgY29sb3I7XHJcbiAgQElucHV0KCkgYm9keUJhY2tncm91bmRDb2xvcjogc3RyaW5nIHwgdW5kZWZpbmVkID0gJyNmNmY4ZmYnO1xyXG5cclxuICAvLyBSaWdodCBQaW5uZWQgQmFja2dyb3VuZCBjb2xvcjtcclxuICBASW5wdXQoKSByaWdodFBpbm5lZEJhY2tncm91bmRDb2xvcjogc3RyaW5nIHwgdW5kZWZpbmVkID0gJyNmNmY4ZmYnO1xyXG5cclxuICAvLyBTaWRlIE1lbnUgQmFja2dyb3VuZCBjb2xvcjtcclxuICBASW5wdXQoKSBzaWRlbWVudUJhY2tncm91bmRDb2xvcjogc3RyaW5nIHwgdW5kZWZpbmVkID0gJyNmNmY4ZmYnO1xyXG5cclxuICAvLyBCb2R5IHRleHQgY29sb3I7XHJcbiAgQElucHV0KCkgYm9keVRleHRDb2xvcjogc3RyaW5nIHwgdW5kZWZpbmVkID0gJyMwYzExMmInO1xyXG5cclxuICAvLyBIZWFkZXIgdGV4dCBjb2xvcjtcclxuICBASW5wdXQoKSBoZWFkZXJUZXh0Q29sb3I6IHN0cmluZyB8IHVuZGVmaW5lZCA9ICcjMmExZjczJztcclxuXHJcbiAgLy8gSGVhZGVyIHRleHQgY29sb3I7XHJcbiAgQElucHV0KCkgY2hlY2tib3hlc0NvbG9yOiBzdHJpbmcgfCB1bmRlZmluZWQgPSAnIzJhMWY3Myc7XHJcblxyXG4gIC8vIEhlYWRlciB0ZXh0IHNpemU7XHJcbiAgQElucHV0KCkgaGVhZGVyVGV4dEZvbnRzU2l6ZTogbnVtYmVyIHwgdW5kZWZpbmVkID0gMTQ7XHJcblxyXG4gIC8vIEJvZHkgdGV4dCBjb2xvcjtcclxuICBASW5wdXQoKSBib2R5VGV4dEZvbnRzU2l6ZTogbnVtYmVyIHwgdW5kZWZpbmVkID0gMTQ7XHJcblxyXG4gIC8vIEhlYWRlciBmb250IHdlaWdodDtcclxuICBASW5wdXQoKSBoZWFkZXJGb250V2VpZ2h0OiBudW1iZXIgfCB1bmRlZmluZWQgPSA1MDA7XHJcblxyXG4gIC8vIEJvZHkgRm9udCBXZWlnaHQ7XHJcbiAgQElucHV0KCkgYm9keUZvbnRXZWlnaHQ6IG51bWJlciB8IHVuZGVmaW5lZCA9IDQwMDtcclxuXHJcbiAgLy8gQ2hlY2tlZCBSb3cgQmFja2dyb3VuZCBDb2xvcjtcclxuICBASW5wdXQoKSBjaGVja2VkUm93QmFja2dyb3VuZENvbG9yOiBzdHJpbmcgfCB1bmRlZmluZWQgPSAnYWxpY2VibHVlJztcclxuXHJcbiAgLy8gZHJvcGRvd25zIEJhY2tncm91bmQgQ29sb3I7XHJcbiAgQElucHV0KCkgZHJvcGRvd25zQmFja2dyb3VuZENvbG9yOiBzdHJpbmcgfCB1bmRlZmluZWQgPSAnI2Y2ZjhmOCc7XHJcblxyXG5cclxuICBASW5wdXQoKSBmb290ZXJSb3dCYWNrZ3JvdW5kQ29sb3I6IHN0cmluZyB8IHVuZGVmaW5lZCA9ICcnO1xyXG5cclxuICAvLyBGb290ZXIgcm93IEhlaWdodDtcclxuICBASW5wdXQoKSBmb290ZXJSb3dIZWlnaHQ6IG51bWJlciA9IDQ2O1xyXG5cclxuICAvLyBGb290ZXIgcm93IEhlaWdodDtcclxuICBASW5wdXQoKSB0b3BHcm91cGVkQmFkZ2VzQmFja2dyb3VuZENvbG9yOiBzdHJpbmcgfCB1bmRlZmluZWQgPSAnJztcclxuXHJcbiAgLy8gU2hvdyBSb3cgd2lzZSBncm91cGluZztcclxuICBASW5wdXQoKSBzaG93Um93c0dyb3VwaW5nOiBib29sZWFuIHwgdW5kZWZpbmVkID0gZmFsc2U7XHJcblxyXG4gIC8vIFNob3cgUm93IHdpc2UgZ3JvdXBpbmc7XHJcbiAgQElucHV0KCkgc2hvd0ZpbHRlclJvdzogYm9vbGVhbiB8IHVuZGVmaW5lZCA9IGZhbHNlO1xyXG5cclxuICAvLyBTaG93IFJvdyB3aXNlIGdyb3VwaW5nO1xyXG4gIEBJbnB1dCgpIGZvbnRGYWltbHk6IHN0cmluZyB8IHVuZGVmaW5lZCA9ICdzYW5zLXNlcmlmJztcclxuXHJcbiAgLy8gU2hvdyBTaWRlQ29sdW1uO1xyXG4gIEBJbnB1dCgpIHNob3dTaWRlTWVudTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvLyBGb290ZXIgUGFkZGluZ1xyXG4gIEBJbnB1dCgpIGZvb3RlclBhZGRpbmc6IG51bWJlciA9IDNcclxuXHJcblxyXG4gIC8vIEZvb3RlciBQYWRkaW5nXHJcbiAgQElucHV0KCkgdG9wRmlsdGVyUm93SGVpZ2h0OiBudW1iZXIgPSA1MDtcclxuXHJcbiAgLy8gU2hvdyBSb3dzIHNoYWRpbmdcclxuICBASW5wdXQoKSByb3dTaGFkaW5nRW5hYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvLyBTaG93IFJvd3Mgc2hhZGluZ1xyXG4gIEBJbnB1dCgpIHNob3dTZXJpYWxOdW1iZXI6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLy8gU2luZ2xlIFNwYSBVcmwgQXR0YWNoIHRvIGljb25zXHJcbiAgQElucHV0KCkgc2luZ2xlU3BhQXNzZXRzUGF0aDogc3RyaW5nID0gJ2Fzc2V0cy8nO1xyXG5cclxuXHJcbiAgLy8gQXBwbGllZCBGaWx0ZXJzXHJcbiAgQElucHV0KCkgZmlsdGVyc0NvbmZpZzogYW55W10gPSBbXTtcclxuXHJcblxyXG4gIC8vIEFwcGxpZWQgRmlsdGVyc1xyXG4gIEBJbnB1dCgpIGxvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLy9WZXJ0aWNhbCBTY3JvbGxiYXIgc3R5bGVcclxuICBASW5wdXQoKSB2ZXJ0aWNhbFNjcm9sbGJhcldpZHRoOiAnYXV0bycgfCAndGhpbicgPSAnYXV0byc7XHJcblxyXG4gIC8vSG9yaXppbnRhbCBTY3JvbGxiYXIgc3R5bGVcclxuICBASW5wdXQoKSBob3JpemludGFsU2Nyb2xsYmFyV2lkdGg6ICdhdXRvJyB8ICd0aGluJyA9ICdhdXRvJztcclxuXHJcbiAgLy8gU2hvdyBDZWxsIGRldGFpbHMgYm94XHJcbiAgQElucHV0KCkgc2hvd0NlbGxEZXRhaWxzQm94OiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIC8vRGF0ZSBmb3JtYXRcclxuXHJcbiAgQElucHV0KCkgZGF0ZUZvcm1hdDogc3RyaW5nID0gJydcclxuXHJcbiAgLy9EYXRlIGZvcm1hdFxyXG4gIEBJbnB1dCgpIHRhYmxlU2VhcmNoOiBzdHJpbmcgPSAnJztcclxuXHJcblxyXG4gIC8vRGF0ZSBmb3JtYXRcclxuICBASW5wdXQoKSBhY3Rpb25zOiBhbnlbXSA9IFsnZWRpdCcsICdkZWxldGUnXTtcclxuXHJcblxyXG4gIC8vIFRhYmxlIENvbmZpZyBmb3IgcGFnaW5hdGlvbnMgaXMgaGVyZVxyXG4gIEBJbnB1dCgpIGNvbmZpZzogYW55O1xyXG5cclxuXHJcbiAgLy8gU2VsZWN0aW9uIHRhc2sgYmFyXHJcbiAgQElucHV0KCkgc2hvd1Rhc2tiYXIgPSBmYWxzZVxyXG5cclxuICAvLyBUYWJsZSBOYW1lIGZvciBzdGF0ZSBtYW5hZ2VcclxuICBASW5wdXQoKSB0YWJsZU5hbWUgPSB0cnVlXHJcblxyXG5cclxuICAvLyBMaXN0aW5nIHR5cGVcclxuICBASW5wdXQoKSBsaXN0aW5nVHlwZTogc3RyaW5nIHwgYm9vbGVhbiA9ICcnO1xyXG5cclxuICAvLyBMaXN0aW5nIHR5cGVcclxuXHJcbiAgQElucHV0KCkgY2hlY2tib3hTdGF0ZTogeyByZXNldDogYm9vbGVhbiB9ID0ge1xyXG4gICAgcmVzZXQ6IHRydWVcclxuICB9XHJcblxyXG4gIC8vIFRhc2tiYXIgYWN0aW9uc1xyXG4gIEBJbnB1dCgpIHRhc2tiYXJBY3Rpb25zOiBhbnlbXSA9IFtdXHJcblxyXG5cclxuICAvLyBTb3J0aW5nIENvbmZpZyB0byBzaG93IHNvcnQgaWNvbnNcclxuICBASW5wdXQoKSBzb3J0aW5nQ29uZmlnOiB7IGZpZWxkOiBzdHJpbmcsIG9yZGVyX2J5OiBzdHJpbmcgfSB8IG51bGwgPSBudWxsO1xyXG5cclxuXHJcbiAgQElucHV0KCkgdGFibGVGaWx0ZXJWaWV3SWQ6IGFueSA9ICcnO1xyXG5cclxuXHJcbiAgQElucHV0KCkgc2VsZWN0ZWRUYWJsZUxheW91dDogYW55ID0gJ21lZGl1bSdcclxuXHJcbiAgQElucHV0KCkgY2xvc2VEcm9wZG93bjogeyBwcmVzZXQ6IHsgY2xvc2VkOiBib29sZWFuLCBsb2FkaW5nOiBib29sZWFuIH0gfSA9IHsgcHJlc2V0OiB7IGNsb3NlZDogZmFsc2UsIGxvYWRpbmc6IGZhbHNlIH0gfTtcclxuXHJcbiAgLy8gVGFibGUgVmlld1xyXG5cclxuICAvLyBHbG9iYWxTZWFyY2hcclxuICBASW5wdXQoKSBnbG9iYWxTZWFyY2hUZXh0OiBzdHJpbmcgPSAnJztcclxuXHJcbiAgLy8gTmVzdGVkIFRhYmxlIFJvdyBGb250c2l6ZVxyXG4gIEBJbnB1dCgpIG5lc3RlZFRhYmxlcm93Rm9udHNpemUgPSAxNDtcclxuXHJcbiAgLy8gTmVzdGVkIHRhYmxlIHJvdyBIZWFkZXIgcm93IEhlaWdodFxyXG4gIEBJbnB1dCgpIG5lc3RlZFRhYmxlSGVhZGVyUm93SGVpZ2h0ID0gNDA7XHJcblxyXG4gIC8vIE5lc3RlZCBUYWJsZSByb3cgaGVpZ2h0XHJcbiAgQElucHV0KCkgbmVzdGVkVGFibGVyb3dIZWlnaHQgPSA0NTtcclxuXHJcblxyXG4gIEBJbnB1dCgpIGdyaWRUeXBlOiBzdHJpbmcgPSAnJztcclxuXHJcbiAgQElucHV0KCkgY3VycmVuY3lTeW1ib2w6IHN0cmluZyA9ICcnO1xyXG5cclxuICBASW5wdXQoKSBjdXJyZW5jeUZvcm1hdDogc3RyaW5nID0gJyc7XHJcblxyXG4gIEBJbnB1dCgpIGxlZnRQaW5uZWRCb3hzaGFkb3c6IHN0cmluZyA9ICcnO1xyXG5cclxuICBASW5wdXQoKSByaWdodFBpbm5lZEJveHNoYWRvdzogc3RyaW5nID0gJyc7XHJcblxyXG4gIC8vIEdsb2JhbFNlYXJjaFxyXG4gIEBJbnB1dCgpIHNlbGVjdGVkUm93c0JhY2tncm91bmRDb2xvcjogc3RyaW5nID0gJyM4YWM1ZmYnO1xyXG5cclxuICAvLyBHbG9iYWxTZWFyY2hcclxuICBASW5wdXQoKSBuZXN0ZWRUYWJsZUhlYWRlckJhY2tncm91bmRDb2xvcjogc3RyaW5nID0gJyNmNmY4ZmYnO1xyXG5cclxuXHJcbiAgQElucHV0KCkgbmVzdGVkVGFibGVSb3dCYWNrZ3JvdW5kQ29sb3I6IHN0cmluZyA9ICcjZWFlYWVhJztcclxuXHJcbiAgQElucHV0KCkgdGFibGVWaWV3OiBhbnlbXSA9IFtdO1xyXG5cclxuICBASW5wdXQoKSBidXR0b25zOiB7IG5hbWU6IHN0cmluZzsgaXNfc2hvd0ljb246IGJvb2xlYW47IGljb246IHN0cmluZywgaGFzX3Blcm1pc3Npb246IGJvb2xlYW4gfVtdID0gW107XHJcblxyXG4gIEBJbnB1dCgpIGtlZXBNdWx0aXBsZUV4cGFuZGVkRGV0YWlscyA9IGZhbHNlO1xyXG5cclxuXHJcbiAgQElucHV0KCkgc2hvd1RvdGFsQW1vdW50Um93ID0gZmFsc2U7XHJcblxyXG5cclxuICBASW5wdXQoKSBlbmFibGVHbG9iYWxTZWFyY2ggPSB0cnVlO1xyXG5cclxuXHJcbiAgQElucHV0KCkgdGFibGVUeXBlID0gJyc7XHJcblxyXG5cclxuICBASW5wdXQoKSBlbmFibGVFeHBvcnQgPSBmYWxzZTtcclxuXHJcblxyXG4gIEBJbnB1dCgpIHNob3dGdWxsU2NyZWVuQnV0dG9uID0gZmFsc2U7XHJcblxyXG5cclxuICBASW5wdXQoKSBlbmFibGVDdXQgPSBmYWxzZTtcclxuXHJcblxyXG4gIEBJbnB1dCgpIHRhYnM6IHN0cmluZ1tdID0gW107XHJcblxyXG4gIEBJbnB1dCgpIHNob3dDaGVja2JveGVzID0gdHJ1ZTtcclxuXHJcblxyXG5cclxuXHJcbiAgQElucHV0KCkgcmVzZXRBbGxGaWx0ZXJzID0geyByZXNldEFsbDogZmFsc2UgfTtcclxuXHJcblxyXG4gIEBJbnB1dCgpIGNvbHVtblRocmVlZG90c011bnVDb25maWcgPSB7XHJcbiAgICBzaG93UGlubGVmdDogdHJ1ZSxcclxuICAgIHNob3dQaW5yaWdodDogdHJ1ZSxcclxuICAgIHNob3dBc2NlbmRpbmc6IHRydWUsXHJcbiAgICBzaG93RGVzY2VuZGluZzogdHJ1ZSxcclxuICAgIHNob3dGaWx0ZXI6IHRydWUsXHJcbiAgICBzaG93Um93c0dyb3VwaW5nOiB0aGlzLnNob3dSb3dzR3JvdXBpbmcsXHJcbiAgICBzaG93QXV0b3NpemVBbGxDb2x1bW5zOiB0cnVlLFxyXG4gICAgc2hvd0F1dG9zaXplVGhpc0NvbHVtbjogZmFsc2UsXHJcbiAgICBzaG93Q2hvc2VDb2x1bW5zOiBmYWxzZSxcclxuICAgIHNob3dSZXNldENvbHVtbnM6IGZhbHNlLFxyXG4gIH07XHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXHJcbiAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xyXG4gIC8vICAgICAgICAgICAgICAgICAgICAgICAgIE91dCBQdXQgRXZlbnRzXHJcbiAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xyXG4gIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cclxuXHJcblxyXG5cclxuICAvL0NoYW5nZSBUYWJsZSBMYXlvdXRcclxuICBAVmlld0NoaWxkcmVuKENlbGxIb3N0RGlyZWN0aXZlKSBjZWxsSG9zdHMhOiBRdWVyeUxpc3Q8Q2VsbEhvc3REaXJlY3RpdmU+O1xyXG5cclxuICBAT3V0cHV0KCkgcHVibGljIGNoYW5nZUxheW91dCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuICBAT3V0cHV0KCkgcHVibGljIGN1c3RvbUNlbGxFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuICAvLyBGaWx0ZXIgQXBwbHkgZXZlbnQ7XHJcbiAgQE91dHB1dCgpIHB1YmxpYyBmaWx0ZXJPcHRpb25zID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gIEBPdXRwdXQoKSBnZW5lcmljRXZlbnQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBAT3V0cHV0KCkgdGFibGVQcmVzZXRDb25maWc6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBAT3V0cHV0KCkgc29ydGluZ09yZGVyT3B0aW9uczogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgQE91dHB1dCgpIGNyZWF0ZVVwZGF0ZUNvbmZpZ0xpc3Rpbmc6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG4gIGlzRnVsbFNjcmVlbiA9IGZhbHNlO1xyXG4gIGFjdGl2ZVRhYjogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcbiAgZ3JvdXBlZENvbHVtbnM6IGFueVtdID0gW107XHJcbiAgYWN0aXZlQ29sOiBhbnkgPSBudWxsO1xyXG4gIGFjdGl2ZUZpbHRlckNlbGw6IGFueSA9IG51bGw7XHJcbiAgc2hvd0FjdGlvbnNEcm9wRG93biA9IGZhbHNlO1xyXG4gIHNpZGVNZW51VmlzaWJsZSA9IGZhbHNlO1xyXG4gIHBpdm90TW9kZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGNvbHVtblNlYXJjaDogc3RyaW5nID0gJyc7XHJcbiAgZXhwYW5kQWxsQWNjb3JkaWFucyA9IHRydWU7XHJcbiAgY3VycmVudE9wZW5lZFNpZGVNZW51ZTogJ2NvbHMnIHwgJ2ZpbHRycycgfCBudWxsID0gbnVsbDtcclxuICBvcmlnaW5hbENvbHVtbnM6IGFueVtdID0gW107XHJcbiAgb3JpZ2luYWxEYXRhU2V0OiBhbnlbXSA9IFtdO1xyXG4gIGFjdGl2ZVRvcEJ1dHRvbjogc3RyaW5nIHwgbnVsbCA9ICcnO1xyXG4gIGZpbHRlckNvbHVtbnNMaXN0OiBhbnlbXSA9IFtdO1xyXG4gIGdyb3VwQm94UGFkZGluZyA9IDIwMDtcclxuICBwcmVzZXROYW1lOiBzdHJpbmcgPSAnJztcclxuICBwcmVzZXRGaWx0ZXI6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBzZWFyY2hUZXh0UHJlc2V0VGFibGUgPSAnJztcclxuICBhZGRGaWx0ZXJDb2x1bW5JbnB1dCA9ICcnO1xyXG4gIHNlYXJjaEluRHJvcGRvd24gPSAnJztcclxuICBwcml2YXRlIHNlY3JldEtleSA9ICd0Yi1zdXBlci1hZG1pbidcclxuICBhZGRGaWx0ZXJEcm9wZG93blNlYXJjaCA9ICcnXHJcbiAgdG9wU2hvd0hpZGVDb2x1bW5zID0gJyc7XHJcbiAgY2hvc2VDb2x1bW5zU2VhcmNoID0gJydcclxuICBzaWRlTmVzdGVkRmlsdGVyU2VhcmNoID0gJydcclxuICBlZGl0aW5Ecm9wZG93blNlYXJjaCA9ICcnO1xyXG4gIGlzVGhyZWVEb3RzRmlsdGVyT3BlbiA9IGZhbHNlO1xyXG4gIGNvbmZpcm1EZWxldGUgPSBmYWxzZTtcclxuICBmb250RmFtaWxpZXM6IHN0cmluZ1tdID0gW1xyXG4gICAgLy8gQ29tbW9uIEV4Y2VsIGZvbnRzXHJcbiAgICAnQXJpYWwnLFxyXG4gICAgJ0FyaWFsIEJsYWNrJyxcclxuICAgICdCYWhuc2NocmlmdCcsXHJcbiAgICAnQ2FsaWJyaScsXHJcbiAgICAnQ2FtYnJpYScsXHJcbiAgICAnQ2FtYnJpYSBNYXRoJyxcclxuICAgICdtYXRoJyxcclxuICAgICdDYW5kYXJhJyxcclxuICAgICdDb21pYyBTYW5zIE1TJyxcclxuICAgICdDb25zb2xhcycsXHJcbiAgICAnQ29uc3RhbnRpYScsXHJcbiAgICAnQ29yYmVsJyxcclxuICAgICdDb3VyaWVyIE5ldycsXHJcbiAgICAnRWJyaW1hJyxcclxuICAgICdGcmFua2xpbiBHb3RoaWMgTWVkaXVtJyxcclxuICAgICdHYWJyaW9sYScsXHJcbiAgICAnR2FkdWdpJyxcclxuICAgICdHZW9yZ2lhJyxcclxuICAgICdJbXBhY3QnLFxyXG4gICAgJ0luayBGcmVlJyxcclxuICAgICdKYXZhbmVzZSBUZXh0JyxcclxuICAgICdMZWVsYXdhZGVlIFVJJyxcclxuICAgICdMdWNpZGEgQ29uc29sZScsXHJcbiAgICAnTHVjaWRhIFNhbnMgVW5pY29kZScsXHJcbiAgICAnTWFsZ3VuIEdvdGhpYycsXHJcbiAgICAnTWljcm9zb2Z0IEhpbWFsYXlhJyxcclxuICAgICdNaWNyb3NvZnQgSmhlbmdIZWknLFxyXG4gICAgJ01pY3Jvc29mdCBOZXcgVGFpIEx1ZScsXHJcbiAgICAnTWljcm9zb2Z0IFBoYWdzUGEnLFxyXG4gICAgJ01pY3Jvc29mdCBTYW5zIFNlcmlmJyxcclxuICAgICdNaWNyb3NvZnQgVGFpIExlJyxcclxuICAgICdNaWNyb3NvZnQgWWFIZWknLFxyXG4gICAgJ01pY3Jvc29mdCBZaSBCYWl0aScsXHJcbiAgICAnTW9uZ29saWFuIEJhaXRpJyxcclxuICAgICdNUyBHb3RoaWMnLFxyXG4gICAgJ01TIFBHb3RoaWMnLFxyXG4gICAgJ01TIFVJIEdvdGhpYycsXHJcbiAgICAnTVYgQm9saScsXHJcbiAgICAnTmlybWFsYSBVSScsXHJcbiAgICAnUGFsYXRpbm8gTGlub3R5cGUnLFxyXG4gICAgJ1NlZ29lIFByaW50JyxcclxuICAgICdTZWdvZSBTY3JpcHQnLFxyXG4gICAgJ1NlZ29lIFVJJyxcclxuICAgICdTZWdvZSBVSSBIaXN0b3JpYycsXHJcbiAgICAnU2Vnb2UgVUkgRW1vamknLFxyXG4gICAgJ1NlZ29lIFVJIFN5bWJvbCcsXHJcbiAgICAnU2ltU3VuJyxcclxuICAgICdTaXRrYSBTbWFsbCcsXHJcbiAgICAnU3lsZmFlbicsXHJcbiAgICAnU3ltYm9sJyxcclxuICAgICdUYWhvbWEnLFxyXG4gICAgJ1RpbWVzIE5ldyBSb21hbicsXHJcbiAgICAnVHJlYnVjaGV0IE1TJyxcclxuICAgICdWZXJkYW5hJyxcclxuICAgICdXZWJkaW5ncycsXHJcbiAgICAnV2luZ2RpbmdzJyxcclxuICAgICdZdSBHb3RoaWMnLFxyXG4gICAgJ3NhbnMtc2VyaWYnLFxyXG4gICAgJ3NlcmlmJyxcclxuICAgICdtb25vc3BhY2UnLFxyXG4gICAgJ0ludGVyJ1xyXG4gIF07XHJcblxyXG4gIGZvbnRTaXplczogc3RyaW5nW10gPSBbXHJcbiAgICAnOCcsICc5JywgJzEwJywgJzExJywgJzEyJywgJzE0JywgJzE2JywgJzE4JywgJzIwJywgJzI0JywgJzI4JywgJzMyJ1xyXG4gIF07XHJcblxyXG4gIGhhc1Njcm9sbCA9IGZhbHNlO1xyXG5cclxuXHJcblxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgY29sdW1uU2VydmljZTogU3BsaXRDb2x1bW5zU2VydmljZSxcclxuICAgIHB1YmxpYyBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgcHVibGljIGNvbW1vblNldmljZTogQ29tbW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZixcclxuICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmUsXHJcbiAgICBwcml2YXRlIGNvcHlTZXJ2aWNlOiBDb3B5U2VydmljZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXHJcbiAgICBwcml2YXRlIHNhbml0aXplcjogRG9tU2FuaXRpemVyLFxyXG4gICAgcHJpdmF0ZSBleHBvcnRTZXJ2aWNlOiBFeHBvcnRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBkYXRlUGlwZTogRGF0ZVBpcGUsXHJcbiAgICBwcml2YXRlIGZvcm1hdEN1cnJlbmN5OiBGb3JtYXRDdXJyZW5jeVBpcGUsXHJcblxyXG4gICkgeyB9XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2NlbGxUZXh0JywgeyBzdGF0aWM6IGZhbHNlIH0pIGNlbGxUZXh0ITogYW55O1xyXG4gIEBWaWV3Q2hpbGQoJ25lc3RlZEhlYWRlcicsIHsgc3RhdGljOiBmYWxzZSB9KSBuZXN0ZWRIZWFkZXIhOiBFbGVtZW50UmVmO1xyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIHRoaXMubmdab25lLm9uU3RhYmxlLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKGFzeW5jICgpID0+IHtcclxuICAgICAgYXdhaXQgdGhpcy5TZXRDb2x1bW5zRGVmYXVsdFdpZHRoKCk7XHJcbiAgICAgIGF3YWl0IHRoaXMucmVmcmVzaEhlYWRlcnMoKTtcclxuICAgICAgdGhpcy51cGRhdGVGbGF0dGVuZWREYXRhKCk7XHJcbiAgICAgIHRoaXMuY29tcHV0ZVZpZXdwb3J0Um93cygpO1xyXG4gICAgICB0aGlzLnVwZGF0ZVZpc2libGVSb3dzKDApO1xyXG4gICAgICB0aGlzLmhhc1Njcm9sbCA9IHRoaXMuaGFzSG9yaXpvbnRhbFNjcm9sbGJhcigpO1xyXG5cclxuICAgICAgaWYgKHRoaXMuY2VsbFRleHQpIHtcclxuICAgICAgICBjb25zdCBvYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcigoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzLmNlbGxUZXh0Lm5hdGl2ZUVsZW1lbnQpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMucmVuZGVyQ3VzdG9tQ2VsbHMoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpO1xyXG5cclxuICBjcmVhdGVDZWxsSW5qZWN0b3Iocm93OiBhbnksIGNvbDogYW55KTogSW5qZWN0b3Ige1xyXG4gICAgcmV0dXJuIEluamVjdG9yLmNyZWF0ZSh7XHJcbiAgICAgIHByb3ZpZGVyczogW1xyXG4gICAgICAgIHsgcHJvdmlkZTogJ3Jvd0RhdGEnLCB1c2VWYWx1ZTogcm93IH0sXHJcbiAgICAgICAgeyBwcm92aWRlOiAnY29sRGF0YScsIHVzZVZhbHVlOiBjb2wgfVxyXG4gICAgICBdLFxyXG4gICAgICBwYXJlbnQ6IHRoaXMuaW5qZWN0b3JcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcblxyXG4gIHByaXZhdGUgcmVuZGVyQ3VzdG9tQ2VsbHMoKTogdm9pZCB7XHJcbiAgICBjb25zdCBob3N0cyA9IHRoaXMuY2VsbEhvc3RzLnRvQXJyYXkoKTtcclxuICAgIGxldCBob3N0SW5kZXggPSAwO1xyXG5cclxuICAgIGZvciAoY29uc3Qgcm93IG9mIHRoaXMudmlzaWJsZVJvd3MpIHtcclxuICAgICAgZm9yIChjb25zdCBjb2wgb2YgdGhpcy5jb2x1bW5zKSB7XHJcbiAgICAgICAgY29uc3QgaG9zdCA9IGhvc3RzW2hvc3RJbmRleCsrXTtcclxuICAgICAgICBpZiAoIWhvc3QgfHwgIWNvbC5jZWxsUmVuZGVyZXIpIGNvbnRpbnVlO1xyXG5cclxuICAgICAgICBjb25zdCB2aWV3Q29udGFpbmVyID0gaG9zdC52aWV3Q29udGFpbmVyUmVmO1xyXG4gICAgICAgIHZpZXdDb250YWluZXIuY2xlYXIoKTtcclxuXHJcbiAgICAgICAgY29uc3QgY29tcFJlZiA9IHZpZXdDb250YWluZXIuY3JlYXRlQ29tcG9uZW50KGNvbC5jZWxsUmVuZGVyZXIpO1xyXG5cclxuICAgICAgICBjb25zdCBwYXJhbXMgPSB7XHJcbiAgICAgICAgICByb3csXHJcbiAgICAgICAgICBjb2wsXHJcbiAgICAgICAgICB2YWx1ZTogdGhpcy5nZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZCksXHJcbiAgICAgICAgICBhcGk6IHRoaXMsXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgaWYgKChjb21wUmVmLmluc3RhbmNlIGFzIGFueSkuZ3JpZEluaXQpIHtcclxuICAgICAgICAgIChjb21wUmVmLmluc3RhbmNlIGFzIGFueSkuZ3JpZEluaXQocGFyYW1zKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3Q2hlY2tlZCgpOiB2b2lkIHtcclxuICAgIHRoaXMuYWRkU3R5bGVzVG9JbWFnZXMoKTtcclxuICAgIHRoaXMuaGFzU2Nyb2xsID0gdGhpcy5oYXNIb3Jpem9udGFsU2Nyb2xsYmFyKCk7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIC8vICBpZiAodGhpcy50YWJzPy5sZW5ndGgpIHtcclxuICAgIC8vICAgdGhpcy5hY3RpdmVUYWIgPSB0aGlzLnRhYnNbMF07XHJcbiAgICAvLyB9XHJcbiAgICAvLyB0aGlzLmF1dG9zaXplQWxsQ29sdW1ucygpO1xyXG4gICAgaWYgKCF0aGlzLmN1cnJldGFUYWJsZVByZXNldEZvclVwZGF0ZSkge1xyXG4gICAgICB0aGlzLmF1dG9zaXplQWxsQ29sdW1ucygpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIGNvbnN0IHVzZXIgPSB0aGlzLmdldERlY3J5cHQoJ3VzZXInKTtcclxuICAgIC8vIHRoaXMuY3VycmVuY3lGb3JtYXQgPSB1c2VyPy5jdXJyZW5jeV9mb3JtYXQ7XHJcbiAgICAvLyB0aGlzLmN1cnJlbmN5U3ltYm9sID0gdXNlcj8uY3VycmVuY3lfc3ltYm9sO1xyXG4gICAgLy8gdGhpcy5kYXRlRm9ybWF0ID0gdXNlcj8uZGF0ZV9mb3JtYXQ7XHJcbiAgICBpZiAoIXRoaXMuZGF0ZUZvcm1hdCkge1xyXG4gICAgICBjb25zdCBzdG9yZWREYXRlRm9ybWF0ID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2RhdGVmb3JtYXQnKTtcclxuICAgICAgdGhpcy5kYXRlRm9ybWF0ID0gc3RvcmVkRGF0ZUZvcm1hdCA/IEpTT04ucGFyc2Uoc3RvcmVkRGF0ZUZvcm1hdCkgOiAnZGQvTU0veXl5eSc7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCF0aGlzLmN1cnJlbmN5Rm9ybWF0KSB7XHJcbiAgICAgIGNvbnN0IHN0b3JlZEN1cnJlbmN5Rm9ybWF0ID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2N1cnJlbmN5Rm9ybWF0Jyk7XHJcbiAgICAgIHRoaXMuY3VycmVuY3lGb3JtYXQgPSBzdG9yZWRDdXJyZW5jeUZvcm1hdCA/IEpTT04ucGFyc2Uoc3RvcmVkQ3VycmVuY3lGb3JtYXQpIDogJzEsMjM0LDU2Ny44OSc7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCF0aGlzLmN1cnJlbmN5U3ltYm9sKSB7XHJcbiAgICAgIGNvbnN0IHN0b3JlZEN1cnJlbmN5U3ltYm9sID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2N1cnJlbmN5U3ltYm9sJyk7XHJcbiAgICAgIHRoaXMuY3VycmVuY3lTeW1ib2wgPSBzdG9yZWRDdXJyZW5jeVN5bWJvbCA/IEpTT04ucGFyc2Uoc3RvcmVkQ3VycmVuY3lTeW1ib2wpIDogJyQnO1xyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIC8vIHByaXZhdGUgZ2V0RGVjcnlwdChrZXk6c3RyaW5nKXtcclxuICAvLyAgICAgY29uc3QgdmFsdWUgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShrZXkpXHJcbiAgLy8gICAgIHRyeSB7XHJcbiAgLy8gICAgICAgcmV0dXJuIEpTT04ucGFyc2UoQ3J5cHRvSlMuQUVTLmRlY3J5cHQodmFsdWUgYXMgc3RyaW5nLCB0aGlzLnNlY3JldEtleSkudG9TdHJpbmcoQ3J5cHRvSlMuZW5jLlV0ZjgpKVxyXG4gIC8vICAgICB9IGNhdGNoIChlKSB7XHJcbiAgLy8gICAgICAgcmV0dXJuIG51bGw7XHJcbiAgLy8gICAgIH1cclxuICAvLyAgIH1cclxuXHJcbiAgZGF0YVNldExvYWRpbmcgPSBmYWxzZTtcclxuICBhc3luYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XHJcbiAgICBpZiAoY2hhbmdlc1snY29sdW1ucyddKSB7XHJcbiAgICAgIGF3YWl0IHRoaXMuc2V0Q29sdW1uc0NvbHVtbkRyb3Bkb3duVmFsdXMoKTtcclxuXHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGNoYW5nZXNbJ3RhYnMnXSkge1xyXG4gICAgICBpZiAoY2hhbmdlc1sndGFicyddKSB7XHJcbiAgICAgICAgY29uc3QgYWxsVGFicyA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2FjdGl2ZVRhYnMnKSB8fCAne30nKTtcclxuICAgICAgICBjb25zdCBzYXZlZFRhYiA9IGFsbFRhYnNbdGhpcy50YWJsZVR5cGVdO1xyXG4gICAgICAgIGlmKHRoaXMudGFicy5pbmNsdWRlcygnQ3VycmVudCBQb2xpY3knKSl7XHJcbiAgICAgICAgICB0aGlzLmFjdGl2ZVRhYiA9IHRoaXMudGFicz8uWzFdIHx8ICdDdXJyZW50IFBvbGljeSc7XHJcbiAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICB0aGlzLmFjdGl2ZVRhYiA9IHNhdmVkVGFiIHx8IHRoaXMudGFicz8uWzBdO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMudGFibGVUeXBlKSB7XHJcbiAgICAgICAgICB0aGlzLnNldEFjdGl2ZVRhYih0aGlzLmFjdGl2ZVRhYik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAoY2hhbmdlc1snZmlsdGVyc0NvbmZpZyddKSB7XHJcbiAgICAgIHRoaXMuY2hlY2tGaWx0ZXJDaGFuZ2VzRWZmZWN0KCk7XHJcbiAgICAgIGF3YWl0IHRoaXMuYXBwbHlGaWx0ZXJvcHRpb25MaXN0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGNoYW5nZXNbJ2NvbHVtbnMnXT8uY3VycmVudFZhbHVlPy5sZW5ndGgpIHtcclxuXHJcbiAgICAgIGF3YWl0IHRoaXMuYXBwbHlGaWx0ZXJvcHRpb25MaXN0KCk7XHJcblxyXG4gICAgICB0aGlzLm9yaWdpbmFsQ29sdW1ucyA9IHRoaXMuY29sdW1ucy5tYXAoY29sID0+ICh7XHJcbiAgICAgICAgLi4uY29sLFxyXG4gICAgICAgIHF1ZXJ5OiBjb2wucXVlcnkgPyB7IC4uLmNvbC5xdWVyeSB9IDogbnVsbCxcclxuICAgICAgICBjb2x1bW5fZHJvcGRvd25fdmFsdWU6IGNvbC5jb2x1bW5fZHJvcGRvd25fdmFsdWVcclxuICAgICAgICAgID8gWy4uLmNvbC5jb2x1bW5fZHJvcGRvd25fdmFsdWVdXHJcbiAgICAgICAgICA6IFtdLFxyXG4gICAgICB9KSk7XHJcblxyXG5cclxuICAgICAgaWYgKHRoaXMuZGF0YUdyaWRDb250YWluZXI/Lm5hdGl2ZUVsZW1lbnQ/Lm9mZnNldFdpZHRoKSB7XHJcbiAgICAgICAgYXdhaXQgdGhpcy5TZXRDb2x1bW5zRGVmYXVsdFdpZHRoKCk7XHJcbiAgICAgICAgYXdhaXQgdGhpcy51cGRhdGVDb2x1bW5XaWR0aHNBbmRHcm91cHMoKTtcclxuICAgICAgICBhd2FpdCB0aGlzLnJlZnJlc2hQcmV2aWV3Q29sdW1ucygpO1xyXG4gICAgICAgIHRoaXMuc2V0U2VjdGlvbnNXaWR0aCgpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLm5nWm9uZS5vblN0YWJsZS5waXBlKHRha2UoMSkpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoY2hhbmdlc1snZGF0YVNldCddKSB7XHJcbiAgICAgIHRoaXMuZGF0YVNldCA9IHRoaXMuZGF0YVNldD8ubWFwKChyb3csIGkpID0+ICh7XHJcbiAgICAgICAgLi4ucm93LFxyXG4gICAgICAgIF9fdmlydHVhbEluZGV4OiBpICsgMSxcclxuICAgICAgfSkpO1xyXG4gICAgICB0aGlzLm9yaWdpbmFsRGF0YVNldCA9IHN0cnVjdHVyZWRDbG9uZSh0aGlzLmRhdGFTZXQpO1xyXG4gICAgICB0aGlzLmV4cGFuZGVkQ2VsbHMuY2xlYXIoKTtcclxuICAgICAgdGhpcy51cGRhdGVGbGF0dGVuZWREYXRhKCk7XHJcblxyXG4gICAgICB0aGlzLm5nWm9uZS5vblN0YWJsZS5waXBlKHRha2UoMSkpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5jb21wdXRlVmlld3BvcnRSb3dzKCk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVWaXNpYmxlUm93cygwKTtcclxuXHJcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIGlmICh0aGlzLmNlbnRlclBpbm5lZEhlYWRlcj8ubmF0aXZlRWxlbWVudCkge1xyXG4gICAgICAgIHZvaWQgdGhpcy5jZW50ZXJQaW5uZWRIZWFkZXIubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aDtcclxuXHJcbiAgICAgICAgdGhpcy5kYXRhU2V0TG9hZGluZyA9IHRydWU7XHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICBpZiAodGhpcy5jZW50ZXJTY3JvbGxhYmxlQm9keT8ubmF0aXZlRWxlbWVudCkge1xyXG4gICAgICAgICAgICB0aGlzLmNlbnRlclNjcm9sbGFibGVCb2R5Lm5hdGl2ZUVsZW1lbnQuc2Nyb2xsTGVmdCA9XHJcbiAgICAgICAgICAgICAgdGhpcy5jZW50ZXJQaW5uZWRIZWFkZXIubmF0aXZlRWxlbWVudC5zY3JvbGxMZWZ0O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5kYXRhU2V0TG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIH0sIDUwMCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuYXBwbHlSb3dzU2VsZWN0aW9uU3RhdGUoKTtcclxuXHJcbiAgICAgIGlmICh0aGlzLmdyb3VwZWRDb2x1bW5zPy5sZW5ndGgpIHtcclxuICAgICAgICBjb25zdCBmaWVsZHMgPSB0aGlzLmdyb3VwZWRDb2x1bW5zLm1hcCgoaXRlbSkgPT4gaXRlbS5maWVsZCk7XHJcbiAgICAgICAgdGhpcy5kYXRhU2V0ID0gYXdhaXQgdGhpcy5ncm91cERhdGFBc3luYyh0aGlzLm9yaWdpbmFsRGF0YVNldCwgZmllbGRzKTtcclxuXHJcbiAgICAgICAgdGhpcy5uZ1pvbmUub25TdGFibGUucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy51cGRhdGVGbGF0dGVuZWREYXRhKCk7XHJcbiAgICAgICAgICB0aGlzLnVwZGF0ZUNvbHVtbldpZHRoc0FuZEdyb3VwcygpO1xyXG4gICAgICAgICAgdGhpcy5yZWZyZXNoUHJldmlld0NvbHVtbnMoKTtcclxuICAgICAgICAgIHRoaXMudXBkYXRlVmlzaWJsZVJvd3MoMCk7XHJcbiAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuZ3JvdXBCb3hQYWRkaW5nID0gdGhpcy5jb2x1bW5zR3JvdXBlZEJveD8ubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aDtcclxuICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmIChjaGFuZ2VzWydjaGVja2JveFN0YXRlJ10/LmN1cnJlbnRWYWx1ZT8ucmVzZXQpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZFJvd3MuY2xlYXIoKTtcclxuICAgICAgdGhpcy5jbGVhclNlbGVjdGlvblN0YXRlKHRoaXMudGFibGVUeXBlKTtcclxuXHJcbiAgICAgIGNvbnN0IGlkcyA9IEFycmF5LmZyb20odGhpcy5zZWxlY3RlZFJvd3MpO1xyXG4gICAgICBjb25zdCBldmVudCA9IHtcclxuICAgICAgICBkYXRhOiB7XHJcbiAgICAgICAgICBsaXN0aW5nVHlwZTogdGhpcy5saXN0aW5nVHlwZSxcclxuICAgICAgICAgIG9iajogaWRzLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXZlbnRUeXBlOiAnb25TZWxlY3RSb3cnLFxyXG4gICAgICB9O1xyXG5cclxuICAgICAgdGhpcy5nZW5lcmljRXZlbnQuZW1pdChldmVudCk7XHJcblxyXG4gICAgICB0aGlzLm5nWm9uZS5vblN0YWJsZS5waXBlKHRha2UoMSkpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoY2hhbmdlc1snY2xvc2VEcm9wZG93biddICYmIHRoaXMuY2xvc2VEcm9wZG93bi5wcmVzZXQuY2xvc2VkKSB7XHJcbiAgICAgIHRoaXMuYWN0aXZlVG9wQnV0dG9uID0gbnVsbDtcclxuICAgICAgdGhpcy5wcmVzZXRGaWx0ZXIgPSBmYWxzZTtcclxuICAgICAgdGhpcy5wcmVzZXROYW1lID0gJyc7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gaWYgKGNoYW5nZXNbJ29kZFJvd3NCYWNrZ3JvdW5kQ29sb3InXSkge1xyXG4gICAgLy8gICB0aGlzLnJvd1NoYWRpbmdFbmFibGVkID0gISF0aGlzLm9kZFJvd3NCYWNrZ3JvdW5kQ29sb3I7XHJcbiAgICAvLyB9XHJcblxyXG4gICAgaWYgKGNoYW5nZXNbJ3Jlc2V0QWxsRmlsdGVycyddICYmIHRoaXMucmVzZXRBbGxGaWx0ZXJzLnJlc2V0QWxsKSB7XHJcbiAgICAgIHRoaXMuY2xlYXJBbGxGaWx0ZXJzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGNoYW5nZXNbJ3RhYmxlVmlldyddKSB7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHZpZXdWYWx1ZSA9IHRoaXMudGFibGVWaWV3O1xyXG4gICAgICAgIGxldCB0ZW1wcm9yeVNlbGVjdGVkID0gQXJyYXkuaXNBcnJheSh2aWV3VmFsdWUpXHJcbiAgICAgICAgICA/IHZpZXdWYWx1ZS5maW5kKGl0ZW0gPT4gaXRlbS5pc190ZW1wKVxyXG4gICAgICAgICAgOiBudWxsO1xyXG5cclxuICAgICAgICBpZiAoIXRlbXByb3J5U2VsZWN0ZWQpIHtcclxuICAgICAgICAgIHRlbXByb3J5U2VsZWN0ZWQgPSBBcnJheS5pc0FycmF5KHZpZXdWYWx1ZSlcclxuICAgICAgICAgICAgPyB2aWV3VmFsdWUuZmluZChpdGVtID0+IGl0ZW0uaXNfZGVmYXVsdClcclxuICAgICAgICAgICAgOiBudWxsO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5jdXJyZXRhVGFibGVQcmVzZXRGb3JVcGRhdGUgPSB0ZW1wcm9yeVNlbGVjdGVkIHx8IG51bGw7XHJcbiAgICAgICAgdGhpcy5wcmVzZXROYW1lID0gdGVtcHJvcnlTZWxlY3RlZD8ubmFtZSB8fCAnJztcclxuICAgICAgICB0aGlzLnByZXNldEZpbHRlciA9IHRlbXByb3J5U2VsZWN0ZWQ/LmFjdGl2ZUZpbHRlcnMgfHwgZmFsc2U7XHJcbiAgICAgICAgaWYgKHRoaXMuY3VycmV0YVRhYmxlUHJlc2V0Rm9yVXBkYXRlKSB7XHJcbiAgICAgICAgICB0aGlzLnJvd1NoYWRpbmdFbmFibGVkID0gdGVtcHJvcnlTZWxlY3RlZC5jb25maWcucm93U2hhZGluZ0VuYWJsZWQ7XHJcbiAgICAgICAgICB0aGlzLnNob3dWZXJ0aWNhbEJvcmRlciA9IHRlbXByb3J5U2VsZWN0ZWQuY29uZmlnLnNob3dWZXJ0aWNhbEJvcmRlcjtcclxuICAgICAgICAgIHRoaXMuZm9udEZhaW1seSA9IHRlbXByb3J5U2VsZWN0ZWQuY29uZmlnLmZvbnRGYWltbHk7XHJcbiAgICAgICAgICB0aGlzLmhlYWRlclRleHRGb250c1NpemUgPSB0ZW1wcm9yeVNlbGVjdGVkLmNvbmZpZy5oZWFkZXJUZXh0Rm9udHNTaXplO1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFRhYmxlTGF5b3V0ID0gdGVtcHJvcnlTZWxlY3RlZC5jb25maWcuc2VsZWN0ZWRUYWJsZUxheW91dDtcclxuICAgICAgICAgIHRoaXMuYm9keVRleHRGb250c1NpemUgPSB0ZW1wcm9yeVNlbGVjdGVkLmNvbmZpZy5ib2R5VGV4dEZvbnRzU2l6ZTtcclxuICAgICAgICAgIHRoaXMuZ2xvYmFsU2VhcmNoVGV4dCA9IHRlbXByb3J5U2VsZWN0ZWQuY29uZmlnLmdsb2JhbFNlYXJjaDtcclxuICAgICAgICAgIHRoaXMuc2V0VGFibGVMYXlvdXQodGhpcy5zZWxlY3RlZFRhYmxlTGF5b3V0KTtcclxuICAgICAgICAgIHRoaXMub2RkUm93c0JhY2tncm91bmRDb2xvciA9IHRlbXByb3J5U2VsZWN0ZWQ/LmNvbmZpZz8ub2RkUm93c0JhY2tncm91bmRDb2xvciB8fCAnI2YxZjFmMSc7XHJcbiAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMucm93U2hhZGluZ0VuYWJsZWQgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuc2hvd1ZlcnRpY2FsQm9yZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmZvbnRGYWltbHkgPSAnSW50ZXInO1xyXG4gICAgICAgICAgdGhpcy5oZWFkZXJUZXh0Rm9udHNTaXplID0gMTQ7XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkVGFibGVMYXlvdXQgPSAnbWVkaXVtJztcclxuICAgICAgICAgIHRoaXMuYm9keVRleHRGb250c1NpemUgPSAxNDtcclxuICAgICAgICAgIHRoaXMuZ2xvYmFsU2VhcmNoVGV4dCA9ICcnO1xyXG4gICAgICAgICAgdGhpcy5hdXRvc2l6ZUFsbENvbHVtbnMoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB9LCAwKTtcclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICBhc3luYyBzZXRDb2x1bW5zQ29sdW1uRHJvcGRvd25WYWx1cygpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGlmICghdGhpcy5jb2x1bW5zKSByZXR1cm47XHJcbiAgICAvLyBKdXN0IHJlbW92ZWQgdGVtcG9yYXJ5IGZvciBzdXBlciBhZG1pbiB3aWxsIHNldCBpdCBhZ2FpblxyXG4gICAgaWYodGhpcy5jb2x1bW5zPy5sZW5ndGgpe1xyXG4gICAgICB0aGlzLmNvbHVtbnMgPSB0aGlzLmNvbHVtbnM/LmZpbHRlcihjID0+IGM/LmZpZWxkPy50cmltKCkgIT09ICdpc19kZWxldGVkJylcclxuICAgIH1cclxuICAgIHRoaXMuY29sdW1ucyA9IGF3YWl0IHRoaXMuY29tbW9uU2V2aWNlLmNvcHlEcm9wZG93bkRhdGFSZWN1cnNpdmVseSh0aGlzLmNvbHVtbnMpO1xyXG4gIH1cclxuXHJcblxyXG5cclxuXHJcbiAgYXBwbHlSb3dzU2VsZWN0aW9uU3RhdGUoKSB7XHJcbiAgICBjb25zdCBzZWxlY3RlZElkc0Zyb21TdGF0ZSA9IHRoaXMucmVzdG9yZVNlbGVjdGlvbih0aGlzLnRhYmxlVHlwZSk7XHJcbiAgICBpZiAoc2VsZWN0ZWRJZHNGcm9tU3RhdGUuc2l6ZSA+IDApIHtcclxuICAgICAgY29uc3QgaWRzID0gQXJyYXkuZnJvbSh0aGlzLnNlbGVjdGVkUm93cyk7XHJcbiAgICAgIGNvbnN0IGV2ZW50ID0ge1xyXG4gICAgICAgIGRhdGE6IHtcclxuICAgICAgICAgIGxpc3RpbmdUeXBlOiB0aGlzLmxpc3RpbmdUeXBlLFxyXG4gICAgICAgICAgb2JqOiBpZHNcclxuICAgICAgICB9LFxyXG4gICAgICAgIGV2ZW50VHlwZTogXCJvblNlbGVjdFJvd1wiLFxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuZ2VuZXJpY0V2ZW50LmVtaXQoZXZlbnQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2xlYXJTZWxlY3Rpb25TdGF0ZSh0YWJsZVR5cGU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgY29uc3Qgc3RvcmVkID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnZGF0YXRhYmxlU2VsZWN0aW9ucycpIHx8ICd7XCJzZWxlY3RlZFJvd3NcIjoge319Jyk7XHJcbiAgICBpZiAoc3RvcmVkLnNlbGVjdGVkUm93cyAmJiBzdG9yZWQuc2VsZWN0ZWRSb3dzW3RhYmxlVHlwZV0pIHtcclxuICAgICAgZGVsZXRlIHN0b3JlZC5zZWxlY3RlZFJvd3NbdGFibGVUeXBlXTtcclxuICAgIH1cclxuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKFxyXG4gICAgICAnZGF0YXRhYmxlU2VsZWN0aW9ucycsXHJcbiAgICAgIEpTT04uc3RyaW5naWZ5KHN0b3JlZClcclxuICAgICk7XHJcbiAgfVxyXG5cclxuXHJcblxyXG4gIGFzeW5jIGFwcGx5RmlsdGVyb3B0aW9uTGlzdCgpIHtcclxuICAgIGNvbnN0IHVwZGF0ZWRDb2x1bW5zID0gYXdhaXQgdGhpcy5jb21tb25TZXZpY2UuYXBwbHlGaWx0ZXJzVG9Db2x1bW5zKHRoaXMuY29sdW1ucywgdGhpcy5maWx0ZXJzQ29uZmlnKTtcclxuICAgIHRoaXMuY29sdW1ucyA9IFsuLi51cGRhdGVkQ29sdW1uc107XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG4gIGxlZnRQaW5uZWRDb2x1bW5zOiBhbnlbXSA9IFtdO1xyXG4gIGNlbnRlckNvbHVtbnM6IGFueVtdID0gW107XHJcbiAgcmlnaHRQaW5uZWRDb2x1bW5zOiBhbnlbXSA9IFtdO1xyXG5cclxuICBwcmV2aWV3TGVmdFBpbm5lZENvbHVtbnM6IGFueVtdID0gW107XHJcbiAgcHJldmlld0NlbnRlckNvbHVtbnM6IGFueVtdID0gW107XHJcbiAgcHJldmlld1JpZ2h0UGlubmVkQ29sdW1uczogYW55W10gPSBbXTtcclxuXHJcbiAgLy8gTWFpbiBDb250YWluZXIgVGVtcGxhdGUgUmVmZXJlbmNlc1xyXG4gIEBWaWV3Q2hpbGQoJ2RhdGFHcmlkQ29udGFpbmVyJylcclxuICBkYXRhR3JpZENvbnRhaW5lciE6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xyXG4gIEBWaWV3Q2hpbGQoJ3Rhc2tNYW5hZ2VtZW50Q29udGFpbmVyJylcclxuICB0YXNrTWFuYWdlbWVudENvbnRhaW5lciE6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xyXG4gIEBWaWV3Q2hpbGQoJ25lc3RlZFRhYmxlQ29udGFpbmVyJylcclxuICBuZXN0ZWRUYWJsZUNvbnRhaW5lciE6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xyXG5cclxuICAvLyBCb2R5IFRlbXBsYXRlIFJlZmVyZW5jZXNcclxuICBAVmlld0NoaWxkKCdsZWZ0UGlubmVkQm9keScpXHJcbiAgbGVmdFBpbm5lZEJvZHkhOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcclxuICBAVmlld0NoaWxkKCdjZW50ZXJQaW5uZWRCb2R5JylcclxuICBjZW50ZXJQaW5uZWRCb2R5ITogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XHJcbiAgQFZpZXdDaGlsZCgncmlnaHRQaW5uZWRCb2R5JylcclxuICByaWdodFBpbm5lZEJvZHkhOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcclxuXHJcbiAgLy8gSGVhZGVycyBUZW1wbGF0ZSBSZWZlcmVuY2VzXHJcbiAgQFZpZXdDaGlsZCgnbGVmdFBpbm5lZEhlYWRlcicpXHJcbiAgbGVmdFBpbm5lZEhlYWRlciE6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xyXG4gIEBWaWV3Q2hpbGQoJ2NlbnRlclBpbm5lZEhlYWRlcicpXHJcbiAgY2VudGVyUGlubmVkSGVhZGVyITogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XHJcbiAgQFZpZXdDaGlsZCgncmlnaHRQaW5uZWRIZWFkZXInKVxyXG4gIHJpZ2h0UGlubmVkSGVhZGVyITogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2NvbHVtbnNHcm91cGVkQm94JylcclxuICBjb2x1bW5zR3JvdXBlZEJveCE6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xyXG5cclxuICAvLyBDZW50ZXIgRmFrZSBzY3JvbGxiYXJkXHJcbiAgQFZpZXdDaGlsZCgnY2VudGVyRmFrZVNjcm9sbGJhcicpXHJcbiAgY2VudGVyRmFrZVNjcm9sbGJhciE6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xyXG4gIGFzeW5jIHVwZGF0ZUNvbHVtbldpZHRoc0FuZEdyb3Vwcyhjb2x1bW5zOiBhbnkgPSBudWxsKSB7XHJcbiAgICBpZiAoIXRoaXMuZGF0YUdyaWRDb250YWluZXIpIHJldHVybjtcclxuICAgIGxldCBjb250YWluZXJXaWR0aCA9XHJcbiAgICAgIHRoaXMuZGF0YUdyaWRDb250YWluZXI/Lm5hdGl2ZUVsZW1lbnQ/Lm9mZnNldFdpZHRoID8/IDA7XHJcbiAgICAvLyBXcmFwIGluIGEgcHJvbWlzZSBzbyB3ZSBjYW4gYXdhaXRcclxuICAgIGNvbnN0IHsgbGVmdCwgY2VudGVyLCByaWdodCB9OiBhbnkgPSBhd2FpdCBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHtcclxuICAgICAgY29uc3QgcHJlcGFyZWQgPSB0aGlzLmNvbHVtblNlcnZpY2UucHJlcGFyZUNvbHVtbnMoXHJcbiAgICAgICAgY29sdW1ucyA/IGNvbHVtbnMgOiB0aGlzLmNvbHVtbnMsXHJcbiAgICAgICAgY29udGFpbmVyV2lkdGhcclxuICAgICAgKTtcclxuICAgICAgcmVzb2x2ZShwcmVwYXJlZCk7XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmxlZnRQaW5uZWRDb2x1bW5zID0gbGVmdDtcclxuICAgIHRoaXMuY2VudGVyQ29sdW1ucyA9IGNlbnRlcjtcclxuICAgIHRoaXMucmlnaHRQaW5uZWRDb2x1bW5zID0gcmlnaHQ7XHJcbiAgICBhd2FpdCBuZXcgUHJvbWlzZShyID0+IHNldFRpbWVvdXQociwgMCkpO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgcmVmcmVzaFByZXZpZXdDb2x1bW5zKGNvbHVtbnM6IGFueSA9IG51bGwpIHtcclxuICAgIGlmICghdGhpcy5kYXRhR3JpZENvbnRhaW5lcikgcmV0dXJuO1xyXG5cclxuICAgIGNvbnN0IGNvbnRhaW5lcldpZHRoID0gdGhpcy5kYXRhR3JpZENvbnRhaW5lci5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoO1xyXG5cclxuICAgIC8vIFdyYXAgcHJlcGFyZUNvbHVtbnMgaW4gYSBQcm9taXNlIHRvIG1ha2UgaXQgYXdhaXRhYmxlXHJcbiAgICBjb25zdCB7IGxlZnQsIGNlbnRlciwgcmlnaHQgfTogYW55ID0gYXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7XHJcbiAgICAgIGNvbnN0IHByZXBhcmVkID0gdGhpcy5jb2x1bW5TZXJ2aWNlLnByZXBhcmVDb2x1bW5zKFxyXG4gICAgICAgIGNvbHVtbnMgPyBjb2x1bW5zIDogdGhpcy5jb2x1bW5zLFxyXG4gICAgICAgIGNvbnRhaW5lcldpZHRoXHJcbiAgICAgICk7XHJcbiAgICAgIHJlc29sdmUocHJlcGFyZWQpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5wcmV2aWV3TGVmdFBpbm5lZENvbHVtbnMgPSBsZWZ0O1xyXG4gICAgdGhpcy5wcmV2aWV3Q2VudGVyQ29sdW1ucyA9IGNlbnRlcjtcclxuICAgIHRoaXMucHJldmlld1JpZ2h0UGlubmVkQ29sdW1ucyA9IHJpZ2h0O1xyXG4gICAgYXdhaXQgbmV3IFByb21pc2UociA9PiBzZXRUaW1lb3V0KHIsIDEwKSk7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgYXN5bmMgU2V0Q29sdW1uc0RlZmF1bHRXaWR0aCgpIHtcclxuICAgIGNvbnN0IHZpc2libGVDb2x1bW5zID0gdGhpcy5nZXRWaXNpYmxlTGVhZkNvbHVtbnModGhpcy5jb2x1bW5zKTtcclxuICAgIGNvbnN0IHZpc2libGVDb3VudCA9IHZpc2libGVDb2x1bW5zLmxlbmd0aDtcclxuXHJcbiAgICBpZiAodmlzaWJsZUNvdW50ID09PSAwKSByZXR1cm47XHJcblxyXG4gICAgbGV0IGNvbnRhaW5lcldpZHRoID1cclxuICAgICAgdGhpcy5kYXRhR3JpZENvbnRhaW5lcj8ubmF0aXZlRWxlbWVudD8ub2Zmc2V0V2lkdGggPz8gMDtcclxuICAgIGlmICh0aGlzLnNob3dTZXJpYWxOdW1iZXIpIGNvbnRhaW5lcldpZHRoIC09IDU1O1xyXG4gICAgaWYgKHRoaXMuc2hvd1NpZGVNZW51KSBjb250YWluZXJXaWR0aCAtPSAyOTtcclxuICAgIC8vIGlmICh0aGlzLmdyaWRUeXBlID09ICdBc3NldHMnIHx8IHRoaXMuZ3JpZFR5cGUgPT0gJ1Rhc2tzJykgY29udGFpbmVyV2lkdGggLT0gMzA7XHJcbiAgICAvLyBjb250YWluZXJXaWR0aCAtPSA1NTtcclxuICAgIC8vIGlmICh0aGlzLnNob3dTZXJpYWxOdW1iZXIpIGNvbnRhaW5lcldpZHRoIC09IDU1O1xyXG4gICAgLy8gaWYgKHRoaXMuc2hvd1NpZGVNZW51KSBjb250YWluZXJXaWR0aCAtPSAyOTtcclxuICAgIC8vIGlmICh0aGlzLmdyaWRUeXBlID09ICdBc3NldHMnIHx8IHRoaXMuZ3JpZFR5cGUgPT0gJ1Rhc2tzJykgY29udGFpbmVyV2lkdGggLT0gMzA7XHJcbiAgICAvLyBjb250YWluZXJXaWR0aCAtPSA1O1xyXG4gICAgdGhpcy5jb2x1bW5zID0gdGhpcy5jb2x1bW5TZXJ2aWNlLmFzc2lnbkRlZmF1bHRXaWR0aHMoXHJcbiAgICAgIHRoaXMuY29sdW1ucyxcclxuICAgICAgY29udGFpbmVyV2lkdGhcclxuICAgICk7XHJcbiAgICBhd2FpdCBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgMCkpO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcblxyXG4gIHNldFNlY3Rpb25zV2lkdGgoKSB7XHJcbiAgICBjb25zdCBsZWZ0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmxlZnQtcGlubmVkLWJvZHknKSBhcyBIVE1MRWxlbWVudDtcclxuICAgIGNvbnN0IGNlbnRlciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXHJcbiAgICAgICcuY2VudGVyLXNjcm9sbGFibGUtYm9keSdcclxuICAgICkgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICBjb25zdCByaWdodCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5yaWdodC1waW5uZWQtYm9keScpIGFzIEhUTUxFbGVtZW50O1xyXG4gICAgaWYgKGxlZnQpIHtcclxuICAgICAgbGVmdC5zdHlsZS5taW5XaWR0aCA9IGAke3RoaXMubGVmdFBpbm5lZEhlYWRlci5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRofWA7XHJcbiAgICB9XHJcbiAgICBpZiAoY2VudGVyKSB7XHJcbiAgICAgIGxlZnQuc3R5bGUubWluV2lkdGggPSBgJHt0aGlzLmNlbnRlclBpbm5lZEhlYWRlci5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRofWA7XHJcbiAgICB9XHJcbiAgICBpZiAocmlnaHQpIHtcclxuICAgICAgbGVmdC5zdHlsZS5taW5XaWR0aCA9IGAke3RoaXMucmlnaHRQaW5uZWRIZWFkZXIubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aH1gO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gb25DZW50ZXJCb2R5U2Nyb2xsKCk6IHZvaWQge1xyXG4gIC8vICAgY29uc3Qgc2Nyb2xsVG9wID0gdGhpcy5jZW50ZXJQaW5uZWRCb2R5Lm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wO1xyXG4gIC8vICAgY29uc3Qgc2Nyb2xsTGVmdCA9IHRoaXMuY2VudGVyUGlubmVkQm9keS5uYXRpdmVFbGVtZW50LnNjcm9sbExlZnQ7XHJcblxyXG4gIC8vICAgLy8gU3luYyB2ZXJ0aWNhbCBzY3JvbGwgd2l0aCBsZWZ0ICYgcmlnaHQgcGlubmVkIGJvZGllc1xyXG4gIC8vICAgdGhpcy5sZWZ0UGlubmVkQm9keS5uYXRpdmVFbGVtZW50LnNjcm9sbFRvcCA9IHNjcm9sbFRvcDtcclxuICAvLyAgIHRoaXMucmlnaHRQaW5uZWRCb2R5Lm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wID0gc2Nyb2xsVG9wO1xyXG5cclxuICAvLyAgIC8vIFN5bmMgaG9yaXpvbnRhbCBzY3JvbGwgd2l0aCBjZW50ZXIgaGVhZGVyXHJcbiAgLy8gICB0aGlzLmNlbnRlclBpbm5lZEhlYWRlci5uYXRpdmVFbGVtZW50LnNjcm9sbExlZnQgPSBzY3JvbGxMZWZ0O1xyXG4gIC8vICAgdGhpcy5jZW50ZXJGYWtlU2Nyb2xsYmFyLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsTGVmdCA9IHNjcm9sbExlZnQ7XHJcbiAgLy8gfVxyXG5cclxuICAvLyBvbkxlZnRCb2R5U2Nyb2xsKCk6IHZvaWQge1xyXG4gIC8vICAgY29uc3Qgc2Nyb2xsVG9wID0gdGhpcy5sZWZ0UGlubmVkQm9keS5uYXRpdmVFbGVtZW50LnNjcm9sbFRvcDtcclxuICAvLyAgIHRoaXMuY2VudGVyUGlubmVkQm9keS5uYXRpdmVFbGVtZW50LnNjcm9sbFRvcCA9IHNjcm9sbFRvcDtcclxuICAvLyAgIHRoaXMucmlnaHRQaW5uZWRCb2R5Lm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wID0gc2Nyb2xsVG9wO1xyXG4gIC8vIH1cclxuICAvLyBvblJpZ2h0Qm9keVNjcm9sbCgpOiB2b2lkIHtcclxuICAvLyAgIGNvbnN0IHNjcm9sbFRvcCA9IHRoaXMucmlnaHRQaW5uZWRCb2R5Lm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wO1xyXG4gIC8vICAgdGhpcy5jZW50ZXJQaW5uZWRCb2R5Lm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wID0gc2Nyb2xsVG9wO1xyXG4gIC8vICAgdGhpcy5sZWZ0UGlubmVkQm9keS5uYXRpdmVFbGVtZW50LnNjcm9sbFRvcCA9IHNjcm9sbFRvcDtcclxuICAvLyB9XHJcblxyXG4gIGZha2VTY3JvbGxiYXJTY3JvbGxMZWZ0ID0gMDtcclxuICAvLyBvbkZha2VTY3JvbGwoZXZlbnQ6IEV2ZW50KSB7XHJcbiAgLy8gICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgLy8gICB0aGlzLmZha2VTY3JvbGxiYXJTY3JvbGxMZWZ0ID0gdGFyZ2V0LnNjcm9sbExlZnQ7XHJcbiAgLy8gICB0aGlzLmNlbnRlclBpbm5lZEJvZHkubmF0aXZlRWxlbWVudC5zY3JvbGxMZWZ0ID0gdGFyZ2V0LnNjcm9sbExlZnQ7XHJcbiAgLy8gICB0aGlzLmNlbnRlclBpbm5lZEhlYWRlci5uYXRpdmVFbGVtZW50LnNjcm9sbExlZnQgPSB0YXJnZXQuc2Nyb2xsTGVmdDtcclxuICAvLyB9XHJcblxyXG5cclxuXHJcblxyXG4gIGdldE5lc3RlZFZhbHVlKG9iajogYW55LCBmaWVsZDogc3RyaW5nKTogYW55IHtcclxuICAgIHJldHVybiBmaWVsZD8uc3BsaXQoJy4nKS5yZWR1Y2UoKGFjYywgcGFydCkgPT4gYWNjICYmIGFjY1twYXJ0XSwgb2JqKTtcclxuICB9XHJcblxyXG4gIGlzTmVzdGVkVmFsdWVBcnJheShvYmo6IGFueSwgZmllbGQ6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKCFvYmogfHwgIWZpZWxkKSByZXR1cm4gZmFsc2U7XHJcbiAgICBjb25zdCB2YWx1ZSA9IGZpZWxkXHJcbiAgICAgIC5zcGxpdCgnLicpXHJcbiAgICAgIC5yZWR1Y2UoKGFjYywgcGFydCkgPT4gKGFjYyAmJiBhY2NbcGFydF0gIT09IHVuZGVmaW5lZCA/IGFjY1twYXJ0XSA6IHVuZGVmaW5lZCksIG9iaik7XHJcbiAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh2YWx1ZSk7XHJcbiAgfVxyXG5cclxuICBvblJlc2l6ZUdyb3VwKGV2ZW50OiBNb3VzZUV2ZW50LCBjb2w6IGFueSwgaXNSaWdodFBpbm5lZD86IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuXHJcbiAgICBjb25zdCBzdGFydFggPSBldmVudC5jbGllbnRYO1xyXG4gICAgY29uc3QgY2hpbGRyZW4gPSBjb2wuY2hpbGRyZW4gfHwgW107XHJcbiAgICBpZiAoIWNoaWxkcmVuLmxlbmd0aCkgcmV0dXJuO1xyXG5cclxuICAgIGNvbnN0IGNoaWxkV2lkdGhzOiB7IGZpZWxkOiBzdHJpbmc7IHdpZHRoOiBudW1iZXIgfVtdID0gY2hpbGRyZW4ubWFwKFxyXG4gICAgICAoY2hpbGQ6IGFueSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGVsID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgICAgICAgIGBbZmllbGQ9XCIke2NoaWxkLmZpZWxkfVwiXWBcclxuICAgICAgICApIGFzIEhUTUxFbGVtZW50O1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICBmaWVsZDogY2hpbGQuZmllbGQsXHJcbiAgICAgICAgICB3aWR0aDogZWw/Lm9mZnNldFdpZHRoIHx8IDAsXHJcbiAgICAgICAgfTtcclxuICAgICAgfVxyXG4gICAgKTtcclxuXHJcbiAgICBjb25zdCB0b3RhbEluaXRpYWxXaWR0aCA9IGNoaWxkV2lkdGhzLnJlZHVjZShcclxuICAgICAgKHN1bSwgY29sKSA9PiBzdW0gKyBjb2wud2lkdGgsXHJcbiAgICAgIDBcclxuICAgICk7XHJcblxyXG4gICAgY29uc3Qgb25Nb3VzZU1vdmUgPSAobW92ZUV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XHJcbiAgICAgIGxldCBkZWx0YVggPSBtb3ZlRXZlbnQuY2xpZW50WCAtIHN0YXJ0WDtcclxuXHJcbiAgICAgIGlmIChpc1JpZ2h0UGlubmVkKSB7XHJcbiAgICAgICAgZGVsdGFYID0gLWRlbHRhWDtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gUHJldmVudCBzaHJpbmtpbmcgdG9vIHNtYWxsXHJcbiAgICAgIGlmICh0b3RhbEluaXRpYWxXaWR0aCArIGRlbHRhWCA8IGNoaWxkcmVuLmxlbmd0aCAqIDgwKSByZXR1cm47XHJcblxyXG4gICAgICBsZXQgdG90YWxOZXdXaWR0aCA9IDA7XHJcblxyXG4gICAgICBjaGlsZFdpZHRocy5mb3JFYWNoKChjaGlsZCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHJhdGlvID0gY2hpbGQud2lkdGggLyB0b3RhbEluaXRpYWxXaWR0aDtcclxuICAgICAgICBjb25zdCBuZXdXaWR0aCA9IE1hdGgubWF4KGNoaWxkLndpZHRoICsgZGVsdGFYICogcmF0aW8sIDgwKTtcclxuICAgICAgICB0b3RhbE5ld1dpZHRoICs9IG5ld1dpZHRoO1xyXG5cclxuICAgICAgICBjb25zdCBjaGlsZEVscyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoYFtmaWVsZD1cIiR7Y2hpbGQuZmllbGR9XCJdYCk7XHJcbiAgICAgICAgY2hpbGRFbHMuZm9yRWFjaCgoZWw6IEVsZW1lbnQpID0+IHtcclxuICAgICAgICAgIGNvbnN0IGVsSHRtbCA9IGVsIGFzIEhUTUxFbGVtZW50O1xyXG4gICAgICAgICAgZWxIdG1sLnN0eWxlLm1pbldpZHRoID0gYCR7bmV3V2lkdGh9cHhgO1xyXG4gICAgICAgICAgZWxIdG1sLnN0eWxlLndpZHRoID0gYCR7bmV3V2lkdGh9cHhgO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICB0aGlzLnVwZGF0ZUNvbHVtbldpZHRoSW5Tb3VyY2VCeUZpZWxkKGNoaWxkLmZpZWxkLCBuZXdXaWR0aCk7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgLy8g4pyFIFVwZGF0ZSBncm91cCBoZWFkZXIgd2lkdGggaW4gRE9NXHJcbiAgICAgIGNvbnN0IGdyb3VwSGVhZGVyRWwgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFxyXG4gICAgICAgIGBbZ3JvdXA9XCIke2NvbC5oZWFkZXJ9XCJdYFxyXG4gICAgICApIGFzIEhUTUxFbGVtZW50O1xyXG4gICAgICBpZiAoZ3JvdXBIZWFkZXJFbCkge1xyXG4gICAgICAgIGdyb3VwSGVhZGVyRWwuc3R5bGUud2lkdGggPSBgJHt0b3RhbE5ld1dpZHRofXB4YDtcclxuICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCBvbk1vdXNlVXAgPSAoKSA9PiB7XHJcbiAgICAgIGlmICh0aGlzLnRhYmxlRmlsdGVyVmlld0lkKSB7XHJcbiAgICAgICAgdGhpcy5zYXZlUHJlc2V0KCdtb3VzZVVwJyk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5yZWZyZXNoSGVhZGVycygpO1xyXG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgb25Nb3VzZU1vdmUpO1xyXG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIG9uTW91c2VVcCk7XHJcbiAgICAgIGNvbnN0IHNlbmREYXRhID0ge1xyXG4gICAgICAgIGNvbHVtbnM6IHRoaXMuY2xlYW5Db2x1bW5zKHRoaXMuY29sdW1ucyksXHJcbiAgICAgICAgZmlsdGVyczogdGhpcy5jbGVhbkZpbHRlcmRDb2x1bW5zKCksXHJcbiAgICAgICAgbm9fb2ZfcmVjb3JkczogdGhpcy5wYWdpbmF0aW9uQ29uZmlnLnBhZ2VTaXplLFxyXG4gICAgICAgIHR5cGU6IHRoaXMudGFibGVUeXBlLFxyXG4gICAgICB9O1xyXG4gICAgICB0aGlzLmNyZWF0ZVVwZGF0ZUNvbmZpZ0xpc3RpbmcuZW1pdChzZW5kRGF0YSk7XHJcbiAgICB9O1xyXG5cclxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCBvbk1vdXNlTW92ZSk7XHJcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIG9uTW91c2VVcCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHVwZGF0ZUNvbHVtbldpZHRoSW5Tb3VyY2VCeUZpZWxkKGZpZWxkOiBzdHJpbmcsIHdpZHRoOiBudW1iZXIpOiB2b2lkIHtcclxuICAgIGNvbnN0IHVwZGF0ZSA9IChjb2x1bW5zOiBhbnlbXSkgPT4ge1xyXG4gICAgICBmb3IgKGNvbnN0IGNvbCBvZiBjb2x1bW5zKSB7XHJcbiAgICAgICAgaWYgKGNvbC5jaGlsZHJlbj8ubGVuZ3RoKSB7XHJcbiAgICAgICAgICB1cGRhdGUoY29sLmNoaWxkcmVuKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGNvbC5maWVsZCA9PT0gZmllbGQpIHtcclxuICAgICAgICAgIGNvbC53aWR0aCA9IHdpZHRoO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICB1cGRhdGUodGhpcy5jb2x1bW5zKTtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gICBjbGVhbkNvbHVtbnMoY29sdW1uczogYW55W10pOiBhbnlbXSB7XHJcbiAgICAgIHJldHVybiBjb2x1bW5zLm1hcCgoY29sKSA9PiB7XHJcbiAgICAgICAgY29uc3Qge1xyXG4gICAgICAgICAgX190eXBlbmFtZSxcclxuICAgICAgICAgIF9pZCxcclxuICAgICAgICAgIGNvbHVtbl9kcm9wZG93bl92YWx1ZSxcclxuICAgICAgICAgIGZpbHRlclZhbHVlLFxyXG4gICAgICAgICAgZXhwYW5kZWRGaWx0ZXIsXHJcbiAgICAgICAgICBxdWVyeSxcclxuICAgICAgICAgIGlzUm93R3JvdXBlZCxcclxuICAgICAgICAgIC4uLnJlc3RcclxuICAgICAgICB9ID0gY29sO1xyXG5cclxuICAgICAgICAvLyBDbGVhbiBkcm9wZG93biB2YWx1ZXMgKF9fdHlwZW5hbWUgcmVtb3ZlZClcclxuICAgICAgICBjb25zdCBjbGVhbmVkRHJvcGRvd24gPSBBcnJheS5pc0FycmF5KGNvbHVtbl9kcm9wZG93bl92YWx1ZSlcclxuICAgICAgICAgID8gY29sdW1uX2Ryb3Bkb3duX3ZhbHVlLm1hcCgoeyBfX3R5cGVuYW1lLCAuLi5kUmVzdCB9KSA9PiBkUmVzdClcclxuICAgICAgICAgIDogY29sdW1uX2Ryb3Bkb3duX3ZhbHVlXHJcbiAgICAgICAgICAgID8gKCh7IF9fdHlwZW5hbWUsIC4uLmRSZXN0IH0pID0+IGRSZXN0KShjb2x1bW5fZHJvcGRvd25fdmFsdWUpXHJcbiAgICAgICAgICAgIDogbnVsbDtcclxuXHJcbiAgICAgICAgLy8gQ2xlYW4gcXVlcnkgKF9fdHlwZW5hbWUgcmVtb3ZlZClcclxuICAgICAgICBjb25zdCBjbGVhbmVkUXVlcnkgPSBBcnJheS5pc0FycmF5KHF1ZXJ5KVxyXG4gICAgICAgICAgPyBxdWVyeS5tYXAoKHsgX190eXBlbmFtZSwgLi4ucVJlc3QgfSkgPT4gcVJlc3QpXHJcbiAgICAgICAgICA6IHF1ZXJ5XHJcbiAgICAgICAgICAgID8gKCh7IF9fdHlwZW5hbWUsIF9pZHMsIC4uLnFSZXN0IH0pID0+IHFSZXN0KShxdWVyeSlcclxuICAgICAgICAgICAgOiBudWxsO1xyXG5cclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgLi4ucmVzdCxcclxuICAgICAgICAgIGNvbHVtbl9kcm9wZG93bl92YWx1ZTogY2xlYW5lZERyb3Bkb3duLFxyXG4gICAgICAgICAgcXVlcnk6IGNsZWFuZWRRdWVyeSxcclxuICAgICAgICAgIGlzX2dyb3VwYWJsZTogcmVzdC50eXBlICE9PSAnaW1hZ2UnLFxyXG4gICAgICAgIH07XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICBvblJlc2l6ZUNvbHVtbihldmVudDogTW91c2VFdmVudCwgY29sOiBhbnkpOiB2b2lkIHtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuXHJcbiAgICBjb25zdCBzdGFydFggPSBldmVudC5jbGllbnRYO1xyXG5cclxuICAgIGNvbnN0IHRhcmdldEVsID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgICAgYFtmaWVsZD1cIiR7Y29sLmZpZWxkfVwiXWBcclxuICAgICkgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICBjb25zdCBpbml0aWFsV2lkdGggPSB0YXJnZXRFbD8ub2Zmc2V0V2lkdGggfHwgMTUwO1xyXG5cclxuICAgIGNvbnN0IG1hdGNoaW5nRWxzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChgW2ZpZWxkPVwiJHtjb2wuZmllbGR9XCJdYCk7XHJcblxyXG4gICAgLy8g8J+RiSBBZGQgaGlnaGxpZ2h0IHdoaWxlIHJlc2l6aW5nXHJcbiAgICBpZiAoY29sPy5waW5uZWQgPT0gJ3JpZ2h0Jykge1xyXG4gICAgICBtYXRjaGluZ0Vscy5mb3JFYWNoKChlbDogRWxlbWVudCkgPT4ge1xyXG4gICAgICAgIChlbCBhcyBIVE1MRWxlbWVudCkuY2xhc3NMaXN0LmFkZCgncmVzaXppbmctaGlnaGxpZ2h0LXJpZ2h0Jyk7XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbWF0Y2hpbmdFbHMuZm9yRWFjaCgoZWw6IEVsZW1lbnQpID0+IHtcclxuICAgICAgICAoZWwgYXMgSFRNTEVsZW1lbnQpLmNsYXNzTGlzdC5hZGQoJ3Jlc2l6aW5nLWhpZ2hsaWdodCcpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBvbk1vdXNlTW92ZSA9IChtb3ZlRXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcclxuICAgICAgbGV0IGRlbHRhWCA9IG1vdmVFdmVudC5jbGllbnRYIC0gc3RhcnRYO1xyXG5cclxuICAgICAgLy8g8J+RiSBSZXZlcnNlIGlmIHRoZSBjb2x1bW4gaXMgcGlubmVkIHRvIHRoZSByaWdodFxyXG4gICAgICBpZiAoY29sLnBpbm5lZCA9PT0gJ3JpZ2h0Jykge1xyXG4gICAgICAgIGRlbHRhWCA9IC1kZWx0YVg7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGxldCBuZXdXaWR0aCA9IGluaXRpYWxXaWR0aCArIGRlbHRhWDtcclxuICAgICAgaWYgKG5ld1dpZHRoIDwgODApIHJldHVybjtcclxuXHJcbiAgICAgIG1hdGNoaW5nRWxzLmZvckVhY2goKGVsOiBFbGVtZW50KSA9PiB7XHJcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IGVsIGFzIEhUTUxFbGVtZW50O1xyXG4gICAgICAgIGVsZW1lbnQuc3R5bGUubWluV2lkdGggPSBgJHtuZXdXaWR0aH1weGA7XHJcbiAgICAgICAgZWxlbWVudC5zdHlsZS53aWR0aCA9IGAke25ld1dpZHRofXB4YDtcclxuICAgICAgfSk7XHJcblxyXG4gICAgICB0aGlzLnVwZGF0ZUNvbHVtbldpZHRoSW5Tb3VyY2VCeUZpZWxkKGNvbC5maWVsZCwgbmV3V2lkdGgpO1xyXG4gICAgICBjb2wud2lkdGggPSBuZXdXaWR0aDtcclxuICAgICAgdGhpcy5oYXNTY3JvbGwgPSB0aGlzLmhhc0hvcml6b250YWxTY3JvbGxiYXIoKTtcclxuICAgIH07XHJcblxyXG4gICAgY29uc3Qgb25Nb3VzZVVwID0gKCkgPT4ge1xyXG4gICAgICBpZiAodGhpcy50YWJsZUZpbHRlclZpZXdJZCkge1xyXG4gICAgICAgIHRoaXMuc2F2ZVByZXNldCgnbW91c2VVcCcpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMucmVmcmVzaEhlYWRlcnMoKTtcclxuICAgICAgY29uc3Qgc2VuZERhdGEgPSB7XHJcbiAgICAgICAgY29sdW1uczogdGhpcy5jbGVhbkNvbHVtbnModGhpcy5jb2x1bW5zKSxcclxuICAgICAgICBmaWx0ZXJzOiB0aGlzLmNsZWFuRmlsdGVyZENvbHVtbnMoKSxcclxuICAgICAgICBub19vZl9yZWNvcmRzOiB0aGlzLnBhZ2luYXRpb25Db25maWcucGFnZVNpemUsXHJcbiAgICAgICAgdHlwZTogdGhpcy50YWJsZVR5cGUsXHJcbiAgICAgIH07XHJcbiAgICAgIHRoaXMuY3JlYXRlVXBkYXRlQ29uZmlnTGlzdGluZy5lbWl0KHNlbmREYXRhKTtcclxuXHJcbiAgICAgIG1hdGNoaW5nRWxzLmZvckVhY2goKGVsOiBFbGVtZW50KSA9PiB7XHJcbiAgICAgICAgKGVsIGFzIEhUTUxFbGVtZW50KS5jbGFzc0xpc3QucmVtb3ZlKCdyZXNpemluZy1oaWdobGlnaHQnKTtcclxuICAgICAgICAoZWwgYXMgSFRNTEVsZW1lbnQpLmNsYXNzTGlzdC5yZW1vdmUoJ3Jlc2l6aW5nLWhpZ2hsaWdodC1yaWdodCcpO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCBvbk1vdXNlTW92ZSk7XHJcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgb25Nb3VzZVVwKTtcclxuICAgIH07XHJcblxyXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIG9uTW91c2VNb3ZlKTtcclxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgb25Nb3VzZVVwKTtcclxuICB9XHJcblxyXG5cclxuXHJcbiAgb25SZXNpemVHcm91cEJveChldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG5cclxuICAgIGNvbnN0IHN0YXJ0WCA9IGV2ZW50LmNsaWVudFg7XHJcblxyXG4gICAgY29uc3QgdGFyZ2V0RWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZ3JvdXBCb3hIZWFkZXJEaXYnKTtcclxuICAgIGNvbnN0IGluaXRpYWxXaWR0aCA9IHRhcmdldEVsPy5vZmZzZXRXaWR0aCB8fCAxNTA7XHJcblxyXG4gICAgY29uc3Qgb25Nb3VzZU1vdmUgPSAobW92ZUV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XHJcbiAgICAgIGNvbnN0IGRlbHRhWCA9IG1vdmVFdmVudC5jbGllbnRYIC0gc3RhcnRYO1xyXG5cclxuICAgICAgbGV0IG5ld1dpZHRoID0gaW5pdGlhbFdpZHRoICsgZGVsdGFYO1xyXG4gICAgICBpZiAobmV3V2lkdGggPCAxMDApIG5ld1dpZHRoID0gMTAwO1xyXG5cclxuICAgICAgaWYgKHRhcmdldEVsKSB7XHJcbiAgICAgICAgdGFyZ2V0RWwuc3R5bGUud2lkdGggPSBgJHtuZXdXaWR0aH1weGA7XHJcbiAgICAgICAgdGFyZ2V0RWwuc3R5bGUubWluV2lkdGggPSBgJHtuZXdXaWR0aH1weGA7XHJcbiAgICAgICAgdGhpcy5ncm91cEJveFBhZGRpbmcgPSBuZXdXaWR0aDtcclxuICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCBvbk1vdXNlVXAgPSAoKSA9PiB7XHJcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCBvbk1vdXNlTW92ZSk7XHJcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgb25Nb3VzZVVwKTtcclxuICAgIH07XHJcblxyXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIG9uTW91c2VNb3ZlKTtcclxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgb25Nb3VzZVVwKTtcclxuICB9XHJcblxyXG4gIG9uUGFzdGVJbkZpbHRlclJvd1NlYXJjaChldmVudDogQ2xpcGJvYXJkRXZlbnQsIGNvbDogYW55KSB7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5vbkZpbHRlckNoYW5nZShjb2wpO1xyXG4gICAgICB0aGlzLmFwcGx5RHJvcGRvd25GaWx0ZXIoKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgb25GaWx0ZXJDaGFuZ2UoY29sOiBhbnkpOiB2b2lkIHtcclxuICAgIGNvbnN0IGZpbHRlclZhbHVlID0gY29sLmZpbHRlclZhbHVlPy50b0xvd2VyQ2FzZSgpIHx8ICcnO1xyXG4gICAgdGhpcy5zZWxlY3RlZENvbHVtbkZvckZpbHRlciA9IGNvbDtcclxuICAgIGlmICghY29sPy5xdWVyeSkge1xyXG4gICAgICBjb2wucXVlcnkgPSB7XHJcbiAgICAgICAgZmlyc3RfY29uZGl0aW9uOiBjb2wudHlwZSA9PSAnZGF0ZScgPyAnZXF1YWwnIDogJ2NvbnRhaW4nLFxyXG4gICAgICAgIGZpcnN0X3ZhbHVlOiBudWxsLFxyXG4gICAgICAgIHNlY29uZF9jb25kaXRpb246IG51bGwsXHJcbiAgICAgICAgc2Vjb25kX3ZhbHVlOiBudWxsLFxyXG4gICAgICAgIGNvbmRpdGlvbjogbnVsbFxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjb2wucXVlcnkuZmlyc3RfdmFsdWUgPSBmaWx0ZXJWYWx1ZTtcclxuICAgIHRoaXMuZmlyc3RWYWx1ZSA9IGZpbHRlclZhbHVlO1xyXG4gIH1cclxuXHJcbiAgLy8gR2V0IEJvZHkgSGVpZ2h0XHJcbiAgZ2V0IGJvZHlXcmFwcGVySGVpZ2h0KCk6IHN0cmluZyB7XHJcbiAgICBjb25zdCByb3dzID0gdGhpcy5zaG93Q29sdW1uc0dyb3VwaW5nICYmIHRoaXMuc2hvd0ZpbHRlclJvdyA/IDMgOiAodGhpcy5zaG93Q29sdW1uc0dyb3VwaW5nIHx8IHRoaXMuc2hvd0ZpbHRlclJvdyA/IDIgOiAxKTtcclxuICAgIGNvbnN0IG9mZnNldCA9IHRoaXMuaGVhZGVyUm93SGVpZ2h0ICogcm93cyArICh0aGlzLmhhc1Njcm9sbCA/IDE3IDogMCk7XHJcbiAgICByZXR1cm4gYGNhbGMoMTAwJSAtICR7b2Zmc2V0fXB4KWA7XHJcbiAgfVxyXG5cclxuICAvLyBSb3cgSG92ZXIgTG9naWMgSGVyZVxyXG4gIGhvdmVyZWRSb3dJZDogc3RyaW5nIHwgbnVtYmVyIHwgbnVsbCA9IG51bGw7XHJcbiAgb25Sb3dIb3Zlcihyb3c6IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5ob3ZlcmVkUm93SWQgPSByb3cuX2lkIHx8IHJvdy5pZDtcclxuICB9XHJcblxyXG4gIG9uUm93TGVhdmUoKTogdm9pZCB7XHJcbiAgICB0aGlzLmhvdmVyZWRSb3dJZCA9IG51bGw7XHJcbiAgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDpjbGljaycsIFsnJGV2ZW50J10pXHJcbiAgb25Eb2N1bWVudENsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XHJcbiAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICB0aGlzLmlzVmlzaWJsZSA9IGZhbHNlO1xyXG4gICAgdGhpcy5vcGVuSW5kZXggPSBudWxsO1xyXG4gICAgaWYgKFxyXG4gICAgICAhdGhpcy5oYXNQYXJlbnRXaXRoQ2xhc3ModGFyZ2V0LCBbXHJcbiAgICAgICAgJ3RocmVlLWRvdHMnLFxyXG4gICAgICAgICdmaWx0ZXItaWNvbi13cmFwcGVyJyxcclxuICAgICAgICAnY29sdW1uLW1lbnUnLFxyXG4gICAgICAgICdmaWx0ZXItbWVudScsXHJcbiAgICAgIF0pXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5hY3RpdmVDb2wgPSBudWxsO1xyXG4gICAgICB0aGlzLmFjdGl2ZUZpbHRlckNlbGwgPSBudWxsO1xyXG4gICAgfVxyXG4gICAgaWYgKCF0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpKSB7XHJcbiAgICAgIHRoaXMuc2hvd0FjdGlvbnNEcm9wRG93biA9IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgY29uc3QgaW5zaWRlVG9wRmlsdGVyUm93ID0gdGFyZ2V0LmNsb3Nlc3QoJy5maWx0ZXItdGFncycpIHx8IHRhcmdldC5jbG9zZXN0KCcuYWRkLWZpbHRlci1idXR0b24tbWVudScpIHx8XHJcbiAgICAgIHRhcmdldC5jbG9zZXN0KCcudGFibGUtcmlnaHQtdG9wLWFjdGlvbnMnKSB8fCB0YXJnZXQuY2xvc2VzdCgnLnRhYmxlLWxheW91dCcpIHx8IHRhcmdldC5jbG9zZXN0KCcuZmlsdGVyLXJvdy1maWx0ZXItd3JhcHBlcicpO1xyXG4gICAgY29uc3QgaXNDbGlja2VkSW5zaWRlVGhyZWVEb3RzRmlsdGVyID0gdGFyZ2V0LmNsb3Nlc3QoJy50aHJlZS1kb3RzLWZpbHRlcicpIHx8IHRhcmdldC5jbG9zZXN0KCcuZmlsdGVyLW1lbnUtY29udGFpbmVyJyk7XHJcbiAgICBpZiAoIWlzQ2xpY2tlZEluc2lkZVRocmVlRG90c0ZpbHRlcikge1xyXG4gICAgICB0aGlzLmNsb3NlVGhyZWVEb3RzTWVudUZpbHRlcigpO1xyXG4gICAgfVxyXG4gICAgaWYgKCFpbnNpZGVUb3BGaWx0ZXJSb3cpIHtcclxuICAgICAgdGhpcy5jbG9zZUZpbHRlckRyb3Bkb3ducyhldmVudCk7XHJcbiAgICB9XHJcbiAgICBpZiAoIXRhcmdldC5jbG9zZXN0KCcuc2V0LWRlZmF1bHQtcHJlc2V0JykpIHtcclxuICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnNldC1kZWZhdWx0LXByZXNldCcpPy5jbGFzc0xpc3Q/LnJlbW92ZSgnc2hvdycpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghdGFyZ2V0LmNsb3Nlc3QoJy5mdWxsLXRleHQtYm94JykgJiYgIXRhcmdldC5jbG9zZXN0KCcuZGF0YS1ncmlkLWhlYWRlci13cmFwcGVyJykpIHtcclxuICAgICAgdGhpcy5jb2xsYXBzZUFsbEV4cGFuZGVkQ2VsbHMoKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIXRhcmdldC5jbG9zZXN0KCcuZGF0YS1ncmlkLXRhYmxlLXdyYXBwZXInKSkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkS2V5cy5jbGVhcigpO1xyXG4gICAgICB0aGlzLmFjdGl2ZUNlbGwgPSAnJztcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICBjbG9zZVRocmVlRG90c01lbnVGaWx0ZXIoKSB7XHJcbiAgICB0aGlzLmlzVGhyZWVEb3RzRmlsdGVyT3BlbiA9IGZhbHNlO1xyXG4gIH1cclxuXHJcblxyXG4gIGNsb3NlRmlsdGVyRHJvcGRvd25zKGV2ZW50OiBNb3VzZUV2ZW50KSB7XHJcbiAgICB0aGlzLmlzRmlsdGVyT3BlbiA9IGZhbHNlO1xyXG4gICAgdGhpcy5pc0FjdGl2ZUZpbHRlck9wZW4gPSBmYWxzZTtcclxuICAgIHRoaXMuYWN0aXZlVG9wQnV0dG9uID0gJyc7XHJcbiAgICB0aGlzLmFjdGl2ZUZpbHRlckNlbGwgPSBudWxsO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBoYXNQYXJlbnRXaXRoQ2xhc3MoXHJcbiAgICBlbGVtZW50OiBIVE1MRWxlbWVudCxcclxuICAgIGNsYXNzTGlzdDogc3RyaW5nW11cclxuICApOiBib29sZWFuIHtcclxuICAgIGxldCBlbDogSFRNTEVsZW1lbnQgfCBudWxsID0gZWxlbWVudDtcclxuXHJcbiAgICB3aGlsZSAoZWwgIT09IG51bGwpIHtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIGVsLmNsYXNzTGlzdCAmJlxyXG4gICAgICAgIGNsYXNzTGlzdC5zb21lKChjbGFzc05hbWUpID0+IGVsIS5jbGFzc0xpc3QuY29udGFpbnMoY2xhc3NOYW1lKSlcclxuICAgICAgKSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH1cclxuICAgICAgZWwgPSBlbC5wYXJlbnRFbGVtZW50O1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIGlzTWVudWVIaWRkZW4gPSBmYWxzZTtcclxuICBvcGVuVGhyZWVEb3RzTWVudShldmVudDogTW91c2VFdmVudCwgY2hpbGQ6IGFueSwga2VlcE9yaWdpbmFsUG9zaXRpb24gPSBmYWxzZSkge1xyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgdGhpcy5pc01lbnVlSGlkZGVuID0gdHJ1ZTtcclxuICAgIGNvbnN0IGNvbnRhaW5lcldpZHRoID0gdGhpcy5kYXRhR3JpZENvbnRhaW5lcj8ubmF0aXZlRWxlbWVudD8ub2Zmc2V0V2lkdGg7XHJcbiAgICB0aGlzLmFjdGl2ZUNvbCA9IGNoaWxkO1xyXG4gICAgdGhpcy5hY3RpdmVGaWx0ZXJDZWxsID0gbnVsbDtcclxuICAgIGNvbnN0IHggPSBldmVudC5jbGllbnRYO1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGNvbnN0IGVsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuY29sdW1uLW1lbnUnKSBhcyBIVE1MRWxlbWVudDtcclxuICAgICAgaWYgKGVsZW1lbnQpIHtcclxuICAgICAgICBpZiAoeCA+IChjb250YWluZXJXaWR0aCAvIDIpKSB7XHJcbiAgICAgICAgICBlbGVtZW50LnN0eWxlLmxlZnQgPSBgJHt4IC0gMjQwfXB4YDtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgZWxlbWVudCEuc3R5bGUubGVmdCA9IGAke3h9cHhgO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICB0aGlzLmlzTWVudWVIaWRkZW4gPSBmYWxzZTtcclxuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfSwgMCk7XHJcbiAgfVxyXG4gIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cclxuICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXHJcbiAgLy8gQ29sdW1uIFRocmVlIERvdHMgQWN0aW9uc1xyXG4gIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXHJcbiAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cclxuICBzb3J0QXNjKGNvbDogYW55KSB7XHJcbiAgICBpZiAoIWNvbC5pc19zb3J0YWJsZSkgcmV0dXJuO1xyXG4gICAgY29sIS5vcmRlcl9ieSA9ICdhc2MnO1xyXG4gICAgY29uc3QgZXZlbnQgPSB7XHJcbiAgICAgIG9yZGVyOiAnYXNjJyxcclxuICAgICAgY29sdW1uOiBjb2xcclxuICAgIH1cclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgIHRoaXMuc29ydGluZ09yZGVyT3B0aW9ucy5lbWl0KGV2ZW50KTtcclxuICB9XHJcblxyXG4gIHNvcnREZXNjKGNvbDogYW55KSB7XHJcbiAgICBpZiAoIWNvbC5pc19zb3J0YWJsZSkgcmV0dXJuO1xyXG4gICAgY29sIS5vcmRlcl9ieSA9ICdkZXNjJztcclxuICAgIGNvbnN0IGV2ZW50ID0ge1xyXG4gICAgICBvcmRlcjogJ2Rlc2MnLFxyXG4gICAgICBjb2x1bW46IGNvbFxyXG4gICAgfVxyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgdGhpcy5zb3J0aW5nT3JkZXJPcHRpb25zLmVtaXQoZXZlbnQpO1xyXG4gIH1cclxuXHJcbiAgcmVzZXRTb3J0KGNvbDogYW55KSB7XHJcbiAgICB0aGlzLnNvcnRpbmdDb25maWcgPSB7IGZpZWxkOiAnJywgb3JkZXJfYnk6ICcnIH07XHJcbiAgICBjb25zdCBldmVudCA9IHsgZmllbGQ6IG51bGwsIG9yZGVyX2J5OiBudWxsIH1cclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgIHRoaXMuc29ydGluZ09yZGVyT3B0aW9ucy5lbWl0KGV2ZW50KTtcclxuICB9XHJcblxyXG5cclxuICBhc3luYyB1cGRhdGVDb2x1bW5QaW5JblNvdXJjZUJ5RmllbGQoXHJcbiAgICBjb2x1bW46IGFueSxcclxuICAgIHBpbm5lZDogJ2xlZnQnIHwgJ3JpZ2h0JyB8IG51bGwsXHJcbiAgICBpc05lc3RlZFRhYmxlOiBhbnkgPSBmYWxzZSxcclxuICAgIGNvbHVtbnM/OiBhbnlcclxuICApIHtcclxuICAgIGRlYnVnZ2VyXHJcbiAgICBpZiAoaXNOZXN0ZWRUYWJsZSkge1xyXG4gICAgICB0aGlzLnBpblVucGluQ29sdW0oY29sdW1uLCBwaW5uZWQsIGNvbHVtbnMpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCB1cGRhdGUgPSAoY29sdW1uczogYW55W10pID0+IHtcclxuICAgICAgZm9yIChjb25zdCBjb2wgb2YgY29sdW1ucykge1xyXG4gICAgICAgIGlmIChjb2wuY2hpbGRyZW4/Lmxlbmd0aCkge1xyXG4gICAgICAgICAgdXBkYXRlKGNvbC5jaGlsZHJlbik7XHJcbiAgICAgICAgfSBlbHNlIGlmIChjb2wuZmllbGQgPT09IGNvbHVtbi5maWVsZCkge1xyXG4gICAgICAgICAgY29sLnBpbm5lZCA9IHBpbm5lZDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH07XHJcbiAgICB0aGlzLmFjdGl2ZUNvbCA9IG51bGw7XHJcbiAgICB1cGRhdGUodGhpcy5jb2x1bW5zKTtcclxuICAgIHRoaXMudXBkYXRlQ29sdW1uV2lkdGhzQW5kR3JvdXBzKCk7XHJcbiAgICB0aGlzLnJlZnJlc2hQcmV2aWV3Q29sdW1ucygpO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgY29uc3Qgc2VuZERhdGEgPSB7XHJcbiAgICAgIGNvbHVtbnM6IHRoaXMuY2xlYW5Db2x1bW5zKHRoaXMuY29sdW1ucyksXHJcbiAgICAgIGZpbHRlcnM6IHRoaXMuY2xlYW5GaWx0ZXJkQ29sdW1ucygpLFxyXG4gICAgICBub19vZl9yZWNvcmRzOiB0aGlzLnBhZ2luYXRpb25Db25maWcucGFnZVNpemUsXHJcbiAgICAgIHR5cGU6IHRoaXMudGFibGVUeXBlLFxyXG4gICAgfTtcclxuICAgIHRoaXMuY3JlYXRlVXBkYXRlQ29uZmlnTGlzdGluZy5lbWl0KHNlbmREYXRhKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0VmlzaWJsZUxlYWZDb2x1bW5zID0gKGNvbHVtbnM6IGFueVtdKTogYW55W10gPT4ge1xyXG4gICAgY29uc3QgcmVzdWx0OiBhbnlbXSA9IFtdO1xyXG4gICAgZm9yIChjb25zdCBjb2x1bW4gb2YgY29sdW1ucykge1xyXG4gICAgICBpZiAoY29sdW1uLmNoaWxkcmVuICYmIEFycmF5LmlzQXJyYXkoY29sdW1uLmNoaWxkcmVuKSkge1xyXG4gICAgICAgIHJlc3VsdC5wdXNoKC4uLnRoaXMuZ2V0VmlzaWJsZUxlYWZDb2x1bW5zKGNvbHVtbi5jaGlsZHJlbikpO1xyXG4gICAgICB9IGVsc2UgaWYgKGNvbHVtbi5pc192aXNpYmxlKSB7XHJcbiAgICAgICAgcmVzdWx0LnB1c2goY29sdW1uKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9O1xyXG5cclxuICBhdXRvc2l6ZUNvbHVtbihjb2xzOiBhbnkgfCBhbnlbXSk6IHZvaWQge1xyXG4gICAgdGhpcy5hY3RpdmVDb2wgPSBudWxsO1xyXG5cclxuICAgIC8vIE5vcm1hbGl6ZSBpbnB1dCB0byBhbiBhcnJheVxyXG4gICAgY29uc3QgY29sdW1uc1RvUmVzaXplID0gQXJyYXkuaXNBcnJheShjb2xzKSA/IGNvbHMgOiBbY29sc107XHJcblxyXG4gICAgLy8gSGVscGVyOiBGbGF0dGVuIGFsbCB2aXNpYmxlIGxlYWYgY29sdW1uc1xyXG4gICAgY29uc3QgdmlzaWJsZUNvbHVtbnMgPSB0aGlzLmdldFZpc2libGVMZWFmQ29sdW1ucyh0aGlzLmNvbHVtbnMpO1xyXG4gICAgY29uc3QgdmlzaWJsZUNvdW50ID0gdmlzaWJsZUNvbHVtbnMubGVuZ3RoO1xyXG5cclxuICAgIGlmICh2aXNpYmxlQ291bnQgPT09IDApIHJldHVybjtcclxuXHJcbiAgICBsZXQgY29udGFpbmVyV2lkdGggPVxyXG4gICAgICB0aGlzLmRhdGFHcmlkQ29udGFpbmVyPy5uYXRpdmVFbGVtZW50Py5vZmZzZXRXaWR0aCA/PyAwO1xyXG4gICAgaWYgKHRoaXMuc2hvd1NlcmlhbE51bWJlcikgY29udGFpbmVyV2lkdGggLT0gNTU7XHJcbiAgICBpZiAodGhpcy5zaG93U2lkZU1lbnUpIGNvbnRhaW5lcldpZHRoIC09IDI5O1xyXG4gICAgaWYgKHRoaXMuZ3JpZFR5cGUgPT0gJ0Fzc2V0cycgfHwgdGhpcy5ncmlkVHlwZSA9PSAnVGFza3MnKSBjb250YWluZXJXaWR0aCAtPSAzMDtcclxuICAgIGNvbnRhaW5lcldpZHRoIC09IDU1O1xyXG4gICAgY29uc3QgZXF1YWxXaWR0aCA9IE1hdGguZmxvb3IoY29udGFpbmVyV2lkdGggLyB2aXNpYmxlQ291bnQpO1xyXG5cclxuICAgIC8vIFJlc2l6ZSBlYWNoIHBhc3NlZCBjb2x1bW5cclxuICAgIGZvciAoY29uc3QgY29sIG9mIGNvbHVtbnNUb1Jlc2l6ZSkge1xyXG4gICAgICBpZiAoY29sICYmIGNvbC5maWVsZCkge1xyXG4gICAgICAgIGNvbC53aWR0aCA9IGVxdWFsV2lkdGg7XHJcbiAgICAgICAgdGhpcy51cGRhdGVDb2x1bW5XaWR0aEluU291cmNlQnlGaWVsZChjb2wuZmllbGQsIGVxdWFsV2lkdGgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy51cGRhdGVDb2x1bW5XaWR0aHNBbmRHcm91cHMoKTtcclxuXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgY29uc3Qgc2VuZERhdGEgPSB7XHJcbiAgICAgICAgY29sdW1uczogdGhpcy5jbGVhbkNvbHVtbnModGhpcy5jb2x1bW5zKSxcclxuICAgICAgICBmaWx0ZXJzOiB0aGlzLmNsZWFuRmlsdGVyZENvbHVtbnMoKSxcclxuICAgICAgICBub19vZl9yZWNvcmRzOiB0aGlzLnBhZ2luYXRpb25Db25maWcucGFnZVNpemUsXHJcbiAgICAgICAgdHlwZTogdGhpcy50YWJsZVR5cGUsXHJcbiAgICAgIH07XHJcbiAgICAgIHRoaXMuY3JlYXRlVXBkYXRlQ29uZmlnTGlzdGluZy5lbWl0KHNlbmREYXRhKTtcclxuICAgIH0sIDEwMDApO1xyXG4gICAgdGhpcy5yZWZyZXNoUHJldmlld0NvbHVtbnMoKTtcclxuICB9XHJcblxyXG4gIGdldEdyb3VwV2lkdGgoZ3JvdXA6IGFueSk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICBncm91cD8uY2hpbGRyZW5cclxuICAgICAgICA/LmZpbHRlcigoY29sOiBhbnkpID0+IGNvbD8uaXNfdmlzaWJsZSlcclxuICAgICAgICA/LnJlZHVjZSgoYWNjOiBudW1iZXIsIGNvbDogYW55KSA9PiBhY2MgKyAoY29sPy53aWR0aCB8fCAwKSwgMCkgfHwgMFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGF1dG9zaXplQWxsQ29sdW1ucygpOiB2b2lkIHtcclxuICAgIHRoaXMuYWN0aXZlQ29sID0gbnVsbDtcclxuXHJcbiAgICBjb25zdCBnZXRWaXNpYmxlTGVhZkNvbHVtbnMgPSAoY29sdW1uczogYW55W10pOiBhbnlbXSA9PiB7XHJcbiAgICAgIGNvbnN0IHJlc3VsdDogYW55W10gPSBbXTtcclxuXHJcbiAgICAgIGZvciAoY29uc3QgY29sdW1uIG9mIGNvbHVtbnMpIHtcclxuICAgICAgICBpZiAoY29sdW1uLmNoaWxkcmVuICYmIEFycmF5LmlzQXJyYXkoY29sdW1uLmNoaWxkcmVuKSkge1xyXG4gICAgICAgICAgcmVzdWx0LnB1c2goLi4uZ2V0VmlzaWJsZUxlYWZDb2x1bW5zKGNvbHVtbi5jaGlsZHJlbikpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoY29sdW1uLmlzX3Zpc2libGUgIT09IGZhbHNlKSB7XHJcbiAgICAgICAgICByZXN1bHQucHVzaChjb2x1bW4pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgdmlzaWJsZUNvbHVtbnMgPSBnZXRWaXNpYmxlTGVhZkNvbHVtbnModGhpcy5jb2x1bW5zKTtcclxuICAgIGNvbnN0IHZpc2libGVDb3VudCA9IHZpc2libGVDb2x1bW5zLmxlbmd0aDtcclxuXHJcbiAgICBpZiAodmlzaWJsZUNvdW50ID09PSAwKSByZXR1cm47XHJcblxyXG4gICAgbGV0IGNvbnRhaW5lcldpZHRoID1cclxuICAgICAgdGhpcy5kYXRhR3JpZENvbnRhaW5lcj8ubmF0aXZlRWxlbWVudD8ub2Zmc2V0V2lkdGggPz8gMDtcclxuICAgIGlmICh0aGlzLnNob3dTZXJpYWxOdW1iZXIpIGNvbnRhaW5lcldpZHRoIC09IDU1O1xyXG4gICAgaWYgKHRoaXMuc2hvd1NpZGVNZW51KSBjb250YWluZXJXaWR0aCAtPSAyOTtcclxuICAgIGlmICh0aGlzLmdyaWRUeXBlID09ICdBc3NldHMnIHx8IHRoaXMuZ3JpZFR5cGUgPT0gJ1Rhc2tzJykgY29udGFpbmVyV2lkdGggLT0gMzA7XHJcbiAgICBjb250YWluZXJXaWR0aCAtPSA1NTtcclxuICAgIGNvbnN0IGVxdWFsV2lkdGggPSBNYXRoLm1heChNYXRoLmZsb29yKGNvbnRhaW5lcldpZHRoIC8gdmlzaWJsZUNvdW50KSwgMTUwKTtcclxuXHJcbiAgICAvLyBVcGRhdGUgd2lkdGhzIGZvciBhbGwgdmlzaWJsZSBjb2x1bW5zXHJcbiAgICB2aXNpYmxlQ29sdW1ucy5mb3JFYWNoKChjb2wpID0+IHtcclxuICAgICAgY29sLndpZHRoID0gZXF1YWxXaWR0aDtcclxuICAgICAgdGhpcy51cGRhdGVDb2x1bW5XaWR0aEluU291cmNlQnlGaWVsZChjb2wuZmllbGQsIGVxdWFsV2lkdGgpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5yZWZyZXNoSGVhZGVycygpO1xyXG4gICAgdGhpcy5oYXNTY3JvbGwgPSB0aGlzLmhhc0hvcml6b250YWxTY3JvbGxiYXIoKTtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICBjb25zdCBzZW5kRGF0YSA9IHtcclxuICAgICAgICBjb2x1bW5zOiB0aGlzLmNsZWFuQ29sdW1ucyh0aGlzLmNvbHVtbnMpLFxyXG4gICAgICAgIGZpbHRlcnM6IHRoaXMuY2xlYW5GaWx0ZXJkQ29sdW1ucygpLFxyXG4gICAgICAgIG5vX29mX3JlY29yZHM6IHRoaXMucGFnaW5hdGlvbkNvbmZpZy5wYWdlU2l6ZSxcclxuICAgICAgICB0eXBlOiB0aGlzLnRhYmxlVHlwZSxcclxuICAgICAgfTtcclxuICAgICAgdGhpcy5jcmVhdGVVcGRhdGVDb25maWdMaXN0aW5nLmVtaXQoc2VuZERhdGEpO1xyXG4gICAgfSwgMTAwMCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG1hcmtDb2x1bW5Bc0dyb3VwZWQoY29sdW1uczogYW55W10sIGZpZWxkOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGZvciAoY29uc3QgY29sIG9mIGNvbHVtbnMpIHtcclxuICAgICAgaWYgKGNvbC5maWVsZCA9PT0gZmllbGQpIHtcclxuICAgICAgICBjb2wuaXNSb3dHcm91cGVkID0gdHJ1ZTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGNvbC5jaGlsZHJlbj8ubGVuZ3RoKSB7XHJcbiAgICAgICAgdGhpcy5tYXJrQ29sdW1uQXNHcm91cGVkKGNvbC5jaGlsZHJlbiwgZmllbGQpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhc3luYyBncm91cEJ5KGNvbDogYW55KSB7XHJcbiAgICB0aGlzLm1haW5TY3JvbGwubmF0aXZlRWxlbWVudC5zY3JvbGxUb3AgPSAwO1xyXG4gICAgdGhpcy50cmFuc2xhdGVZID0gMDtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgIHRoaXMuYWN0aXZlQ29sID0gbnVsbDtcclxuICAgIGlmICghY29sKSByZXR1cm47XHJcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgaWYgKGNvbD8uaXNfZ3JvdXBhYmxlKSB7XHJcbiAgICAgIHRoaXMuZ3JvdXBlZENvbHVtbnMucHVzaChjb2wpO1xyXG4gICAgICB0aGlzLm1hcmtDb2x1bW5Bc0dyb3VwZWQodGhpcy5jb2x1bW5zLCBjb2wuZmllbGQpO1xyXG4gICAgfVxyXG4gICAgY29uc3QgZmllbGRzID0gdGhpcy5ncm91cGVkQ29sdW1ucy5tYXAoKGl0ZW0pID0+IGl0ZW0uZmllbGQpO1xyXG4gICAgdGhpcy5kYXRhU2V0ID0gYXdhaXQgdGhpcy5ncm91cERhdGFBc3luYyh0aGlzLm9yaWdpbmFsRGF0YVNldCwgZmllbGRzKTtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLnVwZGF0ZUZsYXR0ZW5lZERhdGEoKTtcclxuICAgICAgdGhpcy51cGRhdGVDb2x1bW5XaWR0aHNBbmRHcm91cHMoKTtcclxuICAgICAgdGhpcy5yZWZyZXNoUHJldmlld0NvbHVtbnMoKTtcclxuICAgICAgdGhpcy51cGRhdGVWaXNpYmxlUm93cygwKTtcclxuICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH0sIDEwMCk7XHJcblxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuZ3JvdXBCb3hQYWRkaW5nID0gdGhpcy5jb2x1bW5zR3JvdXBlZEJveD8ubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aDtcclxuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpXHJcbiAgICB9LCAxMCk7XHJcblxyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgZ3JvdXBEYXRhQXN5bmMoZGF0YTogYW55W10sIGdyb3VwRmllbGRzOiBzdHJpbmdbXSk6IFByb21pc2U8YW55W10+IHtcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHtcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy5ncm91cERhdGEoZGF0YSwgZ3JvdXBGaWVsZHMpO1xyXG4gICAgICAgIHJlc29sdmUocmVzdWx0KTtcclxuICAgICAgfSwgMCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG5cclxuXHJcblxyXG4gIGNob29zZUNvbHVtbnMoKSB7XHJcbiAgICB0aGlzLmFjdGl2ZUNvbCA9IG51bGw7XHJcbiAgICB0aGlzLnNob3dDb2x1bW5QYW5lbCA9IHRydWU7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICByZXNldENvbHVtbnMoKSB7XHJcbiAgICB0aGlzLmFjdGl2ZUNvbCA9IG51bGw7XHJcblxyXG4gICAgLy8gdGhpcy5jb2x1bW5zID0gc3RydWN0dXJlZENsb25lKHRoaXMub3JpZ2luYWxDb2x1bW5zKTtcclxuICAgIC8vIERlZXAgY29weSBuZXN0ZWQgb2JqZWN0cyBidXQga2VlcCBjbGFzcyByZWZzIHNhZmVcclxuICAgIHRoaXMub3JpZ2luYWxDb2x1bW5zID0gdGhpcy5jb2x1bW5zLm1hcChjb2wgPT4gKHtcclxuICAgICAgLi4uY29sLFxyXG4gICAgICAvLyBEZWVwIGNvcHkgbmVzdGVkIG9iamVjdHMgYnV0IGtlZXAgY2xhc3MgcmVmcyBzYWZlXHJcbiAgICAgIHF1ZXJ5OiBjb2wucXVlcnkgPyB7IC4uLmNvbC5xdWVyeSB9IDogbnVsbCxcclxuICAgICAgY29sdW1uX2Ryb3Bkb3duX3ZhbHVlOiBjb2wuY29sdW1uX2Ryb3Bkb3duX3ZhbHVlXHJcbiAgICAgICAgPyBbLi4uY29sLmNvbHVtbl9kcm9wZG93bl92YWx1ZV1cclxuICAgICAgICA6IFtdLFxyXG4gICAgfSkpO1xyXG5cclxuICAgIHRoaXMuU2V0Q29sdW1uc0RlZmF1bHRXaWR0aCgpO1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMudXBkYXRlQ29sdW1uV2lkdGhzQW5kR3JvdXBzKCk7XHJcbiAgICAgIHRoaXMucmVmcmVzaFByZXZpZXdDb2x1bW5zKCk7XHJcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH0sIDEwMCk7XHJcbiAgfVxyXG5cclxuICBjbGVhckZpbHRlcihjb2w6IGFueSkge1xyXG4gICAgY29sLmZpcnN0VmFsdWUgPSAnJztcclxuICAgIGNvbC5zZWNvbmRWYWx1ZSA9ICcnO1xyXG4gICAgY29sLmZpcnN0Q29uZGl0aW9uID0gJ2NvbnRhaW4nO1xyXG4gICAgY29sLnNlY29uZENvbmRpdGlvbiA9IG51bGw7XHJcbiAgICBjb2wubG9naWMgPSAnQU5EJztcclxuICAgIGNvbC5zZWxlY3RBbGwgPSBmYWxzZTtcclxuICAgIGNvbC5zZWxlY3RlZE9wdGlvbnMgPSB7fTtcclxuICAgIGNvbC5zZWFyY2hWYWx1ZSA9ICcnO1xyXG5cclxuICB9XHJcblxyXG5cclxuICBhcHBseUZpbHRlcihjb2w6IGFueSkge1xyXG4gICAgdGhpcy5maWx0ZXJDb2x1bW5zTGlzdC5wdXNoKGNvbCk7XHJcbiAgfVxyXG5cclxuICAvLyBSb3dzIFNlbGVjdGlvbiBMb2dpYyBHb2VzIEhlcmVcclxuXHJcbiAgc2VsZWN0ZWRSb3dzOiBTZXQ8c3RyaW5nPiA9IG5ldyBTZXQoKTtcclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IG5vcm1hbGl6ZWQgSUQgZnJvbSByb3cuXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBnZXRSb3dJZChyb3c6IGFueSk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gcm93LmlkID8/IHJvdy5faWQ7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBUb2dnbGUgYSBzaW5nbGUgcm93IHNlbGVjdGlvbi5cclxuICAgKi9cclxuICB0b2dnbGVSb3dTZWxlY3Rpb24ocm93OiBhbnkpOiB2b2lkIHtcclxuICAgIGNvbnN0IGlkID0gdGhpcy5nZXRSb3dJZChyb3cpO1xyXG5cclxuICAgIGlmICh0aGlzLnNlbGVjdGVkUm93cy5oYXMoaWQpKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dzLmRlbGV0ZShpZCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkUm93cy5hZGQoaWQpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGlkcyA9IEFycmF5LmZyb20odGhpcy5zZWxlY3RlZFJvd3MpO1xyXG5cclxuICAgIHRoaXMuc2F2ZVNlbGVjdGlvbihpZHMsIHRoaXMudGFibGVUeXBlKTtcclxuXHJcbiAgICBjb25zdCBldmVudCA9IHtcclxuICAgICAgZGF0YToge1xyXG4gICAgICAgIGxpc3RpbmdUeXBlOiB0aGlzLmxpc3RpbmdUeXBlLFxyXG4gICAgICAgIG9iajogaWRzXHJcbiAgICAgIH0sXHJcbiAgICAgIGV2ZW50VHlwZTogXCJvblNlbGVjdFJvd1wiLFxyXG4gICAgfTtcclxuICAgIHRoaXMuZ2VuZXJpY0V2ZW50LmVtaXQoZXZlbnQpO1xyXG4gIH1cclxuXHJcblxyXG5cclxuICB0b2dnbGVTZWxlY3RBbGwoZGF0YTogYW55W10pOiB2b2lkIHtcclxuICAgIGNvbnN0IGxlYWZSb3dzID0gdGhpcy5nZXRBbGxMZWFmUm93cyhkYXRhKTtcclxuICAgIGNvbnN0IGFsbElkcyA9IGxlYWZSb3dzLm1hcChyID0+IHRoaXMuZ2V0Um93SWQocikpO1xyXG5cclxuICAgIGNvbnN0IGFsbFNlbGVjdGVkID0gYWxsSWRzLmV2ZXJ5KGlkID0+IHRoaXMuc2VsZWN0ZWRSb3dzLmhhcyhpZCkpO1xyXG5cclxuICAgIGlmIChhbGxTZWxlY3RlZCkge1xyXG4gICAgICBhbGxJZHMuZm9yRWFjaChpZCA9PiB0aGlzLnNlbGVjdGVkUm93cy5kZWxldGUoaWQpKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGFsbElkcy5mb3JFYWNoKGlkID0+IHRoaXMuc2VsZWN0ZWRSb3dzLmFkZChpZCkpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgY29uc3QgaWRzID0gQXJyYXkuZnJvbSh0aGlzLnNlbGVjdGVkUm93cyk7XHJcbiAgICBjb25zdCBldmVudCA9IHtcclxuICAgICAgZGF0YToge1xyXG4gICAgICAgIGxpc3RpbmdUeXBlOiB0aGlzLmxpc3RpbmdUeXBlLFxyXG4gICAgICAgIG9iajogaWRzXHJcbiAgICAgIH0sXHJcbiAgICAgIGV2ZW50VHlwZTogXCJvblNlbGVjdFJvd1wiLFxyXG4gICAgfVxyXG4gICAgdGhpcy5nZW5lcmljRXZlbnQuZW1pdChldmVudCk7XHJcbiAgICB0aGlzLnNhdmVTZWxlY3Rpb24oaWRzLCB0aGlzLnRhYmxlVHlwZSk7XHJcbiAgfVxyXG5cclxuICBpc1Jvd1NlbGVjdGVkKHJvdzogYW55KTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RlZFJvd3MuaGFzKHRoaXMuZ2V0Um93SWQocm93KSk7XHJcbiAgfVxyXG5cclxuICBpc0FsbFNlbGVjdGVkKGRhdGE6IGFueVtdKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBsZWFmUm93cyA9IHRoaXMuZ2V0QWxsTGVhZlJvd3MoZGF0YSk7XHJcbiAgICByZXR1cm4gbGVhZlJvd3MubGVuZ3RoID4gMCAmJiBsZWFmUm93cy5ldmVyeShyID0+IHRoaXMuc2VsZWN0ZWRSb3dzLmhhcyh0aGlzLmdldFJvd0lkKHIpKSk7XHJcbiAgfVxyXG5cclxuXHJcbiAgaXNJbmRldGVybWluYXRlU3RhdGUoZGF0YTogYW55W10pOiBib29sZWFuIHtcclxuICAgIGNvbnN0IGxlYWZSb3dzID0gdGhpcy5nZXRBbGxMZWFmUm93cyhkYXRhKTtcclxuICAgIGNvbnN0IHNlbGVjdGVkQ291bnQgPSBsZWFmUm93cy5maWx0ZXIociA9PiB0aGlzLnNlbGVjdGVkUm93cy5oYXModGhpcy5nZXRSb3dJZChyKSkpLmxlbmd0aDtcclxuXHJcbiAgICByZXR1cm4gc2VsZWN0ZWRDb3VudCA+IDAgJiYgc2VsZWN0ZWRDb3VudCA8IGxlYWZSb3dzLmxlbmd0aDtcclxuICB9XHJcblxyXG5cclxuICBnZXRBbGxMZWFmUm93cyhkYXRhOiBhbnlbXSk6IGFueVtdIHtcclxuICAgIGNvbnN0IGxlYWY6IGFueVtdID0gW107XHJcblxyXG4gICAgY29uc3QgdHJhdmVyc2UgPSAobm9kZTogYW55KSA9PiB7XHJcbiAgICAgIGlmICghbm9kZSkgcmV0dXJuO1xyXG5cclxuICAgICAgaWYgKG5vZGUuaXNHcm91cCkge1xyXG4gICAgICAgIG5vZGUuY2hpbGRyZW4/LmZvckVhY2godHJhdmVyc2UpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGxlYWYucHVzaChub2RlKTtcclxuICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICBkYXRhLmZvckVhY2godHJhdmVyc2UpO1xyXG4gICAgcmV0dXJuIGxlYWY7XHJcbiAgfVxyXG5cclxuXHJcblxyXG5cclxuICAvLyBTaWRlIE1lbnUgV29ya2luZyBHb2VzIEhlcmVcclxuICB0b2dnbGVTaWRlTWVudShjbGlja2VkT246ICdjb2xzJyB8ICdmaWx0cnMnKSB7XHJcbiAgICBpZiAodGhpcy5jdXJyZW50T3BlbmVkU2lkZU1lbnVlID09IGNsaWNrZWRPbikge1xyXG4gICAgICB0aGlzLmN1cnJlbnRPcGVuZWRTaWRlTWVudWUgPSBjbGlja2VkT247XHJcbiAgICAgIHRoaXMuc2lkZU1lbnVWaXNpYmxlID0gIXRoaXMuc2lkZU1lbnVWaXNpYmxlO1xyXG4gICAgfSBlbHNlIGlmIChcclxuICAgICAgdGhpcy5zaWRlTWVudVZpc2libGUgJiZcclxuICAgICAgY2xpY2tlZE9uICE9IHRoaXMuY3VycmVudE9wZW5lZFNpZGVNZW51ZVxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMuY3VycmVudE9wZW5lZFNpZGVNZW51ZSA9IGNsaWNrZWRPbjtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5jdXJyZW50T3BlbmVkU2lkZU1lbnVlID0gY2xpY2tlZE9uO1xyXG4gICAgICB0aGlzLnNpZGVNZW51VmlzaWJsZSA9ICF0aGlzLnNpZGVNZW51VmlzaWJsZTtcclxuICAgIH1cclxuICAgIHRoaXMuaGFzU2Nyb2xsID0gdGhpcy5oYXNIb3Jpem9udGFsU2Nyb2xsYmFyKCk7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICB0b2dnbGVHcm91cFZpc2liaWxpdHkoY29sOiBhbnkpIHtcclxuICAgIGNvbnN0IGFsbFZpc2libGUgPSBjb2wuY2hpbGRyZW4uZXZlcnkoKGNoaWxkOiBhbnkpID0+IGNoaWxkLmlzX3Zpc2libGUpO1xyXG4gICAgY29sLmNoaWxkcmVuLmZvckVhY2goKGNoaWxkOiBhbnkpID0+IChjaGlsZC5pc192aXNpYmxlID0gIWFsbFZpc2libGUpKTtcclxuICAgIGNvbnN0IHNlbmREYXRhID0ge1xyXG4gICAgICBjb2x1bW5zOiB0aGlzLmNsZWFuQ29sdW1ucyh0aGlzLmNvbHVtbnMpLFxyXG4gICAgICBmaWx0ZXJzOiB0aGlzLmNsZWFuRmlsdGVyZENvbHVtbnMoKSxcclxuICAgICAgbm9fb2ZfcmVjb3JkczogdGhpcy5wYWdpbmF0aW9uQ29uZmlnLnBhZ2VTaXplLFxyXG4gICAgICB0eXBlOiB0aGlzLnRhYmxlVHlwZSxcclxuICAgIH07XHJcbiAgICB0aGlzLmNyZWF0ZVVwZGF0ZUNvbmZpZ0xpc3RpbmcuZW1pdChzZW5kRGF0YSk7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy51cGRhdGVDb2x1bW5XaWR0aHNBbmRHcm91cHMoKTtcclxuICAgICAgdGhpcy5yZWZyZXNoUHJldmlld0NvbHVtbnMoKTtcclxuICAgICAgdGhpcy5TZXRDb2x1bW5zRGVmYXVsdFdpZHRoKCk7XHJcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH0sIDEwKTtcclxuICB9XHJcblxyXG4gIGlzQ29sdW1uVmlzaWJsZShjb2x1bW5zOiBhbnkpIHtcclxuICAgIGlmIChjb2x1bW5zPy5jaGlsZHJlbikge1xyXG4gICAgICByZXR1cm4gY29sdW1ucy5jaGlsZHJlbi5ldmVyeSgoZWxlbWVudDogYW55KSA9PiBlbGVtZW50LmlzX3Zpc2libGUpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBjb2x1bW5zPy5pc192aXNpYmxlO1xyXG4gIH1cclxuXHJcbiAgYWxsQ29sdW1uc1NlbGVjdGVkKCk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgZmxhdHRlbiA9IHRoaXMuZmxhdHRlbkNvbHVtbnModGhpcy5jb2x1bW5zKTtcclxuICAgIHJldHVybiBmbGF0dGVuLmV2ZXJ5KChjb2wpID0+IGNvbC5pc192aXNpYmxlKTtcclxuICB9XHJcblxyXG5cclxuICBwcml2YXRlIGZpbmRDb2x1bW5CeUZpZWxkKGZpZWxkOiBzdHJpbmcsIGNvbHM6IGFueVtdKTogYW55IHwgbnVsbCB7XHJcbiAgICBmb3IgKGNvbnN0IGNvbCBvZiBjb2xzKSB7XHJcbiAgICAgIGlmIChjb2wuZmllbGQgPT09IGZpZWxkKSB7XHJcbiAgICAgICAgcmV0dXJuIGNvbDtcclxuICAgICAgfVxyXG4gICAgICBpZiAoY29sLmNoaWxkcmVuICYmIEFycmF5LmlzQXJyYXkoY29sLmNoaWxkcmVuKSkge1xyXG4gICAgICAgIGNvbnN0IGZvdW5kID0gdGhpcy5maW5kQ29sdW1uQnlGaWVsZChmaWVsZCwgY29sLmNoaWxkcmVuKTtcclxuICAgICAgICBpZiAoZm91bmQpIHJldHVybiBmb3VuZDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuXHJcblxyXG4gIGFzeW5jIHRvZ2dsZUNvbHVtblZpc2liaWxpdHkoY29sdW1uOiBhbnksIGlzVmlzaWJsZTogYm9vbGVhbikge1xyXG4gICAgaWYgKGlzVmlzaWJsZSkge1xyXG4gICAgICBpZiAodGhpcy52aXNpYmxlQ29sdW1ucygpPy5sZW5ndGggPD0gMiAmJiBjb2x1bW4uaXNfdmlzaWJsZSkge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY29uc3QgY29sID0gdGhpcy5maW5kQ29sdW1uQnlGaWVsZChjb2x1bW4uZmllbGQsIHRoaXMuY29sdW1ucyk7XHJcbiAgICBpZiAoY29sKSB7XHJcbiAgICAgIGNvbC5pc192aXNpYmxlID0gaXNWaXNpYmxlO1xyXG4gICAgfVxyXG4gICAgYXdhaXQgdGhpcy5yZWZyZXNoSGVhZGVycygpO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgY29uc3Qgc2VuZERhdGEgPSB7XHJcbiAgICAgIGNvbHVtbnM6IHRoaXMuY2xlYW5Db2x1bW5zKHRoaXMuY29sdW1ucyksXHJcbiAgICAgIGZpbHRlcnM6IHRoaXMuY2xlYW5GaWx0ZXJkQ29sdW1ucygpLFxyXG4gICAgICBub19vZl9yZWNvcmRzOiB0aGlzLnBhZ2luYXRpb25Db25maWcucGFnZVNpemUsXHJcbiAgICAgIHR5cGU6IHRoaXMudGFibGVUeXBlLFxyXG4gICAgfTtcclxuICAgIHRoaXMuY3JlYXRlVXBkYXRlQ29uZmlnTGlzdGluZy5lbWl0KHNlbmREYXRhKTtcclxuICAgIGlmICh0aGlzLnRhYmxlRmlsdGVyVmlld0lkKSB7XHJcbiAgICAgIHRoaXMuc2F2ZVByZXNldCgnbW91c2VVcCcpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIHRvZ2dsZUFsbENvbHVtbnNWaXNpYmlsaXR5KCk6IHZvaWQge1xyXG4gICAgY29uc3QgZmxhdHRlbiA9IHRoaXMuZmxhdHRlbkNvbHVtbnModGhpcy5jb2x1bW5zKTtcclxuICAgIGNvbnN0IHZpc2libGVDb2x1bW5zID0gZmxhdHRlbi5maWx0ZXIoKGM6IGFueSkgPT4gYy5pc192aXNpYmxlKTtcclxuICAgIGNvbnN0IGFsbFNlbGVjdGVkID0gdmlzaWJsZUNvbHVtbnMubGVuZ3RoID09PSBmbGF0dGVuLmxlbmd0aDtcclxuICAgIGlmIChhbGxTZWxlY3RlZCkge1xyXG4gICAgICBmbGF0dGVuLmZvckVhY2goKGNvbDogYW55LCBpbmRleDogbnVtYmVyKSA9PiB7XHJcbiAgICAgICAgY29sLmlzX3Zpc2libGUgPSBpbmRleCA8IDI7XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgZmxhdHRlbi5mb3JFYWNoKChjb2w6IGFueSkgPT4gKGNvbC5pc192aXNpYmxlID0gdHJ1ZSkpO1xyXG4gICAgfVxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMudXBkYXRlQ29sdW1uV2lkdGhzQW5kR3JvdXBzKCk7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMucmVmcmVzaFByZXZpZXdDb2x1bW5zKCk7XHJcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB9LCAxMDApO1xyXG4gICAgfSwgMTAwKTtcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGNvbnN0IHNlbmREYXRhID0ge1xyXG4gICAgICAgIGNvbHVtbnM6IHRoaXMuY2xlYW5Db2x1bW5zKHRoaXMuY29sdW1ucyksXHJcbiAgICAgICAgZmlsdGVyczogdGhpcy5jbGVhbkZpbHRlcmRDb2x1bW5zKCksXHJcbiAgICAgICAgbm9fb2ZfcmVjb3JkczogdGhpcy5wYWdpbmF0aW9uQ29uZmlnLnBhZ2VTaXplLFxyXG4gICAgICAgIHR5cGU6IHRoaXMudGFibGVUeXBlLFxyXG4gICAgICB9O1xyXG4gICAgICB0aGlzLmNyZWF0ZVVwZGF0ZUNvbmZpZ0xpc3RpbmcuZW1pdChzZW5kRGF0YSk7XHJcbiAgICB9LCA1MDApO1xyXG4gIH1cclxuXHJcbiAgdmlzaWJsZUNvbHVtbnMoKSB7XHJcbiAgICBjb25zdCBmbGF0dGVuID0gdGhpcy5mbGF0dGVuQ29sdW1ucyh0aGlzLmNvbHVtbnMpO1xyXG4gICAgY29uc3QgdmlzaWJsZUNvbHVtbnMgPSBmbGF0dGVuLmZpbHRlcigoYzogYW55KSA9PiBjLmlzX3Zpc2libGUpO1xyXG4gICAgcmV0dXJuIHZpc2libGVDb2x1bW5zO1xyXG4gIH1cclxuXHJcbiAgZmxhdHRlbkNvbHVtbnMoY29sczogYW55W10pOiBhbnlbXSB7XHJcbiAgICByZXR1cm4gY29scy5yZWR1Y2UoKGFjYzogYW55W10sIGNvbDogYW55KSA9PiB7XHJcbiAgICAgIGlmIChjb2w/LmNoaWxkcmVuICYmIGNvbC5jaGlsZHJlbi5sZW5ndGgpIHtcclxuICAgICAgICAvLyByZWN1cnNpdmVseSBmbGF0dGVuIGNoaWxkcmVuXHJcbiAgICAgICAgcmV0dXJuIGFjYy5jb25jYXQodGhpcy5mbGF0dGVuQ29sdW1ucyhjb2wuY2hpbGRyZW4pKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICAvLyBsZWFmIGNvbHVtblxyXG4gICAgICAgIHJldHVybiBhY2MuY29uY2F0KGNvbCk7XHJcbiAgICAgIH1cclxuICAgIH0sIFtdKTtcclxuICB9XHJcblxyXG5cclxuICBmaWx0ZXJlZENvbHVtbnMoY29sczogYW55W10pOiBhbnlbXSB7XHJcbiAgICBjb25zdCBzZWFyY2ggPSB0aGlzLmNvbHVtblNlYXJjaC50b0xvd2VyQ2FzZSgpO1xyXG4gICAgcmV0dXJuIGNvbHNcclxuICAgICAgLm1hcCgoY29sKSA9PiB7XHJcbiAgICAgICAgaWYgKGNvbC5jaGlsZHJlbikge1xyXG4gICAgICAgICAgY29uc3QgZmlsdGVyZWRDaGlsZHJlbiA9IHRoaXMuZmlsdGVyZWRDb2x1bW5zKGNvbC5jaGlsZHJlbik7XHJcbiAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgIGNvbC5oZWFkZXIudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhzZWFyY2gpIHx8XHJcbiAgICAgICAgICAgIGZpbHRlcmVkQ2hpbGRyZW4ubGVuZ3RoXHJcbiAgICAgICAgICApIHtcclxuICAgICAgICAgICAgcmV0dXJuIHsgLi4uY29sLCBjaGlsZHJlbjogZmlsdGVyZWRDaGlsZHJlbiB9O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHJldHVybiBjb2wuaGVhZGVyLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc2VhcmNoKSA/IGNvbCA6IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgICAuZmlsdGVyKEJvb2xlYW4pO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGFjY29yZGlvblN0YXRlKCk6ICdhbGwnIHwgJ25vbmUnIHwgJ3NvbWUnIHtcclxuICAgIGNvbnN0IGdyb3VwcyA9IHRoaXMuZ2V0QWxsR3JvdXBDb2x1bW5zKHRoaXMuY29sdW1ucyk7XHJcbiAgICBjb25zdCBleHBhbmRlZENvdW50ID0gZ3JvdXBzLmZpbHRlcigoY29sKSA9PiBjb2wuZXhwYW5kZWQpLmxlbmd0aDtcclxuXHJcbiAgICBpZiAoZXhwYW5kZWRDb3VudCA9PT0gMCkgcmV0dXJuICdub25lJztcclxuICAgIGlmIChleHBhbmRlZENvdW50ID09PSBncm91cHMubGVuZ3RoKSByZXR1cm4gJ2FsbCc7XHJcbiAgICByZXR1cm4gJ3NvbWUnO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGZpbHRlckFjY29yZGlvblN0YXRlKCk6ICdhbGwnIHwgJ25vbmUnIHwgJ3NvbWUnIHtcclxuICAgIGNvbnN0IGdyb3VwcyA9IHRoaXMuZ2V0QWxsR3JvdXBDb2x1bW5zKHRoaXMuY29sdW1ucyk7XHJcbiAgICBjb25zdCBleHBhbmRlZENvdW50ID0gZ3JvdXBzLmZpbHRlcigoY29sKSA9PiBjb2wuZXhwYW5kZWRGaWx0ZXIpLmxlbmd0aDtcclxuXHJcbiAgICBpZiAoZXhwYW5kZWRDb3VudCA9PT0gMCkgcmV0dXJuICdub25lJztcclxuICAgIGlmIChleHBhbmRlZENvdW50ID09PSBncm91cHMubGVuZ3RoKSByZXR1cm4gJ2FsbCc7XHJcbiAgICByZXR1cm4gJ3NvbWUnO1xyXG4gIH1cclxuXHJcbiAgLy8gUmVjdXJzaXZlbHkgY29sbGVjdCBhbGwgZ3JvdXAgY29sdW1uc1xyXG4gIHByaXZhdGUgZ2V0QWxsR3JvdXBDb2x1bW5zKGNvbHM6IGFueVtdKTogYW55W10ge1xyXG4gICAgbGV0IGdyb3VwczogYW55W10gPSBbXTtcclxuICAgIGZvciAoY29uc3QgY29sIG9mIGNvbHMpIHtcclxuICAgICAgaWYgKGNvbC5jaGlsZHJlbj8ubGVuZ3RoKSB7XHJcbiAgICAgICAgZ3JvdXBzLnB1c2goY29sKTtcclxuICAgICAgICBncm91cHMgPSBncm91cHMuY29uY2F0KHRoaXMuZ2V0QWxsR3JvdXBDb2x1bW5zKGNvbC5jaGlsZHJlbikpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZ3JvdXBzO1xyXG4gIH1cclxuXHJcbiAgLy8gVG9nZ2xlIGJhc2VkIG9uIGN1cnJlbnQgc3RhdGVcclxuICB0b2dnbGVBbGxBY2NvcmRpb25zKCk6IHZvaWQge1xyXG4gICAgY29uc3QgbmV4dFN0YXRlID0gdGhpcy5hY2NvcmRpb25TdGF0ZSA9PT0gJ2FsbCcgPyBmYWxzZSA6IHRydWU7XHJcbiAgICB0aGlzLnNldEFjY29yZGlvblN0YXRlKHRoaXMuY29sdW1ucywgbmV4dFN0YXRlKTtcclxuICB9XHJcblxyXG4gIHRvZ2dsZUFsbEZpbHRlckFjY29yZGlvbnMoKTogdm9pZCB7XHJcbiAgICBjb25zdCBuZXh0U3RhdGUgPSB0aGlzLmZpbHRlckFjY29yZGlvblN0YXRlID09PSAnYWxsJyA/IGZhbHNlIDogdHJ1ZTtcclxuICAgIHRoaXMuc2V0RmlsdGVyQWNjb3JkaW9uU3RhdGUodGhpcy5jb2x1bW5zLCBuZXh0U3RhdGUpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRBY2NvcmRpb25TdGF0ZShjb2xzOiBhbnlbXSwgc3RhdGU6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIGZvciAobGV0IGNvbCBvZiBjb2xzKSB7XHJcbiAgICAgIGlmIChjb2wuY2hpbGRyZW4/Lmxlbmd0aCkge1xyXG4gICAgICAgIGNvbC5leHBhbmRlZCA9IHN0YXRlO1xyXG4gICAgICAgIHRoaXMuc2V0QWNjb3JkaW9uU3RhdGUoY29sLmNoaWxkcmVuLCBzdGF0ZSk7IC8vIFJlY3Vyc2l2ZWx5IGhhbmRsZSBuZXN0ZWRcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuICBwcml2YXRlIHNldEZpbHRlckFjY29yZGlvblN0YXRlKGNvbHM6IGFueVtdLCBzdGF0ZTogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgZm9yIChsZXQgY29sIG9mIGNvbHMpIHtcclxuICAgICAgaWYgKGNvbC5jaGlsZHJlbj8ubGVuZ3RoKSB7XHJcbiAgICAgICAgY29sLmV4cGFuZGVkRmlsdGVyID0gc3RhdGU7XHJcbiAgICAgICAgdGhpcy5zZXRGaWx0ZXJBY2NvcmRpb25TdGF0ZShjb2wuY2hpbGRyZW4sIHN0YXRlKTsgLy8gUmVjdXJzaXZlbHkgaGFuZGxlIG5lc3RlZFxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzaG93Q29sdW1uUGFuZWwgPSBmYWxzZTtcclxuXHJcbiAgY2xvc2VNb2RhbENvbHVtblBhbmVsKCkge1xyXG4gICAgdGhpcy5zaG93Q29sdW1uUGFuZWwgPSBmYWxzZTtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmtleWRvd24uZXNjYXBlJywgWyckZXZlbnQnXSlcclxuICBvbkVzY2FwZShldmVudDogRXZlbnQpIHtcclxuICAgIHRoaXMuY2xvc2VNb2RhbENvbHVtblBhbmVsKCk7XHJcbiAgfVxyXG5cclxuICAvLyBDaGVjayBJZiAgQW55IGNvbHVtbiBoYXZlIHJpZ2h0IHBpbm5lZFxyXG4gIGdldCBoYXNSaWdodFBpbm5lZENvbHVtbnMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5jb21tb25TZXZpY2UuZ2V0aGFzUmlnaHRQaW5uZWRDb2x1bW5zKHRoaXMuY29sdW1ucyk7XHJcbiAgfVxyXG5cclxuICBnZXQgaGFzTGVmdFBpbm5lZENvbHVtbnMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5jb21tb25TZXZpY2UuZ2V0aGFzTGVmdFBpbm5lZENvbHVtbnModGhpcy5jb2x1bW5zKTtcclxuICB9XHJcblxyXG4gIGdldCBkYXRhU2V0TGVuZ3RoKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuY29tbW9uU2V2aWNlLmdldEV4cGFuZGVkUm93Q291bnQodGhpcy5kYXRhU2V0KTtcclxuICB9XHJcblxyXG5cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OnJlc2l6ZScsIFsnJGV2ZW50J10pXHJcbiAgb25SZXNpemUoZXZlbnQ6IFVJRXZlbnQpIHtcclxuICAgIGlmICghdGhpcy5jdXJyZXRhVGFibGVQcmVzZXRGb3JVcGRhdGUpIHRoaXMuYXV0b1NpemVDb2x1bW5zQnlSYXRpbygpO1xyXG4gICAgY29uc3QgaCA9IHRoaXMubWFpblNjcm9sbD8ubmF0aXZlRWxlbWVudD8uY2xpZW50SGVpZ2h0ID8/IDA7XHJcbiAgICB0aGlzLnZpZXdwb3J0Um93cyA9IE1hdGgubWF4KDEsIE1hdGguY2VpbChoIC8gdGhpcy5yb3dIZWlnaHQpKTtcclxuICAgIHRoaXMudXBkYXRlVmlzaWJsZVJvd3ModGhpcy5tYWluU2Nyb2xsPy5uYXRpdmVFbGVtZW50Py5zY3JvbGxUb3ApO1xyXG4gICAgdGhpcy5oYXNTY3JvbGwgPSB0aGlzLmhhc0hvcml6b250YWxTY3JvbGxiYXIoKTtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4geyB9LCAxMDApO1xyXG4gIH1cclxuXHJcbiAgYXV0b1NpemVDb2x1bW5zQnlSYXRpbygpOiB2b2lkIHtcclxuICAgIHRoaXMuYWN0aXZlQ29sID0gbnVsbDtcclxuXHJcbiAgICBjb25zdCBnZXRWaXNpYmxlTGVhZkNvbHVtbnMgPSAoY29sdW1uczogYW55W10pOiBhbnlbXSA9PiB7XHJcbiAgICAgIGNvbnN0IHJlc3VsdDogYW55W10gPSBbXTtcclxuXHJcbiAgICAgIGZvciAoY29uc3QgY29sdW1uIG9mIGNvbHVtbnMpIHtcclxuICAgICAgICBpZiAoY29sdW1uLmNoaWxkcmVuICYmIEFycmF5LmlzQXJyYXkoY29sdW1uLmNoaWxkcmVuKSkge1xyXG4gICAgICAgICAgcmVzdWx0LnB1c2goLi4uZ2V0VmlzaWJsZUxlYWZDb2x1bW5zKGNvbHVtbi5jaGlsZHJlbikpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoY29sdW1uLmlzX3Zpc2libGUgIT09IGZhbHNlKSB7XHJcbiAgICAgICAgICByZXN1bHQucHVzaChjb2x1bW4pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCB2aXNpYmxlQ29sdW1ucyA9IGdldFZpc2libGVMZWFmQ29sdW1ucyh0aGlzLmNvbHVtbnMpO1xyXG5cclxuICAgIGlmICh2aXNpYmxlQ29sdW1ucy5sZW5ndGggPT09IDApIHJldHVybjtcclxuICAgIGxldCBjb250YWluZXJXaWR0aCA9XHJcbiAgICAgIHRoaXMuZGF0YUdyaWRDb250YWluZXI/Lm5hdGl2ZUVsZW1lbnQ/Lm9mZnNldFdpZHRoID8/IDA7XHJcblxyXG4gICAgaWYgKHRoaXMuc2hvd1NlcmlhbE51bWJlcikgY29udGFpbmVyV2lkdGggLT0gNTU7XHJcbiAgICBpZiAodGhpcy5zaG93U2lkZU1lbnUpIGNvbnRhaW5lcldpZHRoIC09IDI5O1xyXG4gICAgaWYgKHRoaXMuZ3JpZFR5cGUgPT0gJ0Fzc2V0cycgfHwgdGhpcy5ncmlkVHlwZSA9PSAnVGFza3MnKVxyXG4gICAgICBjb250YWluZXJXaWR0aCAtPSAzMDtcclxuICAgIGNvbnRhaW5lcldpZHRoIC09IDU1O1xyXG4gICAgY29uc3QgdG90YWxPbGRXaWR0aCA9IHZpc2libGVDb2x1bW5zLnJlZHVjZShcclxuICAgICAgKHN1bSwgY29sKSA9PiBzdW0gKyAoY29sLndpZHRoIHx8IDApLFxyXG4gICAgICAwXHJcbiAgICApO1xyXG4gICAgaWYgKHRvdGFsT2xkV2lkdGggPT09IDApIHJldHVybjtcclxuICAgIHZpc2libGVDb2x1bW5zLmZvckVhY2goKGNvbCkgPT4ge1xyXG4gICAgICBjb25zdCByYXRpbyA9IGNvbC53aWR0aCAvIHRvdGFsT2xkV2lkdGg7XHJcbiAgICAgIGNvbnN0IG5ld1dpZHRoID0gTWF0aC5tYXgoTWF0aC5mbG9vcihjb250YWluZXJXaWR0aCAqIHJhdGlvKSwgMTAwKTtcclxuICAgICAgY29sLndpZHRoID0gbmV3V2lkdGg7XHJcbiAgICAgIHRoaXMudXBkYXRlQ29sdW1uV2lkdGhJblNvdXJjZUJ5RmllbGQoY29sLmZpZWxkLCBuZXdXaWR0aCk7XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLnJlZnJlc2hIZWFkZXJzKCk7XHJcbiAgICB0aGlzLmhhc1Njcm9sbCA9IHRoaXMuaGFzSG9yaXpvbnRhbFNjcm9sbGJhcigpO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGNvbnN0IHNlbmREYXRhID0ge1xyXG4gICAgICAgIGNvbHVtbnM6IHRoaXMuY2xlYW5Db2x1bW5zKHRoaXMuY29sdW1ucyksXHJcbiAgICAgICAgZmlsdGVyczogdGhpcy5jbGVhbkZpbHRlcmRDb2x1bW5zKCksXHJcbiAgICAgICAgbm9fb2ZfcmVjb3JkczogdGhpcy5wYWdpbmF0aW9uQ29uZmlnLnBhZ2VTaXplLFxyXG4gICAgICAgIHR5cGU6IHRoaXMudGFibGVUeXBlLFxyXG4gICAgICB9O1xyXG4gICAgICB0aGlzLmNyZWF0ZVVwZGF0ZUNvbmZpZ0xpc3RpbmcuZW1pdChzZW5kRGF0YSk7XHJcbiAgICB9LCA0MDApO1xyXG4gIH1cclxuXHJcblxyXG4gIGFzeW5jIHJlZnJlc2hIZWFkZXJzKCkge1xyXG4gICAgdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoYXN5bmMgKCkgPT4ge1xyXG4gICAgICBhd2FpdCBuZXcgUHJvbWlzZShyID0+IHNldFRpbWVvdXQociwgMCkpO1xyXG4gICAgICBhd2FpdCB0aGlzLnVwZGF0ZUNvbHVtbldpZHRoc0FuZEdyb3VwcygpO1xyXG4gICAgICBhd2FpdCB0aGlzLnJlZnJlc2hQcmV2aWV3Q29sdW1ucygpO1xyXG5cclxuICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGdldCBoYXNBbnlWaXNpYmxlQ29sdW1uKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuY29tbW9uU2V2aWNlLmdldGhhc1Zpc2libGVDb2x1bW5zKHRoaXMuY29sdW1ucyk7XHJcbiAgfVxyXG5cclxuICBnZXQgaGFzQW55SW5WaXNpYmxlQ29sdW1uKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuY29tbW9uU2V2aWNlLmdldGhhc0luVmlzaWJsZUNvbHVtbnModGhpcy5jb2x1bW5zKTtcclxuICB9XHJcblxyXG4gIGdldCBjb2x1bW5zQ291bnQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5jb21tb25TZXZpY2UuZ2V0VG90YWxDb2x1bW5zTGVuZ3RoKHRoaXMuY29sdW1ucyk7XHJcbiAgfVxyXG5cclxuICB0YWJsZUhlYWRlckFuZEJvZHlIZWlnaHQoKSB7XHJcbiAgICByZXR1cm4gYGNhbGMoMTAwJSAtICR7dGhpcy5mb290ZXJSb3dIZWlnaHR9KWA7XHJcbiAgfVxyXG5cclxuICBkcmFnZ2luZ0luR3JvdXBBcmVhID0gZmFsc2U7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2NlbnRlclNjcm9sbCcpIGNlbnRlclNjcm9sbCE6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xyXG4gIHZpc2libGVSb3dDb3VudCA9IDI1O1xyXG4gIHN0YXJ0SW5kZXggPSAwO1xyXG4gIHZpc2libGVSb3dzOiBhbnlbXSA9IFtdO1xyXG5cclxuICBwcml2YXRlIGZsYXR0ZW5Hcm91cGVkUm93cyhcclxuICAgIHJvd3M6IGFueVtdID0gW10sXHJcbiAgICBsZXZlbCA9IDAsXHJcbiAgICByZXN1bHQ6IGFueVtdID0gW11cclxuICApOiBhbnlbXSB7XHJcbiAgICBmb3IgKGNvbnN0IHJvdyBvZiByb3dzKSB7XHJcbiAgICAgIHJlc3VsdC5wdXNoKHsgLi4ucm93LCBfX2RlcHRoOiBsZXZlbCB9KTtcclxuICAgICAgaWYgKHJvdy5pc0dyb3VwICYmIHJvdy5pc0V4cGFuZCAmJiByb3cuY2hpbGRyZW4/Lmxlbmd0aCkge1xyXG4gICAgICAgIHRoaXMuZmxhdHRlbkdyb3VwZWRSb3dzKHJvdy5jaGlsZHJlbiwgbGV2ZWwgKyAxLCBbXSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMuYXNzaWduVmlydHVhbEluZGV4ZXModGhpcy52aXNpYmxlUm93cyk7XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH1cclxuXHJcbiAgYXNzaWduVmlydHVhbEluZGV4ZXMoZGF0YTogYW55W10pOiBhbnlbXSB7XHJcbiAgICBsZXQgY3VycmVudEluZGV4ID0gMTtcclxuICAgIGNvbnN0IHdhbGsgPSAoaXRlbXM6IGFueVtdKTogdm9pZCA9PiB7XHJcbiAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBpdGVtcykge1xyXG4gICAgICAgIGl0ZW0uX192aXJ0dWFsSW5kZXggPSBjdXJyZW50SW5kZXgrKztcclxuICAgICAgICBpZiAoaXRlbT8uaXNHcm91cCkge1xyXG4gICAgICAgICAgY29uc3QgZ3JvdXAgPSBpdGVtO1xyXG4gICAgICAgICAgaWYgKGdyb3VwLmlzRXhwYW5kICYmIEFycmF5LmlzQXJyYXkoZ3JvdXAuY2hpbGRyZW4pKSB7XHJcbiAgICAgICAgICAgIHdhbGsoZ3JvdXAuY2hpbGRyZW4pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfTtcclxuICAgIHdhbGsoZGF0YSk7XHJcbiAgICAvLyBjb25zb2xlLmxvZygnVGhpcyBkYXRhc2V0OiAnLCB0aGlzLnZpc2libGVSb3dzKVxyXG4gICAgcmV0dXJuIGRhdGE7XHJcbiAgfVxyXG5cclxuXHJcbiAgdXBkYXRlVmlzaWJsZVJvd3Moc2Nyb2xsVG9wOiBudW1iZXIpIHtcclxuXHJcbiAgICBpZiAodGhpcy5ncm91cGVkQ29sdW1ucz8ubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMudmlzaWJsZVJvd3MgPSB0aGlzLmRhdGFTZXQ7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IGZsYXREYXRhID0gdGhpcy5mbGF0dGVuR3JvdXBlZFJvd3ModGhpcy5kYXRhU2V0KTtcclxuXHJcbiAgICBpZiAodGhpcy5kYXRhU2V0Py5sZW5ndGggPD0gMTUpIHtcclxuICAgICAgdGhpcy52aXNpYmxlUm93cyA9IGZsYXREYXRhO1xyXG4gICAgICB0aGlzLmZpcnN0SW5kZXggPSAwO1xyXG4gICAgICB0aGlzLnN0YXJ0SW5kZXggPSAwO1xyXG4gICAgICB0aGlzLnJlbmRlclN0YXJ0ID0gMDtcclxuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCB0b3RhbCA9IGZsYXREYXRhLmxlbmd0aDtcclxuICAgIGNvbnN0IG1heEZpcnN0ID0gTWF0aC5tYXgoMCwgdG90YWwgLSB0aGlzLnZpZXdwb3J0Um93cyk7XHJcbiAgICBjb25zdCBmaXJzdCA9IE1hdGgubWluKE1hdGguZmxvb3Ioc2Nyb2xsVG9wIC8gdGhpcy5yb3dIZWlnaHQpLCBtYXhGaXJzdCk7XHJcbiAgICBjb25zdCBzdGFydCA9IE1hdGgubWF4KDAsIGZpcnN0KTtcclxuICAgIGNvbnN0IGVuZCA9IE1hdGgubWluKHRvdGFsLCBmaXJzdCArIHRoaXMudmlld3BvcnRSb3dzKTtcclxuXHJcbiAgICB0aGlzLmZpcnN0SW5kZXggPSBmaXJzdDtcclxuICAgIHRoaXMuc3RhcnRJbmRleCA9IGZpcnN0O1xyXG4gICAgdGhpcy5yZW5kZXJTdGFydCA9IHN0YXJ0O1xyXG4gICAgdGhpcy52aXNpYmxlUm93cyA9IGZsYXREYXRhLnNsaWNlKHN0YXJ0LCBlbmQpO1xyXG4gICAgdGhpcy5hc3NpZ25WaXJ0dWFsSW5kZXhlcyh0aGlzLnZpc2libGVSb3dzKTtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG5cclxuICB0cmFja0J5UmVuZGVyZWRJbmRleCA9IChpOiBudW1iZXIsIF9yb3c6IGFueSkgPT4gdGhpcy5yZW5kZXJTdGFydCArIGk7XHJcblxyXG4gIHByaXZhdGUgaXNTeW5jaW5nRnJvbU1haW4gPSBmYWxzZTtcclxuICBwcml2YXRlIGlzU3luY2luZ0Zyb21GYWtlID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBtYWluU2Nyb2xsUmFmOiBudW1iZXIgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgdHJhY2tCeUlkKGluZGV4OiBudW1iZXIsIGl0ZW06IGFueSkge1xyXG4gICAgcmV0dXJuIGl0ZW0uaWQgfHwgaXRlbS5faWQ7XHJcbiAgfVxyXG5cclxuICBmbGF0dGVuZWREYXRhOiBhbnlbXSA9IFtdO1xyXG5cclxuICB1cGRhdGVGbGF0dGVuZWREYXRhKCk6IHZvaWQge1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuZmxhdHRlbmVkRGF0YSA9IHRoaXMuZmxhdHRlbkdyb3VwZWRSb3dzKHRoaXMuZGF0YVNldCk7XHJcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH0sIDEwKTtcclxuICB9XHJcblxyXG4gIC8vIHJlcXVlc3RBbmltYXRpb25GcmFtZSBJRHNcclxuICBwcml2YXRlIGZha2VTY3JvbGxSYWY6IG51bWJlciB8IG51bGwgPSBudWxsO1xyXG5cclxuXHJcbiAgLy8gb25NYWluU2Nyb2xsKGV2ZW50OiBFdmVudCkge1xyXG4gIC8vICAgdGhpcy5leHBhbmRlZENlbGxzLmNsZWFyKCk7XHJcbiAgLy8gICBjb25zdCBzY3JvbGxUb3AgPSAoZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50KS5zY3JvbGxUb3A7XHJcbiAgLy8gICAgIGlmICh0aGlzLmdyb3VwZWRDb2x1bW5zPy5sZW5ndGggPiAwKSB7XHJcbiAgLy8gICAgICAgdGhpcy5zdGFydEluZGV4ID0gMDtcclxuICAvLyAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgLy8gICAgICAgcmV0dXJuO1xyXG4gIC8vICAgICB9XHJcbiAgLy8gICAgIGNvbnN0IG92ZXJzY2FuID0gdGhpcy5vdmVyc2NhbiAqIDI7XHJcbiAgLy8gICAgIHRoaXMuc3RhcnRJbmRleCA9IE1hdGguZmxvb3Ioc2Nyb2xsVG9wIC8gdGhpcy5yb3dIZWlnaHQpO1xyXG4gIC8vICAgICBjb25zdCBzdGFydCA9IE1hdGgubWF4KDAsIHRoaXMuc3RhcnRJbmRleCAtIG92ZXJzY2FuKTtcclxuICAvLyAgICAgY29uc3QgZW5kID0gTWF0aC5taW4odGhpcy5mbGF0dGVuZWREYXRhLmxlbmd0aCwgdGhpcy5zdGFydEluZGV4ICsgdGhpcy52aWV3cG9ydFJvd3MgKyBvdmVyc2Nhbik7XHJcbiAgLy8gICAgIHRoaXMudmlzaWJsZVJvd3MgPSB0aGlzLmZsYXR0ZW5lZERhdGEuc2xpY2Uoc3RhcnQsIGVuZCk7XHJcbiAgLy8gICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAvLyB9XHJcbiAgdHJhbnNsYXRlWSA9IDA7XHJcblxyXG4gIGxhc3RTY3JvbGxUb3AgPSAwO1xyXG4gIHBlbmRpbmdBbmltYXRpb25GcmFtZTogbnVtYmVyIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIG9uTWFpblNjcm9sbChldmVudDogRXZlbnQpOiB2b2lkIHtcclxuICAgIGNvbnN0IHNjcm9sbFRvcCA9IChldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpLnNjcm9sbFRvcDtcclxuICAgIGlmIChNYXRoLmFicyhzY3JvbGxUb3AgLSB0aGlzLmxhc3RTY3JvbGxUb3ApIDwgKDEwKSkgcmV0dXJuO1xyXG4gICAgaWYgKHRoaXMucGVuZGluZ0FuaW1hdGlvbkZyYW1lKSBjYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLnBlbmRpbmdBbmltYXRpb25GcmFtZSk7XHJcbiAgICBpZiAodGhpcy5ncm91cGVkQ29sdW1ucz8ubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnN0YXJ0SW5kZXggPSAwO1xyXG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMucGVuZGluZ0FuaW1hdGlvbkZyYW1lID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcclxuICAgICAgY29uc3Qgc2Nyb2xsaW5nRG93biA9IHNjcm9sbFRvcCA+IHRoaXMubGFzdFNjcm9sbFRvcDtcclxuICAgICAgdGhpcy5sYXN0U2Nyb2xsVG9wID0gc2Nyb2xsVG9wO1xyXG5cclxuICAgICAgY29uc3Qgb3ZlcnNjYW4gPSA1O1xyXG4gICAgICBjb25zdCBuZXdTdGFydEluZGV4ID0gTWF0aC5mbG9vcihzY3JvbGxUb3AgLyB0aGlzLnJvd0hlaWdodCk7XHJcbiAgICAgIGNvbnN0IGR5bmFtaWNPdmVyc2NhbiA9IHNjcm9sbGluZ0Rvd24gPyBvdmVyc2NhbiA6IG92ZXJzY2FuO1xyXG5cclxuICAgICAgY29uc3Qgc3RhcnQgPSBNYXRoLm1heCgwLCBuZXdTdGFydEluZGV4IC0gZHluYW1pY092ZXJzY2FuKTtcclxuICAgICAgY29uc3QgZW5kID0gTWF0aC5taW4oXHJcbiAgICAgICAgdGhpcy5mbGF0dGVuZWREYXRhLmxlbmd0aCxcclxuICAgICAgICBuZXdTdGFydEluZGV4ICsgdGhpcy52aWV3cG9ydFJvd3MgKyBkeW5hbWljT3ZlcnNjYW5cclxuICAgICAgKTtcclxuICAgICAgdGhpcy50cmFuc2xhdGVZID0gc3RhcnQgKiB0aGlzLnJvd0hlaWdodDtcclxuICAgICAgaWYgKHRoaXMuc3RhcnRJbmRleCAhPT0gc3RhcnQgfHwgdGhpcy52aXNpYmxlUm93cy5sZW5ndGggIT09IGVuZCAtIHN0YXJ0KSB7XHJcbiAgICAgICAgdGhpcy5zdGFydEluZGV4ID0gc3RhcnQ7XHJcbiAgICAgICAgdGhpcy52aXNpYmxlUm93cyA9IHRoaXMuZGF0YVNldC5zbGljZShzdGFydCwgZW5kKTtcclxuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5wZW5kaW5nQW5pbWF0aW9uRnJhbWUgPSBudWxsO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuXHJcbiAgLy8gb25NYWluU2Nyb2xsKGV2ZW50OiBFdmVudCk6IHZvaWQge1xyXG4gIC8vICAgdGhpcy5leHBhbmRlZENlbGxzLmNsZWFyKCk7XHJcbiAgLy8gICBpZiAodGhpcy5pc1N5bmNpbmdGcm9tRmFrZSkge1xyXG4gIC8vICAgICB0aGlzLmlzU3luY2luZ0Zyb21GYWtlID0gZmFsc2U7XHJcbiAgLy8gICAgIHJldHVybjtcclxuICAvLyAgIH1cclxuICAvLyAgIGNvbnN0IHNjcm9sbFRvcCA9IChldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpLnNjcm9sbFRvcDtcclxuICAvLyAgIGlmIChNYXRoLmFicyhzY3JvbGxUb3AgLSB0aGlzLmxhc3RTY3JvbGxUb3ApIDwgdGhpcy5yb3dIZWlnaHQgLyAyKSByZXR1cm47XHJcbiAgLy8gICB0aGlzLmxhc3RTY3JvbGxUb3AgPSBzY3JvbGxUb3A7XHJcblxyXG4gIC8vICAgaWYgKHRoaXMuZmFrZVNjcm9sbFJhZikgY2FuY2VsQW5pbWF0aW9uRnJhbWUodGhpcy5mYWtlU2Nyb2xsUmFmKTtcclxuXHJcbiAgLy8gICB0aGlzLmZha2VTY3JvbGxSYWYgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xyXG4gIC8vICAgICBpZiAodGhpcy5ncm91cGVkQ29sdW1ucz8ubGVuZ3RoID4gMCkge1xyXG4gIC8vICAgICAgIHRoaXMuc3RhcnRJbmRleCA9IDA7XHJcbiAgLy8gICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIC8vICAgICAgIHJldHVybjtcclxuICAvLyAgICAgfVxyXG4gIC8vICAgICBjb25zdCBmbGF0RGF0YSA9IHRoaXMuZmxhdHRlbkdyb3VwZWRSb3dzKHRoaXMuZGF0YVNldCk7XHJcbiAgLy8gICAgIGNvbnN0IHRvdGFsUm93cyA9IGZsYXREYXRhLmxlbmd0aDtcclxuICAvLyAgICAgY29uc3QgbmV3U3RhcnRJbmRleCA9IE1hdGguZmxvb3Ioc2Nyb2xsVG9wIC8gdGhpcy5yb3dIZWlnaHQpO1xyXG4gIC8vICAgICBjb25zdCBzdGFydCA9IE1hdGgubWF4KDAsIG5ld1N0YXJ0SW5kZXggLSAodGhpcy5vdmVyc2NhbiAqIDIpKTtcclxuICAvLyAgICAgY29uc3QgZW5kID0gTWF0aC5taW4odG90YWxSb3dzLCBuZXdTdGFydEluZGV4ICsgdGhpcy52aWV3cG9ydFJvd3MgKyAodGhpcy5vdmVyc2NhbiAqIDIpKTtcclxuXHJcbiAgLy8gICAgIHRoaXMudHJhbnNsYXRlWSA9IHN0YXJ0ICogdGhpcy5yb3dIZWlnaHQ7XHJcbiAgLy8gICAgIHRoaXMuc3RhcnRJbmRleCA9IHN0YXJ0O1xyXG4gIC8vICAgICB0aGlzLnZpc2libGVSb3dzID0gZmxhdERhdGEuc2xpY2Uoc3RhcnQsIGVuZCk7XHJcbiAgLy8gICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAvLyAgIH0pO1xyXG4gIC8vIH1cclxuXHJcblxyXG4gIGdldCBpc1Njcm9sbGJhclZpc2libGUoKTogYm9vbGVhbiB7XHJcbiAgICBpZiAoIXRoaXMubWFpblNjcm9sbCkgcmV0dXJuIGZhbHNlO1xyXG4gICAgY29uc3QgZWwgPSB0aGlzLm1haW5TY3JvbGwubmF0aXZlRWxlbWVudDtcclxuICAgIHJldHVybiBlbC5zY3JvbGxIZWlnaHQgPiBlbC5jbGllbnRIZWlnaHQ7XHJcbiAgfVxyXG5cclxuICB0b2dnbGVFeHBhbmQocm93OiBhbnkpIHtcclxuICAgIGlmIChyb3cuZGV0YWlscykge1xyXG4gICAgICByb3cuaXNEZXRhaWxzRXhwYW5kID0gIXJvdy5pc0RldGFpbHNFeHBhbmQ7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByb3cuaXNFeHBhbmQgPSAhcm93LmlzRXhwYW5kO1xyXG4gICAgfVxyXG4gICAgdGhpcy5yb3dTZWxlY3RlZEluZGV4ZXMuY2xlYXIoKTtcclxuICAgIHRoaXMudXBkYXRlRmxhdHRlbmVkRGF0YSgpO1xyXG4gICAgLy8gdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgLy8gc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAvLyAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgIC8vIH0sIDEwMCk7XHJcbiAgfVxyXG5cclxuICAvLyBvbk1haW5GYWtlU2Nyb2xsKGV2ZW50OiBFdmVudCkge1xyXG4gIC8vICAgaWYgKHRoaXMuaXNTeW5jaW5nRnJvbU1haW4pIHtcclxuICAvLyAgICAgdGhpcy5pc1N5bmNpbmdGcm9tTWFpbiA9IGZhbHNlO1xyXG4gIC8vICAgICByZXR1cm47XHJcbiAgLy8gICB9XHJcbiAgLy8gICBpZiAodGhpcy5ncm91cGVkQ29sdW1ucz8ubGVuZ3RoID4gMCkge1xyXG4gIC8vICAgICB0aGlzLnN0YXJ0SW5kZXggPSAwO1xyXG4gIC8vICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgLy8gICAgIHJldHVybjtcclxuICAvLyAgIH1cclxuICAvLyAgIGNvbnN0IHNjcm9sbFRvcCA9IChldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpLnNjcm9sbFRvcDtcclxuICAvLyAgIGlmICh0aGlzLm1haW5TY3JvbGxSYWYpIGNhbmNlbEFuaW1hdGlvbkZyYW1lKHRoaXMubWFpblNjcm9sbFJhZik7XHJcbiAgLy8gICB0aGlzLm1haW5TY3JvbGxSYWYgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xyXG4gIC8vICAgICB0aGlzLmlzU3luY2luZ0Zyb21GYWtlID0gdHJ1ZTtcclxuICAvLyAgICAgdGhpcy5tYWluU2Nyb2xsLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wID0gc2Nyb2xsVG9wO1xyXG4gIC8vICAgICBjb25zdCBvdmVyc2NhbiA9IHRoaXMub3ZlcnNjYW4gPz8gMDtcclxuICAvLyAgICAgdGhpcy5zdGFydEluZGV4ID0gTWF0aC5mbG9vcihzY3JvbGxUb3AgLyB0aGlzLnJvd0hlaWdodCk7XHJcbiAgLy8gICAgIGNvbnN0IHN0YXJ0ID0gTWF0aC5tYXgoMCwgdGhpcy5zdGFydEluZGV4IC0gb3ZlcnNjYW4pO1xyXG4gIC8vICAgICBjb25zdCBlbmQgPSBNYXRoLm1pbihcclxuICAvLyAgICAgICB0aGlzLmZsYXR0ZW5lZERhdGEubGVuZ3RoLFxyXG4gIC8vICAgICAgIHRoaXMuc3RhcnRJbmRleCArIHRoaXMudmlld3BvcnRSb3dzICsgb3ZlcnNjYW5cclxuICAvLyAgICAgKTtcclxuICAvLyAgICAgdGhpcy52aXNpYmxlUm93cyA9IHRoaXMuZmxhdHRlbmVkRGF0YS5zbGljZShzdGFydCwgZW5kKTtcclxuICAvLyAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIC8vICAgfSk7XHJcbiAgLy8gfVxyXG5cclxuXHJcblxyXG5cclxuXHJcbiAgdmlld3BvcnRSb3dzID0gMDsgLy8gaG93IG1hbnkgcm93cyBmaXQgaW4gdmlld3BvcnQgKGNvbXB1dGVkKVxyXG4gIGZpcnN0SW5kZXggPSAwOyAvLyBpbmRleCBvZiB0aGUgZmlyc3QgdmlzaWJsZSByb3cgKGNsYW1wZWQpXHJcbiAgcmVuZGVyU3RhcnQgPSAwOyAvLyB3aGVyZSB0aGUgc2xpY2UgYWN0dWFsbHkgc3RhcnRzIChmaXJzdEluZGV4IC0gb3ZlcnNjYW4sIGNsYW1wZWQpXHJcblxyXG4gIHByaXZhdGUgc2Nyb2xsUmFmOiBudW1iZXIgfCBudWxsID0gbnVsbDtcclxuICBwcml2YXRlIHBlbmRpbmdTY3JvbGxUb3AgPSAwO1xyXG5cclxuICBAVmlld0NoaWxkKCdtYWluU2Nyb2xsJykgbWFpblNjcm9sbCE6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xyXG4gIEBWaWV3Q2hpbGQoJ2Zha2VTY3JvbGwnKSBmYWtlU2Nyb2xsITogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XHJcbiAgQFZpZXdDaGlsZCgnaG9yaXppbnRhbEZha2VTY3JvbGwnKVxyXG4gIGhvcml6aW50YWxGYWtlU2Nyb2xsITogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XHJcbiAgQFZpZXdDaGlsZCgnY2VudGVyU2Nyb2xsYWJsZUJvZHknKVxyXG4gIGNlbnRlclNjcm9sbGFibGVCb2R5ITogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XHJcbiAgcHJpdmF0ZSBvdmVyc2NhbiA9IDEwOyAvLyBidWZmZXIgcm93cyBhYm92ZSBhbmQgYmVsb3dcclxuXHJcbiAgY29tcHV0ZVZpZXdwb3J0Um93cygpIHtcclxuICAgIGlmICh0aGlzLmZha2VTY3JvbGw/Lm5hdGl2ZUVsZW1lbnQpIHtcclxuICAgICAgdGhpcy5mYWtlU2Nyb2xsLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wID0gMDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5tYWluU2Nyb2xsPy5uYXRpdmVFbGVtZW50KSB7XHJcbiAgICAgIHRoaXMubWFpblNjcm9sbC5uYXRpdmVFbGVtZW50LnNjcm9sbFRvcCA9IDA7XHJcbiAgICAgIGNvbnN0IGggPSB0aGlzLm1haW5TY3JvbGwubmF0aXZlRWxlbWVudC5jbGllbnRIZWlnaHQgPz8gMDtcclxuXHJcbiAgICAgIC8vIHJvd3MgdmlzaWJsZSBpbiB2aWV3cG9ydFxyXG4gICAgICBjb25zdCByb3dzSW5WaWV3cG9ydCA9IE1hdGgubWF4KDEsIE1hdGguY2VpbChoIC8gdGhpcy5yb3dIZWlnaHQpKTtcclxuXHJcbiAgICAgIC8vIGFkZCBidWZmZXIgcm93cyAob3ZlcnNjYW4pXHJcbiAgICAgIHRoaXMudmlld3BvcnRSb3dzID0gcm93c0luVmlld3BvcnQgKyB0aGlzLm92ZXJzY2FuO1xyXG5cclxuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIG9uSG9yaXpvbnRhbEZha2VTY3JvbGwoZXZlbnQ6IEV2ZW50KSB7XHJcbiAgICBjb25zdCBzY3JvbGxMZWZ0ID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudCkuc2Nyb2xsTGVmdDtcclxuICAgIHRoaXMuY2VudGVyUGlubmVkSGVhZGVyLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsTGVmdCA9IHNjcm9sbExlZnQ7XHJcbiAgICBpZiAodGhpcy5jZW50ZXJTY3JvbGxhYmxlQm9keT8ubmF0aXZlRWxlbWVudCkge1xyXG4gICAgICB0aGlzLmNlbnRlclNjcm9sbGFibGVCb2R5Lm5hdGl2ZUVsZW1lbnQuc2Nyb2xsTGVmdCA9IHNjcm9sbExlZnQ7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkNlbnRlckJvZHlTY3JvbGwoZXZlbnQ6IEV2ZW50KSB7XHJcbiAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICBpZiAodGhpcy5jZW50ZXJTY3JvbGxhYmxlQm9keT8ubmF0aXZlRWxlbWVudCkge1xyXG4gICAgICB0aGlzLmNlbnRlclNjcm9sbGFibGVCb2R5Lm5hdGl2ZUVsZW1lbnQuc2Nyb2xsTGVmdCA9IHRhcmdldC5zY3JvbGxMZWZ0O1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuY2VudGVyUGlubmVkSGVhZGVyKSB7XHJcbiAgICAgIHRoaXMuY2VudGVyUGlubmVkSGVhZGVyLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsTGVmdCA9IHRhcmdldC5zY3JvbGxMZWZ0O1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuaG9yaXppbnRhbEZha2VTY3JvbGw/Lm5hdGl2ZUVsZW1lbnQpIHtcclxuICAgICAgdGhpcy5ob3JpemludGFsRmFrZVNjcm9sbC5uYXRpdmVFbGVtZW50LnNjcm9sbExlZnQgPSB0YXJnZXQuc2Nyb2xsTGVmdDtcclxuICAgIH1cclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICB9XHJcblxyXG4gIG9uQ2VudGVySGVhZGVyU2Nyb2xsKGV2ZW50OiBFdmVudCkge1xyXG4gICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xyXG4gICAgaWYgKHRoaXMuaG9yaXppbnRhbEZha2VTY3JvbGw/Lm5hdGl2ZUVsZW1lbnQpIHtcclxuICAgICAgdGhpcy5ob3JpemludGFsRmFrZVNjcm9sbC5uYXRpdmVFbGVtZW50LnNjcm9sbExlZnQgPSB0YXJnZXQuc2Nyb2xsTGVmdDtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmNlbnRlclNjcm9sbGFibGVCb2R5Py5uYXRpdmVFbGVtZW50KSB7XHJcbiAgICAgIHRoaXMuY2VudGVyU2Nyb2xsYWJsZUJvZHkubmF0aXZlRWxlbWVudC5zY3JvbGxMZWZ0ID0gdGFyZ2V0LnNjcm9sbExlZnQ7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBEcmFnZ2luZyBMb2dpYyBpcyBpbXBsZW1lbnRlZCBoZXJlXHJcbiAgLy8gcHJpdmF0ZSBpbml0aWFsSW5kZXg6IG51bWJlciB8IG51bGwgPSBudWxsO1xyXG5cclxuICBkcmFnZ2luZ0NvbHVtbjogYW55O1xyXG4gIGRyYWdTdGFydEluZGV4OiBhbnkgPSAwO1xyXG4gIC8vIG9uRHJhZ1N0YXJ0KGRhdGE6IGFueSwgaW5kZXg6IG51bWJlcikge1xyXG4gIC8vICAgdGhpcy5kcmFnZ2luZ0NvbHVtbiA9IGRhdGEuY29sdW1uO1xyXG4gIC8vICAgdGhpcy5kcmFnU3RhcnRJbmRleCA9IGluZGV4O1xyXG4gIC8vIH1cclxuICAvLyBvbkRyYWdNb3ZlKGRhdGE6IGFueSkge1xyXG4gIC8vICAgY29uc3QgeyBjbGllbnRYLCBjbGllbnRZIH0gPSBkYXRhLmV2ZW50O1xyXG4gIC8vICAgY29uc3QgaGVhZGVycyA9IEFycmF5LmZyb20oXHJcbiAgLy8gICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5vbmUtcm93LWhlYWRlci1jZWxscycpXHJcbiAgLy8gICApIGFzIEhUTUxFbGVtZW50W107XHJcblxyXG4gIC8vICAgaGVhZGVycy5mb3JFYWNoKChoZWFkZXJFbCwgaWR4KSA9PiB7XHJcbiAgLy8gICAgIGNvbnN0IHJlY3QgPSBoZWFkZXJFbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuICAvLyAgICAgaWYgKFxyXG4gIC8vICAgICAgIGlkeCAhPT0gdGhpcy5kcmFnU3RhcnRJbmRleCAmJlxyXG4gIC8vICAgICAgIGNsaWVudFggPiByZWN0LmxlZnQgJiZcclxuICAvLyAgICAgICBjbGllbnRYIDwgcmVjdC5yaWdodCAmJlxyXG4gIC8vICAgICAgIGNsaWVudFkgPiByZWN0LnRvcCAmJlxyXG4gIC8vICAgICAgIGNsaWVudFkgPCByZWN0LmJvdHRvbVxyXG4gIC8vICAgICApIHtcclxuICAvLyAgICAgICBjb25zdCBvdGhlckluZGV4ID0gaWR4O1xyXG4gIC8vICAgICAgIGNvbnNvbGUubG9nKGAke3RoaXMuZHJhZ1N0YXJ0SW5kZXh9IC0tPiAke290aGVySW5kZXh9YCk7XHJcbiAgLy8gICAgICAgdGhpcy5zd2FwQ29sdW1uKHRoaXMuZHJhZ1N0YXJ0SW5kZXgsIG90aGVySW5kZXgpO1xyXG4gIC8vICAgICAgIGNvbnNvbGUubG9nKCdVcGRhdGVkIENvbHVtbnM6ICcsIHRoaXMuY29sdW1ucyk7XHJcbiAgLy8gICAgICAgdGhpcy5kcmFnU3RhcnRJbmRleCA9IG90aGVySW5kZXg7IC8vIHVwZGF0ZSBpbmRleFxyXG4gIC8vICAgICB9XHJcbiAgLy8gICB9KTtcclxuICAvLyB9XHJcblxyXG4gIC8vIHN3YXBDb2x1bW4ocHJldml1c0luZGV4OiBudW1iZXIsIGN1cnJlbnRJbmRleDogbnVtYmVyKSB7XHJcbiAgLy8gICBjb25zdCBjb2x1bW5zID0gc3RydWN0dXJlZENsb25lKHRoaXMuY29sdW1ucyk7XHJcbiAgLy8gICBjb25zdCBmbGF0dGVuQ29sdW1ucyA9IHRoaXMuZmxhdHRlbkNvbHVtbnMoY29sdW1ucyk7XHJcblxyXG4gIC8vICAgY29uc3QgdmlzaWJsZUZsYXR0ZW5Db2x1bW5zID0gZmxhdHRlbkNvbHVtbnMuZmlsdGVyKFxyXG4gIC8vICAgICAoY29sKSA9PiBjb2wuaXNfdmlzaWJsZVxyXG4gIC8vICAgKTtcclxuICAvLyAgIGNvbnN0IHByZXZpdXNDb2x1bW4gPSB2aXNpYmxlRmxhdHRlbkNvbHVtbnNbcHJldml1c0luZGV4XTtcclxuICAvLyAgIGNvbnN0IGN1cnJlbnRDb2x1bW4gPSB2aXNpYmxlRmxhdHRlbkNvbHVtbnNbY3VycmVudEluZGV4XTtcclxuXHJcbiAgLy8gICBjb25zb2xlLmxvZygnUHJldml1cyBDb2x1bW46ICcsIHByZXZpdXNDb2x1bW4pO1xyXG4gIC8vICAgY29uc29sZS5sb2coJ2N1cnJlbnQgY2x1bW46ICcsIGN1cnJlbnRDb2x1bW4pO1xyXG4gIC8vIH1cclxuXHJcbiAgLy8gb25EcmFnRW5kKGRhdGE6IGFueSkge1xyXG4gIC8vICAgdGhpcy5kcmFnZ2luZ0NvbHVtbiA9IG51bGw7XHJcbiAgLy8gICB0aGlzLmRyYWdTdGFydEluZGV4ID0gbnVsbDtcclxuICAvLyB9XHJcblxyXG4gIC8vIENESyBEUkFHIERST1AgTE9HSUMgR09FUyBIRVJFXHJcblxyXG5cclxuICBjYW5FbnRlclRvUm93c0dyb3VwaW5nID0gKGRyYWc6IENka0RyYWc8YW55PiwgZHJvcDogQ2RrRHJvcExpc3Q8YW55PikgPT4ge1xyXG4gICAgLy8gRXhhbXBsZTogQmxvY2sgaWYgYWxyZWFkeSBwaW5uZWQgbGVmdFxyXG4gICAgY29uc3QgZGF0YSA9IGRyYWcuZGF0YTtcclxuICAgIGlmIChkYXRhPy5jaGlsZHJlbiAmJiBkYXRhPy5jaGlsZHJlbi5sZW5ndGgpIHtcclxuICAgICAgcmV0dXJuIGRhdGEuY2hpbGRyZW4uc29tZShcclxuICAgICAgICAoY29sOiBhbnkpID0+IGNvbC5pc192aXNpYmxlICYmIGNvbC5pc19ncm91cGFibGVcclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIHJldHVybiBkYXRhLmlzX3Zpc2libGUgJiYgZGF0YS5pc19ncm91cGFibGU7XHJcbiAgfTtcclxuXHJcbiAgLy8gb25EcmFnTW92ZWQoZXZlbnQ6IENka0RyYWdNb3ZlPGFueT4pIHtcclxuICAvLyAgIGNvbnN0IHBvaW50ZXJYID0gZXZlbnQucG9pbnRlclBvc2l0aW9uLng7XHJcbiAgLy8gICBjb25zdCBwb2ludGVyWSA9IGV2ZW50LnBvaW50ZXJQb3NpdGlvbi55O1xyXG5cclxuICAvLyAgIGNvbnN0IHRhcmdldEVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcclxuICAvLyAgICAgJ3Jvd3MtZ3JvdXBpbmctdG9wLWNvbnRhaW5lcidcclxuICAvLyAgICk7XHJcblxyXG4gIC8vICAgaWYgKHRhcmdldEVsZW1lbnQpIHtcclxuICAvLyAgICAgY29uc3QgcmVjdCA9IHRhcmdldEVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcblxyXG4gIC8vICAgICBjb25zdCBpc092ZXJUYXJnZXQgPVxyXG4gIC8vICAgICAgIHBvaW50ZXJYID49IHJlY3QubGVmdCAmJlxyXG4gIC8vICAgICAgIHBvaW50ZXJYIDw9IHJlY3QucmlnaHQgJiZcclxuICAvLyAgICAgICBwb2ludGVyWSA+PSByZWN0LnRvcCAmJlxyXG4gIC8vICAgICAgIHBvaW50ZXJZIDw9IHJlY3QuYm90dG9tO1xyXG5cclxuICAvLyAgICAgaWYgKGlzT3ZlclRhcmdldCkge1xyXG4gIC8vICAgICAgIHRoaXMuZHJhZ2dpbmdJbkdyb3VwQXJlYSA9IHRydWU7XHJcbiAgLy8gICAgIH0gZWxzZSB7XHJcbiAgLy8gICAgICAgdGhpcy5kcmFnZ2luZ0luR3JvdXBBcmVhID0gZmFsc2U7XHJcbiAgLy8gICAgIH1cclxuICAvLyAgIH1cclxuICAvLyB9XHJcblxyXG4gIGVudGVyVG9Ub3BSb3dHcm91cGluZyhkcm9wTGlzdDogQ2RrRHJhZ0VudGVyPGFueT4pIHtcclxuICAgIGNvbnN0IGRyYWdnaW5nRGF0YSA9IGRyb3BMaXN0Lml0ZW0uZGF0YTtcclxuICAgIHRoaXMuZHJhZ2dpbmdJbkdyb3VwQXJlYSA9IHRydWU7XHJcbiAgICAvLyBjb25zb2xlLmxvZyhcIkRyYWdnaW5nIGluIGdyb3VwIGFyZWFcIilcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuXHJcbiAgICBpZiAoQXJyYXkuaXNBcnJheShkcmFnZ2luZ0RhdGE/LmNoaWxkcmVuKSkge1xyXG4gICAgICBjb25zdCB0YXJnZXRHcm91cCA9IHRoaXMuY29sdW1ucy5maW5kKFxyXG4gICAgICAgIChjb2wpID0+IGNvbC5oZWFkZXIgPT09IGRyYWdnaW5nRGF0YS5oZWFkZXJcclxuICAgICAgKTtcclxuICAgICAgaWYgKHRhcmdldEdyb3VwKSB7XHJcbiAgICAgICAgZHJhZ2dpbmdEYXRhLmNoaWxkcmVuLmZvckVhY2goKGRyYWdnZWRDaGlsZDogYW55KSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBtYXRjaGluZ0NoaWxkID0gdGFyZ2V0R3JvdXAuY2hpbGRyZW4uZmluZChcclxuICAgICAgICAgICAgKGNoaWxkOiBhbnkpID0+IGNoaWxkLmZpZWxkID09PSBkcmFnZ2VkQ2hpbGQuZmllbGRcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICBpZiAobWF0Y2hpbmdDaGlsZCkge1xyXG4gICAgICAgICAgICBtYXRjaGluZ0NoaWxkLmlzUm93R3JvdXBlZCA9ICEhbWF0Y2hpbmdDaGlsZC5pc19ncm91cGFibGU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAvLyBUcnkgZmluZGluZyBpdCBpbiB0b3AtbGV2ZWwgY29sdW1ucyBmaXJzdFxyXG4gICAgICBsZXQgdGFyZ2V0Q29sdW1uID0gdGhpcy5jb2x1bW5zLmZpbmQoXHJcbiAgICAgICAgKGNvbDogYW55KSA9PiBjb2wuZmllbGQgPT09IGRyYWdnaW5nRGF0YS5maWVsZFxyXG4gICAgICApO1xyXG5cclxuICAgICAgaWYgKHRhcmdldENvbHVtbikge1xyXG4gICAgICAgIHRhcmdldENvbHVtbi5pc1Jvd0dyb3VwZWQgPSAhIXRhcmdldENvbHVtbi5pc19ncm91cGFibGU7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgZm9yIChsZXQgZ3JvdXAgb2YgdGhpcy5jb2x1bW5zKSB7XHJcbiAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShncm91cC5jaGlsZHJlbikpIHtcclxuICAgICAgICAgICAgY29uc3QgbWF0Y2hpbmdDaGlsZCA9IGdyb3VwLmNoaWxkcmVuLmZpbmQoXHJcbiAgICAgICAgICAgICAgKGNoaWxkOiBhbnkpID0+IGNoaWxkLmZpZWxkID09PSBkcmFnZ2luZ0RhdGEuZmllbGRcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgaWYgKG1hdGNoaW5nQ2hpbGQpIHtcclxuICAgICAgICAgICAgICBtYXRjaGluZ0NoaWxkLmlzUm93R3JvdXBlZCA9ICEhbWF0Y2hpbmdDaGlsZC5pc19ncm91cGFibGU7XHJcbiAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyDinIUgUmVmcmVzaCBVSVxyXG4gICAgdGhpcy5yZWZyZXNoUHJldmlld0NvbHVtbnMoKTtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIG9uRHJvcExpc3RFbnRlcihcclxuICAgIGRyb3BMaXN0OiBDZGtEcmFnRW50ZXI8YW55PixcclxuICAgIHNlY3Rpb246ICdsZWZ0JyB8ICdjZW50ZXInIHwgJ3JpZ2h0J1xyXG4gICkge1xyXG4gICAgY29uc3QgZHJhZ2dpbmdEYXRhID0gZHJvcExpc3QuaXRlbS5kYXRhO1xyXG5cclxuICAgIGNvbnN0IHRhcmdldENvbHVtbjogYW55ID0gdGhpcy5jb2x1bW5zLmZpbmQoXHJcbiAgICAgIChjb2wpID0+IGNvbC5oZWFkZXIgPT0gZHJhZ2dpbmdEYXRhLmhlYWRlclxyXG4gICAgKTtcclxuXHJcbiAgICBpZiAoIXRhcmdldENvbHVtbikgcmV0dXJuO1xyXG5cclxuICAgIGlmIChcclxuICAgICAgQXJyYXkuaXNBcnJheShkcmFnZ2luZ0RhdGE/LmNoaWxkcmVuKSAmJlxyXG4gICAgICBBcnJheS5pc0FycmF5KHRhcmdldENvbHVtbj8uY2hpbGRyZW4pXHJcbiAgICApIHtcclxuICAgICAgZHJhZ2dpbmdEYXRhLmNoaWxkcmVuLmZvckVhY2goKGRyYWdnZWRDaGlsZDogYW55KSA9PiB7XHJcbiAgICAgICAgY29uc3QgbWF0Y2hpbmdDaGlsZCA9IHRhcmdldENvbHVtbi5jaGlsZHJlbi5maW5kKFxyXG4gICAgICAgICAgKGNoaWxkOiBhbnkpID0+IGNoaWxkLmZpZWxkID09PSBkcmFnZ2VkQ2hpbGQuZmllbGRcclxuICAgICAgICApO1xyXG4gICAgICAgIGlmIChtYXRjaGluZ0NoaWxkKSB7XHJcbiAgICAgICAgICBtYXRjaGluZ0NoaWxkLnBpbm5lZCA9IHNlY3Rpb24gPT09ICdjZW50ZXInID8gbnVsbCA6IHNlY3Rpb247XHJcbiAgICAgICAgICBtYXRjaGluZ0NoaWxkWydpc1Jvd0dyb3VwZWQnXSA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0YXJnZXRDb2x1bW4ucGlubmVkID0gc2VjdGlvbiA9PT0gJ2NlbnRlcicgPyBudWxsIDogc2VjdGlvbjtcclxuICAgICAgdGFyZ2V0Q29sdW1uWydpc1Jvd0dyb3VwZWQnXSA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMucmVmcmVzaFByZXZpZXdDb2x1bW5zKCk7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICAvLyBlbnRlclRvVG9wR3JvdXBpbmdSb3coZHJvcExpc3Q6IENka0RyYWdFbnRlcjxhbnk+KSB7XHJcbiAgLy8gICB0aGlzLnNob3VsZERpc2FibGVEcm9wbGlzdFNvcnRpbmcgPSB0aGlzLmlzRGlzYWJsZUNvbHVtbkdyb3VwaW5nO1xyXG4gIC8vICAgdGhpcy5kcmFnZ2luZ0luR3JvdXBBcmVhID0gdHJ1ZTtcclxuICAvLyAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAvLyBjb25zdCBpbmRleCA9IHRoaXMuZ3JvdXBlZENvbHVtbnMuZmluZEluZGV4KFxyXG4gIC8vICAgKGNvbCkgPT4gY29sLmZpZWxkID09PSBjb2x1bW4uZmllbGRcclxuICAvLyApO1xyXG4gIC8vIGlmIChpbmRleCAhPT0gLTEpIHtcclxuICAvLyAgIHRoaXMuZ3JvdXBlZENvbHVtbnMuc3BsaWNlKGluZGV4LCAxKTtcclxuICAvLyB9XHJcblxyXG4gIC8vIC8vIDIuIFRyYXZlcnNlIHRoaXMuY29sdW1ucyB0byBmaW5kIGFuZCB1cGRhdGUgdGhlIG1hdGNoaW5nIGNvbHVtblxyXG4gIC8vIHRoaXMuY29sdW1ucy5mb3JFYWNoKChncm91cCkgPT4ge1xyXG4gIC8vICAgaWYgKGdyb3VwPy5jaGlsZHJlbiAmJiBBcnJheS5pc0FycmF5KGdyb3VwLmNoaWxkcmVuKSkge1xyXG4gIC8vICAgICBncm91cC5jaGlsZHJlbi5mb3JFYWNoKChjaGlsZCkgPT4ge1xyXG4gIC8vICAgICAgIGlmIChjaGlsZC5maWVsZCA9PT0gY29sdW1uLmZpZWxkKSB7XHJcbiAgLy8gICAgICAgICBjaGlsZC5pc1Jvd0dyb3VwZWQgPSBmYWxzZTtcclxuICAvLyAgICAgICB9XHJcbiAgLy8gICAgIH0pO1xyXG4gIC8vICAgfSBlbHNlIGlmIChncm91cC5maWVsZCA9PT0gY29sdW1uLmZpZWxkKSB7XHJcbiAgLy8gICAgIGdyb3VwLmlzUm93R3JvdXBlZCA9IGZhbHNlO1xyXG4gIC8vICAgfVxyXG4gIC8vIH0pO1xyXG4gIC8vICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIC8vIH1cclxuXHJcbiAgZXhpdGVkRnJvbVRoZVRvcFJvdyhkcm9wTGlzdDogQ2RrRHJhZ0V4aXQ8YW55Pikge1xyXG4gICAgdGhpcy5kcmFnZ2luZ0luR3JvdXBBcmVhID0gZmFsc2U7XHJcbiAgICB0aGlzLmlzRGlzYWJsZUNvbHVtbkdyb3VwaW5nID0gZmFsc2U7XHJcbiAgICB0aGlzLnNob3VsZERpc2FibGVEcm9wbGlzdFNvcnRpbmcgPSBmYWxzZTtcclxuICAgIGNvbnN0IGRyYWdnaW5nRGF0YSA9IGRyb3BMaXN0Lml0ZW0uZGF0YTtcclxuICAgIGlmIChBcnJheS5pc0FycmF5KGRyYWdnaW5nRGF0YT8uY2hpbGRyZW4pKSB7XHJcbiAgICAgIGNvbnN0IHRhcmdldEdyb3VwID0gdGhpcy5jb2x1bW5zLmZpbmQoXHJcbiAgICAgICAgKGNvbCkgPT4gY29sLmhlYWRlciA9PT0gZHJhZ2dpbmdEYXRhLmhlYWRlclxyXG4gICAgICApO1xyXG4gICAgICBpZiAodGFyZ2V0R3JvdXApIHtcclxuICAgICAgICBkcmFnZ2luZ0RhdGEuY2hpbGRyZW4uZm9yRWFjaCgoZHJhZ2dlZENoaWxkOiBhbnkpID0+IHtcclxuICAgICAgICAgIGNvbnN0IG1hdGNoaW5nQ2hpbGQgPSB0YXJnZXRHcm91cC5jaGlsZHJlbi5maW5kKFxyXG4gICAgICAgICAgICAoY2hpbGQ6IGFueSkgPT4gY2hpbGQuZmllbGQgPT09IGRyYWdnZWRDaGlsZC5maWVsZFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIGlmIChtYXRjaGluZ0NoaWxkKSB7XHJcbiAgICAgICAgICAgIG1hdGNoaW5nQ2hpbGQuaXNSb3dHcm91cGVkID0gZmFsc2U7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGxldCB0YXJnZXRDb2x1bW4gPSB0aGlzLmNvbHVtbnMuZmluZChcclxuICAgICAgICAoY29sOiBhbnkpID0+IGNvbC5maWVsZCA9PT0gZHJhZ2dpbmdEYXRhLmZpZWxkXHJcbiAgICAgICk7XHJcblxyXG4gICAgICBpZiAodGFyZ2V0Q29sdW1uKSB7XHJcbiAgICAgICAgdGFyZ2V0Q29sdW1uLmlzUm93R3JvdXBlZCA9IGZhbHNlO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGZvciAobGV0IGdyb3VwIG9mIHRoaXMuY29sdW1ucykge1xyXG4gICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZ3JvdXAuY2hpbGRyZW4pKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG1hdGNoaW5nQ2hpbGQgPSBncm91cC5jaGlsZHJlbi5maW5kKFxyXG4gICAgICAgICAgICAgIChjaGlsZDogYW55KSA9PiBjaGlsZC5maWVsZCA9PT0gZHJhZ2dpbmdEYXRhLmZpZWxkXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIGlmIChtYXRjaGluZ0NoaWxkKSB7XHJcbiAgICAgICAgICAgICAgbWF0Y2hpbmdDaGlsZC5pc1Jvd0dyb3VwZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5yZWZyZXNoUHJldmlld0NvbHVtbnMoKTtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIHNob3VsZERpc2FibGVEcm9wbGlzdFNvcnRpbmcgPSBmYWxzZTtcclxuICBpc0Rpc2FibGVDb2x1bW5Hcm91cGluZyA9IGZhbHNlO1xyXG4gIGNoZWNrQ29sdW1uR3JvdXBpbmdTdGF0dXMoY29sOiBhbnkpIHtcclxuICAgIGlmIChjb2w/LmNoaWxkcmVuICYmIEFycmF5LmlzQXJyYXkoY29sLmNoaWxkcmVuKSkge1xyXG4gICAgICBjb25zdCBhbGxDaGlsZHJlbkRpc2FibGVkID0gY29sLmNoaWxkcmVuLmV2ZXJ5KFxyXG4gICAgICAgIChjaGlsZDogYW55KSA9PiBjaGlsZC5pc19ncm91cGFibGUgPT09IGZhbHNlXHJcbiAgICAgICk7XHJcbiAgICAgIHRoaXMuaXNEaXNhYmxlQ29sdW1uR3JvdXBpbmcgPSBhbGxDaGlsZHJlbkRpc2FibGVkO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5pc0Rpc2FibGVDb2x1bW5Hcm91cGluZyA9IGNvbC5pc19ncm91cGFibGUgPT09IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgY3VycmVudERyYWdnaW5nQ29sdW1uOiBhbnkgPSBudWxsO1xyXG4gIGRyYWdTdGFydE9uR3JvdXAoY29sOiBhbnkpIHtcclxuICAgIHRoaXMuY3VycmVudERyYWdnaW5nQ29sdW1uID0gY29sO1xyXG4gIH1cclxuXHJcbiAgb25Tb3J0R3JvdXAgPSBhc3luYyAoZXZlbnQ6IENka0RyYWdTb3J0RXZlbnQ8YW55Piwgc2VjdGlvbjogc3RyaW5nKSA9PiB7XHJcbiAgICBjb25zdCBjb2x1bW5zID0gKHRoaXMgYXMgYW55KVtzZWN0aW9uXTtcclxuICAgIGlmIChldmVudC5wcmV2aW91c0luZGV4ID09PSBldmVudC5jdXJyZW50SW5kZXgpIHJldHVybjtcclxuICAgIGNvbnN0IHZpc2libGVDb2x1bW5zID0gY29sdW1ucy5maWx0ZXIoKGNvbDogYW55KSA9PiB7XHJcbiAgICAgIGlmIChjb2w/LmNoaWxkcmVuICYmIEFycmF5LmlzQXJyYXkoY29sLmNoaWxkcmVuKSkge1xyXG4gICAgICAgIHJldHVybiBjb2wuY2hpbGRyZW4uc29tZSgoY2hpbGQ6IGFueSkgPT4gY2hpbGQuaXNfdmlzaWJsZSk7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIGNvbC5pc192aXNpYmxlO1xyXG4gICAgfSk7XHJcbiAgICBjb25zdCBwcmV2aW91c0hlYWRlciA9IHZpc2libGVDb2x1bW5zW2V2ZW50LnByZXZpb3VzSW5kZXhdLmhlYWRlcjtcclxuICAgIGNvbnN0IGN1cnJlbnRIZWFkZXIgPSB2aXNpYmxlQ29sdW1uc1tldmVudC5jdXJyZW50SW5kZXhdLmhlYWRlcjtcclxuICAgIGNvbnN0IHZpc2libGVQcmV2SW5kZXggPSB2aXNpYmxlQ29sdW1ucy5maW5kSW5kZXgoXHJcbiAgICAgIChjb2w6IGFueSkgPT4gY29sLmhlYWRlciA9PT0gcHJldmlvdXNIZWFkZXJcclxuICAgICk7XHJcbiAgICBjb25zdCB2aXNpYmxlQ3VyckluZGV4ID0gdmlzaWJsZUNvbHVtbnMuZmluZEluZGV4KFxyXG4gICAgICAoY29sOiBhbnkpID0+IGNvbC5oZWFkZXIgPT09IGN1cnJlbnRIZWFkZXJcclxuICAgICk7XHJcbiAgICBjb25zdCBnZXRGaWVsZHMgPSAoaXRlbTogYW55KTogc3RyaW5nW10gPT4ge1xyXG4gICAgICBpZiAoaXRlbT8uY2hpbGRyZW4gJiYgQXJyYXkuaXNBcnJheShpdGVtLmNoaWxkcmVuKSkge1xyXG4gICAgICAgIHJldHVybiBpdGVtLmNoaWxkcmVuLm1hcCgoY2hpbGQ6IGFueSkgPT4gY2hpbGQuZmllbGQpO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBbaXRlbS5maWVsZF07XHJcbiAgICB9O1xyXG4gICAgY29uc3QgcHJldkZpZWxkcyA9IGdldEZpZWxkcyh2aXNpYmxlQ29sdW1uc1t2aXNpYmxlUHJldkluZGV4XSk7XHJcbiAgICBjb25zdCBjdXJyRmllbGRzID0gZ2V0RmllbGRzKHZpc2libGVDb2x1bW5zW3Zpc2libGVDdXJySW5kZXhdKTtcclxuICAgIGNvbnN0IGFsbEZpZWxkcyA9IFsuLi5wcmV2RmllbGRzLCAuLi5jdXJyRmllbGRzXTtcclxuICAgIGNvbnN0IGNlbGxzID0gYWxsRmllbGRzLmxlbmd0aFxyXG4gICAgICA/IChbXSBhcyBIVE1MRWxlbWVudFtdKS5jb25jYXQoXHJcbiAgICAgICAgLi4uYWxsRmllbGRzLm1hcCgoZmllbGQpID0+XHJcbiAgICAgICAgICBBcnJheS5mcm9tKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoYFtmaWVsZD1cIiR7ZmllbGR9XCJdYCkpIGFzIEhUTUxFbGVtZW50W11cclxuICAgICAgICApXHJcbiAgICAgIClcclxuICAgICAgOiBbXTtcclxuICAgIGNvbnN0IGZpcnN0UG9zaXRpb25zID0gbmV3IE1hcDxIVE1MRWxlbWVudCwgbnVtYmVyPigpO1xyXG4gICAgY2VsbHMuZm9yRWFjaCgoZWwpID0+IGZpcnN0UG9zaXRpb25zLnNldChlbCwgZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdCkpO1xyXG4gICAgLy8gY29uc29sZS5sb2coXCJ0aGlzIC5jb2x1bnNcIiwgdGhpcy5jb2x1bW5zKTtcclxuICAgIG1vdmVJdGVtSW5BcnJheSgodGhpcyBhcyBhbnkpW3NlY3Rpb25dLCB2aXNpYmxlUHJldkluZGV4LCB2aXNpYmxlQ3VyckluZGV4KTtcclxuXHJcbiAgICBjb25zdCBwcmV2Q29sSW5kZXhJbkNvbHVtbnMgPSB0aGlzLmNvbHVtbnMuZmluZEluZGV4KGl0ZW0gPT4gaXRlbS5oZWFkZXIgPT09IHByZXZpb3VzSGVhZGVyKTtcclxuICAgIGNvbnN0IGN1cnJDb2xJbmRleEluQ29sdW1ucyA9IHRoaXMuY29sdW1ucy5maW5kSW5kZXgoaXRlbSA9PiBpdGVtLmhlYWRlciA9PT0gY3VycmVudEhlYWRlcik7XHJcbiAgICBtb3ZlSXRlbUluQXJyYXkodGhpcy5jb2x1bW5zLCBwcmV2Q29sSW5kZXhJbkNvbHVtbnMsIGN1cnJDb2xJbmRleEluQ29sdW1ucyk7XHJcbiAgICAvLyBhd2FpdCB0aGlzLnJlZnJlc2hQcmV2aWV3Q29sdW1ucygpO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xyXG4gICAgICAvLyBXYWl0IGEgdGljayB0byBtYWtlIHN1cmUgZWxlbWVudHMgYXJlIHJlbmRlcmVkXHJcbiAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XHJcbiAgICAgICAgYWxsRmllbGRzLmZvckVhY2goKGZpZWxkKSA9PiB7XHJcbiAgICAgICAgICBjb25zdCB1cGRhdGVkQ2VsbHMgPSBBcnJheS5mcm9tKFxyXG4gICAgICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKGBbZmllbGQ9XCIke2ZpZWxkfVwiXWApXHJcbiAgICAgICAgICApIGFzIEhUTUxFbGVtZW50W107XHJcblxyXG4gICAgICAgICAgdXBkYXRlZENlbGxzLmZvckVhY2goKGVsKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IG9sZExlZnQgPSBmaXJzdFBvc2l0aW9ucy5nZXQoZWwpO1xyXG4gICAgICAgICAgICBpZiAob2xkTGVmdCA9PSBudWxsKSByZXR1cm47IC8vIHNraXAgaWYgb2xkIHBvc2l0aW9uIG5vdCBhdmFpbGFibGVcclxuXHJcbiAgICAgICAgICAgIGNvbnN0IG5ld0xlZnQgPSBlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0O1xyXG4gICAgICAgICAgICBjb25zdCBkZWx0YVggPSBvbGRMZWZ0IC0gbmV3TGVmdDtcclxuXHJcbiAgICAgICAgICAgIGlmIChkZWx0YVggIT09IDApIHtcclxuICAgICAgICAgICAgICBlbC5zdHlsZS53aWxsQ2hhbmdlID0gJ3RyYW5zZm9ybSc7XHJcbiAgICAgICAgICAgICAgZWwuc3R5bGUudHJhbnNpdGlvbiA9ICdub25lJztcclxuICAgICAgICAgICAgICBlbC5zdHlsZS50cmFuc2Zvcm0gPSBgdHJhbnNsYXRlWCgke2RlbHRhWH1weClgO1xyXG5cclxuICAgICAgICAgICAgICAvLyBGb3JjZSByZWZsb3dcclxuICAgICAgICAgICAgICB2b2lkIGVsLm9mZnNldFdpZHRoO1xyXG5cclxuICAgICAgICAgICAgICBlbC5zdHlsZS50cmFuc2l0aW9uID0gJ3RyYW5zZm9ybSAzMDBtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpJztcclxuICAgICAgICAgICAgICBlbC5zdHlsZS50cmFuc2Zvcm0gPSAndHJhbnNsYXRlWCgwKSc7XHJcblxyXG4gICAgICAgICAgICAgIGNvbnN0IGhhbmRsZSA9ICgpID0+IHtcclxuICAgICAgICAgICAgICAgIGVsLnN0eWxlLnRyYW5zaXRpb24gPSAnJztcclxuICAgICAgICAgICAgICAgIGVsLnN0eWxlLnRyYW5zZm9ybSA9ICcnO1xyXG4gICAgICAgICAgICAgICAgZWwuc3R5bGUud2lsbENoYW5nZSA9ICcnO1xyXG4gICAgICAgICAgICAgICAgZWwucmVtb3ZlRXZlbnRMaXN0ZW5lcigndHJhbnNpdGlvbmVuZCcsIGhhbmRsZSk7XHJcbiAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICBlbC5hZGRFdmVudExpc3RlbmVyKCd0cmFuc2l0aW9uZW5kJywgaGFuZGxlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuXHJcbiAgb25Ecm9wR3JvdXAoKSB7XHJcbiAgICB0aGlzLmxlZnRQaW5uZWRDb2x1bW5zID0gdGhpcy5kZWVwQ2xvbmVDb2x1bW5zKHRoaXMucHJldmlld0xlZnRQaW5uZWRDb2x1bW5zKTtcclxuICAgIHRoaXMuY2VudGVyQ29sdW1ucyA9IHRoaXMuZGVlcENsb25lQ29sdW1ucyh0aGlzLnByZXZpZXdDZW50ZXJDb2x1bW5zKTtcclxuICAgIHRoaXMucmlnaHRQaW5uZWRDb2x1bW5zID0gdGhpcy5kZWVwQ2xvbmVDb2x1bW5zKHRoaXMucHJldmlld1JpZ2h0UGlubmVkQ29sdW1ucyk7XHJcbiAgICBjb25zdCBzZW5kRGF0YSA9IHtcclxuICAgICAgY29sdW1uczogdGhpcy5jbGVhbkNvbHVtbnModGhpcy5jb2x1bW5zKSxcclxuICAgICAgZmlsdGVyczogdGhpcy5jbGVhbkZpbHRlcmRDb2x1bW5zKCksXHJcbiAgICAgIG5vX29mX3JlY29yZHM6IHRoaXMucGFnaW5hdGlvbkNvbmZpZy5wYWdlU2l6ZSxcclxuICAgICAgdHlwZTogdGhpcy50YWJsZVR5cGUsXHJcbiAgICB9O1xyXG4gICAgdGhpcy5jcmVhdGVVcGRhdGVDb25maWdMaXN0aW5nLmVtaXQoc2VuZERhdGEpO1xyXG5cclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZGVlcENsb25lQ29sdW1ucyhjb2x1bW5zOiBhbnlbXSk6IGFueVtdIHtcclxuICAgIGlmICghQXJyYXkuaXNBcnJheShjb2x1bW5zKSkgcmV0dXJuIFtdO1xyXG5cclxuICAgIHJldHVybiBjb2x1bW5zLm1hcChjb2wgPT4gKHtcclxuICAgICAgLi4uY29sLFxyXG4gICAgICBxdWVyeTogY29sLnF1ZXJ5ID8geyAuLi5jb2wucXVlcnkgfSA6IG51bGwsXHJcbiAgICAgIGNvbHVtbl9kcm9wZG93bl92YWx1ZTogQXJyYXkuaXNBcnJheShjb2wuY29sdW1uX2Ryb3Bkb3duX3ZhbHVlKVxyXG4gICAgICAgID8gWy4uLmNvbC5jb2x1bW5fZHJvcGRvd25fdmFsdWVdXHJcbiAgICAgICAgOiBbXSxcclxuICAgICAgLy8gUmVjdXJzaXZlbHkgZGVlcCBjbG9uZSBjaGlsZHJlbiBpZiBwcmVzZW50XHJcbiAgICAgIGNoaWxkcmVuOiBBcnJheS5pc0FycmF5KGNvbC5jaGlsZHJlbilcclxuICAgICAgICA/IHRoaXMuZGVlcENsb25lQ29sdW1ucyhjb2wuY2hpbGRyZW4pXHJcbiAgICAgICAgOiB1bmRlZmluZWQsXHJcbiAgICB9KSk7XHJcbiAgfVxyXG5cclxuXHJcbiAgYXN5bmMgb25Ecm9wVG9wR3JvdXAoZXZlbnQ6IENka0RyYWdEcm9wPGFueT4pIHtcclxuICAgIGlmICh0aGlzLmlzT3V0c2lkZUNvbnRhaW5lcikgcmV0dXJuO1xyXG4gICAgdGhpcy5tYWluU2Nyb2xsLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wID0gMDtcclxuICAgIHRoaXMubG9hZGluZyA9IHRydWU7XHJcbiAgICB0aGlzLnRyYW5zbGF0ZVkgPSAwO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgY29uc3QgZHJhZ2dlZERhdGEgPSBldmVudC5pdGVtLmRhdGE7XHJcbiAgICBpZiAoZHJhZ2dlZERhdGE/LmNoaWxkcmVuICYmIEFycmF5LmlzQXJyYXkoZHJhZ2dlZERhdGEuY2hpbGRyZW4pKSB7XHJcbiAgICAgIGRyYWdnZWREYXRhLmNoaWxkcmVuLmZvckVhY2goKGNvbDogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKGNvbC5pc192aXNpYmxlICYmIGNvbC5pc19ncm91cGFibGUpIHtcclxuICAgICAgICAgIHRoaXMuZ3JvdXBlZENvbHVtbnMucHVzaChjb2wpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAoZHJhZ2dlZERhdGEuaXNfdmlzaWJsZSAmJiBkcmFnZ2VkRGF0YS5pc19ncm91cGFibGUpIHtcclxuICAgICAgICB0aGlzLmdyb3VwZWRDb2x1bW5zLnB1c2goZHJhZ2dlZERhdGEpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLmRyYWdnaW5nSW5Hcm91cEFyZWEgPSBmYWxzZTtcclxuICAgIGNvbnN0IGZpZWxkcyA9IHRoaXMuZ3JvdXBlZENvbHVtbnMubWFwKChpdGVtKSA9PiBpdGVtLmZpZWxkKTtcclxuICAgIHRoaXMuZGF0YVNldCA9IGF3YWl0IHRoaXMuZ3JvdXBEYXRhQXN5bmModGhpcy5vcmlnaW5hbERhdGFTZXQsIGZpZWxkcyk7XHJcbiAgICB0aGlzLnVwZGF0ZUZsYXR0ZW5lZERhdGEoKTtcclxuICAgIHRoaXMudXBkYXRlQ29sdW1uV2lkdGhzQW5kR3JvdXBzKCk7XHJcbiAgICB0aGlzLnJlZnJlc2hQcmV2aWV3Q29sdW1ucygpO1xyXG4gICAgdGhpcy51cGRhdGVWaXNpYmxlUm93cygwKTtcclxuICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgdGhpcy5zZWxlY3RlZENlbGxzID0gW107XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5yb3dTZWxlY3RlZEluZGV4ZXMuY2xlYXIoKTtcclxuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfSwgMTAwMCk7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBvbkdyb3VwUmVvcmRlcihldmVudDogQ2RrRHJhZ0Ryb3A8YW55W10+KSB7XHJcbiAgICBtb3ZlSXRlbUluQXJyYXkodGhpcy5ncm91cGVkQ29sdW1ucywgZXZlbnQucHJldmlvdXNJbmRleCwgZXZlbnQuY3VycmVudEluZGV4KTtcclxuICAgIGNvbnN0IGZpZWxkcyA9IHRoaXMuZ3JvdXBlZENvbHVtbnMubWFwKChpdGVtKSA9PiBpdGVtLmZpZWxkKTtcclxuICAgIHRoaXMuZGF0YVNldCA9IGF3YWl0IHRoaXMuZ3JvdXBEYXRhQXN5bmModGhpcy5vcmlnaW5hbERhdGFTZXQsIGZpZWxkcyk7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy51cGRhdGVGbGF0dGVuZWREYXRhKCk7XHJcbiAgICAgIHRoaXMudXBkYXRlQ29sdW1uV2lkdGhzQW5kR3JvdXBzKCk7XHJcbiAgICAgIHRoaXMucmVmcmVzaFByZXZpZXdDb2x1bW5zKCk7XHJcbiAgICAgIHRoaXMudXBkYXRlVmlzaWJsZVJvd3MoMCk7XHJcbiAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9LCAxMDApO1xyXG5cclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLmdyb3VwQm94UGFkZGluZyA9IHRoaXMuY29sdW1uc0dyb3VwZWRCb3g/Lm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGg7XHJcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKVxyXG4gICAgfSwgMTApO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgdW5ncm91cENvbHVtbihjb2x1bW46IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICBjb25zdCBpbmRleCA9IHRoaXMuZ3JvdXBlZENvbHVtbnMuZmluZEluZGV4KFxyXG4gICAgICAgIChjb2wpID0+IGNvbC5maWVsZCA9PT0gY29sdW1uLmZpZWxkXHJcbiAgICAgICk7XHJcbiAgICAgIGlmIChpbmRleCAhPT0gLTEpIHtcclxuICAgICAgICB0aGlzLmdyb3VwZWRDb2x1bW5zLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgZmllbGRzID0gdGhpcy5ncm91cGVkQ29sdW1ucy5tYXAoKGl0ZW0pID0+IGl0ZW0uZmllbGQpO1xyXG4gICAgICB0aGlzLmRhdGFTZXQgPSBhd2FpdCB0aGlzLmdyb3VwRGF0YUFzeW5jKHRoaXMub3JpZ2luYWxEYXRhU2V0LCBmaWVsZHMpO1xyXG4gICAgICB0aGlzLmNvbHVtbnMuZm9yRWFjaCgoZ3JvdXApID0+IHtcclxuICAgICAgICBpZiAoZ3JvdXA/LmNoaWxkcmVuICYmIEFycmF5LmlzQXJyYXkoZ3JvdXAuY2hpbGRyZW4pKSB7XHJcbiAgICAgICAgICBncm91cC5jaGlsZHJlbi5mb3JFYWNoKChjaGlsZDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChjaGlsZC5maWVsZCA9PT0gY29sdW1uLmZpZWxkKSB7XHJcbiAgICAgICAgICAgICAgY2hpbGQuaXNSb3dHcm91cGVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoZ3JvdXAuZmllbGQgPT09IGNvbHVtbi5maWVsZCkge1xyXG4gICAgICAgICAgZ3JvdXAuaXNSb3dHcm91cGVkID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy51cGRhdGVGbGF0dGVuZWREYXRhKCk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVDb2x1bW5XaWR0aHNBbmRHcm91cHMoKTtcclxuICAgICAgICB0aGlzLnJlZnJlc2hQcmV2aWV3Q29sdW1ucygpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlVmlzaWJsZVJvd3MoMCk7XHJcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB9LCAxMDAwKTtcclxuXHJcbiAgICB9IGNhdGNoIChlcnIpIHtcclxuICAgICAgY29uc29sZS5lcnJvcihcIkVycm9yIGluIHVuZ3JvdXBDb2x1bW46XCIsIGVycik7XHJcbiAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcblxyXG4gIHNob3VsZFRoZUdyb3VwSGVhZGVyU2hvdyhncm91cDogYW55KSB7XHJcbiAgICBpZiAoZ3JvdXA/LmNoaWxkcmVuICYmIGdyb3VwLmNoaWxkcmVuLmxlbmd0aCkge1xyXG4gICAgICByZXR1cm4gZ3JvdXAuY2hpbGRyZW4uc29tZShcclxuICAgICAgICAoY29sOiBhbnkpID0+IGNvbC5pc192aXNpYmxlICYmICFjb2w/LmlzUm93R3JvdXBlZFxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGdyb3VwPy5pc192aXNpYmxlICYmICFncm91cD8uaXNSb3dHcm91cGVkO1xyXG4gIH1cclxuXHJcblxyXG4gIC8vIG9uQ2hpbGREcmFnU3RhcnQoKSB7XHJcbiAgLy8gICBkZWJ1Z2dlcjtcclxuICAvLyB9XHJcblxyXG4gIC8vIGRyb3BMaXN0SWRzOiBzdHJpbmdbXSA9IFtdO1xyXG5cclxuICAvLyBnZW5lcmF0ZURyb3BMaXN0SWRzKCkge1xyXG4gIC8vICAgdGhpcy5kcm9wTGlzdElkcyA9IFtdO1xyXG5cclxuICAvLyAgIGNvbnN0IHNlY3Rpb25LZXlzID0gW1xyXG4gIC8vICAgICAnbGVmdFBpbm5lZENvbHVtbnMnLFxyXG4gIC8vICAgICAnY2VudGVyQ29sdW1ucycsXHJcbiAgLy8gICAgICdyaWdodFBpbm5lZENvbHVtbnMnLFxyXG4gIC8vICAgXTtcclxuXHJcbiAgLy8gICBzZWN0aW9uS2V5cy5mb3JFYWNoKChzZWN0aW9uS2V5KSA9PiB7XHJcbiAgLy8gICAgIGNvbnN0IHNlY3Rpb25Db2xzID0gKHRoaXMgYXMgYW55KVtzZWN0aW9uS2V5XTtcclxuXHJcbiAgLy8gICAgIHRoaXMuY29sdW1ucy5mb3JFYWNoKChjb2w6IGFueSwgaTogbnVtYmVyKSA9PiB7XHJcbiAgLy8gICAgICAgaWYgKGNvbD8uY2hpbGRyZW4/Lmxlbmd0aCA+IDApIHtcclxuICAvLyAgICAgICAgIGNvbC5jaGlsZHJlbi5mb3JFYWNoKChjaGlsZDogYW55LCBjaGlsZEluZGV4OiBudW1iZXIpID0+IHtcclxuICAvLyAgICAgICAgICAgaWYgKGNoaWxkPy5pc192aXNpYmxlICYmICFjaGlsZC5pc1Jvd0dyb3VwZWQpIHtcclxuICAvLyAgICAgICAgICAgICBjb25zdCBpZCA9IGAke3NlY3Rpb25LZXl9JHtpfWA7XHJcbiAgLy8gICAgICAgICAgICAgdGhpcy5kcm9wTGlzdElkcy5wdXNoKGlkKTtcclxuICAvLyAgICAgICAgICAgfVxyXG4gIC8vICAgICAgICAgfSk7XHJcbiAgLy8gICAgICAgfSBlbHNlIGlmIChjb2w/LmlzX3Zpc2libGUgJiYgIWNvbC5pc1Jvd0dyb3VwZWQpIHtcclxuICAvLyAgICAgICAgIGNvbnN0IGlkID0gYCR7c2VjdGlvbktleX0ke2l9YDtcclxuICAvLyAgICAgICAgIHRoaXMuZHJvcExpc3RJZHMucHVzaChpZCk7XHJcbiAgLy8gICAgICAgfVxyXG4gIC8vICAgICB9KTtcclxuICAvLyAgIH0pO1xyXG4gIC8vIH1cclxuXHJcbiAgb25DaGlsZERyb3BsaXN0U29ydGVkID0gYXN5bmMgKGV2ZW50OiBDZGtEcmFnU29ydEV2ZW50PGFueT4sIHNlY3Rpb246IHN0cmluZykgPT4ge1xyXG4gICAgaWYgKGV2ZW50LnByZXZpb3VzSW5kZXggPT09IGV2ZW50LmN1cnJlbnRJbmRleCkgcmV0dXJuO1xyXG5cclxuICAgIGNvbnN0IHBpbm5lZCA9XHJcbiAgICAgIHNlY3Rpb24gPT0gJ3ByZXZpZXdMZWZ0UGlubmVkQ29sdW1ucydcclxuICAgICAgICA/ICdsZWZ0J1xyXG4gICAgICAgIDogc2VjdGlvbiA9PSAncHJldmlld1JpZ2h0UGlubmVkQ29sdW1ucydcclxuICAgICAgICAgID8gJ3JpZ2h0J1xyXG4gICAgICAgICAgOiBcIlwiO1xyXG5cclxuICAgIGNvbnN0IGNvbHVtbiA9IGV2ZW50Lml0ZW0uZGF0YTtcclxuICAgIGxldCBncm91cCA9IHRoaXMuY29sdW1ucy5maW5kKFxyXG4gICAgICAoY29sOiBhbnkpID0+XHJcbiAgICAgICAgQXJyYXkuaXNBcnJheShjb2wuY2hpbGRyZW4pICYmXHJcbiAgICAgICAgY29sLmNoaWxkcmVuLnNvbWUoKGNoaWxkOiBhbnkpID0+IGNoaWxkPy5maWVsZCA9PT0gY29sdW1uPy5maWVsZClcclxuICAgICk7XHJcbiAgICBjb25zdCBncm91cEluZGV4ID0gdGhpcy5jb2x1bW5zLmZpbmRJbmRleChcclxuICAgICAgKGNvbCkgPT4gY29sLmhlYWRlciA9PT0gZ3JvdXAuaGVhZGVyXHJcbiAgICApO1xyXG4gICAgY29uc3QgZmlsdGVyZWRHcm91cCA9IGdyb3VwPy5jaGlsZHJlbi5maWx0ZXIoKGNvbDogYW55KSA9PiB7XHJcbiAgICAgIGNvbnN0IGlzUGlubmVkTWF0Y2ggPVxyXG4gICAgICAgIChwaW5uZWQgPT09IFwiXCIgJiYgKCFjb2w/LnBpbm5lZCB8fCBjb2w/LnBpbm5lZCA9PT0gXCJcIikpIHx8IGNvbD8ucGlubmVkID09PSBwaW5uZWQ7XHJcbiAgICAgIHJldHVybiBpc1Bpbm5lZE1hdGNoICYmIGNvbD8uaXNfdmlzaWJsZTtcclxuICAgIH0pO1xyXG5cclxuICAgIGNvbnN0IHByZXZpb3VzRmllbGQgPSBmaWx0ZXJlZEdyb3VwW2V2ZW50LnByZXZpb3VzSW5kZXhdLmZpZWxkO1xyXG4gICAgY29uc3QgY3VycmVudEZpZWxkID0gZmlsdGVyZWRHcm91cFtldmVudC5jdXJyZW50SW5kZXhdLmZpZWxkO1xyXG4gICAgY29uc3QgdmlzaWJsZVByZXZJbmRleCA9IGdyb3VwLmNoaWxkcmVuLmZpbmRJbmRleChcclxuICAgICAgKGNvbDogYW55KSA9PiBjb2wuZmllbGQgPT0gcHJldmlvdXNGaWVsZFxyXG4gICAgKTtcclxuICAgIGNvbnN0IHZpc2libGVDdXJySW5kZXggPSBncm91cC5jaGlsZHJlbi5maW5kSW5kZXgoXHJcbiAgICAgIChjb2w6IGFueSkgPT4gY29sLmZpZWxkID09IGN1cnJlbnRGaWVsZFxyXG4gICAgKTtcclxuICAgIGNvbnN0IGFsbEZpZWxkcyA9IFtwcmV2aW91c0ZpZWxkLCBjdXJyZW50RmllbGRdO1xyXG4gICAgY29uc3QgY2VsbHMgPSBhbGxGaWVsZHMubGVuZ3RoXHJcbiAgICAgID8gKFtdIGFzIEhUTUxFbGVtZW50W10pLmNvbmNhdChcclxuICAgICAgICAuLi5hbGxGaWVsZHMubWFwKChmaWVsZCkgPT5cclxuICAgICAgICAgIEFycmF5LmZyb20oZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChgW2ZpZWxkPVwiJHtmaWVsZH1cIl1gKSkgYXMgSFRNTEVsZW1lbnRbXVxyXG4gICAgICAgIClcclxuICAgICAgKVxyXG4gICAgICA6IFtdO1xyXG5cclxuICAgIGNvbnN0IGdyb3VwSW5TZWN0aW9uID0gKHRoaXMgYXMgYW55KVtzZWN0aW9uXS5maW5kKFxyXG4gICAgICAoY29sOiBhbnkpID0+XHJcbiAgICAgICAgQXJyYXkuaXNBcnJheShjb2wuY2hpbGRyZW4pICYmXHJcbiAgICAgICAgY29sLmNoaWxkcmVuLnNvbWUoKGNoaWxkOiBhbnkpID0+IGNoaWxkPy5maWVsZCA9PT0gY29sdW1uPy5maWVsZClcclxuICAgICk7XHJcblxyXG4gICAgY29uc3QgZmlsdGVyR3JvdXBJblNlY3Rpb24gPSAodGhpcyBhcyBhbnkpW3NlY3Rpb25dLmZpbmQoXHJcbiAgICAgIChjb2w6IGFueSkgPT5cclxuICAgICAgICBBcnJheS5pc0FycmF5KGNvbC5jaGlsZHJlbikgJiZcclxuICAgICAgICBjb2wuY2hpbGRyZW4uc29tZSgoY2hpbGQ6IGFueSkgPT4gY2hpbGQ/LmZpZWxkID09PSBjb2x1bW4/LmZpZWxkKVxyXG4gICAgKTtcclxuXHJcbiAgICBjb25zdCBncm91cEluU2VjdGlvbkluZGV4ID0gKHRoaXMgYXMgYW55KVtzZWN0aW9uXS5maW5kSW5kZXgoXHJcbiAgICAgIChjb2w6IGFueSkgPT4gY29sLmhlYWRlciA9PT0gZ3JvdXBJblNlY3Rpb24uaGVhZGVyXHJcbiAgICApO1xyXG5cclxuICAgIGNvbnN0IGZpcnN0UG9zaXRpb25zID0gbmV3IE1hcDxIVE1MRWxlbWVudCwgbnVtYmVyPigpO1xyXG4gICAgY2VsbHMuZm9yRWFjaCgoZWwpID0+IGZpcnN0UG9zaXRpb25zLnNldChlbCwgZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdCkpO1xyXG4gICAgbW92ZUl0ZW1JbkFycmF5KFxyXG4gICAgICB0aGlzLmNvbHVtbnNbZ3JvdXBJbmRleF0/LmNoaWxkcmVuLFxyXG4gICAgICB2aXNpYmxlUHJldkluZGV4LFxyXG4gICAgICB2aXNpYmxlQ3VyckluZGV4XHJcbiAgICApO1xyXG5cclxuICAgIG1vdmVJdGVtSW5BcnJheShcclxuICAgICAgKHRoaXMgYXMgYW55KVtzZWN0aW9uXT8uW2dyb3VwSW5TZWN0aW9uSW5kZXhdLmNoaWxkcmVuLFxyXG4gICAgICBldmVudC5wcmV2aW91c0luZGV4LFxyXG4gICAgICBldmVudC5jdXJyZW50SW5kZXhcclxuICAgICk7XHJcblxyXG4gICAgLy8gYXdhaXQgdGhpcy5yZWZyZXNoUHJldmlld0NvbHVtbnMoKTtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgIC8vIGFsbEZpZWxkcy5mb3JFYWNoKChmaWVsZCkgPT4ge1xyXG4gICAgLy8gICBjb25zdCB1cGRhdGVkQ2VsbHMgPSBBcnJheS5mcm9tKFxyXG4gICAgLy8gICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoYFtmaWVsZD1cIiR7ZmllbGR9XCJdYClcclxuICAgIC8vICAgKSBhcyBIVE1MRWxlbWVudFtdO1xyXG4gICAgLy8gICB1cGRhdGVkQ2VsbHMuZm9yRWFjaCgoZWwpID0+IHtcclxuICAgIC8vICAgICBjb25zdCBuZXdMZWZ0ID0gZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdDtcclxuICAgIC8vICAgICBjb25zdCBvbGRMZWZ0ID0gZmlyc3RQb3NpdGlvbnMuZ2V0KGVsKSE7XHJcbiAgICAvLyAgICAgY29uc3QgZGVsdGFYID0gb2xkTGVmdCAtIG5ld0xlZnQ7XHJcbiAgICAvLyAgICAgaWYgKGRlbHRhWCAhPT0gMCkge1xyXG4gICAgLy8gICAgICAgZWwuc3R5bGUud2lsbENoYW5nZSA9ICd0cmFuc2Zvcm0nO1xyXG4gICAgLy8gICAgICAgZWwuc3R5bGUudHJhbnNpdGlvbiA9ICdub25lJztcclxuICAgIC8vICAgICAgIGVsLnN0eWxlLnRyYW5zZm9ybSA9IGB0cmFuc2xhdGVYKCR7ZGVsdGFYfXB4KWA7XHJcbiAgICAvLyAgICAgICB2b2lkIGVsLm9mZnNldFdpZHRoO1xyXG4gICAgLy8gICAgICAgZWwuc3R5bGUudHJhbnNpdGlvbiA9ICd0cmFuc2Zvcm0gNDAwbXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKSc7XHJcbiAgICAvLyAgICAgICBlbC5zdHlsZS50cmFuc2Zvcm0gPSAndHJhbnNsYXRlWCgwKSc7XHJcblxyXG4gICAgLy8gICAgICAgY29uc3QgaGFuZGxlID0gKCkgPT4ge1xyXG4gICAgLy8gICAgICAgICBlbC5zdHlsZS50cmFuc2l0aW9uID0gJyc7XHJcbiAgICAvLyAgICAgICAgIGVsLnN0eWxlLnRyYW5zZm9ybSA9ICcnO1xyXG4gICAgLy8gICAgICAgICBlbC5zdHlsZS53aWxsQ2hhbmdlID0gJyc7XHJcbiAgICAvLyAgICAgICAgIGVsLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3RyYW5zaXRpb25lbmQnLCBoYW5kbGUpO1xyXG4gICAgLy8gICAgICAgfTtcclxuICAgIC8vICAgICAgIGVsLmFkZEV2ZW50TGlzdGVuZXIoJ3RyYW5zaXRpb25lbmQnLCBoYW5kbGUpO1xyXG4gICAgLy8gICAgIH1cclxuICAgIC8vICAgfSk7XHJcbiAgICAvLyB9KTtcclxuXHJcbiAgICB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XHJcbiAgICAgIGFsbEZpZWxkcy5mb3JFYWNoKChmaWVsZCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHVwZGF0ZWRDZWxscyA9IEFycmF5LmZyb20oXHJcbiAgICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKGBbZmllbGQ9XCIke2ZpZWxkfVwiXWApXHJcbiAgICAgICAgKSBhcyBIVE1MRWxlbWVudFtdO1xyXG5cclxuICAgICAgICB1cGRhdGVkQ2VsbHMuZm9yRWFjaCgoZWwpID0+IHtcclxuICAgICAgICAgIGNvbnN0IG9sZExlZnQgPSBmaXJzdFBvc2l0aW9ucy5nZXQoZWwpO1xyXG4gICAgICAgICAgaWYgKG9sZExlZnQgPT0gbnVsbCkgcmV0dXJuOyAvLyBzYWZldHkgY2hlY2tcclxuXHJcbiAgICAgICAgICBjb25zdCBuZXdMZWZ0ID0gZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdDtcclxuICAgICAgICAgIGNvbnN0IGRlbHRhWCA9IG9sZExlZnQgLSBuZXdMZWZ0O1xyXG5cclxuICAgICAgICAgIGlmIChkZWx0YVggIT09IDApIHtcclxuICAgICAgICAgICAgZWwuc3R5bGUud2lsbENoYW5nZSA9ICd0cmFuc2Zvcm0nO1xyXG4gICAgICAgICAgICBlbC5zdHlsZS50cmFuc2l0aW9uID0gJ25vbmUnO1xyXG4gICAgICAgICAgICBlbC5zdHlsZS50cmFuc2Zvcm0gPSBgdHJhbnNsYXRlWCgke2RlbHRhWH1weClgO1xyXG5cclxuICAgICAgICAgICAgLy8gRm9yY2UgcmVmbG93XHJcbiAgICAgICAgICAgIHZvaWQgZWwub2Zmc2V0V2lkdGg7XHJcblxyXG4gICAgICAgICAgICBlbC5zdHlsZS50cmFuc2l0aW9uID0gJ3RyYW5zZm9ybSA0MDBtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpJztcclxuICAgICAgICAgICAgZWwuc3R5bGUudHJhbnNmb3JtID0gJ3RyYW5zbGF0ZVgoMCknO1xyXG5cclxuICAgICAgICAgICAgY29uc3QgaGFuZGxlID0gKCkgPT4ge1xyXG4gICAgICAgICAgICAgIGVsLnN0eWxlLnRyYW5zaXRpb24gPSAnJztcclxuICAgICAgICAgICAgICBlbC5zdHlsZS50cmFuc2Zvcm0gPSAnJztcclxuICAgICAgICAgICAgICBlbC5zdHlsZS53aWxsQ2hhbmdlID0gJyc7XHJcbiAgICAgICAgICAgICAgZWwucmVtb3ZlRXZlbnRMaXN0ZW5lcigndHJhbnNpdGlvbmVuZCcsIGhhbmRsZSk7XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIGVsLmFkZEV2ZW50TGlzdGVuZXIoJ3RyYW5zaXRpb25lbmQnLCBoYW5kbGUpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG5cclxuICAgIC8vIGNvbnNvbGUuZ3JvdXAoJ0dyb3VwOiAnLCBncm91cCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgb25DaGlsZERyb3BsaXN0RHJvcGVkKGNka0RyYWdEcm9wZXZlbnQ6IENka0RyYWdEcm9wPGFueT4pIHtcclxuICAgIHRoaXMudXBkYXRlQ29sdW1uV2lkdGhzQW5kR3JvdXBzKCk7XHJcbiAgICBjb25zdCBzZW5kRGF0YSA9IHtcclxuICAgICAgY29sdW1uczogdGhpcy5jbGVhbkNvbHVtbnModGhpcy5jb2x1bW5zKSxcclxuICAgICAgZmlsdGVyczogdGhpcy5jbGVhbkZpbHRlcmRDb2x1bW5zKCksXHJcbiAgICAgIG5vX29mX3JlY29yZHM6IHRoaXMucGFnaW5hdGlvbkNvbmZpZy5wYWdlU2l6ZSxcclxuICAgICAgdHlwZTogdGhpcy50YWJsZVR5cGUsXHJcbiAgICB9O1xyXG4gICAgdGhpcy5jcmVhdGVVcGRhdGVDb25maWdMaXN0aW5nLmVtaXQoc2VuZERhdGEpO1xyXG5cclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9LCAyKTtcclxuICB9XHJcblxyXG4gIC8vIFJvd3MgR3JvdXBpbmcgTG9naWMgR29lcyBIZXJlXHJcblxyXG4gIGdyb3VwRGF0YShkYXRhOiBhbnlbXSwgZ3JvdXBGaWVsZHM6IHN0cmluZ1tdKTogYW55W10ge1xyXG4gICAgbGV0IGRhdGFTZXQgPSBzdHJ1Y3R1cmVkQ2xvbmUoZGF0YSk7XHJcbiAgICBpZiAoIWdyb3VwRmllbGRzLmxlbmd0aCkgcmV0dXJuIGRhdGE7XHJcbiAgICBjb25zdCBbY3VycmVudEZpZWxkLCAuLi5yZXN0RmllbGRzXSA9IGdyb3VwRmllbGRzO1xyXG4gICAgY29uc3QgZ3JvdXBlZE1hcCA9IG5ldyBNYXA8c3RyaW5nLCBhbnlbXT4oKTtcclxuICAgIGZvciAoY29uc3QgaXRlbSBvZiBkYXRhU2V0KSB7XHJcbiAgICAgIGxldCBrZXlWYWx1ZSA9IGN1cnJlbnRGaWVsZC5zcGxpdCgnLicpLnJlZHVjZSgob2JqLCBrKSA9PiBvYmo/LltrXSwgaXRlbSk7XHJcbiAgICAgIGxldCBncm91cEtleTogc3RyaW5nO1xyXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShrZXlWYWx1ZSkpIHtcclxuICAgICAgICBpZiAoa2V5VmFsdWUubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICBncm91cEtleSA9IFwiX0JsYW5rXCI7XHJcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2Yga2V5VmFsdWVbMF0gPT09IFwib2JqZWN0XCIpIHtcclxuICAgICAgICAgIGdyb3VwS2V5ID0ga2V5VmFsdWVcclxuICAgICAgICAgICAgLm1hcChvYmogPT4gKG9iaj8uZGVwYXJ0bWVudF9uYW1lIHx8IG9iai5yb2xlTmFtZSB8fCBvYmo/LmZ1bGxfbmFtZSkgPz8gXCJfQmxhbmtcIilcclxuICAgICAgICAgICAgLmpvaW4oXCIsXCIpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBncm91cEtleSA9IGtleVZhbHVlXHJcbiAgICAgICAgICAgIC5tYXAodmFsID0+IHZhbCA/PyBcIl9CbGFua1wiKVxyXG4gICAgICAgICAgICAuam9pbihcIixcIik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGdyb3VwS2V5ID0ga2V5VmFsdWUgPz8gXCJfQmxhbmtcIjtcclxuICAgICAgfVxyXG4gICAgICBpZiAoIWdyb3VwZWRNYXAuaGFzKGdyb3VwS2V5KSkgZ3JvdXBlZE1hcC5zZXQoZ3JvdXBLZXksIFtdKTtcclxuICAgICAgZ3JvdXBlZE1hcC5nZXQoZ3JvdXBLZXkpIS5wdXNoKGl0ZW0pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIEFycmF5LmZyb20oZ3JvdXBlZE1hcC5lbnRyaWVzKCkpLm1hcCgoW2dyb3VwVmFsdWUsIGdyb3VwSXRlbXNdKSA9PiAoe1xyXG4gICAgICBpc0dyb3VwOiB0cnVlLFxyXG4gICAgICBncm91cEZpZWxkOiBjdXJyZW50RmllbGQsXHJcbiAgICAgIGdyb3VwVmFsdWUsXHJcbiAgICAgIGNoaWxkcmVuOiB0aGlzLmdyb3VwRGF0YShncm91cEl0ZW1zLCByZXN0RmllbGRzKSxcclxuICAgICAgaXNFeHBhbmQ6IGZhbHNlLFxyXG4gICAgfSkpO1xyXG4gIH1cclxuXHJcblxyXG4gIGNvdW50TGVhZlJvd3MoZ3JvdXA6IGFueSk6IG51bWJlciB7XHJcbiAgICBpZiAoIWdyb3VwLmNoaWxkcmVuIHx8ICFncm91cC5jaGlsZHJlbi5sZW5ndGgpIHJldHVybiAwO1xyXG5cclxuICAgIHJldHVybiBncm91cC5jaGlsZHJlbi5yZWR1Y2UoKGNvdW50OiBudW1iZXIsIGNoaWxkOiBhbnkpID0+IHtcclxuICAgICAgcmV0dXJuIGNvdW50ICsgKGNoaWxkLmlzR3JvdXAgPyB0aGlzLmNvdW50TGVhZlJvd3MoY2hpbGQpIDogMSk7XHJcbiAgICB9LCAwKTtcclxuICB9XHJcblxyXG4gIGlzQWN0aXZlRmlsdGVyT3BlbiA9IGZhbHNlO1xyXG4gIHRvZ2dsZUFjdGl2ZUZpbHRlcigpIHtcclxuICAgIHRoaXMuaXNBY3RpdmVGaWx0ZXJPcGVuID0gIXRoaXMuaXNBY3RpdmVGaWx0ZXJPcGVuO1xyXG4gIH1cclxuXHJcbiAgdG9nZ2xlQWN0aW9ucyh0eXBlOiBzdHJpbmcpIHtcclxuICAgIGlmICh0eXBlID09PSB0aGlzLmFjdGl2ZVRvcEJ1dHRvbikgdGhpcy5hY3RpdmVUb3BCdXR0b24gPSB0eXBlO1xyXG4gICAgZWxzZSB0aGlzLmFjdGl2ZVRvcEJ1dHRvbiA9IHR5cGU7XHJcbiAgICB0aGlzLmFjdGl2ZVN1YkJ1dHRvbiA9ICcnO1xyXG4gICAgdGhpcy5pc0ZpbHRlck9wZW4gPSBmYWxzZTtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIGFjdGl2ZVN1YkJ1dHRvbiA9ICcnO1xyXG4gIHRvZ2dsZVN1YkFjdGlvbnModHlwZTogc3RyaW5nKSB7XHJcbiAgICBpZiAodHlwZSA9PT0gdGhpcy5hY3RpdmVTdWJCdXR0b24pIHRoaXMuYWN0aXZlU3ViQnV0dG9uID0gJyc7XHJcbiAgICBlbHNlIHRoaXMuYWN0aXZlU3ViQnV0dG9uID0gdHlwZTtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIHRvZ2dsZUFjdGlvbnNEcm9wZG93bigpIHtcclxuICAgIHRoaXMuc2hvd0FjdGlvbnNEcm9wRG93biA9ICF0aGlzLnNob3dBY3Rpb25zRHJvcERvd247XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuXHJcblxyXG4gIGFzeW5jIGNoYW5nZVRhYmxlTGF5b3V0KGV2ZW50OiBFdmVudCwgbGF5b3V0VHlwZTogc3RyaW5nKSB7XHJcbiAgICBsZXQgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XHJcblxyXG4gICAgaWYgKHRhcmdldC5jaGVja2VkKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRUYWJsZUxheW91dCA9IGxheW91dFR5cGU7XHJcbiAgICAgIHRoaXMuc2V0VGFibGVMYXlvdXQobGF5b3V0VHlwZSlcclxuICAgICAgdGhpcy51cGRhdGVWaXNpYmxlUm93cyh0aGlzLm1haW5TY3JvbGw/Lm5hdGl2ZUVsZW1lbnQ/LnNjcm9sbFRvcCk7XHJcbiAgICAgIGF3YWl0IHRoaXMucmVmcmVzaEhlYWRlcnMoKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnRhYmxlRmlsdGVyVmlld0lkKSB7XHJcbiAgICAgIHRoaXMuc2F2ZVByZXNldCgnbW91c2VVcCcpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5vbkZvbnRDaGFuZ2UoKVxyXG4gIH1cclxuXHJcbiAgc2V0VGFibGVMYXlvdXQobGF5b3V0VHlwZTogc3RyaW5nKSB7XHJcbiAgICBpZighbGF5b3V0VHlwZSkgcmV0dXJuO1xyXG4gICAgaWYgKGxheW91dFR5cGUgPT09ICdzbWFsbCcpIHtcclxuICAgICAgdGhpcy5yb3dIZWlnaHQgPSAzNjtcclxuICAgICAgdGhpcy5oZWFkZXJSb3dIZWlnaHQgPSA0MDtcclxuICAgICAgdGhpcy5ib2R5VGV4dEZvbnRzU2l6ZSA9IDEwO1xyXG4gICAgICB0aGlzLmhlYWRlclRleHRGb250c1NpemUgPSAxMDtcclxuXHJcbiAgICB9IGVsc2UgaWYgKGxheW91dFR5cGUgPT09ICdtZWRpdW0nKSB7XHJcbiAgICAgIHRoaXMucm93SGVpZ2h0ID0gNDQ7XHJcbiAgICAgIHRoaXMuaGVhZGVyUm93SGVpZ2h0ID0gNDQ7XHJcbiAgICAgIHRoaXMuYm9keVRleHRGb250c1NpemUgPSAxNDtcclxuICAgICAgdGhpcy5oZWFkZXJUZXh0Rm9udHNTaXplID0gMTQ7XHJcblxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5yb3dIZWlnaHQgPSA2MDtcclxuICAgICAgdGhpcy5oZWFkZXJSb3dIZWlnaHQgPSA1MjtcclxuICAgICAgdGhpcy5ib2R5VGV4dEZvbnRzU2l6ZSA9IDE2O1xyXG4gICAgICB0aGlzLmhlYWRlclRleHRGb250c1NpemUgPSAxNjtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICBwYWdlU2l6ZU9wdGlvbnMgPSBbMTAsIDI1LCA1MCwgNzUsIDEwMCwgMTUwLCAyMDAsIDI1MCwgMzAwLCA1MDBdO1xyXG4gIGdldCBzdGFydEluZGV4RGF0YSgpIHtcclxuICAgIHJldHVybiAodGhpcy5wYWdpbmF0aW9uQ29uZmlnLnBhZ2UgLSAxKSAqIHRoaXMucGFnaW5hdGlvbkNvbmZpZy5saW1pdDtcclxuICB9XHJcblxyXG4gIGdldCBlbmRJbmRleCgpIHtcclxuICAgIHJldHVybiBNYXRoLm1pbih0aGlzLnN0YXJ0SW5kZXggKyB0aGlzLnBhZ2luYXRpb25Db25maWcubGltaXQsIHRoaXMucGFnaW5hdGlvbkNvbmZpZy50b3RhbFJlc3VsdHMpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHZpc2libGVQYWdlcygpOiAobnVtYmVyIHwgc3RyaW5nKVtdIHtcclxuICAgIGNvbnN0IHBhZ2VzOiAobnVtYmVyIHwgc3RyaW5nKVtdID0gW107XHJcblxyXG4gICAgaWYgKHRoaXMucGFnaW5hdGlvbkNvbmZpZy50b3RhbFBhZ2VzIDw9IDcpIHtcclxuICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPD0gdGhpcy5wYWdpbmF0aW9uQ29uZmlnLnRvdGFsUGFnZXM7IGkrKykge1xyXG4gICAgICAgIHBhZ2VzLnB1c2goaSk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHBhZ2VzLnB1c2goMSk7XHJcbiAgICAgIGlmICh0aGlzLnBhZ2luYXRpb25Db25maWcucGFnZSA+IDMpIHtcclxuICAgICAgICBwYWdlcy5wdXNoKCcuLi4nKTtcclxuICAgICAgfVxyXG4gICAgICBsZXQgc3RhcnQgPSBNYXRoLm1heCgyLCB0aGlzLnBhZ2luYXRpb25Db25maWcucGFnZSAtIDEpO1xyXG4gICAgICBsZXQgZW5kID0gTWF0aC5taW4odGhpcy5wYWdpbmF0aW9uQ29uZmlnLnRvdGFsUGFnZXMgLSAxLCB0aGlzLnBhZ2luYXRpb25Db25maWcucGFnZSArIDEpO1xyXG5cclxuICAgICAgZm9yIChsZXQgaSA9IHN0YXJ0OyBpIDw9IGVuZDsgaSsrKSB7XHJcbiAgICAgICAgcGFnZXMucHVzaChpKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHRoaXMucGFnaW5hdGlvbkNvbmZpZy5wYWdlIDwgdGhpcy5wYWdpbmF0aW9uQ29uZmlnLnRvdGFsUGFnZXMgLSAyKSB7XHJcbiAgICAgICAgcGFnZXMucHVzaCgnLi4uJyk7XHJcbiAgICAgIH1cclxuICAgICAgcGFnZXMucHVzaCh0aGlzLnBhZ2luYXRpb25Db25maWcudG90YWxQYWdlcyk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHBhZ2VzO1xyXG4gIH1cclxuXHJcblxyXG4gIHNlYXJjaFRleHRGb3JGaWx0ZXJEcm9wRG93biA9ICcnO1xyXG4gIHRvZ2dsZUNvbHVtbkluRmlsdGVyRHJvcGRvd24oY29sOiBhbnkpIHtcclxuXHJcbiAgfVxyXG5cclxuICByZW1vdmVDb2x1bW5Gcm9tRmlsdGVyKG9wdGlvbjogYW55KSB7XHJcblxyXG4gIH1cclxuXHJcbiAgaGFuZGxlQmFja3NwYWNlKGV2ZW50OiBFdmVudCkge1xyXG4gICAgLy8gSWYgc2VhcmNoIGlzIGVtcHR5LCByZW1vdmUgbGFzdCB0YWdcclxuICAgIGlmICghdGhpcy5zZWFyY2hUZXh0Rm9yRmlsdGVyRHJvcERvd24gJiYgdGhpcy5zZWxlY3RlZEZpbHRlck9wdGlvbnMubGVuZ3RoKSB7XHJcbiAgICAgIGNvbnN0IGxhc3QgPSB0aGlzLnNlbGVjdGVkRmlsdGVyT3B0aW9uc1t0aGlzLnNlbGVjdGVkRmlsdGVyT3B0aW9ucy5sZW5ndGggLSAxXTtcclxuICAgICAgdGhpcy50b2dnbGVTZWxlY3Rpb25JbkZpbHRlcihsYXN0KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2ZpbHRlck1lbnVlU2VhcmNoSW5wdXQnKSBmaWx0ZXJNZW51ZVNlYXJjaElucHV0ITogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PlxyXG4gIEBWaWV3Q2hpbGQoJ2ZpbHRlck1lbnVlVGV4dGNoSW5wdXQnKSBmaWx0ZXJNZW51ZVRleHRjaElucHV0ITogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PlxyXG5cclxuICBvcGVuRmlsdGVyb25UaHJlZURvdHNDbGljayhjb2w6IGFueSkge1xyXG4gICAgaWYgKGNvbC50eXBlID09ICdpbWFnZScgfHwgIWNvbD8udHlwZSkgcmV0dXJuO1xyXG4gICAgdGhpcy5zZWxlY3RlZENvbHVtbkZvckZpbHRlciA9IGNvbDtcclxuICAgIHRoaXMuaXNUaHJlZURvdHNGaWx0ZXJPcGVuID0gdHJ1ZTtcclxuICAgIHRoaXMuYWRkRmlsdGVyQ29sdW1uSW5wdXQgPSAnJztcclxuICAgIGlmIChjb2wudHlwZSA9PT0gJ2Ryb3Bkb3duJykge1xyXG4gICAgICB0aGlzLmN1cnJlbnRGaWx0ZXJTZWxlY3RlZElkcy5jbGVhcigpO1xyXG4gICAgICBjb25zdCBzYXZlZElkcyA9IGNvbD8ucXVlcnk/Ll9pZHMgfHwgW107XHJcbiAgICAgIHNhdmVkSWRzLmZvckVhY2goKGlkOiBzdHJpbmcpID0+IHRoaXMuY3VycmVudEZpbHRlclNlbGVjdGVkSWRzLmFkZChpZCkpO1xyXG5cclxuICAgICAgdGhpcy5zZWxlY3RlZEZpbHRlck9wdGlvbnMgPSB0aGlzLnNlbGVjdGVkQ29sdW1uRm9yRmlsdGVyPy5jb2x1bW5fZHJvcGRvd25fdmFsdWU/LmZpbHRlcihcclxuICAgICAgICAob3B0aW9uOiBhbnkpID0+IHRoaXMuY3VycmVudEZpbHRlclNlbGVjdGVkSWRzLmhhcyhvcHRpb24/LmlkIHx8IG9wdGlvbj8uX2lkIHx8IG9wdGlvbilcclxuICAgICAgKTtcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgaWYgKHRoaXMuZmlsdGVyTWVudWVTZWFyY2hJbnB1dCkge1xyXG4gICAgICAgICAgdGhpcy5maWx0ZXJNZW51ZVNlYXJjaElucHV0Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sIDEwMCk7XHJcbiAgICB9IGVsc2UgaWYgKFsnc3RyaW5nJywgJ251bWJlcicsICdkYXRlJ10uaW5jbHVkZXMoY29sLnR5cGUpKSB7XHJcbiAgICAgIHRoaXMuZmlyc3RDb25kaXRpb24gPSBjb2wucXVlcnkuZmlyc3RfY29uZGl0aW9uID8gY29sLnF1ZXJ5LmZpcnN0X2NvbmRpdGlvbiA6IChjb2wudHlwZSA9PSAnZGF0ZScgPyAnZXF1YWwnIDogJ2NvbnRhaW4nKTtcclxuICAgICAgdGhpcy5maXJzdFZhbHVlID0gY29sPy5xdWVyeT8uZmlyc3RfdmFsdWUgfHwgJyc7XHJcbiAgICAgIHRoaXMuY29uZGl0aW9uID0gY29sPy5xdWVyeT8uY29uZGl0aW9uIHx8ICdub25lJztcclxuICAgICAgdGhpcy5zZWNvbmRDb25kaXRpb24gPSBjb2wucXVlcnkuZmlyc3RfY29uZGl0aW9uID8gY29sLnF1ZXJ5LmZpcnN0X2NvbmRpdGlvbiA6IChjb2wudHlwZSA9PSAnZGF0ZScgPyAnZXF1YWwnIDogJ2NvbnRhaW4nKTtcclxuICAgICAgdGhpcy5zZWNvbmRWYWx1ZSA9IGNvbD8ucXVlcnk/LnNlY29uZF92YWx1ZSB8fCAnJztcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5maWx0ZXJNZW51ZVRleHRjaElucHV0Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcclxuICAgICAgfSwgMTAwKTtcclxuICAgIH1cclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIGlzRmlsdGVyT3BlbiA9IGZhbHNlXHJcbiAgc2VsZWN0ZWRDb2x1bW5Gb3JGaWx0ZXI6IGFueTtcclxuICBzaG93RmlsdGVycyA9IHRoaXMuc2hvd1NpZGVNZW51ID8gZmFsc2UgOiBmYWxzZTtcclxuXHJcblxyXG4gIG9wZW5GaWx0ZXJGcm9tRGlzYWJsZWRTZWFyY2hlZElucHV0KGNvbDogYW55KSB7XHJcbiAgICBpZiAoY29sLnR5cGUgIT09ICdkcm9wZG93bicpIHJldHVybjtcclxuICAgIHRoaXMub3BlbkZpbHRlcihjb2wpO1xyXG4gIH1cclxuXHJcbiAgb3BlbkZpbHRlcihjb2w6IGFueSkge1xyXG4gICAgdGhpcy5hY3RpdmVGaWx0ZXJDZWxsID0gY29sO1xyXG4gICAgdGhpcy5hY3RpdmVDb2wgPSBudWxsXHJcbiAgICB0aGlzLmlzRmlsdGVyT3BlbiA9IHRydWU7XHJcbiAgICB0aGlzLnNlYXJjaFRleHRGb3JGaWx0ZXJEcm9wRG93biA9ICcnO1xyXG4gICAgdGhpcy5hZGRGaWx0ZXJDb2x1bW5JbnB1dCA9ICcnO1xyXG4gICAgdGhpcy5zZWxlY3RlZENvbHVtbkZvckZpbHRlciA9IGNvbDtcclxuXHJcbiAgICBpZiAoY29sLnR5cGUgPT09ICdkcm9wZG93bicpIHtcclxuICAgICAgdGhpcy5jdXJyZW50RmlsdGVyU2VsZWN0ZWRJZHMuY2xlYXIoKTtcclxuICAgICAgY29uc3Qgc2F2ZWRJZHMgPSBjb2w/LnF1ZXJ5Py5faWRzIHx8IFtdO1xyXG4gICAgICBzYXZlZElkcy5mb3JFYWNoKChpZDogc3RyaW5nKSA9PiB0aGlzLmN1cnJlbnRGaWx0ZXJTZWxlY3RlZElkcy5hZGQoaWQpKTtcclxuXHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRGaWx0ZXJPcHRpb25zID0gdGhpcy5zZWxlY3RlZENvbHVtbkZvckZpbHRlcj8uY29sdW1uX2Ryb3Bkb3duX3ZhbHVlPy5maWx0ZXIoXHJcbiAgICAgICAgKG9wdGlvbjogYW55KSA9PiB0aGlzLmN1cnJlbnRGaWx0ZXJTZWxlY3RlZElkcy5oYXMob3B0aW9uPy5pZCB8fCBvcHRpb24/Ll9pZCB8fCBvcHRpb24pXHJcbiAgICAgICk7XHJcbiAgICB9IGVsc2UgaWYgKFsnc3RyaW5nJywgJ251bWJlcicsICdkYXRlJ10uaW5jbHVkZXMoY29sLnR5cGUpKSB7XHJcbiAgICAgIHRoaXMuZmlyc3RDb25kaXRpb24gPSBjb2w/LnF1ZXJ5Py5maXJzdF9jb25kaXRpb24gfHwgJ2NvbnRhaW4nO1xyXG4gICAgICB0aGlzLmZpcnN0VmFsdWUgPSBjb2w/LnF1ZXJ5Py5maXJzdF92YWx1ZSB8fCAnJztcclxuICAgICAgdGhpcy5jb25kaXRpb24gPSBjb2w/LnF1ZXJ5Py5jb25kaXRpb24gfHwgJ25vbmUnO1xyXG4gICAgICB0aGlzLnNlY29uZENvbmRpdGlvbiA9IGNvbD8ucXVlcnk/LnNlY29uZF9jb25kaXRpb24gfHwgJ2NvbnRhaW4nO1xyXG4gICAgICB0aGlzLnNlY29uZFZhbHVlID0gY29sPy5xdWVyeT8uc2Vjb25kX3ZhbHVlIHx8ICcnO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcblxyXG4gIGZpcnN0VmFsdWU6IGFueSA9ICcnO1xyXG4gIGZpcnN0Q29uZGl0aW9uID0gJyc7XHJcbiAgc2Vjb25kVmFsdWU6IGFueSA9ICcnO1xyXG4gIHNlY29uZENvbmRpdGlvbiA9IG51bGw7XHJcbiAgY29uZGl0aW9uID0gJyc7XHJcblxyXG4gIHJlc2V0VGV4dEZpbHRlckNoYW5nZXMoKSB7XHJcbiAgICB0aGlzLmZpcnN0Q29uZGl0aW9uID0gJ2NvbnRhaW4nO1xyXG4gICAgdGhpcy5maXJzdFZhbHVlID0gJyc7XHJcbiAgICB0aGlzLmNvbmRpdGlvbiA9ICdub25lJztcclxuICAgIHRoaXMuc2Vjb25kQ29uZGl0aW9uID0gbnVsbDtcclxuICAgIHRoaXMuc2Vjb25kVmFsdWUgPSAnJztcclxuICAgIHRoaXMuaXNGaWx0ZXJPcGVuID0gZmFsc2U7XHJcbiAgICB0aGlzLmlzQWN0aXZlRmlsdGVyT3BlbiA9IGZhbHNlO1xyXG4gICAgdGhpcy5hY3RpdmVUb3BCdXR0b24gPSAnJztcclxuICB9XHJcblxyXG4gIHRvZ2dsZUFsbFZhbHVzU2VsZWN0aW9uSW5Ecm9wZG93bkZpbHRlcihjb2x1bW46IGFueSkge1xyXG5cclxuICB9XHJcblxyXG5cclxuICBzZWxlY3RlZEZpbHRlck9wdGlvbnM6IGFueVtdID0gW11cclxuXHJcbiAgY3VycmVudEZpbHRlclNlbGVjdGVkSWRzID0gbmV3IFNldDxzdHJpbmc+KCk7XHJcblxyXG4gIHRvZ2dsZVNlbGVjdGlvbkluRmlsdGVyKG9wdGlvbjogYW55KSB7XHJcbiAgICBkZWJ1Z2dlclxyXG4gICAgY29uc3QgaWQgPSBvcHRpb24uaWQgfHwgb3B0aW9uLl9pZCB8fCBvcHRpb247XHJcbiAgICBpZiAodGhpcy5jdXJyZW50RmlsdGVyU2VsZWN0ZWRJZHMuaGFzKGlkKSkge1xyXG4gICAgICB0aGlzLmN1cnJlbnRGaWx0ZXJTZWxlY3RlZElkcy5kZWxldGUoaWQpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5jdXJyZW50RmlsdGVyU2VsZWN0ZWRJZHMuYWRkKGlkKTtcclxuICAgIH1cclxuICAgIHRoaXMuc2VsZWN0ZWRGaWx0ZXJPcHRpb25zID0gdGhpcy5zZWxlY3RlZENvbHVtbkZvckZpbHRlcj8uY29sdW1uX2Ryb3Bkb3duX3ZhbHVlLmZpbHRlcigob3B0aW9uOiBhbnkpID0+IHRoaXMuY3VycmVudEZpbHRlclNlbGVjdGVkSWRzLmhhcyhvcHRpb24uaWQgfHwgb3B0aW9uLl9pZCB8fCBvcHRpb24pKVxyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgcmVzZXRGaWx0ZXJDaGFuZ2VzKCkge1xyXG4gICAgdGhpcy5pc0ZpbHRlck9wZW4gPSBmYWxzZTtcclxuICAgIHRoaXMuY3VycmVudEZpbHRlclNlbGVjdGVkSWRzLmNsZWFyKCk7XHJcbiAgICB0aGlzLnNlbGVjdGVkRmlsdGVyT3B0aW9ucyEubGVuZ3RoID0gMDtcclxuICAgIHRoaXMuaXNBY3RpdmVGaWx0ZXJPcGVuID0gZmFsc2U7XHJcbiAgICB0aGlzLmFjdGl2ZVRvcEJ1dHRvbiA9ICcnO1xyXG4gICAgLy8gY29uc3QgZmlsdGVyZWRDb2x1bW5zID0gdGhpcy5jb21tb25TZXZpY2UuZ2V0RmlsdGVyc0Zyb21Db2x1bW5zKHRoaXMuY29sdW1ucyk7XHJcbiAgICAvLyBjb25zb2xlLmxvZyhcIkZpbHRlcmVkIENvbHVtbnMgQXJlOiBcIiwgZmlsdGVyZWRDb2x1bW5zKTtcclxuICB9XHJcblxyXG4gIGFwcGx5RHJvcGRvd25GaWx0ZXIoKSB7XHJcbiAgICB0aGlzLmlzRmlsdGVyT3BlbiA9IGZhbHNlO1xyXG4gICAgdGhpcy5pc0FjdGl2ZUZpbHRlck9wZW4gPSBmYWxzZTtcclxuICAgIHRoaXMuYWN0aXZlVG9wQnV0dG9uID0gJyc7XHJcbiAgICB0aGlzLmFjdGl2ZUZpbHRlckNlbGwgPSBudWxsO1xyXG4gICAgdGhpcy5pc1RocmVlRG90c0ZpbHRlck9wZW4gPSBmYWxzZTtcclxuICAgIGNvbnN0IGZpbmRDb2x1bW4gPSAoY29sdW1uczogYW55W10sIGZpZWxkOiBzdHJpbmcpOiBhbnkgPT4ge1xyXG4gICAgICBmb3IgKGNvbnN0IGNvbCBvZiBjb2x1bW5zKSB7XHJcbiAgICAgICAgaWYgKGNvbC5maWVsZCA9PT0gZmllbGQpIHJldHVybiBjb2w7XHJcbiAgICAgICAgaWYgKGNvbC5jaGlsZHJlbiAmJiBjb2wuY2hpbGRyZW4ubGVuZ3RoKSB7XHJcbiAgICAgICAgICBjb25zdCBmb3VuZCA9IGZpbmRDb2x1bW4oY29sLmNoaWxkcmVuLCBmaWVsZCk7XHJcbiAgICAgICAgICBpZiAoZm91bmQpIHJldHVybiBmb3VuZDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IGNvbHVtbiA9IGZpbmRDb2x1bW4odGhpcy5jb2x1bW5zLCB0aGlzLnNlbGVjdGVkQ29sdW1uRm9yRmlsdGVyLmZpZWxkKTtcclxuICAgIGlmIChjb2x1bW4pIHtcclxuICAgICAgaWYgKGNvbHVtbi50eXBlID09PSAnZHJvcGRvd24nKSB7XHJcbiAgICAgICAgY29sdW1uLnF1ZXJ5ID0gY29sdW1uLnF1ZXJ5IHx8IHt9O1xyXG4gICAgICAgIGNvbHVtbi5xdWVyeS5faWRzID0gY29sdW1uLnF1ZXJ5Ll9pZHMgfHwgW107XHJcblxyXG4gICAgICAgIC8vIFJlbW92ZSBzdGFsZSBJRHMgKG5vdCBwcmVzZW50IGluIFNldClcclxuICAgICAgICBjb2x1bW4ucXVlcnkuX2lkcyA9IGNvbHVtbi5xdWVyeS5faWRzLmZpbHRlcihcclxuICAgICAgICAgIChpZDogYW55KSA9PiB0aGlzLmN1cnJlbnRGaWx0ZXJTZWxlY3RlZElkcy5oYXMoaWQpICAgLy8gPC0tIHVzZSAuaGFzKClcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICAvLyBBZGQgbmV3IG9uZXMgaWYgbWlzc2luZ1xyXG4gICAgICAgIHRoaXMuY3VycmVudEZpbHRlclNlbGVjdGVkSWRzLmZvckVhY2goaWQgPT4ge1xyXG4gICAgICAgICAgaWYgKCFjb2x1bW4ucXVlcnkuX2lkcy5pbmNsdWRlcyhpZCkpIHtcclxuICAgICAgICAgICAgY29sdW1uLnF1ZXJ5Ll9pZHMucHVzaChpZCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICB9IGVsc2UgaWYgKFsnc3RyaW5nJywgJ251bWJlcicsICdkYXRlJ10uaW5jbHVkZXMoY29sdW1uLnR5cGUpKSB7XHJcbiAgICAgICAgY29sdW1uLnF1ZXJ5ID0ge1xyXG4gICAgICAgICAgZmlyc3RfY29uZGl0aW9uOiB0aGlzLmZpcnN0Q29uZGl0aW9uIHx8ICdjb250YWluJyxcclxuICAgICAgICAgIGZpcnN0X3ZhbHVlOiB0aGlzLmZpcnN0VmFsdWUgfHwgbnVsbCxcclxuICAgICAgICAgIGNvbmRpdGlvbjogdGhpcy5zZWNvbmRWYWx1ZSA/IHRoaXMuY29uZGl0aW9uOiAnbm9uZScsXHJcbiAgICAgICAgICBzZWNvbmRfY29uZGl0aW9uOiAgdGhpcy5zZWNvbmRWYWx1ZSA/IHRoaXMuc2Vjb25kQ29uZGl0aW9uIDogbnVsbCxcclxuICAgICAgICAgIHNlY29uZF92YWx1ZTogdGhpcy5zZWNvbmRWYWx1ZSB8fCBudWxsLFxyXG4gICAgICAgIH07XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBmaWx0ZXIgPSB7XHJcbiAgICAgIGZpZWxkOiBjb2x1bW4uZmllbGQsXHJcbiAgICAgIHNlYXJjaDogY29sdW1uLnNlYXJjaCxcclxuICAgICAgcXVlcnk6IGNvbHVtbi5xdWVyeSxcclxuICAgICAgdHlwZTogY29sdW1uLnR5cGUsXHJcbiAgICAgIF9pZHM6IGNvbHVtbi5faWRzXHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IGV4aXN0aW5nSW5kZXggPSB0aGlzLmZpbHRlcnNDb25maWcuZmluZEluZGV4KGYgPT4gZi5maWVsZCA9PT0gY29sdW1uLmZpZWxkKTtcclxuXHJcbiAgICBpZiAoZXhpc3RpbmdJbmRleCAhPT0gLTEpIHtcclxuICAgICAgdGhpcy5maWx0ZXJzQ29uZmlnW2V4aXN0aW5nSW5kZXhdID0gZmlsdGVyO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5maWx0ZXJzQ29uZmlnLnB1c2goZmlsdGVyKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmlzRmlsdGVyT3BlbiA9IGZhbHNlO1xyXG4gICAgdGhpcy5hY3RpdmVDb2wgPSBudWxsO1xyXG4gICAgdGhpcy5pc0FjdGl2ZUZpbHRlck9wZW4gPSBmYWxzZTtcclxuICAgIHRoaXMuYWN0aXZlVG9wQnV0dG9uID0gJyc7XHJcbiAgICB0aGlzLmFjdGl2ZUZpbHRlckNlbGwgPSBudWxsO1xyXG4gICAgdGhpcy5pc1RocmVlRG90c0ZpbHRlck9wZW4gPSBmYWxzZTtcclxuICAgIGNvbnN0IHNlbmREYXRhID0ge1xyXG4gICAgICBjb2x1bW5zOiB0aGlzLmNsZWFuQ29sdW1ucyh0aGlzLmNvbHVtbnMpLFxyXG4gICAgICBmaWx0ZXJzOiB0aGlzLmNsZWFuRmlsdGVyZENvbHVtbnMoKSxcclxuICAgICAgbm9fb2ZfcmVjb3JkczogTnVtYmVyKHRoaXMucGFnaW5hdGlvbkNvbmZpZy5saW1pdCksXHJcbiAgICAgIHR5cGU6IHRoaXMudGFibGVUeXBlLFxyXG4gICAgfTtcclxuICAgIHRoaXMuY3JlYXRlVXBkYXRlQ29uZmlnTGlzdGluZy5lbWl0KHNlbmREYXRhKTtcclxuXHJcbiAgICBjb25zdCBmaWx0ZXJzID0gdGhpcy5jbGVhbkZpbHRlcmRDb2x1bW5zKClcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLmZpbHRlck9wdGlvbnMuZW1pdChmaWx0ZXJzKTtcclxuICAgIH0sIDIwMCk7XHJcbiAgfVxyXG5cclxuICAvLyBhcHBseUZpbHRlckZyb21GaWx0ZXJSb3coY29sdW1uOiBhbnkpIHtcclxuICAvLyAgIGNvbnN0IGZpbHRlciA9IHtcclxuICAvLyAgICAgZmllbGQ6IGNvbHVtbi5maWVsZCxcclxuICAvLyAgICAgc2VhcmNoOiBjb2x1bW4uc2VhcmNoLFxyXG4gIC8vICAgICBxdWVyeTogY29sdW1uLnF1ZXJ5LFxyXG4gIC8vICAgICB0eXBlOiBjb2x1bW4udHlwZSxcclxuICAvLyAgICAgX2lkczogY29sdW1uLl9pZHNcclxuICAvLyAgIH07XHJcbiAgLy8gICB0aGlzLmZpbHRlcnNDb25maWcucHVzaChmaWx0ZXIpO1xyXG4gIC8vICAgdGhpcy5pc0ZpbHRlck9wZW4gPSBmYWxzZTtcclxuICAvLyAgIHRoaXMuaXNBY3RpdmVGaWx0ZXJPcGVuID0gZmFsc2U7XHJcbiAgLy8gICB0aGlzLmFjdGl2ZVRvcEJ1dHRvbiA9ICcnO1xyXG4gIC8vICAgdGhpcy5hY3RpdmVGaWx0ZXJDZWxsID0gbnVsbDtcclxuICAvLyAgIHRoaXMuaXNUaHJlZURvdHNGaWx0ZXJPcGVuID0gZmFsc2U7XHJcbiAgLy8gICBjb25zdCBmaWx0ZXJlZENvbHVtbnMgPSB0aGlzLmNvbW1vblNldmljZS5nZXRGaWx0ZXJzRnJvbUNvbHVtbnModGhpcy5jb2x1bW5zLCB0aGlzLmZpbHRlcnNDb25maWcpO1xyXG4gIC8vICAgdGhpcy5maWx0ZXJPcHRpb25zLmVtaXQoZmlsdGVyZWRDb2x1bW5zKTtcclxuICAvLyB9XHJcblxyXG4gIGlzRmlsdGVyQXBwbGllZE9uQ29sdW1uKGNvbHVtbjogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5maWx0ZXJzQ29uZmlnLnNvbWUoY29sID0+IGNvbC5maWVsZCA9PT0gY29sdW1uLmZpZWxkKTtcclxuICB9XHJcblxyXG4gIC8vIFNpZGUgRmlsdGVycyBMb2dpYyBpcyBoZXJlXHJcblxyXG4gIHRvZ2dsZVNlbGVjdEFsbFNpZGVGaWx0ZXJzKGNvbDogYW55LCBldmVudDogRXZlbnQpIHtcclxuICAgIGNvbnN0IGNoZWNrZWQgPSAoZXZlbnQ/LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KT8uY2hlY2tlZDtcclxuXHJcbiAgICBpZiAoY2hlY2tlZCkge1xyXG4gICAgICBjb2wucXVlcnkuX2lkcyA9IGNvbD8uY29sdW1uX2Ryb3Bkb3duX3ZhbHVlPy5tYXAoXHJcbiAgICAgICAgKG9wdDogYW55KSA9PiBvcHQuaWQgfHwgb3B0Ll9pZCB8fCBvcHRcclxuICAgICAgKTtcclxuICAgICAgdGhpcy5jdXJyZW50RmlsdGVyU2VsZWN0ZWRJZHMgPSBuZXcgU2V0PHN0cmluZz4oY29sLnF1ZXJ5Ll9pZHMpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29sLnF1ZXJ5Ll9pZHMgPSBbXTtcclxuICAgICAgdGhpcy5jdXJyZW50RmlsdGVyU2VsZWN0ZWRJZHMuY2xlYXIoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICBpc0FsbFNpZGVGaWx0ZXJPcHRpb25zU2VsZWN0ZWQoY29sOiBhbnkpOiBib29sZWFuIHtcclxuICAgIGlmICghY29sPy5xdWVyeT8uX2lkcyB8fCAhQXJyYXkuaXNBcnJheShjb2wuY29sdW1uX2Ryb3Bkb3duX3ZhbHVlKSkgcmV0dXJuIGZhbHNlO1xyXG4gICAgcmV0dXJuIGNvbC5xdWVyeS5faWRzLmxlbmd0aCA9PT0gY29sLmNvbHVtbl9kcm9wZG93bl92YWx1ZS5sZW5ndGg7XHJcbiAgfVxyXG5cclxuICBvbk9wdGlvblRvZ2dsZShjb2w6IGFueSwgb3B0aW9uOiBhbnkpIHtcclxuICAgIGNvbnN0IG9wdGlvbklkID0gb3B0aW9uLmlkIHx8IG9wdGlvbi5faWQgfHwgb3B0aW9uO1xyXG4gICAgaWYgKCFjb2wucXVlcnkuX2lkcykge1xyXG4gICAgICBjb2wucXVlcnkuX2lkcyA9IFtdO1xyXG4gICAgfVxyXG4gICAgY29uc3QgaWR4ID0gY29sLnF1ZXJ5Ll9pZHMuaW5kZXhPZihvcHRpb25JZCk7XHJcbiAgICBpZiAoaWR4ID4gLTEpIHtcclxuICAgICAgY29sLnF1ZXJ5Ll9pZHMuc3BsaWNlKGlkeCwgMSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb2wucXVlcnkuX2lkcy5wdXNoKG9wdGlvbklkKTtcclxuICAgIH1cclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG5cclxuXHJcblxyXG4gIHJlc2V0U2lkZUZpbHRlcihjb2w6IGFueSkge1xyXG4gICAgY29uc3QgcmVzZXRDb2x1bW5SZWN1cnNpdmVseSA9IChjb2x1bW5zOiBhbnlbXSk6IGJvb2xlYW4gPT4ge1xyXG4gICAgICBmb3IgKGNvbnN0IGNvbHVtbiBvZiBjb2x1bW5zKSB7XHJcbiAgICAgICAgaWYgKGNvbHVtbi5maWVsZCA9PT0gY29sLmZpZWxkKSB7XHJcbiAgICAgICAgICBjb2x1bW4ucXVlcnkgPSB7XHJcbiAgICAgICAgICAgIF9pZHM6IFtdLFxyXG4gICAgICAgICAgICBmaXJzdF9jb25kaXRpb246ICdjb250YWluJyxcclxuICAgICAgICAgICAgZmlyc3RfdmFsdWU6IG51bGwsXHJcbiAgICAgICAgICAgIGNvbmRpdGlvbjogJ25vbmUnLFxyXG4gICAgICAgICAgICBzZWNvbmRfY29uZGl0aW9uOiAnY29udGFpbicsXHJcbiAgICAgICAgICAgIHNlY29uZF92YWx1ZTogbnVsbFxyXG4gICAgICAgICAgfTtcclxuICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShjb2x1bW4/LmNoaWxkcmVuKSAmJiBjb2x1bW4/LmNoaWxkcmVuPy5sZW5ndGgpIHtcclxuICAgICAgICAgIGlmIChyZXNldENvbHVtblJlY3Vyc2l2ZWx5KGNvbHVtbi5jaGlsZHJlbikpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH07XHJcbiAgICByZXNldENvbHVtblJlY3Vyc2l2ZWx5KHRoaXMuY29sdW1ucyk7XHJcbiAgICBjb25zdCBpbmRleCA9IHRoaXMuZmlsdGVyc0NvbmZpZy5maW5kSW5kZXgoKGY6IGFueSkgPT4gZi5maWVsZCA9PT0gY29sLmZpZWxkKTtcclxuICAgIGlmIChpbmRleCAhPT0gLTEpIHtcclxuICAgICAgdGhpcy5maWx0ZXJzQ29uZmlnLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmFjdGl2ZUZpbHRlckNlbGwgPSBudWxsO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgY29uc3Qgc2VuZERhdGEgPSB7XHJcbiAgICAgIGNvbHVtbnM6IHRoaXMuY2xlYW5Db2x1bW5zKHRoaXMuY29sdW1ucyksXHJcbiAgICAgIGZpbHRlcnM6IHRoaXMuY2xlYW5GaWx0ZXJkQ29sdW1ucygpLFxyXG4gICAgICBub19vZl9yZWNvcmRzOiBOdW1iZXIodGhpcy5wYWdpbmF0aW9uQ29uZmlnLmxpbWl0KSxcclxuICAgICAgdHlwZTogdGhpcy50YWJsZVR5cGUsXHJcbiAgICB9O1xyXG4gICAgdGhpcy5jcmVhdGVVcGRhdGVDb25maWdMaXN0aW5nLmVtaXQoc2VuZERhdGEpO1xyXG5cclxuICAgIGNvbnN0IGZpbHRlcnMgPSB0aGlzLmNsZWFuRmlsdGVyZENvbHVtbnMoKVxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuZmlsdGVyT3B0aW9ucy5lbWl0KGZpbHRlcnMpO1xyXG4gICAgfSwgMjAwKTtcclxuICB9XHJcblxyXG5cclxuICBjbGVhckFsbEZpbHRlcnMoKSB7XHJcbiAgICB0aGlzLnRhYmxlVmlldz8uZm9yRWFjaCgoZWxlKSA9PiB7IGVsZS5pc190ZW1wID0gZmFsc2UgfSk7XHJcbiAgICBjb25zdCByZXNldEFsbFJlY3Vyc2l2ZWx5ID0gKGNvbHVtbnM6IGFueVtdKSA9PiB7XHJcbiAgICAgIGZvciAoY29uc3QgY29sdW1uIG9mIGNvbHVtbnMpIHtcclxuICAgICAgICBpZiAoY29sdW1uLnF1ZXJ5KSB7XHJcbiAgICAgICAgICBjb2x1bW4ucXVlcnkgPSB7XHJcbiAgICAgICAgICAgIF9pZHM6IFtdLFxyXG4gICAgICAgICAgICBmaXJzdF9jb25kaXRpb246ICdjb250YWluJyxcclxuICAgICAgICAgICAgZmlyc3RfdmFsdWU6IG51bGwsXHJcbiAgICAgICAgICAgIGNvbmRpdGlvbjogJ25vbmUnLFxyXG4gICAgICAgICAgICBzZWNvbmRfY29uZGl0aW9uOiAnY29udGFpbicsXHJcbiAgICAgICAgICAgIHNlY29uZF92YWx1ZTogbnVsbFxyXG4gICAgICAgICAgfTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoY29sdW1uPy5jaGlsZHJlbikgJiYgY29sdW1uLmNoaWxkcmVuLmxlbmd0aCkge1xyXG4gICAgICAgICAgcmVzZXRBbGxSZWN1cnNpdmVseShjb2x1bW4uY2hpbGRyZW4pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfTtcclxuICAgIHJlc2V0QWxsUmVjdXJzaXZlbHkodGhpcy5jb2x1bW5zKTtcclxuICAgIHRoaXMuYWN0aXZlRmlsdGVyQ2VsbCA9IG51bGw7XHJcbiAgICB0aGlzLmZpbHRlcnNDb25maWcgPSBbXTtcclxuICAgIHRoaXMucmVmcmVzaFByZXZpZXdDb2x1bW5zKCk7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB0aGlzLnJvd1NoYWRpbmdFbmFibGVkID0gZmFsc2U7XHJcbiAgICB0aGlzLnNob3dWZXJ0aWNhbEJvcmRlciA9IGZhbHNlO1xyXG4gICAgdGhpcy5mb250RmFpbWx5ID0gJ0ludGVyJztcclxuICAgIHRoaXMuaGVhZGVyVGV4dEZvbnRzU2l6ZSA9IDE0O1xyXG4gICAgdGhpcy5zZWxlY3RlZFRhYmxlTGF5b3V0ID0gJ21lZGl1bWQnO1xyXG4gICAgdGhpcy5ib2R5VGV4dEZvbnRzU2l6ZSA9IDE0O1xyXG4gICAgdGhpcy5nbG9iYWxTZWFyY2hUZXh0ID0gJyc7XHJcbiAgICBjb25zdCBldmVudCA9IHsgZXZlbnRUeXBlOiAncmVzZXQnLCBkYXRhOiB7IHRhYmxlVHlwZTogdGhpcy50YWJsZVR5cGUgfSB9O1xyXG4gICAgY29uc3Qgc2VuZERhdGEgPSB7XHJcbiAgICAgIGNvbHVtbnM6IHRoaXMuY2xlYW5Db2x1bW5zKHRoaXMuY29sdW1ucyksXHJcbiAgICAgIGZpbHRlcnM6IFtdLFxyXG4gICAgICBub19vZl9yZWNvcmRzOiBOdW1iZXIodGhpcy5wYWdpbmF0aW9uQ29uZmlnLmxpbWl0KSxcclxuICAgICAgdHlwZTogdGhpcy50YWJsZVR5cGUsXHJcbiAgICB9O1xyXG4gICAgdGhpcy5jcmVhdGVVcGRhdGVDb25maWdMaXN0aW5nLmVtaXQoc2VuZERhdGEpO1xyXG5cclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICBjb25zdCBmaWx0ZXJlZENvbHVtbnMgPSB0aGlzLmNsZWFuRmlsdGVyZENvbHVtbnMoKTtcclxuICAgICAgdGhpcy5nZW5lcmljRXZlbnQuZW1pdChldmVudCk7XHJcbiAgICAgIHRoaXMuZmlsdGVyT3B0aW9ucy5lbWl0KGZpbHRlcmVkQ29sdW1ucyk7XHJcbiAgICB9LCAzMDApO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcblxyXG4gIGFwcGx5U2lkZUZpbHRlcihjb2x1bW46IGFueSkge1xyXG4gICAgaWYgKCFjb2x1bW4ucXVlcnkuZmlyc3RfdmFsdWUgJiYgIWNvbHVtbj8ucXVlcnk/Ll9pZHMubGVuZ3RoKSByZXR1cm47XHJcbiAgICBjb25zdCBmaWx0ZXIgPSB7XHJcbiAgICAgIGZpZWxkOiBjb2x1bW4uZmllbGQsXHJcbiAgICAgIHNlYXJjaDogY29sdW1uLnNlYXJjaCxcclxuICAgICAgcXVlcnk6IGNvbHVtbi5xdWVyeSxcclxuICAgICAgdHlwZTogY29sdW1uLnR5cGUsXHJcbiAgICAgIF9pZHM6IGNvbHVtbi5faWRzIHx8IFtdXHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IGV4aXN0aW5nSW5kZXggPSB0aGlzLmZpbHRlcnNDb25maWcuZmluZEluZGV4KGYgPT4gZi5maWVsZCA9PT0gY29sdW1uLmZpZWxkKTtcclxuXHJcbiAgICBpZiAoZXhpc3RpbmdJbmRleCAhPT0gLTEpIHtcclxuICAgICAgLy8gUmVwbGFjZSB0aGUgZXhpc3RpbmcgZmlsdGVyXHJcbiAgICAgIHRoaXMuZmlsdGVyc0NvbmZpZ1tleGlzdGluZ0luZGV4XSA9IGZpbHRlcjtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIC8vIEFkZCBuZXcgZmlsdGVyXHJcbiAgICAgIHRoaXMuZmlsdGVyc0NvbmZpZy5wdXNoKGZpbHRlcik7XHJcbiAgICB9XHJcbiAgICBjb25zdCBzZW5kRGF0YSA9IHtcclxuICAgICAgY29sdW1uczogdGhpcy5jbGVhbkNvbHVtbnModGhpcy5jb2x1bW5zKSxcclxuICAgICAgZmlsdGVyczogdGhpcy5jb21tb25TZXZpY2UuZ2V0RmlsdGVyc0Zyb21Db2x1bW5zKHRoaXMuY29sdW1ucywgdGhpcy5maWx0ZXJzQ29uZmlnKS5tYXAoKHsgcXVlcnksIC4uLnJlc3QgfSkgPT4ge1xyXG4gICAgICAgIGlmIChxdWVyeSkge1xyXG4gICAgICAgICAgZGVsZXRlIHF1ZXJ5Ll9fdHlwZW5hbWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICBxdWVyeSxcclxuICAgICAgICAgIC4uLnJlc3QsXHJcbiAgICAgICAgfVxyXG4gICAgICB9KSxcclxuICAgICAgbm9fb2ZfcmVjb3JkczogTnVtYmVyKHRoaXMucGFnaW5hdGlvbkNvbmZpZy5saW1pdCksXHJcbiAgICAgIHR5cGU6IHRoaXMudGFibGVUeXBlLFxyXG4gICAgfTtcclxuICAgIHRoaXMuY3JlYXRlVXBkYXRlQ29uZmlnTGlzdGluZy5lbWl0KHNlbmREYXRhKTtcclxuXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgY29uc3QgZmlsdGVyZWRDb2x1bW5zID0gdGhpcy5jbGVhbkZpbHRlcmRDb2x1bW5zKCk7XHJcbiAgICAgIHRoaXMuZmlsdGVyT3B0aW9ucy5lbWl0KGZpbHRlcmVkQ29sdW1ucyk7XHJcbiAgICB9LCAyMDApO1xyXG4gIH1cclxuXHJcblxyXG4gIHJlbW92ZVNpZGVGaWx0ZXIoY29sdW1uOiBhbnkpIHtcclxuICAgIGlmICghY29sdW1uLnF1ZXJ5LmZpcnN0X3ZhbHVlICYmICFjb2x1bW4/LnF1ZXJ5Py5faWRzLmxlbmd0aCkgcmV0dXJuO1xyXG5cclxuICAgIGNvbnN0IGV4aXN0aW5nSW5kZXggPSB0aGlzLmZpbHRlcnNDb25maWcuZmluZEluZGV4KGYgPT4gZi5maWVsZCA9PT0gY29sdW1uLmZpZWxkKTtcclxuICAgIGlmIChleGlzdGluZ0luZGV4ICE9PSAtMSkge1xyXG4gICAgICB0aGlzLmZpbHRlcnNDb25maWcuc3BsaWNlKGV4aXN0aW5nSW5kZXgsIDEpO1xyXG4gICAgfVxyXG4gICAgY29uc3Qgc2VuZERhdGEgPSB7XHJcbiAgICAgIGNvbHVtbnM6IHRoaXMuY2xlYW5Db2x1bW5zKHRoaXMuY29sdW1ucyksXHJcbiAgICAgIGZpbHRlcnM6IHRoaXMuY29tbW9uU2V2aWNlLmdldEZpbHRlcnNGcm9tQ29sdW1ucyh0aGlzLmNvbHVtbnMsIHRoaXMuZmlsdGVyc0NvbmZpZykubWFwKCh7IHF1ZXJ5LCAuLi5yZXN0IH0pID0+IHtcclxuICAgICAgICBpZiAocXVlcnkpIHtcclxuICAgICAgICAgIGRlbGV0ZSBxdWVyeS5fX3R5cGVuYW1lO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgcXVlcnksXHJcbiAgICAgICAgICAuLi5yZXN0LFxyXG4gICAgICAgIH07XHJcbiAgICAgIH0pLFxyXG4gICAgICBub19vZl9yZWNvcmRzOiBOdW1iZXIodGhpcy5wYWdpbmF0aW9uQ29uZmlnLmxpbWl0KSxcclxuICAgICAgdHlwZTogdGhpcy50YWJsZVR5cGUsXHJcbiAgICB9O1xyXG4gICAgdGhpcy5jcmVhdGVVcGRhdGVDb25maWdMaXN0aW5nLmVtaXQoc2VuZERhdGEpO1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGNvbnN0IGZpbHRlcmVkQ29sdW1ucyA9IHRoaXMuY2xlYW5GaWx0ZXJkQ29sdW1ucygpO1xyXG4gICAgICB0aGlzLmZpbHRlck9wdGlvbnMuZW1pdChmaWx0ZXJlZENvbHVtbnMpO1xyXG4gICAgfSwgMjAwKTtcclxuICB9XHJcblxyXG4gIGNvbGxhcHNlQWxsRXhwYW5kZWRDZWxscygpIHtcclxuICAgIGlmICh0aGlzLmV4cGFuZGVkQ2VsbHM/LnNpemUgPiAwKSB7XHJcbiAgICAgIHRoaXMuZXhwYW5kZWRDZWxscy5jbGVhcigpO1xyXG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcblxyXG4gIHRyYWNrQnlGaWVsZChpbmRleDogbnVtYmVyLCBjb2w6IGFueSk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gY29sPy5maWVsZDtcclxuICB9XHJcblxyXG4gIGdldCBhY3RpdmVGaWx0ZXJlZENvbHVtbnMoKTogYW55W10ge1xyXG4gICAgY29uc3QgY29sbGVjdEZpbHRlcmVkID0gKGNvbHVtbnM6IGFueVtdKTogYW55W10gPT4ge1xyXG4gICAgICBsZXQgcmVzdWx0OiBhbnlbXSA9IFtdO1xyXG5cclxuICAgICAgY29sdW1ucy5mb3JFYWNoKGNvbCA9PiB7XHJcbiAgICAgICAgaWYgKGNvbC5jaGlsZHJlbiAmJiBjb2wuY2hpbGRyZW4ubGVuZ3RoKSB7XHJcbiAgICAgICAgICByZXN1bHQgPSByZXN1bHQuY29uY2F0KGNvbGxlY3RGaWx0ZXJlZChjb2wuY2hpbGRyZW4pKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IGlzSW5GaWx0ZXJzQ29uZmlnID0gdGhpcy5maWx0ZXJzQ29uZmlnLnNvbWUoZiA9PiBmLmZpZWxkID09PSBjb2wuZmllbGQpO1xyXG4gICAgICAgIGlmIChpc0luRmlsdGVyc0NvbmZpZykge1xyXG4gICAgICAgICAgcmVzdWx0LnB1c2goY29sKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgIH07XHJcblxyXG4gICAgcmV0dXJuIGNvbGxlY3RGaWx0ZXJlZCh0aGlzLmNvbHVtbnMpO1xyXG4gIH1cclxuXHJcblxyXG5cclxuXHJcbiAgdG9nZ2xlT3BlbkZpbHRlcigpIHtcclxuICAgIHRoaXMuc2hvd0ZpbHRlcnMgPSAhdGhpcy5zaG93RmlsdGVycztcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG5cclxuXHJcblxyXG4gIC8vIENlbGwgRWRpdGluZyBXb3JrIHN0YXJ0IGhlcmVcclxuXHJcbiAgZWRpdGluZ0tleTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcbiAgYWN0aXZlQ2VsbDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIHNldEFjdGl2ZUNlbGwocm93OiBhbnksIGNvbHVtbjogYW55KSB7XHJcbiAgICB0aGlzLmFjdGl2ZUNlbGwgPSAoKHJvdy5pZCB8fCByb3cuX2lkKSArICctJyArIGNvbHVtbi5maWVsZCk7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBpc0FjdGl2ZUNlbGwocm93OiBhbnksIGNvbDogYW55KTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5hY3RpdmVDZWxsID09PSAoKHJvdy5pZCB8fCByb3cuX2lkKSArICctJyArIGNvbC5maWVsZCk7XHJcbiAgfVxyXG5cclxuICBAVmlld0NoaWxkKCd0ZXh0QXJlYWRJbnB1dCcpIHRleHRBcmVhZElucHV0ITogRWxlbWVudFJlZjxIVE1MVGV4dEFyZWFFbGVtZW50PjtcclxuICBlbmFibGVFZGl0KHJvdzogYW55LCBjb2x1bW46IGFueSwgY2xpY2tlZEZyb21EZXRhaWxzQm94ID0gZmFsc2UsIGNlbGxDb250YWluZXI/OiBIVE1MRWxlbWVudCkge1xyXG4gICAgdGhpcy5lZGl0aW5Ecm9wZG93blNlYXJjaCA9ICcnO1xyXG4gICAgaWYgKHJvdz8uX192aXJ0dWFsSW5kZXggPT0gMCkgcmV0dXJuO1xyXG4gICAgaWYgKGNvbHVtbi50eXBlID09ICdpbWFnZScgfHwgIWNvbHVtbj8uaXNfZWRpdGFibGUpIHJldHVybjtcclxuICAgIHRoaXMuZWRpdGluZ0tleSA9ICgocm93LmlkIHx8IHJvdy5faWQpICsgJy0nICsgY29sdW1uLmZpZWxkKTtcclxuXHJcbiAgICBpZiAoY29sdW1uLnR5cGUgPT09ICdkcm9wZG93bicpIHtcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgY29uc3QgZHJvcGRvd25NZW51ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmNlbGwtZWRpdGluZy1kcm9wZG93bi1tZW51JykgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICAgICAgaWYgKGRyb3Bkb3duTWVudSkge1xyXG4gICAgICAgICAgY29uc3QgcmVjdCA9IGRyb3Bkb3duTWVudS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuICAgICAgICAgIGNvbnN0IHdpbmRvd0hlaWdodCA9IHRoaXMuZGF0YUdyaWRDb250YWluZXIubmF0aXZlRWxlbWVudD8ub2Zmc2V0SGVpZ2h0O1xyXG5cclxuICAgICAgICAgIGlmIChyZWN0LmJvdHRvbSA+IHdpbmRvd0hlaWdodCkge1xyXG4gICAgICAgICAgICBkcm9wZG93bk1lbnUuc3R5bGUudG9wID0gYC0ke3JlY3QuaGVpZ2h0fXB4YDtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGRyb3Bkb3duTWVudS5zdHlsZS50b3AgPSAnMTAwJSc7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIWNsaWNrZWRGcm9tRGV0YWlsc0JveCAmJiB0aGlzLmdldE5lc3RlZFZhbHVlKHJvdywgY29sdW1uLmZpZWxkKT8ubGVuZ3RoID4gNTApIHtcclxuICAgICAgdGhpcy50b2dnbGVFeHBhbmRPZkxvbmdDZWxsVGV4dChyb3csIGNvbHVtbiwgdGhpcy5jb2x1bW5zLCBmYWxzZSlcclxuICAgIH1cclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICBpZiAoIWNlbGxDb250YWluZXIpIHJldHVybjtcclxuXHJcbiAgICAgIGNvbnN0IGZvY3VzYWJsZSA9IGNlbGxDb250YWluZXIucXVlcnlTZWxlY3RvcihcclxuICAgICAgICAnaW5wdXQsIHRleHRhcmVhLCBzZWxlY3QsIFtjb250ZW50ZWRpdGFibGU9XCJ0cnVlXCJdJ1xyXG4gICAgICApIGFzIEhUTUxFbGVtZW50IHwgbnVsbDtcclxuXHJcbiAgICAgIGlmIChmb2N1c2FibGUpIHtcclxuICAgICAgICAoZm9jdXNhYmxlIGFzIEhUTUxFbGVtZW50KS5zdHlsZS5mb250U2l6ZSA9ICcxNnB4JztcclxuICAgICAgICBmb2N1c2FibGUuZm9jdXMoKTtcclxuXHJcbiAgICAgICAgaWYgKGZvY3VzYWJsZSBpbnN0YW5jZW9mIEhUTUxJbnB1dEVsZW1lbnQgfHwgZm9jdXNhYmxlIGluc3RhbmNlb2YgSFRNTFRleHRBcmVhRWxlbWVudCkge1xyXG4gICAgICAgICAgZm9jdXNhYmxlLnNlbGVjdCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgIH0pO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcblxyXG4gIGRpc2FibGVFZGl0KHJvdzogYW55LCBjb2x1bW46IGFueSwgY29udHJvbD86IGFueSkge1xyXG4gICAgdGhpcy5yb3dTZWxlY3RlZEluZGV4ZXMuY2xlYXIoKTtcclxuICAgIGlmICghdGhpcy5lZGl0aW5nS2V5KSByZXR1cm5cclxuICAgIHRoaXMuY2hlY2tSb3dFZGl0QW5kRW1pdFZhbHVlKHJvdywgY29sdW1uLCByb3dbY29sdW1uLmZpZWxkXSlcclxuICAgIHRoaXMuZWRpdGluZ0tleSA9IG51bGw7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICBjb25zdCBjdXJyZW50ID0gdGhpcy5nZXROZXN0ZWRWYWx1ZShyb3csIGNvbHVtbj8uZmllbGQpO1xyXG4gICAgaWYgKCFjdXJyZW50IHx8IChjb2x1bW4udHlwZSA9PSAnZW1haWwnICYmICF0aGlzLnZhbGlkYXRlRW1haWwoY3VycmVudCkpKSB7XHJcbiAgICAgIGNvbnN0IG9yaWdpbmFsUm93ID0gdGhpcy5vcmlnaW5hbERhdGFTZXQuZmluZChpdGVtID0+IGl0ZW0uaWQgPT0gcm93LmlkIHx8IGl0ZW0uaWQgPT0gcm93Ll9pZCk7XHJcbiAgICAgIGNvbnN0IG9yaWdpbmFsID0gdGhpcy5nZXROZXN0ZWRWYWx1ZShvcmlnaW5hbFJvdywgY29sdW1uPy5maWVsZCk7XHJcbiAgICAgIHRoaXMuc2V0TmVzdGVkVmFsdWUocm93LCBjb2x1bW4sIG9yaWdpbmFsKTtcclxuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZW1haWxSZWdleCA9IC9eW2EtekEtWjAtOS5fJSstXStAW2EtekEtWjAtOS4tXStcXC5bYS16QS1aXXsyLH0kLztcclxuICB2YWxpZGF0ZUVtYWlsKHZhbHVlOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmVtYWlsUmVnZXgudGVzdCh2YWx1ZSk7XHJcbiAgfVxyXG4gIGFsbG93T25seU51bWJlcnMoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcclxuICAgIGNvbnN0IGNoYXJDb2RlID0gZXZlbnQud2hpY2ggPyBldmVudC53aGljaCA6IGV2ZW50LmtleUNvZGU7XHJcbiAgICBpZiAoY2hhckNvZGUgPCA0OCB8fCBjaGFyQ29kZSA+IDU3KSB7XHJcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjaGVja1Jvd0VkaXRBbmRFbWl0VmFsdWUocm93OiBhbnksIGNvbHVtbjogYW55LCB2YWx1ZT86IGFueSkge1xyXG4gICAgLy8gc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICBjb25zdCBvcmlnaW5hbFJvdyA9IHRoaXMub3JpZ2luYWxEYXRhU2V0Py5maW5kKFxyXG4gICAgICAocjogYW55KSA9PiByLmlkID09PSByb3cuaWQgfHwgci5faWQgPT09IHJvdy5faWRcclxuICAgICk7XHJcbiAgICBpZiAoIW9yaWdpbmFsUm93KSByZXR1cm47XHJcbiAgICAvLyBjb25zdCBjbGVhbiA9IChvYmo6IGFueSkgPT4gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShvYmopKTtcclxuICAgIC8vIGNvbnN0IGN1cnJlbnRWYWx1ZSA9IHRoaXMuZ2V0TmVzdGVkVmFsdWUocm93LCBjb2x1bW4uZmllbGQpO1xyXG4gICAgLy8gY29uc3Qgb3JpZ2luYWxWYWx1ZSA9IHRoaXMuZ2V0TmVzdGVkVmFsdWUob3JpZ2luYWxSb3csIGNvbHVtbi5maWVsZCk7XHJcbiAgICBjb25zdCBvcmlnaW5WYWx1ZSA9IHRoaXMuZGF0YVNldC5maW5kKChyOiBhbnkpID0+IHIuaWQgPT09IHJvdy5pZCk7XHJcbiAgICBjb25zdCBjaGFuZ2VkVmFsdWUgPSBvcmlnaW5WYWx1ZS52ZXJpZmllZCA9PSB2YWx1ZTtcclxuICAgIC8vIGlmIChjaGFuZ2VkVmFsdWUpIHJldHVybjtcclxuICAgIC8vIGNvbnN0IGhhc0NoYW5nZWQgPSB0aGlzLmNvbW1vblNldmljZS5oYXNGaWVsZENoYW5nZWQoY3VycmVudFZhbHVlLCBvcmlnaW5hbFZhbHVlLCBjb2x1bW4udHlwZSk7XHJcbiAgICAvLyBpZiAoIWhhc0NoYW5nZWQpIHJldHVybjtcclxuICAgIC8vIHRoaXMuc2V0TmVzdGVkVmFsdWUob3JpZ2luYWxSb3csIGNvbHVtbiwgdmFsdWUpO1xyXG5cclxuICAgIGNvbnN0IHNlbmRPYmogPSB7XHJcbiAgICAgIGRhdGE6IHsgLi4ub3JpZ2luVmFsdWUgfSxcclxuICAgICAgZXZlbnRUeXBlOiAnb25DZWxsRWRpdCcsXHJcbiAgICAgIHZhbHVlOiB2YWx1ZSxcclxuICAgICAgY29sdW1uOiBjb2x1bW5cclxuICAgIH07XHJcbiAgICByZXR1cm4gdGhpcy5nZW5lcmljRXZlbnQuZW1pdChzZW5kT2JqKVxyXG4gICAgLy8gfSwgMTAwKTtcclxuICB9XHJcblxyXG5cclxuICBpc0VkaXRpbmcocm93OiBhbnksIGNvbDogYW55KTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5lZGl0aW5nS2V5ID09PSAoKHJvdy5pZCB8fCByb3cuX2lkKSArICctJyArIGNvbC5maWVsZCk7XHJcbiAgfVxyXG5cclxuICBzZXROZXN0ZWRWYWx1ZShvYmo6IGFueSwgY29sdW1uOiBhbnksIG9wdGlvbjogYW55LCBjYWxsZWRGcm9tSW5wdXQgPSBmYWxzZSk6IHZvaWQge1xyXG4gICAgY29uc3QgcGF0aCA9IGNvbHVtbi5maWVsZDtcclxuICAgIGNvbnN0IGtleXMgPSBwYXRoLnNwbGl0KCcuJyk7XHJcbiAgICBjb25zdCBsYXN0S2V5ID0ga2V5cy5wb3AoKTtcclxuICAgIGNvbnN0IHBhcmVudCA9IGtleXMucmVkdWNlKChhY2M6IHsgW3g6IHN0cmluZ106IHt9OyB9LCBrZXk6IHN0cmluZyB8IG51bWJlcikgPT4gYWNjW2tleV0gPz89IHt9LCBvYmopO1xyXG5cclxuICAgIGlmIChwYXJlbnQgJiYgbGFzdEtleSkge1xyXG4gICAgICBpZiAodHlwZW9mIG9wdGlvbiA9PT0gJ29iamVjdCcgJiYgb3B0aW9uICE9PSBudWxsKSB7XHJcbiAgICAgICAgLy8gY2FzZTogZHJvcGRvd24gb2JqZWN0IHtpZCwgdmFsdWV9XHJcbiAgICAgICAgcGFyZW50LmlkID0gb3B0aW9uLmlkO1xyXG4gICAgICAgIHBhcmVudFtsYXN0S2V5XSA9IG9wdGlvbi52YWx1ZTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICAvLyBjYXNlOiBwbGFpbiBzdHJpbmcgb3IgbnVtYmVyXHJcbiAgICAgICAgcGFyZW50W2xhc3RLZXldID0gb3B0aW9uO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3Qgc2VuZE9iaiA9IHtcclxuICAgICAgZGF0YTogeyAuLi5vYmogfSxcclxuICAgICAgZXZlbnRUeXBlOiAnb25DZWxsRWRpdCcsXHJcbiAgICB9O1xyXG5cclxuICAgIGlmIChjYWxsZWRGcm9tSW5wdXQpIHtcclxuICAgICAgdGhpcy5jaGVja1Jvd0VkaXRBbmRFbWl0VmFsdWUob2JqLCBjb2x1bW4sIG9wdGlvbik7XHJcbiAgICB9XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG4gIGdvVG9QYWdlKHBhZ2U6IGFueSkge1xyXG4gICAgaWYgKHRoaXMucGFnaW5hdGlvbkNvbmZpZz8ucGFnZSA9PSBwYWdlKSByZXR1cm47XHJcbiAgICBpZiAocGFnZSA8IDEgfHwgcGFnZSA+IHRoaXMucGFnaW5hdGlvbkNvbmZpZy50b3RhbFBhZ2VzKSByZXR1cm47XHJcbiAgICB0aGlzLnBhZ2luYXRpb25Db25maWcucGFnZSA9IHBhZ2U7XHJcbiAgICBjb25zdCBldmVudCA9IHtcclxuICAgICAgb2JqOiB7XHJcbiAgICAgICAgbGltaXQ6IHRoaXMucGFnaW5hdGlvbkNvbmZpZy5saW1pdCxcclxuICAgICAgICBwYWdlOiBwYWdlLFxyXG4gICAgICB9LFxyXG4gICAgICBldmVudFR5cGU6ICdwYWdlQ2hhbmdlJyxcclxuICAgIH07XHJcbiAgICB0aGlzLmdlbmVyaWNFdmVudC5lbWl0KGV2ZW50KVxyXG4gIH1cclxuXHJcbiAgb25QYWdlU2l6ZUNoYW5nZSgpIHtcclxuICAgIHRoaXMucGFnaW5hdGlvbkNvbmZpZy5wYWdlID0gMTtcclxuICAgIGNvbnN0IHNlbmREYXRhID0ge1xyXG4gICAgICBjb2x1bW5zOiB0aGlzLmNsZWFuQ29sdW1ucyh0aGlzLmNvbHVtbnMpLFxyXG4gICAgICBmaWx0ZXJzOiB0aGlzLmNvbW1vblNldmljZS5nZXRGaWx0ZXJzRnJvbUNvbHVtbnModGhpcy5jb2x1bW5zLCB0aGlzLmZpbHRlcnNDb25maWcpLm1hcCgoeyBxdWVyeSwgLi4ucmVzdCB9KSA9PiB7XHJcbiAgICAgICAgaWYgKHF1ZXJ5KSB7XHJcbiAgICAgICAgICBkZWxldGUgcXVlcnkuX190eXBlbmFtZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgIHF1ZXJ5LFxyXG4gICAgICAgICAgLi4ucmVzdCxcclxuICAgICAgICB9XHJcbiAgICAgIH0pLFxyXG4gICAgICBub19vZl9yZWNvcmRzOiBOdW1iZXIodGhpcy5wYWdpbmF0aW9uQ29uZmlnLmxpbWl0KSxcclxuICAgICAgdHlwZTogdGhpcy50YWJsZVR5cGUsXHJcbiAgICB9O1xyXG4gICAgdGhpcy5jcmVhdGVVcGRhdGVDb25maWdMaXN0aW5nLmVtaXQoc2VuZERhdGEpO1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGNvbnN0IGV2ZW50ID0ge1xyXG4gICAgICAgIG9iajoge1xyXG4gICAgICAgICAgbGltaXQ6IHRoaXMucGFnaW5hdGlvbkNvbmZpZy5saW1pdCxcclxuICAgICAgICAgIHBhZ2U6IHRoaXMucGFnaW5hdGlvbkNvbmZpZy5wYWdlLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXZlbnRUeXBlOiAncGFnZUNoYW5nZScsXHJcbiAgICAgIH07XHJcbiAgICAgIHRoaXMuZ2VuZXJpY0V2ZW50LmVtaXQoZXZlbnQpXHJcbiAgICB9LCA3MDApO1xyXG4gIH1cclxuXHJcbiAgYWN0aW9uUHJlc2V0KGRhdGE6IGFueSwgdHlwZTogYW55KSB7XHJcbiAgICBkYXRhLmNvbHVtbnMgPSBkYXRhLmNvbHVtbnMubWFwKCh7IF9pZCwgZmlsdGVyVmFsdWUsIHNlYXJjaCwgY29sdW1uX2Ryb3Bkb3duX3ZhbHVlLCBxdWVyeSwgX190eXBlbmFtZSwgLi4ucmVzdCB9OiBhbnkpID0+IHJlc3QpO1xyXG4gICAgdGhpcy50YWJsZVZpZXc/LmZvckVhY2goKGVsZSkgPT4geyBlbGUuaXNfdGVtcCA9IGZhbHNlIH0pO1xyXG5cclxuICAgIHtcclxuICAgICAgdGhpcy5ib2R5VGV4dEZvbnRzU2l6ZSA9IGRhdGEuY29uZmlnLmJvZHlUZXh0Rm9udHNTaXplLFxyXG4gICAgICAgIHRoaXMuZm9udEZhaW1seSA9IGRhdGEuY29uZmlnLmZvbnRGYWltbHksXHJcbiAgICAgICAgZGF0YS5maWx0ZXJzLmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgZGVsZXRlIGVsZW1lbnQuX190eXBlbmFtZTtcclxuICAgICAgICAgIGlmIChlbGVtZW50LnF1ZXJ5KSB7XHJcbiAgICAgICAgICAgIGRlbGV0ZSBlbGVtZW50LnF1ZXJ5Ll9fdHlwZW5hbWU7XHJcbiAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICB0eXBlb2YgZWxlbWVudC5xdWVyeSA9PT0gJ29iamVjdCcgJiZcclxuICAgICAgICAgICAgICBlbGVtZW50LnF1ZXJ5ICE9PSBudWxsICYmXHJcbiAgICAgICAgICAgICAgT2JqZWN0LmtleXMoZWxlbWVudC5xdWVyeSkubGVuZ3RoID09PSAwXHJcbiAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgIGVsZW1lbnQucXVlcnkgPSBudWxsO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIHRoaXMuaGVhZGVyVGV4dEZvbnRzU2l6ZSA9IGRhdGEuY29uZmlnLmhlYWRlclRleHRGb250c1NpemUsXHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFRhYmxlTGF5b3V0ID0gZGF0YS5jb25maWcuc2VsZWN0ZWRUYWJsZUxheW91dCxcclxuICAgICAgICB0aGlzLnNob3dWZXJ0aWNhbEJvcmRlciA9IGRhdGEuY29uZmlnLnNob3dWZXJ0aWNhbEJvcmRlcixcclxuICAgICAgICB0aGlzLmN1cnJlbnRJZEZvclVwZGF0ZVByZXNldCA9IGRhdGEuaWQ7XHJcbiAgICAgIHRoaXMuZmlsdGVyc0NvbmZpZyA9IGRhdGEuZmlsdGVycztcclxuICAgIH1cclxuICAgIGRlbGV0ZSBkYXRhPy5fX3R5cGVuYW1lO1xyXG4gICAgZGVsZXRlIGRhdGE/LmlzX3RlbXA7XHJcbiAgICBkZWxldGUgZGF0YT8uY29uZmlnLl9fdHlwZW5hbWU7XHJcbiAgICBjb25zdCBldmVudCA9IHtcclxuICAgICAgb2JqOiB7XHJcbiAgICAgICAgZGF0YTogZGF0YVxyXG4gICAgICB9LFxyXG4gICAgICBldmVudFR5cGU6IHR5cGVcclxuICAgIH1cclxuICAgIHRoaXMuZ2VuZXJpY0V2ZW50LmVtaXQoZXZlbnQpXHJcbiAgfVxyXG5cclxuICBjdXJyZW50SWRGb3JVcGRhdGVQcmVzZXQgPSAnJztcclxuICBjdXJyZXRhVGFibGVQcmVzZXRGb3JVcGRhdGU6IGFueTtcclxuICB0ZW1wX3N0YXRlID0ge1xyXG4gICAgaWQ6ICcnLFxyXG4gICAgaXNfdGVtcDogZmFsc2VcclxuICB9XHJcbiAgYXN5bmMgc2VsZWN0RmlsdGVyKGRhdGE6IGFueSkge1xyXG4gICAgdGhpcy50ZW1wX3N0YXRlID0ge1xyXG4gICAgICBpZDogZGF0YS5pZCxcclxuICAgICAgaXNfdGVtcDogdHJ1ZVxyXG4gICAgfVxyXG4gICAgdGhpcy50YWJsZVZpZXc/LmZvckVhY2goKGVsZSkgPT4geyBlbGUuaXNfdGVtcCA9IGZhbHNlIH0pO1xyXG4gICAgdGhpcy50YWJsZVZpZXcgPSB0aGlzLnRhYmxlVmlldy5tYXAoaXRlbSA9PiAoe1xyXG4gICAgICAuLi5pdGVtLFxyXG4gICAgICBpc190ZW1wOiBpdGVtLmlkID09IGRhdGE/LmlkXHJcbiAgICB9KSk7XHJcbiAgICB0aGlzLmNvbHVtbnMgPSBkYXRhLmNvbHVtbnM7XHJcbiAgICB7XHJcbiAgICAgIHRoaXMuYm9keVRleHRGb250c1NpemUgPSBkYXRhLmNvbmZpZy5ib2R5VGV4dEZvbnRzU2l6ZSxcclxuICAgICAgICB0aGlzLmZvbnRGYWltbHkgPSBkYXRhLmNvbmZpZy5mb250RmFpbWx5LFxyXG4gICAgICAgIGRhdGEuZmlsdGVycy5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcclxuICAgICAgICAgIGRlbGV0ZSBlbGVtZW50Ll9fdHlwZW5hbWU7XHJcblxyXG4gICAgICAgICAgaWYgKGVsZW1lbnQucXVlcnkpIHtcclxuICAgICAgICAgICAgZGVsZXRlIGVsZW1lbnQucXVlcnkuX190eXBlbmFtZTtcclxuICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgIHR5cGVvZiBlbGVtZW50LnF1ZXJ5ID09PSAnb2JqZWN0JyAmJlxyXG4gICAgICAgICAgICAgIGVsZW1lbnQucXVlcnkgIT09IG51bGwgJiZcclxuICAgICAgICAgICAgICBPYmplY3Qua2V5cyhlbGVtZW50LnF1ZXJ5KS5sZW5ndGggPT09IDBcclxuICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgZWxlbWVudC5xdWVyeSA9IG51bGw7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgIC8vIHRoaXMuZ2xvYmFsU2VhcmNoID0gZGF0YS5jb25maWcuYm9keVRleHRGb250c1NpemUsXHJcbiAgICAgIHRoaXMuaGVhZGVyVGV4dEZvbnRzU2l6ZSA9IGRhdGEuY29uZmlnLmhlYWRlclRleHRGb250c1NpemUsXHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFRhYmxlTGF5b3V0ID0gZGF0YS5jb25maWcuc2VsZWN0ZWRUYWJsZUxheW91dCxcclxuICAgICAgICB0aGlzLnNob3dWZXJ0aWNhbEJvcmRlciA9IGRhdGEuY29uZmlnLnNob3dWZXJ0aWNhbEJvcmRlcixcclxuICAgICAgICB0aGlzLmN1cnJlbnRJZEZvclVwZGF0ZVByZXNldCA9IGRhdGEuaWQ7XHJcbiAgICAgIHRoaXMuY3VycmV0YVRhYmxlUHJlc2V0Rm9yVXBkYXRlID0gc3RydWN0dXJlZENsb25lKGRhdGEpO1xyXG4gICAgICB0aGlzLnByZXNldE5hbWUgPSBkYXRhPy5uYW1lO1xyXG4gICAgICB0aGlzLnByZXNldEZpbHRlciA9IGRhdGE/LmFjdGl2ZUZpbHRlcnMgfHwgZmFsc2U7XHJcbiAgICAgIHRoaXMuZmlsdGVyc0NvbmZpZyA9IGRhdGEuZmlsdGVycztcclxuICAgICAgYXdhaXQgdGhpcy5hcHBseUZpbHRlcm9wdGlvbkxpc3QoKTtcclxuICAgICAgdGhpcy5yZWZyZXNoSGVhZGVycygpO1xyXG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIGRhdGEuY29sdW1ucyA9IHRoaXMuY2xlYW5Db2x1bW5zKHRoaXMuY29sdW1ucyk7XHJcbiAgICAgIGRlbGV0ZSBkYXRhPy5fX3R5cGVuYW1lO1xyXG4gICAgICBkZWxldGUgZGF0YT8uaXNfdGVtcDtcclxuICAgICAgZGVsZXRlIGRhdGE/LmNvbmZpZy5fX3R5cGVuYW1lO1xyXG4gICAgfVxyXG4gICAgaWYgKGRhdGE/LmlzX2RlYWZ1bHQpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuYWN0aW9uUHJlc2V0KGRhdGEsICdzZXRQcmVzZXQnKVxyXG4gICAgfVxyXG4gICAgY29uc3QgZXZlbnQgPSB7XHJcbiAgICAgIG9iajoge1xyXG4gICAgICAgIGRhdGE6IGRhdGFcclxuICAgICAgfSxcclxuICAgICAgZXZlbnRUeXBlOiAnc2VsZWN0J1xyXG4gICAgfVxyXG4gICAgdGhpcy5nZW5lcmljRXZlbnQuZW1pdChldmVudClcclxuICB9XHJcblxyXG4gIHNhdmVQcmVzZXQoY29udHJvbD86IGFueSkge1xyXG4gICAgaWYgKGNvbnRyb2w/LmludmFsaWQpIHtcclxuICAgICAgY29udHJvbD8uY29udHJvbC5tYXJrQXNUb3VjaGVkKCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGxldCBuYW1lcyA9IHRoaXMuZ2V0RmlsdGVySGVhZGVycyh0aGlzLmZpbHRlcnNDb25maWcsIHRoaXMuY29sdW1ucyk7XHJcbiAgICB0aGlzLnByZXNldEZpbHRlciA9IHRoaXMudGFibGVGaWx0ZXJWaWV3SWQgPyB0cnVlIDogdGhpcy5wcmVzZXRGaWx0ZXI7XHJcbiAgICBsZXQgc2VsZWN0ZWREYXRhOiBhbnkgPSB0aGlzLnRhYmxlVmlldy5maW5kKChlbGUpID0+IGVsZS5pZCA9PSB0aGlzLnRhYmxlRmlsdGVyVmlld0lkKTtcclxuICAgIGxldCBjb25maWcgPSB7XHJcbiAgICAgIGZvbnRGYWltbHk6IHRoaXMuZm9udEZhaW1seSxcclxuICAgICAgYm9keVRleHRGb250c1NpemU6ICsodGhpcy5ib2R5VGV4dEZvbnRzU2l6ZSB8fCAxNCksXHJcbiAgICAgIGhlYWRlclRleHRGb250c1NpemU6ICsodGhpcy5oZWFkZXJUZXh0Rm9udHNTaXplIHx8IDE0KSxcclxuICAgICAgb2RkUm93c0JhY2tncm91bmRDb2xvcjogdGhpcy5yb3dTaGFkaW5nRW5hYmxlZCA/IHRoaXMub2RkUm93c0JhY2tncm91bmRDb2xvciA6IHVuZGVmaW5lZCxcclxuICAgICAgc2hvd1ZlcnRpY2FsQm9yZGVyOiB0aGlzLnNob3dWZXJ0aWNhbEJvcmRlcixcclxuICAgICAgc2VsZWN0ZWRUYWJsZUxheW91dDogdGhpcy5zZWxlY3RlZFRhYmxlTGF5b3V0LFxyXG4gICAgICBnbG9iYWxTZWFyY2g6IHRoaXMudGFibGVTZWFyY2gsXHJcbiAgICAgIGZpbHRlck5hbWVzOiBuYW1lcyxcclxuICAgICAgdG90YWxDb3VudDogdGhpcy5wYWdpbmF0aW9uQ29uZmlnLnRvdGFsUmVzdWx0cyxcclxuICAgICAgcm93U2hhZGluZ0VuYWJsZWQ6IHRoaXMucm93U2hhZGluZ0VuYWJsZWRcclxuXHJcbiAgICB9XHJcbiAgICBjb25zdCBldmVudCA9IHtcclxuICAgICAgb2JqOiB7XHJcbiAgICAgICAgbmFtZTogdGhpcy50YWJsZUZpbHRlclZpZXdJZCA/IHNlbGVjdGVkRGF0YT8ubmFtZSA6IHRoaXMucHJlc2V0TmFtZSxcclxuICAgICAgICBhY3RpdmVGaWx0ZXJzOiB0aGlzLnByZXNldEZpbHRlcixcclxuICAgICAgICBjb2x1bW5zOiB0aGlzLmNsZWFuQ29sdW1ucyh0aGlzLmNvbHVtbnMpLFxyXG4gICAgICAgIGZpbHRlcnM6IHRoaXMucHJlc2V0RmlsdGVyXHJcbiAgICAgICAgICA/IHRoaXMuZmlsdGVyc0NvbmZpZz8ubWFwKCh7IF9fdHlwZW5hbWUsIHF1ZXJ5LCAuLi5yZXN0IH0pID0+IHtcclxuICAgICAgICAgICAgY29uc3QgeyBfX3R5cGVuYW1lOiBfX2lubmVyLCAuLi5jbGVhblF1ZXJ5IH0gPSBxdWVyeSB8fCB7fTtcclxuICAgICAgICAgICAgcmV0dXJuIHsgLi4ucmVzdCwgcXVlcnk6IGNsZWFuUXVlcnkgfTtcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICA6IFtdLFxyXG4gICAgICAgIGNvbmZpZzogY29uZmlnLFxyXG4gICAgICAgIGlkOiB0aGlzLnRhYmxlRmlsdGVyVmlld0lkIHx8IHRoaXMuY3VycmV0YVRhYmxlUHJlc2V0Rm9yVXBkYXRlPy5pZCxcclxuICAgICAgICBsb2FkaW5nQ2FsbDogY29udHJvbCA9PSAnbW91c2VVcCcgPyBmYWxzZSA6IHRydWUsXHJcbiAgICAgICAgdHlwZTogdGhpcy50YWJsZVR5cGVcclxuICAgICAgfSxcclxuICAgICAgZXZlbnRUeXBlOiB0aGlzLnRhYmxlRmlsdGVyVmlld0lkIHx8ICF0aGlzLmlzVGFibGVQcmVzZXROb3RDaGFuZ2VkID8gJ3VwZGF0ZVByZXNldCcgOiAnY3JlYXRlUHJlc2V0J1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGZpbHRlcmVkQ29sdW1ucyA9IHRoaXMuY29tbW9uU2V2aWNlLmdldEZpbHRlcnNGcm9tQ29sdW1ucyh0aGlzLmNvbHVtbnMsIHRoaXMuZmlsdGVyc0NvbmZpZyk7XHJcbiAgICBjb25zdCBjbGVhbmVkRmlsdGVyZWRDb2x1bW5zID0gZmlsdGVyZWRDb2x1bW5zLm1hcCgoeyBxdWVyeSwgLi4ucmVzdCB9KSA9PiB7XHJcbiAgICAgIGlmIChxdWVyeSkge1xyXG4gICAgICAgIGRlbGV0ZSBxdWVyeS5fX3R5cGVuYW1lO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgcXVlcnksXHJcbiAgICAgICAgLi4ucmVzdCxcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICBjb25zdCBzZW5kRGF0YSA9IHtcclxuICAgICAgY29sdW1uczogdGhpcy5jbGVhbkNvbHVtbnModGhpcy5jb2x1bW5zKSxcclxuICAgICAgZmlsdGVyczogY2xlYW5lZEZpbHRlcmVkQ29sdW1ucyxcclxuICAgICAgbm9fb2ZfcmVjb3JkczogTnVtYmVyKHRoaXMucGFnaW5hdGlvbkNvbmZpZy5saW1pdCksXHJcbiAgICAgIHR5cGU6IHRoaXMudGFibGVUeXBlLFxyXG4gICAgfTtcclxuICAgIHRoaXMuY3JlYXRlVXBkYXRlQ29uZmlnTGlzdGluZy5lbWl0KHNlbmREYXRhKTtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLmdlbmVyaWNFdmVudC5lbWl0KGV2ZW50KVxyXG4gICAgfSwgNTAwKTtcclxuICB9XHJcblxyXG5cclxuICBnZXRGaWx0ZXJIZWFkZXJzKGZpbHRlcnM6IGFueVtdLCBjb2x1bW5zOiBhbnlbXSk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBtYXRjaGVkSGVhZGVycyA9IGZpbHRlcnNcclxuICAgICAgLm1hcChmID0+IHtcclxuICAgICAgICBjb25zdCBjb2x1bW4gPSBjb2x1bW5zLmZpbmQoYyA9PiBjLmZpZWxkID09PSBmLmZpZWxkKTtcclxuICAgICAgICByZXR1cm4gY29sdW1uID8gY29sdW1uLmhlYWRlciA6IG51bGw7XHJcbiAgICAgIH0pXHJcbiAgICAgIC5maWx0ZXIoaGVhZGVyID0+ICEhaGVhZGVyKTtcclxuXHJcbiAgICByZXR1cm4gbWF0Y2hlZEhlYWRlcnMuam9pbignLCAnKTtcclxuICB9XHJcblxyXG5cclxuICB0b2dnbGVSb3dTaGFkaW5nKCkge1xyXG4gICAgdGhpcy5vZGRSb3dzQmFja2dyb3VuZENvbG9yID0gdGhpcy5yb3dTaGFkaW5nRW5hYmxlZCA/ICcjZjFmMWYxJyA6IHVuZGVmaW5lZDtcclxuICAgIHRoaXMub25Gb250Q2hhbmdlKCk7XHJcbiAgfVxyXG5cclxuICB0cmFja0J5VGFibGUoaW5kZXg6IG51bWJlcik6IG51bWJlciB7XHJcbiAgICByZXR1cm4gaW5kZXg7XHJcbiAgfVxyXG4gIGFjdGl2ZVJvdzogYW55XHJcbiAgYWN0aXZlUm93Q29sOiBhbnk7XHJcblxyXG4gIC8vIFRyYWNrIGV4cGFuZGVkIGNlbGxzIGFzIGEgU2V0IG9mIHVuaXF1ZSByb3crY29sIGlkZW50aWZpZXJzXHJcblxyXG4gIGdldENlbGxLZXkocm93OiBhbnksIGNvbDogYW55KTogc3RyaW5nIHtcclxuICAgIHJldHVybiBgJHt0aGlzLmdldFJvd0lkKHJvdyl9XyR7Y29sPy5maWVsZH1gO1xyXG4gIH1cclxuXHJcbiAgZXhwYW5kZWRDZWxscyA9IG5ldyBNYXA8c3RyaW5nLCBudW1iZXI+KCk7XHJcbiAgcHJpdmF0ZSB6Q291bnRlciA9IDIxO1xyXG5cclxuICBzaG93RGV0YWlsc0JveCA9IGZhbHNlO1xyXG5cclxuICB0b2dnbGVFeHBhbmRPZkxvbmdDZWxsVGV4dChcclxuICAgIHJvdzogYW55LFxyXG4gICAgY29sOiBhbnksXHJcbiAgICBjb2x1bW5zOiBhbnlbXSxcclxuICAgIGV4cGFuZFdob2xlUm93ID0gZmFsc2VcclxuICApIHtcclxuICAgIGNvbnN0IGV4cGFuZENlbGxzID0gKHRhcmdldFJvdzogYW55KSA9PiB7XHJcbiAgICAgIGNvbHVtbnMuZm9yRWFjaChjID0+IHtcclxuICAgICAgICBpZiAoYy50eXBlID09PSAnaW1hZ2UnKSByZXR1cm47XHJcbiAgICAgICAgY29uc3QgdGV4dCA9IHRhcmdldFJvd1tjLmZpZWxkXTtcclxuXHJcbiAgICAgICAgaWYgKCh0eXBlb2YgdGV4dCA9PT0gJ3N0cmluZycgJiYgdGV4dC5sZW5ndGggPiA1MCkgfHwgKEFycmF5LmlzQXJyYXkodGV4dCkgJiYgdGV4dD8ubGVuZ3RoID4gMSkpIHtcclxuICAgICAgICAgIGNvbnN0IGtleSA9IHRoaXMuZ2V0Um93SWQodGFyZ2V0Um93KSArICctJyArIGMuZmllbGQ7XHJcbiAgICAgICAgICB0aGlzLnpDb3VudGVyKys7XHJcbiAgICAgICAgICB0aGlzLmV4cGFuZGVkQ2VsbHMuc2V0KGtleSwgdGhpcy56Q291bnRlcik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH07XHJcblxyXG5cclxuICAgIGNvbnN0IGNvbGxlY3RLZXlzRm9yUm93ID0gKHRhcmdldFJvdzogYW55KSA9PiB7XHJcbiAgICAgIGNvbnN0IGtleXM6IHN0cmluZ1tdID0gW107XHJcbiAgICAgIGNvbHVtbnMuZm9yRWFjaChjID0+IHtcclxuICAgICAgICBpZiAoYy50eXBlID09PSAnaW1hZ2UnKSByZXR1cm47XHJcblxyXG4gICAgICAgIGNvbnN0IHRleHQgPSB0YXJnZXRSb3dbYy5maWVsZF07XHJcbiAgICAgICAgaWYgKHR5cGVvZiB0ZXh0ID09PSAnc3RyaW5nJyAmJiB0ZXh0Lmxlbmd0aCA+IDUwIHx8IChBcnJheS5pc0FycmF5KHRleHQpICYmIHRleHQ/Lmxlbmd0aCA+IDEpKSB7XHJcbiAgICAgICAgICBrZXlzLnB1c2godGhpcy5nZXRSb3dJZCh0YXJnZXRSb3cpICsgJy0nICsgYy5maWVsZCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgcmV0dXJuIGtleXM7XHJcbiAgICB9O1xyXG5cclxuICAgIGlmIChleHBhbmRXaG9sZVJvdykge1xyXG4gICAgICBsZXQgcm93S2V5czogc3RyaW5nW10gPSBbXTtcclxuICAgICAgY29uc3QgdGV4dCA9IHRoaXMuZ2V0TmVzdGVkVmFsdWUocm93LCBjb2w/LmZpZWxkKTtcclxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkodGV4dCkgJiYgdGV4dC5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgcm93S2V5cyA9IGNvbGxlY3RLZXlzRm9yUm93KHJvdyk7XHJcbiAgICAgICAgcm93Py5jaGlsZHJlbj8uZm9yRWFjaCgoY2hpbGQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgcm93S2V5cy5wdXNoKC4uLmNvbGxlY3RLZXlzRm9yUm93KGNoaWxkKSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcm93S2V5cyA9IGNvbGxlY3RLZXlzRm9yUm93KHJvdyk7XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgYWxsRXhwYW5kZWQgPSByb3dLZXlzLmV2ZXJ5KGsgPT4gdGhpcy5leHBhbmRlZENlbGxzLmhhcyhrKSk7XHJcbiAgICAgIHRoaXMuZXhwYW5kZWRDZWxscy5jbGVhcigpO1xyXG4gICAgICBpZiAoIWFsbEV4cGFuZGVkKSB7XHJcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkocm93LmNoaWxkcmVuKSAmJiByb3cuY2hpbGRyZW4ubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgZXhwYW5kQ2VsbHMocm93KTtcclxuICAgICAgICAgIHJvdz8uY2hpbGRyZW4/LmZvckVhY2goKGNoaWxkOiBhbnkpID0+IGV4cGFuZENlbGxzKGNoaWxkKSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGV4cGFuZENlbGxzKHJvdyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zdCBrZXkgPSB0aGlzLmdldFJvd0lkKHJvdykgKyAnLScgKyBjb2wuZmllbGQ7XHJcbiAgICAgIGlmIChjb2wudHlwZSA9PT0gJ2ltYWdlJykgcmV0dXJuO1xyXG5cclxuICAgICAgaWYgKCF0aGlzLmV4cGFuZGVkQ2VsbHMuaGFzKGtleSkpIHtcclxuICAgICAgICB0aGlzLmV4cGFuZGVkQ2VsbHMuY2xlYXIoKTtcclxuICAgICAgICB0aGlzLnpDb3VudGVyKys7XHJcbiAgICAgICAgdGhpcy5leHBhbmRlZENlbGxzLnNldChrZXksIHRoaXMuekNvdW50ZXIpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuZXhwYW5kZWRDZWxscy5kZWxldGUoa2V5KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuc2hvd0RldGFpbHNCb3ggPSBmYWxzZTtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLmlzT3BlblRvVG9wKHJvdylcclxuICAgIH0sIDApO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgaXNPcGVuVG9Ub3Aocm93OiBhbnkpIHtcclxuICAgIGNvbnN0IHdyYXBwZXIgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuZGF0YS1ncmlkLWJvZHktd3JhcHBlcicpIGFzIEhUTUxFbGVtZW50IHwgbnVsbDtcclxuICAgIGlmICghd3JhcHBlcikgcmV0dXJuIGZhbHNlO1xyXG4gICAgdGhpcy5jb2x1bW5zLmZvckVhY2goKGNvbDogYW55KSA9PiB7XHJcbiAgICAgIGNvbnN0IGlkID0gKHJvdy5pZCB8fCByb3cuX2lkKSArICctJyArIChjb2wuaWQgfHwgY29sLl9pZCk7XHJcbiAgICAgIGNvbnN0IGJveCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKTtcclxuICAgICAgaWYgKCFib3gpIHJldHVybiBmYWxzZTtcclxuICAgICAgY29uc3QgYm94UmVjdCA9IGJveC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuICAgICAgY29uc3Qgd3JhcHBlclJlY3QgPSB3cmFwcGVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG4gICAgICBjb25zdCBpc092ZXJmbG93aW5nQm90dG9tID0gYm94UmVjdC5ib3R0b20gPiB3cmFwcGVyUmVjdC5ib3R0b207XHJcbiAgICAgIGNvbnN0IGlzT3ZlcmZsb3dpbmdUb3AgPSBib3hSZWN0LnRvcCA8IHdyYXBwZXJSZWN0LnRvcDtcclxuICAgICAgaWYgKGlzT3ZlcmZsb3dpbmdCb3R0b20gJiYgIWlzT3ZlcmZsb3dpbmdUb3ApIHtcclxuICAgICAgICBjb25zdCBib3hIZWlnaHQgPSBib3gub2Zmc2V0SGVpZ2h0IHx8IDA7XHJcbiAgICAgICAgY29uc3Qgb2Zmc2V0ID0gYm94SGVpZ2h0ICsgNDtcclxuICAgICAgICBib3guc3R5bGUudG9wID0gYCR7LW9mZnNldH1weGA7XHJcblxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGJveC5zdHlsZS5ib3R0b20gPSBgYXV0b2A7XHJcbiAgICAgICAgYm94LnN0eWxlLnRvcCA9IGAxMDAlYDtcclxuICAgICAgICBib3guc3R5bGUudHJhbnNmb3JtID0gYHRyYW5zbGF0ZVkoMClgO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH0pXHJcbiAgICB0aGlzLnNob3dEZXRhaWxzQm94ID0gdHJ1ZTtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuICBpc0V4cGFuZGVkKHJvdzogYW55LCBjb2w6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZXhwYW5kZWRDZWxscy5oYXModGhpcy5nZXRSb3dJZChyb3cpICsgJy0nICsgY29sLmZpZWxkKTtcclxuICB9XHJcblxyXG4gIGdldFpJbmRleChyb3c6IGFueSwgY29sOiBhbnkpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuZXhwYW5kZWRDZWxscy5nZXQodGhpcy5nZXRSb3dJZChyb3cpICsgJy0nICsgY29sLmZpZWxkKSA/PyAyMTtcclxuICB9XHJcblxyXG4gIGlzT3ZlcmZsb3dpbmcoZWxlbWVudDogSFRNTEVsZW1lbnQgfCBudWxsKTogYm9vbGVhbiB7XHJcbiAgICBpZiAoIWVsZW1lbnQpIHJldHVybiBmYWxzZTtcclxuICAgIHJldHVybiBlbGVtZW50LnNjcm9sbFdpZHRoID4gZWxlbWVudC5jbGllbnRXaWR0aDtcclxuICB9XHJcblxyXG5cclxuICAvLyBQaWN0dXJlIGNlbGwgTG9naWNcclxuICBjb2xvckNvbWJpbmF0aW9uID0gWydwaWMtY29tYjEnLCAncGljLWNvbWIyJywgJ3BpYy1jb21iNCddO1xyXG4gIGdldER5bmFtaWNDbGFzcyhuYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgaWYgKCFuYW1lKSByZXR1cm4gdGhpcy5jb2xvckNvbWJpbmF0aW9uWzBdO1xyXG4gICAgY29uc3QgaGFzaCA9IEFycmF5LmZyb20obmFtZSkucmVkdWNlKChhY2MsIGNoYXIpID0+IGFjYyArIGNoYXIuY2hhckNvZGVBdCgwKSwgMCk7XHJcbiAgICBjb25zdCBpbmRleCA9IGhhc2ggJSB0aGlzLmNvbG9yQ29tYmluYXRpb24/Lmxlbmd0aDtcclxuICAgIHJldHVybiB0aGlzLmNvbG9yQ29tYmluYXRpb25baW5kZXhdO1xyXG4gIH1cclxuXHJcbiAgZ2V0SW5pdGlhbHMobmFtZTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGlmICghbmFtZSkgcmV0dXJuICdOQSc7XHJcbiAgICBjb25zdCBwYXJ0cyA9IG5hbWUudHJpbSgpLnNwbGl0KCcgJyk7XHJcbiAgICByZXR1cm4gKHBhcnRzWzBdWzBdICsgKHBhcnRzWzFdPy5bMF0gfHwgJycpKS50b1VwcGVyQ2FzZSgpO1xyXG4gIH1cclxuXHJcblxyXG4gIGFjdGlvbkhpZGU6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIHhQb3MgPSAwO1xyXG4gIHlQb3MgPSAwO1xyXG4gIGlzVmlzaWJsZSA9IGZhbHNlO1xyXG4gIGRlYXRpbHNMaXN0OiBhbnk7XHJcbiAgb3BlbkV4cGVuZEluZGV4OiBhbnk7XHJcbiAgcG9zaXRpb25lZFlldCA9IGZhbHNlO1xyXG5cclxuICBvblJpZ2h0Q2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQgfCBUb3VjaEV2ZW50IHwgYW55LCBkZWF0aWxzTGlzdDogYW55KTogYm9vbGVhbiB7XHJcbiAgICBpZiAoZGVhdGlsc0xpc3Q/LmFjdGlvbnM/Lmxlbmd0aCkge1xyXG4gICAgICB0aGlzLmFjdGlvbnMgPSBkZWF0aWxzTGlzdC5hY3Rpb25zO1xyXG4gICAgfVxyXG4gICAgaWYgKCEoZXZlbnQgaW5zdGFuY2VvZiBNb3VzZUV2ZW50KSkge1xyXG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgfVxyXG4gICAgaWYgKGRlYXRpbHNMaXN0Ll9fdmlydHVhbEluZGV4ID09IDApIHJldHVybiBmYWxzZTtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICB0aGlzLnhQb3MgPSAoZXZlbnQgaW5zdGFuY2VvZiBNb3VzZUV2ZW50KSA/IGV2ZW50LmNsaWVudFggOiBldmVudC50b3VjaGVzWzBdLmNsaWVudFg7XHJcbiAgICB0aGlzLnlQb3MgPSAoZXZlbnQgaW5zdGFuY2VvZiBNb3VzZUV2ZW50KSA/IGV2ZW50LmNsaWVudFkgOiBldmVudC50b3VjaGVzWzBdLmNsaWVudFk7XHJcbiAgICAvLyB0aGlzLnhQb3MgPSBldmVudC5jbGllbnRYO1xyXG4gICAgLy8gdGhpcy55UG9zID0gZXZlbnQuY2xpZW50WTtcclxuICAgIHRoaXMuaXNWaXNpYmxlID0gdHJ1ZTtcclxuICAgIHRoaXMucG9zaXRpb25lZFlldCA9IGZhbHNlO1xyXG4gICAgdGhpcy5kZWF0aWxzTGlzdCA9IGRlYXRpbHNMaXN0O1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGNvbnN0IG1lbnVFbGVtZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmNvbnRleHQtbWVudScpIGFzIEhUTUxFbGVtZW50O1xyXG4gICAgICBpZiAoIW1lbnVFbGVtZW50KSByZXR1cm47XHJcbiAgICAgIGNvbnN0IG1lbnVXaWR0aCA9IG1lbnVFbGVtZW50Lm9mZnNldFdpZHRoO1xyXG4gICAgICBjb25zdCBtZW51SGVpZ2h0ID0gbWVudUVsZW1lbnQub2Zmc2V0SGVpZ2h0O1xyXG4gICAgICBjb25zdCB2aWV3cG9ydFdpZHRoID0gd2luZG93LmlubmVyV2lkdGg7XHJcbiAgICAgIGNvbnN0IHZpZXdwb3J0SGVpZ2h0ID0gd2luZG93LmlubmVySGVpZ2h0O1xyXG4gICAgICBsZXQgeCA9IChldmVudCBpbnN0YW5jZW9mIE1vdXNlRXZlbnQpID8gZXZlbnQuY2xpZW50WCA6IGV2ZW50LnRvdWNoZXNbMF0uY2xpZW50WDsgLy9ldmVudC5jbGllbnRYO1xyXG4gICAgICBsZXQgeSA9IChldmVudCBpbnN0YW5jZW9mIE1vdXNlRXZlbnQpID8gZXZlbnQuY2xpZW50WSA6IGV2ZW50LnRvdWNoZXNbMF0uY2xpZW50WTsgLy9ldmVudC5jbGllbnRZO1xyXG4gICAgICBpZiAoeCArIG1lbnVXaWR0aCA+IHZpZXdwb3J0V2lkdGgpIHtcclxuICAgICAgICB4ID0gdmlld3BvcnRXaWR0aCAtIG1lbnVXaWR0aCAtIDEwO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh5ICsgbWVudUhlaWdodCA+IHZpZXdwb3J0SGVpZ2h0KSB7XHJcbiAgICAgICAgeSA9IHZpZXdwb3J0SGVpZ2h0IC0gbWVudUhlaWdodCAtIDEwO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMueFBvcyA9IHg7XHJcbiAgICAgIHRoaXMueVBvcyA9IHk7XHJcbiAgICAgIHRoaXMuaXNWaXNpYmxlID0gdHJ1ZTtcclxuXHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMucG9zaXRpb25lZFlldCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpXHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBvbkFjdGlvbkNsaWNrKGFjdGlvbjogc3RyaW5nKSB7XHJcbiAgICBjb25zdCBzZW5kT2JqID0ge1xyXG4gICAgICBvYmo6IHRoaXMuZGVhdGlsc0xpc3QsXHJcbiAgICAgIGV2ZW50VHlwZTogYWN0aW9uLFxyXG4gICAgfTtcclxuICAgIHRoaXMucG9zaXRpb25lZFlldCA9IGZhbHNlO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgdGhpcy5nZW5lcmljRXZlbnQuZW1pdChzZW5kT2JqKTtcclxuICB9XHJcblxyXG5cclxuICBvblZlcmlmeUNsaWNrKHR5cGU6IHN0cmluZykge1xyXG4gICAgY29uc3QgaWRzQXJyYXkgPSBBcnJheS5mcm9tKHRoaXMuc2VsZWN0ZWRSb3dzKTtcclxuICAgIGNvbnN0IGFycmF5T2ZPYmplY3RzV2l0aFRhYmxlVHlwZTogYW55W10gPSBbXTtcclxuICAgIHRoaXMuc2VsZWN0ZWRSb3dzLmZvckVhY2goaWQgPT4ge1xyXG4gICAgICBhcnJheU9mT2JqZWN0c1dpdGhUYWJsZVR5cGUucHVzaCh7XHJcbiAgICAgICAgaWQ6IGlkLFxyXG4gICAgICAgIGxpc3RpbmdUeXBlOiB0aGlzLmxpc3RpbmdUeXBlLFxyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gICAgY29uc3Qgc2VuZE9iaiA9IHtcclxuICAgICAgZGF0YToge1xyXG4gICAgICAgIG9iajogaWRzQXJyYXksXHJcbiAgICAgICAgdGFibGVOYW1lOiB0aGlzLnRhYmxlTmFtZSxcclxuICAgICAgICBsaXN0aW5nVHlwZTogdGhpcy5saXN0aW5nVHlwZSxcclxuICAgICAgfSxcclxuICAgICAgZXZlbnRUeXBlOiB0eXBlLFxyXG4gICAgfTtcclxuICAgIHRoaXMuZ2VuZXJpY0V2ZW50LmVtaXQoc2VuZE9iailcclxuICB9XHJcblxyXG5cclxuXHJcbiAgZ2V0Q2VsbENsYXNzZXMoY29sdW1uOiBhbnksIHZhbHVlOiBhbnkpOiBzdHJpbmcge1xyXG4gICAgaWYgKCF2YWx1ZSB8fCAhY29sdW1uPy5maWVsZCB8fCBjb2x1bW4/LmNlbGxSZW5kZXJlcikgcmV0dXJuICcnO1xyXG5cclxuICAgIGxldCB2YWw6IGFueSA9IHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgPyB2YWx1ZT8udmFsdWUgPz8gdmFsdWUgOiB2YWx1ZTtcclxuICAgIGNvbnN0IGZpZWxkID0gY29sdW1uLmZpZWxkLnRvTG93ZXJDYXNlKCk7XHJcblxyXG4gICAgaWYgKGZpZWxkID09PSAnZHVlX2RhdGUnKSB7XHJcbiAgICAgIGNvbnN0IGR1ZURhdGUgPSBuZXcgRGF0ZSh2YWwpO1xyXG4gICAgICBjb25zdCB0b2RheSA9IG5ldyBEYXRlKCk7XHJcbiAgICAgIGNvbnN0IHRvZGF5VVRDID0gRGF0ZS5VVEModG9kYXkuZ2V0RnVsbFllYXIoKSwgdG9kYXkuZ2V0TW9udGgoKSwgdG9kYXkuZ2V0RGF0ZSgpKTtcclxuICAgICAgY29uc3QgZHVlVVRDID0gRGF0ZS5VVEMoZHVlRGF0ZS5nZXRGdWxsWWVhcigpLCBkdWVEYXRlLmdldE1vbnRoKCksIGR1ZURhdGUuZ2V0RGF0ZSgpKTtcclxuXHJcbiAgICAgIGlmIChkdWVVVEMgPCB0b2RheVVUQykge1xyXG4gICAgICAgIHJldHVybiAndGV4dC1kYW5nZXInO1xyXG4gICAgICB9XHJcbiAgICAgIC8vIGVsc2UgaWYoZHVlVVRDID09PSB0b2RheVVUQyl7XHJcbiAgICAgIC8vICAgcmV0dXJuICd0ZXh0LXdhcm5pbmcnO1xyXG4gICAgICAvLyB9XHJcblxyXG4gICAgICByZXR1cm4gJyc7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIGNvbnN0IHN0YXR1cyA9IHZhbD8udG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgaWYgKFxyXG4gICAgICBmaWVsZCA9PT0gJ3N0YXR1cycgfHxcclxuICAgICAgZmllbGQgPT09ICdhY2NvdW50X3N0YXR1cycgfHxcclxuICAgICAgZmllbGQgPT09ICdhdmFpbHN0YXR1cycgfHxcclxuICAgICAgZmllbGQgPT09ICdpc19jdXN0b21fZ3JhZGUnXHJcbiAgICApIHtcclxuICAgICAgcmV0dXJuIFNUQVRVU0VTX0JBREdFX01BUFtzdGF0dXNdIHx8ICdiYWRnZSBiYWRnZS1zZWNvbmRhcnknO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiAnJztcclxuICB9XHJcblxyXG5cclxuICByZW1vdmVDb2x1bW5GaWx0ZXJGcm9tQ29sdW1uKGNvbHVtbjogYW55KSB7XHJcbiAgICBpZiAoIWNvbHVtbikgcmV0dXJuXHJcbiAgICBpZiAoY29sdW1uLnR5cGUgPT09ICdkcm9wZG93bicpIHtcclxuICAgICAgY29sdW1uLnF1ZXJ5Ll9pZHMgPSBbXTtcclxuICAgIH0gZWxzZSBpZiAoWydzdHJpbmcnLCAnbnVtYmVyJywgJ2RhdGUnXS5pbmNsdWRlcyhjb2x1bW4udHlwZSkpIHtcclxuICAgICAgY29sdW1uLnF1ZXJ5ID0ge1xyXG4gICAgICAgIGZpcnN0X2NvbmRpdGlvbjogJ2NvbnRhaW4nLFxyXG4gICAgICAgIGZpcnN0X3ZhbHVlOiBudWxsLFxyXG4gICAgICAgIGNvbmRpdGlvbjogJ25vbmUnLFxyXG4gICAgICAgIHNlY29uZF9jb25kaXRpb246IG51bGwsXHJcbiAgICAgICAgc2Vjb25kX3ZhbHVlOiBudWxsLFxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgaW5kZXggPSB0aGlzLmZpbHRlcnNDb25maWcuZmluZEluZGV4KChmOiBhbnkpID0+IGYuZmllbGQgPT09IGNvbHVtbi5maWVsZCk7XHJcbiAgICBpZiAoaW5kZXggIT09IC0xKSB7XHJcbiAgICAgIHRoaXMuZmlsdGVyc0NvbmZpZy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGZpbHRlcmVkQ29sdW1ucyA9IHRoaXMuY29tbW9uU2V2aWNlLmdldEZpbHRlcnNGcm9tQ29sdW1ucyh0aGlzLmNvbHVtbnMsIHRoaXMuZmlsdGVyc0NvbmZpZyk7XHJcbiAgICBjb25zdCBjbGVhbmVkRmlsdGVyZWRDb2x1bW5zID0gZmlsdGVyZWRDb2x1bW5zLm1hcCgoeyBxdWVyeSwgLi4ucmVzdCB9KSA9PiB7XHJcbiAgICAgIGlmIChxdWVyeSkge1xyXG4gICAgICAgIGRlbGV0ZSBxdWVyeS5fX3R5cGVuYW1lO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgcXVlcnksXHJcbiAgICAgICAgLi4ucmVzdCxcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgY29uc3Qgc2VuZERhdGEgPSB7XHJcbiAgICAgIGNvbHVtbnM6IHRoaXMuY2xlYW5Db2x1bW5zKHRoaXMuY29sdW1ucyksXHJcbiAgICAgIGZpbHRlcnM6IGNsZWFuZWRGaWx0ZXJlZENvbHVtbnMsXHJcbiAgICAgIG5vX29mX3JlY29yZHM6IE51bWJlcih0aGlzLnBhZ2luYXRpb25Db25maWcubGltaXQpLFxyXG4gICAgICB0eXBlOiB0aGlzLnRhYmxlVHlwZSxcclxuICAgIH07XHJcbiAgICB0aGlzLmNyZWF0ZVVwZGF0ZUNvbmZpZ0xpc3RpbmcuZW1pdChzZW5kRGF0YSk7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgY29uc3QgZmlsdGVyZWRDb2x1bW5zID0gY2xlYW5lZEZpbHRlcmVkQ29sdW1ucztcclxuICAgICAgdGhpcy5maWx0ZXJPcHRpb25zLmVtaXQoZmlsdGVyZWRDb2x1bW5zKTtcclxuICAgIH0sIDIwMCk7XHJcbiAgfVxyXG5cclxuICBvblNpZGVNZW51Q29sdW1uc1Zpc2liaWxpdHlDaGFuZ2UoKSB7XHJcbiAgICB0aGlzLnJlZnJlc2hIZWFkZXJzKCk7XHJcbiAgICBjb25zdCBzZW5kRGF0YSA9IHtcclxuICAgICAgY29sdW1uczogdGhpcy5jbGVhbkNvbHVtbnModGhpcy5jb2x1bW5zKSxcclxuICAgICAgZmlsdGVyczogdGhpcy5jb21tb25TZXZpY2UuZ2V0RmlsdGVyc0Zyb21Db2x1bW5zKHRoaXMuY29sdW1ucywgdGhpcy5maWx0ZXJzQ29uZmlnKS5tYXAoKHsgcXVlcnksIC4uLnJlc3QgfSkgPT4ge1xyXG4gICAgICAgIGlmIChxdWVyeSkge1xyXG4gICAgICAgICAgZGVsZXRlIHF1ZXJ5Ll9fdHlwZW5hbWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICBxdWVyeSxcclxuICAgICAgICAgIC4uLnJlc3QsXHJcbiAgICAgICAgfVxyXG4gICAgICB9KSxcclxuICAgICAgbm9fb2ZfcmVjb3JkczogdGhpcy5wYWdpbmF0aW9uQ29uZmlnLnBhZ2VTaXplLFxyXG4gICAgICB0eXBlOiB0aGlzLnRhYmxlVHlwZSxcclxuICAgIH07XHJcbiAgICB0aGlzLmNyZWF0ZVVwZGF0ZUNvbmZpZ0xpc3RpbmcuZW1pdChzZW5kRGF0YSk7XHJcbiAgfVxyXG5cclxuICBjbGVhbkZpbHRlcmRDb2x1bW5zKCkge1xyXG4gICAgY29uc3QgZmlsdGVyZWRDb2x1bW5zID0gdGhpcy5jb21tb25TZXZpY2UuZ2V0RmlsdGVyc0Zyb21Db2x1bW5zKHRoaXMuY29sdW1ucywgdGhpcy5maWx0ZXJzQ29uZmlnKTtcclxuICAgIGNvbnN0IGNsZWFuZWRGaWx0ZXJlZENvbHVtbnMgPSBmaWx0ZXJlZENvbHVtbnMubWFwKCh7IHF1ZXJ5LCAuLi5yZXN0IH0pID0+IHtcclxuICAgICAgaWYgKHF1ZXJ5KSB7XHJcbiAgICAgICAgZGVsZXRlIHF1ZXJ5Ll9fdHlwZW5hbWU7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICBxdWVyeSxcclxuICAgICAgICAuLi5yZXN0LFxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBjbGVhbmVkRmlsdGVyZWRDb2x1bW5zO1xyXG4gIH1cclxuXHJcbiAgZG93bmxvYWRDc3YodHlwZTogJ2NzdicgfCAneGxzeCcpIHtcclxuICAgIGNvbnN0IGNvbmZpZzogYW55ID0ge1xyXG4gICAgICBoZWFkZXJCZ0NvbG9yOiB0aGlzLmhlYWRlckJhY2tncm91bmRDb2xvcixcclxuICAgICAgaGVhZGVyVGV4dENvbG9yOiB0aGlzLmhlYWRlclRleHRDb2xvcixcclxuICAgICAgYm9keVRleHRDb2xvcjogJyMwMDAwMDAnLFxyXG4gICAgICBmb250RmFtaWx5OiB0aGlzLmZvbnRGYWltbHksXHJcbiAgICAgIGZvbnRXZWlnaHQ6ICdub3JtYWwnLFxyXG4gICAgICB6b29tU2NhbGU6IDEyNSxcclxuICAgICAgaGVhZGVyUm93SGVpZ2h0OiAzMFxyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuZW5hYmxlRXhwb3J0KSB7XHJcbiAgICAgIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XHJcbiAgICAgIGNvbnN0IGRkID0gU3RyaW5nKG5vdy5nZXREYXRlKCkpLnBhZFN0YXJ0KDIsICcwJyk7XHJcbiAgICAgIGNvbnN0IG1tID0gU3RyaW5nKG5vdy5nZXRNb250aCgpICsgMSkucGFkU3RhcnQoMiwgJzAnKTtcclxuICAgICAgY29uc3QgeXl5eSA9IG5vdy5nZXRGdWxsWWVhcigpO1xyXG4gICAgICBjb25zdCBISCA9IFN0cmluZyhub3cuZ2V0SG91cnMoKSkucGFkU3RhcnQoMiwgJzAnKTtcclxuICAgICAgY29uc3QgTU0gPSBTdHJpbmcobm93LmdldE1pbnV0ZXMoKSkucGFkU3RhcnQoMiwgJzAnKTtcclxuICAgICAgY29uc3QgZm9ybWF0dGVkID1cclxuICAgICAgICBgJHt0aGlzLnRhYmxlVHlwZX1fJHtkZH0tJHttbX0tJHt5eXl5fV8ke0hIfS0ke01NfWA7XHJcblxyXG4gICAgICBjb25zb2xlLmxvZyhmb3JtYXR0ZWQpO1xyXG5cclxuICAgICAgdGhpcy5leHBvcnRTZXJ2aWNlLmV4cG9ydERhdGEodGhpcy5jb2x1bW5zLCB0aGlzLmRhdGFTZXQsIGZvcm1hdHRlZCwgdHlwZSwgdGhpcy5yb3dTZWxlY3RlZEluZGV4ZXMsIGNvbmZpZyk7XHJcbiAgICB9XHJcbiAgICBjb25zdCBldmVudCA9IHtcclxuICAgICAgb2JqOiB7XHJcbiAgICAgICAgY29sdW1uczogdGhpcy5jb2x1bW5zLFxyXG4gICAgICAgIGZpbHRlcnM6IFtdXHJcbiAgICAgIH0sXHJcbiAgICAgIGV2ZW50VHlwZTogJ2Rvd25sb2FkQ3N2J1xyXG4gICAgfVxyXG4gICAgaWYgKHR5cGUgPT0gJ3hsc3gnKSB7XHJcbiAgICAgIHJldHVyblxyXG4gICAgfVxyXG4gICAgdGhpcy5nZW5lcmljRXZlbnQuZW1pdChldmVudClcclxuXHJcbiAgfVxyXG5cclxuICBvbkZvbnRDaGFuZ2UoKSB7XHJcbiAgICB0aGlzLmhlYWRlclRleHRGb250c1NpemUgPSB0aGlzLmJvZHlUZXh0Rm9udHNTaXplO1xyXG4gICAgY29uc3QgY29uZmlnID0ge1xyXG4gICAgICBmb250RmFpbWx5OiB0aGlzLmZvbnRGYWltbHksXHJcbiAgICAgIGJvZHlUZXh0Rm9udHNTaXplOiB0aGlzLmJvZHlUZXh0Rm9udHNTaXplLFxyXG4gICAgICBoZWFkZXJUZXh0Rm9udHNTaXplOiB0aGlzLmhlYWRlclRleHRGb250c1NpemUsXHJcbiAgICAgIG9kZFJvd3NCYWNrZ3JvdW5kQ29sb3I6IHRoaXMucm93U2hhZGluZ0VuYWJsZWQgPyB0aGlzLm9kZFJvd3NCYWNrZ3JvdW5kQ29sb3IgOiB1bmRlZmluZWQsXHJcbiAgICAgIHNob3dWZXJ0aWNhbEJvcmRlcjogdGhpcy5zaG93VmVydGljYWxCb3JkZXIsXHJcbiAgICAgIHNlbGVjdGVkVGFibGVMYXlvdXQ6IHRoaXMuc2VsZWN0ZWRUYWJsZUxheW91dCxcclxuICAgICAgZ2xvYmFsU2VhcmNoOiB0aGlzLnRhYmxlU2VhcmNoXHJcbiAgICB9XHJcbiAgICBjb25zdCBldmVudCA9IHtcclxuICAgICAgb2JqOiB7XHJcbiAgICAgICAgZGF0YTogY29uZmlnXHJcbiAgICAgIH0sXHJcbiAgICAgIGV2ZW50VHlwZTogJ2NvbmZpZydcclxuICAgIH1cclxuICAgIHRoaXMuZ2VuZXJpY0V2ZW50LmVtaXQoZXZlbnQpXHJcbiAgfVxyXG5cclxuICBvbkdsb2JhbFNlYXJjaCgpIHtcclxuICAgIGNvbnN0IGV2ZW50ID0ge1xyXG4gICAgICBvYmo6IHtcclxuICAgICAgICB0YWJsZVNlYXJjaDogdGhpcy50YWJsZVNlYXJjaFxyXG4gICAgICB9LFxyXG4gICAgICBldmVudFR5cGU6ICdzZWFyY2gnXHJcbiAgICB9XHJcbiAgICB0aGlzLmdlbmVyaWNFdmVudC5lbWl0KGV2ZW50KVxyXG4gICAgaWYgKHRoaXMudGFibGVGaWx0ZXJWaWV3SWQpIHtcclxuICAgICAgdGhpcy5zYXZlUHJlc2V0KCdtb3VzZVVwJyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvblNlYXJjaElucHV0KGV2ZW50OiBFdmVudCkge1xyXG4gICAgY29uc3QgdmFsdWUgPSAoZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLnZhbHVlO1xyXG4gICAgLy8gY29uc29sZS5sb2coJ1NlYXJjaCB2YWx1ZTonLCB2YWx1ZSk7XHJcblxyXG4gICAgaWYgKHZhbHVlID09PSAnJykge1xyXG4gICAgICB0aGlzLnRhYmxlU2VhcmNoID0gJyc7XHJcbiAgICAgIHRoaXMub25HbG9iYWxTZWFyY2goKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNoZWNrRmlsdGVyQ2hhbmdlc0VmZmVjdCgpOiBhbnkge1xyXG4gICAgaWYgKCF0aGlzLnRhYmxlRmlsdGVyVmlld0lkKSByZXR1cm4gdHJ1ZVxyXG4gICAgY29uc3QgZmluZERlZmF1bHRGaWx0ZXIgPSB0aGlzLnRhYmxlVmlldz8uZmluZCgoZWxlOiBhbnkpID0+IGVsZT8uaWQgPT0gdGhpcy50YWJsZUZpbHRlclZpZXdJZCk7XHJcbiAgICBjb25zdCBub3JtYWxpemVGaWx0ZXJzID0gKGZpbHRlcnM6IGFueVtdIHwgdW5kZWZpbmVkKTogYW55W10gPT4ge1xyXG4gICAgICBpZiAoIUFycmF5LmlzQXJyYXkoZmlsdGVycykpIHJldHVybiBbXTtcclxuICAgICAgY29uc3QgY2xvbmVkID0gZmlsdGVycy5tYXAoZiA9PiB7XHJcbiAgICAgICAgY29uc3QgaXRlbSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoZiA/PyB7fSkpO1xyXG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShpdGVtLl9pZHMpKSBpdGVtLl9pZHMgPSBbXTtcclxuICAgICAgICBpdGVtLl9pZHMgPSBpdGVtLl9pZHMuc2xpY2UoKS5zb3J0KChhOiBhbnksIGI6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKHR5cGVvZiBhID09PSAnbnVtYmVyJyAmJiB0eXBlb2YgYiA9PT0gJ251bWJlcicpIHJldHVybiBhIC0gYjtcclxuICAgICAgICAgIHJldHVybiAoJycgKyBhKS5sb2NhbGVDb21wYXJlKCcnICsgYik7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIGlmIChpdGVtLnF1ZXJ5ID09PSBudWxsKSB7XHJcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgaXRlbS5xdWVyeSA9PT0gJ29iamVjdCcpIHtcclxuICAgICAgICAgIGlmICghQXJyYXkuaXNBcnJheShpdGVtLnF1ZXJ5Ll9pZHMpKSBpdGVtLnF1ZXJ5Ll9pZHMgPSBbXTtcclxuICAgICAgICAgIGl0ZW0ucXVlcnkuX2lkcyA9IGl0ZW0ucXVlcnkuX2lkcy5zbGljZSgpLnNvcnQoKGE6IGFueSwgYjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGlmICh0eXBlb2YgYSA9PT0gJ251bWJlcicgJiYgdHlwZW9mIGIgPT09ICdudW1iZXInKSByZXR1cm4gYSAtIGI7XHJcbiAgICAgICAgICAgIHJldHVybiAoJycgKyBhKS5sb2NhbGVDb21wYXJlKCcnICsgYik7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBpdGVtO1xyXG4gICAgICB9KTtcclxuICAgICAgY2xvbmVkLnNvcnQoKGE6IGFueSwgYjogYW55KSA9PiB7XHJcbiAgICAgICAgY29uc3QgZmEgPSAoYS5maWVsZCB8fCAnJykgKyAnfCcgKyAoYS50eXBlIHx8ICcnKTtcclxuICAgICAgICBjb25zdCBmYiA9IChiLmZpZWxkIHx8ICcnKSArICd8JyArIChiLnR5cGUgfHwgJycpO1xyXG4gICAgICAgIHJldHVybiBmYS5sb2NhbGVDb21wYXJlKGZiKTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgICByZXR1cm4gY2xvbmVkO1xyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCBkZWVwRXF1YWwgPSAoYTogYW55LCBiOiBhbnkpOiBib29sZWFuID0+IHtcclxuICAgICAgaWYgKGEgPT09IGIpIHJldHVybiB0cnVlO1xyXG5cclxuICAgICAgaWYgKHR5cGVvZiBhICE9PSAnb2JqZWN0JyB8fCBhID09PSBudWxsIHx8IHR5cGVvZiBiICE9PSAnb2JqZWN0JyB8fCBiID09PSBudWxsKSB7XHJcbiAgICAgICAgcmV0dXJuIGEgPT09IGI7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KGEpICE9PSBBcnJheS5pc0FycmF5KGIpKSByZXR1cm4gZmFsc2U7XHJcblxyXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShhKSkge1xyXG4gICAgICAgIGlmIChhLmxlbmd0aCAhPT0gYi5sZW5ndGgpIHJldHVybiBmYWxzZTtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGEubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIGlmICghZGVlcEVxdWFsKGFbaV0sIGJbaV0pKSByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBjb25zdCBrZXlzQSA9IE9iamVjdC5rZXlzKGEpO1xyXG4gICAgICBjb25zdCBrZXlzQiA9IE9iamVjdC5rZXlzKGIpO1xyXG4gICAgICBpZiAoa2V5c0EubGVuZ3RoICE9PSBrZXlzQi5sZW5ndGgpIHJldHVybiBmYWxzZTtcclxuXHJcbiAgICAgIGZvciAoY29uc3Qga2V5IG9mIGtleXNBKSB7XHJcbiAgICAgICAgaWYgKCFrZXlzQi5pbmNsdWRlcyhrZXkpKSByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgaWYgKCFkZWVwRXF1YWwoYVtrZXldLCBiW2tleV0pKSByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9O1xyXG4gICAgY29uc3Qgbm9ybWFsaXplZEEgPSBub3JtYWxpemVGaWx0ZXJzKGZpbmREZWZhdWx0RmlsdGVyPy5maWx0ZXJzKTtcclxuICAgIGNvbnN0IG5vcm1hbGl6ZWRCID0gbm9ybWFsaXplRmlsdGVycyh0aGlzLmZpbHRlcnNDb25maWcpO1xyXG4gICAgY29uc3QgaXNTYW1lID0gZGVlcEVxdWFsKG5vcm1hbGl6ZWRBLCBub3JtYWxpemVkQik7XHJcbiAgICByZXR1cm4gaXNTYW1lO1xyXG4gIH1cclxuXHJcblxyXG5cclxuICAvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbiAgLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4gIC8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuICAvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbiAgLy8gQ2VsbCBTZWxlY3Rpb24gSW1wbGVtZW50ZWQgSGVyZSBJbXBsZW1lbnRlZCBIZXJlXHJcbiAgLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4gIC8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuICAvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbiAgLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5cclxuICBzZWxlY3RlZENlbGxzOiBhbnlbXSA9IFtdO1xyXG4gIHNlbGVjdGVkS2V5czogU2V0PHN0cmluZz4gPSBuZXcgU2V0KCk7XHJcbiAgc2VsZWN0aW9uU3RhcnQ6IGFueSA9IG51bGw7XHJcbiAgaXNTZWxlY3RpbmcgPSBmYWxzZTtcclxuICBzdGFydFNlbGVjdGlvbihcclxuICAgIHJvd0luZGV4OiBudW1iZXIsXHJcbiAgICBjb2xJbmRleDogbnVtYmVyLFxyXG4gICAgc3ViQ29sSW5kZXg6IG51bWJlciB8IG51bGwsXHJcbiAgICBmaWVsZDogc3RyaW5nLFxyXG4gICAgZXZlbnQ6IE1vdXNlRXZlbnQsXHJcbiAgICBzZWN0aW9uOiBzdHJpbmdcclxuICApIHtcclxuICAgIC8vIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICB0aGlzLnJvd1NlbGVjdGVkSW5kZXhlcy5jbGVhcigpO1xyXG4gICAgY29uc3Qgc2FmZVN1YiA9IHN1YkNvbEluZGV4ID8/IDA7XHJcbiAgICBjb25zdCBrZXkgPSBgJHtyb3dJbmRleH0tJHtjb2xJbmRleH0tJHtzYWZlU3VifS0ke2ZpZWxkfWA7XHJcblxyXG4gICAgdGhpcy5zZWxlY3Rpb25TdGFydCA9IHsgcm93SW5kZXgsIGNvbEluZGV4LCBzdWJDb2xJbmRleDogc2FmZVN1YiwgZmllbGQsIGtleSB9O1xyXG4gICAgdGhpcy5pc1NlbGVjdGluZyA9IHRydWU7XHJcbiAgICB0aGlzLnNlbGVjdGVkS2V5cy5jbGVhcigpO1xyXG4gICAgdGhpcy5zZWxlY3RlZEtleXMuYWRkKGtleSk7XHJcbiAgICB0aGlzLnNlbGVjdGVkQ2VsbHMgPSBbdGhpcy5zZWxlY3Rpb25TdGFydF07XHJcbiAgICBjb25zdCBtb3VzZVVwSGFuZGxlciA9ICgpID0+IHtcclxuICAgICAgdGhpcy5lbmRTZWxlY3Rpb24oKTtcclxuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIG1vdXNlVXBIYW5kbGVyKTtcclxuICAgIH07XHJcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgbW91c2VVcEhhbmRsZXIpO1xyXG4gICAgdGhpcy51cGRhdGVTZWxlY3Rpb25Cb3VuZGFyaWVzKClcclxuICB9XHJcblxyXG5cclxuICBleHRlbmRTZWxlY3Rpb24oXHJcbiAgICByb3dJbmRleDogbnVtYmVyLFxyXG4gICAgY29sSW5kZXg6IG51bWJlcixcclxuICAgIHN1YkNvbEluZGV4OiBudW1iZXIgfCBudWxsLFxyXG4gICAgZmllbGQ6IHN0cmluZyxcclxuICAgIGV2ZW50OiBNb3VzZUV2ZW50LFxyXG4gICAgc2VjdGlvbjogc3RyaW5nXHJcbiAgKSB7XHJcbiAgICBpZiAoIXRoaXMuaXNTZWxlY3RpbmcgfHwgIXRoaXMuc2VsZWN0aW9uU3RhcnQpIHJldHVybjtcclxuXHJcbiAgICBjb25zdCBzdGFydCA9IHRoaXMuc2VsZWN0aW9uU3RhcnQ7XHJcbiAgICBjb25zdCB0YXJnZXRTdWJDb2xJbmRleCA9IHN1YkNvbEluZGV4ID8/IDA7XHJcbiAgICBjb25zdCBuZXdLZXlzOiBTZXQ8c3RyaW5nPiA9IG5ldyBTZXQoKTtcclxuICAgIGNvbnN0IG5ld0NlbGxzOiBhbnlbXSA9IFtdO1xyXG4gICAgY29uc3QgbWluUm93ID0gTWF0aC5taW4oc3RhcnQucm93SW5kZXgsIHJvd0luZGV4KTtcclxuICAgIGNvbnN0IG1heFJvdyA9IE1hdGgubWF4KHN0YXJ0LnJvd0luZGV4LCByb3dJbmRleCk7XHJcbiAgICBjb25zdCBjb2x1bW5zVG9TZWxlY3QgPSB0aGlzLmdldENvbHVtblNlbGVjdGlvblJhbmdlKHN0YXJ0LmNvbEluZGV4LCBjb2xJbmRleCwgc3RhcnQuc3ViQ29sSW5kZXgsIHRhcmdldFN1YkNvbEluZGV4KTtcclxuXHJcbiAgICBmb3IgKGxldCByID0gbWluUm93OyByIDw9IG1heFJvdzsgcisrKSB7XHJcbiAgICAgIGZvciAoY29uc3QgY29sSW5mbyBvZiBjb2x1bW5zVG9TZWxlY3QpIHtcclxuICAgICAgICBjb25zdCBrID0gYCR7cn0tJHtjb2xJbmZvLmNvbEluZGV4fS0ke2NvbEluZm8uc3ViQ29sSW5kZXh9LSR7c2VjdGlvbn1gO1xyXG4gICAgICAgIG5ld0tleXMuYWRkKGspO1xyXG4gICAgICAgIG5ld0NlbGxzLnB1c2goe1xyXG4gICAgICAgICAgcm93SW5kZXg6IHIsXHJcbiAgICAgICAgICBjb2xJbmRleDogY29sSW5mby5jb2xJbmRleCxcclxuICAgICAgICAgIHN1YkNvbEluZGV4OiBjb2xJbmZvLnN1YkNvbEluZGV4LFxyXG4gICAgICAgICAgZmllbGQsXHJcbiAgICAgICAgICBrZXk6IGtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuc2VsZWN0ZWRLZXlzID0gbmV3S2V5cztcclxuICAgIHRoaXMuc2VsZWN0ZWRDZWxscyA9IG5ld0NlbGxzO1xyXG4gICAgdGhpcy51cGRhdGVTZWxlY3Rpb25Cb3VuZGFyaWVzKCk7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcblxyXG4gICAgLy8gQWRkIGF1dG8tc2Nyb2xsaW5nIGxvZ2ljXHJcbiAgICB0aGlzLmhhbmRsZUNlbGxBdXRvU2Nyb2xsKGV2ZW50KTtcclxuICB9XHJcblxyXG5cclxuXHJcblxyXG4gIGdldENvbHVtblNlbGVjdGlvblJhbmdlKFxyXG4gICAgc3RhcnRDb2w6IG51bWJlcixcclxuICAgIGVuZENvbDogbnVtYmVyLFxyXG4gICAgc3RhcnRTdWI6IG51bWJlcixcclxuICAgIGVuZFN1YjogbnVtYmVyXHJcbiAgKTogeyBjb2xJbmRleDogbnVtYmVyOyBzdWJDb2xJbmRleDogbnVtYmVyIH1bXSB7XHJcbiAgICBjb25zdCByZXN1bHQ6IHsgY29sSW5kZXg6IG51bWJlcjsgc3ViQ29sSW5kZXg6IG51bWJlciB9W10gPSBbXTtcclxuICAgIGNvbnN0IG1pbkNvbCA9IE1hdGgubWluKHN0YXJ0Q29sLCBlbmRDb2wpO1xyXG4gICAgY29uc3QgbWF4Q29sID0gTWF0aC5tYXgoc3RhcnRDb2wsIGVuZENvbCk7XHJcblxyXG4gICAgY29uc3QgaXNMZWZ0VG9SaWdodCA9IHN0YXJ0Q29sIDw9IGVuZENvbDtcclxuICAgIGZvciAobGV0IGMgPSBtaW5Db2w7IGMgPD0gbWF4Q29sOyBjKyspIHtcclxuICAgICAgY29uc3Qgc3ViQ29sQ291bnQgPSB0aGlzLmdldFN1YkNvbHVtbkNvdW50KGMpO1xyXG5cclxuICAgICAgaWYgKGMgPT09IHN0YXJ0Q29sICYmIGMgPT09IGVuZENvbCkge1xyXG4gICAgICAgIGNvbnN0IG1pblN1YiA9IE1hdGgubWluKHN0YXJ0U3ViLCBlbmRTdWIpO1xyXG4gICAgICAgIGNvbnN0IG1heFN1YiA9IE1hdGgubWF4KHN0YXJ0U3ViLCBlbmRTdWIpO1xyXG4gICAgICAgIGZvciAobGV0IHMgPSBtaW5TdWI7IHMgPD0gbWF4U3ViICYmIHMgPCBzdWJDb2xDb3VudDsgcysrKSB7XHJcbiAgICAgICAgICByZXN1bHQucHVzaCh7IGNvbEluZGV4OiBjLCBzdWJDb2xJbmRleDogcyB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAoYyA9PT0gc3RhcnRDb2wpIHtcclxuICAgICAgICBpZiAoaXNMZWZ0VG9SaWdodCkge1xyXG4gICAgICAgICAgZm9yIChsZXQgcyA9IHN0YXJ0U3ViOyBzIDwgc3ViQ29sQ291bnQ7IHMrKykge1xyXG4gICAgICAgICAgICByZXN1bHQucHVzaCh7IGNvbEluZGV4OiBjLCBzdWJDb2xJbmRleDogcyB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgZm9yIChsZXQgcyA9IDA7IHMgPD0gc3RhcnRTdWIgJiYgcyA8IHN1YkNvbENvdW50OyBzKyspIHtcclxuICAgICAgICAgICAgcmVzdWx0LnB1c2goeyBjb2xJbmRleDogYywgc3ViQ29sSW5kZXg6IHMgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKGMgPT09IGVuZENvbCkge1xyXG4gICAgICAgIGlmIChpc0xlZnRUb1JpZ2h0KSB7XHJcbiAgICAgICAgICBmb3IgKGxldCBzID0gMDsgcyA8PSBlbmRTdWIgJiYgcyA8IHN1YkNvbENvdW50OyBzKyspIHtcclxuICAgICAgICAgICAgcmVzdWx0LnB1c2goeyBjb2xJbmRleDogYywgc3ViQ29sSW5kZXg6IHMgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGZvciAobGV0IHMgPSBlbmRTdWI7IHMgPCBzdWJDb2xDb3VudDsgcysrKSB7XHJcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKHsgY29sSW5kZXg6IGMsIHN1YkNvbEluZGV4OiBzIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBmb3IgKGxldCBzID0gMDsgcyA8IHN1YkNvbENvdW50OyBzKyspIHtcclxuICAgICAgICAgIHJlc3VsdC5wdXNoKHsgY29sSW5kZXg6IGMsIHN1YkNvbEluZGV4OiBzIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiByZXN1bHQ7XHJcbiAgfVxyXG5cclxuICBnZXRTdWJDb2x1bW5Db3VudChjb2xJbmRleDogbnVtYmVyKTogbnVtYmVyIHtcclxuICAgIGlmICghdGhpcy5jb2x1bW5zIHx8IGNvbEluZGV4IDwgMCB8fCBjb2xJbmRleCA+PSB0aGlzLmNvbHVtbnMubGVuZ3RoKSB7XHJcbiAgICAgIHJldHVybiAxO1xyXG4gICAgfVxyXG4gICAgY29uc3QgY29sdW1uID0gdGhpcy5jb2x1bW5zW2NvbEluZGV4XTtcclxuICAgIGlmIChjb2x1bW4uY2hpbGRyZW4gJiYgQXJyYXkuaXNBcnJheShjb2x1bW4uY2hpbGRyZW4pKSB7XHJcbiAgICAgIHJldHVybiBjb2x1bW4uY2hpbGRyZW4ubGVuZ3RoO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIDE7XHJcbiAgfVxyXG4gIGlzR3JvdXBDb2x1bW4oY29sSW5kZXg6IG51bWJlcik6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0U3ViQ29sdW1uQ291bnQoY29sSW5kZXgpID4gMTtcclxuICB9XHJcbiAgZW5kU2VsZWN0aW9uKCkge1xyXG4gICAgdGhpcy5pc1NlbGVjdGluZyA9IGZhbHNlO1xyXG4gICAgdGhpcy5zdG9wQXV0b1Njcm9sbCgpO1xyXG4gICAgdGhpcy51cGRhdGVTZWxlY3Rpb25Cb3VuZGFyaWVzKCk7XHJcbiAgfVxyXG4gIGlzU2VsZWN0ZWQoXHJcbiAgICByb3dJbmRleDogbnVtYmVyLFxyXG4gICAgY29sSW5kZXg6IG51bWJlcixcclxuICAgIHN1YkNvbEluZGV4OiBudW1iZXIgfCBudWxsLFxyXG4gICAgZmllbGQ6IHN0cmluZyxcclxuICAgIHNlY3Rpb246IHN0cmluZ1xyXG4gICkge1xyXG4gICAgY29uc3Qgc2FmZVN1YiA9IHN1YkNvbEluZGV4ID8/IDA7XHJcbiAgICBjb25zdCBrZXkgPSBgJHtyb3dJbmRleH0tJHtjb2xJbmRleH0tJHtzYWZlU3VifS0ke3NlY3Rpb259YDtcclxuICAgIHJldHVybiB0aGlzLnNlbGVjdGVkS2V5cy5oYXMoa2V5KTtcclxuICB9XHJcblxyXG5cclxuICBwcml2YXRlIHNlbGVjdGlvbkJvdW5kczoge1xyXG4gICAgdG9wOiBudW1iZXIgfCBudWxsO1xyXG4gICAgYm90dG9tOiBudW1iZXIgfCBudWxsO1xyXG4gICAgbGVmdDogeyBjb2xJbmRleDogbnVtYmVyOyBzdWJDb2xJbmRleDogbnVtYmVyIH0gfCBudWxsO1xyXG4gICAgcmlnaHQ6IHsgY29sSW5kZXg6IG51bWJlcjsgc3ViQ29sSW5kZXg6IG51bWJlciB9IHwgbnVsbDtcclxuICB9ID0geyB0b3A6IG51bGwsIGJvdHRvbTogbnVsbCwgbGVmdDogbnVsbCwgcmlnaHQ6IG51bGwgfTtcclxuXHJcbiAgdXBkYXRlU2VsZWN0aW9uQm91bmRhcmllcygpIHtcclxuICAgIGlmICh0aGlzLnNlbGVjdGVkQ2VsbHMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0aW9uQm91bmRzID0geyB0b3A6IG51bGwsIGJvdHRvbTogbnVsbCwgbGVmdDogbnVsbCwgcmlnaHQ6IG51bGwgfTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIEdldCBhbGwgdW5pcXVlIHJvdyBpbmRpY2VzIGFuZCBmaW5kIG1pbi9tYXhcclxuICAgIGNvbnN0IHJvd0luZGljZXMgPSBbLi4ubmV3IFNldCh0aGlzLnNlbGVjdGVkQ2VsbHMubWFwKGNlbGwgPT4gY2VsbC5yb3dJbmRleCkpXTtcclxuICAgIHRoaXMuc2VsZWN0aW9uQm91bmRzLnRvcCA9IE1hdGgubWluKC4uLnJvd0luZGljZXMpO1xyXG4gICAgdGhpcy5zZWxlY3Rpb25Cb3VuZHMuYm90dG9tID0gTWF0aC5tYXgoLi4ucm93SW5kaWNlcyk7XHJcblxyXG4gICAgLy8gRm9yIGxlZnQvcmlnaHQgYm91bmRhcmllcywgd2UgbmVlZCB0byBjb25zaWRlciBib3RoIGNvbEluZGV4IGFuZCBzdWJDb2xJbmRleFxyXG4gICAgY29uc3QgbGVmdE1vc3QgPSB0aGlzLmZpbmRMZWZ0TW9zdENlbGwoKTtcclxuICAgIGNvbnN0IHJpZ2h0TW9zdCA9IHRoaXMuZmluZFJpZ2h0TW9zdENlbGwoKTtcclxuXHJcbiAgICB0aGlzLnNlbGVjdGlvbkJvdW5kcy5sZWZ0ID0gbGVmdE1vc3Q7XHJcbiAgICB0aGlzLnNlbGVjdGlvbkJvdW5kcy5yaWdodCA9IHJpZ2h0TW9zdDtcclxuICB9XHJcbiAgZmluZExlZnRNb3N0Q2VsbCgpOiB7IGNvbEluZGV4OiBudW1iZXI7IHN1YkNvbEluZGV4OiBudW1iZXIgfSB8IG51bGwge1xyXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRDZWxscy5sZW5ndGggPT09IDApIHJldHVybiBudWxsO1xyXG5cclxuICAgIGNvbnN0IG1pbkNvbEluZGV4ID0gTWF0aC5taW4oLi4udGhpcy5zZWxlY3RlZENlbGxzLm1hcChjZWxsID0+IGNlbGwuY29sSW5kZXgpKTtcclxuICAgIGNvbnN0IGxlZnRDb2xDZWxscyA9IHRoaXMuc2VsZWN0ZWRDZWxscy5maWx0ZXIoY2VsbCA9PiBjZWxsLmNvbEluZGV4ID09PSBtaW5Db2xJbmRleCk7XHJcbiAgICBjb25zdCBtaW5TdWJDb2xJbmRleCA9IE1hdGgubWluKC4uLmxlZnRDb2xDZWxscy5tYXAoY2VsbCA9PiBjZWxsLnN1YkNvbEluZGV4KSk7XHJcblxyXG4gICAgcmV0dXJuIHsgY29sSW5kZXg6IG1pbkNvbEluZGV4LCBzdWJDb2xJbmRleDogbWluU3ViQ29sSW5kZXggfTtcclxuICB9XHJcbiAgZmluZFJpZ2h0TW9zdENlbGwoKTogeyBjb2xJbmRleDogbnVtYmVyOyBzdWJDb2xJbmRleDogbnVtYmVyIH0gfCBudWxsIHtcclxuICAgIGlmICh0aGlzLnNlbGVjdGVkQ2VsbHMubGVuZ3RoID09PSAwKSByZXR1cm4gbnVsbDtcclxuXHJcbiAgICBjb25zdCBtYXhDb2xJbmRleCA9IE1hdGgubWF4KC4uLnRoaXMuc2VsZWN0ZWRDZWxscy5tYXAoY2VsbCA9PiBjZWxsLmNvbEluZGV4KSk7XHJcbiAgICBjb25zdCByaWdodENvbENlbGxzID0gdGhpcy5zZWxlY3RlZENlbGxzLmZpbHRlcihjZWxsID0+IGNlbGwuY29sSW5kZXggPT09IG1heENvbEluZGV4KTtcclxuICAgIGNvbnN0IG1heFN1YkNvbEluZGV4ID0gTWF0aC5tYXgoLi4ucmlnaHRDb2xDZWxscy5tYXAoY2VsbCA9PiBjZWxsLnN1YkNvbEluZGV4KSk7XHJcblxyXG4gICAgcmV0dXJuIHsgY29sSW5kZXg6IG1heENvbEluZGV4LCBzdWJDb2xJbmRleDogbWF4U3ViQ29sSW5kZXggfTtcclxuICB9XHJcbiAgaXNUb3BCb3JkZXIocm93SW5kZXg6IG51bWJlciwgY29sSW5kZXg6IG51bWJlciwgc3ViQ29sSW5kZXg6IG51bWJlciB8IG51bGwsIHNlY3Rpb246IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3Qgc2FmZVN1YiA9IHN1YkNvbEluZGV4ID8/IDA7XHJcbiAgICBjb25zdCBpc1NlbGVjdGVkID0gdGhpcy5zZWxlY3RlZEtleXMuaGFzKGAke3Jvd0luZGV4fS0ke2NvbEluZGV4fS0ke3NhZmVTdWJ9LSR7c2VjdGlvbn1gKTtcclxuICAgIHJldHVybiBpc1NlbGVjdGVkICYmIHRoaXMuc2VsZWN0aW9uQm91bmRzLnRvcCAhPT0gbnVsbCAmJiByb3dJbmRleCA9PT0gdGhpcy5zZWxlY3Rpb25Cb3VuZHMudG9wO1xyXG4gIH1cclxuICBpc0JvdHRvbUJvcmRlcihyb3dJbmRleDogbnVtYmVyLCBjb2xJbmRleDogbnVtYmVyLCBzdWJDb2xJbmRleDogbnVtYmVyIHwgbnVsbCwgc2VjdGlvbjogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBzYWZlU3ViID0gc3ViQ29sSW5kZXggPz8gMDtcclxuICAgIGNvbnN0IGlzU2VsZWN0ZWQgPSB0aGlzLnNlbGVjdGVkS2V5cy5oYXMoYCR7cm93SW5kZXh9LSR7Y29sSW5kZXh9LSR7c2FmZVN1Yn0tJHtzZWN0aW9ufWApO1xyXG4gICAgcmV0dXJuIGlzU2VsZWN0ZWQgJiYgdGhpcy5zZWxlY3Rpb25Cb3VuZHMuYm90dG9tICE9PSBudWxsICYmIHJvd0luZGV4ID09PSB0aGlzLnNlbGVjdGlvbkJvdW5kcy5ib3R0b207XHJcbiAgfVxyXG4gIGlzTGVmdEJvcmRlcihyb3dJbmRleDogbnVtYmVyLCBjb2xJbmRleDogbnVtYmVyLCBzdWJDb2xJbmRleDogbnVtYmVyIHwgbnVsbCwgc2VjdGlvbjogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBzYWZlU3ViID0gc3ViQ29sSW5kZXggPz8gMDtcclxuICAgIGNvbnN0IGlzU2VsZWN0ZWQgPSB0aGlzLnNlbGVjdGVkS2V5cy5oYXMoYCR7cm93SW5kZXh9LSR7Y29sSW5kZXh9LSR7c2FmZVN1Yn0tJHtzZWN0aW9ufWApO1xyXG4gICAgcmV0dXJuIGlzU2VsZWN0ZWQgJiYgdGhpcy5zZWxlY3Rpb25Cb3VuZHMubGVmdCAhPT0gbnVsbCAmJlxyXG4gICAgICBjb2xJbmRleCA9PT0gdGhpcy5zZWxlY3Rpb25Cb3VuZHMubGVmdC5jb2xJbmRleCAmJlxyXG4gICAgICBzYWZlU3ViID09PSB0aGlzLnNlbGVjdGlvbkJvdW5kcy5sZWZ0LnN1YkNvbEluZGV4O1xyXG4gIH1cclxuXHJcbiAgaXNSaWdodEJvcmRlcihyb3dJbmRleDogbnVtYmVyLCBjb2xJbmRleDogbnVtYmVyLCBzdWJDb2xJbmRleDogbnVtYmVyIHwgbnVsbCwgc2VjdGlvbjogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBzYWZlU3ViID0gc3ViQ29sSW5kZXggPz8gMDtcclxuICAgIGNvbnN0IGlzU2VsZWN0ZWQgPSB0aGlzLnNlbGVjdGVkS2V5cy5oYXMoYCR7cm93SW5kZXh9LSR7Y29sSW5kZXh9LSR7c2FmZVN1Yn0tJHtzZWN0aW9ufWApO1xyXG4gICAgcmV0dXJuIGlzU2VsZWN0ZWQgJiYgdGhpcy5zZWxlY3Rpb25Cb3VuZHMucmlnaHQgIT09IG51bGwgJiZcclxuICAgICAgY29sSW5kZXggPT09IHRoaXMuc2VsZWN0aW9uQm91bmRzLnJpZ2h0LmNvbEluZGV4ICYmXHJcbiAgICAgIHNhZmVTdWIgPT09IHRoaXMuc2VsZWN0aW9uQm91bmRzLnJpZ2h0LnN1YkNvbEluZGV4O1xyXG4gIH1cclxuXHJcbiAgaXNUb3BMZWZ0Q29ybmVyKHJvd0luZGV4OiBudW1iZXIsIGNvbEluZGV4OiBudW1iZXIsIHN1YkNvbEluZGV4OiBudW1iZXIgfCBudWxsLCBzZWN0aW9uOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmlzVG9wQm9yZGVyKHJvd0luZGV4LCBjb2xJbmRleCwgc3ViQ29sSW5kZXgsIHNlY3Rpb24pICYmIHRoaXMuaXNMZWZ0Qm9yZGVyKHJvd0luZGV4LCBjb2xJbmRleCwgc3ViQ29sSW5kZXgsIHNlY3Rpb24pO1xyXG4gIH1cclxuXHJcbiAgaXNUb3BSaWdodENvcm5lcihyb3dJbmRleDogbnVtYmVyLCBjb2xJbmRleDogbnVtYmVyLCBzdWJDb2xJbmRleDogbnVtYmVyIHwgbnVsbCwgc2VjdGlvbjogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5pc1RvcEJvcmRlcihyb3dJbmRleCwgY29sSW5kZXgsIHN1YkNvbEluZGV4LCBzZWN0aW9uKSAmJiB0aGlzLmlzUmlnaHRCb3JkZXIocm93SW5kZXgsIGNvbEluZGV4LCBzdWJDb2xJbmRleCwgc2VjdGlvbik7XHJcbiAgfVxyXG5cclxuICBpc0JvdHRvbUxlZnRDb3JuZXIocm93SW5kZXg6IG51bWJlciwgY29sSW5kZXg6IG51bWJlciwgc3ViQ29sSW5kZXg6IG51bWJlciB8IG51bGwsIHNlY3Rpb246IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaXNCb3R0b21Cb3JkZXIocm93SW5kZXgsIGNvbEluZGV4LCBzdWJDb2xJbmRleCwgc2VjdGlvbikgJiYgdGhpcy5pc0xlZnRCb3JkZXIocm93SW5kZXgsIGNvbEluZGV4LCBzdWJDb2xJbmRleCwgc2VjdGlvbik7XHJcbiAgfVxyXG5cclxuICBpc0JvdHRvbVJpZ2h0Q29ybmVyKHJvd0luZGV4OiBudW1iZXIsIGNvbEluZGV4OiBudW1iZXIsIHN1YkNvbEluZGV4OiBudW1iZXIgfCBudWxsLCBzZWN0aW9uOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmlzQm90dG9tQm9yZGVyKHJvd0luZGV4LCBjb2xJbmRleCwgc3ViQ29sSW5kZXgsIHNlY3Rpb24pICYmIHRoaXMuaXNSaWdodEJvcmRlcihyb3dJbmRleCwgY29sSW5kZXgsIHN1YkNvbEluZGV4LCBzZWN0aW9uKTtcclxuICB9XHJcblxyXG5cclxuICBjZWxsU2VsZWN0aW9uQXV0b1Njcm9sbEludGVydmFsOiBhbnkgPSBudWxsO1xyXG4gIHByaXZhdGUgc2Nyb2xsU3BlZWQgPSAxNTA7XHJcbiAgcHJpdmF0ZSBzY3JvbGxNYXJnaW4gPSAzMDtcclxuICBoYW5kbGVDZWxsQXV0b1Njcm9sbChldmVudDogTW91c2VFdmVudCkge1xyXG4gICAgaWYgKHRoaXMuY2VsbFNlbGVjdGlvbkF1dG9TY3JvbGxJbnRlcnZhbCkge1xyXG4gICAgICBjbGVhckludGVydmFsKHRoaXMuY2VsbFNlbGVjdGlvbkF1dG9TY3JvbGxJbnRlcnZhbCk7XHJcbiAgICAgIHRoaXMuY2VsbFNlbGVjdGlvbkF1dG9TY3JvbGxJbnRlcnZhbCA9IG51bGw7XHJcbiAgICB9XHJcbiAgICBjb25zdCBob3Jpem9udGFsQ29udGFpbmVyID0gdGhpcy5jZW50ZXJTY3JvbGxhYmxlQm9keS5uYXRpdmVFbGVtZW50O1xyXG4gICAgY29uc3QgdmVydGljYWxDb250YWluZXIgPSB0aGlzLm1haW5TY3JvbGwubmF0aXZlRWxlbWVudDtcclxuICAgIGlmICghaG9yaXpvbnRhbENvbnRhaW5lciB8fCAhdmVydGljYWxDb250YWluZXIpIHJldHVybjtcclxuICAgIGNvbnN0IGhvcml6b250YWxSZWN0ID0gaG9yaXpvbnRhbENvbnRhaW5lci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuICAgIGNvbnN0IG1vdXNlWCA9IGV2ZW50LmNsaWVudFg7XHJcbiAgICBjb25zdCB2ZXJ0aWNhbFJlY3QgPSB2ZXJ0aWNhbENvbnRhaW5lci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuICAgIGNvbnN0IG1vdXNlWSA9IGV2ZW50LmNsaWVudFk7XHJcbiAgICBjb25zdCBuZWFyVG9wID0gbW91c2VZIC0gdmVydGljYWxSZWN0LnRvcCA8IHRoaXMuc2Nyb2xsTWFyZ2luO1xyXG4gICAgY29uc3QgbmVhckJvdHRvbSA9IHZlcnRpY2FsUmVjdC5ib3R0b20gLSBtb3VzZVkgPCB0aGlzLnNjcm9sbE1hcmdpbjtcclxuICAgIGNvbnN0IG5lYXJMZWZ0ID0gbW91c2VYIC0gaG9yaXpvbnRhbFJlY3QubGVmdCA8IHRoaXMuc2Nyb2xsTWFyZ2luO1xyXG4gICAgY29uc3QgbmVhclJpZ2h0ID0gaG9yaXpvbnRhbFJlY3QucmlnaHQgLSBtb3VzZVggPCB0aGlzLnNjcm9sbE1hcmdpbjtcclxuICAgIGxldCBzY3JvbGxYID0gMDtcclxuICAgIGxldCBzY3JvbGxZID0gMDtcclxuICAgIGlmIChuZWFyVG9wKSBzY3JvbGxZID0gLXRoaXMuc2Nyb2xsU3BlZWQ7XHJcbiAgICBpZiAobmVhckJvdHRvbSkgc2Nyb2xsWSA9IHRoaXMuc2Nyb2xsU3BlZWQ7XHJcbiAgICBpZiAobmVhckxlZnQpIHNjcm9sbFggPSAtdGhpcy5zY3JvbGxTcGVlZDtcclxuICAgIGlmIChuZWFyUmlnaHQpIHNjcm9sbFggPSB0aGlzLnNjcm9sbFNwZWVkO1xyXG4gICAgaWYgKHNjcm9sbFggIT09IDAgfHwgc2Nyb2xsWSAhPT0gMCkge1xyXG4gICAgICB0aGlzLmNlbGxTZWxlY3Rpb25BdXRvU2Nyb2xsSW50ZXJ2YWwgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XHJcbiAgICAgICAgaWYgKHNjcm9sbFggIT09IDApIHtcclxuICAgICAgICAgIGhvcml6b250YWxDb250YWluZXIuc2Nyb2xsQnkoc2Nyb2xsWCwgMCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChzY3JvbGxZICE9PSAwKSB7XHJcbiAgICAgICAgICB2ZXJ0aWNhbENvbnRhaW5lci5zY3JvbGxCeSgwLCBzY3JvbGxZKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sIDgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc3RvcEF1dG9TY3JvbGwoKSB7XHJcbiAgICBpZiAodGhpcy5jZWxsU2VsZWN0aW9uQXV0b1Njcm9sbEludGVydmFsKSB7XHJcbiAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy5jZWxsU2VsZWN0aW9uQXV0b1Njcm9sbEludGVydmFsKTtcclxuICAgICAgdGhpcy5jZWxsU2VsZWN0aW9uQXV0b1Njcm9sbEludGVydmFsID0gbnVsbDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuICAvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbiAgLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4gIC8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuICAvLyBSb3cgU2VsZWN0aW9uIGZyb20gdGhlIEluZGV4aW5nIEltcGxlbWVudGVkIEhlcmVcclxuICAvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbiAgLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4gIC8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuICAvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblxyXG4gIHJvd1NlbGVjdGVkSW5kZXhlczogU2V0PG51bWJlcj4gPSBuZXcgU2V0KCk7XHJcbiAgcm93U2VsZWN0aW5nID0gZmFsc2U7XHJcbiAgcm93U2VsZWN0aW9uU3RhcnRJbmRleDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XHJcbiAgYXV0b1Njcm9sbEludGVydmFsOiBhbnkgPSBudWxsO1xyXG5cclxuICBnZXQgZmlyc3RTZWxlY3RlZFJvdygpOiBudW1iZXIgfCBudWxsIHtcclxuICAgIGlmICh0aGlzLnJvd1NlbGVjdGVkSW5kZXhlcy5zaXplID09PSAwKSByZXR1cm4gbnVsbDtcclxuICAgIHJldHVybiBNYXRoLm1pbiguLi50aGlzLnJvd1NlbGVjdGVkSW5kZXhlcyk7XHJcbiAgfVxyXG5cclxuICBnZXQgbGFzdFNlbGVjdGVkUm93KCk6IG51bWJlciB8IG51bGwge1xyXG4gICAgaWYgKHRoaXMucm93U2VsZWN0ZWRJbmRleGVzLnNpemUgPT09IDApIHJldHVybiBudWxsO1xyXG4gICAgcmV0dXJuIE1hdGgubWF4KC4uLnRoaXMucm93U2VsZWN0ZWRJbmRleGVzKTtcclxuICB9XHJcblxyXG5cclxuICBvblJvd01vdXNlRG93bihpbmRleDogbnVtYmVyLCBldmVudDogTW91c2VFdmVudCkge1xyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIHRoaXMucm93U2VsZWN0aW5nID0gdHJ1ZTtcclxuICAgIHRoaXMuc2VsZWN0ZWRLZXlzLmNsZWFyKCk7XHJcbiAgICB0aGlzLnJvd1NlbGVjdGlvblN0YXJ0SW5kZXggPSBpbmRleDtcclxuICAgIHRoaXMucm93U2VsZWN0ZWRJbmRleGVzLmNsZWFyKCk7XHJcbiAgICB0aGlzLnJvd1NlbGVjdGVkSW5kZXhlcy5hZGQoaW5kZXgpO1xyXG4gICAgdGhpcy5hY3RpdmVDZWxsID0gJyc7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcblxyXG4gICAgY29uc3QgbW91c2VNb3ZlSGFuZGxlciA9IChlOiBNb3VzZUV2ZW50KSA9PiB0aGlzLmhhbmRsZUF1dG9TY3JvbGwoZSk7XHJcbiAgICBjb25zdCBtb3VzZVVwSGFuZGxlciA9ICgpID0+IHtcclxuICAgICAgdGhpcy5vblJvd01vdXNlVXAoKTtcclxuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIG1vdXNlVXBIYW5kbGVyKTtcclxuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgbW91c2VNb3ZlSGFuZGxlcik7XHJcbiAgICAgIGlmICh0aGlzLmF1dG9TY3JvbGxJbnRlcnZhbCkge1xyXG4gICAgICAgIGNhbmNlbEFuaW1hdGlvbkZyYW1lKHRoaXMuYXV0b1Njcm9sbEludGVydmFsKTtcclxuICAgICAgICB0aGlzLmF1dG9TY3JvbGxJbnRlcnZhbCA9IG51bGw7XHJcbiAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIG1vdXNlVXBIYW5kbGVyKTtcclxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIG1vdXNlTW92ZUhhbmRsZXIpO1xyXG4gIH1cclxuXHJcbiAgb25Sb3dNb3VzZU92ZXIoaW5kZXg6IG51bWJlciwgZXZlbnQ6IE1vdXNlRXZlbnQpIHtcclxuICAgIGlmICghdGhpcy5yb3dTZWxlY3RpbmcgfHwgdGhpcy5yb3dTZWxlY3Rpb25TdGFydEluZGV4ID09PSBudWxsKSByZXR1cm47XHJcbiAgICB0aGlzLnJvd1NlbGVjdGVkSW5kZXhlcy5jbGVhcigpO1xyXG4gICAgY29uc3Qgc3RhcnQgPSBNYXRoLm1pbih0aGlzLnJvd1NlbGVjdGlvblN0YXJ0SW5kZXgsIGluZGV4KTtcclxuICAgIGNvbnN0IGVuZCA9IE1hdGgubWF4KHRoaXMucm93U2VsZWN0aW9uU3RhcnRJbmRleCwgaW5kZXgpO1xyXG4gICAgZm9yIChsZXQgaSA9IHN0YXJ0OyBpIDw9IGVuZDsgaSsrKSB7XHJcbiAgICAgIHRoaXMucm93U2VsZWN0ZWRJbmRleGVzLmFkZChpKTtcclxuICAgIH1cclxuICAgIC8vIGNvbnNvbGUubG9nKFsuLi50aGlzLnJvd1NlbGVjdGVkSW5kZXhlc10pO1xyXG4gIH1cclxuXHJcbiAgb25Sb3dNb3VzZVVwKCkge1xyXG4gICAgdGhpcy5yb3dTZWxlY3RpbmcgPSBmYWxzZTtcclxuICAgIHRoaXMucm93U2VsZWN0aW9uU3RhcnRJbmRleCA9IG51bGw7XHJcbiAgfVxyXG4gIGhhbmRsZUF1dG9TY3JvbGwoZTogTW91c2VFdmVudCkge1xyXG4gICAgY29uc3QgY29udGFpbmVyID0gdGhpcy5tYWluU2Nyb2xsPy5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50O1xyXG4gICAgaWYgKCFjb250YWluZXIpIHJldHVybjtcclxuXHJcbiAgICBjb25zdCByZWN0ID0gY29udGFpbmVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG4gICAgY29uc3QgZWRnZVNpemUgPSA0MFxyXG4gICAgbGV0IHNjcm9sbEFtb3VudCA9IDA7XHJcblxyXG4gICAgaWYgKGUuY2xpZW50WSA8IHJlY3QudG9wICsgZWRnZVNpemUpIHtcclxuICAgICAgc2Nyb2xsQW1vdW50ID0gLTE1MDtcclxuICAgIH0gZWxzZSBpZiAoZS5jbGllbnRZID4gcmVjdC5ib3R0b20gLSBlZGdlU2l6ZSkge1xyXG4gICAgICBzY3JvbGxBbW91bnQgPSAxNTA7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHNjcm9sbEFtb3VudCAhPT0gMCkge1xyXG4gICAgICBpZiAoIXRoaXMuYXV0b1Njcm9sbEludGVydmFsKSB7XHJcbiAgICAgICAgY29uc3Qgc3RlcCA9ICgpID0+IHtcclxuICAgICAgICAgIGNvbnRhaW5lci5zY3JvbGxUb3AgKz0gc2Nyb2xsQW1vdW50O1xyXG4gICAgICAgICAgdGhpcy5hdXRvU2Nyb2xsSW50ZXJ2YWwgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoc3RlcCk7XHJcbiAgICAgICAgfTtcclxuICAgICAgICB0aGlzLmF1dG9TY3JvbGxJbnRlcnZhbCA9IHJlcXVlc3RBbmltYXRpb25GcmFtZShzdGVwKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHRoaXMuYXV0b1Njcm9sbEludGVydmFsKSB7XHJcbiAgICAgICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUodGhpcy5hdXRvU2Nyb2xsSW50ZXJ2YWwpO1xyXG4gICAgICAgIHRoaXMuYXV0b1Njcm9sbEludGVydmFsID0gbnVsbDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIC8vIGdldFNlbGVjdGVkRGF0YUZvckNvcHkoKTogYW55W11bXSB7XHJcbiAgLy8gICBjb25zdCBjb3BpZWRSb3dzOiBhbnlbXVtdID0gW107XHJcbiAgLy8gICBjb25zdCBmaW5kUm93QnlWaXJ0dWFsSW5kZXggPSAodkluZGV4OiBudW1iZXIpID0+XHJcbiAgLy8gICAgIHRoaXMuZGF0YVNldC5maW5kKChyOiBhbnkpID0+IHIuX192aXJ0dWFsSW5kZXggPT09IHZJbmRleCk7XHJcbiAgLy8gICBpZiAodGhpcy5yb3dTZWxlY3RlZEluZGV4ZXMgJiYgdGhpcy5yb3dTZWxlY3RlZEluZGV4ZXMuc2l6ZSA+IDApIHtcclxuICAvLyAgICAgY29uc3Qgc29ydGVkSW5kZXhlcyA9IFsuLi50aGlzLnJvd1NlbGVjdGVkSW5kZXhlc10uc29ydCgoYSwgYikgPT4gYSAtIGIpO1xyXG4gIC8vICAgICBmb3IgKGNvbnN0IHZJbmRleCBvZiBzb3J0ZWRJbmRleGVzKSB7XHJcbiAgLy8gICAgICAgY29uc3Qgcm93ID0gZmluZFJvd0J5VmlydHVhbEluZGV4KHZJbmRleCk7XHJcbiAgLy8gICAgICAgaWYgKCFyb3cpIGNvbnRpbnVlO1xyXG4gIC8vICAgICAgIGNvbnN0IHJvd1ZhbHVlcyA9IHRoaXMuY29sdW1ucy5mbGF0TWFwKGNvbCA9PlxyXG4gIC8vICAgICAgICAgY29sLmNoaWxkcmVuICYmIEFycmF5LmlzQXJyYXkoY29sLmNoaWxkcmVuKVxyXG4gIC8vICAgICAgICAgICA/IGNvbC5jaGlsZHJlbi5tYXAoKGM6IHsgZmllbGQ6IHN0cmluZyB9KSA9PlxyXG4gIC8vICAgICAgICAgICAgICAgdGhpcy5nZXROZXN0ZWRWYWx1ZShyb3csIGMuZmllbGQpID8/ICcnXHJcbiAgLy8gICAgICAgICAgICAgKVxyXG4gIC8vICAgICAgICAgICA6IHRoaXMuZ2V0TmVzdGVkVmFsdWUocm93LCBjb2wuZmllbGQpID8/ICcnXHJcbiAgLy8gICAgICAgKTtcclxuICAvLyAgICAgICBjb3BpZWRSb3dzLnB1c2gocm93VmFsdWVzKTtcclxuICAvLyAgICAgfVxyXG4gIC8vICAgfVxyXG5cclxuICAvLyAgIGlmICh0aGlzLnNlbGVjdGVkQ2VsbHMgJiYgdGhpcy5zZWxlY3RlZENlbGxzLmxlbmd0aCA+IDApIHtcclxuICAvLyAgICAgY29uc3Qgcm93c01hcCA9IG5ldyBNYXA8bnVtYmVyLCBhbnlbXT4oKTtcclxuICAvLyAgICAgZm9yIChjb25zdCBjZWxsIG9mIHRoaXMuc2VsZWN0ZWRDZWxscykge1xyXG4gIC8vICAgICAgIGNvbnN0IHJvdyA9IGZpbmRSb3dCeVZpcnR1YWxJbmRleChjZWxsLnJvd0luZGV4KTtcclxuICAvLyAgICAgICBpZiAoIXJvdykgY29udGludWU7XHJcblxyXG4gIC8vICAgICAgIGNvbnN0IGNvbCA9IHRoaXMuY29sdW1uc1tjZWxsLmNvbEluZGV4XTtcclxuICAvLyAgICAgICBsZXQgZmllbGROYW1lID0gY29sPy5maWVsZDtcclxuICAvLyAgICAgICBpZiAoY29sPy5jaGlsZHJlbiAmJiBjb2wuY2hpbGRyZW5bY2VsbC5zdWJDb2xJbmRleF0pIHtcclxuICAvLyAgICAgICAgIGZpZWxkTmFtZSA9IGNvbC5jaGlsZHJlbltjZWxsLnN1YkNvbEluZGV4XS5maWVsZDtcclxuICAvLyAgICAgICB9XHJcbiAgLy8gICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLmdldE5lc3RlZFZhbHVlKHJvdywgZmllbGROYW1lKSA/PyAnJztcclxuXHJcbiAgLy8gICAgICAgaWYgKCFyb3dzTWFwLmhhcyhjZWxsLnJvd0luZGV4KSkgcm93c01hcC5zZXQoY2VsbC5yb3dJbmRleCwgW10pO1xyXG4gIC8vICAgICAgIHJvd3NNYXAuZ2V0KGNlbGwucm93SW5kZXgpIS5wdXNoKHZhbHVlKTtcclxuICAvLyAgICAgfVxyXG5cclxuICAvLyAgICAgY29uc3Qgc29ydGVkQ2VsbHMgPSBbLi4ucm93c01hcC5lbnRyaWVzKCldXHJcbiAgLy8gICAgICAgLnNvcnQoKFthXSwgW2JdKSA9PiBhIC0gYilcclxuICAvLyAgICAgICAubWFwKChbXywgdl0pID0+IHYpO1xyXG5cclxuICAvLyAgICAgY29waWVkUm93cy5wdXNoKC4uLnNvcnRlZENlbGxzKTtcclxuICAvLyAgIH1cclxuXHJcbiAgLy8gICBpZiAoY29waWVkUm93cy5sZW5ndGggPT09IDApIHtcclxuICAvLyAgICAgY29uc3QgYWN0aXZlQ2VsbCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5hY3RpdmUtY2VsbCcpO1xyXG4gIC8vICAgICBpZiAoYWN0aXZlQ2VsbCkgcmV0dXJuIFtbYWN0aXZlQ2VsbC50ZXh0Q29udGVudD8udHJpbSgpIHx8ICcnXV07XHJcbiAgLy8gICB9XHJcbiAgLy8gICBjb25zdCBtYXhDb2xzID0gY29waWVkUm93cy5yZWR1Y2UoKG1heCwgcm93KSA9PiBNYXRoLm1heChtYXgsIHJvdy5sZW5ndGgpLCAwKTtcclxuICAvLyAgIGNvbnN0IG5vcm1hbGl6ZWQgPSBjb3BpZWRSb3dzLm1hcChyb3cgPT4ge1xyXG4gIC8vICAgICBjb25zdCBuZXdSb3cgPSBbLi4ucm93XTtcclxuICAvLyAgICAgd2hpbGUgKG5ld1Jvdy5sZW5ndGggPCBtYXhDb2xzKSBuZXdSb3cucHVzaCgnJyk7IFxyXG4gIC8vICAgICByZXR1cm4gbmV3Um93O1xyXG4gIC8vICAgfSk7XHJcbiAgLy8gICByZXR1cm4gbm9ybWFsaXplZDtcclxuICAvLyB9XHJcblxyXG5cclxuICB1bmRvU3RhY2s6IGFueVtdW10gPSBbXTtcclxuICByZWRvU3RhY2s6IGFueVtdW10gPSBbXTtcclxuXHJcbiAgcHJpdmF0ZSBjbG9uZURhdGEoZGF0YTogYW55W10pOiBhbnlbXSB7XHJcbiAgICByZXR1cm4gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShkYXRhKSk7XHJcbiAgfVxyXG5cclxuICBwZXJmb3JtQ3V0KHNlbGVjdGVkRGF0YTogYW55W11bXSkge1xyXG4gICAgLy8gU2F2ZSBjdXJyZW50IHN0YXRlIGZvciB1bmRvXHJcbiAgICB0aGlzLnVuZG9TdGFjay5wdXNoKHRoaXMuY2xvbmVEYXRhKHRoaXMudmlzaWJsZVJvd3MpKTtcclxuICAgIHRoaXMucmVkb1N0YWNrID0gW107IC8vIENsZWFyIHJlZG8gc3RhY2sgb24gbmV3IGFjdGlvblxyXG5cclxuICAgIC8vIFBlcmZvcm0gY3V0XHJcbiAgICB0aGlzLmNvcHlTZXJ2aWNlLmN1dFdpdGhBbmltYXRpb24oc2VsZWN0ZWREYXRhKTtcclxuICAgIGNvbnN0IHsgdXBkYXRlZFJvd3MgfSA9IHRoaXMuY29weVNlcnZpY2UuY3V0U2VsZWN0ZWRTZWxlY3RlZERhdGEoXHJcbiAgICAgIHRoaXMudmlzaWJsZVJvd3MsXHJcbiAgICAgIHRoaXMucm93U2VsZWN0ZWRJbmRleGVzLFxyXG4gICAgICB0aGlzLnNlbGVjdGVkQ2VsbHMsXHJcbiAgICAgIHRoaXMuY29sdW1ucyxcclxuICAgICAgdGhpcy5zZXROZXN0ZWRWYWx1ZS5iaW5kKHRoaXMpXHJcbiAgICApO1xyXG5cclxuICAgIC8vIGNvbnNvbGUubG9nKCdVcGRhdGVkIFJvd3M6ICcsIHVwZGF0ZWRSb3dzKTtcclxuICB9XHJcblxyXG5cclxuXHJcbiAgZ2V0U2VsZWN0ZWREYXRhRm9yQ29weSgpOiBhbnlbXVtdIHtcclxuICAgIHJldHVybiB0aGlzLmNvcHlTZXJ2aWNlLmdldFNlbGVjdGVkRGF0YUZvckNvcHkoXHJcbiAgICAgIHRoaXMuZGF0YVNldCxcclxuICAgICAgdGhpcy5jb2x1bW5zLFxyXG4gICAgICB0aGlzLnJvd1NlbGVjdGVkSW5kZXhlcyxcclxuICAgICAgdGhpcy5zZWxlY3RlZENlbGxzLFxyXG4gICAgICB0aGlzLmdldE5lc3RlZFZhbHVlLmJpbmQodGhpcylcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDprZXlkb3duJywgWyckZXZlbnQnXSlcclxuICBvbktleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcclxuICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudDtcclxuICAgIGNvbnN0IGlzRm9ybUZpZWxkID1cclxuICAgICAgdGFyZ2V0LnRhZ05hbWUgPT09ICdJTlBVVCcgfHxcclxuICAgICAgdGFyZ2V0LnRhZ05hbWUgPT09ICdURVhUQVJFQScgfHxcclxuICAgICAgdGFyZ2V0LmlzQ29udGVudEVkaXRhYmxlO1xyXG4gICAgaWYgKGlzRm9ybUZpZWxkKSByZXR1cm47XHJcblxyXG4gICAgY29uc3QgdGFibGVDb250YWluZXIgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuZGF0YS1ncmlkLWJvZHktd3JhcHBlcicpO1xyXG4gICAgaWYgKHRhYmxlQ29udGFpbmVyICYmICF0YWJsZUNvbnRhaW5lci5jb250YWlucyh0YXJnZXQpKSByZXR1cm47XHJcbiAgICBpZiAoKGV2ZW50LmN0cmxLZXkgfHwgZXZlbnQubWV0YUtleSkgJiYgZXZlbnQua2V5LnRvTG93ZXJDYXNlKCkgPT09ICdjJykge1xyXG4gICAgICBpZiAoIXRoaXMuc2VsZWN0ZWRDZWxscz8ubGVuZ3RoICYmICF0aGlzLnJvd1NlbGVjdGVkSW5kZXhlcy5zaXplKSByZXR1cm5cclxuICAgICAgY29uc3Qgc2VsZWN0ZWREYXRhID0gdGhpcy5nZXRTZWxlY3RlZERhdGFGb3JDb3B5KCk7XHJcbiAgICAgIC8vIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgIHRoaXMuY29weVNlcnZpY2UuY29weVRvQ2xpcGJvYXJkKHNlbGVjdGVkRGF0YSk7XHJcblxyXG4gICAgfSBlbHNlIGlmICgoZXZlbnQuY3RybEtleSB8fCBldmVudC5tZXRhS2V5KSAmJiBldmVudC5rZXkudG9Mb3dlckNhc2UoKSA9PT0gJ3gnKSB7XHJcbiAgICAgIGlmICghdGhpcy5zZWxlY3RlZENlbGxzPy5sZW5ndGggfHwgIXRoaXMuZW5hYmxlQ3V0KSByZXR1cm5cclxuICAgICAgY29uc3Qgc2VsZWN0ZWREYXRhID0gdGhpcy5nZXRTZWxlY3RlZERhdGFGb3JDb3B5KCk7XHJcbiAgICAgIC8vIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgIHRoaXMucGVyZm9ybUN1dChzZWxlY3RlZERhdGEpO1xyXG5cclxuICAgIH0gZWxzZSBpZiAoKGV2ZW50LmN0cmxLZXkgfHwgZXZlbnQubWV0YUtleSkgJiYgZXZlbnQua2V5LnRvTG93ZXJDYXNlKCkgPT09ICd6Jykge1xyXG4gICAgICBpZiAoIXRoaXMuc2VsZWN0ZWRDZWxscz8ubGVuZ3RoKSByZXR1cm5cclxuICAgICAgLy8gZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgdGhpcy51bmRvKCk7XHJcblxyXG4gICAgfSBlbHNlIGlmICgoZXZlbnQuY3RybEtleSB8fCBldmVudC5tZXRhS2V5KSAmJiBldmVudC5rZXkudG9Mb3dlckNhc2UoKSA9PT0gJ3knKSB7XHJcbiAgICAgIGlmICghdGhpcy5zZWxlY3RlZENlbGxzPy5sZW5ndGgpIHJldHVyblxyXG4gICAgICAvLyBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICB0aGlzLnJlZG8oKTtcclxuICAgIH0gZWxzZSBpZiAoKGV2ZW50LmN0cmxLZXkgfHwgZXZlbnQubWV0YUtleSkgJiYgZXZlbnQua2V5ID09PSAnYScpIHtcclxuICAgICAgLy8g4pyFIFNlbGVjdCBhbGwgY2VsbHNcclxuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgdGhpcy5zZWxlY3RBbGxDZWxscygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIHNlbGVjdEFsbENlbGxzKCkge1xyXG4gICAgdGhpcy5zZWxlY3RlZENlbGxzID0gW107XHJcbiAgICB0aGlzLnNlbGVjdGVkS2V5cy5jbGVhcigpO1xyXG4gICAgdGhpcy5yb3dTZWxlY3RlZEluZGV4ZXMuY2xlYXIoKTtcclxuXHJcbiAgICAvLyBTZXQgc2VsZWN0aW9uIHN0YXJ0IGxpa2Ugc2luZ2xlIHNlbGVjdGlvbiAoZmlyc3QgY2VsbClcclxuICAgIGlmICh0aGlzLmRhdGFTZXQubGVuZ3RoICYmIHRoaXMuY29sdW1ucy5sZW5ndGgpIHtcclxuICAgICAgY29uc3QgZmlyc3RGaWVsZCA9IHRoaXMuY29sdW1uc1swXS5maWVsZCB8fCB0aGlzLmNvbHVtbnNbMF0ubmFtZTtcclxuICAgICAgdGhpcy5zZWxlY3Rpb25TdGFydCA9IHtcclxuICAgICAgICByb3dJbmRleDogMCxcclxuICAgICAgICBjb2xJbmRleDogMCxcclxuICAgICAgICBzdWJDb2xJbmRleDogMCxcclxuICAgICAgICBmaWVsZDogZmlyc3RGaWVsZCxcclxuICAgICAgICBrZXk6IGAwLTAtMC0ke2ZpcnN0RmllbGR9YCxcclxuICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmlzU2VsZWN0aW5nID0gdHJ1ZTtcclxuXHJcbiAgICBmb3IgKGxldCByb3dJbmRleCA9IDA7IHJvd0luZGV4IDw9IHRoaXMuZGF0YVNldD8ubGVuZ3RoOyByb3dJbmRleCsrKSB7XHJcbiAgICAgIGlmICghcm93SW5kZXgpIGNvbnRpbnVlO1xyXG4gICAgICBjb25zdCByb3cgPSB0aGlzLmRhdGFTZXRbcm93SW5kZXhdO1xyXG4gICAgICB0aGlzLnJvd1NlbGVjdGVkSW5kZXhlcy5hZGQocm93SW5kZXgpO1xyXG5cclxuICAgICAgLy8gZm9yIChsZXQgY29sSW5kZXggPSAwOyBjb2xJbmRleCA8IHRoaXMuY29sdW1ucy5sZW5ndGg7IGNvbEluZGV4KyspIHtcclxuICAgICAgLy8gICBjb25zdCBjb2wgPSB0aGlzLmNvbHVtbnNbY29sSW5kZXhdO1xyXG4gICAgICAvLyAgIGNvbnN0IGZpZWxkID0gY29sLmZpZWxkIHx8IGNvbC5uYW1lO1xyXG4gICAgICAvLyAgIGlmKCFjb2wuaXNfdmlzaWJsZSkgY29udGludWU7XHJcblxyXG4gICAgICAvLyAgIGlmIChjb2wuY2hpbGRyZW4/Lmxlbmd0aCkge1xyXG4gICAgICAvLyAgICAgY29sLmNoaWxkcmVuLmZvckVhY2goKHN1YjogYW55LCBzdWJDb2xJbmRleDogbnVtYmVyKSA9PiB7XHJcbiAgICAgIC8vICAgICAgIGNvbnN0IGtleSA9IGAke3Jvd0luZGV4fS0ke2NvbEluZGV4fS0ke3N1YkNvbEluZGV4fS0ke2ZpZWxkfWA7XHJcbiAgICAgIC8vICAgICAgIHRoaXMuc2VsZWN0ZWRLZXlzLmFkZChrZXkpO1xyXG4gICAgICAvLyAgICAgICB0aGlzLnNlbGVjdGVkQ2VsbHMucHVzaCh7XHJcbiAgICAgIC8vICAgICAgICAgcm93SW5kZXgsXHJcbiAgICAgIC8vICAgICAgICAgY29sSW5kZXgsXHJcbiAgICAgIC8vICAgICAgICAgc3ViQ29sSW5kZXgsXHJcbiAgICAgIC8vICAgICAgICAgZmllbGQsXHJcbiAgICAgIC8vICAgICAgICAga2V5LFxyXG4gICAgICAvLyAgICAgICB9KTtcclxuICAgICAgLy8gICAgIH0pO1xyXG4gICAgICAvLyAgIH0gZWxzZSB7XHJcbiAgICAgIC8vICAgICBjb25zdCBrZXkgPSBgJHtyb3dJbmRleH0tJHtjb2xJbmRleH0tMC0ke2ZpZWxkfWA7XHJcbiAgICAgIC8vICAgICB0aGlzLnNlbGVjdGVkS2V5cy5hZGQoa2V5KTtcclxuICAgICAgLy8gICAgIHRoaXMuc2VsZWN0ZWRDZWxscy5wdXNoKHtcclxuICAgICAgLy8gICAgICAgcm93SW5kZXgsXHJcbiAgICAgIC8vICAgICAgIGNvbEluZGV4LFxyXG4gICAgICAvLyAgICAgICBzdWJDb2xJbmRleDogMCxcclxuICAgICAgLy8gICAgICAgZmllbGQsXHJcbiAgICAgIC8vICAgICAgIGtleSxcclxuICAgICAgLy8gICAgIH0pO1xyXG4gICAgICAvLyAgIH1cclxuICAgICAgLy8gfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIFVwZGF0ZSBoaWdobGlnaHRpbmcgYW5kIFVJXHJcbiAgICB0aGlzLnVwZGF0ZVNlbGVjdGlvbkJvdW5kYXJpZXMoKTtcclxuXHJcbiAgICAvLyBTdG9wIFwic2VsZWN0aW5nXCIgbW9kZSBzaW5jZSBpdCdzIGEgb25lLXRpbWUgc2VsZWN0LWFsbFxyXG4gICAgdGhpcy5pc1NlbGVjdGluZyA9IGZhbHNlO1xyXG4gIH1cclxuXHJcblxyXG5cclxuICB1bmRvKCkge1xyXG4gICAgaWYgKHRoaXMudW5kb1N0YWNrLmxlbmd0aCA+IDApIHtcclxuICAgICAgY29uc3QgcHJldlN0YXRlID0gdGhpcy51bmRvU3RhY2sucG9wKCkhO1xyXG4gICAgICB0aGlzLnJlZG9TdGFjay5wdXNoKHRoaXMuY2xvbmVEYXRhKHRoaXMudmlzaWJsZVJvd3MpKTtcclxuICAgICAgdGhpcy52aXNpYmxlUm93cyA9IHRoaXMuY2xvbmVEYXRhKHByZXZTdGF0ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZWRvKCkge1xyXG4gICAgaWYgKHRoaXMucmVkb1N0YWNrLmxlbmd0aCA+IDApIHtcclxuICAgICAgY29uc3QgbmV4dFN0YXRlID0gdGhpcy5yZWRvU3RhY2sucG9wKCkhO1xyXG4gICAgICB0aGlzLnVuZG9TdGFjay5wdXNoKHRoaXMuY2xvbmVEYXRhKHRoaXMudmlzaWJsZVJvd3MpKTtcclxuICAgICAgdGhpcy52aXNpYmxlUm93cyA9IHRoaXMuY2xvbmVEYXRhKG5leHRTdGF0ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OnBhc3RlJywgWyckZXZlbnQnXSlcclxuICBhc3luYyBvblBhc3RlKGV2ZW50OiBDbGlwYm9hcmRFdmVudCkge1xyXG4gICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xyXG4gICAgY29uc3QgdGFnID0gdGFyZ2V0Py50YWdOYW1lPy50b0xvd2VyQ2FzZSgpO1xyXG4gICAgaWYgKHRhZyA9PT0gJ2lucHV0JyB8fCB0YWcgPT09ICd0ZXh0YXJlYScgfHwgdGFyZ2V0Py5nZXRBdHRyaWJ1dGUoJ2NvbnRlbnRlZGl0YWJsZScpID09PSAndHJ1ZScpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghdGhpcy5zZWxlY3RlZENlbGxzPy5sZW5ndGggfHwgIXRoaXMuYWN0aXZlQ2VsbCkgcmV0dXJuO1xyXG5cclxuICAgIGNvbnN0IHRleHQgPSBldmVudC5jbGlwYm9hcmREYXRhPy5nZXREYXRhKCd0ZXh0Jyk7XHJcbiAgICBpZiAoIXRleHQpIHJldHVybjtcclxuICAgIGNvbnN0IHVzZXJDb25maXJtZWQgPSBhd2FpdCB0aGlzLnNob3dDb25maXJtYXRpb25Nb2RhbChcclxuICAgICAgJ0FyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBwYXN0ZSB0aGUgY29waWVkIGRhdGE/J1xyXG4gICAgKTtcclxuXHJcbiAgICBpZiAoIXVzZXJDb25maXJtZWQpIHtcclxuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHN0YXJ0Q2VsbCA9IHRoaXMuc2VsZWN0ZWRDZWxscz8uWzBdO1xyXG4gICAgaWYgKCFzdGFydENlbGwpIHJldHVybjtcclxuXHJcbiAgICBjb25zdCB1cGRhdGVkUm93cyA9IGF3YWl0IHRoaXMuY29weVNlcnZpY2UucGFzdGVGcm9tQ2xpcGJvYXJkVGV4dChcclxuICAgICAgdGV4dCxcclxuICAgICAgdGhpcy52aXNpYmxlUm93cyxcclxuICAgICAgdGhpcy5jb2x1bW5zLFxyXG4gICAgICBzdGFydENlbGwucm93SW5kZXgsXHJcbiAgICAgIHN0YXJ0Q2VsbC5jb2xJbmRleCxcclxuICAgICAgc3RhcnRDZWxsLnN1YkNvbEluZGV4XHJcbiAgICApO1xyXG5cclxuICAgIGlmICh1cGRhdGVkUm93cz8udXBkYXRlUm93cz8ubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMuZ2VuZXJpY0V2ZW50LmVtaXQoe1xyXG4gICAgICAgIGRhdGE6IHVwZGF0ZWRSb3dzPy51cGRhdGVSb3dzLFxyXG4gICAgICAgIGV2ZW50VHlwZTogJ29uQ2VsbEVkaXQnLFxyXG4gICAgICAgIGNvbHVtbjogdXBkYXRlZFJvd3M/LmN1cnJlbnRDb2x1bXNcclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgc2hvd0NvbmZpcm1hdGlvbk1vZGFsKG1lc3NhZ2U6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xyXG4gICAgICBjb25zdCBvdmVybGF5ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XHJcbiAgICAgIG92ZXJsYXkuY2xhc3NMaXN0LmFkZCgnY3VzdG9tLW92ZXJsYXktd3JhcHBlcicpO1xyXG4gICAgICBvdmVybGF5LmlubmVySFRNTCA9IGBcclxuICAgICAgPGRpdiBjbGFzcz1cImN1c3RvbS1vdmVybGF5XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImN1c3RvbS1tb2RhbFwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImN1c3RvbS1tb2RhbC1ib2R5XCI+XHJcbiAgICAgICAgICAgIDxwIGNsYXNzPVwibW9kYWwtbWVzc2FnZVwiPiR7bWVzc2FnZX08L3A+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1hY3Rpb25zXCI+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0bi1jb25maXJtXCI+Q29uZmlybTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4tY2FuY2VsXCI+Q2FuY2VsPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgYDtcclxuXHJcbiAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQob3ZlcmxheSk7XHJcbiAgICAgIGNvbnN0IGNvbmZpcm1CdG4gPSBvdmVybGF5LnF1ZXJ5U2VsZWN0b3IoJy5idG4tY29uZmlybScpIGFzIEhUTUxFbGVtZW50O1xyXG4gICAgICBjb25zdCBjYW5jZWxCdG4gPSBvdmVybGF5LnF1ZXJ5U2VsZWN0b3IoJy5idG4tY2FuY2VsJykgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICAgIGNvbnN0IGNsZWFudXAgPSAoKSA9PiB7XHJcbiAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChvdmVybGF5KTtcclxuICAgICAgfTtcclxuICAgICAgY29uZmlybUJ0bi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHtcclxuICAgICAgICBjbGVhbnVwKCk7XHJcbiAgICAgICAgcmVzb2x2ZSh0cnVlKTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgICBjYW5jZWxCdG4uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB7XHJcbiAgICAgICAgY2xlYW51cCgpO1xyXG4gICAgICAgIHJlc29sdmUoZmFsc2UpO1xyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcblxyXG5cclxuXHJcblxyXG4gIGlzRGF0ZSh2YWx1ZTogYW55KTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gIWlzTmFOKG5ldyBEYXRlKHZhbHVlKT8uZ2V0VGltZSgpKTtcclxuICB9XHJcblxyXG5cclxuICAvLyBIb2xkIGV4cGFuZGVkIElEcyAoYXJyYXkgZm9yIG11bHRpcGxlLCBzaW5nbGUgdmFsdWUgZm9yIHNpbmdsZSlcclxuICBleHBhbmRlZGVkRGV0YWlsUm93czogKHN0cmluZyB8IG51bWJlcilbXSB8IHN0cmluZyB8IG51bWJlciA9ICcnO1xyXG5cclxuICB0b2dnbGVEZXRhaWxSb3dFeHBhbmQocm93OiBhbnkpIHtcclxuICAgIGNvbnN0IGlkID0gcm93Py5pZCB8fCByb3c/Ll9pZDtcclxuICAgIGlmICh0aGlzLmdyaWRUeXBlID09PSAnQXNzZXRzJyAmJiByb3c/LmRldGFpbD8uY29sdW1ucykge1xyXG4gICAgICByb3cuZGV0YWlsLmNvbHVtbnMuZm9yRWFjaCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgICAgaXRlbS53aWR0aCA9IGl0ZW0/LndpZHRoIHx8ICh0aGlzLmRhdGFHcmlkQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGggLyByb3cuZGV0YWlsLmNvbHVtbnM/Lmxlbmd0aClcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMucHJldmlld05lc3RlZENvbHMgPSB0aGlzLmRlZXBDbG9uZUNvbHVtbnMocm93LmRldGFpbC5jb2x1bW5zKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmtlZXBNdWx0aXBsZUV4cGFuZGVkRGV0YWlscykge1xyXG4gICAgICBpZiAoIUFycmF5LmlzQXJyYXkodGhpcy5leHBhbmRlZGVkRGV0YWlsUm93cykpIHtcclxuICAgICAgICB0aGlzLmV4cGFuZGVkZWREZXRhaWxSb3dzID0gW107XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgZXhwYW5kZWQgPSB0aGlzLmV4cGFuZGVkZWREZXRhaWxSb3dzIGFzIChzdHJpbmcgfCBudW1iZXIpW107XHJcbiAgICAgIGNvbnN0IGluZGV4ID0gZXhwYW5kZWQuaW5kZXhPZihpZCk7XHJcblxyXG4gICAgICBpZiAoaW5kZXggPiAtMSkge1xyXG4gICAgICAgIGV4cGFuZGVkLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgZXhwYW5kZWQucHVzaChpZCk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICh0aGlzLmV4cGFuZGVkZWREZXRhaWxSb3dzID09PSBpZCkge1xyXG4gICAgICAgIHRoaXMuZXhwYW5kZWRlZERldGFpbFJvd3MgPSAnJztcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmV4cGFuZGVkZWREZXRhaWxSb3dzID0gaWQ7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdm9pZCB0aGlzLnJpZ2h0UGlubmVkSGVhZGVyPy5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoO1xyXG4gICAgICB0aGlzLmNlbnRlclBpbm5lZEJvZHk/Lm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGg7XHJcbiAgICAgIHRoaXMucmlnaHRQaW5uZWRCb2R5Py5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoO1xyXG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9LCAzMDApXHJcbiAgfVxyXG5cclxuICBpc0RldGFpbHNFeHBhbmRlZChyb3c6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgaWQgPSByb3c/LmlkIHx8IHJvdz8uX2lkO1xyXG5cclxuICAgIGlmICh0aGlzLmtlZXBNdWx0aXBsZUV4cGFuZGVkRGV0YWlscykge1xyXG4gICAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh0aGlzLmV4cGFuZGVkZWREZXRhaWxSb3dzKSAmJlxyXG4gICAgICAgIHRoaXMuZXhwYW5kZWRlZERldGFpbFJvd3MuaW5jbHVkZXMoaWQpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHRoaXMuZXhwYW5kZWRlZERldGFpbFJvd3MgPT09IGlkO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0RmlsdGVyVmFsdWUob3B0aW9uOiBhbnkpOiBhbnkge1xyXG4gICAgcmV0dXJuIG9wdGlvbj8udmFsdWUgPz8gb3B0aW9uO1xyXG4gIH1cclxuXHJcblxyXG4gIG9wZW5JbmRleDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XHJcbiAgdG9nZ2xlTWVudShpOiBudW1iZXIsIGV2ZW50PzogTW91c2VFdmVudCkge1xyXG4gICAgaWYgKGV2ZW50KSB7IGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyB9XHJcbiAgICB0aGlzLm9wZW5JbmRleCA9IHRoaXMub3BlbkluZGV4ID09PSBpID8gbnVsbCA6IGk7XHJcbiAgfVxyXG5cclxuICBAVmlld0NoaWxkKCduZXN0ZWRUYWJsZScpXHJcbiAgbmVzdGVkVGFibGUhOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcclxuICBnZXQgaGFzVmVydGljYWxTY3JvbGwoKTogYm9vbGVhbiB7XHJcbiAgICBpZiAoIXRoaXMubmVzdGVkVGFibGUpIHJldHVybiBmYWxzZTtcclxuICAgIHJldHVybiB0aGlzLm5lc3RlZFRhYmxlLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsSGVpZ2h0ID4gdGhpcy5uZXN0ZWRUYWJsZS5uYXRpdmVFbGVtZW50LmNsaWVudEhlaWdodDtcclxuICB9XHJcblxyXG4gIGdldCBoYXNIb3Jpem9udGFsU2Nyb2xsKCk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKCF0aGlzLm5lc3RlZFRhYmxlKSByZXR1cm4gZmFsc2U7XHJcbiAgICBjb25zdCBlbCA9IHRoaXMubmVzdGVkVGFibGUubmF0aXZlRWxlbWVudDtcclxuICAgIHJldHVybiBlbC5zY3JvbGxXaWR0aCA+IGVsLmNsaWVudFdpZHRoO1xyXG4gIH1cclxuXHJcblxyXG4gIGdldFRvdGFsQW1vdW50KGNvbHVtbjogYW55KSB7XHJcbiAgICBpZiAoIWNvbHVtbj8uaXNfYW1vdW50KSByZXR1cm47XHJcbiAgICBjb25zdCB0b3RhbCA9IHRoaXMub3JpZ2luYWxEYXRhU2V0LnJlZHVjZSgoc3VtLCByb3cpID0+IHtcclxuICAgICAgY29uc3QgdmFsdWUgPSByb3dbY29sdW1uLmZpZWxkXSB8fCAwO1xyXG4gICAgICByZXR1cm4gc3VtICsgdmFsdWU7XHJcbiAgICB9LCAwKTtcclxuICAgIGlmKCF0b3RhbCkgcmV0dXJuIGAke3RoaXMuY3VycmVuY3lTeW1ib2x9IDAuMDBgXHJcbiAgICByZXR1cm4gYCR7dGhpcy5jdXJyZW5jeVN5bWJvbH0gJHt0aGlzLmZvcm1hdEN1cnJlbmN5LnRyYW5zZm9ybSh0b3RhbCwgdGhpcy5jdXJyZW5jeUZvcm1hdCl9YDtcclxuICB9XHJcblxyXG4gIGRyb3BDb2x1bW4oZXZlbnQ6IENka0RyYWdEcm9wPGFueVtdPiwgcm93OiBhbnkpIHtcclxuICAgIC8vIFJlb3JkZXIgdGhlIGNvbHVtbnMgYXJyYXlcclxuICAgIG1vdmVJdGVtSW5BcnJheShyb3cuZGV0YWlsLmNvbHVtbnMsIGV2ZW50LnByZXZpb3VzSW5kZXgsIGV2ZW50LmN1cnJlbnRJbmRleCk7XHJcbiAgfVxyXG5cclxuICBjdXJyZW50U3ViU29ydENvbHVtbjogc3RyaW5nIHwgbnVsbCA9IG51bGw7IC8vIGFjdGl2ZSBjb2x1bW5cclxuICBjdXJyZW50U29ydERpcmVjdGlvbjogJ2FzYycgfCAnZGVzYycgPSAnYXNjJzsgLy8gYWN0aXZlIGRpcmVjdGlvblxyXG5cclxuICBzb3J0TmVzdGVkQ29sKGNvbDogYW55LCByb3c6IGFueSkge1xyXG4gICAgY29uc3QgZGF0YVNldCA9IHJvdz8uZGV0YWlsPy5yZXN1bHQ7XHJcbiAgICBpZiAodGhpcy5jdXJyZW50U3ViU29ydENvbHVtbiA9PT0gY29sLmZpZWxkKSB7XHJcbiAgICAgIHRoaXMuY3VycmVudFNvcnREaXJlY3Rpb24gPSB0aGlzLmN1cnJlbnRTb3J0RGlyZWN0aW9uID09PSAnYXNjJyA/ICdkZXNjJyA6ICdhc2MnO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5jdXJyZW50U3ViU29ydENvbHVtbiA9IGNvbC5maWVsZDtcclxuICAgICAgdGhpcy5jdXJyZW50U29ydERpcmVjdGlvbiA9ICdhc2MnO1xyXG4gICAgfVxyXG4gICAgY29sLm9yZGVyX2J5ID0gdGhpcy5jdXJyZW50U29ydERpcmVjdGlvbjtcclxuXHJcbiAgICAvLyBTb3J0IGNvcHkgaW5zdGVhZCBvZiBtdXRhdGluZ1xyXG4gICAgY29uc3Qgc29ydGVkID0gWy4uLmRhdGFTZXRdLnNvcnQoKGEsIGIpID0+IHtcclxuICAgICAgbGV0IGFWYWwgPSBhW2NvbC5maWVsZF07XHJcbiAgICAgIGxldCBiVmFsID0gYltjb2wuZmllbGRdO1xyXG4gICAgICBhVmFsID0gYVZhbCA9PSBudWxsID8gJycgOiBhVmFsO1xyXG4gICAgICBiVmFsID0gYlZhbCA9PSBudWxsID8gJycgOiBiVmFsO1xyXG5cclxuICAgICAgaWYgKGNvbC50eXBlID09PSAnZGF0ZScpIHtcclxuICAgICAgICBhVmFsID0gbmV3IERhdGUoYVZhbCkuZ2V0VGltZSgpO1xyXG4gICAgICAgIGJWYWwgPSBuZXcgRGF0ZShiVmFsKS5nZXRUaW1lKCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGNvbnN0IGFOdW0gPSBwYXJzZUZsb2F0KGFWYWwpO1xyXG4gICAgICBjb25zdCBiTnVtID0gcGFyc2VGbG9hdChiVmFsKTtcclxuICAgICAgY29uc3QgYm90aE51bWJlcnMgPSAhaXNOYU4oYU51bSkgJiYgIWlzTmFOKGJOdW0pO1xyXG5cclxuICAgICAgaWYgKGJvdGhOdW1iZXJzKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudFNvcnREaXJlY3Rpb24gPT09ICdhc2MnID8gYU51bSAtIGJOdW0gOiBiTnVtIC0gYU51bTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBjb25zdCBjb21wID0gU3RyaW5nKGFWYWwpLmxvY2FsZUNvbXBhcmUoU3RyaW5nKGJWYWwpKTtcclxuICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50U29ydERpcmVjdGlvbiA9PT0gJ2FzYycgPyBjb21wIDogLWNvbXA7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHJvdy5kZXRhaWwucmVzdWx0ID0gc29ydGVkO1xyXG5cclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG5cclxuICBnZXRDb2x1bW5XaWR0aFB4KHJvdzogYW55LCBjb2w6IGFueSk6IHN0cmluZyB7XHJcbiAgICBpZiAoY29sLndpZHRoKSByZXR1cm4gY29sLndpZHRoICsgJ3B4JztcclxuICAgIGNvbnN0IHBpeGVscyA9IHRoaXMuY2VudGVyU2Nyb2xsYWJsZUJvZHk/Lm5hdGl2ZUVsZW1lbnQ/Lm9mZnNldFdpZHRoIC8gcm93LmRldGFpbD8uY29sdW1ucy5sZW5ndGg7XHJcbiAgICByZXR1cm4gcGl4ZWxzICsgJ3B4JztcclxuICB9XHJcblxyXG4gIGZ1bGxzY3JlZW5JbWFnZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcblxyXG5cclxuICAvLyBBc3Nlc3RzIE5lc3RlZCBUYWJsZSBXb3JrIEltcGxlbWVudGVkIEhlcmVcclxuXHJcbiAgcGluVW5waW5Db2x1bShjb2w6IGFueSwgdmFsdWU6ICdsZWZ0JyB8ICdyaWdodCcgfCBudWxsLCBjb2x1bW5zOiBhbnlbXSkge1xyXG4gICAgY29sLnBpbm5lZCA9IHZhbHVlO1xyXG4gICAgY29uc3QgbGVmdCA9IGNvbHVtbnMuZmlsdGVyKGMgPT4gYy5waW5uZWQgPT09ICdsZWZ0Jyk7XHJcbiAgICBjb25zdCBtaWRkbGUgPSBjb2x1bW5zLmZpbHRlcihjID0+ICFjLnBpbm5lZCB8fCBjLnBpbm5lZCA9PT0gbnVsbCk7XHJcbiAgICBjb25zdCByaWdodCA9IGNvbHVtbnMuZmlsdGVyKGMgPT4gYy5waW5uZWQgPT09ICdyaWdodCcpO1xyXG4gICAgY29sdW1ucy5sZW5ndGggPSAwO1xyXG4gICAgY29sdW1ucy5wdXNoKC4uLmxlZnQsIC4uLm1pZGRsZSwgLi4ucmlnaHQpO1xyXG4gICAgdGhpcy5hY3RpdmVDb2wgPSBudWxsO1xyXG4gIH1cclxuXHJcbiAgZ2V0TGVmdFBpbm5lZENvdW50KGNvbHVtbnM6IGFueVtdKTogbnVtYmVyIHtcclxuICAgIHJldHVybiBjb2x1bW5zLmZpbHRlcihjID0+IGMucGlubmVkID09PSAnbGVmdCcpLmxlbmd0aDtcclxuICB9XHJcblxyXG4gIGdldFJpZ2h0UGlubmVkQ291bnQoY29sdW1uczogYW55W10pOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIGNvbHVtbnMuZmlsdGVyKGMgPT4gYy5waW5uZWQgPT09ICdyaWdodCcpLmxlbmd0aDtcclxuICB9XHJcblxyXG4gIGdldFN0aWNreUxlZnQoY29sdW1uczogYW55W10sIGluZGV4OiBudW1iZXIpOiBzdHJpbmcge1xyXG4gICAgbGV0IGxlZnQgPSAwO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpbmRleDsgaSsrKSB7XHJcbiAgICAgIGNvbnN0IHByZXZDb2wgPSBjb2x1bW5zW2ldO1xyXG4gICAgICBpZiAocHJldkNvbC5waW5uZWQgPT09ICdsZWZ0Jykge1xyXG4gICAgICAgIGxlZnQgKz0gcHJldkNvbC53aWR0aCB8fCAxMDA7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBgJHtsZWZ0fXB4YDtcclxuICB9XHJcblxyXG4gIHByZXZpZXdOZXN0ZWRDb2xzOiBhbnlbXSA9IFtdO1xyXG4gIG9uTmVzdGVkQ29sU29ydChldmVudDogQ2RrRHJhZ1NvcnRFdmVudDxhbnlbXT4sIGNvbHVtbnM6IGFueVtdKTogdm9pZCB7XHJcbiAgICBpZiAoIWV2ZW50IHx8ICFjb2x1bW5zKSByZXR1cm47XHJcbiAgICBjb25zdCBmaXJzdFBvc2l0aW9ucyA9IG5ldyBNYXA8SFRNTEVsZW1lbnQsIG51bWJlcj4oKTtcclxuICAgIGNvbHVtbnMuZm9yRWFjaCgoY29sKSA9PiB7XHJcbiAgICAgIGNvbnN0IGNvbENlbGxzID0gQXJyYXkuZnJvbShkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKGBbZmllbGQ9XCIke2NvbC5maWVsZH1cIl1gKSkgYXMgSFRNTEVsZW1lbnRbXTtcclxuICAgICAgY29sQ2VsbHMuZm9yRWFjaCgoZWwpID0+IGZpcnN0UG9zaXRpb25zLnNldChlbCwgZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdCkpO1xyXG4gICAgfSk7XHJcbiAgICBtb3ZlSXRlbUluQXJyYXkoY29sdW1ucywgZXZlbnQucHJldmlvdXNJbmRleCwgZXZlbnQuY3VycmVudEluZGV4KTtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XHJcbiAgICAgIGNvbHVtbnMuZm9yRWFjaCgoY29sKSA9PiB7XHJcbiAgICAgICAgY29uc3QgdXBkYXRlZENlbGxzID0gQXJyYXkuZnJvbShkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKGBbZmllbGQ9XCIke2NvbC5maWVsZH1cIl1gKSkgYXMgSFRNTEVsZW1lbnRbXTtcclxuICAgICAgICB1cGRhdGVkQ2VsbHMuZm9yRWFjaCgoZWwpID0+IHtcclxuICAgICAgICAgIGNvbnN0IG5ld0xlZnQgPSBlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0O1xyXG4gICAgICAgICAgY29uc3Qgb2xkTGVmdCA9IGZpcnN0UG9zaXRpb25zLmdldChlbCkgPz8gbmV3TGVmdDtcclxuICAgICAgICAgIGNvbnN0IGRlbHRhWCA9IG9sZExlZnQgLSBuZXdMZWZ0O1xyXG5cclxuICAgICAgICAgIGlmIChkZWx0YVggIT09IDApIHtcclxuICAgICAgICAgICAgZWwuc3R5bGUudHJhbnNpdGlvbiA9ICdub25lJztcclxuICAgICAgICAgICAgZWwuc3R5bGUudHJhbnNmb3JtID0gYHRyYW5zbGF0ZVgoJHtkZWx0YVh9cHgpYDtcclxuICAgICAgICAgICAgdm9pZCBlbC5vZmZzZXRXaWR0aDtcclxuICAgICAgICAgICAgZWwuc3R5bGUudHJhbnNpdGlvbiA9ICd0cmFuc2Zvcm0gMjUwbXMgZWFzZSc7XHJcbiAgICAgICAgICAgIGVsLnN0eWxlLnRyYW5zZm9ybSA9ICd0cmFuc2xhdGVYKDApJztcclxuICAgICAgICAgICAgY29uc3QgY2xlYW51cCA9ICgpID0+IHtcclxuICAgICAgICAgICAgICBlbC5zdHlsZS50cmFuc2l0aW9uID0gJyc7XHJcbiAgICAgICAgICAgICAgZWwuc3R5bGUudHJhbnNmb3JtID0gJyc7XHJcbiAgICAgICAgICAgICAgZWwucmVtb3ZlRXZlbnRMaXN0ZW5lcigndHJhbnNpdGlvbmVuZCcsIGNsZWFudXApO1xyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBlbC5hZGRFdmVudExpc3RlbmVyKCd0cmFuc2l0aW9uZW5kJywgY2xlYW51cCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuXHJcbiAgc2F2ZVNlbGVjdGlvbihzZWxlY3RlZElkczogc3RyaW5nW10sIHRhYmxlVHlwZTogc3RyaW5nKSB7XHJcbiAgICBpZiAoIXRhYmxlVHlwZSkgcmV0dXJuO1xyXG4gICAgY29uc3Qgc3RvcmVkID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnZGF0YXRhYmxlU2VsZWN0aW9ucycpIHx8ICd7XCJzZWxlY3RlZFJvd3NcIjoge319Jyk7XHJcbiAgICBjb25zdCBhbGxTZWxlY3RlZCA9IHN0b3JlZC5zZWxlY3RlZFJvd3MgfHwge307XHJcbiAgICBhbGxTZWxlY3RlZFt0YWJsZVR5cGVdID0gc2VsZWN0ZWRJZHM7XHJcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShcclxuICAgICAgJ2RhdGF0YWJsZVNlbGVjdGlvbnMnLFxyXG4gICAgICBKU09OLnN0cmluZ2lmeSh7XHJcbiAgICAgICAgc2VsZWN0ZWRSb3dzOiBhbGxTZWxlY3RlZCxcclxuICAgICAgICBsaXN0aW5nVHlwZTogdGFibGVUeXBlXHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gIH1cclxuXHJcblxyXG4gIHJlc3RvcmVTZWxlY3Rpb24odGFibGVUeXBlOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IHN0b3JlZCA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2RhdGF0YWJsZVNlbGVjdGlvbnMnKSB8fCAne30nKTtcclxuICAgIGNvbnN0IGlkcyA9IHN0b3JlZC5zZWxlY3RlZFJvd3M/Llt0YWJsZVR5cGVdIHx8IFtdO1xyXG4gICAgdGhpcy5zZWxlY3RlZFJvd3MgPSBuZXcgU2V0KGlkcyk7XHJcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RlZFJvd3M7XHJcbiAgfVxyXG5cclxuXHJcblxyXG4gIGlzT3V0c2lkZUNvbnRhaW5lciA9IGZhbHNlO1xyXG4gIHByaXZhdGUgY29udGFpbmVyUmVjdDogRE9NUmVjdCB8IG51bGwgPSBudWxsO1xyXG5cclxuXHJcbiAgb25EcmFnU3RhcnRlZChjb2w6IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5jdXJyZW50RHJhZ2dpbmdDb2x1bW4gPSBjb2w7XHJcbiAgICBjb25zdCBjb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZGF0YS1ncmlkLW1haW4tY29udGFpbmVyJyk7XHJcbiAgICB0aGlzLmNvbnRhaW5lclJlY3QgPSBjb250YWluZXI/LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpIHx8IG51bGw7XHJcbiAgfVxyXG5cclxuICBvbkRyYWdNb3ZlZChldmVudDogQ2RrRHJhZ01vdmUpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5jb250YWluZXJSZWN0KSByZXR1cm47XHJcblxyXG4gICAgY29uc3QgeyB4LCB5IH0gPSBldmVudC5wb2ludGVyUG9zaXRpb247XHJcbiAgICBjb25zdCBpc091dHNpZGUgPVxyXG4gICAgICB4IDwgdGhpcy5jb250YWluZXJSZWN0LmxlZnQgfHxcclxuICAgICAgeCA+IHRoaXMuY29udGFpbmVyUmVjdC5yaWdodCB8fFxyXG4gICAgICB5IDwgdGhpcy5jb250YWluZXJSZWN0LnRvcCB8fFxyXG4gICAgICB5ID4gdGhpcy5jb250YWluZXJSZWN0LmJvdHRvbTtcclxuXHJcbiAgICAvLyBpZiAoaXNPdXRzaWRlICE9PSB0aGlzLmlzT3V0c2lkZUNvbnRhaW5lcikge1xyXG4gICAgLy8gICB0aGlzLmlzT3V0c2lkZUNvbnRhaW5lciA9IGlzT3V0c2lkZTtcclxuICAgIC8vIH1cclxuICB9XHJcblxyXG4gIG9uRHJhZ0VuZGVkKCk6IHZvaWQge1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIC8vIGlmICh0aGlzLmlzT3V0c2lkZUNvbnRhaW5lciAmJiB0aGlzLmN1cnJlbnREcmFnZ2luZ0NvbHVtbikge1xyXG4gICAgICAvLyAgIHRoaXMuY3VycmVudERyYWdnaW5nQ29sdW1uIS5pc192aXNpYmxlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50RHJhZ2dpbmdDb2x1bW4gPSBudWxsO1xyXG4gICAgICAgIHRoaXMuaXNPdXRzaWRlQ29udGFpbmVyID0gZmFsc2U7XHJcbiAgICAgIC8vICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAvLyB9XHJcbiAgICB9LCAxMDApO1xyXG4gICAgdGhpcy5jb250YWluZXJSZWN0ID0gbnVsbDtcclxuICB9XHJcblxyXG4gIGdldFN0YXJ0SW5kZXgoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLnBhZ2luYXRpb25Db25maWcudG90YWxSZXN1bHRzID09PSAwXHJcbiAgICAgID8gMFxyXG4gICAgICA6ICh0aGlzLnBhZ2luYXRpb25Db25maWcucGFnZSAtIDEpICogdGhpcy5wYWdpbmF0aW9uQ29uZmlnLmxpbWl0ICsgMSB8fCAwO1xyXG4gIH1cclxuXHJcbiAgaGFzQW55RGVmYXVsdFZpZXcoKSB7XHJcbiAgICByZXR1cm4gdGhpcy50YWJsZVZpZXc/LnNvbWUoKHgpID0+IHguaXNfZGVmYXVsdCB8fCB4LmlzX3RlbXApO1xyXG4gIH1cclxuXHJcblxyXG4gIGdldCBpc1RhYmxlUHJlc2V0Tm90Q2hhbmdlZCgpIHtcclxuICAgIGlmICh0aGlzLnRhYmxlRmlsdGVyVmlld0lkKSByZXR1cm4gZmFsc2U7XHJcbiAgICBjb25zdCBjdXJyUHJlc2V0ID0gdGhpcy5jdXJyZXRhVGFibGVQcmVzZXRGb3JVcGRhdGU7XHJcblxyXG4gICAgY29uc3QgY3VycmVudFByZXNldENvbHVtbnMgPSBjdXJyUHJlc2V0Py5jb2x1bW5zPy5tYXAoKGNvbDogeyBmaWVsZDogYW55OyB3aWR0aDogYW55OyBwaW5uZWQ6IGFueTsgfSkgPT4ge1xyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIGZpZWxkOiBjb2wuZmllbGQsXHJcbiAgICAgICAgd2lkdGg6IGNvbC53aWR0aCxcclxuICAgICAgICBwaW5uZWQ6IGNvbC5waW5uZWRcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICBjb25zdCBjb2x1bW5zID0gdGhpcy5jb2x1bW5zPy5tYXAoY29sID0+IHtcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICBmaWVsZDogY29sLmZpZWxkLFxyXG4gICAgICAgIHdpZHRoOiBjb2wud2lkdGgsXHJcbiAgICAgICAgcGlubmVkOiBjb2wucGlubmVkXHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIGNvbnN0IHN0cmluZ3NDdXJyZW50UHJlc3RDb2xzID0gSlNPTi5zdHJpbmdpZnkoY3VycmVudFByZXNldENvbHVtbnMpO1xyXG4gICAgY29uc3Qgc3RyaW5nQ29sdW1ucyA9IEpTT04uc3RyaW5naWZ5KGNvbHVtbnMpO1xyXG4gICAgY29uc3QgZmlsdGVycyA9IHRoaXMuZmlsdGVyc0NvbmZpZy5tYXAoKGZpbHRlcikgPT4ge1xyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIGZpbGVkOiBmaWx0ZXIuZmllbGQsXHJcbiAgICAgICAgcXVlcnk6IHtcclxuICAgICAgICAgIGNvbmRpdGlvbjogZmlsdGVyPy5xdWVyeT8uY29uZGl0aW9uLFxyXG4gICAgICAgICAgZmlyc3RfY29uZGl0aW9uOiBmaWx0ZXI/LnF1ZXJ5Py5maXJzdF9jb25kaXRpb24sXHJcbiAgICAgICAgICBmaXJzdF92YWx1ZTogZmlsdGVyPy5xdWVyeT8uZmlyc3RfdmFsdWUsXHJcbiAgICAgICAgICBzZWNvbmRfY29uZGl0aW9uOiBmaWx0ZXI/LnF1ZXJ5Py5zZWNvbmRfY29uZGl0aW9uLFxyXG4gICAgICAgICAgc2Vjb25kX3ZhbHVlOiBmaWx0ZXI/LnF1ZXJ5Py5zZWNvbmRfdmFsdWUsXHJcbiAgICAgICAgfSxcclxuICAgICAgICBfaWRzOiBmaWx0ZXI/Ll9pZHNcclxuICAgICAgfVxyXG4gICAgfSlcclxuXHJcbiAgICBjb25zdCBjdXJyZW50UHJlc2V0RmlsdGVycyA9IGN1cnJQcmVzZXQ/LmZpbHRlcnM/Lm1hcCgoZmlsdGVyOiBhbnkpID0+IHtcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICBmaWxlZDogZmlsdGVyLmZpZWxkLFxyXG4gICAgICAgIHF1ZXJ5OiBmaWx0ZXIucXVlcnksXHJcbiAgICAgICAgX2lkczogZmlsdGVyPy5faWRzXHJcbiAgICAgIH1cclxuICAgIH0pXHJcblxyXG5cclxuICAgIC8vIGNvbnNvbGUubG9nKFwiZmlsdGVyIGNvbmdpZzogXCIsIGZpbHRlcnMpO1xyXG4gICAgLy8gY29uc29sZS5sb2coXCJjdXJyZW50IHByZXNldCBmaWx0ZXJzOiBcIiwgY3VycmVudFByZXNldEZpbHRlcnMpO1xyXG5cclxuICAgIC8vIGNvbnNvbGUubG9nKCdpc0VxdWFsJywgc3RyaW5nc0N1cnJlbnRQcmVzdENvbHMgPT0gc3RyaW5nQ29sdW1ucyk7XHJcbiAgICAvLyBjb25zb2xlLmxvZygnQ3VycmVudCBUZW1wIFByZXNldCA6ICcsIGN1cnJQcmVzZXQpXHJcbiAgICAvLyBjb25zb2xlLmxvZygnQ3VycmVudCBUZW1wIFByZXNldCBDb2xzIGNvbHVtbnM6ICcsIGN1cnJlbnRQcmVzZXRDb2x1bW5zKVxyXG4gICAgLy8gY29uc29sZS5sb2coJ0N1cnJlbnQgY29sdW1uczogJywgY29sdW1ucyk7XHJcblxyXG4gICAgaWYgKCFjdXJyZW50UHJlc2V0Q29sdW1ucykgcmV0dXJuIHRydWU7XHJcbiAgICByZXR1cm4gKGN1cnJlbnRQcmVzZXRDb2x1bW5zICYmIChzdHJpbmdzQ3VycmVudFByZXN0Q29scyA9PSBzdHJpbmdDb2x1bW5zKSAmJiAoSlNPTi5zdHJpbmdpZnkoZmlsdGVycykgPT0gSlNPTi5zdHJpbmdpZnkoY3VycmVudFByZXNldEZpbHRlcnMpKSAmJiAodGhpcy5mb250RmFpbWx5ID09IGN1cnJQcmVzZXQuY29uZmlnLmZvbnRGYWltbHkpXHJcbiAgICAgICYmICh0aGlzLmJvZHlUZXh0Rm9udHNTaXplID09IGN1cnJQcmVzZXQuY29uZmlnLmJvZHlUZXh0Rm9udHNTaXplKSAmJlxyXG4gICAgICAodGhpcy5oZWFkZXJUZXh0Rm9udHNTaXplID09IHRoaXMuaGVhZGVyVGV4dEZvbnRzU2l6ZSlcclxuICAgICAgJiYgdGhpcy5jdXJyZXRhVGFibGVQcmVzZXRGb3JVcGRhdGUuY29uZmlnLnNob3dWZXJ0aWNhbEJvcmRlciA9PSB0aGlzLnNob3dWZXJ0aWNhbEJvcmRlclxyXG4gICAgICAmJiB0aGlzLmN1cnJldGFUYWJsZVByZXNldEZvclVwZGF0ZS5jb25maWcuZm9udEZhaW1seSA9PSB0aGlzLmZvbnRGYWltbHlcclxuICAgICAgJiYgdGhpcy5jdXJyZXRhVGFibGVQcmVzZXRGb3JVcGRhdGUuY29uZmlnLnNlbGVjdGVkVGFibGVMYXlvdXQgPT0gdGhpcy5zZWxlY3RlZFRhYmxlTGF5b3V0XHJcbiAgICAgICYmIHRoaXMuY3VycmV0YVRhYmxlUHJlc2V0Rm9yVXBkYXRlLmNvbmZpZy5ib2R5VGV4dEZvbnRzU2l6ZSA9PSB0aGlzLmJvZHlUZXh0Rm9udHNTaXplXHJcbiAgICAgICYmIHRoaXMuY3VycmV0YVRhYmxlUHJlc2V0Rm9yVXBkYXRlLmNvbmZpZy5yb3dTaGFkaW5nRW5hYmxlZCA9PSB0aGlzLnJvd1NoYWRpbmdFbmFibGVkKTtcclxuXHJcbiAgICAvLyByZXR1cm4gZmFsc2VcclxuICB9XHJcblxyXG4gIG9uQWN0aW9uQnV0dG9uQ2xpY2soYnV0dG9uOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IHRleHQgPSBidXR0b24/LnRvTG9jYWxlTG93ZXJDYXNlKCk7XHJcbiAgICBpZiAodGV4dCA9PSAnYWN0aXZlIGRhdGEnIHx8IHRleHQgPT0gJ2FjdGl2ZScgfHwgdGV4dCA9PSAnZGF0YSBhY3RpdmUnIHx8IHRleHQgPT0gJ3VuYXJjaGl2ZWQgZGF0YScgfHwgdGV4dCA9PSAndW5hcmNoaXZlIGRhdGEnKSB0aGlzLmNsZWFyU2VsZWN0aW9uU3RhdGUodGhpcy50YWJsZVR5cGUpO1xyXG4gICAgY29uc3QgZXZlbnQgPSB7XHJcbiAgICAgIGRhdGE6IHtcclxuICAgICAgICBsaXN0aW5nVHlwZTogdGhpcy5saXN0aW5nVHlwZSxcclxuICAgICAgICBvYmo6IGJ1dHRvblxyXG4gICAgICB9LFxyXG4gICAgICBldmVudFR5cGU6IFwib25BY3Rpb25CdXR0b25DbGlja1wiLFxyXG4gICAgfTtcclxuICAgIHRoaXMuZ2VuZXJpY0V2ZW50LmVtaXQoZXZlbnQpO1xyXG4gIH1cclxuXHJcblxyXG4gIHNldEFjdGl2ZVRhYih0YWI6IHN0cmluZyB8IG51bGwpOiB2b2lkIHtcclxuICAgIHRoaXMuYWN0aXZlVGFiID0gdGFiO1xyXG4gICAgY29uc3QgYWxsVGFicyA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2FjdGl2ZVRhYnMnKSB8fCAne30nKTtcclxuICAgIGFsbFRhYnNbdGhpcy50YWJsZVR5cGVdID0gdGFiO1xyXG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2FjdGl2ZVRhYnMnLCBKU09OLnN0cmluZ2lmeShhbGxUYWJzKSk7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICBjb25zdCBldmVudCA9IHtcclxuICAgICAgZGF0YToge1xyXG4gICAgICAgIHRhYmxlVHlwZTogdGhpcy50YWJsZVR5cGUsXHJcbiAgICAgICAgb2JqOiB0YWJcclxuICAgICAgfSxcclxuICAgICAgZXZlbnRUeXBlOiAnb25UYWJDaGFuZ2UnLFxyXG4gICAgfTtcclxuXHJcbiAgICB0aGlzLmdlbmVyaWNFdmVudC5lbWl0KGV2ZW50KTtcclxuICB9XHJcblxyXG4gIGdldEJhY2tncm91bmRDb2xvcihyb3c6IGFueSwgaXNFdmVuOiBib29sZWFuLCBzZWN0aW9uOiAnbGVmdCcgfCAnY2VudGVyJyB8ICdyaWdodCcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xyXG4gICAgaWYgKHRoaXMuaG92ZXJlZFJvd0lkID09PSAocm93Ll9pZCB8fCByb3cuaWQpKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLnJvd0hvdmVyQ29sb3I7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5pc1Jvd1NlbGVjdGVkKHJvdykpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuY2hlY2tlZFJvd0JhY2tncm91bmRDb2xvcjtcclxuICAgIH1cclxuICAgIGxldCBiYXNlQ29sb3I6IHN0cmluZyB8IHVuZGVmaW5lZDtcclxuXHJcbiAgICBpZiAodGhpcy5yb3dTaGFkaW5nRW5hYmxlZCkge1xyXG4gICAgICBiYXNlQ29sb3IgPSBpc0V2ZW4gPyB0aGlzLmV2ZW5Sb3dzQmFja2dyb3VuZENvbG9yIDogdGhpcy5vZGRSb3dzQmFja2dyb3VuZENvbG9yO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgYmFzZUNvbG9yID0gdGhpcy5ldmVuUm93c0JhY2tncm91bmRDb2xvcjtcclxuICAgIH1cclxuICAgIGlmICghYmFzZUNvbG9yKSB7XHJcbiAgICAgIGlmIChzZWN0aW9uID09PSAnbGVmdCcpIHtcclxuICAgICAgICBiYXNlQ29sb3IgPSB0aGlzLmxlZnRQaW5uZWRCYWNrZ3JvdW5kQ29sb3I7XHJcbiAgICAgIH0gZWxzZSBpZiAoc2VjdGlvbiA9PT0gJ3JpZ2h0Jykge1xyXG4gICAgICAgIGJhc2VDb2xvciA9IHRoaXMucmlnaHRQaW5uZWRCYWNrZ3JvdW5kQ29sb3I7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgYmFzZUNvbG9yID0gdGhpcy5ib2R5QmFja2dyb3VuZENvbG9yO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYmFzZUNvbG9yO1xyXG4gIH1cclxuXHJcbiAgaGFzSG9yaXpvbnRhbFNjcm9sbGJhcigpOiBib29sZWFuIHtcclxuICAgIGlmICghdGhpcy5jZW50ZXJQaW5uZWRIZWFkZXI/Lm5hdGl2ZUVsZW1lbnQpIHJldHVybiBmYWxzZTtcclxuICAgIGNvbnN0IGVsID0gdGhpcy5jZW50ZXJQaW5uZWRIZWFkZXIubmF0aXZlRWxlbWVudDtcclxuICAgIHJldHVybiBlbC5zY3JvbGxXaWR0aCA+IGVsLmNsaWVudFdpZHRoO1xyXG4gIH1cclxuXHJcblxyXG4gIGdldFNhZmVDb21tZW50KGRlc2NyaXB0aW9uOiBzdHJpbmcpOiBTYWZlSHRtbCB7XHJcbiAgICByZXR1cm4gdGhpcy5jbGVhbkVkaXRvckNvbnRlbnQoZGVzY3JpcHRpb24pO1xyXG4gIH1cclxuICBjbGVhbkVkaXRvckNvbnRlbnQoY29udGVudDogc3RyaW5nKTogU2FmZUh0bWwge1xyXG4gICAgaWYgKCFjb250ZW50KSB7XHJcbiAgICAgIHJldHVybiAnJztcclxuICAgIH1cclxuICAgIC8vIDEuIERlY29kZSBIVE1MIGVudGl0aWVzXHJcbiAgICBjb25zdCB0ZXh0YXJlYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RleHRhcmVhJyk7XHJcbiAgICB0ZXh0YXJlYS5pbm5lckhUTUwgPSBjb250ZW50O1xyXG4gICAgbGV0IGRlY29kZWQgPSB0ZXh0YXJlYS52YWx1ZTtcclxuXHJcbiAgICBkZWNvZGVkID0gZGVjb2RlZFxyXG4gICAgICAucmVwbGFjZSgvPFxcLz8oc3BhbnxwfHRoZWFkfHRib2R5fHRmb290KVtePl0qPi9nLCAnJylcclxuICAgICAgLnJlcGxhY2UoLyZuYnNwOy9nLCAnICcpO1xyXG5cclxuICAgIC8vIEVuc3VyZSBjbGVhbiB0YWJsZSBzdHJ1Y3R1cmVcclxuICAgIGRlY29kZWQgPSBkZWNvZGVkXHJcbiAgICAgIC5yZXBsYWNlKC88dGFibGVbXj5dKj4vZywgJzx0YWJsZT4nKVxyXG4gICAgICAucmVwbGFjZSgvPHRyW14+XSo+L2csICc8dHI+JylcclxuICAgICAgLnJlcGxhY2UoLzx0aFtePl0qPi9nLCAnPHRoPicpXHJcbiAgICAgIC5yZXBsYWNlKC88dGRbXj5dKj4vZywgJzx0ZD4nKTsgIC8vIFJlbW92ZSA8dGhlYWQ+IGFuZCA8dGJvZHk+IHRhZ3NcclxuXHJcbiAgICAvLyA0LiBBZGQgaW5saW5lIHN0eWxlc1xyXG4gICAgZGVjb2RlZCA9IGRlY29kZWRcclxuICAgICAgLy8gQWRkIGlubGluZSBzdHlsZXMgdG8gPHRhYmxlPlxyXG4gICAgICAucmVwbGFjZSgvPHRhYmxlKFtePl0qKT4vZywgYDx0YWJsZSBzdHlsZT1cIndpZHRoOiAxMDAlOyBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOyBwYWRkaW5nOiAyMHB4OyBmb250LXNpemU6IDE0cHg7IGJhY2tncm91bmQtY29sb3I6ICNmZmZmZmY7XCIkMT5gKVxyXG4gICAgICAvLyBBZGQgaW5saW5lIHN0eWxlcyB0byA8dHI+XHJcbiAgICAgIC5yZXBsYWNlKC88dHIoW14+XSopPi9nLCBgPHRyIHN0eWxlPVwiYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNjY2M7XCIkMT5gKVxyXG4gICAgICAvLyBBZGQgaW5saW5lIHN0eWxlcyB0byA8dGg+XHJcbiAgICAgIC5yZXBsYWNlKC88dGgoW14+XSopPi9nLCBgPHRoIHN0eWxlPVwiYmFja2dyb3VuZC1jb2xvcjogI2YwZjBmMDsgZm9udC13ZWlnaHQ6IDYwMDsgZm9udC1zaXplOiAxNnB4OyBjb2xvcjogIzJBMUY3MzsgYm9yZGVyOiAxcHggc29saWQgI2NjYzsgcGFkZGluZzogMTJweCAyMHB4OyB0ZXh0LWFsaWduOiBsZWZ0O1wiJDE+YClcclxuICAgICAgLy8gQWRkIGlubGluZSBzdHlsZXMgdG8gPHRkPlxyXG4gICAgICAucmVwbGFjZSgvPHRkKFtePl0qKT4vZywgYDx0ZCBzdHlsZT1cIm1pbi13aWR0aDoxMjBweDsgYm9yZGVyOiAxcHggc29saWQgI2NjYzsgcGFkZGluZzogMTJweCAyMHB4OyB0ZXh0LWFsaWduOiBsZWZ0O1wiJDE+YCk7XHJcbiAgICBkZWNvZGVkID0gZGVjb2RlZC5yZXBsYWNlKC88aW1nKFtePl0qKT4vZywgKG1hdGNoLCBncm91cDEpID0+IHtcclxuICAgICAgLy8gQWRkIHN0eWxlIHRvIDxpbWc+IGlmIG5vdCBhbHJlYWR5IHNwZWNpZmllZFxyXG4gICAgICBpZiAoL3N0eWxlPS8udGVzdChncm91cDEpKSB7XHJcbiAgICAgICAgcmV0dXJuIG1hdGNoOyAgLy8gSWYgc3R5bGUgYWxyZWFkeSBleGlzdHMsIGtlZXAgaXRcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gYDxpbWcgc3R5bGU9XCJ3aWR0aDogMzAlOyBoZWlnaHQ6IDMwJTtib3JkZXItcmFkaXVzOiAxNnB4OyBwYWRkaW5nLXRvcDogMTVweDtwYWRkaW5nLWJvdHRvbTogMTBweDtcIiR7Z3JvdXAxfT5gO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIC8vIDUuIFJldHVybiBzYWZlIEhUTUxcclxuICAgIHJldHVybiB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0SHRtbChkZWNvZGVkKTtcclxuICB9XHJcblxyXG4gIGdldEV4dGVudGlvbih1cmw6IHN0cmluZyB8IHN0cmluZ1tdIHwgbnVsbCB8IHVuZGVmaW5lZCkge1xyXG4gICAgaWYgKHVybCAhPT0gJy0nKSB7XHJcbiAgICAgIGlmICh0eXBlb2YgKHVybCkgPT0gJ3N0cmluZycpIHtcclxuICAgICAgICByZXR1cm4gdXJsLnNwbGl0KCcuJykucG9wKClcclxuICAgICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHVybCkpIHtcclxuICAgICAgICByZXR1cm4gdXJsWzBdLnNwbGl0KCcuJykucG9wKClcclxuICAgICAgfSBlbHNlIHJldHVybiAnLSdcclxuICAgIH1cclxuICAgIGVsc2UgcmV0dXJuICctJ1xyXG4gIH1cclxuXHJcbiAgZG93bmxvYWRBdHRjaG1lbnQodXJsOiBhbnksIGZpbGU/OiBhbnkpIHtcclxuICAgIC8vIHRoaXMub25FdmVudC5lbWl0KHtcclxuICAgIC8vICAgZG93bmxvYWQ6IHRydWUsXHJcbiAgICAvLyB9KTtcclxuICAgIC8vIHRoaXMuZ2VuZXJpY0V2ZW50LmVtaXQoZGF0YSlcclxuICAgIC8vIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICBjb25zdCBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xyXG4gICAgbGluay5ocmVmID0gdXJsO1xyXG4gICAgbGluay5kb3dubG9hZCA9ICcnO1xyXG4gICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChsaW5rKTtcclxuICAgIGxpbmsuY2xpY2soKTtcclxuICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQobGluayk7XHJcblxyXG4gIH1cclxuICBmdWxsSW1hZ2VTcmM6IHN0cmluZyB8IG51bGwgPSAnJztcclxuICBvcGVuRnVsbEltYWdlKGV2ZW50OiBFdmVudCkge1xyXG4gICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xyXG4gICAgaWYgKHRhcmdldC50YWdOYW1lID09PSAnSU1HJykge1xyXG4gICAgICB0aGlzLmZ1bGxJbWFnZVNyYyA9IHRhcmdldC5nZXRBdHRyaWJ1dGUoJ3NyYycpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYWRkU3R5bGVzVG9JbWFnZXMoKTogdm9pZCB7XHJcbiAgICBjb25zdCBpbWFnZXMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuY29tbWVudC1jb250ZW50IGltZycpO1xyXG4gICAgaW1hZ2VzLmZvckVhY2goKGltZykgPT4ge1xyXG4gICAgICAvLyBBcHBseSBpbmxpbmUgc3R5bGVzIGRpcmVjdGx5XHJcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoaW1nLCAnd2lkdGgnLCAnNzBweCcpO1xyXG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKGltZywgJ2JvcmRlci1yYWRpdXMnLCAnMTZweCcpO1xyXG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKGltZywgJ21hcmdpbicsICc4cHgnKTtcclxuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShpbWcsICdjdXJzb3InLCAncG9pbnRlcicpO1xyXG5cclxuICAgICAgLy8gQWRkIGNsaWNrIGxpc3RlbmVyIHRvIHNob3cgZnVsbHNjcmVlbiBpbWFnZSBvbiBjbGlja1xyXG4gICAgICB0aGlzLnJlbmRlcmVyLmxpc3RlbihpbWcsICdjbGljaycsICgpID0+IHRoaXMub25JbWFnZUNsaWNrKChpbWcgYXMgSFRNTEltYWdlRWxlbWVudCkuc3JjKSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG9uSW1hZ2VDbGljayhzcmM6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5mdWxsc2NyZWVuSW1hZ2UgPSBzcmM7XHJcbiAgfVxyXG5cclxuICBAVmlld0NoaWxkKCdmdWxsc2NyZWVuSW1hZ2VUZW1wbGF0ZScpIGZ1bGxzY3JlZW5JbWFnZVRlbXBsYXRlITogVGVtcGxhdGVSZWY8YW55PjtcclxuICBwcml2YXRlIGZ1bGxzY3JlZW5WaWV3UmVmOiBFbWJlZGRlZFZpZXdSZWY8YW55PiB8IG51bGwgPSBudWxsO1xyXG5cclxuICBpY29uTWFwOiBSZWNvcmQ8c3RyaW5nLCAocm93OiBhbnksIGNvbDogYW55KSA9PiBzdHJpbmc+ID0ge1xyXG4gICAgYXR0YWNobWVudHNfY291bnQ6ICgpID0+IHRoaXMuc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvYXR0YWNobWVudHMuc3ZnJyxcclxuICAgIGNvbW1lbnRfY291bnQ6ICgpID0+IHRoaXMuc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvY29tbWVudHMuc3ZnJyxcclxuICAgIHByaW9yaXR5OiAocm93LCBjb2wpID0+IHtcclxuICAgICAgY29uc3QgdmFsID1cclxuICAgICAgICB0aGlzLmdldE5lc3RlZFZhbHVlKHJvdywgY29sLmZpZWxkKT8udmFsdWUgfHxcclxuICAgICAgICB0aGlzLmdldE5lc3RlZFZhbHVlKHJvdywgY29sLmZpZWxkKT8ubmFtZSB8fFxyXG4gICAgICAgIHRoaXMuZ2V0TmVzdGVkVmFsdWUocm93LCBjb2wuZmllbGQpO1xyXG5cclxuICAgICAgcmV0dXJuIChcclxuICAgICAgICB0aGlzLnNpbmdsZVNwYUFzc2V0c1BhdGggK1xyXG4gICAgICAgICdkYXRhLWdyaWQvaWNvbnMvJyArXHJcbiAgICAgICAgKHZhbCA/PyAnZGVmYXVsdCcpICtcclxuICAgICAgICAnLnN2ZydcclxuICAgICAgKTtcclxuICAgIH0sXHJcbiAgfTtcclxuXHJcbiAgdG9nZ2xlRnVsbHNjcmVlbigpIHtcclxuICAgIHRoaXMuaXNGdWxsU2NyZWVuID0gIXRoaXMuaXNGdWxsU2NyZWVuO1xyXG4gICAgY29uc3QgZWxlbSA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCBhcyBhbnk7XHJcbiAgICBpZiAoIWRvY3VtZW50LmZ1bGxzY3JlZW5FbGVtZW50KSB7XHJcbiAgICAgIGlmIChlbGVtLnJlcXVlc3RGdWxsc2NyZWVuKSB7XHJcbiAgICAgICAgZWxlbS5yZXF1ZXN0RnVsbHNjcmVlbigpO1xyXG4gICAgICB9IGVsc2UgaWYgKGVsZW0ubW96UmVxdWVzdEZ1bGxTY3JlZW4pIHtcclxuICAgICAgICBlbGVtLm1velJlcXVlc3RGdWxsU2NyZWVuKCk7XHJcbiAgICAgIH0gZWxzZSBpZiAoZWxlbS53ZWJraXRSZXF1ZXN0RnVsbHNjcmVlbikge1xyXG4gICAgICAgIGVsZW0ud2Via2l0UmVxdWVzdEZ1bGxzY3JlZW4oKTtcclxuICAgICAgfSBlbHNlIGlmIChlbGVtLm1zUmVxdWVzdEZ1bGxzY3JlZW4pIHtcclxuICAgICAgICBlbGVtLm1zUmVxdWVzdEZ1bGxzY3JlZW4oKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKGRvY3VtZW50LmV4aXRGdWxsc2NyZWVuKSB7XHJcbiAgICAgICAgZG9jdW1lbnQuZXhpdEZ1bGxzY3JlZW4oKTtcclxuICAgICAgfSBlbHNlIGlmICgoZG9jdW1lbnQgYXMgYW55KS5tb3pDYW5jZWxGdWxsU2NyZWVuKSB7XHJcbiAgICAgICAgKGRvY3VtZW50IGFzIGFueSkubW96Q2FuY2VsRnVsbFNjcmVlbigpO1xyXG4gICAgICB9IGVsc2UgaWYgKChkb2N1bWVudCBhcyBhbnkpLndlYmtpdEV4aXRGdWxsc2NyZWVuKSB7XHJcbiAgICAgICAgKGRvY3VtZW50IGFzIGFueSkud2Via2l0RXhpdEZ1bGxzY3JlZW4oKTtcclxuICAgICAgfSBlbHNlIGlmICgoZG9jdW1lbnQgYXMgYW55KS5tc0V4aXRGdWxsc2NyZWVuKSB7XHJcbiAgICAgICAgKGRvY3VtZW50IGFzIGFueSkubXNFeGl0RnVsbHNjcmVlbigpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkNlbGxFdmVudChldmVudDogYW55KSB7XHJcbiAgICB0aGlzLmN1c3RvbUNlbGxFdmVudC5lbWl0KGV2ZW50KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZmxhdHRlbkdyb3VwKHJvdzogYW55KTogYW55W10ge1xyXG4gICAgY29uc3QgcmVzdWx0OiBhbnlbXSA9IFtdO1xyXG4gICAgY29uc3QgdHJhdmVyc2UgPSAobm9kZTogYW55KSA9PiB7XHJcbiAgICAgIGlmICghbm9kZSkgcmV0dXJuO1xyXG4gICAgICBpZiAobm9kZS5pc0dyb3VwKSB7XHJcbiAgICAgICAgbm9kZS5jaGlsZHJlbj8uZm9yRWFjaCgoY2hpbGQ6IGFueSkgPT4gdHJhdmVyc2UoY2hpbGQpKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXN1bHQucHVzaChub2RlKTtcclxuICAgICAgfVxyXG4gICAgfTtcclxuICAgIHRyYXZlcnNlKHJvdyk7XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH1cclxuXHJcbiAgc2VsZWN0R3JvdXBSb3coZTogRXZlbnQsIHJvdzogYW55KSB7XHJcbiAgICBjb25zdCBjaGVja2JveCA9IGUudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XHJcbiAgICBjb25zdCBpc0NoZWNrZWQgPSBjaGVja2JveC5jaGVja2VkO1xyXG4gICAgLy8gR2V0IGFsbCBkZWVwIGRhdGEgcm93cyAobGVhZiByb3dzKVxyXG4gICAgY29uc3QgbGVhZlJvd3MgPSB0aGlzLmZsYXR0ZW5Hcm91cChyb3cpO1xyXG4gICAgaWYgKGlzQ2hlY2tlZCkge1xyXG4gICAgICBsZWFmUm93cy5mb3JFYWNoKHIgPT4ge1xyXG4gICAgICAgIGNvbnN0IGlkID0gci5faWQgfHwgci5pZDtcclxuICAgICAgICBpZiAoaWQpIHRoaXMuc2VsZWN0ZWRSb3dzLmFkZChpZCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbGVhZlJvd3MuZm9yRWFjaChyID0+IHtcclxuICAgICAgICBjb25zdCBpZCA9IHIuX2lkIHx8IHIuaWQ7XHJcbiAgICAgICAgaWYgKGlkKSB0aGlzLnNlbGVjdGVkUm93cy5kZWxldGUoaWQpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIGNvbnN0IGlkcyA9IEFycmF5LmZyb20odGhpcy5zZWxlY3RlZFJvd3MpO1xyXG4gICAgY29uc3QgZXZlbnQgPSB7XHJcbiAgICAgIGRhdGE6IHtcclxuICAgICAgICBsaXN0aW5nVHlwZTogdGhpcy5saXN0aW5nVHlwZSxcclxuICAgICAgICBvYmo6IGlkc1xyXG4gICAgICB9LFxyXG4gICAgICBldmVudFR5cGU6IFwib25TZWxlY3RSb3dcIixcclxuICAgIH1cclxuICAgIHRoaXMuZ2VuZXJpY0V2ZW50LmVtaXQoZXZlbnQpO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgZ2V0R3JvdXBDaGVja2VkU3RhdGUocm93OiBhbnkpOiBib29sZWFuIHwgdW5kZWZpbmVkIHtcclxuICAgIGlmICghcm93LmlzR3JvdXApIHJldHVybiBmYWxzZTtcclxuICAgIGNvbnN0IGxlYWZSb3dzID0gdGhpcy5mbGF0dGVuR3JvdXAocm93KTtcclxuICAgIGxldCBjaGVja2VkQ291bnQgPSAwO1xyXG4gICAgbGVhZlJvd3MuZm9yRWFjaChyID0+IHtcclxuICAgICAgY29uc3QgaWQgPSByLl9pZCB8fCByLmlkO1xyXG4gICAgICBpZiAodGhpcy5zZWxlY3RlZFJvd3MuaGFzKGlkKSkgY2hlY2tlZENvdW50Kys7XHJcbiAgICB9KTtcclxuICAgIGlmIChjaGVja2VkQ291bnQgPT09IDApIHJldHVybiBmYWxzZTtcclxuICAgIGlmIChjaGVja2VkQ291bnQgPT09IGxlYWZSb3dzLmxlbmd0aCkgcmV0dXJuIHRydWU7XHJcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gIH1cclxuXHJcbiAgZ2V0Q2VsbFRpdGxlKHJvdzogYW55LCBjb2w6IGFueSk6IHN0cmluZyB7XHJcbiAgICBjb25zdCB2YWwgPSB0aGlzLmdldE5lc3RlZFZhbHVlKHJvdywgY29sLmZpZWxkKTtcclxuXHJcbiAgICBpZiAoIXRoaXMuaXNOZXN0ZWRWYWx1ZUFycmF5KHJvdywgY29sLmZpZWxkKSkge1xyXG4gICAgICBpZiAoY29sLnR5cGUgPT09ICdkYXRlJykge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmNvbW1vblNldmljZS5mb3JtYXREYXRlVmFsdWUodmFsLCB0aGlzLmRhdGVGb3JtYXQpO1xyXG4gICAgICB9IGVsc2UgaWYgKGNvbD8uaXNfYW1vdW50KSB7XHJcbiAgICAgICAgaWYoIXZhbCkgcmV0dXJuIGAwLjAwYFxyXG4gICAgICAgIHJldHVybiB0aGlzLmZvcm1hdEN1cnJlbmN5LnRyYW5zZm9ybSh2YWwsIHRoaXMuY3VycmVuY3lGb3JtYXQpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gKFxyXG4gICAgICAgIHZhbD8udmFsdWUgPz9cclxuICAgICAgICB2YWw/Lm5hbWUgPz9cclxuICAgICAgICB2YWwgPz9cclxuICAgICAgICAoY29sLmlzX2Ftb3VudCA/ICcwJyA6ICctJylcclxuICAgICAgKSArICcnO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGZpcnN0ID0gdmFsPy5bMF07XHJcblxyXG4gICAgcmV0dXJuIChcclxuICAgICAgZmlyc3Q/LmRlcGFydG1lbnRfbmFtZSA/P1xyXG4gICAgICBmaXJzdD8ucm9sZU5hbWUgPz9cclxuICAgICAgZmlyc3Q/LmZ1bGxfbmFtZSA/P1xyXG4gICAgICAnLSdcclxuICAgICk7XHJcbiAgfVxyXG5cclxuXHJcbiAgZmluaXNoRWRpdChldmVudDogYW55KSB7XHJcbiAgICBjb25zb2xlLmxvZygnY2VsbCBlZGl0ZWRkZGRkZGRkZGRkZGRkZDogJywgZXZlbnQpXHJcbiAgfVxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcbn0iLCI8ZGl2IGNsYXNzPVwicG9zaXRpb24tcmVsYXRpdmUgaC0xMDBcIj5cclxuICA8ZGl2XHJcbiAgICBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBtYi0yIGFsaWduLWl0ZW1zLWNlbnRlciBwb3NpdGlvbi1yZWxhdGl2ZVwiXHJcbiAgPlxyXG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBnYXAtMlwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibmF2IG5hdi10YWJzXCIgKm5nSWY9XCJ0cnVlXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm5hdiBuYXYtdGFic1wiIGlkPVwibmF2LXRhYlwiIHJvbGU9XCJ0YWJsaXN0XCI+XHJcbiAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgdGFiIG9mIHRhYnM7IGxldCBpID0gaW5kZXhcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwic2V0QWN0aXZlVGFiKHRhYilcIlxyXG4gICAgICAgICAgICBjbGFzcz1cIm5hdi1saW5rIGN1cnNvci1wb2ludGVyXCJcclxuICAgICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJhY3RpdmVUYWIgPT0gdGFiXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAge3sgdGFiIH19XHJcbiAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZ2xvYmFsLXNlYXJjaFwiIFtzdHlsZS53aWR0aC5weF09XCIzNTBcIj5cclxuICAgICAgICA8c3BhblxyXG4gICAgICAgICAgKm5nSWY9XCJlbmFibGVHbG9iYWxTZWFyY2hcIlxyXG4gICAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9zZWFyY2guc3ZnJ1wiXHJcbiAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBteC0yIHBvc2l0aW9uLWFic29sdXRlIGljb25cIlxyXG4gICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAqbmdJZj1cImVuYWJsZUdsb2JhbFNlYXJjaFwiXHJcbiAgICAgICAgICBzdHlsZT1cImhlaWdodDogMzZweFwiXHJcbiAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXHJcbiAgICAgICAgICBwbGFjZWhvbGRlcj1cIlR5cGUgdG8gc2VhcmNoLCB0aGVuIHByZXNzIEVudGVyXCJcclxuICAgICAgICAgIFsobmdNb2RlbCldPVwidGFibGVTZWFyY2hcIlxyXG4gICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwib25HbG9iYWxTZWFyY2goKVwiXHJcbiAgICAgICAgICAoaW5wdXQpPVwib25TZWFyY2hJbnB1dCgkZXZlbnQpXCJcclxuICAgICAgICAgIHR5cGU9XCJzZWFyY2hcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGdhcC0yIGFsaWduLWl0ZW1zLWNlbnRlciB0YWJsZS1yaWdodC10b3AtYWN0aW9uc1wiPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBidXR0b24gb2YgYnV0dG9uc1wiPlxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMiBhY3Rpb24tYnV0dG9ucy1yb3dcIlxyXG4gICAgICAgICAgKm5nSWY9XCJidXR0b24/Lmhhc19wZXJtaXNzaW9uXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8YVxyXG4gICAgICAgICAgICBocmVmPVwiSmF2YVNjcmlwdDp2b2lkKDApXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uQWN0aW9uQnV0dG9uQ2xpY2soYnV0dG9uLm5hbWUpXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJidXR0b24gYnV0dG9uLXNtYWxsIGJ0biBib3JkZXIgYm9yZGVyLXByaW1hcnkgYnRuLWFjdGl2ZS1wcmltYXJ5IG1lLTIgcC0wIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlciBweC0zXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAqbmdJZj1cImJ1dHRvbi5pc19zaG93SWNvblwiXHJcbiAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zLycgKyBidXR0b24uaWNvbiArICcuc3ZnJ1xyXG4gICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi0yXCJcclxuICAgICAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICBjbGFzcz1cImxhYmVsLWhpZGRlbiB0ZXh0LXdoaXRlXCJcclxuICAgICAgICAgICAgICBbY2xhc3MubXMtMF09XCJidXR0b24uaXNfc2hvd0ljb25cIlxyXG4gICAgICAgICAgICAgID57eyBidXR0b24/Lm5hbWUgfX08L3NwYW5cclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgPC9hPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPGRpdlxyXG4gICAgICAgICpuZ0lmPVwiIXNob3dGaWx0ZXJSb3dcIlxyXG4gICAgICAgIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXIgcG9zaXRpb24tcmVsYXRpdmUgYWN0aW9uLWJ1dHRvbnMtcm93XCJcclxuICAgICAgICAoY2xpY2spPVwidG9nZ2xlT3BlbkZpbHRlcigpXCJcclxuICAgICAgICBbY2xhc3MuYWN0aXZlXT1cInNob3dGaWx0ZXJzXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxhXHJcbiAgICAgICAgICBocmVmPVwiSmF2YVNjcmlwdDp2b2lkKDApXCJcclxuICAgICAgICAgIGNsYXNzPVwiYnV0dG9uIGJ1dHRvbi1zbWFsbCBidG4gYnRuLWFjdGl2ZS1wcmltYXJ5IGJvcmRlciBib3JkZXItcHJpbWFyeSBtZS0yIHAtMCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXIgcHgtM1wiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9maWx0ZXItMi5zdmcnXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi0yXCJcclxuICAgICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsLWhpZGRlbiB0ZXh0LXdoaXRlXCI+RmlsdGVyczwvc3Bhbj5cclxuICAgICAgICA8L2E+XHJcbiAgICAgICAgPHNwYW5cclxuICAgICAgICAgICpuZ0lmPVwiYWN0aXZlRmlsdGVyZWRDb2x1bW5zPy5sZW5ndGhcIlxyXG4gICAgICAgICAgc3R5bGU9XCJcclxuICAgICAgICAgICAgd2lkdGg6IDdweDtcclxuICAgICAgICAgICAgaGVpZ2h0OiA3cHg7XHJcbiAgICAgICAgICAgIGJveC1zaGFkb3c6IDBweCAwcHggM3B4ICMwMDIyZmY7XHJcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYigwLCA2MCwgMjU1KTtcclxuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICAgICAgICByaWdodDogMTZweDtcclxuICAgICAgICAgICAgdG9wOiAxMHB4O1xyXG4gICAgICAgICAgXCJcclxuICAgICAgICAgIGNsYXNzPVwicm91bmRlZC1jaXJjbGUgZC1ibG9ja1wiXHJcbiAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXZcclxuICAgICAgICBjbGFzcz1cImN1cnNvci1wb2ludGVyIGQtbm9uZVwiXHJcbiAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUFjdGlvbnMoJ2FkdmFuY2UtZmlsdGVyJylcIlxyXG4gICAgICAgIFtjbGFzcy5hY3RpdmVdPVwiYWN0aXZlVG9wQnV0dG9uID09PSAnYWR2YW5jZS1maWx0ZXInXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxzcGFuXHJcbiAgICAgICAgICBbaW5saW5lU1ZHXT1cInNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL3pvb20tY2hhcmdlLnN2ZydcIlxyXG4gICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gdG9wLWljb24gbWUtMlwiXHJcbiAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXZcclxuICAgICAgICBjbGFzcz1cImN1cnNvci1wb2ludGVyIGFjdGlvbi1idXR0b25zLXJvd1wiXHJcbiAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUFjdGlvbnMoJ3NldHRpbmcnKVwiXHJcbiAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJcclxuICAgICAgICAgIGFjdGl2ZVRvcEJ1dHRvbiA9PT0gJ3NldHRpbmcnIHx8XHJcbiAgICAgICAgICBhY3RpdmVUb3BCdXR0b24gPT09ICd0YWJsZS1sYXlvdXQnIHx8XHJcbiAgICAgICAgICBhY3RpdmVUb3BCdXR0b24gPT09ICd0YWJsZS1wcmVzZXRzJyB8fFxyXG4gICAgICAgICAgYWN0aXZlVG9wQnV0dG9uID09PSAnc2hvdy1oaWRlLWNvbHVtbnMnXHJcbiAgICAgICAgXCJcclxuICAgICAgPlxyXG4gICAgICAgIDwhLS0gPHNwYW5cclxuICAgICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvc2V0dGluZ3MtMi5zdmcnXCJcclxuICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIHRvcC1pY29uIG1lLTJcIlxyXG4gICAgICAgID48L3NwYW4+IC0tPlxyXG4gICAgICAgIDxhXHJcbiAgICAgICAgICBocmVmPVwiSmF2YVNjcmlwdDp2b2lkKDApXCJcclxuICAgICAgICAgIGNsYXNzPVwiYnV0dG9uIGJ1dHRvbi1zbWFsbCBidG4gYnRuLWFjdGl2ZS1wcmltYXJ5IGJvcmRlciBib3JkZXItcHJpbWFyeSBtZS0yIHAtMCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXIgcHgtM1wiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9zZXR0aW5ncy0yLnN2ZydcIlxyXG4gICAgICAgICAgICBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTJcIlxyXG4gICAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWwtaGlkZGVuIHRleHQtd2hpdGVcIj5TZXR0aW5nPC9zcGFuPlxyXG4gICAgICAgIDwvYT5cclxuXHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgKm5nSWY9XCJhY3RpdmVUb3BCdXR0b24gPT09ICdzZXR0aW5nJ1wiXHJcbiAgICAgICAgICBjbGFzcz1cImFjdGlvbnMtZHJvcGRvd24gbXQtMSBhY3Rpb25zLWRyb3Bkb3duLXNldHRpbmdcIlxyXG4gICAgICAgICAgc3R5bGU9XCJwb3NpdGlvbjogYWJzb2x1dGVcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1tZW51IHNob3cgc2hhZG93IGN1c3RvbS1tZW51XCI+XHJcbiAgICAgICAgICAgIDwhLS0gVGFibGUgTGF5b3V0IC0tPlxyXG4gICAgICAgICAgICA8YVxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZHJvcGRvd24taXRlbSBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIGN1cnNvci1wb2ludGVyXCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyB0b2dnbGVBY3Rpb25zKCd0YWJsZS1sYXlvdXQnKVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgPjxzcGFuXHJcbiAgICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvdGFibGUtMi5zdmcnXHJcbiAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIG1lLTJcIlxyXG4gICAgICAgICAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIFRhYmxlIExheW91dDwvc3BhblxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvY2hldnJvbi1yaWdodC5zdmcnXHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gbWUtMlwiXHJcbiAgICAgICAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICA8IS0tIFRhYmxlIFByZXNldHMgLS0+XHJcbiAgICAgICAgICAgIDxhXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgdG9nZ2xlQWN0aW9ucygndGFibGUtcHJlc2V0cycpXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImRyb3Bkb3duLWl0ZW0gZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciBjdXJzb3ItcG9pbnRlclwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgPjxzcGFuXHJcbiAgICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvbGlzdC1kZXRhaWxzLnN2ZydcclxuICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gbWUtMlwiXHJcbiAgICAgICAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgVGFibGUgUHJlc2V0czwvc3BhblxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvY2hldnJvbi1yaWdodC5zdmcnXHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gbWUtMlwiXHJcbiAgICAgICAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICAgICAgPC9hPlxyXG5cclxuICAgICAgICAgICAgPCEtLSBDb2x1bW5zIC0tPlxyXG4gICAgICAgICAgICA8YVxyXG4gICAgICAgICAgICAgICpuZ0lmPVwiIXNob3dTaWRlTWVudVwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIlxyXG4gICAgICAgICAgICAgICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyB0b2dnbGVBY3Rpb25zKCdzaG93LWhpZGUtY29sdW1ucycpXHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImRyb3Bkb3duLWl0ZW0gZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciBjdXJzb3ItcG9pbnRlclwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgPjxzcGFuXHJcbiAgICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvZXllLnN2ZydcIlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBtZS0yXCJcclxuICAgICAgICAgICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICBDb2x1bW5zPC9zcGFuXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZ2FwLTJcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXV0ZWQtdGV4dFwiPnt7IGNvbHVtbnNDb3VudCB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvY2hldnJvbi1yaWdodC5zdmcnXHJcbiAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIG1lLTJcIlxyXG4gICAgICAgICAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9hPlxyXG5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLWRpdmlkZXJcIj48L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDwhLS0gRmlsdGVyIC0tPlxyXG4gICAgICAgICAgICA8YVxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZHJvcGRvd24taXRlbSBjdXJzb3ItcG9pbnRlclwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZU9wZW5GaWx0ZXIoKTsgYWN0aXZlVG9wQnV0dG9uID0gJyc7XCJcclxuICAgICAgICAgICAgICAqbmdJZj1cIiFzaG93RmlsdGVyUm93XCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxyXG4gICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9maWx0ZXItMi5zdmcnXHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gbWUtMiBtdC0xIGN1cnNvci1wb2ludGVyXCJcclxuICAgICAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgICAgIEZpbHRlclxyXG4gICAgICAgICAgICA8L2E+XHJcblxyXG4gICAgICAgICAgICA8IS0tIERvd25sb2FkIC0tPlxyXG4gICAgICAgICAgICA8YVxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZHJvcGRvd24taXRlbSBjdXJzb3ItcG9pbnRlclwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImRvd25sb2FkQ3N2KCdjc3YnKVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvZG93bmxvYWQuc3ZnJ1xyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIG1lLTIgY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAgICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgICAgICAgQ1NWIEV4cG9ydFxyXG4gICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgIDxhXHJcbiAgICAgICAgICAgICAgKm5nSWY9XCJlbmFibGVFeHBvcnRcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZHJvcGRvd24taXRlbSBjdXJzb3ItcG9pbnRlclwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImRvd25sb2FkQ3N2KCd4bHN4JylcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXHJcbiAgICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2Rvd25sb2FkLnN2ZydcclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBtZS0yIGN1cnNvci1wb2ludGVyXCJcclxuICAgICAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgICAgIEV4Y2VsIEV4cG9ydFxyXG4gICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgIDwhLS0gRm9udCBGYW1pbHkgJiBGb250IFNpemUgLS0+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0yIHBiLTIgcHQtMlwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZ2FwLTJcIj5cclxuICAgICAgICAgICAgICAgIDwhLS0gRm9udCBGYW1pbHkgLS0+XHJcbiAgICAgICAgICAgICAgICA8c2VsZWN0XHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1zZWxlY3QgZm9ybS1zZWxlY3Qtc21cIlxyXG4gICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImZvbnRGYWltbHlcIlxyXG4gICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIm9uRm9udENoYW5nZSgpXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgZm9udCBvZiBmb250RmFtaWxpZXNcIiBbdmFsdWVdPVwiZm9udFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7IGZvbnQgfX1cclxuICAgICAgICAgICAgICAgICAgPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICA8L3NlbGVjdD5cclxuXHJcbiAgICAgICAgICAgICAgICA8IS0tIEZvbnQgU2l6ZSAtLT5cclxuICAgICAgICAgICAgICAgIDxzZWxlY3RcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLXNlbGVjdCBmb3JtLXNlbGVjdC1zbVwiXHJcbiAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwib25Gb250Q2hhbmdlKClcIlxyXG4gICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImJvZHlUZXh0Rm9udHNTaXplXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgc2l6ZSBvZiBmb250U2l6ZXNcIiBbdmFsdWVdPVwic2l6ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7IHNpemUgfX1cclxuICAgICAgICAgICAgICAgICAgPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPCEtLSBUYWJsZSBMYXlvdXQgLS0+XHJcblxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhY3RpdmVUb3BCdXR0b24gPT09ICd0YWJsZS1sYXlvdXQnXCI+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwidGFibGVMYXlvdXRcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImFjdGlvbnMtZHJvcGRvd24gbXQtMVwiXHJcbiAgICAgICAgICAgIHN0eWxlPVwicG9zaXRpb246IGFic29sdXRlXCJcclxuICAgICAgICAgID48L2Rpdj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgPCEtLSBUYWJsZSBQcmVzZXRzIC0tPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhY3RpdmVUb3BCdXR0b24gPT09ICd0YWJsZS1wcmVzZXRzJ1wiPlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cInRhYmxlUHJlc2V0XCJcclxuICAgICAgICAgICAgY2xhc3M9XCJhY3Rpb25zLWRyb3Bkb3duIG10LTFcIlxyXG4gICAgICAgICAgICBzdHlsZT1cInBvc2l0aW9uOiBhYnNvbHV0ZVwiXHJcbiAgICAgICAgICA+PC9kaXY+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgIDwhLS0gVGFibGUgUHJlc2V0cyAtLT5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYWN0aXZlVG9wQnV0dG9uID09PSAnc2hvdy1oaWRlLWNvbHVtbnMnXCI+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwic2hvd0hpZGVDb2x1bW5zXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJhY3Rpb25zLWRyb3Bkb3duIG10LTFcIlxyXG4gICAgICAgICAgICBzdHlsZT1cInBvc2l0aW9uOiBhYnNvbHV0ZVwiXHJcbiAgICAgICAgICA+PC9kaXY+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cImFjdGlvbi1idXR0b25zLXJvd1wiICpuZ0lmPVwic2hvd0Z1bGxTY3JlZW5CdXR0b25cIj5cclxuICAgICAgICA8YVxyXG4gICAgICAgICAgKm5nSWY9XCIhaXNGdWxsU2NyZWVuXCJcclxuICAgICAgICAgIGNsYXNzPVwiYnV0dG9uIGJ1dHRvbi1zbWFsbCBidG4gYnRuLWFjdGl2ZS1wcmltYXJ5IGJvcmRlciBib3JkZXItcHJpbWFyeSBleHBlbmQgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVGdWxsc2NyZWVuKClcIlxyXG4gICAgICAgICAgZGF0YS1icy10b2dnbGU9XCJ0b29sdGlwXCJcclxuICAgICAgICAgIGRhdGEtYnMtcGxhY2VtZW50PVwidG9wXCJcclxuICAgICAgICAgIHRpdGxlPVwiTWluaW1pc2VcIlxyXG4gICAgICAgICAgW25nQ2xhc3NdPVwieyBtaW5BcnJvdzogIWlzRnVsbFNjcmVlbiwgbWF4QXJyb3c6IGlzRnVsbFNjcmVlbiB9XCJcclxuICAgICAgICAgIHN0eWxlPVwidHJhbnNpdGlvbjogY29sb3IgMC4yc1wiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9leHBlbmQuc3ZnJ1wiXHJcbiAgICAgICAgICAgIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tMiBtYi0xXCJcclxuICAgICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgPC9hPlxyXG4gICAgICAgIDxhXHJcbiAgICAgICAgICAqbmdJZj1cImlzRnVsbFNjcmVlblwiXHJcbiAgICAgICAgICBjbGFzcz1cImJ1dHRvbiBidXR0b24tc21hbGwgYnRuIGJ0bi1hY3RpdmUtcHJpbWFyeSBib3JkZXIgYm9yZGVyLXByaW1hcnkgZXhwZW5kIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlRnVsbHNjcmVlbigpXCJcclxuICAgICAgICAgIGRhdGEtYnMtdG9nZ2xlPVwidG9vbHRpcFwiXHJcbiAgICAgICAgICBkYXRhLWJzLXBsYWNlbWVudD1cInRvcFwiXHJcbiAgICAgICAgICB0aXRsZT1cIk1heGltaXNlXCJcclxuICAgICAgICAgIFtuZ0NsYXNzXT1cInsgbWluQXJyb3c6ICFpc0Z1bGxTY3JlZW4sIG1heEFycm93OiBpc0Z1bGxTY3JlZW4gfVwiXHJcbiAgICAgICAgICBzdHlsZT1cInRyYW5zaXRpb246IGNvbG9yIDAuMnNcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvbWluaW1pemUuc3ZnJ1wiXHJcbiAgICAgICAgICAgIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tMiBtYi0xXCJcclxuICAgICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgPC9hPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdj5cclxuICAgICAgICA8IS0tIEV4YW1wbGUgc2luZ2xlIGRhbmdlciBidXR0b24gLS0+XHJcblxyXG4gICAgICAgIDwhLS0gPGJ1dHRvblxyXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tc20gZC1mbGV4IGdhcC0yIGFjdGlvbi1idXR0b25cIlxyXG4gICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUFjdGlvbnMoJ2FjdGlvbnMnKVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgQWN0aW9uXHJcbiAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICBbaW5saW5lU1ZHXT1cInNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL1ZlY3Rvci5zdmcnXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb25cIlxyXG4gICAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAqbmdJZj1cImFjdGl2ZVRvcEJ1dHRvbiA9PT0gJ2FjdGlvbnMnXCJcclxuICAgICAgICAgIGNsYXNzPVwiYWN0aW9ucy1kcm9wZG93biBtdC0xXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tbWVudSBzaG93XCI+XHJcbiAgICAgICAgICAgIDxhIGNsYXNzPVwiZHJvcGRvd24taXRlbVwiIGhyZWY9XCIjXCI+QWN0aW9uPC9hPlxyXG4gICAgICAgICAgICA8YSBjbGFzcz1cImRyb3Bkb3duLWl0ZW1cIiBocmVmPVwiI1wiPkFub3RoZXIgYWN0aW9uPC9hPlxyXG4gICAgICAgICAgICA8YSBjbGFzcz1cImRyb3Bkb3duLWl0ZW1cIiBocmVmPVwiI1wiPlNvbWV0aGluZyBlbHNlIGhlcmU8L2E+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1kaXZpZGVyXCI+PC9kaXY+XHJcbiAgICAgICAgICAgIDxhIGNsYXNzPVwiZHJvcGRvd24taXRlbVwiIGhyZWY9XCIjXCI+U2VwYXJhdGVkIGxpbms8L2E+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj4gLS0+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxkaXZcclxuICAgICpuZ0lmPVwic2hvd0ZpbHRlcnMgJiYgIXNob3dGaWx0ZXJSb3dcIlxyXG4gICAgY2xhc3M9XCJ0b3AtZmlsdGVyLXJvdyBib3JkZXItdG9wIHB5LTIgZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cInRvcEZpbHRlclJvd0hlaWdodFwiXHJcbiAgPlxyXG4gICAgPCEtLSBMRUZUIFNJREUgKEZpbHRlciB0YWdzICsgRmlsdGVyIGJ1dHRvbikgLS0+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGdhcC0yIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICA8bmctY29udGFpbmVyPlxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgICpuZ0Zvcj1cImxldCBjb2wgb2YgYWN0aXZlRmlsdGVyZWRDb2x1bW5zOyB0cmFja0J5OiB0cmFja0J5RmllbGRcIlxyXG4gICAgICAgICAgY2xhc3M9XCJmaWx0ZXItdGFnc1wiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiXHJcbiAgICAgICAgICAgICAgaXNBY3RpdmVGaWx0ZXJPcGVuID0gdHJ1ZTtcclxuICAgICAgICAgICAgICBhY3RpdmVUb3BCdXR0b24gPSAnZmlsdGVyLWNvbHVtbnMnO1xyXG4gICAgICAgICAgICAgIG9wZW5GaWx0ZXIoY29sKVxyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBtdXRlZC10ZXh0IGFkZC1maWx0ZXItYnV0dG9uIGFjdGl2ZS1maWx0ZXJzXCJcclxuICAgICAgICAgICAgc3R5bGU9XCJ3aGl0ZS1zcGFjZTogbm93cmFwXCJcclxuICAgICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJcclxuICAgICAgICAgICAgICBjb2w/LmZpZWxkID09IHNlbGVjdGVkQ29sdW1uRm9yRmlsdGVyPy5maWVsZCAmJlxyXG4gICAgICAgICAgICAgIGlzQWN0aXZlRmlsdGVyT3BlbiAmJlxyXG4gICAgICAgICAgICAgIGFjdGl2ZVRvcEJ1dHRvbiA9PSAnZmlsdGVyLWNvbHVtbnMnXHJcbiAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaGVhZGVyLXRhZyBtdC0wIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJjb2w/LnBpbm5lZFwiXHJcbiAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cInNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL3Bpbi5zdmcnXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIG1lLTJcIlxyXG4gICAgICAgICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgICAgICAge3sgY29sLmhlYWRlciB9fVxyXG4gICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiXHJcbiAgICAgICAgICAgICAgICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgcmVtb3ZlQ29sdW1uRmlsdGVyRnJvbUNvbHVtbihjb2wpXHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvY3Jvc3MtcHJpbWFyeS5zdmcnXHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gY3Jvc3Mtc2Vjb25kYXJ5IG1zLTIgbWItMVwiXHJcbiAgICAgICAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICAgIGFjdGl2ZVRvcEJ1dHRvbiA9PT0gJ2ZpbHRlci1jb2x1bW5zJyAmJlxyXG4gICAgICAgICAgICAgIGNvbD8uZmllbGQgPT0gc2VsZWN0ZWRDb2x1bW5Gb3JGaWx0ZXI/LmZpZWxkICYmXHJcbiAgICAgICAgICAgICAgaXNBY3RpdmVGaWx0ZXJPcGVuXHJcbiAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImZpbHRlckNvbHVtbnM7IGNvbnRleHQ6IHsgY29sdW1uOiBjb2wgfVwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJhY3Rpb25zLWRyb3Bkb3duIG10LTFcIlxyXG4gICAgICAgICAgICA+PC9kaXY+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICA8IS0tIEZpbHRlciBCdXR0b24gLS0+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJhZGQtZmlsdGVyLWJ1dHRvbi1tZW51XCI+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUFjdGlvbnMoJ2ZpbHRlci1jb2x1bW5zJyk7IGlzQWN0aXZlRmlsdGVyT3BlbiA9IGZhbHNlXCJcclxuICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIG11dGVkLXRleHQgYWRkLWZpbHRlci1idXR0b24gYnV0dG9uLWZpbHRlclwiXHJcbiAgICAgICAgICBzdHlsZT1cIndpZHRoOiA3MHB4XCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICBbaW5saW5lU1ZHXT1cInNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL3BsdXMuc3ZnJ1wiXHJcbiAgICAgICAgICAgIGNsYXNzPVwibWUtMiBkYXRhLWdyaWQtc3ZnLWljb25cIlxyXG4gICAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICAgIEZpbHRlclxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAqbmdJZj1cImFjdGl2ZVRvcEJ1dHRvbiA9PT0gJ2ZpbHRlci1jb2x1bW5zJyAmJiAhaXNBY3RpdmVGaWx0ZXJPcGVuXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiZmlsdGVyQ29sdW1uc1wiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiYWN0aW9ucy1kcm9wZG93biBtdC0xXCJcclxuICAgICAgICAgID48L2Rpdj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8IS0tIFJJR0hUIFNJREUgKFVwZGF0ZSArIFJlc2V0KSAtLT5cclxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZ2FwLTMgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgIDxkaXZcclxuICAgICAgICAoY2xpY2spPVwic2F2ZVByZXNldCgpXCJcclxuICAgICAgICBjbGFzcz1cInRleHQtcHJpbWFyeSBjdXJzb3ItcG9pbnRlciBhbGwtZmlsdGVycy1yZXNldC1idXR0b25cIlxyXG4gICAgICAgICpuZ0lmPVwiIWNoZWNrRmlsdGVyQ2hhbmdlc0VmZmVjdCgpXCJcclxuICAgICAgPlxyXG4gICAgICAgIFVwZGF0ZSBWaWV3XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdlxyXG4gICAgICAgIGNsYXNzPVwidGV4dC1wcmltYXJ5IGN1cnNvci1wb2ludGVyIGFsbC1maWx0ZXJzLXJlc2V0LWJ1dHRvblwiXHJcbiAgICAgICAgKm5nSWY9XCIhdGFibGVGaWx0ZXJWaWV3SWQgJiYgYWN0aXZlRmlsdGVyZWRDb2x1bW5zPy5sZW5ndGhcIlxyXG4gICAgICAgIChjbGljayk9XCJjbGVhckFsbEZpbHRlcnMoKVwiXHJcbiAgICAgID5cclxuICAgICAgICBSZXNldFxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG5cclxuICA8ZGl2XHJcbiAgICBbc3R5bGUuaGVpZ2h0XT1cIlxyXG4gICAgICBzaG93RmlsdGVycyA/ICdjYWxjKDEwMCUgLSAnICsgdG9wRmlsdGVyUm93SGVpZ2h0ICsgJ3B4KScgOiAnMTAwJSdcclxuICAgIFwiXHJcbiAgICBjZGtEcm9wTGlzdEdyb3VwXHJcbiAgICBjbGFzcz1cImRhdGEtZ3JpZC10YWJsZS13cmFwcGVyIG92ZXJmbG93LWhpZGRlblwiXHJcbiAgICAjZGF0YUdyaWRDb250YWluZXJcclxuICAgIFtzdHlsZS5mb250RmFtaWx5XT1cImZvbnRGYWltbHlcIlxyXG4gICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJib2R5QmFja2dyb3VuZENvbG9yXCJcclxuICAgIGlkPVwiZGF0YS1ncmlkLW1haW4tY29udGFpbmVyXCJcclxuICA+XHJcbiAgICA8ZGl2XHJcbiAgICAgICpuZ0lmPVwic2hvd1Jvd3NHcm91cGluZ1wiXHJcbiAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwiaGVhZGVyUm93SGVpZ2h0XCJcclxuICAgICAgW2Nka0Ryb3BMaXN0RGF0YV09XCJjb2x1bW5zXCJcclxuICAgICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJcclxuICAgICAgICB0b3BHcm91cGVkQmFkZ2VzQmFja2dyb3VuZENvbG9yIHx8IGhlYWRlckJhY2tncm91bmRDb2xvclxyXG4gICAgICBcIlxyXG4gICAgICBjZGtEcm9wTGlzdFxyXG4gICAgICAoY2RrRHJvcExpc3RFbnRlcmVkKT1cImVudGVyVG9Ub3BSb3dHcm91cGluZygkZXZlbnQpXCJcclxuICAgICAgKGNka0Ryb3BMaXN0RXhpdGVkKT1cImV4aXRlZEZyb21UaGVUb3BSb3coJGV2ZW50KVwiXHJcbiAgICAgIChjZGtEcm9wTGlzdERyb3BwZWQpPVwib25Ecm9wVG9wR3JvdXAoJGV2ZW50KVwiXHJcbiAgICAgIFtjZGtEcm9wTGlzdEVudGVyUHJlZGljYXRlXT1cImNhbkVudGVyVG9Sb3dzR3JvdXBpbmdcIlxyXG4gICAgICBpZD1cInJvd3MtZ3JvdXBpbmctdG9wLWNvbnRhaW5lclwiXHJcbiAgICAgIGNsYXNzPVwiYm9yZGVyLWJlbG93IGQtZmxleCBweC00IGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICA+XHJcbiAgICAgIDxkaXZcclxuICAgICAgICBjbGFzcz1cImQtZmxleCBnYXAtMiBhbGlnbi1pdGVtcy1jZW50ZXJcIlxyXG4gICAgICAgIFtzdHlsZS5jb2xvcl09XCJoZWFkZXJUZXh0Q29sb3JcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPHNwYW5cclxuICAgICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvanVzdGlmeS5zdmcnXCJcclxuICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiIWRyYWdnaW5nSW5Hcm91cEFyZWEgJiYgIWdyb3VwZWRDb2x1bW5zPy5sZW5ndGhcIj5cclxuICAgICAgICAgIERyYWcgaGVyZSB0byBzZXQgcm93IGdyb3Vwc1xyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgIGNka0Ryb3BMaXN0T3JpZW50YXRpb249XCJob3Jpem9udGFsXCJcclxuICAgICAgICAgIGNka0Ryb3BMaXN0XHJcbiAgICAgICAgICAoY2RrRHJvcExpc3REcm9wcGVkKT1cIm9uR3JvdXBSZW9yZGVyKCRldmVudClcIlxyXG4gICAgICAgICAgY2xhc3M9XCJkLWZsZXhcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2RrRHJhZ1xyXG4gICAgICAgICAgICBbY2RrRHJhZ0xvY2tBeGlzXT1cIid4J1wiXHJcbiAgICAgICAgICAgICpuZ0Zvcj1cIlxyXG4gICAgICAgICAgICAgIGxldCBjaGlsZCBvZiBncm91cGVkQ29sdW1ucztcclxuICAgICAgICAgICAgICBsZXQgaSA9IGluZGV4O1xyXG4gICAgICAgICAgICAgIHRyYWNrQnk6IHRyYWNrQnlGaWVsZFxyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcclxuICAgICAgICAgICAgICAgIHRvcEdyb3VwaW5nUm93UGxhY2Vob2xkZXI7XHJcbiAgICAgICAgICAgICAgICBjb250ZXh0OiB7XHJcbiAgICAgICAgICAgICAgICAgICRpbXBsaWNpdDogY2hpbGQsXHJcbiAgICAgICAgICAgICAgICAgIHNob3dDaGV2cm9uOlxyXG4gICAgICAgICAgICAgICAgICAgIGdyb3VwZWRDb2x1bW5zLmxlbmd0aCA+IDEgJiYgaSAhPSBncm91cGVkQ29sdW1ucy5sZW5ndGggLSAxXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgY2RrRHJhZ1ByZXZpZXdcclxuICAgICAgICAgICAgICA+PGRpdiBjbGFzcz1cInAtMiBib3JkZXIgZC1mbGV4IGdhcC0yXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWRyYWdnaW5nSW5Hcm91cEFyZWFcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9hcnJvd3MtbW92ZS5zdmcnXHJcbiAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2Pnt7IGNoaWxkLmhlYWRlciB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2XHJcbiAgICAgIGNsYXNzPVwiZC1mbGV4IG92ZXJmbG93LWhpZGRlblwiXHJcbiAgICAgIFtzdHlsZS5oZWlnaHRdPVwiXHJcbiAgICAgICAgJ2NhbGMoMTAwJSAtICcgK1xyXG4gICAgICAgIChzaG93Um93c0dyb3VwaW5nXHJcbiAgICAgICAgICA/IGhlYWRlclJvd0hlaWdodCArIGZvb3RlclJvd0hlaWdodFxyXG4gICAgICAgICAgOiBmb290ZXJSb3dIZWlnaHQpICtcclxuICAgICAgICAncHgpJ1xyXG4gICAgICBcIlxyXG4gICAgPlxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgY2xhc3M9XCJoLTEwMFwiXHJcbiAgICAgICAgW3N0eWxlLndpZHRoXT1cIlxyXG4gICAgICAgICAgIXNob3dTaWRlTWVudVxyXG4gICAgICAgICAgICA/ICcxMDAlJ1xyXG4gICAgICAgICAgICA6IHNpZGVNZW51VmlzaWJsZVxyXG4gICAgICAgICAgICA/ICdjYWxjKDEwMCUgLSAyODBweCknXHJcbiAgICAgICAgICAgIDogJ2NhbGMoMTAwJSAtIDMwcHgpJ1xyXG4gICAgICAgIFwiXHJcbiAgICAgID5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaC0xMDAgdHJhbnNpdGlvbiBwb3NpdGlvbi1yZWxhdGl2ZSB3LTEwMFwiPlxyXG4gICAgICAgICAgPCEtLSAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIC0tPlxyXG4gICAgICAgICAgPCEtLSAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIC0tPlxyXG4gICAgICAgICAgPCEtLSBEYXRhIEdyaWQgSGVhZGVyIHN0YXJ0cyBoZXJlIC0tPlxyXG4gICAgICAgICAgPCEtLSAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIC0tPlxyXG4gICAgICAgICAgPCEtLSAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIC0tPlxyXG5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtaGVhZGVyLXdyYXBwZXIgdy0xMDBcIlxyXG4gICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwiaGVhZGVyVGV4dENvbG9yXCJcclxuICAgICAgICAgICAgW3N0eWxlLmZvbnRTaXplLnB4XT1cImhlYWRlclRleHRGb250c1NpemVcIlxyXG4gICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cImhlYWRlckJhY2tncm91bmRDb2xvclwiXHJcbiAgICAgICAgICAgIFtjbGFzcy5ib3JkZXItYmVsb3ddPVwiIWhhc0FueVZpc2libGVDb2x1bW5cIlxyXG4gICAgICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cIlxyXG4gICAgICAgICAgICAgIHNob3dDb2x1bW5zR3JvdXBpbmcgJiYgc2hvd0ZpbHRlclJvd1xyXG4gICAgICAgICAgICAgICAgPyBoZWFkZXJSb3dIZWlnaHQgKiAzXHJcbiAgICAgICAgICAgICAgICA6IHNob3dDb2x1bW5zR3JvdXBpbmcgfHwgc2hvd0ZpbHRlclJvd1xyXG4gICAgICAgICAgICAgICAgPyBoZWFkZXJSb3dIZWlnaHQgKiAyXHJcbiAgICAgICAgICAgICAgICA6IGhlYWRlclJvd0hlaWdodFxyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8IS0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAtLT5cclxuICAgICAgICAgICAgPCEtLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLS0+XHJcbiAgICAgICAgICAgIDwhLS0gRGF0YSBHcmlkIExlZnQgUGlubmVkIEhlYWRlciBzdGFydHMgaGVyZSAtLT5cclxuICAgICAgICAgICAgPCEtLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLS0+XHJcbiAgICAgICAgICAgIDwhLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC0tPlxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtaGVhZGVyIGxlZnQtcGlubmVkXCJcclxuICAgICAgICAgICAgICAjbGVmdFBpbm5lZEhlYWRlclxyXG4gICAgICAgICAgICAgIFtjbGFzcy5ib3JkZXItcmlnaHRdPVwiaGFzTGVmdFBpbm5lZENvbHVtbnNcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJzaG93U2VyaWFsTnVtYmVyXCJcclxuICAgICAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwiY2hlY2tib3hlc0JhY2tncm91bmRDb2xvclwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInNlbGVjdC1hbGwtY2hlY2tib3gtY2VsbCBib3JkZXItYmVsb3dcIlxyXG4gICAgICAgICAgICAgICAgW3N0eWxlLndpZHRoLnB4XT1cIjU1XCJcclxuICAgICAgICAgICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwiXHJcbiAgICAgICAgICAgICAgICAgIHNob3dDb2x1bW5zR3JvdXBpbmcgJiYgc2hvd0ZpbHRlclJvd1xyXG4gICAgICAgICAgICAgICAgICAgID8gaGVhZGVyUm93SGVpZ2h0ICogM1xyXG4gICAgICAgICAgICAgICAgICAgIDogc2hvd0NvbHVtbnNHcm91cGluZyB8fCBzaG93RmlsdGVyUm93XHJcbiAgICAgICAgICAgICAgICAgICAgPyBoZWFkZXJSb3dIZWlnaHQgKiAyXHJcbiAgICAgICAgICAgICAgICAgICAgOiBoZWFkZXJSb3dIZWlnaHRcclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgUy5Ob1xyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgKm5nSWY9XCJzaG93Q2hlY2tib3hlc1wiXHJcbiAgICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cImNoZWNrYm94ZXNCYWNrZ3JvdW5kQ29sb3JcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJzZWxlY3QtYWxsLWNoZWNrYm94LWNlbGwgYm9yZGVyLWJlbG93XCJcclxuICAgICAgICAgICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwiXHJcbiAgICAgICAgICAgICAgICAgIHNob3dDb2x1bW5zR3JvdXBpbmcgJiYgc2hvd0ZpbHRlclJvd1xyXG4gICAgICAgICAgICAgICAgICAgID8gaGVhZGVyUm93SGVpZ2h0ICogM1xyXG4gICAgICAgICAgICAgICAgICAgIDogc2hvd0NvbHVtbnNHcm91cGluZyB8fCBzaG93RmlsdGVyUm93XHJcbiAgICAgICAgICAgICAgICAgICAgPyBoZWFkZXJSb3dIZWlnaHQgKiAyXHJcbiAgICAgICAgICAgICAgICAgICAgOiBoZWFkZXJSb3dIZWlnaHRcclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiaGFzQW55VmlzaWJsZUNvbHVtblwiXHJcbiAgICAgICAgICAgICAgICAgIHN0eWxlPVwid2lkdGg6IDE2cHg7IGhlaWdodDogMTZweFwiXHJcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgICAgICAgICAgIFtpbmRldGVybWluYXRlXT1cImlzSW5kZXRlcm1pbmF0ZVN0YXRlKGRhdGFTZXQpXCJcclxuICAgICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiaXNBbGxTZWxlY3RlZChkYXRhU2V0KVwiXHJcbiAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwidG9nZ2xlU2VsZWN0QWxsKGRhdGFTZXQpXCJcclxuICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJoZWFkZXJCYWNrZ3JvdW5kQ29sb3JcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXhcIlxyXG4gICAgICAgICAgICAgICAgY2RrRHJvcExpc3RcclxuICAgICAgICAgICAgICAgIGlkPVwibGVmdC1waW5uZWQtaGVhZGVyXCJcclxuICAgICAgICAgICAgICAgIGNka0Ryb3BMaXN0T3JpZW50YXRpb249XCJob3Jpem9udGFsXCJcclxuICAgICAgICAgICAgICAgIFtjZGtEcm9wTGlzdERhdGFdPVwibGVmdFBpbm5lZENvbHVtbnNcIlxyXG4gICAgICAgICAgICAgICAgKGNka0Ryb3BMaXN0RW50ZXJlZCk9XCJvbkRyb3BMaXN0RW50ZXIoJGV2ZW50LCAnbGVmdCcpXCJcclxuICAgICAgICAgICAgICAgIChjZGtEcm9wTGlzdFNvcnRlZCk9XCJcclxuICAgICAgICAgICAgICAgICAgb25Tb3J0R3JvdXAoJGV2ZW50LCAncHJldmlld0xlZnRQaW5uZWRDb2x1bW5zJylcclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAoY2RrRHJvcExpc3REcm9wcGVkKT1cIm9uRHJvcEdyb3VwKClcIlxyXG4gICAgICAgICAgICAgICAgc3R5bGU9XCJtaW4td2lkdGg6IDFweFwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImRyYWdhYmxlLWhlYWRlclwiXHJcbiAgICAgICAgICAgICAgICAgIGNka0RyYWdcclxuICAgICAgICAgICAgICAgICAgW2Nka0RyYWdEYXRhXT1cImNvbFwiXHJcbiAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cIlxyXG4gICAgICAgICAgICAgICAgICAgIGxldCBjb2wgb2YgbGVmdFBpbm5lZENvbHVtbnM7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGkgPSBpbmRleDtcclxuICAgICAgICAgICAgICAgICAgICB0cmFja0J5OiB0cmFja0J5RmllbGRcclxuICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJDZWxsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgY29udGV4dDoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAkaW1wbGljaXQ6IGNvbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXg6IGksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb246ICdwcmV2aWV3TGVmdFBpbm5lZENvbHVtbnMnXHJcbiAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgY2RrRHJhZ1ByZXZpZXdcclxuICAgICAgICAgICAgICAgICAgICA+PGRpdiBjbGFzcz1cInAtMiBib3JkZXIgZC1mbGV4IGdhcC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWRyYWdnaW5nSW5Hcm91cEFyZWFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkYXRhLWdyaWQvaWNvbnMvYXJyb3dzLW1vdmUuc3ZnJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdj57eyBjb2wuaGVhZGVyIH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBjZGtEcmFnUGxhY2Vob2xkZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFkcmFnZ2luZ0luR3JvdXBBcmVhXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyQ2VsbDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaW1wbGljaXQ6IGNvbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4OiBpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbjogJydcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICA+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJkcmFnZ2luZ0luR3JvdXBBcmVhXCJcclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGdhcC0yIG1zLTJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJvcGFjaXR5OiAwLjZcIlxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjb2w/LmNoaWxkcmVuPy5sZW5ndGg7IGVsc2Ugc2luZ2xlQ29sXCJcclxuICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGNoaWxkIG9mIGNvbC5jaGlsZHJlbjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpID0gaW5kZXg7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFja0J5OiB0cmFja0J5RmllbGRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9wR3JvdXBpbmdSb3dQbGFjZWhvbGRlcjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dDoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpbXBsaWNpdDogY2hpbGQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvd0NoZXZyb246XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2wuY2hpbGRyZW4ubGVuZ3RoID4gMSAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSAhPSBjb2wuY2hpbGRyZW4ubGVuZ3RoIC0gMVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI3NpbmdsZUNvbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3BHcm91cGluZ1Jvd1BsYWNlaG9sZGVyO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dDoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaW1wbGljaXQ6IGNvbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvd0NoZXZyb246IGNvbD8uY2hpbGRyZW4/Lmxlbmd0aCA+IDFcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPCEtLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLS0+XHJcbiAgICAgICAgICAgIDwhLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC0tPlxyXG4gICAgICAgICAgICA8IS0tIERhdGEgR3JpZCBDZW50ZXIgUGlubmVkIEhlYWRlciBzdGFydHMgaGVyZSAtLT5cclxuICAgICAgICAgICAgPCEtLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLS0+XHJcbiAgICAgICAgICAgIDwhLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC0tPlxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtaGVhZGVyIGNlbnRlci1zY3JvbGxhYmxlXCJcclxuICAgICAgICAgICAgICAjY2VudGVyUGlubmVkSGVhZGVyXHJcbiAgICAgICAgICAgICAgKHNjcm9sbCk9XCJvbkNlbnRlckJvZHlTY3JvbGwoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgaWQ9XCJjZW50ZXItcGlubmVkLWhlYWRlclwiXHJcbiAgICAgICAgICAgICAgY2RrRHJvcExpc3RcclxuICAgICAgICAgICAgICBbY2RrRHJvcExpc3RDb25uZWN0ZWRUb109XCJcclxuICAgICAgICAgICAgICAgIHNob3dSb3dzR3JvdXBpbmcgPyBbJ3Jvd3MtZ3JvdXBpbmctdG9wLWNvbnRhaW5lciddIDogW11cclxuICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgIFtjZGtEcm9wTGlzdERhdGFdPVwiY2VudGVyQ29sdW1uc1wiXHJcbiAgICAgICAgICAgICAgY2RrRHJvcExpc3RPcmllbnRhdGlvbj1cImhvcml6b250YWxcIlxyXG4gICAgICAgICAgICAgIFtjZGtEcm9wTGlzdFNvcnRpbmdEaXNhYmxlZF09XCJcclxuICAgICAgICAgICAgICAgIGlzRGlzYWJsZUNvbHVtbkdyb3VwaW5nICYmIGRyYWdnaW5nSW5Hcm91cEFyZWFcclxuICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgIChjZGtEcm9wTGlzdEVudGVyZWQpPVwib25Ecm9wTGlzdEVudGVyKCRldmVudCwgJ2NlbnRlcicpXCJcclxuICAgICAgICAgICAgICAoY2RrRHJvcExpc3RTb3J0ZWQpPVwib25Tb3J0R3JvdXAoJGV2ZW50LCAncHJldmlld0NlbnRlckNvbHVtbnMnKVwiXHJcbiAgICAgICAgICAgICAgKGNka0Ryb3BMaXN0RHJvcHBlZCk9XCJvbkRyb3BHcm91cCgpXCJcclxuICAgICAgICAgICAgICBbc3R5bGUubWF4V2lkdGhdPVwiXHJcbiAgICAgICAgICAgICAgICAnY2FsYygxMDAlIC0gJyArXHJcbiAgICAgICAgICAgICAgICAocmlnaHRQaW5uZWRIZWFkZXIub2Zmc2V0V2lkdGggKyBsZWZ0UGlubmVkSGVhZGVyLm9mZnNldFdpZHRoKSArXHJcbiAgICAgICAgICAgICAgICAncHgpJ1xyXG4gICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cImdyb3VwZWRDb2x1bW5zPy5sZW5ndGhcIlxyXG4gICAgICAgICAgICAgICAgc3R5bGU9XCJtaW4td2lkdGg6IDIwMHB4XCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiaC0xMDAgYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgICAgICAgICAgICNjb2x1bW5zR3JvdXBlZEJveFxyXG4gICAgICAgICAgICAgICAgaWQ9XCJncm91cEJveEhlYWRlckRpdlwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImQtZmxleCB3LTEwMCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXIgYm9yZGVyLWJlbG93XCJcclxuICAgICAgICAgICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJcclxuICAgICAgICAgICAgICAgICAgICBzaG93RmlsdGVyUm93ID8gaGVhZGVyUm93SGVpZ2h0ICogMiA6IGhlYWRlclJvd0hlaWdodFxyXG4gICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHMtM1wiPkdyb3VwPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRocmVlLWRvdHMgY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBvcGVuVGhyZWVEb3RzTWVudSgkZXZlbnQsICdncm91cCcpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpc1RocmVlRG90c0ZpbHRlck9wZW4gPSBmYWxzZVxyXG4gICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICdkYXRhLWdyaWQvaWNvbnMvdGhyZWUtZG90cy12ZXJ0aWNhbC5zdmcnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgIChtb3VzZWRvd24pPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgb25SZXNpemVHcm91cEJveCgkZXZlbnQpXHJcbiAgICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJyZXNpemUtaGFuZGxlXCJcclxuICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwibWFyZ2luLXJpZ2h0OiAtMnB4XCJcclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICdkYXRhLWdyaWQvaWNvbnMvcmVzaXplLWhhbmRsZS5zdmcnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJoZWFkZXJSb3dIZWlnaHRcIlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImJvcmRlci1iZWxvd1wiXHJcbiAgICAgICAgICAgICAgICA+PC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGN1cnNvci1wb2ludGVyIGJvcmRlci1iZWxvd1wiXHJcbiAgICAgICAgICAgICAgICBzdHlsZT1cIm1pbi13aWR0aDogMzBweDsgaGVpZ2h0OiAxMDAlXCJcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiZ3JpZFR5cGUgPT09ICdBc3NldHMnIHx8IGdyaWRUeXBlID09PSAnVGFza3MnXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZHJhZ2FibGUtaGVhZGVyXCJcclxuICAgICAgICAgICAgICAgIChjZGtEcmFnU3RhcnRlZCk9XCJcclxuICAgICAgICAgICAgICAgICAgY2hlY2tDb2x1bW5Hcm91cGluZ1N0YXR1cyhjb2wpO1xyXG4gICAgICAgICAgICAgICAgICBkcmFnU3RhcnRPbkdyb3VwKGNvbCk7XHJcbiAgICAgICAgICAgICAgICAgIG9uRHJhZ1N0YXJ0ZWQoY29sKVxyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgIChjZGtEcmFnTW92ZWQpPVwib25EcmFnTW92ZWQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAoY2RrRHJhZ0VuZGVkKT1cIm9uRHJhZ0VuZGVkKClcIlxyXG4gICAgICAgICAgICAgICAgY2RrRHJhZ1xyXG4gICAgICAgICAgICAgICAgW2Nka0RyYWdEYXRhXT1cImNvbFwiXHJcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJcclxuICAgICAgICAgICAgICAgICAgbGV0IGNvbCBvZiBjZW50ZXJDb2x1bW5zO1xyXG4gICAgICAgICAgICAgICAgICBsZXQgaSA9IGluZGV4O1xyXG4gICAgICAgICAgICAgICAgICB0cmFja0J5OiB0cmFja0J5SWRcclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxyXG4gICAgICAgICAgICAgICAgICAgIGhlYWRlckNlbGw7XHJcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dDoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgJGltcGxpY2l0OiBjb2wsXHJcbiAgICAgICAgICAgICAgICAgICAgICBpbmRleDogaSxcclxuICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb246ICdwcmV2aWV3Q2VudGVyQ29sdW1ucydcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBjZGtEcmFnUHJldmlld1xyXG4gICAgICAgICAgICAgICAgICA+PGRpdiBjbGFzcz1cInAtMiBib3JkZXIgZC1mbGV4IGdhcC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWlzT3V0c2lkZUNvbnRhaW5lclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRyYWdnaW5nSW5Hcm91cEFyZWFcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gJ2RhdGEtZ3JpZC9pY29ucy9qdXN0aWZ5LnN2ZydcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJ2RhdGEtZ3JpZC9pY29ucy9hcnJvd3MtbW92ZS5zdmcnKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJpc091dHNpZGVDb250YWluZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2V5ZS1jcm9zcy5zdmcnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdj57eyBjb2wuaGVhZGVyIH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBjZGtEcmFnUGxhY2Vob2xkZXI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhZHJhZ2dpbmdJbkdyb3VwQXJlYVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlckNlbGw7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAkaW1wbGljaXQ6IGNvbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleDogaSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uOiAnY2VudGVyQ29sdW1ucydcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICA+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJkcmFnZ2luZ0luR3JvdXBBcmVhICYmICFpc091dHNpZGVDb250YWluZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGdhcC0yIG1zLTJcIlxyXG4gICAgICAgICAgICAgICAgICAgIHN0eWxlPVwib3BhY2l0eTogMC42XCJcclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2w/LmNoaWxkcmVuPy5sZW5ndGg7IGVsc2Ugc2luZ2xlQ29sXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjaGlsZCBvZiBjb2wuY2hpbGRyZW47XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGkgPSBpbmRleDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFja0J5OiB0cmFja0J5SWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNoaWxkPy5pc19ncm91cGFibGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3BHcm91cGluZ1Jvd1BsYWNlaG9sZGVyO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGltcGxpY2l0OiBjaGlsZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93Q2hldnJvbjpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbC5jaGlsZHJlbi5sZW5ndGggPiAxICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpICE9IGNvbC5jaGlsZHJlbi5sZW5ndGggLSAxXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI3NpbmdsZUNvbD5cclxuICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2w/LmlzX2dyb3VwYWJsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvcEdyb3VwaW5nUm93UGxhY2Vob2xkZXI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpbXBsaWNpdDogY29sLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93Q2hldnJvbjogY29sPy5jaGlsZHJlbj8ubGVuZ3RoID4gMVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8IS0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAtLT5cclxuICAgICAgICAgICAgPCEtLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLS0+XHJcbiAgICAgICAgICAgIDwhLS0gRGF0YSBHcmlkIFJpZ2h0IFBpbm5lZCBIZWFkZXIgc3RhcnRzIGhlcmUgLS0+XHJcbiAgICAgICAgICAgIDwhLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC0tPlxyXG4gICAgICAgICAgICA8IS0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAtLT5cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwiaGVhZGVyQmFja2dyb3VuZENvbG9yXCJcclxuICAgICAgICAgICAgICBjZGtEcm9wTGlzdFxyXG4gICAgICAgICAgICAgIGlkPVwicmlnaHQtcGlubmVkLWhlYWRlclwiXHJcbiAgICAgICAgICAgICAgW2Nka0Ryb3BMaXN0Q29ubmVjdGVkVG9dPVwiXHJcbiAgICAgICAgICAgICAgICBzaG93Um93c0dyb3VwaW5nID8gWydyb3dzLWdyb3VwaW5nLXRvcC1jb250YWluZXInXSA6IFtdXHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICBjZGtEcm9wTGlzdE9yaWVudGF0aW9uPVwiaG9yaXpvbnRhbFwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtaGVhZGVyIHJpZ2h0LXBpbm5lZFwiXHJcbiAgICAgICAgICAgICAgKGNka0Ryb3BMaXN0U29ydGVkKT1cIlxyXG4gICAgICAgICAgICAgICAgb25Tb3J0R3JvdXAoJGV2ZW50LCAncHJldmlld1JpZ2h0UGlubmVkQ29sdW1ucycpXHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAoY2RrRHJvcExpc3RFbnRlcmVkKT1cIm9uRHJvcExpc3RFbnRlcigkZXZlbnQsICdyaWdodCcpXCJcclxuICAgICAgICAgICAgICAoY2RrRHJvcExpc3REcm9wcGVkKT1cIm9uRHJvcEdyb3VwKClcIlxyXG4gICAgICAgICAgICAgICNyaWdodFBpbm5lZEhlYWRlclxyXG4gICAgICAgICAgICAgIGNsYXNzPVwicmlnaHQtcGlubmVkLWhlYWRlciBkLWZsZXhcIlxyXG4gICAgICAgICAgICAgIHN0eWxlPVwibWluLXdpZHRoOiAwLjJweFwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImRyYWdhYmxlLWhlYWRlclwiXHJcbiAgICAgICAgICAgICAgICBjZGtEcmFnXHJcbiAgICAgICAgICAgICAgICBbY2RrRHJhZ0RhdGFdPVwiY29sXCJcclxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cIlxyXG4gICAgICAgICAgICAgICAgICBsZXQgY29sIG9mIHJpZ2h0UGlubmVkQ29sdW1ucztcclxuICAgICAgICAgICAgICAgICAgbGV0IGkgPSBpbmRleDtcclxuICAgICAgICAgICAgICAgICAgdHJhY2tCeTogdHJhY2tCeUlkXHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcclxuICAgICAgICAgICAgICAgICAgICBoZWFkZXJDZWxsO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICRpbXBsaWNpdDogY29sLFxyXG4gICAgICAgICAgICAgICAgICAgICAgcGlubmVkUmlnaHQ6IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICBpbmRleDogaSxcclxuICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb246ICdyaWdodCdcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgY2RrRHJhZ1ByZXZpZXdcclxuICAgICAgICAgICAgICAgICAgPjxkaXYgY2xhc3M9XCJwLTIgYm9yZGVyIGQtZmxleCBnYXAtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiFkcmFnZ2luZ0luR3JvdXBBcmVhXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAnZGF0YS1ncmlkL2ljb25zL2Fycm93cy1tb3ZlLnN2ZydcclxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdj57eyBjb2wuaGVhZGVyIH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBjZGtEcmFnUGxhY2Vob2xkZXI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhZHJhZ2dpbmdJbkdyb3VwQXJlYVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlckNlbGw7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAkaW1wbGljaXQ6IGNvbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleDogaSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uOiAncmlnaHQnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZHJhZ2dpbmdJbkdyb3VwQXJlYVwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggZ2FwLTIgbXMtMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJvcGFjaXR5OiAwLjZcIlxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbD8uY2hpbGRyZW4/Lmxlbmd0aDsgZWxzZSBzaW5nbGVDb2xcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGNoaWxkIG9mIGNvbC5jaGlsZHJlbjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgaSA9IGluZGV4O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNrQnk6IHRyYWNrQnlJZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvcEdyb3VwaW5nUm93UGxhY2Vob2xkZXI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpbXBsaWNpdDogY2hpbGQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dDaGV2cm9uOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbC5jaGlsZHJlbi5sZW5ndGggPiAxICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSAhPSBjb2wuY2hpbGRyZW4ubGVuZ3RoIC0gMVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI3NpbmdsZUNvbD5cclxuICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB0b3BHcm91cGluZ1Jvd1BsYWNlaG9sZGVyO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpbXBsaWNpdDogY29sLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvd0NoZXZyb246IGNvbD8uY2hpbGRyZW4/Lmxlbmd0aCA+IDFcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDwhLS0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgLS0+XHJcbiAgICAgICAgICA8IS0tIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIC0tPlxyXG4gICAgICAgICAgPCEtLSBEYXRhIEdyaWQgQm9keSBzdGFydHMgaGVyZSAtLT5cclxuICAgICAgICAgIDwhLS0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgLS0+XHJcbiAgICAgICAgICA8IS0tIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIC0tPlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzcz1cImgtMTAwIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICAgICAgICAgICpuZ0lmPVwiIWRhdGFTZXQ/Lmxlbmd0aCAmJiAhbG9hZGluZyAmJiAhZGF0YVNldExvYWRpbmdcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8IS0tIDxkaXZcclxuICAgICAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9yZWNvcmQtbm90LWZvdW5kLnN2ZydcclxuICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgICAgID48L2Rpdj4gLS0+XHJcbiAgICAgICAgICAgIDxkaXY+Tm8gUmVjb3JkIEZvdW5kPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwicG9zaXRpb24tYWJzb2x1dGUgdy0xMDAgaC0xMDAgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIGxvYWRpbmctb3ZlcmxheVwiXHJcbiAgICAgICAgICAgICpuZ0lmPVwibG9hZGluZyB8fCBkYXRhU2V0TG9hZGluZ1wiXHJcbiAgICAgICAgICAgIHN0eWxlPVwiXHJcbiAgICAgICAgICAgICAgei1pbmRleDogOTk5O1xyXG4gICAgICAgICAgICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigxcHgpO1xyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cImJvZHlCYWNrZ3JvdW5kQ29sb3JcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Bpbm5lci1ib3JkZXIgdGV4dC1wcmltYXJ5XCIgcm9sZT1cInN0YXR1c1wiPlxyXG4gICAgICAgICAgICAgIDwhLS0gPHNwYW4gY2xhc3M9XCJsb2FkZXJcIj48L3NwYW4+IC0tPlxyXG4gICAgICAgICAgICAgIDwhLS0gPHNwYW4gY2xhc3M9XCJ2aXN1YWxseS1oaWRkZW5cIj5Mb2FkaW5nLi4uPC9zcGFuPiAtLT5cclxuICAgICAgICAgICAgICA8IS0tIDwvZGl2PiAtLT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLWJvZHktd3JhcHBlciBwb3NpdGlvbi1yZWxhdGl2ZSBkLWZsZXhcIlxyXG4gICAgICAgICAgICBbc3R5bGUuaGVpZ2h0XT1cImJvZHlXcmFwcGVySGVpZ2h0XCJcclxuICAgICAgICAgICAgc3R5bGU9XCJvdmVyZmxvdy15OiBhdXRvOyBvdmVyZmxvdy14OiBoaWRkZW5cIlxyXG4gICAgICAgICAgICAjbWFpblNjcm9sbFxyXG4gICAgICAgICAgICAoc2Nyb2xsKT1cIm9uTWFpblNjcm9sbCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgW3N0eWxlLnNjcm9sbGJhcldpZHRoXT1cInZlcnRpY2FsU2Nyb2xsYmFyV2lkdGhcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8IS0tIExFRlQgUElOTkVEIC0tPlxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJcclxuICAgICAgICAgICAgICAgICFncm91cGVkQ29sdW1ucy5sZW5ndGggPyBvcmlnaW5hbERhdGFTZXQubGVuZ3RoICogcm93SGVpZ2h0IDogMFxyXG4gICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgID48L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBbY2xhc3MuaC0xMDBdPVwib3JpZ2luYWxEYXRhU2V0Lmxlbmd0aCA8IDhcIj5cclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1ib2R5IGxlZnQtcGlubmVkLWJvZHkgdy0xMDBcIlxyXG4gICAgICAgICAgICAgICAgc3R5bGU9XCJvdmVyZmxvdy15OiBoaWRkZW5cIlxyXG4gICAgICAgICAgICAgICAgW2NsYXNzLmJvcmRlci1yaWdodF09XCJoYXNMZWZ0UGlubmVkQ29sdW1uc1wiXHJcbiAgICAgICAgICAgICAgICBbY2xhc3MudHJhbnNwYXJlbnQtYm9yZGVyLXJpZ2h0XT1cIiFoYXNMZWZ0UGlubmVkQ29sdW1uc1wiXHJcbiAgICAgICAgICAgICAgICBbc3R5bGUudHJhbnNmb3JtXT1cIid0cmFuc2xhdGVZKCcgKyB0cmFuc2xhdGVZICsgJ3B4KSdcIlxyXG4gICAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJsZWZ0UGlubmVkQmFja2dyb3VuZENvbG9yXCJcclxuICAgICAgICAgICAgICAgIFtjbGFzcy5oLTEwMF09XCJvcmlnaW5hbERhdGFTZXQubGVuZ3RoIDwgOFwiXHJcbiAgICAgICAgICAgICAgICpuZ0lmPVwiIWxvYWRpbmcgJiYgIWRhdGFTZXRMb2FkaW5nXCJcclxuICAgICAgICAgICAgICAgIFtAcm93RHluYW1pY109XCJyb3dBbmltYXRpb25cIlxyXG5cclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgKm5nRm9yPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHJvdyBvZiB2aXNpYmxlUm93cztcclxuICAgICAgICAgICAgICAgICAgICBsZXQgaSA9IGluZGV4O1xyXG4gICAgICAgICAgICAgICAgICAgIHRyYWNrQnk6IHRyYWNrQnlJZFxyXG4gICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcclxuICAgICAgICAgICAgICAgICAgICAgIHJvd0NlbGw7XHJcbiAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRpbXBsaWNpdDogcm93LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5zOiBwcmV2aWV3TGVmdFBpbm5lZENvbHVtbnMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzRXZlbjogKHN0YXJ0SW5kZXggKyBpKSAlIDIgPT09IDAsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzT2RkOiAoc3RhcnRJbmRleCArIGkpICUgMiAhPT0gMCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXNMZWZ0OiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uOiAnbGVmdCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzVG90YWxSb3c6IGZhbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hvd1RvdGFsQW1vdW50Um93ICYmIG9yaWdpbmFsRGF0YVNldD8ubGVuZ3RoXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgcm93Q2VsbDtcclxuICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgJGltcGxpY2l0OiB7IF9fdmlydHVhbEluZGV4OiAwIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbnM6IHByZXZpZXdMZWZ0UGlubmVkQ29sdW1ucyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXNFdmVuOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXNPZGQ6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uOiAnbGVmdCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzVG90YWxSb3c6IHRydWVcclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8IS0tIENFTlRFUiAtLT5cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiaC0xMDBcIlxyXG4gICAgICAgICAgICAgIFtzdHlsZS53aWR0aC5weF09XCJjZW50ZXJQaW5uZWRIZWFkZXIuY2xpZW50V2lkdGhcIlxyXG4gICAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwiYm9keUJhY2tncm91bmRDb2xvclwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1ib2R5IGNlbnRlci1zY3JvbGxhYmxlXCJcclxuICAgICAgICAgICAgICAgIFtjbGFzcy5oLTEwMF09XCJvcmlnaW5hbERhdGFTZXQubGVuZ3RoIDwgOFwiXHJcbiAgICAgICAgICAgICAgICBzdHlsZT1cIm92ZXJmbG93LXk6IGhpZGRlbjsgb3ZlcmZsb3cteDogYXV0b1wiXHJcbiAgICAgICAgICAgICAgICBbc3R5bGUudHJhbnNmb3JtXT1cIid0cmFuc2xhdGVZKCcgKyB0cmFuc2xhdGVZICsgJ3B4KSdcIlxyXG4gICAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJib2R5QmFja2dyb3VuZENvbG9yXCJcclxuICAgICAgICAgICAgICAgICNjZW50ZXJTY3JvbGxhYmxlQm9keVxyXG4gICAgICAgICAgICAgICAgKHNjcm9sbCk9XCJvbkNlbnRlckJvZHlTY3JvbGwoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICBbc3R5bGUuYm94U2hhZG93XT1cImxlZnRQaW5uZWRCb3hzaGFkb3dcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8ZGl2IFtAcm93RHluYW1pY109XCJyb3dBbmltYXRpb25cIiAqbmdJZj1cIiFsb2FkaW5nICYmICFkYXRhU2V0TG9hZGluZ1wiPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAqbmdGb3I9XCJcclxuICAgICAgICAgICAgICAgICAgICBsZXQgcm93IG9mIHZpc2libGVSb3dzO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBpID0gaW5kZXg7XHJcbiAgICAgICAgICAgICAgICAgICAgdHJhY2tCeTogdHJhY2tCeUlkXHJcbiAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgcm93Q2VsbDtcclxuICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgJGltcGxpY2l0OiByb3csXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbnM6IHByZXZpZXdDZW50ZXJDb2x1bW5zLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0V2ZW46IChzdGFydEluZGV4ICsgaSkgJSAyID09PSAwLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpc09kZDogKHN0YXJ0SW5kZXggKyBpKSAlIDIgIT09IDAsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb246ICdjZW50ZXInLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpc1RvdGFsUm93OiBmYWxzZVxyXG4gICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hvd1RvdGFsQW1vdW50Um93ICYmIG9yaWdpbmFsRGF0YVNldD8ubGVuZ3RoXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgcm93Q2VsbDtcclxuICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgJGltcGxpY2l0OiB7IF9fdmlydHVhbEluZGV4OiAwIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbnM6IHByZXZpZXdDZW50ZXJDb2x1bW5zLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0V2ZW46IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpc09kZDogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb246ICdjZW50ZXInLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpc1RvdGFsUm93OiB0cnVlXHJcbiAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPCEtLSBSSUdIVCBQSU5ORUQgLS0+XHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICBjbGFzcz1cInJpZ2h0LXBpbm5lZC1ib2R5LXdyYXBwZXJcIlxyXG4gICAgICAgICAgICAgICpuZ0lmPVwiaGFzUmlnaHRQaW5uZWRDb2x1bW5zXCJcclxuICAgICAgICAgICAgICBbY2xhc3MuaC0xMDBdPVwib3JpZ2luYWxEYXRhU2V0Lmxlbmd0aCA8IDhcIlxyXG4gICAgICAgICAgICAgIFtzdHlsZS5tYXhXaWR0aC5weF09XCJcclxuICAgICAgICAgICAgICAgIGlzU2Nyb2xsYmFyVmlzaWJsZVxyXG4gICAgICAgICAgICAgICAgICA/IHJpZ2h0UGlubmVkSGVhZGVyLm9mZnNldFdpZHRoIC0gMTVcclxuICAgICAgICAgICAgICAgICAgOiByaWdodFBpbm5lZEhlYWRlci5vZmZzZXRXaWR0aFxyXG4gICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJyaWdodFBpbm5lZEJhY2tncm91bmRDb2xvclwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1ib2R5IHJpZ2h0LXBpbm5lZC1ib2R5IHctMTAwIGgtMTAwXCJcclxuICAgICAgICAgICAgICAgIHN0eWxlPVwib3ZlcmZsb3cteTogaGlkZGVuXCJcclxuICAgICAgICAgICAgICAgIFtzdHlsZS50cmFuc2Zvcm1dPVwiJ3RyYW5zbGF0ZVkoJyArIHRyYW5zbGF0ZVkgKyAncHgpJ1wiXHJcbiAgICAgICAgICAgICAgICBbc3R5bGUuYm94U2hhZG93XT1cInJpZ2h0UGlubmVkQm94c2hhZG93XCJcclxuICAgICAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwicmlnaHRQaW5uZWRCYWNrZ3JvdW5kQ29sb3JcIlxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCIhbG9hZGluZyAmJiAhZGF0YVNldExvYWRpbmdcIlxyXG4gICAgICAgICAgICAgICAgW0Byb3dEeW5hbWljXT1cInJvd0FuaW1hdGlvblwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAqbmdGb3I9XCJcclxuICAgICAgICAgICAgICAgICAgICBsZXQgcm93IG9mIHZpc2libGVSb3dzO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBpID0gaW5kZXg7XHJcbiAgICAgICAgICAgICAgICAgICAgdHJhY2tCeTogdHJhY2tCeUlkXHJcbiAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgcm93Q2VsbDtcclxuICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgJGltcGxpY2l0OiByb3csXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbnM6IHByZXZpZXdSaWdodFBpbm5lZENvbHVtbnMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzRXZlbjogKHN0YXJ0SW5kZXggKyBpKSAlIDIgPT09IDAsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzT2RkOiAoc3RhcnRJbmRleCArIGkpICUgMiAhPT0gMCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbjogJ3JpZ2h0JyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXNUb3RhbFJvdzogZmFsc2VcclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93VG90YWxBbW91bnRSb3cgJiYgb3JpZ2luYWxEYXRhU2V0Py5sZW5ndGhcIj5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICByb3dDZWxsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgY29udGV4dDoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAkaW1wbGljaXQ6IHsgX192aXJ0dWFsSW5kZXg6IDAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uczogcHJldmlld1JpZ2h0UGlubmVkQ29sdW1ucyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXNFdmVuOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXNPZGQ6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uOiAncmlnaHQnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpc1RvdGFsUm93OiB0cnVlXHJcbiAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIHN0eWxlPVwidG9wOiBhdXRvOyBsZWZ0OiBhdXRvXCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwiXHJcbiAgICAgICAgICAgICAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICAgICAgICBmdWxsc2NyZWVuSW1hZ2UgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgY2RyLmRldGVjdENoYW5nZXMoKVxyXG4gICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgW3N0eWxlLndpZHRoLnB4XT1cImRhdGFHcmlkQ29udGFpbmVyLm9mZnNldFdpZHRoXCJcclxuICAgICAgICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cIlxyXG4gICAgICAgICAgICAgICAgZGF0YUdyaWRDb250YWluZXIub2Zmc2V0SGVpZ2h0IC0gKGZvb3RlclJvd0hlaWdodCArIDEwMClcclxuICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiaW1hZ2UtbW9kYWwgZnVsbC1pbWFnZS1tb2RhbFwiXHJcbiAgICAgICAgICAgICAgKm5nSWY9XCJmdWxsc2NyZWVuSW1hZ2VcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPGltZ1xyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXHJcbiAgICAgICAgICAgICAgICBbc3JjXT1cImZ1bGxzY3JlZW5JbWFnZVwiXHJcbiAgICAgICAgICAgICAgICBhbHQ9XCJGdWxsc2NyZWVuIEltYWdlXCJcclxuICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICpuZ0lmPVwic2VsZWN0ZWRSb3dzLnNpemUgPiAwICYmIHNob3dUYXNrYmFyXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cInRhc2tiYXIgdy0xMDBcIlxyXG4gICAgICAgICAgICAgIFtzdHlsZS5ib3R0b20ucHhdPVwiODVcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdGVkLXJvd3MtYWN0aW9uLWJhclwiIFtAc2xpZGVVcF0+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNlbGVjdGVkLWNvdW50XCI+XHJcbiAgICAgICAgICAgICAgICAgIHt7IHNlbGVjdGVkUm93cy5zaXplIH19IHNlbGVjdGVkIG9mXHJcbiAgICAgICAgICAgICAgICAgIHt7XHJcbiAgICAgICAgICAgICAgICAgICAgcGFnaW5hdGlvbkNvbmZpZy50b3RhbFJlc3VsdHMgfHxcclxuICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZz8ucGFnaW5hdGlvblBhcmFtcz8udG90YWxJdGVtc1xyXG4gICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICBUb3RhbFxyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFjdGlvbi1idXR0b25zIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBhY3Rpb24gb2YgdGFza2JhckFjdGlvbnM7IGxldCBpID0gaW5kZXhcIlxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImFjdGlvbj8uaGFzX3Blcm1pc3Npb25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYWN0aW9uLWJ0biB2ZXJpZmllZCBidG4ge3sgYWN0aW9uIH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uVmVyaWZ5Q2xpY2soYWN0aW9uPy5hY3Rpb25OYW1lKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID57eyBhY3Rpb24/LmFjdGlvbk5hbWUgfX08L3NwYW5cclxuICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGFza2JhckFjdGlvbnMubGVuZ3RoID4gMSAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGkgIT09IHRhc2tiYXJBY3Rpb25zLmxlbmd0aCAtIDEgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB0YXNrYmFyQWN0aW9uc1tpICsgMV0/Lmhhc19wZXJtaXNzaW9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgPnw8L3NwYW5cclxuICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cImNsZWFyU2VsZWN0aW9uU3RhdGUodGFibGVUeXBlKTtzZWxlY3RlZFJvd3MuY2xlYXIoKTtcIiBjbGFzcz1cImNsZWFyLWJ0biBtcy0yIG10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImJpIGJpLXgtY2lyY2xlXCI+PC9pPiBDbGVhciBTZWxlY3Rpb25cclxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwhLS0gVmVydGljYWwgRmFrZSBzY3JvbGwgQmFyIC0tPlxyXG4gICAgICAgICAgPCEtLSA8ZGl2XHJcbiAgICAgICAgICAgIChzY3JvbGwpPVwib25NYWluRmFrZVNjcm9sbCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJmYWtlLXNjcm9sbGJhciBmYWtlLXNjcm9sbGJhci12ZXJ0aWNhbCBkLW5vbmVcIlxyXG4gICAgICAgICAgICBbc3R5bGUuc2Nyb2xsYmFyV2lkdGhdPVwidmVydGljYWxTY3JvbGxiYXJXaWR0aFwiXHJcbiAgICAgICAgICAgIFtzdHlsZS50b3AucHhdPVwiXHJcbiAgICAgICAgICAgICAgc2hvd0NvbHVtbnNHcm91cGluZyAmJiBzaG93RmlsdGVyUm93XHJcbiAgICAgICAgICAgICAgICA/IGhlYWRlclJvd0hlaWdodCAqIDNcclxuICAgICAgICAgICAgICAgIDogc2hvd0NvbHVtbnNHcm91cGluZyB8fCBzaG93RmlsdGVyUm93XHJcbiAgICAgICAgICAgICAgICA/IGhlYWRlclJvd0hlaWdodCAqIDJcclxuICAgICAgICAgICAgICAgIDogaGVhZGVyUm93SGVpZ2h0XHJcbiAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICNmYWtlU2Nyb2xsXHJcbiAgICAgICAgICAgIFtzdHlsZS5oZWlnaHRdPVwiYm9keVdyYXBwZXJIZWlnaHRcIlxyXG4gICAgICAgICAgICBzdHlsZT1cIlxyXG4gICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87XHJcbiAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuO1xyXG4gICAgICAgICAgICAgIHdpZHRoOiAxN3B4O1xyXG4gICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgICAgICAgICByaWdodDogMDtcclxuICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBmMWYyZjM7XHJcbiAgICAgICAgICAgICAgei1pbmRleDogMTA7XHJcbiAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxkaXYgW3N0eWxlLmhlaWdodC5weF09XCJyb3dIZWlnaHQgKiBkYXRhU2V0TGVuZ3RoXCI+PC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj4gLS0+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDwhLS0gSG9yaXppbnRhbCBGYWtlIFNjcm9sbGJhcnMgLS0+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW5cIlxyXG4gICAgICAgICAgKm5nSWY9XCJoYXNTY3JvbGxcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgW3N0eWxlLnNjcm9sbGJhcldpZHRoXT1cImhvcml6aW50YWxTY3JvbGxiYXJXaWR0aFwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiZmFrZS1ob3JpemludGFsLXNjcm9sbGJhclwiXHJcbiAgICAgICAgICAgICNmYWtlU2Nyb2xsXHJcbiAgICAgICAgICAgIFtzdHlsZS53aWR0aC5weF09XCJsZWZ0UGlubmVkSGVhZGVyLm9mZnNldFdpZHRoXCJcclxuICAgICAgICAgICAgc3R5bGU9XCJvdmVyZmxvdy14OiBzY3JvbGxcIlxyXG4gICAgICAgICAgPjwvZGl2PlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBbc3R5bGUuc2Nyb2xsYmFyV2lkdGhdPVwiaG9yaXppbnRhbFNjcm9sbGJhcldpZHRoXCJcclxuICAgICAgICAgICAgKHNjcm9sbCk9XCJvbkNlbnRlckJvZHlTY3JvbGwoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiZmFrZS1ob3JpemludGFsLXNjcm9sbGJhclwiXHJcbiAgICAgICAgICAgICNob3JpemludGFsRmFrZVNjcm9sbFxyXG4gICAgICAgICAgICBbc3R5bGUud2lkdGgucHhdPVwiY2VudGVyUGlubmVkSGVhZGVyLm9mZnNldFdpZHRoXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGRpdiBbc3R5bGUud2lkdGgucHhdPVwiY2VudGVyUGlubmVkSGVhZGVyLnNjcm9sbFdpZHRoIC0gMTBcIj48L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBbc3R5bGUuc2Nyb2xsYmFyV2lkdGhdPVwiaG9yaXppbnRhbFNjcm9sbGJhcldpZHRoXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJmYWtlLWhvcml6aW50YWwtc2Nyb2xsYmFyXCJcclxuICAgICAgICAgICAgI2Zha2VTY3JvbGxcclxuICAgICAgICAgICAgW3N0eWxlLndpZHRoLnB4XT1cInJpZ2h0UGlubmVkSGVhZGVyLm9mZnNldFdpZHRoXCJcclxuICAgICAgICAgICAgc3R5bGU9XCJvdmVyZmxvdy14OiBzY3JvbGxcIlxyXG4gICAgICAgICAgPjwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDwhLS0gU2lkZSBNZW51IEltcGxlbWVudGVkIEhlcmUgLS0+XHJcbiAgICAgIDxkaXZcclxuICAgICAgICAqbmdJZj1cInNob3dTaWRlTWVudVwiXHJcbiAgICAgICAgW3N0eWxlLndpZHRoLnB4XT1cInNpZGVNZW51VmlzaWJsZSA/IDI4MCA6IDMwXCJcclxuICAgICAgICBjbGFzcz1cInJpZ2h0LW1lbnUgaC0xMDBcIlxyXG4gICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwic2lkZW1lbnVCYWNrZ3JvdW5kQ29sb3JcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImgtMTAwIGQtZmxleCBmbGV4LXJvdy1yZXZlcnNlXCI+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIHN0eWxlPVwid2lkdGg6IDMwcHhcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBhbGlnbi1pdGVtcy1jZW50ZXIgY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAgICAgICBbY2xhc3MuYm9yZGVyLXN0YXJ0XT1cInNpZGVNZW51VmlzaWJsZVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlU2lkZU1lbnUoJ2NvbHMnKVwiXHJcbiAgICAgICAgICAgICAgW2NsYXNzLmJnLWZmZl09XCJcclxuICAgICAgICAgICAgICAgIGN1cnJlbnRPcGVuZWRTaWRlTWVudWUgPT0gJ2NvbHMnICYmIHNpZGVNZW51VmlzaWJsZVxyXG4gICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgW2NsYXNzLmJvcmRlci1iZWxvd109XCJzaWRlTWVudVZpc2libGVcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiY29sdW1ucy1idXR0b24gZC1mbGV4IGZsZXgtY29sdW1uIGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy91aS1jaGVja3MtZ3JpZC5zdmcnXHJcbiAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaWRlLW1lbnVlLXRleHRcIj5Db2x1bW5zPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVTaWRlTWVudSgnZmlsdHJzJylcIlxyXG4gICAgICAgICAgICAgIFtjbGFzcy5iZy1mZmZdPVwiXHJcbiAgICAgICAgICAgICAgICBjdXJyZW50T3BlbmVkU2lkZU1lbnVlID09ICdmaWx0cnMnICYmIHNpZGVNZW51VmlzaWJsZVxyXG4gICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgW2NsYXNzLmJvcmRlci1iZWxvd109XCJcclxuICAgICAgICAgICAgICAgIHNpZGVNZW51VmlzaWJsZSAmJiBjdXJyZW50T3BlbmVkU2lkZU1lbnVlID09ICdmaWx0cnMnXHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImNvbHVtbnMtYnV0dG9uIGQtZmxleCBmbGV4LWNvbHVtbiBhbGlnbi1pdGVtcy1jZW50ZXJcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvZmlsdGVyLTIuc3ZnJ1xyXG4gICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2lkZS1tZW51ZS10ZXh0XCI+RmlsdGVyPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwiaC0xMDBcIlxyXG4gICAgICAgICAgICAqbmdJZj1cInNpZGVNZW51VmlzaWJsZVwiXHJcbiAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsgd2lkdGg6IHNpZGVNZW51VmlzaWJsZSA/ICcyNTBweCcgOiAnJyB9XCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImgtMTAwXCI+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJjdXJyZW50T3BlbmVkU2lkZU1lbnVlID09ICdjb2xzJyAmJiBzaWRlTWVudVZpc2libGVcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb2x1bW5QYW5uZWxcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwhLS0gQ29sdW1uIEl0ZW1zIC0tPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbHVtbi1wYW5lbC1ib2R5IHB4LTNcIj5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBjb2wgb2YgY29sdW1uczsgdHJhY2tCeTogdHJhY2tCeUZpZWxkXCJcclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29sdW1uUGFuZWxJdGVtOyBjb250ZXh0OiB7IGNvbDogY29sIH1cIlxyXG4gICAgICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxociAvPlxyXG5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaWRlLW1lbnUtcm93LWdyb3Vwc1wiIHN0eWxlPVwiaGVpZ2h0OiAzMCVcIj5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwic2lkZU1lbnVSb3dHcm91cHNcIlxyXG4gICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cImN1cnJlbnRPcGVuZWRTaWRlTWVudWUgPT0gJ2ZpbHRycycgJiYgc2lkZU1lbnVWaXNpYmxlXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic2lkZUZpbHRlcnNcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXZcclxuICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJmb290ZXJSb3dIZWlnaHRcIlxyXG4gICAgICBjbGFzcz1cImJvcmRlci10b3BcIlxyXG4gICAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cImZvb3RlclJvd0JhY2tncm91bmRDb2xvclwiXHJcbiAgICA+XHJcbiAgICAgIDwhLS0gUm93czogPHNwYW4gY2xhc3M9XCJmdy01MDAgbXMtMVwiPnt7IGRhdGFTZXQubGVuZ3RoIH19PC9zcGFuPiAtLT5cclxuXHJcbiAgICAgIDxkaXZcclxuICAgICAgICBjbGFzcz1cInBhZ2luYXRpb24tY29udGFpbmVyXCJcclxuICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cImZvb3RlclJvd0hlaWdodFwiXHJcbiAgICAgICAgW3N0eWxlLnBhZGRpbmcucHhdPVwiZm9vdGVyUGFkZGluZ1wiXHJcbiAgICAgID5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicGFnZS1zaXplXCI+XHJcbiAgICAgICAgICA8c2VsZWN0XHJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwicGFnaW5hdGlvbkNvbmZpZy5saW1pdFwiXHJcbiAgICAgICAgICAgIChjaGFuZ2UpPVwib25QYWdlU2l6ZUNoYW5nZSgpXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgc2l6ZSBvZiBwYWdlU2l6ZU9wdGlvbnNcIiBbdmFsdWVdPVwic2l6ZVwiPlxyXG4gICAgICAgICAgICAgIHt7IHNpemUgfX1cclxuICAgICAgICAgICAgPC9vcHRpb24+XHJcbiAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2VwYXJhdG9yXCI+IHBlciBwYWdlIDwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInBhZ2UtaW5mb1wiPlxyXG4gICAgICAgICAgUmVzdWx0czpcclxuICAgICAgICAgIHt7IChwYWdpbmF0aW9uQ29uZmlnLnBhZ2UgLSAxKSAqIHBhZ2luYXRpb25Db25maWcubGltaXQgKyAxIH19LXt7XHJcbiAgICAgICAgICAgIHBhZ2luYXRpb25Db25maWcucGFnZSAqIHBhZ2luYXRpb25Db25maWcubGltaXQgPFxyXG4gICAgICAgICAgICBwYWdpbmF0aW9uQ29uZmlnLnRvdGFsUmVzdWx0c1xyXG4gICAgICAgICAgICAgID8gcGFnaW5hdGlvbkNvbmZpZy5wYWdlICogcGFnaW5hdGlvbkNvbmZpZy5saW1pdFxyXG4gICAgICAgICAgICAgIDogcGFnaW5hdGlvbkNvbmZpZy50b3RhbFJlc3VsdHNcclxuICAgICAgICAgIH19XHJcbiAgICAgICAgICBvZlxyXG4gICAgICAgICAge3sgcGFnaW5hdGlvbkNvbmZpZy50b3RhbFJlc3VsdHMgfX1cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInBhZ2UtYnV0dG9uc1wiPlxyXG4gICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAoY2xpY2spPVwiZ29Ub1BhZ2UocGFnaW5hdGlvbkNvbmZpZy5wYWdlIC0gMSlcIlxyXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwicGFnaW5hdGlvbkNvbmZpZy5wYWdlID09PSAxXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAg4oC5XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuXHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBwYWdlIG9mIHZpc2libGVQYWdlc1wiPlxyXG4gICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgKm5nSWY9XCJwYWdlICE9PSAnLi4uJ1wiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImdvVG9QYWdlKHBhZ2UpXCJcclxuICAgICAgICAgICAgICBbY2xhc3MuYWN0aXZlXT1cInBhZ2UgPT09IHBhZ2luYXRpb25Db25maWcucGFnZVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICB7eyBwYWdlIH19XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cInBhZ2UgPT09ICcuLi4nXCI+Li4uPC9zcGFuPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAoY2xpY2spPVwiZ29Ub1BhZ2UocGFnaW5hdGlvbkNvbmZpZy5wYWdlICsgMSlcIlxyXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwicGFnaW5hdGlvbkNvbmZpZy5wYWdlID09PSBwYWdpbmF0aW9uQ29uZmlnLnRvdGFsUmVzdWx0c1wiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIOKAulxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG5cclxuPCEtLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0+XHJcbjwhLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tPlxyXG48IS0tIEhlYWRlciBDZWxsIFRlbXBsYXRlIC0tPlxyXG48IS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAtLT5cclxuPCEtLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0+XHJcblxyXG48bmctdGVtcGxhdGVcclxuICAjaGVhZGVyQ2VsbFxyXG4gIGxldC1jb2xcclxuICBsZXQtcGlubmVkUmlnaHQ9XCJwaW5uZWRSaWdodFwiXHJcbiAgbGV0LWk9XCJpbmRleFwiXHJcbiAgbGV0LXNlY3Rpb25zPVwic2VjdGlvblwiXHJcbiAgbGV0LWNhbGxlZEZyb21OZXN0ZWRQbGFjZWhvbGRlcj1cImNhbGxlZEZyb21OZXN0ZWRQbGFjZWhvbGRlclwiXHJcbj5cclxuICA8ZGl2PlxyXG4gICAgPCEtLSBHcm91cCBIZWFkZXIgLS0+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sLmNoaWxkcmVuPy5sZW5ndGggPiAwOyBlbHNlIGZsYXRIZWFkZXJcIj5cclxuICAgICAgPGRpdiBjZGtEcm9wbGlzdEdyb3VwIGNsYXNzPVwiZ3JvdXAtY29sdW1uLXdyYXBwZXJcIj5cclxuICAgICAgICA8IS0tIFBhcmVudCBIZWFkZXIgLS0+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgKm5nSWY9XCJzaG91bGRUaGVHcm91cEhlYWRlclNob3coY29sKVwiXHJcbiAgICAgICAgICBjbGFzcz1cImhlYWRlci1jZWxsIGdyb3VwLWhlYWRlclwiXHJcbiAgICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cImhlYWRlclJvd0hlaWdodFwiXHJcbiAgICAgICAgICBbc3R5bGUubWluLWhlaWdodC5weF09XCJoZWFkZXJSb3dIZWlnaHRcIlxyXG4gICAgICAgICAgW3N0eWxlLm1heC1oZWlnaHQucHhdPVwiaGVhZGVyUm93SGVpZ2h0XCJcclxuICAgICAgICAgIFtjbGFzcy5ib3JkZXItcmlnaHRdPVwic2hvd1ZlcnRpY2FsQm9yZGVyXCJcclxuICAgICAgICAgIFtzdHlsZS5ncmlkQ29sdW1uXT1cIidzcGFuICcgKyBjb2wuY2hpbGRyZW4ubGVuZ3RoXCJcclxuICAgICAgICAgIFtzdHlsZS5mb250V2VpZ2h0XT1cImhlYWRlckZvbnRXZWlnaHRcIlxyXG4gICAgICAgICAgW2NsYXNzLmZsZXgtcm93LXJldmVyc2VdPVwicGlubmVkUmlnaHRcIlxyXG4gICAgICAgICAgW2NsYXNzLmp1c3RpZnktY29udGVudC1lbmRdPVwicGlubmVkUmlnaHRcIlxyXG4gICAgICAgICAgc3R5bGU9XCJncmlkLXJvdzogMVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzcz1cImdyb3VwLWhlYWRlci1jb250ZW50XCJcclxuICAgICAgICAgICAgW3RpdGxlXT1cImNvbC5oZWFkZXJcIlxyXG4gICAgICAgICAgICBbY2xhc3MubXMtMl09XCJwaW5uZWRSaWdodFwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIHt7IGNvbC5oZWFkZXIgfX1cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzcz1cInJlc2l6ZS1oYW5kbGVcIlxyXG4gICAgICAgICAgICAoZGJsY2xpY2spPVwiYXV0b3NpemVDb2x1bW4oY29sLmNoaWxkcmVuKVwiXHJcbiAgICAgICAgICAgIChtb3VzZWRvd24pPVwiXHJcbiAgICAgICAgICAgICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyBvblJlc2l6ZUdyb3VwKCRldmVudCwgY29sLCBwaW5uZWRSaWdodClcclxuICAgICAgICAgICAgXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxyXG4gICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvcmVzaXplLWhhbmRsZS5zdmcnXHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxyXG4gICAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDwhLS0gQ2hpbGQgSGVhZGVycyBhbmQgRmlsdGVycyAtLT5cclxuXHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgY2xhc3M9XCJkLWZsZXhcIlxyXG4gICAgICAgICAgY2RrRHJvcExpc3RcclxuICAgICAgICAgIGNka0Ryb3BMaXN0T3JpZW50YXRpb249XCJob3Jpem9udGFsXCJcclxuICAgICAgICAgIFtjZGtEcm9wTGlzdERhdGFdPVwiY29sLmNoaWxkcmVuXCJcclxuICAgICAgICAgIChjZGtEcm9wTGlzdFNvcnRlZCk9XCJvbkNoaWxkRHJvcGxpc3RTb3J0ZWQoJGV2ZW50LCBzZWN0aW9ucylcIlxyXG4gICAgICAgICAgKGNka0Ryb3BMaXN0RHJvcHBlZCk9XCJvbkNoaWxkRHJvcGxpc3REcm9wZWQoJGV2ZW50KVwiXHJcbiAgICAgICAgICBbY2RrRHJvcExpc3RTb3J0aW5nRGlzYWJsZWRdPVwiZmFsc2VcIlxyXG4gICAgICAgICAgW2Nka0Ryb3BMaXN0Q29ubmVjdGVkVG9dPVwiXHJcbiAgICAgICAgICAgIHNob3dSb3dzR3JvdXBpbmcgPyBbJ3Jvd3MtZ3JvdXBpbmctdG9wLWNvbnRhaW5lciddIDogW11cclxuICAgICAgICAgIFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjZGtEcmFnXHJcbiAgICAgICAgICAgIFtjZGtEcmFnRGF0YV09XCJjaGlsZFwiXHJcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBjaGlsZCBvZiBjb2wuY2hpbGRyZW47IGxldCBpID0gaW5kZXhcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8IS0tIENoaWxkIEhlYWRlciAtLT5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNoaWxkLmlzX3Zpc2libGUgJiYgIWNoaWxkWydpc1Jvd0dyb3VwZWQnXVwiPlxyXG4gICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgIGNka0RyYWdIYW5kbGVcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiaGVhZGVyLWNlbGwgb25lLXJvdy1oZWFkZXItY2VsbHMgY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgW2NsYXNzLmJvcmRlci1yaWdodF09XCJzaG93VmVydGljYWxCb3JkZXJcIlxyXG4gICAgICAgICAgICAgICAgW2F0dHIuZmllbGRdPVwiY2hpbGQuZmllbGRcIlxyXG4gICAgICAgICAgICAgICAgW3N0eWxlLndpZHRoLnB4XT1cImNoaWxkLndpZHRoXCJcclxuICAgICAgICAgICAgICAgIFtzdHlsZS5taW4td2lkdGgucHhdPVwiY2hpbGQud2lkdGhcIlxyXG4gICAgICAgICAgICAgICAgW3N0eWxlLm1pbi1oZWlnaHQucHhdPVwiaGVhZGVyUm93SGVpZ2h0XCJcclxuICAgICAgICAgICAgICAgIFtzdHlsZS5tYXgtaGVpZ2h0LnB4XT1cImhlYWRlclJvd0hlaWdodFwiXHJcbiAgICAgICAgICAgICAgICBbc3R5bGUuZm9udFdlaWdodF09XCJoZWFkZXJGb250V2VpZ2h0XCJcclxuICAgICAgICAgICAgICAgIHN0eWxlPVwiZ3JpZC1yb3c6IDJcIlxyXG4gICAgICAgICAgICAgICAgW2NsYXNzLmZpbHRlci1hcHBsaWVkLW9uLXRleHRdPVwiaXNGaWx0ZXJBcHBsaWVkT25Db2x1bW4oY2hpbGQpXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGgtMTAwIGFsaWduLWl0ZW1zLWNlbnRlciB3LTEwMFwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXIgdy0xMDBcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5mbGV4LXJvdy1yZXZlcnNlXT1cInBpbm5lZFJpZ2h0XCJcclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGV4dC1lbGxpcHNpcyBoLTEwMCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIHctMTAwXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCJjb2wuaGVhZGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy53LTEwMF09XCJwaW5uZWRSaWdodFwiXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRleHQtZWxsaXBzaXMgaC0xMDBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZWRpdGFibGUtaGVhZGVyXT1cImNoaWxkPy5pc19lZGl0YWJsZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVuVGhyZWVEb3RzTWVudSgkZXZlbnQsIGNoaWxkKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVuRmlsdGVyb25UaHJlZURvdHNDbGljayhjaGlsZClcclxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3sgY2hpbGQuaGVhZGVyIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwb3NpdGlvbi1yZWxhdGl2ZSBkLWZsZXhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmZsZXgtcm93LXJldmVyc2VdPVwicGlubmVkUmlnaHRcIlxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLm1lLTJdPVwicGlubmVkUmlnaHRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNoaWxkLnBpbm5lZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL3Bpbi1ibHVlLnN2ZydcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0aHJlZS1kb3RzIHAtMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVuVGhyZWVEb3RzTWVudSgkZXZlbnQsIGNoaWxkKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBpc1RocmVlRG90c0ZpbHRlck9wZW4gPSBmYWxzZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cImN1cnNvcjogcG9pbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RhdGEtZ3JpZC9pY29ucy90aHJlZS1kb3RzLXZlcnRpY2FsLnN2ZydcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICA8IS0tIE9ubHkgc2hvdyBtZW51IGlmIHRoaXMgY29sdW1uIGlzIGFjdGl2ZSAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwb3NpdGlvbi1hYnNvbHV0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiYWN0aXZlQ29sID09PSBjaGlsZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwidG9wOiAtNTAlOyB6LWluZGV4OiAyMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS5sZWZ0LnB4XT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC0oIWNoaWxkPy5waW5uZWQgPyBjZW50ZXJQaW5uZWRIZWFkZXIuc2Nyb2xsTGVmdCA6IDApXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS50b3AucHhdPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaXNUaHJlZURvdHNGaWx0ZXJPcGVuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHNob3dGaWx0ZXJSb3cgfHwgc2hvd0NvbHVtbnNHcm91cGluZ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGhlYWRlclJvd0hlaWdodCAqIDIgLSAxMFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGhlYWRlclJvd0hlaWdodCAtIDEwXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IDBcclxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5NZW51O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dDoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2w6IGNoaWxkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc05lc3RlZFRhYmxlOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbjogc2VjdGlvbnNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicmVzaXplLWhhbmRsZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChkYmxjbGljayk9XCJhdXRvc2l6ZUNvbHVtbihjaGlsZClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAobW91c2Vkb3duKT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBvblJlc2l6ZUNvbHVtbigkZXZlbnQsIGNoaWxkKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkYXRhLWdyaWQvaWNvbnMvcmVzaXplLWhhbmRsZS5zdmcnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgIDwhLS0gRmlsdGVyIENlbGwgLS0+XHJcbiAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJzaG93RmlsdGVyUm93XCJcclxuICAgICAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwiaGVhZGVyQmFja2dyb3VuZENvbG9yXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiaGVhZGVyLWNlbGwgZmlsdGVyLWNlbGxcIlxyXG4gICAgICAgICAgICAgICAgW2NsYXNzLmJvcmRlci1yaWdodF09XCJzaG93VmVydGljYWxCb3JkZXJcIlxyXG4gICAgICAgICAgICAgICAgW2F0dHIuZmllbGRdPVwiY2hpbGQuZmllbGRcIlxyXG4gICAgICAgICAgICAgICAgW3N0eWxlLndpZHRoLnB4XT1cImNoaWxkLndpZHRoXCJcclxuICAgICAgICAgICAgICAgIFtzdHlsZS5taW4td2lkdGgucHhdPVwiY2hpbGQud2lkdGhcIlxyXG4gICAgICAgICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJoZWFkZXJSb3dIZWlnaHRcIlxyXG4gICAgICAgICAgICAgICAgW3N0eWxlLm1pbi1oZWlnaHQucHhdPVwiaGVhZGVyUm93SGVpZ2h0XCJcclxuICAgICAgICAgICAgICAgIFtzdHlsZS5tYXgtaGVpZ2h0LnB4XT1cImhlYWRlclJvd0hlaWdodFwiXHJcbiAgICAgICAgICAgICAgICBbY2xhc3MuYm9yZGVyLXJpZ2h0XT1cInNob3dWZXJ0aWNhbEJvcmRlclwiXHJcbiAgICAgICAgICAgICAgICBzdHlsZT1cImdyaWQtcm93OiAzXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaGVhZGVyLWNlbGwgZmlsdGVyLWNlbGxcIlxyXG4gICAgICAgICAgICAgICAgICBbYXR0ci5maWVsZF09XCJjb2wuZmllbGRcIlxyXG4gICAgICAgICAgICAgICAgICBbc3R5bGUud2lkdGgucHhdPVwiY29sLndpZHRoXCJcclxuICAgICAgICAgICAgICAgICAgW3N0eWxlLm1pbi13aWR0aC5weF09XCJjb2wud2lkdGhcIlxyXG4gICAgICAgICAgICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cImhlYWRlclJvd0hlaWdodFwiXHJcbiAgICAgICAgICAgICAgICAgIFtzdHlsZS5taW4taGVpZ2h0LnB4XT1cImhlYWRlclJvd0hlaWdodFwiXHJcbiAgICAgICAgICAgICAgICAgIFtzdHlsZS5tYXgtaGVpZ2h0LnB4XT1cImhlYWRlclJvd0hlaWdodFwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21cIlxyXG4gICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiRmlsdGVyXCJcclxuICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNoaWxkLmZpbHRlclZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvbkZpbHRlckNoYW5nZShjaGlsZClcIlxyXG4gICAgICAgICAgICAgICAgICAgIChwYXN0ZSk9XCJvbkZpbHRlckNoYW5nZShjaGlsZCk7IGFwcGx5RHJvcGRvd25GaWx0ZXIoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgY2hpbGQ/LnR5cGUgPT0gJ2Ryb3Bkb3duJyB8fCBjaGlsZD8udHlwZSA9PSAnaW1hZ2UnXHJcbiAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZGlzYWJsZWQtc2VhcmNoLWlucHV0XT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgY2hpbGQ/LnR5cGUgPT0gJ2Ryb3Bkb3duJyB8fCBjaGlsZD8udHlwZSA9PSAnaW1hZ2UnXHJcbiAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICBvcGVuRmlsdGVyRnJvbURpc2FibGVkU2VhcmNoZWRJbnB1dChjaGlsZClcclxuICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cImFwcGx5RHJvcGRvd25GaWx0ZXIoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKG1vdXNlZG93bik9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxyXG4gICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmlsdGVyLWljb24td3JhcHBlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgb3BlbkZpbHRlcihjaGlsZClcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5maWx0ZXItYXBwbGllZF09XCJpc0ZpbHRlckFwcGxpZWRPbkNvbHVtbihjaGlsZClcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5wZS1ub25lXT1cImNoaWxkPy50eXBlID09ICdpbWFnZSdcIlxyXG4gICAgICAgICAgICAgICAgICAgID48c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvZmlsdGVyLTIuc3ZnJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJpc0ZpbHRlckFwcGxpZWRPbkNvbHVtbihjaGlsZClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDdweDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiA3cHg7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJveC1zaGFkb3c6IDBweCAwcHggM3B4ICM3NDg2ZmY7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYigwIDE2MyAyMzMpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJpZ2h0OiA0cHg7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvcDogMTJweDtcclxuICAgICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInJvdW5kZWQtY2lyY2xlIGQtYmxvY2tcIlxyXG4gICAgICAgICAgICAgICAgICAgID48L3NwYW5cclxuICAgICAgICAgICAgICAgICAgPjwvc3Bhbj5cclxuXHJcbiAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInBvc2l0aW9uLWFic29sdXRlIGZpbHRlci1yb3ctZmlsdGVyLXdyYXBwZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiYWN0aXZlRmlsdGVyQ2VsbD8uZmllbGQgPT0gY2hpbGQ/LmZpZWxkXCJcclxuICAgICAgICAgICAgICAgICAgICBzdHlsZT1cInRvcDogMTAwJTsgcmlnaHQ6IDA7IHotaW5kZXg6IDk5XCJcclxuICAgICAgICAgICAgICAgICAgICBbc3R5bGUubGVmdC5weF09XCJcclxuICAgICAgICAgICAgICAgICAgICAgIGNoaWxkPy5waW5uZWQgPyAwIDogLWNlbnRlclBpbm5lZEhlYWRlci5zY3JvbGxMZWZ0XHJcbiAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiZmlsdGVyTWVudTsgY29udGV4dDogeyBjb2w6IGNoaWxkIH1cIlxyXG4gICAgICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBjZGtEcmFnUHJldmlld1xyXG4gICAgICAgICAgICAgID48ZGl2IGNsYXNzPVwicC0yIGJvcmRlciBkLWZsZXggZ2FwLTJcIj5cclxuICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgICAgICAgICAhZHJhZ2dpbmdJbkdyb3VwQXJlYSB8fFxyXG4gICAgICAgICAgICAgICAgICAgIChjaGlsZC5pc19ncm91cGFibGUgJiYgZHJhZ2dpbmdJbkdyb3VwQXJlYSlcclxuICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvYXJyb3dzLW1vdmUuc3ZnJ1xyXG4gICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgICAgICAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImRyYWdnaW5nSW5Hcm91cEFyZWEgJiYgIWNoaWxkLmlzX2dyb3VwYWJsZVwiPlxyXG4gICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9iYW4uc3ZnJ1xyXG4gICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgICAgICAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdj57eyBjaGlsZC5oZWFkZXIgfX08L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIGNka0RyYWdQbGFjZWhvbGRlcj5cclxuICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIWRyYWdnaW5nSW5Hcm91cEFyZWFcIiBjbGFzcz1cInBvc2l0aW9uLXJlbGF0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXHJcbiAgICAgICAgICAgICAgICAgIGNoaWxkSGVhZGVyUGxhY2Vob2xkZXI7XHJcbiAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHtcclxuICAgICAgICAgICAgICAgICAgICAkaW1wbGljaXQ6IGNoaWxkLFxyXG4gICAgICAgICAgICAgICAgICAgIGluZGV4OiBpLFxyXG4gICAgICAgICAgICAgICAgICAgIHNlY3Rpb25zOiBzZWN0aW9ucyxcclxuICAgICAgICAgICAgICAgICAgICBjYWxsZWRGcm9tTmVzdGVkUGxhY2Vob2xkZXI6IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICA+PC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJkcmFnZ2luZ0luR3JvdXBBcmVhICYmIGNoaWxkPy5pc19ncm91cGFibGVcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggZ2FwLTIgbXMtMlwiXHJcbiAgICAgICAgICAgICAgICBzdHlsZT1cIm9wYWNpdHk6IDAuNlwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxyXG4gICAgICAgICAgICAgICAgICAgIHRvcEdyb3VwaW5nUm93UGxhY2Vob2xkZXI7XHJcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dDoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgJGltcGxpY2l0OiBjaGlsZCxcclxuICAgICAgICAgICAgICAgICAgICAgIHNob3dDaGV2cm9uOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgICAgIHBpbm5lZFJpZ2h0OiBwaW5uZWRSaWdodCxcclxuICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb25zOiBzZWN0aW9ucyxcclxuICAgICAgICAgICAgICAgICAgICAgIGluZGV4OiBpXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgPCEtLSBGbGF0IEhlYWRlciB8fCBTaW5nbGUgSGVhZGVyIENlbGwtLT5cclxuICAgIDxuZy10ZW1wbGF0ZSAjZmxhdEhlYWRlcj5cclxuICAgICAgPGRpdlxyXG4gICAgICAgIGNsYXNzPVwiZ3JvdXAtY29sdW1uLXdyYXBwZXJcIlxyXG4gICAgICAgICpuZ0lmPVwiY29sLmlzX3Zpc2libGUgJiYgIWNvbFsnaXNSb3dHcm91cGVkJ11cIlxyXG4gICAgICA+XHJcbiAgICAgICAgPCEtLSBGdWxsLWhlaWdodCBIZWFkZXIgQ2VsbCAoc3BhbnMgMiByb3dzIHZpc3VhbGx5KSAtLT5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICBjbGFzcz1cImhlYWRlci1jZWxsIG9uZS1yb3ctaGVhZGVyLWNlbGxzXCJcclxuICAgICAgICAgIFthdHRyLmZpZWxkXT1cImNvbC5maWVsZFwiXHJcbiAgICAgICAgICBbc3R5bGUud2lkdGgucHhdPVwiY29sLndpZHRoXCJcclxuICAgICAgICAgIFtzdHlsZS5taW4td2lkdGgucHhdPVwiY29sLndpZHRoXCJcclxuICAgICAgICAgIFtjbGFzcy5ib3JkZXItcmlnaHRdPVwic2hvd1ZlcnRpY2FsQm9yZGVyXCJcclxuICAgICAgICAgIFtzdHlsZS5taW4taGVpZ2h0LnB4XT1cIlxyXG4gICAgICAgICAgICBzaG93Q29sdW1uc0dyb3VwaW5nID8gaGVhZGVyUm93SGVpZ2h0ICogMiA6IGhlYWRlclJvd0hlaWdodFxyXG4gICAgICAgICAgXCJcclxuICAgICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwiXHJcbiAgICAgICAgICAgIHNob3dDb2x1bW5zR3JvdXBpbmcgPyBoZWFkZXJSb3dIZWlnaHQgKiAyIDogaGVhZGVyUm93SGVpZ2h0XHJcbiAgICAgICAgICBcIlxyXG4gICAgICAgICAgW3N0eWxlLmZvbnRXZWlnaHRdPVwiaGVhZGVyRm9udFdlaWdodFwiXHJcbiAgICAgICAgICBzdHlsZT1cImdyaWQtcm93OiAxIC8gc3BhbiAyXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGgtMTAwIGFsaWduLWl0ZW1zLWNlbnRlciB3LTEwMFwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiB3LTEwMCBhbGlnbi1pdGVtcy1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgIFtjbGFzcy5mbGV4LXJvdy1yZXZlcnNlXT1cInBpbm5lZFJpZ2h0XCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwidGV4dC1lbGxpcHNpcyBoLTEwMCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIHctMTAwXCJcclxuICAgICAgICAgICAgICAgIFt0aXRsZV09XCJjb2wuaGVhZGVyXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGV4dC1lbGxpcHNpcyBoLTEwMCBjdXJzb3ItcG9pbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgIFtjbGFzcy5lZGl0YWJsZS1oZWFkZXJdPVwiY29sPy5pc19lZGl0YWJsZVwiXHJcbiAgICAgICAgICAgICAgICAgIFtjbGFzcy5maWx0ZXItYXBwbGllZC1vbi10ZXh0XT1cImlzRmlsdGVyQXBwbGllZE9uQ29sdW1uKGNvbClcIlxyXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgb3BlblRocmVlRG90c01lbnUoJGV2ZW50LCBjb2wpO1xyXG4gICAgICAgICAgICAgICAgICAgIG9wZW5GaWx0ZXJvblRocmVlRG90c0NsaWNrKGNvbClcclxuICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAge3sgY29sLmhlYWRlciB9fVxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwicG9zaXRpb24tcmVsYXRpdmUgZC1mbGV4XCJcclxuICAgICAgICAgICAgICAgIFtjbGFzcy5mbGV4LXJvdy1yZXZlcnNlXT1cInBpbm5lZFJpZ2h0XCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgIFtjbGFzcy5tZS0yXT1cInBpbm5lZFJpZ2h0XCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjb2w/LnBpbm5lZFwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL3Bpbi1ibHVlLnN2ZydcclxuICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgW2NsYXNzLm1lLTJdPVwiY29sLm9yZGVyX2J5XCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzb3J0aW5nQ29uZmlnPy5maWVsZCA9PSBjb2wuZmllbGRcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8IS0tIEFzY2VuZGluZyBTb3J0IEljb24gLS0+XHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzb3J0aW5nQ29uZmlnPy5vcmRlcl9ieSA9PSAnYXNjJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL3NvcnQtYXNjLnN2ZydcclxuICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBtdC0xIGN1cnNvci1wb2ludGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic29ydERlc2MoY29sKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJzb3J0aW5nQ29uZmlnPy5vcmRlcl9ieSA9PT0gJ2FzYydcIlxyXG4gICAgICAgICAgICAgICAgICA+PC9zcGFuPlxyXG5cclxuICAgICAgICAgICAgICAgICAgPCEtLSBEZXNjZW5kaW5nIFNvcnQgSWNvbiAtLT5cclxuICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInNvcnRpbmdDb25maWc/Lm9yZGVyX2J5ID09ICdkZXNjJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL3NvcnQtZGVzYy5zdmcnXHJcbiAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgbXQtMSBjdXJzb3ItcG9pbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNvcnRBc2MoY29sKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJzb3J0aW5nQ29uZmlnPy5vcmRlcl9ieSA9PT0gJ2Rlc2MnXCJcclxuICAgICAgICAgICAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cInRocmVlLWRvdHMgcC0xXCJcclxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxyXG4gICAgICAgICAgICAgICAgICAgIG9wZW5UaHJlZURvdHNNZW51KCRldmVudCwgY29sKTtcclxuICAgICAgICAgICAgICAgICAgICBpc1RocmVlRG90c0ZpbHRlck9wZW4gPSBmYWxzZVxyXG4gICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICBzdHlsZT1cImN1cnNvcjogcG9pbnRlclwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggK1xyXG4gICAgICAgICAgICAgICAgICAgICAgJ2RhdGEtZ3JpZC9pY29ucy90aHJlZS1kb3RzLXZlcnRpY2FsLnN2ZydcclxuICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICA8IS0tIE9ubHkgc2hvdyBtZW51IGlmIHRoaXMgY29sdW1uIGlzIGFjdGl2ZSAtLT5cclxuICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwb3NpdGlvbi1hYnNvbHV0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiYWN0aXZlQ29sID09PSBjb2xcIlxyXG4gICAgICAgICAgICAgICAgICBzdHlsZT1cInRvcDogLTUwJTsgei1pbmRleDogMjFcIlxyXG4gICAgICAgICAgICAgICAgICBbc3R5bGUubGVmdC5weF09XCJcclxuICAgICAgICAgICAgICAgICAgICAtKCFjb2w/LnBpbm5lZCA/IGNlbnRlclBpbm5lZEhlYWRlci5zY3JvbGxMZWZ0IDogMClcclxuICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgW3N0eWxlLnRvcC5weF09XCJcclxuICAgICAgICAgICAgICAgICAgICBpc1RocmVlRG90c0ZpbHRlck9wZW5cclxuICAgICAgICAgICAgICAgICAgICAgID8gc2hvd0ZpbHRlclJvdyB8fCBzaG93Q29sdW1uc0dyb3VwaW5nXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID8gaGVhZGVyUm93SGVpZ2h0ICogMiAtIDEwXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDogaGVhZGVyUm93SGVpZ2h0IC0gMTBcclxuICAgICAgICAgICAgICAgICAgICAgIDogMFxyXG4gICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcclxuICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbk1lbnU7XHJcbiAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbDogY29sLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpc05lc3RlZFRhYmxlOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbjogc2VjdGlvbnNcclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwicmVzaXplLWhhbmRsZVwiXHJcbiAgICAgICAgICAgICAgICAgIFtjbGFzcy53LTEwMF09XCJjb2wucGlubmVkID09ICdyaWdodCdcIlxyXG4gICAgICAgICAgICAgICAgICAoZGJsY2xpY2spPVwiYXV0b3NpemVDb2x1bW4oY29sKVwiXHJcbiAgICAgICAgICAgICAgICAgIChtb3VzZWRvd24pPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyBvblJlc2l6ZUNvbHVtbigkZXZlbnQsIGNvbClcclxuICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvcmVzaXplLWhhbmRsZS5zdmcnXHJcbiAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDwhLS0gRmlsdGVyIENlbGwgLS0+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgKm5nSWY9XCJzaG93RmlsdGVyUm93XCJcclxuICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwiaGVhZGVyQmFja2dyb3VuZENvbG9yXCJcclxuICAgICAgICAgIGNsYXNzPVwiaGVhZGVyLWNlbGwgZmlsdGVyLWNlbGxcIlxyXG4gICAgICAgICAgW2NsYXNzLmJvcmRlci1yaWdodF09XCJzaG93VmVydGljYWxCb3JkZXJcIlxyXG4gICAgICAgICAgW2F0dHIuZmllbGRdPVwiY29sLmZpZWxkXCJcclxuICAgICAgICAgIFtzdHlsZS53aWR0aC5weF09XCJjb2wud2lkdGhcIlxyXG4gICAgICAgICAgW3N0eWxlLm1pbi13aWR0aC5weF09XCJjb2wud2lkdGhcIlxyXG4gICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJoZWFkZXJSb3dIZWlnaHRcIlxyXG4gICAgICAgICAgW3N0eWxlLm1pbi1oZWlnaHQucHhdPVwiaGVhZGVyUm93SGVpZ2h0XCJcclxuICAgICAgICAgIFtzdHlsZS5tYXgtaGVpZ2h0LnB4XT1cImhlYWRlclJvd0hlaWdodFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtXCJcclxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJGaWx0ZXJcIlxyXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNvbC5maWx0ZXJWYWx1ZVwiXHJcbiAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uRmlsdGVyQ2hhbmdlKGNvbClcIlxyXG4gICAgICAgICAgICBbcmVhZG9ubHldPVwiY29sPy50eXBlID09ICdkcm9wZG93bicgfHwgY29sPy50eXBlID09ICdpbWFnZSdcIlxyXG4gICAgICAgICAgICBbY2xhc3MuZGlzYWJsZWQtc2VhcmNoLWlucHV0XT1cIlxyXG4gICAgICAgICAgICAgIGNvbD8udHlwZSA9PSAnZHJvcGRvd24nIHx8IGNvbD8udHlwZSA9PSAnaW1hZ2UnXHJcbiAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgIChwYXN0ZSk9XCJvblBhc3RlSW5GaWx0ZXJSb3dTZWFyY2goJGV2ZW50LCBjb2wpXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cIlxyXG4gICAgICAgICAgICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgb3BlbkZpbHRlckZyb21EaXNhYmxlZFNlYXJjaGVkSW5wdXQoY29sKVxyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJhcHBseURyb3Bkb3duRmlsdGVyKClcIlxyXG4gICAgICAgICAgICAobW91c2Vkb3duKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXHJcbiAgICAgICAgICAvPlxyXG4gICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgY2xhc3M9XCJmaWx0ZXItaWNvbi13cmFwcGVyXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgb3BlbkZpbHRlcihjb2wpXCJcclxuICAgICAgICAgICAgW2NsYXNzLmZpbHRlci1hcHBsaWVkXT1cImlzRmlsdGVyQXBwbGllZE9uQ29sdW1uKGNvbClcIlxyXG4gICAgICAgICAgICBbY2xhc3MucGUtbm9uZV09XCJjb2w/LnR5cGUgPT0gJ2ltYWdlJ1wiXHJcbiAgICAgICAgICAgID48c3BhblxyXG4gICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvZmlsdGVyLTIuc3ZnJ1wiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAqbmdJZj1cImlzRmlsdGVyQXBwbGllZE9uQ29sdW1uKGNvbClcIlxyXG4gICAgICAgICAgICAgIHN0eWxlPVwiXHJcbiAgICAgICAgICAgICAgICB3aWR0aDogN3B4O1xyXG4gICAgICAgICAgICAgICAgaGVpZ2h0OiA3cHg7XHJcbiAgICAgICAgICAgICAgICBib3gtc2hhZG93OiAwcHggMHB4IDNweCAjNzQ4NmZmO1xyXG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDAgMTYzIDIzMyk7XHJcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgICAgICAgICAgICByaWdodDogNHB4O1xyXG4gICAgICAgICAgICAgICAgdG9wOiAxMnB4O1xyXG4gICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJyb3VuZGVkLWNpcmNsZSBkLWJsb2NrXCJcclxuICAgICAgICAgICAgPjwvc3BhblxyXG4gICAgICAgICAgPjwvc3Bhbj5cclxuXHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwicG9zaXRpb24tYWJzb2x1dGUgZmlsdGVyLXJvdy1maWx0ZXItd3JhcHBlclwiXHJcbiAgICAgICAgICAgICpuZ0lmPVwiYWN0aXZlRmlsdGVyQ2VsbCA9PT0gY29sXCJcclxuICAgICAgICAgICAgc3R5bGU9XCJ0b3A6IDEwMCU7IHJpZ2h0OiAwOyB6LWluZGV4OiA5OVwiXHJcbiAgICAgICAgICAgIFtzdHlsZS5sZWZ0LnB4XT1cImNvbD8ucGlubmVkID8gMCA6IC1jZW50ZXJQaW5uZWRIZWFkZXIuc2Nyb2xsTGVmdFwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImZpbHRlck1lbnU7IGNvbnRleHQ6IHsgY29sOiBjb2wgfVwiXHJcbiAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48IS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tPlxyXG48IS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tPlxyXG48IS0tIEJvZHkgQ2VsbCBUZW1wbGF0ZSAtLT5cclxuPCEtLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAtLT5cclxuPCEtLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAtLT5cclxuXHJcbjxuZy10ZW1wbGF0ZVxyXG4gICNyb3dDZWxsXHJcbiAgbGV0LXJvd1xyXG4gIGxldC1jb2x1bW5zPVwiY29sdW1uc1wiXHJcbiAgbGV0LWlzRXZlbj1cImlzRXZlblwiXHJcbiAgbGV0LWlzT2RkPVwiaXNPZGRcIlxyXG4gIGxldC1pc0xlZnRTZWN0aW9uPVwiaXNMZWZ0XCJcclxuICBsZXQtc2VjdGlvbj1cInNlY3Rpb25cIlxyXG4gIGxldC1yb3dJbmRleD1cInJvd0luZGV4XCJcclxuICBsZXQtaXNUb3RhbFJvdz1cImlzVG90YWxSb3dcIlxyXG4+XHJcbiAgPCEtLSBDaGVjayBpZiByb3cgaXMgYSBncm91cCAtLT5cclxuICA8bmctY29udGFpbmVyXHJcbiAgICAqbmdUZW1wbGF0ZU91dGxldD1cImdyb3VwUm93VGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiByb3csIGRlcHRoOiAwIH1cIlxyXG4gID48L25nLWNvbnRhaW5lcj5cclxuICA8bmctdGVtcGxhdGUgI2dyb3VwUm93VGVtcGxhdGUgbGV0LXJvdyBsZXQtZGVwdGg9XCJkZXB0aFwiPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInJvdy5pc0dyb3VwOyBlbHNlIHJlZ3VsYXJSb3dcIj5cclxuICAgICAgPCEtLSBHcm91cCBIZWFkZXIgLS0+XHJcbiAgICAgIDxkaXZcclxuICAgICAgICBjbGFzcz1cImdyb3VwLWhlYWRlci1yb3cgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJyb3dIZWlnaHRcIlxyXG4gICAgICAgIFtjbGFzcy5ib3JkZXItYmVsb3ddPVwic2VjdGlvbiAhPT0gJ2NlbnRlcidcIlxyXG4gICAgICAgIFtzdHlsZS53aWR0aF09XCJcclxuICAgICAgICAgIHNlY3Rpb24gPT09ICdjZW50ZXInXHJcbiAgICAgICAgICAgID8gKGNlbnRlclNjcm9sbGFibGVCb2R5Py5zY3JvbGxXaWR0aCA/PyAwKSArICdweCdcclxuICAgICAgICAgICAgOiAnMTAwJSdcclxuICAgICAgICBcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgKm5nSWY9XCJzZWN0aW9uID09ICdsZWZ0J1wiXHJcbiAgICAgICAgICBjbGFzcz1cImgtMTAwIGQtZmxleFwiXHJcbiAgICAgICAgICBbc3R5bGUud2lkdGgucHhdPVwibGVmdFBpbm5lZEhlYWRlci5vZmZzZXRXaWR0aCAtIDFcIlxyXG4gICAgICAgICAgW2NsYXNzLnJvdy1zZWxlY3RlZF09XCJyb3dTZWxlY3RlZEluZGV4ZXMuaGFzKHJvdy5fX3ZpcnR1YWxJbmRleClcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgKm5nSWY9XCJzaG93U2VyaWFsTnVtYmVyXCJcclxuICAgICAgICAgICAgc3R5bGU9XCJ3aWR0aDogNTBweFwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBoLTEwMCBib3JkZXItcmlnaHQganVzdGlmeS1jb250ZW50LWVuZCBwZS0yIHMtbm9cIlxyXG4gICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cImNoZWNrYm94ZXNCYWNrZ3JvdW5kQ29sb3JcIlxyXG4gICAgICAgICAgICBbc3R5bGUud2lkdGgucHhdPVwiNTVcIlxyXG4gICAgICAgICAgICBbc3R5bGUuY3Vyc29yXT1cIlxyXG4gICAgICAgICAgICAgICd1cmwoJyArXHJcbiAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArXHJcbiAgICAgICAgICAgICAgJ2RhdGEtZ3JpZC9pY29ucy9hcnJvdy1yaWdodC5zdmcpLCBhdXRvJ1xyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAobW91c2Vkb3duKT1cIm9uUm93TW91c2VEb3duKHJvdy5fX3ZpcnR1YWxJbmRleCwgJGV2ZW50KVwiXHJcbiAgICAgICAgICAgIChtb3VzZW92ZXIpPVwib25Sb3dNb3VzZU92ZXIocm93Ll9fdmlydHVhbEluZGV4LCAkZXZlbnQpXCJcclxuICAgICAgICAgICAgW3N0eWxlLmNvbG9yXT1cImNoZWNrYm94ZXNDb2xvclwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIHt7IGdldFN0YXJ0SW5kZXgoKSArIChyb3cuX192aXJ0dWFsSW5kZXggLSAxKSB8fCBcIlwiIH19XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICpuZ0lmPVwic2hvd0NoZWNrYm94ZXNcIlxyXG4gICAgICAgICAgICBzdHlsZT1cIndpZHRoOiA1MHB4XCJcclxuICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXIgaC0xMDAgYm9yZGVyLXJpZ2h0XCJcclxuICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJjaGVja2JveGVzQmFja2dyb3VuZENvbG9yXCJcclxuICAgICAgICAgICAgW2NsYXNzLnJvdy1zZWxlY3RlZF09XCJyb3dTZWxlY3RlZEluZGV4ZXMuaGFzKHJvdy5fX3ZpcnR1YWxJbmRleClcIlxyXG4gICAgICAgICAgICBbY2xhc3MubGVmdC1zZWxlY3Rpb24tYm9yZGVyXT1cIlxyXG4gICAgICAgICAgICAgIHJvd1NlbGVjdGVkSW5kZXhlcy5oYXMocm93Ll9fdmlydHVhbEluZGV4KVxyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICBbY2xhc3MuZmlyc3Qtcm93LXNlbGVjdGVkXT1cImZpcnN0U2VsZWN0ZWRSb3cgPT09IHJvdy5fX3ZpcnR1YWxJbmRleFwiXHJcbiAgICAgICAgICAgIFtjbGFzcy5sYXN0LXJvdy1zZWxlY3RlZF09XCJsYXN0U2VsZWN0ZWRSb3cgPT09IHJvdy5fX3ZpcnR1YWxJbmRleFwiXHJcbiAgICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCJjaGVja2JveGVzQ29sb3JcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICBzdHlsZT1cIndpZHRoOiAxNnB4OyBoZWlnaHQ6IDE2cHhcIlxyXG4gICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiZ2V0R3JvdXBDaGVja2VkU3RhdGUocm93KSA9PT0gdHJ1ZVwiXHJcbiAgICAgICAgICAgICAgW2luZGV0ZXJtaW5hdGVdPVwiZ2V0R3JvdXBDaGVja2VkU3RhdGUocm93KSA9PT0gdW5kZWZpbmVkXCJcclxuICAgICAgICAgICAgICAoY2hhbmdlKT1cInNlbGVjdEdyb3VwUm93KCRldmVudCwgcm93KVwiXHJcbiAgICAgICAgICAgIC8+XHJcblxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgICpuZ0lmPVwic2VjdGlvbiA9PSAnY2VudGVyJ1wiXHJcbiAgICAgICAgICBbc3R5bGUud2lkdGgucHhdPVwiY2VudGVyUGlubmVkSGVhZGVyLnNjcm9sbFdpZHRoXCJcclxuICAgICAgICAgIFtzdHlsZS5taW5XaWR0aC5weF09XCJjZW50ZXJQaW5uZWRIZWFkZXIuc2Nyb2xsV2lkdGhcIlxyXG4gICAgICAgICAgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIHBzLTIgaC0xMDAgYm9yZGVyLWJlbG93XCJcclxuICAgICAgICAgIFtjbGFzcy5yb3ctc2VsZWN0ZWRdPVwicm93U2VsZWN0ZWRJbmRleGVzLmhhcyhyb3cuX192aXJ0dWFsSW5kZXgpXCJcclxuICAgICAgICAgIFtjbGFzcy5maXJzdC1yb3ctc2VsZWN0ZWRdPVwiZmlyc3RTZWxlY3RlZFJvdyA9PT0gcm93Ll9fdmlydHVhbEluZGV4XCJcclxuICAgICAgICAgIFtjbGFzcy5sYXN0LXJvdy1zZWxlY3RlZF09XCJsYXN0U2VsZWN0ZWRSb3cgPT09IHJvdy5fX3ZpcnR1YWxJbmRleFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWJldHdlZW5cIlxyXG4gICAgICAgICAgICBbc3R5bGUucGFkZGluZ0xlZnQucHhdPVwiZGVwdGggPiAwID8gZGVwdGggKiAzMCA6IDBcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1lLTIgZmlsdGVyLWljb24td3JhcHBlclwiIChjbGljayk9XCJ0b2dnbGVFeHBhbmQocm93KVwiPlxyXG4gICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBhbGlnbi1pdGVtcy1jZW50ZXIgZC1mbGV4XCJcclxuICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXHJcbiAgICAgICAgICAgICAgICAgIHJvdy5pc0V4cGFuZFxyXG4gICAgICAgICAgICAgICAgICAgID8gc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvY2hldnJvbi1kb3duLnN2ZydcclxuICAgICAgICAgICAgICAgICAgICA6IHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2NoZXZyb24tcmlnaHQuc3ZnJ1xyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIDxzdHJvbmcgKGNsaWNrKT1cInRvZ2dsZUV4cGFuZChyb3cpXCIgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiPlxyXG4gICAgICAgICAgICAgIHt7IHJvdy5ncm91cFZhbHVlIH19ICh7eyBjb3VudExlYWZSb3dzKHJvdykgfX0pXHJcbiAgICAgICAgICAgIDwvc3Ryb25nPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgICpuZ0lmPVwic2VjdGlvbiA9PSAncmlnaHQnXCJcclxuICAgICAgICAgIFtzdHlsZS53aWR0aC5weF09XCJyaWdodFBpbm5lZEhlYWRlci5vZmZzZXRXaWR0aFwiXHJcbiAgICAgICAgICBbY2xhc3Mucm93LXNlbGVjdGVkXT1cInJvd1NlbGVjdGVkSW5kZXhlcy5oYXMocm93Ll9fdmlydHVhbEluZGV4KVwiXHJcbiAgICAgICAgICBbY2xhc3MuZmlyc3Qtcm93LXNlbGVjdGVkXT1cImZpcnN0U2VsZWN0ZWRSb3cgPT09IHJvdy5fX3ZpcnR1YWxJbmRleFwiXHJcbiAgICAgICAgICBbY2xhc3MubGFzdC1yb3ctc2VsZWN0ZWRdPVwibGFzdFNlbGVjdGVkUm93ID09PSByb3cuX192aXJ0dWFsSW5kZXhcIlxyXG4gICAgICAgID48L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8IS0tIFJlY3Vyc2l2ZSBDaGlsZHJlbiAtLT5cclxuICAgICAgPGRpdiBjbGFzcz1cImdyb3VwLWNoaWxkcmVuXCIgKm5nSWY9XCJyb3cuaXNFeHBhbmRcIiBbQHNsaWRlVG9nZ2xlXT5cclxuICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAqbmdGb3I9XCJsZXQgY2hpbGQgb2Ygcm93LmNoaWxkcmVuOyBsZXQgaSA9IGluZGV4OyB0cmFja0J5OiB0cmFja0J5SWRcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjaGlsZC5pc0dyb3VwOyBlbHNlIGRhdGFSb3dcIj5cclxuICAgICAgICAgICAgPCEtLSBSZWN1cnNpdmUgY2FsbCBmb3IgbmVzdGVkIGdyb3VwIC0tPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcclxuICAgICAgICAgICAgICAgIGdyb3VwUm93VGVtcGxhdGU7XHJcbiAgICAgICAgICAgICAgICBjb250ZXh0OiB7ICRpbXBsaWNpdDogY2hpbGQsIGRlcHRoOiBkZXB0aCArIDEgfVxyXG4gICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZGF0YVJvdz5cclxuICAgICAgICAgICAgPCEtLSBSZWd1bGFyIGRhdGEgcm93IC0tPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcclxuICAgICAgICAgICAgICAgIHJvd0NlbGw7XHJcbiAgICAgICAgICAgICAgICBjb250ZXh0OiB7XHJcbiAgICAgICAgICAgICAgICAgICRpbXBsaWNpdDogY2hpbGQsXHJcbiAgICAgICAgICAgICAgICAgIGNvbHVtbnM6IGNvbHVtbnMsXHJcbiAgICAgICAgICAgICAgICAgIGlzRXZlbjogaSAlIDIgPT09IDAsXHJcbiAgICAgICAgICAgICAgICAgIGlzT2RkOiBpICUgMiAhPT0gMCxcclxuICAgICAgICAgICAgICAgICAgaXNMZWZ0OiBpc0xlZnRTZWN0aW9uLFxyXG4gICAgICAgICAgICAgICAgICBzZWN0aW9uOiBzZWN0aW9uLFxyXG4gICAgICAgICAgICAgICAgICBpc1RvdGFsUm93OiBpc1RvdGFsUm93XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICA8IS0tIFJlZ3VsYXIgcm93IChub3QgYSBncm91cCkgLS0+XHJcbiAgPG5nLXRlbXBsYXRlICNyZWd1bGFyUm93PlxyXG4gICAgPGRpdlxyXG4gICAgICBjbGFzcz1cImQtZmxleFwiXHJcbiAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwicm93SGVpZ2h0XCJcclxuICAgICAgW3N0eWxlLm1pbkhlaWdodC5weF09XCJyb3dIZWlnaHRcIlxyXG4gICAgICBbc3R5bGUubWF4SGVpZ2h0LnB4XT1cInJvd0hlaWdodFwiXHJcbiAgICA+XHJcbiAgICAgIDxzcGFuXHJcbiAgICAgICAgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXIgY3Vyc29yLXBvaW50ZXIgYm9yZGVyLWJlbG93XCJcclxuICAgICAgICBzdHlsZT1cIm1pbi13aWR0aDogMzBweDsgaGVpZ2h0OiAxMDAlXCJcclxuICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgc2VjdGlvbiA9PSAnY2VudGVyJyAmJiAoZ3JpZFR5cGUgPT09ICdBc3NldHMnIHx8IGdyaWRUeXBlID09PSAnVGFza3MnKVxyXG4gICAgICAgIFwiXHJcbiAgICAgICAgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgJ2JhY2tncm91bmQtY29sb3InOiByb3dTZWxlY3RlZEluZGV4ZXMuaGFzKHJvdy5fX3ZpcnR1YWxJbmRleClcclxuICAgICAgICAgICAgPyBudWxsXHJcbiAgICAgICAgICAgIDogZ2V0QmFja2dyb3VuZENvbG9yKHJvdywgaXNFdmVuLCBzZWN0aW9uKVxyXG4gICAgICAgIH1cIlxyXG4gICAgICAgIFtjbGFzcy5zZWxlY3RlZC1jZWxsXT1cInJvd1NlbGVjdGVkSW5kZXhlcy5oYXMocm93Ll9fdmlydHVhbEluZGV4KVwiXHJcbiAgICAgICAgW2NsYXNzLmZpcnN0LXJvdy1zZWxlY3RlZF09XCJmaXJzdFNlbGVjdGVkUm93ID09PSByb3cuX192aXJ0dWFsSW5kZXhcIlxyXG4gICAgICAgIFtjbGFzcy5sYXN0LXJvdy1zZWxlY3RlZF09XCJsYXN0U2VsZWN0ZWRSb3cgPT09IHJvdy5fX3ZpcnR1YWxJbmRleFwiXHJcbiAgICAgID5cclxuICAgICAgICA8c3BhblxyXG4gICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZURldGFpbFJvd0V4cGFuZChyb3cpXCJcclxuICAgICAgICAgICpuZ0lmPVwicm93Py5kZXRhaWw/LnJlc3VsdD8ubGVuZ3RoIHx8IGdyaWRUeXBlID09PSAnVGFza3MnXCJcclxuICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGZpbHRlci1pY29uLXdyYXBwZXJcIlxyXG4gICAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgICAgaXNEZXRhaWxzRXhwYW5kZWQocm93KVxyXG4gICAgICAgICAgICAgID8gc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvY2hldnJvbi1kb3duLnN2ZydcclxuICAgICAgICAgICAgICA6IHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2NoZXZyb24tcmlnaHQuc3ZnJ1xyXG4gICAgICAgICAgXCJcclxuICAgICAgICA+PC9zcGFuPlxyXG4gICAgICA8L3NwYW4+XHJcbiAgICAgIDxkaXZcclxuICAgICAgICBbc3R5bGUubWluLXdpZHRoLnB4XT1cIlxyXG4gICAgICAgICAgc2VjdGlvbiA9PSAnY2VudGVyJyAmJiBncm91cGVkQ29sdW1ucz8ubGVuZ3RoID8gZ3JvdXBCb3hQYWRkaW5nIDogMFxyXG4gICAgICAgIFwiXHJcbiAgICAgICAgW2NsYXNzLnJvdy1zZWxlY3RlZF09XCJyb3dTZWxlY3RlZEluZGV4ZXMuaGFzKHJvdy5fX3ZpcnR1YWxJbmRleClcIlxyXG4gICAgICAgIFtjbGFzcy5maXJzdC1yb3ctc2VsZWN0ZWRdPVwiZmlyc3RTZWxlY3RlZFJvdyA9PT0gcm93Ll9fdmlydHVhbEluZGV4XCJcclxuICAgICAgICBbY2xhc3MubGFzdC1yb3ctc2VsZWN0ZWRdPVwibGFzdFNlbGVjdGVkUm93ID09PSByb3cuX192aXJ0dWFsSW5kZXhcIlxyXG4gICAgICAgIChjb250ZXh0bWVudSk9XCJvblJpZ2h0Q2xpY2soJGV2ZW50LCByb3cpXCJcclxuICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cInJvd0hlaWdodFwiXHJcbiAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtcm93IGgtMTAwXCJcclxuICAgICAgICBbY2xhc3MuZXZlbi1yb3ddPVwiaXNFdmVuXCJcclxuICAgICAgICBbY2xhc3Mub2RkLXJvd109XCJpc09kZFwiXHJcbiAgICAgICAgW2NsYXNzLmhvdmVyZWQtcm93XT1cImhvdmVyZWRSb3dJZCA9PT0gKHJvdy5faWQgfHwgcm93LmlkKVwiXHJcbiAgICAgICAgKG1vdXNlZW50ZXIpPVwib25Sb3dIb3Zlcihyb3cpXCJcclxuICAgICAgICAobW91c2VsZWF2ZSk9XCJvblJvd0xlYXZlKClcIlxyXG4gICAgICAgIFtuZ1N0eWxlXT1cIntcclxuICAgICAgICAgICdiYWNrZ3JvdW5kLWNvbG9yJzogZ2V0QmFja2dyb3VuZENvbG9yKHJvdywgaXNFdmVuLCBzZWN0aW9uKVxyXG4gICAgICAgIH1cIlxyXG4gICAgICAgIFtzdHlsZS5taW5IZWlnaHQucHhdPVwicm93SGVpZ2h0XCJcclxuICAgICAgICBbc3R5bGUubWF4SGVpZ2h0LnB4XT1cInJvd0hlaWdodFwiXHJcbiAgICAgID48L2Rpdj5cclxuICAgICAgPGRpdlxyXG4gICAgICAgIChjb250ZXh0bWVudSk9XCJvblJpZ2h0Q2xpY2soJGV2ZW50LCByb3cpXCJcclxuICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cInJvd0hlaWdodFwiXHJcbiAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtcm93XCJcclxuICAgICAgICBbY2xhc3MuZXZlbi1yb3ddPVwiaXNFdmVuXCJcclxuICAgICAgICBbY2xhc3Mub2RkLXJvd109XCJpc09kZFwiXHJcbiAgICAgICAgW2NsYXNzLmhvdmVyZWQtcm93XT1cImhvdmVyZWRSb3dJZCA9PT0gKHJvdy5faWQgfHwgcm93LmlkKVwiXHJcbiAgICAgICAgKG1vdXNlZW50ZXIpPVwib25Sb3dIb3Zlcihyb3cpXCJcclxuICAgICAgICAobW91c2VsZWF2ZSk9XCJvblJvd0xlYXZlKClcIlxyXG4gICAgICAgIFtuZ1N0eWxlXT1cIntcclxuICAgICAgICAgICdiYWNrZ3JvdW5kLWNvbG9yJzogZ2V0QmFja2dyb3VuZENvbG9yKHJvdywgaXNFdmVuLCBzZWN0aW9uKVxyXG4gICAgICAgIH1cIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJjaGVja2JveGVzQmFja2dyb3VuZENvbG9yXCJcclxuICAgICAgICAgIGNsYXNzPVwic2VsZWN0LWFsbC1jaGVja2JveC1jZWxsIGp1c3RpZnktY29udGVudC1lbmQgcGUtMiBzLW5vXCJcclxuICAgICAgICAgIFtzdHlsZS53aWR0aC5weF09XCI1NVwiXHJcbiAgICAgICAgICAqbmdJZj1cImlzTGVmdFNlY3Rpb24gJiYgc2hvd1NlcmlhbE51bWJlclwiXHJcbiAgICAgICAgICBbc3R5bGUuY3Vyc29yXT1cIlxyXG4gICAgICAgICAgICAndXJsKCcgK1xyXG4gICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICtcclxuICAgICAgICAgICAgJ2RhdGEtZ3JpZC9pY29ucy9hcnJvdy1yaWdodC5zdmcpLCBhdXRvJ1xyXG4gICAgICAgICAgXCJcclxuICAgICAgICAgIChtb3VzZWRvd24pPVwib25Sb3dNb3VzZURvd24ocm93Ll9fdmlydHVhbEluZGV4LCAkZXZlbnQpXCJcclxuICAgICAgICAgIChtb3VzZW92ZXIpPVwib25Sb3dNb3VzZU92ZXIocm93Ll9fdmlydHVhbEluZGV4LCAkZXZlbnQpXCJcclxuICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCJjaGVja2JveGVzQ29sb3JcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIHt7IGdldFN0YXJ0SW5kZXgoKSArIChyb3cuX192aXJ0dWFsSW5kZXggLSAxKSB9fVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICBjbGFzcz1cImJvcmRlci1iZWxvd1wiXHJcbiAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cIlxyXG4gICAgICAgICAgICByb3dTZWxlY3RlZEluZGV4ZXMuaGFzKHJvdy5fX3ZpcnR1YWxJbmRleClcclxuICAgICAgICAgICAgICA/IHNlbGVjdGVkUm93c0JhY2tncm91bmRDb2xvclxyXG4gICAgICAgICAgICAgIDogY2hlY2tib3hlc0JhY2tncm91bmRDb2xvclxyXG4gICAgICAgICAgXCJcclxuICAgICAgICAgIGNsYXNzPVwic2VsZWN0LWFsbC1jaGVja2JveC1jZWxsXCJcclxuICAgICAgICAgICpuZ0lmPVwiaXNMZWZ0U2VjdGlvbiAmJiBzaG93Q2hlY2tib3hlc1wiXHJcbiAgICAgICAgICBbY2xhc3MubGVmdC1zZWxlY3Rpb24tYm9yZGVyXT1cIlxyXG4gICAgICAgICAgICByb3dTZWxlY3RlZEluZGV4ZXMuaGFzKHJvdy5fX3ZpcnR1YWxJbmRleClcclxuICAgICAgICAgIFwiXHJcbiAgICAgICAgICBbY2xhc3MuZmlyc3Qtcm93LXNlbGVjdGVkXT1cImZpcnN0U2VsZWN0ZWRSb3cgPT09IHJvdy5fX3ZpcnR1YWxJbmRleFwiXHJcbiAgICAgICAgICBbY2xhc3MubGFzdC1yb3ctc2VsZWN0ZWRdPVwibGFzdFNlbGVjdGVkUm93ID09PSByb3cuX192aXJ0dWFsSW5kZXhcIlxyXG4gICAgICAgICAgW3N0eWxlLm1pbkhlaWdodC5weF09XCJyb3dIZWlnaHQgLSAxXCJcclxuICAgICAgICAgIFtzdHlsZS5tYXhIZWlnaHQucHhdPVwicm93SGVpZ2h0XCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgKm5nSWY9XCJoYXNBbnlWaXNpYmxlQ29sdW1uXCJcclxuICAgICAgICAgICAgIHN0eWxlPVwid2lkdGg6IDE2cHg7IGhlaWdodDogMTZweFwiXHJcbiAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgICAgIFtjaGVja2VkXT1cImlzUm93U2VsZWN0ZWQocm93KVwiXHJcbiAgICAgICAgICAgIChjaGFuZ2UpPVwidG9nZ2xlUm93U2VsZWN0aW9uKHJvdylcIlxyXG4gICAgICAgICAgLz5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPCEtLSBSZW5kZXIgYWxsIGNvbHVtbnMgLS0+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgKm5nRm9yPVwiXHJcbiAgICAgICAgICAgIGxldCBjb2wgb2YgY29sdW1ucztcclxuICAgICAgICAgICAgdHJhY2tCeTogdHJhY2tCeUZpZWxkO1xyXG4gICAgICAgICAgICBsZXQgY29sSW5kZXggPSBpbmRleFxyXG4gICAgICAgICAgXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sLmNoaWxkcmVuPy5sZW5ndGggPiAwOyBlbHNlIGZsYXRDb2x1bW5cIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICpuZ0Zvcj1cIlxyXG4gICAgICAgICAgICAgICAgbGV0IGNoaWxkIG9mIGNvbC5jaGlsZHJlbjtcclxuICAgICAgICAgICAgICAgIHRyYWNrQnk6IHRyYWNrQnlGaWVsZDtcclxuICAgICAgICAgICAgICAgIGxldCBzdWJDb2xJbmRleCA9IGluZGV4XHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjaGlsZD8uaXNfdmlzaWJsZSAmJiAhY2hpbGQ/LmlzUm93R3JvdXBlZFwiPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxyXG4gICAgICAgICAgICAgICAgICAgIGNlbGxUZW1wbGF0ZTtcclxuICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBjb2w6IGNoaWxkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgcm93OiByb3csXHJcbiAgICAgICAgICAgICAgICAgICAgICByb3dJbmRleDogcm93SW5kZXgsXHJcbiAgICAgICAgICAgICAgICAgICAgICBjb2xJbmRleDogY29sSW5kZXgsXHJcbiAgICAgICAgICAgICAgICAgICAgICBzdWJDb2xJbmRleDogc3ViQ29sSW5kZXgsXHJcbiAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uOiBzZWN0aW9uLFxyXG4gICAgICAgICAgICAgICAgICAgICAgaXNUb3RhbFJvdzogaXNUb3RhbFJvd1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICA8bmctdGVtcGxhdGUgI2ZsYXRDb2x1bW4+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2w/LmlzX3Zpc2libGUgJiYgIWNvbD8uaXNSb3dHcm91cGVkXCI+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcclxuICAgICAgICAgICAgICAgICAgY2VsbFRlbXBsYXRlO1xyXG4gICAgICAgICAgICAgICAgICBjb250ZXh0OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29sOiBjb2wsXHJcbiAgICAgICAgICAgICAgICAgICAgcm93OiByb3csXHJcbiAgICAgICAgICAgICAgICAgICAgcm93SW5kZXg6IHJvd0luZGV4LFxyXG4gICAgICAgICAgICAgICAgICAgIGNvbEluZGV4OiBjb2xJbmRleCxcclxuICAgICAgICAgICAgICAgICAgICBzdWJDb2xJbmRleDogbnVsbCxcclxuICAgICAgICAgICAgICAgICAgICBzZWN0aW9uOiBzZWN0aW9uLFxyXG4gICAgICAgICAgICAgICAgICAgIGlzVG90YWxSb3c6IGlzVG90YWxSb3dcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2XHJcbiAgICAgIFtAc2xpZGVUb2dnbGVdXHJcbiAgICAgICpuZ0lmPVwic2VjdGlvbiA9PT0gJ2xlZnQnICYmIGlzRGV0YWlsc0V4cGFuZGVkKHJvdylcIlxyXG4gICAgICBjbGFzcz1cImFjY29yZGlvbi1kZXRhaWxzXCJcclxuICAgICAgc3R5bGU9XCJtYXgtaGVpZ2h0OiAzNTBweDsgb3ZlcmZsb3c6IGhpZGRlblwiXHJcbiAgICAgIFtzdHlsZS5tYXhIZWlnaHQucHhdPVwiaGFzSG9yaXpvbnRhbFNjcm9sbCA/IDMzOSA6IDM0MVwiXHJcbiAgICA+XHJcbiAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxyXG4gICAgICAgICAgbGVmdFJpZ2h0TmVzdGVkUGxhY2Vob2xkZXI7XHJcbiAgICAgICAgICBjb250ZXh0OiB7ICRpbXBsaWNpdDogcm93IH1cclxuICAgICAgICBcIlxyXG4gICAgICA+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdlxyXG4gICAgICBbQHNsaWRlVG9nZ2xlXVxyXG4gICAgICAqbmdJZj1cInNlY3Rpb24gPT09ICdjZW50ZXInICYmIGlzRGV0YWlsc0V4cGFuZGVkKHJvdylcIlxyXG4gICAgICBjbGFzcz1cImFjY29yZGlvbi1kZXRhaWxzIGNlbnRlci1zZWN0aW9uXCJcclxuICAgICAgc3R5bGU9XCJcclxuICAgICAgICBtYXgtaGVpZ2h0OiAzNTBweDtcclxuICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47XHJcbiAgICAgICAgb3ZlcmZsb3cteDogYXV0bztcclxuICAgICAgICBzY3JvbGxiYXItd2lkdGg6IHRoaW47XHJcbiAgICAgIFwiXHJcbiAgICAgICNuZXN0ZWRUYWJsZVxyXG4gICAgICBbc3R5bGUud2lkdGhdPVwiXHJcbiAgICAgICAgaGFzUmlnaHRQaW5uZWRDb2x1bW5zXHJcbiAgICAgICAgICA/ICcxMDAlJ1xyXG4gICAgICAgICAgOiBoYXNWZXJ0aWNhbFNjcm9sbFxyXG4gICAgICAgICAgPyAnY2FsYygxMDAlIC0gMTJweCknXHJcbiAgICAgICAgICA6ICcxMDAlJ1xyXG4gICAgICBcIlxyXG4gICAgPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZ3JpZFR5cGUgPT0gJ0Fzc2V0cydcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIm5lc3RlZFRhYmxlVGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiByb3cgfVwiXHJcbiAgICAgICAgPjwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImdyaWRUeXBlID09ICdUYXNrcydcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxyXG4gICAgICAgICAgICB0YXNrTWFuYWdlbWVudFRlbXBsYXRlO1xyXG4gICAgICAgICAgICBjb250ZXh0OiB7IHRhc2tEZXRhaWxzOiByb3cgfVxyXG4gICAgICAgICAgXCJcclxuICAgICAgICA+PC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdlxyXG4gICAgICBbQHNsaWRlVG9nZ2xlXVxyXG4gICAgICAqbmdJZj1cInNlY3Rpb24gPT09ICdyaWdodCcgJiYgaXNEZXRhaWxzRXhwYW5kZWQocm93KVwiXHJcbiAgICAgIGNsYXNzPVwiYWNjb3JkaW9uLWRldGFpbHNcIlxyXG4gICAgICBzdHlsZT1cIm1heC1oZWlnaHQ6IDM1MHB4OyBvdmVyZmxvdzogaGlkZGVuXCJcclxuICAgICAgW3N0eWxlLm1heEhlaWdodC5weF09XCJoYXNIb3Jpem9udGFsU2Nyb2xsID8gMzM5IDogMzQxXCJcclxuICAgID5cclxuICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXHJcbiAgICAgICAgICBsZWZ0UmlnaHROZXN0ZWRQbGFjZWhvbGRlcjtcclxuICAgICAgICAgIGNvbnRleHQ6IHsgJGltcGxpY2l0OiByb3cgfVxyXG4gICAgICAgIFwiXHJcbiAgICAgID5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L2Rpdj5cclxuICA8L25nLXRlbXBsYXRlPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPCEtLSBBY3R1YWwgQ2VsbCBpcyBIZXJlIC0tPlxyXG48bmctdGVtcGxhdGVcclxuICAjY2VsbFRlbXBsYXRlXHJcbiAgbGV0LWNvbD1cImNvbFwiXHJcbiAgbGV0LXJvdz1cInJvd1wiXHJcbiAgbGV0LXNlY3Rpb249XCJzZWN0aW9uXCJcclxuICBsZXQtc3ViQ29sSW5kZXg9XCJzdWJDb2xJbmRleFwiXHJcbiAgbGV0LXJvd0luZGV4PVwicm93SW5kZXhcIlxyXG4gIGxldC1jb2xJbmRleD1cImNvbEluZGV4XCJcclxuICBsZXQtaXNUb3RhbFJvdz1cImlzVG90YWxSb3dcIlxyXG4+XHJcbiAgPGRpdlxyXG4gICAgI2NlbGxDb250YWluZXJcclxuICAgIChjbGljayk9XCJcclxuICAgICAgZWRpdGluZ0tleSA9ICcnOyBzZXRBY3RpdmVDZWxsKHJvdywgY29sKTsgY29sbGFwc2VBbGxFeHBhbmRlZENlbGxzKClcclxuICAgIFwiXHJcbiAgICBbc3R5bGUuZm9udFdlaWdodF09XCJib2R5Rm9udFdlaWdodFwiXHJcbiAgICBbY2xhc3MuYm9yZGVyLXJpZ2h0XT1cInNob3dWZXJ0aWNhbEJvcmRlclwiXHJcbiAgICBjbGFzcz1cImNlbGwgb3ZlcmZsb3ctdmlzaWJsZSBwb3NpdGlvbi1yZWxhdGl2ZSBkYXRhLWdyaWQtY2VsbFwiXHJcbiAgICBbYXR0ci5maWVsZF09XCJjb2wuZmllbGRcIlxyXG4gICAgW3N0eWxlLndpZHRoLnB4XT1cImNvbC53aWR0aFwiXHJcbiAgICBbc3R5bGUubWluLXdpZHRoLnB4XT1cImNvbC53aWR0aFwiXHJcbiAgICBbc3R5bGUuZm9udFNpemUucHhdPVwiYm9keVRleHRGb250c1NpemVcIlxyXG4gICAgW3N0eWxlLm1pbkhlaWdodC5weF09XCJyb3dIZWlnaHRcIlxyXG4gICAgW3N0eWxlLm1heEhlaWdodC5weF09XCJyb3dIZWlnaHRcIlxyXG4gICAgW2NsYXNzLmFjdGl2ZS1jZWxsXT1cIlxyXG4gICAgICBpc0FjdGl2ZUNlbGwocm93LCBjb2wpICYmICFpc0VkaXRpbmcocm93LCBjb2wpICYmIHNlbGVjdGVkS2V5cy5zaXplID09IDFcclxuICAgIFwiXHJcbiAgICAoZGJsY2xpY2spPVwiXHJcbiAgICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgIGVuYWJsZUVkaXQocm93LCBjb2wsIGZhbHNlLCBjZWxsQ29udGFpbmVyKVxyXG4gICAgXCJcclxuICAgIFtjbGFzcy5yb3ctc2VsZWN0ZWRdPVwicm93U2VsZWN0ZWRJbmRleGVzLmhhcyhyb3cuX192aXJ0dWFsSW5kZXgpXCJcclxuICAgIFtjbGFzcy5maXJzdC1yb3ctc2VsZWN0ZWRdPVwiZmlyc3RTZWxlY3RlZFJvdyA9PT0gcm93Py5fX3ZpcnR1YWxJbmRleFwiXHJcbiAgICBbY2xhc3MubGFzdC1yb3ctc2VsZWN0ZWRdPVwibGFzdFNlbGVjdGVkUm93ID09PSByb3c/Ll9fdmlydHVhbEluZGV4XCJcclxuICAgIHRhYmluZGV4PVwiLTFcIlxyXG4gICAgKGtleWRvd24uZW50ZXIpPVwiJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7IGVuYWJsZUVkaXQocm93LCBjb2wpXCJcclxuICAgIChtb3VzZWRvd24pPVwiXHJcbiAgICAgIHN0YXJ0U2VsZWN0aW9uKFxyXG4gICAgICAgIHJvdy5fX3ZpcnR1YWxJbmRleCxcclxuICAgICAgICBjb2xJbmRleCxcclxuICAgICAgICBzdWJDb2xJbmRleCA/PyAwLFxyXG4gICAgICAgIGNvbC5maWVsZCxcclxuICAgICAgICAkZXZlbnQsXHJcbiAgICAgICAgc2VjdGlvblxyXG4gICAgICApXHJcbiAgICBcIlxyXG4gICAgKG1vdXNlZW50ZXIpPVwiXHJcbiAgICAgIGV4dGVuZFNlbGVjdGlvbihcclxuICAgICAgICByb3cuX192aXJ0dWFsSW5kZXgsXHJcbiAgICAgICAgY29sSW5kZXgsXHJcbiAgICAgICAgc3ViQ29sSW5kZXggPz8gMCxcclxuICAgICAgICBjb2wuZmllbGQsXHJcbiAgICAgICAgJGV2ZW50LFxyXG4gICAgICAgIHNlY3Rpb25cclxuICAgICAgKVxyXG4gICAgXCJcclxuICAgIChtb3VzZXVwKT1cImVuZFNlbGVjdGlvbigpXCJcclxuICAgIFtjbGFzcy5zZWxlY3RlZC1jZWxsXT1cIlxyXG4gICAgICBpc1NlbGVjdGVkKFxyXG4gICAgICAgIHJvdy5fX3ZpcnR1YWxJbmRleCxcclxuICAgICAgICBjb2xJbmRleCxcclxuICAgICAgICBzdWJDb2xJbmRleCA/PyAwLFxyXG4gICAgICAgIGNvbC5maWVsZCxcclxuICAgICAgICBzZWN0aW9uXHJcbiAgICAgIClcclxuICAgIFwiXHJcbiAgICBbY2xhc3MudG9wLWJvcmRlcl09XCJcclxuICAgICAgaXNUb3BCb3JkZXIocm93Ll9fdmlydHVhbEluZGV4LCBjb2xJbmRleCwgc3ViQ29sSW5kZXgsIHNlY3Rpb24pXHJcbiAgICBcIlxyXG4gICAgW2NsYXNzLmJvdHRvbS1ib3JkZXJdPVwiXHJcbiAgICAgIGlzQm90dG9tQm9yZGVyKHJvdy5fX3ZpcnR1YWxJbmRleCwgY29sSW5kZXgsIHN1YkNvbEluZGV4LCBzZWN0aW9uKVxyXG4gICAgXCJcclxuICAgIFtjbGFzcy5sZWZ0LWJvcmRlcl09XCJcclxuICAgICAgaXNMZWZ0Qm9yZGVyKHJvdy5fX3ZpcnR1YWxJbmRleCwgY29sSW5kZXgsIHN1YkNvbEluZGV4LCBzZWN0aW9uKVxyXG4gICAgXCJcclxuICAgIFtjbGFzcy5yaWdodC1ib3JkZXJdPVwiXHJcbiAgICAgIGlzUmlnaHRCb3JkZXIocm93Ll9fdmlydHVhbEluZGV4LCBjb2xJbmRleCwgc3ViQ29sSW5kZXgsIHNlY3Rpb24pXHJcbiAgICBcIlxyXG4gICAgW2NsYXNzLnRvcC1sZWZ0LWNvcm5lcl09XCJcclxuICAgICAgaXNUb3BMZWZ0Q29ybmVyKHJvdy5fX3ZpcnR1YWxJbmRleCwgY29sSW5kZXgsIHN1YkNvbEluZGV4LCBzZWN0aW9uKVxyXG4gICAgXCJcclxuICAgIFtjbGFzcy50b3AtcmlnaHQtY29ybmVyXT1cIlxyXG4gICAgICBpc1RvcFJpZ2h0Q29ybmVyKHJvdy5fX3ZpcnR1YWxJbmRleCwgY29sSW5kZXgsIHN1YkNvbEluZGV4LCBzZWN0aW9uKVxyXG4gICAgXCJcclxuICAgIFtjbGFzcy5ib3R0b20tbGVmdC1jb3JuZXJdPVwiXHJcbiAgICAgIGlzQm90dG9tTGVmdENvcm5lcihyb3cuX192aXJ0dWFsSW5kZXgsIGNvbEluZGV4LCBzdWJDb2xJbmRleCwgc2VjdGlvbilcclxuICAgIFwiXHJcbiAgICBbY2xhc3MuYm90dG9tLXJpZ2h0LWNvcm5lcl09XCJcclxuICAgICAgaXNCb3R0b21SaWdodENvcm5lcihyb3cuX192aXJ0dWFsSW5kZXgsIGNvbEluZGV4LCBzdWJDb2xJbmRleCwgc2VjdGlvbilcclxuICAgIFwiXHJcbiAgPlxyXG4gICAgPCEtLSAgKG1vdXNlZG93bik9XCJzdGFydFNlbGVjdGlvbihyb3cuX192aXJ0dWFsSW5kZXgsIGNvbEluZGV4LCBzdWJDb2xJbmRleCA/PyAwLCBjb2wuZmllbGQsICRldmVudClcIlxyXG4gIChtb3VzZWVudGVyKT1cImV4dGVuZFNlbGVjdGlvbihyb3cuX192aXJ0dWFsSW5kZXgsIGNvbEluZGV4LCBzdWJDb2xJbmRleCA/PyAwLCBjb2wuZmllbGQsICRldmVudClcIlxyXG4gIChtb3VzZXVwKT1cImVuZFNlbGVjdGlvbigpXCJcclxuICBbY2xhc3Muc2VsZWN0ZWQtY2VsbF09XCJpc1NlbGVjdGVkKHJvdy5fX3ZpcnR1YWxJbmRleCwgY29sSW5kZXgsICBzdWJDb2xJbmRleCA/PyAwLCBjb2wuZmllbGQpXCIgLS0+XHJcbiAgICA8ZGl2XHJcbiAgICAgIGNsYXNzPVwidGFibGUtY2VsbFwiXHJcbiAgICAgIFtjbGFzcy5hY3RpdmUtZm9yLWVkaXRpbmddPVwiXHJcbiAgICAgICAgaXNFZGl0aW5nKHJvdywgY29sKSAmJlxyXG4gICAgICAgIChnZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZCk/Lmxlbmd0aCA9PT0gdW5kZWZpbmVkIHx8XHJcbiAgICAgICAgICBnZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZCk/Lmxlbmd0aCA8PSA1MClcclxuICAgICAgXCJcclxuICAgID5cclxuICAgICAgPGRpdlxyXG4gICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxyXG4gICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICBpc0VkaXRpbmcocm93LCBjb2wpICYmXHJcbiAgICAgICAgICAgIChnZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZCk/Lmxlbmd0aCA9PT0gdW5kZWZpbmVkIHx8XHJcbiAgICAgICAgICAgICAgKGdldE5lc3RlZFZhbHVlKHJvdywgY29sLmZpZWxkKT8ubGVuZ3RoIDw9IDUwICYmXHJcbiAgICAgICAgICAgICAgICAhZXhwYW5kZWRDZWxscy5zaXplKSk7XHJcbiAgICAgICAgICBlbHNlIHZpZXdNb2RlXHJcbiAgICAgICAgXCJcclxuICAgICAgPlxyXG5cclxuICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2wuY2VsbEVkaXRvcjsgZWxzZSBidWlsdEluRWRpdG9yc1wiPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgIFtjZWxsRWRpdG9yXT1cImNvbC5jZWxsRWRpdG9yXCJcclxuICAgICAgICAgICAgICAgIFtyb3dEYXRhXT1cInJvd1wiXHJcbiAgICAgICAgICAgICAgICBbY29sRGF0YV09XCJjb2xcIlxyXG4gICAgICAgICAgICAgICAgW2NlbGxWYWx1ZV09XCJnZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZClcIlxyXG4gICAgICAgICAgICAgICAgKGVkaXRvckV2ZW50KT1cImZpbmlzaEVkaXQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgPG5nLXRlbXBsYXRlICNidWlsdEluRWRpdG9ycz5cclxuICAgICAgICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJjb2wudHlwZVwiPlxyXG4gICAgICAgICAgPCEtLSBUZXh0IElucHV0IC0tPlxyXG4gICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwicm93SGVpZ2h0IC0gMTBcIlxyXG4gICAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ2lucHV0J1wiXHJcbiAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJyb3dbY29sLmZpZWxkXVwiXHJcbiAgICAgICAgICAgIChibHVyKT1cImRpc2FibGVFZGl0KHJvdywgY29sKVwiXHJcbiAgICAgICAgICAgIGF1dG9mb2N1c1xyXG4gICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21cIlxyXG4gICAgICAgICAgICAobW91c2Vkb3duKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXHJcbiAgICAgICAgICAvPlxyXG5cclxuICAgICAgICAgIDwhLS0gTnVtYmVyIElucHV0IC0tPlxyXG4gICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwicm93SGVpZ2h0IC0gOFwiXHJcbiAgICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCInbnVtYmVyJ1wiXHJcbiAgICAgICAgICAgICNudW1iZXJJbnB1dD1cIm5nTW9kZWxcIlxyXG4gICAgICAgICAgICAjbnVtYmVyUmVmXHJcbiAgICAgICAgICAgIChrZXlwcmVzcyk9XCJhbGxvd09ubHlOdW1iZXJzKCRldmVudClcIlxyXG4gICAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcclxuICAgICAgICAgICAgcmVxdWlyZWRcclxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJyb3dbY29sLmZpZWxkXVwiXHJcbiAgICAgICAgICAgIChibHVyKT1cImRpc2FibGVFZGl0KHJvdywgY29sKVwiXHJcbiAgICAgICAgICAgIGF1dG9mb2N1c1xyXG4gICAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJudW1iZXJSZWYuYmx1cigpXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtXCJcclxuICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xyXG4gICAgICAgICAgICAgICdpcy1pbnZhbGlkJzogbnVtYmVySW5wdXQuaW52YWxpZFxyXG4gICAgICAgICAgICB9XCJcclxuICAgICAgICAgICAgKG1vdXNlZG93bik9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxyXG4gICAgICAgICAgLz5cclxuXHJcbiAgICAgICAgICA8IS0tIERhdGUgSW5wdXQgLS0+XHJcbiAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJyb3dIZWlnaHQgLSA4XCJcclxuICAgICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIidkYXRlJ1wiXHJcbiAgICAgICAgICAgIHR5cGU9XCJkYXRlXCJcclxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJyb3dbY29sLmZpZWxkXVwiXHJcbiAgICAgICAgICAgIChibHVyKT1cImRpc2FibGVFZGl0KHJvdywgY29sKVwiXHJcbiAgICAgICAgICAgIGF1dG9mb2N1c1xyXG4gICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21cIlxyXG4gICAgICAgICAgICAjZGF0ZUlucHV0PVwibmdNb2RlbFwiXHJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcclxuICAgICAgICAgICAgICAnaXMtaW52YWxpZCc6IGRhdGVJbnB1dC5pbnZhbGlkXHJcbiAgICAgICAgICAgIH1cIlxyXG4gICAgICAgICAgICAobW91c2Vkb3duKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXHJcbiAgICAgICAgICAvPlxyXG5cclxuICAgICAgICAgIDwhLS0gRHJvcGRvd24gLS0+XHJcbiAgICAgICAgICA8IS0tIG5nLXNlbGVjdCBsaWtlIGRyb3Bkb3duIC0tPlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ2Ryb3Bkb3duJ1wiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiZHJvcGRvd24gdy0xMDBcIlxyXG4gICAgICAgICAgICAoYmx1cik9XCJkaXNhYmxlRWRpdChyb3csIGNvbClcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8IS0tIFRyaWdnZXIgLS0+XHJcbiAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tc2VsZWN0IGZvcm0tc2VsZWN0LXNtIHRleHQtc3RhcnQgdy0xMDAgdGV4dC1lbGxpcHNpc1wiXHJcbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgZGF0YS1icy10b2dnbGU9XCJkcm9wZG93blwiXHJcbiAgICAgICAgICAgICAgYXJpYS1leHBhbmRlZD1cImZhbHNlXCJcclxuICAgICAgICAgICAgICBbc3R5bGUubWluSGVpZ2h0LnB4XT1cInJvd0hlaWdodCAtIDEwXCJcclxuICAgICAgICAgICAgICBkYXRhLWJzLWRpc3BsYXk9XCJzdGF0aWNcIlxyXG4gICAgICAgICAgICAgIChtb3VzZWRvd24pPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICB7e1xyXG4gICAgICAgICAgICAgICAgICBnZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZCk/LnZhbHVlIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgZ2V0TmVzdGVkVmFsdWUocm93LCBjb2wuZmllbGQpPy5uYW1lIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgZ2V0TmVzdGVkVmFsdWUocm93LCBjb2wuZmllbGQpXHJcbiAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjcGxhY2Vob2xkZXI+IFNlbGVjdCBvcHRpb25zLi4uIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG5cclxuICAgICAgICAgICAgPCEtLSBNZW51IC0tPlxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJkcm9wZG93bi1tZW51IHctMTAwIHAtMCBjZWxsLWVkaXRpbmctZHJvcGRvd24tbWVudSByb3VuZGVkLTNcIlxyXG4gICAgICAgICAgICAgIFtjbGFzcy5zaG93XT1cImlzRWRpdGluZyhyb3csIGNvbClcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPCEtLSBTZWFyY2ggLS0+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB4LTIgcHktMSBlZGl0aW5nLWRyb3Bkb3duLXNlYXJjaC1pbnB1dFwiICpuZ0lmPVwiY29sPy5jb2x1bW5fZHJvcGRvd25fdmFsdWU/Lmxlbmd0aCA+IDVcIj5cclxuICAgICAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbVwiXHJcbiAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VhcmNoLi4uXCJcclxuICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJlZGl0aW5Ecm9wZG93blNlYXJjaFwiXHJcbiAgICAgICAgICAgICAgICAgIChtb3VzZWRvd24pPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcclxuICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGNkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydCBcclxuICAgICAgICAgICAgICAgICAgICBpdGVtU2l6ZT1cIjM1XCIgXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkcm9wZG93bi12aWV3cG9ydFwiXHJcbiAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJoZWlnaHQ6IDEyMHB4XCJcclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICBbY2xhc3Muc2VsZWN0ZWRdPVwiZ2V0TmVzdGVkVmFsdWUocm93LCBjb2wuZmllbGQpID09IG9wdGlvbj8udmFsdWUgfHwgZ2V0TmVzdGVkVmFsdWUocm93LCBjb2wuZmllbGQpID09IG9wdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInB4LTIgcHktMSBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGRyb3Bkb3duLWl0ZW1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKmNka1ZpcnR1YWxGb3I9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG9wdGlvbiBvZiBjb2wuY29sdW1uX2Ryb3Bkb3duX3ZhbHVlIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgZmlsdGVyIDogZWRpdGluRHJvcGRvd25TZWFyY2ggOiAndmFsdWUnXHJcbiAgICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNldE5lc3RlZFZhbHVlKHJvdywgY29sLCBvcHRpb24sIHRydWUpOyBlZGl0aW5nS2V5ID0gbnVsbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGxhYmVsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWwgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBtYi0wIGN1cnNvci1wb2ludGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcl09XCJjb2wuZmllbGQgKyAnLScgKyAob3B0aW9uLnZhbHVlIHx8IG9wdGlvbilcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBvcHRpb24udmFsdWUgfHwgb3B0aW9uIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9jZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnQ+XHJcblxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ2VtYWlsJ1wiXHJcbiAgICAgICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwicm93SGVpZ2h0IC0gMTBcIlxyXG4gICAgICAgICAgICBbc3R5bGUubWF4SGVpZ2h0LnB4XT1cInJvd0hlaWdodCAtIDEwXCJcclxuICAgICAgICAgICAgI2VtYWlsTW9kZWw9XCJuZ01vZGVsXCJcclxuICAgICAgICAgICAgI2VtYWlsSW5wdXRcclxuICAgICAgICAgICAgdHlwZT1cImVtYWlsXCJcclxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJyb3dbY29sLmZpZWxkXVwiXHJcbiAgICAgICAgICAgIG5hbWU9XCJ7eyBjb2wuZmllbGQgfX1cIlxyXG4gICAgICAgICAgICByZXF1aXJlZFxyXG4gICAgICAgICAgICBwYXR0ZXJuPVwiXlthLXpBLVowLTkuXyUrLV0rQFthLXpBLVowLTkuLV0rXFwuW2EtekEtWl17Mix9JFwiXHJcbiAgICAgICAgICAgIChibHVyKT1cImRpc2FibGVFZGl0KHJvdywgY29sLCBlbWFpbE1vZGVsKVwiXHJcbiAgICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cIlxyXG4gICAgICAgICAgICAgIGVtYWlsTW9kZWwuY29udHJvbC5tYXJrQXNUb3VjaGVkKCk7IGVtYWlsSW5wdXQuYmx1cigpXHJcbiAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgIGF1dG9mb2N1c1xyXG4gICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21cIlxyXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7XHJcbiAgICAgICAgICAgICAgJ2lzLWludmFsaWQnOiBlbWFpbE1vZGVsLmludmFsaWRcclxuICAgICAgICAgICAgfVwiXHJcbiAgICAgICAgICAgIChtb3VzZWRvd24pPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcclxuICAgICAgICAgIC8+XHJcbiAgICAgICAgICA8IS0tIERlZmF1bHQgZmFsbGJhY2sgLS0+XHJcbiAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgKm5nU3dpdGNoRGVmYXVsdFxyXG4gICAgICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cInJvd0hlaWdodCAtIDEwXCJcclxuICAgICAgICAgICAgW3N0eWxlLm1heEhlaWdodC5weF09XCJyb3dIZWlnaHQgLSAxMFwiXHJcbiAgICAgICAgICAgICN0ZXh0TW9kZWw9XCJuZ01vZGVsXCJcclxuICAgICAgICAgICAgI3RleHRJbnB1dFxyXG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwicm93W2NvbC5maWVsZF1cIlxyXG4gICAgICAgICAgICBuYW1lPVwie3sgY29sLmZpZWxkIH19XCJcclxuICAgICAgICAgICAgcmVxdWlyZWRcclxuICAgICAgICAgICAgKGJsdXIpPVwiZGlzYWJsZUVkaXQocm93LCBjb2wsIHRleHRNb2RlbClcIlxyXG4gICAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJcclxuICAgICAgICAgICAgICB0ZXh0TW9kZWwuY29udHJvbC5tYXJrQXNUb3VjaGVkKCk7IHRleHRJbnB1dC5ibHVyKClcclxuICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgYXV0b2ZvY3VzXHJcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbVwiXHJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcclxuICAgICAgICAgICAgICAnaXMtaW52YWxpZCc6IHRleHRNb2RlbC5pbnZhbGlkXHJcbiAgICAgICAgICAgIH1cIlxyXG4gICAgICAgICAgICAobW91c2Vkb3duKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXHJcbiAgICAgICAgICAvPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8IS0tIERpc3BsYXkgbW9kZSAtLT5cclxuICAgICAgPG5nLXRlbXBsYXRlICN2aWV3TW9kZT5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXIgdy0xMDAgb3ZlcmZsb3ctaGlkZGVuXCJcclxuICAgICAgICAgIFtuZ0NsYXNzXT1cImdldENlbGxDbGFzc2VzKGNvbCwgZ2V0TmVzdGVkVmFsdWUocm93LCBjb2wuZmllbGQpKVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPCEtLSBGaWVsZCBpY29uIChmb3IgVGFza3MgZ3JpZCkgLS0+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICpuZ0lmPVwiZ3JpZFR5cGUgPT09ICdUYXNrcycgJiYgaWNvbk1hcFtjb2wuZmllbGRdICYmICFpc1RvdGFsUm93XCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICBjbGFzcz1cImN1cnNvci1wb2ludGVyIG1lLTJcIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCIkZXZlbnQucHJldmVudERlZmF1bHQoKTsgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcclxuICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cImljb25NYXBbY29sLmZpZWxkXShyb3csIGNvbClcIlxyXG4gICAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgPCEtLSDinIUgQ3VzdG9tIGNlbGwgcmVuZGVyZXIgc3VwcG9ydCAtLT5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2wuY2VsbFJlbmRlcmVyOyBlbHNlIGRlZmF1bHRDZWxsXCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICBbY2VsbFJlbmRlckluaXRdPVwiY29sLmNlbGxSZW5kZXJlclwiXHJcbiAgICAgICAgICAgICAgW3Jvd0RhdGFdPVwicm93XCJcclxuICAgICAgICAgICAgICBbY29sRGF0YV09XCJjb2xcIlxyXG4gICAgICAgICAgICAgIFtjZWxsVmFsdWVdPVwiZ2V0TmVzdGVkVmFsdWUocm93LCBjb2w/LmZpZWxkKVwiXHJcbiAgICAgICAgICAgICAgKGNlbGxFdmVudCk9XCJvbkNlbGxFdmVudCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgIDwhLS0g8J+nviBEZWZhdWx0IHRleHQtYmFzZWQgY2VsbCByZW5kZXJpbmcgLS0+XHJcbiAgICAgICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRDZWxsPlxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgI2NlbGxUZXh0XHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LWVsbGlwc2lzIGZsZXgtZ3Jvdy0xXCJcclxuICAgICAgICAgICAgICBbdGl0bGVdPVwiZ2V0Q2VsbFRpdGxlKHJvdywgY29sKVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8IS0tIE5vcm1hbCBjZWxsIC0tPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgICAgIGNvbC50eXBlICE9PSAnaW1hZ2UnICYmXHJcbiAgICAgICAgICAgICAgICAgIGNvbC5maWVsZCAhPSAnaW1hZ2UnICYmXHJcbiAgICAgICAgICAgICAgICAgIGNvbC5maWVsZCAhPSAnaW52b2ljZS5pbnZvaWNlX2ltYWdlJyAmJlxyXG4gICAgICAgICAgICAgICAgICAhaXNUb3RhbFJvd1xyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sLmlzX2Ftb3VudFwiPnt7XHJcbiAgICAgICAgICAgICAgICAgIGN1cnJlbmN5U3ltYm9sXHJcbiAgICAgICAgICAgICAgICB9fTwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAge3tnZXRDZWxsVGl0bGUocm93LCBjb2wpfX1cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgPCEtLSBUb3RhbCByb3cgLS0+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzVG90YWxSb3dcIj5cclxuICAgICAgICAgICAgICAgIHt7IGdldFRvdGFsQW1vdW50KGNvbCkgfX1cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgPCEtLSBJbnZvaWNlIEltYWdlIC0tPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2wuZmllbGQgPT0gJ2ludm9pY2UuaW52b2ljZV9pbWFnZSdcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyB6b29tOiAwLjdcIj5cclxuICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICB0aXRsZT1cInt7IGdldE5lc3RlZFZhbHVlKHJvdywgY29sLmZpZWxkKSB8fCAnQXR0YWNobWVudCcgfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJkb3dubG9hZEF0dGNobWVudChnZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZCkpXCJcclxuICAgICAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArXHJcbiAgICAgICAgICAgICAgICAgICAgICAnZGF0YS1ncmlkL2RvY3VtZW50LWljb25zLycgK1xyXG4gICAgICAgICAgICAgICAgICAgICAgZ2V0RXh0ZW50aW9uKGdldE5lc3RlZFZhbHVlKHJvdywgY29sLmZpZWxkKSkgK1xyXG4gICAgICAgICAgICAgICAgICAgICAgJy5zdmcnXHJcbiAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICA8IS0tIEltYWdlIGNlbGwgLS0+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbC50eXBlID09ICdpbWFnZScgJiYgIWlzVG90YWxSb3dcIj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcclxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0SW1hZ2VQbGFjZWhvbGRlcjtcclxuICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB7IHJvdzogcm93LCBjb2w6IGNvbCB9XHJcbiAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICAgICghY29sPy5jZWxsUmVuZGVyZXIgJiYgc2hvd0NlbGxEZXRhaWxzQm94ICYmXHJcbiAgICAgICAgICAgICAgICBnZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZCk/Lmxlbmd0aCA+IDUwICYmIGNvbC50eXBlICE9PSAnaW1hZ2UnKSB8fFxyXG4gICAgICAgICAgICAgIChpc05lc3RlZFZhbHVlQXJyYXkocm93LCBjb2wuZmllbGQpICYmXHJcbiAgICAgICAgICAgICAgICBnZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZCk/Lmxlbmd0aCA+IDEpXHJcbiAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwidG9nZ2xlLWljb24gZGF0YS1ncmlkLXN2Zy1pY29uIG1zLTIgY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxyXG4gICAgICAgICAgICAgIGlzRXhwYW5kZWQocm93LCBjb2wpXHJcbiAgICAgICAgICAgICAgICA/IHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2NoZXZyb24tZG93bi5zdmcnXHJcbiAgICAgICAgICAgICAgICA6IHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2NoZXZyb24tcmlnaHQuc3ZnJ1xyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiXHJcbiAgICAgICAgICAgICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgICAgICAgIHRvZ2dsZUV4cGFuZE9mTG9uZ0NlbGxUZXh0KHJvdywgY29sLCBjb2x1bW5zLCB0cnVlKVxyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAoZGJsY2xpY2spPVwiJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7ICRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXHJcbiAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgIDwhLS0gRXhwYW5kIC8gQ29sbGFwc2UgaWNvbiAtLT5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPCEtLSBFeHBhbmRlZCB0ZXh0IC0tPlxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgIGNsYXNzPVwicG9zaXRpb24tYWJzb2x1dGUgdy0xMDAgZXhwYW5kZWQtYm94XCJcclxuICAgICAgICAgICpuZ0lmPVwiaXNFeHBhbmRlZChyb3csIGNvbClcIlxyXG4gICAgICAgICAgW3N0eWxlLnpJbmRleF09XCJnZXRaSW5kZXgocm93LCBjb2wpXCJcclxuICAgICAgICAgIHN0eWxlPVwidG9wOiAxMDAlOyBsZWZ0OiAwXCJcclxuICAgICAgICAgIFthdHRyLmlkXT1cIihyb3cuaWQgfHwgcm93Ll9pZCkgKyAnLScgKyAoY29sLmlkIHx8IGNvbC5faWQpXCJcclxuICAgICAgICAgIFtjbGFzcy5pbnZpc2libGVdPVwiIXNob3dEZXRhaWxzQm94XCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXHJcbiAgICAgICAgICAgICAgZnVsbFRleHRUZW1wbGF0ZTtcclxuICAgICAgICAgICAgICBjb250ZXh0OiB7XHJcbiAgICAgICAgICAgICAgICByb3c6IHJvdyxcclxuICAgICAgICAgICAgICAgIGNvbDogY29sLFxyXG4gICAgICAgICAgICAgICAgaXNBcnJheTogaXNOZXN0ZWRWYWx1ZUFycmF5KHJvdywgY29sLmZpZWxkKVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgXCJcclxuICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPCEtLSBIZWFkZXJzIEFjdGlvbiBMaXN0IE9uIGNsaWNraW5nIHRocmVlIGRvdHMgLS0+XHJcblxyXG48bmctdGVtcGxhdGVcclxuICAjY29sdW1uTWVudVxyXG4gIGxldC1jb2w9XCJjb2xcIlxyXG4gIGxldC1pc05lc3RlZFRhYmxlPVwiaXNOZXN0ZWRUYWJsZVwiXHJcbiAgbGV0LWNvbHVtbnM9XCJjb2x1bW5zXCJcclxuICBsZXQtc2VjdGlvbj1cInNlY3Rpb25cIlxyXG4+XHJcbiAgPGRpdlxyXG4gICAgY2xhc3M9XCJjb2x1bW4tbWVudSB0aHJlZS1kb3RzLWNvbC1tZW51XCJcclxuICAgIFtjbGFzcy52aXN1YWxseS1oaWRkZW5dPVwiaXNNZW51ZUhpZGRlblwiXHJcbiAgICAqbmdJZj1cImFjdGl2ZUNvbCAmJiAhaXNUaHJlZURvdHNGaWx0ZXJPcGVuXCJcclxuICAgIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwiZHJvcGRvd25zQmFja2dyb3VuZENvbG9yXCJcclxuICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxyXG4gICAgW3N0eWxlLmNvbG9yXT1cImhlYWRlclRleHRDb2xvclwiXHJcbiAgPlxyXG4gICAgPCEtLSBTb3J0IEFzY2VuZGluZyAtLT5cclxuICAgIDxkaXYgY2xhc3M9XCJib3JkZXItYmVsb3cgcGItMlwiIFtjbGFzcy5kaXNhYmxlLXNvcnRpbmddPVwiIWNvbC5pc19zb3J0YWJsZVwiPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cIm11dGVkLXRleHQgZnMtN1wiIHN0eWxlPVwibWFyZ2luLWxlZnQ6IDEycHhcIj5Tb3J0PC9zcGFuPlxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgIGNvbHVtblRocmVlZG90c011bnVDb25maWc/LnNob3dBc2NlbmRpbmcgJiZcclxuICAgICAgICAgIChzb3J0aW5nQ29uZmlnPy5maWVsZCAhPSBjb2wuZmllbGQgfHxcclxuICAgICAgICAgICAgc29ydGluZ0NvbmZpZz8ub3JkZXJfYnkgPT0gJ2Rlc2MnKVxyXG4gICAgICAgIFwiXHJcbiAgICAgICAgY2xhc3M9XCJjb2x1bW4tbWVudS1pdGVtXCJcclxuICAgICAgICAoY2xpY2spPVwic29ydEFzYyhhY3RpdmVDb2wpXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxzcGFuXHJcbiAgICAgICAgICBbaW5saW5lU1ZHXT1cInNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2Fycm93LXVwLnN2ZydcIlxyXG4gICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gbWUtMlwiXHJcbiAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICBTb3J0IEFzY2VuZGluZ1xyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDwhLS0gU29ydCBEZXNjZW5kaW5nIC0tPlxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgIGNvbHVtblRocmVlZG90c011bnVDb25maWc/LnNob3dEZXNjZW5kaW5nICYmXHJcbiAgICAgICAgICAoc29ydGluZ0NvbmZpZz8uZmllbGQgIT0gY29sLmZpZWxkIHx8XHJcbiAgICAgICAgICAgIHNvcnRpbmdDb25maWc/Lm9yZGVyX2J5ID09ICdhc2MnKVxyXG4gICAgICAgIFwiXHJcbiAgICAgICAgY2xhc3M9XCJjb2x1bW4tbWVudS1pdGVtXCJcclxuICAgICAgICAoY2xpY2spPVwic29ydERlc2MoYWN0aXZlQ29sKVwiXHJcbiAgICAgID5cclxuICAgICAgICA8c3BhblxyXG4gICAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9hcnJvdy1kb3duLnN2ZydcIlxyXG4gICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gbWUtMlwiXHJcbiAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICBTb3J0IERlc2NlbmRpbmdcclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgIHNvcnRpbmdDb25maWc/LmZpZWxkID09PSBjb2wuZmllbGQgJiZcclxuICAgICAgICAgIChzb3J0aW5nQ29uZmlnPy5vcmRlcl9ieSA9PT0gJ2FzYycgfHxcclxuICAgICAgICAgICAgc29ydGluZ0NvbmZpZz8ub3JkZXJfYnkgPT09ICdkZXNjJylcclxuICAgICAgICBcIlxyXG4gICAgICAgIGNsYXNzPVwiY29sdW1uLW1lbnUtaXRlbVwiXHJcbiAgICAgICAgKGNsaWNrKT1cInJlc2V0U29ydChhY3RpdmVDb2wpXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxzcGFuXHJcbiAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxyXG4gICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9hcnJvdy1jb3VudGVyY2xvY2t3aXNlLnN2ZydcclxuICAgICAgICAgIFwiXHJcbiAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBtZS0yXCJcclxuICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgIFJlc2V0IFNvcnRcclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJweS0yIGJvcmRlci1iZWxvdyB0aHJlZS1kb3RzLWZpbHRlclwiIFtjbGFzcy5kaXNhYmxlLXNvcnRpbmddPVwiY29sLnR5cGUgPT0gJ2ltYWdlJ1wiPlxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgKm5nSWY9XCJjb2x1bW5UaHJlZWRvdHNNdW51Q29uZmlnPy5zaG93RmlsdGVyXCJcclxuICAgICAgICBjbGFzcz1cImNvbHVtbi1tZW51LWl0ZW0gdGhyZWUtZG90cy1maWx0ZXJcIlxyXG4gICAgICAgIChjbGljayk9XCJvcGVuRmlsdGVyb25UaHJlZURvdHNDbGljayhjb2wpXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxzcGFuXHJcbiAgICAgICAgICBbaW5saW5lU1ZHXT1cInNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2ZpbHRlci0yLnN2ZydcIlxyXG4gICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gbWUtMlwiXHJcbiAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICBGaWx0ZXJcclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwicHktMiBib3JkZXItYmVsb3dcIj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJtdXRlZC10ZXh0IGZzLTdcIiBzdHlsZT1cIm1hcmdpbi1sZWZ0OiAxMnB4XCI+UGluPC9zcGFuPlxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgKm5nSWY9XCJjb2x1bW5UaHJlZWRvdHNNdW51Q29uZmlnPy5zaG93UGlubGVmdCAmJiBjb2w/LnBpbm5lZCAhPT0gJ2xlZnQnXCJcclxuICAgICAgICBjbGFzcz1cImNvbHVtbi1tZW51LWl0ZW1cIlxyXG4gICAgICAgIChjbGljayk9XCJcclxuICAgICAgICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgICAgIHVwZGF0ZUNvbHVtblBpbkluU291cmNlQnlGaWVsZChcclxuICAgICAgICAgICAgYWN0aXZlQ29sLFxyXG4gICAgICAgICAgICAnbGVmdCcsXHJcbiAgICAgICAgICAgIGlzTmVzdGVkVGFibGUsXHJcbiAgICAgICAgICAgIGNvbHVtbnNcclxuICAgICAgICAgIClcclxuICAgICAgICBcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPHNwYW5cclxuICAgICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvcGluLWxlZnQuc3ZnJ1wiXHJcbiAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBtZS0yXCJcclxuICAgICAgICA+PC9zcGFuXHJcbiAgICAgICAgPlBpbiBMZWZ0XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdlxyXG4gICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICBjb2x1bW5UaHJlZWRvdHNNdW51Q29uZmlnPy5zaG93UGlucmlnaHQgJiYgY29sPy5waW5uZWQgIT09ICdyaWdodCdcclxuICAgICAgICBcIlxyXG4gICAgICAgIGNsYXNzPVwiY29sdW1uLW1lbnUtaXRlbVwiXHJcbiAgICAgICAgKGNsaWNrKT1cIlxyXG4gICAgICAgICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgICAgdXBkYXRlQ29sdW1uUGluSW5Tb3VyY2VCeUZpZWxkKFxyXG4gICAgICAgICAgICBhY3RpdmVDb2wsXHJcbiAgICAgICAgICAgICdyaWdodCcsXHJcbiAgICAgICAgICAgIGlzTmVzdGVkVGFibGUsXHJcbiAgICAgICAgICAgIGNvbHVtbnNcclxuICAgICAgICAgIClcclxuICAgICAgICBcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPHNwYW5cclxuICAgICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvcGluLXJpZ2h0LnN2ZydcIlxyXG4gICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gZGF0YS1ncmlkLXN2Zy1pY29uIG1lLTJcIlxyXG4gICAgICAgID48L3NwYW5cclxuICAgICAgICA+UGluIFJpZ2h0XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdlxyXG4gICAgICAgICpuZ0lmPVwiY29sPy5waW5uZWRcIlxyXG4gICAgICAgIGNsYXNzPVwiY29sdW1uLW1lbnUtaXRlbVwiXHJcbiAgICAgICAgKGNsaWNrKT1cIlxyXG4gICAgICAgICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgICAgdXBkYXRlQ29sdW1uUGluSW5Tb3VyY2VCeUZpZWxkKFxyXG4gICAgICAgICAgICBhY3RpdmVDb2wsXHJcbiAgICAgICAgICAgIG51bGwsXHJcbiAgICAgICAgICAgIGlzTmVzdGVkVGFibGUsXHJcbiAgICAgICAgICAgIGNvbHVtbnNcclxuICAgICAgICAgIClcclxuICAgICAgICBcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPHNwYW5cclxuICAgICAgICAgIFtpbmxpbmVTVkddPVwiXHJcbiAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2xheW91dC10aHJlZS1jb2x1bW5zLnN2ZydcclxuICAgICAgICAgIFwiXHJcbiAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBtZS0yXCJcclxuICAgICAgICA+PC9zcGFuXHJcbiAgICAgICAgPlVucGluXHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdlxyXG4gICAgICAqbmdJZj1cImNvbHVtblRocmVlZG90c011bnVDb25maWc/LnNob3dBdXRvc2l6ZVRoaXNDb2x1bW5cIlxyXG4gICAgICBjbGFzcz1cImNvbHVtbi1tZW51LWl0ZW1cIlxyXG4gICAgICAoY2xpY2spPVwiYXV0b3NpemVDb2x1bW4oYWN0aXZlQ29sKVwiXHJcbiAgICA+XHJcbiAgICAgIDxzcGFuXHJcbiAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2Fycm93cy1leHBhbmQtdmVydGljYWwuc3ZnJ1xyXG4gICAgICAgIFwiXHJcbiAgICAgICAgY2xhc3M9XCJtZS0yXCJcclxuICAgICAgPjwvc3Bhbj5cclxuICAgICAgQXV0b3NpemUgVGhpcyBDb2x1bW5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDwhLS0gQXV0b3NpemUgQWxsIENvbHVtbnMgLS0+XHJcbiAgICA8ZGl2XHJcbiAgICAgICpuZ0lmPVwiY29sdW1uVGhyZWVkb3RzTXVudUNvbmZpZz8uc2hvd0F1dG9zaXplQWxsQ29sdW1uc1wiXHJcbiAgICAgIGNsYXNzPVwiY29sdW1uLW1lbnUtaXRlbVwiXHJcbiAgICAgIChjbGljayk9XCJhdXRvc2l6ZUFsbENvbHVtbnMoKVwiXHJcbiAgICA+XHJcbiAgICAgIDxzcGFuXHJcbiAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2Fycm93cy1hbmdsZS1leHBhbmQuc3ZnJ1xyXG4gICAgICAgIFwiXHJcbiAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gbWUtMlwiXHJcbiAgICAgID48L3NwYW5cclxuICAgICAgPkF1dG9zaXplIEFsbCBDb2x1bW5zXHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8IS0tIEdyb3VwIEJ5IC0tPlxyXG4gICAgPGRpdlxyXG4gICAgICAqbmdJZj1cInNob3dSb3dzR3JvdXBpbmdcIlxyXG4gICAgICBjbGFzcz1cImNvbHVtbi1tZW51LWl0ZW1cIlxyXG4gICAgICAoY2xpY2spPVwiZ3JvdXBCeShhY3RpdmVDb2wpXCJcclxuICAgICAgW2NsYXNzLmRpc2FibGUtc29ydGluZ109XCIhY29sLmlzX2dyb3VwYWJsZVwiXHJcbiAgICA+XHJcbiAgICAgIDxzcGFuXHJcbiAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9kaWFncmFtLTMuc3ZnJ1wiXHJcbiAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gbWUtMlwiXHJcbiAgICAgID48L3NwYW4+XHJcbiAgICAgIEdyb3VwIGJ5IHt7IGNvbC5oZWFkZXIgfX1cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDwhLS0gQ2hvb3NlIENvbHVtbnMgLS0+XHJcbiAgICA8ZGl2XHJcbiAgICAgICpuZ0lmPVwiY29sdW1uVGhyZWVkb3RzTXVudUNvbmZpZz8uc2hvd0Nob3NlQ29sdW1uc1wiXHJcbiAgICAgIGNsYXNzPVwiY29sdW1uLW1lbnUtaXRlbVwiXHJcbiAgICAgIChjbGljayk9XCJjaG9vc2VDb2x1bW5zKClcIlxyXG4gICAgPlxyXG4gICAgICA8c3BhblxyXG4gICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvdWktY2hlY2tzLWdyaWQuc3ZnJ1wiXHJcbiAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gbWUtMlwiXHJcbiAgICAgID48L3NwYW4+XHJcbiAgICAgIENob29zZSBDb2x1bW5zXHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8IS0tIFJlc2V0IENvbHVtbnMgLS0+XHJcbiAgICA8ZGl2XHJcbiAgICAgICpuZ0lmPVwiY29sdW1uVGhyZWVkb3RzTXVudUNvbmZpZz8uc2hvd1Jlc2V0Q29sdW1uc1wiXHJcbiAgICAgIGNsYXNzPVwiY29sdW1uLW1lbnUtaXRlbVwiXHJcbiAgICAgIChjbGljayk9XCJyZXNldENvbHVtbnMoKVwiXHJcbiAgICA+XHJcbiAgICAgIDxzcGFuXHJcbiAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2Fycm93LWNvdW50ZXJjbG9ja3dpc2Uuc3ZnJ1xyXG4gICAgICAgIFwiXHJcbiAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gbWUtMlwiXHJcbiAgICAgID48L3NwYW5cclxuICAgICAgPlJlc2V0IENvbHVtbnNcclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG4gIDxkaXZcclxuICAgIEBzbGlkZVRvZ2dsZVxyXG4gICAgKm5nSWY9XCJpc1RocmVlRG90c0ZpbHRlck9wZW5cIlxyXG4gICAgY2xhc3M9XCJ0aHJlZS1kb3RzLWNvbC1tZW51IHBvc2l0aW9uLXJlbGF0aXZlXCJcclxuICAgIFtzdHlsZS5yaWdodC5weF09XCJzZWN0aW9uID09ICdyaWdodCcgPyBudWxsIDogY29sLndpZHRoIC0gNDVcIlxyXG4gICAgW2NsYXNzLnZpc3VhbGx5LWhpZGRlbl09XCJpc01lbnVlSGlkZGVuXCJcclxuICA+XHJcbiAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiZmlsdGVyTWVudTsgY29udGV4dDogeyBjb2w6IGNvbCB9XCJcclxuICAgID48L25nLWNvbnRhaW5lcj5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjwhLS0gRmlsdGVyIE1lbnVlIC0tPlxyXG48bmctdGVtcGxhdGUgI2ZpbHRlck1lbnUgbGV0LWNvbD1cImNvbFwiPlxyXG4gIDxkaXZcclxuICAgIGNsYXNzPVwiZmlsdGVyLW1lbnUtY29udGFpbmVyIGZpbHRlci1tZW51XCJcclxuICAgIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwiZHJvcGRvd25zQmFja2dyb3VuZENvbG9yXCJcclxuICA+XHJcbiAgICA8IS0tIERyb3Bkb3duIFR5cGUgLS0+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sLnR5cGUgPT09ICdkcm9wZG93bic7IGVsc2UgdGV4dEZpbHRlclwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZmlsdGVyLWRyb3Bkb3duLXNlY3Rpb24gcC0xXCI+XHJcbiAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21cIlxyXG4gICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWFyY2guLi5cIlxyXG4gICAgICAgICAgdHlwZT1cInNlYXJjaFwiXHJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cImFkZEZpbHRlckNvbHVtbklucHV0XCJcclxuICAgICAgICAvPlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBtYi0xIG10LTIgbXMtMSBzZWxlY3QtYWxsLWZpbHRlclwiPlxyXG4gICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiXHJcbiAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgICAgIFtjaGVja2VkXT1cImlzQWxsU2lkZUZpbHRlck9wdGlvbnNTZWxlY3RlZChjb2wpXCJcclxuICAgICAgICAgICAgKGNoYW5nZSk9XCJ0b2dnbGVTZWxlY3RBbGxTaWRlRmlsdGVycyhjb2wsICRldmVudClcIlxyXG4gICAgICAgICAgICBpZD1cInNlbGVjdEFsbF97eyBjb2wuZmllbGQgfX1cIlxyXG4gICAgICAgICAgLz5cclxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWxcIiBmb3I9XCJzZWxlY3RBbGxfe3sgY29sLmZpZWxkIH19XCI+XHJcbiAgICAgICAgICAgIFNlbGVjdCBBbGxcclxuICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImRyb3Bkb3duLW9wdGlvbnMgcHMtMVwiPlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2sgbWItMVwiXHJcbiAgICAgICAgICAgICpuZ0Zvcj1cIlxyXG4gICAgICAgICAgICAgIGxldCBvcHRpb24gb2Ygc2VsZWN0ZWRDb2x1bW5Gb3JGaWx0ZXI/LmNvbHVtbl9kcm9wZG93bl92YWx1ZVxyXG4gICAgICAgICAgICAgICAgfCBmaWx0ZXIgOiBhZGRGaWx0ZXJDb2x1bW5JbnB1dCA6ICd2YWx1ZSc7XHJcbiAgICAgICAgICAgICAgdHJhY2tCeTogdHJhY2tCeUlkO1xyXG4gICAgICAgICAgICAgIGxldCBpID0gaW5kZXhcclxuICAgICAgICAgICAgXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCJcclxuICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxyXG4gICAgICAgICAgICAgIFtpZF09XCJpXCJcclxuICAgICAgICAgICAgICBbY2hlY2tlZF09XCJcclxuICAgICAgICAgICAgICAgIGN1cnJlbnRGaWx0ZXJTZWxlY3RlZElkcy5oYXMob3B0aW9uPy5pZCA/PyBvcHRpb24/Ll9pZCA/PyBvcHRpb24pXHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAoY2hhbmdlKT1cInRvZ2dsZVNlbGVjdGlvbkluRmlsdGVyKG9wdGlvbilcIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsIGZ3LXNlbWlib2xkXCIgW2Zvcl09XCJpXCI+XHJcbiAgICAgICAgICAgICAge3sgb3B0aW9uPy52YWx1ZSA/PyBvcHRpb24/Lm5hbWUgPz8gb3B0aW9uIH19XHJcbiAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj4gLS0+XHJcbiAgICAgICAgPGNkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydFxyXG4gICAgICAgICAgICAgIGl0ZW1TaXplPVwiMzJcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZmlsdGVyLXZpZXdwb3J0XCJcclxuICAgICAgICAgICAgICBzdHlsZT1cImhlaWdodDogMTIwcHhcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrIG1iLTEgbXMtMVwiXHJcbiAgICAgICAgICAgICAgICAqY2RrVmlydHVhbEZvcj1cIlxyXG4gICAgICAgICAgICAgICAgICBsZXQgb3B0aW9uIG9mIHNlbGVjdGVkQ29sdW1uRm9yRmlsdGVyPy5jb2x1bW5fZHJvcGRvd25fdmFsdWVcclxuICAgICAgICAgICAgICAgICAgICB8IGZpbHRlciA6IGFkZEZpbHRlckNvbHVtbklucHV0IDogJ3ZhbHVlJztcclxuICAgICAgICAgICAgICAgICAgdHJhY2tCeTogdHJhY2tCeUlkXHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIlxyXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxyXG4gICAgICAgICAgICAgICAgICBbaWRdPVwib3B0aW9uPy5pZCA/PyBvcHRpb24/Ll9pZCA/PyBvcHRpb25cIlxyXG4gICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJcclxuICAgICAgICAgICAgICAgICAgICBjdXJyZW50RmlsdGVyU2VsZWN0ZWRJZHMuaGFzKG9wdGlvbj8uaWQgPz8gb3B0aW9uPy5faWQgPz8gb3B0aW9uKVxyXG4gICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cInRvZ2dsZVNlbGVjdGlvbkluRmlsdGVyKG9wdGlvbilcIlxyXG4gICAgICAgICAgICAgICAgLz5cclxuXHJcbiAgICAgICAgICAgICAgICA8bGFiZWxcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsIGZ3LXNlbWlib2xkXCJcclxuICAgICAgICAgICAgICAgICAgW2Zvcl09XCJvcHRpb24/LmlkID8/IG9wdGlvbj8uX2lkID8/IG9wdGlvblwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIHt7IG9wdGlvbj8udmFsdWUgPz8gb3B0aW9uPy5uYW1lID8/IG9wdGlvbiB9fVxyXG4gICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvY2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgIDwhLS0gVGV4dCBGaWx0ZXIgU2VjdGlvbiAtLT5cclxuICAgIDxuZy10ZW1wbGF0ZSAjdGV4dEZpbHRlcj5cclxuICAgICAgPGRpdiBjbGFzcz1cImZpbHRlci10ZXh0LXNlY3Rpb25cIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBtYi0yXCI+XHJcbiAgICAgICAgICA8c2VsZWN0XHJcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1zZWxlY3QgZm9ybS1zZWxlY3Qtc20gY3VzdG9tLXNlbGVjdFwiXHJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZmlyc3RDb25kaXRpb25cIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2VsZWN0ZWRDb2x1bW5Gb3JGaWx0ZXIudHlwZSAhPT0gJ2RhdGUnXCI+XHJcbiAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImNvbnRhaW5cIj5Db250YWluczwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJkb2VzX25vdF9jb250YWluXCI+RG9lcyBOb3QgQ29udGFpbjwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJlcXVhbFwiPkVxdWFsczwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJiZWZvcmVcIj5TdGFydHMgV2l0aDwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJhZnRlclwiPkVuZHMgV2l0aDwvb3B0aW9uPlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWxlY3RlZENvbHVtbkZvckZpbHRlci50eXBlID09ICdkYXRlJ1wiPlxyXG4gICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJlcXVhbFwiPkVxdWFscyBUbzwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJub3RfZXF1YWxcIj5Ob3QgRXF1YWw8L29wdGlvbj5cclxuICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiYWZ0ZXJcIj5BZnRlcjwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJiZWZvcmVcIj5CZWZvcmU8L29wdGlvbj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICBbdHlwZV09XCJjb2wudHlwZSA9PSAnc3RyaW5nJyA/ICd0ZXh0JyA6IGNvbC50eXBlXCJcclxuICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbSBtYi0zXCJcclxuICAgICAgICAgIHBsYWNlaG9sZGVyPVwiVmFsdWVcIlxyXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJmaXJzdFZhbHVlXCJcclxuICAgICAgICAgICNmaWx0ZXJNZW51ZVRleHRjaElucHV0XHJcbiAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJhcHBseURyb3Bkb3duRmlsdGVyKClcIlxyXG4gICAgICAgIC8+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIG1iLTMgZC1mbGV4IGZsZXgtcm93XCI+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjayBmb3JtLWNoZWNrLWlubGluZSBtLTAgY29sLTQgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dCBmaWx0ZXItcmFkaW8taW5wdXRzXCJcclxuICAgICAgICAgICAgICB0eXBlPVwicmFkaW9cIlxyXG4gICAgICAgICAgICAgIG5hbWU9XCJjb25kaXRpb25cIlxyXG4gICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY29uZGl0aW9uXCJcclxuICAgICAgICAgICAgICB2YWx1ZT1cImFuZFwiXHJcbiAgICAgICAgICAgICAgaWQ9XCJhbmRfe3sgY29sLmZpZWxkIH19XCJcclxuICAgICAgICAgICAgICAoY2hhbmdlKT1cImNkci5kZXRlY3RDaGFuZ2VzKClcIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsIG1iLTAgbXQtMVwiIGZvcj1cImFuZF97eyBjb2wuZmllbGQgfX1cIlxyXG4gICAgICAgICAgICAgID5BTkQ8L2xhYmVsXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2sgZm9ybS1jaGVjay1pbmxpbmUgbS0wIGNvbC00IGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTEgZ2FwLTFcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2staW5wdXQgZmlsdGVyLXJhZGlvLWlucHV0c1wiXHJcbiAgICAgICAgICAgICAgdHlwZT1cInJhZGlvXCJcclxuICAgICAgICAgICAgICBuYW1lPVwiY29uZGl0aW9uXCJcclxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNvbmRpdGlvblwiXHJcbiAgICAgICAgICAgICAgdmFsdWU9XCJvclwiXHJcbiAgICAgICAgICAgICAgaWQ9XCJvcl97eyBjb2wuZmllbGQgfX1cIlxyXG4gICAgICAgICAgICAgIChjaGFuZ2UpPVwiY2RyLmRldGVjdENoYW5nZXMoKVwiXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWwgbWItMCBtdC0xXCIgZm9yPVwib3Jfe3sgY29sLmZpZWxkIH19XCJcclxuICAgICAgICAgICAgICA+T1I8L2xhYmVsXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2sgZm9ybS1jaGVjay1pbmxpbmUgbS0wIGNvbC00IGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTEgZ2FwLTFcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2staW5wdXQgZmlsdGVyLXJhZGlvLWlucHV0c1wiXHJcbiAgICAgICAgICAgICAgdHlwZT1cInJhZGlvXCJcclxuICAgICAgICAgICAgICBuYW1lPVwiY29uZGl0aW9uXCJcclxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNvbmRpdGlvblwiXHJcbiAgICAgICAgICAgICAgdmFsdWU9XCJub25lXCJcclxuICAgICAgICAgICAgICBpZD1cIm5vbmVfe3sgY29sLmZpZWxkIH19XCJcclxuICAgICAgICAgICAgICAoY2hhbmdlKT1cImNkci5kZXRlY3RDaGFuZ2VzKClcIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsIG1iLTAgbXQtMVwiIGZvcj1cIm5vbmVfe3sgY29sLmZpZWxkIH19XCJcclxuICAgICAgICAgICAgICA+Tm9uZTwvbGFiZWxcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBAc2xpZGVUb2dnbGUgKm5nSWY9XCJmaXJzdFZhbHVlICYmIGNvbmRpdGlvbiAhPSAnbm9uZSdcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIG1iLTJcIj5cclxuICAgICAgICAgICAgPHNlbGVjdFxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1zZWxlY3QgZm9ybS1zZWxlY3Qtc20gY3VzdG9tLXNlbGVjdFwiXHJcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzZWNvbmRDb25kaXRpb25cIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlbGVjdGVkQ29sdW1uRm9yRmlsdGVyLnR5cGUgIT09ICdkYXRlJ1wiPlxyXG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImNvbnRhaW5cIj5Db250YWluczwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImRvZXNfbm90X2NvbnRhaW5cIj5Eb2VzIE5vdCBDb250YWluPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiZXF1YWxcIj5FcXVhbHM8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJiZWZvcmVcIj5TdGFydHMgV2l0aDwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImFmdGVyXCI+RW5kcyBXaXRoPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWxlY3RlZENvbHVtbkZvckZpbHRlci50eXBlID09ICdkYXRlJ1wiPlxyXG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImVxdWFsXCI+RXF1YWxzIFRvPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwibm90X2VxdWFsXCI+Tm90IEVxdWFsPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiYWZ0ZXJcIj5BZnRlcjwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImJlZm9yZVwiPkJlZm9yZTwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICBbdHlwZV09XCJjb2wudHlwZSA9PSAnc3RyaW5nJyA/ICd0ZXh0JyA6IGNvbC50eXBlXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtIG1iLTNcIlxyXG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlY29uZCBWYWx1ZVwiXHJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwic2Vjb25kVmFsdWVcIlxyXG4gICAgICAgICAgLz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgIDwhLS0gQWN0aW9ucyAtLT5cclxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZ2FwLTIgbXQtMlwiPlxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1wcmltYXJ5IGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciB3LTEwMFwiXHJcbiAgICAgICAgc3R5bGU9XCJoZWlnaHQ6IDMwcHhcIlxyXG4gICAgICAgIChjbGljayk9XCJhcHBseURyb3Bkb3duRmlsdGVyKClcIlxyXG4gICAgICA+XHJcbiAgICAgICAgQXBwbHlcclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXZcclxuICAgICAgICBjbGFzcz1cImJ0biBidG4tc20gYnRuLXNlY29uZGFyeSBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgdy0xMDBcIlxyXG4gICAgICAgIHN0eWxlPVwiaGVpZ2h0OiAzMHB4XCJcclxuICAgICAgICAoY2xpY2spPVwicmVzZXRTaWRlRmlsdGVyKGNvbClcIlxyXG4gICAgICA+XHJcbiAgICAgICAgUmVzZXRcclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjwhLS0gU2lkZSBNZW51ZSAtLT5cclxuXHJcbjwhLS0gQ29sdW1uIFBhbm5lbCAvIFBpdm90IE1vZGUgLyBTZWFyY2hpbmcgLS0+XHJcblxyXG48bmctdGVtcGxhdGUgI2NvbHVtblBhbm5lbD5cclxuICA8ZGl2IGNsYXNzPVwiY29sdW1uLXBhbmVsLWhlYWRlclwiPlxyXG4gICAgPCEtLSBQaXZvdCBUb2dnbGUgLS0+XHJcbiAgICA8ZGl2XHJcbiAgICAgIGNsYXNzPVwiZm9ybS1jaGVjayBmb3JtLXN3aXRjaCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIG1iLTIgcGl2b3QtbW9kZSBweC01IG1zLTIgZC1ub25lXCJcclxuICAgID5cclxuICAgICAgPGlucHV0XHJcbiAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0IG1lLTJcIlxyXG4gICAgICAgIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgaWQ9XCJwaXZvdFRvZ2dsZVwiXHJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJwaXZvdE1vZGVcIlxyXG4gICAgICAvPlxyXG4gICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsXCIgZm9yPVwicGl2b3RUb2dnbGVcIj5QaXZvdCBNb2RlPC9sYWJlbD5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDwhLS0gU2VsZWN0IEFsbCAmIFNlYXJjaCAtLT5cclxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIG1iLTIgcHgtMyBtdC0zXCI+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwiZmlsdGVyLWljb24td3JhcHBlciBtZS0yXCIgKm5nSWY9XCJzaG93Q29sdW1uc0dyb3VwaW5nXCI+XHJcbiAgICAgICAgPHNwYW5cclxuICAgICAgICAgIGNsYXNzPVwidG9nZ2xlLWljb24gZGF0YS1ncmlkLXN2Zy1pY29uXCJcclxuICAgICAgICAgIFtpbmxpbmVTVkddPVwiXHJcbiAgICAgICAgICAgIGFjY29yZGlvblN0YXRlID09PSAnYWxsJ1xyXG4gICAgICAgICAgICAgID8gc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvY2hldnJvbi1kb3duLnN2ZydcclxuICAgICAgICAgICAgICA6IGFjY29yZGlvblN0YXRlID09PSAnc29tZSdcclxuICAgICAgICAgICAgICA/IHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2Rhc2guc3ZnJ1xyXG4gICAgICAgICAgICAgIDogc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvY2hldnJvbi1yaWdodC5zdmcnXHJcbiAgICAgICAgICBcIlxyXG4gICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUFsbEFjY29yZGlvbnMoKVwiXHJcbiAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgPC9zcGFuPlxyXG4gICAgICA8aW5wdXRcclxuICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxyXG4gICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dCBtZS0yXCJcclxuICAgICAgICBbY2hlY2tlZF09XCJhbGxDb2x1bW5zU2VsZWN0ZWQoKVwiXHJcbiAgICAgICAgKGNoYW5nZSk9XCJ0b2dnbGVBbGxDb2x1bW5zVmlzaWJpbGl0eSgpXCJcclxuICAgICAgLz5cclxuICAgICAgPGlucHV0XHJcbiAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbVwiXHJcbiAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWFyY2ggY29sdW1ucy4uLlwiXHJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJjb2x1bW5TZWFyY2hcIlxyXG4gICAgICAvPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPCEtLSBTZXBhcmF0b3IgLS0+XHJcbiAgICA8aHIgY2xhc3M9XCJteS0yXCIgLz5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjwhLS0gUmlnaHQgQ29sdW1ucyBNZW51ZSAtLT5cclxuXHJcbjwhLS0gQ29sdW1uIFBhbmVsIEl0ZW0gVGVtcGxhdGUgLS0+XHJcbjxuZy10ZW1wbGF0ZSAjY29sdW1uUGFuZWxJdGVtIGxldC1jb2w9XCJjb2xcIj5cclxuICA8IS0tIEdyb3VwIENvbHVtbiAtLT5cclxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sLmNoaWxkcmVuPy5sZW5ndGhcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2x1bW4tZ3JvdXAgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBtYi0yXCI+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwiZmlsdGVyLWljb24td3JhcHBlciBtZS0yXCI+XHJcbiAgICAgICAgPHNwYW5cclxuICAgICAgICAgIGNsYXNzPVwidG9nZ2xlLWljb24gZGF0YS1ncmlkLXN2Zy1pY29uXCJcclxuICAgICAgICAgIFtpbmxpbmVTVkddPVwiXHJcbiAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2NoZXZyb24tcmlnaHQuc3ZnJ1xyXG4gICAgICAgICAgXCJcclxuICAgICAgICAgIFtjbGFzcy5yb3RhdGVdPVwiY29sLmV4cGFuZGVkXCJcclxuICAgICAgICAgIChjbGljayk9XCJjb2wuZXhwYW5kZWQgPSAhY29sLmV4cGFuZGVkXCJcclxuICAgICAgICA+PC9zcGFuPlxyXG4gICAgICA8L3NwYW4+XHJcbiAgICAgIDxpbnB1dFxyXG4gICAgICAgIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0IG1lLTJcIlxyXG4gICAgICAgIFtpZF09XCInZ3JvdXBfJyArIGNvbC5oZWFkZXJcIlxyXG4gICAgICAgIFtjaGVja2VkXT1cImlzQ29sdW1uVmlzaWJsZShjb2wpXCJcclxuICAgICAgICAoY2hhbmdlKT1cInRvZ2dsZUdyb3VwVmlzaWJpbGl0eShjb2wpXCJcclxuICAgICAgLz5cclxuICAgICAgPHNwYW5cclxuICAgICAgICBbaW5saW5lU1ZHXT1cInNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2dyaWQtM3gyLWdhcC5zdmcnXCJcclxuICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgbWUtMlwiXHJcbiAgICAgID48L3NwYW4+XHJcbiAgICAgIDxsYWJlbFxyXG4gICAgICAgIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBtYi0wIHctMTAwXCJcclxuICAgICAgICBbZm9yXT1cIidncm91cF8nICsgY29sLmhlYWRlclwiXHJcbiAgICAgICAgc3R5bGU9XCJjdXJzb3I6IHBvaW50ZXJcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXRydW5jYXRlXCI+e3sgY29sLmhlYWRlciB9fTwvc3Bhbj5cclxuICAgICAgPC9sYWJlbD5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiAqbmdJZj1cImNvbC5leHBhbmRlZFwiIGNsYXNzPVwicHMtNFwiPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjaGlsZCBvZiBjb2wuY2hpbGRyZW47IHRyYWNrQnk6IHRyYWNrQnlGaWVsZFwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29sdW1uUGFuZWxJdGVtOyBjb250ZXh0OiB7IGNvbDogY2hpbGQgfVwiXHJcbiAgICAgICAgPjwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvZGl2PlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG5cclxuICA8IS0tIExlYWYgQ29sdW1uIC0tPlxyXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCIhY29sLmNoaWxkcmVuPy5sZW5ndGhcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIG1iLTJcIj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJtZS0yXCIgc3R5bGU9XCJ3aWR0aDogMS41cmVtXCI+PC9zcGFuPlxyXG4gICAgICA8aW5wdXRcclxuICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxyXG4gICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dCBtZS0yXCJcclxuICAgICAgICBbKG5nTW9kZWwpXT1cImNvbC5pc192aXNpYmxlXCJcclxuICAgICAgICBbaWRdPVwiJ2NvbF8nICsgY29sLmZpZWxkXCJcclxuICAgICAgICAoY2hhbmdlKT1cIm9uU2lkZU1lbnVDb2x1bW5zVmlzaWJpbGl0eUNoYW5nZSgpXCJcclxuICAgICAgLz5cclxuICAgICAgPHNwYW5cclxuICAgICAgICBbaW5saW5lU1ZHXT1cInNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2dyaWQtM3gyLWdhcC5zdmcnXCJcclxuICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgbWUtMlwiXHJcbiAgICAgID48L3NwYW4+XHJcbiAgICAgIDxsYWJlbFxyXG4gICAgICAgIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBtYi0wIHctMTAwXCJcclxuICAgICAgICBbZm9yXT1cIidjb2xfJyArIGNvbC5maWVsZFwiXHJcbiAgICAgICAgc3R5bGU9XCJjdXJzb3I6IHBvaW50ZXJcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXRydW5jYXRlXCI+e3sgY29sLmhlYWRlciB9fTwvc3Bhbj5cclxuICAgICAgPC9sYWJlbD5cclxuICAgIDwvZGl2PlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPCEtLSBDb2x1bW5zIFNpZGUgRmlsdGVyIC0tPlxyXG48bmctdGVtcGxhdGUgI3NpZGVGaWx0ZXJzPlxyXG4gIDxkaXYgY2xhc3M9XCJweS0zIHB4LTIgcGUtMyBoLTEwMFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgbWItMlwiPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cImZpbHRlci1pY29uLXdyYXBwZXIgbWUtMlwiICpuZ0lmPVwic2hvd0NvbHVtbnNHcm91cGluZ1wiPlxyXG4gICAgICAgIDxzcGFuXHJcbiAgICAgICAgICBjbGFzcz1cInRvZ2dsZS1pY29uIGRhdGEtZ3JpZC1zdmctaWNvblwiXHJcbiAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxyXG4gICAgICAgICAgICBmaWx0ZXJBY2NvcmRpb25TdGF0ZSA9PT0gJ2FsbCdcclxuICAgICAgICAgICAgICA/IHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2NoZXZyb24tZG93bi5zdmcnXHJcbiAgICAgICAgICAgICAgOiBmaWx0ZXJBY2NvcmRpb25TdGF0ZSA9PT0gJ3NvbWUnXHJcbiAgICAgICAgICAgICAgPyBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9kYXNoLnN2ZydcclxuICAgICAgICAgICAgICA6IHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2NoZXZyb24tcmlnaHQuc3ZnJ1xyXG4gICAgICAgICAgXCJcclxuICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVBbGxGaWx0ZXJBY2NvcmRpb25zKClcIlxyXG4gICAgICAgID48L3NwYW4+XHJcbiAgICAgIDwvc3Bhbj5cclxuICAgICAgPGlucHV0XHJcbiAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbVwiXHJcbiAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWFyY2guLi5cIlxyXG4gICAgICAgIFsobmdNb2RlbCldPVwiY29sdW1uU2VhcmNoXCJcclxuICAgICAgLz5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdlxyXG4gICAgICBjbGFzcz1cIm92ZXJmbG93LWF1dG8gc2lkZS1maWx0ZXItY29sdW1ucy13cmFwcGVyXCJcclxuICAgICAgc3R5bGU9XCJoZWlnaHQ6IGNhbGMoMTAwJSAtIDcwcHgpOyBzY3JvbGxiYXItd2lkdGg6IHRoaW5cIlxyXG4gICAgPlxyXG4gICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgKm5nRm9yPVwiXHJcbiAgICAgICAgICBsZXQgY29sIG9mIGNvbHVtbnMgfCBmaWx0ZXIgOiBjb2x1bW5TZWFyY2ggOiAnaGVhZGVyJztcclxuICAgICAgICAgIHRyYWNrQnk6IHRyYWNrQnlGaWVsZFxyXG4gICAgICAgIFwiXHJcbiAgICAgID5cclxuICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImZpbHRlclBhbm5lbEl0ZW07IGNvbnRleHQ6IHsgY29sOiBjb2wgfVwiXHJcbiAgICAgICAgPjwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNmaWx0ZXJQYW5uZWxJdGVtIGxldC1jb2w9XCJjb2xcIj5cclxuICA8IS0tIEdyb3VwIENvbHVtbiAtLT5cclxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sLmNoaWxkcmVuPy5sZW5ndGhcIj5cclxuICAgIDxkaXZcclxuICAgICAgY2xhc3M9XCJjb2x1bW4tZ3JvdXAgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBtYi0yXCJcclxuICAgICAgKm5nSWY9XCJjb2wudHlwZSAhPT0gJ2ltYWdlJ1wiXHJcbiAgICA+XHJcbiAgICAgIDwhLS0gQ2hldnJvbiB0b2dnbGUgLS0+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwiZmlsdGVyLWljb24td3JhcHBlciBtZS0yXCI+XHJcbiAgICAgICAgPHNwYW5cclxuICAgICAgICAgIGNsYXNzPVwidG9nZ2xlLWljb24gZGF0YS1ncmlkLXN2Zy1pY29uXCJcclxuICAgICAgICAgIFtpbmxpbmVTVkddPVwiXHJcbiAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2NoZXZyb24tcmlnaHQuc3ZnJ1xyXG4gICAgICAgICAgXCJcclxuICAgICAgICAgIFtjbGFzcy5yb3RhdGVdPVwiY29sLmV4cGFuZGVkRmlsdGVyXCJcclxuICAgICAgICAgIChjbGljayk9XCJjb2wuZXhwYW5kZWRGaWx0ZXIgPSAhY29sLmV4cGFuZGVkRmlsdGVyXCJcclxuICAgICAgICA+PC9zcGFuPlxyXG4gICAgICA8L3NwYW4+XHJcblxyXG4gICAgICA8IS0tIEdyb3VwIGxhYmVsIHRvZ2dsZSAtLT5cclxuICAgICAgPGxhYmVsXHJcbiAgICAgICAgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIG1iLTAgdy0xMDBcIlxyXG4gICAgICAgIHN0eWxlPVwiY3Vyc29yOiBwb2ludGVyXCJcclxuICAgICAgICAoY2xpY2spPVwiY29sLmV4cGFuZGVkRmlsdGVyID0gIWNvbC5leHBhbmRlZEZpbHRlclwiXHJcbiAgICAgID5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cImZ3LWJvbGQgdGV4dC10cnVuY2F0ZVwiXHJcbiAgICAgICAgICA+e3sgY29sLmhlYWRlciB9fVxyXG4gICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LXByaW1hcnkgbXMtMVwiXHJcbiAgICAgICAgICAgICpuZ0lmPVwiY29sPy5xdWVyeT8uX2lkcz8ubGVuZ3RoIHx8IGNvbD8ucXVlcnk/Ll9maXJzdF92YWx1ZVwiXHJcbiAgICAgICAgICAgID4qPC9zcGFuXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgPC9zcGFuPlxyXG4gICAgICA8L2xhYmVsPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPCEtLSBDaGlsZHJlbiBjb2x1bW5zIC0tPlxyXG4gICAgPGRpdiAqbmdJZj1cImNvbC5leHBhbmRlZEZpbHRlclwiIGNsYXNzPVwicHMtNFwiPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjaGlsZCBvZiBjb2wuY2hpbGRyZW47IHRyYWNrQnk6IHRyYWNrQnlGaWVsZFwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiZmlsdGVyUGFubmVsSXRlbTsgY29udGV4dDogeyBjb2w6IGNoaWxkIH1cIlxyXG4gICAgICAgID48L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L2Rpdj5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgPCEtLSBMZWFmIENvbHVtbiAtLT5cclxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWNvbC5jaGlsZHJlbj8ubGVuZ3RoXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBtYi0yXCIgKm5nSWY9XCJjb2wudHlwZSAhPT0gJ2ltYWdlJ1wiPlxyXG4gICAgICA8c3BhblxyXG4gICAgICAgIGNsYXNzPVwibWUtMiBmaWx0ZXItaWNvbi13cmFwcGVyIG1lLTJcIlxyXG4gICAgICAgIChjbGljayk9XCJjb2wuZXhwYW5kZWRGaWx0ZXIgPSAhY29sLmV4cGFuZGVkRmlsdGVyXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxzcGFuXHJcbiAgICAgICAgICBjbGFzcz1cInRvZ2dsZS1pY29uIGRhdGEtZ3JpZC1zdmctaWNvblwiXHJcbiAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxyXG4gICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9jaGV2cm9uLXJpZ2h0LnN2ZydcclxuICAgICAgICAgIFwiXHJcbiAgICAgICAgICBbY2xhc3Mucm90YXRlXT1cImNvbC5leHBhbmRlZEZpbHRlclwiXHJcbiAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgPC9zcGFuPlxyXG5cclxuICAgICAgPGxhYmVsXHJcbiAgICAgICAgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIG1iLTAgdy0xMDBcIlxyXG4gICAgICAgIHN0eWxlPVwiY3Vyc29yOiBwb2ludGVyXCJcclxuICAgICAgICAoY2xpY2spPVwiY29sLmV4cGFuZGVkRmlsdGVyID0gIWNvbC5leHBhbmRlZEZpbHRlclwiXHJcbiAgICAgID5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtdHJ1bmNhdGUgZnctYm9sZFwiPnt7IGNvbC5oZWFkZXIgfX08L3NwYW4+XHJcbiAgICAgIDwvbGFiZWw+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8IS0tIFNob3cgZmlsdGVyIHdoZW4gZXhwYW5kZWQgLS0+XHJcbiAgICA8ZGl2ICpuZ0lmPVwiY29sLmV4cGFuZGVkRmlsdGVyXCIgY2xhc3M9XCJwcy00IHBlLTNcIj5cclxuICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwic2lkZU5lc3RlZEZpbHRlcjsgY29udGV4dDogeyBjb2w6IGNvbCB9XCJcclxuICAgICAgPjwvbmctY29udGFpbmVyPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48IS0tIFNpZGUgTmVzdGVkIEZpbHRlcnMgLS0+XHJcbjxuZy10ZW1wbGF0ZSAjc2lkZU5lc3RlZEZpbHRlciBsZXQtY29sPVwiY29sXCI+XHJcbiAgPGRpdiBjbGFzcz1cIlwiPlxyXG4gICAgPCEtLSBEcm9wZG93biBUeXBlIC0tPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbC50eXBlID09PSAnZHJvcGRvd24nOyBlbHNlIHRleHRGaWx0ZXJcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInAtMVwiPlxyXG4gICAgICAgIDwhLS0gU2VhcmNoIC0tPlxyXG4gICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtIG1iLTJcIlxyXG4gICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWFyY2guLi5cIlxyXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJzaWRlTmVzdGVkRmlsdGVyU2VhcmNoXCJcclxuICAgICAgICAvPlxyXG5cclxuICAgICAgICA8IS0tIFNlbGVjdCBBbGwgLS0+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgbWItMSBtcy0xIHNlbGVjdC1hbGwtZmlsdGVyXCI+XHJcbiAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCJcclxuICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICAgICAgW2NoZWNrZWRdPVwiXHJcbiAgICAgICAgICAgICAgY29sLnF1ZXJ5Py5faWRzPy5sZW5ndGggPT0gY29sPy5jb2x1bW5fZHJvcGRvd25fdmFsdWU/Lmxlbmd0aFxyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAoY2hhbmdlKT1cInRvZ2dsZVNlbGVjdEFsbFNpZGVGaWx0ZXJzKGNvbCwgJGV2ZW50KVwiXHJcbiAgICAgICAgICAgIGlkPVwic2VsZWN0QWxsX3t7IGNvbC5maWVsZCB9fVwiXHJcbiAgICAgICAgICAvPlxyXG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbFwiIGZvcj1cInNlbGVjdEFsbF97eyBjb2wuZmllbGQgfX1cIj5cclxuICAgICAgICAgICAgU2VsZWN0IEFsbFxyXG4gICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPCEtLSBPcHRpb25zIC0tPlxyXG4gICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImRyb3Bkb3duLW9wdGlvbnNcIj5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrIG1iLTEgbXMtMVwiXHJcbiAgICAgICAgICAgICpuZ0Zvcj1cIlxyXG4gICAgICAgICAgICAgIGxldCBvcHRpb24gb2YgY29sPy5jb2x1bW5fZHJvcGRvd25fdmFsdWVcclxuICAgICAgICAgICAgICAgIHwgZmlsdGVyIDogc2lkZU5lc3RlZEZpbHRlclNlYXJjaCA6ICd2YWx1ZSdcclxuICAgICAgICAgICAgXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCJcclxuICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxyXG4gICAgICAgICAgICAgIFt2YWx1ZV09XCJvcHRpb25cIlxyXG4gICAgICAgICAgICAgIFtjaGVja2VkXT1cIlxyXG4gICAgICAgICAgICAgICAgY29sLnF1ZXJ5Py5faWRzPy5pbmNsdWRlcyhvcHRpb24/Ll9pZCB8fCBvcHRpb24/LmlkIHx8IG9wdGlvbilcclxuICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgIChjaGFuZ2UpPVwib25PcHRpb25Ub2dnbGUoY29sLCBvcHRpb24pXCJcclxuICAgICAgICAgICAgICBpZD1cIm9wdGlvbl97eyBjb2wuZmllbGQgfX1fe3tcclxuICAgICAgICAgICAgICAgIG9wdGlvbj8uaWQgfHwgb3B0aW9uPy5faWQgfHwgb3B0aW9uXHJcbiAgICAgICAgICAgICAgfX1cIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICA8bGFiZWxcclxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWxcIlxyXG4gICAgICAgICAgICAgIFtmb3JdPVwiXHJcbiAgICAgICAgICAgICAgICAnb3B0aW9uXycgK1xyXG4gICAgICAgICAgICAgICAgY29sLmZpZWxkICtcclxuICAgICAgICAgICAgICAgICdfJyArXHJcbiAgICAgICAgICAgICAgICAob3B0aW9uPy5pZCB8fCBvcHRpb24/Ll9pZCB8fCBvcHRpb24pXHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIHt7IG9wdGlvbi52YWx1ZSB8fCBvcHRpb24gfX1cclxuICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PiAtLT5cclxuICAgICAgICA8Y2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0XHJcbiAgICAgICAgICAgIGl0ZW1TaXplPVwiMzJcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImRyb3Bkb3duLXZpZXdwb3J0XCJcclxuICAgICAgICAgICAgc3R5bGU9XCJoZWlnaHQ6IDEyMHB4XCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjayBtYi0xIG1zLTFcIlxyXG4gICAgICAgICAgICAgICpjZGtWaXJ0dWFsRm9yPVwiXHJcbiAgICAgICAgICAgICAgICBsZXQgb3B0aW9uIG9mIGNvbD8uY29sdW1uX2Ryb3Bkb3duX3ZhbHVlXHJcbiAgICAgICAgICAgICAgICAgIHwgZmlsdGVyIDogc2lkZU5lc3RlZEZpbHRlclNlYXJjaCA6ICd2YWx1ZSdcclxuICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIlxyXG4gICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJvcHRpb25cIlxyXG4gICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiXHJcbiAgICAgICAgICAgICAgICAgIGNvbC5xdWVyeT8uX2lkcz8uaW5jbHVkZXMob3B0aW9uPy5faWQgfHwgb3B0aW9uPy5pZCB8fCBvcHRpb24pXHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJvbk9wdGlvblRvZ2dsZShjb2wsIG9wdGlvbilcIlxyXG4gICAgICAgICAgICAgICAgaWQ9XCJvcHRpb25fe3sgY29sLmZpZWxkIH19X3t7XHJcbiAgICAgICAgICAgICAgICAgIG9wdGlvbj8uaWQgfHwgb3B0aW9uPy5faWQgfHwgb3B0aW9uXHJcbiAgICAgICAgICAgICAgICB9fVwiXHJcbiAgICAgICAgICAgICAgLz5cclxuXHJcbiAgICAgICAgICAgICAgPGxhYmVsXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgW2Zvcl09XCJcclxuICAgICAgICAgICAgICAgICAgJ29wdGlvbl8nICtcclxuICAgICAgICAgICAgICAgICAgY29sLmZpZWxkICtcclxuICAgICAgICAgICAgICAgICAgJ18nICtcclxuICAgICAgICAgICAgICAgICAgKG9wdGlvbj8uaWQgfHwgb3B0aW9uPy5faWQgfHwgb3B0aW9uKVxyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICB7eyBvcHRpb24udmFsdWUgfHwgb3B0aW9uIH19XHJcbiAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Nkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydD5cclxuXHJcblxyXG4gICAgICAgIDwhLS0gQWN0aW9ucyAtLT5cclxuICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJkLWZsZXggZ2FwLTIgbXQtMlwiPlxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1wcmltYXJ5IGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICAgICAgc3R5bGU9XCJoZWlnaHQ6IDIycHg7XCJcclxuICAgICAgICAoY2xpY2spPVwiYXBwbHlTaWRlRmlsdGVyKGNvbClcIlxyXG4gICAgICA+XHJcbiAgICAgICAgQXBwbHlcclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXZcclxuICAgICAgICBjbGFzcz1cImJ0biBidG4tc20gYnRuLXNlY29uZGFyeSBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIiBcclxuICAgICAgICBzdHlsZT1cImhlaWdodDogMjJweDtcIlxyXG4gICAgICAgIChjbGljayk9XCJyZXNldFNpZGVGaWx0ZXIoY29sKVwiXHJcbiAgICAgID5cclxuICAgICAgICBSZXNldFxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PiAtLT5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICA8IS0tIFRleHQgRmlsdGVyIFNlY3Rpb24gLS0+XHJcbiAgICA8bmctdGVtcGxhdGUgI3RleHRGaWx0ZXI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJmaWx0ZXItdGV4dC1zZWN0aW9uXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgbWItMlwiPlxyXG4gICAgICAgICAgPHNlbGVjdFxyXG4gICAgICAgICAgICBjbGFzcz1cImZvcm0tc2VsZWN0IGZvcm0tc2VsZWN0LXNtXCJcclxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjb2wucXVlcnkuZmlyc3RfY29uZGl0aW9uXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbC50eXBlICE9PSAnZGF0ZSdcIj5cclxuICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiY29udGFpblwiPkNvbnRhaW5zPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJkb2VzX25vdF9jb250YWluXCI+RG9lcyBOb3QgQ29udGFpbjwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJlcXVhbFwiPkVxdWFsczwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJiZWZvcmVcIj5TdGFydHMgV2l0aDwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJhZnRlclwiPkVuZHMgV2l0aDwvb3B0aW9uPlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2wudHlwZSA9PSAnZGF0ZSdcIj5cclxuICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiZXF1YWxcIj5FcXVhbHMgVG88L29wdGlvbj5cclxuICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIm5vdF9lcXVhbFwiPk5vdCBFcXVhbDwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJhZnRlclwiPkFmdGVyPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImJlZm9yZVwiPkJlZm9yZTwvb3B0aW9uPlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8aW5wdXRcclxuICAgICAgICAgIFt0eXBlXT1cImNvbC50eXBlID09ICdkYXRlJyA/ICdkYXRlJyA6ICd0ZXh0J1wiXHJcbiAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc20gbWItM1wiXHJcbiAgICAgICAgICBwbGFjZWhvbGRlcj1cIlZhbHVlXCJcclxuICAgICAgICAgIFsobmdNb2RlbCldPVwiY29sIS5xdWVyeSEuZmlyc3RfdmFsdWVcIlxyXG4gICAgICAgIC8+XHJcblxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgIGNsYXNzPVwiZm9ybS1ncm91cCBtYi0zIGQtZmxleCBmbGV4LXJvdyBtdXRlZFwiXHJcbiAgICAgICAgICBzdHlsZT1cImZvbnQtc2l6ZTogMTRweFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2sgZm9ybS1jaGVjay1pbmxpbmUgbS0wIGNvbC00IGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTFcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2staW5wdXQgZmlsdGVyLXJhZGlvLWlucHV0c1wiXHJcbiAgICAgICAgICAgICAgdHlwZT1cInJhZGlvXCJcclxuICAgICAgICAgICAgICBuYW1lPVwiY29uZGl0aW9uXCJcclxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNvbCEucXVlcnkuY29uZGl0aW9uXCJcclxuICAgICAgICAgICAgICB2YWx1ZT1cImFuZFwiXHJcbiAgICAgICAgICAgICAgaWQ9XCJhbmRfe3sgY29sLmZpZWxkIH19XCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbCBtYi0wIG10LTFcIiBmb3I9XCJhbmRfe3sgY29sLmZpZWxkIH19XCJcclxuICAgICAgICAgICAgICA+QU5EPC9sYWJlbFxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrIGZvcm0tY2hlY2staW5saW5lIG0tMCBjb2wtNCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0xXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0IGZpbHRlci1yYWRpby1pbnB1dHNcIlxyXG4gICAgICAgICAgICAgIHR5cGU9XCJyYWRpb1wiXHJcbiAgICAgICAgICAgICAgbmFtZT1cImNvbmRpdGlvblwiXHJcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjb2whLnF1ZXJ5LmNvbmRpdGlvblwiXHJcbiAgICAgICAgICAgICAgdmFsdWU9XCJvclwiXHJcbiAgICAgICAgICAgICAgaWQ9XCJvcl97eyBjb2wuZmllbGQgfX1cIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsIG1iLTAgbXQtMVwiIGZvcj1cIm9yX3t7IGNvbC5maWVsZCB9fVwiXHJcbiAgICAgICAgICAgICAgPk9SPC9sYWJlbFxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrIGZvcm0tY2hlY2staW5saW5lIG0tMCBjb2wtNCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0xXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0IGZpbHRlci1yYWRpby1pbnB1dHNcIlxyXG4gICAgICAgICAgICAgIHR5cGU9XCJyYWRpb1wiXHJcbiAgICAgICAgICAgICAgbmFtZT1cImNvbmRpdGlvblwiXHJcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjb2whLnF1ZXJ5LmNvbmRpdGlvblwiXHJcbiAgICAgICAgICAgICAgdmFsdWU9XCJub25lXCJcclxuICAgICAgICAgICAgICBpZD1cIm5vbmVfe3sgY29sLmZpZWxkIH19XCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgPGxhYmVsXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJubm9uZW0tY2hlY2stbGFiZWwgbWItMCBtdC0xXCJcclxuICAgICAgICAgICAgICBmb3I9XCJub25lX3t7IGNvbC5maWVsZCB9fVwiXHJcbiAgICAgICAgICAgICAgPk5vbmU8L2xhYmVsXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICpuZ0lmPVwiY29sPy5xdWVyeT8uZmlyc3RfdmFsdWUgJiYgY29sPy5xdWVyeT8uY29uZGl0aW9uICE9PSAnbm9uZSdcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIG1iLTJcIj5cclxuICAgICAgICAgICAgPHNlbGVjdFxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1zZWxlY3QgZm9ybS1zZWxlY3Qtc21cIlxyXG4gICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY29sIS5xdWVyeS5zZWNvbmRfY29uZGl0aW9uXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2wudHlwZSAhPT0gJ2RhdGUnXCI+XHJcbiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiY29udGFpblwiPkNvbnRhaW5zPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiZG9lc19ub3RfY29udGFpblwiPkRvZXMgTm90IENvbnRhaW48L29wdGlvbj5cclxuICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJlcXVhbFwiPkVxdWFsczwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImJlZm9yZVwiPlN0YXJ0cyBXaXRoPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiYWZ0ZXJcIj5FbmRzIFdpdGg8L29wdGlvbj5cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbC50eXBlID09ICdkYXRlJ1wiPlxyXG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImVxdWFsXCI+RXF1YWxzIFRvPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIm5vdF9lcXVhbFwiPk5vdCBFcXVhbDwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImFmdGVyXCI+QWZ0ZXI8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJiZWZvcmVcIj5CZWZvcmU8L29wdGlvbj5cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC9zZWxlY3Q+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgW3R5cGVdPVwiY29sLnR5cGUgPT0gJ2RhdGUnID8gJ2RhdGUnIDogJ3RleHQnXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtIG1iLTNcIlxyXG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlY29uZCBWYWx1ZVwiXHJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY29sIS5xdWVyeS5zZWNvbmRfdmFsdWVcIlxyXG4gICAgICAgICAgLz5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJkLWZsZXggZ2FwLTJcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1wcmltYXJ5IGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiIHN0eWxlPVwiaGVpZ2h0OiAyMnB4O1wiIChjbGljayk9XCJhcHBseURyb3Bkb3duRmlsdGVyKClcIj5hcHBseTwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImJ0biBidG4tc20gYnRuLXNlY29uZGFyeSBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIiBzdHlsZT1cImhlaWdodDogMjJweDtcIiAoY2xpY2spPVwiYXBwbHlEcm9wZG93bkZpbHRlcigpXCI+cmVzZXQ8L2Rpdj5cclxuXHJcbiAgICAgICAgPC9kaXY+IC0tPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICA8ZGl2XHJcbiAgICAgIGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgZ2FwLTIgYm9yZGVyLXRvcFwiXHJcbiAgICAgIHN0eWxlPVwiaGVpZ2h0OiAzOHB4XCJcclxuICAgID5cclxuICAgICAgPGJ1dHRvblxyXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgIHN0eWxlPVwibWF4LWhlaWdodDogMzBweFwiXHJcbiAgICAgICAgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtc2Vjb25kYXJ5IGJ0bi1saWdodCBib3JkZXIgdy0xMDAgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIG10LTEgYnRuLWxpZ2h0XCJcclxuICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyByZW1vdmVTaWRlRmlsdGVyKGNvbClcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPHNwYW4+Q2xlYXI8L3NwYW4+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8YnV0dG9uXHJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgc3R5bGU9XCJtYXgtaGVpZ2h0OiAzMHB4XCJcclxuICAgICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSB3LTEwMCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXIgbXQtMVwiXHJcbiAgICAgICAgKGNsaWNrKT1cImFwcGx5U2lkZUZpbHRlcihjb2wpXCJcclxuICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiKGNvbD8ucXVlcnkuY29uZGl0aW9uICE9PSAnbm9uZScgJiYgIWNvbD8ucXVlcnk/LnNlY29uZF92YWx1ZSlcIlxyXG4gICAgICAgIFtjbGFzcy5wZS1ub25lXT1cIihjb2whPy5xdWVyeS5jb25kaXRpb24gIT09ICdub25lJyAmJiAhY29sPy5xdWVyeT8uc2Vjb25kX3ZhbHVlKVwiXHJcbiAgICAgID5cclxuICAgICAgICA8c3BhbiBzdHlsZT1cIm1hcmdpbi10b3A6IC0xcHhcIj5BcHBseTwvc3Bhbj5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjwhLS0gQ2VudHIgT3ZlcmxheSBmb3Igc2hvd2luZyB0aGUgY2hvc2UgY29sdW1ucyAtLT5cclxuXHJcbjxkaXYgKm5nSWY9XCJzaG93Q29sdW1uUGFuZWxcIiBjbGFzcz1cImN1c3RvbS1tb2RhbC1vdmVybGF5XCI+XHJcbiAgPGRpdlxyXG4gICAgY2xhc3M9XCJjdXN0b20tbW9kYWwtY29udGVudFwiXHJcbiAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cImRyb3Bkb3duc0JhY2tncm91bmRDb2xvclwiXHJcbiAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcclxuICA+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibW9kYWxDb2x1bW5QYW5uZWxcIj48L25nLWNvbnRhaW5lcj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG48IS0tIFRoZSBleGlzdGluZyBuZy10ZW1wbGF0ZSB5b3UgcHJvdmlkZWQgLS0+XHJcbjxuZy10ZW1wbGF0ZSAjbW9kYWxDb2x1bW5QYW5uZWw+XHJcbiAgPGRpdiBjbGFzcz1cImNvbHVtbi1wYW5lbC1oZWFkZXJcIj5cclxuICAgIDxkaXZcclxuICAgICAgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIHB4LTIgcHMtMyByb3VuZGVkLXRvcC0yIG1vZGEtaGVhZGVyXCJcclxuICAgICAgW3N0eWxlLmhlaWdodC5weF09XCI0OFwiXHJcbiAgICA+XHJcbiAgICAgIENob29zZSBDb2x1bW5zXHJcbiAgICAgIDxzcGFuIGNsYXNzPVwiZmlsdGVyLWljb24td3JhcHBlclwiIChjbGljayk9XCJjbG9zZU1vZGFsQ29sdW1uUGFuZWwoKVwiXHJcbiAgICAgICAgPjxzcGFuXHJcbiAgICAgICAgICBbaW5saW5lU1ZHXT1cInNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL3guc3ZnJ1wiXHJcbiAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxyXG4gICAgICAgID48L3NwYW5cclxuICAgICAgPjwvc3Bhbj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGhyIGNsYXNzPVwibXktMFwiIC8+XHJcbiAgICA8ZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBweC0yIHBlLTNcIiBbc3R5bGUuaGVpZ2h0LnB4XT1cIjQ4XCI+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJmaWx0ZXItaWNvbi13cmFwcGVyIG1lLTJcIiAqbmdJZj1cInNob3dDb2x1bW5zR3JvdXBpbmdcIj5cclxuICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgIGNsYXNzPVwidG9nZ2xlLWljb24gZGF0YS1ncmlkLXN2Zy1pY29uXCJcclxuICAgICAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgICAgICBhY2NvcmRpb25TdGF0ZSA9PT0gJ2FsbCdcclxuICAgICAgICAgICAgICAgID8gc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvY2hldnJvbi1kb3duLnN2ZydcclxuICAgICAgICAgICAgICAgIDogYWNjb3JkaW9uU3RhdGUgPT09ICdzb21lJ1xyXG4gICAgICAgICAgICAgICAgPyBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9kYXNoLnN2ZydcclxuICAgICAgICAgICAgICAgIDogc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvY2hldnJvbi1yaWdodC5zdmcnXHJcbiAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVBbGxBY2NvcmRpb25zKClcIlxyXG4gICAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxyXG4gICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0IG1lLTJcIlxyXG4gICAgICAgICAgW2NoZWNrZWRdPVwiYWxsQ29sdW1uc1NlbGVjdGVkKClcIlxyXG4gICAgICAgICAgKGNoYW5nZSk9XCJ0b2dnbGVBbGxDb2x1bW5zVmlzaWJpbGl0eSgpXCJcclxuICAgICAgICAvPlxyXG4gICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtXCJcclxuICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VhcmNoIGNvbHVtbnMuLi5cIlxyXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJjaG9zZUNvbHVtbnNTZWFyY2hcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGhyIGNsYXNzPVwibXQtMCBtYi0xXCIgLz5cclxuICAgICAgPGRpdiBjbGFzcz1cInB4LTIgb3ZlcmxheS1zY3JvbGxhYmxlXCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgKm5nRm9yPVwiXHJcbiAgICAgICAgICAgIGxldCBjb2wgb2YgY29sdW1ucyB8IGZpbHRlciA6IGNob3NlQ29sdW1uc1NlYXJjaCA6ICdoZWFkZXInO1xyXG4gICAgICAgICAgICB0cmFja0J5OiB0cmFja0J5RmllbGRcclxuICAgICAgICAgIFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImNvbHVtblBhbmVsSXRlbTsgY29udGV4dDogeyBjb2w6IGNvbCB9XCJcclxuICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjc2lkZU1lbnVSb3dHcm91cHM+XHJcbiAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBoLTEwMCBkLW5vbmVcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJweC0zIGgtMTAwXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZ2FwLTMgbWItNFwiPlxyXG4gICAgICAgIDxzcGFuXHJcbiAgICAgICAgICBbaW5saW5lU1ZHXT1cInNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2p1c3RpZnkuc3ZnJ1wiXHJcbiAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxyXG4gICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgPHNwYW4+Um93IEdyb3Vwczwvc3Bhbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJoLTUwXCI+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgY2xhc3M9XCJweC0zIHB5LTIgYm9yZGVyLWRhc2hlZCBoLTEwMCBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxyXG4gICAgICAgICAgc3R5bGU9XCJmb250LXNpemU6IDE0cHhcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIERyYWcgaGVyZSB0byBzZXQgcm93IEdyb3Vwc1xyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxociBjbGFzcz1cIm10LTRcIiAvPlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJweC0zIGgtMTAwXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZ2FwLTMgbWItNFwiPlxyXG4gICAgICAgIDxzcGFuXHJcbiAgICAgICAgICBbaW5saW5lU1ZHXT1cInNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2p1c3RpZnkuc3ZnJ1wiXHJcbiAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxyXG4gICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgPHNwYW4+VmFsdWVzPC9zcGFuPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImgtNTAgZC1mbGV4XCI+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgY2xhc3M9XCJweC0zIHB5LTIgYm9yZGVyLWRhc2hlZCBoLTEwMCBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxyXG4gICAgICAgICAgc3R5bGU9XCJmb250LXNpemU6IDE0cHhcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIERyYWcgaGVyZSBhZ2dyZWdhdGVcclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjwhLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC0tPlxyXG48IS0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAtLT5cclxuPCEtLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLS0+XHJcbjwhLS0gRHJhZyBQcmV2aWV3IFRlbXBsYXRlIC0tPlxyXG48IS0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAtLT5cclxuPCEtLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLS0+XHJcbjxuZy10ZW1wbGF0ZSAjZHJhZ1ByZXZpZXcgbGV0LWNvbD5cclxuICA8ZGl2IGNsYXNzPVwicC0yIGJvcmRlciBkLWZsZXggZ2FwLTJcIj5cclxuICAgIDxkaXY+XHJcbiAgICAgIDxzcGFuXHJcbiAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9hcnJvd3MtbW92ZS5zdmcnXCJcclxuICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxyXG4gICAgICA+PC9zcGFuPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2Pnt7IGNvbC5oZWFkZXIgfX08L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjwhLS0gRHJhZyBQbGFjZWhvbGRlciBUZW1wbGF0ZSAtLT5cclxuPG5nLXRlbXBsYXRlXHJcbiAgI2RyYWdQbGFjZWhvbGRlclxyXG4gIGxldC1jb2xcclxuICBsZXQtaT1cImluZGV4XCJcclxuICBsZXQtc2VjdGlvbj1cInNlY3Rpb25cIlxyXG4gIGxldC1kcmFnZ2luZ0luR3JvdXBBcmVhPVwiZHJhZ2dpbmdJbkdyb3VwQXJlYVwiXHJcbj5cclxuICA8ZGl2ICpuZ0lmPVwiIWRyYWdnaW5nSW5Hcm91cEFyZWFcIj5cclxuICAgIDxkaXZcclxuICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcclxuICAgICAgICBoZWFkZXJDZWxsO1xyXG4gICAgICAgIGNvbnRleHQ6IHsgJGltcGxpY2l0OiBjb2wsIGluZGV4OiBpLCBzZWN0aW9uOiBzZWN0aW9uIH1cclxuICAgICAgXCJcclxuICAgID48L2Rpdj5cclxuICA8L2Rpdj5cclxuICA8ZGl2ICpuZ0lmPVwiZHJhZ2dpbmdJbkdyb3VwQXJlYVwiPk5ldyBQbGFjZWhvbGRlcjwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPCEtLSBUb3AgR3JvdXAgUm93IFBsYWNlaG9sZGVyIC0tPlxyXG48bmctdGVtcGxhdGUgI3RvcEdyb3VwaW5nUm93UGxhY2Vob2xkZXIgbGV0LWNvbCBsZXQtc2hvd0NoZXZyb249XCJzaG93Q2hldnJvblwiPlxyXG4gIDxkaXYgY2xhc3M9XCJkLWZsZXggZ2FwLTJcIj5cclxuICAgIDxkaXZcclxuICAgICAgY2xhc3M9XCJkLWZsZXggZ2FwLTIgdG9wLXJvdy1ncm91cGluZy1wbGFjZWhvbGRlclwiXHJcbiAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwidG9wR3JvdXBlZEJhZGdlc0JhY2tncm91bmRDb2xvclwiXHJcbiAgICA+XHJcbiAgICAgIDxzcGFuXHJcbiAgICAgICAgY2RrRHJhZ0hhbmRsZVxyXG4gICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvZ3JpZC0zeDItZ2FwLnN2ZydcIlxyXG4gICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICAgID48L3NwYW4+XHJcbiAgICAgIDxzcGFuPnt7IGNvbC5oZWFkZXIgfX08L3NwYW4+XHJcbiAgICAgIDxzcGFuXHJcbiAgICAgICAgKGNsaWNrKT1cInVuZ3JvdXBDb2x1bW4oY29sKVwiXHJcbiAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy94LnN2ZydcIlxyXG4gICAgICAgIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXIgZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICAgID48L3NwYW4+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuICA8ZGl2ICpuZ0lmPVwic2hvd0NoZXZyb25cIiBzdHlsZT1cIm9wYWNpdHk6IDAuNjsgZm9udC1zaXplOiAxNHB4XCI+XHJcbiAgICA8c3BhblxyXG4gICAgICBbaW5saW5lU1ZHXT1cInNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2NoZXZyb24tcmlnaHQuc3ZnJ1wiXHJcbiAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICA+PC9zcGFuPlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlXHJcbiAgI2NoaWxkSGVhZGVyUGxhY2Vob2xkZXJcclxuICBsZXQtY29sXHJcbiAgbGV0LXBpbm5lZFJpZ2h0PVwicGlubmVkUmlnaHRcIlxyXG4gIGxldC1pPVwiaW5kZXhcIlxyXG4gIGxldC1zZWN0aW9ucz1cInNlY3Rpb25zXCJcclxuPlxyXG4gIDxkaXZcclxuICAgIGNsYXNzPVwiaGVhZGVyLWNlbGwgb25lLXJvdy1oZWFkZXItY2VsbHNcIlxyXG4gICAgW2NsYXNzLmJvcmRlci1yaWdodF09XCJzaG93VmVydGljYWxCb3JkZXJcIlxyXG4gICAgW3N0eWxlLndpZHRoLnB4XT1cImNvbC53aWR0aFwiXHJcbiAgICBbc3R5bGUubWluLXdpZHRoLnB4XT1cImNvbC53aWR0aFwiXHJcbiAgICBbc3R5bGUubWluLWhlaWdodC5weF09XCJoZWFkZXJSb3dIZWlnaHRcIlxyXG4gICAgW3N0eWxlLm1heC1oZWlnaHQucHhdPVwiaGVhZGVyUm93SGVpZ2h0XCJcclxuICAgIFtzdHlsZS5mb250V2VpZ2h0XT1cImhlYWRlckZvbnRXZWlnaHRcIlxyXG4gID5cclxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gaC0xMDAgYWxpZ24taXRlbXMtY2VudGVyIHctMTAwXCI+XHJcbiAgICAgIDxkaXZcclxuICAgICAgICBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXIgdy0xMDBcIlxyXG4gICAgICAgIFtjbGFzcy5mbGV4LXJvdy1yZXZlcnNlXT1cInBpbm5lZFJpZ2h0XCJcclxuICAgICAgPlxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgIGNsYXNzPVwidGV4dC1lbGxpcHNpcyBoLTEwMCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgICAgIFt0aXRsZV09XCJjb2wuaGVhZGVyXCJcclxuICAgICAgICAgIFtjbGFzcy53LTEwMF09XCJwaW5uZWRSaWdodFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAge3sgY29sLmhlYWRlciB9fVxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICBjbGFzcz1cInBvc2l0aW9uLXJlbGF0aXZlIGQtZmxleFwiXHJcbiAgICAgICAgICBbY2xhc3MuZmxleC1yb3ctcmV2ZXJzZV09XCJwaW5uZWRSaWdodFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRocmVlLWRvdHMgcC0xXCIgc3R5bGU9XCJjdXJzb3I6IHBvaW50ZXJcIj5cclxuICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxyXG4gICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvdGhyZWUtZG90cy12ZXJ0aWNhbC5zdmcnXHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxyXG4gICAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJlc2l6ZS1oYW5kbGVcIj5cclxuICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxyXG4gICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvcmVzaXplLWhhbmRsZS5zdmcnXHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxyXG4gICAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdlxyXG4gICAgKm5nSWY9XCJzaG93RmlsdGVyUm93XCJcclxuICAgIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwiaGVhZGVyQmFja2dyb3VuZENvbG9yXCJcclxuICAgIGNsYXNzPVwiaGVhZGVyLWNlbGwgZmlsdGVyLWNlbGxcIlxyXG4gICAgW2NsYXNzLmJvcmRlci1yaWdodF09XCJzaG93VmVydGljYWxCb3JkZXJcIlxyXG4gICAgW3N0eWxlLndpZHRoLnB4XT1cImNvbC53aWR0aFwiXHJcbiAgICBbc3R5bGUubWluLXdpZHRoLnB4XT1cImNvbC53aWR0aFwiXHJcbiAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cImhlYWRlclJvd0hlaWdodFwiXHJcbiAgICBbc3R5bGUubWluLWhlaWdodC5weF09XCJoZWFkZXJSb3dIZWlnaHRcIlxyXG4gICAgW3N0eWxlLm1heC1oZWlnaHQucHhdPVwiaGVhZGVyUm93SGVpZ2h0XCJcclxuICAgIFtjbGFzcy5ib3JkZXItcmlnaHRdPVwic2hvd1ZlcnRpY2FsQm9yZGVyXCJcclxuICAgIHN0eWxlPVwiZ3JpZC1yb3c6IDNcIlxyXG4gID5cclxuICAgIDxkaXZcclxuICAgICAgY2xhc3M9XCJoZWFkZXItY2VsbCBmaWx0ZXItY2VsbFwiXHJcbiAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwiaGVhZGVyQmFja2dyb3VuZENvbG9yXCJcclxuICAgICAgW3N0eWxlLndpZHRoLnB4XT1cImNvbC53aWR0aFwiXHJcbiAgICAgIFtzdHlsZS5taW4td2lkdGgucHhdPVwiY29sLndpZHRoXCJcclxuICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJoZWFkZXJSb3dIZWlnaHRcIlxyXG4gICAgICBbc3R5bGUubWluLWhlaWdodC5weF09XCJoZWFkZXJSb3dIZWlnaHRcIlxyXG4gICAgICBbc3R5bGUubWF4LWhlaWdodC5weF09XCJoZWFkZXJSb3dIZWlnaHRcIlxyXG4gICAgPlxyXG4gICAgICA8aW5wdXRcclxuICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtXCJcclxuICAgICAgICBwbGFjZWhvbGRlcj1cIkZpbHRlclwiXHJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJjb2wuZmlsdGVyVmFsdWVcIlxyXG4gICAgICAgIFtyZWFkb25seV09XCJjb2w/LnR5cGUgPT0gJ2Ryb3Bkb3duJyB8fCBjb2w/LnR5cGUgPT0gJ2ltYWdlJ1wiXHJcbiAgICAgICAgW2NsYXNzLmRpc2FibGVkLXNlYXJjaC1pbnB1dF09XCJcclxuICAgICAgICAgIGNvbD8udHlwZSA9PSAnZHJvcGRvd24nIHx8IGNvbD8udHlwZSA9PSAnaW1hZ2UnXHJcbiAgICAgICAgXCJcclxuICAgICAgLz5cclxuICAgICAgPHNwYW5cclxuICAgICAgICBjbGFzcz1cImZpbHRlci1pY29uLXdyYXBwZXJcIlxyXG4gICAgICAgIChjbGljayk9XCJhY3RpdmVGaWx0ZXJDZWxsID0gY29sOyBhY3RpdmVDb2wgPSBudWxsXCJcclxuICAgICAgICA+PHNwYW5cclxuICAgICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvZmlsdGVyLTIuc3ZnJ1wiXHJcbiAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxyXG4gICAgICAgID48L3NwYW5cclxuICAgICAgPjwvc3Bhbj5cclxuXHJcbiAgICAgIDxkaXZcclxuICAgICAgICBjbGFzcz1cInBvc2l0aW9uLWFic29sdXRlXCJcclxuICAgICAgICAqbmdJZj1cImFjdGl2ZUZpbHRlckNlbGwgPT09IGNvbFwiXHJcbiAgICAgICAgc3R5bGU9XCJ0b3A6IDEwMCU7IHJpZ2h0OiAwOyB6LWluZGV4OiAxMDsgbGVmdDogMFwiXHJcbiAgICAgID48L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICN0YWJsZUxheW91dD5cclxuICA8ZGl2XHJcbiAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcclxuICAgIGNsYXNzPVwicC0zIHNoYWRvdyBhY3Rpb25zLWRyb3Bkb3duIG10LTEgZHJvcGRvd24tbWVudSBzaG93IHNoYWRvdyBjdXN0b20tbWVudSB0YWJsZS1sYXlvdXRcIlxyXG4gICAgc3R5bGU9XCJ3aWR0aDogMzIwcHhcIlxyXG4gID5cclxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIG1iLTNcIj5cclxuICAgICAgPGJ1dHRvblxyXG4gICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1saW5rIHAtMFwiXHJcbiAgICAgICAgc3R5bGU9XCJtYXJnaW4tbGVmdDogLTEwcHhcIlxyXG4gICAgICAgIChjbGljayk9XCJ0b2dnbGVBY3Rpb25zKCdzZXR0aW5nJylcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPHNwYW5cclxuICAgICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvYXJyb3ctbGVmdC5zdmcnXCJcclxuICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIG1lLTJcIlxyXG4gICAgICAgID48L3NwYW4+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8aDYgY2xhc3M9XCJtYi0wIG1zLTJcIiBzdHlsZT1cImZvbnQtd2VpZ2h0OiA1MDBcIj5UYWJsZSBMYXlvdXQ8L2g2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8aHIgY2xhc3M9XCJteS0yXCIgLz5cclxuICAgIDxkaXYgY2xhc3M9XCJ3LTEwMCBtYi0zIGQtZmxleFwiIHJvbGU9XCJncm91cFwiPlxyXG4gICAgICA8aW5wdXRcclxuICAgICAgICB0eXBlPVwicmFkaW9cIlxyXG4gICAgICAgIGNsYXNzPVwiYnRuLWNoZWNrIGxheW91dC1idXR0b24tY2hlY2tcIlxyXG4gICAgICAgIG5hbWU9XCJsYXlvdXRTaXplXCJcclxuICAgICAgICBpZD1cInNtYWxsXCJcclxuICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxyXG4gICAgICAgIChjaGFuZ2UpPVwiY2hhbmdlVGFibGVMYXlvdXQoJGV2ZW50LCAnc21hbGwnKVwiXHJcbiAgICAgICAgW2NoZWNrZWRdPVwic2VsZWN0ZWRUYWJsZUxheW91dCA9PSAnc21hbGwnXCJcclxuICAgICAgLz5cclxuICAgICAgPGxhYmVsXHJcbiAgICAgICAgY2xhc3M9XCJib3JkZXIgZC1mbGV4IGZsZXgtY29sdW1uIGFsaWduLWl0ZW1zLWNlbnRlciBsYXlvdXQtYnV0dG9uXCJcclxuICAgICAgICBmb3I9XCJzbWFsbFwiXHJcbiAgICAgICAgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgY29sb3I6IHNlbGVjdGVkVGFibGVMYXlvdXQgPT0gJ3NtYWxsJyA/ICcjMDAwJyA6ICcjNzI3MjcyJ1xyXG4gICAgICAgIH1cIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInByZXZpZXctYm94IGJvcmRlciBtYi0xXCIgc3R5bGU9XCJoZWlnaHQ6IDhweFwiPjwvZGl2PlxyXG4gICAgICAgIFNtYWxsXHJcbiAgICAgIDwvbGFiZWw+XHJcblxyXG4gICAgICA8aW5wdXRcclxuICAgICAgICB0eXBlPVwicmFkaW9cIlxyXG4gICAgICAgIGNsYXNzPVwiYnRuLWNoZWNrIGxheW91dC1idXR0b24tY2hlY2tcIlxyXG4gICAgICAgIG5hbWU9XCJsYXlvdXRTaXplXCJcclxuICAgICAgICBpZD1cIm1lZGl1bVwiXHJcbiAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcclxuICAgICAgICBbY2hlY2tlZF09XCJzZWxlY3RlZFRhYmxlTGF5b3V0ID09ICdtZWRpdW0nXCJcclxuICAgICAgICAoY2hhbmdlKT1cImNoYW5nZVRhYmxlTGF5b3V0KCRldmVudCwgJ21lZGl1bScpXCJcclxuICAgICAgLz5cclxuICAgICAgPGxhYmVsXHJcbiAgICAgICAgY2xhc3M9XCJib3JkZXIgbXgtMyBkLWZsZXggZmxleC1jb2x1bW4gYWxpZ24taXRlbXMtY2VudGVyIGxheW91dC1idXR0b25cIlxyXG4gICAgICAgIGZvcj1cIm1lZGl1bVwiXHJcbiAgICAgICAgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgY29sb3I6IHNlbGVjdGVkVGFibGVMYXlvdXQgPT0gJ21lZGl1bScgPyAnIzAwMCcgOiAnIzcyNzI3MidcclxuICAgICAgICB9XCJcclxuICAgICAgPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJwcmV2aWV3LWJveCBib3JkZXIgbWItMVwiIHN0eWxlPVwiaGVpZ2h0OiAxMnB4XCI+PC9kaXY+XHJcbiAgICAgICAgTWVkaXVtXHJcbiAgICAgIDwvbGFiZWw+XHJcblxyXG4gICAgICA8aW5wdXRcclxuICAgICAgICB0eXBlPVwicmFkaW9cIlxyXG4gICAgICAgIGNsYXNzPVwiYnRuLWNoZWNrIGxheW91dC1idXR0b24tY2hlY2tcIlxyXG4gICAgICAgIG5hbWU9XCJsYXlvdXRTaXplXCJcclxuICAgICAgICBpZD1cImxhcmdlXCJcclxuICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxyXG4gICAgICAgIChjaGFuZ2UpPVwiY2hhbmdlVGFibGVMYXlvdXQoJGV2ZW50LCAnbGFyZ2UnKVwiXHJcbiAgICAgICAgW2NoZWNrZWRdPVwic2VsZWN0ZWRUYWJsZUxheW91dCA9PSAnbGFyZ2UnXCJcclxuICAgICAgLz5cclxuICAgICAgPGxhYmVsXHJcbiAgICAgICAgY2xhc3M9XCJib3JkZXIgZC1mbGV4IGZsZXgtY29sdW1uIGFsaWduLWl0ZW1zLWNlbnRlciBsYXlvdXQtYnV0dG9uXCJcclxuICAgICAgICBmb3I9XCJsYXJnZVwiXHJcbiAgICAgICAgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgY29sb3I6IHNlbGVjdGVkVGFibGVMYXlvdXQgPT0gJ2xhcmdlJyA/ICcjMDAwJyA6ICcjNzI3MjcyJ1xyXG4gICAgICAgIH1cIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInByZXZpZXctYm94IGJvcmRlciBtYi0xXCIgc3R5bGU9XCJoZWlnaHQ6IDE2cHhcIj48L2Rpdj5cclxuICAgICAgICBMYXJnZVxyXG4gICAgICA8L2xhYmVsPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGhyIGNsYXNzPVwibXktMlwiIC8+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciBtYi0yXCI+XHJcbiAgICAgIDxzcGFuPlNob3cgc2VwYXJhdG9yczwvc3Bhbj5cclxuICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgZm9ybS1zd2l0Y2ggbS0wXCI+XHJcbiAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIlxyXG4gICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICAgIGlkPVwic2VwYXJhdG9yc1wiXHJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cInNob3dWZXJ0aWNhbEJvcmRlclwiXHJcbiAgICAgICAgICAoY2hhbmdlKT1cIm9uRm9udENoYW5nZSgpXCJcclxuICAgICAgICAvPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgPHNwYW4+Um93IHNoYWRpbmc8L3NwYW4+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrIGZvcm0tc3dpdGNoIG0tMFwiPlxyXG4gICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCJcclxuICAgICAgICAgIFsobmdNb2RlbCldPVwicm93U2hhZGluZ0VuYWJsZWRcIlxyXG4gICAgICAgICAgKGNoYW5nZSk9XCJ0b2dnbGVSb3dTaGFkaW5nKClcIlxyXG4gICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICAgIGlkPVwicm93U2hhZGluZ1wiXHJcbiAgICAgICAgLz5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDwhLS0gPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXIgbWItMlwiPlxyXG4gICAgICA8c3Bhbj5TaG93IFNpZGUgTWVudTwvc3Bhbj5cclxuICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgZm9ybS1zd2l0Y2ggbS0wXCI+XHJcbiAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIlxyXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJzaG93U2lkZU1lbnVcIlxyXG4gICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICAgIGlkPVwicm93U2hhZGluZ1wiXHJcbiAgICAgICAgLz5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIG1iLTJcIj5cclxuICAgICAgPHNwYW4+U2hvdyBGaWx0ZXIgUm93PC9zcGFuPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBmb3JtLXN3aXRjaCBtLTBcIj5cclxuICAgICAgICA8aW5wdXRcclxuICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiXHJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cInNob3dGaWx0ZXJSb3dcIlxyXG4gICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICAgIGlkPVwicm93U2hhZGluZ1wiXHJcbiAgICAgICAgLz5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj4gLS0+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI3RhYmxlUHJlc2V0PlxyXG4gIDxkaXZcclxuICAgICpuZ0lmPVwiYWN0aXZlU3ViQnV0dG9uICE9PSAnc2F2ZS1wcmVzZXQnXCJcclxuICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxyXG4gICAgY2xhc3M9XCJwLTMgc2hhZG93IGFjdGlvbnMtZHJvcGRvd24gbXQtMSBkcm9wZG93bi1tZW51IHNob3cgc2hhZG93IGN1c3RvbS1tZW51IHRhYmxlLWxheW91dFwiXHJcbiAgICBzdHlsZT1cIndpZHRoOiAyODBweFwiXHJcbiAgPlxyXG4gICAgPCEtLSBIZWFkZXIgLS0+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciBtYi0zXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWxpbmsgcC0wXCJcclxuICAgICAgICAgIHN0eWxlPVwibWFyZ2luLWxlZnQ6IC0xMHB4XCJcclxuICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVBY3Rpb25zKCdzZXR0aW5nJylcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvYXJyb3ctbGVmdC5zdmcnXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb25cIlxyXG4gICAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8aDYgY2xhc3M9XCJtYi0wIG1zLTJcIiBzdHlsZT1cImZvbnQtd2VpZ2h0OiA1MDBcIj5UYWJsZSBQcmVzZXRzPC9oNj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDwhLS0gU2F2ZSBQcmVzZXQgQnV0dG9uIHdpdGggRHJvcGRvd24gLS0+XHJcbiAgICAgIDxkaXY+XHJcbiAgICAgICAgPGFcclxuICAgICAgICAgIGNsYXNzPVwidGV4dC1kZWNvcmF0aW9uLW5vbmUgdGV4dC1wcmltYXJ5XCJcclxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgaWQ9XCJzYXZlUHJlc2V0RHJvcGRvd25cIlxyXG4gICAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgdG9nZ2xlU3ViQWN0aW9ucygnc2F2ZS1wcmVzZXQnKVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAge3sgaXNUYWJsZVByZXNldE5vdENoYW5nZWQgPyBcIlNhdmUgcHJlc2V0XCIgOiBcIlVwZGF0ZSBQcmVzZXRcIiB9fVxyXG4gICAgICAgIDwvYT5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8IS0tIFNlYXJjaCAtLT5cclxuICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgZ2xvYmFsLXNlYXJjaFwiPlxyXG4gICAgICAgIDxzcGFuXHJcbiAgICAgICAgICBbaW5saW5lU1ZHXT1cInNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL3NlYXJjaC5zdmcnXCJcclxuICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIG14LTIgcG9zaXRpb24tYWJzb2x1dGUgaWNvblwiXHJcbiAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICA8aW5wdXRcclxuICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbVwiXHJcbiAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlYXJjaC4uLlwiXHJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cInNlYXJjaFRleHRQcmVzZXRUYWJsZVwiXHJcbiAgICAgICAgICB0eXBlPVwic2VhcmNoXCJcclxuICAgICAgICAvPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDwhLS0gUHJlc2V0IExpc3QgLS0+XHJcbiAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgdGFibGVWaWV3IHwgZmlsdGVyIDogc2VhcmNoVGV4dFByZXNldFRhYmxlIDogJ25hbWUnIGFzIGZpbHRlcmVkTGlzdFxyXG4gICAgICBcIlxyXG4gICAgPlxyXG4gICAgICA8IS0tIElmIGZpbHRlcmVkTGlzdCBleGlzdHMgYW5kIG5vbmUgaXMgZGVmYXVsdCAtPiBzaG93IGZhbGxiYWNrIC0tPlxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgY2xhc3M9XCIgcGItNSBvdmVyZmxvdy1hdXRvXCJcclxuICAgICAgICBbc3R5bGUubWF4SGVpZ2h0LnB4XT1cImRhdGFHcmlkQ29udGFpbmVyLm9mZnNldEhlaWdodCAtIDI1MFwiXHJcbiAgICAgID5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICBjbGFzcz1cImN1cnNvci1wb2ludGVyXCJcclxuICAgICAgICAgIChjbGljayk9XCJcclxuICAgICAgICAgICAgY2xlYXJBbGxGaWx0ZXJzKCk7XHJcbiAgICAgICAgICAgIG9wZW5JbmRleCA9IG51bGw7XHJcbiAgICAgICAgICAgIHRlbXBfc3RhdGUuaWQgPSAnJztcclxuICAgICAgICAgICAgYWN0aXZlVG9wQnV0dG9uID0gJyc7XHJcbiAgICAgICAgICAgIGN1cnJldGFUYWJsZVByZXNldEZvclVwZGF0ZSA9IG51bGxcclxuICAgICAgICAgIFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZ3LXNlbWlib2xkXCI+RGVmYXVsdCBWaWV3PC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiPlxyXG4gICAgICAgICAgPHNtYWxsIGNsYXNzPVwidGV4dC1kYXJrXCI+Q3JlYXRlZCBieSBzeXN0ZW08L3NtYWxsPlxyXG4gICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgKm5nSWY9XCIhdGFibGVGaWx0ZXJWaWV3SWQgJiYgIWhhc0FueURlZmF1bHRWaWV3KClcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImJhZGdlIGJnLWxpZ2h0IHRleHQtcHJpbWFyeSBtcy0yXCJcclxuICAgICAgICAgICAgPkRlZmF1bHQ8L3NwYW5cclxuICAgICAgICAgID5cclxuICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICpuZ0lmPVwiIXRhYmxlRmlsdGVyVmlld0lkICYmICFoYXNBbnlEZWZhdWx0VmlldygpXCJcclxuICAgICAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9jaGVjay1ibHVlLnN2ZydcIlxyXG4gICAgICAgICAgICBjbGFzcz1cIm1lLTJcIlxyXG4gICAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3M9XCJkcm9wZG93biBkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZFwiXHJcbiAgICAgICAgICAgICpuZ0lmPVwidGFibGVGaWx0ZXJWaWV3SWRcIlxyXG4gICAgICAgICAgPjwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8IS0tIFRoZSBsaXN0OiByZW5kZXIgZWFjaCB0YWJsZSBmcm9tIGZpbHRlcmVkTGlzdCAtLT5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICBjbGFzcz1cImxpc3QtZ3JvdXAgbGlzdC1ncm91cC1mbHVzaFwiXHJcbiAgICAgICAgICAqbmdGb3I9XCJcclxuICAgICAgICAgICAgbGV0IHRhYmxlIG9mIGZpbHRlcmVkTGlzdDtcclxuICAgICAgICAgICAgbGV0IGkgPSBpbmRleDtcclxuICAgICAgICAgICAgdHJhY2tCeTogdHJhY2tCeVRhYmxlXHJcbiAgICAgICAgICBcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDwhLS0gSXRlbSAtLT5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgKGNsaWNrKT1cIlxyXG4gICAgICAgICAgICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgb3BlbkluZGV4ID0gbnVsbDsgYWN0aXZlVG9wQnV0dG9uID0gJydcclxuICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJsaXN0LWdyb3VwLWl0ZW0gcHgtMCBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGRpdiAoY2xpY2spPVwic2VsZWN0RmlsdGVyKHRhYmxlKTsgb3BlbkluZGV4ID0gbnVsbFwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmdy1zZW1pYm9sZFwiIHN0eWxlPVwiY3Vyc29yOiBwb2ludGVyXCI+XHJcbiAgICAgICAgICAgICAgICB7eyB0YWJsZT8ubmFtZSB9fVxyXG4gICAgICAgICAgICAgICAgPCEtLSB7e3RhYmxlPy5pc190ZW1wfX0gLS0+XHJcbiAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICAgICAgICAgICh0YWJsZT8uaXNfdGVtcCAmJiAhdGVtcF9zdGF0ZS5pZCkgfHxcclxuICAgICAgICAgICAgICAgICAgICB0ZW1wX3N0YXRlLmlkID09IHRhYmxlLmlkXHJcbiAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvY2hlY2stYmx1ZS5zdmcnXHJcbiAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWUtMlwiXHJcbiAgICAgICAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJ0YWJsZT8uaXNfZGVmYXVsdFwiXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYmFkZ2UgYmctbGlnaHQgdGV4dC1wcmltYXJ5IG1zLTJcIlxyXG4gICAgICAgICAgICAgICAgICA+RGVmYXVsdDwvc3BhblxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxzbWFsbCBjbGFzcz1cInRleHQtZGFya1wiICpuZ0lmPVwidGFibGU/LmNvbmZpZz8uZmlsdGVyTmFtZXNcIiBbdGl0bGVdPVwidGFibGU/LmNvbmZpZz8uZmlsdGVyTmFtZXNcIj5cclxuICAgICAgICAgICAgICB7e1xyXG4gICAgICAgICAgICAgIHRhYmxlPy5jb25maWc/LmZpbHRlck5hbWVzPy5sZW5ndGggPiAyNSBcclxuICAgICAgICAgICAgICA/ICh0YWJsZT8uY29uZmlnPy5maWx0ZXJOYW1lcyB8IHNsaWNlOjA6MjUpICsgJy4uLidcclxuICAgICAgICAgICAgICA6IHRhYmxlPy5jb25maWc/LmZpbHRlck5hbWVzXHJcbiAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAoe3sgdGFibGU/LmNvbmZpZz8udG90YWxDb3VudCB9fSlcclxuICAgICAgICAgICAgPC9zbWFsbD5cclxuICAgICAgICAgICAgIDxzbWFsbCBjbGFzcz1cInRleHQtZGFya1wiICpuZ0lmPVwiIXRhYmxlPy5jb25maWc/LmZpbHRlck5hbWVzXCI+e3sgdGFibGU/LmNyZWF0ZWRBdCB8IGRhdGUgOiBcIk1NTSBkLCB5XCIgfX08L3NtYWxsPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICpuZ0lmPVwidGFibGU/LmlzX2RlZmF1bHRcIlxyXG4gICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvY2hlY2stYmx1ZS5zdmcnXHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJtZS0yXCJcclxuICAgICAgICAgICAgICA+PC9zcGFuPlxyXG5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd25cIiAqbmdJZj1cIiF0YWJsZT8uaXNfZGVmYXVsdFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImRyb3Bkb3duLXdyYXBwZXJcIlxyXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuLWljb24gbXV0ZWQtdGV4dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZU1lbnUoaSwgJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgYXJpYS1oYXNwb3B1cD1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwib3BlbkluZGV4ID09PSBpXCJcclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgJ2RhdGEtZ3JpZC9pY29ucy9ob3Jpem9udGFsLWRvdHMuc3ZnJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWUtMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcblxyXG4gICAgICAgICAgICAgICAgICA8IS0tIG1lbnUgLS0+XHJcbiAgICAgICAgICAgICAgICAgIDx1bFxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwib3BlbkluZGV4ID09PSBpXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImN1c3RvbS1kcm9wZG93bi1tZW51XCJcclxuICAgICAgICAgICAgICAgICAgICByb2xlPVwibWVudVwiXHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICA8bGkgcm9sZT1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgICAgcm9sZT1cIm1lbnVpdGVtXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkcm9wZG93bi1pdGVtXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvblByZXNldCh0YWJsZSwgJ3NldFByZXNldCcpOyB0ZW1wX3N0YXRlLmlkID0gJydcclxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvc3Rhci5zdmcnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1lLTJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBTZXQgYXMgZGVmYXVsdFxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGxpIHJvbGU9XCJub25lXCIgKm5nSWY9XCIhdGFibGUuY29uZmlybURlbGV0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICByb2xlPVwibWVudWl0ZW1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRyb3Bkb3duLWl0ZW0gdGV4dC1kYW5nZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwidGFibGUuY29uZmlybURlbGV0ZSA9IHRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwibWFyZ2luLXRvcDogLTRweFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RhdGEtZ3JpZC9pY29ucy90cmFzaC1yZWQuc3ZnJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZS0yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgRGVsZXRlXHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8bGlcclxuICAgICAgICAgICAgICAgICAgICAgIHJvbGU9XCJub25lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwidGFibGUuY29uZmlybURlbGV0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNvbmZpcm0tYmxvY2tcIlxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0zIHB5LTIgdGV4dC1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICBBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZGVsZXRlIDxiciAvPjxiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+4oCce3sgdGFibGU/Lm5hbWUgfX3igJ08L2JcclxuICAgICAgICAgICAgICAgICAgICAgICAgICA+P1xyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBnYXAtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tbGlnaHQgbWUtMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwidGFibGUuY29uZmlybURlbGV0ZSA9IGZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDYW5jZWxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tc20gYnRuLWRhbmdlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYWN0aW9uUHJlc2V0KHRhYmxlLCAnZGVsZXRlUHJlc2V0JylcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlbGV0ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwhLS0gSXRlbSBFbmQgSGVyZSAtLT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPGRpdlxyXG4gICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXHJcbiAgICAqbmdJZj1cImFjdGl2ZVN1YkJ1dHRvbiA9PSAnc2F2ZS1wcmVzZXQnXCJcclxuICAgIGNsYXNzPVwiZHJvcGRvd24tbWVudSBwLTMgYmFkZ2UgbXQtNCBzYXZlLXByZXNldC1kcm9wZG93biBtdC0xXCJcclxuICAgIGFyaWEtbGFiZWxsZWRieT1cInNhdmVQcmVzZXREcm9wZG93blwiXHJcbiAgICBzdHlsZT1cIm1pbi13aWR0aDogMjUwcHhcIlxyXG4gID5cclxuICAgIDxkaXYgY2xhc3M9XCJmdy1ib2xkIGZzLTE0cHggbWItMlwiPlxyXG4gICAgICB7eyBpc1RhYmxlUHJlc2V0Tm90Q2hhbmdlZCA/IFwiU2F2ZSBwcmVzZXRcIiA6IFwiVXBkYXRlIFByZXNldFwiIH19XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJmcy0xNHB4IG1iLTJcIiBzdHlsZT1cImxpbmUtaGVpZ2h0OiAyMHB4XCI+XHJcbiAgICAgIFRoaXMgd2lsbCBzYXZlIHRoZSBjdXJyZW50IHRhYmxlIGFkanVzdG1lbnRzIGFzIGEgcHJlc2V0LlxyXG4gICAgPC9kaXY+XHJcbiAgICA8IS0tIElucHV0IC0tPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1iLTJcIj5cclxuICAgICAgPGxhYmVsIGZvcj1cInByZXNldE5hbWVcIiBjbGFzcz1cImZvcm0tbGFiZWwgZnMtMTJweCBmdy1ib2xkXCJcclxuICAgICAgICA+UHJlc2V0IE5hbWU8L2xhYmVsXHJcbiAgICAgID5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBnbG9iYWwtc2VhcmNoXCI+XHJcbiAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAjcHJlc2V0TmFtZUN0cmw9XCJuZ01vZGVsXCJcclxuICAgICAgICAgIHJlcXVpcmVkXHJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cInByZXNldE5hbWVcIlxyXG4gICAgICAgICAgW25nQ2xhc3NdPVwie1xyXG4gICAgICAgICAgICAnaXMtaW52YWxpZCc6XHJcbiAgICAgICAgICAgICAgcHJlc2V0TmFtZUN0cmwuaW52YWxpZCAmJlxyXG4gICAgICAgICAgICAgIChwcmVzZXROYW1lQ3RybC5kaXJ0eSB8fCBwcmVzZXROYW1lQ3RybC50b3VjaGVkKVxyXG4gICAgICAgICAgfVwiXHJcbiAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc20gcHMtMlwiXHJcbiAgICAgICAgICBwbGFjZWhvbGRlcj1cIkVudGVyIHByZXNldCBuYW1lXCJcclxuICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAvPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDwhLS0gQ2hlY2tib3ggLS0+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBtYi0yXCI+XHJcbiAgICAgIDxpbnB1dFxyXG4gICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiXHJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJwcmVzZXRGaWx0ZXJcIlxyXG4gICAgICAgIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgaWQ9XCJzYXZlRmlsdGVyc1wiXHJcbiAgICAgIC8+XHJcbiAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWwgbXQtMVwiIGZvcj1cInNhdmVGaWx0ZXJzXCI+XHJcbiAgICAgICAgU2F2ZSBhY3RpdmUgZmlsdGVyc1xyXG4gICAgICA8L2xhYmVsPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPCEtLSBTYXZlIEJ1dHRvbiAtLT5cclxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBnYXAtMlwiIHN0eWxlPVwiaGVpZ2h0OiAzMnB4XCI+XHJcbiAgICAgIDxidXR0b25cclxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICBzdHlsZT1cImhlaWdodDogMzJweFwiXHJcbiAgICAgICAgY2xhc3M9XCJidG4gYm9yZGVyIHctMTAwIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlciBidG4tbGlnaHRcIlxyXG4gICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IHRvZ2dsZUFjdGlvbnMoJ3RhYmxlLXByZXNldHMnKVwiXHJcbiAgICAgICAgc3R5bGU9XCJtYXJnaW4tdG9wOiAtMnB4XCJcclxuICAgICAgPlxyXG4gICAgICAgIDxzcGFuPkNhbmNlbDwvc3Bhbj5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICAgIDxidXR0b25cclxuICAgICAgICBbZGlzYWJsZWRdPVwiY2xvc2VEcm9wZG93bi5wcmVzZXQubG9hZGluZ1wiXHJcbiAgICAgICAgKGNsaWNrKT1cInNhdmVQcmVzZXQocHJlc2V0TmFtZUN0cmwpXCJcclxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICBzdHlsZT1cImhlaWdodDogMzJweFwiXHJcbiAgICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgdy0xMDAgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxzcGFuIHN0eWxlPVwibWFyZ2luLXRvcDogLTJweFwiICpuZ0lmPVwiaXNUYWJsZVByZXNldE5vdENoYW5nZWRcIj5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhY2xvc2VEcm9wZG93bi5wcmVzZXQubG9hZGluZ1wiXHJcbiAgICAgICAgICAgID5TYXZlPC9uZy1jb250YWluZXJcclxuICAgICAgICAgID5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjbG9zZURyb3Bkb3duLnByZXNldC5sb2FkaW5nXCJcclxuICAgICAgICAgICAgPjxzcGFuIGNsYXNzPVwic3Bpbm5lci1ib3JkZXIgc3Bpbm5lci1ib3JkZXItc21cIj48L3NwYW5cclxuICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgPHNwYW4gc3R5bGU9XCJ3aGl0ZS1zcGFjZTogbm93cmFwXCIgKm5nSWY9XCIhaXNUYWJsZVByZXNldE5vdENoYW5nZWRcIlxyXG4gICAgICAgICAgPlVwZGF0ZSBQcmVzZXQ8L3NwYW5cclxuICAgICAgICA+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI3Nob3dIaWRlQ29sdW1ucz5cclxuICA8ZGl2XHJcbiAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcclxuICAgIGNsYXNzPVwicC0zIHNoYWRvdyBhY3Rpb25zLWRyb3Bkb3duIG10LTEgZHJvcGRvd24tbWVudSBzaG93IHNoYWRvdyBjdXN0b20tbWVudSB0YWJsZS1sYXlvdXRcIlxyXG4gICAgc3R5bGU9XCJ3aWR0aDogMjgwcHhcIlxyXG4gID5cclxuICAgIDwhLS0gSGVhZGVyIC0tPlxyXG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXIgbWItM1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgIDxidXR0b25cclxuICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1saW5rIHAtMFwiXHJcbiAgICAgICAgICBzdHlsZT1cIm1hcmdpbi1sZWZ0OiAtMTBweFwiXHJcbiAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlQWN0aW9ucygnc2V0dGluZycpXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICBbaW5saW5lU1ZHXT1cInNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2Fycm93LWxlZnQuc3ZnJ1wiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uXCJcclxuICAgICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPGg2IGNsYXNzPVwibWItMCBtcy0yXCIgc3R5bGU9XCJmb250LXdlaWdodDogNTAwXCI+Q29sdW1uczwvaDY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8YVxyXG4gICAgICAgIChjbGljayk9XCJyZXNldENvbHVtbnMoKVwiXHJcbiAgICAgICAgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKVwiXHJcbiAgICAgICAgY2xhc3M9XCJ0ZXh0LXByaW1hcnkgdGV4dC1kZWNvcmF0aW9uLW5vbmUgZC1ub25lXCJcclxuICAgICAgICA+UmVzZXQ8L2FcclxuICAgICAgPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPCEtLSBTZWFyY2ggLS0+XHJcbiAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGdsb2JhbC1zZWFyY2hcIj5cclxuICAgICAgICA8c3BhblxyXG4gICAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9zZWFyY2guc3ZnJ1wiXHJcbiAgICAgICAgICBjbGFzcz1cIm14LTIgcG9zaXRpb24tYWJzb2x1dGUgaWNvbiBkYXRhLWdyaWQtc3ZnLWljb25cIlxyXG4gICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21cIlxyXG4gICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWFyY2ggY29sdW1uXCJcclxuICAgICAgICAgIHR5cGU9XCJzZWFyY2hcIlxyXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJ0b3BTaG93SGlkZUNvbHVtbnNcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8IS0tIFByZXNldCBMaXN0IC0tPlxyXG4gICAgPGRpdlxyXG4gICAgICBjbGFzcz1cImxpc3QtZ3JvdXAgbGlzdC1ncm91cC1mbHVzaFwiXHJcbiAgICAgIHN0eWxlPVwib3ZlcmZsb3c6IGF1dG87IHNjcm9sbGJhci13aWR0aDogdGhpblwiXHJcbiAgICAgIFtzdHlsZS5tYXhIZWlnaHQucHhdPVwiZGF0YUdyaWRDb250YWluZXIub2Zmc2V0SGVpZ2h0IC0gMjIwXCJcclxuICAgID5cclxuICAgICAgPGRpdiBjbGFzcz1cIm11dGVkLXRleHQgc2hvdy1oaWRlLXRhYmxlLWxhYmVsIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiICpuZ0lmPVwiaGFzQW55VmlzaWJsZUNvbHVtblwiPlxyXG4gICAgICAgIFNob3cgaW4gdGFibGVcclxuICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2tcIj5cclxuICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCJcclxuICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxyXG4gICAgICAgICAgICAgIGlkPVwiaGlkZV9hbGxcIlxyXG4gICAgICAgICAgICAgIFtjaGVja2VkXT1cImFsbENvbHVtbnNTZWxlY3RlZCgpXCJcclxuICAgICAgICAgICAgICAoY2hhbmdlKT1cInRvZ2dsZUFsbENvbHVtbnNWaXNpYmlsaXR5KClcIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsIGZ3LXNlbWlib2xkXCIgZm9yPVwiaGlkZV9hbGxcIj5cclxuICAgICAgICAgICAgICBTaG93L0hpZGUgQWxsIFxyXG4gICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8IS0tIEl0ZW0gLS0+XHJcbiAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAqbmdGb3I9XCJcclxuICAgICAgICAgIGxldCBjb2wgb2YgY29sdW1ucyB8IGZpbHRlciA6IHRvcFNob3dIaWRlQ29sdW1ucyA6ICdoZWFkZXInO1xyXG4gICAgICAgICAgdHJhY2tCeTogdHJhY2tCeUZpZWxkXHJcbiAgICAgICAgXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgICpuZ0lmPVwiY29sLmlzX3Zpc2libGVcIlxyXG4gICAgICAgICAgY2xhc3M9XCJsaXN0LWdyb3VwLWl0ZW0gYm9yZGVyLTAgcHgtMCBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGdhcC0xXCI+XHJcbiAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiIWNvbD8ucGlubmVkXCJcclxuICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXHJcbiAgICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2dyaXAtdmVydGljYWwuc3ZnJ1xyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY3Vyc29yLWdyYXAgZGF0YS1ncmlkLXN2Zy1pY29uXCJcclxuICAgICAgICAgICAgICAgIChtb3VzZWRvd24pPVwiJGV2ZW50LnByZXZlbnREZWZhdWx0KClcIlxyXG4gICAgICAgICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiY29sPy5waW5uZWRcIlxyXG4gICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvcGluLWJsdWUuc3ZnJ1xyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY3Vyc29yLWdyYXAgZGF0YS1ncmlkLXN2Zy1pY29uXCJcclxuICAgICAgICAgICAgICAgIChtb3VzZWRvd24pPVwiJGV2ZW50LnByZXZlbnREZWZhdWx0KClcIlxyXG4gICAgICAgICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnctc2VtaWJvbGRcIj5cclxuICAgICAgICAgICAgICB7eyBjb2wuaGVhZGVyIH19XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICpuZ0lmPVwiIWNvbD8ucXVlcnk/LmZpcnN0X3ZhbHVlICYmICFjb2w/LnF1ZXJ5Py5faWRzPy5sZW5ndGhcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlQ29sdW1uVmlzaWJpbGl0eShjb2wsIGZhbHNlKVwiXHJcbiAgICAgICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJ2aXNpYmxlQ29sdW1ucygpLmxlbmd0aCA8PSAyIHx8IGNvbD8uaXNfYWx3YXlzX3Zpc2libGVcIlxyXG4gICAgICAgICAgICBbY2xhc3MucGUtbm9uZV09XCJ2aXNpYmxlQ29sdW1ucygpLmxlbmd0aCA8PSAyIHx8IGNvbD8uaXNfYWx3YXlzX3Zpc2libGVcIlxyXG4gICAgICAgICAgICBbY2xhc3Mub3BhY2l0eS01MF09XCJ2aXNpYmxlQ29sdW1ucygpLmxlbmd0aCA8PSAyIHx8IGNvbD8uaXNfYWx3YXlzX3Zpc2libGVcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvZXllLnN2ZydcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIG1lLTJcIlxyXG4gICAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICpuZ0lmPVwiY29sPy5xdWVyeT8uZmlyc3RfdmFsdWUgfHwgY29sPy5xdWVyeT8uX2lkcz8ubGVuZ3RoXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgICAgICAgc3R5bGU9XCJvcGFjaXR5OiAwLjVcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvZXllLnN2ZydcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIG1lLTJcIlxyXG4gICAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgPCEtLSBJdGVtIEVuZCBIZXJlIC0tPlxyXG5cclxuICAgICAgPGRpdlxyXG4gICAgICAgIGNsYXNzPVwiZHJvcGRvd24tZGl2aWRlclwiXHJcbiAgICAgICAgKm5nSWY9XCJoYXNBbnlWaXNpYmxlQ29sdW1uICYmIGhhc0FueUluVmlzaWJsZUNvbHVtblwiXHJcbiAgICAgID48L2Rpdj5cclxuXHJcbiAgICAgIDxkaXZcclxuICAgICAgICBjbGFzcz1cIm11dGVkLXRleHQgc2hvdy1oaWRlLXRhYmxlLWxhYmVsIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiXHJcbiAgICAgICAgKm5nSWY9XCJoYXNBbnlJblZpc2libGVDb2x1bW5cIlxyXG4gICAgICA+XHJcbiAgICAgICAgSGlkZSBpbiB0YWJsZVxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrXCI+XHJcbiAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiXHJcbiAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICAgICAgICBpZD1cInNob3dfYWxsXCJcclxuICAgICAgICAgICAgICBbY2hlY2tlZF09XCJhbGxDb2x1bW5zU2VsZWN0ZWQoKVwiXHJcbiAgICAgICAgICAgICAgKGNoYW5nZSk9XCJ0b2dnbGVBbGxDb2x1bW5zVmlzaWJpbGl0eSgpXCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbCBmdy1zZW1pYm9sZFwiIGZvcj1cInNob3dfYWxsXCI+XHJcbiAgICAgICAgICAgICAgU2hvdy9IaWRlIEFsbCBcclxuICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImxpc3QtZ3JvdXAgbGlzdC1ncm91cC1mbHVzaFwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGNvbCBvZiBjb2x1bW5zOyB0cmFja0J5OiB0cmFja0J5RmllbGRcIj5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgKm5nSWY9XCIhY29sLmlzX3Zpc2libGVcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImxpc3QtZ3JvdXAtaXRlbSBib3JkZXItMCBweC0wIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXJcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGdhcC0xXCI+XHJcbiAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWNvbD8ucGlubmVkXCJcclxuICAgICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9ncmlwLXZlcnRpY2FsLnN2ZydcclxuICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gY3Vyc29yLWdyYXBcIlxyXG4gICAgICAgICAgICAgICAgICAobW91c2Vkb3duKT1cIiRldmVudC5wcmV2ZW50RGVmYXVsdCgpXCJcclxuICAgICAgICAgICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cImNvbD8ucGlubmVkXCJcclxuICAgICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9waW4tYmx1ZS5zdmcnXHJcbiAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGN1cnNvci1ncmFwXCJcclxuICAgICAgICAgICAgICAgICAgKG1vdXNlZG93bik9XCIkZXZlbnQucHJldmVudERlZmF1bHQoKVwiXHJcbiAgICAgICAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmdy1zZW1pYm9sZFwiPlxyXG4gICAgICAgICAgICAgICAge3sgY29sLmhlYWRlciB9fVxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBjdXJzb3ItcG9pbnRlclwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUNvbHVtblZpc2liaWxpdHkoY29sLCB0cnVlKVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvZXllLWNyb3NzLnN2ZydcclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBtZS0yXCJcclxuICAgICAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDwhLS0gSXRlbSBFbmQgSGVyZSAtLT5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNmaWx0ZXJDb2x1bW5zIGxldC1jb2w9XCJjb2x1bW5cIj5cclxuICA8ZGl2XHJcbiAgICBAc2xpZGVUb2dnbGVcclxuICAgICpuZ0lmPVwiIWlzRmlsdGVyT3BlbiAmJiBhY3RpdmVUb3BCdXR0b24gPT0gJ2ZpbHRlci1jb2x1bW5zJ1wiXHJcbiAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcclxuICAgIGNsYXNzPVwic2hhZG93IGFjdGlvbnMtZHJvcGRvd24gbXQtMSBzaG93IHNoYWRvdyBjdXN0b20tbWVudSB0YWJsZS1sYXlvdXQgZmlsdGVyLWNvbHVtbnNcIlxyXG4gICAgc3R5bGU9XCJ3aWR0aDogMjgwcHg7IHJpZ2h0OiB1bnNldDsgbWF4LXdpZHRoOiAyMzBweFwiXHJcbiAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cImNoZWNrYm94ZXNCYWNrZ3JvdW5kQ29sb3JcIlxyXG4gID5cclxuICAgIDxkaXYgY2xhc3M9XCJtYi0yIHB4LTNcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBnbG9iYWwtc2VhcmNoXCI+XHJcbiAgICAgICAgPHNwYW5cclxuICAgICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvc2VhcmNoLnN2ZydcIlxyXG4gICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gbXgtMiBwb3NpdGlvbi1hYnNvbHV0ZSBpY29uXCJcclxuICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtXCJcclxuICAgICAgICAgIHBsYWNlaG9sZGVyPVwiRmlsdGVyIGJ5XCJcclxuICAgICAgICAgIHR5cGU9XCJzZWFyY2hcIlxyXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJhZGRGaWx0ZXJDb2x1bW5JbnB1dFwiXHJcbiAgICAgICAgLz5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXZcclxuICAgICAgY2xhc3M9XCJsaXN0LWdyb3VwIGxpc3QtZ3JvdXAtZmx1c2hcIlxyXG4gICAgICBzdHlsZT1cIm1heC1oZWlnaHQ6IGNhbGMoMTAwdmggLSA1MDBweCk7IG92ZXJmbG93OiBhdXRvXCJcclxuICAgID5cclxuICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICpuZ0Zvcj1cIlxyXG4gICAgICAgICAgbGV0IGNvbCBvZiBjb2x1bW5zIHwgZmlsdGVyIDogYWRkRmlsdGVyQ29sdW1uSW5wdXQgOiAnaGVhZGVyJztcclxuICAgICAgICAgIHRyYWNrQnk6IHRyYWNrQnlGaWVsZFxyXG4gICAgICAgIFwiXHJcbiAgICAgID5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAoY2xpY2spPVwib3BlbkZpbHRlcihjb2wpXCJcclxuICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgIGNvbC5pc192aXNpYmxlICYmXHJcbiAgICAgICAgICAgICFjb2w/LnF1ZXJ5Py5maXJzdF92YWx1ZSAmJlxyXG4gICAgICAgICAgICAhY29sPy5xdWVyeT8uX2lkcz8ubGVuZ3RoICYmIGNvbC50eXBlICE9PSAnaW1hZ2UnXHJcbiAgICAgICAgICBcIlxyXG4gICAgICAgICAgY2xhc3M9XCJsaXN0LWdyb3VwLWl0ZW0gYm9yZGVyLTAgcHgtMCBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIGRyb3Bkb3duLWl0ZW0gY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZ2FwLTFcIj5cclxuICAgICAgICAgICAgPGRpdiBzdHlsZT1cIm1hcmdpbi10b3A6IC0zcHhcIj48L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZ3LXNlbWlib2xkXCI+XHJcbiAgICAgICAgICAgICAge3sgY29sLmhlYWRlciB9fVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG5cclxuICA8IS0tIERyb3Bkb3duIC0tPlxyXG4gIDxkaXZcclxuICAgIEBzbGlkZVRvZ2dsZVxyXG4gICAgKm5nSWY9XCJpc0ZpbHRlck9wZW4gJiYgc2VsZWN0ZWRDb2x1bW5Gb3JGaWx0ZXIudHlwZSA9PSAnZHJvcGRvd24nXCJcclxuICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxyXG4gICAgY2xhc3M9XCJzaGFkb3cgYWN0aW9ucy1kcm9wZG93biBtdC0xIHNob3cgc2hhZG93IGN1c3RvbS1tZW51IHRhYmxlLWxheW91dCBmaWx0ZXItY29sdW1ucyBwYi0yXCJcclxuICAgIHN0eWxlPVwid2lkdGg6IDI4MHB4OyByaWdodDogdW5zZXQ7IG1heC13aWR0aDogMjMwcHhcIlxyXG4gICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJjaGVja2JveGVzQmFja2dyb3VuZENvbG9yXCJcclxuICA+XHJcbiAgICA8ZGl2IGNsYXNzPVwicHgtMyBteS0yIGJvcmRlci1iZWxvdyBweS0xIHBiLTIgbWItMyBkLWZsZXggcHMtMVwiPlxyXG4gICAgICA8c3BhblxyXG4gICAgICAgIChjbGljayk9XCJ0b2dnbGVBY3Rpb25zKCdmaWx0ZXItY29sdW1ucycpOyBpc0FjdGl2ZUZpbHRlck9wZW4gPSBmYWxzZVwiXHJcbiAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9hcnJvdy1sZWZ0LnN2ZydcIlxyXG4gICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIG1lLTIgY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICA+PC9zcGFuXHJcbiAgICAgID48Yj57eyBzZWxlY3RlZENvbHVtbkZvckZpbHRlcj8uaGVhZGVyIH19PC9iPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwibWItMiBweC0zXCI+XHJcbiAgICAgIDxkaXZcclxuICAgICAgICBjbGFzcz1cImNvbC0xMiBnbG9iYWwtc2VhcmNoIHBvc2l0aW9uLXJlbGF0aXZlIGJvcmRlciByb3VuZGVkIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZmxleC13cmFwIHB4LTIgZmlsdGVyLXNlcmFjaC1pbnB0XCJcclxuICAgICAgPlxyXG4gICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAqbmdGb3I9XCJsZXQgc2VsZWN0ZWQgb2Ygc2VsZWN0ZWRGaWx0ZXJPcHRpb25zXCJcclxuICAgICAgICAgIGNsYXNzPVwiYmFkZ2UgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMSBtZS0xIG1iLTFcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIHt7IHNlbGVjdGVkPy52YWx1ZSA/IHNlbGVjdGVkLnZhbHVlIDogc2VsZWN0ZWQgfX1cclxuICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVTZWxlY3Rpb25JbkZpbHRlcihzZWxlY3RlZClcIlxyXG4gICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxyXG4gICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2Nyb3NzLXByaW1hcnkuc3ZnJ1xyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICBjbGFzcz1cIm1lLTJcIlxyXG4gICAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc20gYm9yZGVyLTAgZmxleC1ncm93LTFcIlxyXG4gICAgICAgICAgc3R5bGU9XCJwYWRkaW5nOiAwXCJcclxuICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJzZWxlY3RlZEZpbHRlck9wdGlvbnM/Lmxlbmd0aCA/ICcnIDogJ0ZpbHRlciBieSdcIlxyXG4gICAgICAgICAgdHlwZT1cInNlYXJjaFwiXHJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cInNlYXJjaFRleHRGb3JGaWx0ZXJEcm9wRG93blwiXHJcbiAgICAgICAgICAoa2V5ZG93bi5iYWNrc3BhY2UpPVwiaGFuZGxlQmFja3NwYWNlKCRldmVudClcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2XHJcbiAgICAgIGNsYXNzPVwibGlzdC1ncm91cCBsaXN0LWdyb3VwLWZsdXNoXCJcclxuICAgICAgc3R5bGU9XCJtYXgtaGVpZ2h0OiBjYWxjKDEwMHZoIC0gNjAwcHgpOyBvdmVyZmxvdzogYXV0b1wiXHJcbiAgICA+XHJcbiAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAqbmdGb3I9XCJcclxuICAgICAgICAgIGxldCBjb2wgb2Ygc2VsZWN0ZWRDb2x1bW5Gb3JGaWx0ZXIuY29sdW1uX2Ryb3Bkb3duX3ZhbHVlXHJcbiAgICAgICAgICAgIHwgZmlsdGVyIDogc2VhcmNoVGV4dEZvckZpbHRlckRyb3BEb3duIDogJ3ZhbHVlJztcclxuICAgICAgICAgIGxldCBpID0gaW5kZXhcclxuICAgICAgICBcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgY2xhc3M9XCJsaXN0LWdyb3VwLWl0ZW0gYm9yZGVyLTAgcHgtMiBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIGRyb3Bkb3duLWl0ZW0gY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrXCI+XHJcbiAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiXHJcbiAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICAgICAgICBbaWRdPVwiaVwiXHJcbiAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiY3VycmVudEZpbHRlclNlbGVjdGVkSWRzLmhhcyhjb2wuaWQgfHwgY29sLl9pZCB8fCBjb2wpXCJcclxuICAgICAgICAgICAgICAoY2hhbmdlKT1cInRvZ2dsZVNlbGVjdGlvbkluRmlsdGVyKGNvbClcIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsIGZ3LXNlbWlib2xkXCIgW2Zvcl09XCJpXCI+XHJcbiAgICAgICAgICAgICAge3sgY29sPy52YWx1ZSB8fCBjb2w/Lm5hbWUgfHwgY29sIH19XHJcbiAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXZcclxuICAgICAgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBnYXAtMiBweC0yIGJvcmRlci10b3BcIlxyXG4gICAgICBzdHlsZT1cImhlaWdodDogMzhweFwiXHJcbiAgICA+XHJcbiAgICAgIDxidXR0b25cclxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICBzdHlsZT1cImhlaWdodDogMzJweFwiXHJcbiAgICAgICAgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtc2Vjb25kYXJ5IGJ0bi1saWdodCBib3JkZXIgdy0xMDAgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIG10LTEgYnRuLWxpZ2h0XCJcclxuICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyByZXNldEZpbHRlckNoYW5nZXMoKVwiXHJcbiAgICAgID5cclxuICAgICAgICA8c3Bhbj5DYW5jZWw8L3NwYW4+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8YnV0dG9uXHJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgc3R5bGU9XCJoZWlnaHQ6IDMycHhcIlxyXG4gICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IHctMTAwIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlciBtdC0xXCJcclxuICAgICAgICAoY2xpY2spPVwiYXBwbHlEcm9wZG93bkZpbHRlcigpXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxzcGFuIHN0eWxlPVwibWFyZ2luLXRvcDogLTJweFwiPlNhdmU8L3NwYW4+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDwhLS0gRm9yIFRleHQgZmllbGRzIGFuZCBudW1iZXIgZmllbGRzLS0+XHJcblxyXG4gIDxkaXZcclxuICAgIEBzbGlkZVRvZ2dsZVxyXG4gICAgKm5nSWY9XCJcclxuICAgICAgaXNGaWx0ZXJPcGVuICYmXHJcbiAgICAgIChzZWxlY3RlZENvbHVtbkZvckZpbHRlci50eXBlID09ICdzdHJpbmcnIHx8XHJcbiAgICAgICAgc2VsZWN0ZWRDb2x1bW5Gb3JGaWx0ZXIudHlwZSA9PSAnbnVtYmVyJyB8fFxyXG4gICAgICAgIHNlbGVjdGVkQ29sdW1uRm9yRmlsdGVyLnR5cGUgPT0gJ2RhdGUnKVxyXG4gICAgXCJcclxuICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxyXG4gICAgY2xhc3M9XCJzaGFkb3cgYWN0aW9ucy1kcm9wZG93biBtdC0xIHNob3cgc2hhZG93IGN1c3RvbS1tZW51IHRhYmxlLWxheW91dCBmaWx0ZXItY29sdW1ucyBwYi0yXCJcclxuICAgIHN0eWxlPVwid2lkdGg6IDIxMHB4OyByaWdodDogdW5zZXQ7IG1heC13aWR0aDogMjMwcHhcIlxyXG4gICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJjaGVja2JveGVzQmFja2dyb3VuZENvbG9yXCJcclxuICA+XHJcbiAgICA8ZGl2IGNsYXNzPVwicHgtMyBib3JkZXItYmVsb3cgcHktMSBwYi0yIGQtZmxleCBwcy0xXCI+XHJcbiAgICAgIDxzcGFuXHJcbiAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9hcnJvdy1sZWZ0LnN2ZydcIlxyXG4gICAgICAgIChjbGljayk9XCJ0b2dnbGVBY3Rpb25zKCdmaWx0ZXItY29sdW1ucycpOyBpc0FjdGl2ZUZpbHRlck9wZW4gPSBmYWxzZVwiXHJcbiAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gbWUtMiBjdXJzb3ItcG9pbnRlclwiXHJcbiAgICAgID48L3NwYW5cclxuICAgICAgPjxiPnt7IHNlbGVjdGVkQ29sdW1uRm9yRmlsdGVyPy5oZWFkZXIgfX08L2I+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgcG9zaXRpb24tcmVsYXRpdmUgcC0yIHRleHQtZmlsdGVyXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtYi0yXCI+XHJcbiAgICAgICAgPHNlbGVjdFxyXG4gICAgICAgICAgY2xhc3M9XCJmb3JtLXNlbGVjdCBmb3JtLXNlbGVjdC1zbSBjdXN0b20tc2VsZWN0IGJvcmRlclwiXHJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cImZpcnN0Q29uZGl0aW9uXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2VsZWN0ZWRDb2x1bW5Gb3JGaWx0ZXIudHlwZSAhPT0gJ2RhdGUnXCI+XHJcbiAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJjb250YWluXCI+Q29udGFpbnM8L29wdGlvbj5cclxuICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJkb2VzX25vdF9jb250YWluXCI+RG9lcyBOb3QgQ29udGFpbjwvb3B0aW9uPlxyXG4gICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiZXF1YWxcIj5FcXVhbHM8L29wdGlvbj5cclxuICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImJlZm9yZVwiPlN0YXJ0cyBXaXRoPC9vcHRpb24+XHJcbiAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJhZnRlclwiPkVuZHMgV2l0aDwvb3B0aW9uPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlbGVjdGVkQ29sdW1uRm9yRmlsdGVyLnR5cGUgPT0gJ2RhdGUnXCI+XHJcbiAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJlcXVhbFwiPkVxdWFscyBUbzwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIm5vdF9lcXVhbFwiPk5vdCBFcXVhbDwvb3B0aW9uPlxyXG4gICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiYWZ0ZXJcIj5BZnRlcjwvb3B0aW9uPlxyXG4gICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiYmVmb3JlXCI+QmVmb3JlPC9vcHRpb24+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtYi0yXCI+XHJcbiAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21cIlxyXG4gICAgICAgICAgcGxhY2Vob2xkZXI9XCJFbnRlciBmaXJzdCB2YWx1ZVwiXHJcbiAgICAgICAgICB0eXBlPVwic2VhcmNoXCJcclxuICAgICAgICAgIFt0eXBlXT1cIlxyXG4gICAgICAgICAgICBzZWxlY3RlZENvbHVtbkZvckZpbHRlci50eXBlID09ICdzdHJpbmcnXHJcbiAgICAgICAgICAgICAgPyAndGV4dCdcclxuICAgICAgICAgICAgICA6IHNlbGVjdGVkQ29sdW1uRm9yRmlsdGVyLnR5cGVcclxuICAgICAgICAgIFwiXHJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cImZpcnN0VmFsdWVcIlxyXG4gICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwiYXBwbHlEcm9wZG93bkZpbHRlcigpXCJcclxuICAgICAgICAvPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IG15LTMgZC1mbGV4IGZsZXgtcm93XCIgc3R5bGU9XCJmb250LXNpemU6IDE0cHhcIj5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrIGZvcm0tY2hlY2staW5saW5lIGNvbC00IG0tMCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0xXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCJcclxuICAgICAgICAgICAgICB0eXBlPVwicmFkaW9cIlxyXG4gICAgICAgICAgICAgIGlkPVwibG9naWNhbEFuZFwiXHJcbiAgICAgICAgICAgICAgbmFtZT1cImxvZ2ljYWxPcGVyYXRvclwiXHJcbiAgICAgICAgICAgICAgdmFsdWU9XCJhbmRcIlxyXG4gICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY29uZGl0aW9uXCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbCBtYi0wIG10LTFcIiBmb3I9XCJsb2dpY2FsQW5kXCJcclxuICAgICAgICAgICAgICA+QU5EPC9sYWJlbFxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjayBmb3JtLWNoZWNrLWlubGluZSBjb2wtNCBtLTAgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiXHJcbiAgICAgICAgICAgICAgdHlwZT1cInJhZGlvXCJcclxuICAgICAgICAgICAgICBpZD1cImxvZ2ljYWxPclwiXHJcbiAgICAgICAgICAgICAgbmFtZT1cImxvZ2ljYWxPcGVyYXRvclwiXHJcbiAgICAgICAgICAgICAgdmFsdWU9XCJvclwiXHJcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjb25kaXRpb25cIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsIG1iLTAgbXQtMVwiIGZvcj1cImxvZ2ljYWxPclwiPk9SPC9sYWJlbD5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrIGZvcm0tY2hlY2staW5saW5lIGNvbC00IG0tMCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0xXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCJcclxuICAgICAgICAgICAgICB0eXBlPVwicmFkaW9cIlxyXG4gICAgICAgICAgICAgIGlkPVwibG9naWNhbE5vbmVcIlxyXG4gICAgICAgICAgICAgIG5hbWU9XCJsb2dpY2FsT3BlcmF0b3JcIlxyXG4gICAgICAgICAgICAgIHZhbHVlPVwibm9uZVwiXHJcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjb25kaXRpb25cIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsIG1iLTAgbXQtMVwiIGZvcj1cImxvZ2ljYWxOb25lXCJcclxuICAgICAgICAgICAgICA+Tm9uZTwvbGFiZWxcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb25kaXRpb24gIT09ICdub25lJyAmJiBmaXJzdFZhbHVlXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItMiBtdC0zXCI+XHJcbiAgICAgICAgICAgIDwhLS0gU2Vjb25kIGNvbmRpdGlvbiBzZWxlY3QgLS0+XHJcbiAgICAgICAgICAgIDxzZWxlY3RcclxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tc2VsZWN0IGZvcm0tc2VsZWN0LXNtIGJvcmRlclwiXHJcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzZWNvbmRDb25kaXRpb25cIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlbGVjdGVkQ29sdW1uRm9yRmlsdGVyLnR5cGUgIT09ICdkYXRlJ1wiPlxyXG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImNvbnRhaW5cIj5Db250YWluczwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImRvZXNfbm90X2NvbnRhaW5cIj5Eb2VzIE5vdCBDb250YWluPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiZXF1YWxcIj5FcXVhbHM8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJiZWZvcmVcIj5TdGFydHMgV2l0aDwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImFmdGVyXCI+RW5kcyBXaXRoPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWxlY3RlZENvbHVtbkZvckZpbHRlci50eXBlID09ICdkYXRlJ1wiPlxyXG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImVxdWFsXCI+RXF1YWxzIFRvPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwibm90X2VxdWFsXCI+Tm90IEVxdWFsPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiYWZ0ZXJcIj5BZnRlcjwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImJlZm9yZVwiPkJlZm9yZTwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0yXCI+XHJcbiAgICAgICAgICAgIDwhLS0gU2Vjb25kIHZhbHVlIGlucHV0IC0tPlxyXG4gICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICBbdHlwZV09XCJcclxuICAgICAgICAgICAgICAgIHNlbGVjdGVkQ29sdW1uRm9yRmlsdGVyLnR5cGUgPT0gJ3N0cmluZydcclxuICAgICAgICAgICAgICAgICAgPyAndGV4dCdcclxuICAgICAgICAgICAgICAgICAgOiBzZWxlY3RlZENvbHVtbkZvckZpbHRlci50eXBlXHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21cIlxyXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiRW50ZXIgc2Vjb25kIHZhbHVlXCJcclxuICAgICAgICAgICAgICB0eXBlPVwic2VhcmNoXCJcclxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInNlY29uZFZhbHVlXCJcclxuICAgICAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJhcHBseURyb3Bkb3duRmlsdGVyKClcIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdlxyXG4gICAgICBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGdhcC0yIHB4LTIgYm9yZGVyLXRvcFwiXHJcbiAgICAgIHN0eWxlPVwiaGVpZ2h0OiAzOHB4XCJcclxuICAgID5cclxuICAgICAgPGJ1dHRvblxyXG4gICAgICAgIFtkaXNhYmxlZF09XCIhY3VycmVudEZpbHRlclNlbGVjdGVkSWRzPy5zaXplICYmICFmaXJzdFZhbHVlXCJcclxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICBzdHlsZT1cImhlaWdodDogMzJweFwiXHJcbiAgICAgICAgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtc2Vjb25kYXJ5IGJ0bi1saWdodCBib3JkZXIgdy0xMDAgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIG10LTEgYnRuLWxpZ2h0XCJcclxuICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyByZXNldFRleHRGaWx0ZXJDaGFuZ2VzKClcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPHNwYW4+Q2FuY2VsPC9zcGFuPlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgICAgPGJ1dHRvblxyXG4gICAgICAgIFtkaXNhYmxlZF09XCIoY3VycmVudEZpbHRlclNlbGVjdGVkSWRzPy5zaXplID09PSAwICYmICFmaXJzdFZhbHVlKSB8fCAoY29uZGl0aW9uICE9PSAnbm9uZScgJiYgIXNlY29uZFZhbHVlKVwiXHJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgc3R5bGU9XCJoZWlnaHQ6IDMycHhcIlxyXG4gICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IHctMTAwIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlciBtdC0xXCJcclxuICAgICAgICAoY2xpY2spPVwiYXBwbHlEcm9wZG93bkZpbHRlcigpXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxzcGFuIHN0eWxlPVwibWFyZ2luLXRvcDogLTJweFwiPkFwcGx5PC9zcGFuPlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPCEtLSBFZGl0IGRyb3Bkb3duIGhlcmUgLS0+XHJcbjxuZy10ZW1wbGF0ZSBsZXQtY29sPlxyXG4gIDxkaXYgY2xhc3M9XCJkcm9wLWRvd24tZWRpdFwiPjwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlXHJcbiAgI2Z1bGxUZXh0VGVtcGxhdGVcclxuICBsZXQtcm93PVwicm93XCJcclxuICBsZXQtY29sPVwiY29sXCJcclxuICBsZXQtaXNBcnJheT1cImlzQXJyYXlcIlxyXG4+XHJcbiAgPGRpdlxyXG4gICAgY2xhc3M9XCJmdWxsLXRleHQtYm94XCJcclxuICAgIChkYmxjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7ICRldmVudC5wcmV2ZW50RGVmYXVsdCgpXCJcclxuICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7ICRldmVudC5wcmV2ZW50RGVmYXVsdCgpXCJcclxuICAgIFtzdHlsZS5tYXhIZWlnaHQucHhdPVwiZGF0YUdyaWRDb250YWluZXIub2Zmc2V0SGVpZ2h0IC8gMlwiXHJcbiAgPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc0VkaXRpbmcocm93LCBjb2wpXCI+XHJcbiAgICAgIDxkaXZcclxuICAgICAgICAqbmdJZj1cIiFpc0FycmF5XCJcclxuICAgICAgICBjbGFzcz1cImZ1bGwtdGV4dC1jb250ZW50XCJcclxuICAgICAgICBbc3R5bGUubWF4SGVpZ2h0LnB4XT1cImRhdGFHcmlkQ29udGFpbmVyLm9mZnNldEhlaWdodCAvIDJcIlxyXG4gICAgICAgIChkYmxjbGljayk9XCJcclxuICAgICAgICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgICAgICRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgZW5hYmxlRWRpdChyb3csIGNvbCwgdHJ1ZSlcclxuICAgICAgICBcIlxyXG4gICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7ICRldmVudC5wcmV2ZW50RGVmYXVsdCgpXCJcclxuICAgICAgPlxyXG4gICAgICAgIHt7XHJcbiAgICAgICAgICBnZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZCk/LnZhbHVlIHx8XHJcbiAgICAgICAgICAgIGdldE5lc3RlZFZhbHVlKHJvdywgY29sLmZpZWxkKT8ubmFtZSB8fFxyXG4gICAgICAgICAgICBnZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZClcclxuICAgICAgICB9fVxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiAqbmdJZj1cImlzQXJyYXlcIj5cclxuICAgICAgICA8dWw+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIGdldE5lc3RlZFZhbHVlKHJvdywgY29sLmZpZWxkKTsgbGV0IGkgPSBpbmRleFwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxsaSAqbmdJZj1cImkgIT09IDBcIj5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAge3tcclxuICAgICAgICAgICAgICAgICAgaXRlbT8uZGVwYXJ0bWVudF9uYW1lIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbT8ucm9sZU5hbWUgfHxcclxuICAgICAgICAgICAgICAgICAgICBpdGVtPy5mdWxsX25hbWUgfHxcclxuICAgICAgICAgICAgICAgICAgICBcIi1cIlxyXG4gICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvdWw+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNFZGl0aW5nKHJvdywgY29sKVwiPlxyXG4gICAgICA8dGV4dGFyZWFcclxuICAgICAgICAoZGJsY2xpY2spPVwiXHJcbiAgICAgICAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgIGVuYWJsZUVkaXQocm93LCBjb2wsIHRydWUpXHJcbiAgICAgICAgXCJcclxuICAgICAgICAjdGV4dE1vZGVsPVwibmdNb2RlbFwiXHJcbiAgICAgICAgcm93cz1cIjRcIlxyXG4gICAgICAgICN0ZXh0QXJlYWRJbnB1dFxyXG4gICAgICAgIFsobmdNb2RlbCldPVwicm93W2NvbC5maWVsZF1cIlxyXG4gICAgICAgIG5hbWU9XCJ7eyBjb2wuZmllbGQgfX1cIlxyXG4gICAgICAgIHJlcXVpcmVkXHJcbiAgICAgICAgKGJsdXIpPVwiZGlzYWJsZUVkaXQocm93LCBjb2wsIHRleHRNb2RlbClcIlxyXG4gICAgICAgIChrZXlkb3duLmVudGVyKT1cInRleHRBcmVhZElucHV0LmJsdXIoKVwiXHJcbiAgICAgICAgYXV0b2ZvY3VzXHJcbiAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxyXG4gICAgICAgIFtuZ0NsYXNzXT1cIntcclxuICAgICAgICAgICdpcy1pbnZhbGlkJzogdGV4dE1vZGVsLmludmFsaWRcclxuICAgICAgICB9XCJcclxuICAgICAgICAobW91c2Vkb3duKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXHJcbiAgICAgID48L3RleHRhcmVhPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI2RlZmF1bHRJbWFnZVBsYWNlaG9sZGVyIGxldC1yb3c9XCJyb3dcIiBsZXQtY29sPVwiY29sXCI+XHJcbiAgPHNwYW5cclxuICAgIGNsYXNzPVwicHgtMiBkLWZsZXggdy0xMDAgY2VsbC1jb250ZW50IGltYWdlLXBsYWNlaG9sZGVyXCJcclxuICAgIFt0aXRsZV09XCJyb3c/LmZ1bGxfbmFtZSB8fCByb3c/Lm5hbWUgfHwgJ04vQSdcIlxyXG4gID5cclxuICAgIDxuZy1jb250YWluZXJcclxuICAgICAgKm5nSWY9XCJcclxuICAgICAgICByb3c/LmxvZ28gfHxcclxuICAgICAgICAgIHJvdz8uYXNzZXRJbWFnZSB8fFxyXG4gICAgICAgICAgcm93Py5pbnZvaWNlPy5pbnZvaWNlX2ltYWdlIHx8XHJcbiAgICAgICAgICByb3c/Lmludm9pY2VfaW1hZ2U7XHJcbiAgICAgICAgZWxzZSBwbGFjZWhvbGRlclxyXG4gICAgICBcIlxyXG4gICAgPlxyXG4gICAgICA8c3BhblxyXG4gICAgICAgIChjbGljayk9XCJmdWxsc2NyZWVuSW1hZ2UgPSByb3c/LnByb2ZpbGVfcGljdHVyZXM/Lls0XT8ucGF0aCB8fFxyXG4gICAgICAgICAgICByb3c/LmxvZ28gfHxcclxuICAgICAgICAgICAgcm93Py5hc3NldEltYWdlIHx8XHJcbiAgICAgICAgICAgIHJvdz8uaW52b2ljZV9pbWFnZVwiXHJcbiAgICAgICAgY2xhc3M9XCJwaWNcIlxyXG4gICAgICAgIFtzdHlsZS53aWR0aC5weF09XCJyb3dIZWlnaHQgLSAxMFwiXHJcbiAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJyb3dIZWlnaHQgLSAxMFwiXHJcbiAgICAgICAgW2NsYXNzLmFzc2V0cy1waWNdPVwiZ3JpZFR5cGUgPT0gJ0Fzc2V0cydcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGltZ1xyXG4gICAgICAgICAgW3dpZHRoXT1cInJvd0hlaWdodCAtIDEyXCJcclxuICAgICAgICAgIFtoZWlnaHRdPVwicm93SGVpZ2h0IC0gMTJcIlxyXG4gICAgICAgICAgW3N0eWxlLndpZHRoLnB4XT1cInJvd0hlaWdodCAtIDEwXCJcclxuICAgICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwicm93SGVpZ2h0IC0gMTBcIlxyXG4gICAgICAgICAgW3NyY109XCJcclxuICAgICAgICAgICAgcm93Py5wcm9maWxlX3BpY3R1cmVzPy5bNF0/LnBhdGggfHxcclxuICAgICAgICAgICAgcm93Py5sb2dvIHx8XHJcbiAgICAgICAgICAgIHJvdz8uYXNzZXRJbWFnZSB8fFxyXG4gICAgICAgICAgICByb3c/Lmludm9pY2VfaW1hZ2VcclxuICAgICAgICAgIFwiXHJcbiAgICAgICAgICBhbHQ9XCJpY29uXCJcclxuICAgICAgICAgIGNsYXNzPVwib3B0aW9uLWljb25cIlxyXG4gICAgICAgICAgbG9hZGluZz1cImxhenlcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgIDwvc3Bhbj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPCEtLSA8ZGl2XHJcbiAgICAgIGNsYXNzPVwiZnVsbHNjcmVlbi1vdmVybGF5XCJcclxuICAgICAgKm5nSWY9XCJmdWxsc2NyZWVuSW1hZ2VcIlxyXG4gICAgICAoY2xpY2spPVwiZnVsbHNjcmVlbkltYWdlID0gbnVsbFwiXHJcbiAgICA+XHJcbiAgICAgIDxpbWcgW3NyY109XCJmdWxsc2NyZWVuSW1hZ2VcIiBjbGFzcz1cImZ1bGxzY3JlZW4taW1nXCIgLz5cclxuICAgIDwvZGl2PiAtLT5cclxuXHJcbiAgICA8bmctdGVtcGxhdGUgI3BsYWNlaG9sZGVyPlxyXG4gICAgICA8c3BhblxyXG4gICAgICAgIFtuZ0NsYXNzXT1cImdldER5bmFtaWNDbGFzcyhyb3c/LmZ1bGxfbmFtZSB8fCByb3c/Lm5hbWUpXCJcclxuICAgICAgICBjbGFzcz1cInBpYyBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIHJvdW5kZWQtY2lyY2xlXCJcclxuICAgICAgICBbc3R5bGUud2lkdGgucHhdPVwicm93SGVpZ2h0IC0gMTJcIlxyXG4gICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwicm93SGVpZ2h0IC0gMTJcIlxyXG4gICAgICAgIFtzdHlsZS5mb250U2l6ZS5weF09XCJyb3dIZWlnaHQgLyAzXCJcclxuICAgICAgICBbY2xhc3MuYXNzZXRzLXBpY109XCJncmlkVHlwZSA9PSAnQXNzZXRzJ1wiXHJcbiAgICAgID5cclxuICAgICAgICB7eyBnZXRJbml0aWFscyhyb3c/LmZ1bGxfbmFtZSkgfX1cclxuICAgICAgPC9zcGFuPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICA8L3NwYW4+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48IS0tIFJpZ2h0IENsaWNrIE1lbnVlIC0tPlxyXG48ZGl2XHJcbiAgW2NsYXNzLmludmlzaWJsZV09XCIhcG9zaXRpb25lZFlldFwiXHJcbiAgY2xhc3M9XCJjb250ZXh0LW1lbnUgcC0yXCJcclxuICAqbmdJZj1cImFjdGlvbkhpZGUgJiYgYWN0aW9ucz8ubGVuZ3RoXCJcclxuICBbbmdTdHlsZV09XCJ7ICd0b3AucHgnOiB5UG9zLCAnbGVmdC5weCc6IHhQb3MgfVwiXHJcbiAgW2NsYXNzLnNob3ddPVwiaXNWaXNpYmxlXCJcclxuICBhcHBlbmRUbz1cImJvZHlcIlxyXG4+XHJcbiAgPHVsPlxyXG4gICAgPGxpXHJcbiAgICAgICpuZ0Zvcj1cImxldCBhY3Rpb24gb2YgYWN0aW9uc1wiXHJcbiAgICAgIGNsYXNzPVwicm91bmRlZCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgKGNsaWNrKT1cIm9uQWN0aW9uQ2xpY2soYWN0aW9uKVwiXHJcbiAgICA+XHJcbiAgICAgIDxzcGFuXHJcbiAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy8nICsgYWN0aW9uICsgJy5zdmcnXCJcclxuICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiByaWdodC1jbGljay1tZW51LWljb25zIG1lLTJcIlxyXG4gICAgICA+PC9zcGFuPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cInRleHQtY2FwaXRhbGl6ZSBmdy01MDBcIj57eyBhY3Rpb24gfX08L3NwYW4+XHJcbiAgICA8L2xpPlxyXG4gIDwvdWw+XHJcbjwvZGl2PlxyXG5cclxuPCEtLSBEZXRhaWxzIFRvZ2dsZSBmcm9tIGJvdHRvbSAtLT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjbmVzdGVkVGFibGVUZW1wbGF0ZSBsZXQtcm93PlxyXG4gIDxkaXZcclxuICAgIGNsYXNzPVwibmVzdGVkLXRhYmxlIHRhYmxlIHRhYmxlLXNtIHctMTAwIG1iLTAgY2VudGVyLW5lc3RlZC10YWJsZSB3LTEwMFwiXHJcbiAgICBzdHlsZT1cInRhYmxlLWxheW91dDogZml4ZWQgIWltcG9ydGFudFwiXHJcbiAgICAjbmVzdGVkVGFibGVDb250YWluZXJcclxuICA+XHJcbiAgICA8dGhlYWRcclxuICAgICAgI25lc3RlZEhlYWRlclxyXG4gICAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cIm5lc3RlZFRhYmxlSGVhZGVyQmFja2dyb3VuZENvbG9yXCJcclxuICAgID5cclxuICAgICAgPGRpdlxyXG4gICAgICAgIGNka0Ryb3BMaXN0XHJcbiAgICAgICAgW2Nka0Ryb3BMaXN0RGF0YV09XCJyb3c/LmRldGFpbC5jb2x1bW5zXCJcclxuICAgICAgICBjZGtEcm9wTGlzdE9yaWVudGF0aW9uPVwiaG9yaXpvbnRhbFwiXHJcbiAgICAgICAgKGNka0Ryb3BMaXN0RHJvcHBlZCk9XCJkcm9wQ29sdW1uKCRldmVudCwgcm93KVwiXHJcbiAgICAgICAgKGNka0Ryb3BMaXN0U29ydGVkKT1cIm9uTmVzdGVkQ29sU29ydCgkZXZlbnQsIHByZXZpZXdOZXN0ZWRDb2xzKVwiXHJcbiAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJuZXN0ZWRUYWJsZUhlYWRlclJvd0hlaWdodFwiXHJcbiAgICAgICAgY2xhc3M9XCJkLWZsZXggdHIgYm9yZGVyLWJlbG93XCJcclxuICAgICAgPlxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgICpuZ0Zvcj1cImxldCBjb2wgb2Ygcm93LmRldGFpbC5jb2x1bW5zOyBsZXQgaSA9IGluZGV4XCJcclxuICAgICAgICAgIFtzdHlsZS53aWR0aC5weF09XCJjb2w/LndpZHRoIHx8IDI1MFwiXHJcbiAgICAgICAgICBbc3R5bGUubWluV2lkdGgucHhdPVwiY29sPy53aWR0aCB8fCAyNTBcIlxyXG4gICAgICAgICAgW3N0eWxlLm1heFdpZHRoLnB4XT1cImNvbD8ud2lkdGggfHwgMjUwXCJcclxuICAgICAgICAgIGNsYXNzPVwicHgtNCB0aFwiXHJcbiAgICAgICAgICBbYXR0ci5maWVsZF09XCJjb2wuZmllbGRcIlxyXG4gICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJuZXN0ZWRUYWJsZUhlYWRlckJhY2tncm91bmRDb2xvclwiXHJcbiAgICAgICAgICBjZGtEcmFnXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzcz1cImQtZmxleCBoLTEwMCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBwb3NpdGlvbi1yZWxhdGl2ZSBhbGlnbi1pdGVtcy1jZW50ZXJcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1lbGxpcHNpc1wiIChjbGljayk9XCJzb3J0TmVzdGVkQ29sKGNvbCwgcm93KVwiPlxyXG4gICAgICAgICAgICAgIHt7IGNvbC5oZWFkZXIgfX1cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZ2FwLTJcIj5cclxuICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJjdXJyZW50U3ViU29ydENvbHVtbiA9PSBjb2wuZmllbGRcIlxyXG4gICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArXHJcbiAgICAgICAgICAgICAgICAgIChjb2w/Lm9yZGVyX2J5ID09ICdkZXNjJ1xyXG4gICAgICAgICAgICAgICAgICAgID8gJ2RhdGEtZ3JpZC9pY29ucy9zb3J0LWRlc2Muc3ZnJ1xyXG4gICAgICAgICAgICAgICAgICAgIDogJ2RhdGEtZ3JpZC9pY29ucy9zb3J0LWFzYy5zdmcnKVxyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBtcy0yIHN0YXJ0LTUwXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwhLS0gPGRpdlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ0aHJlZS1kb3RzIHAtMVwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib3BlblRocmVlRG90c01lbnUoJGV2ZW50LCBjb2wpXCJcclxuICAgICAgICAgICAgICAgIHN0eWxlPVwiY3Vyc29yOiBwb2ludGVyXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxyXG4gICAgICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggK1xyXG4gICAgICAgICAgICAgICAgICAgICdkYXRhLWdyaWQvaWNvbnMvdGhyZWUtZG90cy12ZXJ0aWNhbC5zdmcnXHJcbiAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvZGl2PiAtLT5cclxuXHJcbiAgICAgICAgICAgICAgPCEtLSBPbmx5IHNob3cgbWVudSBpZiB0aGlzIGNvbHVtbiBpcyBhY3RpdmUgLS0+XHJcbiAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJwb3NpdGlvbi1hYnNvbHV0ZVwiXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cImFjdGl2ZUNvbCA9PT0gY29sXCJcclxuICAgICAgICAgICAgICAgIHN0eWxlPVwidG9wOiAtNTAlOyB6LWluZGV4OiAyMTsgbGVmdDogMFwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxyXG4gICAgICAgICAgICAgICAgICAgIGNvbHVtbk1lbnU7XHJcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dDoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgY29sOiBjb2wsXHJcbiAgICAgICAgICAgICAgICAgICAgICBpc05lc3RlZFRhYmxlOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgY29sdW1uczogcm93Py5kZXRhaWwuY29sdW1uc1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInJlc2l6ZS1oYW5kbGVcIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXHJcbiAgICAgICAgICAgICAgICAobW91c2Vkb3duKT1cIlxyXG4gICAgICAgICAgICAgICAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgICAgICAgb25SZXNpemVDb2x1bW4oJGV2ZW50LCBjb2wpO1xyXG4gICAgICAgICAgICAgICAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9yZXNpemUtaGFuZGxlLnN2ZydcclxuICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgICAgICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8bmctdGVtcGxhdGUgY2RrRHJhZ1ByZXZpZXc+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLTIgYm9yZGVyIGQtZmxleCBnYXAtMlwiPlxyXG4gICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxyXG4gICAgICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2Fycm93cy1tb3ZlLnN2ZydcclxuICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgICAgICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdj57eyBjb2wuaGVhZGVyIH19PC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L3RoZWFkPlxyXG4gICAgPGRpdlxyXG4gICAgICBbc3R5bGUud2lkdGgucHhdPVwibmVzdGVkSGVhZGVyLm9mZnNldFdpZHRoIC0gMTBcIlxyXG4gICAgICBbc3R5bGUubWluV2lkdGgucHhdPVwibmVzdGVkSGVhZGVyLm9mZnNldFdpZHRoIC0gMTBcIlxyXG4gICAgPlxyXG4gICAgICA8Y2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0XHJcbiAgICAgICAgW2l0ZW1TaXplXT1cIm5lc3RlZFRhYmxlcm93SGVpZ2h0XCJcclxuICAgICAgICBjbGFzcz1cInZpZXdwb3J0XCJcclxuICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cIlxyXG4gICAgICAgICAgKHJvdz8uZGV0YWlsPy5yZXN1bHQ/Lmxlbmd0aCA8IDVcclxuICAgICAgICAgICAgPyBuZXN0ZWRUYWJsZXJvd0hlaWdodCAqIHJvdz8uZGV0YWlsPy5yZXN1bHQ/Lmxlbmd0aCArIDQwXHJcbiAgICAgICAgICAgIDogMzAwKSArIChoYXNIb3Jpem9udGFsU2Nyb2xsID8gLTEyIDogMSlcclxuICAgICAgICBcIlxyXG4gICAgICAgIFtzdHlsZS53aWR0aC5weF09XCJuZXN0ZWRIZWFkZXIub2Zmc2V0V2lkdGggLSAxMFwiXHJcbiAgICAgICAgW3N0eWxlLm1pbldpZHRoLnB4XT1cIm5lc3RlZEhlYWRlci5vZmZzZXRXaWR0aCAtIDEwXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXIgYm9yZGVyLWJlbG93IGQtZmxleCB0clwiXHJcbiAgICAgICAgICAqY2RrVmlydHVhbEZvcj1cImxldCBkIG9mIHJvdz8uZGV0YWlsPy5yZXN1bHQ7IHRyYWNrQnk6IHRyYWNrQnlJZFwiXHJcbiAgICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cIm5lc3RlZFRhYmxlcm93SGVpZ2h0XCJcclxuICAgICAgICAgIFtzdHlsZS53aWR0aC5weF09XCJuZXN0ZWRIZWFkZXI/Lm9mZnNldFdpZHRoXCJcclxuICAgICAgICAgIFtzdHlsZS5taW5XaWR0aC5weF09XCJuZXN0ZWRIZWFkZXI/Lm9mZnNldFdpZHRoXCJcclxuICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwiYm9keUJhY2tncm91bmRDb2xvclwiXHJcbiAgICAgICAgICAoY29udGV4dG1lbnUpPVwib25SaWdodENsaWNrKCRldmVudCwgZClcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3M9XCJweC00IHB5LTAgdGRcIlxyXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgY29sIG9mIHByZXZpZXdOZXN0ZWRDb2xzOyBsZXQgaiA9IGluZGV4XCJcclxuICAgICAgICAgICAgW3N0eWxlLmZvbnRTaXplLnB4XT1cIm5lc3RlZFRhYmxlcm93Rm9udHNpemVcIlxyXG4gICAgICAgICAgICBbYXR0ci5maWVsZF09XCJjb2wuZmllbGRcIlxyXG4gICAgICAgICAgICBbc3R5bGUud2lkdGgucHhdPVwiY29sPy53aWR0aCB8fCAyNTBcIlxyXG4gICAgICAgICAgICBbc3R5bGUubWluV2lkdGgucHhdPVwiY29sPy53aWR0aCB8fCAyNTBcIlxyXG4gICAgICAgICAgICBbc3R5bGUubWF4V2lkdGgucHhdPVwiY29sPy53aWR0aCB8fCAyNTBcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJuZXN0ZWRUYWJsZXJvd0hlaWdodCAtIDFcIlxyXG4gICAgICAgICAgICAgIFtzdHlsZS5tYXgtd2lkdGgucHhdPVwiY29sPy53aWR0aFwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDwhLS0ge3sgZFtjb2wuZmllbGRdIHx8IChjb2wuaXNfYW1vdW50ID8gMCA6IFwiLVwiKSB9fSAtLT5cclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAjY2VsbFRleHRcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwidGV4dC1lbGxpcHNpcyBmbGV4LWdyb3ctMVwiXHJcbiAgICAgICAgICAgICAgICBbdGl0bGVdPVwiXHJcbiAgICAgICAgICAgICAgICAgIGNvbC50eXBlID09PSAnZGF0ZSdcclxuICAgICAgICAgICAgICAgICAgICA/IChnZXROZXN0ZWRWYWx1ZShkLCBjb2wuZmllbGQpIHwgZGF0ZSA6IGRhdGVGb3JtYXQpXHJcbiAgICAgICAgICAgICAgICAgICAgOiBnZXROZXN0ZWRWYWx1ZShkLCBjb2wuZmllbGQpIHx8ICctJ1xyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sLnR5cGUgIT09ICdpbWFnZSdcIj5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbC5pc19hbW91bnRcIj57e1xyXG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbmN5U3ltYm9sXHJcbiAgICAgICAgICAgICAgICAgIH19PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgIHt7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIWlzTmVzdGVkVmFsdWVBcnJheShkLCBjb2wuZmllbGQpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGNvbC50eXBlID09PSAnZGF0ZSdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAoaXNEYXRlKGdldE5lc3RlZFZhbHVlKGQsIGNvbC5maWVsZCkpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IChnZXROZXN0ZWRWYWx1ZShkLCBjb2wuZmllbGQpIHwgZGF0ZTogZGF0ZUZvcm1hdClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogKGdldE5lc3RlZFZhbHVlKGQsIGNvbC5maWVsZCk/LnZhbHVlIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldE5lc3RlZFZhbHVlKGQsIGNvbC5maWVsZCk/Lm5hbWUgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0TmVzdGVkVmFsdWUoZCwgY29sLmZpZWxkKSB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLScpKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IChnZXROZXN0ZWRWYWx1ZShkLCBjb2wuZmllbGQpPy52YWx1ZSB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldE5lc3RlZFZhbHVlKGQsIGNvbC5maWVsZCk/Lm5hbWUgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXROZXN0ZWRWYWx1ZShkLCBjb2wuZmllbGQpIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbC5pc19hbW91bnQgPyAwOiAnLScpKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAoZ2V0TmVzdGVkVmFsdWUoZCwgY29sLmZpZWxkKT8uWzBdPy5kZXBhcnRtZW50X25hbWUgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0TmVzdGVkVmFsdWUoZCwgY29sLmZpZWxkKT8uWzBdPy5yb2xlTmFtZSB8fCBnZXROZXN0ZWRWYWx1ZShkLCBjb2wuZmllbGQpPy5bMF0/LmZ1bGxfbmFtZSB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLScpXHJcbiAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmYWxzZVwiPlxyXG4gICAgICAgICAgICAgICAgICB7eyBnZXRUb3RhbEFtb3VudChjb2wpIH19XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2wudHlwZSA9PSAnaW1hZ2UnXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdEltYWdlUGxhY2Vob2xkZXI7XHJcbiAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvdzogZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29sOiBjb2wsXHJcbiAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvY2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI2xlZnRSaWdodE5lc3RlZFBsYWNlaG9sZGVyIGxldC1yb3c+XHJcbiAgPHRhYmxlXHJcbiAgICBjbGFzcz1cIm5lc3RlZC10YWJsZSB0YWJsZSB0YWJsZS1zbSB3LTEwMCBtYi0wXCJcclxuICAgIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwiYm9keUJhY2tncm91bmRDb2xvclwiXHJcbiAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cIlxyXG4gICAgICBncmlkVHlwZSA9PSAnQXNzZXRzJ1xyXG4gICAgICAgID8gKG5lc3RlZFRhYmxlQ29udGFpbmVyPy5uYXRpdmVFbGVtZW50Py5vZmZzZXRIZWlnaHQgPz8gMCkgKyAxMlxyXG4gICAgICAgIDogKHRhc2tNYW5hZ2VtZW50Q29udGFpbmVyPy5uYXRpdmVFbGVtZW50Py5vZmZzZXRIZWlnaHQgPz8gMClcclxuICAgIFwiXHJcbiAgPlxyXG4gICAgPCEtLSA8ZGl2IGNsYXNzPVwidGhlYWRcIj5cclxuICAgICAgPGRpdlxyXG4gICAgICAgIGNsYXNzPVwidHIgZC1mbGV4IGJvcmRlci1iZWxvd1wiXHJcbiAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJuZXN0ZWRUYWJsZUhlYWRlclJvd0hlaWdodFwiXHJcbiAgICAgICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJoZWFkZXJCYWNrZ3JvdW5kQ29sb3JcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRoXCIgKm5nRm9yPVwibGV0IF8gb2YgWzEsIDIsIDMsIDQsIDVdXCI+PC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+IC0tPlxyXG4gICAgPCEtLSA8ZGl2IGNsYXNzPVwidGJvZHlcIj5cclxuICAgICAgPGRpdlxyXG4gICAgICAgIGNsYXNzPVwidHIgYm9yZGVyLWJlbG93XCJcclxuICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cIm5lc3RlZFRhYmxlcm93SGVpZ2h0XCJcclxuICAgICAgICAqbmdGb3I9XCJsZXQgXyBvZiByb3c/LmRldGFpbD8ucmVzdWx0XCJcclxuICAgICAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cImhlYWRlckJhY2tncm91bmRDb2xvclwiXHJcbiAgICAgID5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidGRcIiAqbmdGb3I9XCJsZXQgX18gb2YgWzEsIDIsIDMsIDQsIDVdXCIgY2xhc3M9XCJweS0wXCI+XHJcbiAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cIm5lc3RlZFRhYmxlcm93SGVpZ2h0XCJcclxuICAgICAgICAgICAgW3N0eWxlLm1heC13aWR0aC5weF09XCJuZXN0ZWRUYWJsZXJvd0hlaWdodFwiXHJcbiAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PiAtLT5cclxuICA8L3RhYmxlPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICN0YXNrTWFuYWdlbWVudFRlbXBsYXRlIGxldC10YXNrRGV0YWlscz1cInRhc2tEZXRhaWxzXCI+XHJcbiAgPGRpdlxyXG4gICAgY2xhc3M9XCJwLTRcIlxyXG4gICAgI3Rhc2tNYW5hZ2VtZW50Q29udGFpbmVyXHJcbiAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cIm5lc3RlZFRhYmxlSGVhZGVyQmFja2dyb3VuZENvbG9yXCJcclxuICAgIFtzdHlsZS5mb250RmFpbWx5XT1cImZvbnRGYWltbHlcIlxyXG4gID5cclxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW5cIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbC00XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIml0ZW0tdGl0bGVcIj5EZXNjcmlwdGlvbjwvZGl2PlxyXG4gICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cIml0ZW0tY29udGVudCBmaXJzdERpdlwiPlxyXG4gICAgICAgIHt7IHRhc2tEZXRhaWxzLmRlc2NyaXB0aW9uIH19XHJcbiAgICAgIDwvZGl2PiAtLT5cclxuICAgICAgICA8cFxyXG4gICAgICAgICAgW3N0eWxlLmZvbnRTaXplXT1cImJvZHlUZXh0Rm9udHNTaXplXCJcclxuICAgICAgICAgIGNsYXNzPVwiaXRlbS1jb250ZW50IGZpcnN0RGl2IHRhc2tEZXNjcmlwdGlvbiBwZS00XCJcclxuICAgICAgICAgIFtpbm5lckhUTUxdPVwiZ2V0U2FmZUNvbW1lbnQodGFza0RldGFpbHM/LmVkaXRvcl9kZXNjcmlwdGlvbilcIlxyXG4gICAgICAgICAgKGNsaWNrKT1cIm9wZW5GdWxsSW1hZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgPjwvcD5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpdGVtLXRpdGxlXCI+QXR0YWNobWVudHM8L2Rpdj5cclxuICAgICAgICA8aDUgKm5nSWY9XCJ0YXNrRGV0YWlscz8uYXR0YWNobWVudHM/Lmxlbmd0aCA9PSAwXCI+XHJcbiAgICAgICAgICBObyBBdHRhY2htZW50cyBmb3VuZFxyXG4gICAgICAgIDwvaDU+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgKm5nSWY9XCJ0YXNrRGV0YWlscz8uYXR0YWNobWVudHM/Lmxlbmd0aFwiXHJcbiAgICAgICAgICBjbGFzcz1cIml0ZW0tY29udGVudCBkLWZsZXggZmxleC13cmFwXCJcclxuICAgICAgICAgIHN0eWxlPVwiZ2FwOiAxMHB4XCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8YVxyXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgYXR0YWNoZW1lbnQgb2YgdGFza0RldGFpbHM/LmF0dGFjaG1lbnRzOyBsZXQgaSA9IGluZGV4XCJcclxuICAgICAgICAgICAgY2xhc3M9XCJzeW1ib2wtbGFiZWwgZnMtMiBmdy1zZW1pYm9sZCB0ZXh0LXN1Y2Nlc3MgY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgIHRpdGxlPVwie3sgdGFza0RldGFpbHM/LmF0dGFjaG1lbnRzX25hbWVbaV0gfHwgJ0F0dGFjaG1lbnQnIH19XCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwiZG93bmxvYWRBdHRjaG1lbnQoYXR0YWNoZW1lbnQpXCJcclxuICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxyXG4gICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArXHJcbiAgICAgICAgICAgICAgICAnZGF0YS1ncmlkL2RvY3VtZW50LWljb25zLycgK1xyXG4gICAgICAgICAgICAgICAgZ2V0RXh0ZW50aW9uKGF0dGFjaGVtZW50KSArXHJcbiAgICAgICAgICAgICAgICAnLnN2ZydcclxuICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgIDwvYT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpdGVtLXRpdGxlXCI+XHJcbiAgICAgICAgICBDb21tZW50cyAoe3sgdGFza0RldGFpbHM/LmNvbW1lbnRzPy5sZW5ndGggfX0pXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGg1ICpuZ0lmPVwidGFza0RldGFpbHM/LmNvbW1lbnRzPy5sZW5ndGggPT0gMFwiPk5vIENvbW1lbnRzIGZvdW5kPC9oNT5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwidGFza0RldGFpbHM/LmNvbW1lbnRzPy5sZW5ndGhcIiBjbGFzcz1cIml0ZW0tY29udGVudFwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbW1lbnRcIiAqbmdGb3I9XCJsZXQgY29tbWVudCBvZiB0YXNrRGV0YWlscy5jb21tZW50c1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBwZS0zXCI+XHJcbiAgICAgICAgICAgICAgPGltZ1xyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJwaWMgaW1hZ2UtaW5wdXQtd3JhcHBlclwiXHJcbiAgICAgICAgICAgICAgICBbc3R5bGUud2lkdGgucHhdPVwicm93SGVpZ2h0IC0gMTJcIlxyXG4gICAgICAgICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJyb3dIZWlnaHQgLSAxMlwiXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cImNvbW1lbnQ/LmNvbW1lbnRfYnkubG9nb1wiXHJcbiAgICAgICAgICAgICAgICBzcmM9XCJ7eyBjb21tZW50Py5jb21tZW50X2J5LmxvZ28gfX1cIlxyXG4gICAgICAgICAgICAgICAgYWx0PVwie3sgY29tbWVudC5jb21tZW50X2J5LmZ1bGxfbmFtZSB9fVwiXHJcbiAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICA8IS0tIDxhcHAtZGVmYXVsdC1pbWFnZS1wbGFjZWhvbGRlciAqbmdJZj1cIiFjb21tZW50Py5jb21tZW50X2J5LmxvZ29cIiB0aXRsZT1cInt7IGNvbW1lbnQuY29tbWVudF9ieS5mdWxsX25hbWUgfX1cIiBbbmFtZV09XCJjb21tZW50LmNvbW1lbnRfYnkuZnVsbF9uYW1lXCI+PC9hcHAtZGVmYXVsdC1pbWFnZS1wbGFjZWhvbGRlcj4gLS0+XHJcbiAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiIWNvbW1lbnQ/LmNvbW1lbnRfYnkubG9nb1wiXHJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJnZXREeW5hbWljQ2xhc3MoY29tbWVudC5jb21tZW50X2J5LmZ1bGxfbmFtZSlcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJwaWMgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciByb3VuZGVkLWNpcmNsZVwiXHJcbiAgICAgICAgICAgICAgICBbc3R5bGUud2lkdGgucHhdPVwicm93SGVpZ2h0IC0gMTJcIlxyXG4gICAgICAgICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJyb3dIZWlnaHQgLSAxMlwiXHJcbiAgICAgICAgICAgICAgICBbc3R5bGUuZm9udFNpemUucHhdPVwicm93SGVpZ2h0IC8gM1wiXHJcbiAgICAgICAgICAgICAgICB0aXRsZT1cInt7IGNvbW1lbnQuY29tbWVudF9ieS5mdWxsX25hbWUgfX1cIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIHt7IGdldEluaXRpYWxzKGNvbW1lbnQuY29tbWVudF9ieS5mdWxsX25hbWUpIH19XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29tbWVudC1hdXRob3IgZnMtMTRweFwiPlxyXG4gICAgICAgICAgICAgICAge3sgY29tbWVudD8uY29tbWVudF9ieS5mdWxsX25hbWUgfX1cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNvbW1lbnQtY29udGVudCBmb3JDb21tZW50SW1nXCJcclxuICAgICAgICAgICAgICAgIFtpbm5lckhUTUxdPVwiZ2V0U2FmZUNvbW1lbnQoY29tbWVudC5jb21tZW50KVwiXHJcbiAgICAgICAgICAgICAgPjwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb21tZW50LXRpbWVzdGFtcFwiPlxyXG4gICAgICAgICAgICAgICAge3sgY29tbWVudC5jb21tZW50X2RhdGUgfCBkYXRlIH19XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbW1lbnQtdGltZXN0YW1wXCI+XHJcbiAgICAgICAgICAgICAgICBSZXBsaWVzOiAoe3sgY29tbWVudC5yZXBsaWVzLmxlbmd0aCB9fSlcclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuIl19
|