ezlibrary_v2 0.0.90 → 0.0.92

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.
@@ -158,7 +158,7 @@ export class FileuploadComponent {
158
158
  for (var i = 0; i != data.length; ++i)
159
159
  arr[i] = String.fromCharCode(data[i]);
160
160
  var bstr = arr.join("");
161
- var workbook = XLSX.read(bstr, { type: "binary", cellDates: true });
161
+ var workbook = XLSX.read(bstr, { type: "binary", cellDates: true, dateNF: 'mm-dd-yyyy' });
162
162
  var first_sheet_name = workbook.SheetNames[0];
163
163
  var worksheet = workbook.Sheets[first_sheet_name];
164
164
  var sheetDataMap = XLSX.utils.sheet_to_json(worksheet, { header: 1 });
@@ -167,7 +167,7 @@ export class FileuploadComponent {
167
167
  this.headerList.push(hdr.trim());
168
168
  });
169
169
  console.log('worksheet', worksheet);
170
- this.sheetData = XLSX.utils.sheet_to_json(worksheet);
170
+ this.sheetData = XLSX.utils.sheet_to_json(worksheet, { raw: false, dateNF: 'mm-dd-yyyy' });
171
171
  this.mappSheetData = XLSX.utils.sheet_to_json(worksheet);
172
172
  console.log('sheetData', this.sheetData);
173
173
  this.fileLogIdn = 0;
@@ -960,4 +960,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
960
960
  type: ViewChild,
961
961
  args: ['Cofirmmapdtl']
962
962
  }] } });
963
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZXVwbG9hZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lemxpYi9zcmMvbGliL2ZpbGUtdXBsb2FkL2ZpbGV1cGxvYWQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXpsaWIvc3JjL2xpYi9maWxlLXVwbG9hZC9maWxldXBsb2FkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxTQUFTLEVBQVUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RSxPQUFPLEVBQUUsTUFBTSxFQUFFLGNBQWMsRUFBVSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDM0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ2hELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUVqRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDaEYsT0FBTyxLQUFLLElBQUksTUFBTSxNQUFNLENBQUM7QUFDN0Isc0dBQXNHO0FBQ3RHLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTs7Ozs7Ozs7Ozs7QUFTcEQsTUFBTSxPQUFPLG1CQUFtQjtJQXlEOUIsWUFDUyxNQUFjLEVBQ2IsS0FBcUIsRUFDckIsTUFBcUIsRUFDckIsY0FBaUMsRUFDakMsSUFBZ0IsRUFDaEIsRUFBd0I7UUFMekIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNiLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBQ3JCLFdBQU0sR0FBTixNQUFNLENBQWU7UUFDckIsbUJBQWMsR0FBZCxjQUFjLENBQW1CO1FBQ2pDLFNBQUksR0FB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LENBQUMsZ0JBQWdCLENBQUMsWUFBWSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxJQUFJLENBQUMsU0FBUyxJQUFJLFNBQVM7WUFDN0IsWUFBWSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUUvQixJQUFJLElBQUksQ0FBQyxVQUFVLElBQUksU0FBUztZQUM5QixZQUFZLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBRWxDLENBQUM7SUFFRCx3QkFBd0I7UUFDdEIsSUFBSSxDQUFDLGVBQWUsR0FBRztZQUNyQixFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLGlCQUFpQixFQUFFO1NBQ3ZDLENBQUM7UUFDRixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztJQUN4QixDQUFDOzttSUEzaENVLG1CQUFtQjt1SEFBbkIsbUJBQW1CLDhWQ3BCaEMsODQwQkErYlk7MkZEM2FDLG1CQUFtQjtrQkFQL0IsU0FBUzsrQkFDRSxnQkFBZ0I7a1BBUUEsV0FBVztzQkFBcEMsU0FBUzt1QkFBQyxhQUFhO2dCQUNFLFdBQVc7c0JBQXBDLFNBQVM7dUJBQUMsYUFBYTtnQkFDRyxZQUFZO3NCQUF0QyxTQUFTO3VCQUFDLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyJcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIFZpZXdDaGlsZCwgRWxlbWVudFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBSb3V0ZXIsIEFjdGl2YXRlZFJvdXRlLCBQYXJhbXMgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBUb2FzdHJTZXJ2aWNlIH0gZnJvbSAnbmd4LXRvYXN0cic7XHJcbmltcG9ydCB7IE5neFNwaW5uZXJTZXJ2aWNlIH0gZnJvbSBcIm5neC1zcGlubmVyXCI7XHJcbmltcG9ydCB7IENvb2tpZSB9IGZyb20gJ25nMi1jb29raWVzL25nMi1jb29raWVzJztcclxuaW1wb3J0IHsgSHR0cEhlYWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IENvbW1hblNlcnZpY2VTZXJ2aWNlIH0gZnJvbSAnLi4vY29tbWFuLXNlcnZpY2UvY29tbWFuLXNlcnZpY2Uuc2VydmljZSc7XHJcbmltcG9ydCAqIGFzIFhMU1ggZnJvbSAneGxzeCc7XHJcbi8vIGltcG9ydCB7IFVwbG9hZFNlcnZpY2VTZXJ2aWNlIH0gZnJvbSAnc3JjL2FwcC9jb21wb25lbnRzL2ZpbGV1cGxvYWQtbW9kdWxlL3VwbG9hZC1zZXJ2aWNlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBNb2RhbERpcmVjdGl2ZSB9IGZyb20gJ25neC1ib290c3RyYXAvbW9kYWwnXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1maWxldXBsb2FkJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZmlsZXVwbG9hZC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZmlsZXVwbG9hZC5jb21wb25lbnQuY3NzJ11cclxufSlcclxuXHJcblxyXG5leHBvcnQgY2xhc3MgRmlsZXVwbG9hZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2Nsb3NlaGRyYnRuJykgY2xvc2VoZHJidG46IEVsZW1lbnRSZWY7XHJcbiAgQFZpZXdDaGlsZCgnY2xvc2VkdGxidG4nKSBjbG9zZWR0bGJ0bjogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKCdDb2Zpcm1tYXBkdGwnKSBDb2Zpcm1tYXBkdGw6IE1vZGFsRGlyZWN0aXZlO1xyXG4gIGhlYWRlciA9IHt9O1xyXG4gIGZpbGVUb1VwbG9hZDogRmlsZSA9IG51bGw7XHJcbiAgZmlsZU5hbWUgPSBcIlwiO1xyXG4gIGNEdDtcclxuICBzdGVwID0gMTtcclxuICBzaGVldERhdGEgPSBbXTtcclxuICBoZWFkZXJBdHRyaWJ1dGVEdGwgPSB7fTtcclxuICBkZWZ1bHREaXNwbGF5TGVuID0gNTtcclxuICBkZWZ1bHREaXNwbGF5T2JqID0gW107XHJcbiAgYXR0clN0cnVjdHVyZUR0bCA9IFtdO1xyXG4gIGhlYWRlckxpc3QgPSBbXTtcclxuICBoZWFkZXJwcnA7XHJcbiAgYXR0cnBycDtcclxuICB0b3RhbG1hdGNoID0gMDtcclxuICB0b3RhbGlnbm9yZSA9IDA7XHJcbiAgcGFnZURlZmluYXRpb24gPSB7fTtcclxuICByb3dkYXRhbWFwRGV0YWlscyA9IHt9O1xyXG4gIHJvd2Rpc3RpbmN0RGF0YU1hcCA9IHt9O1xyXG4gIGNoYXJIZWFkZXJMaXN0ID0gW107XHJcbiAgYXR0cmlidXRlRHRsTWFwID0ge307XHJcbiAgbWFwcFNoZWV0RGF0YSA9IFtdO1xyXG4gIGxhYmxlID0gXCJcIjtcclxuICBsYWJsZUZpbGUgPSBcIlwiO1xyXG4gIHN0YXR1c0xpc3QgPSBbXTtcclxuICBmaWxlRGV0YWlscyA9IFtdO1xyXG4gIGZpbGVUeXBlTGlzdCA9IFtdO1xyXG4gIGZpbGVPcHRpb25zTGlzdCA9IFtdO1xyXG4gIGZpbGVUeXBlO1xyXG4gIG5tZTtcclxuICB0eXA7XHJcbiAgbWRsO1xyXG4gIGRlc2NyaXB0aW9uO1xyXG4gIGNoZWNrX3N0YXR1cyA9IFtdO1xyXG4gIHBrdF9zdGF0dXMgPSBbXTtcclxuICBjb2xGb3JtYXRlID0gW107XHJcbiAgaWdub3JlRm9ybWF0ZSA9IFtdO1xyXG4gIGFsbGNvbHMgPSBbXTtcclxuICBmaWxlTG9nSWRuID0gMDtcclxuICBzaG93ID0gZmFsc2U7XHJcbiAgc3RlcE1zZyA9ICcnO1xyXG4gIHRpbWVyZmlsZTtcclxuICB0aW1lclByaWNlO1xyXG4gIGRhdGVGb3JtYXQ7XHJcbiAgZGVsaW07XHJcbiAgZGF0ZUZvcm1hdE1hcCA9IHt9O1xyXG4gIG1hcHBpbmdza2lwID0gZmFsc2U7XHJcbiAgZmlsZXR5cGU7XHJcbiAgZmlsZW5tZTtcclxuICBkYXRlRm9ybWF0TGlzdCA9IFt7IFwia1wiOiBcImRkL21tL3l5XCIsIFwidlwiOiBcImRkL21tL3l5XCIgfSxcclxuICB7IFwia1wiOiBcIm1tL2RkL3l5XCIsIFwidlwiOiBcIm1tL2RkL3l5XCIgfSxcclxuICB7IFwia1wiOiBcImRkL01vbi95eVwiLCBcInZcIjogXCJkZC9Nb24veXlcIiB9LFxyXG4gIF1cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyByb3V0ZXI6IFJvdXRlcixcclxuICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxyXG4gICAgcHJpdmF0ZSB0b2FzdHI6IFRvYXN0clNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHNwaW5uZXJTZXJ2aWNlOiBOZ3hTcGlubmVyU2VydmljZSAsXHJcbiAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXHJcbiAgICBwcml2YXRlIGNzOiBDb21tYW5TZXJ2aWNlU2VydmljZVxyXG4gICkgeyB9XHJcblxyXG4gIGhhbmRsZUZpbGVJbnB1dChmaWxlczogRmlsZUxpc3QpIHtcclxuICAgIHRoaXMuZmlsZVRvVXBsb2FkID0gZmlsZXMuaXRlbSgwKTtcclxuICAgIHRoaXMuZmlsZU5hbWUgPSBmaWxlc1swXS5uYW1lO1xyXG4gIH1cclxuICBvbkZpbGVTZWxlY3QoaW5wdXQ6IEhUTUxJbnB1dEVsZW1lbnQpIHtcclxuICAgIGNvbnN0IGZpbGVzID0gaW5wdXQuZmlsZXM7XHJcblxyXG4gICAgaWYgKGZpbGVzICYmIGZpbGVzLmxlbmd0aCkge1xyXG5cclxuICAgICAgY29uc3QgZmlsZVRvUmVhZCA9IGZpbGVzWzBdO1xyXG5cclxuICAgICAgY29uc3QgZmlsZVJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XHJcbiAgICAgIGZpbGVSZWFkZXIub25sb2FkID0gdGhpcy5vbkZpbGVMb2FkO1xyXG5cclxuICAgICAgZmlsZVJlYWRlci5yZWFkQXNUZXh0KGZpbGVUb1JlYWQsIFwiVVRGLThcIik7XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcblxyXG5cclxuICBjc3ZDb250ZW50OiBzdHJpbmc7XHJcbiAgcGFyc2VkQ3N2OiBzdHJpbmdbXVtdO1xyXG4gIG9uRmlsZUxvYWQoZmlsZUxvYWRlZEV2ZW50KSB7XHJcbiAgICBjb25zdCBjc3ZTZXBhcmF0b3IgPSAnOyc7XHJcbiAgICBjb25zdCB0ZXh0RnJvbUZpbGVMb2FkZWQgPSBmaWxlTG9hZGVkRXZlbnQudGFyZ2V0LnJlc3VsdDtcclxuICAgIHRoaXMuY3N2Q29udGVudCA9IHRleHRGcm9tRmlsZUxvYWRlZDtcclxuICAgIGNvbnN0IHR4dCA9IHRleHRGcm9tRmlsZUxvYWRlZDtcclxuICAgIGNvbnN0IGNzdiA9IFtdO1xyXG4gICAgY29uc3QgbGluZXMgPSB0eHQuc3BsaXQoJ1xcbicpO1xyXG5cclxuICAgIGNvbnNvbGUubG9nKGxpbmVzWzBdKTtcclxuXHJcblxyXG4gICAgbGluZXMuZm9yRWFjaChlbGVtZW50ID0+IHtcclxuICAgICAgY29uc3QgY29sczogc3RyaW5nW10gPSBlbGVtZW50LnNwbGl0KGNzdlNlcGFyYXRvcik7XHJcbiAgICAgIGNzdi5wdXNoKGNvbHMpO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLnBhcnNlZENzdiA9IGNzdjtcclxuXHJcbiAgICAvLyBkZW1vIG91dHB1dCBhcyBhbGVydFxyXG4gICAgdmFyIG91dHB1dDogc3RyaW5nID0gXCJcIjtcclxuICAgIGNzdi5mb3JFYWNoKHJvdyA9PiB7XHJcbiAgICAgIG91dHB1dCArPSBcIlxcblwiO1xyXG4gICAgICB2YXIgY29sTm8gPSAwO1xyXG4gICAgICByb3cuZm9yRWFjaChjb2wgPT4ge1xyXG4gICAgICAgIGlmIChjb2xObyA+IDApIG91dHB1dCArPSBcIiB8IFwiO1xyXG4gICAgICAgIG91dHB1dCArPSBjb2w7XHJcbiAgICAgICAgY29sTm8rKztcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBvdXRwdXQ7XHJcbiAgfVxyXG5cclxuXHJcbiAgYXJyYXlCdWZmZXI6IGFueTtcclxuICBmaWxlOiBGaWxlO1xyXG4gIGluY29taW5nZmlsZShldmVudCkge1xyXG4gICAgdGhpcy5maWxlID0gZXZlbnQudGFyZ2V0LmZpbGVzWzBdO1xyXG4gICAgdGhpcy5maWxlTmFtZSA9IHRoaXMuZmlsZS5uYW1lO1xyXG4gICAgdGhpcy5VcGxvYWQoKTtcclxuICB9XHJcblxyXG5cclxuICBVcGxvYWQoKSB7XHJcblxyXG4gICAgdGhpcy5zaG93ID0gdHJ1ZTtcclxuICAgIHRoaXMuc3RlcE1zZyA9ICdGaWxlIHVwbG9hZCBpbiBwcm9jZXNzLi4nO1xyXG4gICAgLy8gdGhpcy5zcGlubmVyU2VydmljZS5zaG93KCk7XHJcbiAgICB0aGlzLm1hcHBTaGVldERhdGEgPSBbXTtcclxuICAgIHRoaXMuc2hlZXREYXRhID0gW107XHJcbiAgICBsZXQgZmlsZVJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XHJcbiAgICBmaWxlUmVhZGVyLm9ubG9hZCA9IChlKSA9PiB7XHJcbiAgICAgIHRoaXMuYXJyYXlCdWZmZXIgPSBmaWxlUmVhZGVyLnJlc3VsdDtcclxuICAgICAgdmFyIGRhdGEgPSBuZXcgVWludDhBcnJheSh0aGlzLmFycmF5QnVmZmVyKTtcclxuICAgICAgdmFyIGFyciA9IG5ldyBBcnJheSgpO1xyXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSAhPSBkYXRhLmxlbmd0aDsgKytpKSBhcnJbaV0gPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGRhdGFbaV0pO1xyXG4gICAgICB2YXIgYnN0ciA9IGFyci5qb2luKFwiXCIpO1xyXG4gICAgICB2YXIgd29ya2Jvb2sgPSBYTFNYLnJlYWQoYnN0ciwgeyB0eXBlOiBcImJpbmFyeVwiLCBjZWxsRGF0ZXM6IHRydWUgfSk7XHJcbiAgICAgIHZhciBmaXJzdF9zaGVldF9uYW1lID0gd29ya2Jvb2suU2hlZXROYW1lc1swXTtcclxuICAgICAgdmFyIHdvcmtzaGVldCA9IHdvcmtib29rLlNoZWV0c1tmaXJzdF9zaGVldF9uYW1lXTtcclxuXHJcbiAgICAgIHZhciBzaGVldERhdGFNYXA6IGFueSA9IFhMU1gudXRpbHMuc2hlZXRfdG9fanNvbih3b3Jrc2hlZXQsIHsgaGVhZGVyOiAxIH0pO1xyXG4gICAgICBsZXQgaGVhZGVyTGlzdCA9IHNoZWV0RGF0YU1hcFswXTtcclxuICAgICAgaGVhZGVyTGlzdC5mb3JFYWNoKGhkciA9PiB7XHJcbiAgICAgICAgdGhpcy5oZWFkZXJMaXN0LnB1c2goaGRyLnRyaW0oKSk7XHJcbiAgICAgIH0pO1xyXG4gICAgICBjb25zb2xlLmxvZygnd29ya3NoZWV0Jyx3b3Jrc2hlZXQpXHJcbiAgICAgIHRoaXMuc2hlZXREYXRhID0gWExTWC51dGlscy5zaGVldF90b19qc29uKHdvcmtzaGVldCk7XHJcbiAgICAgIHRoaXMubWFwcFNoZWV0RGF0YSA9IFhMU1gudXRpbHMuc2hlZXRfdG9fanNvbih3b3Jrc2hlZXQpO1xyXG4gICAgICBjb25zb2xlLmxvZygnc2hlZXREYXRhJyx0aGlzLnNoZWV0RGF0YSlcclxuICAgICAgdGhpcy5maWxlTG9nSWRuID0gMDtcclxuICAgICAgY29uc29sZS5sb2coXCJ0aGlzLmhlYWRlckxpc3RcIiwgdGhpcy5oZWFkZXJMaXN0KTtcclxuXHJcbiAgICAgIHRoaXMuZ2V0SGVhZGVyTWF0Y2goKTtcclxuICAgICAgLy8gY29uc3QgZGlzdGluY3RTaCA9IFsuLi5uZXcgU2V0KHRoaXMuc2hlZXREYXRhLm1hcCh4PT54LlNIQVBFKSldO1xyXG4gICAgfVxyXG4gICAgZmlsZVJlYWRlci5yZWFkQXNBcnJheUJ1ZmZlcih0aGlzLmZpbGUpO1xyXG4gIH1cclxuXHJcbiAgc2V0U2V0cChzdGVwKSB7XHJcbiAgICB0aGlzLnN0ZXAgPSBzdGVwO1xyXG5cclxuICAgIGlmIChzdGVwID09IDEpIHtcclxuICAgICAgdGhpcy5uZ09uRGVzdHJveSgpO1xyXG4gICAgICB0aGlzLm5nT25Jbml0KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRIZWFkZXJNYXRjaCgpIHtcclxuICAgIHRoaXMuc2hvdyA9IHRydWU7XHJcbiAgICBkZWJ1Z2dlcjtcclxuICAgIHRoaXMuc3RlcE1zZyA9ICdIZWFkZXIgdmVyaWZpY2F0aW9uIGluIHByb2Nlc3MgLi4uJztcclxuICAgIC8vIHRoaXMuc3Bpbm5lclNlcnZpY2Uuc2hvdygpO1xyXG4gICAgbGV0IHJlcU9iaiA9IHt9O1xyXG4gICAgcmVxT2JqWydmb3JtTm1lJ10gPSAnZmlsZVVwbG9hZCc7XHJcbiAgICByZXFPYmpbJ2F0dHJMaXN0J10gPSB0aGlzLmhlYWRlckxpc3Q7XHJcbiAgICByZXFPYmpbJ2ZpbGVJZG4nXSA9IHRoaXMuZmlsZVR5cGU7XHJcbiAgICB0aGlzLmhlYWRlcltcIm1ldGhvZFwiXSA9ICdsb2FkSGVhZGVyQXR0cic7XHJcbiAgICBsZXQgb3B0aW9ucyA9IHtcclxuICAgICAgbWV0aG9kOiB0aGlzLmhlYWRlcltcIm1ldGhvZFwiXVxyXG4gICAgfVxyXG4gICAgdGhpcy5jcy5sb2FkaUZpbGUocmVxT2JqLCBvcHRpb25zLCAnZmlsZVVwbG9hZC9sb2FkJykudGhlbigocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09ICdTVUNDRVNTJykge1xyXG4gICAgICAgIGxldCByZXN1bHQgPSByZXNwb25zZS5yZXN1bHQ7XHJcbiAgICAgICAgdGhpcy5oZWFkZXJBdHRyaWJ1dGVEdGwgPSByZXN1bHQuYXR0ckRldGFpbHMgfHwgJyc7XHJcbiAgICAgICAgY29uc29sZS5sb2coXCJ0aGlzLmhlYWRlckF0dHJpYnV0ZUR0bFwiLCB0aGlzLmhlYWRlckF0dHJpYnV0ZUR0bCk7XHJcbiAgICAgICAgbGV0IGhlYWRlckxpc3RMbnQgPSB0aGlzLmhlYWRlckxpc3QubGVuZ3RoO1xyXG4gICAgICAgIHRoaXMudG90YWxtYXRjaCA9IHJlc3VsdC50b3RhbG1hdGNoIHx8IDA7XHJcbiAgICAgICAgaWYgKHRoaXMuaGVhZGVyQXR0cmlidXRlRHRsICE9ICcnKSB7XHJcbiAgICAgICAgICB0aGlzLmF0dHJTdHJ1Y3R1cmVEdGwgPSByZXN1bHQuYXR0clN0cnVjdHVyZUR0bCB8fCBbXTtcclxuICAgICAgICAgIGlmICh0aGlzLnNoZWV0RGF0YS5sZW5ndGggPCA1KVxyXG4gICAgICAgICAgICB0aGlzLmRlZnVsdERpc3BsYXlMZW4gPSB0aGlzLnNoZWV0RGF0YS5sZW5ndGg7XHJcblxyXG4gICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmRlZnVsdERpc3BsYXlMZW47IGkrKylcclxuICAgICAgICAgICAgdGhpcy5kZWZ1bHREaXNwbGF5T2JqW2ldID0gdGhpcy5zaGVldERhdGFbaV07XHJcblxyXG4gICAgICAgICAgbGV0IGlnbm9yZUNvbHVtbkxzdCA9IHJlc3VsdC5pZ25vcmVfY29sdW1uIHx8IFtdO1xyXG4gICAgICAgICAgaWdub3JlQ29sdW1uTHN0LmZvckVhY2goaGRyRHNjID0+IHtcclxuXHJcbiAgICAgICAgICAgIGlmICh0aGlzLmhlYWRlckF0dHJpYnV0ZUR0bFtoZHJEc2NdICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgIHRoaXMuaGVhZGVyQXR0cmlidXRlRHRsW2hkckRzY10uaWdub3JlID0gJ1knO1xyXG4gICAgICAgICAgICAgIGhlYWRlckxpc3RMbnQtLTtcclxuICAgICAgICAgICAgICB0aGlzLnRvdGFsaWdub3JlKys7XHJcbiAgICAgICAgICAgICAgaWYgKHRoaXMuaGVhZGVyQXR0cmlidXRlRHRsW2hkckRzY10uYXR0ciAhPSBcIlwiKVxyXG4gICAgICAgICAgICAgICAgdGhpcy50b3RhbG1hdGNoLS07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgbGV0IGlzRGF0ZSA9IGZhbHNlO1xyXG5cclxuICAgICAgICAgIHRoaXMuaGVhZGVyTGlzdC5mb3JFYWNoKGhkciA9PiB7XHJcblxyXG4gICAgICAgICAgICBsZXQgaGRyQXR0ciA9IHRoaXMuaGVhZGVyQXR0cmlidXRlRHRsW2hkcl0gfHwge307XHJcbiAgICAgICAgICAgIGlmIChoZHJBdHRyLmR0YV90eXAgPT0gJ2QnKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5kYXRlRm9ybWF0TWFwW2hkcl0gPSB0aGlzLmRhdGVGb3JtYXQ7XHJcbiAgICAgICAgICAgICAgaXNEYXRlID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgaWYgKHRoaXMudG90YWxtYXRjaCA9PSBoZWFkZXJMaXN0TG50ICYmIGlzRGF0ZSA9PSBmYWxzZSkge1xyXG4gICAgICAgICAgICB0aGlzLlZhbGlkYXRlRmlsZUhlYWRlck1hcHBpbmcoJ04nKTtcclxuICAgICAgICAgICAgdGhpcy5zaG93ID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuc3RlcCA9IDM7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5zdGVwID0gMjtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuc2hvdyA9IGZhbHNlO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcihcIlNvbWUgcHJvYmxlbSBpbiBGaWxlIEhlYWRlciBNYXRjaGluZ1wiKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy90aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgICB0aGlzLnNob3cgPSBmYWxzZTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnNob3cgPSBmYWxzZTtcclxuICAgICAgICAvL3RoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICAgIHRoaXMudG9hc3RyLmVycm9yKHJlc3BvbnNlLm1lc3NhZ2UpO1xyXG4gICAgICB9XHJcbiAgICB9LCBlcnJvciA9PiB7XHJcbiAgICAgIC8vIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICB0aGlzLnNob3cgPSBmYWxzZTtcclxuICAgICAgdGhpcy50b2FzdHIuZXJyb3IoZXJyb3IpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHVwZGF0ZWNvbHVtbnN0YXR1ZShoZHIpIHtcclxuXHJcbiAgICB2YXIgaXNJZ25vcmUgPSB0aGlzLmhlYWRlckF0dHJpYnV0ZUR0bFtoZHJdLmlnbm9yZSB8fCAnJztcclxuICAgIGlmIChpc0lnbm9yZSA9PSAnWScpIHtcclxuICAgICAgdGhpcy5oZWFkZXJBdHRyaWJ1dGVEdGxbaGRyXS5pZ25vcmUgPSAnTidcclxuICAgICAgdGhpcy50b3RhbGlnbm9yZS0tO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy50b3RhbGlnbm9yZSsrO1xyXG4gICAgICB0aGlzLmhlYWRlckF0dHJpYnV0ZUR0bFtoZHJdLmlnbm9yZSA9ICdZJztcclxuICAgIH1cclxuICAgIGNvbnNvbGUubG9nKHRoaXMuaGVhZGVyQXR0cmlidXRlRHRsW2hkcl0pO1xyXG4gIH1cclxuICBtYXBoZHI7XHJcbiAgaGRybWFzc2FnZTtcclxuICBjb25maXJtc2V0SGVhZGVyTWFwcChoZHIpIHtcclxuICAgIHRoaXMubWFwaGRyID0gaGRyO1xyXG4gICAgbGV0IGF0dHIgPSB0aGlzLmhlYWRlckF0dHJpYnV0ZUR0bFtoZHJdLmF0dHI7XHJcbiAgICB0aGlzLmF0dHJTdHJ1Y3R1cmVEdGwuZm9yRWFjaChlbGUgPT4ge1xyXG5cclxuICAgICAgaWYgKGVsZS5hdHRyID09IGF0dHIpIHtcclxuICAgICAgICB0aGlzLmhkcm1hc3NhZ2UgPSB0aGlzLmhlYWRlckF0dHJpYnV0ZUR0bFtoZHJdLmF0dHIgKyBcIihcIiArIGVsZS5wcmludCArIFwiKVwiO1xyXG4gICAgICB9XHJcbiAgICB9KVxyXG5cclxuICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdidG5Db2Zpcm1tYXBoZHInKS5jbGljaygpO1xyXG4gIH1cclxuICBDYW5jZWxIZWFkZXJNYXBwKCkge1xyXG4gICAgdGhpcy5oZWFkZXJBdHRyaWJ1dGVEdGxbdGhpcy5tYXBoZHJdLmF0dHIgPSBcIlwiO1xyXG4gIH1cclxuICBzZXRIZWFkZXJNYXBwKCkge1xyXG4gICAgZGVidWdnZXI7XHJcbiAgICBsZXQgYXR0ciA9IHRoaXMuaGVhZGVyQXR0cmlidXRlRHRsW3RoaXMubWFwaGRyXS5hdHRyIHx8ICcnO1xyXG4gICAgaWYgKGF0dHIgIT0gJycpIHtcclxuICAgICAgbGV0IHJlcU9iaiA9IHt9O1xyXG4gICAgICByZXFPYmpbJ2Zvcm1ObWUnXSA9ICdmaWxlVXBsb2FkJztcclxuICAgICAgcmVxT2JqWydvcHRpb25hVmFsJ10gPSB0aGlzLm1hcGhkclxyXG4gICAgICByZXFPYmpbJ2F0dHInXSA9IGF0dHI7XHJcbiAgICAgIGNvbnNvbGUubG9nKEpTT04uc3RyaW5naWZ5KHJlcU9iaikpO1xyXG4gICAgICB0aGlzLmhlYWRlcltcIm1ldGhvZFwiXSA9ICdhZGRIZWFkZXJBdHRyJztcclxuICAgICAgbGV0IG9wdGlvbnMgPSB7XHJcbiAgICAgICAgbWV0aG9kOiB0aGlzLmhlYWRlcltcIm1ldGhvZFwiXVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuY3MubG9hZGlGaWxlKHJlcU9iaiwgb3B0aW9ucywgJ2ZpbGVVcGxvYWQvbG9hZCcpLnRoZW4oKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgICBjb25zb2xlLmxvZyhyZXNwb25zZSk7XHJcblxyXG4gICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT0gJ1NVQ0NFU1MnKSB7XHJcbiAgICAgICAgICBsZXQgcmVzdWx0ID0gcmVzcG9uc2UucmVzdWx0IHx8IHt9O1xyXG4gICAgICAgICAgbGV0IGhkckR0bCA9IHJlc3VsdC5hdHRyRGV0YWlsc1t0aGlzLm1hcGhkcl0gfHwgJyc7XHJcbiAgICAgICAgICBpZiAoaGRyRHRsICE9ICcnKSB7XHJcbiAgICAgICAgICAgIHRoaXMudG90YWxtYXRjaCsrO1xyXG4gICAgICAgICAgICB0aGlzLmhlYWRlckF0dHJpYnV0ZUR0bFt0aGlzLm1hcGhkcl0gPSBoZHJEdGw7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmhlYWRlckF0dHJpYnV0ZUR0bFt0aGlzLm1hcGhkcl0gPSB7XHJcbiAgICAgICAgICAgICAgXCJhdHRyXCI6IFwiXCIsXHJcbiAgICAgICAgICAgICAgXCJwcmludFwiOiBcIlwiLFxyXG4gICAgICAgICAgICAgIFwic3J0XCI6IFwiXCIsXHJcbiAgICAgICAgICAgICAgXCJkdGFfdHlwXCI6IFwiXCIsXHJcbiAgICAgICAgICAgICAgXCJhdHRyX2lkblwiOiBcIlwiXHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICB9LCBlcnJvciA9PiB7XHJcblxyXG4gICAgICAgIHRoaXMudG9hc3RyLmVycm9yKGVycm9yKTtcclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnRvYXN0ci5lcnJvcihcIk1hcHBpbmcgYXR0cmlidXRlIGlzIGVtcHR5IHBsZWFzZSByZXRyeS5cIik7XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgZ21hdGNoZWRDb3VudCA9IDA7XHJcbiAgZ3Jlc3VsdENvdW50ID0gMDtcclxuICBzZXRSb3dEYXRhTWFwcCgpIHtcclxuICAgIGlmICghdGhpcy5tYXBwaW5nc2tpcCkge1xyXG4gICAgICBsZXQgcm93TWF0Y2hDb3VudCA9IDA7XHJcbiAgICAgIHRoaXMuY2hhckhlYWRlckxpc3QgPSBbXTtcclxuICAgICAgZGVidWdnZXJcclxuICAgICAgdGhpcy5oZWFkZXJMaXN0LmZvckVhY2goaGRyID0+IHtcclxuXHJcbiAgICAgICAgbGV0IGF0dHIgPSB0aGlzLmhlYWRlckF0dHJpYnV0ZUR0bFtoZHJdLmF0dHIgfHwgJyc7XHJcbiAgICAgICAgbGV0IGF0dHJUeXBlID0gdGhpcy5oZWFkZXJBdHRyaWJ1dGVEdGxbaGRyXS5kdGFfdHlwIHx8ICcnO1xyXG4gICAgICAgIGxldCBpc0lnbm9yZSA9IHRoaXMuaGVhZGVyQXR0cmlidXRlRHRsW2hkcl0uaWdub3JlIHx8ICcnO1xyXG4gICAgICAgIGlmIChhdHRyICE9ICcnICYmIGlzSWdub3JlICE9ICdOJyAmJiBhdHRyVHlwZSA9PSAnYycpIHtcclxuICAgICAgICAgIGRlYnVnZ2VyXHJcbiAgICAgICAgICB2YXIgZGlzdGluY3RsaXN0ID0gQXJyYXkuZnJvbShuZXcgU2V0KHRoaXMuc2hlZXREYXRhLm1hcCgoaXRlbTogYW55KSA9PiBpdGVtW2hkcl0pKSk7XHJcbiAgICAgICAgICBkaXN0aW5jdGxpc3QgPSBkaXN0aW5jdGxpc3QuZmlsdGVyKGZ1bmN0aW9uIChlKSB7IHJldHVybiBlIH0pO1xyXG4gICAgICAgICAgaWYgKGRpc3RpbmN0bGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMucm93ZGlzdGluY3REYXRhTWFwW2F0dHJdID0gZGlzdGluY3RsaXN0O1xyXG4gICAgICAgICAgICByb3dNYXRjaENvdW50ID0gcm93TWF0Y2hDb3VudCArIGRpc3RpbmN0bGlzdC5sZW5ndGg7XHJcbiAgICAgICAgICAgIHRoaXMuZ21hdGNoZWRDb3VudCA9IHJvd01hdGNoQ291bnQ7XHJcbiAgICAgICAgICAgIHRoaXMuY2hhckhlYWRlckxpc3QucHVzaChoZHIpO1xyXG4gICAgICAgICAgICBsZXQgYXR0ckRldGFpbHMgPSB0aGlzLmF0dHJTdHJ1Y3R1cmVEdGwuZmluZChhdHRyZHRsID0+IGF0dHJkdGwuYXR0ciA9PSBhdHRyKSB8fCB7fTtcclxuICAgICAgICAgICAgdGhpcy5hdHRyaWJ1dGVEdGxNYXBbYXR0cl0gPSBhdHRyRGV0YWlscy5wcnBMaXN0IHx8IFtdO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcblxyXG5cclxuICAgICAgfSk7XHJcbiAgICAgIGxldCByZXFPYmogPSB7fTtcclxuICAgICAgcmVxT2JqWydmb3JtTm1lJ10gPSAnZmlsZVVwbG9hZCc7XHJcbiAgICAgIHJlcU9ialsnYXR0ck1hcCddID0gdGhpcy5yb3dkaXN0aW5jdERhdGFNYXA7XHJcbiAgICAgIGNvbnNvbGUubG9nKEpTT04uc3RyaW5naWZ5KHJlcU9iaikpO1xyXG4gICAgICB0aGlzLmhlYWRlcltcIm1ldGhvZFwiXSA9ICdsb2FkSGVhZGVyQXR0ckR0bCc7XHJcbiAgICAgIGxldCBvcHRpb25zID0ge1xyXG4gICAgICAgIG1ldGhvZDogdGhpcy5oZWFkZXJbXCJtZXRob2RcIl1cclxuICAgICAgfVxyXG4gICAgICB0aGlzLmNzLmxvYWRpRmlsZShyZXFPYmosb3B0aW9ucywgJ2ZpbGVVcGxvYWQvbG9hZCcpLnRoZW4oKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09ICdTVUNDRVNTJykge1xyXG4gICAgICAgICAgbGV0IHJlc3VsdCA9IHJlc3BvbnNlLnJlc3VsdDtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKHJlc3VsdCk7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhyb3dNYXRjaENvdW50KTtcclxuICAgICAgICAgIGRlYnVnZ2VyO1xyXG5cclxuICAgICAgICAgIHRoaXMucm93ZGF0YW1hcERldGFpbHMgPSByZXN1bHQuYXR0ckRldGFpbHMgfHwge307XHJcbiAgICAgICAgICB0aGlzLmdyZXN1bHRDb3VudCA9IHJlc3VsdC50b3RhbG1hdGNoO1xyXG4gICAgICAgICAgdGhpcy5zdGVwID0gMztcclxuICAgICAgICAgIGlmIChyb3dNYXRjaENvdW50ID09IHJlc3VsdC50b3RhbG1hdGNoKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc3RlcCA9IDQ7XHJcbiAgICAgICAgICAgIHRoaXMudXBsb2FkRmlsZSgpO1xyXG5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcihcInBsZWFzZSB2ZXJpZnkgZGF0YSBtYXBwaW5nLlwiKTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMudG9hc3RyLmVycm9yKFwic29tZXRoaW5nIGdvIHdyb25nIGluIHJvdyBkYXRhLlwiKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sIGVycm9yID0+IHtcclxuICAgICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcihlcnJvcik7XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zdGVwID0gNDtcclxuICAgICAgdGhpcy51cGxvYWRGaWxlKCk7XHJcbiAgICB9XHJcblxyXG4gIH1cclxuICBkdGxBdHRyO1xyXG4gIGR0bGF0dHJfaWRuO1xyXG4gIGR0bG9wdGlvbnZhbDtcclxuICBkdGxtYXNzYWdlO1xyXG4gIGNvbmZpcm1IZWFkZXJEZXRhaWxzTWFwcChhdHRyLCBhdHRyX2lkbiwgb3B0aW9udmFsKSB7XHJcbiAgICB0aGlzLmR0bEF0dHIgPSBhdHRyO1xyXG4gICAgdGhpcy5kdGxhdHRyX2lkbiA9IGF0dHJfaWRuO1xyXG4gICAgdGhpcy5kdGxvcHRpb252YWwgPSBvcHRpb252YWw7XHJcbiAgICBsZXQgdmFsID0gdGhpcy5yb3dkYXRhbWFwRGV0YWlsc1t0aGlzLmR0bEF0dHJdW3RoaXMuZHRsb3B0aW9udmFsXS52YWw7XHJcbiAgICBsZXQgYXR0cmlidXRlRHRsTGlzdCA9IHRoaXMuYXR0cmlidXRlRHRsTWFwW2F0dHJdO1xyXG4gICAgYXR0cmlidXRlRHRsTGlzdC5mb3JFYWNoKGVsZSA9PiB7XHJcblxyXG4gICAgICBpZiAoZWxlLnZhbCA9PSB2YWwpIHtcclxuICAgICAgICB0aGlzLmR0bG1hc3NhZ2UgPSB2YWwgKyBcIihcIiArIGVsZS5wcmludCArIFwiKVwiO1xyXG4gICAgICB9XHJcbiAgICB9KVxyXG5cclxuICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdidG5Db2Zpcm1tYXBkdGwnKS5jbGljaygpO1xyXG5cclxuICB9XHJcblxyXG4gIENhbmNlbEhlYWRlckRldGFpbHNNYXBwKCkge1xyXG4gICAgdGhpcy5yb3dkYXRhbWFwRGV0YWlsc1t0aGlzLmR0bEF0dHJdW3RoaXMuZHRsb3B0aW9udmFsXS52YWwgPSBcIlwiO1xyXG4gIH1cclxuICBzZXRIZWFkZXJEZXRhaWxzTWFwcCgpIHtcclxuICAgIGxldCBhdHRyRHRsVmFsID0gdGhpcy5yb3dkYXRhbWFwRGV0YWlsc1t0aGlzLmR0bEF0dHJdW3RoaXMuZHRsb3B0aW9udmFsXS52YWwgfHwgJyc7XHJcbiAgICBpZiAoYXR0ckR0bFZhbCAhPSAnJykge1xyXG4gICAgICBsZXQgcmVxT2JqID0ge307XHJcbiAgICAgIHJlcU9ialsnZm9ybU5tZSddID0gJ2ZpbGVVcGxvYWQnO1xyXG4gICAgICByZXFPYmpbJ29wdGlvbmFWYWwnXSA9IHRoaXMuZHRsb3B0aW9udmFsXHJcbiAgICAgIHJlcU9ialsnYXR0cl9pZG4nXSA9IHRoaXMuZHRsYXR0cl9pZG47XHJcbiAgICAgIHJlcU9ialsnYXR0ciddID0gdGhpcy5kdGxBdHRyO1xyXG4gICAgICByZXFPYmpbJ2F0dHJWYWwnXSA9IGF0dHJEdGxWYWw7XHJcbiAgICAgIHRoaXMuaGVhZGVyW1wibWV0aG9kXCJdID0gJ2FkZERldGFpbEF0dHInO1xyXG4gICAgICBjb25zb2xlLmxvZyhKU09OLnN0cmluZ2lmeShyZXFPYmopKTtcclxuICAgICAgbGV0IG9wdGlvbnMgPSB7XHJcbiAgICAgICAgbWV0aG9kOiB0aGlzLmhlYWRlclsnbWV0aG9kJ11cclxuICAgICAgfVxyXG4gICAgICB0aGlzLmNzLmxvYWRpRmlsZShyZXFPYmosIG9wdGlvbnMsICdmaWxlVXBsb2FkL2xvYWQnKS50aGVuKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5sb2coXCJhZGREZXRhaWxBdHRyXCIsIHJlc3BvbnNlKTtcclxuICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09ICdTVUNDRVNTJykge1xyXG4gICAgICAgICAgdGhpcy5ncmVzdWx0Q291bnQrKztcclxuICAgICAgICAgIGxldCByZXN1bHQgPSByZXNwb25zZS5yZXN1bHQgfHwge307XHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhyZXN1bHQuYXR0ckRldGFpbHMpO1xyXG4gICAgICAgICAgbGV0IGF0dHJEZXRhaWxzID0gcmVzdWx0LmF0dHJEZXRhaWxzIHx8IHt9XHJcbiAgICAgICAgICB0aGlzLnJvd2RhdGFtYXBEZXRhaWxzW3RoaXMuZHRsQXR0cl1bdGhpcy5kdGxvcHRpb252YWxdID0gYXR0ckRldGFpbHNbdGhpcy5kdGxvcHRpb252YWxdO1xyXG4gICAgICAgICAgdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICB9LCBlcnJvciA9PiB7XHJcblxyXG4gICAgICAgIHRoaXMudG9hc3RyLmVycm9yKGVycm9yKTtcclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnRvYXN0ci5lcnJvcihcIk1hcHBpbmcgYXR0cmlidXRlIGlzIGVtcHR5IHBsZWFzZSByZXRyeS5cIik7XHJcbiAgICB9XHJcblxyXG5cclxuICB9XHJcblxyXG5cclxuICBvblN1Ym1pdChmb3JtVmFsKSB7XHJcbiAgICB2YXIgdCA9IE9iamVjdC5rZXlzKGZvcm1WYWwuZm9ybS5jb250cm9scykuZm9yRWFjaChmaWVsZCA9PiB7XHJcbiAgICAgIGNvbnN0IGNvbnRyb2wgPSBmb3JtVmFsLmZvcm0uZ2V0KGZpZWxkKTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5zYXZlRmlsZU9wdGlvbihmb3JtVmFsLnZhbHVlKTtcclxuICB9XHJcbiAgc2F2ZUZpbGVPcHRpb24oZnJtdmFscykge1xyXG4gICAgdGhpcy5zcGlubmVyU2VydmljZS5zaG93KCk7XHJcbiAgICBsZXQgcmVxT2JqID0ge307XHJcbiAgICByZXFPYmogPSB7IC4uLmZybXZhbHMsIGNvbHVtbl9mb3JtYXQ6IHRoaXMuY29sRm9ybWF0ZSwgaWdub3JlX2NvbHVtbjogdGhpcy5pZ25vcmVGb3JtYXRlIH07XHJcbiAgICByZXFPYmpbJ2Zvcm1ObWUnXSA9ICdmaWxlVXBsb2FkJztcclxuICAgIGNvbnNvbGUubG9nKEpTT04uc3RyaW5naWZ5KHJlcU9iaikpO1xyXG4gICAgdGhpcy5oZWFkZXJbXCJtZXRob2RcIl0gPSAnYWRkRmlsZU9wdGlvbic7XHJcbiAgICBsZXQgb3B0aW9ucyA9IHtcclxuICAgICAgbWV0aG9kOiB0aGlzLmhlYWRlcltcIm1ldGhvZFwiXVxyXG4gICAgfVxyXG4gICAgdGhpcy5jcy5sb2FkaUZpbGUocmVxT2JqLCBvcHRpb25zLCAnZmlsZVVwbG9hZC9sb2FkJykudGhlbigocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09ICdTVUNDRVNTJykge1xyXG4gICAgICAgIGRlYnVnZ2VyXHJcbiAgICAgICAgbGV0IHJlc3VsdCA9IHJlc3BvbnNlLnJlc3VsdCB8fCB7fTtcclxuICAgICAgICB0aGlzLmZpbGVPcHRpb25zTGlzdCA9IHJlc3VsdC5maWxlT3B0aW9uc0xpc3Q7XHJcbiAgICAgICAgdGhpcy5maWxlVHlwZSA9IHJlc3VsdC5maWxlX2lkbjtcclxuICAgICAgICB0aGlzLlZhbGlkYXRlRmlsZUhlYWRlck1hcHBpbmcoJ04nKTtcclxuICAgICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgICB0aGlzLnRvYXN0ci5zdWNjZXNzKHJlc3BvbnNlLm1lc3NhZ2UpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgfSwgZXJyb3IgPT4ge1xyXG4gICAgICB0aGlzLnRvYXN0ci5lcnJvcihlcnJvcik7XHJcbiAgICB9KTtcclxuICB9XHJcbiAgYWRkRmlsZUxvZyhmaWxlSWRuKSB7XHJcbiAgICBkZWJ1Z2dlclxyXG4gICAgbGV0IHJlcU9iaiA9IHt9O1xyXG4gICAgcmVxT2JqWydmb3JtTm1lJ10gPSAnZmlsZVVwbG9hZCc7XHJcbiAgICByZXFPYmpbJ2ZpbGVfaWRuJ10gPSBmaWxlSWRuO1xyXG4gICAgcmVxT2JqWydmaWxlX3N0YXR1cyddID0gXCJIZWFkZXIgSW5zZXJ0ZWRcIjtcclxuICAgIHJlcU9ialsndmFsaWRhdGlvbl9yZW1hcmtzJ10gPSBcIkhlYWRlciB2YWxpZGF0ZWRcIjtcclxuICAgIHJlcU9ialsnaGVhZGVyX3JvdyddID0gdGhpcy5hbGxjb2xzO1xyXG4gICAgcmVxT2JqWydoZWFkZXJfYXR0cl9yb3cnXSA9IHRoaXMuY29sRm9ybWF0ZTtcclxuICAgIHRoaXMuaGVhZGVyW1wibWV0aG9kXCJdID0gJ2FkZEZpbGVMb2cnO1xyXG4gICAgbGV0IG9wdGlvbnMgPSB7XHJcbiAgICAgIG1ldGhvZDogdGhpcy5oZWFkZXJbXCJtZXRob2RcIl1cclxuICAgIH1cclxuICAgIHRoaXMuY3MubG9hZGlGaWxlKHJlcU9iaiwgb3B0aW9ucywgJ2ZpbGVVcGxvYWQvbG9hZCcpLnRoZW4oKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PSAnU1VDQ0VTUycpIHtcclxuICAgICAgICBkZWJ1Z2dlclxyXG4gICAgICAgIGxldCByZXN1bHQgPSByZXNwb25zZS5yZXN1bHQgfHwge307XHJcbiAgICAgICAgdGhpcy5maWxlTG9nSWRuID0gcmVzdWx0LmZpbGVfbG9nX2lkbjtcclxuICAgICAgICBjb25zb2xlLmxvZygnYWRkRmlsZUxvZycpXHJcbiAgICAgICAgdGhpcy5zZXRSb3dEYXRhTWFwcCgpO1xyXG4gICAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICAgIHRoaXMudG9hc3RyLnN1Y2Nlc3MoXCJIZWFkZXIgdmFsaWRhdGVkIHN1Y2Nlc3NmdWxseVwiKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgIH0sIGVycm9yID0+IHtcclxuICAgICAgdGhpcy50b2FzdHIuZXJyb3IoZXJyb3IpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBWYWxpZGF0ZUZpbGVIZWFkZXJNYXBwaW5nKGZvcm1hdFNhdmUpIHtcclxuICAgIHRoaXMuc3Bpbm5lclNlcnZpY2Uuc2hvdygpO1xyXG5cclxuICAgIHRoaXMuc2hvdyA9IHRydWU7XHJcbiAgICB0aGlzLnN0ZXBNc2cgPSAnSGVhZGVyIHZlcmlmaWNhdGlvbiBpbiBwcm9jZXNzIC4uLic7XHJcbiAgICB0aGlzLmNvbEZvcm1hdGUgPSBbXTtcclxuICAgIHRoaXMuaWdub3JlRm9ybWF0ZSA9IFtdO1xyXG4gICAgdGhpcy5hbGxjb2xzID0gW107XHJcbiAgICBsZXQgaXNWYWxpZGF0ZSA9IHRydWU7XHJcbiAgICB0aGlzLmhlYWRlckxpc3QuZm9yRWFjaChoZHIgPT4ge1xyXG4gICAgICBsZXQgaGRyRHRsID0gdGhpcy5oZWFkZXJBdHRyaWJ1dGVEdGxbaGRyXSB8fCAnJ1xyXG4gICAgICBpZiAoaGRyRHRsLmF0dHIgPT0gJycgJiYgaGRyRHRsLmlnbm9yZSAhPSAnWScpIHtcclxuICAgICAgICBpc1ZhbGlkYXRlID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGhkckR0bC5hdHRyICE9ICcnICYmIGhkckR0bC5pZ25vcmUgIT0gJ04nKSB7XHJcbiAgICAgICAgdGhpcy5jb2xGb3JtYXRlLnB1c2goaGRyRHRsLmF0dHIpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChoZHJEdGwuaWdub3JlID09ICdZJykge1xyXG4gICAgICAgIHRoaXMuaWdub3JlRm9ybWF0ZS5wdXNoKGhkcik7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5hbGxjb2xzLnB1c2goaGRyKTtcclxuICAgIH0pO1xyXG5cclxuICAgIGlmIChpc1ZhbGlkYXRlICYmICh0aGlzLmZpbGVUeXBlID09IG51bGwgfHwgdGhpcy5maWxlVHlwZSA9PSB1bmRlZmluZWQgfHwgdGhpcy5maWxlVHlwZSA9PSBcIlwiKSkge1xyXG4gICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuXHJcbiAgICAgIHRoaXMuc3RlcE1zZyA9IFwiXCI7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdidG5maWxlVXBsb2FkTW9kYWwnKS5jbGljaygpO1xyXG4gICAgICB0aGlzLnN0ZXAgPSAyO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9IGVsc2Uge1xyXG5cclxuICAgICAgaWYgKGlzVmFsaWRhdGUpIHtcclxuICAgICAgICBpZiAoZm9ybWF0U2F2ZSA9PSAnWScpIHtcclxuICAgICAgICAgIHRoaXMudXBkYXRlZmlsZU9wdGlvbigpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmFkZEZpbGVMb2codGhpcy5maWxlVHlwZSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IoXCJQbGVhc2Ugc3BlY2lmeSBtYXBwaW5nIG9yIG1hcmtlIGFzIGlnbm9yZSBcIik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMuc2hvdyA9IGZhbHNlO1xyXG5cclxuXHJcbiAgfVxyXG4gIGhkcklkbjtcclxuICB1cGRhdGVmaWxlT3B0aW9uKCkge1xyXG4gICAgbGV0IHJlcU9iaiA9IHt9O1xyXG4gICAgcmVxT2JqWydmb3JtTm1lJ10gPSAnZmlsZVVwbG9hZCc7XHJcbiAgICByZXFPYmpbJ2ZpbGVJZG4nXSA9IHRoaXMuZmlsZVR5cGU7XHJcbiAgICByZXFPYmpbJ2NvbHVtbl9mb3JtYXQnXSA9IHRoaXMuY29sRm9ybWF0ZTtcclxuICAgIHJlcU9ialsnaWdub3JlX2NvbHVtbiddID0gdGhpcy5pZ25vcmVGb3JtYXRlO1xyXG5cclxuICAgIHRoaXMuaGVhZGVyW1wibWV0aG9kXCJdID0gJ3VwZGF0ZUNvbHVtbkZvcm1hdCc7XHJcbiAgICBsZXQgb3B0aW9ucyA9IHtcclxuICAgICAgbWV0aG9kOiB0aGlzLmhlYWRlcltcIm1ldGhvZFwiXVxyXG4gICAgfVxyXG4gICAgY29uc29sZS5sb2coSlNPTi5zdHJpbmdpZnkocmVxT2JqKSk7XHJcbiAgICB0aGlzLmNzLmxvYWRpRmlsZShyZXFPYmosIG9wdGlvbnMsICdmaWxlVXBsb2FkL2xvYWQnKS50aGVuKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT0gJ1NVQ0NFU1MnKSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ3VwZGF0ZWZpbGVPcHRpb24nKVxyXG4gICAgICB9XHJcbiAgICB9LCBlcnJvciA9PiB7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHVwbG9hZEZpbGUoKSB7XHJcbiAgICB0aGlzLmRhdGVGb3JtYXQgPSB0aGlzLmRhdGVGb3JtYXQgfHwgJ2RkL21tL3l5JztcclxuICAgIHRoaXMuZGVsaW0gPSB0aGlzLmRlbGltIHx8ICcvJztcclxuICAgIHRoaXMuc2hvdyA9IHRydWU7XHJcbiAgICBsZXQgZGF0ZVZhbGlkID0gdHJ1ZTtcclxuICAgIGxldCBtYXNzYWdlID0gXCJcIjtcclxuXHJcbiAgICBpZiAoIXRoaXMubWFwcGluZ3NraXApIHtcclxuICAgICAgdGhpcy5zdGVwTXNnID0gXCJEYXRhIHZlcmlmaWNhdGlvbiBpbiBwcm9jZXNzIC4uLlwiO1xyXG4gICAgICB0aGlzLmhlYWRlckxpc3QuZm9yRWFjaChoZHIgPT4ge1xyXG4gICAgICAgIGRlYnVnZ2VyXHJcbiAgICAgICAgbGV0IGF0dHIgPSB0aGlzLmhlYWRlckF0dHJpYnV0ZUR0bFtoZHJdLmF0dHIgfHwgJyc7XHJcbiAgICAgICAgbGV0IGF0dHJUeXBlID0gdGhpcy5oZWFkZXJBdHRyaWJ1dGVEdGxbaGRyXS5kdGFfdHlwIHx8ICcnO1xyXG4gICAgICAgIGxldCBpc0lnbm9yZSA9IHRoaXMuaGVhZGVyQXR0cmlidXRlRHRsW2hkcl0uaWdub3JlIHx8ICcnO1xyXG4gICAgICAgIGlmIChpc0lnbm9yZSA9PSAnWScpIHtcclxuICAgICAgICAgIHRoaXMubWFwcFNoZWV0RGF0YS5tYXAoKHJvd0RhdGEsIGkpID0+IHtcclxuICAgICAgICAgICAgZGVsZXRlIHRoaXMubWFwcFNoZWV0RGF0YVtpXVtoZHJdO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGlmIChhdHRyVHlwZSA9PSAnYycpIHtcclxuICAgICAgICAgICAgdGhpcy5tYXBwU2hlZXREYXRhLm1hcCgocm93RGF0YSwgaSkgPT4ge1xyXG4gICAgICAgICAgICAgIGlmICh0aGlzLmNoYXJIZWFkZXJMaXN0LmluZGV4T2YoaGRyKSAhPSAtMSkge1xyXG4gICAgICAgICAgICAgICAgbGV0IGF0dHJkdGxWYWwgPSByb3dEYXRhW2hkcl0gfHwgJyc7XHJcbiAgICAgICAgICAgICAgICBpZiAoYXR0cmR0bFZhbCAhPSAnJykge1xyXG5cclxuICAgICAgICAgICAgICAgICAgbGV0IGF0dHJEdGxNYXBWYWwgPSB0aGlzLnJvd2RhdGFtYXBEZXRhaWxzW2F0dHJdW2F0dHJkdGxWYWxdLnNydDtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5tYXBwU2hlZXREYXRhW2ldW2F0dHJdID0gYXR0ckR0bE1hcFZhbC50b1N0cmluZygpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKGF0dHIgIT0gaGRyKVxyXG4gICAgICAgICAgICAgICAgICBkZWxldGUgdGhpcy5tYXBwU2hlZXREYXRhW2ldW2hkcl1cclxuICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICB9IGVsc2UgaWYgKGF0dHJUeXBlID09ICduJykge1xyXG4gICAgICAgICAgICB0aGlzLm1hcHBTaGVldERhdGEubWFwKChyb3dEYXRhLCBpKSA9PiB7XHJcbiAgICAgICAgICAgICAgbGV0IGF0dHJkdGxWYWwgPSByb3dEYXRhW2hkcl0gfHwgJyc7XHJcbiAgICAgICAgICAgICAgaWYgKGF0dHJkdGxWYWwgIT0gJycgJiYgYXR0cmR0bFZhbCkge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ2F0dHJkdGxWYWwnLGF0dHJkdGxWYWwpXHJcbiAgICAgICAgICAgICAgICAvLyBhdHRyZHRsVmFsID0gYXR0cmR0bFZhbC5yZXBsYWNlKC9bXjAtOS4tXS9nLCBcIlwiKTtcclxuICAgICAgICAgICAgICAgIGF0dHJkdGxWYWwgPSBwYXJzZUZsb2F0KGF0dHJkdGxWYWwudG9TdHJpbmcoKS5yZXBsYWNlKC9bXjAtOS4tXS9nLCBcIlwiKSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm1hcHBTaGVldERhdGFbaV1bYXR0cl0gPSBhdHRyZHRsVmFsLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGlmIChhdHRyICE9IGhkcilcclxuICAgICAgICAgICAgICAgIGRlbGV0ZSB0aGlzLm1hcHBTaGVldERhdGFbaV1baGRyXVxyXG5cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKGF0dHJUeXBlID09ICdkJykge1xyXG5cclxuICAgICAgICAgICAgdGhpcy5tYXBwU2hlZXREYXRhLm1hcCgocm93RGF0YSwgaSkgPT4ge1xyXG4gICAgICAgICAgICAgIGRlYnVnZ2VyXHJcbiAgICAgICAgICAgICAgbGV0IGF0dHJkdGxWYWwgPSByb3dEYXRhW2hkcl0gfHwgJyc7XHJcbiAgICAgICAgICAgICAgbGV0IGR0RnJtID0gdGhpcy5kYXRlRm9ybWF0TWFwW2hkcl0gfHwgJ2RkL21tL3l5JztcclxuICAgICAgICAgICAgICBpZiAoYXR0cmR0bFZhbCAhPSAnJylcclxuICAgICAgICAgICAgICAgIGF0dHJkdGxWYWwgPSB0aGlzLmNzLmRhdGVWYWxpZGF0aW9uKGF0dHJkdGxWYWwsIGR0RnJtKTtcclxuICAgICAgICAgICAgICBpZiAoYXR0cmR0bFZhbCA9PSAnaW52YWlsZCcpIHtcclxuICAgICAgICAgICAgICAgIGRhdGVWYWxpZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgbWFzc2FnZSA9IFwiUGxlYXNlIGNoZWNrIERhdGUgOlwiICsgcm93RGF0YVtoZHJdICsgXCIgRGF0ZSBGb3JtYXQgOlwiICsgZHRGcm07XHJcbiAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICB0aGlzLm1hcHBTaGVldERhdGFbaV1bYXR0cl0gPSBhdHRyZHRsVmFsLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgICAgICAgaWYgKGF0dHIgIT0gaGRyKVxyXG4gICAgICAgICAgICAgICAgZGVsZXRlIHRoaXMubWFwcFNoZWV0RGF0YVtpXVtoZHJdXHJcblxyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICB9IGVsc2UgaWYgKGF0dHJUeXBlID09ICd0Jykge1xyXG4gICAgICAgICAgICB0aGlzLm1hcHBTaGVldERhdGEubWFwKChyb3dEYXRhLCBpKSA9PiB7XHJcbiAgICAgICAgICAgICAgbGV0IGF0dHJkdGxWYWwgPSByb3dEYXRhW2hkcl0gfHwgJyc7XHJcblxyXG4gICAgICAgICAgICAgIHRoaXMubWFwcFNoZWV0RGF0YVtpXVthdHRyXSA9IGF0dHJkdGxWYWwudG9TdHJpbmcoKTtcclxuICAgICAgICAgICAgICBpZiAoYXR0ciAhPSBoZHIpXHJcbiAgICAgICAgICAgICAgICBkZWxldGUgdGhpcy5tYXBwU2hlZXREYXRhW2ldW2hkcl1cclxuXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBpZiAoZGF0ZVZhbGlkKSB7XHJcbiAgICAgIGxldCByZXFPYmogPSB7fTtcclxuICAgICAgcmVxT2JqWydmb3JtTm1lJ10gPSAnZmlsZVVwbG9hZCc7Ly90aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtc1snZnJtbmFtZSddO1xyXG4gICAgICByZXFPYmpbJ2ZpbGVfbG9nX2lkbiddID0gdGhpcy5maWxlTG9nSWRuO1xyXG4gICAgICByZXFPYmpbJ2F0dHJfZGF0YSddID0gdGhpcy5tYXBwU2hlZXREYXRhO1xyXG4gICAgICByZXFPYmpbJ2luX2RhdGEnXSA9IHRoaXMuc2hlZXREYXRhO1xyXG4gICAgICByZXFPYmpbJ2RhdGVmb3JtYXQnXSA9IHRoaXMuZGF0ZUZvcm1hdE1hcDtcclxuICAgICAgdGhpcy5oZWFkZXJbXCJtZXRob2RcIl0gPSAnZmlsZVVwbG9hZCc7XHJcbiAgICAgIGxldCB1cmwgPSBcImZpbGVVcGxvYWQvbG9hZFwiO1xyXG4gICAgICBpZiAodGhpcy5tZGwgPT0gJ2lud2FyZCcpIHtcclxuICAgICAgICB1cmwgPSAnaW53YXJkL2xvYWRGaWxlJztcclxuICAgICAgICByZXFPYmpbJ2lud2FyZF9pZG4nXSA9IHRoaXMuaW53YXJkX2lkbjtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gY29uc29sZS5sb2cocmVxT2JqKTtcclxuICAgICAgY29uc29sZS5sb2coSlNPTi5zdHJpbmdpZnkocmVxT2JqKSk7XHJcbiAgICAgIC8vIGNvbnNvbGUubG9nKHRoaXMuaGVhZGVyKTtcclxuICAgICAgbGV0IG9wdGlvbnMgPSB7XHJcbiAgICAgICAgbWV0aG9kOiB0aGlzLmhlYWRlcltcIm1ldGhvZFwiXVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuY3MubG9hZGlGaWxlKHJlcU9iaiwgb3B0aW9ucywgdXJsKS50aGVuKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PSAnU1VDQ0VTUycpIHtcclxuICAgICAgICAgIGxldCByZXN1bHQgPSByZXNwb25zZS5yZXN1bHQgfHwge307XHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhyZXN1bHQpO1xyXG4gICAgICAgICAgdGhpcy5zaG93ID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnN0ZXAgPSA0O1xyXG4gICAgICAgICAgdGhpcy5maWxlTG9nSWRuID0gcmVzdWx0LmZpbGVfbG9nX2lkbjtcclxuICAgICAgICAgIHRoaXMuaGRySWRuID0gcmVzdWx0LmhkcklkbjtcclxuICAgICAgICAgIHRoaXMuZ2V0UHJvZ3Jlc3NGaWxlKHRoaXMuZmlsZUxvZ0lkbik7XHJcbiAgICAgICAgICB0aGlzLmxhYmxlRmlsZSA9IFwiRmlsZSBTZXF1ZW5jZSBOby4gXCIgKyB0aGlzLmZpbGVMb2dJZG4gKyBcIiBVcGxvYWRpbmcgaW4gcHJvZ3Jlc3MuLi5cIjtcclxuICAgICAgICAgIC8vIHNldCBmaWxlIGlkIHRvIGxvY2FsIHN0b3JhZ2VcclxuICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCd1cGxvYWRlZEZpbGVJZCcsIHJlc3VsdC5maWxlX2xvZ19pZG4pO1xyXG5cclxuICAgICAgICAgIHRoaXMubGFibGUgPSBcIlByaWNpbmcgU2VxdWVuY2UgTm8uIFwiICsgdGhpcy5oZHJJZG4gKyBcIiBQcmljZSBjYWxjdWxhdGlvbnMgaW4gcHJvZ3Jlc3MuLi5cIjtcclxuXHJcbiAgICAgICAgICB0aGlzLmdldFByb2dyZXNzUHJpY2UodGhpcy5oZHJJZG4pO1xyXG5cclxuICAgICAgICAgIHRoaXMudG9hc3RyLnN1Y2Nlc3MocmVzcG9uc2UubWVzc2FnZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuc2hvdyA9IGZhbHNlO1xyXG5cclxuICAgICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgfSwgZXJyb3IgPT4ge1xyXG4gICAgICAgIHRoaXMuc2hvdyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMudG9hc3RyLmVycm9yKGVycm9yKTtcclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLm5nT25Jbml0KCk7XHJcbiAgICAgIHRoaXMudG9hc3RyLmVycm9yKG1hc3NhZ2UpO1xyXG4gICAgfVxyXG4gICAgY29uc29sZS5sb2coXCJtYXBwU2hlZXREYXRhXCIsIEpTT04uc3RyaW5naWZ5KHRoaXMubWFwcFNoZWV0RGF0YSkpO1xyXG4gICAgY29uc29sZS5sb2coXCJ0aGlzLnNoZWV0RGF0YVwiLCBKU09OLnN0cmluZ2lmeSh0aGlzLnNoZWV0RGF0YSkpO1xyXG4gIH1cclxuXHJcbiAgY2hhbmdlTWFwcGluZyhoZHJPYmosIGhkciwgYXR0cikge1xyXG4gICAgdGhpcy5oZWFkZXJBdHRyaWJ1dGVEdGxbaGRyXS5pZ25vcmUgPSAnWSc7XHJcbiAgICB0aGlzLmhlYWRlckF0dHJpYnV0ZUR0bFtoZHJdLmF0dHIgPSAnJztcclxuICAgIHRoaXMucmVtb3ZlQXR0ck9wdFZhbChhdHRyLCBoZHIpO1xyXG4gIH1cclxuXHJcblxyXG4gIHJlbW92ZUF0dHJPcHRWYWwoYXR0ciwgb3B0aW9uYVZhbCkge1xyXG4gICAgbGV0IHJlcU9iaiA9IHt9O1xyXG4gICAgcmVxT2JqWydmb3JtTm1lJ10gPSAnZmlsZVVwbG9hZCc7XHJcbiAgICByZXFPYmpbJ2F0dHInXSA9IGF0dHI7XHJcbiAgICByZXFPYmpbJ29wdGlvbmFWYWwnXSA9IG9wdGlvbmFWYWw7XHJcbiAgICBjb25zb2xlLmxvZyhKU09OLnN0cmluZ2lmeShyZXFPYmopKTtcclxuICAgIHRoaXMuaGVhZGVyW1wibWV0aG9kXCJdID0gJ3JlbW92ZUF0dHJPcHRWYWwnO1xyXG4gICAgbGV0IG9wdGlvbnMgPSB7XHJcbiAgICAgIG1ldGhvZDogdGhpcy5oZWFkZXJbXCJtZXRob2RcIl0gXHJcbiAgICB9XHJcbiAgICB0aGlzLmNzLmxvYWRpRmlsZShyZXFPYmosIG9wdGlvbnMsICdmaWxlVXBsb2FkL2xvYWQnKS50aGVuKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT0gJ1NVQ0NFU1MnKSB7XHJcbiAgICAgICAgdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICAgICAgdGhpcy50b2FzdHIuc3VjY2VzcyhyZXNwb25zZS5tZXNzYWdlKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgIH0sIGVycm9yID0+IHtcclxuICAgICAgdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICAgIHRoaXMudG9hc3RyLmVycm9yKGVycm9yKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcblxyXG4gIHJlbW92ZURldGFpbEF0dHJPcHRWYWwoYXR0cklkbiwgb3B0aW9uYVZhbCwgdmFsLCBoZHJBdHRyKSB7XHJcbiAgICB0aGlzLnJvd2RhdGFtYXBEZXRhaWxzW2hkckF0dHJdW29wdGlvbmFWYWxdLnZhbCA9ICcnO1xyXG4gICAgbGV0IHJlcU9iaiA9IHt9O1xyXG4gICAgcmVxT2JqWydmb3JtTm1lJ10gPSAnZmlsZVVwbG9hZCc7XHJcbiAgICByZXFPYmpbJ2F0dHJWYWwnXSA9IHZhbDtcclxuICAgIHJlcU9ialsnb3B0aW9uYVZhbCddID0gb3B0aW9uYVZhbDtcclxuICAgIHJlcU9ialsnYXR0cl9pZG4nXSA9IGF0dHJJZG47XHJcbiAgICBjb25zb2xlLmxvZyhKU09OLnN0cmluZ2lmeShyZXFPYmopKTtcclxuICAgIHRoaXMuaGVhZGVyW1wibWV0aG9kXCJdID0gJ3JlbW92ZUF0dHJPcHRWYWwnO1xyXG4gICAgbGV0IG9wdGlvbnMgPSB7XHJcbiAgICAgIG1ldGhvZDogdGhpcy5oZWFkZXJbXCJtZXRob2RcIl0gXHJcbiAgICB9IFxyXG4gICAgdGhpcy5jcy5sb2FkaUZpbGUocmVxT2JqLCBvcHRpb25zLCAnZmlsZVVwbG9hZC9sb2FkJykudGhlbigocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09ICdTVUNDRVNTJykge1xyXG4gICAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICAgIHRoaXMudG9hc3RyLnN1Y2Nlc3MocmVzcG9uc2UubWVzc2FnZSk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICB9LCBlcnJvciA9PiB7XHJcbiAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICB0aGlzLnRvYXN0ci5lcnJvcihlcnJvcik7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG4gIHN0dHNGaWxlID0ge31cclxuICBnZXRQcm9ncmVzc0ZpbGUoZmlsZUxvZ0lkbikge1xyXG4gICAgbGV0IHJlcU9iaiA9IHt9O1xyXG4gICAgcmVxT2JqWydmb3JtTm1lJ10gPSAnZmlsZVVwbG9hZCc7XHJcbiAgICByZXFPYmpbJ2ZpbGVfbG9nX2lkbiddID0gZmlsZUxvZ0lkbjsvL3RoaXMuZmlsZUxvZ0lkbjtcclxuICAgIGNvbnNvbGUubG9nKEpTT04uc3RyaW5naWZ5KHJlcU9iaikpO1xyXG4gICAgdGhpcy5oZWFkZXJbXCJtZXRob2RcIl0gPSAnZ2V0RmlsZUxvZ1N0YXR1cyc7XHJcbiAgICBsZXQgb3B0aW9ucyA9IHtcclxuICAgICAgbWV0aG9kOiB0aGlzLmhlYWRlcltcIm1ldGhvZFwiXSBcclxuICAgIH1cclxuICAgIHRoaXMuY3MubG9hZGlGaWxlKHJlcU9iaiwgb3B0aW9ucywgJ2ZpbGVVcGxvYWQvbG9hZCcpLnRoZW4oKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PSAnU1VDQ0VTUycpIHtcclxuICAgICAgICB0aGlzLmNsaWNrZWQgPSB0cnVlO1xyXG4gICAgICAgIGxldCByZXN1bHQgPSByZXNwb25zZS5yZXN1bHQgfHwge307XHJcbiAgICAgICAgY29uc29sZS5sb2cocmVzdWx0KTtcclxuICAgICAgICB0aGlzLnN0dHNGaWxlWydDJ10gPSByZXN1bHRbJ0MnXTtcclxuICAgICAgICB0aGlzLnN0dHNGaWxlWydQJ10gPSByZXN1bHRbJ1AnXTtcclxuICAgICAgICB0aGlzLnN0dHNGaWxlWydFJ10gPSByZXN1bHRbJ0UnXTtcclxuICAgICAgICB0aGlzLnN0dHNGaWxlWydUJ10gPSByZXN1bHRbJ1QnXTtcclxuICAgICAgICB0aGlzLnN0dHNGaWxlWydJJ10gPSByZXN1bHRbJ0knXTtcclxuICAgICAgICB0aGlzLnN0ZXAgPSA0O1xyXG4gICAgICAgIHRoaXMudG90UHJvZ3Jlc3NGaWxlID0gTWF0aC5jZWlsKHBhcnNlRmxvYXQocmVzdWx0WydDJ10pICogMTAwIC8gcGFyc2VGbG9hdChyZXN1bHRbJ1QnXSkpO1xyXG4gICAgICAgIHRoaXMucmVjYWxsRmlsZShmaWxlTG9nSWRuKTtcclxuICAgICAgICBjb25zb2xlLmxvZyh0aGlzLnRvdFByb2dyZXNzKTtcclxuICAgICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgICAvLyB0aGlzLmZsYXNoTWVzc2FnZXNTZXJ2aWNlLnNob3cocmVzcG9uc2UubWVzc2FnZSwgeyBjc3NDbGFzczogJ2FsZXJ0LXN1Y2Nlc3MnLCB0aW1lb3V0OiAzMDAwIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgfSwgZXJyb3IgPT4ge1xyXG4gICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgdGhpcy50b2FzdHIuZXJyb3IoZXJyb3IpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG4gIC8vIGNoZWNrVXBsb2FkU3R0KCkge1xyXG4gIC8vICAgdGhpcy5zcGlubmVyU2VydmljZS5zaG93KCk7XHJcbiAgLy8gICBsZXQgcmVxT2JqID0ge307XHJcbiAgLy8gICByZXFPYmpbJ2Zvcm1ObWUnXSA9IHRoaXMucm91dGUuc25hcHNob3QucGFyYW1zWydmcm1uYW1lJ107XHJcbiAgLy8gICByZXFPYmpbJ2ZpbGVfbG9nX2lkbiddID0gdGhpcy5maWxlTG9nSWRuO1xyXG4gIC8vICAgY29uc29sZS5sb2coSlNPTi5zdHJpbmdpZnkocmVxT2JqKSk7XHJcbiAgLy8gICB0aGlzLnVzLmRhdGEocmVxT2JqLCAnZ2V0RmlsZUxvZ1N0YXR1cycsICdmaWxlVXBsb2FkL2xvYWQnKS5zdWJzY3JpYmUocmVzcG9uc2UgPT4ge1xyXG4gIC8vICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09ICdTVUNDRVNTJykge1xyXG4gIC8vICAgICAgIHRoaXMuY2xpY2tlZCA9IHRydWU7XHJcbiAgLy8gICAgICAgbGV0IHJlc3VsdCA9IHJlc3BvbnNlLnJlc3VsdCB8fCB7fTtcclxuICAvLyAgICAgICBjb25zb2xlLmxvZyhyZXN1bHQpO1xyXG4gIC8vICAgICAgIHRoaXMuc3R0c1snQyddID0gcmVzdWx0WydDJ107XHJcbiAgLy8gICAgICAgdGhpcy5zdHRzWydQJ10gPSByZXN1bHRbJ1AnXTtcclxuICAvLyAgICAgICB0aGlzLnN0dHNbJ0UnXSA9IHJlc3VsdFsnRSddO1xyXG4gIC8vICAgICAgIHRoaXMuc3R0c1snVCddID0gcmVzdWx0WydUJ107XHJcbiAgLy8gICAgICAgdGhpcy5zdGVwID0gNDtcclxuICAvLyAgICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAvLyAgICAgICB0aGlzLmZsYXNoTWVzc2FnZXNTZXJ2aWNlLnNob3cocmVzcG9uc2UubWVzc2FnZSwgeyBjc3NDbGFzczogJ2FsZXJ0LXN1Y2Nlc3MnLCB0aW1lb3V0OiAzMDAwIH0pO1xyXG4gIC8vICAgICB9XHJcbiAgLy8gICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gIC8vICAgfSwgZXJyb3IgPT4ge1xyXG4gIC8vICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAvLyAgICAgdGhpcy5mbGFzaE1lc3NhZ2VzU2VydmljZS5zaG93KGVycm9yLCB7IGNzc0NsYXNzOiAnYWxlcnQtZGFuZ2VyJywgdGltZW91dDogMzAwMCB9KTtcclxuICAvLyAgIH0pO1xyXG5cclxuICAvLyB9XHJcblxyXG4gIHN0dHMgPSB7fTtcclxuICBjbGlja2VkID0gZmFsc2U7XHJcbiAgdG90UHJvZ3Jlc3MgPSAwO1xyXG4gIHRvdFByb2dyZXNzRmlsZSA9IDA7XHJcbiAgZ2V0UHJvZ3Jlc3NQcmljZShoZHJJZG4pIHtcclxuICAgIC8vIHRoaXMuc3Bpbm5lclNlcnZpY2Uuc2hvdygpO1xyXG4gICAgbGV0IHJlcU9iaiA9IHt9O1xyXG4gICAgcmVxT2JqWydmb3JtTm1lJ10gPSAnZmlsZVVwbG9hZCc7XHJcbiAgICByZXFPYmpbJ3NlcU5vJ10gPSBoZHJJZG47Ly9cIjg0NlwiOy8vdGhpcy5maWxlTG9nSWRuO1xyXG4gICAgY29uc29sZS5sb2coSlNPTi5zdHJpbmdpZnkocmVxT2JqKSk7XHJcbiAgICB0aGlzLmhlYWRlcltcIm1ldGhvZFwiXSA9ICdnZXRQcmljZVN0YXR1cyc7XHJcbiAgICBsZXQgb3B0aW9ucyA9IHtcclxuICAgICAgbWV0aG9kOiB0aGlzLmhlYWRlcltcIm1ldGhvZFwiXSBcclxuICAgIH1cclxuICAgIHRoaXMuY3MubG9hZGlGaWxlKHJlcU9iaiwgb3B0aW9ucywgJ2ZpbGVVcGxvYWQvbG9hZCcpLnRoZW4oKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PSAnU1VDQ0VTUycpIHtcclxuICAgICAgICB0aGlzLmNsaWNrZWQgPSB0cnVlO1xyXG4gICAgICAgIGxldCByZXN1bHQgPSByZXNwb25zZS5yZXN1bHQgfHwge307XHJcbiAgICAgICAgY29uc29sZS5sb2cocmVzdWx0KTtcclxuICAgICAgICB0aGlzLnN0dHNbJ0MnXSA9IHJlc3VsdFsnQyddO1xyXG4gICAgICAgIHRoaXMuc3R0c1snUCddID0gcmVzdWx0WydQJ107XHJcbiAgICAgICAgdGhpcy5zdHRzWydFJ10gPSByZXN1bHRbJ0UnXTtcclxuICAgICAgICB0aGlzLnN0dHNbJ1QnXSA9IHJlc3VsdFsnVCddO1xyXG4gICAgICAgIHRoaXMuc3RlcCA9IDQ7XHJcbiAgICAgICAgdGhpcy50b3RQcm9ncmVzcyA9IE1hdGguY2VpbChwYXJzZUZsb2F0KHJlc3VsdFsnQyddKSAqIDEwMCAvIHBhcnNlRmxvYXQocmVzdWx0WydUJ10pKTtcclxuICAgICAgICB0aGlzLnJlY2FsbCh0aGlzLmhkcklkbik7XHJcbiAgICAgICAgY29uc29sZS5sb2codGhpcy50b3RQcm9ncmVzcyk7XHJcbiAgICAgICAgdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICAgICAgLy8gdGhpcy5mbGFzaE1lc3NhZ2VzU2VydmljZS5zaG93KHJlc3BvbnNlLm1lc3NhZ2UsIHsgY3NzQ2xhc3M6ICdhbGVydC1zdWNjZXNzJywgdGltZW91dDogMzAwMCB9KTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgIH0sIGVycm9yID0+IHtcclxuICAgICAgdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICAgIHRoaXMudG9hc3RyLmVycm9yKGVycm9yKTtcclxuICAgIH0pO1xyXG5cclxuICB9XHJcbiAgbGFzdFJlZnJlc2hUaW1lRmlsZSA9IG51bGw7XHJcbiAgcmVjYWxsRmlsZShmaWxlTG9nSWRuKSB7XHJcblxyXG4gICAgaWYgKHRoaXMudG90UHJvZ3Jlc3NGaWxlIDwgMTAwKSB7XHJcbiAgICAgIHRoaXMubGFzdFJlZnJlc2hUaW1lRmlsZSA9IG5ldyBEYXRlKCk7XHJcbiAgICAgIHRoaXMudGltZXJmaWxlID1cclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgIHRoaXMuZ2V0UHJvZ3Jlc3NGaWxlKGZpbGVMb2dJZG4pO1xyXG4gICAgICAgIH0sIDUwMDApO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLnRpbWVyZmlsZSk7XHJcbiAgICAgIC8vIHRoaXMuUGxhbm5pbmdDb21wb25lbnQuZ2V0UGFja2V0c0J5SGVhZGVySWQoaGRySWRuKTtcclxuICAgICAgLy8gdGhpcy5jbG9zZWJ0bi5uYXRpdmVFbGVtZW50LmNsaWNrKCk7XHJcbiAgICAgIGlmICh0aGlzLnRvdFByb2dyZXNzRmlsZSA9PSAxMDAgJiYgdGhpcy50b3RQcm9ncmVzcyA9PSAxMDApIHtcclxuICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYnRuZmlsZVVwbG9hZE1vZGFsJykuY2xpY2soKTtcclxuXHJcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvcHJpY2luZy9yb3VnaC9wbGFuaW5nc2NyZWVuL3JvdWdoUGxhbmluZ1NjcmVlbiddLCB7IHF1ZXJ5UGFyYW1zOiB7IGhkcklkOiB0aGlzLmhkcklkbiB9IH0pO1xyXG4gICAgICB9XHJcblxyXG4gICAgfVxyXG4gIH1cclxuICBsYXN0UmVmcmVzaFRpbWUgPSBudWxsO1xyXG4gIHJlY2FsbChoZHJJZG4pIHtcclxuICAgIGlmICh0aGlzLnRvdFByb2dyZXNzIDwgMTAwKSB7XHJcbiAgICAgIHRoaXMubGFzdFJlZnJlc2hUaW1lID0gbmV3IERhdGUoKTtcclxuICAgICAgdGhpcy50aW1lclByaWNlID1cclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgIHRoaXMuZ2V0UHJvZ3Jlc3NQcmljZShoZHJJZG4pO1xyXG4gICAgICAgIH0sIDUwMDApO1xyXG4gICAgfVxyXG5cclxuICAgIGVsc2Uge1xyXG4gICAgICBjbGVhclRpbWVvdXQodGhpcy50aW1lclByaWNlKTtcclxuICAgICAgaWYgKHRoaXMudG90UHJvZ3Jlc3NGaWxlID09IDEwMCAmJiB0aGlzLnRvdFByb2dyZXNzID09IDEwMCkge1xyXG4gICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdidG5maWxlVXBsb2FkTW9kYWwnKS5jbGljaygpO1xyXG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL3ByaWNpbmcvcm91Z2gvcGxhbmluZ3NjcmVlbi9yb3VnaFBsYW5pbmdTY3JlZW4nXSwgeyBxdWVyeVBhcmFtczogeyBoZHJJZDogdGhpcy5oZHJJZG4gfSB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICBTa2lwVmVyaWZpY2F0aW9uKCkge1xyXG4gICAgZGVidWdnZXJcclxuICAgIHRoaXMubWFwcGluZ3NraXAgPSB0cnVlO1xyXG4gICAgdGhpcy5hZGRGaWxlTG9nKHRoaXMuZmlsZVR5cGUpO1xyXG5cclxuICB9XHJcbiAgU2tpcFZlcmlmaWNhdGlvbkR0bCgpIHtcclxuICAgIHRoaXMubWFwcGluZ3NraXAgPSB0cnVlO1xyXG4gICAgdGhpcy5zdGVwID0gNDtcclxuICAgIHRoaXMudXBsb2FkRmlsZSgpO1xyXG4gIH1cclxuXHJcbiAgbG9hZEZpbGVUeXBlRGF0YShmaWxlVXBsb2FkLCBtZGwpIHtcclxuICAgIHRoaXMuc2hlZXREYXRhID0gW107XHJcbiAgICB0aGlzLmhlYWRlckF0dHJpYnV0ZUR0bCA9IHt9O1xyXG4gICAgdGhpcy5kZWZ1bHREaXNwbGF5TGVuID0gNTtcclxuICAgIHRoaXMuZGVmdWx0RGlzcGxheU9iaiA9IFtdO1xyXG4gICAgdGhpcy5hdHRyU3RydWN0dXJlRHRsID0gW107XHJcbiAgICB0aGlzLmhlYWRlckxpc3QgPSBbXTtcclxuICAgIHRoaXMuaGVhZGVycHJwO1xyXG4gICAgdGhpcy5hdHRycHJwO1xyXG4gICAgdGhpcy50b3RhbG1hdGNoID0gMDtcclxuICAgIHRoaXMudG90YWxpZ25vcmUgPSAwO1xyXG4gICAgdGhpcy5wYWdlRGVmaW5hdGlvbiA9IHt9O1xyXG4gICAgdGhpcy5yb3dkYXRhbWFwRGV0YWlscyA9IHt9O1xyXG4gICAgdGhpcy5yb3dkaXN0aW5jdERhdGFNYXAgPSB7fTtcclxuICAgIHRoaXMuY2hhckhlYWRlckxpc3QgPSBbXTtcclxuICAgIHRoaXMuYXR0cmlidXRlRHRsTWFwID0ge307XHJcbiAgICB0aGlzLm1hcHBTaGVldERhdGEgPSBbXTtcclxuICAgIHRoaXMuc3RhdHVzTGlzdCA9IFtdO1xyXG4gICAgdGhpcy5maWxlRGV0YWlscyA9IFtdO1xyXG4gICAgdGhpcy5maWxlVHlwZUxpc3QgPSBbXTtcclxuICAgIHRoaXMuZmlsZU9wdGlvbnNMaXN0ID0gW107XHJcbiAgICB0aGlzLmZpbGVUeXBlO1xyXG4gICAgdGhpcy5ubWU7XHJcbiAgICB0aGlzLnR5cDtcclxuICAgIHRoaXMuZGVzY3JpcHRpb247XHJcbiAgICB0aGlzLmNoZWNrX3N0YXR1cyA9IFtdO1xyXG4gICAgdGhpcy5wa3Rfc3RhdHVzID0gW107XHJcbiAgICB0aGlzLmNvbEZvcm1hdGUgPSBbXTtcclxuICAgIHRoaXMuYWxsY29scyA9IFtdO1xyXG4gICAgdGhpcy5maWxlTG9nSWRuID0gMDtcclxuICAgIHRoaXMuc2hvdyA9IGZhbHNlO1xyXG4gICAgdGhpcy5zdGVwTXNnID0gJyc7XHJcbiAgICB0aGlzLnN0dHMgPSB7fTtcclxuICAgIHRoaXMuY2xpY2tlZCA9IGZhbHNlO1xyXG4gICAgdGhpcy50b3RQcm9ncmVzcyA9IDA7XHJcbiAgICB0aGlzLnRvdFByb2dyZXNzRmlsZSA9IDA7XHJcbiAgICB0aGlzLnN0ZXAgPSAxO1xyXG4gICAgdGhpcy5sYWJsZSA9IFwiXCI7XHJcbiAgICB0aGlzLmZpbGVubWUgPSBcIlwiO1xyXG4gICAgbGV0IHJlcU9iaiA9IHt9O1xyXG4gICAgdGhpcy5kYXRlRm9ybWF0TWFwID0ge307XHJcbiAgICBsZXQgZmlsZXR5cGUgPSB0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtc1snZmlsZXR5cGUnXSB8fCAnJztcclxuICAgIHRoaXMubWRsID0gbWRsO1xyXG4gICAgdGhpcy5maWxlbm1lID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJhbXNbJ2ZpbGV0eXBlJ10gfHwgJyc7XHJcbiAgICB0aGlzLm1hcHBpbmdza2lwID0gZmFsc2U7XHJcbiAgICByZXFPYmpbJ2Zvcm1ObWUnXSA9IGZpbGVVcGxvYWQ7XHJcbiAgICBpZiAobWRsICE9ICcnKVxyXG4gICAgICByZXFPYmpbJ21kbCddID0gbWRsO1xyXG4gICAgaWYgKGZpbGV0eXBlICE9ICcnKVxyXG4gICAgICByZXFPYmpbJ2ZpbGVubWUnXSA9IGZpbGV0eXBlO1xyXG4gICAgY29uc29sZS5sb2coSlNPTi5zdHJpbmdpZnkodGhpcy5oZWFkZXIpKTtcclxuICAgIGNvbnNvbGUubG9nKEpTT04uc3RyaW5naWZ5KHJlcU9iaikpO1xyXG4gICAgdGhpcy5oZWFkZXJbXCJtZXRob2RcIl0gPSAnbG9hZEZpbGVVcGxvYWQnO1xyXG4gICAgbGV0IG9wdGlvbnMgPSB7XHJcbiAgICAgIG1ldGhvZDogdGhpcy5oZWFkZXJbXCJtZXRob2RcIl0gXHJcbiAgICB9XHJcbiAgICB0aGlzLmNzLmxvYWRpRmlsZShyZXFPYmosIG9wdGlvbnMsICdmaWxlVXBsb2FkL2xvYWQnKS50aGVuKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT0gJ1NVQ0NFU1MnKSB7XHJcbiAgICAgICAgY29uc29sZS5sb2cocmVzcG9uc2UpO1xyXG4gICAgICAgIGRlYnVnZ2VyO1xyXG4gICAgICAgIGxldCByZXN1bHQgPSByZXNwb25zZS5yZXN1bHQgfHwge307XHJcbiAgICAgICAgdGhpcy5wYWdlRGVmaW5hdGlvbiA9IHJlc3VsdC5wYWdlRGVmaW5hdGlvblxyXG4gICAgICAgIHRoaXMuc3RhdHVzTGlzdCA9IHJlc3VsdC5zdGF0dXNMaXN0O1xyXG4gICAgICAgIHRoaXMuZmlsZURldGFpbHMgPSByZXN1bHQuZmlsZURldGFpbHM7XHJcbiAgICAgICAgdGhpcy5maWxlVHlwZUxpc3QgPSByZXN1bHQuZmlsZVR5cGVMaXN0O1xyXG4gICAgICAgIHRoaXMuZmlsZU9wdGlvbnNMaXN0ID0gcmVzdWx0LmZpbGVPcHRpb25zTGlzdCB8fCBbXTtcclxuICAgICAgICBpZiAodGhpcy5maWxlT3B0aW9uc0xpc3QubGVuZ3RoID4gMClcclxuICAgICAgICAgIHRoaXMuZmlsZVR5cGUgPSB0aGlzLmZpbGVPcHRpb25zTGlzdFswXS5rO1xyXG4gICAgICAgIGxldCBhZGRsQXR0ciA9IHRoaXMuZmlsZU9wdGlvbnNMaXN0WzBdLmFkZGxfYXR0ciB8fCB7fTtcclxuICAgICAgICB0aGlzLmRhdGVGb3JtYXQgPSBhZGRsQXR0ci5kYXRlZm9ybWF0IHx8ICdkZC9tbS95eSc7XHJcbiAgICAgICAgdGhpcy5kZWxpbSA9IGFkZGxBdHRyLmRlbGltIHx8ICcvJztcclxuICAgICAgICB0aGlzLnN0YXR1c0xpc3QgPSByZXN1bHQuc3RhdHVzTGlzdC5tYXAob3B0aW9uID0+ICh7XHJcbiAgICAgICAgICB2YWx1ZTogb3B0aW9uLmssXHJcbiAgICAgICAgICBsYWJlbDogb3B0aW9uLnZcclxuICAgICAgICB9KSk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICB9LCBlcnJvciA9PiB7XHJcblxyXG4gICAgICB0aGlzLnRvYXN0ci5lcnJvcihlcnJvcik7XHJcbiAgICB9KTtcclxuXHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuXHJcblxyXG4gICAgbGV0IG1kbGsgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdtZGxLZXknKSk7XHJcbiAgICBsZXQgY1VybCA9IHRoaXMucm91dGVyLnVybDtcclxuICAgIHRoaXMuY0R0ID0gbmV3IERhdGUoKTtcclxuICAgIHRoaXMuaGVhZGVyID0ge1xyXG4gICAgICAnY2xpZW50a2V5JzogQ29va2llLmdldCgnX2NrJyksXHJcbiAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXHJcbiAgICAgICdsb2dpbmlkJzogQ29va2llLmdldCgnX2xvZ2lkJyksXHJcbiAgICAgICdtb2R1bGVrZXknOiBtZGxrW2NVcmwuc3BsaXQoJy8nKVsxXV0sXHJcbiAgICAgICdzb3VyY2UnOiAncXMnXHJcbiAgICB9O1xyXG5cclxuXHJcbiAgICB0aGlzLnJvdXRlLnBhcmFtcy5zdWJzY3JpYmUoKHBhcmFtczogUGFyYW1zKSA9PiB7XHJcbiAgICAgIGxldCBtZGwgPSB0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtc1snZ3JwJ10gfHwgJyc7XHJcblxyXG4gICAgICB0aGlzLmxvYWRGaWxlVHlwZURhdGEoJ2ZpbGVVcGxvYWQnLCBtZGwpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG4gIGlud2FyZF9pZG47XHJcbiAgaW53YXJkU3RvY2tUeXBlO1xyXG4gIHN0b2NrSW53YXJkVXBsb2FkKGlud2FyZER0bCwgbWRsKSB7XHJcbiAgICB0aGlzLmlud2FyZF9pZG4gPSBpbndhcmREdGwuaW53YXJkX2lkbjtcclxuICAgIHRoaXMuaW53YXJkU3RvY2tUeXBlID0gaW53YXJkRHRsLnN0b2NrX3R5cGU7XHJcbiAgICB0aGlzLm1kbCA9IG1kbDtcclxuICAgIHRoaXMubG9hZEZpbGVUeXBlRGF0YSgnZmlsZVVwbG9hZCcsIG1kbCk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIGlmICh0aGlzLnRpbWVyZmlsZSAhPSB1bmRlZmluZWQpXHJcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLnRpbWVyZmlsZSk7XHJcblxyXG4gICAgaWYgKHRoaXMudGltZXJQcmljZSAhPSB1bmRlZmluZWQpXHJcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLnRpbWVyUHJpY2UpO1xyXG5cclxuICB9XHJcblxyXG4gIHNldE9wdGlvbnNGb3JNaXhUb1NpbmdsZSgpIHtcclxuICAgIHRoaXMuZmlsZU9wdGlvbnNMaXN0ID0gW1xyXG4gICAgICB7IFwia1wiOiBcIjY5NlwiLCBcInZcIjogXCJNYXJrZXRpbmcgU3RvY2tcIiB9XHJcbiAgICBdO1xyXG4gICAgdGhpcy5maWxlVHlwZSA9IFwiNjk2XCI7XHJcbiAgfVxyXG5cclxuXHJcbn0iLCI8ZGl2IGNsYXNzPVwibXRcIiBzdHlsZT1cImJhY2tncm91bmQ6ICNmZmY7XCI+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cImNvbnRlbnQtZnJhbWVcIj5cclxuICAgICAgICA8cCAqbmdJZj1cInNob3dcIiBjbGFzcz1cImxvYWRpbmctdGV4dFwiIHN0eWxlPVwiei1pbmRleDogOTk5OVwiPiB7e3N0ZXBNc2d9fSA8L3A+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbm5lckRcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LWVsZW1lbnQtc3RlcFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBzdGVwLXRoaW5cIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0yIGJnLWdyZXkgbXQtc3RlcC1jb2xcIiBbbmdDbGFzc109XCJ7J2RvbmUnOnN0ZXA9PTEgPyAnZG9uZSc6Jyd9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1zZXRTZXRwKDEpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtc3RlcC1udW1iZXIgYmctd2hpdGUgZm9udC1ncmV5XCI+MTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtc3RlcC10aXRsZSB1cHBlcmNhc2UgZm9udC1ncmV5LWNhc2NhZGVcIj5Ccm93c2U8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTQgYmctZ3JleSBtdC1zdGVwLWNvbFwiIFtuZ0NsYXNzXT1cInsnZG9uZSc6c3RlcD09MiA/ICdkb25lJzonJ31cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPXNldFNldHAoMik+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC1zdGVwLW51bWJlciBiZy13aGl0ZSBmb250LWdyZXlcIj4yPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC1zdGVwLXRpdGxlIHVwcGVyY2FzZSBmb250LWdyZXktY2FzY2FkZVwiPkhlYWRlciBWZXJpZmljYXRpb248L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTMgYmctZ3JleSBtdC1zdGVwLWNvbFwiIFtuZ0NsYXNzXT1cInsnZG9uZSc6c3RlcD09MyA/ICdkb25lJzonJ31cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPXNldFNldHAoMyk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC1zdGVwLW51bWJlciBiZy13aGl0ZSBmb250LWdyZXlcIj4zPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC1zdGVwLXRpdGxlIHVwcGVyY2FzZSBmb250LWdyZXktY2FzY2FkZVwiPkRhdGEgVmVyaWZpY2F0aW9uPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMyBiZy1ncmV5IG10LXN0ZXAtY29sXCIgW25nQ2xhc3NdPVwieydkb25lJzpzdGVwPT00ID8gJ2RvbmUnOicnfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9c2V0U2V0cCg0KT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LXN0ZXAtbnVtYmVyIGJnLXdoaXRlIGZvbnQtZ3JleVwiPjQ8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LXN0ZXAtdGl0bGUgdXBwZXJjYXNlIGZvbnQtZ3JleS1jYXNjYWRlXCI+VXBsb2FkaW5nLi48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyB1cGxvYWRcIiAqbmdJZj1cInN0ZXA9PTFcIj5cclxuXHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtb2Zmc2V0LTMgY29sLW1kLTNcIiBzdHlsZT1cIm1hcmdpbi10b3A6IDE1cHg7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIHctMTAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjb2wtbWQtNCBjb250cm9sLWxhYmVsXCIgc3R5bGU9XCJwYWRkaW5nOiA1cHg7XCI+RmlsZSBUeXBlIDo8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC04XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwIHctMTAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBuYW1lPVwiZmlsZVR5cGVcIiBbKG5nTW9kZWwpXT1cImZpbGVUeXBlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiXCI+LS1zZWxlY3QtLTwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgZmlsZSBvZiBmaWxlT3B0aW9uc0xpc3RcIiB2YWx1ZT1cInt7ZmlsZT8ua319XCI+e3tmaWxlPy52fX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz1cImZpbGVpbnB1dC13cmFwcGVyIGJ0biBidG4tZGVmYXVsdCAgZmlsZWlucHV0IGJ0bi1wcmltYXJ5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwiYmFja2dyb3VuZDogIzNhNTg5OFwiPjxzcGFuPkJyb3dzZSBmaWxlPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJmaWxlXCIgY2xhc3M9XCJmaWxlaW5wdXQgYnRuLXByaW1hcnlcIiBuYW1lPVwiZmlsZW5hbWVcIiBpZD1cImZpbGVuYW1lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT1cIkJyb3dzZSBmaWxlXCIgYWNjZXB0PVwiLnhsc3gsLmNzdlwiIChjaGFuZ2UpPVwiaW5jb21pbmdmaWxlKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwibGVmdDogLTE2My43NXB4OyB0b3A6IDlweDtcIj48L2E+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tIDxsYWJlbCBjbGFzcz1cImNvbnRyb2wtbGFiZWxcIj5VcGxvYWQgRmlsZSA6ICZuYnNwOyZuYnNwOyZuYnNwOzwvbGFiZWw+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiZmlsZVwiIGNsYXNzPVwiZmlsZWlucHV0IGJ0bi1wcmltYXJ5XCIgYWNjZXB0PVwiLnhsc3gsLmNzdlwiIG5hbWU9XCJmaWxlbmFtZVwiIGlkPVwiZmlsZW5hbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cImluY29taW5nZmlsZSgkZXZlbnQpXCIgdGl0bGU9XCJCcm93c2UgZmlsZVwiPiAtLT5cclxuXHJcblxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyB1cGxvYWRcIiAqbmdJZj1cInN0ZXA9PTJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVG90YWwgTWF0Y2ggOiB7e3RvdGFsbWF0Y2h9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUb3RhbCBJZ25vcmUgOiB7e3RvdGFsaWdub3JlfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgY29sLW1kLTEyXCIgc3R5bGU9XCJvdmVyZmxvdzogYXV0bzt3aWR0aDogMTAwJTtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPVwiZmlsZXVwbG9hZHZpZXdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBoZHIgb2YgaGVhZGVyTGlzdCA7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBbbmdDbGFzc109XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbWF0Y2gnOmhlYWRlckF0dHJpYnV0ZUR0bFtoZHJdLmF0dHIhPScnICYmIGhlYWRlckF0dHJpYnV0ZUR0bFtoZHJdLmlnbm9yZSE9J1knLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2lnbm9yZSc6aGVhZGVyQXR0cmlidXRlRHRsW2hkcl0uaWdub3JlPT0nWScsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGhiZyc6aGVhZGVyQXR0cmlidXRlRHRsW2hkcl0uYXR0cj09JycgJiYgaGVhZGVyQXR0cmlidXRlRHRsW2hkcl0uaWdub3JlIT0nWSdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XCIgKGNsaWNrKT1cInVwZGF0ZWNvbHVtbnN0YXR1ZShoZHIpXCI+e3toZHJ9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBoZHIgb2YgaGVhZGVyTGlzdCA7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJoZWFkZXJBdHRyaWJ1dGVEdGxbaGRyXS5hdHRyPT0nJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPHNlbGVjdCBjbGFzcz1cInNlbGVjdC1jb250cm9sXCIgbmFtZT1cInt7aGVhZGVyQXR0cmlidXRlRHRsW2hkcl0uYXR0cn19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJoZWFkZXJBdHRyaWJ1dGVEdGxbaGRyXS5hdHRyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJjb25maXJtc2V0SGVhZGVyTWFwcChoZHIsJGV2ZW50LnRhcmdldClcIj4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgY2xhc3M9XCJzZWxlY3QtY29udHJvbFwiIG5hbWU9XCJ7e2hlYWRlckF0dHJpYnV0ZUR0bFtoZHJdLmF0dHJ9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiaGVhZGVyQXR0cmlidXRlRHRsW2hkcl0uYXR0clwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwiY29uZmlybXNldEhlYWRlck1hcHAoaGRyKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiXCI+LS1zZWxlY3QtLTwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBhdHRyRHRsIG9mIGF0dHJTdHJ1Y3R1cmVEdGxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9XCJ7e2F0dHJEdGw/LmF0dHJ9fVwiPnt7YXR0ckR0bD8uYXR0cn19PC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJoZWFkZXJBdHRyaWJ1dGVEdGxbaGRyXS5hdHRyIT0nJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7aGVhZGVyQXR0cmlidXRlRHRsW2hkcl0uYXR0cn19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaGRyIG9mIGhlYWRlckxpc3QgO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaGVhZGVyQXR0cmlidXRlRHRsW2hkcl0uZHRhX3R5cD09J2QnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdCBjbGFzcz1cInNlbGVjdC1jb250cm9sXCIgbmFtZT1cInt7ZGF0ZUZvcm1hdE1hcFtoZHJdfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImRhdGVGb3JtYXRNYXBbaGRyXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBkdGVGbXQgb2YgZGF0ZUZvcm1hdExpc3RcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9XCJ7e2R0ZUZtdD8ua319XCI+e3tkdGVGbXQ/LnZ9fTwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHIgKm5nRm9yPVwibGV0IHJvd0RpcyBvZiBkZWZ1bHREaXNwbGF5T2JqIDtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgKm5nRm9yPVwibGV0IGhkciBvZiBoZWFkZXJMaXN0IDtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tyb3dEaXNbaGRyXX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtb2Zmc2V0LTExIGNvbC1tZC0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKm5nSWY9XCJmaWxlTG9nSWRuPT0wICYmIChmaWxlbm1lPT0nZ2VuZXJpYycgfHwgZmlsZW5tZT09J2dpYV9iaWxsJylcIiBjbGFzcz1cImJ0biBidG4tc3VjY2VzcyBwdWxsLXJpZ2h0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cIm1hcmdpbjogNXB4XCIgKGNsaWNrKT1cIlNraXBWZXJpZmljYXRpb24oKVwiPlNraXA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbmJzcDsgJm5ic3A7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAqbmdJZj1cImZpbGVMb2dJZG49PTBcIiBjbGFzcz1cImJ0biBidG4tc3VjY2VzcyBwdWxsLXJpZ2h0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cIm1hcmdpbjogNXB4XCIgKGNsaWNrKT1cIlZhbGlkYXRlRmlsZUhlYWRlck1hcHBpbmcoJ1knKVwiPlZlcmlmeTwvYnV0dG9uPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICBcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyB1cGxvYWQgXCIgKm5nSWY9XCJzdGVwPT0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyB0YWJsZS1yZXNwb25zaXZlIGNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2VsbHNwYWNpbmc9XCIxMFwiIGNsYXNzPVwiZGlzcGxheVRhYmxlIGZpbGV1cGxvYWR2aWV3XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBoZHIgb2YgY2hhckhlYWRlckxpc3QgO2xldCBqPWluZGV4O1wiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBzdHlsZT1cImNvbG9yOndoaXRlO2JvcmRlcjogMXB4IHNvbGlkIHdoaXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2hkcn19KHt7aGVhZGVyQXR0cmlidXRlRHRsW2hkcl0uYXR0cn19KTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBbbmdDbGFzc109XCJ7J2V2ZW4nOmolMj09MCwnb2RkJzpqJTI9PTF9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCIgc3R5bGU9XCJkaXNwbGF5OiBmbGV4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGF0dHJWYWwgb2Ygcm93ZGlzdGluY3REYXRhTWFwW2hlYWRlckF0dHJpYnV0ZUR0bFtoZHJdLmF0dHJdO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPVwid2lkdGg6MTYwcHg7bWFyZ2luLXJpZ2h0OiAxcHhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydtYXRjaGVkVWwnOnJvd2RhdGFtYXBEZXRhaWxzW2hlYWRlckF0dHJpYnV0ZUR0bFtoZHJdLmF0dHJdW2F0dHJWYWxdLnZhbCAhPScnfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIHN0eWxlPVwibGlzdC1zdHlsZTogbm9uZTt0ZXh0LWFsaWduOmxlZnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+IHt7YXR0clZhbH19IDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VsZWN0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInJvd2RhdGFtYXBEZXRhaWxzW2hlYWRlckF0dHJpYnV0ZUR0bFtoZHJdLmF0dHJdW2F0dHJWYWxdLnZhbD09JydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzZWxlY3QtY29udHJvbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwie3tyb3dkYXRhbWFwRGV0YWlsc1toZWFkZXJBdHRyaWJ1dGVEdGxbaGRyXS5hdHRyXVthdHRyVmFsXS52YWx9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInJvd2RhdGFtYXBEZXRhaWxzW2hlYWRlckF0dHJpYnV0ZUR0bFtoZHJdLmF0dHJdW2F0dHJWYWxdLnZhbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cImNvbmZpcm1IZWFkZXJEZXRhaWxzTWFwcChoZWFkZXJBdHRyaWJ1dGVEdGxbaGRyXS5hdHRyLGhlYWRlckF0dHJpYnV0ZUR0bFtoZHJdLmF0dHJfaWRuLGF0dHJWYWwpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiXCI+LS1zZWxlY3QtLTwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBhdHRyZHRsbWFwIG9mIGF0dHJpYnV0ZUR0bE1hcFtoZWFkZXJBdHRyaWJ1dGVEdGxbaGRyXS5hdHRyXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9XCJ7e2F0dHJkdGxtYXA/LnZhbH19XCI+e3thdHRyZHRsbWFwPy5kaXNwbGF5fX0oe3thdHRyZHRsbWFwPy52YWx9fSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwicm93ZGF0YW1hcERldGFpbHNbaGVhZGVyQXR0cmlidXRlRHRsW2hkcl0uYXR0cl1bYXR0clZhbF0udmFsIT0nJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tyb3dkYXRhbWFwRGV0YWlsc1toZWFkZXJBdHRyaWJ1dGVEdGxbaGRyXS5hdHRyXVthdHRyVmFsXS52YWx9fSBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbmJzcDsmbmJzcDsgPGkgKGNsaWNrKT1cInJlbW92ZURldGFpbEF0dHJPcHRWYWwoaGVhZGVyQXR0cmlidXRlRHRsW2hkcl0uYXR0cl9pZG4sYXR0clZhbCxyb3dkYXRhbWFwRGV0YWlsc1toZWFkZXJBdHRyaWJ1dGVEdGxbaGRyXS5hdHRyXVthdHRyVmFsXS52YWwsW2hlYWRlckF0dHJpYnV0ZUR0bFtoZHJdLmF0dHJdKVwiIGNsYXNzPVwiZmEgZmEtdGltZXNcIiBhcmlhLWhpZGRlbj1cInRydWVcIiBzdHlsZT1cImNvbG9yOiByZWQ7Y3Vyc29yOiBwb2ludGVyO1wiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLW9mZnNldC0xMSBjb2wtbWQtMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiICpuZ0lmPVwiZmlsZUxvZ0lkbj09MCAmJiAoZmlsZW5tZT09J2dlbmVyaWMnIHx8IGZpbGVubWU9PSdnaWFfYmlsbCcpXCIgY2xhc3M9XCJidG4gYnRuLXN1Y2Nlc3MgcHVsbC1yaWdodFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJtYXJnaW46IDVweFwiIChjbGljayk9XCJTa2lwVmVyaWZpY2F0aW9uRHRsKClcIj5Ta2lwPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm5ic3A7ICZuYnNwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXN1Y2Nlc3MgcHVsbC1yaWdodFwiIHN0eWxlPVwibWFyZ2luOiA1cHhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ1cGxvYWRGaWxlKClcIiBbZGlzYWJsZWRdPVwiZ21hdGNoZWRDb3VudCE9Z3Jlc3VsdENvdW50XCI+VXBsb2FkPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IHVwbG9hZFwiICpuZ0lmPVwic3RlcD09NFwiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cCAqbmdJZj1cInN0ZXA9PTRcIiBzdHlsZT1cIm1hcmdpbi1sZWZ0OiAxNXB4O2NvbG9yOmdyZWVuO2ZvbnQtc2l6ZTogMjBweDt0ZXh0LWFsaWduOiBsZWZ0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2xhYmxlRmlsZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBzdHlsZT1cImZvbnQtc2l6ZTogMTRweDtcIiAqbmdJZj1cImxhc3RSZWZyZXNoVGltZUZpbGUgIT0gbnVsbFwiPkxhc3RcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoIHRpbWUgOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh7e2xhc3RSZWZyZXNoVGltZUZpbGUgfCBkYXRlOidtZWRpdW0nfX0pPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJvZ3Jlc3NcIiBzdHlsZT1cIm1hcmdpbjogMTVweDtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9ncmVzcy1iYXIgcHJvZ3Jlc3MtYmFyLXdhcm5pbmdcIiByb2xlPVwicHJvZ3Jlc3NiYXJcIiBhcmlhLXZhbHVlbm93PVwiNjBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtdmFsdWVtaW49XCIwXCIgYXJpYS12YWx1ZW1heD1cIjEwMFwiIFtuZ1N0eWxlXT1cInsnd2lkdGgnOnRvdFByb2dyZXNzRmlsZSsnJSd9ICBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e3RvdFByb2dyZXNzRmlsZX19ICVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwICpuZ0lmPVwic3RlcD09NCAmJiBjbGlja2VkXCIgc3R5bGU9XCJtYXJnaW4tdG9wOiAzNXB4O1wiPjxzdHJvbmc+IENvbXBsZXRlIDp7e3N0dHNGaWxlWydDJ119fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZuYnNwOyZuYnNwOyZuYnNwOyBQZW5kaW5nIDoge3tzdHRzRmlsZVsnUCddfX0gJm5ic3A7Jm5ic3A7Jm5ic3A7IEVycm9yIDpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e3N0dHNGaWxlWydFJ119fSZuYnNwOyZuYnNwOyZuYnNwOyBJbnZhaWxkIFN0YXR1cyA6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tzdHRzRmlsZVsnSSddfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbmJzcDsmbmJzcDsmbmJzcDsgVG90YWwgOiB7e3N0dHNGaWxlWydUJ119fTwvc3Ryb25nPjwvcD5cclxuXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cCAqbmdJZj1cInN0ZXA9PTRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJtYXJnaW4tbGVmdDogMTVweDtjb2xvcjpncmVlbjtmb250LXNpemU6IDIwcHg7bWFyZ2luLXRvcDogMTVweDt0ZXh0LWFsaWduOiBsZWZ0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2xhYmxlfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIHN0eWxlPVwiZm9udC1zaXplOiAxMnB4O21hcmdpbi1sZWZ0OiAyMHB4O2NvbG9yOiBibGFjaztcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwibGFzdFJlZnJlc2hUaW1lICE9IG51bGxcIj5MYXN0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaCB0aW1lIDpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoe3tsYXN0UmVmcmVzaFRpbWUgfCBkYXRlOidtZWRpdW0nfX0pPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJvZ3Jlc3NcIiBzdHlsZT1cIm1hcmdpbjogMTVweDtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9ncmVzcy1iYXIgcHJvZ3Jlc3MtYmFyLXdhcm5pbmdcIiByb2xlPVwicHJvZ3Jlc3NiYXJcIiBhcmlhLXZhbHVlbm93PVwiNjBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtdmFsdWVtaW49XCIwXCIgYXJpYS12YWx1ZW1heD1cIjEwMFwiIFtuZ1N0eWxlXT1cInsnd2lkdGgnOnRvdFByb2dyZXNzKyclJ30gIFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7dG90UHJvZ3Jlc3N9fSAlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1zdWNjZXNzIHRleHQtY2VudGVyXCIgc3R5bGU9XCJtYXJnaW46IDVweFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2hlY2tVcGxvYWRTdHQoKVwiPkNoZWNrXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0dXM8L2J1dHRvbj4gLS0+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cCAqbmdJZj1cInN0ZXA9PTQgJiYgY2xpY2tlZFwiIHN0eWxlPVwibWFyZ2luLXRvcDogMzVweDtcIj48c3Ryb25nPiBDb21wbGV0ZSA6e3tzdHRzWydDJ119fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZuYnNwOyZuYnNwOyZuYnNwOyBQZW5kaW5nIDoge3tzdHRzWydQJ119fSAmbmJzcDsmbmJzcDsmbmJzcDsgRXJyb3IgOiB7e3N0dHNbJ0UnXX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm5ic3A7Jm5ic3A7Jm5ic3A7IFRvdGFsIDoge3tzdHRzWydUJ119fTwvc3Ryb25nPjwvcD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj5cclxuXHJcblxyXG5cclxuXHJcbjxkaXYgY2xhc3M9XCJtb2RhbFwiIGlkPVwiZmlsZVVwbG9hZE1vZGFsXCIgdGFiaW5kZXg9XCItMVwiIHN0eWxlPVwiei1pbmRleDogOTk5OTk5XCIgcm9sZT1cImRpYWxvZ1wiXHJcbiAgICBhcmlhLWxhYmVsbGVkYnk9XCJzbWFsbE1vZGFsSGVhZFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIGRhdGEtYmFja2Ryb3A9XCJzdGF0aWNcIiBkYXRhLWtleWJvYXJkPVwidHJ1ZVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1vZGFsLWRpYWxvZyBcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtY29udGVudFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImNsb3NlXCIgZGF0YS1kaXNtaXNzPVwibW9kYWxcIiAjZmlsZVVwbG9hZGNsc2J0bj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBhcmlhLWhpZGRlbj1cInRydWVcIj4mdGltZXM7PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3Itb25seVwiPkNsb3NlPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8aDQgY2xhc3M9XCJtb2RhbC10aXRsZVwiIGlkPVwic21hbGxNb2RhbEhlYWRcIj5BZGQgZmlsZSB1cGxvYWQgb3B0aW9uPC9oND5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGZvcm0gY2xhc3M9XCJmb3JtLWhvcml6b250YWxcIiByb2xlPVwiZm9ybVwiICNmPVwibmdGb3JtXCIgKG5nU3VibWl0KT1cIm9uU3VibWl0KGYpXCIgbmFtZT1cImFwcEZvcm1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjb2wtbWQtMyBjb250cm9sLWxhYmVsXCI+TmFtZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cCB3LTEwMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgWyhuZ01vZGVsKV09XCJubWVcIiBuYW1lPVwibm1lXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjb2wtbWQtMyBjb250cm9sLWxhYmVsXCI+RGVzY3JpcHRpb25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXAgdy0xMDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIFsobmdNb2RlbCldPVwiZGVzY3JpcHRpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwiZGVzY3JpcHRpb25cIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImNvbC1tZC0zIGNvbnRyb2wtbGFiZWxcIj5UeXBlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwIHctMTAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdCBjbGFzcz1cImZvcm0tY29udHJvbFwiIG5hbWU9XCJ0eXBcIiBbKG5nTW9kZWwpXT1cInR5cFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiXCI+LS1zZWxlY3QtLTwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBmaWxlIG9mIGZpbGVUeXBlTGlzdFwiIHZhbHVlPVwie3tmaWxlPy5rfX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ZmlsZT8udn19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjb2wtbWQtMyBjb250cm9sLWxhYmVsXCI+Q2hlY2sgc3RhdHVzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwIHctMTAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXNlbGVjdCBwbGFjZWhvbGRlcj1cIlNlbGVjdCBTdGF0dXNcIiBbb3B0aW9uc109XCJzdGF0dXNMaXN0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjaGVja19zdGF0dXNcIiBuYW1lPVwiY2hlY2tfc3RhdHVzXCIgW211bHRpcGxlXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYWxsb3dDbGVhcl09XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjb3B0aW9uVGVtcGxhdGUgbGV0LW9wdGlvbj1cIm9wdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZhbWZhbWZhbS1mbGFncyB7e29wdGlvbj8udmFsdWV9fVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tvcHRpb24/LmxhYmVsfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLXNlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjb2wtbWQtMyBjb250cm9sLWxhYmVsXCI+UGFja2V0IHN0YXR1c1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cCB3LTEwMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1zZWxlY3QgcGxhY2Vob2xkZXI9XCJTZWxlY3QgU3RhdHVzXCIgW29wdGlvbnNdPVwic3RhdHVzTGlzdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwicGt0X3N0YXR1c1wiIG5hbWU9XCJwa3Rfc3RhdHVzXCIgW2FsbG93Q2xlYXJdPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI29wdGlvblRlbXBsYXRlIGxldC1vcHRpb249XCJvcHRpb25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmYW1mYW1mYW0tZmxhZ3Mge3tvcHRpb24/LnZhbHVlfX1cIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7b3B0aW9uPy5sYWJlbH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZm9ybT5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWZvb3RlclwiPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHRcIiBkYXRhLWRpc21pc3M9XCJtb2RhbFwiICNmaWxlVXBsb2FkY2xzYnRuPkNsb3NlPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tc3VjY2Vzc1wiIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCIgYXBwQXBwTm9EYmxDbGlja1xyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvblN1Ym1pdChmKVwiPlNhdmU8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG48ZGl2IGNsYXNzPVwibW9kYWxcIiBpZD1cIkNvZmlybW1hcGhkclwiICByb2xlPVwiZGlhbG9nXCIgYXJpYS1sYWJlbGxlZGJ5PVwic21hbGxNb2RhbEhlYWRcIiBhcmlhLWhpZGRlbj1cInRydWVcIiBkYXRhLWJhY2tkcm9wPVwic3RhdGljXCJcclxuICBkYXRhLWtleWJvYXJkPVwiZmFsc2VcIj5cclxuICA8ZGl2IGNsYXNzPVwibW9kYWwtZGlhbG9nXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwibW9kYWwtY29udGVudFwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGVyXCI+XHJcbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cIkNhbmNlbEhlYWRlck1hcHAoKVwiIGNsYXNzPVwiY2xvc2VcIiAgZGF0YS1kaXNtaXNzPVwibW9kYWxcIj5cclxuICAgICAgICAgIDxzcGFuIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPiZ0aW1lczs8L3NwYW4+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInNyLW9ubHlcIiA+Q2xvc2U8L3NwYW4+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPGg0IGNsYXNzPVwibW9kYWwtdGl0bGVcIiBpZD1cInNtYWxsTW9kYWxIZWFkXCI+QWxlcnQ8L2g0PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHlcIj5cclxuICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICBBcmUgeW91IHN1cmUgRm9yIE1hcHBpbmcgPGI+e3ttYXBoZHJ9fTwvYj4gVG8gQXR0cmlidXRlIDxiPnt7aGRybWFzc2FnZX19PC9iPiBcclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1mb290ZXJcIj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0XCIgKGNsaWNrKT1cIkNhbmNlbEhlYWRlck1hcHAoKVwiICAgZGF0YS1kaXNtaXNzPVwibW9kYWxcIiA+Q2xvc2U8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1zdWNjZXNzXCIgZGF0YS1kaXNtaXNzPVwibW9kYWxcIiAoY2xpY2spPVwic2V0SGVhZGVyTWFwcCgpO1wiPkNvbmZpcm08L2J1dHRvbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsXCIgaWQ9XCJDb2Zpcm1tYXBkdGxcIiAgcm9sZT1cImRpYWxvZ1wiIGFyaWEtbGFiZWxsZWRieT1cInNtYWxsTW9kYWxIZWFkXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgZGF0YS1iYWNrZHJvcD1cInN0YXRpY1wiXHJcbiAgZGF0YS1rZXlib2FyZD1cImZhbHNlXCI+XHJcbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWRpYWxvZ1wiPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1vZGFsLWNvbnRlbnRcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlclwiPlxyXG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJDYW5jZWxIZWFkZXJNYXBwKClcIiBjbGFzcz1cImNsb3NlXCIgZGF0YS1kaXNtaXNzPVwibW9kYWxcIiA+XHJcbiAgICAgICAgICA8c3BhbiBhcmlhLWhpZGRlbj1cInRydWVcIj4mdGltZXM7PC9zcGFuPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJzci1vbmx5XCIgPkNsb3NlPC9zcGFuPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxoNCBjbGFzcz1cIm1vZGFsLXRpdGxlXCIgaWQ9XCJzbWFsbE1vZGFsSGVhZFwiPkFsZXJ0PC9oND5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5XCI+XHJcbiAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgQXJlIHlvdSBzdXJlIEZvciBNYXBwaW5nIDxiPnt7ZHRsb3B0aW9udmFsfX08L2I+IFRvIEF0dHJpYnV0ZSAgPGI+IHt7ZHRsQXR0cn19IDwvYj4gd2l0aCBBdHRyaWJ1dGVEZXRhaWwgPGI+e3tkdGxtYXNzYWdlfX08L2I+IFxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWZvb3RlclwiPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHRcIiBkYXRhLWRpc21pc3M9XCJtb2RhbFwiIChjbGljayk9XCJDYW5jZWxIZWFkZXJEZXRhaWxzTWFwcCgpXCI+Q2xvc2U8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1zdWNjZXNzXCIgZGF0YS1kaXNtaXNzPVwibW9kYWxcIiAoY2xpY2spPVwic2V0SGVhZGVyRGV0YWlsc01hcHAoKVwiPkNvbmZpcm08L2J1dHRvbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcblxyXG48YnV0dG9uIGlkPVwiYnRuZmlsZVVwbG9hZE1vZGFsXCIgW2hpZGRlbl09XCJ0cnVlXCIgZGF0YS10b2dnbGU9XCJtb2RhbFwiIGRhdGEtdGFyZ2V0PVwiI2ZpbGVVcGxvYWRNb2RhbFwiPjwvYnV0dG9uPlxyXG5cclxuPGJ1dHRvbiBpZD1cImJ0bkNvZmlybW1hcGhkclwiIFtoaWRkZW5dPVwidHJ1ZVwiIGRhdGEtdG9nZ2xlPVwibW9kYWxcIiBkYXRhLXRhcmdldD1cIiNDb2Zpcm1tYXBoZHJcIj48L2J1dHRvbj5cclxuPGJ1dHRvbiBpZD1cImJ0bkNvZmlybW1hcGR0bFwiIFtoaWRkZW5dPVwidHJ1ZVwiIGRhdGEtdG9nZ2xlPVwibW9kYWxcIiBkYXRhLXRhcmdldD1cIiNDb2Zpcm1tYXBkdGxcIj48L2J1dHRvbj5cclxuXHJcblxyXG5cclxuPCEtLSA8ZGl2IGNsYXNzPVwiY2VudGVyZWRcIj5cclxuICAgIDxkaXYgaWQ9XCJkaXZTcGlubmVyXCIgY2xhc3M9XCJzcGlubmVyIGxvYWRpbmdcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImxvYWRpbmctdGV4dFwiPkxvYWRpbmcgLi4uPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8YnV0dG9uIChjbGljayk9XCJ0ZXN0KClcIiBpZD1cImJ0bkxvYWRSZWNvcmRzXCIgc3R5bGU9XCJjdXJzb3I6cG9pbnRlcjtwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogNTIlOyBsZWZ0OiA0NSU7XCI+TG9hZCBSZWNvcmRzPC9idXR0b24+XHJcbiAgPC9kaXY+IC0tPiJdfQ==
963
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZXVwbG9hZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lemxpYi9zcmMvbGliL2ZpbGUtdXBsb2FkL2ZpbGV1cGxvYWQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXpsaWIvc3JjL2xpYi9maWxlLXVwbG9hZC9maWxldXBsb2FkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxTQUFTLEVBQVUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RSxPQUFPLEVBQUUsTUFBTSxFQUFFLGNBQWMsRUFBVSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDM0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ2hELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUVqRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDaEYsT0FBTyxLQUFLLElBQUksTUFBTSxNQUFNLENBQUM7QUFDN0Isc0dBQXNHO0FBQ3RHLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTs7Ozs7Ozs7Ozs7QUFTcEQsTUFBTSxPQUFPLG1CQUFtQjtJQXlEOUIsWUFDUyxNQUFjLEVBQ2IsS0FBcUIsRUFDckIsTUFBcUIsRUFDckIsY0FBaUMsRUFDakMsSUFBZ0IsRUFDaEIsRUFBd0I7UUFMekIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNiLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBQ3JCLFdBQU0sR0FBTixNQUFNLENBQWU7UUFDckIsbUJBQWMsR0FBZCxjQUFjLENBQW1CO1FBQ2pDLFNBQUksR0FB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R0FBRyxTQUFTLENBQUMsVUFBVSxDQUFDO1FBQzVDLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO1FBQ2YsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFlBQVksRUFBRSxHQUFHLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksSUFBSSxDQUFDLFNBQVMsSUFBSSxTQUFTO1lBQzdCLFlBQVksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFL0IsSUFBSSxJQUFJLENBQUMsVUFBVSxJQUFJLFNBQVM7WUFDOUIsWUFBWSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUVsQyxDQUFDO0lBRUQsd0JBQXdCO1FBQ3RCLElBQUksQ0FBQyxlQUFlLEdBQUc7WUFDckIsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxpQkFBaUIsRUFBRTtTQUN2QyxDQUFDO1FBQ0YsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFDeEIsQ0FBQzs7bUlBM2hDVSxtQkFBbUI7dUhBQW5CLG1CQUFtQiw4VkNwQmhDLDg0MEJBK2JZOzJGRDNhQyxtQkFBbUI7a0JBUC9CLFNBQVM7K0JBQ0UsZ0JBQWdCO2tQQVFBLFdBQVc7c0JBQXBDLFNBQVM7dUJBQUMsYUFBYTtnQkFDRSxXQUFXO3NCQUFwQyxTQUFTO3VCQUFDLGFBQWE7Z0JBQ0csWUFBWTtzQkFBdEMsU0FBUzt1QkFBQyxjQUFjIiwic291cmNlc0NvbnRlbnQiOlsiXHJcbmltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBWaWV3Q2hpbGQsIEVsZW1lbnRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUm91dGVyLCBBY3RpdmF0ZWRSb3V0ZSwgUGFyYW1zIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgVG9hc3RyU2VydmljZSB9IGZyb20gJ25neC10b2FzdHInO1xyXG5pbXBvcnQgeyBOZ3hTcGlubmVyU2VydmljZSB9IGZyb20gXCJuZ3gtc3Bpbm5lclwiO1xyXG5pbXBvcnQgeyBDb29raWUgfSBmcm9tICduZzItY29va2llcy9uZzItY29va2llcyc7XHJcbmltcG9ydCB7IEh0dHBIZWFkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBDb21tYW5TZXJ2aWNlU2VydmljZSB9IGZyb20gJy4uL2NvbW1hbi1zZXJ2aWNlL2NvbW1hbi1zZXJ2aWNlLnNlcnZpY2UnO1xyXG5pbXBvcnQgKiBhcyBYTFNYIGZyb20gJ3hsc3gnO1xyXG4vLyBpbXBvcnQgeyBVcGxvYWRTZXJ2aWNlU2VydmljZSB9IGZyb20gJ3NyYy9hcHAvY29tcG9uZW50cy9maWxldXBsb2FkLW1vZHVsZS91cGxvYWQtc2VydmljZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTW9kYWxEaXJlY3RpdmUgfSBmcm9tICduZ3gtYm9vdHN0cmFwL21vZGFsJ1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtZmlsZXVwbG9hZCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2ZpbGV1cGxvYWQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2ZpbGV1cGxvYWQuY29tcG9uZW50LmNzcyddXHJcbn0pXHJcblxyXG5cclxuZXhwb3J0IGNsYXNzIEZpbGV1cGxvYWRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICBAVmlld0NoaWxkKCdjbG9zZWhkcmJ0bicpIGNsb3NlaGRyYnRuOiBFbGVtZW50UmVmO1xyXG4gIEBWaWV3Q2hpbGQoJ2Nsb3NlZHRsYnRuJykgY2xvc2VkdGxidG46IEVsZW1lbnRSZWY7XHJcbiAgQFZpZXdDaGlsZCgnQ29maXJtbWFwZHRsJykgQ29maXJtbWFwZHRsOiBNb2RhbERpcmVjdGl2ZTtcclxuICBoZWFkZXIgPSB7fTtcclxuICBmaWxlVG9VcGxvYWQ6IEZpbGUgPSBudWxsO1xyXG4gIGZpbGVOYW1lID0gXCJcIjtcclxuICBjRHQ7XHJcbiAgc3RlcCA9IDE7XHJcbiAgc2hlZXREYXRhID0gW107XHJcbiAgaGVhZGVyQXR0cmlidXRlRHRsID0ge307XHJcbiAgZGVmdWx0RGlzcGxheUxlbiA9IDU7XHJcbiAgZGVmdWx0RGlzcGxheU9iaiA9IFtdO1xyXG4gIGF0dHJTdHJ1Y3R1cmVEdGwgPSBbXTtcclxuICBoZWFkZXJMaXN0ID0gW107XHJcbiAgaGVhZGVycHJwO1xyXG4gIGF0dHJwcnA7XHJcbiAgdG90YWxtYXRjaCA9IDA7XHJcbiAgdG90YWxpZ25vcmUgPSAwO1xyXG4gIHBhZ2VEZWZpbmF0aW9uID0ge307XHJcbiAgcm93ZGF0YW1hcERldGFpbHMgPSB7fTtcclxuICByb3dkaXN0aW5jdERhdGFNYXAgPSB7fTtcclxuICBjaGFySGVhZGVyTGlzdCA9IFtdO1xyXG4gIGF0dHJpYnV0ZUR0bE1hcCA9IHt9O1xyXG4gIG1hcHBTaGVldERhdGEgPSBbXTtcclxuICBsYWJsZSA9IFwiXCI7XHJcbiAgbGFibGVGaWxlID0gXCJcIjtcclxuICBzdGF0dXNMaXN0ID0gW107XHJcbiAgZmlsZURldGFpbHMgPSBbXTtcclxuICBmaWxlVHlwZUxpc3QgPSBbXTtcclxuICBmaWxlT3B0aW9uc0xpc3QgPSBbXTtcclxuICBmaWxlVHlwZTtcclxuICBubWU7XHJcbiAgdHlwO1xyXG4gIG1kbDtcclxuICBkZXNjcmlwdGlvbjtcclxuICBjaGVja19zdGF0dXMgPSBbXTtcclxuICBwa3Rfc3RhdHVzID0gW107XHJcbiAgY29sRm9ybWF0ZSA9IFtdO1xyXG4gIGlnbm9yZUZvcm1hdGUgPSBbXTtcclxuICBhbGxjb2xzID0gW107XHJcbiAgZmlsZUxvZ0lkbiA9IDA7XHJcbiAgc2hvdyA9IGZhbHNlO1xyXG4gIHN0ZXBNc2cgPSAnJztcclxuICB0aW1lcmZpbGU7XHJcbiAgdGltZXJQcmljZTtcclxuICBkYXRlRm9ybWF0O1xyXG4gIGRlbGltO1xyXG4gIGRhdGVGb3JtYXRNYXAgPSB7fTtcclxuICBtYXBwaW5nc2tpcCA9IGZhbHNlO1xyXG4gIGZpbGV0eXBlO1xyXG4gIGZpbGVubWU7XHJcbiAgZGF0ZUZvcm1hdExpc3QgPSBbeyBcImtcIjogXCJkZC9tbS95eVwiLCBcInZcIjogXCJkZC9tbS95eVwiIH0sXHJcbiAgeyBcImtcIjogXCJtbS9kZC95eVwiLCBcInZcIjogXCJtbS9kZC95eVwiIH0sXHJcbiAgeyBcImtcIjogXCJkZC9Nb24veXlcIiwgXCJ2XCI6IFwiZGQvTW9uL3l5XCIgfSxcclxuICBdXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICBwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcclxuICAgIHByaXZhdGUgdG9hc3RyOiBUb2FzdHJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBzcGlubmVyU2VydmljZTogTmd4U3Bpbm5lclNlcnZpY2UgLFxyXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxyXG4gICAgcHJpdmF0ZSBjczogQ29tbWFuU2VydmljZVNlcnZpY2VcclxuICApIHsgfVxyXG5cclxuICBoYW5kbGVGaWxlSW5wdXQoZmlsZXM6IEZpbGVMaXN0KSB7XHJcbiAgICB0aGlzLmZpbGVUb1VwbG9hZCA9IGZpbGVzLml0ZW0oMCk7XHJcbiAgICB0aGlzLmZpbGVOYW1lID0gZmlsZXNbMF0ubmFtZTtcclxuICB9XHJcbiAgb25GaWxlU2VsZWN0KGlucHV0OiBIVE1MSW5wdXRFbGVtZW50KSB7XHJcbiAgICBjb25zdCBmaWxlcyA9IGlucHV0LmZpbGVzO1xyXG5cclxuICAgIGlmIChmaWxlcyAmJiBmaWxlcy5sZW5ndGgpIHtcclxuXHJcbiAgICAgIGNvbnN0IGZpbGVUb1JlYWQgPSBmaWxlc1swXTtcclxuXHJcbiAgICAgIGNvbnN0IGZpbGVSZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xyXG4gICAgICBmaWxlUmVhZGVyLm9ubG9hZCA9IHRoaXMub25GaWxlTG9hZDtcclxuXHJcbiAgICAgIGZpbGVSZWFkZXIucmVhZEFzVGV4dChmaWxlVG9SZWFkLCBcIlVURi04XCIpO1xyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG5cclxuXHJcbiAgY3N2Q29udGVudDogc3RyaW5nO1xyXG4gIHBhcnNlZENzdjogc3RyaW5nW11bXTtcclxuICBvbkZpbGVMb2FkKGZpbGVMb2FkZWRFdmVudCkge1xyXG4gICAgY29uc3QgY3N2U2VwYXJhdG9yID0gJzsnO1xyXG4gICAgY29uc3QgdGV4dEZyb21GaWxlTG9hZGVkID0gZmlsZUxvYWRlZEV2ZW50LnRhcmdldC5yZXN1bHQ7XHJcbiAgICB0aGlzLmNzdkNvbnRlbnQgPSB0ZXh0RnJvbUZpbGVMb2FkZWQ7XHJcbiAgICBjb25zdCB0eHQgPSB0ZXh0RnJvbUZpbGVMb2FkZWQ7XHJcbiAgICBjb25zdCBjc3YgPSBbXTtcclxuICAgIGNvbnN0IGxpbmVzID0gdHh0LnNwbGl0KCdcXG4nKTtcclxuXHJcbiAgICBjb25zb2xlLmxvZyhsaW5lc1swXSk7XHJcblxyXG5cclxuICAgIGxpbmVzLmZvckVhY2goZWxlbWVudCA9PiB7XHJcbiAgICAgIGNvbnN0IGNvbHM6IHN0cmluZ1tdID0gZWxlbWVudC5zcGxpdChjc3ZTZXBhcmF0b3IpO1xyXG4gICAgICBjc3YucHVzaChjb2xzKTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5wYXJzZWRDc3YgPSBjc3Y7XHJcblxyXG4gICAgLy8gZGVtbyBvdXRwdXQgYXMgYWxlcnRcclxuICAgIHZhciBvdXRwdXQ6IHN0cmluZyA9IFwiXCI7XHJcbiAgICBjc3YuZm9yRWFjaChyb3cgPT4ge1xyXG4gICAgICBvdXRwdXQgKz0gXCJcXG5cIjtcclxuICAgICAgdmFyIGNvbE5vID0gMDtcclxuICAgICAgcm93LmZvckVhY2goY29sID0+IHtcclxuICAgICAgICBpZiAoY29sTm8gPiAwKSBvdXRwdXQgKz0gXCIgfCBcIjtcclxuICAgICAgICBvdXRwdXQgKz0gY29sO1xyXG4gICAgICAgIGNvbE5vKys7XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gb3V0cHV0O1xyXG4gIH1cclxuXHJcblxyXG4gIGFycmF5QnVmZmVyOiBhbnk7XHJcbiAgZmlsZTogRmlsZTtcclxuICBpbmNvbWluZ2ZpbGUoZXZlbnQpIHtcclxuICAgIHRoaXMuZmlsZSA9IGV2ZW50LnRhcmdldC5maWxlc1swXTtcclxuICAgIHRoaXMuZmlsZU5hbWUgPSB0aGlzLmZpbGUubmFtZTtcclxuICAgIHRoaXMuVXBsb2FkKCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgVXBsb2FkKCkge1xyXG5cclxuICAgIHRoaXMuc2hvdyA9IHRydWU7XHJcbiAgICB0aGlzLnN0ZXBNc2cgPSAnRmlsZSB1cGxvYWQgaW4gcHJvY2Vzcy4uJztcclxuICAgIC8vIHRoaXMuc3Bpbm5lclNlcnZpY2Uuc2hvdygpO1xyXG4gICAgdGhpcy5tYXBwU2hlZXREYXRhID0gW107XHJcbiAgICB0aGlzLnNoZWV0RGF0YSA9IFtdO1xyXG4gICAgbGV0IGZpbGVSZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xyXG4gICAgZmlsZVJlYWRlci5vbmxvYWQgPSAoZSkgPT4ge1xyXG4gICAgICB0aGlzLmFycmF5QnVmZmVyID0gZmlsZVJlYWRlci5yZXN1bHQ7XHJcbiAgICAgIHZhciBkYXRhID0gbmV3IFVpbnQ4QXJyYXkodGhpcy5hcnJheUJ1ZmZlcik7XHJcbiAgICAgIHZhciBhcnIgPSBuZXcgQXJyYXkoKTtcclxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgIT0gZGF0YS5sZW5ndGg7ICsraSkgYXJyW2ldID0gU3RyaW5nLmZyb21DaGFyQ29kZShkYXRhW2ldKTtcclxuICAgICAgdmFyIGJzdHIgPSBhcnIuam9pbihcIlwiKTtcclxuICAgICAgdmFyIHdvcmtib29rID0gWExTWC5yZWFkKGJzdHIsIHsgdHlwZTogXCJiaW5hcnlcIiwgY2VsbERhdGVzOiB0cnVlLCBkYXRlTkY6J21tLWRkLXl5eXknIH0pO1xyXG4gICAgICB2YXIgZmlyc3Rfc2hlZXRfbmFtZSA9IHdvcmtib29rLlNoZWV0TmFtZXNbMF07XHJcbiAgICAgIHZhciB3b3Jrc2hlZXQgPSB3b3JrYm9vay5TaGVldHNbZmlyc3Rfc2hlZXRfbmFtZV07XHJcblxyXG4gICAgICB2YXIgc2hlZXREYXRhTWFwOiBhbnkgPSBYTFNYLnV0aWxzLnNoZWV0X3RvX2pzb24od29ya3NoZWV0LCB7IGhlYWRlcjogMSB9KTtcclxuICAgICAgbGV0IGhlYWRlckxpc3QgPSBzaGVldERhdGFNYXBbMF07XHJcbiAgICAgIGhlYWRlckxpc3QuZm9yRWFjaChoZHIgPT4ge1xyXG4gICAgICAgIHRoaXMuaGVhZGVyTGlzdC5wdXNoKGhkci50cmltKCkpO1xyXG4gICAgICB9KTtcclxuICAgICAgY29uc29sZS5sb2coJ3dvcmtzaGVldCcsd29ya3NoZWV0KVxyXG4gICAgICB0aGlzLnNoZWV0RGF0YSA9IFhMU1gudXRpbHMuc2hlZXRfdG9fanNvbih3b3Jrc2hlZXQse3JhdzpmYWxzZSxkYXRlTkY6J21tLWRkLXl5eXknfSk7XHJcbiAgICAgIHRoaXMubWFwcFNoZWV0RGF0YSA9IFhMU1gudXRpbHMuc2hlZXRfdG9fanNvbih3b3Jrc2hlZXQpO1xyXG4gICAgICBjb25zb2xlLmxvZygnc2hlZXREYXRhJyx0aGlzLnNoZWV0RGF0YSlcclxuICAgICAgdGhpcy5maWxlTG9nSWRuID0gMDtcclxuICAgICAgY29uc29sZS5sb2coXCJ0aGlzLmhlYWRlckxpc3RcIiwgdGhpcy5oZWFkZXJMaXN0KTtcclxuXHJcbiAgICAgIHRoaXMuZ2V0SGVhZGVyTWF0Y2goKTtcclxuICAgICAgLy8gY29uc3QgZGlzdGluY3RTaCA9IFsuLi5uZXcgU2V0KHRoaXMuc2hlZXREYXRhLm1hcCh4PT54LlNIQVBFKSldO1xyXG4gICAgfVxyXG4gICAgZmlsZVJlYWRlci5yZWFkQXNBcnJheUJ1ZmZlcih0aGlzLmZpbGUpO1xyXG4gIH1cclxuXHJcbiAgc2V0U2V0cChzdGVwKSB7XHJcbiAgICB0aGlzLnN0ZXAgPSBzdGVwO1xyXG5cclxuICAgIGlmIChzdGVwID09IDEpIHtcclxuICAgICAgdGhpcy5uZ09uRGVzdHJveSgpO1xyXG4gICAgICB0aGlzLm5nT25Jbml0KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRIZWFkZXJNYXRjaCgpIHtcclxuICAgIHRoaXMuc2hvdyA9IHRydWU7XHJcbiAgICBkZWJ1Z2dlcjtcclxuICAgIHRoaXMuc3RlcE1zZyA9ICdIZWFkZXIgdmVyaWZpY2F0aW9uIGluIHByb2Nlc3MgLi4uJztcclxuICAgIC8vIHRoaXMuc3Bpbm5lclNlcnZpY2Uuc2hvdygpO1xyXG4gICAgbGV0IHJlcU9iaiA9IHt9O1xyXG4gICAgcmVxT2JqWydmb3JtTm1lJ10gPSAnZmlsZVVwbG9hZCc7XHJcbiAgICByZXFPYmpbJ2F0dHJMaXN0J10gPSB0aGlzLmhlYWRlckxpc3Q7XHJcbiAgICByZXFPYmpbJ2ZpbGVJZG4nXSA9IHRoaXMuZmlsZVR5cGU7XHJcbiAgICB0aGlzLmhlYWRlcltcIm1ldGhvZFwiXSA9ICdsb2FkSGVhZGVyQXR0cic7XHJcbiAgICBsZXQgb3B0aW9ucyA9IHtcclxuICAgICAgbWV0aG9kOiB0aGlzLmhlYWRlcltcIm1ldGhvZFwiXVxyXG4gICAgfVxyXG4gICAgdGhpcy5jcy5sb2FkaUZpbGUocmVxT2JqLCBvcHRpb25zLCAnZmlsZVVwbG9hZC9sb2FkJykudGhlbigocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09ICdTVUNDRVNTJykge1xyXG4gICAgICAgIGxldCByZXN1bHQgPSByZXNwb25zZS5yZXN1bHQ7XHJcbiAgICAgICAgdGhpcy5oZWFkZXJBdHRyaWJ1dGVEdGwgPSByZXN1bHQuYXR0ckRldGFpbHMgfHwgJyc7XHJcbiAgICAgICAgY29uc29sZS5sb2coXCJ0aGlzLmhlYWRlckF0dHJpYnV0ZUR0bFwiLCB0aGlzLmhlYWRlckF0dHJpYnV0ZUR0bCk7XHJcbiAgICAgICAgbGV0IGhlYWRlckxpc3RMbnQgPSB0aGlzLmhlYWRlckxpc3QubGVuZ3RoO1xyXG4gICAgICAgIHRoaXMudG90YWxtYXRjaCA9IHJlc3VsdC50b3RhbG1hdGNoIHx8IDA7XHJcbiAgICAgICAgaWYgKHRoaXMuaGVhZGVyQXR0cmlidXRlRHRsICE9ICcnKSB7XHJcbiAgICAgICAgICB0aGlzLmF0dHJTdHJ1Y3R1cmVEdGwgPSByZXN1bHQuYXR0clN0cnVjdHVyZUR0bCB8fCBbXTtcclxuICAgICAgICAgIGlmICh0aGlzLnNoZWV0RGF0YS5sZW5ndGggPCA1KVxyXG4gICAgICAgICAgICB0aGlzLmRlZnVsdERpc3BsYXlMZW4gPSB0aGlzLnNoZWV0RGF0YS5sZW5ndGg7XHJcblxyXG4gICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmRlZnVsdERpc3BsYXlMZW47IGkrKylcclxuICAgICAgICAgICAgdGhpcy5kZWZ1bHREaXNwbGF5T2JqW2ldID0gdGhpcy5zaGVldERhdGFbaV07XHJcblxyXG4gICAgICAgICAgbGV0IGlnbm9yZUNvbHVtbkxzdCA9IHJlc3VsdC5pZ25vcmVfY29sdW1uIHx8IFtdO1xyXG4gICAgICAgICAgaWdub3JlQ29sdW1uTHN0LmZvckVhY2goaGRyRHNjID0+IHtcclxuXHJcbiAgICAgICAgICAgIGlmICh0aGlzLmhlYWRlckF0dHJpYnV0ZUR0bFtoZHJEc2NdICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgIHRoaXMuaGVhZGVyQXR0cmlidXRlRHRsW2hkckRzY10uaWdub3JlID0gJ1knO1xyXG4gICAgICAgICAgICAgIGhlYWRlckxpc3RMbnQtLTtcclxuICAgICAgICAgICAgICB0aGlzLnRvdGFsaWdub3JlKys7XHJcbiAgICAgICAgICAgICAgaWYgKHRoaXMuaGVhZGVyQXR0cmlidXRlRHRsW2hkckRzY10uYXR0ciAhPSBcIlwiKVxyXG4gICAgICAgICAgICAgICAgdGhpcy50b3RhbG1hdGNoLS07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgbGV0IGlzRGF0ZSA9IGZhbHNlO1xyXG5cclxuICAgICAgICAgIHRoaXMuaGVhZGVyTGlzdC5mb3JFYWNoKGhkciA9PiB7XHJcblxyXG4gICAgICAgICAgICBsZXQgaGRyQXR0ciA9IHRoaXMuaGVhZGVyQXR0cmlidXRlRHRsW2hkcl0gfHwge307XHJcbiAgICAgICAgICAgIGlmIChoZHJBdHRyLmR0YV90eXAgPT0gJ2QnKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5kYXRlRm9ybWF0TWFwW2hkcl0gPSB0aGlzLmRhdGVGb3JtYXQ7XHJcbiAgICAgICAgICAgICAgaXNEYXRlID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgaWYgKHRoaXMudG90YWxtYXRjaCA9PSBoZWFkZXJMaXN0TG50ICYmIGlzRGF0ZSA9PSBmYWxzZSkge1xyXG4gICAgICAgICAgICB0aGlzLlZhbGlkYXRlRmlsZUhlYWRlck1hcHBpbmcoJ04nKTtcclxuICAgICAgICAgICAgdGhpcy5zaG93ID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuc3RlcCA9IDM7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5zdGVwID0gMjtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuc2hvdyA9IGZhbHNlO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcihcIlNvbWUgcHJvYmxlbSBpbiBGaWxlIEhlYWRlciBNYXRjaGluZ1wiKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy90aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgICB0aGlzLnNob3cgPSBmYWxzZTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnNob3cgPSBmYWxzZTtcclxuICAgICAgICAvL3RoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICAgIHRoaXMudG9hc3RyLmVycm9yKHJlc3BvbnNlLm1lc3NhZ2UpO1xyXG4gICAgICB9XHJcbiAgICB9LCBlcnJvciA9PiB7XHJcbiAgICAgIC8vIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICB0aGlzLnNob3cgPSBmYWxzZTtcclxuICAgICAgdGhpcy50b2FzdHIuZXJyb3IoZXJyb3IpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHVwZGF0ZWNvbHVtbnN0YXR1ZShoZHIpIHtcclxuXHJcbiAgICB2YXIgaXNJZ25vcmUgPSB0aGlzLmhlYWRlckF0dHJpYnV0ZUR0bFtoZHJdLmlnbm9yZSB8fCAnJztcclxuICAgIGlmIChpc0lnbm9yZSA9PSAnWScpIHtcclxuICAgICAgdGhpcy5oZWFkZXJBdHRyaWJ1dGVEdGxbaGRyXS5pZ25vcmUgPSAnTidcclxuICAgICAgdGhpcy50b3RhbGlnbm9yZS0tO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy50b3RhbGlnbm9yZSsrO1xyXG4gICAgICB0aGlzLmhlYWRlckF0dHJpYnV0ZUR0bFtoZHJdLmlnbm9yZSA9ICdZJztcclxuICAgIH1cclxuICAgIGNvbnNvbGUubG9nKHRoaXMuaGVhZGVyQXR0cmlidXRlRHRsW2hkcl0pO1xyXG4gIH1cclxuICBtYXBoZHI7XHJcbiAgaGRybWFzc2FnZTtcclxuICBjb25maXJtc2V0SGVhZGVyTWFwcChoZHIpIHtcclxuICAgIHRoaXMubWFwaGRyID0gaGRyO1xyXG4gICAgbGV0IGF0dHIgPSB0aGlzLmhlYWRlckF0dHJpYnV0ZUR0bFtoZHJdLmF0dHI7XHJcbiAgICB0aGlzLmF0dHJTdHJ1Y3R1cmVEdGwuZm9yRWFjaChlbGUgPT4ge1xyXG5cclxuICAgICAgaWYgKGVsZS5hdHRyID09IGF0dHIpIHtcclxuICAgICAgICB0aGlzLmhkcm1hc3NhZ2UgPSB0aGlzLmhlYWRlckF0dHJpYnV0ZUR0bFtoZHJdLmF0dHIgKyBcIihcIiArIGVsZS5wcmludCArIFwiKVwiO1xyXG4gICAgICB9XHJcbiAgICB9KVxyXG5cclxuICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdidG5Db2Zpcm1tYXBoZHInKS5jbGljaygpO1xyXG4gIH1cclxuICBDYW5jZWxIZWFkZXJNYXBwKCkge1xyXG4gICAgdGhpcy5oZWFkZXJBdHRyaWJ1dGVEdGxbdGhpcy5tYXBoZHJdLmF0dHIgPSBcIlwiO1xyXG4gIH1cclxuICBzZXRIZWFkZXJNYXBwKCkge1xyXG4gICAgZGVidWdnZXI7XHJcbiAgICBsZXQgYXR0ciA9IHRoaXMuaGVhZGVyQXR0cmlidXRlRHRsW3RoaXMubWFwaGRyXS5hdHRyIHx8ICcnO1xyXG4gICAgaWYgKGF0dHIgIT0gJycpIHtcclxuICAgICAgbGV0IHJlcU9iaiA9IHt9O1xyXG4gICAgICByZXFPYmpbJ2Zvcm1ObWUnXSA9ICdmaWxlVXBsb2FkJztcclxuICAgICAgcmVxT2JqWydvcHRpb25hVmFsJ10gPSB0aGlzLm1hcGhkclxyXG4gICAgICByZXFPYmpbJ2F0dHInXSA9IGF0dHI7XHJcbiAgICAgIGNvbnNvbGUubG9nKEpTT04uc3RyaW5naWZ5KHJlcU9iaikpO1xyXG4gICAgICB0aGlzLmhlYWRlcltcIm1ldGhvZFwiXSA9ICdhZGRIZWFkZXJBdHRyJztcclxuICAgICAgbGV0IG9wdGlvbnMgPSB7XHJcbiAgICAgICAgbWV0aG9kOiB0aGlzLmhlYWRlcltcIm1ldGhvZFwiXVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuY3MubG9hZGlGaWxlKHJlcU9iaiwgb3B0aW9ucywgJ2ZpbGVVcGxvYWQvbG9hZCcpLnRoZW4oKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgICBjb25zb2xlLmxvZyhyZXNwb25zZSk7XHJcblxyXG4gICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT0gJ1NVQ0NFU1MnKSB7XHJcbiAgICAgICAgICBsZXQgcmVzdWx0ID0gcmVzcG9uc2UucmVzdWx0IHx8IHt9O1xyXG4gICAgICAgICAgbGV0IGhkckR0bCA9IHJlc3VsdC5hdHRyRGV0YWlsc1t0aGlzLm1hcGhkcl0gfHwgJyc7XHJcbiAgICAgICAgICBpZiAoaGRyRHRsICE9ICcnKSB7XHJcbiAgICAgICAgICAgIHRoaXMudG90YWxtYXRjaCsrO1xyXG4gICAgICAgICAgICB0aGlzLmhlYWRlckF0dHJpYnV0ZUR0bFt0aGlzLm1hcGhkcl0gPSBoZHJEdGw7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmhlYWRlckF0dHJpYnV0ZUR0bFt0aGlzLm1hcGhkcl0gPSB7XHJcbiAgICAgICAgICAgICAgXCJhdHRyXCI6IFwiXCIsXHJcbiAgICAgICAgICAgICAgXCJwcmludFwiOiBcIlwiLFxyXG4gICAgICAgICAgICAgIFwic3J0XCI6IFwiXCIsXHJcbiAgICAgICAgICAgICAgXCJkdGFfdHlwXCI6IFwiXCIsXHJcbiAgICAgICAgICAgICAgXCJhdHRyX2lkblwiOiBcIlwiXHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICB9LCBlcnJvciA9PiB7XHJcblxyXG4gICAgICAgIHRoaXMudG9hc3RyLmVycm9yKGVycm9yKTtcclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnRvYXN0ci5lcnJvcihcIk1hcHBpbmcgYXR0cmlidXRlIGlzIGVtcHR5IHBsZWFzZSByZXRyeS5cIik7XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgZ21hdGNoZWRDb3VudCA9IDA7XHJcbiAgZ3Jlc3VsdENvdW50ID0gMDtcclxuICBzZXRSb3dEYXRhTWFwcCgpIHtcclxuICAgIGlmICghdGhpcy5tYXBwaW5nc2tpcCkge1xyXG4gICAgICBsZXQgcm93TWF0Y2hDb3VudCA9IDA7XHJcbiAgICAgIHRoaXMuY2hhckhlYWRlckxpc3QgPSBbXTtcclxuICAgICAgZGVidWdnZXJcclxuICAgICAgdGhpcy5oZWFkZXJMaXN0LmZvckVhY2goaGRyID0+IHtcclxuXHJcbiAgICAgICAgbGV0IGF0dHIgPSB0aGlzLmhlYWRlckF0dHJpYnV0ZUR0bFtoZHJdLmF0dHIgfHwgJyc7XHJcbiAgICAgICAgbGV0IGF0dHJUeXBlID0gdGhpcy5oZWFkZXJBdHRyaWJ1dGVEdGxbaGRyXS5kdGFfdHlwIHx8ICcnO1xyXG4gICAgICAgIGxldCBpc0lnbm9yZSA9IHRoaXMuaGVhZGVyQXR0cmlidXRlRHRsW2hkcl0uaWdub3JlIHx8ICcnO1xyXG4gICAgICAgIGlmIChhdHRyICE9ICcnICYmIGlzSWdub3JlICE9ICdOJyAmJiBhdHRyVHlwZSA9PSAnYycpIHtcclxuICAgICAgICAgIGRlYnVnZ2VyXHJcbiAgICAgICAgICB2YXIgZGlzdGluY3RsaXN0ID0gQXJyYXkuZnJvbShuZXcgU2V0KHRoaXMuc2hlZXREYXRhLm1hcCgoaXRlbTogYW55KSA9PiBpdGVtW2hkcl0pKSk7XHJcbiAgICAgICAgICBkaXN0aW5jdGxpc3QgPSBkaXN0aW5jdGxpc3QuZmlsdGVyKGZ1bmN0aW9uIChlKSB7IHJldHVybiBlIH0pO1xyXG4gICAgICAgICAgaWYgKGRpc3RpbmN0bGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMucm93ZGlzdGluY3REYXRhTWFwW2F0dHJdID0gZGlzdGluY3RsaXN0O1xyXG4gICAgICAgICAgICByb3dNYXRjaENvdW50ID0gcm93TWF0Y2hDb3VudCArIGRpc3RpbmN0bGlzdC5sZW5ndGg7XHJcbiAgICAgICAgICAgIHRoaXMuZ21hdGNoZWRDb3VudCA9IHJvd01hdGNoQ291bnQ7XHJcbiAgICAgICAgICAgIHRoaXMuY2hhckhlYWRlckxpc3QucHVzaChoZHIpO1xyXG4gICAgICAgICAgICBsZXQgYXR0ckRldGFpbHMgPSB0aGlzLmF0dHJTdHJ1Y3R1cmVEdGwuZmluZChhdHRyZHRsID0+IGF0dHJkdGwuYXR0ciA9PSBhdHRyKSB8fCB7fTtcclxuICAgICAgICAgICAgdGhpcy5hdHRyaWJ1dGVEdGxNYXBbYXR0cl0gPSBhdHRyRGV0YWlscy5wcnBMaXN0IHx8IFtdO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcblxyXG5cclxuICAgICAgfSk7XHJcbiAgICAgIGxldCByZXFPYmogPSB7fTtcclxuICAgICAgcmVxT2JqWydmb3JtTm1lJ10gPSAnZmlsZVVwbG9hZCc7XHJcbiAgICAgIHJlcU9ialsnYXR0ck1hcCddID0gdGhpcy5yb3dkaXN0aW5jdERhdGFNYXA7XHJcbiAgICAgIGNvbnNvbGUubG9nKEpTT04uc3RyaW5naWZ5KHJlcU9iaikpO1xyXG4gICAgICB0aGlzLmhlYWRlcltcIm1ldGhvZFwiXSA9ICdsb2FkSGVhZGVyQXR0ckR0bCc7XHJcbiAgICAgIGxldCBvcHRpb25zID0ge1xyXG4gICAgICAgIG1ldGhvZDogdGhpcy5oZWFkZXJbXCJtZXRob2RcIl1cclxuICAgICAgfVxyXG4gICAgICB0aGlzLmNzLmxvYWRpRmlsZShyZXFPYmosb3B0aW9ucywgJ2ZpbGVVcGxvYWQvbG9hZCcpLnRoZW4oKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09ICdTVUNDRVNTJykge1xyXG4gICAgICAgICAgbGV0IHJlc3VsdCA9IHJlc3BvbnNlLnJlc3VsdDtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKHJlc3VsdCk7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhyb3dNYXRjaENvdW50KTtcclxuICAgICAgICAgIGRlYnVnZ2VyO1xyXG5cclxuICAgICAgICAgIHRoaXMucm93ZGF0YW1hcERldGFpbHMgPSByZXN1bHQuYXR0ckRldGFpbHMgfHwge307XHJcbiAgICAgICAgICB0aGlzLmdyZXN1bHRDb3VudCA9IHJlc3VsdC50b3RhbG1hdGNoO1xyXG4gICAgICAgICAgdGhpcy5zdGVwID0gMztcclxuICAgICAgICAgIGlmIChyb3dNYXRjaENvdW50ID09IHJlc3VsdC50b3RhbG1hdGNoKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc3RlcCA9IDQ7XHJcbiAgICAgICAgICAgIHRoaXMudXBsb2FkRmlsZSgpO1xyXG5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcihcInBsZWFzZSB2ZXJpZnkgZGF0YSBtYXBwaW5nLlwiKTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMudG9hc3RyLmVycm9yKFwic29tZXRoaW5nIGdvIHdyb25nIGluIHJvdyBkYXRhLlwiKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sIGVycm9yID0+IHtcclxuICAgICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcihlcnJvcik7XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zdGVwID0gNDtcclxuICAgICAgdGhpcy51cGxvYWRGaWxlKCk7XHJcbiAgICB9XHJcblxyXG4gIH1cclxuICBkdGxBdHRyO1xyXG4gIGR0bGF0dHJfaWRuO1xyXG4gIGR0bG9wdGlvbnZhbDtcclxuICBkdGxtYXNzYWdlO1xyXG4gIGNvbmZpcm1IZWFkZXJEZXRhaWxzTWFwcChhdHRyLCBhdHRyX2lkbiwgb3B0aW9udmFsKSB7XHJcbiAgICB0aGlzLmR0bEF0dHIgPSBhdHRyO1xyXG4gICAgdGhpcy5kdGxhdHRyX2lkbiA9IGF0dHJfaWRuO1xyXG4gICAgdGhpcy5kdGxvcHRpb252YWwgPSBvcHRpb252YWw7XHJcbiAgICBsZXQgdmFsID0gdGhpcy5yb3dkYXRhbWFwRGV0YWlsc1t0aGlzLmR0bEF0dHJdW3RoaXMuZHRsb3B0aW9udmFsXS52YWw7XHJcbiAgICBsZXQgYXR0cmlidXRlRHRsTGlzdCA9IHRoaXMuYXR0cmlidXRlRHRsTWFwW2F0dHJdO1xyXG4gICAgYXR0cmlidXRlRHRsTGlzdC5mb3JFYWNoKGVsZSA9PiB7XHJcblxyXG4gICAgICBpZiAoZWxlLnZhbCA9PSB2YWwpIHtcclxuICAgICAgICB0aGlzLmR0bG1hc3NhZ2UgPSB2YWwgKyBcIihcIiArIGVsZS5wcmludCArIFwiKVwiO1xyXG4gICAgICB9XHJcbiAgICB9KVxyXG5cclxuICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdidG5Db2Zpcm1tYXBkdGwnKS5jbGljaygpO1xyXG5cclxuICB9XHJcblxyXG4gIENhbmNlbEhlYWRlckRldGFpbHNNYXBwKCkge1xyXG4gICAgdGhpcy5yb3dkYXRhbWFwRGV0YWlsc1t0aGlzLmR0bEF0dHJdW3RoaXMuZHRsb3B0aW9udmFsXS52YWwgPSBcIlwiO1xyXG4gIH1cclxuICBzZXRIZWFkZXJEZXRhaWxzTWFwcCgpIHtcclxuICAgIGxldCBhdHRyRHRsVmFsID0gdGhpcy5yb3dkYXRhbWFwRGV0YWlsc1t0aGlzLmR0bEF0dHJdW3RoaXMuZHRsb3B0aW9udmFsXS52YWwgfHwgJyc7XHJcbiAgICBpZiAoYXR0ckR0bFZhbCAhPSAnJykge1xyXG4gICAgICBsZXQgcmVxT2JqID0ge307XHJcbiAgICAgIHJlcU9ialsnZm9ybU5tZSddID0gJ2ZpbGVVcGxvYWQnO1xyXG4gICAgICByZXFPYmpbJ29wdGlvbmFWYWwnXSA9IHRoaXMuZHRsb3B0aW9udmFsXHJcbiAgICAgIHJlcU9ialsnYXR0cl9pZG4nXSA9IHRoaXMuZHRsYXR0cl9pZG47XHJcbiAgICAgIHJlcU9ialsnYXR0ciddID0gdGhpcy5kdGxBdHRyO1xyXG4gICAgICByZXFPYmpbJ2F0dHJWYWwnXSA9IGF0dHJEdGxWYWw7XHJcbiAgICAgIHRoaXMuaGVhZGVyW1wibWV0aG9kXCJdID0gJ2FkZERldGFpbEF0dHInO1xyXG4gICAgICBjb25zb2xlLmxvZyhKU09OLnN0cmluZ2lmeShyZXFPYmopKTtcclxuICAgICAgbGV0IG9wdGlvbnMgPSB7XHJcbiAgICAgICAgbWV0aG9kOiB0aGlzLmhlYWRlclsnbWV0aG9kJ11cclxuICAgICAgfVxyXG4gICAgICB0aGlzLmNzLmxvYWRpRmlsZShyZXFPYmosIG9wdGlvbnMsICdmaWxlVXBsb2FkL2xvYWQnKS50aGVuKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5sb2coXCJhZGREZXRhaWxBdHRyXCIsIHJlc3BvbnNlKTtcclxuICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09ICdTVUNDRVNTJykge1xyXG4gICAgICAgICAgdGhpcy5ncmVzdWx0Q291bnQrKztcclxuICAgICAgICAgIGxldCByZXN1bHQgPSByZXNwb25zZS5yZXN1bHQgfHwge307XHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhyZXN1bHQuYXR0ckRldGFpbHMpO1xyXG4gICAgICAgICAgbGV0IGF0dHJEZXRhaWxzID0gcmVzdWx0LmF0dHJEZXRhaWxzIHx8IHt9XHJcbiAgICAgICAgICB0aGlzLnJvd2RhdGFtYXBEZXRhaWxzW3RoaXMuZHRsQXR0cl1bdGhpcy5kdGxvcHRpb252YWxdID0gYXR0ckRldGFpbHNbdGhpcy5kdGxvcHRpb252YWxdO1xyXG4gICAgICAgICAgdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICB9LCBlcnJvciA9PiB7XHJcblxyXG4gICAgICAgIHRoaXMudG9hc3RyLmVycm9yKGVycm9yKTtcclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnRvYXN0ci5lcnJvcihcIk1hcHBpbmcgYXR0cmlidXRlIGlzIGVtcHR5IHBsZWFzZSByZXRyeS5cIik7XHJcbiAgICB9XHJcblxyXG5cclxuICB9XHJcblxyXG5cclxuICBvblN1Ym1pdChmb3JtVmFsKSB7XHJcbiAgICB2YXIgdCA9IE9iamVjdC5rZXlzKGZvcm1WYWwuZm9ybS5jb250cm9scykuZm9yRWFjaChmaWVsZCA9PiB7XHJcbiAgICAgIGNvbnN0IGNvbnRyb2wgPSBmb3JtVmFsLmZvcm0uZ2V0KGZpZWxkKTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5zYXZlRmlsZU9wdGlvbihmb3JtVmFsLnZhbHVlKTtcclxuICB9XHJcbiAgc2F2ZUZpbGVPcHRpb24oZnJtdmFscykge1xyXG4gICAgdGhpcy5zcGlubmVyU2VydmljZS5zaG93KCk7XHJcbiAgICBsZXQgcmVxT2JqID0ge307XHJcbiAgICByZXFPYmogPSB7IC4uLmZybXZhbHMsIGNvbHVtbl9mb3JtYXQ6IHRoaXMuY29sRm9ybWF0ZSwgaWdub3JlX2NvbHVtbjogdGhpcy5pZ25vcmVGb3JtYXRlIH07XHJcbiAgICByZXFPYmpbJ2Zvcm1ObWUnXSA9ICdmaWxlVXBsb2FkJztcclxuICAgIGNvbnNvbGUubG9nKEpTT04uc3RyaW5naWZ5KHJlcU9iaikpO1xyXG4gICAgdGhpcy5oZWFkZXJbXCJtZXRob2RcIl0gPSAnYWRkRmlsZU9wdGlvbic7XHJcbiAgICBsZXQgb3B0aW9ucyA9IHtcclxuICAgICAgbWV0aG9kOiB0aGlzLmhlYWRlcltcIm1ldGhvZFwiXVxyXG4gICAgfVxyXG4gICAgdGhpcy5jcy5sb2FkaUZpbGUocmVxT2JqLCBvcHRpb25zLCAnZmlsZVVwbG9hZC9sb2FkJykudGhlbigocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09ICdTVUNDRVNTJykge1xyXG4gICAgICAgIGRlYnVnZ2VyXHJcbiAgICAgICAgbGV0IHJlc3VsdCA9IHJlc3BvbnNlLnJlc3VsdCB8fCB7fTtcclxuICAgICAgICB0aGlzLmZpbGVPcHRpb25zTGlzdCA9IHJlc3VsdC5maWxlT3B0aW9uc0xpc3Q7XHJcbiAgICAgICAgdGhpcy5maWxlVHlwZSA9IHJlc3VsdC5maWxlX2lkbjtcclxuICAgICAgICB0aGlzLlZhbGlkYXRlRmlsZUhlYWRlck1hcHBpbmcoJ04nKTtcclxuICAgICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgICB0aGlzLnRvYXN0ci5zdWNjZXNzKHJlc3BvbnNlLm1lc3NhZ2UpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgfSwgZXJyb3IgPT4ge1xyXG4gICAgICB0aGlzLnRvYXN0ci5lcnJvcihlcnJvcik7XHJcbiAgICB9KTtcclxuICB9XHJcbiAgYWRkRmlsZUxvZyhmaWxlSWRuKSB7XHJcbiAgICBkZWJ1Z2dlclxyXG4gICAgbGV0IHJlcU9iaiA9IHt9O1xyXG4gICAgcmVxT2JqWydmb3JtTm1lJ10gPSAnZmlsZVVwbG9hZCc7XHJcbiAgICByZXFPYmpbJ2ZpbGVfaWRuJ10gPSBmaWxlSWRuO1xyXG4gICAgcmVxT2JqWydmaWxlX3N0YXR1cyddID0gXCJIZWFkZXIgSW5zZXJ0ZWRcIjtcclxuICAgIHJlcU9ialsndmFsaWRhdGlvbl9yZW1hcmtzJ10gPSBcIkhlYWRlciB2YWxpZGF0ZWRcIjtcclxuICAgIHJlcU9ialsnaGVhZGVyX3JvdyddID0gdGhpcy5hbGxjb2xzO1xyXG4gICAgcmVxT2JqWydoZWFkZXJfYXR0cl9yb3cnXSA9IHRoaXMuY29sRm9ybWF0ZTtcclxuICAgIHRoaXMuaGVhZGVyW1wibWV0aG9kXCJdID0gJ2FkZEZpbGVMb2cnO1xyXG4gICAgbGV0IG9wdGlvbnMgPSB7XHJcbiAgICAgIG1ldGhvZDogdGhpcy5oZWFkZXJbXCJtZXRob2RcIl1cclxuICAgIH1cclxuICAgIHRoaXMuY3MubG9hZGlGaWxlKHJlcU9iaiwgb3B0aW9ucywgJ2ZpbGVVcGxvYWQvbG9hZCcpLnRoZW4oKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PSAnU1VDQ0VTUycpIHtcclxuICAgICAgICBkZWJ1Z2dlclxyXG4gICAgICAgIGxldCByZXN1bHQgPSByZXNwb25zZS5yZXN1bHQgfHwge307XHJcbiAgICAgICAgdGhpcy5maWxlTG9nSWRuID0gcmVzdWx0LmZpbGVfbG9nX2lkbjtcclxuICAgICAgICBjb25zb2xlLmxvZygnYWRkRmlsZUxvZycpXHJcbiAgICAgICAgdGhpcy5zZXRSb3dEYXRhTWFwcCgpO1xyXG4gICAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICAgIHRoaXMudG9hc3RyLnN1Y2Nlc3MoXCJIZWFkZXIgdmFsaWRhdGVkIHN1Y2Nlc3NmdWxseVwiKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgIH0sIGVycm9yID0+IHtcclxuICAgICAgdGhpcy50b2FzdHIuZXJyb3IoZXJyb3IpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBWYWxpZGF0ZUZpbGVIZWFkZXJNYXBwaW5nKGZvcm1hdFNhdmUpIHtcclxuICAgIHRoaXMuc3Bpbm5lclNlcnZpY2Uuc2hvdygpO1xyXG5cclxuICAgIHRoaXMuc2hvdyA9IHRydWU7XHJcbiAgICB0aGlzLnN0ZXBNc2cgPSAnSGVhZGVyIHZlcmlmaWNhdGlvbiBpbiBwcm9jZXNzIC4uLic7XHJcbiAgICB0aGlzLmNvbEZvcm1hdGUgPSBbXTtcclxuICAgIHRoaXMuaWdub3JlRm9ybWF0ZSA9IFtdO1xyXG4gICAgdGhpcy5hbGxjb2xzID0gW107XHJcbiAgICBsZXQgaXNWYWxpZGF0ZSA9IHRydWU7XHJcbiAgICB0aGlzLmhlYWRlckxpc3QuZm9yRWFjaChoZHIgPT4ge1xyXG4gICAgICBsZXQgaGRyRHRsID0gdGhpcy5oZWFkZXJBdHRyaWJ1dGVEdGxbaGRyXSB8fCAnJ1xyXG4gICAgICBpZiAoaGRyRHRsLmF0dHIgPT0gJycgJiYgaGRyRHRsLmlnbm9yZSAhPSAnWScpIHtcclxuICAgICAgICBpc1ZhbGlkYXRlID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGhkckR0bC5hdHRyICE9ICcnICYmIGhkckR0bC5pZ25vcmUgIT0gJ04nKSB7XHJcbiAgICAgICAgdGhpcy5jb2xGb3JtYXRlLnB1c2goaGRyRHRsLmF0dHIpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChoZHJEdGwuaWdub3JlID09ICdZJykge1xyXG4gICAgICAgIHRoaXMuaWdub3JlRm9ybWF0ZS5wdXNoKGhkcik7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5hbGxjb2xzLnB1c2goaGRyKTtcclxuICAgIH0pO1xyXG5cclxuICAgIGlmIChpc1ZhbGlkYXRlICYmICh0aGlzLmZpbGVUeXBlID09IG51bGwgfHwgdGhpcy5maWxlVHlwZSA9PSB1bmRlZmluZWQgfHwgdGhpcy5maWxlVHlwZSA9PSBcIlwiKSkge1xyXG4gICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuXHJcbiAgICAgIHRoaXMuc3RlcE1zZyA9IFwiXCI7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdidG5maWxlVXBsb2FkTW9kYWwnKS5jbGljaygpO1xyXG4gICAgICB0aGlzLnN0ZXAgPSAyO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9IGVsc2Uge1xyXG5cclxuICAgICAgaWYgKGlzVmFsaWRhdGUpIHtcclxuICAgICAgICBpZiAoZm9ybWF0U2F2ZSA9PSAnWScpIHtcclxuICAgICAgICAgIHRoaXMudXBkYXRlZmlsZU9wdGlvbigpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmFkZEZpbGVMb2codGhpcy5maWxlVHlwZSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IoXCJQbGVhc2Ugc3BlY2lmeSBtYXBwaW5nIG9yIG1hcmtlIGFzIGlnbm9yZSBcIik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMuc2hvdyA9IGZhbHNlO1xyXG5cclxuXHJcbiAgfVxyXG4gIGhkcklkbjtcclxuICB1cGRhdGVmaWxlT3B0aW9uKCkge1xyXG4gICAgbGV0IHJlcU9iaiA9IHt9O1xyXG4gICAgcmVxT2JqWydmb3JtTm1lJ10gPSAnZmlsZVVwbG9hZCc7XHJcbiAgICByZXFPYmpbJ2ZpbGVJZG4nXSA9IHRoaXMuZmlsZVR5cGU7XHJcbiAgICByZXFPYmpbJ2NvbHVtbl9mb3JtYXQnXSA9IHRoaXMuY29sRm9ybWF0ZTtcclxuICAgIHJlcU9ialsnaWdub3JlX2NvbHVtbiddID0gdGhpcy5pZ25vcmVGb3JtYXRlO1xyXG5cclxuICAgIHRoaXMuaGVhZGVyW1wibWV0aG9kXCJdID0gJ3VwZGF0ZUNvbHVtbkZvcm1hdCc7XHJcbiAgICBsZXQgb3B0aW9ucyA9IHtcclxuICAgICAgbWV0aG9kOiB0aGlzLmhlYWRlcltcIm1ldGhvZFwiXVxyXG4gICAgfVxyXG4gICAgY29uc29sZS5sb2coSlNPTi5zdHJpbmdpZnkocmVxT2JqKSk7XHJcbiAgICB0aGlzLmNzLmxvYWRpRmlsZShyZXFPYmosIG9wdGlvbnMsICdmaWxlVXBsb2FkL2xvYWQnKS50aGVuKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT0gJ1NVQ0NFU1MnKSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ3VwZGF0ZWZpbGVPcHRpb24nKVxyXG4gICAgICB9XHJcbiAgICB9LCBlcnJvciA9PiB7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHVwbG9hZEZpbGUoKSB7XHJcbiAgICB0aGlzLmRhdGVGb3JtYXQgPSB0aGlzLmRhdGVGb3JtYXQgfHwgJ2RkL21tL3l5JztcclxuICAgIHRoaXMuZGVsaW0gPSB0aGlzLmRlbGltIHx8ICcvJztcclxuICAgIHRoaXMuc2hvdyA9IHRydWU7XHJcbiAgICBsZXQgZGF0ZVZhbGlkID0gdHJ1ZTtcclxuICAgIGxldCBtYXNzYWdlID0gXCJcIjtcclxuXHJcbiAgICBpZiAoIXRoaXMubWFwcGluZ3NraXApIHtcclxuICAgICAgdGhpcy5zdGVwTXNnID0gXCJEYXRhIHZlcmlmaWNhdGlvbiBpbiBwcm9jZXNzIC4uLlwiO1xyXG4gICAgICB0aGlzLmhlYWRlckxpc3QuZm9yRWFjaChoZHIgPT4ge1xyXG4gICAgICAgIGRlYnVnZ2VyXHJcbiAgICAgICAgbGV0IGF0dHIgPSB0aGlzLmhlYWRlckF0dHJpYnV0ZUR0bFtoZHJdLmF0dHIgfHwgJyc7XHJcbiAgICAgICAgbGV0IGF0dHJUeXBlID0gdGhpcy5oZWFkZXJBdHRyaWJ1dGVEdGxbaGRyXS5kdGFfdHlwIHx8ICcnO1xyXG4gICAgICAgIGxldCBpc0lnbm9yZSA9IHRoaXMuaGVhZGVyQXR0cmlidXRlRHRsW2hkcl0uaWdub3JlIHx8ICcnO1xyXG4gICAgICAgIGlmIChpc0lnbm9yZSA9PSAnWScpIHtcclxuICAgICAgICAgIHRoaXMubWFwcFNoZWV0RGF0YS5tYXAoKHJvd0RhdGEsIGkpID0+IHtcclxuICAgICAgICAgICAgZGVsZXRlIHRoaXMubWFwcFNoZWV0RGF0YVtpXVtoZHJdO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGlmIChhdHRyVHlwZSA9PSAnYycpIHtcclxuICAgICAgICAgICAgdGhpcy5tYXBwU2hlZXREYXRhLm1hcCgocm93RGF0YSwgaSkgPT4ge1xyXG4gICAgICAgICAgICAgIGlmICh0aGlzLmNoYXJIZWFkZXJMaXN0LmluZGV4T2YoaGRyKSAhPSAtMSkge1xyXG4gICAgICAgICAgICAgICAgbGV0IGF0dHJkdGxWYWwgPSByb3dEYXRhW2hkcl0gfHwgJyc7XHJcbiAgICAgICAgICAgICAgICBpZiAoYXR0cmR0bFZhbCAhPSAnJykge1xyXG5cclxuICAgICAgICAgICAgICAgICAgbGV0IGF0dHJEdGxNYXBWYWwgPSB0aGlzLnJvd2RhdGFtYXBEZXRhaWxzW2F0dHJdW2F0dHJkdGxWYWxdLnNydDtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5tYXBwU2hlZXREYXRhW2ldW2F0dHJdID0gYXR0ckR0bE1hcFZhbC50b1N0cmluZygpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKGF0dHIgIT0gaGRyKVxyXG4gICAgICAgICAgICAgICAgICBkZWxldGUgdGhpcy5tYXBwU2hlZXREYXRhW2ldW2hkcl1cclxuICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICB9IGVsc2UgaWYgKGF0dHJUeXBlID09ICduJykge1xyXG4gICAgICAgICAgICB0aGlzLm1hcHBTaGVldERhdGEubWFwKChyb3dEYXRhLCBpKSA9PiB7XHJcbiAgICAgICAgICAgICAgbGV0IGF0dHJkdGxWYWwgPSByb3dEYXRhW2hkcl0gfHwgJyc7XHJcbiAgICAgICAgICAgICAgaWYgKGF0dHJkdGxWYWwgIT0gJycgJiYgYXR0cmR0bFZhbCkge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ2F0dHJkdGxWYWwnLGF0dHJkdGxWYWwpXHJcbiAgICAgICAgICAgICAgICAvLyBhdHRyZHRsVmFsID0gYXR0cmR0bFZhbC5yZXBsYWNlKC9bXjAtOS4tXS9nLCBcIlwiKTtcclxuICAgICAgICAgICAgICAgIGF0dHJkdGxWYWwgPSBwYXJzZUZsb2F0KGF0dHJkdGxWYWwudG9TdHJpbmcoKS5yZXBsYWNlKC9bXjAtOS4tXS9nLCBcIlwiKSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm1hcHBTaGVldERhdGFbaV1bYXR0cl0gPSBhdHRyZHRsVmFsLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGlmIChhdHRyICE9IGhkcilcclxuICAgICAgICAgICAgICAgIGRlbGV0ZSB0aGlzLm1hcHBTaGVldERhdGFbaV1baGRyXVxyXG5cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKGF0dHJUeXBlID09ICdkJykge1xyXG5cclxuICAgICAgICAgICAgdGhpcy5tYXBwU2hlZXREYXRhLm1hcCgocm93RGF0YSwgaSkgPT4ge1xyXG4gICAgICAgICAgICAgIGRlYnVnZ2VyXHJcbiAgICAgICAgICAgICAgbGV0IGF0dHJkdGxWYWwgPSByb3dEYXRhW2hkcl0gfHwgJyc7XHJcbiAgICAgICAgICAgICAgbGV0IGR0RnJtID0gdGhpcy5kYXRlRm9ybWF0TWFwW2hkcl0gfHwgJ2RkL21tL3l5JztcclxuICAgICAgICAgICAgICBpZiAoYXR0cmR0bFZhbCAhPSAnJylcclxuICAgICAgICAgICAgICAgIGF0dHJkdGxWYWwgPSB0aGlzLmNzLmRhdGVWYWxpZGF0aW9uKGF0dHJkdGxWYWwsIGR0RnJtKTtcclxuICAgICAgICAgICAgICBpZiAoYXR0cmR0bFZhbCA9PSAnaW52YWlsZCcpIHtcclxuICAgICAgICAgICAgICAgIGRhdGVWYWxpZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgbWFzc2FnZSA9IFwiUGxlYXNlIGNoZWNrIERhdGUgOlwiICsgcm93RGF0YVtoZHJdICsgXCIgRGF0ZSBGb3JtYXQgOlwiICsgZHRGcm07XHJcbiAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICB0aGlzLm1hcHBTaGVldERhdGFbaV1bYXR0cl0gPSBhdHRyZHRsVmFsLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgICAgICAgaWYgKGF0dHIgIT0gaGRyKVxyXG4gICAgICAgICAgICAgICAgZGVsZXRlIHRoaXMubWFwcFNoZWV0RGF0YVtpXVtoZHJdXHJcblxyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICB9IGVsc2UgaWYgKGF0dHJUeXBlID09ICd0Jykge1xyXG4gICAgICAgICAgICB0aGlzLm1hcHBTaGVldERhdGEubWFwKChyb3dEYXRhLCBpKSA9PiB7XHJcbiAgICAgICAgICAgICAgbGV0IGF0dHJkdGxWYWwgPSByb3dEYXRhW2hkcl0gfHwgJyc7XHJcblxyXG4gICAgICAgICAgICAgIHRoaXMubWFwcFNoZWV0RGF0YVtpXVthdHRyXSA9IGF0dHJkdGxWYWwudG9TdHJpbmcoKTtcclxuICAgICAgICAgICAgICBpZiAoYXR0ciAhPSBoZHIpXHJcbiAgICAgICAgICAgICAgICBkZWxldGUgdGhpcy5tYXBwU2hlZXREYXRhW2ldW2hkcl1cclxuXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBpZiAoZGF0ZVZhbGlkKSB7XHJcbiAgICAgIGxldCByZXFPYmogPSB7fTtcclxuICAgICAgcmVxT2JqWydmb3JtTm1lJ10gPSAnZmlsZVVwbG9hZCc7Ly90aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtc1snZnJtbmFtZSddO1xyXG4gICAgICByZXFPYmpbJ2ZpbGVfbG9nX2lkbiddID0gdGhpcy5maWxlTG9nSWRuO1xyXG4gICAgICByZXFPYmpbJ2F0dHJfZGF0YSddID0gdGhpcy5tYXBwU2hlZXREYXRhO1xyXG4gICAgICByZXFPYmpbJ2luX2RhdGEnXSA9IHRoaXMuc2hlZXREYXRhO1xyXG4gICAgICByZXFPYmpbJ2RhdGVmb3JtYXQnXSA9IHRoaXMuZGF0ZUZvcm1hdE1hcDtcclxuICAgICAgdGhpcy5oZWFkZXJbXCJtZXRob2RcIl0gPSAnZmlsZVVwbG9hZCc7XHJcbiAgICAgIGxldCB1cmwgPSBcImZpbGVVcGxvYWQvbG9hZFwiO1xyXG4gICAgICBpZiAodGhpcy5tZGwgPT0gJ2lud2FyZCcpIHtcclxuICAgICAgICB1cmwgPSAnaW53YXJkL2xvYWRGaWxlJztcclxuICAgICAgICByZXFPYmpbJ2lud2FyZF9pZG4nXSA9IHRoaXMuaW53YXJkX2lkbjtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gY29uc29sZS5sb2cocmVxT2JqKTtcclxuICAgICAgY29uc29sZS5sb2coSlNPTi5zdHJpbmdpZnkocmVxT2JqKSk7XHJcbiAgICAgIC8vIGNvbnNvbGUubG9nKHRoaXMuaGVhZGVyKTtcclxuICAgICAgbGV0IG9wdGlvbnMgPSB7XHJcbiAgICAgICAgbWV0aG9kOiB0aGlzLmhlYWRlcltcIm1ldGhvZFwiXVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuY3MubG9hZGlGaWxlKHJlcU9iaiwgb3B0aW9ucywgdXJsKS50aGVuKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PSAnU1VDQ0VTUycpIHtcclxuICAgICAgICAgIGxldCByZXN1bHQgPSByZXNwb25zZS5yZXN1bHQgfHwge307XHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhyZXN1bHQpO1xyXG4gICAgICAgICAgdGhpcy5zaG93ID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnN0ZXAgPSA0O1xyXG4gICAgICAgICAgdGhpcy5maWxlTG9nSWRuID0gcmVzdWx0LmZpbGVfbG9nX2lkbjtcclxuICAgICAgICAgIHRoaXMuaGRySWRuID0gcmVzdWx0LmhkcklkbjtcclxuICAgICAgICAgIHRoaXMuZ2V0UHJvZ3Jlc3NGaWxlKHRoaXMuZmlsZUxvZ0lkbik7XHJcbiAgICAgICAgICB0aGlzLmxhYmxlRmlsZSA9IFwiRmlsZSBTZXF1ZW5jZSBOby4gXCIgKyB0aGlzLmZpbGVMb2dJZG4gKyBcIiBVcGxvYWRpbmcgaW4gcHJvZ3Jlc3MuLi5cIjtcclxuICAgICAgICAgIC8vIHNldCBmaWxlIGlkIHRvIGxvY2FsIHN0b3JhZ2VcclxuICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCd1cGxvYWRlZEZpbGVJZCcsIHJlc3VsdC5maWxlX2xvZ19pZG4pO1xyXG5cclxuICAgICAgICAgIHRoaXMubGFibGUgPSBcIlByaWNpbmcgU2VxdWVuY2UgTm8uIFwiICsgdGhpcy5oZHJJZG4gKyBcIiBQcmljZSBjYWxjdWxhdGlvbnMgaW4gcHJvZ3Jlc3MuLi5cIjtcclxuXHJcbiAgICAgICAgICB0aGlzLmdldFByb2dyZXNzUHJpY2UodGhpcy5oZHJJZG4pO1xyXG5cclxuICAgICAgICAgIHRoaXMudG9hc3RyLnN1Y2Nlc3MocmVzcG9uc2UubWVzc2FnZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuc2hvdyA9IGZhbHNlO1xyXG5cclxuICAgICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgfSwgZXJyb3IgPT4ge1xyXG4gICAgICAgIHRoaXMuc2hvdyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMudG9hc3RyLmVycm9yKGVycm9yKTtcclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLm5nT25Jbml0KCk7XHJcbiAgICAgIHRoaXMudG9hc3RyLmVycm9yKG1hc3NhZ2UpO1xyXG4gICAgfVxyXG4gICAgY29uc29sZS5sb2coXCJtYXBwU2hlZXREYXRhXCIsIEpTT04uc3RyaW5naWZ5KHRoaXMubWFwcFNoZWV0RGF0YSkpO1xyXG4gICAgY29uc29sZS5sb2coXCJ0aGlzLnNoZWV0RGF0YVwiLCBKU09OLnN0cmluZ2lmeSh0aGlzLnNoZWV0RGF0YSkpO1xyXG4gIH1cclxuXHJcbiAgY2hhbmdlTWFwcGluZyhoZHJPYmosIGhkciwgYXR0cikge1xyXG4gICAgdGhpcy5oZWFkZXJBdHRyaWJ1dGVEdGxbaGRyXS5pZ25vcmUgPSAnWSc7XHJcbiAgICB0aGlzLmhlYWRlckF0dHJpYnV0ZUR0bFtoZHJdLmF0dHIgPSAnJztcclxuICAgIHRoaXMucmVtb3ZlQXR0ck9wdFZhbChhdHRyLCBoZHIpO1xyXG4gIH1cclxuXHJcblxyXG4gIHJlbW92ZUF0dHJPcHRWYWwoYXR0ciwgb3B0aW9uYVZhbCkge1xyXG4gICAgbGV0IHJlcU9iaiA9IHt9O1xyXG4gICAgcmVxT2JqWydmb3JtTm1lJ10gPSAnZmlsZVVwbG9hZCc7XHJcbiAgICByZXFPYmpbJ2F0dHInXSA9IGF0dHI7XHJcbiAgICByZXFPYmpbJ29wdGlvbmFWYWwnXSA9IG9wdGlvbmFWYWw7XHJcbiAgICBjb25zb2xlLmxvZyhKU09OLnN0cmluZ2lmeShyZXFPYmopKTtcclxuICAgIHRoaXMuaGVhZGVyW1wibWV0aG9kXCJdID0gJ3JlbW92ZUF0dHJPcHRWYWwnO1xyXG4gICAgbGV0IG9wdGlvbnMgPSB7XHJcbiAgICAgIG1ldGhvZDogdGhpcy5oZWFkZXJbXCJtZXRob2RcIl0gXHJcbiAgICB9XHJcbiAgICB0aGlzLmNzLmxvYWRpRmlsZShyZXFPYmosIG9wdGlvbnMsICdmaWxlVXBsb2FkL2xvYWQnKS50aGVuKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT0gJ1NVQ0NFU1MnKSB7XHJcbiAgICAgICAgdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICAgICAgdGhpcy50b2FzdHIuc3VjY2VzcyhyZXNwb25zZS5tZXNzYWdlKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgIH0sIGVycm9yID0+IHtcclxuICAgICAgdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICAgIHRoaXMudG9hc3RyLmVycm9yKGVycm9yKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcblxyXG4gIHJlbW92ZURldGFpbEF0dHJPcHRWYWwoYXR0cklkbiwgb3B0aW9uYVZhbCwgdmFsLCBoZHJBdHRyKSB7XHJcbiAgICB0aGlzLnJvd2RhdGFtYXBEZXRhaWxzW2hkckF0dHJdW29wdGlvbmFWYWxdLnZhbCA9ICcnO1xyXG4gICAgbGV0IHJlcU9iaiA9IHt9O1xyXG4gICAgcmVxT2JqWydmb3JtTm1lJ10gPSAnZmlsZVVwbG9hZCc7XHJcbiAgICByZXFPYmpbJ2F0dHJWYWwnXSA9IHZhbDtcclxuICAgIHJlcU9ialsnb3B0aW9uYVZhbCddID0gb3B0aW9uYVZhbDtcclxuICAgIHJlcU9ialsnYXR0cl9pZG4nXSA9IGF0dHJJZG47XHJcbiAgICBjb25zb2xlLmxvZyhKU09OLnN0cmluZ2lmeShyZXFPYmopKTtcclxuICAgIHRoaXMuaGVhZGVyW1wibWV0aG9kXCJdID0gJ3JlbW92ZUF0dHJPcHRWYWwnO1xyXG4gICAgbGV0IG9wdGlvbnMgPSB7XHJcbiAgICAgIG1ldGhvZDogdGhpcy5oZWFkZXJbXCJtZXRob2RcIl0gXHJcbiAgICB9IFxyXG4gICAgdGhpcy5jcy5sb2FkaUZpbGUocmVxT2JqLCBvcHRpb25zLCAnZmlsZVVwbG9hZC9sb2FkJykudGhlbigocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09ICdTVUNDRVNTJykge1xyXG4gICAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICAgIHRoaXMudG9hc3RyLnN1Y2Nlc3MocmVzcG9uc2UubWVzc2FnZSk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICB9LCBlcnJvciA9PiB7XHJcbiAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICB0aGlzLnRvYXN0ci5lcnJvcihlcnJvcik7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG4gIHN0dHNGaWxlID0ge31cclxuICBnZXRQcm9ncmVzc0ZpbGUoZmlsZUxvZ0lkbikge1xyXG4gICAgbGV0IHJlcU9iaiA9IHt9O1xyXG4gICAgcmVxT2JqWydmb3JtTm1lJ10gPSAnZmlsZVVwbG9hZCc7XHJcbiAgICByZXFPYmpbJ2ZpbGVfbG9nX2lkbiddID0gZmlsZUxvZ0lkbjsvL3RoaXMuZmlsZUxvZ0lkbjtcclxuICAgIGNvbnNvbGUubG9nKEpTT04uc3RyaW5naWZ5KHJlcU9iaikpO1xyXG4gICAgdGhpcy5oZWFkZXJbXCJtZXRob2RcIl0gPSAnZ2V0RmlsZUxvZ1N0YXR1cyc7XHJcbiAgICBsZXQgb3B0aW9ucyA9IHtcclxuICAgICAgbWV0aG9kOiB0aGlzLmhlYWRlcltcIm1ldGhvZFwiXSBcclxuICAgIH1cclxuICAgIHRoaXMuY3MubG9hZGlGaWxlKHJlcU9iaiwgb3B0aW9ucywgJ2ZpbGVVcGxvYWQvbG9hZCcpLnRoZW4oKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PSAnU1VDQ0VTUycpIHtcclxuICAgICAgICB0aGlzLmNsaWNrZWQgPSB0cnVlO1xyXG4gICAgICAgIGxldCByZXN1bHQgPSByZXNwb25zZS5yZXN1bHQgfHwge307XHJcbiAgICAgICAgY29uc29sZS5sb2cocmVzdWx0KTtcclxuICAgICAgICB0aGlzLnN0dHNGaWxlWydDJ10gPSByZXN1bHRbJ0MnXTtcclxuICAgICAgICB0aGlzLnN0dHNGaWxlWydQJ10gPSByZXN1bHRbJ1AnXTtcclxuICAgICAgICB0aGlzLnN0dHNGaWxlWydFJ10gPSByZXN1bHRbJ0UnXTtcclxuICAgICAgICB0aGlzLnN0dHNGaWxlWydUJ10gPSByZXN1bHRbJ1QnXTtcclxuICAgICAgICB0aGlzLnN0dHNGaWxlWydJJ10gPSByZXN1bHRbJ0knXTtcclxuICAgICAgICB0aGlzLnN0ZXAgPSA0O1xyXG4gICAgICAgIHRoaXMudG90UHJvZ3Jlc3NGaWxlID0gTWF0aC5jZWlsKHBhcnNlRmxvYXQocmVzdWx0WydDJ10pICogMTAwIC8gcGFyc2VGbG9hdChyZXN1bHRbJ1QnXSkpO1xyXG4gICAgICAgIHRoaXMucmVjYWxsRmlsZShmaWxlTG9nSWRuKTtcclxuICAgICAgICBjb25zb2xlLmxvZyh0aGlzLnRvdFByb2dyZXNzKTtcclxuICAgICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgICAvLyB0aGlzLmZsYXNoTWVzc2FnZXNTZXJ2aWNlLnNob3cocmVzcG9uc2UubWVzc2FnZSwgeyBjc3NDbGFzczogJ2FsZXJ0LXN1Y2Nlc3MnLCB0aW1lb3V0OiAzMDAwIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgfSwgZXJyb3IgPT4ge1xyXG4gICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgdGhpcy50b2FzdHIuZXJyb3IoZXJyb3IpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG4gIC8vIGNoZWNrVXBsb2FkU3R0KCkge1xyXG4gIC8vICAgdGhpcy5zcGlubmVyU2VydmljZS5zaG93KCk7XHJcbiAgLy8gICBsZXQgcmVxT2JqID0ge307XHJcbiAgLy8gICByZXFPYmpbJ2Zvcm1ObWUnXSA9IHRoaXMucm91dGUuc25hcHNob3QucGFyYW1zWydmcm1uYW1lJ107XHJcbiAgLy8gICByZXFPYmpbJ2ZpbGVfbG9nX2lkbiddID0gdGhpcy5maWxlTG9nSWRuO1xyXG4gIC8vICAgY29uc29sZS5sb2coSlNPTi5zdHJpbmdpZnkocmVxT2JqKSk7XHJcbiAgLy8gICB0aGlzLnVzLmRhdGEocmVxT2JqLCAnZ2V0RmlsZUxvZ1N0YXR1cycsICdmaWxlVXBsb2FkL2xvYWQnKS5zdWJzY3JpYmUocmVzcG9uc2UgPT4ge1xyXG4gIC8vICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09ICdTVUNDRVNTJykge1xyXG4gIC8vICAgICAgIHRoaXMuY2xpY2tlZCA9IHRydWU7XHJcbiAgLy8gICAgICAgbGV0IHJlc3VsdCA9IHJlc3BvbnNlLnJlc3VsdCB8fCB7fTtcclxuICAvLyAgICAgICBjb25zb2xlLmxvZyhyZXN1bHQpO1xyXG4gIC8vICAgICAgIHRoaXMuc3R0c1snQyddID0gcmVzdWx0WydDJ107XHJcbiAgLy8gICAgICAgdGhpcy5zdHRzWydQJ10gPSByZXN1bHRbJ1AnXTtcclxuICAvLyAgICAgICB0aGlzLnN0dHNbJ0UnXSA9IHJlc3VsdFsnRSddO1xyXG4gIC8vICAgICAgIHRoaXMuc3R0c1snVCddID0gcmVzdWx0WydUJ107XHJcbiAgLy8gICAgICAgdGhpcy5zdGVwID0gNDtcclxuICAvLyAgICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAvLyAgICAgICB0aGlzLmZsYXNoTWVzc2FnZXNTZXJ2aWNlLnNob3cocmVzcG9uc2UubWVzc2FnZSwgeyBjc3NDbGFzczogJ2FsZXJ0LXN1Y2Nlc3MnLCB0aW1lb3V0OiAzMDAwIH0pO1xyXG4gIC8vICAgICB9XHJcbiAgLy8gICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gIC8vICAgfSwgZXJyb3IgPT4ge1xyXG4gIC8vICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAvLyAgICAgdGhpcy5mbGFzaE1lc3NhZ2VzU2VydmljZS5zaG93KGVycm9yLCB7IGNzc0NsYXNzOiAnYWxlcnQtZGFuZ2VyJywgdGltZW91dDogMzAwMCB9KTtcclxuICAvLyAgIH0pO1xyXG5cclxuICAvLyB9XHJcblxyXG4gIHN0dHMgPSB7fTtcclxuICBjbGlja2VkID0gZmFsc2U7XHJcbiAgdG90UHJvZ3Jlc3MgPSAwO1xyXG4gIHRvdFByb2dyZXNzRmlsZSA9IDA7XHJcbiAgZ2V0UHJvZ3Jlc3NQcmljZShoZHJJZG4pIHtcclxuICAgIC8vIHRoaXMuc3Bpbm5lclNlcnZpY2Uuc2hvdygpO1xyXG4gICAgbGV0IHJlcU9iaiA9IHt9O1xyXG4gICAgcmVxT2JqWydmb3JtTm1lJ10gPSAnZmlsZVVwbG9hZCc7XHJcbiAgICByZXFPYmpbJ3NlcU5vJ10gPSBoZHJJZG47Ly9cIjg0NlwiOy8vdGhpcy5maWxlTG9nSWRuO1xyXG4gICAgY29uc29sZS5sb2coSlNPTi5zdHJpbmdpZnkocmVxT2JqKSk7XHJcbiAgICB0aGlzLmhlYWRlcltcIm1ldGhvZFwiXSA9ICdnZXRQcmljZVN0YXR1cyc7XHJcbiAgICBsZXQgb3B0aW9ucyA9IHtcclxuICAgICAgbWV0aG9kOiB0aGlzLmhlYWRlcltcIm1ldGhvZFwiXSBcclxuICAgIH1cclxuICAgIHRoaXMuY3MubG9hZGlGaWxlKHJlcU9iaiwgb3B0aW9ucywgJ2ZpbGVVcGxvYWQvbG9hZCcpLnRoZW4oKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PSAnU1VDQ0VTUycpIHtcclxuICAgICAgICB0aGlzLmNsaWNrZWQgPSB0cnVlO1xyXG4gICAgICAgIGxldCByZXN1bHQgPSByZXNwb25zZS5yZXN1bHQgfHwge307XHJcbiAgICAgICAgY29uc29sZS5sb2cocmVzdWx0KTtcclxuICAgICAgICB0aGlzLnN0dHNbJ0MnXSA9IHJlc3VsdFsnQyddO1xyXG4gICAgICAgIHRoaXMuc3R0c1snUCddID0gcmVzdWx0WydQJ107XHJcbiAgICAgICAgdGhpcy5zdHRzWydFJ10gPSByZXN1bHRbJ0UnXTtcclxuICAgICAgICB0aGlzLnN0dHNbJ1QnXSA9IHJlc3VsdFsnVCddO1xyXG4gICAgICAgIHRoaXMuc3RlcCA9IDQ7XHJcbiAgICAgICAgdGhpcy50b3RQcm9ncmVzcyA9IE1hdGguY2VpbChwYXJzZUZsb2F0KHJlc3VsdFsnQyddKSAqIDEwMCAvIHBhcnNlRmxvYXQocmVzdWx0WydUJ10pKTtcclxuICAgICAgICB0aGlzLnJlY2FsbCh0aGlzLmhkcklkbik7XHJcbiAgICAgICAgY29uc29sZS5sb2codGhpcy50b3RQcm9ncmVzcyk7XHJcbiAgICAgICAgdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICAgICAgLy8gdGhpcy5mbGFzaE1lc3NhZ2VzU2VydmljZS5zaG93KHJlc3BvbnNlLm1lc3NhZ2UsIHsgY3NzQ2xhc3M6ICdhbGVydC1zdWNjZXNzJywgdGltZW91dDogMzAwMCB9KTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgIH0sIGVycm9yID0+IHtcclxuICAgICAgdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICAgIHRoaXMudG9hc3RyLmVycm9yKGVycm9yKTtcclxuICAgIH0pO1xyXG5cclxuICB9XHJcbiAgbGFzdFJlZnJlc2hUaW1lRmlsZSA9IG51bGw7XHJcbiAgcmVjYWxsRmlsZShmaWxlTG9nSWRuKSB7XHJcblxyXG4gICAgaWYgKHRoaXMudG90UHJvZ3Jlc3NGaWxlIDwgMTAwKSB7XHJcbiAgICAgIHRoaXMubGFzdFJlZnJlc2hUaW1lRmlsZSA9IG5ldyBEYXRlKCk7XHJcbiAgICAgIHRoaXMudGltZXJmaWxlID1cclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgIHRoaXMuZ2V0UHJvZ3Jlc3NGaWxlKGZpbGVMb2dJZG4pO1xyXG4gICAgICAgIH0sIDUwMDApO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLnRpbWVyZmlsZSk7XHJcbiAgICAgIC8vIHRoaXMuUGxhbm5pbmdDb21wb25lbnQuZ2V0UGFja2V0c0J5SGVhZGVySWQoaGRySWRuKTtcclxuICAgICAgLy8gdGhpcy5jbG9zZWJ0bi5uYXRpdmVFbGVtZW50LmNsaWNrKCk7XHJcbiAgICAgIGlmICh0aGlzLnRvdFByb2dyZXNzRmlsZSA9PSAxMDAgJiYgdGhpcy50b3RQcm9ncmVzcyA9PSAxMDApIHtcclxuICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYnRuZmlsZVVwbG9hZE1vZGFsJykuY2xpY2soKTtcclxuXHJcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvcHJpY2luZy9yb3VnaC9wbGFuaW5nc2NyZWVuL3JvdWdoUGxhbmluZ1NjcmVlbiddLCB7IHF1ZXJ5UGFyYW1zOiB7IGhkcklkOiB0aGlzLmhkcklkbiB9IH0pO1xyXG4gICAgICB9XHJcblxyXG4gICAgfVxyXG4gIH1cclxuICBsYXN0UmVmcmVzaFRpbWUgPSBudWxsO1xyXG4gIHJlY2FsbChoZHJJZG4pIHtcclxuICAgIGlmICh0aGlzLnRvdFByb2dyZXNzIDwgMTAwKSB7XHJcbiAgICAgIHRoaXMubGFzdFJlZnJlc2hUaW1lID0gbmV3IERhdGUoKTtcclxuICAgICAgdGhpcy50aW1lclByaWNlID1cclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgIHRoaXMuZ2V0UHJvZ3Jlc3NQcmljZShoZHJJZG4pO1xyXG4gICAgICAgIH0sIDUwMDApO1xyXG4gICAgfVxyXG5cclxuICAgIGVsc2Uge1xyXG4gICAgICBjbGVhclRpbWVvdXQodGhpcy50aW1lclByaWNlKTtcclxuICAgICAgaWYgKHRoaXMudG90UHJvZ3Jlc3NGaWxlID09IDEwMCAmJiB0aGlzLnRvdFByb2dyZXNzID09IDEwMCkge1xyXG4gICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdidG5maWxlVXBsb2FkTW9kYWwnKS5jbGljaygpO1xyXG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL3ByaWNpbmcvcm91Z2gvcGxhbmluZ3NjcmVlbi9yb3VnaFBsYW5pbmdTY3JlZW4nXSwgeyBxdWVyeVBhcmFtczogeyBoZHJJZDogdGhpcy5oZHJJZG4gfSB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICBTa2lwVmVyaWZpY2F0aW9uKCkge1xyXG4gICAgZGVidWdnZXJcclxuICAgIHRoaXMubWFwcGluZ3NraXAgPSB0cnVlO1xyXG4gICAgdGhpcy5hZGRGaWxlTG9nKHRoaXMuZmlsZVR5cGUpO1xyXG5cclxuICB9XHJcbiAgU2tpcFZlcmlmaWNhdGlvbkR0bCgpIHtcclxuICAgIHRoaXMubWFwcGluZ3NraXAgPSB0cnVlO1xyXG4gICAgdGhpcy5zdGVwID0gNDtcclxuICAgIHRoaXMudXBsb2FkRmlsZSgpO1xyXG4gIH1cclxuXHJcbiAgbG9hZEZpbGVUeXBlRGF0YShmaWxlVXBsb2FkLCBtZGwpIHtcclxuICAgIHRoaXMuc2hlZXREYXRhID0gW107XHJcbiAgICB0aGlzLmhlYWRlckF0dHJpYnV0ZUR0bCA9IHt9O1xyXG4gICAgdGhpcy5kZWZ1bHREaXNwbGF5TGVuID0gNTtcclxuICAgIHRoaXMuZGVmdWx0RGlzcGxheU9iaiA9IFtdO1xyXG4gICAgdGhpcy5hdHRyU3RydWN0dXJlRHRsID0gW107XHJcbiAgICB0aGlzLmhlYWRlckxpc3QgPSBbXTtcclxuICAgIHRoaXMuaGVhZGVycHJwO1xyXG4gICAgdGhpcy5hdHRycHJwO1xyXG4gICAgdGhpcy50b3RhbG1hdGNoID0gMDtcclxuICAgIHRoaXMudG90YWxpZ25vcmUgPSAwO1xyXG4gICAgdGhpcy5wYWdlRGVmaW5hdGlvbiA9IHt9O1xyXG4gICAgdGhpcy5yb3dkYXRhbWFwRGV0YWlscyA9IHt9O1xyXG4gICAgdGhpcy5yb3dkaXN0aW5jdERhdGFNYXAgPSB7fTtcclxuICAgIHRoaXMuY2hhckhlYWRlckxpc3QgPSBbXTtcclxuICAgIHRoaXMuYXR0cmlidXRlRHRsTWFwID0ge307XHJcbiAgICB0aGlzLm1hcHBTaGVldERhdGEgPSBbXTtcclxuICAgIHRoaXMuc3RhdHVzTGlzdCA9IFtdO1xyXG4gICAgdGhpcy5maWxlRGV0YWlscyA9IFtdO1xyXG4gICAgdGhpcy5maWxlVHlwZUxpc3QgPSBbXTtcclxuICAgIHRoaXMuZmlsZU9wdGlvbnNMaXN0ID0gW107XHJcbiAgICB0aGlzLmZpbGVUeXBlO1xyXG4gICAgdGhpcy5ubWU7XHJcbiAgICB0aGlzLnR5cDtcclxuICAgIHRoaXMuZGVzY3JpcHRpb247XHJcbiAgICB0aGlzLmNoZWNrX3N0YXR1cyA9IFtdO1xyXG4gICAgdGhpcy5wa3Rfc3RhdHVzID0gW107XHJcbiAgICB0aGlzLmNvbEZvcm1hdGUgPSBbXTtcclxuICAgIHRoaXMuYWxsY29scyA9IFtdO1xyXG4gICAgdGhpcy5maWxlTG9nSWRuID0gMDtcclxuICAgIHRoaXMuc2hvdyA9IGZhbHNlO1xyXG4gICAgdGhpcy5zdGVwTXNnID0gJyc7XHJcbiAgICB0aGlzLnN0dHMgPSB7fTtcclxuICAgIHRoaXMuY2xpY2tlZCA9IGZhbHNlO1xyXG4gICAgdGhpcy50b3RQcm9ncmVzcyA9IDA7XHJcbiAgICB0aGlzLnRvdFByb2dyZXNzRmlsZSA9IDA7XHJcbiAgICB0aGlzLnN0ZXAgPSAxO1xyXG4gICAgdGhpcy5sYWJsZSA9IFwiXCI7XHJcbiAgICB0aGlzLmZpbGVubWUgPSBcIlwiO1xyXG4gICAgbGV0IHJlcU9iaiA9IHt9O1xyXG4gICAgdGhpcy5kYXRlRm9ybWF0TWFwID0ge307XHJcbiAgICBsZXQgZmlsZXR5cGUgPSB0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtc1snZmlsZXR5cGUnXSB8fCAnJztcclxuICAgIHRoaXMubWRsID0gbWRsO1xyXG4gICAgdGhpcy5maWxlbm1lID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJhbXNbJ2ZpbGV0eXBlJ10gfHwgJyc7XHJcbiAgICB0aGlzLm1hcHBpbmdza2lwID0gZmFsc2U7XHJcbiAgICByZXFPYmpbJ2Zvcm1ObWUnXSA9IGZpbGVVcGxvYWQ7XHJcbiAgICBpZiAobWRsICE9ICcnKVxyXG4gICAgICByZXFPYmpbJ21kbCddID0gbWRsO1xyXG4gICAgaWYgKGZpbGV0eXBlICE9ICcnKVxyXG4gICAgICByZXFPYmpbJ2ZpbGVubWUnXSA9IGZpbGV0eXBlO1xyXG4gICAgY29uc29sZS5sb2coSlNPTi5zdHJpbmdpZnkodGhpcy5oZWFkZXIpKTtcclxuICAgIGNvbnNvbGUubG9nKEpTT04uc3RyaW5naWZ5KHJlcU9iaikpO1xyXG4gICAgdGhpcy5oZWFkZXJbXCJtZXRob2RcIl0gPSAnbG9hZEZpbGVVcGxvYWQnO1xyXG4gICAgbGV0IG9wdGlvbnMgPSB7XHJcbiAgICAgIG1ldGhvZDogdGhpcy5oZWFkZXJbXCJtZXRob2RcIl0gXHJcbiAgICB9XHJcbiAgICB0aGlzLmNzLmxvYWRpRmlsZShyZXFPYmosIG9wdGlvbnMsICdmaWxlVXBsb2FkL2xvYWQnKS50aGVuKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT0gJ1NVQ0NFU1MnKSB7XHJcbiAgICAgICAgY29uc29sZS5sb2cocmVzcG9uc2UpO1xyXG4gICAgICAgIGRlYnVnZ2VyO1xyXG4gICAgICAgIGxldCByZXN1bHQgPSByZXNwb25zZS5yZXN1bHQgfHwge307XHJcbiAgICAgICAgdGhpcy5wYWdlRGVmaW5hdGlvbiA9IHJlc3VsdC5wYWdlRGVmaW5hdGlvblxyXG4gICAgICAgIHRoaXMuc3RhdHVzTGlzdCA9IHJlc3VsdC5zdGF0dXNMaXN0O1xyXG4gICAgICAgIHRoaXMuZmlsZURldGFpbHMgPSByZXN1bHQuZmlsZURldGFpbHM7XHJcbiAgICAgICAgdGhpcy5maWxlVHlwZUxpc3QgPSByZXN1bHQuZmlsZVR5cGVMaXN0O1xyXG4gICAgICAgIHRoaXMuZmlsZU9wdGlvbnNMaXN0ID0gcmVzdWx0LmZpbGVPcHRpb25zTGlzdCB8fCBbXTtcclxuICAgICAgICBpZiAodGhpcy5maWxlT3B0aW9uc0xpc3QubGVuZ3RoID4gMClcclxuICAgICAgICAgIHRoaXMuZmlsZVR5cGUgPSB0aGlzLmZpbGVPcHRpb25zTGlzdFswXS5rO1xyXG4gICAgICAgIGxldCBhZGRsQXR0ciA9IHRoaXMuZmlsZU9wdGlvbnNMaXN0WzBdLmFkZGxfYXR0ciB8fCB7fTtcclxuICAgICAgICB0aGlzLmRhdGVGb3JtYXQgPSBhZGRsQXR0ci5kYXRlZm9ybWF0IHx8ICdkZC9tbS95eSc7XHJcbiAgICAgICAgdGhpcy5kZWxpbSA9IGFkZGxBdHRyLmRlbGltIHx8ICcvJztcclxuICAgICAgICB0aGlzLnN0YXR1c0xpc3QgPSByZXN1bHQuc3RhdHVzTGlzdC5tYXAob3B0aW9uID0+ICh7XHJcbiAgICAgICAgICB2YWx1ZTogb3B0aW9uLmssXHJcbiAgICAgICAgICBsYWJlbDogb3B0aW9uLnZcclxuICAgICAgICB9KSk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICB9LCBlcnJvciA9PiB7XHJcblxyXG4gICAgICB0aGlzLnRvYXN0ci5lcnJvcihlcnJvcik7XHJcbiAgICB9KTtcclxuXHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuXHJcblxyXG4gICAgbGV0IG1kbGsgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdtZGxLZXknKSk7XHJcbiAgICBsZXQgY1VybCA9IHRoaXMucm91dGVyLnVybDtcclxuICAgIHRoaXMuY0R0ID0gbmV3IERhdGUoKTtcclxuICAgIHRoaXMuaGVhZGVyID0ge1xyXG4gICAgICAnY2xpZW50a2V5JzogQ29va2llLmdldCgnX2NrJyksXHJcbiAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXHJcbiAgICAgICdsb2dpbmlkJzogQ29va2llLmdldCgnX2xvZ2lkJyksXHJcbiAgICAgICdtb2R1bGVrZXknOiBtZGxrW2NVcmwuc3BsaXQoJy8nKVsxXV0sXHJcbiAgICAgICdzb3VyY2UnOiAncXMnXHJcbiAgICB9O1xyXG5cclxuXHJcbiAgICB0aGlzLnJvdXRlLnBhcmFtcy5zdWJzY3JpYmUoKHBhcmFtczogUGFyYW1zKSA9PiB7XHJcbiAgICAgIGxldCBtZGwgPSB0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtc1snZ3JwJ10gfHwgJyc7XHJcblxyXG4gICAgICB0aGlzLmxvYWRGaWxlVHlwZURhdGEoJ2ZpbGVVcGxvYWQnLCBtZGwpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG4gIGlud2FyZF9pZG47XHJcbiAgaW53YXJkU3RvY2tUeXBlO1xyXG4gIHN0b2NrSW53YXJkVXBsb2FkKGlud2FyZER0bCwgbWRsKSB7XHJcbiAgICB0aGlzLmlud2FyZF9pZG4gPSBpbndhcmREdGwuaW53YXJkX2lkbjtcclxuICAgIHRoaXMuaW53YXJkU3RvY2tUeXBlID0gaW53YXJkRHRsLnN0b2NrX3R5cGU7XHJcbiAgICB0aGlzLm1kbCA9IG1kbDtcclxuICAgIHRoaXMubG9hZEZpbGVUeXBlRGF0YSgnZmlsZVVwbG9hZCcsIG1kbCk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIGlmICh0aGlzLnRpbWVyZmlsZSAhPSB1bmRlZmluZWQpXHJcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLnRpbWVyZmlsZSk7XHJcblxyXG4gICAgaWYgKHRoaXMudGltZXJQcmljZSAhPSB1bmRlZmluZWQpXHJcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLnRpbWVyUHJpY2UpO1xyXG5cclxuICB9XHJcblxyXG4gIHNldE9wdGlvbnNGb3JNaXhUb1NpbmdsZSgpIHtcclxuICAgIHRoaXMuZmlsZU9wdGlvbnNMaXN0ID0gW1xyXG4gICAgICB7IFwia1wiOiBcIjY5NlwiLCBcInZcIjogXCJNYXJrZXRpbmcgU3RvY2tcIiB9XHJcbiAgICBdO1xyXG4gICAgdGhpcy5maWxlVHlwZSA9IFwiNjk2XCI7XHJcbiAgfVxyXG5cclxuXHJcbn0iLCI8ZGl2IGNsYXNzPVwibXRcIiBzdHlsZT1cImJhY2tncm91bmQ6ICNmZmY7XCI+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cImNvbnRlbnQtZnJhbWVcIj5cclxuICAgICAgICA8cCAqbmdJZj1cInNob3dcIiBjbGFzcz1cImxvYWRpbmctdGV4dFwiIHN0eWxlPVwiei1pbmRleDogOTk5OVwiPiB7e3N0ZXBNc2d9fSA8L3A+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbm5lckRcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LWVsZW1lbnQtc3RlcFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBzdGVwLXRoaW5cIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0yIGJnLWdyZXkgbXQtc3RlcC1jb2xcIiBbbmdDbGFzc109XCJ7J2RvbmUnOnN0ZXA9PTEgPyAnZG9uZSc6Jyd9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1zZXRTZXRwKDEpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtc3RlcC1udW1iZXIgYmctd2hpdGUgZm9udC1ncmV5XCI+MTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtc3RlcC10aXRsZSB1cHBlcmNhc2UgZm9udC1ncmV5LWNhc2NhZGVcIj5Ccm93c2U8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTQgYmctZ3JleSBtdC1zdGVwLWNvbFwiIFtuZ0NsYXNzXT1cInsnZG9uZSc6c3RlcD09MiA/ICdkb25lJzonJ31cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPXNldFNldHAoMik+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC1zdGVwLW51bWJlciBiZy13aGl0ZSBmb250LWdyZXlcIj4yPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC1zdGVwLXRpdGxlIHVwcGVyY2FzZSBmb250LWdyZXktY2FzY2FkZVwiPkhlYWRlciBWZXJpZmljYXRpb248L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTMgYmctZ3JleSBtdC1zdGVwLWNvbFwiIFtuZ0NsYXNzXT1cInsnZG9uZSc6c3RlcD09MyA/ICdkb25lJzonJ31cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPXNldFNldHAoMyk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC1zdGVwLW51bWJlciBiZy13aGl0ZSBmb250LWdyZXlcIj4zPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC1zdGVwLXRpdGxlIHVwcGVyY2FzZSBmb250LWdyZXktY2FzY2FkZVwiPkRhdGEgVmVyaWZpY2F0aW9uPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMyBiZy1ncmV5IG10LXN0ZXAtY29sXCIgW25nQ2xhc3NdPVwieydkb25lJzpzdGVwPT00ID8gJ2RvbmUnOicnfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9c2V0U2V0cCg0KT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LXN0ZXAtbnVtYmVyIGJnLXdoaXRlIGZvbnQtZ3JleVwiPjQ8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LXN0ZXAtdGl0bGUgdXBwZXJjYXNlIGZvbnQtZ3JleS1jYXNjYWRlXCI+VXBsb2FkaW5nLi48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyB1cGxvYWRcIiAqbmdJZj1cInN0ZXA9PTFcIj5cclxuXHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtb2Zmc2V0LTMgY29sLW1kLTNcIiBzdHlsZT1cIm1hcmdpbi10b3A6IDE1cHg7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIHctMTAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjb2wtbWQtNCBjb250cm9sLWxhYmVsXCIgc3R5bGU9XCJwYWRkaW5nOiA1cHg7XCI+RmlsZSBUeXBlIDo8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC04XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwIHctMTAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBuYW1lPVwiZmlsZVR5cGVcIiBbKG5nTW9kZWwpXT1cImZpbGVUeXBlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiXCI+LS1zZWxlY3QtLTwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgZmlsZSBvZiBmaWxlT3B0aW9uc0xpc3RcIiB2YWx1ZT1cInt7ZmlsZT8ua319XCI+e3tmaWxlPy52fX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz1cImZpbGVpbnB1dC13cmFwcGVyIGJ0biBidG4tZGVmYXVsdCAgZmlsZWlucHV0IGJ0bi1wcmltYXJ5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwiYmFja2dyb3VuZDogIzNhNTg5OFwiPjxzcGFuPkJyb3dzZSBmaWxlPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJmaWxlXCIgY2xhc3M9XCJmaWxlaW5wdXQgYnRuLXByaW1hcnlcIiBuYW1lPVwiZmlsZW5hbWVcIiBpZD1cImZpbGVuYW1lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT1cIkJyb3dzZSBmaWxlXCIgYWNjZXB0PVwiLnhsc3gsLmNzdlwiIChjaGFuZ2UpPVwiaW5jb21pbmdmaWxlKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwibGVmdDogLTE2My43NXB4OyB0b3A6IDlweDtcIj48L2E+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tIDxsYWJlbCBjbGFzcz1cImNvbnRyb2wtbGFiZWxcIj5VcGxvYWQgRmlsZSA6ICZuYnNwOyZuYnNwOyZuYnNwOzwvbGFiZWw+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiZmlsZVwiIGNsYXNzPVwiZmlsZWlucHV0IGJ0bi1wcmltYXJ5XCIgYWNjZXB0PVwiLnhsc3gsLmNzdlwiIG5hbWU9XCJmaWxlbmFtZVwiIGlkPVwiZmlsZW5hbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cImluY29taW5nZmlsZSgkZXZlbnQpXCIgdGl0bGU9XCJCcm93c2UgZmlsZVwiPiAtLT5cclxuXHJcblxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyB1cGxvYWRcIiAqbmdJZj1cInN0ZXA9PTJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVG90YWwgTWF0Y2ggOiB7e3RvdGFsbWF0Y2h9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUb3RhbCBJZ25vcmUgOiB7e3RvdGFsaWdub3JlfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgY29sLW1kLTEyXCIgc3R5bGU9XCJvdmVyZmxvdzogYXV0bzt3aWR0aDogMTAwJTtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPVwiZmlsZXVwbG9hZHZpZXdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBoZHIgb2YgaGVhZGVyTGlzdCA7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBbbmdDbGFzc109XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbWF0Y2gnOmhlYWRlckF0dHJpYnV0ZUR0bFtoZHJdLmF0dHIhPScnICYmIGhlYWRlckF0dHJpYnV0ZUR0bFtoZHJdLmlnbm9yZSE9J1knLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2lnbm9yZSc6aGVhZGVyQXR0cmlidXRlRHRsW2hkcl0uaWdub3JlPT0nWScsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGhiZyc6aGVhZGVyQXR0cmlidXRlRHRsW2hkcl0uYXR0cj09JycgJiYgaGVhZGVyQXR0cmlidXRlRHRsW2hkcl0uaWdub3JlIT0nWSdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XCIgKGNsaWNrKT1cInVwZGF0ZWNvbHVtbnN0YXR1ZShoZHIpXCI+e3toZHJ9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBoZHIgb2YgaGVhZGVyTGlzdCA7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJoZWFkZXJBdHRyaWJ1dGVEdGxbaGRyXS5hdHRyPT0nJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPHNlbGVjdCBjbGFzcz1cInNlbGVjdC1jb250cm9sXCIgbmFtZT1cInt7aGVhZGVyQXR0cmlidXRlRHRsW2hkcl0uYXR0cn19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJoZWFkZXJBdHRyaWJ1dGVEdGxbaGRyXS5hdHRyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJjb25maXJtc2V0SGVhZGVyTWFwcChoZHIsJGV2ZW50LnRhcmdldClcIj4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgY2xhc3M9XCJzZWxlY3QtY29udHJvbFwiIG5hbWU9XCJ7e2hlYWRlckF0dHJpYnV0ZUR0bFtoZHJdLmF0dHJ9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiaGVhZGVyQXR0cmlidXRlRHRsW2hkcl0uYXR0clwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwiY29uZmlybXNldEhlYWRlck1hcHAoaGRyKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiXCI+LS1zZWxlY3QtLTwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBhdHRyRHRsIG9mIGF0dHJTdHJ1Y3R1cmVEdGxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9XCJ7e2F0dHJEdGw/LmF0dHJ9fVwiPnt7YXR0ckR0bD8uYXR0cn19PC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJoZWFkZXJBdHRyaWJ1dGVEdGxbaGRyXS5hdHRyIT0nJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7aGVhZGVyQXR0cmlidXRlRHRsW2hkcl0uYXR0cn19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaGRyIG9mIGhlYWRlckxpc3QgO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaGVhZGVyQXR0cmlidXRlRHRsW2hkcl0uZHRhX3R5cD09J2QnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdCBjbGFzcz1cInNlbGVjdC1jb250cm9sXCIgbmFtZT1cInt7ZGF0ZUZvcm1hdE1hcFtoZHJdfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImRhdGVGb3JtYXRNYXBbaGRyXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBkdGVGbXQgb2YgZGF0ZUZvcm1hdExpc3RcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9XCJ7e2R0ZUZtdD8ua319XCI+e3tkdGVGbXQ/LnZ9fTwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHIgKm5nRm9yPVwibGV0IHJvd0RpcyBvZiBkZWZ1bHREaXNwbGF5T2JqIDtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgKm5nRm9yPVwibGV0IGhkciBvZiBoZWFkZXJMaXN0IDtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tyb3dEaXNbaGRyXX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtb2Zmc2V0LTExIGNvbC1tZC0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKm5nSWY9XCJmaWxlTG9nSWRuPT0wICYmIChmaWxlbm1lPT0nZ2VuZXJpYycgfHwgZmlsZW5tZT09J2dpYV9iaWxsJylcIiBjbGFzcz1cImJ0biBidG4tc3VjY2VzcyBwdWxsLXJpZ2h0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cIm1hcmdpbjogNXB4XCIgKGNsaWNrKT1cIlNraXBWZXJpZmljYXRpb24oKVwiPlNraXA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbmJzcDsgJm5ic3A7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAqbmdJZj1cImZpbGVMb2dJZG49PTBcIiBjbGFzcz1cImJ0biBidG4tc3VjY2VzcyBwdWxsLXJpZ2h0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cIm1hcmdpbjogNXB4XCIgKGNsaWNrKT1cIlZhbGlkYXRlRmlsZUhlYWRlck1hcHBpbmcoJ1knKVwiPlZlcmlmeTwvYnV0dG9uPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICBcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyB1cGxvYWQgXCIgKm5nSWY9XCJzdGVwPT0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyB0YWJsZS1yZXNwb25zaXZlIGNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2VsbHNwYWNpbmc9XCIxMFwiIGNsYXNzPVwiZGlzcGxheVRhYmxlIGZpbGV1cGxvYWR2aWV3XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBoZHIgb2YgY2hhckhlYWRlckxpc3QgO2xldCBqPWluZGV4O1wiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBzdHlsZT1cImNvbG9yOndoaXRlO2JvcmRlcjogMXB4IHNvbGlkIHdoaXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2hkcn19KHt7aGVhZGVyQXR0cmlidXRlRHRsW2hkcl0uYXR0cn19KTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBbbmdDbGFzc109XCJ7J2V2ZW4nOmolMj09MCwnb2RkJzpqJTI9PTF9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCIgc3R5bGU9XCJkaXNwbGF5OiBmbGV4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGF0dHJWYWwgb2Ygcm93ZGlzdGluY3REYXRhTWFwW2hlYWRlckF0dHJpYnV0ZUR0bFtoZHJdLmF0dHJdO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPVwid2lkdGg6MTYwcHg7bWFyZ2luLXJpZ2h0OiAxcHhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydtYXRjaGVkVWwnOnJvd2RhdGFtYXBEZXRhaWxzW2hlYWRlckF0dHJpYnV0ZUR0bFtoZHJdLmF0dHJdW2F0dHJWYWxdLnZhbCAhPScnfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIHN0eWxlPVwibGlzdC1zdHlsZTogbm9uZTt0ZXh0LWFsaWduOmxlZnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+IHt7YXR0clZhbH19IDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VsZWN0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInJvd2RhdGFtYXBEZXRhaWxzW2hlYWRlckF0dHJpYnV0ZUR0bFtoZHJdLmF0dHJdW2F0dHJWYWxdLnZhbD09JydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzZWxlY3QtY29udHJvbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwie3tyb3dkYXRhbWFwRGV0YWlsc1toZWFkZXJBdHRyaWJ1dGVEdGxbaGRyXS5hdHRyXVthdHRyVmFsXS52YWx9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInJvd2RhdGFtYXBEZXRhaWxzW2hlYWRlckF0dHJpYnV0ZUR0bFtoZHJdLmF0dHJdW2F0dHJWYWxdLnZhbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cImNvbmZpcm1IZWFkZXJEZXRhaWxzTWFwcChoZWFkZXJBdHRyaWJ1dGVEdGxbaGRyXS5hdHRyLGhlYWRlckF0dHJpYnV0ZUR0bFtoZHJdLmF0dHJfaWRuLGF0dHJWYWwpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiXCI+LS1zZWxlY3QtLTwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBhdHRyZHRsbWFwIG9mIGF0dHJpYnV0ZUR0bE1hcFtoZWFkZXJBdHRyaWJ1dGVEdGxbaGRyXS5hdHRyXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9XCJ7e2F0dHJkdGxtYXA/LnZhbH19XCI+e3thdHRyZHRsbWFwPy5kaXNwbGF5fX0oe3thdHRyZHRsbWFwPy52YWx9fSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwicm93ZGF0YW1hcERldGFpbHNbaGVhZGVyQXR0cmlidXRlRHRsW2hkcl0uYXR0cl1bYXR0clZhbF0udmFsIT0nJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tyb3dkYXRhbWFwRGV0YWlsc1toZWFkZXJBdHRyaWJ1dGVEdGxbaGRyXS5hdHRyXVthdHRyVmFsXS52YWx9fSBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbmJzcDsmbmJzcDsgPGkgKGNsaWNrKT1cInJlbW92ZURldGFpbEF0dHJPcHRWYWwoaGVhZGVyQXR0cmlidXRlRHRsW2hkcl0uYXR0cl9pZG4sYXR0clZhbCxyb3dkYXRhbWFwRGV0YWlsc1toZWFkZXJBdHRyaWJ1dGVEdGxbaGRyXS5hdHRyXVthdHRyVmFsXS52YWwsW2hlYWRlckF0dHJpYnV0ZUR0bFtoZHJdLmF0dHJdKVwiIGNsYXNzPVwiZmEgZmEtdGltZXNcIiBhcmlhLWhpZGRlbj1cInRydWVcIiBzdHlsZT1cImNvbG9yOiByZWQ7Y3Vyc29yOiBwb2ludGVyO1wiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLW9mZnNldC0xMSBjb2wtbWQtMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiICpuZ0lmPVwiZmlsZUxvZ0lkbj09MCAmJiAoZmlsZW5tZT09J2dlbmVyaWMnIHx8IGZpbGVubWU9PSdnaWFfYmlsbCcpXCIgY2xhc3M9XCJidG4gYnRuLXN1Y2Nlc3MgcHVsbC1yaWdodFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJtYXJnaW46IDVweFwiIChjbGljayk9XCJTa2lwVmVyaWZpY2F0aW9uRHRsKClcIj5Ta2lwPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm5ic3A7ICZuYnNwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXN1Y2Nlc3MgcHVsbC1yaWdodFwiIHN0eWxlPVwibWFyZ2luOiA1cHhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ1cGxvYWRGaWxlKClcIiBbZGlzYWJsZWRdPVwiZ21hdGNoZWRDb3VudCE9Z3Jlc3VsdENvdW50XCI+VXBsb2FkPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IHVwbG9hZFwiICpuZ0lmPVwic3RlcD09NFwiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cCAqbmdJZj1cInN0ZXA9PTRcIiBzdHlsZT1cIm1hcmdpbi1sZWZ0OiAxNXB4O2NvbG9yOmdyZWVuO2ZvbnQtc2l6ZTogMjBweDt0ZXh0LWFsaWduOiBsZWZ0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2xhYmxlRmlsZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBzdHlsZT1cImZvbnQtc2l6ZTogMTRweDtcIiAqbmdJZj1cImxhc3RSZWZyZXNoVGltZUZpbGUgIT0gbnVsbFwiPkxhc3RcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoIHRpbWUgOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh7e2xhc3RSZWZyZXNoVGltZUZpbGUgfCBkYXRlOidtZWRpdW0nfX0pPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJvZ3Jlc3NcIiBzdHlsZT1cIm1hcmdpbjogMTVweDtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9ncmVzcy1iYXIgcHJvZ3Jlc3MtYmFyLXdhcm5pbmdcIiByb2xlPVwicHJvZ3Jlc3NiYXJcIiBhcmlhLXZhbHVlbm93PVwiNjBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtdmFsdWVtaW49XCIwXCIgYXJpYS12YWx1ZW1heD1cIjEwMFwiIFtuZ1N0eWxlXT1cInsnd2lkdGgnOnRvdFByb2dyZXNzRmlsZSsnJSd9ICBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e3RvdFByb2dyZXNzRmlsZX19ICVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwICpuZ0lmPVwic3RlcD09NCAmJiBjbGlja2VkXCIgc3R5bGU9XCJtYXJnaW4tdG9wOiAzNXB4O1wiPjxzdHJvbmc+IENvbXBsZXRlIDp7e3N0dHNGaWxlWydDJ119fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZuYnNwOyZuYnNwOyZuYnNwOyBQZW5kaW5nIDoge3tzdHRzRmlsZVsnUCddfX0gJm5ic3A7Jm5ic3A7Jm5ic3A7IEVycm9yIDpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e3N0dHNGaWxlWydFJ119fSZuYnNwOyZuYnNwOyZuYnNwOyBJbnZhaWxkIFN0YXR1cyA6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tzdHRzRmlsZVsnSSddfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbmJzcDsmbmJzcDsmbmJzcDsgVG90YWwgOiB7e3N0dHNGaWxlWydUJ119fTwvc3Ryb25nPjwvcD5cclxuXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cCAqbmdJZj1cInN0ZXA9PTRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJtYXJnaW4tbGVmdDogMTVweDtjb2xvcjpncmVlbjtmb250LXNpemU6IDIwcHg7bWFyZ2luLXRvcDogMTVweDt0ZXh0LWFsaWduOiBsZWZ0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2xhYmxlfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIHN0eWxlPVwiZm9udC1zaXplOiAxMnB4O21hcmdpbi1sZWZ0OiAyMHB4O2NvbG9yOiBibGFjaztcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwibGFzdFJlZnJlc2hUaW1lICE9IG51bGxcIj5MYXN0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaCB0aW1lIDpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoe3tsYXN0UmVmcmVzaFRpbWUgfCBkYXRlOidtZWRpdW0nfX0pPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJvZ3Jlc3NcIiBzdHlsZT1cIm1hcmdpbjogMTVweDtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9ncmVzcy1iYXIgcHJvZ3Jlc3MtYmFyLXdhcm5pbmdcIiByb2xlPVwicHJvZ3Jlc3NiYXJcIiBhcmlhLXZhbHVlbm93PVwiNjBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtdmFsdWVtaW49XCIwXCIgYXJpYS12YWx1ZW1heD1cIjEwMFwiIFtuZ1N0eWxlXT1cInsnd2lkdGgnOnRvdFByb2dyZXNzKyclJ30gIFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7dG90UHJvZ3Jlc3N9fSAlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1zdWNjZXNzIHRleHQtY2VudGVyXCIgc3R5bGU9XCJtYXJnaW46IDVweFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2hlY2tVcGxvYWRTdHQoKVwiPkNoZWNrXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0dXM8L2J1dHRvbj4gLS0+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cCAqbmdJZj1cInN0ZXA9PTQgJiYgY2xpY2tlZFwiIHN0eWxlPVwibWFyZ2luLXRvcDogMzVweDtcIj48c3Ryb25nPiBDb21wbGV0ZSA6e3tzdHRzWydDJ119fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZuYnNwOyZuYnNwOyZuYnNwOyBQZW5kaW5nIDoge3tzdHRzWydQJ119fSAmbmJzcDsmbmJzcDsmbmJzcDsgRXJyb3IgOiB7e3N0dHNbJ0UnXX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm5ic3A7Jm5ic3A7Jm5ic3A7IFRvdGFsIDoge3tzdHRzWydUJ119fTwvc3Ryb25nPjwvcD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj5cclxuXHJcblxyXG5cclxuXHJcbjxkaXYgY2xhc3M9XCJtb2RhbFwiIGlkPVwiZmlsZVVwbG9hZE1vZGFsXCIgdGFiaW5kZXg9XCItMVwiIHN0eWxlPVwiei1pbmRleDogOTk5OTk5XCIgcm9sZT1cImRpYWxvZ1wiXHJcbiAgICBhcmlhLWxhYmVsbGVkYnk9XCJzbWFsbE1vZGFsSGVhZFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIGRhdGEtYmFja2Ryb3A9XCJzdGF0aWNcIiBkYXRhLWtleWJvYXJkPVwidHJ1ZVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1vZGFsLWRpYWxvZyBcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtY29udGVudFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImNsb3NlXCIgZGF0YS1kaXNtaXNzPVwibW9kYWxcIiAjZmlsZVVwbG9hZGNsc2J0bj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBhcmlhLWhpZGRlbj1cInRydWVcIj4mdGltZXM7PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3Itb25seVwiPkNsb3NlPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8aDQgY2xhc3M9XCJtb2RhbC10aXRsZVwiIGlkPVwic21hbGxNb2RhbEhlYWRcIj5BZGQgZmlsZSB1cGxvYWQgb3B0aW9uPC9oND5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGZvcm0gY2xhc3M9XCJmb3JtLWhvcml6b250YWxcIiByb2xlPVwiZm9ybVwiICNmPVwibmdGb3JtXCIgKG5nU3VibWl0KT1cIm9uU3VibWl0KGYpXCIgbmFtZT1cImFwcEZvcm1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjb2wtbWQtMyBjb250cm9sLWxhYmVsXCI+TmFtZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cCB3LTEwMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgWyhuZ01vZGVsKV09XCJubWVcIiBuYW1lPVwibm1lXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjb2wtbWQtMyBjb250cm9sLWxhYmVsXCI+RGVzY3JpcHRpb25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXAgdy0xMDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIFsobmdNb2RlbCldPVwiZGVzY3JpcHRpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwiZGVzY3JpcHRpb25cIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImNvbC1tZC0zIGNvbnRyb2wtbGFiZWxcIj5UeXBlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwIHctMTAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdCBjbGFzcz1cImZvcm0tY29udHJvbFwiIG5hbWU9XCJ0eXBcIiBbKG5nTW9kZWwpXT1cInR5cFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiXCI+LS1zZWxlY3QtLTwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBmaWxlIG9mIGZpbGVUeXBlTGlzdFwiIHZhbHVlPVwie3tmaWxlPy5rfX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ZmlsZT8udn19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjb2wtbWQtMyBjb250cm9sLWxhYmVsXCI+Q2hlY2sgc3RhdHVzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwIHctMTAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXNlbGVjdCBwbGFjZWhvbGRlcj1cIlNlbGVjdCBTdGF0dXNcIiBbb3B0aW9uc109XCJzdGF0dXNMaXN0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjaGVja19zdGF0dXNcIiBuYW1lPVwiY2hlY2tfc3RhdHVzXCIgW211bHRpcGxlXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYWxsb3dDbGVhcl09XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjb3B0aW9uVGVtcGxhdGUgbGV0LW9wdGlvbj1cIm9wdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZhbWZhbWZhbS1mbGFncyB7e29wdGlvbj8udmFsdWV9fVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tvcHRpb24/LmxhYmVsfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLXNlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjb2wtbWQtMyBjb250cm9sLWxhYmVsXCI+UGFja2V0IHN0YXR1c1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cCB3LTEwMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1zZWxlY3QgcGxhY2Vob2xkZXI9XCJTZWxlY3QgU3RhdHVzXCIgW29wdGlvbnNdPVwic3RhdHVzTGlzdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwicGt0X3N0YXR1c1wiIG5hbWU9XCJwa3Rfc3RhdHVzXCIgW2FsbG93Q2xlYXJdPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI29wdGlvblRlbXBsYXRlIGxldC1vcHRpb249XCJvcHRpb25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmYW1mYW1mYW0tZmxhZ3Mge3tvcHRpb24/LnZhbHVlfX1cIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7b3B0aW9uPy5sYWJlbH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZm9ybT5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWZvb3RlclwiPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHRcIiBkYXRhLWRpc21pc3M9XCJtb2RhbFwiICNmaWxlVXBsb2FkY2xzYnRuPkNsb3NlPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tc3VjY2Vzc1wiIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCIgYXBwQXBwTm9EYmxDbGlja1xyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvblN1Ym1pdChmKVwiPlNhdmU8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG48ZGl2IGNsYXNzPVwibW9kYWxcIiBpZD1cIkNvZmlybW1hcGhkclwiICByb2xlPVwiZGlhbG9nXCIgYXJpYS1sYWJlbGxlZGJ5PVwic21hbGxNb2RhbEhlYWRcIiBhcmlhLWhpZGRlbj1cInRydWVcIiBkYXRhLWJhY2tkcm9wPVwic3RhdGljXCJcclxuICBkYXRhLWtleWJvYXJkPVwiZmFsc2VcIj5cclxuICA8ZGl2IGNsYXNzPVwibW9kYWwtZGlhbG9nXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwibW9kYWwtY29udGVudFwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGVyXCI+XHJcbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cIkNhbmNlbEhlYWRlck1hcHAoKVwiIGNsYXNzPVwiY2xvc2VcIiAgZGF0YS1kaXNtaXNzPVwibW9kYWxcIj5cclxuICAgICAgICAgIDxzcGFuIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPiZ0aW1lczs8L3NwYW4+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInNyLW9ubHlcIiA+Q2xvc2U8L3NwYW4+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPGg0IGNsYXNzPVwibW9kYWwtdGl0bGVcIiBpZD1cInNtYWxsTW9kYWxIZWFkXCI+QWxlcnQ8L2g0PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHlcIj5cclxuICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICBBcmUgeW91IHN1cmUgRm9yIE1hcHBpbmcgPGI+e3ttYXBoZHJ9fTwvYj4gVG8gQXR0cmlidXRlIDxiPnt7aGRybWFzc2FnZX19PC9iPiBcclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1mb290ZXJcIj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0XCIgKGNsaWNrKT1cIkNhbmNlbEhlYWRlck1hcHAoKVwiICAgZGF0YS1kaXNtaXNzPVwibW9kYWxcIiA+Q2xvc2U8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1zdWNjZXNzXCIgZGF0YS1kaXNtaXNzPVwibW9kYWxcIiAoY2xpY2spPVwic2V0SGVhZGVyTWFwcCgpO1wiPkNvbmZpcm08L2J1dHRvbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsXCIgaWQ9XCJDb2Zpcm1tYXBkdGxcIiAgcm9sZT1cImRpYWxvZ1wiIGFyaWEtbGFiZWxsZWRieT1cInNtYWxsTW9kYWxIZWFkXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgZGF0YS1iYWNrZHJvcD1cInN0YXRpY1wiXHJcbiAgZGF0YS1rZXlib2FyZD1cImZhbHNlXCI+XHJcbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWRpYWxvZ1wiPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1vZGFsLWNvbnRlbnRcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlclwiPlxyXG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJDYW5jZWxIZWFkZXJNYXBwKClcIiBjbGFzcz1cImNsb3NlXCIgZGF0YS1kaXNtaXNzPVwibW9kYWxcIiA+XHJcbiAgICAgICAgICA8c3BhbiBhcmlhLWhpZGRlbj1cInRydWVcIj4mdGltZXM7PC9zcGFuPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJzci1vbmx5XCIgPkNsb3NlPC9zcGFuPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxoNCBjbGFzcz1cIm1vZGFsLXRpdGxlXCIgaWQ9XCJzbWFsbE1vZGFsSGVhZFwiPkFsZXJ0PC9oND5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5XCI+XHJcbiAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgQXJlIHlvdSBzdXJlIEZvciBNYXBwaW5nIDxiPnt7ZHRsb3B0aW9udmFsfX08L2I+IFRvIEF0dHJpYnV0ZSAgPGI+IHt7ZHRsQXR0cn19IDwvYj4gd2l0aCBBdHRyaWJ1dGVEZXRhaWwgPGI+e3tkdGxtYXNzYWdlfX08L2I+IFxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWZvb3RlclwiPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHRcIiBkYXRhLWRpc21pc3M9XCJtb2RhbFwiIChjbGljayk9XCJDYW5jZWxIZWFkZXJEZXRhaWxzTWFwcCgpXCI+Q2xvc2U8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1zdWNjZXNzXCIgZGF0YS1kaXNtaXNzPVwibW9kYWxcIiAoY2xpY2spPVwic2V0SGVhZGVyRGV0YWlsc01hcHAoKVwiPkNvbmZpcm08L2J1dHRvbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcblxyXG48YnV0dG9uIGlkPVwiYnRuZmlsZVVwbG9hZE1vZGFsXCIgW2hpZGRlbl09XCJ0cnVlXCIgZGF0YS10b2dnbGU9XCJtb2RhbFwiIGRhdGEtdGFyZ2V0PVwiI2ZpbGVVcGxvYWRNb2RhbFwiPjwvYnV0dG9uPlxyXG5cclxuPGJ1dHRvbiBpZD1cImJ0bkNvZmlybW1hcGhkclwiIFtoaWRkZW5dPVwidHJ1ZVwiIGRhdGEtdG9nZ2xlPVwibW9kYWxcIiBkYXRhLXRhcmdldD1cIiNDb2Zpcm1tYXBoZHJcIj48L2J1dHRvbj5cclxuPGJ1dHRvbiBpZD1cImJ0bkNvZmlybW1hcGR0bFwiIFtoaWRkZW5dPVwidHJ1ZVwiIGRhdGEtdG9nZ2xlPVwibW9kYWxcIiBkYXRhLXRhcmdldD1cIiNDb2Zpcm1tYXBkdGxcIj48L2J1dHRvbj5cclxuXHJcblxyXG5cclxuPCEtLSA8ZGl2IGNsYXNzPVwiY2VudGVyZWRcIj5cclxuICAgIDxkaXYgaWQ9XCJkaXZTcGlubmVyXCIgY2xhc3M9XCJzcGlubmVyIGxvYWRpbmdcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImxvYWRpbmctdGV4dFwiPkxvYWRpbmcgLi4uPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8YnV0dG9uIChjbGljayk9XCJ0ZXN0KClcIiBpZD1cImJ0bkxvYWRSZWNvcmRzXCIgc3R5bGU9XCJjdXJzb3I6cG9pbnRlcjtwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogNTIlOyBsZWZ0OiA0NSU7XCI+TG9hZCBSZWNvcmRzPC9idXR0b24+XHJcbiAgPC9kaXY+IC0tPiJdfQ==